From f137ba213a3862e2792b8ee92e579c54fa00c477 Mon Sep 17 00:00:00 2001
From: Kenneth Reitz <me@kennethreitz.com>
Date: Thu, 7 Mar 2013 20:38:06 -0500
Subject: [PATCH] sanity check

---
 vendor/distribute-0.6.34/CHANGES.txt          |  487 ---
 vendor/distribute-0.6.34/CONTRIBUTORS.txt     |   30 -
 vendor/distribute-0.6.34/DEVGUIDE.txt         |   22 -
 vendor/distribute-0.6.34/MANIFEST.in          |    9 -
 vendor/distribute-0.6.34/PKG-INFO             |  868 -----
 vendor/distribute-0.6.34/README.txt           |  228 --
 .../distribute-0.6.34/_markerlib/__init__.py  |   16 -
 .../distribute-0.6.34/_markerlib/markers.py   |  115 -
 .../distribute.egg-info/PKG-INFO              |  868 -----
 .../distribute.egg-info/SOURCES.txt           |  109 -
 .../distribute.egg-info/dependency_links.txt  |    1 -
 .../distribute.egg-info/entry_points.txt      |   62 -
 .../distribute.egg-info/top_level.txt         |    5 -
 .../distribute.egg-info/zip-safe              |    1 -
 vendor/distribute-0.6.34/distribute_setup.py  |  546 ---
 vendor/distribute-0.6.34/docs/Makefile        |   75 -
 .../docs/_templates/indexsidebar.html         |    8 -
 .../docs/_theme/nature/static/nature.css_t    |  237 --
 .../docs/_theme/nature/static/pygments.css    |   54 -
 .../docs/_theme/nature/theme.conf             |    4 -
 .../docs/build/html/_sources/easy_install.txt | 1597 --------
 .../docs/build/html/_sources/index.txt        |   36 -
 .../build/html/_sources/pkg_resources.txt     | 1955 ----------
 .../docs/build/html/_sources/python3.txt      |  121 -
 .../docs/build/html/_sources/roadmap.txt      |   86 -
 .../docs/build/html/_sources/setuptools.txt   | 3236 -----------------
 .../docs/build/html/_sources/using.txt        |   21 -
 .../docs/build/html/_static/basic.css         |  540 ---
 .../docs/build/html/_static/nature.css        |  236 --
 .../docs/build/html/_static/pygments.css      |   54 -
 vendor/distribute-0.6.34/docs/conf.py         |  197 -
 .../distribute-0.6.34/docs/easy_install.txt   | 1597 --------
 vendor/distribute-0.6.34/docs/index.txt       |   36 -
 .../distribute-0.6.34/docs/pkg_resources.txt  | 1955 ----------
 vendor/distribute-0.6.34/docs/python3.txt     |  121 -
 vendor/distribute-0.6.34/docs/roadmap.txt     |   86 -
 vendor/distribute-0.6.34/docs/setuptools.txt  | 3236 -----------------
 vendor/distribute-0.6.34/docs/using.txt       |   21 -
 vendor/distribute-0.6.34/easy_install.py      |    5 -
 vendor/distribute-0.6.34/launcher.c           |  327 --
 vendor/distribute-0.6.34/pkg_resources.py     | 2825 --------------
 vendor/distribute-0.6.34/release.py           |  170 -
 vendor/distribute-0.6.34/setup.cfg            |   21 -
 vendor/distribute-0.6.34/setup.py             |  253 --
 .../distribute-0.6.34/setuptools/__init__.py  |  104 -
 .../setuptools/archive_util.py                |  214 --
 .../distribute-0.6.34/setuptools/cli-32.exe   |  Bin 69632 -> 0 bytes
 .../distribute-0.6.34/setuptools/cli-64.exe   |  Bin 75264 -> 0 bytes
 vendor/distribute-0.6.34/setuptools/cli.exe   |  Bin 69632 -> 0 bytes
 .../setuptools/command/__init__.py            |   21 -
 .../setuptools/command/alias.py               |   82 -
 .../setuptools/command/bdist_egg.py           |  548 ---
 .../setuptools/command/bdist_rpm.py           |   82 -
 .../setuptools/command/bdist_wininst.py       |   41 -
 .../setuptools/command/build_ext.py           |  294 --
 .../setuptools/command/build_py.py            |  280 --
 .../setuptools/command/develop.py             |  167 -
 .../setuptools/command/easy_install.py        | 1947 ----------
 .../setuptools/command/egg_info.py            |  486 ---
 .../setuptools/command/install.py             |  124 -
 .../setuptools/command/install_egg_info.py    |  125 -
 .../setuptools/command/install_lib.py         |   82 -
 .../setuptools/command/install_scripts.py     |   54 -
 .../setuptools/command/register.py            |   10 -
 .../setuptools/command/rotate.py              |   82 -
 .../setuptools/command/saveopts.py            |   25 -
 .../setuptools/command/sdist.py               |  313 --
 .../setuptools/command/setopt.py              |  164 -
 .../setuptools/command/test.py                |  198 -
 .../setuptools/command/upload.py              |  185 -
 .../setuptools/command/upload_docs.py         |  195 -
 .../distribute-0.6.34/setuptools/depends.py   |  246 --
 vendor/distribute-0.6.34/setuptools/dist.py   |  855 -----
 .../distribute-0.6.34/setuptools/extension.py |   46 -
 .../distribute-0.6.34/setuptools/gui-32.exe   |  Bin 65536 -> 0 bytes
 .../distribute-0.6.34/setuptools/gui-64.exe   |  Bin 75264 -> 0 bytes
 vendor/distribute-0.6.34/setuptools/gui.exe   |  Bin 65536 -> 0 bytes
 .../setuptools/package_index.py               |  920 -----
 .../distribute-0.6.34/setuptools/sandbox.py   |  293 --
 .../setuptools/script template (dev).py       |    6 -
 .../setuptools/script template.py             |    4 -
 .../setuptools/tests/__init__.py              |  349 --
 .../setuptools/tests/doctest.py               | 2683 --------------
 .../indexes/test_links_priority/external.html |    3 -
 .../simple/foobar/index.html                  |    4 -
 .../setuptools/tests/py26compat.py            |   14 -
 .../setuptools/tests/server.py                |   82 -
 .../setuptools/tests/test_bdist_egg.py        |   69 -
 .../setuptools/tests/test_build_ext.py        |   20 -
 .../setuptools/tests/test_develop.py          |  118 -
 .../setuptools/tests/test_dist_info.py        |   80 -
 .../setuptools/tests/test_easy_install.py     |  460 ---
 .../setuptools/tests/test_markerlib.py        |   64 -
 .../setuptools/tests/test_packageindex.py     |  145 -
 .../setuptools/tests/test_resources.py        |  659 ----
 .../setuptools/tests/test_sandbox.py          |   66 -
 .../setuptools/tests/test_sdist.py            |  383 --
 .../setuptools/tests/test_test.py             |  124 -
 .../setuptools/tests/test_upload_docs.py      |   72 -
 .../setuptools/tests/win_script_wrapper.txt   |  151 -
 vendor/distribute-0.6.34/site.py              |   83 -
 vendor/distribute-0.6.34/tests/api_tests.txt  |  330 --
 .../distribute-0.6.34/tests/install_test.py   |   75 -
 vendor/distribute-0.6.34/tests/manual_test.py |  110 -
 .../tests/shlib_test/hello.c                  |  168 -
 .../tests/shlib_test/hello.pyx                |    4 -
 .../tests/shlib_test/hellolib.c               |    3 -
 .../tests/shlib_test/setup.py                 |   10 -
 .../tests/shlib_test/test_hello.py            |    7 -
 .../tests/test_distribute_setup.py            |   73 -
 vendor/pip-1.2.1.tar.gz                       |  Bin 322772 -> 0 bytes
 vendor/pip-1.2.1/.gitignore                   |   23 -
 vendor/pip-1.2.1/AUTHORS.txt                  |   48 -
 vendor/pip-1.2.1/LICENSE.txt                  |   20 -
 vendor/pip-1.2.1/MANIFEST.in                  |    6 -
 vendor/pip-1.2.1/contrib/build-installer      |   38 -
 vendor/pip-1.2.1/contrib/build-standalone     |   38 -
 vendor/pip-1.2.1/contrib/get-pip.py           | 1153 ------
 vendor/pip-1.2.1/contrib/packager/__init__.py |   68 -
 vendor/pip-1.2.1/contrib/packager/template.py |   48 -
 vendor/pip-1.2.1/docs/Makefile                |  130 -
 .../docs/_static/launch-jnlp-slave.JPG        |  Bin 112547 -> 0 bytes
 .../docs/_static/slave-launch-icon.png        |  Bin 46369 -> 0 bytes
 .../docs/_theme/nature/static/nature.css_t    |  237 --
 .../docs/_theme/nature/static/pygments.css    |   54 -
 .../pip-1.2.1/docs/_theme/nature/theme.conf   |    4 -
 .../pip-1.2.1/docs/ci-server-step-by-step.txt |  252 --
 vendor/pip-1.2.1/docs/conf.py                 |  195 -
 vendor/pip-1.2.1/docs/configuration.txt       |  141 -
 vendor/pip-1.2.1/docs/contributing.txt        |  167 -
 vendor/pip-1.2.1/docs/glossary.txt            |   12 -
 vendor/pip-1.2.1/docs/index.txt               |   54 -
 vendor/pip-1.2.1/docs/installing.txt          |   66 -
 vendor/pip-1.2.1/docs/make.bat                |  170 -
 vendor/pip-1.2.1/docs/news.txt                |  558 ---
 vendor/pip-1.2.1/docs/other-tools.txt         |  131 -
 vendor/pip-1.2.1/docs/requirements.txt        |  246 --
 vendor/pip-1.2.1/docs/usage.txt               |  160 -
 vendor/pip-1.2.1/pip/__init__.py              |  268 --
 vendor/pip-1.2.1/pip/_pkgutil.py              |  592 ---
 vendor/pip-1.2.1/pip/backwardcompat.py        |  135 -
 vendor/pip-1.2.1/pip/basecommand.py           |  193 -
 vendor/pip-1.2.1/pip/baseparser.py            |  226 --
 vendor/pip-1.2.1/pip/commands/__init__.py     |    1 -
 vendor/pip-1.2.1/pip/commands/bundle.py       |   38 -
 vendor/pip-1.2.1/pip/commands/completion.py   |   60 -
 vendor/pip-1.2.1/pip/commands/freeze.py       |  111 -
 vendor/pip-1.2.1/pip/commands/help.py         |   33 -
 vendor/pip-1.2.1/pip/commands/install.py      |  279 --
 vendor/pip-1.2.1/pip/commands/search.py       |  127 -
 vendor/pip-1.2.1/pip/commands/uninstall.py    |   43 -
 vendor/pip-1.2.1/pip/commands/unzip.py        |    9 -
 vendor/pip-1.2.1/pip/commands/zip.py          |  346 --
 vendor/pip-1.2.1/pip/download.py              |  481 ---
 vendor/pip-1.2.1/pip/exceptions.py            |   27 -
 vendor/pip-1.2.1/pip/index.py                 |  708 ----
 vendor/pip-1.2.1/pip/locations.py             |   52 -
 vendor/pip-1.2.1/pip/log.py                   |  188 -
 vendor/pip-1.2.1/pip/req.py                   | 1517 --------
 vendor/pip-1.2.1/pip/runner.py                |   18 -
 vendor/pip-1.2.1/pip/status_codes.py          |    5 -
 vendor/pip-1.2.1/pip/util.py                  |  509 ---
 vendor/pip-1.2.1/pip/vcs/__init__.py          |  244 --
 vendor/pip-1.2.1/pip/vcs/bazaar.py            |  129 -
 vendor/pip-1.2.1/pip/vcs/git.py               |  206 --
 vendor/pip-1.2.1/pip/vcs/mercurial.py         |  151 -
 vendor/pip-1.2.1/pip/vcs/subversion.py        |  272 --
 vendor/pip-1.2.1/setup.cfg                    |    2 -
 vendor/pip-1.2.1/setup.py                     |   55 -
 vendor/pip-1.2.1/tests/__init__.py            |    0
 .../tests/in dex/FSPkg/FSPkg-0.1dev.tar.gz    |  Bin 1034 -> 0 bytes
 .../pip-1.2.1/tests/in dex/FSPkg/index.html   |    3 -
 vendor/pip-1.2.1/tests/in dex/README.txt      |    2 -
 vendor/pip-1.2.1/tests/local_repos.py         |   75 -
 .../tests/packages/BrokenEmitsUTF8/broken.py  |    0
 .../tests/packages/BrokenEmitsUTF8/setup.py   |   25 -
 .../tests/packages/FSPkg/fspkg/__init__.py    |    1 -
 .../pip-1.2.1/tests/packages/FSPkg/setup.cfg  |    3 -
 .../pip-1.2.1/tests/packages/FSPkg/setup.py   |   25 -
 .../tests/packages/LineEndings/setup.py       |    3 -
 vendor/pip-1.2.1/tests/packages/README.txt    |    6 -
 .../tests/packages/broken-0.1.tar.gz          |  Bin 407 -> 0 bytes
 .../tests/packages/broken-0.2broken.tar.gz    |  Bin 509 -> 0 bytes
 .../pip-1.2.1/tests/packages/paxpkg.tar.bz2   |  Bin 1094 -> 0 bytes
 .../pkgwithmpkg-1.0-py2.7-macosx10.7.mpkg.zip |    0
 .../tests/packages/pkgwithmpkg-1.0.tar.gz     |    0
 vendor/pip-1.2.1/tests/path.py                |  209 --
 vendor/pip-1.2.1/tests/pypi_server.py         |  129 -
 vendor/pip-1.2.1/tests/test_all_pip.py        |  118 -
 vendor/pip-1.2.1/tests/test_basic.py          |  603 ---
 vendor/pip-1.2.1/tests/test_bundle.py         |   33 -
 vendor/pip-1.2.1/tests/test_cleanup.py        |  114 -
 vendor/pip-1.2.1/tests/test_compat.py         |   56 -
 vendor/pip-1.2.1/tests/test_completion.py     |   95 -
 vendor/pip-1.2.1/tests/test_config.py         |  152 -
 vendor/pip-1.2.1/tests/test_download.py       |   43 -
 vendor/pip-1.2.1/tests/test_extras.py         |   27 -
 .../pip-1.2.1/tests/test_file_scheme_index.py |   16 -
 vendor/pip-1.2.1/tests/test_finder.py         |   18 -
 vendor/pip-1.2.1/tests/test_freeze.py         |  241 --
 vendor/pip-1.2.1/tests/test_help.py           |   66 -
 vendor/pip-1.2.1/tests/test_index.py          |   28 -
 vendor/pip-1.2.1/tests/test_pip.py            |  618 ----
 vendor/pip-1.2.1/tests/test_proxy.py          |   64 -
 vendor/pip-1.2.1/tests/test_requirements.py   |  108 -
 vendor/pip-1.2.1/tests/test_search.py         |  131 -
 vendor/pip-1.2.1/tests/test_unicode.py        |   25 -
 vendor/pip-1.2.1/tests/test_uninstall.py      |  139 -
 vendor/pip-1.2.1/tests/test_upgrade.py        |  192 -
 vendor/pip-1.2.1/tests/test_vcs_backends.py   |  131 -
 vendor/pip-1.2.1/tests/test_vcs_bazaar.py     |   29 -
 vendor/pip-1.2.1/tests/test_vcs_git.py        |   77 -
 vendor/pip-1.2.1/tests/test_vcs_subversion.py |   21 -
 213 files changed, 51749 deletions(-)
 delete mode 100644 vendor/distribute-0.6.34/CHANGES.txt
 delete mode 100644 vendor/distribute-0.6.34/CONTRIBUTORS.txt
 delete mode 100644 vendor/distribute-0.6.34/DEVGUIDE.txt
 delete mode 100644 vendor/distribute-0.6.34/MANIFEST.in
 delete mode 100644 vendor/distribute-0.6.34/PKG-INFO
 delete mode 100644 vendor/distribute-0.6.34/README.txt
 delete mode 100644 vendor/distribute-0.6.34/_markerlib/__init__.py
 delete mode 100644 vendor/distribute-0.6.34/_markerlib/markers.py
 delete mode 100644 vendor/distribute-0.6.34/distribute.egg-info/PKG-INFO
 delete mode 100644 vendor/distribute-0.6.34/distribute.egg-info/SOURCES.txt
 delete mode 100644 vendor/distribute-0.6.34/distribute.egg-info/dependency_links.txt
 delete mode 100644 vendor/distribute-0.6.34/distribute.egg-info/entry_points.txt
 delete mode 100644 vendor/distribute-0.6.34/distribute.egg-info/top_level.txt
 delete mode 100644 vendor/distribute-0.6.34/distribute.egg-info/zip-safe
 delete mode 100644 vendor/distribute-0.6.34/distribute_setup.py
 delete mode 100644 vendor/distribute-0.6.34/docs/Makefile
 delete mode 100644 vendor/distribute-0.6.34/docs/_templates/indexsidebar.html
 delete mode 100644 vendor/distribute-0.6.34/docs/_theme/nature/static/nature.css_t
 delete mode 100644 vendor/distribute-0.6.34/docs/_theme/nature/static/pygments.css
 delete mode 100644 vendor/distribute-0.6.34/docs/_theme/nature/theme.conf
 delete mode 100644 vendor/distribute-0.6.34/docs/build/html/_sources/easy_install.txt
 delete mode 100644 vendor/distribute-0.6.34/docs/build/html/_sources/index.txt
 delete mode 100644 vendor/distribute-0.6.34/docs/build/html/_sources/pkg_resources.txt
 delete mode 100644 vendor/distribute-0.6.34/docs/build/html/_sources/python3.txt
 delete mode 100644 vendor/distribute-0.6.34/docs/build/html/_sources/roadmap.txt
 delete mode 100644 vendor/distribute-0.6.34/docs/build/html/_sources/setuptools.txt
 delete mode 100644 vendor/distribute-0.6.34/docs/build/html/_sources/using.txt
 delete mode 100644 vendor/distribute-0.6.34/docs/build/html/_static/basic.css
 delete mode 100644 vendor/distribute-0.6.34/docs/build/html/_static/nature.css
 delete mode 100644 vendor/distribute-0.6.34/docs/build/html/_static/pygments.css
 delete mode 100644 vendor/distribute-0.6.34/docs/conf.py
 delete mode 100644 vendor/distribute-0.6.34/docs/easy_install.txt
 delete mode 100644 vendor/distribute-0.6.34/docs/index.txt
 delete mode 100644 vendor/distribute-0.6.34/docs/pkg_resources.txt
 delete mode 100644 vendor/distribute-0.6.34/docs/python3.txt
 delete mode 100644 vendor/distribute-0.6.34/docs/roadmap.txt
 delete mode 100644 vendor/distribute-0.6.34/docs/setuptools.txt
 delete mode 100644 vendor/distribute-0.6.34/docs/using.txt
 delete mode 100644 vendor/distribute-0.6.34/easy_install.py
 delete mode 100644 vendor/distribute-0.6.34/launcher.c
 delete mode 100644 vendor/distribute-0.6.34/pkg_resources.py
 delete mode 100644 vendor/distribute-0.6.34/release.py
 delete mode 100644 vendor/distribute-0.6.34/setup.cfg
 delete mode 100644 vendor/distribute-0.6.34/setup.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/__init__.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/archive_util.py
 delete mode 100755 vendor/distribute-0.6.34/setuptools/cli-32.exe
 delete mode 100755 vendor/distribute-0.6.34/setuptools/cli-64.exe
 delete mode 100755 vendor/distribute-0.6.34/setuptools/cli.exe
 delete mode 100644 vendor/distribute-0.6.34/setuptools/command/__init__.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/command/alias.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/command/bdist_egg.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/command/bdist_rpm.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/command/bdist_wininst.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/command/build_ext.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/command/build_py.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/command/develop.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/command/easy_install.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/command/egg_info.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/command/install.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/command/install_egg_info.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/command/install_lib.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/command/install_scripts.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/command/register.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/command/rotate.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/command/saveopts.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/command/sdist.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/command/setopt.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/command/test.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/command/upload.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/command/upload_docs.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/depends.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/dist.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/extension.py
 delete mode 100755 vendor/distribute-0.6.34/setuptools/gui-32.exe
 delete mode 100755 vendor/distribute-0.6.34/setuptools/gui-64.exe
 delete mode 100755 vendor/distribute-0.6.34/setuptools/gui.exe
 delete mode 100644 vendor/distribute-0.6.34/setuptools/package_index.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/sandbox.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/script template (dev).py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/script template.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/tests/__init__.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/tests/doctest.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/tests/indexes/test_links_priority/external.html
 delete mode 100644 vendor/distribute-0.6.34/setuptools/tests/indexes/test_links_priority/simple/foobar/index.html
 delete mode 100644 vendor/distribute-0.6.34/setuptools/tests/py26compat.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/tests/server.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/tests/test_bdist_egg.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/tests/test_build_ext.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/tests/test_develop.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/tests/test_dist_info.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/tests/test_easy_install.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/tests/test_markerlib.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/tests/test_packageindex.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/tests/test_resources.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/tests/test_sandbox.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/tests/test_sdist.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/tests/test_test.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/tests/test_upload_docs.py
 delete mode 100644 vendor/distribute-0.6.34/setuptools/tests/win_script_wrapper.txt
 delete mode 100644 vendor/distribute-0.6.34/site.py
 delete mode 100644 vendor/distribute-0.6.34/tests/api_tests.txt
 delete mode 100644 vendor/distribute-0.6.34/tests/install_test.py
 delete mode 100644 vendor/distribute-0.6.34/tests/manual_test.py
 delete mode 100644 vendor/distribute-0.6.34/tests/shlib_test/hello.c
 delete mode 100644 vendor/distribute-0.6.34/tests/shlib_test/hello.pyx
 delete mode 100644 vendor/distribute-0.6.34/tests/shlib_test/hellolib.c
 delete mode 100644 vendor/distribute-0.6.34/tests/shlib_test/setup.py
 delete mode 100644 vendor/distribute-0.6.34/tests/shlib_test/test_hello.py
 delete mode 100644 vendor/distribute-0.6.34/tests/test_distribute_setup.py
 delete mode 100644 vendor/pip-1.2.1.tar.gz
 delete mode 100644 vendor/pip-1.2.1/.gitignore
 delete mode 100644 vendor/pip-1.2.1/AUTHORS.txt
 delete mode 100644 vendor/pip-1.2.1/LICENSE.txt
 delete mode 100644 vendor/pip-1.2.1/MANIFEST.in
 delete mode 100755 vendor/pip-1.2.1/contrib/build-installer
 delete mode 100755 vendor/pip-1.2.1/contrib/build-standalone
 delete mode 100755 vendor/pip-1.2.1/contrib/get-pip.py
 delete mode 100644 vendor/pip-1.2.1/contrib/packager/__init__.py
 delete mode 100644 vendor/pip-1.2.1/contrib/packager/template.py
 delete mode 100644 vendor/pip-1.2.1/docs/Makefile
 delete mode 100644 vendor/pip-1.2.1/docs/_static/launch-jnlp-slave.JPG
 delete mode 100644 vendor/pip-1.2.1/docs/_static/slave-launch-icon.png
 delete mode 100644 vendor/pip-1.2.1/docs/_theme/nature/static/nature.css_t
 delete mode 100644 vendor/pip-1.2.1/docs/_theme/nature/static/pygments.css
 delete mode 100644 vendor/pip-1.2.1/docs/_theme/nature/theme.conf
 delete mode 100644 vendor/pip-1.2.1/docs/ci-server-step-by-step.txt
 delete mode 100644 vendor/pip-1.2.1/docs/conf.py
 delete mode 100644 vendor/pip-1.2.1/docs/configuration.txt
 delete mode 100644 vendor/pip-1.2.1/docs/contributing.txt
 delete mode 100644 vendor/pip-1.2.1/docs/glossary.txt
 delete mode 100644 vendor/pip-1.2.1/docs/index.txt
 delete mode 100644 vendor/pip-1.2.1/docs/installing.txt
 delete mode 100644 vendor/pip-1.2.1/docs/make.bat
 delete mode 100644 vendor/pip-1.2.1/docs/news.txt
 delete mode 100644 vendor/pip-1.2.1/docs/other-tools.txt
 delete mode 100644 vendor/pip-1.2.1/docs/requirements.txt
 delete mode 100644 vendor/pip-1.2.1/docs/usage.txt
 delete mode 100755 vendor/pip-1.2.1/pip/__init__.py
 delete mode 100644 vendor/pip-1.2.1/pip/_pkgutil.py
 delete mode 100644 vendor/pip-1.2.1/pip/backwardcompat.py
 delete mode 100644 vendor/pip-1.2.1/pip/basecommand.py
 delete mode 100644 vendor/pip-1.2.1/pip/baseparser.py
 delete mode 100644 vendor/pip-1.2.1/pip/commands/__init__.py
 delete mode 100644 vendor/pip-1.2.1/pip/commands/bundle.py
 delete mode 100644 vendor/pip-1.2.1/pip/commands/completion.py
 delete mode 100644 vendor/pip-1.2.1/pip/commands/freeze.py
 delete mode 100644 vendor/pip-1.2.1/pip/commands/help.py
 delete mode 100644 vendor/pip-1.2.1/pip/commands/install.py
 delete mode 100644 vendor/pip-1.2.1/pip/commands/search.py
 delete mode 100644 vendor/pip-1.2.1/pip/commands/uninstall.py
 delete mode 100644 vendor/pip-1.2.1/pip/commands/unzip.py
 delete mode 100644 vendor/pip-1.2.1/pip/commands/zip.py
 delete mode 100644 vendor/pip-1.2.1/pip/download.py
 delete mode 100644 vendor/pip-1.2.1/pip/exceptions.py
 delete mode 100644 vendor/pip-1.2.1/pip/index.py
 delete mode 100644 vendor/pip-1.2.1/pip/locations.py
 delete mode 100644 vendor/pip-1.2.1/pip/log.py
 delete mode 100644 vendor/pip-1.2.1/pip/req.py
 delete mode 100644 vendor/pip-1.2.1/pip/runner.py
 delete mode 100644 vendor/pip-1.2.1/pip/status_codes.py
 delete mode 100644 vendor/pip-1.2.1/pip/util.py
 delete mode 100644 vendor/pip-1.2.1/pip/vcs/__init__.py
 delete mode 100644 vendor/pip-1.2.1/pip/vcs/bazaar.py
 delete mode 100644 vendor/pip-1.2.1/pip/vcs/git.py
 delete mode 100644 vendor/pip-1.2.1/pip/vcs/mercurial.py
 delete mode 100644 vendor/pip-1.2.1/pip/vcs/subversion.py
 delete mode 100644 vendor/pip-1.2.1/setup.cfg
 delete mode 100644 vendor/pip-1.2.1/setup.py
 delete mode 100644 vendor/pip-1.2.1/tests/__init__.py
 delete mode 100644 vendor/pip-1.2.1/tests/in dex/FSPkg/FSPkg-0.1dev.tar.gz
 delete mode 100644 vendor/pip-1.2.1/tests/in dex/FSPkg/index.html
 delete mode 100644 vendor/pip-1.2.1/tests/in dex/README.txt
 delete mode 100644 vendor/pip-1.2.1/tests/local_repos.py
 delete mode 100644 vendor/pip-1.2.1/tests/packages/BrokenEmitsUTF8/broken.py
 delete mode 100644 vendor/pip-1.2.1/tests/packages/BrokenEmitsUTF8/setup.py
 delete mode 100644 vendor/pip-1.2.1/tests/packages/FSPkg/fspkg/__init__.py
 delete mode 100644 vendor/pip-1.2.1/tests/packages/FSPkg/setup.cfg
 delete mode 100644 vendor/pip-1.2.1/tests/packages/FSPkg/setup.py
 delete mode 100644 vendor/pip-1.2.1/tests/packages/LineEndings/setup.py
 delete mode 100644 vendor/pip-1.2.1/tests/packages/README.txt
 delete mode 100644 vendor/pip-1.2.1/tests/packages/broken-0.1.tar.gz
 delete mode 100644 vendor/pip-1.2.1/tests/packages/broken-0.2broken.tar.gz
 delete mode 100644 vendor/pip-1.2.1/tests/packages/paxpkg.tar.bz2
 delete mode 100644 vendor/pip-1.2.1/tests/packages/pkgwithmpkg-1.0-py2.7-macosx10.7.mpkg.zip
 delete mode 100644 vendor/pip-1.2.1/tests/packages/pkgwithmpkg-1.0.tar.gz
 delete mode 100644 vendor/pip-1.2.1/tests/path.py
 delete mode 100644 vendor/pip-1.2.1/tests/pypi_server.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_all_pip.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_basic.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_bundle.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_cleanup.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_compat.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_completion.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_config.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_download.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_extras.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_file_scheme_index.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_finder.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_freeze.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_help.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_index.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_pip.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_proxy.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_requirements.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_search.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_unicode.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_uninstall.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_upgrade.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_vcs_backends.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_vcs_bazaar.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_vcs_git.py
 delete mode 100644 vendor/pip-1.2.1/tests/test_vcs_subversion.py

diff --git a/vendor/distribute-0.6.34/CHANGES.txt b/vendor/distribute-0.6.34/CHANGES.txt
deleted file mode 100644
index 1b248108..00000000
--- a/vendor/distribute-0.6.34/CHANGES.txt
+++ /dev/null
@@ -1,487 +0,0 @@
-=======
-CHANGES
-=======
-
-----------
-Unreleased
-----------
-
-+ Issue #341: 0.6.33 fails to build under python 2.4
-
-------
-0.6.33
-------
-
-* Fix 2 errors with Jython 2.5.
-* Fix 1 failure with Jython 2.5 and 2.7.
-* Disable workaround for Jython scripts on Linux systems.
-* Issue #336: `setup.py` no longer masks failure exit code when tests fail.
-* Fix issue in pkg_resources where try/except around a platform-dependent
-  import would trigger hook load failures on Mercurial. See pull request 32
-  for details.
-* Issue #341: Fix a ResourceWarning.
-
-------
-0.6.32
-------
-
-* Fix test suite with Python 2.6.
-* Fix some DeprecationWarnings and ResourceWarnings.
-* Issue #335: Backed out `setup_requires` superceding installed requirements
-  until regression can be addressed.
-
-------
-0.6.31
-------
-
-* Issue #303: Make sure the manifest only ever contains UTF-8 in Python 3.
-* Issue #329: Properly close files created by tests for compatibility with
-  Jython.
-* Work around Jython bugs `#1980 <http://bugs.jython.org/issue1980>`_ and
-  `#1981 <http://bugs.jython.org/issue1981>`_.
-* Issue #334: Provide workaround for packages that reference `sys.__stdout__`
-  such as numpy does. This change should address
-  `virtualenv #359 <https://github.com/pypa/virtualenv/issues/359>`_ as long
-  as the system encoding is UTF-8 or the IO encoding is specified in the
-  environment, i.e.::
-
-     PYTHONIOENCODING=utf8 pip install numpy
-
-* Fix for encoding issue when installing from Windows executable on Python 3.
-* Issue #323: Allow `setup_requires` requirements to supercede installed
-  requirements. Added some new keyword arguments to existing pkg_resources
-  methods. Also had to updated how __path__ is handled for namespace packages
-  to ensure that when a new egg distribution containing a namespace package is
-  placed on sys.path, the entries in __path__ are found in the same order they
-  would have been in had that egg been on the path when pkg_resources was
-  first imported.
-
-------
-0.6.30
-------
-
-* Issue #328: Clean up temporary directories in distribute_setup.py.
-* Fix fatal bug in distribute_setup.py.
-
-------
-0.6.29
-------
-
-* Pull Request #14: Honor file permissions in zip files.
-* Issue #327: Merged pull request #24 to fix a dependency problem with pip.
-* Merged pull request #23 to fix https://github.com/pypa/virtualenv/issues/301.
-* If Sphinx is installed, the `upload_docs` command now runs `build_sphinx`
-  to produce uploadable documentation.
-* Issue #326: `upload_docs` provided mangled auth credentials under Python 3.
-* Issue #320: Fix check for "createable" in distribute_setup.py.
-* Issue #305: Remove a warning that was triggered during normal operations.
-* Issue #311: Print metadata in UTF-8 independent of platform.
-* Issue #303: Read manifest file with UTF-8 encoding under Python 3.
-* Issue #301: Allow to run tests of namespace packages when using 2to3.
-* Issue #304: Prevent import loop in site.py under Python 3.3.
-* Issue #283: Reenable scanning of `*.pyc` / `*.pyo` files on Python 3.3.
-* Issue #299: The develop command didn't work on Python 3, when using 2to3,
-  as the egg link would go to the Python 2 source. Linking to the 2to3'd code
-  in build/lib makes it work, although you will have to rebuild the module
-  before testing it.
-* Issue #306: Even if 2to3 is used, we build in-place under Python 2.
-* Issue #307: Prints the full path when .svn/entries is broken.
-* Issue #313: Support for sdist subcommands (Python 2.7)
-* Issue #314: test_local_index() would fail an OS X.
-* Issue #310: Non-ascii characters in a namespace __init__.py causes errors.
-* Issue #218: Improved documentation on behavior of `package_data` and
-  `include_package_data`. Files indicated by `package_data` are now included
-  in the manifest.
-* `distribute_setup.py` now allows a `--download-base` argument for retrieving
-  distribute from a specified location.
-
-------
-0.6.28
-------
-
-* Issue #294: setup.py can now be invoked from any directory.
-* Scripts are now installed honoring the umask.
-* Added support for .dist-info directories.
-* Issue #283: Fix and disable scanning of `*.pyc` / `*.pyo` files on
-  Python 3.3.
-
-------
-0.6.27
-------
-
-* Support current snapshots of CPython 3.3.
-* Distribute now recognizes README.rst as a standard, default readme file.
-* Exclude 'encodings' modules when removing modules from sys.modules.
-  Workaround for #285.
-* Issue #231: Don't fiddle with system python when used with buildout
-  (bootstrap.py)
-
-------
-0.6.26
-------
-
-* Issue #183: Symlinked files are now extracted from source distributions.
-* Issue #227: Easy_install fetch parameters are now passed during the
-  installation of a source distribution; now fulfillment of setup_requires
-  dependencies will honor the parameters passed to easy_install.
-
-------
-0.6.25
-------
-
-* Issue #258: Workaround a cache issue
-* Issue #260: distribute_setup.py now accepts the --user parameter for
-  Python 2.6 and later.
-* Issue #262: package_index.open_with_auth no longer throws LookupError
-  on Python 3.
-* Issue #269: AttributeError when an exception occurs reading Manifest.in
-  on late releases of Python.
-* Issue #272: Prevent TypeError when namespace package names are unicode
-  and single-install-externally-managed is used. Also fixes PIP issue
-  449.
-* Issue #273: Legacy script launchers now install with Python2/3 support.
-
-------
-0.6.24
-------
-
-* Issue #249: Added options to exclude 2to3 fixers
-
-------
-0.6.23
-------
-
-* Issue #244: Fixed a test
-* Issue #243: Fixed a test
-* Issue #239: Fixed a test
-* Issue #240: Fixed a test
-* Issue #241: Fixed a test
-* Issue #237: Fixed a test
-* Issue #238: easy_install now uses 64bit executable wrappers on 64bit Python
-* Issue #208: Fixed parsed_versions, it now honors post-releases as noted in the documentation
-* Issue #207: Windows cli and gui wrappers pass CTRL-C to child python process
-* Issue #227: easy_install now passes its arguments to setup.py bdist_egg
-* Issue #225: Fixed a NameError on Python 2.5, 2.4
-
-------
-0.6.21
-------
-
-* Issue #225: FIxed a regression on py2.4
-
-------
-0.6.20
-------
-
-* Issue #135: Include url in warning when processing URLs in package_index.
-* Issue #212: Fix issue where easy_instal fails on Python 3 on windows installer.
-* Issue #213: Fix typo in documentation.
-
-------
-0.6.19
-------
-
-* Issue 206: AttributeError: 'HTTPMessage' object has no attribute 'getheaders'
-
-------
-0.6.18
-------
-
-* Issue 210: Fixed a regression introduced by Issue 204 fix.
-
-------
-0.6.17
-------
-
-* Support 'DISTRIBUTE_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT' environment
-  variable to allow to disable installation of easy_install-${version} script.
-* Support Python >=3.1.4 and >=3.2.1.
-* Issue 204: Don't try to import the parent of a namespace package in
-  declare_namespace
-* Issue 196: Tolerate responses with multiple Content-Length headers
-* Issue 205: Sandboxing doesn't preserve working_set. Leads to setup_requires
-  problems.
-
-------
-0.6.16
-------
-
-* Builds sdist gztar even on Windows (avoiding Issue 193).
-* Issue 192: Fixed metadata omitted on Windows when package_dir
-  specified with forward-slash.
-* Issue 195: Cython build support.
-* Issue 200: Issues with recognizing 64-bit packages on Windows.
-
-------
-0.6.15
-------
-
-* Fixed typo in bdist_egg
-* Several issues under Python 3 has been solved.
-* Issue 146: Fixed missing DLL files after easy_install of windows exe package.
-
-------
-0.6.14
-------
-
-* Issue 170: Fixed unittest failure. Thanks to Toshio.
-* Issue 171: Fixed race condition in unittests cause deadlocks in test suite.
-* Issue 143: Fixed a lookup issue with easy_install.
-  Thanks to David and Zooko.
-* Issue 174: Fixed the edit mode when its used with setuptools itself
-
-------
-0.6.13
-------
-
-* Issue 160: 2.7 gives ValueError("Invalid IPv6 URL")
-* Issue 150: Fixed using ~/.local even in a --no-site-packages virtualenv
-* Issue 163: scan index links before external links, and don't use the md5 when
-  comparing two distributions
-
-------
-0.6.12
-------
-
-* Issue 149: Fixed various failures on 2.3/2.4
-
-------
-0.6.11
-------
-
-* Found another case of SandboxViolation - fixed
-* Issue 15 and 48: Introduced a socket timeout of 15 seconds on url openings
-* Added indexsidebar.html into MANIFEST.in
-* Issue 108: Fixed TypeError with Python3.1
-* Issue 121: Fixed --help install command trying to actually install.
-* Issue 112: Added an os.makedirs so that Tarek's solution will work.
-* Issue 133: Added --no-find-links to easy_install
-* Added easy_install --user
-* Issue 100: Fixed develop --user not taking '.' in PYTHONPATH into account
-* Issue 134: removed spurious UserWarnings. Patch by VanLindberg
-* Issue 138: cant_write_to_target error when setup_requires is used.
-* Issue 147: respect the sys.dont_write_bytecode flag
-
-------
-0.6.10
-------
-
-* Reverted change made for the DistributionNotFound exception because
-  zc.buildout uses the exception message to get the name of the
-  distribution.
-
------
-0.6.9
------
-
-* Issue 90: unknown setuptools version can be added in the working set
-* Issue 87: setupt.py doesn't try to convert distribute_setup.py anymore
-  Initial Patch by arfrever.
-* Issue 89: added a side bar with a download link to the doc.
-* Issue 86: fixed missing sentence in pkg_resources doc.
-* Added a nicer error message when a DistributionNotFound is raised.
-* Issue 80: test_develop now works with Python 3.1
-* Issue 93: upload_docs now works if there is an empty sub-directory.
-* Issue 70: exec bit on non-exec files
-* Issue 99: now the standalone easy_install command doesn't uses a
-  "setup.cfg" if any exists in the working directory. It will use it
-  only if triggered by ``install_requires`` from a setup.py call
-  (install, develop, etc).
-* Issue 101: Allowing ``os.devnull`` in Sandbox
-* Issue 92: Fixed the "no eggs" found error with MacPort
-  (platform.mac_ver() fails)
-* Issue 103: test_get_script_header_jython_workaround not run
-  anymore under py3 with C or POSIX local. Contributed by Arfrever.
-* Issue 104: remvoved the assertion when the installation fails,
-  with a nicer message for the end user.
-* Issue 100: making sure there's no SandboxViolation when
-  the setup script patches setuptools.
-
------
-0.6.8
------
-
-* Added "check_packages" in dist. (added in Setuptools 0.6c11)
-* Fixed the DONT_PATCH_SETUPTOOLS state.
-
------
-0.6.7
------
-
-* Issue 58: Added --user support to the develop command
-* Issue 11: Generated scripts now wrap their call to the script entry point
-  in the standard "if name == 'main'"
-* Added the 'DONT_PATCH_SETUPTOOLS' environment variable, so virtualenv
-  can drive an installation that doesn't patch a global setuptools.
-* Reviewed unladen-swallow specific change from
-  http://code.google.com/p/unladen-swallow/source/detail?spec=svn875&r=719
-  and determined that it no longer applies. Distribute should work fine with
-  Unladen Swallow 2009Q3.
-* Issue 21: Allow PackageIndex.open_url to gracefully handle all cases of a
-  httplib.HTTPException instead of just InvalidURL and BadStatusLine.
-* Removed virtual-python.py from this distribution and updated documentation
-  to point to the actively maintained virtualenv instead.
-* Issue 64: use_setuptools no longer rebuilds the distribute egg every
-  time it is run
-* use_setuptools now properly respects the requested version
-* use_setuptools will no longer try to import a distribute egg for the
-  wrong Python version
-* Issue 74: no_fake should be True by default.
-* Issue 72: avoid a bootstrapping issue with easy_install -U
-
------
-0.6.6
------
-
-* Unified the bootstrap file so it works on both py2.x and py3k without 2to3
-  (patch by Holger Krekel)
-
------
-0.6.5
------
-
-* Issue 65: cli.exe and gui.exe are now generated at build time,
-  depending on the platform in use.
-
-* Issue 67: Fixed doc typo (PEP 381/382)
-
-* Distribute no longer shadows setuptools if we require a 0.7-series
-  setuptools.  And an error is raised when installing a 0.7 setuptools with
-  distribute.
-
-* When run from within buildout, no attempt is made to modify an existing
-  setuptools egg, whether in a shared egg directory or a system setuptools.
-
-* Fixed a hole in sandboxing allowing builtin file to write outside of
-  the sandbox.
-
------
-0.6.4
------
-
-* Added the generation of `distribute_setup_3k.py` during the release.
-  This closes issue #52.
-
-* Added an upload_docs command to easily upload project documentation to
-  PyPI's http://packages.python.org. This close issue #56.
-
-* Fixed a bootstrap bug on the use_setuptools() API.
-
------
-0.6.3
------
-
-setuptools
-==========
-
-* Fixed a bunch of calls to file() that caused crashes on Python 3.
-
-bootstrapping
-=============
-
-* Fixed a bug in sorting that caused bootstrap to fail on Python 3.
-
------
-0.6.2
------
-
-setuptools
-==========
-
-* Added Python 3 support; see docs/python3.txt.
-  This closes http://bugs.python.org/setuptools/issue39.
-
-* Added option to run 2to3 automatically when installing on Python 3.
-  This closes issue #31.
-
-* Fixed invalid usage of requirement.parse, that broke develop -d.
-  This closes http://bugs.python.org/setuptools/issue44.
-
-* Fixed script launcher for 64-bit Windows.
-  This closes http://bugs.python.org/setuptools/issue2.
-
-* KeyError when compiling extensions.
-  This closes http://bugs.python.org/setuptools/issue41.
-
-bootstrapping
-=============
-
-* Fixed bootstrap not working on Windows. This closes issue #49.
-
-* Fixed 2.6 dependencies. This closes issue #50.
-
-* Make sure setuptools is patched when running through easy_install
-  This closes http://bugs.python.org/setuptools/issue40.
-
------
-0.6.1
------
-
-setuptools
-==========
-
-* package_index.urlopen now catches BadStatusLine and malformed url errors.
-  This closes issue #16 and issue #18.
-
-* zip_ok is now False by default. This closes
-  http://bugs.python.org/setuptools/issue33.
-
-* Fixed invalid URL error catching. http://bugs.python.org/setuptools/issue20.
-
-* Fixed invalid bootstraping with easy_install installation (issue #40).
-  Thanks to Florian Schulze for the help.
-
-* Removed buildout/bootstrap.py. A new repository will create a specific
-  bootstrap.py script.
-
-
-bootstrapping
-=============
-
-* The boostrap process leave setuptools alone if detected in the system
-  and --root or --prefix is provided, but is not in the same location.
-  This closes issue #10.
-
----
-0.6
----
-
-setuptools
-==========
-
-* Packages required at build time where not fully present at install time.
-  This closes issue #12.
-
-* Protected against failures in tarfile extraction. This closes issue #10.
-
-* Made Jython api_tests.txt doctest compatible. This closes issue #7.
-
-* sandbox.py replaced builtin type file with builtin function open. This
-  closes issue #6.
-
-* Immediately close all file handles. This closes issue #3.
-
-* Added compatibility with Subversion 1.6. This references issue #1.
-
-pkg_resources
-=============
-
-* Avoid a call to /usr/bin/sw_vers on OSX and use the official platform API
-  instead. Based on a patch from ronaldoussoren. This closes issue #5.
-
-* Fixed a SandboxViolation for mkdir that could occur in certain cases.
-  This closes issue #13.
-
-* Allow to find_on_path on systems with tight permissions to fail gracefully.
-  This closes issue #9.
-
-* Corrected inconsistency between documentation and code of add_entry.
-  This closes issue #8.
-
-* Immediately close all file handles. This closes issue #3.
-
-easy_install
-============
-
-* Immediately close all file handles. This closes issue #3.
-
diff --git a/vendor/distribute-0.6.34/CONTRIBUTORS.txt b/vendor/distribute-0.6.34/CONTRIBUTORS.txt
deleted file mode 100644
index 22c90aba..00000000
--- a/vendor/distribute-0.6.34/CONTRIBUTORS.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-============
-Contributors
-============
-
-* Alex Grönholm
-* Alice Bevan-McGregor
-* Arfrever Frehtes Taifersar Arahesis
-* Christophe Combelles
-* Daniel Stutzbach
-* Daniel Holth
-* Hanno Schlichting
-* Jannis Leidel
-* Jason R. Coombs
-* Jim Fulton
-* Jonathan Lange
-* Justin Azoff
-* Lennart Regebro
-* Marc Abramowitz
-* Martin von Löwis
-* Noufal Ibrahim
-* Pete Hollobon
-* Philip Jenvey
-* Reinout van Rees
-* Robert Myers
-* Stefan H. Holek
-* Tarek Ziadé
-* Toshio Kuratomi
-
-If you think you name is missing, please add it (alpha order by first name)
-
diff --git a/vendor/distribute-0.6.34/DEVGUIDE.txt b/vendor/distribute-0.6.34/DEVGUIDE.txt
deleted file mode 100644
index 8dcabfd1..00000000
--- a/vendor/distribute-0.6.34/DEVGUIDE.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-============================
-Quick notes for contributors
-============================
-
-Distribute is using Mercurial.
-
-Grab the code at bitbucket::
-
-    $ hg clone https://bitbucket.org/tarek/distribute
-
-If you want to contribute changes, we recommend you fork the repository on
-bitbucket, commit the changes to your repository, and then make a pull request
-on bitbucket. If you make some changes, don't forget to:
-
-- add a note in CHANGES.txt
-
-And remember that 0.6 (the only development line) is only bug fixes, and the
-APIs should be fully backward compatible with Setuptools.
-
-You can run the tests via::
-
-    $ python setup.py test
diff --git a/vendor/distribute-0.6.34/MANIFEST.in b/vendor/distribute-0.6.34/MANIFEST.in
deleted file mode 100644
index 9837747a..00000000
--- a/vendor/distribute-0.6.34/MANIFEST.in
+++ /dev/null
@@ -1,9 +0,0 @@
-recursive-include setuptools *.py *.txt *.exe
-recursive-include tests *.py *.c *.pyx *.txt
-recursive-include setuptools/tests *.html
-recursive-include docs *.py *.txt *.conf *.css *.css_t Makefile indexsidebar.html
-recursive-include _markerlib *.py
-include *.py
-include *.txt
-include MANIFEST.in
-include launcher.c
diff --git a/vendor/distribute-0.6.34/PKG-INFO b/vendor/distribute-0.6.34/PKG-INFO
deleted file mode 100644
index d1c8adfe..00000000
--- a/vendor/distribute-0.6.34/PKG-INFO
+++ /dev/null
@@ -1,868 +0,0 @@
-Metadata-Version: 1.1
-Name: distribute
-Version: 0.6.34
-Summary: Easily download, build, install, upgrade, and uninstall Python packages
-Home-page: http://packages.python.org/distribute
-Author: The fellowship of the packaging
-Author-email: distutils-sig@python.org
-License: PSF or ZPL
-Description: ===============================
-        Installing and Using Distribute
-        ===============================
-        
-        .. contents:: **Table of Contents**
-        
-        -----------
-        Disclaimers
-        -----------
-        
-        About the fork
-        ==============
-        
-        `Distribute` is a fork of the `Setuptools` project.
-        
-        Distribute is intended to replace Setuptools as the standard method
-        for working with Python module distributions.
-        
-        The fork has two goals:
-        
-        - Providing a backward compatible version to replace Setuptools
-          and make all distributions that depend on Setuptools work as
-          before, but with less bugs and behaviorial issues.
-        
-          This work is done in the 0.6.x series.
-        
-          Starting with version 0.6.2, Distribute supports Python 3.
-          Installing and using distribute for Python 3 code works exactly
-          the same as for Python 2 code, but Distribute also helps you to support
-          Python 2 and Python 3 from the same source code by letting you run 2to3
-          on the code as a part of the build process, by setting the keyword parameter
-          ``use_2to3`` to True. See http://packages.python.org/distribute for more
-          information.
-        
-        - Refactoring the code, and releasing it in several distributions.
-          This work is being done in the 0.7.x series but not yet released.
-        
-        The roadmap is still evolving, and the page that is up-to-date is
-        located at : `http://packages.python.org/distribute/roadmap`.
-        
-        If you install `Distribute` and want to switch back for any reason to
-        `Setuptools`, get to the `Uninstallation instructions`_ section.
-        
-        More documentation
-        ==================
-        
-        You can get more information in the Sphinx-based documentation, located
-        at http://packages.python.org/distribute. This documentation includes the old
-        Setuptools documentation that is slowly replaced, and brand new content.
-        
-        About the installation process
-        ==============================
-        
-        The `Distribute` installer modifies your installation by de-activating an
-        existing installation of `Setuptools` in a bootstrap process. This process
-        has been tested in various installation schemes and contexts but in case of a
-        bug during this process your Python installation might be left in a broken
-        state. Since all modified files and directories are copied before the
-        installation starts, you will be able to get back to a normal state by reading
-        the instructions in the `Uninstallation instructions`_ section.
-        
-        In any case, it is recommended to save you `site-packages` directory before
-        you start the installation of `Distribute`.
-        
-        -------------------------
-        Installation Instructions
-        -------------------------
-        
-        Distribute is only released as a source distribution.
-        
-        It can be installed using pip, and can be done so with the source tarball,
-        or by using the ``distribute_setup.py`` script provided online.
-        
-        ``distribute_setup.py`` is the simplest and preferred way on all systems.
-        
-        distribute_setup.py
-        ===================
-        
-        Download
-        `distribute_setup.py <http://python-distribute.org/distribute_setup.py>`_
-        and execute it, using the Python interpreter of your choice.
-        
-        If your shell has the ``curl`` program you can do::
-        
-            $ curl -O http://python-distribute.org/distribute_setup.py
-            $ python distribute_setup.py
-        
-        Notice this file is also provided in the source release.
-        
-        pip
-        ===
-        
-        Run easy_install or pip::
-        
-            $ pip install distribute
-        
-        Source installation
-        ===================
-        
-        Download the source tarball, uncompress it, then run the install command::
-        
-            $ curl -O http://pypi.python.org/packages/source/d/distribute/distribute-0.6.34.tar.gz
-            $ tar -xzvf distribute-0.6.34.tar.gz
-            $ cd distribute-0.6.34
-            $ python setup.py install
-        
-        ---------------------------
-        Uninstallation Instructions
-        ---------------------------
-        
-        Like other distutils-based distributions, Distribute doesn't provide an
-        uninstaller yet. It's all done manually! We are all waiting for PEP 376
-        support in Python.
-        
-        Distribute is installed in three steps:
-        
-        1. it gets out of the way an existing installation of Setuptools
-        2. it installs a `fake` setuptools installation
-        3. it installs distribute
-        
-        Distribute can be removed like this:
-        
-        - remove the ``distribute*.egg`` file located in your site-packages directory
-        - remove the ``setuptools.pth`` file located in you site-packages directory
-        - remove the easy_install script located in you ``sys.prefix/bin`` directory
-        - remove the ``setuptools*.egg`` directory located in your site-packages directory,
-          if any.
-        
-        If you want to get back to setuptools:
-        
-        - reinstall setuptools using its instruction.
-        
-        Lastly:
-        
-        - remove the *.OLD.* directory located in your site-packages directory if any,
-          **once you have checked everything was working correctly again**.
-        
-        -------------------------
-        Quick help for developers
-        -------------------------
-        
-        To create an egg which is compatible with Distribute, use the same
-        practice as with Setuptools, e.g.::
-        
-            from setuptools import setup
-        
-            setup(...
-            )
-        
-        To use `pkg_resources` to access data files in the egg, you should
-        require the Setuptools distribution explicitly::
-        
-            from setuptools import setup
-        
-            setup(...
-                install_requires=['setuptools']
-            )
-        
-        Only if you need Distribute-specific functionality should you depend
-        on it explicitly. In this case, replace the Setuptools dependency::
-        
-            from setuptools import setup
-        
-            setup(...
-                install_requires=['distribute']
-            )
-        
-        -----------
-        Install FAQ
-        -----------
-        
-        - **Why is Distribute wrapping my Setuptools installation?**
-        
-           Since Distribute is a fork, and since it provides the same package
-           and modules, it renames the existing Setuptools egg and inserts a
-           new one which merely wraps the Distribute code. This way, full
-           backwards compatibility is kept for packages which rely on the
-           Setuptools modules.
-        
-           At the same time, packages can meet their dependency on Setuptools
-           without actually installing it (which would disable Distribute).
-        
-        - **How does Distribute interact with virtualenv?**
-        
-          Everytime you create a virtualenv it will install setuptools by default.
-          You either need to re-install Distribute in it right after or pass the
-          ``--distribute`` option when creating it.
-        
-          Once installed, your virtualenv will use Distribute transparently.
-        
-          Although, if you have Setuptools installed in your system-wide Python,
-          and if the virtualenv you are in was generated without the `--no-site-packages`
-          option, the Distribute installation will stop.
-        
-          You need in this case to build a virtualenv with the `--no-site-packages`
-          option or to install `Distribute` globally.
-        
-        - **How does Distribute interacts with zc.buildout?**
-        
-          You can use Distribute in your zc.buildout, with the --distribute option,
-          starting at zc.buildout 1.4.2::
-        
-          $ python bootstrap.py --distribute
-        
-          For previous zc.buildout versions, *the only thing* you need to do
-          is use the bootstrap at `http://python-distribute.org/bootstrap.py`.  Run
-          that bootstrap and ``bin/buildout`` (and all other buildout-generated
-          scripts) will transparently use distribute instead of setuptools.  You do
-          not need a specific buildout release.
-        
-          A shared eggs directory is no problem (since 0.6.6): the setuptools egg is
-          left in place unmodified.  So other buildouts that do not yet use the new
-          bootstrap continue to work just fine.  And there is no need to list
-          ``distribute`` somewhere in your eggs: using the bootstrap is enough.
-        
-          The source code for the bootstrap script is located at
-          `http://bitbucket.org/tarek/buildout-distribute`.
-        
-        
-        
-        -----------------------------
-        Feedback and getting involved
-        -----------------------------
-        
-        - Mailing list: http://mail.python.org/mailman/listinfo/distutils-sig
-        - Issue tracker: http://bitbucket.org/tarek/distribute/issues/
-        - Code Repository: http://bitbucket.org/tarek/distribute
-        
-        =======
-        CHANGES
-        =======
-        
-        ----------
-        Unreleased
-        ----------
-        
-        + `Issue #341`_: 0.6.33 fails to build under python 2.4
-        
-        ------
-        0.6.33
-        ------
-        
-        * Fix 2 errors with Jython 2.5.
-        * Fix 1 failure with Jython 2.5 and 2.7.
-        * Disable workaround for Jython scripts on Linux systems.
-        * `Issue #336`_: `setup.py` no longer masks failure exit code when tests fail.
-        * Fix issue in pkg_resources where try/except around a platform-dependent
-          import would trigger hook load failures on Mercurial. See pull request 32
-          for details.
-        * `Issue #341`_: Fix a ResourceWarning.
-        
-        ------
-        0.6.32
-        ------
-        
-        * Fix test suite with Python 2.6.
-        * Fix some DeprecationWarnings and ResourceWarnings.
-        * `Issue #335`_: Backed out `setup_requires` superceding installed requirements
-          until regression can be addressed.
-        
-        ------
-        0.6.31
-        ------
-        
-        * `Issue #303`_: Make sure the manifest only ever contains UTF-8 in Python 3.
-        * `Issue #329`_: Properly close files created by tests for compatibility with
-          Jython.
-        * Work around Jython bugs `#1980 <http://bugs.jython.org/`issue1980`_>`_ and
-          `#1981 <http://bugs.jython.org/`issue1981`_>`_.
-        * `Issue #334`_: Provide workaround for packages that reference `sys.__stdout__`
-          such as numpy does. This change should address
-          `virtualenv #359 <https://github.com/pypa/virtualenv/issues/359>`_ as long
-          as the system encoding is UTF-8 or the IO encoding is specified in the
-          environment, i.e.::
-        
-             PYTHONIOENCODING=utf8 pip install numpy
-        
-        * Fix for encoding issue when installing from Windows executable on Python 3.
-        * `Issue #323`_: Allow `setup_requires` requirements to supercede installed
-          requirements. Added some new keyword arguments to existing pkg_resources
-          methods. Also had to updated how __path__ is handled for namespace packages
-          to ensure that when a new egg distribution containing a namespace package is
-          placed on sys.path, the entries in __path__ are found in the same order they
-          would have been in had that egg been on the path when pkg_resources was
-          first imported.
-        
-        ------
-        0.6.30
-        ------
-        
-        * `Issue #328`_: Clean up temporary directories in distribute_setup.py.
-        * Fix fatal bug in distribute_setup.py.
-        
-        ------
-        0.6.29
-        ------
-        
-        * Pull Request #14: Honor file permissions in zip files.
-        * `Issue #327`_: Merged pull request #24 to fix a dependency problem with pip.
-        * Merged pull request #23 to fix https://github.com/pypa/virtualenv/issues/301.
-        * If Sphinx is installed, the `upload_docs` command now runs `build_sphinx`
-          to produce uploadable documentation.
-        * `Issue #326`_: `upload_docs` provided mangled auth credentials under Python 3.
-        * `Issue #320`_: Fix check for "createable" in distribute_setup.py.
-        * `Issue #305`_: Remove a warning that was triggered during normal operations.
-        * `Issue #311`_: Print metadata in UTF-8 independent of platform.
-        * `Issue #303`_: Read manifest file with UTF-8 encoding under Python 3.
-        * `Issue #301`_: Allow to run tests of namespace packages when using 2to3.
-        * `Issue #304`_: Prevent import loop in site.py under Python 3.3.
-        * `Issue #283`_: Reenable scanning of `*.pyc` / `*.pyo` files on Python 3.3.
-        * `Issue #299`_: The develop command didn't work on Python 3, when using 2to3,
-          as the egg link would go to the Python 2 source. Linking to the 2to3'd code
-          in build/lib makes it work, although you will have to rebuild the module
-          before testing it.
-        * `Issue #306`_: Even if 2to3 is used, we build in-place under Python 2.
-        * `Issue #307`_: Prints the full path when .svn/entries is broken.
-        * `Issue #313`_: Support for sdist subcommands (Python 2.7)
-        * `Issue #314`_: test_local_index() would fail an OS X.
-        * `Issue #310`_: Non-ascii characters in a namespace __init__.py causes errors.
-        * `Issue #218`_: Improved documentation on behavior of `package_data` and
-          `include_package_data`. Files indicated by `package_data` are now included
-          in the manifest.
-        * `distribute_setup.py` now allows a `--download-base` argument for retrieving
-          distribute from a specified location.
-        
-        ------
-        0.6.28
-        ------
-        
-        * `Issue #294`_: setup.py can now be invoked from any directory.
-        * Scripts are now installed honoring the umask.
-        * Added support for .dist-info directories.
-        * `Issue #283`_: Fix and disable scanning of `*.pyc` / `*.pyo` files on
-          Python 3.3.
-        
-        ------
-        0.6.27
-        ------
-        
-        * Support current snapshots of CPython 3.3.
-        * Distribute now recognizes README.rst as a standard, default readme file.
-        * Exclude 'encodings' modules when removing modules from sys.modules.
-          Workaround for #285.
-        * `Issue #231`_: Don't fiddle with system python when used with buildout
-          (bootstrap.py)
-        
-        ------
-        0.6.26
-        ------
-        
-        * `Issue #183`_: Symlinked files are now extracted from source distributions.
-        * `Issue #227`_: Easy_install fetch parameters are now passed during the
-          installation of a source distribution; now fulfillment of setup_requires
-          dependencies will honor the parameters passed to easy_install.
-        
-        ------
-        0.6.25
-        ------
-        
-        * `Issue #258`_: Workaround a cache issue
-        * `Issue #260`_: distribute_setup.py now accepts the --user parameter for
-          Python 2.6 and later.
-        * `Issue #262`_: package_index.open_with_auth no longer throws LookupError
-          on Python 3.
-        * `Issue #269`_: AttributeError when an exception occurs reading Manifest.in
-          on late releases of Python.
-        * `Issue #272`_: Prevent TypeError when namespace package names are unicode
-          and single-install-externally-managed is used. Also fixes PIP `issue
-          449`_.
-        * `Issue #273`_: Legacy script launchers now install with Python2/3 support.
-        
-        ------
-        0.6.24
-        ------
-        
-        * `Issue #249`_: Added options to exclude 2to3 fixers
-        
-        ------
-        0.6.23
-        ------
-        
-        * `Issue #244`_: Fixed a test
-        * `Issue #243`_: Fixed a test
-        * `Issue #239`_: Fixed a test
-        * `Issue #240`_: Fixed a test
-        * `Issue #241`_: Fixed a test
-        * `Issue #237`_: Fixed a test
-        * `Issue #238`_: easy_install now uses 64bit executable wrappers on 64bit Python
-        * `Issue #208`_: Fixed parsed_versions, it now honors post-releases as noted in the documentation
-        * `Issue #207`_: Windows cli and gui wrappers pass CTRL-C to child python process
-        * `Issue #227`_: easy_install now passes its arguments to setup.py bdist_egg
-        * `Issue #225`_: Fixed a NameError on Python 2.5, 2.4
-        
-        ------
-        0.6.21
-        ------
-        
-        * `Issue #225`_: FIxed a regression on py2.4
-        
-        ------
-        0.6.20
-        ------
-        
-        * `Issue #135`_: Include url in warning when processing URLs in package_index.
-        * `Issue #212`_: Fix issue where easy_instal fails on Python 3 on windows installer.
-        * `Issue #213`_: Fix typo in documentation.
-        
-        ------
-        0.6.19
-        ------
-        
-        * `Issue 206`_: AttributeError: 'HTTPMessage' object has no attribute 'getheaders'
-        
-        ------
-        0.6.18
-        ------
-        
-        * `Issue 210`_: Fixed a regression introduced by `Issue 204`_ fix.
-        
-        ------
-        0.6.17
-        ------
-        
-        * Support 'DISTRIBUTE_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT' environment
-          variable to allow to disable installation of easy_install-${version} script.
-        * Support Python >=3.1.4 and >=3.2.1.
-        * `Issue 204`_: Don't try to import the parent of a namespace package in
-          declare_namespace
-        * `Issue 196`_: Tolerate responses with multiple Content-Length headers
-        * `Issue 205`_: Sandboxing doesn't preserve working_set. Leads to setup_requires
-          problems.
-        
-        ------
-        0.6.16
-        ------
-        
-        * Builds sdist gztar even on Windows (avoiding `Issue 193`_).
-        * `Issue 192`_: Fixed metadata omitted on Windows when package_dir
-          specified with forward-slash.
-        * `Issue 195`_: Cython build support.
-        * `Issue 200`_: Issues with recognizing 64-bit packages on Windows.
-        
-        ------
-        0.6.15
-        ------
-        
-        * Fixed typo in bdist_egg
-        * Several issues under Python 3 has been solved.
-        * `Issue 146`_: Fixed missing DLL files after easy_install of windows exe package.
-        
-        ------
-        0.6.14
-        ------
-        
-        * `Issue 170`_: Fixed unittest failure. Thanks to Toshio.
-        * `Issue 171`_: Fixed race condition in unittests cause deadlocks in test suite.
-        * `Issue 143`_: Fixed a lookup issue with easy_install.
-          Thanks to David and Zooko.
-        * `Issue 174`_: Fixed the edit mode when its used with setuptools itself
-        
-        ------
-        0.6.13
-        ------
-        
-        * `Issue 160`_: 2.7 gives ValueError("Invalid IPv6 URL")
-        * `Issue 150`_: Fixed using ~/.local even in a --no-site-packages virtualenv
-        * `Issue 163`_: scan index links before external links, and don't use the md5 when
-          comparing two distributions
-        
-        ------
-        0.6.12
-        ------
-        
-        * `Issue 149`_: Fixed various failures on 2.3/2.4
-        
-        ------
-        0.6.11
-        ------
-        
-        * Found another case of SandboxViolation - fixed
-        * `Issue 15`_ and 48: Introduced a socket timeout of 15 seconds on url openings
-        * Added indexsidebar.html into MANIFEST.in
-        * `Issue 108`_: Fixed TypeError with Python3.1
-        * `Issue 121`_: Fixed --help install command trying to actually install.
-        * `Issue 112`_: Added an os.makedirs so that Tarek's solution will work.
-        * `Issue 133`_: Added --no-find-links to easy_install
-        * Added easy_install --user
-        * `Issue 100`_: Fixed develop --user not taking '.' in PYTHONPATH into account
-        * `Issue 134`_: removed spurious UserWarnings. Patch by VanLindberg
-        * `Issue 138`_: cant_write_to_target error when setup_requires is used.
-        * `Issue 147`_: respect the sys.dont_write_bytecode flag
-        
-        ------
-        0.6.10
-        ------
-        
-        * Reverted change made for the DistributionNotFound exception because
-          zc.buildout uses the exception message to get the name of the
-          distribution.
-        
-        -----
-        0.6.9
-        -----
-        
-        * `Issue 90`_: unknown setuptools version can be added in the working set
-        * `Issue 87`_: setupt.py doesn't try to convert distribute_setup.py anymore
-          Initial Patch by arfrever.
-        * `Issue 89`_: added a side bar with a download link to the doc.
-        * `Issue 86`_: fixed missing sentence in pkg_resources doc.
-        * Added a nicer error message when a DistributionNotFound is raised.
-        * `Issue 80`_: test_develop now works with Python 3.1
-        * `Issue 93`_: upload_docs now works if there is an empty sub-directory.
-        * `Issue 70`_: exec bit on non-exec files
-        * `Issue 99`_: now the standalone easy_install command doesn't uses a
-          "setup.cfg" if any exists in the working directory. It will use it
-          only if triggered by ``install_requires`` from a setup.py call
-          (install, develop, etc).
-        * `Issue 101`_: Allowing ``os.devnull`` in Sandbox
-        * `Issue 92`_: Fixed the "no eggs" found error with MacPort
-          (platform.mac_ver() fails)
-        * `Issue 103`_: test_get_script_header_jython_workaround not run
-          anymore under py3 with C or POSIX local. Contributed by Arfrever.
-        * `Issue 104`_: remvoved the assertion when the installation fails,
-          with a nicer message for the end user.
-        * `Issue 100`_: making sure there's no SandboxViolation when
-          the setup script patches setuptools.
-        
-        -----
-        0.6.8
-        -----
-        
-        * Added "check_packages" in dist. (added in Setuptools 0.6c11)
-        * Fixed the DONT_PATCH_SETUPTOOLS state.
-        
-        -----
-        0.6.7
-        -----
-        
-        * `Issue 58`_: Added --user support to the develop command
-        * `Issue 11`_: Generated scripts now wrap their call to the script entry point
-          in the standard "if name == 'main'"
-        * Added the 'DONT_PATCH_SETUPTOOLS' environment variable, so virtualenv
-          can drive an installation that doesn't patch a global setuptools.
-        * Reviewed unladen-swallow specific change from
-          http://code.google.com/p/unladen-swallow/source/detail?spec=svn875&r=719
-          and determined that it no longer applies. Distribute should work fine with
-          Unladen Swallow 2009Q3.
-        * `Issue 21`_: Allow PackageIndex.open_url to gracefully handle all cases of a
-          httplib.HTTPException instead of just InvalidURL and BadStatusLine.
-        * Removed virtual-python.py from this distribution and updated documentation
-          to point to the actively maintained virtualenv instead.
-        * `Issue 64`_: use_setuptools no longer rebuilds the distribute egg every
-          time it is run
-        * use_setuptools now properly respects the requested version
-        * use_setuptools will no longer try to import a distribute egg for the
-          wrong Python version
-        * `Issue 74`_: no_fake should be True by default.
-        * `Issue 72`_: avoid a bootstrapping issue with easy_install -U
-        
-        -----
-        0.6.6
-        -----
-        
-        * Unified the bootstrap file so it works on both py2.x and py3k without 2to3
-          (patch by Holger Krekel)
-        
-        -----
-        0.6.5
-        -----
-        
-        * `Issue 65`_: cli.exe and gui.exe are now generated at build time,
-          depending on the platform in use.
-        
-        * `Issue 67`_: Fixed doc typo (PEP 381/382)
-        
-        * Distribute no longer shadows setuptools if we require a 0.7-series
-          setuptools.  And an error is raised when installing a 0.7 setuptools with
-          distribute.
-        
-        * When run from within buildout, no attempt is made to modify an existing
-          setuptools egg, whether in a shared egg directory or a system setuptools.
-        
-        * Fixed a hole in sandboxing allowing builtin file to write outside of
-          the sandbox.
-        
-        -----
-        0.6.4
-        -----
-        
-        * Added the generation of `distribute_setup_3k.py` during the release.
-          This closes `issue #52`_.
-        
-        * Added an upload_docs command to easily upload project documentation to
-          PyPI's http://packages.python.org. This close `issue #56`_.
-        
-        * Fixed a bootstrap bug on the use_setuptools() API.
-        
-        -----
-        0.6.3
-        -----
-        
-        setuptools
-        ==========
-        
-        * Fixed a bunch of calls to file() that caused crashes on Python 3.
-        
-        bootstrapping
-        =============
-        
-        * Fixed a bug in sorting that caused bootstrap to fail on Python 3.
-        
-        -----
-        0.6.2
-        -----
-        
-        setuptools
-        ==========
-        
-        * Added Python 3 support; see docs/python3.txt.
-          This closes http://bugs.python.org/setuptools/`issue39`_.
-        
-        * Added option to run 2to3 automatically when installing on Python 3.
-          This closes `issue #31`_.
-        
-        * Fixed invalid usage of requirement.parse, that broke develop -d.
-          This closes http://bugs.python.org/setuptools/`issue44`_.
-        
-        * Fixed script launcher for 64-bit Windows.
-          This closes http://bugs.python.org/setuptools/`issue2`_.
-        
-        * KeyError when compiling extensions.
-          This closes http://bugs.python.org/setuptools/`issue41`_.
-        
-        bootstrapping
-        =============
-        
-        * Fixed bootstrap not working on Windows. This closes `issue #49`_.
-        
-        * Fixed 2.6 dependencies. This closes `issue #50`_.
-        
-        * Make sure setuptools is patched when running through easy_install
-          This closes http://bugs.python.org/setuptools/`issue40`_.
-        
-        -----
-        0.6.1
-        -----
-        
-        setuptools
-        ==========
-        
-        * package_index.urlopen now catches BadStatusLine and malformed url errors.
-          This closes `issue #16`_ and `issue #18`_.
-        
-        * zip_ok is now False by default. This closes
-          http://bugs.python.org/setuptools/`issue33`_.
-        
-        * Fixed invalid URL error catching. http://bugs.python.org/setuptools/`issue20`_.
-        
-        * Fixed invalid bootstraping with easy_install installation (`issue #40`_).
-          Thanks to Florian Schulze for the help.
-        
-        * Removed buildout/bootstrap.py. A new repository will create a specific
-          bootstrap.py script.
-        
-        
-        bootstrapping
-        =============
-        
-        * The boostrap process leave setuptools alone if detected in the system
-          and --root or --prefix is provided, but is not in the same location.
-          This closes `issue #10`_.
-        
-        ---
-        0.6
-        ---
-        
-        setuptools
-        ==========
-        
-        * Packages required at build time where not fully present at install time.
-          This closes `issue #12`_.
-        
-        * Protected against failures in tarfile extraction. This closes `issue #10`_.
-        
-        * Made Jython api_tests.txt doctest compatible. This closes `issue #7`_.
-        
-        * sandbox.py replaced builtin type file with builtin function open. This
-          closes `issue #6`_.
-        
-        * Immediately close all file handles. This closes `issue #3`_.
-        
-        * Added compatibility with Subversion 1.6. This references `issue #1`_.
-        
-        pkg_resources
-        =============
-        
-        * Avoid a call to /usr/bin/sw_vers on OSX and use the official platform API
-          instead. Based on a patch from ronaldoussoren. This closes `issue #5`_.
-        
-        * Fixed a SandboxViolation for mkdir that could occur in certain cases.
-          This closes `issue #13`_.
-        
-        * Allow to find_on_path on systems with tight permissions to fail gracefully.
-          This closes `issue #9`_.
-        
-        * Corrected inconsistency between documentation and code of add_entry.
-          This closes `issue #8`_.
-        
-        * Immediately close all file handles. This closes `issue #3`_.
-        
-        easy_install
-        ============
-        
-        * Immediately close all file handles. This closes `issue #3`_.
-        
-        
-        .. _`Issue #135`: http://bitbucket.org/tarek/distribute/issue/135
-        .. _`Issue #183`: http://bitbucket.org/tarek/distribute/issue/183
-        .. _`Issue #207`: http://bitbucket.org/tarek/distribute/issue/207
-        .. _`Issue #208`: http://bitbucket.org/tarek/distribute/issue/208
-        .. _`Issue #212`: http://bitbucket.org/tarek/distribute/issue/212
-        .. _`Issue #213`: http://bitbucket.org/tarek/distribute/issue/213
-        .. _`Issue #218`: http://bitbucket.org/tarek/distribute/issue/218
-        .. _`Issue #225`: http://bitbucket.org/tarek/distribute/issue/225
-        .. _`Issue #227`: http://bitbucket.org/tarek/distribute/issue/227
-        .. _`Issue #231`: http://bitbucket.org/tarek/distribute/issue/231
-        .. _`Issue #237`: http://bitbucket.org/tarek/distribute/issue/237
-        .. _`Issue #238`: http://bitbucket.org/tarek/distribute/issue/238
-        .. _`Issue #239`: http://bitbucket.org/tarek/distribute/issue/239
-        .. _`Issue #240`: http://bitbucket.org/tarek/distribute/issue/240
-        .. _`Issue #241`: http://bitbucket.org/tarek/distribute/issue/241
-        .. _`Issue #243`: http://bitbucket.org/tarek/distribute/issue/243
-        .. _`Issue #244`: http://bitbucket.org/tarek/distribute/issue/244
-        .. _`Issue #249`: http://bitbucket.org/tarek/distribute/issue/249
-        .. _`Issue #258`: http://bitbucket.org/tarek/distribute/issue/258
-        .. _`Issue #260`: http://bitbucket.org/tarek/distribute/issue/260
-        .. _`Issue #262`: http://bitbucket.org/tarek/distribute/issue/262
-        .. _`Issue #269`: http://bitbucket.org/tarek/distribute/issue/269
-        .. _`Issue #272`: http://bitbucket.org/tarek/distribute/issue/272
-        .. _`Issue #273`: http://bitbucket.org/tarek/distribute/issue/273
-        .. _`Issue #283`: http://bitbucket.org/tarek/distribute/issue/283
-        .. _`Issue #294`: http://bitbucket.org/tarek/distribute/issue/294
-        .. _`Issue #299`: http://bitbucket.org/tarek/distribute/issue/299
-        .. _`Issue #301`: http://bitbucket.org/tarek/distribute/issue/301
-        .. _`Issue #303`: http://bitbucket.org/tarek/distribute/issue/303
-        .. _`Issue #304`: http://bitbucket.org/tarek/distribute/issue/304
-        .. _`Issue #305`: http://bitbucket.org/tarek/distribute/issue/305
-        .. _`Issue #306`: http://bitbucket.org/tarek/distribute/issue/306
-        .. _`Issue #307`: http://bitbucket.org/tarek/distribute/issue/307
-        .. _`Issue #310`: http://bitbucket.org/tarek/distribute/issue/310
-        .. _`Issue #311`: http://bitbucket.org/tarek/distribute/issue/311
-        .. _`Issue #313`: http://bitbucket.org/tarek/distribute/issue/313
-        .. _`Issue #314`: http://bitbucket.org/tarek/distribute/issue/314
-        .. _`Issue #320`: http://bitbucket.org/tarek/distribute/issue/320
-        .. _`Issue #323`: http://bitbucket.org/tarek/distribute/issue/323
-        .. _`Issue #326`: http://bitbucket.org/tarek/distribute/issue/326
-        .. _`Issue #327`: http://bitbucket.org/tarek/distribute/issue/327
-        .. _`Issue #328`: http://bitbucket.org/tarek/distribute/issue/328
-        .. _`Issue #329`: http://bitbucket.org/tarek/distribute/issue/329
-        .. _`Issue #334`: http://bitbucket.org/tarek/distribute/issue/334
-        .. _`Issue #335`: http://bitbucket.org/tarek/distribute/issue/335
-        .. _`Issue #336`: http://bitbucket.org/tarek/distribute/issue/336
-        .. _`Issue #341`: http://bitbucket.org/tarek/distribute/issue/341
-        .. _`Issue 100`: http://bitbucket.org/tarek/distribute/issue/100
-        .. _`Issue 101`: http://bitbucket.org/tarek/distribute/issue/101
-        .. _`Issue 103`: http://bitbucket.org/tarek/distribute/issue/103
-        .. _`Issue 104`: http://bitbucket.org/tarek/distribute/issue/104
-        .. _`Issue 108`: http://bitbucket.org/tarek/distribute/issue/108
-        .. _`Issue 11`: http://bitbucket.org/tarek/distribute/issue/11
-        .. _`Issue 112`: http://bitbucket.org/tarek/distribute/issue/112
-        .. _`Issue 121`: http://bitbucket.org/tarek/distribute/issue/121
-        .. _`Issue 133`: http://bitbucket.org/tarek/distribute/issue/133
-        .. _`Issue 134`: http://bitbucket.org/tarek/distribute/issue/134
-        .. _`Issue 138`: http://bitbucket.org/tarek/distribute/issue/138
-        .. _`Issue 143`: http://bitbucket.org/tarek/distribute/issue/143
-        .. _`Issue 146`: http://bitbucket.org/tarek/distribute/issue/146
-        .. _`Issue 147`: http://bitbucket.org/tarek/distribute/issue/147
-        .. _`Issue 149`: http://bitbucket.org/tarek/distribute/issue/149
-        .. _`Issue 15`: http://bitbucket.org/tarek/distribute/issue/15
-        .. _`Issue 150`: http://bitbucket.org/tarek/distribute/issue/150
-        .. _`Issue 160`: http://bitbucket.org/tarek/distribute/issue/160
-        .. _`Issue 163`: http://bitbucket.org/tarek/distribute/issue/163
-        .. _`Issue 170`: http://bitbucket.org/tarek/distribute/issue/170
-        .. _`Issue 171`: http://bitbucket.org/tarek/distribute/issue/171
-        .. _`Issue 174`: http://bitbucket.org/tarek/distribute/issue/174
-        .. _`Issue 192`: http://bitbucket.org/tarek/distribute/issue/192
-        .. _`Issue 193`: http://bitbucket.org/tarek/distribute/issue/193
-        .. _`Issue 195`: http://bitbucket.org/tarek/distribute/issue/195
-        .. _`Issue 196`: http://bitbucket.org/tarek/distribute/issue/196
-        .. _`Issue 200`: http://bitbucket.org/tarek/distribute/issue/200
-        .. _`Issue 204`: http://bitbucket.org/tarek/distribute/issue/204
-        .. _`Issue 205`: http://bitbucket.org/tarek/distribute/issue/205
-        .. _`Issue 206`: http://bitbucket.org/tarek/distribute/issue/206
-        .. _`Issue 21`: http://bitbucket.org/tarek/distribute/issue/21
-        .. _`Issue 210`: http://bitbucket.org/tarek/distribute/issue/210
-        .. _`Issue 58`: http://bitbucket.org/tarek/distribute/issue/58
-        .. _`Issue 64`: http://bitbucket.org/tarek/distribute/issue/64
-        .. _`Issue 65`: http://bitbucket.org/tarek/distribute/issue/65
-        .. _`Issue 67`: http://bitbucket.org/tarek/distribute/issue/67
-        .. _`Issue 70`: http://bitbucket.org/tarek/distribute/issue/70
-        .. _`Issue 72`: http://bitbucket.org/tarek/distribute/issue/72
-        .. _`Issue 74`: http://bitbucket.org/tarek/distribute/issue/74
-        .. _`Issue 80`: http://bitbucket.org/tarek/distribute/issue/80
-        .. _`Issue 86`: http://bitbucket.org/tarek/distribute/issue/86
-        .. _`Issue 87`: http://bitbucket.org/tarek/distribute/issue/87
-        .. _`Issue 89`: http://bitbucket.org/tarek/distribute/issue/89
-        .. _`Issue 90`: http://bitbucket.org/tarek/distribute/issue/90
-        .. _`Issue 92`: http://bitbucket.org/tarek/distribute/issue/92
-        .. _`Issue 93`: http://bitbucket.org/tarek/distribute/issue/93
-        .. _`Issue 99`: http://bitbucket.org/tarek/distribute/issue/99
-        .. _`issue
-          449`: http://bitbucket.org/tarek/distribute/issue/449
-        .. _`issue #1`: http://bitbucket.org/tarek/distribute/issue/1
-        .. _`issue #10`: http://bitbucket.org/tarek/distribute/issue/10
-        .. _`issue #12`: http://bitbucket.org/tarek/distribute/issue/12
-        .. _`issue #13`: http://bitbucket.org/tarek/distribute/issue/13
-        .. _`issue #16`: http://bitbucket.org/tarek/distribute/issue/16
-        .. _`issue #18`: http://bitbucket.org/tarek/distribute/issue/18
-        .. _`issue #3`: http://bitbucket.org/tarek/distribute/issue/3
-        .. _`issue #31`: http://bitbucket.org/tarek/distribute/issue/31
-        .. _`issue #40`: http://bitbucket.org/tarek/distribute/issue/40
-        .. _`issue #49`: http://bitbucket.org/tarek/distribute/issue/49
-        .. _`issue #5`: http://bitbucket.org/tarek/distribute/issue/5
-        .. _`issue #50`: http://bitbucket.org/tarek/distribute/issue/50
-        .. _`issue #52`: http://bitbucket.org/tarek/distribute/issue/52
-        .. _`issue #56`: http://bitbucket.org/tarek/distribute/issue/56
-        .. _`issue #6`: http://bitbucket.org/tarek/distribute/issue/6
-        .. _`issue #7`: http://bitbucket.org/tarek/distribute/issue/7
-        .. _`issue #8`: http://bitbucket.org/tarek/distribute/issue/8
-        .. _`issue #9`: http://bitbucket.org/tarek/distribute/issue/9
-        .. _`issue1980`: http://bitbucket.org/tarek/distribute/issue/1980
-        .. _`issue1981`: http://bitbucket.org/tarek/distribute/issue/1981
-        .. _`issue2`: http://bitbucket.org/tarek/distribute/issue/2
-        .. _`issue20`: http://bitbucket.org/tarek/distribute/issue/20
-        .. _`issue33`: http://bitbucket.org/tarek/distribute/issue/33
-        .. _`issue39`: http://bitbucket.org/tarek/distribute/issue/39
-        .. _`issue40`: http://bitbucket.org/tarek/distribute/issue/40
-        .. _`issue41`: http://bitbucket.org/tarek/distribute/issue/41
-        .. _`issue44`: http://bitbucket.org/tarek/distribute/issue/44
-        
-        
-Keywords: CPAN PyPI distutils eggs package management
-Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: Python Software Foundation License
-Classifier: License :: OSI Approved :: Zope Public License
-Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python :: 2.4
-Classifier: Programming Language :: Python :: 2.5
-Classifier: Programming Language :: Python :: 2.6
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.1
-Classifier: Programming Language :: Python :: 3.2
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Classifier: Topic :: System :: Archiving :: Packaging
-Classifier: Topic :: System :: Systems Administration
-Classifier: Topic :: Utilities
diff --git a/vendor/distribute-0.6.34/README.txt b/vendor/distribute-0.6.34/README.txt
deleted file mode 100644
index 0603ba47..00000000
--- a/vendor/distribute-0.6.34/README.txt
+++ /dev/null
@@ -1,228 +0,0 @@
-===============================
-Installing and Using Distribute
-===============================
-
-.. contents:: **Table of Contents**
-
------------
-Disclaimers
------------
-
-About the fork
-==============
-
-`Distribute` is a fork of the `Setuptools` project.
-
-Distribute is intended to replace Setuptools as the standard method
-for working with Python module distributions.
-
-The fork has two goals:
-
-- Providing a backward compatible version to replace Setuptools
-  and make all distributions that depend on Setuptools work as
-  before, but with less bugs and behaviorial issues.
-
-  This work is done in the 0.6.x series.
-
-  Starting with version 0.6.2, Distribute supports Python 3.
-  Installing and using distribute for Python 3 code works exactly
-  the same as for Python 2 code, but Distribute also helps you to support
-  Python 2 and Python 3 from the same source code by letting you run 2to3
-  on the code as a part of the build process, by setting the keyword parameter
-  ``use_2to3`` to True. See http://packages.python.org/distribute for more
-  information.
-
-- Refactoring the code, and releasing it in several distributions.
-  This work is being done in the 0.7.x series but not yet released.
-
-The roadmap is still evolving, and the page that is up-to-date is
-located at : `http://packages.python.org/distribute/roadmap`.
-
-If you install `Distribute` and want to switch back for any reason to
-`Setuptools`, get to the `Uninstallation instructions`_ section.
-
-More documentation
-==================
-
-You can get more information in the Sphinx-based documentation, located
-at http://packages.python.org/distribute. This documentation includes the old
-Setuptools documentation that is slowly replaced, and brand new content.
-
-About the installation process
-==============================
-
-The `Distribute` installer modifies your installation by de-activating an
-existing installation of `Setuptools` in a bootstrap process. This process
-has been tested in various installation schemes and contexts but in case of a
-bug during this process your Python installation might be left in a broken
-state. Since all modified files and directories are copied before the
-installation starts, you will be able to get back to a normal state by reading
-the instructions in the `Uninstallation instructions`_ section.
-
-In any case, it is recommended to save you `site-packages` directory before
-you start the installation of `Distribute`.
-
--------------------------
-Installation Instructions
--------------------------
-
-Distribute is only released as a source distribution.
-
-It can be installed using pip, and can be done so with the source tarball,
-or by using the ``distribute_setup.py`` script provided online.
-
-``distribute_setup.py`` is the simplest and preferred way on all systems.
-
-distribute_setup.py
-===================
-
-Download
-`distribute_setup.py <http://python-distribute.org/distribute_setup.py>`_
-and execute it, using the Python interpreter of your choice.
-
-If your shell has the ``curl`` program you can do::
-
-    $ curl -O http://python-distribute.org/distribute_setup.py
-    $ python distribute_setup.py
-
-Notice this file is also provided in the source release.
-
-pip
-===
-
-Run easy_install or pip::
-
-    $ pip install distribute
-
-Source installation
-===================
-
-Download the source tarball, uncompress it, then run the install command::
-
-    $ curl -O http://pypi.python.org/packages/source/d/distribute/distribute-0.6.34.tar.gz
-    $ tar -xzvf distribute-0.6.34.tar.gz
-    $ cd distribute-0.6.34
-    $ python setup.py install
-
----------------------------
-Uninstallation Instructions
----------------------------
-
-Like other distutils-based distributions, Distribute doesn't provide an
-uninstaller yet. It's all done manually! We are all waiting for PEP 376
-support in Python.
-
-Distribute is installed in three steps:
-
-1. it gets out of the way an existing installation of Setuptools
-2. it installs a `fake` setuptools installation
-3. it installs distribute
-
-Distribute can be removed like this:
-
-- remove the ``distribute*.egg`` file located in your site-packages directory
-- remove the ``setuptools.pth`` file located in you site-packages directory
-- remove the easy_install script located in you ``sys.prefix/bin`` directory
-- remove the ``setuptools*.egg`` directory located in your site-packages directory,
-  if any.
-
-If you want to get back to setuptools:
-
-- reinstall setuptools using its instruction.
-
-Lastly:
-
-- remove the *.OLD.* directory located in your site-packages directory if any,
-  **once you have checked everything was working correctly again**.
-
--------------------------
-Quick help for developers
--------------------------
-
-To create an egg which is compatible with Distribute, use the same
-practice as with Setuptools, e.g.::
-
-    from setuptools import setup
-
-    setup(...
-    )
-
-To use `pkg_resources` to access data files in the egg, you should
-require the Setuptools distribution explicitly::
-
-    from setuptools import setup
-
-    setup(...
-        install_requires=['setuptools']
-    )
-
-Only if you need Distribute-specific functionality should you depend
-on it explicitly. In this case, replace the Setuptools dependency::
-
-    from setuptools import setup
-
-    setup(...
-        install_requires=['distribute']
-    )
-
------------
-Install FAQ
------------
-
-- **Why is Distribute wrapping my Setuptools installation?**
-
-   Since Distribute is a fork, and since it provides the same package
-   and modules, it renames the existing Setuptools egg and inserts a
-   new one which merely wraps the Distribute code. This way, full
-   backwards compatibility is kept for packages which rely on the
-   Setuptools modules.
-
-   At the same time, packages can meet their dependency on Setuptools
-   without actually installing it (which would disable Distribute).
-
-- **How does Distribute interact with virtualenv?**
-
-  Everytime you create a virtualenv it will install setuptools by default.
-  You either need to re-install Distribute in it right after or pass the
-  ``--distribute`` option when creating it.
-
-  Once installed, your virtualenv will use Distribute transparently.
-
-  Although, if you have Setuptools installed in your system-wide Python,
-  and if the virtualenv you are in was generated without the `--no-site-packages`
-  option, the Distribute installation will stop.
-
-  You need in this case to build a virtualenv with the `--no-site-packages`
-  option or to install `Distribute` globally.
-
-- **How does Distribute interacts with zc.buildout?**
-
-  You can use Distribute in your zc.buildout, with the --distribute option,
-  starting at zc.buildout 1.4.2::
-
-  $ python bootstrap.py --distribute
-
-  For previous zc.buildout versions, *the only thing* you need to do
-  is use the bootstrap at `http://python-distribute.org/bootstrap.py`.  Run
-  that bootstrap and ``bin/buildout`` (and all other buildout-generated
-  scripts) will transparently use distribute instead of setuptools.  You do
-  not need a specific buildout release.
-
-  A shared eggs directory is no problem (since 0.6.6): the setuptools egg is
-  left in place unmodified.  So other buildouts that do not yet use the new
-  bootstrap continue to work just fine.  And there is no need to list
-  ``distribute`` somewhere in your eggs: using the bootstrap is enough.
-
-  The source code for the bootstrap script is located at
-  `http://bitbucket.org/tarek/buildout-distribute`.
-
-
-
------------------------------
-Feedback and getting involved
------------------------------
-
-- Mailing list: http://mail.python.org/mailman/listinfo/distutils-sig
-- Issue tracker: http://bitbucket.org/tarek/distribute/issues/
-- Code Repository: http://bitbucket.org/tarek/distribute
-
diff --git a/vendor/distribute-0.6.34/_markerlib/__init__.py b/vendor/distribute-0.6.34/_markerlib/__init__.py
deleted file mode 100644
index e2b237b1..00000000
--- a/vendor/distribute-0.6.34/_markerlib/__init__.py
+++ /dev/null
@@ -1,16 +0,0 @@
-try:
-    import ast
-    from _markerlib.markers import default_environment, compile, interpret
-except ImportError:
-    if 'ast' in globals():
-        raise
-    def default_environment():
-        return {}
-    def compile(marker):
-        def marker_fn(environment=None, override=None):
-            # 'empty markers are True' heuristic won't install extra deps.
-            return not marker.strip()
-        marker_fn.__doc__ = marker
-        return marker_fn
-    def interpret(marker, environment=None, override=None):
-        return compile(marker)()
diff --git a/vendor/distribute-0.6.34/_markerlib/markers.py b/vendor/distribute-0.6.34/_markerlib/markers.py
deleted file mode 100644
index c93d7f3b..00000000
--- a/vendor/distribute-0.6.34/_markerlib/markers.py
+++ /dev/null
@@ -1,115 +0,0 @@
-# -*- coding: utf-8 -*-
-"""Interpret PEP 345 environment markers.
-
-EXPR [in|==|!=|not in] EXPR [or|and] ...
-
-where EXPR belongs to any of those:
-
-    python_version = '%s.%s' % (sys.version_info[0], sys.version_info[1])
-    python_full_version = sys.version.split()[0]
-    os.name = os.name
-    sys.platform = sys.platform
-    platform.version = platform.version()
-    platform.machine = platform.machine()
-    platform.python_implementation = platform.python_implementation()
-    a free string, like '2.6', or 'win32'
-"""
-
-__all__ = ['default_environment', 'compile', 'interpret']
-
-import ast
-import os
-import platform
-import sys
-import weakref
-
-_builtin_compile = compile
-
-try:
-    from platform import python_implementation
-except ImportError:
-    if os.name == "java":
-        # Jython 2.5 has ast module, but not platform.python_implementation() function.
-        def python_implementation():
-            return "Jython"
-    else:
-        raise
-
-
-# restricted set of variables
-_VARS = {'sys.platform': sys.platform,
-         'python_version': '%s.%s' % sys.version_info[:2],
-         # FIXME parsing sys.platform is not reliable, but there is no other
-         # way to get e.g. 2.7.2+, and the PEP is defined with sys.version
-         'python_full_version': sys.version.split(' ', 1)[0],
-         'os.name': os.name,
-         'platform.version': platform.version(),
-         'platform.machine': platform.machine(),
-         'platform.python_implementation': python_implementation(),
-         'extra': None # wheel extension
-        }
-
-def default_environment():
-    """Return copy of default PEP 385 globals dictionary."""
-    return dict(_VARS)
-
-class ASTWhitelist(ast.NodeTransformer):
-    def __init__(self, statement):
-        self.statement = statement # for error messages
-
-    ALLOWED = (ast.Compare, ast.BoolOp, ast.Attribute, ast.Name, ast.Load, ast.Str)
-    # Bool operations
-    ALLOWED += (ast.And, ast.Or)
-    # Comparison operations
-    ALLOWED += (ast.Eq, ast.Gt, ast.GtE, ast.In, ast.Is, ast.IsNot, ast.Lt, ast.LtE, ast.NotEq, ast.NotIn)
-
-    def visit(self, node):
-        """Ensure statement only contains allowed nodes."""
-        if not isinstance(node, self.ALLOWED):
-            raise SyntaxError('Not allowed in environment markers.\n%s\n%s' %
-                               (self.statement,
-                               (' ' * node.col_offset) + '^'))
-        return ast.NodeTransformer.visit(self, node)
-
-    def visit_Attribute(self, node):
-        """Flatten one level of attribute access."""
-        new_node = ast.Name("%s.%s" % (node.value.id, node.attr), node.ctx)
-        return ast.copy_location(new_node, node)
-
-def parse_marker(marker):
-    tree = ast.parse(marker, mode='eval')
-    new_tree = ASTWhitelist(marker).generic_visit(tree)
-    return new_tree
-
-def compile_marker(parsed_marker):
-    return _builtin_compile(parsed_marker, '<environment marker>', 'eval',
-                   dont_inherit=True)
-
-_cache = weakref.WeakValueDictionary()
-
-def compile(marker):
-    """Return compiled marker as a function accepting an environment dict."""
-    try:
-        return _cache[marker]
-    except KeyError:
-        pass
-    if not marker.strip():
-        def marker_fn(environment=None, override=None):
-            """"""
-            return True
-    else:
-        compiled_marker = compile_marker(parse_marker(marker))
-        def marker_fn(environment=None, override=None):
-            """override updates environment"""
-            if override is None:
-                override = {}
-            if environment is None:
-                environment = default_environment()
-            environment.update(override)
-            return eval(compiled_marker, environment)
-    marker_fn.__doc__ = marker
-    _cache[marker] = marker_fn
-    return _cache[marker]
-
-def interpret(marker, environment=None):
-    return compile(marker)(environment)
diff --git a/vendor/distribute-0.6.34/distribute.egg-info/PKG-INFO b/vendor/distribute-0.6.34/distribute.egg-info/PKG-INFO
deleted file mode 100644
index d1c8adfe..00000000
--- a/vendor/distribute-0.6.34/distribute.egg-info/PKG-INFO
+++ /dev/null
@@ -1,868 +0,0 @@
-Metadata-Version: 1.1
-Name: distribute
-Version: 0.6.34
-Summary: Easily download, build, install, upgrade, and uninstall Python packages
-Home-page: http://packages.python.org/distribute
-Author: The fellowship of the packaging
-Author-email: distutils-sig@python.org
-License: PSF or ZPL
-Description: ===============================
-        Installing and Using Distribute
-        ===============================
-        
-        .. contents:: **Table of Contents**
-        
-        -----------
-        Disclaimers
-        -----------
-        
-        About the fork
-        ==============
-        
-        `Distribute` is a fork of the `Setuptools` project.
-        
-        Distribute is intended to replace Setuptools as the standard method
-        for working with Python module distributions.
-        
-        The fork has two goals:
-        
-        - Providing a backward compatible version to replace Setuptools
-          and make all distributions that depend on Setuptools work as
-          before, but with less bugs and behaviorial issues.
-        
-          This work is done in the 0.6.x series.
-        
-          Starting with version 0.6.2, Distribute supports Python 3.
-          Installing and using distribute for Python 3 code works exactly
-          the same as for Python 2 code, but Distribute also helps you to support
-          Python 2 and Python 3 from the same source code by letting you run 2to3
-          on the code as a part of the build process, by setting the keyword parameter
-          ``use_2to3`` to True. See http://packages.python.org/distribute for more
-          information.
-        
-        - Refactoring the code, and releasing it in several distributions.
-          This work is being done in the 0.7.x series but not yet released.
-        
-        The roadmap is still evolving, and the page that is up-to-date is
-        located at : `http://packages.python.org/distribute/roadmap`.
-        
-        If you install `Distribute` and want to switch back for any reason to
-        `Setuptools`, get to the `Uninstallation instructions`_ section.
-        
-        More documentation
-        ==================
-        
-        You can get more information in the Sphinx-based documentation, located
-        at http://packages.python.org/distribute. This documentation includes the old
-        Setuptools documentation that is slowly replaced, and brand new content.
-        
-        About the installation process
-        ==============================
-        
-        The `Distribute` installer modifies your installation by de-activating an
-        existing installation of `Setuptools` in a bootstrap process. This process
-        has been tested in various installation schemes and contexts but in case of a
-        bug during this process your Python installation might be left in a broken
-        state. Since all modified files and directories are copied before the
-        installation starts, you will be able to get back to a normal state by reading
-        the instructions in the `Uninstallation instructions`_ section.
-        
-        In any case, it is recommended to save you `site-packages` directory before
-        you start the installation of `Distribute`.
-        
-        -------------------------
-        Installation Instructions
-        -------------------------
-        
-        Distribute is only released as a source distribution.
-        
-        It can be installed using pip, and can be done so with the source tarball,
-        or by using the ``distribute_setup.py`` script provided online.
-        
-        ``distribute_setup.py`` is the simplest and preferred way on all systems.
-        
-        distribute_setup.py
-        ===================
-        
-        Download
-        `distribute_setup.py <http://python-distribute.org/distribute_setup.py>`_
-        and execute it, using the Python interpreter of your choice.
-        
-        If your shell has the ``curl`` program you can do::
-        
-            $ curl -O http://python-distribute.org/distribute_setup.py
-            $ python distribute_setup.py
-        
-        Notice this file is also provided in the source release.
-        
-        pip
-        ===
-        
-        Run easy_install or pip::
-        
-            $ pip install distribute
-        
-        Source installation
-        ===================
-        
-        Download the source tarball, uncompress it, then run the install command::
-        
-            $ curl -O http://pypi.python.org/packages/source/d/distribute/distribute-0.6.34.tar.gz
-            $ tar -xzvf distribute-0.6.34.tar.gz
-            $ cd distribute-0.6.34
-            $ python setup.py install
-        
-        ---------------------------
-        Uninstallation Instructions
-        ---------------------------
-        
-        Like other distutils-based distributions, Distribute doesn't provide an
-        uninstaller yet. It's all done manually! We are all waiting for PEP 376
-        support in Python.
-        
-        Distribute is installed in three steps:
-        
-        1. it gets out of the way an existing installation of Setuptools
-        2. it installs a `fake` setuptools installation
-        3. it installs distribute
-        
-        Distribute can be removed like this:
-        
-        - remove the ``distribute*.egg`` file located in your site-packages directory
-        - remove the ``setuptools.pth`` file located in you site-packages directory
-        - remove the easy_install script located in you ``sys.prefix/bin`` directory
-        - remove the ``setuptools*.egg`` directory located in your site-packages directory,
-          if any.
-        
-        If you want to get back to setuptools:
-        
-        - reinstall setuptools using its instruction.
-        
-        Lastly:
-        
-        - remove the *.OLD.* directory located in your site-packages directory if any,
-          **once you have checked everything was working correctly again**.
-        
-        -------------------------
-        Quick help for developers
-        -------------------------
-        
-        To create an egg which is compatible with Distribute, use the same
-        practice as with Setuptools, e.g.::
-        
-            from setuptools import setup
-        
-            setup(...
-            )
-        
-        To use `pkg_resources` to access data files in the egg, you should
-        require the Setuptools distribution explicitly::
-        
-            from setuptools import setup
-        
-            setup(...
-                install_requires=['setuptools']
-            )
-        
-        Only if you need Distribute-specific functionality should you depend
-        on it explicitly. In this case, replace the Setuptools dependency::
-        
-            from setuptools import setup
-        
-            setup(...
-                install_requires=['distribute']
-            )
-        
-        -----------
-        Install FAQ
-        -----------
-        
-        - **Why is Distribute wrapping my Setuptools installation?**
-        
-           Since Distribute is a fork, and since it provides the same package
-           and modules, it renames the existing Setuptools egg and inserts a
-           new one which merely wraps the Distribute code. This way, full
-           backwards compatibility is kept for packages which rely on the
-           Setuptools modules.
-        
-           At the same time, packages can meet their dependency on Setuptools
-           without actually installing it (which would disable Distribute).
-        
-        - **How does Distribute interact with virtualenv?**
-        
-          Everytime you create a virtualenv it will install setuptools by default.
-          You either need to re-install Distribute in it right after or pass the
-          ``--distribute`` option when creating it.
-        
-          Once installed, your virtualenv will use Distribute transparently.
-        
-          Although, if you have Setuptools installed in your system-wide Python,
-          and if the virtualenv you are in was generated without the `--no-site-packages`
-          option, the Distribute installation will stop.
-        
-          You need in this case to build a virtualenv with the `--no-site-packages`
-          option or to install `Distribute` globally.
-        
-        - **How does Distribute interacts with zc.buildout?**
-        
-          You can use Distribute in your zc.buildout, with the --distribute option,
-          starting at zc.buildout 1.4.2::
-        
-          $ python bootstrap.py --distribute
-        
-          For previous zc.buildout versions, *the only thing* you need to do
-          is use the bootstrap at `http://python-distribute.org/bootstrap.py`.  Run
-          that bootstrap and ``bin/buildout`` (and all other buildout-generated
-          scripts) will transparently use distribute instead of setuptools.  You do
-          not need a specific buildout release.
-        
-          A shared eggs directory is no problem (since 0.6.6): the setuptools egg is
-          left in place unmodified.  So other buildouts that do not yet use the new
-          bootstrap continue to work just fine.  And there is no need to list
-          ``distribute`` somewhere in your eggs: using the bootstrap is enough.
-        
-          The source code for the bootstrap script is located at
-          `http://bitbucket.org/tarek/buildout-distribute`.
-        
-        
-        
-        -----------------------------
-        Feedback and getting involved
-        -----------------------------
-        
-        - Mailing list: http://mail.python.org/mailman/listinfo/distutils-sig
-        - Issue tracker: http://bitbucket.org/tarek/distribute/issues/
-        - Code Repository: http://bitbucket.org/tarek/distribute
-        
-        =======
-        CHANGES
-        =======
-        
-        ----------
-        Unreleased
-        ----------
-        
-        + `Issue #341`_: 0.6.33 fails to build under python 2.4
-        
-        ------
-        0.6.33
-        ------
-        
-        * Fix 2 errors with Jython 2.5.
-        * Fix 1 failure with Jython 2.5 and 2.7.
-        * Disable workaround for Jython scripts on Linux systems.
-        * `Issue #336`_: `setup.py` no longer masks failure exit code when tests fail.
-        * Fix issue in pkg_resources where try/except around a platform-dependent
-          import would trigger hook load failures on Mercurial. See pull request 32
-          for details.
-        * `Issue #341`_: Fix a ResourceWarning.
-        
-        ------
-        0.6.32
-        ------
-        
-        * Fix test suite with Python 2.6.
-        * Fix some DeprecationWarnings and ResourceWarnings.
-        * `Issue #335`_: Backed out `setup_requires` superceding installed requirements
-          until regression can be addressed.
-        
-        ------
-        0.6.31
-        ------
-        
-        * `Issue #303`_: Make sure the manifest only ever contains UTF-8 in Python 3.
-        * `Issue #329`_: Properly close files created by tests for compatibility with
-          Jython.
-        * Work around Jython bugs `#1980 <http://bugs.jython.org/`issue1980`_>`_ and
-          `#1981 <http://bugs.jython.org/`issue1981`_>`_.
-        * `Issue #334`_: Provide workaround for packages that reference `sys.__stdout__`
-          such as numpy does. This change should address
-          `virtualenv #359 <https://github.com/pypa/virtualenv/issues/359>`_ as long
-          as the system encoding is UTF-8 or the IO encoding is specified in the
-          environment, i.e.::
-        
-             PYTHONIOENCODING=utf8 pip install numpy
-        
-        * Fix for encoding issue when installing from Windows executable on Python 3.
-        * `Issue #323`_: Allow `setup_requires` requirements to supercede installed
-          requirements. Added some new keyword arguments to existing pkg_resources
-          methods. Also had to updated how __path__ is handled for namespace packages
-          to ensure that when a new egg distribution containing a namespace package is
-          placed on sys.path, the entries in __path__ are found in the same order they
-          would have been in had that egg been on the path when pkg_resources was
-          first imported.
-        
-        ------
-        0.6.30
-        ------
-        
-        * `Issue #328`_: Clean up temporary directories in distribute_setup.py.
-        * Fix fatal bug in distribute_setup.py.
-        
-        ------
-        0.6.29
-        ------
-        
-        * Pull Request #14: Honor file permissions in zip files.
-        * `Issue #327`_: Merged pull request #24 to fix a dependency problem with pip.
-        * Merged pull request #23 to fix https://github.com/pypa/virtualenv/issues/301.
-        * If Sphinx is installed, the `upload_docs` command now runs `build_sphinx`
-          to produce uploadable documentation.
-        * `Issue #326`_: `upload_docs` provided mangled auth credentials under Python 3.
-        * `Issue #320`_: Fix check for "createable" in distribute_setup.py.
-        * `Issue #305`_: Remove a warning that was triggered during normal operations.
-        * `Issue #311`_: Print metadata in UTF-8 independent of platform.
-        * `Issue #303`_: Read manifest file with UTF-8 encoding under Python 3.
-        * `Issue #301`_: Allow to run tests of namespace packages when using 2to3.
-        * `Issue #304`_: Prevent import loop in site.py under Python 3.3.
-        * `Issue #283`_: Reenable scanning of `*.pyc` / `*.pyo` files on Python 3.3.
-        * `Issue #299`_: The develop command didn't work on Python 3, when using 2to3,
-          as the egg link would go to the Python 2 source. Linking to the 2to3'd code
-          in build/lib makes it work, although you will have to rebuild the module
-          before testing it.
-        * `Issue #306`_: Even if 2to3 is used, we build in-place under Python 2.
-        * `Issue #307`_: Prints the full path when .svn/entries is broken.
-        * `Issue #313`_: Support for sdist subcommands (Python 2.7)
-        * `Issue #314`_: test_local_index() would fail an OS X.
-        * `Issue #310`_: Non-ascii characters in a namespace __init__.py causes errors.
-        * `Issue #218`_: Improved documentation on behavior of `package_data` and
-          `include_package_data`. Files indicated by `package_data` are now included
-          in the manifest.
-        * `distribute_setup.py` now allows a `--download-base` argument for retrieving
-          distribute from a specified location.
-        
-        ------
-        0.6.28
-        ------
-        
-        * `Issue #294`_: setup.py can now be invoked from any directory.
-        * Scripts are now installed honoring the umask.
-        * Added support for .dist-info directories.
-        * `Issue #283`_: Fix and disable scanning of `*.pyc` / `*.pyo` files on
-          Python 3.3.
-        
-        ------
-        0.6.27
-        ------
-        
-        * Support current snapshots of CPython 3.3.
-        * Distribute now recognizes README.rst as a standard, default readme file.
-        * Exclude 'encodings' modules when removing modules from sys.modules.
-          Workaround for #285.
-        * `Issue #231`_: Don't fiddle with system python when used with buildout
-          (bootstrap.py)
-        
-        ------
-        0.6.26
-        ------
-        
-        * `Issue #183`_: Symlinked files are now extracted from source distributions.
-        * `Issue #227`_: Easy_install fetch parameters are now passed during the
-          installation of a source distribution; now fulfillment of setup_requires
-          dependencies will honor the parameters passed to easy_install.
-        
-        ------
-        0.6.25
-        ------
-        
-        * `Issue #258`_: Workaround a cache issue
-        * `Issue #260`_: distribute_setup.py now accepts the --user parameter for
-          Python 2.6 and later.
-        * `Issue #262`_: package_index.open_with_auth no longer throws LookupError
-          on Python 3.
-        * `Issue #269`_: AttributeError when an exception occurs reading Manifest.in
-          on late releases of Python.
-        * `Issue #272`_: Prevent TypeError when namespace package names are unicode
-          and single-install-externally-managed is used. Also fixes PIP `issue
-          449`_.
-        * `Issue #273`_: Legacy script launchers now install with Python2/3 support.
-        
-        ------
-        0.6.24
-        ------
-        
-        * `Issue #249`_: Added options to exclude 2to3 fixers
-        
-        ------
-        0.6.23
-        ------
-        
-        * `Issue #244`_: Fixed a test
-        * `Issue #243`_: Fixed a test
-        * `Issue #239`_: Fixed a test
-        * `Issue #240`_: Fixed a test
-        * `Issue #241`_: Fixed a test
-        * `Issue #237`_: Fixed a test
-        * `Issue #238`_: easy_install now uses 64bit executable wrappers on 64bit Python
-        * `Issue #208`_: Fixed parsed_versions, it now honors post-releases as noted in the documentation
-        * `Issue #207`_: Windows cli and gui wrappers pass CTRL-C to child python process
-        * `Issue #227`_: easy_install now passes its arguments to setup.py bdist_egg
-        * `Issue #225`_: Fixed a NameError on Python 2.5, 2.4
-        
-        ------
-        0.6.21
-        ------
-        
-        * `Issue #225`_: FIxed a regression on py2.4
-        
-        ------
-        0.6.20
-        ------
-        
-        * `Issue #135`_: Include url in warning when processing URLs in package_index.
-        * `Issue #212`_: Fix issue where easy_instal fails on Python 3 on windows installer.
-        * `Issue #213`_: Fix typo in documentation.
-        
-        ------
-        0.6.19
-        ------
-        
-        * `Issue 206`_: AttributeError: 'HTTPMessage' object has no attribute 'getheaders'
-        
-        ------
-        0.6.18
-        ------
-        
-        * `Issue 210`_: Fixed a regression introduced by `Issue 204`_ fix.
-        
-        ------
-        0.6.17
-        ------
-        
-        * Support 'DISTRIBUTE_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT' environment
-          variable to allow to disable installation of easy_install-${version} script.
-        * Support Python >=3.1.4 and >=3.2.1.
-        * `Issue 204`_: Don't try to import the parent of a namespace package in
-          declare_namespace
-        * `Issue 196`_: Tolerate responses with multiple Content-Length headers
-        * `Issue 205`_: Sandboxing doesn't preserve working_set. Leads to setup_requires
-          problems.
-        
-        ------
-        0.6.16
-        ------
-        
-        * Builds sdist gztar even on Windows (avoiding `Issue 193`_).
-        * `Issue 192`_: Fixed metadata omitted on Windows when package_dir
-          specified with forward-slash.
-        * `Issue 195`_: Cython build support.
-        * `Issue 200`_: Issues with recognizing 64-bit packages on Windows.
-        
-        ------
-        0.6.15
-        ------
-        
-        * Fixed typo in bdist_egg
-        * Several issues under Python 3 has been solved.
-        * `Issue 146`_: Fixed missing DLL files after easy_install of windows exe package.
-        
-        ------
-        0.6.14
-        ------
-        
-        * `Issue 170`_: Fixed unittest failure. Thanks to Toshio.
-        * `Issue 171`_: Fixed race condition in unittests cause deadlocks in test suite.
-        * `Issue 143`_: Fixed a lookup issue with easy_install.
-          Thanks to David and Zooko.
-        * `Issue 174`_: Fixed the edit mode when its used with setuptools itself
-        
-        ------
-        0.6.13
-        ------
-        
-        * `Issue 160`_: 2.7 gives ValueError("Invalid IPv6 URL")
-        * `Issue 150`_: Fixed using ~/.local even in a --no-site-packages virtualenv
-        * `Issue 163`_: scan index links before external links, and don't use the md5 when
-          comparing two distributions
-        
-        ------
-        0.6.12
-        ------
-        
-        * `Issue 149`_: Fixed various failures on 2.3/2.4
-        
-        ------
-        0.6.11
-        ------
-        
-        * Found another case of SandboxViolation - fixed
-        * `Issue 15`_ and 48: Introduced a socket timeout of 15 seconds on url openings
-        * Added indexsidebar.html into MANIFEST.in
-        * `Issue 108`_: Fixed TypeError with Python3.1
-        * `Issue 121`_: Fixed --help install command trying to actually install.
-        * `Issue 112`_: Added an os.makedirs so that Tarek's solution will work.
-        * `Issue 133`_: Added --no-find-links to easy_install
-        * Added easy_install --user
-        * `Issue 100`_: Fixed develop --user not taking '.' in PYTHONPATH into account
-        * `Issue 134`_: removed spurious UserWarnings. Patch by VanLindberg
-        * `Issue 138`_: cant_write_to_target error when setup_requires is used.
-        * `Issue 147`_: respect the sys.dont_write_bytecode flag
-        
-        ------
-        0.6.10
-        ------
-        
-        * Reverted change made for the DistributionNotFound exception because
-          zc.buildout uses the exception message to get the name of the
-          distribution.
-        
-        -----
-        0.6.9
-        -----
-        
-        * `Issue 90`_: unknown setuptools version can be added in the working set
-        * `Issue 87`_: setupt.py doesn't try to convert distribute_setup.py anymore
-          Initial Patch by arfrever.
-        * `Issue 89`_: added a side bar with a download link to the doc.
-        * `Issue 86`_: fixed missing sentence in pkg_resources doc.
-        * Added a nicer error message when a DistributionNotFound is raised.
-        * `Issue 80`_: test_develop now works with Python 3.1
-        * `Issue 93`_: upload_docs now works if there is an empty sub-directory.
-        * `Issue 70`_: exec bit on non-exec files
-        * `Issue 99`_: now the standalone easy_install command doesn't uses a
-          "setup.cfg" if any exists in the working directory. It will use it
-          only if triggered by ``install_requires`` from a setup.py call
-          (install, develop, etc).
-        * `Issue 101`_: Allowing ``os.devnull`` in Sandbox
-        * `Issue 92`_: Fixed the "no eggs" found error with MacPort
-          (platform.mac_ver() fails)
-        * `Issue 103`_: test_get_script_header_jython_workaround not run
-          anymore under py3 with C or POSIX local. Contributed by Arfrever.
-        * `Issue 104`_: remvoved the assertion when the installation fails,
-          with a nicer message for the end user.
-        * `Issue 100`_: making sure there's no SandboxViolation when
-          the setup script patches setuptools.
-        
-        -----
-        0.6.8
-        -----
-        
-        * Added "check_packages" in dist. (added in Setuptools 0.6c11)
-        * Fixed the DONT_PATCH_SETUPTOOLS state.
-        
-        -----
-        0.6.7
-        -----
-        
-        * `Issue 58`_: Added --user support to the develop command
-        * `Issue 11`_: Generated scripts now wrap their call to the script entry point
-          in the standard "if name == 'main'"
-        * Added the 'DONT_PATCH_SETUPTOOLS' environment variable, so virtualenv
-          can drive an installation that doesn't patch a global setuptools.
-        * Reviewed unladen-swallow specific change from
-          http://code.google.com/p/unladen-swallow/source/detail?spec=svn875&r=719
-          and determined that it no longer applies. Distribute should work fine with
-          Unladen Swallow 2009Q3.
-        * `Issue 21`_: Allow PackageIndex.open_url to gracefully handle all cases of a
-          httplib.HTTPException instead of just InvalidURL and BadStatusLine.
-        * Removed virtual-python.py from this distribution and updated documentation
-          to point to the actively maintained virtualenv instead.
-        * `Issue 64`_: use_setuptools no longer rebuilds the distribute egg every
-          time it is run
-        * use_setuptools now properly respects the requested version
-        * use_setuptools will no longer try to import a distribute egg for the
-          wrong Python version
-        * `Issue 74`_: no_fake should be True by default.
-        * `Issue 72`_: avoid a bootstrapping issue with easy_install -U
-        
-        -----
-        0.6.6
-        -----
-        
-        * Unified the bootstrap file so it works on both py2.x and py3k without 2to3
-          (patch by Holger Krekel)
-        
-        -----
-        0.6.5
-        -----
-        
-        * `Issue 65`_: cli.exe and gui.exe are now generated at build time,
-          depending on the platform in use.
-        
-        * `Issue 67`_: Fixed doc typo (PEP 381/382)
-        
-        * Distribute no longer shadows setuptools if we require a 0.7-series
-          setuptools.  And an error is raised when installing a 0.7 setuptools with
-          distribute.
-        
-        * When run from within buildout, no attempt is made to modify an existing
-          setuptools egg, whether in a shared egg directory or a system setuptools.
-        
-        * Fixed a hole in sandboxing allowing builtin file to write outside of
-          the sandbox.
-        
-        -----
-        0.6.4
-        -----
-        
-        * Added the generation of `distribute_setup_3k.py` during the release.
-          This closes `issue #52`_.
-        
-        * Added an upload_docs command to easily upload project documentation to
-          PyPI's http://packages.python.org. This close `issue #56`_.
-        
-        * Fixed a bootstrap bug on the use_setuptools() API.
-        
-        -----
-        0.6.3
-        -----
-        
-        setuptools
-        ==========
-        
-        * Fixed a bunch of calls to file() that caused crashes on Python 3.
-        
-        bootstrapping
-        =============
-        
-        * Fixed a bug in sorting that caused bootstrap to fail on Python 3.
-        
-        -----
-        0.6.2
-        -----
-        
-        setuptools
-        ==========
-        
-        * Added Python 3 support; see docs/python3.txt.
-          This closes http://bugs.python.org/setuptools/`issue39`_.
-        
-        * Added option to run 2to3 automatically when installing on Python 3.
-          This closes `issue #31`_.
-        
-        * Fixed invalid usage of requirement.parse, that broke develop -d.
-          This closes http://bugs.python.org/setuptools/`issue44`_.
-        
-        * Fixed script launcher for 64-bit Windows.
-          This closes http://bugs.python.org/setuptools/`issue2`_.
-        
-        * KeyError when compiling extensions.
-          This closes http://bugs.python.org/setuptools/`issue41`_.
-        
-        bootstrapping
-        =============
-        
-        * Fixed bootstrap not working on Windows. This closes `issue #49`_.
-        
-        * Fixed 2.6 dependencies. This closes `issue #50`_.
-        
-        * Make sure setuptools is patched when running through easy_install
-          This closes http://bugs.python.org/setuptools/`issue40`_.
-        
-        -----
-        0.6.1
-        -----
-        
-        setuptools
-        ==========
-        
-        * package_index.urlopen now catches BadStatusLine and malformed url errors.
-          This closes `issue #16`_ and `issue #18`_.
-        
-        * zip_ok is now False by default. This closes
-          http://bugs.python.org/setuptools/`issue33`_.
-        
-        * Fixed invalid URL error catching. http://bugs.python.org/setuptools/`issue20`_.
-        
-        * Fixed invalid bootstraping with easy_install installation (`issue #40`_).
-          Thanks to Florian Schulze for the help.
-        
-        * Removed buildout/bootstrap.py. A new repository will create a specific
-          bootstrap.py script.
-        
-        
-        bootstrapping
-        =============
-        
-        * The boostrap process leave setuptools alone if detected in the system
-          and --root or --prefix is provided, but is not in the same location.
-          This closes `issue #10`_.
-        
-        ---
-        0.6
-        ---
-        
-        setuptools
-        ==========
-        
-        * Packages required at build time where not fully present at install time.
-          This closes `issue #12`_.
-        
-        * Protected against failures in tarfile extraction. This closes `issue #10`_.
-        
-        * Made Jython api_tests.txt doctest compatible. This closes `issue #7`_.
-        
-        * sandbox.py replaced builtin type file with builtin function open. This
-          closes `issue #6`_.
-        
-        * Immediately close all file handles. This closes `issue #3`_.
-        
-        * Added compatibility with Subversion 1.6. This references `issue #1`_.
-        
-        pkg_resources
-        =============
-        
-        * Avoid a call to /usr/bin/sw_vers on OSX and use the official platform API
-          instead. Based on a patch from ronaldoussoren. This closes `issue #5`_.
-        
-        * Fixed a SandboxViolation for mkdir that could occur in certain cases.
-          This closes `issue #13`_.
-        
-        * Allow to find_on_path on systems with tight permissions to fail gracefully.
-          This closes `issue #9`_.
-        
-        * Corrected inconsistency between documentation and code of add_entry.
-          This closes `issue #8`_.
-        
-        * Immediately close all file handles. This closes `issue #3`_.
-        
-        easy_install
-        ============
-        
-        * Immediately close all file handles. This closes `issue #3`_.
-        
-        
-        .. _`Issue #135`: http://bitbucket.org/tarek/distribute/issue/135
-        .. _`Issue #183`: http://bitbucket.org/tarek/distribute/issue/183
-        .. _`Issue #207`: http://bitbucket.org/tarek/distribute/issue/207
-        .. _`Issue #208`: http://bitbucket.org/tarek/distribute/issue/208
-        .. _`Issue #212`: http://bitbucket.org/tarek/distribute/issue/212
-        .. _`Issue #213`: http://bitbucket.org/tarek/distribute/issue/213
-        .. _`Issue #218`: http://bitbucket.org/tarek/distribute/issue/218
-        .. _`Issue #225`: http://bitbucket.org/tarek/distribute/issue/225
-        .. _`Issue #227`: http://bitbucket.org/tarek/distribute/issue/227
-        .. _`Issue #231`: http://bitbucket.org/tarek/distribute/issue/231
-        .. _`Issue #237`: http://bitbucket.org/tarek/distribute/issue/237
-        .. _`Issue #238`: http://bitbucket.org/tarek/distribute/issue/238
-        .. _`Issue #239`: http://bitbucket.org/tarek/distribute/issue/239
-        .. _`Issue #240`: http://bitbucket.org/tarek/distribute/issue/240
-        .. _`Issue #241`: http://bitbucket.org/tarek/distribute/issue/241
-        .. _`Issue #243`: http://bitbucket.org/tarek/distribute/issue/243
-        .. _`Issue #244`: http://bitbucket.org/tarek/distribute/issue/244
-        .. _`Issue #249`: http://bitbucket.org/tarek/distribute/issue/249
-        .. _`Issue #258`: http://bitbucket.org/tarek/distribute/issue/258
-        .. _`Issue #260`: http://bitbucket.org/tarek/distribute/issue/260
-        .. _`Issue #262`: http://bitbucket.org/tarek/distribute/issue/262
-        .. _`Issue #269`: http://bitbucket.org/tarek/distribute/issue/269
-        .. _`Issue #272`: http://bitbucket.org/tarek/distribute/issue/272
-        .. _`Issue #273`: http://bitbucket.org/tarek/distribute/issue/273
-        .. _`Issue #283`: http://bitbucket.org/tarek/distribute/issue/283
-        .. _`Issue #294`: http://bitbucket.org/tarek/distribute/issue/294
-        .. _`Issue #299`: http://bitbucket.org/tarek/distribute/issue/299
-        .. _`Issue #301`: http://bitbucket.org/tarek/distribute/issue/301
-        .. _`Issue #303`: http://bitbucket.org/tarek/distribute/issue/303
-        .. _`Issue #304`: http://bitbucket.org/tarek/distribute/issue/304
-        .. _`Issue #305`: http://bitbucket.org/tarek/distribute/issue/305
-        .. _`Issue #306`: http://bitbucket.org/tarek/distribute/issue/306
-        .. _`Issue #307`: http://bitbucket.org/tarek/distribute/issue/307
-        .. _`Issue #310`: http://bitbucket.org/tarek/distribute/issue/310
-        .. _`Issue #311`: http://bitbucket.org/tarek/distribute/issue/311
-        .. _`Issue #313`: http://bitbucket.org/tarek/distribute/issue/313
-        .. _`Issue #314`: http://bitbucket.org/tarek/distribute/issue/314
-        .. _`Issue #320`: http://bitbucket.org/tarek/distribute/issue/320
-        .. _`Issue #323`: http://bitbucket.org/tarek/distribute/issue/323
-        .. _`Issue #326`: http://bitbucket.org/tarek/distribute/issue/326
-        .. _`Issue #327`: http://bitbucket.org/tarek/distribute/issue/327
-        .. _`Issue #328`: http://bitbucket.org/tarek/distribute/issue/328
-        .. _`Issue #329`: http://bitbucket.org/tarek/distribute/issue/329
-        .. _`Issue #334`: http://bitbucket.org/tarek/distribute/issue/334
-        .. _`Issue #335`: http://bitbucket.org/tarek/distribute/issue/335
-        .. _`Issue #336`: http://bitbucket.org/tarek/distribute/issue/336
-        .. _`Issue #341`: http://bitbucket.org/tarek/distribute/issue/341
-        .. _`Issue 100`: http://bitbucket.org/tarek/distribute/issue/100
-        .. _`Issue 101`: http://bitbucket.org/tarek/distribute/issue/101
-        .. _`Issue 103`: http://bitbucket.org/tarek/distribute/issue/103
-        .. _`Issue 104`: http://bitbucket.org/tarek/distribute/issue/104
-        .. _`Issue 108`: http://bitbucket.org/tarek/distribute/issue/108
-        .. _`Issue 11`: http://bitbucket.org/tarek/distribute/issue/11
-        .. _`Issue 112`: http://bitbucket.org/tarek/distribute/issue/112
-        .. _`Issue 121`: http://bitbucket.org/tarek/distribute/issue/121
-        .. _`Issue 133`: http://bitbucket.org/tarek/distribute/issue/133
-        .. _`Issue 134`: http://bitbucket.org/tarek/distribute/issue/134
-        .. _`Issue 138`: http://bitbucket.org/tarek/distribute/issue/138
-        .. _`Issue 143`: http://bitbucket.org/tarek/distribute/issue/143
-        .. _`Issue 146`: http://bitbucket.org/tarek/distribute/issue/146
-        .. _`Issue 147`: http://bitbucket.org/tarek/distribute/issue/147
-        .. _`Issue 149`: http://bitbucket.org/tarek/distribute/issue/149
-        .. _`Issue 15`: http://bitbucket.org/tarek/distribute/issue/15
-        .. _`Issue 150`: http://bitbucket.org/tarek/distribute/issue/150
-        .. _`Issue 160`: http://bitbucket.org/tarek/distribute/issue/160
-        .. _`Issue 163`: http://bitbucket.org/tarek/distribute/issue/163
-        .. _`Issue 170`: http://bitbucket.org/tarek/distribute/issue/170
-        .. _`Issue 171`: http://bitbucket.org/tarek/distribute/issue/171
-        .. _`Issue 174`: http://bitbucket.org/tarek/distribute/issue/174
-        .. _`Issue 192`: http://bitbucket.org/tarek/distribute/issue/192
-        .. _`Issue 193`: http://bitbucket.org/tarek/distribute/issue/193
-        .. _`Issue 195`: http://bitbucket.org/tarek/distribute/issue/195
-        .. _`Issue 196`: http://bitbucket.org/tarek/distribute/issue/196
-        .. _`Issue 200`: http://bitbucket.org/tarek/distribute/issue/200
-        .. _`Issue 204`: http://bitbucket.org/tarek/distribute/issue/204
-        .. _`Issue 205`: http://bitbucket.org/tarek/distribute/issue/205
-        .. _`Issue 206`: http://bitbucket.org/tarek/distribute/issue/206
-        .. _`Issue 21`: http://bitbucket.org/tarek/distribute/issue/21
-        .. _`Issue 210`: http://bitbucket.org/tarek/distribute/issue/210
-        .. _`Issue 58`: http://bitbucket.org/tarek/distribute/issue/58
-        .. _`Issue 64`: http://bitbucket.org/tarek/distribute/issue/64
-        .. _`Issue 65`: http://bitbucket.org/tarek/distribute/issue/65
-        .. _`Issue 67`: http://bitbucket.org/tarek/distribute/issue/67
-        .. _`Issue 70`: http://bitbucket.org/tarek/distribute/issue/70
-        .. _`Issue 72`: http://bitbucket.org/tarek/distribute/issue/72
-        .. _`Issue 74`: http://bitbucket.org/tarek/distribute/issue/74
-        .. _`Issue 80`: http://bitbucket.org/tarek/distribute/issue/80
-        .. _`Issue 86`: http://bitbucket.org/tarek/distribute/issue/86
-        .. _`Issue 87`: http://bitbucket.org/tarek/distribute/issue/87
-        .. _`Issue 89`: http://bitbucket.org/tarek/distribute/issue/89
-        .. _`Issue 90`: http://bitbucket.org/tarek/distribute/issue/90
-        .. _`Issue 92`: http://bitbucket.org/tarek/distribute/issue/92
-        .. _`Issue 93`: http://bitbucket.org/tarek/distribute/issue/93
-        .. _`Issue 99`: http://bitbucket.org/tarek/distribute/issue/99
-        .. _`issue
-          449`: http://bitbucket.org/tarek/distribute/issue/449
-        .. _`issue #1`: http://bitbucket.org/tarek/distribute/issue/1
-        .. _`issue #10`: http://bitbucket.org/tarek/distribute/issue/10
-        .. _`issue #12`: http://bitbucket.org/tarek/distribute/issue/12
-        .. _`issue #13`: http://bitbucket.org/tarek/distribute/issue/13
-        .. _`issue #16`: http://bitbucket.org/tarek/distribute/issue/16
-        .. _`issue #18`: http://bitbucket.org/tarek/distribute/issue/18
-        .. _`issue #3`: http://bitbucket.org/tarek/distribute/issue/3
-        .. _`issue #31`: http://bitbucket.org/tarek/distribute/issue/31
-        .. _`issue #40`: http://bitbucket.org/tarek/distribute/issue/40
-        .. _`issue #49`: http://bitbucket.org/tarek/distribute/issue/49
-        .. _`issue #5`: http://bitbucket.org/tarek/distribute/issue/5
-        .. _`issue #50`: http://bitbucket.org/tarek/distribute/issue/50
-        .. _`issue #52`: http://bitbucket.org/tarek/distribute/issue/52
-        .. _`issue #56`: http://bitbucket.org/tarek/distribute/issue/56
-        .. _`issue #6`: http://bitbucket.org/tarek/distribute/issue/6
-        .. _`issue #7`: http://bitbucket.org/tarek/distribute/issue/7
-        .. _`issue #8`: http://bitbucket.org/tarek/distribute/issue/8
-        .. _`issue #9`: http://bitbucket.org/tarek/distribute/issue/9
-        .. _`issue1980`: http://bitbucket.org/tarek/distribute/issue/1980
-        .. _`issue1981`: http://bitbucket.org/tarek/distribute/issue/1981
-        .. _`issue2`: http://bitbucket.org/tarek/distribute/issue/2
-        .. _`issue20`: http://bitbucket.org/tarek/distribute/issue/20
-        .. _`issue33`: http://bitbucket.org/tarek/distribute/issue/33
-        .. _`issue39`: http://bitbucket.org/tarek/distribute/issue/39
-        .. _`issue40`: http://bitbucket.org/tarek/distribute/issue/40
-        .. _`issue41`: http://bitbucket.org/tarek/distribute/issue/41
-        .. _`issue44`: http://bitbucket.org/tarek/distribute/issue/44
-        
-        
-Keywords: CPAN PyPI distutils eggs package management
-Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: Python Software Foundation License
-Classifier: License :: OSI Approved :: Zope Public License
-Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python :: 2.4
-Classifier: Programming Language :: Python :: 2.5
-Classifier: Programming Language :: Python :: 2.6
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.1
-Classifier: Programming Language :: Python :: 3.2
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Classifier: Topic :: System :: Archiving :: Packaging
-Classifier: Topic :: System :: Systems Administration
-Classifier: Topic :: Utilities
diff --git a/vendor/distribute-0.6.34/distribute.egg-info/SOURCES.txt b/vendor/distribute-0.6.34/distribute.egg-info/SOURCES.txt
deleted file mode 100644
index 186220d2..00000000
--- a/vendor/distribute-0.6.34/distribute.egg-info/SOURCES.txt
+++ /dev/null
@@ -1,109 +0,0 @@
-CHANGES.txt
-CONTRIBUTORS.txt
-DEVGUIDE.txt
-MANIFEST.in
-README.txt
-distribute_setup.py
-easy_install.py
-launcher.c
-pkg_resources.py
-release.py
-setup.cfg
-setup.py
-site.py
-_markerlib/__init__.py
-_markerlib/markers.py
-distribute.egg-info/PKG-INFO
-distribute.egg-info/SOURCES.txt
-distribute.egg-info/dependency_links.txt
-distribute.egg-info/entry_points.txt
-distribute.egg-info/top_level.txt
-distribute.egg-info/zip-safe
-docs/Makefile
-docs/conf.py
-docs/easy_install.txt
-docs/index.txt
-docs/pkg_resources.txt
-docs/python3.txt
-docs/roadmap.txt
-docs/setuptools.txt
-docs/using.txt
-docs/_templates/indexsidebar.html
-docs/_theme/nature/theme.conf
-docs/_theme/nature/static/nature.css_t
-docs/_theme/nature/static/pygments.css
-docs/build/html/_sources/easy_install.txt
-docs/build/html/_sources/index.txt
-docs/build/html/_sources/pkg_resources.txt
-docs/build/html/_sources/python3.txt
-docs/build/html/_sources/roadmap.txt
-docs/build/html/_sources/setuptools.txt
-docs/build/html/_sources/using.txt
-docs/build/html/_static/basic.css
-docs/build/html/_static/nature.css
-docs/build/html/_static/pygments.css
-setuptools/__init__.py
-setuptools/archive_util.py
-setuptools/cli-32.exe
-setuptools/cli-64.exe
-setuptools/cli.exe
-setuptools/depends.py
-setuptools/dist.py
-setuptools/extension.py
-setuptools/gui-32.exe
-setuptools/gui-64.exe
-setuptools/gui.exe
-setuptools/package_index.py
-setuptools/sandbox.py
-setuptools/script template (dev).py
-setuptools/script template.py
-setuptools/command/__init__.py
-setuptools/command/alias.py
-setuptools/command/bdist_egg.py
-setuptools/command/bdist_rpm.py
-setuptools/command/bdist_wininst.py
-setuptools/command/build_ext.py
-setuptools/command/build_py.py
-setuptools/command/develop.py
-setuptools/command/easy_install.py
-setuptools/command/egg_info.py
-setuptools/command/install.py
-setuptools/command/install_egg_info.py
-setuptools/command/install_lib.py
-setuptools/command/install_scripts.py
-setuptools/command/register.py
-setuptools/command/rotate.py
-setuptools/command/saveopts.py
-setuptools/command/sdist.py
-setuptools/command/setopt.py
-setuptools/command/test.py
-setuptools/command/upload.py
-setuptools/command/upload_docs.py
-setuptools/tests/__init__.py
-setuptools/tests/doctest.py
-setuptools/tests/py26compat.py
-setuptools/tests/server.py
-setuptools/tests/test_bdist_egg.py
-setuptools/tests/test_build_ext.py
-setuptools/tests/test_develop.py
-setuptools/tests/test_dist_info.py
-setuptools/tests/test_easy_install.py
-setuptools/tests/test_markerlib.py
-setuptools/tests/test_packageindex.py
-setuptools/tests/test_resources.py
-setuptools/tests/test_sandbox.py
-setuptools/tests/test_sdist.py
-setuptools/tests/test_test.py
-setuptools/tests/test_upload_docs.py
-setuptools/tests/win_script_wrapper.txt
-setuptools/tests/indexes/test_links_priority/external.html
-setuptools/tests/indexes/test_links_priority/simple/foobar/index.html
-tests/api_tests.txt
-tests/install_test.py
-tests/manual_test.py
-tests/test_distribute_setup.py
-tests/shlib_test/hello.c
-tests/shlib_test/hello.pyx
-tests/shlib_test/hellolib.c
-tests/shlib_test/setup.py
-tests/shlib_test/test_hello.py
\ No newline at end of file
diff --git a/vendor/distribute-0.6.34/distribute.egg-info/dependency_links.txt b/vendor/distribute-0.6.34/distribute.egg-info/dependency_links.txt
deleted file mode 100644
index 8b137891..00000000
--- a/vendor/distribute-0.6.34/distribute.egg-info/dependency_links.txt
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/vendor/distribute-0.6.34/distribute.egg-info/entry_points.txt b/vendor/distribute-0.6.34/distribute.egg-info/entry_points.txt
deleted file mode 100644
index 663882d6..00000000
--- a/vendor/distribute-0.6.34/distribute.egg-info/entry_points.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-[distutils.commands]
-bdist_rpm = setuptools.command.bdist_rpm:bdist_rpm
-rotate = setuptools.command.rotate:rotate
-develop = setuptools.command.develop:develop
-setopt = setuptools.command.setopt:setopt
-build_py = setuptools.command.build_py:build_py
-saveopts = setuptools.command.saveopts:saveopts
-egg_info = setuptools.command.egg_info:egg_info
-register = setuptools.command.register:register
-upload_docs = setuptools.command.upload_docs:upload_docs
-install_egg_info = setuptools.command.install_egg_info:install_egg_info
-alias = setuptools.command.alias:alias
-easy_install = setuptools.command.easy_install:easy_install
-install_scripts = setuptools.command.install_scripts:install_scripts
-bdist_wininst = setuptools.command.bdist_wininst:bdist_wininst
-bdist_egg = setuptools.command.bdist_egg:bdist_egg
-install = setuptools.command.install:install
-test = setuptools.command.test:test
-install_lib = setuptools.command.install_lib:install_lib
-build_ext = setuptools.command.build_ext:build_ext
-sdist = setuptools.command.sdist:sdist
-
-[egg_info.writers]
-dependency_links.txt = setuptools.command.egg_info:overwrite_arg
-requires.txt = setuptools.command.egg_info:write_requirements
-PKG-INFO = setuptools.command.egg_info:write_pkg_info
-eager_resources.txt = setuptools.command.egg_info:overwrite_arg
-top_level.txt = setuptools.command.egg_info:write_toplevel_names
-namespace_packages.txt = setuptools.command.egg_info:overwrite_arg
-entry_points.txt = setuptools.command.egg_info:write_entries
-depends.txt = setuptools.command.egg_info:warn_depends_obsolete
-
-[console_scripts]
-easy_install = setuptools.command.easy_install:main
-easy_install-2.7 = setuptools.command.easy_install:main
-
-[setuptools.file_finders]
-svn_cvs = setuptools.command.sdist:_default_revctrl
-
-[distutils.setup_keywords]
-dependency_links = setuptools.dist:assert_string_list
-entry_points = setuptools.dist:check_entry_points
-extras_require = setuptools.dist:check_extras
-use_2to3_exclude_fixers = setuptools.dist:assert_string_list
-package_data = setuptools.dist:check_package_data
-install_requires = setuptools.dist:check_requirements
-use_2to3 = setuptools.dist:assert_bool
-use_2to3_fixers = setuptools.dist:assert_string_list
-include_package_data = setuptools.dist:assert_bool
-exclude_package_data = setuptools.dist:check_package_data
-namespace_packages = setuptools.dist:check_nsp
-test_suite = setuptools.dist:check_test_suite
-eager_resources = setuptools.dist:assert_string_list
-zip_safe = setuptools.dist:assert_bool
-test_loader = setuptools.dist:check_importable
-packages = setuptools.dist:check_packages
-convert_2to3_doctests = setuptools.dist:assert_string_list
-tests_require = setuptools.dist:check_requirements
-
-[setuptools.installation]
-eggsecutable = setuptools.command.easy_install:bootstrap
-
diff --git a/vendor/distribute-0.6.34/distribute.egg-info/top_level.txt b/vendor/distribute-0.6.34/distribute.egg-info/top_level.txt
deleted file mode 100644
index 23374f9c..00000000
--- a/vendor/distribute-0.6.34/distribute.egg-info/top_level.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-_markerlib
-easy_install
-pkg_resources
-setuptools
-site
diff --git a/vendor/distribute-0.6.34/distribute.egg-info/zip-safe b/vendor/distribute-0.6.34/distribute.egg-info/zip-safe
deleted file mode 100644
index d3f5a12f..00000000
--- a/vendor/distribute-0.6.34/distribute.egg-info/zip-safe
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/vendor/distribute-0.6.34/distribute_setup.py b/vendor/distribute-0.6.34/distribute_setup.py
deleted file mode 100644
index a1cc2a1a..00000000
--- a/vendor/distribute-0.6.34/distribute_setup.py
+++ /dev/null
@@ -1,546 +0,0 @@
-#!python
-"""Bootstrap distribute installation
-
-If you want to use setuptools in your package's setup.py, just include this
-file in the same directory with it, and add this to the top of your setup.py::
-
-    from distribute_setup import use_setuptools
-    use_setuptools()
-
-If you want to require a specific version of setuptools, set a download
-mirror, or use an alternate download directory, you can do so by supplying
-the appropriate options to ``use_setuptools()``.
-
-This file can also be run as a script to install or upgrade setuptools.
-"""
-import os
-import shutil
-import sys
-import time
-import fnmatch
-import tempfile
-import tarfile
-import optparse
-
-from distutils import log
-
-try:
-    from site import USER_SITE
-except ImportError:
-    USER_SITE = None
-
-try:
-    import subprocess
-
-    def _python_cmd(*args):
-        args = (sys.executable,) + args
-        return subprocess.call(args) == 0
-
-except ImportError:
-    # will be used for python 2.3
-    def _python_cmd(*args):
-        args = (sys.executable,) + args
-        # quoting arguments if windows
-        if sys.platform == 'win32':
-            def quote(arg):
-                if ' ' in arg:
-                    return '"%s"' % arg
-                return arg
-            args = [quote(arg) for arg in args]
-        return os.spawnl(os.P_WAIT, sys.executable, *args) == 0
-
-DEFAULT_VERSION = "0.6.34"
-DEFAULT_URL = "http://pypi.python.org/packages/source/d/distribute/"
-SETUPTOOLS_FAKED_VERSION = "0.6c11"
-
-SETUPTOOLS_PKG_INFO = """\
-Metadata-Version: 1.0
-Name: setuptools
-Version: %s
-Summary: xxxx
-Home-page: xxx
-Author: xxx
-Author-email: xxx
-License: xxx
-Description: xxx
-""" % SETUPTOOLS_FAKED_VERSION
-
-
-def _install(tarball, install_args=()):
-    # extracting the tarball
-    tmpdir = tempfile.mkdtemp()
-    log.warn('Extracting in %s', tmpdir)
-    old_wd = os.getcwd()
-    try:
-        os.chdir(tmpdir)
-        tar = tarfile.open(tarball)
-        _extractall(tar)
-        tar.close()
-
-        # going in the directory
-        subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0])
-        os.chdir(subdir)
-        log.warn('Now working in %s', subdir)
-
-        # installing
-        log.warn('Installing Distribute')
-        if not _python_cmd('setup.py', 'install', *install_args):
-            log.warn('Something went wrong during the installation.')
-            log.warn('See the error message above.')
-            # exitcode will be 2
-            return 2
-    finally:
-        os.chdir(old_wd)
-        shutil.rmtree(tmpdir)
-
-
-def _build_egg(egg, tarball, to_dir):
-    # extracting the tarball
-    tmpdir = tempfile.mkdtemp()
-    log.warn('Extracting in %s', tmpdir)
-    old_wd = os.getcwd()
-    try:
-        os.chdir(tmpdir)
-        tar = tarfile.open(tarball)
-        _extractall(tar)
-        tar.close()
-
-        # going in the directory
-        subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0])
-        os.chdir(subdir)
-        log.warn('Now working in %s', subdir)
-
-        # building an egg
-        log.warn('Building a Distribute egg in %s', to_dir)
-        _python_cmd('setup.py', '-q', 'bdist_egg', '--dist-dir', to_dir)
-
-    finally:
-        os.chdir(old_wd)
-        shutil.rmtree(tmpdir)
-    # returning the result
-    log.warn(egg)
-    if not os.path.exists(egg):
-        raise IOError('Could not build the egg.')
-
-
-def _do_download(version, download_base, to_dir, download_delay):
-    egg = os.path.join(to_dir, 'distribute-%s-py%d.%d.egg'
-                       % (version, sys.version_info[0], sys.version_info[1]))
-    if not os.path.exists(egg):
-        tarball = download_setuptools(version, download_base,
-                                      to_dir, download_delay)
-        _build_egg(egg, tarball, to_dir)
-    sys.path.insert(0, egg)
-    import setuptools
-    setuptools.bootstrap_install_from = egg
-
-
-def use_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
-                   to_dir=os.curdir, download_delay=15, no_fake=True):
-    # making sure we use the absolute path
-    to_dir = os.path.abspath(to_dir)
-    was_imported = 'pkg_resources' in sys.modules or \
-        'setuptools' in sys.modules
-    try:
-        try:
-            import pkg_resources
-            if not hasattr(pkg_resources, '_distribute'):
-                if not no_fake:
-                    _fake_setuptools()
-                raise ImportError
-        except ImportError:
-            return _do_download(version, download_base, to_dir, download_delay)
-        try:
-            pkg_resources.require("distribute>=" + version)
-            return
-        except pkg_resources.VersionConflict:
-            e = sys.exc_info()[1]
-            if was_imported:
-                sys.stderr.write(
-                "The required version of distribute (>=%s) is not available,\n"
-                "and can't be installed while this script is running. Please\n"
-                "install a more recent version first, using\n"
-                "'easy_install -U distribute'."
-                "\n\n(Currently using %r)\n" % (version, e.args[0]))
-                sys.exit(2)
-            else:
-                del pkg_resources, sys.modules['pkg_resources']    # reload ok
-                return _do_download(version, download_base, to_dir,
-                                    download_delay)
-        except pkg_resources.DistributionNotFound:
-            return _do_download(version, download_base, to_dir,
-                                download_delay)
-    finally:
-        if not no_fake:
-            _create_fake_setuptools_pkg_info(to_dir)
-
-
-def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
-                        to_dir=os.curdir, delay=15):
-    """Download distribute from a specified location and return its filename
-
-    `version` should be a valid distribute version number that is available
-    as an egg for download under the `download_base` URL (which should end
-    with a '/'). `to_dir` is the directory where the egg will be downloaded.
-    `delay` is the number of seconds to pause before an actual download
-    attempt.
-    """
-    # making sure we use the absolute path
-    to_dir = os.path.abspath(to_dir)
-    try:
-        from urllib.request import urlopen
-    except ImportError:
-        from urllib2 import urlopen
-    tgz_name = "distribute-%s.tar.gz" % version
-    url = download_base + tgz_name
-    saveto = os.path.join(to_dir, tgz_name)
-    src = dst = None
-    if not os.path.exists(saveto):  # Avoid repeated downloads
-        try:
-            log.warn("Downloading %s", url)
-            src = urlopen(url)
-            # Read/write all in one block, so we don't create a corrupt file
-            # if the download is interrupted.
-            data = src.read()
-            dst = open(saveto, "wb")
-            dst.write(data)
-        finally:
-            if src:
-                src.close()
-            if dst:
-                dst.close()
-    return os.path.realpath(saveto)
-
-
-def _no_sandbox(function):
-    def __no_sandbox(*args, **kw):
-        try:
-            from setuptools.sandbox import DirectorySandbox
-            if not hasattr(DirectorySandbox, '_old'):
-                def violation(*args):
-                    pass
-                DirectorySandbox._old = DirectorySandbox._violation
-                DirectorySandbox._violation = violation
-                patched = True
-            else:
-                patched = False
-        except ImportError:
-            patched = False
-
-        try:
-            return function(*args, **kw)
-        finally:
-            if patched:
-                DirectorySandbox._violation = DirectorySandbox._old
-                del DirectorySandbox._old
-
-    return __no_sandbox
-
-
-def _patch_file(path, content):
-    """Will backup the file then patch it"""
-    f = open(path)
-    existing_content = f.read()
-    f.close()
-    if existing_content == content:
-        # already patched
-        log.warn('Already patched.')
-        return False
-    log.warn('Patching...')
-    _rename_path(path)
-    f = open(path, 'w')
-    try:
-        f.write(content)
-    finally:
-        f.close()
-    return True
-
-_patch_file = _no_sandbox(_patch_file)
-
-
-def _same_content(path, content):
-    f = open(path)
-    existing_content = f.read()
-    f.close()
-    return existing_content == content
-
-
-def _rename_path(path):
-    new_name = path + '.OLD.%s' % time.time()
-    log.warn('Renaming %s to %s', path, new_name)
-    os.rename(path, new_name)
-    return new_name
-
-
-def _remove_flat_installation(placeholder):
-    if not os.path.isdir(placeholder):
-        log.warn('Unkown installation at %s', placeholder)
-        return False
-    found = False
-    for file in os.listdir(placeholder):
-        if fnmatch.fnmatch(file, 'setuptools*.egg-info'):
-            found = True
-            break
-    if not found:
-        log.warn('Could not locate setuptools*.egg-info')
-        return
-
-    log.warn('Moving elements out of the way...')
-    pkg_info = os.path.join(placeholder, file)
-    if os.path.isdir(pkg_info):
-        patched = _patch_egg_dir(pkg_info)
-    else:
-        patched = _patch_file(pkg_info, SETUPTOOLS_PKG_INFO)
-
-    if not patched:
-        log.warn('%s already patched.', pkg_info)
-        return False
-    # now let's move the files out of the way
-    for element in ('setuptools', 'pkg_resources.py', 'site.py'):
-        element = os.path.join(placeholder, element)
-        if os.path.exists(element):
-            _rename_path(element)
-        else:
-            log.warn('Could not find the %s element of the '
-                     'Setuptools distribution', element)
-    return True
-
-_remove_flat_installation = _no_sandbox(_remove_flat_installation)
-
-
-def _after_install(dist):
-    log.warn('After install bootstrap.')
-    placeholder = dist.get_command_obj('install').install_purelib
-    _create_fake_setuptools_pkg_info(placeholder)
-
-
-def _create_fake_setuptools_pkg_info(placeholder):
-    if not placeholder or not os.path.exists(placeholder):
-        log.warn('Could not find the install location')
-        return
-    pyver = '%s.%s' % (sys.version_info[0], sys.version_info[1])
-    setuptools_file = 'setuptools-%s-py%s.egg-info' % \
-            (SETUPTOOLS_FAKED_VERSION, pyver)
-    pkg_info = os.path.join(placeholder, setuptools_file)
-    if os.path.exists(pkg_info):
-        log.warn('%s already exists', pkg_info)
-        return
-
-    log.warn('Creating %s', pkg_info)
-    try:
-        f = open(pkg_info, 'w')
-    except EnvironmentError:
-        log.warn("Don't have permissions to write %s, skipping", pkg_info)
-        return
-    try:
-        f.write(SETUPTOOLS_PKG_INFO)
-    finally:
-        f.close()
-
-    pth_file = os.path.join(placeholder, 'setuptools.pth')
-    log.warn('Creating %s', pth_file)
-    f = open(pth_file, 'w')
-    try:
-        f.write(os.path.join(os.curdir, setuptools_file))
-    finally:
-        f.close()
-
-_create_fake_setuptools_pkg_info = _no_sandbox(
-    _create_fake_setuptools_pkg_info
-)
-
-
-def _patch_egg_dir(path):
-    # let's check if it's already patched
-    pkg_info = os.path.join(path, 'EGG-INFO', 'PKG-INFO')
-    if os.path.exists(pkg_info):
-        if _same_content(pkg_info, SETUPTOOLS_PKG_INFO):
-            log.warn('%s already patched.', pkg_info)
-            return False
-    _rename_path(path)
-    os.mkdir(path)
-    os.mkdir(os.path.join(path, 'EGG-INFO'))
-    pkg_info = os.path.join(path, 'EGG-INFO', 'PKG-INFO')
-    f = open(pkg_info, 'w')
-    try:
-        f.write(SETUPTOOLS_PKG_INFO)
-    finally:
-        f.close()
-    return True
-
-_patch_egg_dir = _no_sandbox(_patch_egg_dir)
-
-
-def _before_install():
-    log.warn('Before install bootstrap.')
-    _fake_setuptools()
-
-
-def _under_prefix(location):
-    if 'install' not in sys.argv:
-        return True
-    args = sys.argv[sys.argv.index('install') + 1:]
-    for index, arg in enumerate(args):
-        for option in ('--root', '--prefix'):
-            if arg.startswith('%s=' % option):
-                top_dir = arg.split('root=')[-1]
-                return location.startswith(top_dir)
-            elif arg == option:
-                if len(args) > index:
-                    top_dir = args[index + 1]
-                    return location.startswith(top_dir)
-        if arg == '--user' and USER_SITE is not None:
-            return location.startswith(USER_SITE)
-    return True
-
-
-def _fake_setuptools():
-    log.warn('Scanning installed packages')
-    try:
-        import pkg_resources
-    except ImportError:
-        # we're cool
-        log.warn('Setuptools or Distribute does not seem to be installed.')
-        return
-    ws = pkg_resources.working_set
-    try:
-        setuptools_dist = ws.find(
-            pkg_resources.Requirement.parse('setuptools', replacement=False)
-            )
-    except TypeError:
-        # old distribute API
-        setuptools_dist = ws.find(
-            pkg_resources.Requirement.parse('setuptools')
-        )
-
-    if setuptools_dist is None:
-        log.warn('No setuptools distribution found')
-        return
-    # detecting if it was already faked
-    setuptools_location = setuptools_dist.location
-    log.warn('Setuptools installation detected at %s', setuptools_location)
-
-    # if --root or --preix was provided, and if
-    # setuptools is not located in them, we don't patch it
-    if not _under_prefix(setuptools_location):
-        log.warn('Not patching, --root or --prefix is installing Distribute'
-                 ' in another location')
-        return
-
-    # let's see if its an egg
-    if not setuptools_location.endswith('.egg'):
-        log.warn('Non-egg installation')
-        res = _remove_flat_installation(setuptools_location)
-        if not res:
-            return
-    else:
-        log.warn('Egg installation')
-        pkg_info = os.path.join(setuptools_location, 'EGG-INFO', 'PKG-INFO')
-        if (os.path.exists(pkg_info) and
-            _same_content(pkg_info, SETUPTOOLS_PKG_INFO)):
-            log.warn('Already patched.')
-            return
-        log.warn('Patching...')
-        # let's create a fake egg replacing setuptools one
-        res = _patch_egg_dir(setuptools_location)
-        if not res:
-            return
-    log.warn('Patching complete.')
-    _relaunch()
-
-
-def _relaunch():
-    log.warn('Relaunching...')
-    # we have to relaunch the process
-    # pip marker to avoid a relaunch bug
-    _cmd1 = ['-c', 'install', '--single-version-externally-managed']
-    _cmd2 = ['-c', 'install', '--record']
-    if sys.argv[:3] == _cmd1 or sys.argv[:3] == _cmd2:
-        sys.argv[0] = 'setup.py'
-    args = [sys.executable] + sys.argv
-    sys.exit(subprocess.call(args))
-
-
-def _extractall(self, path=".", members=None):
-    """Extract all members from the archive to the current working
-       directory and set owner, modification time and permissions on
-       directories afterwards. `path' specifies a different directory
-       to extract to. `members' is optional and must be a subset of the
-       list returned by getmembers().
-    """
-    import copy
-    import operator
-    from tarfile import ExtractError
-    directories = []
-
-    if members is None:
-        members = self
-
-    for tarinfo in members:
-        if tarinfo.isdir():
-            # Extract directories with a safe mode.
-            directories.append(tarinfo)
-            tarinfo = copy.copy(tarinfo)
-            tarinfo.mode = 448  # decimal for oct 0700
-        self.extract(tarinfo, path)
-
-    # Reverse sort directories.
-    if sys.version_info < (2, 4):
-        def sorter(dir1, dir2):
-            return cmp(dir1.name, dir2.name)
-        directories.sort(sorter)
-        directories.reverse()
-    else:
-        directories.sort(key=operator.attrgetter('name'), reverse=True)
-
-    # Set correct owner, mtime and filemode on directories.
-    for tarinfo in directories:
-        dirpath = os.path.join(path, tarinfo.name)
-        try:
-            self.chown(tarinfo, dirpath)
-            self.utime(tarinfo, dirpath)
-            self.chmod(tarinfo, dirpath)
-        except ExtractError:
-            e = sys.exc_info()[1]
-            if self.errorlevel > 1:
-                raise
-            else:
-                self._dbg(1, "tarfile: %s" % e)
-
-
-def _build_install_args(options):
-    """
-    Build the arguments to 'python setup.py install' on the distribute package
-    """
-    install_args = []
-    if options.user_install:
-        if sys.version_info < (2, 6):
-            log.warn("--user requires Python 2.6 or later")
-            raise SystemExit(1)
-        install_args.append('--user')
-    return install_args
-
-def _parse_args():
-    """
-    Parse the command line for options
-    """
-    parser = optparse.OptionParser()
-    parser.add_option(
-        '--user', dest='user_install', action='store_true', default=False,
-        help='install in user site package (requires Python 2.6 or later)')
-    parser.add_option(
-        '--download-base', dest='download_base', metavar="URL",
-        default=DEFAULT_URL,
-        help='alternative URL from where to download the distribute package')
-    options, args = parser.parse_args()
-    # positional arguments are ignored
-    return options
-
-def main(version=DEFAULT_VERSION):
-    """Install or upgrade setuptools and EasyInstall"""
-    options = _parse_args()
-    tarball = download_setuptools(download_base=options.download_base)
-    return _install(tarball, _build_install_args(options))
-
-if __name__ == '__main__':
-    sys.exit(main())
diff --git a/vendor/distribute-0.6.34/docs/Makefile b/vendor/distribute-0.6.34/docs/Makefile
deleted file mode 100644
index 30bf10a9..00000000
--- a/vendor/distribute-0.6.34/docs/Makefile
+++ /dev/null
@@ -1,75 +0,0 @@
-# Makefile for Sphinx documentation
-#
-
-# You can set these variables from the command line.
-SPHINXOPTS    =
-SPHINXBUILD   = sphinx-build
-PAPER         =
-
-# Internal variables.
-PAPEROPT_a4     = -D latex_paper_size=a4
-PAPEROPT_letter = -D latex_paper_size=letter
-ALLSPHINXOPTS   = -d build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-
-.PHONY: help clean html web pickle htmlhelp latex changes linkcheck
-
-help:
-	@echo "Please use \`make <target>' where <target> is one of"
-	@echo "  html      to make standalone HTML files"
-	@echo "  pickle    to make pickle files"
-	@echo "  json      to make JSON files"
-	@echo "  htmlhelp  to make HTML files and a HTML help project"
-	@echo "  latex     to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
-	@echo "  changes   to make an overview over all changed/added/deprecated items"
-	@echo "  linkcheck to check all external links for integrity"
-
-clean:
-	-rm -rf build/*
-
-html:
-	mkdir -p build/html build/doctrees
-	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) build/html
-	@echo
-	@echo "Build finished. The HTML pages are in build/html."
-
-pickle:
-	mkdir -p build/pickle build/doctrees
-	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) build/pickle
-	@echo
-	@echo "Build finished; now you can process the pickle files."
-
-web: pickle
-
-json:
-	mkdir -p build/json build/doctrees
-	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) build/json
-	@echo
-	@echo "Build finished; now you can process the JSON files."
-
-htmlhelp:
-	mkdir -p build/htmlhelp build/doctrees
-	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) build/htmlhelp
-	@echo
-	@echo "Build finished; now you can run HTML Help Workshop with the" \
-	      ".hhp project file in build/htmlhelp."
-
-latex:
-	mkdir -p build/latex build/doctrees
-	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) build/latex
-	@echo
-	@echo "Build finished; the LaTeX files are in build/latex."
-	@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
-	      "run these through (pdf)latex."
-
-changes:
-	mkdir -p build/changes build/doctrees
-	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) build/changes
-	@echo
-	@echo "The overview file is in build/changes."
-
-linkcheck:
-	mkdir -p build/linkcheck build/doctrees
-	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) build/linkcheck
-	@echo
-	@echo "Link check complete; look for any errors in the above output " \
-	      "or in build/linkcheck/output.txt."
diff --git a/vendor/distribute-0.6.34/docs/_templates/indexsidebar.html b/vendor/distribute-0.6.34/docs/_templates/indexsidebar.html
deleted file mode 100644
index 932909f3..00000000
--- a/vendor/distribute-0.6.34/docs/_templates/indexsidebar.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<h3>Download</h3> 
-
-<p>Current version: <b>{{ version }}</b></p> 
-<p>Get Distribute from the <a href="http://pypi.python.org/pypi/distribute"> Python Package Index</a>
-
-<h3>Questions? Suggestions? Contributions?</h3>
-
-<p>Visit the <a href="http://bitbucket.org/tarek/distribute">Distribute project page</a> </p>
diff --git a/vendor/distribute-0.6.34/docs/_theme/nature/static/nature.css_t b/vendor/distribute-0.6.34/docs/_theme/nature/static/nature.css_t
deleted file mode 100644
index 1a654264..00000000
--- a/vendor/distribute-0.6.34/docs/_theme/nature/static/nature.css_t
+++ /dev/null
@@ -1,237 +0,0 @@
-/**
- * Sphinx stylesheet -- default theme
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- */
- 
-@import url("basic.css");
- 
-/* -- page layout ----------------------------------------------------------- */
- 
-body {
-    font-family: Arial, sans-serif;
-    font-size: 100%;
-    background-color: #111111;
-    color: #555555;
-    margin: 0;
-    padding: 0;
-}
-
-div.documentwrapper {
-    float: left;
-    width: 100%;
-}
-
-div.bodywrapper {
-    margin: 0 0 0 300px;
-}
-
-hr{
-    border: 1px solid #B1B4B6;
-}
- 
-div.document {
-    background-color: #fafafa;
-}
- 
-div.body {
-    background-color: #ffffff;
-    color: #3E4349;
-    padding: 1em 30px 30px 30px;
-    font-size: 0.9em;
-}
- 
-div.footer {
-    color: #555;
-    width: 100%;
-    padding: 13px 0;
-    text-align: center;
-    font-size: 75%;
-}
- 
-div.footer a {
-    color: #444444;
-}
- 
-div.related {
-    background-color: #6BA81E;
-    line-height: 36px;
-    color: #ffffff;
-    text-shadow: 0px 1px 0 #444444;
-    font-size: 1.1em;
-}
- 
-div.related a {
-    color: #E2F3CC;
-}
-
-div.related .right {
-    font-size: 0.9em;
-}
-
-div.sphinxsidebar {
-    font-size: 0.9em;
-    line-height: 1.5em;
-    width: 300px;
-}
-
-div.sphinxsidebarwrapper{
-    padding: 20px 0;
-}
- 
-div.sphinxsidebar h3,
-div.sphinxsidebar h4 {
-    font-family: Arial, sans-serif;
-    color: #222222;
-    font-size: 1.2em;
-    font-weight: bold;
-    margin: 0;
-    padding: 5px 10px;
-    text-shadow: 1px 1px 0 white
-}
-
-div.sphinxsidebar h3 a {
-    color: #444444;
-}
-
-div.sphinxsidebar p {
-    color: #888888;
-    padding: 5px 20px;
-    margin: 0.5em 0px;
-}
- 
-div.sphinxsidebar p.topless {
-}
- 
-div.sphinxsidebar ul {
-    margin: 10px 10px 10px 20px;
-    padding: 0;
-    color: #000000;
-}
- 
-div.sphinxsidebar a {
-    color: #444444;
-}
-
-div.sphinxsidebar a:hover {
-    color: #E32E00;
-}
-
-div.sphinxsidebar input {
-    border: 1px solid #cccccc;
-    font-family: sans-serif;
-    font-size: 1.1em;
-    padding: 0.15em 0.3em;
-}
-
-div.sphinxsidebar input[type=text]{
-    margin-left: 20px;
-}
- 
-/* -- body styles ----------------------------------------------------------- */
- 
-a {
-    color: #005B81;
-    text-decoration: none;
-}
- 
-a:hover {
-    color: #E32E00;
-}
- 
-div.body h1,
-div.body h2,
-div.body h3,
-div.body h4,
-div.body h5,
-div.body h6 {
-    font-family: Arial, sans-serif;
-    font-weight: normal;
-    color: #212224;
-    margin: 30px 0px 10px 0px;
-    padding: 5px 0 5px 0px;
-    text-shadow: 0px 1px 0 white;
-    border-bottom: 1px solid #C8D5E3;
-}
- 
-div.body h1 { margin-top: 0; font-size: 200%; }
-div.body h2 { font-size: 150%; }
-div.body h3 { font-size: 120%; }
-div.body h4 { font-size: 110%; }
-div.body h5 { font-size: 100%; }
-div.body h6 { font-size: 100%; }
- 
-a.headerlink {
-    color: #c60f0f;
-    font-size: 0.8em;
-    padding: 0 4px 0 4px;
-    text-decoration: none;
-}
- 
-a.headerlink:hover {
-    background-color: #c60f0f;
-    color: white;
-}
- 
-div.body p, div.body dd, div.body li {
-    line-height: 1.8em;
-}
- 
-div.admonition p.admonition-title + p {
-    display: inline;
-}
-
-div.highlight{
-    background-color: white;
-}
-
-div.note {
-    background-color: #eeeeee;
-    border: 1px solid #cccccc;
-}
- 
-div.seealso {
-    background-color: #ffffcc;
-    border: 1px solid #ffff66;
-}
- 
-div.topic {
-    background-color: #fafafa;
-    border-width: 0;
-}
- 
-div.warning {
-    background-color: #ffe4e4;
-    border: 1px solid #ff6666;
-}
- 
-p.admonition-title {
-    display: inline;
-}
- 
-p.admonition-title:after {
-    content: ":";
-}
- 
-pre {
-    padding: 10px;
-    background-color: #fafafa;
-    color: #222222;
-    line-height: 1.5em;
-    font-size: 1.1em;
-    margin: 1.5em 0 1.5em 0;
-    -webkit-box-shadow: 0px 0px 4px #d8d8d8;
-    -moz-box-shadow: 0px 0px 4px #d8d8d8;
-    box-shadow: 0px 0px 4px #d8d8d8;
-}
- 
-tt {
-    color: #222222;
-    padding: 1px 2px;
-    font-size: 1.2em;
-    font-family: monospace;
-}
-
-#table-of-contents ul {
-    padding-left: 2em;
-}
-
diff --git a/vendor/distribute-0.6.34/docs/_theme/nature/static/pygments.css b/vendor/distribute-0.6.34/docs/_theme/nature/static/pygments.css
deleted file mode 100644
index 652b7612..00000000
--- a/vendor/distribute-0.6.34/docs/_theme/nature/static/pygments.css
+++ /dev/null
@@ -1,54 +0,0 @@
-.c { color: #999988; font-style: italic } /* Comment */
-.k { font-weight: bold } /* Keyword */
-.o { font-weight: bold } /* Operator */
-.cm { color: #999988; font-style: italic } /* Comment.Multiline */
-.cp { color: #999999; font-weight: bold } /* Comment.preproc */
-.c1 { color: #999988; font-style: italic } /* Comment.Single */
-.gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
-.ge { font-style: italic } /* Generic.Emph */
-.gr { color: #aa0000 } /* Generic.Error */
-.gh { color: #999999 } /* Generic.Heading */
-.gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
-.go { color: #111 } /* Generic.Output */
-.gp { color: #555555 } /* Generic.Prompt */
-.gs { font-weight: bold } /* Generic.Strong */
-.gu { color: #aaaaaa } /* Generic.Subheading */
-.gt { color: #aa0000 } /* Generic.Traceback */
-.kc { font-weight: bold } /* Keyword.Constant */
-.kd { font-weight: bold } /* Keyword.Declaration */
-.kp { font-weight: bold } /* Keyword.Pseudo */
-.kr { font-weight: bold } /* Keyword.Reserved */
-.kt { color: #445588; font-weight: bold } /* Keyword.Type */
-.m { color: #009999 } /* Literal.Number */
-.s { color: #bb8844 } /* Literal.String */
-.na { color: #008080 } /* Name.Attribute */
-.nb { color: #999999 } /* Name.Builtin */
-.nc { color: #445588; font-weight: bold } /* Name.Class */
-.no { color: #ff99ff } /* Name.Constant */
-.ni { color: #800080 } /* Name.Entity */
-.ne { color: #990000; font-weight: bold } /* Name.Exception */
-.nf { color: #990000; font-weight: bold } /* Name.Function */
-.nn { color: #555555 } /* Name.Namespace */
-.nt { color: #000080 } /* Name.Tag */
-.nv { color: purple } /* Name.Variable */
-.ow { font-weight: bold } /* Operator.Word */
-.mf { color: #009999 } /* Literal.Number.Float */
-.mh { color: #009999 } /* Literal.Number.Hex */
-.mi { color: #009999 } /* Literal.Number.Integer */
-.mo { color: #009999 } /* Literal.Number.Oct */
-.sb { color: #bb8844 } /* Literal.String.Backtick */
-.sc { color: #bb8844 } /* Literal.String.Char */
-.sd { color: #bb8844 } /* Literal.String.Doc */
-.s2 { color: #bb8844 } /* Literal.String.Double */
-.se { color: #bb8844 } /* Literal.String.Escape */
-.sh { color: #bb8844 } /* Literal.String.Heredoc */
-.si { color: #bb8844 } /* Literal.String.Interpol */
-.sx { color: #bb8844 } /* Literal.String.Other */
-.sr { color: #808000 } /* Literal.String.Regex */
-.s1 { color: #bb8844 } /* Literal.String.Single */
-.ss { color: #bb8844 } /* Literal.String.Symbol */
-.bp { color: #999999 } /* Name.Builtin.Pseudo */
-.vc { color: #ff99ff } /* Name.Variable.Class */
-.vg { color: #ff99ff } /* Name.Variable.Global */
-.vi { color: #ff99ff } /* Name.Variable.Instance */
-.il { color: #009999 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/vendor/distribute-0.6.34/docs/_theme/nature/theme.conf b/vendor/distribute-0.6.34/docs/_theme/nature/theme.conf
deleted file mode 100644
index 1cc40044..00000000
--- a/vendor/distribute-0.6.34/docs/_theme/nature/theme.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-[theme]
-inherit = basic
-stylesheet = nature.css
-pygments_style = tango
diff --git a/vendor/distribute-0.6.34/docs/build/html/_sources/easy_install.txt b/vendor/distribute-0.6.34/docs/build/html/_sources/easy_install.txt
deleted file mode 100644
index 9b4fcfbb..00000000
--- a/vendor/distribute-0.6.34/docs/build/html/_sources/easy_install.txt
+++ /dev/null
@@ -1,1597 +0,0 @@
-============
-Easy Install
-============
-
-Easy Install is a python module (``easy_install``) bundled with ``setuptools``
-that lets you automatically download, build, install, and manage Python
-packages.
-
-Please share your experiences with us! If you encounter difficulty installing
-a package, please contact us via the `distutils mailing list
-<http://mail.python.org/pipermail/distutils-sig/>`_.  (Note: please DO NOT send
-private email directly to the author of setuptools; it will be discarded.  The
-mailing list is a searchable archive of previously-asked and answered
-questions; you should begin your research there before reporting something as a
-bug -- and then do so via list discussion first.)
-
-(Also, if you'd like to learn about how you can use ``setuptools`` to make your
-own packages work better with EasyInstall, or provide EasyInstall-like features
-without requiring your users to use EasyInstall directly, you'll probably want
-to check out the full `setuptools`_ documentation as well.)
-
-.. contents:: **Table of Contents**
-
-
-Using "Easy Install"
-====================
-
-
-.. _installation instructions:
-
-Installing "Easy Install"
--------------------------
-
-Please see the `setuptools PyPI page <http://pypi.python.org/pypi/setuptools>`_
-for download links and basic installation instructions for each of the
-supported platforms.
-
-You will need at least Python 2.3.5, or if you are on a 64-bit platform, Python
-2.4.  An ``easy_install`` script will be installed in the normal location for
-Python scripts on your platform.
-
-Note that the instructions on the setuptools PyPI page assume that you are
-are installling to Python's primary ``site-packages`` directory.  If this is
-not the case, you should consult the section below on `Custom Installation
-Locations`_ before installing.  (And, on Windows, you should not use the
-``.exe`` installer when installing to an alternate location.)
-
-Note that ``easy_install`` normally works by downloading files from the
-internet.  If you are behind an NTLM-based firewall that prevents Python
-programs from accessing the net directly, you may wish to first install and use
-the `APS proxy server <http://ntlmaps.sf.net/>`_, which lets you get past such
-firewalls in the same way that your web browser(s) do.
-
-(Alternately, if you do not wish easy_install to actually download anything, you
-can restrict it from doing so with the ``--allow-hosts`` option; see the
-sections on `restricting downloads with --allow-hosts`_ and `command-line
-options`_ for more details.)
-
-
-Troubleshooting
-~~~~~~~~~~~~~~~
-
-If EasyInstall/setuptools appears to install correctly, and you can run the
-``easy_install`` command but it fails with an ``ImportError``, the most likely
-cause is that you installed to a location other than ``site-packages``,
-without taking any of the steps described in the `Custom Installation
-Locations`_ section below.  Please see that section and follow the steps to
-make sure that your custom location will work correctly.  Then re-install.
-
-Similarly, if you can run ``easy_install``, and it appears to be installing
-packages, but then you can't import them, the most likely issue is that you
-installed EasyInstall correctly but are using it to install packages to a
-non-standard location that hasn't been properly prepared.  Again, see the
-section on `Custom Installation Locations`_ for more details.
-
-
-Windows Notes
-~~~~~~~~~~~~~
-
-On Windows, an ``easy_install.exe`` launcher will also be installed, so that
-you can just type ``easy_install`` as long as it's on your ``PATH``.  If typing
-``easy_install`` at the command prompt doesn't work, check to make sure your
-``PATH`` includes the appropriate ``C:\\Python2X\\Scripts`` directory.  On
-most current versions of Windows, you can change the ``PATH`` by right-clicking
-"My Computer", choosing "Properties" and selecting the "Advanced" tab, then
-clicking the "Environment Variables" button.  ``PATH`` will be in the "System
-Variables" section, and you will need to exit and restart your command shell
-(command.com, cmd.exe, bash, or other) for the change to take effect.  Be sure
-to add a ``;`` after the last item on ``PATH`` before adding the scripts
-directory to it.
-
-Note that instead of changing your ``PATH`` to include the Python scripts
-directory, you can also retarget the installation location for scripts so they
-go on a directory that's already on the ``PATH``.  For more information see the
-sections below on `Command-Line Options`_ and `Configuration Files`_.  You
-can pass command line options (such as ``--script-dir``) to
-``distribute_setup.py`` to control where ``easy_install.exe`` will be installed.
-
-
-
-Downloading and Installing a Package
-------------------------------------
-
-For basic use of ``easy_install``, you need only supply the filename or URL of
-a source distribution or .egg file (`Python Egg`__).
-
-__ http://peak.telecommunity.com/DevCenter/PythonEggs
-
-**Example 1**. Install a package by name, searching PyPI for the latest
-version, and automatically downloading, building, and installing it::
-
-    easy_install SQLObject
-
-**Example 2**. Install or upgrade a package by name and version by finding
-links on a given "download page"::
-
-    easy_install -f http://pythonpaste.org/package_index.html SQLObject
-
-**Example 3**. Download a source distribution from a specified URL,
-automatically building and installing it::
-
-    easy_install http://example.com/path/to/MyPackage-1.2.3.tgz
-
-**Example 4**. Install an already-downloaded .egg file::
-
-    easy_install /my_downloads/OtherPackage-3.2.1-py2.3.egg
-
-**Example 5**.  Upgrade an already-installed package to the latest version
-listed on PyPI::
-
-    easy_install --upgrade PyProtocols
-
-**Example 6**.  Install a source distribution that's already downloaded and
-extracted in the current directory (New in 0.5a9)::
-
-    easy_install .
-
-**Example 7**.  (New in 0.6a1) Find a source distribution or Subversion
-checkout URL for a package, and extract it or check it out to
-``~/projects/sqlobject`` (the name will always be in all-lowercase), where it
-can be examined or edited.  (The package will not be installed, but it can
-easily be installed with ``easy_install ~/projects/sqlobject``.  See `Editing
-and Viewing Source Packages`_ below for more info.)::
-
-    easy_install --editable --build-directory ~/projects SQLObject
-
-**Example 7**. (New in 0.6.11) Install a distribution within your home dir::
-
-    easy_install --user SQLAlchemy
-
-Easy Install accepts URLs, filenames, PyPI package names (i.e., ``distutils``
-"distribution" names), and package+version specifiers.  In each case, it will
-attempt to locate the latest available version that meets your criteria.
-
-When downloading or processing downloaded files, Easy Install recognizes
-distutils source distribution files with extensions of .tgz, .tar, .tar.gz,
-.tar.bz2, or .zip.  And of course it handles already-built .egg
-distributions as well as ``.win32.exe`` installers built using distutils.
-
-By default, packages are installed to the running Python installation's
-``site-packages`` directory, unless you provide the ``-d`` or ``--install-dir``
-option to specify an alternative directory, or specify an alternate location
-using distutils configuration files.  (See `Configuration Files`_, below.)
-
-By default, any scripts included with the package are installed to the running
-Python installation's standard script installation location.  However, if you
-specify an installation directory via the command line or a config file, then
-the default directory for installing scripts will be the same as the package
-installation directory, to ensure that the script will have access to the
-installed package.  You can override this using the ``-s`` or ``--script-dir``
-option.
-
-Installed packages are added to an ``easy-install.pth`` file in the install
-directory, so that Python will always use the most-recently-installed version
-of the package.  If you would like to be able to select which version to use at
-runtime, you should use the ``-m`` or ``--multi-version`` option.
-
-
-Upgrading a Package
--------------------
-
-You don't need to do anything special to upgrade a package: just install the
-new version, either by requesting a specific version, e.g.::
-
-    easy_install "SomePackage==2.0"
-
-a version greater than the one you have now::
-
-    easy_install "SomePackage>2.0"
-
-using the upgrade flag, to find the latest available version on PyPI::
-
-    easy_install --upgrade SomePackage
-
-or by using a download page, direct download URL, or package filename::
-
-    easy_install -f http://example.com/downloads ExamplePackage
-
-    easy_install http://example.com/downloads/ExamplePackage-2.0-py2.4.egg
-
-    easy_install my_downloads/ExamplePackage-2.0.tgz
-
-If you're using ``-m`` or ``--multi-version`` , using the ``require()``
-function at runtime automatically selects the newest installed version of a
-package that meets your version criteria.  So, installing a newer version is
-the only step needed to upgrade such packages.
-
-If you're installing to a directory on PYTHONPATH, or a configured "site"
-directory (and not using ``-m``), installing a package automatically replaces
-any previous version in the ``easy-install.pth`` file, so that Python will
-import the most-recently installed version by default.  So, again, installing
-the newer version is the only upgrade step needed.
-
-If you haven't suppressed script installation (using ``--exclude-scripts`` or
-``-x``), then the upgraded version's scripts will be installed, and they will
-be automatically patched to ``require()`` the corresponding version of the
-package, so that you can use them even if they are installed in multi-version
-mode.
-
-``easy_install`` never actually deletes packages (unless you're installing a
-package with the same name and version number as an existing package), so if
-you want to get rid of older versions of a package, please see `Uninstalling
-Packages`_, below.
-
-
-Changing the Active Version
----------------------------
-
-If you've upgraded a package, but need to revert to a previously-installed
-version, you can do so like this::
-
-    easy_install PackageName==1.2.3
-
-Where ``1.2.3`` is replaced by the exact version number you wish to switch to.
-If a package matching the requested name and version is not already installed
-in a directory on ``sys.path``, it will be located via PyPI and installed.
-
-If you'd like to switch to the latest installed version of ``PackageName``, you
-can do so like this::
-
-    easy_install PackageName
-
-This will activate the latest installed version.  (Note: if you have set any
-``find_links`` via distutils configuration files, those download pages will be
-checked for the latest available version of the package, and it will be
-downloaded and installed if it is newer than your current version.)
-
-Note that changing the active version of a package will install the newly
-active version's scripts, unless the ``--exclude-scripts`` or ``-x`` option is
-specified.
-
-
-Uninstalling Packages
----------------------
-
-If you have replaced a package with another version, then you can just delete
-the package(s) you don't need by deleting the PackageName-versioninfo.egg file
-or directory (found in the installation directory).
-
-If you want to delete the currently installed version of a package (or all
-versions of a package), you should first run::
-
-    easy_install -m PackageName
-
-This will ensure that Python doesn't continue to search for a package you're
-planning to remove. After you've done this, you can safely delete the .egg
-files or directories, along with any scripts you wish to remove.
-
-
-Managing Scripts
-----------------
-
-Whenever you install, upgrade, or change versions of a package, EasyInstall
-automatically installs the scripts for the selected package version, unless
-you tell it not to with ``-x`` or ``--exclude-scripts``.  If any scripts in
-the script directory have the same name, they are overwritten.
-
-Thus, you do not normally need to manually delete scripts for older versions of
-a package, unless the newer version of the package does not include a script
-of the same name.  However, if you are completely uninstalling a package, you
-may wish to manually delete its scripts.
-
-EasyInstall's default behavior means that you can normally only run scripts
-from one version of a package at a time.  If you want to keep multiple versions
-of a script available, however, you can simply use the ``--multi-version`` or
-``-m`` option, and rename the scripts that EasyInstall creates.  This works
-because EasyInstall installs scripts as short code stubs that ``require()`` the
-matching version of the package the script came from, so renaming the script
-has no effect on what it executes.
-
-For example, suppose you want to use two versions of the ``rst2html`` tool
-provided by the `docutils <http://docutils.sf.net/>`_ package.  You might
-first install one version::
-
-    easy_install -m docutils==0.3.9
-
-then rename the ``rst2html.py`` to ``r2h_039``, and install another version::
-
-    easy_install -m docutils==0.3.10
-
-This will create another ``rst2html.py`` script, this one using docutils
-version 0.3.10 instead of 0.3.9.  You now have two scripts, each using a
-different version of the package.  (Notice that we used ``-m`` for both
-installations, so that Python won't lock us out of using anything but the most
-recently-installed version of the package.)
-
-
-
-Tips & Techniques
------------------
-
-
-Multiple Python Versions
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-As of version 0.6a11, EasyInstall installs itself under two names:
-``easy_install`` and ``easy_install-N.N``, where ``N.N`` is the Python version
-used to install it.  Thus, if you install EasyInstall for both Python 2.3 and
-2.4, you can use the ``easy_install-2.3`` or ``easy_install-2.4`` scripts to
-install packages for Python 2.3 or 2.4, respectively.
-
-Also, if you're working with Python version 2.4 or higher, you can run Python
-with ``-m easy_install`` to run that particular Python version's
-``easy_install`` command.
-
-
-Restricting Downloads with ``--allow-hosts``
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can use the ``--allow-hosts`` (``-H``) option to restrict what domains
-EasyInstall will look for links and downloads on.  ``--allow-hosts=None``
-prevents downloading altogether.  You can also use wildcards, for example
-to restrict downloading to hosts in your own intranet.  See the section below
-on `Command-Line Options`_ for more details on the ``--allow-hosts`` option.
-
-By default, there are no host restrictions in effect, but you can change this
-default by editing the appropriate `configuration files`_ and adding:
-
-.. code-block:: ini
-
-    [easy_install]
-    allow_hosts = *.myintranet.example.com,*.python.org
-
-The above example would then allow downloads only from hosts in the
-``python.org`` and ``myintranet.example.com`` domains, unless overridden on the
-command line.
-
-
-Installing on Un-networked Machines
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Just copy the eggs or source packages you need to a directory on the target
-machine, then use the ``-f`` or ``--find-links`` option to specify that
-directory's location.  For example::
-
-    easy_install -H None -f somedir SomePackage
-
-will attempt to install SomePackage using only eggs and source packages found
-in ``somedir`` and disallowing all remote access.  You should of course make
-sure you have all of SomePackage's dependencies available in somedir.
-
-If you have another machine of the same operating system and library versions
-(or if the packages aren't platform-specific), you can create the directory of
-eggs using a command like this::
-
-    easy_install -zmaxd somedir SomePackage
-
-This will tell EasyInstall to put zipped eggs or source packages for
-SomePackage and all its dependencies into ``somedir``, without creating any
-scripts or .pth files.  You can then copy the contents of ``somedir`` to the
-target machine.  (``-z`` means zipped eggs, ``-m`` means multi-version, which
-prevents .pth files from being used, ``-a`` means to copy all the eggs needed,
-even if they're installed elsewhere on the machine, and ``-d`` indicates the
-directory to place the eggs in.)
-
-You can also build the eggs from local development packages that were installed
-with the ``setup.py develop`` command, by including the ``-l`` option, e.g.::
-
-    easy_install -zmaxld somedir SomePackage
-
-This will use locally-available source distributions to build the eggs.
-
-
-Packaging Others' Projects As Eggs
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Need to distribute a package that isn't published in egg form?  You can use
-EasyInstall to build eggs for a project.  You'll want to use the ``--zip-ok``,
-``--exclude-scripts``, and possibly ``--no-deps`` options (``-z``, ``-x`` and
-``-N``, respectively).  Use ``-d`` or ``--install-dir`` to specify the location
-where you'd like the eggs placed.  By placing them in a directory that is
-published to the web, you can then make the eggs available for download, either
-in an intranet or to the internet at large.
-
-If someone distributes a package in the form of a single ``.py`` file, you can
-wrap it in an egg by tacking an ``#egg=name-version`` suffix on the file's URL.
-So, something like this::
-
-    easy_install -f "http://some.example.com/downloads/foo.py#egg=foo-1.0" foo
-
-will install the package as an egg, and this::
-
-    easy_install -zmaxd. \
-        -f "http://some.example.com/downloads/foo.py#egg=foo-1.0" foo
-
-will create a ``.egg`` file in the current directory.
-
-
-Creating your own Package Index
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-In addition to local directories and the Python Package Index, EasyInstall can
-find download links on most any web page whose URL is given to the ``-f``
-(``--find-links``) option.  In the simplest case, you can simply have a web
-page with links to eggs or Python source packages, even an automatically
-generated directory listing (such as the Apache web server provides).
-
-If you are setting up an intranet site for package downloads, you may want to
-configure the target machines to use your download site by default, adding
-something like this to their `configuration files`_:
-
-.. code-block:: ini
-
-    [easy_install]
-    find_links = http://mypackages.example.com/somedir/
-                 http://turbogears.org/download/
-                 http://peak.telecommunity.com/dist/
-
-As you can see, you can list multiple URLs separated by whitespace, continuing
-on multiple lines if necessary (as long as the subsequent lines are indented.
-
-If you are more ambitious, you can also create an entirely custom package index
-or PyPI mirror.  See the ``--index-url`` option under `Command-Line Options`_,
-below, and also the section on `Package Index "API"`_.
-
-
-Password-Protected Sites
-------------------------
-
-If a site you want to download from is password-protected using HTTP "Basic"
-authentication, you can specify your credentials in the URL, like so::
-
-    http://some_userid:some_password@some.example.com/some_path/
-
-You can do this with both index page URLs and direct download URLs.  As long
-as any HTML pages read by easy_install use *relative* links to point to the
-downloads, the same user ID and password will be used to do the downloading.
-
-
-Controlling Build Options
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-EasyInstall respects standard distutils `Configuration Files`_, so you can use
-them to configure build options for packages that it installs from source.  For
-example, if you are on Windows using the MinGW compiler, you can configure the
-default compiler by putting something like this:
-
-.. code-block:: ini
-
-    [build]
-    compiler = mingw32
-
-into the appropriate distutils configuration file.  In fact, since this is just
-normal distutils configuration, it will affect any builds using that config
-file, not just ones done by EasyInstall.  For example, if you add those lines
-to ``distutils.cfg`` in the ``distutils`` package directory, it will be the
-default compiler for *all* packages you build.  See `Configuration Files`_
-below for a list of the standard configuration file locations, and links to
-more documentation on using distutils configuration files.
-
-
-Editing and Viewing Source Packages
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Sometimes a package's source distribution  contains additional documentation,
-examples, configuration files, etc., that are not part of its actual code.  If
-you want to be able to examine these files, you can use the ``--editable``
-option to EasyInstall, and EasyInstall will look for a source distribution
-or Subversion URL for the package, then download and extract it or check it out
-as a subdirectory of the ``--build-directory`` you specify.  If you then wish
-to install the package after editing or configuring it, you can do so by
-rerunning EasyInstall with that directory as the target.
-
-Note that using ``--editable`` stops EasyInstall from actually building or
-installing the package; it just finds, obtains, and possibly unpacks it for
-you.  This allows you to make changes to the package if necessary, and to
-either install it in development mode using ``setup.py develop`` (if the
-package uses setuptools, that is), or by running ``easy_install projectdir``
-(where ``projectdir`` is the subdirectory EasyInstall created for the
-downloaded package.
-
-In order to use ``--editable`` (``-e`` for short), you *must* also supply a
-``--build-directory`` (``-b`` for short).  The project will be placed in a
-subdirectory of the build directory.  The subdirectory will have the same
-name as the project itself, but in all-lowercase.  If a file or directory of
-that name already exists, EasyInstall will print an error message and exit.
-
-Also, when using ``--editable``, you cannot use URLs or filenames as arguments.
-You *must* specify project names (and optional version requirements) so that
-EasyInstall knows what directory name(s) to create.  If you need to force
-EasyInstall to use a particular URL or filename, you should specify it as a
-``--find-links`` item (``-f`` for short), and then also specify
-the project name, e.g.::
-
-    easy_install -eb ~/projects \
-     -fhttp://prdownloads.sourceforge.net/ctypes/ctypes-0.9.6.tar.gz?download \
-     ctypes==0.9.6
-
-
-Dealing with Installation Conflicts
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-(NOTE: As of 0.6a11, this section is obsolete; it is retained here only so that
-people using older versions of EasyInstall can consult it.  As of version
-0.6a11, installation conflicts are handled automatically without deleting the
-old or system-installed packages, and without ignoring the issue.  Instead,
-eggs are automatically shifted to the front of ``sys.path`` using special
-code added to the ``easy-install.pth`` file.  So, if you are using version
-0.6a11 or better of setuptools, you do not need to worry about conflicts,
-and the following issues do not apply to you.)
-
-EasyInstall installs distributions in a "managed" way, such that each
-distribution can be independently activated or deactivated on ``sys.path``.
-However, packages that were not installed by EasyInstall are "unmanaged",
-in that they usually live all in one directory and cannot be independently
-activated or deactivated.
-
-As a result, if you are using EasyInstall to upgrade an existing package, or
-to install a package with the same name as an existing package, EasyInstall
-will warn you of the conflict.  (This is an improvement over ``setup.py
-install``, becuase the ``distutils`` just install new packages on top of old
-ones, possibly combining two unrelated packages or leaving behind modules that
-have been deleted in the newer version of the package.)
-
-By default, EasyInstall will stop the installation if it detects a conflict
-between an existing, "unmanaged" package, and a module or package in any of
-the distributions you're installing.  It will display a list of all of the
-existing files and directories that would need to be deleted for the new
-package to be able to function correctly.  You can then either delete these
-conflicting files and directories yourself and re-run EasyInstall, or you can
-just use the ``--delete-conflicting`` or ``--ignore-conflicts-at-my-risk``
-options, as described under `Command-Line Options`_, below.
-
-Of course, once you've replaced all of your existing "unmanaged" packages with
-versions managed by EasyInstall, you won't have any more conflicts to worry
-about!
-
-
-Compressed Installation
-~~~~~~~~~~~~~~~~~~~~~~~
-
-EasyInstall tries to install packages in zipped form, if it can.  Zipping
-packages can improve Python's overall import performance if you're not using
-the ``--multi-version`` option, because Python processes zipfile entries on
-``sys.path`` much faster than it does directories.
-
-As of version 0.5a9, EasyInstall analyzes packages to determine whether they
-can be safely installed as a zipfile, and then acts on its analysis.  (Previous
-versions would not install a package as a zipfile unless you used the
-``--zip-ok`` option.)
-
-The current analysis approach is fairly conservative; it currenly looks for:
-
- * Any use of the ``__file__`` or ``__path__`` variables (which should be
-   replaced with ``pkg_resources`` API calls)
-
- * Possible use of ``inspect`` functions that expect to manipulate source files
-   (e.g. ``inspect.getsource()``)
-
- * Top-level modules that might be scripts used with ``python -m`` (Python 2.4)
-
-If any of the above are found in the package being installed, EasyInstall will
-assume that the package cannot be safely run from a zipfile, and unzip it to
-a directory instead.  You can override this analysis with the ``-zip-ok`` flag,
-which will tell EasyInstall to install the package as a zipfile anyway.  Or,
-you can use the ``--always-unzip`` flag, in which case EasyInstall will always
-unzip, even if its analysis says the package is safe to run as a zipfile.
-
-Normally, however, it is simplest to let EasyInstall handle the determination
-of whether to zip or unzip, and only specify overrides when needed to work
-around a problem.  If you find you need to override EasyInstall's guesses, you
-may want to contact the package author and the EasyInstall maintainers, so that
-they can make appropriate changes in future versions.
-
-(Note: If a package uses ``setuptools`` in its setup script, the package author
-has the option to declare the package safe or unsafe for zipped usage via the
-``zip_safe`` argument to ``setup()``.  If the package author makes such a
-declaration, EasyInstall believes the package's author and does not perform its
-own analysis.  However, your command-line option, if any, will still override
-the package author's choice.)
-
-
-Reference Manual
-================
-
-Configuration Files
--------------------
-
-(New in 0.4a2)
-
-You may specify default options for EasyInstall using the standard
-distutils configuration files, under the command heading ``easy_install``.
-EasyInstall will look first for a ``setup.cfg`` file in the current directory,
-then a ``~/.pydistutils.cfg`` or ``$HOME\\pydistutils.cfg`` (on Unix-like OSes
-and Windows, respectively), and finally a ``distutils.cfg`` file in the
-``distutils`` package directory.  Here's a simple example:
-
-.. code-block:: ini
-
-    [easy_install]
-
-    # set the default location to install packages
-    install_dir = /home/me/lib/python
-
-    # Notice that indentation can be used to continue an option
-    # value; this is especially useful for the "--find-links"
-    # option, which tells easy_install to use download links on
-    # these pages before consulting PyPI:
-    #
-    find_links = http://sqlobject.org/
-                 http://peak.telecommunity.com/dist/
-
-In addition to accepting configuration for its own options under
-``[easy_install]``, EasyInstall also respects defaults specified for other
-distutils commands.  For example, if you don't set an ``install_dir`` for
-``[easy_install]``, but *have* set an ``install_lib`` for the ``[install]``
-command, this will become EasyInstall's default installation directory.  Thus,
-if you are already using distutils configuration files to set default install
-locations, build options, etc., EasyInstall will respect your existing settings
-until and unless you override them explicitly in an ``[easy_install]`` section.
-
-For more information, see also the current Python documentation on the `use and
-location of distutils configuration files <http://docs.python.org/inst/config-syntax.html>`_.
-
-Notice that ``easy_install`` will use the ``setup.cfg`` from the current
-working directory only if it was triggered from ``setup.py`` through the
-``install_requires`` option. The standalone command will not use that file.
-
-Command-Line Options
---------------------
-
-``--zip-ok, -z``
-    Install all packages as zip files, even if they are marked as unsafe for
-    running as a zipfile.  This can be useful when EasyInstall's analysis
-    of a non-setuptools package is too conservative, but keep in mind that
-    the package may not work correctly.  (Changed in 0.5a9; previously this
-    option was required in order for zipped installation to happen at all.)
-
-``--always-unzip, -Z``
-    Don't install any packages as zip files, even if the packages are marked
-    as safe for running as a zipfile.  This can be useful if a package does
-    something unsafe, but not in a way that EasyInstall can easily detect.
-    EasyInstall's default analysis is currently very conservative, however, so
-    you should only use this option if you've had problems with a particular
-    package, and *after* reporting the problem to the package's maintainer and
-    to the EasyInstall maintainers.
-
-    (Note: the ``-z/-Z`` options only affect the installation of newly-built
-    or downloaded packages that are not already installed in the target
-    directory; if you want to convert an existing installed version from
-    zipped to unzipped or vice versa, you'll need to delete the existing
-    version first, and re-run EasyInstall.)
-
-``--multi-version, -m``
-    "Multi-version" mode. Specifying this option prevents ``easy_install`` from
-    adding an ``easy-install.pth`` entry for the package being installed, and
-    if an entry for any version the package already exists, it will be removed
-    upon successful installation. In multi-version mode, no specific version of
-    the package is available for importing, unless you use
-    ``pkg_resources.require()`` to put it on ``sys.path``. This can be as
-    simple as::
-
-        from pkg_resources import require
-        require("SomePackage", "OtherPackage", "MyPackage")
-
-    which will put the latest installed version of the specified packages on
-    ``sys.path`` for you. (For more advanced uses, like selecting specific
-    versions and enabling optional dependencies, see the ``pkg_resources`` API
-    doc.)
-
-    Changed in 0.6a10: this option is no longer silently enabled when
-    installing to a non-PYTHONPATH, non-"site" directory.  You must always
-    explicitly use this option if you want it to be active.
-
-``--upgrade, -U``   (New in 0.5a4)
-    By default, EasyInstall only searches online if a project/version
-    requirement can't be met by distributions already installed
-    on sys.path or the installation directory.  However, if you supply the
-    ``--upgrade`` or ``-U`` flag, EasyInstall will always check the package
-    index and ``--find-links`` URLs before selecting a version to install.  In
-    this way, you can force EasyInstall to use the latest available version of
-    any package it installs (subject to any version requirements that might
-    exclude such later versions).
-
-``--install-dir=DIR, -d DIR``
-    Set the installation directory. It is up to you to ensure that this
-    directory is on ``sys.path`` at runtime, and to use
-    ``pkg_resources.require()`` to enable the installed package(s) that you
-    need.
-
-    (New in 0.4a2) If this option is not directly specified on the command line
-    or in a distutils configuration file, the distutils default installation
-    location is used.  Normally, this would be the ``site-packages`` directory,
-    but if you are using distutils configuration files, setting things like
-    ``prefix`` or ``install_lib``, then those settings are taken into
-    account when computing the default installation directory, as is the
-    ``--prefix`` option.
-
-``--script-dir=DIR, -s DIR``
-    Set the script installation directory.  If you don't supply this option
-    (via the command line or a configuration file), but you *have* supplied
-    an ``--install-dir`` (via command line or config file), then this option
-    defaults to the same directory, so that the scripts will be able to find
-    their associated package installation.  Otherwise, this setting defaults
-    to the location where the distutils would normally install scripts, taking
-    any distutils configuration file settings into account.
-
-``--exclude-scripts, -x``
-    Don't install scripts.  This is useful if you need to install multiple
-    versions of a package, but do not want to reset the version that will be
-    run by scripts that are already installed.
-
-``--user`` (New in 0.6.11)
-    Use the the user-site-packages as specified in :pep:`370`
-    instead of the global site-packages.
-
-``--always-copy, -a``   (New in 0.5a4)
-    Copy all needed distributions to the installation directory, even if they
-    are already present in a directory on sys.path.  In older versions of
-    EasyInstall, this was the default behavior, but now you must explicitly
-    request it.  By default, EasyInstall will no longer copy such distributions
-    from other sys.path directories to the installation directory, unless you
-    explicitly gave the distribution's filename on the command line.
-
-    Note that as of 0.6a10, using this option excludes "system" and
-    "development" eggs from consideration because they can't be reliably
-    copied.  This may cause EasyInstall to choose an older version of a package
-    than what you expected, or it may cause downloading and installation of a
-    fresh copy of something that's already installed.  You will see warning
-    messages for any eggs that EasyInstall skips, before it falls back to an
-    older version or attempts to download a fresh copy.
-
-``--find-links=URLS_OR_FILENAMES, -f URLS_OR_FILENAMES``
-    Scan the specified "download pages" or directories for direct links to eggs
-    or other distributions.  Any existing file or directory names or direct
-    download URLs are immediately added to EasyInstall's search cache, and any
-    indirect URLs (ones that don't point to eggs or other recognized archive
-    formats) are added to a list of additional places to search for download
-    links.  As soon as EasyInstall has to go online to find a package (either
-    because it doesn't exist locally, or because ``--upgrade`` or ``-U`` was
-    used), the specified URLs will be downloaded and scanned for additional
-    direct links.
-
-    Eggs and archives found by way of ``--find-links`` are only downloaded if
-    they are needed to meet a requirement specified on the command line; links
-    to unneeded packages are ignored.
-
-    If all requested packages can be found using links on the specified
-    download pages, the Python Package Index will not be consulted unless you
-    also specified the ``--upgrade`` or ``-U`` option.
-
-    (Note: if you want to refer to a local HTML file containing links, you must
-    use a ``file:`` URL, as filenames that do not refer to a directory, egg, or
-    archive are ignored.)
-
-    You may specify multiple URLs or file/directory names with this option,
-    separated by whitespace.  Note that on the command line, you will probably
-    have to surround the URL list with quotes, so that it is recognized as a
-    single option value.  You can also specify URLs in a configuration file;
-    see `Configuration Files`_, above.
-
-    Changed in 0.6a10: previously all URLs and directories passed to this
-    option were scanned as early as possible, but from 0.6a10 on, only
-    directories and direct archive links are scanned immediately; URLs are not
-    retrieved unless a package search was already going to go online due to a
-    package not being available locally, or due to the use of the ``--update``
-    or ``-U`` option.
-
-``--no-find-links`` Blocks the addition of any link. (New in Distribute 0.6.11)
-    This is useful if you want to avoid adding links defined in a project
-    easy_install is installing (wether it's a requested project or a
-    dependency.). When used, ``--find-links`` is ignored.
-
-``--delete-conflicting, -D`` (Removed in 0.6a11)
-    (As of 0.6a11, this option is no longer necessary; please do not use it!)
-
-    If you are replacing a package that was previously installed *without*
-    using EasyInstall, the old version may end up on ``sys.path`` before the
-    version being installed with EasyInstall.  EasyInstall will normally abort
-    the installation of a package if it detects such a conflict, and ask you to
-    manually remove the conflicting files or directories.  If you specify this
-    option, however, EasyInstall will attempt to delete the files or
-    directories itself, and then proceed with the installation.
-
-``--ignore-conflicts-at-my-risk`` (Removed in 0.6a11)
-    (As of 0.6a11, this option is no longer necessary; please do not use it!)
-
-    Ignore conflicting packages and proceed with installation anyway, even
-    though it means the package probably won't work properly.  If the
-    conflicting package is in a directory you can't write to, this may be your
-    only option, but you will need to take more invasive measures to get the
-    installed package to work, like manually adding it to ``PYTHONPATH`` or to
-    ``sys.path`` at runtime.
-
-``--index-url=URL, -i URL`` (New in 0.4a1; default changed in 0.6c7)
-    Specifies the base URL of the Python Package Index.  The default is
-    http://pypi.python.org/simple if not specified.  When a package is requested
-    that is not locally available or linked from a ``--find-links`` download
-    page, the package index will be searched for download pages for the needed
-    package, and those download pages will be searched for links to download
-    an egg or source distribution.
-
-``--editable, -e`` (New in 0.6a1)
-    Only find and download source distributions for the specified projects,
-    unpacking them to subdirectories of the specified ``--build-directory``.
-    EasyInstall will not actually build or install the requested projects or
-    their dependencies; it will just find and extract them for you.  See
-    `Editing and Viewing Source Packages`_ above for more details.
-
-``--build-directory=DIR, -b DIR`` (UPDATED in 0.6a1)
-    Set the directory used to build source packages.  If a package is built
-    from a source distribution or checkout, it will be extracted to a
-    subdirectory of the specified directory.  The subdirectory will have the
-    same name as the extracted distribution's project, but in all-lowercase.
-    If a file or directory of that name already exists in the given directory,
-    a warning will be printed to the console, and the build will take place in
-    a temporary directory instead.
-
-    This option is most useful in combination with the ``--editable`` option,
-    which forces EasyInstall to *only* find and extract (but not build and
-    install) source distributions.  See `Editing and Viewing Source Packages`_,
-    above, for more information.
-
-``--verbose, -v, --quiet, -q`` (New in 0.4a4)
-    Control the level of detail of EasyInstall's progress messages.  The
-    default detail level is "info", which prints information only about
-    relatively time-consuming operations like running a setup script, unpacking
-    an archive, or retrieving a URL.  Using ``-q`` or ``--quiet`` drops the
-    detail level to "warn", which will only display installation reports,
-    warnings, and errors.  Using ``-v`` or ``--verbose`` increases the detail
-    level to include individual file-level operations, link analysis messages,
-    and distutils messages from any setup scripts that get run.  If you include
-    the ``-v`` option more than once, the second and subsequent uses are passed
-    down to any setup scripts, increasing the verbosity of their reporting as
-    well.
-
-``--dry-run, -n`` (New in 0.4a4)
-    Don't actually install the package or scripts.  This option is passed down
-    to any setup scripts run, so packages should not actually build either.
-    This does *not* skip downloading, nor does it skip extracting source
-    distributions to a temporary/build directory.
-
-``--optimize=LEVEL``, ``-O LEVEL`` (New in 0.4a4)
-    If you are installing from a source distribution, and are *not* using the
-    ``--zip-ok`` option, this option controls the optimization level for
-    compiling installed ``.py`` files to ``.pyo`` files.  It does not affect
-    the compilation of modules contained in ``.egg`` files, only those in
-    ``.egg`` directories.  The optimization level can be set to 0, 1, or 2;
-    the default is 0 (unless it's set under ``install`` or ``install_lib`` in
-    one of your distutils configuration files).
-
-``--record=FILENAME``  (New in 0.5a4)
-    Write a record of all installed files to FILENAME.  This is basically the
-    same as the same option for the standard distutils "install" command, and
-    is included for compatibility with tools that expect to pass this option
-    to "setup.py install".
-
-``--site-dirs=DIRLIST, -S DIRLIST``   (New in 0.6a1)
-    Specify one or more custom "site" directories (separated by commas).
-    "Site" directories are directories where ``.pth`` files are processed, such
-    as the main Python ``site-packages`` directory.  As of 0.6a10, EasyInstall
-    automatically detects whether a given directory processes ``.pth`` files
-    (or can be made to do so), so you should not normally need to use this
-    option.  It is is now only necessary if you want to override EasyInstall's
-    judgment and force an installation directory to be treated as if it
-    supported ``.pth`` files.
-
-``--no-deps, -N``  (New in 0.6a6)
-    Don't install any dependencies.  This is intended as a convenience for
-    tools that wrap eggs in a platform-specific packaging system.  (We don't
-    recommend that you use it for anything else.)
-
-``--allow-hosts=PATTERNS, -H PATTERNS``   (New in 0.6a6)
-    Restrict downloading and spidering to hosts matching the specified glob
-    patterns.  E.g. ``-H *.python.org`` restricts web access so that only
-    packages listed and downloadable from machines in the ``python.org``
-    domain.  The glob patterns must match the *entire* user/host/port section of
-    the target URL(s).  For example, ``*.python.org`` will NOT accept a URL
-    like ``http://python.org/foo`` or ``http://www.python.org:8080/``.
-    Multiple patterns can be specified by separting them with commas.  The
-    default pattern is ``*``, which matches anything.
-
-    In general, this option is mainly useful for blocking EasyInstall's web
-    access altogether (e.g. ``-Hlocalhost``), or to restrict it to an intranet
-    or other trusted site.  EasyInstall will do the best it can to satisfy
-    dependencies given your host restrictions, but of course can fail if it
-    can't find suitable packages.  EasyInstall displays all blocked URLs, so
-    that you can adjust your ``--allow-hosts`` setting if it is more strict
-    than you intended.  Some sites may wish to define a restrictive default
-    setting for this option in their `configuration files`_, and then manually
-    override the setting on the command line as needed.
-
-``--prefix=DIR`` (New in 0.6a10)
-    Use the specified directory as a base for computing the default
-    installation and script directories.  On Windows, the resulting default
-    directories will be ``prefix\\Lib\\site-packages`` and ``prefix\\Scripts``,
-    while on other platforms the defaults will be
-    ``prefix/lib/python2.X/site-packages`` (with the appropriate version
-    substituted) for libraries and ``prefix/bin`` for scripts.
-
-    Note that the ``--prefix`` option only sets the *default* installation and
-    script directories, and does not override the ones set on the command line
-    or in a configuration file.
-
-``--local-snapshots-ok, -l`` (New in 0.6c6)
-    Normally, EasyInstall prefers to only install *released* versions of
-    projects, not in-development ones, because such projects may not
-    have a currently-valid version number.  So, it usually only installs them
-    when their ``setup.py`` directory is explicitly passed on the command line.
-
-    However, if this option is used, then any in-development projects that were
-    installed using the ``setup.py develop`` command, will be used to build
-    eggs, effectively upgrading the "in-development" project to a snapshot
-    release.  Normally, this option is used only in conjunction with the
-    ``--always-copy`` option to create a distributable snapshot of every egg
-    needed to run an application.
-
-    Note that if you use this option, you must make sure that there is a valid
-    version number (such as an SVN revision number tag) for any in-development
-    projects that may be used, as otherwise EasyInstall may not be able to tell
-    what version of the project is "newer" when future installations or
-    upgrades are attempted.
-
-
-.. _non-root installation:
-
-Custom Installation Locations
------------------------------
-
-By default, EasyInstall installs python packages into Python's main ``site-packages`` directory,
-and manages them using a custom ``.pth`` file in that same directory.
-
-Very often though, a user or developer wants ``easy_install`` to install and manage python packages
-in an alternative location, usually for one of 3 reasons:
-
-1. They don't have access to write to the main Python site-packages directory.
-
-2. They want a user-specific stash of packages, that is not visible to other users.
-
-3. They want to isolate a set of packages to a specific python application, usually to minimize
-   the possibility of version conflicts.
-
-Historically, there have been many approaches to achieve custom installation.
-The following section lists only the easiest and most relevant approaches [1]_.
-
-`Use the "--user" option`_
-
-`Use the "--user" option and customize "PYTHONUSERBASE"`_
-
-`Use "virtualenv"`_
-
-.. [1] There are older ways to achieve custom installation using various ``easy_install`` and ``setup.py install`` options, combined with ``PYTHONPATH`` and/or ``PYTHONUSERBASE`` alterations, but all of these are effectively deprecated by the User scheme brought in by `PEP-370`_ in Python 2.6.
-
-.. _PEP-370: http://www.python.org/dev/peps/pep-0370/
-
-
-Use the "--user" option
-~~~~~~~~~~~~~~~~~~~~~~~
-With Python 2.6 came the User scheme for installation, which means that all
-python distributions support an alternative install location that is specific to a user [2]_ [3]_.
-The Default location for each OS is explained in the python documentation
-for the ``site.USER_BASE`` variable.  This mode of installation can be turned on by
-specifying the ``--user`` option to ``setup.py install`` or ``easy_install``.
-This approach serves the need to have a user-specific stash of packages.
-
-.. [2] Prior to Python2.6, Mac OS X offered a form of the User scheme. That is now subsumed into the User scheme introduced in Python 2.6.
-.. [3] Prior to the User scheme, there was the Home scheme, which is still available, but requires more effort than the User scheme to get packages recognized.
-
-Use the "--user" option and customize "PYTHONUSERBASE"
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-The User scheme install location can be customized by setting the ``PYTHONUSERBASE`` environment
-variable, which updates the value of ``site.USER_BASE``.  To isolate packages to a specific
-application, simply set the OS environment of that application to a specific value of
-``PYTHONUSERBASE``, that contains just those packages.
-
-Use "virtualenv"
-~~~~~~~~~~~~~~~~
-"virtualenv" is a 3rd-party python package that effectively "clones" a python installation, thereby
-creating an isolated location to intall packages.  The evolution of "virtualenv" started before the existence
-of the User installation scheme.  "virtualenv" provides a version of ``easy_install`` that is
-scoped to the cloned python install and is used in the normal way. "virtualenv" does offer various features
-that the User installation scheme alone does not provide, e.g. the ability to hide the main python site-packages.
-
-Please refer to the `virtualenv`_ documentation for more details.
-
-.. _virtualenv: http://pypi.python.org/pypi/virtualenv
-
-
-
-Package Index "API"
--------------------
-
-Custom package indexes (and PyPI) must follow the following rules for
-EasyInstall to be able to look up and download packages:
-
-1. Except where stated otherwise, "pages" are HTML or XHTML, and "links"
-   refer to ``href`` attributes.
-
-2. Individual project version pages' URLs must be of the form
-   ``base/projectname/version``, where ``base`` is the package index's base URL.
-
-3. Omitting the ``/version`` part of a project page's URL (but keeping the
-   trailing ``/``) should result in a page that is either:
-
-   a) The single active version of that project, as though the version had been
-      explicitly included, OR
-
-   b) A page with links to all of the active version pages for that project.
-
-4. Individual project version pages should contain direct links to downloadable
-   distributions where possible.  It is explicitly permitted for a project's
-   "long_description" to include URLs, and these should be formatted as HTML
-   links by the package index, as EasyInstall does no special processing to
-   identify what parts of a page are index-specific and which are part of the
-   project's supplied description.
-
-5. Where available, MD5 information should be added to download URLs by
-   appending a fragment identifier of the form ``#md5=...``, where ``...`` is
-   the 32-character hex MD5 digest.  EasyInstall will verify that the
-   downloaded file's MD5 digest matches the given value.
-
-6. Individual project version pages should identify any "homepage" or
-   "download" URLs using ``rel="homepage"`` and ``rel="download"`` attributes
-   on the HTML elements linking to those URLs. Use of these attributes will
-   cause EasyInstall to always follow the provided links, unless it can be
-   determined by inspection that they are downloadable distributions. If the
-   links are not to downloadable distributions, they are retrieved, and if they
-   are HTML, they are scanned for download links. They are *not* scanned for
-   additional "homepage" or "download" links, as these are only processed for
-   pages that are part of a package index site.
-
-7. The root URL of the index, if retrieved with a trailing ``/``, must result
-   in a page containing links to *all* projects' active version pages.
-
-   (Note: This requirement is a workaround for the absence of case-insensitive
-   ``safe_name()`` matching of project names in URL paths. If project names are
-   matched in this fashion (e.g. via the PyPI server, mod_rewrite, or a similar
-   mechanism), then it is not necessary to include this all-packages listing
-   page.)
-
-8. If a package index is accessed via a ``file://`` URL, then EasyInstall will
-   automatically use ``index.html`` files, if present, when trying to read a
-   directory with a trailing ``/`` on the URL.
-
-
-Backward Compatibility
-~~~~~~~~~~~~~~~~~~~~~~
-
-Package indexes that wish to support setuptools versions prior to 0.6b4 should
-also follow these rules:
-
-* Homepage and download links must be preceded with ``"<th>Home Page"`` or
-  ``"<th>Download URL"``, in addition to (or instead of) the ``rel=""``
-  attributes on the actual links.  These marker strings do not need to be
-  visible, or uncommented, however!  For example, the following is a valid
-  homepage link that will work with any version of setuptools::
-
-    <li>
-     <strong>Home Page:</strong>
-     <!-- <th>Home Page -->
-     <a rel="homepage" href="http://sqlobject.org">http://sqlobject.org</a>
-    </li>
-
-  Even though the marker string is in an HTML comment, older versions of
-  EasyInstall will still "see" it and know that the link that follows is the
-  project's home page URL.
-
-* The pages described by paragraph 3(b) of the preceding section *must*
-  contain the string ``"Index of Packages</title>"`` somewhere in their text.
-  This can be inside of an HTML comment, if desired, and it can be anywhere
-  in the page.  (Note: this string MUST NOT appear on normal project pages, as
-  described in paragraphs 2 and 3(a)!)
-
-In addition, for compatibility with PyPI versions that do not use ``#md5=``
-fragment IDs, EasyInstall uses the following regular expression to match PyPI's
-displayed MD5 info (broken onto two lines for readability)::
-
-    <a href="([^"#]+)">([^<]+)</a>\n\s+\(<a href="[^?]+\?:action=show_md5
-    &amp;digest=([0-9a-f]{32})">md5</a>\)
-
-History
-=======
-
-0.6c9
- * Fixed ``win32.exe`` support for .pth files, so unnecessary directory nesting
-   is flattened out in the resulting egg.  (There was a case-sensitivity
-   problem that affected some distributions, notably ``pywin32``.)
-
- * Prevent ``--help-commands`` and other junk from showing under Python 2.5
-   when running ``easy_install --help``.
-
- * Fixed GUI scripts sometimes not executing on Windows
-
- * Fixed not picking up dependency links from recursive dependencies.
-
- * Only make ``.py``, ``.dll`` and ``.so`` files executable when unpacking eggs
-
- * Changes for Jython compatibility
-
- * Improved error message when a requirement is also a directory name, but the
-   specified directory is not a source package.
-
- * Fixed ``--allow-hosts`` option blocking ``file:`` URLs
-
- * Fixed HTTP SVN detection failing when the page title included a project
-   name (e.g. on SourceForge-hosted SVN)
-
- * Fix Jython script installation to handle ``#!`` lines better when
-   ``sys.executable`` is a script.
-
- * Removed use of deprecated ``md5`` module if ``hashlib`` is available
-
- * Keep site directories (e.g. ``site-packages``) from being included in
-   ``.pth`` files.
-
-0.6c7
- * ``ftp:`` download URLs now work correctly.
-
- * The default ``--index-url`` is now ``http://pypi.python.org/simple``, to use
-   the Python Package Index's new simpler (and faster!) REST API.
-
-0.6c6
- * EasyInstall no longer aborts the installation process if a URL it wants to
-   retrieve can't be downloaded, unless the URL is an actual package download.
-   Instead, it issues a warning and tries to keep going.
-
- * Fixed distutils-style scripts originally built on Windows having their line
-   endings doubled when installed on any platform.
-
- * Added ``--local-snapshots-ok`` flag, to allow building eggs from projects
-   installed using ``setup.py develop``.
-
- * Fixed not HTML-decoding URLs scraped from web pages
-
-0.6c5
- * Fixed ``.dll`` files on Cygwin not having executable permisions when an egg
-   is installed unzipped.
-
-0.6c4
- * Added support for HTTP "Basic" authentication using ``http://user:pass@host``
-   URLs.  If a password-protected page contains links to the same host (and
-   protocol), those links will inherit the credentials used to access the
-   original page.
-
- * Removed all special support for Sourceforge mirrors, as Sourceforge's
-   mirror system now works well for non-browser downloads.
-
- * Fixed not recognizing ``win32.exe`` installers that included a custom
-   bitmap.
-
- * Fixed not allowing ``os.open()`` of paths outside the sandbox, even if they
-   are opened read-only (e.g. reading ``/dev/urandom`` for random numbers, as
-   is done by ``os.urandom()`` on some platforms).
-
- * Fixed a problem with ``.pth`` testing on Windows when ``sys.executable``
-   has a space in it (e.g., the user installed Python to a ``Program Files``
-   directory).
-
-0.6c3
- * You can once again use "python -m easy_install" with Python 2.4 and above.
-
- * Python 2.5 compatibility fixes added.
-
-0.6c2
- * Windows script wrappers now support quoted arguments and arguments
-   containing spaces.  (Patch contributed by Jim Fulton.)
-
- * The ``ez_setup.py`` script now actually works when you put a setuptools
-   ``.egg`` alongside it for bootstrapping an offline machine.
-
- * A writable installation directory on ``sys.path`` is no longer required to
-   download and extract a source distribution using ``--editable``.
-
- * Generated scripts now use ``-x`` on the ``#!`` line when ``sys.executable``
-   contains non-ASCII characters, to prevent deprecation warnings about an
-   unspecified encoding when the script is run.
-
-0.6c1
- * EasyInstall now includes setuptools version information in the
-   ``User-Agent`` string sent to websites it visits.
-
-0.6b4
- * Fix creating Python wrappers for non-Python scripts
-
- * Fix ``ftp://`` directory listing URLs from causing a crash when used in the
-   "Home page" or "Download URL" slots on PyPI.
-
- * Fix ``sys.path_importer_cache`` not being updated when an existing zipfile
-   or directory is deleted/overwritten.
-
- * Fix not recognizing HTML 404 pages from package indexes.
-
- * Allow ``file://`` URLs to be used as a package index.  URLs that refer to
-   directories will use an internally-generated directory listing if there is
-   no ``index.html`` file in the directory.
-
- * Allow external links in a package index to be specified using
-   ``rel="homepage"`` or ``rel="download"``, without needing the old
-   PyPI-specific visible markup.
-
- * Suppressed warning message about possibly-misspelled project name, if an egg
-   or link for that project name has already been seen.
-
-0.6b3
- * Fix local ``--find-links`` eggs not being copied except with
-   ``--always-copy``.
-
- * Fix sometimes not detecting local packages installed outside of "site"
-   directories.
-
- * Fix mysterious errors during initial ``setuptools`` install, caused by
-   ``ez_setup`` trying to run ``easy_install`` twice, due to a code fallthru
-   after deleting the egg from which it's running.
-
-0.6b2
- * Don't install or update a ``site.py`` patch when installing to a
-   ``PYTHONPATH`` directory with ``--multi-version``, unless an
-   ``easy-install.pth`` file is already in use there.
-
- * Construct ``.pth`` file paths in such a way that installing an egg whose
-   name begins with ``import`` doesn't cause a syntax error.
-
- * Fixed a bogus warning message that wasn't updated since the 0.5 versions.
-
-0.6b1
- * Better ambiguity management: accept ``#egg`` name/version even if processing
-   what appears to be a correctly-named distutils file, and ignore ``.egg``
-   files with no ``-``, since valid Python ``.egg`` files always have a version
-   number (but Scheme eggs often don't).
-
- * Support ``file://`` links to directories in ``--find-links``, so that
-   easy_install can build packages from local source checkouts.
-
- * Added automatic retry for Sourceforge mirrors.  The new download process is
-   to first just try dl.sourceforge.net, then randomly select mirror IPs and
-   remove ones that fail, until something works.  The removed IPs stay removed
-   for the remainder of the run.
-
- * Ignore bdist_dumb distributions when looking at download URLs.
-
-0.6a11
- * Process ``dependency_links.txt`` if found in a distribution, by adding the
-   URLs to the list for scanning.
-
- * Use relative paths in ``.pth`` files when eggs are being installed to the
-   same directory as the ``.pth`` file.  This maximizes portability of the
-   target directory when building applications that contain eggs.
-
- * Added ``easy_install-N.N`` script(s) for convenience when using multiple
-   Python versions.
-
- * Added automatic handling of installation conflicts.  Eggs are now shifted to
-   the front of sys.path, in an order consistent with where they came from,
-   making EasyInstall seamlessly co-operate with system package managers.
-
-   The ``--delete-conflicting`` and ``--ignore-conflicts-at-my-risk`` options
-   are now no longer necessary, and will generate warnings at the end of a
-   run if you use them.
-
- * Don't recursively traverse subdirectories given to ``--find-links``.
-
-0.6a10
- * Added exhaustive testing of the install directory, including a spawn test
-   for ``.pth`` file support, and directory writability/existence checks.  This
-   should virtually eliminate the need to set or configure ``--site-dirs``.
-
- * Added ``--prefix`` option for more do-what-I-mean-ishness in the absence of
-   RTFM-ing.  :)
-
- * Enhanced ``PYTHONPATH`` support so that you don't have to put any eggs on it
-   manually to make it work.  ``--multi-version`` is no longer a silent
-   default; you must explicitly use it if installing to a non-PYTHONPATH,
-   non-"site" directory.
-
- * Expand ``$variables`` used in the ``--site-dirs``, ``--build-directory``,
-   ``--install-dir``, and ``--script-dir`` options, whether on the command line
-   or in configuration files.
-
- * Improved SourceForge mirror processing to work faster and be less affected
-   by transient HTML changes made by SourceForge.
-
- * PyPI searches now use the exact spelling of requirements specified on the
-   command line or in a project's ``install_requires``.  Previously, a
-   normalized form of the name was used, which could lead to unnecessary
-   full-index searches when a project's name had an underscore (``_``) in it.
-
- * EasyInstall can now download bare ``.py`` files and wrap them in an egg,
-   as long as you include an ``#egg=name-version`` suffix on the URL, or if
-   the ``.py`` file is listed as the "Download URL" on the project's PyPI page.
-   This allows third parties to "package" trivial Python modules just by
-   linking to them (e.g. from within their own PyPI page or download links
-   page).
-
- * The ``--always-copy`` option now skips "system" and "development" eggs since
-   they can't be reliably copied.  Note that this may cause EasyInstall to
-   choose an older version of a package than what you expected, or it may cause
-   downloading and installation of a fresh version of what's already installed.
-
- * The ``--find-links`` option previously scanned all supplied URLs and
-   directories as early as possible, but now only directories and direct
-   archive links are scanned immediately.  URLs are not retrieved unless a
-   package search was already going to go online due to a package not being
-   available locally, or due to the use of the ``--update`` or ``-U`` option.
-
- * Fixed the annoying ``--help-commands`` wart.
-
-0.6a9
- * Fixed ``.pth`` file processing picking up nested eggs (i.e. ones inside
-   "baskets") when they weren't explicitly listed in the ``.pth`` file.
-
- * If more than one URL appears to describe the exact same distribution, prefer
-   the shortest one.  This helps to avoid "table of contents" CGI URLs like the
-   ones on effbot.org.
-
- * Quote arguments to python.exe (including python's path) to avoid problems
-   when Python (or a script) is installed in a directory whose name contains
-   spaces on Windows.
-
- * Support full roundtrip translation of eggs to and from ``bdist_wininst``
-   format.  Running ``bdist_wininst`` on a setuptools-based package wraps the
-   egg in an .exe that will safely install it as an egg (i.e., with metadata
-   and entry-point wrapper scripts), and ``easy_install`` can turn the .exe
-   back into an ``.egg`` file or directory and install it as such.
-
-0.6a8
- * Update for changed SourceForge mirror format
-
- * Fixed not installing dependencies for some packages fetched via Subversion
-
- * Fixed dependency installation with ``--always-copy`` not using the same
-   dependency resolution procedure as other operations.
-
- * Fixed not fully removing temporary directories on Windows, if a Subversion
-   checkout left read-only files behind
-
- * Fixed some problems building extensions when Pyrex was installed, especially
-   with Python 2.4 and/or packages using SWIG.
-
-0.6a7
- * Fixed not being able to install Windows script wrappers using Python 2.3
-
-0.6a6
- * Added support for "traditional" PYTHONPATH-based non-root installation, and
-   also the convenient ``virtual-python.py`` script, based on a contribution
-   by Ian Bicking.  The setuptools egg now contains a hacked ``site`` module
-   that makes the PYTHONPATH-based approach work with .pth files, so that you
-   can get the full EasyInstall feature set on such installations.
-
- * Added ``--no-deps`` and ``--allow-hosts`` options.
-
- * Improved Windows ``.exe`` script wrappers so that the script can have the
-   same name as a module without confusing Python.
-
- * Changed dependency processing so that it's breadth-first, allowing a
-   depender's preferences to override those of a dependee, to prevent conflicts
-   when a lower version is acceptable to the dependee, but not the depender.
-   Also, ensure that currently installed/selected packages aren't given
-   precedence over ones desired by a package being installed, which could
-   cause conflict errors.
-
-0.6a3
- * Improved error message when trying to use old ways of running
-   ``easy_install``.  Removed the ability to run via ``python -m`` or by
-   running ``easy_install.py``; ``easy_install`` is the command to run on all
-   supported platforms.
-
- * Improved wrapper script generation and runtime initialization so that a
-   VersionConflict doesn't occur if you later install a competing version of a
-   needed package as the default version of that package.
-
- * Fixed a problem parsing version numbers in ``#egg=`` links.
-
-0.6a2
- * EasyInstall can now install "console_scripts" defined by packages that use
-   ``setuptools`` and define appropriate entry points.  On Windows, console
-   scripts get an ``.exe`` wrapper so you can just type their name.  On other
-   platforms, the scripts are installed without a file extension.
-
- * Using ``python -m easy_install`` or running ``easy_install.py`` is now
-   DEPRECATED, since an ``easy_install`` wrapper is now available on all
-   platforms.
-
-0.6a1
- * EasyInstall now does MD5 validation of downloads from PyPI, or from any link
-   that has an "#md5=..." trailer with a 32-digit lowercase hex md5 digest.
-
- * EasyInstall now handles symlinks in target directories by removing the link,
-   rather than attempting to overwrite the link's destination.  This makes it
-   easier to set up an alternate Python "home" directory (as described above in
-   the `Non-Root Installation`_ section).
-
- * Added support for handling MacOS platform information in ``.egg`` filenames,
-   based on a contribution by Kevin Dangoor.  You may wish to delete and
-   reinstall any eggs whose filename includes "darwin" and "Power_Macintosh",
-   because the format for this platform information has changed so that minor
-   OS X upgrades (such as 10.4.1 to 10.4.2) do not cause eggs built with a
-   previous OS version to become obsolete.
-
- * easy_install's dependency processing algorithms have changed.  When using
-   ``--always-copy``, it now ensures that dependencies are copied too.  When
-   not using ``--always-copy``, it tries to use a single resolution loop,
-   rather than recursing.
-
- * Fixed installing extra ``.pyc`` or ``.pyo`` files for scripts with ``.py``
-   extensions.
-
- * Added ``--site-dirs`` option to allow adding custom "site" directories.
-   Made ``easy-install.pth`` work in platform-specific alternate site
-   directories (e.g. ``~/Library/Python/2.x/site-packages`` on Mac OS X).
-
- * If you manually delete the current version of a package, the next run of
-   EasyInstall against the target directory will now remove the stray entry
-   from the ``easy-install.pth`` file.
-
- * EasyInstall now recognizes URLs with a ``#egg=project_name`` fragment ID
-   as pointing to the named project's source checkout.  Such URLs have a lower
-   match precedence than any other kind of distribution, so they'll only be
-   used if they have a higher version number than any other available
-   distribution, or if you use the ``--editable`` option.  The ``#egg``
-   fragment can contain a version if it's formatted as ``#egg=proj-ver``,
-   where ``proj`` is the project name, and ``ver`` is the version number.  You
-   *must* use the format for these values that the ``bdist_egg`` command uses;
-   i.e., all non-alphanumeric runs must be condensed to single underscore
-   characters.
-
- * Added the ``--editable`` option; see `Editing and Viewing Source Packages`_
-   above for more info.  Also, slightly changed the behavior of the
-   ``--build-directory`` option.
-
- * Fixed the setup script sandbox facility not recognizing certain paths as
-   valid on case-insensitive platforms.
-
-0.5a12
- * Fix ``python -m easy_install`` not working due to setuptools being installed
-   as a zipfile.  Update safety scanner to check for modules that might be used
-   as ``python -m`` scripts.
-
- * Misc. fixes for win32.exe support, including changes to support Python 2.4's
-   changed ``bdist_wininst`` format.
-
-0.5a10
- * Put the ``easy_install`` module back in as a module, as it's needed for
-   ``python -m`` to run it!
-
- * Allow ``--find-links/-f`` to accept local directories or filenames as well
-   as URLs.
-
-0.5a9
- * EasyInstall now automatically detects when an "unmanaged" package or
-   module is going to be on ``sys.path`` ahead of a package you're installing,
-   thereby preventing the newer version from being imported.  By default, it
-   will abort installation to alert you of the problem, but there are also
-   new options (``--delete-conflicting`` and ``--ignore-conflicts-at-my-risk``)
-   available to change the default behavior.  (Note: this new feature doesn't
-   take effect for egg files that were built with older ``setuptools``
-   versions, because they lack the new metadata file required to implement it.)
-
- * The ``easy_install`` distutils command now uses ``DistutilsError`` as its
-   base error type for errors that should just issue a message to stderr and
-   exit the program without a traceback.
-
- * EasyInstall can now be given a path to a directory containing a setup
-   script, and it will attempt to build and install the package there.
-
- * EasyInstall now performs a safety analysis on module contents to determine
-   whether a package is likely to run in zipped form, and displays
-   information about what modules may be doing introspection that would break
-   when running as a zipfile.
-
- * Added the ``--always-unzip/-Z`` option, to force unzipping of packages that
-   would ordinarily be considered safe to unzip, and changed the meaning of
-   ``--zip-ok/-z`` to "always leave everything zipped".
-
-0.5a8
- * There is now a separate documentation page for `setuptools`_; revision
-   history that's not specific to EasyInstall has been moved to that page.
-
- .. _setuptools: http://peak.telecommunity.com/DevCenter/setuptools
-
-0.5a5
- * Made ``easy_install`` a standard ``setuptools`` command, moving it from
-   the ``easy_install`` module to ``setuptools.command.easy_install``.  Note
-   that if you were importing or extending it, you must now change your imports
-   accordingly.  ``easy_install.py`` is still installed as a script, but not as
-   a module.
-
-0.5a4
- * Added ``--always-copy/-a`` option to always copy needed packages to the
-   installation directory, even if they're already present elsewhere on
-   sys.path. (In previous versions, this was the default behavior, but now
-   you must request it.)
-
- * Added ``--upgrade/-U`` option to force checking PyPI for latest available
-   version(s) of all packages requested by name and version, even if a matching
-   version is available locally.
-
- * Added automatic installation of dependencies declared by a distribution
-   being installed.  These dependencies must be listed in the distribution's
-   ``EGG-INFO`` directory, so the distribution has to have declared its
-   dependencies by using setuptools.  If a package has requirements it didn't
-   declare, you'll still have to deal with them yourself.  (E.g., by asking
-   EasyInstall to find and install them.)
-
- * Added the ``--record`` option to ``easy_install`` for the benefit of tools
-   that run ``setup.py install --record=filename`` on behalf of another
-   packaging system.)
-
-0.5a3
- * Fixed not setting script permissions to allow execution.
-
- * Improved sandboxing so that setup scripts that want a temporary directory
-   (e.g. pychecker) can still run in the sandbox.
-
-0.5a2
- * Fix stupid stupid refactoring-at-the-last-minute typos.  :(
-
-0.5a1
- * Added support for converting ``.win32.exe`` installers to eggs on the fly.
-   EasyInstall will now recognize such files by name and install them.
-
- * Fixed a problem with picking the "best" version to install (versions were
-   being sorted as strings, rather than as parsed values)
-
-0.4a4
- * Added support for the distutils "verbose/quiet" and "dry-run" options, as
-   well as the "optimize" flag.
-
- * Support downloading packages that were uploaded to PyPI (by scanning all
-   links on package pages, not just the homepage/download links).
-
-0.4a3
- * Add progress messages to the search/download process so that you can tell
-   what URLs it's reading to find download links.  (Hopefully, this will help
-   people report out-of-date and broken links to package authors, and to tell
-   when they've asked for a package that doesn't exist.)
-
-0.4a2
- * Added support for installing scripts
-
- * Added support for setting options via distutils configuration files, and
-   using distutils' default options as a basis for EasyInstall's defaults.
-
- * Renamed ``--scan-url/-s`` to ``--find-links/-f`` to free up ``-s`` for the
-   script installation directory option.
-
- * Use ``urllib2`` instead of ``urllib``, to allow use of ``https:`` URLs if
-   Python includes SSL support.
-
-0.4a1
- * Added ``--scan-url`` and ``--index-url`` options, to scan download pages
-   and search PyPI for needed packages.
-
-0.3a4
- * Restrict ``--build-directory=DIR/-b DIR`` option to only be used with single
-   URL installs, to avoid running the wrong setup.py.
-
-0.3a3
- * Added ``--build-directory=DIR/-b DIR`` option.
-
- * Added "installation report" that explains how to use 'require()' when doing
-   a multiversion install or alternate installation directory.
-
- * Added SourceForge mirror auto-select (Contributed by Ian Bicking)
-
- * Added "sandboxing" that stops a setup script from running if it attempts to
-   write to the filesystem outside of the build area
-
- * Added more workarounds for packages with quirky ``install_data`` hacks
-
-0.3a2
- * Added subversion download support for ``svn:`` and ``svn+`` URLs, as well as
-   automatic recognition of HTTP subversion URLs (Contributed by Ian Bicking)
-
- * Misc. bug fixes
-
-0.3a1
- * Initial release.
-
-
-Future Plans
-============
-
-* Additional utilities to list/remove/verify packages
-* Signature checking?  SSL?  Ability to suppress PyPI search?
-* Display byte progress meter when downloading distributions and long pages?
-* Redirect stdout/stderr to log during run_setup?
-
diff --git a/vendor/distribute-0.6.34/docs/build/html/_sources/index.txt b/vendor/distribute-0.6.34/docs/build/html/_sources/index.txt
deleted file mode 100644
index 5f3b945b..00000000
--- a/vendor/distribute-0.6.34/docs/build/html/_sources/index.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-Welcome to Distribute's documentation!
-======================================
-
-`Distribute` is a fork of the `Setuptools` project.
-
-Distribute is intended to replace Setuptools as the standard method for
-working with Python module distributions.
-
-For those who may wonder why they should switch to Distribute over Setuptools, it’s quite simple:
-
-- Distribute is a drop-in replacement for Setuptools
-- The code is actively maintained, and has over 10 commiters
-- Distribute offers Python 3 support !
-
-Documentation content:
-
-.. toctree::
-   :maxdepth: 2
-
-   roadmap
-   python3
-   using
-   setuptools
-   easy_install
-   pkg_resources
-
-
-.. image:: http://python-distribute.org/pip_distribute.png
-
-Design done by Idan Gazit (http://pixane.com) - License: cc-by-3.0
-
-Copy & paste::
-
- curl -O http://python-distribute.org/distribute_setup.py
- python distribute_setup.py
- easy_install pip
\ No newline at end of file
diff --git a/vendor/distribute-0.6.34/docs/build/html/_sources/pkg_resources.txt b/vendor/distribute-0.6.34/docs/build/html/_sources/pkg_resources.txt
deleted file mode 100644
index 480f9547..00000000
--- a/vendor/distribute-0.6.34/docs/build/html/_sources/pkg_resources.txt
+++ /dev/null
@@ -1,1955 +0,0 @@
-=============================================================
-Package Discovery and Resource Access using ``pkg_resources``
-=============================================================
-
-The ``pkg_resources`` module distributed with ``setuptools`` provides an API
-for Python libraries to access their resource files, and for extensible
-applications and frameworks to automatically discover plugins.  It also
-provides runtime support for using C extensions that are inside zipfile-format
-eggs, support for merging packages that have separately-distributed modules or
-subpackages, and APIs for managing Python's current "working set" of active
-packages.
-
-
-.. contents:: **Table of Contents**
-
-
---------
-Overview
---------
-
-Eggs are a distribution format for Python modules, similar in concept to Java's
-"jars" or Ruby's "gems".  They differ from previous Python distribution formats
-in that they are importable (i.e. they can be added to ``sys.path``), and they
-are *discoverable*, meaning that they carry metadata that unambiguously
-identifies their contents and dependencies, and thus can be *automatically*
-found and added to ``sys.path`` in response to simple requests of the form,
-"get me everything I need to use docutils' PDF support".
-
-The ``pkg_resources`` module provides runtime facilities for finding,
-introspecting, activating and using eggs and other "pluggable" distribution
-formats.  Because these are new concepts in Python (and not that well-
-established in other languages either), it helps to have a few special terms
-for talking about eggs and how they can be used:
-
-project
-    A library, framework, script, plugin, application, or collection of data
-    or other resources, or some combination thereof.  Projects are assumed to
-    have "relatively unique" names, e.g. names registered with PyPI.
-
-release
-    A snapshot of a project at a particular point in time, denoted by a version
-    identifier.
-
-distribution
-    A file or files that represent a particular release.
-
-importable distribution
-    A file or directory that, if placed on ``sys.path``, allows Python to
-    import any modules contained within it.
-
-pluggable distribution
-    An importable distribution whose filename unambiguously identifies its
-    release (i.e. project and version), and whose contents unamabiguously
-    specify what releases of other projects will satisfy its runtime
-    requirements.
-
-extra
-    An "extra" is an optional feature of a release, that may impose additional
-    runtime requirements.  For example, if docutils PDF support required a
-    PDF support library to be present, docutils could define its PDF support as
-    an "extra", and list what other project releases need to be available in
-    order to provide it.
-
-environment
-    A collection of distributions potentially available for importing, but not
-    necessarily active.  More than one distribution (i.e. release version) for
-    a given project may be present in an environment.
-
-working set
-    A collection of distributions actually available for importing, as on
-    ``sys.path``.  At most one distribution (release version) of a given
-    project may be present in a working set, as otherwise there would be
-    ambiguity as to what to import.
-
-eggs
-    Eggs are pluggable distributions in one of the three formats currently
-    supported by ``pkg_resources``.  There are built eggs, development eggs,
-    and egg links.  Built eggs are directories or zipfiles whose name ends
-    with ``.egg`` and follows the egg naming conventions, and contain an
-    ``EGG-INFO`` subdirectory (zipped or otherwise).  Development eggs are
-    normal directories of Python code with one or more ``ProjectName.egg-info``
-    subdirectories.  And egg links are ``*.egg-link`` files that contain the
-    name of a built or development egg, to support symbolic linking on
-    platforms that do not have native symbolic links.
-
-(For more information about these terms and concepts, see also this
-`architectural overview`_ of ``pkg_resources`` and Python Eggs in general.)
-
-.. _architectural overview: http://mail.python.org/pipermail/distutils-sig/2005-June/004652.html
-
-
-.. -----------------
-.. Developer's Guide
-.. -----------------
-
-.. This section isn't written yet.  Currently planned topics include
-    Accessing Resources
-    Finding and Activating Package Distributions
-        get_provider()
-        require()
-        WorkingSet
-        iter_distributions
-    Running Scripts
-    Configuration
-    Namespace Packages
-    Extensible Applications and Frameworks
-        Locating entry points
-        Activation listeners
-        Metadata access
-        Extended Discovery and Installation
-    Supporting Custom PEP 302 Implementations
-.. For now, please check out the extensive `API Reference`_ below.
-
-
--------------
-API Reference
--------------
-
-Namespace Package Support
-=========================
-
-A namespace package is a package that only contains other packages and modules,
-with no direct contents of its own.  Such packages can be split across
-multiple, separately-packaged distributions.  Normally, you do not need to use
-the namespace package APIs directly; instead you should supply the
-``namespace_packages`` argument to ``setup()`` in your project's ``setup.py``.
-See the `setuptools documentation on namespace packages`_ for more information.
-
-However, if for some reason you need to manipulate namespace packages or
-directly alter ``sys.path`` at runtime, you may find these APIs useful:
-
-``declare_namespace(name)``
-    Declare that the dotted package name `name` is a "namespace package" whose
-    contained packages and modules may be spread across multiple distributions.
-    The named package's ``__path__`` will be extended to include the
-    corresponding package in all distributions on ``sys.path`` that contain a
-    package of that name.  (More precisely, if an importer's
-    ``find_module(name)`` returns a loader, then it will also be searched for
-    the package's contents.)  Whenever a Distribution's ``activate()`` method
-    is invoked, it checks for the presence of namespace packages and updates
-    their ``__path__`` contents accordingly.
-
-Applications that manipulate namespace packages or directly alter ``sys.path``
-at runtime may also need to use this API function:
-
-``fixup_namespace_packages(path_item)``
-    Declare that `path_item` is a newly added item on ``sys.path`` that may
-    need to be used to update existing namespace packages.  Ordinarily, this is
-    called for you when an egg is automatically added to ``sys.path``, but if
-    your application modifies ``sys.path`` to include locations that may
-    contain portions of a namespace package, you will need to call this
-    function to ensure they are added to the existing namespace packages.
-
-Although by default ``pkg_resources`` only supports namespace packages for
-filesystem and zip importers, you can extend its support to other "importers"
-compatible with PEP 302 using the ``register_namespace_handler()`` function.
-See the section below on `Supporting Custom Importers`_ for details.
-
-.. _setuptools documentation on namespace packages: http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages
-
-
-``WorkingSet`` Objects
-======================
-
-The ``WorkingSet`` class provides access to a collection of "active"
-distributions.  In general, there is only one meaningful ``WorkingSet``
-instance: the one that represents the distributions that are currently active
-on ``sys.path``.  This global instance is available under the name
-``working_set`` in the ``pkg_resources`` module.  However, specialized
-tools may wish to manipulate working sets that don't correspond to
-``sys.path``, and therefore may wish to create other ``WorkingSet`` instances.
-
-It's important to note that the global ``working_set`` object is initialized
-from ``sys.path`` when ``pkg_resources`` is first imported, but is only updated
-if you do all future ``sys.path`` manipulation via ``pkg_resources`` APIs.  If
-you manually modify ``sys.path``, you must invoke the appropriate methods on
-the ``working_set`` instance to keep it in sync.  Unfortunately, Python does
-not provide any way to detect arbitrary changes to a list object like
-``sys.path``, so ``pkg_resources`` cannot automatically update the
-``working_set`` based on changes to ``sys.path``.
-
-``WorkingSet(entries=None)``
-    Create a ``WorkingSet`` from an iterable of path entries.  If `entries`
-    is not supplied, it defaults to the value of ``sys.path`` at the time
-    the constructor is called.
-
-    Note that you will not normally construct ``WorkingSet`` instances
-    yourself, but instead you will implicitly or explicitly use the global
-    ``working_set`` instance.  For the most part, the ``pkg_resources`` API
-    is designed so that the ``working_set`` is used by default, such that you
-    don't have to explicitly refer to it most of the time.
-
-
-Basic ``WorkingSet`` Methods
-----------------------------
-
-The following methods of ``WorkingSet`` objects are also available as module-
-level functions in ``pkg_resources`` that apply to the default ``working_set``
-instance.  Thus, you can use e.g. ``pkg_resources.require()`` as an
-abbreviation for ``pkg_resources.working_set.require()``:
-
-
-``require(*requirements)``
-    Ensure that distributions matching `requirements` are activated
-
-    `requirements` must be a string or a (possibly-nested) sequence
-    thereof, specifying the distributions and versions required.  The
-    return value is a sequence of the distributions that needed to be
-    activated to fulfill the requirements; all relevant distributions are
-    included, even if they were already activated in this working set.
-
-    For the syntax of requirement specifiers, see the section below on
-    `Requirements Parsing`_.
-
-    In general, it should not be necessary for you to call this method
-    directly.  It's intended more for use in quick-and-dirty scripting and
-    interactive interpreter hacking than for production use. If you're creating
-    an actual library or application, it's strongly recommended that you create
-    a "setup.py" script using ``setuptools``, and declare all your requirements
-    there.  That way, tools like EasyInstall can automatically detect what
-    requirements your package has, and deal with them accordingly.
-
-    Note that calling ``require('SomePackage')`` will not install
-    ``SomePackage`` if it isn't already present.  If you need to do this, you
-    should use the ``resolve()`` method instead, which allows you to pass an
-    ``installer`` callback that will be invoked when a needed distribution
-    can't be found on the local machine.  You can then have this callback
-    display a dialog, automatically download the needed distribution, or
-    whatever else is appropriate for your application. See the documentation
-    below on the ``resolve()`` method for more information, and also on the
-    ``obtain()`` method of ``Environment`` objects.
-
-``run_script(requires, script_name)``
-    Locate distribution specified by `requires` and run its `script_name`
-    script.  `requires` must be a string containing a requirement specifier.
-    (See `Requirements Parsing`_ below for the syntax.)
-
-    The script, if found, will be executed in *the caller's globals*.  That's
-    because this method is intended to be called from wrapper scripts that
-    act as a proxy for the "real" scripts in a distribution.  A wrapper script
-    usually doesn't need to do anything but invoke this function with the
-    correct arguments.
-
-    If you need more control over the script execution environment, you
-    probably want to use the ``run_script()`` method of a ``Distribution``
-    object's `Metadata API`_ instead.
-
-``iter_entry_points(group, name=None)``
-    Yield entry point objects from `group` matching `name`
-
-    If `name` is None, yields all entry points in `group` from all
-    distributions in the working set, otherwise only ones matching both
-    `group` and `name` are yielded.  Entry points are yielded from the active
-    distributions in the order that the distributions appear in the working
-    set.  (For the global ``working_set``, this should be the same as the order
-    that they are listed in ``sys.path``.)  Note that within the entry points
-    advertised by an individual distribution, there is no particular ordering.
-
-    Please see the section below on `Entry Points`_ for more information.
-
-
-``WorkingSet`` Methods and Attributes
--------------------------------------
-
-These methods are used to query or manipulate the contents of a specific
-working set, so they must be explicitly invoked on a particular ``WorkingSet``
-instance:
-
-``add_entry(entry)``
-    Add a path item to the ``entries``, finding any distributions on it.  You
-    should use this when you add additional items to ``sys.path`` and you want
-    the global ``working_set`` to reflect the change.  This method is also
-    called by the ``WorkingSet()`` constructor during initialization.
-
-    This method uses ``find_distributions(entry,True)`` to find distributions
-    corresponding to the path entry, and then ``add()`` them.  `entry` is
-    always appended to the ``entries`` attribute, even if it is already
-    present, however. (This is because ``sys.path`` can contain the same value
-    more than once, and the ``entries`` attribute should be able to reflect
-    this.)
-
-``__contains__(dist)``
-    True if `dist` is active in this ``WorkingSet``.  Note that only one
-    distribution for a given project can be active in a given ``WorkingSet``.
-
-``__iter__()``
-    Yield distributions for non-duplicate projects in the working set.
-    The yield order is the order in which the items' path entries were
-    added to the working set.
-
-``find(req)``
-    Find a distribution matching `req` (a ``Requirement`` instance).
-    If there is an active distribution for the requested project, this
-    returns it, as long as it meets the version requirement specified by
-    `req`.  But, if there is an active distribution for the project and it
-    does *not* meet the `req` requirement, ``VersionConflict`` is raised.
-    If there is no active distribution for the requested project, ``None``
-    is returned.
-
-``resolve(requirements, env=None, installer=None)``
-    List all distributions needed to (recursively) meet `requirements`
-
-    `requirements` must be a sequence of ``Requirement`` objects.  `env`,
-    if supplied, should be an ``Environment`` instance.  If
-    not supplied, an ``Environment`` is created from the working set's
-    ``entries``.  `installer`, if supplied, will be invoked with each
-    requirement that cannot be met by an already-installed distribution; it
-    should return a ``Distribution`` or ``None``.  (See the ``obtain()`` method
-    of `Environment Objects`_, below, for more information on the `installer`
-    argument.)
-
-``add(dist, entry=None)``
-    Add `dist` to working set, associated with `entry`
-
-    If `entry` is unspecified, it defaults to ``dist.location``.  On exit from
-    this routine, `entry` is added to the end of the working set's ``.entries``
-    (if it wasn't already present).
-
-    `dist` is only added to the working set if it's for a project that
-    doesn't already have a distribution active in the set.  If it's
-    successfully added, any  callbacks registered with the ``subscribe()``
-    method will be called.  (See `Receiving Change Notifications`_, below.)
-
-    Note: ``add()`` is automatically called for you by the ``require()``
-    method, so you don't normally need to use this method directly.
-
-``entries``
-    This attribute represents a "shadow" ``sys.path``, primarily useful for
-    debugging.  If you are experiencing import problems, you should check
-    the global ``working_set`` object's ``entries`` against ``sys.path``, to
-    ensure that they match.  If they do not, then some part of your program
-    is manipulating ``sys.path`` without updating the ``working_set``
-    accordingly.  IMPORTANT NOTE: do not directly manipulate this attribute!
-    Setting it equal to ``sys.path`` will not fix your problem, any more than
-    putting black tape over an "engine warning" light will fix your car!  If
-    this attribute is out of sync with ``sys.path``, it's merely an *indicator*
-    of the problem, not the cause of it.
-
-
-Receiving Change Notifications
-------------------------------
-
-Extensible applications and frameworks may need to receive notification when
-a new distribution (such as a plug-in component) has been added to a working
-set.  This is what the ``subscribe()`` method and ``add_activation_listener()``
-function are for.
-
-``subscribe(callback)``
-    Invoke ``callback(distribution)`` once for each active distribution that is
-    in the set now, or gets added later.  Because the callback is invoked for
-    already-active distributions, you do not need to loop over the working set
-    yourself to deal with the existing items; just register the callback and
-    be prepared for the fact that it will be called immediately by this method.
-
-    Note that callbacks *must not* allow exceptions to propagate, or they will
-    interfere with the operation of other callbacks and possibly result in an
-    inconsistent working set state.  Callbacks should use a try/except block
-    to ignore, log, or otherwise process any errors, especially since the code
-    that caused the callback to be invoked is unlikely to be able to handle
-    the errors any better than the callback itself.
-
-``pkg_resources.add_activation_listener()`` is an alternate spelling of
-``pkg_resources.working_set.subscribe()``.
-
-
-Locating Plugins
-----------------
-
-Extensible applications will sometimes have a "plugin directory" or a set of
-plugin directories, from which they want to load entry points or other
-metadata.  The ``find_plugins()`` method allows you to do this, by scanning an
-environment for the newest version of each project that can be safely loaded
-without conflicts or missing requirements.
-
-``find_plugins(plugin_env, full_env=None, fallback=True)``
-   Scan `plugin_env` and identify which distributions could be added to this
-   working set without version conflicts or missing requirements.
-
-   Example usage::
-
-       distributions, errors = working_set.find_plugins(
-           Environment(plugin_dirlist)
-       )
-       map(working_set.add, distributions)  # add plugins+libs to sys.path
-       print "Couldn't load", errors        # display errors
-
-   The `plugin_env` should be an ``Environment`` instance that contains only
-   distributions that are in the project's "plugin directory" or directories.
-   The `full_env`, if supplied, should be an ``Environment`` instance that
-   contains all currently-available distributions.
-
-   If `full_env` is not supplied, one is created automatically from the
-   ``WorkingSet`` this method is called on, which will typically mean that
-   every directory on ``sys.path`` will be scanned for distributions.
-
-   This method returns a 2-tuple: (`distributions`, `error_info`), where
-   `distributions` is a list of the distributions found in `plugin_env` that
-   were loadable, along with any other distributions that are needed to resolve
-   their dependencies.  `error_info` is a dictionary mapping unloadable plugin
-   distributions to an exception instance describing the error that occurred.
-   Usually this will be a ``DistributionNotFound`` or ``VersionConflict``
-   instance.
-
-   Most applications will use this method mainly on the master ``working_set``
-   instance in ``pkg_resources``, and then immediately add the returned
-   distributions to the working set so that they are available on sys.path.
-   This will make it possible to find any entry points, and allow any other
-   metadata tracking and hooks to be activated.
-
-   The resolution algorithm used by ``find_plugins()`` is as follows.  First,
-   the project names of the distributions present in `plugin_env` are sorted.
-   Then, each project's eggs are tried in descending version order (i.e.,
-   newest version first).
-
-   An attempt is made to resolve each egg's dependencies. If the attempt is
-   successful, the egg and its dependencies are added to the output list and to
-   a temporary copy of the working set.  The resolution process continues with
-   the next project name, and no older eggs for that project are tried.
-
-   If the resolution attempt fails, however, the error is added to the error
-   dictionary.  If the `fallback` flag is true, the next older version of the
-   plugin is tried, until a working version is found.  If false, the resolution
-   process continues with the next plugin project name.
-
-   Some applications may have stricter fallback requirements than others. For
-   example, an application that has a database schema or persistent objects
-   may not be able to safely downgrade a version of a package. Others may want
-   to ensure that a new plugin configuration is either 100% good or else
-   revert to a known-good configuration.  (That is, they may wish to revert to
-   a known configuration if the `error_info` return value is non-empty.)
-
-   Note that this algorithm gives precedence to satisfying the dependencies of
-   alphabetically prior project names in case of version conflicts. If two
-   projects named "AaronsPlugin" and "ZekesPlugin" both need different versions
-   of "TomsLibrary", then "AaronsPlugin" will win and "ZekesPlugin" will be
-   disabled due to version conflict.
-
-
-``Environment`` Objects
-=======================
-
-An "environment" is a collection of ``Distribution`` objects, usually ones
-that are present and potentially importable on the current platform.
-``Environment`` objects are used by ``pkg_resources`` to index available
-distributions during dependency resolution.
-
-``Environment(search_path=None, platform=get_supported_platform(), python=PY_MAJOR)``
-    Create an environment snapshot by scanning `search_path` for distributions
-    compatible with `platform` and `python`.  `search_path` should be a
-    sequence of strings such as might be used on ``sys.path``.  If a
-    `search_path` isn't supplied, ``sys.path`` is used.
-
-    `platform` is an optional string specifying the name of the platform
-    that platform-specific distributions must be compatible with.  If
-    unspecified, it defaults to the current platform.  `python` is an
-    optional string naming the desired version of Python (e.g. ``'2.4'``);
-    it defaults to the currently-running version.
-
-    You may explicitly set `platform` (and/or `python`) to ``None`` if you
-    wish to include *all* distributions, not just those compatible with the
-    running platform or Python version.
-
-    Note that `search_path` is scanned immediately for distributions, and the
-    resulting ``Environment`` is a snapshot of the found distributions.  It
-    is not automatically updated if the system's state changes due to e.g.
-    installation or removal of distributions.
-
-``__getitem__(project_name)``
-    Returns a list of distributions for the given project name, ordered
-    from newest to oldest version.  (And highest to lowest format precedence
-    for distributions that contain the same version of the project.)  If there
-    are no distributions for the project, returns an empty list.
-
-``__iter__()``
-    Yield the unique project names of the distributions in this environment.
-    The yielded names are always in lower case.
-
-``add(dist)``
-    Add `dist` to the environment if it matches the platform and python version
-    specified at creation time, and only if the distribution hasn't already
-    been added. (i.e., adding the same distribution more than once is a no-op.)
-
-``remove(dist)``
-    Remove `dist` from the environment.
-
-``can_add(dist)``
-    Is distribution `dist` acceptable for this environment?  If it's not
-    compatible with the ``platform`` and ``python`` version values specified
-    when the environment was created, a false value is returned.
-
-``__add__(dist_or_env)``  (``+`` operator)
-    Add a distribution or environment to an ``Environment`` instance, returning
-    a *new* environment object that contains all the distributions previously
-    contained by both.  The new environment will have a ``platform`` and
-    ``python`` of ``None``, meaning that it will not reject any distributions
-    from being added to it; it will simply accept whatever is added.  If you
-    want the added items to be filtered for platform and Python version, or
-    you want to add them to the *same* environment instance, you should use
-    in-place addition (``+=``) instead.
-
-``__iadd__(dist_or_env)``  (``+=`` operator)
-    Add a distribution or environment to an ``Environment`` instance
-    *in-place*, updating the existing instance and returning it.  The
-    ``platform`` and ``python`` filter attributes take effect, so distributions
-    in the source that do not have a suitable platform string or Python version
-    are silently ignored.
-
-``best_match(req, working_set, installer=None)``
-    Find distribution best matching `req` and usable on `working_set`
-
-    This calls the ``find(req)`` method of the `working_set` to see if a
-    suitable distribution is already active.  (This may raise
-    ``VersionConflict`` if an unsuitable version of the project is already
-    active in the specified `working_set`.)  If a suitable distribution isn't
-    active, this method returns the newest distribution in the environment
-    that meets the ``Requirement`` in `req`.  If no suitable distribution is
-    found, and `installer` is supplied, then the result of calling
-    the environment's ``obtain(req, installer)`` method will be returned.
-
-``obtain(requirement, installer=None)``
-    Obtain a distro that matches requirement (e.g. via download).  In the
-    base ``Environment`` class, this routine just returns
-    ``installer(requirement)``, unless `installer` is None, in which case
-    None is returned instead.  This method is a hook that allows subclasses
-    to attempt other ways of obtaining a distribution before falling back
-    to the `installer` argument.
-
-``scan(search_path=None)``
-    Scan `search_path` for distributions usable on `platform`
-
-    Any distributions found are added to the environment.  `search_path` should
-    be a sequence of strings such as might be used on ``sys.path``.  If not
-    supplied, ``sys.path`` is used.  Only distributions conforming to
-    the platform/python version defined at initialization are added.  This
-    method is a shortcut for using the ``find_distributions()`` function to
-    find the distributions from each item in `search_path`, and then calling
-    ``add()`` to add each one to the environment.
-
-
-``Requirement`` Objects
-=======================
-
-``Requirement`` objects express what versions of a project are suitable for
-some purpose.  These objects (or their string form) are used by various
-``pkg_resources`` APIs in order to find distributions that a script or
-distribution needs.
-
-
-Requirements Parsing
---------------------
-
-``parse_requirements(s)``
-    Yield ``Requirement`` objects for a string or iterable of lines.  Each
-    requirement must start on a new line.  See below for syntax.
-
-``Requirement.parse(s)``
-    Create a ``Requirement`` object from a string or iterable of lines.  A
-    ``ValueError`` is raised if the string or lines do not contain a valid
-    requirement specifier, or if they contain more than one specifier.  (To
-    parse multiple specifiers from a string or iterable of strings, use
-    ``parse_requirements()`` instead.)
-
-    The syntax of a requirement specifier can be defined in EBNF as follows::
-
-        requirement  ::= project_name versionspec? extras?
-        versionspec  ::= comparison version (',' comparison version)*
-        comparison   ::= '<' | '<=' | '!=' | '==' | '>=' | '>'
-        extras       ::= '[' extralist? ']'
-        extralist    ::= identifier (',' identifier)*
-        project_name ::= identifier
-        identifier   ::= [-A-Za-z0-9_]+
-        version      ::= [-A-Za-z0-9_.]+
-
-    Tokens can be separated by whitespace, and a requirement can be continued
-    over multiple lines using a backslash (``\\``).  Line-end comments (using
-    ``#``) are also allowed.
-
-    Some examples of valid requirement specifiers::
-
-        FooProject >= 1.2
-        Fizzy [foo, bar]
-        PickyThing<1.6,>1.9,!=1.9.6,<2.0a0,==2.4c1
-        SomethingWhoseVersionIDontCareAbout
-
-    The project name is the only required portion of a requirement string, and
-    if it's the only thing supplied, the requirement will accept any version
-    of that project.
-
-    The "extras" in a requirement are used to request optional features of a
-    project, that may require additional project distributions in order to
-    function.  For example, if the hypothetical "Report-O-Rama" project offered
-    optional PDF support, it might require an additional library in order to
-    provide that support.  Thus, a project needing Report-O-Rama's PDF features
-    could use a requirement of ``Report-O-Rama[PDF]`` to request installation
-    or activation of both Report-O-Rama and any libraries it needs in order to
-    provide PDF support.  For example, you could use::
-
-        easy_install.py Report-O-Rama[PDF]
-
-    To install the necessary packages using the EasyInstall program, or call
-    ``pkg_resources.require('Report-O-Rama[PDF]')`` to add the necessary
-    distributions to sys.path at runtime.
-
-
-``Requirement`` Methods and Attributes
---------------------------------------
-
-``__contains__(dist_or_version)``
-    Return true if `dist_or_version` fits the criteria for this requirement.
-    If `dist_or_version` is a ``Distribution`` object, its project name must
-    match the requirement's project name, and its version must meet the
-    requirement's version criteria.  If `dist_or_version` is a string, it is
-    parsed using the ``parse_version()`` utility function.  Otherwise, it is
-    assumed to be an already-parsed version.
-
-    The ``Requirement`` object's version specifiers (``.specs``) are internally
-    sorted into ascending version order, and used to establish what ranges of
-    versions are acceptable.  Adjacent redundant conditions are effectively
-    consolidated (e.g. ``">1, >2"`` produces the same results as ``">1"``, and
-    ``"<2,<3"`` produces the same results as``"<3"``). ``"!="`` versions are
-    excised from the ranges they fall within.  The version being tested for
-    acceptability is then checked for membership in the resulting ranges.
-    (Note that providing conflicting conditions for the same version (e.g.
-    ``"<2,>=2"`` or ``"==2,!=2"``) is meaningless and may therefore produce
-    bizarre results when compared with actual version number(s).)
-
-``__eq__(other_requirement)``
-    A requirement compares equal to another requirement if they have
-    case-insensitively equal project names, version specifiers, and "extras".
-    (The order that extras and version specifiers are in is also ignored.)
-    Equal requirements also have equal hashes, so that requirements can be
-    used in sets or as dictionary keys.
-
-``__str__()``
-    The string form of a ``Requirement`` is a string that, if passed to
-    ``Requirement.parse()``, would return an equal ``Requirement`` object.
-
-``project_name``
-    The name of the required project
-
-``key``
-    An all-lowercase version of the ``project_name``, useful for comparison
-    or indexing.
-
-``extras``
-    A tuple of names of "extras" that this requirement calls for.  (These will
-    be all-lowercase and normalized using the ``safe_extra()`` parsing utility
-    function, so they may not exactly equal the extras the requirement was
-    created with.)
-
-``specs``
-    A list of ``(op,version)`` tuples, sorted in ascending parsed-version
-    order.  The `op` in each tuple is a comparison operator, represented as
-    a string.  The `version` is the (unparsed) version number.  The relative
-    order of tuples containing the same version numbers is undefined, since
-    having more than one operator for a given version is either redundant or
-    self-contradictory.
-
-
-Entry Points
-============
-
-Entry points are a simple way for distributions to "advertise" Python objects
-(such as functions or classes) for use by other distributions.  Extensible
-applications and frameworks can search for entry points with a particular name
-or group, either from a specific distribution or from all active distributions
-on sys.path, and then inspect or load the advertised objects at will.
-
-Entry points belong to "groups" which are named with a dotted name similar to
-a Python package or module name.  For example, the ``setuptools`` package uses
-an entry point named ``distutils.commands`` in order to find commands defined
-by distutils extensions.  ``setuptools`` treats the names of entry points
-defined in that group as the acceptable commands for a setup script.
-
-In a similar way, other packages can define their own entry point groups,
-either using dynamic names within the group (like ``distutils.commands``), or
-possibly using predefined names within the group.  For example, a blogging
-framework that offers various pre- or post-publishing hooks might define an
-entry point group and look for entry points named "pre_process" and
-"post_process" within that group.
-
-To advertise an entry point, a project needs to use ``setuptools`` and provide
-an ``entry_points`` argument to ``setup()`` in its setup script, so that the
-entry points will be included in the distribution's metadata.  For more
-details, see the ``setuptools`` documentation.  (XXX link here to setuptools)
-
-Each project distribution can advertise at most one entry point of a given
-name within the same entry point group.  For example, a distutils extension
-could advertise two different ``distutils.commands`` entry points, as long as
-they had different names.  However, there is nothing that prevents *different*
-projects from advertising entry points of the same name in the same group.  In
-some cases, this is a desirable thing, since the application or framework that
-uses the entry points may be calling them as hooks, or in some other way
-combining them.  It is up to the application or framework to decide what to do
-if multiple distributions advertise an entry point; some possibilities include
-using both entry points, displaying an error message, using the first one found
-in sys.path order, etc.
-
-
-Convenience API
----------------
-
-In the following functions, the `dist` argument can be a ``Distribution``
-instance, a ``Requirement`` instance, or a string specifying a requirement
-(i.e. project name, version, etc.).  If the argument is a string or
-``Requirement``, the specified distribution is located (and added to sys.path
-if not already present).  An error will be raised if a matching distribution is
-not available.
-
-The `group` argument should be a string containing a dotted identifier,
-identifying an entry point group.  If you are defining an entry point group,
-you should include some portion of your package's name in the group name so as
-to avoid collision with other packages' entry point groups.
-
-``load_entry_point(dist, group, name)``
-    Load the named entry point from the specified distribution, or raise
-    ``ImportError``.
-
-``get_entry_info(dist, group, name)``
-    Return an ``EntryPoint`` object for the given `group` and `name` from
-    the specified distribution.  Returns ``None`` if the distribution has not
-    advertised a matching entry point.
-
-``get_entry_map(dist, group=None)``
-    Return the distribution's entry point map for `group`, or the full entry
-    map for the distribution.  This function always returns a dictionary,
-    even if the distribution advertises no entry points.  If `group` is given,
-    the dictionary maps entry point names to the corresponding ``EntryPoint``
-    object.  If `group` is None, the dictionary maps group names to
-    dictionaries that then map entry point names to the corresponding
-    ``EntryPoint`` instance in that group.
-
-``iter_entry_points(group, name=None)``
-    Yield entry point objects from `group` matching `name`.
-
-    If `name` is None, yields all entry points in `group` from all
-    distributions in the working set on sys.path, otherwise only ones matching
-    both `group` and `name` are yielded.  Entry points are yielded from
-    the active distributions in the order that the distributions appear on
-    sys.path.  (Within entry points for a particular distribution, however,
-    there is no particular ordering.)
-
-    (This API is actually a method of the global ``working_set`` object; see
-    the section above on `Basic WorkingSet Methods`_ for more information.)
-
-
-Creating and Parsing
---------------------
-
-``EntryPoint(name, module_name, attrs=(), extras=(), dist=None)``
-    Create an ``EntryPoint`` instance.  `name` is the entry point name.  The
-    `module_name` is the (dotted) name of the module containing the advertised
-    object.  `attrs` is an optional tuple of names to look up from the
-    module to obtain the advertised object.  For example, an `attrs` of
-    ``("foo","bar")`` and a `module_name` of ``"baz"`` would mean that the
-    advertised object could be obtained by the following code::
-
-        import baz
-        advertised_object = baz.foo.bar
-
-    The `extras` are an optional tuple of "extra feature" names that the
-    distribution needs in order to provide this entry point.  When the
-    entry point is loaded, these extra features are looked up in the `dist`
-    argument to find out what other distributions may need to be activated
-    on sys.path; see the ``load()`` method for more details.  The `extras`
-    argument is only meaningful if `dist` is specified.  `dist` must be
-    a ``Distribution`` instance.
-
-``EntryPoint.parse(src, dist=None)`` (classmethod)
-    Parse a single entry point from string `src`
-
-    Entry point syntax follows the form::
-
-        name = some.module:some.attr [extra1,extra2]
-
-    The entry name and module name are required, but the ``:attrs`` and
-    ``[extras]`` parts are optional, as is the whitespace shown between
-    some of the items.  The `dist` argument is passed through to the
-    ``EntryPoint()`` constructor, along with the other values parsed from
-    `src`.
-
-``EntryPoint.parse_group(group, lines, dist=None)`` (classmethod)
-    Parse `lines` (a string or sequence of lines) to create a dictionary
-    mapping entry point names to ``EntryPoint`` objects.  ``ValueError`` is
-    raised if entry point names are duplicated, if `group` is not a valid
-    entry point group name, or if there are any syntax errors.  (Note: the
-    `group` parameter is used only for validation and to create more
-    informative error messages.)  If `dist` is provided, it will be used to
-    set the ``dist`` attribute of the created ``EntryPoint`` objects.
-
-``EntryPoint.parse_map(data, dist=None)`` (classmethod)
-    Parse `data` into a dictionary mapping group names to dictionaries mapping
-    entry point names to ``EntryPoint`` objects.  If `data` is a dictionary,
-    then the keys are used as group names and the values are passed to
-    ``parse_group()`` as the `lines` argument.  If `data` is a string or
-    sequence of lines, it is first split into .ini-style sections (using
-    the ``split_sections()`` utility function) and the section names are used
-    as group names.  In either case, the `dist` argument is passed through to
-    ``parse_group()`` so that the entry points will be linked to the specified
-    distribution.
-
-
-``EntryPoint`` Objects
-----------------------
-
-For simple introspection, ``EntryPoint`` objects have attributes that
-correspond exactly to the constructor argument names: ``name``,
-``module_name``, ``attrs``, ``extras``, and ``dist`` are all available.  In
-addition, the following methods are provided:
-
-``load(require=True, env=None, installer=None)``
-    Load the entry point, returning the advertised Python object, or raise
-    ``ImportError`` if it cannot be obtained.  If `require` is a true value,
-    then ``require(env, installer)`` is called before attempting the import.
-
-``require(env=None, installer=None)``
-    Ensure that any "extras" needed by the entry point are available on
-    sys.path.  ``UnknownExtra`` is raised if the ``EntryPoint`` has ``extras``,
-    but no ``dist``, or if the named extras are not defined by the
-    distribution.  If `env` is supplied, it must be an ``Environment``, and it
-    will be used to search for needed distributions if they are not already
-    present on sys.path.  If `installer` is supplied, it must be a callable
-    taking a ``Requirement`` instance and returning a matching importable
-    ``Distribution`` instance or None.
-
-``__str__()``
-    The string form of an ``EntryPoint`` is a string that could be passed to
-    ``EntryPoint.parse()`` to produce an equivalent ``EntryPoint``.
-
-
-``Distribution`` Objects
-========================
-
-``Distribution`` objects represent collections of Python code that may or may
-not be importable, and may or may not have metadata and resources associated
-with them.  Their metadata may include information such as what other projects
-the distribution depends on, what entry points the distribution advertises, and
-so on.
-
-
-Getting or Creating Distributions
----------------------------------
-
-Most commonly, you'll obtain ``Distribution`` objects from a ``WorkingSet`` or
-an ``Environment``.  (See the sections above on `WorkingSet Objects`_ and
-`Environment Objects`_, which are containers for active distributions and
-available distributions, respectively.)  You can also obtain ``Distribution``
-objects from one of these high-level APIs:
-
-``find_distributions(path_item, only=False)``
-    Yield distributions accessible via `path_item`.  If `only` is true, yield
-    only distributions whose ``location`` is equal to `path_item`.  In other
-    words, if `only` is true, this yields any distributions that would be
-    importable if `path_item` were on ``sys.path``.  If `only` is false, this
-    also yields distributions that are "in" or "under" `path_item`, but would
-    not be importable unless their locations were also added to ``sys.path``.
-
-``get_distribution(dist_spec)``
-    Return a ``Distribution`` object for a given ``Requirement`` or string.
-    If `dist_spec` is already a ``Distribution`` instance, it is returned.
-    If it is a ``Requirement`` object or a string that can be parsed into one,
-    it is used to locate and activate a matching distribution, which is then
-    returned.
-
-However, if you're creating specialized tools for working with distributions,
-or creating a new distribution format, you may also need to create
-``Distribution`` objects directly, using one of the three constructors below.
-
-These constructors all take an optional `metadata` argument, which is used to
-access any resources or metadata associated with the distribution.  `metadata`
-must be an object that implements the ``IResourceProvider`` interface, or None.
-If it is None, an ``EmptyProvider`` is used instead.  ``Distribution`` objects
-implement both the `IResourceProvider`_ and `IMetadataProvider Methods`_ by
-delegating them to the `metadata` object.
-
-``Distribution.from_location(location, basename, metadata=None, **kw)`` (classmethod)
-    Create a distribution for `location`, which must be a string such as a
-    URL, filename, or other string that might be used on ``sys.path``.
-    `basename` is a string naming the distribution, like ``Foo-1.2-py2.4.egg``.
-    If `basename` ends with ``.egg``, then the project's name, version, python
-    version and platform are extracted from the filename and used to set those
-    properties of the created distribution.  Any additional keyword arguments
-    are forwarded to the ``Distribution()`` constructor.
-
-``Distribution.from_filename(filename, metadata=None**kw)`` (classmethod)
-    Create a distribution by parsing a local filename.  This is a shorter way
-    of saying  ``Distribution.from_location(normalize_path(filename),
-    os.path.basename(filename), metadata)``.  In other words, it creates a
-    distribution whose location is the normalize form of the filename, parsing
-    name and version information from the base portion of the filename.  Any
-    additional keyword arguments are forwarded to the ``Distribution()``
-    constructor.
-
-``Distribution(location,metadata,project_name,version,py_version,platform,precedence)``
-    Create a distribution by setting its properties.  All arguments are
-    optional and default to None, except for `py_version` (which defaults to
-    the current Python version) and `precedence` (which defaults to
-    ``EGG_DIST``; for more details see ``precedence`` under `Distribution
-    Attributes`_ below).  Note that it's usually easier to use the
-    ``from_filename()`` or ``from_location()`` constructors than to specify
-    all these arguments individually.
-
-
-``Distribution`` Attributes
----------------------------
-
-location
-    A string indicating the distribution's location.  For an importable
-    distribution, this is the string that would be added to ``sys.path`` to
-    make it actively importable.  For non-importable distributions, this is
-    simply a filename, URL, or other way of locating the distribution.
-
-project_name
-    A string, naming the project that this distribution is for.  Project names
-    are defined by a project's setup script, and they are used to identify
-    projects on PyPI.  When a ``Distribution`` is constructed, the
-    `project_name` argument is passed through the ``safe_name()`` utility
-    function to filter out any unacceptable characters.
-
-key
-    ``dist.key`` is short for ``dist.project_name.lower()``.  It's used for
-    case-insensitive comparison and indexing of distributions by project name.
-
-extras
-    A list of strings, giving the names of extra features defined by the
-    project's dependency list (the ``extras_require`` argument specified in
-    the project's setup script).
-
-version
-    A string denoting what release of the project this distribution contains.
-    When a ``Distribution`` is constructed, the `version` argument is passed
-    through the ``safe_version()`` utility function to filter out any
-    unacceptable characters.  If no `version` is specified at construction
-    time, then attempting to access this attribute later will cause the
-    ``Distribution`` to try to discover its version by reading its ``PKG-INFO``
-    metadata file.  If ``PKG-INFO`` is unavailable or can't be parsed,
-    ``ValueError`` is raised.
-
-parsed_version
-    The ``parsed_version`` is a tuple representing a "parsed" form of the
-    distribution's ``version``.  ``dist.parsed_version`` is a shortcut for
-    calling ``parse_version(dist.version)``.  It is used to compare or sort
-    distributions by version.  (See the `Parsing Utilities`_ section below for
-    more information on the ``parse_version()`` function.)  Note that accessing
-    ``parsed_version`` may result in a ``ValueError`` if the ``Distribution``
-    was constructed without a `version` and without `metadata` capable of
-    supplying the missing version info.
-
-py_version
-    The major/minor Python version the distribution supports, as a string.
-    For example, "2.3" or "2.4".  The default is the current version of Python.
-
-platform
-    A string representing the platform the distribution is intended for, or
-    ``None`` if the distribution is "pure Python" and therefore cross-platform.
-    See `Platform Utilities`_ below for more information on platform strings.
-
-precedence
-    A distribution's ``precedence`` is used to determine the relative order of
-    two distributions that have the same ``project_name`` and
-    ``parsed_version``.  The default precedence is ``pkg_resources.EGG_DIST``,
-    which is the highest (i.e. most preferred) precedence.  The full list
-    of predefined precedences, from most preferred to least preferred, is:
-    ``EGG_DIST``, ``BINARY_DIST``, ``SOURCE_DIST``, ``CHECKOUT_DIST``, and
-    ``DEVELOP_DIST``.  Normally, precedences other than ``EGG_DIST`` are used
-    only by the ``setuptools.package_index`` module, when sorting distributions
-    found in a package index to determine their suitability for installation.
-    "System" and "Development" eggs (i.e., ones that use the ``.egg-info``
-    format), however, are automatically given a precedence of ``DEVELOP_DIST``.
-
-
-
-``Distribution`` Methods
-------------------------
-
-``activate(path=None)``
-    Ensure distribution is importable on `path`.  If `path` is None,
-    ``sys.path`` is used instead.  This ensures that the distribution's
-    ``location`` is in the `path` list, and it also performs any necessary
-    namespace package fixups or declarations.  (That is, if the distribution
-    contains namespace packages, this method ensures that they are declared,
-    and that the distribution's contents for those namespace packages are
-    merged with the contents provided by any other active distributions.  See
-    the section above on `Namespace Package Support`_ for more information.)
-
-    ``pkg_resources`` adds a notification callback to the global ``working_set``
-    that ensures this method is called whenever a distribution is added to it.
-    Therefore, you should not normally need to explicitly call this method.
-    (Note that this means that namespace packages on ``sys.path`` are always
-    imported as soon as ``pkg_resources`` is, which is another reason why
-    namespace packages should not contain any code or import statements.)
-
-``as_requirement()``
-    Return a ``Requirement`` instance that matches this distribution's project
-    name and version.
-
-``requires(extras=())``
-    List the ``Requirement`` objects that specify this distribution's
-    dependencies.  If `extras` is specified, it should be a sequence of names
-    of "extras" defined by the distribution, and the list returned will then
-    include any dependencies needed to support the named "extras".
-
-``clone(**kw)``
-    Create a copy of the distribution.  Any supplied keyword arguments override
-    the corresponding argument to the ``Distribution()`` constructor, allowing
-    you to change some of the copied distribution's attributes.
-
-``egg_name()``
-    Return what this distribution's standard filename should be, not including
-    the ".egg" extension.  For example, a distribution for project "Foo"
-    version 1.2 that runs on Python 2.3 for Windows would have an ``egg_name()``
-    of ``Foo-1.2-py2.3-win32``.  Any dashes in the name or version are
-    converted to underscores.  (``Distribution.from_location()`` will convert
-    them back when parsing a ".egg" file name.)
-
-``__cmp__(other)``, ``__hash__()``
-    Distribution objects are hashed and compared on the basis of their parsed
-    version and precedence, followed by their key (lowercase project name),
-    location, Python version, and platform.
-
-The following methods are used to access ``EntryPoint`` objects advertised
-by the distribution.  See the section above on `Entry Points`_ for more
-detailed information about these operations:
-
-``get_entry_info(group, name)``
-    Return the ``EntryPoint`` object for `group` and `name`, or None if no
-    such point is advertised by this distribution.
-
-``get_entry_map(group=None)``
-    Return the entry point map for `group`.  If `group` is None, return
-    a dictionary mapping group names to entry point maps for all groups.
-    (An entry point map is a dictionary of entry point names to ``EntryPoint``
-    objects.)
-
-``load_entry_point(group, name)``
-    Short for ``get_entry_info(group, name).load()``.  Returns the object
-    advertised by the named entry point, or raises ``ImportError`` if
-    the entry point isn't advertised by this distribution, or there is some
-    other import problem.
-
-In addition to the above methods, ``Distribution`` objects also implement all
-of the `IResourceProvider`_ and `IMetadataProvider Methods`_ (which are
-documented in later sections):
-
-* ``has_metadata(name)``
-* ``metadata_isdir(name)``
-* ``metadata_listdir(name)``
-* ``get_metadata(name)``
-* ``get_metadata_lines(name)``
-* ``run_script(script_name, namespace)``
-* ``get_resource_filename(manager, resource_name)``
-* ``get_resource_stream(manager, resource_name)``
-* ``get_resource_string(manager, resource_name)``
-* ``has_resource(resource_name)``
-* ``resource_isdir(resource_name)``
-* ``resource_listdir(resource_name)``
-
-If the distribution was created with a `metadata` argument, these resource and
-metadata access methods are all delegated to that `metadata` provider.
-Otherwise, they are delegated to an ``EmptyProvider``, so that the distribution
-will appear to have no resources or metadata.  This delegation approach is used
-so that supporting custom importers or new distribution formats can be done
-simply by creating an appropriate `IResourceProvider`_ implementation; see the
-section below on `Supporting Custom Importers`_ for more details.
-
-
-``ResourceManager`` API
-=======================
-
-The ``ResourceManager`` class provides uniform access to package resources,
-whether those resources exist as files and directories or are compressed in
-an archive of some kind.
-
-Normally, you do not need to create or explicitly manage ``ResourceManager``
-instances, as the ``pkg_resources`` module creates a global instance for you,
-and makes most of its methods available as top-level names in the
-``pkg_resources`` module namespace.  So, for example, this code actually
-calls the ``resource_string()`` method of the global ``ResourceManager``::
-
-    import pkg_resources
-    my_data = pkg_resources.resource_string(__name__, "foo.dat")
-
-Thus, you can use the APIs below without needing an explicit
-``ResourceManager`` instance; just import and use them as needed.
-
-
-Basic Resource Access
----------------------
-
-In the following methods, the `package_or_requirement` argument may be either
-a Python package/module name (e.g. ``foo.bar``) or a ``Requirement`` instance.
-If it is a package or module name, the named module or package must be
-importable (i.e., be in a distribution or directory on ``sys.path``), and the
-`resource_name` argument is interpreted relative to the named package.  (Note
-that if a module name is used, then the resource name is relative to the
-package immediately containing the named module.  Also, you should not use use
-a namespace package name, because a namespace package can be spread across
-multiple distributions, and is therefore ambiguous as to which distribution
-should be searched for the resource.)
-
-If it is a ``Requirement``, then the requirement is automatically resolved
-(searching the current ``Environment`` if necessary) and a matching
-distribution is added to the ``WorkingSet`` and ``sys.path`` if one was not
-already present.  (Unless the ``Requirement`` can't be satisfied, in which
-case an exception is raised.)  The `resource_name` argument is then interpreted
-relative to the root of the identified distribution; i.e. its first path
-segment will be treated as a peer of the top-level modules or packages in the
-distribution.
-
-Note that resource names must be ``/``-separated paths and cannot be absolute
-(i.e. no leading ``/``) or contain relative names like ``".."``.  Do *not* use
-``os.path`` routines to manipulate resource paths, as they are *not* filesystem
-paths.
-
-``resource_exists(package_or_requirement, resource_name)``
-    Does the named resource exist?  Return ``True`` or ``False`` accordingly.
-
-``resource_stream(package_or_requirement, resource_name)``
-    Return a readable file-like object for the specified resource; it may be
-    an actual file, a ``StringIO``, or some similar object.  The stream is
-    in "binary mode", in the sense that whatever bytes are in the resource
-    will be read as-is.
-
-``resource_string(package_or_requirement, resource_name)``
-    Return the specified resource as a string.  The resource is read in
-    binary fashion, such that the returned string contains exactly the bytes
-    that are stored in the resource.
-
-``resource_isdir(package_or_requirement, resource_name)``
-    Is the named resource a directory?  Return ``True`` or ``False``
-    accordingly.
-
-``resource_listdir(package_or_requirement, resource_name)``
-    List the contents of the named resource directory, just like ``os.listdir``
-    except that it works even if the resource is in a zipfile.
-
-Note that only ``resource_exists()`` and ``resource_isdir()`` are insensitive
-as to the resource type.  You cannot use ``resource_listdir()`` on a file
-resource, and you can't use ``resource_string()`` or ``resource_stream()`` on
-directory resources.  Using an inappropriate method for the resource type may
-result in an exception or undefined behavior, depending on the platform and
-distribution format involved.
-
-
-Resource Extraction
--------------------
-
-``resource_filename(package_or_requirement, resource_name)``
-    Sometimes, it is not sufficient to access a resource in string or stream
-    form, and a true filesystem filename is needed.  In such cases, you can
-    use this method (or module-level function) to obtain a filename for a
-    resource.  If the resource is in an archive distribution (such as a zipped
-    egg), it will be extracted to a cache directory, and the filename within
-    the cache will be returned.  If the named resource is a directory, then
-    all resources within that directory (including subdirectories) are also
-    extracted.  If the named resource is a C extension or "eager resource"
-    (see the ``setuptools`` documentation for details), then all C extensions
-    and eager resources are extracted at the same time.
-
-    Archived resources are extracted to a cache location that can be managed by
-    the following two methods:
-
-``set_extraction_path(path)``
-    Set the base path where resources will be extracted to, if needed.
-
-    If you do not call this routine before any extractions take place, the
-    path defaults to the return value of ``get_default_cache()``.  (Which is
-    based on the ``PYTHON_EGG_CACHE`` environment variable, with various
-    platform-specific fallbacks.  See that routine's documentation for more
-    details.)
-
-    Resources are extracted to subdirectories of this path based upon
-    information given by the resource provider.  You may set this to a
-    temporary directory, but then you must call ``cleanup_resources()`` to
-    delete the extracted files when done.  There is no guarantee that
-    ``cleanup_resources()`` will be able to remove all extracted files.  (On
-    Windows, for example, you can't unlink .pyd or .dll files that are still
-    in use.)
-
-    Note that you may not change the extraction path for a given resource
-    manager once resources have been extracted, unless you first call
-    ``cleanup_resources()``.
-
-``cleanup_resources(force=False)``
-    Delete all extracted resource files and directories, returning a list
-    of the file and directory names that could not be successfully removed.
-    This function does not have any concurrency protection, so it should
-    generally only be called when the extraction path is a temporary
-    directory exclusive to a single process.  This method is not
-    automatically called; you must call it explicitly or register it as an
-    ``atexit`` function if you wish to ensure cleanup of a temporary
-    directory used for extractions.
-
-
-"Provider" Interface
---------------------
-
-If you are implementing an ``IResourceProvider`` and/or ``IMetadataProvider``
-for a new distribution archive format, you may need to use the following
-``IResourceManager`` methods to co-ordinate extraction of resources to the
-filesystem.  If you're not implementing an archive format, however, you have
-no need to use these methods.  Unlike the other methods listed above, they are
-*not* available as top-level functions tied to the global ``ResourceManager``;
-you must therefore have an explicit ``ResourceManager`` instance to use them.
-
-``get_cache_path(archive_name, names=())``
-    Return absolute location in cache for `archive_name` and `names`
-
-    The parent directory of the resulting path will be created if it does
-    not already exist.  `archive_name` should be the base filename of the
-    enclosing egg (which may not be the name of the enclosing zipfile!),
-    including its ".egg" extension.  `names`, if provided, should be a
-    sequence of path name parts "under" the egg's extraction location.
-
-    This method should only be called by resource providers that need to
-    obtain an extraction location, and only for names they intend to
-    extract, as it tracks the generated names for possible cleanup later.
-
-``extraction_error()``
-    Raise an ``ExtractionError`` describing the active exception as interfering
-    with the extraction process.  You should call this if you encounter any
-    OS errors extracting the file to the cache path; it will format the
-    operating system exception for you, and add other information to the
-    ``ExtractionError`` instance that may be needed by programs that want to
-    wrap or handle extraction errors themselves.
-
-``postprocess(tempname, filename)``
-    Perform any platform-specific postprocessing of `tempname`.
-    Resource providers should call this method ONLY after successfully
-    extracting a compressed resource.  They must NOT call it on resources
-    that are already in the filesystem.
-
-    `tempname` is the current (temporary) name of the file, and `filename`
-    is the name it will be renamed to by the caller after this routine
-    returns.
-
-
-Metadata API
-============
-
-The metadata API is used to access metadata resources bundled in a pluggable
-distribution.  Metadata resources are virtual files or directories containing
-information about the distribution, such as might be used by an extensible
-application or framework to connect "plugins".  Like other kinds of resources,
-metadata resource names are ``/``-separated and should not contain ``..`` or
-begin with a ``/``.  You should not use ``os.path`` routines to manipulate
-resource paths.
-
-The metadata API is provided by objects implementing the ``IMetadataProvider``
-or ``IResourceProvider`` interfaces.  ``Distribution`` objects implement this
-interface, as do objects returned by the ``get_provider()`` function:
-
-``get_provider(package_or_requirement)``
-    If a package name is supplied, return an ``IResourceProvider`` for the
-    package.  If a ``Requirement`` is supplied, resolve it by returning a
-    ``Distribution`` from the current working set (searching the current
-    ``Environment`` if necessary and adding the newly found ``Distribution``
-    to the working set).  If the named package can't be imported, or the
-    ``Requirement`` can't be satisfied, an exception is raised.
-
-    NOTE: if you use a package name rather than a ``Requirement``, the object
-    you get back may not be a pluggable distribution, depending on the method
-    by which the package was installed.  In particular, "development" packages
-    and "single-version externally-managed" packages do not have any way to
-    map from a package name to the corresponding project's metadata.  Do not
-    write code that passes a package name to ``get_provider()`` and then tries
-    to retrieve project metadata from the returned object.  It may appear to
-    work when the named package is in an ``.egg`` file or directory, but
-    it will fail in other installation scenarios.  If you want project
-    metadata, you need to ask for a *project*, not a package.
-
-
-``IMetadataProvider`` Methods
------------------------------
-
-The methods provided by objects (such as ``Distribution`` instances) that
-implement the ``IMetadataProvider`` or ``IResourceProvider`` interfaces are:
-
-``has_metadata(name)``
-    Does the named metadata resource exist?
-
-``metadata_isdir(name)``
-    Is the named metadata resource a directory?
-
-``metadata_listdir(name)``
-    List of metadata names in the directory (like ``os.listdir()``)
-
-``get_metadata(name)``
-    Return the named metadata resource as a string.  The data is read in binary
-    mode; i.e., the exact bytes of the resource file are returned.
-
-``get_metadata_lines(name)``
-    Yield named metadata resource as list of non-blank non-comment lines.  This
-    is short for calling ``yield_lines(provider.get_metadata(name))``.  See the
-    section on `yield_lines()`_ below for more information on the syntax it
-    recognizes.
-
-``run_script(script_name, namespace)``
-    Execute the named script in the supplied namespace dictionary.  Raises
-    ``ResolutionError`` if there is no script by that name in the ``scripts``
-    metadata directory.  `namespace` should be a Python dictionary, usually
-    a module dictionary if the script is being run as a module.
-
-
-Exceptions
-==========
-
-``pkg_resources`` provides a simple exception hierarchy for problems that may
-occur when processing requests to locate and activate packages::
-
-    ResolutionError
-        DistributionNotFound
-        VersionConflict
-        UnknownExtra
-
-    ExtractionError
-
-``ResolutionError``
-    This class is used as a base class for the other three exceptions, so that
-    you can catch all of them with a single "except" clause.  It is also raised
-    directly for miscellaneous requirement-resolution problems like trying to
-    run a script that doesn't exist in the distribution it was requested from.
-
-``DistributionNotFound``
-    A distribution needed to fulfill a requirement could not be found.
-
-``VersionConflict``
-    The requested version of a project conflicts with an already-activated
-    version of the same project.
-
-``UnknownExtra``
-    One of the "extras" requested was not recognized by the distribution it
-    was requested from.
-
-``ExtractionError``
-    A problem occurred extracting a resource to the Python Egg cache.  The
-    following attributes are available on instances of this exception:
-
-    manager
-        The resource manager that raised this exception
-
-    cache_path
-        The base directory for resource extraction
-
-    original_error
-        The exception instance that caused extraction to fail
-
-
-Supporting Custom Importers
-===========================
-
-By default, ``pkg_resources`` supports normal filesystem imports, and
-``zipimport`` importers.  If you wish to use the ``pkg_resources`` features
-with other (PEP 302-compatible) importers or module loaders, you may need to
-register various handlers and support functions using these APIs:
-
-``register_finder(importer_type, distribution_finder)``
-    Register `distribution_finder` to find distributions in ``sys.path`` items.
-    `importer_type` is the type or class of a PEP 302 "Importer" (``sys.path``
-    item handler), and `distribution_finder` is a callable that, when passed a
-    path item, the importer instance, and an `only` flag, yields
-    ``Distribution`` instances found under that path item.  (The `only` flag,
-    if true, means the finder should yield only ``Distribution`` objects whose
-    ``location`` is equal to the path item provided.)
-
-    See the source of the ``pkg_resources.find_on_path`` function for an
-    example finder function.
-
-``register_loader_type(loader_type, provider_factory)``
-    Register `provider_factory` to make ``IResourceProvider`` objects for
-    `loader_type`.  `loader_type` is the type or class of a PEP 302
-    ``module.__loader__``, and `provider_factory` is a function that, when
-    passed a module object, returns an `IResourceProvider`_ for that module,
-    allowing it to be used with the `ResourceManager API`_.
-
-``register_namespace_handler(importer_type, namespace_handler)``
-    Register `namespace_handler` to declare namespace packages for the given
-    `importer_type`.  `importer_type` is the type or class of a PEP 302
-    "importer" (sys.path item handler), and `namespace_handler` is a callable
-    with a signature like this::
-
-        def namespace_handler(importer, path_entry, moduleName, module):
-            # return a path_entry to use for child packages
-
-    Namespace handlers are only called if the relevant importer object has
-    already agreed that it can handle the relevant path item.  The handler
-    should only return a subpath if the module ``__path__`` does not already
-    contain an equivalent subpath.  Otherwise, it should return None.
-
-    For an example namespace handler, see the source of the
-    ``pkg_resources.file_ns_handler`` function, which is used for both zipfile
-    importing and regular importing.
-
-
-IResourceProvider
------------------
-
-``IResourceProvider`` is an abstract class that documents what methods are
-required of objects returned by a `provider_factory` registered with
-``register_loader_type()``.  ``IResourceProvider`` is a subclass of
-``IMetadataProvider``, so objects that implement this interface must also
-implement all of the `IMetadataProvider Methods`_ as well as the methods
-shown here.  The `manager` argument to the methods below must be an object
-that supports the full `ResourceManager API`_ documented above.
-
-``get_resource_filename(manager, resource_name)``
-    Return a true filesystem path for `resource_name`, co-ordinating the
-    extraction with `manager`, if the resource must be unpacked to the
-    filesystem.
-
-``get_resource_stream(manager, resource_name)``
-    Return a readable file-like object for `resource_name`.
-
-``get_resource_string(manager, resource_name)``
-    Return a string containing the contents of `resource_name`.
-
-``has_resource(resource_name)``
-    Does the package contain the named resource?
-
-``resource_isdir(resource_name)``
-    Is the named resource a directory?  Return a false value if the resource
-    does not exist or is not a directory.
-
-``resource_listdir(resource_name)``
-    Return a list of the contents of the resource directory, ala
-    ``os.listdir()``.  Requesting the contents of a non-existent directory may
-    raise an exception.
-
-Note, by the way, that your provider classes need not (and should not) subclass
-``IResourceProvider`` or ``IMetadataProvider``!  These classes exist solely
-for documentation purposes and do not provide any useful implementation code.
-You may instead wish to subclass one of the `built-in resource providers`_.
-
-
-Built-in Resource Providers
----------------------------
-
-``pkg_resources`` includes several provider classes that are automatically used
-where appropriate.  Their inheritance tree looks like this::
-
-    NullProvider
-        EggProvider
-            DefaultProvider
-                PathMetadata
-            ZipProvider
-                EggMetadata
-        EmptyProvider
-            FileMetadata
-
-
-``NullProvider``
-    This provider class is just an abstract base that provides for common
-    provider behaviors (such as running scripts), given a definition for just
-    a few abstract methods.
-
-``EggProvider``
-    This provider class adds in some egg-specific features that are common
-    to zipped and unzipped eggs.
-
-``DefaultProvider``
-    This provider class is used for unpacked eggs and "plain old Python"
-    filesystem modules.
-
-``ZipProvider``
-    This provider class is used for all zipped modules, whether they are eggs
-    or not.
-
-``EmptyProvider``
-    This provider class always returns answers consistent with a provider that
-    has no metadata or resources.  ``Distribution`` objects created without
-    a ``metadata`` argument use an instance of this provider class instead.
-    Since all ``EmptyProvider`` instances are equivalent, there is no need
-    to have more than one instance.  ``pkg_resources`` therefore creates a
-    global instance of this class under the name ``empty_provider``, and you
-    may use it if you have need of an ``EmptyProvider`` instance.
-
-``PathMetadata(path, egg_info)``
-    Create an ``IResourceProvider`` for a filesystem-based distribution, where
-    `path` is the filesystem location of the importable modules, and `egg_info`
-    is the filesystem location of the distribution's metadata directory.
-    `egg_info` should usually be the ``EGG-INFO`` subdirectory of `path` for an
-    "unpacked egg", and a ``ProjectName.egg-info`` subdirectory of `path` for
-    a "development egg".  However, other uses are possible for custom purposes.
-
-``EggMetadata(zipimporter)``
-    Create an ``IResourceProvider`` for a zipfile-based distribution.  The
-    `zipimporter` should be a ``zipimport.zipimporter`` instance, and may
-    represent a "basket" (a zipfile containing multiple ".egg" subdirectories)
-    a specific egg *within* a basket, or a zipfile egg (where the zipfile
-    itself is a ".egg").  It can also be a combination, such as a zipfile egg
-    that also contains other eggs.
-
-``FileMetadata(path_to_pkg_info)``
-    Create an ``IResourceProvider`` that provides exactly one metadata
-    resource: ``PKG-INFO``.  The supplied path should be a distutils PKG-INFO
-    file.  This is basically the same as an ``EmptyProvider``, except that
-    requests for ``PKG-INFO`` will be answered using the contents of the
-    designated file.  (This provider is used to wrap ``.egg-info`` files
-    installed by vendor-supplied system packages.)
-
-
-Utility Functions
-=================
-
-In addition to its high-level APIs, ``pkg_resources`` also includes several
-generally-useful utility routines.  These routines are used to implement the
-high-level APIs, but can also be quite useful by themselves.
-
-
-Parsing Utilities
------------------
-
-``parse_version(version)``
-    Parse a project's version string, returning a value that can be used to
-    compare versions by chronological order.  Semantically, the format is a
-    rough cross between distutils' ``StrictVersion`` and ``LooseVersion``
-    classes; if you give it versions that would work with ``StrictVersion``,
-    then they will compare the same way.  Otherwise, comparisons are more like
-    a "smarter" form of ``LooseVersion``.  It is *possible* to create
-    pathological version coding schemes that will fool this parser, but they
-    should be very rare in practice.
-
-    The returned value will be a tuple of strings.  Numeric portions of the
-    version are padded to 8 digits so they will compare numerically, but
-    without relying on how numbers compare relative to strings.  Dots are
-    dropped, but dashes are retained.  Trailing zeros between alpha segments
-    or dashes are suppressed, so that e.g. "2.4.0" is considered the same as
-    "2.4". Alphanumeric parts are lower-cased.
-
-    The algorithm assumes that strings like "-" and any alpha string that
-    alphabetically follows "final"  represents a "patch level".  So, "2.4-1"
-    is assumed to be a branch or patch of "2.4", and therefore "2.4.1" is
-    considered newer than "2.4-1", which in turn is newer than "2.4".
-
-    Strings like "a", "b", "c", "alpha", "beta", "candidate" and so on (that
-    come before "final" alphabetically) are assumed to be pre-release versions,
-    so that the version "2.4" is considered newer than "2.4a1".  Any "-"
-    characters preceding a pre-release indicator are removed.  (In versions of
-    setuptools prior to 0.6a9, "-" characters were not removed, leading to the
-    unintuitive result that "0.2-rc1" was considered a newer version than
-    "0.2".)
-
-    Finally, to handle miscellaneous cases, the strings "pre", "preview", and
-    "rc" are treated as if they were "c", i.e. as though they were release
-    candidates, and therefore are not as new as a version string that does not
-    contain them.  And the string "dev" is treated as if it were an "@" sign;
-    that is, a version coming before even "a" or "alpha".
-
-.. _yield_lines():
-
-``yield_lines(strs)``
-    Yield non-empty/non-comment lines from a string/unicode or a possibly-
-    nested sequence thereof.  If `strs` is an instance of ``basestring``, it
-    is split into lines, and each non-blank, non-comment line is yielded after
-    stripping leading and trailing whitespace.  (Lines whose first non-blank
-    character is ``#`` are considered comment lines.)
-
-    If `strs` is not an instance of ``basestring``, it is iterated over, and
-    each item is passed recursively to ``yield_lines()``, so that an arbitarily
-    nested sequence of strings, or sequences of sequences of strings can be
-    flattened out to the lines contained therein.  So for example, passing
-    a file object or a list of strings to ``yield_lines`` will both work.
-    (Note that between each string in a sequence of strings there is assumed to
-    be an implicit line break, so lines cannot bridge two strings in a
-    sequence.)
-
-    This routine is used extensively by ``pkg_resources`` to parse metadata
-    and file formats of various kinds, and most other ``pkg_resources``
-    parsing functions that yield multiple values will use it to break up their
-    input.  However, this routine is idempotent, so calling ``yield_lines()``
-    on the output of another call to ``yield_lines()`` is completely harmless.
-
-``split_sections(strs)``
-    Split a string (or possibly-nested iterable thereof), yielding ``(section,
-    content)`` pairs found using an ``.ini``-like syntax.  Each ``section`` is
-    a whitespace-stripped version of the section name ("``[section]``")
-    and each ``content`` is a list of stripped lines excluding blank lines and
-    comment-only lines.  If there are any non-blank, non-comment lines before
-    the first section header, they're yielded in a first ``section`` of
-    ``None``.
-
-    This routine uses ``yield_lines()`` as its front end, so you can pass in
-    anything that ``yield_lines()`` accepts, such as an open text file, string,
-    or sequence of strings.  ``ValueError`` is raised if a malformed section
-    header is found (i.e. a line starting with ``[`` but not ending with
-    ``]``).
-
-    Note that this simplistic parser assumes that any line whose first nonblank
-    character is ``[`` is a section heading, so it can't support .ini format
-    variations that allow ``[`` as the first nonblank character on other lines.
-
-``safe_name(name)``
-    Return a "safe" form of a project's name, suitable for use in a
-    ``Requirement`` string, as a distribution name, or a PyPI project name.
-    All non-alphanumeric runs are condensed to single "-" characters, such that
-    a name like "The $$$ Tree" becomes "The-Tree".  Note that if you are
-    generating a filename from this value you should combine it with a call to
-    ``to_filename()`` so all dashes ("-") are replaced by underscores ("_").
-    See ``to_filename()``.
-
-``safe_version(version)``
-    Similar to ``safe_name()`` except that spaces in the input become dots, and
-    dots are allowed to exist in the output.  As with ``safe_name()``, if you
-    are generating a filename from this you should replace any "-" characters
-    in the output with underscores.
-
-``safe_extra(extra)``
-    Return a "safe" form of an extra's name, suitable for use in a requirement
-    string or a setup script's ``extras_require`` keyword.  This routine is
-    similar to ``safe_name()`` except that non-alphanumeric runs are replaced
-    by a single underbar (``_``), and the result is lowercased.
-
-``to_filename(name_or_version)``
-    Escape a name or version string so it can be used in a dash-separated
-    filename (or ``#egg=name-version`` tag) without ambiguity.  You
-    should only pass in values that were returned by ``safe_name()`` or
-    ``safe_version()``.
-
-
-Platform Utilities
-------------------
-
-``get_build_platform()``
-    Return this platform's identifier string.  For Windows, the return value
-    is ``"win32"``, and for Mac OS X it is a string of the form
-    ``"macosx-10.4-ppc"``.  All other platforms return the same uname-based
-    string that the ``distutils.util.get_platform()`` function returns.
-    This string is the minimum platform version required by distributions built
-    on the local machine.  (Backward compatibility note: setuptools versions
-    prior to 0.6b1 called this function ``get_platform()``, and the function is
-    still available under that name for backward compatibility reasons.)
-
-``get_supported_platform()`` (New in 0.6b1)
-    This is the similar to ``get_build_platform()``, but is the maximum
-    platform version that the local machine supports.  You will usually want
-    to use this value as the ``provided`` argument to the
-    ``compatible_platforms()`` function.
-
-``compatible_platforms(provided, required)``
-    Return true if a distribution built on the `provided` platform may be used
-    on the `required` platform.  If either platform value is ``None``, it is
-    considered a wildcard, and the platforms are therefore compatible.
-    Likewise, if the platform strings are equal, they're also considered
-    compatible, and ``True`` is returned.  Currently, the only non-equal
-    platform strings that are considered compatible are Mac OS X platform
-    strings with the same hardware type (e.g. ``ppc``) and major version
-    (e.g. ``10``) with the `provided` platform's minor version being less than
-    or equal to the `required` platform's minor version.
-
-``get_default_cache()``
-    Determine the default cache location for extracting resources from zipped
-    eggs.  This routine returns the ``PYTHON_EGG_CACHE`` environment variable,
-    if set.  Otherwise, on Windows, it returns a "Python-Eggs" subdirectory of
-    the user's "Application Data" directory.  On all other systems, it returns
-    ``os.path.expanduser("~/.python-eggs")`` if ``PYTHON_EGG_CACHE`` is not
-    set.
-
-
-PEP 302 Utilities
------------------
-
-``get_importer(path_item)``
-    Retrieve a PEP 302 "importer" for the given path item (which need not
-    actually be on ``sys.path``).  This routine simulates the PEP 302 protocol
-    for obtaining an "importer" object.  It first checks for an importer for
-    the path item in ``sys.path_importer_cache``, and if not found it calls
-    each of the ``sys.path_hooks`` and caches the result if a good importer is
-    found.  If no importer is found, this routine returns an ``ImpWrapper``
-    instance that wraps the builtin import machinery as a PEP 302-compliant
-    "importer" object.  This ``ImpWrapper`` is *not* cached; instead a new
-    instance is returned each time.
-
-    (Note: When run under Python 2.5, this function is simply an alias for
-    ``pkgutil.get_importer()``, and instead of ``pkg_resources.ImpWrapper``
-    instances, it may return ``pkgutil.ImpImporter`` instances.)
-
-
-File/Path Utilities
--------------------
-
-``ensure_directory(path)``
-    Ensure that the parent directory (``os.path.dirname``) of `path` actually
-    exists, using ``os.makedirs()`` if necessary.
-
-``normalize_path(path)``
-    Return a "normalized" version of `path`, such that two paths represent
-    the same filesystem location if they have equal ``normalized_path()``
-    values.  Specifically, this is a shortcut for calling ``os.path.realpath``
-    and ``os.path.normcase`` on `path`.  Unfortunately, on certain platforms
-    (notably Cygwin and Mac OS X) the ``normcase`` function does not accurately
-    reflect the platform's case-sensitivity, so there is always the possibility
-    of two apparently-different paths being equal on such platforms.
-
-History
--------
-
-0.6c9
- * Fix ``resource_listdir('')`` always returning an empty list for zipped eggs.
-
-0.6c7
- * Fix package precedence problem where single-version eggs installed in
-   ``site-packages`` would take precedence over ``.egg`` files (or directories)
-   installed in ``site-packages``.
-
-0.6c6
- * Fix extracted C extensions not having executable permissions under Cygwin.
-
- * Allow ``.egg-link`` files to contain relative paths.
-
- * Fix cache dir defaults on Windows when multiple environment vars are needed
-   to construct a path.
-
-0.6c4
- * Fix "dev" versions being considered newer than release candidates.
-
-0.6c3
- * Python 2.5 compatibility fixes.
-
-0.6c2
- * Fix a problem with eggs specified directly on ``PYTHONPATH`` on
-   case-insensitive filesystems possibly not showing up in the default
-   working set, due to differing normalizations of ``sys.path`` entries.
-
-0.6b3
- * Fixed a duplicate path insertion problem on case-insensitive filesystems.
-
-0.6b1
- * Split ``get_platform()`` into ``get_supported_platform()`` and
-   ``get_build_platform()`` to work around a Mac versioning problem that caused
-   the behavior of ``compatible_platforms()`` to be platform specific.
-
- * Fix entry point parsing when a standalone module name has whitespace
-   between it and the extras.
-
-0.6a11
- * Added ``ExtractionError`` and ``ResourceManager.extraction_error()`` so that
-   cache permission problems get a more user-friendly explanation of the
-   problem, and so that programs can catch and handle extraction errors if they
-   need to.
-
-0.6a10
- * Added the ``extras`` attribute to ``Distribution``, the ``find_plugins()``
-   method to ``WorkingSet``, and the ``__add__()`` and ``__iadd__()`` methods
-   to ``Environment``.
-
- * ``safe_name()`` now allows dots in project names.
-
- * There is a new ``to_filename()`` function that escapes project names and
-   versions for safe use in constructing egg filenames from a Distribution
-   object's metadata.
-
- * Added ``Distribution.clone()`` method, and keyword argument support to other
-   ``Distribution`` constructors.
-
- * Added the ``DEVELOP_DIST`` precedence, and automatically assign it to
-   eggs using ``.egg-info`` format.
-
-0.6a9
- * Don't raise an error when an invalid (unfinished) distribution is found
-   unless absolutely necessary.  Warn about skipping invalid/unfinished eggs
-   when building an Environment.
-
- * Added support for ``.egg-info`` files or directories with version/platform
-   information embedded in the filename, so that system packagers have the
-   option of including ``PKG-INFO`` files to indicate the presence of a
-   system-installed egg, without needing to use ``.egg`` directories, zipfiles,
-   or ``.pth`` manipulation.
-
- * Changed ``parse_version()`` to remove dashes before pre-release tags, so
-   that ``0.2-rc1`` is considered an *older* version than ``0.2``, and is equal
-   to ``0.2rc1``.  The idea that a dash *always* meant a post-release version
-   was highly non-intuitive to setuptools users and Python developers, who
-   seem to want to use ``-rc`` version numbers a lot.
-
-0.6a8
- * Fixed a problem with ``WorkingSet.resolve()`` that prevented version
-   conflicts from being detected at runtime.
-
- * Improved runtime conflict warning message to identify a line in the user's
-   program, rather than flagging the ``warn()`` call in ``pkg_resources``.
-
- * Avoid giving runtime conflict warnings for namespace packages, even if they
-   were declared by a different package than the one currently being activated.
-
- * Fix path insertion algorithm for case-insensitive filesystems.
-
- * Fixed a problem with nested namespace packages (e.g. ``peak.util``) not
-   being set as an attribute of their parent package.
-
-0.6a6
- * Activated distributions are now inserted in ``sys.path`` (and the working
-   set) just before the directory that contains them, instead of at the end.
-   This allows e.g. eggs in ``site-packages`` to override unmanaged modules in
-   the same location, and allows eggs found earlier on ``sys.path`` to override
-   ones found later.
-
- * When a distribution is activated, it now checks whether any contained
-   non-namespace modules have already been imported and issues a warning if
-   a conflicting module has already been imported.
-
- * Changed dependency processing so that it's breadth-first, allowing a
-   depender's preferences to override those of a dependee, to prevent conflicts
-   when a lower version is acceptable to the dependee, but not the depender.
-
- * Fixed a problem extracting zipped files on Windows, when the egg in question
-   has had changed contents but still has the same version number.
-
-0.6a4
- * Fix a bug in ``WorkingSet.resolve()`` that was introduced in 0.6a3.
-
-0.6a3
- * Added ``safe_extra()`` parsing utility routine, and use it for Requirement,
-   EntryPoint, and Distribution objects' extras handling.
-
-0.6a1
- * Enhanced performance of ``require()`` and related operations when all
-   requirements are already in the working set, and enhanced performance of
-   directory scanning for distributions.
-
- * Fixed some problems using ``pkg_resources`` w/PEP 302 loaders other than
-   ``zipimport``, and the previously-broken "eager resource" support.
-
- * Fixed ``pkg_resources.resource_exists()`` not working correctly, along with
-   some other resource API bugs.
-
- * Many API changes and enhancements:
-
-   * Added ``EntryPoint``, ``get_entry_map``, ``load_entry_point``, and
-     ``get_entry_info`` APIs for dynamic plugin discovery.
-
-   * ``list_resources`` is now ``resource_listdir`` (and it actually works)
-
-   * Resource API functions like ``resource_string()`` that accepted a package
-     name and resource name, will now also accept a ``Requirement`` object in
-     place of the package name (to allow access to non-package data files in
-     an egg).
-
-   * ``get_provider()`` will now accept a ``Requirement`` instance or a module
-     name.  If it is given a ``Requirement``, it will return a corresponding
-     ``Distribution`` (by calling ``require()`` if a suitable distribution
-     isn't already in the working set), rather than returning a metadata and
-     resource provider for a specific module.  (The difference is in how
-     resource paths are interpreted; supplying a module name means resources
-     path will be module-relative, rather than relative to the distribution's
-     root.)
-
-   * ``Distribution`` objects now implement the ``IResourceProvider`` and
-     ``IMetadataProvider`` interfaces, so you don't need to reference the (no
-     longer available) ``metadata`` attribute to get at these interfaces.
-
-   * ``Distribution`` and ``Requirement`` both have a ``project_name``
-     attribute for the project name they refer to.  (Previously these were
-     ``name`` and ``distname`` attributes.)
-
-   * The ``path`` attribute of ``Distribution`` objects is now ``location``,
-     because it isn't necessarily a filesystem path (and hasn't been for some
-     time now).  The ``location`` of ``Distribution`` objects in the filesystem
-     should always be normalized using ``pkg_resources.normalize_path()``; all
-     of the setuptools and EasyInstall code that generates distributions from
-     the filesystem (including ``Distribution.from_filename()``) ensure this
-     invariant, but if you use a more generic API like ``Distribution()`` or
-     ``Distribution.from_location()`` you should take care that you don't
-     create a distribution with an un-normalized filesystem path.
-
-   * ``Distribution`` objects now have an ``as_requirement()`` method that
-     returns a ``Requirement`` for the distribution's project name and version.
-
-   * Distribution objects no longer have an ``installed_on()`` method, and the
-     ``install_on()`` method is now ``activate()`` (but may go away altogether
-     soon).  The ``depends()`` method has also been renamed to ``requires()``,
-     and ``InvalidOption`` is now ``UnknownExtra``.
-
-   * ``find_distributions()`` now takes an additional argument called ``only``,
-     that tells it to only yield distributions whose location is the passed-in
-     path.  (It defaults to False, so that the default behavior is unchanged.)
-
-   * ``AvailableDistributions`` is now called ``Environment``, and the
-     ``get()``, ``__len__()``, and ``__contains__()`` methods were removed,
-     because they weren't particularly useful.  ``__getitem__()`` no longer
-     raises ``KeyError``; it just returns an empty list if there are no
-     distributions for the named project.
-
-   * The ``resolve()`` method of ``Environment`` is now a method of
-     ``WorkingSet`` instead, and the ``best_match()`` method now uses a working
-     set instead of a path list as its second argument.
-
-   * There is a new ``pkg_resources.add_activation_listener()`` API that lets
-     you register a callback for notifications about distributions added to
-     ``sys.path`` (including the distributions already on it).  This is
-     basically a hook for extensible applications and frameworks to be able to
-     search for plugin metadata in distributions added at runtime.
-
-0.5a13
- * Fixed a bug in resource extraction from nested packages in a zipped egg.
-
-0.5a12
- * Updated extraction/cache mechanism for zipped resources to avoid inter-
-   process and inter-thread races during extraction.  The default cache
-   location can now be set via the ``PYTHON_EGGS_CACHE`` environment variable,
-   and the default Windows cache is now a ``Python-Eggs`` subdirectory of the
-   current user's "Application Data" directory, if the ``PYTHON_EGGS_CACHE``
-   variable isn't set.
-
-0.5a10
- * Fix a problem with ``pkg_resources`` being confused by non-existent eggs on
-   ``sys.path`` (e.g. if a user deletes an egg without removing it from the
-   ``easy-install.pth`` file).
-
- * Fix a problem with "basket" support in ``pkg_resources``, where egg-finding
-   never actually went inside ``.egg`` files.
-
- * Made ``pkg_resources`` import the module you request resources from, if it's
-   not already imported.
-
-0.5a4
- * ``pkg_resources.AvailableDistributions.resolve()`` and related methods now
-   accept an ``installer`` argument: a callable taking one argument, a
-   ``Requirement`` instance.  The callable must return a ``Distribution``
-   object, or ``None`` if no distribution is found.  This feature is used by
-   EasyInstall to resolve dependencies by recursively invoking itself.
-
-0.4a4
- * Fix problems with ``resource_listdir()``, ``resource_isdir()`` and resource
-   directory extraction for zipped eggs.
-
-0.4a3
- * Fixed scripts not being able to see a ``__file__`` variable in ``__main__``
-
- * Fixed a problem with ``resource_isdir()`` implementation that was introduced
-   in 0.4a2.
-
-0.4a1
- * Fixed a bug in requirements processing for exact versions (i.e. ``==`` and
-   ``!=``) when only one condition was included.
-
- * Added ``safe_name()`` and ``safe_version()`` APIs to clean up handling of
-   arbitrary distribution names and versions found on PyPI.
-
-0.3a4
- * ``pkg_resources`` now supports resource directories, not just the resources
-   in them.  In particular, there are ``resource_listdir()`` and
-   ``resource_isdir()`` APIs.
-
- * ``pkg_resources`` now supports "egg baskets" -- .egg zipfiles which contain
-   multiple distributions in subdirectories whose names end with ``.egg``.
-   Having such a "basket" in a directory on ``sys.path`` is equivalent to
-   having the individual eggs in that directory, but the contained eggs can
-   be individually added (or not) to ``sys.path``.  Currently, however, there
-   is no automated way to create baskets.
-
- * Namespace package manipulation is now protected by the Python import lock.
-
-0.3a1
- * Initial release.
-
diff --git a/vendor/distribute-0.6.34/docs/build/html/_sources/python3.txt b/vendor/distribute-0.6.34/docs/build/html/_sources/python3.txt
deleted file mode 100644
index 2f6cde4a..00000000
--- a/vendor/distribute-0.6.34/docs/build/html/_sources/python3.txt
+++ /dev/null
@@ -1,121 +0,0 @@
-=====================================================
-Supporting both Python 2 and Python 3 with Distribute
-=====================================================
-
-Starting with version 0.6.2, Distribute supports Python 3. Installing and
-using distribute for Python 3 code works exactly the same as for Python 2
-code, but Distribute also helps you to support Python 2 and Python 3 from
-the same source code by letting you run 2to3 on the code as a part of the
-build process, by setting the keyword parameter ``use_2to3`` to True.
-
-
-Distribute as help during porting
-=================================
-
-Distribute can make the porting process much easier by automatically running
-2to3 as a part of the test running. To do this you need to configure the
-setup.py so that you can run the unit tests with ``python setup.py test``.
-
-See :ref:`test` for more information on this.
-
-Once you have the tests running under Python 2, you can add the use_2to3
-keyword parameters to setup(), and start running the tests under Python 3.
-The test command will now first run the build command during which the code
-will be converted with 2to3, and the tests will then be run from the build
-directory, as opposed from the source directory as is normally done.
-
-Distribute will convert all Python files, and also all doctests in Python
-files. However, if you have doctests located in separate text files, these
-will not automatically be converted. By adding them to the
-``convert_2to3_doctests`` keyword parameter Distrubute will convert them as
-well.
-
-By default, the conversion uses all fixers in the ``lib2to3.fixers`` package.
-To use additional fixers, the parameter ``use_2to3_fixers`` can be set
-to a list of names of packages containing fixers. To exclude fixers, the
-parameter ``use_2to3_exclude_fixers`` can be set to fixer names to be
-skipped.
-
-A typical setup.py can look something like this::
-
-    from setuptools import setup
-
-    setup(
-        name='your.module',
-        version = '1.0',
-        description='This is your awesome module',
-        author='You',
-        author_email='your@email',
-        package_dir = {'': 'src'},
-        packages = ['your', 'you.module'],
-        test_suite = 'your.module.tests',
-        use_2to3 = True,
-        convert_2to3_doctests = ['src/your/module/README.txt'],
-        use_2to3_fixers = ['your.fixers'],
-        use_2to3_exclude_fixers = ['lib2to3.fixes.fix_import'],
-    )
-
-Differential conversion
------------------------
-
-Note that a file will only be copied and converted during the build process
-if the source file has been changed. If you add a file to the doctests
-that should be converted, it will not be converted the next time you run
-the tests, since it hasn't been modified. You need to remove it from the
-build directory. Also if you run the build, install or test commands before
-adding the use_2to3 parameter, you will have to remove the build directory
-before you run the test command, as the files otherwise will seem updated,
-and no conversion will happen.
-
-In general, if code doesn't seem to be converted, deleting the build directory
-and trying again is a good saferguard against the build directory getting
-"out of sync" with the source directory.
-
-Distributing Python 3 modules
-=============================
-
-You can distribute your modules with Python 3 support in different ways. A
-normal source distribution will work, but can be slow in installing, as the
-2to3 process will be run during the install. But you can also distribute
-the module in binary format, such as a binary egg. That egg will contain the
-already converted code, and hence no 2to3 conversion is needed during install.
-
-Advanced features
-=================
-
-If you don't want to run the 2to3 conversion on the doctests in Python files,
-you can turn that off by setting ``setuptools.use_2to3_on_doctests = False``.
-
-Note on compatibility with setuptools
-=====================================
-
-Setuptools do not know about the new keyword parameters to support Python 3.
-As a result it will warn about the unknown keyword parameters if you use
-setuptools instead of Distribute under Python 2. This is not an error, and
-install process will continue as normal, but if you want to get rid of that
-error this is easy. Simply conditionally add the new parameters into an extra
-dict and pass that dict into setup()::
-
-    from setuptools import setup
-    import sys
-
-    extra = {}
-    if sys.version_info >= (3,):
-        extra['use_2to3'] = True
-        extra['convert_2to3_doctests'] = ['src/your/module/README.txt']
-        extra['use_2to3_fixers'] = ['your.fixers']
-
-    setup(
-        name='your.module',
-        version = '1.0',
-        description='This is your awesome module',
-        author='You',
-        author_email='your@email',
-        package_dir = {'': 'src'},
-        packages = ['your', 'you.module'],
-        test_suite = 'your.module.tests',
-        **extra
-    )
-
-This way the parameters will only be used under Python 3, where you have to
-use Distribute.
diff --git a/vendor/distribute-0.6.34/docs/build/html/_sources/roadmap.txt b/vendor/distribute-0.6.34/docs/build/html/_sources/roadmap.txt
deleted file mode 100644
index ea5070ea..00000000
--- a/vendor/distribute-0.6.34/docs/build/html/_sources/roadmap.txt
+++ /dev/null
@@ -1,86 +0,0 @@
-=======
-Roadmap
-=======
-
-Distribute has two branches:
-
-- 0.6.x : provides a Setuptools-0.6cX compatible version
-- 0.7.x : will provide a refactoring
-
-0.6.x
-=====
-
-Not "much" is going to happen here, we want this branch to be helpful
-to the community *today* by addressing the 40-or-so bugs
-that were found in Setuptools and never fixed. This is eventually
-happen soon because its development is
-fast : there are up to 5 commiters that are working on it very often
-(and the number grows weekly.)
-
-The biggest issue with this branch is that it is providing the same
-packages and modules setuptools does, and this
-requires some bootstrapping work where we make sure once Distribute is
-installed, all Distribution that requires Setuptools
-will continue to work. This is done by faking the metadata of
-Setuptools 0.6c9. That's the only way we found to do this.
-
-There's one major thing though: thanks to the work of Lennart, Alex,
-Martin, this branch supports Python 3,
-which is great to have to speed up Py3 adoption.
-
-The goal of the 0.6.x is to remove as much bugs as we can, and try if
-possible to remove the patches done
-on Distutils. We will support 0.6.x maintenance for years and we will
-promote its usage everywhere instead of
-Setuptools.
-
-Some new commands are added there, when they are helpful and don't
-interact with the rest. I am thinking
-about "upload_docs" that let you upload documentation to PyPI. The
-goal is to move it to Distutils
-at some point, if the documentation feature of PyPI stays and starts to be used.
-
-0.7.x
-=====
-
-We've started to refactor Distribute with this roadmap in mind (and
-no, as someone said, it's not vaporware,
-we've done a lot already)
-
-- 0.7.x can be installed and used with 0.6.x
-
-- easy_install is going to be deprecated ! use Pip !
-
-- the version system will be deprecated, in favor of the one in Distutils
-
-- no more Distutils monkey-patch that happens once you use the code
-  (things like 'from distutils import cmd; cmd.Command = CustomCommand')
-
-- no more custom site.py (that is: if something misses in Python's
-  site.py we'll add it there instead of patching it)
-
-- no more namespaced packages system, if PEP 382 (namespaces package
-  support) makes it to 2.7
-
-- The code is splitted in many packages and might be distributed under
-  several distributions.
-
- - distribute.resources: that's the old pkg_resources, but
-   reorganized in clean, pep-8 modules. This package will
-   only contain the query APIs and will focus on being PEP 376
-   compatible. We will promote its usage and see if Pip wants
-   to use it as a basis.
-   It will probably shrink a lot though, once the stdlib provides PEP 376 support.
-
- - distribute.entrypoints: that's the old pkg_resources entry points
-   system, but on its own. it uses distribute.resources
-
- - distribute.index: that's package_index and a few other things.
-   everything required to interact with PyPI. We will promote
-   its usage and see if Pip wants to use it as a basis.
-
- - distribute.core (might be renamed to main): that's everything
-   else, and uses the other packages.
-
-Goal: A first release before (or when) Python 2.7 / 3.2 is out.
-
diff --git a/vendor/distribute-0.6.34/docs/build/html/_sources/setuptools.txt b/vendor/distribute-0.6.34/docs/build/html/_sources/setuptools.txt
deleted file mode 100644
index 31ecc931..00000000
--- a/vendor/distribute-0.6.34/docs/build/html/_sources/setuptools.txt
+++ /dev/null
@@ -1,3236 +0,0 @@
-==================================================
-Building and Distributing Packages with Distribute
-==================================================
-
-``Distribute`` is a collection of enhancements to the Python ``distutils``
-(for Python 2.3.5 and up on most platforms; 64-bit platforms require a minimum
-of Python 2.4) that allow you to more easily build and distribute Python
-packages, especially ones that have dependencies on other packages.
-
-Packages built and distributed using ``setuptools`` look to the user like
-ordinary Python packages based on the ``distutils``.  Your users don't need to
-install or even know about setuptools in order to use them, and you don't
-have to include the entire setuptools package in your distributions.  By
-including just a single `bootstrap module`_ (an 8K .py file), your package will
-automatically download and install ``setuptools`` if the user is building your
-package from source and doesn't have a suitable version already installed.
-
-.. _bootstrap module: http://nightly.ziade.org/distribute_setup.py
-
-Feature Highlights:
-
-* Automatically find/download/install/upgrade dependencies at build time using
-  the `EasyInstall tool <http://peak.telecommunity.com/DevCenter/EasyInstall>`_,
-  which supports downloading via HTTP, FTP, Subversion, and SourceForge, and
-  automatically scans web pages linked from PyPI to find download links.  (It's
-  the closest thing to CPAN currently available for Python.)
-
-* Create `Python Eggs <http://peak.telecommunity.com/DevCenter/PythonEggs>`_ -
-  a single-file importable distribution format
-
-* Include data files inside your package directories, where your code can
-  actually use them.  (Python 2.4 distutils also supports this feature, but
-  setuptools provides the feature for Python 2.3 packages also, and supports
-  accessing data files in zipped packages too.)
-
-* Automatically include all packages in your source tree, without listing them
-  individually in setup.py
-
-* Automatically include all relevant files in your source distributions,
-  without needing to create a ``MANIFEST.in`` file, and without having to force
-  regeneration of the ``MANIFEST`` file when your source tree changes.
-
-* Automatically generate wrapper scripts or Windows (console and GUI) .exe
-  files for any number of "main" functions in your project.  (Note: this is not
-  a py2exe replacement; the .exe files rely on the local Python installation.)
-
-* Transparent Pyrex support, so that your setup.py can list ``.pyx`` files and
-  still work even when the end-user doesn't have Pyrex installed (as long as
-  you include the Pyrex-generated C in your source distribution)
-
-* Command aliases - create project-specific, per-user, or site-wide shortcut
-  names for commonly used commands and options
-
-* PyPI upload support - upload your source distributions and eggs to PyPI
-
-* Deploy your project in "development mode", such that it's available on
-  ``sys.path``, yet can still be edited directly from its source checkout.
-
-* Easily extend the distutils with new commands or ``setup()`` arguments, and
-  distribute/reuse your extensions for multiple projects, without copying code.
-
-* Create extensible applications and frameworks that automatically discover
-  extensions, using simple "entry points" declared in a project's setup script.
-
-In addition to the PyPI downloads, the development version of ``setuptools``
-is available from the `Python SVN sandbox`_, and in-development versions of the
-`0.6 branch`_ are available as well.
-
-.. _0.6 branch: http://svn.python.org/projects/sandbox/branches/setuptools-0.6/#egg=setuptools-dev06
-
-.. _Python SVN sandbox: http://svn.python.org/projects/sandbox/trunk/setuptools/#egg=setuptools-dev
-
-.. contents:: **Table of Contents**
-
-.. _distribute_setup.py: `bootstrap module`_
-
-
------------------
-Developer's Guide
------------------
-
-
-Installing ``setuptools``
-=========================
-
-Please follow the `EasyInstall Installation Instructions`_ to install the
-current stable version of setuptools.  In particular, be sure to read the
-section on `Custom Installation Locations`_ if you are installing anywhere
-other than Python's ``site-packages`` directory.
-
-.. _EasyInstall Installation Instructions: http://peak.telecommunity.com/DevCenter/EasyInstall#installation-instructions
-
-.. _Custom Installation Locations: http://peak.telecommunity.com/DevCenter/EasyInstall#custom-installation-locations
-
-If you want the current in-development version of setuptools, you should first
-install a stable version, and then run::
-
-    distribute_setup.py setuptools==dev
-
-This will download and install the latest development (i.e. unstable) version
-of setuptools from the Python Subversion sandbox.
-
-
-Basic Use
-=========
-
-For basic use of setuptools, just import things from setuptools instead of
-the distutils.  Here's a minimal setup script using setuptools::
-
-    from setuptools import setup, find_packages
-    setup(
-        name = "HelloWorld",
-        version = "0.1",
-        packages = find_packages(),
-    )
-
-As you can see, it doesn't take much to use setuptools in a project.
-Just by doing the above, this project will be able to produce eggs, upload to
-PyPI, and automatically include all packages in the directory where the
-setup.py lives.  See the `Command Reference`_ section below to see what
-commands you can give to this setup script.
-
-Of course, before you release your project to PyPI, you'll want to add a bit
-more information to your setup script to help people find or learn about your
-project.  And maybe your project will have grown by then to include a few
-dependencies, and perhaps some data files and scripts::
-
-    from setuptools import setup, find_packages
-    setup(
-        name = "HelloWorld",
-        version = "0.1",
-        packages = find_packages(),
-        scripts = ['say_hello.py'],
-
-        # Project uses reStructuredText, so ensure that the docutils get
-        # installed or upgraded on the target machine
-        install_requires = ['docutils>=0.3'],
-
-        package_data = {
-            # If any package contains *.txt or *.rst files, include them:
-            '': ['*.txt', '*.rst'],
-            # And include any *.msg files found in the 'hello' package, too:
-            'hello': ['*.msg'],
-        },
-
-        # metadata for upload to PyPI
-        author = "Me",
-        author_email = "me@example.com",
-        description = "This is an Example Package",
-        license = "PSF",
-        keywords = "hello world example examples",
-        url = "http://example.com/HelloWorld/",   # project home page, if any
-
-        # could also include long_description, download_url, classifiers, etc.
-    )
-
-In the sections that follow, we'll explain what most of these ``setup()``
-arguments do (except for the metadata ones), and the various ways you might use
-them in your own project(s).
-
-
-Specifying Your Project's Version
----------------------------------
-
-Setuptools can work well with most versioning schemes; there are, however, a
-few special things to watch out for, in order to ensure that setuptools and
-EasyInstall can always tell what version of your package is newer than another
-version.  Knowing these things will also help you correctly specify what
-versions of other projects your project depends on.
-
-A version consists of an alternating series of release numbers and pre-release
-or post-release tags.  A release number is a series of digits punctuated by
-dots, such as ``2.4`` or ``0.5``.  Each series of digits is treated
-numerically, so releases ``2.1`` and ``2.1.0`` are different ways to spell the
-same release number, denoting the first subrelease of release 2.  But  ``2.10``
-is the *tenth* subrelease of release 2, and so is a different and newer release
-from ``2.1`` or ``2.1.0``.  Leading zeros within a series of digits are also
-ignored, so ``2.01`` is the same as ``2.1``, and different from ``2.0.1``.
-
-Following a release number, you can have either a pre-release or post-release
-tag.  Pre-release tags make a version be considered *older* than the version
-they are appended to.  So, revision ``2.4`` is *newer* than revision ``2.4c1``,
-which in turn is newer than ``2.4b1`` or ``2.4a1``.  Postrelease tags make
-a version be considered *newer* than the version they are appended to.  So,
-revisions like ``2.4-1`` and ``2.4pl3`` are newer than ``2.4``, but are *older*
-than ``2.4.1`` (which has a higher release number).
-
-A pre-release tag is a series of letters that are alphabetically before
-"final".  Some examples of prerelease tags would include ``alpha``, ``beta``,
-``a``, ``c``, ``dev``, and so on.  You do not have to place a dot before
-the prerelease tag if it's immediately after a number, but it's okay to do
-so if you prefer.  Thus, ``2.4c1`` and ``2.4.c1`` both represent release
-candidate 1 of version ``2.4``, and are treated as identical by setuptools.
-
-In addition, there are three special prerelease tags that are treated as if
-they were the letter ``c``: ``pre``, ``preview``, and ``rc``.  So, version
-``2.4rc1``, ``2.4pre1`` and ``2.4preview1`` are all the exact same version as
-``2.4c1``, and are treated as identical by setuptools.
-
-A post-release tag is either a series of letters that are alphabetically
-greater than or equal to "final", or a dash (``-``).  Post-release tags are
-generally used to separate patch numbers, port numbers, build numbers, revision
-numbers, or date stamps from the release number.  For example, the version
-``2.4-r1263`` might denote Subversion revision 1263 of a post-release patch of
-version ``2.4``.  Or you might use ``2.4-20051127`` to denote a date-stamped
-post-release.
-
-Notice that after each pre or post-release tag, you are free to place another
-release number, followed again by more pre- or post-release tags.  For example,
-``0.6a9.dev-r41475`` could denote Subversion revision 41475 of the in-
-development version of the ninth alpha of release 0.6.  Notice that ``dev`` is
-a pre-release tag, so this version is a *lower* version number than ``0.6a9``,
-which would be the actual ninth alpha of release 0.6.  But the ``-r41475`` is
-a post-release tag, so this version is *newer* than ``0.6a9.dev``.
-
-For the most part, setuptools' interpretation of version numbers is intuitive,
-but here are a few tips that will keep you out of trouble in the corner cases:
-
-* Don't use ``-`` or any other character than ``.`` as a separator, unless you
-  really want a post-release.  Remember that ``2.1-rc2`` means you've
-  *already* released ``2.1``, whereas ``2.1rc2`` and ``2.1.c2`` are candidates
-  you're putting out *before* ``2.1``.  If you accidentally distribute copies
-  of a post-release that you meant to be a pre-release, the only safe fix is to
-  bump your main release number (e.g. to ``2.1.1``) and re-release the project.
-
-* Don't stick adjoining pre-release tags together without a dot or number
-  between them.  Version ``1.9adev`` is the ``adev`` prerelease of ``1.9``,
-  *not* a development pre-release of ``1.9a``.  Use ``.dev`` instead, as in
-  ``1.9a.dev``, or separate the prerelease tags with a number, as in
-  ``1.9a0dev``.  ``1.9a.dev``, ``1.9a0dev``, and even ``1.9.a.dev`` are
-  identical versions from setuptools' point of view, so you can use whatever
-  scheme you prefer.
-
-* If you want to be certain that your chosen numbering scheme works the way
-  you think it will, you can use the ``pkg_resources.parse_version()`` function
-  to compare different version numbers::
-
-    >>> from pkg_resources import parse_version
-    >>> parse_version('1.9.a.dev') == parse_version('1.9a0dev')
-    True
-    >>> parse_version('2.1-rc2') < parse_version('2.1')
-    False
-    >>> parse_version('0.6a9dev-r41475') < parse_version('0.6a9')
-    True
-
-Once you've decided on a version numbering scheme for your project, you can
-have setuptools automatically tag your in-development releases with various
-pre- or post-release tags.  See the following sections for more details:
-
-* `Tagging and "Daily Build" or "Snapshot" Releases`_
-* `Managing "Continuous Releases" Using Subversion`_
-* The `egg_info`_ command
-
-
-New and Changed ``setup()`` Keywords
-====================================
-
-The following keyword arguments to ``setup()`` are added or changed by
-``setuptools``.  All of them are optional; you do not have to supply them
-unless you need the associated ``setuptools`` feature.
-
-``include_package_data``
-    If set to ``True``, this tells ``setuptools`` to automatically include any
-    data files it finds inside your package directories, that are either under
-    CVS or Subversion control, or which are specified by your ``MANIFEST.in``
-    file.  For more information, see the section below on `Including Data
-    Files`_.
-
-``exclude_package_data``
-    A dictionary mapping package names to lists of glob patterns that should
-    be *excluded* from your package directories.  You can use this to trim back
-    any excess files included by ``include_package_data``.  For a complete
-    description and examples, see the section below on `Including Data Files`_.
-
-``package_data``
-    A dictionary mapping package names to lists of glob patterns.  For a
-    complete description and examples, see the section below on `Including
-    Data Files`_.  You do not need to use this option if you are using
-    ``include_package_data``, unless you need to add e.g. files that are
-    generated by your setup script and build process.  (And are therefore not
-    in source control or are files that you don't want to include in your
-    source distribution.)
-
-``zip_safe``
-    A boolean (True or False) flag specifying whether the project can be
-    safely installed and run from a zip file.  If this argument is not
-    supplied, the ``bdist_egg`` command will have to analyze all of your
-    project's contents for possible problems each time it buids an egg.
-
-``install_requires``
-    A string or list of strings specifying what other distributions need to
-    be installed when this one is.  See the section below on `Declaring
-    Dependencies`_ for details and examples of the format of this argument.
-
-``entry_points``
-    A dictionary mapping entry point group names to strings or lists of strings
-    defining the entry points.  Entry points are used to support dynamic
-    discovery of services or plugins provided by a project.  See `Dynamic
-    Discovery of Services and Plugins`_ for details and examples of the format
-    of this argument.  In addition, this keyword is used to support `Automatic
-    Script Creation`_.
-
-``extras_require``
-    A dictionary mapping names of "extras" (optional features of your project)
-    to strings or lists of strings specifying what other distributions must be
-    installed to support those features.  See the section below on `Declaring
-    Dependencies`_ for details and examples of the format of this argument.
-
-``setup_requires``
-    A string or list of strings specifying what other distributions need to
-    be present in order for the *setup script* to run.  ``setuptools`` will
-    attempt to obtain these (even going so far as to download them using
-    ``EasyInstall``) before processing the rest of the setup script or commands.
-    This argument is needed if you are using distutils extensions as part of
-    your build process; for example, extensions that process setup() arguments
-    and turn them into EGG-INFO metadata files.
-
-    (Note: projects listed in ``setup_requires`` will NOT be automatically
-    installed on the system where the setup script is being run.  They are
-    simply downloaded to the setup directory if they're not locally available
-    already.  If you want them to be installed, as well as being available
-    when the setup script is run, you should add them to ``install_requires``
-    **and** ``setup_requires``.)
-
-``dependency_links``
-    A list of strings naming URLs to be searched when satisfying dependencies.
-    These links will be used if needed to install packages specified by
-    ``setup_requires`` or ``tests_require``.  They will also be written into
-    the egg's metadata for use by tools like EasyInstall to use when installing
-    an ``.egg`` file.
-
-``namespace_packages``
-    A list of strings naming the project's "namespace packages".  A namespace
-    package is a package that may be split across multiple project
-    distributions.  For example, Zope 3's ``zope`` package is a namespace
-    package, because subpackages like ``zope.interface`` and ``zope.publisher``
-    may be distributed separately.  The egg runtime system can automatically
-    merge such subpackages into a single parent package at runtime, as long
-    as you declare them in each project that contains any subpackages of the
-    namespace package, and as long as the namespace package's ``__init__.py``
-    does not contain any code other than a namespace declaration.  See the
-    section below on `Namespace Packages`_ for more information.
-
-``test_suite``
-    A string naming a ``unittest.TestCase`` subclass (or a package or module
-    containing one or more of them, or a method of such a subclass), or naming
-    a function that can be called with no arguments and returns a
-    ``unittest.TestSuite``.  If the named suite is a module, and the module
-    has an ``additional_tests()`` function, it is called and the results are
-    added to the tests to be run.  If the named suite is a package, any
-    submodules and subpackages are recursively added to the overall test suite.
-
-    Specifying this argument enables use of the `test`_ command to run the
-    specified test suite, e.g. via ``setup.py test``.  See the section on the
-    `test`_ command below for more details.
-
-``tests_require``
-    If your project's tests need one or more additional packages besides those
-    needed to install it, you can use this option to specify them.  It should
-    be a string or list of strings specifying what other distributions need to
-    be present for the package's tests to run.  When you run the ``test``
-    command, ``setuptools`` will  attempt to obtain these (even going
-    so far as to download them using ``EasyInstall``).  Note that these
-    required projects will *not* be installed on the system where the tests
-    are run, but only downloaded to the project's setup directory if they're
-    not already installed locally.
-
-.. _test_loader:
-
-``test_loader``
-    If you would like to use a different way of finding tests to run than what
-    setuptools normally uses, you can specify a module name and class name in
-    this argument.  The named class must be instantiable with no arguments, and
-    its instances must support the ``loadTestsFromNames()`` method as defined
-    in the Python ``unittest`` module's ``TestLoader`` class.  Setuptools will
-    pass only one test "name" in the `names` argument: the value supplied for
-    the ``test_suite`` argument.  The loader you specify may interpret this
-    string in any way it likes, as there are no restrictions on what may be
-    contained in a ``test_suite`` string.
-
-    The module name and class name must be separated by a ``:``.  The default
-    value of this argument is ``"setuptools.command.test:ScanningLoader"``.  If
-    you want to use the default ``unittest`` behavior, you can specify
-    ``"unittest:TestLoader"`` as your ``test_loader`` argument instead.  This
-    will prevent automatic scanning of submodules and subpackages.
-
-    The module and class you specify here may be contained in another package,
-    as long as you use the ``tests_require`` option to ensure that the package
-    containing the loader class is available when the ``test`` command is run.
-
-``eager_resources``
-    A list of strings naming resources that should be extracted together, if
-    any of them is needed, or if any C extensions included in the project are
-    imported.  This argument is only useful if the project will be installed as
-    a zipfile, and there is a need to have all of the listed resources be
-    extracted to the filesystem *as a unit*.  Resources listed here
-    should be '/'-separated paths, relative to the source root, so to list a
-    resource ``foo.png`` in package ``bar.baz``, you would include the string
-    ``bar/baz/foo.png`` in this argument.
-
-    If you only need to obtain resources one at a time, or you don't have any C
-    extensions that access other files in the project (such as data files or
-    shared libraries), you probably do NOT need this argument and shouldn't
-    mess with it.  For more details on how this argument works, see the section
-    below on `Automatic Resource Extraction`_.
-
-``use_2to3``
-    Convert the source code from Python 2 to Python 3 with 2to3 during the
-    build process. See :doc:`python3` for more details.
-
-``convert_2to3_doctests``
-    List of doctest source files that need to be converted with 2to3.
-    See :doc:`python3` for more details.
-
-``use_2to3_fixers``
-    A list of modules to search for additional fixers to be used during
-    the 2to3 conversion. See :doc:`python3` for more details.
-
-
-Using ``find_packages()``
--------------------------
-
-For simple projects, it's usually easy enough to manually add packages to
-the ``packages`` argument of ``setup()``.  However, for very large projects
-(Twisted, PEAK, Zope, Chandler, etc.), it can be a big burden to keep the
-package list updated.  That's what ``setuptools.find_packages()`` is for.
-
-``find_packages()`` takes a source directory, and a list of package names or
-patterns to exclude.  If omitted, the source directory defaults to the same
-directory as the setup script.  Some projects use a ``src`` or ``lib``
-directory as the root of their source tree, and those projects would of course
-use ``"src"`` or ``"lib"`` as the first argument to ``find_packages()``.  (And
-such projects also need something like ``package_dir = {'':'src'}`` in their
-``setup()`` arguments, but that's just a normal distutils thing.)
-
-Anyway, ``find_packages()`` walks the target directory, and finds Python
-packages by looking for ``__init__.py`` files.  It then filters the list of
-packages using the exclusion patterns.
-
-Exclusion patterns are package names, optionally including wildcards.  For
-example, ``find_packages(exclude=["*.tests"])`` will exclude all packages whose
-last name part is ``tests``.   Or, ``find_packages(exclude=["*.tests",
-"*.tests.*"])`` will also exclude any subpackages of packages named ``tests``,
-but it still won't exclude a top-level ``tests`` package or the children
-thereof.  In fact, if you really want no ``tests`` packages at all, you'll need
-something like this::
-
-    find_packages(exclude=["*.tests", "*.tests.*", "tests.*", "tests"])
-
-in order to cover all the bases.  Really, the exclusion patterns are intended
-to cover simpler use cases than this, like excluding a single, specified
-package and its subpackages.
-
-Regardless of the target directory or exclusions, the ``find_packages()``
-function returns a list of package names suitable for use as the ``packages``
-argument to ``setup()``, and so is usually the easiest way to set that
-argument in your setup script.  Especially since it frees you from having to
-remember to modify your setup script whenever your project grows additional
-top-level packages or subpackages.
-
-
-Automatic Script Creation
-=========================
-
-Packaging and installing scripts can be a bit awkward with the distutils.  For
-one thing, there's no easy way to have a script's filename match local
-conventions on both Windows and POSIX platforms.  For another, you often have
-to create a separate file just for the "main" script, when your actual "main"
-is a function in a module somewhere.  And even in Python 2.4, using the ``-m``
-option only works for actual ``.py`` files that aren't installed in a package.
-
-``setuptools`` fixes all of these problems by automatically generating scripts
-for you with the correct extension, and on Windows it will even create an
-``.exe`` file so that users don't have to change their ``PATHEXT`` settings.
-The way to use this feature is to define "entry points" in your setup script
-that indicate what function the generated script should import and run.  For
-example, to create two console scripts called ``foo`` and ``bar``, and a GUI
-script called ``baz``, you might do something like this::
-
-    setup(
-        # other arguments here...
-        entry_points = {
-            'console_scripts': [
-                'foo = my_package.some_module:main_func',
-                'bar = other_module:some_func',
-            ],
-            'gui_scripts': [
-                'baz = my_package_gui.start_func',
-            ]
-        }
-    )
-
-When this project is installed on non-Windows platforms (using "setup.py
-install", "setup.py develop", or by using EasyInstall), a set of ``foo``,
-``bar``, and ``baz`` scripts will be installed that import ``main_func`` and
-``some_func`` from the specified modules.  The functions you specify are called
-with no arguments, and their return value is passed to ``sys.exit()``, so you
-can return an errorlevel or message to print to stderr.
-
-On Windows, a set of ``foo.exe``, ``bar.exe``, and ``baz.exe`` launchers are
-created, alongside a set of ``foo.py``, ``bar.py``, and ``baz.pyw`` files.  The
-``.exe`` wrappers find and execute the right version of Python to run the
-``.py`` or ``.pyw`` file.
-
-You may define as many "console script" and "gui script" entry points as you
-like, and each one can optionally specify "extras" that it depends on, that
-will be added to ``sys.path`` when the script is run.  For more information on
-"extras", see the section below on `Declaring Extras`_.  For more information
-on "entry points" in general, see the section below on `Dynamic Discovery of
-Services and Plugins`_.
-
-
-"Eggsecutable" Scripts
-----------------------
-
-Occasionally, there are situations where it's desirable to make an ``.egg``
-file directly executable.  You can do this by including an entry point such
-as the following::
-
-    setup(
-        # other arguments here...
-        entry_points = {
-            'setuptools.installation': [
-                'eggsecutable = my_package.some_module:main_func',
-            ]
-        }
-    )
-
-Any eggs built from the above setup script will include a short excecutable
-prelude that imports and calls ``main_func()`` from ``my_package.some_module``.
-The prelude can be run on Unix-like platforms (including Mac and Linux) by
-invoking the egg with ``/bin/sh``, or by enabling execute permissions on the
-``.egg`` file.  For the executable prelude to run, the appropriate version of
-Python must be available via the ``PATH`` environment variable, under its
-"long" name.  That is, if the egg is built for Python 2.3, there must be a
-``python2.3`` executable present in a directory on ``PATH``.
-
-This feature is primarily intended to support distribute_setup the installation of
-setuptools itself on non-Windows platforms, but may also be useful for other
-projects as well.
-
-IMPORTANT NOTE: Eggs with an "eggsecutable" header cannot be renamed, or
-invoked via symlinks.  They *must* be invoked using their original filename, in
-order to ensure that, once running, ``pkg_resources`` will know what project
-and version is in use.  The header script will check this and exit with an
-error if the ``.egg`` file has been renamed or is invoked via a symlink that
-changes its base name.
-
-
-Declaring Dependencies
-======================
-
-``setuptools`` supports automatically installing dependencies when a package is
-installed, and including information about dependencies in Python Eggs (so that
-package management tools like EasyInstall can use the information).
-
-``setuptools`` and ``pkg_resources`` use a common syntax for specifying a
-project's required dependencies.  This syntax consists of a project's PyPI
-name, optionally followed by a comma-separated list of "extras" in square
-brackets, optionally followed by a comma-separated list of version
-specifiers.  A version specifier is one of the operators ``<``, ``>``, ``<=``,
-``>=``, ``==`` or ``!=``, followed by a version identifier.  Tokens may be
-separated by whitespace, but any whitespace or nonstandard characters within a
-project name or version identifier must be replaced with ``-``.
-
-Version specifiers for a given project are internally sorted into ascending
-version order, and used to establish what ranges of versions are acceptable.
-Adjacent redundant conditions are also consolidated (e.g. ``">1, >2"`` becomes
-``">1"``, and ``"<2,<3"`` becomes ``"<3"``). ``"!="`` versions are excised from
-the ranges they fall within.  A project's version is then checked for
-membership in the resulting ranges. (Note that providing conflicting conditions
-for the same version (e.g. "<2,>=2" or "==2,!=2") is meaningless and may
-therefore produce bizarre results.)
-
-Here are some example requirement specifiers::
-
-    docutils >= 0.3
-
-    # comment lines and \ continuations are allowed in requirement strings
-    BazSpam ==1.1, ==1.2, ==1.3, ==1.4, ==1.5, \
-        ==1.6, ==1.7  # and so are line-end comments
-
-    PEAK[FastCGI, reST]>=0.5a4
-
-    setuptools==0.5a7
-
-The simplest way to include requirement specifiers is to use the
-``install_requires`` argument to ``setup()``.  It takes a string or list of
-strings containing requirement specifiers.  If you include more than one
-requirement in a string, each requirement must begin on a new line.
-
-This has three effects:
-
-1. When your project is installed, either by using EasyInstall, ``setup.py
-   install``, or ``setup.py develop``, all of the dependencies not already
-   installed will be located (via PyPI), downloaded, built (if necessary),
-   and installed.
-
-2. Any scripts in your project will be installed with wrappers that verify
-   the availability of the specified dependencies at runtime, and ensure that
-   the correct versions are added to ``sys.path`` (e.g. if multiple versions
-   have been installed).
-
-3. Python Egg distributions will include a metadata file listing the
-   dependencies.
-
-Note, by the way, that if you declare your dependencies in ``setup.py``, you do
-*not* need to use the ``require()`` function in your scripts or modules, as
-long as you either install the project or use ``setup.py develop`` to do
-development work on it.  (See `"Development Mode"`_ below for more details on
-using ``setup.py develop``.)
-
-
-Dependencies that aren't in PyPI
---------------------------------
-
-If your project depends on packages that aren't registered in PyPI, you may
-still be able to depend on them, as long as they are available for download
-as:
-
-- an egg, in the standard distutils ``sdist`` format,
-- a single ``.py`` file, or
-- a VCS repository (Subversion, Mercurial, or Git).
-
-You just need to add some URLs to the ``dependency_links`` argument to
-``setup()``.
-
-The URLs must be either:
-
-1. direct download URLs,
-2. the URLs of web pages that contain direct download links, or
-3. the repository's URL
-
-In general, it's better to link to web pages, because it is usually less
-complex to update a web page than to release a new version of your project.
-You can also use a SourceForge ``showfiles.php`` link in the case where a
-package you depend on is distributed via SourceForge.
-
-If you depend on a package that's distributed as a single ``.py`` file, you
-must include an ``"#egg=project-version"`` suffix to the URL, to give a project
-name and version number.  (Be sure to escape any dashes in the name or version
-by replacing them with underscores.)  EasyInstall will recognize this suffix
-and automatically create a trivial ``setup.py`` to wrap the single ``.py`` file
-as an egg.
-
-In the case of a VCS checkout, you should also append ``#egg=project-version``
-in order to identify for what package that checkout should be used. You can
-append ``@REV`` to the URL's path (before the fragment) to specify a revision.
-Additionally, you can also force the VCS being used by prepending the URL with
-a certain prefix. Currently available are:
-
--  ``svn+URL`` for Subversion,
--  ``git+URL`` for Git, and
--  ``hg+URL`` for Mercurial
-
-A more complete example would be:
-
-    ``vcs+proto://host/path@revision#egg=project-version``
-
-Be careful with the version. It should match the one inside the project files.
-If you want do disregard the version, you have to omit it both in the
-``requires`` and in the URL's fragment.
-
-This will do a checkout (or a clone, in Git and Mercurial parlance) to a
-temporary folder and run ``setup.py bdist_egg``.
-
-The ``dependency_links`` option takes the form of a list of URL strings.  For
-example, the below will cause EasyInstall to search the specified page for
-eggs or source distributions, if the package's dependencies aren't already
-installed::
-
-    setup(
-        ...
-        dependency_links = [
-            "http://peak.telecommunity.com/snapshots/"
-        ],
-    )
-
-
-.. _Declaring Extras:
-
-
-Declaring "Extras" (optional features with their own dependencies)
-------------------------------------------------------------------
-
-Sometimes a project has "recommended" dependencies, that are not required for
-all uses of the project.  For example, a project might offer optional PDF
-output if ReportLab is installed, and reStructuredText support if docutils is
-installed.  These optional features are called "extras", and setuptools allows
-you to define their requirements as well.  In this way, other projects that
-require these optional features can force the additional requirements to be
-installed, by naming the desired extras in their ``install_requires``.
-
-For example, let's say that Project A offers optional PDF and reST support::
-
-    setup(
-        name="Project-A",
-        ...
-        extras_require = {
-            'PDF':  ["ReportLab>=1.2", "RXP"],
-            'reST': ["docutils>=0.3"],
-        }
-    )
-
-As you can see, the ``extras_require`` argument takes a dictionary mapping
-names of "extra" features, to strings or lists of strings describing those
-features' requirements.  These requirements will *not* be automatically
-installed unless another package depends on them (directly or indirectly) by
-including the desired "extras" in square brackets after the associated project
-name.  (Or if the extras were listed in a requirement spec on the EasyInstall
-command line.)
-
-Extras can be used by a project's `entry points`_ to specify dynamic
-dependencies.  For example, if Project A includes a "rst2pdf" script, it might
-declare it like this, so that the "PDF" requirements are only resolved if the
-"rst2pdf" script is run::
-
-    setup(
-        name="Project-A",
-        ...
-        entry_points = {
-            'console_scripts':
-                ['rst2pdf = project_a.tools.pdfgen [PDF]'],
-                ['rst2html = project_a.tools.htmlgen'],
-                # more script entry points ...
-        }
-    )
-
-Projects can also use another project's extras when specifying dependencies.
-For example, if project B needs "project A" with PDF support installed, it
-might declare the dependency like this::
-
-    setup(
-        name="Project-B",
-        install_requires = ["Project-A[PDF]"],
-        ...
-    )
-
-This will cause ReportLab to be installed along with project A, if project B is
-installed -- even if project A was already installed.  In this way, a project
-can encapsulate groups of optional "downstream dependencies" under a feature
-name, so that packages that depend on it don't have to know what the downstream
-dependencies are.  If a later version of Project A builds in PDF support and
-no longer needs ReportLab, or if it ends up needing other dependencies besides
-ReportLab in order to provide PDF support, Project B's setup information does
-not need to change, but the right packages will still be installed if needed.
-
-Note, by the way, that if a project ends up not needing any other packages to
-support a feature, it should keep an empty requirements list for that feature
-in its ``extras_require`` argument, so that packages depending on that feature
-don't break (due to an invalid feature name).  For example, if Project A above
-builds in PDF support and no longer needs ReportLab, it could change its
-setup to this::
-
-    setup(
-        name="Project-A",
-        ...
-        extras_require = {
-            'PDF':  [],
-            'reST': ["docutils>=0.3"],
-        }
-    )
-
-so that Package B doesn't have to remove the ``[PDF]`` from its requirement
-specifier.
-
-
-Including Data Files
-====================
-
-The distutils have traditionally allowed installation of "data files", which
-are placed in a platform-specific location.  However, the most common use case
-for data files distributed with a package is for use *by* the package, usually
-by including the data files in the package directory.
-
-Setuptools offers three ways to specify data files to be included in your
-packages.  First, you can simply use the ``include_package_data`` keyword,
-e.g.::
-
-    from setuptools import setup, find_packages
-    setup(
-        ...
-        include_package_data = True
-    )
-
-This tells setuptools to install any data files it finds in your packages.
-The data files must be under CVS or Subversion control, or else they must be
-specified via the distutils' ``MANIFEST.in`` file.  (They can also be tracked
-by another revision control system, using an appropriate plugin.  See the
-section below on `Adding Support for Other Revision Control Systems`_ for
-information on how to write such plugins.)
-
-If the data files are not under version control, or are not in a supported
-version control system, or if you want finer-grained control over what files
-are included (for example, if you have documentation files in your package
-directories and want to exclude them from installation), then you can also use
-the ``package_data`` keyword, e.g.::
-
-    from setuptools import setup, find_packages
-    setup(
-        ...
-        package_data = {
-            # If any package contains *.txt or *.rst files, include them:
-            '': ['*.txt', '*.rst'],
-            # And include any *.msg files found in the 'hello' package, too:
-            'hello': ['*.msg'],
-        }
-    )
-
-The ``package_data`` argument is a dictionary that maps from package names to
-lists of glob patterns.  The globs may include subdirectory names, if the data
-files are contained in a subdirectory of the package.  For example, if the
-package tree looks like this::
-
-    setup.py
-    src/
-        mypkg/
-            __init__.py
-            mypkg.txt
-            data/
-                somefile.dat
-                otherdata.dat
-
-The setuptools setup file might look like this::
-
-    from setuptools import setup, find_packages
-    setup(
-        ...
-        packages = find_packages('src'),  # include all packages under src
-        package_dir = {'':'src'},   # tell distutils packages are under src
-
-        package_data = {
-            # If any package contains *.txt files, include them:
-            '': ['*.txt'],
-            # And include any *.dat files found in the 'data' subdirectory
-            # of the 'mypkg' package, also:
-            'mypkg': ['data/*.dat'],
-        }
-    )
-
-Notice that if you list patterns in ``package_data`` under the empty string,
-these patterns are used to find files in every package, even ones that also
-have their own patterns listed.  Thus, in the above example, the ``mypkg.txt``
-file gets included even though it's not listed in the patterns for ``mypkg``.
-
-Also notice that if you use paths, you *must* use a forward slash (``/``) as
-the path separator, even if you are on Windows.  Setuptools automatically
-converts slashes to appropriate platform-specific separators at build time.
-
-(Note: although the ``package_data`` argument was previously only available in
-``setuptools``, it was also added to the Python ``distutils`` package as of
-Python 2.4; there is `some documentation for the feature`__ available on the
-python.org website.  If using the setuptools-specific ``include_package_data``
-argument, files specified by ``package_data`` will *not* be automatically
-added to the manifest unless they are tracked by a supported version control
-system, or are listed in the MANIFEST.in file.)
-
-__ http://docs.python.org/dist/node11.html
-
-Sometimes, the ``include_package_data`` or ``package_data`` options alone
-aren't sufficient to precisely define what files you want included.  For
-example, you may want to include package README files in your revision control
-system and source distributions, but exclude them from being installed.  So,
-setuptools offers an ``exclude_package_data`` option as well, that allows you
-to do things like this::
-
-    from setuptools import setup, find_packages
-    setup(
-        ...
-        packages = find_packages('src'),  # include all packages under src
-        package_dir = {'':'src'},   # tell distutils packages are under src
-
-        include_package_data = True,    # include everything in source control
-
-        # ...but exclude README.txt from all packages
-        exclude_package_data = { '': ['README.txt'] },
-    )
-
-The ``exclude_package_data`` option is a dictionary mapping package names to
-lists of wildcard patterns, just like the ``package_data`` option.  And, just
-as with that option, a key of ``''`` will apply the given pattern(s) to all
-packages.  However, any files that match these patterns will be *excluded*
-from installation, even if they were listed in ``package_data`` or were
-included as a result of using ``include_package_data``.
-
-In summary, the three options allow you to:
-
-``include_package_data``
-    Accept all data files and directories matched by ``MANIFEST.in`` or found
-    in source control.
-
-``package_data``
-    Specify additional patterns to match files and directories that may or may
-    not be matched by ``MANIFEST.in`` or found in source control.
-
-``exclude_package_data``
-    Specify patterns for data files and directories that should *not* be
-    included when a package is installed, even if they would otherwise have
-    been included due to the use of the preceding options.
-
-NOTE: Due to the way the distutils build process works, a data file that you
-include in your project and then stop including may be "orphaned" in your
-project's build directories, requiring you to run ``setup.py clean --all`` to
-fully remove them.  This may also be important for your users and contributors
-if they track intermediate revisions of your project using Subversion; be sure
-to let them know when you make changes that remove files from inclusion so they
-can run ``setup.py clean --all``.
-
-
-Accessing Data Files at Runtime
--------------------------------
-
-Typically, existing programs manipulate a package's ``__file__`` attribute in
-order to find the location of data files.  However, this manipulation isn't
-compatible with PEP 302-based import hooks, including importing from zip files
-and Python Eggs.  It is strongly recommended that, if you are using data files,
-you should use the `Resource Management API`_ of ``pkg_resources`` to access
-them.  The ``pkg_resources`` module is distributed as part of setuptools, so if
-you're using setuptools to distribute your package, there is no reason not to
-use its resource management API.  See also `Accessing Package Resources`_ for
-a quick example of converting code that uses ``__file__`` to use
-``pkg_resources`` instead.
-
-.. _Resource Management API: http://peak.telecommunity.com/DevCenter/PythonEggs#resource-management
-.. _Accessing Package Resources: http://peak.telecommunity.com/DevCenter/PythonEggs#accessing-package-resources
-
-
-Non-Package Data Files
-----------------------
-
-The ``distutils`` normally install general "data files" to a platform-specific
-location (e.g. ``/usr/share``).  This feature intended to be used for things
-like documentation, example configuration files, and the like.  ``setuptools``
-does not install these data files in a separate location, however.  They are
-bundled inside the egg file or directory, alongside the Python modules and
-packages.  The data files can also be accessed using the `Resource Management
-API`_, by specifying a ``Requirement`` instead of a package name::
-
-    from pkg_resources import Requirement, resource_filename
-    filename = resource_filename(Requirement.parse("MyProject"),"sample.conf")
-
-The above code will obtain the filename of the "sample.conf" file in the data
-root of the "MyProject" distribution.
-
-Note, by the way, that this encapsulation of data files means that you can't
-actually install data files to some arbitrary location on a user's machine;
-this is a feature, not a bug.  You can always include a script in your
-distribution that extracts and copies your the documentation or data files to
-a user-specified location, at their discretion.  If you put related data files
-in a single directory, you can use ``resource_filename()`` with the directory
-name to get a filesystem directory that then can be copied with the ``shutil``
-module.  (Even if your package is installed as a zipfile, calling
-``resource_filename()`` on a directory will return an actual filesystem
-directory, whose contents will be that entire subtree of your distribution.)
-
-(Of course, if you're writing a new package, you can just as easily place your
-data files or directories inside one of your packages, rather than using the
-distutils' approach.  However, if you're updating an existing application, it
-may be simpler not to change the way it currently specifies these data files.)
-
-
-Automatic Resource Extraction
------------------------------
-
-If you are using tools that expect your resources to be "real" files, or your
-project includes non-extension native libraries or other files that your C
-extensions expect to be able to access, you may need to list those files in
-the ``eager_resources`` argument to ``setup()``, so that the files will be
-extracted together, whenever a C extension in the project is imported.
-
-This is especially important if your project includes shared libraries *other*
-than distutils-built C extensions, and those shared libraries use file
-extensions other than ``.dll``, ``.so``, or ``.dylib``, which are the
-extensions that setuptools 0.6a8 and higher automatically detects as shared
-libraries and adds to the ``native_libs.txt`` file for you.  Any shared
-libraries whose names do not end with one of those extensions should be listed
-as ``eager_resources``, because they need to be present in the filesystem when
-he C extensions that link to them are used.
-
-The ``pkg_resources`` runtime for compressed packages will automatically
-extract *all* C extensions and ``eager_resources`` at the same time, whenever
-*any* C extension or eager resource is requested via the ``resource_filename()``
-API.  (C extensions are imported using ``resource_filename()`` internally.)
-This ensures that C extensions will see all of the "real" files that they
-expect to see.
-
-Note also that you can list directory resource names in ``eager_resources`` as
-well, in which case the directory's contents (including subdirectories) will be
-extracted whenever any C extension or eager resource is requested.
-
-Please note that if you're not sure whether you need to use this argument, you
-don't!  It's really intended to support projects with lots of non-Python
-dependencies and as a last resort for crufty projects that can't otherwise
-handle being compressed.  If your package is pure Python, Python plus data
-files, or Python plus C, you really don't need this.  You've got to be using
-either C or an external program that needs "real" files in your project before
-there's any possibility of ``eager_resources`` being relevant to your project.
-
-
-Extensible Applications and Frameworks
-======================================
-
-
-.. _Entry Points:
-
-Dynamic Discovery of Services and Plugins
------------------------------------------
-
-``setuptools`` supports creating libraries that "plug in" to extensible
-applications and frameworks, by letting you register "entry points" in your
-project that can be imported by the application or framework.
-
-For example, suppose that a blogging tool wants to support plugins
-that provide translation for various file types to the blog's output format.
-The framework might define an "entry point group" called ``blogtool.parsers``,
-and then allow plugins to register entry points for the file extensions they
-support.
-
-This would allow people to create distributions that contain one or more
-parsers for different file types, and then the blogging tool would be able to
-find the parsers at runtime by looking up an entry point for the file
-extension (or mime type, or however it wants to).
-
-Note that if the blogging tool includes parsers for certain file formats, it
-can register these as entry points in its own setup script, which means it
-doesn't have to special-case its built-in formats.  They can just be treated
-the same as any other plugin's entry points would be.
-
-If you're creating a project that plugs in to an existing application or
-framework, you'll need to know what entry points or entry point groups are
-defined by that application or framework.  Then, you can register entry points
-in your setup script.  Here are a few examples of ways you might register an
-``.rst`` file parser entry point in the ``blogtool.parsers`` entry point group,
-for our hypothetical blogging tool::
-
-    setup(
-        # ...
-        entry_points = {'blogtool.parsers': '.rst = some_module:SomeClass'}
-    )
-
-    setup(
-        # ...
-        entry_points = {'blogtool.parsers': ['.rst = some_module:a_func']}
-    )
-
-    setup(
-        # ...
-        entry_points = """
-            [blogtool.parsers]
-            .rst = some.nested.module:SomeClass.some_classmethod [reST]
-        """,
-        extras_require = dict(reST = "Docutils>=0.3.5")
-    )
-
-The ``entry_points`` argument to ``setup()`` accepts either a string with
-``.ini``-style sections, or a dictionary mapping entry point group names to
-either strings or lists of strings containing entry point specifiers.  An
-entry point specifier consists of a name and value, separated by an ``=``
-sign.  The value consists of a dotted module name, optionally followed by a
-``:`` and a dotted identifier naming an object within the module.  It can
-also include a bracketed list of "extras" that are required for the entry
-point to be used.  When the invoking application or framework requests loading
-of an entry point, any requirements implied by the associated extras will be
-passed to ``pkg_resources.require()``, so that an appropriate error message
-can be displayed if the needed package(s) are missing.  (Of course, the
-invoking app or framework can ignore such errors if it wants to make an entry
-point optional if a requirement isn't installed.)
-
-
-Defining Additional Metadata
-----------------------------
-
-Some extensible applications and frameworks may need to define their own kinds
-of metadata to include in eggs, which they can then access using the
-``pkg_resources`` metadata APIs.  Ordinarily, this is done by having plugin
-developers include additional files in their ``ProjectName.egg-info``
-directory.  However, since it can be tedious to create such files by hand, you
-may want to create a distutils extension that will create the necessary files
-from arguments to ``setup()``, in much the same way that ``setuptools`` does
-for many of the ``setup()`` arguments it adds.  See the section below on
-`Creating distutils Extensions`_ for more details, especially the subsection on
-`Adding new EGG-INFO Files`_.
-
-
-"Development Mode"
-==================
-
-Under normal circumstances, the ``distutils`` assume that you are going to
-build a distribution of your project, not use it in its "raw" or "unbuilt"
-form.  If you were to use the ``distutils`` that way, you would have to rebuild
-and reinstall your project every time you made a change to it during
-development.
-
-Another problem that sometimes comes up with the ``distutils`` is that you may
-need to do development on two related projects at the same time.  You may need
-to put both projects' packages in the same directory to run them, but need to
-keep them separate for revision control purposes.  How can you do this?
-
-Setuptools allows you to deploy your projects for use in a common directory or
-staging area, but without copying any files.  Thus, you can edit each project's
-code in its checkout directory, and only need to run build commands when you
-change a project's C extensions or similarly compiled files.  You can even
-deploy a project into another project's checkout directory, if that's your
-preferred way of working (as opposed to using a common independent staging area
-or the site-packages directory).
-
-To do this, use the ``setup.py develop`` command.  It works very similarly to
-``setup.py install`` or the EasyInstall tool, except that it doesn't actually
-install anything.  Instead, it creates a special ``.egg-link`` file in the
-deployment directory, that links to your project's source code.  And, if your
-deployment directory is Python's ``site-packages`` directory, it will also
-update the ``easy-install.pth`` file to include your project's source code,
-thereby making it available on ``sys.path`` for all programs using that Python
-installation.
-
-If you have enabled the ``use_2to3`` flag, then of course the ``.egg-link``
-will not link directly to your source code when run under Python 3, since
-that source code would be made for Python 2 and not work under Python 3.
-Instead the ``setup.py develop`` will build Python 3 code under the ``build``
-directory, and link there. This means that after doing code changes you will
-have to run ``setup.py build`` before these changes are picked up by your
-Python 3 installation.
-
-In addition, the ``develop`` command creates wrapper scripts in the target
-script directory that will run your in-development scripts after ensuring that
-all your ``install_requires`` packages are available on ``sys.path``.
-
-You can deploy the same project to multiple staging areas, e.g. if you have
-multiple projects on the same machine that are sharing the same project you're
-doing development work.
-
-When you're done with a given development task, you can remove the project
-source from a staging area using ``setup.py develop --uninstall``, specifying
-the desired staging area if it's not the default.
-
-There are several options to control the precise behavior of the ``develop``
-command; see the section on the `develop`_ command below for more details.
-
-Note that you can also apply setuptools commands to non-setuptools projects,
-using commands like this::
-
-   python -c "import setuptools; execfile('setup.py')" develop
-
-That is, you can simply list the normal setup commands and options following
-the quoted part.
-
-
-Distributing a ``setuptools``-based project
-===========================================
-
-Using ``setuptools``...  Without bundling it!
----------------------------------------------
-
-Your users might not have ``setuptools`` installed on their machines, or even
-if they do, it might not be the right version.  Fixing this is easy; just
-download `distribute_setup.py`_, and put it in the same directory as your ``setup.py``
-script.  (Be sure to add it to your revision control system, too.)  Then add
-these two lines to the very top of your setup script, before the script imports
-anything from setuptools:
-
-.. code-block:: python
-
-    import distribute_setup
-    distribute_setup.use_setuptools()
-
-That's it.  The ``distribute_setup`` module will automatically download a matching
-version of ``setuptools`` from PyPI, if it isn't present on the target system.
-Whenever you install an updated version of setuptools, you should also update
-your projects' ``distribute_setup.py`` files, so that a matching version gets installed
-on the target machine(s).
-
-By the way, setuptools supports the new PyPI "upload" command, so you can use
-``setup.py sdist upload`` or ``setup.py bdist_egg upload`` to upload your
-source or egg distributions respectively.  Your project's current version must
-be registered with PyPI first, of course; you can use ``setup.py register`` to
-do that.  Or you can do it all in one step, e.g. ``setup.py register sdist
-bdist_egg upload`` will register the package, build source and egg
-distributions, and then upload them both to PyPI, where they'll be easily
-found by other projects that depend on them.
-
-(By the way, if you need to distribute a specific version of ``setuptools``,
-you can specify the exact version and base download URL as parameters to the
-``use_setuptools()`` function.  See the function's docstring for details.)
-
-
-What Your Users Should Know
----------------------------
-
-In general, a setuptools-based project looks just like any distutils-based
-project -- as long as your users have an internet connection and are installing
-to ``site-packages``, that is.  But for some users, these conditions don't
-apply, and they may become frustrated if this is their first encounter with
-a setuptools-based project.  To keep these users happy, you should review the
-following topics in your project's installation instructions, if they are
-relevant to your project and your target audience isn't already familiar with
-setuptools and ``easy_install``.
-
-Network Access
-    If your project is using ``distribute_setup``, you should inform users of the
-    need to either have network access, or to preinstall the correct version of
-    setuptools using the `EasyInstall installation instructions`_.  Those
-    instructions also have tips for dealing with firewalls as well as how to
-    manually download and install setuptools.
-
-Custom Installation Locations
-    You should inform your users that if they are installing your project to
-    somewhere other than the main ``site-packages`` directory, they should
-    first install setuptools using the instructions for `Custom Installation
-    Locations`_, before installing your project.
-
-Your Project's Dependencies
-    If your project depends on other projects that may need to be downloaded
-    from PyPI or elsewhere, you should list them in your installation
-    instructions, or tell users how to find out what they are.  While most
-    users will not need this information, any users who don't have unrestricted
-    internet access may have to find, download, and install the other projects
-    manually.  (Note, however, that they must still install those projects
-    using ``easy_install``, or your project will not know they are installed,
-    and your setup script will try to download them again.)
-
-    If you want to be especially friendly to users with limited network access,
-    you may wish to build eggs for your project and its dependencies, making
-    them all available for download from your site, or at least create a page
-    with links to all of the needed eggs.  In this way, users with limited
-    network access can manually download all the eggs to a single directory,
-    then use the ``-f`` option of ``easy_install`` to specify the directory
-    to find eggs in.  Users who have full network access can just use ``-f``
-    with the URL of your download page, and ``easy_install`` will find all the
-    needed eggs using your links directly.  This is also useful when your
-    target audience isn't able to compile packages (e.g. most Windows users)
-    and your package or some of its dependencies include C code.
-
-Subversion or CVS Users and Co-Developers
-    Users and co-developers who are tracking your in-development code using
-    CVS, Subversion, or some other revision control system should probably read
-    this manual's sections regarding such development.  Alternately, you may
-    wish to create a quick-reference guide containing the tips from this manual
-    that apply to your particular situation.  For example, if you recommend
-    that people use ``setup.py develop`` when tracking your in-development
-    code, you should let them know that this needs to be run after every update
-    or commit.
-
-    Similarly, if you remove modules or data files from your project, you
-    should remind them to run ``setup.py clean --all`` and delete any obsolete
-    ``.pyc`` or ``.pyo``.  (This tip applies to the distutils in general, not
-    just setuptools, but not everybody knows about them; be kind to your users
-    by spelling out your project's best practices rather than leaving them
-    guessing.)
-
-Creating System Packages
-    Some users want to manage all Python packages using a single package
-    manager, and sometimes that package manager isn't ``easy_install``!
-    Setuptools currently supports ``bdist_rpm``, ``bdist_wininst``, and
-    ``bdist_dumb`` formats for system packaging.  If a user has a locally-
-    installed "bdist" packaging tool that internally uses the distutils
-    ``install`` command, it should be able to work with ``setuptools``.  Some
-    examples of "bdist" formats that this should work with include the
-    ``bdist_nsi`` and ``bdist_msi`` formats for Windows.
-
-    However, packaging tools that build binary distributions by running
-    ``setup.py install`` on the command line or as a subprocess will require
-    modification to work with setuptools.  They should use the
-    ``--single-version-externally-managed`` option to the ``install`` command,
-    combined with the standard ``--root`` or ``--record`` options.
-    See the `install command`_ documentation below for more details.  The
-    ``bdist_deb`` command is an example of a command that currently requires
-    this kind of patching to work with setuptools.
-
-    If you or your users have a problem building a usable system package for
-    your project, please report the problem via the mailing list so that
-    either the "bdist" tool in question or setuptools can be modified to
-    resolve the issue.
-
-
-
-Managing Multiple Projects
---------------------------
-
-If you're managing several projects that need to use ``distribute_setup``, and you
-are using Subversion as your revision control system, you can use the
-"svn:externals" property to share a single copy of ``distribute_setup`` between
-projects, so that it will always be up-to-date whenever you check out or update
-an individual project, without having to manually update each project to use
-a new version.
-
-However, because Subversion only supports using directories as externals, you
-have to turn ``distribute_setup.py`` into ``distribute_setup/__init__.py`` in order
-to do this, then create "externals" definitions that map the ``distribute_setup``
-directory into each project.  Also, if any of your projects use
-``find_packages()`` on their setup directory, you will need to exclude the
-resulting ``distribute_setup`` package, to keep it from being included in your
-distributions, e.g.::
-
-    setup(
-        ...
-        packages = find_packages(exclude=['distribute_setup']),
-    )
-
-Of course, the ``distribute_setup`` package will still be included in your
-packages' source distributions, as it needs to be.
-
-For your convenience, you may use the following external definition, which will
-track the latest version of setuptools::
-
-    ez_setup svn://svn.eby-sarna.com/svnroot/ez_setup
-
-You can set this by executing this command in your project directory::
-
-    svn propedit svn:externals .
-
-And then adding the line shown above to the file that comes up for editing.
-
-
-Setting the ``zip_safe`` flag
------------------------------
-
-For maximum performance, Python packages are best installed as zip files.
-Not all packages, however, are capable of running in compressed form, because
-they may expect to be able to access either source code or data files as
-normal operating system files.  So, ``setuptools`` can install your project
-as a zipfile or a directory, and its default choice is determined by the
-project's ``zip_safe`` flag.
-
-You can pass a True or False value for the ``zip_safe`` argument to the
-``setup()`` function, or you can omit it.  If you omit it, the ``bdist_egg``
-command will analyze your project's contents to see if it can detect any
-conditions that would prevent it from working in a zipfile.  It will output
-notices to the console about any such conditions that it finds.
-
-Currently, this analysis is extremely conservative: it will consider the
-project unsafe if it contains any C extensions or datafiles whatsoever.  This
-does *not* mean that the project can't or won't work as a zipfile!  It just
-means that the ``bdist_egg`` authors aren't yet comfortable asserting that
-the project *will* work.  If the project contains no C or data files, and does
-no ``__file__`` or ``__path__`` introspection or source code manipulation, then
-there is an extremely solid chance the project will work when installed as a
-zipfile.  (And if the project uses ``pkg_resources`` for all its data file
-access, then C extensions and other data files shouldn't be a problem at all.
-See the `Accessing Data Files at Runtime`_ section above for more information.)
-
-However, if ``bdist_egg`` can't be *sure* that your package will work, but
-you've checked over all the warnings it issued, and you are either satisfied it
-*will* work (or if you want to try it for yourself), then you should set
-``zip_safe`` to ``True`` in your ``setup()`` call.  If it turns out that it
-doesn't work, you can always change it to ``False``, which will force
-``setuptools`` to install your project as a directory rather than as a zipfile.
-
-Of course, the end-user can still override either decision, if they are using
-EasyInstall to install your package.  And, if you want to override for testing
-purposes, you can just run ``setup.py easy_install --zip-ok .`` or ``setup.py
-easy_install --always-unzip .`` in your project directory. to install the
-package as a zipfile or directory, respectively.
-
-In the future, as we gain more experience with different packages and become
-more satisfied with the robustness of the ``pkg_resources`` runtime, the
-"zip safety" analysis may become less conservative.  However, we strongly
-recommend that you determine for yourself whether your project functions
-correctly when installed as a zipfile, correct any problems if you can, and
-then make an explicit declaration of ``True`` or ``False`` for the ``zip_safe``
-flag, so that it will not be necessary for ``bdist_egg`` or ``EasyInstall`` to
-try to guess whether your project can work as a zipfile.
-
-
-Namespace Packages
-------------------
-
-Sometimes, a large package is more useful if distributed as a collection of
-smaller eggs.  However, Python does not normally allow the contents of a
-package to be retrieved from more than one location.  "Namespace packages"
-are a solution for this problem.  When you declare a package to be a namespace
-package, it means that the package has no meaningful contents in its
-``__init__.py``, and that it is merely a container for modules and subpackages.
-
-The ``pkg_resources`` runtime will then automatically ensure that the contents
-of namespace packages that are spread over multiple eggs or directories are
-combined into a single "virtual" package.
-
-The ``namespace_packages`` argument to ``setup()`` lets you declare your
-project's namespace packages, so that they will be included in your project's
-metadata.  The argument should list the namespace packages that the egg
-participates in.  For example, the ZopeInterface project might do this::
-
-    setup(
-        # ...
-        namespace_packages = ['zope']
-    )
-
-because it contains a ``zope.interface`` package that lives in the ``zope``
-namespace package.  Similarly, a project for a standalone ``zope.publisher``
-would also declare the ``zope`` namespace package.  When these projects are
-installed and used, Python will see them both as part of a "virtual" ``zope``
-package, even though they will be installed in different locations.
-
-Namespace packages don't have to be top-level packages.  For example, Zope 3's
-``zope.app`` package is a namespace package, and in the future PEAK's
-``peak.util`` package will be too.
-
-Note, by the way, that your project's source tree must include the namespace
-packages' ``__init__.py`` files (and the ``__init__.py`` of any parent
-packages), in a normal Python package layout.  These ``__init__.py`` files
-*must* contain the line::
-
-    __import__('pkg_resources').declare_namespace(__name__)
-
-This code ensures that the namespace package machinery is operating and that
-the current package is registered as a namespace package.
-
-You must NOT include any other code and data in a namespace package's
-``__init__.py``.  Even though it may appear to work during development, or when
-projects are installed as ``.egg`` files, it will not work when the projects
-are installed using "system" packaging tools -- in such cases the
-``__init__.py`` files will not be installed, let alone executed.
-
-You must include the ``declare_namespace()``  line in the ``__init__.py`` of
-*every* project that has contents for the namespace package in question, in
-order to ensure that the namespace will be declared regardless of which
-project's copy of ``__init__.py`` is loaded first.  If the first loaded
-``__init__.py`` doesn't declare it, it will never *be* declared, because no
-other copies will ever be loaded!)
-
-
-TRANSITIONAL NOTE
-~~~~~~~~~~~~~~~~~
-
-Setuptools 0.6a automatically calls ``declare_namespace()`` for you at runtime,
-but the 0.7a versions will *not*.  This is because the automatic declaration
-feature has some negative side effects, such as needing to import all namespace
-packages during the initialization of the ``pkg_resources`` runtime, and also
-the need for ``pkg_resources`` to be explicitly imported before any namespace
-packages work at all.  Beginning with the 0.7a releases, you'll be responsible
-for including your own declaration lines, and the automatic declaration feature
-will be dropped to get rid of the negative side effects.
-
-During the remainder of the 0.6 development cycle, therefore, setuptools will
-warn you about missing ``declare_namespace()`` calls in your ``__init__.py``
-files, and you should correct these as soon as possible before setuptools 0.7a1
-is released.  Namespace packages without declaration lines will not work
-correctly once a user has upgraded to setuptools 0.7a1, so it's important that
-you make this change now in order to avoid having your code break in the field.
-Our apologies for the inconvenience, and thank you for your patience.
-
-
-
-Tagging and "Daily Build" or "Snapshot" Releases
-------------------------------------------------
-
-When a set of related projects are under development, it may be important to
-track finer-grained version increments than you would normally use for e.g.
-"stable" releases.  While stable releases might be measured in dotted numbers
-with alpha/beta/etc. status codes, development versions of a project often
-need to be tracked by revision or build number or even build date.  This is
-especially true when projects in development need to refer to one another, and
-therefore may literally need an up-to-the-minute version of something!
-
-To support these scenarios, ``setuptools`` allows you to "tag" your source and
-egg distributions by adding one or more of the following to the project's
-"official" version identifier:
-
-* A manually-specified pre-release tag, such as "build" or "dev", or a
-  manually-specified post-release tag, such as a build or revision number
-  (``--tag-build=STRING, -bSTRING``)
-
-* A "last-modified revision number" string generated automatically from
-  Subversion's metadata (assuming your project is being built from a Subversion
-  "working copy")  (``--tag-svn-revision, -r``)
-
-* An 8-character representation of the build date (``--tag-date, -d``), as
-  a postrelease tag
-
-You can add these tags by adding ``egg_info`` and the desired options to
-the command line ahead of the ``sdist`` or ``bdist`` commands that you want
-to generate a daily build or snapshot for.  See the section below on the
-`egg_info`_ command for more details.
-
-(Also, before you release your project, be sure to see the section above on
-`Specifying Your Project's Version`_ for more information about how pre- and
-post-release tags affect how setuptools and EasyInstall interpret version
-numbers.  This is important in order to make sure that dependency processing
-tools will know which versions of your project are newer than others.)
-
-Finally, if you are creating builds frequently, and either building them in a
-downloadable location or are copying them to a distribution server, you should
-probably also check out the `rotate`_ command, which lets you automatically
-delete all but the N most-recently-modified distributions matching a glob
-pattern.  So, you can use a command line like::
-
-    setup.py egg_info -rbDEV bdist_egg rotate -m.egg -k3
-
-to build an egg whose version info includes 'DEV-rNNNN' (where NNNN is the
-most recent Subversion revision that affected the source tree), and then
-delete any egg files from the distribution directory except for the three
-that were built most recently.
-
-If you have to manage automated builds for multiple packages, each with
-different tagging and rotation policies, you may also want to check out the
-`alias`_ command, which would let each package define an alias like ``daily``
-that would perform the necessary tag, build, and rotate commands.  Then, a
-simpler script or cron job could just run ``setup.py daily`` in each project
-directory.  (And, you could also define sitewide or per-user default versions
-of the ``daily`` alias, so that projects that didn't define their own would
-use the appropriate defaults.)
-
-
-Generating Source Distributions
--------------------------------
-
-``setuptools`` enhances the distutils' default algorithm for source file
-selection, so that all files managed by CVS or Subversion in your project tree
-are included in any source distribution you build.  This is a big improvement
-over having to manually write a ``MANIFEST.in`` file and try to keep it in
-sync with your project.  So, if you are using CVS or Subversion, and your
-source distributions only need to include files that you're tracking in
-revision control, don't create a a ``MANIFEST.in`` file for your project.
-(And, if you already have one, you might consider deleting it the next time
-you would otherwise have to change it.)
-
-(NOTE: other revision control systems besides CVS and Subversion can be
-supported using plugins; see the section below on `Adding Support for Other
-Revision Control Systems`_ for information on how to write such plugins.)
-
-If you need to include automatically generated files, or files that are kept in
-an unsupported revision control system, you'll need to create a ``MANIFEST.in``
-file to specify any files that the default file location algorithm doesn't
-catch.  See the distutils documentation for more information on the format of
-the ``MANIFEST.in`` file.
-
-But, be sure to ignore any part of the distutils documentation that deals with
-``MANIFEST`` or how it's generated from ``MANIFEST.in``; setuptools shields you
-from these issues and doesn't work the same way in any case.  Unlike the
-distutils, setuptools regenerates the source distribution manifest file
-every time you build a source distribution, and it builds it inside the
-project's ``.egg-info`` directory, out of the way of your main project
-directory.  You therefore need not worry about whether it is up-to-date or not.
-
-Indeed, because setuptools' approach to determining the contents of a source
-distribution is so much simpler, its ``sdist`` command omits nearly all of
-the options that the distutils' more complex ``sdist`` process requires.  For
-all practical purposes, you'll probably use only the ``--formats`` option, if
-you use any option at all.
-
-(By the way, if you're using some other revision control system, you might
-consider creating and publishing a `revision control plugin for setuptools`_.)
-
-
-.. _revision control plugin for setuptools: `Adding Support for Other Revision Control Systems`_
-
-
-Making your package available for EasyInstall
----------------------------------------------
-
-If you use the ``register`` command (``setup.py register``) to register your
-package with PyPI, that's most of the battle right there.  (See the
-`docs for the register command`_ for more details.)
-
-.. _docs for the register command: http://docs.python.org/dist/package-index.html
-
-If you also use the `upload`_ command to upload actual distributions of your
-package, that's even better, because EasyInstall will be able to find and
-download them directly from your project's PyPI page.
-
-However, there may be reasons why you don't want to upload distributions to
-PyPI, and just want your existing distributions (or perhaps a Subversion
-checkout) to be used instead.
-
-So here's what you need to do before running the ``register`` command.  There
-are three ``setup()`` arguments that affect EasyInstall:
-
-``url`` and ``download_url``
-   These become links on your project's PyPI page.  EasyInstall will examine
-   them to see if they link to a package ("primary links"), or whether they are
-   HTML pages.  If they're HTML pages, EasyInstall scans all HREF's on the
-   page for primary links
-
-``long_description``
-   EasyInstall will check any URLs contained in this argument to see if they
-   are primary links.
-
-A URL is considered a "primary link" if it is a link to a .tar.gz, .tgz, .zip,
-.egg, .egg.zip, .tar.bz2, or .exe file, or if it has an ``#egg=project`` or
-``#egg=project-version`` fragment identifier attached to it.  EasyInstall
-attempts to determine a project name and optional version number from the text
-of a primary link *without* downloading it.  When it has found all the primary
-links, EasyInstall will select the best match based on requested version,
-platform compatibility, and other criteria.
-
-So, if your ``url`` or ``download_url`` point either directly to a downloadable
-source distribution, or to HTML page(s) that have direct links to such, then
-EasyInstall will be able to locate downloads automatically.  If you want to
-make Subversion checkouts available, then you should create links with either
-``#egg=project`` or ``#egg=project-version`` added to the URL.  You should
-replace ``project`` and ``version`` with the values they would have in an egg
-filename.  (Be sure to actually generate an egg and then use the initial part
-of the filename, rather than trying to guess what the escaped form of the
-project name and version number will be.)
-
-Note that Subversion checkout links are of lower precedence than other kinds
-of distributions, so EasyInstall will not select a Subversion checkout for
-downloading unless it has a version included in the ``#egg=`` suffix, and
-it's a higher version than EasyInstall has seen in any other links for your
-project.
-
-As a result, it's a common practice to use mark checkout URLs with a version of
-"dev" (i.e., ``#egg=projectname-dev``), so that users can do something like
-this::
-
-    easy_install --editable projectname==dev
-
-in order to check out the in-development version of ``projectname``.
-
-
-Managing "Continuous Releases" Using Subversion
------------------------------------------------
-
-If you expect your users to track in-development versions of your project via
-Subversion, there are a few additional steps you should take to ensure that
-things work smoothly with EasyInstall.  First, you should add the following
-to your project's ``setup.cfg`` file:
-
-.. code-block:: ini
-
-    [egg_info]
-    tag_build = .dev
-    tag_svn_revision = 1
-
-This will tell ``setuptools`` to generate package version numbers like
-``1.0a1.dev-r1263``, which will be considered to be an *older* release than
-``1.0a1``.  Thus, when you actually release ``1.0a1``, the entire egg
-infrastructure (including ``setuptools``, ``pkg_resources`` and EasyInstall)
-will know that ``1.0a1`` supersedes any interim snapshots from Subversion, and
-handle upgrades accordingly.
-
-(Note: the project version number you specify in ``setup.py`` should always be
-the *next* version of your software, not the last released version.
-Alternately, you can leave out the ``tag_build=.dev``, and always use the
-*last* release as a version number, so that your post-1.0 builds are labelled
-``1.0-r1263``, indicating a post-1.0 patchlevel.  Most projects so far,
-however, seem to prefer to think of their project as being a future version
-still under development, rather than a past version being patched.  It is of
-course possible for a single project to have both situations, using
-post-release numbering on release branches, and pre-release numbering on the
-trunk.  But you don't have to make things this complex if you don't want to.)
-
-Commonly, projects releasing code from Subversion will include a PyPI link to
-their checkout URL (as described in the previous section) with an
-``#egg=projectname-dev`` suffix.  This allows users to request EasyInstall
-to download ``projectname==dev`` in order to get the latest in-development
-code.  Note that if your project depends on such in-progress code, you may wish
-to specify your ``install_requires`` (or other requirements) to include
-``==dev``, e.g.:
-
-.. code-block:: python
-
-    install_requires = ["OtherProject>=0.2a1.dev-r143,==dev"]
-
-The above example says, "I really want at least this particular development
-revision number, but feel free to follow and use an ``#egg=OtherProject-dev``
-link if you find one".  This avoids the need to have actual source or binary
-distribution snapshots of in-development code available, just to be able to
-depend on the latest and greatest a project has to offer.
-
-A final note for Subversion development: if you are using SVN revision tags
-as described in this section, it's a good idea to run ``setup.py develop``
-after each Subversion checkin or update, because your project's version number
-will be changing, and your script wrappers need to be updated accordingly.
-
-Also, if the project's requirements have changed, the ``develop`` command will
-take care of fetching the updated dependencies, building changed extensions,
-etc.  Be sure to also remind any of your users who check out your project
-from Subversion that they need to run ``setup.py develop`` after every update
-in order to keep their checkout completely in sync.
-
-
-Making "Official" (Non-Snapshot) Releases
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-When you make an official release, creating source or binary distributions,
-you will need to override the tag settings from ``setup.cfg``, so that you
-don't end up registering versions like ``foobar-0.7a1.dev-r34832``.  This is
-easy to do if you are developing on the trunk and using tags or branches for
-your releases - just make the change to ``setup.cfg`` after branching or
-tagging the release, so the trunk will still produce development snapshots.
-
-Alternately, if you are not branching for releases, you can override the
-default version options on the command line, using something like::
-
-    python setup.py egg_info -RDb "" sdist bdist_egg register upload
-
-The first part of this command (``egg_info -RDb ""``) will override the
-configured tag information, before creating source and binary eggs, registering
-the project with PyPI, and uploading the files.  Thus, these commands will use
-the plain version from your ``setup.py``, without adding the Subversion
-revision number or build designation string.
-
-Of course, if you will be doing this a lot, you may wish to create a personal
-alias for this operation, e.g.::
-
-    python setup.py alias -u release egg_info -RDb ""
-
-You can then use it like this::
-
-    python setup.py release sdist bdist_egg register upload
-
-Or of course you can create more elaborate aliases that do all of the above.
-See the sections below on the `egg_info`_ and `alias`_ commands for more ideas.
-
-
-
-Distributing Extensions compiled with Pyrex
--------------------------------------------
-
-``setuptools`` includes transparent support for building Pyrex extensions, as
-long as you define your extensions using ``setuptools.Extension``, *not*
-``distutils.Extension``.  You must also not import anything from Pyrex in
-your setup script.
-
-If you follow these rules, you can safely list ``.pyx`` files as the source
-of your ``Extension`` objects in the setup script.  ``setuptools`` will detect
-at build time whether Pyrex is installed or not.  If it is, then ``setuptools``
-will use it.  If not, then ``setuptools`` will silently change the
-``Extension`` objects to refer to the ``.c`` counterparts of the ``.pyx``
-files, so that the normal distutils C compilation process will occur.
-
-Of course, for this to work, your source distributions must include the C
-code generated by Pyrex, as well as your original ``.pyx`` files.  This means
-that you will probably want to include current ``.c`` files in your revision
-control system, rebuilding them whenever you check changes in for the ``.pyx``
-source files.  This will ensure that people tracking your project in CVS or
-Subversion will be able to build it even if they don't have Pyrex installed,
-and that your source releases will be similarly usable with or without Pyrex.
-
-
------------------
-Command Reference
------------------
-
-.. _alias:
-
-``alias`` - Define shortcuts for commonly used commands
-=======================================================
-
-Sometimes, you need to use the same commands over and over, but you can't
-necessarily set them as defaults.  For example, if you produce both development
-snapshot releases and "stable" releases of a project, you may want to put
-the distributions in different places, or use different ``egg_info`` tagging
-options, etc.  In these cases, it doesn't make sense to set the options in
-a distutils configuration file, because the values of the options changed based
-on what you're trying to do.
-
-Setuptools therefore allows you to define "aliases" - shortcut names for
-an arbitrary string of commands and options, using ``setup.py alias aliasname
-expansion``, where aliasname is the name of the new alias, and the remainder of
-the command line supplies its expansion.  For example, this command defines
-a sitewide alias called "daily", that sets various ``egg_info`` tagging
-options::
-
-    setup.py alias --global-config daily egg_info --tag-svn-revision \
-        --tag-build=development
-
-Once the alias is defined, it can then be used with other setup commands,
-e.g.::
-
-    setup.py daily bdist_egg        # generate a daily-build .egg file
-    setup.py daily sdist            # generate a daily-build source distro
-    setup.py daily sdist bdist_egg  # generate both
-
-The above commands are interpreted as if the word ``daily`` were replaced with
-``egg_info --tag-svn-revision --tag-build=development``.
-
-Note that setuptools will expand each alias *at most once* in a given command
-line.  This serves two purposes.  First, if you accidentally create an alias
-loop, it will have no effect; you'll instead get an error message about an
-unknown command.  Second, it allows you to define an alias for a command, that
-uses that command.  For example, this (project-local) alias::
-
-    setup.py alias bdist_egg bdist_egg rotate -k1 -m.egg
-
-redefines the ``bdist_egg`` command so that it always runs the ``rotate``
-command afterwards to delete all but the newest egg file.  It doesn't loop
-indefinitely on ``bdist_egg`` because the alias is only expanded once when
-used.
-
-You can remove a defined alias with the ``--remove`` (or ``-r``) option, e.g.::
-
-    setup.py alias --global-config --remove daily
-
-would delete the "daily" alias we defined above.
-
-Aliases can be defined on a project-specific, per-user, or sitewide basis.  The
-default is to define or remove a project-specific alias, but you can use any of
-the `configuration file options`_ (listed under the `saveopts`_ command, below)
-to determine which distutils configuration file an aliases will be added to
-(or removed from).
-
-Note that if you omit the "expansion" argument to the ``alias`` command,
-you'll get output showing that alias' current definition (and what
-configuration file it's defined in).  If you omit the alias name as well,
-you'll get a listing of all current aliases along with their configuration
-file locations.
-
-
-``bdist_egg`` - Create a Python Egg for the project
-===================================================
-
-This command generates a Python Egg (``.egg`` file) for the project.  Python
-Eggs are the preferred binary distribution format for EasyInstall, because they
-are cross-platform (for "pure" packages), directly importable, and contain
-project metadata including scripts and information about the project's
-dependencies.  They can be simply downloaded and added to ``sys.path``
-directly, or they can be placed in a directory on ``sys.path`` and then
-automatically discovered by the egg runtime system.
-
-This command runs the `egg_info`_ command (if it hasn't already run) to update
-the project's metadata (``.egg-info``) directory.  If you have added any extra
-metadata files to the ``.egg-info`` directory, those files will be included in
-the new egg file's metadata directory, for use by the egg runtime system or by
-any applications or frameworks that use that metadata.
-
-You won't usually need to specify any special options for this command; just
-use ``bdist_egg`` and you're done.  But there are a few options that may
-be occasionally useful:
-
-``--dist-dir=DIR, -d DIR``
-    Set the directory where the ``.egg`` file will be placed.  If you don't
-    supply this, then the ``--dist-dir`` setting of the ``bdist`` command
-    will be used, which is usually a directory named ``dist`` in the project
-    directory.
-
-``--plat-name=PLATFORM, -p PLATFORM``
-    Set the platform name string that will be embedded in the egg's filename
-    (assuming the egg contains C extensions).  This can be used to override
-    the distutils default platform name with something more meaningful.  Keep
-    in mind, however, that the egg runtime system expects to see eggs with
-    distutils platform names, so it may ignore or reject eggs with non-standard
-    platform names.  Similarly, the EasyInstall program may ignore them when
-    searching web pages for download links.  However, if you are
-    cross-compiling or doing some other unusual things, you might find a use
-    for this option.
-
-``--exclude-source-files``
-    Don't include any modules' ``.py`` files in the egg, just compiled Python,
-    C, and data files.  (Note that this doesn't affect any ``.py`` files in the
-    EGG-INFO directory or its subdirectories, since for example there may be
-    scripts with a ``.py`` extension which must still be retained.)  We don't
-    recommend that you use this option except for packages that are being
-    bundled for proprietary end-user applications, or for "embedded" scenarios
-    where space is at an absolute premium.  On the other hand, if your package
-    is going to be installed and used in compressed form, you might as well
-    exclude the source because Python's ``traceback`` module doesn't currently
-    understand how to display zipped source code anyway, or how to deal with
-    files that are in a different place from where their code was compiled.
-
-There are also some options you will probably never need, but which are there
-because they were copied from similar ``bdist`` commands used as an example for
-creating this one.  They may be useful for testing and debugging, however,
-which is why we kept them:
-
-``--keep-temp, -k``
-    Keep the contents of the ``--bdist-dir`` tree around after creating the
-    ``.egg`` file.
-
-``--bdist-dir=DIR, -b DIR``
-    Set the temporary directory for creating the distribution.  The entire
-    contents of this directory are zipped to create the ``.egg`` file, after
-    running various installation commands to copy the package's modules, data,
-    and extensions here.
-
-``--skip-build``
-    Skip doing any "build" commands; just go straight to the
-    install-and-compress phases.
-
-
-.. _develop:
-
-``develop`` - Deploy the project source in "Development Mode"
-=============================================================
-
-This command allows you to deploy your project's source for use in one or more
-"staging areas" where it will be available for importing.  This deployment is
-done in such a way that changes to the project source are immediately available
-in the staging area(s), without needing to run a build or install step after
-each change.
-
-The ``develop`` command works by creating an ``.egg-link`` file (named for the
-project) in the given staging area.  If the staging area is Python's
-``site-packages`` directory, it also updates an ``easy-install.pth`` file so
-that the project is on ``sys.path`` by default for all programs run using that
-Python installation.
-
-The ``develop`` command also installs wrapper scripts in the staging area (or
-a separate directory, as specified) that will ensure the project's dependencies
-are available on ``sys.path`` before running the project's source scripts.
-And, it ensures that any missing project dependencies are available in the
-staging area, by downloading and installing them if necessary.
-
-Last, but not least, the ``develop`` command invokes the ``build_ext -i``
-command to ensure any C extensions in the project have been built and are
-up-to-date, and the ``egg_info`` command to ensure the project's metadata is
-updated (so that the runtime and wrappers know what the project's dependencies
-are).  If you make any changes to the project's setup script or C extensions,
-you should rerun the ``develop`` command against all relevant staging areas to
-keep the project's scripts, metadata and extensions up-to-date.  Most other
-kinds of changes to your project should not require any build operations or
-rerunning ``develop``, but keep in mind that even minor changes to the setup
-script (e.g. changing an entry point definition) require you to re-run the
-``develop`` or ``test`` commands to keep the distribution updated.
-
-Here are some of the options that the ``develop`` command accepts.  Note that
-they affect the project's dependencies as well as the project itself, so if you
-have dependencies that need to be installed and you use ``--exclude-scripts``
-(for example), the dependencies' scripts will not be installed either!  For
-this reason, you may want to use EasyInstall to install the project's
-dependencies before using the ``develop`` command, if you need finer control
-over the installation options for dependencies.
-
-``--uninstall, -u``
-    Un-deploy the current project.  You may use the ``--install-dir`` or ``-d``
-    option to designate the staging area.  The created ``.egg-link`` file will
-    be removed, if present and it is still pointing to the project directory.
-    The project directory will be removed from ``easy-install.pth`` if the
-    staging area is Python's ``site-packages`` directory.
-
-    Note that this option currently does *not* uninstall script wrappers!  You
-    must uninstall them yourself, or overwrite them by using EasyInstall to
-    activate a different version of the package.  You can also avoid installing
-    script wrappers in the first place, if you use the ``--exclude-scripts``
-    (aka ``-x``) option when you run ``develop`` to deploy the project.
-
-``--multi-version, -m``
-    "Multi-version" mode. Specifying this option prevents ``develop`` from
-    adding an ``easy-install.pth`` entry for the project(s) being deployed, and
-    if an entry for any version of a project already exists, the entry will be
-    removed upon successful deployment.  In multi-version mode, no specific
-    version of the package is available for importing, unless you use
-    ``pkg_resources.require()`` to put it on ``sys.path``, or you are running
-    a wrapper script generated by ``setuptools`` or EasyInstall.  (In which
-    case the wrapper script calls ``require()`` for you.)
-
-    Note that if you install to a directory other than ``site-packages``,
-    this option is automatically in effect, because ``.pth`` files can only be
-    used in ``site-packages`` (at least in Python 2.3 and 2.4). So, if you use
-    the ``--install-dir`` or ``-d`` option (or they are set via configuration
-    file(s)) your project and its dependencies will be deployed in multi-
-    version mode.
-
-``--install-dir=DIR, -d DIR``
-    Set the installation directory (staging area).  If this option is not
-    directly specified on the command line or in a distutils configuration
-    file, the distutils default installation location is used.  Normally, this
-    will be the ``site-packages`` directory, but if you are using distutils
-    configuration files, setting things like ``prefix`` or ``install_lib``,
-    then those settings are taken into account when computing the default
-    staging area.
-
-``--script-dir=DIR, -s DIR``
-    Set the script installation directory.  If you don't supply this option
-    (via the command line or a configuration file), but you *have* supplied
-    an ``--install-dir`` (via command line or config file), then this option
-    defaults to the same directory, so that the scripts will be able to find
-    their associated package installation.  Otherwise, this setting defaults
-    to the location where the distutils would normally install scripts, taking
-    any distutils configuration file settings into account.
-
-``--exclude-scripts, -x``
-    Don't deploy script wrappers.  This is useful if you don't want to disturb
-    existing versions of the scripts in the staging area.
-
-``--always-copy, -a``
-    Copy all needed distributions to the staging area, even if they
-    are already present in another directory on ``sys.path``.  By default, if
-    a requirement can be met using a distribution that is already available in
-    a directory on ``sys.path``, it will not be copied to the staging area.
-
-``--egg-path=DIR``
-    Force the generated ``.egg-link`` file to use a specified relative path
-    to the source directory.  This can be useful in circumstances where your
-    installation directory is being shared by code running under multiple
-    platforms (e.g. Mac and Windows) which have different absolute locations
-    for the code under development, but the same *relative* locations with
-    respect to the installation directory.  If you use this option when
-    installing, you must supply the same relative path when uninstalling.
-
-In addition to the above options, the ``develop`` command also accepts all of
-the same options accepted by ``easy_install``.  If you've configured any
-``easy_install`` settings in your ``setup.cfg`` (or other distutils config
-files), the ``develop`` command will use them as defaults, unless you override
-them in a ``[develop]`` section or on the command line.
-
-
-``easy_install`` - Find and install packages
-============================================
-
-This command runs the `EasyInstall tool
-<http://peak.telecommunity.com/DevCenter/EasyInstall>`_ for you.  It is exactly
-equivalent to running the ``easy_install`` command.  All command line arguments
-following this command are consumed and not processed further by the distutils,
-so this must be the last command listed on the command line.  Please see
-the EasyInstall documentation for the options reference and usage examples.
-Normally, there is no reason to use this command via the command line, as you
-can just use ``easy_install`` directly.  It's only listed here so that you know
-it's a distutils command, which means that you can:
-
-* create command aliases that use it,
-* create distutils extensions that invoke it as a subcommand, and
-* configure options for it in your ``setup.cfg`` or other distutils config
-  files.
-
-
-.. _egg_info:
-
-``egg_info`` - Create egg metadata and set build tags
-=====================================================
-
-This command performs two operations: it updates a project's ``.egg-info``
-metadata directory (used by the ``bdist_egg``, ``develop``, and ``test``
-commands), and it allows you to temporarily change a project's version string,
-to support "daily builds" or "snapshot" releases.  It is run automatically by
-the ``sdist``, ``bdist_egg``, ``develop``, ``register``, and ``test`` commands
-in order to update the project's metadata, but you can also specify it
-explicitly in order to temporarily change the project's version string while
-executing other commands.  (It also generates the``.egg-info/SOURCES.txt``
-manifest file, which is used when you are building source distributions.)
-
-In addition to writing the core egg metadata defined by ``setuptools`` and
-required by ``pkg_resources``, this command can be extended to write other
-metadata files as well, by defining entry points in the ``egg_info.writers``
-group.  See the section on `Adding new EGG-INFO Files`_ below for more details.
-Note that using additional metadata writers may require you to include a
-``setup_requires`` argument to ``setup()`` in order to ensure that the desired
-writers are available on ``sys.path``.
-
-
-Release Tagging Options
------------------------
-
-The following options can be used to modify the project's version string for
-all remaining commands on the setup command line.  The options are processed
-in the order shown, so if you use more than one, the requested tags will be
-added in the following order:
-
-``--tag-build=NAME, -b NAME``
-    Append NAME to the project's version string.  Due to the way setuptools
-    processes "pre-release" version suffixes beginning with the letters "a"
-    through "e" (like "alpha", "beta", and "candidate"), you will usually want
-    to use a tag like ".build" or ".dev", as this will cause the version number
-    to be considered *lower* than the project's default version.  (If you
-    want to make the version number *higher* than the default version, you can
-    always leave off --tag-build and then use one or both of the following
-    options.)
-
-    If you have a default build tag set in your ``setup.cfg``, you can suppress
-    it on the command line using ``-b ""`` or ``--tag-build=""`` as an argument
-    to the ``egg_info`` command.
-
-``--tag-svn-revision, -r``
-    If the current directory is a Subversion checkout (i.e. has a ``.svn``
-    subdirectory, this appends a string of the form "-rNNNN" to the project's
-    version string, where NNNN is the revision number of the most recent
-    modification to the current directory, as obtained from the ``svn info``
-    command.
-
-    If the current directory is not a Subversion checkout, the command will
-    look for a ``PKG-INFO`` file instead, and try to find the revision number
-    from that, by looking for a "-rNNNN" string at the end of the version
-    number.  (This is so that building a package from a source distribution of
-    a Subversion snapshot will produce a binary with the correct version
-    number.)
-
-    If there is no ``PKG-INFO`` file, or the version number contained therein
-    does not end with ``-r`` and a number, then ``-r0`` is used.
-
-``--no-svn-revision, -R``
-    Don't include the Subversion revision in the version number.  This option
-    is included so you can override a default setting put in ``setup.cfg``.
-
-``--tag-date, -d``
-    Add a date stamp of the form "-YYYYMMDD" (e.g. "-20050528") to the
-    project's version number.
-
-``--no-date, -D``
-    Don't include a date stamp in the version number.  This option is included
-    so you can override a default setting in ``setup.cfg``.
-
-
-(Note: Because these options modify the version number used for source and
-binary distributions of your project, you should first make sure that you know
-how the resulting version numbers will be interpreted by automated tools
-like EasyInstall.  See the section above on `Specifying Your Project's
-Version`_ for an explanation of pre- and post-release tags, as well as tips on
-how to choose and verify a versioning scheme for your your project.)
-
-For advanced uses, there is one other option that can be set, to change the
-location of the project's ``.egg-info`` directory.  Commands that need to find
-the project's source directory or metadata should get it from this setting:
-
-
-Other ``egg_info`` Options
---------------------------
-
-``--egg-base=SOURCEDIR, -e SOURCEDIR``
-    Specify the directory that should contain the .egg-info directory.  This
-    should normally be the root of your project's source tree (which is not
-    necessarily the same as your project directory; some projects use a ``src``
-    or ``lib`` subdirectory as the source root).  You should not normally need
-    to specify this directory, as it is normally determined from the
-    ``package_dir`` argument to the ``setup()`` function, if any.  If there is
-    no ``package_dir`` set, this option defaults to the current directory.
-
-
-``egg_info`` Examples
----------------------
-
-Creating a dated "nightly build" snapshot egg::
-
-    python setup.py egg_info --tag-date --tag-build=DEV bdist_egg
-
-Creating and uploading a release with no version tags, even if some default
-tags are specified in ``setup.cfg``::
-
-    python setup.py egg_info -RDb "" sdist bdist_egg register upload
-
-(Notice that ``egg_info`` must always appear on the command line *before* any
-commands that you want the version changes to apply to.)
-
-
-.. _install command:
-
-``install`` - Run ``easy_install`` or old-style installation
-============================================================
-
-The setuptools ``install`` command is basically a shortcut to run the
-``easy_install`` command on the current project.  However, for convenience
-in creating "system packages" of setuptools-based projects, you can also
-use this option:
-
-``--single-version-externally-managed``
-    This boolean option tells the ``install`` command to perform an "old style"
-    installation, with the addition of an ``.egg-info`` directory so that the
-    installed project will still have its metadata available and operate
-    normally.  If you use this option, you *must* also specify the ``--root``
-    or ``--record`` options (or both), because otherwise you will have no way
-    to identify and remove the installed files.
-
-This option is automatically in effect when ``install`` is invoked by another
-distutils command, so that commands like ``bdist_wininst`` and ``bdist_rpm``
-will create system packages of eggs.  It is also automatically in effect if
-you specify the ``--root`` option.
-
-
-``install_egg_info`` - Install an ``.egg-info`` directory in ``site-packages``
-==============================================================================
-
-Setuptools runs this command as part of ``install`` operations that use the
-``--single-version-externally-managed`` options.  You should not invoke it
-directly; it is documented here for completeness and so that distutils
-extensions such as system package builders can make use of it.  This command
-has only one option:
-
-``--install-dir=DIR, -d DIR``
-    The parent directory where the ``.egg-info`` directory will be placed.
-    Defaults to the same as the ``--install-dir`` option specified for the
-    ``install_lib`` command, which is usually the system ``site-packages``
-    directory.
-
-This command assumes that the ``egg_info`` command has been given valid options
-via the command line or ``setup.cfg``, as it will invoke the ``egg_info``
-command and use its options to locate the project's source ``.egg-info``
-directory.
-
-
-.. _rotate:
-
-``rotate`` - Delete outdated distribution files
-===============================================
-
-As you develop new versions of your project, your distribution (``dist``)
-directory will gradually fill up with older source and/or binary distribution
-files.  The ``rotate`` command lets you automatically clean these up, keeping
-only the N most-recently modified files matching a given pattern.
-
-``--match=PATTERNLIST, -m PATTERNLIST``
-    Comma-separated list of glob patterns to match.  This option is *required*.
-    The project name and ``-*`` is prepended to the supplied patterns, in order
-    to match only distributions belonging to the current project (in case you
-    have a shared distribution directory for multiple projects).  Typically,
-    you will use a glob pattern like ``.zip`` or ``.egg`` to match files of
-    the specified type.  Note that each supplied pattern is treated as a
-    distinct group of files for purposes of selecting files to delete.
-
-``--keep=COUNT, -k COUNT``
-    Number of matching distributions to keep.  For each group of files
-    identified by a pattern specified with the ``--match`` option, delete all
-    but the COUNT most-recently-modified files in that group.  This option is
-    *required*.
-
-``--dist-dir=DIR, -d DIR``
-    Directory where the distributions are.  This defaults to the value of the
-    ``bdist`` command's ``--dist-dir`` option, which will usually be the
-    project's ``dist`` subdirectory.
-
-**Example 1**: Delete all .tar.gz files from the distribution directory, except
-for the 3 most recently modified ones::
-
-    setup.py rotate --match=.tar.gz --keep=3
-
-**Example 2**: Delete all Python 2.3 or Python 2.4 eggs from the distribution
-directory, except the most recently modified one for each Python version::
-
-    setup.py rotate --match=-py2.3*.egg,-py2.4*.egg --keep=1
-
-
-.. _saveopts:
-
-``saveopts`` - Save used options to a configuration file
-========================================================
-
-Finding and editing ``distutils`` configuration files can be a pain, especially
-since you also have to translate the configuration options from command-line
-form to the proper configuration file format.  You can avoid these hassles by
-using the ``saveopts`` command.  Just add it to the command line to save the
-options you used.  For example, this command builds the project using
-the ``mingw32`` C compiler, then saves the --compiler setting as the default
-for future builds (even those run implicitly by the ``install`` command)::
-
-    setup.py build --compiler=mingw32 saveopts
-
-The ``saveopts`` command saves all options for every commmand specified on the
-command line to the project's local ``setup.cfg`` file, unless you use one of
-the `configuration file options`_ to change where the options are saved.  For
-example, this command does the same as above, but saves the compiler setting
-to the site-wide (global) distutils configuration::
-
-    setup.py build --compiler=mingw32 saveopts -g
-
-Note that it doesn't matter where you place the ``saveopts`` command on the
-command line; it will still save all the options specified for all commands.
-For example, this is another valid way to spell the last example::
-
-    setup.py saveopts -g build --compiler=mingw32
-
-Note, however, that all of the commands specified are always run, regardless of
-where ``saveopts`` is placed on the command line.
-
-
-Configuration File Options
---------------------------
-
-Normally, settings such as options and aliases are saved to the project's
-local ``setup.cfg`` file.  But you can override this and save them to the
-global or per-user configuration files, or to a manually-specified filename.
-
-``--global-config, -g``
-    Save settings to the global ``distutils.cfg`` file inside the ``distutils``
-    package directory.  You must have write access to that directory to use
-    this option.  You also can't combine this option with ``-u`` or ``-f``.
-
-``--user-config, -u``
-    Save settings to the current user's ``~/.pydistutils.cfg`` (POSIX) or
-    ``$HOME/pydistutils.cfg`` (Windows) file.  You can't combine this option
-    with ``-g`` or ``-f``.
-
-``--filename=FILENAME, -f FILENAME``
-    Save settings to the specified configuration file to use.  You can't
-    combine this option with ``-g`` or ``-u``.  Note that if you specify a
-    non-standard filename, the ``distutils`` and ``setuptools`` will not
-    use the file's contents.  This option is mainly included for use in
-    testing.
-
-These options are used by other ``setuptools`` commands that modify
-configuration files, such as the `alias`_ and `setopt`_ commands.
-
-
-.. _setopt:
-
-``setopt`` - Set a distutils or setuptools option in a config file
-==================================================================
-
-This command is mainly for use by scripts, but it can also be used as a quick
-and dirty way to change a distutils configuration option without having to
-remember what file the options are in and then open an editor.
-
-**Example 1**.  Set the default C compiler to ``mingw32`` (using long option
-names)::
-
-    setup.py setopt --command=build --option=compiler --set-value=mingw32
-
-**Example 2**.  Remove any setting for the distutils default package
-installation directory (short option names)::
-
-    setup.py setopt -c install -o install_lib -r
-
-
-Options for the ``setopt`` command:
-
-``--command=COMMAND, -c COMMAND``
-    Command to set the option for.  This option is required.
-
-``--option=OPTION, -o OPTION``
-    The name of the option to set.  This option is required.
-
-``--set-value=VALUE, -s VALUE``
-    The value to set the option to.  Not needed if ``-r`` or ``--remove`` is
-    set.
-
-``--remove, -r``
-    Remove (unset) the option, instead of setting it.
-
-In addition to the above options, you may use any of the `configuration file
-options`_ (listed under the `saveopts`_ command, above) to determine which
-distutils configuration file the option will be added to (or removed from).
-
-
-.. _test:
-
-``test`` - Build package and run a unittest suite
-=================================================
-
-When doing test-driven development, or running automated builds that need
-testing before they are deployed for downloading or use, it's often useful
-to be able to run a project's unit tests without actually deploying the project
-anywhere, even using the ``develop`` command.  The ``test`` command runs a
-project's unit tests without actually deploying it, by temporarily putting the
-project's source on ``sys.path``, after first running ``build_ext -i`` and
-``egg_info`` to ensure that any C extensions and project metadata are
-up-to-date.
-
-To use this command, your project's tests must be wrapped in a ``unittest``
-test suite by either a function, a ``TestCase`` class or method, or a module
-or package containing ``TestCase`` classes.  If the named suite is a module,
-and the module has an ``additional_tests()`` function, it is called and the
-result (which must be a ``unittest.TestSuite``) is added to the tests to be
-run.  If the named suite is a package, any submodules and subpackages are
-recursively added to the overall test suite.  (Note: if your project specifies
-a ``test_loader``, the rules for processing the chosen ``test_suite`` may
-differ; see the `test_loader`_ documentation for more details.)
-
-Note that many test systems including ``doctest`` support wrapping their
-non-``unittest`` tests in ``TestSuite`` objects.  So, if you are using a test
-package that does not support this, we suggest you encourage its developers to
-implement test suite support, as this is a convenient and standard way to
-aggregate a collection of tests to be run under a common test harness.
-
-By default, tests will be run in the "verbose" mode of the ``unittest``
-package's text test runner, but you can get the "quiet" mode (just dots) if
-you supply the ``-q`` or ``--quiet`` option, either as a global option to
-the setup script (e.g. ``setup.py -q test``) or as an option for the ``test``
-command itself (e.g. ``setup.py test -q``).  There is one other option
-available:
-
-``--test-suite=NAME, -s NAME``
-    Specify the test suite (or module, class, or method) to be run
-    (e.g. ``some_module.test_suite``).  The default for this option can be
-    set by giving a ``test_suite`` argument to the ``setup()`` function, e.g.::
-
-        setup(
-            # ...
-            test_suite = "my_package.tests.test_all"
-        )
-
-    If you did not set a ``test_suite`` in your ``setup()`` call, and do not
-    provide a ``--test-suite`` option, an error will occur.
-
-
-.. _upload:
-
-``upload`` - Upload source and/or egg distributions to PyPI
-===========================================================
-
-PyPI now supports uploading project files for redistribution; uploaded files
-are easily found by EasyInstall, even if you don't have download links on your
-project's home page.
-
-Although Python 2.5 will support uploading all types of distributions to PyPI,
-setuptools only supports source distributions and eggs.  (This is partly
-because PyPI's upload support is currently broken for various other file
-types.)  To upload files, you must include the ``upload`` command *after* the
-``sdist`` or ``bdist_egg`` commands on the setup command line.  For example::
-
-    setup.py bdist_egg upload         # create an egg and upload it
-    setup.py sdist upload             # create a source distro and upload it
-    setup.py sdist bdist_egg upload   # create and upload both
-
-Note that to upload files for a project, the corresponding version must already
-be registered with PyPI, using the distutils ``register`` command.  It's
-usually a good idea to include the ``register`` command at the start of the
-command line, so that any registration problems can be found and fixed before
-building and uploading the distributions, e.g.::
-
-    setup.py register sdist bdist_egg upload
-
-This will update PyPI's listing for your project's current version.
-
-Note, by the way, that the metadata in your ``setup()`` call determines what
-will be listed in PyPI for your package.  Try to fill out as much of it as
-possible, as it will save you a lot of trouble manually adding and updating
-your PyPI listings.  Just put it in ``setup.py`` and use the ``register``
-comamnd to keep PyPI up to date.
-
-The ``upload`` command has a few options worth noting:
-
-``--sign, -s``
-    Sign each uploaded file using GPG (GNU Privacy Guard).  The ``gpg`` program
-    must be available for execution on the system ``PATH``.
-
-``--identity=NAME, -i NAME``
-    Specify the identity or key name for GPG to use when signing.  The value of
-    this option will be passed through the ``--local-user`` option of the
-    ``gpg`` program.
-
-``--show-response``
-    Display the full response text from server; this is useful for debugging
-    PyPI problems.
-
-``--repository=URL, -r URL``
-    The URL of the repository to upload to.  Defaults to
-    http://pypi.python.org/pypi (i.e., the main PyPI installation).
-
-.. _upload_docs:
-
-``upload_docs`` - Upload package documentation to PyPI
-======================================================
-
-PyPI now supports uploading project documentation to the dedicated URL
-http://packages.python.org/<project>/.
-
-The ``upload_docs`` command will create the necessary zip file out of a
-documentation directory and will post to the repository.
-
-Note that to upload the documentation of a project, the corresponding version
-must already be registered with PyPI, using the distutils ``register``
-command -- just like the ``upload`` command.
-
-Assuming there is an ``Example`` project with documentation in the
-subdirectory ``docs``, e.g.::
-
-  Example/
-  |-- example.py
-  |-- setup.cfg
-  |-- setup.py
-  |-- docs
-  |   |-- build
-  |   |   `-- html
-  |   |   |   |-- index.html
-  |   |   |   `-- tips_tricks.html
-  |   |-- conf.py
-  |   |-- index.txt
-  |   `-- tips_tricks.txt
-
-You can simply pass the documentation directory path to the ``upload_docs``
-command::
-
-    python setup.py upload_docs --upload-dir=docs/build/html
-
-If no ``--upload-dir`` is given, ``upload_docs`` will attempt to run the
-``build_sphinx`` command to generate uploadable documentation.
-For the command to become available, `Sphinx <http://sphinx.pocoo.org/>`_
-must be installed in the same environment as distribute.
-
-As with other ``setuptools``-based commands, you can define useful
-defaults in the ``setup.cfg`` of your Python project, e.g.:
-
-.. code-block:: ini
-
-    [upload_docs]
-    upload-dir = docs/build/html
-
-The ``upload_docs`` command has the following options:
-
-``--upload-dir``
-    The directory to be uploaded to the repository.
-
-``--show-response``
-    Display the full response text from server; this is useful for debugging
-    PyPI problems.
-
-``--repository=URL, -r URL``
-    The URL of the repository to upload to.  Defaults to
-    http://pypi.python.org/pypi (i.e., the main PyPI installation).
-
-
---------------------------------
-Extending and Reusing Distribute
---------------------------------
-
-Creating ``distutils`` Extensions
-=================================
-
-It can be hard to add new commands or setup arguments to the distutils.  But
-the ``setuptools`` package makes it a bit easier, by allowing you to distribute
-a distutils extension as a separate project, and then have projects that need
-the extension just refer to it in their ``setup_requires`` argument.
-
-With ``setuptools``, your distutils extension projects can hook in new
-commands and ``setup()`` arguments just by defining "entry points".  These
-are mappings from command or argument names to a specification of where to
-import a handler from.  (See the section on `Dynamic Discovery of Services and
-Plugins`_ above for some more background on entry points.)
-
-
-Adding Commands
----------------
-
-You can add new ``setup`` commands by defining entry points in the
-``distutils.commands`` group.  For example, if you wanted to add a ``foo``
-command, you might add something like this to your distutils extension
-project's setup script::
-
-    setup(
-        # ...
-        entry_points = {
-            "distutils.commands": [
-                "foo = mypackage.some_module:foo",
-            ],
-        },
-    )
-
-(Assuming, of course, that the ``foo`` class in ``mypackage.some_module`` is
-a ``setuptools.Command`` subclass.)
-
-Once a project containing such entry points has been activated on ``sys.path``,
-(e.g. by running "install" or "develop" with a site-packages installation
-directory) the command(s) will be available to any ``setuptools``-based setup
-scripts.  It is not necessary to use the ``--command-packages`` option or
-to monkeypatch the ``distutils.command`` package to install your commands;
-``setuptools`` automatically adds a wrapper to the distutils to search for
-entry points in the active distributions on ``sys.path``.  In fact, this is
-how setuptools' own commands are installed: the setuptools project's setup
-script defines entry points for them!
-
-
-Adding ``setup()`` Arguments
-----------------------------
-
-Sometimes, your commands may need additional arguments to the ``setup()``
-call.  You can enable this by defining entry points in the
-``distutils.setup_keywords`` group.  For example, if you wanted a ``setup()``
-argument called ``bar_baz``, you might add something like this to your
-distutils extension project's setup script::
-
-    setup(
-        # ...
-        entry_points = {
-            "distutils.commands": [
-                "foo = mypackage.some_module:foo",
-            ],
-            "distutils.setup_keywords": [
-                "bar_baz = mypackage.some_module:validate_bar_baz",
-            ],
-        },
-    )
-
-The idea here is that the entry point defines a function that will be called
-to validate the ``setup()`` argument, if it's supplied.  The ``Distribution``
-object will have the initial value of the attribute set to ``None``, and the
-validation function will only be called if the ``setup()`` call sets it to
-a non-None value.  Here's an example validation function::
-
-    def assert_bool(dist, attr, value):
-        """Verify that value is True, False, 0, or 1"""
-        if bool(value) != value:
-            raise DistutilsSetupError(
-                "%r must be a boolean value (got %r)" % (attr,value)
-            )
-
-Your function should accept three arguments: the ``Distribution`` object,
-the attribute name, and the attribute value.  It should raise a
-``DistutilsSetupError`` (from the ``distutils.errors`` module) if the argument
-is invalid.  Remember, your function will only be called with non-None values,
-and the default value of arguments defined this way is always None.  So, your
-commands should always be prepared for the possibility that the attribute will
-be ``None`` when they access it later.
-
-If more than one active distribution defines an entry point for the same
-``setup()`` argument, *all* of them will be called.  This allows multiple
-distutils extensions to define a common argument, as long as they agree on
-what values of that argument are valid.
-
-Also note that as with commands, it is not necessary to subclass or monkeypatch
-the distutils ``Distribution`` class in order to add your arguments; it is
-sufficient to define the entry points in your extension, as long as any setup
-script using your extension lists your project in its ``setup_requires``
-argument.
-
-
-Adding new EGG-INFO Files
--------------------------
-
-Some extensible applications or frameworks may want to allow third parties to
-develop plugins with application or framework-specific metadata included in
-the plugins' EGG-INFO directory, for easy access via the ``pkg_resources``
-metadata API.  The easiest way to allow this is to create a distutils extension
-to be used from the plugin projects' setup scripts (via ``setup_requires``)
-that defines a new setup keyword, and then uses that data to write an EGG-INFO
-file when the ``egg_info`` command is run.
-
-The ``egg_info`` command looks for extension points in an ``egg_info.writers``
-group, and calls them to write the files.  Here's a simple example of a
-distutils extension defining a setup argument ``foo_bar``, which is a list of
-lines that will be written to ``foo_bar.txt`` in the EGG-INFO directory of any
-project that uses the argument::
-
-    setup(
-        # ...
-        entry_points = {
-            "distutils.setup_keywords": [
-                "foo_bar = setuptools.dist:assert_string_list",
-            ],
-            "egg_info.writers": [
-                "foo_bar.txt = setuptools.command.egg_info:write_arg",
-            ],
-        },
-    )
-
-This simple example makes use of two utility functions defined by setuptools
-for its own use: a routine to validate that a setup keyword is a sequence of
-strings, and another one that looks up a setup argument and writes it to
-a file.  Here's what the writer utility looks like::
-
-    def write_arg(cmd, basename, filename):
-        argname = os.path.splitext(basename)[0]
-        value = getattr(cmd.distribution, argname, None)
-        if value is not None:
-            value = '\n'.join(value)+'\n'
-        cmd.write_or_delete_file(argname, filename, value)
-
-As you can see, ``egg_info.writers`` entry points must be a function taking
-three arguments: a ``egg_info`` command instance, the basename of the file to
-write (e.g. ``foo_bar.txt``), and the actual full filename that should be
-written to.
-
-In general, writer functions should honor the command object's ``dry_run``
-setting when writing files, and use the ``distutils.log`` object to do any
-console output.  The easiest way to conform to this requirement is to use
-the ``cmd`` object's ``write_file()``, ``delete_file()``, and
-``write_or_delete_file()`` methods exclusively for your file operations.  See
-those methods' docstrings for more details.
-
-
-Adding Support for Other Revision Control Systems
--------------------------------------------------
-
-If you would like to create a plugin for ``setuptools`` to find files in other
-source control systems besides CVS and Subversion, you can do so by adding an
-entry point to the ``setuptools.file_finders`` group.  The entry point should
-be a function accepting a single directory name, and should yield
-all the filenames within that directory (and any subdirectories thereof) that
-are under revision control.
-
-For example, if you were going to create a plugin for a revision control system
-called "foobar", you would write a function something like this:
-
-.. code-block:: python
-
-    def find_files_for_foobar(dirname):
-        # loop to yield paths that start with `dirname`
-
-And you would register it in a setup script using something like this::
-
-    entry_points = {
-        "setuptools.file_finders": [
-            "foobar = my_foobar_module:find_files_for_foobar"
-        ]
-    }
-
-Then, anyone who wants to use your plugin can simply install it, and their
-local setuptools installation will be able to find the necessary files.
-
-It is not necessary to distribute source control plugins with projects that
-simply use the other source control system, or to specify the plugins in
-``setup_requires``.  When you create a source distribution with the ``sdist``
-command, setuptools automatically records what files were found in the
-``SOURCES.txt`` file.  That way, recipients of source distributions don't need
-to have revision control at all.  However, if someone is working on a package
-by checking out with that system, they will need the same plugin(s) that the
-original author is using.
-
-A few important points for writing revision control file finders:
-
-* Your finder function MUST return relative paths, created by appending to the
-  passed-in directory name.  Absolute paths are NOT allowed, nor are relative
-  paths that reference a parent directory of the passed-in directory.
-
-* Your finder function MUST accept an empty string as the directory name,
-  meaning the current directory.  You MUST NOT convert this to a dot; just
-  yield relative paths.  So, yielding a subdirectory named ``some/dir`` under
-  the current directory should NOT be rendered as ``./some/dir`` or
-  ``/somewhere/some/dir``, but *always* as simply ``some/dir``
-
-* Your finder function SHOULD NOT raise any errors, and SHOULD deal gracefully
-  with the absence of needed programs (i.e., ones belonging to the revision
-  control system itself.  It *may*, however, use ``distutils.log.warn()`` to
-  inform the user of the missing program(s).
-
-
-Subclassing ``Command``
------------------------
-
-Sorry, this section isn't written yet, and neither is a lot of what's below
-this point, except for the change log.  You might want to `subscribe to changes
-in this page <setuptools?action=subscribe>`_ to see when new documentation is
-added or updated.
-
-XXX
-
-
-Reusing ``setuptools`` Code
-===========================
-
-``distribute_setup``
---------------------
-
-XXX
-
-
-``setuptools.archive_util``
----------------------------
-
-XXX
-
-
-``setuptools.sandbox``
-----------------------
-
-XXX
-
-
-``setuptools.package_index``
-----------------------------
-
-XXX
-
-History
-=======
-
-0.6c9
- * Fixed a missing files problem when using Windows source distributions on
-   non-Windows platforms, due to distutils not handling manifest file line
-   endings correctly.
-
- * Updated Pyrex support to work with Pyrex 0.9.6 and higher.
-
- * Minor changes for Jython compatibility, including skipping tests that can't
-   work on Jython.
-
- * Fixed not installing eggs in ``install_requires`` if they were also used for
-   ``setup_requires`` or ``tests_require``.
-
- * Fixed not fetching eggs in ``install_requires`` when running tests.
-
- * Allow ``ez_setup.use_setuptools()`` to upgrade existing setuptools
-   installations when called from a standalone ``setup.py``.
-
- * Added a warning if a namespace package is declared, but its parent package
-   is not also declared as a namespace.
-
- * Support Subversion 1.5
-
- * Removed use of deprecated ``md5`` module if ``hashlib`` is available
-
- * Fixed ``bdist_wininst upload`` trying to upload the ``.exe`` twice
-
- * Fixed ``bdist_egg`` putting a ``native_libs.txt`` in the source package's
-   ``.egg-info``, when it should only be in the built egg's ``EGG-INFO``.
-
- * Ensure that _full_name is set on all shared libs before extensions are
-   checked for shared lib usage.  (Fixes a bug in the experimental shared
-   library build support.)
-
- * Fix to allow unpacked eggs containing native libraries to fail more
-   gracefully under Google App Engine (with an ``ImportError`` loading the
-   C-based module, instead of getting a ``NameError``).
-
-0.6c7
- * Fixed ``distutils.filelist.findall()`` crashing on broken symlinks, and
-   ``egg_info`` command failing on new, uncommitted SVN directories.
-
- * Fix import problems with nested namespace packages installed via
-   ``--root`` or ``--single-version-externally-managed``, due to the
-   parent package not having the child package as an attribute.
-
-0.6c6
- * Added ``--egg-path`` option to ``develop`` command, allowing you to force
-   ``.egg-link`` files to use relative paths (allowing them to be shared across
-   platforms on a networked drive).
-
- * Fix not building binary RPMs correctly.
-
- * Fix "eggsecutables" (such as setuptools' own egg) only being runnable with
-   bash-compatible shells.
-
- * Fix ``#!`` parsing problems in Windows ``.exe`` script wrappers, when there
-   was whitespace inside a quoted argument or at the end of the ``#!`` line
-   (a regression introduced in 0.6c4).
-
- * Fix ``test`` command possibly failing if an older version of the project
-   being tested was installed on ``sys.path`` ahead of the test source
-   directory.
-
- * Fix ``find_packages()`` treating ``ez_setup`` and directories with ``.`` in
-   their names as packages.
-
-0.6c5
- * Fix uploaded ``bdist_rpm`` packages being described as ``bdist_egg``
-   packages under Python versions less than 2.5.
-
- * Fix uploaded ``bdist_wininst`` packages being described as suitable for
-   "any" version by Python 2.5, even if a ``--target-version`` was specified.
-
-0.6c4
- * Overhauled Windows script wrapping to support ``bdist_wininst`` better.
-   Scripts installed with ``bdist_wininst`` will always use ``#!python.exe`` or
-   ``#!pythonw.exe`` as the executable name (even when built on non-Windows
-   platforms!), and the wrappers will look for the executable in the script's
-   parent directory (which should find the right version of Python).
-
- * Fix ``upload`` command not uploading files built by ``bdist_rpm`` or
-   ``bdist_wininst`` under Python 2.3 and 2.4.
-
- * Add support for "eggsecutable" headers: a ``#!/bin/sh`` script that is
-   prepended to an ``.egg`` file to allow it to be run as a script on Unix-ish
-   platforms.  (This is mainly so that setuptools itself can have a single-file
-   installer on Unix, without doing multiple downloads, dealing with firewalls,
-   etc.)
-
- * Fix problem with empty revision numbers in Subversion 1.4 ``entries`` files
-
- * Use cross-platform relative paths in ``easy-install.pth`` when doing
-   ``develop`` and the source directory is a subdirectory of the installation
-   target directory.
-
- * Fix a problem installing eggs with a system packaging tool if the project
-   contained an implicit namespace package; for example if the ``setup()``
-   listed a namespace package ``foo.bar`` without explicitly listing ``foo``
-   as a namespace package.
-
-0.6c3
- * Fixed breakages caused by Subversion 1.4's new "working copy" format
-
-0.6c2
- * The ``ez_setup`` module displays the conflicting version of setuptools (and
-   its installation location) when a script requests a version that's not
-   available.
-
- * Running ``setup.py develop`` on a setuptools-using project will now install
-   setuptools if needed, instead of only downloading the egg.
-
-0.6c1
- * Fixed ``AttributeError`` when trying to download a ``setup_requires``
-   dependency when a distribution lacks a ``dependency_links`` setting.
-
- * Made ``zip-safe`` and ``not-zip-safe`` flag files contain a single byte, so
-   as to play better with packaging tools that complain about zero-length
-   files.
-
- * Made ``setup.py develop`` respect the ``--no-deps`` option, which it
-   previously was ignoring.
-
- * Support ``extra_path`` option to ``setup()`` when ``install`` is run in
-   backward-compatibility mode.
-
- * Source distributions now always include a ``setup.cfg`` file that explicitly
-   sets ``egg_info`` options such that they produce an identical version number
-   to the source distribution's version number.  (Previously, the default
-   version number could be different due to the use of ``--tag-date``, or if
-   the version was overridden on the command line that built the source
-   distribution.)
-
-0.6b4
- * Fix ``register`` not obeying name/version set by ``egg_info`` command, if
-   ``egg_info`` wasn't explicitly run first on the same command line.
-
- * Added ``--no-date`` and ``--no-svn-revision`` options to ``egg_info``
-   command, to allow suppressing tags configured in ``setup.cfg``.
-
- * Fixed redundant warnings about missing ``README`` file(s); it should now
-   appear only if you are actually a source distribution.
-
-0.6b3
- * Fix ``bdist_egg`` not including files in subdirectories of ``.egg-info``.
-
- * Allow ``.py`` files found by the ``include_package_data`` option to be
-   automatically included.  Remove duplicate data file matches if both
-   ``include_package_data`` and ``package_data`` are used to refer to the same
-   files.
-
-0.6b1
- * Strip ``module`` from the end of compiled extension modules when computing
-   the name of a ``.py`` loader/wrapper.  (Python's import machinery ignores
-   this suffix when searching for an extension module.)
-
-0.6a11
- * Added ``test_loader`` keyword to support custom test loaders
-
- * Added ``setuptools.file_finders`` entry point group to allow implementing
-   revision control plugins.
-
- * Added ``--identity`` option to ``upload`` command.
-
- * Added ``dependency_links`` to allow specifying URLs for ``--find-links``.
-
- * Enhanced test loader to scan packages as well as modules, and call
-   ``additional_tests()`` if present to get non-unittest tests.
-
- * Support namespace packages in conjunction with system packagers, by omitting
-   the installation of any ``__init__.py`` files for namespace packages, and
-   adding a special ``.pth`` file to create a working package in
-   ``sys.modules``.
-
- * Made ``--single-version-externally-managed`` automatic when ``--root`` is
-   used, so that most system packagers won't require special support for
-   setuptools.
-
- * Fixed ``setup_requires``, ``tests_require``, etc. not using ``setup.cfg`` or
-   other configuration files for their option defaults when installing, and
-   also made the install use ``--multi-version`` mode so that the project
-   directory doesn't need to support .pth files.
-
- * ``MANIFEST.in`` is now forcibly closed when any errors occur while reading
-   it.  Previously, the file could be left open and the actual error would be
-   masked by problems trying to remove the open file on Windows systems.
-
-0.6a10
- * Fixed the ``develop`` command ignoring ``--find-links``.
-
-0.6a9
- * The ``sdist`` command no longer uses the traditional ``MANIFEST`` file to
-   create source distributions.  ``MANIFEST.in`` is still read and processed,
-   as are the standard defaults and pruning.  But the manifest is built inside
-   the project's ``.egg-info`` directory as ``SOURCES.txt``, and it is rebuilt
-   every time the ``egg_info`` command is run.
-
- * Added the ``include_package_data`` keyword to ``setup()``, allowing you to
-   automatically include any package data listed in revision control or
-   ``MANIFEST.in``
-
- * Added the ``exclude_package_data`` keyword to ``setup()``, allowing you to
-   trim back files included via the ``package_data`` and
-   ``include_package_data`` options.
-
- * Fixed ``--tag-svn-revision`` not working when run from a source
-   distribution.
-
- * Added warning for namespace packages with missing ``declare_namespace()``
-
- * Added ``tests_require`` keyword to ``setup()``, so that e.g. packages
-   requiring ``nose`` to run unit tests can make this dependency optional
-   unless the ``test`` command is run.
-
- * Made all commands that use ``easy_install`` respect its configuration
-   options, as this was causing some problems with ``setup.py install``.
-
- * Added an ``unpack_directory()`` driver to ``setuptools.archive_util``, so
-   that you can process a directory tree through a processing filter as if it
-   were a zipfile or tarfile.
-
- * Added an internal ``install_egg_info`` command to use as part of old-style
-   ``install`` operations, that installs an ``.egg-info`` directory with the
-   package.
-
- * Added a ``--single-version-externally-managed`` option to the ``install``
-   command so that you can more easily wrap a "flat" egg in a system package.
-
- * Enhanced ``bdist_rpm`` so that it installs single-version eggs that
-   don't rely on a ``.pth`` file.  The ``--no-egg`` option has been removed,
-   since all RPMs are now built in a more backwards-compatible format.
-
- * Support full roundtrip translation of eggs to and from ``bdist_wininst``
-   format.  Running ``bdist_wininst`` on a setuptools-based package wraps the
-   egg in an .exe that will safely install it as an egg (i.e., with metadata
-   and entry-point wrapper scripts), and ``easy_install`` can turn the .exe
-   back into an ``.egg`` file or directory and install it as such.
-
-
-0.6a8
- * Fixed some problems building extensions when Pyrex was installed, especially
-   with Python 2.4 and/or packages using SWIG.
-
- * Made ``develop`` command accept all the same options as ``easy_install``,
-   and use the ``easy_install`` command's configuration settings as defaults.
-
- * Made ``egg_info --tag-svn-revision`` fall back to extracting the revision
-   number from ``PKG-INFO`` in case it is being run on a source distribution of
-   a snapshot taken from a Subversion-based project.
-
- * Automatically detect ``.dll``, ``.so`` and ``.dylib`` files that are being
-   installed as data, adding them to ``native_libs.txt`` automatically.
-
- * Fixed some problems with fresh checkouts of projects that don't include
-   ``.egg-info/PKG-INFO`` under revision control and put the project's source
-   code directly in the project directory.  If such a package had any
-   requirements that get processed before the ``egg_info`` command can be run,
-   the setup scripts would fail with a "Missing 'Version:' header and/or
-   PKG-INFO file" error, because the egg runtime interpreted the unbuilt
-   metadata in a directory on ``sys.path`` (i.e. the current directory) as
-   being a corrupted egg.  Setuptools now monkeypatches the distribution
-   metadata cache to pretend that the egg has valid version information, until
-   it has a chance to make it actually be so (via the ``egg_info`` command).
-
-0.6a5
- * Fixed missing gui/cli .exe files in distribution.  Fixed bugs in tests.
-
-0.6a3
- * Added ``gui_scripts`` entry point group to allow installing GUI scripts
-   on Windows and other platforms.  (The special handling is only for Windows;
-   other platforms are treated the same as for ``console_scripts``.)
-
-0.6a2
- * Added ``console_scripts`` entry point group to allow installing scripts
-   without the need to create separate script files.  On Windows, console
-   scripts get an ``.exe`` wrapper so you can just type their name.  On other
-   platforms, the scripts are written without a file extension.
-
-0.6a1
- * Added support for building "old-style" RPMs that don't install an egg for
-   the target package, using a ``--no-egg`` option.
-
- * The ``build_ext`` command now works better when using the ``--inplace``
-   option and multiple Python versions.  It now makes sure that all extensions
-   match the current Python version, even if newer copies were built for a
-   different Python version.
-
- * The ``upload`` command no longer attaches an extra ``.zip`` when uploading
-   eggs, as PyPI now supports egg uploads without trickery.
-
- * The ``ez_setup`` script/module now displays a warning before downloading
-   the setuptools egg, and attempts to check the downloaded egg against an
-   internal MD5 checksum table.
-
- * Fixed the ``--tag-svn-revision`` option of ``egg_info`` not finding the
-   latest revision number; it was using the revision number of the directory
-   containing ``setup.py``, not the highest revision number in the project.
-
- * Added ``eager_resources`` setup argument
-
- * The ``sdist`` command now recognizes Subversion "deleted file" entries and
-   does not include them in source distributions.
-
- * ``setuptools`` now embeds itself more thoroughly into the distutils, so that
-   other distutils extensions (e.g. py2exe, py2app) will subclass setuptools'
-   versions of things, rather than the native distutils ones.
-
- * Added ``entry_points`` and ``setup_requires`` arguments to ``setup()``;
-   ``setup_requires`` allows you to automatically find and download packages
-   that are needed in order to *build* your project (as opposed to running it).
-
- * ``setuptools`` now finds its commands, ``setup()`` argument validators, and
-   metadata writers using entry points, so that they can be extended by
-   third-party packages.  See `Creating distutils Extensions`_ above for more
-   details.
-
- * The vestigial ``depends`` command has been removed.  It was never finished
-   or documented, and never would have worked without EasyInstall - which it
-   pre-dated and was never compatible with.
-
-0.5a12
- * The zip-safety scanner now checks for modules that might be used with
-   ``python -m``, and marks them as unsafe for zipping, since Python 2.4 can't
-   handle ``-m`` on zipped modules.
-
-0.5a11
- * Fix breakage of the "develop" command that was caused by the addition of
-   ``--always-unzip`` to the ``easy_install`` command.
-
-0.5a9
- * Include ``svn:externals`` directories in source distributions as well as
-   normal subversion-controlled files and directories.
-
- * Added ``exclude=patternlist`` option to ``setuptools.find_packages()``
-
- * Changed --tag-svn-revision to include an "r" in front of the revision number
-   for better readability.
-
- * Added ability to build eggs without including source files (except for any
-   scripts, of course), using the ``--exclude-source-files`` option to
-   ``bdist_egg``.
-
- * ``setup.py install`` now automatically detects when an "unmanaged" package
-   or module is going to be on ``sys.path`` ahead of a package being installed,
-   thereby preventing the newer version from being imported.  If this occurs,
-   a warning message is output to ``sys.stderr``, but installation proceeds
-   anyway.  The warning message informs the user what files or directories
-   need deleting, and advises them they can also use EasyInstall (with the
-   ``--delete-conflicting`` option) to do it automatically.
-
- * The ``egg_info`` command now adds a ``top_level.txt`` file to the metadata
-   directory that lists all top-level modules and packages in the distribution.
-   This is used by the ``easy_install`` command to find possibly-conflicting
-   "unmanaged" packages when installing the distribution.
-
- * Added ``zip_safe`` and ``namespace_packages`` arguments to ``setup()``.
-   Added package analysis to determine zip-safety if the ``zip_safe`` flag
-   is not given, and advise the author regarding what code might need changing.
-
- * Fixed the swapped ``-d`` and ``-b`` options of ``bdist_egg``.
-
-0.5a8
- * The "egg_info" command now always sets the distribution metadata to "safe"
-   forms of the distribution name and version, so that distribution files will
-   be generated with parseable names (i.e., ones that don't include '-' in the
-   name or version).  Also, this means that if you use the various ``--tag``
-   options of "egg_info", any distributions generated will use the tags in the
-   version, not just egg distributions.
-
- * Added support for defining command aliases in distutils configuration files,
-   under the "[aliases]" section.  To prevent recursion and to allow aliases to
-   call the command of the same name, a given alias can be expanded only once
-   per command-line invocation.  You can define new aliases with the "alias"
-   command, either for the local, global, or per-user configuration.
-
- * Added "rotate" command to delete old distribution files, given a set of
-   patterns to match and the number of files to keep.  (Keeps the most
-   recently-modified distribution files matching each pattern.)
-
- * Added "saveopts" command that saves all command-line options for the current
-   invocation to the local, global, or per-user configuration file.  Useful for
-   setting defaults without having to hand-edit a configuration file.
-
- * Added a "setopt" command that sets a single option in a specified distutils
-   configuration file.
-
-0.5a7
- * Added "upload" support for egg and source distributions, including a bug
-   fix for "upload" and a temporary workaround for lack of .egg support in
-   PyPI.
-
-0.5a6
- * Beefed up the "sdist" command so that if you don't have a MANIFEST.in, it
-   will include all files under revision control (CVS or Subversion) in the
-   current directory, and it will regenerate the list every time you create a
-   source distribution, not just when you tell it to.  This should make the
-   default "do what you mean" more often than the distutils' default behavior
-   did, while still retaining the old behavior in the presence of MANIFEST.in.
-
- * Fixed the "develop" command always updating .pth files, even if you
-   specified ``-n`` or ``--dry-run``.
-
- * Slightly changed the format of the generated version when you use
-   ``--tag-build`` on the "egg_info" command, so that you can make tagged
-   revisions compare *lower* than the version specified in setup.py (e.g. by
-   using ``--tag-build=dev``).
-
-0.5a5
- * Added ``develop`` command to ``setuptools``-based packages.  This command
-   installs an ``.egg-link`` pointing to the package's source directory, and
-   script wrappers that ``execfile()`` the source versions of the package's
-   scripts.  This lets you put your development checkout(s) on sys.path without
-   having to actually install them.  (To uninstall the link, use
-   use ``setup.py develop --uninstall``.)
-
- * Added ``egg_info`` command to ``setuptools``-based packages.  This command
-   just creates or updates the "projectname.egg-info" directory, without
-   building an egg.  (It's used by the ``bdist_egg``, ``test``, and ``develop``
-   commands.)
-
- * Enhanced the ``test`` command so that it doesn't install the package, but
-   instead builds any C extensions in-place, updates the ``.egg-info``
-   metadata, adds the source directory to ``sys.path``, and runs the tests
-   directly on the source.  This avoids an "unmanaged" installation of the
-   package to ``site-packages`` or elsewhere.
-
- * Made ``easy_install`` a standard ``setuptools`` command, moving it from
-   the ``easy_install`` module to ``setuptools.command.easy_install``.  Note
-   that if you were importing or extending it, you must now change your imports
-   accordingly.  ``easy_install.py`` is still installed as a script, but not as
-   a module.
-
-0.5a4
- * Setup scripts using setuptools can now list their dependencies directly in
-   the setup.py file, without having to manually create a ``depends.txt`` file.
-   The ``install_requires`` and ``extras_require`` arguments to ``setup()``
-   are used to create a dependencies file automatically.  If you are manually
-   creating ``depends.txt`` right now, please switch to using these setup
-   arguments as soon as practical, because ``depends.txt`` support will be
-   removed in the 0.6 release cycle.  For documentation on the new arguments,
-   see the ``setuptools.dist.Distribution`` class.
-
- * Setup scripts using setuptools now always install using ``easy_install``
-   internally, for ease of uninstallation and upgrading.
-
-0.5a1
- * Added support for "self-installation" bootstrapping.  Packages can now
-   include ``ez_setup.py`` in their source distribution, and add the following
-   to their ``setup.py``, in order to automatically bootstrap installation of
-   setuptools as part of their setup process::
-
-    from ez_setup import use_setuptools
-    use_setuptools()
-
-    from setuptools import setup
-    # etc...
-
-0.4a2
- * Added ``ez_setup.py`` installer/bootstrap script to make initial setuptools
-   installation easier, and to allow distributions using setuptools to avoid
-   having to include setuptools in their source distribution.
-
- * All downloads are now managed by the ``PackageIndex`` class (which is now
-   subclassable and replaceable), so that embedders can more easily override
-   download logic, give download progress reports, etc.  The class has also
-   been moved to the new ``setuptools.package_index`` module.
-
- * The ``Installer`` class no longer handles downloading, manages a temporary
-   directory, or tracks the ``zip_ok`` option.  Downloading is now handled
-   by ``PackageIndex``, and ``Installer`` has become an ``easy_install``
-   command class based on ``setuptools.Command``.
-
- * There is a new ``setuptools.sandbox.run_setup()`` API to invoke a setup
-   script in a directory sandbox, and a new ``setuptools.archive_util`` module
-   with an ``unpack_archive()`` API.  These were split out of EasyInstall to
-   allow reuse by other tools and applications.
-
- * ``setuptools.Command`` now supports reinitializing commands using keyword
-   arguments to set/reset options.  Also, ``Command`` subclasses can now set
-   their ``command_consumes_arguments`` attribute to ``True`` in order to
-   receive an ``args`` option containing the rest of the command line.
-
-0.3a2
- * Added new options to ``bdist_egg`` to allow tagging the egg's version number
-   with a subversion revision number, the current date, or an explicit tag
-   value.  Run ``setup.py bdist_egg --help`` to get more information.
-
- * Misc. bug fixes
-
-0.3a1
- * Initial release.
-
-Mailing List and Bug Tracker
-============================
-
-Please use the `distutils-sig mailing list`_ for questions and discussion about
-setuptools, and the `setuptools bug tracker`_ ONLY for issues you have
-confirmed via the list are actual bugs, and which you have reduced to a minimal
-set of steps to reproduce.
-
-.. _distutils-sig mailing list: http://mail.python.org/pipermail/distutils-sig/
-.. _setuptools bug tracker: http://bugs.python.org/setuptools/
-
diff --git a/vendor/distribute-0.6.34/docs/build/html/_sources/using.txt b/vendor/distribute-0.6.34/docs/build/html/_sources/using.txt
deleted file mode 100644
index 192f1dc2..00000000
--- a/vendor/distribute-0.6.34/docs/build/html/_sources/using.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-================================
-Using Distribute in your project
-================================
-
-To use Distribute in your project, the recommended way is to ship
-`distribute_setup.py` alongside your `setup.py` script and call 
-it at the very begining of `setup.py` like this::
-
-    from distribute_setup import use_setuptools
-    use_setuptools()
-
-Another way is to add ``Distribute`` in the ``install_requires`` option::
-
-    from setuptools import setup
-
-    setup(...
-          install_requires=['distribute']
-    )
-
-
-XXX to be finished
diff --git a/vendor/distribute-0.6.34/docs/build/html/_static/basic.css b/vendor/distribute-0.6.34/docs/build/html/_static/basic.css
deleted file mode 100644
index 43e8bafa..00000000
--- a/vendor/distribute-0.6.34/docs/build/html/_static/basic.css
+++ /dev/null
@@ -1,540 +0,0 @@
-/*
- * basic.css
- * ~~~~~~~~~
- *
- * Sphinx stylesheet -- basic theme.
- *
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-/* -- main layout ----------------------------------------------------------- */
-
-div.clearer {
-    clear: both;
-}
-
-/* -- relbar ---------------------------------------------------------------- */
-
-div.related {
-    width: 100%;
-    font-size: 90%;
-}
-
-div.related h3 {
-    display: none;
-}
-
-div.related ul {
-    margin: 0;
-    padding: 0 0 0 10px;
-    list-style: none;
-}
-
-div.related li {
-    display: inline;
-}
-
-div.related li.right {
-    float: right;
-    margin-right: 5px;
-}
-
-/* -- sidebar --------------------------------------------------------------- */
-
-div.sphinxsidebarwrapper {
-    padding: 10px 5px 0 10px;
-}
-
-div.sphinxsidebar {
-    float: left;
-    width: 230px;
-    margin-left: -100%;
-    font-size: 90%;
-}
-
-div.sphinxsidebar ul {
-    list-style: none;
-}
-
-div.sphinxsidebar ul ul,
-div.sphinxsidebar ul.want-points {
-    margin-left: 20px;
-    list-style: square;
-}
-
-div.sphinxsidebar ul ul {
-    margin-top: 0;
-    margin-bottom: 0;
-}
-
-div.sphinxsidebar form {
-    margin-top: 10px;
-}
-
-div.sphinxsidebar input {
-    border: 1px solid #98dbcc;
-    font-family: sans-serif;
-    font-size: 1em;
-}
-
-div.sphinxsidebar #searchbox input[type="text"] {
-    width: 170px;
-}
-
-div.sphinxsidebar #searchbox input[type="submit"] {
-    width: 30px;
-}
-
-img {
-    border: 0;
-}
-
-/* -- search page ----------------------------------------------------------- */
-
-ul.search {
-    margin: 10px 0 0 20px;
-    padding: 0;
-}
-
-ul.search li {
-    padding: 5px 0 5px 20px;
-    background-image: url(file.png);
-    background-repeat: no-repeat;
-    background-position: 0 7px;
-}
-
-ul.search li a {
-    font-weight: bold;
-}
-
-ul.search li div.context {
-    color: #888;
-    margin: 2px 0 0 30px;
-    text-align: left;
-}
-
-ul.keywordmatches li.goodmatch a {
-    font-weight: bold;
-}
-
-/* -- index page ------------------------------------------------------------ */
-
-table.contentstable {
-    width: 90%;
-}
-
-table.contentstable p.biglink {
-    line-height: 150%;
-}
-
-a.biglink {
-    font-size: 1.3em;
-}
-
-span.linkdescr {
-    font-style: italic;
-    padding-top: 5px;
-    font-size: 90%;
-}
-
-/* -- general index --------------------------------------------------------- */
-
-table.indextable {
-    width: 100%;
-}
-
-table.indextable td {
-    text-align: left;
-    vertical-align: top;
-}
-
-table.indextable dl, table.indextable dd {
-    margin-top: 0;
-    margin-bottom: 0;
-}
-
-table.indextable tr.pcap {
-    height: 10px;
-}
-
-table.indextable tr.cap {
-    margin-top: 10px;
-    background-color: #f2f2f2;
-}
-
-img.toggler {
-    margin-right: 3px;
-    margin-top: 3px;
-    cursor: pointer;
-}
-
-div.modindex-jumpbox {
-    border-top: 1px solid #ddd;
-    border-bottom: 1px solid #ddd;
-    margin: 1em 0 1em 0;
-    padding: 0.4em;
-}
-
-div.genindex-jumpbox {
-    border-top: 1px solid #ddd;
-    border-bottom: 1px solid #ddd;
-    margin: 1em 0 1em 0;
-    padding: 0.4em;
-}
-
-/* -- general body styles --------------------------------------------------- */
-
-a.headerlink {
-    visibility: hidden;
-}
-
-h1:hover > a.headerlink,
-h2:hover > a.headerlink,
-h3:hover > a.headerlink,
-h4:hover > a.headerlink,
-h5:hover > a.headerlink,
-h6:hover > a.headerlink,
-dt:hover > a.headerlink {
-    visibility: visible;
-}
-
-div.body p.caption {
-    text-align: inherit;
-}
-
-div.body td {
-    text-align: left;
-}
-
-.field-list ul {
-    padding-left: 1em;
-}
-
-.first {
-    margin-top: 0 !important;
-}
-
-p.rubric {
-    margin-top: 30px;
-    font-weight: bold;
-}
-
-img.align-left, .figure.align-left, object.align-left {
-    clear: left;
-    float: left;
-    margin-right: 1em;
-}
-
-img.align-right, .figure.align-right, object.align-right {
-    clear: right;
-    float: right;
-    margin-left: 1em;
-}
-
-img.align-center, .figure.align-center, object.align-center {
-  display: block;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-.align-left {
-    text-align: left;
-}
-
-.align-center {
-    text-align: center;
-}
-
-.align-right {
-    text-align: right;
-}
-
-/* -- sidebars -------------------------------------------------------------- */
-
-div.sidebar {
-    margin: 0 0 0.5em 1em;
-    border: 1px solid #ddb;
-    padding: 7px 7px 0 7px;
-    background-color: #ffe;
-    width: 40%;
-    float: right;
-}
-
-p.sidebar-title {
-    font-weight: bold;
-}
-
-/* -- topics ---------------------------------------------------------------- */
-
-div.topic {
-    border: 1px solid #ccc;
-    padding: 7px 7px 0 7px;
-    margin: 10px 0 10px 0;
-}
-
-p.topic-title {
-    font-size: 1.1em;
-    font-weight: bold;
-    margin-top: 10px;
-}
-
-/* -- admonitions ----------------------------------------------------------- */
-
-div.admonition {
-    margin-top: 10px;
-    margin-bottom: 10px;
-    padding: 7px;
-}
-
-div.admonition dt {
-    font-weight: bold;
-}
-
-div.admonition dl {
-    margin-bottom: 0;
-}
-
-p.admonition-title {
-    margin: 0px 10px 5px 0px;
-    font-weight: bold;
-}
-
-div.body p.centered {
-    text-align: center;
-    margin-top: 25px;
-}
-
-/* -- tables ---------------------------------------------------------------- */
-
-table.docutils {
-    border: 0;
-    border-collapse: collapse;
-}
-
-table.docutils td, table.docutils th {
-    padding: 1px 8px 1px 5px;
-    border-top: 0;
-    border-left: 0;
-    border-right: 0;
-    border-bottom: 1px solid #aaa;
-}
-
-table.field-list td, table.field-list th {
-    border: 0 !important;
-}
-
-table.footnote td, table.footnote th {
-    border: 0 !important;
-}
-
-th {
-    text-align: left;
-    padding-right: 5px;
-}
-
-table.citation {
-    border-left: solid 1px gray;
-    margin-left: 1px;
-}
-
-table.citation td {
-    border-bottom: none;
-}
-
-/* -- other body styles ----------------------------------------------------- */
-
-ol.arabic {
-    list-style: decimal;
-}
-
-ol.loweralpha {
-    list-style: lower-alpha;
-}
-
-ol.upperalpha {
-    list-style: upper-alpha;
-}
-
-ol.lowerroman {
-    list-style: lower-roman;
-}
-
-ol.upperroman {
-    list-style: upper-roman;
-}
-
-dl {
-    margin-bottom: 15px;
-}
-
-dd p {
-    margin-top: 0px;
-}
-
-dd ul, dd table {
-    margin-bottom: 10px;
-}
-
-dd {
-    margin-top: 3px;
-    margin-bottom: 10px;
-    margin-left: 30px;
-}
-
-dt:target, .highlighted {
-    background-color: #fbe54e;
-}
-
-dl.glossary dt {
-    font-weight: bold;
-    font-size: 1.1em;
-}
-
-.field-list ul {
-    margin: 0;
-    padding-left: 1em;
-}
-
-.field-list p {
-    margin: 0;
-}
-
-.refcount {
-    color: #060;
-}
-
-.optional {
-    font-size: 1.3em;
-}
-
-.versionmodified {
-    font-style: italic;
-}
-
-.system-message {
-    background-color: #fda;
-    padding: 5px;
-    border: 3px solid red;
-}
-
-.footnote:target  {
-    background-color: #ffa;
-}
-
-.line-block {
-    display: block;
-    margin-top: 1em;
-    margin-bottom: 1em;
-}
-
-.line-block .line-block {
-    margin-top: 0;
-    margin-bottom: 0;
-    margin-left: 1.5em;
-}
-
-.guilabel, .menuselection {
-    font-family: sans-serif;
-}
-
-.accelerator {
-    text-decoration: underline;
-}
-
-.classifier {
-    font-style: oblique;
-}
-
-abbr, acronym {
-    border-bottom: dotted 1px;
-    cursor: help;
-}
-
-/* -- code displays --------------------------------------------------------- */
-
-pre {
-    overflow: auto;
-    overflow-y: hidden;  /* fixes display issues on Chrome browsers */
-}
-
-td.linenos pre {
-    padding: 5px 0px;
-    border: 0;
-    background-color: transparent;
-    color: #aaa;
-}
-
-table.highlighttable {
-    margin-left: 0.5em;
-}
-
-table.highlighttable td {
-    padding: 0 0.5em 0 0.5em;
-}
-
-tt.descname {
-    background-color: transparent;
-    font-weight: bold;
-    font-size: 1.2em;
-}
-
-tt.descclassname {
-    background-color: transparent;
-}
-
-tt.xref, a tt {
-    background-color: transparent;
-    font-weight: bold;
-}
-
-h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
-    background-color: transparent;
-}
-
-.viewcode-link {
-    float: right;
-}
-
-.viewcode-back {
-    float: right;
-    font-family: sans-serif;
-}
-
-div.viewcode-block:target {
-    margin: -1px -10px;
-    padding: 0 10px;
-}
-
-/* -- math display ---------------------------------------------------------- */
-
-img.math {
-    vertical-align: middle;
-}
-
-div.body div.math p {
-    text-align: center;
-}
-
-span.eqno {
-    float: right;
-}
-
-/* -- printout stylesheet --------------------------------------------------- */
-
-@media print {
-    div.document,
-    div.documentwrapper,
-    div.bodywrapper {
-        margin: 0 !important;
-        width: 100%;
-    }
-
-    div.sphinxsidebar,
-    div.related,
-    div.footer,
-    #top-link {
-        display: none;
-    }
-}
\ No newline at end of file
diff --git a/vendor/distribute-0.6.34/docs/build/html/_static/nature.css b/vendor/distribute-0.6.34/docs/build/html/_static/nature.css
deleted file mode 100644
index 891c59eb..00000000
--- a/vendor/distribute-0.6.34/docs/build/html/_static/nature.css
+++ /dev/null
@@ -1,236 +0,0 @@
-/**
- * Sphinx stylesheet -- default theme
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- */
- 
-@import url("basic.css");
- 
-/* -- page layout ----------------------------------------------------------- */
- 
-body {
-    font-family: Arial, sans-serif;
-    font-size: 100%;
-    background-color: #111111;
-    color: #555555;
-    margin: 0;
-    padding: 0;
-}
-
-div.documentwrapper {
-    float: left;
-    width: 100%;
-}
-
-div.bodywrapper {
-    margin: 0 0 0 300px;
-}
-
-hr{
-    border: 1px solid #B1B4B6;
-}
- 
-div.document {
-    background-color: #fafafa;
-}
- 
-div.body {
-    background-color: #ffffff;
-    color: #3E4349;
-    padding: 1em 30px 30px 30px;
-    font-size: 0.9em;
-}
- 
-div.footer {
-    color: #555;
-    width: 100%;
-    padding: 13px 0;
-    text-align: center;
-    font-size: 75%;
-}
- 
-div.footer a {
-    color: #444444;
-}
- 
-div.related {
-    background-color: #6BA81E;
-    line-height: 36px;
-    color: #ffffff;
-    text-shadow: 0px 1px 0 #444444;
-    font-size: 1.1em;
-}
- 
-div.related a {
-    color: #E2F3CC;
-}
-
-div.related .right {
-    font-size: 0.9em;
-}
-
-div.sphinxsidebar {
-    font-size: 0.9em;
-    line-height: 1.5em;
-    width: 300px;
-}
-
-div.sphinxsidebarwrapper{
-    padding: 20px 0;
-}
- 
-div.sphinxsidebar h3,
-div.sphinxsidebar h4 {
-    font-family: Arial, sans-serif;
-    color: #222222;
-    font-size: 1.2em;
-    font-weight: bold;
-    margin: 0;
-    padding: 5px 10px;
-    text-shadow: 1px 1px 0 white
-}
-
-div.sphinxsidebar h3 a {
-    color: #444444;
-}
-
-div.sphinxsidebar p {
-    color: #888888;
-    padding: 5px 20px;
-    margin: 0.5em 0px;
-}
- 
-div.sphinxsidebar p.topless {
-}
- 
-div.sphinxsidebar ul {
-    margin: 10px 10px 10px 20px;
-    padding: 0;
-    color: #000000;
-}
- 
-div.sphinxsidebar a {
-    color: #444444;
-}
-
-div.sphinxsidebar a:hover {
-    color: #E32E00;
-}
-
-div.sphinxsidebar input {
-    border: 1px solid #cccccc;
-    font-family: sans-serif;
-    font-size: 1.1em;
-    padding: 0.15em 0.3em;
-}
-
-div.sphinxsidebar input[type=text]{
-    margin-left: 20px;
-}
- 
-/* -- body styles ----------------------------------------------------------- */
- 
-a {
-    color: #005B81;
-    text-decoration: none;
-}
- 
-a:hover {
-    color: #E32E00;
-}
- 
-div.body h1,
-div.body h2,
-div.body h3,
-div.body h4,
-div.body h5,
-div.body h6 {
-    font-family: Arial, sans-serif;
-    font-weight: normal;
-    color: #212224;
-    margin: 30px 0px 10px 0px;
-    padding: 5px 0 5px 0px;
-    text-shadow: 0px 1px 0 white;
-    border-bottom: 1px solid #C8D5E3;
-}
- 
-div.body h1 { margin-top: 0; font-size: 200%; }
-div.body h2 { font-size: 150%; }
-div.body h3 { font-size: 120%; }
-div.body h4 { font-size: 110%; }
-div.body h5 { font-size: 100%; }
-div.body h6 { font-size: 100%; }
- 
-a.headerlink {
-    color: #c60f0f;
-    font-size: 0.8em;
-    padding: 0 4px 0 4px;
-    text-decoration: none;
-}
- 
-a.headerlink:hover {
-    background-color: #c60f0f;
-    color: white;
-}
- 
-div.body p, div.body dd, div.body li {
-    line-height: 1.8em;
-}
- 
-div.admonition p.admonition-title + p {
-    display: inline;
-}
-
-div.highlight{
-    background-color: white;
-}
-
-div.note {
-    background-color: #eeeeee;
-    border: 1px solid #cccccc;
-}
- 
-div.seealso {
-    background-color: #ffffcc;
-    border: 1px solid #ffff66;
-}
- 
-div.topic {
-    background-color: #fafafa;
-    border-width: 0;
-}
- 
-div.warning {
-    background-color: #ffe4e4;
-    border: 1px solid #ff6666;
-}
- 
-p.admonition-title {
-    display: inline;
-}
- 
-p.admonition-title:after {
-    content: ":";
-}
- 
-pre {
-    padding: 10px;
-    background-color: #fafafa;
-    color: #222222;
-    line-height: 1.5em;
-    font-size: 1.1em;
-    margin: 1.5em 0 1.5em 0;
-    -webkit-box-shadow: 0px 0px 4px #d8d8d8;
-    -moz-box-shadow: 0px 0px 4px #d8d8d8;
-    box-shadow: 0px 0px 4px #d8d8d8;
-}
- 
-tt {
-    color: #222222;
-    padding: 1px 2px;
-    font-size: 1.2em;
-    font-family: monospace;
-}
-
-#table-of-contents ul {
-    padding-left: 2em;
-}
diff --git a/vendor/distribute-0.6.34/docs/build/html/_static/pygments.css b/vendor/distribute-0.6.34/docs/build/html/_static/pygments.css
deleted file mode 100644
index 652b7612..00000000
--- a/vendor/distribute-0.6.34/docs/build/html/_static/pygments.css
+++ /dev/null
@@ -1,54 +0,0 @@
-.c { color: #999988; font-style: italic } /* Comment */
-.k { font-weight: bold } /* Keyword */
-.o { font-weight: bold } /* Operator */
-.cm { color: #999988; font-style: italic } /* Comment.Multiline */
-.cp { color: #999999; font-weight: bold } /* Comment.preproc */
-.c1 { color: #999988; font-style: italic } /* Comment.Single */
-.gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
-.ge { font-style: italic } /* Generic.Emph */
-.gr { color: #aa0000 } /* Generic.Error */
-.gh { color: #999999 } /* Generic.Heading */
-.gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
-.go { color: #111 } /* Generic.Output */
-.gp { color: #555555 } /* Generic.Prompt */
-.gs { font-weight: bold } /* Generic.Strong */
-.gu { color: #aaaaaa } /* Generic.Subheading */
-.gt { color: #aa0000 } /* Generic.Traceback */
-.kc { font-weight: bold } /* Keyword.Constant */
-.kd { font-weight: bold } /* Keyword.Declaration */
-.kp { font-weight: bold } /* Keyword.Pseudo */
-.kr { font-weight: bold } /* Keyword.Reserved */
-.kt { color: #445588; font-weight: bold } /* Keyword.Type */
-.m { color: #009999 } /* Literal.Number */
-.s { color: #bb8844 } /* Literal.String */
-.na { color: #008080 } /* Name.Attribute */
-.nb { color: #999999 } /* Name.Builtin */
-.nc { color: #445588; font-weight: bold } /* Name.Class */
-.no { color: #ff99ff } /* Name.Constant */
-.ni { color: #800080 } /* Name.Entity */
-.ne { color: #990000; font-weight: bold } /* Name.Exception */
-.nf { color: #990000; font-weight: bold } /* Name.Function */
-.nn { color: #555555 } /* Name.Namespace */
-.nt { color: #000080 } /* Name.Tag */
-.nv { color: purple } /* Name.Variable */
-.ow { font-weight: bold } /* Operator.Word */
-.mf { color: #009999 } /* Literal.Number.Float */
-.mh { color: #009999 } /* Literal.Number.Hex */
-.mi { color: #009999 } /* Literal.Number.Integer */
-.mo { color: #009999 } /* Literal.Number.Oct */
-.sb { color: #bb8844 } /* Literal.String.Backtick */
-.sc { color: #bb8844 } /* Literal.String.Char */
-.sd { color: #bb8844 } /* Literal.String.Doc */
-.s2 { color: #bb8844 } /* Literal.String.Double */
-.se { color: #bb8844 } /* Literal.String.Escape */
-.sh { color: #bb8844 } /* Literal.String.Heredoc */
-.si { color: #bb8844 } /* Literal.String.Interpol */
-.sx { color: #bb8844 } /* Literal.String.Other */
-.sr { color: #808000 } /* Literal.String.Regex */
-.s1 { color: #bb8844 } /* Literal.String.Single */
-.ss { color: #bb8844 } /* Literal.String.Symbol */
-.bp { color: #999999 } /* Name.Builtin.Pseudo */
-.vc { color: #ff99ff } /* Name.Variable.Class */
-.vg { color: #ff99ff } /* Name.Variable.Global */
-.vi { color: #ff99ff } /* Name.Variable.Instance */
-.il { color: #009999 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/vendor/distribute-0.6.34/docs/conf.py b/vendor/distribute-0.6.34/docs/conf.py
deleted file mode 100644
index 15226651..00000000
--- a/vendor/distribute-0.6.34/docs/conf.py
+++ /dev/null
@@ -1,197 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Distribute documentation build configuration file, created by
-# sphinx-quickstart on Fri Jul 17 14:22:37 2009.
-#
-# This file is execfile()d with the current directory set to its containing dir.
-#
-# The contents of this file are pickled, so don't put values in the namespace
-# that aren't pickleable (module imports are okay, they're removed automatically).
-#
-# Note that not all possible configuration values are present in this
-# autogenerated file.
-#
-# All configuration values have a default; values that are commented out
-# serve to show the default.
-
-import sys, os
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-#sys.path.append(os.path.abspath('.'))
-
-# -- General configuration -----------------------------------------------------
-
-# Add any Sphinx extension module names here, as strings. They can be extensions
-# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = []
-
-# Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
-
-# The suffix of source filenames.
-source_suffix = '.txt'
-
-# The encoding of source files.
-#source_encoding = 'utf-8'
-
-# The master toctree document.
-master_doc = 'index'
-
-# General information about the project.
-project = u'Distribute'
-copyright = u'2009-2011, The fellowship of the packaging'
-
-# The version info for the project you're documenting, acts as replacement for
-# |version| and |release|, also used in various other places throughout the
-# built documents.
-#
-# The short X.Y version.
-version = '0.6.34'
-# The full version, including alpha/beta/rc tags.
-release = '0.6.34'
-
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-#language = None
-
-# There are two options for replacing |today|: either, you set today to some
-# non-false value, then it is used:
-#today = ''
-# Else, today_fmt is used as the format for a strftime call.
-#today_fmt = '%B %d, %Y'
-
-# List of documents that shouldn't be included in the build.
-#unused_docs = []
-
-# List of directories, relative to source directory, that shouldn't be searched
-# for source files.
-exclude_trees = []
-
-# The reST default role (used for this markup: `text`) to use for all documents.
-#default_role = None
-
-# If true, '()' will be appended to :func: etc. cross-reference text.
-#add_function_parentheses = True
-
-# If true, the current module name will be prepended to all description
-# unit titles (such as .. function::).
-#add_module_names = True
-
-# If true, sectionauthor and moduleauthor directives will be shown in the
-# output. They are ignored by default.
-#show_authors = False
-
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
-
-# A list of ignored prefixes for module index sorting.
-#modindex_common_prefix = []
-
-
-# -- Options for HTML output ---------------------------------------------------
-
-# The theme to use for HTML and HTML Help pages.  Major themes that come with
-# Sphinx are currently 'default' and 'sphinxdoc'.
-html_theme = 'nature'
-
-# Theme options are theme-specific and customize the look and feel of a theme
-# further.  For a list of options available for each theme, see the
-# documentation.
-#html_theme_options = {}
-
-# Add any paths that contain custom themes here, relative to this directory.
-html_theme_path = ['_theme']
-
-# The name for this set of Sphinx documents.  If None, it defaults to
-# "<project> v<release> documentation".
-html_title = "Distribute documentation"
-
-# A shorter title for the navigation bar.  Default is the same as html_title.
-html_short_title = "Distribute"
-
-# The name of an image file (relative to this directory) to place at the top
-# of the sidebar.
-#html_logo = None
-
-# The name of an image file (within the static path) to use as favicon of the
-# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
-# pixels large.
-#html_favicon = None
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-#html_static_path = ['_static']
-
-# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
-# using the given strftime format.
-#html_last_updated_fmt = '%b %d, %Y'
-
-# If true, SmartyPants will be used to convert quotes and dashes to
-# typographically correct entities.
-html_use_smartypants = True
-
-# Custom sidebar templates, maps document names to template names.
-html_sidebars = {'index': 'indexsidebar.html'}
-
-# Additional templates that should be rendered to pages, maps page names to
-# template names.
-#html_additional_pages = {}
-
-# If false, no module index is generated.
-html_use_modindex = False
-
-# If false, no index is generated.
-html_use_index = False
-
-# If true, the index is split into individual pages for each letter.
-#html_split_index = False
-
-# If true, links to the reST sources are added to the pages.
-#html_show_sourcelink = True
-
-# If true, an OpenSearch description file will be output, and all pages will
-# contain a <link> tag referring to it.  The value of this option must be the
-# base URL from which the finished HTML is served.
-#html_use_opensearch = ''
-
-# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
-#html_file_suffix = ''
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = 'Distributedoc'
-
-
-# -- Options for LaTeX output --------------------------------------------------
-
-# The paper size ('letter' or 'a4').
-#latex_paper_size = 'letter'
-
-# The font size ('10pt', '11pt' or '12pt').
-#latex_font_size = '10pt'
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title, author, documentclass [howto/manual]).
-latex_documents = [
-  ('index', 'Distribute.tex', ur'Distribute Documentation',
-   ur'The fellowship of the packaging', 'manual'),
-]
-
-# The name of an image file (relative to this directory) to place at the top of
-# the title page.
-#latex_logo = None
-
-# For "manual" documents, if this is true, then toplevel headings are parts,
-# not chapters.
-#latex_use_parts = False
-
-# Additional stuff for the LaTeX preamble.
-#latex_preamble = ''
-
-# Documents to append as an appendix to all manuals.
-#latex_appendices = []
-
-# If false, no module index is generated.
-#latex_use_modindex = True
diff --git a/vendor/distribute-0.6.34/docs/easy_install.txt b/vendor/distribute-0.6.34/docs/easy_install.txt
deleted file mode 100644
index 9b4fcfbb..00000000
--- a/vendor/distribute-0.6.34/docs/easy_install.txt
+++ /dev/null
@@ -1,1597 +0,0 @@
-============
-Easy Install
-============
-
-Easy Install is a python module (``easy_install``) bundled with ``setuptools``
-that lets you automatically download, build, install, and manage Python
-packages.
-
-Please share your experiences with us! If you encounter difficulty installing
-a package, please contact us via the `distutils mailing list
-<http://mail.python.org/pipermail/distutils-sig/>`_.  (Note: please DO NOT send
-private email directly to the author of setuptools; it will be discarded.  The
-mailing list is a searchable archive of previously-asked and answered
-questions; you should begin your research there before reporting something as a
-bug -- and then do so via list discussion first.)
-
-(Also, if you'd like to learn about how you can use ``setuptools`` to make your
-own packages work better with EasyInstall, or provide EasyInstall-like features
-without requiring your users to use EasyInstall directly, you'll probably want
-to check out the full `setuptools`_ documentation as well.)
-
-.. contents:: **Table of Contents**
-
-
-Using "Easy Install"
-====================
-
-
-.. _installation instructions:
-
-Installing "Easy Install"
--------------------------
-
-Please see the `setuptools PyPI page <http://pypi.python.org/pypi/setuptools>`_
-for download links and basic installation instructions for each of the
-supported platforms.
-
-You will need at least Python 2.3.5, or if you are on a 64-bit platform, Python
-2.4.  An ``easy_install`` script will be installed in the normal location for
-Python scripts on your platform.
-
-Note that the instructions on the setuptools PyPI page assume that you are
-are installling to Python's primary ``site-packages`` directory.  If this is
-not the case, you should consult the section below on `Custom Installation
-Locations`_ before installing.  (And, on Windows, you should not use the
-``.exe`` installer when installing to an alternate location.)
-
-Note that ``easy_install`` normally works by downloading files from the
-internet.  If you are behind an NTLM-based firewall that prevents Python
-programs from accessing the net directly, you may wish to first install and use
-the `APS proxy server <http://ntlmaps.sf.net/>`_, which lets you get past such
-firewalls in the same way that your web browser(s) do.
-
-(Alternately, if you do not wish easy_install to actually download anything, you
-can restrict it from doing so with the ``--allow-hosts`` option; see the
-sections on `restricting downloads with --allow-hosts`_ and `command-line
-options`_ for more details.)
-
-
-Troubleshooting
-~~~~~~~~~~~~~~~
-
-If EasyInstall/setuptools appears to install correctly, and you can run the
-``easy_install`` command but it fails with an ``ImportError``, the most likely
-cause is that you installed to a location other than ``site-packages``,
-without taking any of the steps described in the `Custom Installation
-Locations`_ section below.  Please see that section and follow the steps to
-make sure that your custom location will work correctly.  Then re-install.
-
-Similarly, if you can run ``easy_install``, and it appears to be installing
-packages, but then you can't import them, the most likely issue is that you
-installed EasyInstall correctly but are using it to install packages to a
-non-standard location that hasn't been properly prepared.  Again, see the
-section on `Custom Installation Locations`_ for more details.
-
-
-Windows Notes
-~~~~~~~~~~~~~
-
-On Windows, an ``easy_install.exe`` launcher will also be installed, so that
-you can just type ``easy_install`` as long as it's on your ``PATH``.  If typing
-``easy_install`` at the command prompt doesn't work, check to make sure your
-``PATH`` includes the appropriate ``C:\\Python2X\\Scripts`` directory.  On
-most current versions of Windows, you can change the ``PATH`` by right-clicking
-"My Computer", choosing "Properties" and selecting the "Advanced" tab, then
-clicking the "Environment Variables" button.  ``PATH`` will be in the "System
-Variables" section, and you will need to exit and restart your command shell
-(command.com, cmd.exe, bash, or other) for the change to take effect.  Be sure
-to add a ``;`` after the last item on ``PATH`` before adding the scripts
-directory to it.
-
-Note that instead of changing your ``PATH`` to include the Python scripts
-directory, you can also retarget the installation location for scripts so they
-go on a directory that's already on the ``PATH``.  For more information see the
-sections below on `Command-Line Options`_ and `Configuration Files`_.  You
-can pass command line options (such as ``--script-dir``) to
-``distribute_setup.py`` to control where ``easy_install.exe`` will be installed.
-
-
-
-Downloading and Installing a Package
-------------------------------------
-
-For basic use of ``easy_install``, you need only supply the filename or URL of
-a source distribution or .egg file (`Python Egg`__).
-
-__ http://peak.telecommunity.com/DevCenter/PythonEggs
-
-**Example 1**. Install a package by name, searching PyPI for the latest
-version, and automatically downloading, building, and installing it::
-
-    easy_install SQLObject
-
-**Example 2**. Install or upgrade a package by name and version by finding
-links on a given "download page"::
-
-    easy_install -f http://pythonpaste.org/package_index.html SQLObject
-
-**Example 3**. Download a source distribution from a specified URL,
-automatically building and installing it::
-
-    easy_install http://example.com/path/to/MyPackage-1.2.3.tgz
-
-**Example 4**. Install an already-downloaded .egg file::
-
-    easy_install /my_downloads/OtherPackage-3.2.1-py2.3.egg
-
-**Example 5**.  Upgrade an already-installed package to the latest version
-listed on PyPI::
-
-    easy_install --upgrade PyProtocols
-
-**Example 6**.  Install a source distribution that's already downloaded and
-extracted in the current directory (New in 0.5a9)::
-
-    easy_install .
-
-**Example 7**.  (New in 0.6a1) Find a source distribution or Subversion
-checkout URL for a package, and extract it or check it out to
-``~/projects/sqlobject`` (the name will always be in all-lowercase), where it
-can be examined or edited.  (The package will not be installed, but it can
-easily be installed with ``easy_install ~/projects/sqlobject``.  See `Editing
-and Viewing Source Packages`_ below for more info.)::
-
-    easy_install --editable --build-directory ~/projects SQLObject
-
-**Example 7**. (New in 0.6.11) Install a distribution within your home dir::
-
-    easy_install --user SQLAlchemy
-
-Easy Install accepts URLs, filenames, PyPI package names (i.e., ``distutils``
-"distribution" names), and package+version specifiers.  In each case, it will
-attempt to locate the latest available version that meets your criteria.
-
-When downloading or processing downloaded files, Easy Install recognizes
-distutils source distribution files with extensions of .tgz, .tar, .tar.gz,
-.tar.bz2, or .zip.  And of course it handles already-built .egg
-distributions as well as ``.win32.exe`` installers built using distutils.
-
-By default, packages are installed to the running Python installation's
-``site-packages`` directory, unless you provide the ``-d`` or ``--install-dir``
-option to specify an alternative directory, or specify an alternate location
-using distutils configuration files.  (See `Configuration Files`_, below.)
-
-By default, any scripts included with the package are installed to the running
-Python installation's standard script installation location.  However, if you
-specify an installation directory via the command line or a config file, then
-the default directory for installing scripts will be the same as the package
-installation directory, to ensure that the script will have access to the
-installed package.  You can override this using the ``-s`` or ``--script-dir``
-option.
-
-Installed packages are added to an ``easy-install.pth`` file in the install
-directory, so that Python will always use the most-recently-installed version
-of the package.  If you would like to be able to select which version to use at
-runtime, you should use the ``-m`` or ``--multi-version`` option.
-
-
-Upgrading a Package
--------------------
-
-You don't need to do anything special to upgrade a package: just install the
-new version, either by requesting a specific version, e.g.::
-
-    easy_install "SomePackage==2.0"
-
-a version greater than the one you have now::
-
-    easy_install "SomePackage>2.0"
-
-using the upgrade flag, to find the latest available version on PyPI::
-
-    easy_install --upgrade SomePackage
-
-or by using a download page, direct download URL, or package filename::
-
-    easy_install -f http://example.com/downloads ExamplePackage
-
-    easy_install http://example.com/downloads/ExamplePackage-2.0-py2.4.egg
-
-    easy_install my_downloads/ExamplePackage-2.0.tgz
-
-If you're using ``-m`` or ``--multi-version`` , using the ``require()``
-function at runtime automatically selects the newest installed version of a
-package that meets your version criteria.  So, installing a newer version is
-the only step needed to upgrade such packages.
-
-If you're installing to a directory on PYTHONPATH, or a configured "site"
-directory (and not using ``-m``), installing a package automatically replaces
-any previous version in the ``easy-install.pth`` file, so that Python will
-import the most-recently installed version by default.  So, again, installing
-the newer version is the only upgrade step needed.
-
-If you haven't suppressed script installation (using ``--exclude-scripts`` or
-``-x``), then the upgraded version's scripts will be installed, and they will
-be automatically patched to ``require()`` the corresponding version of the
-package, so that you can use them even if they are installed in multi-version
-mode.
-
-``easy_install`` never actually deletes packages (unless you're installing a
-package with the same name and version number as an existing package), so if
-you want to get rid of older versions of a package, please see `Uninstalling
-Packages`_, below.
-
-
-Changing the Active Version
----------------------------
-
-If you've upgraded a package, but need to revert to a previously-installed
-version, you can do so like this::
-
-    easy_install PackageName==1.2.3
-
-Where ``1.2.3`` is replaced by the exact version number you wish to switch to.
-If a package matching the requested name and version is not already installed
-in a directory on ``sys.path``, it will be located via PyPI and installed.
-
-If you'd like to switch to the latest installed version of ``PackageName``, you
-can do so like this::
-
-    easy_install PackageName
-
-This will activate the latest installed version.  (Note: if you have set any
-``find_links`` via distutils configuration files, those download pages will be
-checked for the latest available version of the package, and it will be
-downloaded and installed if it is newer than your current version.)
-
-Note that changing the active version of a package will install the newly
-active version's scripts, unless the ``--exclude-scripts`` or ``-x`` option is
-specified.
-
-
-Uninstalling Packages
----------------------
-
-If you have replaced a package with another version, then you can just delete
-the package(s) you don't need by deleting the PackageName-versioninfo.egg file
-or directory (found in the installation directory).
-
-If you want to delete the currently installed version of a package (or all
-versions of a package), you should first run::
-
-    easy_install -m PackageName
-
-This will ensure that Python doesn't continue to search for a package you're
-planning to remove. After you've done this, you can safely delete the .egg
-files or directories, along with any scripts you wish to remove.
-
-
-Managing Scripts
-----------------
-
-Whenever you install, upgrade, or change versions of a package, EasyInstall
-automatically installs the scripts for the selected package version, unless
-you tell it not to with ``-x`` or ``--exclude-scripts``.  If any scripts in
-the script directory have the same name, they are overwritten.
-
-Thus, you do not normally need to manually delete scripts for older versions of
-a package, unless the newer version of the package does not include a script
-of the same name.  However, if you are completely uninstalling a package, you
-may wish to manually delete its scripts.
-
-EasyInstall's default behavior means that you can normally only run scripts
-from one version of a package at a time.  If you want to keep multiple versions
-of a script available, however, you can simply use the ``--multi-version`` or
-``-m`` option, and rename the scripts that EasyInstall creates.  This works
-because EasyInstall installs scripts as short code stubs that ``require()`` the
-matching version of the package the script came from, so renaming the script
-has no effect on what it executes.
-
-For example, suppose you want to use two versions of the ``rst2html`` tool
-provided by the `docutils <http://docutils.sf.net/>`_ package.  You might
-first install one version::
-
-    easy_install -m docutils==0.3.9
-
-then rename the ``rst2html.py`` to ``r2h_039``, and install another version::
-
-    easy_install -m docutils==0.3.10
-
-This will create another ``rst2html.py`` script, this one using docutils
-version 0.3.10 instead of 0.3.9.  You now have two scripts, each using a
-different version of the package.  (Notice that we used ``-m`` for both
-installations, so that Python won't lock us out of using anything but the most
-recently-installed version of the package.)
-
-
-
-Tips & Techniques
------------------
-
-
-Multiple Python Versions
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-As of version 0.6a11, EasyInstall installs itself under two names:
-``easy_install`` and ``easy_install-N.N``, where ``N.N`` is the Python version
-used to install it.  Thus, if you install EasyInstall for both Python 2.3 and
-2.4, you can use the ``easy_install-2.3`` or ``easy_install-2.4`` scripts to
-install packages for Python 2.3 or 2.4, respectively.
-
-Also, if you're working with Python version 2.4 or higher, you can run Python
-with ``-m easy_install`` to run that particular Python version's
-``easy_install`` command.
-
-
-Restricting Downloads with ``--allow-hosts``
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can use the ``--allow-hosts`` (``-H``) option to restrict what domains
-EasyInstall will look for links and downloads on.  ``--allow-hosts=None``
-prevents downloading altogether.  You can also use wildcards, for example
-to restrict downloading to hosts in your own intranet.  See the section below
-on `Command-Line Options`_ for more details on the ``--allow-hosts`` option.
-
-By default, there are no host restrictions in effect, but you can change this
-default by editing the appropriate `configuration files`_ and adding:
-
-.. code-block:: ini
-
-    [easy_install]
-    allow_hosts = *.myintranet.example.com,*.python.org
-
-The above example would then allow downloads only from hosts in the
-``python.org`` and ``myintranet.example.com`` domains, unless overridden on the
-command line.
-
-
-Installing on Un-networked Machines
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Just copy the eggs or source packages you need to a directory on the target
-machine, then use the ``-f`` or ``--find-links`` option to specify that
-directory's location.  For example::
-
-    easy_install -H None -f somedir SomePackage
-
-will attempt to install SomePackage using only eggs and source packages found
-in ``somedir`` and disallowing all remote access.  You should of course make
-sure you have all of SomePackage's dependencies available in somedir.
-
-If you have another machine of the same operating system and library versions
-(or if the packages aren't platform-specific), you can create the directory of
-eggs using a command like this::
-
-    easy_install -zmaxd somedir SomePackage
-
-This will tell EasyInstall to put zipped eggs or source packages for
-SomePackage and all its dependencies into ``somedir``, without creating any
-scripts or .pth files.  You can then copy the contents of ``somedir`` to the
-target machine.  (``-z`` means zipped eggs, ``-m`` means multi-version, which
-prevents .pth files from being used, ``-a`` means to copy all the eggs needed,
-even if they're installed elsewhere on the machine, and ``-d`` indicates the
-directory to place the eggs in.)
-
-You can also build the eggs from local development packages that were installed
-with the ``setup.py develop`` command, by including the ``-l`` option, e.g.::
-
-    easy_install -zmaxld somedir SomePackage
-
-This will use locally-available source distributions to build the eggs.
-
-
-Packaging Others' Projects As Eggs
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Need to distribute a package that isn't published in egg form?  You can use
-EasyInstall to build eggs for a project.  You'll want to use the ``--zip-ok``,
-``--exclude-scripts``, and possibly ``--no-deps`` options (``-z``, ``-x`` and
-``-N``, respectively).  Use ``-d`` or ``--install-dir`` to specify the location
-where you'd like the eggs placed.  By placing them in a directory that is
-published to the web, you can then make the eggs available for download, either
-in an intranet or to the internet at large.
-
-If someone distributes a package in the form of a single ``.py`` file, you can
-wrap it in an egg by tacking an ``#egg=name-version`` suffix on the file's URL.
-So, something like this::
-
-    easy_install -f "http://some.example.com/downloads/foo.py#egg=foo-1.0" foo
-
-will install the package as an egg, and this::
-
-    easy_install -zmaxd. \
-        -f "http://some.example.com/downloads/foo.py#egg=foo-1.0" foo
-
-will create a ``.egg`` file in the current directory.
-
-
-Creating your own Package Index
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-In addition to local directories and the Python Package Index, EasyInstall can
-find download links on most any web page whose URL is given to the ``-f``
-(``--find-links``) option.  In the simplest case, you can simply have a web
-page with links to eggs or Python source packages, even an automatically
-generated directory listing (such as the Apache web server provides).
-
-If you are setting up an intranet site for package downloads, you may want to
-configure the target machines to use your download site by default, adding
-something like this to their `configuration files`_:
-
-.. code-block:: ini
-
-    [easy_install]
-    find_links = http://mypackages.example.com/somedir/
-                 http://turbogears.org/download/
-                 http://peak.telecommunity.com/dist/
-
-As you can see, you can list multiple URLs separated by whitespace, continuing
-on multiple lines if necessary (as long as the subsequent lines are indented.
-
-If you are more ambitious, you can also create an entirely custom package index
-or PyPI mirror.  See the ``--index-url`` option under `Command-Line Options`_,
-below, and also the section on `Package Index "API"`_.
-
-
-Password-Protected Sites
-------------------------
-
-If a site you want to download from is password-protected using HTTP "Basic"
-authentication, you can specify your credentials in the URL, like so::
-
-    http://some_userid:some_password@some.example.com/some_path/
-
-You can do this with both index page URLs and direct download URLs.  As long
-as any HTML pages read by easy_install use *relative* links to point to the
-downloads, the same user ID and password will be used to do the downloading.
-
-
-Controlling Build Options
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-EasyInstall respects standard distutils `Configuration Files`_, so you can use
-them to configure build options for packages that it installs from source.  For
-example, if you are on Windows using the MinGW compiler, you can configure the
-default compiler by putting something like this:
-
-.. code-block:: ini
-
-    [build]
-    compiler = mingw32
-
-into the appropriate distutils configuration file.  In fact, since this is just
-normal distutils configuration, it will affect any builds using that config
-file, not just ones done by EasyInstall.  For example, if you add those lines
-to ``distutils.cfg`` in the ``distutils`` package directory, it will be the
-default compiler for *all* packages you build.  See `Configuration Files`_
-below for a list of the standard configuration file locations, and links to
-more documentation on using distutils configuration files.
-
-
-Editing and Viewing Source Packages
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Sometimes a package's source distribution  contains additional documentation,
-examples, configuration files, etc., that are not part of its actual code.  If
-you want to be able to examine these files, you can use the ``--editable``
-option to EasyInstall, and EasyInstall will look for a source distribution
-or Subversion URL for the package, then download and extract it or check it out
-as a subdirectory of the ``--build-directory`` you specify.  If you then wish
-to install the package after editing or configuring it, you can do so by
-rerunning EasyInstall with that directory as the target.
-
-Note that using ``--editable`` stops EasyInstall from actually building or
-installing the package; it just finds, obtains, and possibly unpacks it for
-you.  This allows you to make changes to the package if necessary, and to
-either install it in development mode using ``setup.py develop`` (if the
-package uses setuptools, that is), or by running ``easy_install projectdir``
-(where ``projectdir`` is the subdirectory EasyInstall created for the
-downloaded package.
-
-In order to use ``--editable`` (``-e`` for short), you *must* also supply a
-``--build-directory`` (``-b`` for short).  The project will be placed in a
-subdirectory of the build directory.  The subdirectory will have the same
-name as the project itself, but in all-lowercase.  If a file or directory of
-that name already exists, EasyInstall will print an error message and exit.
-
-Also, when using ``--editable``, you cannot use URLs or filenames as arguments.
-You *must* specify project names (and optional version requirements) so that
-EasyInstall knows what directory name(s) to create.  If you need to force
-EasyInstall to use a particular URL or filename, you should specify it as a
-``--find-links`` item (``-f`` for short), and then also specify
-the project name, e.g.::
-
-    easy_install -eb ~/projects \
-     -fhttp://prdownloads.sourceforge.net/ctypes/ctypes-0.9.6.tar.gz?download \
-     ctypes==0.9.6
-
-
-Dealing with Installation Conflicts
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-(NOTE: As of 0.6a11, this section is obsolete; it is retained here only so that
-people using older versions of EasyInstall can consult it.  As of version
-0.6a11, installation conflicts are handled automatically without deleting the
-old or system-installed packages, and without ignoring the issue.  Instead,
-eggs are automatically shifted to the front of ``sys.path`` using special
-code added to the ``easy-install.pth`` file.  So, if you are using version
-0.6a11 or better of setuptools, you do not need to worry about conflicts,
-and the following issues do not apply to you.)
-
-EasyInstall installs distributions in a "managed" way, such that each
-distribution can be independently activated or deactivated on ``sys.path``.
-However, packages that were not installed by EasyInstall are "unmanaged",
-in that they usually live all in one directory and cannot be independently
-activated or deactivated.
-
-As a result, if you are using EasyInstall to upgrade an existing package, or
-to install a package with the same name as an existing package, EasyInstall
-will warn you of the conflict.  (This is an improvement over ``setup.py
-install``, becuase the ``distutils`` just install new packages on top of old
-ones, possibly combining two unrelated packages or leaving behind modules that
-have been deleted in the newer version of the package.)
-
-By default, EasyInstall will stop the installation if it detects a conflict
-between an existing, "unmanaged" package, and a module or package in any of
-the distributions you're installing.  It will display a list of all of the
-existing files and directories that would need to be deleted for the new
-package to be able to function correctly.  You can then either delete these
-conflicting files and directories yourself and re-run EasyInstall, or you can
-just use the ``--delete-conflicting`` or ``--ignore-conflicts-at-my-risk``
-options, as described under `Command-Line Options`_, below.
-
-Of course, once you've replaced all of your existing "unmanaged" packages with
-versions managed by EasyInstall, you won't have any more conflicts to worry
-about!
-
-
-Compressed Installation
-~~~~~~~~~~~~~~~~~~~~~~~
-
-EasyInstall tries to install packages in zipped form, if it can.  Zipping
-packages can improve Python's overall import performance if you're not using
-the ``--multi-version`` option, because Python processes zipfile entries on
-``sys.path`` much faster than it does directories.
-
-As of version 0.5a9, EasyInstall analyzes packages to determine whether they
-can be safely installed as a zipfile, and then acts on its analysis.  (Previous
-versions would not install a package as a zipfile unless you used the
-``--zip-ok`` option.)
-
-The current analysis approach is fairly conservative; it currenly looks for:
-
- * Any use of the ``__file__`` or ``__path__`` variables (which should be
-   replaced with ``pkg_resources`` API calls)
-
- * Possible use of ``inspect`` functions that expect to manipulate source files
-   (e.g. ``inspect.getsource()``)
-
- * Top-level modules that might be scripts used with ``python -m`` (Python 2.4)
-
-If any of the above are found in the package being installed, EasyInstall will
-assume that the package cannot be safely run from a zipfile, and unzip it to
-a directory instead.  You can override this analysis with the ``-zip-ok`` flag,
-which will tell EasyInstall to install the package as a zipfile anyway.  Or,
-you can use the ``--always-unzip`` flag, in which case EasyInstall will always
-unzip, even if its analysis says the package is safe to run as a zipfile.
-
-Normally, however, it is simplest to let EasyInstall handle the determination
-of whether to zip or unzip, and only specify overrides when needed to work
-around a problem.  If you find you need to override EasyInstall's guesses, you
-may want to contact the package author and the EasyInstall maintainers, so that
-they can make appropriate changes in future versions.
-
-(Note: If a package uses ``setuptools`` in its setup script, the package author
-has the option to declare the package safe or unsafe for zipped usage via the
-``zip_safe`` argument to ``setup()``.  If the package author makes such a
-declaration, EasyInstall believes the package's author and does not perform its
-own analysis.  However, your command-line option, if any, will still override
-the package author's choice.)
-
-
-Reference Manual
-================
-
-Configuration Files
--------------------
-
-(New in 0.4a2)
-
-You may specify default options for EasyInstall using the standard
-distutils configuration files, under the command heading ``easy_install``.
-EasyInstall will look first for a ``setup.cfg`` file in the current directory,
-then a ``~/.pydistutils.cfg`` or ``$HOME\\pydistutils.cfg`` (on Unix-like OSes
-and Windows, respectively), and finally a ``distutils.cfg`` file in the
-``distutils`` package directory.  Here's a simple example:
-
-.. code-block:: ini
-
-    [easy_install]
-
-    # set the default location to install packages
-    install_dir = /home/me/lib/python
-
-    # Notice that indentation can be used to continue an option
-    # value; this is especially useful for the "--find-links"
-    # option, which tells easy_install to use download links on
-    # these pages before consulting PyPI:
-    #
-    find_links = http://sqlobject.org/
-                 http://peak.telecommunity.com/dist/
-
-In addition to accepting configuration for its own options under
-``[easy_install]``, EasyInstall also respects defaults specified for other
-distutils commands.  For example, if you don't set an ``install_dir`` for
-``[easy_install]``, but *have* set an ``install_lib`` for the ``[install]``
-command, this will become EasyInstall's default installation directory.  Thus,
-if you are already using distutils configuration files to set default install
-locations, build options, etc., EasyInstall will respect your existing settings
-until and unless you override them explicitly in an ``[easy_install]`` section.
-
-For more information, see also the current Python documentation on the `use and
-location of distutils configuration files <http://docs.python.org/inst/config-syntax.html>`_.
-
-Notice that ``easy_install`` will use the ``setup.cfg`` from the current
-working directory only if it was triggered from ``setup.py`` through the
-``install_requires`` option. The standalone command will not use that file.
-
-Command-Line Options
---------------------
-
-``--zip-ok, -z``
-    Install all packages as zip files, even if they are marked as unsafe for
-    running as a zipfile.  This can be useful when EasyInstall's analysis
-    of a non-setuptools package is too conservative, but keep in mind that
-    the package may not work correctly.  (Changed in 0.5a9; previously this
-    option was required in order for zipped installation to happen at all.)
-
-``--always-unzip, -Z``
-    Don't install any packages as zip files, even if the packages are marked
-    as safe for running as a zipfile.  This can be useful if a package does
-    something unsafe, but not in a way that EasyInstall can easily detect.
-    EasyInstall's default analysis is currently very conservative, however, so
-    you should only use this option if you've had problems with a particular
-    package, and *after* reporting the problem to the package's maintainer and
-    to the EasyInstall maintainers.
-
-    (Note: the ``-z/-Z`` options only affect the installation of newly-built
-    or downloaded packages that are not already installed in the target
-    directory; if you want to convert an existing installed version from
-    zipped to unzipped or vice versa, you'll need to delete the existing
-    version first, and re-run EasyInstall.)
-
-``--multi-version, -m``
-    "Multi-version" mode. Specifying this option prevents ``easy_install`` from
-    adding an ``easy-install.pth`` entry for the package being installed, and
-    if an entry for any version the package already exists, it will be removed
-    upon successful installation. In multi-version mode, no specific version of
-    the package is available for importing, unless you use
-    ``pkg_resources.require()`` to put it on ``sys.path``. This can be as
-    simple as::
-
-        from pkg_resources import require
-        require("SomePackage", "OtherPackage", "MyPackage")
-
-    which will put the latest installed version of the specified packages on
-    ``sys.path`` for you. (For more advanced uses, like selecting specific
-    versions and enabling optional dependencies, see the ``pkg_resources`` API
-    doc.)
-
-    Changed in 0.6a10: this option is no longer silently enabled when
-    installing to a non-PYTHONPATH, non-"site" directory.  You must always
-    explicitly use this option if you want it to be active.
-
-``--upgrade, -U``   (New in 0.5a4)
-    By default, EasyInstall only searches online if a project/version
-    requirement can't be met by distributions already installed
-    on sys.path or the installation directory.  However, if you supply the
-    ``--upgrade`` or ``-U`` flag, EasyInstall will always check the package
-    index and ``--find-links`` URLs before selecting a version to install.  In
-    this way, you can force EasyInstall to use the latest available version of
-    any package it installs (subject to any version requirements that might
-    exclude such later versions).
-
-``--install-dir=DIR, -d DIR``
-    Set the installation directory. It is up to you to ensure that this
-    directory is on ``sys.path`` at runtime, and to use
-    ``pkg_resources.require()`` to enable the installed package(s) that you
-    need.
-
-    (New in 0.4a2) If this option is not directly specified on the command line
-    or in a distutils configuration file, the distutils default installation
-    location is used.  Normally, this would be the ``site-packages`` directory,
-    but if you are using distutils configuration files, setting things like
-    ``prefix`` or ``install_lib``, then those settings are taken into
-    account when computing the default installation directory, as is the
-    ``--prefix`` option.
-
-``--script-dir=DIR, -s DIR``
-    Set the script installation directory.  If you don't supply this option
-    (via the command line or a configuration file), but you *have* supplied
-    an ``--install-dir`` (via command line or config file), then this option
-    defaults to the same directory, so that the scripts will be able to find
-    their associated package installation.  Otherwise, this setting defaults
-    to the location where the distutils would normally install scripts, taking
-    any distutils configuration file settings into account.
-
-``--exclude-scripts, -x``
-    Don't install scripts.  This is useful if you need to install multiple
-    versions of a package, but do not want to reset the version that will be
-    run by scripts that are already installed.
-
-``--user`` (New in 0.6.11)
-    Use the the user-site-packages as specified in :pep:`370`
-    instead of the global site-packages.
-
-``--always-copy, -a``   (New in 0.5a4)
-    Copy all needed distributions to the installation directory, even if they
-    are already present in a directory on sys.path.  In older versions of
-    EasyInstall, this was the default behavior, but now you must explicitly
-    request it.  By default, EasyInstall will no longer copy such distributions
-    from other sys.path directories to the installation directory, unless you
-    explicitly gave the distribution's filename on the command line.
-
-    Note that as of 0.6a10, using this option excludes "system" and
-    "development" eggs from consideration because they can't be reliably
-    copied.  This may cause EasyInstall to choose an older version of a package
-    than what you expected, or it may cause downloading and installation of a
-    fresh copy of something that's already installed.  You will see warning
-    messages for any eggs that EasyInstall skips, before it falls back to an
-    older version or attempts to download a fresh copy.
-
-``--find-links=URLS_OR_FILENAMES, -f URLS_OR_FILENAMES``
-    Scan the specified "download pages" or directories for direct links to eggs
-    or other distributions.  Any existing file or directory names or direct
-    download URLs are immediately added to EasyInstall's search cache, and any
-    indirect URLs (ones that don't point to eggs or other recognized archive
-    formats) are added to a list of additional places to search for download
-    links.  As soon as EasyInstall has to go online to find a package (either
-    because it doesn't exist locally, or because ``--upgrade`` or ``-U`` was
-    used), the specified URLs will be downloaded and scanned for additional
-    direct links.
-
-    Eggs and archives found by way of ``--find-links`` are only downloaded if
-    they are needed to meet a requirement specified on the command line; links
-    to unneeded packages are ignored.
-
-    If all requested packages can be found using links on the specified
-    download pages, the Python Package Index will not be consulted unless you
-    also specified the ``--upgrade`` or ``-U`` option.
-
-    (Note: if you want to refer to a local HTML file containing links, you must
-    use a ``file:`` URL, as filenames that do not refer to a directory, egg, or
-    archive are ignored.)
-
-    You may specify multiple URLs or file/directory names with this option,
-    separated by whitespace.  Note that on the command line, you will probably
-    have to surround the URL list with quotes, so that it is recognized as a
-    single option value.  You can also specify URLs in a configuration file;
-    see `Configuration Files`_, above.
-
-    Changed in 0.6a10: previously all URLs and directories passed to this
-    option were scanned as early as possible, but from 0.6a10 on, only
-    directories and direct archive links are scanned immediately; URLs are not
-    retrieved unless a package search was already going to go online due to a
-    package not being available locally, or due to the use of the ``--update``
-    or ``-U`` option.
-
-``--no-find-links`` Blocks the addition of any link. (New in Distribute 0.6.11)
-    This is useful if you want to avoid adding links defined in a project
-    easy_install is installing (wether it's a requested project or a
-    dependency.). When used, ``--find-links`` is ignored.
-
-``--delete-conflicting, -D`` (Removed in 0.6a11)
-    (As of 0.6a11, this option is no longer necessary; please do not use it!)
-
-    If you are replacing a package that was previously installed *without*
-    using EasyInstall, the old version may end up on ``sys.path`` before the
-    version being installed with EasyInstall.  EasyInstall will normally abort
-    the installation of a package if it detects such a conflict, and ask you to
-    manually remove the conflicting files or directories.  If you specify this
-    option, however, EasyInstall will attempt to delete the files or
-    directories itself, and then proceed with the installation.
-
-``--ignore-conflicts-at-my-risk`` (Removed in 0.6a11)
-    (As of 0.6a11, this option is no longer necessary; please do not use it!)
-
-    Ignore conflicting packages and proceed with installation anyway, even
-    though it means the package probably won't work properly.  If the
-    conflicting package is in a directory you can't write to, this may be your
-    only option, but you will need to take more invasive measures to get the
-    installed package to work, like manually adding it to ``PYTHONPATH`` or to
-    ``sys.path`` at runtime.
-
-``--index-url=URL, -i URL`` (New in 0.4a1; default changed in 0.6c7)
-    Specifies the base URL of the Python Package Index.  The default is
-    http://pypi.python.org/simple if not specified.  When a package is requested
-    that is not locally available or linked from a ``--find-links`` download
-    page, the package index will be searched for download pages for the needed
-    package, and those download pages will be searched for links to download
-    an egg or source distribution.
-
-``--editable, -e`` (New in 0.6a1)
-    Only find and download source distributions for the specified projects,
-    unpacking them to subdirectories of the specified ``--build-directory``.
-    EasyInstall will not actually build or install the requested projects or
-    their dependencies; it will just find and extract them for you.  See
-    `Editing and Viewing Source Packages`_ above for more details.
-
-``--build-directory=DIR, -b DIR`` (UPDATED in 0.6a1)
-    Set the directory used to build source packages.  If a package is built
-    from a source distribution or checkout, it will be extracted to a
-    subdirectory of the specified directory.  The subdirectory will have the
-    same name as the extracted distribution's project, but in all-lowercase.
-    If a file or directory of that name already exists in the given directory,
-    a warning will be printed to the console, and the build will take place in
-    a temporary directory instead.
-
-    This option is most useful in combination with the ``--editable`` option,
-    which forces EasyInstall to *only* find and extract (but not build and
-    install) source distributions.  See `Editing and Viewing Source Packages`_,
-    above, for more information.
-
-``--verbose, -v, --quiet, -q`` (New in 0.4a4)
-    Control the level of detail of EasyInstall's progress messages.  The
-    default detail level is "info", which prints information only about
-    relatively time-consuming operations like running a setup script, unpacking
-    an archive, or retrieving a URL.  Using ``-q`` or ``--quiet`` drops the
-    detail level to "warn", which will only display installation reports,
-    warnings, and errors.  Using ``-v`` or ``--verbose`` increases the detail
-    level to include individual file-level operations, link analysis messages,
-    and distutils messages from any setup scripts that get run.  If you include
-    the ``-v`` option more than once, the second and subsequent uses are passed
-    down to any setup scripts, increasing the verbosity of their reporting as
-    well.
-
-``--dry-run, -n`` (New in 0.4a4)
-    Don't actually install the package or scripts.  This option is passed down
-    to any setup scripts run, so packages should not actually build either.
-    This does *not* skip downloading, nor does it skip extracting source
-    distributions to a temporary/build directory.
-
-``--optimize=LEVEL``, ``-O LEVEL`` (New in 0.4a4)
-    If you are installing from a source distribution, and are *not* using the
-    ``--zip-ok`` option, this option controls the optimization level for
-    compiling installed ``.py`` files to ``.pyo`` files.  It does not affect
-    the compilation of modules contained in ``.egg`` files, only those in
-    ``.egg`` directories.  The optimization level can be set to 0, 1, or 2;
-    the default is 0 (unless it's set under ``install`` or ``install_lib`` in
-    one of your distutils configuration files).
-
-``--record=FILENAME``  (New in 0.5a4)
-    Write a record of all installed files to FILENAME.  This is basically the
-    same as the same option for the standard distutils "install" command, and
-    is included for compatibility with tools that expect to pass this option
-    to "setup.py install".
-
-``--site-dirs=DIRLIST, -S DIRLIST``   (New in 0.6a1)
-    Specify one or more custom "site" directories (separated by commas).
-    "Site" directories are directories where ``.pth`` files are processed, such
-    as the main Python ``site-packages`` directory.  As of 0.6a10, EasyInstall
-    automatically detects whether a given directory processes ``.pth`` files
-    (or can be made to do so), so you should not normally need to use this
-    option.  It is is now only necessary if you want to override EasyInstall's
-    judgment and force an installation directory to be treated as if it
-    supported ``.pth`` files.
-
-``--no-deps, -N``  (New in 0.6a6)
-    Don't install any dependencies.  This is intended as a convenience for
-    tools that wrap eggs in a platform-specific packaging system.  (We don't
-    recommend that you use it for anything else.)
-
-``--allow-hosts=PATTERNS, -H PATTERNS``   (New in 0.6a6)
-    Restrict downloading and spidering to hosts matching the specified glob
-    patterns.  E.g. ``-H *.python.org`` restricts web access so that only
-    packages listed and downloadable from machines in the ``python.org``
-    domain.  The glob patterns must match the *entire* user/host/port section of
-    the target URL(s).  For example, ``*.python.org`` will NOT accept a URL
-    like ``http://python.org/foo`` or ``http://www.python.org:8080/``.
-    Multiple patterns can be specified by separting them with commas.  The
-    default pattern is ``*``, which matches anything.
-
-    In general, this option is mainly useful for blocking EasyInstall's web
-    access altogether (e.g. ``-Hlocalhost``), or to restrict it to an intranet
-    or other trusted site.  EasyInstall will do the best it can to satisfy
-    dependencies given your host restrictions, but of course can fail if it
-    can't find suitable packages.  EasyInstall displays all blocked URLs, so
-    that you can adjust your ``--allow-hosts`` setting if it is more strict
-    than you intended.  Some sites may wish to define a restrictive default
-    setting for this option in their `configuration files`_, and then manually
-    override the setting on the command line as needed.
-
-``--prefix=DIR`` (New in 0.6a10)
-    Use the specified directory as a base for computing the default
-    installation and script directories.  On Windows, the resulting default
-    directories will be ``prefix\\Lib\\site-packages`` and ``prefix\\Scripts``,
-    while on other platforms the defaults will be
-    ``prefix/lib/python2.X/site-packages`` (with the appropriate version
-    substituted) for libraries and ``prefix/bin`` for scripts.
-
-    Note that the ``--prefix`` option only sets the *default* installation and
-    script directories, and does not override the ones set on the command line
-    or in a configuration file.
-
-``--local-snapshots-ok, -l`` (New in 0.6c6)
-    Normally, EasyInstall prefers to only install *released* versions of
-    projects, not in-development ones, because such projects may not
-    have a currently-valid version number.  So, it usually only installs them
-    when their ``setup.py`` directory is explicitly passed on the command line.
-
-    However, if this option is used, then any in-development projects that were
-    installed using the ``setup.py develop`` command, will be used to build
-    eggs, effectively upgrading the "in-development" project to a snapshot
-    release.  Normally, this option is used only in conjunction with the
-    ``--always-copy`` option to create a distributable snapshot of every egg
-    needed to run an application.
-
-    Note that if you use this option, you must make sure that there is a valid
-    version number (such as an SVN revision number tag) for any in-development
-    projects that may be used, as otherwise EasyInstall may not be able to tell
-    what version of the project is "newer" when future installations or
-    upgrades are attempted.
-
-
-.. _non-root installation:
-
-Custom Installation Locations
------------------------------
-
-By default, EasyInstall installs python packages into Python's main ``site-packages`` directory,
-and manages them using a custom ``.pth`` file in that same directory.
-
-Very often though, a user or developer wants ``easy_install`` to install and manage python packages
-in an alternative location, usually for one of 3 reasons:
-
-1. They don't have access to write to the main Python site-packages directory.
-
-2. They want a user-specific stash of packages, that is not visible to other users.
-
-3. They want to isolate a set of packages to a specific python application, usually to minimize
-   the possibility of version conflicts.
-
-Historically, there have been many approaches to achieve custom installation.
-The following section lists only the easiest and most relevant approaches [1]_.
-
-`Use the "--user" option`_
-
-`Use the "--user" option and customize "PYTHONUSERBASE"`_
-
-`Use "virtualenv"`_
-
-.. [1] There are older ways to achieve custom installation using various ``easy_install`` and ``setup.py install`` options, combined with ``PYTHONPATH`` and/or ``PYTHONUSERBASE`` alterations, but all of these are effectively deprecated by the User scheme brought in by `PEP-370`_ in Python 2.6.
-
-.. _PEP-370: http://www.python.org/dev/peps/pep-0370/
-
-
-Use the "--user" option
-~~~~~~~~~~~~~~~~~~~~~~~
-With Python 2.6 came the User scheme for installation, which means that all
-python distributions support an alternative install location that is specific to a user [2]_ [3]_.
-The Default location for each OS is explained in the python documentation
-for the ``site.USER_BASE`` variable.  This mode of installation can be turned on by
-specifying the ``--user`` option to ``setup.py install`` or ``easy_install``.
-This approach serves the need to have a user-specific stash of packages.
-
-.. [2] Prior to Python2.6, Mac OS X offered a form of the User scheme. That is now subsumed into the User scheme introduced in Python 2.6.
-.. [3] Prior to the User scheme, there was the Home scheme, which is still available, but requires more effort than the User scheme to get packages recognized.
-
-Use the "--user" option and customize "PYTHONUSERBASE"
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-The User scheme install location can be customized by setting the ``PYTHONUSERBASE`` environment
-variable, which updates the value of ``site.USER_BASE``.  To isolate packages to a specific
-application, simply set the OS environment of that application to a specific value of
-``PYTHONUSERBASE``, that contains just those packages.
-
-Use "virtualenv"
-~~~~~~~~~~~~~~~~
-"virtualenv" is a 3rd-party python package that effectively "clones" a python installation, thereby
-creating an isolated location to intall packages.  The evolution of "virtualenv" started before the existence
-of the User installation scheme.  "virtualenv" provides a version of ``easy_install`` that is
-scoped to the cloned python install and is used in the normal way. "virtualenv" does offer various features
-that the User installation scheme alone does not provide, e.g. the ability to hide the main python site-packages.
-
-Please refer to the `virtualenv`_ documentation for more details.
-
-.. _virtualenv: http://pypi.python.org/pypi/virtualenv
-
-
-
-Package Index "API"
--------------------
-
-Custom package indexes (and PyPI) must follow the following rules for
-EasyInstall to be able to look up and download packages:
-
-1. Except where stated otherwise, "pages" are HTML or XHTML, and "links"
-   refer to ``href`` attributes.
-
-2. Individual project version pages' URLs must be of the form
-   ``base/projectname/version``, where ``base`` is the package index's base URL.
-
-3. Omitting the ``/version`` part of a project page's URL (but keeping the
-   trailing ``/``) should result in a page that is either:
-
-   a) The single active version of that project, as though the version had been
-      explicitly included, OR
-
-   b) A page with links to all of the active version pages for that project.
-
-4. Individual project version pages should contain direct links to downloadable
-   distributions where possible.  It is explicitly permitted for a project's
-   "long_description" to include URLs, and these should be formatted as HTML
-   links by the package index, as EasyInstall does no special processing to
-   identify what parts of a page are index-specific and which are part of the
-   project's supplied description.
-
-5. Where available, MD5 information should be added to download URLs by
-   appending a fragment identifier of the form ``#md5=...``, where ``...`` is
-   the 32-character hex MD5 digest.  EasyInstall will verify that the
-   downloaded file's MD5 digest matches the given value.
-
-6. Individual project version pages should identify any "homepage" or
-   "download" URLs using ``rel="homepage"`` and ``rel="download"`` attributes
-   on the HTML elements linking to those URLs. Use of these attributes will
-   cause EasyInstall to always follow the provided links, unless it can be
-   determined by inspection that they are downloadable distributions. If the
-   links are not to downloadable distributions, they are retrieved, and if they
-   are HTML, they are scanned for download links. They are *not* scanned for
-   additional "homepage" or "download" links, as these are only processed for
-   pages that are part of a package index site.
-
-7. The root URL of the index, if retrieved with a trailing ``/``, must result
-   in a page containing links to *all* projects' active version pages.
-
-   (Note: This requirement is a workaround for the absence of case-insensitive
-   ``safe_name()`` matching of project names in URL paths. If project names are
-   matched in this fashion (e.g. via the PyPI server, mod_rewrite, or a similar
-   mechanism), then it is not necessary to include this all-packages listing
-   page.)
-
-8. If a package index is accessed via a ``file://`` URL, then EasyInstall will
-   automatically use ``index.html`` files, if present, when trying to read a
-   directory with a trailing ``/`` on the URL.
-
-
-Backward Compatibility
-~~~~~~~~~~~~~~~~~~~~~~
-
-Package indexes that wish to support setuptools versions prior to 0.6b4 should
-also follow these rules:
-
-* Homepage and download links must be preceded with ``"<th>Home Page"`` or
-  ``"<th>Download URL"``, in addition to (or instead of) the ``rel=""``
-  attributes on the actual links.  These marker strings do not need to be
-  visible, or uncommented, however!  For example, the following is a valid
-  homepage link that will work with any version of setuptools::
-
-    <li>
-     <strong>Home Page:</strong>
-     <!-- <th>Home Page -->
-     <a rel="homepage" href="http://sqlobject.org">http://sqlobject.org</a>
-    </li>
-
-  Even though the marker string is in an HTML comment, older versions of
-  EasyInstall will still "see" it and know that the link that follows is the
-  project's home page URL.
-
-* The pages described by paragraph 3(b) of the preceding section *must*
-  contain the string ``"Index of Packages</title>"`` somewhere in their text.
-  This can be inside of an HTML comment, if desired, and it can be anywhere
-  in the page.  (Note: this string MUST NOT appear on normal project pages, as
-  described in paragraphs 2 and 3(a)!)
-
-In addition, for compatibility with PyPI versions that do not use ``#md5=``
-fragment IDs, EasyInstall uses the following regular expression to match PyPI's
-displayed MD5 info (broken onto two lines for readability)::
-
-    <a href="([^"#]+)">([^<]+)</a>\n\s+\(<a href="[^?]+\?:action=show_md5
-    &amp;digest=([0-9a-f]{32})">md5</a>\)
-
-History
-=======
-
-0.6c9
- * Fixed ``win32.exe`` support for .pth files, so unnecessary directory nesting
-   is flattened out in the resulting egg.  (There was a case-sensitivity
-   problem that affected some distributions, notably ``pywin32``.)
-
- * Prevent ``--help-commands`` and other junk from showing under Python 2.5
-   when running ``easy_install --help``.
-
- * Fixed GUI scripts sometimes not executing on Windows
-
- * Fixed not picking up dependency links from recursive dependencies.
-
- * Only make ``.py``, ``.dll`` and ``.so`` files executable when unpacking eggs
-
- * Changes for Jython compatibility
-
- * Improved error message when a requirement is also a directory name, but the
-   specified directory is not a source package.
-
- * Fixed ``--allow-hosts`` option blocking ``file:`` URLs
-
- * Fixed HTTP SVN detection failing when the page title included a project
-   name (e.g. on SourceForge-hosted SVN)
-
- * Fix Jython script installation to handle ``#!`` lines better when
-   ``sys.executable`` is a script.
-
- * Removed use of deprecated ``md5`` module if ``hashlib`` is available
-
- * Keep site directories (e.g. ``site-packages``) from being included in
-   ``.pth`` files.
-
-0.6c7
- * ``ftp:`` download URLs now work correctly.
-
- * The default ``--index-url`` is now ``http://pypi.python.org/simple``, to use
-   the Python Package Index's new simpler (and faster!) REST API.
-
-0.6c6
- * EasyInstall no longer aborts the installation process if a URL it wants to
-   retrieve can't be downloaded, unless the URL is an actual package download.
-   Instead, it issues a warning and tries to keep going.
-
- * Fixed distutils-style scripts originally built on Windows having their line
-   endings doubled when installed on any platform.
-
- * Added ``--local-snapshots-ok`` flag, to allow building eggs from projects
-   installed using ``setup.py develop``.
-
- * Fixed not HTML-decoding URLs scraped from web pages
-
-0.6c5
- * Fixed ``.dll`` files on Cygwin not having executable permisions when an egg
-   is installed unzipped.
-
-0.6c4
- * Added support for HTTP "Basic" authentication using ``http://user:pass@host``
-   URLs.  If a password-protected page contains links to the same host (and
-   protocol), those links will inherit the credentials used to access the
-   original page.
-
- * Removed all special support for Sourceforge mirrors, as Sourceforge's
-   mirror system now works well for non-browser downloads.
-
- * Fixed not recognizing ``win32.exe`` installers that included a custom
-   bitmap.
-
- * Fixed not allowing ``os.open()`` of paths outside the sandbox, even if they
-   are opened read-only (e.g. reading ``/dev/urandom`` for random numbers, as
-   is done by ``os.urandom()`` on some platforms).
-
- * Fixed a problem with ``.pth`` testing on Windows when ``sys.executable``
-   has a space in it (e.g., the user installed Python to a ``Program Files``
-   directory).
-
-0.6c3
- * You can once again use "python -m easy_install" with Python 2.4 and above.
-
- * Python 2.5 compatibility fixes added.
-
-0.6c2
- * Windows script wrappers now support quoted arguments and arguments
-   containing spaces.  (Patch contributed by Jim Fulton.)
-
- * The ``ez_setup.py`` script now actually works when you put a setuptools
-   ``.egg`` alongside it for bootstrapping an offline machine.
-
- * A writable installation directory on ``sys.path`` is no longer required to
-   download and extract a source distribution using ``--editable``.
-
- * Generated scripts now use ``-x`` on the ``#!`` line when ``sys.executable``
-   contains non-ASCII characters, to prevent deprecation warnings about an
-   unspecified encoding when the script is run.
-
-0.6c1
- * EasyInstall now includes setuptools version information in the
-   ``User-Agent`` string sent to websites it visits.
-
-0.6b4
- * Fix creating Python wrappers for non-Python scripts
-
- * Fix ``ftp://`` directory listing URLs from causing a crash when used in the
-   "Home page" or "Download URL" slots on PyPI.
-
- * Fix ``sys.path_importer_cache`` not being updated when an existing zipfile
-   or directory is deleted/overwritten.
-
- * Fix not recognizing HTML 404 pages from package indexes.
-
- * Allow ``file://`` URLs to be used as a package index.  URLs that refer to
-   directories will use an internally-generated directory listing if there is
-   no ``index.html`` file in the directory.
-
- * Allow external links in a package index to be specified using
-   ``rel="homepage"`` or ``rel="download"``, without needing the old
-   PyPI-specific visible markup.
-
- * Suppressed warning message about possibly-misspelled project name, if an egg
-   or link for that project name has already been seen.
-
-0.6b3
- * Fix local ``--find-links`` eggs not being copied except with
-   ``--always-copy``.
-
- * Fix sometimes not detecting local packages installed outside of "site"
-   directories.
-
- * Fix mysterious errors during initial ``setuptools`` install, caused by
-   ``ez_setup`` trying to run ``easy_install`` twice, due to a code fallthru
-   after deleting the egg from which it's running.
-
-0.6b2
- * Don't install or update a ``site.py`` patch when installing to a
-   ``PYTHONPATH`` directory with ``--multi-version``, unless an
-   ``easy-install.pth`` file is already in use there.
-
- * Construct ``.pth`` file paths in such a way that installing an egg whose
-   name begins with ``import`` doesn't cause a syntax error.
-
- * Fixed a bogus warning message that wasn't updated since the 0.5 versions.
-
-0.6b1
- * Better ambiguity management: accept ``#egg`` name/version even if processing
-   what appears to be a correctly-named distutils file, and ignore ``.egg``
-   files with no ``-``, since valid Python ``.egg`` files always have a version
-   number (but Scheme eggs often don't).
-
- * Support ``file://`` links to directories in ``--find-links``, so that
-   easy_install can build packages from local source checkouts.
-
- * Added automatic retry for Sourceforge mirrors.  The new download process is
-   to first just try dl.sourceforge.net, then randomly select mirror IPs and
-   remove ones that fail, until something works.  The removed IPs stay removed
-   for the remainder of the run.
-
- * Ignore bdist_dumb distributions when looking at download URLs.
-
-0.6a11
- * Process ``dependency_links.txt`` if found in a distribution, by adding the
-   URLs to the list for scanning.
-
- * Use relative paths in ``.pth`` files when eggs are being installed to the
-   same directory as the ``.pth`` file.  This maximizes portability of the
-   target directory when building applications that contain eggs.
-
- * Added ``easy_install-N.N`` script(s) for convenience when using multiple
-   Python versions.
-
- * Added automatic handling of installation conflicts.  Eggs are now shifted to
-   the front of sys.path, in an order consistent with where they came from,
-   making EasyInstall seamlessly co-operate with system package managers.
-
-   The ``--delete-conflicting`` and ``--ignore-conflicts-at-my-risk`` options
-   are now no longer necessary, and will generate warnings at the end of a
-   run if you use them.
-
- * Don't recursively traverse subdirectories given to ``--find-links``.
-
-0.6a10
- * Added exhaustive testing of the install directory, including a spawn test
-   for ``.pth`` file support, and directory writability/existence checks.  This
-   should virtually eliminate the need to set or configure ``--site-dirs``.
-
- * Added ``--prefix`` option for more do-what-I-mean-ishness in the absence of
-   RTFM-ing.  :)
-
- * Enhanced ``PYTHONPATH`` support so that you don't have to put any eggs on it
-   manually to make it work.  ``--multi-version`` is no longer a silent
-   default; you must explicitly use it if installing to a non-PYTHONPATH,
-   non-"site" directory.
-
- * Expand ``$variables`` used in the ``--site-dirs``, ``--build-directory``,
-   ``--install-dir``, and ``--script-dir`` options, whether on the command line
-   or in configuration files.
-
- * Improved SourceForge mirror processing to work faster and be less affected
-   by transient HTML changes made by SourceForge.
-
- * PyPI searches now use the exact spelling of requirements specified on the
-   command line or in a project's ``install_requires``.  Previously, a
-   normalized form of the name was used, which could lead to unnecessary
-   full-index searches when a project's name had an underscore (``_``) in it.
-
- * EasyInstall can now download bare ``.py`` files and wrap them in an egg,
-   as long as you include an ``#egg=name-version`` suffix on the URL, or if
-   the ``.py`` file is listed as the "Download URL" on the project's PyPI page.
-   This allows third parties to "package" trivial Python modules just by
-   linking to them (e.g. from within their own PyPI page or download links
-   page).
-
- * The ``--always-copy`` option now skips "system" and "development" eggs since
-   they can't be reliably copied.  Note that this may cause EasyInstall to
-   choose an older version of a package than what you expected, or it may cause
-   downloading and installation of a fresh version of what's already installed.
-
- * The ``--find-links`` option previously scanned all supplied URLs and
-   directories as early as possible, but now only directories and direct
-   archive links are scanned immediately.  URLs are not retrieved unless a
-   package search was already going to go online due to a package not being
-   available locally, or due to the use of the ``--update`` or ``-U`` option.
-
- * Fixed the annoying ``--help-commands`` wart.
-
-0.6a9
- * Fixed ``.pth`` file processing picking up nested eggs (i.e. ones inside
-   "baskets") when they weren't explicitly listed in the ``.pth`` file.
-
- * If more than one URL appears to describe the exact same distribution, prefer
-   the shortest one.  This helps to avoid "table of contents" CGI URLs like the
-   ones on effbot.org.
-
- * Quote arguments to python.exe (including python's path) to avoid problems
-   when Python (or a script) is installed in a directory whose name contains
-   spaces on Windows.
-
- * Support full roundtrip translation of eggs to and from ``bdist_wininst``
-   format.  Running ``bdist_wininst`` on a setuptools-based package wraps the
-   egg in an .exe that will safely install it as an egg (i.e., with metadata
-   and entry-point wrapper scripts), and ``easy_install`` can turn the .exe
-   back into an ``.egg`` file or directory and install it as such.
-
-0.6a8
- * Update for changed SourceForge mirror format
-
- * Fixed not installing dependencies for some packages fetched via Subversion
-
- * Fixed dependency installation with ``--always-copy`` not using the same
-   dependency resolution procedure as other operations.
-
- * Fixed not fully removing temporary directories on Windows, if a Subversion
-   checkout left read-only files behind
-
- * Fixed some problems building extensions when Pyrex was installed, especially
-   with Python 2.4 and/or packages using SWIG.
-
-0.6a7
- * Fixed not being able to install Windows script wrappers using Python 2.3
-
-0.6a6
- * Added support for "traditional" PYTHONPATH-based non-root installation, and
-   also the convenient ``virtual-python.py`` script, based on a contribution
-   by Ian Bicking.  The setuptools egg now contains a hacked ``site`` module
-   that makes the PYTHONPATH-based approach work with .pth files, so that you
-   can get the full EasyInstall feature set on such installations.
-
- * Added ``--no-deps`` and ``--allow-hosts`` options.
-
- * Improved Windows ``.exe`` script wrappers so that the script can have the
-   same name as a module without confusing Python.
-
- * Changed dependency processing so that it's breadth-first, allowing a
-   depender's preferences to override those of a dependee, to prevent conflicts
-   when a lower version is acceptable to the dependee, but not the depender.
-   Also, ensure that currently installed/selected packages aren't given
-   precedence over ones desired by a package being installed, which could
-   cause conflict errors.
-
-0.6a3
- * Improved error message when trying to use old ways of running
-   ``easy_install``.  Removed the ability to run via ``python -m`` or by
-   running ``easy_install.py``; ``easy_install`` is the command to run on all
-   supported platforms.
-
- * Improved wrapper script generation and runtime initialization so that a
-   VersionConflict doesn't occur if you later install a competing version of a
-   needed package as the default version of that package.
-
- * Fixed a problem parsing version numbers in ``#egg=`` links.
-
-0.6a2
- * EasyInstall can now install "console_scripts" defined by packages that use
-   ``setuptools`` and define appropriate entry points.  On Windows, console
-   scripts get an ``.exe`` wrapper so you can just type their name.  On other
-   platforms, the scripts are installed without a file extension.
-
- * Using ``python -m easy_install`` or running ``easy_install.py`` is now
-   DEPRECATED, since an ``easy_install`` wrapper is now available on all
-   platforms.
-
-0.6a1
- * EasyInstall now does MD5 validation of downloads from PyPI, or from any link
-   that has an "#md5=..." trailer with a 32-digit lowercase hex md5 digest.
-
- * EasyInstall now handles symlinks in target directories by removing the link,
-   rather than attempting to overwrite the link's destination.  This makes it
-   easier to set up an alternate Python "home" directory (as described above in
-   the `Non-Root Installation`_ section).
-
- * Added support for handling MacOS platform information in ``.egg`` filenames,
-   based on a contribution by Kevin Dangoor.  You may wish to delete and
-   reinstall any eggs whose filename includes "darwin" and "Power_Macintosh",
-   because the format for this platform information has changed so that minor
-   OS X upgrades (such as 10.4.1 to 10.4.2) do not cause eggs built with a
-   previous OS version to become obsolete.
-
- * easy_install's dependency processing algorithms have changed.  When using
-   ``--always-copy``, it now ensures that dependencies are copied too.  When
-   not using ``--always-copy``, it tries to use a single resolution loop,
-   rather than recursing.
-
- * Fixed installing extra ``.pyc`` or ``.pyo`` files for scripts with ``.py``
-   extensions.
-
- * Added ``--site-dirs`` option to allow adding custom "site" directories.
-   Made ``easy-install.pth`` work in platform-specific alternate site
-   directories (e.g. ``~/Library/Python/2.x/site-packages`` on Mac OS X).
-
- * If you manually delete the current version of a package, the next run of
-   EasyInstall against the target directory will now remove the stray entry
-   from the ``easy-install.pth`` file.
-
- * EasyInstall now recognizes URLs with a ``#egg=project_name`` fragment ID
-   as pointing to the named project's source checkout.  Such URLs have a lower
-   match precedence than any other kind of distribution, so they'll only be
-   used if they have a higher version number than any other available
-   distribution, or if you use the ``--editable`` option.  The ``#egg``
-   fragment can contain a version if it's formatted as ``#egg=proj-ver``,
-   where ``proj`` is the project name, and ``ver`` is the version number.  You
-   *must* use the format for these values that the ``bdist_egg`` command uses;
-   i.e., all non-alphanumeric runs must be condensed to single underscore
-   characters.
-
- * Added the ``--editable`` option; see `Editing and Viewing Source Packages`_
-   above for more info.  Also, slightly changed the behavior of the
-   ``--build-directory`` option.
-
- * Fixed the setup script sandbox facility not recognizing certain paths as
-   valid on case-insensitive platforms.
-
-0.5a12
- * Fix ``python -m easy_install`` not working due to setuptools being installed
-   as a zipfile.  Update safety scanner to check for modules that might be used
-   as ``python -m`` scripts.
-
- * Misc. fixes for win32.exe support, including changes to support Python 2.4's
-   changed ``bdist_wininst`` format.
-
-0.5a10
- * Put the ``easy_install`` module back in as a module, as it's needed for
-   ``python -m`` to run it!
-
- * Allow ``--find-links/-f`` to accept local directories or filenames as well
-   as URLs.
-
-0.5a9
- * EasyInstall now automatically detects when an "unmanaged" package or
-   module is going to be on ``sys.path`` ahead of a package you're installing,
-   thereby preventing the newer version from being imported.  By default, it
-   will abort installation to alert you of the problem, but there are also
-   new options (``--delete-conflicting`` and ``--ignore-conflicts-at-my-risk``)
-   available to change the default behavior.  (Note: this new feature doesn't
-   take effect for egg files that were built with older ``setuptools``
-   versions, because they lack the new metadata file required to implement it.)
-
- * The ``easy_install`` distutils command now uses ``DistutilsError`` as its
-   base error type for errors that should just issue a message to stderr and
-   exit the program without a traceback.
-
- * EasyInstall can now be given a path to a directory containing a setup
-   script, and it will attempt to build and install the package there.
-
- * EasyInstall now performs a safety analysis on module contents to determine
-   whether a package is likely to run in zipped form, and displays
-   information about what modules may be doing introspection that would break
-   when running as a zipfile.
-
- * Added the ``--always-unzip/-Z`` option, to force unzipping of packages that
-   would ordinarily be considered safe to unzip, and changed the meaning of
-   ``--zip-ok/-z`` to "always leave everything zipped".
-
-0.5a8
- * There is now a separate documentation page for `setuptools`_; revision
-   history that's not specific to EasyInstall has been moved to that page.
-
- .. _setuptools: http://peak.telecommunity.com/DevCenter/setuptools
-
-0.5a5
- * Made ``easy_install`` a standard ``setuptools`` command, moving it from
-   the ``easy_install`` module to ``setuptools.command.easy_install``.  Note
-   that if you were importing or extending it, you must now change your imports
-   accordingly.  ``easy_install.py`` is still installed as a script, but not as
-   a module.
-
-0.5a4
- * Added ``--always-copy/-a`` option to always copy needed packages to the
-   installation directory, even if they're already present elsewhere on
-   sys.path. (In previous versions, this was the default behavior, but now
-   you must request it.)
-
- * Added ``--upgrade/-U`` option to force checking PyPI for latest available
-   version(s) of all packages requested by name and version, even if a matching
-   version is available locally.
-
- * Added automatic installation of dependencies declared by a distribution
-   being installed.  These dependencies must be listed in the distribution's
-   ``EGG-INFO`` directory, so the distribution has to have declared its
-   dependencies by using setuptools.  If a package has requirements it didn't
-   declare, you'll still have to deal with them yourself.  (E.g., by asking
-   EasyInstall to find and install them.)
-
- * Added the ``--record`` option to ``easy_install`` for the benefit of tools
-   that run ``setup.py install --record=filename`` on behalf of another
-   packaging system.)
-
-0.5a3
- * Fixed not setting script permissions to allow execution.
-
- * Improved sandboxing so that setup scripts that want a temporary directory
-   (e.g. pychecker) can still run in the sandbox.
-
-0.5a2
- * Fix stupid stupid refactoring-at-the-last-minute typos.  :(
-
-0.5a1
- * Added support for converting ``.win32.exe`` installers to eggs on the fly.
-   EasyInstall will now recognize such files by name and install them.
-
- * Fixed a problem with picking the "best" version to install (versions were
-   being sorted as strings, rather than as parsed values)
-
-0.4a4
- * Added support for the distutils "verbose/quiet" and "dry-run" options, as
-   well as the "optimize" flag.
-
- * Support downloading packages that were uploaded to PyPI (by scanning all
-   links on package pages, not just the homepage/download links).
-
-0.4a3
- * Add progress messages to the search/download process so that you can tell
-   what URLs it's reading to find download links.  (Hopefully, this will help
-   people report out-of-date and broken links to package authors, and to tell
-   when they've asked for a package that doesn't exist.)
-
-0.4a2
- * Added support for installing scripts
-
- * Added support for setting options via distutils configuration files, and
-   using distutils' default options as a basis for EasyInstall's defaults.
-
- * Renamed ``--scan-url/-s`` to ``--find-links/-f`` to free up ``-s`` for the
-   script installation directory option.
-
- * Use ``urllib2`` instead of ``urllib``, to allow use of ``https:`` URLs if
-   Python includes SSL support.
-
-0.4a1
- * Added ``--scan-url`` and ``--index-url`` options, to scan download pages
-   and search PyPI for needed packages.
-
-0.3a4
- * Restrict ``--build-directory=DIR/-b DIR`` option to only be used with single
-   URL installs, to avoid running the wrong setup.py.
-
-0.3a3
- * Added ``--build-directory=DIR/-b DIR`` option.
-
- * Added "installation report" that explains how to use 'require()' when doing
-   a multiversion install or alternate installation directory.
-
- * Added SourceForge mirror auto-select (Contributed by Ian Bicking)
-
- * Added "sandboxing" that stops a setup script from running if it attempts to
-   write to the filesystem outside of the build area
-
- * Added more workarounds for packages with quirky ``install_data`` hacks
-
-0.3a2
- * Added subversion download support for ``svn:`` and ``svn+`` URLs, as well as
-   automatic recognition of HTTP subversion URLs (Contributed by Ian Bicking)
-
- * Misc. bug fixes
-
-0.3a1
- * Initial release.
-
-
-Future Plans
-============
-
-* Additional utilities to list/remove/verify packages
-* Signature checking?  SSL?  Ability to suppress PyPI search?
-* Display byte progress meter when downloading distributions and long pages?
-* Redirect stdout/stderr to log during run_setup?
-
diff --git a/vendor/distribute-0.6.34/docs/index.txt b/vendor/distribute-0.6.34/docs/index.txt
deleted file mode 100644
index 5f3b945b..00000000
--- a/vendor/distribute-0.6.34/docs/index.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-Welcome to Distribute's documentation!
-======================================
-
-`Distribute` is a fork of the `Setuptools` project.
-
-Distribute is intended to replace Setuptools as the standard method for
-working with Python module distributions.
-
-For those who may wonder why they should switch to Distribute over Setuptools, it’s quite simple:
-
-- Distribute is a drop-in replacement for Setuptools
-- The code is actively maintained, and has over 10 commiters
-- Distribute offers Python 3 support !
-
-Documentation content:
-
-.. toctree::
-   :maxdepth: 2
-
-   roadmap
-   python3
-   using
-   setuptools
-   easy_install
-   pkg_resources
-
-
-.. image:: http://python-distribute.org/pip_distribute.png
-
-Design done by Idan Gazit (http://pixane.com) - License: cc-by-3.0
-
-Copy & paste::
-
- curl -O http://python-distribute.org/distribute_setup.py
- python distribute_setup.py
- easy_install pip
\ No newline at end of file
diff --git a/vendor/distribute-0.6.34/docs/pkg_resources.txt b/vendor/distribute-0.6.34/docs/pkg_resources.txt
deleted file mode 100644
index 480f9547..00000000
--- a/vendor/distribute-0.6.34/docs/pkg_resources.txt
+++ /dev/null
@@ -1,1955 +0,0 @@
-=============================================================
-Package Discovery and Resource Access using ``pkg_resources``
-=============================================================
-
-The ``pkg_resources`` module distributed with ``setuptools`` provides an API
-for Python libraries to access their resource files, and for extensible
-applications and frameworks to automatically discover plugins.  It also
-provides runtime support for using C extensions that are inside zipfile-format
-eggs, support for merging packages that have separately-distributed modules or
-subpackages, and APIs for managing Python's current "working set" of active
-packages.
-
-
-.. contents:: **Table of Contents**
-
-
---------
-Overview
---------
-
-Eggs are a distribution format for Python modules, similar in concept to Java's
-"jars" or Ruby's "gems".  They differ from previous Python distribution formats
-in that they are importable (i.e. they can be added to ``sys.path``), and they
-are *discoverable*, meaning that they carry metadata that unambiguously
-identifies their contents and dependencies, and thus can be *automatically*
-found and added to ``sys.path`` in response to simple requests of the form,
-"get me everything I need to use docutils' PDF support".
-
-The ``pkg_resources`` module provides runtime facilities for finding,
-introspecting, activating and using eggs and other "pluggable" distribution
-formats.  Because these are new concepts in Python (and not that well-
-established in other languages either), it helps to have a few special terms
-for talking about eggs and how they can be used:
-
-project
-    A library, framework, script, plugin, application, or collection of data
-    or other resources, or some combination thereof.  Projects are assumed to
-    have "relatively unique" names, e.g. names registered with PyPI.
-
-release
-    A snapshot of a project at a particular point in time, denoted by a version
-    identifier.
-
-distribution
-    A file or files that represent a particular release.
-
-importable distribution
-    A file or directory that, if placed on ``sys.path``, allows Python to
-    import any modules contained within it.
-
-pluggable distribution
-    An importable distribution whose filename unambiguously identifies its
-    release (i.e. project and version), and whose contents unamabiguously
-    specify what releases of other projects will satisfy its runtime
-    requirements.
-
-extra
-    An "extra" is an optional feature of a release, that may impose additional
-    runtime requirements.  For example, if docutils PDF support required a
-    PDF support library to be present, docutils could define its PDF support as
-    an "extra", and list what other project releases need to be available in
-    order to provide it.
-
-environment
-    A collection of distributions potentially available for importing, but not
-    necessarily active.  More than one distribution (i.e. release version) for
-    a given project may be present in an environment.
-
-working set
-    A collection of distributions actually available for importing, as on
-    ``sys.path``.  At most one distribution (release version) of a given
-    project may be present in a working set, as otherwise there would be
-    ambiguity as to what to import.
-
-eggs
-    Eggs are pluggable distributions in one of the three formats currently
-    supported by ``pkg_resources``.  There are built eggs, development eggs,
-    and egg links.  Built eggs are directories or zipfiles whose name ends
-    with ``.egg`` and follows the egg naming conventions, and contain an
-    ``EGG-INFO`` subdirectory (zipped or otherwise).  Development eggs are
-    normal directories of Python code with one or more ``ProjectName.egg-info``
-    subdirectories.  And egg links are ``*.egg-link`` files that contain the
-    name of a built or development egg, to support symbolic linking on
-    platforms that do not have native symbolic links.
-
-(For more information about these terms and concepts, see also this
-`architectural overview`_ of ``pkg_resources`` and Python Eggs in general.)
-
-.. _architectural overview: http://mail.python.org/pipermail/distutils-sig/2005-June/004652.html
-
-
-.. -----------------
-.. Developer's Guide
-.. -----------------
-
-.. This section isn't written yet.  Currently planned topics include
-    Accessing Resources
-    Finding and Activating Package Distributions
-        get_provider()
-        require()
-        WorkingSet
-        iter_distributions
-    Running Scripts
-    Configuration
-    Namespace Packages
-    Extensible Applications and Frameworks
-        Locating entry points
-        Activation listeners
-        Metadata access
-        Extended Discovery and Installation
-    Supporting Custom PEP 302 Implementations
-.. For now, please check out the extensive `API Reference`_ below.
-
-
--------------
-API Reference
--------------
-
-Namespace Package Support
-=========================
-
-A namespace package is a package that only contains other packages and modules,
-with no direct contents of its own.  Such packages can be split across
-multiple, separately-packaged distributions.  Normally, you do not need to use
-the namespace package APIs directly; instead you should supply the
-``namespace_packages`` argument to ``setup()`` in your project's ``setup.py``.
-See the `setuptools documentation on namespace packages`_ for more information.
-
-However, if for some reason you need to manipulate namespace packages or
-directly alter ``sys.path`` at runtime, you may find these APIs useful:
-
-``declare_namespace(name)``
-    Declare that the dotted package name `name` is a "namespace package" whose
-    contained packages and modules may be spread across multiple distributions.
-    The named package's ``__path__`` will be extended to include the
-    corresponding package in all distributions on ``sys.path`` that contain a
-    package of that name.  (More precisely, if an importer's
-    ``find_module(name)`` returns a loader, then it will also be searched for
-    the package's contents.)  Whenever a Distribution's ``activate()`` method
-    is invoked, it checks for the presence of namespace packages and updates
-    their ``__path__`` contents accordingly.
-
-Applications that manipulate namespace packages or directly alter ``sys.path``
-at runtime may also need to use this API function:
-
-``fixup_namespace_packages(path_item)``
-    Declare that `path_item` is a newly added item on ``sys.path`` that may
-    need to be used to update existing namespace packages.  Ordinarily, this is
-    called for you when an egg is automatically added to ``sys.path``, but if
-    your application modifies ``sys.path`` to include locations that may
-    contain portions of a namespace package, you will need to call this
-    function to ensure they are added to the existing namespace packages.
-
-Although by default ``pkg_resources`` only supports namespace packages for
-filesystem and zip importers, you can extend its support to other "importers"
-compatible with PEP 302 using the ``register_namespace_handler()`` function.
-See the section below on `Supporting Custom Importers`_ for details.
-
-.. _setuptools documentation on namespace packages: http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages
-
-
-``WorkingSet`` Objects
-======================
-
-The ``WorkingSet`` class provides access to a collection of "active"
-distributions.  In general, there is only one meaningful ``WorkingSet``
-instance: the one that represents the distributions that are currently active
-on ``sys.path``.  This global instance is available under the name
-``working_set`` in the ``pkg_resources`` module.  However, specialized
-tools may wish to manipulate working sets that don't correspond to
-``sys.path``, and therefore may wish to create other ``WorkingSet`` instances.
-
-It's important to note that the global ``working_set`` object is initialized
-from ``sys.path`` when ``pkg_resources`` is first imported, but is only updated
-if you do all future ``sys.path`` manipulation via ``pkg_resources`` APIs.  If
-you manually modify ``sys.path``, you must invoke the appropriate methods on
-the ``working_set`` instance to keep it in sync.  Unfortunately, Python does
-not provide any way to detect arbitrary changes to a list object like
-``sys.path``, so ``pkg_resources`` cannot automatically update the
-``working_set`` based on changes to ``sys.path``.
-
-``WorkingSet(entries=None)``
-    Create a ``WorkingSet`` from an iterable of path entries.  If `entries`
-    is not supplied, it defaults to the value of ``sys.path`` at the time
-    the constructor is called.
-
-    Note that you will not normally construct ``WorkingSet`` instances
-    yourself, but instead you will implicitly or explicitly use the global
-    ``working_set`` instance.  For the most part, the ``pkg_resources`` API
-    is designed so that the ``working_set`` is used by default, such that you
-    don't have to explicitly refer to it most of the time.
-
-
-Basic ``WorkingSet`` Methods
-----------------------------
-
-The following methods of ``WorkingSet`` objects are also available as module-
-level functions in ``pkg_resources`` that apply to the default ``working_set``
-instance.  Thus, you can use e.g. ``pkg_resources.require()`` as an
-abbreviation for ``pkg_resources.working_set.require()``:
-
-
-``require(*requirements)``
-    Ensure that distributions matching `requirements` are activated
-
-    `requirements` must be a string or a (possibly-nested) sequence
-    thereof, specifying the distributions and versions required.  The
-    return value is a sequence of the distributions that needed to be
-    activated to fulfill the requirements; all relevant distributions are
-    included, even if they were already activated in this working set.
-
-    For the syntax of requirement specifiers, see the section below on
-    `Requirements Parsing`_.
-
-    In general, it should not be necessary for you to call this method
-    directly.  It's intended more for use in quick-and-dirty scripting and
-    interactive interpreter hacking than for production use. If you're creating
-    an actual library or application, it's strongly recommended that you create
-    a "setup.py" script using ``setuptools``, and declare all your requirements
-    there.  That way, tools like EasyInstall can automatically detect what
-    requirements your package has, and deal with them accordingly.
-
-    Note that calling ``require('SomePackage')`` will not install
-    ``SomePackage`` if it isn't already present.  If you need to do this, you
-    should use the ``resolve()`` method instead, which allows you to pass an
-    ``installer`` callback that will be invoked when a needed distribution
-    can't be found on the local machine.  You can then have this callback
-    display a dialog, automatically download the needed distribution, or
-    whatever else is appropriate for your application. See the documentation
-    below on the ``resolve()`` method for more information, and also on the
-    ``obtain()`` method of ``Environment`` objects.
-
-``run_script(requires, script_name)``
-    Locate distribution specified by `requires` and run its `script_name`
-    script.  `requires` must be a string containing a requirement specifier.
-    (See `Requirements Parsing`_ below for the syntax.)
-
-    The script, if found, will be executed in *the caller's globals*.  That's
-    because this method is intended to be called from wrapper scripts that
-    act as a proxy for the "real" scripts in a distribution.  A wrapper script
-    usually doesn't need to do anything but invoke this function with the
-    correct arguments.
-
-    If you need more control over the script execution environment, you
-    probably want to use the ``run_script()`` method of a ``Distribution``
-    object's `Metadata API`_ instead.
-
-``iter_entry_points(group, name=None)``
-    Yield entry point objects from `group` matching `name`
-
-    If `name` is None, yields all entry points in `group` from all
-    distributions in the working set, otherwise only ones matching both
-    `group` and `name` are yielded.  Entry points are yielded from the active
-    distributions in the order that the distributions appear in the working
-    set.  (For the global ``working_set``, this should be the same as the order
-    that they are listed in ``sys.path``.)  Note that within the entry points
-    advertised by an individual distribution, there is no particular ordering.
-
-    Please see the section below on `Entry Points`_ for more information.
-
-
-``WorkingSet`` Methods and Attributes
--------------------------------------
-
-These methods are used to query or manipulate the contents of a specific
-working set, so they must be explicitly invoked on a particular ``WorkingSet``
-instance:
-
-``add_entry(entry)``
-    Add a path item to the ``entries``, finding any distributions on it.  You
-    should use this when you add additional items to ``sys.path`` and you want
-    the global ``working_set`` to reflect the change.  This method is also
-    called by the ``WorkingSet()`` constructor during initialization.
-
-    This method uses ``find_distributions(entry,True)`` to find distributions
-    corresponding to the path entry, and then ``add()`` them.  `entry` is
-    always appended to the ``entries`` attribute, even if it is already
-    present, however. (This is because ``sys.path`` can contain the same value
-    more than once, and the ``entries`` attribute should be able to reflect
-    this.)
-
-``__contains__(dist)``
-    True if `dist` is active in this ``WorkingSet``.  Note that only one
-    distribution for a given project can be active in a given ``WorkingSet``.
-
-``__iter__()``
-    Yield distributions for non-duplicate projects in the working set.
-    The yield order is the order in which the items' path entries were
-    added to the working set.
-
-``find(req)``
-    Find a distribution matching `req` (a ``Requirement`` instance).
-    If there is an active distribution for the requested project, this
-    returns it, as long as it meets the version requirement specified by
-    `req`.  But, if there is an active distribution for the project and it
-    does *not* meet the `req` requirement, ``VersionConflict`` is raised.
-    If there is no active distribution for the requested project, ``None``
-    is returned.
-
-``resolve(requirements, env=None, installer=None)``
-    List all distributions needed to (recursively) meet `requirements`
-
-    `requirements` must be a sequence of ``Requirement`` objects.  `env`,
-    if supplied, should be an ``Environment`` instance.  If
-    not supplied, an ``Environment`` is created from the working set's
-    ``entries``.  `installer`, if supplied, will be invoked with each
-    requirement that cannot be met by an already-installed distribution; it
-    should return a ``Distribution`` or ``None``.  (See the ``obtain()`` method
-    of `Environment Objects`_, below, for more information on the `installer`
-    argument.)
-
-``add(dist, entry=None)``
-    Add `dist` to working set, associated with `entry`
-
-    If `entry` is unspecified, it defaults to ``dist.location``.  On exit from
-    this routine, `entry` is added to the end of the working set's ``.entries``
-    (if it wasn't already present).
-
-    `dist` is only added to the working set if it's for a project that
-    doesn't already have a distribution active in the set.  If it's
-    successfully added, any  callbacks registered with the ``subscribe()``
-    method will be called.  (See `Receiving Change Notifications`_, below.)
-
-    Note: ``add()`` is automatically called for you by the ``require()``
-    method, so you don't normally need to use this method directly.
-
-``entries``
-    This attribute represents a "shadow" ``sys.path``, primarily useful for
-    debugging.  If you are experiencing import problems, you should check
-    the global ``working_set`` object's ``entries`` against ``sys.path``, to
-    ensure that they match.  If they do not, then some part of your program
-    is manipulating ``sys.path`` without updating the ``working_set``
-    accordingly.  IMPORTANT NOTE: do not directly manipulate this attribute!
-    Setting it equal to ``sys.path`` will not fix your problem, any more than
-    putting black tape over an "engine warning" light will fix your car!  If
-    this attribute is out of sync with ``sys.path``, it's merely an *indicator*
-    of the problem, not the cause of it.
-
-
-Receiving Change Notifications
-------------------------------
-
-Extensible applications and frameworks may need to receive notification when
-a new distribution (such as a plug-in component) has been added to a working
-set.  This is what the ``subscribe()`` method and ``add_activation_listener()``
-function are for.
-
-``subscribe(callback)``
-    Invoke ``callback(distribution)`` once for each active distribution that is
-    in the set now, or gets added later.  Because the callback is invoked for
-    already-active distributions, you do not need to loop over the working set
-    yourself to deal with the existing items; just register the callback and
-    be prepared for the fact that it will be called immediately by this method.
-
-    Note that callbacks *must not* allow exceptions to propagate, or they will
-    interfere with the operation of other callbacks and possibly result in an
-    inconsistent working set state.  Callbacks should use a try/except block
-    to ignore, log, or otherwise process any errors, especially since the code
-    that caused the callback to be invoked is unlikely to be able to handle
-    the errors any better than the callback itself.
-
-``pkg_resources.add_activation_listener()`` is an alternate spelling of
-``pkg_resources.working_set.subscribe()``.
-
-
-Locating Plugins
-----------------
-
-Extensible applications will sometimes have a "plugin directory" or a set of
-plugin directories, from which they want to load entry points or other
-metadata.  The ``find_plugins()`` method allows you to do this, by scanning an
-environment for the newest version of each project that can be safely loaded
-without conflicts or missing requirements.
-
-``find_plugins(plugin_env, full_env=None, fallback=True)``
-   Scan `plugin_env` and identify which distributions could be added to this
-   working set without version conflicts or missing requirements.
-
-   Example usage::
-
-       distributions, errors = working_set.find_plugins(
-           Environment(plugin_dirlist)
-       )
-       map(working_set.add, distributions)  # add plugins+libs to sys.path
-       print "Couldn't load", errors        # display errors
-
-   The `plugin_env` should be an ``Environment`` instance that contains only
-   distributions that are in the project's "plugin directory" or directories.
-   The `full_env`, if supplied, should be an ``Environment`` instance that
-   contains all currently-available distributions.
-
-   If `full_env` is not supplied, one is created automatically from the
-   ``WorkingSet`` this method is called on, which will typically mean that
-   every directory on ``sys.path`` will be scanned for distributions.
-
-   This method returns a 2-tuple: (`distributions`, `error_info`), where
-   `distributions` is a list of the distributions found in `plugin_env` that
-   were loadable, along with any other distributions that are needed to resolve
-   their dependencies.  `error_info` is a dictionary mapping unloadable plugin
-   distributions to an exception instance describing the error that occurred.
-   Usually this will be a ``DistributionNotFound`` or ``VersionConflict``
-   instance.
-
-   Most applications will use this method mainly on the master ``working_set``
-   instance in ``pkg_resources``, and then immediately add the returned
-   distributions to the working set so that they are available on sys.path.
-   This will make it possible to find any entry points, and allow any other
-   metadata tracking and hooks to be activated.
-
-   The resolution algorithm used by ``find_plugins()`` is as follows.  First,
-   the project names of the distributions present in `plugin_env` are sorted.
-   Then, each project's eggs are tried in descending version order (i.e.,
-   newest version first).
-
-   An attempt is made to resolve each egg's dependencies. If the attempt is
-   successful, the egg and its dependencies are added to the output list and to
-   a temporary copy of the working set.  The resolution process continues with
-   the next project name, and no older eggs for that project are tried.
-
-   If the resolution attempt fails, however, the error is added to the error
-   dictionary.  If the `fallback` flag is true, the next older version of the
-   plugin is tried, until a working version is found.  If false, the resolution
-   process continues with the next plugin project name.
-
-   Some applications may have stricter fallback requirements than others. For
-   example, an application that has a database schema or persistent objects
-   may not be able to safely downgrade a version of a package. Others may want
-   to ensure that a new plugin configuration is either 100% good or else
-   revert to a known-good configuration.  (That is, they may wish to revert to
-   a known configuration if the `error_info` return value is non-empty.)
-
-   Note that this algorithm gives precedence to satisfying the dependencies of
-   alphabetically prior project names in case of version conflicts. If two
-   projects named "AaronsPlugin" and "ZekesPlugin" both need different versions
-   of "TomsLibrary", then "AaronsPlugin" will win and "ZekesPlugin" will be
-   disabled due to version conflict.
-
-
-``Environment`` Objects
-=======================
-
-An "environment" is a collection of ``Distribution`` objects, usually ones
-that are present and potentially importable on the current platform.
-``Environment`` objects are used by ``pkg_resources`` to index available
-distributions during dependency resolution.
-
-``Environment(search_path=None, platform=get_supported_platform(), python=PY_MAJOR)``
-    Create an environment snapshot by scanning `search_path` for distributions
-    compatible with `platform` and `python`.  `search_path` should be a
-    sequence of strings such as might be used on ``sys.path``.  If a
-    `search_path` isn't supplied, ``sys.path`` is used.
-
-    `platform` is an optional string specifying the name of the platform
-    that platform-specific distributions must be compatible with.  If
-    unspecified, it defaults to the current platform.  `python` is an
-    optional string naming the desired version of Python (e.g. ``'2.4'``);
-    it defaults to the currently-running version.
-
-    You may explicitly set `platform` (and/or `python`) to ``None`` if you
-    wish to include *all* distributions, not just those compatible with the
-    running platform or Python version.
-
-    Note that `search_path` is scanned immediately for distributions, and the
-    resulting ``Environment`` is a snapshot of the found distributions.  It
-    is not automatically updated if the system's state changes due to e.g.
-    installation or removal of distributions.
-
-``__getitem__(project_name)``
-    Returns a list of distributions for the given project name, ordered
-    from newest to oldest version.  (And highest to lowest format precedence
-    for distributions that contain the same version of the project.)  If there
-    are no distributions for the project, returns an empty list.
-
-``__iter__()``
-    Yield the unique project names of the distributions in this environment.
-    The yielded names are always in lower case.
-
-``add(dist)``
-    Add `dist` to the environment if it matches the platform and python version
-    specified at creation time, and only if the distribution hasn't already
-    been added. (i.e., adding the same distribution more than once is a no-op.)
-
-``remove(dist)``
-    Remove `dist` from the environment.
-
-``can_add(dist)``
-    Is distribution `dist` acceptable for this environment?  If it's not
-    compatible with the ``platform`` and ``python`` version values specified
-    when the environment was created, a false value is returned.
-
-``__add__(dist_or_env)``  (``+`` operator)
-    Add a distribution or environment to an ``Environment`` instance, returning
-    a *new* environment object that contains all the distributions previously
-    contained by both.  The new environment will have a ``platform`` and
-    ``python`` of ``None``, meaning that it will not reject any distributions
-    from being added to it; it will simply accept whatever is added.  If you
-    want the added items to be filtered for platform and Python version, or
-    you want to add them to the *same* environment instance, you should use
-    in-place addition (``+=``) instead.
-
-``__iadd__(dist_or_env)``  (``+=`` operator)
-    Add a distribution or environment to an ``Environment`` instance
-    *in-place*, updating the existing instance and returning it.  The
-    ``platform`` and ``python`` filter attributes take effect, so distributions
-    in the source that do not have a suitable platform string or Python version
-    are silently ignored.
-
-``best_match(req, working_set, installer=None)``
-    Find distribution best matching `req` and usable on `working_set`
-
-    This calls the ``find(req)`` method of the `working_set` to see if a
-    suitable distribution is already active.  (This may raise
-    ``VersionConflict`` if an unsuitable version of the project is already
-    active in the specified `working_set`.)  If a suitable distribution isn't
-    active, this method returns the newest distribution in the environment
-    that meets the ``Requirement`` in `req`.  If no suitable distribution is
-    found, and `installer` is supplied, then the result of calling
-    the environment's ``obtain(req, installer)`` method will be returned.
-
-``obtain(requirement, installer=None)``
-    Obtain a distro that matches requirement (e.g. via download).  In the
-    base ``Environment`` class, this routine just returns
-    ``installer(requirement)``, unless `installer` is None, in which case
-    None is returned instead.  This method is a hook that allows subclasses
-    to attempt other ways of obtaining a distribution before falling back
-    to the `installer` argument.
-
-``scan(search_path=None)``
-    Scan `search_path` for distributions usable on `platform`
-
-    Any distributions found are added to the environment.  `search_path` should
-    be a sequence of strings such as might be used on ``sys.path``.  If not
-    supplied, ``sys.path`` is used.  Only distributions conforming to
-    the platform/python version defined at initialization are added.  This
-    method is a shortcut for using the ``find_distributions()`` function to
-    find the distributions from each item in `search_path`, and then calling
-    ``add()`` to add each one to the environment.
-
-
-``Requirement`` Objects
-=======================
-
-``Requirement`` objects express what versions of a project are suitable for
-some purpose.  These objects (or their string form) are used by various
-``pkg_resources`` APIs in order to find distributions that a script or
-distribution needs.
-
-
-Requirements Parsing
---------------------
-
-``parse_requirements(s)``
-    Yield ``Requirement`` objects for a string or iterable of lines.  Each
-    requirement must start on a new line.  See below for syntax.
-
-``Requirement.parse(s)``
-    Create a ``Requirement`` object from a string or iterable of lines.  A
-    ``ValueError`` is raised if the string or lines do not contain a valid
-    requirement specifier, or if they contain more than one specifier.  (To
-    parse multiple specifiers from a string or iterable of strings, use
-    ``parse_requirements()`` instead.)
-
-    The syntax of a requirement specifier can be defined in EBNF as follows::
-
-        requirement  ::= project_name versionspec? extras?
-        versionspec  ::= comparison version (',' comparison version)*
-        comparison   ::= '<' | '<=' | '!=' | '==' | '>=' | '>'
-        extras       ::= '[' extralist? ']'
-        extralist    ::= identifier (',' identifier)*
-        project_name ::= identifier
-        identifier   ::= [-A-Za-z0-9_]+
-        version      ::= [-A-Za-z0-9_.]+
-
-    Tokens can be separated by whitespace, and a requirement can be continued
-    over multiple lines using a backslash (``\\``).  Line-end comments (using
-    ``#``) are also allowed.
-
-    Some examples of valid requirement specifiers::
-
-        FooProject >= 1.2
-        Fizzy [foo, bar]
-        PickyThing<1.6,>1.9,!=1.9.6,<2.0a0,==2.4c1
-        SomethingWhoseVersionIDontCareAbout
-
-    The project name is the only required portion of a requirement string, and
-    if it's the only thing supplied, the requirement will accept any version
-    of that project.
-
-    The "extras" in a requirement are used to request optional features of a
-    project, that may require additional project distributions in order to
-    function.  For example, if the hypothetical "Report-O-Rama" project offered
-    optional PDF support, it might require an additional library in order to
-    provide that support.  Thus, a project needing Report-O-Rama's PDF features
-    could use a requirement of ``Report-O-Rama[PDF]`` to request installation
-    or activation of both Report-O-Rama and any libraries it needs in order to
-    provide PDF support.  For example, you could use::
-
-        easy_install.py Report-O-Rama[PDF]
-
-    To install the necessary packages using the EasyInstall program, or call
-    ``pkg_resources.require('Report-O-Rama[PDF]')`` to add the necessary
-    distributions to sys.path at runtime.
-
-
-``Requirement`` Methods and Attributes
---------------------------------------
-
-``__contains__(dist_or_version)``
-    Return true if `dist_or_version` fits the criteria for this requirement.
-    If `dist_or_version` is a ``Distribution`` object, its project name must
-    match the requirement's project name, and its version must meet the
-    requirement's version criteria.  If `dist_or_version` is a string, it is
-    parsed using the ``parse_version()`` utility function.  Otherwise, it is
-    assumed to be an already-parsed version.
-
-    The ``Requirement`` object's version specifiers (``.specs``) are internally
-    sorted into ascending version order, and used to establish what ranges of
-    versions are acceptable.  Adjacent redundant conditions are effectively
-    consolidated (e.g. ``">1, >2"`` produces the same results as ``">1"``, and
-    ``"<2,<3"`` produces the same results as``"<3"``). ``"!="`` versions are
-    excised from the ranges they fall within.  The version being tested for
-    acceptability is then checked for membership in the resulting ranges.
-    (Note that providing conflicting conditions for the same version (e.g.
-    ``"<2,>=2"`` or ``"==2,!=2"``) is meaningless and may therefore produce
-    bizarre results when compared with actual version number(s).)
-
-``__eq__(other_requirement)``
-    A requirement compares equal to another requirement if they have
-    case-insensitively equal project names, version specifiers, and "extras".
-    (The order that extras and version specifiers are in is also ignored.)
-    Equal requirements also have equal hashes, so that requirements can be
-    used in sets or as dictionary keys.
-
-``__str__()``
-    The string form of a ``Requirement`` is a string that, if passed to
-    ``Requirement.parse()``, would return an equal ``Requirement`` object.
-
-``project_name``
-    The name of the required project
-
-``key``
-    An all-lowercase version of the ``project_name``, useful for comparison
-    or indexing.
-
-``extras``
-    A tuple of names of "extras" that this requirement calls for.  (These will
-    be all-lowercase and normalized using the ``safe_extra()`` parsing utility
-    function, so they may not exactly equal the extras the requirement was
-    created with.)
-
-``specs``
-    A list of ``(op,version)`` tuples, sorted in ascending parsed-version
-    order.  The `op` in each tuple is a comparison operator, represented as
-    a string.  The `version` is the (unparsed) version number.  The relative
-    order of tuples containing the same version numbers is undefined, since
-    having more than one operator for a given version is either redundant or
-    self-contradictory.
-
-
-Entry Points
-============
-
-Entry points are a simple way for distributions to "advertise" Python objects
-(such as functions or classes) for use by other distributions.  Extensible
-applications and frameworks can search for entry points with a particular name
-or group, either from a specific distribution or from all active distributions
-on sys.path, and then inspect or load the advertised objects at will.
-
-Entry points belong to "groups" which are named with a dotted name similar to
-a Python package or module name.  For example, the ``setuptools`` package uses
-an entry point named ``distutils.commands`` in order to find commands defined
-by distutils extensions.  ``setuptools`` treats the names of entry points
-defined in that group as the acceptable commands for a setup script.
-
-In a similar way, other packages can define their own entry point groups,
-either using dynamic names within the group (like ``distutils.commands``), or
-possibly using predefined names within the group.  For example, a blogging
-framework that offers various pre- or post-publishing hooks might define an
-entry point group and look for entry points named "pre_process" and
-"post_process" within that group.
-
-To advertise an entry point, a project needs to use ``setuptools`` and provide
-an ``entry_points`` argument to ``setup()`` in its setup script, so that the
-entry points will be included in the distribution's metadata.  For more
-details, see the ``setuptools`` documentation.  (XXX link here to setuptools)
-
-Each project distribution can advertise at most one entry point of a given
-name within the same entry point group.  For example, a distutils extension
-could advertise two different ``distutils.commands`` entry points, as long as
-they had different names.  However, there is nothing that prevents *different*
-projects from advertising entry points of the same name in the same group.  In
-some cases, this is a desirable thing, since the application or framework that
-uses the entry points may be calling them as hooks, or in some other way
-combining them.  It is up to the application or framework to decide what to do
-if multiple distributions advertise an entry point; some possibilities include
-using both entry points, displaying an error message, using the first one found
-in sys.path order, etc.
-
-
-Convenience API
----------------
-
-In the following functions, the `dist` argument can be a ``Distribution``
-instance, a ``Requirement`` instance, or a string specifying a requirement
-(i.e. project name, version, etc.).  If the argument is a string or
-``Requirement``, the specified distribution is located (and added to sys.path
-if not already present).  An error will be raised if a matching distribution is
-not available.
-
-The `group` argument should be a string containing a dotted identifier,
-identifying an entry point group.  If you are defining an entry point group,
-you should include some portion of your package's name in the group name so as
-to avoid collision with other packages' entry point groups.
-
-``load_entry_point(dist, group, name)``
-    Load the named entry point from the specified distribution, or raise
-    ``ImportError``.
-
-``get_entry_info(dist, group, name)``
-    Return an ``EntryPoint`` object for the given `group` and `name` from
-    the specified distribution.  Returns ``None`` if the distribution has not
-    advertised a matching entry point.
-
-``get_entry_map(dist, group=None)``
-    Return the distribution's entry point map for `group`, or the full entry
-    map for the distribution.  This function always returns a dictionary,
-    even if the distribution advertises no entry points.  If `group` is given,
-    the dictionary maps entry point names to the corresponding ``EntryPoint``
-    object.  If `group` is None, the dictionary maps group names to
-    dictionaries that then map entry point names to the corresponding
-    ``EntryPoint`` instance in that group.
-
-``iter_entry_points(group, name=None)``
-    Yield entry point objects from `group` matching `name`.
-
-    If `name` is None, yields all entry points in `group` from all
-    distributions in the working set on sys.path, otherwise only ones matching
-    both `group` and `name` are yielded.  Entry points are yielded from
-    the active distributions in the order that the distributions appear on
-    sys.path.  (Within entry points for a particular distribution, however,
-    there is no particular ordering.)
-
-    (This API is actually a method of the global ``working_set`` object; see
-    the section above on `Basic WorkingSet Methods`_ for more information.)
-
-
-Creating and Parsing
---------------------
-
-``EntryPoint(name, module_name, attrs=(), extras=(), dist=None)``
-    Create an ``EntryPoint`` instance.  `name` is the entry point name.  The
-    `module_name` is the (dotted) name of the module containing the advertised
-    object.  `attrs` is an optional tuple of names to look up from the
-    module to obtain the advertised object.  For example, an `attrs` of
-    ``("foo","bar")`` and a `module_name` of ``"baz"`` would mean that the
-    advertised object could be obtained by the following code::
-
-        import baz
-        advertised_object = baz.foo.bar
-
-    The `extras` are an optional tuple of "extra feature" names that the
-    distribution needs in order to provide this entry point.  When the
-    entry point is loaded, these extra features are looked up in the `dist`
-    argument to find out what other distributions may need to be activated
-    on sys.path; see the ``load()`` method for more details.  The `extras`
-    argument is only meaningful if `dist` is specified.  `dist` must be
-    a ``Distribution`` instance.
-
-``EntryPoint.parse(src, dist=None)`` (classmethod)
-    Parse a single entry point from string `src`
-
-    Entry point syntax follows the form::
-
-        name = some.module:some.attr [extra1,extra2]
-
-    The entry name and module name are required, but the ``:attrs`` and
-    ``[extras]`` parts are optional, as is the whitespace shown between
-    some of the items.  The `dist` argument is passed through to the
-    ``EntryPoint()`` constructor, along with the other values parsed from
-    `src`.
-
-``EntryPoint.parse_group(group, lines, dist=None)`` (classmethod)
-    Parse `lines` (a string or sequence of lines) to create a dictionary
-    mapping entry point names to ``EntryPoint`` objects.  ``ValueError`` is
-    raised if entry point names are duplicated, if `group` is not a valid
-    entry point group name, or if there are any syntax errors.  (Note: the
-    `group` parameter is used only for validation and to create more
-    informative error messages.)  If `dist` is provided, it will be used to
-    set the ``dist`` attribute of the created ``EntryPoint`` objects.
-
-``EntryPoint.parse_map(data, dist=None)`` (classmethod)
-    Parse `data` into a dictionary mapping group names to dictionaries mapping
-    entry point names to ``EntryPoint`` objects.  If `data` is a dictionary,
-    then the keys are used as group names and the values are passed to
-    ``parse_group()`` as the `lines` argument.  If `data` is a string or
-    sequence of lines, it is first split into .ini-style sections (using
-    the ``split_sections()`` utility function) and the section names are used
-    as group names.  In either case, the `dist` argument is passed through to
-    ``parse_group()`` so that the entry points will be linked to the specified
-    distribution.
-
-
-``EntryPoint`` Objects
-----------------------
-
-For simple introspection, ``EntryPoint`` objects have attributes that
-correspond exactly to the constructor argument names: ``name``,
-``module_name``, ``attrs``, ``extras``, and ``dist`` are all available.  In
-addition, the following methods are provided:
-
-``load(require=True, env=None, installer=None)``
-    Load the entry point, returning the advertised Python object, or raise
-    ``ImportError`` if it cannot be obtained.  If `require` is a true value,
-    then ``require(env, installer)`` is called before attempting the import.
-
-``require(env=None, installer=None)``
-    Ensure that any "extras" needed by the entry point are available on
-    sys.path.  ``UnknownExtra`` is raised if the ``EntryPoint`` has ``extras``,
-    but no ``dist``, or if the named extras are not defined by the
-    distribution.  If `env` is supplied, it must be an ``Environment``, and it
-    will be used to search for needed distributions if they are not already
-    present on sys.path.  If `installer` is supplied, it must be a callable
-    taking a ``Requirement`` instance and returning a matching importable
-    ``Distribution`` instance or None.
-
-``__str__()``
-    The string form of an ``EntryPoint`` is a string that could be passed to
-    ``EntryPoint.parse()`` to produce an equivalent ``EntryPoint``.
-
-
-``Distribution`` Objects
-========================
-
-``Distribution`` objects represent collections of Python code that may or may
-not be importable, and may or may not have metadata and resources associated
-with them.  Their metadata may include information such as what other projects
-the distribution depends on, what entry points the distribution advertises, and
-so on.
-
-
-Getting or Creating Distributions
----------------------------------
-
-Most commonly, you'll obtain ``Distribution`` objects from a ``WorkingSet`` or
-an ``Environment``.  (See the sections above on `WorkingSet Objects`_ and
-`Environment Objects`_, which are containers for active distributions and
-available distributions, respectively.)  You can also obtain ``Distribution``
-objects from one of these high-level APIs:
-
-``find_distributions(path_item, only=False)``
-    Yield distributions accessible via `path_item`.  If `only` is true, yield
-    only distributions whose ``location`` is equal to `path_item`.  In other
-    words, if `only` is true, this yields any distributions that would be
-    importable if `path_item` were on ``sys.path``.  If `only` is false, this
-    also yields distributions that are "in" or "under" `path_item`, but would
-    not be importable unless their locations were also added to ``sys.path``.
-
-``get_distribution(dist_spec)``
-    Return a ``Distribution`` object for a given ``Requirement`` or string.
-    If `dist_spec` is already a ``Distribution`` instance, it is returned.
-    If it is a ``Requirement`` object or a string that can be parsed into one,
-    it is used to locate and activate a matching distribution, which is then
-    returned.
-
-However, if you're creating specialized tools for working with distributions,
-or creating a new distribution format, you may also need to create
-``Distribution`` objects directly, using one of the three constructors below.
-
-These constructors all take an optional `metadata` argument, which is used to
-access any resources or metadata associated with the distribution.  `metadata`
-must be an object that implements the ``IResourceProvider`` interface, or None.
-If it is None, an ``EmptyProvider`` is used instead.  ``Distribution`` objects
-implement both the `IResourceProvider`_ and `IMetadataProvider Methods`_ by
-delegating them to the `metadata` object.
-
-``Distribution.from_location(location, basename, metadata=None, **kw)`` (classmethod)
-    Create a distribution for `location`, which must be a string such as a
-    URL, filename, or other string that might be used on ``sys.path``.
-    `basename` is a string naming the distribution, like ``Foo-1.2-py2.4.egg``.
-    If `basename` ends with ``.egg``, then the project's name, version, python
-    version and platform are extracted from the filename and used to set those
-    properties of the created distribution.  Any additional keyword arguments
-    are forwarded to the ``Distribution()`` constructor.
-
-``Distribution.from_filename(filename, metadata=None**kw)`` (classmethod)
-    Create a distribution by parsing a local filename.  This is a shorter way
-    of saying  ``Distribution.from_location(normalize_path(filename),
-    os.path.basename(filename), metadata)``.  In other words, it creates a
-    distribution whose location is the normalize form of the filename, parsing
-    name and version information from the base portion of the filename.  Any
-    additional keyword arguments are forwarded to the ``Distribution()``
-    constructor.
-
-``Distribution(location,metadata,project_name,version,py_version,platform,precedence)``
-    Create a distribution by setting its properties.  All arguments are
-    optional and default to None, except for `py_version` (which defaults to
-    the current Python version) and `precedence` (which defaults to
-    ``EGG_DIST``; for more details see ``precedence`` under `Distribution
-    Attributes`_ below).  Note that it's usually easier to use the
-    ``from_filename()`` or ``from_location()`` constructors than to specify
-    all these arguments individually.
-
-
-``Distribution`` Attributes
----------------------------
-
-location
-    A string indicating the distribution's location.  For an importable
-    distribution, this is the string that would be added to ``sys.path`` to
-    make it actively importable.  For non-importable distributions, this is
-    simply a filename, URL, or other way of locating the distribution.
-
-project_name
-    A string, naming the project that this distribution is for.  Project names
-    are defined by a project's setup script, and they are used to identify
-    projects on PyPI.  When a ``Distribution`` is constructed, the
-    `project_name` argument is passed through the ``safe_name()`` utility
-    function to filter out any unacceptable characters.
-
-key
-    ``dist.key`` is short for ``dist.project_name.lower()``.  It's used for
-    case-insensitive comparison and indexing of distributions by project name.
-
-extras
-    A list of strings, giving the names of extra features defined by the
-    project's dependency list (the ``extras_require`` argument specified in
-    the project's setup script).
-
-version
-    A string denoting what release of the project this distribution contains.
-    When a ``Distribution`` is constructed, the `version` argument is passed
-    through the ``safe_version()`` utility function to filter out any
-    unacceptable characters.  If no `version` is specified at construction
-    time, then attempting to access this attribute later will cause the
-    ``Distribution`` to try to discover its version by reading its ``PKG-INFO``
-    metadata file.  If ``PKG-INFO`` is unavailable or can't be parsed,
-    ``ValueError`` is raised.
-
-parsed_version
-    The ``parsed_version`` is a tuple representing a "parsed" form of the
-    distribution's ``version``.  ``dist.parsed_version`` is a shortcut for
-    calling ``parse_version(dist.version)``.  It is used to compare or sort
-    distributions by version.  (See the `Parsing Utilities`_ section below for
-    more information on the ``parse_version()`` function.)  Note that accessing
-    ``parsed_version`` may result in a ``ValueError`` if the ``Distribution``
-    was constructed without a `version` and without `metadata` capable of
-    supplying the missing version info.
-
-py_version
-    The major/minor Python version the distribution supports, as a string.
-    For example, "2.3" or "2.4".  The default is the current version of Python.
-
-platform
-    A string representing the platform the distribution is intended for, or
-    ``None`` if the distribution is "pure Python" and therefore cross-platform.
-    See `Platform Utilities`_ below for more information on platform strings.
-
-precedence
-    A distribution's ``precedence`` is used to determine the relative order of
-    two distributions that have the same ``project_name`` and
-    ``parsed_version``.  The default precedence is ``pkg_resources.EGG_DIST``,
-    which is the highest (i.e. most preferred) precedence.  The full list
-    of predefined precedences, from most preferred to least preferred, is:
-    ``EGG_DIST``, ``BINARY_DIST``, ``SOURCE_DIST``, ``CHECKOUT_DIST``, and
-    ``DEVELOP_DIST``.  Normally, precedences other than ``EGG_DIST`` are used
-    only by the ``setuptools.package_index`` module, when sorting distributions
-    found in a package index to determine their suitability for installation.
-    "System" and "Development" eggs (i.e., ones that use the ``.egg-info``
-    format), however, are automatically given a precedence of ``DEVELOP_DIST``.
-
-
-
-``Distribution`` Methods
-------------------------
-
-``activate(path=None)``
-    Ensure distribution is importable on `path`.  If `path` is None,
-    ``sys.path`` is used instead.  This ensures that the distribution's
-    ``location`` is in the `path` list, and it also performs any necessary
-    namespace package fixups or declarations.  (That is, if the distribution
-    contains namespace packages, this method ensures that they are declared,
-    and that the distribution's contents for those namespace packages are
-    merged with the contents provided by any other active distributions.  See
-    the section above on `Namespace Package Support`_ for more information.)
-
-    ``pkg_resources`` adds a notification callback to the global ``working_set``
-    that ensures this method is called whenever a distribution is added to it.
-    Therefore, you should not normally need to explicitly call this method.
-    (Note that this means that namespace packages on ``sys.path`` are always
-    imported as soon as ``pkg_resources`` is, which is another reason why
-    namespace packages should not contain any code or import statements.)
-
-``as_requirement()``
-    Return a ``Requirement`` instance that matches this distribution's project
-    name and version.
-
-``requires(extras=())``
-    List the ``Requirement`` objects that specify this distribution's
-    dependencies.  If `extras` is specified, it should be a sequence of names
-    of "extras" defined by the distribution, and the list returned will then
-    include any dependencies needed to support the named "extras".
-
-``clone(**kw)``
-    Create a copy of the distribution.  Any supplied keyword arguments override
-    the corresponding argument to the ``Distribution()`` constructor, allowing
-    you to change some of the copied distribution's attributes.
-
-``egg_name()``
-    Return what this distribution's standard filename should be, not including
-    the ".egg" extension.  For example, a distribution for project "Foo"
-    version 1.2 that runs on Python 2.3 for Windows would have an ``egg_name()``
-    of ``Foo-1.2-py2.3-win32``.  Any dashes in the name or version are
-    converted to underscores.  (``Distribution.from_location()`` will convert
-    them back when parsing a ".egg" file name.)
-
-``__cmp__(other)``, ``__hash__()``
-    Distribution objects are hashed and compared on the basis of their parsed
-    version and precedence, followed by their key (lowercase project name),
-    location, Python version, and platform.
-
-The following methods are used to access ``EntryPoint`` objects advertised
-by the distribution.  See the section above on `Entry Points`_ for more
-detailed information about these operations:
-
-``get_entry_info(group, name)``
-    Return the ``EntryPoint`` object for `group` and `name`, or None if no
-    such point is advertised by this distribution.
-
-``get_entry_map(group=None)``
-    Return the entry point map for `group`.  If `group` is None, return
-    a dictionary mapping group names to entry point maps for all groups.
-    (An entry point map is a dictionary of entry point names to ``EntryPoint``
-    objects.)
-
-``load_entry_point(group, name)``
-    Short for ``get_entry_info(group, name).load()``.  Returns the object
-    advertised by the named entry point, or raises ``ImportError`` if
-    the entry point isn't advertised by this distribution, or there is some
-    other import problem.
-
-In addition to the above methods, ``Distribution`` objects also implement all
-of the `IResourceProvider`_ and `IMetadataProvider Methods`_ (which are
-documented in later sections):
-
-* ``has_metadata(name)``
-* ``metadata_isdir(name)``
-* ``metadata_listdir(name)``
-* ``get_metadata(name)``
-* ``get_metadata_lines(name)``
-* ``run_script(script_name, namespace)``
-* ``get_resource_filename(manager, resource_name)``
-* ``get_resource_stream(manager, resource_name)``
-* ``get_resource_string(manager, resource_name)``
-* ``has_resource(resource_name)``
-* ``resource_isdir(resource_name)``
-* ``resource_listdir(resource_name)``
-
-If the distribution was created with a `metadata` argument, these resource and
-metadata access methods are all delegated to that `metadata` provider.
-Otherwise, they are delegated to an ``EmptyProvider``, so that the distribution
-will appear to have no resources or metadata.  This delegation approach is used
-so that supporting custom importers or new distribution formats can be done
-simply by creating an appropriate `IResourceProvider`_ implementation; see the
-section below on `Supporting Custom Importers`_ for more details.
-
-
-``ResourceManager`` API
-=======================
-
-The ``ResourceManager`` class provides uniform access to package resources,
-whether those resources exist as files and directories or are compressed in
-an archive of some kind.
-
-Normally, you do not need to create or explicitly manage ``ResourceManager``
-instances, as the ``pkg_resources`` module creates a global instance for you,
-and makes most of its methods available as top-level names in the
-``pkg_resources`` module namespace.  So, for example, this code actually
-calls the ``resource_string()`` method of the global ``ResourceManager``::
-
-    import pkg_resources
-    my_data = pkg_resources.resource_string(__name__, "foo.dat")
-
-Thus, you can use the APIs below without needing an explicit
-``ResourceManager`` instance; just import and use them as needed.
-
-
-Basic Resource Access
----------------------
-
-In the following methods, the `package_or_requirement` argument may be either
-a Python package/module name (e.g. ``foo.bar``) or a ``Requirement`` instance.
-If it is a package or module name, the named module or package must be
-importable (i.e., be in a distribution or directory on ``sys.path``), and the
-`resource_name` argument is interpreted relative to the named package.  (Note
-that if a module name is used, then the resource name is relative to the
-package immediately containing the named module.  Also, you should not use use
-a namespace package name, because a namespace package can be spread across
-multiple distributions, and is therefore ambiguous as to which distribution
-should be searched for the resource.)
-
-If it is a ``Requirement``, then the requirement is automatically resolved
-(searching the current ``Environment`` if necessary) and a matching
-distribution is added to the ``WorkingSet`` and ``sys.path`` if one was not
-already present.  (Unless the ``Requirement`` can't be satisfied, in which
-case an exception is raised.)  The `resource_name` argument is then interpreted
-relative to the root of the identified distribution; i.e. its first path
-segment will be treated as a peer of the top-level modules or packages in the
-distribution.
-
-Note that resource names must be ``/``-separated paths and cannot be absolute
-(i.e. no leading ``/``) or contain relative names like ``".."``.  Do *not* use
-``os.path`` routines to manipulate resource paths, as they are *not* filesystem
-paths.
-
-``resource_exists(package_or_requirement, resource_name)``
-    Does the named resource exist?  Return ``True`` or ``False`` accordingly.
-
-``resource_stream(package_or_requirement, resource_name)``
-    Return a readable file-like object for the specified resource; it may be
-    an actual file, a ``StringIO``, or some similar object.  The stream is
-    in "binary mode", in the sense that whatever bytes are in the resource
-    will be read as-is.
-
-``resource_string(package_or_requirement, resource_name)``
-    Return the specified resource as a string.  The resource is read in
-    binary fashion, such that the returned string contains exactly the bytes
-    that are stored in the resource.
-
-``resource_isdir(package_or_requirement, resource_name)``
-    Is the named resource a directory?  Return ``True`` or ``False``
-    accordingly.
-
-``resource_listdir(package_or_requirement, resource_name)``
-    List the contents of the named resource directory, just like ``os.listdir``
-    except that it works even if the resource is in a zipfile.
-
-Note that only ``resource_exists()`` and ``resource_isdir()`` are insensitive
-as to the resource type.  You cannot use ``resource_listdir()`` on a file
-resource, and you can't use ``resource_string()`` or ``resource_stream()`` on
-directory resources.  Using an inappropriate method for the resource type may
-result in an exception or undefined behavior, depending on the platform and
-distribution format involved.
-
-
-Resource Extraction
--------------------
-
-``resource_filename(package_or_requirement, resource_name)``
-    Sometimes, it is not sufficient to access a resource in string or stream
-    form, and a true filesystem filename is needed.  In such cases, you can
-    use this method (or module-level function) to obtain a filename for a
-    resource.  If the resource is in an archive distribution (such as a zipped
-    egg), it will be extracted to a cache directory, and the filename within
-    the cache will be returned.  If the named resource is a directory, then
-    all resources within that directory (including subdirectories) are also
-    extracted.  If the named resource is a C extension or "eager resource"
-    (see the ``setuptools`` documentation for details), then all C extensions
-    and eager resources are extracted at the same time.
-
-    Archived resources are extracted to a cache location that can be managed by
-    the following two methods:
-
-``set_extraction_path(path)``
-    Set the base path where resources will be extracted to, if needed.
-
-    If you do not call this routine before any extractions take place, the
-    path defaults to the return value of ``get_default_cache()``.  (Which is
-    based on the ``PYTHON_EGG_CACHE`` environment variable, with various
-    platform-specific fallbacks.  See that routine's documentation for more
-    details.)
-
-    Resources are extracted to subdirectories of this path based upon
-    information given by the resource provider.  You may set this to a
-    temporary directory, but then you must call ``cleanup_resources()`` to
-    delete the extracted files when done.  There is no guarantee that
-    ``cleanup_resources()`` will be able to remove all extracted files.  (On
-    Windows, for example, you can't unlink .pyd or .dll files that are still
-    in use.)
-
-    Note that you may not change the extraction path for a given resource
-    manager once resources have been extracted, unless you first call
-    ``cleanup_resources()``.
-
-``cleanup_resources(force=False)``
-    Delete all extracted resource files and directories, returning a list
-    of the file and directory names that could not be successfully removed.
-    This function does not have any concurrency protection, so it should
-    generally only be called when the extraction path is a temporary
-    directory exclusive to a single process.  This method is not
-    automatically called; you must call it explicitly or register it as an
-    ``atexit`` function if you wish to ensure cleanup of a temporary
-    directory used for extractions.
-
-
-"Provider" Interface
---------------------
-
-If you are implementing an ``IResourceProvider`` and/or ``IMetadataProvider``
-for a new distribution archive format, you may need to use the following
-``IResourceManager`` methods to co-ordinate extraction of resources to the
-filesystem.  If you're not implementing an archive format, however, you have
-no need to use these methods.  Unlike the other methods listed above, they are
-*not* available as top-level functions tied to the global ``ResourceManager``;
-you must therefore have an explicit ``ResourceManager`` instance to use them.
-
-``get_cache_path(archive_name, names=())``
-    Return absolute location in cache for `archive_name` and `names`
-
-    The parent directory of the resulting path will be created if it does
-    not already exist.  `archive_name` should be the base filename of the
-    enclosing egg (which may not be the name of the enclosing zipfile!),
-    including its ".egg" extension.  `names`, if provided, should be a
-    sequence of path name parts "under" the egg's extraction location.
-
-    This method should only be called by resource providers that need to
-    obtain an extraction location, and only for names they intend to
-    extract, as it tracks the generated names for possible cleanup later.
-
-``extraction_error()``
-    Raise an ``ExtractionError`` describing the active exception as interfering
-    with the extraction process.  You should call this if you encounter any
-    OS errors extracting the file to the cache path; it will format the
-    operating system exception for you, and add other information to the
-    ``ExtractionError`` instance that may be needed by programs that want to
-    wrap or handle extraction errors themselves.
-
-``postprocess(tempname, filename)``
-    Perform any platform-specific postprocessing of `tempname`.
-    Resource providers should call this method ONLY after successfully
-    extracting a compressed resource.  They must NOT call it on resources
-    that are already in the filesystem.
-
-    `tempname` is the current (temporary) name of the file, and `filename`
-    is the name it will be renamed to by the caller after this routine
-    returns.
-
-
-Metadata API
-============
-
-The metadata API is used to access metadata resources bundled in a pluggable
-distribution.  Metadata resources are virtual files or directories containing
-information about the distribution, such as might be used by an extensible
-application or framework to connect "plugins".  Like other kinds of resources,
-metadata resource names are ``/``-separated and should not contain ``..`` or
-begin with a ``/``.  You should not use ``os.path`` routines to manipulate
-resource paths.
-
-The metadata API is provided by objects implementing the ``IMetadataProvider``
-or ``IResourceProvider`` interfaces.  ``Distribution`` objects implement this
-interface, as do objects returned by the ``get_provider()`` function:
-
-``get_provider(package_or_requirement)``
-    If a package name is supplied, return an ``IResourceProvider`` for the
-    package.  If a ``Requirement`` is supplied, resolve it by returning a
-    ``Distribution`` from the current working set (searching the current
-    ``Environment`` if necessary and adding the newly found ``Distribution``
-    to the working set).  If the named package can't be imported, or the
-    ``Requirement`` can't be satisfied, an exception is raised.
-
-    NOTE: if you use a package name rather than a ``Requirement``, the object
-    you get back may not be a pluggable distribution, depending on the method
-    by which the package was installed.  In particular, "development" packages
-    and "single-version externally-managed" packages do not have any way to
-    map from a package name to the corresponding project's metadata.  Do not
-    write code that passes a package name to ``get_provider()`` and then tries
-    to retrieve project metadata from the returned object.  It may appear to
-    work when the named package is in an ``.egg`` file or directory, but
-    it will fail in other installation scenarios.  If you want project
-    metadata, you need to ask for a *project*, not a package.
-
-
-``IMetadataProvider`` Methods
------------------------------
-
-The methods provided by objects (such as ``Distribution`` instances) that
-implement the ``IMetadataProvider`` or ``IResourceProvider`` interfaces are:
-
-``has_metadata(name)``
-    Does the named metadata resource exist?
-
-``metadata_isdir(name)``
-    Is the named metadata resource a directory?
-
-``metadata_listdir(name)``
-    List of metadata names in the directory (like ``os.listdir()``)
-
-``get_metadata(name)``
-    Return the named metadata resource as a string.  The data is read in binary
-    mode; i.e., the exact bytes of the resource file are returned.
-
-``get_metadata_lines(name)``
-    Yield named metadata resource as list of non-blank non-comment lines.  This
-    is short for calling ``yield_lines(provider.get_metadata(name))``.  See the
-    section on `yield_lines()`_ below for more information on the syntax it
-    recognizes.
-
-``run_script(script_name, namespace)``
-    Execute the named script in the supplied namespace dictionary.  Raises
-    ``ResolutionError`` if there is no script by that name in the ``scripts``
-    metadata directory.  `namespace` should be a Python dictionary, usually
-    a module dictionary if the script is being run as a module.
-
-
-Exceptions
-==========
-
-``pkg_resources`` provides a simple exception hierarchy for problems that may
-occur when processing requests to locate and activate packages::
-
-    ResolutionError
-        DistributionNotFound
-        VersionConflict
-        UnknownExtra
-
-    ExtractionError
-
-``ResolutionError``
-    This class is used as a base class for the other three exceptions, so that
-    you can catch all of them with a single "except" clause.  It is also raised
-    directly for miscellaneous requirement-resolution problems like trying to
-    run a script that doesn't exist in the distribution it was requested from.
-
-``DistributionNotFound``
-    A distribution needed to fulfill a requirement could not be found.
-
-``VersionConflict``
-    The requested version of a project conflicts with an already-activated
-    version of the same project.
-
-``UnknownExtra``
-    One of the "extras" requested was not recognized by the distribution it
-    was requested from.
-
-``ExtractionError``
-    A problem occurred extracting a resource to the Python Egg cache.  The
-    following attributes are available on instances of this exception:
-
-    manager
-        The resource manager that raised this exception
-
-    cache_path
-        The base directory for resource extraction
-
-    original_error
-        The exception instance that caused extraction to fail
-
-
-Supporting Custom Importers
-===========================
-
-By default, ``pkg_resources`` supports normal filesystem imports, and
-``zipimport`` importers.  If you wish to use the ``pkg_resources`` features
-with other (PEP 302-compatible) importers or module loaders, you may need to
-register various handlers and support functions using these APIs:
-
-``register_finder(importer_type, distribution_finder)``
-    Register `distribution_finder` to find distributions in ``sys.path`` items.
-    `importer_type` is the type or class of a PEP 302 "Importer" (``sys.path``
-    item handler), and `distribution_finder` is a callable that, when passed a
-    path item, the importer instance, and an `only` flag, yields
-    ``Distribution`` instances found under that path item.  (The `only` flag,
-    if true, means the finder should yield only ``Distribution`` objects whose
-    ``location`` is equal to the path item provided.)
-
-    See the source of the ``pkg_resources.find_on_path`` function for an
-    example finder function.
-
-``register_loader_type(loader_type, provider_factory)``
-    Register `provider_factory` to make ``IResourceProvider`` objects for
-    `loader_type`.  `loader_type` is the type or class of a PEP 302
-    ``module.__loader__``, and `provider_factory` is a function that, when
-    passed a module object, returns an `IResourceProvider`_ for that module,
-    allowing it to be used with the `ResourceManager API`_.
-
-``register_namespace_handler(importer_type, namespace_handler)``
-    Register `namespace_handler` to declare namespace packages for the given
-    `importer_type`.  `importer_type` is the type or class of a PEP 302
-    "importer" (sys.path item handler), and `namespace_handler` is a callable
-    with a signature like this::
-
-        def namespace_handler(importer, path_entry, moduleName, module):
-            # return a path_entry to use for child packages
-
-    Namespace handlers are only called if the relevant importer object has
-    already agreed that it can handle the relevant path item.  The handler
-    should only return a subpath if the module ``__path__`` does not already
-    contain an equivalent subpath.  Otherwise, it should return None.
-
-    For an example namespace handler, see the source of the
-    ``pkg_resources.file_ns_handler`` function, which is used for both zipfile
-    importing and regular importing.
-
-
-IResourceProvider
------------------
-
-``IResourceProvider`` is an abstract class that documents what methods are
-required of objects returned by a `provider_factory` registered with
-``register_loader_type()``.  ``IResourceProvider`` is a subclass of
-``IMetadataProvider``, so objects that implement this interface must also
-implement all of the `IMetadataProvider Methods`_ as well as the methods
-shown here.  The `manager` argument to the methods below must be an object
-that supports the full `ResourceManager API`_ documented above.
-
-``get_resource_filename(manager, resource_name)``
-    Return a true filesystem path for `resource_name`, co-ordinating the
-    extraction with `manager`, if the resource must be unpacked to the
-    filesystem.
-
-``get_resource_stream(manager, resource_name)``
-    Return a readable file-like object for `resource_name`.
-
-``get_resource_string(manager, resource_name)``
-    Return a string containing the contents of `resource_name`.
-
-``has_resource(resource_name)``
-    Does the package contain the named resource?
-
-``resource_isdir(resource_name)``
-    Is the named resource a directory?  Return a false value if the resource
-    does not exist or is not a directory.
-
-``resource_listdir(resource_name)``
-    Return a list of the contents of the resource directory, ala
-    ``os.listdir()``.  Requesting the contents of a non-existent directory may
-    raise an exception.
-
-Note, by the way, that your provider classes need not (and should not) subclass
-``IResourceProvider`` or ``IMetadataProvider``!  These classes exist solely
-for documentation purposes and do not provide any useful implementation code.
-You may instead wish to subclass one of the `built-in resource providers`_.
-
-
-Built-in Resource Providers
----------------------------
-
-``pkg_resources`` includes several provider classes that are automatically used
-where appropriate.  Their inheritance tree looks like this::
-
-    NullProvider
-        EggProvider
-            DefaultProvider
-                PathMetadata
-            ZipProvider
-                EggMetadata
-        EmptyProvider
-            FileMetadata
-
-
-``NullProvider``
-    This provider class is just an abstract base that provides for common
-    provider behaviors (such as running scripts), given a definition for just
-    a few abstract methods.
-
-``EggProvider``
-    This provider class adds in some egg-specific features that are common
-    to zipped and unzipped eggs.
-
-``DefaultProvider``
-    This provider class is used for unpacked eggs and "plain old Python"
-    filesystem modules.
-
-``ZipProvider``
-    This provider class is used for all zipped modules, whether they are eggs
-    or not.
-
-``EmptyProvider``
-    This provider class always returns answers consistent with a provider that
-    has no metadata or resources.  ``Distribution`` objects created without
-    a ``metadata`` argument use an instance of this provider class instead.
-    Since all ``EmptyProvider`` instances are equivalent, there is no need
-    to have more than one instance.  ``pkg_resources`` therefore creates a
-    global instance of this class under the name ``empty_provider``, and you
-    may use it if you have need of an ``EmptyProvider`` instance.
-
-``PathMetadata(path, egg_info)``
-    Create an ``IResourceProvider`` for a filesystem-based distribution, where
-    `path` is the filesystem location of the importable modules, and `egg_info`
-    is the filesystem location of the distribution's metadata directory.
-    `egg_info` should usually be the ``EGG-INFO`` subdirectory of `path` for an
-    "unpacked egg", and a ``ProjectName.egg-info`` subdirectory of `path` for
-    a "development egg".  However, other uses are possible for custom purposes.
-
-``EggMetadata(zipimporter)``
-    Create an ``IResourceProvider`` for a zipfile-based distribution.  The
-    `zipimporter` should be a ``zipimport.zipimporter`` instance, and may
-    represent a "basket" (a zipfile containing multiple ".egg" subdirectories)
-    a specific egg *within* a basket, or a zipfile egg (where the zipfile
-    itself is a ".egg").  It can also be a combination, such as a zipfile egg
-    that also contains other eggs.
-
-``FileMetadata(path_to_pkg_info)``
-    Create an ``IResourceProvider`` that provides exactly one metadata
-    resource: ``PKG-INFO``.  The supplied path should be a distutils PKG-INFO
-    file.  This is basically the same as an ``EmptyProvider``, except that
-    requests for ``PKG-INFO`` will be answered using the contents of the
-    designated file.  (This provider is used to wrap ``.egg-info`` files
-    installed by vendor-supplied system packages.)
-
-
-Utility Functions
-=================
-
-In addition to its high-level APIs, ``pkg_resources`` also includes several
-generally-useful utility routines.  These routines are used to implement the
-high-level APIs, but can also be quite useful by themselves.
-
-
-Parsing Utilities
------------------
-
-``parse_version(version)``
-    Parse a project's version string, returning a value that can be used to
-    compare versions by chronological order.  Semantically, the format is a
-    rough cross between distutils' ``StrictVersion`` and ``LooseVersion``
-    classes; if you give it versions that would work with ``StrictVersion``,
-    then they will compare the same way.  Otherwise, comparisons are more like
-    a "smarter" form of ``LooseVersion``.  It is *possible* to create
-    pathological version coding schemes that will fool this parser, but they
-    should be very rare in practice.
-
-    The returned value will be a tuple of strings.  Numeric portions of the
-    version are padded to 8 digits so they will compare numerically, but
-    without relying on how numbers compare relative to strings.  Dots are
-    dropped, but dashes are retained.  Trailing zeros between alpha segments
-    or dashes are suppressed, so that e.g. "2.4.0" is considered the same as
-    "2.4". Alphanumeric parts are lower-cased.
-
-    The algorithm assumes that strings like "-" and any alpha string that
-    alphabetically follows "final"  represents a "patch level".  So, "2.4-1"
-    is assumed to be a branch or patch of "2.4", and therefore "2.4.1" is
-    considered newer than "2.4-1", which in turn is newer than "2.4".
-
-    Strings like "a", "b", "c", "alpha", "beta", "candidate" and so on (that
-    come before "final" alphabetically) are assumed to be pre-release versions,
-    so that the version "2.4" is considered newer than "2.4a1".  Any "-"
-    characters preceding a pre-release indicator are removed.  (In versions of
-    setuptools prior to 0.6a9, "-" characters were not removed, leading to the
-    unintuitive result that "0.2-rc1" was considered a newer version than
-    "0.2".)
-
-    Finally, to handle miscellaneous cases, the strings "pre", "preview", and
-    "rc" are treated as if they were "c", i.e. as though they were release
-    candidates, and therefore are not as new as a version string that does not
-    contain them.  And the string "dev" is treated as if it were an "@" sign;
-    that is, a version coming before even "a" or "alpha".
-
-.. _yield_lines():
-
-``yield_lines(strs)``
-    Yield non-empty/non-comment lines from a string/unicode or a possibly-
-    nested sequence thereof.  If `strs` is an instance of ``basestring``, it
-    is split into lines, and each non-blank, non-comment line is yielded after
-    stripping leading and trailing whitespace.  (Lines whose first non-blank
-    character is ``#`` are considered comment lines.)
-
-    If `strs` is not an instance of ``basestring``, it is iterated over, and
-    each item is passed recursively to ``yield_lines()``, so that an arbitarily
-    nested sequence of strings, or sequences of sequences of strings can be
-    flattened out to the lines contained therein.  So for example, passing
-    a file object or a list of strings to ``yield_lines`` will both work.
-    (Note that between each string in a sequence of strings there is assumed to
-    be an implicit line break, so lines cannot bridge two strings in a
-    sequence.)
-
-    This routine is used extensively by ``pkg_resources`` to parse metadata
-    and file formats of various kinds, and most other ``pkg_resources``
-    parsing functions that yield multiple values will use it to break up their
-    input.  However, this routine is idempotent, so calling ``yield_lines()``
-    on the output of another call to ``yield_lines()`` is completely harmless.
-
-``split_sections(strs)``
-    Split a string (or possibly-nested iterable thereof), yielding ``(section,
-    content)`` pairs found using an ``.ini``-like syntax.  Each ``section`` is
-    a whitespace-stripped version of the section name ("``[section]``")
-    and each ``content`` is a list of stripped lines excluding blank lines and
-    comment-only lines.  If there are any non-blank, non-comment lines before
-    the first section header, they're yielded in a first ``section`` of
-    ``None``.
-
-    This routine uses ``yield_lines()`` as its front end, so you can pass in
-    anything that ``yield_lines()`` accepts, such as an open text file, string,
-    or sequence of strings.  ``ValueError`` is raised if a malformed section
-    header is found (i.e. a line starting with ``[`` but not ending with
-    ``]``).
-
-    Note that this simplistic parser assumes that any line whose first nonblank
-    character is ``[`` is a section heading, so it can't support .ini format
-    variations that allow ``[`` as the first nonblank character on other lines.
-
-``safe_name(name)``
-    Return a "safe" form of a project's name, suitable for use in a
-    ``Requirement`` string, as a distribution name, or a PyPI project name.
-    All non-alphanumeric runs are condensed to single "-" characters, such that
-    a name like "The $$$ Tree" becomes "The-Tree".  Note that if you are
-    generating a filename from this value you should combine it with a call to
-    ``to_filename()`` so all dashes ("-") are replaced by underscores ("_").
-    See ``to_filename()``.
-
-``safe_version(version)``
-    Similar to ``safe_name()`` except that spaces in the input become dots, and
-    dots are allowed to exist in the output.  As with ``safe_name()``, if you
-    are generating a filename from this you should replace any "-" characters
-    in the output with underscores.
-
-``safe_extra(extra)``
-    Return a "safe" form of an extra's name, suitable for use in a requirement
-    string or a setup script's ``extras_require`` keyword.  This routine is
-    similar to ``safe_name()`` except that non-alphanumeric runs are replaced
-    by a single underbar (``_``), and the result is lowercased.
-
-``to_filename(name_or_version)``
-    Escape a name or version string so it can be used in a dash-separated
-    filename (or ``#egg=name-version`` tag) without ambiguity.  You
-    should only pass in values that were returned by ``safe_name()`` or
-    ``safe_version()``.
-
-
-Platform Utilities
-------------------
-
-``get_build_platform()``
-    Return this platform's identifier string.  For Windows, the return value
-    is ``"win32"``, and for Mac OS X it is a string of the form
-    ``"macosx-10.4-ppc"``.  All other platforms return the same uname-based
-    string that the ``distutils.util.get_platform()`` function returns.
-    This string is the minimum platform version required by distributions built
-    on the local machine.  (Backward compatibility note: setuptools versions
-    prior to 0.6b1 called this function ``get_platform()``, and the function is
-    still available under that name for backward compatibility reasons.)
-
-``get_supported_platform()`` (New in 0.6b1)
-    This is the similar to ``get_build_platform()``, but is the maximum
-    platform version that the local machine supports.  You will usually want
-    to use this value as the ``provided`` argument to the
-    ``compatible_platforms()`` function.
-
-``compatible_platforms(provided, required)``
-    Return true if a distribution built on the `provided` platform may be used
-    on the `required` platform.  If either platform value is ``None``, it is
-    considered a wildcard, and the platforms are therefore compatible.
-    Likewise, if the platform strings are equal, they're also considered
-    compatible, and ``True`` is returned.  Currently, the only non-equal
-    platform strings that are considered compatible are Mac OS X platform
-    strings with the same hardware type (e.g. ``ppc``) and major version
-    (e.g. ``10``) with the `provided` platform's minor version being less than
-    or equal to the `required` platform's minor version.
-
-``get_default_cache()``
-    Determine the default cache location for extracting resources from zipped
-    eggs.  This routine returns the ``PYTHON_EGG_CACHE`` environment variable,
-    if set.  Otherwise, on Windows, it returns a "Python-Eggs" subdirectory of
-    the user's "Application Data" directory.  On all other systems, it returns
-    ``os.path.expanduser("~/.python-eggs")`` if ``PYTHON_EGG_CACHE`` is not
-    set.
-
-
-PEP 302 Utilities
------------------
-
-``get_importer(path_item)``
-    Retrieve a PEP 302 "importer" for the given path item (which need not
-    actually be on ``sys.path``).  This routine simulates the PEP 302 protocol
-    for obtaining an "importer" object.  It first checks for an importer for
-    the path item in ``sys.path_importer_cache``, and if not found it calls
-    each of the ``sys.path_hooks`` and caches the result if a good importer is
-    found.  If no importer is found, this routine returns an ``ImpWrapper``
-    instance that wraps the builtin import machinery as a PEP 302-compliant
-    "importer" object.  This ``ImpWrapper`` is *not* cached; instead a new
-    instance is returned each time.
-
-    (Note: When run under Python 2.5, this function is simply an alias for
-    ``pkgutil.get_importer()``, and instead of ``pkg_resources.ImpWrapper``
-    instances, it may return ``pkgutil.ImpImporter`` instances.)
-
-
-File/Path Utilities
--------------------
-
-``ensure_directory(path)``
-    Ensure that the parent directory (``os.path.dirname``) of `path` actually
-    exists, using ``os.makedirs()`` if necessary.
-
-``normalize_path(path)``
-    Return a "normalized" version of `path`, such that two paths represent
-    the same filesystem location if they have equal ``normalized_path()``
-    values.  Specifically, this is a shortcut for calling ``os.path.realpath``
-    and ``os.path.normcase`` on `path`.  Unfortunately, on certain platforms
-    (notably Cygwin and Mac OS X) the ``normcase`` function does not accurately
-    reflect the platform's case-sensitivity, so there is always the possibility
-    of two apparently-different paths being equal on such platforms.
-
-History
--------
-
-0.6c9
- * Fix ``resource_listdir('')`` always returning an empty list for zipped eggs.
-
-0.6c7
- * Fix package precedence problem where single-version eggs installed in
-   ``site-packages`` would take precedence over ``.egg`` files (or directories)
-   installed in ``site-packages``.
-
-0.6c6
- * Fix extracted C extensions not having executable permissions under Cygwin.
-
- * Allow ``.egg-link`` files to contain relative paths.
-
- * Fix cache dir defaults on Windows when multiple environment vars are needed
-   to construct a path.
-
-0.6c4
- * Fix "dev" versions being considered newer than release candidates.
-
-0.6c3
- * Python 2.5 compatibility fixes.
-
-0.6c2
- * Fix a problem with eggs specified directly on ``PYTHONPATH`` on
-   case-insensitive filesystems possibly not showing up in the default
-   working set, due to differing normalizations of ``sys.path`` entries.
-
-0.6b3
- * Fixed a duplicate path insertion problem on case-insensitive filesystems.
-
-0.6b1
- * Split ``get_platform()`` into ``get_supported_platform()`` and
-   ``get_build_platform()`` to work around a Mac versioning problem that caused
-   the behavior of ``compatible_platforms()`` to be platform specific.
-
- * Fix entry point parsing when a standalone module name has whitespace
-   between it and the extras.
-
-0.6a11
- * Added ``ExtractionError`` and ``ResourceManager.extraction_error()`` so that
-   cache permission problems get a more user-friendly explanation of the
-   problem, and so that programs can catch and handle extraction errors if they
-   need to.
-
-0.6a10
- * Added the ``extras`` attribute to ``Distribution``, the ``find_plugins()``
-   method to ``WorkingSet``, and the ``__add__()`` and ``__iadd__()`` methods
-   to ``Environment``.
-
- * ``safe_name()`` now allows dots in project names.
-
- * There is a new ``to_filename()`` function that escapes project names and
-   versions for safe use in constructing egg filenames from a Distribution
-   object's metadata.
-
- * Added ``Distribution.clone()`` method, and keyword argument support to other
-   ``Distribution`` constructors.
-
- * Added the ``DEVELOP_DIST`` precedence, and automatically assign it to
-   eggs using ``.egg-info`` format.
-
-0.6a9
- * Don't raise an error when an invalid (unfinished) distribution is found
-   unless absolutely necessary.  Warn about skipping invalid/unfinished eggs
-   when building an Environment.
-
- * Added support for ``.egg-info`` files or directories with version/platform
-   information embedded in the filename, so that system packagers have the
-   option of including ``PKG-INFO`` files to indicate the presence of a
-   system-installed egg, without needing to use ``.egg`` directories, zipfiles,
-   or ``.pth`` manipulation.
-
- * Changed ``parse_version()`` to remove dashes before pre-release tags, so
-   that ``0.2-rc1`` is considered an *older* version than ``0.2``, and is equal
-   to ``0.2rc1``.  The idea that a dash *always* meant a post-release version
-   was highly non-intuitive to setuptools users and Python developers, who
-   seem to want to use ``-rc`` version numbers a lot.
-
-0.6a8
- * Fixed a problem with ``WorkingSet.resolve()`` that prevented version
-   conflicts from being detected at runtime.
-
- * Improved runtime conflict warning message to identify a line in the user's
-   program, rather than flagging the ``warn()`` call in ``pkg_resources``.
-
- * Avoid giving runtime conflict warnings for namespace packages, even if they
-   were declared by a different package than the one currently being activated.
-
- * Fix path insertion algorithm for case-insensitive filesystems.
-
- * Fixed a problem with nested namespace packages (e.g. ``peak.util``) not
-   being set as an attribute of their parent package.
-
-0.6a6
- * Activated distributions are now inserted in ``sys.path`` (and the working
-   set) just before the directory that contains them, instead of at the end.
-   This allows e.g. eggs in ``site-packages`` to override unmanaged modules in
-   the same location, and allows eggs found earlier on ``sys.path`` to override
-   ones found later.
-
- * When a distribution is activated, it now checks whether any contained
-   non-namespace modules have already been imported and issues a warning if
-   a conflicting module has already been imported.
-
- * Changed dependency processing so that it's breadth-first, allowing a
-   depender's preferences to override those of a dependee, to prevent conflicts
-   when a lower version is acceptable to the dependee, but not the depender.
-
- * Fixed a problem extracting zipped files on Windows, when the egg in question
-   has had changed contents but still has the same version number.
-
-0.6a4
- * Fix a bug in ``WorkingSet.resolve()`` that was introduced in 0.6a3.
-
-0.6a3
- * Added ``safe_extra()`` parsing utility routine, and use it for Requirement,
-   EntryPoint, and Distribution objects' extras handling.
-
-0.6a1
- * Enhanced performance of ``require()`` and related operations when all
-   requirements are already in the working set, and enhanced performance of
-   directory scanning for distributions.
-
- * Fixed some problems using ``pkg_resources`` w/PEP 302 loaders other than
-   ``zipimport``, and the previously-broken "eager resource" support.
-
- * Fixed ``pkg_resources.resource_exists()`` not working correctly, along with
-   some other resource API bugs.
-
- * Many API changes and enhancements:
-
-   * Added ``EntryPoint``, ``get_entry_map``, ``load_entry_point``, and
-     ``get_entry_info`` APIs for dynamic plugin discovery.
-
-   * ``list_resources`` is now ``resource_listdir`` (and it actually works)
-
-   * Resource API functions like ``resource_string()`` that accepted a package
-     name and resource name, will now also accept a ``Requirement`` object in
-     place of the package name (to allow access to non-package data files in
-     an egg).
-
-   * ``get_provider()`` will now accept a ``Requirement`` instance or a module
-     name.  If it is given a ``Requirement``, it will return a corresponding
-     ``Distribution`` (by calling ``require()`` if a suitable distribution
-     isn't already in the working set), rather than returning a metadata and
-     resource provider for a specific module.  (The difference is in how
-     resource paths are interpreted; supplying a module name means resources
-     path will be module-relative, rather than relative to the distribution's
-     root.)
-
-   * ``Distribution`` objects now implement the ``IResourceProvider`` and
-     ``IMetadataProvider`` interfaces, so you don't need to reference the (no
-     longer available) ``metadata`` attribute to get at these interfaces.
-
-   * ``Distribution`` and ``Requirement`` both have a ``project_name``
-     attribute for the project name they refer to.  (Previously these were
-     ``name`` and ``distname`` attributes.)
-
-   * The ``path`` attribute of ``Distribution`` objects is now ``location``,
-     because it isn't necessarily a filesystem path (and hasn't been for some
-     time now).  The ``location`` of ``Distribution`` objects in the filesystem
-     should always be normalized using ``pkg_resources.normalize_path()``; all
-     of the setuptools and EasyInstall code that generates distributions from
-     the filesystem (including ``Distribution.from_filename()``) ensure this
-     invariant, but if you use a more generic API like ``Distribution()`` or
-     ``Distribution.from_location()`` you should take care that you don't
-     create a distribution with an un-normalized filesystem path.
-
-   * ``Distribution`` objects now have an ``as_requirement()`` method that
-     returns a ``Requirement`` for the distribution's project name and version.
-
-   * Distribution objects no longer have an ``installed_on()`` method, and the
-     ``install_on()`` method is now ``activate()`` (but may go away altogether
-     soon).  The ``depends()`` method has also been renamed to ``requires()``,
-     and ``InvalidOption`` is now ``UnknownExtra``.
-
-   * ``find_distributions()`` now takes an additional argument called ``only``,
-     that tells it to only yield distributions whose location is the passed-in
-     path.  (It defaults to False, so that the default behavior is unchanged.)
-
-   * ``AvailableDistributions`` is now called ``Environment``, and the
-     ``get()``, ``__len__()``, and ``__contains__()`` methods were removed,
-     because they weren't particularly useful.  ``__getitem__()`` no longer
-     raises ``KeyError``; it just returns an empty list if there are no
-     distributions for the named project.
-
-   * The ``resolve()`` method of ``Environment`` is now a method of
-     ``WorkingSet`` instead, and the ``best_match()`` method now uses a working
-     set instead of a path list as its second argument.
-
-   * There is a new ``pkg_resources.add_activation_listener()`` API that lets
-     you register a callback for notifications about distributions added to
-     ``sys.path`` (including the distributions already on it).  This is
-     basically a hook for extensible applications and frameworks to be able to
-     search for plugin metadata in distributions added at runtime.
-
-0.5a13
- * Fixed a bug in resource extraction from nested packages in a zipped egg.
-
-0.5a12
- * Updated extraction/cache mechanism for zipped resources to avoid inter-
-   process and inter-thread races during extraction.  The default cache
-   location can now be set via the ``PYTHON_EGGS_CACHE`` environment variable,
-   and the default Windows cache is now a ``Python-Eggs`` subdirectory of the
-   current user's "Application Data" directory, if the ``PYTHON_EGGS_CACHE``
-   variable isn't set.
-
-0.5a10
- * Fix a problem with ``pkg_resources`` being confused by non-existent eggs on
-   ``sys.path`` (e.g. if a user deletes an egg without removing it from the
-   ``easy-install.pth`` file).
-
- * Fix a problem with "basket" support in ``pkg_resources``, where egg-finding
-   never actually went inside ``.egg`` files.
-
- * Made ``pkg_resources`` import the module you request resources from, if it's
-   not already imported.
-
-0.5a4
- * ``pkg_resources.AvailableDistributions.resolve()`` and related methods now
-   accept an ``installer`` argument: a callable taking one argument, a
-   ``Requirement`` instance.  The callable must return a ``Distribution``
-   object, or ``None`` if no distribution is found.  This feature is used by
-   EasyInstall to resolve dependencies by recursively invoking itself.
-
-0.4a4
- * Fix problems with ``resource_listdir()``, ``resource_isdir()`` and resource
-   directory extraction for zipped eggs.
-
-0.4a3
- * Fixed scripts not being able to see a ``__file__`` variable in ``__main__``
-
- * Fixed a problem with ``resource_isdir()`` implementation that was introduced
-   in 0.4a2.
-
-0.4a1
- * Fixed a bug in requirements processing for exact versions (i.e. ``==`` and
-   ``!=``) when only one condition was included.
-
- * Added ``safe_name()`` and ``safe_version()`` APIs to clean up handling of
-   arbitrary distribution names and versions found on PyPI.
-
-0.3a4
- * ``pkg_resources`` now supports resource directories, not just the resources
-   in them.  In particular, there are ``resource_listdir()`` and
-   ``resource_isdir()`` APIs.
-
- * ``pkg_resources`` now supports "egg baskets" -- .egg zipfiles which contain
-   multiple distributions in subdirectories whose names end with ``.egg``.
-   Having such a "basket" in a directory on ``sys.path`` is equivalent to
-   having the individual eggs in that directory, but the contained eggs can
-   be individually added (or not) to ``sys.path``.  Currently, however, there
-   is no automated way to create baskets.
-
- * Namespace package manipulation is now protected by the Python import lock.
-
-0.3a1
- * Initial release.
-
diff --git a/vendor/distribute-0.6.34/docs/python3.txt b/vendor/distribute-0.6.34/docs/python3.txt
deleted file mode 100644
index 2f6cde4a..00000000
--- a/vendor/distribute-0.6.34/docs/python3.txt
+++ /dev/null
@@ -1,121 +0,0 @@
-=====================================================
-Supporting both Python 2 and Python 3 with Distribute
-=====================================================
-
-Starting with version 0.6.2, Distribute supports Python 3. Installing and
-using distribute for Python 3 code works exactly the same as for Python 2
-code, but Distribute also helps you to support Python 2 and Python 3 from
-the same source code by letting you run 2to3 on the code as a part of the
-build process, by setting the keyword parameter ``use_2to3`` to True.
-
-
-Distribute as help during porting
-=================================
-
-Distribute can make the porting process much easier by automatically running
-2to3 as a part of the test running. To do this you need to configure the
-setup.py so that you can run the unit tests with ``python setup.py test``.
-
-See :ref:`test` for more information on this.
-
-Once you have the tests running under Python 2, you can add the use_2to3
-keyword parameters to setup(), and start running the tests under Python 3.
-The test command will now first run the build command during which the code
-will be converted with 2to3, and the tests will then be run from the build
-directory, as opposed from the source directory as is normally done.
-
-Distribute will convert all Python files, and also all doctests in Python
-files. However, if you have doctests located in separate text files, these
-will not automatically be converted. By adding them to the
-``convert_2to3_doctests`` keyword parameter Distrubute will convert them as
-well.
-
-By default, the conversion uses all fixers in the ``lib2to3.fixers`` package.
-To use additional fixers, the parameter ``use_2to3_fixers`` can be set
-to a list of names of packages containing fixers. To exclude fixers, the
-parameter ``use_2to3_exclude_fixers`` can be set to fixer names to be
-skipped.
-
-A typical setup.py can look something like this::
-
-    from setuptools import setup
-
-    setup(
-        name='your.module',
-        version = '1.0',
-        description='This is your awesome module',
-        author='You',
-        author_email='your@email',
-        package_dir = {'': 'src'},
-        packages = ['your', 'you.module'],
-        test_suite = 'your.module.tests',
-        use_2to3 = True,
-        convert_2to3_doctests = ['src/your/module/README.txt'],
-        use_2to3_fixers = ['your.fixers'],
-        use_2to3_exclude_fixers = ['lib2to3.fixes.fix_import'],
-    )
-
-Differential conversion
------------------------
-
-Note that a file will only be copied and converted during the build process
-if the source file has been changed. If you add a file to the doctests
-that should be converted, it will not be converted the next time you run
-the tests, since it hasn't been modified. You need to remove it from the
-build directory. Also if you run the build, install or test commands before
-adding the use_2to3 parameter, you will have to remove the build directory
-before you run the test command, as the files otherwise will seem updated,
-and no conversion will happen.
-
-In general, if code doesn't seem to be converted, deleting the build directory
-and trying again is a good saferguard against the build directory getting
-"out of sync" with the source directory.
-
-Distributing Python 3 modules
-=============================
-
-You can distribute your modules with Python 3 support in different ways. A
-normal source distribution will work, but can be slow in installing, as the
-2to3 process will be run during the install. But you can also distribute
-the module in binary format, such as a binary egg. That egg will contain the
-already converted code, and hence no 2to3 conversion is needed during install.
-
-Advanced features
-=================
-
-If you don't want to run the 2to3 conversion on the doctests in Python files,
-you can turn that off by setting ``setuptools.use_2to3_on_doctests = False``.
-
-Note on compatibility with setuptools
-=====================================
-
-Setuptools do not know about the new keyword parameters to support Python 3.
-As a result it will warn about the unknown keyword parameters if you use
-setuptools instead of Distribute under Python 2. This is not an error, and
-install process will continue as normal, but if you want to get rid of that
-error this is easy. Simply conditionally add the new parameters into an extra
-dict and pass that dict into setup()::
-
-    from setuptools import setup
-    import sys
-
-    extra = {}
-    if sys.version_info >= (3,):
-        extra['use_2to3'] = True
-        extra['convert_2to3_doctests'] = ['src/your/module/README.txt']
-        extra['use_2to3_fixers'] = ['your.fixers']
-
-    setup(
-        name='your.module',
-        version = '1.0',
-        description='This is your awesome module',
-        author='You',
-        author_email='your@email',
-        package_dir = {'': 'src'},
-        packages = ['your', 'you.module'],
-        test_suite = 'your.module.tests',
-        **extra
-    )
-
-This way the parameters will only be used under Python 3, where you have to
-use Distribute.
diff --git a/vendor/distribute-0.6.34/docs/roadmap.txt b/vendor/distribute-0.6.34/docs/roadmap.txt
deleted file mode 100644
index ea5070ea..00000000
--- a/vendor/distribute-0.6.34/docs/roadmap.txt
+++ /dev/null
@@ -1,86 +0,0 @@
-=======
-Roadmap
-=======
-
-Distribute has two branches:
-
-- 0.6.x : provides a Setuptools-0.6cX compatible version
-- 0.7.x : will provide a refactoring
-
-0.6.x
-=====
-
-Not "much" is going to happen here, we want this branch to be helpful
-to the community *today* by addressing the 40-or-so bugs
-that were found in Setuptools and never fixed. This is eventually
-happen soon because its development is
-fast : there are up to 5 commiters that are working on it very often
-(and the number grows weekly.)
-
-The biggest issue with this branch is that it is providing the same
-packages and modules setuptools does, and this
-requires some bootstrapping work where we make sure once Distribute is
-installed, all Distribution that requires Setuptools
-will continue to work. This is done by faking the metadata of
-Setuptools 0.6c9. That's the only way we found to do this.
-
-There's one major thing though: thanks to the work of Lennart, Alex,
-Martin, this branch supports Python 3,
-which is great to have to speed up Py3 adoption.
-
-The goal of the 0.6.x is to remove as much bugs as we can, and try if
-possible to remove the patches done
-on Distutils. We will support 0.6.x maintenance for years and we will
-promote its usage everywhere instead of
-Setuptools.
-
-Some new commands are added there, when they are helpful and don't
-interact with the rest. I am thinking
-about "upload_docs" that let you upload documentation to PyPI. The
-goal is to move it to Distutils
-at some point, if the documentation feature of PyPI stays and starts to be used.
-
-0.7.x
-=====
-
-We've started to refactor Distribute with this roadmap in mind (and
-no, as someone said, it's not vaporware,
-we've done a lot already)
-
-- 0.7.x can be installed and used with 0.6.x
-
-- easy_install is going to be deprecated ! use Pip !
-
-- the version system will be deprecated, in favor of the one in Distutils
-
-- no more Distutils monkey-patch that happens once you use the code
-  (things like 'from distutils import cmd; cmd.Command = CustomCommand')
-
-- no more custom site.py (that is: if something misses in Python's
-  site.py we'll add it there instead of patching it)
-
-- no more namespaced packages system, if PEP 382 (namespaces package
-  support) makes it to 2.7
-
-- The code is splitted in many packages and might be distributed under
-  several distributions.
-
- - distribute.resources: that's the old pkg_resources, but
-   reorganized in clean, pep-8 modules. This package will
-   only contain the query APIs and will focus on being PEP 376
-   compatible. We will promote its usage and see if Pip wants
-   to use it as a basis.
-   It will probably shrink a lot though, once the stdlib provides PEP 376 support.
-
- - distribute.entrypoints: that's the old pkg_resources entry points
-   system, but on its own. it uses distribute.resources
-
- - distribute.index: that's package_index and a few other things.
-   everything required to interact with PyPI. We will promote
-   its usage and see if Pip wants to use it as a basis.
-
- - distribute.core (might be renamed to main): that's everything
-   else, and uses the other packages.
-
-Goal: A first release before (or when) Python 2.7 / 3.2 is out.
-
diff --git a/vendor/distribute-0.6.34/docs/setuptools.txt b/vendor/distribute-0.6.34/docs/setuptools.txt
deleted file mode 100644
index 31ecc931..00000000
--- a/vendor/distribute-0.6.34/docs/setuptools.txt
+++ /dev/null
@@ -1,3236 +0,0 @@
-==================================================
-Building and Distributing Packages with Distribute
-==================================================
-
-``Distribute`` is a collection of enhancements to the Python ``distutils``
-(for Python 2.3.5 and up on most platforms; 64-bit platforms require a minimum
-of Python 2.4) that allow you to more easily build and distribute Python
-packages, especially ones that have dependencies on other packages.
-
-Packages built and distributed using ``setuptools`` look to the user like
-ordinary Python packages based on the ``distutils``.  Your users don't need to
-install or even know about setuptools in order to use them, and you don't
-have to include the entire setuptools package in your distributions.  By
-including just a single `bootstrap module`_ (an 8K .py file), your package will
-automatically download and install ``setuptools`` if the user is building your
-package from source and doesn't have a suitable version already installed.
-
-.. _bootstrap module: http://nightly.ziade.org/distribute_setup.py
-
-Feature Highlights:
-
-* Automatically find/download/install/upgrade dependencies at build time using
-  the `EasyInstall tool <http://peak.telecommunity.com/DevCenter/EasyInstall>`_,
-  which supports downloading via HTTP, FTP, Subversion, and SourceForge, and
-  automatically scans web pages linked from PyPI to find download links.  (It's
-  the closest thing to CPAN currently available for Python.)
-
-* Create `Python Eggs <http://peak.telecommunity.com/DevCenter/PythonEggs>`_ -
-  a single-file importable distribution format
-
-* Include data files inside your package directories, where your code can
-  actually use them.  (Python 2.4 distutils also supports this feature, but
-  setuptools provides the feature for Python 2.3 packages also, and supports
-  accessing data files in zipped packages too.)
-
-* Automatically include all packages in your source tree, without listing them
-  individually in setup.py
-
-* Automatically include all relevant files in your source distributions,
-  without needing to create a ``MANIFEST.in`` file, and without having to force
-  regeneration of the ``MANIFEST`` file when your source tree changes.
-
-* Automatically generate wrapper scripts or Windows (console and GUI) .exe
-  files for any number of "main" functions in your project.  (Note: this is not
-  a py2exe replacement; the .exe files rely on the local Python installation.)
-
-* Transparent Pyrex support, so that your setup.py can list ``.pyx`` files and
-  still work even when the end-user doesn't have Pyrex installed (as long as
-  you include the Pyrex-generated C in your source distribution)
-
-* Command aliases - create project-specific, per-user, or site-wide shortcut
-  names for commonly used commands and options
-
-* PyPI upload support - upload your source distributions and eggs to PyPI
-
-* Deploy your project in "development mode", such that it's available on
-  ``sys.path``, yet can still be edited directly from its source checkout.
-
-* Easily extend the distutils with new commands or ``setup()`` arguments, and
-  distribute/reuse your extensions for multiple projects, without copying code.
-
-* Create extensible applications and frameworks that automatically discover
-  extensions, using simple "entry points" declared in a project's setup script.
-
-In addition to the PyPI downloads, the development version of ``setuptools``
-is available from the `Python SVN sandbox`_, and in-development versions of the
-`0.6 branch`_ are available as well.
-
-.. _0.6 branch: http://svn.python.org/projects/sandbox/branches/setuptools-0.6/#egg=setuptools-dev06
-
-.. _Python SVN sandbox: http://svn.python.org/projects/sandbox/trunk/setuptools/#egg=setuptools-dev
-
-.. contents:: **Table of Contents**
-
-.. _distribute_setup.py: `bootstrap module`_
-
-
------------------
-Developer's Guide
------------------
-
-
-Installing ``setuptools``
-=========================
-
-Please follow the `EasyInstall Installation Instructions`_ to install the
-current stable version of setuptools.  In particular, be sure to read the
-section on `Custom Installation Locations`_ if you are installing anywhere
-other than Python's ``site-packages`` directory.
-
-.. _EasyInstall Installation Instructions: http://peak.telecommunity.com/DevCenter/EasyInstall#installation-instructions
-
-.. _Custom Installation Locations: http://peak.telecommunity.com/DevCenter/EasyInstall#custom-installation-locations
-
-If you want the current in-development version of setuptools, you should first
-install a stable version, and then run::
-
-    distribute_setup.py setuptools==dev
-
-This will download and install the latest development (i.e. unstable) version
-of setuptools from the Python Subversion sandbox.
-
-
-Basic Use
-=========
-
-For basic use of setuptools, just import things from setuptools instead of
-the distutils.  Here's a minimal setup script using setuptools::
-
-    from setuptools import setup, find_packages
-    setup(
-        name = "HelloWorld",
-        version = "0.1",
-        packages = find_packages(),
-    )
-
-As you can see, it doesn't take much to use setuptools in a project.
-Just by doing the above, this project will be able to produce eggs, upload to
-PyPI, and automatically include all packages in the directory where the
-setup.py lives.  See the `Command Reference`_ section below to see what
-commands you can give to this setup script.
-
-Of course, before you release your project to PyPI, you'll want to add a bit
-more information to your setup script to help people find or learn about your
-project.  And maybe your project will have grown by then to include a few
-dependencies, and perhaps some data files and scripts::
-
-    from setuptools import setup, find_packages
-    setup(
-        name = "HelloWorld",
-        version = "0.1",
-        packages = find_packages(),
-        scripts = ['say_hello.py'],
-
-        # Project uses reStructuredText, so ensure that the docutils get
-        # installed or upgraded on the target machine
-        install_requires = ['docutils>=0.3'],
-
-        package_data = {
-            # If any package contains *.txt or *.rst files, include them:
-            '': ['*.txt', '*.rst'],
-            # And include any *.msg files found in the 'hello' package, too:
-            'hello': ['*.msg'],
-        },
-
-        # metadata for upload to PyPI
-        author = "Me",
-        author_email = "me@example.com",
-        description = "This is an Example Package",
-        license = "PSF",
-        keywords = "hello world example examples",
-        url = "http://example.com/HelloWorld/",   # project home page, if any
-
-        # could also include long_description, download_url, classifiers, etc.
-    )
-
-In the sections that follow, we'll explain what most of these ``setup()``
-arguments do (except for the metadata ones), and the various ways you might use
-them in your own project(s).
-
-
-Specifying Your Project's Version
----------------------------------
-
-Setuptools can work well with most versioning schemes; there are, however, a
-few special things to watch out for, in order to ensure that setuptools and
-EasyInstall can always tell what version of your package is newer than another
-version.  Knowing these things will also help you correctly specify what
-versions of other projects your project depends on.
-
-A version consists of an alternating series of release numbers and pre-release
-or post-release tags.  A release number is a series of digits punctuated by
-dots, such as ``2.4`` or ``0.5``.  Each series of digits is treated
-numerically, so releases ``2.1`` and ``2.1.0`` are different ways to spell the
-same release number, denoting the first subrelease of release 2.  But  ``2.10``
-is the *tenth* subrelease of release 2, and so is a different and newer release
-from ``2.1`` or ``2.1.0``.  Leading zeros within a series of digits are also
-ignored, so ``2.01`` is the same as ``2.1``, and different from ``2.0.1``.
-
-Following a release number, you can have either a pre-release or post-release
-tag.  Pre-release tags make a version be considered *older* than the version
-they are appended to.  So, revision ``2.4`` is *newer* than revision ``2.4c1``,
-which in turn is newer than ``2.4b1`` or ``2.4a1``.  Postrelease tags make
-a version be considered *newer* than the version they are appended to.  So,
-revisions like ``2.4-1`` and ``2.4pl3`` are newer than ``2.4``, but are *older*
-than ``2.4.1`` (which has a higher release number).
-
-A pre-release tag is a series of letters that are alphabetically before
-"final".  Some examples of prerelease tags would include ``alpha``, ``beta``,
-``a``, ``c``, ``dev``, and so on.  You do not have to place a dot before
-the prerelease tag if it's immediately after a number, but it's okay to do
-so if you prefer.  Thus, ``2.4c1`` and ``2.4.c1`` both represent release
-candidate 1 of version ``2.4``, and are treated as identical by setuptools.
-
-In addition, there are three special prerelease tags that are treated as if
-they were the letter ``c``: ``pre``, ``preview``, and ``rc``.  So, version
-``2.4rc1``, ``2.4pre1`` and ``2.4preview1`` are all the exact same version as
-``2.4c1``, and are treated as identical by setuptools.
-
-A post-release tag is either a series of letters that are alphabetically
-greater than or equal to "final", or a dash (``-``).  Post-release tags are
-generally used to separate patch numbers, port numbers, build numbers, revision
-numbers, or date stamps from the release number.  For example, the version
-``2.4-r1263`` might denote Subversion revision 1263 of a post-release patch of
-version ``2.4``.  Or you might use ``2.4-20051127`` to denote a date-stamped
-post-release.
-
-Notice that after each pre or post-release tag, you are free to place another
-release number, followed again by more pre- or post-release tags.  For example,
-``0.6a9.dev-r41475`` could denote Subversion revision 41475 of the in-
-development version of the ninth alpha of release 0.6.  Notice that ``dev`` is
-a pre-release tag, so this version is a *lower* version number than ``0.6a9``,
-which would be the actual ninth alpha of release 0.6.  But the ``-r41475`` is
-a post-release tag, so this version is *newer* than ``0.6a9.dev``.
-
-For the most part, setuptools' interpretation of version numbers is intuitive,
-but here are a few tips that will keep you out of trouble in the corner cases:
-
-* Don't use ``-`` or any other character than ``.`` as a separator, unless you
-  really want a post-release.  Remember that ``2.1-rc2`` means you've
-  *already* released ``2.1``, whereas ``2.1rc2`` and ``2.1.c2`` are candidates
-  you're putting out *before* ``2.1``.  If you accidentally distribute copies
-  of a post-release that you meant to be a pre-release, the only safe fix is to
-  bump your main release number (e.g. to ``2.1.1``) and re-release the project.
-
-* Don't stick adjoining pre-release tags together without a dot or number
-  between them.  Version ``1.9adev`` is the ``adev`` prerelease of ``1.9``,
-  *not* a development pre-release of ``1.9a``.  Use ``.dev`` instead, as in
-  ``1.9a.dev``, or separate the prerelease tags with a number, as in
-  ``1.9a0dev``.  ``1.9a.dev``, ``1.9a0dev``, and even ``1.9.a.dev`` are
-  identical versions from setuptools' point of view, so you can use whatever
-  scheme you prefer.
-
-* If you want to be certain that your chosen numbering scheme works the way
-  you think it will, you can use the ``pkg_resources.parse_version()`` function
-  to compare different version numbers::
-
-    >>> from pkg_resources import parse_version
-    >>> parse_version('1.9.a.dev') == parse_version('1.9a0dev')
-    True
-    >>> parse_version('2.1-rc2') < parse_version('2.1')
-    False
-    >>> parse_version('0.6a9dev-r41475') < parse_version('0.6a9')
-    True
-
-Once you've decided on a version numbering scheme for your project, you can
-have setuptools automatically tag your in-development releases with various
-pre- or post-release tags.  See the following sections for more details:
-
-* `Tagging and "Daily Build" or "Snapshot" Releases`_
-* `Managing "Continuous Releases" Using Subversion`_
-* The `egg_info`_ command
-
-
-New and Changed ``setup()`` Keywords
-====================================
-
-The following keyword arguments to ``setup()`` are added or changed by
-``setuptools``.  All of them are optional; you do not have to supply them
-unless you need the associated ``setuptools`` feature.
-
-``include_package_data``
-    If set to ``True``, this tells ``setuptools`` to automatically include any
-    data files it finds inside your package directories, that are either under
-    CVS or Subversion control, or which are specified by your ``MANIFEST.in``
-    file.  For more information, see the section below on `Including Data
-    Files`_.
-
-``exclude_package_data``
-    A dictionary mapping package names to lists of glob patterns that should
-    be *excluded* from your package directories.  You can use this to trim back
-    any excess files included by ``include_package_data``.  For a complete
-    description and examples, see the section below on `Including Data Files`_.
-
-``package_data``
-    A dictionary mapping package names to lists of glob patterns.  For a
-    complete description and examples, see the section below on `Including
-    Data Files`_.  You do not need to use this option if you are using
-    ``include_package_data``, unless you need to add e.g. files that are
-    generated by your setup script and build process.  (And are therefore not
-    in source control or are files that you don't want to include in your
-    source distribution.)
-
-``zip_safe``
-    A boolean (True or False) flag specifying whether the project can be
-    safely installed and run from a zip file.  If this argument is not
-    supplied, the ``bdist_egg`` command will have to analyze all of your
-    project's contents for possible problems each time it buids an egg.
-
-``install_requires``
-    A string or list of strings specifying what other distributions need to
-    be installed when this one is.  See the section below on `Declaring
-    Dependencies`_ for details and examples of the format of this argument.
-
-``entry_points``
-    A dictionary mapping entry point group names to strings or lists of strings
-    defining the entry points.  Entry points are used to support dynamic
-    discovery of services or plugins provided by a project.  See `Dynamic
-    Discovery of Services and Plugins`_ for details and examples of the format
-    of this argument.  In addition, this keyword is used to support `Automatic
-    Script Creation`_.
-
-``extras_require``
-    A dictionary mapping names of "extras" (optional features of your project)
-    to strings or lists of strings specifying what other distributions must be
-    installed to support those features.  See the section below on `Declaring
-    Dependencies`_ for details and examples of the format of this argument.
-
-``setup_requires``
-    A string or list of strings specifying what other distributions need to
-    be present in order for the *setup script* to run.  ``setuptools`` will
-    attempt to obtain these (even going so far as to download them using
-    ``EasyInstall``) before processing the rest of the setup script or commands.
-    This argument is needed if you are using distutils extensions as part of
-    your build process; for example, extensions that process setup() arguments
-    and turn them into EGG-INFO metadata files.
-
-    (Note: projects listed in ``setup_requires`` will NOT be automatically
-    installed on the system where the setup script is being run.  They are
-    simply downloaded to the setup directory if they're not locally available
-    already.  If you want them to be installed, as well as being available
-    when the setup script is run, you should add them to ``install_requires``
-    **and** ``setup_requires``.)
-
-``dependency_links``
-    A list of strings naming URLs to be searched when satisfying dependencies.
-    These links will be used if needed to install packages specified by
-    ``setup_requires`` or ``tests_require``.  They will also be written into
-    the egg's metadata for use by tools like EasyInstall to use when installing
-    an ``.egg`` file.
-
-``namespace_packages``
-    A list of strings naming the project's "namespace packages".  A namespace
-    package is a package that may be split across multiple project
-    distributions.  For example, Zope 3's ``zope`` package is a namespace
-    package, because subpackages like ``zope.interface`` and ``zope.publisher``
-    may be distributed separately.  The egg runtime system can automatically
-    merge such subpackages into a single parent package at runtime, as long
-    as you declare them in each project that contains any subpackages of the
-    namespace package, and as long as the namespace package's ``__init__.py``
-    does not contain any code other than a namespace declaration.  See the
-    section below on `Namespace Packages`_ for more information.
-
-``test_suite``
-    A string naming a ``unittest.TestCase`` subclass (or a package or module
-    containing one or more of them, or a method of such a subclass), or naming
-    a function that can be called with no arguments and returns a
-    ``unittest.TestSuite``.  If the named suite is a module, and the module
-    has an ``additional_tests()`` function, it is called and the results are
-    added to the tests to be run.  If the named suite is a package, any
-    submodules and subpackages are recursively added to the overall test suite.
-
-    Specifying this argument enables use of the `test`_ command to run the
-    specified test suite, e.g. via ``setup.py test``.  See the section on the
-    `test`_ command below for more details.
-
-``tests_require``
-    If your project's tests need one or more additional packages besides those
-    needed to install it, you can use this option to specify them.  It should
-    be a string or list of strings specifying what other distributions need to
-    be present for the package's tests to run.  When you run the ``test``
-    command, ``setuptools`` will  attempt to obtain these (even going
-    so far as to download them using ``EasyInstall``).  Note that these
-    required projects will *not* be installed on the system where the tests
-    are run, but only downloaded to the project's setup directory if they're
-    not already installed locally.
-
-.. _test_loader:
-
-``test_loader``
-    If you would like to use a different way of finding tests to run than what
-    setuptools normally uses, you can specify a module name and class name in
-    this argument.  The named class must be instantiable with no arguments, and
-    its instances must support the ``loadTestsFromNames()`` method as defined
-    in the Python ``unittest`` module's ``TestLoader`` class.  Setuptools will
-    pass only one test "name" in the `names` argument: the value supplied for
-    the ``test_suite`` argument.  The loader you specify may interpret this
-    string in any way it likes, as there are no restrictions on what may be
-    contained in a ``test_suite`` string.
-
-    The module name and class name must be separated by a ``:``.  The default
-    value of this argument is ``"setuptools.command.test:ScanningLoader"``.  If
-    you want to use the default ``unittest`` behavior, you can specify
-    ``"unittest:TestLoader"`` as your ``test_loader`` argument instead.  This
-    will prevent automatic scanning of submodules and subpackages.
-
-    The module and class you specify here may be contained in another package,
-    as long as you use the ``tests_require`` option to ensure that the package
-    containing the loader class is available when the ``test`` command is run.
-
-``eager_resources``
-    A list of strings naming resources that should be extracted together, if
-    any of them is needed, or if any C extensions included in the project are
-    imported.  This argument is only useful if the project will be installed as
-    a zipfile, and there is a need to have all of the listed resources be
-    extracted to the filesystem *as a unit*.  Resources listed here
-    should be '/'-separated paths, relative to the source root, so to list a
-    resource ``foo.png`` in package ``bar.baz``, you would include the string
-    ``bar/baz/foo.png`` in this argument.
-
-    If you only need to obtain resources one at a time, or you don't have any C
-    extensions that access other files in the project (such as data files or
-    shared libraries), you probably do NOT need this argument and shouldn't
-    mess with it.  For more details on how this argument works, see the section
-    below on `Automatic Resource Extraction`_.
-
-``use_2to3``
-    Convert the source code from Python 2 to Python 3 with 2to3 during the
-    build process. See :doc:`python3` for more details.
-
-``convert_2to3_doctests``
-    List of doctest source files that need to be converted with 2to3.
-    See :doc:`python3` for more details.
-
-``use_2to3_fixers``
-    A list of modules to search for additional fixers to be used during
-    the 2to3 conversion. See :doc:`python3` for more details.
-
-
-Using ``find_packages()``
--------------------------
-
-For simple projects, it's usually easy enough to manually add packages to
-the ``packages`` argument of ``setup()``.  However, for very large projects
-(Twisted, PEAK, Zope, Chandler, etc.), it can be a big burden to keep the
-package list updated.  That's what ``setuptools.find_packages()`` is for.
-
-``find_packages()`` takes a source directory, and a list of package names or
-patterns to exclude.  If omitted, the source directory defaults to the same
-directory as the setup script.  Some projects use a ``src`` or ``lib``
-directory as the root of their source tree, and those projects would of course
-use ``"src"`` or ``"lib"`` as the first argument to ``find_packages()``.  (And
-such projects also need something like ``package_dir = {'':'src'}`` in their
-``setup()`` arguments, but that's just a normal distutils thing.)
-
-Anyway, ``find_packages()`` walks the target directory, and finds Python
-packages by looking for ``__init__.py`` files.  It then filters the list of
-packages using the exclusion patterns.
-
-Exclusion patterns are package names, optionally including wildcards.  For
-example, ``find_packages(exclude=["*.tests"])`` will exclude all packages whose
-last name part is ``tests``.   Or, ``find_packages(exclude=["*.tests",
-"*.tests.*"])`` will also exclude any subpackages of packages named ``tests``,
-but it still won't exclude a top-level ``tests`` package or the children
-thereof.  In fact, if you really want no ``tests`` packages at all, you'll need
-something like this::
-
-    find_packages(exclude=["*.tests", "*.tests.*", "tests.*", "tests"])
-
-in order to cover all the bases.  Really, the exclusion patterns are intended
-to cover simpler use cases than this, like excluding a single, specified
-package and its subpackages.
-
-Regardless of the target directory or exclusions, the ``find_packages()``
-function returns a list of package names suitable for use as the ``packages``
-argument to ``setup()``, and so is usually the easiest way to set that
-argument in your setup script.  Especially since it frees you from having to
-remember to modify your setup script whenever your project grows additional
-top-level packages or subpackages.
-
-
-Automatic Script Creation
-=========================
-
-Packaging and installing scripts can be a bit awkward with the distutils.  For
-one thing, there's no easy way to have a script's filename match local
-conventions on both Windows and POSIX platforms.  For another, you often have
-to create a separate file just for the "main" script, when your actual "main"
-is a function in a module somewhere.  And even in Python 2.4, using the ``-m``
-option only works for actual ``.py`` files that aren't installed in a package.
-
-``setuptools`` fixes all of these problems by automatically generating scripts
-for you with the correct extension, and on Windows it will even create an
-``.exe`` file so that users don't have to change their ``PATHEXT`` settings.
-The way to use this feature is to define "entry points" in your setup script
-that indicate what function the generated script should import and run.  For
-example, to create two console scripts called ``foo`` and ``bar``, and a GUI
-script called ``baz``, you might do something like this::
-
-    setup(
-        # other arguments here...
-        entry_points = {
-            'console_scripts': [
-                'foo = my_package.some_module:main_func',
-                'bar = other_module:some_func',
-            ],
-            'gui_scripts': [
-                'baz = my_package_gui.start_func',
-            ]
-        }
-    )
-
-When this project is installed on non-Windows platforms (using "setup.py
-install", "setup.py develop", or by using EasyInstall), a set of ``foo``,
-``bar``, and ``baz`` scripts will be installed that import ``main_func`` and
-``some_func`` from the specified modules.  The functions you specify are called
-with no arguments, and their return value is passed to ``sys.exit()``, so you
-can return an errorlevel or message to print to stderr.
-
-On Windows, a set of ``foo.exe``, ``bar.exe``, and ``baz.exe`` launchers are
-created, alongside a set of ``foo.py``, ``bar.py``, and ``baz.pyw`` files.  The
-``.exe`` wrappers find and execute the right version of Python to run the
-``.py`` or ``.pyw`` file.
-
-You may define as many "console script" and "gui script" entry points as you
-like, and each one can optionally specify "extras" that it depends on, that
-will be added to ``sys.path`` when the script is run.  For more information on
-"extras", see the section below on `Declaring Extras`_.  For more information
-on "entry points" in general, see the section below on `Dynamic Discovery of
-Services and Plugins`_.
-
-
-"Eggsecutable" Scripts
-----------------------
-
-Occasionally, there are situations where it's desirable to make an ``.egg``
-file directly executable.  You can do this by including an entry point such
-as the following::
-
-    setup(
-        # other arguments here...
-        entry_points = {
-            'setuptools.installation': [
-                'eggsecutable = my_package.some_module:main_func',
-            ]
-        }
-    )
-
-Any eggs built from the above setup script will include a short excecutable
-prelude that imports and calls ``main_func()`` from ``my_package.some_module``.
-The prelude can be run on Unix-like platforms (including Mac and Linux) by
-invoking the egg with ``/bin/sh``, or by enabling execute permissions on the
-``.egg`` file.  For the executable prelude to run, the appropriate version of
-Python must be available via the ``PATH`` environment variable, under its
-"long" name.  That is, if the egg is built for Python 2.3, there must be a
-``python2.3`` executable present in a directory on ``PATH``.
-
-This feature is primarily intended to support distribute_setup the installation of
-setuptools itself on non-Windows platforms, but may also be useful for other
-projects as well.
-
-IMPORTANT NOTE: Eggs with an "eggsecutable" header cannot be renamed, or
-invoked via symlinks.  They *must* be invoked using their original filename, in
-order to ensure that, once running, ``pkg_resources`` will know what project
-and version is in use.  The header script will check this and exit with an
-error if the ``.egg`` file has been renamed or is invoked via a symlink that
-changes its base name.
-
-
-Declaring Dependencies
-======================
-
-``setuptools`` supports automatically installing dependencies when a package is
-installed, and including information about dependencies in Python Eggs (so that
-package management tools like EasyInstall can use the information).
-
-``setuptools`` and ``pkg_resources`` use a common syntax for specifying a
-project's required dependencies.  This syntax consists of a project's PyPI
-name, optionally followed by a comma-separated list of "extras" in square
-brackets, optionally followed by a comma-separated list of version
-specifiers.  A version specifier is one of the operators ``<``, ``>``, ``<=``,
-``>=``, ``==`` or ``!=``, followed by a version identifier.  Tokens may be
-separated by whitespace, but any whitespace or nonstandard characters within a
-project name or version identifier must be replaced with ``-``.
-
-Version specifiers for a given project are internally sorted into ascending
-version order, and used to establish what ranges of versions are acceptable.
-Adjacent redundant conditions are also consolidated (e.g. ``">1, >2"`` becomes
-``">1"``, and ``"<2,<3"`` becomes ``"<3"``). ``"!="`` versions are excised from
-the ranges they fall within.  A project's version is then checked for
-membership in the resulting ranges. (Note that providing conflicting conditions
-for the same version (e.g. "<2,>=2" or "==2,!=2") is meaningless and may
-therefore produce bizarre results.)
-
-Here are some example requirement specifiers::
-
-    docutils >= 0.3
-
-    # comment lines and \ continuations are allowed in requirement strings
-    BazSpam ==1.1, ==1.2, ==1.3, ==1.4, ==1.5, \
-        ==1.6, ==1.7  # and so are line-end comments
-
-    PEAK[FastCGI, reST]>=0.5a4
-
-    setuptools==0.5a7
-
-The simplest way to include requirement specifiers is to use the
-``install_requires`` argument to ``setup()``.  It takes a string or list of
-strings containing requirement specifiers.  If you include more than one
-requirement in a string, each requirement must begin on a new line.
-
-This has three effects:
-
-1. When your project is installed, either by using EasyInstall, ``setup.py
-   install``, or ``setup.py develop``, all of the dependencies not already
-   installed will be located (via PyPI), downloaded, built (if necessary),
-   and installed.
-
-2. Any scripts in your project will be installed with wrappers that verify
-   the availability of the specified dependencies at runtime, and ensure that
-   the correct versions are added to ``sys.path`` (e.g. if multiple versions
-   have been installed).
-
-3. Python Egg distributions will include a metadata file listing the
-   dependencies.
-
-Note, by the way, that if you declare your dependencies in ``setup.py``, you do
-*not* need to use the ``require()`` function in your scripts or modules, as
-long as you either install the project or use ``setup.py develop`` to do
-development work on it.  (See `"Development Mode"`_ below for more details on
-using ``setup.py develop``.)
-
-
-Dependencies that aren't in PyPI
---------------------------------
-
-If your project depends on packages that aren't registered in PyPI, you may
-still be able to depend on them, as long as they are available for download
-as:
-
-- an egg, in the standard distutils ``sdist`` format,
-- a single ``.py`` file, or
-- a VCS repository (Subversion, Mercurial, or Git).
-
-You just need to add some URLs to the ``dependency_links`` argument to
-``setup()``.
-
-The URLs must be either:
-
-1. direct download URLs,
-2. the URLs of web pages that contain direct download links, or
-3. the repository's URL
-
-In general, it's better to link to web pages, because it is usually less
-complex to update a web page than to release a new version of your project.
-You can also use a SourceForge ``showfiles.php`` link in the case where a
-package you depend on is distributed via SourceForge.
-
-If you depend on a package that's distributed as a single ``.py`` file, you
-must include an ``"#egg=project-version"`` suffix to the URL, to give a project
-name and version number.  (Be sure to escape any dashes in the name or version
-by replacing them with underscores.)  EasyInstall will recognize this suffix
-and automatically create a trivial ``setup.py`` to wrap the single ``.py`` file
-as an egg.
-
-In the case of a VCS checkout, you should also append ``#egg=project-version``
-in order to identify for what package that checkout should be used. You can
-append ``@REV`` to the URL's path (before the fragment) to specify a revision.
-Additionally, you can also force the VCS being used by prepending the URL with
-a certain prefix. Currently available are:
-
--  ``svn+URL`` for Subversion,
--  ``git+URL`` for Git, and
--  ``hg+URL`` for Mercurial
-
-A more complete example would be:
-
-    ``vcs+proto://host/path@revision#egg=project-version``
-
-Be careful with the version. It should match the one inside the project files.
-If you want do disregard the version, you have to omit it both in the
-``requires`` and in the URL's fragment.
-
-This will do a checkout (or a clone, in Git and Mercurial parlance) to a
-temporary folder and run ``setup.py bdist_egg``.
-
-The ``dependency_links`` option takes the form of a list of URL strings.  For
-example, the below will cause EasyInstall to search the specified page for
-eggs or source distributions, if the package's dependencies aren't already
-installed::
-
-    setup(
-        ...
-        dependency_links = [
-            "http://peak.telecommunity.com/snapshots/"
-        ],
-    )
-
-
-.. _Declaring Extras:
-
-
-Declaring "Extras" (optional features with their own dependencies)
-------------------------------------------------------------------
-
-Sometimes a project has "recommended" dependencies, that are not required for
-all uses of the project.  For example, a project might offer optional PDF
-output if ReportLab is installed, and reStructuredText support if docutils is
-installed.  These optional features are called "extras", and setuptools allows
-you to define their requirements as well.  In this way, other projects that
-require these optional features can force the additional requirements to be
-installed, by naming the desired extras in their ``install_requires``.
-
-For example, let's say that Project A offers optional PDF and reST support::
-
-    setup(
-        name="Project-A",
-        ...
-        extras_require = {
-            'PDF':  ["ReportLab>=1.2", "RXP"],
-            'reST': ["docutils>=0.3"],
-        }
-    )
-
-As you can see, the ``extras_require`` argument takes a dictionary mapping
-names of "extra" features, to strings or lists of strings describing those
-features' requirements.  These requirements will *not* be automatically
-installed unless another package depends on them (directly or indirectly) by
-including the desired "extras" in square brackets after the associated project
-name.  (Or if the extras were listed in a requirement spec on the EasyInstall
-command line.)
-
-Extras can be used by a project's `entry points`_ to specify dynamic
-dependencies.  For example, if Project A includes a "rst2pdf" script, it might
-declare it like this, so that the "PDF" requirements are only resolved if the
-"rst2pdf" script is run::
-
-    setup(
-        name="Project-A",
-        ...
-        entry_points = {
-            'console_scripts':
-                ['rst2pdf = project_a.tools.pdfgen [PDF]'],
-                ['rst2html = project_a.tools.htmlgen'],
-                # more script entry points ...
-        }
-    )
-
-Projects can also use another project's extras when specifying dependencies.
-For example, if project B needs "project A" with PDF support installed, it
-might declare the dependency like this::
-
-    setup(
-        name="Project-B",
-        install_requires = ["Project-A[PDF]"],
-        ...
-    )
-
-This will cause ReportLab to be installed along with project A, if project B is
-installed -- even if project A was already installed.  In this way, a project
-can encapsulate groups of optional "downstream dependencies" under a feature
-name, so that packages that depend on it don't have to know what the downstream
-dependencies are.  If a later version of Project A builds in PDF support and
-no longer needs ReportLab, or if it ends up needing other dependencies besides
-ReportLab in order to provide PDF support, Project B's setup information does
-not need to change, but the right packages will still be installed if needed.
-
-Note, by the way, that if a project ends up not needing any other packages to
-support a feature, it should keep an empty requirements list for that feature
-in its ``extras_require`` argument, so that packages depending on that feature
-don't break (due to an invalid feature name).  For example, if Project A above
-builds in PDF support and no longer needs ReportLab, it could change its
-setup to this::
-
-    setup(
-        name="Project-A",
-        ...
-        extras_require = {
-            'PDF':  [],
-            'reST': ["docutils>=0.3"],
-        }
-    )
-
-so that Package B doesn't have to remove the ``[PDF]`` from its requirement
-specifier.
-
-
-Including Data Files
-====================
-
-The distutils have traditionally allowed installation of "data files", which
-are placed in a platform-specific location.  However, the most common use case
-for data files distributed with a package is for use *by* the package, usually
-by including the data files in the package directory.
-
-Setuptools offers three ways to specify data files to be included in your
-packages.  First, you can simply use the ``include_package_data`` keyword,
-e.g.::
-
-    from setuptools import setup, find_packages
-    setup(
-        ...
-        include_package_data = True
-    )
-
-This tells setuptools to install any data files it finds in your packages.
-The data files must be under CVS or Subversion control, or else they must be
-specified via the distutils' ``MANIFEST.in`` file.  (They can also be tracked
-by another revision control system, using an appropriate plugin.  See the
-section below on `Adding Support for Other Revision Control Systems`_ for
-information on how to write such plugins.)
-
-If the data files are not under version control, or are not in a supported
-version control system, or if you want finer-grained control over what files
-are included (for example, if you have documentation files in your package
-directories and want to exclude them from installation), then you can also use
-the ``package_data`` keyword, e.g.::
-
-    from setuptools import setup, find_packages
-    setup(
-        ...
-        package_data = {
-            # If any package contains *.txt or *.rst files, include them:
-            '': ['*.txt', '*.rst'],
-            # And include any *.msg files found in the 'hello' package, too:
-            'hello': ['*.msg'],
-        }
-    )
-
-The ``package_data`` argument is a dictionary that maps from package names to
-lists of glob patterns.  The globs may include subdirectory names, if the data
-files are contained in a subdirectory of the package.  For example, if the
-package tree looks like this::
-
-    setup.py
-    src/
-        mypkg/
-            __init__.py
-            mypkg.txt
-            data/
-                somefile.dat
-                otherdata.dat
-
-The setuptools setup file might look like this::
-
-    from setuptools import setup, find_packages
-    setup(
-        ...
-        packages = find_packages('src'),  # include all packages under src
-        package_dir = {'':'src'},   # tell distutils packages are under src
-
-        package_data = {
-            # If any package contains *.txt files, include them:
-            '': ['*.txt'],
-            # And include any *.dat files found in the 'data' subdirectory
-            # of the 'mypkg' package, also:
-            'mypkg': ['data/*.dat'],
-        }
-    )
-
-Notice that if you list patterns in ``package_data`` under the empty string,
-these patterns are used to find files in every package, even ones that also
-have their own patterns listed.  Thus, in the above example, the ``mypkg.txt``
-file gets included even though it's not listed in the patterns for ``mypkg``.
-
-Also notice that if you use paths, you *must* use a forward slash (``/``) as
-the path separator, even if you are on Windows.  Setuptools automatically
-converts slashes to appropriate platform-specific separators at build time.
-
-(Note: although the ``package_data`` argument was previously only available in
-``setuptools``, it was also added to the Python ``distutils`` package as of
-Python 2.4; there is `some documentation for the feature`__ available on the
-python.org website.  If using the setuptools-specific ``include_package_data``
-argument, files specified by ``package_data`` will *not* be automatically
-added to the manifest unless they are tracked by a supported version control
-system, or are listed in the MANIFEST.in file.)
-
-__ http://docs.python.org/dist/node11.html
-
-Sometimes, the ``include_package_data`` or ``package_data`` options alone
-aren't sufficient to precisely define what files you want included.  For
-example, you may want to include package README files in your revision control
-system and source distributions, but exclude them from being installed.  So,
-setuptools offers an ``exclude_package_data`` option as well, that allows you
-to do things like this::
-
-    from setuptools import setup, find_packages
-    setup(
-        ...
-        packages = find_packages('src'),  # include all packages under src
-        package_dir = {'':'src'},   # tell distutils packages are under src
-
-        include_package_data = True,    # include everything in source control
-
-        # ...but exclude README.txt from all packages
-        exclude_package_data = { '': ['README.txt'] },
-    )
-
-The ``exclude_package_data`` option is a dictionary mapping package names to
-lists of wildcard patterns, just like the ``package_data`` option.  And, just
-as with that option, a key of ``''`` will apply the given pattern(s) to all
-packages.  However, any files that match these patterns will be *excluded*
-from installation, even if they were listed in ``package_data`` or were
-included as a result of using ``include_package_data``.
-
-In summary, the three options allow you to:
-
-``include_package_data``
-    Accept all data files and directories matched by ``MANIFEST.in`` or found
-    in source control.
-
-``package_data``
-    Specify additional patterns to match files and directories that may or may
-    not be matched by ``MANIFEST.in`` or found in source control.
-
-``exclude_package_data``
-    Specify patterns for data files and directories that should *not* be
-    included when a package is installed, even if they would otherwise have
-    been included due to the use of the preceding options.
-
-NOTE: Due to the way the distutils build process works, a data file that you
-include in your project and then stop including may be "orphaned" in your
-project's build directories, requiring you to run ``setup.py clean --all`` to
-fully remove them.  This may also be important for your users and contributors
-if they track intermediate revisions of your project using Subversion; be sure
-to let them know when you make changes that remove files from inclusion so they
-can run ``setup.py clean --all``.
-
-
-Accessing Data Files at Runtime
--------------------------------
-
-Typically, existing programs manipulate a package's ``__file__`` attribute in
-order to find the location of data files.  However, this manipulation isn't
-compatible with PEP 302-based import hooks, including importing from zip files
-and Python Eggs.  It is strongly recommended that, if you are using data files,
-you should use the `Resource Management API`_ of ``pkg_resources`` to access
-them.  The ``pkg_resources`` module is distributed as part of setuptools, so if
-you're using setuptools to distribute your package, there is no reason not to
-use its resource management API.  See also `Accessing Package Resources`_ for
-a quick example of converting code that uses ``__file__`` to use
-``pkg_resources`` instead.
-
-.. _Resource Management API: http://peak.telecommunity.com/DevCenter/PythonEggs#resource-management
-.. _Accessing Package Resources: http://peak.telecommunity.com/DevCenter/PythonEggs#accessing-package-resources
-
-
-Non-Package Data Files
-----------------------
-
-The ``distutils`` normally install general "data files" to a platform-specific
-location (e.g. ``/usr/share``).  This feature intended to be used for things
-like documentation, example configuration files, and the like.  ``setuptools``
-does not install these data files in a separate location, however.  They are
-bundled inside the egg file or directory, alongside the Python modules and
-packages.  The data files can also be accessed using the `Resource Management
-API`_, by specifying a ``Requirement`` instead of a package name::
-
-    from pkg_resources import Requirement, resource_filename
-    filename = resource_filename(Requirement.parse("MyProject"),"sample.conf")
-
-The above code will obtain the filename of the "sample.conf" file in the data
-root of the "MyProject" distribution.
-
-Note, by the way, that this encapsulation of data files means that you can't
-actually install data files to some arbitrary location on a user's machine;
-this is a feature, not a bug.  You can always include a script in your
-distribution that extracts and copies your the documentation or data files to
-a user-specified location, at their discretion.  If you put related data files
-in a single directory, you can use ``resource_filename()`` with the directory
-name to get a filesystem directory that then can be copied with the ``shutil``
-module.  (Even if your package is installed as a zipfile, calling
-``resource_filename()`` on a directory will return an actual filesystem
-directory, whose contents will be that entire subtree of your distribution.)
-
-(Of course, if you're writing a new package, you can just as easily place your
-data files or directories inside one of your packages, rather than using the
-distutils' approach.  However, if you're updating an existing application, it
-may be simpler not to change the way it currently specifies these data files.)
-
-
-Automatic Resource Extraction
------------------------------
-
-If you are using tools that expect your resources to be "real" files, or your
-project includes non-extension native libraries or other files that your C
-extensions expect to be able to access, you may need to list those files in
-the ``eager_resources`` argument to ``setup()``, so that the files will be
-extracted together, whenever a C extension in the project is imported.
-
-This is especially important if your project includes shared libraries *other*
-than distutils-built C extensions, and those shared libraries use file
-extensions other than ``.dll``, ``.so``, or ``.dylib``, which are the
-extensions that setuptools 0.6a8 and higher automatically detects as shared
-libraries and adds to the ``native_libs.txt`` file for you.  Any shared
-libraries whose names do not end with one of those extensions should be listed
-as ``eager_resources``, because they need to be present in the filesystem when
-he C extensions that link to them are used.
-
-The ``pkg_resources`` runtime for compressed packages will automatically
-extract *all* C extensions and ``eager_resources`` at the same time, whenever
-*any* C extension or eager resource is requested via the ``resource_filename()``
-API.  (C extensions are imported using ``resource_filename()`` internally.)
-This ensures that C extensions will see all of the "real" files that they
-expect to see.
-
-Note also that you can list directory resource names in ``eager_resources`` as
-well, in which case the directory's contents (including subdirectories) will be
-extracted whenever any C extension or eager resource is requested.
-
-Please note that if you're not sure whether you need to use this argument, you
-don't!  It's really intended to support projects with lots of non-Python
-dependencies and as a last resort for crufty projects that can't otherwise
-handle being compressed.  If your package is pure Python, Python plus data
-files, or Python plus C, you really don't need this.  You've got to be using
-either C or an external program that needs "real" files in your project before
-there's any possibility of ``eager_resources`` being relevant to your project.
-
-
-Extensible Applications and Frameworks
-======================================
-
-
-.. _Entry Points:
-
-Dynamic Discovery of Services and Plugins
------------------------------------------
-
-``setuptools`` supports creating libraries that "plug in" to extensible
-applications and frameworks, by letting you register "entry points" in your
-project that can be imported by the application or framework.
-
-For example, suppose that a blogging tool wants to support plugins
-that provide translation for various file types to the blog's output format.
-The framework might define an "entry point group" called ``blogtool.parsers``,
-and then allow plugins to register entry points for the file extensions they
-support.
-
-This would allow people to create distributions that contain one or more
-parsers for different file types, and then the blogging tool would be able to
-find the parsers at runtime by looking up an entry point for the file
-extension (or mime type, or however it wants to).
-
-Note that if the blogging tool includes parsers for certain file formats, it
-can register these as entry points in its own setup script, which means it
-doesn't have to special-case its built-in formats.  They can just be treated
-the same as any other plugin's entry points would be.
-
-If you're creating a project that plugs in to an existing application or
-framework, you'll need to know what entry points or entry point groups are
-defined by that application or framework.  Then, you can register entry points
-in your setup script.  Here are a few examples of ways you might register an
-``.rst`` file parser entry point in the ``blogtool.parsers`` entry point group,
-for our hypothetical blogging tool::
-
-    setup(
-        # ...
-        entry_points = {'blogtool.parsers': '.rst = some_module:SomeClass'}
-    )
-
-    setup(
-        # ...
-        entry_points = {'blogtool.parsers': ['.rst = some_module:a_func']}
-    )
-
-    setup(
-        # ...
-        entry_points = """
-            [blogtool.parsers]
-            .rst = some.nested.module:SomeClass.some_classmethod [reST]
-        """,
-        extras_require = dict(reST = "Docutils>=0.3.5")
-    )
-
-The ``entry_points`` argument to ``setup()`` accepts either a string with
-``.ini``-style sections, or a dictionary mapping entry point group names to
-either strings or lists of strings containing entry point specifiers.  An
-entry point specifier consists of a name and value, separated by an ``=``
-sign.  The value consists of a dotted module name, optionally followed by a
-``:`` and a dotted identifier naming an object within the module.  It can
-also include a bracketed list of "extras" that are required for the entry
-point to be used.  When the invoking application or framework requests loading
-of an entry point, any requirements implied by the associated extras will be
-passed to ``pkg_resources.require()``, so that an appropriate error message
-can be displayed if the needed package(s) are missing.  (Of course, the
-invoking app or framework can ignore such errors if it wants to make an entry
-point optional if a requirement isn't installed.)
-
-
-Defining Additional Metadata
-----------------------------
-
-Some extensible applications and frameworks may need to define their own kinds
-of metadata to include in eggs, which they can then access using the
-``pkg_resources`` metadata APIs.  Ordinarily, this is done by having plugin
-developers include additional files in their ``ProjectName.egg-info``
-directory.  However, since it can be tedious to create such files by hand, you
-may want to create a distutils extension that will create the necessary files
-from arguments to ``setup()``, in much the same way that ``setuptools`` does
-for many of the ``setup()`` arguments it adds.  See the section below on
-`Creating distutils Extensions`_ for more details, especially the subsection on
-`Adding new EGG-INFO Files`_.
-
-
-"Development Mode"
-==================
-
-Under normal circumstances, the ``distutils`` assume that you are going to
-build a distribution of your project, not use it in its "raw" or "unbuilt"
-form.  If you were to use the ``distutils`` that way, you would have to rebuild
-and reinstall your project every time you made a change to it during
-development.
-
-Another problem that sometimes comes up with the ``distutils`` is that you may
-need to do development on two related projects at the same time.  You may need
-to put both projects' packages in the same directory to run them, but need to
-keep them separate for revision control purposes.  How can you do this?
-
-Setuptools allows you to deploy your projects for use in a common directory or
-staging area, but without copying any files.  Thus, you can edit each project's
-code in its checkout directory, and only need to run build commands when you
-change a project's C extensions or similarly compiled files.  You can even
-deploy a project into another project's checkout directory, if that's your
-preferred way of working (as opposed to using a common independent staging area
-or the site-packages directory).
-
-To do this, use the ``setup.py develop`` command.  It works very similarly to
-``setup.py install`` or the EasyInstall tool, except that it doesn't actually
-install anything.  Instead, it creates a special ``.egg-link`` file in the
-deployment directory, that links to your project's source code.  And, if your
-deployment directory is Python's ``site-packages`` directory, it will also
-update the ``easy-install.pth`` file to include your project's source code,
-thereby making it available on ``sys.path`` for all programs using that Python
-installation.
-
-If you have enabled the ``use_2to3`` flag, then of course the ``.egg-link``
-will not link directly to your source code when run under Python 3, since
-that source code would be made for Python 2 and not work under Python 3.
-Instead the ``setup.py develop`` will build Python 3 code under the ``build``
-directory, and link there. This means that after doing code changes you will
-have to run ``setup.py build`` before these changes are picked up by your
-Python 3 installation.
-
-In addition, the ``develop`` command creates wrapper scripts in the target
-script directory that will run your in-development scripts after ensuring that
-all your ``install_requires`` packages are available on ``sys.path``.
-
-You can deploy the same project to multiple staging areas, e.g. if you have
-multiple projects on the same machine that are sharing the same project you're
-doing development work.
-
-When you're done with a given development task, you can remove the project
-source from a staging area using ``setup.py develop --uninstall``, specifying
-the desired staging area if it's not the default.
-
-There are several options to control the precise behavior of the ``develop``
-command; see the section on the `develop`_ command below for more details.
-
-Note that you can also apply setuptools commands to non-setuptools projects,
-using commands like this::
-
-   python -c "import setuptools; execfile('setup.py')" develop
-
-That is, you can simply list the normal setup commands and options following
-the quoted part.
-
-
-Distributing a ``setuptools``-based project
-===========================================
-
-Using ``setuptools``...  Without bundling it!
----------------------------------------------
-
-Your users might not have ``setuptools`` installed on their machines, or even
-if they do, it might not be the right version.  Fixing this is easy; just
-download `distribute_setup.py`_, and put it in the same directory as your ``setup.py``
-script.  (Be sure to add it to your revision control system, too.)  Then add
-these two lines to the very top of your setup script, before the script imports
-anything from setuptools:
-
-.. code-block:: python
-
-    import distribute_setup
-    distribute_setup.use_setuptools()
-
-That's it.  The ``distribute_setup`` module will automatically download a matching
-version of ``setuptools`` from PyPI, if it isn't present on the target system.
-Whenever you install an updated version of setuptools, you should also update
-your projects' ``distribute_setup.py`` files, so that a matching version gets installed
-on the target machine(s).
-
-By the way, setuptools supports the new PyPI "upload" command, so you can use
-``setup.py sdist upload`` or ``setup.py bdist_egg upload`` to upload your
-source or egg distributions respectively.  Your project's current version must
-be registered with PyPI first, of course; you can use ``setup.py register`` to
-do that.  Or you can do it all in one step, e.g. ``setup.py register sdist
-bdist_egg upload`` will register the package, build source and egg
-distributions, and then upload them both to PyPI, where they'll be easily
-found by other projects that depend on them.
-
-(By the way, if you need to distribute a specific version of ``setuptools``,
-you can specify the exact version and base download URL as parameters to the
-``use_setuptools()`` function.  See the function's docstring for details.)
-
-
-What Your Users Should Know
----------------------------
-
-In general, a setuptools-based project looks just like any distutils-based
-project -- as long as your users have an internet connection and are installing
-to ``site-packages``, that is.  But for some users, these conditions don't
-apply, and they may become frustrated if this is their first encounter with
-a setuptools-based project.  To keep these users happy, you should review the
-following topics in your project's installation instructions, if they are
-relevant to your project and your target audience isn't already familiar with
-setuptools and ``easy_install``.
-
-Network Access
-    If your project is using ``distribute_setup``, you should inform users of the
-    need to either have network access, or to preinstall the correct version of
-    setuptools using the `EasyInstall installation instructions`_.  Those
-    instructions also have tips for dealing with firewalls as well as how to
-    manually download and install setuptools.
-
-Custom Installation Locations
-    You should inform your users that if they are installing your project to
-    somewhere other than the main ``site-packages`` directory, they should
-    first install setuptools using the instructions for `Custom Installation
-    Locations`_, before installing your project.
-
-Your Project's Dependencies
-    If your project depends on other projects that may need to be downloaded
-    from PyPI or elsewhere, you should list them in your installation
-    instructions, or tell users how to find out what they are.  While most
-    users will not need this information, any users who don't have unrestricted
-    internet access may have to find, download, and install the other projects
-    manually.  (Note, however, that they must still install those projects
-    using ``easy_install``, or your project will not know they are installed,
-    and your setup script will try to download them again.)
-
-    If you want to be especially friendly to users with limited network access,
-    you may wish to build eggs for your project and its dependencies, making
-    them all available for download from your site, or at least create a page
-    with links to all of the needed eggs.  In this way, users with limited
-    network access can manually download all the eggs to a single directory,
-    then use the ``-f`` option of ``easy_install`` to specify the directory
-    to find eggs in.  Users who have full network access can just use ``-f``
-    with the URL of your download page, and ``easy_install`` will find all the
-    needed eggs using your links directly.  This is also useful when your
-    target audience isn't able to compile packages (e.g. most Windows users)
-    and your package or some of its dependencies include C code.
-
-Subversion or CVS Users and Co-Developers
-    Users and co-developers who are tracking your in-development code using
-    CVS, Subversion, or some other revision control system should probably read
-    this manual's sections regarding such development.  Alternately, you may
-    wish to create a quick-reference guide containing the tips from this manual
-    that apply to your particular situation.  For example, if you recommend
-    that people use ``setup.py develop`` when tracking your in-development
-    code, you should let them know that this needs to be run after every update
-    or commit.
-
-    Similarly, if you remove modules or data files from your project, you
-    should remind them to run ``setup.py clean --all`` and delete any obsolete
-    ``.pyc`` or ``.pyo``.  (This tip applies to the distutils in general, not
-    just setuptools, but not everybody knows about them; be kind to your users
-    by spelling out your project's best practices rather than leaving them
-    guessing.)
-
-Creating System Packages
-    Some users want to manage all Python packages using a single package
-    manager, and sometimes that package manager isn't ``easy_install``!
-    Setuptools currently supports ``bdist_rpm``, ``bdist_wininst``, and
-    ``bdist_dumb`` formats for system packaging.  If a user has a locally-
-    installed "bdist" packaging tool that internally uses the distutils
-    ``install`` command, it should be able to work with ``setuptools``.  Some
-    examples of "bdist" formats that this should work with include the
-    ``bdist_nsi`` and ``bdist_msi`` formats for Windows.
-
-    However, packaging tools that build binary distributions by running
-    ``setup.py install`` on the command line or as a subprocess will require
-    modification to work with setuptools.  They should use the
-    ``--single-version-externally-managed`` option to the ``install`` command,
-    combined with the standard ``--root`` or ``--record`` options.
-    See the `install command`_ documentation below for more details.  The
-    ``bdist_deb`` command is an example of a command that currently requires
-    this kind of patching to work with setuptools.
-
-    If you or your users have a problem building a usable system package for
-    your project, please report the problem via the mailing list so that
-    either the "bdist" tool in question or setuptools can be modified to
-    resolve the issue.
-
-
-
-Managing Multiple Projects
---------------------------
-
-If you're managing several projects that need to use ``distribute_setup``, and you
-are using Subversion as your revision control system, you can use the
-"svn:externals" property to share a single copy of ``distribute_setup`` between
-projects, so that it will always be up-to-date whenever you check out or update
-an individual project, without having to manually update each project to use
-a new version.
-
-However, because Subversion only supports using directories as externals, you
-have to turn ``distribute_setup.py`` into ``distribute_setup/__init__.py`` in order
-to do this, then create "externals" definitions that map the ``distribute_setup``
-directory into each project.  Also, if any of your projects use
-``find_packages()`` on their setup directory, you will need to exclude the
-resulting ``distribute_setup`` package, to keep it from being included in your
-distributions, e.g.::
-
-    setup(
-        ...
-        packages = find_packages(exclude=['distribute_setup']),
-    )
-
-Of course, the ``distribute_setup`` package will still be included in your
-packages' source distributions, as it needs to be.
-
-For your convenience, you may use the following external definition, which will
-track the latest version of setuptools::
-
-    ez_setup svn://svn.eby-sarna.com/svnroot/ez_setup
-
-You can set this by executing this command in your project directory::
-
-    svn propedit svn:externals .
-
-And then adding the line shown above to the file that comes up for editing.
-
-
-Setting the ``zip_safe`` flag
------------------------------
-
-For maximum performance, Python packages are best installed as zip files.
-Not all packages, however, are capable of running in compressed form, because
-they may expect to be able to access either source code or data files as
-normal operating system files.  So, ``setuptools`` can install your project
-as a zipfile or a directory, and its default choice is determined by the
-project's ``zip_safe`` flag.
-
-You can pass a True or False value for the ``zip_safe`` argument to the
-``setup()`` function, or you can omit it.  If you omit it, the ``bdist_egg``
-command will analyze your project's contents to see if it can detect any
-conditions that would prevent it from working in a zipfile.  It will output
-notices to the console about any such conditions that it finds.
-
-Currently, this analysis is extremely conservative: it will consider the
-project unsafe if it contains any C extensions or datafiles whatsoever.  This
-does *not* mean that the project can't or won't work as a zipfile!  It just
-means that the ``bdist_egg`` authors aren't yet comfortable asserting that
-the project *will* work.  If the project contains no C or data files, and does
-no ``__file__`` or ``__path__`` introspection or source code manipulation, then
-there is an extremely solid chance the project will work when installed as a
-zipfile.  (And if the project uses ``pkg_resources`` for all its data file
-access, then C extensions and other data files shouldn't be a problem at all.
-See the `Accessing Data Files at Runtime`_ section above for more information.)
-
-However, if ``bdist_egg`` can't be *sure* that your package will work, but
-you've checked over all the warnings it issued, and you are either satisfied it
-*will* work (or if you want to try it for yourself), then you should set
-``zip_safe`` to ``True`` in your ``setup()`` call.  If it turns out that it
-doesn't work, you can always change it to ``False``, which will force
-``setuptools`` to install your project as a directory rather than as a zipfile.
-
-Of course, the end-user can still override either decision, if they are using
-EasyInstall to install your package.  And, if you want to override for testing
-purposes, you can just run ``setup.py easy_install --zip-ok .`` or ``setup.py
-easy_install --always-unzip .`` in your project directory. to install the
-package as a zipfile or directory, respectively.
-
-In the future, as we gain more experience with different packages and become
-more satisfied with the robustness of the ``pkg_resources`` runtime, the
-"zip safety" analysis may become less conservative.  However, we strongly
-recommend that you determine for yourself whether your project functions
-correctly when installed as a zipfile, correct any problems if you can, and
-then make an explicit declaration of ``True`` or ``False`` for the ``zip_safe``
-flag, so that it will not be necessary for ``bdist_egg`` or ``EasyInstall`` to
-try to guess whether your project can work as a zipfile.
-
-
-Namespace Packages
-------------------
-
-Sometimes, a large package is more useful if distributed as a collection of
-smaller eggs.  However, Python does not normally allow the contents of a
-package to be retrieved from more than one location.  "Namespace packages"
-are a solution for this problem.  When you declare a package to be a namespace
-package, it means that the package has no meaningful contents in its
-``__init__.py``, and that it is merely a container for modules and subpackages.
-
-The ``pkg_resources`` runtime will then automatically ensure that the contents
-of namespace packages that are spread over multiple eggs or directories are
-combined into a single "virtual" package.
-
-The ``namespace_packages`` argument to ``setup()`` lets you declare your
-project's namespace packages, so that they will be included in your project's
-metadata.  The argument should list the namespace packages that the egg
-participates in.  For example, the ZopeInterface project might do this::
-
-    setup(
-        # ...
-        namespace_packages = ['zope']
-    )
-
-because it contains a ``zope.interface`` package that lives in the ``zope``
-namespace package.  Similarly, a project for a standalone ``zope.publisher``
-would also declare the ``zope`` namespace package.  When these projects are
-installed and used, Python will see them both as part of a "virtual" ``zope``
-package, even though they will be installed in different locations.
-
-Namespace packages don't have to be top-level packages.  For example, Zope 3's
-``zope.app`` package is a namespace package, and in the future PEAK's
-``peak.util`` package will be too.
-
-Note, by the way, that your project's source tree must include the namespace
-packages' ``__init__.py`` files (and the ``__init__.py`` of any parent
-packages), in a normal Python package layout.  These ``__init__.py`` files
-*must* contain the line::
-
-    __import__('pkg_resources').declare_namespace(__name__)
-
-This code ensures that the namespace package machinery is operating and that
-the current package is registered as a namespace package.
-
-You must NOT include any other code and data in a namespace package's
-``__init__.py``.  Even though it may appear to work during development, or when
-projects are installed as ``.egg`` files, it will not work when the projects
-are installed using "system" packaging tools -- in such cases the
-``__init__.py`` files will not be installed, let alone executed.
-
-You must include the ``declare_namespace()``  line in the ``__init__.py`` of
-*every* project that has contents for the namespace package in question, in
-order to ensure that the namespace will be declared regardless of which
-project's copy of ``__init__.py`` is loaded first.  If the first loaded
-``__init__.py`` doesn't declare it, it will never *be* declared, because no
-other copies will ever be loaded!)
-
-
-TRANSITIONAL NOTE
-~~~~~~~~~~~~~~~~~
-
-Setuptools 0.6a automatically calls ``declare_namespace()`` for you at runtime,
-but the 0.7a versions will *not*.  This is because the automatic declaration
-feature has some negative side effects, such as needing to import all namespace
-packages during the initialization of the ``pkg_resources`` runtime, and also
-the need for ``pkg_resources`` to be explicitly imported before any namespace
-packages work at all.  Beginning with the 0.7a releases, you'll be responsible
-for including your own declaration lines, and the automatic declaration feature
-will be dropped to get rid of the negative side effects.
-
-During the remainder of the 0.6 development cycle, therefore, setuptools will
-warn you about missing ``declare_namespace()`` calls in your ``__init__.py``
-files, and you should correct these as soon as possible before setuptools 0.7a1
-is released.  Namespace packages without declaration lines will not work
-correctly once a user has upgraded to setuptools 0.7a1, so it's important that
-you make this change now in order to avoid having your code break in the field.
-Our apologies for the inconvenience, and thank you for your patience.
-
-
-
-Tagging and "Daily Build" or "Snapshot" Releases
-------------------------------------------------
-
-When a set of related projects are under development, it may be important to
-track finer-grained version increments than you would normally use for e.g.
-"stable" releases.  While stable releases might be measured in dotted numbers
-with alpha/beta/etc. status codes, development versions of a project often
-need to be tracked by revision or build number or even build date.  This is
-especially true when projects in development need to refer to one another, and
-therefore may literally need an up-to-the-minute version of something!
-
-To support these scenarios, ``setuptools`` allows you to "tag" your source and
-egg distributions by adding one or more of the following to the project's
-"official" version identifier:
-
-* A manually-specified pre-release tag, such as "build" or "dev", or a
-  manually-specified post-release tag, such as a build or revision number
-  (``--tag-build=STRING, -bSTRING``)
-
-* A "last-modified revision number" string generated automatically from
-  Subversion's metadata (assuming your project is being built from a Subversion
-  "working copy")  (``--tag-svn-revision, -r``)
-
-* An 8-character representation of the build date (``--tag-date, -d``), as
-  a postrelease tag
-
-You can add these tags by adding ``egg_info`` and the desired options to
-the command line ahead of the ``sdist`` or ``bdist`` commands that you want
-to generate a daily build or snapshot for.  See the section below on the
-`egg_info`_ command for more details.
-
-(Also, before you release your project, be sure to see the section above on
-`Specifying Your Project's Version`_ for more information about how pre- and
-post-release tags affect how setuptools and EasyInstall interpret version
-numbers.  This is important in order to make sure that dependency processing
-tools will know which versions of your project are newer than others.)
-
-Finally, if you are creating builds frequently, and either building them in a
-downloadable location or are copying them to a distribution server, you should
-probably also check out the `rotate`_ command, which lets you automatically
-delete all but the N most-recently-modified distributions matching a glob
-pattern.  So, you can use a command line like::
-
-    setup.py egg_info -rbDEV bdist_egg rotate -m.egg -k3
-
-to build an egg whose version info includes 'DEV-rNNNN' (where NNNN is the
-most recent Subversion revision that affected the source tree), and then
-delete any egg files from the distribution directory except for the three
-that were built most recently.
-
-If you have to manage automated builds for multiple packages, each with
-different tagging and rotation policies, you may also want to check out the
-`alias`_ command, which would let each package define an alias like ``daily``
-that would perform the necessary tag, build, and rotate commands.  Then, a
-simpler script or cron job could just run ``setup.py daily`` in each project
-directory.  (And, you could also define sitewide or per-user default versions
-of the ``daily`` alias, so that projects that didn't define their own would
-use the appropriate defaults.)
-
-
-Generating Source Distributions
--------------------------------
-
-``setuptools`` enhances the distutils' default algorithm for source file
-selection, so that all files managed by CVS or Subversion in your project tree
-are included in any source distribution you build.  This is a big improvement
-over having to manually write a ``MANIFEST.in`` file and try to keep it in
-sync with your project.  So, if you are using CVS or Subversion, and your
-source distributions only need to include files that you're tracking in
-revision control, don't create a a ``MANIFEST.in`` file for your project.
-(And, if you already have one, you might consider deleting it the next time
-you would otherwise have to change it.)
-
-(NOTE: other revision control systems besides CVS and Subversion can be
-supported using plugins; see the section below on `Adding Support for Other
-Revision Control Systems`_ for information on how to write such plugins.)
-
-If you need to include automatically generated files, or files that are kept in
-an unsupported revision control system, you'll need to create a ``MANIFEST.in``
-file to specify any files that the default file location algorithm doesn't
-catch.  See the distutils documentation for more information on the format of
-the ``MANIFEST.in`` file.
-
-But, be sure to ignore any part of the distutils documentation that deals with
-``MANIFEST`` or how it's generated from ``MANIFEST.in``; setuptools shields you
-from these issues and doesn't work the same way in any case.  Unlike the
-distutils, setuptools regenerates the source distribution manifest file
-every time you build a source distribution, and it builds it inside the
-project's ``.egg-info`` directory, out of the way of your main project
-directory.  You therefore need not worry about whether it is up-to-date or not.
-
-Indeed, because setuptools' approach to determining the contents of a source
-distribution is so much simpler, its ``sdist`` command omits nearly all of
-the options that the distutils' more complex ``sdist`` process requires.  For
-all practical purposes, you'll probably use only the ``--formats`` option, if
-you use any option at all.
-
-(By the way, if you're using some other revision control system, you might
-consider creating and publishing a `revision control plugin for setuptools`_.)
-
-
-.. _revision control plugin for setuptools: `Adding Support for Other Revision Control Systems`_
-
-
-Making your package available for EasyInstall
----------------------------------------------
-
-If you use the ``register`` command (``setup.py register``) to register your
-package with PyPI, that's most of the battle right there.  (See the
-`docs for the register command`_ for more details.)
-
-.. _docs for the register command: http://docs.python.org/dist/package-index.html
-
-If you also use the `upload`_ command to upload actual distributions of your
-package, that's even better, because EasyInstall will be able to find and
-download them directly from your project's PyPI page.
-
-However, there may be reasons why you don't want to upload distributions to
-PyPI, and just want your existing distributions (or perhaps a Subversion
-checkout) to be used instead.
-
-So here's what you need to do before running the ``register`` command.  There
-are three ``setup()`` arguments that affect EasyInstall:
-
-``url`` and ``download_url``
-   These become links on your project's PyPI page.  EasyInstall will examine
-   them to see if they link to a package ("primary links"), or whether they are
-   HTML pages.  If they're HTML pages, EasyInstall scans all HREF's on the
-   page for primary links
-
-``long_description``
-   EasyInstall will check any URLs contained in this argument to see if they
-   are primary links.
-
-A URL is considered a "primary link" if it is a link to a .tar.gz, .tgz, .zip,
-.egg, .egg.zip, .tar.bz2, or .exe file, or if it has an ``#egg=project`` or
-``#egg=project-version`` fragment identifier attached to it.  EasyInstall
-attempts to determine a project name and optional version number from the text
-of a primary link *without* downloading it.  When it has found all the primary
-links, EasyInstall will select the best match based on requested version,
-platform compatibility, and other criteria.
-
-So, if your ``url`` or ``download_url`` point either directly to a downloadable
-source distribution, or to HTML page(s) that have direct links to such, then
-EasyInstall will be able to locate downloads automatically.  If you want to
-make Subversion checkouts available, then you should create links with either
-``#egg=project`` or ``#egg=project-version`` added to the URL.  You should
-replace ``project`` and ``version`` with the values they would have in an egg
-filename.  (Be sure to actually generate an egg and then use the initial part
-of the filename, rather than trying to guess what the escaped form of the
-project name and version number will be.)
-
-Note that Subversion checkout links are of lower precedence than other kinds
-of distributions, so EasyInstall will not select a Subversion checkout for
-downloading unless it has a version included in the ``#egg=`` suffix, and
-it's a higher version than EasyInstall has seen in any other links for your
-project.
-
-As a result, it's a common practice to use mark checkout URLs with a version of
-"dev" (i.e., ``#egg=projectname-dev``), so that users can do something like
-this::
-
-    easy_install --editable projectname==dev
-
-in order to check out the in-development version of ``projectname``.
-
-
-Managing "Continuous Releases" Using Subversion
------------------------------------------------
-
-If you expect your users to track in-development versions of your project via
-Subversion, there are a few additional steps you should take to ensure that
-things work smoothly with EasyInstall.  First, you should add the following
-to your project's ``setup.cfg`` file:
-
-.. code-block:: ini
-
-    [egg_info]
-    tag_build = .dev
-    tag_svn_revision = 1
-
-This will tell ``setuptools`` to generate package version numbers like
-``1.0a1.dev-r1263``, which will be considered to be an *older* release than
-``1.0a1``.  Thus, when you actually release ``1.0a1``, the entire egg
-infrastructure (including ``setuptools``, ``pkg_resources`` and EasyInstall)
-will know that ``1.0a1`` supersedes any interim snapshots from Subversion, and
-handle upgrades accordingly.
-
-(Note: the project version number you specify in ``setup.py`` should always be
-the *next* version of your software, not the last released version.
-Alternately, you can leave out the ``tag_build=.dev``, and always use the
-*last* release as a version number, so that your post-1.0 builds are labelled
-``1.0-r1263``, indicating a post-1.0 patchlevel.  Most projects so far,
-however, seem to prefer to think of their project as being a future version
-still under development, rather than a past version being patched.  It is of
-course possible for a single project to have both situations, using
-post-release numbering on release branches, and pre-release numbering on the
-trunk.  But you don't have to make things this complex if you don't want to.)
-
-Commonly, projects releasing code from Subversion will include a PyPI link to
-their checkout URL (as described in the previous section) with an
-``#egg=projectname-dev`` suffix.  This allows users to request EasyInstall
-to download ``projectname==dev`` in order to get the latest in-development
-code.  Note that if your project depends on such in-progress code, you may wish
-to specify your ``install_requires`` (or other requirements) to include
-``==dev``, e.g.:
-
-.. code-block:: python
-
-    install_requires = ["OtherProject>=0.2a1.dev-r143,==dev"]
-
-The above example says, "I really want at least this particular development
-revision number, but feel free to follow and use an ``#egg=OtherProject-dev``
-link if you find one".  This avoids the need to have actual source or binary
-distribution snapshots of in-development code available, just to be able to
-depend on the latest and greatest a project has to offer.
-
-A final note for Subversion development: if you are using SVN revision tags
-as described in this section, it's a good idea to run ``setup.py develop``
-after each Subversion checkin or update, because your project's version number
-will be changing, and your script wrappers need to be updated accordingly.
-
-Also, if the project's requirements have changed, the ``develop`` command will
-take care of fetching the updated dependencies, building changed extensions,
-etc.  Be sure to also remind any of your users who check out your project
-from Subversion that they need to run ``setup.py develop`` after every update
-in order to keep their checkout completely in sync.
-
-
-Making "Official" (Non-Snapshot) Releases
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-When you make an official release, creating source or binary distributions,
-you will need to override the tag settings from ``setup.cfg``, so that you
-don't end up registering versions like ``foobar-0.7a1.dev-r34832``.  This is
-easy to do if you are developing on the trunk and using tags or branches for
-your releases - just make the change to ``setup.cfg`` after branching or
-tagging the release, so the trunk will still produce development snapshots.
-
-Alternately, if you are not branching for releases, you can override the
-default version options on the command line, using something like::
-
-    python setup.py egg_info -RDb "" sdist bdist_egg register upload
-
-The first part of this command (``egg_info -RDb ""``) will override the
-configured tag information, before creating source and binary eggs, registering
-the project with PyPI, and uploading the files.  Thus, these commands will use
-the plain version from your ``setup.py``, without adding the Subversion
-revision number or build designation string.
-
-Of course, if you will be doing this a lot, you may wish to create a personal
-alias for this operation, e.g.::
-
-    python setup.py alias -u release egg_info -RDb ""
-
-You can then use it like this::
-
-    python setup.py release sdist bdist_egg register upload
-
-Or of course you can create more elaborate aliases that do all of the above.
-See the sections below on the `egg_info`_ and `alias`_ commands for more ideas.
-
-
-
-Distributing Extensions compiled with Pyrex
--------------------------------------------
-
-``setuptools`` includes transparent support for building Pyrex extensions, as
-long as you define your extensions using ``setuptools.Extension``, *not*
-``distutils.Extension``.  You must also not import anything from Pyrex in
-your setup script.
-
-If you follow these rules, you can safely list ``.pyx`` files as the source
-of your ``Extension`` objects in the setup script.  ``setuptools`` will detect
-at build time whether Pyrex is installed or not.  If it is, then ``setuptools``
-will use it.  If not, then ``setuptools`` will silently change the
-``Extension`` objects to refer to the ``.c`` counterparts of the ``.pyx``
-files, so that the normal distutils C compilation process will occur.
-
-Of course, for this to work, your source distributions must include the C
-code generated by Pyrex, as well as your original ``.pyx`` files.  This means
-that you will probably want to include current ``.c`` files in your revision
-control system, rebuilding them whenever you check changes in for the ``.pyx``
-source files.  This will ensure that people tracking your project in CVS or
-Subversion will be able to build it even if they don't have Pyrex installed,
-and that your source releases will be similarly usable with or without Pyrex.
-
-
------------------
-Command Reference
------------------
-
-.. _alias:
-
-``alias`` - Define shortcuts for commonly used commands
-=======================================================
-
-Sometimes, you need to use the same commands over and over, but you can't
-necessarily set them as defaults.  For example, if you produce both development
-snapshot releases and "stable" releases of a project, you may want to put
-the distributions in different places, or use different ``egg_info`` tagging
-options, etc.  In these cases, it doesn't make sense to set the options in
-a distutils configuration file, because the values of the options changed based
-on what you're trying to do.
-
-Setuptools therefore allows you to define "aliases" - shortcut names for
-an arbitrary string of commands and options, using ``setup.py alias aliasname
-expansion``, where aliasname is the name of the new alias, and the remainder of
-the command line supplies its expansion.  For example, this command defines
-a sitewide alias called "daily", that sets various ``egg_info`` tagging
-options::
-
-    setup.py alias --global-config daily egg_info --tag-svn-revision \
-        --tag-build=development
-
-Once the alias is defined, it can then be used with other setup commands,
-e.g.::
-
-    setup.py daily bdist_egg        # generate a daily-build .egg file
-    setup.py daily sdist            # generate a daily-build source distro
-    setup.py daily sdist bdist_egg  # generate both
-
-The above commands are interpreted as if the word ``daily`` were replaced with
-``egg_info --tag-svn-revision --tag-build=development``.
-
-Note that setuptools will expand each alias *at most once* in a given command
-line.  This serves two purposes.  First, if you accidentally create an alias
-loop, it will have no effect; you'll instead get an error message about an
-unknown command.  Second, it allows you to define an alias for a command, that
-uses that command.  For example, this (project-local) alias::
-
-    setup.py alias bdist_egg bdist_egg rotate -k1 -m.egg
-
-redefines the ``bdist_egg`` command so that it always runs the ``rotate``
-command afterwards to delete all but the newest egg file.  It doesn't loop
-indefinitely on ``bdist_egg`` because the alias is only expanded once when
-used.
-
-You can remove a defined alias with the ``--remove`` (or ``-r``) option, e.g.::
-
-    setup.py alias --global-config --remove daily
-
-would delete the "daily" alias we defined above.
-
-Aliases can be defined on a project-specific, per-user, or sitewide basis.  The
-default is to define or remove a project-specific alias, but you can use any of
-the `configuration file options`_ (listed under the `saveopts`_ command, below)
-to determine which distutils configuration file an aliases will be added to
-(or removed from).
-
-Note that if you omit the "expansion" argument to the ``alias`` command,
-you'll get output showing that alias' current definition (and what
-configuration file it's defined in).  If you omit the alias name as well,
-you'll get a listing of all current aliases along with their configuration
-file locations.
-
-
-``bdist_egg`` - Create a Python Egg for the project
-===================================================
-
-This command generates a Python Egg (``.egg`` file) for the project.  Python
-Eggs are the preferred binary distribution format for EasyInstall, because they
-are cross-platform (for "pure" packages), directly importable, and contain
-project metadata including scripts and information about the project's
-dependencies.  They can be simply downloaded and added to ``sys.path``
-directly, or they can be placed in a directory on ``sys.path`` and then
-automatically discovered by the egg runtime system.
-
-This command runs the `egg_info`_ command (if it hasn't already run) to update
-the project's metadata (``.egg-info``) directory.  If you have added any extra
-metadata files to the ``.egg-info`` directory, those files will be included in
-the new egg file's metadata directory, for use by the egg runtime system or by
-any applications or frameworks that use that metadata.
-
-You won't usually need to specify any special options for this command; just
-use ``bdist_egg`` and you're done.  But there are a few options that may
-be occasionally useful:
-
-``--dist-dir=DIR, -d DIR``
-    Set the directory where the ``.egg`` file will be placed.  If you don't
-    supply this, then the ``--dist-dir`` setting of the ``bdist`` command
-    will be used, which is usually a directory named ``dist`` in the project
-    directory.
-
-``--plat-name=PLATFORM, -p PLATFORM``
-    Set the platform name string that will be embedded in the egg's filename
-    (assuming the egg contains C extensions).  This can be used to override
-    the distutils default platform name with something more meaningful.  Keep
-    in mind, however, that the egg runtime system expects to see eggs with
-    distutils platform names, so it may ignore or reject eggs with non-standard
-    platform names.  Similarly, the EasyInstall program may ignore them when
-    searching web pages for download links.  However, if you are
-    cross-compiling or doing some other unusual things, you might find a use
-    for this option.
-
-``--exclude-source-files``
-    Don't include any modules' ``.py`` files in the egg, just compiled Python,
-    C, and data files.  (Note that this doesn't affect any ``.py`` files in the
-    EGG-INFO directory or its subdirectories, since for example there may be
-    scripts with a ``.py`` extension which must still be retained.)  We don't
-    recommend that you use this option except for packages that are being
-    bundled for proprietary end-user applications, or for "embedded" scenarios
-    where space is at an absolute premium.  On the other hand, if your package
-    is going to be installed and used in compressed form, you might as well
-    exclude the source because Python's ``traceback`` module doesn't currently
-    understand how to display zipped source code anyway, or how to deal with
-    files that are in a different place from where their code was compiled.
-
-There are also some options you will probably never need, but which are there
-because they were copied from similar ``bdist`` commands used as an example for
-creating this one.  They may be useful for testing and debugging, however,
-which is why we kept them:
-
-``--keep-temp, -k``
-    Keep the contents of the ``--bdist-dir`` tree around after creating the
-    ``.egg`` file.
-
-``--bdist-dir=DIR, -b DIR``
-    Set the temporary directory for creating the distribution.  The entire
-    contents of this directory are zipped to create the ``.egg`` file, after
-    running various installation commands to copy the package's modules, data,
-    and extensions here.
-
-``--skip-build``
-    Skip doing any "build" commands; just go straight to the
-    install-and-compress phases.
-
-
-.. _develop:
-
-``develop`` - Deploy the project source in "Development Mode"
-=============================================================
-
-This command allows you to deploy your project's source for use in one or more
-"staging areas" where it will be available for importing.  This deployment is
-done in such a way that changes to the project source are immediately available
-in the staging area(s), without needing to run a build or install step after
-each change.
-
-The ``develop`` command works by creating an ``.egg-link`` file (named for the
-project) in the given staging area.  If the staging area is Python's
-``site-packages`` directory, it also updates an ``easy-install.pth`` file so
-that the project is on ``sys.path`` by default for all programs run using that
-Python installation.
-
-The ``develop`` command also installs wrapper scripts in the staging area (or
-a separate directory, as specified) that will ensure the project's dependencies
-are available on ``sys.path`` before running the project's source scripts.
-And, it ensures that any missing project dependencies are available in the
-staging area, by downloading and installing them if necessary.
-
-Last, but not least, the ``develop`` command invokes the ``build_ext -i``
-command to ensure any C extensions in the project have been built and are
-up-to-date, and the ``egg_info`` command to ensure the project's metadata is
-updated (so that the runtime and wrappers know what the project's dependencies
-are).  If you make any changes to the project's setup script or C extensions,
-you should rerun the ``develop`` command against all relevant staging areas to
-keep the project's scripts, metadata and extensions up-to-date.  Most other
-kinds of changes to your project should not require any build operations or
-rerunning ``develop``, but keep in mind that even minor changes to the setup
-script (e.g. changing an entry point definition) require you to re-run the
-``develop`` or ``test`` commands to keep the distribution updated.
-
-Here are some of the options that the ``develop`` command accepts.  Note that
-they affect the project's dependencies as well as the project itself, so if you
-have dependencies that need to be installed and you use ``--exclude-scripts``
-(for example), the dependencies' scripts will not be installed either!  For
-this reason, you may want to use EasyInstall to install the project's
-dependencies before using the ``develop`` command, if you need finer control
-over the installation options for dependencies.
-
-``--uninstall, -u``
-    Un-deploy the current project.  You may use the ``--install-dir`` or ``-d``
-    option to designate the staging area.  The created ``.egg-link`` file will
-    be removed, if present and it is still pointing to the project directory.
-    The project directory will be removed from ``easy-install.pth`` if the
-    staging area is Python's ``site-packages`` directory.
-
-    Note that this option currently does *not* uninstall script wrappers!  You
-    must uninstall them yourself, or overwrite them by using EasyInstall to
-    activate a different version of the package.  You can also avoid installing
-    script wrappers in the first place, if you use the ``--exclude-scripts``
-    (aka ``-x``) option when you run ``develop`` to deploy the project.
-
-``--multi-version, -m``
-    "Multi-version" mode. Specifying this option prevents ``develop`` from
-    adding an ``easy-install.pth`` entry for the project(s) being deployed, and
-    if an entry for any version of a project already exists, the entry will be
-    removed upon successful deployment.  In multi-version mode, no specific
-    version of the package is available for importing, unless you use
-    ``pkg_resources.require()`` to put it on ``sys.path``, or you are running
-    a wrapper script generated by ``setuptools`` or EasyInstall.  (In which
-    case the wrapper script calls ``require()`` for you.)
-
-    Note that if you install to a directory other than ``site-packages``,
-    this option is automatically in effect, because ``.pth`` files can only be
-    used in ``site-packages`` (at least in Python 2.3 and 2.4). So, if you use
-    the ``--install-dir`` or ``-d`` option (or they are set via configuration
-    file(s)) your project and its dependencies will be deployed in multi-
-    version mode.
-
-``--install-dir=DIR, -d DIR``
-    Set the installation directory (staging area).  If this option is not
-    directly specified on the command line or in a distutils configuration
-    file, the distutils default installation location is used.  Normally, this
-    will be the ``site-packages`` directory, but if you are using distutils
-    configuration files, setting things like ``prefix`` or ``install_lib``,
-    then those settings are taken into account when computing the default
-    staging area.
-
-``--script-dir=DIR, -s DIR``
-    Set the script installation directory.  If you don't supply this option
-    (via the command line or a configuration file), but you *have* supplied
-    an ``--install-dir`` (via command line or config file), then this option
-    defaults to the same directory, so that the scripts will be able to find
-    their associated package installation.  Otherwise, this setting defaults
-    to the location where the distutils would normally install scripts, taking
-    any distutils configuration file settings into account.
-
-``--exclude-scripts, -x``
-    Don't deploy script wrappers.  This is useful if you don't want to disturb
-    existing versions of the scripts in the staging area.
-
-``--always-copy, -a``
-    Copy all needed distributions to the staging area, even if they
-    are already present in another directory on ``sys.path``.  By default, if
-    a requirement can be met using a distribution that is already available in
-    a directory on ``sys.path``, it will not be copied to the staging area.
-
-``--egg-path=DIR``
-    Force the generated ``.egg-link`` file to use a specified relative path
-    to the source directory.  This can be useful in circumstances where your
-    installation directory is being shared by code running under multiple
-    platforms (e.g. Mac and Windows) which have different absolute locations
-    for the code under development, but the same *relative* locations with
-    respect to the installation directory.  If you use this option when
-    installing, you must supply the same relative path when uninstalling.
-
-In addition to the above options, the ``develop`` command also accepts all of
-the same options accepted by ``easy_install``.  If you've configured any
-``easy_install`` settings in your ``setup.cfg`` (or other distutils config
-files), the ``develop`` command will use them as defaults, unless you override
-them in a ``[develop]`` section or on the command line.
-
-
-``easy_install`` - Find and install packages
-============================================
-
-This command runs the `EasyInstall tool
-<http://peak.telecommunity.com/DevCenter/EasyInstall>`_ for you.  It is exactly
-equivalent to running the ``easy_install`` command.  All command line arguments
-following this command are consumed and not processed further by the distutils,
-so this must be the last command listed on the command line.  Please see
-the EasyInstall documentation for the options reference and usage examples.
-Normally, there is no reason to use this command via the command line, as you
-can just use ``easy_install`` directly.  It's only listed here so that you know
-it's a distutils command, which means that you can:
-
-* create command aliases that use it,
-* create distutils extensions that invoke it as a subcommand, and
-* configure options for it in your ``setup.cfg`` or other distutils config
-  files.
-
-
-.. _egg_info:
-
-``egg_info`` - Create egg metadata and set build tags
-=====================================================
-
-This command performs two operations: it updates a project's ``.egg-info``
-metadata directory (used by the ``bdist_egg``, ``develop``, and ``test``
-commands), and it allows you to temporarily change a project's version string,
-to support "daily builds" or "snapshot" releases.  It is run automatically by
-the ``sdist``, ``bdist_egg``, ``develop``, ``register``, and ``test`` commands
-in order to update the project's metadata, but you can also specify it
-explicitly in order to temporarily change the project's version string while
-executing other commands.  (It also generates the``.egg-info/SOURCES.txt``
-manifest file, which is used when you are building source distributions.)
-
-In addition to writing the core egg metadata defined by ``setuptools`` and
-required by ``pkg_resources``, this command can be extended to write other
-metadata files as well, by defining entry points in the ``egg_info.writers``
-group.  See the section on `Adding new EGG-INFO Files`_ below for more details.
-Note that using additional metadata writers may require you to include a
-``setup_requires`` argument to ``setup()`` in order to ensure that the desired
-writers are available on ``sys.path``.
-
-
-Release Tagging Options
------------------------
-
-The following options can be used to modify the project's version string for
-all remaining commands on the setup command line.  The options are processed
-in the order shown, so if you use more than one, the requested tags will be
-added in the following order:
-
-``--tag-build=NAME, -b NAME``
-    Append NAME to the project's version string.  Due to the way setuptools
-    processes "pre-release" version suffixes beginning with the letters "a"
-    through "e" (like "alpha", "beta", and "candidate"), you will usually want
-    to use a tag like ".build" or ".dev", as this will cause the version number
-    to be considered *lower* than the project's default version.  (If you
-    want to make the version number *higher* than the default version, you can
-    always leave off --tag-build and then use one or both of the following
-    options.)
-
-    If you have a default build tag set in your ``setup.cfg``, you can suppress
-    it on the command line using ``-b ""`` or ``--tag-build=""`` as an argument
-    to the ``egg_info`` command.
-
-``--tag-svn-revision, -r``
-    If the current directory is a Subversion checkout (i.e. has a ``.svn``
-    subdirectory, this appends a string of the form "-rNNNN" to the project's
-    version string, where NNNN is the revision number of the most recent
-    modification to the current directory, as obtained from the ``svn info``
-    command.
-
-    If the current directory is not a Subversion checkout, the command will
-    look for a ``PKG-INFO`` file instead, and try to find the revision number
-    from that, by looking for a "-rNNNN" string at the end of the version
-    number.  (This is so that building a package from a source distribution of
-    a Subversion snapshot will produce a binary with the correct version
-    number.)
-
-    If there is no ``PKG-INFO`` file, or the version number contained therein
-    does not end with ``-r`` and a number, then ``-r0`` is used.
-
-``--no-svn-revision, -R``
-    Don't include the Subversion revision in the version number.  This option
-    is included so you can override a default setting put in ``setup.cfg``.
-
-``--tag-date, -d``
-    Add a date stamp of the form "-YYYYMMDD" (e.g. "-20050528") to the
-    project's version number.
-
-``--no-date, -D``
-    Don't include a date stamp in the version number.  This option is included
-    so you can override a default setting in ``setup.cfg``.
-
-
-(Note: Because these options modify the version number used for source and
-binary distributions of your project, you should first make sure that you know
-how the resulting version numbers will be interpreted by automated tools
-like EasyInstall.  See the section above on `Specifying Your Project's
-Version`_ for an explanation of pre- and post-release tags, as well as tips on
-how to choose and verify a versioning scheme for your your project.)
-
-For advanced uses, there is one other option that can be set, to change the
-location of the project's ``.egg-info`` directory.  Commands that need to find
-the project's source directory or metadata should get it from this setting:
-
-
-Other ``egg_info`` Options
---------------------------
-
-``--egg-base=SOURCEDIR, -e SOURCEDIR``
-    Specify the directory that should contain the .egg-info directory.  This
-    should normally be the root of your project's source tree (which is not
-    necessarily the same as your project directory; some projects use a ``src``
-    or ``lib`` subdirectory as the source root).  You should not normally need
-    to specify this directory, as it is normally determined from the
-    ``package_dir`` argument to the ``setup()`` function, if any.  If there is
-    no ``package_dir`` set, this option defaults to the current directory.
-
-
-``egg_info`` Examples
----------------------
-
-Creating a dated "nightly build" snapshot egg::
-
-    python setup.py egg_info --tag-date --tag-build=DEV bdist_egg
-
-Creating and uploading a release with no version tags, even if some default
-tags are specified in ``setup.cfg``::
-
-    python setup.py egg_info -RDb "" sdist bdist_egg register upload
-
-(Notice that ``egg_info`` must always appear on the command line *before* any
-commands that you want the version changes to apply to.)
-
-
-.. _install command:
-
-``install`` - Run ``easy_install`` or old-style installation
-============================================================
-
-The setuptools ``install`` command is basically a shortcut to run the
-``easy_install`` command on the current project.  However, for convenience
-in creating "system packages" of setuptools-based projects, you can also
-use this option:
-
-``--single-version-externally-managed``
-    This boolean option tells the ``install`` command to perform an "old style"
-    installation, with the addition of an ``.egg-info`` directory so that the
-    installed project will still have its metadata available and operate
-    normally.  If you use this option, you *must* also specify the ``--root``
-    or ``--record`` options (or both), because otherwise you will have no way
-    to identify and remove the installed files.
-
-This option is automatically in effect when ``install`` is invoked by another
-distutils command, so that commands like ``bdist_wininst`` and ``bdist_rpm``
-will create system packages of eggs.  It is also automatically in effect if
-you specify the ``--root`` option.
-
-
-``install_egg_info`` - Install an ``.egg-info`` directory in ``site-packages``
-==============================================================================
-
-Setuptools runs this command as part of ``install`` operations that use the
-``--single-version-externally-managed`` options.  You should not invoke it
-directly; it is documented here for completeness and so that distutils
-extensions such as system package builders can make use of it.  This command
-has only one option:
-
-``--install-dir=DIR, -d DIR``
-    The parent directory where the ``.egg-info`` directory will be placed.
-    Defaults to the same as the ``--install-dir`` option specified for the
-    ``install_lib`` command, which is usually the system ``site-packages``
-    directory.
-
-This command assumes that the ``egg_info`` command has been given valid options
-via the command line or ``setup.cfg``, as it will invoke the ``egg_info``
-command and use its options to locate the project's source ``.egg-info``
-directory.
-
-
-.. _rotate:
-
-``rotate`` - Delete outdated distribution files
-===============================================
-
-As you develop new versions of your project, your distribution (``dist``)
-directory will gradually fill up with older source and/or binary distribution
-files.  The ``rotate`` command lets you automatically clean these up, keeping
-only the N most-recently modified files matching a given pattern.
-
-``--match=PATTERNLIST, -m PATTERNLIST``
-    Comma-separated list of glob patterns to match.  This option is *required*.
-    The project name and ``-*`` is prepended to the supplied patterns, in order
-    to match only distributions belonging to the current project (in case you
-    have a shared distribution directory for multiple projects).  Typically,
-    you will use a glob pattern like ``.zip`` or ``.egg`` to match files of
-    the specified type.  Note that each supplied pattern is treated as a
-    distinct group of files for purposes of selecting files to delete.
-
-``--keep=COUNT, -k COUNT``
-    Number of matching distributions to keep.  For each group of files
-    identified by a pattern specified with the ``--match`` option, delete all
-    but the COUNT most-recently-modified files in that group.  This option is
-    *required*.
-
-``--dist-dir=DIR, -d DIR``
-    Directory where the distributions are.  This defaults to the value of the
-    ``bdist`` command's ``--dist-dir`` option, which will usually be the
-    project's ``dist`` subdirectory.
-
-**Example 1**: Delete all .tar.gz files from the distribution directory, except
-for the 3 most recently modified ones::
-
-    setup.py rotate --match=.tar.gz --keep=3
-
-**Example 2**: Delete all Python 2.3 or Python 2.4 eggs from the distribution
-directory, except the most recently modified one for each Python version::
-
-    setup.py rotate --match=-py2.3*.egg,-py2.4*.egg --keep=1
-
-
-.. _saveopts:
-
-``saveopts`` - Save used options to a configuration file
-========================================================
-
-Finding and editing ``distutils`` configuration files can be a pain, especially
-since you also have to translate the configuration options from command-line
-form to the proper configuration file format.  You can avoid these hassles by
-using the ``saveopts`` command.  Just add it to the command line to save the
-options you used.  For example, this command builds the project using
-the ``mingw32`` C compiler, then saves the --compiler setting as the default
-for future builds (even those run implicitly by the ``install`` command)::
-
-    setup.py build --compiler=mingw32 saveopts
-
-The ``saveopts`` command saves all options for every commmand specified on the
-command line to the project's local ``setup.cfg`` file, unless you use one of
-the `configuration file options`_ to change where the options are saved.  For
-example, this command does the same as above, but saves the compiler setting
-to the site-wide (global) distutils configuration::
-
-    setup.py build --compiler=mingw32 saveopts -g
-
-Note that it doesn't matter where you place the ``saveopts`` command on the
-command line; it will still save all the options specified for all commands.
-For example, this is another valid way to spell the last example::
-
-    setup.py saveopts -g build --compiler=mingw32
-
-Note, however, that all of the commands specified are always run, regardless of
-where ``saveopts`` is placed on the command line.
-
-
-Configuration File Options
---------------------------
-
-Normally, settings such as options and aliases are saved to the project's
-local ``setup.cfg`` file.  But you can override this and save them to the
-global or per-user configuration files, or to a manually-specified filename.
-
-``--global-config, -g``
-    Save settings to the global ``distutils.cfg`` file inside the ``distutils``
-    package directory.  You must have write access to that directory to use
-    this option.  You also can't combine this option with ``-u`` or ``-f``.
-
-``--user-config, -u``
-    Save settings to the current user's ``~/.pydistutils.cfg`` (POSIX) or
-    ``$HOME/pydistutils.cfg`` (Windows) file.  You can't combine this option
-    with ``-g`` or ``-f``.
-
-``--filename=FILENAME, -f FILENAME``
-    Save settings to the specified configuration file to use.  You can't
-    combine this option with ``-g`` or ``-u``.  Note that if you specify a
-    non-standard filename, the ``distutils`` and ``setuptools`` will not
-    use the file's contents.  This option is mainly included for use in
-    testing.
-
-These options are used by other ``setuptools`` commands that modify
-configuration files, such as the `alias`_ and `setopt`_ commands.
-
-
-.. _setopt:
-
-``setopt`` - Set a distutils or setuptools option in a config file
-==================================================================
-
-This command is mainly for use by scripts, but it can also be used as a quick
-and dirty way to change a distutils configuration option without having to
-remember what file the options are in and then open an editor.
-
-**Example 1**.  Set the default C compiler to ``mingw32`` (using long option
-names)::
-
-    setup.py setopt --command=build --option=compiler --set-value=mingw32
-
-**Example 2**.  Remove any setting for the distutils default package
-installation directory (short option names)::
-
-    setup.py setopt -c install -o install_lib -r
-
-
-Options for the ``setopt`` command:
-
-``--command=COMMAND, -c COMMAND``
-    Command to set the option for.  This option is required.
-
-``--option=OPTION, -o OPTION``
-    The name of the option to set.  This option is required.
-
-``--set-value=VALUE, -s VALUE``
-    The value to set the option to.  Not needed if ``-r`` or ``--remove`` is
-    set.
-
-``--remove, -r``
-    Remove (unset) the option, instead of setting it.
-
-In addition to the above options, you may use any of the `configuration file
-options`_ (listed under the `saveopts`_ command, above) to determine which
-distutils configuration file the option will be added to (or removed from).
-
-
-.. _test:
-
-``test`` - Build package and run a unittest suite
-=================================================
-
-When doing test-driven development, or running automated builds that need
-testing before they are deployed for downloading or use, it's often useful
-to be able to run a project's unit tests without actually deploying the project
-anywhere, even using the ``develop`` command.  The ``test`` command runs a
-project's unit tests without actually deploying it, by temporarily putting the
-project's source on ``sys.path``, after first running ``build_ext -i`` and
-``egg_info`` to ensure that any C extensions and project metadata are
-up-to-date.
-
-To use this command, your project's tests must be wrapped in a ``unittest``
-test suite by either a function, a ``TestCase`` class or method, or a module
-or package containing ``TestCase`` classes.  If the named suite is a module,
-and the module has an ``additional_tests()`` function, it is called and the
-result (which must be a ``unittest.TestSuite``) is added to the tests to be
-run.  If the named suite is a package, any submodules and subpackages are
-recursively added to the overall test suite.  (Note: if your project specifies
-a ``test_loader``, the rules for processing the chosen ``test_suite`` may
-differ; see the `test_loader`_ documentation for more details.)
-
-Note that many test systems including ``doctest`` support wrapping their
-non-``unittest`` tests in ``TestSuite`` objects.  So, if you are using a test
-package that does not support this, we suggest you encourage its developers to
-implement test suite support, as this is a convenient and standard way to
-aggregate a collection of tests to be run under a common test harness.
-
-By default, tests will be run in the "verbose" mode of the ``unittest``
-package's text test runner, but you can get the "quiet" mode (just dots) if
-you supply the ``-q`` or ``--quiet`` option, either as a global option to
-the setup script (e.g. ``setup.py -q test``) or as an option for the ``test``
-command itself (e.g. ``setup.py test -q``).  There is one other option
-available:
-
-``--test-suite=NAME, -s NAME``
-    Specify the test suite (or module, class, or method) to be run
-    (e.g. ``some_module.test_suite``).  The default for this option can be
-    set by giving a ``test_suite`` argument to the ``setup()`` function, e.g.::
-
-        setup(
-            # ...
-            test_suite = "my_package.tests.test_all"
-        )
-
-    If you did not set a ``test_suite`` in your ``setup()`` call, and do not
-    provide a ``--test-suite`` option, an error will occur.
-
-
-.. _upload:
-
-``upload`` - Upload source and/or egg distributions to PyPI
-===========================================================
-
-PyPI now supports uploading project files for redistribution; uploaded files
-are easily found by EasyInstall, even if you don't have download links on your
-project's home page.
-
-Although Python 2.5 will support uploading all types of distributions to PyPI,
-setuptools only supports source distributions and eggs.  (This is partly
-because PyPI's upload support is currently broken for various other file
-types.)  To upload files, you must include the ``upload`` command *after* the
-``sdist`` or ``bdist_egg`` commands on the setup command line.  For example::
-
-    setup.py bdist_egg upload         # create an egg and upload it
-    setup.py sdist upload             # create a source distro and upload it
-    setup.py sdist bdist_egg upload   # create and upload both
-
-Note that to upload files for a project, the corresponding version must already
-be registered with PyPI, using the distutils ``register`` command.  It's
-usually a good idea to include the ``register`` command at the start of the
-command line, so that any registration problems can be found and fixed before
-building and uploading the distributions, e.g.::
-
-    setup.py register sdist bdist_egg upload
-
-This will update PyPI's listing for your project's current version.
-
-Note, by the way, that the metadata in your ``setup()`` call determines what
-will be listed in PyPI for your package.  Try to fill out as much of it as
-possible, as it will save you a lot of trouble manually adding and updating
-your PyPI listings.  Just put it in ``setup.py`` and use the ``register``
-comamnd to keep PyPI up to date.
-
-The ``upload`` command has a few options worth noting:
-
-``--sign, -s``
-    Sign each uploaded file using GPG (GNU Privacy Guard).  The ``gpg`` program
-    must be available for execution on the system ``PATH``.
-
-``--identity=NAME, -i NAME``
-    Specify the identity or key name for GPG to use when signing.  The value of
-    this option will be passed through the ``--local-user`` option of the
-    ``gpg`` program.
-
-``--show-response``
-    Display the full response text from server; this is useful for debugging
-    PyPI problems.
-
-``--repository=URL, -r URL``
-    The URL of the repository to upload to.  Defaults to
-    http://pypi.python.org/pypi (i.e., the main PyPI installation).
-
-.. _upload_docs:
-
-``upload_docs`` - Upload package documentation to PyPI
-======================================================
-
-PyPI now supports uploading project documentation to the dedicated URL
-http://packages.python.org/<project>/.
-
-The ``upload_docs`` command will create the necessary zip file out of a
-documentation directory and will post to the repository.
-
-Note that to upload the documentation of a project, the corresponding version
-must already be registered with PyPI, using the distutils ``register``
-command -- just like the ``upload`` command.
-
-Assuming there is an ``Example`` project with documentation in the
-subdirectory ``docs``, e.g.::
-
-  Example/
-  |-- example.py
-  |-- setup.cfg
-  |-- setup.py
-  |-- docs
-  |   |-- build
-  |   |   `-- html
-  |   |   |   |-- index.html
-  |   |   |   `-- tips_tricks.html
-  |   |-- conf.py
-  |   |-- index.txt
-  |   `-- tips_tricks.txt
-
-You can simply pass the documentation directory path to the ``upload_docs``
-command::
-
-    python setup.py upload_docs --upload-dir=docs/build/html
-
-If no ``--upload-dir`` is given, ``upload_docs`` will attempt to run the
-``build_sphinx`` command to generate uploadable documentation.
-For the command to become available, `Sphinx <http://sphinx.pocoo.org/>`_
-must be installed in the same environment as distribute.
-
-As with other ``setuptools``-based commands, you can define useful
-defaults in the ``setup.cfg`` of your Python project, e.g.:
-
-.. code-block:: ini
-
-    [upload_docs]
-    upload-dir = docs/build/html
-
-The ``upload_docs`` command has the following options:
-
-``--upload-dir``
-    The directory to be uploaded to the repository.
-
-``--show-response``
-    Display the full response text from server; this is useful for debugging
-    PyPI problems.
-
-``--repository=URL, -r URL``
-    The URL of the repository to upload to.  Defaults to
-    http://pypi.python.org/pypi (i.e., the main PyPI installation).
-
-
---------------------------------
-Extending and Reusing Distribute
---------------------------------
-
-Creating ``distutils`` Extensions
-=================================
-
-It can be hard to add new commands or setup arguments to the distutils.  But
-the ``setuptools`` package makes it a bit easier, by allowing you to distribute
-a distutils extension as a separate project, and then have projects that need
-the extension just refer to it in their ``setup_requires`` argument.
-
-With ``setuptools``, your distutils extension projects can hook in new
-commands and ``setup()`` arguments just by defining "entry points".  These
-are mappings from command or argument names to a specification of where to
-import a handler from.  (See the section on `Dynamic Discovery of Services and
-Plugins`_ above for some more background on entry points.)
-
-
-Adding Commands
----------------
-
-You can add new ``setup`` commands by defining entry points in the
-``distutils.commands`` group.  For example, if you wanted to add a ``foo``
-command, you might add something like this to your distutils extension
-project's setup script::
-
-    setup(
-        # ...
-        entry_points = {
-            "distutils.commands": [
-                "foo = mypackage.some_module:foo",
-            ],
-        },
-    )
-
-(Assuming, of course, that the ``foo`` class in ``mypackage.some_module`` is
-a ``setuptools.Command`` subclass.)
-
-Once a project containing such entry points has been activated on ``sys.path``,
-(e.g. by running "install" or "develop" with a site-packages installation
-directory) the command(s) will be available to any ``setuptools``-based setup
-scripts.  It is not necessary to use the ``--command-packages`` option or
-to monkeypatch the ``distutils.command`` package to install your commands;
-``setuptools`` automatically adds a wrapper to the distutils to search for
-entry points in the active distributions on ``sys.path``.  In fact, this is
-how setuptools' own commands are installed: the setuptools project's setup
-script defines entry points for them!
-
-
-Adding ``setup()`` Arguments
-----------------------------
-
-Sometimes, your commands may need additional arguments to the ``setup()``
-call.  You can enable this by defining entry points in the
-``distutils.setup_keywords`` group.  For example, if you wanted a ``setup()``
-argument called ``bar_baz``, you might add something like this to your
-distutils extension project's setup script::
-
-    setup(
-        # ...
-        entry_points = {
-            "distutils.commands": [
-                "foo = mypackage.some_module:foo",
-            ],
-            "distutils.setup_keywords": [
-                "bar_baz = mypackage.some_module:validate_bar_baz",
-            ],
-        },
-    )
-
-The idea here is that the entry point defines a function that will be called
-to validate the ``setup()`` argument, if it's supplied.  The ``Distribution``
-object will have the initial value of the attribute set to ``None``, and the
-validation function will only be called if the ``setup()`` call sets it to
-a non-None value.  Here's an example validation function::
-
-    def assert_bool(dist, attr, value):
-        """Verify that value is True, False, 0, or 1"""
-        if bool(value) != value:
-            raise DistutilsSetupError(
-                "%r must be a boolean value (got %r)" % (attr,value)
-            )
-
-Your function should accept three arguments: the ``Distribution`` object,
-the attribute name, and the attribute value.  It should raise a
-``DistutilsSetupError`` (from the ``distutils.errors`` module) if the argument
-is invalid.  Remember, your function will only be called with non-None values,
-and the default value of arguments defined this way is always None.  So, your
-commands should always be prepared for the possibility that the attribute will
-be ``None`` when they access it later.
-
-If more than one active distribution defines an entry point for the same
-``setup()`` argument, *all* of them will be called.  This allows multiple
-distutils extensions to define a common argument, as long as they agree on
-what values of that argument are valid.
-
-Also note that as with commands, it is not necessary to subclass or monkeypatch
-the distutils ``Distribution`` class in order to add your arguments; it is
-sufficient to define the entry points in your extension, as long as any setup
-script using your extension lists your project in its ``setup_requires``
-argument.
-
-
-Adding new EGG-INFO Files
--------------------------
-
-Some extensible applications or frameworks may want to allow third parties to
-develop plugins with application or framework-specific metadata included in
-the plugins' EGG-INFO directory, for easy access via the ``pkg_resources``
-metadata API.  The easiest way to allow this is to create a distutils extension
-to be used from the plugin projects' setup scripts (via ``setup_requires``)
-that defines a new setup keyword, and then uses that data to write an EGG-INFO
-file when the ``egg_info`` command is run.
-
-The ``egg_info`` command looks for extension points in an ``egg_info.writers``
-group, and calls them to write the files.  Here's a simple example of a
-distutils extension defining a setup argument ``foo_bar``, which is a list of
-lines that will be written to ``foo_bar.txt`` in the EGG-INFO directory of any
-project that uses the argument::
-
-    setup(
-        # ...
-        entry_points = {
-            "distutils.setup_keywords": [
-                "foo_bar = setuptools.dist:assert_string_list",
-            ],
-            "egg_info.writers": [
-                "foo_bar.txt = setuptools.command.egg_info:write_arg",
-            ],
-        },
-    )
-
-This simple example makes use of two utility functions defined by setuptools
-for its own use: a routine to validate that a setup keyword is a sequence of
-strings, and another one that looks up a setup argument and writes it to
-a file.  Here's what the writer utility looks like::
-
-    def write_arg(cmd, basename, filename):
-        argname = os.path.splitext(basename)[0]
-        value = getattr(cmd.distribution, argname, None)
-        if value is not None:
-            value = '\n'.join(value)+'\n'
-        cmd.write_or_delete_file(argname, filename, value)
-
-As you can see, ``egg_info.writers`` entry points must be a function taking
-three arguments: a ``egg_info`` command instance, the basename of the file to
-write (e.g. ``foo_bar.txt``), and the actual full filename that should be
-written to.
-
-In general, writer functions should honor the command object's ``dry_run``
-setting when writing files, and use the ``distutils.log`` object to do any
-console output.  The easiest way to conform to this requirement is to use
-the ``cmd`` object's ``write_file()``, ``delete_file()``, and
-``write_or_delete_file()`` methods exclusively for your file operations.  See
-those methods' docstrings for more details.
-
-
-Adding Support for Other Revision Control Systems
--------------------------------------------------
-
-If you would like to create a plugin for ``setuptools`` to find files in other
-source control systems besides CVS and Subversion, you can do so by adding an
-entry point to the ``setuptools.file_finders`` group.  The entry point should
-be a function accepting a single directory name, and should yield
-all the filenames within that directory (and any subdirectories thereof) that
-are under revision control.
-
-For example, if you were going to create a plugin for a revision control system
-called "foobar", you would write a function something like this:
-
-.. code-block:: python
-
-    def find_files_for_foobar(dirname):
-        # loop to yield paths that start with `dirname`
-
-And you would register it in a setup script using something like this::
-
-    entry_points = {
-        "setuptools.file_finders": [
-            "foobar = my_foobar_module:find_files_for_foobar"
-        ]
-    }
-
-Then, anyone who wants to use your plugin can simply install it, and their
-local setuptools installation will be able to find the necessary files.
-
-It is not necessary to distribute source control plugins with projects that
-simply use the other source control system, or to specify the plugins in
-``setup_requires``.  When you create a source distribution with the ``sdist``
-command, setuptools automatically records what files were found in the
-``SOURCES.txt`` file.  That way, recipients of source distributions don't need
-to have revision control at all.  However, if someone is working on a package
-by checking out with that system, they will need the same plugin(s) that the
-original author is using.
-
-A few important points for writing revision control file finders:
-
-* Your finder function MUST return relative paths, created by appending to the
-  passed-in directory name.  Absolute paths are NOT allowed, nor are relative
-  paths that reference a parent directory of the passed-in directory.
-
-* Your finder function MUST accept an empty string as the directory name,
-  meaning the current directory.  You MUST NOT convert this to a dot; just
-  yield relative paths.  So, yielding a subdirectory named ``some/dir`` under
-  the current directory should NOT be rendered as ``./some/dir`` or
-  ``/somewhere/some/dir``, but *always* as simply ``some/dir``
-
-* Your finder function SHOULD NOT raise any errors, and SHOULD deal gracefully
-  with the absence of needed programs (i.e., ones belonging to the revision
-  control system itself.  It *may*, however, use ``distutils.log.warn()`` to
-  inform the user of the missing program(s).
-
-
-Subclassing ``Command``
------------------------
-
-Sorry, this section isn't written yet, and neither is a lot of what's below
-this point, except for the change log.  You might want to `subscribe to changes
-in this page <setuptools?action=subscribe>`_ to see when new documentation is
-added or updated.
-
-XXX
-
-
-Reusing ``setuptools`` Code
-===========================
-
-``distribute_setup``
---------------------
-
-XXX
-
-
-``setuptools.archive_util``
----------------------------
-
-XXX
-
-
-``setuptools.sandbox``
-----------------------
-
-XXX
-
-
-``setuptools.package_index``
-----------------------------
-
-XXX
-
-History
-=======
-
-0.6c9
- * Fixed a missing files problem when using Windows source distributions on
-   non-Windows platforms, due to distutils not handling manifest file line
-   endings correctly.
-
- * Updated Pyrex support to work with Pyrex 0.9.6 and higher.
-
- * Minor changes for Jython compatibility, including skipping tests that can't
-   work on Jython.
-
- * Fixed not installing eggs in ``install_requires`` if they were also used for
-   ``setup_requires`` or ``tests_require``.
-
- * Fixed not fetching eggs in ``install_requires`` when running tests.
-
- * Allow ``ez_setup.use_setuptools()`` to upgrade existing setuptools
-   installations when called from a standalone ``setup.py``.
-
- * Added a warning if a namespace package is declared, but its parent package
-   is not also declared as a namespace.
-
- * Support Subversion 1.5
-
- * Removed use of deprecated ``md5`` module if ``hashlib`` is available
-
- * Fixed ``bdist_wininst upload`` trying to upload the ``.exe`` twice
-
- * Fixed ``bdist_egg`` putting a ``native_libs.txt`` in the source package's
-   ``.egg-info``, when it should only be in the built egg's ``EGG-INFO``.
-
- * Ensure that _full_name is set on all shared libs before extensions are
-   checked for shared lib usage.  (Fixes a bug in the experimental shared
-   library build support.)
-
- * Fix to allow unpacked eggs containing native libraries to fail more
-   gracefully under Google App Engine (with an ``ImportError`` loading the
-   C-based module, instead of getting a ``NameError``).
-
-0.6c7
- * Fixed ``distutils.filelist.findall()`` crashing on broken symlinks, and
-   ``egg_info`` command failing on new, uncommitted SVN directories.
-
- * Fix import problems with nested namespace packages installed via
-   ``--root`` or ``--single-version-externally-managed``, due to the
-   parent package not having the child package as an attribute.
-
-0.6c6
- * Added ``--egg-path`` option to ``develop`` command, allowing you to force
-   ``.egg-link`` files to use relative paths (allowing them to be shared across
-   platforms on a networked drive).
-
- * Fix not building binary RPMs correctly.
-
- * Fix "eggsecutables" (such as setuptools' own egg) only being runnable with
-   bash-compatible shells.
-
- * Fix ``#!`` parsing problems in Windows ``.exe`` script wrappers, when there
-   was whitespace inside a quoted argument or at the end of the ``#!`` line
-   (a regression introduced in 0.6c4).
-
- * Fix ``test`` command possibly failing if an older version of the project
-   being tested was installed on ``sys.path`` ahead of the test source
-   directory.
-
- * Fix ``find_packages()`` treating ``ez_setup`` and directories with ``.`` in
-   their names as packages.
-
-0.6c5
- * Fix uploaded ``bdist_rpm`` packages being described as ``bdist_egg``
-   packages under Python versions less than 2.5.
-
- * Fix uploaded ``bdist_wininst`` packages being described as suitable for
-   "any" version by Python 2.5, even if a ``--target-version`` was specified.
-
-0.6c4
- * Overhauled Windows script wrapping to support ``bdist_wininst`` better.
-   Scripts installed with ``bdist_wininst`` will always use ``#!python.exe`` or
-   ``#!pythonw.exe`` as the executable name (even when built on non-Windows
-   platforms!), and the wrappers will look for the executable in the script's
-   parent directory (which should find the right version of Python).
-
- * Fix ``upload`` command not uploading files built by ``bdist_rpm`` or
-   ``bdist_wininst`` under Python 2.3 and 2.4.
-
- * Add support for "eggsecutable" headers: a ``#!/bin/sh`` script that is
-   prepended to an ``.egg`` file to allow it to be run as a script on Unix-ish
-   platforms.  (This is mainly so that setuptools itself can have a single-file
-   installer on Unix, without doing multiple downloads, dealing with firewalls,
-   etc.)
-
- * Fix problem with empty revision numbers in Subversion 1.4 ``entries`` files
-
- * Use cross-platform relative paths in ``easy-install.pth`` when doing
-   ``develop`` and the source directory is a subdirectory of the installation
-   target directory.
-
- * Fix a problem installing eggs with a system packaging tool if the project
-   contained an implicit namespace package; for example if the ``setup()``
-   listed a namespace package ``foo.bar`` without explicitly listing ``foo``
-   as a namespace package.
-
-0.6c3
- * Fixed breakages caused by Subversion 1.4's new "working copy" format
-
-0.6c2
- * The ``ez_setup`` module displays the conflicting version of setuptools (and
-   its installation location) when a script requests a version that's not
-   available.
-
- * Running ``setup.py develop`` on a setuptools-using project will now install
-   setuptools if needed, instead of only downloading the egg.
-
-0.6c1
- * Fixed ``AttributeError`` when trying to download a ``setup_requires``
-   dependency when a distribution lacks a ``dependency_links`` setting.
-
- * Made ``zip-safe`` and ``not-zip-safe`` flag files contain a single byte, so
-   as to play better with packaging tools that complain about zero-length
-   files.
-
- * Made ``setup.py develop`` respect the ``--no-deps`` option, which it
-   previously was ignoring.
-
- * Support ``extra_path`` option to ``setup()`` when ``install`` is run in
-   backward-compatibility mode.
-
- * Source distributions now always include a ``setup.cfg`` file that explicitly
-   sets ``egg_info`` options such that they produce an identical version number
-   to the source distribution's version number.  (Previously, the default
-   version number could be different due to the use of ``--tag-date``, or if
-   the version was overridden on the command line that built the source
-   distribution.)
-
-0.6b4
- * Fix ``register`` not obeying name/version set by ``egg_info`` command, if
-   ``egg_info`` wasn't explicitly run first on the same command line.
-
- * Added ``--no-date`` and ``--no-svn-revision`` options to ``egg_info``
-   command, to allow suppressing tags configured in ``setup.cfg``.
-
- * Fixed redundant warnings about missing ``README`` file(s); it should now
-   appear only if you are actually a source distribution.
-
-0.6b3
- * Fix ``bdist_egg`` not including files in subdirectories of ``.egg-info``.
-
- * Allow ``.py`` files found by the ``include_package_data`` option to be
-   automatically included.  Remove duplicate data file matches if both
-   ``include_package_data`` and ``package_data`` are used to refer to the same
-   files.
-
-0.6b1
- * Strip ``module`` from the end of compiled extension modules when computing
-   the name of a ``.py`` loader/wrapper.  (Python's import machinery ignores
-   this suffix when searching for an extension module.)
-
-0.6a11
- * Added ``test_loader`` keyword to support custom test loaders
-
- * Added ``setuptools.file_finders`` entry point group to allow implementing
-   revision control plugins.
-
- * Added ``--identity`` option to ``upload`` command.
-
- * Added ``dependency_links`` to allow specifying URLs for ``--find-links``.
-
- * Enhanced test loader to scan packages as well as modules, and call
-   ``additional_tests()`` if present to get non-unittest tests.
-
- * Support namespace packages in conjunction with system packagers, by omitting
-   the installation of any ``__init__.py`` files for namespace packages, and
-   adding a special ``.pth`` file to create a working package in
-   ``sys.modules``.
-
- * Made ``--single-version-externally-managed`` automatic when ``--root`` is
-   used, so that most system packagers won't require special support for
-   setuptools.
-
- * Fixed ``setup_requires``, ``tests_require``, etc. not using ``setup.cfg`` or
-   other configuration files for their option defaults when installing, and
-   also made the install use ``--multi-version`` mode so that the project
-   directory doesn't need to support .pth files.
-
- * ``MANIFEST.in`` is now forcibly closed when any errors occur while reading
-   it.  Previously, the file could be left open and the actual error would be
-   masked by problems trying to remove the open file on Windows systems.
-
-0.6a10
- * Fixed the ``develop`` command ignoring ``--find-links``.
-
-0.6a9
- * The ``sdist`` command no longer uses the traditional ``MANIFEST`` file to
-   create source distributions.  ``MANIFEST.in`` is still read and processed,
-   as are the standard defaults and pruning.  But the manifest is built inside
-   the project's ``.egg-info`` directory as ``SOURCES.txt``, and it is rebuilt
-   every time the ``egg_info`` command is run.
-
- * Added the ``include_package_data`` keyword to ``setup()``, allowing you to
-   automatically include any package data listed in revision control or
-   ``MANIFEST.in``
-
- * Added the ``exclude_package_data`` keyword to ``setup()``, allowing you to
-   trim back files included via the ``package_data`` and
-   ``include_package_data`` options.
-
- * Fixed ``--tag-svn-revision`` not working when run from a source
-   distribution.
-
- * Added warning for namespace packages with missing ``declare_namespace()``
-
- * Added ``tests_require`` keyword to ``setup()``, so that e.g. packages
-   requiring ``nose`` to run unit tests can make this dependency optional
-   unless the ``test`` command is run.
-
- * Made all commands that use ``easy_install`` respect its configuration
-   options, as this was causing some problems with ``setup.py install``.
-
- * Added an ``unpack_directory()`` driver to ``setuptools.archive_util``, so
-   that you can process a directory tree through a processing filter as if it
-   were a zipfile or tarfile.
-
- * Added an internal ``install_egg_info`` command to use as part of old-style
-   ``install`` operations, that installs an ``.egg-info`` directory with the
-   package.
-
- * Added a ``--single-version-externally-managed`` option to the ``install``
-   command so that you can more easily wrap a "flat" egg in a system package.
-
- * Enhanced ``bdist_rpm`` so that it installs single-version eggs that
-   don't rely on a ``.pth`` file.  The ``--no-egg`` option has been removed,
-   since all RPMs are now built in a more backwards-compatible format.
-
- * Support full roundtrip translation of eggs to and from ``bdist_wininst``
-   format.  Running ``bdist_wininst`` on a setuptools-based package wraps the
-   egg in an .exe that will safely install it as an egg (i.e., with metadata
-   and entry-point wrapper scripts), and ``easy_install`` can turn the .exe
-   back into an ``.egg`` file or directory and install it as such.
-
-
-0.6a8
- * Fixed some problems building extensions when Pyrex was installed, especially
-   with Python 2.4 and/or packages using SWIG.
-
- * Made ``develop`` command accept all the same options as ``easy_install``,
-   and use the ``easy_install`` command's configuration settings as defaults.
-
- * Made ``egg_info --tag-svn-revision`` fall back to extracting the revision
-   number from ``PKG-INFO`` in case it is being run on a source distribution of
-   a snapshot taken from a Subversion-based project.
-
- * Automatically detect ``.dll``, ``.so`` and ``.dylib`` files that are being
-   installed as data, adding them to ``native_libs.txt`` automatically.
-
- * Fixed some problems with fresh checkouts of projects that don't include
-   ``.egg-info/PKG-INFO`` under revision control and put the project's source
-   code directly in the project directory.  If such a package had any
-   requirements that get processed before the ``egg_info`` command can be run,
-   the setup scripts would fail with a "Missing 'Version:' header and/or
-   PKG-INFO file" error, because the egg runtime interpreted the unbuilt
-   metadata in a directory on ``sys.path`` (i.e. the current directory) as
-   being a corrupted egg.  Setuptools now monkeypatches the distribution
-   metadata cache to pretend that the egg has valid version information, until
-   it has a chance to make it actually be so (via the ``egg_info`` command).
-
-0.6a5
- * Fixed missing gui/cli .exe files in distribution.  Fixed bugs in tests.
-
-0.6a3
- * Added ``gui_scripts`` entry point group to allow installing GUI scripts
-   on Windows and other platforms.  (The special handling is only for Windows;
-   other platforms are treated the same as for ``console_scripts``.)
-
-0.6a2
- * Added ``console_scripts`` entry point group to allow installing scripts
-   without the need to create separate script files.  On Windows, console
-   scripts get an ``.exe`` wrapper so you can just type their name.  On other
-   platforms, the scripts are written without a file extension.
-
-0.6a1
- * Added support for building "old-style" RPMs that don't install an egg for
-   the target package, using a ``--no-egg`` option.
-
- * The ``build_ext`` command now works better when using the ``--inplace``
-   option and multiple Python versions.  It now makes sure that all extensions
-   match the current Python version, even if newer copies were built for a
-   different Python version.
-
- * The ``upload`` command no longer attaches an extra ``.zip`` when uploading
-   eggs, as PyPI now supports egg uploads without trickery.
-
- * The ``ez_setup`` script/module now displays a warning before downloading
-   the setuptools egg, and attempts to check the downloaded egg against an
-   internal MD5 checksum table.
-
- * Fixed the ``--tag-svn-revision`` option of ``egg_info`` not finding the
-   latest revision number; it was using the revision number of the directory
-   containing ``setup.py``, not the highest revision number in the project.
-
- * Added ``eager_resources`` setup argument
-
- * The ``sdist`` command now recognizes Subversion "deleted file" entries and
-   does not include them in source distributions.
-
- * ``setuptools`` now embeds itself more thoroughly into the distutils, so that
-   other distutils extensions (e.g. py2exe, py2app) will subclass setuptools'
-   versions of things, rather than the native distutils ones.
-
- * Added ``entry_points`` and ``setup_requires`` arguments to ``setup()``;
-   ``setup_requires`` allows you to automatically find and download packages
-   that are needed in order to *build* your project (as opposed to running it).
-
- * ``setuptools`` now finds its commands, ``setup()`` argument validators, and
-   metadata writers using entry points, so that they can be extended by
-   third-party packages.  See `Creating distutils Extensions`_ above for more
-   details.
-
- * The vestigial ``depends`` command has been removed.  It was never finished
-   or documented, and never would have worked without EasyInstall - which it
-   pre-dated and was never compatible with.
-
-0.5a12
- * The zip-safety scanner now checks for modules that might be used with
-   ``python -m``, and marks them as unsafe for zipping, since Python 2.4 can't
-   handle ``-m`` on zipped modules.
-
-0.5a11
- * Fix breakage of the "develop" command that was caused by the addition of
-   ``--always-unzip`` to the ``easy_install`` command.
-
-0.5a9
- * Include ``svn:externals`` directories in source distributions as well as
-   normal subversion-controlled files and directories.
-
- * Added ``exclude=patternlist`` option to ``setuptools.find_packages()``
-
- * Changed --tag-svn-revision to include an "r" in front of the revision number
-   for better readability.
-
- * Added ability to build eggs without including source files (except for any
-   scripts, of course), using the ``--exclude-source-files`` option to
-   ``bdist_egg``.
-
- * ``setup.py install`` now automatically detects when an "unmanaged" package
-   or module is going to be on ``sys.path`` ahead of a package being installed,
-   thereby preventing the newer version from being imported.  If this occurs,
-   a warning message is output to ``sys.stderr``, but installation proceeds
-   anyway.  The warning message informs the user what files or directories
-   need deleting, and advises them they can also use EasyInstall (with the
-   ``--delete-conflicting`` option) to do it automatically.
-
- * The ``egg_info`` command now adds a ``top_level.txt`` file to the metadata
-   directory that lists all top-level modules and packages in the distribution.
-   This is used by the ``easy_install`` command to find possibly-conflicting
-   "unmanaged" packages when installing the distribution.
-
- * Added ``zip_safe`` and ``namespace_packages`` arguments to ``setup()``.
-   Added package analysis to determine zip-safety if the ``zip_safe`` flag
-   is not given, and advise the author regarding what code might need changing.
-
- * Fixed the swapped ``-d`` and ``-b`` options of ``bdist_egg``.
-
-0.5a8
- * The "egg_info" command now always sets the distribution metadata to "safe"
-   forms of the distribution name and version, so that distribution files will
-   be generated with parseable names (i.e., ones that don't include '-' in the
-   name or version).  Also, this means that if you use the various ``--tag``
-   options of "egg_info", any distributions generated will use the tags in the
-   version, not just egg distributions.
-
- * Added support for defining command aliases in distutils configuration files,
-   under the "[aliases]" section.  To prevent recursion and to allow aliases to
-   call the command of the same name, a given alias can be expanded only once
-   per command-line invocation.  You can define new aliases with the "alias"
-   command, either for the local, global, or per-user configuration.
-
- * Added "rotate" command to delete old distribution files, given a set of
-   patterns to match and the number of files to keep.  (Keeps the most
-   recently-modified distribution files matching each pattern.)
-
- * Added "saveopts" command that saves all command-line options for the current
-   invocation to the local, global, or per-user configuration file.  Useful for
-   setting defaults without having to hand-edit a configuration file.
-
- * Added a "setopt" command that sets a single option in a specified distutils
-   configuration file.
-
-0.5a7
- * Added "upload" support for egg and source distributions, including a bug
-   fix for "upload" and a temporary workaround for lack of .egg support in
-   PyPI.
-
-0.5a6
- * Beefed up the "sdist" command so that if you don't have a MANIFEST.in, it
-   will include all files under revision control (CVS or Subversion) in the
-   current directory, and it will regenerate the list every time you create a
-   source distribution, not just when you tell it to.  This should make the
-   default "do what you mean" more often than the distutils' default behavior
-   did, while still retaining the old behavior in the presence of MANIFEST.in.
-
- * Fixed the "develop" command always updating .pth files, even if you
-   specified ``-n`` or ``--dry-run``.
-
- * Slightly changed the format of the generated version when you use
-   ``--tag-build`` on the "egg_info" command, so that you can make tagged
-   revisions compare *lower* than the version specified in setup.py (e.g. by
-   using ``--tag-build=dev``).
-
-0.5a5
- * Added ``develop`` command to ``setuptools``-based packages.  This command
-   installs an ``.egg-link`` pointing to the package's source directory, and
-   script wrappers that ``execfile()`` the source versions of the package's
-   scripts.  This lets you put your development checkout(s) on sys.path without
-   having to actually install them.  (To uninstall the link, use
-   use ``setup.py develop --uninstall``.)
-
- * Added ``egg_info`` command to ``setuptools``-based packages.  This command
-   just creates or updates the "projectname.egg-info" directory, without
-   building an egg.  (It's used by the ``bdist_egg``, ``test``, and ``develop``
-   commands.)
-
- * Enhanced the ``test`` command so that it doesn't install the package, but
-   instead builds any C extensions in-place, updates the ``.egg-info``
-   metadata, adds the source directory to ``sys.path``, and runs the tests
-   directly on the source.  This avoids an "unmanaged" installation of the
-   package to ``site-packages`` or elsewhere.
-
- * Made ``easy_install`` a standard ``setuptools`` command, moving it from
-   the ``easy_install`` module to ``setuptools.command.easy_install``.  Note
-   that if you were importing or extending it, you must now change your imports
-   accordingly.  ``easy_install.py`` is still installed as a script, but not as
-   a module.
-
-0.5a4
- * Setup scripts using setuptools can now list their dependencies directly in
-   the setup.py file, without having to manually create a ``depends.txt`` file.
-   The ``install_requires`` and ``extras_require`` arguments to ``setup()``
-   are used to create a dependencies file automatically.  If you are manually
-   creating ``depends.txt`` right now, please switch to using these setup
-   arguments as soon as practical, because ``depends.txt`` support will be
-   removed in the 0.6 release cycle.  For documentation on the new arguments,
-   see the ``setuptools.dist.Distribution`` class.
-
- * Setup scripts using setuptools now always install using ``easy_install``
-   internally, for ease of uninstallation and upgrading.
-
-0.5a1
- * Added support for "self-installation" bootstrapping.  Packages can now
-   include ``ez_setup.py`` in their source distribution, and add the following
-   to their ``setup.py``, in order to automatically bootstrap installation of
-   setuptools as part of their setup process::
-
-    from ez_setup import use_setuptools
-    use_setuptools()
-
-    from setuptools import setup
-    # etc...
-
-0.4a2
- * Added ``ez_setup.py`` installer/bootstrap script to make initial setuptools
-   installation easier, and to allow distributions using setuptools to avoid
-   having to include setuptools in their source distribution.
-
- * All downloads are now managed by the ``PackageIndex`` class (which is now
-   subclassable and replaceable), so that embedders can more easily override
-   download logic, give download progress reports, etc.  The class has also
-   been moved to the new ``setuptools.package_index`` module.
-
- * The ``Installer`` class no longer handles downloading, manages a temporary
-   directory, or tracks the ``zip_ok`` option.  Downloading is now handled
-   by ``PackageIndex``, and ``Installer`` has become an ``easy_install``
-   command class based on ``setuptools.Command``.
-
- * There is a new ``setuptools.sandbox.run_setup()`` API to invoke a setup
-   script in a directory sandbox, and a new ``setuptools.archive_util`` module
-   with an ``unpack_archive()`` API.  These were split out of EasyInstall to
-   allow reuse by other tools and applications.
-
- * ``setuptools.Command`` now supports reinitializing commands using keyword
-   arguments to set/reset options.  Also, ``Command`` subclasses can now set
-   their ``command_consumes_arguments`` attribute to ``True`` in order to
-   receive an ``args`` option containing the rest of the command line.
-
-0.3a2
- * Added new options to ``bdist_egg`` to allow tagging the egg's version number
-   with a subversion revision number, the current date, or an explicit tag
-   value.  Run ``setup.py bdist_egg --help`` to get more information.
-
- * Misc. bug fixes
-
-0.3a1
- * Initial release.
-
-Mailing List and Bug Tracker
-============================
-
-Please use the `distutils-sig mailing list`_ for questions and discussion about
-setuptools, and the `setuptools bug tracker`_ ONLY for issues you have
-confirmed via the list are actual bugs, and which you have reduced to a minimal
-set of steps to reproduce.
-
-.. _distutils-sig mailing list: http://mail.python.org/pipermail/distutils-sig/
-.. _setuptools bug tracker: http://bugs.python.org/setuptools/
-
diff --git a/vendor/distribute-0.6.34/docs/using.txt b/vendor/distribute-0.6.34/docs/using.txt
deleted file mode 100644
index 192f1dc2..00000000
--- a/vendor/distribute-0.6.34/docs/using.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-================================
-Using Distribute in your project
-================================
-
-To use Distribute in your project, the recommended way is to ship
-`distribute_setup.py` alongside your `setup.py` script and call 
-it at the very begining of `setup.py` like this::
-
-    from distribute_setup import use_setuptools
-    use_setuptools()
-
-Another way is to add ``Distribute`` in the ``install_requires`` option::
-
-    from setuptools import setup
-
-    setup(...
-          install_requires=['distribute']
-    )
-
-
-XXX to be finished
diff --git a/vendor/distribute-0.6.34/easy_install.py b/vendor/distribute-0.6.34/easy_install.py
deleted file mode 100644
index d87e9840..00000000
--- a/vendor/distribute-0.6.34/easy_install.py
+++ /dev/null
@@ -1,5 +0,0 @@
-"""Run the EasyInstall command"""
-
-if __name__ == '__main__':
-    from setuptools.command.easy_install import main
-    main()
diff --git a/vendor/distribute-0.6.34/launcher.c b/vendor/distribute-0.6.34/launcher.c
deleted file mode 100644
index ea4c80b5..00000000
--- a/vendor/distribute-0.6.34/launcher.c
+++ /dev/null
@@ -1,327 +0,0 @@
-/*  Setuptools Script Launcher for Windows
-
-    This is a stub executable for Windows that functions somewhat like
-    Effbot's "exemaker", in that it runs a script with the same name but
-    a .py extension, using information from a #! line.  It differs in that
-    it spawns the actual Python executable, rather than attempting to
-    hook into the Python DLL.  This means that the script will run with
-    sys.executable set to the Python executable, where exemaker ends up with
-    sys.executable pointing to itself.  (Which means it won't work if you try
-    to run another Python process using sys.executable.)
-
-    To build/rebuild with mingw32, do this in the setuptools project directory:
-
-       gcc -DGUI=0           -mno-cygwin -O -s -o setuptools/cli.exe launcher.c
-       gcc -DGUI=1 -mwindows -mno-cygwin -O -s -o setuptools/gui.exe launcher.c
-
-    It links to msvcrt.dll, but this shouldn't be a problem since it doesn't
-    actually run Python in the same process.  Note that using 'exec' instead
-    of 'spawn' doesn't work, because on Windows this leads to the Python
-    executable running in the *background*, attached to the same console
-    window, meaning you get a command prompt back *before* Python even finishes
-    starting.  So, we have to use spawnv() and wait for Python to exit before
-    continuing.  :(
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <windows.h>
-#include <tchar.h>
-#include <fcntl.h>
-
-int child_pid=0;
-
-int fail(char *format, char *data) {
-    /* Print error message to stderr and return 2 */
-    fprintf(stderr, format, data);
-    return 2;
-}
-
-char *quoted(char *data) {
-    int i, ln = strlen(data), nb;
-
-    /* We allocate twice as much space as needed to deal with worse-case
-       of having to escape everything. */
-    char *result = calloc(ln*2+3, sizeof(char));
-    char *presult = result;
-
-    *presult++ = '"';
-    for (nb=0, i=0; i < ln; i++)
-      {
-        if (data[i] == '\\')
-          nb += 1;
-        else if (data[i] == '"')
-          {
-            for (; nb > 0; nb--)
-              *presult++ = '\\';
-            *presult++ = '\\';
-          }
-        else
-          nb = 0;
-        *presult++ = data[i];
-      }
-
-    for (; nb > 0; nb--)        /* Deal w trailing slashes */
-      *presult++ = '\\';
-
-    *presult++ = '"';
-    *presult++ = 0;
-    return result;
-}
-
-
-
-
-
-
-
-
-
-
-char *loadable_exe(char *exename) {
-    /* HINSTANCE hPython;  DLL handle for python executable */
-    char *result;
-
-    /* hPython = LoadLibraryEx(exename, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
-    if (!hPython) return NULL; */
-
-    /* Return the absolute filename for spawnv */
-    result = calloc(MAX_PATH, sizeof(char));
-    strncpy(result, exename, MAX_PATH);
-    /*if (result) GetModuleFileNameA(hPython, result, MAX_PATH);
-
-    FreeLibrary(hPython); */
-    return result;
-}
-
-
-char *find_exe(char *exename, char *script) {
-    char drive[_MAX_DRIVE], dir[_MAX_DIR], fname[_MAX_FNAME], ext[_MAX_EXT];
-    char path[_MAX_PATH], c, *result;
-
-    /* convert slashes to backslashes for uniform search below */
-    result = exename;
-    while (c = *result++) if (c=='/') result[-1] = '\\';
-
-    _splitpath(exename, drive, dir, fname, ext);
-    if (drive[0] || dir[0]=='\\') {
-        return loadable_exe(exename);   /* absolute path, use directly */
-    }
-    /* Use the script's parent directory, which should be the Python home
-       (This should only be used for bdist_wininst-installed scripts, because
-        easy_install-ed scripts use the absolute path to python[w].exe
-    */
-    _splitpath(script, drive, dir, fname, ext);
-    result = dir + strlen(dir) -1;
-    if (*result == '\\') result--;
-    while (*result != '\\' && result>=dir) *result-- = 0;
-    _makepath(path, drive, dir, exename, NULL);
-    return loadable_exe(path);
-}
-
-
-char **parse_argv(char *cmdline, int *argc)
-{
-    /* Parse a command line in-place using MS C rules */
-
-    char **result = calloc(strlen(cmdline), sizeof(char *));
-    char *output = cmdline;
-    char c;
-    int nb = 0;
-    int iq = 0;
-    *argc = 0;
-
-    result[0] = output;
-    while (isspace(*cmdline)) cmdline++;   /* skip leading spaces */
-
-    do {
-        c = *cmdline++;
-        if (!c || (isspace(c) && !iq)) {
-            while (nb) {*output++ = '\\'; nb--; }
-            *output++ = 0;
-            result[++*argc] = output;
-            if (!c) return result;
-            while (isspace(*cmdline)) cmdline++;  /* skip leading spaces */
-            if (!*cmdline) return result;  /* avoid empty arg if trailing ws */
-            continue;
-        }
-        if (c == '\\')
-            ++nb;   /* count \'s */
-        else {
-            if (c == '"') {
-                if (!(nb & 1)) { iq = !iq; c = 0; }  /* skip " unless odd # of \ */
-                nb = nb >> 1;   /* cut \'s in half */
-            }
-            while (nb) {*output++ = '\\'; nb--; }
-            if (c) *output++ = c;
-        }
-    } while (1);
-}
-
-void pass_control_to_child(DWORD control_type) {
-    /*
-     * distribute-issue207
-     * passes the control event to child process (Python)
-     */
-    if (!child_pid) {
-        return;
-    }
-    GenerateConsoleCtrlEvent(child_pid,0);
-}
-
-BOOL control_handler(DWORD control_type) {
-    /* 
-     * distribute-issue207
-     * control event handler callback function
-     */
-    switch (control_type) {
-        case CTRL_C_EVENT:
-            pass_control_to_child(0);
-            break;
-    }
-    return TRUE;
-}
-
-int create_and_wait_for_subprocess(char* command) {
-    /*
-     * distribute-issue207
-     * launches child process (Python)
-     */
-    DWORD return_value = 0;
-    LPSTR commandline = command;
-    STARTUPINFOA s_info;
-    PROCESS_INFORMATION p_info;
-    ZeroMemory(&p_info, sizeof(p_info));
-    ZeroMemory(&s_info, sizeof(s_info));
-    s_info.cb = sizeof(STARTUPINFO);
-    // set-up control handler callback funciotn
-    SetConsoleCtrlHandler((PHANDLER_ROUTINE) control_handler, TRUE);
-    if (!CreateProcessA(NULL, commandline, NULL, NULL, TRUE, 0, NULL, NULL, &s_info, &p_info)) {
-        fprintf(stderr, "failed to create process.\n");
-        return 0;
-    }   
-    child_pid = p_info.dwProcessId;
-    // wait for Python to exit
-    WaitForSingleObject(p_info.hProcess, INFINITE);
-    if (!GetExitCodeProcess(p_info.hProcess, &return_value)) {
-        fprintf(stderr, "failed to get exit code from process.\n");
-        return 0;
-    }
-    return return_value;
-}
-
-char* join_executable_and_args(char *executable, char **args, int argc)
-{
-    /*
-     * distribute-issue207
-     * CreateProcess needs a long string of the executable and command-line arguments,
-     * so we need to convert it from the args that was built
-     */
-    int len,counter;
-    char* cmdline;
-    
-    len=strlen(executable)+2;
-    for (counter=1; counter<argc; counter++) {
-        len+=strlen(args[counter])+1;
-    }
-
-    cmdline = (char*)calloc(len, sizeof(char));
-    sprintf(cmdline, "%s", executable);
-    len=strlen(executable);
-    for (counter=1; counter<argc; counter++) {
-        sprintf(cmdline+len, " %s", args[counter]);
-        len+=strlen(args[counter])+1;
-    }
-    return cmdline;
-}
-
-int run(int argc, char **argv, int is_gui) {
-
-    char python[256];   /* python executable's filename*/
-    char *pyopt;        /* Python option */
-    char script[256];   /* the script's filename */
-
-    int scriptf;        /* file descriptor for script file */
-
-    char **newargs, **newargsp, **parsedargs; /* argument array for exec */
-    char *ptr, *end;    /* working pointers for string manipulation */
-    char *cmdline;
-    int i, parsedargc;              /* loop counter */
-
-    /* compute script name from our .exe name*/
-    GetModuleFileNameA(NULL, script, sizeof(script));
-    end = script + strlen(script);
-    while( end>script && *end != '.')
-        *end-- = '\0';
-    *end-- = '\0';
-    strcat(script, (GUI ? "-script.pyw" : "-script.py"));
-
-    /* figure out the target python executable */
-
-    scriptf = open(script, O_RDONLY);
-    if (scriptf == -1) {
-        return fail("Cannot open %s\n", script);
-    }
-    end = python + read(scriptf, python, sizeof(python));
-    close(scriptf);
-
-    ptr = python-1;
-    while(++ptr < end && *ptr && *ptr!='\n' && *ptr!='\r') {;}
-
-    *ptr-- = '\0';
-
-    if (strncmp(python, "#!", 2)) {
-        /* default to python.exe if no #! header */
-        strcpy(python, "#!python.exe");
-    }
-
-    parsedargs = parse_argv(python+2, &parsedargc);
-
-    /* Using spawnv() can fail strangely if you e.g. find the Cygwin
-       Python, so we'll make sure Windows can find and load it */
-
-    ptr = find_exe(parsedargs[0], script);
-    if (!ptr) {
-        return fail("Cannot find Python executable %s\n", parsedargs[0]);
-    }
-
-    /* printf("Python executable: %s\n", ptr); */
-
-    /* Argument array needs to be
-       parsedargc + argc, plus 1 for null sentinel */
-
-    newargs = (char **)calloc(parsedargc + argc + 1, sizeof(char *));
-    newargsp = newargs;
-
-    *newargsp++ = quoted(ptr);
-    for (i = 1; i<parsedargc; i++) *newargsp++ = quoted(parsedargs[i]);
-
-    *newargsp++ = quoted(script);
-    for (i = 1; i < argc; i++)     *newargsp++ = quoted(argv[i]);
-
-    *newargsp++ = NULL;
-
-    /* printf("args 0: %s\nargs 1: %s\n", newargs[0], newargs[1]); */
-
-    if (is_gui) {
-        /* Use exec, we don't need to wait for the GUI to finish */
-        execv(ptr, (const char * const *)(newargs));
-        return fail("Could not exec %s", ptr);   /* shouldn't get here! */
-    }
-
-    /*
-     * distribute-issue207: using CreateProcessA instead of spawnv
-     */
-    cmdline = join_executable_and_args(ptr, newargs, parsedargc + argc);
-    return create_and_wait_for_subprocess(cmdline);
-}
-
-int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpCmd, int nShow) {
-    return run(__argc, __argv, GUI);
-}
-
-int main(int argc, char** argv) {
-    return run(argc, argv, GUI);
-}
-
diff --git a/vendor/distribute-0.6.34/pkg_resources.py b/vendor/distribute-0.6.34/pkg_resources.py
deleted file mode 100644
index 49aab675..00000000
--- a/vendor/distribute-0.6.34/pkg_resources.py
+++ /dev/null
@@ -1,2825 +0,0 @@
-"""Package resource API
---------------------
-
-A resource is a logical file contained within a package, or a logical
-subdirectory thereof.  The package resource API expects resource names
-to have their path parts separated with ``/``, *not* whatever the local
-path separator is.  Do not use os.path operations to manipulate resource
-names being passed into the API.
-
-The package resource API is designed to work with normal filesystem packages,
-.egg files, and unpacked .egg files.  It can also work in a limited way with
-.zip files and with custom PEP 302 loaders that support the ``get_data()``
-method.
-"""
-
-import sys, os, zipimport, time, re, imp, types
-from urlparse import urlparse, urlunparse
-
-try:
-    frozenset
-except NameError:
-    from sets import ImmutableSet as frozenset
-
-# capture these to bypass sandboxing
-from os import utime
-try:
-    from os import mkdir, rename, unlink
-    WRITE_SUPPORT = True
-except ImportError:
-    # no write support, probably under GAE
-    WRITE_SUPPORT = False
-
-from os import open as os_open
-from os.path import isdir, split
-
-# Avoid try/except due to potential problems with delayed import mechanisms.
-if sys.version_info >= (3, 3) and sys.implementation.name == "cpython":
-    import importlib._bootstrap as importlib_bootstrap
-else:
-    importlib_bootstrap = None
-
-# This marker is used to simplify the process that checks is the
-# setuptools package was installed by the Setuptools project
-# or by the Distribute project, in case Setuptools creates
-# a distribution with the same version.
-#
-# The bootstrapping script for instance, will check if this
-# attribute is present to decide wether to reinstall the package
-_distribute = True
-
-def _bypass_ensure_directory(name, mode=0777):
-    # Sandbox-bypassing version of ensure_directory()
-    if not WRITE_SUPPORT:
-        raise IOError('"os.mkdir" not supported on this platform.')
-    dirname, filename = split(name)
-    if dirname and filename and not isdir(dirname):
-        _bypass_ensure_directory(dirname)
-        mkdir(dirname, mode)
-
-
-_state_vars = {}
-
-def _declare_state(vartype, **kw):
-    g = globals()
-    for name, val in kw.iteritems():
-        g[name] = val
-        _state_vars[name] = vartype
-
-def __getstate__():
-    state = {}
-    g = globals()
-    for k, v in _state_vars.iteritems():
-        state[k] = g['_sget_'+v](g[k])
-    return state
-
-def __setstate__(state):
-    g = globals()
-    for k, v in state.iteritems():
-        g['_sset_'+_state_vars[k]](k, g[k], v)
-    return state
-
-def _sget_dict(val):
-    return val.copy()
-
-def _sset_dict(key, ob, state):
-    ob.clear()
-    ob.update(state)
-
-def _sget_object(val):
-    return val.__getstate__()
-
-def _sset_object(key, ob, state):
-    ob.__setstate__(state)
-
-_sget_none = _sset_none = lambda *args: None
-
-
-
-def get_supported_platform():
-    """Return this platform's maximum compatible version.
-
-    distutils.util.get_platform() normally reports the minimum version
-    of Mac OS X that would be required to *use* extensions produced by
-    distutils.  But what we want when checking compatibility is to know the
-    version of Mac OS X that we are *running*.  To allow usage of packages that
-    explicitly require a newer version of Mac OS X, we must also know the
-    current version of the OS.
-
-    If this condition occurs for any other platform with a version in its
-    platform strings, this function should be extended accordingly.
-    """
-    plat = get_build_platform(); m = macosVersionString.match(plat)
-    if m is not None and sys.platform == "darwin":
-        try:
-            plat = 'macosx-%s-%s' % ('.'.join(_macosx_vers()[:2]), m.group(3))
-        except ValueError:
-            pass    # not Mac OS X
-    return plat
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-__all__ = [
-    # Basic resource access and distribution/entry point discovery
-    'require', 'run_script', 'get_provider',  'get_distribution',
-    'load_entry_point', 'get_entry_map', 'get_entry_info', 'iter_entry_points',
-    'resource_string', 'resource_stream', 'resource_filename',
-    'resource_listdir', 'resource_exists', 'resource_isdir',
-
-    # Environmental control
-    'declare_namespace', 'working_set', 'add_activation_listener',
-    'find_distributions', 'set_extraction_path', 'cleanup_resources',
-    'get_default_cache',
-
-    # Primary implementation classes
-    'Environment', 'WorkingSet', 'ResourceManager',
-    'Distribution', 'Requirement', 'EntryPoint',
-
-    # Exceptions
-    'ResolutionError','VersionConflict','DistributionNotFound','UnknownExtra',
-    'ExtractionError',
-
-    # Parsing functions and string utilities
-    'parse_requirements', 'parse_version', 'safe_name', 'safe_version',
-    'get_platform', 'compatible_platforms', 'yield_lines', 'split_sections',
-    'safe_extra', 'to_filename',
-
-    # filesystem utilities
-    'ensure_directory', 'normalize_path',
-
-    # Distribution "precedence" constants
-    'EGG_DIST', 'BINARY_DIST', 'SOURCE_DIST', 'CHECKOUT_DIST', 'DEVELOP_DIST',
-
-    # "Provider" interfaces, implementations, and registration/lookup APIs
-    'IMetadataProvider', 'IResourceProvider', 'FileMetadata',
-    'PathMetadata', 'EggMetadata', 'EmptyProvider', 'empty_provider',
-    'NullProvider', 'EggProvider', 'DefaultProvider', 'ZipProvider',
-    'register_finder', 'register_namespace_handler', 'register_loader_type',
-    'fixup_namespace_packages', 'get_importer',
-
-    # Deprecated/backward compatibility only
-    'run_main', 'AvailableDistributions',
-]
-class ResolutionError(Exception):
-    """Abstract base for dependency resolution errors"""
-    def __repr__(self):
-        return self.__class__.__name__+repr(self.args)
-
-class VersionConflict(ResolutionError):
-    """An already-installed version conflicts with the requested version"""
-
-class DistributionNotFound(ResolutionError):
-    """A requested distribution was not found"""
-
-class UnknownExtra(ResolutionError):
-    """Distribution doesn't have an "extra feature" of the given name"""
-_provider_factories = {}
-
-PY_MAJOR = sys.version[:3]
-EGG_DIST    = 3
-BINARY_DIST = 2
-SOURCE_DIST = 1
-CHECKOUT_DIST = 0
-DEVELOP_DIST = -1
-
-def register_loader_type(loader_type, provider_factory):
-    """Register `provider_factory` to make providers for `loader_type`
-
-    `loader_type` is the type or class of a PEP 302 ``module.__loader__``,
-    and `provider_factory` is a function that, passed a *module* object,
-    returns an ``IResourceProvider`` for that module.
-    """
-    _provider_factories[loader_type] = provider_factory
-
-def get_provider(moduleOrReq):
-    """Return an IResourceProvider for the named module or requirement"""
-    if isinstance(moduleOrReq,Requirement):
-        return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
-    try:
-        module = sys.modules[moduleOrReq]
-    except KeyError:
-        __import__(moduleOrReq)
-        module = sys.modules[moduleOrReq]
-    loader = getattr(module, '__loader__', None)
-    return _find_adapter(_provider_factories, loader)(module)
-
-def _macosx_vers(_cache=[]):
-    if not _cache:
-        import platform
-        version = platform.mac_ver()[0]
-        # fallback for MacPorts
-        if version == '':
-            import plistlib
-            plist = '/System/Library/CoreServices/SystemVersion.plist'
-            if os.path.exists(plist):
-                if hasattr(plistlib, 'readPlist'):
-                    plist_content = plistlib.readPlist(plist)
-                    if 'ProductVersion' in plist_content:
-                        version = plist_content['ProductVersion']
-
-        _cache.append(version.split('.'))
-    return _cache[0]
-
-def _macosx_arch(machine):
-    return {'PowerPC':'ppc', 'Power_Macintosh':'ppc'}.get(machine,machine)
-
-def get_build_platform():
-    """Return this platform's string for platform-specific distributions
-
-    XXX Currently this is the same as ``distutils.util.get_platform()``, but it
-    needs some hacks for Linux and Mac OS X.
-    """
-    try:
-        from distutils.util import get_platform
-    except ImportError:
-        from sysconfig import get_platform
-
-    plat = get_platform()
-    if sys.platform == "darwin" and not plat.startswith('macosx-'):
-        try:
-            version = _macosx_vers()
-            machine = os.uname()[4].replace(" ", "_")
-            return "macosx-%d.%d-%s" % (int(version[0]), int(version[1]),
-                _macosx_arch(machine))
-        except ValueError:
-            # if someone is running a non-Mac darwin system, this will fall
-            # through to the default implementation
-            pass
-    return plat
-
-macosVersionString = re.compile(r"macosx-(\d+)\.(\d+)-(.*)")
-darwinVersionString = re.compile(r"darwin-(\d+)\.(\d+)\.(\d+)-(.*)")
-get_platform = get_build_platform   # XXX backward compat
-
-def compatible_platforms(provided,required):
-    """Can code for the `provided` platform run on the `required` platform?
-
-    Returns true if either platform is ``None``, or the platforms are equal.
-
-    XXX Needs compatibility checks for Linux and other unixy OSes.
-    """
-    if provided is None or required is None or provided==required:
-        return True     # easy case
-
-    # Mac OS X special cases
-    reqMac = macosVersionString.match(required)
-    if reqMac:
-        provMac = macosVersionString.match(provided)
-
-        # is this a Mac package?
-        if not provMac:
-            # this is backwards compatibility for packages built before
-            # setuptools 0.6. All packages built after this point will
-            # use the new macosx designation.
-            provDarwin = darwinVersionString.match(provided)
-            if provDarwin:
-                dversion = int(provDarwin.group(1))
-                macosversion = "%s.%s" % (reqMac.group(1), reqMac.group(2))
-                if dversion == 7 and macosversion >= "10.3" or \
-                    dversion == 8 and macosversion >= "10.4":
-
-                    #import warnings
-                    #warnings.warn("Mac eggs should be rebuilt to "
-                    #    "use the macosx designation instead of darwin.",
-                    #    category=DeprecationWarning)
-                    return True
-            return False    # egg isn't macosx or legacy darwin
-
-        # are they the same major version and machine type?
-        if provMac.group(1) != reqMac.group(1) or \
-            provMac.group(3) != reqMac.group(3):
-            return False
-
-
-
-        # is the required OS major update >= the provided one?
-        if int(provMac.group(2)) > int(reqMac.group(2)):
-            return False
-
-        return True
-
-    # XXX Linux and other platforms' special cases should go here
-    return False
-
-
-def run_script(dist_spec, script_name):
-    """Locate distribution `dist_spec` and run its `script_name` script"""
-    ns = sys._getframe(1).f_globals
-    name = ns['__name__']
-    ns.clear()
-    ns['__name__'] = name
-    require(dist_spec)[0].run_script(script_name, ns)
-
-run_main = run_script   # backward compatibility
-
-def get_distribution(dist):
-    """Return a current distribution object for a Requirement or string"""
-    if isinstance(dist,basestring): dist = Requirement.parse(dist)
-    if isinstance(dist,Requirement): dist = get_provider(dist)
-    if not isinstance(dist,Distribution):
-        raise TypeError("Expected string, Requirement, or Distribution", dist)
-    return dist
-
-def load_entry_point(dist, group, name):
-    """Return `name` entry point of `group` for `dist` or raise ImportError"""
-    return get_distribution(dist).load_entry_point(group, name)
-
-def get_entry_map(dist, group=None):
-    """Return the entry point map for `group`, or the full entry map"""
-    return get_distribution(dist).get_entry_map(group)
-
-def get_entry_info(dist, group, name):
-    """Return the EntryPoint object for `group`+`name`, or ``None``"""
-    return get_distribution(dist).get_entry_info(group, name)
-
-
-class IMetadataProvider:
-
-    def has_metadata(name):
-        """Does the package's distribution contain the named metadata?"""
-
-    def get_metadata(name):
-        """The named metadata resource as a string"""
-
-    def get_metadata_lines(name):
-        """Yield named metadata resource as list of non-blank non-comment lines
-
-       Leading and trailing whitespace is stripped from each line, and lines
-       with ``#`` as the first non-blank character are omitted."""
-
-    def metadata_isdir(name):
-        """Is the named metadata a directory?  (like ``os.path.isdir()``)"""
-
-    def metadata_listdir(name):
-        """List of metadata names in the directory (like ``os.listdir()``)"""
-
-    def run_script(script_name, namespace):
-        """Execute the named script in the supplied namespace dictionary"""
-
-
-
-
-
-
-
-
-
-
-class IResourceProvider(IMetadataProvider):
-    """An object that provides access to package resources"""
-
-    def get_resource_filename(manager, resource_name):
-        """Return a true filesystem path for `resource_name`
-
-        `manager` must be an ``IResourceManager``"""
-
-    def get_resource_stream(manager, resource_name):
-        """Return a readable file-like object for `resource_name`
-
-        `manager` must be an ``IResourceManager``"""
-
-    def get_resource_string(manager, resource_name):
-        """Return a string containing the contents of `resource_name`
-
-        `manager` must be an ``IResourceManager``"""
-
-    def has_resource(resource_name):
-        """Does the package contain the named resource?"""
-
-    def resource_isdir(resource_name):
-        """Is the named resource a directory?  (like ``os.path.isdir()``)"""
-
-    def resource_listdir(resource_name):
-        """List of resource names in the directory (like ``os.listdir()``)"""
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-class WorkingSet(object):
-    """A collection of active distributions on sys.path (or a similar list)"""
-
-    def __init__(self, entries=None):
-        """Create working set from list of path entries (default=sys.path)"""
-        self.entries = []
-        self.entry_keys = {}
-        self.by_key = {}
-        self.callbacks = []
-
-        if entries is None:
-            entries = sys.path
-
-        for entry in entries:
-            self.add_entry(entry)
-
-
-    def add_entry(self, entry):
-        """Add a path item to ``.entries``, finding any distributions on it
-
-        ``find_distributions(entry,True)`` is used to find distributions
-        corresponding to the path entry, and they are added.  `entry` is
-        always appended to ``.entries``, even if it is already present.
-        (This is because ``sys.path`` can contain the same value more than
-        once, and the ``.entries`` of the ``sys.path`` WorkingSet should always
-        equal ``sys.path``.)
-        """
-        self.entry_keys.setdefault(entry, [])
-        self.entries.append(entry)
-        for dist in find_distributions(entry, True):
-            self.add(dist, entry, False)
-
-
-    def __contains__(self,dist):
-        """True if `dist` is the active distribution for its project"""
-        return self.by_key.get(dist.key) == dist
-
-
-
-
-
-    def find(self, req):
-        """Find a distribution matching requirement `req`
-
-        If there is an active distribution for the requested project, this
-        returns it as long as it meets the version requirement specified by
-        `req`.  But, if there is an active distribution for the project and it
-        does *not* meet the `req` requirement, ``VersionConflict`` is raised.
-        If there is no active distribution for the requested project, ``None``
-        is returned.
-        """
-        dist = self.by_key.get(req.key)
-        if dist is not None and dist not in req:
-            raise VersionConflict(dist,req)     # XXX add more info
-        else:
-            return dist
-
-    def iter_entry_points(self, group, name=None):
-        """Yield entry point objects from `group` matching `name`
-
-        If `name` is None, yields all entry points in `group` from all
-        distributions in the working set, otherwise only ones matching
-        both `group` and `name` are yielded (in distribution order).
-        """
-        for dist in self:
-            entries = dist.get_entry_map(group)
-            if name is None:
-                for ep in entries.values():
-                    yield ep
-            elif name in entries:
-                yield entries[name]
-
-    def run_script(self, requires, script_name):
-        """Locate distribution for `requires` and run `script_name` script"""
-        ns = sys._getframe(1).f_globals
-        name = ns['__name__']
-        ns.clear()
-        ns['__name__'] = name
-        self.require(requires)[0].run_script(script_name, ns)
-
-
-
-    def __iter__(self):
-        """Yield distributions for non-duplicate projects in the working set
-
-        The yield order is the order in which the items' path entries were
-        added to the working set.
-        """
-        seen = {}
-        for item in self.entries:
-            if item not in self.entry_keys:
-                # workaround a cache issue
-                continue
-
-            for key in self.entry_keys[item]:
-                if key not in seen:
-                    seen[key]=1
-                    yield self.by_key[key]
-
-    def add(self, dist, entry=None, insert=True):
-        """Add `dist` to working set, associated with `entry`
-
-        If `entry` is unspecified, it defaults to the ``.location`` of `dist`.
-        On exit from this routine, `entry` is added to the end of the working
-        set's ``.entries`` (if it wasn't already present).
-
-        `dist` is only added to the working set if it's for a project that
-        doesn't already have a distribution in the set.  If it's added, any
-        callbacks registered with the ``subscribe()`` method will be called.
-        """
-        if insert:
-            dist.insert_on(self.entries, entry)
-
-        if entry is None:
-            entry = dist.location
-        keys = self.entry_keys.setdefault(entry,[])
-        keys2 = self.entry_keys.setdefault(dist.location,[])
-        if dist.key in self.by_key:
-            return      # ignore hidden distros
-
-        self.by_key[dist.key] = dist
-        if dist.key not in keys:
-            keys.append(dist.key)
-        if dist.key not in keys2:
-            keys2.append(dist.key)
-        self._added_new(dist)
-
-    def resolve(self, requirements, env=None, installer=None, replacement=True):
-        """List all distributions needed to (recursively) meet `requirements`
-
-        `requirements` must be a sequence of ``Requirement`` objects.  `env`,
-        if supplied, should be an ``Environment`` instance.  If
-        not supplied, it defaults to all distributions available within any
-        entry or distribution in the working set.  `installer`, if supplied,
-        will be invoked with each requirement that cannot be met by an
-        already-installed distribution; it should return a ``Distribution`` or
-        ``None``.
-        """
-
-        requirements = list(requirements)[::-1]  # set up the stack
-        processed = {}  # set of processed requirements
-        best = {}  # key -> dist
-        to_activate = []
-
-        while requirements:
-            req = requirements.pop(0)   # process dependencies breadth-first
-            if _override_setuptools(req) and replacement:
-                req = Requirement.parse('distribute')
-
-            if req in processed:
-                # Ignore cyclic or redundant dependencies
-                continue
-            dist = best.get(req.key)
-            if dist is None:
-                # Find the best distribution and add it to the map
-                dist = self.by_key.get(req.key)
-                if dist is None:
-                    if env is None:
-                        env = Environment(self.entries)
-                    dist = best[req.key] = env.best_match(req, self, installer)
-                    if dist is None:
-                        #msg = ("The '%s' distribution was not found on this "
-                        #       "system, and is required by this application.")
-                        #raise DistributionNotFound(msg % req)
-
-                        # unfortunately, zc.buildout uses a str(err)
-                        # to get the name of the distribution here..
-                        raise DistributionNotFound(req)
-                to_activate.append(dist)
-            if dist not in req:
-                # Oops, the "best" so far conflicts with a dependency
-                raise VersionConflict(dist,req) # XXX put more info here
-            requirements.extend(dist.requires(req.extras)[::-1])
-            processed[req] = True
-
-        return to_activate    # return list of distros to activate
-
-    def find_plugins(self,
-        plugin_env, full_env=None, installer=None, fallback=True
-    ):
-        """Find all activatable distributions in `plugin_env`
-
-        Example usage::
-
-            distributions, errors = working_set.find_plugins(
-                Environment(plugin_dirlist)
-            )
-            map(working_set.add, distributions)  # add plugins+libs to sys.path
-            print 'Could not load', errors        # display errors
-
-        The `plugin_env` should be an ``Environment`` instance that contains
-        only distributions that are in the project's "plugin directory" or
-        directories. The `full_env`, if supplied, should be an ``Environment``
-        contains all currently-available distributions.  If `full_env` is not
-        supplied, one is created automatically from the ``WorkingSet`` this
-        method is called on, which will typically mean that every directory on
-        ``sys.path`` will be scanned for distributions.
-
-        `installer` is a standard installer callback as used by the
-        ``resolve()`` method. The `fallback` flag indicates whether we should
-        attempt to resolve older versions of a plugin if the newest version
-        cannot be resolved.
-
-        This method returns a 2-tuple: (`distributions`, `error_info`), where
-        `distributions` is a list of the distributions found in `plugin_env`
-        that were loadable, along with any other distributions that are needed
-        to resolve their dependencies.  `error_info` is a dictionary mapping
-        unloadable plugin distributions to an exception instance describing the
-        error that occurred. Usually this will be a ``DistributionNotFound`` or
-        ``VersionConflict`` instance.
-        """
-
-        plugin_projects = list(plugin_env)
-        plugin_projects.sort()  # scan project names in alphabetic order
-
-        error_info = {}
-        distributions = {}
-
-        if full_env is None:
-            env = Environment(self.entries)
-            env += plugin_env
-        else:
-            env = full_env + plugin_env
-
-        shadow_set = self.__class__([])
-        map(shadow_set.add, self)   # put all our entries in shadow_set
-
-        for project_name in plugin_projects:
-
-            for dist in plugin_env[project_name]:
-
-                req = [dist.as_requirement()]
-
-                try:
-                    resolvees = shadow_set.resolve(req, env, installer)
-
-                except ResolutionError,v:
-                    error_info[dist] = v    # save error info
-                    if fallback:
-                        continue    # try the next older version of project
-                    else:
-                        break       # give up on this project, keep going
-
-                else:
-                    map(shadow_set.add, resolvees)
-                    distributions.update(dict.fromkeys(resolvees))
-
-                    # success, no need to try any more versions of this project
-                    break
-
-        distributions = list(distributions)
-        distributions.sort()
-
-        return distributions, error_info
-
-
-
-
-
-    def require(self, *requirements):
-        """Ensure that distributions matching `requirements` are activated
-
-        `requirements` must be a string or a (possibly-nested) sequence
-        thereof, specifying the distributions and versions required.  The
-        return value is a sequence of the distributions that needed to be
-        activated to fulfill the requirements; all relevant distributions are
-        included, even if they were already activated in this working set.
-        """
-
-        needed = self.resolve(parse_requirements(requirements))
-
-        for dist in needed:
-            self.add(dist)
-
-        return needed
-
-
-    def subscribe(self, callback):
-        """Invoke `callback` for all distributions (including existing ones)"""
-        if callback in self.callbacks:
-            return
-        self.callbacks.append(callback)
-        for dist in self:
-            callback(dist)
-
-
-    def _added_new(self, dist):
-        for callback in self.callbacks:
-            callback(dist)
-
-    def __getstate__(self):
-        return (self.entries[:], self.entry_keys.copy(), self.by_key.copy(),
-                self.callbacks[:])
-
-    def __setstate__(self, (entries, keys, by_key, callbacks)):
-        self.entries = entries[:]
-        self.entry_keys = keys.copy()
-        self.by_key = by_key.copy()
-        self.callbacks = callbacks[:]
-
-
-
-
-class Environment(object):
-    """Searchable snapshot of distributions on a search path"""
-
-    def __init__(self, search_path=None, platform=get_supported_platform(), python=PY_MAJOR):
-        """Snapshot distributions available on a search path
-
-        Any distributions found on `search_path` are added to the environment.
-        `search_path` should be a sequence of ``sys.path`` items.  If not
-        supplied, ``sys.path`` is used.
-
-        `platform` is an optional string specifying the name of the platform
-        that platform-specific distributions must be compatible with.  If
-        unspecified, it defaults to the current platform.  `python` is an
-        optional string naming the desired version of Python (e.g. ``'2.4'``);
-        it defaults to the current version.
-
-        You may explicitly set `platform` (and/or `python`) to ``None`` if you
-        wish to map *all* distributions, not just those compatible with the
-        running platform or Python version.
-        """
-        self._distmap = {}
-        self._cache = {}
-        self.platform = platform
-        self.python = python
-        self.scan(search_path)
-
-    def can_add(self, dist):
-        """Is distribution `dist` acceptable for this environment?
-
-        The distribution must match the platform and python version
-        requirements specified when this environment was created, or False
-        is returned.
-        """
-        return (self.python is None or dist.py_version is None
-            or dist.py_version==self.python) \
-           and compatible_platforms(dist.platform,self.platform)
-
-    def remove(self, dist):
-        """Remove `dist` from the environment"""
-        self._distmap[dist.key].remove(dist)
-
-    def scan(self, search_path=None):
-        """Scan `search_path` for distributions usable in this environment
-
-        Any distributions found are added to the environment.
-        `search_path` should be a sequence of ``sys.path`` items.  If not
-        supplied, ``sys.path`` is used.  Only distributions conforming to
-        the platform/python version defined at initialization are added.
-        """
-        if search_path is None:
-            search_path = sys.path
-
-        for item in search_path:
-            for dist in find_distributions(item):
-                self.add(dist)
-
-    def __getitem__(self,project_name):
-        """Return a newest-to-oldest list of distributions for `project_name`
-        """
-        try:
-            return self._cache[project_name]
-        except KeyError:
-            project_name = project_name.lower()
-            if project_name not in self._distmap:
-                return []
-
-        if project_name not in self._cache:
-            dists = self._cache[project_name] = self._distmap[project_name]
-            _sort_dists(dists)
-
-        return self._cache[project_name]
-
-    def add(self,dist):
-        """Add `dist` if we ``can_add()`` it and it isn't already added"""
-        if self.can_add(dist) and dist.has_version():
-            dists = self._distmap.setdefault(dist.key,[])
-            if dist not in dists:
-                dists.append(dist)
-                if dist.key in self._cache:
-                    _sort_dists(self._cache[dist.key])
-
-
-    def best_match(self, req, working_set, installer=None):
-        """Find distribution best matching `req` and usable on `working_set`
-
-        This calls the ``find(req)`` method of the `working_set` to see if a
-        suitable distribution is already active.  (This may raise
-        ``VersionConflict`` if an unsuitable version of the project is already
-        active in the specified `working_set`.)  If a suitable distribution
-        isn't active, this method returns the newest distribution in the
-        environment that meets the ``Requirement`` in `req`.  If no suitable
-        distribution is found, and `installer` is supplied, then the result of
-        calling the environment's ``obtain(req, installer)`` method will be
-        returned.
-        """
-        dist = working_set.find(req)
-        if dist is not None:
-            return dist
-        for dist in self[req.key]:
-            if dist in req:
-                return dist
-        return self.obtain(req, installer) # try and download/install
-
-    def obtain(self, requirement, installer=None):
-        """Obtain a distribution matching `requirement` (e.g. via download)
-
-        Obtain a distro that matches requirement (e.g. via download).  In the
-        base ``Environment`` class, this routine just returns
-        ``installer(requirement)``, unless `installer` is None, in which case
-        None is returned instead.  This method is a hook that allows subclasses
-        to attempt other ways of obtaining a distribution before falling back
-        to the `installer` argument."""
-        if installer is not None:
-            return installer(requirement)
-
-    def __iter__(self):
-        """Yield the unique project names of the available distributions"""
-        for key in self._distmap.keys():
-            if self[key]: yield key
-
-
-
-
-    def __iadd__(self, other):
-        """In-place addition of a distribution or environment"""
-        if isinstance(other,Distribution):
-            self.add(other)
-        elif isinstance(other,Environment):
-            for project in other:
-                for dist in other[project]:
-                    self.add(dist)
-        else:
-            raise TypeError("Can't add %r to environment" % (other,))
-        return self
-
-    def __add__(self, other):
-        """Add an environment or distribution to an environment"""
-        new = self.__class__([], platform=None, python=None)
-        for env in self, other:
-            new += env
-        return new
-
-
-AvailableDistributions = Environment    # XXX backward compatibility
-
-
-class ExtractionError(RuntimeError):
-    """An error occurred extracting a resource
-
-    The following attributes are available from instances of this exception:
-
-    manager
-        The resource manager that raised this exception
-
-    cache_path
-        The base directory for resource extraction
-
-    original_error
-        The exception instance that caused extraction to fail
-    """
-
-
-
-
-class ResourceManager:
-    """Manage resource extraction and packages"""
-    extraction_path = None
-
-    def __init__(self):
-        self.cached_files = {}
-
-    def resource_exists(self, package_or_requirement, resource_name):
-        """Does the named resource exist?"""
-        return get_provider(package_or_requirement).has_resource(resource_name)
-
-    def resource_isdir(self, package_or_requirement, resource_name):
-        """Is the named resource an existing directory?"""
-        return get_provider(package_or_requirement).resource_isdir(
-            resource_name
-        )
-
-    def resource_filename(self, package_or_requirement, resource_name):
-        """Return a true filesystem path for specified resource"""
-        return get_provider(package_or_requirement).get_resource_filename(
-            self, resource_name
-        )
-
-    def resource_stream(self, package_or_requirement, resource_name):
-        """Return a readable file-like object for specified resource"""
-        return get_provider(package_or_requirement).get_resource_stream(
-            self, resource_name
-        )
-
-    def resource_string(self, package_or_requirement, resource_name):
-        """Return specified resource as a string"""
-        return get_provider(package_or_requirement).get_resource_string(
-            self, resource_name
-        )
-
-    def resource_listdir(self, package_or_requirement, resource_name):
-        """List the contents of the named resource directory"""
-        return get_provider(package_or_requirement).resource_listdir(
-            resource_name
-        )
-
-    def extraction_error(self):
-        """Give an error message for problems extracting file(s)"""
-
-        old_exc = sys.exc_info()[1]
-        cache_path = self.extraction_path or get_default_cache()
-
-        err = ExtractionError("""Can't extract file(s) to egg cache
-
-The following error occurred while trying to extract file(s) to the Python egg
-cache:
-
-  %s
-
-The Python egg cache directory is currently set to:
-
-  %s
-
-Perhaps your account does not have write access to this directory?  You can
-change the cache directory by setting the PYTHON_EGG_CACHE environment
-variable to point to an accessible directory.
-"""         % (old_exc, cache_path)
-        )
-        err.manager        = self
-        err.cache_path     = cache_path
-        err.original_error = old_exc
-        raise err
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    def get_cache_path(self, archive_name, names=()):
-        """Return absolute location in cache for `archive_name` and `names`
-
-        The parent directory of the resulting path will be created if it does
-        not already exist.  `archive_name` should be the base filename of the
-        enclosing egg (which may not be the name of the enclosing zipfile!),
-        including its ".egg" extension.  `names`, if provided, should be a
-        sequence of path name parts "under" the egg's extraction location.
-
-        This method should only be called by resource providers that need to
-        obtain an extraction location, and only for names they intend to
-        extract, as it tracks the generated names for possible cleanup later.
-        """
-        extract_path = self.extraction_path or get_default_cache()
-        target_path = os.path.join(extract_path, archive_name+'-tmp', *names)
-        try:
-            _bypass_ensure_directory(target_path)
-        except:
-            self.extraction_error()
-
-        self.cached_files[target_path] = 1
-        return target_path
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    def postprocess(self, tempname, filename):
-        """Perform any platform-specific postprocessing of `tempname`
-
-        This is where Mac header rewrites should be done; other platforms don't
-        have anything special they should do.
-
-        Resource providers should call this method ONLY after successfully
-        extracting a compressed resource.  They must NOT call it on resources
-        that are already in the filesystem.
-
-        `tempname` is the current (temporary) name of the file, and `filename`
-        is the name it will be renamed to by the caller after this routine
-        returns.
-        """
-
-        if os.name == 'posix':
-            # Make the resource executable
-            mode = ((os.stat(tempname).st_mode) | 0555) & 07777
-            os.chmod(tempname, mode)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    def set_extraction_path(self, path):
-        """Set the base path where resources will be extracted to, if needed.
-
-        If you do not call this routine before any extractions take place, the
-        path defaults to the return value of ``get_default_cache()``.  (Which
-        is based on the ``PYTHON_EGG_CACHE`` environment variable, with various
-        platform-specific fallbacks.  See that routine's documentation for more
-        details.)
-
-        Resources are extracted to subdirectories of this path based upon
-        information given by the ``IResourceProvider``.  You may set this to a
-        temporary directory, but then you must call ``cleanup_resources()`` to
-        delete the extracted files when done.  There is no guarantee that
-        ``cleanup_resources()`` will be able to remove all extracted files.
-
-        (Note: you may not change the extraction path for a given resource
-        manager once resources have been extracted, unless you first call
-        ``cleanup_resources()``.)
-        """
-        if self.cached_files:
-            raise ValueError(
-                "Can't change extraction path, files already extracted"
-            )
-
-        self.extraction_path = path
-
-    def cleanup_resources(self, force=False):
-        """
-        Delete all extracted resource files and directories, returning a list
-        of the file and directory names that could not be successfully removed.
-        This function does not have any concurrency protection, so it should
-        generally only be called when the extraction path is a temporary
-        directory exclusive to a single process.  This method is not
-        automatically called; you must call it explicitly or register it as an
-        ``atexit`` function if you wish to ensure cleanup of a temporary
-        directory used for extractions.
-        """
-        # XXX
-
-
-
-def get_default_cache():
-    """Determine the default cache location
-
-    This returns the ``PYTHON_EGG_CACHE`` environment variable, if set.
-    Otherwise, on Windows, it returns a "Python-Eggs" subdirectory of the
-    "Application Data" directory.  On all other systems, it's "~/.python-eggs".
-    """
-    try:
-        return os.environ['PYTHON_EGG_CACHE']
-    except KeyError:
-        pass
-
-    if os.name!='nt':
-        return os.path.expanduser('~/.python-eggs')
-
-    app_data = 'Application Data'   # XXX this may be locale-specific!
-    app_homes = [
-        (('APPDATA',), None),       # best option, should be locale-safe
-        (('USERPROFILE',), app_data),
-        (('HOMEDRIVE','HOMEPATH'), app_data),
-        (('HOMEPATH',), app_data),
-        (('HOME',), None),
-        (('WINDIR',), app_data),    # 95/98/ME
-    ]
-
-    for keys, subdir in app_homes:
-        dirname = ''
-        for key in keys:
-            if key in os.environ:
-                dirname = os.path.join(dirname, os.environ[key])
-            else:
-                break
-        else:
-            if subdir:
-                dirname = os.path.join(dirname,subdir)
-            return os.path.join(dirname, 'Python-Eggs')
-    else:
-        raise RuntimeError(
-            "Please set the PYTHON_EGG_CACHE enviroment variable"
-        )
-
-def safe_name(name):
-    """Convert an arbitrary string to a standard distribution name
-
-    Any runs of non-alphanumeric/. characters are replaced with a single '-'.
-    """
-    return re.sub('[^A-Za-z0-9.]+', '-', name)
-
-
-def safe_version(version):
-    """Convert an arbitrary string to a standard version string
-
-    Spaces become dots, and all other non-alphanumeric characters become
-    dashes, with runs of multiple dashes condensed to a single dash.
-    """
-    version = version.replace(' ','.')
-    return re.sub('[^A-Za-z0-9.]+', '-', version)
-
-
-def safe_extra(extra):
-    """Convert an arbitrary string to a standard 'extra' name
-
-    Any runs of non-alphanumeric characters are replaced with a single '_',
-    and the result is always lowercased.
-    """
-    return re.sub('[^A-Za-z0-9.]+', '_', extra).lower()
-
-
-def to_filename(name):
-    """Convert a project or version name to its filename-escaped form
-
-    Any '-' characters are currently replaced with '_'.
-    """
-    return name.replace('-','_')
-
-
-
-
-
-
-
-
-class NullProvider:
-    """Try to implement resources and metadata for arbitrary PEP 302 loaders"""
-
-    egg_name = None
-    egg_info = None
-    loader = None
-
-    def __init__(self, module):
-        self.loader = getattr(module, '__loader__', None)
-        self.module_path = os.path.dirname(getattr(module, '__file__', ''))
-
-    def get_resource_filename(self, manager, resource_name):
-        return self._fn(self.module_path, resource_name)
-
-    def get_resource_stream(self, manager, resource_name):
-        return StringIO(self.get_resource_string(manager, resource_name))
-
-    def get_resource_string(self, manager, resource_name):
-        return self._get(self._fn(self.module_path, resource_name))
-
-    def has_resource(self, resource_name):
-        return self._has(self._fn(self.module_path, resource_name))
-
-    def has_metadata(self, name):
-        return self.egg_info and self._has(self._fn(self.egg_info,name))
-
-    if sys.version_info <= (3,):
-        def get_metadata(self, name):
-            if not self.egg_info:
-                return ""
-            return self._get(self._fn(self.egg_info,name))
-    else:
-        def get_metadata(self, name):
-            if not self.egg_info:
-                return ""
-            return self._get(self._fn(self.egg_info,name)).decode("utf-8")
-
-    def get_metadata_lines(self, name):
-        return yield_lines(self.get_metadata(name))
-
-    def resource_isdir(self,resource_name):
-        return self._isdir(self._fn(self.module_path, resource_name))
-
-    def metadata_isdir(self,name):
-        return self.egg_info and self._isdir(self._fn(self.egg_info,name))
-
-
-    def resource_listdir(self,resource_name):
-        return self._listdir(self._fn(self.module_path,resource_name))
-
-    def metadata_listdir(self,name):
-        if self.egg_info:
-            return self._listdir(self._fn(self.egg_info,name))
-        return []
-
-    def run_script(self,script_name,namespace):
-        script = 'scripts/'+script_name
-        if not self.has_metadata(script):
-            raise ResolutionError("No script named %r" % script_name)
-        script_text = self.get_metadata(script).replace('\r\n','\n')
-        script_text = script_text.replace('\r','\n')
-        script_filename = self._fn(self.egg_info,script)
-        namespace['__file__'] = script_filename
-        if os.path.exists(script_filename):
-            execfile(script_filename, namespace, namespace)
-        else:
-            from linecache import cache
-            cache[script_filename] = (
-                len(script_text), 0, script_text.split('\n'), script_filename
-            )
-            script_code = compile(script_text,script_filename,'exec')
-            exec script_code in namespace, namespace
-
-    def _has(self, path):
-        raise NotImplementedError(
-            "Can't perform this operation for unregistered loader type"
-        )
-
-    def _isdir(self, path):
-        raise NotImplementedError(
-            "Can't perform this operation for unregistered loader type"
-        )
-
-    def _listdir(self, path):
-        raise NotImplementedError(
-            "Can't perform this operation for unregistered loader type"
-        )
-
-    def _fn(self, base, resource_name):
-        if resource_name:
-            return os.path.join(base, *resource_name.split('/'))
-        return base
-
-    def _get(self, path):
-        if hasattr(self.loader, 'get_data'):
-            return self.loader.get_data(path)
-        raise NotImplementedError(
-            "Can't perform this operation for loaders without 'get_data()'"
-        )
-
-register_loader_type(object, NullProvider)
-
-
-class EggProvider(NullProvider):
-    """Provider based on a virtual filesystem"""
-
-    def __init__(self,module):
-        NullProvider.__init__(self,module)
-        self._setup_prefix()
-
-    def _setup_prefix(self):
-        # we assume here that our metadata may be nested inside a "basket"
-        # of multiple eggs; that's why we use module_path instead of .archive
-        path = self.module_path
-        old = None
-        while path!=old:
-            if path.lower().endswith('.egg'):
-                self.egg_name = os.path.basename(path)
-                self.egg_info = os.path.join(path, 'EGG-INFO')
-                self.egg_root = path
-                break
-            old = path
-            path, base = os.path.split(path)
-
-
-
-
-
-
-class DefaultProvider(EggProvider):
-    """Provides access to package resources in the filesystem"""
-
-    def _has(self, path):
-        return os.path.exists(path)
-
-    def _isdir(self,path):
-        return os.path.isdir(path)
-
-    def _listdir(self,path):
-        return os.listdir(path)
-
-    def get_resource_stream(self, manager, resource_name):
-        return open(self._fn(self.module_path, resource_name), 'rb')
-
-    def _get(self, path):
-        stream = open(path, 'rb')
-        try:
-            return stream.read()
-        finally:
-            stream.close()
-
-register_loader_type(type(None), DefaultProvider)
-
-if importlib_bootstrap is not None:
-    register_loader_type(importlib_bootstrap.SourceFileLoader, DefaultProvider)
-
-
-class EmptyProvider(NullProvider):
-    """Provider that returns nothing for all requests"""
-
-    _isdir = _has = lambda self,path: False
-    _get          = lambda self,path: ''
-    _listdir      = lambda self,path: []
-    module_path   = None
-
-    def __init__(self):
-        pass
-
-empty_provider = EmptyProvider()
-
-
-
-
-class ZipProvider(EggProvider):
-    """Resource support for zips and eggs"""
-
-    eagers = None
-
-    def __init__(self, module):
-        EggProvider.__init__(self,module)
-        self.zipinfo = zipimport._zip_directory_cache[self.loader.archive]
-        self.zip_pre = self.loader.archive+os.sep
-
-    def _zipinfo_name(self, fspath):
-        # Convert a virtual filename (full path to file) into a zipfile subpath
-        # usable with the zipimport directory cache for our target archive
-        if fspath.startswith(self.zip_pre):
-            return fspath[len(self.zip_pre):]
-        raise AssertionError(
-            "%s is not a subpath of %s" % (fspath,self.zip_pre)
-        )
-
-    def _parts(self,zip_path):
-        # Convert a zipfile subpath into an egg-relative path part list
-        fspath = self.zip_pre+zip_path  # pseudo-fs path
-        if fspath.startswith(self.egg_root+os.sep):
-            return fspath[len(self.egg_root)+1:].split(os.sep)
-        raise AssertionError(
-            "%s is not a subpath of %s" % (fspath,self.egg_root)
-        )
-
-    def get_resource_filename(self, manager, resource_name):
-        if not self.egg_name:
-            raise NotImplementedError(
-                "resource_filename() only supported for .egg, not .zip"
-            )
-        # no need to lock for extraction, since we use temp names
-        zip_path = self._resource_to_zip(resource_name)
-        eagers = self._get_eager_resources()
-        if '/'.join(self._parts(zip_path)) in eagers:
-            for name in eagers:
-                self._extract_resource(manager, self._eager_to_zip(name))
-        return self._extract_resource(manager, zip_path)
-
-    def _extract_resource(self, manager, zip_path):
-
-        if zip_path in self._index():
-            for name in self._index()[zip_path]:
-                last = self._extract_resource(
-                    manager, os.path.join(zip_path, name)
-                )
-            return os.path.dirname(last)  # return the extracted directory name
-
-        zip_stat = self.zipinfo[zip_path]
-        t,d,size = zip_stat[5], zip_stat[6], zip_stat[3]
-        date_time = (
-            (d>>9)+1980, (d>>5)&0xF, d&0x1F,                      # ymd
-            (t&0xFFFF)>>11, (t>>5)&0x3F, (t&0x1F) * 2, 0, 0, -1   # hms, etc.
-        )
-        timestamp = time.mktime(date_time)
-
-        try:
-            if not WRITE_SUPPORT:
-                raise IOError('"os.rename" and "os.unlink" are not supported '
-                              'on this platform')
-
-            real_path = manager.get_cache_path(
-                self.egg_name, self._parts(zip_path)
-            )
-
-            if os.path.isfile(real_path):
-                stat = os.stat(real_path)
-                if stat.st_size==size and stat.st_mtime==timestamp:
-                    # size and stamp match, don't bother extracting
-                    return real_path
-
-            outf, tmpnam = _mkstemp(".$extract", dir=os.path.dirname(real_path))
-            os.write(outf, self.loader.get_data(zip_path))
-            os.close(outf)
-            utime(tmpnam, (timestamp,timestamp))
-            manager.postprocess(tmpnam, real_path)
-
-            try:
-                rename(tmpnam, real_path)
-
-            except os.error:
-                if os.path.isfile(real_path):
-                    stat = os.stat(real_path)
-
-                    if stat.st_size==size and stat.st_mtime==timestamp:
-                        # size and stamp match, somebody did it just ahead of
-                        # us, so we're done
-                        return real_path
-                    elif os.name=='nt':     # Windows, del old file and retry
-                        unlink(real_path)
-                        rename(tmpnam, real_path)
-                        return real_path
-                raise
-
-        except os.error:
-            manager.extraction_error()  # report a user-friendly error
-
-        return real_path
-
-    def _get_eager_resources(self):
-        if self.eagers is None:
-            eagers = []
-            for name in ('native_libs.txt', 'eager_resources.txt'):
-                if self.has_metadata(name):
-                    eagers.extend(self.get_metadata_lines(name))
-            self.eagers = eagers
-        return self.eagers
-
-    def _index(self):
-        try:
-            return self._dirindex
-        except AttributeError:
-            ind = {}
-            for path in self.zipinfo:
-                parts = path.split(os.sep)
-                while parts:
-                    parent = os.sep.join(parts[:-1])
-                    if parent in ind:
-                        ind[parent].append(parts[-1])
-                        break
-                    else:
-                        ind[parent] = [parts.pop()]
-            self._dirindex = ind
-            return ind
-
-    def _has(self, fspath):
-        zip_path = self._zipinfo_name(fspath)
-        return zip_path in self.zipinfo or zip_path in self._index()
-
-    def _isdir(self,fspath):
-        return self._zipinfo_name(fspath) in self._index()
-
-    def _listdir(self,fspath):
-        return list(self._index().get(self._zipinfo_name(fspath), ()))
-
-    def _eager_to_zip(self,resource_name):
-        return self._zipinfo_name(self._fn(self.egg_root,resource_name))
-
-    def _resource_to_zip(self,resource_name):
-        return self._zipinfo_name(self._fn(self.module_path,resource_name))
-
-register_loader_type(zipimport.zipimporter, ZipProvider)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-class FileMetadata(EmptyProvider):
-    """Metadata handler for standalone PKG-INFO files
-
-    Usage::
-
-        metadata = FileMetadata("/path/to/PKG-INFO")
-
-    This provider rejects all data and metadata requests except for PKG-INFO,
-    which is treated as existing, and will be the contents of the file at
-    the provided location.
-    """
-
-    def __init__(self,path):
-        self.path = path
-
-    def has_metadata(self,name):
-        return name=='PKG-INFO'
-
-    def get_metadata(self,name):
-        if name=='PKG-INFO':
-            f = open(self.path,'rU')
-            metadata = f.read()
-            f.close()
-            return metadata
-        raise KeyError("No metadata except PKG-INFO is available")
-
-    def get_metadata_lines(self,name):
-        return yield_lines(self.get_metadata(name))
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-class PathMetadata(DefaultProvider):
-    """Metadata provider for egg directories
-
-    Usage::
-
-        # Development eggs:
-
-        egg_info = "/path/to/PackageName.egg-info"
-        base_dir = os.path.dirname(egg_info)
-        metadata = PathMetadata(base_dir, egg_info)
-        dist_name = os.path.splitext(os.path.basename(egg_info))[0]
-        dist = Distribution(basedir,project_name=dist_name,metadata=metadata)
-
-        # Unpacked egg directories:
-
-        egg_path = "/path/to/PackageName-ver-pyver-etc.egg"
-        metadata = PathMetadata(egg_path, os.path.join(egg_path,'EGG-INFO'))
-        dist = Distribution.from_filename(egg_path, metadata=metadata)
-    """
-
-    def __init__(self, path, egg_info):
-        self.module_path = path
-        self.egg_info = egg_info
-
-
-class EggMetadata(ZipProvider):
-    """Metadata provider for .egg files"""
-
-    def __init__(self, importer):
-        """Create a metadata provider from a zipimporter"""
-
-        self.zipinfo = zipimport._zip_directory_cache[importer.archive]
-        self.zip_pre = importer.archive+os.sep
-        self.loader = importer
-        if importer.prefix:
-            self.module_path = os.path.join(importer.archive, importer.prefix)
-        else:
-            self.module_path = importer.archive
-        self._setup_prefix()
-
-
-class ImpWrapper:
-    """PEP 302 Importer that wraps Python's "normal" import algorithm"""
-
-    def __init__(self, path=None):
-        self.path = path
-
-    def find_module(self, fullname, path=None):
-        subname = fullname.split(".")[-1]
-        if subname != fullname and self.path is None:
-            return None
-        if self.path is None:
-            path = None
-        else:
-            path = [self.path]
-        try:
-            file, filename, etc = imp.find_module(subname, path)
-        except ImportError:
-            return None
-        return ImpLoader(file, filename, etc)
-
-
-class ImpLoader:
-    """PEP 302 Loader that wraps Python's "normal" import algorithm"""
-
-    def __init__(self, file, filename, etc):
-        self.file = file
-        self.filename = filename
-        self.etc = etc
-
-    def load_module(self, fullname):
-        try:
-            mod = imp.load_module(fullname, self.file, self.filename, self.etc)
-        finally:
-            if self.file: self.file.close()
-        # Note: we don't set __loader__ because we want the module to look
-        # normal; i.e. this is just a wrapper for standard import machinery
-        return mod
-
-
-
-
-def get_importer(path_item):
-    """Retrieve a PEP 302 "importer" for the given path item
-
-    If there is no importer, this returns a wrapper around the builtin import
-    machinery.  The returned importer is only cached if it was created by a
-    path hook.
-    """
-    try:
-        importer = sys.path_importer_cache[path_item]
-    except KeyError:
-        for hook in sys.path_hooks:
-            try:
-                importer = hook(path_item)
-            except ImportError:
-                pass
-            else:
-                break
-        else:
-            importer = None
-
-    sys.path_importer_cache.setdefault(path_item,importer)
-    if importer is None:
-        try:
-            importer = ImpWrapper(path_item)
-        except ImportError:
-            pass
-    return importer
-
-try:
-    from pkgutil import get_importer, ImpImporter
-except ImportError:
-    pass    # Python 2.3 or 2.4, use our own implementation
-else:
-    ImpWrapper = ImpImporter    # Python 2.5, use pkgutil's implementation
-    del ImpLoader, ImpImporter
-
-
-
-
-
-
-_declare_state('dict', _distribution_finders = {})
-
-def register_finder(importer_type, distribution_finder):
-    """Register `distribution_finder` to find distributions in sys.path items
-
-    `importer_type` is the type or class of a PEP 302 "Importer" (sys.path item
-    handler), and `distribution_finder` is a callable that, passed a path
-    item and the importer instance, yields ``Distribution`` instances found on
-    that path item.  See ``pkg_resources.find_on_path`` for an example."""
-    _distribution_finders[importer_type] = distribution_finder
-
-
-def find_distributions(path_item, only=False):
-    """Yield distributions accessible via `path_item`"""
-    importer = get_importer(path_item)
-    finder = _find_adapter(_distribution_finders, importer)
-    return finder(importer, path_item, only)
-
-def find_in_zip(importer, path_item, only=False):
-    metadata = EggMetadata(importer)
-    if metadata.has_metadata('PKG-INFO'):
-        yield Distribution.from_filename(path_item, metadata=metadata)
-    if only:
-        return  # don't yield nested distros
-    for subitem in metadata.resource_listdir('/'):
-        if subitem.endswith('.egg'):
-            subpath = os.path.join(path_item, subitem)
-            for dist in find_in_zip(zipimport.zipimporter(subpath), subpath):
-                yield dist
-
-register_finder(zipimport.zipimporter, find_in_zip)
-
-def StringIO(*args, **kw):
-    """Thunk to load the real StringIO on demand"""
-    global StringIO
-    try:
-        from cStringIO import StringIO
-    except ImportError:
-        from StringIO import StringIO
-    return StringIO(*args,**kw)
-
-def find_nothing(importer, path_item, only=False):
-    return ()
-register_finder(object,find_nothing)
-
-def find_on_path(importer, path_item, only=False):
-    """Yield distributions accessible on a sys.path directory"""
-    path_item = _normalize_cached(path_item)
-
-    if os.path.isdir(path_item) and os.access(path_item, os.R_OK):
-        if path_item.lower().endswith('.egg'):
-            # unpacked egg
-            yield Distribution.from_filename(
-                path_item, metadata=PathMetadata(
-                    path_item, os.path.join(path_item,'EGG-INFO')
-                )
-            )
-        else:
-            # scan for .egg and .egg-info in directory
-            for entry in os.listdir(path_item):
-                lower = entry.lower()
-                if lower.endswith('.egg-info') or lower.endswith('.dist-info'):
-                    fullpath = os.path.join(path_item, entry)
-                    if os.path.isdir(fullpath):
-                        # egg-info directory, allow getting metadata
-                        metadata = PathMetadata(path_item, fullpath)
-                    else:
-                        metadata = FileMetadata(fullpath)
-                    yield Distribution.from_location(
-                        path_item,entry,metadata,precedence=DEVELOP_DIST
-                    )
-                elif not only and lower.endswith('.egg'):
-                    for dist in find_distributions(os.path.join(path_item, entry)):
-                        yield dist
-                elif not only and lower.endswith('.egg-link'):
-                    entry_file = open(os.path.join(path_item, entry))
-                    try:
-                        entry_lines = entry_file.readlines()
-                    finally:
-                        entry_file.close()
-                    for line in entry_lines:
-                        if not line.strip(): continue
-                        for item in find_distributions(os.path.join(path_item,line.rstrip())):
-                            yield item
-                        break
-register_finder(ImpWrapper,find_on_path)
-
-if importlib_bootstrap is not None:
-    register_finder(importlib_bootstrap.FileFinder, find_on_path)
-
-_declare_state('dict', _namespace_handlers={})
-_declare_state('dict', _namespace_packages={})
-
-
-def register_namespace_handler(importer_type, namespace_handler):
-    """Register `namespace_handler` to declare namespace packages
-
-    `importer_type` is the type or class of a PEP 302 "Importer" (sys.path item
-    handler), and `namespace_handler` is a callable like this::
-
-        def namespace_handler(importer,path_entry,moduleName,module):
-            # return a path_entry to use for child packages
-
-    Namespace handlers are only called if the importer object has already
-    agreed that it can handle the relevant path item, and they should only
-    return a subpath if the module __path__ does not already contain an
-    equivalent subpath.  For an example namespace handler, see
-    ``pkg_resources.file_ns_handler``.
-    """
-    _namespace_handlers[importer_type] = namespace_handler
-
-def _handle_ns(packageName, path_item):
-    """Ensure that named package includes a subpath of path_item (if needed)"""
-    importer = get_importer(path_item)
-    if importer is None:
-        return None
-    loader = importer.find_module(packageName)
-    if loader is None:
-        return None
-    module = sys.modules.get(packageName)
-    if module is None:
-        module = sys.modules[packageName] = types.ModuleType(packageName)
-        module.__path__ = []; _set_parent_ns(packageName)
-    elif not hasattr(module,'__path__'):
-        raise TypeError("Not a package:", packageName)
-    handler = _find_adapter(_namespace_handlers, importer)
-    subpath = handler(importer,path_item,packageName,module)
-    if subpath is not None:
-        path = module.__path__; path.append(subpath)
-        loader.load_module(packageName); module.__path__ = path
-    return subpath
-
-def declare_namespace(packageName):
-    """Declare that package 'packageName' is a namespace package"""
-
-    imp.acquire_lock()
-    try:
-        if packageName in _namespace_packages:
-            return
-
-        path, parent = sys.path, None
-        if '.' in packageName:
-            parent = '.'.join(packageName.split('.')[:-1])
-            declare_namespace(parent)
-            if parent not in _namespace_packages:
-                __import__(parent)
-            try:
-                path = sys.modules[parent].__path__
-            except AttributeError:
-                raise TypeError("Not a package:", parent)
-
-        # Track what packages are namespaces, so when new path items are added,
-        # they can be updated
-        _namespace_packages.setdefault(parent,[]).append(packageName)
-        _namespace_packages.setdefault(packageName,[])
-
-        for path_item in path:
-            # Ensure all the parent's path items are reflected in the child,
-            # if they apply
-            _handle_ns(packageName, path_item)
-
-    finally:
-        imp.release_lock()
-
-def fixup_namespace_packages(path_item, parent=None):
-    """Ensure that previously-declared namespace packages include path_item"""
-    imp.acquire_lock()
-    try:
-        for package in _namespace_packages.get(parent,()):
-            subpath = _handle_ns(package, path_item)
-            if subpath: fixup_namespace_packages(subpath,package)
-    finally:
-        imp.release_lock()
-
-def file_ns_handler(importer, path_item, packageName, module):
-    """Compute an ns-package subpath for a filesystem or zipfile importer"""
-
-    subpath = os.path.join(path_item, packageName.split('.')[-1])
-    normalized = _normalize_cached(subpath)
-    for item in module.__path__:
-        if _normalize_cached(item)==normalized:
-            break
-    else:
-        # Only return the path if it's not already there
-        return subpath
-
-register_namespace_handler(ImpWrapper,file_ns_handler)
-register_namespace_handler(zipimport.zipimporter,file_ns_handler)
-
-if importlib_bootstrap is not None:
-    register_namespace_handler(importlib_bootstrap.FileFinder, file_ns_handler)
-
-
-def null_ns_handler(importer, path_item, packageName, module):
-    return None
-
-register_namespace_handler(object,null_ns_handler)
-
-
-def normalize_path(filename):
-    """Normalize a file/dir name for comparison purposes"""
-    return os.path.normcase(os.path.realpath(filename))
-
-def _normalize_cached(filename,_cache={}):
-    try:
-        return _cache[filename]
-    except KeyError:
-        _cache[filename] = result = normalize_path(filename)
-        return result
-
-def _set_parent_ns(packageName):
-    parts = packageName.split('.')
-    name = parts.pop()
-    if parts:
-        parent = '.'.join(parts)
-        setattr(sys.modules[parent], name, sys.modules[packageName])
-
-
-def yield_lines(strs):
-    """Yield non-empty/non-comment lines of a ``basestring`` or sequence"""
-    if isinstance(strs,basestring):
-        for s in strs.splitlines():
-            s = s.strip()
-            if s and not s.startswith('#'):     # skip blank lines/comments
-                yield s
-    else:
-        for ss in strs:
-            for s in yield_lines(ss):
-                yield s
-
-LINE_END = re.compile(r"\s*(#.*)?$").match         # whitespace and comment
-CONTINUE = re.compile(r"\s*\\\s*(#.*)?$").match    # line continuation
-DISTRO   = re.compile(r"\s*((\w|[-.])+)").match    # Distribution or extra
-VERSION  = re.compile(r"\s*(<=?|>=?|==|!=)\s*((\w|[-.])+)").match  # ver. info
-COMMA    = re.compile(r"\s*,").match               # comma between items
-OBRACKET = re.compile(r"\s*\[").match
-CBRACKET = re.compile(r"\s*\]").match
-MODULE   = re.compile(r"\w+(\.\w+)*$").match
-EGG_NAME = re.compile(
-    r"(?P<name>[^-]+)"
-    r"( -(?P<ver>[^-]+) (-py(?P<pyver>[^-]+) (-(?P<plat>.+))? )? )?",
-    re.VERBOSE | re.IGNORECASE
-).match
-
-component_re = re.compile(r'(\d+ | [a-z]+ | \.| -)', re.VERBOSE)
-replace = {'pre':'c', 'preview':'c','-':'final-','rc':'c','dev':'@'}.get
-
-def _parse_version_parts(s):
-    for part in component_re.split(s):
-        part = replace(part,part)
-        if part in ['', '.']:
-            continue
-        if part[:1] in '0123456789':
-            yield part.zfill(8)    # pad for numeric comparison
-        else:
-            yield '*'+part
-
-    yield '*final'  # ensure that alpha/beta/candidate are before final
-
-def parse_version(s):
-    """Convert a version string to a chronologically-sortable key
-
-    This is a rough cross between distutils' StrictVersion and LooseVersion;
-    if you give it versions that would work with StrictVersion, then it behaves
-    the same; otherwise it acts like a slightly-smarter LooseVersion. It is
-    *possible* to create pathological version coding schemes that will fool
-    this parser, but they should be very rare in practice.
-
-    The returned value will be a tuple of strings.  Numeric portions of the
-    version are padded to 8 digits so they will compare numerically, but
-    without relying on how numbers compare relative to strings.  Dots are
-    dropped, but dashes are retained.  Trailing zeros between alpha segments
-    or dashes are suppressed, so that e.g. "2.4.0" is considered the same as
-    "2.4". Alphanumeric parts are lower-cased.
-
-    The algorithm assumes that strings like "-" and any alpha string that
-    alphabetically follows "final"  represents a "patch level".  So, "2.4-1"
-    is assumed to be a branch or patch of "2.4", and therefore "2.4.1" is
-    considered newer than "2.4-1", which in turn is newer than "2.4".
-
-    Strings like "a", "b", "c", "alpha", "beta", "candidate" and so on (that
-    come before "final" alphabetically) are assumed to be pre-release versions,
-    so that the version "2.4" is considered newer than "2.4a1".
-
-    Finally, to handle miscellaneous cases, the strings "pre", "preview", and
-    "rc" are treated as if they were "c", i.e. as though they were release
-    candidates, and therefore are not as new as a version string that does not
-    contain them, and "dev" is replaced with an '@' so that it sorts lower than
-    than any other pre-release tag.
-    """
-    parts = []
-    for part in _parse_version_parts(s.lower()):
-        if part.startswith('*'):
-            # remove trailing zeros from each series of numeric parts
-            while parts and parts[-1]=='00000000':
-                parts.pop()
-        parts.append(part)
-    return tuple(parts)
-
-class EntryPoint(object):
-    """Object representing an advertised importable object"""
-
-    def __init__(self, name, module_name, attrs=(), extras=(), dist=None):
-        if not MODULE(module_name):
-            raise ValueError("Invalid module name", module_name)
-        self.name = name
-        self.module_name = module_name
-        self.attrs = tuple(attrs)
-        self.extras = Requirement.parse(("x[%s]" % ','.join(extras))).extras
-        self.dist = dist
-
-    def __str__(self):
-        s = "%s = %s" % (self.name, self.module_name)
-        if self.attrs:
-            s += ':' + '.'.join(self.attrs)
-        if self.extras:
-            s += ' [%s]' % ','.join(self.extras)
-        return s
-
-    def __repr__(self):
-        return "EntryPoint.parse(%r)" % str(self)
-
-    def load(self, require=True, env=None, installer=None):
-        if require: self.require(env, installer)
-        entry = __import__(self.module_name, globals(),globals(), ['__name__'])
-        for attr in self.attrs:
-            try:
-                entry = getattr(entry,attr)
-            except AttributeError:
-                raise ImportError("%r has no %r attribute" % (entry,attr))
-        return entry
-
-    def require(self, env=None, installer=None):
-        if self.extras and not self.dist:
-            raise UnknownExtra("Can't require() without a distribution", self)
-        map(working_set.add,
-            working_set.resolve(self.dist.requires(self.extras),env,installer))
-
-
-
-    #@classmethod
-    def parse(cls, src, dist=None):
-        """Parse a single entry point from string `src`
-
-        Entry point syntax follows the form::
-
-            name = some.module:some.attr [extra1,extra2]
-
-        The entry name and module name are required, but the ``:attrs`` and
-        ``[extras]`` parts are optional
-        """
-        try:
-            attrs = extras = ()
-            name,value = src.split('=',1)
-            if '[' in value:
-                value,extras = value.split('[',1)
-                req = Requirement.parse("x["+extras)
-                if req.specs: raise ValueError
-                extras = req.extras
-            if ':' in value:
-                value,attrs = value.split(':',1)
-                if not MODULE(attrs.rstrip()):
-                    raise ValueError
-                attrs = attrs.rstrip().split('.')
-        except ValueError:
-            raise ValueError(
-                "EntryPoint must be in 'name=module:attrs [extras]' format",
-                src
-            )
-        else:
-            return cls(name.strip(), value.strip(), attrs, extras, dist)
-
-    parse = classmethod(parse)
-
-
-
-
-
-
-
-
-    #@classmethod
-    def parse_group(cls, group, lines, dist=None):
-        """Parse an entry point group"""
-        if not MODULE(group):
-            raise ValueError("Invalid group name", group)
-        this = {}
-        for line in yield_lines(lines):
-            ep = cls.parse(line, dist)
-            if ep.name in this:
-                raise ValueError("Duplicate entry point", group, ep.name)
-            this[ep.name]=ep
-        return this
-
-    parse_group = classmethod(parse_group)
-
-    #@classmethod
-    def parse_map(cls, data, dist=None):
-        """Parse a map of entry point groups"""
-        if isinstance(data,dict):
-            data = data.items()
-        else:
-            data = split_sections(data)
-        maps = {}
-        for group, lines in data:
-            if group is None:
-                if not lines:
-                    continue
-                raise ValueError("Entry points must be listed in groups")
-            group = group.strip()
-            if group in maps:
-                raise ValueError("Duplicate group name", group)
-            maps[group] = cls.parse_group(group, lines, dist)
-        return maps
-
-    parse_map = classmethod(parse_map)
-
-
-def _remove_md5_fragment(location):
-    if not location:
-        return ''
-    parsed = urlparse(location)
-    if parsed[-1].startswith('md5='):
-        return urlunparse(parsed[:-1] + ('',))
-    return location
-
-
-class Distribution(object):
-    """Wrap an actual or potential sys.path entry w/metadata"""
-    PKG_INFO = 'PKG-INFO'
-
-    def __init__(self,
-        location=None, metadata=None, project_name=None, version=None,
-        py_version=PY_MAJOR, platform=None, precedence = EGG_DIST
-    ):
-        self.project_name = safe_name(project_name or 'Unknown')
-        if version is not None:
-            self._version = safe_version(version)
-        self.py_version = py_version
-        self.platform = platform
-        self.location = location
-        self.precedence = precedence
-        self._provider = metadata or empty_provider
-
-    #@classmethod
-    def from_location(cls,location,basename,metadata=None,**kw):
-        project_name, version, py_version, platform = [None]*4
-        basename, ext = os.path.splitext(basename)
-        if ext.lower() in _distributionImpl:
-            # .dist-info gets much metadata differently
-            match = EGG_NAME(basename)
-            if match:
-                project_name, version, py_version, platform = match.group(
-                    'name','ver','pyver','plat'
-                )
-            cls = _distributionImpl[ext.lower()]
-        return cls(
-            location, metadata, project_name=project_name, version=version,
-            py_version=py_version, platform=platform, **kw
-        )
-    from_location = classmethod(from_location)
-
-
-    hashcmp = property(
-        lambda self: (
-            getattr(self,'parsed_version',()),
-            self.precedence,
-            self.key,
-            _remove_md5_fragment(self.location),
-            self.py_version,
-            self.platform
-        )
-    )
-    def __hash__(self): return hash(self.hashcmp)
-    def __lt__(self, other):
-        return self.hashcmp < other.hashcmp
-    def __le__(self, other):
-        return self.hashcmp <= other.hashcmp
-    def __gt__(self, other):
-        return self.hashcmp > other.hashcmp
-    def __ge__(self, other):
-        return self.hashcmp >= other.hashcmp
-    def __eq__(self, other):
-        if not isinstance(other, self.__class__):
-            # It's not a Distribution, so they are not equal
-            return False
-        return self.hashcmp == other.hashcmp
-    def __ne__(self, other):
-        return not self == other
-
-    # These properties have to be lazy so that we don't have to load any
-    # metadata until/unless it's actually needed.  (i.e., some distributions
-    # may not know their name or version without loading PKG-INFO)
-
-    #@property
-    def key(self):
-        try:
-            return self._key
-        except AttributeError:
-            self._key = key = self.project_name.lower()
-            return key
-    key = property(key)
-
-    #@property
-    def parsed_version(self):
-        try:
-            return self._parsed_version
-        except AttributeError:
-            self._parsed_version = pv = parse_version(self.version)
-            return pv
-
-    parsed_version = property(parsed_version)
-
-    #@property
-    def version(self):
-        try:
-            return self._version
-        except AttributeError:
-            for line in self._get_metadata(self.PKG_INFO):
-                if line.lower().startswith('version:'):
-                    self._version = safe_version(line.split(':',1)[1].strip())
-                    return self._version
-            else:
-                raise ValueError(
-                    "Missing 'Version:' header and/or %s file" % self.PKG_INFO, self
-                )
-    version = property(version)
-
-
-
-
-    #@property
-    def _dep_map(self):
-        try:
-            return self.__dep_map
-        except AttributeError:
-            dm = self.__dep_map = {None: []}
-            for name in 'requires.txt', 'depends.txt':
-                for extra,reqs in split_sections(self._get_metadata(name)):
-                    if extra: extra = safe_extra(extra)
-                    dm.setdefault(extra,[]).extend(parse_requirements(reqs))
-            return dm
-    _dep_map = property(_dep_map)
-
-    def requires(self,extras=()):
-        """List of Requirements needed for this distro if `extras` are used"""
-        dm = self._dep_map
-        deps = []
-        deps.extend(dm.get(None,()))
-        for ext in extras:
-            try:
-                deps.extend(dm[safe_extra(ext)])
-            except KeyError:
-                raise UnknownExtra(
-                    "%s has no such extra feature %r" % (self, ext)
-                )
-        return deps
-
-    def _get_metadata(self,name):
-        if self.has_metadata(name):
-            for line in self.get_metadata_lines(name):
-                yield line
-
-    def activate(self,path=None):
-        """Ensure distribution is importable on `path` (default=sys.path)"""
-        if path is None: path = sys.path
-        self.insert_on(path)
-        if path is sys.path:
-            fixup_namespace_packages(self.location)
-            map(declare_namespace, self._get_metadata('namespace_packages.txt'))
-
-
-    def egg_name(self):
-        """Return what this distribution's standard .egg filename should be"""
-        filename = "%s-%s-py%s" % (
-            to_filename(self.project_name), to_filename(self.version),
-            self.py_version or PY_MAJOR
-        )
-
-        if self.platform:
-            filename += '-'+self.platform
-        return filename
-
-    def __repr__(self):
-        if self.location:
-            return "%s (%s)" % (self,self.location)
-        else:
-            return str(self)
-
-    def __str__(self):
-        try: version = getattr(self,'version',None)
-        except ValueError: version = None
-        version = version or "[unknown version]"
-        return "%s %s" % (self.project_name,version)
-
-    def __getattr__(self,attr):
-        """Delegate all unrecognized public attributes to .metadata provider"""
-        if attr.startswith('_'):
-            raise AttributeError,attr
-        return getattr(self._provider, attr)
-
-    #@classmethod
-    def from_filename(cls,filename,metadata=None, **kw):
-        return cls.from_location(
-            _normalize_cached(filename), os.path.basename(filename), metadata,
-            **kw
-        )
-    from_filename = classmethod(from_filename)
-
-    def as_requirement(self):
-        """Return a ``Requirement`` that matches this distribution exactly"""
-        return Requirement.parse('%s==%s' % (self.project_name, self.version))
-
-    def load_entry_point(self, group, name):
-        """Return the `name` entry point of `group` or raise ImportError"""
-        ep = self.get_entry_info(group,name)
-        if ep is None:
-            raise ImportError("Entry point %r not found" % ((group,name),))
-        return ep.load()
-
-    def get_entry_map(self, group=None):
-        """Return the entry point map for `group`, or the full entry map"""
-        try:
-            ep_map = self._ep_map
-        except AttributeError:
-            ep_map = self._ep_map = EntryPoint.parse_map(
-                self._get_metadata('entry_points.txt'), self
-            )
-        if group is not None:
-            return ep_map.get(group,{})
-        return ep_map
-
-    def get_entry_info(self, group, name):
-        """Return the EntryPoint object for `group`+`name`, or ``None``"""
-        return self.get_entry_map(group).get(name)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    def insert_on(self, path, loc = None):
-        """Insert self.location in path before its nearest parent directory"""
-
-        loc = loc or self.location
-
-        if self.project_name == 'setuptools':
-            try:
-                version = self.version
-            except ValueError:
-                version = ''
-            if '0.7' in version:
-                raise ValueError(
-                    "A 0.7-series setuptools cannot be installed "
-                    "with distribute. Found one at %s" % str(self.location))
-
-        if not loc:
-            return
-
-        if path is sys.path:
-            self.check_version_conflict()
-
-        nloc = _normalize_cached(loc)
-        bdir = os.path.dirname(nloc)
-        npath= map(_normalize_cached, path)
-
-        bp = None
-        for p, item in enumerate(npath):
-            if item==nloc:
-                break
-            elif item==bdir and self.precedence==EGG_DIST:
-                # if it's an .egg, give it precedence over its directory
-                path.insert(p, loc)
-                npath.insert(p, nloc)
-                break
-        else:
-            path.append(loc)
-            return
-
-        # p is the spot where we found or inserted loc; now remove duplicates
-        while 1:
-            try:
-                np = npath.index(nloc, p+1)
-            except ValueError:
-                break
-            else:
-                del npath[np], path[np]
-                p = np  # ha!
-
-        return
-
-
-
-    def check_version_conflict(self):
-        if self.key=='distribute':
-            return      # ignore the inevitable setuptools self-conflicts  :(
-
-        nsp = dict.fromkeys(self._get_metadata('namespace_packages.txt'))
-        loc = normalize_path(self.location)
-        for modname in self._get_metadata('top_level.txt'):
-            if (modname not in sys.modules or modname in nsp
-                or modname in _namespace_packages
-            ):
-                continue
-            if modname in ('pkg_resources', 'setuptools', 'site'):
-                continue
-            fn = getattr(sys.modules[modname], '__file__', None)
-            if fn and (normalize_path(fn).startswith(loc) or
-                       fn.startswith(self.location)):
-                continue
-            issue_warning(
-                "Module %s was already imported from %s, but %s is being added"
-                " to sys.path" % (modname, fn, self.location),
-            )
-
-    def has_version(self):
-        try:
-            self.version
-        except ValueError:
-            issue_warning("Unbuilt egg for "+repr(self))
-            return False
-        return True
-
-    def clone(self,**kw):
-        """Copy this distribution, substituting in any changed keyword args"""
-        for attr in (
-            'project_name', 'version', 'py_version', 'platform', 'location',
-            'precedence'
-        ):
-            kw.setdefault(attr, getattr(self,attr,None))
-        kw.setdefault('metadata', self._provider)
-        return self.__class__(**kw)
-
-
-
-
-    #@property
-    def extras(self):
-        return [dep for dep in self._dep_map if dep]
-    extras = property(extras)
-
-
-class DistInfoDistribution(Distribution):
-    """Wrap an actual or potential sys.path entry w/metadata, .dist-info style"""
-    PKG_INFO = 'METADATA'
-    EQEQ = re.compile(r"([\(,])\s*(\d.*?)\s*([,\)])")
-
-    @property
-    def _parsed_pkg_info(self):
-        """Parse and cache metadata"""
-        try:
-            return self._pkg_info
-        except AttributeError:
-            from email.parser import Parser
-            self._pkg_info = Parser().parsestr(self.get_metadata(self.PKG_INFO))
-            return self._pkg_info
-
-    @property
-    def _dep_map(self):
-        try:
-            return self.__dep_map
-        except AttributeError:
-            self.__dep_map = self._compute_dependencies()
-            return self.__dep_map
-
-    def _preparse_requirement(self, requires_dist):
-        """Convert 'Foobar (1); baz' to ('Foobar ==1', 'baz')
-        Split environment marker, add == prefix to version specifiers as
-        necessary, and remove parenthesis.
-        """
-        parts = requires_dist.split(';', 1) + ['']
-        distvers = parts[0].strip()
-        mark = parts[1].strip()
-        distvers = re.sub(self.EQEQ, r"\1==\2\3", distvers)
-        distvers = distvers.replace('(', '').replace(')', '')
-        return (distvers, mark)
-
-    def _compute_dependencies(self):
-        """Recompute this distribution's dependencies."""
-        from _markerlib import compile as compile_marker
-        dm = self.__dep_map = {None: []}
-
-        reqs = []
-        # Including any condition expressions
-        for req in self._parsed_pkg_info.get_all('Requires-Dist') or []:
-            distvers, mark = self._preparse_requirement(req)
-            parsed = parse_requirements(distvers).next()
-            parsed.marker_fn = compile_marker(mark)
-            reqs.append(parsed)
-
-        def reqs_for_extra(extra):
-            for req in reqs:
-                if req.marker_fn(override={'extra':extra}):
-                    yield req
-
-        common = frozenset(reqs_for_extra(None))
-        dm[None].extend(common)
-
-        for extra in self._parsed_pkg_info.get_all('Provides-Extra') or []:
-            extra = safe_extra(extra.strip())
-            dm[extra] = list(frozenset(reqs_for_extra(extra)) - common)
-
-        return dm
-
-
-_distributionImpl = {'.egg': Distribution,
-                     '.egg-info': Distribution,
-                     '.dist-info': DistInfoDistribution }
-
-
-def issue_warning(*args,**kw):
-    level = 1
-    g = globals()
-    try:
-        # find the first stack frame that is *not* code in
-        # the pkg_resources module, to use for the warning
-        while sys._getframe(level).f_globals is g:
-            level += 1
-    except ValueError:
-        pass
-    from warnings import warn
-    warn(stacklevel = level+1, *args, **kw)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def parse_requirements(strs):
-    """Yield ``Requirement`` objects for each specification in `strs`
-
-    `strs` must be an instance of ``basestring``, or a (possibly-nested)
-    iterable thereof.
-    """
-    # create a steppable iterator, so we can handle \-continuations
-    lines = iter(yield_lines(strs))
-
-    def scan_list(ITEM,TERMINATOR,line,p,groups,item_name):
-
-        items = []
-
-        while not TERMINATOR(line,p):
-            if CONTINUE(line,p):
-                try:
-                    line = lines.next(); p = 0
-                except StopIteration:
-                    raise ValueError(
-                        "\\ must not appear on the last nonblank line"
-                    )
-
-            match = ITEM(line,p)
-            if not match:
-                raise ValueError("Expected "+item_name+" in",line,"at",line[p:])
-
-            items.append(match.group(*groups))
-            p = match.end()
-
-            match = COMMA(line,p)
-            if match:
-                p = match.end() # skip the comma
-            elif not TERMINATOR(line,p):
-                raise ValueError(
-                    "Expected ',' or end-of-list in",line,"at",line[p:]
-                )
-
-        match = TERMINATOR(line,p)
-        if match: p = match.end()   # skip the terminator, if any
-        return line, p, items
-
-    for line in lines:
-        match = DISTRO(line)
-        if not match:
-            raise ValueError("Missing distribution spec", line)
-        project_name = match.group(1)
-        p = match.end()
-        extras = []
-
-        match = OBRACKET(line,p)
-        if match:
-            p = match.end()
-            line, p, extras = scan_list(
-                DISTRO, CBRACKET, line, p, (1,), "'extra' name"
-            )
-
-        line, p, specs = scan_list(VERSION,LINE_END,line,p,(1,2),"version spec")
-        specs = [(op,safe_version(val)) for op,val in specs]
-        yield Requirement(project_name, specs, extras)
-
-
-def _sort_dists(dists):
-    tmp = [(dist.hashcmp,dist) for dist in dists]
-    tmp.sort()
-    dists[::-1] = [d for hc,d in tmp]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-class Requirement:
-    def __init__(self, project_name, specs, extras):
-        """DO NOT CALL THIS UNDOCUMENTED METHOD; use Requirement.parse()!"""
-        self.unsafe_name, project_name = project_name, safe_name(project_name)
-        self.project_name, self.key = project_name, project_name.lower()
-        index = [(parse_version(v),state_machine[op],op,v) for op,v in specs]
-        index.sort()
-        self.specs = [(op,ver) for parsed,trans,op,ver in index]
-        self.index, self.extras = index, tuple(map(safe_extra,extras))
-        self.hashCmp = (
-            self.key, tuple([(op,parsed) for parsed,trans,op,ver in index]),
-            frozenset(self.extras)
-        )
-        self.__hash = hash(self.hashCmp)
-
-    def __str__(self):
-        specs = ','.join([''.join(s) for s in self.specs])
-        extras = ','.join(self.extras)
-        if extras: extras = '[%s]' % extras
-        return '%s%s%s' % (self.project_name, extras, specs)
-
-    def __eq__(self,other):
-        return isinstance(other,Requirement) and self.hashCmp==other.hashCmp
-
-    def __contains__(self,item):
-        if isinstance(item,Distribution):
-            if item.key <> self.key: return False
-            if self.index: item = item.parsed_version  # only get if we need it
-        elif isinstance(item,basestring):
-            item = parse_version(item)
-        last = None
-        compare = lambda a, b: (a > b) - (a < b) # -1, 0, 1
-        for parsed,trans,op,ver in self.index:
-            action = trans[compare(item,parsed)] # Indexing: 0, 1, -1
-            if action=='F':     return False
-            elif action=='T':   return True
-            elif action=='+':   last = True
-            elif action=='-' or last is None:   last = False
-        if last is None: last = True    # no rules encountered
-        return last
-
-
-    def __hash__(self):
-        return self.__hash
-
-    def __repr__(self): return "Requirement.parse(%r)" % str(self)
-
-    #@staticmethod
-    def parse(s, replacement=True):
-        reqs = list(parse_requirements(s))
-        if reqs:
-            if len(reqs) == 1:
-                founded_req = reqs[0]
-                # if asked for setuptools distribution
-                # and if distribute is installed, we want to give
-                # distribute instead
-                if _override_setuptools(founded_req) and replacement:
-                    distribute = list(parse_requirements('distribute'))
-                    if len(distribute) == 1:
-                        return distribute[0]
-                    return founded_req
-                else:
-                    return founded_req
-
-            raise ValueError("Expected only one requirement", s)
-        raise ValueError("No requirements found", s)
-
-    parse = staticmethod(parse)
-
-state_machine = {
-    #       =><
-    '<' :  '--T',
-    '<=':  'T-T',
-    '>' :  'F+F',
-    '>=':  'T+F',
-    '==':  'T..',
-    '!=':  'F++',
-}
-
-
-def _override_setuptools(req):
-    """Return True when distribute wants to override a setuptools dependency.
-
-    We want to override when the requirement is setuptools and the version is
-    a variant of 0.6.
-
-    """
-    if req.project_name == 'setuptools':
-        if not len(req.specs):
-            # Just setuptools: ok
-            return True
-        for comparator, version in req.specs:
-            if comparator in ['==', '>=', '>']:
-                if '0.7' in version:
-                    # We want some setuptools not from the 0.6 series.
-                    return False
-        return True
-    return False
-
-
-def _get_mro(cls):
-    """Get an mro for a type or classic class"""
-    if not isinstance(cls,type):
-        class cls(cls,object): pass
-        return cls.__mro__[1:]
-    return cls.__mro__
-
-def _find_adapter(registry, ob):
-    """Return an adapter factory for `ob` from `registry`"""
-    for t in _get_mro(getattr(ob, '__class__', type(ob))):
-        if t in registry:
-            return registry[t]
-
-
-def ensure_directory(path):
-    """Ensure that the parent directory of `path` exists"""
-    dirname = os.path.dirname(path)
-    if not os.path.isdir(dirname):
-        os.makedirs(dirname)
-
-def split_sections(s):
-    """Split a string or iterable thereof into (section,content) pairs
-
-    Each ``section`` is a stripped version of the section header ("[section]")
-    and each ``content`` is a list of stripped lines excluding blank lines and
-    comment-only lines.  If there are any such lines before the first section
-    header, they're returned in a first ``section`` of ``None``.
-    """
-    section = None
-    content = []
-    for line in yield_lines(s):
-        if line.startswith("["):
-            if line.endswith("]"):
-                if section or content:
-                    yield section, content
-                section = line[1:-1].strip()
-                content = []
-            else:
-                raise ValueError("Invalid section heading", line)
-        else:
-            content.append(line)
-
-    # wrap up last segment
-    yield section, content
-
-def _mkstemp(*args,**kw):
-    from tempfile import mkstemp
-    old_open = os.open
-    try:
-        os.open = os_open   # temporarily bypass sandboxing
-        return mkstemp(*args,**kw)
-    finally:
-        os.open = old_open  # and then put it back
-
-
-# Set up global resource manager (deliberately not state-saved)
-_manager = ResourceManager()
-def _initialize(g):
-    for name in dir(_manager):
-        if not name.startswith('_'):
-            g[name] = getattr(_manager, name)
-_initialize(globals())
-
-# Prepare the master working set and make the ``require()`` API available
-_declare_state('object', working_set = WorkingSet())
-
-try:
-    # Does the main program list any requirements?
-    from __main__ import __requires__
-except ImportError:
-    pass # No: just use the default working set based on sys.path
-else:
-    # Yes: ensure the requirements are met, by prefixing sys.path if necessary
-    try:
-        working_set.require(__requires__)
-    except VersionConflict:     # try it without defaults already on sys.path
-        working_set = WorkingSet([])    # by starting with an empty path
-        for dist in working_set.resolve(
-            parse_requirements(__requires__), Environment()
-        ):
-            working_set.add(dist)
-        for entry in sys.path:  # add any missing entries from sys.path
-            if entry not in working_set.entries:
-                working_set.add_entry(entry)
-        sys.path[:] = working_set.entries   # then copy back to sys.path
-
-require = working_set.require
-iter_entry_points = working_set.iter_entry_points
-add_activation_listener = working_set.subscribe
-run_script = working_set.run_script
-run_main = run_script   # backward compatibility
-# Activate all distributions already on sys.path, and ensure that
-# all distributions added to the working set in the future (e.g. by
-# calling ``require()``) will get activated as well.
-add_activation_listener(lambda dist: dist.activate())
-working_set.entries=[]; map(working_set.add_entry,sys.path) # match order
-
diff --git a/vendor/distribute-0.6.34/release.py b/vendor/distribute-0.6.34/release.py
deleted file mode 100644
index d3746054..00000000
--- a/vendor/distribute-0.6.34/release.py
+++ /dev/null
@@ -1,170 +0,0 @@
-#!/usr/bin/env python
-
-"""
-Script to fully automate the release process. Requires Python 2.6+
-with sphinx installed and the 'hg' command on the path.
-"""
-
-from __future__ import print_function
-
-import subprocess
-import shutil
-import os
-import sys
-import urllib2
-import getpass
-import collections
-
-try:
-	import keyring
-except Exception:
-	pass
-
-VERSION = '0.6.34'
-
-def get_next_version():
-	digits = map(int, VERSION.split('.'))
-	digits[-1] += 1
-	return '.'.join(map(str, digits))
-
-NEXT_VERSION = get_next_version()
-
-files_with_versions = ('docs/conf.py', 'setup.py', 'release.py',
-	'README.txt', 'distribute_setup.py')
-
-def get_repo_name():
-	"""
-	Get the repo name from the hgrc default path.
-	"""
-	default = subprocess.check_output('hg paths default').strip()
-	parts = default.split('/')
-	if parts[-1] == '':
-		parts.pop()
-	return '/'.join(parts[-2:])
-
-def get_mercurial_creds(system='https://bitbucket.org', username=None):
-	"""
-	Return named tuple of username,password in much the same way that
-	Mercurial would (from the keyring).
-	"""
-	# todo: consider getting this from .hgrc
-	username = username or getpass.getuser()
-	keyring_username = '@@'.join((username, system))
-	system = '@'.join((keyring_username, 'Mercurial'))
-	password = (
-		keyring.get_password(system, keyring_username)
-		if 'keyring' in globals()
-		else None
-	)
-	if not password:
-		password = getpass.getpass()
-	Credential = collections.namedtuple('Credential', 'username password')
-	return Credential(username, password)
-
-def add_milestone_and_version(version=NEXT_VERSION):
-	auth = 'Basic ' + ':'.join(get_mercurial_creds()).encode('base64').strip()
-	headers = {
-		'Authorization': auth,
-		}
-	base = 'https://api.bitbucket.org'
-	for type in 'milestones', 'versions':
-		url = (base + '/1.0/repositories/{repo}/issues/{type}'
-			.format(repo = get_repo_name(), type=type))
-		req = urllib2.Request(url = url, headers = headers,
-			data='name='+version)
-		try:
-			urllib2.urlopen(req)
-		except urllib2.HTTPError as e:
-			print(e.fp.read())
-
-def bump_versions():
-	list(map(bump_version, files_with_versions))
-
-def bump_version(filename):
-	with open(filename, 'rb') as f:
-		lines = [line.replace(VERSION, NEXT_VERSION) for line in f]
-	with open(filename, 'wb') as f:
-		f.writelines(lines)
-
-def do_release():
-	assert all(map(os.path.exists, files_with_versions)), (
-		"Expected file(s) missing")
-
-	assert has_sphinx(), "You must have Sphinx installed to release"
-
-	res = raw_input('Have you read through the SCM changelog and '
-		'confirmed the changelog is current for releasing {VERSION}? '
-		.format(**globals()))
-	if not res.lower().startswith('y'):
-		print("Please do that")
-		raise SystemExit(1)
-
-	print("Travis-CI tests: http://travis-ci.org/#!/jaraco/distribute")
-	res = raw_input('Have you or has someone verified that the tests '
-		'pass on this revision? ')
-	if not res.lower().startswith('y'):
-		print("Please do that")
-		raise SystemExit(2)
-
-	subprocess.check_call(['hg', 'tag', VERSION])
-
-	subprocess.check_call(['hg', 'update', VERSION])
-
-	has_docs = build_docs()
-	if os.path.isdir('./dist'):
-		shutil.rmtree('./dist')
-	cmd = [sys.executable, 'setup.py', '-q', 'egg_info', '-RD', '-b', '',
-		'sdist', 'register', 'upload']
-	if has_docs:
-		cmd.append('upload_docs')
-	subprocess.check_call(cmd)
-	upload_bootstrap_script()
-
-	# update to the tip for the next operation
-	subprocess.check_call(['hg', 'update'])
-
-	# we just tagged the current version, bump for the next release.
-	bump_versions()
-	subprocess.check_call(['hg', 'ci', '-m',
-		'Bumped to {NEXT_VERSION} in preparation for next '
-		'release.'.format(**globals())])
-
-	# push the changes
-	subprocess.check_call(['hg', 'push'])
-
-	add_milestone_and_version()
-
-def has_sphinx():
-	try:
-		devnull = open(os.path.devnull, 'wb')
-		subprocess.Popen(['sphinx-build', '--version'], stdout=devnull,
-			stderr=subprocess.STDOUT).wait()
-	except Exception:
-		return False
-	return True
-
-def build_docs():
-	if not os.path.isdir('docs'):
-		return
-	if os.path.isdir('docs/build'):
-		shutil.rmtree('docs/build')
-	subprocess.check_call([
-		'sphinx-build',
-		'-b', 'html',
-		'-d', 'build/doctrees',
-		'.',
-		'build/html',
-		],
-		cwd='docs')
-	return True
-
-def upload_bootstrap_script():
-	scp_command = 'pscp' if sys.platform.startswith('win') else 'scp'
-	try:
-		subprocess.check_call([scp_command, 'distribute_setup.py',
-			'pypi@ziade.org:python-distribute.org/'])
-	except:
-		print("Unable to upload bootstrap script. Ask Tarek to do it.")
-
-if __name__ == '__main__':
-	do_release()
diff --git a/vendor/distribute-0.6.34/setup.cfg b/vendor/distribute-0.6.34/setup.cfg
deleted file mode 100644
index 319f9412..00000000
--- a/vendor/distribute-0.6.34/setup.cfg
+++ /dev/null
@@ -1,21 +0,0 @@
-[egg_info]
-tag_build = 
-tag_svn_revision = 0
-tag_date = 0
-
-[aliases]
-release = egg_info -RDb ''
-source = register sdist binary
-binary = bdist_egg upload --show-response
-
-[build_sphinx]
-source-dir = docs/
-build-dir = docs/build
-all_files = 1
-
-[upload_docs]
-upload-dir = docs/build/html
-
-[sdist]
-formats = gztar
-
diff --git a/vendor/distribute-0.6.34/setup.py b/vendor/distribute-0.6.34/setup.py
deleted file mode 100644
index a1e9ca91..00000000
--- a/vendor/distribute-0.6.34/setup.py
+++ /dev/null
@@ -1,253 +0,0 @@
-#!/usr/bin/env python
-"""Distutils setup file, used to install or test 'setuptools'"""
-import sys
-import os
-import textwrap
-import re
-
-# Allow to run setup.py from another directory.
-os.chdir(os.path.dirname(os.path.abspath(__file__)))
-
-src_root = None
-if sys.version_info >= (3,):
-    tmp_src = os.path.join("build", "src")
-    from distutils.filelist import FileList
-    from distutils import dir_util, file_util, util, log
-    log.set_verbosity(1)
-    fl = FileList()
-    manifest_file = open("MANIFEST.in")
-    for line in manifest_file:
-        fl.process_template_line(line)
-    manifest_file.close()
-    dir_util.create_tree(tmp_src, fl.files)
-    outfiles_2to3 = []
-    dist_script = os.path.join("build", "src", "distribute_setup.py")
-    for f in fl.files:
-        outf, copied = file_util.copy_file(f, os.path.join(tmp_src, f), update=1)
-        if copied and outf.endswith(".py") and outf != dist_script:
-            outfiles_2to3.append(outf)
-        if copied and outf.endswith('api_tests.txt'):
-            # XXX support this in distutils as well
-            from lib2to3.main import main
-            main('lib2to3.fixes', ['-wd', os.path.join(tmp_src, 'tests', 'api_tests.txt')])
-
-    util.run_2to3(outfiles_2to3)
-
-    # arrange setup to use the copy
-    sys.path.insert(0, os.path.abspath(tmp_src))
-    src_root = tmp_src
-
-from distutils.util import convert_path
-
-d = {}
-init_path = convert_path('setuptools/command/__init__.py')
-init_file = open(init_path)
-exec(init_file.read(), d)
-init_file.close()
-
-SETUP_COMMANDS = d['__all__']
-VERSION = "0.6.34"
-
-from setuptools import setup, find_packages
-from setuptools.command.build_py import build_py as _build_py
-from setuptools.command.test import test as _test
-
-scripts = []
-
-console_scripts = ["easy_install = setuptools.command.easy_install:main"]
-if os.environ.get("DISTRIBUTE_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT") is None:
-    console_scripts.append("easy_install-%s = setuptools.command.easy_install:main" % sys.version[:3])
-
-# specific command that is used to generate windows .exe files
-class build_py(_build_py):
-    def build_package_data(self):
-        """Copy data files into build directory"""
-        lastdir = None
-        for package, src_dir, build_dir, filenames in self.data_files:
-            for filename in filenames:
-                target = os.path.join(build_dir, filename)
-                self.mkpath(os.path.dirname(target))
-                srcfile = os.path.join(src_dir, filename)
-                outf, copied = self.copy_file(srcfile, target)
-                srcfile = os.path.abspath(srcfile)
-
-                # avoid a bootstrapping issue with easy_install -U (when the
-                # previous version doesn't have convert_2to3_doctests)
-                if not hasattr(self.distribution, 'convert_2to3_doctests'):
-                    continue
-
-                if copied and srcfile in self.distribution.convert_2to3_doctests:
-                    self.__doctests_2to3.append(outf)
-
-class test(_test):
-    """Specific test class to avoid rewriting the entry_points.txt"""
-    def run(self):
-        entry_points = os.path.join('distribute.egg-info', 'entry_points.txt')
-
-        if not os.path.exists(entry_points):
-            _test.run(self)
-            return # even though _test.run will raise SystemExit
-
-        f = open(entry_points)
-
-        # running the test
-        try:
-            ep_content = f.read()
-        finally:
-            f.close()
-
-        try:
-            _test.run(self)
-        finally:
-            # restoring the file
-            f = open(entry_points, 'w')
-            try:
-                f.write(ep_content)
-            finally:
-                f.close()
-
-
-# if we are installing Distribute using "python setup.py install"
-# we need to get setuptools out of the way
-def _easy_install_marker():
-    return (len(sys.argv) == 5 and sys.argv[2] == 'bdist_egg' and
-            sys.argv[3] == '--dist-dir' and 'egg-dist-tmp-' in sys.argv[-1])
-
-def _buildout_marker():
-    command = os.environ.get('_')
-    if command:
-        return 'buildout' in os.path.basename(command)
-
-def _being_installed():
-    if os.environ.get('DONT_PATCH_SETUPTOOLS') is not None:
-        return False
-    if _buildout_marker():
-        # Installed by buildout, don't mess with a global setuptools.
-        return False
-    # easy_install marker
-    if "--help" in sys.argv[1:] or "-h" in sys.argv[1:]: # Don't bother doing anything if they're just asking for help
-        return False
-    return  'install' in sys.argv[1:] or _easy_install_marker()
-
-if _being_installed():
-    from distribute_setup import _before_install
-    _before_install()
-
-# return contents of reStructureText file with linked issue references
-def _linkified(rst_path):
-    bitroot = 'http://bitbucket.org/tarek/distribute'
-    revision = re.compile(r'\b(issue\s*#?\d+)\b', re.M | re.I)
-
-    rst_file = open(rst_path)
-    rst_content = rst_file.read()
-    rst_file.close()
-
-    anchors = revision.findall(rst_content) # ['Issue #43', ...]
-    anchors = sorted(set(anchors))
-    rst_content = revision.sub(r'`\1`_', rst_content)
-    rst_content += "\n"
-    for x in anchors:
-        issue = re.findall(r'\d+', x)[0]
-        rst_content += '.. _`%s`: %s/issue/%s\n' % (x, bitroot, issue)
-    rst_content += "\n"
-    return rst_content
-
-readme_file = open('README.txt')
-long_description = readme_file.read() + _linkified('CHANGES.txt')
-readme_file.close()
-
-dist = setup(
-    name="distribute",
-    version=VERSION,
-    description="Easily download, build, install, upgrade, and uninstall "
-                "Python packages",
-    author="The fellowship of the packaging",
-    author_email="distutils-sig@python.org",
-    license="PSF or ZPL",
-    long_description = long_description,
-    keywords = "CPAN PyPI distutils eggs package management",
-    url = "http://packages.python.org/distribute",
-    test_suite = 'setuptools.tests',
-    src_root = src_root,
-    packages = find_packages(),
-    package_data = {'setuptools':['*.exe']},
-
-    py_modules = ['pkg_resources', 'easy_install', 'site'],
-
-    zip_safe = (sys.version>="2.5"),   # <2.5 needs unzipped for -m to work
-
-    cmdclass = {'test': test},
-    entry_points = {
-
-        "distutils.commands" : [
-            "%(cmd)s = setuptools.command.%(cmd)s:%(cmd)s" % locals()
-            for cmd in SETUP_COMMANDS
-        ],
-
-        "distutils.setup_keywords": [
-            "eager_resources        = setuptools.dist:assert_string_list",
-            "namespace_packages     = setuptools.dist:check_nsp",
-            "extras_require         = setuptools.dist:check_extras",
-            "install_requires       = setuptools.dist:check_requirements",
-            "tests_require          = setuptools.dist:check_requirements",
-            "entry_points           = setuptools.dist:check_entry_points",
-            "test_suite             = setuptools.dist:check_test_suite",
-            "zip_safe               = setuptools.dist:assert_bool",
-            "package_data           = setuptools.dist:check_package_data",
-            "exclude_package_data   = setuptools.dist:check_package_data",
-            "include_package_data   = setuptools.dist:assert_bool",
-            "packages               = setuptools.dist:check_packages",
-            "dependency_links       = setuptools.dist:assert_string_list",
-            "test_loader            = setuptools.dist:check_importable",
-            "use_2to3               = setuptools.dist:assert_bool",
-            "convert_2to3_doctests  = setuptools.dist:assert_string_list",
-            "use_2to3_fixers        = setuptools.dist:assert_string_list",
-            "use_2to3_exclude_fixers = setuptools.dist:assert_string_list",
-        ],
-
-        "egg_info.writers": [
-            "PKG-INFO = setuptools.command.egg_info:write_pkg_info",
-            "requires.txt = setuptools.command.egg_info:write_requirements",
-            "entry_points.txt = setuptools.command.egg_info:write_entries",
-            "eager_resources.txt = setuptools.command.egg_info:overwrite_arg",
-            "namespace_packages.txt = setuptools.command.egg_info:overwrite_arg",
-            "top_level.txt = setuptools.command.egg_info:write_toplevel_names",
-            "depends.txt = setuptools.command.egg_info:warn_depends_obsolete",
-            "dependency_links.txt = setuptools.command.egg_info:overwrite_arg",
-        ],
-
-        "console_scripts": console_scripts,
-
-        "setuptools.file_finders":
-            ["svn_cvs = setuptools.command.sdist:_default_revctrl"],
-
-        "setuptools.installation":
-            ['eggsecutable = setuptools.command.easy_install:bootstrap'],
-        },
-
-
-    classifiers = textwrap.dedent("""
-        Development Status :: 5 - Production/Stable
-        Intended Audience :: Developers
-        License :: OSI Approved :: Python Software Foundation License
-        License :: OSI Approved :: Zope Public License
-        Operating System :: OS Independent
-        Programming Language :: Python :: 2.4
-        Programming Language :: Python :: 2.5
-        Programming Language :: Python :: 2.6
-        Programming Language :: Python :: 2.7
-        Programming Language :: Python :: 3
-        Programming Language :: Python :: 3.1
-        Programming Language :: Python :: 3.2
-        Programming Language :: Python :: 3.3
-        Topic :: Software Development :: Libraries :: Python Modules
-        Topic :: System :: Archiving :: Packaging
-        Topic :: System :: Systems Administration
-        Topic :: Utilities
-        """).strip().splitlines(),
-    scripts = scripts,
-)
-
-if _being_installed():
-    from distribute_setup import _after_install
-    _after_install(dist)
diff --git a/vendor/distribute-0.6.34/setuptools/__init__.py b/vendor/distribute-0.6.34/setuptools/__init__.py
deleted file mode 100644
index 9de373f9..00000000
--- a/vendor/distribute-0.6.34/setuptools/__init__.py
+++ /dev/null
@@ -1,104 +0,0 @@
-"""Extensions to the 'distutils' for large or complex distributions"""
-from setuptools.extension import Extension, Library
-from setuptools.dist import Distribution, Feature, _get_unpatched
-import distutils.core, setuptools.command
-from setuptools.depends import Require
-from distutils.core import Command as _Command
-from distutils.util import convert_path
-import os
-import sys
-
-__version__ = '0.6'
-__all__ = [
-    'setup', 'Distribution', 'Feature', 'Command', 'Extension', 'Require',
-    'find_packages'
-]
-
-# This marker is used to simplify the process that checks is the
-# setuptools package was installed by the Setuptools project
-# or by the Distribute project, in case Setuptools creates
-# a distribution with the same version.
-#
-# The distribute_setup script for instance, will check if this
-# attribute is present to decide whether to reinstall the package
-# or not.
-_distribute = True
-
-bootstrap_install_from = None
-
-# If we run 2to3 on .py files, should we also convert docstrings?
-# Default: yes; assume that we can detect doctests reliably
-run_2to3_on_doctests = True
-# Standard package names for fixer packages
-lib2to3_fixer_packages = ['lib2to3.fixes']
-
-def find_packages(where='.', exclude=()):
-    """Return a list all Python packages found within directory 'where'
-
-    'where' should be supplied as a "cross-platform" (i.e. URL-style) path; it
-    will be converted to the appropriate local path syntax.  'exclude' is a
-    sequence of package names to exclude; '*' can be used as a wildcard in the
-    names, such that 'foo.*' will exclude all subpackages of 'foo' (but not
-    'foo' itself).
-    """
-    out = []
-    stack=[(convert_path(where), '')]
-    while stack:
-        where,prefix = stack.pop(0)
-        for name in os.listdir(where):
-            fn = os.path.join(where,name)
-            if ('.' not in name and os.path.isdir(fn) and
-                os.path.isfile(os.path.join(fn,'__init__.py'))
-            ):
-                out.append(prefix+name); stack.append((fn,prefix+name+'.'))
-    for pat in list(exclude)+['ez_setup', 'distribute_setup']:
-        from fnmatch import fnmatchcase
-        out = [item for item in out if not fnmatchcase(item,pat)]
-    return out
-
-setup = distutils.core.setup
-
-_Command = _get_unpatched(_Command)
-
-class Command(_Command):
-    __doc__ = _Command.__doc__
-
-    command_consumes_arguments = False
-
-    def __init__(self, dist, **kw):
-        # Add support for keyword arguments
-        _Command.__init__(self,dist)
-        for k,v in kw.items():
-            setattr(self,k,v)
-
-    def reinitialize_command(self, command, reinit_subcommands=0, **kw):
-        cmd = _Command.reinitialize_command(self, command, reinit_subcommands)
-        for k,v in kw.items():
-            setattr(cmd,k,v)    # update command with keywords
-        return cmd
-
-import distutils.core
-distutils.core.Command = Command    # we can't patch distutils.cmd, alas
-
-def findall(dir = os.curdir):
-    """Find all files under 'dir' and return the list of full filenames
-    (relative to 'dir').
-    """
-    all_files = []
-    for base, dirs, files in os.walk(dir):
-        if base==os.curdir or base.startswith(os.curdir+os.sep):
-            base = base[2:]
-        if base:
-            files = [os.path.join(base, f) for f in files]
-        all_files.extend(filter(os.path.isfile, files))
-    return all_files
-
-import distutils.filelist
-distutils.filelist.findall = findall    # fix findall bug in distutils.
-
-# sys.dont_write_bytecode was introduced in Python 2.6.
-if ((hasattr(sys, "dont_write_bytecode") and sys.dont_write_bytecode) or
-    (not hasattr(sys, "dont_write_bytecode") and os.environ.get("PYTHONDONTWRITEBYTECODE"))):
-    _dont_write_bytecode = True
-else:
-    _dont_write_bytecode = False
diff --git a/vendor/distribute-0.6.34/setuptools/archive_util.py b/vendor/distribute-0.6.34/setuptools/archive_util.py
deleted file mode 100644
index e22b25c0..00000000
--- a/vendor/distribute-0.6.34/setuptools/archive_util.py
+++ /dev/null
@@ -1,214 +0,0 @@
-"""Utilities for extracting common archive formats"""
-
-
-__all__ = [
-    "unpack_archive", "unpack_zipfile", "unpack_tarfile", "default_filter",
-    "UnrecognizedFormat", "extraction_drivers", "unpack_directory",
-]
-
-import zipfile, tarfile, os, shutil
-from pkg_resources import ensure_directory
-from distutils.errors import DistutilsError
-
-class UnrecognizedFormat(DistutilsError):
-    """Couldn't recognize the archive type"""
-
-def default_filter(src,dst):
-    """The default progress/filter callback; returns True for all files"""   
-    return dst
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def unpack_archive(filename, extract_dir, progress_filter=default_filter,
-    drivers=None
-):
-    """Unpack `filename` to `extract_dir`, or raise ``UnrecognizedFormat``
-
-    `progress_filter` is a function taking two arguments: a source path
-    internal to the archive ('/'-separated), and a filesystem path where it
-    will be extracted.  The callback must return the desired extract path
-    (which may be the same as the one passed in), or else ``None`` to skip
-    that file or directory.  The callback can thus be used to report on the
-    progress of the extraction, as well as to filter the items extracted or
-    alter their extraction paths.
-
-    `drivers`, if supplied, must be a non-empty sequence of functions with the
-    same signature as this function (minus the `drivers` argument), that raise
-    ``UnrecognizedFormat`` if they do not support extracting the designated
-    archive type.  The `drivers` are tried in sequence until one is found that
-    does not raise an error, or until all are exhausted (in which case
-    ``UnrecognizedFormat`` is raised).  If you do not supply a sequence of
-    drivers, the module's ``extraction_drivers`` constant will be used, which
-    means that ``unpack_zipfile`` and ``unpack_tarfile`` will be tried, in that
-    order.
-    """
-    for driver in drivers or extraction_drivers:
-        try:
-            driver(filename, extract_dir, progress_filter)
-        except UnrecognizedFormat:
-            continue
-        else:
-            return
-    else:
-        raise UnrecognizedFormat(
-            "Not a recognized archive type: %s" % filename
-        )
-
-
-
-
-
-
-
-def unpack_directory(filename, extract_dir, progress_filter=default_filter):
-    """"Unpack" a directory, using the same interface as for archives
-
-    Raises ``UnrecognizedFormat`` if `filename` is not a directory
-    """
-    if not os.path.isdir(filename):
-        raise UnrecognizedFormat("%s is not a directory" % (filename,))
-
-    paths = {filename:('',extract_dir)}
-    for base, dirs, files in os.walk(filename):
-        src,dst = paths[base]
-        for d in dirs:
-            paths[os.path.join(base,d)] = src+d+'/', os.path.join(dst,d)
-        for f in files:
-            name = src+f
-            target = os.path.join(dst,f)
-            target = progress_filter(src+f, target)
-            if not target:
-                continue    # skip non-files
-            ensure_directory(target)
-            f = os.path.join(base,f)
-            shutil.copyfile(f, target)
-            shutil.copystat(f, target)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def unpack_zipfile(filename, extract_dir, progress_filter=default_filter):
-    """Unpack zip `filename` to `extract_dir`
-
-    Raises ``UnrecognizedFormat`` if `filename` is not a zipfile (as determined
-    by ``zipfile.is_zipfile()``).  See ``unpack_archive()`` for an explanation
-    of the `progress_filter` argument.
-    """
-
-    if not zipfile.is_zipfile(filename):
-        raise UnrecognizedFormat("%s is not a zip file" % (filename,))
-
-    z = zipfile.ZipFile(filename)
-    try:
-        for info in z.infolist():
-            name = info.filename
-
-            # don't extract absolute paths or ones with .. in them
-            if name.startswith('/') or '..' in name:
-                continue
-
-            target = os.path.join(extract_dir, *name.split('/'))
-            target = progress_filter(name, target)
-            if not target:
-                continue
-            if name.endswith('/'):
-                # directory
-                ensure_directory(target)
-            else:
-                # file
-                ensure_directory(target)
-                data = z.read(info.filename)
-                f = open(target,'wb')
-                try:
-                    f.write(data)
-                finally:
-                    f.close()
-                    del data
-            unix_attributes = info.external_attr >> 16
-            if unix_attributes:
-                os.chmod(target, unix_attributes)
-    finally:
-        z.close()
-
-
-def unpack_tarfile(filename, extract_dir, progress_filter=default_filter):
-    """Unpack tar/tar.gz/tar.bz2 `filename` to `extract_dir`
-
-    Raises ``UnrecognizedFormat`` if `filename` is not a tarfile (as determined
-    by ``tarfile.open()``).  See ``unpack_archive()`` for an explanation
-    of the `progress_filter` argument.
-    """
-
-    try:
-        tarobj = tarfile.open(filename)
-    except tarfile.TarError:
-        raise UnrecognizedFormat(
-            "%s is not a compressed or uncompressed tar file" % (filename,)
-        )
-
-    try:
-        tarobj.chown = lambda *args: None   # don't do any chowning!
-        for member in tarobj:
-            name = member.name
-            # don't extract absolute paths or ones with .. in them
-            if not name.startswith('/') and '..' not in name:
-                prelim_dst = os.path.join(extract_dir, *name.split('/'))
-                final_dst = progress_filter(name, prelim_dst)
-                # If progress_filter returns None, then we do not extract
-                # this file
-                # TODO: Do we really need to limit to just these file types?
-                # tarobj.extract() will handle all files on all platforms,
-                # turning file types that aren't allowed on that platform into
-                # regular files.
-                if final_dst and (member.isfile() or member.isdir() or
-                        member.islnk() or member.issym()):
-                    tarobj.extract(member, extract_dir)
-                    if final_dst != prelim_dst:
-                        shutil.move(prelim_dst, final_dst)
-        return True
-    finally:
-        tarobj.close()
-
-
-
-
-extraction_drivers = unpack_directory, unpack_zipfile, unpack_tarfile
-
-
-
-
-
diff --git a/vendor/distribute-0.6.34/setuptools/cli-32.exe b/vendor/distribute-0.6.34/setuptools/cli-32.exe
deleted file mode 100755
index 9b7717b78bbf71f105ccde26746a0f6e3a4d12db..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 69632
zcmeFae|%KM)jxhWyGb@=lU*Qz009<=iUtu~qKQjzA=wa=z{bdiRT8iQu3Ks`+za?f
zAn|5tZZ5adR$Kd2S}FKE__Td$Kb0T0f?0wI;4gkuM4>h+)rm_rlr&i&=6>I2?&b&D
zKHum2*XN%vymIf%+%q$0&YW{*=FFMdvir9QW<d}v_|tVk*pD~;^YG{Y{AkDL^of5+
z7hX<zYtnwxg108!7kp%`b4|^6AFg@uJI;q5eDu-piq3DXbk<0ZIv;t|S-hyi`JL~s
zSUEi{ZCFmc=+6$!+qLuDjXnK;6Mpns&wnERU%P(O^F984wdZ$uH;lcv=Xnk{wI{~Y
z|EuQ|fA8=4CEoWw@=%b<_&UZuuOKWiS%i}#&Xx6lYZnqssiqV`IEIvJBejhXa^SC>
z;vOTMAP9*R#lQZy;4>M-LYi6d)N??}N16G1;6;hTw9A4pm52Vt!($SBK;{4KUt`zT
z`lKCkpz^Q&O&3>g5b?3>2p)tNwUs(~$UmnbET3Mp;z9921Q6kEpN#k0_#5)igQ}(*
zV8Y>Cd~l#*DzkG45P}{-Xr5lPa`kr~5`^dNln{p#@E-EdBM5VcMF0Qb|3wPuVvd#m
z*q&rTkefX|wk-*P!?sYul9t8l1=VYnFW9tFQ<KBfa8kNl;m?g!s%Ny~apsW8$7X_c
zT_@cisIfqxHF>hO-lQz<RTjrKJ*<|+kk=e(vMS!Ly30$YMBUpPy}9o4Wa+ws#l4%x
z>QZlLsh_z~f?4X7SN003w+j`!PPQg3Es2^@P?OM@RHA!h1y!+)zoksW<C&6>382W=
znlxE$Th>})5~?3K+TyPanGRaOZGQIeRy@(NEHzfi{2V?5kku`VwO{9my}Dk1!3KHQ
zQ8!|a;CfvNH$n^g)jdz+)s$4J9(Wc3_3dctoLRR>mex7?(k4?wvvg4lH==kSUg$J>
zK}YyBZ=KK2Zm<zj8FjUFf<0W1&vggr>r!#Uzsyw0{+=obMk&au`Akh#Ps35^a_%9m
zA@O_2U6;R9Ow%+f$Q`LkX%&Q0BuRe@3H~9KYu*MQdj^f<f$lzCmk(z}ll?4;U_jNV
zam!q9RkL?cUH$7@5j{%1i>|HktCCf1tsLy)+(^jcWA}p})GC|nD7sHcRc6=^Ci&Dp
zrL0#ei?Q$WrrM&ZC6vsTBN_;UI!#F>jo#FTW^tAMV6%^v8tGz^TpJU_d+Tab<81IA
zf|I4JZf~zivb&lKys=hqs$hS*S@FhB)b`4?y@Hs@`?`{i1tMmo9kvmVAfq5Y+vH7c
zOr96rb`9V~Fzz5An5i{cn5Ua5hnlL)Y81yuO$NR%feIYoy4mQedAhCxdKod$4#7D`
z2seu<A;G6-3hf@DMc$ZW5hQC!V1EH%z}4(AD7VC4>1x($FZ}9PzX}!qYMHCMQuFTi
z`xL2{JscMyQ*iP~kD%1<)-xR_O7mU-tL*mq{r-^2@7E=(U(dAR!?J1+Z%lCaM;?LQ
z45s9AXhkOlP~FiMAQ#eg>B3GzPS3RRqI!Ku(K9WGAaioC4w<77)!WNE7NR%Up%uVX
zpO+gcsC8(i32M)#Y}IR1EiVzfWqBIT61$bSC5N`aWZHPXvYb_8v;%hPncxwWTEYH%
z7<d7S0314?2zYU7=O!1*(r511EUw^T0Q*=y2S)k((Pcy7=ebe8m}J`c*0O4~<$)?L
zi9s-E{e`TAA(Hqs1WXO@!V`!q-o`)D@KK?KpC*Y5fdCmq03OxW3<yjs1co4@DRueN
z#dH!BO``;NWc}Z?0~A8qqNaJKd647S!Koj6gcn{|^@33lx_cLU?Dwd+GZ2vbbSW!d
zUoZ=B?DQ4%e4yiQj)?bZ2>Xq{g1XQ)CO*yFO(b?t%ZDAM9(UVXN0YVTs5q?d@-Q*6
z?sA$G4JDvn00c8ol8^nxP+j0L+d&IbwA!a%c;SUzns*y`<HtU>3aUw+p?DkO2>97O
zS4o^5igznII@KR+2bnt_A*QX`riPyfPUaTHTjwFE-DRep+p5Nx2PiAa;8yg4`;4~U
zqIkDa$2X{D+w_@@%t_yq<W`IB-BwVwEwJ%?yh4_QFRrsnQV~8DY^U-Ao5rf%Mt$b9
z?DNa<Tt#l<%f?UT>jnA1Za@iQRwe3YU+v^L1m6Un>^WqJj?kq#{^?s^>AH^{Koij*
zRimC>R_%K00d@z3y#DoP5kK03E*5ia^v6B`Jn(M`*@B&2DDCGHG2C=3(s@_2T4i;A
zXn&^J-6}cRok(vJMga%Nmfz0~P2j3nKB9NLg+yo=$;M&DKPgq#3ib<X6eP8~$mWsO
zSFjt$BQD2uahx3M6Gy4XBUcjDBl1TRBOfK1ZO=S^(;Ok1_{y^wD!S+7Y?f{$&@lv>
zp&p4`PL$gxM%t6i7R><M&jCF-bz(Mq9+(WpY-${{vh#X@bY7ZL!R|=|*Tpoi!v~FE
zt6;xN7X-z7zM_)7g)j2q>^5&NghXdx97y4L_92RBfq1e7)QXn<f@6-*vZL8ONAQO-
zNRuS*7a&j3BzJ3Vvf8?nz7TKx&<XIs&R26u!$}iD7Qd25-`L~Vd`Jw9T~giRI{6Bf
z8%^9n@QN)#jyUB*mio&yUT*w6)K?7%2OuidLy=gbY6(-@)hqI66C<A`sg`6Sk=5NQ
zT2NPlax1dWt-rhm88*JX%+*}o!v13lMz_KlP-%jg$i6!XOp`}-vD1W3i>hOMqOpm$
z&)r!wxxQ~X>RvxqeLI&EJ>n>5pJLixztASsAxm_a-0Flz&4PNUt}+TBtrg3t9VItA
zeC!nfLtE8jSR#0Ucx`gC6N;X)4Cdf1$7nmTkXM*hzucy8*7e*78p;d$F;GW#BX9PQ
zyk%DTat2DR9U0Ff6Os@A3-EFp(EOU0RJn~h^d3U66AT~jma+=Gz2Zo=JX@ggXc((R
zK*i{bvAX(b%bWfG)cbO5>Vh0g_@wxVtGTH-#|rH>s{RV;%$jt$uo1li`gW|mPC!>(
zmakZ9ZtZzr{>Uuaa!)iS%WWpP!z6WsjoUF<qn87(WAex5NJoO0bm><pc$fkAIl-ZV
zWi5DG;wYeQTV?pDz2S!fgs(z<UlnsQdRonhsT*?~QYwnEhr@_QZ)k$LG4<Ce=3<&~
zivcP9Rec|D(u49RW^v>o7$EMDqbBKZsL=61^|F?pHY!*g)nACc;aS9uROxf05YhOE
zY~2r38~7@t<u(i2DgNRQdSBlrHOYKj?$lj})KO4zFA648y?CzSq&TgiTb$5y2#hF*
zHhM#q9#%$2v+6&lr7=S32q76Ei|ZsW)zwVp+FZ>FXi0TQ-Dre8yq@%P9Ba<X7*cd8
zLzf)rYZ}e1%!w|+G%e0|<>eKwvl#EHFx$0?wQ8Bo{f3lWQ00&wizebFh6<`OC?QK)
zP6=6Jpr9(75}eW^N^pv$1ywoH?1HMP(rm~LRDb>iF{!k~-Lk&BZuXs0p8E}PtX%6b
z+n@Xg8WBnW5+S{uU3Wd<;V4lgYjiZ_KGf!ofqjGyS_dLiLgN@JPgkmXQQ~4g<vRo9
zF@+M%CDBn$NwaPd(`GFdQ)W$<tWc{_v$n}pl0QNEll!W89q<;%scpGlYk@awT`ia$
z)q)o6*PH+jrPdlvQN0=N7Sxo584Ln<yS>&LFB&M0;rX2Fy#4vInP}ugYwZmfhJ{?I
zw?LY@ZVL2gFO{6b?lmAfG<>B(Hs?y#0?E046=V~o6Is{sx~Nj3sS(RIVooELW5lLX
zjGf7%lC09G(5UJP`lrlbOOb{-k=h!)2`d!ouc65Sh-W04O;bBUB%2+DMAJ~`rNU5-
ztC>$TIY+2vSv~KMJG!4lb;^-)Fo;@~K`Dr+W#E%|1UTcPqvy=HX1U!AGH_kd#)rn7
zsup(|sbnePQcK4M(jTNZq4xah#nuuVY5Ip){%zpd602IeT1i(+gUUjSn(j_pGj5I`
zj!@IKj>Ujbx<*Q7$EO1>NiDIs6Ss}Q$5ARW4Sct<;v1+O3sSp1YZ9akxpYkeDltWe
zsaBNivCzlX>Z(H)0}c5CT4B@5I@u}`2XCjm|JUdd)25M{x6>E0k`&a;BnsK04z-R<
z6>6E)zRyxBw_EFI5s-{!r2OETuP_OwcFBb-2l`AJfd;B+%h3P;&jD~1%^FZz81)25
zvvcSRPRLY2l}#GYvPNSLN&k$&m_3il0{RX!glHKGL+_mPD_*8}+i4`OAhf;hzBcc9
z6u7y~dtokcW1}!jL2v41=he;)$*Q-#F)Pa9D%eA4Mj(L3V-dkC=gPf8t#X9VN|=Uq
z{5uM$l&@N9B<+dbu)gk5NH{8Pa>&gVIbwnOx%bZUUa73f_Z7mk?kxXGx}(Y0hw$}x
zmiI}MntVFKjyu5$sj|1%Qc&Alb0~V3eXmEi@13tlOAzWqs4qGTp|247Dta42y$JP2
zry8|I?M)7pl5yv7$>EuU1$jYLZ_NcTC9t;d73_OcawE~dbNnk`W6-sgdS(vBH;`7(
zbRtmSMyd7s^3MffJ%)Di!)0+|vo*JqzO=FfpoE^+2%cn*-7E+}QkeR2ba5OoSo|>x
z<fS2hW^g8=7=ovwbi@;>s^f7`D((pND6fASAl?jF+21h|23ioX^8m-zuXaXL)g%;<
zfVx^OZpm8H**^)OS%j-OYKJU1)b#LCz?|SPwweq5FmmC`n0pA~m>|8`b@_&R8^&v<
zqyW434zy<ZM;;+qiU-@lSq){*4L-00@#AR!eh<F1S#pXA;2{9Wh5M=4fH*El0rnQk
zAhl@=LI2WPhEiS4VBf5u;~&WMY6dj3m8DbDXnNo}TU0PUACn||!|NcVGJYn)O<u<@
zY2qZ;+OU4zP6W>TH5D&RLpC+0)Se0J;s!l$Hzh`MDX~+L&MCF$6{%hR!h*27r>2s%
z;Zs49_%}rE)^BGKM6q=E9bQV3{$9M$U-8s<VLwL%eOXX@UP>(Rwu|XhX6+fs4X;71
zJrn&!a1ENje+AKC8QC9#8z?SPd=bU_C$yNfqX`Z{nyT<7qTRE`0$1wxUZ^*;oj!|J
ze3(KXTG+=UG56&?4gzv^Ye9*F%!O1FW&cfoYRE)@Y`YO}K@<t>`|+r%`&r9PXmqEa
z6}T~hVTbRe=RL#e`63TL&7T{=5Pp`4?(?%g^mOppWHcuedF8`7JBiz?`&CpidL{u=
z+GQ^E3vl`Mt#K(}H=t3ZokAJG8PwVDi~!4&-7g5M3KGeDD&_B(g;)K4ijd`6y5W^n
zj1H>`8nfv07<s>lcltVq>u5nEL(u+AL@7HTwa6>aqvdSXU7!+J(i+NUj}m{fEf7JT
z;9yle!9)5MjKw~}>LT1+YYmNKZY;<GdghFFkFfK3Vwukh1!3nbw1Z7Xh(lRfCPA^E
zf*d>{g;^*8wf>RbVCrNayNI=FU`G~m?##x+r{_8F((`Oo)|9{Vt^%*fwdVy1hNIii
z4=jL3bh_%jpjy=wrR<!qoc(tm+JQB|N~U_x4S~-h_<TI#ECdzI-a%iru;*rDzOoBn
z;_3jl6;=Tow2x&GO$fb>>;xgu>~wcZ7SabS!s8yqmt(f1Ct84IPl?S2l1mFKDz#bR
zQl!Xt34bJWx8$r~Dd4|=k_?KD)Jif!2^dwCq$Ns87Dm2kntGSA$*Rm&s<V`83zj7b
zKn=>(^FTBKOP>Bwsn#lpH$W%ZP!*Lcj`1^lCba4*oBjn5T$LrzntGL02p~`Q9GeFQ
zw8xPtN1t!mkg5)EOwdjCz0FY@jBMpT#?ZwuTEuk8oRZX{CmDQ58gV415lvpJUS?x^
zNEyx6$rNW3Hh<QSO!qvS2Nu9i^?mU+d9ziJreRDnB}H?a%zBwseTUT|UlB4&BiXwk
zr<{M2WLMvL=`OZ{3Pe*jzgrDc4yStkg$)UVb{uanMn9XOdn?sin)+(mE=Yi~=Vf{x
zI7iR$e*Wy_&o}v#@#k^=Z064+c(N%yx{h^G9xDSL#whM;_R&9f3QJ}T=5+^N0-zuc
zQ^UVTKwiG)E3yC_872tbC0OWJ`<Vw!ANT{U&xfq`X`!!nM*0%@YJU%3#3!i7_)`A|
zLznur&cB>EWT~H^9_sew)Y-!igBq@*?)U8tRR}eWRJ1d|K+)Ry^Hn?>pZOBchLiS&
ziNL2wK0pA1vi&e#_N}Q%YdSQ|Icv%K;r4@v><8<XeC!eAcDt(^OO0+<v;AO0WCM~y
z$&r{PpoE`BHh0ASz2Cqppyz~NyA{wHQ4ZwYhL^I3lWq?u=^jqZJ)JzAh}p3Y*-($n
zoZ{UwGmE#&%qm`2S}JBDW)D}AkxC<YYsWnUVN1td17TB#3*mYWQzt<7at1ynbYvl1
zcjYE&8kR&xKdYO2-F?ad!p5#$hH2g?-O{t2k~%&^iW;Wix0{FA4<6Hst;ZD}?|2iR
zls(k4jtGKO?DbzSmcH7xU-Du(4LW|z3#9PS0(mJ<@KWZBi|eig#p1dvtHrFkE9>py
zhmdZxM?k3KJ_2*EmPQrD6CtTaZ*>&llYzgZ<K}^|vtts%P3Bp*OXKUFFwK-k7xiZa
zf#O;FFoT@s;sCdCfES3!WL<~@{Fwk&*c;xZ_apX(x9I&{4F2?%><tI#y}{l<+cmS6
z*c*O>x3Y)0K?{>``RscS`IJ3J5M(dU0<(vko5I9-0dcabk>F{2i1XMkXzC_&kx^|!
zv%O&#wD>g;PXeN&4CND}#8%j!V$h5BhQ}e}a;(Ds)ZfwV_6D>~kl7s30p?kPKWk~J
zJ^VuqXLX01ZQ*UG3b_P>`wgOb3V3&F+q>|Qo2r!U=MhxG&*N!_i5l`9roKu-&W;xl
z?Fkc^W`Mr-@Uuu9(oYJagP)~ggP&9`5AtPQN_>TA46ZQ%9VlmjEtLaQx4q$a7OZvq
zq|_ZxLpdm6N>ur?Elk9uMs#cjjLbmw4}cTe`gm@{-f#oTrZ)eaK7O+bafW^0yk1|B
zOmbS7nv7i|QVTxTgP|152@FjW+rlKSR7rGX)4bkB4%o)wDACAhVAYX_id3>T7;S)!
z&8?PN+;59Bjph;i+FuhCjoKh){51E_iP(@vbef4{s7)PzMR3Qqf%f{?qcrX9cpJ%b
zY>oY?tEk)F@ClxBY^8nct33T-`}b#JoRwpbh>yv!N5!df?7Q~x^Z3@yd#TPq8%PM^
zgYn)#+oOxsI|guOpJ5^u2GiXFTeFePDcV-4VPefyN>bEn1eK&g!gTxx5tu6+k5L75
zrl9hKo`_IKsJ;kP)nv8OBDYyP-bF+jUU%hTX{EtVhzrp`0cWjENeX}0A0S5Ci7%V(
zQaNANw^jkr&nBconz_=3x+M*cesUOHpzI+|RnJ6+83j{zS2y*E6&s24X<n}q-ikn6
zD0QxrAxAo|!ss}k&Wph|9snyaRa%mbNm8K`U7#OV4-m)0`dj~59ZDCShS1Qy#4dcm
z3N>#9fu|ebfk52>lJbY8Y%uW<pydSAF_D)EAotDE@OYn~k&u4kk%|s8O{q9NsM{26
zKT@MPGFxkJ*bB7)_HIz9&uMJfi;Qi2*uDX<*Yr75Bs$>{KsIpzOL=SfPbg|eWB6UX
z+QP^21TP33UcjK!kij0lhe~d<bVr<GmO+{B2&O#t*XH#`EhIcY#YARaFD06PikZ~O
zL7;K&)0;<cw76T>4(~Z5pA>pN7;Icz7`A~Uustm$xX#MFuZ3FM5Ox?Va}C_X_0YAf
zp|+*ANJ*18(wcNh<@C|HQVBP2PNL7^%_^7CpWf?(y?z^*T8_++FBd4=IfKO14>l#4
zIW-&87e)_g-b=ZyC2_<+2Zd)=_HaRc5d4*_zFk)^L-gxhc2)jtHO=ruXU|`S^dyhR
z{kGJV%k|QUSad2^Sc3v=D6DAm{JMPDd<pg+2CPw$e1Mb;D83Y3sB&T5?GbN-0Tc|D
zVszEb(X8F3{zz^#b$5a|-1y=&x(~2|%17<o?d>QocRO{e!3H*Iw9Y4Y8W-e>kdv+X
z2XV1Y=Ti{%03U$(M@=KnVC(SR$ZW+T*$7#r5tS988Ac&&x>16BfK(RHrb@+C;pR=>
zQaRz`!^XZOT_d9VLP?sp3p(~$L`r-m><3s&a4joME#QfwQ{O`$jq<g!E_SgCNFJcv
zLO|LR&6fG>O$XcY9zbEFm)J3Y1>zI8js3WagsU?S@gx<5jp_rWF9dO<zJ~(L0;!T;
z;AsJs&-j|mjeJyYXcke)(*RQWe7Na&$46-IKbgrI3K2U1#)eta1zkVdvhCQ79^s7}
zJi=A{1*T$06Mrw^uN!|kH(|PXU(iP@&6UudFyPkqYToByZ1J?iOkr#*g*+iACdLxR
z+CaeFW^c#<WA3Cmu#&e8Ppy&0ljw|Ak42EJdaEaKn6kmz>d6sWJ=YCu^<0l=ek)d$
z*tAyDC|`Yqa$x`D%~b`pZ`&J&5x04dQ`tH(PrkOqqFLP7<2uLz`!*)1eQn-$;;iTc
zgb(`+^9R0W^Q&d;nvL(PDJD6Q5OQkUI7T-O!AM?i73!Af)b*nzFV6>h22R7xr`?BY
zPU_zFf<nr_aeFjL<so@xyAakleFvLrDmHF((Jx=_6U&>-kbrx3Tcy-;J#!W)1;L!9
zO6_VZ?f-l_G4g4Wd8V=5g^aM2pfgJ>LGpOgN^EeTxyeA@-f$Ex(o3wUx=8k(hsmye
z<Bwct)k{=D9^WrZqUA*@?Ib4EEwt1{Yg$Vz^{^NwhPs!)s@hV@t-j6wK%eCU6E!A-
z`HNuOxeJ!LIBqkQ+1C+a<yeA5rFfz#a?C7Q5VQ_rb>+r5N$&tg(P0GFmITd<)!kLI
zeJd?sbl%~5=1kOt_3?15iD?NQXA~@@*h2~Z<`*mz{jP3ozK&-H&~bd*HEvq<A|5xb
znpKaZf2oNaJAGJA4=fg^V#?6(e&g+xUpRx2MyLoa(8A{s!j3$f_*X8ah$-QzkP$6B
z15XH;5}t-YTzzWiDEthGsIr}uiejvH_-bR-)@Nc!TD4WXz+c-*i>%rjKFnV)H1pSQ
zNHm{&ifcsGYthOqZM-HEG@~(1P_!<9sPlV`Syfw@kR5Fin%g+C#JZRoAWhF)0_ueX
z^^Bf*A3_>O9Np(b1ZD#pI@cOXV3%PO3IwSHJ#zs*0iqNy$Tw|=Ph}+Cd{M3E5z*N7
zS%3#4nyd77Wd8$Yuj=?e=s*qy;$rz}dFu=&bK=N3^5vUrE^4KJlP?cnpB_qE0-9Ui
zI)`snEs4cIGL#;09~sv?B_cP&bk2S;hGt_@(tb|{wvv(7!nXD&6&p#mxK)8+D@=!x
zzFe`gClQ2Uk-dtyG6VgLP08R(w|j&YI&>~1y*S6Atj=+0_{(jFGY9YOTfM!m*L})L
zrb{tw_Qbghjz8EFSV1!>82HLMS14Giqm9e3U!wlCs=R;4lebpBkY(5w)>>V8wEI!1
zCbfEXsI)HX3GE37NmQD;&|-eaWy@#pe+rxz+OTh7#E(+ki%ks6DtmYovcOKFEoMqZ
zulj(Eb^*#R$XENsW!ii}vpk?K*pi_YZ-E0wC#2mQg8?~1eUHsV7obv8xOt;z^E}lX
zQ_rAQ>Fv5&X#N}(l06g!e;frrN8wIZ!cicnBebpsh*N8$M?u;8f``_AryV{9g<GMm
zF!Kx2oBe1KNfnvg?doD{$aJrsN$K)oD@^<By%}hP*H*B^CXNUi6gj0HVILUD*hEoE
zZC^*J1=2-S=|}1J6h|9Nt!UkMkn<0u9ttXK_J(^Ah!^_?3*%EqHd1(Bz_+NIteo#s
zRk1)=mu@IXybmn9ZX)*Lb4UcX(4K+YNHjx@V2c~Zs$=Ah7gq*U2$^&F&XyO-ABqmU
z;Q#BgTE13Ryrfig5qTz}plJnOoA|%PEb@)gXd8<+5*um#sG&s1|F*;fMu{O?a1D*d
z??F*uPa@ncN^)TXdeJNug)D3g25D~e_p{GXQ2-+(x;w@1V^)}w0|Rz*EKFcGhXwTx
z;1nH(oQWWCpv4ao=7~3wkJxfU+l*pPs;X1ZTuM5I9mkShNeZx^A+;ss2yP>6<|6`s
zpQ`gP<^Gro!ai@vyiBQWcNda>NNuIs6ZtfOJA#;73$nywRp|EEWYO+pPry9P9cRqC
z_q?oUY@Eu$R7;ZK98rvFd5S(WiG2lr3K;$**-7)FKaY$4fMZJ{$I8U+NTAkm?lQa+
zOKj?qx{u7RvvrpfB+rXhNUT@@X|7af=f*ICPpgDS)=GF91$^w;Vv-Y^yA5{A5?e#_
z<950IE2YF1O_mqhobns`GGvrjSuk!JUT6jv^X`yR{EReLAbN|RZ3Kst#!UprMkkW3
z)`My@{H!-di+7tBa6M-N<C^2fT^RLWB640K_bE)Zuq|>96fLI4VB$q?OYLs%aAVhG
zRKf|NSzap07pvn0^`jZyKcm`!>*QSczs70#l3Hr(j>zII1&giHa38yyFr$gX1Q0zs
zrl8g;Wpqaps6TFre}X9(hV$B9hMAa95^ZpS-`e9H@sgh{<ds0}7@kGgh5$oZO_&IY
zW?0<W6KDhWO4x7k0b6Y*Hj&Cjmyn>owuFr0v;MIFBZEnrpjrM=ijb1e=NkG9xh;!n
zP*!~YW-F2VayFjCOah*_at?>2xy40QuTaMmclZxdZuBH3H6!Is7L%A(sh_H3$H5FR
zg9qeRYkglZ6Z5un9C8`o<x3$*37g@k2ETt={eZzVQ0@B6*Qr=NGaFT4!^IXnLw!>X
z9)T+)ItTm0<4IJcEVd6rU1$PJ#0bkbD_Pwq)CJ%OZ6-&!V1j5-+oF$#vRDcP2peqf
ztCF3)4nAlT;NnURDh~}~0iqU!r(l9KjT57iH8>4INTVxRALV6F4djBvMN^g8(d0_@
z34QAC4H!?M%g?iJK(?URsd3uJ_w_ZSY4U7A8tG$`=_B9Z8O}tE%>n)P0S_p&I!3Jy
zq96<`F5Ugky6K_zC9ab_7u{alxMq(uk?An28?C6Mf9!jRWA=s}>vw^N{kPbqz6j3{
zcaLOtb(e5GA@{Yff23b=-6OZ!<xjD@NW0nY#5K@n>+gU{T0n?_14(UOhES0<>u=#Q
zYGKuR_g_RfbXzMc*zITew9fq(=|Ml-0^&++1^P}sgTw^|g>~pF(dB2qBvS?~N8uWj
zuX-J{s_-FbG@-+bAo02l7?1%a(1Pq~98OF!U{q`tp^b(UuLT&YwKRlAI+9n}zif_L
zwOu(tPuRA~z8NW-=Q-%%q{j?;c<AAy$8vhC(O#<q^nB^Kijpvtlb6B;__Xwb96wcK
zt}D6liL=uSqtGl&G}IIF$D5VKUG8Jzh}>h?zgY{MX&8q~!{RQuTY1f1NA4j^G~nb|
z8&k`=F8vq2MW^@tMQ%gEos<lWJ1Myn{i-f@n2+Qhzc(b5vrW7#>WVlz;DM}e@W6_0
zRDx~4RraY7cr`$S3ehRF=O(B^AqHHym=%tvm)X_a5})|freeIyh#yy>2t&Z+3vgtq
zP`th58}5x&JhwzWf-ZInzU|N5pL;@_SiT)Q7QdvgRZLlYK`HCpPc<S5rvtpP2YS4{
zh+4#SwiF1Hl0}uIN8yLSeu|`><hKS)xN<J%qk!vdrTdZyM<?5QC!3E&a%fb5dvt(5
zt?W2odBYcnJA9(U!R;;Lm?q)Q7I9=KVOc?~&Aw$jD#eL{)}%X2;A*2r;M?TMA0y6+
znu%JAZBPuo?kj5_Z*nw_D)HoJNep|D+dZ%YLYu+I$pIfH8{C*}YyHL<1<K~lLPaB@
zM*8d~Yhyak+NpZUo#=)p>z!|ilj<%{7qfWI?AD~|C2?r@3im_Pw{^qOZ}2r*jkbg)
zcT4~s8Yc|(7~=jkR`RDAbq+S`z3}2L>uOq@(Quz>yflIDm5%^psLBx{HaugdcpXGl
z5E$L+`DY$AAq(F|$NYxV9fp$llq~)Mo8|SKrv}n7O^ds+k!b(;E*fq#u36OWd}%Vq
zgS21MGjlgR$M2$N-t+V<d=Af5TQiUFSK6!mHU3%tN_?8XuG_|6H*dx3xu+7F@lw6Q
z&X@VyvU5M)8dj5sDIRXeK+%>cAZ)__9rSVM%ai5^ZHc?_OrbSe;;#`R2ILD6g)iQA
zG;q5&Ej5ib+s+t(Fw`xB_y<4~zI+S*>0=Lqw0M&X34l%ln3$Vjf>ic3tGA;qH}Ap(
zN}Mb+i#S?lX`-!^3)Fs#1<RWKBlwf7K`r}-Q<w%+wKHe}ZZ2Ib$*%OV+|$rt&Gvmq
z)QGalLi@>^Y>|%~sS$0H14j*Bp`j4-8vy6N{TgL#$}lxLJd30rZOeE>4^l&$GOS2j
zDD_~}<swvnAsa$IxZ1|%c9>z1_vz~_dS(#KdyVpuN&YJ6<Z5ngNTj&|Jlbozn!;ZI
zv^7i#PFSp_Yump>f_?81`(CsA$of&a5sy!MI*q=EocFTeyIh+WVS5SAsAoXSbv7;B
zi!7+khnfk{#~m?l!Ys;lwgTx$g}$yF_*{uh6)d%g*sC}WfW8_8;5#ZD=+n6bltWb8
z>ZNMBBPKDuZb8y`N7L3sDmFTt=0};7<fJ4N)VMW?$Q8A=Ht>KzO+6U(8&qrypGP^r
z0LHGPH}bIh45erd>6FWST)W>XUmdgFR<|G>wVc3aSJW<F8M7YMrlXD%b)P#M9Z@q}
z|L3^hsX0V;J6hN;IztP4DCK-o%I|c-IQX++w5Hg>z3}F(5y#7$R}123b$t+<-B#Gb
ze*OW5F}0O_2H=)Z8oPwSi?0#@0#A5%9(UEd9gB&vSa7XDS7JI~H|9(tjsSh{65w|b
zkTNf*a%f}&=xTuWkH}ySA^Lq)I*$tWL(j*j-%vR4psOH_v+F%99mc;2_dB_-Pnyt{
zNI{SS(y;*r<yZBJ-ng?~be7!rl{8`~hzOAAS-G#5T=zQRDLD8sdYJOUn=VEh_G)Xt
z1D$-qIfP&1t^}3b?*PMUH@rq+{Z7Ydz7M^L>B@E>!%qej?0*)GwKx2Lki)8^c}8I;
zf;FGj>+CD&#fCM2tk*kucm=}teQhwmY~+-~S{Esrm-%2|Be@`va3P5csaBMY)mY<6
zRCsbO*`c1WC~Iv6i<x~(3{}+Ceu3iOK}eInY)Wr{Tl67B?0ZWfEJr*31K}aX%t0|~
z*?AQ6?V~fWIM9B#n>tB4AHAum!~{8;YTrAX{5(Li_NKb0@zGlB9*@#Y^W3p@pJNtK
zQi2mq(h2k%Y>b!*%eC$B?K)r6p|%0Fwjx?73G89aE<;I5kxeUdXv%Xa=l)gdt#ei>
zGv;_acVlPc5_=CI9s3}bbqmbnEgpAdT{p_!M4JUOAp}~{gjf1dRGro8nJ-;di!5ve
za-c}1!iuAMu)`QC%g|I$kfw_6F32Muv4@wSTw3<`+ph11et-~U1ecHy9Qzx-mbL5b
zhuCT+-?ej$l(M=kh#5GOAiWAEmPHnOLnU>CGXX7n@=KD5GvTxLh7u&c(g@rj4(ioQ
zFUV5_cyC(SewzJZ(%DXvMVf7>(m8!ya6m$at0logQl{j#^blk#pi~Dd)IyR9{k`sz
zHE>)19ND@PNit3L@ShQZbch(74e=|o>^z6|sYTYE?fh-qc^+@Lf`jQ|iM5VZ>VhK2
zD#hkKj$}`i@h^p>vuo3u7Gz~NHa3o?4;{t_lBQZ{tSr(njg8x~=-a0-%A&&t&>qPp
zc>wYMB0?zR38X@QuV0!$B3SH!?BD*5&n?mG$ll_tziKqMf{B!iC1MM~Fxis-SUZN;
zcJ?IFTI9l)-~<LQ+t63ckG>1EB~k*g8kmw9>+&tHQWEB6E#h|zOUHwjL3PVZNJBz(
zL6&sCx@Er+8;uxND_7y)r0=C%YyoP(B5TXb*8qGl2=J+g0Q9|79y>Icz7Ijl*o<`4
zQ;d>5>XyTZ-ApX%V?PFfy5&uT`P4kO&BtV(bR0<(lXzjxh_MiYnDb}{|Ad&DT-b>1
zQgL*_vxJp|_4J!?E7R{_MF0x~v`ugbwvtmq{pQ#<aD_NrO$G|7KmklNfq)8@^}?rm
zo@FpOnUXPchd-6n=4UamdjMv?_>2jJ%p;bAhm^HaKdpX`noILFA4Q0I0};Y$AksV-
z(UuLM^@M>|ifWDn%1^+FdKl!jKi<OeK+)9TL@E*$4WdJ6gy9WA1`0xrhLitmXu&qx
z2KQnZ2JQg*F26d%-6Kw|RPtGbxDq4YIM_?TQCJHHXvlk(`UFE>fMj27!zrd_8f!On
zd*F@RfwA@$%+AzKW2`M%gL&E}jJ4S;i;~x@jt{supQ7BYY#nkSJA0Cp1FfC3lGSP<
zdCfCAeK%x1%jGQs&|0pSr1Qq4%dh7(09wtf0~PhtXv3r(bx0u7&1mfR(?|WZejFdH
zYF!NS6}{o0_z7$xdfYu4$Nku&7$(RLl@(lpPZ+4CqBP0^EvFxcZp5Mic2rE%zXz=1
z1NZ;8s(b%M)t656SH10js#?!%07~5HKVGk%NljKeLD6w=0lf|+TS>^l&o<ud%tiue
zt!^2h$S6=Giy++u2`}z6qLsdbs6-S?N7J_=lbpus*6{}j5<2%;>f9}#>H60w2R4{V
z=%br3j<l65-PYm3BzvB+DFejIF^H*-Ct~WSlr2R4AhlA*Sc*82MA@{abqg(}idwha
zgLqL}Nsv@16zij0sKFC_NFf34*S$~}0yv?J0Js&vrj)EE1I-TN9EA0CtC<M{+<?6&
z6FFE4TF?UYfGdj6BPBt+H;o6duR<#Y!-}it5nbS>O-{^k6d@un4AQPG7AF6VjUzh3
z3fZ_5q~;XN%OI-$m1KhRS{BZZvqL07@cDh3D7w%Bt8f&?&j-Nr0i0ykGq)jq8TAjj
zNN+|(ydG=F!P1WdhQ5TX!Db?U3T<VOHQU}mlOVMu2Ly&bOsB%sl4(XvFk&-}*x!LC
zzRfaX=Z%=hh@CcK#YXIi5i2!fe=uT83#m7$k{2lf6#Fv<E@N2U6okSUizW<Ag>_@x
zt7IDqxWA(+jgHzy8Igwm71T|uk#|ZZ>%>$);O4R}X4LCkuh`%REWuVs=HG!rCLoue
z<xsh-1p6l>1iS~=Mv>G)VH<nc2%`tT$)nre2Am2bw!NVmD5!bFkiq6pxY`ZAOz)jG
z^q+n@xSK~vm=JlMN2q7@({dp}ATP<(PLd&Ulw3%Ff|w>35|F^pVdm^0vD`^tc91Bw
zB~r%Xg&wTU35w@6q<Lpt?CcFRkQy?Kk%DH!e?$U11TKJEH!?8?W`YI)$CL>?&dcMH
zPsB7tdnYBbcEmB}^2*qYU<-8Z%Anf^*)s~f69s@(clPVb(thqf4hqM)d*-#=oor-5
zN#lsS&r|do?k4+EGJ6W?WKc2mGt5|+Dmt_>##)b|<SMIHWGbY2&U(A*WyXOdm{FEQ
zC7c?L)LN~yE`Yk_+wDGfA31}QY90Y6>rg_YH`Z8nxz&4xj-tAbHdf(MgUiAkl!P-0
zYcljT7CP!#u6biP>5ViWn}&k~@?j^mgCpPDMQfl=S_8qHoMGSR?VaMa)zx-^&0*7#
zA6)ZQ|H`PGoX7o4Y^Om8yPCGZ?kA<uEDz@2Hi4|ie5V7R&$pl{@bF1vWBI4a_!RvF
z3p)5WjDm;yZil_$dq`6kTIKdWB^|pYC`@kuQa%F5b{imI%zlx3!%t(+w4m3>cV4tH
zg@?&+K8*}Vd*S&&HfX5aH((A5V6TK09+mcnIw~D!$Y$dn02~lon3Wrw@4kxjXPd@X
z(m^)%IeaB(9fhkw%H$(X)JnT8kHa2I{utxPA7hjnf#0=y0!OmB=XLxvcKndF#VNuK
zzoMd?-2u%z<q#N)28-)ZYg3uE(Hb2ErHY#wth~A>2CBpHDKRBZCwLpi`*hg@I9qGj
z9Lur8Y^CiE?l$Aj{;CmLS4<%jp{$Rt`2r8SydKRAnc4R|Xtf+O*&AjW3F{~U6oK?@
zg_#K-#^FQ#Ra%GG8|EM!TmuF6#|%t7DqeF!Dk@oFJ|_j(Da|;<{_ck)CmBJy&*WeM
zV6eZ}npk-K9LOWT0|6CWA6$ZRf>#qr4PCvXzXaT=VR**>z$nAdo`#FO2RP1Jmk*Nw
z`OAOdHn)b%ugsh}M+n}BLUND57H#H5&<Hu))oq}$&?o|S#O|OEaBy^+!1>lTi0VxS
z47T&J@v;?!0uUMf(Y1p>iShP0oF*YS6(v=&zZP<s=xw2{xP!|X_lIJRd{q}GhOi2U
zq|E$^%ERHLlW+(K`1IQ=^vq|WyD(?P8q&;CiQ_<fF%ywK@Bq<$Vw~>Ms34J?-Pniy
zYn?(95u%eNbUqMv<;wUOr#9F;j1x|@0_|n{5GPIJ?y)~fb7A$v+`ni=7CC0ASzpOM
zMm0FHUt|fmV{1$Ib1$aY+61-D+y*0(9jw;N)_g=20hdwQJnT}`czEjl@l^5F$khZi
z?pbycmh8YzI=w}!*29SLTN(W975;%vaDh7mWX9!9#&`_Vtdkvv^wY7W9|8<y<|XVT
zXiNtZLs>Y&kKHpmXpcD(qhb16AU`{B1kf~XL0vH-#gJKS|Gv{E0Ah~>kOr9ub|1(?
zu1MJMETxr;e}8+IM>t52N^FO<uC=Q;6vGeSwOQPKH5a*#_3vi{MUVdp3b&JJ`#e~A
zp_g08j^Bn84oR{;wT7XX{*&&;n|B;GJ>tivOd?M50HHav%#r$heq`!PTuhJ(ky%wx
znq`0bka~#wrSz9#<j17Bbe8#ueczmn3cr2dV@a-)l{j;d74BX)POY_Jztw%YCPiIh
zHNWq^S~F~}+&tBNx&{k)zEbKhi{8AvP+!p612N>jFFU|4f=|9+9dvk!!Qo}Vy9J&v
zm~IeI5F#nCn?PE_v12hh`esUlw>W+A@h?`;)vbDRB5Y#Mak<?TpT7+CkujV|j1yEQ
z*Gayg!<#<DeG9urL%eE?9GJmP1>S7lIk3h^VtLO7)HaH9$nhxM9x|i^_LEtHz?K8H
zCHPeU*+!FPaVIH|mVTv)Ls#HOnkyQX8P&gZhlrk~b)|Z&qM$%bSI>O=tWA#C%pbVl
zsQKdC%{KEP_mQ>Mf&$5cv(v_I#W0W_V^93(ELo)GtBI10-28x32iaxhtI(<+BA_l@
zjw^{UVkirj!w+7*Y_*4J-K?esQ85fU^gLm{?0&B{=i5hZ>ZYag3Y_3j3;E~q^m(rN
zFF?qBYU9UhRWEkLHmxZ9KK8<-l(v!;B>mCq!fpNWdWtVBgmKaM-azr$g+J<#hbcb2
zQ0tFBN%0AVPxZ&QP&~cxhZIjn`AvxH>sDab^Hf0Dv;uAlXk@v53ii-|QnDPw;RDP1
z2PN>w&U}!2=PY`7=uwPE+?0T?Y8nySU*NOAOX%XayKzI7Rc^MqTWc<$>E<$PwL7vl
zkv@aYRV{iRmBEf(L_fBKoWW9JhC5+zj{7g1!4N24P2Ide%v4)K34z>*I2nId{H@51
zNX2XwI3Rx96sN&4<9HB)caTurL67Kief?7P6hC<gr=M1<niRcXZIPK>oF%g)F}D<p
z?@jObo1yv#EeldG@J0XoAfdN|9??+;sm(j+5gm4rTD^lF@vTfBOF|nIZ#(Wwf(;a$
zaRy{9@U~0I7!^K#9d1l;ZNPG2FSI6LFyD}`TE$^#9Q-@3TBLF6B5={4lzGdM4tvs~
z6-wFhws|YIq8Lh<Zg3M$C#q?jp)!ek%*P7K&ee`l%gzyFRW4PEhr`+PT=Xn^6gC4K
zUWofwWX4OGsIOm9p)YO^M8|-#I4etDJUHGeu;RZ^7w~V_B8Dx&eyoz<M61kO;c8~*
zu!~?w9C5?~&|#1Tb}qR#x|B!Z>l38TtwK&i|C2wHp80$`=KgRZxh1|83=+DI7LEpU
z+MkZ75t9D;+IEU#B?EX`7JhA8n6@+qky$=iyPii8wwi1r&?<JS@HmBNv$qPinL(sg
zp+28`z1<{laG0eW)ss=^O#IOpF|%+Iz0wOO(<`}9@ch&yC9)zukEeSEf}5(bZs2=$
zF!uCYE)!Wk)?Bb((HT|@FBlWEh&`W2N6ab|P4oOr#+FBbuA^#7!Y0+{A<Mi<wg!wx
z{$ffYonXaM@C~Dcis)QFyB8VMGevc?3j^Y<AyWmL3uwU7xVO+>;bR-8gID;3XJGm@
z;$6<k7|_g@$Ws4`&M{(_h{LZV<OKN!EW>sUm{$XkcE}~w&)(ut6clJyeBPL}z=fc~
z)$CW2)xTrQx{b`q;B>2)Lc;2`T9lFC?z-8NB?n!s*8BU(xK^!%CfKv|WOx@?o01w6
z;9O*Dnqc4C0{{4Q@)|)KM(W9QHWb#vGFwxU?zJ_VN>Bl+YdDL;p}37fda>@R6SrDj
zO_6?qk}R!rb$*nXZc%IK02;Um#3@>4rASF7(Mt=XpYRW4b)|!%KoFPl5P}ZfgrnWA
zqtS$tId!v_ikAu7>#=Evc^h5&fXz))UH)W@2c6M0S2J97yuJKxxZV>TaK0QdpI4r+
zbS@fnRJurQK_7~XIgVDKaL=q1abEbWSV*_f0eA|#k>*`!WLi@anrAdl$GWP&rO`B&
z6bCVv=*jrB*jCcv#{i7%$*l<jQH(M;I?|DdmQ+80;>@yB&`tf9Q{XZ^y27PkJXy=Z
zr7y!QV9efw5Cnfk<M`F^Vln3KJLsIXk~bBd3sZ42`Uma?X55{kE{2bO%vVvN)poIA
zn4;0f*kM~CYQ1ai-PrHP!f5SWH5U0SL9^K5Wq&(7NKON+GXVF98{^r{eU*MH;3%v<
zMggTe=?u2Q&tqeONq(5|`6On-JJtX(<1)a!mm%VnuCwGnAx(!78qQ9ltu2uth}EJ~
z3^SA*+aL|YC6PPn1FnhUC142@t_KkLM;Tf9-51A@q_(Xpm?)-uJgZ<WzihnzuI9aj
z+Tg{J+g5QR=J8eHUKMYbei}X^pvo;i_EQKD=BT}hO{&0RJ%(9y7of-zK`xoSY&Y6Y
zPFEPYVe|Plic?#nOW_MI!Uiursb}t{q)zuGdqWLqhzo3nk!QzMdUWTudVHvh-G*u)
z_(0nR+v_gm;GRUN&tJ)2%;j<&|3IFc{R?ptFlcY^W{{3D!9ckmS$C3O8PH209p~9e
z{+)46hwW6pr75qBalxsmd~M;Uo<G8%g2TLRVp_OGOzAnklROim%W*LjTATSMp)d8i
zq?n$01YuXFVYH+7VIIfK5^&7~=k0QNJ6)Y{)=ECO2qi~T!<Qu70ft+hQacsyD&2Eh
z$)gIYm-V-T#1f9ncGd-ZsbN4M-OSzlH^QZh4o%c#v(xy>SA+%#t45qVibcobs<d`G
z8Lb*8HLy&#A1pRm<aQ4X(?*Mrm~dr5;s#L07+Ct}&~$fIPXx<g_)IsM<OuD1E;JIP
zFQIX<m1_87#b2t4U*QzLzzG+p7}qy3bxtpG-qvtl%y|*ygcCeoxJWJ``j$3Fr&@9&
zE!v#EfzVe2q273it5<Xp_B|vUcD2-6hx?M0;l8@g0TO`&6BM{Tb@1gNkDGBGrXD<{
zZ(cW!?SnyV$lX95L_r<g4TQ^pvS<VSq5UL^odruW?BVBt8}1^?c!k!atFYU8J7m|6
zno=t({A}vWl-I^qpo}&FCJTWD5LEdld;g6%oC}fbHuu%_(^vu3K6&6~qC@ZS+Oe^Y
z^SVGVzPaA<9fTV(kD%7T9ggIg!(2B6W(>kwnXSB{61P-pWf|oaN|g=9D?O8B6&W+&
zf@Kd^Q<gF-T&NBxrsymEO5xw^VLD(y;zmbG+*j>emf=m!D*ruiR>va5jb+odu0$K5
z>_D<XS%HCw2zL_}pYU}em$yOBrt5?{+He2n6+zsciM@h4=%$S~{Wye>k=iUxMJGED
z#`Us27u7QeS@G^vTY6R?{fOF1Z}W-hJcO4bg|1Zt%!!T@XHR^7;!NsMsjKIb+6gFJ
z`G+r#o=?puYSP_+TW_tgy8*i{WnnHpjJq!<!*v!RD?+xO4{$K?13^8ep2FQ|sHggn
zLy)hlgG>puw8bJ3brEJ6z%Xm^y}t7Dpd&bNhQe@xIIN(!70Pw!FFI8*1Ir^oPjih?
z*Vy2Wf%V~iIWy%eeb9M-UpHNwxlUX9dj~E(Ew#x{;PTQpxz_<Us#yX&;$NX|r$`1O
z(U(>{#l;Lak%6UJNEUkLSZI@TKf#GE)Q8ow)pdmZaE}hNNia)a1AcJ8q{(K3%;3~2
z4ufVW3HwQu;RLw=nQqh{%hn&u(jS}3GUI@lu`TvjR;ZuTu<klZ);0YErab8M&((`+
zg#52&U{9I89>sTE{}jU$h(x!z1owe1<?JWrbZaEtAF8g-vEEybn<6vV%ba;^RfnwD
zeF-+wT=%iJfZWRS(4JOz9`{R~46o3a{{+sUDX^b?D-~0~e_{ZsMaC9@{`M3=jj1hN
zV*$5U`}cOBc@>pv;R?utTu7RpT!=+%)4+xJ5GI|5nW+#w8wl(m-4EN8l#cxv+>8|^
zFFYU47vgvpcJ?ZWNy$Ql>8Yv2@S`2{;eU_(8>HzWTXjJq_kP8NxK{Q{azDV#!w!Tx
zo<IR?_M2F0%wTu$*D_qJ8ikMg69mSlAkA=k<=2m35wM#GvjoYQETZ&uvcZlcG&<fy
zZ$s|^6}VkhKz{@}_8}?m=4%iC2ob(4<YZ_<3>12pC<J>MJa`j0E!)W-_vfHdoZ|Co
zVmt<p9pDmRok%{<d45JN|3rBVdN-&=y`@;7CaA4+?bdmAXAUULK1Bssj3BoSC4)KX
z#-UOSY)SA!hO_a2*D;y!s2lW5>Jp<&=hw^pbPCGUrFQljHR*6h|H2G2cFaxN1?koy
zU4YX46;LDbV*i9<)fk*`;Ne_lMWdg^zz4RdJ&#SB@M|a`?wvf%&n%bli5yN&f*si|
zY%1W)pR{`L0LCID!L}7$MtNx@VVeygF=%vD^f8XfHxYpMus_ZSGyUvm<k$g%PDF34
zd&|#MiZd6=>hEv150Mt;#Is`~dKmdfu@Q(3B6H{{EmE;j9zDtRF{Z<qz`Ea9H#OAm
zI=O_L#2st1*`EQ%9c_)G*-FGgLrfy)z&+dn1$L3HEKDW#JaQvCRy{)(;4zKnp8WKU
znBo3#tt0mmnA`l93Re0Xt~K~fs(%fb7KEtmSdGWGk7k&UM2F*$Q?Ad3i!3p-s!5TX
zGceVS4y+k5Oq1vH90!fnm1<w^<KT$i$d|aA=8>ZoaE!LqR7@;{F(Z9GZmq`Z!X7?_
z4;5PWt?EelU#ot)s2ncW7~Z-MnItiC#d5cN<*s$+&|UYd_gLKbSf#nN*HtH9ajqSs
z9y=A)79?1DPEA_6zql_&ngRqSjfrM!cef9Gd2T=Xq2MD{8P-Vw3%u6U3ak2n1-?(_
zvM%L*3$3W|yw?iHDWFB$8bfNWipigtl&UU!81^FEYZz0jVv(zs&|Tokd#c?Zu1ioq
zG{e}%b0NF?G*V8xKfnnR_~}1paX)62+y^<%SDkA|t8bk8qUZD^5%?}JTck;Z)UDC6
z+CA+&{bd7N`o!^l3}~Vht2*C8R|N7B)%jLsp%p}ik2Kbo*p7lW{lMN(he|LYYqk?=
z0MJ(2EJFT;cv|svFSJU_n?SC{GJ9X75dk9Nb#=9N0X}=jI9X3cflta99_G|7-d~)O
z6}^!IIY8DSPyq|#f1rk)`dn+^c&A`i)~h5b#WUc8-KoRscM0EjY~+(~!vLhFZ3IK9
zd9Ol*gMvp8A|Kh!rM5rP+@Ycz3l#pHXNi}c;<NH7&aE0B<z0=`rAE0(?JF%Z07@No
zj~5A2ioD#?$5Z4D@W@z6iUY&rX`X~pa!`*f2NJL%5t|c^U~@H-_&xWCwqW>$a;-E2
z`!9dPT7%}}I5E#b-H8Od&LV%un!%-Gr${Y=)rZoRLTVqk55Bo$1A?%4PzA7fU~g_F
z?yCKEa|YZhsG0#aN%{<@qv!^#4RRvoau~UGa_Q^NFmw3e;W<$8*PO*rO0bb3wuLM~
z!O5-H4!R%k49dg49f};GuX7AkL(Pr;OkQZ!aUs?wi=Ie`sU;4~nbp?*9oTYQbO|Yj
zsa$=`fkkK3Y;G>X?P8bJmPeYo7&puyF@^wmWA`f_tKzZXc<S9!SIDAX<%_P!XLj@B
zwjgzB92tzLRx<W%N4IG|5!OHpEQVYE`XcpM?mLkV8}?)7$fYq|ZoGhvOI_R6i<jcS
z8<wgzPj4qheU`R5h5$tpX>m7SdIM`~Or#UZRYY54Q%Wt$9IJLW0#;>?MPBjqVhoV;
zlvjUF4AWFn)O4gT($I{)YFt=^^H>`!oW~%OpZA=c<g=<Rg9}M4y*VNH+QWgBhfRGi
zw;U>MbmVipdhBZ|txH|hiz7Gl-50fu1-<G-rObf^u>JdsfmnA7^c<bQ#?Hkh`%`X&
zpnD>hEl`3n`SM-sl0tU{$X>q8;$CKziVOvJ*|~NsiDL{`z;g|^jWpc#q%X!qC(03M
zxWSLlZKDPbQF4o{C{2O3TVzo;Tb0K#Q+MRPZ7SpU_}jn#0-))j1kTv#mPOivTd{%4
zwd^vrs!Pkhs#H0kAt`^ALkU=wdn}|<?y=(O4p^nirUl7RBO^(TBwJ+Nxi-75b|k5h
zcZMj4F<SAqV)dP<lYet)i@v5k8aUEO?iX|iw{7)m#kb*3Wo3a0m)0T$mM3LyuTp$l
ztYa2Phvi;AUUrRk(xJ?6gtx##lX6e5w$#<DN{&dMWg&(SB*=ZdN!9d|2KI0rHCgJV
z&;1`j9QUGu5v7ktl(#W%h)MnQP9Gdm7V;5=fB6QnF`|IpxXvBgcD)s)lERf>H0@Ok
zd<H5k>(Xo&)yIjH<fjb!-h-z#KD2?XN&VV6$sz+Gkd<raw`opOcj`;h&IO#TZxdPZ
z4UKOf^6_zt7ANb%A!PMB6thyC)r+a_PzKM~!4*K66)MS`NUBDTjFvy@#0U-Ute7uf
zcKR!8Q{}hyQ(wqsF+G|Fwv&(PuI^Kx(>R^R72o@q7*tqP_msu4DSfH$NyFrp4ESca
z&(tvY8ELaRo(ldKFz*BAed&QH)<n4IZZKyja^4!xnR3my_iH+lBa=N3j}`R{>WObi
zr6kZ4mAk2^_c#=jTI7)Pb@8vtc#dR|Lv=vq$X9UtlDd^Mp1N^c@su*c`5m0>#_B^g
z__4HDE$DAcI__gtf6xHp!>kegjI_-+C4a%TVwXPUZMe}J1*6cAa~bsJ(Rtyc(3@pl
z>V20j>abi)d@jcM58}QFlbUL5W;c+zSiRfgzS}A-g)DIis=Z!)hXlM=+n5h-RH`ma
zS=v~v;IGdvxzw@?82KlqMyEk~46v<yOf;Y;jp?%^hm;B+fKIx{5}zr=P>)spH;eMP
z1r@6QMvB4SfPFD2q<+r4+o}MdoB)(^YaFj?gELe6BH+qKaB1xn`V9{$m9rkC=F1ef
zI>@BGDH|J$Y1ROcv_S?<d4eWg+N%bt3)}gu=+qY}cR-QBh@7enQx*&-p@%M%I?X3Y
zu90*b#JWpO*B&=1vte8w>mE-7Ey#_@7N0Fh$?|oSL~2#BYI7}vOiqR)E5=?NGR8tB
zo9#LX!w3C~UyLygaZH?3TcUGuAE7MX;b)`aN#j?~u$HOh!12ph>16TexK~N0Yr$$0
zQ4*NBBpbu-F#K*pgcc8*vT-7a4<7tn>k(SfZK0C!lLFY}rHi`J(fDD6Hr&lI2_KBw
zIU?-E0~`g~PO#CPh@y=O!{I&!fGvKu<$0>2w%5<MrH3w#$w&}=7sdP8p9siU7w<nm
z7HgP0V51s5tATq6U^`U8GvTeJ?8)cP8F&^*4sH$ZfN=pAhupw^0%Wjqt;H*DSR92)
zSmFSV9R~r5)i(By+i>@aHq*FuCCT`a0drf^lAMII$FC}TrlR=9?Kj|AcNJH!)?GD8
zGcXACoS;pG>)CXa2#jX15nrq7-$8KnNJkOs!EF#uaX8(|YnYI}g=4|!23pCy`#Bm+
zu5a5R_-ayjak8b(-mnc3_GdD^dsf4^S(>4Rvw;EZn?5y3pP8&^PDJ(0cFcq*^K!rg
zj;D&&2Ao~+Aw|zThwtikPAy&lwkN~0kQ4U{*tg6D-IZ`LqD^6HA8zUkKMWaeN>zEQ
zUCsEV5!xIHQ)Rf>zD?eM%bzlvd@~ytcQuy%gRa5}CD4^f(R=I%BR+Qe0&k3Xr>aq%
zxo?=uuv6r5AF*$F0R;m#>_IwK-fl1@W}@(?GOouf(m5j0aoGJbfP8H95E#uuBc{(6
zO2nl~<uD#<R8TqYIU~Bna~ozv!$V*xGQiD;x7G)Hcb88MQ&*}2$Y;3u5aDhFn98eG
zHDV-lq+kybNC^{j*|%omyL^D!FW|yNu+Tu6z+p(Ct=_J*YYILNW0ib>iZa=^zJrJ!
zrt)=OE;sbff`iGd1Zk3epUZW0mD~qXM~aGMj!c5GhuUX!a~$wqou{#!>#z=9<>r*M
zhl5lPFEk;Jr+6c7W$`KeJL}0A3hd^1P|FN#aF(@z*Jpq7@>f{Q-+=FGdecY)%f|cc
zGu3pZ*q+~!jt{P*!~$St@aJpbF4d4i-Vxxq@G(#)&Ru2TE+?|!HYCnTsz!v6Um#u+
zayf5k;Zj80WsbE4>NE6J=Uvq_Vou$aVfZBjPOVlU&0{bIjvN|+`U6ym4);i$d^=;5
zl8bYIT6h}LePA9c*N~FIZl25WB?uFzmAl2h^-i8fRp;`Sz#?IPaskTjaN>(07!Y}T
z_yihOKusz``e2g?5BUYk|BWV<sL$}PMqk?ZjhHiMm5gSMl6kWdLTL}IQnEZAnYTG1
z{#vCtJf3>aGkw&)J^%ameT#-(PJzMp-Otkqk0I^5i`wVG7v7+a1fqSTAta}zmvz0G
zx@VTr7Bs@Nhak;w^QPeHA8LcS)x_n+c%lX7R-*;Gq4sKCb9MXu!NqA<)M%YBV3und
zm75#k7f1Tkh|eFSvvP64J%eA}Y4}N8$ar_EExD~ets##x|1$v=ZRR}$=>Bl?8&R9F
zQDAUBQkEKmZM5DHXx_)eK!fOAU>S|F((fPWdq`dBGx`|@J}I1-@(Uz|-~|$yYs;4p
zP?{jEmJe_k@#ausbpe-9{QN{BY_##ctTY6b8PU7q(mR~2x6xbUa>4bz2NqY(fpz&~
z`Pw;$y}p<7XM+^%Ed*sJ-=(*y9FbhkM9Ut)EP;M^t@7vm$eSa`Xt;h4;IzueuG={F
z10ye6$BTnul#1btR}AEB0~>IYSP%d>`?7EV&KS~9!zzz440i|7ui|Lg{IWE7+whCZ
z)KvSy1-Dw{k4)lgK9*042BW)b?k=8zn>I!fS&f@*rpKrhIO3j<j$%<18K=x81eJW6
zTlCvZ2}7DOR00qFGel2PsdSr+HHNlbMTU6WMzUWH6hv+MFXV)Mv1Oo5V_E$G0Jku*
z6vU}9$Bo9!y0$TPG$x%lrq##3J%t*Bjo;+%;v_WYRvM}QG8u{34L#pZW3H4M=Qgy;
z4AXN#)p>CYa}tJS=W%I(d7$=x*1&c6${V<YYBJ_Kv^_{aDPhI*?saU_#qFYe-cp7*
zaEDzbL{>@c9gbx?z6Nun0fXOb!4DLW2?jT7!vVdMd7mSsy0j9#AYc`<OR=%Mewcl)
zqq}(6c#G6Yzj=gC%)Pi!Z8eU|8o!G%uoX>n7Jfz1V#o+Oa$pxNgM1P&ZKGe0q5Vt;
z{T>De{Ep9{SFnG`FI1SoV!yv;`?4NUv<25GG?N}eUQ6SI=uy5WdR3axIDxfYo55#f
z=$Hy{zTtU+)%=V&0UMrH30oH#_yI6Dt^aZu`1`P<V*%h~TnbLB@K(v*WN);3=HaG<
zi8zlM9Xk-U-i=>`D9ez(AQa4vSswQ(d-w?WD1RbdWu9S@^0W<fuOWO+C(!Tf!6t|w
zvcT1GuR(;#LXO+d@#`?XYd@x6py}O>#d!;f7~MyHKW3`fomqFMwlS$ssm(wclZ-Ml
zco}CgC+;sJqd>|)8F06MC$|i@?O<NeI5BEzT$-fkSH;M6zl&V=L%t>aM`u8w|M)-G
zY{}k&C@4A<7#l(>)FZiX%a;>2mT4Q}D8!p#ps?hdD4-b`aNy5woXCn$rg|iF(-Or*
z<&Gxr5S$Z;rVp)Uz;75EX%I}1WCSkzuFwB74z$v-#fQP>gTI)PF*uK}@Y5#v#e(q-
zv;xYns31@J;EK=5mWtkkA9g2~GSR9O5=b<&e-jv<A#I72lmJqr=Qd5I>o&ZO`T1F*
z)q~$P>Xwg!H8OG|rEYIVt;wT!Gj<R>+&1hDzeeF0`x|x<i;zbNZB6mtMRMXd36pSm
zT=6>9ybGut4j5HA<QI~G1rJG*<#oWq5kqns?kDz!r;xCz$k@>6LHRXzXvKF~3kA#>
z*N<cxL|Z+KP3`P9;Z2-$i4OO%RQ%>k07)rr0?`QeM);(V{^%-zWxioH3Is2A8P{OY
z&rP5%nx=k&n$<j_NkxSLz<umat4FW^cfVnr1@H0NsA};>{49~Z;U#2omu1_Z`cDM#
zdqI$#p*cIY(f2ntdE@&rggz`XDRJ~iv9~9q$}UK8s4a=mhl^!&tdGtA<m)YfCl&nn
z0XT>Iv~ctd55RaIPOhk+pOdmwR78^uL<kU+bsFP7?5}>~Of~Yd-(n&PQ)r+gz`F)p
zD4nDedGBQ4NFx0x)j(H~UY_VAW$nFywFF-SPC`Dn*J*D!ix$Gy32p}HKI%7q0W$Xc
zKy&oLpVU0Y2?}cCt3goU0@t2oS9ixg<la;$$J*EDqnnIQ9mV!f0#$n9w)E$=WKNYf
zP8An9x?R(+*w#zHAbVAO8I8q}h2Q>=>rO<_3s4Z~<DoU;BL3)gAPyXJ&{4P`0K}0l
zu&onO9WFrX1lBztj_aO+>`d!LWl{XdE%m9vD)GWHsX;2})g`77EkFAmAfYFLnGHXX
zMP90Z;z_OA%61qR_zZ%L`tiVxkQjqNQW`WINYtgN2;xVtI5yYR#-;)ZoG<!kZW86?
zgMz-J5u#^E`(+UJPI5fLE~}r*I^3ROK$tYCl1G5inM1^!9Kd*DA}@r??>oe_kl!}E
zx%@H&xcp{;DU!MTW(~@(ljPUI<<~YSzghkA`zz|=S@n7++-%m*94fmfi0)sL-9_Zz
zdu<<M7hQZrv)qNB4y|BsZR0&$NmZghNP1Bd8i$LhGHCx9KCaYUuvi5<N@hQBc~o+B
zlW=h4!QR>QBWwdLK^HU6c(6C|HVx_X+~~y##MBNjwGC{W#ex8!U-rv_2%f`c-ZdNn
z9?9$?rikGy4pF`PTjGc|ZRLf5?jQa1Kk5GANJPi;?guAc+xMgTsHL#!e$z#UrUT@l
zUk@R~%`0pr>eJU*SrvcV*kb;6urmJ6U|#;tVukd+o!!o(PBxvtbJ+F#J(W%1?`dol
zf6rj){5_K;@pm@s`){fypLO&1EcON7@?np@&ci<8NyY3ef0wdT{Jns^!QVdC!r%9?
zKl1ky_Iv(b%6`S)%h^u;Ucr9G-$C{x{$9;g{$9gm{ubF2{Jnv#<?oH`+jtWSd+Weu
ztcp_iHc;?h9&DuGJRT%Ra5jqvNhz~idGKipUeANiQg9p(l6Mz#@Zj?lOyt2`6ug41
zZ+-7>3Vz9V!KV#efyp~X%u|!xiTo-B=z%u@f>W~iIkp9KxdKxDz*E-2p~c5j{A@R+
ze65g8IL3$jHsg7=7^OJeiA&-sqLGr}PFxyK`IeEA<xX54Pw^Qk+3v&@@s!y{iqoAK
zjHgWFDeH3Fd8>JfpN*xIerzz?;102n$7F12!BK4-+x8-#XDTy{`TiJ0`8+d<8<uH$
zYQayceV`uCA1hksE|SRi^oyqS#$j_yFgG+Wk}knT(}63p=2J2J=k_i}_Y6IjgGr7*
zevSYq;Alr@zR;8~tQm*>4w>w~vgF|EL2M5m)sYTw!=@zusnulPX~|jp1&$gXcJ`mP
z;O1ORfv%Z3kBC=BlG@*<S9f32CNH8!o8Il8I3L3uZSGTi4t;{pdTGi#3{&2@Xx0QY
zD>`N%YF#vB%8Q>2M2l5EUB#JHTgXQ<&Ltfiz($y3&ZU~;WOy>}!x5+X8-w^|UyI)h
z|Jje<jDDJr0nJZv$M6!|mo`A>G3+D2_E!)YO6LLp&HHjJ<m}aR$PA{&1$PN|nxy}y
zy>9`CvP%DcVFnoyoiWicZ{synv$-?F%)lU^SfZmKNQz1_3Wz}Pj+a(+aIghNHrwvI
z)@oYoZkM&K%<dot-bze2t^603)k{N##VW2O-|so^3=F7k|8MvE{@?%qHTrPQd+yig
zJm)#jdCpWc>V)X5Am{k7bNq-}K@lAn>>LWmfzeqKrvk?tcuF?xoD*Uv5Zd25tmb%=
zyC$ga;(j0`j*qMgMqeSBuh2n=bmrpzU~=EJ+yf6v|2??YQ~K{9{WsmU!QKjgdC>pq
zwEF`0m)OR&xcO6WzJdwUF5g51W!WX7U5jx+umUGVxG0^T2K9XIFXiSdi<dZMi<e|J
zPXSBY_oV1xyh@6vP;sZIc+w9~b&h)|VXKYX>S=h5D(h~R7UQ<8L~;-h@GQ8`hIe?X
zQ^_CZX?$+Y!Jh{K`v7C9c|)Psr(#A>)%0MbTQMWpT`zGru+)!srH*mg6_$kxa@PmD
z8-l3}Pj`jdDu%&(s#HQe;tJo2E?=Z!MnNV5lz>Qp0w4o$fOeF}lkl5!l?nHqgDJoi
zV79<)f!PYP6=oaEHkj=&+hO8Z^uCU2X*H_ONm?cCzUJ_BQl%FGascZAnD>j9Ksi0t
zIM6QE-seK|GO$I^9R9G?yc$PQrVd{xjO*@%{y+ZkR0r~Hx*xf8Ui=U(y%koZ<?oYA
zVxLT=J~@Z7AOr>8+6H?hEH*&ZbjjG`6*DC6Z&~Yo$6D{N0ZCKYd||r#>f2!VcdQpG
z0zz&L2!|S=hQ2=gR^tASdRD$E4O2BB2GV{IW!MJT1$Y+l65tKM0l+B$+Il$JdN|BT
zn2|6eU`D`Hz=W{qZ^B_hK=n5=m@=4Bm{6)8*f(MuwIaQCfb6$6ZaBc-#wa&hAfPYU
zH)<Qu4`LY6tw-PaCmYP4hi^Td4ADZMK}59Y!RH9Tv=9TqnGx_Z$S!OX)A15#hY&Fk
zQ|uV1xd!JzA!DbXBjsuEobuid`l&j(1LPHn$a7~I!G?f?MA8)WTwl9z2jXOSk1@6V
zzW1p`rdTzYUoPd3AnkC*N|)>MB621Y?<y8CZ~#p&B|_c5$e<f8v_1(}B`5q1rpOiZ
z)O$W?Zp1X`#i6T52yp10?FuMz=ya3-m|6#annQ<!s?A~oD|;pI!w!}JPQyL>y$kI^
zk%D$p-F!Sye%P%LK}&nBKQYQrQ3(aW^P9Xk2_w2v6UMXj-N|Q|#w|ZbFB~<2)?d$j
z=zl^0#`AiPvJiP*;=6cE*hc8Pizt$02)qy@p}%`(xU3;AlH_B&1MwlPj*Ea7oCsq>
zu*aPRMaw|}%qZNam<Qo(Is$iFw_-biJ5}<{xNQlh0<H;n4&KHHVbX^&35eRK52Nh|
z+({94*%5HH3)>(}k9RiDk^4?crt<^4@N3brkvTr-b1W7eUt*4r`W!Rin6Yy^zEF#Z
zoNZ$Ab|I0uZ-e^|`UApcj%fr1<7e1~o$&0`(-(B!KTIJ>amNLI3NDIGWSfYg)yeI1
z^B}a|g3~X1=P4xK=K^%nJNuR;qluK9*R+Gmg>+SRA%&7aknyC&rvsMZJE(l{9Ap;^
zK2OM$bufSE0fVP7(&vuO_VqUlK=)?552DdQbbI5y^&`Pr+5lAw5@*DY1SR%v6PZ!j
zpM4Ayf^m`?c=THJ2XUYs>;w%5j&2goidzr}2g{jsu>7h2VEG_I1|BTiyJC7%{HlSC
z5SC2@0U=5VM|?oGL`Vqp{X8Wd?r-~&syhjE*ZIdG&dfNHmsNm$;uF4=VroN5zg}oY
z`p}O<LIzM$C=~`hjnr@_RoGZb7DoG&wM@ji+`X^85V93yX;2z&ScVA`h?6FSy@N9>
zY-RI?2;s11h(W+~5)a1cZJEk{^Lr9bsQr*u`X2P6_bY-xfru~Kd2AhdI0U5UfAD||
zHtY20#iULCFXG1synB&{XO}3@V2-ol%^=vsXE3hu&;%~MepA)iDdJ~H&(CM#^X-pd
zf&oFKjp4XV+FC+g@m2Ev8g>;SsY82Ecycq7_g8rA6X$vC<K_tw=pgq2*;V5Hbcq2s
zALiR}5uSUr_uU11HJ*zXUv@yKiF9{?ZY^~3(eCx*rr=3RGe2(1>RWMZ!4v*sCEk;#
zYYXdN#Jz<Z#d`}0FUo|Ogipw_1QzcrRP1c=i3n_}Q5Rgb%J%e!A6K?cN@c)PzjMPq
z^TJJYWzG<Gm7y+W?&}X?KzRH4EJy^RTe8Y{Y30iB`E%_HGBPt3;)X(Jqo3Iy0qJsL
zwX_INl@l*O0m_naKCS{m7nyU4P`j<Ch{sHP1J%1q+evMU$P)&y{WOr4sWgHQ2O%H4
z{t*6-+lW^#T2iV;0*&LbboZ;zqUb>zZY2IQ?q%l5?7{-zNrb^Dz~k8WAA~<VppIr5
z-n+&a4yhV7!`tAxe5<pMJ2^7g3#o_6P6-^rSOq(B%N@v**e~VNm}Q*&J`*fB6q)3@
ztO9d0F#@c3aC53cEo<?5`vT@9Bd5{u1G>URYj?ZCIS9d>16U}jWr0&VgR*#miUU*x
z%<%q2a9{Txk-ri?`$Dahm&xBc;%-)Xhv5<z^5fN2M_kQWu1iDVzDDA1R=R5snUf<*
zhN93iT<k2q*(o(2UOgJ0QuY`yv{FaT!RtFprq39fnZs$Z@Gis!KlxuWBP1W<%!jJ(
z!G!MIxEpu3cLzDG?xtYAZyA^!5M5i-7qy%WrvK^*f)a-i7ZM|b8aNDk4rd0*9i3h|
zTp;JM0LV;I58R86MS})c8p)lPT+Hm~(SbNq@J9N>sCsxoV|CZ<d~7?rkg_R+9x8W+
z=Byot0S8q-&tQ&YVD!*ML1fgwVZX8-!~S~vm9}l5ef_j?;C@90575Ta$KemNg2F}O
zPXZtZ(6tBosr?G24tlmL?6vnRtPI!PulUmNBB|4WM!-Qp4PYN&4`4R{H15A)ze1UL
zI;qm(fJnd;Ko?E?e{8?9^$E(C?N@BDUT44ZAj(2J8id%o3-*J6R)Bwxan1b-h5mW_
z6_&0)tuCtmr}itpv=flUEI=w?5g;3o58wg62B2^L4f_?!%+t9Ye|H1+0gjT3e=qs3
z>{l3dK>LgIG~rF0z7VUHx9^}AxZGDjon3Gd(=W)`&wVA>IsAex0Y~E?Eq;rjc|p*$
zS4nZO5#fiY38iGmrb7nG1ZXBq+;NB}32DNIAV99(aAeeD$3gl8!qbJ9!L!dG`8!6j
zF)AyEsH{4;`?egzgi?ICvE{f6rnu#x^K+t-d+j(<5db@m=&o?$j${8r4BPx1nSgOr
zpMbptu7t^iBiKTa@E_jD{uD|1if|1ffO*K6?H5?Hh|4B5G#HS(-TcViGX5swEK45i
z?8Nid7cUbfiTh9VZ1!}ipHGMbjc%e1gsVxvhuDd8aKCP39Crmb=|96#wSzv``4QF~
zEKWsfV0@F586KlTe?*A=u>vX}5INZSQTHjuu}YR;S{ek?APz=CVKO_;H57<~n0si)
z(VwLbonud?RnKpoXQzO8{w<uP%2(sEE~HzTD94ud#EOSXTx5d<4jR?i@Iobg7l*+b
z9Bj%|@CxHd(soUEZ9^bDRtX)+bX?E2uB}2Uk`b>1J4cCu@Y=-Q0SG3Z?~CfNA(-bq
zOc%W6d+}WQ=LgU&v}GtoOiu-o4DL%o8^%LUXuVSVK91nz5AC0a4xF2o*Oy({r9;xq
zH3$uIC|O}<QHqtu#X<ZqkBj27>%R`Hq>zK9v*YFr*oChjpiZA8`V%43?te@>nwET=
zx*{i9?w~oXH7}@VZt~3($om>=7LrTwZB&Gl;>NVc8aTI_u4dycvWtyl4|)!a=Wxzr
zK3E*)sm*v0uWd=k)!j<F%gvm(nWcxON=wI+TN&cL^pd%3PtC+#s(sQTay+l+wqP9V
zeOkcituQ=~AaHo381EB12c_h-d1WbifA>mK@-E=H6m+sDv~qYKtmcq@`39$e;)oai
zP6vWY63FR#stS86c1bQRef>gnf4UoAlH#d_bgJh(-iv3C`i1%)39N@4UJ$P*(QuVt
zA=!w@M|j0dUN-YOrErJ$LHl|K3oE)yQ3z`#=`R7D>%T82GAAO16tRSYu`4*j`7iH}
z@io#lF6c{Ysc_D5!VQ$TN@%~oYbQtoK7tG1pjVKXH`v3`ZV<O>2~Q0}c)vid=c2Es
zI#zL?G9JjsES5P9*mEUe+Or37@O@MFQ-p;eY?*2_lF7kqg#P`X3K^4#&Il&$D+>Ag
z7&p}kMjWIKj-;sy*`tq9x;nh1SV}uP*`r8KL_IW1uhK<Ooe)HEha)bk5t*}_s*y_d
zBZ+AUkDSTtCw%k>5&=GEH-|`44{nu|Fi>M96!mo4<kfT|#G`wY`k0Q-UPEz-Pb6h7
zAxsNgtK3bpaTlheZ5O#W;GTgACA3jOP<aB%mAMV?ZVS>1z}f;=W6yXcXbqxvg^5VS
zU3vyvpz6ipkhGwRQ=<GZd{9l?^)~M&Xb{4)PRJmHN?*q!e2Et%gWLl;CyNEGy@H2o
zYnwtOIG{cUbwi!bbu*eLV}7!CHaDU(eM-{#tm<%9k*;?(Jp;@3vr6qRxv|$<o9-Hj
zY&3cQqxP#1yrsmt%X7?qc2w=zKE4jCPmoE2(uI1Ez0|DIYYA8l#$jw7+Ia>RkuLeF
z@b0BRe91LOiun&rLy9#!2X~<ENRK_r6-G!}SSrB+CLWTXUmb8ts_RaOHg3s~C^(I+
z5fqFxdN^<x&tR}XSids)C|)|NEIo-Ak>uq|sEhSE$OKwJv8;UH86l!jezCh$2y!kU
z4WPtlqch_>m{TGY%QqyRq@@6xT4KSS7ACxjNz$4z-F$Jw!m=yu=sKl3!QhinxJ?*B
z*&F~tVf2Ze+?tM!<{3n#6KSXdgTj)FPV8x$k0V*Tu$CnM5j;>Ng+$s)&*54$f4W*~
zAZdhi!nb$Rtc4B}C@~I94u#$5$vlb&mqt)V!&4{(ERe>e)eqiFD>Iw0#~MMOrqYuT
z*TSzW6e|yJfkFsj7CMa$85CzSf?y%_C3OM}SYX{IVKC+v=1r5gA4X&+AL2=FtVFfW
z32Q%w2h_}0JBV2&_L<d5eMVa$_M`PcMzU^lN$s#h{c1CsKe|LRsXo_Gzv}_GV($bs
zdo)3DQ5Hu&IPXbT;2kG#pX%SE+3?m;VIRP3yx>%rro^Ac^nw#T>NE#V8`I&maS5CX
zm)r2Cz>Ytwm*UTcB6zHT+r~n;ZCnGljT?)q_qvd#|GB4~9^?rQtpCNQ;gzLrC<e(R
z;)Yh;V^H;gCpiyKK8%`>(eo)N&vD#cx*ex)p7-2mH&!MK=JWiZ$>-^^{LPq~=t9C|
z$pS8_tii1~9AipOOg@g6lq9DoWB=Rgakh9$TM^)gT?pt+F&}g4FMjB*Ra7QJ+qKvd
z=irwtlfVJ7=bytIn4EadK5s62nM=$8np^zMhAYL*!9P6ZL3t%CQPPA*RcvEiB5Lcr
zF!5r9{5&gR7gLucBBAvt6WV0|h8FVCH+%_hFhC|~s_?j{r<~+?d}C<|By)fSJ2y5z
zhS=;(l|RDv_P8*zdZMtnSM)Ez*y<G>f^<uLwA2WY8yMI!!40&4T2d|vKHA1>Mq@#;
zkLX6bFe4acMJu<;_lAltdbmI~aYkpdf|r4clS0|;yOY6v^u8L%U1bz1+ulQGp$t!`
zy@3)1a#0h+60%BpZ#Fr@`7>pu3aa9o6N@vOn~@DBjh`yoD^f*RV%gmZi9Jt}gNCr>
z%wqiT;UG?S5^-9`2w>dsrJV<DU`T$Ly%VsbNTiIrUHl4;t)y6tZUvJPF(#a{EFJm<
zhMDwAIPfV#Jz5Fq^mZ`>nAtX_sw<jWFpHKZY;10}3u$CEH>@7&>Ep5(t<Hhe#CD-T
zY-6Agxw~FU5A!)sP)lKG^udZ9<ZS~FxsjIJFTkbE3l*XWGvFo;^cfLD8KUI4r&Nz7
zTu1&xmQ)&9I|{-0L>~jcHE%*&RBCZPWUeQ!8)#1^EQGJaXhR_a&C0mS_51?6@H_;!
zJ?%5{u=4yapN-N=3DUn&7>Wda>I(+IO7FPhnH3-_ytqV~R54PJqEGSeqF=Mz{dpR(
za{5UWzwq;&NTd!G+HxPV_j3y)39W+rF9>UjkVmGBy~PC82dS8;ehyy*tsta6ZrxJ|
z19!0Z`g_WVpGK;tq2QC6(^Gbo9QH~hn|H$EQv)rkhxXJpZ-X23O1t-oTtoFW)l<Jr
zokqI_zk2G9ip(GD6R$u$^<Y6(;ivFPQ*}pu;*VXLs-@NQ+w&yz=F$OMT4xa}u(0Vv
zYLjs!=U7M>3XH|QiS2w}`QGG9wN0{qwLLUd(>_PU=ZwFV0=(Ss5T8sN!_x3q;$FOS
zuabBc6T;3_h4MG!G=D5k262oX{Z(<F=+D;#2Y(se09zew_0dh(mp2DFk82M_H}QQz
zJ9c&!2VeZqQ@fB(nY%V$KD^UWK+UQkJr>SEfj9<>DcyDyaZ+D&aiHw>{r9pi4-C(y
zZ*v8U63)My#!!;^z124fM-ezMa;g~F8w-XnNju{#j>H++VH_@x6Hf6OupJ{efGj77
zD4L>h+Sdt>WB-k#P{`dW0&@q_k-KZIh)&m#_4Z>AdQ%nY`;hTms5FN9evg%=Hz|_~
z#i(|Ot2)iByiR*s8lE?R0A)R&N-D@pF%D=s?|?%*{BWR}*V!3Gp)hg`&{&>k7tW#*
zG?GdOf~m@*ULArO6CeXQK(!%d;@siGkhEdAKmimKzzaD7C<21&rG5vA+wSa(Z|TLe
z(1Db4@vKh`Q}(zBiKvk2tmMQ(c!?XmWSKW~rVDr3`q*$0^Y1f(yCE;!wdza>B=4Zb
z7o?o$BRmC|c?MJ4WL*j(-D%7V+DG!rm~VE_J%h&qbD~zzW=GycvGtN!CTC!0P(X?e
z6M$Ykbpnlcv=7$cNb{);BeDCKCoF`Ur!k{)ex&yXaH%^>Kf~Z6Ar)NtUEk*EPs!lq
zO<sNpd6<vM%g@7PckG-WU^8JVC0W7&q-G;|II_ZGb4tGXca-mZ1@vqNFKBimF>|B*
zzEv=B4{(DtPvUJBX-^0X5`Bt#R8cW+0TCKp+(b`LRVRMSpQ^G4mA}t7R`rX<1%v3r
zt6#9$(1=dK`=+Tha)XgV(`!w(<{OZ-Kh}3*ECJUds`?_LEc&qgULLg+BcJuYC(3IQ
z@u)}vZvn!FAJC2HlQ<D9@5C5<o1~gIf4spaiYos=qRNog940e2K+Jl=1vJ<J6gfc5
zde>ewESv&q+9vTOB2vjCFW-%1A(7d{mP$OO%Q7Vd^jox)cuNzKwdcA@13AxMZI~92
zzrmOP5aH>+BmWLC;O^`p5j^^;B8YrE1XPm<H%s21FMlIBon!@~sVxpCY%0=)?Tx4k
zQNEAB;z>N6(fl%ssKu+w^fqs|R5a^%QGgvs_A;UG4+!3xfo%hJlh`Slox^#Esp8gC
zBFRFZ!E_uh+)9B?<CKeDyLu3z!~l^9fLGiQAe;g~M`R>a{6KfpBRI9oXkLkcG#6;c
zN7WD;QAA33T?P{YS1>>32c!rq5I$YVqF8v=quOz>i!^^SH()yjgu`Txx4{uYr=I!1
za!Mw8D$1P_LK2pC5H^aume48j$9yO{14%$24k-G>RVbQ-hD8*;9IEvKvFx|5>!4^7
z!o;PPE)@L%Q1mUmBEKL;_TE8^vm^!9hQWk=!7F1}T7&UHSUR?|2yZ;Jk~6W<7@`KL
zc!?od!qLNoV@OFn`2M-*+DCqQN2jC9WP%A&#aQ$~EA{vEsgj05AMFUJE*$Eopg#1}
zPYxk^t+qY*;%TC#y1#)>nc{kAQwITc4C8dVDHNiOwNjhg#5pgf+47`#69p&8q`V&J
z8N^;>USHu(;B@Z*ymN**&(zD4ignW1?(~j^I>3&Ag%tNRh{1*14yf)3p=o2!UdX{W
zC^JIy1$dAt9eIFKPRX<4E<30}raiZ`1!9{vywzmU))<!rG1aZ@JE%(Lkm3023={Mi
zL_3*FopUL5-Z;|;Mv@K}wAk4JE!-|Rkd@fd$PI(?P@O5WUB3BI;8F+xY(x)d_>$m1
zsf-lkI|soln|V=kV7=B=Le`vef`C3s`qE^2lDI>-3tdX8O*7Wd!}HFwt95TdvUw32
zE(4iB9W<#HLQ7OeG6EDbxb)dNqguBQuRFIQ15(GDmnVg!0wpdSgA);vb^LtqY*x<C
zFf7fNOM@?dT0J8eYSFeB5XVaK<ZfcX*z=^mxDWW_%FAzn2dQuk-&Z-1G<HDJW+<y9
zwb5Fr6alkUIQT3ObB4_>)L<-9i=(+0rKJgbeD3MO`M>$b7~fx%v#kWT8Qn(84jLxc
zOA=dfmFnV$!wy|MKK9^Ttc(-c%IK84liNClmQp`$m@dquwnTk+?Cd)PGrrI&8EDhQ
zw&onPA-Rt4a>X*3LJdoU6oZH+GD*b8v14>Wf%17;r>6;j+S66;F_;pN39|Jr@abQP
z1#a+3wsfugghkkmxj_zA7P?UAoG2Jk=0I#wBUU(Yj-ntu&L-N3JBbZWxLvppU6hdl
zHD-H{Ur5l5kn%U#sua;D_!#*shva+TuRSa42Myoh&VEVW5%O1#o92h}{lOO4D}(=X
z;E)EG<d6GS9d!GOanR}ZRrh<ABF~>SNY@oT4Vn#Oh4I0wr*$r@^Q$<`9tSF+3KUa{
z=QN0FD0TG7)#5&X7|FyQ;g6Lc;^+E=ZN2?Yr+eyZKUbvnJM9U3yYtGG4G?&}s67Jd
z%uDX`o$l67?J;dVWNpjNazR05&f(+9;7^bd<dl_tiTb;o2cQZTVz{1Z9gzJs02O@~
z{W*U#G^u_?lDl>MU^tzDQy(~;^gg_JiCE@o5ST^Lr~N1zz#$9kI>$GHG!f~y`HW9~
z0ytzF`ZBO@#)*API7A6S?@yr_2x>%6dx9`~-p3WO_fqE069z%?5*o?R@OHNh$C5!u
zOL<oo;384w{BuxoHB3mMw3M7+gxP&kRsn*Qxb#2Zs;Qpouf18g1tBUU1vv~~VHl(P
zk$c!cLt&cdA{INmOTUVfUzH>!RT2@x=Ln8e4#5z!^X8QSp<`=r2VVxa6U${t1+UG@
zH+O;}qG=mdWg8b<)7V~-cm?{Xlk%h)xZer&Mf)!{;vU~n_h(ls=R=nn?%uXFm!U^Q
z59erMjhI&^%Zsj<igWpkb*#i*ooD}X0lJ@{7*7HM71Kh<!>9+bN~n9JFrLK=M?B$H
zW|hH8^~^!Rumh#rF2ec`FpK1s2?HjQw8{ZRW$J(_9=YVb3vtpUp0Ao20`(GnJ{@PR
zsE~Q&Ht<Fo5?g_Sx%z|wAz{YMEBtJaylU2f@f0wg0>=0Qx=OF$wTf1(ITUz&7^nsc
zIe|hBrH~Q+kO+mvgF;OR!@U^+yCj9(6WXck(>ZtwLrwDXU(xacPT3LpmLgbj?Op!s
z733Bg1U+=P0(^mU$;(M^B=QCAJp}n;SoO!HNS7(h8RC*bGmT4m8A_*s$t87AJ5`BW
zSEuFfMr4gGV^xslCVBbu_^{yN<_bxC92%Eh!9(~YyisvubsY4PhdIOI$fsTshIgUx
z!1k)nM5uWaxAoPDxB?$oZvO!>mfA$n-W(q*-d9fIAtclp#=lxG>F)`xO74WBn-K4K
zb7q^f5A)cL_mMlXY@?4(pQH{~FlQ;k$D=%?9AwiB3_R~(PpDXX8`TkVKvh8~J1*rX
zwowP5j`Gb^L!z9C%Wy|kzw$$C`@}cjiw|rB@G>p7n(fk!gOGXgfIH-S``KKtHi4zY
z@j}%g`QF3ww<_rqyRiO3;~M|k;Jqi#e9$SCoc7wf2F$p4(ESy2L)Q1L8sw2zqz)Jl
z2Z_`FH6ecTY3~gePd}CyG>_3jS5B~+VN*3Zv+X$JtYcKR<#9fZ1H^kr1<-iDOJ{hz
z69vd{C%0f7Y6HujF2y{B(G9jTE*D;rZ}wmSpnaO%qUpI&dkB}&9;%hpAfd`xLsZ^+
zjEVsm70cZ}JuGm@jFc4eS7giGmoPF;;TyL8ynK0Ozxa3?jzAR6FHs;o&sBQ`FKdjf
zP6}qJ_IKCdlByyvjGfujFe*nlccKDPM{J-#Axryp2g*V=Q0Dsw%EaaF()KX^uh1B>
zyi!7grJV)~SuVjc-V<7%&}TxJcM=VrP%-dkHhORzArpT0K5Jvq9ghoABJo{AXc!Hl
zNRPalA0WNZhlbFAV6SYshhw48E5K^a_tQc@co8}S`V$yG?U2)t|AgbPR;rqF5ysuV
zO1?P*7AS;jUIY_N0eVpjT)<Z10)C31ARk1%2an;y4a~ivD=ETFZ=szax?10*BVe>p
z#4-@ly26P(!cVY21xeFO#-ZJJY)E<!Oj4%zfH+1Qfi8v}iUR^4Bc>)}sS#53?!j$w
zx-d)p5-3J6;*@O&@Q-h6umR*K)*(?b!u!b6cQpJFtd**39c#rPX(khqOR4%9R4S}T
z7ZMdNh)TBNtfeCJN<(5JA!lr&`M#Bzr|T0t72dFhM3NQcDl$8(6PxUU9I{=sN%oO(
z`-@qffvom%E==iz&Vd(eIa?^_3^64(@lscEr;DCTlT5CA4XM<;jXy4aMiM_YiJu_c
zOht~w*`N>xTY$3i2TEA7&BUyNt~Kw_3$-#{hLky^{B1*GJCd={aTBETBk~mV4onna
z5?};C;TCMp9j4NDM(MYDNBYpYcd!rpd&6O&YSAs~R?Ml_kT4!=dzF|5=34gj{6;gc
z!umf2$4aBD#Du|S7cs0HP`rGz4Sm><*aBzHdmAi>$9X5f0$<KM!b&CQ<yH;~P57ne
z{qoInF#=_Z{2G7@VcXn**W~)kK(B-DO^yT_422Jc!7F(;lqI*pCM`=wb%Qu}aw~Mp
zgHgvz`j)osR{H&AUT6<)L3W(?>D>xGRE(t%cAiD!_96L{n}oN}O=3gufUSXxL}-Qy
zF!()I;^-5W6ZNm-261&_Bd}pBcyBc3PGP7~GOIvO?nA_yu?K-?Cu8gc@#D)J?KGMx
zI$|O2H6rRfhO0%8#5)gH#93??ZbP{;1PT6nxMm)$Ni2fF7R+#v4hjD>0eX0>1!s+5
zdLSAdNZ{(;9^pkeHE<+_>)nZk04rH?r_I}!mH-->kYzuIU6$?><l4uBx2#6tO+QZr
zd(bZfj|OC58FU>AB5ko(`NO+9A$Xii>8eQn(dGCtsUjH~lwHW`LM@j47cer=Lc#pq
zdBM0el8$V4g4|&fSHQXCP+=0vR%Ub~0-p@u<`1D`=N~{(Bn{MoXXU^I_rIlv<>n@^
zFm7^UFDyKUmC7J&$G}2j7@T#Wn+(EqF>!pqcp<S91yG>?Z_`YCm9t@>l`5RLuGciS
z!5PvwS>cuR1p_frF}A^6%O_ZAc=5O3EgKkP@D(h6!JscGB!}S#@#hg>)(3g9uTbm@
zl3>2jIOq$vV6Oz|<6<HPXDFu0%NW2Ygsn1DkZ<0N4~Xl$ih9<JtwnO2O<qpd<jLyd
z*O+VNo6A|47A%YRu7edlwR!*ufYmCzS}xzb98U7L60c}GljP+S@R20nJP$@gqR@GT
z3^og!Z-Ns&yokmy9wqdl=(nG50EG&No8jPpicwxp@6_f=81vE~+}6g>DF(Q_+zAh4
z&acD(k#Bwu1uQESzI**`&Y3|qZ$1MTEbCNGItE8j`Mq~x_@k`yU)y2v<-hNUFMoM?
zJY2;x>=YeQ3}m(We#CDML4N4b@gzQGy@Ef^p(yO9r)Vm)<JbTgu~G$<C)uc)mFkLv
z^1NUKSs?a4D|8JQYpf6ASXHf}m-jI=4;9^ql2B~CG+v!x1x;fRq&Q2!=wb0)h%ae3
zm9}jB7=xTt_V`}Spy@z^JZM~%Op|=Yb#|kQIEU8^LDVWvx)n8NLtUS33_Dx_p|KyG
zqcH<y5bQ#v-tTcBS*c5=^puJy#dC}eru7V|tnQk`KD3gD$H&3r_=+$MSe_6PAe4pD
zcT-{CtzvWd+W9E2pw7oWLbEnMdKuvip7#Q($@CIcN(cD#-{S6-;u2_sI;2ReDV+{B
z(J3EEn1R+9A!Ncw<O7Kd{}=hxnv4Zij5Qleb)HRJtZB)tCS`^|k_Z7A5C6H{4K$QW
z&zP_97NI}Vt2BC{_sZmK;vpw~1`<b!=SYMr`CJbn7CZ?kb)hy8U3mOsRHqKXge8bB
zF6wjV(oryufJX?gqD-uGVnKzt?lRs^2f&|z5+jn2;TlF;2<x!~QZ;ardzzts)C9bL
zVLsLta8+=}=v_K{aJCEYzywznZ%1?;cSSI*h+xw}^UY-_%`hQ9->#Nu8liTjzm1yD
zVl+cr4#ZuEJM}jYF~yEymwhBHZ&A7s0TLwdHqazO7;Koum~ETOkOZ^`GX?c|(RiBl
zJM<#GhWUfD1T3N7(HHKn5--Y1$8GdL5i5zjoMv$jkCSUKbyn6<AxQ7Pk9?6}KZ7cx
zp78y!wwLc0U<<>ydQC7SIlN(D)=ACv&~M&~rMNS1YMPKk?==uLGz9|{7X%>`N}ux0
zEy&bQv2_Sb39S&t*4li6d2|R5KPDDAgo<26BaQq?iwKkVdQ%LBldgUHdlkwq7K-wl
zONq2gO4~Dp!>9<IAw!`~`{av~R!|Wwqew4zTc-+DEAE|2n3xKR-7aK;?Z9dwcdu%b
zmX)?OA!g|T??{11s;CC;d|)_NVzq1+h~F>Pg}&ZE$<a0$CVIS<iu4Q|NOuT$FI__e
zr_j)(?c3jj+yW<8c(@)zK2cye8B!!P<}w)a#QxwO_<0VFJ&eA`(^7mK6A4jFZXNay
zc||=MW+Ox)<oCV-+v`LQrO-2QI^Y9{)QK-H;OZJq*k3^veJAYC!s_7|$Cl~krd<d<
z7(wTZc<Fk5*hZ=Ohhiz-X`)9TP!9_5+%v4ER5Zh5l>6E~8&7P$u;v)Fv!d=4WI9U&
z;lWAs7lG7_Yd>atSz!jXvN6QjPng6CLxc#s&e`UD(|md3-RqHU$x3vBLPQtB#&-hO
zsRXn>W%GNmL`cG0g-VKVo+dqp!8CS19t|KQc#Ci($4}=7Ct&rzr~nqRvvsVqjh*LQ
zz$ipk=t_YSjp&iphwucilnll!BfeIeForUw927z>%YhhF#3f6nV>iY=M6u|$D`p%O
zRix&KLyAcOer5(@G1>BA*CPObq(>Kgyi^j4WwP4!q+2yYlwA$>U6Bn}RmFj8l`h}A
zP71D7*;g)<<#>D9Wg>5QJ4`t6(_j)YGl5LdFC)nW<zjWsl)5}&(Dgm8YM|@0GS}gt
zih<snd%A9N9S-&it}N+BZ~tx|*J#&f;`Td3*%l|Wj=EqxS3_#pk+rYvAf$nN+42yx
zq9^LDUrqxlB5%k7Z<wclHjZMM<aHMVIR|mE7fZ*yz%C2Oa4>`!c*TYxph7l)R+T!#
zu@wsfxrR>n8in&n4;;T!Faj~`5-}Uvvp$b;$=(#hE7!)Md`LZ~^wi>cF>hL4!eXd3
zeH3C{skb8)=c69Rjl_%wcAJb#&=3=A3|JdK8&&&RALF8dc#vUs60mI(rrs8iiCozg
zjTU5?TL-(Req~Jv7!1oR6A#N@si9N+SE%DLyN&{Tmn#s)`~xVN#G}<o((3gpJmcNI
z!9>@ceKa@d42hJH-Bot!h5a~lt{4b(7U~VD80yB(DX~2c2Sg@k`})I3#F*L1PeDrB
z_h}R1z9K1=daigSd6Fe~QZ*bgWS!IEP#!O&WZFO%bHZC-%~wWNC!WE2_b6%A0m^R^
zF%sr7=!tO5TK}x+bRNYOi?dV%)VOcD@Bm_Gco#qr2|I`sVca}S5+?LS#|a~VBO%#1
zScVknt{nT2QgWFsUTB1qNu8nO_5o?3K0}AK9{|q`5F(MNh@Q}6f#}i}AV+`~FEBRJ
z(%)K(1+2QX^{J<pKZRF8L2Y5BO>Tk`vt4<?m5B#E?P#rJfzDSmTPiaTEcPnwg608?
zy9OyeDd`D?4kBj@7Mn`vQQ;;GP>AWGfBL|6EGSS6r;2QUd4#RZN)1PY={5<33~@Ax
z%3;{N0V;|{3truFw-0gN%|@W`I;da_aqnGBg5=fTBK`ImGaz!=Xv%D%lbRM`7aS#c
zLAJCJ4~QcAoIEU~K+06o3i#o)v3h-Ikf#qT=?;2|5`~KwzPS$vbG|P<O5JIo+v37B
zssjo>5=TGHj$jNzs)eWYAoMvIh-5gA;!kg$kD&*dZcrB!s~}nDx@6@?r3sP94-&fP
z@VGz_%c)w2w@=Ph4TwJCJOlU2<kQ~C#sxwAt**7f(axJ)Yb93aXpAVk@E;^F=1D#c
z`ZdJUpUQ;;cS)_wXyxC-LHp!Hh&!H?;K}Y9?<m$7&mscau9e8{8$n57RReBJMs;y+
z_aBndMv@Jyz+hlK0)BEOP95Z%HH7;O!a_{yjLMP1*JxnhV)i|?HJYG-M4`FnT-2~3
z@c{mE-k0n+n#Ez-QG1%O@io>_-L%e)S*(vbqlBR-5{(KB4zIzEU7?5b$C}wY*4d^0
zSf6i22eu+keIMm?oYkUtKz<4pi=p?$qcUZl6jdFQ2sj$y7+!A|+edP6Zklib=}s;^
zhmj+>=qWwvHFy$hP}j~VWE_Oj9)Go0X>+^sU5R|zyQqW#Mmg(EnFpLJJf)4)rno-!
zNbi`pi7|7QevYg7X@W%D>U6h*T=b`bIT8aCL7E_>hmv&%X<5Q5Ex8D!h#4rDRZ#Uf
za(cx`->~Gt<E_Oc$*3GbBY=_u_0u9eM{cCJAQ@U5wC^qy&L?#VEcht%ae@Z@fcp)R
zFainm?P9TLm6#8me3xkHKf#t%Bi2`1gopTfB@#r<5KbY22N&pfE1Y9+Y%}sgVt6ng
zDV%_F196`?;bmrJ+>hhzy)Cx1yIUfN;?RDKTf~qK78aq5IM&7K;Y7iW7=dd_KYU|e
z_tf6#y&H>kD;-)61@4?H<YD$@WKfuNzrM%W=~V;ed-u!twqHny!ZGIPxT=9T#vCl)
z`wx=MYcM5-L*5|{Bw&ZPzbO-1@5x1i2ZZ9HPdMwA1ZGIm0DfZf>J!VZD$(JtsLuU&
zm<vp>qeXDdAS}T&ev<T*kIHH|$@&|a$jetDu&>nYt!UEij?-&WLJCRY5)6dE_PD(G
zs`kL}f~4?xB$I}NSUHZP*jerI85a_QM?jvcgO9Je5tYJqiVp7roZuqV`^)=bp**zQ
zbAAQ_EH@V^io@~uhBbYbONt`A2H1xbtME5+%_O+o<Q*q}h0frEFT{;d@cofO<p^Ym
zB)k&&D~Bl!oW$eQ5<Y$LmaJHUt^y=N;JWGte;Lxd%OD12MMz>rNMc1uVns+|MMz>r
zNcvetpsKv*9K9T~rY|}}zS#?MGO#N#2x(t1tOl2(lgI-S<D!DluUJ1)_xd|&EaC!J
z_PCox5}YKzi9W)!+J`#7e;x{%AZGquP*r01kN9c`GKTVWz#r^s=zuIHX2CDN|6VQd
z;6FHS51<}!2JkJQ4~Y0lfN6j`0R@27fC|9FfZc%C0EYpm0bc`xJ2-9#U=m<DARDk2
zPyu)lupRI$-~iwZ;7h>w0O^k$cLQJ~U<$whm=0J3$N{VcYzMpscpuOL2nK6zIA9XM
z2$%=B3$PaOTfh^5X8~^jjsiXbd=Cf)%P$fz5fBZS1y~Fy0;~sA0e%PA1E>Ks0zLt>
z0)ny484j2TFamA|^!^>Z(Z>DOX5%7mw{b6|+qjy=wyq%0JY(b5MRtGtJ(g$X<~y>L
ze4%oMgI7A%=JLvAh1m|}^5Vi(%A(@JWsZ`PsbF+;hg(+c$l@J=e#-GB9R73hh0gqJ
zWkDgO<5)(naLXznhvm5i*-HC5KBusNc{=&5yYd|ff~2{zql=i&R79h4jUC+;udv8b
zz(U<xvaC3_h@V=tj`Ar^L_zIh={Rl`SHdmh3b|s=fqzrEY%U-F(9T=|=VbO<C|Pb|
zfipi}v~pmZ_Ms+JaFRY;pJ0VFF)=ZOetH#WXMvSQ`+`sz7o}3A+rcVRDvAE$WJ`0F
z;)l*IT8p0yA;1Ke$zaIvk3PBGqvJSk3;@5NV2L!OPpGVKSikW81LTT<Hw=mxJmkj6
zp*Ia1K4Ro3<>)bE$BmzG^Tb;wO`dY=)Z0{QjaH{OL>W!dW{Wi@))qG{J|S`XjHH>j
z-!UtB_8j}%c`2!Q!E`~!oeLLbE?%-U>#k+lj^!(Ia`RT^uPP`ky1Tf9cdlNucHKR{
zT3@<hBV)TK7EqVk3v&y2M={ED2bajr<7VUUEKbX5&|(R&&0^(EaP$m2J-=jnvBSZ^
zOmXmOS@}+8pAle>%g--dMv;r11$^!*htg48Tv)8+xc=ze)LC;<QbZT}<WgqNo)PfL
zCCo{Vn>oANWu8H$)%6dHD^O+?73JqH%i?n}WOA}fl&i8ZEVJOw^Nv+TJPq0W!YmBk
z9EUPq>CZbq_pais;&sYg)Va9Wv5e1OH#N+j@5m}~U|<*US<4U;F#=M*xkOpwEGjB2
zhL0m_m2x=>zpAj<fiz%U#Y!-h6&~fM@@e~r-Kvc1E`}3nC#TGu6)<!7oZJ#+R!NCt
z)m{1Pl-bVW+=3O#0wlGXih+vc7Uc4|S^2s5u;jy1DLm!~RoH=;%DbE^@U2`|=qwH_
z>r~}TUWuTq3QKrpe(p*KQm5(^J4&4Sys~h)a#>b>K4pfMqB7mOtZ-Eko8l91Tb5sZ
zi*mWMU>R#uHp8>J3sq3U7dw~ns675N&xHK^<gDBRR(GnmhU(3xcR`_ZMUJwhC~Fxo
z1%hJ$WMMi7G+1DJse83oSKS?A=gmtM+ndipp$iL^Ii~*n_Mm*IY%0nl9w|}zx--c3
z`D={i?<`<g2P3CDgfhpGRV0=c>1d*UqK<2F10u41>yBr*ZoCpc`zPY*DPEBiqiuC=
zG4IUE@9rS#NtOYX3v=Q+ZNH?jfYA1B7&wHz8Di}!m)b<}y6esGDds^*A-XHuu{w8|
zqdTmxjT~!>FmJFZP|I}BOxDh7);><;=nJz7!!DQ4!J3dwqhMw4@Yin_U!?3TJ_|+Y
zFLrsrv}BXM*m1YhQ9^~GQ9jRyV9<fUWUF#9p)lyEziGHT3!Ej?fNQe;jZ+?NuVQU@
z&2jH2K(7@Rta23ar~`#%ZFtSFS;Z@y6tILfIE7{NX*rM>PZPF?@N*X?q9h2tIoJs1
zxa8br#f2q>%Xwv5E~{ny<jGy_F-t^xKu=s4=EKyfQ#lLP?iIzrW(8Tm$j*Y51%+!0
zV$g@aCQKw8JvuB5izo$)R#IgAu#>F8F$epNfSm*#==X4dy&8757{VPoLAvY^XYI0Y
z4Y1?zv&$WKC%Wtp1laqyT=%-lTv(7L_qy)g<cbIh!HT?j^JWxCrE=L_6`YKlc(c)-
z?!tPDMcHnzK=#Ust_l}oaafjfa&ly{(6vQHYl@0`tjF;F|Nf`sdjFdU`bhlO+vi%}
zNuZQ|>R&l`^}n9s%ed};LEO*#7ns5(uKQmw=;5F9&mUj;|9$^+SM|RV8ZZAZkAR@E
zu73~!|5-nO50belsQX`V(9iqlkAJN({hxFDXET6uioidAj`Y=SSCGj2f8y6W{Liax
zcPItdZ5M4pK{N?mWt-gPoA3Q~MP-#|OZ9K=+j{?RA9(PghaY+LvETiE+v89CVf&6J
zckX)X=|ArN)1RMt_POW(vgd`rzWCD1dtcf2>T9pR@#b4^*VOK>JMd0@!@)y`j~spX
zy<?5X-#>BkZy%gG{ozL+pZSkZK5aVt+2`lJ`0^{E`D<^>H{X8Odj9(#+WvmwV*90k
zT<*YS(SLbEbo~v_&)N|ESJ(f)I{$yU{r}m9^!om6L;7D`|D>eoRjZ;)h&91w<2OZ_
zjGvM$>+s`}lW)t;z6}=q?8zJ#2f&^f`#83B=4KbJ?y}FpZi$>z97WiYiUH!BE1V@f
z$KCGCXKCCHTA9*{D=N+<o<wq1@v<D4(;aseJF!tEzuU74m=*a@`W(`wG&!V2=>Q54
zZylvU@hL9F;Zm}AXK^+>D81rbW=qX+7MJ+k(jD0a4&O&A$Y^p-E-YZaDNdi6#Zz1k
z@i>I%5RSrd@aM3}_wiWLu{AARlftu254q1TaTL$FD-ZjGncbUY;&{MsR#pighdt(M
zupEk<Ma)h77L(zU!Bfgw;h0vqHjbO0k~mMRnVK*Q><8qDtWg3K1m!`oP(!hOP-WB{
z4S;q)bD&kwIA|j@6<UlM4!`(0v**lD9mh?@o|nG;{G_ROv1H)BDx0}4LSE~zt5`L!
zu#hsqFG)21xBj|rh~pY@Vk<%HJqD1l)WMHlJ1MZa!Oi11oJla#|Gf{qJNo&*5BBok
zHpWKYUH(S{{42-VxW@s3{#ye4hwE&d5)kO$JO4UUPyfb%_!RH{=$`(8`IG-Ji|9}G
zugtcta`w(=yHyP5uV-)n6EWBK|1s9a4F!Lbe%FiNe|k^<-sSvwW>5d#`QMTJ)Be?S
zy6d(rz<#<{d(E5M9d2=ey?1_*3wq`kn9h+58}})Ie*XFf`j5EN#*GF9`q%U-$J)%E
z{(=1}1Almwk4NlJzjyhD=3YNO<vVF*PygQWZ(G~bKQMoaAM5&Qe`Q%u|K9x>@nBE?
z-swO0@K5_EZ13scyZo>3>gnHmUY0#A`g8cb`BZnG_b!L!xt{6t_Fquj)4z8;FCT>d
z(@T_#_#1v1W|Qxum+{M)%D;A|GB;?3qrg!N=2E=KDU0We^AlHtcf)b-z>lZXhj?PC
z`%fUUrRiC@{Pe=&6mW9#9pcK!J;=qgvl3r0ERTPbfQcTEXi`=|c0MSGHcB<QFx#2$
zm=0#`Z18Ll`i{hTvlC}wb<EBO>F^<!Nc{WwVla-u8cf033)VQteHT2-k+s@!mHVac
zG{tPvIc~HxCEo$cLK%$ws915?*<c-m8j=PD9;p;k-1x#(t5CjKxdkYUKqVK`!7&fD
zgqhMv;j=|YjypwhsPw7piX5Ct^vwcKvxrE9IPNXbQTYzEX|D?0DoyqC^19mdPb_~Y
z82AN#5`>G9&M(Me?UkLlb{R-6)E?QfBaOjQl<vCT$Af2<BsjoPU*RaWqq@|QUs4W4
zsW3(uw7Ui;f!oQBI=IJ~T|CxU$Vy_TDsVNyGpPrN&FRRVS%8Bu;^*O<FVG#dh~Ir4
z#f^){anc}ajX8<QWd9hY!8uB9HXA{pgE*ZuHNOM_#M2cGefiE*^knZkchS-pD`E@v
zMnLJG3uv!Y#*Cc_N~c<yj<#kaiaQ@X3*1B>qYz{3Wt7=>0@1ri;tH};igF9YZoWN;
zGED5|bEfcgmQfPNy-j&u?ZMq~ofzrdJ<{~tY)5=fR&i=!GVzV4t>YbB?X}avX#E50
z2XPMJ%}Z&T$RTGfkSdw$bQG_%JBryE4Gs-hc`=ukQ(LFzE?emvr+*G;8{Ys!<IG{>
zlM#WbIJ1f?VIvnd?zfV8eE$4`H6VGpU91H29AbB*`b*&J9XCtaha%9k4+VT<GK21q
z3!0wqEXkp?r#Y7|cNAl$oeiE9pPW@Bwj+AtCP`OYq!#)ci2FP+6xzZn&L?VnnqP=#
z>*<0p0_8u89mR-Kj{B6x3FY2(`1drcQA+MTC|x`kpI=zw@J--N;%M<<r#SAhfZEJ)
z@<mRbM(>s$q0+ey${_#?to7kM$}|qAj6fnqS;da7+RpFkf>Jk93IXFNEvq<}j%nh!
z9LYQ!D^N-t_pTT!d(Lw4do0!7*PS$TIqndZmu1Uih~DMIIT~8&m*4-}El@)W0`VhL
z<WTv_tMHitMlkF_0pGo?<WKO+@0S+%xh*jJOWW%&41GJ{@E98#Tlt^ijR63*QJpRl
zSoq)k(KsCf@Q+F24Uk<5hy;WH`U4<`!u16}!h{P4$b2Tb(Ki)={Q3d>ev~f7B@<do
zSh_S_$Za5iE}Ichexm{8uJ?V@Y@_dZ-#1V?i!;yXp5ilsm|6N6Fez^kpe)`hm`VT;
zF65CQ^8ui;Qaz|VE&!Fe%x7+bN&apC`IiGIf4UHP3*ZUg_YRm;-dzC7?~ecq_X>dO
z^d5lxPXWk35{*Lb<8L!qyKqAgeFXgc-+t5Y<^S$&_V(}n{m;T*&)=WU|2$K1-Je)j
z<#m7mGuq<%hZ17_uFn+zpHY9R#dU{(ZzaF(5K#WlX#>>czxhze84NlsSSs6v1#9W1
zb(==}I_K$6Mazz-M6>J<O&w&jZE!JjH^SHM{Aj0A^uFqE8RTE-XY-ja|IF}lzVLey
z{@9b}p1g_s;z{Ajg<@g>f4kD(u!F@QU0QQLTKticTk=ufN1A|;qP6VA=}(%#Pg8FY
zW9EM&^6uh&A^kY~s)+xh!`7SPdZh5Lep5MnmzAFH_WyFcc*E&C8&`DR##IcD;~qu+
z6rN1#Yoc@LM{8@lU}H4KQJA!5Z-+^1xeO*v;xk{_*joH7OrkF;U=D)02qw`q<6sVj
z+3}@~y9wq2n8RRhfl0JNHq4PQ6JU;l+4O~tQ^MR0b2Q97=WOhiGzHAH_~u})gVFlA
zjk^bC6HFRxXJB^1JPPwI@OOU>VE8aPiqfSz`H&Jv?URSTfAj~ul?>Pl*aD~klmlFV
zwSXc(4qy?$4oCu607ifgpaM(*OazPrC;`I(k$?z*0uT<60@}Yvp8x~^g>Qm+8qf$h
z0C)qi2e1pU9k30s6|f#q1n4X6?sMwXsi;o^`h3eR{~R{@el$jc5Rc-L>HkqXDMKEh
zZoKA?#!2AMRV2o5JujYT*;7&jz5mm8d&0jKzY+CPKv@`#X@BN{b~@)EpdXDzGvH1D
zjf+PBF9S{jegF(a!>9nW0d#T5A14}q8Gto_hXF4EP5{0K(B;?L0Lg%Sz<>AOKNDFA
z?)8)Se*Svrx8c1uz#>2@p!fKpiAZf9q*iE0XqRYnv}M{Y+UK+{YHPHIw4-#hbROMH
zx=Xsz`jz@p{fqjAhCdm`M@@;E9W_6yF6vO!=TYBBbw>3w4l|B1s*P6T?ZyJ5%lI4P
zPUCaN6UIKK!KRU>X{NhPO{N3Z%T`HDWX#x@Juz>@a7y4W<U2++S+zh_qFSfgq^eXs
zqY6{spdPPQsrBka^&EAYI!m3WcBwt;r_?W~UsWGcf1)0#nXH+wxl`lN<Y_82Chc@>
zigvBGQoB|Auy(h0kM?zKxNe|sm~OuAPF<F6g|5GTls?7qcf+74Q`BQo&qg&w-Cz#3
zY_Yy>ZL-$Iaw?8Hh;qEGu2VOtkEoBSPpD6+KUROHzM#HQGeR>*^R(u9&9|C%jZ$mU
z-lP4q_6_X-U4*Vc=hDs7FVg4g%k>`pPW>^xS3kfo+A!BpVAyZi7PTwtji{4RlZ|P{
zCB~J;Cymb-Uoo~CFBwD78h4n|O+}_nrsJklCc$*YG%9*>^t|XL(b>_((aGi_^RLWL
zn7=XWEM`lhrO;Apaa*3YJZGu5d}L{|G+R0>O6$wkzga)Enq%xS565ha*&XwFEN8=B
z4CDP#)qKrDO_pYbW|gKybC0GBZFHaJVa?;3U7BY#FKOP;9Ml}we4sg_`BL+p<{z3q
z+J4$$TBUY^c8YeIcBb|P?YG(x-CBL6zE0n$|41+B&+9MiZ!<(25)7G!6^45ZPZ<7Y
z2#XpKRUP$b^!;LEsquT`72`nDSW}E?x@oq_VcKB&ooT1(Po}?`UNP01zA+7nzB&5#
zXt~*BE;l!tM_E=_-nE>w{N19qF0neSMb`D!`>l^!pS8Yd{Rn;HwO+J_#|(<OIc93i
z^q6@u3u3ZkN@CW<Y>N2}>iT5N^D!^Q)W#f%c|Ydsm`gESZ2wqQY+~%n*ym$kiv1+^
zTr4`%F17`yid4m@_NhKreW4nGQB|m3t-fFVu=)x0F7-1QPy5twsq5A6s^3?Cr2bs}
zow`kZN!_WIX!>dfXd*O2H4`;4nwgr}nheciO|GUu^D9jy+HxD(aKGjg&5OF%bd&U1
z`gIrqyY(;V_vvf(L54ntsfHB8T7$>1)9|w4Lql*>|EOO_ZO2S`FY1dZlQ9P4A=_AK
zOfn^#mY7OS_nRIuanVuH)1sF}pNak~`f_xT`33V{^Xujsv{k3Mza`a@VR^!`)ADD_
zUo3kquUjTrwN{h0&icOfto3Var}Z|Bf=skXLri1Lr!hCij*h)Mc75!<v5&+)No}zd
z=OZxYtCy<_)Vz9~dZXH_KCced+@QHdqt{GB4PBaJn$I*5+FP}Aw5i&=w0CPC)b0Qd
zcv<@<aKJa(ziY?p?7C$b^HU7B8`eZU6tyGjIpYUL!DvLEFE%}7dfN1zX-xE;(eFeb
zi5_kqW1eo#H9v0NY5t4(g1OT28_RK&?2DMr7-{UF*x|9a#Oh+F$7aN4$L7Tr#X4g*
z#Qr{ZN9?n)FT}nY`*!T%*yFKZ#J0qKA4^OQwi>BIRpF|^sxhjGs%feeRfZ~0bxgHV
zw?_A8U862cKSw_%>eeWIRBhDl#=jVsncSw5=xxz|k9J#@S*M_FN-$zh#1zHuiaim_
zxkMhxEY(`ocGW4>S=9}?aXPims+*yk1B_9HUY(169A|jaP!e@HD#SR#IL<iLXfVbD
zx7}kLWU4SdWd5W1RrAM~qn+k~ma!JSWrpP+F}KAg#m<RMk6jeI6g8`keG&CI9eXCW
z31d<~eOhDNs6V!fV>3pTph{BBQrT5|Rkf-!s?Sw|szueR8mKm_SD~NQs@DVWm8&b%
zThv=IKAY6%)PlN2eE_rfYmE$8&#4`+D+PAGU$;Z|wC*k40o@7RhdM#`t*%2CqL0uI
z)sNMy^>^!kqkl&KHD>We{YXQa;W5J>3?~eq7=ohSiF!Y(C2FoQ)A%>zcgA*OhIy&^
z&*o3f?Wk3#CETL0L|CkrWtK8ag=LFntK~t<qn2%!?Ur4ZZ!K+>cHkk-y4-rVb&K@@
z%-(I*?bce%-4QY4VkX8+iBZMqVvI4C7+XwL%+{C(V;;ra?T9hO#>Xy<Esxz7`xUjt
zc99=dp?X;L1aSW$)d{r3SE>$`MBP_CN*%5KRGqAOUGtviQ;k#`i_w{<t<pAW&ugdX
zl5{(D&+E?UzSjMq)9MrTf7HLEKLZRr#E@!uz_7<~#xOW)OjM9jVKkb5Z{A^k+Wf5f
zMe{qT-&d$%U&~#VQ?XxC8TN480vNBWPGc;5qq>N^2dL+(Usg}jShN?k%k_^S?L0$~
zVLj&b+lC{Cj|^WL;-fYK!-pE}(Vs^TH9u*&)0%CK1jc$I=9w5b`W^|^fG&qIS(T&O
zraGefK~tjr1SRjU8>Q3e5_ILdUAlXtc1JZu^)*hw%9&(bWh^%iHO-HnX?B|pX!%zy
zHI`x4B<o+TZv)r&i)o6vJGL_RGNs*!yOJ<gt2U^11HZk4G7rIw9;~@r^PJ{g?M&Sh
zy1(dd(2pRdW0S}yoTav_Q`HO9i_|&leDz7qY1)#tVow0$fbO79rk|)!&?o7$^*Q<q
z;Io7JlloS@!Z5|4GT2f3t!UFX45tm}3|!RkC}or-$`-XWYJHRoxUB}Y;EYP6&A1e6
z|8`@I@hEVE%rw!2#6gfD8xV3bRfT4&=0VL?Q$=)ZG-p<rm1dPW6{9ZOoMX<%y0_N6
z-n_;9pn02l7kcX@^Bd*^=A-75<}>DV<`#3Cxx*~QxQwt2w~Vt)vFI!oi_MZ?NwUnc
z*nuS%SQc59TCy!JOZinJcDLnO%O1;1mVK5t(5eS42Q5b}jh2&^)0Q(>Q_oohON*to
zYg9|EGHbY1VU4gxT8CSe)^XN})+tt%)rQ`fWwl#VtqZJ+tV_}7Io5pZTB|)KHO4>7
bsj9#HerbVUTHu!!_@xDYX@UROTi|~I?X2KC

diff --git a/vendor/distribute-0.6.34/setuptools/cli-64.exe b/vendor/distribute-0.6.34/setuptools/cli-64.exe
deleted file mode 100755
index 265585afc4042ce55c59d28ef1aab37f0a68ecdc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 75264
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
J@V|uu{}<nag|q+w

diff --git a/vendor/distribute-0.6.34/setuptools/cli.exe b/vendor/distribute-0.6.34/setuptools/cli.exe
deleted file mode 100755
index 9b7717b78bbf71f105ccde26746a0f6e3a4d12db..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 69632
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
bsj9#HerbVUTHu!!_@xDYX@UROTi|~I?X2KC

diff --git a/vendor/distribute-0.6.34/setuptools/command/__init__.py b/vendor/distribute-0.6.34/setuptools/command/__init__.py
deleted file mode 100644
index b063fa19..00000000
--- a/vendor/distribute-0.6.34/setuptools/command/__init__.py
+++ /dev/null
@@ -1,21 +0,0 @@
-__all__ = [
-    'alias', 'bdist_egg', 'bdist_rpm', 'build_ext', 'build_py', 'develop',
-    'easy_install', 'egg_info', 'install', 'install_lib', 'rotate', 'saveopts',
-    'sdist', 'setopt', 'test', 'upload', 'install_egg_info', 'install_scripts',
-    'register', 'bdist_wininst', 'upload_docs',
-]
-
-from setuptools.command import install_scripts
-import sys
-
-if sys.version>='2.5':
-    # In Python 2.5 and above, distutils includes its own upload command
-    __all__.remove('upload')
-
-from distutils.command.bdist import bdist
-
-if 'egg' not in bdist.format_commands:
-    bdist.format_command['egg'] = ('bdist_egg', "Python .egg file")
-    bdist.format_commands.append('egg')
-
-del bdist, sys
diff --git a/vendor/distribute-0.6.34/setuptools/command/alias.py b/vendor/distribute-0.6.34/setuptools/command/alias.py
deleted file mode 100644
index f5368b29..00000000
--- a/vendor/distribute-0.6.34/setuptools/command/alias.py
+++ /dev/null
@@ -1,82 +0,0 @@
-import distutils, os
-from setuptools import Command
-from distutils.util import convert_path
-from distutils import log
-from distutils.errors import *
-from setuptools.command.setopt import edit_config, option_base, config_file
-
-def shquote(arg):
-    """Quote an argument for later parsing by shlex.split()"""
-    for c in '"', "'", "\\", "#":
-        if c in arg: return repr(arg)
-    if arg.split()<>[arg]:
-        return repr(arg)
-    return arg        
-
-
-class alias(option_base):
-    """Define a shortcut that invokes one or more commands"""
-    
-    description = "define a shortcut to invoke one or more commands"
-    command_consumes_arguments = True
-
-    user_options = [
-        ('remove',   'r', 'remove (unset) the alias'), 
-    ] + option_base.user_options
-
-    boolean_options = option_base.boolean_options + ['remove']
-
-    def initialize_options(self):
-        option_base.initialize_options(self)
-        self.args = None
-        self.remove = None
-
-    def finalize_options(self):
-        option_base.finalize_options(self)
-        if self.remove and len(self.args)<>1:
-            raise DistutilsOptionError(
-                "Must specify exactly one argument (the alias name) when "
-                "using --remove"
-            )
-
-    def run(self):
-        aliases = self.distribution.get_option_dict('aliases')
-
-        if not self.args:
-            print "Command Aliases"
-            print "---------------"
-            for alias in aliases:
-                print "setup.py alias", format_alias(alias, aliases)
-            return
-
-        elif len(self.args)==1:
-            alias, = self.args
-            if self.remove:
-                command = None
-            elif alias in aliases:
-                print "setup.py alias", format_alias(alias, aliases)
-                return
-            else:
-                print "No alias definition found for %r" % alias
-                return
-        else:
-            alias = self.args[0]
-            command = ' '.join(map(shquote,self.args[1:]))
-
-        edit_config(self.filename, {'aliases': {alias:command}}, self.dry_run)
-
-
-def format_alias(name, aliases):
-    source, command = aliases[name]
-    if source == config_file('global'):
-        source = '--global-config '
-    elif source == config_file('user'):
-        source = '--user-config '
-    elif source == config_file('local'):
-        source = ''
-    else:
-        source = '--filename=%r' % source
-    return source+name+' '+command
-            
-
-
diff --git a/vendor/distribute-0.6.34/setuptools/command/bdist_egg.py b/vendor/distribute-0.6.34/setuptools/command/bdist_egg.py
deleted file mode 100644
index 17fae984..00000000
--- a/vendor/distribute-0.6.34/setuptools/command/bdist_egg.py
+++ /dev/null
@@ -1,548 +0,0 @@
-"""setuptools.command.bdist_egg
-
-Build .egg distributions"""
-
-# This module should be kept compatible with Python 2.3
-import sys, os, marshal
-from setuptools import Command
-from distutils.dir_util import remove_tree, mkpath
-try:
-    from distutils.sysconfig import get_python_version, get_python_lib
-except ImportError:
-    from sysconfig import get_python_version
-    from distutils.sysconfig import get_python_lib
-
-from distutils import log
-from distutils.errors import DistutilsSetupError
-from pkg_resources import get_build_platform, Distribution, ensure_directory
-from pkg_resources import EntryPoint
-from types import CodeType
-from setuptools.extension import Library
-
-def strip_module(filename):
-    if '.' in filename:
-        filename = os.path.splitext(filename)[0]
-    if filename.endswith('module'):
-        filename = filename[:-6]
-    return filename
-
-def write_stub(resource, pyfile):
-    f = open(pyfile,'w')
-    f.write('\n'.join([
-        "def __bootstrap__():",
-        "   global __bootstrap__, __loader__, __file__",
-        "   import sys, pkg_resources, imp",
-        "   __file__ = pkg_resources.resource_filename(__name__,%r)"
-            % resource,
-        "   __loader__ = None; del __bootstrap__, __loader__",
-        "   imp.load_dynamic(__name__,__file__)",
-        "__bootstrap__()",
-        "" # terminal \n
-    ]))
-    f.close()
-
-# stub __init__.py for packages distributed without one
-NS_PKG_STUB = '__import__("pkg_resources").declare_namespace(__name__)'
-
-class bdist_egg(Command):
-
-    description = "create an \"egg\" distribution"
-
-    user_options = [
-        ('bdist-dir=', 'b',
-            "temporary directory for creating the distribution"),
-        ('plat-name=', 'p',
-                     "platform name to embed in generated filenames "
-                     "(default: %s)" % get_build_platform()),
-        ('exclude-source-files', None,
-                     "remove all .py files from the generated egg"),
-        ('keep-temp', 'k',
-                     "keep the pseudo-installation tree around after " +
-                     "creating the distribution archive"),
-        ('dist-dir=', 'd',
-                     "directory to put final built distributions in"),
-        ('skip-build', None,
-                     "skip rebuilding everything (for testing/debugging)"),
-    ]
-
-    boolean_options = [
-        'keep-temp', 'skip-build', 'exclude-source-files'
-    ]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    def initialize_options (self):
-        self.bdist_dir = None
-        self.plat_name = None
-        self.keep_temp = 0
-        self.dist_dir = None
-        self.skip_build = 0
-        self.egg_output = None
-        self.exclude_source_files = None
-
-
-    def finalize_options(self):
-        ei_cmd = self.ei_cmd = self.get_finalized_command("egg_info")
-        self.egg_info = ei_cmd.egg_info
-
-        if self.bdist_dir is None:
-            bdist_base = self.get_finalized_command('bdist').bdist_base
-            self.bdist_dir = os.path.join(bdist_base, 'egg')
-
-        if self.plat_name is None:
-            self.plat_name = get_build_platform()
-
-        self.set_undefined_options('bdist',('dist_dir', 'dist_dir'))
-
-        if self.egg_output is None:
-
-            # Compute filename of the output egg
-            basename = Distribution(
-                None, None, ei_cmd.egg_name, ei_cmd.egg_version,
-                get_python_version(),
-                self.distribution.has_ext_modules() and self.plat_name
-            ).egg_name()
-
-            self.egg_output = os.path.join(self.dist_dir, basename+'.egg')
-
-
-
-
-
-
-
-
-    def do_install_data(self):
-        # Hack for packages that install data to install's --install-lib
-        self.get_finalized_command('install').install_lib = self.bdist_dir
-
-        site_packages = os.path.normcase(os.path.realpath(get_python_lib()))
-        old, self.distribution.data_files = self.distribution.data_files,[]
-
-        for item in old:
-            if isinstance(item,tuple) and len(item)==2:
-                if os.path.isabs(item[0]):
-                    realpath = os.path.realpath(item[0])
-                    normalized = os.path.normcase(realpath)
-                    if normalized==site_packages or normalized.startswith(
-                        site_packages+os.sep
-                    ):
-                        item = realpath[len(site_packages)+1:], item[1]
-                    # XXX else: raise ???
-            self.distribution.data_files.append(item)
-
-        try:
-            log.info("installing package data to %s" % self.bdist_dir)
-            self.call_command('install_data', force=0, root=None)
-        finally:
-            self.distribution.data_files = old
-
-
-    def get_outputs(self):
-        return [self.egg_output]
-
-
-    def call_command(self,cmdname,**kw):
-        """Invoke reinitialized command `cmdname` with keyword args"""
-        for dirname in INSTALL_DIRECTORY_ATTRS:
-            kw.setdefault(dirname,self.bdist_dir)
-        kw.setdefault('skip_build',self.skip_build)
-        kw.setdefault('dry_run', self.dry_run)
-        cmd = self.reinitialize_command(cmdname, **kw)
-        self.run_command(cmdname)
-        return cmd
-
-
-    def run(self):
-        # Generate metadata first
-        self.run_command("egg_info")
-
-        # We run install_lib before install_data, because some data hacks
-        # pull their data path from the install_lib command.
-        log.info("installing library code to %s" % self.bdist_dir)
-        instcmd = self.get_finalized_command('install')
-        old_root = instcmd.root; instcmd.root = None
-        cmd = self.call_command('install_lib', warn_dir=0)
-        instcmd.root = old_root
-
-        all_outputs, ext_outputs = self.get_ext_outputs()
-        self.stubs = []
-        to_compile = []
-        for (p,ext_name) in enumerate(ext_outputs):
-            filename,ext = os.path.splitext(ext_name)
-            pyfile = os.path.join(self.bdist_dir, strip_module(filename)+'.py')
-            self.stubs.append(pyfile)
-            log.info("creating stub loader for %s" % ext_name)
-            if not self.dry_run:
-                write_stub(os.path.basename(ext_name), pyfile)
-            to_compile.append(pyfile)
-            ext_outputs[p] = ext_name.replace(os.sep,'/')
-
-        to_compile.extend(self.make_init_files())
-        if to_compile:
-            cmd.byte_compile(to_compile)
-
-        if self.distribution.data_files:
-            self.do_install_data()
-
-        # Make the EGG-INFO directory
-        archive_root = self.bdist_dir
-        egg_info = os.path.join(archive_root,'EGG-INFO')
-        self.mkpath(egg_info)
-        if self.distribution.scripts:
-            script_dir = os.path.join(egg_info, 'scripts')
-            log.info("installing scripts to %s" % script_dir)
-            self.call_command('install_scripts',install_dir=script_dir,no_ep=1)
-
-        self.copy_metadata_to(egg_info)
-        native_libs = os.path.join(egg_info, "native_libs.txt")
-        if all_outputs:
-            log.info("writing %s" % native_libs)
-            if not self.dry_run:
-                ensure_directory(native_libs)
-                libs_file = open(native_libs, 'wt')
-                libs_file.write('\n'.join(all_outputs))
-                libs_file.write('\n')
-                libs_file.close()
-        elif os.path.isfile(native_libs):
-            log.info("removing %s" % native_libs)
-            if not self.dry_run:
-                os.unlink(native_libs)
-
-        write_safety_flag(
-            os.path.join(archive_root,'EGG-INFO'), self.zip_safe()
-        )
-
-        if os.path.exists(os.path.join(self.egg_info,'depends.txt')):
-            log.warn(
-                "WARNING: 'depends.txt' will not be used by setuptools 0.6!\n"
-                "Use the install_requires/extras_require setup() args instead."
-            )
-
-        if self.exclude_source_files:
-            self.zap_pyfiles()
-
-        # Make the archive
-        make_zipfile(self.egg_output, archive_root, verbose=self.verbose,
-                          dry_run=self.dry_run, mode=self.gen_header())
-        if not self.keep_temp:
-            remove_tree(self.bdist_dir, dry_run=self.dry_run)
-
-        # Add to 'Distribution.dist_files' so that the "upload" command works
-        getattr(self.distribution,'dist_files',[]).append(
-            ('bdist_egg',get_python_version(),self.egg_output))
-
-
-
-
-    def zap_pyfiles(self):
-        log.info("Removing .py files from temporary directory")
-        for base,dirs,files in walk_egg(self.bdist_dir):
-            for name in files:
-                if name.endswith('.py'):
-                    path = os.path.join(base,name)
-                    log.debug("Deleting %s", path)
-                    os.unlink(path)
-
-    def zip_safe(self):
-        safe = getattr(self.distribution,'zip_safe',None)
-        if safe is not None:
-            return safe
-        log.warn("zip_safe flag not set; analyzing archive contents...")
-        return analyze_egg(self.bdist_dir, self.stubs)
-
-    def make_init_files(self):
-        """Create missing package __init__ files"""
-        init_files = []
-        for base,dirs,files in walk_egg(self.bdist_dir):
-            if base==self.bdist_dir:
-                # don't put an __init__ in the root
-                continue
-            for name in files:
-                if name.endswith('.py'):
-                    if '__init__.py' not in files:
-                        pkg = base[len(self.bdist_dir)+1:].replace(os.sep,'.')
-                        if self.distribution.has_contents_for(pkg):
-                            log.warn("Creating missing __init__.py for %s",pkg)
-                            filename = os.path.join(base,'__init__.py')
-                            if not self.dry_run:
-                                f = open(filename,'w'); f.write(NS_PKG_STUB)
-                                f.close()
-                            init_files.append(filename)
-                    break
-            else:
-                # not a package, don't traverse to subdirectories
-                dirs[:] = []
-
-        return init_files
-
-    def gen_header(self):
-        epm = EntryPoint.parse_map(self.distribution.entry_points or '')
-        ep = epm.get('setuptools.installation',{}).get('eggsecutable')
-        if ep is None:
-            return 'w'  # not an eggsecutable, do it the usual way.
-
-        if not ep.attrs or ep.extras:
-            raise DistutilsSetupError(
-                "eggsecutable entry point (%r) cannot have 'extras' "
-                "or refer to a module" % (ep,)
-            )
-
-        pyver = sys.version[:3]
-        pkg = ep.module_name
-        full = '.'.join(ep.attrs)
-        base = ep.attrs[0]
-        basename = os.path.basename(self.egg_output)
-
-        header = (
-            "#!/bin/sh\n"
-            'if [ `basename $0` = "%(basename)s" ]\n'
-            'then exec python%(pyver)s -c "'
-            "import sys, os; sys.path.insert(0, os.path.abspath('$0')); "
-            "from %(pkg)s import %(base)s; sys.exit(%(full)s())"
-            '" "$@"\n'
-            'else\n'
-            '  echo $0 is not the correct name for this egg file.\n'
-            '  echo Please rename it back to %(basename)s and try again.\n'
-            '  exec false\n'
-            'fi\n'
-
-        ) % locals()
-
-        if not self.dry_run:
-            mkpath(os.path.dirname(self.egg_output), dry_run=self.dry_run)
-            f = open(self.egg_output, 'w')
-            f.write(header)
-            f.close()
-        return 'a'
-
-
-    def copy_metadata_to(self, target_dir):
-        "Copy metadata (egg info) to the target_dir"
-        # normalize the path (so that a forward-slash in egg_info will
-        # match using startswith below)
-        norm_egg_info = os.path.normpath(self.egg_info)
-        prefix = os.path.join(norm_egg_info,'')
-        for path in self.ei_cmd.filelist.files:
-            if path.startswith(prefix):
-                target = os.path.join(target_dir, path[len(prefix):])
-                ensure_directory(target)
-                self.copy_file(path, target)
-
-    def get_ext_outputs(self):
-        """Get a list of relative paths to C extensions in the output distro"""
-
-        all_outputs = []
-        ext_outputs = []
-
-        paths = {self.bdist_dir:''}
-        for base, dirs, files in os.walk(self.bdist_dir):
-            for filename in files:
-                if os.path.splitext(filename)[1].lower() in NATIVE_EXTENSIONS:
-                    all_outputs.append(paths[base]+filename)
-            for filename in dirs:
-                paths[os.path.join(base,filename)] = paths[base]+filename+'/'
-
-        if self.distribution.has_ext_modules():
-            build_cmd = self.get_finalized_command('build_ext')
-            for ext in build_cmd.extensions:
-                if isinstance(ext,Library):
-                    continue
-                fullname = build_cmd.get_ext_fullname(ext.name)
-                filename = build_cmd.get_ext_filename(fullname)
-                if not os.path.basename(filename).startswith('dl-'):
-                    if os.path.exists(os.path.join(self.bdist_dir,filename)):
-                        ext_outputs.append(filename)
-
-        return all_outputs, ext_outputs
-
-
-NATIVE_EXTENSIONS = dict.fromkeys('.dll .so .dylib .pyd'.split())
-
-
-
-
-def walk_egg(egg_dir):
-    """Walk an unpacked egg's contents, skipping the metadata directory"""
-    walker = os.walk(egg_dir)
-    base,dirs,files = walker.next()
-    if 'EGG-INFO' in dirs:
-        dirs.remove('EGG-INFO')
-    yield base,dirs,files
-    for bdf in walker:
-        yield bdf
-
-def analyze_egg(egg_dir, stubs):
-    # check for existing flag in EGG-INFO
-    for flag,fn in safety_flags.items():
-        if os.path.exists(os.path.join(egg_dir,'EGG-INFO',fn)):
-            return flag
-    if not can_scan(): return False
-    safe = True
-    for base, dirs, files in walk_egg(egg_dir):
-        for name in files:
-            if name.endswith('.py') or name.endswith('.pyw'):
-                continue
-            elif name.endswith('.pyc') or name.endswith('.pyo'):
-                # always scan, even if we already know we're not safe
-                safe = scan_module(egg_dir, base, name, stubs) and safe
-    return safe
-
-def write_safety_flag(egg_dir, safe):
-    # Write or remove zip safety flag file(s)
-    for flag,fn in safety_flags.items():
-        fn = os.path.join(egg_dir, fn)
-        if os.path.exists(fn):
-            if safe is None or bool(safe)<>flag:
-                os.unlink(fn)
-        elif safe is not None and bool(safe)==flag:
-            f=open(fn,'wt'); f.write('\n'); f.close()
-
-safety_flags = {
-    True: 'zip-safe',
-    False: 'not-zip-safe',
-}
-
-def scan_module(egg_dir, base, name, stubs):
-    """Check whether module possibly uses unsafe-for-zipfile stuff"""
-
-    filename = os.path.join(base,name)
-    if filename[:-1] in stubs:
-        return True     # Extension module
-    pkg = base[len(egg_dir)+1:].replace(os.sep,'.')
-    module = pkg+(pkg and '.' or '')+os.path.splitext(name)[0]
-    if sys.version_info < (3, 3):
-        skip = 8   # skip magic & date
-    else:
-        skip = 12  # skip magic & date & file size
-    f = open(filename,'rb'); f.read(skip)
-    code = marshal.load(f); f.close()
-    safe = True
-    symbols = dict.fromkeys(iter_symbols(code))
-    for bad in ['__file__', '__path__']:
-        if bad in symbols:
-            log.warn("%s: module references %s", module, bad)
-            safe = False
-    if 'inspect' in symbols:
-        for bad in [
-            'getsource', 'getabsfile', 'getsourcefile', 'getfile'
-            'getsourcelines', 'findsource', 'getcomments', 'getframeinfo',
-            'getinnerframes', 'getouterframes', 'stack', 'trace'
-        ]:
-            if bad in symbols:
-                log.warn("%s: module MAY be using inspect.%s", module, bad)
-                safe = False
-    if '__name__' in symbols and '__main__' in symbols and '.' not in module:
-        if sys.version[:3]=="2.4":  # -m works w/zipfiles in 2.5
-            log.warn("%s: top-level module may be 'python -m' script", module)
-            safe = False
-    return safe
-
-def iter_symbols(code):
-    """Yield names and strings used by `code` and its nested code objects"""
-    for name in code.co_names: yield name
-    for const in code.co_consts:
-        if isinstance(const,basestring):
-            yield const
-        elif isinstance(const,CodeType):
-            for name in iter_symbols(const):
-                yield name
-
-def can_scan():
-    if not sys.platform.startswith('java') and sys.platform != 'cli':
-        # CPython, PyPy, etc.
-        return True
-    log.warn("Unable to analyze compiled code on this platform.")
-    log.warn("Please ask the author to include a 'zip_safe'"
-             " setting (either True or False) in the package's setup.py")
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Attribute names of options for commands that might need to be convinced to
-# install to the egg build directory
-
-INSTALL_DIRECTORY_ATTRS = [
-    'install_lib', 'install_dir', 'install_data', 'install_base'
-]
-
-def make_zipfile(zip_filename, base_dir, verbose=0, dry_run=0, compress=None,
-    mode='w'
-):
-    """Create a zip file from all the files under 'base_dir'.  The output
-    zip file will be named 'base_dir' + ".zip".  Uses either the "zipfile"
-    Python module (if available) or the InfoZIP "zip" utility (if installed
-    and found on the default search path).  If neither tool is available,
-    raises DistutilsExecError.  Returns the name of the output zip file.
-    """
-    import zipfile
-    mkpath(os.path.dirname(zip_filename), dry_run=dry_run)
-    log.info("creating '%s' and adding '%s' to it", zip_filename, base_dir)
-
-    def visit(z, dirname, names):
-        for name in names:
-            path = os.path.normpath(os.path.join(dirname, name))
-            if os.path.isfile(path):
-                p = path[len(base_dir)+1:]
-                if not dry_run:
-                    z.write(path, p)
-                log.debug("adding '%s'" % p)
-
-    if compress is None:
-        compress = (sys.version>="2.4") # avoid 2.3 zipimport bug when 64 bits
-
-    compression = [zipfile.ZIP_STORED, zipfile.ZIP_DEFLATED][bool(compress)]
-    if not dry_run:
-        z = zipfile.ZipFile(zip_filename, mode, compression=compression)
-        for dirname, dirs, files in os.walk(base_dir):
-            visit(z, dirname, files)
-        z.close()
-    else:
-        for dirname, dirs, files in os.walk(base_dir):
-            visit(None, dirname, files)
-    return zip_filename
-#
diff --git a/vendor/distribute-0.6.34/setuptools/command/bdist_rpm.py b/vendor/distribute-0.6.34/setuptools/command/bdist_rpm.py
deleted file mode 100644
index 8c48da35..00000000
--- a/vendor/distribute-0.6.34/setuptools/command/bdist_rpm.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# This is just a kludge so that bdist_rpm doesn't guess wrong about the
-# distribution name and version, if the egg_info command is going to alter
-# them, another kludge to allow you to build old-style non-egg RPMs, and
-# finally, a kludge to track .rpm files for uploading when run on Python <2.5.
-
-from distutils.command.bdist_rpm import bdist_rpm as _bdist_rpm
-import sys, os
-
-class bdist_rpm(_bdist_rpm):
-
-    def initialize_options(self):
-        _bdist_rpm.initialize_options(self)
-        self.no_egg = None
-
-    if sys.version<"2.5":
-        # Track for uploading any .rpm file(s) moved to self.dist_dir
-        def move_file(self, src, dst, level=1):
-            _bdist_rpm.move_file(self, src, dst, level)
-            if dst==self.dist_dir and src.endswith('.rpm'):
-                getattr(self.distribution,'dist_files',[]).append(
-                    ('bdist_rpm',
-                    src.endswith('.src.rpm') and 'any' or sys.version[:3],
-                     os.path.join(dst, os.path.basename(src)))
-                )
-
-    def run(self):
-        self.run_command('egg_info')    # ensure distro name is up-to-date
-        _bdist_rpm.run(self)
-
-
-
-
-
-
-
-
-
-
-
-
-
-    def _make_spec_file(self):
-        version = self.distribution.get_version()
-        rpmversion = version.replace('-','_')
-        spec = _bdist_rpm._make_spec_file(self)
-        line23 = '%define version '+version
-        line24 = '%define version '+rpmversion
-        spec  = [
-            line.replace(
-                "Source0: %{name}-%{version}.tar",
-                "Source0: %{name}-%{unmangled_version}.tar"
-            ).replace(
-                "setup.py install ",
-                "setup.py install --single-version-externally-managed "
-            ).replace(
-                "%setup",
-                "%setup -n %{name}-%{unmangled_version}"
-            ).replace(line23,line24)
-            for line in spec
-        ]
-        spec.insert(spec.index(line24)+1, "%define unmangled_version "+version)
-        return spec
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vendor/distribute-0.6.34/setuptools/command/bdist_wininst.py b/vendor/distribute-0.6.34/setuptools/command/bdist_wininst.py
deleted file mode 100644
index 93e6846d..00000000
--- a/vendor/distribute-0.6.34/setuptools/command/bdist_wininst.py
+++ /dev/null
@@ -1,41 +0,0 @@
-from distutils.command.bdist_wininst import bdist_wininst as _bdist_wininst
-import os, sys
-
-class bdist_wininst(_bdist_wininst):
-
-    def create_exe(self, arcname, fullname, bitmap=None):
-        _bdist_wininst.create_exe(self, arcname, fullname, bitmap)
-        dist_files = getattr(self.distribution, 'dist_files', [])
-
-        if self.target_version:
-            installer_name = os.path.join(self.dist_dir,
-                                          "%s.win32-py%s.exe" %
-                                           (fullname, self.target_version))
-            pyversion = self.target_version
-
-            # fix 2.5 bdist_wininst ignoring --target-version spec
-            bad = ('bdist_wininst','any',installer_name)
-            if bad in dist_files:
-                dist_files.remove(bad)
-        else:
-            installer_name = os.path.join(self.dist_dir,
-                                          "%s.win32.exe" % fullname)
-            pyversion = 'any'
-        good = ('bdist_wininst', pyversion, installer_name)
-        if good not in dist_files:
-            dist_files.append(good)
-
-    def reinitialize_command (self, command, reinit_subcommands=0):
-        cmd = self.distribution.reinitialize_command(
-            command, reinit_subcommands)
-        if command in ('install', 'install_lib'):
-            cmd.install_lib = None  # work around distutils bug
-        return cmd
-
-    def run(self):
-        self._is_running = True
-        try:
-            _bdist_wininst.run(self)
-        finally:
-            self._is_running = False
-
diff --git a/vendor/distribute-0.6.34/setuptools/command/build_ext.py b/vendor/distribute-0.6.34/setuptools/command/build_ext.py
deleted file mode 100644
index 4a94572c..00000000
--- a/vendor/distribute-0.6.34/setuptools/command/build_ext.py
+++ /dev/null
@@ -1,294 +0,0 @@
-from distutils.command.build_ext import build_ext as _du_build_ext
-try:
-    # Attempt to use Pyrex for building extensions, if available
-    from Pyrex.Distutils.build_ext import build_ext as _build_ext
-except ImportError:
-    _build_ext = _du_build_ext
-
-import os, sys
-from distutils.file_util import copy_file
-from setuptools.extension import Library
-from distutils.ccompiler import new_compiler
-from distutils.sysconfig import customize_compiler, get_config_var
-get_config_var("LDSHARED")  # make sure _config_vars is initialized
-from distutils.sysconfig import _config_vars
-from distutils import log
-from distutils.errors import *
-
-have_rtld = False
-use_stubs = False
-libtype = 'shared'
-
-if sys.platform == "darwin":
-    use_stubs = True
-elif os.name != 'nt':
-    try:
-        from dl import RTLD_NOW
-        have_rtld = True
-        use_stubs = True
-    except ImportError:
-        pass
-
-def if_dl(s):
-    if have_rtld:
-        return s
-    return ''
-
-
-
-
-
-
-class build_ext(_build_ext):
-    def run(self):
-        """Build extensions in build directory, then copy if --inplace"""
-        old_inplace, self.inplace = self.inplace, 0
-        _build_ext.run(self)
-        self.inplace = old_inplace
-        if old_inplace:
-            self.copy_extensions_to_source()
-
-    def copy_extensions_to_source(self):
-        build_py = self.get_finalized_command('build_py')
-        for ext in self.extensions:
-            fullname = self.get_ext_fullname(ext.name)
-            filename = self.get_ext_filename(fullname)
-            modpath = fullname.split('.')
-            package = '.'.join(modpath[:-1])
-            package_dir = build_py.get_package_dir(package)
-            dest_filename = os.path.join(package_dir,os.path.basename(filename))
-            src_filename = os.path.join(self.build_lib,filename)
-
-            # Always copy, even if source is older than destination, to ensure
-            # that the right extensions for the current Python/platform are
-            # used.
-            copy_file(
-                src_filename, dest_filename, verbose=self.verbose,
-                dry_run=self.dry_run
-            )
-            if ext._needs_stub:
-                self.write_stub(package_dir or os.curdir, ext, True)
-
-
-    if _build_ext is not _du_build_ext and not hasattr(_build_ext,'pyrex_sources'):
-        # Workaround for problems using some Pyrex versions w/SWIG and/or 2.4
-        def swig_sources(self, sources, *otherargs):
-            # first do any Pyrex processing
-            sources = _build_ext.swig_sources(self, sources) or sources
-            # Then do any actual SWIG stuff on the remainder
-            return _du_build_ext.swig_sources(self, sources, *otherargs)
-
-
-
-    def get_ext_filename(self, fullname):
-        filename = _build_ext.get_ext_filename(self,fullname)
-        if fullname not in self.ext_map:
-            return filename
-        ext = self.ext_map[fullname]
-        if isinstance(ext,Library):
-            fn, ext = os.path.splitext(filename)
-            return self.shlib_compiler.library_filename(fn,libtype)
-        elif use_stubs and ext._links_to_dynamic:
-            d,fn = os.path.split(filename)
-            return os.path.join(d,'dl-'+fn)
-        else:
-            return filename
-
-    def initialize_options(self):
-        _build_ext.initialize_options(self)
-        self.shlib_compiler = None
-        self.shlibs = []
-        self.ext_map = {}
-
-    def finalize_options(self):
-        _build_ext.finalize_options(self)
-        self.extensions = self.extensions or []
-        self.check_extensions_list(self.extensions)
-        self.shlibs = [ext for ext in self.extensions
-                        if isinstance(ext,Library)]
-        if self.shlibs:
-            self.setup_shlib_compiler()
-        for ext in self.extensions:
-            ext._full_name = self.get_ext_fullname(ext.name)
-        for ext in self.extensions:
-            fullname = ext._full_name
-            self.ext_map[fullname] = ext
-
-            # distutils 3.1 will also ask for module names
-            # XXX what to do with conflicts?
-            self.ext_map[fullname.split('.')[-1]] = ext
-
-            ltd = ext._links_to_dynamic = \
-                self.shlibs and self.links_to_dynamic(ext) or False
-            ext._needs_stub = ltd and use_stubs and not isinstance(ext,Library)
-            filename = ext._file_name = self.get_ext_filename(fullname)
-            libdir = os.path.dirname(os.path.join(self.build_lib,filename))
-            if ltd and libdir not in ext.library_dirs:
-                ext.library_dirs.append(libdir)
-            if ltd and use_stubs and os.curdir not in ext.runtime_library_dirs:
-                ext.runtime_library_dirs.append(os.curdir)
-
-    def setup_shlib_compiler(self):
-        compiler = self.shlib_compiler = new_compiler(
-            compiler=self.compiler, dry_run=self.dry_run, force=self.force
-        )
-        if sys.platform == "darwin":
-            tmp = _config_vars.copy()
-            try:
-                # XXX Help!  I don't have any idea whether these are right...
-                _config_vars['LDSHARED'] = "gcc -Wl,-x -dynamiclib -undefined dynamic_lookup"
-                _config_vars['CCSHARED'] = " -dynamiclib"
-                _config_vars['SO'] = ".dylib"
-                customize_compiler(compiler)
-            finally:
-                _config_vars.clear()
-                _config_vars.update(tmp)
-        else:
-            customize_compiler(compiler)
-
-        if self.include_dirs is not None:
-            compiler.set_include_dirs(self.include_dirs)
-        if self.define is not None:
-            # 'define' option is a list of (name,value) tuples
-            for (name,value) in self.define:
-                compiler.define_macro(name, value)
-        if self.undef is not None:
-            for macro in self.undef:
-                compiler.undefine_macro(macro)
-        if self.libraries is not None:
-            compiler.set_libraries(self.libraries)
-        if self.library_dirs is not None:
-            compiler.set_library_dirs(self.library_dirs)
-        if self.rpath is not None:
-            compiler.set_runtime_library_dirs(self.rpath)
-        if self.link_objects is not None:
-            compiler.set_link_objects(self.link_objects)
-
-        # hack so distutils' build_extension() builds a library instead
-        compiler.link_shared_object = link_shared_object.__get__(compiler)
-
-
-
-    def get_export_symbols(self, ext):
-        if isinstance(ext,Library):
-            return ext.export_symbols
-        return _build_ext.get_export_symbols(self,ext)
-
-    def build_extension(self, ext):
-        _compiler = self.compiler
-        try:
-            if isinstance(ext,Library):
-                self.compiler = self.shlib_compiler
-            _build_ext.build_extension(self,ext)
-            if ext._needs_stub:
-                self.write_stub(
-                    self.get_finalized_command('build_py').build_lib, ext
-                )
-        finally:
-            self.compiler = _compiler
-
-    def links_to_dynamic(self, ext):
-        """Return true if 'ext' links to a dynamic lib in the same package"""
-        # XXX this should check to ensure the lib is actually being built
-        # XXX as dynamic, and not just using a locally-found version or a
-        # XXX static-compiled version
-        libnames = dict.fromkeys([lib._full_name for lib in self.shlibs])
-        pkg = '.'.join(ext._full_name.split('.')[:-1]+[''])
-        for libname in ext.libraries:
-            if pkg+libname in libnames: return True
-        return False
-
-    def get_outputs(self):
-        outputs = _build_ext.get_outputs(self)
-        optimize = self.get_finalized_command('build_py').optimize
-        for ext in self.extensions:
-            if ext._needs_stub:
-                base = os.path.join(self.build_lib, *ext._full_name.split('.'))
-                outputs.append(base+'.py')
-                outputs.append(base+'.pyc')
-                if optimize:
-                    outputs.append(base+'.pyo')
-        return outputs
-
-    def write_stub(self, output_dir, ext, compile=False):
-        log.info("writing stub loader for %s to %s",ext._full_name, output_dir)
-        stub_file = os.path.join(output_dir, *ext._full_name.split('.'))+'.py'
-        if compile and os.path.exists(stub_file):
-            raise DistutilsError(stub_file+" already exists! Please delete.")
-        if not self.dry_run:
-            f = open(stub_file,'w')
-            f.write('\n'.join([
-                "def __bootstrap__():",
-                "   global __bootstrap__, __file__, __loader__",
-                "   import sys, os, pkg_resources, imp"+if_dl(", dl"),
-                "   __file__ = pkg_resources.resource_filename(__name__,%r)"
-                   % os.path.basename(ext._file_name),
-                "   del __bootstrap__",
-                "   if '__loader__' in globals():",
-                "       del __loader__",
-                if_dl("   old_flags = sys.getdlopenflags()"),
-                "   old_dir = os.getcwd()",
-                "   try:",
-                "     os.chdir(os.path.dirname(__file__))",
-                if_dl("     sys.setdlopenflags(dl.RTLD_NOW)"),
-                "     imp.load_dynamic(__name__,__file__)",
-                "   finally:",
-                if_dl("     sys.setdlopenflags(old_flags)"),
-                "     os.chdir(old_dir)",
-                "__bootstrap__()",
-                "" # terminal \n
-            ]))
-            f.close()
-        if compile:
-            from distutils.util import byte_compile
-            byte_compile([stub_file], optimize=0,
-                         force=True, dry_run=self.dry_run)
-            optimize = self.get_finalized_command('install_lib').optimize
-            if optimize > 0:
-                byte_compile([stub_file], optimize=optimize,
-                             force=True, dry_run=self.dry_run)
-            if os.path.exists(stub_file) and not self.dry_run:
-                os.unlink(stub_file)
-
-
-if use_stubs or os.name=='nt':
-    # Build shared libraries
-    #
-    def link_shared_object(self, objects, output_libname, output_dir=None,
-        libraries=None, library_dirs=None, runtime_library_dirs=None,
-        export_symbols=None, debug=0, extra_preargs=None,
-        extra_postargs=None, build_temp=None, target_lang=None
-    ):  self.link(
-            self.SHARED_LIBRARY, objects, output_libname,
-            output_dir, libraries, library_dirs, runtime_library_dirs,
-            export_symbols, debug, extra_preargs, extra_postargs,
-            build_temp, target_lang
-        )
-else:
-    # Build static libraries everywhere else
-    libtype = 'static'
-
-    def link_shared_object(self, objects, output_libname, output_dir=None,
-        libraries=None, library_dirs=None, runtime_library_dirs=None,
-        export_symbols=None, debug=0, extra_preargs=None,
-        extra_postargs=None, build_temp=None, target_lang=None
-    ):
-        # XXX we need to either disallow these attrs on Library instances,
-        #     or warn/abort here if set, or something...
-        #libraries=None, library_dirs=None, runtime_library_dirs=None,
-        #export_symbols=None, extra_preargs=None, extra_postargs=None,
-        #build_temp=None
-
-        assert output_dir is None   # distutils build_ext doesn't pass this
-        output_dir,filename = os.path.split(output_libname)
-        basename, ext = os.path.splitext(filename)
-        if self.library_filename("x").startswith('lib'):
-            # strip 'lib' prefix; this is kludgy if some platform uses
-            # a different prefix
-            basename = basename[3:]
-
-        self.create_static_lib(
-            objects, basename, output_dir, debug, target_lang
-        )
-
-
diff --git a/vendor/distribute-0.6.34/setuptools/command/build_py.py b/vendor/distribute-0.6.34/setuptools/command/build_py.py
deleted file mode 100644
index 8751acd4..00000000
--- a/vendor/distribute-0.6.34/setuptools/command/build_py.py
+++ /dev/null
@@ -1,280 +0,0 @@
-import os.path, sys, fnmatch
-from distutils.command.build_py import build_py as _build_py
-from distutils.util import convert_path
-from glob import glob
-
-try:
-    from distutils.util import Mixin2to3 as _Mixin2to3
-    # add support for converting doctests that is missing in 3.1 distutils
-    from distutils import log
-    from lib2to3.refactor import RefactoringTool, get_fixers_from_package
-    import setuptools
-    class DistutilsRefactoringTool(RefactoringTool):
-        def log_error(self, msg, *args, **kw):
-            log.error(msg, *args)
-
-        def log_message(self, msg, *args):
-            log.info(msg, *args)
-
-        def log_debug(self, msg, *args):
-            log.debug(msg, *args)
-
-    class Mixin2to3(_Mixin2to3):
-        def run_2to3(self, files, doctests = False):
-            # See of the distribution option has been set, otherwise check the
-            # setuptools default.
-            if self.distribution.use_2to3 is not True:
-                return
-            if not files:
-                return
-            log.info("Fixing "+" ".join(files))
-            self.__build_fixer_names()
-            self.__exclude_fixers()
-            if doctests:
-                if setuptools.run_2to3_on_doctests:
-                    r = DistutilsRefactoringTool(self.fixer_names)
-                    r.refactor(files, write=True, doctests_only=True)
-            else:
-                _Mixin2to3.run_2to3(self, files)
-
-        def __build_fixer_names(self):
-            if self.fixer_names: return
-            self.fixer_names = []
-            for p in setuptools.lib2to3_fixer_packages:
-                self.fixer_names.extend(get_fixers_from_package(p))
-            if self.distribution.use_2to3_fixers is not None:
-                for p in self.distribution.use_2to3_fixers:
-                    self.fixer_names.extend(get_fixers_from_package(p))
-
-        def __exclude_fixers(self):
-            excluded_fixers = getattr(self, 'exclude_fixers', [])
-            if self.distribution.use_2to3_exclude_fixers is not None:
-                excluded_fixers.extend(self.distribution.use_2to3_exclude_fixers)
-            for fixer_name in excluded_fixers:
-                if fixer_name in self.fixer_names:
-                    self.fixer_names.remove(fixer_name)
-
-except ImportError:
-    class Mixin2to3:
-        def run_2to3(self, files, doctests=True):
-            # Nothing done in 2.x
-            pass
-
-class build_py(_build_py, Mixin2to3):
-    """Enhanced 'build_py' command that includes data files with packages
-
-    The data files are specified via a 'package_data' argument to 'setup()'.
-    See 'setuptools.dist.Distribution' for more details.
-
-    Also, this version of the 'build_py' command allows you to specify both
-    'py_modules' and 'packages' in the same setup operation.
-    """
-    def finalize_options(self):
-        _build_py.finalize_options(self)
-        self.package_data = self.distribution.package_data
-        self.exclude_package_data = self.distribution.exclude_package_data or {}
-        if 'data_files' in self.__dict__: del self.__dict__['data_files']
-        self.__updated_files = []
-        self.__doctests_2to3 = []
-
-    def run(self):
-        """Build modules, packages, and copy data files to build directory"""
-        if not self.py_modules and not self.packages:
-            return
-
-        if self.py_modules:
-            self.build_modules()
-
-        if self.packages:
-            self.build_packages()
-            self.build_package_data()
-
-        self.run_2to3(self.__updated_files, False)
-        self.run_2to3(self.__updated_files, True)
-        self.run_2to3(self.__doctests_2to3, True)
-
-        # Only compile actual .py files, using our base class' idea of what our
-        # output files are.
-        self.byte_compile(_build_py.get_outputs(self, include_bytecode=0))
-
-    def __getattr__(self,attr):
-        if attr=='data_files':  # lazily compute data files
-            self.data_files = files = self._get_data_files(); return files
-        return _build_py.__getattr__(self,attr)
-
-    def build_module(self, module, module_file, package):
-        outfile, copied = _build_py.build_module(self, module, module_file, package)
-        if copied:
-            self.__updated_files.append(outfile)
-        return outfile, copied
-
-    def _get_data_files(self):
-        """Generate list of '(package,src_dir,build_dir,filenames)' tuples"""
-        self.analyze_manifest()
-        data = []
-        for package in self.packages or ():
-            # Locate package source directory
-            src_dir = self.get_package_dir(package)
-
-            # Compute package build directory
-            build_dir = os.path.join(*([self.build_lib] + package.split('.')))
-
-            # Length of path to strip from found files
-            plen = len(src_dir)+1
-
-            # Strip directory from globbed filenames
-            filenames = [
-                file[plen:] for file in self.find_data_files(package, src_dir)
-                ]
-            data.append( (package, src_dir, build_dir, filenames) )
-        return data
-
-    def find_data_files(self, package, src_dir):
-        """Return filenames for package's data files in 'src_dir'"""
-        globs = (self.package_data.get('', [])
-                 + self.package_data.get(package, []))
-        files = self.manifest_files.get(package, [])[:]
-        for pattern in globs:
-            # Each pattern has to be converted to a platform-specific path
-            files.extend(glob(os.path.join(src_dir, convert_path(pattern))))
-        return self.exclude_data_files(package, src_dir, files)
-
-    def build_package_data(self):
-        """Copy data files into build directory"""
-        lastdir = None
-        for package, src_dir, build_dir, filenames in self.data_files:
-            for filename in filenames:
-                target = os.path.join(build_dir, filename)
-                self.mkpath(os.path.dirname(target))
-                srcfile = os.path.join(src_dir, filename)
-                outf, copied = self.copy_file(srcfile, target)
-                srcfile = os.path.abspath(srcfile)
-                if copied and srcfile in self.distribution.convert_2to3_doctests:
-                    self.__doctests_2to3.append(outf)
-
-
-    def analyze_manifest(self):
-        self.manifest_files = mf = {}
-        if not self.distribution.include_package_data:
-            return
-        src_dirs = {}
-        for package in self.packages or ():
-            # Locate package source directory
-            src_dirs[assert_relative(self.get_package_dir(package))] = package
-
-        self.run_command('egg_info')
-        ei_cmd = self.get_finalized_command('egg_info')
-        for path in ei_cmd.filelist.files:
-            d,f = os.path.split(assert_relative(path))
-            prev = None
-            oldf = f
-            while d and d!=prev and d not in src_dirs:
-                prev = d
-                d, df = os.path.split(d)
-                f = os.path.join(df, f)
-            if d in src_dirs:
-                if path.endswith('.py') and f==oldf:
-                    continue    # it's a module, not data
-                mf.setdefault(src_dirs[d],[]).append(path)
-
-    def get_data_files(self): pass  # kludge 2.4 for lazy computation
-
-    if sys.version<"2.4":    # Python 2.4 already has this code
-        def get_outputs(self, include_bytecode=1):
-            """Return complete list of files copied to the build directory
-
-            This includes both '.py' files and data files, as well as '.pyc'
-            and '.pyo' files if 'include_bytecode' is true.  (This method is
-            needed for the 'install_lib' command to do its job properly, and to
-            generate a correct installation manifest.)
-            """
-            return _build_py.get_outputs(self, include_bytecode) + [
-                os.path.join(build_dir, filename)
-                for package, src_dir, build_dir,filenames in self.data_files
-                for filename in filenames
-                ]
-
-    def check_package(self, package, package_dir):
-        """Check namespace packages' __init__ for declare_namespace"""
-        try:
-            return self.packages_checked[package]
-        except KeyError:
-            pass
-
-        init_py = _build_py.check_package(self, package, package_dir)
-        self.packages_checked[package] = init_py
-
-        if not init_py or not self.distribution.namespace_packages:
-            return init_py
-
-        for pkg in self.distribution.namespace_packages:
-            if pkg==package or pkg.startswith(package+'.'):
-                break
-        else:
-            return init_py
-
-        f = open(init_py,'rbU')
-        if 'declare_namespace'.encode() not in f.read():
-            from distutils import log
-            log.warn(
-               "WARNING: %s is a namespace package, but its __init__.py does\n"
-               "not declare_namespace(); setuptools 0.7 will REQUIRE this!\n"
-               '(See the setuptools manual under "Namespace Packages" for '
-               "details.)\n", package
-            )
-        f.close()
-        return init_py
-
-    def initialize_options(self):
-        self.packages_checked={}
-        _build_py.initialize_options(self)
-
-
-    def get_package_dir(self, package):
-        res = _build_py.get_package_dir(self, package)
-        if self.distribution.src_root is not None:
-            return os.path.join(self.distribution.src_root, res)
-        return res
-
-
-    def exclude_data_files(self, package, src_dir, files):
-        """Filter filenames for package's data files in 'src_dir'"""
-        globs = (self.exclude_package_data.get('', [])
-                 + self.exclude_package_data.get(package, []))
-        bad = []
-        for pattern in globs:
-            bad.extend(
-                fnmatch.filter(
-                    files, os.path.join(src_dir, convert_path(pattern))
-                )
-            )
-        bad = dict.fromkeys(bad)
-        seen = {}
-        return [
-            f for f in files if f not in bad
-                and f not in seen and seen.setdefault(f,1)  # ditch dupes
-        ]
-
-
-def assert_relative(path):
-    if not os.path.isabs(path):
-        return path
-    from distutils.errors import DistutilsSetupError
-    raise DistutilsSetupError(
-"""Error: setup script specifies an absolute path:
-
-    %s
-
-setup() arguments must *always* be /-separated paths relative to the
-setup.py directory, *never* absolute paths.
-""" % path
-    )
-
-
-
-
-
-
-
-
-
diff --git a/vendor/distribute-0.6.34/setuptools/command/develop.py b/vendor/distribute-0.6.34/setuptools/command/develop.py
deleted file mode 100644
index 1d500040..00000000
--- a/vendor/distribute-0.6.34/setuptools/command/develop.py
+++ /dev/null
@@ -1,167 +0,0 @@
-from setuptools.command.easy_install import easy_install
-from distutils.util import convert_path, subst_vars
-from pkg_resources import Distribution, PathMetadata, normalize_path
-from distutils import log
-from distutils.errors import DistutilsError, DistutilsOptionError
-import os, sys, setuptools, glob
-
-class develop(easy_install):
-    """Set up package for development"""
-
-    description = "install package in 'development mode'"
-
-    user_options = easy_install.user_options + [
-        ("uninstall", "u", "Uninstall this source package"),
-        ("egg-path=", None, "Set the path to be used in the .egg-link file"),
-    ]
-
-    boolean_options = easy_install.boolean_options + ['uninstall']
-
-    command_consumes_arguments = False  # override base
-
-    def run(self):
-        if self.uninstall:
-            self.multi_version = True
-            self.uninstall_link()
-        else:
-            self.install_for_development()
-        self.warn_deprecated_options()
-
-    def initialize_options(self):
-        self.uninstall = None
-        self.egg_path = None
-        easy_install.initialize_options(self)
-        self.setup_path = None
-        self.always_copy_from = '.'   # always copy eggs installed in curdir
-
-
-
-    def finalize_options(self):
-        ei = self.get_finalized_command("egg_info")
-        if ei.broken_egg_info:
-            raise DistutilsError(
-            "Please rename %r to %r before using 'develop'"
-            % (ei.egg_info, ei.broken_egg_info)
-            )
-        self.args = [ei.egg_name]
-
-
-
-
-        easy_install.finalize_options(self)
-        self.expand_basedirs()
-        self.expand_dirs()
-        # pick up setup-dir .egg files only: no .egg-info
-        self.package_index.scan(glob.glob('*.egg'))
-
-        self.egg_link = os.path.join(self.install_dir, ei.egg_name+'.egg-link')
-        self.egg_base = ei.egg_base
-        if self.egg_path is None:
-            self.egg_path = os.path.abspath(ei.egg_base)
-
-        target = normalize_path(self.egg_base)
-        if normalize_path(os.path.join(self.install_dir, self.egg_path)) != target:
-            raise DistutilsOptionError(
-                "--egg-path must be a relative path from the install"
-                " directory to "+target
-        )
-
-        # Make a distribution for the package's source
-        self.dist = Distribution(
-            target,
-            PathMetadata(target, os.path.abspath(ei.egg_info)),
-            project_name = ei.egg_name
-        )
-
-        p = self.egg_base.replace(os.sep,'/')
-        if p!= os.curdir:
-            p = '../' * (p.count('/')+1)
-        self.setup_path = p
-        p = normalize_path(os.path.join(self.install_dir, self.egg_path, p))
-        if  p != normalize_path(os.curdir):
-            raise DistutilsOptionError(
-                "Can't get a consistent path to setup script from"
-                " installation directory", p, normalize_path(os.curdir))
-
-    def install_for_development(self):
-        if sys.version_info >= (3,) and getattr(self.distribution, 'use_2to3', False):
-            # If we run 2to3 we can not do this inplace:
-
-            # Ensure metadata is up-to-date
-            self.reinitialize_command('build_py', inplace=0)
-            self.run_command('build_py')
-            bpy_cmd = self.get_finalized_command("build_py")
-            build_path = normalize_path(bpy_cmd.build_lib)
-
-            # Build extensions
-            self.reinitialize_command('egg_info', egg_base=build_path)
-            self.run_command('egg_info')
-
-            self.reinitialize_command('build_ext', inplace=0)
-            self.run_command('build_ext')
-            
-            # Fixup egg-link and easy-install.pth
-            ei_cmd = self.get_finalized_command("egg_info")
-            self.egg_path = build_path
-            self.dist.location = build_path
-            self.dist._provider = PathMetadata(build_path, ei_cmd.egg_info)    # XXX
-        else:
-            # Without 2to3 inplace works fine:
-            self.run_command('egg_info')
-
-            # Build extensions in-place
-            self.reinitialize_command('build_ext', inplace=1)
-            self.run_command('build_ext')
-        
-        self.install_site_py()  # ensure that target dir is site-safe
-        if setuptools.bootstrap_install_from:
-            self.easy_install(setuptools.bootstrap_install_from)
-            setuptools.bootstrap_install_from = None
-
-        # create an .egg-link in the installation dir, pointing to our egg
-        log.info("Creating %s (link to %s)", self.egg_link, self.egg_base)
-        if not self.dry_run:
-            f = open(self.egg_link,"w")
-            f.write(self.egg_path + "\n" + self.setup_path)
-            f.close()
-        # postprocess the installed distro, fixing up .pth, installing scripts,
-        # and handling requirements
-        self.process_distribution(None, self.dist, not self.no_deps)
-
-
-    def uninstall_link(self):
-        if os.path.exists(self.egg_link):
-            log.info("Removing %s (link to %s)", self.egg_link, self.egg_base)
-            egg_link_file = open(self.egg_link)
-            contents = [line.rstrip() for line in egg_link_file]
-            egg_link_file.close()
-            if contents not in ([self.egg_path], [self.egg_path, self.setup_path]):
-                log.warn("Link points to %s: uninstall aborted", contents)
-                return
-            if not self.dry_run:
-                os.unlink(self.egg_link)
-        if not self.dry_run:
-            self.update_pth(self.dist)  # remove any .pth link to us
-        if self.distribution.scripts:
-            # XXX should also check for entry point scripts!
-            log.warn("Note: you must uninstall or replace scripts manually!")
-
-    def install_egg_scripts(self, dist):
-        if dist is not self.dist:
-            # Installing a dependency, so fall back to normal behavior
-            return easy_install.install_egg_scripts(self,dist)
-
-        # create wrapper scripts in the script dir, pointing to dist.scripts
-
-        # new-style...
-        self.install_wrapper_scripts(dist)
-
-        # ...and old-style
-        for script_name in self.distribution.scripts or []:
-            script_path = os.path.abspath(convert_path(script_name))
-            script_name = os.path.basename(script_path)
-            f = open(script_path,'rU')
-            script_text = f.read()
-            f.close()
-            self.install_script(dist, script_name, script_text, script_path)
-
diff --git a/vendor/distribute-0.6.34/setuptools/command/easy_install.py b/vendor/distribute-0.6.34/setuptools/command/easy_install.py
deleted file mode 100644
index 0d72f758..00000000
--- a/vendor/distribute-0.6.34/setuptools/command/easy_install.py
+++ /dev/null
@@ -1,1947 +0,0 @@
-#!python
-"""\
-Easy Install
-------------
-
-A tool for doing automatic download/extract/build of distutils-based Python
-packages.  For detailed documentation, see the accompanying EasyInstall.txt
-file, or visit the `EasyInstall home page`__.
-
-__ http://packages.python.org/distribute/easy_install.html
-
-"""
-import sys
-import os
-import zipimport
-import shutil
-import tempfile
-import zipfile
-import re
-import stat
-import random
-from glob import glob
-from setuptools import Command, _dont_write_bytecode
-from setuptools.sandbox import run_setup
-from distutils import log, dir_util
-from distutils.util import get_platform
-from distutils.util import convert_path, subst_vars
-from distutils.sysconfig import get_python_lib, get_config_vars
-from distutils.errors import DistutilsArgError, DistutilsOptionError, \
-    DistutilsError, DistutilsPlatformError
-from distutils.command.install import INSTALL_SCHEMES, SCHEME_KEYS
-from setuptools.command import setopt
-from setuptools.archive_util import unpack_archive
-from setuptools.package_index import PackageIndex
-from setuptools.package_index import URL_SCHEME
-from setuptools.command import bdist_egg, egg_info
-from pkg_resources import yield_lines, normalize_path, resource_string, \
-        ensure_directory, get_distribution, find_distributions, \
-        Environment, Requirement, Distribution, \
-        PathMetadata, EggMetadata, WorkingSet, \
-         DistributionNotFound, VersionConflict, \
-        DEVELOP_DIST
-
-sys_executable = os.path.normpath(sys.executable)
-
-__all__ = [
-    'samefile', 'easy_install', 'PthDistributions', 'extract_wininst_cfg',
-    'main', 'get_exe_prefixes',
-]
-
-import site
-HAS_USER_SITE = not sys.version < "2.6" and site.ENABLE_USER_SITE
-
-import struct
-def is_64bit():
-    return struct.calcsize("P") == 8
-
-def samefile(p1,p2):
-    if hasattr(os.path,'samefile') and (
-        os.path.exists(p1) and os.path.exists(p2)
-    ):
-        return os.path.samefile(p1,p2)
-    return (
-        os.path.normpath(os.path.normcase(p1)) ==
-        os.path.normpath(os.path.normcase(p2))
-    )
-
-if sys.version_info <= (3,):
-    def _to_ascii(s):
-        return s
-    def isascii(s):
-        try:
-            unicode(s, 'ascii')
-            return True
-        except UnicodeError:
-            return False
-else:
-    def _to_ascii(s):
-        return s.encode('ascii')
-    def isascii(s):
-        try:
-            s.encode('ascii')
-            return True
-        except UnicodeError:
-            return False
-
-class easy_install(Command):
-    """Manage a download/build/install process"""
-    description = "Find/get/install Python packages"
-    command_consumes_arguments = True
-
-    user_options = [
-        ('prefix=', None, "installation prefix"),
-        ("zip-ok", "z", "install package as a zipfile"),
-        ("multi-version", "m", "make apps have to require() a version"),
-        ("upgrade", "U", "force upgrade (searches PyPI for latest versions)"),
-        ("install-dir=", "d", "install package to DIR"),
-        ("script-dir=", "s", "install scripts to DIR"),
-        ("exclude-scripts", "x", "Don't install scripts"),
-        ("always-copy", "a", "Copy all needed packages to install dir"),
-        ("index-url=", "i", "base URL of Python Package Index"),
-        ("find-links=", "f", "additional URL(s) to search for packages"),
-        ("delete-conflicting", "D", "no longer needed; don't use this"),
-        ("ignore-conflicts-at-my-risk", None,
-            "no longer needed; don't use this"),
-        ("build-directory=", "b",
-            "download/extract/build in DIR; keep the results"),
-        ('optimize=', 'O',
-         "also compile with optimization: -O1 for \"python -O\", "
-         "-O2 for \"python -OO\", and -O0 to disable [default: -O0]"),
-        ('record=', None,
-         "filename in which to record list of installed files"),
-        ('always-unzip', 'Z', "don't install as a zipfile, no matter what"),
-        ('site-dirs=','S',"list of directories where .pth files work"),
-        ('editable', 'e', "Install specified packages in editable form"),
-        ('no-deps', 'N', "don't install dependencies"),
-        ('allow-hosts=', 'H', "pattern(s) that hostnames must match"),
-        ('local-snapshots-ok', 'l', "allow building eggs from local checkouts"),
-        ('version', None, "print version information and exit"),
-        ('no-find-links', None,
-         "Don't load find-links defined in packages being installed")
-    ]
-    boolean_options = [
-        'zip-ok', 'multi-version', 'exclude-scripts', 'upgrade', 'always-copy',
-        'delete-conflicting', 'ignore-conflicts-at-my-risk', 'editable',
-        'no-deps', 'local-snapshots-ok', 'version'
-    ]
-
-    if HAS_USER_SITE:
-        user_options.append(('user', None,
-                             "install in user site-package '%s'" % site.USER_SITE))
-        boolean_options.append('user')
-
-
-    negative_opt = {'always-unzip': 'zip-ok'}
-    create_index = PackageIndex
-
-    def initialize_options(self):
-        if HAS_USER_SITE:
-            whereami = os.path.abspath(__file__)
-            self.user = whereami.startswith(site.USER_SITE)
-        else:
-            self.user = 0
-
-        self.zip_ok = self.local_snapshots_ok = None
-        self.install_dir = self.script_dir = self.exclude_scripts = None
-        self.index_url = None
-        self.find_links = None
-        self.build_directory = None
-        self.args = None
-        self.optimize = self.record = None
-        self.upgrade = self.always_copy = self.multi_version = None
-        self.editable = self.no_deps = self.allow_hosts = None
-        self.root = self.prefix = self.no_report = None
-        self.version = None
-        self.install_purelib = None     # for pure module distributions
-        self.install_platlib = None     # non-pure (dists w/ extensions)
-        self.install_headers = None     # for C/C++ headers
-        self.install_lib = None         # set to either purelib or platlib
-        self.install_scripts = None
-        self.install_data = None
-        self.install_base = None
-        self.install_platbase = None
-        if HAS_USER_SITE:
-            self.install_userbase = site.USER_BASE
-            self.install_usersite = site.USER_SITE
-        else:
-            self.install_userbase = None
-            self.install_usersite = None
-        self.no_find_links = None
-
-        # Options not specifiable via command line
-        self.package_index = None
-        self.pth_file = self.always_copy_from = None
-        self.delete_conflicting = None
-        self.ignore_conflicts_at_my_risk = None
-        self.site_dirs = None
-        self.installed_projects = {}
-        self.sitepy_installed = False
-        # Always read easy_install options, even if we are subclassed, or have
-        # an independent instance created.  This ensures that defaults will
-        # always come from the standard configuration file(s)' "easy_install"
-        # section, even if this is a "develop" or "install" command, or some
-        # other embedding.
-        self._dry_run = None
-        self.verbose = self.distribution.verbose
-        self.distribution._set_command_options(
-            self, self.distribution.get_option_dict('easy_install')
-        )
-
-    def delete_blockers(self, blockers):
-        for filename in blockers:
-            if os.path.exists(filename) or os.path.islink(filename):
-                log.info("Deleting %s", filename)
-                if not self.dry_run:
-                    if os.path.isdir(filename) and not os.path.islink(filename):
-                        rmtree(filename)
-                    else:
-                        os.unlink(filename)
-
-    def finalize_options(self):
-        if self.version:
-            print 'distribute %s' % get_distribution('distribute').version
-            sys.exit()
-
-        py_version = sys.version.split()[0]
-        prefix, exec_prefix = get_config_vars('prefix', 'exec_prefix')
-
-        self.config_vars = {'dist_name': self.distribution.get_name(),
-                            'dist_version': self.distribution.get_version(),
-                            'dist_fullname': self.distribution.get_fullname(),
-                            'py_version': py_version,
-                            'py_version_short': py_version[0:3],
-                            'py_version_nodot': py_version[0] + py_version[2],
-                            'sys_prefix': prefix,
-                            'prefix': prefix,
-                            'sys_exec_prefix': exec_prefix,
-                            'exec_prefix': exec_prefix,
-                            # Only python 3.2+ has abiflags
-                            'abiflags': getattr(sys, 'abiflags', ''),
-                           }
-
-        if HAS_USER_SITE:
-            self.config_vars['userbase'] = self.install_userbase
-            self.config_vars['usersite'] = self.install_usersite
-
-        # fix the install_dir if "--user" was used
-        #XXX: duplicate of the code in the setup command
-        if self.user and HAS_USER_SITE:
-            self.create_home_path()
-            if self.install_userbase is None:
-                raise DistutilsPlatformError(
-                    "User base directory is not specified")
-            self.install_base = self.install_platbase = self.install_userbase
-            if os.name == 'posix':
-                self.select_scheme("unix_user")
-            else:
-                self.select_scheme(os.name + "_user")
-
-        self.expand_basedirs()
-        self.expand_dirs()
-
-        self._expand('install_dir','script_dir','build_directory','site_dirs')
-        # If a non-default installation directory was specified, default the
-        # script directory to match it.
-        if self.script_dir is None:
-            self.script_dir = self.install_dir
-
-        if self.no_find_links is None:
-            self.no_find_links = False
-
-        # Let install_dir get set by install_lib command, which in turn
-        # gets its info from the install command, and takes into account
-        # --prefix and --home and all that other crud.
-        self.set_undefined_options('install_lib',
-            ('install_dir','install_dir')
-        )
-        # Likewise, set default script_dir from 'install_scripts.install_dir'
-        self.set_undefined_options('install_scripts',
-            ('install_dir', 'script_dir')
-        )
-
-        if self.user and self.install_purelib:
-            self.install_dir = self.install_purelib
-            self.script_dir = self.install_scripts
-        # default --record from the install command
-        self.set_undefined_options('install', ('record', 'record'))
-        normpath = map(normalize_path, sys.path)
-        self.all_site_dirs = get_site_dirs()
-        if self.site_dirs is not None:
-            site_dirs = [
-                os.path.expanduser(s.strip()) for s in self.site_dirs.split(',')
-            ]
-            for d in site_dirs:
-                if not os.path.isdir(d):
-                    log.warn("%s (in --site-dirs) does not exist", d)
-                elif normalize_path(d) not in normpath:
-                    raise DistutilsOptionError(
-                        d+" (in --site-dirs) is not on sys.path"
-                    )
-                else:
-                    self.all_site_dirs.append(normalize_path(d))
-        if not self.editable: self.check_site_dir()
-        self.index_url = self.index_url or "http://pypi.python.org/simple"
-        self.shadow_path = self.all_site_dirs[:]
-        for path_item in self.install_dir, normalize_path(self.script_dir):
-            if path_item not in self.shadow_path:
-                self.shadow_path.insert(0, path_item)
-
-        if self.allow_hosts is not None:
-            hosts = [s.strip() for s in self.allow_hosts.split(',')]
-        else:
-            hosts = ['*']
-        if self.package_index is None:
-            self.package_index = self.create_index(
-                self.index_url, search_path = self.shadow_path, hosts=hosts,
-            )
-        self.local_index = Environment(self.shadow_path+sys.path)
-
-        if self.find_links is not None:
-            if isinstance(self.find_links, basestring):
-                self.find_links = self.find_links.split()
-        else:
-            self.find_links = []
-        if self.local_snapshots_ok:
-            self.package_index.scan_egg_links(self.shadow_path+sys.path)
-        if not self.no_find_links:
-            self.package_index.add_find_links(self.find_links)
-        self.set_undefined_options('install_lib', ('optimize','optimize'))
-        if not isinstance(self.optimize,int):
-            try:
-                self.optimize = int(self.optimize)
-                if not (0 <= self.optimize <= 2): raise ValueError
-            except ValueError:
-                raise DistutilsOptionError("--optimize must be 0, 1, or 2")
-
-        if self.delete_conflicting and self.ignore_conflicts_at_my_risk:
-            raise DistutilsOptionError(
-                "Can't use both --delete-conflicting and "
-                "--ignore-conflicts-at-my-risk at the same time"
-            )
-        if self.editable and not self.build_directory:
-            raise DistutilsArgError(
-                "Must specify a build directory (-b) when using --editable"
-            )
-        if not self.args:
-            raise DistutilsArgError(
-                "No urls, filenames, or requirements specified (see --help)")
-
-        self.outputs = []
-
-
-    def _expand_attrs(self, attrs):
-        for attr in attrs:
-            val = getattr(self, attr)
-            if val is not None:
-                if os.name == 'posix' or os.name == 'nt':
-                    val = os.path.expanduser(val)
-                val = subst_vars(val, self.config_vars)
-                setattr(self, attr, val)
-
-    def expand_basedirs(self):
-        """Calls `os.path.expanduser` on install_base, install_platbase and
-        root."""
-        self._expand_attrs(['install_base', 'install_platbase', 'root'])
-
-    def expand_dirs(self):
-        """Calls `os.path.expanduser` on install dirs."""
-        self._expand_attrs(['install_purelib', 'install_platlib',
-                            'install_lib', 'install_headers',
-                            'install_scripts', 'install_data',])
-
-    def run(self):
-        if self.verbose != self.distribution.verbose:
-            log.set_verbosity(self.verbose)
-        try:
-            for spec in self.args:
-                self.easy_install(spec, not self.no_deps)
-            if self.record:
-                outputs = self.outputs
-                if self.root:               # strip any package prefix
-                    root_len = len(self.root)
-                    for counter in xrange(len(outputs)):
-                        outputs[counter] = outputs[counter][root_len:]
-                from distutils import file_util
-                self.execute(
-                    file_util.write_file, (self.record, outputs),
-                    "writing list of installed files to '%s'" %
-                    self.record
-                )
-            self.warn_deprecated_options()
-        finally:
-            log.set_verbosity(self.distribution.verbose)
-
-    def pseudo_tempname(self):
-        """Return a pseudo-tempname base in the install directory.
-        This code is intentionally naive; if a malicious party can write to
-        the target directory you're already in deep doodoo.
-        """
-        try:
-            pid = os.getpid()
-        except:
-            pid = random.randint(0,sys.maxint)
-        return os.path.join(self.install_dir, "test-easy-install-%s" % pid)
-
-    def warn_deprecated_options(self):
-        if self.delete_conflicting or self.ignore_conflicts_at_my_risk:
-            log.warn(
-                "Note: The -D, --delete-conflicting and"
-                " --ignore-conflicts-at-my-risk no longer have any purpose"
-                " and should not be used."
-            )
-
-    def check_site_dir(self):
-        """Verify that self.install_dir is .pth-capable dir, if needed"""
-
-        instdir = normalize_path(self.install_dir)
-        pth_file = os.path.join(instdir,'easy-install.pth')
-
-        # Is it a configured, PYTHONPATH, implicit, or explicit site dir?
-        is_site_dir = instdir in self.all_site_dirs
-
-        if not is_site_dir:
-            # No?  Then directly test whether it does .pth file processing
-            is_site_dir = self.check_pth_processing()
-        else:
-            # make sure we can write to target dir
-            testfile = self.pseudo_tempname()+'.write-test'
-            test_exists = os.path.exists(testfile)
-            try:
-                if test_exists: os.unlink(testfile)
-                open(testfile,'w').close()
-                os.unlink(testfile)
-            except (OSError,IOError):
-                self.cant_write_to_target()
-
-        if not is_site_dir and not self.multi_version:
-            # Can't install non-multi to non-site dir
-            raise DistutilsError(self.no_default_version_msg())
-
-        if is_site_dir:
-            if self.pth_file is None:
-                self.pth_file = PthDistributions(pth_file, self.all_site_dirs)
-        else:
-            self.pth_file = None
-
-        PYTHONPATH = os.environ.get('PYTHONPATH','').split(os.pathsep)
-        if instdir not in map(normalize_path, filter(None,PYTHONPATH)):
-            # only PYTHONPATH dirs need a site.py, so pretend it's there
-            self.sitepy_installed = True
-        elif self.multi_version and not os.path.exists(pth_file):
-            self.sitepy_installed = True    # don't need site.py in this case
-            self.pth_file = None            # and don't create a .pth file
-        self.install_dir = instdir
-
-    def cant_write_to_target(self):
-        msg = """can't create or remove files in install directory
-
-The following error occurred while trying to add or remove files in the
-installation directory:
-
-    %s
-
-The installation directory you specified (via --install-dir, --prefix, or
-the distutils default setting) was:
-
-    %s
-"""     % (sys.exc_info()[1], self.install_dir,)
-
-        if not os.path.exists(self.install_dir):
-            msg += """
-This directory does not currently exist.  Please create it and try again, or
-choose a different installation directory (using the -d or --install-dir
-option).
-"""
-        else:
-            msg += """
-Perhaps your account does not have write access to this directory?  If the
-installation directory is a system-owned directory, you may need to sign in
-as the administrator or "root" account.  If you do not have administrative
-access to this machine, you may wish to choose a different installation
-directory, preferably one that is listed in your PYTHONPATH environment
-variable.
-
-For information on other options, you may wish to consult the
-documentation at:
-
-  http://packages.python.org/distribute/easy_install.html
-
-Please make the appropriate changes for your system and try again.
-"""
-        raise DistutilsError(msg)
-
-
-
-
-    def check_pth_processing(self):
-        """Empirically verify whether .pth files are supported in inst. dir"""
-        instdir = self.install_dir
-        log.info("Checking .pth file support in %s", instdir)
-        pth_file = self.pseudo_tempname()+".pth"
-        ok_file = pth_file+'.ok'
-        ok_exists = os.path.exists(ok_file)
-        try:
-            if ok_exists: os.unlink(ok_file)
-            dirname = os.path.dirname(ok_file)
-            if not os.path.exists(dirname):
-                os.makedirs(dirname)
-            f = open(pth_file,'w')
-        except (OSError,IOError):
-            self.cant_write_to_target()
-        else:
-            try:
-                f.write("import os; f = open(%r, 'w'); f.write('OK'); f.close()\n" % (ok_file,))
-                f.close(); f=None
-                executable = sys.executable
-                if os.name=='nt':
-                    dirname,basename = os.path.split(executable)
-                    alt = os.path.join(dirname,'pythonw.exe')
-                    if basename.lower()=='python.exe' and os.path.exists(alt):
-                        # use pythonw.exe to avoid opening a console window
-                        executable = alt
-
-                from distutils.spawn import spawn
-                spawn([executable,'-E','-c','pass'],0)
-
-                if os.path.exists(ok_file):
-                    log.info(
-                        "TEST PASSED: %s appears to support .pth files",
-                        instdir
-                    )
-                    return True
-            finally:
-                if f: f.close()
-                if os.path.exists(ok_file): os.unlink(ok_file)
-                if os.path.exists(pth_file): os.unlink(pth_file)
-        if not self.multi_version:
-            log.warn("TEST FAILED: %s does NOT support .pth files", instdir)
-        return False
-
-    def install_egg_scripts(self, dist):
-        """Write all the scripts for `dist`, unless scripts are excluded"""
-        if not self.exclude_scripts and dist.metadata_isdir('scripts'):
-            for script_name in dist.metadata_listdir('scripts'):
-                self.install_script(
-                    dist, script_name,
-                    dist.get_metadata('scripts/'+script_name)
-                )
-        self.install_wrapper_scripts(dist)
-
-    def add_output(self, path):
-        if os.path.isdir(path):
-            for base, dirs, files in os.walk(path):
-                for filename in files:
-                    self.outputs.append(os.path.join(base,filename))
-        else:
-            self.outputs.append(path)
-
-    def not_editable(self, spec):
-        if self.editable:
-            raise DistutilsArgError(
-                "Invalid argument %r: you can't use filenames or URLs "
-                "with --editable (except via the --find-links option)."
-                % (spec,)
-            )
-
-    def check_editable(self,spec):
-        if not self.editable:
-            return
-
-        if os.path.exists(os.path.join(self.build_directory, spec.key)):
-            raise DistutilsArgError(
-                "%r already exists in %s; can't do a checkout there" %
-                (spec.key, self.build_directory)
-            )
-
-
-
-
-
-
-    def easy_install(self, spec, deps=False):
-        tmpdir = tempfile.mkdtemp(prefix="easy_install-")
-        download = None
-        if not self.editable: self.install_site_py()
-
-        try:
-            if not isinstance(spec,Requirement):
-                if URL_SCHEME(spec):
-                    # It's a url, download it to tmpdir and process
-                    self.not_editable(spec)
-                    download = self.package_index.download(spec, tmpdir)
-                    return self.install_item(None, download, tmpdir, deps, True)
-
-                elif os.path.exists(spec):
-                    # Existing file or directory, just process it directly
-                    self.not_editable(spec)
-                    return self.install_item(None, spec, tmpdir, deps, True)
-                else:
-                    spec = parse_requirement_arg(spec)
-
-            self.check_editable(spec)
-            dist = self.package_index.fetch_distribution(
-                spec, tmpdir, self.upgrade, self.editable, not self.always_copy,
-                self.local_index
-            )
-
-            if dist is None:
-                msg = "Could not find suitable distribution for %r" % spec
-                if self.always_copy:
-                    msg+=" (--always-copy skips system and development eggs)"
-                raise DistutilsError(msg)
-            elif dist.precedence==DEVELOP_DIST:
-                # .egg-info dists don't need installing, just process deps
-                self.process_distribution(spec, dist, deps, "Using")
-                return dist
-            else:
-                return self.install_item(spec, dist.location, tmpdir, deps)
-
-        finally:
-            if os.path.exists(tmpdir):
-                rmtree(tmpdir)
-
-    def install_item(self, spec, download, tmpdir, deps, install_needed=False):
-
-        # Installation is also needed if file in tmpdir or is not an egg
-        install_needed = install_needed or self.always_copy
-        install_needed = install_needed or os.path.dirname(download) == tmpdir
-        install_needed = install_needed or not download.endswith('.egg')
-        install_needed = install_needed or (
-            self.always_copy_from is not None and
-            os.path.dirname(normalize_path(download)) ==
-            normalize_path(self.always_copy_from)
-        )
-
-        if spec and not install_needed:
-            # at this point, we know it's a local .egg, we just don't know if
-            # it's already installed.
-            for dist in self.local_index[spec.project_name]:
-                if dist.location==download:
-                    break
-            else:
-                install_needed = True   # it's not in the local index
-
-        log.info("Processing %s", os.path.basename(download))
-
-        if install_needed:
-            dists = self.install_eggs(spec, download, tmpdir)
-            for dist in dists:
-                self.process_distribution(spec, dist, deps)
-        else:
-            dists = [self.check_conflicts(self.egg_distribution(download))]
-            self.process_distribution(spec, dists[0], deps, "Using")
-
-        if spec is not None:
-            for dist in dists:
-                if dist in spec:
-                    return dist
-
-
-
-    def select_scheme(self, name):
-        """Sets the install directories by applying the install schemes."""
-        # it's the caller's problem if they supply a bad name!
-        scheme = INSTALL_SCHEMES[name]
-        for key in SCHEME_KEYS:
-            attrname = 'install_' + key
-            if getattr(self, attrname) is None:
-                setattr(self, attrname, scheme[key])
-
-
-
-
-    def process_distribution(self, requirement, dist, deps=True, *info):
-        self.update_pth(dist)
-        self.package_index.add(dist)
-        self.local_index.add(dist)
-        if not self.editable:
-            self.install_egg_scripts(dist)
-        self.installed_projects[dist.key] = dist
-        log.info(self.installation_report(requirement, dist, *info))
-        if (dist.has_metadata('dependency_links.txt') and
-            not self.no_find_links):
-            self.package_index.add_find_links(
-                dist.get_metadata_lines('dependency_links.txt')
-            )
-        if not deps and not self.always_copy:
-            return
-        elif requirement is not None and dist.key != requirement.key:
-            log.warn("Skipping dependencies for %s", dist)
-            return  # XXX this is not the distribution we were looking for
-        elif requirement is None or dist not in requirement:
-            # if we wound up with a different version, resolve what we've got
-            distreq = dist.as_requirement()
-            requirement = requirement or distreq
-            requirement = Requirement(
-                distreq.project_name, distreq.specs, requirement.extras
-            )
-        log.info("Processing dependencies for %s", requirement)
-        try:
-            distros = WorkingSet([]).resolve(
-                [requirement], self.local_index, self.easy_install
-            )
-        except DistributionNotFound, e:
-            raise DistutilsError(
-                "Could not find required distribution %s" % e.args
-            )
-        except VersionConflict, e:
-            raise DistutilsError(
-                "Installed distribution %s conflicts with requirement %s"
-                % e.args
-            )
-        if self.always_copy or self.always_copy_from:
-            # Force all the relevant distros to be copied or activated
-            for dist in distros:
-                if dist.key not in self.installed_projects:
-                    self.easy_install(dist.as_requirement())
-        log.info("Finished processing dependencies for %s", requirement)
-
-    def should_unzip(self, dist):
-        if self.zip_ok is not None:
-            return not self.zip_ok
-        if dist.has_metadata('not-zip-safe'):
-            return True
-        if not dist.has_metadata('zip-safe'):
-            return True
-        return True
-
-    def maybe_move(self, spec, dist_filename, setup_base):
-        dst = os.path.join(self.build_directory, spec.key)
-        if os.path.exists(dst):
-            log.warn(
-               "%r already exists in %s; build directory %s will not be kept",
-               spec.key, self.build_directory, setup_base
-            )
-            return setup_base
-        if os.path.isdir(dist_filename):
-            setup_base = dist_filename
-        else:
-            if os.path.dirname(dist_filename)==setup_base:
-                os.unlink(dist_filename)   # get it out of the tmp dir
-            contents = os.listdir(setup_base)
-            if len(contents)==1:
-                dist_filename = os.path.join(setup_base,contents[0])
-                if os.path.isdir(dist_filename):
-                    # if the only thing there is a directory, move it instead
-                    setup_base = dist_filename
-        ensure_directory(dst); shutil.move(setup_base, dst)
-        return dst
-
-    def install_wrapper_scripts(self, dist):
-        if not self.exclude_scripts:
-            for args in get_script_args(dist):
-                self.write_script(*args)
-
-
-
-    def install_script(self, dist, script_name, script_text, dev_path=None):
-        """Generate a legacy script wrapper and install it"""
-        spec = str(dist.as_requirement())
-        is_script = is_python_script(script_text, script_name)
-
-        def get_template(filename):
-            """
-            There are a couple of template scripts in the package. This
-            function loads one of them and prepares it for use.
-
-            These templates use triple-quotes to escape variable
-            substitutions so the scripts get the 2to3 treatment when build
-            on Python 3. The templates cannot use triple-quotes naturally.
-            """
-            raw_bytes = resource_string('setuptools', template_name)
-            template_str = raw_bytes.decode('utf-8')
-            clean_template = template_str.replace('"""', '')
-            return clean_template
-
-        if is_script:
-            template_name = 'script template.py'
-            if dev_path:
-                template_name = template_name.replace('.py', ' (dev).py')
-            script_text = (get_script_header(script_text) +
-                get_template(template_name) % locals())
-        self.write_script(script_name, _to_ascii(script_text), 'b')
-
-    def write_script(self, script_name, contents, mode="t", blockers=()):
-        """Write an executable file to the scripts directory"""
-        self.delete_blockers(   # clean up old .py/.pyw w/o a script
-            [os.path.join(self.script_dir,x) for x in blockers])
-        log.info("Installing %s script to %s", script_name, self.script_dir)
-        target = os.path.join(self.script_dir, script_name)
-        self.add_output(target)
-
-        mask = current_umask()
-        if not self.dry_run:
-            ensure_directory(target)
-            f = open(target,"w"+mode)
-            f.write(contents)
-            f.close()
-            chmod(target, 0777-mask)
-
-
-
-
-    def install_eggs(self, spec, dist_filename, tmpdir):
-        # .egg dirs or files are already built, so just return them
-        if dist_filename.lower().endswith('.egg'):
-            return [self.install_egg(dist_filename, tmpdir)]
-        elif dist_filename.lower().endswith('.exe'):
-            return [self.install_exe(dist_filename, tmpdir)]
-
-        # Anything else, try to extract and build
-        setup_base = tmpdir
-        if os.path.isfile(dist_filename) and not dist_filename.endswith('.py'):
-            unpack_archive(dist_filename, tmpdir, self.unpack_progress)
-        elif os.path.isdir(dist_filename):
-            setup_base = os.path.abspath(dist_filename)
-
-        if (setup_base.startswith(tmpdir)   # something we downloaded
-            and self.build_directory and spec is not None
-        ):
-            setup_base = self.maybe_move(spec, dist_filename, setup_base)
-
-        # Find the setup.py file
-        setup_script = os.path.join(setup_base, 'setup.py')
-
-        if not os.path.exists(setup_script):
-            setups = glob(os.path.join(setup_base, '*', 'setup.py'))
-            if not setups:
-                raise DistutilsError(
-                    "Couldn't find a setup script in %s" % os.path.abspath(dist_filename)
-                )
-            if len(setups)>1:
-                raise DistutilsError(
-                    "Multiple setup scripts in %s" % os.path.abspath(dist_filename)
-                )
-            setup_script = setups[0]
-
-        # Now run it, and return the result
-        if self.editable:
-            log.info(self.report_editable(spec, setup_script))
-            return []
-        else:
-            return self.build_and_install(setup_script, setup_base)
-
-    def egg_distribution(self, egg_path):
-        if os.path.isdir(egg_path):
-            metadata = PathMetadata(egg_path,os.path.join(egg_path,'EGG-INFO'))
-        else:
-            metadata = EggMetadata(zipimport.zipimporter(egg_path))
-        return Distribution.from_filename(egg_path,metadata=metadata)
-
-    def install_egg(self, egg_path, tmpdir):
-        destination = os.path.join(self.install_dir,os.path.basename(egg_path))
-        destination = os.path.abspath(destination)
-        if not self.dry_run:
-            ensure_directory(destination)
-
-        dist = self.egg_distribution(egg_path)
-        self.check_conflicts(dist)
-        if not samefile(egg_path, destination):
-            if os.path.isdir(destination) and not os.path.islink(destination):
-                dir_util.remove_tree(destination, dry_run=self.dry_run)
-            elif os.path.exists(destination):
-                self.execute(os.unlink,(destination,),"Removing "+destination)
-            uncache_zipdir(destination)
-            if os.path.isdir(egg_path):
-                if egg_path.startswith(tmpdir):
-                    f,m = shutil.move, "Moving"
-                else:
-                    f,m = shutil.copytree, "Copying"
-            elif self.should_unzip(dist):
-                self.mkpath(destination)
-                f,m = self.unpack_and_compile, "Extracting"
-            elif egg_path.startswith(tmpdir):
-                f,m = shutil.move, "Moving"
-            else:
-                f,m = shutil.copy2, "Copying"
-
-            self.execute(f, (egg_path, destination),
-                (m+" %s to %s") %
-                (os.path.basename(egg_path),os.path.dirname(destination)))
-
-        self.add_output(destination)
-        return self.egg_distribution(destination)
-
-    def install_exe(self, dist_filename, tmpdir):
-        # See if it's valid, get data
-        cfg = extract_wininst_cfg(dist_filename)
-        if cfg is None:
-            raise DistutilsError(
-                "%s is not a valid distutils Windows .exe" % dist_filename
-            )
-        # Create a dummy distribution object until we build the real distro
-        dist = Distribution(None,
-            project_name=cfg.get('metadata','name'),
-            version=cfg.get('metadata','version'), platform=get_platform()
-        )
-
-        # Convert the .exe to an unpacked egg
-        egg_path = dist.location = os.path.join(tmpdir, dist.egg_name()+'.egg')
-        egg_tmp  = egg_path+'.tmp'
-        egg_info = os.path.join(egg_tmp, 'EGG-INFO')
-        pkg_inf = os.path.join(egg_info, 'PKG-INFO')
-        ensure_directory(pkg_inf)   # make sure EGG-INFO dir exists
-        dist._provider = PathMetadata(egg_tmp, egg_info)    # XXX
-        self.exe_to_egg(dist_filename, egg_tmp)
-
-        # Write EGG-INFO/PKG-INFO
-        if not os.path.exists(pkg_inf):
-            f = open(pkg_inf,'w')
-            f.write('Metadata-Version: 1.0\n')
-            for k,v in cfg.items('metadata'):
-                if k<>'target_version':
-                    f.write('%s: %s\n' % (k.replace('_','-').title(), v))
-            f.close()
-        script_dir = os.path.join(egg_info,'scripts')
-        self.delete_blockers(   # delete entry-point scripts to avoid duping
-            [os.path.join(script_dir,args[0]) for args in get_script_args(dist)]
-        )
-        # Build .egg file from tmpdir
-        bdist_egg.make_zipfile(
-            egg_path, egg_tmp, verbose=self.verbose, dry_run=self.dry_run
-        )
-        # install the .egg
-        return self.install_egg(egg_path, tmpdir)
-
-    def exe_to_egg(self, dist_filename, egg_tmp):
-        """Extract a bdist_wininst to the directories an egg would use"""
-        # Check for .pth file and set up prefix translations
-        prefixes = get_exe_prefixes(dist_filename)
-        to_compile = []
-        native_libs = []
-        top_level = {}
-        def process(src,dst):
-            s = src.lower()
-            for old,new in prefixes:
-                if s.startswith(old):
-                    src = new+src[len(old):]
-                    parts = src.split('/')
-                    dst = os.path.join(egg_tmp, *parts)
-                    dl = dst.lower()
-                    if dl.endswith('.pyd') or dl.endswith('.dll'):
-                        parts[-1] = bdist_egg.strip_module(parts[-1])
-                        top_level[os.path.splitext(parts[0])[0]] = 1
-                        native_libs.append(src)
-                    elif dl.endswith('.py') and old!='SCRIPTS/':
-                        top_level[os.path.splitext(parts[0])[0]] = 1
-                        to_compile.append(dst)
-                    return dst
-            if not src.endswith('.pth'):
-                log.warn("WARNING: can't process %s", src)
-            return None
-        # extract, tracking .pyd/.dll->native_libs and .py -> to_compile
-        unpack_archive(dist_filename, egg_tmp, process)
-        stubs = []
-        for res in native_libs:
-            if res.lower().endswith('.pyd'):    # create stubs for .pyd's
-                parts = res.split('/')
-                resource = parts[-1]
-                parts[-1] = bdist_egg.strip_module(parts[-1])+'.py'
-                pyfile = os.path.join(egg_tmp, *parts)
-                to_compile.append(pyfile); stubs.append(pyfile)
-                bdist_egg.write_stub(resource, pyfile)
-        self.byte_compile(to_compile)   # compile .py's
-        bdist_egg.write_safety_flag(os.path.join(egg_tmp,'EGG-INFO'),
-            bdist_egg.analyze_egg(egg_tmp, stubs))  # write zip-safety flag
-
-        for name in 'top_level','native_libs':
-            if locals()[name]:
-                txt = os.path.join(egg_tmp, 'EGG-INFO', name+'.txt')
-                if not os.path.exists(txt):
-                    f = open(txt,'w')
-                    f.write('\n'.join(locals()[name])+'\n')
-                    f.close()
-
-    def check_conflicts(self, dist):
-        """Verify that there are no conflicting "old-style" packages"""
-
-        return dist     # XXX temporarily disable until new strategy is stable
-        from imp import find_module, get_suffixes
-        from glob import glob
-
-        blockers = []
-        names = dict.fromkeys(dist._get_metadata('top_level.txt')) # XXX private attr
-
-        exts = {'.pyc':1, '.pyo':1}     # get_suffixes() might leave one out
-        for ext,mode,typ in get_suffixes():
-            exts[ext] = 1
-
-        for path,files in expand_paths([self.install_dir]+self.all_site_dirs):
-            for filename in files:
-                base,ext = os.path.splitext(filename)
-                if base in names:
-                    if not ext:
-                        # no extension, check for package
-                        try:
-                            f, filename, descr = find_module(base, [path])
-                        except ImportError:
-                            continue
-                        else:
-                            if f: f.close()
-                            if filename not in blockers:
-                                blockers.append(filename)
-                    elif ext in exts and base!='site':  # XXX ugh
-                        blockers.append(os.path.join(path,filename))
-        if blockers:
-            self.found_conflicts(dist, blockers)
-
-        return dist
-
-    def found_conflicts(self, dist, blockers):
-        if self.delete_conflicting:
-            log.warn("Attempting to delete conflicting packages:")
-            return self.delete_blockers(blockers)
-
-        msg = """\
--------------------------------------------------------------------------
-CONFLICT WARNING:
-
-The following modules or packages have the same names as modules or
-packages being installed, and will be *before* the installed packages in
-Python's search path.  You MUST remove all of the relevant files and
-directories before you will be able to use the package(s) you are
-installing:
-
-   %s
-
-""" % '\n   '.join(blockers)
-
-        if self.ignore_conflicts_at_my_risk:
-            msg += """\
-(Note: you can run EasyInstall on '%s' with the
---delete-conflicting option to attempt deletion of the above files
-and/or directories.)
-""" % dist.project_name
-        else:
-            msg += """\
-Note: you can attempt this installation again with EasyInstall, and use
-either the --delete-conflicting (-D) option or the
---ignore-conflicts-at-my-risk option, to either delete the above files
-and directories, or to ignore the conflicts, respectively.  Note that if
-you ignore the conflicts, the installed package(s) may not work.
-"""
-        msg += """\
--------------------------------------------------------------------------
-"""
-        sys.stderr.write(msg)
-        sys.stderr.flush()
-        if not self.ignore_conflicts_at_my_risk:
-            raise DistutilsError("Installation aborted due to conflicts")
-
-    def installation_report(self, req, dist, what="Installed"):
-        """Helpful installation message for display to package users"""
-        msg = "\n%(what)s %(eggloc)s%(extras)s"
-        if self.multi_version and not self.no_report:
-            msg += """
-
-Because this distribution was installed --multi-version, before you can
-import modules from this package in an application, you will need to
-'import pkg_resources' and then use a 'require()' call similar to one of
-these examples, in order to select the desired version:
-
-    pkg_resources.require("%(name)s")  # latest installed version
-    pkg_resources.require("%(name)s==%(version)s")  # this exact version
-    pkg_resources.require("%(name)s>=%(version)s")  # this version or higher
-"""
-            if self.install_dir not in map(normalize_path,sys.path):
-                msg += """
-
-Note also that the installation directory must be on sys.path at runtime for
-this to work.  (e.g. by being the application's script directory, by being on
-PYTHONPATH, or by being added to sys.path by your code.)
-"""
-        eggloc = dist.location
-        name = dist.project_name
-        version = dist.version
-        extras = '' # TODO: self.report_extras(req, dist)
-        return msg % locals()
-
-    def report_editable(self, spec, setup_script):
-        dirname = os.path.dirname(setup_script)
-        python = sys.executable
-        return """\nExtracted editable version of %(spec)s to %(dirname)s
-
-If it uses setuptools in its setup script, you can activate it in
-"development" mode by going to that directory and running::
-
-    %(python)s setup.py develop
-
-See the setuptools documentation for the "develop" command for more info.
-""" % locals()
-
-    def run_setup(self, setup_script, setup_base, args):
-        sys.modules.setdefault('distutils.command.bdist_egg', bdist_egg)
-        sys.modules.setdefault('distutils.command.egg_info', egg_info)
-
-        args = list(args)
-        if self.verbose>2:
-            v = 'v' * (self.verbose - 1)
-            args.insert(0,'-'+v)
-        elif self.verbose<2:
-            args.insert(0,'-q')
-        if self.dry_run:
-            args.insert(0,'-n')
-        log.info(
-            "Running %s %s", setup_script[len(setup_base)+1:], ' '.join(args)
-        )
-        try:
-            run_setup(setup_script, args)
-        except SystemExit, v:
-            raise DistutilsError("Setup script exited with %s" % (v.args[0],))
-
-    def build_and_install(self, setup_script, setup_base):
-        args = ['bdist_egg', '--dist-dir']
-
-        dist_dir = tempfile.mkdtemp(
-            prefix='egg-dist-tmp-', dir=os.path.dirname(setup_script)
-        )
-        try:
-            self._set_fetcher_options(os.path.dirname(setup_script))
-            args.append(dist_dir)
-
-            self.run_setup(setup_script, setup_base, args)
-            all_eggs = Environment([dist_dir])
-            eggs = []
-            for key in all_eggs:
-                for dist in all_eggs[key]:
-                    eggs.append(self.install_egg(dist.location, setup_base))
-            if not eggs and not self.dry_run:
-                log.warn("No eggs found in %s (setup script problem?)",
-                    dist_dir)
-            return eggs
-        finally:
-            rmtree(dist_dir)
-            log.set_verbosity(self.verbose) # restore our log verbosity
-
-    def _set_fetcher_options(self, base):
-        """
-        When easy_install is about to run bdist_egg on a source dist, that
-        source dist might have 'setup_requires' directives, requiring
-        additional fetching. Ensure the fetcher options given to easy_install
-        are available to that command as well.
-        """
-        # find the fetch options from easy_install and write them out
-        #  to the setup.cfg file.
-        ei_opts = self.distribution.get_option_dict('easy_install').copy()
-        fetch_directives = (
-            'find_links', 'site_dirs', 'index_url', 'optimize',
-            'site_dirs', 'allow_hosts',
-        )
-        fetch_options = {}
-        for key, val in ei_opts.iteritems():
-            if key not in fetch_directives: continue
-            fetch_options[key.replace('_', '-')] = val[1]
-        # create a settings dictionary suitable for `edit_config`
-        settings = dict(easy_install=fetch_options)
-        cfg_filename = os.path.join(base, 'setup.cfg')
-        setopt.edit_config(cfg_filename, settings)
-
-
-    def update_pth(self,dist):
-        if self.pth_file is None:
-            return
-
-        for d in self.pth_file[dist.key]:    # drop old entries
-            if self.multi_version or d.location != dist.location:
-                log.info("Removing %s from easy-install.pth file", d)
-                self.pth_file.remove(d)
-                if d.location in self.shadow_path:
-                    self.shadow_path.remove(d.location)
-
-        if not self.multi_version:
-            if dist.location in self.pth_file.paths:
-                log.info(
-                    "%s is already the active version in easy-install.pth",
-                    dist
-                )
-            else:
-                log.info("Adding %s to easy-install.pth file", dist)
-                self.pth_file.add(dist) # add new entry
-                if dist.location not in self.shadow_path:
-                    self.shadow_path.append(dist.location)
-
-        if not self.dry_run:
-
-            self.pth_file.save()
-            if dist.key=='distribute':
-                # Ensure that setuptools itself never becomes unavailable!
-                # XXX should this check for latest version?
-                filename = os.path.join(self.install_dir,'setuptools.pth')
-                if os.path.islink(filename): os.unlink(filename)
-                f = open(filename, 'wt')
-                f.write(self.pth_file.make_relative(dist.location)+'\n')
-                f.close()
-
-    def unpack_progress(self, src, dst):
-        # Progress filter for unpacking
-        log.debug("Unpacking %s to %s", src, dst)
-        return dst     # only unpack-and-compile skips files for dry run
-
-    def unpack_and_compile(self, egg_path, destination):
-        to_compile = []; to_chmod = []
-
-        def pf(src,dst):
-            if dst.endswith('.py') and not src.startswith('EGG-INFO/'):
-                to_compile.append(dst)
-                to_chmod.append(dst)
-            elif dst.endswith('.dll') or dst.endswith('.so'):
-                to_chmod.append(dst)
-            self.unpack_progress(src,dst)
-            return not self.dry_run and dst or None
-
-        unpack_archive(egg_path, destination, pf)
-        self.byte_compile(to_compile)
-        if not self.dry_run:
-            for f in to_chmod:
-                mode = ((os.stat(f)[stat.ST_MODE]) | 0555) & 07755
-                chmod(f, mode)
-
-    def byte_compile(self, to_compile):
-        if _dont_write_bytecode:
-            self.warn('byte-compiling is disabled, skipping.')
-            return
-
-        from distutils.util import byte_compile
-        try:
-            # try to make the byte compile messages quieter
-            log.set_verbosity(self.verbose - 1)
-
-            byte_compile(to_compile, optimize=0, force=1, dry_run=self.dry_run)
-            if self.optimize:
-                byte_compile(
-                    to_compile, optimize=self.optimize, force=1,
-                    dry_run=self.dry_run
-                )
-        finally:
-            log.set_verbosity(self.verbose)     # restore original verbosity
-
-
-
-
-
-
-
-
-    def no_default_version_msg(self):
-        return """bad install directory or PYTHONPATH
-
-You are attempting to install a package to a directory that is not
-on PYTHONPATH and which Python does not read ".pth" files from.  The
-installation directory you specified (via --install-dir, --prefix, or
-the distutils default setting) was:
-
-    %s
-
-and your PYTHONPATH environment variable currently contains:
-
-    %r
-
-Here are some of your options for correcting the problem:
-
-* You can choose a different installation directory, i.e., one that is
-  on PYTHONPATH or supports .pth files
-
-* You can add the installation directory to the PYTHONPATH environment
-  variable.  (It must then also be on PYTHONPATH whenever you run
-  Python and want to use the package(s) you are installing.)
-
-* You can set up the installation directory to support ".pth" files by
-  using one of the approaches described here:
-
-  http://packages.python.org/distribute/easy_install.html#custom-installation-locations
-
-Please make the appropriate changes for your system and try again.""" % (
-        self.install_dir, os.environ.get('PYTHONPATH','')
-    )
-
-
-
-
-
-
-
-
-
-
-    def install_site_py(self):
-        """Make sure there's a site.py in the target dir, if needed"""
-
-        if self.sitepy_installed:
-            return  # already did it, or don't need to
-
-        sitepy = os.path.join(self.install_dir, "site.py")
-        source = resource_string(Requirement.parse("distribute"), "site.py")
-        current = ""
-
-        if os.path.exists(sitepy):
-            log.debug("Checking existing site.py in %s", self.install_dir)
-            f = open(sitepy,'rb')
-            current = f.read()
-            # we want str, not bytes
-            if sys.version_info >= (3,):
-                current = current.decode()
-
-            f.close()
-            if not current.startswith('def __boot():'):
-                raise DistutilsError(
-                    "%s is not a setuptools-generated site.py; please"
-                    " remove it." % sitepy
-                )
-
-        if current != source:
-            log.info("Creating %s", sitepy)
-            if not self.dry_run:
-                ensure_directory(sitepy)
-                f = open(sitepy,'wb')
-                f.write(source)
-                f.close()
-            self.byte_compile([sitepy])
-
-        self.sitepy_installed = True
-
-
-
-
-    def create_home_path(self):
-        """Create directories under ~."""
-        if not self.user:
-            return
-        home = convert_path(os.path.expanduser("~"))
-        for name, path in self.config_vars.iteritems():
-            if path.startswith(home) and not os.path.isdir(path):
-                self.debug_print("os.makedirs('%s', 0700)" % path)
-                os.makedirs(path, 0700)
-
-
-
-
-
-
-
-    INSTALL_SCHEMES = dict(
-        posix = dict(
-            install_dir = '$base/lib/python$py_version_short/site-packages',
-            script_dir  = '$base/bin',
-        ),
-    )
-
-    DEFAULT_SCHEME = dict(
-        install_dir = '$base/Lib/site-packages',
-        script_dir  = '$base/Scripts',
-    )
-
-    def _expand(self, *attrs):
-        config_vars = self.get_finalized_command('install').config_vars
-
-        if self.prefix:
-            # Set default install_dir/scripts from --prefix
-            config_vars = config_vars.copy()
-            config_vars['base'] = self.prefix
-            scheme = self.INSTALL_SCHEMES.get(os.name,self.DEFAULT_SCHEME)
-            for attr,val in scheme.items():
-                if getattr(self,attr,None) is None:
-                    setattr(self,attr,val)
-
-        from distutils.util import subst_vars
-        for attr in attrs:
-            val = getattr(self, attr)
-            if val is not None:
-                val = subst_vars(val, config_vars)
-                if os.name == 'posix':
-                    val = os.path.expanduser(val)
-                setattr(self, attr, val)
-
-
-
-
-
-
-
-
-
-def get_site_dirs():
-    # return a list of 'site' dirs
-    sitedirs = filter(None,os.environ.get('PYTHONPATH','').split(os.pathsep))
-    prefixes = [sys.prefix]
-    if sys.exec_prefix != sys.prefix:
-        prefixes.append(sys.exec_prefix)
-    for prefix in prefixes:
-        if prefix:
-            if sys.platform in ('os2emx', 'riscos'):
-                sitedirs.append(os.path.join(prefix, "Lib", "site-packages"))
-            elif os.sep == '/':
-                sitedirs.extend([os.path.join(prefix,
-                                         "lib",
-                                         "python" + sys.version[:3],
-                                         "site-packages"),
-                            os.path.join(prefix, "lib", "site-python")])
-            else:
-                sitedirs.extend(
-                    [prefix, os.path.join(prefix, "lib", "site-packages")]
-                )
-            if sys.platform == 'darwin':
-                # for framework builds *only* we add the standard Apple
-                # locations. Currently only per-user, but /Library and
-                # /Network/Library could be added too
-                if 'Python.framework' in prefix:
-                    home = os.environ.get('HOME')
-                    if home:
-                        sitedirs.append(
-                            os.path.join(home,
-                                         'Library',
-                                         'Python',
-                                         sys.version[:3],
-                                         'site-packages'))
-    for plat_specific in (0,1):
-        site_lib = get_python_lib(plat_specific)
-        if site_lib not in sitedirs: sitedirs.append(site_lib)
-
-    if HAS_USER_SITE:
-        sitedirs.append(site.USER_SITE)
-
-    sitedirs = map(normalize_path, sitedirs)
-
-    return sitedirs
-
-
-def expand_paths(inputs):
-    """Yield sys.path directories that might contain "old-style" packages"""
-
-    seen = {}
-
-    for dirname in inputs:
-        dirname = normalize_path(dirname)
-        if dirname in seen:
-            continue
-
-        seen[dirname] = 1
-        if not os.path.isdir(dirname):
-            continue
-
-        files = os.listdir(dirname)
-        yield dirname, files
-
-        for name in files:
-            if not name.endswith('.pth'):
-                # We only care about the .pth files
-                continue
-            if name in ('easy-install.pth','setuptools.pth'):
-                # Ignore .pth files that we control
-                continue
-
-            # Read the .pth file
-            f = open(os.path.join(dirname,name))
-            lines = list(yield_lines(f))
-            f.close()
-
-            # Yield existing non-dupe, non-import directory lines from it
-            for line in lines:
-                if not line.startswith("import"):
-                    line = normalize_path(line.rstrip())
-                    if line not in seen:
-                        seen[line] = 1
-                        if not os.path.isdir(line):
-                            continue
-                        yield line, os.listdir(line)
-
-
-def extract_wininst_cfg(dist_filename):
-    """Extract configuration data from a bdist_wininst .exe
-
-    Returns a ConfigParser.RawConfigParser, or None
-    """
-    f = open(dist_filename,'rb')
-    try:
-        endrec = zipfile._EndRecData(f)
-        if endrec is None:
-            return None
-
-        prepended = (endrec[9] - endrec[5]) - endrec[6]
-        if prepended < 12:  # no wininst data here
-            return None
-        f.seek(prepended-12)
-
-        import struct, StringIO, ConfigParser
-        tag, cfglen, bmlen = struct.unpack("<iii",f.read(12))
-        if tag not in (0x1234567A, 0x1234567B):
-            return None     # not a valid tag
-
-        f.seek(prepended-(12+cfglen))
-        cfg = ConfigParser.RawConfigParser({'version':'','target_version':''})
-        try:
-            part = f.read(cfglen)
-            # part is in bytes, but we need to read up to the first null
-            #  byte.
-            if sys.version_info >= (2,6):
-                null_byte = bytes([0])
-            else:
-                null_byte = chr(0)
-            config = part.split(null_byte, 1)[0]
-            # Now the config is in bytes, but on Python 3, it must be
-            #  unicode for the RawConfigParser, so decode it. Is this the
-            #  right encoding?
-            config = config.decode('ascii')
-            cfg.readfp(StringIO.StringIO(config))
-        except ConfigParser.Error:
-            return None
-        if not cfg.has_section('metadata') or not cfg.has_section('Setup'):
-            return None
-        return cfg
-
-    finally:
-        f.close()
-
-
-
-
-
-
-
-
-def get_exe_prefixes(exe_filename):
-    """Get exe->egg path translations for a given .exe file"""
-
-    prefixes = [
-        ('PURELIB/', ''), ('PLATLIB/pywin32_system32', ''),
-        ('PLATLIB/', ''),
-        ('SCRIPTS/', 'EGG-INFO/scripts/'),
-        ('DATA/LIB/site-packages', ''),
-    ]
-    z = zipfile.ZipFile(exe_filename)
-    try:
-        for info in z.infolist():
-            name = info.filename
-            parts = name.split('/')
-            if len(parts)==3 and parts[2]=='PKG-INFO':
-                if parts[1].endswith('.egg-info'):
-                    prefixes.insert(0,('/'.join(parts[:2]), 'EGG-INFO/'))
-                    break
-            if len(parts)<>2 or not name.endswith('.pth'):
-                continue
-            if name.endswith('-nspkg.pth'):
-                continue
-            if parts[0].upper() in ('PURELIB','PLATLIB'):
-                contents = z.read(name)
-                if sys.version_info >= (3,):
-                    contents = contents.decode()
-                for pth in yield_lines(contents):
-                    pth = pth.strip().replace('\\','/')
-                    if not pth.startswith('import'):
-                        prefixes.append((('%s/%s/' % (parts[0],pth)), ''))
-    finally:
-        z.close()
-    prefixes = [(x.lower(),y) for x, y in prefixes]
-    prefixes.sort(); prefixes.reverse()
-    return prefixes
-
-
-def parse_requirement_arg(spec):
-    try:
-        return Requirement.parse(spec)
-    except ValueError:
-        raise DistutilsError(
-            "Not a URL, existing file, or requirement spec: %r" % (spec,)
-        )
-
-class PthDistributions(Environment):
-    """A .pth file with Distribution paths in it"""
-
-    dirty = False
-
-    def __init__(self, filename, sitedirs=()):
-        self.filename = filename; self.sitedirs=map(normalize_path, sitedirs)
-        self.basedir = normalize_path(os.path.dirname(self.filename))
-        self._load(); Environment.__init__(self, [], None, None)
-        for path in yield_lines(self.paths):
-            map(self.add, find_distributions(path, True))
-
-    def _load(self):
-        self.paths = []
-        saw_import = False
-        seen = dict.fromkeys(self.sitedirs)
-        if os.path.isfile(self.filename):
-            f = open(self.filename,'rt')
-            for line in f:
-                if line.startswith('import'):
-                    saw_import = True
-                    continue
-                path = line.rstrip()
-                self.paths.append(path)
-                if not path.strip() or path.strip().startswith('#'):
-                    continue
-                # skip non-existent paths, in case somebody deleted a package
-                # manually, and duplicate paths as well
-                path = self.paths[-1] = normalize_path(
-                    os.path.join(self.basedir,path)
-                )
-                if not os.path.exists(path) or path in seen:
-                    self.paths.pop()    # skip it
-                    self.dirty = True   # we cleaned up, so we're dirty now :)
-                    continue
-                seen[path] = 1
-            f.close()
-
-        if self.paths and not saw_import:
-            self.dirty = True   # ensure anything we touch has import wrappers
-        while self.paths and not self.paths[-1].strip():
-            self.paths.pop()
-
-    def save(self):
-        """Write changed .pth file back to disk"""
-        if not self.dirty:
-            return
-
-        data = '\n'.join(map(self.make_relative,self.paths))
-        if data:
-            log.debug("Saving %s", self.filename)
-            data = (
-                "import sys; sys.__plen = len(sys.path)\n"
-                "%s\n"
-                "import sys; new=sys.path[sys.__plen:];"
-                " del sys.path[sys.__plen:];"
-                " p=getattr(sys,'__egginsert',0); sys.path[p:p]=new;"
-                " sys.__egginsert = p+len(new)\n"
-            ) % data
-
-            if os.path.islink(self.filename):
-                os.unlink(self.filename)
-            f = open(self.filename,'wt')
-            f.write(data); f.close()
-
-        elif os.path.exists(self.filename):
-            log.debug("Deleting empty %s", self.filename)
-            os.unlink(self.filename)
-
-        self.dirty = False
-
-    def add(self,dist):
-        """Add `dist` to the distribution map"""
-        if (dist.location not in self.paths and (
-                dist.location not in self.sitedirs or
-                dist.location == os.getcwd() #account for '.' being in PYTHONPATH
-                )):
-            self.paths.append(dist.location)
-            self.dirty = True
-        Environment.add(self,dist)
-
-    def remove(self,dist):
-        """Remove `dist` from the distribution map"""
-        while dist.location in self.paths:
-            self.paths.remove(dist.location); self.dirty = True
-        Environment.remove(self,dist)
-
-
-    def make_relative(self,path):
-        npath, last = os.path.split(normalize_path(path))
-        baselen = len(self.basedir)
-        parts = [last]
-        sep = os.altsep=='/' and '/' or os.sep
-        while len(npath)>=baselen:
-            if npath==self.basedir:
-                parts.append(os.curdir)
-                parts.reverse()
-                return sep.join(parts)
-            npath, last = os.path.split(npath)
-            parts.append(last)
-        else:
-            return path
-
-def get_script_header(script_text, executable=sys_executable, wininst=False):
-    """Create a #! line, getting options (if any) from script_text"""
-    from distutils.command.build_scripts import first_line_re
-
-    # first_line_re in Python >=3.1.4 and >=3.2.1 is a bytes pattern.
-    if not isinstance(first_line_re.pattern, str):
-        first_line_re = re.compile(first_line_re.pattern.decode())
-
-    first = (script_text+'\n').splitlines()[0]
-    match = first_line_re.match(first)
-    options = ''
-    if match:
-        options = match.group(1) or ''
-        if options: options = ' '+options
-    if wininst:
-        executable = "python.exe"
-    else:
-        executable = nt_quote_arg(executable)
-    hdr = "#!%(executable)s%(options)s\n" % locals()
-    if not isascii(hdr):
-        # Non-ascii path to sys.executable, use -x to prevent warnings
-        if options:
-            if options.strip().startswith('-'):
-                options = ' -x'+options.strip()[1:]
-            # else: punt, we can't do it, let the warning happen anyway
-        else:
-            options = ' -x'
-    executable = fix_jython_executable(executable, options)
-    hdr = "#!%(executable)s%(options)s\n" % locals()
-    return hdr
-
-def auto_chmod(func, arg, exc):
-    if func is os.remove and os.name=='nt':
-        chmod(arg, stat.S_IWRITE)
-        return func(arg)
-    exc = sys.exc_info()
-    raise exc[0], (exc[1][0], exc[1][1] + (" %s %s" % (func,arg)))
-
-def uncache_zipdir(path):
-    """Ensure that the importer caches dont have stale info for `path`"""
-    from zipimport import _zip_directory_cache as zdc
-    _uncache(path, zdc)
-    _uncache(path, sys.path_importer_cache)
-
-def _uncache(path, cache):
-    if path in cache:
-        del cache[path]
-    else:
-        path = normalize_path(path)
-        for p in cache:
-            if normalize_path(p)==path:
-                del cache[p]
-                return
-
-def is_python(text, filename='<string>'):
-    "Is this string a valid Python script?"
-    try:
-        compile(text, filename, 'exec')
-    except (SyntaxError, TypeError):
-        return False
-    else:
-        return True
-
-def is_sh(executable):
-    """Determine if the specified executable is a .sh (contains a #! line)"""
-    try:
-        fp = open(executable)
-        magic = fp.read(2)
-        fp.close()
-    except (OSError,IOError): return executable
-    return magic == '#!'
-
-def nt_quote_arg(arg):
-    """Quote a command line argument according to Windows parsing rules"""
-
-    result = []
-    needquote = False
-    nb = 0
-
-    needquote = (" " in arg) or ("\t" in arg)
-    if needquote:
-        result.append('"')
-
-    for c in arg:
-        if c == '\\':
-            nb += 1
-        elif c == '"':
-            # double preceding backslashes, then add a \"
-            result.append('\\' * (nb*2) + '\\"')
-            nb = 0
-        else:
-            if nb:
-                result.append('\\' * nb)
-                nb = 0
-            result.append(c)
-
-    if nb:
-        result.append('\\' * nb)
-
-    if needquote:
-        result.append('\\' * nb)    # double the trailing backslashes
-        result.append('"')
-
-    return ''.join(result)
-
-
-
-
-
-
-
-
-
-def is_python_script(script_text, filename):
-    """Is this text, as a whole, a Python script? (as opposed to shell/bat/etc.
-    """
-    if filename.endswith('.py') or filename.endswith('.pyw'):
-        return True     # extension says it's Python
-    if is_python(script_text, filename):
-        return True     # it's syntactically valid Python
-    if script_text.startswith('#!'):
-        # It begins with a '#!' line, so check if 'python' is in it somewhere
-        return 'python' in script_text.splitlines()[0].lower()
-
-    return False    # Not any Python I can recognize
-
-try:
-    from os import chmod as _chmod
-except ImportError:
-    # Jython compatibility
-    def _chmod(*args): pass
-
-def chmod(path, mode):
-    log.debug("changing mode of %s to %o", path, mode)
-    try:
-        _chmod(path, mode)
-    except os.error, e:
-        log.debug("chmod failed: %s", e)
-
-def fix_jython_executable(executable, options):
-    if sys.platform.startswith('java') and is_sh(executable):
-        # Workaround for Jython is not needed on Linux systems.
-        import java
-        if java.lang.System.getProperty("os.name") == "Linux":
-            return executable
-
-        # Workaround Jython's sys.executable being a .sh (an invalid
-        # shebang line interpreter)
-        if options:
-            # Can't apply the workaround, leave it broken
-            log.warn("WARNING: Unable to adapt shebang line for Jython,"
-                             " the following script is NOT executable\n"
-                     "         see http://bugs.jython.org/issue1112 for"
-                             " more information.")
-        else:
-            return '/usr/bin/env %s' % executable
-    return executable
-
-
-def get_script_args(dist, executable=sys_executable, wininst=False):
-    """Yield write_script() argument tuples for a distribution's entrypoints"""
-    spec = str(dist.as_requirement())
-    header = get_script_header("", executable, wininst)
-    for group in 'console_scripts', 'gui_scripts':
-        for name, ep in dist.get_entry_map(group).items():
-            script_text = (
-                "# EASY-INSTALL-ENTRY-SCRIPT: %(spec)r,%(group)r,%(name)r\n"
-                "__requires__ = %(spec)r\n"
-                "import sys\n"
-                "from pkg_resources import load_entry_point\n"
-                "\n"
-                "if __name__ == '__main__':"
-                "\n"
-                "    sys.exit(\n"
-                "        load_entry_point(%(spec)r, %(group)r, %(name)r)()\n"
-                "    )\n"
-            ) % locals()
-            if sys.platform=='win32' or wininst:
-                # On Windows/wininst, add a .py extension and an .exe launcher
-                if group=='gui_scripts':
-                    ext, launcher = '-script.pyw', 'gui.exe'
-                    old = ['.pyw']
-                    new_header = re.sub('(?i)python.exe','pythonw.exe',header)
-                else:
-                    ext, launcher = '-script.py', 'cli.exe'
-                    old = ['.py','.pyc','.pyo']
-                    new_header = re.sub('(?i)pythonw.exe','python.exe',header)
-                if is_64bit():
-                    launcher = launcher.replace(".", "-64.")
-                else:
-                    launcher = launcher.replace(".", "-32.")
-                if os.path.exists(new_header[2:-1]) or sys.platform!='win32':
-                    hdr = new_header
-                else:
-                    hdr = header
-                yield (name+ext, hdr+script_text, 't', [name+x for x in old])
-                yield (
-                    name+'.exe', resource_string('setuptools', launcher),
-                    'b' # write in binary mode
-                )
-            else:
-                # On other platforms, we assume the right thing to do is to
-                # just write the stub with no extension.
-                yield (name, header+script_text)
-
-def rmtree(path, ignore_errors=False, onerror=auto_chmod):
-    """Recursively delete a directory tree.
-
-    This code is taken from the Python 2.4 version of 'shutil', because
-    the 2.3 version doesn't really work right.
-    """
-    if ignore_errors:
-        def onerror(*args):
-            pass
-    elif onerror is None:
-        def onerror(*args):
-            raise
-    names = []
-    try:
-        names = os.listdir(path)
-    except os.error, err:
-        onerror(os.listdir, path, sys.exc_info())
-    for name in names:
-        fullname = os.path.join(path, name)
-        try:
-            mode = os.lstat(fullname).st_mode
-        except os.error:
-            mode = 0
-        if stat.S_ISDIR(mode):
-            rmtree(fullname, ignore_errors, onerror)
-        else:
-            try:
-                os.remove(fullname)
-            except os.error, err:
-                onerror(os.remove, fullname, sys.exc_info())
-    try:
-        os.rmdir(path)
-    except os.error:
-        onerror(os.rmdir, path, sys.exc_info())
-
-def current_umask():
-    tmp = os.umask(022)
-    os.umask(tmp)
-    return tmp
-
-def bootstrap():
-    # This function is called when setuptools*.egg is run using /bin/sh
-    import setuptools; argv0 = os.path.dirname(setuptools.__path__[0])
-    sys.argv[0] = argv0; sys.argv.append(argv0); main()
-
-def main(argv=None, **kw):
-    from setuptools import setup
-    from setuptools.dist import Distribution
-    import distutils.core
-
-    USAGE = """\
-usage: %(script)s [options] requirement_or_url ...
-   or: %(script)s --help
-"""
-
-    def gen_usage (script_name):
-        script = os.path.basename(script_name)
-        return USAGE % vars()
-
-    def with_ei_usage(f):
-        old_gen_usage = distutils.core.gen_usage
-        try:
-            distutils.core.gen_usage = gen_usage
-            return f()
-        finally:
-            distutils.core.gen_usage = old_gen_usage
-
-    class DistributionWithoutHelpCommands(Distribution):
-        common_usage = ""
-
-        def _show_help(self,*args,**kw):
-            with_ei_usage(lambda: Distribution._show_help(self,*args,**kw))
-
-        def find_config_files(self):
-            files = Distribution.find_config_files(self)
-            if 'setup.cfg' in files:
-                files.remove('setup.cfg')
-            return files
-
-    if argv is None:
-        argv = sys.argv[1:]
-
-    with_ei_usage(lambda:
-        setup(
-            script_args = ['-q','easy_install', '-v']+argv,
-            script_name = sys.argv[0] or 'easy_install',
-            distclass=DistributionWithoutHelpCommands, **kw
-        )
-    )
-
-
-
-
diff --git a/vendor/distribute-0.6.34/setuptools/command/egg_info.py b/vendor/distribute-0.6.34/setuptools/command/egg_info.py
deleted file mode 100644
index 0c2ea0cc..00000000
--- a/vendor/distribute-0.6.34/setuptools/command/egg_info.py
+++ /dev/null
@@ -1,486 +0,0 @@
-"""setuptools.command.egg_info
-
-Create a distribution's .egg-info directory and contents"""
-
-# This module should be kept compatible with Python 2.3
-import os, re, sys
-from setuptools import Command
-from distutils.errors import *
-from distutils import log
-from setuptools.command.sdist import sdist
-from distutils.util import convert_path
-from distutils.filelist import FileList as _FileList
-from pkg_resources import parse_requirements, safe_name, parse_version, \
-    safe_version, yield_lines, EntryPoint, iter_entry_points, to_filename
-from sdist import walk_revctrl
-
-class egg_info(Command):
-    description = "create a distribution's .egg-info directory"
-
-    user_options = [
-        ('egg-base=', 'e', "directory containing .egg-info directories"
-                           " (default: top of the source tree)"),
-        ('tag-svn-revision', 'r',
-            "Add subversion revision ID to version number"),
-        ('tag-date', 'd', "Add date stamp (e.g. 20050528) to version number"),
-        ('tag-build=', 'b', "Specify explicit tag to add to version number"),
-        ('no-svn-revision', 'R',
-            "Don't add subversion revision ID [default]"),
-        ('no-date', 'D', "Don't include date stamp [default]"),
-    ]
-
-    boolean_options = ['tag-date', 'tag-svn-revision']
-    negative_opt = {'no-svn-revision': 'tag-svn-revision',
-                    'no-date': 'tag-date'}
-
-
-
-
-
-
-
-    def initialize_options(self):
-        self.egg_name = None
-        self.egg_version = None
-        self.egg_base = None
-        self.egg_info = None
-        self.tag_build = None
-        self.tag_svn_revision = 0
-        self.tag_date = 0
-        self.broken_egg_info = False
-        self.vtags = None
-
-    def save_version_info(self, filename):
-        from setopt import edit_config
-        edit_config(
-            filename,
-            {'egg_info':
-                {'tag_svn_revision':0, 'tag_date': 0, 'tag_build': self.tags()}
-            }
-        )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    def finalize_options (self):
-        self.egg_name = safe_name(self.distribution.get_name())
-        self.vtags = self.tags()
-        self.egg_version = self.tagged_version()
-
-        try:
-            list(
-                parse_requirements('%s==%s' % (self.egg_name,self.egg_version))
-            )
-        except ValueError:
-            raise DistutilsOptionError(
-                "Invalid distribution name or version syntax: %s-%s" %
-                (self.egg_name,self.egg_version)
-            )
-
-        if self.egg_base is None:
-            dirs = self.distribution.package_dir
-            self.egg_base = (dirs or {}).get('',os.curdir)
-
-        self.ensure_dirname('egg_base')
-        self.egg_info = to_filename(self.egg_name)+'.egg-info'
-        if self.egg_base != os.curdir:
-            self.egg_info = os.path.join(self.egg_base, self.egg_info)
-        if '-' in self.egg_name: self.check_broken_egg_info()
-
-        # Set package version for the benefit of dumber commands
-        # (e.g. sdist, bdist_wininst, etc.)
-        #
-        self.distribution.metadata.version = self.egg_version
-
-        # If we bootstrapped around the lack of a PKG-INFO, as might be the
-        # case in a fresh checkout, make sure that any special tags get added
-        # to the version info
-        #
-        pd = self.distribution._patched_dist
-        if pd is not None and pd.key==self.egg_name.lower():
-            pd._version = self.egg_version
-            pd._parsed_version = parse_version(self.egg_version)
-            self.distribution._patched_dist = None
-
-
-    def write_or_delete_file(self, what, filename, data, force=False):
-        """Write `data` to `filename` or delete if empty
-
-        If `data` is non-empty, this routine is the same as ``write_file()``.
-        If `data` is empty but not ``None``, this is the same as calling
-        ``delete_file(filename)`.  If `data` is ``None``, then this is a no-op
-        unless `filename` exists, in which case a warning is issued about the
-        orphaned file (if `force` is false), or deleted (if `force` is true).
-        """
-        if data:
-            self.write_file(what, filename, data)
-        elif os.path.exists(filename):
-            if data is None and not force:
-                log.warn(
-                    "%s not set in setup(), but %s exists", what, filename
-                )
-                return
-            else:
-                self.delete_file(filename)
-
-    def write_file(self, what, filename, data):
-        """Write `data` to `filename` (if not a dry run) after announcing it
-
-        `what` is used in a log message to identify what is being written
-        to the file.
-        """
-        log.info("writing %s to %s", what, filename)
-        if sys.version_info >= (3,):
-            data = data.encode("utf-8")
-        if not self.dry_run:
-            f = open(filename, 'wb')
-            f.write(data)
-            f.close()
-
-    def delete_file(self, filename):
-        """Delete `filename` (if not a dry run) after announcing it"""
-        log.info("deleting %s", filename)
-        if not self.dry_run:
-            os.unlink(filename)
-
-    def tagged_version(self):
-        version = self.distribution.get_version()
-        # egg_info may be called more than once for a distribution,
-        # in which case the version string already contains all tags.
-        if self.vtags and version.endswith(self.vtags):
-            return safe_version(version)
-        return safe_version(version + self.vtags)
-
-    def run(self):
-        self.mkpath(self.egg_info)
-        installer = self.distribution.fetch_build_egg
-        for ep in iter_entry_points('egg_info.writers'):
-            writer = ep.load(installer=installer)
-            writer(self, ep.name, os.path.join(self.egg_info,ep.name))
-
-        # Get rid of native_libs.txt if it was put there by older bdist_egg
-        nl = os.path.join(self.egg_info, "native_libs.txt")
-        if os.path.exists(nl):
-            self.delete_file(nl)
-
-        self.find_sources()
-
-    def tags(self):
-        version = ''
-        if self.tag_build:
-            version+=self.tag_build
-        if self.tag_svn_revision and (
-            os.path.exists('.svn') or os.path.exists('PKG-INFO')
-        ):  version += '-r%s' % self.get_svn_revision()
-        if self.tag_date:
-            import time; version += time.strftime("-%Y%m%d")
-        return version
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    def get_svn_revision(self):
-        revision = 0
-        urlre = re.compile('url="([^"]+)"')
-        revre = re.compile('committed-rev="(\d+)"')
-
-        for base,dirs,files in os.walk(os.curdir):
-            if '.svn' not in dirs:
-                dirs[:] = []
-                continue    # no sense walking uncontrolled subdirs
-            dirs.remove('.svn')
-            f = open(os.path.join(base,'.svn','entries'))
-            data = f.read()
-            f.close()
-
-            if data.startswith('10') or data.startswith('9') or data.startswith('8'):
-                data = map(str.splitlines,data.split('\n\x0c\n'))
-                del data[0][0]  # get rid of the '8' or '9' or '10'
-                dirurl = data[0][3]
-                localrev = max([int(d[9]) for d in data if len(d)>9 and d[9]]+[0])
-            elif data.startswith('<?xml'):
-                dirurl = urlre.search(data).group(1)    # get repository URL
-                localrev = max([int(m.group(1)) for m in revre.finditer(data)]+[0])
-            else:
-                log.warn("unrecognized .svn/entries format; skipping %s", base)
-                dirs[:] = []
-                continue
-            if base==os.curdir:
-                base_url = dirurl+'/'   # save the root url
-            elif not dirurl.startswith(base_url):
-                dirs[:] = []
-                continue    # not part of the same svn tree, skip it
-            revision = max(revision, localrev)
-
-        return str(revision or get_pkg_info_revision())
-
-
-
-
-
-
-
-    def find_sources(self):
-        """Generate SOURCES.txt manifest file"""
-        manifest_filename = os.path.join(self.egg_info,"SOURCES.txt")
-        mm = manifest_maker(self.distribution)
-        mm.manifest = manifest_filename
-        mm.run()
-        self.filelist = mm.filelist
-
-    def check_broken_egg_info(self):
-        bei = self.egg_name+'.egg-info'
-        if self.egg_base != os.curdir:
-            bei = os.path.join(self.egg_base, bei)
-        if os.path.exists(bei):
-            log.warn(
-                "-"*78+'\n'
-                "Note: Your current .egg-info directory has a '-' in its name;"
-                '\nthis will not work correctly with "setup.py develop".\n\n'
-                'Please rename %s to %s to correct this problem.\n'+'-'*78,
-                bei, self.egg_info
-            )
-            self.broken_egg_info = self.egg_info
-            self.egg_info = bei     # make it work for now
-
-class FileList(_FileList):
-    """File list that accepts only existing, platform-independent paths"""
-
-    def append(self, item):
-        if item.endswith('\r'):     # Fix older sdists built on Windows
-            item = item[:-1]
-        path = convert_path(item)
-
-        if sys.version_info >= (3,):
-            try:
-                if os.path.exists(path) or os.path.exists(path.encode('utf-8')):
-                    self.files.append(path)
-            except UnicodeEncodeError:
-                # Accept UTF-8 filenames even if LANG=C
-                if os.path.exists(path.encode('utf-8')):
-                    self.files.append(path)
-                else:
-                    log.warn("'%s' not %s encodable -- skipping", path,
-                        sys.getfilesystemencoding())
-        else:
-            if os.path.exists(path):
-                self.files.append(path)
-
-
-
-
-
-
-
-
-class manifest_maker(sdist):
-
-    template = "MANIFEST.in"
-
-    def initialize_options (self):
-        self.use_defaults = 1
-        self.prune = 1
-        self.manifest_only = 1
-        self.force_manifest = 1
-
-    def finalize_options(self):
-        pass
-
-    def run(self):
-        self.filelist = FileList()
-        if not os.path.exists(self.manifest):
-            self.write_manifest()   # it must exist so it'll get in the list
-        self.filelist.findall()
-        self.add_defaults()
-        if os.path.exists(self.template):
-            self.read_template()
-        self.prune_file_list()
-        self.filelist.sort()
-        self.filelist.remove_duplicates()
-        self.write_manifest()
-
-    def write_manifest (self):
-        """Write the file list in 'self.filelist' (presumably as filled in
-        by 'add_defaults()' and 'read_template()') to the manifest file
-        named by 'self.manifest'.
-        """
-        # The manifest must be UTF-8 encodable. See #303.
-        if sys.version_info >= (3,):
-            files = []
-            for file in self.filelist.files:
-                try:
-                    file.encode("utf-8")
-                except UnicodeEncodeError:
-                    log.warn("'%s' not UTF-8 encodable -- skipping" % file)
-                else:
-                    files.append(file)
-            self.filelist.files = files
-
-        files = self.filelist.files
-        if os.sep!='/':
-            files = [f.replace(os.sep,'/') for f in files]
-        self.execute(write_file, (self.manifest, files),
-                     "writing manifest file '%s'" % self.manifest)
-
-    def warn(self, msg):    # suppress missing-file warnings from sdist
-        if not msg.startswith("standard file not found:"):
-            sdist.warn(self, msg)
-
-    def add_defaults(self):
-        sdist.add_defaults(self)
-        self.filelist.append(self.template)
-        self.filelist.append(self.manifest)
-        rcfiles = list(walk_revctrl())
-        if rcfiles:
-            self.filelist.extend(rcfiles)
-        elif os.path.exists(self.manifest):
-            self.read_manifest()
-        ei_cmd = self.get_finalized_command('egg_info')
-        self.filelist.include_pattern("*", prefix=ei_cmd.egg_info)
-
-    def prune_file_list (self):
-        build = self.get_finalized_command('build')
-        base_dir = self.distribution.get_fullname()
-        self.filelist.exclude_pattern(None, prefix=build.build_base)
-        self.filelist.exclude_pattern(None, prefix=base_dir)
-        sep = re.escape(os.sep)
-        self.filelist.exclude_pattern(sep+r'(RCS|CVS|\.svn)'+sep, is_regex=1)
-
-
-def write_file (filename, contents):
-    """Create a file with the specified name and write 'contents' (a
-    sequence of strings without line terminators) to it.
-    """
-    contents = "\n".join(contents)
-    if sys.version_info >= (3,):
-        contents = contents.encode("utf-8")
-    f = open(filename, "wb")        # always write POSIX-style manifest
-    f.write(contents)
-    f.close()
-
-
-
-
-
-
-
-
-
-
-
-
-
-def write_pkg_info(cmd, basename, filename):
-    log.info("writing %s", filename)
-    if not cmd.dry_run:
-        metadata = cmd.distribution.metadata
-        metadata.version, oldver = cmd.egg_version, metadata.version
-        metadata.name, oldname   = cmd.egg_name, metadata.name
-        try:
-            # write unescaped data to PKG-INFO, so older pkg_resources
-            # can still parse it
-            metadata.write_pkg_info(cmd.egg_info)
-        finally:
-            metadata.name, metadata.version = oldname, oldver
-
-        safe = getattr(cmd.distribution,'zip_safe',None)
-        import bdist_egg; bdist_egg.write_safety_flag(cmd.egg_info, safe)
-
-def warn_depends_obsolete(cmd, basename, filename):
-    if os.path.exists(filename):
-        log.warn(
-            "WARNING: 'depends.txt' is not used by setuptools 0.6!\n"
-            "Use the install_requires/extras_require setup() args instead."
-        )
-
-
-def write_requirements(cmd, basename, filename):
-    dist = cmd.distribution
-    data = ['\n'.join(yield_lines(dist.install_requires or ()))]
-    for extra,reqs in (dist.extras_require or {}).items():
-        data.append('\n\n[%s]\n%s' % (extra, '\n'.join(yield_lines(reqs))))
-    cmd.write_or_delete_file("requirements", filename, ''.join(data))
-
-def write_toplevel_names(cmd, basename, filename):
-    pkgs = dict.fromkeys(
-        [k.split('.',1)[0]
-            for k in cmd.distribution.iter_distribution_names()
-        ]
-    )
-    cmd.write_file("top-level names", filename, '\n'.join(pkgs)+'\n')
-
-
-
-def overwrite_arg(cmd, basename, filename):
-    write_arg(cmd, basename, filename, True)
-
-def write_arg(cmd, basename, filename, force=False):
-    argname = os.path.splitext(basename)[0]
-    value = getattr(cmd.distribution, argname, None)
-    if value is not None:
-        value = '\n'.join(value)+'\n'
-    cmd.write_or_delete_file(argname, filename, value, force)
-
-def write_entries(cmd, basename, filename):
-    ep = cmd.distribution.entry_points
-
-    if isinstance(ep,basestring) or ep is None:
-        data = ep
-    elif ep is not None:
-        data = []
-        for section, contents in ep.items():
-            if not isinstance(contents,basestring):
-                contents = EntryPoint.parse_group(section, contents)
-                contents = '\n'.join(map(str,contents.values()))
-            data.append('[%s]\n%s\n\n' % (section,contents))
-        data = ''.join(data)
-
-    cmd.write_or_delete_file('entry points', filename, data, True)
-
-def get_pkg_info_revision():
-    # See if we can get a -r### off of PKG-INFO, in case this is an sdist of
-    # a subversion revision
-    #
-    if os.path.exists('PKG-INFO'):
-        f = open('PKG-INFO','rU')
-        for line in f:
-            match = re.match(r"Version:.*-r(\d+)\s*$", line)
-            if match:
-                return int(match.group(1))
-        f.close()
-    return 0
-
-
-
-#
diff --git a/vendor/distribute-0.6.34/setuptools/command/install.py b/vendor/distribute-0.6.34/setuptools/command/install.py
deleted file mode 100644
index 247c4f25..00000000
--- a/vendor/distribute-0.6.34/setuptools/command/install.py
+++ /dev/null
@@ -1,124 +0,0 @@
-import setuptools, sys, glob
-from distutils.command.install import install as _install
-from distutils.errors import DistutilsArgError
-
-class install(_install):
-    """Use easy_install to install the package, w/dependencies"""
-
-    user_options = _install.user_options + [
-        ('old-and-unmanageable', None, "Try not to use this!"),
-        ('single-version-externally-managed', None,
-            "used by system package builders to create 'flat' eggs"),
-    ]
-    boolean_options = _install.boolean_options + [
-        'old-and-unmanageable', 'single-version-externally-managed',
-    ]
-    new_commands = [
-        ('install_egg_info', lambda self: True),
-        ('install_scripts',  lambda self: True),
-    ]
-    _nc = dict(new_commands)
-
-    def initialize_options(self):
-        _install.initialize_options(self)
-        self.old_and_unmanageable = None
-        self.single_version_externally_managed = None
-        self.no_compile = None  # make DISTUTILS_DEBUG work right!
-
-    def finalize_options(self):
-        _install.finalize_options(self)
-        if self.root:
-            self.single_version_externally_managed = True
-        elif self.single_version_externally_managed:
-            if not self.root and not self.record:
-                raise DistutilsArgError(
-                    "You must specify --record or --root when building system"
-                    " packages"
-                )
-
-    def handle_extra_path(self):
-        if self.root or self.single_version_externally_managed:
-            # explicit backward-compatibility mode, allow extra_path to work
-            return _install.handle_extra_path(self)
-
-        # Ignore extra_path when installing an egg (or being run by another
-        # command without --root or --single-version-externally-managed
-        self.path_file = None
-        self.extra_dirs = ''
-
-
-    def run(self):
-        # Explicit request for old-style install?  Just do it
-        if self.old_and_unmanageable or self.single_version_externally_managed:
-            return _install.run(self)
-
-        # Attempt to detect whether we were called from setup() or by another
-        # command.  If we were called by setup(), our caller will be the
-        # 'run_command' method in 'distutils.dist', and *its* caller will be
-        # the 'run_commands' method.  If we were called any other way, our
-        # immediate caller *might* be 'run_command', but it won't have been
-        # called by 'run_commands'.  This is slightly kludgy, but seems to
-        # work.
-        #
-        caller = sys._getframe(2)
-        caller_module = caller.f_globals.get('__name__','')
-        caller_name = caller.f_code.co_name
-
-        if caller_module != 'distutils.dist' or caller_name!='run_commands':
-            # We weren't called from the command line or setup(), so we
-            # should run in backward-compatibility mode to support bdist_*
-            # commands.
-            _install.run(self)
-        else:
-            self.do_egg_install()
-
-
-
-
-
-
-    def do_egg_install(self):
-
-        easy_install = self.distribution.get_command_class('easy_install')
-
-        cmd = easy_install(
-            self.distribution, args="x", root=self.root, record=self.record,
-        )
-        cmd.ensure_finalized()  # finalize before bdist_egg munges install cmd
-        cmd.always_copy_from = '.'  # make sure local-dir eggs get installed
-
-        # pick up setup-dir .egg files only: no .egg-info
-        cmd.package_index.scan(glob.glob('*.egg'))
-
-        self.run_command('bdist_egg')
-        args = [self.distribution.get_command_obj('bdist_egg').egg_output]
-
-        if setuptools.bootstrap_install_from:
-            # Bootstrap self-installation of setuptools
-            args.insert(0, setuptools.bootstrap_install_from)
-
-        cmd.args = args
-        cmd.run()
-        setuptools.bootstrap_install_from = None
-
-# XXX Python 3.1 doesn't see _nc if this is inside the class
-install.sub_commands = [
-        cmd for cmd in _install.sub_commands if cmd[0] not in install._nc
-    ] + install.new_commands
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#
diff --git a/vendor/distribute-0.6.34/setuptools/command/install_egg_info.py b/vendor/distribute-0.6.34/setuptools/command/install_egg_info.py
deleted file mode 100644
index f44b34b5..00000000
--- a/vendor/distribute-0.6.34/setuptools/command/install_egg_info.py
+++ /dev/null
@@ -1,125 +0,0 @@
-from setuptools import Command
-from setuptools.archive_util import unpack_archive
-from distutils import log, dir_util
-import os, shutil, pkg_resources
-
-class install_egg_info(Command):
-    """Install an .egg-info directory for the package"""
-
-    description = "Install an .egg-info directory for the package"
-
-    user_options = [
-        ('install-dir=', 'd', "directory to install to"),
-    ]
-
-    def initialize_options(self):
-        self.install_dir = None
-
-    def finalize_options(self):
-        self.set_undefined_options('install_lib',('install_dir','install_dir'))
-        ei_cmd = self.get_finalized_command("egg_info")
-        basename = pkg_resources.Distribution(
-            None, None, ei_cmd.egg_name, ei_cmd.egg_version
-        ).egg_name()+'.egg-info'
-        self.source = ei_cmd.egg_info
-        self.target = os.path.join(self.install_dir, basename)
-        self.outputs = [self.target]
-
-    def run(self):
-        self.run_command('egg_info')
-        target = self.target
-        if os.path.isdir(self.target) and not os.path.islink(self.target):
-            dir_util.remove_tree(self.target, dry_run=self.dry_run)
-        elif os.path.exists(self.target):
-            self.execute(os.unlink,(self.target,),"Removing "+self.target)
-        if not self.dry_run:
-            pkg_resources.ensure_directory(self.target)
-        self.execute(self.copytree, (),
-            "Copying %s to %s" % (self.source, self.target)
-        )
-        self.install_namespaces()
-
-    def get_outputs(self):
-        return self.outputs
-
-    def copytree(self):
-        # Copy the .egg-info tree to site-packages
-        def skimmer(src,dst):
-            # filter out source-control directories; note that 'src' is always
-            # a '/'-separated path, regardless of platform.  'dst' is a
-            # platform-specific path.
-            for skip in '.svn/','CVS/':
-                if src.startswith(skip) or '/'+skip in src:
-                    return None
-            self.outputs.append(dst)
-            log.debug("Copying %s to %s", src, dst)
-            return dst
-        unpack_archive(self.source, self.target, skimmer)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    def install_namespaces(self):
-        nsp = self._get_all_ns_packages()
-        if not nsp: return
-        filename,ext = os.path.splitext(self.target)
-        filename += '-nspkg.pth'; self.outputs.append(filename)
-        log.info("Installing %s",filename)
-        if not self.dry_run:
-            f = open(filename,'wt')
-            for pkg in nsp:
-                # ensure pkg is not a unicode string under Python 2.7
-                pkg = str(pkg)
-                pth = tuple(pkg.split('.'))
-                trailer = '\n'
-                if '.' in pkg:
-                    trailer = (
-                        "; m and setattr(sys.modules[%r], %r, m)\n"
-                        % ('.'.join(pth[:-1]), pth[-1])
-                    )
-                f.write(
-                    "import sys,types,os; "
-                    "p = os.path.join(sys._getframe(1).f_locals['sitedir'], "
-                        "*%(pth)r); "
-                    "ie = os.path.exists(os.path.join(p,'__init__.py')); "
-                    "m = not ie and "
-                        "sys.modules.setdefault(%(pkg)r,types.ModuleType(%(pkg)r)); "
-                    "mp = (m or []) and m.__dict__.setdefault('__path__',[]); "
-                    "(p not in mp) and mp.append(p)%(trailer)s"
-                    % locals()
-                )
-            f.close()
-
-    def _get_all_ns_packages(self):
-        nsp = {}
-        for pkg in self.distribution.namespace_packages or []:
-            pkg = pkg.split('.')
-            while pkg:
-                nsp['.'.join(pkg)] = 1
-                pkg.pop()
-        nsp=list(nsp)
-        nsp.sort()  # set up shorter names first
-        return nsp
-
-
diff --git a/vendor/distribute-0.6.34/setuptools/command/install_lib.py b/vendor/distribute-0.6.34/setuptools/command/install_lib.py
deleted file mode 100644
index 82afa142..00000000
--- a/vendor/distribute-0.6.34/setuptools/command/install_lib.py
+++ /dev/null
@@ -1,82 +0,0 @@
-from distutils.command.install_lib import install_lib as _install_lib
-import os
-
-class install_lib(_install_lib):
-    """Don't add compiled flags to filenames of non-Python files"""
-
-    def _bytecode_filenames (self, py_filenames):
-        bytecode_files = []
-        for py_file in py_filenames:
-            if not py_file.endswith('.py'):
-                continue
-            if self.compile:
-                bytecode_files.append(py_file + "c")
-            if self.optimize > 0:
-                bytecode_files.append(py_file + "o")
-
-        return bytecode_files
-
-    def run(self):
-        self.build()
-        outfiles = self.install()
-        if outfiles is not None:
-            # always compile, in case we have any extension stubs to deal with
-            self.byte_compile(outfiles)
-
-    def get_exclusions(self):
-        exclude = {}
-        nsp = self.distribution.namespace_packages
-
-        if (nsp and self.get_finalized_command('install')
-               .single_version_externally_managed
-        ):
-            for pkg in nsp:
-                parts = pkg.split('.')
-                while parts:
-                    pkgdir = os.path.join(self.install_dir, *parts)
-                    for f in '__init__.py', '__init__.pyc', '__init__.pyo':
-                        exclude[os.path.join(pkgdir,f)] = 1
-                    parts.pop()
-        return exclude
-
-    def copy_tree(
-        self, infile, outfile,
-        preserve_mode=1, preserve_times=1, preserve_symlinks=0, level=1
-    ):
-        assert preserve_mode and preserve_times and not preserve_symlinks
-        exclude = self.get_exclusions()
-
-        if not exclude:
-            return _install_lib.copy_tree(self, infile, outfile)
-
-        # Exclude namespace package __init__.py* files from the output
-
-        from setuptools.archive_util import unpack_directory
-        from distutils import log
-
-        outfiles = []
-
-        def pf(src, dst):
-            if dst in exclude:
-                log.warn("Skipping installation of %s (namespace package)",dst)
-                return False
-
-            log.info("copying %s -> %s", src, os.path.dirname(dst))
-            outfiles.append(dst)
-            return dst
-
-        unpack_directory(infile, outfile, pf)
-        return outfiles
-
-    def get_outputs(self):
-        outputs = _install_lib.get_outputs(self)
-        exclude = self.get_exclusions()
-        if exclude:
-            return [f for f in outputs if f not in exclude]
-        return outputs
-
-
-
-
-
-
diff --git a/vendor/distribute-0.6.34/setuptools/command/install_scripts.py b/vendor/distribute-0.6.34/setuptools/command/install_scripts.py
deleted file mode 100644
index 82456035..00000000
--- a/vendor/distribute-0.6.34/setuptools/command/install_scripts.py
+++ /dev/null
@@ -1,54 +0,0 @@
-from distutils.command.install_scripts import install_scripts \
-     as _install_scripts
-from pkg_resources import Distribution, PathMetadata, ensure_directory
-import os
-from distutils import log
-
-class install_scripts(_install_scripts):
-    """Do normal script install, plus any egg_info wrapper scripts"""
-
-    def initialize_options(self):
-        _install_scripts.initialize_options(self)
-        self.no_ep = False
-
-    def run(self):
-        from setuptools.command.easy_install import get_script_args
-        from setuptools.command.easy_install import sys_executable
-
-        self.run_command("egg_info")
-        if self.distribution.scripts:
-            _install_scripts.run(self)  # run first to set up self.outfiles
-        else:
-            self.outfiles = []
-        if self.no_ep:
-            # don't install entry point scripts into .egg file!
-            return
-
-        ei_cmd = self.get_finalized_command("egg_info")
-        dist = Distribution(
-            ei_cmd.egg_base, PathMetadata(ei_cmd.egg_base, ei_cmd.egg_info),
-            ei_cmd.egg_name, ei_cmd.egg_version,
-        )
-        bs_cmd = self.get_finalized_command('build_scripts')
-        executable = getattr(bs_cmd,'executable',sys_executable)
-        is_wininst = getattr(
-            self.get_finalized_command("bdist_wininst"), '_is_running', False
-        )
-        for args in get_script_args(dist, executable, is_wininst):
-            self.write_script(*args)
-
-    def write_script(self, script_name, contents, mode="t", *ignored):
-        """Write an executable file to the scripts directory"""
-        from setuptools.command.easy_install import chmod, current_umask
-        log.info("Installing %s script to %s", script_name, self.install_dir)
-        target = os.path.join(self.install_dir, script_name)
-        self.outfiles.append(target)
-
-        mask = current_umask()
-        if not self.dry_run:
-            ensure_directory(target)
-            f = open(target,"w"+mode)
-            f.write(contents)
-            f.close()
-            chmod(target, 0777-mask)
-
diff --git a/vendor/distribute-0.6.34/setuptools/command/register.py b/vendor/distribute-0.6.34/setuptools/command/register.py
deleted file mode 100644
index 3b2e0859..00000000
--- a/vendor/distribute-0.6.34/setuptools/command/register.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from distutils.command.register import register as _register
-
-class register(_register):
-    __doc__ = _register.__doc__
-
-    def run(self):
-        # Make sure that we are using valid current name/version info
-        self.run_command('egg_info')
-        _register.run(self)
-
diff --git a/vendor/distribute-0.6.34/setuptools/command/rotate.py b/vendor/distribute-0.6.34/setuptools/command/rotate.py
deleted file mode 100644
index 11b6eae8..00000000
--- a/vendor/distribute-0.6.34/setuptools/command/rotate.py
+++ /dev/null
@@ -1,82 +0,0 @@
-import distutils, os
-from setuptools import Command
-from distutils.util import convert_path
-from distutils import log
-from distutils.errors import *
-
-class rotate(Command):
-    """Delete older distributions"""
-
-    description = "delete older distributions, keeping N newest files"
-    user_options = [
-        ('match=',    'm', "patterns to match (required)"),
-        ('dist-dir=', 'd', "directory where the distributions are"),
-        ('keep=',     'k', "number of matching distributions to keep"),
-    ]
-
-    boolean_options = []
-
-    def initialize_options(self):
-        self.match = None
-        self.dist_dir = None
-        self.keep = None
-
-    def finalize_options(self):
-        if self.match is None:
-            raise DistutilsOptionError(
-                "Must specify one or more (comma-separated) match patterns "
-                "(e.g. '.zip' or '.egg')"
-            )
-        if self.keep is None:
-            raise DistutilsOptionError("Must specify number of files to keep")           
-        try:
-            self.keep = int(self.keep)
-        except ValueError:
-            raise DistutilsOptionError("--keep must be an integer")
-        if isinstance(self.match, basestring):
-            self.match = [
-                convert_path(p.strip()) for p in self.match.split(',')
-            ]
-        self.set_undefined_options('bdist',('dist_dir', 'dist_dir'))
-
-    def run(self):
-        self.run_command("egg_info")
-        from glob import glob
-        for pattern in self.match:
-            pattern = self.distribution.get_name()+'*'+pattern
-            files = glob(os.path.join(self.dist_dir,pattern))
-            files = [(os.path.getmtime(f),f) for f in files]
-            files.sort()
-            files.reverse()
-
-            log.info("%d file(s) matching %s", len(files), pattern)
-            files = files[self.keep:]
-            for (t,f) in files:
-                log.info("Deleting %s", f)
-                if not self.dry_run:
-                    os.unlink(f)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vendor/distribute-0.6.34/setuptools/command/saveopts.py b/vendor/distribute-0.6.34/setuptools/command/saveopts.py
deleted file mode 100644
index 1180a440..00000000
--- a/vendor/distribute-0.6.34/setuptools/command/saveopts.py
+++ /dev/null
@@ -1,25 +0,0 @@
-import distutils, os
-from setuptools import Command
-from setuptools.command.setopt import edit_config, option_base
-
-class saveopts(option_base):
-    """Save command-line options to a file"""
-
-    description = "save supplied options to setup.cfg or other config file"
-
-    def run(self):
-        dist = self.distribution
-        commands = dist.command_options.keys()
-        settings = {}
-
-        for cmd in commands:
-
-            if cmd=='saveopts':
-                continue    # don't save our own options!
-
-            for opt,(src,val) in dist.get_option_dict(cmd).items():
-                if src=="command line":
-                    settings.setdefault(cmd,{})[opt] = val
-
-        edit_config(self.filename, settings, self.dry_run)
-
diff --git a/vendor/distribute-0.6.34/setuptools/command/sdist.py b/vendor/distribute-0.6.34/setuptools/command/sdist.py
deleted file mode 100644
index 2fa3771a..00000000
--- a/vendor/distribute-0.6.34/setuptools/command/sdist.py
+++ /dev/null
@@ -1,313 +0,0 @@
-from distutils.command.sdist import sdist as _sdist
-from distutils.util import convert_path
-from distutils import log
-import os, re, sys, pkg_resources
-from glob import glob
-
-READMES = ('README', 'README.rst', 'README.txt')
-
-entities = [
-    ("&lt;","<"), ("&gt;", ">"), ("&quot;", '"'), ("&apos;", "'"),
-    ("&amp;", "&")
-]
-
-def unescape(data):
-    for old,new in entities:
-        data = data.replace(old,new)
-    return data
-
-def re_finder(pattern, postproc=None):
-    def find(dirname, filename):
-        f = open(filename,'rU')
-        data = f.read()
-        f.close()
-        for match in pattern.finditer(data):
-            path = match.group(1)
-            if postproc:
-                path = postproc(path)
-            yield joinpath(dirname,path)
-    return find
-
-def joinpath(prefix,suffix):
-    if not prefix:
-        return suffix
-    return os.path.join(prefix,suffix)
-
-
-
-
-
-
-
-
-
-
-def walk_revctrl(dirname=''):
-    """Find all files under revision control"""
-    for ep in pkg_resources.iter_entry_points('setuptools.file_finders'):
-        for item in ep.load()(dirname):
-            yield item
-
-def _default_revctrl(dirname=''):
-    for path, finder in finders:
-        path = joinpath(dirname,path)
-        if os.path.isfile(path):
-            for path in finder(dirname,path):
-                if os.path.isfile(path):
-                    yield path
-                elif os.path.isdir(path):
-                    for item in _default_revctrl(path):
-                        yield item
-
-def externals_finder(dirname, filename):
-    """Find any 'svn:externals' directories"""
-    found = False
-    f = open(filename,'rt')
-    for line in iter(f.readline, ''):    # can't use direct iter!
-        parts = line.split()
-        if len(parts)==2:
-            kind,length = parts
-            data = f.read(int(length))
-            if kind=='K' and data=='svn:externals':
-                found = True
-            elif kind=='V' and found:
-                f.close()
-                break
-    else:
-        f.close()
-        return
-
-    for line in data.splitlines():
-        parts = line.split()
-        if parts:
-            yield joinpath(dirname, parts[0])
-
-
-entries_pattern = re.compile(r'name="([^"]+)"(?![^>]+deleted="true")', re.I)
-
-def entries_finder(dirname, filename):
-    f = open(filename,'rU')
-    data = f.read()
-    f.close()
-    if data.startswith('10') or data.startswith('9') or data.startswith('8'):
-        for record in map(str.splitlines, data.split('\n\x0c\n')[1:]):
-            # subversion 1.6/1.5/1.4
-            if not record or len(record)>=6 and record[5]=="delete":
-                continue    # skip deleted
-            yield joinpath(dirname, record[0])
-    elif data.startswith('<?xml'):
-        for match in entries_pattern.finditer(data):
-            yield joinpath(dirname,unescape(match.group(1)))
-    else:
-        log.warn("unrecognized .svn/entries format in %s", os.path.abspath(dirname))
-
-
-finders = [
-    (convert_path('CVS/Entries'),
-        re_finder(re.compile(r"^\w?/([^/]+)/", re.M))),
-    (convert_path('.svn/entries'), entries_finder),
-    (convert_path('.svn/dir-props'), externals_finder),
-    (convert_path('.svn/dir-prop-base'), externals_finder),  # svn 1.4
-]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-class sdist(_sdist):
-    """Smart sdist that finds anything supported by revision control"""
-
-    user_options = [
-        ('formats=', None,
-         "formats for source distribution (comma-separated list)"),
-        ('keep-temp', 'k',
-         "keep the distribution tree around after creating " +
-         "archive file(s)"),
-        ('dist-dir=', 'd',
-         "directory to put the source distribution archive(s) in "
-         "[default: dist]"),
-        ]
-
-    negative_opt = {}
-
-    def run(self):
-        self.run_command('egg_info')
-        ei_cmd = self.get_finalized_command('egg_info')
-        self.filelist = ei_cmd.filelist
-        self.filelist.append(os.path.join(ei_cmd.egg_info,'SOURCES.txt'))
-        self.check_readme()
-
-        # Run sub commands
-        for cmd_name in self.get_sub_commands():
-            self.run_command(cmd_name)
-
-        # Call check_metadata only if no 'check' command
-        # (distutils <= 2.6)
-        import distutils.command
-        if 'check' not in distutils.command.__all__:
-            self.check_metadata()
-            
-        self.make_distribution()
-
-        dist_files = getattr(self.distribution,'dist_files',[])
-        for file in self.archive_files:
-            data = ('sdist', '', file)
-            if data not in dist_files:
-                dist_files.append(data)
-
-    def add_defaults(self):
-        standards = [READMES,
-                     self.distribution.script_name]
-        for fn in standards:
-            if isinstance(fn, tuple):
-                alts = fn
-                got_it = 0
-                for fn in alts:
-                    if os.path.exists(fn):
-                        got_it = 1
-                        self.filelist.append(fn)
-                        break
-
-                if not got_it:
-                    self.warn("standard file not found: should have one of " +
-                              ', '.join(alts))
-            else:
-                if os.path.exists(fn):
-                    self.filelist.append(fn)
-                else:
-                    self.warn("standard file '%s' not found" % fn)
-
-        optional = ['test/test*.py', 'setup.cfg']
-        for pattern in optional:
-            files = filter(os.path.isfile, glob(pattern))
-            if files:
-                self.filelist.extend(files)
-
-        # getting python files
-        if self.distribution.has_pure_modules():
-            build_py = self.get_finalized_command('build_py')
-            self.filelist.extend(build_py.get_source_files())
-            # This functionality is incompatible with include_package_data, and
-            # will in fact create an infinite recursion if include_package_data
-            # is True.  Use of include_package_data will imply that
-            # distutils-style automatic handling of package_data is disabled
-            if not self.distribution.include_package_data:
-                for _, src_dir, _, filenames in build_py.data_files:
-                    self.filelist.extend([os.path.join(src_dir, filename)
-                                          for filename in filenames])
-
-        if self.distribution.has_ext_modules():
-            build_ext = self.get_finalized_command('build_ext')
-            self.filelist.extend(build_ext.get_source_files())
-
-        if self.distribution.has_c_libraries():
-            build_clib = self.get_finalized_command('build_clib')
-            self.filelist.extend(build_clib.get_source_files())
-
-        if self.distribution.has_scripts():
-            build_scripts = self.get_finalized_command('build_scripts')
-            self.filelist.extend(build_scripts.get_source_files())
-
-    def __read_template_hack(self):
-        # This grody hack closes the template file (MANIFEST.in) if an
-        #  exception occurs during read_template.
-        # Doing so prevents an error when easy_install attempts to delete the
-        #  file.
-        try:
-            _sdist.read_template(self)
-        except:
-            sys.exc_info()[2].tb_next.tb_frame.f_locals['template'].close()
-            raise
-    # Beginning with Python 2.7.2, 3.1.4, and 3.2.1, this leaky file handle
-    #  has been fixed, so only override the method if we're using an earlier
-    #  Python.
-    if (
-            sys.version_info < (2,7,2)
-            or (3,0) <= sys.version_info < (3,1,4)
-            or (3,2) <= sys.version_info < (3,2,1)
-        ):
-        read_template = __read_template_hack
-
-    def check_readme(self):
-        for f in READMES:
-            if os.path.exists(f):
-                return
-        else:
-            self.warn(
-                "standard file not found: should have one of " +', '.join(READMES)
-            )
-
-
-    def make_release_tree(self, base_dir, files):
-        _sdist.make_release_tree(self, base_dir, files)
-
-        # Save any egg_info command line options used to create this sdist
-        dest = os.path.join(base_dir, 'setup.cfg')
-        if hasattr(os,'link') and os.path.exists(dest):
-            # unlink and re-copy, since it might be hard-linked, and
-            # we don't want to change the source version
-            os.unlink(dest)
-            self.copy_file('setup.cfg', dest)
-
-        self.get_finalized_command('egg_info').save_version_info(dest)
-
-    def _manifest_is_not_generated(self):
-        # check for special comment used in 2.7.1 and higher
-        if not os.path.isfile(self.manifest):
-            return False
-
-        fp = open(self.manifest, 'rbU')
-        try:
-            first_line = fp.readline()
-        finally:
-            fp.close()
-        return first_line != '# file GENERATED by distutils, do NOT edit\n'.encode()
-
-    def read_manifest(self):
-        """Read the manifest file (named by 'self.manifest') and use it to
-        fill in 'self.filelist', the list of files to include in the source
-        distribution.
-        """
-        log.info("reading manifest file '%s'", self.manifest)
-        manifest = open(self.manifest, 'rbU')
-        for line in manifest:
-            # The manifest must contain UTF-8. See #303.
-            if sys.version_info >= (3,):
-                try:
-                    line = line.decode('UTF-8')
-                except UnicodeDecodeError:
-                    log.warn("%r not UTF-8 decodable -- skipping" % line)
-                    continue
-            # ignore comments and blank lines
-            line = line.strip()
-            if line.startswith('#') or not line:
-                continue
-            self.filelist.append(line)
-        manifest.close()
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#
diff --git a/vendor/distribute-0.6.34/setuptools/command/setopt.py b/vendor/distribute-0.6.34/setuptools/command/setopt.py
deleted file mode 100644
index dbf3a94e..00000000
--- a/vendor/distribute-0.6.34/setuptools/command/setopt.py
+++ /dev/null
@@ -1,164 +0,0 @@
-import distutils, os
-from setuptools import Command
-from distutils.util import convert_path
-from distutils import log
-from distutils.errors import *
-
-__all__ = ['config_file', 'edit_config', 'option_base', 'setopt']
-
-
-def config_file(kind="local"):
-    """Get the filename of the distutils, local, global, or per-user config
-
-    `kind` must be one of "local", "global", or "user"
-    """
-    if kind=='local':
-        return 'setup.cfg'
-    if kind=='global':
-        return os.path.join(
-            os.path.dirname(distutils.__file__),'distutils.cfg'
-        )
-    if kind=='user':
-        dot = os.name=='posix' and '.' or ''
-        return os.path.expanduser(convert_path("~/%spydistutils.cfg" % dot))
-    raise ValueError(
-        "config_file() type must be 'local', 'global', or 'user'", kind
-    )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def edit_config(filename, settings, dry_run=False):
-    """Edit a configuration file to include `settings`
-
-    `settings` is a dictionary of dictionaries or ``None`` values, keyed by
-    command/section name.  A ``None`` value means to delete the entire section,
-    while a dictionary lists settings to be changed or deleted in that section.
-    A setting of ``None`` means to delete that setting.
-    """
-    from ConfigParser import RawConfigParser
-    log.debug("Reading configuration from %s", filename)
-    opts = RawConfigParser()
-    opts.read([filename])
-    for section, options in settings.items():
-        if options is None:
-            log.info("Deleting section [%s] from %s", section, filename)
-            opts.remove_section(section)
-        else:
-            if not opts.has_section(section):
-                log.debug("Adding new section [%s] to %s", section, filename)
-                opts.add_section(section)
-            for option,value in options.items():
-                if value is None:
-                    log.debug("Deleting %s.%s from %s",
-                        section, option, filename
-                    )
-                    opts.remove_option(section,option)
-                    if not opts.options(section):
-                        log.info("Deleting empty [%s] section from %s",
-                                  section, filename)
-                        opts.remove_section(section)
-                else:
-                    log.debug(
-                        "Setting %s.%s to %r in %s",
-                        section, option, value, filename
-                    )
-                    opts.set(section,option,value)
-
-    log.info("Writing %s", filename)
-    if not dry_run:
-        f = open(filename,'w'); opts.write(f); f.close()
-
-class option_base(Command):
-    """Abstract base class for commands that mess with config files"""
-    
-    user_options = [
-        ('global-config', 'g',
-                 "save options to the site-wide distutils.cfg file"),
-        ('user-config', 'u',
-                 "save options to the current user's pydistutils.cfg file"),
-        ('filename=', 'f',
-                 "configuration file to use (default=setup.cfg)"),
-    ]
-
-    boolean_options = [
-        'global-config', 'user-config',
-    ]    
-
-    def initialize_options(self):
-        self.global_config = None
-        self.user_config   = None
-        self.filename = None
-
-    def finalize_options(self):
-        filenames = []
-        if self.global_config:
-            filenames.append(config_file('global'))
-        if self.user_config:
-            filenames.append(config_file('user'))
-        if self.filename is not None:
-            filenames.append(self.filename)
-        if not filenames:
-            filenames.append(config_file('local'))
-        if len(filenames)>1:
-            raise DistutilsOptionError(
-                "Must specify only one configuration file option",
-                filenames
-            )
-        self.filename, = filenames    
-
-
-
-
-class setopt(option_base):
-    """Save command-line options to a file"""
-
-    description = "set an option in setup.cfg or another config file"
-
-    user_options = [
-        ('command=', 'c', 'command to set an option for'),
-        ('option=',  'o',  'option to set'),
-        ('set-value=',   's', 'value of the option'),
-        ('remove',   'r', 'remove (unset) the value'), 
-    ] + option_base.user_options
-
-    boolean_options = option_base.boolean_options + ['remove']
-
-    def initialize_options(self):
-        option_base.initialize_options(self)
-        self.command = None
-        self.option = None
-        self.set_value = None
-        self.remove = None
-
-    def finalize_options(self):
-        option_base.finalize_options(self)
-        if self.command is None or self.option is None:
-            raise DistutilsOptionError("Must specify --command *and* --option")
-        if self.set_value is None and not self.remove:
-            raise DistutilsOptionError("Must specify --set-value or --remove")
-
-    def run(self):
-        edit_config(
-            self.filename, {
-                self.command: {self.option.replace('-','_'):self.set_value}
-            },
-            self.dry_run
-        )
-
-
-
-
-
-
diff --git a/vendor/distribute-0.6.34/setuptools/command/test.py b/vendor/distribute-0.6.34/setuptools/command/test.py
deleted file mode 100644
index a02ac142..00000000
--- a/vendor/distribute-0.6.34/setuptools/command/test.py
+++ /dev/null
@@ -1,198 +0,0 @@
-from setuptools import Command
-from distutils.errors import DistutilsOptionError
-import sys
-from pkg_resources import *
-from pkg_resources import _namespace_packages
-from unittest import TestLoader, main
-
-class ScanningLoader(TestLoader):
-
-    def loadTestsFromModule(self, module):
-        """Return a suite of all tests cases contained in the given module
-
-        If the module is a package, load tests from all the modules in it.
-        If the module has an ``additional_tests`` function, call it and add
-        the return value to the tests.
-        """
-        tests = []
-        if module.__name__!='setuptools.tests.doctest':  # ugh
-            tests.append(TestLoader.loadTestsFromModule(self,module))
-
-        if hasattr(module, "additional_tests"):
-            tests.append(module.additional_tests())
-
-        if hasattr(module, '__path__'):
-            for file in resource_listdir(module.__name__, ''):
-                if file.endswith('.py') and file!='__init__.py':
-                    submodule = module.__name__+'.'+file[:-3]
-                else:
-                    if resource_exists(
-                        module.__name__, file+'/__init__.py'
-                    ):
-                        submodule = module.__name__+'.'+file
-                    else:
-                        continue
-                tests.append(self.loadTestsFromName(submodule))
-
-        if len(tests)!=1:
-            return self.suiteClass(tests)
-        else:
-            return tests[0] # don't create a nested suite for only one return
-
-
-class test(Command):
-
-    """Command to run unit tests after in-place build"""
-
-    description = "run unit tests after in-place build"
-
-    user_options = [
-        ('test-module=','m', "Run 'test_suite' in specified module"),
-        ('test-suite=','s',
-            "Test suite to run (e.g. 'some_module.test_suite')"),
-    ]
-
-    def initialize_options(self):
-        self.test_suite = None
-        self.test_module = None
-        self.test_loader = None
-
-
-    def finalize_options(self):
-
-        if self.test_suite is None:
-            if self.test_module is None:
-                self.test_suite = self.distribution.test_suite
-            else:
-                self.test_suite = self.test_module+".test_suite"
-        elif self.test_module:
-            raise DistutilsOptionError(
-                "You may specify a module or a suite, but not both"
-            )
-
-        self.test_args = [self.test_suite]
-
-        if self.verbose:
-            self.test_args.insert(0,'--verbose')
-        if self.test_loader is None:
-            self.test_loader = getattr(self.distribution,'test_loader',None)
-        if self.test_loader is None:
-            self.test_loader = "setuptools.command.test:ScanningLoader"
-
-
-
-    def with_project_on_sys_path(self, func):
-        if sys.version_info >= (3,) and getattr(self.distribution, 'use_2to3', False):
-            # If we run 2to3 we can not do this inplace:
-
-            # Ensure metadata is up-to-date
-            self.reinitialize_command('build_py', inplace=0)
-            self.run_command('build_py')
-            bpy_cmd = self.get_finalized_command("build_py")
-            build_path = normalize_path(bpy_cmd.build_lib)
-
-            # Build extensions
-            self.reinitialize_command('egg_info', egg_base=build_path)
-            self.run_command('egg_info')
-
-            self.reinitialize_command('build_ext', inplace=0)
-            self.run_command('build_ext')
-        else:
-            # Without 2to3 inplace works fine:
-            self.run_command('egg_info')
-
-            # Build extensions in-place
-            self.reinitialize_command('build_ext', inplace=1)
-            self.run_command('build_ext')
-
-        ei_cmd = self.get_finalized_command("egg_info")
-
-        old_path = sys.path[:]
-        old_modules = sys.modules.copy()
-
-        try:
-            sys.path.insert(0, normalize_path(ei_cmd.egg_base))
-            working_set.__init__()
-            add_activation_listener(lambda dist: dist.activate())
-            require('%s==%s' % (ei_cmd.egg_name, ei_cmd.egg_version))
-            func()
-        finally:
-            sys.path[:] = old_path
-            sys.modules.clear()
-            sys.modules.update(old_modules)
-            working_set.__init__()
-
-
-    def run(self):
-        if self.distribution.install_requires:
-            self.distribution.fetch_build_eggs(self.distribution.install_requires)
-        if self.distribution.tests_require:
-            self.distribution.fetch_build_eggs(self.distribution.tests_require)
-
-        if self.test_suite:
-            cmd = ' '.join(self.test_args)
-            if self.dry_run:
-                self.announce('skipping "unittest %s" (dry run)' % cmd)
-            else:
-                self.announce('running "unittest %s"' % cmd)
-                self.with_project_on_sys_path(self.run_tests)
-
-
-    def run_tests(self):
-        import unittest
-
-        # Purge modules under test from sys.modules. The test loader will
-        # re-import them from the build location. Required when 2to3 is used
-        # with namespace packages.
-        if sys.version_info >= (3,) and getattr(self.distribution, 'use_2to3', False):
-            module = self.test_args[-1].split('.')[0]
-            if module in _namespace_packages:
-                del_modules = []
-                if module in sys.modules:
-                    del_modules.append(module)
-                module += '.'
-                for name in sys.modules:
-                    if name.startswith(module):
-                        del_modules.append(name)
-                map(sys.modules.__delitem__, del_modules)
-
-        loader_ep = EntryPoint.parse("x="+self.test_loader)
-        loader_class = loader_ep.load(require=False)
-        cks = loader_class()
-        unittest.main(
-            None, None, [unittest.__file__]+self.test_args,
-            testLoader = cks
-        )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vendor/distribute-0.6.34/setuptools/command/upload.py b/vendor/distribute-0.6.34/setuptools/command/upload.py
deleted file mode 100644
index 21b9615c..00000000
--- a/vendor/distribute-0.6.34/setuptools/command/upload.py
+++ /dev/null
@@ -1,185 +0,0 @@
-"""distutils.command.upload
-
-Implements the Distutils 'upload' subcommand (upload package to PyPI)."""
-
-from distutils.errors import *
-from distutils.core import Command
-from distutils.spawn import spawn
-from distutils import log
-try:
-    from hashlib import md5
-except ImportError:
-    from md5 import md5
-import os
-import socket
-import platform
-import ConfigParser
-import httplib
-import base64
-import urlparse
-import cStringIO as StringIO
-
-class upload(Command):
-
-    description = "upload binary package to PyPI"
-
-    DEFAULT_REPOSITORY = 'http://pypi.python.org/pypi'
-
-    user_options = [
-        ('repository=', 'r',
-         "url of repository [default: %s]" % DEFAULT_REPOSITORY),
-        ('show-response', None,
-         'display full response text from server'),
-        ('sign', 's',
-         'sign files to upload using gpg'),
-        ('identity=', 'i', 'GPG identity used to sign files'),
-        ]
-    boolean_options = ['show-response', 'sign']
-
-    def initialize_options(self):
-        self.username = ''
-        self.password = ''
-        self.repository = ''
-        self.show_response = 0
-        self.sign = False
-        self.identity = None
-
-    def finalize_options(self):
-        if self.identity and not self.sign:
-            raise DistutilsOptionError(
-                "Must use --sign for --identity to have meaning"
-            )
-        if os.environ.has_key('HOME'):
-            rc = os.path.join(os.environ['HOME'], '.pypirc')
-            if os.path.exists(rc):
-                self.announce('Using PyPI login from %s' % rc)
-                config = ConfigParser.ConfigParser({
-                        'username':'',
-                        'password':'',
-                        'repository':''})
-                config.read(rc)
-                if not self.repository:
-                    self.repository = config.get('server-login', 'repository')
-                if not self.username:
-                    self.username = config.get('server-login', 'username')
-                if not self.password:
-                    self.password = config.get('server-login', 'password')
-        if not self.repository:
-            self.repository = self.DEFAULT_REPOSITORY
-
-    def run(self):
-        if not self.distribution.dist_files:
-            raise DistutilsOptionError("No dist file created in earlier command")
-        for command, pyversion, filename in self.distribution.dist_files:
-            self.upload_file(command, pyversion, filename)
-
-    def upload_file(self, command, pyversion, filename):
-        # Sign if requested
-        if self.sign:
-            gpg_args = ["gpg", "--detach-sign", "-a", filename]
-            if self.identity:
-                gpg_args[2:2] = ["--local-user", self.identity]
-            spawn(gpg_args,
-                  dry_run=self.dry_run)
-
-        # Fill in the data
-        f = open(filename,'rb')
-        content = f.read()
-        f.close()
-        basename = os.path.basename(filename)
-        comment = ''
-        if command=='bdist_egg' and self.distribution.has_ext_modules():
-            comment = "built on %s" % platform.platform(terse=1)
-        data = {
-            ':action':'file_upload',
-            'protocol_version':'1',
-            'name':self.distribution.get_name(),
-            'version':self.distribution.get_version(),
-            'content':(basename,content),
-            'filetype':command,
-            'pyversion':pyversion,
-            'md5_digest':md5(content).hexdigest(),
-            }
-        if command == 'bdist_rpm':
-            dist, version, id = platform.dist()
-            if dist:
-                comment = 'built for %s %s' % (dist, version)
-        elif command == 'bdist_dumb':
-            comment = 'built for %s' % platform.platform(terse=1)
-        data['comment'] = comment
-
-        if self.sign:
-            asc_file = open(filename + ".asc")
-            data['gpg_signature'] = (os.path.basename(filename) + ".asc", asc_file.read())
-            asc_file.close()
-
-        # set up the authentication
-        auth = "Basic " + base64.encodestring(self.username + ":" + self.password).strip()
-
-        # Build up the MIME payload for the POST data
-        boundary = '--------------GHSKFJDLGDS7543FJKLFHRE75642756743254'
-        sep_boundary = '\n--' + boundary
-        end_boundary = sep_boundary + '--'
-        body = StringIO.StringIO()
-        for key, value in data.items():
-            # handle multiple entries for the same name
-            if type(value) != type([]):
-                value = [value]
-            for value in value:
-                if type(value) is tuple:
-                    fn = ';filename="%s"' % value[0]
-                    value = value[1]
-                else:
-                    fn = ""
-                value = str(value)
-                body.write(sep_boundary)
-                body.write('\nContent-Disposition: form-data; name="%s"'%key)
-                body.write(fn)
-                body.write("\n\n")
-                body.write(value)
-                if value and value[-1] == '\r':
-                    body.write('\n')  # write an extra newline (lurve Macs)
-        body.write(end_boundary)
-        body.write("\n")
-        body = body.getvalue()
-
-        self.announce("Submitting %s to %s" % (filename, self.repository), log.INFO)
-
-        # build the Request
-        # We can't use urllib2 since we need to send the Basic
-        # auth right with the first request
-        schema, netloc, url, params, query, fragments = \
-            urlparse.urlparse(self.repository)
-        assert not params and not query and not fragments
-        if schema == 'http':
-            http = httplib.HTTPConnection(netloc)
-        elif schema == 'https':
-            http = httplib.HTTPSConnection(netloc)
-        else:
-            raise AssertionError, "unsupported schema "+schema
-
-        data = ''
-        loglevel = log.INFO
-        try:
-            http.connect()
-            http.putrequest("POST", url)
-            http.putheader('Content-type',
-                           'multipart/form-data; boundary=%s'%boundary)
-            http.putheader('Content-length', str(len(body)))
-            http.putheader('Authorization', auth)
-            http.endheaders()
-            http.send(body)
-        except socket.error, e:
-            self.announce(str(e), log.ERROR)
-            return
-
-        r = http.getresponse()
-        if r.status == 200:
-            self.announce('Server response (%s): %s' % (r.status, r.reason),
-                          log.INFO)
-        else:
-            self.announce('Upload failed (%s): %s' % (r.status, r.reason),
-                          log.ERROR)
-        if self.show_response:
-            print '-'*75, r.read(), '-'*75
-
diff --git a/vendor/distribute-0.6.34/setuptools/command/upload_docs.py b/vendor/distribute-0.6.34/setuptools/command/upload_docs.py
deleted file mode 100644
index 1d5a7445..00000000
--- a/vendor/distribute-0.6.34/setuptools/command/upload_docs.py
+++ /dev/null
@@ -1,195 +0,0 @@
-# -*- coding: utf-8 -*-
-"""upload_docs
-
-Implements a Distutils 'upload_docs' subcommand (upload documentation to
-PyPI's packages.python.org).
-"""
-
-import os
-import socket
-import zipfile
-import httplib
-import urlparse
-import tempfile
-import sys
-import shutil
-
-from base64 import standard_b64encode
-from pkg_resources import iter_entry_points
-
-from distutils import log
-from distutils.errors import DistutilsOptionError
-
-try:
-    from distutils.command.upload import upload
-except ImportError:
-    from setuptools.command.upload import upload
-
-
-# This is not just a replacement for byte literals
-# but works as a general purpose encoder
-def b(s, encoding='utf-8'):
-    if isinstance(s, unicode):
-        return s.encode(encoding)
-    return s
-
-
-class upload_docs(upload):
-
-    description = 'Upload documentation to PyPI'
-
-    user_options = [
-        ('repository=', 'r',
-         "url of repository [default: %s]" % upload.DEFAULT_REPOSITORY),
-        ('show-response', None,
-         'display full response text from server'),
-        ('upload-dir=', None, 'directory to upload'),
-        ]
-    boolean_options = upload.boolean_options
-
-    def has_sphinx(self):
-        if self.upload_dir is None:
-            for ep in iter_entry_points('distutils.commands', 'build_sphinx'):
-                return True
-
-    sub_commands = [('build_sphinx', has_sphinx)]
-
-    def initialize_options(self):
-        upload.initialize_options(self)
-        self.upload_dir = None
-        self.target_dir = None
-
-    def finalize_options(self):
-        upload.finalize_options(self)
-        if self.upload_dir is None:
-            if self.has_sphinx():
-                build_sphinx = self.get_finalized_command('build_sphinx')
-                self.target_dir = build_sphinx.builder_target_dir
-            else:
-                build = self.get_finalized_command('build')
-                self.target_dir = os.path.join(build.build_base, 'docs')
-        else:
-            self.ensure_dirname('upload_dir')
-            self.target_dir = self.upload_dir
-        self.announce('Using upload directory %s' % self.target_dir)
-
-    def create_zipfile(self, filename):
-        zip_file = zipfile.ZipFile(filename, "w")
-        try:
-            self.mkpath(self.target_dir)  # just in case
-            for root, dirs, files in os.walk(self.target_dir):
-                if root == self.target_dir and not files:
-                    raise DistutilsOptionError(
-                        "no files found in upload directory '%s'"
-                        % self.target_dir)
-                for name in files:
-                    full = os.path.join(root, name)
-                    relative = root[len(self.target_dir):].lstrip(os.path.sep)
-                    dest = os.path.join(relative, name)
-                    zip_file.write(full, dest)
-        finally:
-            zip_file.close()
-
-    def run(self):
-        # Run sub commands
-        for cmd_name in self.get_sub_commands():
-            self.run_command(cmd_name)
-
-        tmp_dir = tempfile.mkdtemp()
-        name = self.distribution.metadata.get_name()
-        zip_file = os.path.join(tmp_dir, "%s.zip" % name)
-        try:
-            self.create_zipfile(zip_file)
-            self.upload_file(zip_file)
-        finally:
-            shutil.rmtree(tmp_dir)
-
-    def upload_file(self, filename):
-        f = open(filename, 'rb')
-        content = f.read()
-        f.close()
-        meta = self.distribution.metadata
-        data = {
-            ':action': 'doc_upload',
-            'name': meta.get_name(),
-            'content': (os.path.basename(filename), content),
-        }
-        # set up the authentication
-        credentials = b(self.username + ':' + self.password)
-        credentials = standard_b64encode(credentials)
-        if sys.version_info >= (3,):
-            credentials = credentials.decode('ascii')
-        auth = "Basic " + credentials
-
-        # Build up the MIME payload for the POST data
-        boundary = '--------------GHSKFJDLGDS7543FJKLFHRE75642756743254'
-        sep_boundary = b('\n--') + b(boundary)
-        end_boundary = sep_boundary + b('--')
-        body = []
-        for key, values in data.iteritems():
-            title = '\nContent-Disposition: form-data; name="%s"' % key
-            # handle multiple entries for the same name
-            if type(values) != type([]):
-                values = [values]
-            for value in values:
-                if type(value) is tuple:
-                    title += '; filename="%s"' % value[0]
-                    value = value[1]
-                else:
-                    value = b(value)
-                body.append(sep_boundary)
-                body.append(b(title))
-                body.append(b("\n\n"))
-                body.append(value)
-                if value and value[-1:] == b('\r'):
-                    body.append(b('\n'))  # write an extra newline (lurve Macs)
-        body.append(end_boundary)
-        body.append(b("\n"))
-        body = b('').join(body)
-
-        self.announce("Submitting documentation to %s" % (self.repository),
-                      log.INFO)
-
-        # build the Request
-        # We can't use urllib2 since we need to send the Basic
-        # auth right with the first request
-        schema, netloc, url, params, query, fragments = \
-            urlparse.urlparse(self.repository)
-        assert not params and not query and not fragments
-        if schema == 'http':
-            conn = httplib.HTTPConnection(netloc)
-        elif schema == 'https':
-            conn = httplib.HTTPSConnection(netloc)
-        else:
-            raise AssertionError("unsupported schema "+schema)
-
-        data = ''
-        loglevel = log.INFO
-        try:
-            conn.connect()
-            conn.putrequest("POST", url)
-            conn.putheader('Content-type',
-                           'multipart/form-data; boundary=%s'%boundary)
-            conn.putheader('Content-length', str(len(body)))
-            conn.putheader('Authorization', auth)
-            conn.endheaders()
-            conn.send(body)
-        except socket.error, e:
-            self.announce(str(e), log.ERROR)
-            return
-
-        r = conn.getresponse()
-        if r.status == 200:
-            self.announce('Server response (%s): %s' % (r.status, r.reason),
-                          log.INFO)
-        elif r.status == 301:
-            location = r.getheader('Location')
-            if location is None:
-                location = 'http://packages.python.org/%s/' % meta.get_name()
-            self.announce('Upload successful. Visit %s' % location,
-                          log.INFO)
-        else:
-            self.announce('Upload failed (%s): %s' % (r.status, r.reason),
-                          log.ERROR)
-        if self.show_response:
-            print '-'*75, r.read(), '-'*75
diff --git a/vendor/distribute-0.6.34/setuptools/depends.py b/vendor/distribute-0.6.34/setuptools/depends.py
deleted file mode 100644
index 4b7b3437..00000000
--- a/vendor/distribute-0.6.34/setuptools/depends.py
+++ /dev/null
@@ -1,246 +0,0 @@
-from __future__ import generators
-import sys, imp, marshal
-from imp import PKG_DIRECTORY, PY_COMPILED, PY_SOURCE, PY_FROZEN
-from distutils.version import StrictVersion, LooseVersion
-
-__all__ = [
-    'Require', 'find_module', 'get_module_constant', 'extract_constant'
-]
-
-class Require:
-    """A prerequisite to building or installing a distribution"""
-
-    def __init__(self,name,requested_version,module,homepage='',
-        attribute=None,format=None
-    ):
-
-        if format is None and requested_version is not None:
-            format = StrictVersion
-
-        if format is not None:
-            requested_version = format(requested_version)
-            if attribute is None:
-                attribute = '__version__'
-
-        self.__dict__.update(locals())
-        del self.self
-
-
-    def full_name(self):
-        """Return full package/distribution name, w/version"""
-        if self.requested_version is not None:
-            return '%s-%s' % (self.name,self.requested_version)
-        return self.name
-
-
-    def version_ok(self,version):
-        """Is 'version' sufficiently up-to-date?"""
-        return self.attribute is None or self.format is None or \
-            str(version)<>"unknown" and version >= self.requested_version
-
-
-    def get_version(self, paths=None, default="unknown"):
-
-        """Get version number of installed module, 'None', or 'default'
-
-        Search 'paths' for module.  If not found, return 'None'.  If found,
-        return the extracted version attribute, or 'default' if no version
-        attribute was specified, or the value cannot be determined without
-        importing the module.  The version is formatted according to the
-        requirement's version format (if any), unless it is 'None' or the
-        supplied 'default'.
-        """
-
-        if self.attribute is None:
-            try:
-                f,p,i = find_module(self.module,paths)
-                if f: f.close()
-                return default
-            except ImportError:
-                return None
-
-        v = get_module_constant(self.module,self.attribute,default,paths)
-
-        if v is not None and v is not default and self.format is not None:
-            return self.format(v)
-
-        return v
-
-
-    def is_present(self,paths=None):
-        """Return true if dependency is present on 'paths'"""
-        return self.get_version(paths) is not None
-
-
-    def is_current(self,paths=None):
-        """Return true if dependency is present and up-to-date on 'paths'"""
-        version = self.get_version(paths)
-        if version is None:
-            return False
-        return self.version_ok(version)
-
-
-def _iter_code(code):
-
-    """Yield '(op,arg)' pair for each operation in code object 'code'"""
-
-    from array import array
-    from dis import HAVE_ARGUMENT, EXTENDED_ARG
-
-    bytes = array('b',code.co_code)
-    eof = len(code.co_code)
-
-    ptr = 0
-    extended_arg = 0
-
-    while ptr<eof:
-
-        op = bytes[ptr]
-
-        if op>=HAVE_ARGUMENT:
-
-            arg = bytes[ptr+1] + bytes[ptr+2]*256 + extended_arg
-            ptr += 3
-
-            if op==EXTENDED_ARG:
-                extended_arg = arg * 65536L
-                continue
-
-        else:
-            arg = None
-            ptr += 1
-
-        yield op,arg
-
-
-
-
-
-
-
-
-
-
-def find_module(module, paths=None):
-    """Just like 'imp.find_module()', but with package support"""
-
-    parts = module.split('.')
-
-    while parts:
-        part = parts.pop(0)
-        f, path, (suffix,mode,kind) = info = imp.find_module(part, paths)
-
-        if kind==PKG_DIRECTORY:
-            parts = parts or ['__init__']
-            paths = [path]
-
-        elif parts:
-            raise ImportError("Can't find %r in %s" % (parts,module))
-
-    return info
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def get_module_constant(module, symbol, default=-1, paths=None):
-
-    """Find 'module' by searching 'paths', and extract 'symbol'
-
-    Return 'None' if 'module' does not exist on 'paths', or it does not define
-    'symbol'.  If the module defines 'symbol' as a constant, return the
-    constant.  Otherwise, return 'default'."""
-
-    try:
-        f, path, (suffix,mode,kind) = find_module(module,paths)
-    except ImportError:
-        # Module doesn't exist
-        return None
-
-    try:
-        if kind==PY_COMPILED:
-            f.read(8)   # skip magic & date
-            code = marshal.load(f)
-        elif kind==PY_FROZEN:
-            code = imp.get_frozen_object(module)
-        elif kind==PY_SOURCE:
-            code = compile(f.read(), path, 'exec')
-        else:
-            # Not something we can parse; we'll have to import it.  :(
-            if module not in sys.modules:
-                imp.load_module(module,f,path,(suffix,mode,kind))
-            return getattr(sys.modules[module],symbol,None)
-
-    finally:
-        if f:
-            f.close()
-
-    return extract_constant(code,symbol,default)
-
-
-
-
-
-
-
-
-def extract_constant(code,symbol,default=-1):
-    """Extract the constant value of 'symbol' from 'code'
-
-    If the name 'symbol' is bound to a constant value by the Python code
-    object 'code', return that value.  If 'symbol' is bound to an expression,
-    return 'default'.  Otherwise, return 'None'.
-
-    Return value is based on the first assignment to 'symbol'.  'symbol' must
-    be a global, or at least a non-"fast" local in the code block.  That is,
-    only 'STORE_NAME' and 'STORE_GLOBAL' opcodes are checked, and 'symbol'
-    must be present in 'code.co_names'.
-    """
-
-    if symbol not in code.co_names:
-        # name's not there, can't possibly be an assigment
-        return None
-
-    name_idx = list(code.co_names).index(symbol)
-
-    STORE_NAME = 90
-    STORE_GLOBAL = 97
-    LOAD_CONST = 100
-
-    const = default
-
-    for op, arg in _iter_code(code):
-
-        if op==LOAD_CONST:
-            const = code.co_consts[arg]
-        elif arg==name_idx and (op==STORE_NAME or op==STORE_GLOBAL):
-            return const
-        else:
-            const = default
-            
-if sys.platform.startswith('java') or sys.platform == 'cli':
-    # XXX it'd be better to test assertions about bytecode instead...
-    del extract_constant, get_module_constant
-    __all__.remove('extract_constant')
-    __all__.remove('get_module_constant')
-
-
diff --git a/vendor/distribute-0.6.34/setuptools/dist.py b/vendor/distribute-0.6.34/setuptools/dist.py
deleted file mode 100644
index 998a4dbe..00000000
--- a/vendor/distribute-0.6.34/setuptools/dist.py
+++ /dev/null
@@ -1,855 +0,0 @@
-__all__ = ['Distribution']
-
-import re
-from distutils.core import Distribution as _Distribution
-from setuptools.depends import Require
-from setuptools.command.install import install
-from setuptools.command.sdist import sdist
-from setuptools.command.install_lib import install_lib
-from distutils.errors import DistutilsOptionError, DistutilsPlatformError
-from distutils.errors import DistutilsSetupError
-import setuptools, pkg_resources, distutils.core, distutils.dist, distutils.cmd
-import os, distutils.log
-
-def _get_unpatched(cls):
-    """Protect against re-patching the distutils if reloaded
-
-    Also ensures that no other distutils extension monkeypatched the distutils
-    first.
-    """
-    while cls.__module__.startswith('setuptools'):
-        cls, = cls.__bases__
-    if not cls.__module__.startswith('distutils'):
-        raise AssertionError(
-            "distutils has already been patched by %r" % cls
-        )
-    return cls
-
-_Distribution = _get_unpatched(_Distribution)
-
-sequence = tuple, list
-
-def check_importable(dist, attr, value):
-    try:
-        ep = pkg_resources.EntryPoint.parse('x='+value)
-        assert not ep.extras
-    except (TypeError,ValueError,AttributeError,AssertionError):
-        raise DistutilsSetupError(
-            "%r must be importable 'module:attrs' string (got %r)"
-            % (attr,value)
-        )
-
-
-def assert_string_list(dist, attr, value):
-    """Verify that value is a string list or None"""
-    try:
-        assert ''.join(value)!=value
-    except (TypeError,ValueError,AttributeError,AssertionError):
-        raise DistutilsSetupError(
-            "%r must be a list of strings (got %r)" % (attr,value)
-        )
-
-def check_nsp(dist, attr, value):
-    """Verify that namespace packages are valid"""
-    assert_string_list(dist,attr,value)
-    for nsp in value:
-        if not dist.has_contents_for(nsp):
-            raise DistutilsSetupError(
-                "Distribution contains no modules or packages for " +
-                "namespace package %r" % nsp
-            )
-        if '.' in nsp:
-            parent = '.'.join(nsp.split('.')[:-1])
-            if parent not in value:
-                distutils.log.warn(
-                    "%r is declared as a package namespace, but %r is not:"
-                    " please correct this in setup.py", nsp, parent
-                )
-
-def check_extras(dist, attr, value):
-    """Verify that extras_require mapping is valid"""
-    try:
-        for k,v in value.items():
-            list(pkg_resources.parse_requirements(v))
-    except (TypeError,ValueError,AttributeError):
-        raise DistutilsSetupError(
-            "'extras_require' must be a dictionary whose values are "
-            "strings or lists of strings containing valid project/version "
-            "requirement specifiers."
-        )
-
-
-
-
-def assert_bool(dist, attr, value):
-    """Verify that value is True, False, 0, or 1"""
-    if bool(value) != value:
-        raise DistutilsSetupError(
-            "%r must be a boolean value (got %r)" % (attr,value)
-        )
-def check_requirements(dist, attr, value):
-    """Verify that install_requires is a valid requirements list"""
-    try:
-        list(pkg_resources.parse_requirements(value))
-    except (TypeError,ValueError):
-        raise DistutilsSetupError(
-            "%r must be a string or list of strings "
-            "containing valid project/version requirement specifiers" % (attr,)
-        )
-def check_entry_points(dist, attr, value):
-    """Verify that entry_points map is parseable"""
-    try:
-        pkg_resources.EntryPoint.parse_map(value)
-    except ValueError, e:
-        raise DistutilsSetupError(e)
-
-def check_test_suite(dist, attr, value):
-    if not isinstance(value,basestring):
-        raise DistutilsSetupError("test_suite must be a string")
-
-def check_package_data(dist, attr, value):
-    """Verify that value is a dictionary of package names to glob lists"""
-    if isinstance(value,dict):
-        for k,v in value.items():
-            if not isinstance(k,str): break
-            try: iter(v)
-            except TypeError:
-                break
-        else:
-            return
-    raise DistutilsSetupError(
-        attr+" must be a dictionary mapping package names to lists of "
-        "wildcard patterns"
-    )
-
-class Distribution(_Distribution):
-    """Distribution with support for features, tests, and package data
-
-    This is an enhanced version of 'distutils.dist.Distribution' that
-    effectively adds the following new optional keyword arguments to 'setup()':
-
-     'install_requires' -- a string or sequence of strings specifying project
-        versions that the distribution requires when installed, in the format
-        used by 'pkg_resources.require()'.  They will be installed
-        automatically when the package is installed.  If you wish to use
-        packages that are not available in PyPI, or want to give your users an
-        alternate download location, you can add a 'find_links' option to the
-        '[easy_install]' section of your project's 'setup.cfg' file, and then
-        setuptools will scan the listed web pages for links that satisfy the
-        requirements.
-
-     'extras_require' -- a dictionary mapping names of optional "extras" to the
-        additional requirement(s) that using those extras incurs. For example,
-        this::
-
-            extras_require = dict(reST = ["docutils>=0.3", "reSTedit"])
-
-        indicates that the distribution can optionally provide an extra
-        capability called "reST", but it can only be used if docutils and
-        reSTedit are installed.  If the user installs your package using
-        EasyInstall and requests one of your extras, the corresponding
-        additional requirements will be installed if needed.
-
-     'features' -- a dictionary mapping option names to 'setuptools.Feature'
-        objects.  Features are a portion of the distribution that can be
-        included or excluded based on user options, inter-feature dependencies,
-        and availability on the current system.  Excluded features are omitted
-        from all setup commands, including source and binary distributions, so
-        you can create multiple distributions from the same source tree.
-        Feature names should be valid Python identifiers, except that they may
-        contain the '-' (minus) sign.  Features can be included or excluded
-        via the command line options '--with-X' and '--without-X', where 'X' is
-        the name of the feature.  Whether a feature is included by default, and
-        whether you are allowed to control this from the command line, is
-        determined by the Feature object.  See the 'Feature' class for more
-        information.
-
-     'test_suite' -- the name of a test suite to run for the 'test' command.
-        If the user runs 'python setup.py test', the package will be installed,
-        and the named test suite will be run.  The format is the same as
-        would be used on a 'unittest.py' command line.  That is, it is the
-        dotted name of an object to import and call to generate a test suite.
-
-     'package_data' -- a dictionary mapping package names to lists of filenames
-        or globs to use to find data files contained in the named packages.
-        If the dictionary has filenames or globs listed under '""' (the empty
-        string), those names will be searched for in every package, in addition
-        to any names for the specific package.  Data files found using these
-        names/globs will be installed along with the package, in the same
-        location as the package.  Note that globs are allowed to reference
-        the contents of non-package subdirectories, as long as you use '/' as
-        a path separator.  (Globs are automatically converted to
-        platform-specific paths at runtime.)
-
-    In addition to these new keywords, this class also has several new methods
-    for manipulating the distribution's contents.  For example, the 'include()'
-    and 'exclude()' methods can be thought of as in-place add and subtract
-    commands that add or remove packages, modules, extensions, and so on from
-    the distribution.  They are used by the feature subsystem to configure the
-    distribution for the included and excluded features.
-    """
-
-    _patched_dist = None
-
-    def patch_missing_pkg_info(self, attrs):
-        # Fake up a replacement for the data that would normally come from
-        # PKG-INFO, but which might not yet be built if this is a fresh
-        # checkout.
-        #
-        if not attrs or 'name' not in attrs or 'version' not in attrs:
-            return
-        key = pkg_resources.safe_name(str(attrs['name'])).lower()
-        dist = pkg_resources.working_set.by_key.get(key)
-        if dist is not None and not dist.has_metadata('PKG-INFO'):
-            dist._version = pkg_resources.safe_version(str(attrs['version']))
-            self._patched_dist = dist
-
-    def __init__ (self, attrs=None):
-        have_package_data = hasattr(self, "package_data")
-        if not have_package_data:
-            self.package_data = {}
-        self.require_features = []
-        self.features = {}
-        self.dist_files = []
-        self.src_root = attrs and attrs.pop("src_root", None)
-        self.patch_missing_pkg_info(attrs)
-        # Make sure we have any eggs needed to interpret 'attrs'
-        if attrs is not None:
-            self.dependency_links = attrs.pop('dependency_links', [])
-            assert_string_list(self,'dependency_links',self.dependency_links)
-        if attrs and 'setup_requires' in attrs:
-            self.fetch_build_eggs(attrs.pop('setup_requires'))
-        for ep in pkg_resources.iter_entry_points('distutils.setup_keywords'):
-            if not hasattr(self,ep.name):
-                setattr(self,ep.name,None)
-        _Distribution.__init__(self,attrs)
-        if isinstance(self.metadata.version, (int,long,float)):
-            # Some people apparently take "version number" too literally :)
-            self.metadata.version = str(self.metadata.version)
-
-    def parse_command_line(self):
-        """Process features after parsing command line options"""
-        result = _Distribution.parse_command_line(self)
-        if self.features:
-            self._finalize_features()
-        return result
-
-    def _feature_attrname(self,name):
-        """Convert feature name to corresponding option attribute name"""
-        return 'with_'+name.replace('-','_')
-
-    def fetch_build_eggs(self, requires):
-        """Resolve pre-setup requirements"""
-        from pkg_resources import working_set, parse_requirements
-        for dist in working_set.resolve(
-            parse_requirements(requires), installer=self.fetch_build_egg
-        ):
-            working_set.add(dist)
-
-    def finalize_options(self):
-        _Distribution.finalize_options(self)
-        if self.features:
-            self._set_global_opts_from_features()
-
-        for ep in pkg_resources.iter_entry_points('distutils.setup_keywords'):
-            value = getattr(self,ep.name,None)
-            if value is not None:
-                ep.require(installer=self.fetch_build_egg)
-                ep.load()(self, ep.name, value)
-        if getattr(self, 'convert_2to3_doctests', None):
-            # XXX may convert to set here when we can rely on set being builtin
-            self.convert_2to3_doctests = [os.path.abspath(p) for p in self.convert_2to3_doctests]
-        else:
-            self.convert_2to3_doctests = []
-
-    def fetch_build_egg(self, req):
-        """Fetch an egg needed for building"""
-
-        try:
-            cmd = self._egg_fetcher
-            cmd.package_index.to_scan = []
-        except AttributeError:
-            from setuptools.command.easy_install import easy_install
-            dist = self.__class__({'script_args':['easy_install']})
-            dist.parse_config_files()
-            opts = dist.get_option_dict('easy_install')
-            keep = (
-                'find_links', 'site_dirs', 'index_url', 'optimize',
-                'site_dirs', 'allow_hosts'
-            )
-            for key in opts.keys():
-                if key not in keep:
-                    del opts[key]   # don't use any other settings
-            if self.dependency_links:
-                links = self.dependency_links[:]
-                if 'find_links' in opts:
-                    links = opts['find_links'][1].split() + links
-                opts['find_links'] = ('setup', links)
-            cmd = easy_install(
-                dist, args=["x"], install_dir=os.curdir, exclude_scripts=True,
-                always_copy=False, build_directory=None, editable=False,
-                upgrade=False, multi_version=True, no_report=True, user=False
-            )
-            cmd.ensure_finalized()
-            self._egg_fetcher = cmd
-        return cmd.easy_install(req)
-
-    def _set_global_opts_from_features(self):
-        """Add --with-X/--without-X options based on optional features"""
-
-        go = []
-        no = self.negative_opt.copy()
-
-        for name,feature in self.features.items():
-            self._set_feature(name,None)
-            feature.validate(self)
-
-            if feature.optional:
-                descr = feature.description
-                incdef = ' (default)'
-                excdef=''
-                if not feature.include_by_default():
-                    excdef, incdef = incdef, excdef
-
-                go.append(('with-'+name, None, 'include '+descr+incdef))
-                go.append(('without-'+name, None, 'exclude '+descr+excdef))
-                no['without-'+name] = 'with-'+name
-
-        self.global_options = self.feature_options = go + self.global_options
-        self.negative_opt = self.feature_negopt = no
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    def _finalize_features(self):
-        """Add/remove features and resolve dependencies between them"""
-
-        # First, flag all the enabled items (and thus their dependencies)
-        for name,feature in self.features.items():
-            enabled = self.feature_is_included(name)
-            if enabled or (enabled is None and feature.include_by_default()):
-                feature.include_in(self)
-                self._set_feature(name,1)
-
-        # Then disable the rest, so that off-by-default features don't
-        # get flagged as errors when they're required by an enabled feature
-        for name,feature in self.features.items():
-            if not self.feature_is_included(name):
-                feature.exclude_from(self)
-                self._set_feature(name,0)
-
-
-    def get_command_class(self, command):
-        """Pluggable version of get_command_class()"""
-        if command in self.cmdclass:
-            return self.cmdclass[command]
-
-        for ep in pkg_resources.iter_entry_points('distutils.commands',command):
-            ep.require(installer=self.fetch_build_egg)
-            self.cmdclass[command] = cmdclass = ep.load()
-            return cmdclass
-        else:
-            return _Distribution.get_command_class(self, command)
-
-    def print_commands(self):
-        for ep in pkg_resources.iter_entry_points('distutils.commands'):
-            if ep.name not in self.cmdclass:
-                cmdclass = ep.load(False) # don't require extras, we're not running
-                self.cmdclass[ep.name] = cmdclass
-        return _Distribution.print_commands(self)
-
-
-
-
-
-    def _set_feature(self,name,status):
-        """Set feature's inclusion status"""
-        setattr(self,self._feature_attrname(name),status)
-
-    def feature_is_included(self,name):
-        """Return 1 if feature is included, 0 if excluded, 'None' if unknown"""
-        return getattr(self,self._feature_attrname(name))
-
-    def include_feature(self,name):
-        """Request inclusion of feature named 'name'"""
-
-        if self.feature_is_included(name)==0:
-            descr = self.features[name].description
-            raise DistutilsOptionError(
-               descr + " is required, but was excluded or is not available"
-           )
-        self.features[name].include_in(self)
-        self._set_feature(name,1)
-
-    def include(self,**attrs):
-        """Add items to distribution that are named in keyword arguments
-
-        For example, 'dist.exclude(py_modules=["x"])' would add 'x' to
-        the distribution's 'py_modules' attribute, if it was not already
-        there.
-
-        Currently, this method only supports inclusion for attributes that are
-        lists or tuples.  If you need to add support for adding to other
-        attributes in this or a subclass, you can add an '_include_X' method,
-        where 'X' is the name of the attribute.  The method will be called with
-        the value passed to 'include()'.  So, 'dist.include(foo={"bar":"baz"})'
-        will try to call 'dist._include_foo({"bar":"baz"})', which can then
-        handle whatever special inclusion logic is needed.
-        """
-        for k,v in attrs.items():
-            include = getattr(self, '_include_'+k, None)
-            if include:
-                include(v)
-            else:
-                self._include_misc(k,v)
-
-    def exclude_package(self,package):
-        """Remove packages, modules, and extensions in named package"""
-
-        pfx = package+'.'
-        if self.packages:
-            self.packages = [
-                p for p in self.packages
-                    if p != package and not p.startswith(pfx)
-            ]
-
-        if self.py_modules:
-            self.py_modules = [
-                p for p in self.py_modules
-                    if p != package and not p.startswith(pfx)
-            ]
-
-        if self.ext_modules:
-            self.ext_modules = [
-                p for p in self.ext_modules
-                    if p.name != package and not p.name.startswith(pfx)
-            ]
-
-
-    def has_contents_for(self,package):
-        """Return true if 'exclude_package(package)' would do something"""
-
-        pfx = package+'.'
-
-        for p in self.iter_distribution_names():
-            if p==package or p.startswith(pfx):
-                return True
-
-
-
-
-
-
-
-
-
-
-    def _exclude_misc(self,name,value):
-        """Handle 'exclude()' for list/tuple attrs without a special handler"""
-        if not isinstance(value,sequence):
-            raise DistutilsSetupError(
-                "%s: setting must be a list or tuple (%r)" % (name, value)
-            )
-        try:
-            old = getattr(self,name)
-        except AttributeError:
-            raise DistutilsSetupError(
-                "%s: No such distribution setting" % name
-            )
-        if old is not None and not isinstance(old,sequence):
-            raise DistutilsSetupError(
-                name+": this setting cannot be changed via include/exclude"
-            )
-        elif old:
-            setattr(self,name,[item for item in old if item not in value])
-
-    def _include_misc(self,name,value):
-        """Handle 'include()' for list/tuple attrs without a special handler"""
-
-        if not isinstance(value,sequence):
-            raise DistutilsSetupError(
-                "%s: setting must be a list (%r)" % (name, value)
-            )
-        try:
-            old = getattr(self,name)
-        except AttributeError:
-            raise DistutilsSetupError(
-                "%s: No such distribution setting" % name
-            )
-        if old is None:
-            setattr(self,name,value)
-        elif not isinstance(old,sequence):
-            raise DistutilsSetupError(
-                name+": this setting cannot be changed via include/exclude"
-            )
-        else:
-            setattr(self,name,old+[item for item in value if item not in old])
-
-    def exclude(self,**attrs):
-        """Remove items from distribution that are named in keyword arguments
-
-        For example, 'dist.exclude(py_modules=["x"])' would remove 'x' from
-        the distribution's 'py_modules' attribute.  Excluding packages uses
-        the 'exclude_package()' method, so all of the package's contained
-        packages, modules, and extensions are also excluded.
-
-        Currently, this method only supports exclusion from attributes that are
-        lists or tuples.  If you need to add support for excluding from other
-        attributes in this or a subclass, you can add an '_exclude_X' method,
-        where 'X' is the name of the attribute.  The method will be called with
-        the value passed to 'exclude()'.  So, 'dist.exclude(foo={"bar":"baz"})'
-        will try to call 'dist._exclude_foo({"bar":"baz"})', which can then
-        handle whatever special exclusion logic is needed.
-        """
-        for k,v in attrs.items():
-            exclude = getattr(self, '_exclude_'+k, None)
-            if exclude:
-                exclude(v)
-            else:
-                self._exclude_misc(k,v)
-
-    def _exclude_packages(self,packages):
-        if not isinstance(packages,sequence):
-            raise DistutilsSetupError(
-                "packages: setting must be a list or tuple (%r)" % (packages,)
-            )
-        map(self.exclude_package, packages)
-
-
-
-
-
-
-
-
-
-
-
-
-    def _parse_command_opts(self, parser, args):
-        # Remove --with-X/--without-X options when processing command args
-        self.global_options = self.__class__.global_options
-        self.negative_opt = self.__class__.negative_opt
-
-        # First, expand any aliases
-        command = args[0]
-        aliases = self.get_option_dict('aliases')
-        while command in aliases:
-            src,alias = aliases[command]
-            del aliases[command]    # ensure each alias can expand only once!
-            import shlex
-            args[:1] = shlex.split(alias,True)
-            command = args[0]
-
-        nargs = _Distribution._parse_command_opts(self, parser, args)
-
-        # Handle commands that want to consume all remaining arguments
-        cmd_class = self.get_command_class(command)
-        if getattr(cmd_class,'command_consumes_arguments',None):
-            self.get_option_dict(command)['args'] = ("command line", nargs)
-            if nargs is not None:
-                return []
-
-        return nargs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    def get_cmdline_options(self):
-        """Return a '{cmd: {opt:val}}' map of all command-line options
-
-        Option names are all long, but do not include the leading '--', and
-        contain dashes rather than underscores.  If the option doesn't take
-        an argument (e.g. '--quiet'), the 'val' is 'None'.
-
-        Note that options provided by config files are intentionally excluded.
-        """
-
-        d = {}
-
-        for cmd,opts in self.command_options.items():
-
-            for opt,(src,val) in opts.items():
-
-                if src != "command line":
-                    continue
-
-                opt = opt.replace('_','-')
-
-                if val==0:
-                    cmdobj = self.get_command_obj(cmd)
-                    neg_opt = self.negative_opt.copy()
-                    neg_opt.update(getattr(cmdobj,'negative_opt',{}))
-                    for neg,pos in neg_opt.items():
-                        if pos==opt:
-                            opt=neg
-                            val=None
-                            break
-                    else:
-                        raise AssertionError("Shouldn't be able to get here")
-
-                elif val==1:
-                    val = None
-
-                d.setdefault(cmd,{})[opt] = val
-
-        return d
-
-
-    def iter_distribution_names(self):
-        """Yield all packages, modules, and extension names in distribution"""
-
-        for pkg in self.packages or ():
-            yield pkg
-
-        for module in self.py_modules or ():
-            yield module
-
-        for ext in self.ext_modules or ():
-            if isinstance(ext,tuple):
-                name, buildinfo = ext
-            else:
-                name = ext.name
-            if name.endswith('module'):
-                name = name[:-6]
-            yield name
-
-
-    def handle_display_options(self, option_order):
-        """If there were any non-global "display-only" options
-        (--help-commands or the metadata display options) on the command
-        line, display the requested info and return true; else return
-        false.
-        """
-        import sys
-
-        if sys.version_info < (3,) or self.help_commands:
-            return _Distribution.handle_display_options(self, option_order)
-
-        # Stdout may be StringIO (e.g. in tests)
-        import io
-        if not isinstance(sys.stdout, io.TextIOWrapper):
-            return _Distribution.handle_display_options(self, option_order)
-
-        # Don't wrap stdout if utf-8 is already the encoding. Provides
-        #  workaround for #334.
-        if sys.stdout.encoding.lower() in ('utf-8', 'utf8'):
-            return _Distribution.handle_display_options(self, option_order)
-
-        # Print metadata in UTF-8 no matter the platform
-        encoding = sys.stdout.encoding
-        errors = sys.stdout.errors
-        newline = sys.platform != 'win32' and '\n' or None
-        line_buffering = sys.stdout.line_buffering
-
-        sys.stdout = io.TextIOWrapper(
-            sys.stdout.detach(), 'utf-8', errors, newline, line_buffering)
-        try:
-            return _Distribution.handle_display_options(self, option_order)
-        finally:
-            sys.stdout = io.TextIOWrapper(
-                sys.stdout.detach(), encoding, errors, newline, line_buffering)
-
-
-# Install it throughout the distutils
-for module in distutils.dist, distutils.core, distutils.cmd:
-    module.Distribution = Distribution
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-class Feature:
-    """A subset of the distribution that can be excluded if unneeded/wanted
-
-    Features are created using these keyword arguments:
-
-      'description' -- a short, human readable description of the feature, to
-         be used in error messages, and option help messages.
-
-      'standard' -- if true, the feature is included by default if it is
-         available on the current system.  Otherwise, the feature is only
-         included if requested via a command line '--with-X' option, or if
-         another included feature requires it.  The default setting is 'False'.
-
-      'available' -- if true, the feature is available for installation on the
-         current system.  The default setting is 'True'.
-
-      'optional' -- if true, the feature's inclusion can be controlled from the
-         command line, using the '--with-X' or '--without-X' options.  If
-         false, the feature's inclusion status is determined automatically,
-         based on 'availabile', 'standard', and whether any other feature
-         requires it.  The default setting is 'True'.
-
-      'require_features' -- a string or sequence of strings naming features
-         that should also be included if this feature is included.  Defaults to
-         empty list.  May also contain 'Require' objects that should be
-         added/removed from the distribution.
-
-      'remove' -- a string or list of strings naming packages to be removed
-         from the distribution if this feature is *not* included.  If the
-         feature *is* included, this argument is ignored.  This argument exists
-         to support removing features that "crosscut" a distribution, such as
-         defining a 'tests' feature that removes all the 'tests' subpackages
-         provided by other features.  The default for this argument is an empty
-         list.  (Note: the named package(s) or modules must exist in the base
-         distribution when the 'setup()' function is initially called.)
-
-      other keywords -- any other keyword arguments are saved, and passed to
-         the distribution's 'include()' and 'exclude()' methods when the
-         feature is included or excluded, respectively.  So, for example, you
-         could pass 'packages=["a","b"]' to cause packages 'a' and 'b' to be
-         added or removed from the distribution as appropriate.
-
-    A feature must include at least one 'requires', 'remove', or other
-    keyword argument.  Otherwise, it can't affect the distribution in any way.
-    Note also that you can subclass 'Feature' to create your own specialized
-    feature types that modify the distribution in other ways when included or
-    excluded.  See the docstrings for the various methods here for more detail.
-    Aside from the methods, the only feature attributes that distributions look
-    at are 'description' and 'optional'.
-    """
-    def __init__(self, description, standard=False, available=True,
-        optional=True, require_features=(), remove=(), **extras
-    ):
-
-        self.description = description
-        self.standard = standard
-        self.available = available
-        self.optional = optional
-        if isinstance(require_features,(str,Require)):
-            require_features = require_features,
-
-        self.require_features = [
-            r for r in require_features if isinstance(r,str)
-        ]
-        er = [r for r in require_features if not isinstance(r,str)]
-        if er: extras['require_features'] = er
-
-        if isinstance(remove,str):
-            remove = remove,
-        self.remove = remove
-        self.extras = extras
-
-        if not remove and not require_features and not extras:
-            raise DistutilsSetupError(
-                "Feature %s: must define 'require_features', 'remove', or at least one"
-                " of 'packages', 'py_modules', etc."
-            )
-
-    def include_by_default(self):
-        """Should this feature be included by default?"""
-        return self.available and self.standard
-
-    def include_in(self,dist):
-
-        """Ensure feature and its requirements are included in distribution
-
-        You may override this in a subclass to perform additional operations on
-        the distribution.  Note that this method may be called more than once
-        per feature, and so should be idempotent.
-
-        """
-
-        if not self.available:
-            raise DistutilsPlatformError(
-                self.description+" is required,"
-                "but is not available on this platform"
-            )
-
-        dist.include(**self.extras)
-
-        for f in self.require_features:
-            dist.include_feature(f)
-
-
-
-    def exclude_from(self,dist):
-
-        """Ensure feature is excluded from distribution
-
-        You may override this in a subclass to perform additional operations on
-        the distribution.  This method will be called at most once per
-        feature, and only after all included features have been asked to
-        include themselves.
-        """
-
-        dist.exclude(**self.extras)
-
-        if self.remove:
-            for item in self.remove:
-                dist.exclude_package(item)
-
-
-
-    def validate(self,dist):
-
-        """Verify that feature makes sense in context of distribution
-
-        This method is called by the distribution just before it parses its
-        command line.  It checks to ensure that the 'remove' attribute, if any,
-        contains only valid package/module names that are present in the base
-        distribution when 'setup()' is called.  You may override it in a
-        subclass to perform any other required validation of the feature
-        against a target distribution.
-        """
-
-        for item in self.remove:
-            if not dist.has_contents_for(item):
-                raise DistutilsSetupError(
-                    "%s wants to be able to remove %s, but the distribution"
-                    " doesn't contain any packages or modules under %s"
-                    % (self.description, item, item)
-                )
-
-
-
-def check_packages(dist, attr, value):
-    for pkgname in value:
-        if not re.match(r'\w+(\.\w+)*', pkgname):
-            distutils.log.warn(
-                "WARNING: %r not a valid package name; please use only"
-                ".-separated package names in setup.py", pkgname
-            )
-
diff --git a/vendor/distribute-0.6.34/setuptools/extension.py b/vendor/distribute-0.6.34/setuptools/extension.py
deleted file mode 100644
index eb8b836c..00000000
--- a/vendor/distribute-0.6.34/setuptools/extension.py
+++ /dev/null
@@ -1,46 +0,0 @@
-import sys
-import distutils.core
-import distutils.extension
-
-from setuptools.dist import _get_unpatched
-
-_Extension = _get_unpatched(distutils.core.Extension)
-
-def have_pyrex():
-    """
-    Return True if Cython or Pyrex can be imported.
-    """
-    pyrex_impls = 'Cython.Distutils.build_ext', 'Pyrex.Distutils.build_ext'
-    for pyrex_impl in pyrex_impls:
-        try:
-            # from (pyrex_impl) import build_ext
-            __import__(pyrex_impl, fromlist=['build_ext']).build_ext
-            return True
-        except Exception:
-            pass
-    return False
-
-
-class Extension(_Extension):
-    """Extension that uses '.c' files in place of '.pyx' files"""
-
-    def __init__(self, *args, **kw):
-        _Extension.__init__(self, *args, **kw)
-        if not have_pyrex():
-            self._convert_pyx_sources_to_c()
-
-    def _convert_pyx_sources_to_c(self):
-        "convert .pyx extensions to .c"
-        def pyx_to_c(source):
-            if source.endswith('.pyx'):
-                source = source[:-4] + '.c'
-            return source
-        self.sources = map(pyx_to_c, self.sources)
-
-class Library(Extension):
-    """Just like a regular Extension, but built as a library instead"""
-
-distutils.core.Extension = Extension
-distutils.extension.Extension = Extension
-if 'distutils.command.build_ext' in sys.modules:
-    sys.modules['distutils.command.build_ext'].Extension = Extension
diff --git a/vendor/distribute-0.6.34/setuptools/gui-32.exe b/vendor/distribute-0.6.34/setuptools/gui-32.exe
deleted file mode 100755
index 3f64af7de42fd6597b4c6cf50896d32a98a7d6a2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 65536
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

diff --git a/vendor/distribute-0.6.34/setuptools/gui-64.exe b/vendor/distribute-0.6.34/setuptools/gui-64.exe
deleted file mode 100755
index 3ab4378e1d401d198b92a33ce249d29bcdb26a63..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 75264
zcmeFadwf*Y)jvFwnIS`x;e^XT0FeO(MS~a}F9`!W2PS$(CK@YhRMcn`v0A0!9KgyY
z@l0%n%~YP&wzjn`Rr`2ptF5)jMKK|eg!{!?fL8Fz9!4~XCgFO1-?jHl5>TJ_d4GSr
zf4zLjoPG9n?X}lld+oK>-ly!=Wj2S+W^>}tvTU}Mc+$U+`2C-MIFkE~T;0$1THmds
zR@$RmM@^q~{~X`!>WA;EzUxQ6s=FR~=waP=_r1Pq<00Su5Bb8^-QfGt!}r`f!Q;vC
zr>lPPl7G}5x^dsG%-^P8Jh$r$@&3WCzvEdxEV3(!=O-83writ!UbE|fc+S{mis!Yv
zKF9M1_gBrLI=&C$@=}}ap2wZGT?77ImdVp@8)M7O>T9#ThnNRt?3O}2^F=shrw4_z
zY&IAD;9urxn~hXL8vY@rCQ~R~7O}FD%!Bf!V<>2I_P5){iBS5d(r$C-^p5zy47b~C
z%Ot4ZS-}MT-uXIGPP~I30*Lya?gv8RpU-BioKStwUHV<1hw~7HI&J6UZx8-@{R@Fi
zCdh2IPcB7*4>%c&r&D0AJ16orOqeY*iaw&Rwmc*c`&K?={r~^{e~AGtKEv<U;t%@s
zwYcst(BcdHK6Sc!qk5BOe(sC14>fb66=;aC6RT;kzIs{f+?fdXwQGq-EUl`Qmt!0Q
z9f3p9sxO;uqqRhZJ<8hatVQ=KBWtK1s<I+)e9h4rhSO?Jom+EswBf7kSTrcinqQrv
zvCZrh{~>D79Qz78njJGVt0|Qg=s+Roc+J{?*GTYC{ZwngN)#H<tI(ygkj5VLYZ}x2
z<r-VyuV{9RZk}qlX>5i+6k*Mpx!$MVq28{}XxftbNBu3hS*!iL5=5^t*Bb+nKd@el
z$Nc3YX1B%~l@)z8b}Y70AGl1j8fuPSXgHfg){G_Y*hb?EEfMpFfQx8isXv677EOfx
zAuTc8UxfZ>@vz^=uj>zvu)tqrQ|ev@4iF5@P-4#__&*iiE(;GpVTp7tfr7xeXrOba
zX0>Y8M$OS$Q!>MFBZ#N&m8rqj>fC1ZL_`{?UN8}qVDM4E)&kf7gN^U=*lc1rSJ6!6
zOTl-v#FHXlYCx}qIh4TOR##FsjkRj5i?7M0V2j3<N`wWra5q8Bp7z%e0&CY3X79{k
z{C}n|jqR3Qjk1FpJDw<a3j#wocqjOBz|z<eHNMcMtjz^kl?Fc1;syL(G*{Q4dzF!4
z8&am(K_<LhL>leNibA}GVu$qGLdx2$yjW&-mDYWtM?y6xi4a>-yAc{~3=Va)*o}UH
z1|%v^HiRxd6lVK(T6LB_Aj(>ZKDY5L07G+h1}v)bnNa-%4Rrk5)3Usn$<o}%rdp-8
zNL48YqB#=3q?rnx1K{~Tz-j?=|796?mx~Cay(S1Ex!SVOQxNSL^!yz(j9EFZZlf`P
zc^(^Ox7BUb-GN<}_p*P3Q`7te$&bsRUXVQDKcDD*KT-n?gwfqvBI=(VPFy`Juq*zC
zpO`yQUOD|#&`%|Q&uz0MZpI|{ECpzwo7uCF%kqA)m*{;4@`5I3M^U#%1wzC&is`4Q
zG_bKW&;X(dY{ct0A~}M~^8N)y>l%!4{Fn>vCA@$6fF4>UuLikLiKqQt1WE1s{dnBj
z!~loJqW*GolNERU617;~J5h&-BWfkMEpIqe?X$Al@tJCee^0eB+2J#r>&+i}@xz;m
z7fMc;l$5%Lx)Wh1BUK!<8vKvOz5+|c^ok~~w=W!a4V$z{X8h{qh}DRsuw!R5xOKs2
zk*ZBV3m=&+y1(T=Hd`6nfJqf)`}qI`k!ePIQdWyP6ZcySi=xc=L8NLcF!oCni8!|K
zPx}!TCVe0afZD~J2|JR2X2Fg#=qSS03pNNQDCT77hMU!!R3eB9@GdaGHJ)w;SVY{6
zeHF%t`l3}w1y55~+R)*^M$3C_cLqk{OGR>`Cc=3a5;+xV!N$1-%1B#H@dQ0zlx#+J
zaIE0Ec_{=j!swqU8Q6ug%rz0+kwxQITg(-}Yy9eL{yrp7)@F8D#%R8s7#Aq52)#cJ
z5*PF`1yClYI+8~L7tuixo)SthsQ6#~B>nIauOP9iRZF~)N9k-cpH|<KU9&c6);cZt
z{v1VFkrivu-IH>3=OmAjY|cWROGTY%b1~XfSE4=}_XFvez+(aUEdr8srnsHC$`KJ)
z-O38rH3-$KdDMSD)pIf0=0}fVcFXmlSYvG(+s@}6r3ue9Ob8!Oq5(9vhvpU-E6s^J
zP%crLmBiR!ZocL(M;5Gd{%HI;zlLxW{iL<0G%^12)tIX`HBoA(<+u@4ud%H}Q=_{q
z%RFU|#GU>K2F$(4r<qM|Yn#S$c^{-{W{aC*H1i9)7Qed7_)LrjKiFwmg2*XDB)E^#
z7LHOz#?TB=e%=SX1zA9My)rB~U_x*}(-Ky#1ypXc>E}n-I{=5T{xk4kPxlj2By}>%
zHt@N~B=DOWT*@}2Ge2^IkkiW5<CYa==?*j5VGU0jU=7O;k*kK~Cr+zW?RuhT^-lGU
zJ8$dF05#^l|17(WdG5roDtKhFOEiErzZ^o3=8ncg1<|<XyWu9xcFc7Q($T<Pc7!!)
z!OhAq8-h*7xqR6<Hd~7jZi%D%B%2HD3T)*6J=SJ3Tdky*=nO^P&J?-*dyC9T7x@U?
zk0$Q%&*ntT%Q~(u2q|^HL?qG3XJb%rm!+R?cAWy<Rbggt(i)Gtq6t^ad3Kxm(Mauq
zT@?|>AW*qyY>wTQ>W{!#2xttv!}Sa@bxbK<Y>cH^hEXkEni8y0YwU8FAENk16whnu
zP>XBy(fnlq_1!&O?*}B?tl$yjd;+X&AkEM+wnZ@d>Hb+1S?NV&yT;zfRI?32XDITY
zgc1_Niot#E5aXgHTydA())cydxGHna2-<CHke}9u?3J{YO1XkfO0)@}3d)YVN|1#+
zflMv#@)V+b$m)lv0C6im;w(x$0ML=xe!fi1UO5aErsfAWVp<JHYg&AeT{G7eX=WqH
zJ!RJ+-nrHxcj{B>L&7@%nMxCyBLa4u@Xi`%2c0*h(G+3Mb%d%Y8)T1|$1FV;zo&Fp
zS=}z9PfOM*ERYck+-+S^#7x?aH;B`%_fcnQt>!<)2C8PVpSC)>i}yd52G?^HL5ih1
z*@$j!k+={Gv*$sGT3T>-^+X`5J)6R9^Cn>3&{qECCGqckt#GH-c~EOS<`4vtyfP8(
zpU)>@->R&Bpg>9GXo+b>miGp1@X~<D`pu(*G`44<Vm9XUe!X*FgWO|#a!a^@ln))$
z{HE&50m{7sl-7BL%IY5%C|cpBUhs4#&jjWb^cirNji~wUw*?#|l@LAv#X?0{U0opH
zcwA;o5C|`IXH3I;k3S@ZYyK=YpTs#a@WV?WZs=Z)tveBdp36H%gUF)(P#gpSmLyT1
zS<chXnKLu|3*;X$yWG_`C@XeFR@u}4BFZZ}5gn>NTkG6yeweNIi550$@q7r|Wvn$~
z?!Pk9nCxSe$d_!qIQ0HAXU<%<OpEs?s)|?}jjzi9PfmS*&1#HTtwu+aGBRYNO!yzE
zJ!(74W}8z)`Qz6^!ni&k<wAJ2;cq|6<H7OQj=wIWE%hWo4x^7sQ-A!S1b$=@1ls6L
z6vC6!OFR8^89Ul*^8B{sbP#246!i2z%66CKHt2o~VaK{`ecTc(fA!A(O6+4|JJvct
zu4f~~_$-wdVNFe1+=&jZ18%b-CU;k#6Io@Q68{!O9gtmiM9i<OvcS&BDx1V*ZCTw;
zePhIIa4Ru}I@8tD>XEK~e(aNae}CObzuvDk@_dm?zdIdulgx2L`t|Cb9HDg7B{IiF
z>DRH{Rg6r>43ru2<*QORiKZ#_$FWHZ?7~>*SC@7)X6rc^t@{4xb?Pws=c^vtdw}BC
z7hsTllrZN2x<ny&b>H-uQ;7yQqU_b#V$@SdsD&-*`CQ5hFyEqVqiTNKrFPhyQMOYb
zsIri|tg77E*%o!|1dof3*%_&7x`qwP*Vxp2rnxo8G<S#UQ1m=yh3YW(w`)%kq63>E
zY@?v=<ZmDqiMdq9RIF7<*vaGQ-f0^ExsH(x4QXy%G#>T)K)g}5PJ=wnv&LaGz?Pe~
zi2Xqnc?xc%<&QT0kPgkyA$LCKe*uFQ#ftkB4IVoR*)XuHj2&g0;?w=Jwcs&5CmQ_9
zP@=(gy0Quk&X#-wzw~-I8r)>$X(dnkmm%8t2;3kY*58W;56YzFl++@VD6FrE20xNX
zf2X9s$|MTw%VqD_zT$y;uGk4<sa-eka7}QcF&<FpqcElp<uNP=Hgy%25g|*VuMuqG
z27=85c4>)6?I}0qb*S}&HQI50rJ=$h`n|M8+XI{gb^&%5M4Qx*C5}lK>Yhn6^uCiO
z7+5ckq?}sf0orR84>Y!G!GrpRQD9(f6w+4V_Grmc(NpE|mwGq7oj)aN)!0dD`53i4
zL<0oZYr)RyC@`Uqin49#3YMej+#iz+DB#}8Zxe-q6un$4{6H&t+E2KcdoArY7}izl
z-4=c+a-{$a>e34LQ7%!@IFYNnE~UFJr&>SAA81Ja7wTf0Qcf_>*-;kr*WjJ713=f!
zB@_|Bp3JyW%n)j%AH^(3-nppgMwIwSMhVbF-JlF(EWcv}(bzqHpKT541bZYVY~icH
z3t3ZY0Epy$ekn4p0u#5z-H=VN4W19uEFw{kR5y3taXY4zpi^*7oi?-P=j9QSqmN0k
zUt@<!9IQbNB;0hiMOb6m@V#YY+7QN?P&RxQ?Nq^QqyFNuF*`(Ti$<|f+R)S(7ZI^Q
zSlRFf4Y585GOD>BE9^GDM@Wk^Xg8`u)-l(YcPlr#S!@q~)q<Y;v12m&YmJThGdmkC
z%g8#?q&05LPyXq&wZ2&`zyh{Qse24?^Gl&V)#6jZ1eP^WKjH&5R!_QkEj|sr*W=2i
zwRopKnANl*w$8PnFB)<4z5&VtI9*k4<S3cy)`ts5QZKT3Zlr8|`9VwoRF9gb=68r1
zvJ9^&@?<qnEx@!mqCA{+L|JU_y@rZ)IAl(qHx!dftJ-Y<JlAayFqPMx73O|->L%JT
z_yW85Ibc5;cI-ZLWgha{7Y(Lun@<RE5C|{7%w`L-wiL?OgpeLqUO%e>Y|#zPSg}pd
zqoPITasv6JDi-mOke@IT`GPkI{zVdFB~S+1${G%U1a0+@m6Toi5XgQI$5S_IP>#Gu
zV;-WPB2w4YpaHSTfz$`hL@}UVjHfmQ@%#_iMwk!!i|wp!ehz6Fil9(SiM?D=U?X3Q
zJ_yh%PupKe66hI!k^u~eXi@OxHJK%m7MhVu>{FHu>Wk%O;yUAIT4t}s#`7Ajvyrw+
z#)sD=2KAj;`;n#0tUcDH%-g9kJ646hU~<L=Az@(YiLB17y>qcBw_8!iu1H{Aq^?PC
z1fYS2CJp3kwpmTFUHZAP4t<Q)crYK~;Rp{&hZTf#WwbNaVboJGbVABpY&XBI1pVC1
zeU}4O%=5RCz)aCan4qu?(URf2O|$m*%8xC_e{Cg2%#n>qN9Tt^a(oyu*ug<xl#X<=
z&DIW4`n0xQ#{eM3yB*n3=PEbaNLKskMTTdNq%efgITr{;BF%lw&0{1hGY2)7MfGA6
z8{AiYh<Ha4wSo!Slbv)+q5x_c0tpf`E0<^^%i5VKne1IM&1+;+=Hw-3gJ9Wiy#PI3
zj4;m$3Qd5U0Dp)gE}e+pCcHn{Ob^dAJoqAX3{BmN_kF-8UxFVkF=C|1GTDbms^52Y
zz??jWn$t(3;4rHD_oy4aR6wwSjcTGi%kpL+p89k~Uj=U@)lEU~Wjs{M_Om@<c2wY#
z4+cJ$nUntjy@FkdodCL9TubN$p>X}!#R%5zRqD3m6@y<h0uTf)q%fpXQp40WD6v1v
z#M>xwut@BpL|>G35DZv$AjV>HY37$;*w6}S!Bf?FeBT7rQ<80Dr9PtwC|4E!KE<&%
z-bBxMw)Hj|&82$R$^^WAjcq%B1+P(TKV8uv*U``s8r^YNlj#XbCEXyCfTZd$8hM*g
zWx{g^l*QjT3GS5e_LWh`DC$K-EhC+9jzr8!EJ%1Y&S`Ni0tX{}sNijG{s|IPY-RIM
z08h(1riG+0V1G8P2eed$x|b>tHx1OT<PWhc6k!aRJvjq!q$&s}rr49$iKHz;%Z@0v
zE;*TE<ox5SE+CAw5>gIMrr>7&O#0amyJUJ_l79b5`nik95Ahwv^0|wipjD6{zniLy
zyAB-1gXV5p-V>%C(g7}~u|z+y{kp9gq_MK>R-0{RiR-g>v2NY1Rk?<~N2t5>J-lm<
z=GtO1qw2YVy>Tguq^@0+3t4MsiB`}%w%A-r@_xU0y>j{kdrO|`Lag%3rcCMl?uyVx
zHQIQK5D#p>JXI(JMwLv?!@_5{_^M05f-n>|{?m)o%!vOB`XOEc3dBr9&X2G#A?Fj6
zGoNza-kp<C&a=V5m+|Ea<$ok+6;==%?}G%(Td_f4=@IPFd5tQ<b*PLl2&MB9U*db9
z#^d(`>7saFifTa=pxuI6FiEqav-%fhYMlhbXl#N1LFIMG$?7UBELieNH$@p}gG7q^
z4xwBZO`5vB1{G@tb@AQ!NeyFN<{LuH!}5-lm5AKJx8ZjgYe~6Q5*v;tq=*+`w-rR#
z9AAWeEJPA8$8r2EEM^$%amfLK&@||O;}w{QvkJ8MY#-^oPU8<{>=Abv8x>(cE-ouP
z(4jhKmXSDhFv^lj-M`ToECz9{6*{sVC08hqL;V7Rxg(EF?TQBXD~~;o9Bk?d3Y)(}
z*nHG!Q(`1pnnAlh6g--!OJnaw94*!ku#b8oj74+Q+J&~NIX~KOjML1?odu{>KO02*
z1w#Bq$U;D8KQTojY^&vcAJJ@@Q>yPoW!w4N=x2mo6=F9y%c{yi<=E!neO$!xzR;_0
z6->$UvL+1Fd&q1-6mH57UNPr~$ty7Gfriw~2z$gAI20+gN+!&mj&9|%X<tW!A68!>
zyEo@DEqJs#PYZU<$yPf`oj&72GicNMqF2E#eN1YI#-{t{qi6qsmbFh9cqntUsMZb`
zE~%vn)qfY87BZNGFjhqo_5hx9G>lhomXVQd7x?pq{?UikjdRc`hJO?QC#L&rV2w9?
zj#+3nK-b=8I064a{<4gzq?mc4G0XK3R5hJb3rG$#s-lUpyGV6Y)fF)(ov;~&tH|ij
zuNeU3#hoX>&<!kXQ$ZJyJ>w3ci;Yk9LsU!+g{t>N%TzxVXqoD!2ZT}N%B`JNkkvnJ
zaDutEL9RtGz=G$);wr4ISYV5UiceX6cL4;vJ#)^&R+Tq`iPcsWSYJRlUF8R%j=^75
zeug_`<dBXj1;A7rBt!Ej`IyzJWlNo7PH|iFJy1l{!}yt{tY}QRm9-oBXX8O^Fc&!c
zI#OAdBhBaPb}fnu8KB3uEmrghI~rl_Y)@!Ok~UiGz0i`a)@EJ@iZHLVbZ6b(#Rt;;
zfh<TYK14Oj`GwU6Gbv*$7xk$fAp%uas<EV=7cu7xknR0bmjjBxk}|OsW$&Sxv(XIf
z+Gxob!Y2cxX7Tw(e+kGxuH+V`ECAU0JpfRDPTQu}e!e3MqrzMrNAQqV>{i6kknAR@
zcNU30n1S;nY)2VOVvbb8#EHlBFl)zy=12wp%K1G<EUOfXk>DOf<<Eln0(;LCt*Ln*
zf4!g0R{XTs?COe!ZDT!6b}74)8vG>0S=HQbbxbV?MH8N<w_BD{w;Fk9jT+#=GvS>F
zaMfUoK8}>qW1>|J$T$ZXp?<}#Yb0s8%N}T`D09R%*1(>h%7NYjS;~<G_=ZaRJSu%Q
zl^!Y-<LgKp4z0G-h(Fm#rJ(z+(N+FF;QhY7qyWzM^+jbZ$&1hzfs|wV>!BqVs$?6R
z?hnyVSY_BhJ}Fcq>coRe>|h`2;?qKBqOKuDwq~`c!LKx!SpSahD@$9EBT>44QpLOh
znzDAo6lLvFcRMg)eyF4zD%+%0t<$QYvL4imq$hLozqZ*Lk2%rS47N!P?owip034{8
zl~_F%BoVkU6G&x}_GALfGl5^DS@WnJDli0K6W?HV-J?9Q2<$<L)c{PhOI2dDD>J*M
zDzP0jnq8$zY=VfnT8WJnfgAK6nOzl1>=W^Jt3Jf+x=V?X&BN@fQew}eSW<HmONIg5
z+yKMTI{iY8RUoiOKSxzof0C=bWt%hLH`s5Lqm-?1-OjG$0F)qXmM7f^X>3H<VbpUN
z3NE#CeGxi`sjsa5JU7B_x0MDvRo1);Gib3Ah7xy!8+r1PM~RVg9qnYQ)|BvwJX8dV
zOMZo>&Zw)Wq&~h>dA+QQtcVTBM>8c{#+vxALt@-j^kD=ltsr<)1Jxy^U3d%ATYW5D
z;%V_rmH}j>kyDs0RI|aSnp;Ap7<{bM4Tw_N5hZa!76NNA2)5({2%25@Doed6XLjAU
zXuH{UzY+t?czZ~R{YwNMR${*uf!X@KX4f1g_6_)h*<~oPEh2ipQui(@T6r$sQa4zw
zGs7kQVcIYovjDmArB=9E+j%rK3YZ~`eD$TkNGiu_4Hx&<!9yD<+u_2^U=-mb6VQPr
z!DVOl=gLZuj}4rmQWe5fY3!3nDxKFihyBqaHF5n{^<jTm>IPK^&y*IXLVZ({BW$4<
zem)+85~dDXP-63;K~X!_`*hdL_~ogr_~jX#CLg4c2CAftgw<3dN>Qq_>5(@lrz}lP
zsR?4dsg6OYDWqqYDQ}f_rG{Yq@W>Z&eafm3c9ybIs9TZ8Qx;se&>iV)BiP)s;v7+N
zwWE|ZV0ad~)wN=5b5-+`&eGtKQsufMVJu{oWd6a}y#=H|T{L{-m`y;Erm}6SwM`9f
zTI@pIIy4{17r~tEJPg?`F{Q}tDp}-E9WC_^&DxyWLEb)8h58n#)+%g*@{ro^3%rIE
zle8*CVts3ZMM?~EE;z<!3rWq6qT~sn-{=Q7mHP}e4P;3gK(+SNvq)WZo|;&DJC&;1
z&L4q{Nj^+ZApwiJo{b#@>rC}g*HTuRl-NrxJBA>rA57q+R)yVKOmHh+J_?0sl?XHV
zAVFS}8o_1+$B`BL1*(+29mej?XYEkgi9kc`ff_{WBf`OU2oTIuhN`(+)B}+S6VKWa
zXb{j33w9Y$wtB`;j?aA5QYJ@D@B)Lz<#W(t6D<$dO%y~!=n0oh_g5%&)6hRLm=_V^
z+;g&t0xwAABF?Vo(@UY)GsGA8wN!t^X6Yh}FU2v8w0ut|pPE^Px<6dliS#@yx9DmJ
z)@SzKKYaWhn6gC#As|Yz@AE;hjw7pEAA(=!X$6Y-vnYV7!+{1^qRMq6*tO`#8cRW?
z1tF9e36TttwjB6TSJG^^wrl2wEItLh0y!g$i<#7*f~)K2M4|kel?Gv{D9(R@HbmBA
z#`6OF)EM!=ngra0QbW7D@IImK9+@5Wgg{RVh7r{Ipzb`>%|jicMq00lM2I^>4+0xI
z=msriRx*vr#frop%*Gj5boaIZ8Dc%76%Z?3ogdB%;bN)TClO$&6aoI!ii%G{EsY2g
zLdZ1##X-nBSQLGj=P=Qew9+m4Laz$~iRcsYJ4-Lb?}NGrzw?Y=5l!T#o~XI<K?C-g
z7JAJ~)qqjtC+A@zA>d0sguoKw6Q3)SE;9zzEVf@_^n*u2mWWDThvZ2C5r1)a{MSnI
za*Dr4iCsufu-tR$2}V1Tp5UxQ=s91BDfGm8myIW_P%{MChLjas#d^iNu$v5Y1e>9A
z2cj^3Kt4oCKIt3F0-^wQXyO-2EDQ8|dWPZ10E{Pp1742ao^K2-WrmoRU`R^h*N84<
zoyjNgoSMj6K?`;`p=&#m3q{ITNh4Emgqr4#7<7=ubR}^sl7Ji-mr@F-VR|C3hRP?x
z+78N)oG6R>bQLX+(J#Vpp*|YF7w7}=Tcp$#$Qs;9C0$jrj||w8C$R@5+-4__P{`bp
zl{|<5p<_1vRM5|K`q4_+N9Y3u%adYj`vVt|8F_}09)#2nzO=e_7S{bx@oPe!OwI$9
zLJ!!zXPu4R#(el@RQl3(soKw%fyij8`Yi8@SS6ROu0TXMad#_OLiVAVC~GSXSdn0h
z;U;nPQKCfnk3l=GvMq6sPHJ+OEteEZZF8oU);|ghUaqA!Pwksi8h<no5yf~Z$-&P=
ziYZ4-G-5VYK+L|bcj4+L<~auuSalcp?^a?FG1QpLXj_Sq9V(ib<<zQ*B93p?*dV8r
z6e!UG!L8s{l1KpVXyVcn*qw<!5d0%0{HQ>`AKSB2%(Vf@s$+fJ^#%fw1e1X8o}+#X
zaJ8nYxaPYdhX=!{?mky<V6KO0OK7zOn-;`CC?hKIn#u++6t6N%4endCNHedn^at>J
zO1~GIUz=UOgC1^7Cf3jLMqi`Ft3{7Qs}7Kl8H8`Fp(D#4_yl6RA55SRIUYe|vZ;_2
z+z|{}{%TUb@IB|tlG!TOy1bMarFVf0t0h7k=Vo{C_=3ku8EOUV*rz?Pw?cD_c()HA
zHiH)J2!p5eJ~h+aHL1nTQ{A;HW}Zb$wAuL0O3;s08a$wcp?iMjpEUK_HS&JBhEQ56
zRMNjdGy#6O77r*Z8qBUNgK7(<`oex_I1zNifg%m-gfy%!YieF9pUesqD6iJyz^t%T
zYdx^2nU+IYdOhBmXE4CDygoF6?YRT_NmWB6i|xM;TYqRM9xW<kRmI&Z0Mds;Z&M77
zH0&DZ6SaP~UE@j+6anC1>RH&4!gLG0fyV`n8u`+|zZ0~BlC#C^&>?xPd=l;QynVF3
zk+w1s^XC(ZVr`;lxASJX<!yPDQ1!ImP0eF@4q;WnT;(Sh;~mmOkYFknj4VWxuTn?}
z6oOYwE4>IgK~xJH3Eq9Mn5;tSl#iAi4%kTAkoEVxzd-P$(@A<B;<S-nMn|;BUxTOR
z?GNYz8(Ev>wf=#4w5nO&&k=<3A`c2QcS6hJU6)YSZHQe>wTPi!N!j5~iq?hA<~#HO
zP)$Mk?^)XcqF}ot&>*v~c&Gs7(CuMSuy$;iVQeK$fd)%2SQ<p2)L3C*<|Z1AGMENW
z&qLefSs)PF#)oL()<_U3$EXzvJpxwMcRwK#f#p7&2)TnfdZE=2aqKX=E~x%0p&l~3
z`p@gL5}Q+7Q*C1yl(lj&!sgL_s&W;KJWr`C+~|ZZm-Kz}B(N}1CtL?U1;(9F5#^(;
zad3t~`pv!4H)qlZiS%xpPoP(x=ezU3PCE<<aEN*WafA?OG*O-pfg?!7AJ0N1q*Bi4
zuTIm8kfZTob1Qzg@p}R&F5P#=mAG#G2Bu>lsnT0tA=dpz4&fji95Ds)Dm$)ReKL5`
zfCju<{Q`;tBGZPQ?zLeS)`r>8Y0k%S1$5L$4Z@tC#KMI26$C)z#qWmzmTvm|64$=3
z(e!9)y6m*3TM&<?RpsgvYVd@C!aa>ciX@w81_IJ<eLoBx!qg;SfCZTV@b&clLJe-?
zfZ`Sj#Wu{lmk9xXNFzWMP#ggiU#r2djkW&|P<$Kj8DHf<halvGD)5gJ9D;h^rS;{$
zZv(UCh(HN|nRps7uOS}0Rsi#j8vMps(~FEHHiTMC80eeGns&KR_C?8n@9Bb)n!M6$
zP$TB(5Pk#X1dM{^orxGooyV~ugwZ-pJ{kIfZC?y!QJ^Dnt)2f6lEJdX9S+hu1xH*m
z&~96Jf3)gjEW>U%rd?xB+Hcd#uVH!nJJbSG&*!hAbHwZWSj~_x{O0jN3ob(Dy%51D
z7q-Q)a{T^pL=T>38TlbsLCH}zVg=r(nf{M$RueUsdO~=!@B`q7B+!a!44)}LTm%A0
z^O3YKf{&>M0Sx?ZzhhFCab>4k0HMI9U&cxbAIZl_m<#w><N(ZW$Pcp?bp9i3av+^3
zY-&NQ;St5$e=<I`AeC)SEAYX|Qe)Hd%__HOR)+#Ip4&}&f_KO{OX@u=7}@+%@P*WP
z{zG&F^V3BO#M#Q~s)BxVytFfT2BJEed=@54ERhXDSu3$lG8lB3&^brr_xKBX{C>jh
zFwR-XA)x**3s}eng~oO(IQeCqT2m5_qfwmq0dg1F#Yk|Q{zDk6In=hMUI~lHlJ{Y+
zK>8h&&hoezqDxh{BO8Nw32_gsz+<s~hS9h`HN3R0!x)TASs2G*GFer^oq%y19C!;v
zErSlC;#H{FY9WBc20#uIDX*w*6#1Hli+C-zXjq%>!BRzICVWYnMDAo3YUrLj7(+rr
zf#f03mj87>Xtx6bB>T7dsM~J9@wQpWEmpGzaT-karFM`|A`i=6F7G#5m?|zn^glmB
zG}QhO2!d@3nuIc54jterCV1qG0r^z5XpV-6>0eJ$!rpFJPUD}j7LNibTH=CRsbY3q
zW0z}n9r|!{vD*$uUWOUF<0VSj#ut!>ig_-YZ^_q!Cl|owT3ERAL=XB{-sdSJV50*9
zm_Wo#dpMlbZVSz$>*amO=-8++bk7=FK*ca0KquXJ5{Dt+3nKI;u-)VeMa2+aFciwo
zYe#U7l}h*u@WK0u>W^y<$R8Knh>9cTf|HmSPS%`ybk#V}5N`r`rn$4iC*Y+;918?i
zZWTr|J`=f?$#TYpVi<_3pYln*Lg5-R?H$2}JzcaTl^==EIB844Wot9P8>yf}&s;Qb
zd9@ca(;59gZBTBPb6RNh(K#(K`8hgA;@GR1llH-xhm+<FtPG+?f4=hrf;w+s&%^|-
zK7o=%;EL*irKgQn0`SF)$?t5+erSlaV9Ojo*M#T&J$_%W{g4Em-`**#Qnzc$D@P^y
z)LEJm?!sbbTKne}pdWvL5(S>m;OLh3eDns3vT=bq`B#XxK^2Y(^2SJko6TC?Uj5Y;
z2ad_vQZLa<ANfK+6Csi$^4;<fEuw&2i5*8-@=%JA4waVI-Q?UdN?ih<PJI~ZwcwKU
zzVi4R6iD1+ueUclCPI?~siq7)SJj#l8$?H%5T_LLSID&_3+|Yt8*8eWXfr;AM<Z`5
zhI@4Jh5Epn;u-KG6Pf4yNFD_wC!9(`;?UH9bjl4&?4mrBm#E!<>_$coWVvXG9Z(fc
znxKzPXC2q<z+o*onWf(g&Mca^+O7qg=jJz;f)xLbt-~73W_ZyzJ7`{x;lHOS61>io
z$RQa01H1UlI*6%sx`5X+XNVX=Y!4jr#hz7VM^)C&yLJ-+h5h5g%8I>eY=L8hF%nZ7
zlR8YEXZ6I-rohMQmNCu5v5Bz@dg%6+f{M<R>J}PKFgqOwx8R6CW6IXCo$4yAonQ^E
z5QGGu+_EJTNn7xZ$y+54q<x3jZSY&j-G_D+B)q$^ov5b@5}w2tG;yB)Z<2FI%!dY<
zwha{|Utyb2N!YL8@6SP2=ocX1F7TJzbX9{4k71<>U}B;q9N>X|ghJRTxQbCJg?&+!
zFDLz11?fmCv1h15U8&KuClCO{T~4$~TNm+aHh>km{)>t;*FjN>>$XGm78AQHB+fu=
zi|b-U_NC2)Ydk_?JHcE#+hnt|P<U%PJlpcV`e!J*T~8yQTuojc2WrQ8r=KGp7?_4>
zW_cIl#hg4BnQTUm%=b9*S>72)SWQid9miEvrgl96`#o|oCJGFp$+cM005-XC!hP<(
zoum`mt0flZtBGlSROR)iaQt>B{@nP>n|b6f;7C9CH%b(qT;d!lX8?}v7%(s-;4foa
zO?_PAEUAZoYNKWzq?GSu^J30p$-_}!^8cuD5frZ1-^W9m4`+**!z==CSEz3+@8;)h
zHaM~oS5ab<@swjfyFLqt9;|i2rs{8&g#9-`6$|eIoHM#9b)K@~W;;l`Aq)rI!D`_S
zD9Nu$M4dQtIK}>|k3X^l<PSyNlI&Q6@ix0EPi!tpgEpH;g<a*uc1n^;%s(5OgS4-V
zAQ}F<E5$xHWJ5l7Qy%ga6Mc~71*BOdXpB^!v%{<jXAmLH@q3_oMH}BL0uFY15%`lL
zE?sH@O40V6AkeV1VN2cNu<Lm>ee;*Z22p!tcW`9s18VyEC<aCAYY9`S>}K(Vj-`?O
z&&?)ml~Q)&t<;sY8eBU9i1?$L2>Hyeq4V6RFEPcJ%2VmBAL_z#aYj8jt7bI@->$|k
zbg5sA5Ok|QhrbNLM`L)pCkXK$;U??j|H+{N?qX?o(5tWxLh);^YygGAlR;xotwbR8
z&?*leyc3HPmdig<9905OgAut{2=y?nAZN9k4hy<`oIl!4wUT2;uoZ_|PQZ2yD*Et0
zRO+XqFmt^v-Y}l+rVU=Ds7$s&x^2{krF5E)KMrv&y}J^=19!@EK_PiY74{Xr<sF#3
z#=eVLZ8MLbGRC&Jnh^$)G512xVC@hdq&Em?(mXL$Y92pn3}|sZ-JP=^a;DxfkDoAb
z1_q3$#Z{9|V<Bg1O*dl&xM@>1m^&EiZ9*={*xZSkqo472&`+8zM0!vcM8HgOUaSk}
z#NeH<jk_R@B?~|ekbC}vNy|3FJ`iCWRC12Dl@vqijDYIc5^;P^?i}V(S9P-1;t-CM
z7@f4Pg%zE`UC6Gyj@{~=f5MibNr@dm1Wik^d%idw*(@TjJ&RO6#8vpvt=L^Ha>nn-
z3ztC9P##Z+9AW=C#WVcp=ob`M*!6MBiehDjW)B{n=PlfhIximqfNFA_5yv}`!Y#%(
z04%Gxz<66rTy^%UQ>dWE?T$Fsi!^qvvo`r0riDJvOgi<m%%n%pSA$z1+BKzyt#o4X
zNex^{w%t_TN~aqS*UJ8Qi(i!&j?Z+b9PvA#V_TFDHn*w|ss?{c?#Hua#225V$91nm
z*uqXG`5xjhU3z+U<ra`j;=vyQvm+kei$upEbu}usl_kQ5^2vLkxIn+C_!hf9URlu}
z=O^sJ9rMUoa`6at3G8z3sBSyOmN~WrcgzLy8?%as8rvgSSIQj!E-QS;SOdh>eo1{J
zNOiyYrBg33zx3#Nq!<{sM)qxu?AsdIw>6?~cfeElrhJ^VJmeIeQeMv{CO4DRB<r#W
zZ}3lrtd6}PX(ytf9Zce_;QXX{tD&xf;JQ8DyLAk`b>JjgLWID!o;zWmg?5wYlkCs_
zK$8yA-&(xE!6P`;sl=WDEv)i^4EYRr+d#~Q2uGUf1&G(!ujDjsRac5EpJG!Q55mX?
zB{_GKTAy)buJen`Kcmd;rrk1zX-vFer?l=}vLkKL`|%TB!f_4y<FT(GN{b6%z$@$>
zkGG;+mQn{NbX$k3bq^-4Qg;Gzk`>f{O<rwNopD!A3gAz5$6YQF$cwvd6nLN1Z8*w!
z^WQ)a$6O2H?6FCCJv=RcrW%iF^;nIpb(AIbk<40qj3&UsA;`8QJoKz7^)b8e{O(L2
z(zdbIBIdDh7>uS%Vnb=|q+CVtYm?i`)CZX1L%`p_wk&w@Gfxg)sGlxA2>sOJBaXIF
zs>3cj(exEMUq}u}=KuqL18;}~{|)Opb|0Sr@BC)CXh~Z~$`t@wzf|eeceh3X`$9-S
z_Xzo|NX0$`Iy-Z+heU2;&?*ds#Si1R#npLOvOU@jkZup`S?<f^riImxLtlhmph15G
za?2drzyurhA8E`a#VqOX?lOyQ20U+>Peg3g2b&P0`}3e65JoldsaH@ntl;z<Lwn`e
zJz3<SO1ZsP{5SAwL}NvwWP^S+H8urR6;niQl9&kJDe^E4QE$~CLMz<P-;{CXlnt*h
z%U7y~KO@5xl$3D!z)Wey8D_4kL<~WG7c?7af--P}GAACb5H1$Teiz0`E4jK|9{^ut
z+9TvpZ(Y2M@|lafXeDIVxqGDqL`sW~jzk-8VhGbh6zvsFIDsVxAj6g|m<d?XY6$^C
zD=JsGT8UI>Nz?BVg+1>X#K`o7S|QED@P`ueS4nw0orK88mW!&$!im-SfDuayj=J{5
zi9=|11AFvZ>UFzWL%6UDI|A+6o&sW29JOx`+p)a&0y1m|QT75-zV`qr-+O?h_ufDb
zAR+N|Aj5VX@;n1b5qBn#VS7D6iQ_p0XGVv$hq|Q_{wGCQ|0s;%7t+x>wu%21D*(>d
z>LVj~8H-7vn%FSne6#CmEDF)!4$Q`5g7eXRF*GAc5iRTGNzqbUM&|heO2B(RBlGm*
z8%6q44M0??a24&4`6<loWm<w!928E!MpyYwXck;kX7~@$c}8m4v5itlKoIKhE!h5V
z_zk?mVcE3CuAvZgI@Z`#6r%aeJTp<DdDPN9mY32^&vZn92;rt{36hd~@$^&{rxg;e
z>z@TM@!I8psYQhwJRY^gP$|@0OGc8Z&9$BM0A4QHAu<!AmVBvDbcvZ1Lj);fz37MR
zQLadjuW3L!6w_qZbNvyh(&DCwVgeaFAIxW&EU}wr2MKawE@bvM0%ps*6m-Wti%<dU
zvb@cBODlG?gl1n&{s3I%0--cz0?cy*wZ(S8PABqiM(kk7dtYPZE$@F*oH@-6EpaNF
zKb;f;76hTkMcy85d|F=g@gK{<B7F#SH2M63t-Xc_6sE+4=W@4TOpKC6$m#}4nuPkH
zch%(E1o>7W-+b~-=onmlfP9-R)12~czI^Kt-D5QZpH%IqGGaMJBwXg7@DSqiR>aHE
z_$e?7d7G`IEZBJCfW=0Agji^Yph)F5L}$e8KKz#`w@eni7K@4;l(4KKGmLs6DS?ha
z?WF}L@4#ZD4?{)wy-jU*>HW+raT<(rya{DndRVi_hZw8XWdht8X;#-WPx)Qju?TH}
zCkKY85-ZE!#1Q5F8WMvmfhI`lu8AR*8{=C(qYB$-oG)UY2S{3`abEo^p({NbTOhPX
z=P4}jTEwNtc_ooG275E6b@z-W-Dq#MXr)$l6z4Xvy$ivkmA}#oK_zjgU9CM%vtpjm
zpoG#I6ev(0N&XR)vQCnjLyf24__Sghzrvf|Q3AfRL-nuuX}2D#f5RWgvpMEpf(NWJ
z*Vt17DV9<ZONltchAUjqHe`<CXj&=3)Inm`s$#=TNkYYet*qRw9x4**xWUEHamaIS
z<>?IuR7}Gl%lK!H*?{dwg*XLAx7|p+4w-B#;V*u=e?KE%e(c_*FMnKfrx^yI+QV0T
z2$j^d0<EgOqwz5qT|W4j1dqM|TbLFgPhSEYbu_{;j;|AGqmh>SC}4Fo!c{;1sJo*v
zUx`si>6oDT;VC$T$EOv*PJuLY|CeTK7AzGn3diybd0;I@SvsRb1RN{hD#;N&7h>-H
z1BH=8h(SBCM#CYUtRhN`_96^KdP9EU1NqR5;_49xo9ee(gI~hwe9_P_Jg~O$wWElS
zq;57h`T#-lO3;dV%F@S}r%vIV0NbWP&7bf#e1^W^9t+|4yAf^zdFxWyAkcyq^iy^F
z^dW&=Y#TP)S=<ZxmOKHJ*q5MQO!j;zEsE;xsljgoEX+@w1VvW1fln1p2Tv+>8<103
zfo#O|u+w`G8Z2nq$O?3tKRC<>QBbK*T$zS*hL_gw1oXH<1lKnO-Fhxvl+uuI9v@PD
z7(a^n4q9A=9fpltP%)TYaOfqOTt<D4C@?XPIk^NIJ0#tOq*{xFW_W`l3{6nMek}2C
z4nh@>jdOob<F!4)-sQ2&#0>MEsjuXF_o2@T?@{dj<y~HZjm@qvPzyHEV}33gya-jj
z@HAEL*@bMYj}ylZd|!o2M1`Igkdyy*07}sX7+sU*UWMYnpvXFkOn4vrNWeHvR2(h-
zKoy<D@knli<q8w<+pu1UssYO&6hWVeS4A%Qo~%yFS_OSGWh-+uT*t!AZa(b$vcLO*
zz{1aeM_9=B!J!0|*Oy=pl&-=~1nlVH{~}y=5$C#C_>GL$s`kPP5Mj{|-25N?38d*C
zxFvo`$)v&U6SY`g7qFO?>V-i6U|OKRL&#;20p#fR!&Jb4>qFAx530mqk1!`k*JH3D
z@Y6W+=fE4K4du58k(7{;ZN!1v#5D!{8(~~&1)JrINTCvUz5OX5h`ZL)1A>Yx0i$9c
zI$zPlOndeWX`2^W{UD$~4||v|ZWe2ihoJ&~1?t2dLfHN2^m-vR!P+9h^~z&dfeA;E
z!V}TN!|<It=~f<#A&%_Ji)ogz_DFEUoaw7=`FIJg)08PYG{+7txTCs1<#`K`L)8go
z$uNj+(0ShE(}M3+UqxxpQm=wddWqJEgB*#ox}a3$e}Ebu9Xs*~wXuyqAzqO>&CN}j
zv_m9)K-KZ}8wgY(A%x^?r5zSc*`AvKNhafh50Fu`vkkXY2^<UjNS2xyG4;;?KQVa{
z9^ZXdvqus-t=w=~ZqWbRa!pw5--5Od2+ZX#!Mp&*2%8;<?Mu6nI!*3^c-j3ABK0bH
zXwR)X=mc<;HVL<uz(co$&gvO?tK|W`>kDwh-I1m((JFNkJn^D9z2InsqB%4OF4Pr$
zpr5rBltRgOHoHC#l6Z9vQ{9erkhH56l~l@&<4S{@t3RR^q!6EmfN%+`KU`W~{XHGv
z*qE_Jk1i{0#2QU8^_W{UrxX_QH}a94JIwv|wAd~#s}ti9ps{525Mx2V8+E6(GiBqC
z72{2g4cY;7fx5)vOEFtP5$DkkmlD^JoGtgmy@drIlymGTzezY;?iKV49oiD&p{#y6
z+KE=VUffD=J4+_&1IgvvT$isk?ssaAMxxgwMRmW<aUvIP2zon$E1qIFU;>lK6n7cv
z<u1buuAgujo@o45H#EB^l5}bUQFcT4w+#`E{^bSgT>PK(VAnX!qi&^+3pl)9z`;BN
z@vAyEm9b6X;Le5TM;bqLVne+gSyWOZH|CecXV|-#=K%cwnd?*hI$Du)!JgWQKf@iX
zY|Y=1)yQix>1pCGHMe%+GNfeUYANpS+KJ$E-ElN|Q`go`{6(+0I*OZEJ2BBK?lFox
zr*`5Kz2Y9HxB;~j!TlPH9N8|(PwW>2fjAw2^Kfwi7c@kK9GusV3q&M8#`+58B<9hX
z=4gzk=lXvWwmib_5%=66-=^ascq;R#2qvF|`h~_GQW4oS$OR^Sg9((#!gXPGpo8r+
z4`wMbQbUQrGXPEmYBB*J2{8^O_EQmX>SgA^KKgj`m|ee<Ke;EP!qG<Qr``Sa5-fS7
zsoaU0q5XM&FHw_cIUX6W^x4UmP$SZQC)1uhEe)eaY4c>-?A~c9gFj7ug9jsRYN(Y5
z1Qjh?jzZWZgL+e&pftV3NgDk|s6W%hii_=9tNCfKb6k`y3-dm47mj<5_oqgp*>))8
z0B#bGZgBb3!^HYI7`xrbhWW4qt(DasGIG>JnS-C#1O*7(nB1_{Z3MSoW*&D#i*!6!
z?{6M=>UmLc+u|^!q}i#9qHHZudK79ms89Zz!qDNnje%jdg2<!gar#|~zm!W9p~MpA
z>5E>mowOZdE<3`GR+<dZ=?Tw-$Csl3R^V2*RQ?q)PuoUR@it%B4h9r=`T<@xz&n2*
z&J(+lIk?a8uwPMIY`bc`n{u(ucm(%B9|X8vfZG@ljSE<jH9H&^&;=SY=QiQ2IVaTZ
zu!$Q<1pUQ5yLW>WL7*R=_JmE<^7dImn}s%P27IYulZVjk$Q84}@-{)hhOI9Qn)S)M
zF36RW=>0{iC!-s|_SEwfBKSYCPbcP?k6ja;pw+YGPN_%jA#@D5E~2(roTx1{=NCAQ
zu`J}9>~sBMsP3ISiXQzYkETcVWLxMrcB2pfDHPFLgly2wgTY__0sd-ve_b!ke8gLO
z*0z9EGI{QQz+YVa<`fa;2n}!8U9Q0pLgav}LR(GHHxI{IY<d8La9&Mtw9yy#YYR&c
z>rz(a^10ZfpbO*yK&JT}laL*OB@S2ukEECFZuP=<@$@2d@?lJS0%DgqTQFiTxF9s!
z5P62v904iVCQZiW4zQJN=BG$Yo|xgVixv*R;x8m9+`Gj8DNIkeF~D^TY9I`Q6^%$B
zOz_`Jr5jMXCOA1U+pbU5s=g3rNDV%H^QmY&o61y2N!Eb;*~<GAevg=XJ4{$G1-Ri!
zq&a{hoAC@<8bht3k+<3?b?iXAf~?Pl@%kIE0nBs~+`t<{y*%$sa@zo5Jii%)@whDb
zTZC;%JBIDM{Std*ya)Z2INJ@^K-Ih#(~^AzC5YNW8gq1imk#!v6*1Sl1BYnb`eWP<
zg;tEl&|!cWPnFQsw&cN>y~I(U4W9~SMSxPa@jqdr0Tlz!%z)GoE*lvR=JB^s%_*PW
z2fuxdKT#!po3F-^UeLkjKnE})uO9>T=&qVzUqjr$gsYtpPrWO{Jq_+ie3GBQQ>{K}
zdvJ=f!4D)jLq{E>jmu)2j1lmo=!XN%_L}0+s0Me=<kFdgx(*`2_MOR8e_XVN_WLwv
z<FaWS)-J^zx<-n~L%$AAXzocq{pv}5^{GI}<;vPtzMeJ>C@>s7?6-snS9G2Vrty%<
zMG_FwL~#NKR#Wm8j7Pd1Y>q@b$w7#tuDIa(<wwpwXAUoTXGL#GmF6BiT(RVkPzuuT
z07D?sfByh#PfV_Xxh1oogS%<7tNJ~pTi$Xk>7X#;Ct7^+Z!sk>JqWWl!$B_fu(WI9
zbPzd%kTyo@D&C~cMiox}XsZAz{TrzT56_vQRbiu}L47&rdK^xLAJfiijg+)5qHDQZ
zf;Pn2-czseeNESTA8HK?I*w1?*GiJi=0HO@K4Lq<!bP62P@ZvN5f0Mbwy!gMd_&Ch
zOLQ6TiSW)-6S^Pg9Jd%3Ti&-shiQMJ=e4+gggivlsZo~q8%ROSb0=cVuK7xM8{`NI
z({b3<$O2Q1;kCSryUU9u53Z)b-*Fu57z5jZ;}int8l9QI7vwNmOg}|h;c;yzR?DWq
zu5jWyJFfFUEG}EShmNO=rb?^08vGnOZg7qFb`iR;Ia;q@)KdkO6BWSg;6ZrD(2`+!
zKLglmaJ`XBCd1zY&k^=D#>w(-KmwE>sX4)IdSCQjsf*G;dH*cp#SSet5fR~HA65*j
z0Z*eV{cJC6!Zy9Co$8DTV7dSdDSlD$3{;S`p(I@_hU+H5&~~0pZ6PfrDhERq14Ua~
zEbx`&(l`s`8WIQoh1(EhbdZ$T`H=@rF_nwElB9ja92r9{9!1hOiO8-MZbEd2D=4-P
za*Ab5$n%2k<vxtLhW`tt;k{90)84xHnSB@h25c5~OeoVjAxXNNNKVZq)mxF}JpdV%
zphWN;1hE1~0()`4N3ZZ}lm)pVq{zhIA%cAPi=)_#t|VmAXE35;+O(B{baT<*z9<&A
zXne%aUIWc^zKzgQgyj6i)>23W-CHsQdhUaQlTDiwEG*Da2J-+>23=@1j{oXfl&@V+
zX|()P8AaUpC=dw+V?h}C@*^#cw1}tN={(DNGK0MEPsk3CIn1M{3=cmDRjt(drG8Mi
zasGs$CkEutIY)SRdY92au*TjhGu&;etPQ)N-V3Eh^S_|@naU$s9dCfm0}GN#2Tz2I
zlJU{t=l_%F8e~h}Y-!!A@Ln5htI7Chz^;V>%J{4a#|m`lw0fZX-~a0WZA}t8J-@y1
zPdCEt)?UO?Zqt>S%a+irz?E2czL0GkiLA`rr`2;;7c6kNC=nVvcNAAecH)Aqosltb
z>l|jdE|j|-D;n;j6xV8%AbepuJPP3<GCBv>YOMk@v_r_j?<w(nQv99}zsJSzG4Xp;
z{C3f*e$lH^>e^`6N<44ufWq%d?6zrNJ2MQb@Zo|+ECZFeutXeFArnUMU1MN0xM6NT
zEx1+Bik}C0{W)}$-W+CMD^d%G9&7PjKi>&^$hWTHBi*`>f3}5O8B-5yOdd)VYHU6o
zk|0fskXrJ<Af*l)Q@EnY!=pkqH52!JN44NLV35I+b3O1#r769QKm8Im=v8Q~MSL-Y
zS0Ko6!Vg@7^xr)i?p|IGm2}4+)io7$&6~vi1ng+E*mGnsj&+cLEdj8iG9{*=YrQKJ
zM?35Lz{i<<U1<SGXFPy?CJ|^x^PYT<A`&s7+K>NLJXAK#DII#y40O1%r>Zb$;Ff&c
zWG~iXoO@e@4aEk1aEUCZ)F}i8+Wa|8RX?-5v4ynM{6wkiq(;7tp9L=hKU2|*@9AL0
z=I##OcP897QACf==7&-_Slnce{mpiC_uD=J__)H+{qq)x%^j2~no@ccbao3gO?bo2
z<5iI3SAomh_(d>fNtNTBViI~TK_)S%mbY;Mu??{e9be)qL;^%CNUqnz?F($(lllv<
z2GnUU=KH#Xv`!7+g~-K!&>bm-TBy`BHgzyCLF0s9>9hu81}+;V2yqSHCULi5>W7d}
zaopkOpp4WE%{;b$-c<DD36P~+Hstn00E}B4E$^p2Fh5-4numP2LK86m{wo1<p=KW6
zKbI{0oFRt4x+w$yx8dWzL?R?f%lpEk5GGprWV~ar-{lK32~Wrbzeu2NuQ{VnMdUt>
zUL7Vu`y$Mg#MN*KKN1Nx%o)QkrD{ek=&e{t<8s<YV!F6hL3st{G<@rUj~Gj10lg?z
z=xw}7Pza5TK3EGLpVOc2|4ig%<3KlS;{Bf|xX(DgLQ9pvw-hP2BZoLjGKRm5#<Wp0
zP6uN!5yyI%*>YP_SBX;`6ZuI{FEEF1fhgw_G&m2|f=S-W`8e7EJ>tSqkrZ4jri~+*
zbNGKS__*X}oXxB%u+d4n9uIU03v@S8zp!P2E_S0d1_379Up7GT;pc+^SNdLZ;j7%k
z6nG&3!>w570I-nW$Goe+mMY*cKPME~o4FS=lTfvp7yg;@QNxg9<sm%60ddrf!f0jD
zaP;(pAEHBr`(X-y?ym?*mslTC0*3-Pmd$C?RJ9u{B2)_4NIi0(5AuOFC-9#Em{G<2
zK0LlPngWdrfhF3azJ?-EcAT!UOSn#8gA-{yg~PK4M&hJQdlb{4yzBw1LS3RO#i6W@
z(2i5sHf4#;lilbG@1f2eFWB{EYDZXsiOT~M*Jfej`Yk3h`uZhw_2jC1I17NmUjp@C
z!<_BNp6#wtVtWwHTcEii)jJMtW5I5~7$avja+cgOh=9P&Pm1znljVK+5gJh?_8dxK
z3(*(*Iow5s7u>6bBoJ*BqBsPViqg76N^BldNRw0XrU!LW<~mcz((oi+l3R+c-cj66
zet{b;!QuN|+%)oJvuZ9F0;h4Gx+FX#S|9b_E<d<XANJ2s&3lkUV9rQI=&Gm9qHp>o
zaHiA>n<5T;+5*<IpKYf$Ak&3qQA`egDJWBz`{q&_R1IgTl2KsdP)<H5li^0nAUu$z
zl!+y(f_5^v`vBKaWL5x(s^eUQC#>mGM4vhz=;nkRxm^(c?-1_*iRau+$jS1c6~~<t
z0)E0Mtc#ZS-}59!r=VG!I4nHjSl|zpJm`-qOMw-eKpaj(DX~|mHCnZ#Ko+WhknSMx
zY{70$R2xo|VoQ+M*j+u&+okLN3`OCJAGI%d6i2K>_}<OEAR)UTp)6yF^11^<G1KhI
znTf98=9VXMm2gv5uPm1-uM>`Dode&@AhIZRP!8MR%?QYFsoU0>m;qrP$s`-|trlvC
zHK~Q`)!+u@F*_I&W*hF)05y~06gr@~l@1~zCH50M&Eqbm?p_4=<uKT!Wy~mo@q%O<
zJOGwBL{Y2d8W#PAj*u(SYgibemT-1CP-mmsQ-8L+gXSXKmim=={}aggFW6TS4U72!
zg5Lz1Bvb6?f*c`L;hsm3>Ip<AZtxJbhP1?Mejfxx95UV@dobsmB~W%)8z$u#x%Gop
zoc*HzaOQ4=fPrA`QEQ;hR=q>;OA;lhI6hAmE^Gh@;{XC(mJ$+u5OzW>@ubL;nO(RS
z-ylNJFU9z4nHsdhcCCtzOaz;irDT3)8&=ay%AoaHaI~a!zc>rUSzB^BG7)=F>fXup
zY&3c%N_}77F2bETAo&ehL;{8~Gd@@~o8hHOe~sdAW*nA7yw)B)Mcv%+-Q84M{ukZ+
zT$l8I4M6|iuI_;(b4FLMq^_<*ycn%(G32T^5KXgpHh5lUpeCHwnLJ3!@SCGvtP_7T
z)33G1UI5pvhFp)mduBh02|l|JAAG=r=J$<2HLPjmd;Ocjb%9+wyTaHAqz5-W>&ws`
zT%AVKz6QY2xzFw?s#R^nFy|2|lw#RUczn%0Y(NVaHWL%DynE(|fzNfol^`7KSo~(n
zjq}KeWNmm=o@fR6vy-y7;14QX5gzM9*mwmARE1bw1XamzrdZyermMt`Tnp??K7ow*
zUQe~4kjJRH%{+e{YFGrXAJAw0hF)tzNY7PkCi#cq#xJDu7aD0go&{p!Zz5>=aIF{O
z3s2JexztZ<A^9zPv7(X$Ur+C~>uK@qeX&dTx(=I+SlctpEa|auB`tmKt7<nn^q<9V
zLNhSb6!Qy2(|yr2t&&8~0V}vqS^6i0f+N<f#}35&CBnG(6>BFgn$g7MHxO-phHsg4
zR7_*ePGxPh$ZdXTHwyWw25^&N{yrX(zlh6ddr1$6-V*C^>PJA&H;}8AQ3W00BAl=6
zU&_|QtpEvhKM*`oy!?sodiZmqX2>Z>zXwbZBFK3n9nH<^&UR*Vi)3>oh0G%HcQ%P4
z-AEJrc+&R~y3!w_DT23?X`M0#@&Vno5^6{b2>Gb~WkSs4XPO8x&j`fq)8OnR5Ht2!
zM4KN2F?%a;|Hs!rOo2emSiS*(q%m@)K(%MBM9EL!8S#;y&R(KuM;N|4dLg2wAqsjM
z%ln5P6Ac?VmiNioL}g@phkW4Wanz0Dad&q&VQ!`yQm+7dvBw<4Bi#vdS?e_%cgVI0
zKa~PCxcWVPMv-Jyi0_$gfuCognlmfN-2aVgAT!S;N&9`eIT~lApnD*9v6^S(p0-%U
z!C0Fy6n<A4mg}i-UlVR!ne!tPwZsj$rg0PQv7eWV4@6A?21Yo^e}6MRn*r+53U`aL
zaz`7==rvGN2KsW6v!M%1PO<<g?csYlve9Iq9+lEoo^Fm5-y+yu7Tjv|i^!jM4Iesj
z1>W=_k>I;?2T-CbTz_7QmjyQ%S0cnuzWE({df|!02Ox<xkpZh*-aPUEZXTHfBz&Ac
zv5&p}GNKql4WIR=G+u-yV{>WA18&0?W!s?&<P~sw31j!J>HjzlN6+F+DlV~HLd&5z
zb*4_-pidA-&r+##PLIx`XdO!mJQ+TX;C6>T03T~9I;PaQz}mz3Xc&?$yKxH)l%(v8
z20yMIrmTP}AC6i4Tu9E4E9lO;ZCdcioX=FYzOWfm@cE_n<Nf^WH!N#4<T+bBUxF$W
z4VhuV4a-NcN(y+fbv$XGd!3fh3r}h66zZZ@6xm86JYdqTY^UASXRNuf1&#Q^^%J`5
zg_x6e;9FUa7L!k*>Tvyog;wg{;rc>;KS24`&R&kmqBW$J1t#IsMesn-%z&6I7ZHsR
zY9Y~PEx1KX{P^4Ojrtz=3IQK)NA10FfRjW-d03q?@Cq!X0a%W;>$J2d5V0k6V=p#c
ziGwx}jpDbLYjLAOi!ZFiuIOif1kD6CXz|j5F!TD?+H7kfZGcagvE9*lS$;TPiskXE
z_>FFC<id%EtZ?vs<2tx=)j~8aWn0BLMfqhw!5%Fy4)fqP1U;{my&H~Su<K1|bB9~r
zD;}g}*4u<v=<UNw_`Pu4`!Bpj+3mPSp=@?IxP8&3D%*$;uBe4uL&e2<PQ<YxxZOAm
z*LRgQ7B;Gd8`NOq!kjStkHhh@*(qGm+Zr!L$@i4l3_uOgl-LajloA=%Pz?KXJ$i$i
ztAYoNY~0TtW|hv)-_u0Ft&lhwGd!&c!d~6{$gMiwwY<*((r8szI0)CmNvK0x11mKB
zQ`EKp`43jbH*HSb)pr~1`KRoUbav7JS4XEMqF3f)cH`Sl301*4jd`%lVDR_1^IK=2
z7VJTBmNEnrk`ntAGo&SZ3k-y*d|m(t?zGVbmTK5aapa#eHPAEyVxp`xU)aY0ZdmHA
z0IlUc@c_xU!A2!E4LRA3HmozyX+f>X%G{+i*KwqLA2NYy!A774+m+ZTQRj_xA>>Cn
zbAqg{2AEKTkbQ7ZlnptafTrAr^4La<(^%<zSr2YTO-oBppuXf@QK)@Ur9^?&*&$E>
zTT=8gfr9hDg@T)JOQQgqf=IAUAKBs%-5<z@9-@=74Z@iRRyToxCQ!tUuqENpJ!O8V
zyF&m3QaE~vtv>F}Ph&v8Qg#I3p!=``Y$F>kf<?hbBexqZDNm+XqBB6J<-P8Q=q~JB
z)7rx&7a1<@z@*a>*QMXSSq-M!oZJfBU>T0G1L0sNS#Ur`vj>IaxX$}cA}{#b!}8}~
z^PRX(lF#zdxN$l^MCycPC>&)A=hHCKVXaAc5A2O5%4V}2Y&$w4d&BEcjC68vmct$L
zNX3U(SOY5T&SH7(fHqpy3gUN$gPU>B`0->uszX?k=AygdoE0Gr;VtAp0%@N}b>1a7
zq6~`MJujz+mNoNZEK*H;?JYDgAH$?hw7FLwn;w{aUXvoa6i(kgqf+K1ySy{7H)WPp
zH3H!fm>zu+Y>?q_vxFLhMXnI=A!|;L(>3>lk(W9lUN{4|Z%YmqFo5qTHPMjZ%Pe#e
z6R4Um9*OZ-h=l#{*1#3yVO-@Z$7USA4@S(?C|Nq)7L^8yL|M!G(JU11B3HyCbX;p2
zzZ4~~?$EuVCtz=eKjIj~klb5Vpar(_QNN`wf*&&QLk51BxYw7F-@fA;HM8kDB602?
zYw&Ir>M|QDU@<>=`-dSrH{eMNa5*7>9LI~1_;*AiSfnBR0>aQ{68(+C>vFu(6*BMP
z9p4x}W?2wIW~Cj+D|<PP&&HackM$nT<Kkj?X+7x0+e5_Li@@8#-wh4C9er}W`Wt{F
zc)L5yJW)U?^u~d`Wvo5Sj^RT1#5_9@(qs$<0Qde4LLk8d_tzEofgd#K?)c<ED3`j-
z@-CQ3i5?eTB?sRYj(a*^M`UoD5<5rIp%SA5c;Mwq9r@ESV-`O0kWIIhvf0kg+vj84
zD#}>%aCmVOjezG08gaaDdB>y0Xx093@MFo1)HjLSE}EsSO!MExAc%RlfX~7;EKS*$
zW*ALQcP>S++ygfeS??#7izCg)<^8+eEcee`vRrf!=U2xO%Z29xZZ@Hu41-d}))Q@$
z3o?KDzlgjA*n$nishn)W>D6v7u!3s5QC3zNhQAikGSD{<(U?1elbi>>@|P7Pz9orU
zgxS5b(H8n?fFx;ktsHbZp6JBpXl&Ssh0v|=H{w!CKZb}f2d2@(5qLRr(b@qB-pA*Z
z!Lb2^$fpt@&<lgGEboW+0vfQE<1{U{^Ro#UXpzg@Gzrf7wU`7UOacv)pd6DRzxO0a
z%erY@er5L@2+8Z!_=#VMIUs3S-j+>sAVhPZm<S(){uKI6G*5GY7GHV08ZPt_gg*hI
z3JCwq6B8tP15@&o9F=ESWP9v^`2HQ-&y~mi0D6Oern~ws`Z&*JbOa)Ii8BY^<q^_s
zM`ISOg$xlU#~EIsQ|M@P>K+;86fw>+d>gPa=`yaD0f&y$<<1;UB#KW0wnxnU*|;@@
z#;&P}z6XdlL<49D_D4kG1A+7}^L;`DGv5pJ!E%f9lTO@zK0U_`7VXpG>i#HwCXj`5
z+9|e6d^b>q))?RZdk2k;O#T?MNALQUX|>156}$RhD^a0MDRAZ}1>u~KR@+#EcYyIZ
z4rfx1l_9)GS)Ob!sx<Y*-}P=>(vg!-jTPWEl23636z8Kj%!bAg#qXzh=*OdJz^qn^
zZKv2S<E2O~rxsw3q=#Y>kn&4~t04J)yZ^w!vWTPg%mKo8!82nd21qlLS-l2H3=ra+
z-Gh`Fpz@vpGLxWc8faMK?MC+if$Pu!LFw1s#Q$=9!Z}@piFPzh1BA06_)a4R2#6ab
zn^EzJ+5X16VtD4r;prJ~F+Si~^W^woENED|he?i4W3TavrrRU@b`gF-3DF#&etHfK
zLWEP?eu`_OxE+8?j1Udq^%%&ggiH>Q8<GA0r}0@$I}<uTw;vNm-0?;RBNlP<KEhBq
zEuWu+sTkIt0{*oO_;^YN#_^A2pos4lfn2^*Mud2)3~2l<87Su~WT1loO$I9Yb22cC
z|4s&q`OjrwHjm4|d|o30jBv(v878*LXUXs~3eS*XVk^8{hL=+~EW@<S@?shOJB7!~
zFqSSG_sMVrg$K!SD}~)Myo16g{!R#BZ4_>o;r$f;M20zq+hn+%!dqmxi^2^uOb$!@
zH5sOZQv3xOCV`DVEyD#AUM9mn3ddwv9NV5R!$lPTpbQsNxKf5g6rL`_boiQUGF(pK
zNfb8IcR9jjH>GEs@%=H+dCOrvb@9QX1inTW^o*1-P8pMr7_W@^>Xl4Qf@WxO?5QhK
zfQ(;b2Z_oyQbslnM?X9VWz6d`W*lPn%a}jQ7_7*i_hig3WK1z)w#b-T852UxIvMk@
zjDZf_vr@*~PBH23NuQG<e3g@IlO9qMxrslI57*oIU;mm`sGO-<f<~+1FSI0+Uh1|c
zy4MPBt2h-QF4}?h&!yJ)PrZekvG65e!QSCc2!#fcQ)C=ekj$^8+D8K;spVLu{{?3i
z;s1i`VB2tA7TmDp&n}_)xst#eLf{RcL}-5cLi3XW)bT$6I;0n%_~IzOoB<KvG74}3
zMg%^J^;r>X9iSVJh0SgpOyP>&)8g^@5)NIB_>}P{)U>0tJ_ijebu+=aL{+)r`fz^>
zryR;tPc`FvJqB779ZUWQS-Si69SELAIms6K9SFYjr5*&+M^gnZ)p~oxYV1blK|*Ff
z;4&-IWa?kQ<tDUw`oEs_RDOz&*7)J_1AO@U-c1-g)OmB}+k2la>v8`%<1>7l;a8pc
z4BuNlpWnlW_vrh3Sp3}S5Ae05l+4HXa7Kn!@&Eld_!yn4Nq@Od_Tx18#VR<Ox-ba-
zOZJJ*9Ai9b&#YF&8DFHAHe)14Nmpcgo=i6mYp8m71AP*386=e~{c`k23!;YGG#v2J
zf>@@ED1w;7;hcP9GJ=?;;hX{ky1Ygoeb#s@ty`J(^LLr@!$seb`~`_PDU)8i|5zTr
zS=_2A8==^ct@rpG_@Ma5W{AGBS&Z#q7mO~@2jHp=e!+`9dTHEac{3BIY{ULZ^jQMZ
zI#)t101>d5vJbSpLvIy^l)mshxEMuKxDo-w1%E2<^M6I9>5rVJzusMQkK28cR9?j-
zC_-=2>kMbUI6H!!zq{KV;9GWz5&Y#B(sqhE1Ty;bv^HKED*g=04vrXr#uXErDahKr
z3>5<r{auEN@%%>A2g|{Po@!}x+e<SZex4W@Q1W9SY#I>O%Th6*+fwm=+ItuHs)}pz
ze@-6ckOwD$1QMPHi8YF1c-RI4^&B|S6G=2e5VWWXd6;NOVzLhpix5aq!XdrZa@AI?
z)~dCwRe#n8TD1vpd=Xzrtq<yRrw27!1$=S--!*%mBn0U7{_gGV=l8!ou(M{*p2wOs
zYi8EWtXU&A6OishL(O*yZ*Qr7fwPs<7kaNkHqiWRR-9tKt-Z}Z^aSj`S@FW%R+d7n
zs$=a|=)TJxj#alxnt!scmHHd$>6@fPEr?UcPW$?(&=6iYA3e*B2a9A%2a-d^SUUCh
zSc0|Z4xHhN=w(n1OdODHxR2};^OmQm0aOeR`KOM0=+{trtqi|xw1sO#BcXMHpd#8Z
zu9gjqYcRqdK4{jdn2$p~G|C4!#!p%VxJw6k9!1hJ5)7x!kZ^oH+4@}D^SMBO9&LY)
zw?3cV^Z5+@IV|%?Vux6M#|}NIo`%1u=Zqz<E*79zX9%b5wS#RX7-1ZQ2_Z7Z9zqh4
zvxc!B<G|itH$YTf%TPcyE|G-qmKedLSLFl7e{R(I>=V173>fXkwD2AQm?O3BWbkSm
z0b1==FZFSA%jYEH4ZlpNxC1l>PJ*}||1d4|eNwH~+3hwanP*Bi1j*vCmbIocn(yb^
z-v^sx?C(g@a<3;rxZi`X<^cNxD{{|q3tPSzVJ3t=>}So-YV0c$?Yn&$QTOMdsp@Y2
zB5Gw)^B2*9p~2Yno1w$RU~Dq5H7Q=+#+feJaqPEWWpDXpqVYrXpiN`Hko06E{f_x2
zzQ>91w_nO98q{FRVDZ_%VwDYp#c@)-k_z{a3Y&Jlzg`A3ba?NH6$?f`x)IHCu8fT5
zn|YY+N;4ozQ&1}YF&Wm(23`-uUPiDe<5H;wVbE~eW%EdvS#Gx2=(<S)238YKmUu{4
z^nzKY_qQ?o6_w~TRA<D;?Pu><b2u+qtmoOOFh&2UIC5V6rZzp~K6^}^dHd`~5f^vs
zr6~W-yx?C7gQmIUS~-gFp%GKq8sK=vfxs!|{hB7_neIMXmo|O3vTvsMySln)J#uR%
z#_GO~TJa2jGgoc%uAd+_9MN&hZ@a|dja&gdT=SjWn4!<yn3HHTI$UUQeo$WnEZ?xw
zz!HoT5;{HW$BU-UQ$g!C2)ULb5ZnBGRETpU-;56ou)dSMYu#M%Aajn#=Uc8!*T0=<
z;TFh}n=A~c_X(+`P)<|sG9#%ecY*jg#pgTTCz1t98Il9(5;`zgLUBN1K>#eSV79*{
zsxWw+2+fmUgipK&KV$Pi(B-gf%sJiz?J?*=xt@Bixhp#~+<UNH)J=_3+wyJ`&*>RU
zqnQgfckDtzzj0{u^G+|<2%Zp#$$fgs$mZu`<TTxIPQG{!Y<C7Sc*}R?y~$GNg<jYF
zUq^poli|lSrSK}k!~{n1*AbW&+}^w|%5Y-A3bpE`kSuT#s<-3J&)L4)p+vHja2#ku
z{VvI~etTxrfxRQb2j7bRMpt!y>%|fv%7{An)-iT385c(Pu!JXvtx?(C?A<=H&cm^k
zDHj<;wiAEI*|>Ll4pvLso7|ok+=<Ys`Im#WvAGE0*c@p~nsXgQ=Ln*C{x{P4w5?J0
zMP+Xnncxdnn)cHeL>4eEqz`=OPFP$Tp==AHc(!R1?m&F*7lBa+JS7~VH=iW9R?wvb
zG9Qq*ENqP?ojb)X0>hbeBiqy;o-ZqGvQ5o*QMxbS91LOwH_dSm^%#2RM)LCq6Q3?*
z!+hp;Uxrf@-Vzyb_uOvniOYezUeQ6uDs+-Lo6{pVP!M+PZLNkTVri|0`8ce>7)H{^
z(=1`(28xqA>b+lzu&^Gt78c&g@Aw+6hST21yGK~?y{G!9HJn6xNDHbb+5SWK(AzA0
zOTm3Klt5S@1xv3X0l#YwBWNEA4Kkl3ppBUp4}MBut;(>K4`gv`&-eaW{Ql=whYLAM
zL^!CTIx$`*M<Xq{Kr}^>3XBtQI1LP*<|mtbU{kJsJcw-?D9NDDm6MqKAgWkVf_TUo
zv8Odd3Cp%(QS*!wI9IGHA+X1&WQZ|&MWgv}AklmwK`55A$MRwS>oFmr9v(z9#wR<v
z9!uqq^H5a2%wSpx(>&w3A8VU*>v##Ly>cF2hn5AdZa(p0{P7t<U`Z&VB_t|9`n(iP
z;V5lD;d0Ko6lrAgZDb6jOX){@5b?9ri~Soy(ajC1ltvXw*%9j{L;4LB`jBHMk^)-+
zqFeKrj1A3Ot0MZ`eb2NPiON8C<U;FLjKOICb88Z}NOD#SrT<Df10ZZly>RVSL~=tN
zL61L}W;U-PdC~087R`R_n~T1@>yfz1)@ad}@7L<J(q!nqo;`90$3Rf<Yq<ry1>tO8
zuvHAgcsWwFGTWQ`$%^rqjzv8)_YL%S*;IUdAR%S^(ku7jGy{U`h-fhk_Lr@e$o|~!
zhAdA`ox?aGs68|yu9hib86^8`laIs09B`|!?I|RC41A@HeIpFM&8jO459A(J<928?
zWTeu#1pP7SiJwa=+~!*AAmz}VOui7iyIM#fGN0^~N%bVb>aBvWA+l8GCY^LUOSGkQ
zUMRIr#?7`LYP_O=<41#+-t%)<X?k2ZFr#_K<xSLf;3TH?>0I4tBto!2hPFErN_-3x
z1>sQaW0*idaqHLMWW{YA$(|qr{g7KCE!E7z+3Xe#DXTN0mYLCr5+m)1RqtMWHLBp*
zn47eUKDhA;`X=xU;$}lZI=zlCcyhf?(Dx1fgDCl&4Z7)J!_z$D532;-laD}m#4*qn
zvFT8uM)(^Fn;0$1H$%<Rn|m-`g7YYhHL@~ZNOMjz=U8FPQ+lF>E(Z09xk+1p4(ccS
z%h*Uu>cowG>ppjVvXa|zz?Tf>Y^la1a}$EoPHCTP)*U4-3NxCY|5QFj<i()aRAOJL
zpPfyarWOPv{qY6lY%5dE4q_5T?~FCCn4G8rliSW4Xg)>XcAfQ}K|`BtUmx^wM_8^V
zdU4#BVc+CLOKkiJ9XIDmlV=AD-V>oPBN_YJ=Sa_MSEw9}K#|WQRw4aTt5}6Z2GtaJ
zUeC7rQ-D;GIo5Py70KB3f7HDWo_x6%CAc5WU%A*k(HtjuurYxuP1i0O;bZiu&<0=Y
z#)nK41urGL=CH@rb~6DA%EIRaG07q-ywYz;PT8oIAM)$#w6Of-YJQG14$Q*H>e}Dn
zYW^Yg$+e1oizKW)5NjjXEA4LAI3)NuVl4`@S)phyTCyTsahvFV9th~*oU6&VQbs5t
zI{S;fhy1!w1Ui$Opd1CQoG^_2EnU;>@!+}Xm%#~-n|A~!_z#AdK<0OR6C--#9p;$@
z(PnT*$G%u!wCO{W*&WJ2;6ufQ@<@Udyplw^+%(3#-2JY#P{FbeDl`#WMqP5GNZ;Dk
zcFs<-TKI{+C0ix}hQI7pusD%W*dpj`j*Y^F#FW^{hKt<Z#ga(l@a-Nab`jj$Jp<#L
zOA=`}?PO01p*<ZR#LDa+^Q4^Ai>zT>u}gIL+P8C1&w>2nM}S(}&TSW8V@^~;TXi>;
zQQ0;wTA~kU3J2B0K^|*^&YBwqV|V=!EUYm$OJsDnR~xK-JO;5CGv41}5c~-0!W{ZO
z5j6JE5;1Q^7L(36ONOYSKa?h<&jQYy8=0(o#iF<jtCr?aFt$WzB-%nOxIX*<U-E)u
z<!X(+bd;@ELjg2~f`9dK*au7Jxlf}?FPXH>OAn_N`{|fbfS|Wh%~z+xQCjtrZ|weu
z)6TFzH`$*9SMA`6GF}ks!$t{rRH78~qhI48l<e6P#xjQM+MkGTTfxAdec_tp?F;YD
zA*AdJ+v*O}ZFPrpMUml-9pP}>GDql!yx_B_CfG_hyQz=JZtpsf3?356qYhR=yW@Lc
zXkH-4eXLpapdCtft>M085luy-;!g!-`Xt>mvYC7yyG3Y%pr7;Xk;yL<vEyWt=c+rd
zQgOBHqD+Ok2Mv^TL{8Q=H{?&YjCrh|fgp2F(VIYG#g5|HqR2x$k$Lii2fA8;zNuHM
zz^T1a`$W^4M7G|<ImE?=0P7O-;dL#5o0aV9vLGS1tj#=T0v1)^wQyRzmA7RpyMyiI
zd@d@L$rz{d*=0^<_Y@_L)l-Esfmri4z2Ur_FWIvHe9JO&YOC-^_M9)h<Of>!LQY`M
zjPF{`X)|hr3n<!+>3Ob4*nr#YZS($7Y^%q3n>*ZiVUpeUiN-^(cgN>3(8c<4cNx$4
z#_vLZYzynA{pZv&pfdkCWZg3*YvL`Ur0j3=?-jY~1i_4{-3+rF6_=yO9=$-Y{3rHQ
z`pC%@0$_NR-tU*SoTvPVXm~7rSSDcE&C60%U>x#`eW%qZzF8Bvi~34Op#s+<qL(2G
zlTp!3D{SpaSS`HG?3R|r$pv&U4JUjSgQnE(@q3Ro5wuLI9!rKqDAHs0j0)kKfS7I#
zoMZ+l({YNs{(9~%lcI!1$zI0G_JP!;&zKA7K|@ZYE%OFkR$oHe40z=n_2y3&3jdUX
z0wvX7D2%>K4(y{RpqZ#Gk1wsUd#(XAZ}sc>LlzT)ZQ27%tLU75!99WDv|I@pOuF-^
z4=2cnX0feikC~D4hurfZYcyC;ICGtVPq3kk8q;W29lwtU27$&ifuwu9fFL6!2=qKh
zDvlclpEuWUp*+GR`VO8+=2h~ZyJJZ@K26i7&Iq`ysx;rAc(5t^L|dF8R?(uFXyjOi
zu|zx<sg9M~KI_y-DLwb_$em}|dMY4V(T~M}u$jX^bRFV9U7tQX_Z{=KAKM!)oS*F{
z44EHY$BBSPq@Z$jkg$YpEsoPiI{G;C=D!pDexir2k^(;|6{y!;wW?R8EL5)LxPk7n
z3feNGM3pM5mO$EO3O7K_B3=84V-C(>x)=-Mc*M&R^{Mw{bUTJ+z_foO3Gj?&pr8C_
ztH^ou4lMaYFOSg6FXLVjM3ZZ}s8^;=(rW9qh|cuNyxL$As!f15E|NP(ikcsn8Hi(L
zx{QQHmdeg<^BVS-^k-R)UE?7H>psgcTLxmu_{bKj>yen8E))9EhAb^CZp)6`9<Zb9
zFPeo&GqN7`-QdU4IEy;I5j&*MnU84U#~9;TcW-7BfyLP9Y9Pi&*8tSxv{>#>G>1ZH
zjh8*?Ay^Y%2qvN7Ps+uzp&-eWb3<kmFzAipE(?5UE&6(l>+qDdMctxgOc1l_!ShpP
zY%elr{YgmfYMDe+l@oQ3Sb8@`lIxKTnbOod_Bj(eddkVIJQ0=mpmhuyir0%}8e5jO
z>~;v{OXSQeHz8SlWPT8nYJ1H?4Z0!&8Qe#3lvUKO`^k^S6qsg?lnU?1w)T?b#2@uh
z0umzMzLRL*Sba^sSYGMyul`DRqML+5{^sRq{0}K$1Qd4RYQE>qjsehjBBa9PozTG}
z#1bK}fNQ=tIgo~A-6IPhw>glo)cuC$_QQ~&zwVK3tyPrn`dVz2xuhwLgCy8vs*yWa
z<O&Ij#IZ)!_nW2qq7fTiEm~gYx<tN3RvvI>(KyR9-Dp68H?~^Ds>ai2601za3O#zW
zilw>3d>fL85LqN*=v93aDi9Ua=OlKYVHi`uQlhgp2Vi{R8C}BVX_}v8?>52Ag!61<
z#So!|>DmjSs<p<jK-L&asC$ppy)e?J)L3v^=xz44kB|#xaYw5h24iPm3Hn;ikpB9~
zd#E)ZYP$1OFzq>*)cXhFdeJ%j!q=LIX6GkpCpz=m%EGxXX+`oJBvZs8DU5Aw#TpMN
z4Xc0g-r&o5NNbKzMmX(@88n2nr9G*#&V$VSk|+zerj_9B3%1=Z`R6{f@<OdkzQa5I
zS?=KD5{ZHN(OXe<{5beLhX6W!nAvN!!UoqqprdRN_4A$VrV*t#{HKxdSh&#vL#d>P
z%H!4B5&!O@_4#tQui$z|EC}9DNd^82=*@jO@TM>LJCWUdxgpVk9OMgDi{7p=(1(e^
zwZG*{UhYnruWjjCNJ4qJTUYAI+j;us*_H8nxa{)qiU^&o#pFSd0J1dqDe0u<tCOP|
zUdp+ci(K-C8c)k@AS~g#ra2p8r}-UASdf#OKSJ+qlA7p}W5iQ$l`^j!uVZeA#B3%e
zhdJSf-pJ3`k>4(~SAM_(=8r7?ECro{vTk4Q-&`&GX&Ctt!Q8d791TjXAa7}h&qHzZ
zyFCJWuadkr(uk7$8K+T7k<1MSN=fcklG`!B))N2QQ!p+g5=D1KMC|QaY4dM7a6N%-
zl7J{Y1DbmNsTXv^X}hNj*<3B3Np%F<r1X)ctRo9_HvuDBs5^v4mqm*484KA_4GWIY
zKb?5IdB$a@+ND8Y7ro0>w(jW=YabF}qHjrh)lZEJda%oL>Rvz>gnmP>*kV^l7lcLe
zc`?C4+6}7i+xzOHUch(cLljSY<n7ZpK)becdp$<u0neEfk9DJhV8};POvn#%o}vh~
z_IXg~E{kv95x&K{1kLuR%^!UtMDFG&Yl~vS>c#F+MM0ZxMG!sMiNa|QYnTrcScE2_
z`ioy%vmOEq<-Nf@M+99@Pz)3jRHhKS&6Ppqn4jx7__v4XH1eEwGqoDHReBlq#P*Jx
z+?ikIQgS%tD;dvsn^Q?7Klq$E5g3%o2GiW<%+qUx78N=DCL2e}i+yxlZ9VUFqKSg{
zJzyWS^tSc*(xc-lJAYcl6r6BhM?e(4dzHJNvXr~~k250Y)Qg<6j850maqWjoWVmHC
zV@@K2ZSV@pfcSds!FIFMDue9|^M1Ajt-*$2iz61&!$$W1t~vf-+ts8~2+O3!8gKQa
z#S<(_Mpq|I*1%cGiVV5G`4pk?`$3OW(}Qsq0_Y*P|9JaTS|}1W=UqU{LZfTBNGHb}
ze~&|#bcCGbJ~kd0e6u-or<Do3!8hcnU8each3hS`KB{FG`?<9+)?anij4jN4&n2dm
z)Z=tv%$T1wf6p91IF=IBWAND08J9x{E%y?_ms7<RA!i(B1tgEdysnL0f_TOu-U8I$
zN37E1bEz(k=<^UK0k=ED?FCaO1U?V9_n0S4mFkdL1e5A*fiaH_BvErdj3t&ecAC%8
zEsHqayo3IF8)I`Gw#>E#-YsZ7T}0q|2Igh{)-zU;BRN@HAKu&#jj07wPg{<sk!@BU
zw2r%7ZazdotupIn<y$hF$V>~-`rcHwb+FHqm-~$&>g8`e<`h(%kc|o0D4oGJV|zhs
z7D<nm5@uK--X~Q;B-kPDBm@-Mf0dB!Bakw#=OTHT)E?$|dqJ5gGRK*0Q)|5e>_oE|
z4hIbP2jjd=D`M3QSIZq_?9EvitFS?#F{JSNW*50G`i$!(Wsdb>I{M&SRI?nM-mrmi
z1ydIjV~xZpJBXa}xiZgzx>BIZf~hs1D`OPw_&I4guo@|POs%qTAKtD%2255tB8I`l
zB3`GfS+5`klicL!-K5EJCFGz2j1{3qP>JhBr3+a%jJdbZRblId(8XlxS}TG%*j>#=
zY}?sUEW>P&9fyLl_TFp?IAzsbi?78HNUJU@2Um;CoLST=XwBRSx9)V3E@a-g9HzsL
z#4;=#Q&Qnj$HVr-0qHx++|r^MN|3CPukSpB3IGB-o1kq)QKo;d#SN+b+Jbo-YY|#t
z-km@GWq))r7wfG%g(Vb9!oD>p;D&!!O0z96h@-w{b+fS2DMD*{)puY4Av28rtht95
zaAhd@DZ_#IY_)v4?&kf-ek@y*jNyl~%;}&hLpi7T%#n}kB8Ys8ipvFJH&5C^+pEW!
zFuvO);dijK*4}4^$mFnhpTwT?7m=ULQrOUvgTnJG5pfUrbKea3%p2GA?H{y&VD}Hd
zgEF2RCY?vF<ye`ONH<+YBa*E*CYm`@8=QeLGV$QfTF7HXd_~0O$SKeeCN&c(G3+<l
z^@!|hjEaFV!&^K#lZ~5Pk3_p3-PQ3IXTnZ)z?0<Aa_9-yqa9r8p^as3({9&VI*4Q8
zgj!q|Wnx!L&Lk^bp}1+A(SHqhtapg*RkR{8HLaJu!Y3}6#CrFMcj&)&@|S+o)~Q)9
z%%Eo^y=-Dr<2E5S{YPkwsK>q{%RQa`V3btW&ZZn?Y$0cJ&0tAQ){RB~FIl$E=N{QX
zFYrDAf5YG%UhE-obY==dLJq=1Aj3SB-1VM%G!AR$x@!z8A8e@8hCXHjlN-CSg_(Kt
zJGkK*4!K~MJi`mSu_wod`t0C_PntMtB<2Fv`zAW?L4tjhu-4GEWSF^&Qn2-X2f!*<
z*Khb7{1`g~E$eaJgQbl%l6dZ`#*4o7D<<Y(fRpOXiwb)?!(P`@yJd4PjXzw2u|-?z
z`EBz%huMD!mD}$(zYy}~?)AE6?u8XP$Vdw_I|3ujQ+2M1BxicHQ@WO}8G^uu%-eD6
zMNWtLz#byCC3!s(ckk?Ai!Kv4vu1lDFBmWIZi*+0?E7=#_!gY&3$h1#r|slsI9{Yc
z*8;uk3RNVMxB2O?H~O{wws{V3Th&3-e6t7oriG0~kpQGHl@yHg(MKy>7a#E^4jlqf
z4oQ@$;O+=ah<qf@G>J2cI2pZhtO#EaRpLyGRE)?A>?zY^5+~X+?B<DJ%To1j8F0&3
z-Q?WvhRwVXiq81jM{%;_GWkpljQo{cyQPAq*iEjM<$MDjY=6sahB_PMZMs^;2jZGA
z6A=@NZ7R=pe&sJiQSFVw;Cq}Pmf_q}kZZb{r_o7kYdqfdF`3gbj}ecDhePg3`uf%U
z@Yb#n^ph1@k3YPVk-u?7K5Ix=o{bL-#8PckmnGKi>w1!K6i_3k3y7Hzeb7%zX(=g?
zoL$_PvZc6UT4Czx+V#V!%nFPEMJ)P$INY~@e&d9uCv-yb#z~%a<0E;jw~i66^GzHW
zIy*o2jesi>ED*arIzBYnW+y9aKecX(jp9fka(aJ8IBdA&PQTbc<0Nf5qJrG=Opj}g
zOx!}Wq+UXMEP6(T1`4e-d4eJD_z#5<Tx(_JIrn2%iwX4Vjnn+`Zyktk;!ITZTU`$d
z4+dWiB{zQ=vnm~A8;0=N8~rLh-prgQRPq#uGTxzMoauV1#UXDHC)IRZ9T{i5?AUev
zn6$&~xtjwRS>BA1<<KR4@$(zGWYzp-)H+(gij?)y5klb$k)}3(867yvcbcR$es3t%
zCf32%@(@<aUNk4Y#1sLswIKL}mhipf-*~~~h#GQ>i1U+Q)D~py&62ef;8X0Q1%`&x
zs+qGgTwSw*kyem?7l!h&MK>iE<&4<I>0$O)Euwl{|Gp#o!`2nq{w^U{?yHYWQ#J-w
zdZ*4)$6?-c+oop~Lg(fm_AoAMmYJ2!hv3~j{3;pwlhN{ExmoNyM_E@Cw4HsphjpVW
zrzUIGjp^D<ejKaq`tn$;E3-X|bs;;a=(a}LygQ82Qr1D-mwc+YTx;(mfbg%Y<xX6%
z(}vvsJbaceT;<e_`e3XvyRvmW3@mv>s!13bFH!O7<25x>#p{Z*r-kMVpQj#?R3Nsp
zbqKQ!tMByh*enAJyF}4u-3v%YLQ)X=Y8nU7BAKU!5+nZah<_`F0#OCb{lK;6K4JS4
zB6&*x(!=(N+@k@dEz)Yv*VP(f5Nbt^6F+CZtZV-3!`L%;k8Sr*bvSL_c(ymWIAVl(
zIx8u*(zZ`KW5KU$G@?=Sp~V~k34Rc|5AN~vtxGQGL=->S9L^iV)!&#JS#f)ZWnCra
zK)zV24hwoGu@{TJm9-{$Ec-lMQLgRtXxlR*%|}RL@}D^Z)7Fy<DR!m7Qj`D85!elH
zgJ|xI5m(E=yGMu`{GcFs(6-Mr5^rzwyJHHkcvl<fp&1vrwIP}b=0XxA-7|X96{Pwq
zzRzB!vG4jdsbYY^vS#YKp`EG!cyqKB`ygSgp}K$UBrA5P7D+ViO}0kFz7Mus+^CDB
zV600F{OmRxnFgU5m}cIm6VmgnEjU}#Ez>p4#Kd&X$@)9kUfUC_e}1<vwP?*Gy-K7%
z*?K?1z>l>)o?OuCN%wPkS6{(r_5LQx$Y$<CO<q|se{F~7o^*WL>Kv`hZjr5ly}bEb
zmpzcz@+{}9mu>Psk{pU-O}XB;p8L%TGK<Y$50W-#^pW5#9(W^wHHydIcQvFP+^#%v
zC{eCnky)(B(1^~9|4bIUSu<49;@Z9Ac0LYl%H3@gkAKdXhECZ;^C1e>n$w&RHrM0o
zXGT`%0bOoeB6RBd3TefMdSM2trcT32j*1*V^!|}lJt5Yizob3x<Hh@gbRNxJ$=tHR
zpK<ahL;kp$zwiWtzT7W^yImVQxMMrGGnBvzP-sB#xlmMacX0dTBq{bQ{NpwoXU&k=
zl#w$-k(_bL3`J3l(KE!7fxOX(jPJ})AY}~7-E55LI-Nei8{8jCc~aU}DE>(TVmpFE
z29U_<eX@yHQ3@$)9KAmFq#6XM&J$WPO?>ZZ^0wuzrtNB_ks`|HF@|Cq<HO<n`8c_G
z7x%RjPw*nC#Kw5}hH(S@2<tZD<b6aaftO?!s(BfyKbrZkL*8gP)H2r0hl&=d$Kcwb
zga^!2A+74V9gJn=s9jKG1oHbKWhXCE1=y@*TZWNT(#+Z+L{YfdZ(o!pAu!R%iX>L}
zHt<1u(splf$G8qmUd+-uex8<YW9reVg62W43L$BoF6mo|CiP7;kn1l?Kx;LdIp~r0
zrSpTnZAy;b91f>l{vAF1T?;pwGx-zD>3SC8GlL7K9X?SH9EDao=CZ$+&IvjlR<>r4
zh|HfBgwrlKiTG~?er0yCzqdmrQNGa6WYRFe+w{CAG_d(lbRY&Nb9`)Ga>3Gxdu5Ix
zNdK@WGrfQ+DmT9PPc`Cx^lp6X3@1VbW<2`Z&5o2Sr^$<+wSS!t`;BX_A=f-?Ubb$A
z6}>H=8OwqRoX!#P>TbFfs=z0eoMD!O<Z3aFj!{~0`TRw?^e%=Mc8q(~Rz2&`0W)7=
z!Hf|#olPgta4tYa{`C>%DH;H286D&xOLb-*8HmRNx)2%*u}1TlwD+~21d?Hw;&B~v
z*yE!?p{RuJ;P!DH+ynv!=geUH6XkW@04MSmrHt{s0Wx`uQToo17!}A`w^8>(p)rp+
zXl0TF>@(Q6?oP|w8R@31M(=77TwqO~m!{%cdoOSB95t=lNmqGXEpofGIGc<W0#KB>
z79WI|YgS3%-2F=iHGdPcB&YcstVPz~<$7v^&dZWqgCBdxGo5kkusdCA<uEIooWAg3
zMou{`tLYDQR>>(1y2kbhxoX8jnnTNq9=c;alu{{k5$ntPlUQkzRcp6!&lU8UzK{R#
zM{c3@wRsNv*0pFvx?U%Wi)$QxGY*GY`x-91g>+$-u<oOK%GPx3uDk;>GX$-`IE?~Z
z4(9b%9lBb+U^I^qu}hdJf@QrGB9xo^@scZ{hU=QIK?#buuKlY<8}6cXzu2iu=W2P=
z^3)8mK|Co&AV)8^2w4Ps?-No+7_Dp@kzuzOpKts&^V|pQGA{-fwBmB#TlHsqc2Jh!
zS%0rCtJMTNP4BIW+_>1=3_Q*nXO6#&waLE9iQJpF4L)fqPsv%;VJ5fli*x!?a^!G9
zL13&NAVwUgX%#q~?!L?dYupCn-WJRf-GIYx_m_;LFl>1q-EoO1-rIRme76*w{wthz
zK9MwOFjMl%SQ6N2ep)Z<ZzHe)picwP2gor1UA&o1<>}7DRO=l~k-BEG#;uF_wAMoX
z0tMO^30LqOU2IIetY+Slxl{04y|qd5>$8B0?o4oNYmpxQ3tIhdZOwf_GYfCcC9k93
zg5Jh1FPax(SvbpdgOM%P^jmK+&#2RKMwg|>){-e1vG3;e1wDrdo6Yz|;ibqPzHn!$
z9CDJ5MZ^T3xkLn>Zi4umVQFPdWrZfoUq%NbYk?Gj(jym_HPWMSxu&gqs5|jcj3}le
zG}XR>FsxtDdPy`J!KgJ`7Js6M-@J8!SnlgR-^@DDW@|x@V_9bt_BcyO3q?mnQkf^K
zMz8o8O5HN{ED+rc_A{`tveVq{w0gQdSTf)XwGZAe>60Sn2YQ5LMNLkGR9;DH62@Gp
zU8q0G;cd}j64_U_g3|knV0v@lK%r%vGT6mVN`CJ1)Wi*7)hkwO1v-1l>t4<~3%*^$
z=xTjA6AiA0+haV>s#iWXSho9evW<?%7g7i25=67dna;zv&#|g+R`PDoh1nllE2}g4
zxrbeAZ^z+nn?IFc=A8Y4KUZ`RU>*MAH{mu}IepdNwjf#-5<eD#$qoT~Y>fyuR9npy
z3Hg#xDu51-7ex99gc^JES+;}<P=&ROi2t?yIKl3coujsuQK2MoW0?^hCUQOGM=pj_
z+UA~a-o`+SCWVytJ9I?JEM1Wyw(mi=P+QOxJ&VujQ>YNF5o6Z;T$iArtt3{KfKSsU
z(1mPyo>;wVK#z7D2dzPZ7RjDKN(F6G;>^!k^ei0zzAu=Q-xf2Sd(Da#ffm(UUl@$Z
z<nCd)HnNK3V5+0<8~x+uOmD<`k9mHA)`*asmk*T6ymr5nsj)2Z)L;E@XtdczJ_X2M
zP2kDgfha!aUc;=?NdliqVc6I}%6Q)VK$nb#tc7~Fu6H89UW)J_y|30g?|a7$=k-KG
z#Em`3$spz9zABErc2JM9MkwQZ5q?o}tF8H4e6<&6w%=f(!q1A{k2*jtoOb(Y;Vv;5
z(l#GlcIpk!uSQB;v2D5|Fwxu$4Q&OiM{x%EvQS!0jR=*PY?eJF<VAGPFO_3GTOOC$
z0-1_6ZC`L73v~IpZ~23-<hcrW;C=rcdiY=+{3Z*Nl_NrbHm@e-=A76-f;m@bCsLW5
zL}u_K&UljIex6ZM=dj{VIY@9GIELn3eX(?gOwOJ+w^M6UNLNcS?2X5+-BS5Tj1Lj<
z;9mcTu>as&{_t*X-SI^8uT-Wb{+VH%a9ud<(-BA^ta>mBY8gZ-BrY>Q?kMg_T<&UM
zU0h$;K;K~L*;zHA536&J<TK{ElC_Me$!4?8My86=Tg^dHmPF;OD~SDpG6WAvIA=I*
z33<!*1DrRI78xX7h^n`bsjFHDa*Si@GK?(jrvNB@mb0LYj(pUv#nQTVdO4P#&-t~&
zE7})eR{EKl>wS)#vs{lXbU35hy{q4$#+1+XRHyfaFR=jRLDX9S#McmuKqB*H2}I0u
z3q-*4&ul7iIGfPve}+*{<*epip^=!~&wq{fj|!y|%HdoUN{)O734C&zxJWb*w@LB}
zxx5Eo8_|BEYFEs~Ktf99qya?s6iza~TP<`g&vc89Cv@zy@jSZ<_0ge<Wa6<;#$>G3
z0cYs_g8~^G^d`dGdA+ChSMT3P=*i(=SKHY!zP8JlZyxlm|CrhA5YF2egI1<+By(k)
z)}wjYQOG>iW9}gn+VTB>{s>s}=WUlU@FNb3aSv}!PT-I?XPJZP+;;T(EuZ)QP(`*f
zykeS~T`BX1Jkn&ZJ~%1{tm&5104#u?E{0{f$gtmJBBmXg$mxV*o(VtAJmz&Vd%T4P
zvihqlVJBDfqqtp<S~}*H9s8o&3esaLTQ_9N>M8p|=KCP;Z?#s<XyLAwYlx8h7FwV5
zS2D3L;2z^Pe@uQ`adgbe`6#o9O|7<3E3Xh%qJwPr+NWv?k!K2{Q@426&vf3C9Kcvr
zKASkLQK2}`x~cx=_%KCg*9iOC&V1SB=;)J!Z`#MkByaBPJvm{u{T*y+t{lc{mmOUq
z>iAe6+3$Ud!5q6Z5Lo82V#tOnz+M64J=SsCr4#qdOT7$wywF9paA+M`Gq1=IpKPtS
zBf<{8bSS=IG(TGX*FZ^A3Qvz^E`ZCREDB=Jnla=TYH0o@Dj?TbUQoooSnkJx@ggh~
zF<T3#9farfn=I5z!r1K>ud*lfTWFx(^T{<u0fji>v_0wYDA&!2@~Ma%;k2#z$ljyN
zynu~2tFP6Ej#h8o2TDDHp{&Juj@SdU&rk$o$DTtH);W!39F6?hsY0CtVk;P7t}3ss
zk~7L(RE_J=*lYMEEn-1s>rChR*yX&!-0Nm?feII_>xF>>La1yJ0CL1N1%ZrH5|%c>
zt2am!+~RCo5r@`7G~;=|M1e~vibyDxV75?-{MI=6bb=fjH&<0eie+xpPN_-}hPn{6
zMPNhY5A&Lc1zr}+MGhI$d}yd^?RtXswlhm0$t|No3<+Ol&K6vtVUD+LdW=+a5n>oJ
z=4AY%QMb?@AGumC5-vdPfzdC7*|nYKV7m}`ZRIhMQheYKragX<2v>VpF}(A~l5{7#
z<#%hp?SWzWK^F>o<}^5>u=RUVur66a$_sw<`x(BRNk-QCDDI${w#67@KKSnvJM9Xh
z=C#$tI`Yf5ao0-ndWUz~_P`r?!O!!{o(rAs$+^;DWH&93nie=E=fdc~iQcxeVz_V8
zAN{mhZ>4auPQe%un~%Zx=%;fsjHkV#bMyu#YkkrCd~AAp{8IzUILV^OR2@yP4OF4v
zWPXm6%YZURYRo@%a^O$C=nr6PU0vqu<reuC_&G<xOky@AG=D(l!8(-C+zF}ek^c>x
z6n=-2n(G=!2S+nvg9TQ8Ko+pGg&aO)0ygAe9l4}cFoVfU@`Gavg4(d1-hIxIWfdfc
zXH3T?EoP<mzbN;@QbEgQF5bup+>V$Ky;tk51obVNDAKcyo*x`W@nm!y|B^p?kNNPU
z#}U~Q?Zn(9rc)8}{%L!(8(k5(po3!nUNDx+Xcugs6;|7$5!lY;aE7Zzw7v7jQ&%Ft
z`J>ZrSpavGy(yjcU+&jb@<)GFAk?4j4Ze;l84QLrz1u(j)%@sT=2&n#rcAx8L<(4_
z%%DCEu?>|TDdizaDzM2nl@{k(dp)%Emo3aJvf2l!246Ctf8;nxo=B1m9T(}IOmHyI
zeE2v)zr56{^&Dv{CuyS=I>MmiMc5?~qQ45sO&}uOV|V;aG0XiuE~}Kk!KCK-(rli`
zR@W$-rMUC(jKw{^arg??79ieoA}odxk4f)3O4!r4T|(z(*|@@VJ4Z!MGcTv+n%&Br
zDK)6a{C=y+EF@n*u~~30I=J}@cqPDPPJ4&wDWB}2ornSfZC&D<-$+0eI*DOw>^%-+
z)PXHgM!Fftrya8HtIXF4U@r!~sO1Kxe_D>x=O{$JqqqJOwlU~<MDJrV`=CA$LwfnH
zc^i?BeUHz>(C(N95<;tFI-291x=d6(5C^#<i&kZYEfZ4psCvv}M-yEqb|W09d7KE>
zu1{#$Weo0k+llf=LTB!$0rYc!7{)FP_JRreRcJu&Cw`ajD}uJ{3bg02%q)5*y=ltS
z9pS2^kKzgQ3`Wr|Cv>#SeY~^e93$8EhnuBWwaD>;Su{%~9-@9B7U5Bzr@FNQ%fV-m
zh-6QZ<JE!brU5~EyL3@>ciS`M^_K{#m{lC9B10#^aVLE#I@&>h6k1@|J-h{SWIztD
zCucmHcP#hMW*4{;trxykChV;A=FU!TU>7uZ_TZ&)mEP#tsiBkQZD_*@0@9a`5YOSE
zRJ38V(f(v(;7raiq>GtZ*CWGVZoG$ES)49eydqh|RYG>YRVH+j%v>vrxmFf)tt{qR
zS<JPvn5(nc+$W2TI*ZEO7XqhLvS)(XJe2M-DW-jt{TIwIw5ou8P@(HOJTQ&5FDksV
zhd_Pn@)#%h_1W|(#KSxq)w<q+9Oa$X9yox_%6yKl#pI*}KFdidaQQkA=wy=F^Xp?z
zta(36AE}vWi)1<r#k4e6O%{yrEOgC$siGh_@<e8hoFsgyacHG?_1mhuu<d5mO|L^2
zif@3OLE?%Gj~Jdz9v->LAX{HxP*`Gao=P!UX1REa_NPPsYqQ=`QCP^)vff4p9hq46
z2_Z5{@P(k$%xOC6n{~YK(qlv_D<pNK&$KTWi6D^rw0WzQIZ5}F+d@y!uo4=2jD&(o
z3ucLgcZw`#9EsUuGG#UYvgl~E66M3rV|>st?(g|vW70znZIH?Qx1R4kAIt<Ao0WYp
z_PBZiK&8pMR_D;MwX-c2<X<0Tr2?9-u4kzpfp(&mdf!SQGIx%z&S5Cw-0((h*~@BJ
zq!R4v^O(^&8iz<s@edXjnN1zX@Gi0E&qq|Yb#(gy-MjZBugNdF?dFX=AC966YcI-N
z+Vfo(Tk?O5HE?BKVtt4p=F!Dv?ecrgSNlayDw~HF)2hw(;^p0!Fk<vyyo?Uc^8}wZ
zA8gm9@m#!xl>gWN+U52#ey`i`QyV%{E&t&*oMc144NGje%!V6mxY34p+wdV9ZnxoH
z8@_MDLpF4ZJ^{a>Hk@F?nKrz@h7C5n&W3l|aFY#RwBh?UJYd79p;r2XY&hJ8nKsO}
z;Y=IOvEd>c*4uEU4cFQ5CL7*o!^ds7-G+N?c-V&NGV1Zmw&6K8EV1ELHoVS;Keyo~
z8}78>n>IXT!vV72#c!w$vurrsh6OfUWWxp<w%G6n8{T8X$8EUXhA-RjT^oLB!}ts<
z-{CgQvf(rv7TD0RVUrE7v*8^!)X4vxKg)*8{v_6n=34NcOD*WEvS9zHJMXpp7mhgg
z_el84((0Oua<@_EzO2G<S1hYG++}s;74FK0y2bALhPtwf#>NSBUcKSU8Y)VSioW06
zCpIen>)))pKux*3wocNjD3dR?e`&3FR#w-RyNi|^RduyGK)@(nR8v7P=^y1cZfw2&
zI)UicyY^PItoU{H6}39_X^mwK)%C`N`sGV?fLV17c_3e8VXV|*)u_r;ooY}O{F|W4
zRSo}?%3{$mpxr0ycv-c9ni|Wg-v=l)fVDvukD~{u0a3{@d3kxU@;f726-kIJcTUlQ
zIH&qvcJ}-tI%l_A#&zW^sVd>8)Ux_z{G5b9OT*~|IQb{9`j?#J(DnF$4INR@F|h;U
zoCD(%5|akGl2Zl`NlhC%EIniRh>@d4k8zJZVO-{k-#IDk<Wt6<dfJ53vnNiPJmrk<
zelKV0wA|@4zJI32J9CyV@2s=^`RB|oC_MMPqVwm>EoN6|!G#z7VBy7=Tv}4PsI0uA
z^0KPx%de<eTw7OvWkaJ8Sh954@~eKh;_8*F^!BqL))1&Qsux$dD;gT=8r(`H*%eY;
zaNgXxmaq1jn}6=veO{ICyh3mOxxGGfzMDOHN>aSH)?Hd(UsGLHYE)CzRi%yY#ig)S
zDgK60vAEt4maC~Nh4rc`+_T(~{A;QgHIz0icURYz)ipF!lo>V4C&U-kRFpPWz?ij0
zX&Etz(I@qj8r_Y7`ue&CzEqShc2`n>#dQr8q=9p>#$ZCEJc8fkr1;a^-d;2Uq+K{S
zzn~B28&%bf?$XA_ip7g+mb=RX4b`=mxob&kiJ(D2s%xu_>e8C(t90`5#S$LgmI7B0
z)4eEg8Sn1pb%BPyxK42A8*YLwu4^>hHPu&Ckh&D7p`tNRW4P-o-DRaUHIf;W5}Zye
zt6N;Jn`qYQWi<^ayDI~=WtyhCg_iarRoiGZ1j-Bw&wu^VS5s41T3xHlF6Evi<<?EJ
zwk~j4mAkRNw2YQc@R~ZZJ%V6;={2z*y?V-CVO8FoVvF8J6-d|BmQ_sn_VnnRPqySU
zi_`?i-b~6R4ERsVk?(<8-DAK#y&>FH6{Yo7N)qmSf2W*FtNTRMb=Mp3yT^^!Xq5k*
zcxOnw`T!iaq`JWfl-BfClGLWoK=7hn9Ebjw*40YadpgV`J+ST+d+?e#RpRxQTlayq
zg~mFnth{1Lby<ZKR@yQ7Otk4#v8<l<L+38k>20AB$_l6H6d-3i++tX;+Nh#`FBguu
zqHi2Y_xSX&BbApLrM;-=e3C3y=+j(vXV6e_WuT%_kQ45oV|PAOs!`FfxSECrGYSt#
zGYHfM8ilA!OaB|Y0?L!E>3YoeP*F=w*3~Yqs5R{JNO(=xV}>tnxGW%n8+%GG;dOhf
zq?0qGLD$z+*BU)Nl_VqGUxnswrkvGf4Rwumm4^F*YF*k{<Hz^VrNHVGg`n}Yg$WZT
zsOgN&mo?Da)t1t02WqdVty^0Aed^UFWuEloW8>o)5GB|&x2_G@gi`G?*NFVsMr=n5
zt>=ew$r0~uyhp|^3G}0W@0_JL;`?>|-m#u=#CMhek9hw{zxM%6P1iK7ZejqAzNYD#
zHBG6pv5dfL*RBQe?ChqZrgh4xvQEk=n%~6u${<`+v<|e~SxxJjh@}{YtE#G;&bVdu
z^-JsPj~ago^1u4$R{j5FAro2u`hPjryC2Eu@BM30NB=uA{A$(v&!N8EzrHD~QN917
z*uMQX|040-|EufXD*Vy4TJ=B80glx@{~X`)7pXykYaG4*q8#7uUnKs~rT@?R{6{T7
za!Tc2Bu9DcbtkKDSztR@|M1_gw7sE{Rj=D}Ijjk*-4dEsuW4>sd(E}$TGt0RwEgJc
zuKV%zKiT;2H{5vBPk(mvEw}#sw%dPk$1m@^>+WCO^XuRI_TJy!cmD(b=fU4U^zb8(
zZhGwTKRof|Q-5sl*t})yw(UE1?t1!}XP<k1cjpT)zVz}ddtTl9r`P`c`WtV)weK%)
zzw_>U?|)!+{WY}z!;e1h{^ZlYefIf*gNMHO@~f}0RI2`~6QJWyaK6<9=$~Ewe|G-=
zW%~a|6VT&-*AvixcKQAOX^R(6Ym6*YsB(U%x(oTa#j%{9ZYhO@r<a$XZoL#0vdPCI
zKVL-|bHs`U>rJV1>y{kxejYP2`8>Cxo@uWY&>Ofc&}eW6d7wroehxCY#P`-WRLdGg
zVQE8Im7U;O6^j}IOo;7QbxvumekEVYOOd{$tw>YS<EbV7a!E_lQN))xYHq0!Xej3c
zzq1;uZI@ETRe^@ao;RiDSCrRQ^zkT0Oqb7vb+tOw+<*;B4M|7hOB_Ww38VO~Q9ZjN
zvKBL+X>r}sxrUx>Dg5U(Ry3Tq=yK*J`Mnc#uU$aC7nC*{Ugo$<DvIjr1NGJi{4GB#
zIaSEIROw|EGwYUFG3U+An=^UR1Ybdc6&^f52dqF296=Qd@CjN#5-0<KpcCYRY7h?^
zLP{tqgylEuymQZ+SDdLPF#neK$a>U-MLHS$7nf`Qh4Pnco|ZG4Sv;q%PBQrxKgZ}q
zHQGo}qs!yf=;DED^c1HWJ!$y9^v<E}8DnBq(v<5|l4FA!K>0U~QK|?b-H{~zWAGoT
z{l}6|H@77`k8VyTSJKM6xbI+_BU!%_>1DrCTl0_fA2~pc#6J~(XZbltese}CXYrgP
z(#>!WP=g$^Ra|%MzUca>Y{4g+jop-yv1;U^^!B0kX(g%IO6?mjYIRC&$WZFS;cWcA
zZ4tte5w9|)xKzfRwC*AMQaWAjN%e^(2}O<pQEEU#RJJ2EN~J!Sob7PMDA$w$$~7sW
z-Vq<8;&I1M8c?4yGG2`=cd3z62C0z^>D@#3rFIT(Pp*&T_qUUj`Z`Og1(EzD-APeJ
z0|&>c!R6^{@RVU{up?C^Kud`O>MH6Kr3Uc`zW3wzG43A&uObbB4tJt*m!~Lqak6rg
zue)Jnw^ci-^^W8LD%ptRY%Xw8V!H#~k%5z9vmNP9m0r$M9H-LxmOhEFsZN!OUn+j7
z_@z!tuFp6*K@FQyu7)`-Qpw$e_9b@4w>#_ON(K~Jb-fb=2fCA#duxVr8|mON3>=0k
zw_~u%=pME&t+SWb4^3kN#Utfd$RQHPz-Tql@q~(^J~Z8pfhvRiGsr)K{4*w{wL8+|
z!IKBRONZ~kQ`6HCA0_n8PLcAJ52Sofl{_c0JwoT(W-2vomQpuBBl)FBy>3lZ8Srri
z=|$={LgOF!l==nF{dV{ha6iTKmi_KXbE-6hr#w!jfm_<7l=hUP{W>H0|MD!Q-r+eE
ziLYrJ4{ZlRTWCBdx!&P|f65c!qj=?NfR7TRRH7qAWn>C3JOnTN9$t7r^MdekJ@d*G
z&1-R**CKfhK3AzLcv9c7%9=3-T1-KXYv`>liJ#L$2WVhG1L&3kF3_R}@6~fqMx5K5
zR*J=+*^#^wP%0VAbDEu(g^$Ji5n8^<_b#5Z>@bIMpNQ^GWhBm!7&T-{oEkF8rQ1am
zc&)imsRwu>akk<9nkN#+qE)hT6}yz{L1;D1sfL07uwo!-4VyHiUf0pf3Di?Obwpjw
zN!h3Cy>D43rR^KinbN~2gG!Xz&9lnJ%@N~JF*D(58%D}~_9EIF&+UX0*#G-a@w=5r
zcw1n~uz2uG1~-=))-a?yWuL1vsXalLSHgHIm3oP%!_HTyN4!XW#g{2n#`6Z>1v*A0
zs!{OnD0p`iJT!{(jhd9PZ&)X7q%R-Mfi}YHMiTW4zZX;2@K;6y;hYZToJm@mhn$*+
zKt(y?qEwvYX5|<>0G>-$gC87JpHz}qWTiV0{&Xsrq#KDhXF$E~59dS`rRaW;Fno{T
z{^}B?{=yTs%a(CEcu%=9dX%Fw`dEF48_nyK5%Fq7`5-l7N|G8eXIQsYOBR0!y%JY(
zDvM{ryMi&{QwFG%DTyj&j!-qeB$D@-Cg{a8%noPaoT%cj2WQ=vB&&3ID4l*X{d%h}
z$v7=3Z;X*j{zIs*!D`5?K@Y}vJNFIfjA@Uu`#IQGS@cMO9`NCd3H2Ehlg=1tB&#v>
z_ajJe*yO<tgSr#<#dkW}BmJYaIV&D~OBl_&gQC=+N%7hLQJEjPk#@urDYIi}yc!Db
zLrG_7!{B|%orBsF>k~?>`g_>skra3&86I&#^FeCV^%jq$==PFC`4ZKzInn}pY5UG?
zZ2a8bhh}!0&tQK!X0tt}OF5)Xpwy+yLmwR(|E#{1zQmv}p?|dd?#@V^%)X2Mi6<{o
zce*bgM0j`<eBezz)=Ky&@>zVhQa|Cj#15Z|d)u$D*k`|Myl5-Zr!kbOjFS@bGG?XH
zb0&2s>>Jn_*B)CRQxcsWsk{0J?!?h$SOfp)zMFo6KE&=TdisPHe#dFd`;@w|FAo)`
zsQ4G*p;Q?onI}WvROpK=VD;n0iO_?-yaB$*j6Y-O<dn_*u@QVV9|<4AL+Nu;yL)Rf
z-fnM6q(fTQOFM?9cN{5)#4}d@M|`t?yHcZf^x>Pa@oMap3^n%C;oa%`hIXd553Wxs
zNsh=gMJcJ#D)o-!dRIwr|Fe5H{V&f05gG_j%t8J+c0bhJ+Yj~fg(Egf#ZF<>Y~(;S
z5;?F>Ns1CEN5(kD!~V5aWXWvHq|P+0p>c5%v`$p1*C*F!r$}#L{VHWYx;yfAH2jyo
zghi`tTc6=y`VtmB{#p7Ga~x+^)K)aGVKmFy5u0T+)Z{H;F9s9Qd^1EVU=};JJ(>Yk
zG4o5SjkD?+=CUhOQ(?_S)xWD*TCc$l=2hz6=(!cd)Z1*5sK2zfyoQ<lXOe1RU3s9U
z;w(01&t?CG(66byTK2AHHLxwrrr%s<w`_bf)<hLllrE__%KwYrRIG$Wo{O1VQ^8!`
z9Yqd;h_}3)jbYX%VjX>z8|o$Qth&XE!Kk3Rmh7iW45rxZKGw^m+N*Aeo@3O^t6j?E
zJ8zlVFJ-avK|w=klWWB&w>*{FD``r3ikH_{s6Vo<QBwg;`xR$mOmSp?u7{q#(bxpo
ztgnqs`PIyrd9_uVUgTcJ(g(C4aR@{Y6$38E{rpT+ext8~-Sf*T8j2{qROF3PmJ6({
zRjWwo!H8c$UELLd`m^jEaVkL8Nm}L0tkQbcJA^0LQ8m>2f}^Y}=xs4(B~gC%M9*rd
zVBO_b?e^BN<Ea+vvJ?pk)m(9VXB8<mL}+zhUZJ>O0ly2__b=Bx#R`PlL(PjyK#}b4
zQNT^ICe-KsOvhO@jU+%U)<`_^1_7+M@5`G;qg!gI4~F;kp=z<-lFctiT9fb=s_Mrv
z^Qj%pgPgG|U@y_$CWIRwj>?bdC-kpFZ*BS9`s!MX4Q4we^Ss{O&bfwYIy8D!yX1fL
z2UT#K81vQ2nEBP^6|<^J8;a`+WhZ&&a-%|RK6W~A`(2vul)BF<kW#m4U#l&$nihS2
zprT=UQALB+<UqAR;|-N7rA~^g%dW8b`L})OWwRy(J5O`DUYaRJyT#k6IUJX|Q|B|M
z!Xjpij%~MfYWapf?=*F|WG0jkG*(IcnSsj6iUwNcpQ8$96_(apG=u7?(LLoZu8R;u
zz0o%m<(^@+JfX9+HR5@W^dXEX`4?!V468Y-cZEMB_XwM*yDj=vUj=rv)U2Ai#tOSJ
zUt@8G-FJD_&-#?+yns<3Foct@J0cXBO1qqE^z;bJ?H*Aw^{P3F4yV4fp`xd>^N#c(
zfmZ~_K0I?lX+yOrYk1Y{ygBFQ6|g>6Uc&<CqUbrO7)ZKGy=cWLKd;hyA1Ac1D^S{~
zQcnx^8VLjDTogdR2AchM{r2Tq`dE?lBJW4+k|amI9v_N~?KuADqrOOZdH(hL7X|)B
zf&Y67OuFN((|*bv_qmJRFIHlqWZ}t{zH3k0`pkOo{+k6klA?c2=+XQme$of91h3n+
z;1F%QV}R*Au{=pU19;>BeH>3BkJE<YC+~uud`sYoe3Nt~u0R)$q%U2Q_@(f$jG!O!
zAIl^DXYk0obeZx#%YJ77&~aFr)c!0_YDhP((`T7b=S_F5{TBn>Jaov4BiZQHTKG#j
z1fM1z!Fja}*8rs~%{=nGg-7y7A4rM1?a%G^UjPNaJ9(t6EJ^5aj{>Dk&-2LlS9#=n
zIz$orL}-Rn{~Qs=ao+oVKB}+oAOAla{y!W4ADw=GeEPrl&;MWV{|E{sANObF=05K4
zAA!yPe458s&aiMfzH-3-Jg)z!9FNNawp4js7I6QgF#4ya`~NyiWLfhCM^uaq%j!-B
z_>wit*NnA^diPtF;}>^XaP@8bz805fWs`>Y5WeG=ul>?(eLm{%>cf_o$A%Ao%kW-1
z{3C?leaE|Z3|H^nVczkB<EOv!7dpoI2qfpfcFAjQb?IxDzc%UU@GtFsbKe(AO<ZYV
z_Ss=ej^Y?@SOU-L7vq0wobjA?<h-pP8tR|@UFh)lXi+rj*!XvUZPB;MVSkUdU}v@k
zi|leo(vG|<n=eJU?Mn-ho#eLw6G#$AGc7R7eis={euuuWzDLC368qimq*RvuE;5<?
z4jr<>i_9s%PWyd`^{Q^S-$mw?UzPoyVZADk{f?T5{yFV;wk`Fq^PrW!$eQxI$9^Ae
zy{dKgJKI0{=eFP7_Pcq&ia*wV@BZ9+Kf!)4vfpJ-M1CIoodrbw%eLRIvfthIyKcnz
zrQ7cjVms~k^qZ}G{<|Q}S<eG*2TI*U>I0|#Mfl}YyImH=T6|JqL%$7uHuTtVx(#z|
zm~F!>8@g?nY(tiyHUE4TV?on~@7i#m4PUq6UK_q_!%iDMYr~y3+-k#i8$MyfO*VYM
zhPT^rqYXFMFp_?Y{l3D6h7GH1SYpE>8+vS*W5X#n%(7v!4V4WCGJ%V<IU#(cJx;Ky
zq35s1Zr3$4Ejs;I;VSzV=`REa$uokB@JFPL3ldFC(Bxb9CssdDG`Cp1|F3^VzW-YM
zeKtMZlP!Am@1Od=%eW%H2o$%p`COihc%;4F$n!AI%RGPMk?qTDo^yE?OX2xN;-MO)
zWG=gu=LVjKcwXZ9lqZ?6r}Gr@h;`lnKm7h9?eeI8zi9gxDSOTUtDdrLm}Nt^4g2z1
zB+mcSkPh_&o@E0ZsvCGA1KLL1CBWY@n2G-bz?XT-6C7$E(236Fz4#{sKjirg9iYB?
zn0<9HMHll@2Eoq=FYtbz*KrGcl;>I80$<^I0{0={Vg|+OaSp|qZ*>s^V$~pr;vBbX
z<`EoPfbZD;?*da8BqdBL@NymrQv>{o?cNA{g-5~^GhjZ-BW}^1c!fv8?*)c=rn_he
zZgyuFD9gd&9^iM!p~HZGJuoBFiaQecGaf9asat?&oX8pvZs&J!^GNzRz$<OH0bFmp
z?*zWevw`q?fhi{`brbGX;1=7x6?iTSMR(%A4)`&Tq}dJJ#d_cC_&*DLlSkJJaP?`7
z%hW{+a2}oH6x<7dZ9G2Q*8yMUk#zO~Pd;6#0{l+}{)VRn_r1U$(`gvEHv(6qQ+X5a
z7NFdHC-m70?D{@q0RH=dSDs1T4Roj{fUoliJ_5hC-2!KNtbBdI2Y4hefs?(&!94}|
znC*T7=$mQrmB7_JiKO2GoHC1jCfovl$8$TK*aN_WJW{Sh!2Le(B+Mb;nmp=A;sWE&
zvhsBUooBNHgulQ79-+U$uXvg;681H4PQF#HV&HC`PQrf;Og_h=gTRYs!yEW71b)OL
z<?05$RLCwC{x1WsJD1HRt`8FEKF{JAfj6Fy9E$%<K<pYQpM(K!;t?7OoHWlWqj7;!
z&+teYp9Om7Q%8g^0j}kd@aurn7SMk2pAKy2k#Y%qmq+3X%(zIYorD<)yp>1%ZwLPR
z2h<t<_X4M049!V%I<WLo@Wx#Z{1uPnh5ZHfS00JGANWZLb%XzBz=TpOOd`<7BRB|L
zVY>xBXuCa&s9&BM;<f;P#j`=u2X5t&ymkU_D7R?46?n#F^gs9)0oU@pj{7>`W*)(3
zD=@aoii>>+<+j}df662H+yZ>2+N$4Yfj3`4*-7UX;Pou}ro#gpfoIiHN4WjKjXWOl
z2cBJrwIJLjz!shbxVHi)BY#L6nF3tSBmKh);1=6``<3v2BV{4Hz^yzI{#oD}!>a2R
z;QWB)UI6@*r=IYi0k2+S@n;k80MADJ4*@S&3E$ve0Bl_aO>l1j-qu7tCQ-k@i&j%d
zxXXbFEtCa!A~3%d{Baim-{xt;{Vwp_4e%xIBH*8RHsQ{^4!!Z~;UC<|zy&<gHU)lY
z`*#DE|AeyBHdg@8-)Omuf!l0%)eT(N%_DUo0?qesqJ5EO4lu|g^|%4p^fN_<4h=hT
z3#|kWz1ebS0=My`6J{syoS#$QxC?+QcqF{QoZGCt1Qy+nKVbx3%OiQM1K#or=!{!n
z(l3!A!QTzs%_Hr)6S(3|rPdKfpt{RSU*O$5H{st2-2W@+gInO4_t4jXg9o_nH{gkT
z<Zsb+zSl}W8yMsfJU0M$@c3|JzeGj<&f?)1;9We@*WCmB^L_MLgn3=y1B}tQ1^(dw
zz>B!cffqaoKDZYECq2si5%(0}lRQ$7?Z8(yS?;~Sbx(jZVFVuJ5q>)a{OCz*?8|%#
z8InivTn0S24g7H*0$#p@GJ;zT@bcZzTHL@3JK+!93xS{T2tRxV47^0SsP|>S<X6BM
ze}Q-N=rRJA?4h0DzYO>&kL0@v*!(AO#=iwv@+LfkTVOYjq%ZJ|w=A4Z;BWt8(YYJ=
z{kP#K>P60F$XSUE(q4da=HX@V5h%L-;ua`+`{EY(itT<2DEjx}FHrR3#Vt_u*TpUH
zEZZ&cQrle#6rFGhBk(7-TlBv>Y_~ws&lcPSioUai7byD2;xAD2cf~DGbYR6TQ1n|R
hyuhWldnHixPQ_oK=wC{BfnW0!LAQVX{&!N~{{t5Eu08+&

diff --git a/vendor/distribute-0.6.34/setuptools/gui.exe b/vendor/distribute-0.6.34/setuptools/gui.exe
deleted file mode 100755
index 3f64af7de42fd6597b4c6cf50896d32a98a7d6a2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 65536
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

diff --git a/vendor/distribute-0.6.34/setuptools/package_index.py b/vendor/distribute-0.6.34/setuptools/package_index.py
deleted file mode 100644
index 0ee21e3b..00000000
--- a/vendor/distribute-0.6.34/setuptools/package_index.py
+++ /dev/null
@@ -1,920 +0,0 @@
-"""PyPI and direct package downloading"""
-import sys, os.path, re, urlparse, urllib, urllib2, shutil, random, socket, cStringIO
-import base64
-import httplib
-from pkg_resources import *
-from distutils import log
-from distutils.errors import DistutilsError
-try:
-    from hashlib import md5
-except ImportError:
-    from md5 import md5
-from fnmatch import translate
-
-EGG_FRAGMENT = re.compile(r'^egg=([-A-Za-z0-9_.]+)$')
-HREF = re.compile("""href\\s*=\\s*['"]?([^'"> ]+)""", re.I)
-# this is here to fix emacs' cruddy broken syntax highlighting
-PYPI_MD5 = re.compile(
-    '<a href="([^"#]+)">([^<]+)</a>\n\s+\\(<a (?:title="MD5 hash"\n\s+)'
-    'href="[^?]+\?:action=show_md5&amp;digest=([0-9a-f]{32})">md5</a>\\)'
-)
-URL_SCHEME = re.compile('([-+.a-z0-9]{2,}):',re.I).match
-EXTENSIONS = ".tar.gz .tar.bz2 .tar .zip .tgz".split()
-
-__all__ = [
-    'PackageIndex', 'distros_for_url', 'parse_bdist_wininst',
-    'interpret_distro_name',
-]
-
-_SOCKET_TIMEOUT = 15
-
-def parse_bdist_wininst(name):
-    """Return (base,pyversion) or (None,None) for possible .exe name"""
-
-    lower = name.lower()
-    base, py_ver, plat = None, None, None
-
-    if lower.endswith('.exe'):
-        if lower.endswith('.win32.exe'):
-            base = name[:-10]
-            plat = 'win32'
-        elif lower.startswith('.win32-py',-16):
-            py_ver = name[-7:-4]
-            base = name[:-16]
-            plat = 'win32'
-        elif lower.endswith('.win-amd64.exe'):
-            base = name[:-14]
-            plat = 'win-amd64'
-        elif lower.startswith('.win-amd64-py',-20):
-            py_ver = name[-7:-4]
-            base = name[:-20]
-            plat = 'win-amd64'
-    return base,py_ver,plat
-
-
-def egg_info_for_url(url):
-    scheme, server, path, parameters, query, fragment = urlparse.urlparse(url)
-    base = urllib2.unquote(path.split('/')[-1])
-    if '#' in base: base, fragment = base.split('#',1)
-    return base,fragment
-
-def distros_for_url(url, metadata=None):
-    """Yield egg or source distribution objects that might be found at a URL"""
-    base, fragment = egg_info_for_url(url)
-    for dist in distros_for_location(url, base, metadata): yield dist
-    if fragment:
-        match = EGG_FRAGMENT.match(fragment)
-        if match:
-            for dist in interpret_distro_name(
-                url, match.group(1), metadata, precedence = CHECKOUT_DIST
-            ):
-                yield dist
-
-def distros_for_location(location, basename, metadata=None):
-    """Yield egg or source distribution objects based on basename"""
-    if basename.endswith('.egg.zip'):
-        basename = basename[:-4]    # strip the .zip
-    if basename.endswith('.egg') and '-' in basename:
-        # only one, unambiguous interpretation
-        return [Distribution.from_location(location, basename, metadata)]
-
-    if basename.endswith('.exe'):
-        win_base, py_ver, platform = parse_bdist_wininst(basename)
-        if win_base is not None:
-            return interpret_distro_name(
-                location, win_base, metadata, py_ver, BINARY_DIST, platform
-            )
-
-    # Try source distro extensions (.zip, .tgz, etc.)
-    #
-    for ext in EXTENSIONS:
-        if basename.endswith(ext):
-            basename = basename[:-len(ext)]
-            return interpret_distro_name(location, basename, metadata)
-    return []  # no extension matched
-
-def distros_for_filename(filename, metadata=None):
-    """Yield possible egg or source distribution objects based on a filename"""
-    return distros_for_location(
-        normalize_path(filename), os.path.basename(filename), metadata
-    )
-
-
-def interpret_distro_name(location, basename, metadata,
-    py_version=None, precedence=SOURCE_DIST, platform=None
-):
-    """Generate alternative interpretations of a source distro name
-
-    Note: if `location` is a filesystem filename, you should call
-    ``pkg_resources.normalize_path()`` on it before passing it to this
-    routine!
-    """
-    # Generate alternative interpretations of a source distro name
-    # Because some packages are ambiguous as to name/versions split
-    # e.g. "adns-python-1.1.0", "egenix-mx-commercial", etc.
-    # So, we generate each possible interepretation (e.g. "adns, python-1.1.0"
-    # "adns-python, 1.1.0", and "adns-python-1.1.0, no version").  In practice,
-    # the spurious interpretations should be ignored, because in the event
-    # there's also an "adns" package, the spurious "python-1.1.0" version will
-    # compare lower than any numeric version number, and is therefore unlikely
-    # to match a request for it.  It's still a potential problem, though, and
-    # in the long run PyPI and the distutils should go for "safe" names and
-    # versions in distribution archive names (sdist and bdist).
-
-    parts = basename.split('-')
-    if not py_version:
-        for i,p in enumerate(parts[2:]):
-            if len(p)==5 and p.startswith('py2.'):
-                return # It's a bdist_dumb, not an sdist -- bail out
-
-    for p in range(1,len(parts)+1):
-        yield Distribution(
-            location, metadata, '-'.join(parts[:p]), '-'.join(parts[p:]),
-            py_version=py_version, precedence = precedence,
-            platform = platform
-        )
-
-REL = re.compile("""<([^>]*\srel\s*=\s*['"]?([^'">]+)[^>]*)>""", re.I)
-# this line is here to fix emacs' cruddy broken syntax highlighting
-
-def find_external_links(url, page):
-    """Find rel="homepage" and rel="download" links in `page`, yielding URLs"""
-
-    for match in REL.finditer(page):
-        tag, rel = match.groups()
-        rels = map(str.strip, rel.lower().split(','))
-        if 'homepage' in rels or 'download' in rels:
-            for match in HREF.finditer(tag):
-                yield urlparse.urljoin(url, htmldecode(match.group(1)))
-
-    for tag in ("<th>Home Page", "<th>Download URL"):
-        pos = page.find(tag)
-        if pos!=-1:
-            match = HREF.search(page,pos)
-            if match:
-                yield urlparse.urljoin(url, htmldecode(match.group(1)))
-
-user_agent = "Python-urllib/%s distribute/%s" % (
-    sys.version[:3], require('distribute')[0].version
-)
-
-
-class PackageIndex(Environment):
-    """A distribution index that scans web pages for download URLs"""
-
-    def __init__(self, index_url="http://pypi.python.org/simple", hosts=('*',),
-        *args, **kw
-    ):
-        Environment.__init__(self,*args,**kw)
-        self.index_url = index_url + "/"[:not index_url.endswith('/')]
-        self.scanned_urls = {}
-        self.fetched_urls = {}
-        self.package_pages = {}
-        self.allows = re.compile('|'.join(map(translate,hosts))).match
-        self.to_scan = []
-
-
-
-    def process_url(self, url, retrieve=False):
-        """Evaluate a URL as a possible download, and maybe retrieve it"""
-        if url in self.scanned_urls and not retrieve:
-            return
-        self.scanned_urls[url] = True
-        if not URL_SCHEME(url):
-            self.process_filename(url)
-            return
-        else:
-            dists = list(distros_for_url(url))
-            if dists:
-                if not self.url_ok(url):
-                    return
-                self.debug("Found link: %s", url)
-
-        if dists or not retrieve or url in self.fetched_urls:
-            map(self.add, dists)
-            return  # don't need the actual page
-
-        if not self.url_ok(url):
-            self.fetched_urls[url] = True
-            return
-
-        self.info("Reading %s", url)
-        f = self.open_url(url, "Download error on %s: %%s -- Some packages may not be found!" % url)
-        if f is None: return
-        self.fetched_urls[url] = self.fetched_urls[f.url] = True
-
-        if 'html' not in f.headers.get('content-type', '').lower():
-            f.close()   # not html, we can't process it
-            return
-
-        base = f.url     # handle redirects
-        page = f.read()
-        if not isinstance(page, str): # We are in Python 3 and got bytes. We want str.
-            if isinstance(f, urllib2.HTTPError):
-                # Errors have no charset, assume latin1:
-                charset = 'latin-1'
-            else:
-                charset = f.headers.get_param('charset') or 'latin-1'
-            page = page.decode(charset, "ignore")
-        f.close()
-        for match in HREF.finditer(page):
-            link = urlparse.urljoin(base, htmldecode(match.group(1)))
-            self.process_url(link)
-        if url.startswith(self.index_url) and getattr(f,'code',None)!=404:
-            page = self.process_index(url, page)
-
-    def process_filename(self, fn, nested=False):
-        # process filenames or directories
-        if not os.path.exists(fn):
-            self.warn("Not found: %s", fn)
-            return
-
-        if os.path.isdir(fn) and not nested:
-            path = os.path.realpath(fn)
-            for item in os.listdir(path):
-                self.process_filename(os.path.join(path,item), True)
-
-        dists = distros_for_filename(fn)
-        if dists:
-            self.debug("Found: %s", fn)
-            map(self.add, dists)
-
-    def url_ok(self, url, fatal=False):
-        s = URL_SCHEME(url)
-        if (s and s.group(1).lower()=='file') or self.allows(urlparse.urlparse(url)[1]):
-            return True
-        msg = "\nLink to % s ***BLOCKED*** by --allow-hosts\n"
-        if fatal:
-            raise DistutilsError(msg % url)
-        else:
-            self.warn(msg, url)
-
-    def scan_egg_links(self, search_path):
-        for item in search_path:
-            if os.path.isdir(item):
-                for entry in os.listdir(item):
-                    if entry.endswith('.egg-link'):
-                        self.scan_egg_link(item, entry)
-
-    def scan_egg_link(self, path, entry):
-        lines = filter(None, map(str.strip, open(os.path.join(path, entry))))
-        if len(lines)==2:
-            for dist in find_distributions(os.path.join(path, lines[0])):
-                dist.location = os.path.join(path, *lines)
-                dist.precedence = SOURCE_DIST
-                self.add(dist)
-
-    def process_index(self,url,page):
-        """Process the contents of a PyPI page"""
-        def scan(link):
-            # Process a URL to see if it's for a package page
-            if link.startswith(self.index_url):
-                parts = map(
-                    urllib2.unquote, link[len(self.index_url):].split('/')
-                )
-                if len(parts)==2 and '#' not in parts[1]:
-                    # it's a package page, sanitize and index it
-                    pkg = safe_name(parts[0])
-                    ver = safe_version(parts[1])
-                    self.package_pages.setdefault(pkg.lower(),{})[link] = True
-                    return to_filename(pkg), to_filename(ver)
-            return None, None
-
-        # process an index page into the package-page index
-        for match in HREF.finditer(page):
-            try:
-                scan( urlparse.urljoin(url, htmldecode(match.group(1))) )
-            except ValueError:
-                pass
-
-        pkg, ver = scan(url)   # ensure this page is in the page index
-        if pkg:
-            # process individual package page
-            for new_url in find_external_links(url, page):
-                # Process the found URL
-                base, frag = egg_info_for_url(new_url)
-                if base.endswith('.py') and not frag:
-                    if ver:
-                        new_url+='#egg=%s-%s' % (pkg,ver)
-                    else:
-                        self.need_version_info(url)
-                self.scan_url(new_url)
-
-            return PYPI_MD5.sub(
-                lambda m: '<a href="%s#md5=%s">%s</a>' % m.group(1,3,2), page
-            )
-        else:
-            return ""   # no sense double-scanning non-package pages
-
-
-
-    def need_version_info(self, url):
-        self.scan_all(
-            "Page at %s links to .py file(s) without version info; an index "
-            "scan is required.", url
-        )
-
-    def scan_all(self, msg=None, *args):
-        if self.index_url not in self.fetched_urls:
-            if msg: self.warn(msg,*args)
-            self.info(
-                "Scanning index of all packages (this may take a while)"
-            )
-        self.scan_url(self.index_url)
-
-    def find_packages(self, requirement):
-        self.scan_url(self.index_url + requirement.unsafe_name+'/')
-
-        if not self.package_pages.get(requirement.key):
-            # Fall back to safe version of the name
-            self.scan_url(self.index_url + requirement.project_name+'/')
-
-        if not self.package_pages.get(requirement.key):
-            # We couldn't find the target package, so search the index page too
-            self.not_found_in_index(requirement)
-
-        for url in list(self.package_pages.get(requirement.key,())):
-            # scan each page that might be related to the desired package
-            self.scan_url(url)
-
-    def obtain(self, requirement, installer=None):
-        self.prescan(); self.find_packages(requirement)
-        for dist in self[requirement.key]:
-            if dist in requirement:
-                return dist
-            self.debug("%s does not match %s", requirement, dist)
-        return super(PackageIndex, self).obtain(requirement,installer)
-
-
-
-
-
-    def check_md5(self, cs, info, filename, tfp):
-        if re.match('md5=[0-9a-f]{32}$', info):
-            self.debug("Validating md5 checksum for %s", filename)
-            if cs.hexdigest()<>info[4:]:
-                tfp.close()
-                os.unlink(filename)
-                raise DistutilsError(
-                    "MD5 validation failed for "+os.path.basename(filename)+
-                    "; possible download problem?"
-                )
-
-    def add_find_links(self, urls):
-        """Add `urls` to the list that will be prescanned for searches"""
-        for url in urls:
-            if (
-                self.to_scan is None        # if we have already "gone online"
-                or not URL_SCHEME(url)      # or it's a local file/directory
-                or url.startswith('file:')
-                or list(distros_for_url(url))   # or a direct package link
-            ):
-                # then go ahead and process it now
-                self.scan_url(url)
-            else:
-                # otherwise, defer retrieval till later
-                self.to_scan.append(url)
-
-    def prescan(self):
-        """Scan urls scheduled for prescanning (e.g. --find-links)"""
-        if self.to_scan:
-            map(self.scan_url, self.to_scan)
-        self.to_scan = None     # from now on, go ahead and process immediately
-
-    def not_found_in_index(self, requirement):
-        if self[requirement.key]:   # we've seen at least one distro
-            meth, msg = self.info, "Couldn't retrieve index page for %r"
-        else:   # no distros seen for this name, might be misspelled
-            meth, msg = (self.warn,
-                "Couldn't find index page for %r (maybe misspelled?)")
-        meth(msg, requirement.unsafe_name)
-        self.scan_all()
-
-    def download(self, spec, tmpdir):
-        """Locate and/or download `spec` to `tmpdir`, returning a local path
-
-        `spec` may be a ``Requirement`` object, or a string containing a URL,
-        an existing local filename, or a project/version requirement spec
-        (i.e. the string form of a ``Requirement`` object).  If it is the URL
-        of a .py file with an unambiguous ``#egg=name-version`` tag (i.e., one
-        that escapes ``-`` as ``_`` throughout), a trivial ``setup.py`` is
-        automatically created alongside the downloaded file.
-
-        If `spec` is a ``Requirement`` object or a string containing a
-        project/version requirement spec, this method returns the location of
-        a matching distribution (possibly after downloading it to `tmpdir`).
-        If `spec` is a locally existing file or directory name, it is simply
-        returned unchanged.  If `spec` is a URL, it is downloaded to a subpath
-        of `tmpdir`, and the local filename is returned.  Various errors may be
-        raised if a problem occurs during downloading.
-        """
-        if not isinstance(spec,Requirement):
-            scheme = URL_SCHEME(spec)
-            if scheme:
-                # It's a url, download it to tmpdir
-                found = self._download_url(scheme.group(1), spec, tmpdir)
-                base, fragment = egg_info_for_url(spec)
-                if base.endswith('.py'):
-                    found = self.gen_setup(found,fragment,tmpdir)
-                return found
-            elif os.path.exists(spec):
-                # Existing file or directory, just return it
-                return spec
-            else:
-                try:
-                    spec = Requirement.parse(spec)
-                except ValueError:
-                    raise DistutilsError(
-                        "Not a URL, existing file, or requirement spec: %r" %
-                        (spec,)
-                    )
-        return getattr(self.fetch_distribution(spec, tmpdir),'location',None)
-
-
-    def fetch_distribution(self,
-        requirement, tmpdir, force_scan=False, source=False, develop_ok=False,
-        local_index=None
-    ):
-        """Obtain a distribution suitable for fulfilling `requirement`
-
-        `requirement` must be a ``pkg_resources.Requirement`` instance.
-        If necessary, or if the `force_scan` flag is set, the requirement is
-        searched for in the (online) package index as well as the locally
-        installed packages.  If a distribution matching `requirement` is found,
-        the returned distribution's ``location`` is the value you would have
-        gotten from calling the ``download()`` method with the matching
-        distribution's URL or filename.  If no matching distribution is found,
-        ``None`` is returned.
-
-        If the `source` flag is set, only source distributions and source
-        checkout links will be considered.  Unless the `develop_ok` flag is
-        set, development and system eggs (i.e., those using the ``.egg-info``
-        format) will be ignored.
-        """
-
-        # process a Requirement
-        self.info("Searching for %s", requirement)
-        skipped = {}
-        dist = None
-
-        def find(req, env=None):
-            if env is None:
-                env = self
-            # Find a matching distribution; may be called more than once
-
-            for dist in env[req.key]:
-
-                if dist.precedence==DEVELOP_DIST and not develop_ok:
-                    if dist not in skipped:
-                        self.warn("Skipping development or system egg: %s",dist)
-                        skipped[dist] = 1
-                    continue
-
-                if dist in req and (dist.precedence<=SOURCE_DIST or not source):
-                    self.info("Best match: %s", dist)
-                    return dist.clone(
-                        location=self.download(dist.location, tmpdir)
-                    )
-
-        if force_scan:
-            self.prescan()
-            self.find_packages(requirement)
-            dist = find(requirement)
-
-        if local_index is not None:
-            dist = dist or find(requirement, local_index)
-
-        if dist is None and self.to_scan is not None:
-            self.prescan()
-            dist = find(requirement)
-
-        if dist is None and not force_scan:
-            self.find_packages(requirement)
-            dist = find(requirement)
-
-        if dist is None:
-            self.warn(
-                "No local packages or download links found for %s%s",
-                (source and "a source distribution of " or ""),
-                requirement,
-            )
-        return dist
-
-    def fetch(self, requirement, tmpdir, force_scan=False, source=False):
-        """Obtain a file suitable for fulfilling `requirement`
-
-        DEPRECATED; use the ``fetch_distribution()`` method now instead.  For
-        backward compatibility, this routine is identical but returns the
-        ``location`` of the downloaded distribution instead of a distribution
-        object.
-        """
-        dist = self.fetch_distribution(requirement,tmpdir,force_scan,source)
-        if dist is not None:
-            return dist.location
-        return None
-
-
-
-
-
-
-
-
-    def gen_setup(self, filename, fragment, tmpdir):
-        match = EGG_FRAGMENT.match(fragment)
-        dists = match and [d for d in
-            interpret_distro_name(filename, match.group(1), None) if d.version
-        ] or []
-
-        if len(dists)==1:   # unambiguous ``#egg`` fragment
-            basename = os.path.basename(filename)
-
-            # Make sure the file has been downloaded to the temp dir.
-            if os.path.dirname(filename) != tmpdir:
-                dst = os.path.join(tmpdir, basename)
-                from setuptools.command.easy_install import samefile
-                if not samefile(filename, dst):
-                    shutil.copy2(filename, dst)
-                    filename=dst
-
-            file = open(os.path.join(tmpdir, 'setup.py'), 'w')
-            file.write(
-                "from setuptools import setup\n"
-                "setup(name=%r, version=%r, py_modules=[%r])\n"
-                % (
-                    dists[0].project_name, dists[0].version,
-                    os.path.splitext(basename)[0]
-                )
-            )
-            file.close()
-            return filename
-
-        elif match:
-            raise DistutilsError(
-                "Can't unambiguously interpret project/version identifier %r; "
-                "any dashes in the name or version should be escaped using "
-                "underscores. %r" % (fragment,dists)
-            )
-        else:
-            raise DistutilsError(
-                "Can't process plain .py files without an '#egg=name-version'"
-                " suffix to enable automatic setup script generation."
-            )
-
-    dl_blocksize = 8192
-    def _download_to(self, url, filename):
-        self.info("Downloading %s", url)
-        # Download the file
-        fp, tfp, info = None, None, None
-        try:
-            if '#' in url:
-                url, info = url.split('#', 1)
-            fp = self.open_url(url)
-            if isinstance(fp, urllib2.HTTPError):
-                raise DistutilsError(
-                    "Can't download %s: %s %s" % (url, fp.code,fp.msg)
-                )
-            cs = md5()
-            headers = fp.info()
-            blocknum = 0
-            bs = self.dl_blocksize
-            size = -1
-            if "content-length" in headers:
-                # Some servers return multiple Content-Length headers :(
-                content_length = headers.get("Content-Length")
-                size = int(content_length)
-                self.reporthook(url, filename, blocknum, bs, size)
-            tfp = open(filename,'wb')
-            while True:
-                block = fp.read(bs)
-                if block:
-                    cs.update(block)
-                    tfp.write(block)
-                    blocknum += 1
-                    self.reporthook(url, filename, blocknum, bs, size)
-                else:
-                    break
-            if info: self.check_md5(cs, info, filename, tfp)
-            return headers
-        finally:
-            if fp: fp.close()
-            if tfp: tfp.close()
-
-    def reporthook(self, url, filename, blocknum, blksize, size):
-        pass    # no-op
-
-
-    def open_url(self, url, warning=None):
-        if url.startswith('file:'):
-            return local_open(url)
-        try:
-            return open_with_auth(url)
-        except (ValueError, httplib.InvalidURL), v:
-            msg = ' '.join([str(arg) for arg in v.args])
-            if warning:
-                self.warn(warning, msg)
-            else:
-                raise DistutilsError('%s %s' % (url, msg))
-        except urllib2.HTTPError, v:
-            return v
-        except urllib2.URLError, v:
-            if warning:
-                self.warn(warning, v.reason)
-            else:
-                raise DistutilsError("Download error for %s: %s"
-                                     % (url, v.reason))
-        except httplib.BadStatusLine, v:
-            if warning:
-                self.warn(warning, v.line)
-            else:
-                raise DistutilsError('%s returned a bad status line. '
-                                     'The server might be down, %s' % \
-                                             (url, v.line))
-        except httplib.HTTPException, v:
-            if warning:
-                self.warn(warning, v)
-            else:
-                raise DistutilsError("Download error for %s: %s"
-                                     % (url, v))
-
-    def _download_url(self, scheme, url, tmpdir):
-        # Determine download filename
-        #
-        name = filter(None,urlparse.urlparse(url)[2].split('/'))
-        if name:
-            name = name[-1]
-            while '..' in name:
-                name = name.replace('..','.').replace('\\','_')
-        else:
-            name = "__downloaded__"    # default if URL has no path contents
-
-        if name.endswith('.egg.zip'):
-            name = name[:-4]    # strip the extra .zip before download
-
-        filename = os.path.join(tmpdir,name)
-
-        # Download the file
-        #
-        if scheme=='svn' or scheme.startswith('svn+'):
-            return self._download_svn(url, filename)
-        elif scheme=='git' or scheme.startswith('git+'):
-            return self._download_git(url, filename)
-        elif scheme.startswith('hg+'):
-            return self._download_hg(url, filename)
-        elif scheme=='file':
-            return urllib.url2pathname(urlparse.urlparse(url)[2])
-        else:
-            self.url_ok(url, True)   # raises error if not allowed
-            return self._attempt_download(url, filename)
-
-
-
-    def scan_url(self, url):
-        self.process_url(url, True)
-
-
-    def _attempt_download(self, url, filename):
-        headers = self._download_to(url, filename)
-        if 'html' in headers.get('content-type','').lower():
-            return self._download_html(url, headers, filename)
-        else:
-            return filename
-
-    def _download_html(self, url, headers, filename):
-        file = open(filename)
-        for line in file:
-            if line.strip():
-                # Check for a subversion index page
-                if re.search(r'<title>([^- ]+ - )?Revision \d+:', line):
-                    # it's a subversion index page:
-                    file.close()
-                    os.unlink(filename)
-                    return self._download_svn(url, filename)
-                break   # not an index page
-        file.close()
-        os.unlink(filename)
-        raise DistutilsError("Unexpected HTML page found at "+url)
-
-    def _download_svn(self, url, filename):
-        url = url.split('#',1)[0]   # remove any fragment for svn's sake
-        self.info("Doing subversion checkout from %s to %s", url, filename)
-        os.system("svn checkout -q %s %s" % (url, filename))
-        return filename
-
-    def _vcs_split_rev_from_url(self, url, pop_prefix=False):
-        scheme, netloc, path, query, frag = urlparse.urlsplit(url)
-
-        scheme = scheme.split('+', 1)[-1]
-
-        # Some fragment identification fails
-        path = path.split('#',1)[0]
-
-        rev = None
-        if '@' in path:
-            path, rev = path.rsplit('@', 1)
-
-        # Also, discard fragment
-        url = urlparse.urlunsplit((scheme, netloc, path, query, ''))
-
-        return url, rev
-
-    def _download_git(self, url, filename):
-        filename = filename.split('#',1)[0]
-        url, rev = self._vcs_split_rev_from_url(url, pop_prefix=True)
-
-        self.info("Doing git clone from %s to %s", url, filename)
-        os.system("git clone --quiet %s %s" % (url, filename))
-
-        if rev is not None:
-            self.info("Checking out %s", rev)
-            os.system("(cd %s && git checkout --quiet %s)" % (
-                filename,
-                rev,
-            ))
-
-        return filename
-
-    def _download_hg(self, url, filename):
-        filename = filename.split('#',1)[0]
-        url, rev = self._vcs_split_rev_from_url(url, pop_prefix=True)
-
-        self.info("Doing hg clone from %s to %s", url, filename)
-        os.system("hg clone --quiet %s %s" % (url, filename))
-
-        if rev is not None:
-            self.info("Updating to %s", rev)
-            os.system("(cd %s && hg up -C -r %s >&-)" % (
-                filename,
-                rev,
-            ))
-
-        return filename
-
-    def debug(self, msg, *args):
-        log.debug(msg, *args)
-
-    def info(self, msg, *args):
-        log.info(msg, *args)
-
-    def warn(self, msg, *args):
-        log.warn(msg, *args)
-
-# This pattern matches a character entity reference (a decimal numeric
-# references, a hexadecimal numeric reference, or a named reference).
-entity_sub = re.compile(r'&(#(\d+|x[\da-fA-F]+)|[\w.:-]+);?').sub
-
-def uchr(c):
-    if not isinstance(c, int):
-        return c
-    if c>255: return unichr(c)
-    return chr(c)
-
-def decode_entity(match):
-    what = match.group(1)
-    if what.startswith('#x'):
-        what = int(what[2:], 16)
-    elif what.startswith('#'):
-        what = int(what[1:])
-    else:
-        from htmlentitydefs import name2codepoint
-        what = name2codepoint.get(what, match.group(0))
-    return uchr(what)
-
-def htmldecode(text):
-    """Decode HTML entities in the given text."""
-    return entity_sub(decode_entity, text)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def socket_timeout(timeout=15):
-    def _socket_timeout(func):
-        def _socket_timeout(*args, **kwargs):
-            old_timeout = socket.getdefaulttimeout()
-            socket.setdefaulttimeout(timeout)
-            try:
-                return func(*args, **kwargs)
-            finally:
-                socket.setdefaulttimeout(old_timeout)
-        return _socket_timeout
-    return _socket_timeout
-
-def _encode_auth(auth):
-    """
-    A function compatible with Python 2.3-3.3 that will encode
-    auth from a URL suitable for an HTTP header.
-    >>> _encode_auth('username%3Apassword')
-    u'dXNlcm5hbWU6cGFzc3dvcmQ='
-    """
-    auth_s = urllib2.unquote(auth)
-    # convert to bytes
-    auth_bytes = auth_s.encode()
-    # use the legacy interface for Python 2.3 support
-    encoded_bytes = base64.encodestring(auth_bytes)
-    # convert back to a string
-    encoded = encoded_bytes.decode()
-    # strip the trailing carriage return
-    return encoded.rstrip()
-
-def open_with_auth(url):
-    """Open a urllib2 request, handling HTTP authentication"""
-
-    scheme, netloc, path, params, query, frag = urlparse.urlparse(url)
-
-    # Double scheme does not raise on Mac OS X as revealed by a
-    # failing test. We would expect "nonnumeric port". Refs #20.
-    if netloc.endswith(':'):
-        raise httplib.InvalidURL("nonnumeric port: ''")
-
-    if scheme in ('http', 'https'):
-        auth, host = urllib2.splituser(netloc)
-    else:
-        auth = None
-
-    if auth:
-        auth = "Basic " + _encode_auth(auth)
-        new_url = urlparse.urlunparse((scheme,host,path,params,query,frag))
-        request = urllib2.Request(new_url)
-        request.add_header("Authorization", auth)
-    else:
-        request = urllib2.Request(url)
-
-    request.add_header('User-Agent', user_agent)
-    fp = urllib2.urlopen(request)
-
-    if auth:
-        # Put authentication info back into request URL if same host,
-        # so that links found on the page will work
-        s2, h2, path2, param2, query2, frag2 = urlparse.urlparse(fp.url)
-        if s2==scheme and h2==host:
-            fp.url = urlparse.urlunparse((s2,netloc,path2,param2,query2,frag2))
-
-    return fp
-
-# adding a timeout to avoid freezing package_index
-open_with_auth = socket_timeout(_SOCKET_TIMEOUT)(open_with_auth)
-
-
-
-
-
-
-
-
-
-
-
-def fix_sf_url(url):
-    return url      # backward compatibility
-
-def local_open(url):
-    """Read a local path, with special support for directories"""
-    scheme, server, path, param, query, frag = urlparse.urlparse(url)
-    filename = urllib.url2pathname(path)
-    if os.path.isfile(filename):
-        return urllib2.urlopen(url)
-    elif path.endswith('/') and os.path.isdir(filename):
-        files = []
-        for f in os.listdir(filename):
-            if f=='index.html':
-                fp = open(os.path.join(filename,f),'rb')
-                body = fp.read()
-                fp.close()
-                break
-            elif os.path.isdir(os.path.join(filename,f)):
-                f+='/'
-            files.append("<a href=%r>%s</a>" % (f,f))
-        else:
-            body = ("<html><head><title>%s</title>" % url) + \
-                "</head><body>%s</body></html>" % '\n'.join(files)
-        status, message = 200, "OK"
-    else:
-        status, message, body = 404, "Path not found", "Not found"
-
-    return urllib2.HTTPError(url, status, message,
-            {'content-type':'text/html'}, cStringIO.StringIO(body))
-
-
-
-
-
-
-
-
-
-
-
-
-
-# this line is a kludge to keep the trailing blank lines for pje's editor
diff --git a/vendor/distribute-0.6.34/setuptools/sandbox.py b/vendor/distribute-0.6.34/setuptools/sandbox.py
deleted file mode 100644
index 1583b81f..00000000
--- a/vendor/distribute-0.6.34/setuptools/sandbox.py
+++ /dev/null
@@ -1,293 +0,0 @@
-import os, sys, __builtin__, tempfile, operator, pkg_resources
-if os.name == "java":
-    import org.python.modules.posix.PosixModule as _os
-else:
-    _os = sys.modules[os.name]
-try:
-    _file = file
-except NameError:
-    _file = None
-_open = open
-from distutils.errors import DistutilsError
-__all__ = [
-    "AbstractSandbox", "DirectorySandbox", "SandboxViolation", "run_setup",
-]
-def run_setup(setup_script, args):
-    """Run a distutils setup script, sandboxed in its directory"""
-    old_dir = os.getcwd()
-    save_argv = sys.argv[:]
-    save_path = sys.path[:]
-    setup_dir = os.path.abspath(os.path.dirname(setup_script))
-    temp_dir = os.path.join(setup_dir,'temp')
-    if not os.path.isdir(temp_dir): os.makedirs(temp_dir)
-    save_tmp = tempfile.tempdir
-    save_modules = sys.modules.copy()
-    pr_state = pkg_resources.__getstate__()
-    try:
-        tempfile.tempdir = temp_dir
-        os.chdir(setup_dir)
-        try:
-            sys.argv[:] = [setup_script]+list(args)
-            sys.path.insert(0, setup_dir)
-            DirectorySandbox(setup_dir).run(
-                lambda: execfile(
-                    "setup.py",
-                    {'__file__':setup_script, '__name__':'__main__'}
-                )
-            )
-        except SystemExit, v:
-            if v.args and v.args[0]:
-                raise
-            # Normal exit, just return
-    finally:
-        pkg_resources.__setstate__(pr_state)
-        sys.modules.update(save_modules)
-        # remove any modules imported within the sandbox
-        del_modules = [
-            mod_name for mod_name in sys.modules
-            if mod_name not in save_modules
-            # exclude any encodings modules. See #285
-            and not mod_name.startswith('encodings.')
-        ]
-        map(sys.modules.__delitem__, del_modules)
-        os.chdir(old_dir)
-        sys.path[:] = save_path
-        sys.argv[:] = save_argv
-        tempfile.tempdir = save_tmp
-
-class AbstractSandbox:
-    """Wrap 'os' module and 'open()' builtin for virtualizing setup scripts"""
-
-    _active = False
-
-    def __init__(self):
-        self._attrs = [
-            name for name in dir(_os)
-                if not name.startswith('_') and hasattr(self,name)
-        ]
-
-    def _copy(self, source):
-        for name in self._attrs:
-            setattr(os, name, getattr(source,name))
-
-    def run(self, func):
-        """Run 'func' under os sandboxing"""
-        try:
-            self._copy(self)
-            if _file:
-                __builtin__.file = self._file
-            __builtin__.open = self._open
-            self._active = True
-            return func()
-        finally:
-            self._active = False
-            if _file:
-                __builtin__.file = _file
-            __builtin__.open = _open
-            self._copy(_os)
-
-
-    def _mk_dual_path_wrapper(name):
-        original = getattr(_os,name)
-        def wrap(self,src,dst,*args,**kw):
-            if self._active:
-                src,dst = self._remap_pair(name,src,dst,*args,**kw)
-            return original(src,dst,*args,**kw)
-        return wrap
-
-
-    for name in ["rename", "link", "symlink"]:
-        if hasattr(_os,name): locals()[name] = _mk_dual_path_wrapper(name)
-
-
-    def _mk_single_path_wrapper(name, original=None):
-        original = original or getattr(_os,name)
-        def wrap(self,path,*args,**kw):
-            if self._active:
-                path = self._remap_input(name,path,*args,**kw)
-            return original(path,*args,**kw)
-        return wrap
-
-    if _file:
-        _file = _mk_single_path_wrapper('file', _file)
-    _open = _mk_single_path_wrapper('open', _open)
-    for name in [
-        "stat", "listdir", "chdir", "open", "chmod", "chown", "mkdir",
-        "remove", "unlink", "rmdir", "utime", "lchown", "chroot", "lstat",
-        "startfile", "mkfifo", "mknod", "pathconf", "access"
-    ]:
-        if hasattr(_os,name): locals()[name] = _mk_single_path_wrapper(name)
-
-
-    def _mk_single_with_return(name):
-        original = getattr(_os,name)
-        def wrap(self,path,*args,**kw):
-            if self._active:
-                path = self._remap_input(name,path,*args,**kw)
-                return self._remap_output(name, original(path,*args,**kw))
-            return original(path,*args,**kw)
-        return wrap
-
-    for name in ['readlink', 'tempnam']:
-        if hasattr(_os,name): locals()[name] = _mk_single_with_return(name)
-
-    def _mk_query(name):
-        original = getattr(_os,name)
-        def wrap(self,*args,**kw):
-            retval = original(*args,**kw)
-            if self._active:
-                return self._remap_output(name, retval)
-            return retval
-        return wrap
-
-    for name in ['getcwd', 'tmpnam']:
-        if hasattr(_os,name): locals()[name] = _mk_query(name)
-
-    def _validate_path(self,path):
-        """Called to remap or validate any path, whether input or output"""
-        return path
-
-    def _remap_input(self,operation,path,*args,**kw):
-        """Called for path inputs"""
-        return self._validate_path(path)
-
-    def _remap_output(self,operation,path):
-        """Called for path outputs"""
-        return self._validate_path(path)
-
-    def _remap_pair(self,operation,src,dst,*args,**kw):
-        """Called for path pairs like rename, link, and symlink operations"""
-        return (
-            self._remap_input(operation+'-from',src,*args,**kw),
-            self._remap_input(operation+'-to',dst,*args,**kw)
-        )
-
-
-if hasattr(os, 'devnull'):
-    _EXCEPTIONS = [os.devnull,]
-else:
-    _EXCEPTIONS = []
-
-try:
-    from win32com.client.gencache import GetGeneratePath
-    _EXCEPTIONS.append(GetGeneratePath())
-    del GetGeneratePath
-except ImportError:
-    # it appears pywin32 is not installed, so no need to exclude.
-    pass
-
-class DirectorySandbox(AbstractSandbox):
-    """Restrict operations to a single subdirectory - pseudo-chroot"""
-
-    write_ops = dict.fromkeys([
-        "open", "chmod", "chown", "mkdir", "remove", "unlink", "rmdir",
-        "utime", "lchown", "chroot", "mkfifo", "mknod", "tempnam",
-    ])
-
-    def __init__(self, sandbox, exceptions=_EXCEPTIONS):
-        self._sandbox = os.path.normcase(os.path.realpath(sandbox))
-        self._prefix = os.path.join(self._sandbox,'')
-        self._exceptions = [os.path.normcase(os.path.realpath(path)) for path in exceptions]
-        AbstractSandbox.__init__(self)
-
-    def _violation(self, operation, *args, **kw):
-        raise SandboxViolation(operation, args, kw)
-
-    if _file:
-        def _file(self, path, mode='r', *args, **kw):
-            if mode not in ('r', 'rt', 'rb', 'rU', 'U') and not self._ok(path):
-                self._violation("file", path, mode, *args, **kw)
-            return _file(path,mode,*args,**kw)
-
-    def _open(self, path, mode='r', *args, **kw):
-        if mode not in ('r', 'rt', 'rb', 'rU', 'U') and not self._ok(path):
-            self._violation("open", path, mode, *args, **kw)
-        return _open(path,mode,*args,**kw)
-
-    def tmpnam(self):
-        self._violation("tmpnam")
-
-    def _ok(self,path):
-        active = self._active
-        try:
-            self._active = False
-            realpath = os.path.normcase(os.path.realpath(path))
-            if (self._exempted(realpath) or realpath == self._sandbox
-                or realpath.startswith(self._prefix)):
-                return True
-        finally:
-            self._active = active
-
-    def _exempted(self, filepath):
-        exception_matches = map(filepath.startswith, self._exceptions)
-        return True in exception_matches
-
-    def _remap_input(self,operation,path,*args,**kw):
-        """Called for path inputs"""
-        if operation in self.write_ops and not self._ok(path):
-            self._violation(operation, os.path.realpath(path), *args, **kw)
-        return path
-
-    def _remap_pair(self,operation,src,dst,*args,**kw):
-        """Called for path pairs like rename, link, and symlink operations"""
-        if not self._ok(src) or not self._ok(dst):
-            self._violation(operation, src, dst, *args, **kw)
-        return (src,dst)
-
-    def open(self, file, flags, mode=0777):
-        """Called for low-level os.open()"""
-        if flags & WRITE_FLAGS and not self._ok(file):
-            self._violation("os.open", file, flags, mode)
-        return _os.open(file,flags,mode)
-
-
-WRITE_FLAGS = reduce(
-    operator.or_,
-    [getattr(_os, a, 0) for a in
-        "O_WRONLY O_RDWR O_APPEND O_CREAT O_TRUNC O_TEMPORARY".split()]
-)
-
-
-
-
-class SandboxViolation(DistutilsError):
-    """A setup script attempted to modify the filesystem outside the sandbox"""
-
-    def __str__(self):
-        return """SandboxViolation: %s%r %s
-
-The package setup script has attempted to modify files on your system
-that are not within the EasyInstall build area, and has been aborted.
-
-This package cannot be safely installed by EasyInstall, and may not
-support alternate installation locations even if you run its setup
-script by hand.  Please inform the package's author and the EasyInstall
-maintainers to find out if a fix or workaround is available.""" % self.args
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#
diff --git a/vendor/distribute-0.6.34/setuptools/script template (dev).py b/vendor/distribute-0.6.34/setuptools/script template (dev).py
deleted file mode 100644
index 6dd9dd45..00000000
--- a/vendor/distribute-0.6.34/setuptools/script template (dev).py	
+++ /dev/null
@@ -1,6 +0,0 @@
-# EASY-INSTALL-DEV-SCRIPT: %(spec)r,%(script_name)r
-__requires__ = """%(spec)r"""
-from pkg_resources import require; require("""%(spec)r""")
-del require
-__file__ = """%(dev_path)r"""
-execfile(__file__)
diff --git a/vendor/distribute-0.6.34/setuptools/script template.py b/vendor/distribute-0.6.34/setuptools/script template.py
deleted file mode 100644
index 8dd5d510..00000000
--- a/vendor/distribute-0.6.34/setuptools/script template.py	
+++ /dev/null
@@ -1,4 +0,0 @@
-# EASY-INSTALL-SCRIPT: %(spec)r,%(script_name)r
-__requires__ = """%(spec)r"""
-import pkg_resources
-pkg_resources.run_script("""%(spec)r""", """%(script_name)r""")
diff --git a/vendor/distribute-0.6.34/setuptools/tests/__init__.py b/vendor/distribute-0.6.34/setuptools/tests/__init__.py
deleted file mode 100644
index b6988a08..00000000
--- a/vendor/distribute-0.6.34/setuptools/tests/__init__.py
+++ /dev/null
@@ -1,349 +0,0 @@
-"""Tests for the 'setuptools' package"""
-import sys
-import os
-import unittest
-import doctest
-import distutils.core
-import distutils.cmd
-from distutils.errors import DistutilsOptionError, DistutilsPlatformError
-from distutils.errors import DistutilsSetupError
-from distutils.core import Extension
-from distutils.version import LooseVersion
-
-import setuptools.dist
-import setuptools.depends as dep
-from setuptools import Feature
-from setuptools.depends import Require
-
-def additional_tests():
-    import doctest, unittest
-    suite = unittest.TestSuite((
-        doctest.DocFileSuite(
-            os.path.join('tests', 'api_tests.txt'),
-            optionflags=doctest.ELLIPSIS, package='pkg_resources',
-            ),
-        ))
-    if sys.platform == 'win32':
-        suite.addTest(doctest.DocFileSuite('win_script_wrapper.txt'))
-    return suite
-
-def makeSetup(**args):
-    """Return distribution from 'setup(**args)', without executing commands"""
-
-    distutils.core._setup_stop_after = "commandline"
-
-    # Don't let system command line leak into tests!
-    args.setdefault('script_args',['install'])
-
-    try:
-        return setuptools.setup(**args)
-    finally:
-        distutils.core._setup_stop_after = None
-
-
-class DependsTests(unittest.TestCase):
-
-    def testExtractConst(self):
-        if not hasattr(dep, 'extract_constant'):
-            # skip on non-bytecode platforms
-            return
-
-        def f1():
-            global x, y, z
-            x = "test"
-            y = z
-
-        # unrecognized name
-        self.assertEqual(dep.extract_constant(f1.func_code,'q', -1), None)
-
-        # constant assigned
-        self.assertEqual(dep.extract_constant(f1.func_code,'x', -1), "test")
-
-        # expression assigned
-        self.assertEqual(dep.extract_constant(f1.func_code,'y', -1), -1)
-
-        # recognized name, not assigned
-        self.assertEqual(dep.extract_constant(f1.func_code,'z', -1), None)
-
-    def testFindModule(self):
-        self.assertRaises(ImportError, dep.find_module, 'no-such.-thing')
-        self.assertRaises(ImportError, dep.find_module, 'setuptools.non-existent')
-        f,p,i = dep.find_module('setuptools.tests')
-        f.close()
-
-    def testModuleExtract(self):
-        if not hasattr(dep, 'get_module_constant'):
-            # skip on non-bytecode platforms
-            return
-
-        from email import __version__
-        self.assertEqual(
-            dep.get_module_constant('email','__version__'), __version__
-        )
-        self.assertEqual(
-            dep.get_module_constant('sys','version'), sys.version
-        )
-        self.assertEqual(
-            dep.get_module_constant('setuptools.tests','__doc__'),__doc__
-        )
-
-    def testRequire(self):
-        if not hasattr(dep, 'extract_constant'):
-            # skip on non-bytecode platformsh
-            return
-
-        req = Require('Email','1.0.3','email')
-
-        self.assertEqual(req.name, 'Email')
-        self.assertEqual(req.module, 'email')
-        self.assertEqual(req.requested_version, '1.0.3')
-        self.assertEqual(req.attribute, '__version__')
-        self.assertEqual(req.full_name(), 'Email-1.0.3')
-
-        from email import __version__
-        self.assertEqual(req.get_version(), __version__)
-        self.assertTrue(req.version_ok('1.0.9'))
-        self.assertTrue(not req.version_ok('0.9.1'))
-        self.assertTrue(not req.version_ok('unknown'))
-
-        self.assertTrue(req.is_present())
-        self.assertTrue(req.is_current())
-
-        req = Require('Email 3000','03000','email',format=LooseVersion)
-        self.assertTrue(req.is_present())
-        self.assertTrue(not req.is_current())
-        self.assertTrue(not req.version_ok('unknown'))
-
-        req = Require('Do-what-I-mean','1.0','d-w-i-m')
-        self.assertTrue(not req.is_present())
-        self.assertTrue(not req.is_current())
-
-        req = Require('Tests', None, 'tests', homepage="http://example.com")
-        self.assertEqual(req.format, None)
-        self.assertEqual(req.attribute, None)
-        self.assertEqual(req.requested_version, None)
-        self.assertEqual(req.full_name(), 'Tests')
-        self.assertEqual(req.homepage, 'http://example.com')
-
-        paths = [os.path.dirname(p) for p in __path__]
-        self.assertTrue(req.is_present(paths))
-        self.assertTrue(req.is_current(paths))
-
-
-class DistroTests(unittest.TestCase):
-
-    def setUp(self):
-        self.e1 = Extension('bar.ext',['bar.c'])
-        self.e2 = Extension('c.y', ['y.c'])
-
-        self.dist = makeSetup(
-            packages=['a', 'a.b', 'a.b.c', 'b', 'c'],
-            py_modules=['b.d','x'],
-            ext_modules = (self.e1, self.e2),
-            package_dir = {},
-        )
-
-    def testDistroType(self):
-        self.assertTrue(isinstance(self.dist,setuptools.dist.Distribution))
-
-    def testExcludePackage(self):
-        self.dist.exclude_package('a')
-        self.assertEqual(self.dist.packages, ['b','c'])
-
-        self.dist.exclude_package('b')
-        self.assertEqual(self.dist.packages, ['c'])
-        self.assertEqual(self.dist.py_modules, ['x'])
-        self.assertEqual(self.dist.ext_modules, [self.e1, self.e2])
-
-        self.dist.exclude_package('c')
-        self.assertEqual(self.dist.packages, [])
-        self.assertEqual(self.dist.py_modules, ['x'])
-        self.assertEqual(self.dist.ext_modules, [self.e1])
-
-        # test removals from unspecified options
-        makeSetup().exclude_package('x')
-
-    def testIncludeExclude(self):
-        # remove an extension
-        self.dist.exclude(ext_modules=[self.e1])
-        self.assertEqual(self.dist.ext_modules, [self.e2])
-
-        # add it back in
-        self.dist.include(ext_modules=[self.e1])
-        self.assertEqual(self.dist.ext_modules, [self.e2, self.e1])
-
-        # should not add duplicate
-        self.dist.include(ext_modules=[self.e1])
-        self.assertEqual(self.dist.ext_modules, [self.e2, self.e1])
-
-    def testExcludePackages(self):
-        self.dist.exclude(packages=['c','b','a'])
-        self.assertEqual(self.dist.packages, [])
-        self.assertEqual(self.dist.py_modules, ['x'])
-        self.assertEqual(self.dist.ext_modules, [self.e1])
-
-    def testEmpty(self):
-        dist = makeSetup()
-        dist.include(packages=['a'], py_modules=['b'], ext_modules=[self.e2])
-        dist = makeSetup()
-        dist.exclude(packages=['a'], py_modules=['b'], ext_modules=[self.e2])
-
-    def testContents(self):
-        self.assertTrue(self.dist.has_contents_for('a'))
-        self.dist.exclude_package('a')
-        self.assertTrue(not self.dist.has_contents_for('a'))
-
-        self.assertTrue(self.dist.has_contents_for('b'))
-        self.dist.exclude_package('b')
-        self.assertTrue(not self.dist.has_contents_for('b'))
-
-        self.assertTrue(self.dist.has_contents_for('c'))
-        self.dist.exclude_package('c')
-        self.assertTrue(not self.dist.has_contents_for('c'))
-
-    def testInvalidIncludeExclude(self):
-        self.assertRaises(DistutilsSetupError,
-            self.dist.include, nonexistent_option='x'
-        )
-        self.assertRaises(DistutilsSetupError,
-            self.dist.exclude, nonexistent_option='x'
-        )
-        self.assertRaises(DistutilsSetupError,
-            self.dist.include, packages={'x':'y'}
-        )
-        self.assertRaises(DistutilsSetupError,
-            self.dist.exclude, packages={'x':'y'}
-        )
-        self.assertRaises(DistutilsSetupError,
-            self.dist.include, ext_modules={'x':'y'}
-        )
-        self.assertRaises(DistutilsSetupError,
-            self.dist.exclude, ext_modules={'x':'y'}
-        )
-
-        self.assertRaises(DistutilsSetupError,
-            self.dist.include, package_dir=['q']
-        )
-        self.assertRaises(DistutilsSetupError,
-            self.dist.exclude, package_dir=['q']
-        )
-
-
-class FeatureTests(unittest.TestCase):
-
-    def setUp(self):
-        self.req = Require('Distutils','1.0.3','distutils')
-        self.dist = makeSetup(
-            features={
-                'foo': Feature("foo",standard=True,require_features=['baz',self.req]),
-                'bar': Feature("bar",  standard=True, packages=['pkg.bar'],
-                               py_modules=['bar_et'], remove=['bar.ext'],
-                       ),
-                'baz': Feature(
-                        "baz", optional=False, packages=['pkg.baz'],
-                        scripts = ['scripts/baz_it'],
-                        libraries=[('libfoo','foo/foofoo.c')]
-                       ),
-                'dwim': Feature("DWIM", available=False, remove='bazish'),
-            },
-            script_args=['--without-bar', 'install'],
-            packages = ['pkg.bar', 'pkg.foo'],
-            py_modules = ['bar_et', 'bazish'],
-            ext_modules = [Extension('bar.ext',['bar.c'])]
-        )
-
-    def testDefaults(self):
-        self.assertTrue(not
-            Feature(
-                "test",standard=True,remove='x',available=False
-            ).include_by_default()
-        )
-        self.assertTrue(
-            Feature("test",standard=True,remove='x').include_by_default()
-        )
-        # Feature must have either kwargs, removes, or require_features
-        self.assertRaises(DistutilsSetupError, Feature, "test")
-
-    def testAvailability(self):
-        self.assertRaises(
-            DistutilsPlatformError,
-            self.dist.features['dwim'].include_in, self.dist
-        )
-
-    def testFeatureOptions(self):
-        dist = self.dist
-        self.assertTrue(
-            ('with-dwim',None,'include DWIM') in dist.feature_options
-        )
-        self.assertTrue(
-            ('without-dwim',None,'exclude DWIM (default)') in dist.feature_options
-        )
-        self.assertTrue(
-            ('with-bar',None,'include bar (default)') in dist.feature_options
-        )
-        self.assertTrue(
-            ('without-bar',None,'exclude bar') in dist.feature_options
-        )
-        self.assertEqual(dist.feature_negopt['without-foo'],'with-foo')
-        self.assertEqual(dist.feature_negopt['without-bar'],'with-bar')
-        self.assertEqual(dist.feature_negopt['without-dwim'],'with-dwim')
-        self.assertTrue(not 'without-baz' in dist.feature_negopt)
-
-    def testUseFeatures(self):
-        dist = self.dist
-        self.assertEqual(dist.with_foo,1)
-        self.assertEqual(dist.with_bar,0)
-        self.assertEqual(dist.with_baz,1)
-        self.assertTrue(not 'bar_et' in dist.py_modules)
-        self.assertTrue(not 'pkg.bar' in dist.packages)
-        self.assertTrue('pkg.baz' in dist.packages)
-        self.assertTrue('scripts/baz_it' in dist.scripts)
-        self.assertTrue(('libfoo','foo/foofoo.c') in dist.libraries)
-        self.assertEqual(dist.ext_modules,[])
-        self.assertEqual(dist.require_features, [self.req])
-
-        # If we ask for bar, it should fail because we explicitly disabled
-        # it on the command line
-        self.assertRaises(DistutilsOptionError, dist.include_feature, 'bar')
-
-    def testFeatureWithInvalidRemove(self):
-        self.assertRaises(
-            SystemExit, makeSetup, features = {'x':Feature('x', remove='y')}
-        )
-
-class TestCommandTests(unittest.TestCase):
-
-    def testTestIsCommand(self):
-        test_cmd = makeSetup().get_command_obj('test')
-        self.assertTrue(isinstance(test_cmd, distutils.cmd.Command))
-
-    def testLongOptSuiteWNoDefault(self):
-        ts1 = makeSetup(script_args=['test','--test-suite=foo.tests.suite'])
-        ts1 = ts1.get_command_obj('test')
-        ts1.ensure_finalized()
-        self.assertEqual(ts1.test_suite, 'foo.tests.suite')
-
-    def testDefaultSuite(self):
-        ts2 = makeSetup(test_suite='bar.tests.suite').get_command_obj('test')
-        ts2.ensure_finalized()
-        self.assertEqual(ts2.test_suite, 'bar.tests.suite')
-
-    def testDefaultWModuleOnCmdLine(self):
-        ts3 = makeSetup(
-            test_suite='bar.tests',
-            script_args=['test','-m','foo.tests']
-        ).get_command_obj('test')
-        ts3.ensure_finalized()
-        self.assertEqual(ts3.test_module, 'foo.tests')
-        self.assertEqual(ts3.test_suite,  'foo.tests.test_suite')
-
-    def testConflictingOptions(self):
-        ts4 = makeSetup(
-            script_args=['test','-m','bar.tests', '-s','foo.tests.suite']
-        ).get_command_obj('test')
-        self.assertRaises(DistutilsOptionError, ts4.ensure_finalized)
-
-    def testNoSuite(self):
-        ts5 = makeSetup().get_command_obj('test')
-        ts5.ensure_finalized()
-        self.assertEqual(ts5.test_suite, None)
diff --git a/vendor/distribute-0.6.34/setuptools/tests/doctest.py b/vendor/distribute-0.6.34/setuptools/tests/doctest.py
deleted file mode 100644
index cc1e06c3..00000000
--- a/vendor/distribute-0.6.34/setuptools/tests/doctest.py
+++ /dev/null
@@ -1,2683 +0,0 @@
-# Module doctest.
-# Released to the public domain 16-Jan-2001, by Tim Peters (tim@python.org).
-# Major enhancements and refactoring by:
-#     Jim Fulton
-#     Edward Loper
-
-# Provided as-is; use at your own risk; no warranty; no promises; enjoy!
-
-try:
-    basestring
-except NameError:
-    basestring = str,unicode
-
-try:
-    enumerate
-except NameError:
-    def enumerate(seq):
-        return zip(range(len(seq)),seq)
-
-r"""Module doctest -- a framework for running examples in docstrings.
-
-In simplest use, end each module M to be tested with:
-
-def _test():
-    import doctest
-    doctest.testmod()
-
-if __name__ == "__main__":
-    _test()
-
-Then running the module as a script will cause the examples in the
-docstrings to get executed and verified:
-
-python M.py
-
-This won't display anything unless an example fails, in which case the
-failing example(s) and the cause(s) of the failure(s) are printed to stdout
-(why not stderr? because stderr is a lame hack <0.2 wink>), and the final
-line of output is "Test failed.".
-
-Run it with the -v switch instead:
-
-python M.py -v
-
-and a detailed report of all examples tried is printed to stdout, along
-with assorted summaries at the end.
-
-You can force verbose mode by passing "verbose=True" to testmod, or prohibit
-it by passing "verbose=False".  In either of those cases, sys.argv is not
-examined by testmod.
-
-There are a variety of other ways to run doctests, including integration
-with the unittest framework, and support for running non-Python text
-files containing doctests.  There are also many ways to override parts
-of doctest's default behaviors.  See the Library Reference Manual for
-details.
-"""
-
-__docformat__ = 'reStructuredText en'
-
-__all__ = [
-    # 0, Option Flags
-    'register_optionflag',
-    'DONT_ACCEPT_TRUE_FOR_1',
-    'DONT_ACCEPT_BLANKLINE',
-    'NORMALIZE_WHITESPACE',
-    'ELLIPSIS',
-    'IGNORE_EXCEPTION_DETAIL',
-    'COMPARISON_FLAGS',
-    'REPORT_UDIFF',
-    'REPORT_CDIFF',
-    'REPORT_NDIFF',
-    'REPORT_ONLY_FIRST_FAILURE',
-    'REPORTING_FLAGS',
-    # 1. Utility Functions
-    'is_private',
-    # 2. Example & DocTest
-    'Example',
-    'DocTest',
-    # 3. Doctest Parser
-    'DocTestParser',
-    # 4. Doctest Finder
-    'DocTestFinder',
-    # 5. Doctest Runner
-    'DocTestRunner',
-    'OutputChecker',
-    'DocTestFailure',
-    'UnexpectedException',
-    'DebugRunner',
-    # 6. Test Functions
-    'testmod',
-    'testfile',
-    'run_docstring_examples',
-    # 7. Tester
-    'Tester',
-    # 8. Unittest Support
-    'DocTestSuite',
-    'DocFileSuite',
-    'set_unittest_reportflags',
-    # 9. Debugging Support
-    'script_from_examples',
-    'testsource',
-    'debug_src',
-    'debug',
-]
-
-import __future__
-
-import sys, traceback, inspect, linecache, os, re, types
-import unittest, difflib, pdb, tempfile
-import warnings
-from StringIO import StringIO
-
-# Don't whine about the deprecated is_private function in this
-# module's tests.
-warnings.filterwarnings("ignore", "is_private", DeprecationWarning,
-                        __name__, 0)
-
-# There are 4 basic classes:
-#  - Example: a <source, want> pair, plus an intra-docstring line number.
-#  - DocTest: a collection of examples, parsed from a docstring, plus
-#    info about where the docstring came from (name, filename, lineno).
-#  - DocTestFinder: extracts DocTests from a given object's docstring and
-#    its contained objects' docstrings.
-#  - DocTestRunner: runs DocTest cases, and accumulates statistics.
-#
-# So the basic picture is:
-#
-#                             list of:
-# +------+                   +---------+                   +-------+
-# |object| --DocTestFinder-> | DocTest | --DocTestRunner-> |results|
-# +------+                   +---------+                   +-------+
-#                            | Example |
-#                            |   ...   |
-#                            | Example |
-#                            +---------+
-
-# Option constants.
-
-OPTIONFLAGS_BY_NAME = {}
-def register_optionflag(name):
-    flag = 1 << len(OPTIONFLAGS_BY_NAME)
-    OPTIONFLAGS_BY_NAME[name] = flag
-    return flag
-
-DONT_ACCEPT_TRUE_FOR_1 = register_optionflag('DONT_ACCEPT_TRUE_FOR_1')
-DONT_ACCEPT_BLANKLINE = register_optionflag('DONT_ACCEPT_BLANKLINE')
-NORMALIZE_WHITESPACE = register_optionflag('NORMALIZE_WHITESPACE')
-ELLIPSIS = register_optionflag('ELLIPSIS')
-IGNORE_EXCEPTION_DETAIL = register_optionflag('IGNORE_EXCEPTION_DETAIL')
-
-COMPARISON_FLAGS = (DONT_ACCEPT_TRUE_FOR_1 |
-                    DONT_ACCEPT_BLANKLINE |
-                    NORMALIZE_WHITESPACE |
-                    ELLIPSIS |
-                    IGNORE_EXCEPTION_DETAIL)
-
-REPORT_UDIFF = register_optionflag('REPORT_UDIFF')
-REPORT_CDIFF = register_optionflag('REPORT_CDIFF')
-REPORT_NDIFF = register_optionflag('REPORT_NDIFF')
-REPORT_ONLY_FIRST_FAILURE = register_optionflag('REPORT_ONLY_FIRST_FAILURE')
-
-REPORTING_FLAGS = (REPORT_UDIFF |
-                   REPORT_CDIFF |
-                   REPORT_NDIFF |
-                   REPORT_ONLY_FIRST_FAILURE)
-
-# Special string markers for use in `want` strings:
-BLANKLINE_MARKER = '<BLANKLINE>'
-ELLIPSIS_MARKER = '...'
-
-######################################################################
-## Table of Contents
-######################################################################
-#  1. Utility Functions
-#  2. Example & DocTest -- store test cases
-#  3. DocTest Parser -- extracts examples from strings
-#  4. DocTest Finder -- extracts test cases from objects
-#  5. DocTest Runner -- runs test cases
-#  6. Test Functions -- convenient wrappers for testing
-#  7. Tester Class -- for backwards compatibility
-#  8. Unittest Support
-#  9. Debugging Support
-# 10. Example Usage
-
-######################################################################
-## 1. Utility Functions
-######################################################################
-
-def is_private(prefix, base):
-    """prefix, base -> true iff name prefix + "." + base is "private".
-
-    Prefix may be an empty string, and base does not contain a period.
-    Prefix is ignored (although functions you write conforming to this
-    protocol may make use of it).
-    Return true iff base begins with an (at least one) underscore, but
-    does not both begin and end with (at least) two underscores.
-
-    >>> is_private("a.b", "my_func")
-    False
-    >>> is_private("____", "_my_func")
-    True
-    >>> is_private("someclass", "__init__")
-    False
-    >>> is_private("sometypo", "__init_")
-    True
-    >>> is_private("x.y.z", "_")
-    True
-    >>> is_private("_x.y.z", "__")
-    False
-    >>> is_private("", "")  # senseless but consistent
-    False
-    """
-    warnings.warn("is_private is deprecated; it wasn't useful; "
-                  "examine DocTestFinder.find() lists instead",
-                  DeprecationWarning, stacklevel=2)
-    return base[:1] == "_" and not base[:2] == "__" == base[-2:]
-
-def _extract_future_flags(globs):
-    """
-    Return the compiler-flags associated with the future features that
-    have been imported into the given namespace (globs).
-    """
-    flags = 0
-    for fname in __future__.all_feature_names:
-        feature = globs.get(fname, None)
-        if feature is getattr(__future__, fname):
-            flags |= feature.compiler_flag
-    return flags
-
-def _normalize_module(module, depth=2):
-    """
-    Return the module specified by `module`.  In particular:
-      - If `module` is a module, then return module.
-      - If `module` is a string, then import and return the
-        module with that name.
-      - If `module` is None, then return the calling module.
-        The calling module is assumed to be the module of
-        the stack frame at the given depth in the call stack.
-    """
-    if inspect.ismodule(module):
-        return module
-    elif isinstance(module, (str, unicode)):
-        return __import__(module, globals(), locals(), ["*"])
-    elif module is None:
-        return sys.modules[sys._getframe(depth).f_globals['__name__']]
-    else:
-        raise TypeError("Expected a module, string, or None")
-
-def _indent(s, indent=4):
-    """
-    Add the given number of space characters to the beginning every
-    non-blank line in `s`, and return the result.
-    """
-    # This regexp matches the start of non-blank lines:
-    return re.sub('(?m)^(?!$)', indent*' ', s)
-
-def _exception_traceback(exc_info):
-    """
-    Return a string containing a traceback message for the given
-    exc_info tuple (as returned by sys.exc_info()).
-    """
-    # Get a traceback message.
-    excout = StringIO()
-    exc_type, exc_val, exc_tb = exc_info
-    traceback.print_exception(exc_type, exc_val, exc_tb, file=excout)
-    return excout.getvalue()
-
-# Override some StringIO methods.
-class _SpoofOut(StringIO):
-    def getvalue(self):
-        result = StringIO.getvalue(self)
-        # If anything at all was written, make sure there's a trailing
-        # newline.  There's no way for the expected output to indicate
-        # that a trailing newline is missing.
-        if result and not result.endswith("\n"):
-            result += "\n"
-        # Prevent softspace from screwing up the next test case, in
-        # case they used print with a trailing comma in an example.
-        if hasattr(self, "softspace"):
-            del self.softspace
-        return result
-
-    def truncate(self,   size=None):
-        StringIO.truncate(self, size)
-        if hasattr(self, "softspace"):
-            del self.softspace
-
-# Worst-case linear-time ellipsis matching.
-def _ellipsis_match(want, got):
-    """
-    Essentially the only subtle case:
-    >>> _ellipsis_match('aa...aa', 'aaa')
-    False
-    """
-    if want.find(ELLIPSIS_MARKER)==-1:
-        return want == got
-
-    # Find "the real" strings.
-    ws = want.split(ELLIPSIS_MARKER)
-    assert len(ws) >= 2
-
-    # Deal with exact matches possibly needed at one or both ends.
-    startpos, endpos = 0, len(got)
-    w = ws[0]
-    if w:   # starts with exact match
-        if got.startswith(w):
-            startpos = len(w)
-            del ws[0]
-        else:
-            return False
-    w = ws[-1]
-    if w:   # ends with exact match
-        if got.endswith(w):
-            endpos -= len(w)
-            del ws[-1]
-        else:
-            return False
-
-    if startpos > endpos:
-        # Exact end matches required more characters than we have, as in
-        # _ellipsis_match('aa...aa', 'aaa')
-        return False
-
-    # For the rest, we only need to find the leftmost non-overlapping
-    # match for each piece.  If there's no overall match that way alone,
-    # there's no overall match period.
-    for w in ws:
-        # w may be '' at times, if there are consecutive ellipses, or
-        # due to an ellipsis at the start or end of `want`.  That's OK.
-        # Search for an empty string succeeds, and doesn't change startpos.
-        startpos = got.find(w, startpos, endpos)
-        if startpos < 0:
-            return False
-        startpos += len(w)
-
-    return True
-
-def _comment_line(line):
-    "Return a commented form of the given line"
-    line = line.rstrip()
-    if line:
-        return '# '+line
-    else:
-        return '#'
-
-class _OutputRedirectingPdb(pdb.Pdb):
-    """
-    A specialized version of the python debugger that redirects stdout
-    to a given stream when interacting with the user.  Stdout is *not*
-    redirected when traced code is executed.
-    """
-    def __init__(self, out):
-        self.__out = out
-        pdb.Pdb.__init__(self)
-
-    def trace_dispatch(self, *args):
-        # Redirect stdout to the given stream.
-        save_stdout = sys.stdout
-        sys.stdout = self.__out
-        # Call Pdb's trace dispatch method.
-        try:
-            return pdb.Pdb.trace_dispatch(self, *args)
-        finally:
-            sys.stdout = save_stdout
-
-# [XX] Normalize with respect to os.path.pardir?
-def _module_relative_path(module, path):
-    if not inspect.ismodule(module):
-        raise TypeError, 'Expected a module: %r' % module
-    if path.startswith('/'):
-        raise ValueError, 'Module-relative files may not have absolute paths'
-
-    # Find the base directory for the path.
-    if hasattr(module, '__file__'):
-        # A normal module/package
-        basedir = os.path.split(module.__file__)[0]
-    elif module.__name__ == '__main__':
-        # An interactive session.
-        if len(sys.argv)>0 and sys.argv[0] != '':
-            basedir = os.path.split(sys.argv[0])[0]
-        else:
-            basedir = os.curdir
-    else:
-        # A module w/o __file__ (this includes builtins)
-        raise ValueError("Can't resolve paths relative to the module " +
-                         module + " (it has no __file__)")
-
-    # Combine the base directory and the path.
-    return os.path.join(basedir, *(path.split('/')))
-
-######################################################################
-## 2. Example & DocTest
-######################################################################
-## - An "example" is a <source, want> pair, where "source" is a
-##   fragment of source code, and "want" is the expected output for
-##   "source."  The Example class also includes information about
-##   where the example was extracted from.
-##
-## - A "doctest" is a collection of examples, typically extracted from
-##   a string (such as an object's docstring).  The DocTest class also
-##   includes information about where the string was extracted from.
-
-class Example:
-    """
-    A single doctest example, consisting of source code and expected
-    output.  `Example` defines the following attributes:
-
-      - source: A single Python statement, always ending with a newline.
-        The constructor adds a newline if needed.
-
-      - want: The expected output from running the source code (either
-        from stdout, or a traceback in case of exception).  `want` ends
-        with a newline unless it's empty, in which case it's an empty
-        string.  The constructor adds a newline if needed.
-
-      - exc_msg: The exception message generated by the example, if
-        the example is expected to generate an exception; or `None` if
-        it is not expected to generate an exception.  This exception
-        message is compared against the return value of
-        `traceback.format_exception_only()`.  `exc_msg` ends with a
-        newline unless it's `None`.  The constructor adds a newline
-        if needed.
-
-      - lineno: The line number within the DocTest string containing
-        this Example where the Example begins.  This line number is
-        zero-based, with respect to the beginning of the DocTest.
-
-      - indent: The example's indentation in the DocTest string.
-        I.e., the number of space characters that preceed the
-        example's first prompt.
-
-      - options: A dictionary mapping from option flags to True or
-        False, which is used to override default options for this
-        example.  Any option flags not contained in this dictionary
-        are left at their default value (as specified by the
-        DocTestRunner's optionflags).  By default, no options are set.
-    """
-    def __init__(self, source, want, exc_msg=None, lineno=0, indent=0,
-                 options=None):
-        # Normalize inputs.
-        if not source.endswith('\n'):
-            source += '\n'
-        if want and not want.endswith('\n'):
-            want += '\n'
-        if exc_msg is not None and not exc_msg.endswith('\n'):
-            exc_msg += '\n'
-        # Store properties.
-        self.source = source
-        self.want = want
-        self.lineno = lineno
-        self.indent = indent
-        if options is None: options = {}
-        self.options = options
-        self.exc_msg = exc_msg
-
-class DocTest:
-    """
-    A collection of doctest examples that should be run in a single
-    namespace.  Each `DocTest` defines the following attributes:
-
-      - examples: the list of examples.
-
-      - globs: The namespace (aka globals) that the examples should
-        be run in.
-
-      - name: A name identifying the DocTest (typically, the name of
-        the object whose docstring this DocTest was extracted from).
-
-      - filename: The name of the file that this DocTest was extracted
-        from, or `None` if the filename is unknown.
-
-      - lineno: The line number within filename where this DocTest
-        begins, or `None` if the line number is unavailable.  This
-        line number is zero-based, with respect to the beginning of
-        the file.
-
-      - docstring: The string that the examples were extracted from,
-        or `None` if the string is unavailable.
-    """
-    def __init__(self, examples, globs, name, filename, lineno, docstring):
-        """
-        Create a new DocTest containing the given examples.  The
-        DocTest's globals are initialized with a copy of `globs`.
-        """
-        assert not isinstance(examples, basestring), \
-               "DocTest no longer accepts str; use DocTestParser instead"
-        self.examples = examples
-        self.docstring = docstring
-        self.globs = globs.copy()
-        self.name = name
-        self.filename = filename
-        self.lineno = lineno
-
-    def __repr__(self):
-        if len(self.examples) == 0:
-            examples = 'no examples'
-        elif len(self.examples) == 1:
-            examples = '1 example'
-        else:
-            examples = '%d examples' % len(self.examples)
-        return ('<DocTest %s from %s:%s (%s)>' %
-                (self.name, self.filename, self.lineno, examples))
-
-
-    # This lets us sort tests by name:
-    def __cmp__(self, other):
-        if not isinstance(other, DocTest):
-            return -1
-        return cmp((self.name, self.filename, self.lineno, id(self)),
-                   (other.name, other.filename, other.lineno, id(other)))
-
-######################################################################
-## 3. DocTestParser
-######################################################################
-
-class DocTestParser:
-    """
-    A class used to parse strings containing doctest examples.
-    """
-    # This regular expression is used to find doctest examples in a
-    # string.  It defines three groups: `source` is the source code
-    # (including leading indentation and prompts); `indent` is the
-    # indentation of the first (PS1) line of the source code; and
-    # `want` is the expected output (including leading indentation).
-    _EXAMPLE_RE = re.compile(r'''
-        # Source consists of a PS1 line followed by zero or more PS2 lines.
-        (?P<source>
-            (?:^(?P<indent> [ ]*) >>>    .*)    # PS1 line
-            (?:\n           [ ]*  \.\.\. .*)*)  # PS2 lines
-        \n?
-        # Want consists of any non-blank lines that do not start with PS1.
-        (?P<want> (?:(?![ ]*$)    # Not a blank line
-                     (?![ ]*>>>)  # Not a line starting with PS1
-                     .*$\n?       # But any other line
-                  )*)
-        ''', re.MULTILINE | re.VERBOSE)
-
-    # A regular expression for handling `want` strings that contain
-    # expected exceptions.  It divides `want` into three pieces:
-    #    - the traceback header line (`hdr`)
-    #    - the traceback stack (`stack`)
-    #    - the exception message (`msg`), as generated by
-    #      traceback.format_exception_only()
-    # `msg` may have multiple lines.  We assume/require that the
-    # exception message is the first non-indented line starting with a word
-    # character following the traceback header line.
-    _EXCEPTION_RE = re.compile(r"""
-        # Grab the traceback header.  Different versions of Python have
-        # said different things on the first traceback line.
-        ^(?P<hdr> Traceback\ \(
-            (?: most\ recent\ call\ last
-            |   innermost\ last
-            ) \) :
-        )
-        \s* $                # toss trailing whitespace on the header.
-        (?P<stack> .*?)      # don't blink: absorb stuff until...
-        ^ (?P<msg> \w+ .*)   #     a line *starts* with alphanum.
-        """, re.VERBOSE | re.MULTILINE | re.DOTALL)
-
-    # A callable returning a true value iff its argument is a blank line
-    # or contains a single comment.
-    _IS_BLANK_OR_COMMENT = re.compile(r'^[ ]*(#.*)?$').match
-
-    def parse(self, string, name='<string>'):
-        """
-        Divide the given string into examples and intervening text,
-        and return them as a list of alternating Examples and strings.
-        Line numbers for the Examples are 0-based.  The optional
-        argument `name` is a name identifying this string, and is only
-        used for error messages.
-        """
-        string = string.expandtabs()
-        # If all lines begin with the same indentation, then strip it.
-        min_indent = self._min_indent(string)
-        if min_indent > 0:
-            string = '\n'.join([l[min_indent:] for l in string.split('\n')])
-
-        output = []
-        charno, lineno = 0, 0
-        # Find all doctest examples in the string:
-        for m in self._EXAMPLE_RE.finditer(string):
-            # Add the pre-example text to `output`.
-            output.append(string[charno:m.start()])
-            # Update lineno (lines before this example)
-            lineno += string.count('\n', charno, m.start())
-            # Extract info from the regexp match.
-            (source, options, want, exc_msg) = \
-                     self._parse_example(m, name, lineno)
-            # Create an Example, and add it to the list.
-            if not self._IS_BLANK_OR_COMMENT(source):
-                output.append( Example(source, want, exc_msg,
-                                    lineno=lineno,
-                                    indent=min_indent+len(m.group('indent')),
-                                    options=options) )
-            # Update lineno (lines inside this example)
-            lineno += string.count('\n', m.start(), m.end())
-            # Update charno.
-            charno = m.end()
-        # Add any remaining post-example text to `output`.
-        output.append(string[charno:])
-        return output
-
-    def get_doctest(self, string, globs, name, filename, lineno):
-        """
-        Extract all doctest examples from the given string, and
-        collect them into a `DocTest` object.
-
-        `globs`, `name`, `filename`, and `lineno` are attributes for
-        the new `DocTest` object.  See the documentation for `DocTest`
-        for more information.
-        """
-        return DocTest(self.get_examples(string, name), globs,
-                       name, filename, lineno, string)
-
-    def get_examples(self, string, name='<string>'):
-        """
-        Extract all doctest examples from the given string, and return
-        them as a list of `Example` objects.  Line numbers are
-        0-based, because it's most common in doctests that nothing
-        interesting appears on the same line as opening triple-quote,
-        and so the first interesting line is called \"line 1\" then.
-
-        The optional argument `name` is a name identifying this
-        string, and is only used for error messages.
-        """
-        return [x for x in self.parse(string, name)
-                if isinstance(x, Example)]
-
-    def _parse_example(self, m, name, lineno):
-        """
-        Given a regular expression match from `_EXAMPLE_RE` (`m`),
-        return a pair `(source, want)`, where `source` is the matched
-        example's source code (with prompts and indentation stripped);
-        and `want` is the example's expected output (with indentation
-        stripped).
-
-        `name` is the string's name, and `lineno` is the line number
-        where the example starts; both are used for error messages.
-        """
-        # Get the example's indentation level.
-        indent = len(m.group('indent'))
-
-        # Divide source into lines; check that they're properly
-        # indented; and then strip their indentation & prompts.
-        source_lines = m.group('source').split('\n')
-        self._check_prompt_blank(source_lines, indent, name, lineno)
-        self._check_prefix(source_lines[1:], ' '*indent + '.', name, lineno)
-        source = '\n'.join([sl[indent+4:] for sl in source_lines])
-
-        # Divide want into lines; check that it's properly indented; and
-        # then strip the indentation.  Spaces before the last newline should
-        # be preserved, so plain rstrip() isn't good enough.
-        want = m.group('want')
-        want_lines = want.split('\n')
-        if len(want_lines) > 1 and re.match(r' *$', want_lines[-1]):
-            del want_lines[-1]  # forget final newline & spaces after it
-        self._check_prefix(want_lines, ' '*indent, name,
-                           lineno + len(source_lines))
-        want = '\n'.join([wl[indent:] for wl in want_lines])
-
-        # If `want` contains a traceback message, then extract it.
-        m = self._EXCEPTION_RE.match(want)
-        if m:
-            exc_msg = m.group('msg')
-        else:
-            exc_msg = None
-
-        # Extract options from the source.
-        options = self._find_options(source, name, lineno)
-
-        return source, options, want, exc_msg
-
-    # This regular expression looks for option directives in the
-    # source code of an example.  Option directives are comments
-    # starting with "doctest:".  Warning: this may give false
-    # positives for string-literals that contain the string
-    # "#doctest:".  Eliminating these false positives would require
-    # actually parsing the string; but we limit them by ignoring any
-    # line containing "#doctest:" that is *followed* by a quote mark.
-    _OPTION_DIRECTIVE_RE = re.compile(r'#\s*doctest:\s*([^\n\'"]*)$',
-                                      re.MULTILINE)
-
-    def _find_options(self, source, name, lineno):
-        """
-        Return a dictionary containing option overrides extracted from
-        option directives in the given source string.
-
-        `name` is the string's name, and `lineno` is the line number
-        where the example starts; both are used for error messages.
-        """
-        options = {}
-        # (note: with the current regexp, this will match at most once:)
-        for m in self._OPTION_DIRECTIVE_RE.finditer(source):
-            option_strings = m.group(1).replace(',', ' ').split()
-            for option in option_strings:
-                if (option[0] not in '+-' or
-                    option[1:] not in OPTIONFLAGS_BY_NAME):
-                    raise ValueError('line %r of the doctest for %s '
-                                     'has an invalid option: %r' %
-                                     (lineno+1, name, option))
-                flag = OPTIONFLAGS_BY_NAME[option[1:]]
-                options[flag] = (option[0] == '+')
-        if options and self._IS_BLANK_OR_COMMENT(source):
-            raise ValueError('line %r of the doctest for %s has an option '
-                             'directive on a line with no example: %r' %
-                             (lineno, name, source))
-        return options
-
-    # This regular expression finds the indentation of every non-blank
-    # line in a string.
-    _INDENT_RE = re.compile('^([ ]*)(?=\S)', re.MULTILINE)
-
-    def _min_indent(self, s):
-        "Return the minimum indentation of any non-blank line in `s`"
-        indents = [len(indent) for indent in self._INDENT_RE.findall(s)]
-        if len(indents) > 0:
-            return min(indents)
-        else:
-            return 0
-
-    def _check_prompt_blank(self, lines, indent, name, lineno):
-        """
-        Given the lines of a source string (including prompts and
-        leading indentation), check to make sure that every prompt is
-        followed by a space character.  If any line is not followed by
-        a space character, then raise ValueError.
-        """
-        for i, line in enumerate(lines):
-            if len(line) >= indent+4 and line[indent+3] != ' ':
-                raise ValueError('line %r of the docstring for %s '
-                                 'lacks blank after %s: %r' %
-                                 (lineno+i+1, name,
-                                  line[indent:indent+3], line))
-
-    def _check_prefix(self, lines, prefix, name, lineno):
-        """
-        Check that every line in the given list starts with the given
-        prefix; if any line does not, then raise a ValueError.
-        """
-        for i, line in enumerate(lines):
-            if line and not line.startswith(prefix):
-                raise ValueError('line %r of the docstring for %s has '
-                                 'inconsistent leading whitespace: %r' %
-                                 (lineno+i+1, name, line))
-
-
-######################################################################
-## 4. DocTest Finder
-######################################################################
-
-class DocTestFinder:
-    """
-    A class used to extract the DocTests that are relevant to a given
-    object, from its docstring and the docstrings of its contained
-    objects.  Doctests can currently be extracted from the following
-    object types: modules, functions, classes, methods, staticmethods,
-    classmethods, and properties.
-    """
-
-    def __init__(self, verbose=False, parser=DocTestParser(),
-                 recurse=True, _namefilter=None, exclude_empty=True):
-        """
-        Create a new doctest finder.
-
-        The optional argument `parser` specifies a class or
-        function that should be used to create new DocTest objects (or
-        objects that implement the same interface as DocTest).  The
-        signature for this factory function should match the signature
-        of the DocTest constructor.
-
-        If the optional argument `recurse` is false, then `find` will
-        only examine the given object, and not any contained objects.
-
-        If the optional argument `exclude_empty` is false, then `find`
-        will include tests for objects with empty docstrings.
-        """
-        self._parser = parser
-        self._verbose = verbose
-        self._recurse = recurse
-        self._exclude_empty = exclude_empty
-        # _namefilter is undocumented, and exists only for temporary backward-
-        # compatibility support of testmod's deprecated isprivate mess.
-        self._namefilter = _namefilter
-
-    def find(self, obj, name=None, module=None, globs=None,
-             extraglobs=None):
-        """
-        Return a list of the DocTests that are defined by the given
-        object's docstring, or by any of its contained objects'
-        docstrings.
-
-        The optional parameter `module` is the module that contains
-        the given object.  If the module is not specified or is None, then
-        the test finder will attempt to automatically determine the
-        correct module.  The object's module is used:
-
-            - As a default namespace, if `globs` is not specified.
-            - To prevent the DocTestFinder from extracting DocTests
-              from objects that are imported from other modules.
-            - To find the name of the file containing the object.
-            - To help find the line number of the object within its
-              file.
-
-        Contained objects whose module does not match `module` are ignored.
-
-        If `module` is False, no attempt to find the module will be made.
-        This is obscure, of use mostly in tests:  if `module` is False, or
-        is None but cannot be found automatically, then all objects are
-        considered to belong to the (non-existent) module, so all contained
-        objects will (recursively) be searched for doctests.
-
-        The globals for each DocTest is formed by combining `globs`
-        and `extraglobs` (bindings in `extraglobs` override bindings
-        in `globs`).  A new copy of the globals dictionary is created
-        for each DocTest.  If `globs` is not specified, then it
-        defaults to the module's `__dict__`, if specified, or {}
-        otherwise.  If `extraglobs` is not specified, then it defaults
-        to {}.
-
-        """
-        # If name was not specified, then extract it from the object.
-        if name is None:
-            name = getattr(obj, '__name__', None)
-            if name is None:
-                raise ValueError("DocTestFinder.find: name must be given "
-                        "when obj.__name__ doesn't exist: %r" %
-                                 (type(obj),))
-
-        # Find the module that contains the given object (if obj is
-        # a module, then module=obj.).  Note: this may fail, in which
-        # case module will be None.
-        if module is False:
-            module = None
-        elif module is None:
-            module = inspect.getmodule(obj)
-
-        # Read the module's source code.  This is used by
-        # DocTestFinder._find_lineno to find the line number for a
-        # given object's docstring.
-        try:
-            file = inspect.getsourcefile(obj) or inspect.getfile(obj)
-            source_lines = linecache.getlines(file)
-            if not source_lines:
-                source_lines = None
-        except TypeError:
-            source_lines = None
-
-        # Initialize globals, and merge in extraglobs.
-        if globs is None:
-            if module is None:
-                globs = {}
-            else:
-                globs = module.__dict__.copy()
-        else:
-            globs = globs.copy()
-        if extraglobs is not None:
-            globs.update(extraglobs)
-
-        # Recursively expore `obj`, extracting DocTests.
-        tests = []
-        self._find(tests, obj, name, module, source_lines, globs, {})
-        return tests
-
-    def _filter(self, obj, prefix, base):
-        """
-        Return true if the given object should not be examined.
-        """
-        return (self._namefilter is not None and
-                self._namefilter(prefix, base))
-
-    def _from_module(self, module, object):
-        """
-        Return true if the given object is defined in the given
-        module.
-        """
-        if module is None:
-            return True
-        elif inspect.isfunction(object):
-            return module.__dict__ is object.func_globals
-        elif inspect.isclass(object):
-            return module.__name__ == object.__module__
-        elif inspect.getmodule(object) is not None:
-            return module is inspect.getmodule(object)
-        elif hasattr(object, '__module__'):
-            return module.__name__ == object.__module__
-        elif isinstance(object, property):
-            return True # [XX] no way not be sure.
-        else:
-            raise ValueError("object must be a class or function")
-
-    def _find(self, tests, obj, name, module, source_lines, globs, seen):
-        """
-        Find tests for the given object and any contained objects, and
-        add them to `tests`.
-        """
-        if self._verbose:
-            print 'Finding tests in %s' % name
-
-        # If we've already processed this object, then ignore it.
-        if id(obj) in seen:
-            return
-        seen[id(obj)] = 1
-
-        # Find a test for this object, and add it to the list of tests.
-        test = self._get_test(obj, name, module, globs, source_lines)
-        if test is not None:
-            tests.append(test)
-
-        # Look for tests in a module's contained objects.
-        if inspect.ismodule(obj) and self._recurse:
-            for valname, val in obj.__dict__.items():
-                # Check if this contained object should be ignored.
-                if self._filter(val, name, valname):
-                    continue
-                valname = '%s.%s' % (name, valname)
-                # Recurse to functions & classes.
-                if ((inspect.isfunction(val) or inspect.isclass(val)) and
-                    self._from_module(module, val)):
-                    self._find(tests, val, valname, module, source_lines,
-                               globs, seen)
-
-        # Look for tests in a module's __test__ dictionary.
-        if inspect.ismodule(obj) and self._recurse:
-            for valname, val in getattr(obj, '__test__', {}).items():
-                if not isinstance(valname, basestring):
-                    raise ValueError("DocTestFinder.find: __test__ keys "
-                                     "must be strings: %r" %
-                                     (type(valname),))
-                if not (inspect.isfunction(val) or inspect.isclass(val) or
-                        inspect.ismethod(val) or inspect.ismodule(val) or
-                        isinstance(val, basestring)):
-                    raise ValueError("DocTestFinder.find: __test__ values "
-                                     "must be strings, functions, methods, "
-                                     "classes, or modules: %r" %
-                                     (type(val),))
-                valname = '%s.__test__.%s' % (name, valname)
-                self._find(tests, val, valname, module, source_lines,
-                           globs, seen)
-
-        # Look for tests in a class's contained objects.
-        if inspect.isclass(obj) and self._recurse:
-            for valname, val in obj.__dict__.items():
-                # Check if this contained object should be ignored.
-                if self._filter(val, name, valname):
-                    continue
-                # Special handling for staticmethod/classmethod.
-                if isinstance(val, staticmethod):
-                    val = getattr(obj, valname)
-                if isinstance(val, classmethod):
-                    val = getattr(obj, valname).im_func
-
-                # Recurse to methods, properties, and nested classes.
-                if ((inspect.isfunction(val) or inspect.isclass(val) or
-                      isinstance(val, property)) and
-                      self._from_module(module, val)):
-                    valname = '%s.%s' % (name, valname)
-                    self._find(tests, val, valname, module, source_lines,
-                               globs, seen)
-
-    def _get_test(self, obj, name, module, globs, source_lines):
-        """
-        Return a DocTest for the given object, if it defines a docstring;
-        otherwise, return None.
-        """
-        # Extract the object's docstring.  If it doesn't have one,
-        # then return None (no test for this object).
-        if isinstance(obj, basestring):
-            docstring = obj
-        else:
-            try:
-                if obj.__doc__ is None:
-                    docstring = ''
-                else:
-                    docstring = obj.__doc__
-                    if not isinstance(docstring, basestring):
-                        docstring = str(docstring)
-            except (TypeError, AttributeError):
-                docstring = ''
-
-        # Find the docstring's location in the file.
-        lineno = self._find_lineno(obj, source_lines)
-
-        # Don't bother if the docstring is empty.
-        if self._exclude_empty and not docstring:
-            return None
-
-        # Return a DocTest for this object.
-        if module is None:
-            filename = None
-        else:
-            filename = getattr(module, '__file__', module.__name__)
-            if filename[-4:] in (".pyc", ".pyo"):
-                filename = filename[:-1]
-        return self._parser.get_doctest(docstring, globs, name,
-                                        filename, lineno)
-
-    def _find_lineno(self, obj, source_lines):
-        """
-        Return a line number of the given object's docstring.  Note:
-        this method assumes that the object has a docstring.
-        """
-        lineno = None
-
-        # Find the line number for modules.
-        if inspect.ismodule(obj):
-            lineno = 0
-
-        # Find the line number for classes.
-        # Note: this could be fooled if a class is defined multiple
-        # times in a single file.
-        if inspect.isclass(obj):
-            if source_lines is None:
-                return None
-            pat = re.compile(r'^\s*class\s*%s\b' %
-                             getattr(obj, '__name__', '-'))
-            for i, line in enumerate(source_lines):
-                if pat.match(line):
-                    lineno = i
-                    break
-
-        # Find the line number for functions & methods.
-        if inspect.ismethod(obj): obj = obj.im_func
-        if inspect.isfunction(obj): obj = obj.func_code
-        if inspect.istraceback(obj): obj = obj.tb_frame
-        if inspect.isframe(obj): obj = obj.f_code
-        if inspect.iscode(obj):
-            lineno = getattr(obj, 'co_firstlineno', None)-1
-
-        # Find the line number where the docstring starts.  Assume
-        # that it's the first line that begins with a quote mark.
-        # Note: this could be fooled by a multiline function
-        # signature, where a continuation line begins with a quote
-        # mark.
-        if lineno is not None:
-            if source_lines is None:
-                return lineno+1
-            pat = re.compile('(^|.*:)\s*\w*("|\')')
-            for lineno in range(lineno, len(source_lines)):
-                if pat.match(source_lines[lineno]):
-                    return lineno
-
-        # We couldn't find the line number.
-        return None
-
-######################################################################
-## 5. DocTest Runner
-######################################################################
-
-class DocTestRunner:
-    """
-    A class used to run DocTest test cases, and accumulate statistics.
-    The `run` method is used to process a single DocTest case.  It
-    returns a tuple `(f, t)`, where `t` is the number of test cases
-    tried, and `f` is the number of test cases that failed.
-
-        >>> tests = DocTestFinder().find(_TestClass)
-        >>> runner = DocTestRunner(verbose=False)
-        >>> for test in tests:
-        ...     print runner.run(test)
-        (0, 2)
-        (0, 1)
-        (0, 2)
-        (0, 2)
-
-    The `summarize` method prints a summary of all the test cases that
-    have been run by the runner, and returns an aggregated `(f, t)`
-    tuple:
-
-        >>> runner.summarize(verbose=1)
-        4 items passed all tests:
-           2 tests in _TestClass
-           2 tests in _TestClass.__init__
-           2 tests in _TestClass.get
-           1 tests in _TestClass.square
-        7 tests in 4 items.
-        7 passed and 0 failed.
-        Test passed.
-        (0, 7)
-
-    The aggregated number of tried examples and failed examples is
-    also available via the `tries` and `failures` attributes:
-
-        >>> runner.tries
-        7
-        >>> runner.failures
-        0
-
-    The comparison between expected outputs and actual outputs is done
-    by an `OutputChecker`.  This comparison may be customized with a
-    number of option flags; see the documentation for `testmod` for
-    more information.  If the option flags are insufficient, then the
-    comparison may also be customized by passing a subclass of
-    `OutputChecker` to the constructor.
-
-    The test runner's display output can be controlled in two ways.
-    First, an output function (`out) can be passed to
-    `TestRunner.run`; this function will be called with strings that
-    should be displayed.  It defaults to `sys.stdout.write`.  If
-    capturing the output is not sufficient, then the display output
-    can be also customized by subclassing DocTestRunner, and
-    overriding the methods `report_start`, `report_success`,
-    `report_unexpected_exception`, and `report_failure`.
-    """
-    # This divider string is used to separate failure messages, and to
-    # separate sections of the summary.
-    DIVIDER = "*" * 70
-
-    def __init__(self, checker=None, verbose=None, optionflags=0):
-        """
-        Create a new test runner.
-
-        Optional keyword arg `checker` is the `OutputChecker` that
-        should be used to compare the expected outputs and actual
-        outputs of doctest examples.
-
-        Optional keyword arg 'verbose' prints lots of stuff if true,
-        only failures if false; by default, it's true iff '-v' is in
-        sys.argv.
-
-        Optional argument `optionflags` can be used to control how the
-        test runner compares expected output to actual output, and how
-        it displays failures.  See the documentation for `testmod` for
-        more information.
-        """
-        self._checker = checker or OutputChecker()
-        if verbose is None:
-            verbose = '-v' in sys.argv
-        self._verbose = verbose
-        self.optionflags = optionflags
-        self.original_optionflags = optionflags
-
-        # Keep track of the examples we've run.
-        self.tries = 0
-        self.failures = 0
-        self._name2ft = {}
-
-        # Create a fake output target for capturing doctest output.
-        self._fakeout = _SpoofOut()
-
-    #/////////////////////////////////////////////////////////////////
-    # Reporting methods
-    #/////////////////////////////////////////////////////////////////
-
-    def report_start(self, out, test, example):
-        """
-        Report that the test runner is about to process the given
-        example.  (Only displays a message if verbose=True)
-        """
-        if self._verbose:
-            if example.want:
-                out('Trying:\n' + _indent(example.source) +
-                    'Expecting:\n' + _indent(example.want))
-            else:
-                out('Trying:\n' + _indent(example.source) +
-                    'Expecting nothing\n')
-
-    def report_success(self, out, test, example, got):
-        """
-        Report that the given example ran successfully.  (Only
-        displays a message if verbose=True)
-        """
-        if self._verbose:
-            out("ok\n")
-
-    def report_failure(self, out, test, example, got):
-        """
-        Report that the given example failed.
-        """
-        out(self._failure_header(test, example) +
-            self._checker.output_difference(example, got, self.optionflags))
-
-    def report_unexpected_exception(self, out, test, example, exc_info):
-        """
-        Report that the given example raised an unexpected exception.
-        """
-        out(self._failure_header(test, example) +
-            'Exception raised:\n' + _indent(_exception_traceback(exc_info)))
-
-    def _failure_header(self, test, example):
-        out = [self.DIVIDER]
-        if test.filename:
-            if test.lineno is not None and example.lineno is not None:
-                lineno = test.lineno + example.lineno + 1
-            else:
-                lineno = '?'
-            out.append('File "%s", line %s, in %s' %
-                       (test.filename, lineno, test.name))
-        else:
-            out.append('Line %s, in %s' % (example.lineno+1, test.name))
-        out.append('Failed example:')
-        source = example.source
-        out.append(_indent(source))
-        return '\n'.join(out)
-
-    #/////////////////////////////////////////////////////////////////
-    # DocTest Running
-    #/////////////////////////////////////////////////////////////////
-
-    def __run(self, test, compileflags, out):
-        """
-        Run the examples in `test`.  Write the outcome of each example
-        with one of the `DocTestRunner.report_*` methods, using the
-        writer function `out`.  `compileflags` is the set of compiler
-        flags that should be used to execute examples.  Return a tuple
-        `(f, t)`, where `t` is the number of examples tried, and `f`
-        is the number of examples that failed.  The examples are run
-        in the namespace `test.globs`.
-        """
-        # Keep track of the number of failures and tries.
-        failures = tries = 0
-
-        # Save the option flags (since option directives can be used
-        # to modify them).
-        original_optionflags = self.optionflags
-
-        SUCCESS, FAILURE, BOOM = range(3) # `outcome` state
-
-        check = self._checker.check_output
-
-        # Process each example.
-        for examplenum, example in enumerate(test.examples):
-
-            # If REPORT_ONLY_FIRST_FAILURE is set, then supress
-            # reporting after the first failure.
-            quiet = (self.optionflags & REPORT_ONLY_FIRST_FAILURE and
-                     failures > 0)
-
-            # Merge in the example's options.
-            self.optionflags = original_optionflags
-            if example.options:
-                for (optionflag, val) in example.options.items():
-                    if val:
-                        self.optionflags |= optionflag
-                    else:
-                        self.optionflags &= ~optionflag
-
-            # Record that we started this example.
-            tries += 1
-            if not quiet:
-                self.report_start(out, test, example)
-
-            # Use a special filename for compile(), so we can retrieve
-            # the source code during interactive debugging (see
-            # __patched_linecache_getlines).
-            filename = '<doctest %s[%d]>' % (test.name, examplenum)
-
-            # Run the example in the given context (globs), and record
-            # any exception that gets raised.  (But don't intercept
-            # keyboard interrupts.)
-            try:
-                # Don't blink!  This is where the user's code gets run.
-                exec compile(example.source, filename, "single",
-                             compileflags, 1) in test.globs
-                self.debugger.set_continue() # ==== Example Finished ====
-                exception = None
-            except KeyboardInterrupt:
-                raise
-            except:
-                exception = sys.exc_info()
-                self.debugger.set_continue() # ==== Example Finished ====
-
-            got = self._fakeout.getvalue()  # the actual output
-            self._fakeout.truncate(0)
-            outcome = FAILURE   # guilty until proved innocent or insane
-
-            # If the example executed without raising any exceptions,
-            # verify its output.
-            if exception is None:
-                if check(example.want, got, self.optionflags):
-                    outcome = SUCCESS
-
-            # The example raised an exception:  check if it was expected.
-            else:
-                exc_info = sys.exc_info()
-                exc_msg = traceback.format_exception_only(*exc_info[:2])[-1]
-                if not quiet:
-                    got += _exception_traceback(exc_info)
-
-                # If `example.exc_msg` is None, then we weren't expecting
-                # an exception.
-                if example.exc_msg is None:
-                    outcome = BOOM
-
-                # We expected an exception:  see whether it matches.
-                elif check(example.exc_msg, exc_msg, self.optionflags):
-                    outcome = SUCCESS
-
-                # Another chance if they didn't care about the detail.
-                elif self.optionflags & IGNORE_EXCEPTION_DETAIL:
-                    m1 = re.match(r'[^:]*:', example.exc_msg)
-                    m2 = re.match(r'[^:]*:', exc_msg)
-                    if m1 and m2 and check(m1.group(0), m2.group(0),
-                                           self.optionflags):
-                        outcome = SUCCESS
-
-            # Report the outcome.
-            if outcome is SUCCESS:
-                if not quiet:
-                    self.report_success(out, test, example, got)
-            elif outcome is FAILURE:
-                if not quiet:
-                    self.report_failure(out, test, example, got)
-                failures += 1
-            elif outcome is BOOM:
-                if not quiet:
-                    self.report_unexpected_exception(out, test, example,
-                                                     exc_info)
-                failures += 1
-            else:
-                assert False, ("unknown outcome", outcome)
-
-        # Restore the option flags (in case they were modified)
-        self.optionflags = original_optionflags
-
-        # Record and return the number of failures and tries.
-        self.__record_outcome(test, failures, tries)
-        return failures, tries
-
-    def __record_outcome(self, test, f, t):
-        """
-        Record the fact that the given DocTest (`test`) generated `f`
-        failures out of `t` tried examples.
-        """
-        f2, t2 = self._name2ft.get(test.name, (0,0))
-        self._name2ft[test.name] = (f+f2, t+t2)
-        self.failures += f
-        self.tries += t
-
-    __LINECACHE_FILENAME_RE = re.compile(r'<doctest '
-                                         r'(?P<name>[\w\.]+)'
-                                         r'\[(?P<examplenum>\d+)\]>$')
-    def __patched_linecache_getlines(self, filename, module_globals=None):
-        m = self.__LINECACHE_FILENAME_RE.match(filename)
-        if m and m.group('name') == self.test.name:
-            example = self.test.examples[int(m.group('examplenum'))]
-            return example.source.splitlines(True)
-        elif self.save_linecache_getlines.func_code.co_argcount>1:
-            return self.save_linecache_getlines(filename, module_globals)
-        else:
-            return self.save_linecache_getlines(filename)
-
-    def run(self, test, compileflags=None, out=None, clear_globs=True):
-        """
-        Run the examples in `test`, and display the results using the
-        writer function `out`.
-
-        The examples are run in the namespace `test.globs`.  If
-        `clear_globs` is true (the default), then this namespace will
-        be cleared after the test runs, to help with garbage
-        collection.  If you would like to examine the namespace after
-        the test completes, then use `clear_globs=False`.
-
-        `compileflags` gives the set of flags that should be used by
-        the Python compiler when running the examples.  If not
-        specified, then it will default to the set of future-import
-        flags that apply to `globs`.
-
-        The output of each example is checked using
-        `DocTestRunner.check_output`, and the results are formatted by
-        the `DocTestRunner.report_*` methods.
-        """
-        self.test = test
-
-        if compileflags is None:
-            compileflags = _extract_future_flags(test.globs)
-
-        save_stdout = sys.stdout
-        if out is None:
-            out = save_stdout.write
-        sys.stdout = self._fakeout
-
-        # Patch pdb.set_trace to restore sys.stdout during interactive
-        # debugging (so it's not still redirected to self._fakeout).
-        # Note that the interactive output will go to *our*
-        # save_stdout, even if that's not the real sys.stdout; this
-        # allows us to write test cases for the set_trace behavior.
-        save_set_trace = pdb.set_trace
-        self.debugger = _OutputRedirectingPdb(save_stdout)
-        self.debugger.reset()
-        pdb.set_trace = self.debugger.set_trace
-
-        # Patch linecache.getlines, so we can see the example's source
-        # when we're inside the debugger.
-        self.save_linecache_getlines = linecache.getlines
-        linecache.getlines = self.__patched_linecache_getlines
-
-        try:
-            return self.__run(test, compileflags, out)
-        finally:
-            sys.stdout = save_stdout
-            pdb.set_trace = save_set_trace
-            linecache.getlines = self.save_linecache_getlines
-            if clear_globs:
-                test.globs.clear()
-
-    #/////////////////////////////////////////////////////////////////
-    # Summarization
-    #/////////////////////////////////////////////////////////////////
-    def summarize(self, verbose=None):
-        """
-        Print a summary of all the test cases that have been run by
-        this DocTestRunner, and return a tuple `(f, t)`, where `f` is
-        the total number of failed examples, and `t` is the total
-        number of tried examples.
-
-        The optional `verbose` argument controls how detailed the
-        summary is.  If the verbosity is not specified, then the
-        DocTestRunner's verbosity is used.
-        """
-        if verbose is None:
-            verbose = self._verbose
-        notests = []
-        passed = []
-        failed = []
-        totalt = totalf = 0
-        for x in self._name2ft.items():
-            name, (f, t) = x
-            assert f <= t
-            totalt += t
-            totalf += f
-            if t == 0:
-                notests.append(name)
-            elif f == 0:
-                passed.append( (name, t) )
-            else:
-                failed.append(x)
-        if verbose:
-            if notests:
-                print len(notests), "items had no tests:"
-                notests.sort()
-                for thing in notests:
-                    print "   ", thing
-            if passed:
-                print len(passed), "items passed all tests:"
-                passed.sort()
-                for thing, count in passed:
-                    print " %3d tests in %s" % (count, thing)
-        if failed:
-            print self.DIVIDER
-            print len(failed), "items had failures:"
-            failed.sort()
-            for thing, (f, t) in failed:
-                print " %3d of %3d in %s" % (f, t, thing)
-        if verbose:
-            print totalt, "tests in", len(self._name2ft), "items."
-            print totalt - totalf, "passed and", totalf, "failed."
-        if totalf:
-            print "***Test Failed***", totalf, "failures."
-        elif verbose:
-            print "Test passed."
-        return totalf, totalt
-
-    #/////////////////////////////////////////////////////////////////
-    # Backward compatibility cruft to maintain doctest.master.
-    #/////////////////////////////////////////////////////////////////
-    def merge(self, other):
-        d = self._name2ft
-        for name, (f, t) in other._name2ft.items():
-            if name in d:
-                print "*** DocTestRunner.merge: '" + name + "' in both" \
-                    " testers; summing outcomes."
-                f2, t2 = d[name]
-                f = f + f2
-                t = t + t2
-            d[name] = f, t
-
-class OutputChecker:
-    """
-    A class used to check the whether the actual output from a doctest
-    example matches the expected output.  `OutputChecker` defines two
-    methods: `check_output`, which compares a given pair of outputs,
-    and returns true if they match; and `output_difference`, which
-    returns a string describing the differences between two outputs.
-    """
-    def check_output(self, want, got, optionflags):
-        """
-        Return True iff the actual output from an example (`got`)
-        matches the expected output (`want`).  These strings are
-        always considered to match if they are identical; but
-        depending on what option flags the test runner is using,
-        several non-exact match types are also possible.  See the
-        documentation for `TestRunner` for more information about
-        option flags.
-        """
-        # Handle the common case first, for efficiency:
-        # if they're string-identical, always return true.
-        if got == want:
-            return True
-
-        # The values True and False replaced 1 and 0 as the return
-        # value for boolean comparisons in Python 2.3.
-        if not (optionflags & DONT_ACCEPT_TRUE_FOR_1):
-            if (got,want) == ("True\n", "1\n"):
-                return True
-            if (got,want) == ("False\n", "0\n"):
-                return True
-
-        # <BLANKLINE> can be used as a special sequence to signify a
-        # blank line, unless the DONT_ACCEPT_BLANKLINE flag is used.
-        if not (optionflags & DONT_ACCEPT_BLANKLINE):
-            # Replace <BLANKLINE> in want with a blank line.
-            want = re.sub('(?m)^%s\s*?$' % re.escape(BLANKLINE_MARKER),
-                          '', want)
-            # If a line in got contains only spaces, then remove the
-            # spaces.
-            got = re.sub('(?m)^\s*?$', '', got)
-            if got == want:
-                return True
-
-        # This flag causes doctest to ignore any differences in the
-        # contents of whitespace strings.  Note that this can be used
-        # in conjunction with the ELLIPSIS flag.
-        if optionflags & NORMALIZE_WHITESPACE:
-            got = ' '.join(got.split())
-            want = ' '.join(want.split())
-            if got == want:
-                return True
-
-        # The ELLIPSIS flag says to let the sequence "..." in `want`
-        # match any substring in `got`.
-        if optionflags & ELLIPSIS:
-            if _ellipsis_match(want, got):
-                return True
-
-        # We didn't find any match; return false.
-        return False
-
-    # Should we do a fancy diff?
-    def _do_a_fancy_diff(self, want, got, optionflags):
-        # Not unless they asked for a fancy diff.
-        if not optionflags & (REPORT_UDIFF |
-                              REPORT_CDIFF |
-                              REPORT_NDIFF):
-            return False
-
-        # If expected output uses ellipsis, a meaningful fancy diff is
-        # too hard ... or maybe not.  In two real-life failures Tim saw,
-        # a diff was a major help anyway, so this is commented out.
-        # [todo] _ellipsis_match() knows which pieces do and don't match,
-        # and could be the basis for a kick-ass diff in this case.
-        ##if optionflags & ELLIPSIS and ELLIPSIS_MARKER in want:
-        ##    return False
-
-        # ndiff does intraline difference marking, so can be useful even
-        # for 1-line differences.
-        if optionflags & REPORT_NDIFF:
-            return True
-
-        # The other diff types need at least a few lines to be helpful.
-        return want.count('\n') > 2 and got.count('\n') > 2
-
-    def output_difference(self, example, got, optionflags):
-        """
-        Return a string describing the differences between the
-        expected output for a given example (`example`) and the actual
-        output (`got`).  `optionflags` is the set of option flags used
-        to compare `want` and `got`.
-        """
-        want = example.want
-        # If <BLANKLINE>s are being used, then replace blank lines
-        # with <BLANKLINE> in the actual output string.
-        if not (optionflags & DONT_ACCEPT_BLANKLINE):
-            got = re.sub('(?m)^[ ]*(?=\n)', BLANKLINE_MARKER, got)
-
-        # Check if we should use diff.
-        if self._do_a_fancy_diff(want, got, optionflags):
-            # Split want & got into lines.
-            want_lines = want.splitlines(True)  # True == keep line ends
-            got_lines = got.splitlines(True)
-            # Use difflib to find their differences.
-            if optionflags & REPORT_UDIFF:
-                diff = difflib.unified_diff(want_lines, got_lines, n=2)
-                diff = list(diff)[2:] # strip the diff header
-                kind = 'unified diff with -expected +actual'
-            elif optionflags & REPORT_CDIFF:
-                diff = difflib.context_diff(want_lines, got_lines, n=2)
-                diff = list(diff)[2:] # strip the diff header
-                kind = 'context diff with expected followed by actual'
-            elif optionflags & REPORT_NDIFF:
-                engine = difflib.Differ(charjunk=difflib.IS_CHARACTER_JUNK)
-                diff = list(engine.compare(want_lines, got_lines))
-                kind = 'ndiff with -expected +actual'
-            else:
-                assert 0, 'Bad diff option'
-            # Remove trailing whitespace on diff output.
-            diff = [line.rstrip() + '\n' for line in diff]
-            return 'Differences (%s):\n' % kind + _indent(''.join(diff))
-
-        # If we're not using diff, then simply list the expected
-        # output followed by the actual output.
-        if want and got:
-            return 'Expected:\n%sGot:\n%s' % (_indent(want), _indent(got))
-        elif want:
-            return 'Expected:\n%sGot nothing\n' % _indent(want)
-        elif got:
-            return 'Expected nothing\nGot:\n%s' % _indent(got)
-        else:
-            return 'Expected nothing\nGot nothing\n'
-
-class DocTestFailure(Exception):
-    """A DocTest example has failed in debugging mode.
-
-    The exception instance has variables:
-
-    - test: the DocTest object being run
-
-    - excample: the Example object that failed
-
-    - got: the actual output
-    """
-    def __init__(self, test, example, got):
-        self.test = test
-        self.example = example
-        self.got = got
-
-    def __str__(self):
-        return str(self.test)
-
-class UnexpectedException(Exception):
-    """A DocTest example has encountered an unexpected exception
-
-    The exception instance has variables:
-
-    - test: the DocTest object being run
-
-    - excample: the Example object that failed
-
-    - exc_info: the exception info
-    """
-    def __init__(self, test, example, exc_info):
-        self.test = test
-        self.example = example
-        self.exc_info = exc_info
-
-    def __str__(self):
-        return str(self.test)
-
-class DebugRunner(DocTestRunner):
-    r"""Run doc tests but raise an exception as soon as there is a failure.
-
-       If an unexpected exception occurs, an UnexpectedException is raised.
-       It contains the test, the example, and the original exception:
-
-         >>> runner = DebugRunner(verbose=False)
-         >>> test = DocTestParser().get_doctest('>>> raise KeyError\n42',
-         ...                                    {}, 'foo', 'foo.py', 0)
-         >>> try:
-         ...     runner.run(test)
-         ... except UnexpectedException, failure:
-         ...     pass
-
-         >>> failure.test is test
-         True
-
-         >>> failure.example.want
-         '42\n'
-
-         >>> exc_info = failure.exc_info
-         >>> raise exc_info[0], exc_info[1], exc_info[2]
-         Traceback (most recent call last):
-         ...
-         KeyError
-
-       We wrap the original exception to give the calling application
-       access to the test and example information.
-
-       If the output doesn't match, then a DocTestFailure is raised:
-
-         >>> test = DocTestParser().get_doctest('''
-         ...      >>> x = 1
-         ...      >>> x
-         ...      2
-         ...      ''', {}, 'foo', 'foo.py', 0)
-
-         >>> try:
-         ...    runner.run(test)
-         ... except DocTestFailure, failure:
-         ...    pass
-
-       DocTestFailure objects provide access to the test:
-
-         >>> failure.test is test
-         True
-
-       As well as to the example:
-
-         >>> failure.example.want
-         '2\n'
-
-       and the actual output:
-
-         >>> failure.got
-         '1\n'
-
-       If a failure or error occurs, the globals are left intact:
-
-         >>> del test.globs['__builtins__']
-         >>> test.globs
-         {'x': 1}
-
-         >>> test = DocTestParser().get_doctest('''
-         ...      >>> x = 2
-         ...      >>> raise KeyError
-         ...      ''', {}, 'foo', 'foo.py', 0)
-
-         >>> runner.run(test)
-         Traceback (most recent call last):
-         ...
-         UnexpectedException: <DocTest foo from foo.py:0 (2 examples)>
-
-         >>> del test.globs['__builtins__']
-         >>> test.globs
-         {'x': 2}
-
-       But the globals are cleared if there is no error:
-
-         >>> test = DocTestParser().get_doctest('''
-         ...      >>> x = 2
-         ...      ''', {}, 'foo', 'foo.py', 0)
-
-         >>> runner.run(test)
-         (0, 1)
-
-         >>> test.globs
-         {}
-
-       """
-
-    def run(self, test, compileflags=None, out=None, clear_globs=True):
-        r = DocTestRunner.run(self, test, compileflags, out, False)
-        if clear_globs:
-            test.globs.clear()
-        return r
-
-    def report_unexpected_exception(self, out, test, example, exc_info):
-        raise UnexpectedException(test, example, exc_info)
-
-    def report_failure(self, out, test, example, got):
-        raise DocTestFailure(test, example, got)
-
-######################################################################
-## 6. Test Functions
-######################################################################
-# These should be backwards compatible.
-
-# For backward compatibility, a global instance of a DocTestRunner
-# class, updated by testmod.
-master = None
-
-def testmod(m=None, name=None, globs=None, verbose=None, isprivate=None,
-            report=True, optionflags=0, extraglobs=None,
-            raise_on_error=False, exclude_empty=False):
-    """m=None, name=None, globs=None, verbose=None, isprivate=None,
-       report=True, optionflags=0, extraglobs=None, raise_on_error=False,
-       exclude_empty=False
-
-    Test examples in docstrings in functions and classes reachable
-    from module m (or the current module if m is not supplied), starting
-    with m.__doc__.  Unless isprivate is specified, private names
-    are not skipped.
-
-    Also test examples reachable from dict m.__test__ if it exists and is
-    not None.  m.__test__ maps names to functions, classes and strings;
-    function and class docstrings are tested even if the name is private;
-    strings are tested directly, as if they were docstrings.
-
-    Return (#failures, #tests).
-
-    See doctest.__doc__ for an overview.
-
-    Optional keyword arg "name" gives the name of the module; by default
-    use m.__name__.
-
-    Optional keyword arg "globs" gives a dict to be used as the globals
-    when executing examples; by default, use m.__dict__.  A copy of this
-    dict is actually used for each docstring, so that each docstring's
-    examples start with a clean slate.
-
-    Optional keyword arg "extraglobs" gives a dictionary that should be
-    merged into the globals that are used to execute examples.  By
-    default, no extra globals are used.  This is new in 2.4.
-
-    Optional keyword arg "verbose" prints lots of stuff if true, prints
-    only failures if false; by default, it's true iff "-v" is in sys.argv.
-
-    Optional keyword arg "report" prints a summary at the end when true,
-    else prints nothing at the end.  In verbose mode, the summary is
-    detailed, else very brief (in fact, empty if all tests passed).
-
-    Optional keyword arg "optionflags" or's together module constants,
-    and defaults to 0.  This is new in 2.3.  Possible values (see the
-    docs for details):
-
-        DONT_ACCEPT_TRUE_FOR_1
-        DONT_ACCEPT_BLANKLINE
-        NORMALIZE_WHITESPACE
-        ELLIPSIS
-        IGNORE_EXCEPTION_DETAIL
-        REPORT_UDIFF
-        REPORT_CDIFF
-        REPORT_NDIFF
-        REPORT_ONLY_FIRST_FAILURE
-
-    Optional keyword arg "raise_on_error" raises an exception on the
-    first unexpected exception or failure. This allows failures to be
-    post-mortem debugged.
-
-    Deprecated in Python 2.4:
-    Optional keyword arg "isprivate" specifies a function used to
-    determine whether a name is private.  The default function is
-    treat all functions as public.  Optionally, "isprivate" can be
-    set to doctest.is_private to skip over functions marked as private
-    using the underscore naming convention; see its docs for details.
-
-    Advanced tomfoolery:  testmod runs methods of a local instance of
-    class doctest.Tester, then merges the results into (or creates)
-    global Tester instance doctest.master.  Methods of doctest.master
-    can be called directly too, if you want to do something unusual.
-    Passing report=0 to testmod is especially useful then, to delay
-    displaying a summary.  Invoke doctest.master.summarize(verbose)
-    when you're done fiddling.
-    """
-    global master
-
-    if isprivate is not None:
-        warnings.warn("the isprivate argument is deprecated; "
-                      "examine DocTestFinder.find() lists instead",
-                      DeprecationWarning)
-
-    # If no module was given, then use __main__.
-    if m is None:
-        # DWA - m will still be None if this wasn't invoked from the command
-        # line, in which case the following TypeError is about as good an error
-        # as we should expect
-        m = sys.modules.get('__main__')
-
-    # Check that we were actually given a module.
-    if not inspect.ismodule(m):
-        raise TypeError("testmod: module required; %r" % (m,))
-
-    # If no name was given, then use the module's name.
-    if name is None:
-        name = m.__name__
-
-    # Find, parse, and run all tests in the given module.
-    finder = DocTestFinder(_namefilter=isprivate, exclude_empty=exclude_empty)
-
-    if raise_on_error:
-        runner = DebugRunner(verbose=verbose, optionflags=optionflags)
-    else:
-        runner = DocTestRunner(verbose=verbose, optionflags=optionflags)
-
-    for test in finder.find(m, name, globs=globs, extraglobs=extraglobs):
-        runner.run(test)
-
-    if report:
-        runner.summarize()
-
-    if master is None:
-        master = runner
-    else:
-        master.merge(runner)
-
-    return runner.failures, runner.tries
-
-def testfile(filename, module_relative=True, name=None, package=None,
-             globs=None, verbose=None, report=True, optionflags=0,
-             extraglobs=None, raise_on_error=False, parser=DocTestParser()):
-    """
-    Test examples in the given file.  Return (#failures, #tests).
-
-    Optional keyword arg "module_relative" specifies how filenames
-    should be interpreted:
-
-      - If "module_relative" is True (the default), then "filename"
-         specifies a module-relative path.  By default, this path is
-         relative to the calling module's directory; but if the
-         "package" argument is specified, then it is relative to that
-         package.  To ensure os-independence, "filename" should use
-         "/" characters to separate path segments, and should not
-         be an absolute path (i.e., it may not begin with "/").
-
-      - If "module_relative" is False, then "filename" specifies an
-        os-specific path.  The path may be absolute or relative (to
-        the current working directory).
-
-    Optional keyword arg "name" gives the name of the test; by default
-    use the file's basename.
-
-    Optional keyword argument "package" is a Python package or the
-    name of a Python package whose directory should be used as the
-    base directory for a module relative filename.  If no package is
-    specified, then the calling module's directory is used as the base
-    directory for module relative filenames.  It is an error to
-    specify "package" if "module_relative" is False.
-
-    Optional keyword arg "globs" gives a dict to be used as the globals
-    when executing examples; by default, use {}.  A copy of this dict
-    is actually used for each docstring, so that each docstring's
-    examples start with a clean slate.
-
-    Optional keyword arg "extraglobs" gives a dictionary that should be
-    merged into the globals that are used to execute examples.  By
-    default, no extra globals are used.
-
-    Optional keyword arg "verbose" prints lots of stuff if true, prints
-    only failures if false; by default, it's true iff "-v" is in sys.argv.
-
-    Optional keyword arg "report" prints a summary at the end when true,
-    else prints nothing at the end.  In verbose mode, the summary is
-    detailed, else very brief (in fact, empty if all tests passed).
-
-    Optional keyword arg "optionflags" or's together module constants,
-    and defaults to 0.  Possible values (see the docs for details):
-
-        DONT_ACCEPT_TRUE_FOR_1
-        DONT_ACCEPT_BLANKLINE
-        NORMALIZE_WHITESPACE
-        ELLIPSIS
-        IGNORE_EXCEPTION_DETAIL
-        REPORT_UDIFF
-        REPORT_CDIFF
-        REPORT_NDIFF
-        REPORT_ONLY_FIRST_FAILURE
-
-    Optional keyword arg "raise_on_error" raises an exception on the
-    first unexpected exception or failure. This allows failures to be
-    post-mortem debugged.
-
-    Optional keyword arg "parser" specifies a DocTestParser (or
-    subclass) that should be used to extract tests from the files.
-
-    Advanced tomfoolery:  testmod runs methods of a local instance of
-    class doctest.Tester, then merges the results into (or creates)
-    global Tester instance doctest.master.  Methods of doctest.master
-    can be called directly too, if you want to do something unusual.
-    Passing report=0 to testmod is especially useful then, to delay
-    displaying a summary.  Invoke doctest.master.summarize(verbose)
-    when you're done fiddling.
-    """
-    global master
-
-    if package and not module_relative:
-        raise ValueError("Package may only be specified for module-"
-                         "relative paths.")
-
-    # Relativize the path
-    if module_relative:
-        package = _normalize_module(package)
-        filename = _module_relative_path(package, filename)
-
-    # If no name was given, then use the file's name.
-    if name is None:
-        name = os.path.basename(filename)
-
-    # Assemble the globals.
-    if globs is None:
-        globs = {}
-    else:
-        globs = globs.copy()
-    if extraglobs is not None:
-        globs.update(extraglobs)
-
-    if raise_on_error:
-        runner = DebugRunner(verbose=verbose, optionflags=optionflags)
-    else:
-        runner = DocTestRunner(verbose=verbose, optionflags=optionflags)
-
-    # Read the file, convert it to a test, and run it.
-    f = open(filename)
-    s = f.read()
-    f.close()
-    test = parser.get_doctest(s, globs, name, filename, 0)
-    runner.run(test)
-
-    if report:
-        runner.summarize()
-
-    if master is None:
-        master = runner
-    else:
-        master.merge(runner)
-
-    return runner.failures, runner.tries
-
-def run_docstring_examples(f, globs, verbose=False, name="NoName",
-                           compileflags=None, optionflags=0):
-    """
-    Test examples in the given object's docstring (`f`), using `globs`
-    as globals.  Optional argument `name` is used in failure messages.
-    If the optional argument `verbose` is true, then generate output
-    even if there are no failures.
-
-    `compileflags` gives the set of flags that should be used by the
-    Python compiler when running the examples.  If not specified, then
-    it will default to the set of future-import flags that apply to
-    `globs`.
-
-    Optional keyword arg `optionflags` specifies options for the
-    testing and output.  See the documentation for `testmod` for more
-    information.
-    """
-    # Find, parse, and run all tests in the given module.
-    finder = DocTestFinder(verbose=verbose, recurse=False)
-    runner = DocTestRunner(verbose=verbose, optionflags=optionflags)
-    for test in finder.find(f, name, globs=globs):
-        runner.run(test, compileflags=compileflags)
-
-######################################################################
-## 7. Tester
-######################################################################
-# This is provided only for backwards compatibility.  It's not
-# actually used in any way.
-
-class Tester:
-    def __init__(self, mod=None, globs=None, verbose=None,
-                 isprivate=None, optionflags=0):
-
-        warnings.warn("class Tester is deprecated; "
-                      "use class doctest.DocTestRunner instead",
-                      DeprecationWarning, stacklevel=2)
-        if mod is None and globs is None:
-            raise TypeError("Tester.__init__: must specify mod or globs")
-        if mod is not None and not inspect.ismodule(mod):
-            raise TypeError("Tester.__init__: mod must be a module; %r" %
-                            (mod,))
-        if globs is None:
-            globs = mod.__dict__
-        self.globs = globs
-
-        self.verbose = verbose
-        self.isprivate = isprivate
-        self.optionflags = optionflags
-        self.testfinder = DocTestFinder(_namefilter=isprivate)
-        self.testrunner = DocTestRunner(verbose=verbose,
-                                        optionflags=optionflags)
-
-    def runstring(self, s, name):
-        test = DocTestParser().get_doctest(s, self.globs, name, None, None)
-        if self.verbose:
-            print "Running string", name
-        (f,t) = self.testrunner.run(test)
-        if self.verbose:
-            print f, "of", t, "examples failed in string", name
-        return (f,t)
-
-    def rundoc(self, object, name=None, module=None):
-        f = t = 0
-        tests = self.testfinder.find(object, name, module=module,
-                                     globs=self.globs)
-        for test in tests:
-            (f2, t2) = self.testrunner.run(test)
-            (f,t) = (f+f2, t+t2)
-        return (f,t)
-
-    def rundict(self, d, name, module=None):
-        import types
-        m = types.ModuleType(name)
-        m.__dict__.update(d)
-        if module is None:
-            module = False
-        return self.rundoc(m, name, module)
-
-    def run__test__(self, d, name):
-        import types
-        m = types.ModuleType(name)
-        m.__test__ = d
-        return self.rundoc(m, name)
-
-    def summarize(self, verbose=None):
-        return self.testrunner.summarize(verbose)
-
-    def merge(self, other):
-        self.testrunner.merge(other.testrunner)
-
-######################################################################
-## 8. Unittest Support
-######################################################################
-
-_unittest_reportflags = 0
-
-def set_unittest_reportflags(flags):
-    """Sets the unittest option flags.
-
-    The old flag is returned so that a runner could restore the old
-    value if it wished to:
-
-      >>> old = _unittest_reportflags
-      >>> set_unittest_reportflags(REPORT_NDIFF |
-      ...                          REPORT_ONLY_FIRST_FAILURE) == old
-      True
-
-      >>> import doctest
-      >>> doctest._unittest_reportflags == (REPORT_NDIFF |
-      ...                                   REPORT_ONLY_FIRST_FAILURE)
-      True
-
-    Only reporting flags can be set:
-
-      >>> set_unittest_reportflags(ELLIPSIS)
-      Traceback (most recent call last):
-      ...
-      ValueError: ('Only reporting flags allowed', 8)
-
-      >>> set_unittest_reportflags(old) == (REPORT_NDIFF |
-      ...                                   REPORT_ONLY_FIRST_FAILURE)
-      True
-    """
-    global _unittest_reportflags
-
-    if (flags & REPORTING_FLAGS) != flags:
-        raise ValueError("Only reporting flags allowed", flags)
-    old = _unittest_reportflags
-    _unittest_reportflags = flags
-    return old
-
-
-class DocTestCase(unittest.TestCase):
-
-    def __init__(self, test, optionflags=0, setUp=None, tearDown=None,
-                 checker=None):
-
-        unittest.TestCase.__init__(self)
-        self._dt_optionflags = optionflags
-        self._dt_checker = checker
-        self._dt_test = test
-        self._dt_setUp = setUp
-        self._dt_tearDown = tearDown
-
-    def setUp(self):
-        test = self._dt_test
-
-        if self._dt_setUp is not None:
-            self._dt_setUp(test)
-
-    def tearDown(self):
-        test = self._dt_test
-
-        if self._dt_tearDown is not None:
-            self._dt_tearDown(test)
-
-        test.globs.clear()
-
-    def runTest(self):
-        test = self._dt_test
-        old = sys.stdout
-        new = StringIO()
-        optionflags = self._dt_optionflags
-
-        if not (optionflags & REPORTING_FLAGS):
-            # The option flags don't include any reporting flags,
-            # so add the default reporting flags
-            optionflags |= _unittest_reportflags
-
-        runner = DocTestRunner(optionflags=optionflags,
-                               checker=self._dt_checker, verbose=False)
-
-        try:
-            runner.DIVIDER = "-"*70
-            failures, tries = runner.run(
-                test, out=new.write, clear_globs=False)
-        finally:
-            sys.stdout = old
-
-        if failures:
-            raise self.failureException(self.format_failure(new.getvalue()))
-
-    def format_failure(self, err):
-        test = self._dt_test
-        if test.lineno is None:
-            lineno = 'unknown line number'
-        else:
-            lineno = '%s' % test.lineno
-        lname = '.'.join(test.name.split('.')[-1:])
-        return ('Failed doctest test for %s\n'
-                '  File "%s", line %s, in %s\n\n%s'
-                % (test.name, test.filename, lineno, lname, err)
-                )
-
-    def debug(self):
-        r"""Run the test case without results and without catching exceptions
-
-           The unit test framework includes a debug method on test cases
-           and test suites to support post-mortem debugging.  The test code
-           is run in such a way that errors are not caught.  This way a
-           caller can catch the errors and initiate post-mortem debugging.
-
-           The DocTestCase provides a debug method that raises
-           UnexpectedException errors if there is an unexepcted
-           exception:
-
-             >>> test = DocTestParser().get_doctest('>>> raise KeyError\n42',
-             ...                {}, 'foo', 'foo.py', 0)
-             >>> case = DocTestCase(test)
-             >>> try:
-             ...     case.debug()
-             ... except UnexpectedException, failure:
-             ...     pass
-
-           The UnexpectedException contains the test, the example, and
-           the original exception:
-
-             >>> failure.test is test
-             True
-
-             >>> failure.example.want
-             '42\n'
-
-             >>> exc_info = failure.exc_info
-             >>> raise exc_info[0], exc_info[1], exc_info[2]
-             Traceback (most recent call last):
-             ...
-             KeyError
-
-           If the output doesn't match, then a DocTestFailure is raised:
-
-             >>> test = DocTestParser().get_doctest('''
-             ...      >>> x = 1
-             ...      >>> x
-             ...      2
-             ...      ''', {}, 'foo', 'foo.py', 0)
-             >>> case = DocTestCase(test)
-
-             >>> try:
-             ...    case.debug()
-             ... except DocTestFailure, failure:
-             ...    pass
-
-           DocTestFailure objects provide access to the test:
-
-             >>> failure.test is test
-             True
-
-           As well as to the example:
-
-             >>> failure.example.want
-             '2\n'
-
-           and the actual output:
-
-             >>> failure.got
-             '1\n'
-
-           """
-
-        self.setUp()
-        runner = DebugRunner(optionflags=self._dt_optionflags,
-                             checker=self._dt_checker, verbose=False)
-        runner.run(self._dt_test)
-        self.tearDown()
-
-    def id(self):
-        return self._dt_test.name
-
-    def __repr__(self):
-        name = self._dt_test.name.split('.')
-        return "%s (%s)" % (name[-1], '.'.join(name[:-1]))
-
-    __str__ = __repr__
-
-    def shortDescription(self):
-        return "Doctest: " + self._dt_test.name
-
-def DocTestSuite(module=None, globs=None, extraglobs=None, test_finder=None,
-                 **options):
-    """
-    Convert doctest tests for a module to a unittest test suite.
-
-    This converts each documentation string in a module that
-    contains doctest tests to a unittest test case.  If any of the
-    tests in a doc string fail, then the test case fails.  An exception
-    is raised showing the name of the file containing the test and a
-    (sometimes approximate) line number.
-
-    The `module` argument provides the module to be tested.  The argument
-    can be either a module or a module name.
-
-    If no argument is given, the calling module is used.
-
-    A number of options may be provided as keyword arguments:
-
-    setUp
-      A set-up function.  This is called before running the
-      tests in each file. The setUp function will be passed a DocTest
-      object.  The setUp function can access the test globals as the
-      globs attribute of the test passed.
-
-    tearDown
-      A tear-down function.  This is called after running the
-      tests in each file.  The tearDown function will be passed a DocTest
-      object.  The tearDown function can access the test globals as the
-      globs attribute of the test passed.
-
-    globs
-      A dictionary containing initial global variables for the tests.
-
-    optionflags
-       A set of doctest option flags expressed as an integer.
-    """
-
-    if test_finder is None:
-        test_finder = DocTestFinder()
-
-    module = _normalize_module(module)
-    tests = test_finder.find(module, globs=globs, extraglobs=extraglobs)
-    if globs is None:
-        globs = module.__dict__
-    if not tests:
-        # Why do we want to do this? Because it reveals a bug that might
-        # otherwise be hidden.
-        raise ValueError(module, "has no tests")
-
-    tests.sort()
-    suite = unittest.TestSuite()
-    for test in tests:
-        if len(test.examples) == 0:
-            continue
-        if not test.filename:
-            filename = module.__file__
-            if filename[-4:] in (".pyc", ".pyo"):
-                filename = filename[:-1]
-            test.filename = filename
-        suite.addTest(DocTestCase(test, **options))
-
-    return suite
-
-class DocFileCase(DocTestCase):
-
-    def id(self):
-        return '_'.join(self._dt_test.name.split('.'))
-
-    def __repr__(self):
-        return self._dt_test.filename
-    __str__ = __repr__
-
-    def format_failure(self, err):
-        return ('Failed doctest test for %s\n  File "%s", line 0\n\n%s'
-                % (self._dt_test.name, self._dt_test.filename, err)
-                )
-
-def DocFileTest(path, module_relative=True, package=None,
-                globs=None, parser=DocTestParser(), **options):
-    if globs is None:
-        globs = {}
-
-    if package and not module_relative:
-        raise ValueError("Package may only be specified for module-"
-                         "relative paths.")
-
-    # Relativize the path.
-    if module_relative:
-        package = _normalize_module(package)
-        path = _module_relative_path(package, path)
-
-    # Find the file and read it.
-    name = os.path.basename(path)
-    f = open(path)
-    doc = f.read()
-    f.close()
-
-    # Convert it to a test, and wrap it in a DocFileCase.
-    test = parser.get_doctest(doc, globs, name, path, 0)
-    return DocFileCase(test, **options)
-
-def DocFileSuite(*paths, **kw):
-    """A unittest suite for one or more doctest files.
-
-    The path to each doctest file is given as a string; the
-    interpretation of that string depends on the keyword argument
-    "module_relative".
-
-    A number of options may be provided as keyword arguments:
-
-    module_relative
-      If "module_relative" is True, then the given file paths are
-      interpreted as os-independent module-relative paths.  By
-      default, these paths are relative to the calling module's
-      directory; but if the "package" argument is specified, then
-      they are relative to that package.  To ensure os-independence,
-      "filename" should use "/" characters to separate path
-      segments, and may not be an absolute path (i.e., it may not
-      begin with "/").
-
-      If "module_relative" is False, then the given file paths are
-      interpreted as os-specific paths.  These paths may be absolute
-      or relative (to the current working directory).
-
-    package
-      A Python package or the name of a Python package whose directory
-      should be used as the base directory for module relative paths.
-      If "package" is not specified, then the calling module's
-      directory is used as the base directory for module relative
-      filenames.  It is an error to specify "package" if
-      "module_relative" is False.
-
-    setUp
-      A set-up function.  This is called before running the
-      tests in each file. The setUp function will be passed a DocTest
-      object.  The setUp function can access the test globals as the
-      globs attribute of the test passed.
-
-    tearDown
-      A tear-down function.  This is called after running the
-      tests in each file.  The tearDown function will be passed a DocTest
-      object.  The tearDown function can access the test globals as the
-      globs attribute of the test passed.
-
-    globs
-      A dictionary containing initial global variables for the tests.
-
-    optionflags
-      A set of doctest option flags expressed as an integer.
-
-    parser
-      A DocTestParser (or subclass) that should be used to extract
-      tests from the files.
-    """
-    suite = unittest.TestSuite()
-
-    # We do this here so that _normalize_module is called at the right
-    # level.  If it were called in DocFileTest, then this function
-    # would be the caller and we might guess the package incorrectly.
-    if kw.get('module_relative', True):
-        kw['package'] = _normalize_module(kw.get('package'))
-
-    for path in paths:
-        suite.addTest(DocFileTest(path, **kw))
-
-    return suite
-
-######################################################################
-## 9. Debugging Support
-######################################################################
-
-def script_from_examples(s):
-    r"""Extract script from text with examples.
-
-       Converts text with examples to a Python script.  Example input is
-       converted to regular code.  Example output and all other words
-       are converted to comments:
-
-       >>> text = '''
-       ...       Here are examples of simple math.
-       ...
-       ...           Python has super accurate integer addition
-       ...
-       ...           >>> 2 + 2
-       ...           5
-       ...
-       ...           And very friendly error messages:
-       ...
-       ...           >>> 1/0
-       ...           To Infinity
-       ...           And
-       ...           Beyond
-       ...
-       ...           You can use logic if you want:
-       ...
-       ...           >>> if 0:
-       ...           ...    blah
-       ...           ...    blah
-       ...           ...
-       ...
-       ...           Ho hum
-       ...           '''
-
-       >>> print script_from_examples(text)
-       # Here are examples of simple math.
-       #
-       #     Python has super accurate integer addition
-       #
-       2 + 2
-       # Expected:
-       ## 5
-       #
-       #     And very friendly error messages:
-       #
-       1/0
-       # Expected:
-       ## To Infinity
-       ## And
-       ## Beyond
-       #
-       #     You can use logic if you want:
-       #
-       if 0:
-          blah
-          blah
-       #
-       #     Ho hum
-       """
-    output = []
-    for piece in DocTestParser().parse(s):
-        if isinstance(piece, Example):
-            # Add the example's source code (strip trailing NL)
-            output.append(piece.source[:-1])
-            # Add the expected output:
-            want = piece.want
-            if want:
-                output.append('# Expected:')
-                output += ['## '+l for l in want.split('\n')[:-1]]
-        else:
-            # Add non-example text.
-            output += [_comment_line(l)
-                       for l in piece.split('\n')[:-1]]
-
-    # Trim junk on both ends.
-    while output and output[-1] == '#':
-        output.pop()
-    while output and output[0] == '#':
-        output.pop(0)
-    # Combine the output, and return it.
-    return '\n'.join(output)
-
-def testsource(module, name):
-    """Extract the test sources from a doctest docstring as a script.
-
-    Provide the module (or dotted name of the module) containing the
-    test to be debugged and the name (within the module) of the object
-    with the doc string with tests to be debugged.
-    """
-    module = _normalize_module(module)
-    tests = DocTestFinder().find(module)
-    test = [t for t in tests if t.name == name]
-    if not test:
-        raise ValueError(name, "not found in tests")
-    test = test[0]
-    testsrc = script_from_examples(test.docstring)
-    return testsrc
-
-def debug_src(src, pm=False, globs=None):
-    """Debug a single doctest docstring, in argument `src`'"""
-    testsrc = script_from_examples(src)
-    debug_script(testsrc, pm, globs)
-
-def debug_script(src, pm=False, globs=None):
-    "Debug a test script.  `src` is the script, as a string."
-    import pdb
-
-    # Note that tempfile.NameTemporaryFile() cannot be used.  As the
-    # docs say, a file so created cannot be opened by name a second time
-    # on modern Windows boxes, and execfile() needs to open it.
-    srcfilename = tempfile.mktemp(".py", "doctestdebug")
-    f = open(srcfilename, 'w')
-    f.write(src)
-    f.close()
-
-    try:
-        if globs:
-            globs = globs.copy()
-        else:
-            globs = {}
-
-        if pm:
-            try:
-                execfile(srcfilename, globs, globs)
-            except:
-                print sys.exc_info()[1]
-                pdb.post_mortem(sys.exc_info()[2])
-        else:
-            # Note that %r is vital here.  '%s' instead can, e.g., cause
-            # backslashes to get treated as metacharacters on Windows.
-            pdb.run("execfile(%r)" % srcfilename, globs, globs)
-
-    finally:
-        os.remove(srcfilename)
-
-def debug(module, name, pm=False):
-    """Debug a single doctest docstring.
-
-    Provide the module (or dotted name of the module) containing the
-    test to be debugged and the name (within the module) of the object
-    with the docstring with tests to be debugged.
-    """
-    module = _normalize_module(module)
-    testsrc = testsource(module, name)
-    debug_script(testsrc, pm, module.__dict__)
-
-######################################################################
-## 10. Example Usage
-######################################################################
-class _TestClass:
-    """
-    A pointless class, for sanity-checking of docstring testing.
-
-    Methods:
-        square()
-        get()
-
-    >>> _TestClass(13).get() + _TestClass(-12).get()
-    1
-    >>> hex(_TestClass(13).square().get())
-    '0xa9'
-    """
-
-    def __init__(self, val):
-        """val -> _TestClass object with associated value val.
-
-        >>> t = _TestClass(123)
-        >>> print t.get()
-        123
-        """
-
-        self.val = val
-
-    def square(self):
-        """square() -> square TestClass's associated value
-
-        >>> _TestClass(13).square().get()
-        169
-        """
-
-        self.val = self.val ** 2
-        return self
-
-    def get(self):
-        """get() -> return TestClass's associated value.
-
-        >>> x = _TestClass(-42)
-        >>> print x.get()
-        -42
-        """
-
-        return self.val
-
-__test__ = {"_TestClass": _TestClass,
-            "string": r"""
-                      Example of a string object, searched as-is.
-                      >>> x = 1; y = 2
-                      >>> x + y, x * y
-                      (3, 2)
-                      """,
-
-            "bool-int equivalence": r"""
-                                    In 2.2, boolean expressions displayed
-                                    0 or 1.  By default, we still accept
-                                    them.  This can be disabled by passing
-                                    DONT_ACCEPT_TRUE_FOR_1 to the new
-                                    optionflags argument.
-                                    >>> 4 == 4
-                                    1
-                                    >>> 4 == 4
-                                    True
-                                    >>> 4 > 4
-                                    0
-                                    >>> 4 > 4
-                                    False
-                                    """,
-
-            "blank lines": r"""
-                Blank lines can be marked with <BLANKLINE>:
-                    >>> print 'foo\n\nbar\n'
-                    foo
-                    <BLANKLINE>
-                    bar
-                    <BLANKLINE>
-            """,
-
-            "ellipsis": r"""
-                If the ellipsis flag is used, then '...' can be used to
-                elide substrings in the desired output:
-                    >>> print range(1000) #doctest: +ELLIPSIS
-                    [0, 1, 2, ..., 999]
-            """,
-
-            "whitespace normalization": r"""
-                If the whitespace normalization flag is used, then
-                differences in whitespace are ignored.
-                    >>> print range(30) #doctest: +NORMALIZE_WHITESPACE
-                    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
-                     15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
-                     27, 28, 29]
-            """,
-           }
-
-def _test():
-    r = unittest.TextTestRunner()
-    r.run(DocTestSuite())
-
-if __name__ == "__main__":
-    _test()
-
diff --git a/vendor/distribute-0.6.34/setuptools/tests/indexes/test_links_priority/external.html b/vendor/distribute-0.6.34/setuptools/tests/indexes/test_links_priority/external.html
deleted file mode 100644
index 92e4702f..00000000
--- a/vendor/distribute-0.6.34/setuptools/tests/indexes/test_links_priority/external.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>
-<a href="/foobar-0.1.tar.gz#md5=1__bad_md5___">bad old link</a>
-</body></html>
diff --git a/vendor/distribute-0.6.34/setuptools/tests/indexes/test_links_priority/simple/foobar/index.html b/vendor/distribute-0.6.34/setuptools/tests/indexes/test_links_priority/simple/foobar/index.html
deleted file mode 100644
index fefb028b..00000000
--- a/vendor/distribute-0.6.34/setuptools/tests/indexes/test_links_priority/simple/foobar/index.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><body>
-<a href="/foobar-0.1.tar.gz#md5=0_correct_md5">foobar-0.1.tar.gz</a><br/>
-<a href="../../external.html" rel="homepage">external homepage</a><br/>
-</body></html>
diff --git a/vendor/distribute-0.6.34/setuptools/tests/py26compat.py b/vendor/distribute-0.6.34/setuptools/tests/py26compat.py
deleted file mode 100644
index d4fb891a..00000000
--- a/vendor/distribute-0.6.34/setuptools/tests/py26compat.py
+++ /dev/null
@@ -1,14 +0,0 @@
-import unittest
-
-try:
-	# provide skipIf for Python 2.4-2.6
-	skipIf = unittest.skipIf
-except AttributeError:
-	def skipIf(condition, reason):
-		def skipper(func):
-			def skip(*args, **kwargs):
-				return
-			if condition:
-				return skip
-			return func
-		return skipper
diff --git a/vendor/distribute-0.6.34/setuptools/tests/server.py b/vendor/distribute-0.6.34/setuptools/tests/server.py
deleted file mode 100644
index b2ab7acc..00000000
--- a/vendor/distribute-0.6.34/setuptools/tests/server.py
+++ /dev/null
@@ -1,82 +0,0 @@
-"""Basic http server for tests to simulate PyPI or custom indexes
-"""
-import urllib2
-import sys
-import time
-import threading
-import BaseHTTPServer
-from BaseHTTPServer import HTTPServer
-from SimpleHTTPServer import SimpleHTTPRequestHandler
-
-class IndexServer(HTTPServer):
-    """Basic single-threaded http server simulating a package index
-
-    You can use this server in unittest like this::
-        s = IndexServer()
-        s.start()
-        index_url = s.base_url() + 'mytestindex'
-        # do some test requests to the index
-        # The index files should be located in setuptools/tests/indexes
-        s.stop()
-    """
-    def __init__(self, server_address=('', 0),
-            RequestHandlerClass=SimpleHTTPRequestHandler):
-        HTTPServer.__init__(self, server_address, RequestHandlerClass)
-        self._run = True
-
-    def serve(self):
-        while self._run:
-            self.handle_request()
-
-    def start(self):
-        self.thread = threading.Thread(target=self.serve)
-        self.thread.start()
-
-    def stop(self):
-        "Stop the server"
-
-        # Let the server finish the last request and wait for a new one.
-        time.sleep(0.1)
-
-        # self.shutdown is not supported on python < 2.6, so just
-        #  set _run to false, and make a request, causing it to
-        #  terminate.
-        self._run = False
-        url = 'http://127.0.0.1:%(server_port)s/' % vars(self)
-        try:
-            if sys.version_info >= (2, 6):
-                urllib2.urlopen(url, timeout=5)
-            else:
-                urllib2.urlopen(url)
-        except urllib2.URLError:
-            # ignore any errors; all that's important is the request
-            pass
-        self.thread.join()
-
-    def base_url(self):
-        port = self.server_port
-        return 'http://127.0.0.1:%s/setuptools/tests/indexes/' % port
-
-class RequestRecorder(BaseHTTPServer.BaseHTTPRequestHandler):
-    def do_GET(self):
-        requests = vars(self.server).setdefault('requests', [])
-        requests.append(self)
-        self.send_response(200, 'OK')
-
-class MockServer(HTTPServer, threading.Thread):
-    """
-    A simple HTTP Server that records the requests made to it.
-    """
-    def __init__(self, server_address=('', 0),
-            RequestHandlerClass=RequestRecorder):
-        HTTPServer.__init__(self, server_address, RequestHandlerClass)
-        threading.Thread.__init__(self)
-        self.setDaemon(True)
-        self.requests = []
-
-    def run(self):
-        self.serve_forever()
-
-    def url(self):
-        return 'http://localhost:%(server_port)s/' % vars(self)
-    url = property(url)
diff --git a/vendor/distribute-0.6.34/setuptools/tests/test_bdist_egg.py b/vendor/distribute-0.6.34/setuptools/tests/test_bdist_egg.py
deleted file mode 100644
index 7da122cc..00000000
--- a/vendor/distribute-0.6.34/setuptools/tests/test_bdist_egg.py
+++ /dev/null
@@ -1,69 +0,0 @@
-"""develop tests
-"""
-import sys
-import os, re, shutil, tempfile, unittest
-import tempfile
-import site
-from StringIO import StringIO
-
-from distutils.errors import DistutilsError
-from setuptools.command.bdist_egg import bdist_egg
-from setuptools.command import easy_install as easy_install_pkg
-from setuptools.dist import Distribution
-
-SETUP_PY = """\
-from setuptools import setup
-
-setup(name='foo', py_modules=['hi'])
-"""
-
-class TestDevelopTest(unittest.TestCase):
-
-    def setUp(self):
-        self.dir = tempfile.mkdtemp()
-        self.old_cwd = os.getcwd()
-        os.chdir(self.dir)
-        f = open('setup.py', 'w')
-        f.write(SETUP_PY)
-        f.close()
-        f = open('hi.py', 'w')
-        f.write('1\n')
-        f.close()
-        if sys.version >= "2.6":
-            self.old_base = site.USER_BASE
-            site.USER_BASE = tempfile.mkdtemp()
-            self.old_site = site.USER_SITE
-            site.USER_SITE = tempfile.mkdtemp()
-
-    def tearDown(self):
-        os.chdir(self.old_cwd)
-        shutil.rmtree(self.dir)
-        if sys.version >= "2.6":
-            shutil.rmtree(site.USER_BASE)
-            shutil.rmtree(site.USER_SITE)
-            site.USER_BASE = self.old_base
-            site.USER_SITE = self.old_site
-
-    def test_bdist_egg(self):
-        dist = Distribution(dict(
-            script_name='setup.py',
-            script_args=['bdist_egg'],
-            name='foo',
-            py_modules=['hi']
-            ))
-        os.makedirs(os.path.join('build', 'src'))
-        old_stdout = sys.stdout
-        sys.stdout = o = StringIO()
-        try:
-            dist.parse_command_line()
-            dist.run_commands()
-        finally:
-            sys.stdout = old_stdout
-
-        # let's see if we got our egg link at the right place
-        [content] = os.listdir('dist')
-        self.assertTrue(re.match('foo-0.0.0-py[23].\d.egg$', content))
-
-def test_suite():
-    return unittest.makeSuite(TestDevelopTest)
-
diff --git a/vendor/distribute-0.6.34/setuptools/tests/test_build_ext.py b/vendor/distribute-0.6.34/setuptools/tests/test_build_ext.py
deleted file mode 100644
index a520ced9..00000000
--- a/vendor/distribute-0.6.34/setuptools/tests/test_build_ext.py
+++ /dev/null
@@ -1,20 +0,0 @@
-"""build_ext tests
-"""
-import os, shutil, tempfile, unittest
-from distutils.command.build_ext import build_ext as distutils_build_ext
-from setuptools.command.build_ext import build_ext
-from setuptools.dist import Distribution
-
-class TestBuildExtTest(unittest.TestCase):
-
-    def test_get_ext_filename(self):
-        # setuptools needs to give back the same
-        # result than distutils, even if the fullname
-        # is not in ext_map
-        dist = Distribution()
-        cmd = build_ext(dist)
-        cmd.ext_map['foo/bar'] = ''
-        res = cmd.get_ext_filename('foo')
-        wanted = distutils_build_ext.get_ext_filename(cmd, 'foo')
-        assert res == wanted
-
diff --git a/vendor/distribute-0.6.34/setuptools/tests/test_develop.py b/vendor/distribute-0.6.34/setuptools/tests/test_develop.py
deleted file mode 100644
index 315058c5..00000000
--- a/vendor/distribute-0.6.34/setuptools/tests/test_develop.py
+++ /dev/null
@@ -1,118 +0,0 @@
-"""develop tests
-"""
-import sys
-import os, shutil, tempfile, unittest
-import tempfile
-import site
-from StringIO import StringIO
-
-from distutils.errors import DistutilsError
-from setuptools.command.develop import develop
-from setuptools.command import easy_install as easy_install_pkg
-from setuptools.dist import Distribution
-
-SETUP_PY = """\
-from setuptools import setup
-
-setup(name='foo',
-    packages=['foo'],
-    use_2to3=True,
-)
-"""
-
-INIT_PY = """print "foo"
-"""
-
-class TestDevelopTest(unittest.TestCase):
-
-    def setUp(self):
-        if sys.version < "2.6" or hasattr(sys, 'real_prefix'):
-            return
-
-        # Directory structure
-        self.dir = tempfile.mkdtemp()
-        os.mkdir(os.path.join(self.dir, 'foo'))
-        # setup.py
-        setup = os.path.join(self.dir, 'setup.py')
-        f = open(setup, 'w')
-        f.write(SETUP_PY)
-        f.close()
-        self.old_cwd = os.getcwd()
-        # foo/__init__.py
-        init = os.path.join(self.dir, 'foo', '__init__.py')
-        f = open(init, 'w')
-        f.write(INIT_PY)
-        f.close()
-        
-        os.chdir(self.dir)
-        self.old_base = site.USER_BASE
-        site.USER_BASE = tempfile.mkdtemp()
-        self.old_site = site.USER_SITE
-        site.USER_SITE = tempfile.mkdtemp()
-
-    def tearDown(self):
-        if sys.version < "2.6" or hasattr(sys, 'real_prefix'):
-            return
-        
-        os.chdir(self.old_cwd)
-        shutil.rmtree(self.dir)
-        shutil.rmtree(site.USER_BASE)
-        shutil.rmtree(site.USER_SITE)
-        site.USER_BASE = self.old_base
-        site.USER_SITE = self.old_site
-
-    def test_develop(self):
-        if sys.version < "2.6" or hasattr(sys, 'real_prefix'):
-            return
-        dist = Distribution(
-            dict(name='foo',
-                 packages=['foo'],
-                 use_2to3=True,
-                 version='0.0',
-                 ))
-        dist.script_name = 'setup.py'
-        cmd = develop(dist)
-        cmd.user = 1
-        cmd.ensure_finalized()
-        cmd.install_dir = site.USER_SITE
-        cmd.user = 1
-        old_stdout = sys.stdout
-        #sys.stdout = StringIO()
-        try:
-            cmd.run()
-        finally:
-            sys.stdout = old_stdout
-
-        # let's see if we got our egg link at the right place
-        content = os.listdir(site.USER_SITE)
-        content.sort()
-        self.assertEqual(content, ['easy-install.pth', 'foo.egg-link'])
-
-        # Check that we are using the right code.
-        egg_link_file = open(os.path.join(site.USER_SITE, 'foo.egg-link'), 'rt')
-        path = egg_link_file.read().split()[0].strip()
-        egg_link_file.close()
-        init_file = open(os.path.join(path, 'foo', '__init__.py'), 'rt')
-        init = init_file.read().strip()
-        init_file.close()
-        if sys.version < "3":
-            self.assertEqual(init, 'print "foo"')
-        else:
-            self.assertEqual(init, 'print("foo")')
-
-    def notest_develop_with_setup_requires(self):
-
-        wanted = ("Could not find suitable distribution for "
-                  "Requirement.parse('I-DONT-EXIST')")
-        old_dir = os.getcwd()
-        os.chdir(self.dir)
-        try:
-            try:
-                dist = Distribution({'setup_requires': ['I_DONT_EXIST']})
-            except DistutilsError, e:
-                error = str(e)
-                if error ==  wanted:
-                    pass
-        finally:
-            os.chdir(old_dir)
-
diff --git a/vendor/distribute-0.6.34/setuptools/tests/test_dist_info.py b/vendor/distribute-0.6.34/setuptools/tests/test_dist_info.py
deleted file mode 100644
index fcb78c36..00000000
--- a/vendor/distribute-0.6.34/setuptools/tests/test_dist_info.py
+++ /dev/null
@@ -1,80 +0,0 @@
-"""Test .dist-info style distributions.
-"""
-import os
-import shutil
-import tempfile
-import unittest
-import textwrap
-
-try:
-    import ast
-except:
-    pass
-
-import pkg_resources
-
-from setuptools.tests.py26compat import skipIf
-
-def DALS(s):
-    "dedent and left-strip"
-    return textwrap.dedent(s).lstrip()
-
-class TestDistInfo(unittest.TestCase):
-
-    def test_distinfo(self):
-        dists = {}
-        for d in pkg_resources.find_distributions(self.tmpdir):
-            dists[d.project_name] = d
-
-        assert len(dists) == 2, dists
-
-        unversioned = dists['UnversionedDistribution']
-        versioned = dists['VersionedDistribution']
-
-        assert versioned.version == '2.718' # from filename
-        assert unversioned.version == '0.3' # from METADATA
-
-    @skipIf('ast' not in globals(),
-        "ast is used to test conditional dependencies (Python >= 2.6)")
-    def test_conditional_dependencies(self):
-        requires = [pkg_resources.Requirement.parse('splort==4'),
-                    pkg_resources.Requirement.parse('quux>=1.1')]
-
-        for d in pkg_resources.find_distributions(self.tmpdir):
-            self.assertEqual(d.requires(), requires[:1])
-            self.assertEqual(d.requires(extras=('baz',)), requires)
-            self.assertEqual(d.extras, ['baz'])
-
-    def setUp(self):
-        self.tmpdir = tempfile.mkdtemp()
-        versioned = os.path.join(self.tmpdir,
-                                 'VersionedDistribution-2.718.dist-info')
-        os.mkdir(versioned)
-        metadata_file = open(os.path.join(versioned, 'METADATA'), 'w+')
-        metadata_file.write(DALS(
-            """
-            Metadata-Version: 1.2
-            Name: VersionedDistribution
-            Requires-Dist: splort (4)
-            Provides-Extra: baz
-            Requires-Dist: quux (>=1.1); extra == 'baz'
-            """))
-        metadata_file.close()
-
-        unversioned = os.path.join(self.tmpdir,
-                                   'UnversionedDistribution.dist-info')
-        os.mkdir(unversioned)
-        metadata_file = open(os.path.join(unversioned, 'METADATA'), 'w+')
-        metadata_file.write(DALS(
-            """
-            Metadata-Version: 1.2
-            Name: UnversionedDistribution
-            Version: 0.3
-            Requires-Dist: splort (==4)
-            Provides-Extra: baz
-            Requires-Dist: quux (>=1.1); extra == 'baz'
-            """))
-        metadata_file.close()
-
-    def tearDown(self):
-        shutil.rmtree(self.tmpdir)
diff --git a/vendor/distribute-0.6.34/setuptools/tests/test_easy_install.py b/vendor/distribute-0.6.34/setuptools/tests/test_easy_install.py
deleted file mode 100644
index 582219ce..00000000
--- a/vendor/distribute-0.6.34/setuptools/tests/test_easy_install.py
+++ /dev/null
@@ -1,460 +0,0 @@
-"""Easy install Tests
-"""
-import sys
-import os
-import shutil
-import tempfile
-import unittest
-import site
-import textwrap
-import tarfile
-import urlparse
-import StringIO
-import distutils.core
-
-from setuptools.sandbox import run_setup, SandboxViolation
-from setuptools.command.easy_install import easy_install, fix_jython_executable, get_script_args, main
-from setuptools.command.easy_install import  PthDistributions
-from setuptools.command import easy_install as easy_install_pkg
-from setuptools.dist import Distribution
-from pkg_resources import Distribution as PRDistribution
-import setuptools.tests.server
-
-try:
-    # import multiprocessing solely for the purpose of testing its existence
-    __import__('multiprocessing')
-    import logging
-    _LOG = logging.getLogger('test_easy_install')
-    logging.basicConfig(level=logging.INFO, stream=sys.stderr)
-    _MULTIPROC = True
-except ImportError:
-    _MULTIPROC = False
-    _LOG = None
-
-class FakeDist(object):
-    def get_entry_map(self, group):
-        if group != 'console_scripts':
-            return {}
-        return {'name': 'ep'}
-
-    def as_requirement(self):
-        return 'spec'
-
-WANTED = """\
-#!%s
-# EASY-INSTALL-ENTRY-SCRIPT: 'spec','console_scripts','name'
-__requires__ = 'spec'
-import sys
-from pkg_resources import load_entry_point
-
-if __name__ == '__main__':
-    sys.exit(
-        load_entry_point('spec', 'console_scripts', 'name')()
-    )
-""" % fix_jython_executable(sys.executable, "")
-
-SETUP_PY = """\
-from setuptools import setup
-
-setup(name='foo')
-"""
-
-class TestEasyInstallTest(unittest.TestCase):
-
-    def test_install_site_py(self):
-        dist = Distribution()
-        cmd = easy_install(dist)
-        cmd.sitepy_installed = False
-        cmd.install_dir = tempfile.mkdtemp()
-        try:
-            cmd.install_site_py()
-            sitepy = os.path.join(cmd.install_dir, 'site.py')
-            self.assertTrue(os.path.exists(sitepy))
-        finally:
-            shutil.rmtree(cmd.install_dir)
-
-    def test_get_script_args(self):
-        dist = FakeDist()
-
-        old_platform = sys.platform
-        try:
-            name, script = [i for i in get_script_args(dist).next()][0:2]
-        finally:
-            sys.platform = old_platform
-
-        self.assertEqual(script, WANTED)
-
-    def test_no_setup_cfg(self):
-        # makes sure easy_install as a command (main)
-        # doesn't use a setup.cfg file that is located
-        # in the current working directory
-        dir = tempfile.mkdtemp()
-        setup_cfg = open(os.path.join(dir, 'setup.cfg'), 'w')
-        setup_cfg.write('[easy_install]\nfind_links = http://example.com')
-        setup_cfg.close()
-        setup_py = open(os.path.join(dir, 'setup.py'), 'w')
-        setup_py.write(SETUP_PY)
-        setup_py.close()
-
-        from setuptools.dist import Distribution
-
-        def _parse_command_line(self):
-            msg = 'Error: a local setup.cfg was used'
-            opts = self.command_options
-            if 'easy_install' in opts:
-                assert 'find_links' not in opts['easy_install'], msg
-            return self._old_parse_command_line()
-
-        Distribution._old_parse_command_line = Distribution.parse_command_line
-        Distribution.parse_command_line = _parse_command_line
-
-        old_wd = os.getcwd()
-        try:
-            os.chdir(dir)
-            reset_setup_stop_context(
-                lambda: self.assertRaises(SystemExit, main, [])
-            )
-        finally:
-            os.chdir(old_wd)
-            shutil.rmtree(dir)
-            Distribution.parse_command_line = Distribution._old_parse_command_line
-
-    def test_no_find_links(self):
-        # new option '--no-find-links', that blocks find-links added at
-        # the project level
-        dist = Distribution()
-        cmd = easy_install(dist)
-        cmd.check_pth_processing = lambda: True
-        cmd.no_find_links = True
-        cmd.find_links = ['link1', 'link2']
-        cmd.install_dir = os.path.join(tempfile.mkdtemp(), 'ok')
-        cmd.args = ['ok']
-        cmd.ensure_finalized()
-        self.assertEqual(cmd.package_index.scanned_urls, {})
-
-        # let's try without it (default behavior)
-        cmd = easy_install(dist)
-        cmd.check_pth_processing = lambda: True
-        cmd.find_links = ['link1', 'link2']
-        cmd.install_dir = os.path.join(tempfile.mkdtemp(), 'ok')
-        cmd.args = ['ok']
-        cmd.ensure_finalized()
-        keys = cmd.package_index.scanned_urls.keys()
-        keys.sort()
-        self.assertEqual(keys, ['link1', 'link2'])
-
-
-class TestPTHFileWriter(unittest.TestCase):
-    def test_add_from_cwd_site_sets_dirty(self):
-        '''a pth file manager should set dirty
-        if a distribution is in site but also the cwd
-        '''
-        pth = PthDistributions('does-not_exist', [os.getcwd()])
-        self.assertTrue(not pth.dirty)
-        pth.add(PRDistribution(os.getcwd()))
-        self.assertTrue(pth.dirty)
-
-    def test_add_from_site_is_ignored(self):
-        if os.name != 'nt':
-            location = '/test/location/does-not-have-to-exist'
-        else:
-            location = 'c:\\does_not_exist'
-        pth = PthDistributions('does-not_exist', [location, ])
-        self.assertTrue(not pth.dirty)
-        pth.add(PRDistribution(location))
-        self.assertTrue(not pth.dirty)
-
-
-class TestUserInstallTest(unittest.TestCase):
-
-    def setUp(self):
-        self.dir = tempfile.mkdtemp()
-        setup = os.path.join(self.dir, 'setup.py')
-        f = open(setup, 'w')
-        f.write(SETUP_PY)
-        f.close()
-        self.old_cwd = os.getcwd()
-        os.chdir(self.dir)
-        if sys.version >= "2.6":
-            self.old_has_site = easy_install_pkg.HAS_USER_SITE
-            self.old_file = easy_install_pkg.__file__
-            self.old_base = site.USER_BASE
-            site.USER_BASE = tempfile.mkdtemp()
-            self.old_site = site.USER_SITE
-            site.USER_SITE = tempfile.mkdtemp()
-            easy_install_pkg.__file__ = site.USER_SITE
-
-    def tearDown(self):
-        os.chdir(self.old_cwd)
-        shutil.rmtree(self.dir)
-        if sys.version >= "2.6":
-            shutil.rmtree(site.USER_BASE)
-            shutil.rmtree(site.USER_SITE)
-            site.USER_BASE = self.old_base
-            site.USER_SITE = self.old_site
-            easy_install_pkg.HAS_USER_SITE = self.old_has_site
-            easy_install_pkg.__file__ = self.old_file
-
-    def test_user_install_implied(self):
-        easy_install_pkg.HAS_USER_SITE = True # disabled sometimes
-        #XXX: replace with something meaningfull
-        if sys.version < "2.6":
-            return #SKIP
-        dist = Distribution()
-        dist.script_name = 'setup.py'
-        cmd = easy_install(dist)
-        cmd.args = ['py']
-        cmd.ensure_finalized()
-        self.assertTrue(cmd.user, 'user should be implied')
-
-    def test_multiproc_atexit(self):
-        if not _MULTIPROC:
-            return
-        _LOG.info('this should not break')
-
-    def test_user_install_not_implied_without_usersite_enabled(self):
-        easy_install_pkg.HAS_USER_SITE = False # usually enabled
-        #XXX: replace with something meaningfull
-        if sys.version < "2.6":
-            return #SKIP
-        dist = Distribution()
-        dist.script_name = 'setup.py'
-        cmd = easy_install(dist)
-        cmd.args = ['py']
-        cmd.initialize_options()
-        self.assertFalse(cmd.user, 'NOT user should be implied')
-
-    def test_local_index(self):
-        # make sure the local index is used
-        # when easy_install looks for installed
-        # packages
-        new_location = tempfile.mkdtemp()
-        target = tempfile.mkdtemp()
-        egg_file = os.path.join(new_location, 'foo-1.0.egg-info')
-        f = open(egg_file, 'w')
-        try:
-            f.write('Name: foo\n')
-        finally:
-            f.close()
-
-        sys.path.append(target)
-        old_ppath = os.environ.get('PYTHONPATH')
-        os.environ['PYTHONPATH'] = os.path.pathsep.join(sys.path)
-        try:
-            dist = Distribution()
-            dist.script_name = 'setup.py'
-            cmd = easy_install(dist)
-            cmd.install_dir = target
-            cmd.args = ['foo']
-            cmd.ensure_finalized()
-            cmd.local_index.scan([new_location])
-            res = cmd.easy_install('foo')
-            self.assertEqual(os.path.realpath(res.location),
-                             os.path.realpath(new_location))
-        finally:
-            sys.path.remove(target)
-            for basedir in [new_location, target, ]:
-                if not os.path.exists(basedir) or not os.path.isdir(basedir):
-                    continue
-                try:
-                    shutil.rmtree(basedir)
-                except:
-                    pass
-            if old_ppath is not None:
-                os.environ['PYTHONPATH'] = old_ppath
-            else:
-                del os.environ['PYTHONPATH']
-
-    def test_setup_requires(self):
-        """Regression test for issue #318
-
-        Ensures that a package with setup_requires can be installed when
-        distribute is installed in the user site-packages without causing a
-        SandboxViolation.
-        """
-
-        test_setup_attrs = {
-            'name': 'test_pkg', 'version': '0.0',
-            'setup_requires': ['foobar'],
-            'dependency_links': [os.path.abspath(self.dir)]
-        }
-
-        test_pkg = os.path.join(self.dir, 'test_pkg')
-        test_setup_py = os.path.join(test_pkg, 'setup.py')
-        test_setup_cfg = os.path.join(test_pkg, 'setup.cfg')
-        os.mkdir(test_pkg)
-
-        f = open(test_setup_py, 'w')
-        f.write(textwrap.dedent("""\
-            import setuptools
-            setuptools.setup(**%r)
-        """ % test_setup_attrs))
-        f.close()
-
-        foobar_path = os.path.join(self.dir, 'foobar-0.1.tar.gz')
-        make_trivial_sdist(
-            foobar_path,
-            textwrap.dedent("""\
-                import setuptools
-                setuptools.setup(
-                    name='foobar',
-                    version='0.1'
-                )
-            """))
-
-        old_stdout = sys.stdout
-        old_stderr = sys.stderr
-        sys.stdout = StringIO.StringIO()
-        sys.stderr = StringIO.StringIO()
-        try:
-            reset_setup_stop_context(
-                lambda: run_setup(test_setup_py, ['install'])
-            )
-        except SandboxViolation:
-            self.fail('Installation caused SandboxViolation')
-        finally:
-            sys.stdout = old_stdout
-            sys.stderr = old_stderr
-
-
-class TestSetupRequires(unittest.TestCase):
-
-    def test_setup_requires_honors_fetch_params(self):
-        """
-        When easy_install installs a source distribution which specifies
-        setup_requires, it should honor the fetch parameters (such as
-        allow-hosts, index-url, and find-links).
-        """
-        # set up a server which will simulate an alternate package index.
-        p_index = setuptools.tests.server.MockServer()
-        p_index.start()
-        netloc = 1
-        p_index_loc = urlparse.urlparse(p_index.url)[netloc]
-        if p_index_loc.endswith(':0'):
-            # Some platforms (Jython) don't find a port to which to bind,
-            #  so skip this test for them.
-            return
-
-        # I realize this is all-but-impossible to read, because it was
-        #  ported from some well-factored, safe code using 'with'. If you
-        #  need to maintain this code, consider making the changes in
-        #  the parent revision (of this comment) and then port the changes
-        #  back for Python 2.4 (or deprecate Python 2.4).
-
-        def install(dist_file):
-            def install_at(temp_install_dir):
-                def install_env():
-                    ei_params = ['--index-url', p_index.url,
-                        '--allow-hosts', p_index_loc,
-                        '--exclude-scripts', '--install-dir', temp_install_dir,
-                        dist_file]
-                    def install_clean_reset():
-                        def install_clean_argv():
-                            # attempt to install the dist. It should fail because
-                            #  it doesn't exist.
-                            self.assertRaises(SystemExit,
-                                easy_install_pkg.main, ei_params)
-                        argv_context(install_clean_argv, ['easy_install'])
-                    reset_setup_stop_context(install_clean_reset)
-                environment_context(install_env, PYTHONPATH=temp_install_dir)
-            tempdir_context(install_at)
-
-        # create an sdist that has a build-time dependency.
-        self.create_sdist(install)
-
-        # there should have been two or three requests to the server
-        #  (three happens on Python 3.3a)
-        self.assertTrue(2 <= len(p_index.requests) <= 3)
-        self.assertEqual(p_index.requests[0].path, '/does-not-exist/')
-
-    def create_sdist(self, installer):
-        """
-        Create an sdist with a setup_requires dependency (of something that
-        doesn't exist) and invoke installer on it.
-        """
-        def build_sdist(dir):
-            dist_path = os.path.join(dir, 'distribute-test-fetcher-1.0.tar.gz')
-            make_trivial_sdist(
-                dist_path,
-                textwrap.dedent("""
-                    import setuptools
-                    setuptools.setup(
-                        name="distribute-test-fetcher",
-                        version="1.0",
-                        setup_requires = ['does-not-exist'],
-                    )
-                """).lstrip())
-            installer(dist_path)
-        tempdir_context(build_sdist)
-
-
-def make_trivial_sdist(dist_path, setup_py):
-    """Create a simple sdist tarball at dist_path, containing just a
-    setup.py, the contents of which are provided by the setup_py string.
-    """
-
-    setup_py_file = tarfile.TarInfo(name='setup.py')
-    try:
-        # Python 3 (StringIO gets converted to io module)
-        MemFile = StringIO.BytesIO
-    except AttributeError:
-        MemFile = StringIO.StringIO
-    setup_py_bytes = MemFile(setup_py.encode('utf-8'))
-    setup_py_file.size = len(setup_py_bytes.getvalue())
-    dist = tarfile.open(dist_path, 'w:gz')
-    try:
-        dist.addfile(setup_py_file, fileobj=setup_py_bytes)
-    finally:
-        dist.close()
-
-
-def tempdir_context(f, cd=lambda dir:None):
-    """
-    Invoke f in the context
-    """
-    temp_dir = tempfile.mkdtemp()
-    orig_dir = os.getcwd()
-    try:
-        cd(temp_dir)
-        f(temp_dir)
-    finally:
-        cd(orig_dir)
-        shutil.rmtree(temp_dir)
-
-def environment_context(f, **updates):
-    """
-    Invoke f in the context
-    """
-    old_env = os.environ.copy()
-    os.environ.update(updates)
-    try:
-        f()
-    finally:
-        for key in updates:
-            del os.environ[key]
-        os.environ.update(old_env)
-
-def argv_context(f, repl):
-    """
-    Invoke f in the context
-    """
-    old_argv = sys.argv[:]
-    sys.argv[:] = repl
-    try:
-        f()
-    finally:
-        sys.argv[:] = old_argv
-
-def reset_setup_stop_context(f):
-    """
-    When the distribute tests are run using setup.py test, and then
-    one wants to invoke another setup() command (such as easy_install)
-    within those tests, it's necessary to reset the global variable
-    in distutils.core so that the setup() command will run naturally.
-    """
-    setup_stop_after = distutils.core._setup_stop_after
-    distutils.core._setup_stop_after = None
-    try:
-        f()
-    finally:
-        distutils.core._setup_stop_after = setup_stop_after
diff --git a/vendor/distribute-0.6.34/setuptools/tests/test_markerlib.py b/vendor/distribute-0.6.34/setuptools/tests/test_markerlib.py
deleted file mode 100644
index aa461846..00000000
--- a/vendor/distribute-0.6.34/setuptools/tests/test_markerlib.py
+++ /dev/null
@@ -1,64 +0,0 @@
-import os
-import unittest
-from setuptools.tests.py26compat import skipIf
-
-try:
-    import ast
-except ImportError:
-    pass
-
-class TestMarkerlib(unittest.TestCase):
-
-    @skipIf('ast' not in globals(),
-        "ast not available (Python < 2.6?)")
-    def test_markers(self):
-        from _markerlib import interpret, default_environment, compile
-        
-        os_name = os.name
-        
-        self.assertTrue(interpret(""))
-        
-        self.assertTrue(interpret("os.name != 'buuuu'"))
-        self.assertTrue(interpret("python_version > '1.0'"))
-        self.assertTrue(interpret("python_version < '5.0'"))
-        self.assertTrue(interpret("python_version <= '5.0'"))
-        self.assertTrue(interpret("python_version >= '1.0'"))
-        self.assertTrue(interpret("'%s' in os.name" % os_name))
-        self.assertTrue(interpret("'buuuu' not in os.name"))
-        
-        self.assertFalse(interpret("os.name == 'buuuu'"))
-        self.assertFalse(interpret("python_version < '1.0'"))
-        self.assertFalse(interpret("python_version > '5.0'"))
-        self.assertFalse(interpret("python_version >= '5.0'"))
-        self.assertFalse(interpret("python_version <= '1.0'"))
-        self.assertFalse(interpret("'%s' not in os.name" % os_name))
-        self.assertFalse(interpret("'buuuu' in os.name and python_version >= '5.0'"))    
-        
-        environment = default_environment()
-        environment['extra'] = 'test'
-        self.assertTrue(interpret("extra == 'test'", environment))
-        self.assertFalse(interpret("extra == 'doc'", environment))
-        
-        def raises_nameError():
-            try:
-                interpret("python.version == '42'")
-            except NameError:
-                pass
-            else:
-                raise Exception("Expected NameError")
-        
-        raises_nameError()
-        
-        def raises_syntaxError():
-            try:
-                interpret("(x for x in (4,))")
-            except SyntaxError:
-                pass
-            else:
-                raise Exception("Expected SyntaxError")
-            
-        raises_syntaxError()
-        
-        statement = "python_version == '5'"
-        self.assertEqual(compile(statement).__doc__, statement)
-        
diff --git a/vendor/distribute-0.6.34/setuptools/tests/test_packageindex.py b/vendor/distribute-0.6.34/setuptools/tests/test_packageindex.py
deleted file mode 100644
index 3e446b54..00000000
--- a/vendor/distribute-0.6.34/setuptools/tests/test_packageindex.py
+++ /dev/null
@@ -1,145 +0,0 @@
-"""Package Index Tests
-"""
-import sys
-import unittest
-import urllib2
-import pkg_resources
-import httplib
-import distutils.errors
-import setuptools.package_index
-from server import IndexServer
-
-class TestPackageIndex(unittest.TestCase):
-
-    def test_bad_url_bad_port(self):
-        index = setuptools.package_index.PackageIndex()
-        url = 'http://127.0.0.1:0/nonesuch/test_package_index'
-        try:
-            v = index.open_url(url)
-        except Exception, v:
-            self.assertTrue(url in str(v))
-        else:
-            self.assertTrue(isinstance(v,urllib2.HTTPError))
-
-    def test_bad_url_typo(self):
-        # issue 16
-        # easy_install inquant.contentmirror.plone breaks because of a typo
-        # in its home URL
-        index = setuptools.package_index.PackageIndex(
-            hosts=('www.example.com',)
-        )
-
-        url = 'url:%20https://svn.plone.org/svn/collective/inquant.contentmirror.plone/trunk'
-        try:
-            v = index.open_url(url)
-        except Exception, v:
-            self.assertTrue(url in str(v))
-        else:
-            self.assertTrue(isinstance(v, urllib2.HTTPError))
-
-    def test_bad_url_bad_status_line(self):
-        index = setuptools.package_index.PackageIndex(
-            hosts=('www.example.com',)
-        )
-
-        def _urlopen(*args):
-            import httplib
-            raise httplib.BadStatusLine('line')
-
-        old_urlopen = urllib2.urlopen
-        urllib2.urlopen = _urlopen
-        url = 'http://example.com'
-        try:
-            try:
-                v = index.open_url(url)
-            except Exception, v:
-                self.assertTrue('line' in str(v))
-            else:
-                raise AssertionError('Should have raise here!')
-        finally:
-            urllib2.urlopen = old_urlopen
-
-    def test_bad_url_double_scheme(self):
-        """
-        A bad URL with a double scheme should raise a DistutilsError.
-        """
-        index = setuptools.package_index.PackageIndex(
-            hosts=('www.example.com',)
-        )
-
-        # issue 20
-        url = 'http://http://svn.pythonpaste.org/Paste/wphp/trunk'
-        try:
-            index.open_url(url)
-        except distutils.errors.DistutilsError, error:
-            msg = unicode(error)
-            assert 'nonnumeric port' in msg or 'getaddrinfo failed' in msg or 'Name or service not known' in msg
-            return
-        raise RuntimeError("Did not raise")
-
-    def test_bad_url_screwy_href(self):
-        index = setuptools.package_index.PackageIndex(
-            hosts=('www.example.com',)
-        )
-
-        # issue #160
-        if sys.version_info[0] == 2 and sys.version_info[1] == 7:
-            # this should not fail
-            url = 'http://example.com'
-            page = ('<a href="http://www.famfamfam.com]('
-                    'http://www.famfamfam.com/">')
-            index.process_index(url, page)
-
-    def test_url_ok(self):
-        index = setuptools.package_index.PackageIndex(
-            hosts=('www.example.com',)
-        )
-        url = 'file:///tmp/test_package_index'
-        self.assertTrue(index.url_ok(url, True))
-
-    def test_links_priority(self):
-        """
-        Download links from the pypi simple index should be used before
-        external download links.
-        http://bitbucket.org/tarek/distribute/issue/163/md5-validation-error
-
-        Usecase :
-        - someone uploads a package on pypi, a md5 is generated
-        - someone manually copies this link (with the md5 in the url) onto an
-          external page accessible from the package page.
-        - someone reuploads the package (with a different md5)
-        - while easy_installing, an MD5 error occurs because the external link
-          is used
-        -> Distribute should use the link from pypi, not the external one.
-        """
-        if sys.platform.startswith('java'):
-            # Skip this test on jython because binding to :0 fails
-            return
-
-        # start an index server
-        server = IndexServer()
-        server.start()
-        index_url = server.base_url() + 'test_links_priority/simple/'
-
-        # scan a test index
-        pi = setuptools.package_index.PackageIndex(index_url)
-        requirement = pkg_resources.Requirement.parse('foobar')
-        pi.find_packages(requirement)
-        server.stop()
-
-        # the distribution has been found
-        self.assertTrue('foobar' in pi)
-        # we have only one link, because links are compared without md5
-        self.assertTrue(len(pi['foobar'])==1)
-        # the link should be from the index
-        self.assertTrue('correct_md5' in pi['foobar'][0].location)
-
-    def test_parse_bdist_wininst(self):
-        self.assertEqual(setuptools.package_index.parse_bdist_wininst(
-            'reportlab-2.5.win32-py2.4.exe'), ('reportlab-2.5', '2.4', 'win32'))
-        self.assertEqual(setuptools.package_index.parse_bdist_wininst(
-            'reportlab-2.5.win32.exe'), ('reportlab-2.5', None, 'win32'))
-        self.assertEqual(setuptools.package_index.parse_bdist_wininst(
-            'reportlab-2.5.win-amd64-py2.7.exe'), ('reportlab-2.5', '2.7', 'win-amd64'))
-        self.assertEqual(setuptools.package_index.parse_bdist_wininst(
-            'reportlab-2.5.win-amd64.exe'), ('reportlab-2.5', None, 'win-amd64'))
diff --git a/vendor/distribute-0.6.34/setuptools/tests/test_resources.py b/vendor/distribute-0.6.34/setuptools/tests/test_resources.py
deleted file mode 100644
index 0bc1a095..00000000
--- a/vendor/distribute-0.6.34/setuptools/tests/test_resources.py
+++ /dev/null
@@ -1,659 +0,0 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-# NOTE: the shebang and encoding lines are for ScriptHeaderTests; do not remove
-from unittest import TestCase, makeSuite; from pkg_resources import *
-from setuptools.command.easy_install import get_script_header, is_sh
-import os, pkg_resources, sys, StringIO, tempfile, shutil
-try: frozenset
-except NameError:
-    from sets import ImmutableSet as frozenset
-
-def safe_repr(obj, short=False):
-    """ copied from Python2.7"""
-    try:
-        result = repr(obj)
-    except Exception:
-        result = object.__repr__(obj)
-    if not short or len(result) < _MAX_LENGTH:
-        return result
-    return result[:_MAX_LENGTH] + ' [truncated]...'
-
-class Metadata(EmptyProvider):
-    """Mock object to return metadata as if from an on-disk distribution"""
-
-    def __init__(self,*pairs):
-        self.metadata = dict(pairs)
-
-    def has_metadata(self,name):
-        return name in self.metadata
-
-    def get_metadata(self,name):
-        return self.metadata[name]
-
-    def get_metadata_lines(self,name):
-        return yield_lines(self.get_metadata(name))
-
-class DistroTests(TestCase):
-
-    def testCollection(self):
-        # empty path should produce no distributions
-        ad = Environment([], platform=None, python=None)
-        self.assertEqual(list(ad), [])
-        self.assertEqual(ad['FooPkg'],[])
-        ad.add(Distribution.from_filename("FooPkg-1.3_1.egg"))
-        ad.add(Distribution.from_filename("FooPkg-1.4-py2.4-win32.egg"))
-        ad.add(Distribution.from_filename("FooPkg-1.2-py2.4.egg"))
-
-        # Name is in there now
-        self.assertTrue(ad['FooPkg'])
-        # But only 1 package
-        self.assertEqual(list(ad), ['foopkg'])
-
-        # Distributions sort by version
-        self.assertEqual(
-            [dist.version for dist in ad['FooPkg']], ['1.4','1.3-1','1.2']
-        )
-        # Removing a distribution leaves sequence alone
-        ad.remove(ad['FooPkg'][1])
-        self.assertEqual(
-            [dist.version for dist in ad['FooPkg']], ['1.4','1.2']
-        )
-        # And inserting adds them in order
-        ad.add(Distribution.from_filename("FooPkg-1.9.egg"))
-        self.assertEqual(
-            [dist.version for dist in ad['FooPkg']], ['1.9','1.4','1.2']
-        )
-
-        ws = WorkingSet([])
-        foo12 = Distribution.from_filename("FooPkg-1.2-py2.4.egg")
-        foo14 = Distribution.from_filename("FooPkg-1.4-py2.4-win32.egg")
-        req, = parse_requirements("FooPkg>=1.3")
-
-        # Nominal case: no distros on path, should yield all applicable
-        self.assertEqual(ad.best_match(req,ws).version, '1.9')
-        # If a matching distro is already installed, should return only that
-        ws.add(foo14); self.assertEqual(ad.best_match(req,ws).version, '1.4')
-
-        # If the first matching distro is unsuitable, it's a version conflict
-        ws = WorkingSet([]); ws.add(foo12); ws.add(foo14)
-        self.assertRaises(VersionConflict, ad.best_match, req, ws)
-
-        # If more than one match on the path, the first one takes precedence
-        ws = WorkingSet([]); ws.add(foo14); ws.add(foo12); ws.add(foo14);
-        self.assertEqual(ad.best_match(req,ws).version, '1.4')
-
-    def checkFooPkg(self,d):
-        self.assertEqual(d.project_name, "FooPkg")
-        self.assertEqual(d.key, "foopkg")
-        self.assertEqual(d.version, "1.3-1")
-        self.assertEqual(d.py_version, "2.4")
-        self.assertEqual(d.platform, "win32")
-        self.assertEqual(d.parsed_version, parse_version("1.3-1"))
-
-    def testDistroBasics(self):
-        d = Distribution(
-            "/some/path",
-            project_name="FooPkg",version="1.3-1",py_version="2.4",platform="win32"
-        )
-        self.checkFooPkg(d)
-
-        d = Distribution("/some/path")
-        self.assertEqual(d.py_version, sys.version[:3])
-        self.assertEqual(d.platform, None)
-
-    def testDistroParse(self):
-        d = Distribution.from_filename("FooPkg-1.3_1-py2.4-win32.egg")
-        self.checkFooPkg(d)
-        d = Distribution.from_filename("FooPkg-1.3_1-py2.4-win32.egg-info")
-        self.checkFooPkg(d)
-
-    def testDistroMetadata(self):
-        d = Distribution(
-            "/some/path", project_name="FooPkg", py_version="2.4", platform="win32",
-            metadata = Metadata(
-                ('PKG-INFO',"Metadata-Version: 1.0\nVersion: 1.3-1\n")
-            )
-        )
-        self.checkFooPkg(d)
-
-
-    def distRequires(self, txt):
-        return Distribution("/foo", metadata=Metadata(('depends.txt', txt)))
-
-    def checkRequires(self, dist, txt, extras=()):
-        self.assertEqual(
-            list(dist.requires(extras)),
-            list(parse_requirements(txt))
-        )
-
-    def testDistroDependsSimple(self):
-        for v in "Twisted>=1.5", "Twisted>=1.5\nZConfig>=2.0":
-            self.checkRequires(self.distRequires(v), v)
-
-
-    def testResolve(self):
-        ad = Environment([]); ws = WorkingSet([])
-        # Resolving no requirements -> nothing to install
-        self.assertEqual( list(ws.resolve([],ad)), [] )
-        # Request something not in the collection -> DistributionNotFound
-        self.assertRaises(
-            DistributionNotFound, ws.resolve, parse_requirements("Foo"), ad
-        )
-        Foo = Distribution.from_filename(
-            "/foo_dir/Foo-1.2.egg",
-            metadata=Metadata(('depends.txt', "[bar]\nBaz>=2.0"))
-        )
-        ad.add(Foo); ad.add(Distribution.from_filename("Foo-0.9.egg"))
-
-        # Request thing(s) that are available -> list to activate
-        for i in range(3):
-            targets = list(ws.resolve(parse_requirements("Foo"), ad))
-            self.assertEqual(targets, [Foo])
-            map(ws.add,targets)
-        self.assertRaises(VersionConflict, ws.resolve,
-            parse_requirements("Foo==0.9"), ad)
-        ws = WorkingSet([]) # reset
-
-        # Request an extra that causes an unresolved dependency for "Baz"
-        self.assertRaises(
-            DistributionNotFound, ws.resolve,parse_requirements("Foo[bar]"), ad
-        )
-        Baz = Distribution.from_filename(
-            "/foo_dir/Baz-2.1.egg", metadata=Metadata(('depends.txt', "Foo"))
-        )
-        ad.add(Baz)
-
-        # Activation list now includes resolved dependency
-        self.assertEqual(
-            list(ws.resolve(parse_requirements("Foo[bar]"), ad)), [Foo,Baz]
-        )
-        # Requests for conflicting versions produce VersionConflict
-        self.assertRaises( VersionConflict,
-            ws.resolve, parse_requirements("Foo==1.2\nFoo!=1.2"), ad
-        )
-
-    def testDistroDependsOptions(self):
-        d = self.distRequires("""
-            Twisted>=1.5
-            [docgen]
-            ZConfig>=2.0
-            docutils>=0.3
-            [fastcgi]
-            fcgiapp>=0.1""")
-        self.checkRequires(d,"Twisted>=1.5")
-        self.checkRequires(
-            d,"Twisted>=1.5 ZConfig>=2.0 docutils>=0.3".split(), ["docgen"]
-        )
-        self.checkRequires(
-            d,"Twisted>=1.5 fcgiapp>=0.1".split(), ["fastcgi"]
-        )
-        self.checkRequires(
-            d,"Twisted>=1.5 ZConfig>=2.0 docutils>=0.3 fcgiapp>=0.1".split(),
-            ["docgen","fastcgi"]
-        )
-        self.checkRequires(
-            d,"Twisted>=1.5 fcgiapp>=0.1 ZConfig>=2.0 docutils>=0.3".split(),
-            ["fastcgi", "docgen"]
-        )
-        self.assertRaises(UnknownExtra, d.requires, ["foo"])
-
-    def testSetuptoolsDistributeCombination(self):
-        # Ensure that installing a 0.7-series setuptools fails.  PJE says that
-        # it will not co-exist.
-        ws = WorkingSet([])
-        d = Distribution(
-            "/some/path",
-            project_name="setuptools",
-            version="0.7a1")
-        self.assertRaises(ValueError, ws.add, d)
-        # A 0.6-series is no problem
-        d2 = Distribution(
-            "/some/path",
-            project_name="setuptools",
-            version="0.6c9")
-        ws.add(d2)
-
-        # a unexisting version needs to work
-        ws = WorkingSet([])
-        d3 = Distribution(
-            "/some/path",
-            project_name="setuptools")
-        ws.add(d3)
-
-
-class EntryPointTests(TestCase):
-
-    def assertfields(self, ep):
-        self.assertEqual(ep.name,"foo")
-        self.assertEqual(ep.module_name,"setuptools.tests.test_resources")
-        self.assertEqual(ep.attrs, ("EntryPointTests",))
-        self.assertEqual(ep.extras, ("x",))
-        self.assertTrue(ep.load() is EntryPointTests)
-        self.assertEqual(
-            str(ep),
-            "foo = setuptools.tests.test_resources:EntryPointTests [x]"
-        )
-
-    def setUp(self):
-        self.dist = Distribution.from_filename(
-            "FooPkg-1.2-py2.4.egg", metadata=Metadata(('requires.txt','[x]')))
-
-    def testBasics(self):
-        ep = EntryPoint(
-            "foo", "setuptools.tests.test_resources", ["EntryPointTests"],
-            ["x"], self.dist
-        )
-        self.assertfields(ep)
-
-    def testParse(self):
-        s = "foo = setuptools.tests.test_resources:EntryPointTests [x]"
-        ep = EntryPoint.parse(s, self.dist)
-        self.assertfields(ep)
-
-        ep = EntryPoint.parse("bar baz=  spammity[PING]")
-        self.assertEqual(ep.name,"bar baz")
-        self.assertEqual(ep.module_name,"spammity")
-        self.assertEqual(ep.attrs, ())
-        self.assertEqual(ep.extras, ("ping",))
-
-        ep = EntryPoint.parse(" fizzly =  wocka:foo")
-        self.assertEqual(ep.name,"fizzly")
-        self.assertEqual(ep.module_name,"wocka")
-        self.assertEqual(ep.attrs, ("foo",))
-        self.assertEqual(ep.extras, ())
-
-    def testRejects(self):
-        for ep in [
-            "foo", "x=1=2", "x=a:b:c", "q=x/na", "fez=pish:tush-z", "x=f[a]>2",
-        ]:
-            try: EntryPoint.parse(ep)
-            except ValueError: pass
-            else: raise AssertionError("Should've been bad", ep)
-
-    def checkSubMap(self, m):
-        self.assertEqual(len(m), len(self.submap_expect))
-        for key, ep in self.submap_expect.iteritems():
-            self.assertEqual(repr(m.get(key)), repr(ep))
-
-    submap_expect = dict(
-        feature1=EntryPoint('feature1', 'somemodule', ['somefunction']),
-        feature2=EntryPoint('feature2', 'another.module', ['SomeClass'], ['extra1','extra2']),
-        feature3=EntryPoint('feature3', 'this.module', extras=['something'])
-    )
-    submap_str = """
-            # define features for blah blah
-            feature1 = somemodule:somefunction
-            feature2 = another.module:SomeClass [extra1,extra2]
-            feature3 = this.module [something]
-    """
-
-    def testParseList(self):
-        self.checkSubMap(EntryPoint.parse_group("xyz", self.submap_str))
-        self.assertRaises(ValueError, EntryPoint.parse_group, "x a", "foo=bar")
-        self.assertRaises(ValueError, EntryPoint.parse_group, "x",
-            ["foo=baz", "foo=bar"])
-
-    def testParseMap(self):
-        m = EntryPoint.parse_map({'xyz':self.submap_str})
-        self.checkSubMap(m['xyz'])
-        self.assertEqual(m.keys(),['xyz'])
-        m = EntryPoint.parse_map("[xyz]\n"+self.submap_str)
-        self.checkSubMap(m['xyz'])
-        self.assertEqual(m.keys(),['xyz'])
-        self.assertRaises(ValueError, EntryPoint.parse_map, ["[xyz]", "[xyz]"])
-        self.assertRaises(ValueError, EntryPoint.parse_map, self.submap_str)
-
-class RequirementsTests(TestCase):
-
-    def testBasics(self):
-        r = Requirement.parse("Twisted>=1.2")
-        self.assertEqual(str(r),"Twisted>=1.2")
-        self.assertEqual(repr(r),"Requirement.parse('Twisted>=1.2')")
-        self.assertEqual(r, Requirement("Twisted", [('>=','1.2')], ()))
-        self.assertEqual(r, Requirement("twisTed", [('>=','1.2')], ()))
-        self.assertNotEqual(r, Requirement("Twisted", [('>=','2.0')], ()))
-        self.assertNotEqual(r, Requirement("Zope", [('>=','1.2')], ()))
-        self.assertNotEqual(r, Requirement("Zope", [('>=','3.0')], ()))
-        self.assertNotEqual(r, Requirement.parse("Twisted[extras]>=1.2"))
-
-    def testOrdering(self):
-        r1 = Requirement("Twisted", [('==','1.2c1'),('>=','1.2')], ())
-        r2 = Requirement("Twisted", [('>=','1.2'),('==','1.2c1')], ())
-        self.assertEqual(r1,r2)
-        self.assertEqual(str(r1),str(r2))
-        self.assertEqual(str(r2),"Twisted==1.2c1,>=1.2")
-
-    def testBasicContains(self):
-        r = Requirement("Twisted", [('>=','1.2')], ())
-        foo_dist = Distribution.from_filename("FooPkg-1.3_1.egg")
-        twist11  = Distribution.from_filename("Twisted-1.1.egg")
-        twist12  = Distribution.from_filename("Twisted-1.2.egg")
-        self.assertTrue(parse_version('1.2') in r)
-        self.assertTrue(parse_version('1.1') not in r)
-        self.assertTrue('1.2' in r)
-        self.assertTrue('1.1' not in r)
-        self.assertTrue(foo_dist not in r)
-        self.assertTrue(twist11 not in r)
-        self.assertTrue(twist12 in r)
-
-    def testAdvancedContains(self):
-        r, = parse_requirements("Foo>=1.2,<=1.3,==1.9,>2.0,!=2.5,<3.0,==4.5")
-        for v in ('1.2','1.2.2','1.3','1.9','2.0.1','2.3','2.6','3.0c1','4.5'):
-            self.assertTrue(v in r, (v,r))
-        for v in ('1.2c1','1.3.1','1.5','1.9.1','2.0','2.5','3.0','4.0'):
-            self.assertTrue(v not in r, (v,r))
-
-
-    def testOptionsAndHashing(self):
-        r1 = Requirement.parse("Twisted[foo,bar]>=1.2")
-        r2 = Requirement.parse("Twisted[bar,FOO]>=1.2")
-        r3 = Requirement.parse("Twisted[BAR,FOO]>=1.2.0")
-        self.assertEqual(r1,r2)
-        self.assertEqual(r1,r3)
-        self.assertEqual(r1.extras, ("foo","bar"))
-        self.assertEqual(r2.extras, ("bar","foo"))  # extras are normalized
-        self.assertEqual(hash(r1), hash(r2))
-        self.assertEqual(
-            hash(r1), hash(("twisted", ((">=",parse_version("1.2")),),
-                            frozenset(["foo","bar"])))
-        )
-
-    def testVersionEquality(self):
-        r1 = Requirement.parse("foo==0.3a2")
-        r2 = Requirement.parse("foo!=0.3a4")
-        d = Distribution.from_filename
-
-        self.assertTrue(d("foo-0.3a4.egg") not in r1)
-        self.assertTrue(d("foo-0.3a1.egg") not in r1)
-        self.assertTrue(d("foo-0.3a4.egg") not in r2)
-
-        self.assertTrue(d("foo-0.3a2.egg") in r1)
-        self.assertTrue(d("foo-0.3a2.egg") in r2)
-        self.assertTrue(d("foo-0.3a3.egg") in r2)
-        self.assertTrue(d("foo-0.3a5.egg") in r2)
-
-    def testDistributeSetuptoolsOverride(self):
-        # Plain setuptools or distribute mean we return distribute.
-        self.assertEqual(
-            Requirement.parse('setuptools').project_name, 'distribute')
-        self.assertEqual(
-            Requirement.parse('distribute').project_name, 'distribute')
-        # setuptools lower than 0.7 means distribute
-        self.assertEqual(
-            Requirement.parse('setuptools==0.6c9').project_name, 'distribute')
-        self.assertEqual(
-            Requirement.parse('setuptools==0.6c10').project_name, 'distribute')
-        self.assertEqual(
-            Requirement.parse('setuptools>=0.6').project_name, 'distribute')
-        self.assertEqual(
-            Requirement.parse('setuptools < 0.7').project_name, 'distribute')
-        # setuptools 0.7 and higher means setuptools.
-        self.assertEqual(
-            Requirement.parse('setuptools == 0.7').project_name, 'setuptools')
-        self.assertEqual(
-            Requirement.parse('setuptools == 0.7a1').project_name, 'setuptools')
-        self.assertEqual(
-            Requirement.parse('setuptools >= 0.7').project_name, 'setuptools')
-
-
-
-
-
-
-
-
-
-
-
-class ParseTests(TestCase):
-
-    def testEmptyParse(self):
-        self.assertEqual(list(parse_requirements('')), [])
-
-    def testYielding(self):
-        for inp,out in [
-            ([], []), ('x',['x']), ([[]],[]), (' x\n y', ['x','y']),
-            (['x\n\n','y'], ['x','y']),
-        ]:
-            self.assertEqual(list(pkg_resources.yield_lines(inp)),out)
-
-    def testSplitting(self):
-        self.assertEqual(
-            list(
-                pkg_resources.split_sections("""
-                    x
-                    [Y]
-                    z
-
-                    a
-                    [b ]
-                    # foo
-                    c
-                    [ d]
-                    [q]
-                    v
-                    """
-                )
-            ),
-            [(None,["x"]), ("Y",["z","a"]), ("b",["c"]), ("d",[]), ("q",["v"])]
-        )
-        self.assertRaises(ValueError,list,pkg_resources.split_sections("[foo"))
-
-    def testSafeName(self):
-        self.assertEqual(safe_name("adns-python"), "adns-python")
-        self.assertEqual(safe_name("WSGI Utils"),  "WSGI-Utils")
-        self.assertEqual(safe_name("WSGI  Utils"), "WSGI-Utils")
-        self.assertEqual(safe_name("Money$$$Maker"), "Money-Maker")
-        self.assertNotEqual(safe_name("peak.web"), "peak-web")
-
-    def testSafeVersion(self):
-        self.assertEqual(safe_version("1.2-1"), "1.2-1")
-        self.assertEqual(safe_version("1.2 alpha"),  "1.2.alpha")
-        self.assertEqual(safe_version("2.3.4 20050521"), "2.3.4.20050521")
-        self.assertEqual(safe_version("Money$$$Maker"), "Money-Maker")
-        self.assertEqual(safe_version("peak.web"), "peak.web")
-
-    def testSimpleRequirements(self):
-        self.assertEqual(
-            list(parse_requirements('Twis-Ted>=1.2-1')),
-            [Requirement('Twis-Ted',[('>=','1.2-1')], ())]
-        )
-        self.assertEqual(
-            list(parse_requirements('Twisted >=1.2, \ # more\n<2.0')),
-            [Requirement('Twisted',[('>=','1.2'),('<','2.0')], ())]
-        )
-        self.assertEqual(
-            Requirement.parse("FooBar==1.99a3"),
-            Requirement("FooBar", [('==','1.99a3')], ())
-        )
-        self.assertRaises(ValueError,Requirement.parse,">=2.3")
-        self.assertRaises(ValueError,Requirement.parse,"x\\")
-        self.assertRaises(ValueError,Requirement.parse,"x==2 q")
-        self.assertRaises(ValueError,Requirement.parse,"X==1\nY==2")
-        self.assertRaises(ValueError,Requirement.parse,"#")
-
-    def testVersionEquality(self):
-        def c(s1,s2):
-            p1, p2 = parse_version(s1),parse_version(s2)
-            self.assertEqual(p1,p2, (s1,s2,p1,p2))
-
-        c('0.4', '0.4.0')
-        c('0.4.0.0', '0.4.0')
-        c('0.4.0-0', '0.4-0')
-        c('0pl1', '0.0pl1')
-        c('0pre1', '0.0c1')
-        c('0.0.0preview1', '0c1')
-        c('0.0c1', '0rc1')
-        c('1.2a1', '1.2.a.1'); c('1.2...a', '1.2a')
-
-    def testVersionOrdering(self):
-        def c(s1,s2):
-            p1, p2 = parse_version(s1),parse_version(s2)
-            self.assertTrue(p1<p2, (s1,s2,p1,p2))
-
-        c('2.1','2.1.1')
-        c('2.1.0','2.10')
-        c('2a1','2b0')
-        c('2b1','2c0')
-        c('2a1','2.1')
-        c('2.3a1', '2.3')
-        c('2.1-1', '2.1-2')
-        c('2.1-1', '2.1.1')
-        c('2.1', '2.1.1-1')
-        c('2.1', '2.1pl4')
-        c('2.1a0-20040501', '2.1')
-        c('1.1', '02.1')
-        c('A56','B27')
-        c('3.2', '3.2.pl0')
-        c('3.2-1', '3.2pl1')
-        c('3.2pl1', '3.2pl1-1')
-        c('0.4', '4.0')
-        c('0.0.4', '0.4.0')
-        c('0pl1', '0.4pl1')
-        c('2.1dev','2.1a0')
-        c('2.1.0rc1','2.1.0')
-        c('2.1.0','2.1.0-rc0')
-        c('2.1.0','2.1.0-a')
-        c('2.1.0','2.1.0-alpha')
-        c('2.1.0','2.1.0-foo')
-        c('1.0','1.0-1')
-        c('1.0-1','1.0.1')
-        c('1.0a','1.0b')
-        c('1.0dev','1.0rc1')
-        c('1.0pre','1.0')
-        c('1.0pre','1.0')
-        c('1.0a','1.0-a')
-        c('1.0rc1','1.0-rc1')
-
-        torture ="""
-        0.80.1-3 0.80.1-2 0.80.1-1 0.79.9999+0.80.0pre4-1
-        0.79.9999+0.80.0pre2-3 0.79.9999+0.80.0pre2-2
-        0.77.2-1 0.77.1-1 0.77.0-1
-        """.split()
-
-        for p,v1 in enumerate(torture):
-            for v2 in torture[p+1:]:
-                c(v2,v1)
-
-
-
-
-
-
-
-
-class ScriptHeaderTests(TestCase):
-    non_ascii_exe = '/Users/José/bin/python'
-
-    def test_get_script_header(self):
-        if not sys.platform.startswith('java') or not is_sh(sys.executable):
-            # This test is for non-Jython platforms
-            self.assertEqual(get_script_header('#!/usr/local/bin/python'),
-                             '#!%s\n' % os.path.normpath(sys.executable))
-            self.assertEqual(get_script_header('#!/usr/bin/python -x'),
-                             '#!%s  -x\n' % os.path.normpath(sys.executable))
-            self.assertEqual(get_script_header('#!/usr/bin/python',
-                                               executable=self.non_ascii_exe),
-                             '#!%s -x\n' % self.non_ascii_exe)
-
-    def test_get_script_header_jython_workaround(self):
-        # This test doesn't work with Python 3 in some locales
-        if (sys.version_info >= (3,) and os.environ.get("LC_CTYPE")
-            in (None, "C", "POSIX")):
-            return
-
-        class java:
-            class lang:
-                class System:
-                    @staticmethod
-                    def getProperty(property):
-                        return ""
-        sys.modules["java"] = java
-
-        platform = sys.platform
-        sys.platform = 'java1.5.0_13'
-        stdout = sys.stdout
-        try:
-            # A mock sys.executable that uses a shebang line (this file)
-            exe = os.path.normpath(os.path.splitext(__file__)[0] + '.py')
-            self.assertEqual(
-                get_script_header('#!/usr/local/bin/python', executable=exe),
-                '#!/usr/bin/env %s\n' % exe)
-
-            # Ensure we generate what is basically a broken shebang line
-            # when there's options, with a warning emitted
-            sys.stdout = sys.stderr = StringIO.StringIO()
-            self.assertEqual(get_script_header('#!/usr/bin/python -x',
-                                               executable=exe),
-                             '#!%s  -x\n' % exe)
-            self.assertTrue('Unable to adapt shebang line' in sys.stdout.getvalue())
-            sys.stdout = sys.stderr = StringIO.StringIO()
-            self.assertEqual(get_script_header('#!/usr/bin/python',
-                                               executable=self.non_ascii_exe),
-                             '#!%s -x\n' % self.non_ascii_exe)
-            self.assertTrue('Unable to adapt shebang line' in sys.stdout.getvalue())
-        finally:
-            del sys.modules["java"]
-            sys.platform = platform
-            sys.stdout = stdout
-
-
-
-
-class NamespaceTests(TestCase):
-
-    def setUp(self):
-        self._ns_pkgs = pkg_resources._namespace_packages.copy()
-        self._tmpdir = tempfile.mkdtemp(prefix="tests-distribute-")
-        os.makedirs(os.path.join(self._tmpdir, "site-pkgs"))
-        self._prev_sys_path = sys.path[:]
-        sys.path.append(os.path.join(self._tmpdir, "site-pkgs"))
-
-    def tearDown(self):
-        shutil.rmtree(self._tmpdir)
-        pkg_resources._namespace_packages = self._ns_pkgs.copy()
-        sys.path = self._prev_sys_path[:]
-
-    def _assertIn(self, member, container):
-        """ assertIn and assertTrue does not exist in Python2.3"""
-        if member not in container:
-            standardMsg = '%s not found in %s' % (safe_repr(member),
-                                                  safe_repr(container))
-            self.fail(self._formatMessage(msg, standardMsg))
-
-    def test_two_levels_deep(self):
-        """
-        Test nested namespace packages
-        Create namespace packages in the following tree :
-            site-packages-1/pkg1/pkg2
-            site-packages-2/pkg1/pkg2
-        Check both are in the _namespace_packages dict and that their __path__
-        is correct
-        """
-        sys.path.append(os.path.join(self._tmpdir, "site-pkgs2"))
-        os.makedirs(os.path.join(self._tmpdir, "site-pkgs", "pkg1", "pkg2"))
-        os.makedirs(os.path.join(self._tmpdir, "site-pkgs2", "pkg1", "pkg2"))
-        ns_str = "__import__('pkg_resources').declare_namespace(__name__)\n"
-        for site in ["site-pkgs", "site-pkgs2"]:
-            pkg1_init = open(os.path.join(self._tmpdir, site,
-                             "pkg1", "__init__.py"), "w")
-            pkg1_init.write(ns_str)
-            pkg1_init.close()
-            pkg2_init = open(os.path.join(self._tmpdir, site,
-                             "pkg1", "pkg2", "__init__.py"), "w")
-            pkg2_init.write(ns_str)
-            pkg2_init.close()
-        import pkg1
-        self._assertIn("pkg1", pkg_resources._namespace_packages.keys())
-        try:
-            import pkg1.pkg2
-        except ImportError, e:
-            self.fail("Distribute tried to import the parent namespace package")
-        # check the _namespace_packages dict
-        self._assertIn("pkg1.pkg2", pkg_resources._namespace_packages.keys())
-        self.assertEqual(pkg_resources._namespace_packages["pkg1"], ["pkg1.pkg2"])
-        # check the __path__ attribute contains both paths
-        self.assertEqual(pkg1.pkg2.__path__, [
-                os.path.join(self._tmpdir, "site-pkgs", "pkg1", "pkg2"),
-                os.path.join(self._tmpdir, "site-pkgs2", "pkg1", "pkg2") ])
-
diff --git a/vendor/distribute-0.6.34/setuptools/tests/test_sandbox.py b/vendor/distribute-0.6.34/setuptools/tests/test_sandbox.py
deleted file mode 100644
index 1609ee86..00000000
--- a/vendor/distribute-0.6.34/setuptools/tests/test_sandbox.py
+++ /dev/null
@@ -1,66 +0,0 @@
-"""develop tests
-"""
-import sys
-import os
-import shutil
-import unittest
-import tempfile
-
-from setuptools.sandbox import DirectorySandbox, SandboxViolation
-
-def has_win32com():
-    """
-    Run this to determine if the local machine has win32com, and if it
-    does, include additional tests.
-    """
-    if not sys.platform.startswith('win32'):
-        return False
-    try:
-        mod = __import__('win32com')
-    except ImportError:
-        return False
-    return True
-
-class TestSandbox(unittest.TestCase):
-
-    def setUp(self):
-        self.dir = tempfile.mkdtemp()
-
-    def tearDown(self):
-        shutil.rmtree(self.dir)
-
-    def test_devnull(self):
-        if sys.version < '2.4':
-            return
-        sandbox = DirectorySandbox(self.dir)
-        sandbox.run(self._file_writer(os.devnull))
-
-    def _file_writer(path):
-        def do_write():
-            f = open(path, 'w')
-            f.write('xxx')
-            f.close()
-        return do_write
-
-    _file_writer = staticmethod(_file_writer)
-
-    if has_win32com():
-        def test_win32com(self):
-            """
-            win32com should not be prevented from caching COM interfaces
-            in gen_py.
-            """
-            import win32com
-            gen_py = win32com.__gen_path__
-            target = os.path.join(gen_py, 'test_write')
-            sandbox = DirectorySandbox(self.dir)
-            try:
-                try:
-                    sandbox.run(self._file_writer(target))
-                except SandboxViolation:
-                    self.fail("Could not create gen_py file due to SandboxViolation")
-            finally:
-                if os.path.exists(target): os.remove(target)
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/vendor/distribute-0.6.34/setuptools/tests/test_sdist.py b/vendor/distribute-0.6.34/setuptools/tests/test_sdist.py
deleted file mode 100644
index a9d5d6e5..00000000
--- a/vendor/distribute-0.6.34/setuptools/tests/test_sdist.py
+++ /dev/null
@@ -1,383 +0,0 @@
-# -*- coding: utf-8 -*-
-"""sdist tests"""
-
-
-import os
-import shutil
-import sys
-import tempfile
-import unittest
-import urllib
-import unicodedata
-from StringIO import StringIO
-
-
-from setuptools.command.sdist import sdist
-from setuptools.command.egg_info import manifest_maker
-from setuptools.dist import Distribution
-
-
-SETUP_ATTRS = {
-    'name': 'sdist_test',
-    'version': '0.0',
-    'packages': ['sdist_test'],
-    'package_data': {'sdist_test': ['*.txt']}
-}
-
-
-SETUP_PY = """\
-from setuptools import setup
-
-setup(**%r)
-""" % SETUP_ATTRS
-
-
-if sys.version_info >= (3,):
-    LATIN1_FILENAME = 'smörbröd.py'.encode('latin-1')
-else:
-    LATIN1_FILENAME = 'sm\xf6rbr\xf6d.py'
-
-
-# Cannot use context manager because of Python 2.4
-def quiet():
-    global old_stdout, old_stderr
-    old_stdout, old_stderr = sys.stdout, sys.stderr
-    sys.stdout, sys.stderr = StringIO(), StringIO()
-
-def unquiet():
-    sys.stdout, sys.stderr = old_stdout, old_stderr
-
-
-# Fake byte literals for Python <= 2.5
-def b(s, encoding='utf-8'):
-    if sys.version_info >= (3,):
-        return s.encode(encoding)
-    return s
-
-
-# Convert to POSIX path
-def posix(path):
-    if sys.version_info >= (3,) and not isinstance(path, unicode):
-        return path.replace(os.sep.encode('ascii'), b('/'))
-    else:
-        return path.replace(os.sep, '/')
-
-
-# HFS Plus uses decomposed UTF-8
-def decompose(path):
-    if isinstance(path, unicode):
-        return unicodedata.normalize('NFD', path)
-    try:
-        path = path.decode('utf-8')
-        path = unicodedata.normalize('NFD', path)
-        path = path.encode('utf-8')
-    except UnicodeError:
-        pass # Not UTF-8
-    return path
-
-
-class TestSdistTest(unittest.TestCase):
-
-    def setUp(self):
-        self.temp_dir = tempfile.mkdtemp()
-        f = open(os.path.join(self.temp_dir, 'setup.py'), 'w')
-        f.write(SETUP_PY)
-        f.close()
-        # Set up the rest of the test package
-        test_pkg = os.path.join(self.temp_dir, 'sdist_test')
-        os.mkdir(test_pkg)
-        # *.rst was not included in package_data, so c.rst should not be
-        # automatically added to the manifest when not under version control
-        for fname in ['__init__.py', 'a.txt', 'b.txt', 'c.rst']:
-            # Just touch the files; their contents are irrelevant
-            open(os.path.join(test_pkg, fname), 'w').close()
-
-        self.old_cwd = os.getcwd()
-        os.chdir(self.temp_dir)
-
-    def tearDown(self):
-        os.chdir(self.old_cwd)
-        shutil.rmtree(self.temp_dir)
-
-    def test_package_data_in_sdist(self):
-        """Regression test for pull request #4: ensures that files listed in
-        package_data are included in the manifest even if they're not added to
-        version control.
-        """
-
-        dist = Distribution(SETUP_ATTRS)
-        dist.script_name = 'setup.py'
-        cmd = sdist(dist)
-        cmd.ensure_finalized()
-
-        # squelch output
-        quiet()
-        try:
-            cmd.run()
-        finally:
-            unquiet()
-
-        manifest = cmd.filelist.files
-        self.assertTrue(os.path.join('sdist_test', 'a.txt') in manifest)
-        self.assertTrue(os.path.join('sdist_test', 'b.txt') in manifest)
-        self.assertTrue(os.path.join('sdist_test', 'c.rst') not in manifest)
-
-    def test_manifest_is_written_with_utf8_encoding(self):
-        # Test for #303.
-        dist = Distribution(SETUP_ATTRS)
-        dist.script_name = 'setup.py'
-        mm = manifest_maker(dist)
-        mm.manifest = os.path.join('sdist_test.egg-info', 'SOURCES.txt')
-        os.mkdir('sdist_test.egg-info')
-
-        # UTF-8 filename
-        filename = os.path.join('sdist_test', 'smörbröd.py')
-
-        # Add UTF-8 filename and write manifest
-        quiet()
-        try:
-            mm.run()
-            mm.filelist.files.append(filename)
-            mm.write_manifest()
-        finally:
-            unquiet()
-
-        manifest = open(mm.manifest, 'rbU')
-        contents = manifest.read()
-        manifest.close()
-
-        # The manifest should be UTF-8 encoded
-        try:
-            u_contents = contents.decode('UTF-8')
-        except UnicodeDecodeError, e:
-            self.fail(e)
-
-        # The manifest should contain the UTF-8 filename
-        if sys.version_info >= (3,):
-            self.assertTrue(posix(filename) in u_contents)
-        else:
-            self.assertTrue(posix(filename) in contents)
-
-    # Python 3 only
-    if sys.version_info >= (3,):
-
-        def test_write_manifest_allows_utf8_filenames(self):
-            # Test for #303.
-            dist = Distribution(SETUP_ATTRS)
-            dist.script_name = 'setup.py'
-            mm = manifest_maker(dist)
-            mm.manifest = os.path.join('sdist_test.egg-info', 'SOURCES.txt')
-            os.mkdir('sdist_test.egg-info')
-
-            # UTF-8 filename
-            filename = os.path.join(b('sdist_test'), b('smörbröd.py'))
-
-            # Add filename and write manifest
-            quiet()
-            try:
-                mm.run()
-                u_filename = filename.decode('utf-8')
-                mm.filelist.files.append(u_filename)
-                # Re-write manifest
-                mm.write_manifest()
-            finally:
-                unquiet()
-
-            manifest = open(mm.manifest, 'rbU')
-            contents = manifest.read()
-            manifest.close()
-
-            # The manifest should be UTF-8 encoded
-            try:
-                contents.decode('UTF-8')
-            except UnicodeDecodeError, e:
-                self.fail(e)
-
-            # The manifest should contain the UTF-8 filename
-            self.assertTrue(posix(filename) in contents)
-
-            # The filelist should have been updated as well
-            self.assertTrue(u_filename in mm.filelist.files)
-
-        def test_write_manifest_skips_non_utf8_filenames(self):
-            # Test for #303.
-            dist = Distribution(SETUP_ATTRS)
-            dist.script_name = 'setup.py'
-            mm = manifest_maker(dist)
-            mm.manifest = os.path.join('sdist_test.egg-info', 'SOURCES.txt')
-            os.mkdir('sdist_test.egg-info')
-
-            # Latin-1 filename
-            filename = os.path.join(b('sdist_test'), LATIN1_FILENAME)
-
-            # Add filename with surrogates and write manifest
-            quiet()
-            try:
-                mm.run()
-                u_filename = filename.decode('utf-8', 'surrogateescape')
-                mm.filelist.files.append(u_filename)
-                # Re-write manifest
-                mm.write_manifest()
-            finally:
-                unquiet()
-
-            manifest = open(mm.manifest, 'rbU')
-            contents = manifest.read()
-            manifest.close()
-
-            # The manifest should be UTF-8 encoded
-            try:
-                contents.decode('UTF-8')
-            except UnicodeDecodeError, e:
-                self.fail(e)
-
-            # The Latin-1 filename should have been skipped
-            self.assertFalse(posix(filename) in contents)
-
-            # The filelist should have been updated as well
-            self.assertFalse(u_filename in mm.filelist.files)
-
-    def test_manifest_is_read_with_utf8_encoding(self):
-        # Test for #303.
-        dist = Distribution(SETUP_ATTRS)
-        dist.script_name = 'setup.py'
-        cmd = sdist(dist)
-        cmd.ensure_finalized()
-
-        # Create manifest
-        quiet()
-        try:
-            cmd.run()
-        finally:
-            unquiet()
-
-        # Add UTF-8 filename to manifest
-        filename = os.path.join(b('sdist_test'), b('smörbröd.py'))
-        cmd.manifest = os.path.join('sdist_test.egg-info', 'SOURCES.txt')
-        manifest = open(cmd.manifest, 'ab')
-        manifest.write(b('\n')+filename)
-        manifest.close()
-
-        # The file must exist to be included in the filelist
-        open(filename, 'w').close()
-
-        # Re-read manifest
-        cmd.filelist.files = []
-        quiet()
-        try:
-            cmd.read_manifest()
-        finally:
-            unquiet()
-
-        # The filelist should contain the UTF-8 filename
-        if sys.version_info >= (3,):
-            filename = filename.decode('utf-8')
-        self.assertTrue(filename in cmd.filelist.files)
-
-    # Python 3 only
-    if sys.version_info >= (3,):
-
-        def test_read_manifest_skips_non_utf8_filenames(self):
-            # Test for #303.
-            dist = Distribution(SETUP_ATTRS)
-            dist.script_name = 'setup.py'
-            cmd = sdist(dist)
-            cmd.ensure_finalized()
-
-            # Create manifest
-            quiet()
-            try:
-                cmd.run()
-            finally:
-                unquiet()
-
-            # Add Latin-1 filename to manifest
-            filename = os.path.join(b('sdist_test'), LATIN1_FILENAME)
-            cmd.manifest = os.path.join('sdist_test.egg-info', 'SOURCES.txt')
-            manifest = open(cmd.manifest, 'ab')
-            manifest.write(b('\n')+filename)
-            manifest.close()
-
-            # The file must exist to be included in the filelist
-            open(filename, 'w').close()
-
-            # Re-read manifest
-            cmd.filelist.files = []
-            quiet()
-            try:
-                try:
-                    cmd.read_manifest()
-                except UnicodeDecodeError, e:
-                    self.fail(e)
-            finally:
-                unquiet()
-
-            # The Latin-1 filename should have been skipped
-            filename = filename.decode('latin-1')
-            self.assertFalse(filename in cmd.filelist.files)
-
-    def test_sdist_with_utf8_encoded_filename(self):
-        # Test for #303.
-        dist = Distribution(SETUP_ATTRS)
-        dist.script_name = 'setup.py'
-        cmd = sdist(dist)
-        cmd.ensure_finalized()
-
-        # UTF-8 filename
-        filename = os.path.join(b('sdist_test'), b('smörbröd.py'))
-        open(filename, 'w').close()
-
-        quiet()
-        try:
-            cmd.run()
-        finally:
-            unquiet()
-
-        if sys.platform == 'darwin':
-            filename = decompose(filename)
-
-        if sys.version_info >= (3,):
-            if sys.platform == 'win32':
-                # Python 3 mangles the UTF-8 filename
-                filename = filename.decode('cp1252')
-                self.assertTrue(filename in cmd.filelist.files)
-            else:
-                filename = filename.decode('utf-8')
-                self.assertTrue(filename in cmd.filelist.files)
-        else:
-            self.assertTrue(filename in cmd.filelist.files)
-
-    def test_sdist_with_latin1_encoded_filename(self):
-        # Test for #303.
-        dist = Distribution(SETUP_ATTRS)
-        dist.script_name = 'setup.py'
-        cmd = sdist(dist)
-        cmd.ensure_finalized()
-
-        # Latin-1 filename
-        filename = os.path.join(b('sdist_test'), LATIN1_FILENAME)
-        open(filename, 'w').close()
-
-        quiet()
-        try:
-            cmd.run()
-        finally:
-            unquiet()
-
-        if sys.version_info >= (3,):
-            filename = filename.decode('latin-1')
-            if sys.platform == 'win32':
-                # Latin-1 is similar to Windows-1252
-                self.assertTrue(filename in cmd.filelist.files)
-            else:
-                # The Latin-1 filename should have been skipped
-                self.assertFalse(filename in cmd.filelist.files)
-        else:
-            # No conversion takes place under Python 2 and the file
-            # is included. We shall keep it that way for BBB.
-            self.assertTrue(filename in cmd.filelist.files)
-
-
-def test_suite():
-    return unittest.defaultTestLoader.loadTestsFromName(__name__)
-
diff --git a/vendor/distribute-0.6.34/setuptools/tests/test_test.py b/vendor/distribute-0.6.34/setuptools/tests/test_test.py
deleted file mode 100644
index ad7cbd0f..00000000
--- a/vendor/distribute-0.6.34/setuptools/tests/test_test.py
+++ /dev/null
@@ -1,124 +0,0 @@
-# -*- coding: UTF-8 -*- 
-
-"""develop tests
-"""
-import sys
-import os, shutil, tempfile, unittest
-import tempfile
-import site
-from StringIO import StringIO
-
-from distutils.errors import DistutilsError
-from setuptools.command.test import test
-from setuptools.command import easy_install as easy_install_pkg
-from setuptools.dist import Distribution
-
-SETUP_PY = """\
-from setuptools import setup
-
-setup(name='foo',
-    packages=['name', 'name.space', 'name.space.tests'],
-    namespace_packages=['name'],
-    test_suite='name.space.tests.test_suite',
-)
-"""
-
-NS_INIT = """# -*- coding: Latin-1 -*- 
-# Söme Arbiträry Ünicode to test Issüé 310
-try:
-    __import__('pkg_resources').declare_namespace(__name__)
-except ImportError:
-    from pkgutil import extend_path
-    __path__ = extend_path(__path__, __name__)
-"""
-# Make sure this is Latin-1 binary, before writing:
-if sys.version_info < (3,):
-    NS_INIT = NS_INIT.decode('UTF-8')
-NS_INIT = NS_INIT.encode('Latin-1')
-
-TEST_PY = """import unittest
-
-class TestTest(unittest.TestCase):
-    def test_test(self):
-        print "Foo" # Should fail under Python 3 unless 2to3 is used
-
-test_suite = unittest.makeSuite(TestTest)
-"""
-
-class TestTestTest(unittest.TestCase):
-
-    def setUp(self):
-        if sys.version < "2.6" or hasattr(sys, 'real_prefix'):
-            return
-
-        # Directory structure
-        self.dir = tempfile.mkdtemp()
-        os.mkdir(os.path.join(self.dir, 'name'))
-        os.mkdir(os.path.join(self.dir, 'name', 'space'))
-        os.mkdir(os.path.join(self.dir, 'name', 'space', 'tests'))
-        # setup.py
-        setup = os.path.join(self.dir, 'setup.py')
-        f = open(setup, 'wt')
-        f.write(SETUP_PY)
-        f.close()
-        self.old_cwd = os.getcwd()
-        # name/__init__.py
-        init = os.path.join(self.dir, 'name', '__init__.py')
-        f = open(init, 'wb')
-        f.write(NS_INIT)
-        f.close()
-        # name/space/__init__.py
-        init = os.path.join(self.dir, 'name', 'space', '__init__.py')
-        f = open(init, 'wt')
-        f.write('#empty\n')
-        f.close()
-        # name/space/tests/__init__.py
-        init = os.path.join(self.dir, 'name', 'space', 'tests', '__init__.py')
-        f = open(init, 'wt')
-        f.write(TEST_PY)
-        f.close()
-        
-        os.chdir(self.dir)
-        self.old_base = site.USER_BASE
-        site.USER_BASE = tempfile.mkdtemp()
-        self.old_site = site.USER_SITE
-        site.USER_SITE = tempfile.mkdtemp()
-
-    def tearDown(self):
-        if sys.version < "2.6" or hasattr(sys, 'real_prefix'):
-            return
-        
-        os.chdir(self.old_cwd)
-        shutil.rmtree(self.dir)
-        shutil.rmtree(site.USER_BASE)
-        shutil.rmtree(site.USER_SITE)
-        site.USER_BASE = self.old_base
-        site.USER_SITE = self.old_site
-
-    def test_test(self):
-        if sys.version < "2.6" or hasattr(sys, 'real_prefix'):
-            return
-        
-        dist = Distribution(dict(
-            name='foo',
-            packages=['name', 'name.space', 'name.space.tests'],
-            namespace_packages=['name'],
-            test_suite='name.space.tests.test_suite',
-            use_2to3=True,
-            ))
-        dist.script_name = 'setup.py'
-        cmd = test(dist)
-        cmd.user = 1
-        cmd.ensure_finalized()
-        cmd.install_dir = site.USER_SITE
-        cmd.user = 1
-        old_stdout = sys.stdout
-        sys.stdout = StringIO()
-        try:
-            try: # try/except/finally doesn't work in Python 2.4, so we need nested try-statements.
-                cmd.run()
-            except SystemExit: # The test runner calls sys.exit, stop that making an error.
-                pass
-        finally:
-            sys.stdout = old_stdout
-            
\ No newline at end of file
diff --git a/vendor/distribute-0.6.34/setuptools/tests/test_upload_docs.py b/vendor/distribute-0.6.34/setuptools/tests/test_upload_docs.py
deleted file mode 100644
index 769f16cc..00000000
--- a/vendor/distribute-0.6.34/setuptools/tests/test_upload_docs.py
+++ /dev/null
@@ -1,72 +0,0 @@
-"""build_ext tests
-"""
-import sys, os, shutil, tempfile, unittest, site, zipfile
-from setuptools.command.upload_docs import upload_docs
-from setuptools.dist import Distribution
-
-SETUP_PY = """\
-from setuptools import setup
-
-setup(name='foo')
-"""
-
-class TestUploadDocsTest(unittest.TestCase):
-    def setUp(self):
-        self.dir = tempfile.mkdtemp()
-        setup = os.path.join(self.dir, 'setup.py')
-        f = open(setup, 'w')
-        f.write(SETUP_PY)
-        f.close()
-        self.old_cwd = os.getcwd()
-        os.chdir(self.dir)
-
-        self.upload_dir = os.path.join(self.dir, 'build')
-        os.mkdir(self.upload_dir)
-
-        # A test document.
-        f = open(os.path.join(self.upload_dir, 'index.html'), 'w')
-        f.write("Hello world.")
-        f.close()
-
-        # An empty folder.
-        os.mkdir(os.path.join(self.upload_dir, 'empty'))
-
-        if sys.version >= "2.6":
-            self.old_base = site.USER_BASE
-            site.USER_BASE = upload_docs.USER_BASE = tempfile.mkdtemp()
-            self.old_site = site.USER_SITE
-            site.USER_SITE = upload_docs.USER_SITE = tempfile.mkdtemp()
-
-    def tearDown(self):
-        os.chdir(self.old_cwd)
-        shutil.rmtree(self.dir)
-        if sys.version >= "2.6":
-            shutil.rmtree(site.USER_BASE)
-            shutil.rmtree(site.USER_SITE)
-            site.USER_BASE = self.old_base
-            site.USER_SITE = self.old_site
-
-    def test_create_zipfile(self):
-        # Test to make sure zipfile creation handles common cases.
-        # This explicitly includes a folder containing an empty folder.
-
-        dist = Distribution()
-
-        cmd = upload_docs(dist)
-        cmd.upload_dir = self.upload_dir
-        cmd.target_dir = self.upload_dir
-        tmp_dir = tempfile.mkdtemp()
-        tmp_file = os.path.join(tmp_dir, 'foo.zip')
-        try:
-            zip_file = cmd.create_zipfile(tmp_file)
-
-            assert zipfile.is_zipfile(tmp_file)
-
-            zip_file = zipfile.ZipFile(tmp_file) # woh...
-
-            assert zip_file.namelist() == ['index.html']
-
-            zip_file.close()
-        finally:
-            shutil.rmtree(tmp_dir)
-
diff --git a/vendor/distribute-0.6.34/setuptools/tests/win_script_wrapper.txt b/vendor/distribute-0.6.34/setuptools/tests/win_script_wrapper.txt
deleted file mode 100644
index 9f7c81d6..00000000
--- a/vendor/distribute-0.6.34/setuptools/tests/win_script_wrapper.txt
+++ /dev/null
@@ -1,151 +0,0 @@
-Python Script Wrapper for Windows
-=================================
-
-setuptools includes wrappers for Python scripts that allows them to be
-executed like regular windows programs.  There are 2 wrappers, once
-for command-line programs, cli.exe, and one for graphica programs,
-gui.exe.  These programs are almost identical, function pretty much
-the same way, and are generated from the same source file.  The
-wrapper programs are used by copying them to the directory containing
-the script they are to wrap and with the same name as the script they
-are to wrap.  In the rest of this document, we'll give an example that
-will illustrate this.
-
-Let's create a simple script, foo-script.py:
-
-    >>> import os, sys, tempfile
-    >>> from setuptools.command.easy_install import nt_quote_arg
-    >>> sample_directory = tempfile.mkdtemp()
-    >>> f = open(os.path.join(sample_directory, 'foo-script.py'), 'w')
-    >>> f.write(
-    ... """#!%(python_exe)s
-    ... import sys
-    ... input = repr(sys.stdin.read())
-    ... print sys.argv[0][-14:]
-    ... print sys.argv[1:]
-    ... print input
-    ... if __debug__:
-    ...     print 'non-optimized'
-    ... """ % dict(python_exe=nt_quote_arg(sys.executable)))
-    >>> f.close()
-
-Note that the script starts with a Unix-style '#!' line saying which
-Python executable to run.  The wrapper will use this to find the
-correct Python executable.
-
-We'll also copy cli.exe to the sample-directory with the name foo.exe:
-
-    >>> import pkg_resources
-    >>> f = open(os.path.join(sample_directory, 'foo.exe'), 'wb')
-    >>> f.write(
-    ...     pkg_resources.resource_string('setuptools', 'cli.exe')
-    ...     )
-    >>> f.close()
-
-When the copy of cli.exe, foo.exe in this example, runs, it examines
-the path name it was run with and computes a Python script path name
-by removing the '.exe' suffic and adding the '-script.py' suffix. (For
-GUI programs, the suffix '-script-pyw' is added.)  This is why we
-named out script the way we did.  Now we can run out script by running
-the wrapper:
-
-    >>> import os
-    >>> input, output = os.popen4('"'+nt_quote_arg(os.path.join(sample_directory, 'foo.exe'))
-    ...               + r' arg1 "arg 2" "arg \"2\\\"" "arg 4\\" "arg5 a\\b"')
-    >>> input.write('hello\nworld\n')
-    >>> input.close()
-    >>> print output.read(),
-    \foo-script.py
-    ['arg1', 'arg 2', 'arg "2\\"', 'arg 4\\', 'arg5 a\\\\b']
-    'hello\nworld\n'
-    non-optimized
-
-This example was a little pathological in that it exercised windows
-(MS C runtime) quoting rules:
-
-- Strings containing spaces are surrounded by double quotes.
-
-- Double quotes in strings need to be escaped by preceding them with
-  back slashes.
-
-- One or more backslashes preceding double quotes quotes need to be
-  escaped by preceding each of them them with back slashes.
-
-
-Specifying Python Command-line Options
---------------------------------------
-
-You can specify a single argument on the '#!' line.  This can be used
-to specify Python options like -O, to run in optimized mode or -i
-to start the interactive interpreter.  You can combine multiple
-options as usual. For example, to run in optimized mode and
-enter the interpreter after running the script, you could use -Oi:
-
-    >>> f = open(os.path.join(sample_directory, 'foo-script.py'), 'w')
-    >>> f.write(
-    ... """#!%(python_exe)s  -Oi  
-    ... import sys
-    ... input = repr(sys.stdin.read())
-    ... print sys.argv[0][-14:]
-    ... print sys.argv[1:]
-    ... print input
-    ... if __debug__:
-    ...     print 'non-optimized'
-    ... sys.ps1 = '---'
-    ... """ % dict(python_exe=nt_quote_arg(sys.executable)))
-    >>> f.close()
-
-    >>> input, output = os.popen4(nt_quote_arg(os.path.join(sample_directory, 'foo.exe')))
-    >>> input.close()
-    >>> print output.read(),
-    \foo-script.py
-    []
-    ''
-    ---
-
-Testing the GUI Version
------------------------
-
-Now let's test the GUI version with the simple scipt, bar-script.py:
-
-    >>> import os, sys, tempfile
-    >>> from setuptools.command.easy_install import nt_quote_arg
-    >>> sample_directory = tempfile.mkdtemp()
-    >>> f = open(os.path.join(sample_directory, 'bar-script.pyw'), 'w')
-    >>> f.write(
-    ... """#!%(python_exe)s
-    ... import sys
-    ... f = open(sys.argv[1], 'wb')
-    ... f.write(repr(sys.argv[2]))
-    ... f.close()
-    ... """ % dict(python_exe=nt_quote_arg(sys.executable)))
-    >>> f.close()
-
-We'll also copy gui.exe to the sample-directory with the name bar.exe:
-
-    >>> import pkg_resources
-    >>> f = open(os.path.join(sample_directory, 'bar.exe'), 'wb')
-    >>> f.write(
-    ...     pkg_resources.resource_string('setuptools', 'gui.exe')
-    ...     )
-    >>> f.close()
-
-Finally, we'll run the script and check the result:
-
-    >>> import os
-    >>> input, output = os.popen4('"'+nt_quote_arg(os.path.join(sample_directory, 'bar.exe'))
-    ...               + r' "%s" "Test Argument"' % os.path.join(sample_directory, 'test_output.txt'))
-    >>> input.close()
-    >>> print output.read()
-    <BLANKLINE>
-    >>> f = open(os.path.join(sample_directory, 'test_output.txt'), 'rb')
-    >>> print f.read()
-    'Test Argument'
-    >>> f.close()
-
-
-We're done with the sample_directory:
-
-    >>> import shutil
-    >>> shutil.rmtree(sample_directory)
-
diff --git a/vendor/distribute-0.6.34/site.py b/vendor/distribute-0.6.34/site.py
deleted file mode 100644
index a7166f14..00000000
--- a/vendor/distribute-0.6.34/site.py
+++ /dev/null
@@ -1,83 +0,0 @@
-def __boot():
-    import sys, os, os.path
-    PYTHONPATH = os.environ.get('PYTHONPATH')
-    if PYTHONPATH is None or (sys.platform=='win32' and not PYTHONPATH):
-        PYTHONPATH = []
-    else:
-        PYTHONPATH = PYTHONPATH.split(os.pathsep)
-
-    pic = getattr(sys,'path_importer_cache',{})
-    stdpath = sys.path[len(PYTHONPATH):]
-    mydir = os.path.dirname(__file__)
-    #print "searching",stdpath,sys.path
-
-    for item in stdpath:
-        if item==mydir or not item:
-            continue    # skip if current dir. on Windows, or my own directory
-        importer = pic.get(item)
-        if importer is not None:
-            loader = importer.find_module('site')
-            if loader is not None:
-                # This should actually reload the current module
-                loader.load_module('site')
-                break
-        else:
-            try:
-                import imp # Avoid import loop in Python >= 3.3
-                stream, path, descr = imp.find_module('site',[item])
-            except ImportError:
-                continue
-            if stream is None:
-                continue
-            try:
-                # This should actually reload the current module
-                imp.load_module('site',stream,path,descr)
-            finally:
-                stream.close()
-            break
-    else:
-        raise ImportError("Couldn't find the real 'site' module")
-
-    #print "loaded", __file__
-
-    known_paths = dict([(makepath(item)[1],1) for item in sys.path]) # 2.2 comp
-
-    oldpos = getattr(sys,'__egginsert',0)   # save old insertion position
-    sys.__egginsert = 0                     # and reset the current one
-
-    for item in PYTHONPATH:
-        addsitedir(item)
-
-    sys.__egginsert += oldpos           # restore effective old position
-    
-    d,nd = makepath(stdpath[0])
-    insert_at = None
-    new_path = []
-
-    for item in sys.path:
-        p,np = makepath(item)
-
-        if np==nd and insert_at is None:
-            # We've hit the first 'system' path entry, so added entries go here
-            insert_at = len(new_path)
-
-        if np in known_paths or insert_at is None:
-            new_path.append(item)
-        else:
-            # new path after the insert point, back-insert it
-            new_path.insert(insert_at, item)
-            insert_at += 1
-            
-    sys.path[:] = new_path
-
-if __name__=='site':    
-    __boot()
-    del __boot
-    
-
-
-
-
-
-
-
diff --git a/vendor/distribute-0.6.34/tests/api_tests.txt b/vendor/distribute-0.6.34/tests/api_tests.txt
deleted file mode 100644
index 6cf6e66f..00000000
--- a/vendor/distribute-0.6.34/tests/api_tests.txt
+++ /dev/null
@@ -1,330 +0,0 @@
-Pluggable Distributions of Python Software
-==========================================
-
-Distributions
--------------
-
-A "Distribution" is a collection of files that represent a "Release" of a
-"Project" as of a particular point in time, denoted by a
-"Version"::
-
-    >>> import sys, pkg_resources
-    >>> from pkg_resources import Distribution
-    >>> Distribution(project_name="Foo", version="1.2")
-    Foo 1.2
-
-Distributions have a location, which can be a filename, URL, or really anything
-else you care to use::
-
-    >>> dist = Distribution(
-    ...     location="http://example.com/something",
-    ...     project_name="Bar", version="0.9"
-    ... )
-
-    >>> dist
-    Bar 0.9 (http://example.com/something)
-
-
-Distributions have various introspectable attributes::
-
-    >>> dist.location
-    'http://example.com/something'
-
-    >>> dist.project_name
-    'Bar'
-
-    >>> dist.version
-    '0.9'
-
-    >>> dist.py_version == sys.version[:3]
-    True
-
-    >>> print dist.platform
-    None
-
-Including various computed attributes::
-
-    >>> from pkg_resources import parse_version
-    >>> dist.parsed_version == parse_version(dist.version)
-    True
-
-    >>> dist.key    # case-insensitive form of the project name
-    'bar'
-
-Distributions are compared (and hashed) by version first::
-
-    >>> Distribution(version='1.0') == Distribution(version='1.0')
-    True
-    >>> Distribution(version='1.0') == Distribution(version='1.1')
-    False
-    >>> Distribution(version='1.0') <  Distribution(version='1.1')
-    True
-
-but also by project name (case-insensitive), platform, Python version,
-location, etc.::
-
-    >>> Distribution(project_name="Foo",version="1.0") == \
-    ... Distribution(project_name="Foo",version="1.0")
-    True
-
-    >>> Distribution(project_name="Foo",version="1.0") == \
-    ... Distribution(project_name="foo",version="1.0")
-    True
-
-    >>> Distribution(project_name="Foo",version="1.0") == \
-    ... Distribution(project_name="Foo",version="1.1")
-    False
-
-    >>> Distribution(project_name="Foo",py_version="2.3",version="1.0") == \
-    ... Distribution(project_name="Foo",py_version="2.4",version="1.0")
-    False
-
-    >>> Distribution(location="spam",version="1.0") == \
-    ... Distribution(location="spam",version="1.0")
-    True
-
-    >>> Distribution(location="spam",version="1.0") == \
-    ... Distribution(location="baz",version="1.0")
-    False
-
-
-
-Hash and compare distribution by prio/plat
-
-Get version from metadata
-provider capabilities
-egg_name()
-as_requirement()
-from_location, from_filename (w/path normalization)
-
-Releases may have zero or more "Requirements", which indicate
-what releases of another project the release requires in order to
-function.  A Requirement names the other project, expresses some criteria
-as to what releases of that project are acceptable, and lists any "Extras"
-that the requiring release may need from that project.  (An Extra is an
-optional feature of a Release, that can only be used if its additional
-Requirements are satisfied.)
-
-
-
-The Working Set
----------------
-
-A collection of active distributions is called a Working Set.  Note that a
-Working Set can contain any importable distribution, not just pluggable ones.
-For example, the Python standard library is an importable distribution that
-will usually be part of the Working Set, even though it is not pluggable.
-Similarly, when you are doing development work on a project, the files you are
-editing are also a Distribution.  (And, with a little attention to the
-directory names used,  and including some additional metadata, such a
-"development distribution" can be made pluggable as well.)
-
-    >>> from pkg_resources import WorkingSet, VersionConflict
-
-A working set's entries are the sys.path entries that correspond to the active
-distributions.  By default, the working set's entries are the items on
-``sys.path``::
-
-    >>> ws = WorkingSet()
-    >>> ws.entries == sys.path
-    True
-
-But you can also create an empty working set explicitly, and add distributions
-to it::
-
-    >>> ws = WorkingSet([])
-    >>> ws.add(dist)
-    >>> ws.entries
-    ['http://example.com/something']
-    >>> dist in ws
-    True
-    >>> Distribution('foo',version="") in ws
-    False
-
-And you can iterate over its distributions::
-
-    >>> list(ws)
-    [Bar 0.9 (http://example.com/something)]
-
-Adding the same distribution more than once is a no-op::
-
-    >>> ws.add(dist)
-    >>> list(ws)
-    [Bar 0.9 (http://example.com/something)]
-
-For that matter, adding multiple distributions for the same project also does
-nothing, because a working set can only hold one active distribution per
-project -- the first one added to it::
-
-    >>> ws.add(
-    ...     Distribution(
-    ...         'http://example.com/something', project_name="Bar",
-    ...         version="7.2"
-    ...     )
-    ... )
-    >>> list(ws)
-    [Bar 0.9 (http://example.com/something)]
-
-You can append a path entry to a working set using ``add_entry()``::
-
-    >>> ws.entries
-    ['http://example.com/something']
-    >>> ws.add_entry(pkg_resources.__file__)
-    >>> ws.entries == ['http://example.com/something', pkg_resources.__file__]
-    True
-
-Multiple additions result in multiple entries, even if the entry is already in
-the working set (because ``sys.path`` can contain the same entry more than
-once)::
-
-    >>> ws.add_entry(pkg_resources.__file__)
-    >>> ws.entries
-    ['...example.com...', '...pkg_resources...', '...pkg_resources...']
-
-And you can specify the path entry a distribution was found under, using the
-optional second parameter to ``add()``::
-
-    >>> ws = WorkingSet([])
-    >>> ws.add(dist,"foo")
-    >>> ws.entries
-    ['foo']
-
-But even if a distribution is found under multiple path entries, it still only
-shows up once when iterating the working set:
-
-    >>> ws.add_entry(ws.entries[0])
-    >>> list(ws)
-    [Bar 0.9 (http://example.com/something)]
-
-You can ask a WorkingSet to ``find()`` a distribution matching a requirement::
-
-    >>> from pkg_resources import Requirement
-    >>> print ws.find(Requirement.parse("Foo==1.0"))    # no match, return None
-    None
-
-    >>> ws.find(Requirement.parse("Bar==0.9"))  # match, return distribution
-    Bar 0.9 (http://example.com/something)
-
-Note that asking for a conflicting version of a distribution already in a
-working set triggers a ``pkg_resources.VersionConflict`` error:
-
-    >>> try:
-    ...     ws.find(Requirement.parse("Bar==1.0"))
-    ... except VersionConflict:
-    ...     print 'ok'
-    ok
-
-You can subscribe a callback function to receive notifications whenever a new
-distribution is added to a working set.  The callback is immediately invoked
-once for each existing distribution in the working set, and then is called
-again for new distributions added thereafter::
-
-    >>> def added(dist): print "Added", dist
-    >>> ws.subscribe(added)
-    Added Bar 0.9
-    >>> foo12 = Distribution(project_name="Foo", version="1.2", location="f12") 
-    >>> ws.add(foo12)
-    Added Foo 1.2
-
-Note, however, that only the first distribution added for a given project name
-will trigger a callback, even during the initial ``subscribe()`` callback::
-
-    >>> foo14 = Distribution(project_name="Foo", version="1.4", location="f14") 
-    >>> ws.add(foo14)   # no callback, because Foo 1.2 is already active
-
-    >>> ws = WorkingSet([])
-    >>> ws.add(foo12)
-    >>> ws.add(foo14)
-    >>> ws.subscribe(added)
-    Added Foo 1.2
-    
-And adding a callback more than once has no effect, either::
-
-    >>> ws.subscribe(added)     # no callbacks
-
-    # and no double-callbacks on subsequent additions, either
-    >>> just_a_test = Distribution(project_name="JustATest", version="0.99")
-    >>> ws.add(just_a_test)
-    Added JustATest 0.99
-
-
-Finding Plugins
----------------
-
-``WorkingSet`` objects can be used to figure out what plugins in an
-``Environment`` can be loaded without any resolution errors::
-
-    >>> from pkg_resources import Environment
-
-    >>> plugins = Environment([])   # normally, a list of plugin directories
-    >>> plugins.add(foo12)
-    >>> plugins.add(foo14)
-    >>> plugins.add(just_a_test)
-    
-In the simplest case, we just get the newest version of each distribution in
-the plugin environment::
-
-    >>> ws = WorkingSet([])
-    >>> ws.find_plugins(plugins)
-    ([JustATest 0.99, Foo 1.4 (f14)], {})
-
-But if there's a problem with a version conflict or missing requirements, the
-method falls back to older versions, and the error info dict will contain an
-exception instance for each unloadable plugin::
-
-    >>> ws.add(foo12)   # this will conflict with Foo 1.4
-    >>> ws.find_plugins(plugins)
-    ([JustATest 0.99, Foo 1.2 (f12)], {Foo 1.4 (f14): VersionConflict(...)})
-
-But if you disallow fallbacks, the failed plugin will be skipped instead of
-trying older versions::
-
-    >>> ws.find_plugins(plugins, fallback=False)
-    ([JustATest 0.99], {Foo 1.4 (f14): VersionConflict(...)})
-
-
-
-Platform Compatibility Rules
-----------------------------
-
-On the Mac, there are potential compatibility issues for modules compiled
-on newer versions of Mac OS X than what the user is running. Additionally,
-Mac OS X will soon have two platforms to contend with: Intel and PowerPC.
-
-Basic equality works as on other platforms::
-
-    >>> from pkg_resources import compatible_platforms as cp
-    >>> reqd = 'macosx-10.4-ppc'
-    >>> cp(reqd, reqd)
-    True
-    >>> cp("win32", reqd)
-    False
-
-Distributions made on other machine types are not compatible::
-
-    >>> cp("macosx-10.4-i386", reqd)
-    False
-
-Distributions made on earlier versions of the OS are compatible, as
-long as they are from the same top-level version. The patchlevel version
-number does not matter::
-
-    >>> cp("macosx-10.4-ppc", reqd)
-    True
-    >>> cp("macosx-10.3-ppc", reqd)
-    True
-    >>> cp("macosx-10.5-ppc", reqd)
-    False
-    >>> cp("macosx-9.5-ppc", reqd)
-    False
-
-Backwards compatibility for packages made via earlier versions of 
-setuptools is provided as well::
-
-    >>> cp("darwin-8.2.0-Power_Macintosh", reqd)
-    True
-    >>> cp("darwin-7.2.0-Power_Macintosh", reqd)
-    True
-    >>> cp("darwin-8.2.0-Power_Macintosh", "macosx-10.3-ppc")
-    False
-
diff --git a/vendor/distribute-0.6.34/tests/install_test.py b/vendor/distribute-0.6.34/tests/install_test.py
deleted file mode 100644
index 02deb818..00000000
--- a/vendor/distribute-0.6.34/tests/install_test.py
+++ /dev/null
@@ -1,75 +0,0 @@
-import urllib2
-import sys
-import os
-
-if os.path.exists('distribute_setup.py'):
-    print 'distribute_setup.py exists in the current dir, aborting'
-    sys.exit(2)
-
-print '**** Starting Test'
-print '\n\n'
-
-is_jython = sys.platform.startswith('java')
-if is_jython:
-    import subprocess
-
-print 'Downloading bootstrap'
-file = urllib2.urlopen('http://nightly.ziade.org/distribute_setup.py')
-f = open('distribute_setup.py', 'w')
-f.write(file.read())
-f.close()
-
-# running it
-args = [sys.executable]  + ['distribute_setup.py']
-if is_jython:
-    res = subprocess.call(args)
-else:
-    res = os.spawnv(os.P_WAIT, sys.executable, args)
-
-if res != 0:
-    print '**** Test failed, please send me the output at tarek@ziade.org'
-    os.remove('distribute_setup.py')
-    sys.exit(2)
-
-# now checking if Distribute is installed
-script = """\
-import sys
-try:
-    import setuptools
-except ImportError:
-    sys.exit(0)
-
-sys.exit(hasattr(setuptools, "_distribute"))
-"""
-
-root = 'script'
-seed = 0
-script_name = '%s%d.py' % (root, seed)
-
-while os.path.exists(script_name):
-    seed += 1
-    script_name = '%s%d.py' % (root, seed)
-
-f = open(script_name, 'w')
-try:
-    f.write(script)
-finally:
-    f.close()
-
-try:
-    args = [sys.executable]  + [script_name]
-    if is_jython:
-        res = subprocess.call(args)
-    else:
-        res = os.spawnv(os.P_WAIT, sys.executable, args)
-
-    print '\n\n'
-    if res:
-        print '**** Test is OK'
-    else:
-        print '**** Test failed, please send me the output at tarek@ziade.org'
-finally:
-    if os.path.exists(script_name):
-        os.remove(script_name)
-    os.remove('distribute_setup.py')
-
diff --git a/vendor/distribute-0.6.34/tests/manual_test.py b/vendor/distribute-0.6.34/tests/manual_test.py
deleted file mode 100644
index 0d5051f1..00000000
--- a/vendor/distribute-0.6.34/tests/manual_test.py
+++ /dev/null
@@ -1,110 +0,0 @@
-#!/usr/bin/env python
-import sys
-
-if sys.version_info[0] >= 3:
-    raise NotImplementedError('Py3 not supported in this test yet')
-
-import os
-import shutil
-import tempfile
-from distutils.command.install import INSTALL_SCHEMES
-from string import Template
-from urllib2 import urlopen
-
-try:
-    import subprocess
-    def _system_call(*args):
-        assert subprocess.call(args) == 0
-except ImportError:
-    # Python 2.3
-    def _system_call(*args):
-        # quoting arguments if windows
-        if sys.platform == 'win32':
-            def quote(arg):
-                if ' ' in arg:
-                    return '"%s"' % arg
-                return arg
-            args = [quote(arg) for arg in args]
-        assert os.system(' '.join(args)) == 0
-
-def tempdir(func):
-    def _tempdir(*args, **kwargs):
-        test_dir = tempfile.mkdtemp()
-        old_dir = os.getcwd()
-        os.chdir(test_dir)
-        try:
-            return func(*args, **kwargs)
-        finally:
-            os.chdir(old_dir)
-            shutil.rmtree(test_dir)
-    return _tempdir
-
-SIMPLE_BUILDOUT = """\
-[buildout]
-
-parts = eggs
-
-[eggs]
-recipe = zc.recipe.egg
-
-eggs =
-    extensions
-"""
-
-BOOTSTRAP = 'http://python-distribute.org/bootstrap.py'
-PYVER = sys.version.split()[0][:3]
-DEV_URL = 'http://bitbucket.org/tarek/distribute/get/0.6-maintenance.zip#egg=distribute-dev'
-
-_VARS = {'base': '.',
-         'py_version_short': PYVER}
-
-if sys.platform == 'win32':
-    PURELIB = INSTALL_SCHEMES['nt']['purelib']
-else:
-    PURELIB = INSTALL_SCHEMES['unix_prefix']['purelib']
-
-
-@tempdir
-def test_virtualenv():
-    """virtualenv with distribute"""
-    purelib = os.path.abspath(Template(PURELIB).substitute(**_VARS))
-    _system_call('virtualenv', '--no-site-packages', '.', '--distribute')
-    _system_call('bin/easy_install', 'distribute==dev')
-    # linux specific
-    site_pkg = os.listdir(purelib)
-    site_pkg.sort()
-    assert 'distribute' in site_pkg[0]
-    easy_install = os.path.join(purelib, 'easy-install.pth')
-    with open(easy_install) as f:
-        res = f.read()
-    assert 'distribute' in res
-    assert 'setuptools' not in res
-
-@tempdir
-def test_full():
-    """virtualenv + pip + buildout"""
-    _system_call('virtualenv', '--no-site-packages', '.')
-    _system_call('bin/easy_install', '-q', 'distribute==dev')
-    _system_call('bin/easy_install', '-qU', 'distribute==dev')
-    _system_call('bin/easy_install', '-q', 'pip')
-    _system_call('bin/pip', 'install', '-q', 'zc.buildout')
-
-    with open('buildout.cfg', 'w') as f:
-        f.write(SIMPLE_BUILDOUT)
-
-    with open('bootstrap.py', 'w') as f:
-        f.write(urlopen(BOOTSTRAP).read())
-
-    _system_call('bin/python', 'bootstrap.py', '--distribute')
-    _system_call('bin/buildout', '-q')
-    eggs = os.listdir('eggs')
-    eggs.sort()
-    assert len(eggs) == 3
-    assert eggs[0].startswith('distribute')
-    assert eggs[1:] == ['extensions-0.3-py2.6.egg',
-                        'zc.recipe.egg-1.2.2-py2.6.egg']
-
-if __name__ == '__main__':
-    test_virtualenv()
-    test_full()
-
diff --git a/vendor/distribute-0.6.34/tests/shlib_test/hello.c b/vendor/distribute-0.6.34/tests/shlib_test/hello.c
deleted file mode 100644
index 9998372c..00000000
--- a/vendor/distribute-0.6.34/tests/shlib_test/hello.c
+++ /dev/null
@@ -1,168 +0,0 @@
-/* Generated by Pyrex 0.9.3 on Thu Jan 05 17:47:12 2006 */
-
-#include "Python.h"
-#include "structmember.h"
-#ifndef PY_LONG_LONG
-  #define PY_LONG_LONG LONG_LONG
-#endif
-
-
-typedef struct {PyObject **p; char *s;} __Pyx_InternTabEntry; /*proto*/
-typedef struct {PyObject **p; char *s; long n;} __Pyx_StringTabEntry; /*proto*/
-static PyObject *__Pyx_UnpackItem(PyObject *, int); /*proto*/
-static int __Pyx_EndUnpack(PyObject *, int); /*proto*/
-static int __Pyx_PrintItem(PyObject *); /*proto*/
-static int __Pyx_PrintNewline(void); /*proto*/
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
-static void __Pyx_ReRaise(void); /*proto*/
-static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list); /*proto*/
-static PyObject *__Pyx_GetExcValue(void); /*proto*/
-static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, char *name); /*proto*/
-static int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
-static int __Pyx_GetStarArgs(PyObject **args, PyObject **kwds, char *kwd_list[], int nargs, PyObject **args2, PyObject **kwds2); /*proto*/
-static void __Pyx_WriteUnraisable(char *name); /*proto*/
-static void __Pyx_AddTraceback(char *funcname); /*proto*/
-static PyTypeObject *__Pyx_ImportType(char *module_name, char *class_name, long size);  /*proto*/
-static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/
-static int __Pyx_GetVtable(PyObject *dict, void *vtabptr); /*proto*/
-static PyObject *__Pyx_CreateClass(PyObject *bases, PyObject *dict, PyObject *name, char *modname); /*proto*/
-static int __Pyx_InternStrings(__Pyx_InternTabEntry *t); /*proto*/
-static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
-static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
-
-static PyObject *__pyx_m;
-static PyObject *__pyx_b;
-static int __pyx_lineno;
-static char *__pyx_filename;
-staticforward char **__pyx_f;
-
-/* Declarations from hello */
-
-char (*(get_hello_msg(void))); /*proto*/
-
-/* Implementation of hello */
-
-static PyObject *__pyx_n_hello;
-
-static PyObject *__pyx_f_5hello_hello(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_5hello_hello(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_r;
-  PyObject *__pyx_1 = 0;
-  static char *__pyx_argnames[] = {0};
-  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) return 0;
-
-  /* "C:\cygwin\home\pje\setuptools\tests\shlib_test\hello.pyx":4 */
-  __pyx_1 = PyString_FromString(get_hello_msg()); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4; goto __pyx_L1;}
-  __pyx_r = __pyx_1;
-  __pyx_1 = 0;
-  goto __pyx_L0;
-
-  __pyx_r = Py_None; Py_INCREF(__pyx_r);
-  goto __pyx_L0;
-  __pyx_L1:;
-  Py_XDECREF(__pyx_1);
-  __Pyx_AddTraceback("hello.hello");
-  __pyx_r = 0;
-  __pyx_L0:;
-  return __pyx_r;
-}
-
-static __Pyx_InternTabEntry __pyx_intern_tab[] = {
-  {&__pyx_n_hello, "hello"},
-  {0, 0}
-};
-
-static struct PyMethodDef __pyx_methods[] = {
-  {"hello", (PyCFunction)__pyx_f_5hello_hello, METH_VARARGS|METH_KEYWORDS, 0},
-  {0, 0, 0, 0}
-};
-
-DL_EXPORT(void) inithello(void); /*proto*/
-DL_EXPORT(void) inithello(void) {
-  __pyx_m = Py_InitModule4("hello", __pyx_methods, 0, 0, PYTHON_API_VERSION);
-  if (!__pyx_m) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; goto __pyx_L1;};
-  __pyx_b = PyImport_AddModule("__builtin__");
-  if (!__pyx_b) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; goto __pyx_L1;};
-  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; goto __pyx_L1;};
-  if (__Pyx_InternStrings(__pyx_intern_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; goto __pyx_L1;};
-
-  /* "C:\cygwin\home\pje\setuptools\tests\shlib_test\hello.pyx":3 */
-  return;
-  __pyx_L1:;
-  __Pyx_AddTraceback("hello");
-}
-
-static char *__pyx_filenames[] = {
-  "hello.pyx",
-};
-statichere char **__pyx_f = __pyx_filenames;
-
-/* Runtime support code */
-
-static int __Pyx_InternStrings(__Pyx_InternTabEntry *t) {
-    while (t->p) {
-        *t->p = PyString_InternFromString(t->s);
-        if (!*t->p)
-            return -1;
-        ++t;
-    }
-    return 0;
-}
-
-#include "compile.h"
-#include "frameobject.h"
-#include "traceback.h"
-
-static void __Pyx_AddTraceback(char *funcname) {
-    PyObject *py_srcfile = 0;
-    PyObject *py_funcname = 0;
-    PyObject *py_globals = 0;
-    PyObject *empty_tuple = 0;
-    PyObject *empty_string = 0;
-    PyCodeObject *py_code = 0;
-    PyFrameObject *py_frame = 0;
-    
-    py_srcfile = PyString_FromString(__pyx_filename);
-    if (!py_srcfile) goto bad;
-    py_funcname = PyString_FromString(funcname);
-    if (!py_funcname) goto bad;
-    py_globals = PyModule_GetDict(__pyx_m);
-    if (!py_globals) goto bad;
-    empty_tuple = PyTuple_New(0);
-    if (!empty_tuple) goto bad;
-    empty_string = PyString_FromString("");
-    if (!empty_string) goto bad;
-    py_code = PyCode_New(
-        0,            /*int argcount,*/
-        0,            /*int nlocals,*/
-        0,            /*int stacksize,*/
-        0,            /*int flags,*/
-        empty_string, /*PyObject *code,*/
-        empty_tuple,  /*PyObject *consts,*/
-        empty_tuple,  /*PyObject *names,*/
-        empty_tuple,  /*PyObject *varnames,*/
-        empty_tuple,  /*PyObject *freevars,*/
-        empty_tuple,  /*PyObject *cellvars,*/
-        py_srcfile,   /*PyObject *filename,*/
-        py_funcname,  /*PyObject *name,*/
-        __pyx_lineno,   /*int firstlineno,*/
-        empty_string  /*PyObject *lnotab*/
-    );
-    if (!py_code) goto bad;
-    py_frame = PyFrame_New(
-        PyThreadState_Get(), /*PyThreadState *tstate,*/
-        py_code,             /*PyCodeObject *code,*/
-        py_globals,          /*PyObject *globals,*/
-        0                    /*PyObject *locals*/
-    );
-    if (!py_frame) goto bad;
-    py_frame->f_lineno = __pyx_lineno;
-    PyTraceBack_Here(py_frame);
-bad:
-    Py_XDECREF(py_srcfile);
-    Py_XDECREF(py_funcname);
-    Py_XDECREF(empty_tuple);
-    Py_XDECREF(empty_string);
-    Py_XDECREF(py_code);
-    Py_XDECREF(py_frame);
-}
diff --git a/vendor/distribute-0.6.34/tests/shlib_test/hello.pyx b/vendor/distribute-0.6.34/tests/shlib_test/hello.pyx
deleted file mode 100644
index 58ce6919..00000000
--- a/vendor/distribute-0.6.34/tests/shlib_test/hello.pyx
+++ /dev/null
@@ -1,4 +0,0 @@
-cdef extern char *get_hello_msg()
-
-def hello():
-    return get_hello_msg()
diff --git a/vendor/distribute-0.6.34/tests/shlib_test/hellolib.c b/vendor/distribute-0.6.34/tests/shlib_test/hellolib.c
deleted file mode 100644
index 88d65cee..00000000
--- a/vendor/distribute-0.6.34/tests/shlib_test/hellolib.c
+++ /dev/null
@@ -1,3 +0,0 @@
-extern char* get_hello_msg() {
-    return "Hello, world!";
-}
diff --git a/vendor/distribute-0.6.34/tests/shlib_test/setup.py b/vendor/distribute-0.6.34/tests/shlib_test/setup.py
deleted file mode 100644
index b0c93996..00000000
--- a/vendor/distribute-0.6.34/tests/shlib_test/setup.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from setuptools import setup, Extension, Library
-
-setup(
-    name="shlib_test",
-    ext_modules = [
-        Library("hellolib", ["hellolib.c"]),
-        Extension("hello", ["hello.pyx"], libraries=["hellolib"])
-    ],
-    test_suite="test_hello.HelloWorldTest",
-)
diff --git a/vendor/distribute-0.6.34/tests/shlib_test/test_hello.py b/vendor/distribute-0.6.34/tests/shlib_test/test_hello.py
deleted file mode 100644
index 6da02e31..00000000
--- a/vendor/distribute-0.6.34/tests/shlib_test/test_hello.py
+++ /dev/null
@@ -1,7 +0,0 @@
-from unittest import TestCase
-
-class HelloWorldTest(TestCase):
-    def testHelloMsg(self):
-        from hello import hello
-        self.assertEqual(hello(), "Hello, world!")
-
diff --git a/vendor/distribute-0.6.34/tests/test_distribute_setup.py b/vendor/distribute-0.6.34/tests/test_distribute_setup.py
deleted file mode 100644
index 1f3da058..00000000
--- a/vendor/distribute-0.6.34/tests/test_distribute_setup.py
+++ /dev/null
@@ -1,73 +0,0 @@
-import sys
-import os
-import tempfile
-import unittest
-import shutil
-import copy
-
-CURDIR = os.path.abspath(os.path.dirname(__file__))
-TOPDIR = os.path.split(CURDIR)[0]
-sys.path.insert(0, TOPDIR)
-
-from distribute_setup import (use_setuptools, _build_egg, _python_cmd,
-                              _do_download, _install, DEFAULT_URL,
-                              DEFAULT_VERSION)
-import distribute_setup
-
-class TestSetup(unittest.TestCase):
-
-    def urlopen(self, url):
-        return open(self.tarball)
-
-    def setUp(self):
-        self.old_sys_path = copy.copy(sys.path)
-        self.cwd = os.getcwd()
-        self.tmpdir = tempfile.mkdtemp()
-        os.chdir(TOPDIR)
-        _python_cmd("setup.py", "-q", "egg_info", "-RDb", "''", "sdist",
-                    "--dist-dir", "%s" % self.tmpdir)
-        tarball = os.listdir(self.tmpdir)[0]
-        self.tarball = os.path.join(self.tmpdir, tarball)
-        import urllib2
-        urllib2.urlopen = self.urlopen
-
-    def tearDown(self):
-        shutil.rmtree(self.tmpdir)
-        os.chdir(self.cwd)
-        sys.path = copy.copy(self.old_sys_path)
-
-    def test_build_egg(self):
-        # making it an egg
-        egg = _build_egg(self.tarball, self.tmpdir)
-
-        # now trying to import it
-        sys.path[0] = egg
-        import setuptools
-        self.assertTrue(setuptools.__file__.startswith(egg))
-
-    def test_do_download(self):
-        tmpdir = tempfile.mkdtemp()
-        _do_download(DEFAULT_VERSION, DEFAULT_URL, tmpdir, 1)
-        import setuptools
-        self.assertTrue(setuptools.bootstrap_install_from.startswith(tmpdir))
-
-    def test_install(self):
-        def _faked(*args):
-            return True
-        distribute_setup.python_cmd = _faked
-        _install(self.tarball)
-
-    def test_use_setuptools(self):
-        self.assertEqual(use_setuptools(), None)
-
-        # make sure fake_setuptools is not called by default
-        import pkg_resources
-        del pkg_resources._distribute
-        def fake_setuptools(*args):
-            raise AssertionError
-
-        pkg_resources._fake_setuptools = fake_setuptools
-        use_setuptools()
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/vendor/pip-1.2.1.tar.gz b/vendor/pip-1.2.1.tar.gz
deleted file mode 100644
index 462c16b5f8c20af6d0c9485be56c038a8780e6c8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 322772
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
JGfDuc3;?mq&~*R+

diff --git a/vendor/pip-1.2.1/.gitignore b/vendor/pip-1.2.1/.gitignore
deleted file mode 100644
index 0fe94900..00000000
--- a/vendor/pip-1.2.1/.gitignore
+++ /dev/null
@@ -1,23 +0,0 @@
-MANIFEST
-tests/test-scratch/*
-tests/test-cache/*
-tests/packages/FSPkg/FSPkg.egg-info
-testenv
-pip.egg-info/*
-ScriptTest-*.egg
-virtualenv-*.egg
-nose-*.egg/*
-wsgi_intercept-*.egg/*
-WSGIProxy-*.egg/*
-WebOb-*.egg
-Paste-*.egg/*
-mock-*egg
-tests/tests_cache/*
-dist/*
-docs/_build/*
-build/*
-*.pyc
-*.pyo 
-pip-log.txt
-pip.log
-*.~
diff --git a/vendor/pip-1.2.1/AUTHORS.txt b/vendor/pip-1.2.1/AUTHORS.txt
deleted file mode 100644
index 5fa57113..00000000
--- a/vendor/pip-1.2.1/AUTHORS.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-Alex Grönholm
-Alex Morega
-Alexandre Conrad
-Antti Kaihola
-Armin Ronacher
-Brian Rosner
-Carl Meyer
-Christian Oudard
-Cody Soyland
-Daniel Holth
-Dave Abrahams
-Francesco
-Hugo Lopes Tavares
-Ian Bicking
-Igor Sobreira
-Ionel Maries Cristian
-Jakub Vysoky
-Jannis Leidel
-Jay Graves
-John-Scott Atlakson
-Jon Parise
-Josh Bronson
-Kelsey Hightower
-Kenneth Belitzky
-Kumar McMillan
-Luke Macken
-Masklinn
-Marc Abramowitz
-Marcus Smith
-Matt Maker
-Nowell Strite
-Oliver Tonnhofer
-Olivier Girardot
-Patrick Jenkins
-Paul Nasrat
-Paul Oswald
-Paul van der Linden
-Peter Waller
-Piet Delport
-Qiangning Hong
-Rene Dudfield
-Ronny Pfannschmidt
-Simon Cross
-Stavros Korokithakis
-Thomas Johansson
-Vinay Sajip
-Vitaly Babiy
-Wil Tan
diff --git a/vendor/pip-1.2.1/LICENSE.txt b/vendor/pip-1.2.1/LICENSE.txt
deleted file mode 100644
index 7951a032..00000000
--- a/vendor/pip-1.2.1/LICENSE.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright (c) 2008-2011 The pip developers (see AUTHORS.txt file)
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/pip-1.2.1/MANIFEST.in b/vendor/pip-1.2.1/MANIFEST.in
deleted file mode 100644
index add9bf16..00000000
--- a/vendor/pip-1.2.1/MANIFEST.in
+++ /dev/null
@@ -1,6 +0,0 @@
-include AUTHORS.txt
-include LICENSE.txt
-recursive-include docs *.txt
-recursive-include docs *.html
-recursive-exclude docs/_build *.txt
-prune docs/_build/_sources
diff --git a/vendor/pip-1.2.1/contrib/build-installer b/vendor/pip-1.2.1/contrib/build-installer
deleted file mode 100755
index 8a0e1af2..00000000
--- a/vendor/pip-1.2.1/contrib/build-installer
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/env python
-
-import os
-import sys
-from packager import generate_script
-
-here = os.path.dirname(os.path.abspath(__file__))
-file_name = os.path.join(here, 'get-pip.py')
-
-entry = """
-import sys
-try:
-    import setuptools
-    import pkg_resources
-except ImportError:
-    raise SystemExit("An error occured while trying to run %s. Make sure "
-                     "you have setuptools or distribute installed." % __file__)
-import pip
-pip.bootstrap()
-"""
-
-def main():
-    sys.stdout.write("Creating pip bootstrapper...")
-    script = generate_script(entry, ['pip'])
-    f = open(file_name, 'w')
-    try:
-        f.write(script)
-    finally:
-        f.close()
-    sys.stdout.write('done.\n')
-    if hasattr(os, 'chmod'):
-        oldmode = os.stat(file_name).st_mode & 07777
-        newmode = (oldmode | 0555) & 07777
-        os.chmod(file_name, newmode)
-        sys.stdout.write('Made resulting file %s executable.\n\n' % file_name)
-
-if __name__ == '__main__':
-    main()
diff --git a/vendor/pip-1.2.1/contrib/build-standalone b/vendor/pip-1.2.1/contrib/build-standalone
deleted file mode 100755
index b2a1aebe..00000000
--- a/vendor/pip-1.2.1/contrib/build-standalone
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/env python
-
-import os
-import sys
-from packager import generate_script
-
-here = os.path.dirname(os.path.abspath(__file__))
-file_name = os.path.join(here, 'run-pip.py')
-
-entry = """
-import sys
-try:
-    import setuptools
-    import pkg_resources
-except ImportError:
-    raise SystemExit("An error occured while trying to run %s. Make sure "
-                     "you have setuptools or distribute installed." % __file__)
-import pip
-pip.main()
-"""
-
-def main():
-    sys.stdout.write("Creating standalone pip...")
-    script = generate_script(entry, ['pip'])
-    f = open(file_name, 'w')
-    try:
-        f.write(script)
-    finally:
-        f.close()
-    sys.stdout.write('done.\n')
-    if hasattr(os, 'chmod'):
-        oldmode = os.stat(file_name).st_mode & 07777
-        newmode = (oldmode | 0555) & 07777
-        os.chmod(file_name, newmode)
-        sys.stdout.write('Made resulting file %s executable.\n\n' % file_name)
-
-if __name__ == '__main__':
-    main()
diff --git a/vendor/pip-1.2.1/contrib/get-pip.py b/vendor/pip-1.2.1/contrib/get-pip.py
deleted file mode 100755
index 9fd5b303..00000000
--- a/vendor/pip-1.2.1/contrib/get-pip.py
+++ /dev/null
@@ -1,1153 +0,0 @@
-#! /usr/bin/env python
-
-sources = """
-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
-"""
-
-import os
-import sys
-import base64
-import zlib
-import tempfile
-import shutil
-
-
-def unpack(sources):
-    temp_dir = tempfile.mkdtemp('-scratchdir', 'unpacker-')
-    for package, content in sources.items():
-        filepath = package.split(".")
-        dirpath = os.sep.join(filepath[:-1])
-        packagedir = os.path.join(temp_dir, dirpath)
-        if not os.path.isdir(packagedir):
-            os.makedirs(packagedir)
-        mod = open(os.path.join(packagedir, "%s.py" % filepath[-1]), 'wb')
-        try:
-            mod.write(content.encode("ascii"))
-        finally:
-            mod.close()
-    return temp_dir
-
-if __name__ == "__main__":
-    if sys.version_info >= (3, 0):
-        exec("def do_exec(co, loc): exec(co, loc)\n")
-        import pickle
-        sources = sources.encode("ascii") # ensure bytes
-        sources = pickle.loads(zlib.decompress(base64.decodebytes(sources)))
-    else:
-        import cPickle as pickle
-        exec("def do_exec(co, loc): exec co in loc\n")
-        sources = pickle.loads(zlib.decompress(base64.decodestring(sources)))
-
-    try:
-        temp_dir = unpack(sources)
-        sys.path.insert(0, temp_dir)
-
-        entry = """
-import sys
-try:
-    import setuptools
-    import pkg_resources
-except ImportError:
-    raise SystemExit("An error occured while trying to run %s. Make sure "
-                     "you have setuptools or distribute installed." % __file__)
-import pip
-pip.bootstrap()
-"""
-        do_exec(entry, locals())
-    finally:
-        shutil.rmtree(temp_dir)
diff --git a/vendor/pip-1.2.1/contrib/packager/__init__.py b/vendor/pip-1.2.1/contrib/packager/__init__.py
deleted file mode 100644
index 96068312..00000000
--- a/vendor/pip-1.2.1/contrib/packager/__init__.py
+++ /dev/null
@@ -1,68 +0,0 @@
-# Port of Ronny Pfannschmidt's genscript package
-# https://bitbucket.org/RonnyPfannschmidt/genscript
-
-import sys
-import pickle
-import zlib
-import base64
-import os
-import fnmatch
-
-
-def find_toplevel(name):
-    for syspath in sys.path:
-        lib = os.path.join(syspath, name)
-        if os.path.isdir(lib):
-            return lib
-        mod = lib + '.py'
-        if os.path.isfile(mod):
-            return mod
-    raise LookupError(name)
-
-
-def pkgname(toplevel, rootpath, path):
-    parts = path.split(os.sep)[len(rootpath.split(os.sep)):]
-    return '.'.join([toplevel] + [os.path.splitext(x)[0] for x in parts])
-
-
-def pkg_to_mapping(name):
-    toplevel = find_toplevel(name)
-    if os.path.isfile(toplevel):
-        return {name: toplevel.read()}
-
-    name2src = {}
-    for root, dirs, files in os.walk(toplevel):
-        for pyfile in files:
-            if fnmatch.fnmatch(pyfile, '*.py'):
-                pkg = pkgname(name, toplevel, os.path.join(root, pyfile))
-                f = open(os.path.join(root, pyfile))
-                try:
-                    name2src[pkg] = f.read()
-                finally:
-                    f.close()
-    return name2src
-
-
-def compress_mapping(mapping):
-    data = pickle.dumps(mapping, 2)
-    data = zlib.compress(data, 9)
-    data = base64.encodestring(data)
-    data = data.decode('ascii')
-    return data
-
-
-def compress_packages(names):
-    mapping = {}
-    for name in names:
-        mapping.update(pkg_to_mapping(name))
-    return compress_mapping(mapping)
-
-
-def generate_script(entry, packages):
-    data = compress_packages(packages)
-    tmpl = open(os.path.join(os.path.dirname(__file__), 'template.py'))
-    exe = tmpl.read()
-    tmpl.close()
-    exe = exe.replace('@SOURCES@', data)
-    exe = exe.replace('@ENTRY@', entry)
-    return exe
diff --git a/vendor/pip-1.2.1/contrib/packager/template.py b/vendor/pip-1.2.1/contrib/packager/template.py
deleted file mode 100644
index 40695893..00000000
--- a/vendor/pip-1.2.1/contrib/packager/template.py
+++ /dev/null
@@ -1,48 +0,0 @@
-#! /usr/bin/env python
-
-sources = """
-@SOURCES@"""
-
-import os
-import sys
-import base64
-import zlib
-import tempfile
-import shutil
-
-
-def unpack(sources):
-    temp_dir = tempfile.mkdtemp('-scratchdir', 'unpacker-')
-    for package, content in sources.items():
-        filepath = package.split(".")
-        dirpath = os.sep.join(filepath[:-1])
-        packagedir = os.path.join(temp_dir, dirpath)
-        if not os.path.isdir(packagedir):
-            os.makedirs(packagedir)
-        mod = open(os.path.join(packagedir, "%s.py" % filepath[-1]), 'wb')
-        try:
-            mod.write(content.encode("ascii"))
-        finally:
-            mod.close()
-    return temp_dir
-
-
-if __name__ == "__main__":
-    if sys.version_info >= (3, 0):
-        exec("def do_exec(co, loc): exec(co, loc)\n")
-        import pickle
-        sources = sources.encode("ascii") # ensure bytes
-        sources = pickle.loads(zlib.decompress(base64.decodebytes(sources)))
-    else:
-        import cPickle as pickle
-        exec("def do_exec(co, loc): exec co in loc\n")
-        sources = pickle.loads(zlib.decompress(base64.decodestring(sources)))
-
-    try:
-        temp_dir = unpack(sources)
-        sys.path.insert(0, temp_dir)
-
-        entry = """@ENTRY@"""
-        do_exec(entry, locals())
-    finally:
-        shutil.rmtree(temp_dir)
diff --git a/vendor/pip-1.2.1/docs/Makefile b/vendor/pip-1.2.1/docs/Makefile
deleted file mode 100644
index e4de9f84..00000000
--- a/vendor/pip-1.2.1/docs/Makefile
+++ /dev/null
@@ -1,130 +0,0 @@
-# Makefile for Sphinx documentation
-#
-
-# You can set these variables from the command line.
-SPHINXOPTS    =
-SPHINXBUILD   = sphinx-build
-PAPER         =
-BUILDDIR      = _build
-
-# Internal variables.
-PAPEROPT_a4     = -D latex_paper_size=a4
-PAPEROPT_letter = -D latex_paper_size=letter
-ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-
-.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
-
-help:
-	@echo "Please use \`make <target>' where <target> is one of"
-	@echo "  html       to make standalone HTML files"
-	@echo "  dirhtml    to make HTML files named index.html in directories"
-	@echo "  singlehtml to make a single large HTML file"
-	@echo "  pickle     to make pickle files"
-	@echo "  json       to make JSON files"
-	@echo "  htmlhelp   to make HTML files and a HTML help project"
-	@echo "  qthelp     to make HTML files and a qthelp project"
-	@echo "  devhelp    to make HTML files and a Devhelp project"
-	@echo "  epub       to make an epub"
-	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
-	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"
-	@echo "  text       to make text files"
-	@echo "  man        to make manual pages"
-	@echo "  changes    to make an overview of all changed/added/deprecated items"
-	@echo "  linkcheck  to check all external links for integrity"
-	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
-
-clean:
-	-rm -rf $(BUILDDIR)/*
-
-html:
-	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
-	@echo
-	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
-
-dirhtml:
-	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
-	@echo
-	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
-
-singlehtml:
-	$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
-	@echo
-	@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
-
-pickle:
-	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
-	@echo
-	@echo "Build finished; now you can process the pickle files."
-
-json:
-	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
-	@echo
-	@echo "Build finished; now you can process the JSON files."
-
-htmlhelp:
-	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
-	@echo
-	@echo "Build finished; now you can run HTML Help Workshop with the" \
-	      ".hhp project file in $(BUILDDIR)/htmlhelp."
-
-qthelp:
-	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
-	@echo
-	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
-	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
-	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/django-compressor.qhcp"
-	@echo "To view the help file:"
-	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/django-compressor.qhc"
-
-devhelp:
-	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
-	@echo
-	@echo "Build finished."
-	@echo "To view the help file:"
-	@echo "# mkdir -p $$HOME/.local/share/devhelp/django-compressor"
-	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/django-compressor"
-	@echo "# devhelp"
-
-epub:
-	$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
-	@echo
-	@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
-
-latex:
-	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
-	@echo
-	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
-	@echo "Run \`make' in that directory to run these through (pdf)latex" \
-	      "(use \`make latexpdf' here to do that automatically)."
-
-latexpdf:
-	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
-	@echo "Running LaTeX files through pdflatex..."
-	make -C $(BUILDDIR)/latex all-pdf
-	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
-
-text:
-	$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
-	@echo
-	@echo "Build finished. The text files are in $(BUILDDIR)/text."
-
-man:
-	$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
-	@echo
-	@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
-
-changes:
-	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
-	@echo
-	@echo "The overview file is in $(BUILDDIR)/changes."
-
-linkcheck:
-	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
-	@echo
-	@echo "Link check complete; look for any errors in the above output " \
-	      "or in $(BUILDDIR)/linkcheck/output.txt."
-
-doctest:
-	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
-	@echo "Testing of doctests in the sources finished, look at the " \
-	      "results in $(BUILDDIR)/doctest/output.txt."
diff --git a/vendor/pip-1.2.1/docs/_static/launch-jnlp-slave.JPG b/vendor/pip-1.2.1/docs/_static/launch-jnlp-slave.JPG
deleted file mode 100644
index 01b91e7f76d66650f761eb9ed5babaa2b2118562..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112547
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
TjIYO|kXyea`TqR<ZTx=$-;_3=

diff --git a/vendor/pip-1.2.1/docs/_static/slave-launch-icon.png b/vendor/pip-1.2.1/docs/_static/slave-launch-icon.png
deleted file mode 100644
index 3af338c90fe15ec99114509af9db8741711c0c9e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 46369
zcmY(q19+rOw>8|cZ5tCzY}=gJ#>BR5+jcU+#I`2M#J1J3@#lHobKdiRS6|g#U43`o
zRcr6swf3s&2t|1b1Xx^H004j>B`K;50Dxft0HCwbkY6oTVQ&pzFCb3J62gGmDg2YK
zH;_g$5~6_5e;)Z=Wl3KxF!qv~P5=O++*hFl>0Mtn{c41AmXZ^LT86<xg{0NJuUq(P
z!f_VUa2Bz%u`#uE28cMC8akVr5W87ATM$b~$tkJ_AYuUk!~iK#Ar<%4b03dva@CYe
zH!|kNhw+k!%hC?ZOuc*%Ax#K~{cqf`ur%CwNJ|dbBOa%CW`xv8VK^BaMJ%>KjIev-
z(M7GKg*Ab!uas5{&LVXSzYmqYzM~wyqo8EeuWK~WRGpmiZvmHdGaN4Y+#>K2j(Co~
z3op3@!i}%x1|rh{{Kw^n#Z>1}$unbsax}<40wN&?RiITNEWuTr1(g60{<c4KlzI&q
zW5LVUA>fCV!>ApI7_nstilu$?*zDR1?+d_*L6T_%`&nmYVB^DaNL8Z!Oy@4+(EQUg
zI3SZ@s1b!eFDQYuL-I89GPz7Q4Ek_?7Xu&6AmsjpR*OLx{Sl-Ev4GT?e5o|!k_PY2
zKl29SM3aHQzCvL~Qy_iFnK8z$Z<**qHANbht$l_XHq-U+8zv^cu`+TM6x^M|^$w!n
zQBB<>!rmvE6VHN$|86coT|&0I6!hvh_=Z_;!5oAck&cr8iwvd8=ez0?Bnvh?WKf?0
zBX(3oBt5m^%HiVg@oc$8x|Zn_*!+>~rAV=_LCG!6H|-=)BTfTe^+J6=OK~d{H?KJ3
z&!OhI!ewy*g6ykBgT~0x@W>8>yG-a2`H3WP--1a|GJ}N#=`vgh0GYu6OMm2G*yW+I
zuRFmH(;{?<uEW3&qlP6S&&YuPWInf(;}nTEQVXI+3)X^UMeyW;Bt@XE64U{s@ej|E
zA(R9Qj`2`&CN2e_gP9%vlp!%X+-lP#PJ@!Bp8;wI;c|S71FgZCxl2x397K<=6;Y>A
z+{H*{Gp+zfC$oYWKBupORRa`(3jU=<#=t-{Dz@YW{de5%B{3+MppeEVMHc)MVr2w~
z8`&epXwJxt=A0;!b0Ag+1JNEe;QrPogD=%Mjs>cMnU)(_OZl+*8jz)j{(NhI>VRI$
zN0gT|utET<+dMk^5WyfQAh?o~6kBokdrO!TY3huNqNWQoA!LvPxPK1VzhL8IUTG7T
zBng2^rlCRvnJlxk9!h9}7aHl+A?L5LyHlem<}&dEy;h=C;0XYU^vFh#^YgeGc7|1)
z1#~G1r6Tc+u7QEJ=K#}#Ij;5be-QmLp$2z2ZE)3;-1ZBtvPNnIz2s7u9pS)*wlwuw
z;dOftbLg5MM_7Yxynk!qUgZ+U&Wph5a6>J`X}2YZ?dJ;TI0mS+sbF$I8%{nm0wCOQ
z7ckSdUI#~p0zWI;Z$O5+Psxj!F_W(H<?DolN)nJkdB%`?$9<|t9D8*Pf3|N0sExe~
z15dd6bzrE~p-Up`!G4V0{nj?S*2$>cI+E_Su8+=L1hsuNft+z(_XMu*9#ayue6&ON
z5~J(;zOur$e6on&?9G^$3Jq~7mcY}b!5^d~T2A8`!qH?@HLxLgS|X;jY0A1hY!iKc
zumf~k@4cX`2w2Jh(lFGQfr6iYXsP$0Ha3cx#xp#BB*lKL6JsnsqXiO=Qy6@93A)ne
zvle_y85WF-yuX&HH}=NRJN<}H7$FR;m!PEKH4Xe{2EbEde7U5TPInLLl6P0QsV*oJ
z2DL2O&D?N9pmIk3*)W}-98|b}gZK<<elf@ps$nU#?34vHI_z<;-uiu=xxsT76qdpx
z6e4!JUn}fhUJv9?ATu-@q)#Qlh8c+lBS0C(<dV+{85WerG`=)|hC;CdIx|bi)D!ht
z7$oQ#G28LANaLfq3?cQ0ntujpel!@F_D*=vv2;?9;+xwDRQ+}Ox9o<!wS27Z05~|e
zZT+p(k*qLVQ5i2D)N%3`v)lo<&&p`$k%^~?EdCINKR%F(s5j5LfoUO3*w)eidP)6V
zd=@GG8bf|%=rvJXg5mKQs40L3B_BIfAOR4bf9zigJ%}!>1F=hEzrCGoPBUA0++2u<
z#x<yh4_8p>j~f&|1fmOeLK#7f0SX8ggcU*-6b4Dw@}$5VnV$inJ7Y3uqSzJG1iLF1
zqA?&ykZ=fsE(e`K6_kQNrCCgNEuvispfb}Bf_gA<IC*`wSBwi9&K)Ur`Yz&ji$5+x
zq4R8K`nJD{+WpjmySVvs^tAk;4S+t%*|t=GA5H*sMP|f)!)L*kz@apUMq?3_rI<vA
zX%x%XU@n9yfmN)<{*lT`K&=W5zGofYU?z^`Y}}mi)5f!S5L2N=jYl)9l&U~MPH@mD
zzYRyx0aJx8P?|!q4V)$|=0vgGOf~`($B*r{y%Z!8RE&*7pOgg}#3`XU@mB&YOt;f;
z3)Ag3e)0$5-TPmd*8NTt>H}C;KGpzHOZ?*L{Ks?*P7ON4wYj3!r(yhVrxW9+38b2V
zvd>)*bmpU*W8?o!Q3HGwYE}O?Rv}gY6Ry4EP@@R=y&hre6n~?Tug?3qFqhJwFp|M@
z3!#8sr$aBiKO?b;)h=23F%gt!jZ+-|@DNlIYMis^xgxOez4yR=86*NdK)rK>QTYaX
z&~UB3RKMGSWcc$oXLQ4pOp*#(jENK<BwR=ek0d&Bj7bFq8bbHc2O(zzmSzPsK3s$X
zAdU8&(~17Wc1vxY*&V>(`UsMdVzDXdes~h5l$kxe{}Hr&^H8^4y!9tfW#%!JE9V=K
zuv!ldNSIveqF>ii{d}0Gpp985lez_b5q>2-e-(b|+aQW*M|yC?Jj-SN3iK!eux=nh
zN=V}v1KaB8`6{5}2dh2GE5wi`4fTr!Ci+kyARySEa3nsE8|`PF$u2t!7sME*Gn1_O
zH2Fp_f9m*=05hL$K%*<NG=Cb3d>!URrDPe-!yZB~K$E^Rjw8pXJ^&Ot)853E#cEKp
z940&quIZ0`Ii{8HYbB@REHP!N;1KiOHSdG0`qfy@ks%{bh`BlIc~;KQey&aHD;if*
zo;&klL((zuI|zBSpPIWWhRarGa{%67c6%}{U{8(bpN|#9o-?KTnKxf#Aff15ZwvzM
zh)uTk7M`YGOYJY<ZChD`SBK(;n*P&?*_W9^5tu$kKA-gW{Q!}s%#tEw#2^?kihunh
zZDj>2kHKU7VNu50%irgsRRP?99B31I6zCaUq~dmh;zH;y6;O<r3i$y)CsWnt^TRxV
z7Q_sjV3i6C1mL{G87$ulxfqO5JpyduM1CfdV5@5`j};;u<aJQGngQrfj3C_>C@nS;
z2Gk9Jy2VjkgWm0WU*_Qq2uLFwI)B2p?PiH$_>@9CNDoz(3c-yMB5TA7F`_$H5!<k$
zHJkF<O7yeiXh*1d+-jzNC*9<8mxOoF+`!X)NMN-64@bb)OQ*$|i*`<uv@kiBD^BoO
z#Fqsl8a|4=&yg+Cp0~aw-T++H_GF1vh*GOXpQwr<P+JBUQYx~OkudoF#xTvWUGk+-
z$!0<Pwdf)^$9PxoR`3b;i2%^>T{AoXOj<G;B8Z!Z9-<h*vy|e%v_d03-+`3|q~AV$
z`zcB8Pf6C!sG}%kN<a)z3~O<K9cz~{IFQ8m6t>T|%+!prMMyLfaGCU%sgbDTK|vTg
zpKB%hx(4D$!Otdn3x7qytqUid#3B@1ecoNRJ#L@6k%G1N4PSa{KMleb*-o!{4!gUT
zC9qH5>#8dKjvSYssj|!K-tI_Wfv$EFQwf`(^Ow86V^5PuPEVfyL4!X18)~Gfuq=c@
zA~ds`X`nD$l@_#de=KA?^6&|)=rEypv0$Az+HQAyfJHlqAj_c|mkVtv0is}DR)7`_
z=udcJe`f-6=pa9bZ>c`dBLIJlEzf+dG_W)q|3c)^^%EszV&@}}Wq>~-gdhv?>Le-J
zh4?b*UwCMY86!Z&)AMNkvhOtd-54qWg8mPN_e(Vlujlo59anjd+KxNyYQj%G)DXkT
zVV30{W2E5`7<vMS=yQ%;_DTRU8lVDDfea+5l9#K%b*Q}hXdG~{dD(W!2i~iEddy~8
zbbVr;xY5RS5!x2b>I!HQN^H;@88$1dvTJ6YzMG$cd3Bw82A%!{`W+=#YZGts9Im-t
zcK_~{=+5JRoKA#Du{p8r`b?c^Ubz*OW9S%J;J)gadHoOd`y1#u#A#8h!XB$PH}>mu
zjP-#8JoqQ>T_vCbv>3D<)FM()3|d8zr}w)g2eKT;b`j4a{NN-7bP97hCseY`unHA(
zDKiWy{Kv{rtS5Z;5jk`SF}M&4H@XF~N&vA_BsyTwSWqYZFDy3I&k-JqxjYq+L2%cS
z>EXlrSBL(OE(^U)$S$@}>8wb7e)cfnh0Na0p?tm#+dP(ESoir}>mHcpT`eEv%ae>d
zkYO59K3s%WdpJyp`8bx<{|tZV_vWkWWVWA6FTD!E*1D*{7i!&>1Km(5w3}HXXI=UM
z^|SljmV|B_1KqDnRlZGMmn-N){+_Oka{1GW_3%+$2L!n2J<bW4c>@DZyRdBSgd_!^
zd|GCs9uEcGiiO;qc}_8T32_i``~Rhibo9yvICJqTL*b~%ec{N|r5ySIVQ4|@TpwtV
zSwmU#Sr9oEOkVZTrnrUlI@<vN>=FWY$B3sh7y!N~Z`|}aC9$5OnsF2yToCrxIc<-9
zlf#N1e^h~69miDljEg^@z{(#IdPC>DfND~D5~Kut#zd6HC|@ne0eh<w8^{gkb%Xco
z;<2M%DMNft5by2~d(&Z+wL9-j+}Z?hb$Ga5Xkr&jpC6;1&8JruBCp*N{ReF=geX3#
zd_HP4eRcQTDdRf6iC_!_HiO>EBpyE|y-m*65RpP)_l8nU*3(`bTPJ*v)!hZ61mD}f
z4HyUa%hU_M&lR^Fe_s2t%kzV|B+q&=`OQ0gyB~<@+AU{<2^df&xt-~2X-NQ$DT;*`
z=c7)I@vAh-rXmTZPt3=bDGo7OU27Kt<l}S*Xv##o=n9en@2FaAi8E~h<>};u1w5$$
zn$ldyznlcxN->Qz#Db#OPqPY@2S`50F2_ChZUF!8Pj`4S^=?>UlK4`bA9*y~=(NfS
zk^mL(8TcmE=;eS}lUZm!H7gxiz)#R(>g5Dpq%5}&!d5>HwVYy--`!}QGHBiRizwlX
z;HVks{^;`<I4Z*p?&l*=_D7?i0QMZnNzh1S!K8ZJjo6haflJoIy$@T3j7f&B*B9?@
zTJ=Bq2UvL=r6=AUVB@MR2=oKMOx5oO?pGT=`=OJ+Y~Sy(4C3%dPYbs$$=w>U{P2wk
zeYmz>xro|cJ9xAf%3o1SY~hnsQd^P!Nf`NGWBbbCN?;2#LhCPupx>TeFt?hh{C*-5
zg9JM0h5Sy}o`V?298g5p-|+walvO#GFA3<+475HC9b@8c2N@`ZnyfL3%GZF$<iUB`
zMY0OsC9?wvV*7q(9KXJhA=l&_zXH=3Z(>b{Rldmu&9Ew#ShJ*O0ytv=u#GSaBmo#8
zO}GW91+0eZhxe^@R#?9-1ngf%@fQ{3@{1%wRu=+GTVpf$hCA=-!$Rvt?E3Wi9bv_n
zdcYdB&_=UID71IvYc<vP{UGyH4%7H$?UvmpwlUS;UG6gtkM);+F$bOsI9=;=EMDDO
z>az)>C~gX0Dk-i$kD8vCfB&$Wxj5A5s${LJH#l$;^{O?p;zC9JO4`4YCC+vOF|^%E
zD=KoF$s`PC=wrZmd;NR09*IgdwIL~Hc}F44G4XNfcT!qUr8$J&Wtj0AZPm)Zk~A3!
zksA2^y$y9Aom!WDah-qD5yc=~aJp_x?!5PK0D?dyD5e`I9BM5HmA@cXFFy)l@*51{
zodM}KY*Ha1t&prZ`XP!1&;iOvKdrT$Acj-Sc<W!y-7hwHes$-}tg>4L8=!-TQLUo_
z`-}<dBuw|b7}wr^B4<X&<W>JhH^tZ$;XYOqJ2k`tVK0?EOw$_#90XAuf977%Q%Ty6
zoe!73w|lK7RDU<z8d${}YcpAtIIKsitb%Y`OF>E%ewBVU7`x>w&jZVA<UUw*>uLTC
zn(lL^FVViV0I|mZm~N{e`TCC<5X-6<Le}`t?8=C$Fs6AXWHlEeQ;K0cK75Qc!~V>)
zML}g#eAMM&m8eWpaicS&8}@f7WXCv)mW1%n*m}pWsq=zE^gSj8aEH?jx5Ip;47lQ-
zSMGP-k7AP>w{m-0C7{W)#8wbofN)O#LI*XmiZODG6xe8Ni^;#7krl|5y*f+c_!g(4
z%||Mo-rK(A&ll8xWCep_-GAU6uD%x3aKbh6l?k13qx|e#(VzqMpR`ns<T91*%AD~&
z+VYAS4gSQeN}bGI%GGn_tIj5F(`I*D`Hjr)VZz*ksJRxndIn{QV@41--m<h%w?WVE
zd4AA7*91_k>t_E7HfKrYJ{r?L(9(82ms57XQ~m+OLYX9-C!nt!3<DvZ9;6Z$8M^Lu
ziv<AgY$%H643Zoo2m@*gIu5QvBUnP3uNo~GQi?Ll{I+ML*B%9)JW5XL+ipx#Erz91
z;V<1dqly8G;;7#P)3#;{IvQDYEWR(q0FuI-pAu7{P{O4s24;!z6?(MSL5H=@9U;PL
zd+GdJ+wSR7`NTMz;Us?p2xvr|(9lULi$T9~vN@7NO2HvIMi%fAPLO<1WwiWK)|pMH
zzpG%%s{m*Veu;QI1USD4OMRxB7KC;8L2Ne(qpbgM7{*vg3w;#HZnCH;c8H5VpmGkx
zrLfQ-7L1tkR+06I`S6C=@9lz8EYY9J5sKd}XQ-(BuWRz5Hlgo-YO!wY(j+Oa*BZTQ
zN|j&aC~B>epvoctgcn8`#;gZLK5VX!)Prn76)gc*krw<X%ToN7qLjW+?*r?;Bp>L$
zmi+hI0jwf5SV>K9ciBPGnhPm4#-C*p39`Mn$U}HhC&<xiwnL|H{U#J_(AZ%P<)Umx
zC{CzwC{f*O!E81Z&A}Y|72bVbHM#r-jEEAV4v7EeSPsPojAh1}N8sXc!)6pit&!;-
zxk2)v#o?#lRx=fqD2=re>r;iXM?{iodUZgm+AXhLMj#X^;murR%~Jy$iv%<BDJMm)
zh`$U-3_VLC83c<kGmhL2IXjMwVLbk$M3y=kgz49K!I~6dq@J>nX-zvAVg~If+p(ex
zC^|-=G}+Jb@NDr0{bJHel0rR%k>nIgx{VX+%jRD~!~YR#>YJ`Ih%m16mQ1g5&vN?$
zcBBS(<&cHLKnb{U&JswX>2=xmMmdj*1(#SYxbsCIRL3<IREOg}woaZJ*UUj!86q!{
z{A@}qUqgY@JEha_RD>@RkNNgj0MzSrhw&CgfNoeNc4`+f0*&QYzeAiYG7*n)Rc4iD
zp*=roIzOre`ons7L3#!%Cr=bCi5DQ9%gvk%LCcxS9p;`e9P*{0;{7X^;f+d4Rml8A
zGA7ABE5p9>nrI3Hxjl&7e`BX7G8T6&cUQ1B|4chEUyvpN$2wQo8j(!Ctn{9XpC4q4
z06vSe`oB6;BTef8*#+DjU+qpPPpQMJSwI72bcKQnB&C6@-|B67lnS+zxCXHq4*X#o
z1`|X+_Iz**XSr<=DaeNTv=vR&@bxAj+ymkt?M&*Q=T@jzIPB<>*htG3bylabKr{SE
zp`SKkG|Wij<-KimeSG>A%1otfLlDSOI49MX@}@*!n_55WkCd|7-&o^88F?YeRiH^K
zUH<O<Sy+nul_M(qbCMHJ=XVl9V(zSzw<FcRQfL@bq%6(XkmEQ3<$_$>9*Z<=M1g!6
zGcjOKteid}?H;;IRb`GMRK|QR8PQF+{-P|=WLXFJ5R&DpY9fa(FeSX|Noz=RjY*J+
z-YEUg8GT=gKk=@M(3e~c^-1%kUjSH%XBiq!UucuYX4@4&ei4!KFTqdBVp|Ja3d4i5
zV#rA5{*8(Fi!c6ZCDOY_S-pDrjQ-%f@9h<VY(tu_vhxhslk8h1`T^w;9t-VV;%Oz^
zUokO5MczJI)TcG6w*i*jY0CW?(CJyCnRAccEUxYn{_E8+m7&vz{EQBT6LvJKLeKbz
zdzOTY83L|dtaGr1aaM5?SAX3vb*L5F@OWl>cc~T$`M<-~UAmV9m?-c_us*I*%DO0v
zUAeZU`Py23+9l7_2C@(-lz5LH(<gzpsPv*^ppr%BIp_tr<X&!^dV~EXTd#;<V?=N*
z+$8jA-gY2j=bOD-`Qg(!{-3l`+$y5j5osl4BS6993^eq4v=|&VAwDe2PNl&z9no_i
z&8(tz?-hl}!6+Ip1yLV`i2N-=64DqxOD^=gZt}H83Y`blCO6x6pkd`%3e}&#<&XL0
zElff=IKQb*eI~$*lU5NEx6DU)R9a&adrLL;{QGUY+r+t@OmTY|89Bj^DX3+y|0f21
zaY^CroDcHA<-|d-ZF?c<PVEG~{BD!+y+8GKhP0rhu!z2T_vxz|nG<Z^ktf9=OkA8i
zKL`lnB93&yJtcN5(^zum8i{XV$9e08XET&P69!*J$lo%m$?+A>$WS!mw4D1c2_pJ8
zO}PW1QkEvL@K@qf=}AS63K8Fs?I53Hc{|8t+*hfDI|&K>I?A{FNOkr|=nDPw9bk6+
z;tC<eMEGXWXNVfggRONS@0ASLzLC$0p`gpuNfl}ZB-F-x(GWOXh6^{v#+RXW3$RSN
zr9YNJavf6VPk%E3h&d~Jt&w?1P563I_j*y2Ze?#v{<6QXdV9ycPjma&)Abaf-VUSN
z)=ZAeDo+qtfvcIia_hBYQnIg>ku-w@7aucKf*G?@x#)&mVY^!Q%E;M$qOW-5BYB6p
z>z)YO?Gu_#Z}JKf*IA|ulkA}&QR;vcjfNrJZbR}?P+G2<XCsr4oNcq_7t&kH?7VmB
zv^p*4lA!q?<PpJ&JJd)verNIoI!HQv4y^rCu&SvJCH@qjp#%?tAs=dnGnOb1hl=%f
znsRBQeJs?s&{n3A0|JGgaK&6&+B>M-ea&X}brM}8DQ=nNGs+ZK$w-fV69j0>kQeDK
zgPN8CNx{+o>e8QD>F2Mho>GLiu!!|)py=5p<a6_R&icYV(6u7f!t1hA=t3Rb$%b@O
z6(f3%HEP`-!s=5P#_4Xe;GMwSjqS8glf$7%6S$zi*+#RPk=1IG!n)V>w)DLJPz)cW
zV#Io&_9QK7aFNs-5(e*S8EeEe|6u6>bAsJ@rQ_672dP6`$%Jhi&}}B9)e^1b*4Nv$
zDK7t87v6>Sjgnl~n(TD(Fy=C()wZIWnc8465E_O8vX&YJ#7uZUO<k~y0xnwgxI?gY
zvyP<JFY?9gzU8+`k0QEhSK+>4n)qQqsc`^`gB{;brO@X(V>A>S{uLf2_sfJw%$2Pe
zbVV?ddMNsPZNkcg2zn&D0T1)KGyyD>_5d=Be=|%*>@b{JI}5Q>1p0N9=uqPcku?I7
z{+L&y)!0{}N&&~d;{S-_|FC9h=#cl@HuD8iw4<D^O(Dut3e4OS1yNH4(yo_2!o!$W
zn<{&ngzw_by64BogM%i0D3Oi*LOBFdva%S0?Ycg4Qsxq<Xh{&-+S#fO6E%)5J4t;|
z5A75@iRtN+MU8wEa@y&WJTE0hWFh?~AfUlhvFMbPx7`81zbddv9_}=<YAcqqvWGhF
zwBB<(tH`W)1G8Hh;(fCWFldxKEZsgT>7$;t6g({HjCB+3?TsvZW9m`;kg`fJ=~zkU
z=dhh=A^jRIjN<ZEC-SaEj7*e7YbN6t9wvLy{USq#XsU^0gpIyMBp$jxN#|nx0=x5g
z%vQmN-x~F0N<9-8;Dd^RXi751i*oEXbSbRP#3n(IXYcv1ykov~v?mrt`8$|4tKu|l
z{@x$?b`6!;f%`!yR`}$aPt8qZ^N#zsQ2PWHL`VIVudo2do8?lW5@p)>X<!<bQK?L6
ztPp?8mJ8V%M}9mzoAXe;32wMmNX;ErOsk~ci$=J`V^E+gC3IlXPxKPfP3FSdrWAg<
zM6Tq({)y-rLOY_dW>utLJmlX*_s3>FdL&4X4>U$L5&B()aUx)6mvEb9K88)~Tc~T@
z<d?L_ww~lIDWC1C1y?82@cfwWaFA95*Ak1{7c=gcQMwTtr*j)lYzLnH#9Y|Roju4u
zRy8w>k~f^i%PV9bIZ^5M>Wh?m1+B!|G_O&v9O{c=e-x~_cMO+V(^M4hbUH0&Zn0LZ
z&+&LN;Z{Julbjr1rO3(3(;Z7x&XJ=}-E=PPdsqb*G?IO*&<6Q(1%`T!(YQ)6YFS5v
z_uomN98$k-+UmH*!0>~~RuU59Q}8J%osOH(qC%U#UA%TN?$DVVksiG=Dgg@YlfsIh
zyBHH{d~L~L(e`GsI-*6<DTfoz&zWzK<7Hh76tN!@F`^WgyE|Yc3m6Y6FyREp$&noU
zS-1sqD)iEFQJ_wsDK*L9EM)RzmVOn<V;0yiG1#SMFu;?goQo7N&d<~*%H9{n+f`37
zl9I@zNh7%LKfeim8IodfcZP(53^kGU@BIR_7)@89IDX}g@s~A4_*?X8%o$_FiwWE3
z7^SDX;ZOAW;4PR06#$<2&n-6lh+6%UkJyh49PKWD$2o!7zgs_rf=qJV9#)Z`9b8UQ
zMQH*xT??e~b@XnhievB-1PWTb<nLC0n@FIBj0OI=rrJ`AcTV)u*ExYj^Vo7lX~Tqr
zY;6hb^bU#0Mv+S&Rds2P2zFp@+qrMSI~<#GzGr#9>u~r(LwmNK8U1rpy-23NrN2q0
zrW@-!FwxLIDzjc6yM<z&fRIx6SnueEe~Y+VG~7nQ=3n1265a+eS@dHJVm!+e*hea4
zuG!UF@}%J-Vc+@R#8Z<==hxWxvDb$Vaf;;ArCteYf1H5x3DWmm!;xEH61BX~Z@(t|
z&z$BvXsGNyDd!TI$+FXvrSHk|@NRUfJd|pf)NWJvouH~tevIjbQR%lV$+c^6jTeZ{
zb$W^Y?^yuQiaWqfThQncWP<EHSy~m&#mOD>ek0U=7Rjid^Q;fy1tH<a){$lN7IW^8
z6O2)Fq;%4aR9QEVJkWJ-mugLUQ#Ine4WiCmC90!W?5RJXjw?RO(>63t@L!c!*JT%t
z>6j6v%fzKsiEbbfxXl^P2XlNE6WEQ^>DQhFsOtzcUp!0y!-^pf4tOnknT4?^<(%m~
z%rQr#y9lTP+#S)nr({bax%Ei|c8G1(sZUQh^}$55uS>~v%mp|X5zF4hYqx>#Tk@?3
zbqhdiT}5=J#(Z|6r~TEZrehd_dRY%vLqV?J@2z#Kuf6+fx#E`3fI-CF7s+}4aTSqo
zRHZq_ZF|@6)4cCmp5rW+U`2~I6!RBW!}P0ploaL^pH)o_z8$-a@2AMa9qAQUVq#>d
z#~XK&Be0ZQI{sYp`>$$rShT-|NFfoO8T?!R?4^90UV9yG&X|;rlCGsy`=IQFAOMdn
z!VEoueJV#umr}gbjTQx~O5FL>mL5+&w9O?-lKRefCBisw!*xso3;3H5rsBkn(W8-g
zX%`7Rs%Iv08%wxnTuVs`ulP7@oKY<CGwCfxg;XirY&}1Qg!H8+Ne=P2rp;0Zq6#~w
z&?Wvffz~UgL>`OO_i<6cY{tRp5u&Jc*2JX*cOz(<wQ<+OmuN&EXzP&`SC0};eX(hN
zxH54m3ppT6p{IT$+rotKji-IU9kC<Mjo;jur}*T;13<jdIF<07r+J`=XU^E?acW}v
zuG($18u+`R|LDftlRe$CMapHra>?ohKhNvWG})B%Z*J?`<b%|uI~%q+8)sjji+F4U
z8N<BuL#{!`rL3J#TJu_Jomv`}@T=8?$nS6V+Ju{$6o}m?M70cE*(w@@!mvD=#p0{V
zV_$gC38v6!R^zs@AIVm-fE{O!aMGuT7Q39cEGZdeX+t9jW0`eV|AEuFMn=d8IGgzf
ziv8PJn;pm=wE!K=H8doTP8X!cd1_cH<4R_ihbfYol$>~Ib*#;uy~gwtHIOC(*Bue{
zZqsZ6ApZq1M~r2dn^L;vsO_MZ<;AU*&0|bc<%h8EU^-?pQ3Xy{ahogK{Gr&i>Btmb
zun~4e@_h@^^Bb~qg|9-7=8Z{ZM<!(+kudW@khkyXq3K*D(d~1=X*=Xu#}aMX!j4w>
zWm|<@#$QmK@XS3e`nd1k<eX0Q57XO|Wbd;=TMi}ntg6>aPq5n|4_qkZl!3T^%W*!T
zc)z3WIAqLs*i<!6M^gvbrgniouk%afD4!UEj*ju?fm&and8#T*C2UTYm3HJBuQ|~N
zs%<K=+Tr^<n^8EfbP*qqnm%S0o7PRUl&(n6$_h8Yww)8^eWxmBsY;l*3}pm5(VrH1
zgomC>h%XlwHZal#fbzyCiky<WNqXj5^(qz+$I**vudy?5*ywr)H>;<JA%J3GdYJwO
zNDf+rA%76i-~aMtKpi99C2uSHNVv`45Is;x;-Eo!CKf@-PaFNjeBUN8%ly2G^?Nj5
zdKG3@C!Vw6*q8dbT-LEf!qdEAmTt!(HRx&Lx#$7!<e>|?IVQ?x?CXpN4sD6Vwd^lD
z?OEpQrhPu#u@a`amRuk^Ene)!&KcvBhl7F)9&bAOW5Is<&RWoQKco`H4kfTs3D}C2
zi%iShMV0xS+cI=HDo&ouai0?|3miUmb0cae3OOIWRozhKi;WkVe~cr1DW9-`{S5Q|
zONt>s8!uML67(k8%&t3r=Zpob$!hdBe@P@8!OxN&c`@5#qQkbw?7ik*q-C$p^qd>v
zSAA~-=DS{rC%L#)TvcolD(TMDTu1)%0|F78Dyd;!%N9}krsSMD1@v>g$AfE|n5f<g
zJCXBS%2?;Vp`tV_9crTV7~gZQH@ZCI&x1^-JFr}Z4k&??*vr3l9n+*!OD$+&&?8s)
z55J&?cKp|$Y{Q&LQZ)bMT0j<o*rP^5o+Kwk{o?KV@G$uc@My#1Bk%Y1*}OQ><vvrQ
zGuk01?c;o`W?R0wl3AF(FZQzuzEf5%IP+wU3-F-NITf#EgbYONsW9etCPP@5-M=yR
zXEa$9%W*!LZj_&D8>~=4a(q@gE>@j8yDZv~g40<oNFv-7EL4P&US)0lG4_4`hD@@|
zlW#v@k`1G+@>))E4Kwf1`gVV87}O;Vs$Wk(gGUUB6Iq74C#{o%%^Y{`L?!R2@jfk|
zXOyO`5CsrFfk2XRE;ePRf%h&r`zpQA^H3?VQAf2dlqP+z`bCKz)z8x9AH5bEG%Ow4
zf)H;KoaDwF4wLYMMW-T$Z|?qfYIhGCc;Yy=^?jWK>bC5P#W-QfogiQ=#W_F(2NILn
z$hZs7e#^Hz`y_02`9TmgmYKU}+c39x(F2xYt=F)y>AWOuGV&Pcyha1i?M@+VJ1SE@
z;yj!6n7Yi71Bc+LY1s3M{tfSnwEARQ%tD($uw{HoeDXdU5r3i;v;K5>`oiRfHmh6p
z^#KAY5SQ}N_<NSP?2Im=&=}b6jZV@XA2pYvQag)Y)5c2icfJjt*1*Rj($80pIIy?C
ziQ@LHoLsm>MMkAy<mmGmev}J7Nyo?TvP#lzK^E8uWmP-<!CNmEQ9Q)lYs8hEh=*E~
z<Aze?l|l&78?Y(r;}jX+I+HPyYWrH#1_8Tv(F8s%!-RnA1e+<(5IPvrF+O}Zx#xoT
zEu@at33BjM#Ip{*m>kw+0koCd9)m*xlBS-ZR8lUVmz%v?=jjf4&YLLz3<>}v|66BO
zoaksc_!QTihI`k+jxMAo=MQ<zX5JfR)$cwGuj`o*IX?_hBE@d=OWF}`>Vpjuf^~f7
z%jCM6S;-IsuOq$ae)ve1z35!vxW-3k3auRxBe*;!S<W9hMgjk}q$NxsNKHIcMWuY$
z2Z^C#X0qpKhB}+!IIi@?^Yi*UdwT4h=4sYbpMm14_q-gwzIt}c-uy!U!Z=2DsZuM?
zxlY{H+Rf+P0u>fA=r3n<p2xT0>CXA5x5fKdzitoNqMj-@5#vpyqBVR`QpXL69C1JF
zc25q^+4cw#i;Mwng1ix%Gu&Z`W<r;}qdo~&RRIBmL@1u~C6gQC$*)a?)w}*MoVO?;
z?pd?se#@s=lALI@RJzYMn8ET2J96bV*I7d<63lx0Bm^%lj^|${C(aCxZ3&RS&6h>K
zJ3jBw)c-0QJNRi1UQF>L;yjov4Ub(?5`3>SK~$u4f}r9msqBx(+oBuUbl>TgvuFMb
zUyj}(b1%~3%W!I~l1V=`S+-&^%ZFu^XG55)p(A%=Kb^WfrAbtL4ezCQl#p~a*Lw^x
z`bX%4^#1T8H?Mlzb=Sh#&a*lRNB0pjN)#VSv6MV6vu@QN*NcbyIJ{z0wg!|4>C#sX
zlMy|$s6+>6)QE+p?>Zx+?9TVLg6crX=s4Svr(;*=`)Y|a`qOxV6-?YYM};2^qhhLl
zqpYRZ2{oz>jQkA?*Sg|_n1y7XTN=*_@uPZQUxjg8xq>@BO_~@M&y{ckMj);%kHUo=
zJbCtFW@tczL*^Ei9@zYk)`qybYAf0A8kw96gZgVB)g;6qn1DJ*A5<-=c<z1FEX;&7
z?e9!nc1CPr)ng5Tn8qJWws3m<dwjv~UW}~XIb(Dp>^vG0c>QN6h_E(b9;a>iE9U|2
zb8PL0E){U;zR6?Ng09|v7M|wZTE&rYV;Da*I7H7;J^qkG(ZU$Y!8DdM+CV0p=!Kl8
zFQvNx3I3@%NVVtx!7v$N=2{AnE`=9A?TtrnvTlS^Z>YUAX5xQwR5Xru=4*Bq^29PE
z(7b}K?wP60-DBi$rxn%=zRdlNjkkf*`n$}+elG~?=LDj{oxB@*?T=x}hEW`pGQ+V_
z__3+!sJFGq8AF^MK9n5_X%dXs)mNb(jiQ5IL?vX00=L$L3NelTwsX{kcq@^Y6_0p%
zYdziJNUlYAa<_z1G45a<n`1`4BJAZ>?XMg-kETytd8J`COq;!7N}}(4j;lvV{6=q~
z*-pdt?pI1jz$q^C>fxZc%Ua)5%(^rHfDgz+n2rw#nFmVwK>s0pArfNk3Y{VAcV9>3
zxKcpzH&^F@cs2vXq!B7%3?976%RXW~4@|W`evA%DwuN=Iu}2!4S(o;0F6P!y*X8kI
zIhUq>)VU5;RzgCtV?;u~7B#ds*BES$fXil6l>$?juP=-)CgyTKEXYBnj~Fd_0A#}_
zEBkR+jye^4itBb+(D6WmvVS{51^?-1V=!_CAs@~wis9s%2R#i;QXa*Du058!nd0%K
z0!n&MxVU!^w8=hu80t^IKSG4uks5*PU>0N4qIsW-KDTyxOJLF{UEgk0HbtT(8{!ou
zfnAS>UfF|%wZr0sf&8?er_Sb`!tn&?=m&yCB!PKHy@z5K$KrR|U0Jb&f!`mSIG^~G
z>h_v9_2NBeOttG^KivYIn5=pYO=gLedhO!kyWq$N;!nM+OL(}o)@&v)x!|O-DBvc}
zyj?{7IHrh%Uu<h{#W?MzYbF&1M>{C<k3{Dm$9F@(yk4SfgeAiA?6zh4{3M_fV^&7N
z2Ju!f(03jpBvqq$%}k9IA3m)18<E#_5nggCIF8Bs&(2zaeFJfLN}rAL`UjuZT(v16
zfG(iEn~C`UN_nZwxYCr^(czqDY*o00BO)}COJpddR^4SYAxlcgty6)8Tqx%=x?B{w
zb&RPvtUwjl5_S&Egmk;BQcse#Q8BZ<%NsFbk=#18?8CiZ;fg?eaU`jZb(;l|R=40+
zl8%Z7hi^r9o&b+BWUL_T53l5`qOkkMOYFue=S}f&Zlv`jB3!jC+;5`1+7lb9_b2%?
zzR)}X`f)DPS#$N#O{>I5srg1H+->L*NxQJsg?#Gm&fL#@r}T3EKR0g5y?Slr<kJ<!
zM5K0_nt8N2pogpzEn~&;4}TtWWI=2q-x3jJiI&qyD-*-DRV6$uj~kMnNyTvv8_k~$
zzi<a5R4jzZ?v)hkSxKaCrFaYvL_9&Tl)1oJdiTpSEiHj=MmZy*Q8M43_c*qh*JK7C
zv+K0a_(p<2F6xD)B&u9sSrQ_k+;HX4CBh~dHb0BRUM>n=q@O?aL(C@{8Rb`6v$cbT
zN+HTlic(8~!fh+%?=&!2giJ#6VyJFub$U`<Jng3me(B}AUvGUHO)uXQD%4`Ef9^xo
z@u&Ik<%rsvNAHiQOOEP>_wi1vYlxHzgvgauueFh0tBC!?lEODY?IJDo5_v#GL$CK6
z+Iesn^*LkMZ$spk=01McE9+y)d!}`n4u;R{Z_}V{Kg&h(3N|9q4xb^tZ?k@y*<}|P
ze}ZRfJs9Cg02X1h^2|`H-BMvZ4A7XFQ=NU_RJ>wYbf4fEC_sGJhkG!JtgLVQD-Q*R
zIT}j^riX0~cdrI+os;%jaAhCXGkD*1^^1GXyTDzB8}B3UfadOnVw;AU={Jce9OGK7
z)1{^rCIEdUaG2wq=U=;y*WNn&#TOH7j3Oc6X>bZ+)XbXFbmLhXZI5&$8>x*1bq?Q<
zzf(*d$iYSE(Z%x3&Ey4npq;Cqx_RV6=ALh&iFrwcMGK8oQ;LDmG_olhj_k$pf_@2|
z|JkYQyBev&-{LLaE!A(KPmfUUeH=2)xoHoFJkF~_3=kQyDoUl0St|DwZ`-0X=bF%*
za!hT^KA;nD-2dXR)S#gK@H;E2!E$m1rx+0S`|9KYB0G|M*@314qoZ6C8l0(p(9@2|
znfx*>s%ctPCLmHEkK?djT1pGs>+O?mtWunZyKoY;AyxS1IKs1GS9je!HuOGn+Vm~A
zxE`mZ#gC1peKMoxK7`5NWs&}S^RIrSweu#clt(JFsUqAe!DNR4OR+CE4C#{86V&8w
z1!)n{R;%<SUHKemLCrmf%zh52#^Exd#3D99M~D%lN1V`Gmp1Q?!=+Wb$~_%6CXuhy
z9z=#A!kpAlsP_ykiVu|$5ud0Jl}xYYZ8{rzYW&Zj{~3Sx-2n<I2J<Zu;g6O>OE)aA
zw4QFv3dPC0$N^%?G{0`MR&E6AwrQR2yH+(Gv38WIE^Ck>Odmyj2dJB4ryocwu9p2J
zOBstDz$Bw6eRrAo-xGvx@dQXm(Z0}I`6(=}WcU@POz0%veh^y0EDrn!?SFy4DWQvF
zeIL6}ManfiVDH)h7X^<;twVI@y}P+h>3R{}Z$OEkx{PR%06iC#2!`|*weaaeL3We_
z6$xgCme``5<wxvD>o0@+ySlv<_W#(j;UGaW#K|YnEi{GWX-DUtm>fOOn$W|}x&NZ7
z4A4k0oAJ&Zq)FIkf2nMn>;df2`%Yg`c+z@|CIAkq9_qftKpY&;rLGOFz_;N-HBE!s
zql)dzovqcWZsJ4LadhL0&<*wf+|O~ppji0&K3;nmXvgn|Q@Gn7w*@nwaRkZ|w~N*n
zekdd%$g{5JwYSz`*NW%&&@9(_)nuHVQ%n;JE#H;<N^ArYQSrU_T+y8rrH|W`oT9pW
z9}TDC5x4%!G5^;`-@;QRzU*YC%)-s^dZ)YWY|T;IYCtcqvvHvGl2!Jw7xoAoyxbY9
zWb$1p1NMI#aoOv#(+G2+oz3OV%3F>i;=4k1MUoR#eZxhezy+BEI#UX}HiT;fJvT*Y
zvQhB!yAd=^hq)m{mEXdH{F?lQD?(8VM_#JI@7y$sh1CfE+m{;=Vm}|MJQmmD?d}Mc
zw9zLx3JlWuDn2&#;Q{TitG8T-x9!jFp`trDH~yFvqaktSXkH{<f#4%I^Xsm&t@E+l
zAtL^uw#36xun~TlhL_fZ@ZNIK{4@a`&E%|uNYp|RaO?}EQ)1#QWHpwx5ShGlC-g{?
z(<izt&;zUr=u@kI=j%VP_#W>^mqc3Cwjn<Hoi53kyonKGJkTrba69H&%bJ?ilB#Oa
zSy6Ibs~H%n<(BFEEugu~csD$Q-!@d5YNXpYw^H=4zi7!`>0T^WbG$;-yvf?O4KrF3
zo9IdHpCbb3ylN(x-|9UvPi>1p4J?`|20Q<sHD<;TyieyiJbV}Od>%B*D`9n|zW!cd
z!-Rl_hPK@5K(@NJwvs3yt4Jfig1;hT_!g1~yE5tXs=S^5{LEa}y){pihGRv$<iki<
z4EfuST+rQBnY6-^Fvot`?$@sLnP0lzGB*TJ6K98Rrj2#oL(<TOq2l<AH@NI#vBAbI
zc@U2vp~Q({;eWj&`yh(pabPb_AXcgd0SP#1tZ4^HFXw=dpCxLi4R7Q1Xk=gjIC0LT
ze;I%dP15!KlyPzzJ%UZo$Q5^RMFh;u&qgmcvlq{PBhN$&bAA(xRcS>^CL5`k|LDNe
zEOQ*-{nnqMc6}l^<X{%amlyAQbD4PN^XuHC-=~Sd192)Tuk|8U<;m+M=KxN9UsN3V
zoXQ7$h+5L|u!TZZCpZwawYcTtlBMB7duDaw29<iqoT$d0@4skv);r=f+if9AlVA5=
za&_MJ%Skp5D^(tkD!A;_6Og%kZhh@2HSbk7P8rF3Fb3`tV+_A9z+e;M3|W(e3A_i*
z*{=>CaC&S20NWV^P}lp-U{8nBxuRC)up2&I$h$MqJu{La-nXhMDbysJcbSMg<$}n;
zpwy*ipjUI#otl~QbIv-h17DonE}@iG-MRCY<*`-E=vbkd;%c!`ZRhU3OC!}Xs1g>v
zRA!k?qZe!%DWs{wtURxyf(WboCs!<<WMLy)Y(uFrCr1?4gUR*m40&z03EKDPyN%kp
z76jHIRh_5G15RTR2DL{Q;)PTINP7A=!|5w>!VUhwEnXKu;~_WN#M7sgpcljEB%fk%
zuUJ`4?=uy{Ks{KFMP${e9Om_4R8i|*3r|884R>?03!$Fmcln=XEX>N3!m}v<T}TAL
z9dRhBs2sLpNvF7N_%io?-g{alMLsN2p08{7YM#9?^7F^m*47Tp_IB@t;@Q97FA=F0
z3scL#Muz|L8j<h(X~XbwJ^Z-SSLU`S0QA7k>wZ=T_@gb}?fPZA@Lqo0yxRZ4x*Yz&
zaM_=EKO%w>#q%L774o}QsP%1IK8|hjws4HY8jaOqL_k@o=$rb-oSprF*qQxK1#R|;
z$`I4ic^v<%Rp<Nfs_WV%f+I<+xRtpDQldJ(0wQ(&2AG;Z;&b|hnZ0SgcXSVNf42A8
zaJ=tklR(RyVURO-X+91ke>j}3+5&p{;($X0JsS~5VgnFV3?rZ3d!C&u-tIN!F&K>?
z{wy4KJJSqYC^<DSfL^~(TP)wZ?Fq$@-h-o>zLF#Ss2@uY+ei$Yge~j$ficI>-rKj2
zyFqrF;Vc{v9;<7M_#=X)5J)xz!)Oe#J4rxZ2&&qte5!@OC<Xn9rRuXjDqA0Dv^i5t
z*-)Lo7{FqV9j;1U*KNai!v6-QZcayzaOli%k`+{uw!#5tJ>$}Hk_5%Sv$N4BiM{jN
z+lDeUu~R1s@>%Xr+t5?XjQ-Of2SZO!N4}xfhLB6XSHjueZvZnhnO5Lf+I3AwZa)Lj
zX2i75Zq3uyrz4hYY;?X|zMayDez9c8k_PJ{DyKS4JWz%5`JoC_r~|F_R`yS-!y1E|
zyJQH)!Y?CYCsPCgU;CCYmHB=NHn694Ik2ZHw`>&zm_L}bPhmW{m6uO<`%@0y7ne0p
zgFFfe$CWA1R9H1tsIY*i;X2oRjYT2ArH2ubIBa9<Lsyv)G{}O(CDcy8I{nB(nsw!&
z&(9<5%T_n_-v?XkZ=|soz`-%A_L;w#y;NKGG)?S$VfvpR06@UH3d*PNBRf(Bz&}71
z?jc$>fS6Hz_UdA*Gkm%mI9b`rvl952-GljcQS)iVj<1zK|3l)HHWO-X*nihS4!z5v
z^>uuI@X{k1$wBl%V_36DjLB3s=Vok51AH-y%JI}UL+~MSnnSZA#+>OLpq)3=$I_8+
zWLVxxR7<xlnV#49PwOp~$bd`4&Lg?9e2%$Tt4|x2k4vk^T_S-8Or19@eTi>L;!ZNR
zg)u#f%7!@Wu<Pb(JXjC|jcSFVMBXoQ_ip)$)@N|hQ*>%&AMSIjS*+@d2Rmd+WS|>k
zW^d1H^3}~qfJ+~<nRG<*p9R?x%`q>@niFoDr66JF>A9|*&h`yjuUkOe5j$UjaE|Qu
z^*dPXm)F^vrx|T|`~CNexuDWZt*y=1Nn&}uAGg@vU&lnZGd8%QF%ALH`(-k-+?ND7
zOs{{bou;pnss32S0{d)wmd)VIzcuR?tuw*-0mH7U8{!#?|8H>!6TD=>C>E<RSh`|`
zjKtN-QYl_Tv#^U5nsbKkidK&JWxdj%$a4{jXIt*utRQjIL6~~<a#mM2PQT(k&WUQc
zTnE`;tf}L2V)g5wBJKK$#R~+$fOL5E5a)*mHC+13SCymt^-+D>rHmkIDi+gvjU}{9
zAHN@J%K@^x(E}>APN#cxkAYFyP+w#x`=QWXR;sPfV`$3`QG*@a8@L)p{ufH=KKFG*
zFxv&5@8(Z4;_iico%oOSvBA7eHa!HUkPCQK8K@>!u6ys7IQ<xX-fpBXN)i2TJO=>x
z{W#X^+?hX!MH^?}vSQn1GM_ky0@vEN0gg72$?=wMfBn?3P0u>vveD5zTYjMzP`I=a
zMp(&uZZ(_bK(Qv|jetUDKngPscJ}|+DIP=EAkx~}T2$1l@zXRtRQ!4qY>gZZ-Q4yw
zL6G}>CFc3sBdR?2NwK0Z3CrQe(#BSh$-Os{v|F(_P4z1e7gxxSC58bv-w$*^{x_6?
z%>vL&R0md$q3g<fND}<%X=1{-f^Q^O^HBqwpYthCt8uxG%lA=CAD~hpKXF^9<TS?W
zb;$0L!G^l`S8Hi4+$fH06+Tp(xwCYlq7U{5DuESNT}}{>aSCgtUP|TPCk(b&ctiHm
zsHz&84>`XJxFP&g#Nis<y+^Qp-{(O(j~aU%sw+56V_FbHG8(wVDi;Yg$#;|Y+ADul
zys4EgFJ;D0zbj!3m5y}4rF!YplVoU`1L@tkVgLUBK}k!9ygyqqo=ByCN`h10y&QQo
zj>8pc#FeOLjasrf710j7n!Pn{y=Y#$D)W0O3m-DNCB;-K#Ip@X2`aL2XkJRNS>Ia8
z(9CXXCQ<-$hP&&Ck)lZa_<=7M!70D?3*YZP?8rad{wyv}ROaifteAnlH7s7-#nAj@
z^?;dP^fi_wO>hiB+xuKYPJSTYVgHch7jYz*9qREl5fW|xhS{F<hwyp6+N}0hSdq0r
zp~=G4tG3=S8<1Pfv6pBj$+|B~K>*Uu^AGI$`!c`xV@pS+5}_smYYgw&!c+=d#HJba
zP-Z5kuOJabwV}hJHaI@oarb9~yZnry-+#%<TS@{R=i|E5^}5sa&Rq&DH_uvvBsn9$
zp0KS6k*jH=BxTZavkjhY+X1GI$3e>Mz}5O((pw>lp%T3Kyky9ghE60Ya@<gSINs-%
zPw2dMFOi`9xQ@vah_Uf<vapd7R6=iJ#W7c<{{HHDJ*;m~+@B-l8t7=h45>P|NRWpN
zlHiYvKmwj;d%?>YD;#s~C>EA!FV8m{fj>xge2%by3E^&NNBDU&aCG&-Q6o~>C8gJl
z{1n8ZX7sZ;Fps}|`m>i$tlnl?I?>CZt}2`tI*1s*I2sfZmP;~nH&RKkeVIq&|58(Z
z>o&A3b{xFH$;n9rS69ptLN7Xi0dTWxxxo~U-Fn#{OWzx1>uH$7{`nxSsHaE2a-<t#
z)kx%j&jKKl!X{`y#}3z+Y`C%tTG&_(HS&bnuZAADZ)bFgH<1#GG!)@<AYuM;a|iA5
z@)Xd@L<=8MDX;8pPuW;*6NqY#RU47bAC41%sUVIiMo6g33IEx&>Q;~8;%wmVNreJU
zN+Z1hJ|&;}t9oLrAQP1dowj|yGn6q%_n(mIy=xV>JI|)eX=8&W&(9w8klISM6;h`a
znkUdr1Yp!k9}p~EAhDA#r&e{A;L*zL+!@(f&yI43_|1|2vhq5uke4(MqmUe^LlyYC
z0rlVY-S_ywHd%Uj{?wf}HX;HBAV`za-*%K6^(TwN_)jKVdS+(7&*MfIZEb76@%98M
znr$KqIh;s*Z4r~Q;l`FqJDP$G-XPwTMwG<=N7-9PMfG(L;|LOh2r7t@DkvS&jew*y
zL&MNrN;e_`0s_*~-7(V5s7Oo4&?C(-3?nhrFz{ZV=kq+@@B01zd0*FA%UPFu&)sLA
z-Fu&X!J_XB)f6Nd!?ma+kC#GzuD>X+jCu7m(vOQsPw&m)L6@J;Hl=tnL-(C+#lKdp
zLfnL?rh`xJ>zCdSaU1-~JurefW@c)2B{e-3q7cy=b-X((?Ys%LW*Xt$fHo~yy8T!x
zVi6kBat-l3$Ut8)@=|E7Mw=N));ZJ5kz{}6kKi0NiL(xHD(LYFETnzp=i@sn&oRj`
z@{s$N_`=k)jOUnN!$$pu=&vV46Qu6#FJpEl6{P)py#ALv$j+OpS`Om)l9S_Yn$W*K
zQyx)S+4}oE*`F$N9I1U?urLuZ@e2Wg@Y&f}WumJf8;q&1xdiP%<nkzk;cV1m=!Iy=
z!RG1ur~3)tXP2!%R*>qTxX-FMKUou8?Y@SFIcda+hbYiGr<eR$rMn_SYAo&CuW;Bn
zBV(a<Q)I>`y@kBJJ|OZ;P8#arsr&4>_0yi8T3D&>&wz)AaA}DTWSWoOxUdJVRZ=OE
zdfw4^FhWUO>xZj53x$V{zI8=*<9Gi_t~uL2%>$2!h`%s+W^^hk_7RX}N}h$yfzz2+
zcRpop+Zc-0LVFH^n?c_pA)({cBe$MPzZ}0Z(!i(LT7FY@L`P?N@!y!r`PyKYGRr4<
z9}{C^J_(6fkG9+DQ+!fVt^qCN{w5}LJkU!IN$g$&;3XD?Yw>|^>1a2sE=U+pOu?d%
zS187ylOmdRCTJa@#EES|<qySs)_@qD`^q2go83VaiY*BoUxp=|#5c?H{nZwyo%p;m
zFFsASa)_8Nnyh_c*Jq)o{8)9U+9cfTLYCs}n7fz^*vJxN5rz}X@xfcOHFyOw%TH(K
zsS*mR5qLKvk33tk(FA_O&Q4K?u7k!+zc<M8jOVTDM2Qu_=1|G#)9w)RE96x=17gX!
z8Xf9Ztg8InZWu5NeOJS2n9QY4*E-dM{j6ZEJ!+w-TTS68ucu2V!!$3<rYl)gNW`oK
zOLgW;>(7g0D@eTxNj?d3iQmZk-yx{;wSlgmPZO12Jtf`F3zarGjv}mhBkp0q)N(ID
z=1}lzEFJw_#uWElvdi<PCYt_xKeYAH$jGhi)^<8pCRm&hfr{z%%!uD{glzWVt~zC{
z=Q6F#m7H?KQ8fX26lm!2wL?7f&3Bbxof4*QKZcNljmIbP8rIFldPjf><kvHJ*ek=-
z>Bq3|??Fl2XAjt;l`~z~XxVHZQ<@~#Xr~2Ea0_kAwG(S;ENz-^lfLFppLJJz#_*0j
z(RWt!j~~bc+sGJaS&3e=6y50ptiRqx;on%36AKoZ*f2G^0G$yXGj~aEvHd`|hYEDg
ztvh-I4+k25+b8VzcTYGr3iiL5pXaPPgiDEhf=dc)Ja*FTPU$t+Ux?@AmAsQv^ESJc
zKf<@$M=0cc`Z3;bZirF5_prnby!pYWSL?8juj}7lrD`>@fU+A3l#Kg*b2?~!W!~bQ
zBlt7dIYtd(&(wVfGx~qGjNP$zYUU~-JF%TxVcvhA<`Ap(znt#_53-UqDwECE^p(zW
zT={Fi8Z>){c~L!CSC`1Mqtng@+j;HxkorEdBw^{qo_=mH5@|17Xh9W}qAVwb|MAbl
z1Q|%I|8I7ueRqZJd8scCM^*`FJ}ovHg5TbF%C8aiJd8JFLnu*Vt4KtK=*I6@Cb6zs
zNy@(23h}#>47V=7JEvK%53wwmSd}|`DA?m-oR^LyHh-v~z<N0x1x6VKTCQ4~2h)p_
zyuYaolm{cf`DX>xl|l(n+%JCp()+Xan<WH$ObKSp?SqEw%xDFB1s`wq|0zkxj(2wp
zxy2b^{MIy70x%35RLaYDKK$^y#Y?Wf`n{%T&il<|$L$44ONj!~?4~;6EdA$o)m4P9
zBQHqs?l(~HF=h2l@oxS(8|Ctfdnt$a>K$J9v3;4+E|gbc2b~atc`MIrK@WFGv;0)N
zpcBYH#rA{Jh||r>sGaYB;db?KWrFE<rgN=z>?O%JR=367!0WQo(z?)V%ELCv=g-OU
zGt_*Zrtbbcw8c4~T_kMQ(Ze!eVzmVPjut!tYp~8+jKY1Q#K!{Zd=H})ZPe!L+L{Tu
zvKqHKW^3->`xW$RE3){9k0Fs*(PNeY4pO;?{?#QE8)sIvlay%%oHA)6ZUbbN(<-v+
z5VI1uS*5%BW|qzH0hiD0N08XZ)0MWz>1HC|zqGU9X$Ir@?aDO)QC3$naJ{yIv(!g<
zyAF$GvKvJ_Gwd4pdUCdRg)GU0C_l(PWWj|yNqjKkU1fvkXxx3O^*`1E;BlmPU*_$b
zu0N&*YK%wXr>LAC)Zmw>KHMwg0D2{`@o8K)oCN4tz<p9GStZHFPKq~3>!ycvTv+9k
zW2NVWBzpKjQuG?WgH(8ZySFTd2E2tM-=K7C8%G>pk|~)HQuT{HiUhTcyu4pKZ?6xT
z@xn4m*%!ZcL#gJ{pI{%euztCJm#W~)@RoD%K1x?vL#E6rbjH{k5+z~w<$wHhApFhi
z?Z1;5^FRo!zO`i7Z0EOI>+mjk$_TAkbmCOt<S{HP)3oiGOj;#-7-t_5*DQJ}^;AXT
z!v?P@>Tq@toM$X!2wMua5II3@D3zKJ%SOB@Zb3en@ezg0FS633$}#ux7hcy2pXH=G
zpyfR<MO^>i*9ZGQuJ~B>qGH03;_~Dvi8xNY-c37eovDOT771JK6P=mpW^<%jh}zF$
z`z2=o3e;cw9djB8TJ97O{cp4fz;;RT+I<w7;J?Wai?dbQ%jpBNRUXTKx>xW$B)gFe
zR5bi2J@P+=;TD}9e{#!lC)iel{~oG{lyS>=6SS#J_}}{tDgU;Q`KRdoZ?l#EP6eFp
z`Ol;lI{*E}_XR|+NGV4@!4O*9lJL*vx5tlX9pp1U%0Ylb!2g;c?T*c;)^K;M)3uTK
zWi58l#>Yl0`28+ZQ|>FO9lYl4Ta}?&IXJI@3xnrbknVhO-k)g+2i8CS$?=fLfBD`?
z$?8EVo1qy@yS(z)<Nh-<svPYjZjgDGcRVQ}9!b>mq~CVx_2^j{BX9=S5aw%zVn2g#
z_PV<v-InfHZ_-E^xwbdZ?cy&quY|sZyO0jQA%ERsc(QGk!Y$Be9(}_7-00KnU16Px
z9Xb)F@R^Vv+z%eN3~W2sZ7N$z)It*(FrO*LJ!Lc<L0+jTg^JB|f3W~Gnfg2DUAy&>
zD8pA1%L5nm`@w7t#58NB36*2*n%YB^W$ttu9D99E%so1>QWm>HLlm3gv`r{X<A00$
zx184rOAfL!tXd?tkR-J&(%M7P)4>kcbWKtr^@=-W?KGIV!@3gwkEn2q7hB`=aR+7{
zK3!I>rpk*&&9cJj@&879k+!h<_|r9c*FY})d3_0_S>EGe*iOJr%Q|807;cPg01IUd
zn}|d;D$0cJ--w_$B4H+tn`BVLzw}Ya)C?}9%nvw(H4I4p8kEQjcr_sc7iZEhemcN+
zC+S?MQ#;4%(JGlxU-+)B=HhmPx{;LYZ*Qu9@9%EY+ug(nl-%@yS;B5j3!JJ@u~|m7
zUGY>F6pT4>o<8Y)5cqAzbA3zT&DPXJoQpN{0_<Z{X(BK2KlDYm_tEB69fP&f;yaU%
zFM?Ye-_|XBd-V^+EfRk^f80l~zvILVefSSWJ&cR|VfGLDf%X4CQtd<F?AX5{2mbqC
z{89&^l$a)TTj|UQ#F2bcpfUTI^PhM4*(wv#75(R-zC^;@tDpbS=l|8~MQQJ@^ZfHb
zIfcm58v<Ya^^e~%F!QnhFzLG1{TRiEmcY4r!BYQ=`~T%P(My$H0^Uoik|Fw2;s0JO
zE)2OmX+y8CF!=s%fM4VN&!67jw9<xw_UMCXDfT<>Pwi6bFmN8E=7ruffNtis!5;l<
z5nPUxcYX20Eqe+TI1ZDG&SnX&@h0>Yee6hh)n#IC(f*)dydpgn|Ih2*-n7(yN)13D
zecDhpA@RAdb}xCxIj}VERhwyF3`76=FK>6rYVox>nbuppaEyqO>-oQNRVWYh-oHuI
z6R8jlx|~Y5x?QDT^Ybbig@>p2qIDSbB4PDV|8k=OVu7BECFB2wx(46EAK&TJCh6sz
z(Em4efGH<BuX?TO+G}A|_I1OqULEPXGF4J>4(Vo5Cg_6Q7RCJ4#F#7*^YE}R>N%6M
zuJ6WFgaHasPpL>qK53xB7w-0toCe`vZ`Zr$7d?}Lc<d>P2A=;L4fIX`$9H0OZ@<n{
zX3^qE#h*%7Es<}QW^oeR4`7P_db%igG3La1S4`R@fMOFTR;}Et$%LiN%v^hzvrL#H
zSS}}Pl;ozlFIJ6q>{piwl94{jMe8v?iu<r!g?>&iThCW$wb^uK>{z&Sy9$!UHjg<^
z9sU;?SUV;HzF(MCogr>zdb*Jf@cg$@g*A}uq3qlr%pJ^d`x82gxAQG$FVW@~3@7n!
z;XBz1Mgojf41Ga8hH7C%`GwTlv-UUe7L}O#O1qEVPUSFtYeHWp5GE2mx_tVGf89(`
z{PL5}@HdLdy77T%E@-vszwrsVEvWA97lLh?olV=_&d4z87eaQVb~iPZ1dPO$mOfVs
zXt@&zZuxbGGlwg#x^^GAe=#(PoslT#t#+>WnZK(K&%dk}JPB#I(3>sWmrj}KU(uh(
z)u$V1Uh}HxyvT;fnoDEVk1?lK4u^Qk4tOL^+4+?p+79VUhl<8i_}92eIU4Y_1UvZx
zm^4r!oNg;Y<kB7!GP8Pi5AS|#zshHnd&~Cy=D&_Ked?hR2Ra+6scRNBH4*AgO*yzb
zS6wwBvomvj9>&d{Rv-{g;yK4oA<&CCTOX;DF&`<nj72t|vbt@ucDJT6-Y)a5@X6s_
z&Sa$uNC%|w1iA-t37Xce&07h$2pvp{f#PO6-dyy-tnKRGYtV=9uiOR?Ts@#R>-o7S
ztA-R~yY=`6VLOq_UH~`WG7;ge&qR{V7;tv;VLJKZU8nAw>u-!mP`Nt28~;E{mRZUz
z3W1yBDf{>kZPneL`SJ6Wh1njzuW`pH@KY}@Z#4hX(z_|t-QAfC_1agW=UAi=j5!G%
z$B{Wt1ud+?uC*^b2S3LwN?&}OAnC$4n|gE9mG?oJ(xaq{je}6Isp2b1R_)z;HTb(O
zv`nGSs9!O!s?VtrcoH`bvYuj8lgL&MqW>y{PdyZ5^E&!4?~Ox$772;O;q9vSYA6Ck
z+7{HEDV?M0KZ*Bd=cA6MZ_cuK&vC?NLcns3`E2^WPb4BeIM+S6=md&2)-qSB(FEZz
zC)-I+s2_ly>6>{;6_6JcQ&A>lb<9@wF%{scnsR+nZjE!5xJAO>x6J>@pTq=e0XsM}
z3%##mKi%H38G>5di3lqRDXgG;@BS2!CtR`))HP51i-MX%eajxv(J6_i{+OHdGqY{;
z_VM+#ba9c?GEWho30&q7aq2=LdM@0aU@BSTaMF0+=H^<xf~HMsO}al{nR*oe_+jdJ
zkI?(8BBL=7M0!_xSG9o_q-XJjo+Cz<A*C-td0JPo3(+&#HrOM#5YlMvXG5YXjbR~e
z!yih0y7t1_ATH=h0*HT8*%@jVJW6wzIK-YBt1<TO+!u3gj~?xz??6hxLmR73N?=YM
zt}W?4i+<#N!r$Ln|5*FY_krc*0}pw*djkQUp6)+bG>Ha&C4YXBzQj8CGO|tO-RE00
z^>|^oDZ?48zs9}j`(3gO9@_Wu^@f#l=%vm!EXja$R5-Y|=^0RH*b&HAMLcUX5d=->
zhQh^Y!1;@AUFymAr|56vJ=BV{ZI(pO_x8qYrof@T=-kXB!OW|@HLG69nNtII&vX7^
zm{FG*Cf5@aw0Sfecn4DoX<3ddg*5RFh5FW;HKlF)T&Keg+~G}!l1}Q|cA-A1FFh$1
z>%y5c0}vt4((kE;?yjZLToC8^$7=LK3oVvFEDu0z_dtAXn+<6;uW8~|xYpak15W9#
zhcNYsJFi;V461YvTJp}yYuisa7{uR%C^bKEE~X|!XZx?#LROxs1Rza93(x63s}kZJ
z=bUz-gD)b?FBN=VQAnW2pX5k;+Wm$h(ytE^6LzG~{s|qFZv%A}jFWPq1`Eb+nk8~K
zbicpJ7mR;uxOap47Dt2QKs+_=`$$VRdY_hCf~6D69@gq6CXNhkf2?c;#BAeGx{VP^
zDMFL{>P3HyZ%5c>Dk84!JTf{950nw7g$|O1rq3ablO_G3znhuHqplBm#UA4EeY@Rb
z!}{hEiwX_+jbYO9<)E%SuKf=;Xyel-k4N(JF8Za8h@`<Rs!tDo$g|Od9zQlp<K}d6
zeja2v=349c_N{iEp&BqI{92vEn_h@=ElwU!H@*+cpPe<poaEuMOP_Pw)~Bu2$+dG|
zfkX0GYFNWFGaDOoZ#!89$<t-skNJ?EDsqyx54n<gARzeSMG3{_U{zyVU4;Wn>BN_m
z;Vsd>Kpy&s=ZyE{hS+sm_wOL=xBS)5s5yoR6vT7%*#v54`pL?=>eY2iZPU7`?-0t1
z(}<U4#V-}q)NmW6H7!RxtKAWG$8UU|HOMagVDS!3!$OCz8q9RLHCDTs3-71Z1ZuJO
zDmsdzba_e5IY`p@LMmP0_~!xl=AlvW_F}?Lr88tQjDR?Gu=HQRd<x3V!8>E%C|s3$
zOmY(+a5Dn>YpxY4K&s8I!+f_hO4*0&0fUg5G=l0*6gA0BL22pQ#KgP3>j#t1cEj|0
z3nOA+3m27#ZR9G+)T@@PqSF))BmVH|Tm;+sypEoEvFYKj!fb4&{s4@f_&7VO|4aoI
z3~x#*ws_1|H8uv&QaSoBxvZRapVl$+X+a##<s!`G75e-71cil5Gcq!ASfC6XEbNr^
z)Sx+xDCxI~Cd^E`Y{3d@WaLL{?7>0eBzp7owT^U)L7V9lWhw%Nrt|Y{@3Z$me*aPa
zBlk>XR+NAWZ=8gH$lzrX!`v-u6xE&kPsfc8Cc1{~JXGCiJATM}zbOw10>IrKReXJ_
zP;|EjV&B3^)lmaMXX~E~Bm&hjecpS^>B+Vx0Po`QQN7>8zn!#ET5zE4EWu)9V`Q?h
zq?Z2vm3KZH1zDRZIC`eetiaN#vfddi?wT61wVnP<CDL&>LYItRO?O_c;GWJU6CR$$
zxVGFki#i`7Wp@_Op-m+p^(2if+DErgqz@(>ULhLU*~_)cDQRO8XhPu&0k6g+1&r$?
zr@q>3+|CL0tM!6UPp1H6>1}Z>8-EK3)r0VYPYdH8fM*Bevbj9fCx6xQX_HXsIIx<q
zr4MtabAE_QOtdf}scWoH8lRku^k|#NM4E~^v)u#F1X!8rLM-SB|2>PdzrP-k5zt;e
zEoodkFs!(DmsF)KyTo)<$4kPmcq#(!DQ0c(`Ezk<>IaQHuv`1ehN1=xEKt^k9W&sP
zEUc@$`z%@I4#~eJ!*OLS1=oD^T9_PA)<PVQKHfJSEho9BaC9`hFsCeNrpZ!Y8;AJ>
z7H!JkEKy(({iCYzqsu#H<7NIKaK5gr69DN0X@0W{kM2dV_cL7qE)cv{-z?{&qV?h`
zvq^i-u<h$pch_F;eHYc1&dYlMVl)snjce8~xOpKyERQK4;NgAy77?Sw6bwQlkui!z
zq)|N!OG|(^JpC-)v@o3bQDe->kc+L5lu%U@MlVOa?U~AA>a8k`cYICuW24_<th}wP
ztQ6-_RaX60MMHMFF^bk5A-o?*UvpMT*r&$yF$4TEM0b^otI+;Zo*Vh*1|FXHV2kb$
zP@u895{RBz3C4O2mZT4TQgeDiJxfT#I8kTapQ2jgb-L`!IcAHRP(%bhA^G$Pm5mux
z$u~55AtVDeCA~dkRX3sYk?qP{P&jQOW6Gptu}uw}_y&}=3HRp6z6tb=e&=>jqVsm`
z=dFky%Mtq4m!Svq{V5_n3s85R)i=uK!Fytx9%8sZ<XG<!Jp;t31bVurWu+2e+!N`b
zmhSE+D*PiqM57PKwQ$&6sV6nnUy_oHjTg#E?lb}HFyJ7(JTI`l@PN%p?<ol*9$vn?
z{9ow=j6TK**8N-<3eu`$z>ur+`0;#m$|zkx$cqvQs1#(qEGb~vRb+R+13imsfsd{z
znfzSSE~%f~-K{T7+{G)HL`Qs11o1oWlM+qrlzX%-6LdKPoh#!x^2Ubw$c7UXi@O5t
zF&nz93x}7x-mV-gXdzR<EJ#3?263oFM(s+w38HWF<Q(X0jW*uDI*xM>k|(~yIL*2*
zUBVQI(QDs&uM+q3eT-5#>CIvX(ek6yPdjNyo=Gyg8&ZeU?`wl5X2jpF-3(;vHj!Qw
zWlblJIX}03mTZTp8yx&xI5A=Ny}-|0P`n-KbI@&EU!i7_Yb`-L?AGTjO8!V=+p%%q
zE&+QUgopPsT@Jv<>`GT4M)Op%h=xH*a~u7LQ;6PWQU7JL&Fiq2tCc-U3G~y@AZP6&
z<`+`u8_9dYXFTHd)fSJ-O`n^S-ksD)FSBY|J4Q^`zWF@(bC)RE7~nPpYu=)kA67M>
zEl7XW!EpHXM6=YGmGz=?QHNPrsmbu}wksexC>y77j+U0PfT|kf<wm5Y(<fRQks8ag
zyR$#!+DO&nE4LU=a$Jo0ARiO?L$#!VG|B|&k7=e0tynvOha5rC0o9k%Wy78V6akuC
z_tI_Aw?Felezf{rPIHGp!=)G9bOq;TchpI0%&q>ly{e^L8a$c4ZL{bz)#rY`UgL#y
z^sZKXO!;StyeepU<|vJ~C3%b(56_DY^lM~<-JOv77Ljdcb9Fv9CuK_WSdjHX+N|(V
z%!hE=x{`yz7gC;fX6x(g3v+YhKYxDMeyI)gV!YYI-BwpR=U}Q+VElO`k~+>og35+E
zL38#t$;>IC{8Z9p3D$|2G!;LBrPoT)Q7ytUlQc?hs2C?vQk`rup-RxH9lioVIW@-b
zqP!bSW%4NS@OI?NNh0I`{;YrIYI8WWRYV#AXg6*`{0MiqDI<CR;aP|3aiO1lYU=SH
z8oM{qVwbUDg`MxU8KighM0Q7X-LH)G5_fG2kGK|fB=6}8C+iB<-@i#ZL&VMqVW6x;
z$0|;Cl-?rh2gE-q5t-R#W$2h)55Gs`kBJ}GMaf0oGBP6Mwk_Wa7s=hBFwM^Z6D7#?
zE)^W5juZ<%NKHa?CLywmKmJlyF8KUxic8R`ukcC9vrY2X2sM4IU7z>vd~q3vLfaux
zaNP@Y&fC*Yf1s#7a}GTb+L3h|+|B5f&m(&`XH2C{L`10w<S?kUFR@mJ4lEC3$`9(E
zJ-hdIWTdz80JIvyY@bqUWM<~N=;_U`+@4C*nuVupruQa*bV-AViUVl=-e~ZepoxNU
zt_*|m?%K^H2sq3jtZ~_B%Kqi-$_WAWfdr{0mAQ(wM9a1K@|#AgpIbK<CVpN!Xx+xl
zI{h>-xV;<kZY?2ip-!zeeaOurz{xl%Ma3X8#^R0I_uqz&zkRquzIufoT)%n>ZkG~h
z!2VM2^{1d`yBYPW@DD9m{TJvt#=&sHuec^|!$)|b<89^4+8_fh?s)3x2A;)SBd7w%
zof(^%%{0Nx@*zy-6KlJr&+m+|xo6U9Yl%&Ply782mZ+_a%flrq%&`>dh_i$BcAzlM
zc;Szt+2>uM%i--K=9?)7qA|n8P7_kS0@BnvKgzeZN}s74s3ni66fH)4RNnad{CUrU
zGHpj%Q(LM53x~qfM6)9|7uCd%RMEfE7&)t}@;i+amkg&iel|kBTTv1-iR{+u1-X47
z09x}4f|Ms+Tb4^D(4D%_!@l%g=Ig_c`(~z7+%N`haht(L(zti5xh4}utQx!a;9$_I
zmR5$EqVKYI`pR*sh`%@)h*xL@cbnZoog-N%h^w?ZQD4$-w=48bG7CFxG<*73+7+(>
zy{VZb!(I#HMKcRxKtT!6PQPjqL*epoFJGNs_x1yZabKSz$LOm~dxFjkAFyEU%EglD
zx7yib6se+@FFsyA4nH$+E}n^gV&nBGXIqNag)U78c;JZDe0)72SW{%huV~BMaFT`z
z3>y7Py&zq)mq@@I&@;?4bJ$cvzW1M6fWvyO;YlDdUKS(`>Frg(ZMk2SDk>^U62=<G
zVT}_+oX%iXexeysvJ1-wD;B|j3b5W6za9m{V<E7%2+ySA5s=mmR}L!Dl)kgpyQC;V
zWf76ddg+t5u0dO#-0r6nzFn`=yH8Jrgv8bZi{@0G6{Ws-qyfoBvHU)(ThZVF$kpY#
zrb~*wB(3-y^17l#uKXhd{RD`tK#s$d1pQad0r9=!VC*TUj((VOiO$8SZ+8(u*drq&
zf6aRnlZdeTGR?eM-maq@alhYqO2pg|F`lvZm{sWI>n>ytdU_#X^D*LI?uGfm^;Vyq
z0>&!H$~22E%NRW9jLwy7DO*EWl21)%$Xwi4U<y)B?>;W+Xl8zRXPEysVT<``nk8t-
z9EY6(a3tmK7Y@GsPH{1-<um2yyAV;SuTU_9Im0b2aZRBB^2Q^V>z%DXzU-PzODHJZ
zIZx(wSp7w&%5snYwmdU4^Fo7tLOg@S^B%rqgHVit_?zGF)TUA#GfQH6P2d;$W<hU{
zyiestm^mIS-=a=B&Imnc4L-VZN4zJy^E!$Dym~G13%~7hZhb|L>>NUE^)%71^SFbh
zYvb%~Fiv?Bd5|fC3-y{xz<m*hUg&L(Wgm2oB+5q#hAg@U{ARk6l}Xg_q`ZOm5*`)v
z70%iE=lzlQD&aOP_>uwb7bSgMK!Nx{#tVRxnaySTa<3r|SMAn?(KidlVFc$^=jlSv
z)C1NjpeoxB#++P(^(xd<k<KbLH8qH~ZOz@E_gTH{RzI!PwE|?@*p#aOJZr)mW@b>A
zJ*H_^lenjYILVl@_Z~Sx*W8R*yZrv<OE_Q)5=BC|vx1~~hwE*O(te@BYI@z1)TclW
zfqZ+smp^!SteLQ1?$C?o1FjNkxx)a+NGC|0e0l!-xfh}&-NR-)i2zHn`|T=Ryv0vH
zvaZ~VqbNL(VyBj7e{v<bAwZX-W=x4^=4XKdA;FC}P|lj){^h3_`}oY<%-M~N#^d?1
zyMI5=;Y8Bh{th62FY%g@5p`SsN3L#e9I2{<bNdpEBsZymK^oDRs+w9Fh%|v$0-*G+
zzkPP^)^gC%NWeL#+YE4WRWF`2=&jp<3qnncx#(?gzZLBx25m0kLM2FtMmp3%t)W36
zGnf5Cl#8_PMV;E<g7oUt!i8}U#`O3g0r{RHxO~f+*}%M}=ya(lBku|kgN?Q31Rx`l
z9X9WHP<5}_l{0JPfkv0(qH5U`X@p!v-Tkzbkz!Kz=MMqP7bHkK!{EDAfJH;iOC33+
z`AauTJloIKVr?Hrmg$b*&rF&)+SWfQ(S2mwT;G0mfjs`x1E07ez*5u2A$Ojor<Za^
zMy-8Atv%k4uIMue$qQOWQmp{kJ{p4wxckW~<hSl|nrr)^!LGsUbgC(3{$My@uWHpX
zQ;`nVb3KYIFyt!zY`M34K}D)sR8+*z%}&ei6-Em9o>4vRm{}9d<<S@t-hHWH_O_S$
z;ycr&Y&@xP+ERHn&qka|Z$JNnOpB($Rs!NcDZ$yr<y9>478O&R6QFmnrw>M73X5xt
z_8tUSslSk@#9+v4YHAUNIo?v3N&`eaBuGIQSov$|Q!%NdND<J@n2q%A;wf~9ukFJ!
z9e^K6sBOteqBtu_BP|D-Q97rrMb!tOPA4}}dVRi!Tyb@+CkxKrs3w?);P2S6;8lSD
zpDQt2T?w;{nAzF;L$-&RIXQa5S+i}PWD5(Gk_5VM@mg4H>m}?zRMK!v!m(h5uc85C
zQZY;t`lM8v@DOaRe>n))I5`C%$fS~}{Gls0UIL&^U$}P*7`F>kPEu4PBlwy;XoFC*
z-fWq&ElaN{5e*ejow%TZn)<dMTD%Au=1wZcjD>a=N`S;TfRD($)4Fk7j%7THtc6QU
z?E$Xc@ax!^57tS=(~7nVg%>{D_B1qt_a0#yxo^A|!oz!bPuAxK(V*0INJ6~XTQ%V3
zA-aegFhr0lB53v14S(jUpBEs+Rc9i%`u4_Yz)-)I%Ss^R)26L@_eqmDuo!wOz#J~e
zyXYMhI4XfNuNorkS@<iJH<S@q85I~g%8#GYO4;*RrS*l}=LMVEx%DW9qz_^Yb}9_I
zRQnF=``p_U(yt)bP1v~pFMwae_tIhB!Xjur7wf%FE`m7D5Qs_W^`ZUqJzrmcyQ#Cg
zz>j4%NEX?F7WdnE$M5~)+p|2}Uajo>rZv}dbF6XB>D4J(9B}yY@Ctqu9dbIu+R6RA
zuftD~+o4zXLNeE#Pgfm!tp%n8#9Ko(l2SxGl8Ti@7yg_cVrl0)Pr-<lK+MwErCKkp
z*W&FN6em)`7@R_I^DkwLTpnFxJ-T+DL5uqtFVVSIG65(}Pr={wmlb7#v`on?QX<!;
zh!AJ&bu3TkOHFBSIaz8RCst}64};EcW{s8awL{<$G-l<jdEy1(-m_*5&nv@wqYXN(
zV7P1?;K5UJ3{?ZtaS<M(yl(9nd}?xCUQvGyJsQz;w3DofVmeE)WA(YZJ|W1P%&os>
z3i+*TJYrg%<$e(oPa@fN3WwHaL9Z1Rm|t|AG(qOQ_4a_66K6cCd-7GyOYPxa8uQ|)
zP^|C#1b`Y83AO!bb|QYWMy{%gbzoC-kZIUKmnxUklQ<OYV(6Bm3pA;UH6=ma+4a2j
z*IBBuxpZyN@t4{3gkkzN9RXw(J-MF`JQzOheu;(}liWM_Sa^^#)s}XhJG}9_MZVx`
zq1~$jEyGfy4i8FFy>11r9<7b>C;!qgHGqZ@wfIY>+B~VMj_BO3%udugX#_!iwRsB5
zqrNefBp2*96{(_4rn|x8hbfL%h3~_@dYrd#(#H?*g@BW&Zokn8_48egpxKeSMo_Tm
zfeAYXgk6<}Z+*b`F6%n^EsJVHOPd8Ox>BDK_pIvpmad_DZ!B+~rb`?&K@d9~E4^WW
z)%GDq&X3P)L<k0aMuZ(0>BFfZ>BXkC2QLl&74Px}Tx%lNo(A|i>Lkx-&=5T9d%crz
z{4Gjm>99V&8)??QC3B^8hyHJvLs^H7N(YdtZJyhW_4W0fT+<h39NAk9XIKF1)ygb|
zfT}n+IB1q$Wrl=8x1fLa&7dNgwW;3uUHD-y`)8@=TQqsEeiLKXC_;c^cX)VOrJJ#E
zLi{itp~8pvD&^%5e0v65uiXX&)#sbJ7kRvdZbkL*)92pZ9zep)57r}@;&8@DF6h{x
z_>!9lu)pI~L1HD<wnmwmnUlxIjV_C|Bs7~bHwr~H4@~Ta>l^v5KQdnIr59VglsS%<
zaWt-Db8pps1U!h>&dR1z<MX(V>-F&PaKLUwnb+FSw^F#{=oqHIN>{&vU;8#qvn%qf
z#}@&YzG56P_Q#!7g&4_r3@;v^Cp15xtgOP@Y@yR5>C~6Wu7(D+ZC)F=o77-nncWkf
z03YEkjHShN#T%P}MCsE22y=610SMoJ&sUqO-a&$I-wk`2KaD~hM0FRJF`hN@WYSIO
z(d0lP5^=`Bwkn`;*(cqr!Z7kveLVw-Ol~;h!dXxIFG@3!o}L{+k3dd;*RS5~6<Y6V
zQdLz27*k0gS~_idR&8mp)zw5tqj)GF=>%)gP$xx1>V0wSPFMZ9ZaZ4Se0qRxf1ING
z{Mw~`bXU=<jBd7R7X93?v0WON(!xScfsZYtv|@hVXk>JBNN^;kpLx-_6+H@tA^M?(
z)-)Qs3&>OUuEXL{Mwz1fWNG>+GA|Uj^@8s@*86Bggkt&*kIWR+Dliv7d>lZ0b@dG>
zsj;=yuo9F)F|cB4KHFe^t!w6uI1d<1Wgg;|Dy7lLomnp<For!bJ6RLiCHL(#3w!xe
zQwDeZZGXo~q{N3SIUgTjrEYTSUb1EC)Tn5ye7`Na&{|k0qGo6mUKY525i=|B#I{Ju
zt9Lk5N5m|sizT&PxlMcdB}8Z?e=+WA7ggO7cVzB&T8p{=S7?s&{{P(siQMz)3SHF_
zoxj@cF=aUkb@V1-@a9x#c@;0bNGs%Zf{dpk=is~A4%D{y&JRxN=vRW`;>M)+SKk<p
zNgn<B<{j!J@>ezC?f89cm11}0RvBC7EJ-t|0=c-jusw)XNz&KXPf>ern^}6hXM8Fl
z$mrl8Jb=eP_kA6EFVCYHAOcYl1Og=1#IIkUSR6e(fMdSKs~c;++2TzH(oZaane(TN
zNvQ{IbhdMRbJeD%f!JtiX(<bJyR4bVU<XTu7wNnyPnm;Yd&3$^KrWRy+LUL}D@QOB
zQ2Fmx?zz}*rKVCx^sL6jE~NT~0mgTMmNGzxcKPLLBU_?Rf%#wNIkxG%;ODPLwo?Hw
z2YwX>Nt@G(+>L&fGPeDCN<X%@kp3=kqs14w2*=EeEfHu1FsHe&-B_;FkPUxK|2q96
z(Ze11WuyN7wS><ry1lmZGOw9MneXwyQz&xk{&<EdT}`PHWfq<GvHI#5c$KCArwXv&
z-z{v%svHC>&(Hn4wuB(7<=^U3vDX@q%c*Ow9F2N`ORtsUE1XEE`BT7@c;^!pL+92i
z3zQ<rBYZegb$HUJ`uZY;g@pn9rmDKK=Zq>RS=D{%>+cs56RQ9!p8@L>80u<jZ&-du
z+Y%Q~skr8V?d{JTs$1Ow^eixNRK~@}J9&A5rlzL$jJ)DqRfIUKz{QjP&vgAq)Lv1?
zMn(nZ0c0pjWkZvnXVe@ztXgs;o+DHJEs@E<DqJA(yzTEq1^5pyi5hJ=GlrZmf9tjH
zw8J>-67^PoF9rbXmm?&~HQGCMU*yJRo2U<pAB&p>Ol4ulmEeU4&QMcM<Rc^f_49f$
zd9q;>@wU$(4`vflZQ0nxH4JO&DDrr%RD*}5DRoGA`6N<i6WdIjYOc_oH4IGrf%Iik
z<JTmekg;K}`P1u0#>*<EnPY01!q{4@<>qOZPP9$wYUf~0_L>1MsrGD8)2UZ{d}g<A
z!A?KW%^&iwD{q<EDx`4f4xdhm<L~3;CohQK!}x}5UnjY4bMBMfe0s4ibA=bk*v*G}
zXVWCCC6V}R=b6mau=vrh7Qv7Wy^=R|z8tmlh{VX@QJbTftcb^Ti9<u57IggVFI-lp
zRr#xGKpLgb;`(|r855{yI}-KSsK)nfR@=FTogGyskNwm#vI}awR=cc?BRFR?;}ry@
z?i#Q?9Jk|u{It`U&#nOCoE6bunsvlR+#sj(Q%F^JLMn1%A%VLy8-{9$Ut`gfTvcV9
z0RLH#$n{QX%G5wYan7_%36Ah?9CZRWcMTHoo9MdsY+H6FU-Pb$e53IpgAesTy-~v}
zT{eB#(7x7e&I96nZnYqC|Fm&qjXu&6`D-$*)cs7)%%_)=MTN6W)8PuqlvdYNoCUv9
zsmYcuNDYK@PBnTBCR|deOv*EbW}TRwCb#dFiXaDxWgtZcT{;tqx1@06+ukQ<tW?oA
zQ|a4Ol|pyyg<b?Iw;f03wr;yOdL0gncXpA(I!|EU6M8MGNsQ-{c`6meLK5>=oU`en
z64KWZz6ML?XdjHo?&g$`iCvd}wwpoK;{LXe-~xrliR`&`FE;jCWRV9@Y>XUN2m*H<
z8{~WpmN9mvHkkO%?s!4)&^G5-q36!H^dm)`>pvCH*}7w>D#z`lk*qX)0fU_p=#gVQ
zDZPNJzjR5prLnQPozQ~>2gj?d1>X(Dn$AD1cC`Vq_+!@%`Y-|G#a|q>w;X-=YbOjH
zeBYH{2*aDX9kJcnmQH*15`x~pb#Tj}=a%YYzYrMc;aywvOWliE`>U^ln$NRzg`o|&
z=(y@Wfk+ldtCM_b+|_kH47X;!J4pjCz~)}H|JqA)^FKoG{t|#s(#RY`5zpK&rOdDk
z=CEZlR@Grc>0r52+<NFN1N5Y&eT~{3wtfwl%6yc-_Pg=S!XzRXsZ-R~l73Drw3Aai
zjPUWBKd}odO5H|yF*Gq|UH|AXLxloZqUAVj`($M@=HSCpbv%QfS&dDgrd5ICa-Wy^
z@HiM$JrNLU(oAQ<YR`Yao0A&~iZ#cX#kuDG{`ie9y}-(wxoigWsgLJcdsByVNa{+Z
z#2`=C#zt}VEG5arC_+xw>`$i5?ChaRjpU)FBS-0kp`XEeAk0<5@B(+-b6vij7pM>G
zykzy7m;tui>OiHWL9y2*OdJ*=dcFfiuE{5hA04+eZg&<9Exd?B%jg8`?Y_244Lt4%
zSWBc}&mK+N8s?F%jJ>15mcGIT64?9VvZ(VCg_@k+54i->4QkNNVVb)-!@$mBZn+IG
zT+bN^AlW~}%+k?DC79OYJZV&t($MWn^Dc^!ZMr2SKyGK-lQiN7zq<Uq8W<8Vg9O}r
zY8`!hu|QTyzM6MlTVffp>;^~NdFqJCymJZl{SGZV>8icitk(%~8cbTdbDZ86iM+dK
z{VSzeq1$xzhmW{JQ3+lvxqh~hhJynuwSDu*TaOR|{Ob`heOrp)WSYy5wf;DW^VKRZ
zG8Y;O0bg@6CA!j1UU*nCPJOQP(vP$pT)CsDZ>8eH)6n(HGsb0asaaTrYWY5olyHXm
z?A*!4WCh4_KFRCktpYw`5_Nef_GtB;oNN>tV^R3k-Nd2wR8_vU{k2xjn~9-j33Blq
zLm+g|Km%y?tM=VW<ng#XMVgyZ(c-eKM>C83gu_dN?j0-@303z5IT8L)R&%|7G6BKq
zq1e3Q$_!WX3&c-zsF46Kmb^qms&d30%_Y>TKCJI>@m{WHnJ;C`g_`zQ5!|djPdLP3
z0&#srY8<(T5_nmn^N67hp*~ca6mWJQS~90*`Lm~Qh^)llswf%A$_^3slS0dq>PIS1
z!;Fk(2Hc*LB4a-}dW)5S#EaENK~FQL2+6k^;yPW*3ZBBVXs(@0UTfA(jt_NeR5GCM
z;CVUY;~hUWms9AjJi-XUOpB@@-HKr^abWfnA76@&>P02Khif0dQBS3%3=fRjn~k)v
z^0>Ne2nqSBdGfZa7YT%x@684j6vzmdfYz!R&yQe;XHd_)2aHe?<n;+QlYs&aPDo6z
zmLoAV9%f4i>q*k;hyoJ1Z~WJ!N{(;uDW_;)#)<iPz1%>20;iRWgEgYKuqatP<2JIh
z%ALJiz=p0(C*r&CQBorB@}0ryh5P3ECrxOeWlxv!>B^}}*G~Mkyg}C%P0D2!oXfkv
zKCaqklhbX{zsJ9PfRHx6qFm@@t9H?{b9i@vG;f?E>yfV&wsW5eg3S+-mLtK--<FTi
zD?(1Mtrg;jy#sPmk14s1H}C9ai$Lc_n5FN*&gNPVn>!jN|EM$g$SJ%WDz)9NuiehM
zoh6Qu2~|vnoVmJY2N;_4LqUGJzf4(F#L*`*<M;EfA(IE1&OTh#tz7eZ=D!ne`c#s-
zUv`C7`t4Off?jEcToEh;epkZu!Lh74A!~FChT;{2UE9cSA1m%(UxXqnnXm+1n+ebY
zd!|d6PI<;hVj)^~E^A3E_WbO%#TNUuX0@Y6M%;1e<OI_Nch}}v?q?RM!wd=sWOQh1
z$nR|y6>C{}OJ{rQ{`Zk7V?zf<Rt-MOx<ld&ANP*ycClH@KH}<CNK89D?{IlY_57nc
z<9S~^yknbklA$zhOsbtlppDOJXvZ<stjNXkVd>MbY>!Cp;X>?v$$=8v?QCyYovWkw
zFzBhR6ASHUF81#2ucOda@|ZYW1q*wsXcap6_k)_?)fN^NM0U*=1|1i!Mr1KT(G3%4
z^E2}0>jbF&f%L}@_?e%Gy+io&fsfG<*^--lf9GWk<d4Qzqd$9;LCev&2^t$i9Z@#!
z&{95lgte?K^olj$3@(!&?WZ;I=B0^kOTXg#1#z5$6mI*vvZlJkK{Owc_?ZWOe>@|h
zTcwQ4am-Me^tJufmXeR#_WMzJh0)6SR)y`eHuNnTymz@2)cVP?D^2e|v<26FJ*az|
zQM%c#vwBQXmv!{5D8Y8JzG1WvR9(ttn}92>4H$tqZO*$pV(KI?d*)E}vDq)eKF8{r
z!4nj_NwMzZ4dz#5HH_DJnG7|Z?@V7!b{npi?WXcp{1MNKn_jr5TlB;+pzy>xrs7YL
z+&CjQ)Kzr~xS}>`xY@3#1mHYaVtb8t@lo<AP!6zTTK>6s?aXOWzvt*TP0y=DODenD
zhGItgNNbKvGm9#kF}3j7hx&Ec<W+|Y#OKC~0du60il@lcmr-m51>12$s6G~xImYq!
z@P!n16RNe52%SB4cw=x{7M3bRiUm^r`ML#iN!7sNJMV}>aV>h$ujY}KX+%z0!o&n%
zx^L|BV%ys+xpB(TQPS1+(5ol5pZa(^{Y3LC{9Xz$-(cq@9~l;;+wcbB%;Gd0F2iZf
zi%c_mq*H==!Q`LTTBCzP$~shq-3RzwGg!#{5&^-{5r|TYDnY!ZfgD|aMd?-o4pe?P
z0D_0&LA6H2Vx%^dQ<d*wl5GZ1{=!Co$JxU}ZtKKRoZv?7J7QloiN|qUUXS~`|IC!z
zEP#Oc?aL^+2v_v<Qy&cmlfn95lYY@wze(IQA4I>hc`!DJF1)+GA$h)O&1T&8hdKZj
z!5dm7ebA&?&%Dt1*S;3N$AN!?-F=SK?KBwBR|Q%Q9muIWJ$zIN{Xzl)x|zK9qS+`(
zh6Ksm+P*Y1Z4a_q+>T6#9u)<gOUMlU^+9%!T6b>`)U)&m+8Ql}*Q&qPu`u|`22`^G
zVOb!E9HS@)q->YKhDVt5M?|e3fvNz!ae{(E(N^)iF;}>-kc5QpE|Kk`zGJll%ROzN
z!a`Rw@3UnlKe>FCNmgd)zKtb5v9;?h093q}?vDN}rMC0+F6_yJ><^cWvRzF|h7^F<
zG}i-N;9;%@Q)KpFE#YK6wuiHahxPT3wo`%FARb;<Z+e3aP_s2Wz@9h8NlBs)V*Rly
z=lv8|8!)Iy9a(786Ge_UqFIkGJ;w$GxloCbz{imO{wpZt2h9QQkRHpu`R=kerDZQ4
zmjhmvvS_)oU~LdjkpP)J=CWctbxGN2H9~-2UDuQNd9i|a#ouQmg+LqXhzhJs#eMjd
zh)VMwE#li;cVV+7p^Z_qRdYeCU9-H36WG-5@68W?Xx)wOOJ(YKbw5B+HCXdJPVUWD
z*D4OJxq8%4{#}we(x{>RMHzPIOPzRtE%5l%0Fqfb?6|H5pa8tokr8rNS67Y<H7Dk_
z(x1k1gB$HhgWf<jheDCIx`qaINa=}_la(5?b#i7##?0B=$G$#RvA=8l_BDdELaXlM
ztMw0nI|f+$g!2F`<KY?Kp%%6``+MoPYCb>UBm!=tL2f^2?qoD|w;MaxQ~xVxvCRcM
zVOYH8BbBUsU)<+-Xt|B`<@rsX29L*D2kl-0UCI8-JaCAApd&-bz9yu<`r@bz26hf%
zjB;brJsy35*c@X5m+fVRoGmF*M8y=kOP{^F!zA5_yy`Ua-;7pfGX|X6+l1kkMrj32
zuXNz&`z_wfLh$~HcW9=inbpRXs7yGMPtR3UF~e9_7Iu21{k&%$OWq(G8anwIm4lmC
zrK|=k*7UU{^Ll1qF>Ew_tc{AXdUu9{<5CnAeQGrmHAMD}n%Xm`(AQ-K&K^#3V=}&~
z?UCVOC!t>sZV=<`c+bfGfNUQ4Qc5v#JS`|!ROCV}i<G!L=T^!5Ql4!GBvkH-dbEKM
zKF`y)l=GQazdNR<8pH328M&W#&cHc@j7yU-Vi~i;)=jw`i@_5P@YeIRUnA1o8b~i0
z*utH%{`rxE<M!(%m)8;r1<AN=Z>Vqp_jKSL@M&ll4-I%F4}5A+<eoy;#k#~84nDs`
zM8GPNVHsI4yDr@P9$KkuHw*?d!eFbWW{99G&N&xLicC>4of*2~4AX~`?a!YVmf$6h
z*;7UTq$bS+NkgH6!94aHK%OUL%wCLi2l08Wc}*KF4<BL5QDjPqE5$f7xSd3p!;}2y
z%QR@&HBK}e9`A1Xi3e+dOPx<&xJ-XNb%wSF-_e*wZ;1sM<-+@aA_JQkATWI}({eyg
zd$4p(r!da#=c!5WH}t7-nRLqpU~JLGvNbj7dK;RlbKHyO%o|I2ukb>vSf?~M$OGKA
zG)nf3-_=&Yn*P>twT4%Lhwj=5mW5~r&M1VPh1?Hq?PLT9q-bf#3lp!<5pT(hhAWO$
zn84S3){e>+#|jL<W#H35iFkvC?akARuA4bN!5uQ?d5eEaH+6@$>iwnst&G~16xo%l
zA?~SiuQ+UXBWOGVeutGEccG<BNS;poh{d*TCnpsf2E{T@d`pBu&6U8{SGkL&meaLF
zuMX(y)-)Src1B8(ea#rBqUy!4#yLEPSrRv4GtU0*<^Hc(*ygOU3OaPZ+x{@vKj#D)
zSdaxtmkqow5;>p5v1biBdCye0@}_buflbwRmfBviD^n>H-FS8{5-5k@jaxY9?d;f8
z^r#ws)3K~E3#&kRbTD*%RR?zu9vsH`)$9|axY~S*vXRGG5FZy4))PlaCnGMiR=5AF
zdHmpGs89Pu=!#={V+gj|aa&wmYPKNNnokYQbZl9!%yN5VG*Y!iM8tY%Q-}Xk@x5pv
zAZEj!rOxpntNIIX4$r5ufnt7c;&))jAQ1t;F+Lq>J~0We(Py&aEt~Y@r>vf5`m7iZ
z>#QC_Fabqc2jZ<Y$>D34z;@K4ygemz=qY%o{9Ru)9$s)zOogBf${-VpSm+Guz}a7;
zrELnb>Jxl*ygOhf2qcXj<Egxo1tF)A*5LStygW_dOAvxtu!OO18kgi2e}oDOS!iP&
zT)FisLBB>LQ-(`Y)M{09*p)%Vq$)#p>OdiCuhKfVOyZ$pfOk>XENWLV<Q&)Qh}5HY
z(o<Q|e_TnRU9-Jr+cDHq63~(D;#|}3<f_yVys+2i&HqN!zj`8HQDn-`tUHTB8v<MS
zbJ3a}R;H2Hk%jy1Wn6aJg7g#4tepvl?_1AB<94?mV*M{omRmxknRv0~G}56LtKP=A
zFED3n|9Pbl`W7FTBBt*@kRBblwm4}r>fS2bvC+uJb|)vxCwd2dT*5k@-9WxlZQ&37
z<4U@PCPoPCtR}aA&?~O}TGS{iU2DU(V^<2QpKH*ttICNTLc5Efy}R*lwXbDm|AZP#
zB6T0AUCsFA;O)IFSeGOyCbsO=9TcLM=Gd`+1zOQ^rQ+FryYLm&|9v3j6F0&jh!4M0
z=?2(-j}zE*L(xD*Kqz}j{0)&7PH1m>uqzZ5C4mkCdt;4~yM+pKhzLb2ZRYx<1a~L@
z#?~93fs`Zmfnp9XL+lB4tx)1fW=yYK$#r`A1Hl*m3Mj?B#6g|Y3Vm8A24A)a;S?w0
z;GOf%JUbg1^l&uuCf;v%rbrf`nq^bzboa0*5GfhZxTgO+SzD43(wcMv#1X47Gj#9v
z1nH+U%L1|$tHL2!HE?HTN0^TgnQ>fSU885#I6c!hymzwafr?*u*0svpqEK^7<)v;b
zWg9wj2u-uS$|px7#7yHq+6ZlR9@#b+Nxi*{jzQFCG`dLSoAR{W=bFTNe~-8k2b2T~
zKbV<#9gk>&_@inYca;coiFhs!;}C^9FUrU2(px&xdrXUP#yG>Wyw^1t%-WTU;CKr|
z0{KE<$5h@eH%QmyFd8l^E(|^e2r>ao)52O(V~aS4sF)1b7;v}+4XP)Ru5)%{m(hqY
zV#e`}>Ea}$N^f(&$%cnmuhrd}XJiKBjE{__=XUOz`RwtJFnpO>?TIoYBy9PP-_?))
zYJjF_PR0&H863ThTad@h$_Bm>9_@En$+He+NSkPjHDHT7vC$#x8^%vG=rGH-sWft5
zv!0lBG=GN>ITh7LhDgrx##Oj=`{1%6Q;>66v5*=tZ|`u>&Dg8^C(g3SMOeuk^!gqD
zd}A&2>SEHmKv_A<B!WldNK=MWB_>Ycbpmfq_Ed##8H-931=H-(cX<ZqPgZ}VxrXU}
z#$A0D38*%kYIpQHJ6J`RSWXQwIhVzmw0tkSkY=6o%NRp3jqSRx#kA1XlucO2@zl@M
zRK8Ef+hZ9BoX-QdluUH*&t4s`i;B*}n!raIVEZ_?j`=)H^TaUWMrU_gXLlLya_;~s
zHM?UdhP(aN<8o>LHKe~O6-E&G7!-8$omfyt2I3-I1=ut5!BazSaZcQIr8OYcu-_-t
zMm0ZT?VX(T!}4qP^fg#Dr647quiLjWomHt5)>#>00UqiGrdLnn?}(qosY=k@K)Eb6
zc`hzAG0{bo1$-}Se+#Or+vpDh_qcRn#Be7yXNE<t&doU?`pQco$bCUT_U5^@^bU5r
zHOq8(W6q5ik+$aPGN-%ObX}uPuAxP$B~!51HQoWi`y-`}n^LG#d(EyflNJcl_(s8m
zPdm=^@WLOpAy74e{g50-$>Eflmj?rAUoP=8F#4G9XVOv(Hma*{`_}5+jrm}+MP{%p
z9dw3YQ}Zlkh>9oWbQv9DKup1)#X>dne@grEa46sJVM`=SD1#_Uo5mg?*|Sv2I%GG<
zl3kgxWnZch@{Lr&AQ?3FLDndgec#4l$Zkybo%bG}&-;CUpZEJ-*Y9^-uRrE`p8Gk^
zIp;q2Ip;q2xzGI=ddgd|SM>etnYGJGLMKU%Bbz(N%X*&pV(Gn$w?BFvE-#>J!u+0n
zaD6Idp|v+_No+b;<#}a#0+t*YP%??=Uo5Y*aLBcAFlC8w`<{xQS@a6PeRh_z%2K*r
zl^4q<@hweYe0e-Ye*fb{#&S0acIC39dvp9(XH!XcCmS2pf0dNJeSImqu`J($JyCIe
zGqs;Zrdl=8svrCZ_VKCP{QHHeJP}12W2LxL)58R|#UI>JZZVUN-k6PrEtXZE2xR!N
zvIMEJj_M)j>@LMsAr86i#pRum{hihc@}-K7JZ6Zc!rmWmj@TGSg~FQCrzR459u*ID
zt1ma_mj^5kN}N*)H2;^^_&1egIp2H7S?{w6j%VxXEhJ?lpGD0f&4v|H`FFDuOS|q)
zrs-Y$)c*`u5z?E~^dNP7zHTwPB2HF;KKU%IE+L_D&Od7uzF^;!Ho9Xvlp0<7eXa&+
zQ0>%Y>o)eZEk+M<xIMo=G>b6GZF!S8fXE;{wsQ%86IswRV4oow_jP;m@kZdEl|7z-
ze(767A&HxDiIY7p0d5;OD~rL-08jyTADYn;%hwmdb*_JQ5TkDvv2;JfHls*5!)6#>
z@Wk+~o#SC$VuD*f_OjRFY{FS~A2;!`CqWr_HxOneyQR1b;fJ&L=LTdvENia`yT8Cy
zBx}DVW{TAgG*t!OA|tH)6;5KSkaF8+{pPlOP3&_WET69WcF#+!?Ch+`r4BTiCYSZC
z-#j5g+B0`*8k1C|O|wb7s2MXGM}Af|QM2NtwvD@%qn;5_tkhs50lcP#N0&qlz4$RX
z3x)ZtfQczyxmw;^v(aK|ek4S{R!0E0<v=w^(Zxt;MO%i!u0=}0j?qvPye8W!<{FcR
zqNp6%3Ut0LFw-Kx$ORNpTW0Kw`~*32urR~?zkk674duaq{<1+S?f>};s!%}tfBsTs
z>RKPCSp?+{R8%S9Lv+DPG<L+1QrDELyI}WBm98_Nh2Ru6D4uBzw!s-7%FlVnlO4HP
zwI-8Z1B5vey1cYQvmyua$C&_vlH&=C%*pe43hNa+y-WgqW4!|(+FPWw2h8?;a`9s>
z``Vj{sU5fk+xazFm=agkZqu()gEnd^W?m@dJiOdRyuy{C(&RaR^rG_lPF(Z-tW;;A
zrskHyP1_`}j8lU_#d|+K>#@vL)m7Bau%t`dsWCMSUzzGPbH`4}p1VW(WTWrQCq|3I
zFPjsjN0ZLw8f`wf^%n4%Ml-8|^?LkR%Bp(lI@Sej!Q~8)#PW*es1TFf<tLB?MI-G2
z%@-hD5WJ+r?eo3Aw%T$%g5F~@^fVP!Sj;^-26ozVi)ebpQ$LF!S~`a_v{b?O=*G*J
z2c5#Y+Tc?f4)7=VagqjYZNkhjQxjMkm*38$!RQkn)+9*qXuqAZ8`ii`Pu9RCsSrtl
zc_ewGKzc#2jAcn+L~Gmjwb)`sTOJsD?!HUPiQuQjSIa*XTUcK;#uaJjJ)oxIwg)}`
zbK%=UNuczpTh#%9F8&!F-R(2;-UYLdj4v5e28PN!V}UXRY3U9k!ospCNH@2bbN#os
zN_i;S(7Ae{zOCxmNg7H}k`{WN*dq5alBu@zr8ua(P{t^yMlzHU(=G77rCR|&ux<z+
z6FWHa#KgpOjDl2^uA<L}3^S~o+o@J`2nDM5jV&BS751Q#Pw>Nyib}n8L947cy5cf2
zngsxyn=_<a2?niT7aWnwGdpp5y?@f~eS@#Py*-b%jHG0Snt;j?m_Rs+nvp|0(c)vf
zR=FU3qy{k*4h9SGlSmseM*PJ4zwd)%L+Z)%;bSaMYTqXQdUW<k+1Q{Ar%u)q$am1<
zEDk~pxJ{3y$z_W=%Cb6~v7DKm#CTfdIAc~%DYtx1n0mDnodp^^Vt|A*@YASYdE+^v
z;5cxd5Pm|YO0-P)l`IP<r~zK~`N+i!pwdE>yV}LOx|E5U+(Re1C_)G(vOnVT64iZl
z{e2xX2ck6J#2C&7YCFEc(fVCB?;JS=n`^QBv*LQrX19qb6rDpD;Dq}=4BGpC`E-p`
z_ioz;GV!7C2a7lgfpAm^Gsk-9?PBGwCkgdZJ5XI=VbPn6oPkWB>h2g#<q{YdFqS0i
zbS_%;v84{vkaT(DcN*7>;~xsmo&*D+jNx`{7}q_gIO65|1n-!K(PvggV;H$`p%MHp
zcsJu@K_f{gL#cU%en(2R1RM0D%+k40t32aO?j1(;=V9s@%GP+~T$bGVUjHvc-~<H~
z_k?cO7ra3kje2Dc$NMV1&8!RxQMLM**yjc$$1MX&=EX6_pjrCF$p(7&%8r%aO)J&m
z;S=&x(R-!zsO!sj%4c*Wo$=D{l+=)Fgj3`(85Vz;hs|$I7dIaHvC?bz;cMQ%Khs3C
zaXVBT3ynw(!6p;pQG_%AF8(_WbTwkYO-K8Cc#kVodq&E93nKi8M;{X))-aDIN^$!n
z0~ZvmtAhUX<ut+P<FS`UW#3)FDM{utPj@#Fi(7^=8_qWl7U)9lS5I96C_nJ#gbd><
z6t}Oxz3^sv<n^Y%M`>!^mAE@nShZdzR;DPer5x^kzdjEDtD8M*kN#tpL2`7MLhH#0
z)(UZv7$d<0$D1(bgSqSba;}fByt!uKkY;kb=CSQa6I8v7CSr1*e964`j9J&>ATT;M
zVE|vj5AA#$#wqym<nV?aT!x~K=qwL)S1y!;&yyU&!&lmuPAOPXdi-rXL%-_^iGjl{
zPqQmpS+AxYX-HvP88ds$t)itjN541Myd+nZJvKavKFTs%+e;4KxegpPaN^)U$5oeG
zSk|krKTW3rB)~h5`y7za+Og~vsCxDCNz#^4HGiXyY__G8A0Op-5|wJhH|Nc7i%+H=
zRxCA954n|n)kC8ffO}K+_T0#FUC&|H&gD3U+DKD9GQruq*uYBC##+%a)Tlfq8+jhK
zmHx(%k*98{lLVMRZ%TYlS5IEt_<a}i>%s;RHTpLdUFU}~pEUrHJ7J0(NEwUR2qqfJ
zT$N^n{vPSB@`FqtAUJXh-+kri(A218ye$;P(xc5<nukAsa$UESY2B^;BfeG#_?{|f
zz=|Jp0*a^NiG7yt-~d#mxY7H&`(C9v4%4@u?ejVJ>(`q=^16k9!0d(F{u^0t$)`#m
z7tD56#ndd58*&<uooO~l9pauXAUeKA^75`|^N#Efi;EduV*n{?V2L#+Pe%93wSCE5
zk~{Z>P0Hn+ciQfoj9iD!E%*}vpxO|;(2uxm9+bOu#W?=KE#a|I11xAi5A%AUW${L?
z?Qwy4ba&aNCB687%eyjT7Gq=cCq{@rIWD_@5n$Y67jEVm7D+wxtD{)=D+8C??K|76
z6t_*~)uEfBFCBNMe2LyLzrHJO3Ff9P<IJNkXfC(zgrKdmoUHWv&@UbR&{3-|-O21`
zA5bx6Z{2LiQ<qRm*!z=a1s+3#qS6H|yu&QKgaBEpik<Dhgdr~)`0(N-=I|nvIyTZr
z9b&s%|0MA7f-#DkK@|`Vvv(AN(4OY|aHD)ds$yn?EVRGXMxK&3<Lm><61>Fo;hy?>
z*{XJ^hG&(UJRg~?;hb30CKgGZpTN{q_o;E!_8G+q%`h8grdPzx;Y=lf?+?Sh)%Dqo
z9WfL|8tRrN_6Wc0mE(g^tbze@?gVEWjRqp2{#VibnV%YNhQXL!pEn+QtA#mse%U@p
zwlnN5c--mM93xIhSBg8Svn%A61#Dm5A|j_KcpT%T2N6UyxmbH<Z|r^6+br*fP#D$i
z>W34Xf=Q)Tx#>){0z7n?Z+T}gY>HLhzf$asAC~wD>H)!Ypi`HA6(N2{7F*)Ai$4Ho
zSW#@{xlSrLiggN=Z&`@lKu2W-lM0>1*6P2l`PrI9W-d_5@6ys)zu#_xax3s$`WX50
z{uP6+8`%UW#Eo1APIKlXZzLf&tk_<Eb-iYej1wnL`*yZbjH9@IF|@zoqP5*h*eZ)}
zwT5r*h4j(AK8vL0ETJG_zSvv%NVz`7Mngb?4O)?9Vd3OgkgJVl)T*oxf72xSzBR8?
zPXSJuC<yACSFfJ^NOObl#4RVZn6U6#>zS;aN<~BW{5PW7FV)iRX=`QOtGAOPLRXrS
zkvN-9X$s#qn6=?-mloOxe(U<ja1Tj~?I%gmCPbdUH6E60+9hth_EToTjXt65)Rm9)
zsFlZiOVho@1DAodoQJKIAy1CF_QS1=&FAlxdsMdjS=T=hT;^dL`I0EA3n(NvDU<jL
z7v?(^J|#GX;C;^ovmCi0v!|fyucFcCCf#G9tV9wHPRtA;+w+z6^yl1{k~`fyau5Kc
zM7DAu&}!q^QCzF@mb6bh9Sy&_;DH}^?^Vd@xsWxqYHNPvGtyn>4KI&Ks}fEQiqgk|
zam#xMm193C$4*hI&YNCAPkxf~?h+VTqiY(-iS)N9?iT1ok5e@E&ne-YTuAkGqxAA~
zQ$(BBymPN|!Ap)x6-r;F1X+456?!PlWTqk&WsU}7>-jx(tj6OoCv^#9=6Xod{ubvL
zDbTT`X5LQE4!n6D##~~}$VoV>rJq}AlvPTpp9@FD9E(EU_<ZY}@Xm!j&;W=(%+V3k
z;@_Jlq9T<*OBzi$v-_@nB@={r#2j_(g|J|~o6=#Fqp9NNvYB5xsBH(s)W6!SrxP4J
zCYbdoco{<*sE$X?2NS*DIaai?HOPWSRk}JGIG8nwq4OY&Qznl)k4PVjnwQ}GE?bHo
zS{DOzy^B@fhuFfu0}L5KuIANS#^om{_p=sWK~9>s6&f;vJT2h<JS-Sav{PCf8+c>L
z(^v~y*q}So#>}J|M}u;>{9hh>HngF@J8VVLoDBr4z=&^0Ekm%!X(;|2kYChEc2pja
zZ4>6P5{y+oa<a;A;1XZ5-n(9Q0q|&<uKn!qb?Ijb=wV?sdvH_(i0~-#1E?HN^r58F
z?)~MOACVU6)$d%O=oN@nP2oee`E0_D#$2jK(Zz0EbU?F$btT?KTcrvygK6RW8DRzk
z02+?6?rL{$iOPB;LKkKI*zuu)P96)8F$j(10*!>Aq3Y4}l;T@uOz>*Kb>_NI=wH3!
z#`%Bq*iOh63T;3~Fy)9-P%$n#&Rnw=s;TB5kCZh$nlI^|!7Q<uGr~Ix=DL{x<~$7D
zQkR~}JAI=x>2FM1JbO194ZS9E1_4{Qd(Khb3kUArGA9QzMNAhkUehZ7W1KneG)#Gb
zB6ig^28<z|r{^4Tshs)20*!k3edDPDA_sy9Qx}sSU2r-5H+4A(eB@XZee{+kBc%=$
zP=C(Tt#C&81MC4tA2hH*(exJR;ZBS@4C}}(oD)=W_6h?9GMsTuTywzR@!?O8a{0Ww
zM-mRkN0!EZFcgx%F>J<i#uXF%caNB>k%7EpZ{fttk9-(Td-(&t&cnWGT`Xsr<R0b|
z=80gAO*m1Z0C22vws#G=t6Kk(ddA8LLZ>{Q6+#Y;EDHzh8lcGl!8qM1tBhN`WV~kc
z6ErAqg0XLsb^2H~=ar{jp?ZVyOhYO%QfO@B0(kliERI~=_jbE}Uj1v#$8Tp;q}Po^
z7DDvxaP<$o1(j$3O{$&Kgj7G>{AYN@vLLIu=lei~g8eYCZ=T--S8_vD&;W#+83x_C
zlkatL9yd=H0{BN)VqoY@4?RYC3ydY(6#xR1tsB0SMctmv%pDHAGcY821vZ=n{BN!1
z?hfv9DnEZ8JYj<>m;d1qW&mLkkmENqh6|L|H5Tn_QSEdQieHa5Ss5U+n}1Xi04)%S
z{fz@a0X+lTsK|}0lx=75wwI}+hxVvC8r*<y0kCWb*nyM6R9<GvMJFH%?#4CMSrqN>
z90TlCY8W#96(j+q6qn)1|2Gn}$lqg%&i4BU%)R<WnnMu!z()8Q-KW2b9;r5sA{}ae
zH}V2pTo%|o;EtbGz4)=?Be0kNH%%ewL(dw5i3pP;A~rukr2n=j7t;)GnXj}T^wO%p
z-Q3ze!~CtSL+$}tQ-<~2m66D(6lRl;e@C8NEVG<E8`1S)xjE{oQWJAKz!iy?a~pIK
zm5C*uB>PUJgmEirtSJQaO}R-gdlruVb3H#-R4+=)ONr9EG@IA7>Ow6ZJpq`3P&$j$
zBQk%u={J@Lcn=c|feRPoJo;qGQ#o{orvTf;AMa4o*XU8z{+mv|zF()MwBEnkXqdcy
z>O_Qty?F%F#kfxWE0g7EV>*)}JP|TElwI&}R2mESdZ>CF9)98O?u4giU3wC+{w{-u
z0X0-xs~kW8NA&E42ahnSkFl&yKwk3V#W=yXg)8ReAWEr_@;z}aFh=WwIRFGsF_NFf
zx;9Mxrcw^4WuuyGc5wNScf-DJjXMJu08sc@nhC-L5$p7>aTfqqXiEI5V#$0A&+?><
zWpyRMK<u^bP*5M9bVC?O1bs_(_f2d_dfzzFd(ziR-g0?zbM<3Vl5@Fv7Jk~x^oSz8
zqOMe~e);?UxomraSAtXTYq6AxerM%Bx9*giu>LJE1+FW@hG`zBgqw3Amb}|-QaLZm
ztC1QKy}e9KSbB<<uhpdS7<9E4jDNmIj2sBTyM0$%_Ee&ORmOC5HjM!iaE5ajo8W9L
zixu>7edT{neDs&H#ElybmE06{=~A*zGmgfbq$Yudi1T=v<bAO81Rlxl7%CkG&Ft#Z
z8*KwrEV|#=LgjAe)w!ZEnI@TO33d;UGs!@xvmAn+6pdOkb4(ecV9<t25KW=A{BrcW
zatZI`^j>1z?v&ZOsBT~9z0vQC9eaTI(c$Xum5f?nUq^YUG*ImLmS4JlS5(4@vXFFx
zK1L<pg}~H=Y+l-I@Tt#|ni@++P@4eg%jG*KFxIN7W${i<u?z+F=0yg{bhN_wgh9DE
zh7w{k`(Ye!-1oYu77xxHyPB20kyJr|f1Oq8r&p7QMBtrz>72md!v@t;l;8p0sj6O?
zuS;MGu>sm9gkN+>Kqn{@z5Is}B2g2AD4TL)E2|kNJU|@A1~tvT@0A<3bV;`)mkCyA
zs^{|V);V*6SV;P_56H-<iNb3&2S-X0zzN+u>qTIyOHZ~)sgfEwZf()9zRfO-vOx1h
z)I>zkQBo?(Nymoh4(J(`8r9ZJ%kq)OnXXzlYHeXo@>D;2D**_qswZvV@cBvzNgrry
zZH*7~lQ1v2jVL%z(bF{*40n9vhd0W4xpnhgwK<UW(D1Rk`q*z1B~HZ4#%z?3YxwGj
z7_X_ji@KQ6X+P_;FWxlngYx}TC-dS-(t<FZR1cpUODi5-F)AbL^aGNklreY?q*1$$
z?K6&56QCV<ko}W{5UPTmkn4gpYyHF^A~AjgxgG`*P8`CQ+E0N#bgt`$EX_7ZoYF2U
zGx_Fdg!|J?hwYjR28B>mR7-T1e{EQ+B+n;}VpZ^NytqKu8FcE2=3la}kgsr#oEqGe
zvYGMgu#)Bnn;F31jrO)KoO;Q;uHtpeJ}vcoL=t@blCkU&u32S_#}4)xmW_DXe9aV>
zPQcGSI{bn6Ld;uE&AczeP%LRp8S^K@da=~6OA81->n*~`+S>X&l(YI7^AQeLMu;|#
ziJK66ATpZgvj(}fmGAPYmo+E3w2vnb@H!G+dfcJ-ia$4DTjvCwBBK0S1oMs7=F3sq
z4`KH98+TS5K7y}|=Wi`vk4>~&^YeLn8Uy%efQU%vjL@UNX@q41AvklfJ<F(?jorh7
zKRlvNbiwu^b$1>ANE(-9m>z{fvmTf~Lb|<-><zolB4zUMwdO&TCHF%;C6{t0PEwvA
zvnj<GfH`I=>*Wg&r99$~zp|Wh_~SV|C}Jek9Hw6E(IsXP-;B#OCDK#YZXgvPepMxX
z^jRD8?mCo_Xr1X+AQ&0t7n1&l2irk{)caqcm<1bDj^k2Q_z5MNUue&s8(EeGf~;Iv
zdep?w>ybd)u?0i+3T4onlAAEE;ug((`Y4U)PNPcYui5p$4b0O;*_8jOv?fcNZ{ZHy
zKuU@-djXH)IGD>B7!ajxTh2B(D+lUW#lzFm<;`I-Y{%0I$z^_hDCDsyux5YQvw07f
zZd8tD0&^uLmuOQk`#dLNEUVVFcO1J!(>Dhv8X*ciZW-hA;d)}`vMPN585@-Tk~z9i
zqpm)8r8yiARnLHTxq3wb`8e8QW~baAfv$NKwY*AQaGEM_Z)?MG2=4vfM7zoisHT}7
z4b3^XV3rJROX?~kF2U^D3Kh@@XShwr=vQsp)lyf_s+|k*atHXp0w`14NT`ZFYILyX
z{o9nVR08^_k07=*U9V8S;T+#14rWMYyeeJvgPCF92v?bf6{mL<DurYqTsdxNXHb=q
z&`zf3NVc1~n~th-0cZ{rIX@(wmVSC?3e{SzSd$JR<QRcwW+qj2u60u`!N!MMu>qi;
z3=mPzXw+!m7baM(OiVS*wCbaFe~a@+_}}Uk<40s1AWRPgleEnZtaU3@5S2_Ez<a4V
zVwR|=IFu>106<vcY}ApFp5BFrfJPdPYfp9*@g|9;Pskw*oWaWbOztbDj4&H?oT(Pd
zkUUG%cfU4pa+Jv-B>gX8aetta{F(LcGDTgyuE9FloZM||2P%};7Z%d2DwLN4fuL@m
zfkx`(TS{TMDwJ`R){98_2)ymE&@LNAXZ0fMa<Qw$rd=55L{qS9R$Zw3?}b{KK@gOK
zc>dB}o>9qae13Ja>*P(o*s_wEKps|Aikv{~^dPH(T%wN^tgTJt=}2Dcf7>y`YqUbi
zr+_z)$(dkhaiY4~Hy?BN_<&(J4};%9RNRW=CuWRkztkEBjD@2vbp8^R1Or-)q|dM?
zBu`IINABF{U3^4;jA`$XL~#A`$lK!hpRuq0<RxT6DSoNDL0?Pa@hmMglkJ4GG7aNO
zBbOQnzs)OR^rb6}gIBJ^hod678o4uGvekXMC*Uq#7@)$_5D6E6b?T0s9~>_6To@&Y
z;0cx9<m#sfHSga0&k$Q%Z%R5$w|}2`GlFzzA9??@T|shnH|6j<HOMgEo3{RjBv_z1
zuPL|ASDbgPtgK83I|KSx7#?vbUux6}t%@gU_nL5c(?@-0II}uPm($wY0%nQ=$9__1
zLup~5-j48=HHPO(4o7d4v>Oc-+~ff+(<UW~;Mq51TIgtjev5sPir~UXV<7--T|K0_
z_@vk>jIG0fEr+LwjtTe*W1H1}QwjHC<-(8DEL3P6BU_AMPjcAuStG7wmCwG@hvJO}
ztxvfGse;whGHvb`e>{<MvO-xz6kz<OAI_-WM&#VHYyYg%O_wvj4sETFs%iIx7@7)I
z9j6YCV1<asJciUGtX6GCE8d;pr1VYI=qpovKgy5Wj2h^9>zDCVBp2rUv~bn_F>o(r
zwwS??=hPjgI-Esed2oJqS4r@a;khs8JY_A=^L#oItX?3>4@W^}RDI5B6m$YrWq=4r
zU&lf+7~ym)KEMo=F>v9YMVcGrx7iClXirF<#Stm>I;90s-Oq{GL{26u_>^h`n#QsF
zj2q{#bc=kO*PiswiBn&8yh0=P8L5QTG3db0g_-w&HnKtAp?nu<484r17vFE#eY{tC
z-`Vm#JPqWI*r4!;J_v|H!cmuXH_K7hfWvpxPCWKE;Qs#p4pTAtdUdMKbU;1DA(LJq
zAEx0X&!{oG#hu>l#ZUC6!c@T#ERgo#>pIl7eJo6z8&|2s%hE!>7r!W0?jz9UlqJ}V
z<ms#iibO*V#GOHkGn~=hslQk`f%t0YH$5E_sIWEupj&v4tH##vt+lXvLjUI+GOq|H
z)wi_fZm-*PJ!1D}5cHTLjbuGBMvh$Bg&x@>cEp{X-*5!xqL;F5OiuPNB22fbf-{*Q
z8MA?&aQ5SdIxU~V(i80%hfL0$HWdOqo`f(67Z=^LNG$>0N|o+DoZa*qr=5IMKO+z|
znls9)-(MGP{KE)!*DSI17#&4=9&eu_>3)~z7tTs5OUM~B?_6uy<))JD)un!eku&z!
zGriV)?5j!m{Yg<k`Xr<Uw)jpPDg8DZ-y`1*MpW1w0}qr<sy3yhY^I?w+2UVcg!P3Q
zs=NYtu1fjo&{9dVLgHt5PObNVTr?Q($Z21Cj9wUyYp!`H>UvLqfv7Hp^{-5j9runh
zUw)m!S7F6CfLT>tJt-+E?~O9nC>w8JAsJ=J5=()6ACAgVZz`gXx~`ro*)wVK$xX*D
z*0YHQj9n{wHq@HAJ+A|k_mToyf!!RHm^1ku9UYxHC~;N$qwy?)XWjc<-$sH$N({e}
zoXmp$rvHTa#$h^+o|-DEZBYlzaccd?MSQ^V-NkcY${F(?+Z}aEv*{G0xYq8!4x0nl
zX3}D+qzYzI@e66dg&l3;{^R0kH#q!gl0R~jRG8m+tOs$)-&Fa6TAnQSe?2$a(KDok
zAP@MO#3G&_3l?jfN%48~J0N~cEZM3*IaX}vl)D&z=@%D0-8IwdO~^hr%F=o8X`(Ob
zdJ`;RU&<-<zF%v<XVt)R&6yG%4Uyah*)RUp^TR0>rJ1dh52seiU$63IBg`TgsW7@9
z4Ml|g-C1{O@>ix5qr_z$Z_WFVtal&7luZ&k<y=x@cX;CowP7*jqK+HUc8Hp+9D0Ms
ztliU835@gUcv5Qmn24#-^nsq$pUJ$3yU6zgv%;#)oTAT7s5WbmyZ3)%1dzRx^P@}Y
zG*AA8;D*5;-lUh~muxS*F<TDxm)F@f#uSmK=ia4Eod|)FSBp~b8Y=N>p0lzm&29GU
zT^@Ds(Wh2+Z7?S%!n?S<5{hFcQ!@G1d5YzBEizj=Fm~TjAtqb_c9#Bp?K|2F+=6~7
z>3Nrm<(G0k&ZSO0O}H6(MImxwp3`XNfPeF;Tlc>IyC$?QwQ}|n8-hy?0l6HuLl@g4
z7Bs9rTCfDos3_u4&?K*<lRkVJTPv7w?se8#c=w@S!fK$<P}<y3#HC3gLq4}a&wKgS
zFNcAGJiSRIo)>W)-QE#jq5Zjar}`?4O1v+fB;N6v|Lx-#S8iN>u9yFuh-~9ruI0d)
zeszg2h`i=8w{9B0k4ANOnR*OUs;rGfo=gV1@on6VXRw7*8IMoYEShXxx7tHI(3G2R
z^{~jd!sTzF4|<c8dVEMl3zF{Y&IHNHUX$Rr3e%cxp|F|qsPD|ahHrH)9_zg+YCY1?
zR<t0|X2c`{p?YQbI>uD`OG~@djufj|zFgL}@KbuvPOseW{kijUT%=tSNFbsLnH-dH
zoe)1iEMqsus;+L?SNr(=Tu^TK;N8$WgeI?q0Liw^wu1gtXww6-gzVC?1@hK{X{;Qr
zEoc6&y&Q5{ZDcK`$8&oxvwXwbeT@Zp-uUl4uaw;J3Su1%EBs1B$3-<=Ts7nm`(EVE
zL@)*$9;#9Y=Md9nV6z9u#<h-7T`A&Zj~fD+cxA(D=O~sD?0EttW<j=t5=Q-(3*fjY
zaRM-#e_#CL`OzEyd`<!UCnDizm^*QlS_yPjyg<?75%?=D%wM(${Lp{B_#ap=B`o{D
z&HTSwHx-<CTb=VgCH)4AKS^QdTlqhp|C{1}hv*3KzvGBg5%#H-vegIuc``KoEf6ML
z;NQaf$HhOTLXqSDk?Owz|0m)t7)}$=LV^^Mu8JJPDN`sA_{;x%@Bf3qKRFdHS|7bt
z^G7C#4?j?9>z-d2WOcFQ;*{^FI~&|oR9}LHi+=X^PyCDvL%smsT^70MsJ3@+HAd<@
ztZG|?wP6G2TnM7HAgfVFwUm`R+1qB>;%2{h51qt1<dzov`r<42lwi&NLAUfj{nViQ
z7=H^Su;3nbBSAWvX{mPX&dw&@7-Oqg+oss{eM>7$`S$05A4@MMyByETTc^yN6ML=s
z327ZvAZH?_k?(?{wiZ}-xzBgau8?zg?vs!pvx~&tY>yeB>TyE(HK$k)dOI419BNCS
z;FI)G!VCGy#llg&IhEkoMFek!d?XUJeo<57Icl=W{e^8)jAqIVp~0^|iCXUAdHy)R
z?mtbL?YeC2CeZu$hcNxodHpAdG$7q(S-ltb;)Sg5%IAdP(Iod8PsjbhPI#B2v`GoA
z=A$^fp;_I+n!rzJWBxviYte!$Q9)(7>$bBiDQod4Q}vY>vI4r4(JXe8_w%yNEcKq8
zEi}3#n3KdC;CTVJupSRlT<|+wkYY5rC;9r5zAa?uyE2r4irv>av*=D{{STGRtR;lw
zVc;l4o>Fw7kuZpryRIXIt3HlEcn2tA0+oIq^Zli(*Zs@PEmn)m3TlpQ!RGUC?{bOB
zlLhIi#&xI8T}|gd*s|}amlqg|dXa1tSA9Cjcg7&DG_P@b`)Oehv|;tdVAKmU#q}m8
zTr~oE4yv6ZZ@?`qhr8X_z$CVj7pOVDr56H(akI<fQP8y5D0{3@@<ifjLetnmkLk1D
zX&gcOUYxZ%J^ssI^S@|LDv)F21>BZCoVgKuHFeLX%Kx6T&wQy&!*q+o@lkJZg%DW?
zSS%nV`(j?aDEFERI*tsQXW>@=5Hb-VsE`ce$JWkCovf|;9$)!`glXKc;w}uOf!b<K
zEFK)iM~&^RkTuPpU7lEB709dNDa1jBG!@x4pH1envsT+qFPL%2p1eJ$>p9o`^~IeC
zBC)$6kscZ0^!()uM>=4`?@n9TUPE4-Vz=^>ZRprj;nY#A;wAgLD5PvvV|_MlWquT!
z{OE7ukCyM)4AM^7Bb6gbww_ZV-i@voQHQ0=rre(ktDl2(0qqajV*uZ@sDYQI#s&BG
zOFPA>tpXheRpi3;L4345`o%(__xgh8#K3{DjkC~1bHW`wK90QjgQa$PZqR>YOo0AX
z_N?oJ*(!zEgCc1wMKf;Wd#>*49nU6{*yEbQ-2LHux_VNd)APOohxgn%zi>d$)4f5H
z@80rImj2%N@A%~!9lqGBd^Kks6mh3J4z>BbpDp^CAB<R$%Je_Q3v{gdOqC8aW?rq8
zT|@YpU2aw^z5f$)>V8G3_gRx4*!*fG0nu14=rAEwU}{%Vi6x1e(jCIms9O`3BlYke
zr@uct*>}<SxBs<v`BF&qg2QA?th9jT&&fvCK=JMk<d5|Q_JMrO;nA3$+I6Dr?tU@5
z`|dCOh@gbm;sg?Q8p~R9S(|{gA{N!?#`%e=cUApMtwu?E@2x>uQ$$;0I^oH`X4)1s
zKFT39%?F=lug^GIP*>VE=d{n<S2(;UG0QmI(2_K;qILY@((YU7dOP3_xu-r4jP&Lx
zt@^BWRZb%EwU%4RE?y;SBWHaNHujBPMs1II<Mhodks?dOFMNnvv6?(j6w2D|vN}e1
zXF3A1$Oq~8?@ReBgXttvLKcU!$-L;`rn}5x(7{Mh31^kH8s?|JXyCxkAvWs+ZHbsm
zO)p~k>&AXt6H+E?#BZlP#*Sq2?3U{7g;QhI7t(Eo<YXj^V(`BVi>ayJ>CTs{u8~p?
z-~1dsOf&YM;J;YC_vD9AzMA>h?!BSWm=YYMu=sTL>R4rE+~HDw(*rR@u4ST?;Irt}
znVQppLp-7qH9AIq7NfG6I5aw;9JkT($Dw8!`{L&$mQ}h*7ksLuR#T0SwF+0O{#gme
z{BCKzew$0cE?Y>}#qB_6Y_dr9UGe7L_RJ<(=%WTw>B4%c>~95LixHbRoalwofIjjP
zaF@Xs>^1^PTl-dfjw8M^gys1#)&^Fxi;VxD5>R-vTU=Jgi^rF#{fO#v{Jor}w6A8)
zs~?o2v`MOw!}(f`uD+}KLEco<OyH4)D7uN<!W1Ok<~v#6kd0qba!mUvpq;wC%zg8-
zz`C|%!uqD!z2kaW?iVY_kGb}%JKp;(iMb&hW3}DO;EzCI{-V1rbX2p8unrUtrL|aM
zMSIwp#UGPsP&`s|wlD}<9ni2ydf{_Jpwv{U61zJLzHKWn(z|go2o8iW)#kaQ8JLbc
zt-nd)3rG{txrGf4z#4AN1gQHp7uDdg9J(AV_gu^sZIb9;Rde^!K_6#=`KP4Hut$1D
zzF%?qIhN5!K3d)iLvoGQA3b!Jr1eT&3);?f$GMfd)o!)*ukiEoK{t>e($Xu%^hUQw
z&Q<I_V&UV^7iC^#ZCyH}AGcoO=q0V{l{Z~SrbJosUBc(DrZ^$$O3S*2N85Myhul-6
zU&t@jl1J|h)sc3Wf()Fuy_3qw3#oi%Vz9*}w=&D~QSF{*o#S@sk!P8GF-AWevh_Ui
z`2FPWKU4b>48Y?LKTb8aVju8Enog$pGp)bCkNttmZ&v4%#sc?~-D3|A^7Hvd0>9&J
zf4@T!2ov%Bf+nrrGw34Xg#`amq|dMZ$jJAXz(Q5GUgWC#EAqjNQvS$>eYHZ2K!b&Q
z)y1Wn84K+F0zAUsy^I}v^3#7Lfb7qh3fKc@nAFtzKP=tgHQ(~K3-0YZbQw2(?$R6l
z+Qm5h+Bv8DGGIdLQ#jnu2Rf-4%jZ6NFj}jj_5*xIR3KJEev=UNxNmrq>p80W>A*yz
z<kiU(O@Z!qXD5rV3j?v+Ow?50ipu>ICla`JZZ|CT<;ES3X@9XGL?x4=)@vMXGe&33
zaC0`rA5z8o4#IPBw8c_m3o>MKtV?^D_vk?W2J5j@x~Ij}iVKOm<VvS8*QY^y*x{WA
z#MQu=drt*bk)I$?o{ol%h?c^Dv})=o-GcnV<Ig)h)fcUozLnUdxlE1LK8}e^@I4e=
zA-ec46AFuh#$U*uV)s?E&4NHzR@om~;oO0>6z(bY_*<O{D_?jF!aAzE>e^~~s_@YN
E1zx2-i2wiq

diff --git a/vendor/pip-1.2.1/docs/_theme/nature/static/nature.css_t b/vendor/pip-1.2.1/docs/_theme/nature/static/nature.css_t
deleted file mode 100644
index c144c225..00000000
--- a/vendor/pip-1.2.1/docs/_theme/nature/static/nature.css_t
+++ /dev/null
@@ -1,237 +0,0 @@
-/**
- * Sphinx stylesheet -- default theme
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- */
- 
-@import url("basic.css");
- 
-/* -- page layout ----------------------------------------------------------- */
- 
-body {
-    font-family: Arial, sans-serif;
-    font-size: 100%;
-    background-color: #111111;
-    color: #555555;
-    margin: 0;
-    padding: 0;
-}
-
-div.documentwrapper {
-    float: left;
-    width: 100%;
-}
-
-div.bodywrapper {
-    margin: 0 0 0 300px;
-}
-
-hr{
-    border: 1px solid #B1B4B6;
-}
- 
-div.document {
-    background-color: #fafafa;
-}
- 
-div.body {
-    background-color: #ffffff;
-    color: #3E4349;
-    padding: 1em 30px 30px 30px;
-    font-size: 0.9em;
-}
- 
-div.footer {
-    color: #555;
-    width: 100%;
-    padding: 13px 0;
-    text-align: center;
-    font-size: 75%;
-}
- 
-div.footer a {
-    color: #444444;
-}
- 
-div.related {
-    background-color: #6BA81E;
-    line-height: 36px;
-    color: #ffffff;
-    text-shadow: 0px 1px 0 #444444;
-    font-size: 1.1em;
-}
- 
-div.related a {
-    color: #E2F3CC;
-}
-
-div.related .right {
-    font-size: 0.9em;
-}
-
-div.sphinxsidebar {
-    font-size: 0.9em;
-    line-height: 1.5em;
-    width: 300px
-}
-
-div.sphinxsidebarwrapper{
-    padding: 20px 0;
-}
- 
-div.sphinxsidebar h3,
-div.sphinxsidebar h4 {
-    font-family: Arial, sans-serif;
-    color: #222222;
-    font-size: 1.2em;
-    font-weight: bold;
-    margin: 0;
-    padding: 5px 10px;
-    text-shadow: 1px 1px 0 white
-}
-
-div.sphinxsidebar h3 a {
-    color: #444444;
-}
-
-div.sphinxsidebar p {
-    color: #888888;
-    padding: 5px 20px;
-    margin: 0.5em 0px;
-}
- 
-div.sphinxsidebar p.topless {
-}
- 
-div.sphinxsidebar ul {
-    margin: 10px 10px 10px 20px;
-    padding: 0;
-    color: #000000;
-}
- 
-div.sphinxsidebar a {
-    color: #444444;
-}
-
-div.sphinxsidebar a:hover {
-    color: #E32E00;
-}
-
-div.sphinxsidebar input {
-    border: 1px solid #cccccc;
-    font-family: sans-serif;
-    font-size: 1.1em;
-    padding: 0.15em 0.3em;
-}
-
-div.sphinxsidebar input[type=text]{
-    margin-left: 20px;
-}
- 
-/* -- body styles ----------------------------------------------------------- */
- 
-a {
-    color: #005B81;
-    text-decoration: none;
-}
- 
-a:hover {
-    color: #E32E00;
-}
- 
-div.body h1,
-div.body h2,
-div.body h3,
-div.body h4,
-div.body h5,
-div.body h6 {
-    font-family: Arial, sans-serif;
-    font-weight: normal;
-    color: #212224;
-    margin: 30px 0px 10px 0px;
-    padding: 5px 0 5px 0px;
-    text-shadow: 0px 1px 0 white;
-    border-bottom: 1px solid #C8D5E3;
-}
- 
-div.body h1 { margin-top: 0; font-size: 200%; }
-div.body h2 { font-size: 150%; }
-div.body h3 { font-size: 120%; }
-div.body h4 { font-size: 110%; }
-div.body h5 { font-size: 100%; }
-div.body h6 { font-size: 100%; }
- 
-a.headerlink {
-    color: #c60f0f;
-    font-size: 0.8em;
-    padding: 0 4px 0 4px;
-    text-decoration: none;
-}
- 
-a.headerlink:hover {
-    background-color: #c60f0f;
-    color: white;
-}
- 
-div.body p, div.body dd, div.body li {
-    line-height: 1.8em;
-}
- 
-div.admonition p.admonition-title + p {
-    display: inline;
-}
-
-div.highlight{
-    background-color: white;
-}
-
-div.note {
-    background-color: #eeeeee;
-    border: 1px solid #cccccc;
-}
- 
-div.seealso {
-    background-color: #ffffcc;
-    border: 1px solid #ffff66;
-}
- 
-div.topic {
-    background-color: #fafafa;
-    border-width: 0;
-}
- 
-div.warning {
-    background-color: #ffe4e4;
-    border: 1px solid #ff6666;
-}
- 
-p.admonition-title {
-    display: inline;
-}
- 
-p.admonition-title:after {
-    content: ":";
-}
- 
-pre {
-    padding: 10px;
-    background-color: #fafafa;
-    color: #222222;
-    line-height: 1.5em;
-    font-size: 1.1em;
-    margin: 1.5em 0 1.5em 0;
-    -webkit-box-shadow: 0px 0px 4px #d8d8d8;
-    -moz-box-shadow: 0px 0px 4px #d8d8d8;
-    box-shadow: 0px 0px 4px #d8d8d8;
-}
- 
-tt {
-    color: #222222;
-    padding: 1px 2px;
-    font-size: 1.2em;
-    font-family: monospace;
-}
-
-#table-of-contents ul {
-    padding-left: 2em;
-}
-
diff --git a/vendor/pip-1.2.1/docs/_theme/nature/static/pygments.css b/vendor/pip-1.2.1/docs/_theme/nature/static/pygments.css
deleted file mode 100644
index 652b7612..00000000
--- a/vendor/pip-1.2.1/docs/_theme/nature/static/pygments.css
+++ /dev/null
@@ -1,54 +0,0 @@
-.c { color: #999988; font-style: italic } /* Comment */
-.k { font-weight: bold } /* Keyword */
-.o { font-weight: bold } /* Operator */
-.cm { color: #999988; font-style: italic } /* Comment.Multiline */
-.cp { color: #999999; font-weight: bold } /* Comment.preproc */
-.c1 { color: #999988; font-style: italic } /* Comment.Single */
-.gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
-.ge { font-style: italic } /* Generic.Emph */
-.gr { color: #aa0000 } /* Generic.Error */
-.gh { color: #999999 } /* Generic.Heading */
-.gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
-.go { color: #111 } /* Generic.Output */
-.gp { color: #555555 } /* Generic.Prompt */
-.gs { font-weight: bold } /* Generic.Strong */
-.gu { color: #aaaaaa } /* Generic.Subheading */
-.gt { color: #aa0000 } /* Generic.Traceback */
-.kc { font-weight: bold } /* Keyword.Constant */
-.kd { font-weight: bold } /* Keyword.Declaration */
-.kp { font-weight: bold } /* Keyword.Pseudo */
-.kr { font-weight: bold } /* Keyword.Reserved */
-.kt { color: #445588; font-weight: bold } /* Keyword.Type */
-.m { color: #009999 } /* Literal.Number */
-.s { color: #bb8844 } /* Literal.String */
-.na { color: #008080 } /* Name.Attribute */
-.nb { color: #999999 } /* Name.Builtin */
-.nc { color: #445588; font-weight: bold } /* Name.Class */
-.no { color: #ff99ff } /* Name.Constant */
-.ni { color: #800080 } /* Name.Entity */
-.ne { color: #990000; font-weight: bold } /* Name.Exception */
-.nf { color: #990000; font-weight: bold } /* Name.Function */
-.nn { color: #555555 } /* Name.Namespace */
-.nt { color: #000080 } /* Name.Tag */
-.nv { color: purple } /* Name.Variable */
-.ow { font-weight: bold } /* Operator.Word */
-.mf { color: #009999 } /* Literal.Number.Float */
-.mh { color: #009999 } /* Literal.Number.Hex */
-.mi { color: #009999 } /* Literal.Number.Integer */
-.mo { color: #009999 } /* Literal.Number.Oct */
-.sb { color: #bb8844 } /* Literal.String.Backtick */
-.sc { color: #bb8844 } /* Literal.String.Char */
-.sd { color: #bb8844 } /* Literal.String.Doc */
-.s2 { color: #bb8844 } /* Literal.String.Double */
-.se { color: #bb8844 } /* Literal.String.Escape */
-.sh { color: #bb8844 } /* Literal.String.Heredoc */
-.si { color: #bb8844 } /* Literal.String.Interpol */
-.sx { color: #bb8844 } /* Literal.String.Other */
-.sr { color: #808000 } /* Literal.String.Regex */
-.s1 { color: #bb8844 } /* Literal.String.Single */
-.ss { color: #bb8844 } /* Literal.String.Symbol */
-.bp { color: #999999 } /* Name.Builtin.Pseudo */
-.vc { color: #ff99ff } /* Name.Variable.Class */
-.vg { color: #ff99ff } /* Name.Variable.Global */
-.vi { color: #ff99ff } /* Name.Variable.Instance */
-.il { color: #009999 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/vendor/pip-1.2.1/docs/_theme/nature/theme.conf b/vendor/pip-1.2.1/docs/_theme/nature/theme.conf
deleted file mode 100644
index 1cc40044..00000000
--- a/vendor/pip-1.2.1/docs/_theme/nature/theme.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-[theme]
-inherit = basic
-stylesheet = nature.css
-pygments_style = tango
diff --git a/vendor/pip-1.2.1/docs/ci-server-step-by-step.txt b/vendor/pip-1.2.1/docs/ci-server-step-by-step.txt
deleted file mode 100644
index 0d0f6629..00000000
--- a/vendor/pip-1.2.1/docs/ci-server-step-by-step.txt
+++ /dev/null
@@ -1,252 +0,0 @@
-==========================================
-Hudson CI server installation step by step
-==========================================
-
-Why Hudson
-==========
-
-One of the advantages of `Hudson <hudson-ci.org/>`_ over 
-`Buildbot <http://buildbot.net/>`_, for instance, is that
-almost everything is done via its web interface. So anyone can
-manage the continuous integration server easily.
-Another advantage over the other alternatives is Hudson has many
-`available plugins <http://wiki.hudson-ci.org/display/HUDSON/Plugins>`_,
-so you don't need to write your own.
-
-Hudson runs on Java, so the next step is to install Java and its dependencies.
-
-
-Java and its dependencies
-=========================
-
-You can install all Java related packages this [not recommended] way::
-
-    $ [sudo] apt-get install ca-certificates-java daemon default-jre\
-    > default-jre-headless gcj-4.4-base gcj-4.4-jre-headless gcj-4.4-jre-lib\
-    > icedtea-6-jre-cacao java-common libaccess-bridge-java\
-    > libaccess-bridge-java-jni libgcj-common libgcj10 libjline-java \
-    > openjdk-6-jre openjdk-6-jre-headless openjdk-6-jre-lib\
-    > rhino tzdata-java tzdata
-    
-
-Or try installing with the information in the next section and
-if you have problems, run::
-    
-    $ [sudo] apt-get install -f
-
-
-
-
-Installation
-============
-
-The recommended installation from `Hudson site for Debian users
-<http://hudson-ci.org/debian/>`_ is installing through the `.deb` package.
-The advantages are: you can automatically upgrade hudson via apt and
-use the `service` or `/etc/init.d` resource to start the daemon on boot.
-
-To install Hudson as they recommend, do the following:
-
-* Add the key to your system::
-    
-    $ wget -O /tmp/key http://hudson-ci.org/debian/hudson-ci.org.key
-    $ [sudo] apt-key add /tmp/key
-
-
-* Then install Hudson::
-
-    $ wget -O /tmp/hudson.deb http://hudson-ci.org/latest/debian/hudson.deb
-    $ [sudo] dpkg --install /tmp/hudson.deb
-
-
-When you reboot the computer the web daemon will be started at
-http://localhost:8080. If you don't want to reboot the computer, run::
-
-    $ [sudo] service hudson start
-    or
-    $ [sudo] /etc/init.d/hudson start
-
-
-
-
-Apache
-======
-
-It is not necessary for all users, but if you want to set up apache to run
-the web interface, you should follow this tutorial:
-http://wiki.hudson-ci.org/display/HUDSON/Running+Hudson+behind+Apache
-
-
-Plugins
-=======
-
-Installing plugins in Hudson is very easy.
-Just click *Manage Hudson*, then *Manage Plugins*.
-The tab *Updates* shows all available updates to installed plugins.
-But what we need now is to install plugins. So we must go to the
-*Available* tab and check what we want to be installed and then press the
-*Install* button in the end of the page.
-
-The Hudson server hosted at http://ci.cloudsilverlining.org has the following
-plugins installed for pip project:
-
-* Hudson IRC Plugin
-* Green Balls
-* Hudson Continuous Integration game
-* Hudson instant-messaging plugin
-* Hudson Jabber notifier plugin
-* Hudson Email Extension Plugin
-* Hudson Mercurial plugin
-
-
-Creating a Job
-==============
-
-Before Creating a Job for pip
------------------------------
-
-Hudson manages "jobs". Jobs are complete builds to Hudson. For instance,
-you want to build pip project and run its tests with nosetests.
-This section  assumes you have all needed `dependencies installed`_.
-
-You need to set up some configuration in Hudson before creating your first job.
-Go to Hudson home page, "Manage Hudson", then "Configure System".
-
-In the Mercurial section, fill the "Add Mercurial" section with:
-
-* Name: `hg`
-* Installation directory: `/usr`
-* Executable: `INSTALLATION/bin/hg`
-
-In the Shell section fill the shell executable with `/bin/bash`.
-
-Then press the "Save" button in the bottom of the page.
-
-
-    
-    
-Configuring a Job Step by Step
-------------------------------
-
-* Go to the home of the Hudson web interface
-* Click *New Job*
-* Pick a name for the job - pip, for instance
-* Mark the option "Build a free-style software project"
-* Press "OK" button
-
-Now you were redirected to the job's configuration page. Here you will
-tell Hudson how it will build your job. The most important
-steps are listed (assume Mercurial plugin is installed):
-
-* Check "Mercurial" in Source Control Management section
-* Fill in the repository URL with **https://github.com/pypa/pip**
-* Mark "Build periodically" in *Build Triggers* section
-* Add "0 0 \* \* \*" (without quotes) to tell hudson you want to
-  run your build everyday at midnight
-* Click "Add Build Step" in the *Build* section and pick "Execute Shell"
-
-This box will contain all code you want your build run. To run pip's tests
-we need to install pip tests's depencies and run nosetests.
-Add the following lines to the box (it assumes you have virtualenv
-in your system's python)::
-
-    python -mvirtualenv --no-site-packages pip_virtualenv
-    source pip_virtualenv/bin/activate
-    cd $WORKSPACE/..
-    easy_install -U pip
-    cd $WORKSPACE
-    pip install virtualenv scripttest nose
-    nosetests tests -v
-    
-The *$WORKSPACE* environment variable is the current build workspace,
-in the case above it is the clone repository path. The `cd` stuff is
-a work around to a pip's bug.
-
-The process execute above means:
-
-* create a virtualenv called **pip_virtualenv** without shared site-packages
-* activate the environment
-* updates system's pip
-* install pip tests's dependencies
-* run nosetests in the current directory
-
-
-Press the "Save" button and in the next page test if the build is correct
-by clicking "Build now" button.
-
-In the left sidebar will appear the run builds and the running (if exists).
-Click the top build, then "Console Output". Now you can
-watch what Hudson is doing to build your job and watch the results.
-
-
-
-
-Notes
-=====
-
-If you change anything in your system environment, like updating
-your environment configuration files, and realize Hudson
-didn't catch your changes, try restarting it::
-
-    $ [sudo] service hudson stop
-    $ [sudo] service hudson start
-    
-If when you run the `start` command you get an error telling you the port
-is being used, wait about 2 or 3 seconds and try the command again - it's the
-time the port releasing may take.
-
-What is covered here is the basic knowledge to start setting up and using
-a Hudson server, the goal is not teaching all about Hudson or all about
-how to set up every detail.
-
-There is a running Hudson server aimed for pip project here:
-http://ci.cloudsilverlining.org/view/pip
-
-
-Creating a Windows Slave to Run Jobs
-====================================
-
-After starting Hudson on Linux, start your Windows machine and access the
-Hudson web interface.
-
-Adding a Windows Node to Hudson CI Server
------------------------------------------
-
-Click "Manage Hudson", "Manage Nodes", "New Node". The **Node name** value
-must be the Windows machine domain name - mywindowsslave.myhost.com, for
-instance.
-
-The "Launch method" should be **Launch slave agents via JNLP**
-
-.. image:: _static/launch-jnlp-slave.JPG
-   :width: 500px
-   :target: _static/launch-jnlp-slave.JPG
-
-Then press the **Add** button, and in the next page click
-the **Launch** icon.
-
-.. image:: _static/slave-launch-icon.png
-   :width: 500px
-   :target: _static/launch-jnlp-slave.JPG
-
-Now you are able to create jobs tied to this Windows machine.
-
-
-Creating Tied Jobs
-------------------
-
-The process of creating a job is almost the same as the list in the
-`Creating a Job`_ section, the only difference is that you need
-to mark the **Tie this project to a node** option and select what
-node you want to run that build.
-
-There is a difference in build commands, relying on variables. On Linux
-they all start with `$`, like `$WORKSPACE`.
-In Windows they will be enclosed by `%`,  like `%WORKSPACE%`. And everything
-you were doing depending on Bash, you will need to change to DOS
-prompt commands and batch files.
-
-
-
-.. _dependencies installed: running-tests.html#system-requirements
-.. _creating a job: #creating-a-job
diff --git a/vendor/pip-1.2.1/docs/conf.py b/vendor/pip-1.2.1/docs/conf.py
deleted file mode 100644
index 7dd29dc8..00000000
--- a/vendor/pip-1.2.1/docs/conf.py
+++ /dev/null
@@ -1,195 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# pip documentation build configuration file, created by
-# sphinx-quickstart on Tue Apr 22 22:08:49 2008
-#
-# This file is execfile()d with the current directory set to its containing dir.
-#
-# Note that not all possible configuration values are present in this
-# autogenerated file.
-#
-# All configuration values have a default; values that are commented out
-# serve to show the default.
-
-import sys, os
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-#sys.path.append(os.path.abspath('.'))
-#sys.path.append(os.path.join(os.path.dirname(__file__), '../'))
-
-# -- General configuration -----------------------------------------------------
-
-# Add any Sphinx extension module names here, as strings. They can be extensions
-# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-#extensions = ['sphinx.ext.autodoc']
-extensions = []
-
-# Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
-
-# The suffix of source filenames.
-source_suffix = '.txt'
-
-# The encoding of source files.
-#source_encoding = 'utf-8'
-
-# The master toctree document.
-master_doc = 'index'
-
-# General information about the project.
-project = 'pip'
-copyright = '2008-2011, The pip developers'
-
-# The version info for the project you're documenting, acts as replacement for
-# |version| and |release|, also used in various other places throughout the
-# built documents.
-#
-# The short X.Y version.
-release = "1.1"
-version = '.'.join(release.split('.')[:2])
-
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-#language = None
-
-# There are two options for replacing |today|: either, you set today to some
-# non-false value, then it is used:
-#today = ''
-# Else, today_fmt is used as the format for a strftime call.
-today_fmt = '%B %d, %Y'
-
-# List of documents that shouldn't be included in the build.
-#unused_docs = []
-
-# List of directories, relative to source directory, that shouldn't be searched
-# for source files.
-exclude_trees = ['build']
-
-# The reST default role (used for this markup: `text`) to use for all documents.
-#default_role = None
-
-# If true, '()' will be appended to :func: etc. cross-reference text.
-#add_function_parentheses = True
-
-# If true, the current module name will be prepended to all description
-# unit titles (such as .. function::).
-#add_module_names = True
-
-# If true, sectionauthor and moduleauthor directives will be shown in the
-# output. They are ignored by default.
-#show_authors = False
-
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
-
-# A list of ignored prefixes for module index sorting.
-#modindex_common_prefix = []
-
-
-# -- Options for HTML output ---------------------------------------------------
-
-# The theme to use for HTML and HTML Help pages.  Major themes that come with
-# Sphinx are currently 'default' and 'sphinxdoc'.
-html_theme = 'nature'
-
-# Theme options are theme-specific and customize the look and feel of a theme
-# further.  For a list of options available for each theme, see the
-# documentation.
-#html_theme_options = {}
-
-# Add any paths that contain custom themes here, relative to this directory.
-html_theme_path = ['_theme']
-
-# The name for this set of Sphinx documents.  If None, it defaults to
-# "<project> v<release> documentation".
-#html_title = None
-
-# A shorter title for the navigation bar.  Default is the same as html_title.
-#html_short_title = None
-
-# The name of an image file (relative to this directory) to place at the top
-# of the sidebar.
-#html_logo = '_static/piplogo.png'
-
-# The name of an image file (within the static path) to use as favicon of the
-# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
-# pixels large.
-#html_favicon = 'favicon.png'
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
-
-# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
-# using the given strftime format.
-html_last_updated_fmt = '%b %d, %Y'
-
-# If true, SmartyPants will be used to convert quotes and dashes to
-# typographically correct entities.
-html_use_smartypants = True
-
-# Custom sidebar templates, maps document names to template names.
-#html_sidebars = {}
-
-# Additional templates that should be rendered to pages, maps page names to
-# template names.
-#html_additional_pages = {}
-
-# If false, no module index is generated.
-html_use_modindex = False
-
-# If false, no index is generated.
-html_use_index = False
-
-# If true, the index is split into individual pages for each letter.
-#html_split_index = False
-
-# If true, links to the reST sources are added to the pages.
-html_show_sourcelink = False
-
-# If true, an OpenSearch description file will be output, and all pages will
-# contain a <link> tag referring to it.  The value of this option must be the
-# base URL from which the finished HTML is served.
-#html_use_opensearch = ''
-
-# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
-#html_file_suffix = ''
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = 'pipdocs'
-
-
-# -- Options for LaTeX output --------------------------------------------------
-
-# The paper size ('letter' or 'a4').
-#latex_paper_size = 'letter'
-
-# The font size ('10pt', '11pt' or '12pt').
-#latex_font_size = '10pt'
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title, author, documentclass [howto/manual]).
-latex_documents = [
-  ('index', 'pip.tex', u'pip Documentation',
-   u'The pip developers', 'manual'),
-]
-
-# The name of an image file (relative to this directory) to place at the top of
-# the title page.
-#latex_logo = None
-
-# For "manual" documents, if this is true, then toplevel headings are parts,
-# not chapters.
-#latex_use_parts = False
-
-# Additional stuff for the LaTeX preamble.
-#latex_preamble = ''
-
-# Documents to append as an appendix to all manuals.
-#latex_appendices = []
-
-# If false, no module index is generated.
-#latex_use_modindex = True
diff --git a/vendor/pip-1.2.1/docs/configuration.txt b/vendor/pip-1.2.1/docs/configuration.txt
deleted file mode 100644
index 35d0a347..00000000
--- a/vendor/pip-1.2.1/docs/configuration.txt
+++ /dev/null
@@ -1,141 +0,0 @@
-Configuration
-=============
-
-pip allows you to set its default options by using the following facilities,
-in the order of each item's importance:
-
-1. Command line options
-
-2. `Environment variables`_
-
-3. `Config files`_
-
-   1. Command specific section, e.g. ``[install]``
-   2. Global section ``[global]``
-
-That means it will check each of those configuration sources and set the
-defaults appropriately.
-
-Examples
---------
-
-- ``--host=foo`` overrides ``PIP_HOST=foo``
-- ``PIP_HOST=foo`` overrides a config file with ``[global] host = foo``
-- A command specific section in the config file ``[<command>] host = bar``
-  overrides the option with same name in the ``[global]`` config file section
-- Environment variables override config files
-
-Config files
-------------
-
-pip allows you to set all command line option defaults in a standard ini
-style config file.
-
-The names of the settings are derived from the long command line option, e.g.
-if you want to use a different package index (``--index-url``) and set the
-HTTP timeout (``--default-timeout``) to 60 seconds your config file would
-look like this:
-
-.. code-block:: ini
-
-    [global]
-    timeout = 60
-    index-url = http://download.zope.org/ppix
-
-Each subcommand can be configured optionally in its own section so that every
-global setting with the same name will be overridden; e.g. decreasing the
-``timeout`` to ``10`` seconds when running the `freeze`
-(`Freezing Requirements <./#freezing-requirements>`_) command and using
-``60`` seconds for all other commands is possible with:
-
-.. code-block:: ini
-
-    [global]
-    timeout = 60
-    
-    [freeze]
-    timeout = 10
-
-Boolean options like ``--ignore-installed`` or ``--no-dependencies`` can be
-set like this:
-
-.. code-block:: ini
-
-    [install]
-    ignore-installed = true
-    no-dependencies = yes
-
-Appending options like ``--find-links`` can be written on multiple lines:
-
-.. code-block:: ini
-
-    [global]
-    find-links =
-        http://download.example.com
-
-    [install]
-    find-links =
-        http://mirror1.example.com
-        http://mirror2.example.com
-
-Location
-********
-
-The names and locations of the configuration files vary slightly across
-platforms.
-
-On Unix and Mac OS X the configuration file is: :file:`$HOME/.pip/pip.conf`
-
-And on Windows, the configuration file is: :file:`%HOME%\\pip\\pip.ini`
-
-Environment variables
------------------------
-
-Just like with `config files`_, each of pip's command line options
-(long version, e.g. ``--find-links``) are automatically set by looking for
-environment variables with the name format ``PIP_<UPPER_NAME>``. That means
-the name of the command line options are capitalized and have dashes (``-``)
-replaced with underscores (``_``).
-
-For example, to redefine the default timeout you can also set an
-environment variable::
-
-    export PIP_DEFAULT_TIMEOUT=60
-    pip install ipython
-
-Which is the same as passing the option to pip directly::
-
-    pip --default-timeout=60 install ipython
-
-This also works for appending command line options, like ``--find-links``.
-Just leave an empty space between the passsed values, e.g.::
-
-    export PIP_FIND_LINKS="http://mirror1.example.com http://mirror2.example.com"
-
-is the same as calling::
-
-    pip install --find-links=http://mirror1.example.com --find-links=http://mirror2.example.com
-
-Configuration options
----------------------
-
-Mirror support
-**************
-
-The `PyPI mirroring infrastructure <http://pypi.python.org/mirrors>`_ as
-described in `PEP 381 <http://www.python.org/dev/peps/pep-0381/>`_ can be
-used by passing the ``--use-mirrors`` option to the install command.
-Alternatively, you can use the other ways to configure pip, e.g.::
-
-    $ export PIP_USE_MIRRORS=true
-
-If enabled, pip will automatically query the DNS entry of the mirror index URL
-to find the list of mirrors to use. In case you want to override this list,
-please use the ``--mirrors`` option of the install command, or add to your pip
-configuration file::
-
-    [install]
-    use-mirrors = true
-    mirrors =
-        http://d.pypi.python.org
-        http://b.pypi.python.org
diff --git a/vendor/pip-1.2.1/docs/contributing.txt b/vendor/pip-1.2.1/docs/contributing.txt
deleted file mode 100644
index c3d0c135..00000000
--- a/vendor/pip-1.2.1/docs/contributing.txt
+++ /dev/null
@@ -1,167 +0,0 @@
-=================
-How to contribute
-=================
-
-
-All kinds of contributions are welcome - code, tests, documentation,
-bug reports, ideas, etc.
-
-
-Release Schedule
-================
-
-Minor releases of pip (e.g. 1.1, 1.2, 1.3...) occur every four months
-(beginning with the release of pip 1.0 on April 4, 2011). Two weeks before a
-scheduled release, a new branch ``release/X.Y`` is created for release testing
-and preparation. This branch is only open to bugfixes.
-
-.. _contributing-with-code:
-
-Contributing with Code
-======================
-
-Forking through Github
-----------------------
-
-First of all, you need to fork the the official repository, which is
-https://github.com/pypa/pip.
-
-Log in to Github, go to the `pip repository page
-<https://github.com/pypa/pip>`_, follow the **fork** link, wait for Github
-to copy the repository and then clone your fork, like::
-
-    $ git clone https://github.com/YOU_USER_NAME/pip
-
-Now you can change whatever you want, commit, push to your fork and when your
-contribution is done, follow the **pull request** link and send us a request
-explaining what you did and why.
-
-Branches
---------
-
-Pip uses the `git-flow`_ branching model. The default branch on GitHub is
-``develop``, and all development work (new features and bugfixes) should happen
-in that branch. The ``master`` branch is stable, and reflects the last released
-state.
-
-.. _git-flow: http://nvie.com/posts/a-successful-git-branching-model/
-
-All tests should pass
----------------------
-
-Almost all changes to pip should be accompanied by automated tests -
-especially ones adding new behavior.
-
-`Nose`_ is used to find and run all tests. Take a look at :doc:`running-tests`
-to see what you need and how you should run the tests.
-
-Before sending us a pull request, please, be sure all tests pass.
-
-Supported Python versions
--------------------------
-
-Pip supports Python versions 2.4, 2.5, 2.6, 2.7, 3.1, and 3.2, from a single
-codebase (without use of 2to3 translation). Untested contributions frequently
-break Python 2.4 or 3.x compatibility. Please run the tests on at least 2.4 and
-3.2 and report your results when sending a pull request.
-
-Continuous Integration server
------------------------------
-
-We have a continuous integration server running all pip related tests at
-http://ci.cloudsilverlining.org/view/pip. But if you want to have your own,
-you can learn how to set up a Hudson CI server like that in the
-:doc:`ci-server-step-by-step` page.
-
-
-
-Running the Tests
-=================
-
-Pip uses some system tools - VCS related tools - in its tests, so you need to
-intall them (Linux)::
-
-    sudo apt-get install subversion bzr git-core mercurial
-
-Or downloading and installing `Subversion
-<http://subversion.apache.org/packages.html>`_, `Bazaar
-<http://wiki.bazaar.canonical.com/Download>`_, `Git
-<http://git-scm.com/download>`_ and `Mercurial
-<http://mercurial.selenic.com/downloads/>`_ manually.
-
-
-After all requirements (system and python) are installed,
-just run the following command::
-
-    $ python setup.py test
-
-Running tests directly with Nose
---------------------------------
-
-If you want to run only a selection of the tests, you'll need to run them
-directly with nose instead. Create a virtualenv, and install required
-packages::
-
-    pip install nose virtualenv scripttest mock
-
-Run nosetests::
-
-    nosetests
-
-Or select just a single test to run::
-
-    cd tests; nosetests test_upgrade.py:test_uninstall_rollback
-
-
-Troubleshooting
----------------
-
-Locale Warnings
-    There was a problem with locales configuration when running tests in a Hudson
-    CI Server that broke some tests. The problem was not with pip, but with
-    `locales` configuration. Hudson was not setting LANG environment variable
-    correctly, so the solution to fix it was changing default language to
-    en_US.UTF-8.
-    The following has been done in a Ubuntu Server 9.10 machine::
-
-        $ sudo locale-gen en_US en_US.UTF-8
-        $ sudo dpkg-reconfigure locales
-        $ sudo update-locale LANG=en_US.UTF-8
-
-
-
-Contributing with Tests
-=======================
-
-Pip's test coverage is not as good as we would like, so contributions of
-additional tests are welcome. You can contribute these the same way you would
-contribute any other kind of code: see the :ref:`contributing-with-code`
-section.
-
-
-Contributing with Bug Reports
-=============================
-
-Pip project is hosted at `Github`_ and uses its issue tracker system.
-
-If you have found a bug and want to report it, go to `pip issue tracker page`_,
-click **Create new**, add a descriptive
-title (so we can easily identify what the bug is) and fill the description box
-explaining how you got the bug, what pip version you were using and what is
-your operating system, so we can reproduce the bug to try fixing it.
-
-
-
-Contributing with Ideas
-=======================
-
-We are always open to new ideas, and we will enjoy yours. You can send
-enhancement ideas and proposals via `pip issue tracker page`_,
-`virtualenv mailing list`_, or #pip channel at freenode.
-
-
-
-.. _nose:  http://somethingaboutorange.com/mrl/projects/nose/0.11.3/
-.. _Github: http://github.com/
-.. _pip issue tracker page: https://github.com/pypa/pip/issues
-.. _virtualenv mailing list: http://groups.google.com/group/python-virtualenv/
diff --git a/vendor/pip-1.2.1/docs/glossary.txt b/vendor/pip-1.2.1/docs/glossary.txt
deleted file mode 100644
index c9decea5..00000000
--- a/vendor/pip-1.2.1/docs/glossary.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-========
-Glossary
-========
-
-.. glossary::
-
-    PyPI
-        The `Python Package Index`_, formerly known as the Cheese Shop,
-        is a central catalog of Python packages. By default, when
-        installing packages,`pip` searches for them in PyPI.
-
-        .. _`Python Package Index`: http://pypi.python.org/pypi
diff --git a/vendor/pip-1.2.1/docs/index.txt b/vendor/pip-1.2.1/docs/index.txt
deleted file mode 100644
index 3f117c0c..00000000
--- a/vendor/pip-1.2.1/docs/index.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-pip
-===
-
-`pip` is a tool for installing and managing Python packages, such as
-those found in the `Python Package Index`_. It's a replacement for
-easy_install_.
-::
-
-    $ pip install simplejson
-    [... progress report ...]
-    Successfully installed simplejson
-
-.. _`Python Package Index`: http://pypi.python.org/pypi
-.. _easy_install: http://peak.telecommunity.com/DevCenter/EasyInstall
-
-Upgrading a package::
-
-    $ pip install --upgrade simplejson
-    [... progress report ...]
-    Successfully installed simplejson
-
-Removing a package::
-
-    $ pip uninstall simplejson
-    Uninstalling simplejson:
-      /home/me/env/lib/python2.7/site-packages/simplejson
-      /home/me/env/lib/python2.7/site-packages/simplejson-2.2.1-py2.7.egg-info
-    Proceed (y/n)? y
-      Successfully uninstalled simplejson
-
-.. comment: split here
-
-.. toctree::
-   :maxdepth: 2
-
-   installing
-   usage
-   requirements
-   configuration
-   other-tools
-   contributing
-   news
-   glossary
-
-.. comment: split here
-
-Community
----------
-
-The homepage for pip is at `pip-installer.org <http://www.pip-installer.org/>`_.
-Bugs can be filed in the `pip issue tracker
-<https://github.com/pypa/pip/issues/>`_.  Discussion happens on the
-`virtualenv email group
-<http://groups.google.com/group/python-virtualenv?hl=en>`_.
diff --git a/vendor/pip-1.2.1/docs/installing.txt b/vendor/pip-1.2.1/docs/installing.txt
deleted file mode 100644
index 5f86c6a4..00000000
--- a/vendor/pip-1.2.1/docs/installing.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-Installation instructions
-=========================
-
-The recommended way to use pip is within `virtualenv
-<http://www.virtualenv.org>`_, since every virtualenv has pip installed in it
-automatically. This does not require root access or modify your system Python
-installation. For instance::
-
-    $ curl -O https://raw.github.com/pypa/virtualenv/master/virtualenv.py
-    $ python virtualenv.py my_new_env
-    $ . my_new_env/bin/activate
-    (my_new_env)$ pip install ...
-
-When used in this manner, pip will only affect the active virtual environment.
-If you do want to install pip globally into your Python installation, see the
-instructions below.
-
-Prerequisites
--------------
-
-Prior to installing pip make sure you have either `setuptools
-<http://pypi.python.org/pypi/setuptools>`_ or `distribute
-<http://pypi.python.org/pypi/distribute>`_ installed.  Please consult your
-operating system's package manager or install it manually::
-
-    $ curl http://python-distribute.org/distribute_setup.py | python
-
-.. warning::
-
-    If you are using Python 3.X you **must** use distribute; setuptools doesn't
-    support Python 3.X.
-
-Using the installer
--------------------
-
-Download `get-pip.py <https://raw.github.com/pypa/pip/master/contrib/get-pip.py>`_
-and execute it, using the Python interpreter of your choice::
-
-    $ curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python
-
-This may have to be run as root.
-
-Alternative installation procedures
------------------------------------
-
-Using the source distribution
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can find the source on `PyPI <http://pypi.python.org/pypi/pip>`_::
-
-    $ curl -O http://pypi.python.org/packages/source/p/pip/pip-1.0.tar.gz
-    $ tar xvfz pip-1.0.tar.gz
-    $ cd pip-1.0
-    $ python setup.py install # may need to be root
-
-Installing the development version
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-First you will need to clone the git repo::
-
-    $ git clone https://github.com/pypa/pip.git
-
-Now we can install from the repo::
-
-    $ cd pip
-    $ python setup.py install # may need to be root
diff --git a/vendor/pip-1.2.1/docs/make.bat b/vendor/pip-1.2.1/docs/make.bat
deleted file mode 100644
index aa5c189f..00000000
--- a/vendor/pip-1.2.1/docs/make.bat
+++ /dev/null
@@ -1,170 +0,0 @@
-@ECHO OFF
-
-REM Command file for Sphinx documentation
-
-if "%SPHINXBUILD%" == "" (
-	set SPHINXBUILD=sphinx-build
-)
-set BUILDDIR=_build
-set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
-if NOT "%PAPER%" == "" (
-	set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
-)
-
-if "%1" == "" goto help
-
-if "%1" == "help" (
-	:help
-	echo.Please use `make ^<target^>` where ^<target^> is one of
-	echo.  html       to make standalone HTML files
-	echo.  dirhtml    to make HTML files named index.html in directories
-	echo.  singlehtml to make a single large HTML file
-	echo.  pickle     to make pickle files
-	echo.  json       to make JSON files
-	echo.  htmlhelp   to make HTML files and a HTML help project
-	echo.  qthelp     to make HTML files and a qthelp project
-	echo.  devhelp    to make HTML files and a Devhelp project
-	echo.  epub       to make an epub
-	echo.  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter
-	echo.  text       to make text files
-	echo.  man        to make manual pages
-	echo.  changes    to make an overview over all changed/added/deprecated items
-	echo.  linkcheck  to check all external links for integrity
-	echo.  doctest    to run all doctests embedded in the documentation if enabled
-	goto end
-)
-
-if "%1" == "clean" (
-	for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
-	del /q /s %BUILDDIR%\*
-	goto end
-)
-
-if "%1" == "html" (
-	%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The HTML pages are in %BUILDDIR%/html.
-	goto end
-)
-
-if "%1" == "dirhtml" (
-	%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
-	goto end
-)
-
-if "%1" == "singlehtml" (
-	%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
-	goto end
-)
-
-if "%1" == "pickle" (
-	%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished; now you can process the pickle files.
-	goto end
-)
-
-if "%1" == "json" (
-	%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished; now you can process the JSON files.
-	goto end
-)
-
-if "%1" == "htmlhelp" (
-	%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished; now you can run HTML Help Workshop with the ^
-.hhp project file in %BUILDDIR%/htmlhelp.
-	goto end
-)
-
-if "%1" == "qthelp" (
-	%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished; now you can run "qcollectiongenerator" with the ^
-.qhcp project file in %BUILDDIR%/qthelp, like this:
-	echo.^> qcollectiongenerator %BUILDDIR%\qthelp\django-compressor.qhcp
-	echo.To view the help file:
-	echo.^> assistant -collectionFile %BUILDDIR%\qthelp\django-compressor.ghc
-	goto end
-)
-
-if "%1" == "devhelp" (
-	%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished.
-	goto end
-)
-
-if "%1" == "epub" (
-	%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The epub file is in %BUILDDIR%/epub.
-	goto end
-)
-
-if "%1" == "latex" (
-	%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
-	goto end
-)
-
-if "%1" == "text" (
-	%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The text files are in %BUILDDIR%/text.
-	goto end
-)
-
-if "%1" == "man" (
-	%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The manual pages are in %BUILDDIR%/man.
-	goto end
-)
-
-if "%1" == "changes" (
-	%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.The overview file is in %BUILDDIR%/changes.
-	goto end
-)
-
-if "%1" == "linkcheck" (
-	%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Link check complete; look for any errors in the above output ^
-or in %BUILDDIR%/linkcheck/output.txt.
-	goto end
-)
-
-if "%1" == "doctest" (
-	%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Testing of doctests in the sources finished, look at the ^
-results in %BUILDDIR%/doctest/output.txt.
-	goto end
-)
-
-:end
diff --git a/vendor/pip-1.2.1/docs/news.txt b/vendor/pip-1.2.1/docs/news.txt
deleted file mode 100644
index 3bcdb2a2..00000000
--- a/vendor/pip-1.2.1/docs/news.txt
+++ /dev/null
@@ -1,558 +0,0 @@
-====
-News
-====
-
-Changelog
-=========
-
-Next release (1.2) schedule
----------------------------
-
-Beta and final releases planned for the second half of 2012.
-
-1.1 (2012-02-16)
-----------------
-
-* Fixed issue #326 - don't crash when a package's setup.py emits UTF-8 and
-  then fails. Thanks Marc Abramowitz.
-
-* Added ``--target`` option for installing directly to arbitrary directory.
-  Thanks Stavros Korokithakis.
-
-* Added support for authentication with Subversion repositories. Thanks
-  Qiangning Hong.
-
-* Fixed issue #315 - ``--download`` now downloads dependencies as well.
-  Thanks Qiangning Hong.
-
-* Errors from subprocesses will display the current working directory.
-  Thanks Antti Kaihola.
-
-* Fixed issue #369 - compatibility with Subversion 1.7. Thanks Qiangning
-  Hong. Note that setuptools remains incompatible with Subversion 1.7; to
-  get the benefits of pip's support you must use Distribute rather than
-  setuptools.
-
-* Fixed issue #57 - ignore py2app-generated OS X mpkg zip files in finder.
-  Thanks Rene Dudfield.
-
-* Fixed issue #182 - log to ~/Library/Logs/ by default on OS X framework
-  installs. Thanks Dan Callahan for report and patch.
-
-* Fixed issue #310 - understand version tags without minor version ("py3")
-  in sdist filenames. Thanks Stuart Andrews for report and Olivier Girardot for
-  patch.
-
-* Fixed issue #7 - Pip now supports optionally installing setuptools
-  "extras" dependencies; e.g. "pip install Paste[openid]". Thanks Matt Maker
-  and Olivier Girardot.
-
-* Fixed issue #391 - freeze no longer borks on requirements files with
-  --index-url or --find-links. Thanks Herbert Pfennig.
-
-* Fixed issue #288 - handle symlinks properly. Thanks lebedov for the patch.
-
-* Fixed issue #49 - pip install -U no longer reinstalls the same versions of
-  packages. Thanks iguananaut for the pull request.
-
-* Removed ``-E`` option and ``PIP_RESPECT_VIRTUALENV``; both use a
-  restart-in-venv mechanism that's broken, and neither one is useful since
-  every virtualenv now has pip inside it.
-
-* Fixed issue #366 - pip throws IndexError when it calls `scraped_rel_links`
-
-* Fixed issue #22 - pip search should set and return a userful shell status code
-
-* Fixed issue #351 and #365 - added global ``--exists-action`` command line
-  option to easier script file exists conflicts, e.g. from editable
-  requirements from VCS that have a changed repo URL.
-
-
-1.0.2 (2011-07-16)
-------------------
-
-* Fixed docs issues.
-* Fixed issue #295 - Reinstall a package when using the ``install -I`` option
-* Fixed issue #283 - Finds a Git tag pointing to same commit as origin/master
-* Fixed issue #279 - Use absolute path for path to docs in setup.py
-* Fixed issue #314 - Correctly handle exceptions on Python3.
-* Fixed issue #320 - Correctly parse ``--editable`` lines in requirements files
-
-1.0.1 (2011-04-30)
-------------------
-
-* Start to use git-flow.
-* Fixed issue #274 - `find_command` should not raise AttributeError
-* Fixed issue #273 - respect Content-Disposition header. Thanks Bradley Ayers.
-* Fixed issue #233 - pathext handling on Windows.
-* Fixed issue #252 - svn+svn protocol.
-* Fixed issue #44 - multiple CLI searches.
-* Fixed issue #266 - current working directory when running setup.py clean.
-
-1.0 (2011-04-04)
-----------------
-
-* Added Python 3 support! Huge thanks to Vinay Sajip, Vitaly Babiy, Kelsey
-  Hightower, and Alex Gronholm, among others.
-
-* Download progress only shown on a real TTY. Thanks Alex Morega.
-
-* Fixed finding of VCS binaries to not be fooled by same-named directories.
-  Thanks Alex Morega.
-
-* Fixed uninstall of packages from system Python for users of Debian/Ubuntu
-  python-setuptools package (workaround until fixed in Debian and Ubuntu).
-
-* Added `get-pip.py <https://raw.github.com/pypa/pip/master/contrib/get-pip.py>`_
-  installer. Simply download and execute it, using the Python interpreter of
-  your choice::
-
-    $ curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
-    $ python get-pip.py
-
-  This may have to be run as root.
-
-  .. note::
-
-      Make sure you have `distribute <http://pypi.python.org/pypi/distribute>`_
-      installed before using the installer!
-
-0.8.3
------
-
-* Moved main repository to Github: https://github.com/pypa/pip
-
-* Transferred primary maintenance from Ian to Jannis Leidel, Carl Meyer, Brian Rosner
-
-* Fixed issue #14 - No uninstall-on-upgrade with URL package. Thanks Oliver Tonnhofer
-
-* Fixed issue #163 - Egg name not properly resolved. Thanks Igor Sobreira
-
-* Fixed issue #178 - Non-alphabetical installation of requirements. Thanks Igor Sobreira
-
-* Fixed issue #199 - Documentation mentions --index instead of --index-url. Thanks Kelsey Hightower
-
-* Fixed issue #204 - rmtree undefined in mercurial.py. Thanks Kelsey Hightower
-
-* Fixed bug in Git vcs backend that would break during reinstallation.
-
-* Fixed bug in Mercurial vcs backend related to pip freeze and branch/tag resolution.
-
-* Fixed bug in version string parsing related to the suffix "-dev".
-
-0.8.2
------
-
-* Avoid redundant unpacking of bundles (from pwaller)
-
-* Fixed issue #32, #150, #161 - Fixed checking out the correct
-  tag/branch/commit when updating an editable Git requirement.
-
-* Fixed issue #49 - Added ability to install version control requirements
-  without making them editable, e.g.::
-
-    pip install git+https://github.com/pypa/pip/
-
-* Fixed issue #175 - Correctly locate build and source directory on Mac OS X.
-
-* Added ``git+https://`` scheme to Git VCS backend.
-
-0.8.1
------
-
-* Added global --user flag as shortcut for --install-option="--user". From
-  Ronny Pfannschmidt.
-
-* Added support for `PyPI mirrors <http://pypi.python.org/mirrors>`_ as
-  defined in `PEP 381 <http://www.python.org/dev/peps/pep-0381/>`_, from
-  Jannis Leidel.
-
-* Fixed issue #138 - Git revisions ignored. Thanks John-Scott Atlakson.
-
-* Fixed issue #95 - Initial editable install of github package from a tag fails. Thanks John-Scott Atlakson.
-
-* Fixed issue #107 - Can't install if a directory in cwd has the same name as the package you're installing.
-
-* Fixed issue #39 - --install-option="--prefix=~/.local" ignored with -e.
-  Thanks Ronny Pfannschmidt and Wil Tan.
-
-
-
-0.8
----
-
-* Track which ``build/`` directories pip creates, never remove directories
-  it doesn't create.  From Hugo Lopes Tavares.
-
-* Pip now accepts file:// index URLs. Thanks Dave Abrahams.
-
-* Various cleanup to make test-running more consistent and less fragile.
-  Thanks Dave Abrahams.
-
-* Real Windows support (with passing tests). Thanks Dave Abrahams.
-
-* ``pip-2.7`` etc. scripts are created (Python-version specific scripts)
-
-* ``contrib/build-standalone`` script creates a runnable ``.zip`` form of
-  pip, from Jannis Leidel
-
-* Editable git repos are updated when reinstalled
-
-* Fix problem with ``--editable`` when multiple ``.egg-info/`` directories
-  are found.
-
-* A number of VCS-related fixes for ``pip freeze``, from Hugo Lopes Tavares.
-
-* Significant test framework changes, from Hugo Lopes Tavares.
-
-0.7.2
------
-
-* Set zip_safe=False to avoid problems some people are encountering where
-  pip is installed as a zip file.
-
-0.7.1
------
-
-* Fixed opening of logfile with no directory name. Thanks Alexandre Conrad.
-
-* Temporary files are consistently cleaned up, especially after
-  installing bundles, also from Alex Conrad.
-
-* Tests now require at least ScriptTest 1.0.3.
-
-0.7
----
-
-* Fixed uninstallation on Windows
-* Added ``pip search`` command.
-* Tab-complete names of installed distributions for ``pip uninstall``.
-* Support tab-completion when there is a global-option before the
-  subcommand.
-* Install header files in standard (scheme-default) location when installing
-  outside a virtualenv. Install them to a slightly more consistent
-  non-standard location inside a virtualenv (since the standard location is
-  a non-writable symlink to the global location).
-* pip now logs to a central location by default (instead of creating
-  ``pip-log.txt`` all over the place) and constantly overwrites the
-  file in question. On Unix and Mac OS X this is ``'$HOME/.pip/pip.log'``
-  and on Windows it's ``'%HOME%\\pip\\pip.log'``. You are still able to
-  override this location with the ``$PIP_LOG_FILE`` environment variable.
-  For a complete (appended) logfile use the separate ``'--log'`` command line
-  option.
-* Fixed an issue with Git that left an editable packge as a checkout of a
-  remote branch, even if the default behaviour would have been fine, too.
-* Fixed installing from a Git tag with older versions of Git.
-* Expand "~" in logfile and download cache paths.
-* Speed up installing from Mercurial repositories by cloning without
-  updating the working copy multiple times.
-* Fixed installing directly from directories (e.g.
-  ``pip install path/to/dir/``).
-* Fixed installing editable packages with ``svn+ssh`` URLs.
-* Don't print unwanted debug information when running the freeze command.
-* Create log file directory automatically. Thanks Alexandre Conrad.
-* Make test suite easier to run successfully. Thanks Dave Abrahams.
-* Fixed "pip install ." and "pip install .."; better error for directory
-  without setup.py. Thanks Alexandre Conrad.
-* Support Debian/Ubuntu "dist-packages" in zip command. Thanks duckx.
-* Fix relative --src folder. Thanks Simon Cross.
-* Handle missing VCS with an error message. Thanks Alexandre Conrad.
-* Added --no-download option to install; pairs with --no-install to separate
-  download and installation into two steps. Thanks Simon Cross.
-* Fix uninstalling from requirements file containing -f, -i, or
-  --extra-index-url.
-* Leftover build directories are now removed. Thanks Alexandre Conrad.
-
-0.6.3
------
-
-* Fixed import error on Windows with regard to the backwards compatibility
-  package
-
-0.6.2
------
-
-* Fixed uninstall when /tmp is on a different filesystem.
-
-* Fixed uninstallation of distributions with namespace packages.
-
-0.6.1
------
-
-* Added support for the ``https`` and ``http-static`` schemes to the
-  Mercurial and ``ftp`` scheme to the Bazaar backend.
-
-* Fixed uninstallation of scripts installed with easy_install.
-
-* Fixed an issue in the package finder that could result in an
-  infinite loop while looking for links.
-
-* Fixed issue with ``pip bundle`` and local files (which weren't being
-  copied into the bundle), from Whit Morriss.
-
-0.6
----
-
-* Add ``pip uninstall`` and uninstall-before upgrade (from Carl
-  Meyer).
-
-* Extended configurability with config files and environment variables.
-
-* Allow packages to be upgraded, e.g., ``pip install Package==0.1``
-  then ``pip install Package==0.2``.
-
-* Allow installing/upgrading to Package==dev (fix "Source version does not
-  match target version" errors).
-
-* Added command and option completion for bash and zsh.
-
-* Extended integration with virtualenv by providing an option to
-  automatically use an active virtualenv and an option to warn if no active
-  virtualenv is found.
-
-* Fixed a bug with pip install --download and editable packages, where
-  directories were being set with 0000 permissions, now defaults to 755.
-
-* Fixed uninstallation of easy_installed console_scripts.
-
-* Fixed uninstallation on Mac OS X Framework layout installs
-
-* Fixed bug preventing uninstall of editables with source outside venv.
-
-* Creates download cache directory if not existing.
-
-0.5.1
------
-
-* Fixed a couple little bugs, with git and with extensions.
-
-0.5
----
-
-* Added ability to override the default log file name (``pip-log.txt``)
-  with the environmental variable ``$PIP_LOG_FILE``.
-
-* Made the freeze command print installed packages to stdout instead of
-  writing them to a file. Use simple redirection (e.g.
-  ``pip freeze > stable-req.txt``) to get a file with requirements.
-
-* Fixed problem with freezing editable packages from a Git repository.
-
-* Added support for base URLs using ``<base href='...'>`` when parsing
-  HTML pages.
-
-* Fixed installing of non-editable packages from version control systems.
-
-* Fixed issue with Bazaar's bzr+ssh scheme.
-
-* Added --download-dir option to the install command to retrieve package
-  archives. If given an editable package it will create an archive of it.
-
-* Added ability to pass local file and directory paths to ``--find-links``,
-  e.g. ``--find-links=file:///path/to/my/private/archive``
-
-* Reduced the amount of console log messages when fetching a page to find a
-  distribution was problematic. The full messages can be found in pip-log.txt.
-
-* Added ``--no-deps`` option to install ignore package dependencies
-
-* Added ``--no-index`` option to ignore the package index (PyPI) temporarily
-
-* Fixed installing editable packages from Git branches.
-
-* Fixes freezing of editable packages from Mercurial repositories.
-
-* Fixed handling read-only attributes of build files, e.g. of Subversion and
-  Bazaar on Windows.
-
-* When downloading a file from a redirect, use the redirected
-  location's extension to guess the compression (happens specifically
-  when redirecting to a bitbucket.org tip.gz file).
-
-* Editable freeze URLs now always use revision hash/id rather than tip or
-  branch names which could move.
-
-* Fixed comparison of repo URLs so incidental differences such as
-  presence/absence of final slashes or quoted/unquoted special
-  characters don't trigger "ignore/switch/wipe/backup" choice.
-
-* Fixed handling of attempt to checkout editable install to a
-  non-empty, non-repo directory.
-
-0.4
----
-
-* Make ``-e`` work better with local hg repositories
-
-* Construct PyPI URLs the exact way easy_install constructs URLs (you
-  might notice this if you use a custom index that is
-  slash-sensitive).
-
-* Improvements on Windows (from `Ionel Maries Cristian
-  <http://ionelmc.wordpress.com/>`_).
-
-* Fixed problem with not being able to install private git repositories.
-
-* Make ``pip zip`` zip all its arguments, not just the first.
-
-* Fix some filename issues on Windows.
-
-* Allow the ``-i`` and ``--extra-index-url`` options in requirements
-  files.
-
-* Fix the way bundle components are unpacked and moved around, to make
-  bundles work.
-
-* Adds ``-s`` option to allow the access to the global site-packages if a
-  virtualenv is to be created.
-
-* Fixed support for Subversion 1.6.
-
-0.3.1
------
-
-* Improved virtualenv restart and various path/cleanup problems on win32.
-
-* Fixed a regression with installing from svn repositories (when not
-  using ``-e``).
-
-* Fixes when installing editable packages that put their source in a
-  subdirectory (like ``src/``).
-
-* Improve ``pip -h``
-
-0.3
----
-
-* Added support for editable packages created from Git, Mercurial and Bazaar
-  repositories and ability to freeze them. Refactored support for version
-  control systems.
-
-* Do not use ``sys.exit()`` from inside the code, instead use a
-  return.  This will make it easier to invoke programmatically.
-
-* Put the install record in ``Package.egg-info/installed-files.txt``
-  (previously they went in
-  ``site-packages/install-record-Package.txt``).
-
-* Fix a problem with ``pip freeze`` not including ``-e svn+`` when an
-  svn structure is peculiar.
-
-* Allow ``pip -E`` to work with a virtualenv that uses a different
-  version of Python than the parent environment.
-
-* Fixed Win32 virtualenv (``-E``) option.
-
-* Search the links passed in with ``-f`` for packages.
-
-* Detect zip files, even when the file doesn't have a ``.zip``
-  extension and it is served with the wrong Content-Type.
-
-* Installing editable from existing source now works, like ``pip
-  install -e some/path/`` will install the package in ``some/path/``.
-  Most importantly, anything that package requires will also be
-  installed by pip.
-
-* Add a ``--path`` option to ``pip un/zip``, so you can avoid zipping
-  files that are outside of where you expect.
-
-* Add ``--simulate`` option to ``pip zip``.
-
-0.2.1
------
-
-* Fixed small problem that prevented using ``pip.py`` without actually
-  installing pip.
-
-* Fixed ``--upgrade``, which would download and appear to install
-  upgraded packages, but actually just reinstall the existing package.
-
-* Fixed Windows problem with putting the install record in the right
-  place, and generating the ``pip`` script with Setuptools.
-
-* Download links that include embedded spaces or other unsafe
-  characters (those characters get %-encoded).
-
-* Fixed use of URLs in requirement files, and problems with some blank
-  lines.
-
-* Turn some tar file errors into warnings.
-
-0.2
----
-
-* Renamed to ``pip``, and to install you now do ``pip install
-  PACKAGE``
-
-* Added command ``pip zip PACKAGE`` and ``pip unzip PACKAGE``.  This
-  is particularly intended for Google App Engine to manage libraries
-  to stay under the 1000-file limit.
-
-* Some fixes to bundles, especially editable packages and when
-  creating a bundle using unnamed packages (like just an svn
-  repository without ``#egg=Package``).
-
-0.1.4
------
-
-* Added an option ``--install-option`` to pass options to pass
-  arguments to ``setup.py install``
-
-* ``.svn/`` directories are no longer included in bundles, as these
-  directories are specific to a version of svn -- if you build a
-  bundle on a system with svn 1.5, you can't use the checkout on a
-  system with svn 1.4.  Instead a file ``svn-checkout.txt`` is
-  included that notes the original location and revision, and the
-  command you can use to turn it back into an svn checkout.  (Probably
-  unpacking the bundle should, maybe optionally, recreate this
-  information -- but that is not currently implemented, and it would
-  require network access.)
-
-* Avoid ambiguities over project name case, where for instance
-  MyPackage and mypackage would be considered different packages.
-  This in particular caused problems on Macs, where ``MyPackage/`` and
-  ``mypackage/`` are the same directory.
-
-* Added support for an environmental variable
-  ``$PIP_DOWNLOAD_CACHE`` which will cache package downloads, so
-  future installations won't require large downloads.  Network access
-  is still required, but just some downloads will be avoided when
-  using this.
-
-0.1.3
------
-
-* Always use ``svn checkout`` (not ``export``) so that
-  ``tag_svn_revision`` settings give the revision of the package.
-
-* Don't update checkouts that came from ``.pybundle`` files.
-
-0.1.2
------
-
-* Improve error text when there are errors fetching HTML pages when
-  seeking packages.
-
-* Improve bundles: include empty directories, make them work with
-  editable packages.
-
-* If you use ``-E env`` and the environment ``env/`` doesn't exist, a
-  new virtual environment will be created.
-
-* Fix ``dependency_links`` for finding packages.
-
-0.1.1
------
-
-* Fixed a NameError exception when running pip outside of a
-  virtualenv environment.
-
-* Added HTTP proxy support (from Prabhu Ramachandran)
-
-* Fixed use of ``hashlib.md5`` on python2.5+ (also from Prabhu
-  Ramachandran)
-
-0.1
----
-
-* Initial release
diff --git a/vendor/pip-1.2.1/docs/other-tools.txt b/vendor/pip-1.2.1/docs/other-tools.txt
deleted file mode 100644
index a705e8ab..00000000
--- a/vendor/pip-1.2.1/docs/other-tools.txt
+++ /dev/null
@@ -1,131 +0,0 @@
-=============================
-Relationship with other tools
-=============================
-
-Pip Compared To easy_install
-----------------------------
-
-pip is meant to improve on easy_install.  Some of the improvements:
-
-* All packages are downloaded before installation.  Partially-completed
-  installation doesn't occur as a result.
-
-* Care is taken to present useful output on the console.
-
-* The reasons for actions are kept track of.  For instance, if a package is
-  being installed, pip keeps track of why that package was required.
-
-* Error messages should be useful.
-
-* The code is relatively concise and cohesive, making it easier to use
-  programmatically.
-
-* Packages don't have to be installed as egg archives, they can be installed
-  flat (while keeping the egg metadata).
-
-* Native support for other version control systems (Git, Mercurial and Bazaar)
-
-* Uninstallation of packages.
-
-* Simple to define fixed sets of requirements and reliably reproduce a
-  set of packages.
-
-pip doesn't do everything that easy_install does. Specifically:
-
-* It cannot install from eggs.  It only installs from source.  (In the
-  future it would be good if it could install binaries from Windows ``.exe``
-  or ``.msi`` -- binary install on other platforms is not a priority.)
-
-* It doesn't understand Setuptools extras (like ``package[test]``).  This should
-  be added eventually.
-
-* It is incompatible with some packages that extensively customize distutils
-  or setuptools in their ``setup.py`` files.
-
-pip is complementary with `virtualenv
-<http://pypi.python.org/pypi/virtualenv>`__, and it is encouraged that you use
-virtualenv to isolate your installation.
-
-Using pip with virtualenv
--------------------------
-
-pip is most nutritious when used with `virtualenv
-<http://pypi.python.org/pypi/virtualenv>`__.  One of the reasons pip
-doesn't install "multi-version" eggs is that virtualenv removes much of the need
-for it.  Because pip is installed by virtualenv, just use
-``path/to/my/environment/bin/pip`` to install things into that
-specific environment.
-
-To tell pip to only run if there is a virtualenv currently activated,
-and to bail if not, use::
-
-    export PIP_REQUIRE_VIRTUALENV=true
-
-
-Using pip with virtualenvwrapper
----------------------------------
-
-If you are using `virtualenvwrapper
-<http://www.doughellmann.com/projects/virtualenvwrapper/>`_, you might
-want pip to automatically create its virtualenvs in your
-``$WORKON_HOME``.
-
-You can tell pip to do so by defining ``PIP_VIRTUALENV_BASE`` in your
-environment and setting it to the same value as that of
-``$WORKON_HOME``.
-
-Do so by adding the line::
-
-    export PIP_VIRTUALENV_BASE=$WORKON_HOME
-
-in your .bashrc under the line starting with ``export WORKON_HOME``.
-
-Using pip with buildout
------------------------
-
-If you are using `zc.buildout
-<http://pypi.python.org/pypi/zc.buildout>`_ you should look at
-`gp.recipe.pip <http://pypi.python.org/pypi/gp.recipe.pip>`_ as an
-option to use pip and virtualenv in your buildouts.
-
-Using pip with the "user scheme"
---------------------------------
-
-With Python 2.6 came the `"user scheme" for installation
-<http://docs.python.org/install/index.html#alternate-installation-the-user-scheme>`_, which means that all
-Python distributions support an alternative install location that is specific to a user.
-The default location for each OS is explained in the python documentation
-for the `site.USER_BASE <http://docs.python.org/library/site.html#site.USER_BASE>`_ variable.
-This mode of installation can be turned on by
-specifying the ``--user`` option to ``pip install``.
-
-Moreover, the "user scheme" can be customized by setting the
-``PYTHONUSERBASE`` environment variable, which updates the value of ``site.USER_BASE``.
-
-To install "somepackage" into an environment with site.USER_BASE customized to '/myappenv', do the following::
-
-    export PYTHONUSERBASE=/myappenv
-    pip install --user somepackage
-
-
-Command line completion
------------------------
-
-pip comes with support for command line completion in bash and zsh and
-allows you tab complete commands and options. To enable it you simply
-need copy the required shell script to the your shell startup file
-(e.g. ``.profile`` or ``.zprofile``) by running the special ``completion``
-command, e.g. for bash::
-
-    $ pip completion --bash >> ~/.profile
-
-And for zsh::
-
-    $ pip completion --zsh >> ~/.zprofile
-
-Alternatively, you can use the result of the ``completion`` command
-directly with the eval function of you shell, e.g. by adding::
-
-    eval "`pip completion --bash`"
-
-to your startup file.
diff --git a/vendor/pip-1.2.1/docs/requirements.txt b/vendor/pip-1.2.1/docs/requirements.txt
deleted file mode 100644
index 326937da..00000000
--- a/vendor/pip-1.2.1/docs/requirements.txt
+++ /dev/null
@@ -1,246 +0,0 @@
-.. _`requirements-files`:
-
-==================
-Requirements files
-==================
-
-When installing software, and Python packages in particular, it's common that
-you get a lot of libraries installed.  You just did ``easy_install MyPackage``
-and you get a dozen packages.  Each of these packages has its own version.
-
-Maybe you ran that installation and it works.  Great!  Will it keep working?
-Did you have to provide special options to get it to find everything?  Did you
-have to install a bunch of other optional pieces?  Most of all, will you be able
-to do it again?  Requirements files give you a way to create an *environment*:
-a *set* of packages that work together.
-
-If you've ever tried to setup an application on a new system, or with slightly
-updated pieces, and had it fail, pip requirements are for you.  If you
-haven't had this problem then you will eventually, so pip requirements are
-for you too -- requirements make explicit, repeatable installation of packages.
-
-So what are requirements files?  They are very simple: lists of packages to
-install.  Instead of running something like ``pip install MyApp`` and
-getting whatever libraries come along, you can create a requirements file
-something like::
-
-    MyApp
-    Framework==0.9.4
-    Library>=0.2
-
-If you save this in ``requirements.txt``, then you can ``pip install -r
-requirements.txt``.  Regardless of what MyApp lists in ``setup.py``, you'll
-get a specific version of Framework (0.9.4) and at least the 0.2 version of
-Library.  (You might think you could list these specific versions in MyApp's
-``setup.py`` -- but if you do that you'll have to edit MyApp if you want to
-try a new version of Framework, or release a new version of MyApp if you
-determine that Library 0.3 doesn't work with your application.) You can also
-add optional libraries and support tools that MyApp doesn't strictly
-require, giving people a set of recommended libraries.
-
-You can also include "editable" packages -- packages that are checked out from
-Subversion, Git, Mercurial and Bazaar.  These are just like using the ``-e``
-option to pip.  They look like::
-
-    -e svn+http://myrepo/svn/MyApp#egg=MyApp
-
-You have to start the URL with ``svn+`` (``git+``, ``hg+`` or ``bzr+``), and
-you have to include ``#egg=Package`` so pip knows what to expect at that URL.
-You can also include ``@rev`` in the URL, e.g., ``@275`` to check out
-revision 275.
-
-Requirement files are mostly *flat*.  Maybe ``MyApp`` requires
-``Framework``, and ``Framework`` requires ``Library``.  I encourage
-you to still list all these in a single requirement file; it is the
-nature of Python programs that there are implicit bindings *directly*
-between MyApp and Library.  For instance, Framework might expose one
-of Library's objects, and so if Library is updated it might directly
-break MyApp.  If that happens you can update the requirements file to
-force an earlier version of Library, and you can do that without
-having to re-release MyApp at all.
-
-Read the `requirements file format`_ to learn about other features.
-
-Freezing Requirements
-=====================
-
-So you have a working set of packages, and you want to be able to install them
-elsewhere.  `Requirements files`_ let you install exact versions, but it won't
-tell you what all the exact versions are.
-
-To create a new requirements file from a known working environment, use::
-
-    $ pip freeze > stable-req.txt
-
-This will write a listing of *all* installed libraries to ``stable-req.txt``
-with exact versions for every library.  You may want to edit the file down after
-generating (e.g., to eliminate unnecessary libraries), but it'll give you a
-stable starting point for constructing your requirements file.
-
-You can also give it an existing requirements file, and it will use that as a
-sort of template for the new file.  So if you do::
-
-    $ pip freeze -r devel-req.txt > stable-req.txt
-
-it will keep the packages listed in ``devel-req.txt`` in order and preserve
-comments.
-
-The _`requirements file format`
-===============================
-
-The requirements file is a way to get pip to install specific packages
-to make up an *environment*.  This document describes that format.  To
-read about *when* you should use requirement files, see `Requirements
-Files <./#requirements-files>`_.
-
-Each line of the requirements file indicates something to be
-installed.  For example::
-
-    MyPackage==3.0
-
-tells pip to install the 3.0 version of MyPackage.
-
-You can also request `extras`_ in the requirements file::
-
-    MyPackage==3.0 [PDF]
-
-.. _extras: http://peak.telecommunity.com/DevCenter/setuptools#declaring-extras-optional-features-with-their-own-dependencies
-
-Packages may also be installed in an "editable" form.  This puts the
-source code into ``src/distname`` (making the name lower case) and
-runs ``python setup.py develop`` on the package.  To indicate
-editable, use ``-e``, like::
-
-    -e svn+http://svn.myproject.org/svn/MyProject/trunk#egg=MyProject
-
-The ``#egg=MyProject`` part is important, because while you can
-install simply given the svn location, the project name is useful in
-other places.
-
-You can also specify the egg name for a non-editable url. This is useful to
-point to HEAD locations on the local filesystem:
-
-    file:///path/to/your/lib/project#egg=MyProject
-
-or relative paths:
-
-    file:../../lib/project#egg=MyProject
-
-If you need to give pip (and by association easy_install) hints
-about where to find a package, you can use the ``-f``
-(``--find-links``) option, like::
-
-    $ pip -f http://someserver.org/index-of-packages MyPackage==3.0
-
-Pip will then look for a link at http://someserver.org/index-of-packages
-that matches version ``3.0`` of ``MyPackage`` -- the link should be
-like ``MyPackage-3.0.tar.gz``.
-
-And if you want to install from a tarball or zip file with a direct link,
-you don't need ``-f`` option, you just need to pass the absolute url, like::
-
-    $ pip install http://someserver.org/packages/MyPackage-3.0.tar.gz
-
-
-Version Control
----------------
-
-Right now pip knows of the following major version control systems:
-
-Subversion
-~~~~~~~~~~
-
-Pip supports the URL schemes ``svn``, ``svn+svn``, ``svn+http``, ``svn+https``, ``svn+ssh``.
-You can also give specific revisions to an SVN URL, like::
-
-    -e svn+svn://svn.myproject.org/svn/MyProject#egg=MyProject
-    -e svn+http://svn.myproject.org/svn/MyProject/trunk@2019#egg=MyProject
-
-which will check out revision 2019.  ``@{20080101}`` would also check
-out the revision from 2008-01-01. You can only check out specific
-revisions using ``-e svn+...``.
-
-Git
-~~~
-
-Pip currently supports cloning over ``git``, ``git+http`` and ``git+ssh``::
-
-    -e git://git.myproject.org/MyProject.git#egg=MyProject
-    -e git+http://git.myproject.org/MyProject/#egg=MyProject
-    -e git+ssh://git@myproject.org/MyProject/#egg=MyProject
-
-Passing branch names, a commit hash or a tag name is also possible::
-
-    -e git://git.myproject.org/MyProject.git@master#egg=MyProject
-    -e git://git.myproject.org/MyProject.git@v1.0#egg=MyProject
-    -e git://git.myproject.org/MyProject.git@da39a3ee5e6b4b0d3255bfef95601890afd80709#egg=MyProject
-
-Mercurial
-~~~~~~~~~
-
-The supported schemes are: ``hg+http``, ``hg+https``,
-``hg+static-http`` and ``hg+ssh``::
-
-    -e hg+http://hg.myproject.org/MyProject/#egg=MyProject
-    -e hg+https://hg.myproject.org/MyProject/#egg=MyProject
-    -e hg+ssh://hg@myproject.org/MyProject/#egg=MyProject
-
-You can also specify a revision number, a revision hash, a tag name or a local
-branch name::
-
-    -e hg+http://hg.myproject.org/MyProject/@da39a3ee5e6b#egg=MyProject
-    -e hg+http://hg.myproject.org/MyProject/@2019#egg=MyProject
-    -e hg+http://hg.myproject.org/MyProject/@v1.0#egg=MyProject
-    -e hg+http://hg.myproject.org/MyProject/@special_feature#egg=MyProject
-
-Bazaar
-~~~~~~
-
-Pip supports Bazaar using the ``bzr+http``, ``bzr+https``, ``bzr+ssh``,
-``bzr+sftp``, ``bzr+ftp`` and ``bzr+lp`` schemes::
-
-    -e bzr+http://bzr.myproject.org/MyProject/trunk/#egg=MyProject
-    -e bzr+sftp://user@myproject.org/MyProject/trunk/#egg=MyProject
-    -e bzr+ssh://user@myproject.org/MyProject/trunk/#egg=MyProject
-    -e bzr+ftp://user@myproject.org/MyProject/trunk/#egg=MyProject
-    -e bzr+lp:MyProject#egg=MyProject
-
-Tags or revisions can be installed like this::
-
-    -e bzr+https://bzr.myproject.org/MyProject/trunk/@2019#egg=MyProject
-    -e bzr+http://bzr.myproject.org/MyProject/trunk/@v1.0#egg=MyProject
-
-Recursive Requirements
-----------------------
-
-If you wish, you can also refer to other requirements files, like::
-
-    -r Pylons-requirements.txt
-
-This gives you a way of abstracting out sets of requirements.  This
-isn't, however, very friendly with `frozen requirements
-<./#freezing-requirements>`_, as everything in
-``Pylons-requirements.txt`` will show up in your frozen file.
-
-Indexes, find-links
--------------------
-
-You can also provide values for the ``--index-url`` and ``--find-links``
-options in your requirement files, like::
-
-    --index-url http://example.com/private-pypi/
-
-Note that using ``--index-url`` removes the use of `PyPI
-<http://pypi.python.org>`_, while using ``--extra-index-url`` will add
-additional indexes.
-
-``--find-links`` is more ad-hoc; instead of a complete "index", you
-only need an HTML page of links to available packages.  Simply by
-putting all your private packages in a directory and using the Apache
-auto-index, you can publish your packages so pip can find them.
-``--find-links`` is always additive; pip looks at everything it can
-find.  Use it like::
-
-    --find-links http://example.com/private-packages/
-
-Note that all these options must be on a line of their own.
diff --git a/vendor/pip-1.2.1/docs/usage.txt b/vendor/pip-1.2.1/docs/usage.txt
deleted file mode 100644
index 991d0d54..00000000
--- a/vendor/pip-1.2.1/docs/usage.txt
+++ /dev/null
@@ -1,160 +0,0 @@
-=====
-Usage
-=====
-
-Install packages
-----------------
-
-The simplest way to install a package is by specifying its name::
-
-    $ pip install SomePackage
-
-`SomePackage` is downloaded from :term:`PyPI`, along with its
-dependencies, and installed.
-
-If `SomePackage` is already installed, and you need a newer version, use ``pip
-install --upgrade SomePackage``. You can also request a specific version (``pip
-install SomePackage==1.0.4``) and specify `setuptools extras`_ (``pip install
-SomePackage[PDF]``).
-
-You can also install from a particular source distribution file, either
-local or remote::
-
-    $ pip install ./downloads/SomePackage-1.0.4.tar.gz
-    $ pip install http://my.package.repo/SomePackage-1.0.4.zip
-
-.. _setuptools extras: http://peak.telecommunity.com/DevCenter/setuptools#declaring-extras-optional-features-with-their-own-dependencies
-
-
-Edit mode
-*********
-
-Packages normally_ install under ``site-packages``, but when you're
-making changes, it makes more sense to run the package straight from the
-checked-out source tree. "Editable" installs create a ``.pth`` file in
-``site-packages`` that extends Python's import path to find the
-package::
-
-    $ pip install -e path/to/SomePackage
-
-.. _normally: http://docs.python.org/install/index.html#how-installation-works
-
-
-Version control systems
-***********************
-
-Pip knows how to check out a package from version control. `Subversion`,
-`Git`, `Mercurial` and `Bazaar` are supported. The repository will be
-checked out in a temporary folder, installed, and cleaned up::
-
-    $ pip install git+https://github.com/simplejson/simplejson.git
-    $ pip install svn+svn://svn.zope.org/repos/main/zope.interface/trunk/
-
-This can be combined with the `-e` flag, and Pip will perform the
-checkout in ``./src/``. You need to supply a name for the checkout
-folder by appending a hash to the repository URL::
-
-    $ pip install -e git+https://github.com/lakshmivyas/hyde.git#egg=hyde
-
-Note that only basic checking-out of a repo is supported; pip will not
-handle advanced VCS-specific features such as submodules or subrepos.
-
-
-Alternate package repositories
-******************************
-
-pip searches in :term:`PyPI` by default, but this can be overridden using the
-``--index-url`` option::
-
-    $ pip install --index-url http://d.pypi.python.org/simple/ SomePackage
-
-If you have your own package index with a few additional packages, you may want
-to to specify additional index URLs while still also using :term:`PyPI`::
-
-    $ pip install --extra-index-url http://my.package.repo/ SomePackage
-
-A "package index" used with ``--index-url`` or ``--extra-index-url`` can be as
-simple as a static-web-served directory, with automatic indexes on, with a
-subdirectory per package and sdists (tarballs created with ``python setup.py
-sdist``) in that directory::
-
-    mypackage/
-        mypackage-0.7.8.tar.gz
-        mypackage-1.0.1.tar.gz
-    otherpackage/
-        otherpackage-2.3.5.tar.gz
-
-If the number of packages in the index is small, it's even simpler to skip the
-subdirectories: put all of the sdists in a single directory and use pip's
-``--find-links`` option with a URL to that directory::
-
-    mypackage-0.7.8.tar.gz
-    mypackage-1.0.1.tar.gz
-    otherpackage-2.3.5.tar.gz
-
-``--find-links`` also supports local paths, so installation need not require a
-network connection.
-
-Like ``--extra-index-url``, ``--find-links`` is additive by default, it does
-not replace or supersede the index. All package sources are checked, and the
-latest qualifying version for every requested package is used. If you want only
-your ``-find-links`` URL used as package source, you need to pair it with
-``--no-index``.
-
-``--index-url``, ``--extra-index-url`` and ``--find-links`` can all be used
-within a :ref:`requirements file <requirements-files>` in addition to on the
-command line directly.
-
-
-Uninstall packages
-------------------
-
-pip is able to uninstall most installed packages with ``pip uninstall
-package-name``.
-
-Known exceptions include pure-distutils packages installed with
-``python setup.py install`` (such packages leave behind no metadata allowing
-determination of what files were installed), and script wrappers installed
-by develop-installs (``python setup.py develop``).
-
-pip also performs an automatic uninstall of an old version of a package
-before upgrading to a newer version, so outdated files (and egg-info data)
-from conflicting versions aren't left hanging around to cause trouble. The
-old version of the package is automatically restored if the new version
-fails to download or install.
-
-
-Searching for packages
-----------------------
-
-pip can search :term:`PyPI` for packages using the ``pip search``
-command::
-
-    $ pip search "query"
-
-The query will be used to search the names and summaries of all
-packages. With the ``--index`` option you can search in a different
-repository.
-
-
-Bundles
--------
-
-Another way to distribute a set of libraries is a bundle format (specific to
-pip).  This format is not stable at this time (there simply hasn't been
-any feedback, nor a great deal of thought).  A bundle file contains all the
-source for your package, and you can have pip install them all together.
-Once you have the bundle file further network access won't be necessary.  To
-build a bundle file, do::
-
-    $ pip bundle MyApp.pybundle MyApp
-
-(Using a :ref:`requirements file <requirements-files>` would be wise.)  Then
-someone else can get the file ``MyApp.pybundle`` and run::
-
-    $ pip install MyApp.pybundle
-
-This is *not* a binary format.  This only packages source.  If you have binary
-packages, then the person who installs the files will have to have a compiler,
-any necessary headers installed, etc.  Binary packages are hard, this is
-relatively easy.
diff --git a/vendor/pip-1.2.1/pip/__init__.py b/vendor/pip-1.2.1/pip/__init__.py
deleted file mode 100755
index 9580790a..00000000
--- a/vendor/pip-1.2.1/pip/__init__.py
+++ /dev/null
@@ -1,268 +0,0 @@
-#!/usr/bin/env python
-import os
-import optparse
-
-import subprocess
-import sys
-import re
-import difflib
-
-from pip.backwardcompat import walk_packages, console_to_str
-from pip.basecommand import command_dict, load_command, load_all_commands, command_names
-from pip.baseparser import parser
-from pip.exceptions import InstallationError
-from pip.log import logger
-from pip.util import get_installed_distributions
-
-
-def autocomplete():
-    """Command and option completion for the main option parser (and options)
-    and its subcommands (and options).
-
-    Enable by sourcing one of the completion shell scripts (bash or zsh).
-    """
-    # Don't complete if user hasn't sourced bash_completion file.
-    if 'PIP_AUTO_COMPLETE' not in os.environ:
-        return
-    cwords = os.environ['COMP_WORDS'].split()[1:]
-    cword = int(os.environ['COMP_CWORD'])
-    try:
-        current = cwords[cword-1]
-    except IndexError:
-        current = ''
-    load_all_commands()
-    subcommands = [cmd for cmd, cls in command_dict.items() if not cls.hidden]
-    options = []
-    # subcommand
-    try:
-        subcommand_name = [w for w in cwords if w in subcommands][0]
-    except IndexError:
-        subcommand_name = None
-    # subcommand options
-    if subcommand_name:
-        # special case: 'help' subcommand has no options
-        if subcommand_name == 'help':
-            sys.exit(1)
-        # special case: list locally installed dists for uninstall command
-        if subcommand_name == 'uninstall' and not current.startswith('-'):
-            installed = []
-            lc = current.lower()
-            for dist in get_installed_distributions(local_only=True):
-                if dist.key.startswith(lc) and dist.key not in cwords[1:]:
-                    installed.append(dist.key)
-            # if there are no dists installed, fall back to option completion
-            if installed:
-                for dist in installed:
-                    print(dist)
-                sys.exit(1)
-        subcommand = command_dict.get(subcommand_name)
-        options += [(opt.get_opt_string(), opt.nargs)
-                    for opt in subcommand.parser.option_list
-                    if opt.help != optparse.SUPPRESS_HELP]
-        # filter out previously specified options from available options
-        prev_opts = [x.split('=')[0] for x in cwords[1:cword-1]]
-        options = [(x, v) for (x, v) in options if x not in prev_opts]
-        # filter options by current input
-        options = [(k, v) for k, v in options if k.startswith(current)]
-        for option in options:
-            opt_label = option[0]
-            # append '=' to options which require args
-            if option[1]:
-                opt_label += '='
-            print(opt_label)
-    else:
-        # show options of main parser only when necessary
-        if current.startswith('-') or current.startswith('--'):
-            subcommands += [opt.get_opt_string()
-                            for opt in parser.option_list
-                            if opt.help != optparse.SUPPRESS_HELP]
-        print(' '.join([x for x in subcommands if x.startswith(current)]))
-    sys.exit(1)
-
-
-def version_control():
-    # Import all the version control support modules:
-    from pip import vcs
-    for importer, modname, ispkg in \
-            walk_packages(path=vcs.__path__, prefix=vcs.__name__+'.'):
-        __import__(modname)
-
-
-def main(initial_args=None):
-    if initial_args is None:
-        initial_args = sys.argv[1:]
-    autocomplete()
-    version_control()
-    options, args = parser.parse_args(initial_args)
-    if options.help and not args:
-        args = ['help']
-    if not args:
-        parser.error('You must give a command (use "pip help" to see a list of commands)')
-    command = args[0].lower()
-    load_command(command)
-    if command not in command_dict:
-        close_commands = difflib.get_close_matches(command, command_names())
-        if close_commands:
-            guess = close_commands[0]
-            if args[1:]:
-                guess = "%s %s" % (guess, " ".join(args[1:]))
-        else:
-            guess = 'install %s' % command
-        error_dict = {'arg': command, 'guess': guess,
-                      'script': os.path.basename(sys.argv[0])}
-        parser.error('No command by the name %(script)s %(arg)s\n  '
-                     '(maybe you meant "%(script)s %(guess)s")' % error_dict)
-    command = command_dict[command]
-    return command.main(args[1:], options)
-
-
-def bootstrap():
-    """
-    Bootstrapping function to be called from install-pip.py script.
-    """
-    return main(['install', '--upgrade', 'pip'])
-
-############################################################
-## Writing freeze files
-
-
-class FrozenRequirement(object):
-
-    def __init__(self, name, req, editable, comments=()):
-        self.name = name
-        self.req = req
-        self.editable = editable
-        self.comments = comments
-
-    _rev_re = re.compile(r'-r(\d+)$')
-    _date_re = re.compile(r'-(20\d\d\d\d\d\d)$')
-
-    @classmethod
-    def from_dist(cls, dist, dependency_links, find_tags=False):
-        location = os.path.normcase(os.path.abspath(dist.location))
-        comments = []
-        from pip.vcs import vcs, get_src_requirement
-        if vcs.get_backend_name(location):
-            editable = True
-            req = get_src_requirement(dist, location, find_tags)
-            if req is None:
-                logger.warn('Could not determine repository location of %s' % location)
-                comments.append('## !! Could not determine repository location')
-                req = dist.as_requirement()
-                editable = False
-        else:
-            editable = False
-            req = dist.as_requirement()
-            specs = req.specs
-            assert len(specs) == 1 and specs[0][0] == '=='
-            version = specs[0][1]
-            ver_match = cls._rev_re.search(version)
-            date_match = cls._date_re.search(version)
-            if ver_match or date_match:
-                svn_backend = vcs.get_backend('svn')
-                if svn_backend:
-                    svn_location = svn_backend(
-                        ).get_location(dist, dependency_links)
-                if not svn_location:
-                    logger.warn(
-                        'Warning: cannot find svn location for %s' % req)
-                    comments.append('## FIXME: could not find svn URL in dependency_links for this package:')
-                else:
-                    comments.append('# Installing as editable to satisfy requirement %s:' % req)
-                    if ver_match:
-                        rev = ver_match.group(1)
-                    else:
-                        rev = '{%s}' % date_match.group(1)
-                    editable = True
-                    req = '%s@%s#egg=%s' % (svn_location, rev, cls.egg_name(dist))
-        return cls(dist.project_name, req, editable, comments)
-
-    @staticmethod
-    def egg_name(dist):
-        name = dist.egg_name()
-        match = re.search(r'-py\d\.\d$', name)
-        if match:
-            name = name[:match.start()]
-        return name
-
-    def __str__(self):
-        req = self.req
-        if self.editable:
-            req = '-e %s' % req
-        return '\n'.join(list(self.comments)+[str(req)])+'\n'
-
-############################################################
-## Requirement files
-
-
-def call_subprocess(cmd, show_stdout=True,
-                    filter_stdout=None, cwd=None,
-                    raise_on_returncode=True,
-                    command_level=logger.DEBUG, command_desc=None,
-                    extra_environ=None):
-    if command_desc is None:
-        cmd_parts = []
-        for part in cmd:
-            if ' ' in part or '\n' in part or '"' in part or "'" in part:
-                part = '"%s"' % part.replace('"', '\\"')
-            cmd_parts.append(part)
-        command_desc = ' '.join(cmd_parts)
-    if show_stdout:
-        stdout = None
-    else:
-        stdout = subprocess.PIPE
-    logger.log(command_level, "Running command %s" % command_desc)
-    env = os.environ.copy()
-    if extra_environ:
-        env.update(extra_environ)
-    try:
-        proc = subprocess.Popen(
-            cmd, stderr=subprocess.STDOUT, stdin=None, stdout=stdout,
-            cwd=cwd, env=env)
-    except Exception:
-        e = sys.exc_info()[1]
-        logger.fatal(
-            "Error %s while executing command %s" % (e, command_desc))
-        raise
-    all_output = []
-    if stdout is not None:
-        stdout = proc.stdout
-        while 1:
-            line = console_to_str(stdout.readline())
-            if not line:
-                break
-            line = line.rstrip()
-            all_output.append(line + '\n')
-            if filter_stdout:
-                level = filter_stdout(line)
-                if isinstance(level, tuple):
-                    level, line = level
-                logger.log(level, line)
-                if not logger.stdout_level_matches(level):
-                    logger.show_progress()
-            else:
-                logger.info(line)
-    else:
-        returned_stdout, returned_stderr = proc.communicate()
-        all_output = [returned_stdout or '']
-    proc.wait()
-    if proc.returncode:
-        if raise_on_returncode:
-            if all_output:
-                logger.notify('Complete output from command %s:' % command_desc)
-                logger.notify('\n'.join(all_output) + '\n----------------------------------------')
-            raise InstallationError(
-                "Command %s failed with error code %s in %s"
-                % (command_desc, proc.returncode, cwd))
-        else:
-            logger.warn(
-                "Command %s had error code %s in %s"
-                % (command_desc, proc.returncode, cwd))
-    if stdout is not None:
-        return ''.join(all_output)
-
-
-if __name__ == '__main__':
-    exit = main()
-    if exit:
-        sys.exit(exit)
diff --git a/vendor/pip-1.2.1/pip/_pkgutil.py b/vendor/pip-1.2.1/pip/_pkgutil.py
deleted file mode 100644
index fe37d040..00000000
--- a/vendor/pip-1.2.1/pip/_pkgutil.py
+++ /dev/null
@@ -1,592 +0,0 @@
-"""Utilities to support packages."""
-
-# NOTE: This module must remain compatible with Python 2.3, as it is shared
-# by setuptools for distribution with Python 2.3 and up.
-
-import os
-import sys
-import imp
-import os.path
-from types import ModuleType
-
-__all__ = [
-    'get_importer', 'iter_importers', 'get_loader', 'find_loader',
-    'walk_packages', 'iter_modules',
-    'ImpImporter', 'ImpLoader', 'read_code', 'extend_path',
-]
-
-
-def read_code(stream):
-    # This helper is needed in order for the PEP 302 emulation to
-    # correctly handle compiled files
-    import marshal
-
-    magic = stream.read(4)
-    if magic != imp.get_magic():
-        return None
-
-    stream.read(4) # Skip timestamp
-    return marshal.load(stream)
-
-
-def simplegeneric(func):
-    """Make a trivial single-dispatch generic function"""
-    registry = {}
-
-    def wrapper(*args, **kw):
-        ob = args[0]
-        try:
-            cls = ob.__class__
-        except AttributeError:
-            cls = type(ob)
-        try:
-            mro = cls.__mro__
-        except AttributeError:
-            try:
-
-                class cls(cls, object):
-                    pass
-
-                mro = cls.__mro__[1:]
-            except TypeError:
-                mro = object,   # must be an ExtensionClass or some such  :(
-        for t in mro:
-            if t in registry:
-                return registry[t](*args, **kw)
-        else:
-            return func(*args, **kw)
-    try:
-        wrapper.__name__ = func.__name__
-    except (TypeError, AttributeError):
-        pass    # Python 2.3 doesn't allow functions to be renamed
-
-    def register(typ, func=None):
-        if func is None:
-            return lambda f: register(typ, f)
-        registry[typ] = func
-        return func
-
-    wrapper.__dict__ = func.__dict__
-    wrapper.__doc__ = func.__doc__
-    wrapper.register = register
-    return wrapper
-
-
-def walk_packages(path=None, prefix='', onerror=None):
-    """Yields (module_loader, name, ispkg) for all modules recursively
-    on path, or, if path is None, all accessible modules.
-
-    'path' should be either None or a list of paths to look for
-    modules in.
-
-    'prefix' is a string to output on the front of every module name
-    on output.
-
-    Note that this function must import all *packages* (NOT all
-    modules!) on the given path, in order to access the __path__
-    attribute to find submodules.
-
-    'onerror' is a function which gets called with one argument (the
-    name of the package which was being imported) if any exception
-    occurs while trying to import a package.  If no onerror function is
-    supplied, ImportErrors are caught and ignored, while all other
-    exceptions are propagated, terminating the search.
-
-    Examples:
-
-    # list all modules python can access
-    walk_packages()
-
-    # list all submodules of ctypes
-    walk_packages(ctypes.__path__, ctypes.__name__+'.')
-    """
-
-    def seen(p, m={}):
-        if p in m:
-            return True
-        m[p] = True
-
-    for importer, name, ispkg in iter_modules(path, prefix):
-        yield importer, name, ispkg
-
-        if ispkg:
-            try:
-                __import__(name)
-            except ImportError:
-                if onerror is not None:
-                    onerror(name)
-            except Exception:
-                if onerror is not None:
-                    onerror(name)
-                else:
-                    raise
-            else:
-                path = getattr(sys.modules[name], '__path__', None) or []
-
-                # don't traverse path items we've seen before
-                path = [p for p in path if not seen(p)]
-
-                for item in walk_packages(path, name+'.', onerror):
-                    yield item
-
-
-def iter_modules(path=None, prefix=''):
-    """Yields (module_loader, name, ispkg) for all submodules on path,
-    or, if path is None, all top-level modules on sys.path.
-
-    'path' should be either None or a list of paths to look for
-    modules in.
-
-    'prefix' is a string to output on the front of every module name
-    on output.
-    """
-
-    if path is None:
-        importers = iter_importers()
-    else:
-        importers = map(get_importer, path)
-
-    yielded = {}
-    for i in importers:
-        for name, ispkg in iter_importer_modules(i, prefix):
-            if name not in yielded:
-                yielded[name] = 1
-                yield i, name, ispkg
-
-
-#@simplegeneric
-def iter_importer_modules(importer, prefix=''):
-    if not hasattr(importer, 'iter_modules'):
-        return []
-    return importer.iter_modules(prefix)
-
-iter_importer_modules = simplegeneric(iter_importer_modules)
-
-
-class ImpImporter:
-    """PEP 302 Importer that wraps Python's "classic" import algorithm
-
-    ImpImporter(dirname) produces a PEP 302 importer that searches that
-    directory.  ImpImporter(None) produces a PEP 302 importer that searches
-    the current sys.path, plus any modules that are frozen or built-in.
-
-    Note that ImpImporter does not currently support being used by placement
-    on sys.meta_path.
-    """
-
-    def __init__(self, path=None):
-        self.path = path
-
-    def find_module(self, fullname, path=None):
-        # Note: we ignore 'path' argument since it is only used via meta_path
-        subname = fullname.split(".")[-1]
-        if subname != fullname and self.path is None:
-            return None
-        if self.path is None:
-            path = None
-        else:
-            path = [os.path.realpath(self.path)]
-        try:
-            file, filename, etc = imp.find_module(subname, path)
-        except ImportError:
-            return None
-        return ImpLoader(fullname, file, filename, etc)
-
-    def iter_modules(self, prefix=''):
-        if self.path is None or not os.path.isdir(self.path):
-            return
-
-        yielded = {}
-        import inspect
-
-        filenames = os.listdir(self.path)
-        filenames.sort()  # handle packages before same-named modules
-
-        for fn in filenames:
-            modname = inspect.getmodulename(fn)
-            if modname=='__init__' or modname in yielded:
-                continue
-
-            path = os.path.join(self.path, fn)
-            ispkg = False
-
-            if not modname and os.path.isdir(path) and '.' not in fn:
-                modname = fn
-                for fn in os.listdir(path):
-                    subname = inspect.getmodulename(fn)
-                    if subname=='__init__':
-                        ispkg = True
-                        break
-                else:
-                    continue    # not a package
-
-            if modname and '.' not in modname:
-                yielded[modname] = 1
-                yield prefix + modname, ispkg
-
-
-class ImpLoader:
-    """PEP 302 Loader that wraps Python's "classic" import algorithm
-    """
-    code = source = None
-
-    def __init__(self, fullname, file, filename, etc):
-        self.file = file
-        self.filename = filename
-        self.fullname = fullname
-        self.etc = etc
-
-    def load_module(self, fullname):
-        self._reopen()
-        try:
-            mod = imp.load_module(fullname, self.file, self.filename, self.etc)
-        finally:
-            if self.file:
-                self.file.close()
-        # Note: we don't set __loader__ because we want the module to look
-        # normal; i.e. this is just a wrapper for standard import machinery
-        return mod
-
-    def get_data(self, pathname):
-        return open(pathname, "rb").read()
-
-    def _reopen(self):
-        if self.file and self.file.closed:
-            mod_type = self.etc[2]
-            if mod_type==imp.PY_SOURCE:
-                self.file = open(self.filename, 'rU')
-            elif mod_type in (imp.PY_COMPILED, imp.C_EXTENSION):
-                self.file = open(self.filename, 'rb')
-
-    def _fix_name(self, fullname):
-        if fullname is None:
-            fullname = self.fullname
-        elif fullname != self.fullname:
-            raise ImportError("Loader for module %s cannot handle "
-                              "module %s" % (self.fullname, fullname))
-        return fullname
-
-    def is_package(self, fullname):
-        fullname = self._fix_name(fullname)
-        return self.etc[2]==imp.PKG_DIRECTORY
-
-    def get_code(self, fullname=None):
-        fullname = self._fix_name(fullname)
-        if self.code is None:
-            mod_type = self.etc[2]
-            if mod_type==imp.PY_SOURCE:
-                source = self.get_source(fullname)
-                self.code = compile(source, self.filename, 'exec')
-            elif mod_type==imp.PY_COMPILED:
-                self._reopen()
-                try:
-                    self.code = read_code(self.file)
-                finally:
-                    self.file.close()
-            elif mod_type==imp.PKG_DIRECTORY:
-                self.code = self._get_delegate().get_code()
-        return self.code
-
-    def get_source(self, fullname=None):
-        fullname = self._fix_name(fullname)
-        if self.source is None:
-            mod_type = self.etc[2]
-            if mod_type==imp.PY_SOURCE:
-                self._reopen()
-                try:
-                    self.source = self.file.read()
-                finally:
-                    self.file.close()
-            elif mod_type==imp.PY_COMPILED:
-                if os.path.exists(self.filename[:-1]):
-                    f = open(self.filename[:-1], 'rU')
-                    self.source = f.read()
-                    f.close()
-            elif mod_type==imp.PKG_DIRECTORY:
-                self.source = self._get_delegate().get_source()
-        return self.source
-
-    def _get_delegate(self):
-        return ImpImporter(self.filename).find_module('__init__')
-
-    def get_filename(self, fullname=None):
-        fullname = self._fix_name(fullname)
-        mod_type = self.etc[2]
-        if self.etc[2]==imp.PKG_DIRECTORY:
-            return self._get_delegate().get_filename()
-        elif self.etc[2] in (imp.PY_SOURCE, imp.PY_COMPILED, imp.C_EXTENSION):
-            return self.filename
-        return None
-
-
-try:
-    import zipimport
-    from zipimport import zipimporter
-
-    def iter_zipimport_modules(importer, prefix=''):
-        dirlist = list(zipimport._zip_directory_cache[importer.archive].keys())
-        dirlist.sort()
-        _prefix = importer.prefix
-        plen = len(_prefix)
-        yielded = {}
-        import inspect
-        for fn in dirlist:
-            if not fn.startswith(_prefix):
-                continue
-
-            fn = fn[plen:].split(os.sep)
-
-            if len(fn)==2 and fn[1].startswith('__init__.py'):
-                if fn[0] not in yielded:
-                    yielded[fn[0]] = 1
-                    yield fn[0], True
-
-            if len(fn)!=1:
-                continue
-
-            modname = inspect.getmodulename(fn[0])
-            if modname=='__init__':
-                continue
-
-            if modname and '.' not in modname and modname not in yielded:
-                yielded[modname] = 1
-                yield prefix + modname, False
-
-    iter_importer_modules.register(zipimporter, iter_zipimport_modules)
-
-except ImportError:
-    pass
-
-
-def get_importer(path_item):
-    """Retrieve a PEP 302 importer for the given path item
-
-    The returned importer is cached in sys.path_importer_cache
-    if it was newly created by a path hook.
-
-    If there is no importer, a wrapper around the basic import
-    machinery is returned. This wrapper is never inserted into
-    the importer cache (None is inserted instead).
-
-    The cache (or part of it) can be cleared manually if a
-    rescan of sys.path_hooks is necessary.
-    """
-    try:
-        importer = sys.path_importer_cache[path_item]
-    except KeyError:
-        for path_hook in sys.path_hooks:
-            try:
-                importer = path_hook(path_item)
-                break
-            except ImportError:
-                pass
-        else:
-            importer = None
-        sys.path_importer_cache.setdefault(path_item, importer)
-
-    if importer is None:
-        try:
-            importer = ImpImporter(path_item)
-        except ImportError:
-            importer = None
-    return importer
-
-
-def iter_importers(fullname=""):
-    """Yield PEP 302 importers for the given module name
-
-    If fullname contains a '.', the importers will be for the package
-    containing fullname, otherwise they will be importers for sys.meta_path,
-    sys.path, and Python's "classic" import machinery, in that order.  If
-    the named module is in a package, that package is imported as a side
-    effect of invoking this function.
-
-    Non PEP 302 mechanisms (e.g. the Windows registry) used by the
-    standard import machinery to find files in alternative locations
-    are partially supported, but are searched AFTER sys.path. Normally,
-    these locations are searched BEFORE sys.path, preventing sys.path
-    entries from shadowing them.
-
-    For this to cause a visible difference in behaviour, there must
-    be a module or package name that is accessible via both sys.path
-    and one of the non PEP 302 file system mechanisms. In this case,
-    the emulation will find the former version, while the builtin
-    import mechanism will find the latter.
-
-    Items of the following types can be affected by this discrepancy:
-        imp.C_EXTENSION, imp.PY_SOURCE, imp.PY_COMPILED, imp.PKG_DIRECTORY
-    """
-    if fullname.startswith('.'):
-        raise ImportError("Relative module names not supported")
-    if '.' in fullname:
-        # Get the containing package's __path__
-        pkg = '.'.join(fullname.split('.')[:-1])
-        if pkg not in sys.modules:
-            __import__(pkg)
-        path = getattr(sys.modules[pkg], '__path__', None) or []
-    else:
-        for importer in sys.meta_path:
-            yield importer
-        path = sys.path
-    for item in path:
-        yield get_importer(item)
-    if '.' not in fullname:
-        yield ImpImporter()
-
-
-def get_loader(module_or_name):
-    """Get a PEP 302 "loader" object for module_or_name
-
-    If the module or package is accessible via the normal import
-    mechanism, a wrapper around the relevant part of that machinery
-    is returned.  Returns None if the module cannot be found or imported.
-    If the named module is not already imported, its containing package
-    (if any) is imported, in order to establish the package __path__.
-
-    This function uses iter_importers(), and is thus subject to the same
-    limitations regarding platform-specific special import locations such
-    as the Windows registry.
-    """
-    if module_or_name in sys.modules:
-        module_or_name = sys.modules[module_or_name]
-    if isinstance(module_or_name, ModuleType):
-        module = module_or_name
-        loader = getattr(module, '__loader__', None)
-        if loader is not None:
-            return loader
-        fullname = module.__name__
-    else:
-        fullname = module_or_name
-    return find_loader(fullname)
-
-
-def find_loader(fullname):
-    """Find a PEP 302 "loader" object for fullname
-
-    If fullname contains dots, path must be the containing package's __path__.
-    Returns None if the module cannot be found or imported. This function uses
-    iter_importers(), and is thus subject to the same limitations regarding
-    platform-specific special import locations such as the Windows registry.
-    """
-    for importer in iter_importers(fullname):
-        loader = importer.find_module(fullname)
-        if loader is not None:
-            return loader
-
-    return None
-
-
-def extend_path(path, name):
-    """Extend a package's path.
-
-    Intended use is to place the following code in a package's __init__.py:
-
-        from pkgutil import extend_path
-        __path__ = extend_path(__path__, __name__)
-
-    This will add to the package's __path__ all subdirectories of
-    directories on sys.path named after the package.  This is useful
-    if one wants to distribute different parts of a single logical
-    package as multiple directories.
-
-    It also looks for *.pkg files beginning where * matches the name
-    argument.  This feature is similar to *.pth files (see site.py),
-    except that it doesn't special-case lines starting with 'import'.
-    A *.pkg file is trusted at face value: apart from checking for
-    duplicates, all entries found in a *.pkg file are added to the
-    path, regardless of whether they are exist the filesystem.  (This
-    is a feature.)
-
-    If the input path is not a list (as is the case for frozen
-    packages) it is returned unchanged.  The input path is not
-    modified; an extended copy is returned.  Items are only appended
-    to the copy at the end.
-
-    It is assumed that sys.path is a sequence.  Items of sys.path that
-    are not (unicode or 8-bit) strings referring to existing
-    directories are ignored.  Unicode items of sys.path that cause
-    errors when used as filenames may cause this function to raise an
-    exception (in line with os.path.isdir() behavior).
-    """
-
-    if not isinstance(path, list):
-        # This could happen e.g. when this is called from inside a
-        # frozen package.  Return the path unchanged in that case.
-        return path
-
-    pname = os.path.join(*name.split('.')) # Reconstitute as relative path
-    # Just in case os.extsep != '.'
-    sname = os.extsep.join(name.split('.'))
-    sname_pkg = sname + os.extsep + "pkg"
-    init_py = "__init__" + os.extsep + "py"
-
-    path = path[:] # Start with a copy of the existing path
-
-    from pip.backwardcompat import string_types
-
-    for dir in sys.path:
-        if not isinstance(dir, string_types) or not os.path.isdir(dir):
-            continue
-        subdir = os.path.join(dir, pname)
-        # XXX This may still add duplicate entries to path on
-        # case-insensitive filesystems
-        initfile = os.path.join(subdir, init_py)
-        if subdir not in path and os.path.isfile(initfile):
-            path.append(subdir)
-        # XXX Is this the right thing for subpackages like zope.app?
-        # It looks for a file named "zope.app.pkg"
-        pkgfile = os.path.join(dir, sname_pkg)
-        if os.path.isfile(pkgfile):
-            try:
-                f = open(pkgfile)
-            except IOError:
-                msg = sys.exc_info()[1]
-                sys.stderr.write("Can't open %s: %s\n" %
-                                 (pkgfile, msg))
-            else:
-                for line in f:
-                    line = line.rstrip('\n')
-                    if not line or line.startswith('#'):
-                        continue
-                    path.append(line) # Don't check for existence!
-                f.close()
-
-    return path
-
-
-def get_data(package, resource):
-    """Get a resource from a package.
-
-    This is a wrapper round the PEP 302 loader get_data API. The package
-    argument should be the name of a package, in standard module format
-    (foo.bar). The resource argument should be in the form of a relative
-    filename, using '/' as the path separator. The parent directory name '..'
-    is not allowed, and nor is a rooted name (starting with a '/').
-
-    The function returns a binary string, which is the contents of the
-    specified resource.
-
-    For packages located in the filesystem, which have already been imported,
-    this is the rough equivalent of
-
-        d = os.path.dirname(sys.modules[package].__file__)
-        data = open(os.path.join(d, resource), 'rb').read()
-
-    If the package cannot be located or loaded, or it uses a PEP 302 loader
-    which does not support get_data(), then None is returned.
-    """
-
-    loader = get_loader(package)
-    if loader is None or not hasattr(loader, 'get_data'):
-        return None
-    mod = sys.modules.get(package) or loader.load_module(package)
-    if mod is None or not hasattr(mod, '__file__'):
-        return None
-
-    # Modify the resource name to be compatible with the loader.get_data
-    # signature - an os.path format "filename" starting with the dirname of
-    # the package's __file__
-    parts = resource.split('/')
-    parts.insert(0, os.path.dirname(mod.__file__))
-    resource_name = os.path.join(*parts)
-    return loader.get_data(resource_name)
diff --git a/vendor/pip-1.2.1/pip/backwardcompat.py b/vendor/pip-1.2.1/pip/backwardcompat.py
deleted file mode 100644
index e33da989..00000000
--- a/vendor/pip-1.2.1/pip/backwardcompat.py
+++ /dev/null
@@ -1,135 +0,0 @@
-"""Stuff that differs in different Python versions"""
-
-import sys
-import os
-import shutil
-
-__all__ = ['any', 'WindowsError', 'md5', 'copytree']
-
-try:
-    WindowsError = WindowsError
-except NameError:
-    class NeverUsedException(Exception):
-        """this exception should never be raised"""
-    WindowsError = NeverUsedException
-try:
-    from hashlib import md5
-except ImportError:
-    import md5 as md5_module
-    md5 = md5_module.new
-
-try:
-    from pkgutil import walk_packages
-except ImportError:
-    # let's fall back as long as we can
-    from pip._pkgutil import walk_packages
-
-try:
-    any = any
-except NameError:
-
-    def any(seq):
-        for item in seq:
-            if item:
-                return True
-        return False
-
-console_encoding = sys.__stdout__.encoding
-
-if sys.version_info >= (3,):
-    from io import StringIO, BytesIO
-    from functools import reduce
-    from urllib.error import URLError, HTTPError
-    from queue import Queue, Empty
-    from urllib.request import url2pathname
-    from urllib.request import urlretrieve
-    from email import message as emailmessage
-    import urllib.parse as urllib
-    import urllib.request as urllib2
-    import configparser as ConfigParser
-    import xmlrpc.client as xmlrpclib
-    import urllib.parse as urlparse
-    import http.client as httplib
-
-    def cmp(a, b):
-        return (a > b) - (a < b)
-
-    def b(s):
-        return s.encode('utf-8')
-
-    def u(s):
-        return s.decode('utf-8')
-
-    def console_to_str(s):
-        try:
-            return s.decode(console_encoding)
-        except UnicodeDecodeError:
-            return s.decode('utf_8')
-
-    def fwrite(f, s):
-        f.buffer.write(b(s))
-
-    bytes = bytes
-    string_types = (str,)
-    raw_input = input
-else:
-    from cStringIO import StringIO
-    from urllib2 import URLError, HTTPError
-    from Queue import Queue, Empty
-    from urllib import url2pathname, urlretrieve
-    from email import Message as emailmessage
-    import urllib
-    import urllib2
-    import urlparse
-    import ConfigParser
-    import xmlrpclib
-    import httplib
-
-    def b(s):
-        return s
-
-    def u(s):
-        return s
-
-    def console_to_str(s):
-        return s
-
-    def fwrite(f, s):
-        f.write(s)
-
-    bytes = str
-    string_types = (basestring,)
-    reduce = reduce
-    cmp = cmp
-    raw_input = raw_input
-    BytesIO = StringIO
-
-try:
-    from email.parser import FeedParser
-except ImportError:
-    # python lesser than 2.5
-    from email.FeedParser import FeedParser
-
-from distutils.sysconfig import get_python_lib, get_python_version
-
-
-def copytree(src, dst):
-    if sys.version_info < (2, 5):
-        before_last_dir = os.path.dirname(dst)
-        if not os.path.exists(before_last_dir):
-            os.makedirs(before_last_dir)
-        shutil.copytree(src, dst)
-        shutil.copymode(src, dst)
-    else:
-        shutil.copytree(src, dst)
-
-
-def product(*args, **kwds):
-    # product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy
-    # product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111
-    pools = list(map(tuple, args)) * kwds.get('repeat', 1)
-    result = [[]]
-    for pool in pools:
-        result = [x+[y] for x in result for y in pool]
-    for prod in result:
-        yield tuple(prod)
diff --git a/vendor/pip-1.2.1/pip/basecommand.py b/vendor/pip-1.2.1/pip/basecommand.py
deleted file mode 100644
index 12bcd621..00000000
--- a/vendor/pip-1.2.1/pip/basecommand.py
+++ /dev/null
@@ -1,193 +0,0 @@
-"""Base Command class, and related routines"""
-
-import os
-import socket
-import sys
-import traceback
-import time
-
-from pip import commands
-from pip.log import logger
-from pip.baseparser import parser, ConfigOptionParser, UpdatingDefaultsHelpFormatter
-from pip.download import urlopen
-from pip.exceptions import (BadCommand, InstallationError, UninstallationError,
-                            CommandError)
-from pip.backwardcompat import StringIO, walk_packages
-from pip.status_codes import SUCCESS, ERROR, UNKNOWN_ERROR, VIRTUALENV_NOT_FOUND
-
-
-__all__ = ['command_dict', 'Command', 'load_all_commands',
-           'load_command', 'command_names']
-
-command_dict = {}
-
-# for backwards compatibiliy
-get_proxy = urlopen.get_proxy
-
-
-class Command(object):
-    name = None
-    usage = None
-    hidden = False
-
-    def __init__(self):
-        assert self.name
-        self.parser = ConfigOptionParser(
-            usage=self.usage,
-            prog='%s %s' % (sys.argv[0], self.name),
-            version=parser.version,
-            formatter=UpdatingDefaultsHelpFormatter(),
-            name=self.name)
-        for option in parser.option_list:
-            if not option.dest or option.dest == 'help':
-                # -h, --version, etc
-                continue
-            self.parser.add_option(option)
-        command_dict[self.name] = self
-
-    def merge_options(self, initial_options, options):
-        # Make sure we have all global options carried over
-        for attr in ['log', 'proxy', 'require_venv',
-                     'log_explicit_levels', 'log_file',
-                     'timeout', 'default_vcs',
-                     'skip_requirements_regex',
-                     'no_input', 'exists_action']:
-            setattr(options, attr, getattr(initial_options, attr) or getattr(options, attr))
-        options.quiet += initial_options.quiet
-        options.verbose += initial_options.verbose
-
-    def setup_logging(self):
-        pass
-
-    def main(self, args, initial_options):
-        options, args = self.parser.parse_args(args)
-        self.merge_options(initial_options, options)
-
-        level = 1 # Notify
-        level += options.verbose
-        level -= options.quiet
-        level = logger.level_for_integer(4-level)
-        complete_log = []
-        logger.consumers.extend(
-            [(level, sys.stdout),
-             (logger.DEBUG, complete_log.append)])
-        if options.log_explicit_levels:
-            logger.explicit_levels = True
-
-        self.setup_logging()
-
-        if options.no_input:
-            os.environ['PIP_NO_INPUT'] = '1'
-
-        if options.exists_action:
-            os.environ['PIP_EXISTS_ACTION'] = ''.join(options.exists_action)
-
-        if options.require_venv:
-            # If a venv is required check if it can really be found
-            if not os.environ.get('VIRTUAL_ENV'):
-                logger.fatal('Could not find an activated virtualenv (required).')
-                sys.exit(VIRTUALENV_NOT_FOUND)
-
-        if options.log:
-            log_fp = open_logfile(options.log, 'a')
-            logger.consumers.append((logger.DEBUG, log_fp))
-        else:
-            log_fp = None
-
-        socket.setdefaulttimeout(options.timeout or None)
-
-        urlopen.setup(proxystr=options.proxy, prompting=not options.no_input)
-
-        exit = SUCCESS
-        store_log = False
-        try:
-            status = self.run(options, args)
-            # FIXME: all commands should return an exit status
-            # and when it is done, isinstance is not needed anymore
-            if isinstance(status, int):
-                exit = status
-        except (InstallationError, UninstallationError):
-            e = sys.exc_info()[1]
-            logger.fatal(str(e))
-            logger.info('Exception information:\n%s' % format_exc())
-            store_log = True
-            exit = ERROR
-        except BadCommand:
-            e = sys.exc_info()[1]
-            logger.fatal(str(e))
-            logger.info('Exception information:\n%s' % format_exc())
-            store_log = True
-            exit = ERROR
-        except CommandError:
-            e = sys.exc_info()[1]
-            logger.fatal('ERROR: %s' % e)
-            logger.info('Exception information:\n%s' % format_exc())
-            exit = ERROR
-        except KeyboardInterrupt:
-            logger.fatal('Operation cancelled by user')
-            logger.info('Exception information:\n%s' % format_exc())
-            store_log = True
-            exit = ERROR
-        except:
-            logger.fatal('Exception:\n%s' % format_exc())
-            store_log = True
-            exit = UNKNOWN_ERROR
-        if log_fp is not None:
-            log_fp.close()
-        if store_log:
-            log_fn = options.log_file
-            text = '\n'.join(complete_log)
-            logger.fatal('Storing complete log in %s' % log_fn)
-            log_fp = open_logfile(log_fn, 'w')
-            log_fp.write(text)
-            log_fp.close()
-        return exit
-
-
-def format_exc(exc_info=None):
-    if exc_info is None:
-        exc_info = sys.exc_info()
-    out = StringIO()
-    traceback.print_exception(*exc_info, **dict(file=out))
-    return out.getvalue()
-
-
-def open_logfile(filename, mode='a'):
-    """Open the named log file in append mode.
-
-    If the file already exists, a separator will also be printed to
-    the file to separate past activity from current activity.
-    """
-    filename = os.path.expanduser(filename)
-    filename = os.path.abspath(filename)
-    dirname = os.path.dirname(filename)
-    if not os.path.exists(dirname):
-        os.makedirs(dirname)
-    exists = os.path.exists(filename)
-
-    log_fp = open(filename, mode)
-    if exists:
-        log_fp.write('%s\n' % ('-'*60))
-        log_fp.write('%s run on %s\n' % (sys.argv[0], time.strftime('%c')))
-    return log_fp
-
-
-def load_command(name):
-    full_name = 'pip.commands.%s' % name
-    if full_name in sys.modules:
-        return
-    try:
-        __import__(full_name)
-    except ImportError:
-        pass
-
-
-def load_all_commands():
-    for name in command_names():
-        load_command(name)
-
-
-def command_names():
-    names = set((pkg[1] for pkg in walk_packages(path=commands.__path__)))
-    return list(names)
-
diff --git a/vendor/pip-1.2.1/pip/baseparser.py b/vendor/pip-1.2.1/pip/baseparser.py
deleted file mode 100644
index b3864f3d..00000000
--- a/vendor/pip-1.2.1/pip/baseparser.py
+++ /dev/null
@@ -1,226 +0,0 @@
-"""Base option parser setup"""
-
-import sys
-import optparse
-import pkg_resources
-import os
-from distutils.util import strtobool
-from pip.backwardcompat import ConfigParser, string_types
-from pip.locations import default_config_file, default_log_file
-
-
-class UpdatingDefaultsHelpFormatter(optparse.IndentedHelpFormatter):
-    """Custom help formatter for use in ConfigOptionParser that updates
-    the defaults before expanding them, allowing them to show up correctly
-    in the help listing"""
-
-    def expand_default(self, option):
-        if self.parser is not None:
-            self.parser.update_defaults(self.parser.defaults)
-        return optparse.IndentedHelpFormatter.expand_default(self, option)
-
-
-class ConfigOptionParser(optparse.OptionParser):
-    """Custom option parser which updates its defaults by by checking the
-    configuration files and environmental variables"""
-
-    def __init__(self, *args, **kwargs):
-        self.config = ConfigParser.RawConfigParser()
-        self.name = kwargs.pop('name')
-        self.files = self.get_config_files()
-        self.config.read(self.files)
-        assert self.name
-        optparse.OptionParser.__init__(self, *args, **kwargs)
-
-    def get_config_files(self):
-        config_file = os.environ.get('PIP_CONFIG_FILE', False)
-        if config_file and os.path.exists(config_file):
-            return [config_file]
-        return [default_config_file]
-
-    def update_defaults(self, defaults):
-        """Updates the given defaults with values from the config files and
-        the environ. Does a little special handling for certain types of
-        options (lists)."""
-        # Then go and look for the other sources of configuration:
-        config = {}
-        # 1. config files
-        for section in ('global', self.name):
-            config.update(self.normalize_keys(self.get_config_section(section)))
-        # 2. environmental variables
-        config.update(self.normalize_keys(self.get_environ_vars()))
-        # Then set the options with those values
-        for key, val in config.items():
-            option = self.get_option(key)
-            if option is not None:
-                # ignore empty values
-                if not val:
-                    continue
-                # handle multiline configs
-                if option.action == 'append':
-                    val = val.split()
-                else:
-                    option.nargs = 1
-                if option.action in ('store_true', 'store_false', 'count'):
-                    val = strtobool(val)
-                try:
-                    val = option.convert_value(key, val)
-                except optparse.OptionValueError:
-                    e = sys.exc_info()[1]
-                    print("An error occured during configuration: %s" % e)
-                    sys.exit(3)
-                defaults[option.dest] = val
-        return defaults
-
-    def normalize_keys(self, items):
-        """Return a config dictionary with normalized keys regardless of
-        whether the keys were specified in environment variables or in config
-        files"""
-        normalized = {}
-        for key, val in items:
-            key = key.replace('_', '-')
-            if not key.startswith('--'):
-                key = '--%s' % key # only prefer long opts
-            normalized[key] = val
-        return normalized
-
-    def get_config_section(self, name):
-        """Get a section of a configuration"""
-        if self.config.has_section(name):
-            return self.config.items(name)
-        return []
-
-    def get_environ_vars(self, prefix='PIP_'):
-        """Returns a generator with all environmental vars with prefix PIP_"""
-        for key, val in os.environ.items():
-            if key.startswith(prefix):
-                yield (key.replace(prefix, '').lower(), val)
-
-    def get_default_values(self):
-        """Overridding to make updating the defaults after instantiation of
-        the option parser possible, update_defaults() does the dirty work."""
-        if not self.process_default_values:
-            # Old, pre-Optik 1.5 behaviour.
-            return optparse.Values(self.defaults)
-
-        defaults = self.update_defaults(self.defaults.copy()) # ours
-        for option in self._get_all_options():
-            default = defaults.get(option.dest)
-            if isinstance(default, string_types):
-                opt_str = option.get_opt_string()
-                defaults[option.dest] = option.check_value(opt_str, default)
-        return optparse.Values(defaults)
-
-try:
-    pip_dist = pkg_resources.get_distribution('pip')
-    version = '%s from %s (python %s)' % (
-        pip_dist, pip_dist.location, sys.version[:3])
-except pkg_resources.DistributionNotFound:
-    # when running pip.py without installing
-    version=None
-
-parser = ConfigOptionParser(
-    usage='%prog COMMAND [OPTIONS]',
-    version=version,
-    add_help_option=False,
-    formatter=UpdatingDefaultsHelpFormatter(),
-    name='global')
-
-parser.add_option(
-    '-h', '--help',
-    dest='help',
-    action='store_true',
-    help='Show help')
-parser.add_option(
-    # Run only if inside a virtualenv, bail if not.
-    '--require-virtualenv', '--require-venv',
-    dest='require_venv',
-    action='store_true',
-    default=False,
-    help=optparse.SUPPRESS_HELP)
-
-parser.add_option(
-    '-v', '--verbose',
-    dest='verbose',
-    action='count',
-    default=0,
-    help='Give more output')
-parser.add_option(
-    '-q', '--quiet',
-    dest='quiet',
-    action='count',
-    default=0,
-    help='Give less output')
-parser.add_option(
-    '--log',
-    dest='log',
-    metavar='FILENAME',
-    help='Log file where a complete (maximum verbosity) record will be kept')
-parser.add_option(
-    # Writes the log levels explicitely to the log'
-    '--log-explicit-levels',
-    dest='log_explicit_levels',
-    action='store_true',
-    default=False,
-    help=optparse.SUPPRESS_HELP)
-parser.add_option(
-    # The default log file
-    '--local-log', '--log-file',
-    dest='log_file',
-    metavar='FILENAME',
-    default=default_log_file,
-    help=optparse.SUPPRESS_HELP)
-parser.add_option(
-    # Don't ask for input
-    '--no-input',
-    dest='no_input',
-    action='store_true',
-    default=False,
-    help=optparse.SUPPRESS_HELP)
-
-parser.add_option(
-    '--proxy',
-    dest='proxy',
-    type='str',
-    default='',
-    help="Specify a proxy in the form user:passwd@proxy.server:port. "
-    "Note that the user:password@ is optional and required only if you "
-    "are behind an authenticated proxy.  If you provide "
-    "user@proxy.server:port then you will be prompted for a password.")
-parser.add_option(
-    '--timeout', '--default-timeout',
-    metavar='SECONDS',
-    dest='timeout',
-    type='float',
-    default=15,
-    help='Set the socket timeout (default %default seconds)')
-parser.add_option(
-    # The default version control system for editables, e.g. 'svn'
-    '--default-vcs',
-    dest='default_vcs',
-    type='str',
-    default='',
-    help=optparse.SUPPRESS_HELP)
-parser.add_option(
-    # A regex to be used to skip requirements
-    '--skip-requirements-regex',
-    dest='skip_requirements_regex',
-    type='str',
-    default='',
-    help=optparse.SUPPRESS_HELP)
-
-parser.add_option(
-    # Option when path already exist
-    '--exists-action',
-    dest='exists_action',
-    type='choice',
-    choices=['s', 'i', 'w', 'b'],
-    default=[],
-    action='append',
-    help="Default action when a path already exists."
-         "Use this option more then one time to specify "
-         "another action if a certain option is not "
-         "available, choices: "
-         "(s)witch, (i)gnore, (w)ipe, (b)ackup")
-
-parser.disable_interspersed_args()
diff --git a/vendor/pip-1.2.1/pip/commands/__init__.py b/vendor/pip-1.2.1/pip/commands/__init__.py
deleted file mode 100644
index 792d6005..00000000
--- a/vendor/pip-1.2.1/pip/commands/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-#
diff --git a/vendor/pip-1.2.1/pip/commands/bundle.py b/vendor/pip-1.2.1/pip/commands/bundle.py
deleted file mode 100644
index f782f1bc..00000000
--- a/vendor/pip-1.2.1/pip/commands/bundle.py
+++ /dev/null
@@ -1,38 +0,0 @@
-from pip.locations import build_prefix, src_prefix
-from pip.util import display_path, backup_dir
-from pip.log import logger
-from pip.exceptions import InstallationError
-from pip.commands.install import InstallCommand
-
-
-class BundleCommand(InstallCommand):
-    name = 'bundle'
-    usage = '%prog [OPTIONS] BUNDLE_NAME.pybundle PACKAGE_NAMES...'
-    summary = 'Create pybundles (archives containing multiple packages)'
-    bundle = True
-
-    def __init__(self):
-        super(BundleCommand, self).__init__()
-        # bundle uses different default source and build dirs
-        build_opt = self.parser.get_option("--build")
-        build_opt.default = backup_dir(build_prefix, '-bundle')
-        src_opt = self.parser.get_option("--src")
-        src_opt.default = backup_dir(src_prefix, '-bundle')
-        self.parser.set_defaults(**{
-                src_opt.dest: src_opt.default,
-                build_opt.dest: build_opt.default,
-                })
-
-    def run(self, options, args):
-        if not args:
-            raise InstallationError('You must give a bundle filename')
-        # We have to get everything when creating a bundle:
-        options.ignore_installed = True
-        logger.notify('Putting temporary build files in %s and source/develop files in %s'
-                      % (display_path(options.build_dir), display_path(options.src_dir)))
-        self.bundle_filename = args.pop(0)
-        requirement_set = super(BundleCommand, self).run(options, args)
-        return requirement_set
-
-
-BundleCommand()
diff --git a/vendor/pip-1.2.1/pip/commands/completion.py b/vendor/pip-1.2.1/pip/commands/completion.py
deleted file mode 100644
index 5b93d9ce..00000000
--- a/vendor/pip-1.2.1/pip/commands/completion.py
+++ /dev/null
@@ -1,60 +0,0 @@
-import sys
-from pip.basecommand import Command
-
-BASE_COMPLETION = """
-# pip %(shell)s completion start%(script)s# pip %(shell)s completion end
-"""
-
-COMPLETION_SCRIPTS = {
-    'bash': """
-_pip_completion()
-{
-    COMPREPLY=( $( COMP_WORDS="${COMP_WORDS[*]}" \\
-                   COMP_CWORD=$COMP_CWORD \\
-                   PIP_AUTO_COMPLETE=1 $1 ) )
-}
-complete -o default -F _pip_completion pip
-""", 'zsh': """
-function _pip_completion {
-  local words cword
-  read -Ac words
-  read -cn cword
-  reply=( $( COMP_WORDS="$words[*]" \\
-             COMP_CWORD=$(( cword-1 )) \\
-             PIP_AUTO_COMPLETE=1 $words[1] ) )
-}
-compctl -K _pip_completion pip
-"""}
-
-
-class CompletionCommand(Command):
-    name = 'completion'
-    summary = 'A helper command to be used for command completion'
-    hidden = True
-
-    def __init__(self):
-        super(CompletionCommand, self).__init__()
-        self.parser.add_option(
-            '--bash', '-b',
-            action='store_const',
-            const='bash',
-            dest='shell',
-            help='Emit completion code for bash')
-        self.parser.add_option(
-            '--zsh', '-z',
-            action='store_const',
-            const='zsh',
-            dest='shell',
-            help='Emit completion code for zsh')
-
-    def run(self, options, args):
-        """Prints the completion code of the given shell"""
-        shells = COMPLETION_SCRIPTS.keys()
-        shell_options = ['--'+shell for shell in sorted(shells)]
-        if options.shell in shells:
-            script = COMPLETION_SCRIPTS.get(options.shell, '')
-            print(BASE_COMPLETION % {'script': script, 'shell': options.shell})
-        else:
-            sys.stderr.write('ERROR: You must pass %s\n' % ' or '.join(shell_options))
-
-CompletionCommand()
diff --git a/vendor/pip-1.2.1/pip/commands/freeze.py b/vendor/pip-1.2.1/pip/commands/freeze.py
deleted file mode 100644
index 03ac80f5..00000000
--- a/vendor/pip-1.2.1/pip/commands/freeze.py
+++ /dev/null
@@ -1,111 +0,0 @@
-import re
-import sys
-import pkg_resources
-import pip
-from pip.req import InstallRequirement
-from pip.log import logger
-from pip.basecommand import Command
-from pip.util import get_installed_distributions
-
-
-class FreezeCommand(Command):
-    name = 'freeze'
-    usage = '%prog [OPTIONS]'
-    summary = 'Output all currently installed packages (exact versions) to stdout'
-
-    def __init__(self):
-        super(FreezeCommand, self).__init__()
-        self.parser.add_option(
-            '-r', '--requirement',
-            dest='requirement',
-            action='store',
-            default=None,
-            metavar='FILENAME',
-            help='Use the given requirements file as a hint about how to generate the new frozen requirements')
-        self.parser.add_option(
-            '-f', '--find-links',
-            dest='find_links',
-            action='append',
-            default=[],
-            metavar='URL',
-            help='URL for finding packages, which will be added to the frozen requirements file')
-        self.parser.add_option(
-            '-l', '--local',
-            dest='local',
-            action='store_true',
-            default=False,
-            help='If in a virtualenv, do not report globally-installed packages')
-
-    def setup_logging(self):
-        logger.move_stdout_to_stderr()
-
-    def run(self, options, args):
-        requirement = options.requirement
-        find_links = options.find_links or []
-        local_only = options.local
-        ## FIXME: Obviously this should be settable:
-        find_tags = False
-        skip_match = None
-
-        skip_regex = options.skip_requirements_regex
-        if skip_regex:
-            skip_match = re.compile(skip_regex)
-
-        dependency_links = []
-
-        f = sys.stdout
-
-        for dist in pkg_resources.working_set:
-            if dist.has_metadata('dependency_links.txt'):
-                dependency_links.extend(dist.get_metadata_lines('dependency_links.txt'))
-        for link in find_links:
-            if '#egg=' in link:
-                dependency_links.append(link)
-        for link in find_links:
-            f.write('-f %s\n' % link)
-        installations = {}
-        for dist in get_installed_distributions(local_only=local_only):
-            req = pip.FrozenRequirement.from_dist(dist, dependency_links, find_tags=find_tags)
-            installations[req.name] = req
-        if requirement:
-            req_f = open(requirement)
-            for line in req_f:
-                if not line.strip() or line.strip().startswith('#'):
-                    f.write(line)
-                    continue
-                if skip_match and skip_match.search(line):
-                    f.write(line)
-                    continue
-                elif line.startswith('-e') or line.startswith('--editable'):
-                    if line.startswith('-e'):
-                        line = line[2:].strip()
-                    else:
-                        line = line[len('--editable'):].strip().lstrip('=')
-                    line_req = InstallRequirement.from_editable(line, default_vcs=options.default_vcs)
-                elif (line.startswith('-r') or line.startswith('--requirement')
-                      or line.startswith('-Z') or line.startswith('--always-unzip')
-                      or line.startswith('-f') or line.startswith('-i')
-                      or line.startswith('--extra-index-url')
-                      or line.startswith('--find-links')
-                      or line.startswith('--index-url')):
-                    f.write(line)
-                    continue
-                else:
-                    line_req = InstallRequirement.from_line(line)
-                if not line_req.name:
-                    logger.notify("Skipping line because it's not clear what it would install: %s"
-                                  % line.strip())
-                    logger.notify("  (add #egg=PackageName to the URL to avoid this warning)")
-                    continue
-                if line_req.name not in installations:
-                    logger.warn("Requirement file contains %s, but that package is not installed"
-                                % line.strip())
-                    continue
-                f.write(str(installations[line_req.name]))
-                del installations[line_req.name]
-            f.write('## The following requirements were added by pip --freeze:\n')
-        for installation in sorted(installations.values(), key=lambda x: x.name):
-            f.write(str(installation))
-
-
-FreezeCommand()
diff --git a/vendor/pip-1.2.1/pip/commands/help.py b/vendor/pip-1.2.1/pip/commands/help.py
deleted file mode 100644
index 4d504c52..00000000
--- a/vendor/pip-1.2.1/pip/commands/help.py
+++ /dev/null
@@ -1,33 +0,0 @@
-from pip.basecommand import (Command, command_dict,
-                             load_all_commands, SUCCESS,
-                             ERROR)
-from pip.exceptions import CommandError
-from pip.baseparser import parser
-
-
-class HelpCommand(Command):
-    name = 'help'
-    usage = '%prog'
-    summary = 'Show available commands'
-
-    def run(self, options, args):
-        load_all_commands()
-        if args:
-            ## FIXME: handle errors better here
-            command = args[0]
-            if command not in command_dict:
-                raise CommandError('No command with the name: %s' % command)
-            command = command_dict[command]
-            command.parser.print_help()
-            return SUCCESS
-        parser.print_help()
-        print('\nCommands available:')
-        commands = list(set(command_dict.values()))
-        commands.sort(key=lambda x: x.name)
-        for command in commands:
-            if command.hidden:
-                continue
-            print('  %s: %s' % (command.name, command.summary))
-        return SUCCESS
-
-HelpCommand()
diff --git a/vendor/pip-1.2.1/pip/commands/install.py b/vendor/pip-1.2.1/pip/commands/install.py
deleted file mode 100644
index 925d57fe..00000000
--- a/vendor/pip-1.2.1/pip/commands/install.py
+++ /dev/null
@@ -1,279 +0,0 @@
-import os
-import sys
-import tempfile
-import shutil
-from pip.req import InstallRequirement, RequirementSet
-from pip.req import parse_requirements
-from pip.log import logger
-from pip.locations import build_prefix, src_prefix
-from pip.basecommand import Command
-from pip.index import PackageFinder
-from pip.exceptions import InstallationError, CommandError
-
-
-class InstallCommand(Command):
-    name = 'install'
-    usage = '%prog [OPTIONS] PACKAGE_NAMES...'
-    summary = 'Install packages'
-    bundle = False
-
-    def __init__(self):
-        super(InstallCommand, self).__init__()
-        self.parser.add_option(
-            '-e', '--editable',
-            dest='editables',
-            action='append',
-            default=[],
-            metavar='VCS+REPOS_URL[@REV]#egg=PACKAGE',
-            help='Install a package directly from a checkout. Source will be checked '
-            'out into src/PACKAGE (lower-case) and installed in-place (using '
-            'setup.py develop). You can run this on an existing directory/checkout (like '
-            'pip install -e src/mycheckout). This option may be provided multiple times. '
-            'Possible values for VCS are: svn, git, hg and bzr.')
-        self.parser.add_option(
-            '-r', '--requirement',
-            dest='requirements',
-            action='append',
-            default=[],
-            metavar='FILENAME',
-            help='Install all the packages listed in the given requirements file.  '
-            'This option can be used multiple times.')
-        self.parser.add_option(
-            '-f', '--find-links',
-            dest='find_links',
-            action='append',
-            default=[],
-            metavar='URL',
-            help='URL to look for packages at')
-        self.parser.add_option(
-            '-i', '--index-url', '--pypi-url',
-            dest='index_url',
-            metavar='URL',
-            default='http://pypi.python.org/simple/',
-            help='Base URL of Python Package Index (default %default)')
-        self.parser.add_option(
-            '--extra-index-url',
-            dest='extra_index_urls',
-            metavar='URL',
-            action='append',
-            default=[],
-            help='Extra URLs of package indexes to use in addition to --index-url')
-        self.parser.add_option(
-            '--no-index',
-            dest='no_index',
-            action='store_true',
-            default=False,
-            help='Ignore package index (only looking at --find-links URLs instead)')
-        self.parser.add_option(
-            '-M', '--use-mirrors',
-            dest='use_mirrors',
-            action='store_true',
-            default=False,
-            help='Use the PyPI mirrors as a fallback in case the main index is down.')
-        self.parser.add_option(
-            '--mirrors',
-            dest='mirrors',
-            metavar='URL',
-            action='append',
-            default=[],
-            help='Specific mirror URLs to query when --use-mirrors is used')
-
-        self.parser.add_option(
-            '-b', '--build', '--build-dir', '--build-directory',
-            dest='build_dir',
-            metavar='DIR',
-            default=build_prefix,
-            help='Unpack packages into DIR (default %default) and build from there')
-        self.parser.add_option(
-            '-t', '--target',
-            dest='target_dir',
-            metavar='DIR',
-            default=None,
-            help='Install packages into DIR.')
-        self.parser.add_option(
-            '-d', '--download', '--download-dir', '--download-directory',
-            dest='download_dir',
-            metavar='DIR',
-            default=None,
-            help='Download packages into DIR instead of installing them')
-        self.parser.add_option(
-            '--download-cache',
-            dest='download_cache',
-            metavar='DIR',
-            default=None,
-            help='Cache downloaded packages in DIR')
-        self.parser.add_option(
-            '--src', '--source', '--source-dir', '--source-directory',
-            dest='src_dir',
-            metavar='DIR',
-            default=src_prefix,
-            help='Check out --editable packages into DIR (default %default)')
-
-        self.parser.add_option(
-            '-U', '--upgrade',
-            dest='upgrade',
-            action='store_true',
-            help='Upgrade all packages to the newest available version')
-        self.parser.add_option(
-            '--force-reinstall',
-            dest='force_reinstall',
-            action='store_true',
-            help='When upgrading, reinstall all packages even if they are '
-                 'already up-to-date.')
-        self.parser.add_option(
-            '-I', '--ignore-installed',
-            dest='ignore_installed',
-            action='store_true',
-            help='Ignore the installed packages (reinstalling instead)')
-        self.parser.add_option(
-            '--no-deps', '--no-dependencies',
-            dest='ignore_dependencies',
-            action='store_true',
-            default=False,
-            help='Ignore package dependencies')
-        self.parser.add_option(
-            '--no-install',
-            dest='no_install',
-            action='store_true',
-            help="Download and unpack all packages, but don't actually install them")
-        self.parser.add_option(
-            '--no-download',
-            dest='no_download',
-            action="store_true",
-            help="Don't download any packages, just install the ones already downloaded "
-            "(completes an install run with --no-install)")
-
-        self.parser.add_option(
-            '--install-option',
-            dest='install_options',
-            action='append',
-            help="Extra arguments to be supplied to the setup.py install "
-            "command (use like --install-option=\"--install-scripts=/usr/local/bin\").  "
-            "Use multiple --install-option options to pass multiple options to setup.py install.  "
-            "If you are using an option with a directory path, be sure to use absolute path.")
-
-        self.parser.add_option(
-            '--global-option',
-            dest='global_options',
-            action='append',
-            help="Extra global options to be supplied to the setup.py"
-            "call before the install command")
-
-        self.parser.add_option(
-            '--user',
-            dest='use_user_site',
-            action='store_true',
-            help='Install to user-site')
-
-    def _build_package_finder(self, options, index_urls):
-        """
-        Create a package finder appropriate to this install command.
-        This method is meant to be overridden by subclasses, not
-        called directly.
-        """
-        return PackageFinder(find_links=options.find_links,
-                             index_urls=index_urls,
-                             use_mirrors=options.use_mirrors,
-                             mirrors=options.mirrors)
-
-    def run(self, options, args):
-        if options.download_dir:
-            options.no_install = True
-            options.ignore_installed = True
-        options.build_dir = os.path.abspath(options.build_dir)
-        options.src_dir = os.path.abspath(options.src_dir)
-        install_options = options.install_options or []
-        if options.use_user_site:
-            install_options.append('--user')
-        if options.target_dir:
-            options.ignore_installed = True
-            temp_target_dir = tempfile.mkdtemp()
-            options.target_dir = os.path.abspath(options.target_dir)
-            if os.path.exists(options.target_dir) and not os.path.isdir(options.target_dir):
-                raise CommandError("Target path exists but is not a directory, will not continue.")
-            install_options.append('--home=' + temp_target_dir)
-        global_options = options.global_options or []
-        index_urls = [options.index_url] + options.extra_index_urls
-        if options.no_index:
-            logger.notify('Ignoring indexes: %s' % ','.join(index_urls))
-            index_urls = []
-
-        finder = self._build_package_finder(options, index_urls)
-
-        requirement_set = RequirementSet(
-            build_dir=options.build_dir,
-            src_dir=options.src_dir,
-            download_dir=options.download_dir,
-            download_cache=options.download_cache,
-            upgrade=options.upgrade,
-            ignore_installed=options.ignore_installed,
-            ignore_dependencies=options.ignore_dependencies,
-            force_reinstall=options.force_reinstall)
-        for name in args:
-            requirement_set.add_requirement(
-                InstallRequirement.from_line(name, None))
-        for name in options.editables:
-            requirement_set.add_requirement(
-                InstallRequirement.from_editable(name, default_vcs=options.default_vcs))
-        for filename in options.requirements:
-            for req in parse_requirements(filename, finder=finder, options=options):
-                requirement_set.add_requirement(req)
-        if not requirement_set.has_requirements:
-            opts = {'name': self.name}
-            if options.find_links:
-                msg = ('You must give at least one requirement to %(name)s '
-                       '(maybe you meant "pip %(name)s %(links)s"?)' %
-                       dict(opts, links=' '.join(options.find_links)))
-            else:
-                msg = ('You must give at least one requirement '
-                       'to %(name)s (see "pip help %(name)s")' % opts)
-            logger.warn(msg)
-            return
-
-        if (options.use_user_site and
-            sys.version_info < (2, 6)):
-            raise InstallationError('--user is only supported in Python version 2.6 and newer')
-
-        import setuptools
-        if (options.use_user_site and
-            requirement_set.has_editables and
-            not getattr(setuptools, '_distribute', False)):
-
-            raise InstallationError('--user --editable not supported with setuptools, use distribute')
-
-        if not options.no_download:
-            requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
-        else:
-            requirement_set.locate_files()
-
-        if not options.no_install and not self.bundle:
-            requirement_set.install(install_options, global_options)
-            installed = ' '.join([req.name for req in
-                                  requirement_set.successfully_installed])
-            if installed:
-                logger.notify('Successfully installed %s' % installed)
-        elif not self.bundle:
-            downloaded = ' '.join([req.name for req in
-                                   requirement_set.successfully_downloaded])
-            if downloaded:
-                logger.notify('Successfully downloaded %s' % downloaded)
-        elif self.bundle:
-            requirement_set.create_bundle(self.bundle_filename)
-            logger.notify('Created bundle in %s' % self.bundle_filename)
-        # Clean up
-        if not options.no_install or options.download_dir:
-            requirement_set.cleanup_files(bundle=self.bundle)
-        if options.target_dir:
-            if not os.path.exists(options.target_dir):
-                os.makedirs(options.target_dir)
-            lib_dir = os.path.join(temp_target_dir, "lib/python/")
-            for item in os.listdir(lib_dir):
-                shutil.move(
-                    os.path.join(lib_dir, item),
-                    os.path.join(options.target_dir, item)
-                    )
-            shutil.rmtree(temp_target_dir)
-        return requirement_set
-
-
-InstallCommand()
diff --git a/vendor/pip-1.2.1/pip/commands/search.py b/vendor/pip-1.2.1/pip/commands/search.py
deleted file mode 100644
index 9f287e59..00000000
--- a/vendor/pip-1.2.1/pip/commands/search.py
+++ /dev/null
@@ -1,127 +0,0 @@
-import sys
-import textwrap
-import pkg_resources
-import pip.download
-from pip.basecommand import Command, SUCCESS
-from pip.util import get_terminal_size
-from pip.log import logger
-from pip.backwardcompat import xmlrpclib, reduce, cmp
-from pip.exceptions import CommandError
-from pip.status_codes import NO_MATCHES_FOUND
-from distutils.version import StrictVersion, LooseVersion
-
-
-class SearchCommand(Command):
-    name = 'search'
-    usage = '%prog QUERY'
-    summary = 'Search PyPI'
-
-    def __init__(self):
-        super(SearchCommand, self).__init__()
-        self.parser.add_option(
-            '--index',
-            dest='index',
-            metavar='URL',
-            default='http://pypi.python.org/pypi',
-            help='Base URL of Python Package Index (default %default)')
-
-    def run(self, options, args):
-        if not args:
-            raise CommandError('Missing required argument (search query).')
-        query = args
-        index_url = options.index
-
-        pypi_hits = self.search(query, index_url)
-        hits = transform_hits(pypi_hits)
-
-        terminal_width = None
-        if sys.stdout.isatty():
-            terminal_width = get_terminal_size()[0]
-
-        print_results(hits, terminal_width=terminal_width)
-        if pypi_hits:
-            return SUCCESS
-        return NO_MATCHES_FOUND
-
-    def search(self, query, index_url):
-        pypi = xmlrpclib.ServerProxy(index_url, pip.download.xmlrpclib_transport)
-        hits = pypi.search({'name': query, 'summary': query}, 'or')
-        return hits
-
-
-def transform_hits(hits):
-    """
-    The list from pypi is really a list of versions. We want a list of
-    packages with the list of versions stored inline. This converts the
-    list from pypi into one we can use.
-    """
-    packages = {}
-    for hit in hits:
-        name = hit['name']
-        summary = hit['summary']
-        version = hit['version']
-        score = hit['_pypi_ordering']
-
-        if name not in packages.keys():
-            packages[name] = {'name': name, 'summary': summary, 'versions': [version], 'score': score}
-        else:
-            packages[name]['versions'].append(version)
-
-            # if this is the highest version, replace summary and score
-            if version == highest_version(packages[name]['versions']):
-                packages[name]['summary'] = summary
-                packages[name]['score'] = score
-
-    # each record has a unique name now, so we will convert the dict into a list sorted by score
-    package_list = sorted(packages.values(), key=lambda x: x['score'], reverse=True)
-    return package_list
-
-
-def print_results(hits, name_column_width=25, terminal_width=None):
-    installed_packages = [p.project_name for p in pkg_resources.working_set]
-    for hit in hits:
-        name = hit['name']
-        summary = hit['summary'] or ''
-        if terminal_width is not None:
-            # wrap and indent summary to fit terminal
-            summary = textwrap.wrap(summary, terminal_width - name_column_width - 5)
-            summary = ('\n' + ' ' * (name_column_width + 3)).join(summary)
-        line = '%s - %s' % (name.ljust(name_column_width), summary)
-        try:
-            logger.notify(line)
-            if name in installed_packages:
-                dist = pkg_resources.get_distribution(name)
-                logger.indent += 2
-                try:
-                    latest = highest_version(hit['versions'])
-                    if dist.version == latest:
-                        logger.notify('INSTALLED: %s (latest)' % dist.version)
-                    else:
-                        logger.notify('INSTALLED: %s' % dist.version)
-                        logger.notify('LATEST:    %s' % latest)
-                finally:
-                    logger.indent -= 2
-        except UnicodeEncodeError:
-            pass
-
-
-def compare_versions(version1, version2):
-    try:
-        return cmp(StrictVersion(version1), StrictVersion(version2))
-    # in case of abnormal version number, fall back to LooseVersion
-    except ValueError:
-        pass
-    try:
-        return cmp(LooseVersion(version1), LooseVersion(version2))
-    except TypeError:
-    # certain LooseVersion comparions raise due to unorderable types,
-    # fallback to string comparison
-        return cmp([str(v) for v in LooseVersion(version1).version],
-                   [str(v) for v in LooseVersion(version2).version])
-
-
-def highest_version(versions):
-    return reduce((lambda v1, v2: compare_versions(v1, v2) == 1 and v1 or v2), versions)
-
-
-SearchCommand()
diff --git a/vendor/pip-1.2.1/pip/commands/uninstall.py b/vendor/pip-1.2.1/pip/commands/uninstall.py
deleted file mode 100644
index 9f2b8912..00000000
--- a/vendor/pip-1.2.1/pip/commands/uninstall.py
+++ /dev/null
@@ -1,43 +0,0 @@
-from pip.req import InstallRequirement, RequirementSet, parse_requirements
-from pip.basecommand import Command
-from pip.exceptions import InstallationError
-
-
-class UninstallCommand(Command):
-    name = 'uninstall'
-    usage = '%prog [OPTIONS] PACKAGE_NAMES ...'
-    summary = 'Uninstall packages'
-
-    def __init__(self):
-        super(UninstallCommand, self).__init__()
-        self.parser.add_option(
-            '-r', '--requirement',
-            dest='requirements',
-            action='append',
-            default=[],
-            metavar='FILENAME',
-            help='Uninstall all the packages listed in the given requirements file.  '
-            'This option can be used multiple times.')
-        self.parser.add_option(
-            '-y', '--yes',
-            dest='yes',
-            action='store_true',
-            help="Don't ask for confirmation of uninstall deletions.")
-
-    def run(self, options, args):
-        requirement_set = RequirementSet(
-            build_dir=None,
-            src_dir=None,
-            download_dir=None)
-        for name in args:
-            requirement_set.add_requirement(
-                InstallRequirement.from_line(name))
-        for filename in options.requirements:
-            for req in parse_requirements(filename, options=options):
-                requirement_set.add_requirement(req)
-        if not requirement_set.has_requirements:
-            raise InstallationError('You must give at least one requirement '
-                'to %(name)s (see "pip help %(name)s")' % dict(name=self.name))
-        requirement_set.uninstall(auto_confirm=options.yes)
-
-UninstallCommand()
diff --git a/vendor/pip-1.2.1/pip/commands/unzip.py b/vendor/pip-1.2.1/pip/commands/unzip.py
deleted file mode 100644
index f83e1820..00000000
--- a/vendor/pip-1.2.1/pip/commands/unzip.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from pip.commands.zip import ZipCommand
-
-
-class UnzipCommand(ZipCommand):
-    name = 'unzip'
-    summary = 'Unzip individual packages'
-
-
-UnzipCommand()
diff --git a/vendor/pip-1.2.1/pip/commands/zip.py b/vendor/pip-1.2.1/pip/commands/zip.py
deleted file mode 100644
index ebe1d791..00000000
--- a/vendor/pip-1.2.1/pip/commands/zip.py
+++ /dev/null
@@ -1,346 +0,0 @@
-import sys
-import re
-import fnmatch
-import os
-import shutil
-import zipfile
-from pip.util import display_path, backup_dir, rmtree
-from pip.log import logger
-from pip.exceptions import InstallationError
-from pip.basecommand import Command
-
-
-class ZipCommand(Command):
-    name = 'zip'
-    usage = '%prog [OPTIONS] PACKAGE_NAMES...'
-    summary = 'Zip individual packages'
-
-    def __init__(self):
-        super(ZipCommand, self).__init__()
-        if self.name == 'zip':
-            self.parser.add_option(
-                '--unzip',
-                action='store_true',
-                dest='unzip',
-                help='Unzip (rather than zip) a package')
-        else:
-            self.parser.add_option(
-                '--zip',
-                action='store_false',
-                dest='unzip',
-                default=True,
-                help='Zip (rather than unzip) a package')
-        self.parser.add_option(
-            '--no-pyc',
-            action='store_true',
-            dest='no_pyc',
-            help='Do not include .pyc files in zip files (useful on Google App Engine)')
-        self.parser.add_option(
-            '-l', '--list',
-            action='store_true',
-            dest='list',
-            help='List the packages available, and their zip status')
-        self.parser.add_option(
-            '--sort-files',
-            action='store_true',
-            dest='sort_files',
-            help='With --list, sort packages according to how many files they contain')
-        self.parser.add_option(
-            '--path',
-            action='append',
-            dest='paths',
-            help='Restrict operations to the given paths (may include wildcards)')
-        self.parser.add_option(
-            '-n', '--simulate',
-            action='store_true',
-            help='Do not actually perform the zip/unzip operation')
-
-    def paths(self):
-        """All the entries of sys.path, possibly restricted by --path"""
-        if not self.select_paths:
-            return sys.path
-        result = []
-        match_any = set()
-        for path in sys.path:
-            path = os.path.normcase(os.path.abspath(path))
-            for match in self.select_paths:
-                match = os.path.normcase(os.path.abspath(match))
-                if '*' in match:
-                    if re.search(fnmatch.translate(match+'*'), path):
-                        result.append(path)
-                        match_any.add(match)
-                        break
-                else:
-                    if path.startswith(match):
-                        result.append(path)
-                        match_any.add(match)
-                        break
-            else:
-                logger.debug("Skipping path %s because it doesn't match %s"
-                             % (path, ', '.join(self.select_paths)))
-        for match in self.select_paths:
-            if match not in match_any and '*' not in match:
-                result.append(match)
-                logger.debug("Adding path %s because it doesn't match anything already on sys.path"
-                             % match)
-        return result
-
-    def run(self, options, args):
-        self.select_paths = options.paths
-        self.simulate = options.simulate
-        if options.list:
-            return self.list(options, args)
-        if not args:
-            raise InstallationError(
-                'You must give at least one package to zip or unzip')
-        packages = []
-        for arg in args:
-            module_name, filename = self.find_package(arg)
-            if options.unzip and os.path.isdir(filename):
-                raise InstallationError(
-                    'The module %s (in %s) is not a zip file; cannot be unzipped'
-                    % (module_name, filename))
-            elif not options.unzip and not os.path.isdir(filename):
-                raise InstallationError(
-                    'The module %s (in %s) is not a directory; cannot be zipped'
-                    % (module_name, filename))
-            packages.append((module_name, filename))
-        last_status = None
-        for module_name, filename in packages:
-            if options.unzip:
-                last_status = self.unzip_package(module_name, filename)
-            else:
-                last_status = self.zip_package(module_name, filename, options.no_pyc)
-        return last_status
-
-    def unzip_package(self, module_name, filename):
-        zip_filename = os.path.dirname(filename)
-        if not os.path.isfile(zip_filename) and zipfile.is_zipfile(zip_filename):
-            raise InstallationError(
-                'Module %s (in %s) isn\'t located in a zip file in %s'
-                % (module_name, filename, zip_filename))
-        package_path = os.path.dirname(zip_filename)
-        if not package_path in self.paths():
-            logger.warn(
-                'Unpacking %s into %s, but %s is not on sys.path'
-                % (display_path(zip_filename), display_path(package_path),
-                   display_path(package_path)))
-        logger.notify('Unzipping %s (in %s)' % (module_name, display_path(zip_filename)))
-        if self.simulate:
-            logger.notify('Skipping remaining operations because of --simulate')
-            return
-        logger.indent += 2
-        try:
-            ## FIXME: this should be undoable:
-            zip = zipfile.ZipFile(zip_filename)
-            to_save = []
-            for name in zip.namelist():
-                if name.startswith(module_name + os.path.sep):
-                    content = zip.read(name)
-                    dest = os.path.join(package_path, name)
-                    if not os.path.exists(os.path.dirname(dest)):
-                        os.makedirs(os.path.dirname(dest))
-                    if not content and dest.endswith(os.path.sep):
-                        if not os.path.exists(dest):
-                            os.makedirs(dest)
-                    else:
-                        f = open(dest, 'wb')
-                        f.write(content)
-                        f.close()
-                else:
-                    to_save.append((name, zip.read(name)))
-            zip.close()
-            if not to_save:
-                logger.info('Removing now-empty zip file %s' % display_path(zip_filename))
-                os.unlink(zip_filename)
-                self.remove_filename_from_pth(zip_filename)
-            else:
-                logger.info('Removing entries in %s/ from zip file %s' % (module_name, display_path(zip_filename)))
-                zip = zipfile.ZipFile(zip_filename, 'w')
-                for name, content in to_save:
-                    zip.writestr(name, content)
-                zip.close()
-        finally:
-            logger.indent -= 2
-
-    def zip_package(self, module_name, filename, no_pyc):
-        orig_filename = filename
-        logger.notify('Zip %s (in %s)' % (module_name, display_path(filename)))
-        logger.indent += 2
-        if filename.endswith('.egg'):
-            dest_filename = filename
-        else:
-            dest_filename = filename + '.zip'
-        try:
-            ## FIXME: I think this needs to be undoable:
-            if filename == dest_filename:
-                filename = backup_dir(orig_filename)
-                logger.notify('Moving %s aside to %s' % (orig_filename, filename))
-                if not self.simulate:
-                    shutil.move(orig_filename, filename)
-            try:
-                logger.info('Creating zip file in %s' % display_path(dest_filename))
-                if not self.simulate:
-                    zip = zipfile.ZipFile(dest_filename, 'w')
-                    zip.writestr(module_name + '/', '')
-                    for dirpath, dirnames, filenames in os.walk(filename):
-                        if no_pyc:
-                            filenames = [f for f in filenames
-                                         if not f.lower().endswith('.pyc')]
-                        for fns, is_dir in [(dirnames, True), (filenames, False)]:
-                            for fn in fns:
-                                full = os.path.join(dirpath, fn)
-                                dest = os.path.join(module_name, dirpath[len(filename):].lstrip(os.path.sep), fn)
-                                if is_dir:
-                                    zip.writestr(dest+'/', '')
-                                else:
-                                    zip.write(full, dest)
-                    zip.close()
-                logger.info('Removing old directory %s' % display_path(filename))
-                if not self.simulate:
-                    rmtree(filename)
-            except:
-                ## FIXME: need to do an undo here
-                raise
-            ## FIXME: should also be undone:
-            self.add_filename_to_pth(dest_filename)
-        finally:
-            logger.indent -= 2
-
-    def remove_filename_from_pth(self, filename):
-        for pth in self.pth_files():
-            f = open(pth, 'r')
-            lines = f.readlines()
-            f.close()
-            new_lines = [
-                l for l in lines if l.strip() != filename]
-            if lines != new_lines:
-                logger.info('Removing reference to %s from .pth file %s'
-                            % (display_path(filename), display_path(pth)))
-                if not [line for line in new_lines if line]:
-                    logger.info('%s file would be empty: deleting' % display_path(pth))
-                    if not self.simulate:
-                        os.unlink(pth)
-                else:
-                    if not self.simulate:
-                        f = open(pth, 'wb')
-                        f.writelines(new_lines)
-                        f.close()
-                return
-        logger.warn('Cannot find a reference to %s in any .pth file' % display_path(filename))
-
-    def add_filename_to_pth(self, filename):
-        path = os.path.dirname(filename)
-        dest = os.path.join(path, filename + '.pth')
-        if path not in self.paths():
-            logger.warn('Adding .pth file %s, but it is not on sys.path' % display_path(dest))
-        if not self.simulate:
-            if os.path.exists(dest):
-                f = open(dest)
-                lines = f.readlines()
-                f.close()
-                if lines and not lines[-1].endswith('\n'):
-                    lines[-1] += '\n'
-                lines.append(filename+'\n')
-            else:
-                lines = [filename + '\n']
-            f = open(dest, 'wb')
-            f.writelines(lines)
-            f.close()
-
-    def pth_files(self):
-        for path in self.paths():
-            if not os.path.exists(path) or not os.path.isdir(path):
-                continue
-            for filename in os.listdir(path):
-                if filename.endswith('.pth'):
-                    yield os.path.join(path, filename)
-
-    def find_package(self, package):
-        for path in self.paths():
-            full = os.path.join(path, package)
-            if os.path.exists(full):
-                return package, full
-            if not os.path.isdir(path) and zipfile.is_zipfile(path):
-                zip = zipfile.ZipFile(path, 'r')
-                try:
-                    zip.read(os.path.join(package, '__init__.py'))
-                except KeyError:
-                    pass
-                else:
-                    zip.close()
-                    return package, full
-                zip.close()
-        ## FIXME: need special error for package.py case:
-        raise InstallationError(
-            'No package with the name %s found' % package)
-
-    def list(self, options, args):
-        if args:
-            raise InstallationError(
-                'You cannot give an argument with --list')
-        for path in sorted(self.paths()):
-            if not os.path.exists(path):
-                continue
-            basename = os.path.basename(path.rstrip(os.path.sep))
-            if os.path.isfile(path) and zipfile.is_zipfile(path):
-                if os.path.dirname(path) not in self.paths():
-                    logger.notify('Zipped egg: %s' % display_path(path))
-                continue
-            if (basename != 'site-packages' and basename != 'dist-packages'
-                and not path.replace('\\', '/').endswith('lib/python')):
-                continue
-            logger.notify('In %s:' % display_path(path))
-            logger.indent += 2
-            zipped = []
-            unzipped = []
-            try:
-                for filename in sorted(os.listdir(path)):
-                    ext = os.path.splitext(filename)[1].lower()
-                    if ext in ('.pth', '.egg-info', '.egg-link'):
-                        continue
-                    if ext == '.py':
-                        logger.info('Not displaying %s: not a package' % display_path(filename))
-                        continue
-                    full = os.path.join(path, filename)
-                    if os.path.isdir(full):
-                        unzipped.append((filename, self.count_package(full)))
-                    elif zipfile.is_zipfile(full):
-                        zipped.append(filename)
-                    else:
-                        logger.info('Unknown file: %s' % display_path(filename))
-                if zipped:
-                    logger.notify('Zipped packages:')
-                    logger.indent += 2
-                    try:
-                        for filename in zipped:
-                            logger.notify(filename)
-                    finally:
-                        logger.indent -= 2
-                else:
-                    logger.notify('No zipped packages.')
-                if unzipped:
-                    if options.sort_files:
-                        unzipped.sort(key=lambda x: -x[1])
-                    logger.notify('Unzipped packages:')
-                    logger.indent += 2
-                    try:
-                        for filename, count in unzipped:
-                            logger.notify('%s  (%i files)' % (filename, count))
-                    finally:
-                        logger.indent -= 2
-                else:
-                    logger.notify('No unzipped packages.')
-            finally:
-                logger.indent -= 2
-
-    def count_package(self, path):
-        total = 0
-        for dirpath, dirnames, filenames in os.walk(path):
-            filenames = [f for f in filenames
-                         if not f.lower().endswith('.pyc')]
-            total += len(filenames)
-        return total
-
-
-ZipCommand()
diff --git a/vendor/pip-1.2.1/pip/download.py b/vendor/pip-1.2.1/pip/download.py
deleted file mode 100644
index a31e5d67..00000000
--- a/vendor/pip-1.2.1/pip/download.py
+++ /dev/null
@@ -1,481 +0,0 @@
-import cgi
-import getpass
-import mimetypes
-import os
-import re
-import shutil
-import sys
-import tempfile
-from pip.backwardcompat import (md5, copytree, xmlrpclib, urllib, urllib2,
-                                urlparse, string_types, HTTPError)
-from pip.exceptions import InstallationError
-from pip.util import (splitext, rmtree, format_size, display_path,
-                      backup_dir, ask, ask_path_exists, unpack_file,
-                      create_download_cache_folder, cache_download)
-from pip.vcs import vcs
-from pip.log import logger
-
-
-__all__ = ['xmlrpclib_transport', 'get_file_content', 'urlopen',
-           'is_url', 'url_to_path', 'path_to_url', 'path_to_url2',
-           'geturl', 'is_archive_file', 'unpack_vcs_link',
-           'unpack_file_url', 'is_vcs_url', 'is_file_url', 'unpack_http_url']
-
-
-xmlrpclib_transport = xmlrpclib.Transport()
-
-
-def get_file_content(url, comes_from=None):
-    """Gets the content of a file; it may be a filename, file: URL, or
-    http: URL.  Returns (location, content)"""
-    match = _scheme_re.search(url)
-    if match:
-        scheme = match.group(1).lower()
-        if (scheme == 'file' and comes_from
-            and comes_from.startswith('http')):
-            raise InstallationError(
-                'Requirements file %s references URL %s, which is local'
-                % (comes_from, url))
-        if scheme == 'file':
-            path = url.split(':', 1)[1]
-            path = path.replace('\\', '/')
-            match = _url_slash_drive_re.match(path)
-            if match:
-                path = match.group(1) + ':' + path.split('|', 1)[1]
-            path = urllib.unquote(path)
-            if path.startswith('/'):
-                path = '/' + path.lstrip('/')
-            url = path
-        else:
-            ## FIXME: catch some errors
-            resp = urlopen(url)
-            return geturl(resp), resp.read()
-    try:
-        f = open(url)
-        content = f.read()
-    except IOError:
-        e = sys.exc_info()[1]
-        raise InstallationError('Could not open requirements file: %s' % str(e))
-    else:
-        f.close()
-    return url, content
-
-
-_scheme_re = re.compile(r'^(http|https|file):', re.I)
-_url_slash_drive_re = re.compile(r'/*([a-z])\|', re.I)
-
-
-class URLOpener(object):
-    """
-    pip's own URL helper that adds HTTP auth and proxy support
-    """
-    def __init__(self):
-        self.passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
-
-    def __call__(self, url):
-        """
-        If the given url contains auth info or if a normal request gets a 401
-        response, an attempt is made to fetch the resource using basic HTTP
-        auth.
-
-        """
-        url, username, password = self.extract_credentials(url)
-        if username is None:
-            try:
-                response = urllib2.urlopen(self.get_request(url))
-            except urllib2.HTTPError:
-                e = sys.exc_info()[1]
-                if e.code != 401:
-                    raise
-                response = self.get_response(url)
-        else:
-            response = self.get_response(url, username, password)
-        return response
-
-    def get_request(self, url):
-        """
-        Wraps the URL to retrieve to protects against "creative"
-        interpretation of the RFC: http://bugs.python.org/issue8732
-        """
-        if isinstance(url, string_types):
-            url = urllib2.Request(url, headers={'Accept-encoding': 'identity'})
-        return url
-
-    def get_response(self, url, username=None, password=None):
-        """
-        does the dirty work of actually getting the rsponse object using urllib2
-        and its HTTP auth builtins.
-        """
-        scheme, netloc, path, query, frag = urlparse.urlsplit(url)
-        req = self.get_request(url)
-
-        stored_username, stored_password = self.passman.find_user_password(None, netloc)
-        # see if we have a password stored
-        if stored_username is None:
-            if username is None and self.prompting:
-                username = urllib.quote(raw_input('User for %s: ' % netloc))
-                password = urllib.quote(getpass.getpass('Password: '))
-            if username and password:
-                self.passman.add_password(None, netloc, username, password)
-            stored_username, stored_password = self.passman.find_user_password(None, netloc)
-        authhandler = urllib2.HTTPBasicAuthHandler(self.passman)
-        opener = urllib2.build_opener(authhandler)
-        # FIXME: should catch a 401 and offer to let the user reenter credentials
-        return opener.open(req)
-
-    def setup(self, proxystr='', prompting=True):
-        """
-        Sets the proxy handler given the option passed on the command
-        line.  If an empty string is passed it looks at the HTTP_PROXY
-        environment variable.
-        """
-        self.prompting = prompting
-        proxy = self.get_proxy(proxystr)
-        if proxy:
-            proxy_support = urllib2.ProxyHandler({"http": proxy, "ftp": proxy, "https": proxy})
-            opener = urllib2.build_opener(proxy_support, urllib2.CacheFTPHandler)
-            urllib2.install_opener(opener)
-
-    def parse_credentials(self, netloc):
-        if "@" in netloc:
-            userinfo = netloc.rsplit("@", 1)[0]
-            if ":" in userinfo:
-                return userinfo.split(":", 1)
-            return userinfo, None
-        return None, None
-
-    def extract_credentials(self, url):
-        """
-        Extracts user/password from a url.
-
-        Returns a tuple:
-            (url-without-auth, username, password)
-        """
-        if isinstance(url, urllib2.Request):
-            result = urlparse.urlsplit(url.get_full_url())
-        else:
-            result = urlparse.urlsplit(url)
-        scheme, netloc, path, query, frag = result
-
-        username, password = self.parse_credentials(netloc)
-        if username is None:
-            return url, None, None
-        elif password is None and self.prompting:
-            # remove the auth credentials from the url part
-            netloc = netloc.replace('%s@' % username, '', 1)
-            # prompt for the password
-            prompt = 'Password for %s@%s: ' % (username, netloc)
-            password = urllib.quote(getpass.getpass(prompt))
-        else:
-            # remove the auth credentials from the url part
-            netloc = netloc.replace('%s:%s@' % (username, password), '', 1)
-
-        target_url = urlparse.urlunsplit((scheme, netloc, path, query, frag))
-        return target_url, username, password
-
-    def get_proxy(self, proxystr=''):
-        """
-        Get the proxy given the option passed on the command line.
-        If an empty string is passed it looks at the HTTP_PROXY
-        environment variable.
-        """
-        if not proxystr:
-            proxystr = os.environ.get('HTTP_PROXY', '')
-        if proxystr:
-            if '@' in proxystr:
-                user_password, server_port = proxystr.split('@', 1)
-                if ':' in user_password:
-                    user, password = user_password.split(':', 1)
-                else:
-                    user = user_password
-                    prompt = 'Password for %s@%s: ' % (user, server_port)
-                    password = urllib.quote(getpass.getpass(prompt))
-                return '%s:%s@%s' % (user, password, server_port)
-            else:
-                return proxystr
-        else:
-            return None
-
-urlopen = URLOpener()
-
-
-def is_url(name):
-    """Returns true if the name looks like a URL"""
-    if ':' not in name:
-        return False
-    scheme = name.split(':', 1)[0].lower()
-    return scheme in ['http', 'https', 'file', 'ftp'] + vcs.all_schemes
-
-
-def url_to_path(url):
-    """
-    Convert a file: URL to a path.
-    """
-    assert url.startswith('file:'), (
-        "You can only turn file: urls into filenames (not %r)" % url)
-    path = url[len('file:'):].lstrip('/')
-    path = urllib.unquote(path)
-    if _url_drive_re.match(path):
-        path = path[0] + ':' + path[2:]
-    else:
-        path = '/' + path
-    return path
-
-
-_drive_re = re.compile('^([a-z]):', re.I)
-_url_drive_re = re.compile('^([a-z])[:|]', re.I)
-
-
-def path_to_url(path):
-    """
-    Convert a path to a file: URL.  The path will be made absolute.
-    """
-    path = os.path.normcase(os.path.abspath(path))
-    if _drive_re.match(path):
-        path = path[0] + '|' + path[2:]
-    url = urllib.quote(path)
-    url = url.replace(os.path.sep, '/')
-    url = url.lstrip('/')
-    return 'file:///' + url
-
-
-def path_to_url2(path):
-    """
-    Convert a path to a file: URL.  The path will be made absolute and have
-    quoted path parts.
-    """
-    path = os.path.normpath(os.path.abspath(path))
-    drive, path = os.path.splitdrive(path)
-    filepath = path.split(os.path.sep)
-    url = '/'.join([urllib.quote(part) for part in filepath])
-    if not drive:
-        url = url.lstrip('/')
-    return 'file:///' + drive + url
-
-
-def geturl(urllib2_resp):
-    """
-    Use instead of urllib.addinfourl.geturl(), which appears to have
-    some issues with dropping the double slash for certain schemes
-    (e.g. file://).  This implementation is probably over-eager, as it
-    always restores '://' if it is missing, and it appears some url
-    schemata aren't always followed by '//' after the colon, but as
-    far as I know pip doesn't need any of those.
-    The URI RFC can be found at: http://tools.ietf.org/html/rfc1630
-
-    This function assumes that
-        scheme:/foo/bar
-    is the same as
-        scheme:///foo/bar
-    """
-    url = urllib2_resp.geturl()
-    scheme, rest = url.split(':', 1)
-    if rest.startswith('//'):
-        return url
-    else:
-        # FIXME: write a good test to cover it
-        return '%s://%s' % (scheme, rest)
-
-
-def is_archive_file(name):
-    """Return True if `name` is a considered as an archive file."""
-    archives = ('.zip', '.tar.gz', '.tar.bz2', '.tgz', '.tar', '.pybundle')
-    ext = splitext(name)[1].lower()
-    if ext in archives:
-        return True
-    return False
-
-
-def unpack_vcs_link(link, location, only_download=False):
-    vcs_backend = _get_used_vcs_backend(link)
-    if only_download:
-        vcs_backend.export(location)
-    else:
-        vcs_backend.unpack(location)
-
-
-def unpack_file_url(link, location):
-    source = url_to_path(link.url)
-    content_type = mimetypes.guess_type(source)[0]
-    if os.path.isdir(source):
-        # delete the location since shutil will create it again :(
-        if os.path.isdir(location):
-            rmtree(location)
-        copytree(source, location)
-    else:
-        unpack_file(source, location, content_type, link)
-
-
-def _get_used_vcs_backend(link):
-    for backend in vcs.backends:
-        if link.scheme in backend.schemes:
-            vcs_backend = backend(link.url)
-            return vcs_backend
-
-
-def is_vcs_url(link):
-    return bool(_get_used_vcs_backend(link))
-
-
-def is_file_url(link):
-    return link.url.lower().startswith('file:')
-
-
-def _check_md5(download_hash, link):
-    download_hash = download_hash.hexdigest()
-    if download_hash != link.md5_hash:
-        logger.fatal("MD5 hash of the package %s (%s) doesn't match the expected hash %s!"
-                     % (link, download_hash, link.md5_hash))
-        raise InstallationError('Bad MD5 hash for package %s' % link)
-
-
-def _get_md5_from_file(target_file, link):
-    download_hash = md5()
-    fp = open(target_file, 'rb')
-    while True:
-        chunk = fp.read(4096)
-        if not chunk:
-            break
-        download_hash.update(chunk)
-    fp.close()
-    return download_hash
-
-
-def _download_url(resp, link, temp_location):
-    fp = open(temp_location, 'wb')
-    download_hash = None
-    if link.md5_hash:
-        download_hash = md5()
-    try:
-        total_length = int(resp.info()['content-length'])
-    except (ValueError, KeyError, TypeError):
-        total_length = 0
-    downloaded = 0
-    show_progress = total_length > 40*1000 or not total_length
-    show_url = link.show_url
-    try:
-        if show_progress:
-            ## FIXME: the URL can get really long in this message:
-            if total_length:
-                logger.start_progress('Downloading %s (%s): ' % (show_url, format_size(total_length)))
-            else:
-                logger.start_progress('Downloading %s (unknown size): ' % show_url)
-        else:
-            logger.notify('Downloading %s' % show_url)
-        logger.debug('Downloading from URL %s' % link)
-
-        while True:
-            chunk = resp.read(4096)
-            if not chunk:
-                break
-            downloaded += len(chunk)
-            if show_progress:
-                if not total_length:
-                    logger.show_progress('%s' % format_size(downloaded))
-                else:
-                    logger.show_progress('%3i%%  %s' % (100*downloaded/total_length, format_size(downloaded)))
-            if link.md5_hash:
-                download_hash.update(chunk)
-            fp.write(chunk)
-        fp.close()
-    finally:
-        if show_progress:
-            logger.end_progress('%s downloaded' % format_size(downloaded))
-    return download_hash
-
-
-def _copy_file(filename, location, content_type, link):
-    copy = True
-    download_location = os.path.join(location, link.filename)
-    if os.path.exists(download_location):
-        response = ask_path_exists(
-            'The file %s exists. (i)gnore, (w)ipe, (b)ackup ' %
-            display_path(download_location), ('i', 'w', 'b'))
-        if response == 'i':
-            copy = False
-        elif response == 'w':
-            logger.warn('Deleting %s' % display_path(download_location))
-            os.remove(download_location)
-        elif response == 'b':
-            dest_file = backup_dir(download_location)
-            logger.warn('Backing up %s to %s'
-                        % (display_path(download_location), display_path(dest_file)))
-            shutil.move(download_location, dest_file)
-    if copy:
-        shutil.copy(filename, download_location)
-        logger.indent -= 2
-        logger.notify('Saved %s' % display_path(download_location))
-
-
-def unpack_http_url(link, location, download_cache, download_dir=None):
-    temp_dir = tempfile.mkdtemp('-unpack', 'pip-')
-    target_url = link.url.split('#', 1)[0]
-    target_file = None
-    download_hash = None
-    if download_cache:
-        target_file = os.path.join(download_cache,
-                                   urllib.quote(target_url, ''))
-        if not os.path.isdir(download_cache):
-            create_download_cache_folder(download_cache)
-    if (target_file
-        and os.path.exists(target_file)
-        and os.path.exists(target_file + '.content-type')):
-        fp = open(target_file+'.content-type')
-        content_type = fp.read().strip()
-        fp.close()
-        if link.md5_hash:
-            download_hash = _get_md5_from_file(target_file, link)
-        temp_location = target_file
-        logger.notify('Using download cache from %s' % target_file)
-    else:
-        resp = _get_response_from_url(target_url, link)
-        content_type = resp.info()['content-type']
-        filename = link.filename  # fallback
-        # Have a look at the Content-Disposition header for a better guess
-        content_disposition = resp.info().get('content-disposition')
-        if content_disposition:
-            type, params = cgi.parse_header(content_disposition)
-            # We use ``or`` here because we don't want to use an "empty" value
-            # from the filename param.
-            filename = params.get('filename') or filename
-        ext = splitext(filename)[1]
-        if not ext:
-            ext = mimetypes.guess_extension(content_type)
-            if ext:
-                filename += ext
-        if not ext and link.url != geturl(resp):
-            ext = os.path.splitext(geturl(resp))[1]
-            if ext:
-                filename += ext
-        temp_location = os.path.join(temp_dir, filename)
-        download_hash = _download_url(resp, link, temp_location)
-    if link.md5_hash:
-        _check_md5(download_hash, link)
-    if download_dir:
-        _copy_file(temp_location, download_dir, content_type, link)
-    unpack_file(temp_location, location, content_type, link)
-    if target_file and target_file != temp_location:
-        cache_download(target_file, temp_location, content_type)
-    if target_file is None:
-        os.unlink(temp_location)
-    os.rmdir(temp_dir)
-
-
-def _get_response_from_url(target_url, link):
-    try:
-        resp = urlopen(target_url)
-    except urllib2.HTTPError:
-        e = sys.exc_info()[1]
-        logger.fatal("HTTP error %s while getting %s" % (e.code, link))
-        raise
-    except IOError:
-        e = sys.exc_info()[1]
-        # Typically an FTP error
-        logger.fatal("Error %s while getting %s" % (e, link))
-        raise
-    return resp
-
-
-class Urllib2HeadRequest(urllib2.Request):
-    def get_method(self):
-        return "HEAD"
diff --git a/vendor/pip-1.2.1/pip/exceptions.py b/vendor/pip-1.2.1/pip/exceptions.py
deleted file mode 100644
index 22f554a7..00000000
--- a/vendor/pip-1.2.1/pip/exceptions.py
+++ /dev/null
@@ -1,27 +0,0 @@
-"""Exceptions used throughout package"""
-
-
-class InstallationError(Exception):
-    """General exception during installation"""
-
-
-class UninstallationError(Exception):
-    """General exception during uninstallation"""
-
-
-class DistributionNotFound(InstallationError):
-    """Raised when a distribution cannot be found to satisfy a requirement"""
-
-
-class BestVersionAlreadyInstalled(Exception):
-    """Raised when the most up-to-date version of a package is already
-    installed.
-    """
-
-
-class BadCommand(Exception):
-    """Raised when virtualenv or a command is not found"""
-
-
-class CommandError(Exception):
-    """Raised when there is an error in command-line arguments"""
diff --git a/vendor/pip-1.2.1/pip/index.py b/vendor/pip-1.2.1/pip/index.py
deleted file mode 100644
index 8e53e44b..00000000
--- a/vendor/pip-1.2.1/pip/index.py
+++ /dev/null
@@ -1,708 +0,0 @@
-"""Routines related to PyPI, indexes"""
-
-import sys
-import os
-import re
-import gzip
-import mimetypes
-try:
-    import threading
-except ImportError:
-    import dummy_threading as threading
-import posixpath
-import pkg_resources
-import random
-import socket
-import string
-import zlib
-from pip.log import logger
-from pip.util import Inf
-from pip.util import normalize_name, splitext
-from pip.exceptions import DistributionNotFound, BestVersionAlreadyInstalled
-from pip.backwardcompat import (WindowsError, BytesIO,
-                                Queue, httplib, urlparse,
-                                URLError, HTTPError, u,
-                                product, url2pathname)
-from pip.backwardcompat import Empty as QueueEmpty
-from pip.download import urlopen, path_to_url2, url_to_path, geturl, Urllib2HeadRequest
-
-__all__ = ['PackageFinder']
-
-
-DEFAULT_MIRROR_URL = "last.pypi.python.org"
-
-
-class PackageFinder(object):
-    """This finds packages.
-
-    This is meant to match easy_install's technique for looking for
-    packages, by reading pages and looking for appropriate links
-    """
-
-    def __init__(self, find_links, index_urls,
-            use_mirrors=False, mirrors=None, main_mirror_url=None):
-        self.find_links = find_links
-        self.index_urls = index_urls
-        self.dependency_links = []
-        self.cache = PageCache()
-        # These are boring links that have already been logged somehow:
-        self.logged_links = set()
-        if use_mirrors:
-            self.mirror_urls = self._get_mirror_urls(mirrors, main_mirror_url)
-            logger.info('Using PyPI mirrors: %s' % ', '.join(self.mirror_urls))
-        else:
-            self.mirror_urls = []
-
-    def add_dependency_links(self, links):
-        ## FIXME: this shouldn't be global list this, it should only
-        ## apply to requirements of the package that specifies the
-        ## dependency_links value
-        ## FIXME: also, we should track comes_from (i.e., use Link)
-        self.dependency_links.extend(links)
-
-    @staticmethod
-    def _sort_locations(locations):
-        """
-        Sort locations into "files" (archives) and "urls", and return
-        a pair of lists (files,urls)
-        """
-        files = []
-        urls = []
-
-        # puts the url for the given file path into the appropriate
-        # list
-        def sort_path(path):
-            url = path_to_url2(path)
-            if mimetypes.guess_type(url, strict=False)[0] == 'text/html':
-                urls.append(url)
-            else:
-                files.append(url)
-
-        for url in locations:
-            if url.startswith('file:'):
-                path = url_to_path(url)
-                if os.path.isdir(path):
-                    path = os.path.realpath(path)
-                    for item in os.listdir(path):
-                        sort_path(os.path.join(path, item))
-                elif os.path.isfile(path):
-                    sort_path(path)
-            else:
-                urls.append(url)
-        return files, urls
-
-    def find_requirement(self, req, upgrade):
-        url_name = req.url_name
-        # Only check main index if index URL is given:
-        main_index_url = None
-        if self.index_urls:
-            # Check that we have the url_name correctly spelled:
-            main_index_url = Link(posixpath.join(self.index_urls[0], url_name))
-            # This will also cache the page, so it's okay that we get it again later:
-            page = self._get_page(main_index_url, req)
-            if page is None:
-                url_name = self._find_url_name(Link(self.index_urls[0]), url_name, req) or req.url_name
-
-        # Combine index URLs with mirror URLs here to allow
-        # adding more index URLs from requirements files
-        all_index_urls = self.index_urls + self.mirror_urls
-
-        def mkurl_pypi_url(url):
-            loc = posixpath.join(url, url_name)
-            # For maximum compatibility with easy_install, ensure the path
-            # ends in a trailing slash.  Although this isn't in the spec
-            # (and PyPI can handle it without the slash) some other index
-            # implementations might break if they relied on easy_install's behavior.
-            if not loc.endswith('/'):
-                loc = loc + '/'
-            return loc
-        if url_name is not None:
-            locations = [
-                mkurl_pypi_url(url)
-                for url in all_index_urls] + self.find_links
-        else:
-            locations = list(self.find_links)
-        locations.extend(self.dependency_links)
-        for version in req.absolute_versions:
-            if url_name is not None and main_index_url is not None:
-                locations = [
-                    posixpath.join(main_index_url.url, version)] + locations
-
-        file_locations, url_locations = self._sort_locations(locations)
-
-        locations = [Link(url) for url in url_locations]
-        logger.debug('URLs to search for versions for %s:' % req)
-        for location in locations:
-            logger.debug('* %s' % location)
-        found_versions = []
-        found_versions.extend(
-            self._package_versions(
-                [Link(url, '-f') for url in self.find_links], req.name.lower()))
-        page_versions = []
-        for page in self._get_pages(locations, req):
-            logger.debug('Analyzing links from page %s' % page.url)
-            logger.indent += 2
-            try:
-                page_versions.extend(self._package_versions(page.links, req.name.lower()))
-            finally:
-                logger.indent -= 2
-        dependency_versions = list(self._package_versions(
-            [Link(url) for url in self.dependency_links], req.name.lower()))
-        if dependency_versions:
-            logger.info('dependency_links found: %s' % ', '.join([link.url for parsed, link, version in dependency_versions]))
-        file_versions = list(self._package_versions(
-                [Link(url) for url in file_locations], req.name.lower()))
-        if not found_versions and not page_versions and not dependency_versions and not file_versions:
-            logger.fatal('Could not find any downloads that satisfy the requirement %s' % req)
-            raise DistributionNotFound('No distributions at all found for %s' % req)
-        if req.satisfied_by is not None:
-            found_versions.append((req.satisfied_by.parsed_version, Inf, req.satisfied_by.version))
-        if file_versions:
-            file_versions.sort(reverse=True)
-            logger.info('Local files found: %s' % ', '.join([url_to_path(link.url) for parsed, link, version in file_versions]))
-            found_versions = file_versions + found_versions
-        all_versions = found_versions + page_versions + dependency_versions
-        applicable_versions = []
-        for (parsed_version, link, version) in all_versions:
-            if version not in req.req:
-                logger.info("Ignoring link %s, version %s doesn't match %s"
-                            % (link, version, ','.join([''.join(s) for s in req.req.specs])))
-                continue
-            applicable_versions.append((link, version))
-        applicable_versions = sorted(applicable_versions, key=lambda v: pkg_resources.parse_version(v[1]), reverse=True)
-        existing_applicable = bool([link for link, version in applicable_versions if link is Inf])
-        if not upgrade and existing_applicable:
-            if applicable_versions[0][1] is Inf:
-                logger.info('Existing installed version (%s) is most up-to-date and satisfies requirement'
-                            % req.satisfied_by.version)
-                raise BestVersionAlreadyInstalled
-            else:
-                logger.info('Existing installed version (%s) satisfies requirement (most up-to-date version is %s)'
-                            % (req.satisfied_by.version, applicable_versions[0][1]))
-            return None
-        if not applicable_versions:
-            logger.fatal('Could not find a version that satisfies the requirement %s (from versions: %s)'
-                         % (req, ', '.join([version for parsed_version, link, version in found_versions])))
-            raise DistributionNotFound('No distributions matching the version for %s' % req)
-        if applicable_versions[0][0] is Inf:
-            # We have an existing version, and its the best version
-            logger.info('Installed version (%s) is most up-to-date (past versions: %s)'
-                        % (req.satisfied_by.version, ', '.join([version for link, version in applicable_versions[1:]]) or 'none'))
-            raise BestVersionAlreadyInstalled
-        if len(applicable_versions) > 1:
-            logger.info('Using version %s (newest of versions: %s)' %
-                        (applicable_versions[0][1], ', '.join([version for link, version in applicable_versions])))
-        return applicable_versions[0][0]
-
-    def _find_url_name(self, index_url, url_name, req):
-        """Finds the true URL name of a package, when the given name isn't quite correct.
-        This is usually used to implement case-insensitivity."""
-        if not index_url.url.endswith('/'):
-            # Vaguely part of the PyPI API... weird but true.
-            ## FIXME: bad to modify this?
-            index_url.url += '/'
-        page = self._get_page(index_url, req)
-        if page is None:
-            logger.fatal('Cannot fetch index base URL %s' % index_url)
-            return
-        norm_name = normalize_name(req.url_name)
-        for link in page.links:
-            base = posixpath.basename(link.path.rstrip('/'))
-            if norm_name == normalize_name(base):
-                logger.notify('Real name of requirement %s is %s' % (url_name, base))
-                return base
-        return None
-
-    def _get_pages(self, locations, req):
-        """Yields (page, page_url) from the given locations, skipping
-        locations that have errors, and adding download/homepage links"""
-        pending_queue = Queue()
-        for location in locations:
-            pending_queue.put(location)
-        done = []
-        seen = set()
-        threads = []
-        for i in range(min(10, len(locations))):
-            t = threading.Thread(target=self._get_queued_page, args=(req, pending_queue, done, seen))
-            t.setDaemon(True)
-            threads.append(t)
-            t.start()
-        for t in threads:
-            t.join()
-        return done
-
-    _log_lock = threading.Lock()
-
-    def _get_queued_page(self, req, pending_queue, done, seen):
-        while 1:
-            try:
-                location = pending_queue.get(False)
-            except QueueEmpty:
-                return
-            if location in seen:
-                continue
-            seen.add(location)
-            page = self._get_page(location, req)
-            if page is None:
-                continue
-            done.append(page)
-            for link in page.rel_links():
-                pending_queue.put(link)
-
-    _egg_fragment_re = re.compile(r'#egg=([^&]*)')
-    _egg_info_re = re.compile(r'([a-z0-9_.]+)-([a-z0-9_.-]+)', re.I)
-    _py_version_re = re.compile(r'-py([123]\.?[0-9]?)$')
-
-    def _sort_links(self, links):
-        "Returns elements of links in order, non-egg links first, egg links second, while eliminating duplicates"
-        eggs, no_eggs = [], []
-        seen = set()
-        for link in links:
-            if link not in seen:
-                seen.add(link)
-                if link.egg_fragment:
-                    eggs.append(link)
-                else:
-                    no_eggs.append(link)
-        return no_eggs + eggs
-
-    def _package_versions(self, links, search_name):
-        for link in self._sort_links(links):
-            for v in self._link_package_versions(link, search_name):
-                yield v
-
-    def _link_package_versions(self, link, search_name):
-        """
-        Return an iterable of triples (pkg_resources_version_key,
-        link, python_version) that can be extracted from the given
-        link.
-
-        Meant to be overridden by subclasses, not called by clients.
-        """
-        if link.egg_fragment:
-            egg_info = link.egg_fragment
-        else:
-            egg_info, ext = link.splitext()
-            if not ext:
-                if link not in self.logged_links:
-                    logger.debug('Skipping link %s; not a file' % link)
-                    self.logged_links.add(link)
-                return []
-            if egg_info.endswith('.tar'):
-                # Special double-extension case:
-                egg_info = egg_info[:-4]
-                ext = '.tar' + ext
-            if ext not in ('.tar.gz', '.tar.bz2', '.tar', '.tgz', '.zip'):
-                if link not in self.logged_links:
-                    logger.debug('Skipping link %s; unknown archive format: %s' % (link, ext))
-                    self.logged_links.add(link)
-                return []
-            if "macosx10" in link.path and ext == '.zip':
-                if link not in self.logged_links:
-                    logger.debug('Skipping link %s; macosx10 one' % (link))
-                    self.logged_links.add(link)
-                return []
-        version = self._egg_info_matches(egg_info, search_name, link)
-        if version is None:
-            logger.debug('Skipping link %s; wrong project name (not %s)' % (link, search_name))
-            return []
-        match = self._py_version_re.search(version)
-        if match:
-            version = version[:match.start()]
-            py_version = match.group(1)
-            if py_version != sys.version[:3]:
-                logger.debug('Skipping %s because Python version is incorrect' % link)
-                return []
-        logger.debug('Found link %s, version: %s' % (link, version))
-        return [(pkg_resources.parse_version(version),
-               link,
-               version)]
-
-    def _egg_info_matches(self, egg_info, search_name, link):
-        match = self._egg_info_re.search(egg_info)
-        if not match:
-            logger.debug('Could not parse version from link: %s' % link)
-            return None
-        name = match.group(0).lower()
-        # To match the "safe" name that pkg_resources creates:
-        name = name.replace('_', '-')
-        if name.startswith(search_name.lower()):
-            return match.group(0)[len(search_name):].lstrip('-')
-        else:
-            return None
-
-    def _get_page(self, link, req):
-        return HTMLPage.get_page(link, req, cache=self.cache)
-
-    def _get_mirror_urls(self, mirrors=None, main_mirror_url=None):
-        """Retrieves a list of URLs from the main mirror DNS entry
-        unless a list of mirror URLs are passed.
-        """
-        if not mirrors:
-            mirrors = get_mirrors(main_mirror_url)
-            # Should this be made "less random"? E.g. netselect like?
-            random.shuffle(mirrors)
-
-        mirror_urls = set()
-        for mirror_url in mirrors:
-            # Make sure we have a valid URL
-            if not ("http://" or "https://" or "file://") in mirror_url:
-                mirror_url = "http://%s" % mirror_url
-            if not mirror_url.endswith("/simple"):
-                mirror_url = "%s/simple/" % mirror_url
-            mirror_urls.add(mirror_url)
-
-        return list(mirror_urls)
-
-
-class PageCache(object):
-    """Cache of HTML pages"""
-
-    failure_limit = 3
-
-    def __init__(self):
-        self._failures = {}
-        self._pages = {}
-        self._archives = {}
-
-    def too_many_failures(self, url):
-        return self._failures.get(url, 0) >= self.failure_limit
-
-    def get_page(self, url):
-        return self._pages.get(url)
-
-    def is_archive(self, url):
-        return self._archives.get(url, False)
-
-    def set_is_archive(self, url, value=True):
-        self._archives[url] = value
-
-    def add_page_failure(self, url, level):
-        self._failures[url] = self._failures.get(url, 0)+level
-
-    def add_page(self, urls, page):
-        for url in urls:
-            self._pages[url] = page
-
-
-class HTMLPage(object):
-    """Represents one page, along with its URL"""
-
-    ## FIXME: these regexes are horrible hacks:
-    _homepage_re = re.compile(r'<th>\s*home\s*page', re.I)
-    _download_re = re.compile(r'<th>\s*download\s+url', re.I)
-    ## These aren't so aweful:
-    _rel_re = re.compile("""<[^>]*\srel\s*=\s*['"]?([^'">]+)[^>]*>""", re.I)
-    _href_re = re.compile('href=(?:"([^"]*)"|\'([^\']*)\'|([^>\\s\\n]*))', re.I|re.S)
-    _base_re = re.compile(r"""<base\s+href\s*=\s*['"]?([^'">]+)""", re.I)
-
-    def __init__(self, content, url, headers=None):
-        self.content = content
-        self.url = url
-        self.headers = headers
-
-    def __str__(self):
-        return self.url
-
-    @classmethod
-    def get_page(cls, link, req, cache=None, skip_archives=True):
-        url = link.url
-        url = url.split('#', 1)[0]
-        if cache.too_many_failures(url):
-            return None
-
-        # Check for VCS schemes that do not support lookup as web pages.
-        from pip.vcs import VcsSupport
-        for scheme in VcsSupport.schemes:
-            if url.lower().startswith(scheme) and url[len(scheme)] in '+:':
-                logger.debug('Cannot look at %(scheme)s URL %(link)s' % locals())
-                return None
-
-        if cache is not None:
-            inst = cache.get_page(url)
-            if inst is not None:
-                return inst
-        try:
-            if skip_archives:
-                if cache is not None:
-                    if cache.is_archive(url):
-                        return None
-                filename = link.filename
-                for bad_ext in ['.tar', '.tar.gz', '.tar.bz2', '.tgz', '.zip']:
-                    if filename.endswith(bad_ext):
-                        content_type = cls._get_content_type(url)
-                        if content_type.lower().startswith('text/html'):
-                            break
-                        else:
-                            logger.debug('Skipping page %s because of Content-Type: %s' % (link, content_type))
-                            if cache is not None:
-                                cache.set_is_archive(url)
-                            return None
-            logger.debug('Getting page %s' % url)
-
-            # Tack index.html onto file:// URLs that point to directories
-            (scheme, netloc, path, params, query, fragment) = urlparse.urlparse(url)
-            if scheme == 'file' and os.path.isdir(url2pathname(path)):
-                # add trailing slash if not present so urljoin doesn't trim final segment
-                if not url.endswith('/'):
-                    url += '/'
-                url = urlparse.urljoin(url, 'index.html')
-                logger.debug(' file: URL is directory, getting %s' % url)
-
-            resp = urlopen(url)
-
-            real_url = geturl(resp)
-            headers = resp.info()
-            contents = resp.read()
-            encoding = headers.get('Content-Encoding', None)
-            #XXX need to handle exceptions and add testing for this
-            if encoding is not None:
-                if encoding == 'gzip':
-                    contents = gzip.GzipFile(fileobj=BytesIO(contents)).read()
-                if encoding == 'deflate':
-                    contents = zlib.decompress(contents)
-            inst = cls(u(contents), real_url, headers)
-        except (HTTPError, URLError, socket.timeout, socket.error, OSError, WindowsError):
-            e = sys.exc_info()[1]
-            desc = str(e)
-            if isinstance(e, socket.timeout):
-                log_meth = logger.info
-                level =1
-                desc = 'timed out'
-            elif isinstance(e, URLError):
-                log_meth = logger.info
-                if hasattr(e, 'reason') and isinstance(e.reason, socket.timeout):
-                    desc = 'timed out'
-                    level = 1
-                else:
-                    level = 2
-            elif isinstance(e, HTTPError) and e.code == 404:
-                ## FIXME: notify?
-                log_meth = logger.info
-                level = 2
-            else:
-                log_meth = logger.info
-                level = 1
-            log_meth('Could not fetch URL %s: %s' % (link, desc))
-            log_meth('Will skip URL %s when looking for download links for %s' % (link.url, req))
-            if cache is not None:
-                cache.add_page_failure(url, level)
-            return None
-        if cache is not None:
-            cache.add_page([url, real_url], inst)
-        return inst
-
-    @staticmethod
-    def _get_content_type(url):
-        """Get the Content-Type of the given url, using a HEAD request"""
-        scheme, netloc, path, query, fragment = urlparse.urlsplit(url)
-        if not scheme in ('http', 'https', 'ftp', 'ftps'):
-            ## FIXME: some warning or something?
-            ## assertion error?
-            return ''
-        req = Urllib2HeadRequest(url, headers={'Host': netloc})
-        resp = urlopen(req)
-        try:
-            if hasattr(resp, 'code') and resp.code != 200 and scheme not in ('ftp', 'ftps'):
-                ## FIXME: doesn't handle redirects
-                return ''
-            return resp.info().get('content-type', '')
-        finally:
-            resp.close()
-
-    @property
-    def base_url(self):
-        if not hasattr(self, "_base_url"):
-            match = self._base_re.search(self.content)
-            if match:
-                self._base_url = match.group(1)
-            else:
-                self._base_url = self.url
-        return self._base_url
-
-    @property
-    def links(self):
-        """Yields all links in the page"""
-        for match in self._href_re.finditer(self.content):
-            url = match.group(1) or match.group(2) or match.group(3)
-            url = self.clean_link(urlparse.urljoin(self.base_url, url))
-            yield Link(url, self)
-
-    def rel_links(self):
-        for url in self.explicit_rel_links():
-            yield url
-        for url in self.scraped_rel_links():
-            yield url
-
-    def explicit_rel_links(self, rels=('homepage', 'download')):
-        """Yields all links with the given relations"""
-        for match in self._rel_re.finditer(self.content):
-            found_rels = match.group(1).lower().split()
-            for rel in rels:
-                if rel in found_rels:
-                    break
-            else:
-                continue
-            match = self._href_re.search(match.group(0))
-            if not match:
-                continue
-            url = match.group(1) or match.group(2) or match.group(3)
-            url = self.clean_link(urlparse.urljoin(self.base_url, url))
-            yield Link(url, self)
-
-    def scraped_rel_links(self):
-        for regex in (self._homepage_re, self._download_re):
-            match = regex.search(self.content)
-            if not match:
-                continue
-            href_match = self._href_re.search(self.content, pos=match.end())
-            if not href_match:
-                continue
-            url = href_match.group(1) or href_match.group(2) or href_match.group(3)
-            if not url:
-                continue
-            url = self.clean_link(urlparse.urljoin(self.base_url, url))
-            yield Link(url, self)
-
-    _clean_re = re.compile(r'[^a-z0-9$&+,/:;=?@.#%_\\|-]', re.I)
-
-    def clean_link(self, url):
-        """Makes sure a link is fully encoded.  That is, if a ' ' shows up in
-        the link, it will be rewritten to %20 (while not over-quoting
-        % or other characters)."""
-        return self._clean_re.sub(
-            lambda match: '%%%2x' % ord(match.group(0)), url)
-
-
-class Link(object):
-
-    def __init__(self, url, comes_from=None):
-        self.url = url
-        self.comes_from = comes_from
-
-    def __str__(self):
-        if self.comes_from:
-            return '%s (from %s)' % (self.url, self.comes_from)
-        else:
-            return self.url
-
-    def __repr__(self):
-        return '<Link %s>' % self
-
-    def __eq__(self, other):
-        return self.url == other.url
-
-    def __hash__(self):
-        return hash(self.url)
-
-    @property
-    def filename(self):
-        url = self.url_fragment
-        name = posixpath.basename(url)
-        assert name, ('URL %r produced no filename' % url)
-        return name
-
-    @property
-    def scheme(self):
-        return urlparse.urlsplit(self.url)[0]
-
-    @property
-    def path(self):
-        return urlparse.urlsplit(self.url)[2]
-
-    def splitext(self):
-        return splitext(posixpath.basename(self.path.rstrip('/')))
-
-    @property
-    def url_fragment(self):
-        url = self.url
-        url = url.split('#', 1)[0]
-        url = url.split('?', 1)[0]
-        url = url.rstrip('/')
-        return url
-
-    _egg_fragment_re = re.compile(r'#egg=([^&]*)')
-
-    @property
-    def egg_fragment(self):
-        match = self._egg_fragment_re.search(self.url)
-        if not match:
-            return None
-        return match.group(1)
-
-    _md5_re = re.compile(r'md5=([a-f0-9]+)')
-
-    @property
-    def md5_hash(self):
-        match = self._md5_re.search(self.url)
-        if match:
-            return match.group(1)
-        return None
-
-    @property
-    def show_url(self):
-        return posixpath.basename(self.url.split('#', 1)[0].split('?', 1)[0])
-
-
-def get_requirement_from_url(url):
-    """Get a requirement from the URL, if possible.  This looks for #egg
-    in the URL"""
-    link = Link(url)
-    egg_info = link.egg_fragment
-    if not egg_info:
-        egg_info = splitext(link.filename)[0]
-    return package_to_requirement(egg_info)
-
-
-def package_to_requirement(package_name):
-    """Translate a name like Foo-1.2 to Foo==1.3"""
-    match = re.search(r'^(.*?)-(dev|\d.*)', package_name)
-    if match:
-        name = match.group(1)
-        version = match.group(2)
-    else:
-        name = package_name
-        version = ''
-    if version:
-        return '%s==%s' % (name, version)
-    else:
-        return name
-
-
-def get_mirrors(hostname=None):
-    """Return the list of mirrors from the last record found on the DNS
-    entry::
-
-    >>> from pip.index import get_mirrors
-    >>> get_mirrors()
-    ['a.pypi.python.org', 'b.pypi.python.org', 'c.pypi.python.org',
-    'd.pypi.python.org']
-
-    Originally written for the distutils2 project by Alexis Metaireau.
-    """
-    if hostname is None:
-        hostname = DEFAULT_MIRROR_URL
-
-    # return the last mirror registered on PyPI.
-    try:
-        hostname = socket.gethostbyname_ex(hostname)[0]
-    except socket.gaierror:
-        return []
-    end_letter = hostname.split(".", 1)
-
-    # determine the list from the last one.
-    return ["%s.%s" % (s, end_letter[1]) for s in string_range(end_letter[0])]
-
-
-def string_range(last):
-    """Compute the range of string between "a" and last.
-
-    This works for simple "a to z" lists, but also for "a to zz" lists.
-    """
-    for k in range(len(last)):
-        for x in product(string.ascii_lowercase, repeat=k+1):
-            result = ''.join(x)
-            yield result
-            if result == last:
-                return
-
diff --git a/vendor/pip-1.2.1/pip/locations.py b/vendor/pip-1.2.1/pip/locations.py
deleted file mode 100644
index 34c6dbbe..00000000
--- a/vendor/pip-1.2.1/pip/locations.py
+++ /dev/null
@@ -1,52 +0,0 @@
-"""Locations where we look for configs, install stuff, etc"""
-
-import sys
-import os
-from pip.backwardcompat import get_python_lib
-
-
-def running_under_virtualenv():
-    """
-    Return True if we're running inside a virtualenv, False otherwise.
-
-    """
-    return hasattr(sys, 'real_prefix')
-
-
-if running_under_virtualenv():
-    ## FIXME: is build/ a good name?
-    build_prefix = os.path.join(sys.prefix, 'build')
-    src_prefix = os.path.join(sys.prefix, 'src')
-else:
-    ## FIXME: this isn't a very good default
-    build_prefix = os.path.join(os.getcwd(), 'build')
-    src_prefix = os.path.join(os.getcwd(), 'src')
-
-# under Mac OS X + virtualenv sys.prefix is not properly resolved
-# it is something like /path/to/python/bin/..
-build_prefix = os.path.abspath(build_prefix)
-src_prefix = os.path.abspath(src_prefix)
-
-# FIXME doesn't account for venv linked to global site-packages
-
-site_packages = get_python_lib()
-user_dir = os.path.expanduser('~')
-if sys.platform == 'win32':
-    bin_py = os.path.join(sys.prefix, 'Scripts')
-    # buildout uses 'bin' on Windows too?
-    if not os.path.exists(bin_py):
-        bin_py = os.path.join(sys.prefix, 'bin')
-    user_dir = os.environ.get('APPDATA', user_dir) # Use %APPDATA% for roaming
-    default_storage_dir = os.path.join(user_dir, 'pip')
-    default_config_file = os.path.join(default_storage_dir, 'pip.ini')
-    default_log_file = os.path.join(default_storage_dir, 'pip.log')
-else:
-    bin_py = os.path.join(sys.prefix, 'bin')
-    default_storage_dir = os.path.join(user_dir, '.pip')
-    default_config_file = os.path.join(default_storage_dir, 'pip.conf')
-    default_log_file = os.path.join(default_storage_dir, 'pip.log')
-    # Forcing to use /usr/local/bin for standard Mac OS X framework installs
-    # Also log to ~/Library/Logs/ for use with the Console.app log viewer
-    if sys.platform[:6] == 'darwin' and sys.prefix[:16] == '/System/Library/':
-        bin_py = '/usr/local/bin'
-        default_log_file = os.path.join(user_dir, 'Library/Logs/pip.log')
diff --git a/vendor/pip-1.2.1/pip/log.py b/vendor/pip-1.2.1/pip/log.py
deleted file mode 100644
index 63541a1c..00000000
--- a/vendor/pip-1.2.1/pip/log.py
+++ /dev/null
@@ -1,188 +0,0 @@
-"""Logging
-"""
-
-import sys
-import logging
-
-import pip.backwardcompat
-
-
-class Logger(object):
-
-    """
-    Logging object for use in command-line script.  Allows ranges of
-    levels, to avoid some redundancy of displayed information.
-    """
-
-    VERBOSE_DEBUG = logging.DEBUG-1
-    DEBUG = logging.DEBUG
-    INFO = logging.INFO
-    NOTIFY = (logging.INFO+logging.WARN)/2
-    WARN = WARNING = logging.WARN
-    ERROR = logging.ERROR
-    FATAL = logging.FATAL
-
-    LEVELS = [VERBOSE_DEBUG, DEBUG, INFO, NOTIFY, WARN, ERROR, FATAL]
-
-    def __init__(self):
-        self.consumers = []
-        self.indent = 0
-        self.explicit_levels = False
-        self.in_progress = None
-        self.in_progress_hanging = False
-
-    def debug(self, msg, *args, **kw):
-        self.log(self.DEBUG, msg, *args, **kw)
-
-    def info(self, msg, *args, **kw):
-        self.log(self.INFO, msg, *args, **kw)
-
-    def notify(self, msg, *args, **kw):
-        self.log(self.NOTIFY, msg, *args, **kw)
-
-    def warn(self, msg, *args, **kw):
-        self.log(self.WARN, msg, *args, **kw)
-
-    def error(self, msg, *args, **kw):
-        self.log(self.WARN, msg, *args, **kw)
-
-    def fatal(self, msg, *args, **kw):
-        self.log(self.FATAL, msg, *args, **kw)
-
-    def log(self, level, msg, *args, **kw):
-        if args:
-            if kw:
-                raise TypeError(
-                    "You may give positional or keyword arguments, not both")
-        args = args or kw
-        rendered = None
-        for consumer_level, consumer in self.consumers:
-            if self.level_matches(level, consumer_level):
-                if (self.in_progress_hanging
-                    and consumer in (sys.stdout, sys.stderr)):
-                    self.in_progress_hanging = False
-                    sys.stdout.write('\n')
-                    sys.stdout.flush()
-                if rendered is None:
-                    if args:
-                        rendered = msg % args
-                    else:
-                        rendered = msg
-                    rendered = ' '*self.indent + rendered
-                    if self.explicit_levels:
-                        ## FIXME: should this be a name, not a level number?
-                        rendered = '%02i %s' % (level, rendered)
-                if hasattr(consumer, 'write'):
-                    rendered += '\n'
-                    pip.backwardcompat.fwrite(consumer, rendered)
-                else:
-                    consumer(rendered)
-
-    def _show_progress(self):
-        """Should we display download progress?"""
-        return (self.stdout_level_matches(self.NOTIFY) and sys.stdout.isatty())
-
-    def start_progress(self, msg):
-        assert not self.in_progress, (
-            "Tried to start_progress(%r) while in_progress %r"
-            % (msg, self.in_progress))
-        if self._show_progress():
-            sys.stdout.write(' '*self.indent + msg)
-            sys.stdout.flush()
-            self.in_progress_hanging = True
-        else:
-            self.in_progress_hanging = False
-        self.in_progress = msg
-        self.last_message = None
-
-    def end_progress(self, msg='done.'):
-        assert self.in_progress, (
-            "Tried to end_progress without start_progress")
-        if self._show_progress():
-            if not self.in_progress_hanging:
-                # Some message has been printed out since start_progress
-                sys.stdout.write('...' + self.in_progress + msg + '\n')
-                sys.stdout.flush()
-            else:
-                # These erase any messages shown with show_progress (besides .'s)
-                logger.show_progress('')
-                logger.show_progress('')
-                sys.stdout.write(msg + '\n')
-                sys.stdout.flush()
-        self.in_progress = None
-        self.in_progress_hanging = False
-
-    def show_progress(self, message=None):
-        """If we are in a progress scope, and no log messages have been
-        shown, write out another '.'"""
-        if self.in_progress_hanging:
-            if message is None:
-                sys.stdout.write('.')
-                sys.stdout.flush()
-            else:
-                if self.last_message:
-                    padding = ' ' * max(0, len(self.last_message)-len(message))
-                else:
-                    padding = ''
-                sys.stdout.write('\r%s%s%s%s' % (' '*self.indent, self.in_progress, message, padding))
-                sys.stdout.flush()
-                self.last_message = message
-
-    def stdout_level_matches(self, level):
-        """Returns true if a message at this level will go to stdout"""
-        return self.level_matches(level, self._stdout_level())
-
-    def _stdout_level(self):
-        """Returns the level that stdout runs at"""
-        for level, consumer in self.consumers:
-            if consumer is sys.stdout:
-                return level
-        return self.FATAL
-
-    def level_matches(self, level, consumer_level):
-        """
-        >>> l = Logger()
-        >>> l.level_matches(3, 4)
-        False
-        >>> l.level_matches(3, 2)
-        True
-        >>> l.level_matches(slice(None, 3), 3)
-        False
-        >>> l.level_matches(slice(None, 3), 2)
-        True
-        >>> l.level_matches(slice(1, 3), 1)
-        True
-        >>> l.level_matches(slice(2, 3), 1)
-        False
-        """
-        if isinstance(level, slice):
-            start, stop = level.start, level.stop
-            if start is not None and start > consumer_level:
-                return False
-            if stop is not None or stop <= consumer_level:
-                return False
-            return True
-        else:
-            return level >= consumer_level
-
-    @classmethod
-    def level_for_integer(cls, level):
-        levels = cls.LEVELS
-        if level < 0:
-            return levels[0]
-        if level >= len(levels):
-            return levels[-1]
-        return levels[level]
-
-    def move_stdout_to_stderr(self):
-        to_remove = []
-        to_add = []
-        for consumer_level, consumer in self.consumers:
-            if consumer == sys.stdout:
-                to_remove.append((consumer_level, consumer))
-                to_add.append((consumer_level, sys.stderr))
-        for item in to_remove:
-            self.consumers.remove(item)
-        self.consumers.extend(to_add)
-
-logger = Logger()
diff --git a/vendor/pip-1.2.1/pip/req.py b/vendor/pip-1.2.1/pip/req.py
deleted file mode 100644
index a1a69599..00000000
--- a/vendor/pip-1.2.1/pip/req.py
+++ /dev/null
@@ -1,1517 +0,0 @@
-import sys
-import os
-import shutil
-import re
-import zipfile
-import pkg_resources
-import tempfile
-from pip.locations import bin_py, running_under_virtualenv
-from pip.exceptions import (InstallationError, UninstallationError,
-                            BestVersionAlreadyInstalled)
-from pip.vcs import vcs
-from pip.log import logger
-from pip.util import display_path, rmtree
-from pip.util import ask, ask_path_exists, backup_dir
-from pip.util import is_installable_dir, is_local, dist_is_local
-from pip.util import renames, normalize_path, egg_link_path
-from pip.util import make_path_relative
-from pip import call_subprocess
-from pip.backwardcompat import (any, copytree, urlparse, urllib,
-                                ConfigParser, string_types, HTTPError,
-                                FeedParser, get_python_version,
-                                b)
-from pip.index import Link
-from pip.locations import build_prefix
-from pip.download import (get_file_content, is_url, url_to_path,
-                          path_to_url, is_archive_file,
-                          unpack_vcs_link, is_vcs_url, is_file_url,
-                          unpack_file_url, unpack_http_url)
-
-
-PIP_DELETE_MARKER_FILENAME = 'pip-delete-this-directory.txt'
-
-
-class InstallRequirement(object):
-
-    def __init__(self, req, comes_from, source_dir=None, editable=False,
-                 url=None, update=True):
-        self.extras = ()
-        if isinstance(req, string_types):
-            req = pkg_resources.Requirement.parse(req)
-            self.extras = req.extras
-        self.req = req
-        self.comes_from = comes_from
-        self.source_dir = source_dir
-        self.editable = editable
-        self.url = url
-        self._egg_info_path = None
-        # This holds the pkg_resources.Distribution object if this requirement
-        # is already available:
-        self.satisfied_by = None
-        # This hold the pkg_resources.Distribution object if this requirement
-        # conflicts with another installed distribution:
-        self.conflicts_with = None
-        self._temp_build_dir = None
-        self._is_bundle = None
-        # True if the editable should be updated:
-        self.update = update
-        # Set to True after successful installation
-        self.install_succeeded = None
-        # UninstallPathSet of uninstalled distribution (for possible rollback)
-        self.uninstalled = None
-
-    @classmethod
-    def from_editable(cls, editable_req, comes_from=None, default_vcs=None):
-        name, url = parse_editable(editable_req, default_vcs)
-        if url.startswith('file:'):
-            source_dir = url_to_path(url)
-        else:
-            source_dir = None
-        return cls(name, comes_from, source_dir=source_dir, editable=True, url=url)
-
-    @classmethod
-    def from_line(cls, name, comes_from=None):
-        """Creates an InstallRequirement from a name, which might be a
-        requirement, directory containing 'setup.py', filename, or URL.
-        """
-        url = None
-        name = name.strip()
-        req = None
-        path = os.path.normpath(os.path.abspath(name))
-        link = None
-
-        if is_url(name):
-            link = Link(name)
-        elif os.path.isdir(path) and (os.path.sep in name or name.startswith('.')):
-            if not is_installable_dir(path):
-                raise InstallationError("Directory %r is not installable. File 'setup.py' not found.", name)
-            link = Link(path_to_url(name))
-        elif is_archive_file(path):
-            if not os.path.isfile(path):
-                logger.warn('Requirement %r looks like a filename, but the file does not exist', name)
-            link = Link(path_to_url(name))
-
-        # If the line has an egg= definition, but isn't editable, pull the requirement out.
-        # Otherwise, assume the name is the req for the non URL/path/archive case.
-        if link and req is None:
-            url = link.url_fragment
-            req = link.egg_fragment
-
-            # Handle relative file URLs
-            if link.scheme == 'file' and re.search(r'\.\./', url):
-                url = path_to_url(os.path.normpath(os.path.abspath(link.path)))
-
-        else:
-            req = name
-
-        return cls(req, comes_from, url=url)
-
-    def __str__(self):
-        if self.req:
-            s = str(self.req)
-            if self.url:
-                s += ' from %s' % self.url
-        else:
-            s = self.url
-        if self.satisfied_by is not None:
-            s += ' in %s' % display_path(self.satisfied_by.location)
-        if self.comes_from:
-            if isinstance(self.comes_from, string_types):
-                comes_from = self.comes_from
-            else:
-                comes_from = self.comes_from.from_path()
-            if comes_from:
-                s += ' (from %s)' % comes_from
-        return s
-
-    def from_path(self):
-        if self.req is None:
-            return None
-        s = str(self.req)
-        if self.comes_from:
-            if isinstance(self.comes_from, string_types):
-                comes_from = self.comes_from
-            else:
-                comes_from = self.comes_from.from_path()
-            if comes_from:
-                s += '->' + comes_from
-        return s
-
-    def build_location(self, build_dir, unpack=True):
-        if self._temp_build_dir is not None:
-            return self._temp_build_dir
-        if self.req is None:
-            self._temp_build_dir = tempfile.mkdtemp('-build', 'pip-')
-            self._ideal_build_dir = build_dir
-            return self._temp_build_dir
-        if self.editable:
-            name = self.name.lower()
-        else:
-            name = self.name
-        # FIXME: Is there a better place to create the build_dir? (hg and bzr need this)
-        if not os.path.exists(build_dir):
-            _make_build_dir(build_dir)
-        return os.path.join(build_dir, name)
-
-    def correct_build_location(self):
-        """If the build location was a temporary directory, this will move it
-        to a new more permanent location"""
-        if self.source_dir is not None:
-            return
-        assert self.req is not None
-        assert self._temp_build_dir
-        old_location = self._temp_build_dir
-        new_build_dir = self._ideal_build_dir
-        del self._ideal_build_dir
-        if self.editable:
-            name = self.name.lower()
-        else:
-            name = self.name
-        new_location = os.path.join(new_build_dir, name)
-        if not os.path.exists(new_build_dir):
-            logger.debug('Creating directory %s' % new_build_dir)
-            _make_build_dir(new_build_dir)
-        if os.path.exists(new_location):
-            raise InstallationError(
-                'A package already exists in %s; please remove it to continue'
-                % display_path(new_location))
-        logger.debug('Moving package %s from %s to new location %s'
-                     % (self, display_path(old_location), display_path(new_location)))
-        shutil.move(old_location, new_location)
-        self._temp_build_dir = new_location
-        self.source_dir = new_location
-        self._egg_info_path = None
-
-    @property
-    def name(self):
-        if self.req is None:
-            return None
-        return self.req.project_name
-
-    @property
-    def url_name(self):
-        if self.req is None:
-            return None
-        return urllib.quote(self.req.unsafe_name)
-
-    @property
-    def setup_py(self):
-        return os.path.join(self.source_dir, 'setup.py')
-
-    def run_egg_info(self, force_root_egg_info=False):
-        assert self.source_dir
-        if self.name:
-            logger.notify('Running setup.py egg_info for package %s' % self.name)
-        else:
-            logger.notify('Running setup.py egg_info for package from %s' % self.url)
-        logger.indent += 2
-        try:
-            script = self._run_setup_py
-            script = script.replace('__SETUP_PY__', repr(self.setup_py))
-            script = script.replace('__PKG_NAME__', repr(self.name))
-            # We can't put the .egg-info files at the root, because then the source code will be mistaken
-            # for an installed egg, causing problems
-            if self.editable or force_root_egg_info:
-                egg_base_option = []
-            else:
-                egg_info_dir = os.path.join(self.source_dir, 'pip-egg-info')
-                if not os.path.exists(egg_info_dir):
-                    os.makedirs(egg_info_dir)
-                egg_base_option = ['--egg-base', 'pip-egg-info']
-            call_subprocess(
-                [sys.executable, '-c', script, 'egg_info'] + egg_base_option,
-                cwd=self.source_dir, filter_stdout=self._filter_install, show_stdout=False,
-                command_level=logger.VERBOSE_DEBUG,
-                command_desc='python setup.py egg_info')
-        finally:
-            logger.indent -= 2
-        if not self.req:
-            self.req = pkg_resources.Requirement.parse(
-                "%(Name)s==%(Version)s" % self.pkg_info())
-            self.correct_build_location()
-
-    ## FIXME: This is a lame hack, entirely for PasteScript which has
-    ## a self-provided entry point that causes this awkwardness
-    _run_setup_py = """
-__file__ = __SETUP_PY__
-from setuptools.command import egg_info
-def replacement_run(self):
-    self.mkpath(self.egg_info)
-    installer = self.distribution.fetch_build_egg
-    for ep in egg_info.iter_entry_points('egg_info.writers'):
-        # require=False is the change we're making:
-        writer = ep.load(require=False)
-        if writer:
-            writer(self, ep.name, egg_info.os.path.join(self.egg_info,ep.name))
-    self.find_sources()
-egg_info.egg_info.run = replacement_run
-exec(compile(open(__file__).read().replace('\\r\\n', '\\n'), __file__, 'exec'))
-"""
-
-    def egg_info_data(self, filename):
-        if self.satisfied_by is not None:
-            if not self.satisfied_by.has_metadata(filename):
-                return None
-            return self.satisfied_by.get_metadata(filename)
-        assert self.source_dir
-        filename = self.egg_info_path(filename)
-        if not os.path.exists(filename):
-            return None
-        fp = open(filename, 'r')
-        data = fp.read()
-        fp.close()
-        return data
-
-    def egg_info_path(self, filename):
-        if self._egg_info_path is None:
-            if self.editable:
-                base = self.source_dir
-            else:
-                base = os.path.join(self.source_dir, 'pip-egg-info')
-            filenames = os.listdir(base)
-            if self.editable:
-                filenames = []
-                for root, dirs, files in os.walk(base):
-                    for dir in vcs.dirnames:
-                        if dir in dirs:
-                            dirs.remove(dir)
-                    for dir in dirs:
-                        # Don't search in anything that looks like a virtualenv environment
-                        if (os.path.exists(os.path.join(root, dir, 'bin', 'python'))
-                            or os.path.exists(os.path.join(root, dir, 'Scripts', 'Python.exe'))):
-                            dirs.remove(dir)
-                        # Also don't search through tests
-                        if dir == 'test' or dir == 'tests':
-                            dirs.remove(dir)
-                    filenames.extend([os.path.join(root, dir)
-                                     for dir in dirs])
-                filenames = [f for f in filenames if f.endswith('.egg-info')]
-
-            if not filenames:
-                raise InstallationError('No files/directores in %s (from %s)' % (base, filename))
-            assert filenames, "No files/directories in %s (from %s)" % (base, filename)
-
-            # if we have more than one match, we pick the toplevel one.  This can
-            # easily be the case if there is a dist folder which contains an
-            # extracted tarball for testing purposes.
-            if len(filenames) > 1:
-                filenames.sort(key=lambda x: x.count(os.path.sep) +
-                                             (os.path.altsep and
-                                              x.count(os.path.altsep) or 0))
-            self._egg_info_path = os.path.join(base, filenames[0])
-        return os.path.join(self._egg_info_path, filename)
-
-    def egg_info_lines(self, filename):
-        data = self.egg_info_data(filename)
-        if not data:
-            return []
-        result = []
-        for line in data.splitlines():
-            line = line.strip()
-            if not line or line.startswith('#'):
-                continue
-            result.append(line)
-        return result
-
-    def pkg_info(self):
-        p = FeedParser()
-        data = self.egg_info_data('PKG-INFO')
-        if not data:
-            logger.warn('No PKG-INFO file found in %s' % display_path(self.egg_info_path('PKG-INFO')))
-        p.feed(data or '')
-        return p.close()
-
-    @property
-    def dependency_links(self):
-        return self.egg_info_lines('dependency_links.txt')
-
-    _requirements_section_re = re.compile(r'\[(.*?)\]')
-
-    def requirements(self, extras=()):
-        in_extra = None
-        for line in self.egg_info_lines('requires.txt'):
-            match = self._requirements_section_re.match(line.lower())
-            if match:
-                in_extra = match.group(1)
-                continue
-            if in_extra and in_extra not in extras:
-                logger.debug('skipping extra %s' % in_extra)
-                # Skip requirement for an extra we aren't requiring
-                continue
-            yield line
-
-    @property
-    def absolute_versions(self):
-        for qualifier, version in self.req.specs:
-            if qualifier == '==':
-                yield version
-
-    @property
-    def installed_version(self):
-        return self.pkg_info()['version']
-
-    def assert_source_matches_version(self):
-        assert self.source_dir
-        version = self.installed_version
-        if version not in self.req:
-            logger.warn('Requested %s, but installing version %s' % (self, self.installed_version))
-        else:
-            logger.debug('Source in %s has version %s, which satisfies requirement %s'
-                         % (display_path(self.source_dir), version, self))
-
-    def update_editable(self, obtain=True):
-        if not self.url:
-            logger.info("Cannot update repository at %s; repository location is unknown" % self.source_dir)
-            return
-        assert self.editable
-        assert self.source_dir
-        if self.url.startswith('file:'):
-            # Static paths don't get updated
-            return
-        assert '+' in self.url, "bad url: %r" % self.url
-        if not self.update:
-            return
-        vc_type, url = self.url.split('+', 1)
-        backend = vcs.get_backend(vc_type)
-        if backend:
-            vcs_backend = backend(self.url)
-            if obtain:
-                vcs_backend.obtain(self.source_dir)
-            else:
-                vcs_backend.export(self.source_dir)
-        else:
-            assert 0, (
-                'Unexpected version control type (in %s): %s'
-                % (self.url, vc_type))
-
-    def uninstall(self, auto_confirm=False):
-        """
-        Uninstall the distribution currently satisfying this requirement.
-
-        Prompts before removing or modifying files unless
-        ``auto_confirm`` is True.
-
-        Refuses to delete or modify files outside of ``sys.prefix`` -
-        thus uninstallation within a virtual environment can only
-        modify that virtual environment, even if the virtualenv is
-        linked to global site-packages.
-
-        """
-        if not self.check_if_exists():
-            raise UninstallationError("Cannot uninstall requirement %s, not installed" % (self.name,))
-        dist = self.satisfied_by or self.conflicts_with
-
-        paths_to_remove = UninstallPathSet(dist)
-
-        pip_egg_info_path = os.path.join(dist.location,
-                                         dist.egg_name()) + '.egg-info'
-        # workaround for http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=618367
-        debian_egg_info_path = pip_egg_info_path.replace(
-            '-py%s' % pkg_resources.PY_MAJOR, '')
-        easy_install_egg = dist.egg_name() + '.egg'
-        develop_egg_link = egg_link_path(dist)
-
-        pip_egg_info_exists = os.path.exists(pip_egg_info_path)
-        debian_egg_info_exists = os.path.exists(debian_egg_info_path)
-        if pip_egg_info_exists or debian_egg_info_exists:
-            # package installed by pip
-            if pip_egg_info_exists:
-                egg_info_path = pip_egg_info_path
-            else:
-                egg_info_path = debian_egg_info_path
-            paths_to_remove.add(egg_info_path)
-            if dist.has_metadata('installed-files.txt'):
-                for installed_file in dist.get_metadata('installed-files.txt').splitlines():
-                    path = os.path.normpath(os.path.join(egg_info_path, installed_file))
-                    paths_to_remove.add(path)
-            if dist.has_metadata('top_level.txt'):
-                if dist.has_metadata('namespace_packages.txt'):
-                    namespaces = dist.get_metadata('namespace_packages.txt')
-                else:
-                    namespaces = []
-                for top_level_pkg in [p for p
-                                      in dist.get_metadata('top_level.txt').splitlines()
-                                      if p and p not in namespaces]:
-                    path = os.path.join(dist.location, top_level_pkg)
-                    paths_to_remove.add(path)
-                    paths_to_remove.add(path + '.py')
-                    paths_to_remove.add(path + '.pyc')
-
-        elif dist.location.endswith(easy_install_egg):
-            # package installed by easy_install
-            paths_to_remove.add(dist.location)
-            easy_install_pth = os.path.join(os.path.dirname(dist.location),
-                                            'easy-install.pth')
-            paths_to_remove.add_pth(easy_install_pth, './' + easy_install_egg)
-
-        elif os.path.isfile(develop_egg_link):
-            # develop egg
-            fh = open(develop_egg_link, 'r')
-            link_pointer = os.path.normcase(fh.readline().strip())
-            fh.close()
-            assert (link_pointer == dist.location), 'Egg-link %s does not match installed location of %s (at %s)' % (link_pointer, self.name, dist.location)
-            paths_to_remove.add(develop_egg_link)
-            easy_install_pth = os.path.join(os.path.dirname(develop_egg_link),
-                                            'easy-install.pth')
-            paths_to_remove.add_pth(easy_install_pth, dist.location)
-
-        # find distutils scripts= scripts
-        if dist.has_metadata('scripts') and dist.metadata_isdir('scripts'):
-            for script in dist.metadata_listdir('scripts'):
-                paths_to_remove.add(os.path.join(bin_py, script))
-                if sys.platform == 'win32':
-                    paths_to_remove.add(os.path.join(bin_py, script) + '.bat')
-
-        # find console_scripts
-        if dist.has_metadata('entry_points.txt'):
-            config = ConfigParser.SafeConfigParser()
-            config.readfp(FakeFile(dist.get_metadata_lines('entry_points.txt')))
-            if config.has_section('console_scripts'):
-                for name, value in config.items('console_scripts'):
-                    paths_to_remove.add(os.path.join(bin_py, name))
-                    if sys.platform == 'win32':
-                        paths_to_remove.add(os.path.join(bin_py, name) + '.exe')
-                        paths_to_remove.add(os.path.join(bin_py, name) + '.exe.manifest')
-                        paths_to_remove.add(os.path.join(bin_py, name) + '-script.py')
-
-        paths_to_remove.remove(auto_confirm)
-        self.uninstalled = paths_to_remove
-
-    def rollback_uninstall(self):
-        if self.uninstalled:
-            self.uninstalled.rollback()
-        else:
-            logger.error("Can't rollback %s, nothing uninstalled."
-                         % (self.project_name,))
-
-    def commit_uninstall(self):
-        if self.uninstalled:
-            self.uninstalled.commit()
-        else:
-            logger.error("Can't commit %s, nothing uninstalled."
-                         % (self.project_name,))
-
-    def archive(self, build_dir):
-        assert self.source_dir
-        create_archive = True
-        archive_name = '%s-%s.zip' % (self.name, self.installed_version)
-        archive_path = os.path.join(build_dir, archive_name)
-        if os.path.exists(archive_path):
-            response = ask_path_exists(
-                'The file %s exists. (i)gnore, (w)ipe, (b)ackup ' %
-                display_path(archive_path), ('i', 'w', 'b'))
-            if response == 'i':
-                create_archive = False
-            elif response == 'w':
-                logger.warn('Deleting %s' % display_path(archive_path))
-                os.remove(archive_path)
-            elif response == 'b':
-                dest_file = backup_dir(archive_path)
-                logger.warn('Backing up %s to %s'
-                            % (display_path(archive_path), display_path(dest_file)))
-                shutil.move(archive_path, dest_file)
-        if create_archive:
-            zip = zipfile.ZipFile(archive_path, 'w', zipfile.ZIP_DEFLATED)
-            dir = os.path.normcase(os.path.abspath(self.source_dir))
-            for dirpath, dirnames, filenames in os.walk(dir):
-                if 'pip-egg-info' in dirnames:
-                    dirnames.remove('pip-egg-info')
-                for dirname in dirnames:
-                    dirname = os.path.join(dirpath, dirname)
-                    name = self._clean_zip_name(dirname, dir)
-                    zipdir = zipfile.ZipInfo(self.name + '/' + name + '/')
-                    zipdir.external_attr = 0x1ED << 16 # 0o755
-                    zip.writestr(zipdir, '')
-                for filename in filenames:
-                    if filename == PIP_DELETE_MARKER_FILENAME:
-                        continue
-                    filename = os.path.join(dirpath, filename)
-                    name = self._clean_zip_name(filename, dir)
-                    zip.write(filename, self.name + '/' + name)
-            zip.close()
-            logger.indent -= 2
-            logger.notify('Saved %s' % display_path(archive_path))
-
-    def _clean_zip_name(self, name, prefix):
-        assert name.startswith(prefix+os.path.sep), (
-            "name %r doesn't start with prefix %r" % (name, prefix))
-        name = name[len(prefix)+1:]
-        name = name.replace(os.path.sep, '/')
-        return name
-
-    def install(self, install_options, global_options=()):
-        if self.editable:
-            self.install_editable(install_options, global_options)
-            return
-        temp_location = tempfile.mkdtemp('-record', 'pip-')
-        record_filename = os.path.join(temp_location, 'install-record.txt')
-        try:
-            install_args = [
-                sys.executable, '-c',
-                "import setuptools;__file__=%r;"\
-                "exec(compile(open(__file__).read().replace('\\r\\n', '\\n'), __file__, 'exec'))" % self.setup_py] +\
-                list(global_options) + [
-                'install',
-                '--single-version-externally-managed',
-                '--record', record_filename]
-
-            if running_under_virtualenv():
-                ## FIXME: I'm not sure if this is a reasonable location; probably not
-                ## but we can't put it in the default location, as that is a virtualenv symlink that isn't writable
-                install_args += ['--install-headers',
-                                 os.path.join(sys.prefix, 'include', 'site',
-                                              'python' + get_python_version())]
-            logger.notify('Running setup.py install for %s' % self.name)
-            logger.indent += 2
-            try:
-                call_subprocess(install_args + install_options,
-                    cwd=self.source_dir, filter_stdout=self._filter_install, show_stdout=False)
-            finally:
-                logger.indent -= 2
-            if not os.path.exists(record_filename):
-                logger.notify('Record file %s not found' % record_filename)
-                return
-            self.install_succeeded = True
-            f = open(record_filename)
-            for line in f:
-                line = line.strip()
-                if line.endswith('.egg-info'):
-                    egg_info_dir = line
-                    break
-            else:
-                logger.warn('Could not find .egg-info directory in install record for %s' % self)
-                ## FIXME: put the record somewhere
-                ## FIXME: should this be an error?
-                return
-            f.close()
-            new_lines = []
-            f = open(record_filename)
-            for line in f:
-                filename = line.strip()
-                if os.path.isdir(filename):
-                    filename += os.path.sep
-                new_lines.append(make_path_relative(filename, egg_info_dir))
-            f.close()
-            f = open(os.path.join(egg_info_dir, 'installed-files.txt'), 'w')
-            f.write('\n'.join(new_lines)+'\n')
-            f.close()
-        finally:
-            if os.path.exists(record_filename):
-                os.remove(record_filename)
-            os.rmdir(temp_location)
-
-    def remove_temporary_source(self):
-        """Remove the source files from this requirement, if they are marked
-        for deletion"""
-        if self.is_bundle or os.path.exists(self.delete_marker_filename):
-            logger.info('Removing source in %s' % self.source_dir)
-            if self.source_dir:
-                rmtree(self.source_dir)
-            self.source_dir = None
-        if self._temp_build_dir and os.path.exists(self._temp_build_dir):
-            rmtree(self._temp_build_dir)
-        self._temp_build_dir = None
-
-    def install_editable(self, install_options, global_options=()):
-        logger.notify('Running setup.py develop for %s' % self.name)
-        logger.indent += 2
-        try:
-            ## FIXME: should we do --install-headers here too?
-            call_subprocess(
-                [sys.executable, '-c',
-                 "import setuptools; __file__=%r; exec(compile(open(__file__).read().replace('\\r\\n', '\\n'), __file__, 'exec'))" % self.setup_py]
-                + list(global_options) + ['develop', '--no-deps'] + list(install_options),
-
-                cwd=self.source_dir, filter_stdout=self._filter_install,
-                show_stdout=False)
-        finally:
-            logger.indent -= 2
-        self.install_succeeded = True
-
-    def _filter_install(self, line):
-        level = logger.NOTIFY
-        for regex in [r'^running .*', r'^writing .*', '^creating .*', '^[Cc]opying .*',
-                      r'^reading .*', r"^removing .*\.egg-info' \(and everything under it\)$",
-                      r'^byte-compiling ',
-                      # Not sure what this warning is, but it seems harmless:
-                      r"^warning: manifest_maker: standard file '-c' not found$"]:
-            if re.search(regex, line.strip()):
-                level = logger.INFO
-                break
-        return (level, line)
-
-    def check_if_exists(self):
-        """Find an installed distribution that satisfies or conflicts
-        with this requirement, and set self.satisfied_by or
-        self.conflicts_with appropriately."""
-        if self.req is None:
-            return False
-        try:
-            self.satisfied_by = pkg_resources.get_distribution(self.req)
-        except pkg_resources.DistributionNotFound:
-            return False
-        except pkg_resources.VersionConflict:
-            self.conflicts_with = pkg_resources.get_distribution(self.req.project_name)
-        return True
-
-    @property
-    def is_bundle(self):
-        if self._is_bundle is not None:
-            return self._is_bundle
-        base = self._temp_build_dir
-        if not base:
-            ## FIXME: this doesn't seem right:
-            return False
-        self._is_bundle = (os.path.exists(os.path.join(base, 'pip-manifest.txt'))
-                           or os.path.exists(os.path.join(base, 'pyinstall-manifest.txt')))
-        return self._is_bundle
-
-    def bundle_requirements(self):
-        for dest_dir in self._bundle_editable_dirs:
-            package = os.path.basename(dest_dir)
-            ## FIXME: svnism:
-            for vcs_backend in vcs.backends:
-                url = rev = None
-                vcs_bundle_file = os.path.join(
-                    dest_dir, vcs_backend.bundle_file)
-                if os.path.exists(vcs_bundle_file):
-                    vc_type = vcs_backend.name
-                    fp = open(vcs_bundle_file)
-                    content = fp.read()
-                    fp.close()
-                    url, rev = vcs_backend().parse_vcs_bundle_file(content)
-                    break
-            if url:
-                url = '%s+%s@%s' % (vc_type, url, rev)
-            else:
-                url = None
-            yield InstallRequirement(
-                package, self, editable=True, url=url,
-                update=False, source_dir=dest_dir)
-        for dest_dir in self._bundle_build_dirs:
-            package = os.path.basename(dest_dir)
-            yield InstallRequirement(
-                package, self,
-                source_dir=dest_dir)
-
-    def move_bundle_files(self, dest_build_dir, dest_src_dir):
-        base = self._temp_build_dir
-        assert base
-        src_dir = os.path.join(base, 'src')
-        build_dir = os.path.join(base, 'build')
-        bundle_build_dirs = []
-        bundle_editable_dirs = []
-        for source_dir, dest_dir, dir_collection in [
-            (src_dir, dest_src_dir, bundle_editable_dirs),
-            (build_dir, dest_build_dir, bundle_build_dirs)]:
-            if os.path.exists(source_dir):
-                for dirname in os.listdir(source_dir):
-                    dest = os.path.join(dest_dir, dirname)
-                    dir_collection.append(dest)
-                    if os.path.exists(dest):
-                        logger.warn('The directory %s (containing package %s) already exists; cannot move source from bundle %s'
-                                    % (dest, dirname, self))
-                        continue
-                    if not os.path.exists(dest_dir):
-                        logger.info('Creating directory %s' % dest_dir)
-                        os.makedirs(dest_dir)
-                    shutil.move(os.path.join(source_dir, dirname), dest)
-                if not os.listdir(source_dir):
-                    os.rmdir(source_dir)
-        self._temp_build_dir = None
-        self._bundle_build_dirs = bundle_build_dirs
-        self._bundle_editable_dirs = bundle_editable_dirs
-
-    @property
-    def delete_marker_filename(self):
-        assert self.source_dir
-        return os.path.join(self.source_dir, PIP_DELETE_MARKER_FILENAME)
-
-
-DELETE_MARKER_MESSAGE = '''\
-This file is placed here by pip to indicate the source was put
-here by pip.
-
-Once this package is successfully installed this source code will be
-deleted (unless you remove this file).
-'''
-
-
-class Requirements(object):
-
-    def __init__(self):
-        self._keys = []
-        self._dict = {}
-
-    def keys(self):
-        return self._keys
-
-    def values(self):
-        values_list = []
-        for key in self._keys:
-            values_list.append(self._dict[key])
-        return values_list
-
-    def __contains__(self, item):
-        return item in self._keys
-
-    def __setitem__(self, key, value):
-        if key not in self._keys:
-            self._keys.append(key)
-        self._dict[key] = value
-
-    def __getitem__(self, key):
-        return self._dict[key]
-
-    def __repr__(self):
-        values = ['%s: %s' % (repr(k), repr(self[k])) for k in self.keys()]
-        return 'Requirements({%s})' % ', '.join(values)
-
-
-class RequirementSet(object):
-
-    def __init__(self, build_dir, src_dir, download_dir, download_cache=None,
-                 upgrade=False, ignore_installed=False,
-                 ignore_dependencies=False, force_reinstall=False):
-        self.build_dir = build_dir
-        self.src_dir = src_dir
-        self.download_dir = download_dir
-        self.download_cache = download_cache
-        self.upgrade = upgrade
-        self.ignore_installed = ignore_installed
-        self.force_reinstall = force_reinstall
-        self.requirements = Requirements()
-        # Mapping of alias: real_name
-        self.requirement_aliases = {}
-        self.unnamed_requirements = []
-        self.ignore_dependencies = ignore_dependencies
-        self.successfully_downloaded = []
-        self.successfully_installed = []
-        self.reqs_to_cleanup = []
-
-    def __str__(self):
-        reqs = [req for req in self.requirements.values()
-                if not req.comes_from]
-        reqs.sort(key=lambda req: req.name.lower())
-        return ' '.join([str(req.req) for req in reqs])
-
-    def add_requirement(self, install_req):
-        name = install_req.name
-        if not name:
-            self.unnamed_requirements.append(install_req)
-        else:
-            if self.has_requirement(name):
-                raise InstallationError(
-                    'Double requirement given: %s (aready in %s, name=%r)'
-                    % (install_req, self.get_requirement(name), name))
-            self.requirements[name] = install_req
-            ## FIXME: what about other normalizations?  E.g., _ vs. -?
-            if name.lower() != name:
-                self.requirement_aliases[name.lower()] = name
-
-    def has_requirement(self, project_name):
-        for name in project_name, project_name.lower():
-            if name in self.requirements or name in self.requirement_aliases:
-                return True
-        return False
-
-    @property
-    def has_requirements(self):
-        return list(self.requirements.values()) or self.unnamed_requirements
-
-    @property
-    def has_editables(self):
-        if any(req.editable for req in self.requirements.values()):
-            return True
-        if any(req.editable for req in self.unnamed_requirements):
-            return True
-        return False
-
-    @property
-    def is_download(self):
-        if self.download_dir:
-            self.download_dir = os.path.expanduser(self.download_dir)
-            if os.path.exists(self.download_dir):
-                return True
-            else:
-                logger.fatal('Could not find download directory')
-                raise InstallationError(
-                    "Could not find or access download directory '%s'"
-                    % display_path(self.download_dir))
-        return False
-
-    def get_requirement(self, project_name):
-        for name in project_name, project_name.lower():
-            if name in self.requirements:
-                return self.requirements[name]
-            if name in self.requirement_aliases:
-                return self.requirements[self.requirement_aliases[name]]
-        raise KeyError("No project with the name %r" % project_name)
-
-    def uninstall(self, auto_confirm=False):
-        for req in self.requirements.values():
-            req.uninstall(auto_confirm=auto_confirm)
-            req.commit_uninstall()
-
-    def locate_files(self):
-        ## FIXME: duplicates code from install_files; relevant code should
-        ##        probably be factored out into a separate method
-        unnamed = list(self.unnamed_requirements)
-        reqs = list(self.requirements.values())
-        while reqs or unnamed:
-            if unnamed:
-                req_to_install = unnamed.pop(0)
-            else:
-                req_to_install = reqs.pop(0)
-            install_needed = True
-            if not self.ignore_installed and not req_to_install.editable:
-                req_to_install.check_if_exists()
-                if req_to_install.satisfied_by:
-                    if self.upgrade:
-                        req_to_install.conflicts_with = req_to_install.satisfied_by
-                        req_to_install.satisfied_by = None
-                    else:
-                        install_needed = False
-                if req_to_install.satisfied_by:
-                    logger.notify('Requirement already satisfied '
-                                  '(use --upgrade to upgrade): %s'
-                                  % req_to_install)
-
-            if req_to_install.editable:
-                if req_to_install.source_dir is None:
-                    req_to_install.source_dir = req_to_install.build_location(self.src_dir)
-            elif install_needed:
-                req_to_install.source_dir = req_to_install.build_location(self.build_dir, not self.is_download)
-
-            if req_to_install.source_dir is not None and not os.path.isdir(req_to_install.source_dir):
-                raise InstallationError('Could not install requirement %s '
-                                       'because source folder %s does not exist '
-                                       '(perhaps --no-download was used without first running '
-                                       'an equivalent install with --no-install?)'
-                                       % (req_to_install, req_to_install.source_dir))
-
-    def prepare_files(self, finder, force_root_egg_info=False, bundle=False):
-        """Prepare process. Create temp directories, download and/or unpack files."""
-        unnamed = list(self.unnamed_requirements)
-        reqs = list(self.requirements.values())
-        while reqs or unnamed:
-            if unnamed:
-                req_to_install = unnamed.pop(0)
-            else:
-                req_to_install = reqs.pop(0)
-            install = True
-            best_installed = False
-            if not self.ignore_installed and not req_to_install.editable:
-                req_to_install.check_if_exists()
-                if req_to_install.satisfied_by:
-                    if self.upgrade:
-                        if not self.force_reinstall:
-                            try:
-                                url = finder.find_requirement(
-                                    req_to_install, self.upgrade)
-                            except BestVersionAlreadyInstalled:
-                                best_installed = True
-                                install = False
-                            else:
-                                # Avoid the need to call find_requirement again
-                                req_to_install.url = url.url
-
-                        if not best_installed:
-                            req_to_install.conflicts_with = req_to_install.satisfied_by
-                            req_to_install.satisfied_by = None
-                    else:
-                        install = False
-                if req_to_install.satisfied_by:
-                    if best_installed:
-                        logger.notify('Requirement already up-to-date: %s'
-                                      % req_to_install)
-                    else:
-                        logger.notify('Requirement already satisfied '
-                                      '(use --upgrade to upgrade): %s'
-                                      % req_to_install)
-            if req_to_install.editable:
-                logger.notify('Obtaining %s' % req_to_install)
-            elif install:
-                if req_to_install.url and req_to_install.url.lower().startswith('file:'):
-                    logger.notify('Unpacking %s' % display_path(url_to_path(req_to_install.url)))
-                else:
-                    logger.notify('Downloading/unpacking %s' % req_to_install)
-            logger.indent += 2
-            try:
-                is_bundle = False
-                if req_to_install.editable:
-                    if req_to_install.source_dir is None:
-                        location = req_to_install.build_location(self.src_dir)
-                        req_to_install.source_dir = location
-                    else:
-                        location = req_to_install.source_dir
-                    if not os.path.exists(self.build_dir):
-                        _make_build_dir(self.build_dir)
-                    req_to_install.update_editable(not self.is_download)
-                    if self.is_download:
-                        req_to_install.run_egg_info()
-                        req_to_install.archive(self.download_dir)
-                    else:
-                        req_to_install.run_egg_info()
-                elif install:
-                    ##@@ if filesystem packages are not marked
-                    ##editable in a req, a non deterministic error
-                    ##occurs when the script attempts to unpack the
-                    ##build directory
-
-                    location = req_to_install.build_location(self.build_dir, not self.is_download)
-                    ## FIXME: is the existance of the checkout good enough to use it?  I don't think so.
-                    unpack = True
-                    url = None
-                    if not os.path.exists(os.path.join(location, 'setup.py')):
-                        ## FIXME: this won't upgrade when there's an existing package unpacked in `location`
-                        if req_to_install.url is None:
-                            url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
-                        else:
-                            ## FIXME: should req_to_install.url already be a link?
-                            url = Link(req_to_install.url)
-                            assert url
-                        if url:
-                            try:
-                                self.unpack_url(url, location, self.is_download)
-                            except HTTPError:
-                                e = sys.exc_info()[1]
-                                logger.fatal('Could not install requirement %s because of error %s'
-                                             % (req_to_install, e))
-                                raise InstallationError(
-                                    'Could not install requirement %s because of HTTP error %s for URL %s'
-                                    % (req_to_install, e, url))
-                        else:
-                            unpack = False
-                    if unpack:
-                        is_bundle = req_to_install.is_bundle
-                        if is_bundle:
-                            req_to_install.move_bundle_files(self.build_dir, self.src_dir)
-                            for subreq in req_to_install.bundle_requirements():
-                                reqs.append(subreq)
-                                self.add_requirement(subreq)
-                        elif self.is_download:
-                            req_to_install.source_dir = location
-                            req_to_install.run_egg_info()
-                            if url and url.scheme in vcs.all_schemes:
-                                req_to_install.archive(self.download_dir)
-                        else:
-                            req_to_install.source_dir = location
-                            req_to_install.run_egg_info()
-                            if force_root_egg_info:
-                                # We need to run this to make sure that the .egg-info/
-                                # directory is created for packing in the bundle
-                                req_to_install.run_egg_info(force_root_egg_info=True)
-                            req_to_install.assert_source_matches_version()
-                            #@@ sketchy way of identifying packages not grabbed from an index
-                            if bundle and req_to_install.url:
-                                self.copy_to_build_dir(req_to_install)
-                                install = False
-                        # req_to_install.req is only avail after unpack for URL pkgs
-                        # repeat check_if_exists to uninstall-on-upgrade (#14)
-                        req_to_install.check_if_exists()
-                        if req_to_install.satisfied_by:
-                            if self.upgrade or self.ignore_installed:
-                                req_to_install.conflicts_with = req_to_install.satisfied_by
-                                req_to_install.satisfied_by = None
-                            else:
-                                install = False
-                if not is_bundle:
-                    ## FIXME: shouldn't be globally added:
-                    finder.add_dependency_links(req_to_install.dependency_links)
-                    if (req_to_install.extras):
-                        logger.notify("Installing extra requirements: %r" % ','.join(req_to_install.extras))
-                    if not self.ignore_dependencies:
-                        for req in req_to_install.requirements(req_to_install.extras):
-                            try:
-                                name = pkg_resources.Requirement.parse(req).project_name
-                            except ValueError:
-                                e = sys.exc_info()[1]
-                                ## FIXME: proper warning
-                                logger.error('Invalid requirement: %r (%s) in requirement %s' % (req, e, req_to_install))
-                                continue
-                            if self.has_requirement(name):
-                                ## FIXME: check for conflict
-                                continue
-                            subreq = InstallRequirement(req, req_to_install)
-                            reqs.append(subreq)
-                            self.add_requirement(subreq)
-                    if req_to_install.name not in self.requirements:
-                        self.requirements[req_to_install.name] = req_to_install
-                    if self.is_download:
-                        self.reqs_to_cleanup.append(req_to_install)
-                else:
-                    self.reqs_to_cleanup.append(req_to_install)
-
-                if install:
-                    self.successfully_downloaded.append(req_to_install)
-                    if bundle and (req_to_install.url and req_to_install.url.startswith('file:///')):
-                        self.copy_to_build_dir(req_to_install)
-            finally:
-                logger.indent -= 2
-
-    def cleanup_files(self, bundle=False):
-        """Clean up files, remove builds."""
-        logger.notify('Cleaning up...')
-        logger.indent += 2
-        for req in self.reqs_to_cleanup:
-            req.remove_temporary_source()
-
-        remove_dir = []
-        if self._pip_has_created_build_dir():
-            remove_dir.append(self.build_dir)
-
-        # The source dir of a bundle can always be removed.
-        # FIXME: not if it pre-existed the bundle!
-        if bundle:
-            remove_dir.append(self.src_dir)
-
-        for dir in remove_dir:
-            if os.path.exists(dir):
-                logger.info('Removing temporary dir %s...' % dir)
-                rmtree(dir)
-
-        logger.indent -= 2
-
-    def _pip_has_created_build_dir(self):
-        return (self.build_dir == build_prefix and
-                os.path.exists(os.path.join(self.build_dir, PIP_DELETE_MARKER_FILENAME)))
-
-    def copy_to_build_dir(self, req_to_install):
-        target_dir = req_to_install.editable and self.src_dir or self.build_dir
-        logger.info("Copying %s to %s" % (req_to_install.name, target_dir))
-        dest = os.path.join(target_dir, req_to_install.name)
-        copytree(req_to_install.source_dir, dest)
-        call_subprocess(["python", "%s/setup.py" % dest, "clean"], cwd=dest,
-                        command_desc='python setup.py clean')
-
-    def unpack_url(self, link, location, only_download=False):
-        if only_download:
-            loc = self.download_dir
-        else:
-            loc = location
-        if is_vcs_url(link):
-            return unpack_vcs_link(link, loc, only_download)
-        elif is_file_url(link):
-            return unpack_file_url(link, loc)
-        else:
-            if self.download_cache:
-                self.download_cache = os.path.expanduser(self.download_cache)
-            retval = unpack_http_url(link, location, self.download_cache, self.download_dir)
-            if only_download:
-                _write_delete_marker_message(os.path.join(location, PIP_DELETE_MARKER_FILENAME))
-            return retval
-
-    def install(self, install_options, global_options=()):
-        """Install everything in this set (after having downloaded and unpacked the packages)"""
-        to_install = [r for r in self.requirements.values()
-                      if not r.satisfied_by]
-
-        if to_install:
-            logger.notify('Installing collected packages: %s' % ', '.join([req.name for req in to_install]))
-        logger.indent += 2
-        try:
-            for requirement in to_install:
-                if requirement.conflicts_with:
-                    logger.notify('Found existing installation: %s'
-                                  % requirement.conflicts_with)
-                    logger.indent += 2
-                    try:
-                        requirement.uninstall(auto_confirm=True)
-                    finally:
-                        logger.indent -= 2
-                try:
-                    requirement.install(install_options, global_options)
-                except:
-                    # if install did not succeed, rollback previous uninstall
-                    if requirement.conflicts_with and not requirement.install_succeeded:
-                        requirement.rollback_uninstall()
-                    raise
-                else:
-                    if requirement.conflicts_with and requirement.install_succeeded:
-                        requirement.commit_uninstall()
-                requirement.remove_temporary_source()
-        finally:
-            logger.indent -= 2
-        self.successfully_installed = to_install
-
-    def create_bundle(self, bundle_filename):
-        ## FIXME: can't decide which is better; zip is easier to read
-        ## random files from, but tar.bz2 is smaller and not as lame a
-        ## format.
-
-        ## FIXME: this file should really include a manifest of the
-        ## packages, maybe some other metadata files.  It would make
-        ## it easier to detect as well.
-        zip = zipfile.ZipFile(bundle_filename, 'w', zipfile.ZIP_DEFLATED)
-        vcs_dirs = []
-        for dir, basename in (self.build_dir, 'build'), (self.src_dir, 'src'):
-            dir = os.path.normcase(os.path.abspath(dir))
-            for dirpath, dirnames, filenames in os.walk(dir):
-                for backend in vcs.backends:
-                    vcs_backend = backend()
-                    vcs_url = vcs_rev = None
-                    if vcs_backend.dirname in dirnames:
-                        for vcs_dir in vcs_dirs:
-                            if dirpath.startswith(vcs_dir):
-                                # vcs bundle file already in parent directory
-                                break
-                        else:
-                            vcs_url, vcs_rev = vcs_backend.get_info(
-                                os.path.join(dir, dirpath))
-                            vcs_dirs.append(dirpath)
-                        vcs_bundle_file = vcs_backend.bundle_file
-                        vcs_guide = vcs_backend.guide % {'url': vcs_url,
-                                                         'rev': vcs_rev}
-                        dirnames.remove(vcs_backend.dirname)
-                        break
-                if 'pip-egg-info' in dirnames:
-                    dirnames.remove('pip-egg-info')
-                for dirname in dirnames:
-                    dirname = os.path.join(dirpath, dirname)
-                    name = self._clean_zip_name(dirname, dir)
-                    zip.writestr(basename + '/' + name + '/', '')
-                for filename in filenames:
-                    if filename == PIP_DELETE_MARKER_FILENAME:
-                        continue
-                    filename = os.path.join(dirpath, filename)
-                    name = self._clean_zip_name(filename, dir)
-                    zip.write(filename, basename + '/' + name)
-                if vcs_url:
-                    name = os.path.join(dirpath, vcs_bundle_file)
-                    name = self._clean_zip_name(name, dir)
-                    zip.writestr(basename + '/' + name, vcs_guide)
-
-        zip.writestr('pip-manifest.txt', self.bundle_requirements())
-        zip.close()
-
-    BUNDLE_HEADER = '''\
-# This is a pip bundle file, that contains many source packages
-# that can be installed as a group.  You can install this like:
-#     pip this_file.zip
-# The rest of the file contains a list of all the packages included:
-'''
-
-    def bundle_requirements(self):
-        parts = [self.BUNDLE_HEADER]
-        for req in [req for req in self.requirements.values()
-                    if not req.comes_from]:
-            parts.append('%s==%s\n' % (req.name, req.installed_version))
-        parts.append('# These packages were installed to satisfy the above requirements:\n')
-        for req in [req for req in self.requirements.values()
-                    if req.comes_from]:
-            parts.append('%s==%s\n' % (req.name, req.installed_version))
-        ## FIXME: should we do something with self.unnamed_requirements?
-        return ''.join(parts)
-
-    def _clean_zip_name(self, name, prefix):
-        assert name.startswith(prefix+os.path.sep), (
-            "name %r doesn't start with prefix %r" % (name, prefix))
-        name = name[len(prefix)+1:]
-        name = name.replace(os.path.sep, '/')
-        return name
-
-
-def _make_build_dir(build_dir):
-    os.makedirs(build_dir)
-    _write_delete_marker_message(os.path.join(build_dir, PIP_DELETE_MARKER_FILENAME))
-
-
-def _write_delete_marker_message(filepath):
-    marker_fp = open(filepath, 'w')
-    marker_fp.write(DELETE_MARKER_MESSAGE)
-    marker_fp.close()
-
-
-_scheme_re = re.compile(r'^(http|https|file):', re.I)
-
-
-def parse_requirements(filename, finder=None, comes_from=None, options=None):
-    skip_match = None
-    skip_regex = options.skip_requirements_regex
-    if skip_regex:
-        skip_match = re.compile(skip_regex)
-    filename, content = get_file_content(filename, comes_from=comes_from)
-    for line_number, line in enumerate(content.splitlines()):
-        line_number += 1
-        line = line.strip()
-        if not line or line.startswith('#'):
-            continue
-        if skip_match and skip_match.search(line):
-            continue
-        if line.startswith('-r') or line.startswith('--requirement'):
-            if line.startswith('-r'):
-                req_url = line[2:].strip()
-            else:
-                req_url = line[len('--requirement'):].strip().strip('=')
-            if _scheme_re.search(filename):
-                # Relative to a URL
-                req_url = urlparse.urljoin(filename, req_url)
-            elif not _scheme_re.search(req_url):
-                req_url = os.path.join(os.path.dirname(filename), req_url)
-            for item in parse_requirements(req_url, finder, comes_from=filename, options=options):
-                yield item
-        elif line.startswith('-Z') or line.startswith('--always-unzip'):
-            # No longer used, but previously these were used in
-            # requirement files, so we'll ignore.
-            pass
-        elif line.startswith('-f') or line.startswith('--find-links'):
-            if line.startswith('-f'):
-                line = line[2:].strip()
-            else:
-                line = line[len('--find-links'):].strip().lstrip('=')
-            ## FIXME: it would be nice to keep track of the source of
-            ## the find_links:
-            if finder:
-                finder.find_links.append(line)
-        elif line.startswith('-i') or line.startswith('--index-url'):
-            if line.startswith('-i'):
-                line = line[2:].strip()
-            else:
-                line = line[len('--index-url'):].strip().lstrip('=')
-            if finder:
-                finder.index_urls = [line]
-        elif line.startswith('--extra-index-url'):
-            line = line[len('--extra-index-url'):].strip().lstrip('=')
-            if finder:
-                finder.index_urls.append(line)
-        else:
-            comes_from = '-r %s (line %s)' % (filename, line_number)
-            if line.startswith('-e') or line.startswith('--editable'):
-                if line.startswith('-e'):
-                    line = line[2:].strip()
-                else:
-                    line = line[len('--editable'):].strip().lstrip('=')
-                req = InstallRequirement.from_editable(
-                    line, comes_from=comes_from, default_vcs=options.default_vcs)
-            else:
-                req = InstallRequirement.from_line(line, comes_from)
-            yield req
-
-
-def parse_editable(editable_req, default_vcs=None):
-    """Parses svn+http://blahblah@rev#egg=Foobar into a requirement
-    (Foobar) and a URL"""
-    url = editable_req
-    if os.path.isdir(url) and os.path.exists(os.path.join(url, 'setup.py')):
-        # Treating it as code that has already been checked out
-        url = path_to_url(url)
-    if url.lower().startswith('file:'):
-        return None, url
-    for version_control in vcs:
-        if url.lower().startswith('%s:' % version_control):
-            url = '%s+%s' % (version_control, url)
-    if '+' not in url:
-        if default_vcs:
-            url = default_vcs + '+' + url
-        else:
-            raise InstallationError(
-                '--editable=%s should be formatted with svn+URL, git+URL, hg+URL or bzr+URL' % editable_req)
-    vc_type = url.split('+', 1)[0].lower()
-    if not vcs.get_backend(vc_type):
-        raise InstallationError(
-            'For --editable=%s only svn (svn+URL), Git (git+URL), Mercurial (hg+URL) and Bazaar (bzr+URL) is currently supported' % editable_req)
-    match = re.search(r'(?:#|#.*?&)egg=([^&]*)', editable_req)
-    if (not match or not match.group(1)) and vcs.get_backend(vc_type):
-        parts = [p for p in editable_req.split('#', 1)[0].split('/') if p]
-        if parts[-2] in ('tags', 'branches', 'tag', 'branch'):
-            req = parts[-3]
-        elif parts[-1] == 'trunk':
-            req = parts[-2]
-        else:
-            raise InstallationError(
-                '--editable=%s is not the right format; it must have #egg=Package'
-                % editable_req)
-    else:
-        req = match.group(1)
-    ## FIXME: use package_to_requirement?
-    match = re.search(r'^(.*?)(?:-dev|-\d.*)$', req)
-    if match:
-        # Strip off -dev, -0.2, etc.
-        req = match.group(1)
-    return req, url
-
-
-class UninstallPathSet(object):
-    """A set of file paths to be removed in the uninstallation of a
-    requirement."""
-    def __init__(self, dist):
-        self.paths = set()
-        self._refuse = set()
-        self.pth = {}
-        self.dist = dist
-        self.save_dir = None
-        self._moved_paths = []
-
-    def _permitted(self, path):
-        """
-        Return True if the given path is one we are permitted to
-        remove/modify, False otherwise.
-
-        """
-        return is_local(path)
-
-    def _can_uninstall(self):
-        if not dist_is_local(self.dist):
-            logger.notify("Not uninstalling %s at %s, outside environment %s"
-                          % (self.dist.project_name, normalize_path(self.dist.location), sys.prefix))
-            return False
-        return True
-
-    def add(self, path):
-        path = normalize_path(path)
-        if not os.path.exists(path):
-            return
-        if self._permitted(path):
-            self.paths.add(path)
-        else:
-            self._refuse.add(path)
-
-    def add_pth(self, pth_file, entry):
-        pth_file = normalize_path(pth_file)
-        if self._permitted(pth_file):
-            if pth_file not in self.pth:
-                self.pth[pth_file] = UninstallPthEntries(pth_file)
-            self.pth[pth_file].add(entry)
-        else:
-            self._refuse.add(pth_file)
-
-    def compact(self, paths):
-        """Compact a path set to contain the minimal number of paths
-        necessary to contain all paths in the set. If /a/path/ and
-        /a/path/to/a/file.txt are both in the set, leave only the
-        shorter path."""
-        short_paths = set()
-        for path in sorted(paths, key=len):
-            if not any([(path.startswith(shortpath) and
-                         path[len(shortpath.rstrip(os.path.sep))] == os.path.sep)
-                        for shortpath in short_paths]):
-                short_paths.add(path)
-        return short_paths
-
-    def _stash(self, path):
-        return os.path.join(
-            self.save_dir, os.path.splitdrive(path)[1].lstrip(os.path.sep))
-
-    def remove(self, auto_confirm=False):
-        """Remove paths in ``self.paths`` with confirmation (unless
-        ``auto_confirm`` is True)."""
-        if not self._can_uninstall():
-            return
-        logger.notify('Uninstalling %s:' % self.dist.project_name)
-        logger.indent += 2
-        paths = sorted(self.compact(self.paths))
-        try:
-            if auto_confirm:
-                response = 'y'
-            else:
-                for path in paths:
-                    logger.notify(path)
-                response = ask('Proceed (y/n)? ', ('y', 'n'))
-            if self._refuse:
-                logger.notify('Not removing or modifying (outside of prefix):')
-                for path in self.compact(self._refuse):
-                    logger.notify(path)
-            if response == 'y':
-                self.save_dir = tempfile.mkdtemp(suffix='-uninstall',
-                                                 prefix='pip-')
-                for path in paths:
-                    new_path = self._stash(path)
-                    logger.info('Removing file or directory %s' % path)
-                    self._moved_paths.append(path)
-                    renames(path, new_path)
-                for pth in self.pth.values():
-                    pth.remove()
-                logger.notify('Successfully uninstalled %s' % self.dist.project_name)
-
-        finally:
-            logger.indent -= 2
-
-    def rollback(self):
-        """Rollback the changes previously made by remove()."""
-        if self.save_dir is None:
-            logger.error("Can't roll back %s; was not uninstalled" % self.dist.project_name)
-            return False
-        logger.notify('Rolling back uninstall of %s' % self.dist.project_name)
-        for path in self._moved_paths:
-            tmp_path = self._stash(path)
-            logger.info('Replacing %s' % path)
-            renames(tmp_path, path)
-        for pth in self.pth:
-            pth.rollback()
-
-    def commit(self):
-        """Remove temporary save dir: rollback will no longer be possible."""
-        if self.save_dir is not None:
-            rmtree(self.save_dir)
-            self.save_dir = None
-            self._moved_paths = []
-
-
-class UninstallPthEntries(object):
-    def __init__(self, pth_file):
-        if not os.path.isfile(pth_file):
-            raise UninstallationError("Cannot remove entries from nonexistent file %s" % pth_file)
-        self.file = pth_file
-        self.entries = set()
-        self._saved_lines = None
-
-    def add(self, entry):
-        entry = os.path.normcase(entry)
-        # On Windows, os.path.normcase converts the entry to use
-        # backslashes.  This is correct for entries that describe absolute
-        # paths outside of site-packages, but all the others use forward
-        # slashes.
-        if sys.platform == 'win32' and not os.path.splitdrive(entry)[0]:
-            entry = entry.replace('\\', '/')
-        self.entries.add(entry)
-
-    def remove(self):
-        logger.info('Removing pth entries from %s:' % self.file)
-        fh = open(self.file, 'rb')
-        # windows uses '\r\n' with py3k, but uses '\n' with py2.x
-        lines = fh.readlines()
-        self._saved_lines = lines
-        fh.close()
-        if any(b('\r\n') in line for line in lines):
-            endline = '\r\n'
-        else:
-            endline = '\n'
-        for entry in self.entries:
-            try:
-                logger.info('Removing entry: %s' % entry)
-                lines.remove(b(entry + endline))
-            except ValueError:
-                pass
-        fh = open(self.file, 'wb')
-        fh.writelines(lines)
-        fh.close()
-
-    def rollback(self):
-        if self._saved_lines is None:
-            logger.error('Cannot roll back changes to %s, none were made' % self.file)
-            return False
-        logger.info('Rolling %s back to previous state' % self.file)
-        fh = open(self.file, 'wb')
-        fh.writelines(self._saved_lines)
-        fh.close()
-        return True
-
-
-class FakeFile(object):
-    """Wrap a list of lines in an object with readline() to make
-    ConfigParser happy."""
-    def __init__(self, lines):
-        self._gen = (l for l in lines)
-
-    def readline(self):
-        try:
-            try:
-                return next(self._gen)
-            except NameError:
-                return self._gen.next()
-        except StopIteration:
-            return ''
-
-    def __iter__(self):
-        return self._gen
diff --git a/vendor/pip-1.2.1/pip/runner.py b/vendor/pip-1.2.1/pip/runner.py
deleted file mode 100644
index be830ad9..00000000
--- a/vendor/pip-1.2.1/pip/runner.py
+++ /dev/null
@@ -1,18 +0,0 @@
-import sys
-import os
-
-
-def run():
-    base = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-    ## FIXME: this is kind of crude; if we could create a fake pip
-    ## module, then exec into it and update pip.__path__ properly, we
-    ## wouldn't have to update sys.path:
-    sys.path.insert(0, base)
-    import pip
-    return pip.main()
-
-
-if __name__ == '__main__':
-    exit = run()
-    if exit:
-        sys.exit(exit)
diff --git a/vendor/pip-1.2.1/pip/status_codes.py b/vendor/pip-1.2.1/pip/status_codes.py
deleted file mode 100644
index b6208e96..00000000
--- a/vendor/pip-1.2.1/pip/status_codes.py
+++ /dev/null
@@ -1,5 +0,0 @@
-SUCCESS = 0
-ERROR = 1
-UNKNOWN_ERROR = 2
-VIRTUALENV_NOT_FOUND = 3
-NO_MATCHES_FOUND = 23
diff --git a/vendor/pip-1.2.1/pip/util.py b/vendor/pip-1.2.1/pip/util.py
deleted file mode 100644
index e5ad6df1..00000000
--- a/vendor/pip-1.2.1/pip/util.py
+++ /dev/null
@@ -1,509 +0,0 @@
-import sys
-import shutil
-import os
-import stat
-import re
-import posixpath
-import pkg_resources
-import zipfile
-import tarfile
-from pip.exceptions import InstallationError, BadCommand
-from pip.backwardcompat import WindowsError, string_types, raw_input
-from pip.locations import site_packages, running_under_virtualenv
-from pip.log import logger
-
-__all__ = ['rmtree', 'display_path', 'backup_dir',
-           'find_command', 'ask', 'Inf',
-           'normalize_name', 'splitext',
-           'format_size', 'is_installable_dir',
-           'is_svn_page', 'file_contents',
-           'split_leading_dir', 'has_leading_dir',
-           'make_path_relative', 'normalize_path',
-           'renames', 'get_terminal_size',
-           'unzip_file', 'untar_file', 'create_download_cache_folder',
-           'cache_download', 'unpack_file']
-
-
-def rmtree(dir, ignore_errors=False):
-    shutil.rmtree(dir, ignore_errors=ignore_errors,
-                  onerror=rmtree_errorhandler)
-
-
-def rmtree_errorhandler(func, path, exc_info):
-    """On Windows, the files in .svn are read-only, so when rmtree() tries to
-    remove them, an exception is thrown.  We catch that here, remove the
-    read-only attribute, and hopefully continue without problems."""
-    exctype, value = exc_info[:2]
-    # On Python 2.4, it will be OSError number 13
-    # On all more recent Pythons, it'll be WindowsError number 5
-    if not ((exctype is WindowsError and value.args[0] == 5) or
-            (exctype is OSError and value.args[0] == 13)):
-        raise
-    # file type should currently be read only
-    if ((os.stat(path).st_mode & stat.S_IREAD) != stat.S_IREAD):
-        raise
-    # convert to read/write
-    os.chmod(path, stat.S_IWRITE)
-    # use the original function to repeat the operation
-    func(path)
-
-
-def display_path(path):
-    """Gives the display value for a given path, making it relative to cwd
-    if possible."""
-    path = os.path.normcase(os.path.abspath(path))
-    if path.startswith(os.getcwd() + os.path.sep):
-        path = '.' + path[len(os.getcwd()):]
-    return path
-
-
-def backup_dir(dir, ext='.bak'):
-    """Figure out the name of a directory to back up the given dir to
-    (adding .bak, .bak2, etc)"""
-    n = 1
-    extension = ext
-    while os.path.exists(dir + extension):
-        n += 1
-        extension = ext + str(n)
-    return dir + extension
-
-
-def find_command(cmd, paths=None, pathext=None):
-    """Searches the PATH for the given command and returns its path"""
-    if paths is None:
-        paths = os.environ.get('PATH', '').split(os.pathsep)
-    if isinstance(paths, string_types):
-        paths = [paths]
-    # check if there are funny path extensions for executables, e.g. Windows
-    if pathext is None:
-        pathext = get_pathext()
-    pathext = [ext for ext in pathext.lower().split(os.pathsep)]
-    # don't use extensions if the command ends with one of them
-    if os.path.splitext(cmd)[1].lower() in pathext:
-        pathext = ['']
-    # check if we find the command on PATH
-    for path in paths:
-        # try without extension first
-        cmd_path = os.path.join(path, cmd)
-        for ext in pathext:
-            # then including the extension
-            cmd_path_ext = cmd_path + ext
-            if os.path.isfile(cmd_path_ext):
-                return cmd_path_ext
-        if os.path.isfile(cmd_path):
-            return cmd_path
-    raise BadCommand('Cannot find command %r' % cmd)
-
-
-def get_pathext(default_pathext=None):
-    """Returns the path extensions from environment or a default"""
-    if default_pathext is None:
-        default_pathext = os.pathsep.join(['.COM', '.EXE', '.BAT', '.CMD'])
-    pathext = os.environ.get('PATHEXT', default_pathext)
-    return pathext
-
-
-def ask_path_exists(message, options):
-    for action in os.environ.get('PIP_EXISTS_ACTION', ''):
-        if action in options:
-            return action
-    return ask(message, options)
-
-
-def ask(message, options):
-    """Ask the message interactively, with the given possible responses"""
-    while 1:
-        if os.environ.get('PIP_NO_INPUT'):
-            raise Exception('No input was expected ($PIP_NO_INPUT set); question: %s' % message)
-        response = raw_input(message)
-        response = response.strip().lower()
-        if response not in options:
-            print('Your response (%r) was not one of the expected responses: %s' % (
-                response, ', '.join(options)))
-        else:
-            return response
-
-
-class _Inf(object):
-    """I am bigger than everything!"""
-    def __cmp__(self, a):
-        if self is a:
-            return 0
-        return 1
-
-    def __repr__(self):
-        return 'Inf'
-
-Inf = _Inf()
-del _Inf
-
-
-_normalize_re = re.compile(r'[^a-z]', re.I)
-
-
-def normalize_name(name):
-    return _normalize_re.sub('-', name.lower())
-
-
-def format_size(bytes):
-    if bytes > 1000*1000:
-        return '%.1fMb' % (bytes/1000.0/1000)
-    elif bytes > 10*1000:
-        return '%iKb' % (bytes/1000)
-    elif bytes > 1000:
-        return '%.1fKb' % (bytes/1000.0)
-    else:
-        return '%ibytes' % bytes
-
-
-def is_installable_dir(path):
-    """Return True if `path` is a directory containing a setup.py file."""
-    if not os.path.isdir(path):
-        return False
-    setup_py = os.path.join(path, 'setup.py')
-    if os.path.isfile(setup_py):
-        return True
-    return False
-
-
-def is_svn_page(html):
-    """Returns true if the page appears to be the index page of an svn repository"""
-    return (re.search(r'<title>[^<]*Revision \d+:', html)
-            and re.search(r'Powered by (?:<a[^>]*?>)?Subversion', html, re.I))
-
-
-def file_contents(filename):
-    fp = open(filename, 'rb')
-    try:
-        return fp.read().decode('utf-8')
-    finally:
-        fp.close()
-
-
-def split_leading_dir(path):
-    path = str(path)
-    path = path.lstrip('/').lstrip('\\')
-    if '/' in path and (('\\' in path and path.find('/') < path.find('\\'))
-                        or '\\' not in path):
-        return path.split('/', 1)
-    elif '\\' in path:
-        return path.split('\\', 1)
-    else:
-        return path, ''
-
-
-def has_leading_dir(paths):
-    """Returns true if all the paths have the same leading path name
-    (i.e., everything is in one subdirectory in an archive)"""
-    common_prefix = None
-    for path in paths:
-        prefix, rest = split_leading_dir(path)
-        if not prefix:
-            return False
-        elif common_prefix is None:
-            common_prefix = prefix
-        elif prefix != common_prefix:
-            return False
-    return True
-
-
-def make_path_relative(path, rel_to):
-    """
-    Make a filename relative, where the filename path, and it is
-    relative to rel_to
-
-        >>> make_relative_path('/usr/share/something/a-file.pth',
-        ...                    '/usr/share/another-place/src/Directory')
-        '../../../something/a-file.pth'
-        >>> make_relative_path('/usr/share/something/a-file.pth',
-        ...                    '/home/user/src/Directory')
-        '../../../usr/share/something/a-file.pth'
-        >>> make_relative_path('/usr/share/a-file.pth', '/usr/share/')
-        'a-file.pth'
-    """
-    path_filename = os.path.basename(path)
-    path = os.path.dirname(path)
-    path = os.path.normpath(os.path.abspath(path))
-    rel_to = os.path.normpath(os.path.abspath(rel_to))
-    path_parts = path.strip(os.path.sep).split(os.path.sep)
-    rel_to_parts = rel_to.strip(os.path.sep).split(os.path.sep)
-    while path_parts and rel_to_parts and path_parts[0] == rel_to_parts[0]:
-        path_parts.pop(0)
-        rel_to_parts.pop(0)
-    full_parts = ['..']*len(rel_to_parts) + path_parts + [path_filename]
-    if full_parts == ['']:
-        return '.' + os.path.sep
-    return os.path.sep.join(full_parts)
-
-
-def normalize_path(path):
-    """
-    Convert a path to its canonical, case-normalized, absolute version.
-
-    """
-    return os.path.normcase(os.path.realpath(path))
-
-
-def splitext(path):
-    """Like os.path.splitext, but take off .tar too"""
-    base, ext = posixpath.splitext(path)
-    if base.lower().endswith('.tar'):
-        ext = base[-4:] + ext
-        base = base[:-4]
-    return base, ext
-
-
-def renames(old, new):
-    """Like os.renames(), but handles renaming across devices."""
-    # Implementation borrowed from os.renames().
-    head, tail = os.path.split(new)
-    if head and tail and not os.path.exists(head):
-        os.makedirs(head)
-
-    shutil.move(old, new)
-
-    head, tail = os.path.split(old)
-    if head and tail:
-        try:
-            os.removedirs(head)
-        except OSError:
-            pass
-
-
-def is_local(path):
-    """
-    Return True if path is within sys.prefix, if we're running in a virtualenv.
-
-    If we're not in a virtualenv, all paths are considered "local."
-
-    """
-    if not running_under_virtualenv():
-        return True
-    return normalize_path(path).startswith(normalize_path(sys.prefix))
-
-
-def dist_is_local(dist):
-    """
-    Return True if given Distribution object is installed locally
-    (i.e. within current virtualenv).
-
-    Always True if we're not in a virtualenv.
-
-    """
-    return is_local(dist_location(dist))
-
-
-def get_installed_distributions(local_only=True, skip=('setuptools', 'pip', 'python')):
-    """
-    Return a list of installed Distribution objects.
-
-    If ``local_only`` is True (default), only return installations
-    local to the current virtualenv, if in a virtualenv.
-
-    ``skip`` argument is an iterable of lower-case project names to
-    ignore; defaults to ('setuptools', 'pip', 'python'). [FIXME also
-    skip virtualenv?]
-
-    """
-    if local_only:
-        local_test = dist_is_local
-    else:
-        local_test = lambda d: True
-    return [d for d in pkg_resources.working_set if local_test(d) and d.key not in skip]
-
-
-def egg_link_path(dist):
-    """
-    Return the path where we'd expect to find a .egg-link file for
-    this distribution. (There doesn't seem to be any metadata in the
-    Distribution object for a develop egg that points back to its
-    .egg-link and easy-install.pth files).
-
-    This won't find a globally-installed develop egg if we're in a
-    virtualenv.
-
-    """
-    return os.path.join(site_packages, dist.project_name) + '.egg-link'
-
-
-def dist_location(dist):
-    """
-    Get the site-packages location of this distribution. Generally
-    this is dist.location, except in the case of develop-installed
-    packages, where dist.location is the source code location, and we
-    want to know where the egg-link file is.
-
-    """
-    egg_link = egg_link_path(dist)
-    if os.path.exists(egg_link):
-        return egg_link
-    return dist.location
-
-
-def get_terminal_size():
-    """Returns a tuple (x, y) representing the width(x) and the height(x)
-    in characters of the terminal window."""
-    def ioctl_GWINSZ(fd):
-        try:
-            import fcntl
-            import termios
-            import struct
-            cr = struct.unpack('hh', fcntl.ioctl(fd, termios.TIOCGWINSZ,
-        '1234'))
-        except:
-            return None
-        if cr == (0, 0):
-            return None
-        if cr == (0, 0):
-            return None
-        return cr
-    cr = ioctl_GWINSZ(0) or ioctl_GWINSZ(1) or ioctl_GWINSZ(2)
-    if not cr:
-        try:
-            fd = os.open(os.ctermid(), os.O_RDONLY)
-            cr = ioctl_GWINSZ(fd)
-            os.close(fd)
-        except:
-            pass
-    if not cr:
-        cr = (os.environ.get('LINES', 25), os.environ.get('COLUMNS', 80))
-    return int(cr[1]), int(cr[0])
-
-
-def unzip_file(filename, location, flatten=True):
-    """Unzip the file (zip file located at filename) to the destination
-    location"""
-    if not os.path.exists(location):
-        os.makedirs(location)
-    zipfp = open(filename, 'rb')
-    try:
-        zip = zipfile.ZipFile(zipfp)
-        leading = has_leading_dir(zip.namelist()) and flatten
-        for name in zip.namelist():
-            data = zip.read(name)
-            fn = name
-            if leading:
-                fn = split_leading_dir(name)[1]
-            fn = os.path.join(location, fn)
-            dir = os.path.dirname(fn)
-            if not os.path.exists(dir):
-                os.makedirs(dir)
-            if fn.endswith('/') or fn.endswith('\\'):
-                # A directory
-                if not os.path.exists(fn):
-                    os.makedirs(fn)
-            else:
-                fp = open(fn, 'wb')
-                try:
-                    fp.write(data)
-                finally:
-                    fp.close()
-    finally:
-        zipfp.close()
-
-
-def untar_file(filename, location):
-    """Untar the file (tar file located at filename) to the destination location"""
-    if not os.path.exists(location):
-        os.makedirs(location)
-    if filename.lower().endswith('.gz') or filename.lower().endswith('.tgz'):
-        mode = 'r:gz'
-    elif filename.lower().endswith('.bz2') or filename.lower().endswith('.tbz'):
-        mode = 'r:bz2'
-    elif filename.lower().endswith('.tar'):
-        mode = 'r'
-    else:
-        logger.warn('Cannot determine compression type for file %s' % filename)
-        mode = 'r:*'
-    tar = tarfile.open(filename, mode)
-    try:
-        # note: python<=2.5 doesnt seem to know about pax headers, filter them
-        leading = has_leading_dir([
-            member.name for member in tar.getmembers()
-            if member.name != 'pax_global_header'
-        ])
-        for member in tar.getmembers():
-            fn = member.name
-            if fn == 'pax_global_header':
-                continue
-            if leading:
-                fn = split_leading_dir(fn)[1]
-            path = os.path.join(location, fn)
-            if member.isdir():
-                if not os.path.exists(path):
-                    os.makedirs(path)
-            elif member.issym():
-                try:
-                    tar._extract_member(member, path)
-                except:
-                    e = sys.exc_info()[1]
-                    # Some corrupt tar files seem to produce this
-                    # (specifically bad symlinks)
-                    logger.warn(
-                        'In the tar file %s the member %s is invalid: %s'
-                        % (filename, member.name, e))
-                    continue
-            else:
-                try:
-                    fp = tar.extractfile(member)
-                except (KeyError, AttributeError):
-                    e = sys.exc_info()[1]
-                    # Some corrupt tar files seem to produce this
-                    # (specifically bad symlinks)
-                    logger.warn(
-                        'In the tar file %s the member %s is invalid: %s'
-                        % (filename, member.name, e))
-                    continue
-                if not os.path.exists(os.path.dirname(path)):
-                    os.makedirs(os.path.dirname(path))
-                destfp = open(path, 'wb')
-                try:
-                    shutil.copyfileobj(fp, destfp)
-                finally:
-                    destfp.close()
-                fp.close()
-    finally:
-        tar.close()
-
-
-def create_download_cache_folder(folder):
-    logger.indent -= 2
-    logger.notify('Creating supposed download cache at %s' % folder)
-    logger.indent += 2
-    os.makedirs(folder)
-
-
-def cache_download(target_file, temp_location, content_type):
-    logger.notify('Storing download in cache at %s' % display_path(target_file))
-    shutil.copyfile(temp_location, target_file)
-    fp = open(target_file+'.content-type', 'w')
-    fp.write(content_type)
-    fp.close()
-    os.unlink(temp_location)
-
-
-def unpack_file(filename, location, content_type, link):
-    filename = os.path.realpath(filename)
-    if (content_type == 'application/zip'
-        or filename.endswith('.zip')
-        or filename.endswith('.pybundle')
-        or zipfile.is_zipfile(filename)):
-        unzip_file(filename, location, flatten=not filename.endswith('.pybundle'))
-    elif (content_type == 'application/x-gzip'
-          or tarfile.is_tarfile(filename)
-          or splitext(filename)[1].lower() in ('.tar', '.tar.gz', '.tar.bz2', '.tgz', '.tbz')):
-        untar_file(filename, location)
-    elif (content_type and content_type.startswith('text/html')
-          and is_svn_page(file_contents(filename))):
-        # We don't really care about this
-        from pip.vcs.subversion import Subversion
-        Subversion('svn+' + link.url).unpack(location)
-    else:
-        ## FIXME: handle?
-        ## FIXME: magic signatures?
-        logger.fatal('Cannot unpack file %s (downloaded from %s, content-type: %s); cannot detect archive format'
-                     % (filename, location, content_type))
-        raise InstallationError('Cannot determine archive format of %s' % location)
-
-
-
diff --git a/vendor/pip-1.2.1/pip/vcs/__init__.py b/vendor/pip-1.2.1/pip/vcs/__init__.py
deleted file mode 100644
index a2137e96..00000000
--- a/vendor/pip-1.2.1/pip/vcs/__init__.py
+++ /dev/null
@@ -1,244 +0,0 @@
-"""Handles all VCS (version control) support"""
-
-import os
-import shutil
-
-from pip.backwardcompat import urlparse, urllib
-from pip.log import logger
-from pip.util import (display_path, backup_dir, find_command,
-                      ask, rmtree, ask_path_exists)
-
-
-__all__ = ['vcs', 'get_src_requirement']
-
-
-class VcsSupport(object):
-    _registry = {}
-    schemes = ['ssh', 'git', 'hg', 'bzr', 'sftp', 'svn']
-
-    def __init__(self):
-        # Register more schemes with urlparse for various version control systems
-        urlparse.uses_netloc.extend(self.schemes)
-        urlparse.uses_fragment.extend(self.schemes)
-        super(VcsSupport, self).__init__()
-
-    def __iter__(self):
-        return self._registry.__iter__()
-
-    @property
-    def backends(self):
-        return list(self._registry.values())
-
-    @property
-    def dirnames(self):
-        return [backend.dirname for backend in self.backends]
-
-    @property
-    def all_schemes(self):
-        schemes = []
-        for backend in self.backends:
-            schemes.extend(backend.schemes)
-        return schemes
-
-    def register(self, cls):
-        if not hasattr(cls, 'name'):
-            logger.warn('Cannot register VCS %s' % cls.__name__)
-            return
-        if cls.name not in self._registry:
-            self._registry[cls.name] = cls
-
-    def unregister(self, cls=None, name=None):
-        if name in self._registry:
-            del self._registry[name]
-        elif cls in self._registry.values():
-            del self._registry[cls.name]
-        else:
-            logger.warn('Cannot unregister because no class or name given')
-
-    def get_backend_name(self, location):
-        """
-        Return the name of the version control backend if found at given
-        location, e.g. vcs.get_backend_name('/path/to/vcs/checkout')
-        """
-        for vc_type in self._registry.values():
-            path = os.path.join(location, vc_type.dirname)
-            if os.path.exists(path):
-                return vc_type.name
-        return None
-
-    def get_backend(self, name):
-        name = name.lower()
-        if name in self._registry:
-            return self._registry[name]
-
-    def get_backend_from_location(self, location):
-        vc_type = self.get_backend_name(location)
-        if vc_type:
-            return self.get_backend(vc_type)
-        return None
-
-
-vcs = VcsSupport()
-
-
-class VersionControl(object):
-    name = ''
-    dirname = ''
-
-    def __init__(self, url=None, *args, **kwargs):
-        self.url = url
-        self._cmd = None
-        super(VersionControl, self).__init__(*args, **kwargs)
-
-    def _filter(self, line):
-        return (logger.INFO, line)
-
-    def _is_local_repository(self, repo):
-        """
-           posix absolute paths start with os.path.sep,
-           win32 ones ones start with drive (like c:\\folder)
-        """
-        drive, tail = os.path.splitdrive(repo)
-        return repo.startswith(os.path.sep) or drive
-
-    @property
-    def cmd(self):
-        if self._cmd is not None:
-            return self._cmd
-        command = find_command(self.name)
-        logger.info('Found command %r at %r' % (self.name, command))
-        self._cmd = command
-        return command
-
-    def get_url_rev(self):
-        """
-        Returns the correct repository URL and revision by parsing the given
-        repository URL
-        """
-        url = self.url.split('+', 1)[1]
-        scheme, netloc, path, query, frag = urlparse.urlsplit(url)
-        rev = None
-        if '@' in path:
-            path, rev = path.rsplit('@', 1)
-        url = urlparse.urlunsplit((scheme, netloc, path, query, ''))
-        return url, rev
-
-    def get_info(self, location):
-        """
-        Returns (url, revision), where both are strings
-        """
-        assert not location.rstrip('/').endswith(self.dirname), 'Bad directory: %s' % location
-        return self.get_url(location), self.get_revision(location)
-
-    def normalize_url(self, url):
-        """
-        Normalize a URL for comparison by unquoting it and removing any trailing slash.
-        """
-        return urllib.unquote(url).rstrip('/')
-
-    def compare_urls(self, url1, url2):
-        """
-        Compare two repo URLs for identity, ignoring incidental differences.
-        """
-        return (self.normalize_url(url1) == self.normalize_url(url2))
-
-    def parse_vcs_bundle_file(self, content):
-        """
-        Takes the contents of the bundled text file that explains how to revert
-        the stripped off version control data of the given package and returns
-        the URL and revision of it.
-        """
-        raise NotImplementedError
-
-    def obtain(self, dest):
-        """
-        Called when installing or updating an editable package, takes the
-        source path of the checkout.
-        """
-        raise NotImplementedError
-
-    def switch(self, dest, url, rev_options):
-        """
-        Switch the repo at ``dest`` to point to ``URL``.
-        """
-        raise NotImplemented
-
-    def update(self, dest, rev_options):
-        """
-        Update an already-existing repo to the given ``rev_options``.
-        """
-        raise NotImplementedError
-
-    def check_destination(self, dest, url, rev_options, rev_display):
-        """
-        Prepare a location to receive a checkout/clone.
-
-        Return True if the location is ready for (and requires) a
-        checkout/clone, False otherwise.
-        """
-        checkout = True
-        prompt = False
-        if os.path.exists(dest):
-            checkout = False
-            if os.path.exists(os.path.join(dest, self.dirname)):
-                existing_url = self.get_url(dest)
-                if self.compare_urls(existing_url, url):
-                    logger.info('%s in %s exists, and has correct URL (%s)' %
-                                (self.repo_name.title(), display_path(dest),
-                                 url))
-                    logger.notify('Updating %s %s%s' %
-                                  (display_path(dest), self.repo_name,
-                                   rev_display))
-                    self.update(dest, rev_options)
-                else:
-                    logger.warn('%s %s in %s exists with URL %s' %
-                                (self.name, self.repo_name,
-                                 display_path(dest), existing_url))
-                    prompt = ('(s)witch, (i)gnore, (w)ipe, (b)ackup ',
-                              ('s', 'i', 'w', 'b'))
-            else:
-                logger.warn('Directory %s already exists, '
-                            'and is not a %s %s.' %
-                            (dest, self.name, self.repo_name))
-                prompt = ('(i)gnore, (w)ipe, (b)ackup ', ('i', 'w', 'b'))
-        if prompt:
-            logger.warn('The plan is to install the %s repository %s' %
-                        (self.name, url))
-            response = ask_path_exists('What to do?  %s' % prompt[0],
-                                       prompt[1])
-
-            if response == 's':
-                logger.notify('Switching %s %s to %s%s' %
-                              (self.repo_name, display_path(dest), url,
-                               rev_display))
-                self.switch(dest, url, rev_options)
-            elif response == 'i':
-                # do nothing
-                pass
-            elif response == 'w':
-                logger.warn('Deleting %s' % display_path(dest))
-                rmtree(dest)
-                checkout = True
-            elif response == 'b':
-                dest_dir = backup_dir(dest)
-                logger.warn('Backing up %s to %s'
-                            % (display_path(dest), dest_dir))
-                shutil.move(dest, dest_dir)
-                checkout = True
-        return checkout
-
-    def unpack(self, location):
-        if os.path.exists(location):
-            rmtree(location)
-        self.obtain(location)
-
-    def get_src_requirement(self, dist, location, find_tags=False):
-        raise NotImplementedError
-
-
-def get_src_requirement(dist, location, find_tags):
-    version_control = vcs.get_backend_from_location(location)
-    if version_control:
-        return version_control().get_src_requirement(dist, location, find_tags)
-    logger.warn('cannot determine version of editable source in %s (is not SVN checkout, Git clone, Mercurial clone or Bazaar branch)' % location)
-    return dist.as_requirement()
diff --git a/vendor/pip-1.2.1/pip/vcs/bazaar.py b/vendor/pip-1.2.1/pip/vcs/bazaar.py
deleted file mode 100644
index 5d527777..00000000
--- a/vendor/pip-1.2.1/pip/vcs/bazaar.py
+++ /dev/null
@@ -1,129 +0,0 @@
-import os
-import tempfile
-import re
-from pip import call_subprocess
-from pip.backwardcompat import urlparse
-from pip.log import logger
-from pip.util import rmtree, display_path
-from pip.vcs import vcs, VersionControl
-from pip.download import path_to_url2
-
-
-class Bazaar(VersionControl):
-    name = 'bzr'
-    dirname = '.bzr'
-    repo_name = 'branch'
-    bundle_file = 'bzr-branch.txt'
-    schemes = ('bzr', 'bzr+http', 'bzr+https', 'bzr+ssh', 'bzr+sftp', 'bzr+ftp', 'bzr+lp')
-    guide = ('# This was a Bazaar branch; to make it a branch again run:\n'
-             'bzr branch -r %(rev)s %(url)s .\n')
-
-    def __init__(self, url=None, *args, **kwargs):
-        super(Bazaar, self).__init__(url, *args, **kwargs)
-        urlparse.non_hierarchical.extend(['lp'])
-        urlparse.uses_fragment.extend(['lp'])
-
-    def parse_vcs_bundle_file(self, content):
-        url = rev = None
-        for line in content.splitlines():
-            if not line.strip() or line.strip().startswith('#'):
-                continue
-            match = re.search(r'^bzr\s*branch\s*-r\s*(\d*)', line)
-            if match:
-                rev = match.group(1).strip()
-            url = line[match.end():].strip().split(None, 1)[0]
-            if url and rev:
-                return url, rev
-        return None, None
-
-    def export(self, location):
-        """Export the Bazaar repository at the url to the destination location"""
-        temp_dir = tempfile.mkdtemp('-export', 'pip-')
-        self.unpack(temp_dir)
-        if os.path.exists(location):
-            # Remove the location to make sure Bazaar can export it correctly
-            rmtree(location)
-        try:
-            call_subprocess([self.cmd, 'export', location], cwd=temp_dir,
-                            filter_stdout=self._filter, show_stdout=False)
-        finally:
-            rmtree(temp_dir)
-
-    def switch(self, dest, url, rev_options):
-        call_subprocess([self.cmd, 'switch', url], cwd=dest)
-
-    def update(self, dest, rev_options):
-        call_subprocess(
-            [self.cmd, 'pull', '-q'] + rev_options, cwd=dest)
-
-    def obtain(self, dest):
-        url, rev = self.get_url_rev()
-        if rev:
-            rev_options = ['-r', rev]
-            rev_display = ' (to revision %s)' % rev
-        else:
-            rev_options = []
-            rev_display = ''
-        if self.check_destination(dest, url, rev_options, rev_display):
-            logger.notify('Checking out %s%s to %s'
-                          % (url, rev_display, display_path(dest)))
-            call_subprocess(
-                [self.cmd, 'branch', '-q'] + rev_options + [url, dest])
-
-    def get_url_rev(self):
-        # hotfix the URL scheme after removing bzr+ from bzr+ssh:// readd it
-        url, rev = super(Bazaar, self).get_url_rev()
-        if url.startswith('ssh://'):
-            url = 'bzr+' + url
-        return url, rev
-
-    def get_url(self, location):
-        urls = call_subprocess(
-            [self.cmd, 'info'], show_stdout=False, cwd=location)
-        for line in urls.splitlines():
-            line = line.strip()
-            for x in ('checkout of branch: ',
-                      'parent branch: '):
-                if line.startswith(x):
-                    repo = line.split(x)[1]
-                    if self._is_local_repository(repo):
-                        return path_to_url2(repo)
-                    return repo
-        return None
-
-    def get_revision(self, location):
-        revision = call_subprocess(
-            [self.cmd, 'revno'], show_stdout=False, cwd=location)
-        return revision.splitlines()[-1]
-
-    def get_tag_revs(self, location):
-        tags = call_subprocess(
-            [self.cmd, 'tags'], show_stdout=False, cwd=location)
-        tag_revs = []
-        for line in tags.splitlines():
-            tags_match = re.search(r'([.\w-]+)\s*(.*)$', line)
-            if tags_match:
-                tag = tags_match.group(1)
-                rev = tags_match.group(2)
-                tag_revs.append((rev.strip(), tag.strip()))
-        return dict(tag_revs)
-
-    def get_src_requirement(self, dist, location, find_tags):
-        repo = self.get_url(location)
-        if not repo.lower().startswith('bzr:'):
-            repo = 'bzr+' + repo
-        egg_project_name = dist.egg_name().split('-', 1)[0]
-        if not repo:
-            return None
-        current_rev = self.get_revision(location)
-        tag_revs = self.get_tag_revs(location)
-
-        if current_rev in tag_revs:
-            # It's a tag
-            full_egg_name = '%s-%s' % (egg_project_name, tag_revs[current_rev])
-        else:
-            full_egg_name = '%s-dev_r%s' % (dist.egg_name(), current_rev)
-        return '%s@%s#egg=%s' % (repo, current_rev, full_egg_name)
-
-
-vcs.register(Bazaar)
diff --git a/vendor/pip-1.2.1/pip/vcs/git.py b/vendor/pip-1.2.1/pip/vcs/git.py
deleted file mode 100644
index ecaf19f5..00000000
--- a/vendor/pip-1.2.1/pip/vcs/git.py
+++ /dev/null
@@ -1,206 +0,0 @@
-import tempfile
-import re
-from pip import call_subprocess
-from pip.util import display_path, rmtree
-from pip.vcs import vcs, VersionControl
-from pip.log import logger
-from pip.backwardcompat import url2pathname, urlparse
-urlsplit = urlparse.urlsplit
-urlunsplit = urlparse.urlunsplit
-
-
-class Git(VersionControl):
-    name = 'git'
-    dirname = '.git'
-    repo_name = 'clone'
-    schemes = ('git', 'git+http', 'git+https', 'git+ssh', 'git+git', 'git+file')
-    bundle_file = 'git-clone.txt'
-    guide = ('# This was a Git repo; to make it a repo again run:\n'
-        'git init\ngit remote add origin %(url)s -f\ngit checkout %(rev)s\n')
-
-    def __init__(self, url=None, *args, **kwargs):
-
-        # Works around an apparent Git bug
-        # (see http://article.gmane.org/gmane.comp.version-control.git/146500)
-        if url:
-            scheme, netloc, path, query, fragment = urlsplit(url)
-            if scheme.endswith('file'):
-                initial_slashes = path[:-len(path.lstrip('/'))]
-                newpath = initial_slashes + url2pathname(path).replace('\\', '/').lstrip('/')
-                url = urlunsplit((scheme, netloc, newpath, query, fragment))
-                after_plus = scheme.find('+')+1
-                url = scheme[:after_plus]+ urlunsplit((scheme[after_plus:], netloc, newpath, query, fragment))
-
-        super(Git, self).__init__(url, *args, **kwargs)
-
-    def parse_vcs_bundle_file(self, content):
-        url = rev = None
-        for line in content.splitlines():
-            if not line.strip() or line.strip().startswith('#'):
-                continue
-            url_match = re.search(r'git\s*remote\s*add\s*origin(.*)\s*-f', line)
-            if url_match:
-                url = url_match.group(1).strip()
-            rev_match = re.search(r'^git\s*checkout\s*-q\s*(.*)\s*', line)
-            if rev_match:
-                rev = rev_match.group(1).strip()
-            if url and rev:
-                return url, rev
-        return None, None
-
-    def export(self, location):
-        """Export the Git repository at the url to the destination location"""
-        temp_dir = tempfile.mkdtemp('-export', 'pip-')
-        self.unpack(temp_dir)
-        try:
-            if not location.endswith('/'):
-                location = location + '/'
-            call_subprocess(
-                [self.cmd, 'checkout-index', '-a', '-f', '--prefix', location],
-                filter_stdout=self._filter, show_stdout=False, cwd=temp_dir)
-        finally:
-            rmtree(temp_dir)
-
-    def check_rev_options(self, rev, dest, rev_options):
-        """Check the revision options before checkout to compensate that tags
-        and branches may need origin/ as a prefix.
-        Returns the SHA1 of the branch or tag if found.
-        """
-        revisions = self.get_tag_revs(dest)
-        revisions.update(self.get_branch_revs(dest))
-
-        origin_rev = 'origin/%s' % rev
-        if origin_rev in revisions:
-            # remote branch
-            return [revisions[origin_rev]]
-        elif rev in revisions:
-            # a local tag or branch name
-            return [revisions[rev]]
-        else:
-            logger.warn("Could not find a tag or branch '%s', assuming commit." % rev)
-            return rev_options
-
-    def switch(self, dest, url, rev_options):
-        call_subprocess(
-            [self.cmd, 'config', 'remote.origin.url', url], cwd=dest)
-        call_subprocess(
-            [self.cmd, 'checkout', '-q'] + rev_options, cwd=dest)
-
-    def update(self, dest, rev_options):
-        # First fetch changes from the default remote
-        call_subprocess([self.cmd, 'fetch', '-q'], cwd=dest)
-        # Then reset to wanted revision (maby even origin/master)
-        if rev_options:
-            rev_options = self.check_rev_options(rev_options[0], dest, rev_options)
-        call_subprocess([self.cmd, 'reset', '--hard', '-q'] + rev_options, cwd=dest)
-
-    def obtain(self, dest):
-        url, rev = self.get_url_rev()
-        if rev:
-            rev_options = [rev]
-            rev_display = ' (to %s)' % rev
-        else:
-            rev_options = ['origin/master']
-            rev_display = ''
-        if self.check_destination(dest, url, rev_options, rev_display):
-            logger.notify('Cloning %s%s to %s' % (url, rev_display, display_path(dest)))
-            call_subprocess([self.cmd, 'clone', '-q', url, dest])
-            if rev:
-                rev_options = self.check_rev_options(rev, dest, rev_options)
-                # Only do a checkout if rev_options differs from HEAD
-                if not self.get_revision(dest).startswith(rev_options[0]):
-                    call_subprocess([self.cmd, 'checkout', '-q'] + rev_options, cwd=dest)
-
-    def get_url(self, location):
-        url = call_subprocess(
-            [self.cmd, 'config', 'remote.origin.url'],
-            show_stdout=False, cwd=location)
-        return url.strip()
-
-    def get_revision(self, location):
-        current_rev = call_subprocess(
-            [self.cmd, 'rev-parse', 'HEAD'], show_stdout=False, cwd=location)
-        return current_rev.strip()
-
-    def get_tag_revs(self, location):
-        tags = self._get_all_tag_names(location)
-        tag_revs = {}
-        for line in tags.splitlines():
-            tag = line.strip()
-            rev = self._get_revision_from_rev_parse(tag, location)
-            tag_revs[tag] = rev.strip()
-        return tag_revs
-
-    def get_branch_revs(self, location):
-        branches = self._get_all_branch_names(location)
-        branch_revs = {}
-        for line in branches.splitlines():
-            if '(no branch)' in line:
-                continue
-            line = line.split('->')[0].strip()
-            # actual branch case
-            branch = "".join(b for b in line.split() if b != '*')
-            rev = self._get_revision_from_rev_parse(branch, location)
-            branch_revs[branch] = rev.strip()
-        return branch_revs
-
-    def get_src_requirement(self, dist, location, find_tags):
-        repo = self.get_url(location)
-        if not repo.lower().startswith('git:'):
-            repo = 'git+' + repo
-        egg_project_name = dist.egg_name().split('-', 1)[0]
-        if not repo:
-            return None
-        current_rev = self.get_revision(location)
-        tag_revs = self.get_tag_revs(location)
-        branch_revs = self.get_branch_revs(location)
-
-        if current_rev in tag_revs:
-            # It's a tag
-            full_egg_name = '%s-%s' % (egg_project_name, tag_revs[current_rev])
-        elif (current_rev in branch_revs and
-              branch_revs[current_rev] != 'origin/master'):
-            # It's the head of a branch
-            full_egg_name = '%s-%s' % (egg_project_name,
-                                       branch_revs[current_rev].replace('origin/', ''))
-        else:
-            full_egg_name = '%s-dev' % egg_project_name
-
-        return '%s@%s#egg=%s' % (repo, current_rev, full_egg_name)
-
-    def get_url_rev(self):
-        """
-        Prefixes stub URLs like 'user@hostname:user/repo.git' with 'ssh://'.
-        That's required because although they use SSH they sometimes doesn't
-        work with a ssh:// scheme (e.g. Github). But we need a scheme for
-        parsing. Hence we remove it again afterwards and return it as a stub.
-        """
-        if not '://' in self.url:
-            assert not 'file:' in self.url
-            self.url = self.url.replace('git+', 'git+ssh://')
-            url, rev = super(Git, self).get_url_rev()
-            url = url.replace('ssh://', '')
-        else:
-            url, rev = super(Git, self).get_url_rev()
-
-        return url, rev
-
-    def _get_all_tag_names(self, location):
-        return call_subprocess([self.cmd, 'tag', '-l'],
-                               show_stdout=False,
-                               raise_on_returncode=False,
-                               cwd=location)
-
-    def _get_all_branch_names(self, location):
-        remote_branches = call_subprocess([self.cmd, 'branch', '-r'],
-                                          show_stdout=False, cwd=location)
-        local_branches = call_subprocess([self.cmd, 'branch', '-l'],
-                                         show_stdout=False, cwd=location)
-        return remote_branches + local_branches
-
-    def _get_revision_from_rev_parse(self, name, location):
-        return call_subprocess([self.cmd, 'rev-parse', name],
-                               show_stdout=False, cwd=location)
-
-
-vcs.register(Git)
diff --git a/vendor/pip-1.2.1/pip/vcs/mercurial.py b/vendor/pip-1.2.1/pip/vcs/mercurial.py
deleted file mode 100644
index fbafccc5..00000000
--- a/vendor/pip-1.2.1/pip/vcs/mercurial.py
+++ /dev/null
@@ -1,151 +0,0 @@
-import os
-import tempfile
-import re
-import sys
-from pip import call_subprocess
-from pip.util import display_path, rmtree
-from pip.log import logger
-from pip.vcs import vcs, VersionControl
-from pip.download import path_to_url2
-from pip.backwardcompat import ConfigParser
-
-
-class Mercurial(VersionControl):
-    name = 'hg'
-    dirname = '.hg'
-    repo_name = 'clone'
-    schemes = ('hg', 'hg+http', 'hg+https', 'hg+ssh', 'hg+static-http')
-    bundle_file = 'hg-clone.txt'
-    guide = ('# This was a Mercurial repo; to make it a repo again run:\n'
-            'hg init\nhg pull %(url)s\nhg update -r %(rev)s\n')
-
-    def parse_vcs_bundle_file(self, content):
-        url = rev = None
-        for line in content.splitlines():
-            if not line.strip() or line.strip().startswith('#'):
-                continue
-            url_match = re.search(r'hg\s*pull\s*(.*)\s*', line)
-            if url_match:
-                url = url_match.group(1).strip()
-            rev_match = re.search(r'^hg\s*update\s*-r\s*(.*)\s*', line)
-            if rev_match:
-                rev = rev_match.group(1).strip()
-            if url and rev:
-                return url, rev
-        return None, None
-
-    def export(self, location):
-        """Export the Hg repository at the url to the destination location"""
-        temp_dir = tempfile.mkdtemp('-export', 'pip-')
-        self.unpack(temp_dir)
-        try:
-            call_subprocess(
-                [self.cmd, 'archive', location],
-                filter_stdout=self._filter, show_stdout=False, cwd=temp_dir)
-        finally:
-            rmtree(temp_dir)
-
-    def switch(self, dest, url, rev_options):
-        repo_config = os.path.join(dest, self.dirname, 'hgrc')
-        config = ConfigParser.SafeConfigParser()
-        try:
-            config.read(repo_config)
-            config.set('paths', 'default', url)
-            config_file = open(repo_config, 'w')
-            config.write(config_file)
-            config_file.close()
-        except (OSError, ConfigParser.NoSectionError):
-            e = sys.exc_info()[1]
-            logger.warn(
-                'Could not switch Mercurial repository to %s: %s'
-                % (url, e))
-        else:
-            call_subprocess([self.cmd, 'update', '-q'] + rev_options, cwd=dest)
-
-    def update(self, dest, rev_options):
-        call_subprocess([self.cmd, 'pull', '-q'], cwd=dest)
-        call_subprocess(
-            [self.cmd, 'update', '-q'] + rev_options, cwd=dest)
-
-    def obtain(self, dest):
-        url, rev = self.get_url_rev()
-        if rev:
-            rev_options = [rev]
-            rev_display = ' (to revision %s)' % rev
-        else:
-            rev_options = []
-            rev_display = ''
-        if self.check_destination(dest, url, rev_options, rev_display):
-            logger.notify('Cloning hg %s%s to %s'
-                          % (url, rev_display, display_path(dest)))
-            call_subprocess([self.cmd, 'clone', '--noupdate', '-q', url, dest])
-            call_subprocess([self.cmd, 'update', '-q'] + rev_options, cwd=dest)
-
-    def get_url(self, location):
-        url = call_subprocess(
-            [self.cmd, 'showconfig', 'paths.default'],
-            show_stdout=False, cwd=location).strip()
-        if self._is_local_repository(url):
-            url = path_to_url2(url)
-        return url.strip()
-
-    def get_tag_revs(self, location):
-        tags = call_subprocess(
-            [self.cmd, 'tags'], show_stdout=False, cwd=location)
-        tag_revs = []
-        for line in tags.splitlines():
-            tags_match = re.search(r'([\w\d\.-]+)\s*([\d]+):.*$', line)
-            if tags_match:
-                tag = tags_match.group(1)
-                rev = tags_match.group(2)
-                if "tip" != tag:
-                    tag_revs.append((rev.strip(), tag.strip()))
-        return dict(tag_revs)
-
-    def get_branch_revs(self, location):
-        branches = call_subprocess(
-            [self.cmd, 'branches'], show_stdout=False, cwd=location)
-        branch_revs = []
-        for line in branches.splitlines():
-            branches_match = re.search(r'([\w\d\.-]+)\s*([\d]+):.*$', line)
-            if branches_match:
-                branch = branches_match.group(1)
-                rev = branches_match.group(2)
-                if "default" != branch:
-                    branch_revs.append((rev.strip(), branch.strip()))
-        return dict(branch_revs)
-
-    def get_revision(self, location):
-        current_revision = call_subprocess(
-            [self.cmd, 'parents', '--template={rev}'],
-            show_stdout=False, cwd=location).strip()
-        return current_revision
-
-    def get_revision_hash(self, location):
-        current_rev_hash = call_subprocess(
-            [self.cmd, 'parents', '--template={node}'],
-            show_stdout=False, cwd=location).strip()
-        return current_rev_hash
-
-    def get_src_requirement(self, dist, location, find_tags):
-        repo = self.get_url(location)
-        if not repo.lower().startswith('hg:'):
-            repo = 'hg+' + repo
-        egg_project_name = dist.egg_name().split('-', 1)[0]
-        if not repo:
-            return None
-        current_rev = self.get_revision(location)
-        current_rev_hash = self.get_revision_hash(location)
-        tag_revs = self.get_tag_revs(location)
-        branch_revs = self.get_branch_revs(location)
-        if current_rev in tag_revs:
-            # It's a tag
-            full_egg_name = '%s-%s' % (egg_project_name, tag_revs[current_rev])
-        elif current_rev in branch_revs:
-            # It's the tip of a branch
-            full_egg_name = '%s-%s' % (egg_project_name, branch_revs[current_rev])
-        else:
-            full_egg_name = '%s-dev' % egg_project_name
-        return '%s@%s#egg=%s' % (repo, current_rev_hash, full_egg_name)
-
-vcs.register(Mercurial)
diff --git a/vendor/pip-1.2.1/pip/vcs/subversion.py b/vendor/pip-1.2.1/pip/vcs/subversion.py
deleted file mode 100644
index f54eee66..00000000
--- a/vendor/pip-1.2.1/pip/vcs/subversion.py
+++ /dev/null
@@ -1,272 +0,0 @@
-import os
-import re
-from pip.backwardcompat import urlparse
-from pip import call_subprocess, InstallationError
-from pip.index import Link
-from pip.util import rmtree, display_path
-from pip.log import logger
-from pip.vcs import vcs, VersionControl
-
-_svn_xml_url_re = re.compile('url="([^"]+)"')
-_svn_rev_re = re.compile('committed-rev="(\d+)"')
-_svn_url_re = re.compile(r'URL: (.+)')
-_svn_revision_re = re.compile(r'Revision: (.+)')
-_svn_info_xml_rev_re = re.compile(r'\s*revision="(\d+)"')
-_svn_info_xml_url_re = re.compile(r'<url>(.*)</url>')
-
-
-class Subversion(VersionControl):
-    name = 'svn'
-    dirname = '.svn'
-    repo_name = 'checkout'
-    schemes = ('svn', 'svn+ssh', 'svn+http', 'svn+https', 'svn+svn')
-    bundle_file = 'svn-checkout.txt'
-    guide = ('# This was an svn checkout; to make it a checkout again run:\n'
-            'svn checkout --force -r %(rev)s %(url)s .\n')
-
-    def get_info(self, location):
-        """Returns (url, revision), where both are strings"""
-        assert not location.rstrip('/').endswith(self.dirname), 'Bad directory: %s' % location
-        output = call_subprocess(
-            [self.cmd, 'info', location], show_stdout=False, extra_environ={'LANG': 'C'})
-        match = _svn_url_re.search(output)
-        if not match:
-            logger.warn('Cannot determine URL of svn checkout %s' % display_path(location))
-            logger.info('Output that cannot be parsed: \n%s' % output)
-            return None, None
-        url = match.group(1).strip()
-        match = _svn_revision_re.search(output)
-        if not match:
-            logger.warn('Cannot determine revision of svn checkout %s' % display_path(location))
-            logger.info('Output that cannot be parsed: \n%s' % output)
-            return url, None
-        return url, match.group(1)
-
-    def parse_vcs_bundle_file(self, content):
-        for line in content.splitlines():
-            if not line.strip() or line.strip().startswith('#'):
-                continue
-            match = re.search(r'^-r\s*([^ ])?', line)
-            if not match:
-                return None, None
-            rev = match.group(1)
-            rest = line[match.end():].strip().split(None, 1)[0]
-            return rest, rev
-        return None, None
-
-    def export(self, location):
-        """Export the svn repository at the url to the destination location"""
-        url, rev = self.get_url_rev()
-        rev_options = get_rev_options(url, rev)
-        logger.notify('Exporting svn repository %s to %s' % (url, location))
-        logger.indent += 2
-        try:
-            if os.path.exists(location):
-                # Subversion doesn't like to check out over an existing directory
-                # --force fixes this, but was only added in svn 1.5
-                rmtree(location)
-            call_subprocess(
-                [self.cmd, 'export'] + rev_options + [url, location],
-                filter_stdout=self._filter, show_stdout=False)
-        finally:
-            logger.indent -= 2
-
-    def switch(self, dest, url, rev_options):
-        call_subprocess(
-            [self.cmd, 'switch'] + rev_options + [url, dest])
-
-    def update(self, dest, rev_options):
-        call_subprocess(
-            [self.cmd, 'update'] + rev_options + [dest])
-
-    def obtain(self, dest):
-        url, rev = self.get_url_rev()
-        rev_options = get_rev_options(url, rev)
-        if rev:
-            rev_display = ' (to revision %s)' % rev
-        else:
-            rev_display = ''
-        if self.check_destination(dest, url, rev_options, rev_display):
-            logger.notify('Checking out %s%s to %s'
-                          % (url, rev_display, display_path(dest)))
-            call_subprocess(
-                [self.cmd, 'checkout', '-q'] + rev_options + [url, dest])
-
-    def get_location(self, dist, dependency_links):
-        for url in dependency_links:
-            egg_fragment = Link(url).egg_fragment
-            if not egg_fragment:
-                continue
-            if '-' in egg_fragment:
-                ## FIXME: will this work when a package has - in the name?
-                key = '-'.join(egg_fragment.split('-')[:-1]).lower()
-            else:
-                key = egg_fragment
-            if key == dist.key:
-                return url.split('#', 1)[0]
-        return None
-
-    def get_revision(self, location):
-        """
-        Return the maximum revision for all files under a given location
-        """
-        # Note: taken from setuptools.command.egg_info
-        revision = 0
-
-        for base, dirs, files in os.walk(location):
-            if self.dirname not in dirs:
-                dirs[:] = []
-                continue    # no sense walking uncontrolled subdirs
-            dirs.remove(self.dirname)
-            entries_fn = os.path.join(base, self.dirname, 'entries')
-            if not os.path.exists(entries_fn):
-                ## FIXME: should we warn?
-                continue
-
-            dirurl, localrev = self._get_svn_url_rev(base)
-
-            if base == location:
-                base_url = dirurl+'/'   # save the root url
-            elif not dirurl or not dirurl.startswith(base_url):
-                dirs[:] = []
-                continue    # not part of the same svn tree, skip it
-            revision = max(revision, localrev)
-        return revision
-
-    def get_url_rev(self):
-        # hotfix the URL scheme after removing svn+ from svn+ssh:// readd it
-        url, rev = super(Subversion, self).get_url_rev()
-        if url.startswith('ssh://'):
-            url = 'svn+' + url
-        return url, rev
-
-    def get_url(self, location):
-        # In cases where the source is in a subdirectory, not alongside setup.py
-        # we have to look up in the location until we find a real setup.py
-        orig_location = location
-        while not os.path.exists(os.path.join(location, 'setup.py')):
-            last_location = location
-            location = os.path.dirname(location)
-            if location == last_location:
-                # We've traversed up to the root of the filesystem without finding setup.py
-                logger.warn("Could not find setup.py for directory %s (tried all parent directories)"
-                            % orig_location)
-                return None
-
-        return self._get_svn_url_rev(location)[0]
-
-    def _get_svn_url_rev(self, location):
-        f = open(os.path.join(location, self.dirname, 'entries'))
-        data = f.read()
-        f.close()
-        if data.startswith('8') or data.startswith('9') or data.startswith('10'):
-            data = list(map(str.splitlines, data.split('\n\x0c\n')))
-            del data[0][0]  # get rid of the '8'
-            url = data[0][3]
-            revs = [int(d[9]) for d in data if len(d)>9 and d[9]]+[0]
-        elif data.startswith('<?xml'):
-            match = _svn_xml_url_re.search(data)
-            if not match:
-                raise ValueError('Badly formatted data: %r' % data)
-            url = match.group(1)    # get repository URL
-            revs = [int(m.group(1)) for m in _svn_rev_re.finditer(data)]+[0]
-        else:
-            try:
-                # subversion >= 1.7
-                xml = call_subprocess([self.cmd, 'info', '--xml', location], show_stdout=False)
-                url = _svn_info_xml_url_re.search(xml).group(1)
-                revs = [int(m.group(1)) for m in _svn_info_xml_rev_re.finditer(xml)]
-            except InstallationError:
-                url, revs = None, []
-
-        if revs:
-            rev = max(revs)
-        else:
-            rev = 0
-
-        return url, rev
-
-    def get_tag_revs(self, svn_tag_url):
-        stdout = call_subprocess(
-            [self.cmd, 'ls', '-v', svn_tag_url], show_stdout=False)
-        results = []
-        for line in stdout.splitlines():
-            parts = line.split()
-            rev = int(parts[0])
-            tag = parts[-1].strip('/')
-            results.append((tag, rev))
-        return results
-
-    def find_tag_match(self, rev, tag_revs):
-        best_match_rev = None
-        best_tag = None
-        for tag, tag_rev in tag_revs:
-            if (tag_rev > rev and
-                (best_match_rev is None or best_match_rev > tag_rev)):
-                # FIXME: Is best_match > tag_rev really possible?
-                # or is it a sign something is wacky?
-                best_match_rev = tag_rev
-                best_tag = tag
-        return best_tag
-
-    def get_src_requirement(self, dist, location, find_tags=False):
-        repo = self.get_url(location)
-        if repo is None:
-            return None
-        parts = repo.split('/')
-        ## FIXME: why not project name?
-        egg_project_name = dist.egg_name().split('-', 1)[0]
-        rev = self.get_revision(location)
-        if parts[-2] in ('tags', 'tag'):
-            # It's a tag, perfect!
-            full_egg_name = '%s-%s' % (egg_project_name, parts[-1])
-        elif parts[-2] in ('branches', 'branch'):
-            # It's a branch :(
-            full_egg_name = '%s-%s-r%s' % (dist.egg_name(), parts[-1], rev)
-        elif parts[-1] == 'trunk':
-            # Trunk :-/
-            full_egg_name = '%s-dev_r%s' % (dist.egg_name(), rev)
-            if find_tags:
-                tag_url = '/'.join(parts[:-1]) + '/tags'
-                tag_revs = self.get_tag_revs(tag_url)
-                match = self.find_tag_match(rev, tag_revs)
-                if match:
-                    logger.notify('trunk checkout %s seems to be equivalent to tag %s' % match)
-                    repo = '%s/%s' % (tag_url, match)
-                    full_egg_name = '%s-%s' % (egg_project_name, match)
-        else:
-            # Don't know what it is
-            logger.warn('svn URL does not fit normal structure (tags/branches/trunk): %s' % repo)
-            full_egg_name = '%s-dev_r%s' % (egg_project_name, rev)
-        return 'svn+%s@%s#egg=%s' % (repo, rev, full_egg_name)
-
-
-def get_rev_options(url, rev):
-    if rev:
-        rev_options = ['-r', rev]
-    else:
-        rev_options = []
-
-    r = urlparse.urlsplit(url)
-    if hasattr(r, 'username'):
-        # >= Python-2.5
-        username, password = r.username, r.password
-    else:
-        netloc = r[1]
-        if '@' in netloc:
-            auth = netloc.split('@')[0]
-            if ':' in auth:
-                username, password = auth.split(':', 1)
-            else:
-                username, password = auth, None
-        else:
-            username, password = None, None
-
-    if username:
-        rev_options += ['--username', username]
-    if password:
-        rev_options += ['--password', password]
-    return rev_options
-
-
-vcs.register(Subversion)
diff --git a/vendor/pip-1.2.1/setup.cfg b/vendor/pip-1.2.1/setup.cfg
deleted file mode 100644
index ce26f6af..00000000
--- a/vendor/pip-1.2.1/setup.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-[nosetests]
-where=tests
diff --git a/vendor/pip-1.2.1/setup.py b/vendor/pip-1.2.1/setup.py
deleted file mode 100644
index 32276211..00000000
--- a/vendor/pip-1.2.1/setup.py
+++ /dev/null
@@ -1,55 +0,0 @@
-import sys
-import os
-from setuptools import setup
-
-# If you change this version, change it also in docs/conf.py
-version = "1.1"
-
-doc_dir = os.path.join(os.path.abspath(os.path.dirname(__file__)), "docs")
-index_filename = os.path.join(doc_dir, "index.txt")
-news_filename = os.path.join(doc_dir, "news.txt")
-long_description = """
-
-The main website for pip is `www.pip-installer.org
-<http://www.pip-installer.org>`_.  You can also install
-the `in-development version <https://github.com/pypa/pip/tarball/develop#egg=pip-dev>`_
-of pip with ``easy_install pip==dev``.
-
-"""
-f = open(index_filename)
-# remove the toctree from sphinx index, as it breaks long_description
-parts = f.read().split("split here", 2)
-long_description = parts[0] + long_description + parts[2]
-f.close()
-f = open(news_filename)
-long_description += "\n\n" + f.read()
-f.close()
-
-setup(name="pip",
-      version=version,
-      description="pip installs packages. Python packages. An easy_install replacement",
-      long_description=long_description,
-      classifiers=[
-        'Development Status :: 5 - Production/Stable',
-        'Intended Audience :: Developers',
-        'License :: OSI Approved :: MIT License',
-        'Topic :: Software Development :: Build Tools',
-        'Programming Language :: Python :: 2',
-        'Programming Language :: Python :: 2.4',
-        'Programming Language :: Python :: 2.5',
-        'Programming Language :: Python :: 2.6',
-        'Programming Language :: Python :: 2.7',
-        'Programming Language :: Python :: 3',
-        'Programming Language :: Python :: 3.1',
-        'Programming Language :: Python :: 3.2',
-      ],
-      keywords='easy_install distutils setuptools egg virtualenv',
-      author='The pip developers',
-      author_email='python-virtualenv@groups.google.com',
-      url='http://www.pip-installer.org',
-      license='MIT',
-      packages=['pip', 'pip.commands', 'pip.vcs'],
-      entry_points=dict(console_scripts=['pip=pip:main', 'pip-%s=pip:main' % sys.version[:3]]),
-      test_suite='nose.collector',
-      tests_require=['nose', 'virtualenv>=1.7', 'scripttest>=1.1.1', 'mock'],
-      zip_safe=False)
diff --git a/vendor/pip-1.2.1/tests/__init__.py b/vendor/pip-1.2.1/tests/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/vendor/pip-1.2.1/tests/in dex/FSPkg/FSPkg-0.1dev.tar.gz b/vendor/pip-1.2.1/tests/in dex/FSPkg/FSPkg-0.1dev.tar.gz
deleted file mode 100644
index 7fa7c10c2398d841d046838fa08b19188951cb90..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1034
zcmV+l1oitLiwFREN#aWY1MQmcZ{ju>$NSoUg+(=SHv!Erf`o*&({{a0-Dq{)Z7;ei
z@`#~Uox~R#uH0XLj+0P`D0C`Gwefsjki?IFC6B+h^Mv#3tNYp6Nv&9xHR$)TIr{lg
zQy%jR+ja+*=Xrh4!ItgVwta&8^>!;~E)_|2S3<I&yYhXxqm=KkZ{8F>Y$xmE-1vVg
zMUA82+5UG2u5bMBI!+(_-vqh;&2Nv+W?dFflS2=Lf1`iLv9$m7G~k2(n;`eUq-rjD
zlj*FMHuUrGJ#UBqeYdLrf$N@NtCrqWICB5rXwe6m=x>oCv*4dO;~^g5kS@%%T*N_2
z7fiAw*2yZJQ}o(h1`f!&{>8GMHumV>c0IeQf8X&y|4lGWlL#C4t0dtPvq&VV%2PUc
z%Hl8(WO7etRHD+hlpUN%gcdX{=7qM^v)c%nQg31s(NWtBtab-sLy>h<9Lwa8%1O$E
z%1o_u#%Wf$q7hb9DqJ+&Ds%HBo&_64TCKm)lf_!Af)h@pWK*UaAKlz`@G1U4^?j(6
z#WRV`Be+va4A0KQQZTIpb(h4wB%PV-AHH+nk%?)LGpT~L+KT$`>GDgGhH}&vOqfo{
z)t!^Mt}Hc{N?Jf8!nm>gm<SpRPGXt0y2>|CwYlsW6TR)ZIGfN|>PNmxDLppY@ZTHy
zFyZr%j&9oYYhZlU?%+0kAd%oyX6Jd=Z{L;`vDlO-s|Z4($mkEf2$UJVG7(5JrK5Ag
zC4DTWMa8*ZIX=%>s{3(M7&1<A_xmn>|DaNWiwqHsl^ka2MZVjzCT&QUfk>FnkhvRe
z)R7r+Zd@<D=J~g<TJ2`*{y(I8poKJ^ECbHsd)ZSD>IH4=-Tztk=KkNYd>iKfMgV;r
zH(T|;KI^_v`x$%n@Aa$tw>)_NYlLSlsIT2gpf<MZKTcFv@9etS&h7whJbV3Lz5fj?
zs}K5b0$Bf#o2~l4y7<ujb$ot#pf>jD->dHb?Y{5&p#LWLohp*O)p!5QBQry6_bfCf
z5glSPD$vSc_3SJxd_9jMk}kFRiNFi`C5dQP=(8byDtLk3nGnbjYfEw7HQ^AGvKbCR
zzvTgrA^tSJ7+?N1Mn6BsfOd4_qKL|vD)Xoey5dAllQep)>$M&5%52sD_2s9JKfS*`
zz}DZePyeptRrK$Bt_}Kcg4LHlRDJ_MPb>!2^tC}!HEoL@Rr6HeF{}3VJ!sXY5)p8^
zpxhM9|GW?cEM_VQYWs@u|75HFH=ggy+t|PV_bd7zI0K0PHG&b(u`hy0%=-Vo>Y76L
z>))xo|My)7_WzA=3fcz%0000000000000000000000000000000QgVx4Nr6VZvapL
E0GQk!n*aa+

diff --git a/vendor/pip-1.2.1/tests/in dex/FSPkg/index.html b/vendor/pip-1.2.1/tests/in dex/FSPkg/index.html
deleted file mode 100644
index cf4f404e..00000000
--- a/vendor/pip-1.2.1/tests/in dex/FSPkg/index.html	
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><head><title>Links for FSPkg</title></head><body><h1>Links for FSPkg</h1><a href="./FSPkg-0.1dev.tar.gz#md5=ba6e46bed32c5b6d20f974d7d889bdb2">FSPkg-0.1dev.tar.gz</a><br/>
-<a href="file://../../packages/FSPkg">Source</a><br/> 
-</body></html>
diff --git a/vendor/pip-1.2.1/tests/in dex/README.txt b/vendor/pip-1.2.1/tests/in dex/README.txt
deleted file mode 100644
index d26726fe..00000000
--- a/vendor/pip-1.2.1/tests/in dex/README.txt	
+++ /dev/null
@@ -1,2 +0,0 @@
-This directory has the odd space in its name in order to test urlquoting and
-dequoting of file:// scheme index URLs.
diff --git a/vendor/pip-1.2.1/tests/local_repos.py b/vendor/pip-1.2.1/tests/local_repos.py
deleted file mode 100644
index 4a1a171b..00000000
--- a/vendor/pip-1.2.1/tests/local_repos.py
+++ /dev/null
@@ -1,75 +0,0 @@
-import os
-import subprocess
-from pip.vcs import subversion, git, bazaar, mercurial
-from pip.backwardcompat import urlretrieve
-from tests.test_pip import path_to_url
-from tests.pypi_server import PyPIProxy
-
-
-if hasattr(subprocess, "check_call"):
-    subprocess_call = subprocess.check_call
-else:
-    subprocess_call = subprocess.call
-
-
-def _create_initools_repository():
-    subprocess_call('svnadmin create INITools'.split(), cwd=_get_vcs_folder())
-
-
-def _dump_initools_repository():
-    filename, _ = urlretrieve('http://bitbucket.org/hltbra/pip-initools-dump/raw/8b55c908a320/INITools_modified.dump')
-    initools_folder = os.path.join(_get_vcs_folder(), 'INITools')
-    devnull = open(os.devnull, 'w')
-    dump = open(filename)
-    subprocess_call(['svnadmin', 'load', initools_folder], stdin=dump, stdout=devnull)
-    dump.close()
-    devnull.close()
-    os.remove(filename)
-
-
-def _create_svn_repository_for_initools():
-    tests_cache = _get_vcs_folder()
-    if not os.path.exists(os.path.join(tests_cache, 'INITools')):
-        _create_initools_repository()
-        _dump_initools_repository()
-
-
-def _get_vcs_folder():
-    folder_name = PyPIProxy.CACHE_PATH
-    if not os.path.exists(folder_name):
-        os.mkdir(folder_name)
-    return folder_name
-
-
-def _get_vcs_and_checkout_url(remote_repository):
-    tests_cache = _get_vcs_folder()
-    vcs_classes = {'svn': subversion.Subversion,
-                   'git': git.Git,
-                   'bzr': bazaar.Bazaar,
-                   'hg': mercurial.Mercurial}
-    default_vcs = 'svn'
-    if '+' not in remote_repository:
-        remote_repository = '%s+%s' % (default_vcs, remote_repository)
-    vcs, repository_path = remote_repository.split('+', 1)
-    vcs_class = vcs_classes[vcs]
-    branch = ''
-    if vcs == 'svn':
-        branch = os.path.basename(remote_repository)
-        repository_name = os.path.basename(remote_repository[:-len(branch)-1]) # remove the slash
-    else:
-        repository_name = os.path.basename(remote_repository)
-
-    destination_path = os.path.join(tests_cache, repository_name)
-    if not os.path.exists(destination_path):
-        vcs_class(remote_repository).obtain(destination_path)
-    return '%s+%s' % (vcs, path_to_url('/'.join([tests_cache, repository_name, branch])))
-
-
-def local_checkout(remote_repo):
-    if remote_repo.startswith('svn'):
-        _create_svn_repository_for_initools()
-    return _get_vcs_and_checkout_url(remote_repo)
-
-
-def local_repo(remote_repo):
-    return local_checkout(remote_repo).split('+', 1)[1]
diff --git a/vendor/pip-1.2.1/tests/packages/BrokenEmitsUTF8/broken.py b/vendor/pip-1.2.1/tests/packages/BrokenEmitsUTF8/broken.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/vendor/pip-1.2.1/tests/packages/BrokenEmitsUTF8/setup.py b/vendor/pip-1.2.1/tests/packages/BrokenEmitsUTF8/setup.py
deleted file mode 100644
index 989cc2a0..00000000
--- a/vendor/pip-1.2.1/tests/packages/BrokenEmitsUTF8/setup.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from distutils.core import setup
-import sys
-
-class FakeError(Exception):
-    pass
-
-if sys.argv[1] == 'install':
-    if hasattr(sys.stdout, 'buffer'):
-        sys.stdout.buffer.write('\nThis package prints out UTF-8 stuff like:\n'.encode('utf-8'))
-        sys.stdout.buffer.write('* return type of ‘main’ is not ‘int’\n'.encode('utf-8'))
-        sys.stdout.buffer.write('* Björk Guðmundsdóttir [ˈpjœr̥k ˈkvʏðmʏntsˌtoʊhtɪr]'.encode('utf-8'))
-    else:
-        pass
-        sys.stdout.write('\nThis package prints out UTF-8 stuff like:\n')
-        sys.stdout.write('* return type of \xe2\x80\x98main\xe2\x80\x99 is not \xe2\x80\x98int\xe2\x80\x99\n')
-        sys.stdout.write('* Bj\xc3\xb6rk Gu\xc3\xb0mundsd\xc3\xb3ttir [\xcb\x88pj\xc5\x93r\xcc\xa5k \xcb\x88kv\xca\x8f\xc3\xb0m\xca\x8fnts\xcb\x8cto\xca\x8aht\xc9\xaar]\n')
-
-    raise FakeError('this package designed to fail on install')
-
-setup(name='broken',
-      version='0.2broken',
-      py_modules=['broken'],
-      )
diff --git a/vendor/pip-1.2.1/tests/packages/FSPkg/fspkg/__init__.py b/vendor/pip-1.2.1/tests/packages/FSPkg/fspkg/__init__.py
deleted file mode 100644
index 792d6005..00000000
--- a/vendor/pip-1.2.1/tests/packages/FSPkg/fspkg/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-#
diff --git a/vendor/pip-1.2.1/tests/packages/FSPkg/setup.cfg b/vendor/pip-1.2.1/tests/packages/FSPkg/setup.cfg
deleted file mode 100644
index 01bb9544..00000000
--- a/vendor/pip-1.2.1/tests/packages/FSPkg/setup.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-[egg_info]
-tag_build = dev
-tag_svn_revision = true
diff --git a/vendor/pip-1.2.1/tests/packages/FSPkg/setup.py b/vendor/pip-1.2.1/tests/packages/FSPkg/setup.py
deleted file mode 100644
index c94ead94..00000000
--- a/vendor/pip-1.2.1/tests/packages/FSPkg/setup.py
+++ /dev/null
@@ -1,25 +0,0 @@
-from setuptools import setup, find_packages
-
-version = '0.1'
-
-setup(name='FSPkg',
-      version=version,
-      description="File system test package",
-      long_description="""\
-File system test package""",
-      classifiers=[], # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers
-      keywords='pip tests',
-      author='pip',
-      author_email='pip@openplans.org',
-      url='http://pip.openplans.org',
-      license='',
-      packages=find_packages(exclude=['ez_setup', 'examples', 'tests']),
-      include_package_data=True,
-      zip_safe=False,
-      install_requires=[
-          # -*- Extra requirements: -*-
-      ],
-      entry_points="""
-      # -*- Entry points: -*-
-      """,
-      )
diff --git a/vendor/pip-1.2.1/tests/packages/LineEndings/setup.py b/vendor/pip-1.2.1/tests/packages/LineEndings/setup.py
deleted file mode 100644
index d65ccfb7..00000000
--- a/vendor/pip-1.2.1/tests/packages/LineEndings/setup.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from distutils.core import setup
-
-setup()
diff --git a/vendor/pip-1.2.1/tests/packages/README.txt b/vendor/pip-1.2.1/tests/packages/README.txt
deleted file mode 100644
index b6ecde63..00000000
--- a/vendor/pip-1.2.1/tests/packages/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-This package exists for testing uninstall-rollback. 
-
-Version 0.2broken has a setup.py crafted to fail on install (and only on
-install). If any earlier step would fail (i.e. egg-info-generation), the
-already-installed version would never be uninstalled, so uninstall-rollback
-would not come into play.
diff --git a/vendor/pip-1.2.1/tests/packages/broken-0.1.tar.gz b/vendor/pip-1.2.1/tests/packages/broken-0.1.tar.gz
deleted file mode 100644
index 3298fce4e02f29bdfa28fed577be86c49e859bec..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 407
zcmV;I0cidoiwFqyGUQ4E17dP-Yh`XNFfK7JbYXG;?bgq0gD?~aaL@TGa_a`u8LbKh
z4}<+G-E3J|cNk-&Hr?Eekt7cK-_I)6QYbqqE4<Go`l5Jv@2f7Q_-2`DTjbK{id_l<
zZ@ZGfv-j7AL5LF&+a<1FUPm0_dIt849u!JbiLnt=nSSx(*ZsABqLyv{71Kp-<(p3W
z@B71}{U<)z^`8Vz*?-p`5(C@N|IV$Y;CPiNUFalLRxBjL3D1SpxS9uqs^u)BoP~pW
zS_T&gSALjOiO9l1IX=5$zIo?jRisRXugwi_&E`2Wz(39ZY;tFgquXik`FDKh;QjA9
zt^@h+!z0slMKv`Sb(Tk%ST>5vw2yE-8)&yv4hfnUoKv|O;pb=)O<y8(FE}%E`oY@L
zRiQtHJUllUr%BpYACj15YVWpdrec}ox_VYqoTXH+h2(7oGTTx9>%$Iy0RGCq?X>@Y
z+u)b^-)=+xd$729nvbUu4srDnhjak|000000000000000003~pegWz+1e*XT003F<
B!S(<E

diff --git a/vendor/pip-1.2.1/tests/packages/broken-0.2broken.tar.gz b/vendor/pip-1.2.1/tests/packages/broken-0.2broken.tar.gz
deleted file mode 100644
index 8c4a8aa74d704cdbdf5c520f211038416431827a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 509
zcmV<Z0RsLXiwFq&GUQ4E17dP-Yh`XNFfKA;a&K#8ZZ33TaschtPixyS6aa9a^(o%X
zEzFs0CpH9f7%bgNH>a$uJ(MyOM@h9<mXYMLeETXkjzdc6B@L9l-$l0mVf@~+JlAT?
z%YY7|d2{vIJ3i{9>1f-A>4@&P9WM-{G^BADr?E%FIF1t!M&1e3#xf1y<xCfU<?Hj_
z8vmf?hw(Su*43ce96A0;GJG}uLz?d5AGuth;fQYIPci=QZmE@og)p|ZqA-J8X%0eG
zN?T|$fpj+;Lr7jQW8i|V`BZDA&!+!!URj~a^DzOZa>Im(<#zUf>DAMH_yCg$_@Z=g
zxhVX0nr6cAy={E^D2!X2ui1*jf*Y|a`2wthB@+dx61w&0gfvfeRx-&aew(uXr)F1x
zC$5cqn2Ep3=G{=W`6Jb$F1VT8cgr5SLAR^-zj{&s*H_<y%j{xy!upTW!|(ra7)MzD
zr|^?owqTY8w{7u^AskSWx$+uAn-OF;vP%+jQ%lM8W(>cxt88|ck?%_KpmOEgcYUet
zqtb`>0hg|(``#ZS=cU<O_LZAli{`7+cU~9FE|r#jkB8o;{@doLKLBslKaG<9{2xWz
z^FK_m{!ij|`s?O$mVrB@`%@FE3n7FMLI@#*5JCtcgb+dqp%3X9E2^O+04M+eNQwrx

diff --git a/vendor/pip-1.2.1/tests/packages/paxpkg.tar.bz2 b/vendor/pip-1.2.1/tests/packages/paxpkg.tar.bz2
deleted file mode 100644
index d4fe6f4a96ed983d459dbc61d414454689e03ebc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1094
zcmV-M1iAY{T4*^jL0KkKS<w$%Z2$#6f0o~n06<#z|MLIu-;V$9|L_C=05AYR0Ekco
z9xiKcInGnNJ1``n8c5Le(s~dLsKfvUKp7eU0qOt-P!nkyqclT7pa2a320@?z001R4
zNYr|oquP<_p{9}QXwU=oPf4H+00Z?+H1vQ2jF={dLn9+5hJZ8~7(g@{G{|Ba03?t^
z!%&zqL8SE5dWWcK=q84Z0004yH2R2LEWIto(G0(DY#wcc*fXZB3UHaW2{V#Ofre=$
z02`+7Q#~X!RD}d+V3K%*^egCA6VU13OPXtrrV(-#Nebm-gp$e#fP|TnhCCJijJ@fn
zv_qR|%t{6em)4F3U3rvu*gl;fcRptHK<dI3WX#O$F>T1Xwiz0)Sy~!M+??^tQ`!*P
z=gKNs0mEd&m|a?)7<YW~J2^NyQ^!o&5b-*l^gujHnfCTYdZDt%J_yB=pyG}JRxcT5
ztO!(2T4K&TiW3+@-;5>4BUij}`7jz8GdLjv5x&mOZ7^MR*u;=;<Ks9ILECqmI-Tpi
zJhtuk_DY3$35WoxEQnm(e6F@JNpKl$r3!>7lk+)skeY-h9E8l(vDu8$2}1+qL2yj=
zIxX^{ux}cIGQ+N<R0xySi-`sxo2s2e81q%EXfT>(t((!I^<LS-oI#}#l6%MtU|isZ
zxr>y<9BJNaJy0s)nzAmt;VlzrQ*CzGHXUnN;+UCPR95)6>f5c+Gfi|BUoiKM{?nG;
zp=sbNNhFd>azpt0WJi>x<q1MvJ|gpop<U$r<`Wp~%~a0-_(+max|C(X&{A;<jz{p~
z-{-tcMqO;pvGZlo6B*=M!&B_T^+H4{I9NJuhzq+;he<T|2e36s;F`@Ul)@A#++rHi
zt(!IR@0_NvBXU=C;!`}6oHYNT=IIDgZ5u~D4Vb7Ht{C??T?n(MvJE#z6fGY^Xf<KK
zLAEYJ?S)ptJZ3>ezA{RzdnbsEF5Zg3Ku{=ZPjf}nDM<?ZJHl7rthC|JzboTC!>mGK
z3Cvxp4iVfE%?6Ssu-T4$k}WDU_X6g5jpQj{Vv;?yRExmZLs-D584Q%9VgM(G`6Wb_
zi{WM}u8#o(978Gys9A-Hb0Y}lfnqnJq2k#}$7U_j6^KF^q?qRr6@w3M@X5f<XqFrZ
zxg(zR>r*8@S%fAvd)cNB*z{LjViw6zVoWf@6sHgyFl?)HX~a$(gyn-AYjaP%6XJa@
z);#`u|Eh(lOfik9t7HU&B~}os2GS==I))|CYDRO7hWW7AnWa8NSejiI>u)@g=7rFZ
zX-ZRDrn9yT1Zl~aGKkJoVFtKs76h?nVYfnvsW>r+T%cAJ%>s%@)J8+Z6bnRakZD^@
zuw+;1rs^D+U4?WFz%m$5CrRq84P7W+gBeg+#WU~NO!9y@G6m&e$;H5Fmg!ERB){VB
MNT&)C8X@bApnJ9Se*gdg

diff --git a/vendor/pip-1.2.1/tests/packages/pkgwithmpkg-1.0-py2.7-macosx10.7.mpkg.zip b/vendor/pip-1.2.1/tests/packages/pkgwithmpkg-1.0-py2.7-macosx10.7.mpkg.zip
deleted file mode 100644
index e69de29b..00000000
diff --git a/vendor/pip-1.2.1/tests/packages/pkgwithmpkg-1.0.tar.gz b/vendor/pip-1.2.1/tests/packages/pkgwithmpkg-1.0.tar.gz
deleted file mode 100644
index e69de29b..00000000
diff --git a/vendor/pip-1.2.1/tests/path.py b/vendor/pip-1.2.1/tests/path.py
deleted file mode 100644
index fc724487..00000000
--- a/vendor/pip-1.2.1/tests/path.py
+++ /dev/null
@@ -1,209 +0,0 @@
-# -*- coding: utf-8 -*-
-# Author: Aziz Köksal
-import os
-import sys
-import shutil
-
-if sys.version_info >= (3,):
-    unicode = str
-    u = str
-else:
-    unicode = unicode
-    u = lambda s: s.decode('utf-8')
-
-_base = os.path.supports_unicode_filenames and unicode or str
-
-from pip.util import rmtree
-
-
-class Path(_base):
-    """ Models a path in an object oriented way. """
-
-    sep = os.sep # File system path separator: '/' or '\'.
-    pathsep = os.pathsep # Separator in the PATH environment variable.
-    string = _base
-
-    def __new__(cls, *paths):
-        if len(paths):
-            return _base.__new__(cls, os.path.join(*paths))
-        return _base.__new__(cls)
-
-    def __div__(self, path):
-        """ Joins this path with another path. """
-        """ path_obj / 'bc.d' """
-        """ path_obj / path_obj2 """
-        return Path(self, path)
-
-    __truediv__ = __div__
-
-    def __rdiv__(self, path):
-        """ Joins this path with another path. """
-        """ "/home/a" / path_obj """
-        return Path(path, self)
-
-    __rtruediv__ = __rdiv__
-
-    def __idiv__(self, path):
-        """ Like __div__ but also assigns to the variable. """
-        """ path_obj /= 'bc.d' """
-        return Path(self, path)
-
-    __itruediv__ = __idiv__
-
-    def __floordiv__(self, paths):
-        """ Returns a list of paths prefixed with 'self'. """
-        """ '/home/a' // [bc.d, ef.g] -> [/home/a/bc.d, /home/a/ef.g] """
-        return [Path(self, path) for path in paths]
-
-    def __sub__(self, path):
-        """ Makes this path relative to another path. """
-        """ path_obj - '/home/a' """
-        """ path_obj - path_obj2 """
-        return Path(os.path.relpath(self, path))
-
-    def __rsub__(self, path):
-        """ Returns path relative to this path. """
-        """ "/home/a" - path_obj """
-        return Path(os.path.relpath(path, self))
-
-    def __add__(self, path):
-        """ Path('/home/a') + 'bc.d' -> '/home/abc.d' """
-        return Path(_base(self) + path)
-
-    def __radd__(self, path):
-        """ '/home/a' + Path('bc.d') -> '/home/abc.d' """
-        return Path(path + _base(self))
-
-    def __repr__(self):
-        return u("Path(%s)" % _base.__repr__(self))
-
-    def __hash__(self):
-        return _base.__hash__(self)
-
-    @property
-    def name(self):
-        """ '/home/a/bc.d' -> 'bc.d' """
-        return os.path.basename(self)
-
-    @property
-    def namebase(self):
-        """ '/home/a/bc.d' -> 'bc' """
-        return self.noext.name
-
-    @property
-    def noext(self):
-        """ '/home/a/bc.d' -> '/home/a/bc' """
-        return Path(os.path.splitext(self)[0])
-
-    @property
-    def ext(self):
-        """ '/home/a/bc.d' -> '.d' """
-        return Path(os.path.splitext(self)[1])
-
-    @property
-    def abspath(self):
-        """ './a/bc.d' -> '/home/a/bc.d'  """
-        return Path(os.path.abspath(self))
-
-    @property
-    def realpath(self):
-        """ Resolves symbolic links. """
-        return Path(os.path.realpath(self))
-
-    @property
-    def normpath(self):
-        """ '/home/x/.././a//bc.d' -> '/home/a/bc.d' """
-        return Path(os.path.normpath(self))
-
-    @property
-    def normcase(self):
-        """ Deals with case-insensitive filesystems """
-        return Path(os.path.normcase(self))
-
-    @property
-    def folder(self):
-        """ Returns the folder of this path. """
-        """ '/home/a/bc.d' -> '/home/a' """
-        """ '/home/a/' -> '/home/a' """
-        """ '/home/a' -> '/home' """
-        return Path(os.path.dirname(self))
-
-    @property
-    def exists(self):
-        """ Returns True if the path exists. """
-        return os.path.exists(self)
-
-    @property
-    def atime(self):
-        """ Returns last accessed time. """
-        return os.path.getatime(self)
-
-    @property
-    def mtime(self):
-        """ Returns last modified time. """
-        return os.path.getmtime(self)
-
-    @property
-    def ctime(self):
-        """ Returns last changed time. """
-        return os.path.getctime(self)
-
-    @classmethod
-    def supports_unicode(self):
-        """ Returns True if the system can handle Unicode file names. """
-        return os.path.supports_unicode_filenames()
-
-    def walk(self, **kwargs):
-        """ Returns a generator that walks through a directory tree. """
-        if "followlinks" in kwargs:
-            from sys import version_info as vi
-            if vi[0]*10+vi[1] < 26: # Only Python 2.6 or newer supports followlinks
-                del kwargs["followlinks"]
-        return os.walk(self, **kwargs)
-
-    def mkdir(self, mode=0x1FF): # 0o777
-        """ Creates a directory, if it doesn't exist already. """
-        if not self.exists:
-            os.mkdir(self, mode)
-
-    def makedirs(self, mode=0x1FF): # 0o777
-        """ Like mkdir(), but also creates parent directories. """
-        if not self.exists:
-            os.makedirs(self, mode)
-
-    def remove(self):
-        """ Removes a file. """
-        os.remove(self)
-    rm = remove # Alias.
-
-    def rmdir(self):
-        """ Removes a directory. """
-        return os.rmdir(self)
-
-    def rmtree(self, noerrors=True):
-        """ Removes a directory tree. Ignores errors by default. """
-        return rmtree(self, ignore_errors=noerrors)
-
-    def copy(self, to):
-        shutil.copy(self, to)
-
-    def copytree(self, to):
-        """ Copies a directory tree to another path. """
-        shutil.copytree(self, to)
-
-    def move(self, to):
-        """ Moves a file or directory to another path. """
-        shutil.move(self, to)
-
-    def rename(self, to):
-        """ Renames a file or directory. May throw an OSError. """
-        os.rename(self, to)
-
-    def renames(self, to):
-        os.renames(self, to)
-
-    def glob(self, pattern):
-        from glob import glob
-        return list(map(Path, glob(_base(self/pattern))))
-
-curdir = Path(os.path.curdir)
diff --git a/vendor/pip-1.2.1/tests/pypi_server.py b/vendor/pip-1.2.1/tests/pypi_server.py
deleted file mode 100644
index e05f944f..00000000
--- a/vendor/pip-1.2.1/tests/pypi_server.py
+++ /dev/null
@@ -1,129 +0,0 @@
-import os
-import pip.backwardcompat
-from pip.backwardcompat import urllib, string_types, b, u, emailmessage
-
-
-urlopen_original = pip.backwardcompat.urllib2.urlopen
-
-
-class CachedResponse(object):
-    """
-    CachedResponse always cache url access and returns the cached response.
-    It returns an object compatible with ``urllib.addinfourl``,
-    it means the object is like the result of a call like::
-
-        >>> response = urllib2.urlopen('http://example.com')
-    """
-
-    def __init__(self, url, folder):
-        self.headers = emailmessage.Message()
-        self.code = 500
-        self.msg = 'Internal Server Error'
-        # url can be a simple string, or a urllib2.Request object
-        if isinstance(url, string_types):
-            self.url = url
-        else:
-            self.url = url.get_full_url()
-            for key, value in url.headers.items():
-                self.headers[key] = value
-        self._body = b('')
-        self._set_all_fields(folder)
-
-    def _set_all_fields(self, folder):
-        filename = os.path.join(folder, urllib.quote(self.url, ''))
-        if not os.path.exists(filename):
-            self._cache_url(filename)
-        fp = open(filename, 'rb')
-        try:
-            line = fp.readline().strip()
-            self.code, self.msg = line.split(None, 1)
-        except ValueError:
-            raise ValueError('Bad field line: %r' % line)
-        self.code = int(self.code)
-        self.msg = u(self.msg)
-        for line in fp:
-            if line == b('\n'):
-                break
-            key, value = line.split(b(': '), 1)
-            self.headers[u(key)] = u(value.strip())
-        for line in fp:
-            self._body += line
-        fp.close()
-
-    def getcode(self):
-        return self.code
-
-    def geturl(self):
-        return self.url
-
-    def info(self):
-        return self.headers
-
-    def read(self, bytes=None):
-        """
-        it can read a chunk of bytes or everything
-        """
-        if bytes:
-            result = self._body[:bytes]
-            self._body = self._body[bytes:]
-            return result
-        return self._body
-
-    def close(self):
-        pass
-
-    def _cache_url(self, filepath):
-        response = urlopen_original(self.url)
-        fp = open(filepath, 'wb')
-        # when it uses file:// scheme, code is None and there is no msg attr
-        # but it has been successfully opened
-        status = b('%s %s' % (getattr(response, 'code', 200) or 200, getattr(response, 'msg', 'OK')))
-        headers = [b('%s: %s' % (key, value)) for key, value in list(response.headers.items())]
-        body = response.read()
-        fp.write(b('\n').join([status] + headers + [b(''), body]))
-        fp.close()
-
-
-class PyPIProxy(object):
-
-    CACHE_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "tests_cache")
-
-    @classmethod
-    def setup(cls):
-        instance = cls()
-        instance._create_cache_folder()
-        instance._monkey_patch_urllib2_to_cache_everything()
-
-    def _monkey_patch_urllib2_to_cache_everything(self):
-        def urlopen(url):
-            return CachedResponse(url, self.CACHE_PATH)
-        pip.backwardcompat.urllib2.urlopen = urlopen
-
-    def _create_cache_folder(self):
-        if not os.path.exists(self.CACHE_PATH):
-            os.mkdir(self.CACHE_PATH)
-
-
-def assert_equal(a, b):
-    assert a == b, "\nexpected:\n%r\ngot:\n%r" % (b, a)
-
-
-def test_cache_proxy():
-    url = 'http://example.com'
-    here = os.path.dirname(os.path.abspath(__file__))
-    filepath = os.path.join(here, urllib.quote(url, ''))
-    if os.path.exists(filepath):
-        os.remove(filepath)
-    response = pip.backwardcompat.urllib2.urlopen(url)
-    r = CachedResponse(url, here)
-    try:
-        assert_equal(r.code, response.code)
-        assert_equal(r.msg, response.msg)
-        assert_equal(r.read(), response.read())
-        assert_equal(r.url, response.url)
-        assert_equal(r.geturl(), response.geturl())
-        assert_equal(set(r.headers.keys()), set(response.headers.keys()))
-        assert_equal(set(r.info().keys()), set(response.info().keys()))
-        assert_equal(r.headers['content-length'], response.headers['content-length'])
-    finally:
-        os.remove(filepath)
diff --git a/vendor/pip-1.2.1/tests/test_all_pip.py b/vendor/pip-1.2.1/tests/test_all_pip.py
deleted file mode 100644
index f2f1ea16..00000000
--- a/vendor/pip-1.2.1/tests/test_all_pip.py
+++ /dev/null
@@ -1,118 +0,0 @@
-import os
-import re
-import sys
-import subprocess
-import shutil
-from os.path import dirname, abspath
-
-from pip.backwardcompat import urllib
-from pip.util import rmtree
-
-
-src_folder = dirname(dirname(abspath(__file__)))
-
-
-def all_projects():
-    data = urllib.urlopen('http://pypi.python.org/simple/').read()
-    projects = [m.group(1) for m in re.finditer(r'<a.*?>(.+)</a>', data)]
-    return projects
-
-
-def main(args=None):
-    if args is None:
-        args = sys.argv[1:]
-    if not args:
-        print('Usage: test_all_pip.py <output-dir>')
-        sys.exit(1)
-    output = os.path.abspath(args[0])
-    if not os.path.exists(output):
-        print('Creating %s' % output)
-        os.makedirs(output)
-    pending_fn = os.path.join(output, 'pending.txt')
-    if not os.path.exists(pending_fn):
-        print('Downloading pending list')
-        projects = all_projects()
-        print('Found %s projects' % len(projects))
-        f = open(pending_fn, 'w')
-        for name in projects:
-            f.write(name + '\n')
-        f.close()
-    print('Starting testing...')
-    while os.stat(pending_fn).st_size:
-        _test_packages(output, pending_fn)
-    print('Finished all pending!')
-
-
-def _test_packages(output, pending_fn):
-    package = get_last_item(pending_fn)
-    print('Testing package %s' % package)
-    dest_dir = os.path.join(output, package)
-    print('Creating virtualenv in %s' % dest_dir)
-    create_venv(dest_dir)
-    print('Uninstalling actual pip')
-    code = subprocess.check_call([os.path.join(dest_dir, 'bin', 'pip'),
-                            'uninstall', '-y', 'pip'])
-    assert not code, 'pip uninstallation failed'
-    print('Installing development pip')
-    code = subprocess.check_call([os.path.join(dest_dir, 'bin', 'python'),
-                            'setup.py', 'install'],
-                            cwd=src_folder)
-    assert not code, 'pip installation failed'
-    print('Trying installation of %s' % dest_dir)
-    code = subprocess.check_call([os.path.join(dest_dir, 'bin', 'pip'),
-                            'install', package])
-    if code:
-        print('Installation of %s failed' % package)
-        print('Now checking easy_install...')
-        create_venv(dest_dir)
-        code = subprocess.check_call([os.path.join(dest_dir, 'bin', 'easy_install'),
-                                package])
-        if code:
-            print('easy_install also failed')
-            add_package(os.path.join(output, 'easy-failure.txt'), package)
-        else:
-            print('easy_install succeeded')
-            add_package(os.path.join(output, 'failure.txt'), package)
-        pop_last_item(pending_fn, package)
-    else:
-        print('Installation of %s succeeded' % package)
-        add_package(os.path.join(output, 'success.txt'), package)
-        pop_last_item(pending_fn, package)
-        rmtree(dest_dir)
-
-
-def create_venv(dest_dir):
-    if os.path.exists(dest_dir):
-        rmtree(dest_dir)
-    print('Creating virtualenv in %s' % dest_dir)
-    code = subprocess.check_call(['virtualenv', '--no-site-packages', dest_dir])
-    assert not code, "virtualenv failed"
-
-
-def get_last_item(fn):
-    f = open(fn, 'r')
-    lines = f.readlines()
-    f.close()
-    return lines[-1].strip()
-
-
-def pop_last_item(fn, line=None):
-    f = open(fn, 'r')
-    lines = f.readlines()
-    f.close()
-    if line:
-        assert lines[-1].strip() == line.strip()
-    lines.pop()
-    f = open(fn, 'w')
-    f.writelines(lines)
-    f.close()
-
-
-def add_package(filename, package):
-    f = open(filename, 'a')
-    f.write(package + '\n')
-    f.close()
-
-
-if __name__ == '__main__':
-    main()
diff --git a/vendor/pip-1.2.1/tests/test_basic.py b/vendor/pip-1.2.1/tests/test_basic.py
deleted file mode 100644
index 8bdce977..00000000
--- a/vendor/pip-1.2.1/tests/test_basic.py
+++ /dev/null
@@ -1,603 +0,0 @@
-import re
-import os
-import filecmp
-import textwrap
-import sys
-from os.path import abspath, join, curdir, pardir
-
-from nose import SkipTest
-from nose.tools import assert_raises
-from mock import patch
-
-from pip.util import rmtree, find_command
-from pip.exceptions import BadCommand
-
-from tests.test_pip import (here, reset_env, run_pip, pyversion, mkdir,
-                            src_folder, write_file)
-from tests.local_repos import local_checkout
-from tests.path import Path
-
-
-def test_correct_pip_version():
-    """
-    Check we are running proper version of pip in run_pip.
-    """
-    reset_env()
-
-    # output is like:
-    # pip PIPVERSION from PIPDIRECTORY (python PYVERSION)
-    result = run_pip('--version')
-
-    # compare the directory tree of the invoked pip with that of this source distribution
-    dir = re.match(r'pip \d(\.[\d])+(\.(pre|post)\d+)? from (.*) \(python \d(.[\d])+\)$',
-                   result.stdout).group(4)
-    pip_folder = join(src_folder, 'pip')
-    pip_folder_outputed = join(dir, 'pip')
-
-    diffs = filecmp.dircmp(pip_folder, pip_folder_outputed)
-
-    # If any non-matching .py files exist, we have a problem: run_pip
-    # is picking up some other version!  N.B. if this project acquires
-    # primary resources other than .py files, this code will need
-    # maintenance
-    mismatch_py = [x for x in diffs.left_only + diffs.right_only + diffs.diff_files if x.endswith('.py')]
-    assert not mismatch_py, 'mismatched source files in %r and %r'% (pip_folder, pip_folder_outputed)
-
-
-def test_pip_second_command_line_interface_works():
-    """
-    Check if ``pip-<PYVERSION>`` commands behaves equally
-    """
-    e = reset_env()
-    result = e.run('pip-%s' % pyversion, 'install', 'INITools==0.2')
-    egg_info_folder = e.site_packages / 'INITools-0.2-py%s.egg-info' % pyversion
-    initools_folder = e.site_packages / 'initools'
-    assert egg_info_folder in result.files_created, str(result)
-    assert initools_folder in result.files_created, str(result)
-
-
-#def test_distutils_configuration_setting():
-#    """
-#    Test the distutils-configuration-setting command (which is distinct from other commands).
-#    """
-    #print run_pip('-vv', '--distutils-cfg=easy_install:index_url:http://download.zope.org/ppix/', expect_error=True)
-    #Script result: python ../../poacheggs.py -E .../poacheggs-tests/test-scratch -vv --distutils-cfg=easy_install:index_url:http://download.zope.org/ppix/
-    #-- stdout: --------------------
-    #Distutils config .../poacheggs-tests/test-scratch/lib/python.../distutils/distutils.cfg is writable
-    #Replaced setting index_url
-    #Updated .../poacheggs-tests/test-scratch/lib/python.../distutils/distutils.cfg
-    #<BLANKLINE>
-    #-- updated: -------------------
-    #  lib/python2.4/distutils/distutils.cfg  (346 bytes)
-
-
-def test_install_from_pypi():
-    """
-    Test installing a package from PyPI.
-    """
-    e = reset_env()
-    result = run_pip('install', '-vvv', 'INITools==0.2')
-    egg_info_folder = e.site_packages / 'INITools-0.2-py%s.egg-info' % pyversion
-    initools_folder = e.site_packages / 'initools'
-    assert egg_info_folder in result.files_created, str(result)
-    assert initools_folder in result.files_created, str(result)
-
-
-def test_install_from_mirrors():
-    """
-    Test installing a package from the PyPI mirrors.
-    """
-    e = reset_env()
-    result = run_pip('install', '-vvv', '--use-mirrors', '--no-index', 'INITools==0.2')
-    egg_info_folder = e.site_packages / 'INITools-0.2-py%s.egg-info' % pyversion
-    initools_folder = e.site_packages / 'initools'
-    assert egg_info_folder in result.files_created, str(result)
-    assert initools_folder in result.files_created, str(result)
-
-
-def test_install_from_mirrors_with_specific_mirrors():
-    """
-    Test installing a package from a specific PyPI mirror.
-    """
-    e = reset_env()
-    result = run_pip('install', '-vvv', '--use-mirrors', '--mirrors', "http://d.pypi.python.org/", '--no-index', 'INITools==0.2')
-    egg_info_folder = e.site_packages / 'INITools-0.2-py%s.egg-info' % pyversion
-    initools_folder = e.site_packages / 'initools'
-    assert egg_info_folder in result.files_created, str(result)
-    assert initools_folder in result.files_created, str(result)
-
-
-def test_editable_install():
-    """
-    Test editable installation.
-    """
-    reset_env()
-    result = run_pip('install', '-e', 'INITools==0.2', expect_error=True)
-    assert "--editable=INITools==0.2 should be formatted with svn+URL" in result.stdout
-    assert len(result.files_created) == 1, result.files_created
-    assert not result.files_updated, result.files_updated
-
-
-def test_install_editable_from_svn():
-    """
-    Test checking out from svn.
-    """
-    reset_env()
-    result = run_pip('install',
-                     '-e',
-                     '%s#egg=initools-dev' %
-                     local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'))
-    result.assert_installed('INITools', with_files=['.svn'])
-
-
-def test_download_editable_to_custom_path():
-    """
-    Test downloading an editable using a relative custom src folder.
-    """
-    reset_env()
-    mkdir('customdl')
-    result = run_pip('install',
-                     '-e',
-                     '%s#egg=initools-dev' %
-                     local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'),
-                     '--src',
-                     'customsrc',
-                     '--download',
-                     'customdl')
-    customsrc = Path('scratch')/'customsrc'/'initools'
-    assert customsrc in result.files_created, sorted(result.files_created.keys())
-    assert customsrc/'setup.py' in result.files_created, sorted(result.files_created.keys())
-
-    customdl = Path('scratch')/'customdl'/'initools'
-    customdl_files_created = [filename for filename in result.files_created
-                                           if filename.startswith(customdl)]
-    assert customdl_files_created
-
-
-def test_editable_no_install_followed_by_no_download():
-    """
-    Test installing an editable in two steps (first with --no-install, then with --no-download).
-    """
-    reset_env()
-
-    result = run_pip('install',
-                     '-e',
-                     '%s#egg=initools-dev' %
-                     local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'),
-                     '--no-install', expect_error=True)
-    result.assert_installed('INITools', without_egg_link=True, with_files=['.svn'])
-
-    result = run_pip('install',
-                     '-e',
-                     '%s#egg=initools-dev' %
-                     local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'),
-                     '--no-download', expect_error=True)
-    result.assert_installed('INITools', without_files=[curdir, '.svn'])
-
-
-def test_no_install_followed_by_no_download():
-    """
-    Test installing in two steps (first with --no-install, then with --no-download).
-    """
-    env = reset_env()
-
-    egg_info_folder = env.site_packages/'INITools-0.2-py%s.egg-info' % pyversion
-    initools_folder = env.site_packages/'initools'
-    build_dir = env.venv/'build'/'INITools'
-
-    result1 = run_pip('install', 'INITools==0.2', '--no-install', expect_error=True)
-    assert egg_info_folder not in result1.files_created, str(result1)
-    assert initools_folder not in result1.files_created, sorted(result1.files_created)
-    assert build_dir in result1.files_created, result1.files_created
-    assert build_dir/'INITools.egg-info' in result1.files_created
-
-    result2 = run_pip('install', 'INITools==0.2', '--no-download', expect_error=True)
-    assert egg_info_folder in result2.files_created, str(result2)
-    assert initools_folder in result2.files_created, sorted(result2.files_created)
-    assert build_dir not in result2.files_created
-    assert build_dir/'INITools.egg-info' not in result2.files_created
-
-
-def test_bad_install_with_no_download():
-    """
-    Test that --no-download behaves sensibly if the package source can't be found.
-    """
-    reset_env()
-    result = run_pip('install', 'INITools==0.2', '--no-download', expect_error=True)
-    assert "perhaps --no-download was used without first running "\
-            "an equivalent install with --no-install?" in result.stdout
-
-
-def test_install_dev_version_from_pypi():
-    """
-    Test using package==dev.
-    """
-    e = reset_env()
-    result = run_pip('install', 'INITools==dev', expect_error=True)
-    assert (e.site_packages / 'initools') in result.files_created, str(result.stdout)
-
-
-def test_install_editable_from_git():
-    """
-    Test cloning from Git.
-    """
-    reset_env()
-    args = ['install']
-    args.extend(['-e',
-                 '%s#egg=pip-test-package' %
-                 local_checkout('git+http://github.com/pypa/pip-test-package.git')])
-    result = run_pip(*args, **{"expect_error": True})
-    result.assert_installed('pip-test-package', with_files=['.git'])
-
-
-def test_install_editable_from_hg():
-    """
-    Test cloning from Mercurial.
-    """
-    reset_env()
-    result = run_pip('install', '-e',
-                     '%s#egg=django-registration' %
-                     local_checkout('hg+http://bitbucket.org/ubernostrum/django-registration'),
-                     expect_error=True)
-    result.assert_installed('django-registration', with_files=['.hg'])
-
-
-def test_vcs_url_final_slash_normalization():
-    """
-    Test that presence or absence of final slash in VCS URL is normalized.
-    """
-    reset_env()
-    result = run_pip('install', '-e',
-                     '%s/#egg=django-registration' %
-                     local_checkout('hg+http://bitbucket.org/ubernostrum/django-registration'),
-                     expect_error=True)
-    assert 'pip-log.txt' not in result.files_created, result.files_created['pip-log.txt'].bytes
-
-
-def test_install_editable_from_bazaar():
-    """
-    Test checking out from Bazaar.
-    """
-    reset_env()
-    result = run_pip('install', '-e',
-                     '%s/@174#egg=django-wikiapp' %
-                     local_checkout('bzr+http://bazaar.launchpad.net/%7Edjango-wikiapp/django-wikiapp/release-0.1'),
-                     expect_error=True)
-    result.assert_installed('django-wikiapp', with_files=['.bzr'])
-
-
-def test_vcs_url_urlquote_normalization():
-    """
-    Test that urlquoted characters are normalized for repo URL comparison.
-    """
-    reset_env()
-    result = run_pip('install', '-e',
-                     '%s/#egg=django-wikiapp' %
-                     local_checkout('bzr+http://bazaar.launchpad.net/%7Edjango-wikiapp/django-wikiapp/release-0.1'),
-                     expect_error=True)
-    assert 'pip-log.txt' not in result.files_created, result.files_created['pip-log.txt'].bytes
-
-
-def test_install_from_local_directory():
-    """
-    Test installing from a local directory.
-    """
-    env = reset_env()
-    to_install = abspath(join(here, 'packages', 'FSPkg'))
-    result = run_pip('install', to_install, expect_error=False)
-    fspkg_folder = env.site_packages/'fspkg'
-    egg_info_folder = env.site_packages/'FSPkg-0.1dev-py%s.egg-info' % pyversion
-    assert fspkg_folder in result.files_created, str(result.stdout)
-    assert egg_info_folder in result.files_created, str(result)
-
-
-def test_install_from_local_directory_with_no_setup_py():
-    """
-    Test installing from a local directory with no 'setup.py'.
-    """
-    reset_env()
-    result = run_pip('install', here, expect_error=True)
-    assert len(result.files_created) == 1, result.files_created
-    assert 'pip-log.txt' in result.files_created, result.files_created
-    assert "is not installable. File 'setup.py' not found." in result.stdout
-
-
-def test_install_curdir():
-    """
-    Test installing current directory ('.').
-    """
-    env = reset_env()
-    run_from = abspath(join(here, 'packages', 'FSPkg'))
-    # Python 2.4 Windows balks if this exists already
-    egg_info = join(run_from, "FSPkg.egg-info")
-    if os.path.isdir(egg_info):
-        rmtree(egg_info)
-    result = run_pip('install', curdir, cwd=run_from, expect_error=False)
-    fspkg_folder = env.site_packages/'fspkg'
-    egg_info_folder = env.site_packages/'FSPkg-0.1dev-py%s.egg-info' % pyversion
-    assert fspkg_folder in result.files_created, str(result.stdout)
-    assert egg_info_folder in result.files_created, str(result)
-
-
-def test_install_curdir_usersite_fails_in_old_python():
-    """
-    Test --user option on older Python versions (pre 2.6) fails intelligibly
-    """
-    if sys.version_info >= (2, 6):
-        raise SkipTest()
-    reset_env()
-    run_from = abspath(join(here, 'packages', 'FSPkg'))
-    result = run_pip('install', '--user', curdir, cwd=run_from, expect_error=True)
-    assert '--user is only supported in Python version 2.6 and newer' in result.stdout
-
-
-def test_install_curdir_usersite():
-    """
-    Test installing current directory ('.') into usersite
-    """
-    if sys.version_info < (2, 6):
-        raise SkipTest()
-    # FIXME distutils --user option seems to be broken in pypy
-    if hasattr(sys, "pypy_version_info"):
-        raise SkipTest()
-    env = reset_env(use_distribute=True)
-    run_from = abspath(join(here, 'packages', 'FSPkg'))
-    result = run_pip('install', '--user', curdir, cwd=run_from, expect_error=False)
-    fspkg_folder = env.user_site/'fspkg'
-    egg_info_folder = env.user_site/'FSPkg-0.1dev-py%s.egg-info' % pyversion
-    assert fspkg_folder in result.files_created, str(result.stdout)
-
-    assert egg_info_folder in result.files_created, str(result)
-
-
-def test_install_subversion_usersite_editable_with_distribute():
-    """
-    Test installing current directory ('.') into usersite after installing distribute
-    """
-    if sys.version_info < (2, 6):
-        raise SkipTest()
-    # FIXME distutils --user option seems to be broken in pypy
-    if hasattr(sys, "pypy_version_info"):
-        raise SkipTest()
-    env = reset_env(use_distribute=True)
-    (env.lib_path/'no-global-site-packages.txt').rm() # this one reenables user_site
-
-    result = run_pip('install', '--user', '-e',
-                     '%s#egg=initools-dev' %
-                     local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'))
-    result.assert_installed('INITools', use_user_site=True)
-
-
-def test_install_subversion_usersite_editable_with_setuptools_fails():
-    """
-    Test installing current directory ('.') into usersite using setuptools fails
-    """
-    # --user only works on 2.6 or higher
-    if sys.version_info < (2, 6):
-        raise SkipTest()
-    # We don't try to use setuptools for 3.X.
-    elif sys.version_info >= (3,):
-        raise SkipTest()
-    env = reset_env(use_distribute=False)
-    no_site_packages = env.lib_path/'no-global-site-packages.txt'
-    if os.path.isfile(no_site_packages):
-        no_site_packages.rm() # this re-enables user_site
-
-    result = run_pip('install', '--user', '-e',
-                     '%s#egg=initools-dev' %
-                     local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'),
-                     expect_error=True)
-    assert '--user --editable not supported with setuptools, use distribute' in result.stdout
-
-
-def test_install_pardir():
-    """
-    Test installing parent directory ('..').
-    """
-    env = reset_env()
-    run_from = abspath(join(here, 'packages', 'FSPkg', 'fspkg'))
-    result = run_pip('install', pardir, cwd=run_from, expect_error=False)
-    fspkg_folder = env.site_packages/'fspkg'
-    egg_info_folder = env.site_packages/'FSPkg-0.1dev-py%s.egg-info' % pyversion
-    assert fspkg_folder in result.files_created, str(result.stdout)
-    assert egg_info_folder in result.files_created, str(result)
-
-
-def test_install_global_option():
-    """
-    Test using global distutils options.
-    (In particular those that disable the actual install action)
-    """
-    reset_env()
-    result = run_pip('install', '--global-option=--version', "INITools==0.1")
-    assert '0.1\n' in result.stdout
-
-
-def test_install_with_pax_header():
-    """
-    test installing from a tarball with pax header for python<2.6
-    """
-    reset_env()
-    run_from = abspath(join(here, 'packages'))
-    run_pip('install', 'paxpkg.tar.bz2', cwd=run_from)
-
-
-def test_install_using_install_option_and_editable():
-    """
-    Test installing a tool using -e and --install-option
-    """
-    env = reset_env()
-    folder = 'script_folder'
-    mkdir(folder)
-    url = 'git+git://github.com/pypa/virtualenv'
-    result = run_pip('install', '-e', '%s#egg=virtualenv' %
-                      local_checkout(url),
-                     '--install-option=--script-dir=%s' % folder)
-    virtualenv_bin = env.venv/'src'/'virtualenv'/folder/'virtualenv'+env.exe
-    assert virtualenv_bin in result.files_created
-
-
-def test_install_global_option_using_editable():
-    """
-    Test using global distutils options, but in an editable installation
-    """
-    reset_env()
-    url = 'hg+http://bitbucket.org/runeh/anyjson'
-    result = run_pip('install', '--global-option=--version',
-                     '-e', '%s@0.2.5#egg=anyjson' %
-                      local_checkout(url))
-    assert '0.2.5\n' in result.stdout
-
-
-def test_install_package_with_same_name_in_curdir():
-    """
-    Test installing a package with the same name of a local folder
-    """
-    env = reset_env()
-    mkdir('mock==0.6')
-    result = run_pip('install', 'mock==0.6')
-    egg_folder = env.site_packages / 'mock-0.6.0-py%s.egg-info' % pyversion
-    assert egg_folder in result.files_created, str(result)
-
-
-mock100_setup_py = textwrap.dedent('''\
-                        from setuptools import setup
-                        setup(name='mock',
-                              version='100.1')''')
-
-
-def test_install_folder_using_dot_slash():
-    """
-    Test installing a folder using pip install ./foldername
-    """
-    env = reset_env()
-    mkdir('mock')
-    pkg_path = env.scratch_path/'mock'
-    write_file('setup.py', mock100_setup_py, pkg_path)
-    result = run_pip('install', './mock')
-    egg_folder = env.site_packages / 'mock-100.1-py%s.egg-info' % pyversion
-    assert egg_folder in result.files_created, str(result)
-
-
-def test_install_folder_using_slash_in_the_end():
-    r"""
-    Test installing a folder using pip install foldername/ or foldername\
-    """
-    env = reset_env()
-    mkdir('mock')
-    pkg_path = env.scratch_path/'mock'
-    write_file('setup.py', mock100_setup_py, pkg_path)
-    result = run_pip('install', 'mock' + os.path.sep)
-    egg_folder = env.site_packages / 'mock-100.1-py%s.egg-info' % pyversion
-    assert egg_folder in result.files_created, str(result)
-
-
-def test_install_folder_using_relative_path():
-    """
-    Test installing a folder using pip install folder1/folder2
-    """
-    env = reset_env()
-    mkdir('initools')
-    mkdir(Path('initools')/'mock')
-    pkg_path = env.scratch_path/'initools'/'mock'
-    write_file('setup.py', mock100_setup_py, pkg_path)
-    result = run_pip('install', Path('initools')/'mock')
-    egg_folder = env.site_packages / 'mock-100.1-py%s.egg-info' % pyversion
-    assert egg_folder in result.files_created, str(result)
-
-
-def test_install_package_which_contains_dev_in_name():
-    """
-    Test installing package from pypi which contains 'dev' in name
-    """
-    env = reset_env()
-    result = run_pip('install', 'django-devserver==0.0.4')
-    devserver_folder = env.site_packages/'devserver'
-    egg_info_folder = env.site_packages/'django_devserver-0.0.4-py%s.egg-info' % pyversion
-    assert devserver_folder in result.files_created, str(result.stdout)
-    assert egg_info_folder in result.files_created, str(result)
-
-
-def test_install_package_with_target():
-    """
-    Test installing a package using pip install --target
-    """
-    env = reset_env()
-    target_dir = env.scratch_path/'target'
-    result = run_pip('install', '-t', target_dir, "initools==0.1")
-    assert Path('scratch')/'target'/'initools' in result.files_created, str(result)
-
-
-def test_find_command_folder_in_path():
-    """
-    If a folder named e.g. 'git' is in PATH, and find_command is looking for
-    the 'git' executable, it should not match the folder, but rather keep
-    looking.
-    """
-    env = reset_env()
-    mkdir('path_one')
-    path_one = env.scratch_path/'path_one'
-    mkdir(path_one/'foo')
-    mkdir('path_two')
-    path_two = env.scratch_path/'path_two'
-    write_file(path_two/'foo', '# nothing')
-    found_path = find_command('foo', map(str, [path_one, path_two]))
-    assert found_path == path_two/'foo'
-
-
-def test_does_not_find_command_because_there_is_no_path():
-    """
-    Test calling `pip.utils.find_command` when there is no PATH env variable
-    """
-    environ_before = os.environ
-    os.environ = {}
-    try:
-        try:
-            find_command('anycommand')
-        except BadCommand:
-            e = sys.exc_info()[1]
-            assert e.args == ("Cannot find command 'anycommand'",)
-        else:
-            raise AssertionError("`find_command` should raise `BadCommand`")
-    finally:
-        os.environ = environ_before
-
-
-@patch('os.pathsep', ':')
-@patch('pip.util.get_pathext')
-@patch('os.path.isfile')
-def test_find_command_trys_all_pathext(mock_isfile, getpath_mock):
-    """
-    If no pathext should check default list of extensions, if file does not
-    exist.
-    """
-    mock_isfile.return_value = False
-
-    getpath_mock.return_value = os.pathsep.join([".COM", ".EXE"])
-
-    paths = [os.path.join('path_one', f)  for f in ['foo.com', 'foo.exe', 'foo']]
-    expected = [((p,),) for p in paths]
-
-    assert_raises(BadCommand, find_command, 'foo', 'path_one')
-    assert mock_isfile.call_args_list == expected, "Actual: %s\nExpected %s" % (mock_isfile.call_args_list, expected)
-    assert getpath_mock.called, "Should call get_pathext"
-
-
-@patch('os.pathsep', ':')
-@patch('pip.util.get_pathext')
-@patch('os.path.isfile')
-def test_find_command_trys_supplied_pathext(mock_isfile, getpath_mock):
-    """
-    If pathext supplied find_command should use all of its list of extensions to find file.
-    """
-    mock_isfile.return_value = False
-    getpath_mock.return_value = ".FOO"
-
-    pathext = os.pathsep.join([".RUN", ".CMD"])
-
-    paths = [os.path.join('path_one', f)  for f in ['foo.run', 'foo.cmd', 'foo']]
-    expected = [((p,),) for p in paths]
-
-    assert_raises(BadCommand, find_command, 'foo', 'path_one', pathext)
-    assert mock_isfile.call_args_list == expected, "Actual: %s\nExpected %s" % (mock_isfile.call_args_list, expected)
-    assert not getpath_mock.called, "Should not call get_pathext"
diff --git a/vendor/pip-1.2.1/tests/test_bundle.py b/vendor/pip-1.2.1/tests/test_bundle.py
deleted file mode 100644
index cf5c5637..00000000
--- a/vendor/pip-1.2.1/tests/test_bundle.py
+++ /dev/null
@@ -1,33 +0,0 @@
-import zipfile
-import textwrap
-from os.path import join
-from pip.download import path_to_url2
-from tests.test_pip import here, reset_env, run_pip, write_file
-from tests.path import Path
-from tests.local_repos import local_checkout
-
-
-def test_create_bundle():
-    """
-    Test making a bundle.  We'll grab one package from the filesystem
-    (the FSPkg dummy package), one from vcs (initools) and one from an
-    index (pip itself).
-
-    """
-    env = reset_env()
-    fspkg = path_to_url2(Path(here)/'packages'/'FSPkg')
-    run_pip('install', '-e', fspkg)
-    pkg_lines = textwrap.dedent('''\
-            -e %s
-            -e %s#egg=initools-dev
-            pip''' % (fspkg, local_checkout('svn+http://svn.colorstudy.com/INITools/trunk')))
-    write_file('bundle-req.txt', pkg_lines)
-    # Create a bundle in env.scratch_path/ test.pybundle
-    result = run_pip('bundle', '-r', env.scratch_path/ 'bundle-req.txt', env.scratch_path/ 'test.pybundle')
-    bundle = result.files_after.get(join('scratch', 'test.pybundle'), None)
-    assert bundle is not None
-
-    files = zipfile.ZipFile(bundle.full).namelist()
-    assert 'src/FSPkg/' in files
-    assert 'src/initools/' in files
-    assert 'build/pip/' in files
diff --git a/vendor/pip-1.2.1/tests/test_cleanup.py b/vendor/pip-1.2.1/tests/test_cleanup.py
deleted file mode 100644
index 15a05083..00000000
--- a/vendor/pip-1.2.1/tests/test_cleanup.py
+++ /dev/null
@@ -1,114 +0,0 @@
-import os
-import textwrap
-from os.path import abspath, exists, join
-from tests.test_pip import (here, reset_env, run_pip, write_file, mkdir)
-from tests.local_repos import local_checkout
-from tests.path import Path
-
-
-def test_cleanup_after_install_from_pypi():
-    """
-    Test clean up after installing a package from PyPI.
-
-    """
-    env = reset_env()
-    run_pip('install', 'INITools==0.2', expect_error=True)
-    build = env.scratch_path/"build"
-    src = env.scratch_path/"src"
-    assert not exists(build), "build/ dir still exists: %s" % build
-    assert not exists(src), "unexpected src/ dir exists: %s" % src
-
-
-def test_cleanup_after_install_editable_from_hg():
-    """
-    Test clean up after cloning from Mercurial.
-
-    """
-    env = reset_env()
-    run_pip('install',
-            '-e',
-            '%s#egg=django-registration' %
-            local_checkout('hg+http://bitbucket.org/ubernostrum/django-registration'),
-            expect_error=True)
-    build = env.venv_path/'build'
-    src = env.venv_path/'src'
-    assert not exists(build), "build/ dir still exists: %s" % build
-    assert exists(src), "expected src/ dir doesn't exist: %s" % src
-
-
-def test_cleanup_after_install_from_local_directory():
-    """
-    Test clean up after installing from a local directory.
-
-    """
-    env = reset_env()
-    to_install = abspath(join(here, 'packages', 'FSPkg'))
-    run_pip('install', to_install, expect_error=False)
-    build = env.venv_path/'build'
-    src = env.venv_path/'src'
-    assert not exists(build), "unexpected build/ dir exists: %s" % build
-    assert not exists(src), "unexpected src/ dir exist: %s" % src
-
-
-def test_cleanup_after_create_bundle():
-    """
-    Test clean up after making a bundle. Make sure (build|src)-bundle/ dirs are removed but not src/.
-
-    """
-    env = reset_env()
-    # Install an editable to create a src/ dir.
-    args = ['install']
-    args.extend(['-e',
-                 '%s#egg=pip-test-package' %
-                    local_checkout('git+http://github.com/pypa/pip-test-package.git')])
-    run_pip(*args)
-    build = env.venv_path/"build"
-    src = env.venv_path/"src"
-    assert not exists(build), "build/ dir still exists: %s" % build
-    assert exists(src), "expected src/ dir doesn't exist: %s" % src
-
-    # Make the bundle.
-    fspkg = 'file://%s/FSPkg' %join(here, 'packages')
-    pkg_lines = textwrap.dedent('''\
-            -e %s
-            -e %s#egg=initools-dev
-            pip''' % (fspkg, local_checkout('svn+http://svn.colorstudy.com/INITools/trunk')))
-    write_file('bundle-req.txt', pkg_lines)
-    run_pip('bundle', '-r', 'bundle-req.txt', 'test.pybundle')
-    build_bundle = env.scratch_path/"build-bundle"
-    src_bundle = env.scratch_path/"src-bundle"
-    assert not exists(build_bundle), "build-bundle/ dir still exists: %s" % build_bundle
-    assert not exists(src_bundle), "src-bundle/ dir still exists: %s" % src_bundle
-
-    # Make sure previously created src/ from editable still exists
-    assert exists(src), "expected src dir doesn't exist: %s" % src
-
-
-def test_no_install_and_download_should_not_leave_build_dir():
-    """
-    It should remove build/ dir if it was pip that created
-    """
-    env = reset_env()
-    mkdir('downloaded_packages')
-    assert not os.path.exists(env.venv_path/'/build')
-    result = run_pip('install', '--no-install', 'INITools==0.2', '-d', 'downloaded_packages')
-    assert Path('scratch')/'downloaded_packages/build' not in result.files_created, 'pip should not leave build/ dir'
-    assert not os.path.exists(env.venv_path/'/build'), "build/ dir should be deleted"
-
-
-def test_download_should_not_delete_existing_build_dir():
-    """
-    It should not delete build/ if existing before run the command
-    """
-    env = reset_env()
-    mkdir(env.venv_path/'build')
-    f = open(env.venv_path/'build'/'somefile.txt', 'w')
-    f.write('I am not empty!')
-    f.close()
-    run_pip('install', '--no-install', 'INITools==0.2', '-d', '.')
-    f = open(env.venv_path/'build'/'somefile.txt')
-    content = f.read()
-    f.close()
-    assert os.path.exists(env.venv_path/'build'), "build/ should be left if it exists before pip run"
-    assert content == 'I am not empty!', "it should not affect build/ and its content"
-    assert ['somefile.txt'] == os.listdir(env.venv_path/'build')
diff --git a/vendor/pip-1.2.1/tests/test_compat.py b/vendor/pip-1.2.1/tests/test_compat.py
deleted file mode 100644
index 611d3f96..00000000
--- a/vendor/pip-1.2.1/tests/test_compat.py
+++ /dev/null
@@ -1,56 +0,0 @@
-"""
-Tests for compatibility workarounds.
-
-"""
-import os
-from tests.test_pip import (here, reset_env, run_pip, pyversion,
-                            assert_all_changes)
-
-
-def test_debian_egg_name_workaround():
-    """
-    We can uninstall packages installed with the pyversion removed from the
-    egg-info metadata directory name.
-
-    Refs:
-    http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=618367
-    https://bugs.launchpad.net/ubuntu/+source/distribute/+bug/725178
-    https://bitbucket.org/ianb/pip/issue/104/pip-uninstall-on-ubuntu-linux
-
-    """
-    env = reset_env()
-    result = run_pip('install', 'INITools==0.2', expect_error=True)
-
-    egg_info = os.path.join(
-        env.site_packages, "INITools-0.2-py%s.egg-info" % pyversion)
-
-    # Debian only removes pyversion for global installs, not inside a venv
-    # so even if this test runs on a Debian/Ubuntu system with broken setuptools,
-    # since our test runs inside a venv we'll still have the normal .egg-info
-    assert egg_info in result.files_created, "Couldn't find %s" % egg_info
-
-    # The Debian no-pyversion version of the .egg-info
-    mangled = os.path.join(env.site_packages, "INITools-0.2.egg-info")
-    assert mangled not in result.files_created, "Found unexpected %s" % mangled
-
-    # Simulate a Debian install by copying the .egg-info to their name for it
-    full_egg_info = os.path.join(env.root_path, egg_info)
-    assert os.path.isdir(full_egg_info)
-    full_mangled = os.path.join(env.root_path, mangled)
-    os.renames(full_egg_info, full_mangled)
-    assert os.path.isdir(full_mangled)
-
-    # Try the uninstall and verify that everything is removed.
-    result2 = run_pip("uninstall", "INITools", "-y")
-    assert_all_changes(result, result2, [env.venv/'build', 'cache'])
-
-
-def test_setup_py_with_dos_line_endings():
-    """
-    It doesn't choke on a setup.py file that uses DOS line endings (\\r\\n).
-
-    Refs https://github.com/pypa/pip/issues/237
-    """
-    reset_env()
-    to_install = os.path.abspath(os.path.join(here, 'packages', 'LineEndings'))
-    run_pip('install', to_install, expect_error=False)
diff --git a/vendor/pip-1.2.1/tests/test_completion.py b/vendor/pip-1.2.1/tests/test_completion.py
deleted file mode 100644
index 9381cf11..00000000
--- a/vendor/pip-1.2.1/tests/test_completion.py
+++ /dev/null
@@ -1,95 +0,0 @@
-import os
-from tests.test_pip import reset_env, run_pip, get_env
-
-
-def test_completion_for_bash():
-    """
-    Test getting completion for bash shell
-    """
-    reset_env()
-    bash_completion = """\
-_pip_completion()
-{
-    COMPREPLY=( $( COMP_WORDS="${COMP_WORDS[*]}" \\
-                   COMP_CWORD=$COMP_CWORD \\
-                   PIP_AUTO_COMPLETE=1 $1 ) )
-}
-complete -o default -F _pip_completion pip"""
-
-    result = run_pip('completion', '--bash')
-    assert bash_completion in result.stdout, 'bash completion is wrong'
-
-
-def test_completion_for_zsh():
-    """
-    Test getting completion for zsh shell
-    """
-    reset_env()
-    zsh_completion = """\
-function _pip_completion {
-  local words cword
-  read -Ac words
-  read -cn cword
-  reply=( $( COMP_WORDS="$words[*]" \\
-             COMP_CWORD=$(( cword-1 )) \\
-             PIP_AUTO_COMPLETE=1 $words[1] ) )
-}
-compctl -K _pip_completion pip"""
-
-    result = run_pip('completion', '--zsh')
-    assert zsh_completion in result.stdout, 'zsh completion is wrong'
-
-
-def test_completion_for_unknown_shell():
-    """
-    Test getting completion for an unknown shell
-    """
-    reset_env()
-    error_msg = 'error: no such option: --myfooshell'
-    result = run_pip('completion', '--myfooshell', expect_error=True)
-    assert error_msg in result.stderr, 'tests for an unknown shell failed'
-
-
-def test_completion_alone():
-    """
-    Test getting completion for none shell, just pip completion
-    """
-    reset_env()
-    result = run_pip('completion', expect_error=True)
-    assert 'ERROR: You must pass --bash or --zsh' in result.stderr,\
-            'completion alone failed -- ' + result.stderr
-
-
-def test_completion_for_un_snippet():
-    """
-    Test getting completion for ``un`` should return
-    uninstall and unzip
-    """
-    environ = os.environ.copy()
-    reset_env(environ)
-    environ['PIP_AUTO_COMPLETE'] = '1'
-    environ['COMP_WORDS'] = 'pip un'
-    environ['COMP_CWORD'] = '1'
-    env = get_env()
-    # expect_error is True because autocomplete exists with 1 status code
-    result = env.run('python', '-c', 'import pip;pip.autocomplete()',
-            expect_error=True)
-    assert result.stdout.strip().split() == ['unzip', 'uninstall'],\
-           "autocomplete function could not complete ``un`` snippet"
-
-
-def test_completion_for_default_parameters():
-    """
-    Test getting completion for ``--`` should contain --help
-    """
-    environ = os.environ.copy()
-    reset_env(environ)
-    environ['PIP_AUTO_COMPLETE'] = '1'
-    environ['COMP_WORDS'] = 'pip --'
-    environ['COMP_CWORD'] = '1'
-    env = get_env()
-    # expect_error is True because autocomplete exists with 1 status code
-    result = env.run('python', '-c', 'import pip;pip.autocomplete()',
-            expect_error=True)
-    assert '--help' in result.stdout,\
-           "autocomplete function could not complete ``--``"
diff --git a/vendor/pip-1.2.1/tests/test_config.py b/vendor/pip-1.2.1/tests/test_config.py
deleted file mode 100644
index 477f868f..00000000
--- a/vendor/pip-1.2.1/tests/test_config.py
+++ /dev/null
@@ -1,152 +0,0 @@
-import os
-import tempfile
-import textwrap
-from tests.test_pip import reset_env, run_pip, clear_environ, write_file
-
-
-def test_options_from_env_vars():
-    """
-    Test if ConfigOptionParser reads env vars (e.g. not using PyPI here)
-
-    """
-    environ = clear_environ(os.environ.copy())
-    environ['PIP_NO_INDEX'] = '1'
-    reset_env(environ)
-    result = run_pip('install', '-vvv', 'INITools', expect_error=True)
-    assert "Ignoring indexes:" in result.stdout, str(result)
-    assert "DistributionNotFound: No distributions at all found for INITools" in result.stdout
-
-
-def test_command_line_options_override_env_vars():
-    """
-    Test that command line options override environmental variables.
-
-    """
-    environ = clear_environ(os.environ.copy())
-    environ['PIP_INDEX_URL'] = 'http://b.pypi.python.org/simple/'
-    reset_env(environ)
-    result = run_pip('install', '-vvv', 'INITools', expect_error=True)
-    assert "Getting page http://b.pypi.python.org/simple/INITools" in result.stdout
-    reset_env(environ)
-    result = run_pip('install', '-vvv', '--index-url', 'http://download.zope.org/ppix', 'INITools', expect_error=True)
-    assert "b.pypi.python.org" not in result.stdout
-    assert "Getting page http://download.zope.org/ppix" in result.stdout
-
-
-def test_env_vars_override_config_file():
-    """
-    Test that environmental variables override settings in config files.
-
-    """
-    fd, config_file = tempfile.mkstemp('-pip.cfg', 'test-')
-    try:
-        _test_env_vars_override_config_file(config_file)
-    finally:
-        # `os.close` is a workaround for a bug in subprocess
-        # http://bugs.python.org/issue3210
-        os.close(fd)
-        os.remove(config_file)
-
-
-def _test_env_vars_override_config_file(config_file):
-    environ = clear_environ(os.environ.copy())
-    environ['PIP_CONFIG_FILE'] = config_file # set this to make pip load it
-    reset_env(environ)
-    # It's important that we test this particular config value ('no-index')
-    # because their is/was a bug which only shows up in cases in which
-    # 'config-item' and 'config_item' hash to the same value modulo the size
-    # of the config dictionary.
-    write_file(config_file, textwrap.dedent("""\
-        [global]
-        no-index = 1
-        """))
-    result = run_pip('install', '-vvv', 'INITools', expect_error=True)
-    assert "DistributionNotFound: No distributions at all found for INITools" in result.stdout
-    environ['PIP_NO_INDEX'] = '0'
-    reset_env(environ)
-    result = run_pip('install', '-vvv', 'INITools', expect_error=True)
-    assert "Successfully installed INITools" in result.stdout
-
-
-def test_command_line_append_flags():
-    """
-    Test command line flags that append to defaults set by environmental variables.
-
-    """
-    environ = clear_environ(os.environ.copy())
-    environ['PIP_FIND_LINKS'] = 'http://pypi.pinaxproject.com'
-    reset_env(environ)
-    result = run_pip('install', '-vvv', 'INITools', expect_error=True)
-    assert "Analyzing links from page http://pypi.pinaxproject.com" in result.stdout
-    reset_env(environ)
-    result = run_pip('install', '-vvv', '--find-links', 'http://example.com', 'INITools', expect_error=True)
-    assert "Analyzing links from page http://pypi.pinaxproject.com" in result.stdout
-    assert "Analyzing links from page http://example.com" in result.stdout
-
-
-def test_command_line_appends_correctly():
-    """
-    Test multiple appending options set by environmental variables.
-
-    """
-    environ = clear_environ(os.environ.copy())
-    environ['PIP_FIND_LINKS'] = 'http://pypi.pinaxproject.com http://example.com'
-    reset_env(environ)
-    result = run_pip('install', '-vvv', 'INITools', expect_error=True)
-
-    assert "Analyzing links from page http://pypi.pinaxproject.com" in result.stdout, result.stdout
-    assert "Analyzing links from page http://example.com" in result.stdout, result.stdout
-
-
-def test_config_file_override_stack():
-    """
-    Test config files (global, overriding a global config with a
-    local, overriding all with a command line flag).
-
-    """
-    fd, config_file = tempfile.mkstemp('-pip.cfg', 'test-')
-    try:
-        _test_config_file_override_stack(config_file)
-    finally:
-        # `os.close` is a workaround for a bug in subprocess
-        # http://bugs.python.org/issue3210
-        os.close(fd)
-        os.remove(config_file)
-
-
-def _test_config_file_override_stack(config_file):
-    environ = clear_environ(os.environ.copy())
-    environ['PIP_CONFIG_FILE'] = config_file # set this to make pip load it
-    reset_env(environ)
-    write_file(config_file, textwrap.dedent("""\
-        [global]
-        index-url = http://download.zope.org/ppix
-        """))
-    result = run_pip('install', '-vvv', 'INITools', expect_error=True)
-    assert "Getting page http://download.zope.org/ppix/INITools" in result.stdout
-    reset_env(environ)
-    write_file(config_file, textwrap.dedent("""\
-        [global]
-        index-url = http://download.zope.org/ppix
-        [install]
-        index-url = http://pypi.appspot.com/
-        """))
-    result = run_pip('install', '-vvv', 'INITools', expect_error=True)
-    assert "Getting page http://pypi.appspot.com/INITools" in result.stdout
-    result = run_pip('install', '-vvv', '--index-url', 'http://pypi.python.org/simple', 'INITools', expect_error=True)
-    assert "Getting page http://download.zope.org/ppix/INITools" not in result.stdout
-    assert "Getting page http://pypi.appspot.com/INITools" not in result.stdout
-    assert "Getting page http://pypi.python.org/simple/INITools" in result.stdout
-
-
-def test_log_file_no_directory():
-    """
-    Test opening a log file with no directory name.
-
-    """
-    from pip.basecommand import open_logfile
-    fp = open_logfile('testpip.log')
-    fp.write('can write')
-    fp.close()
-    assert os.path.exists(fp.name)
-    os.remove(fp.name)
diff --git a/vendor/pip-1.2.1/tests/test_download.py b/vendor/pip-1.2.1/tests/test_download.py
deleted file mode 100644
index 5d4923cc..00000000
--- a/vendor/pip-1.2.1/tests/test_download.py
+++ /dev/null
@@ -1,43 +0,0 @@
-from pip.backwardcompat import any
-
-import textwrap
-from tests.test_pip import reset_env, run_pip, write_file
-from tests.path import Path
-
-
-def test_download_if_requested():
-    """
-    It should download (in the scratch path) and not install if requested.
-    """
-
-    env = reset_env()
-    result = run_pip('install', 'INITools==0.1', '-d', '.', expect_error=True)
-    assert Path('scratch')/ 'INITools-0.1.tar.gz' in result.files_created
-    assert env.site_packages/ 'initools' not in result.files_created
-
-
-def test_single_download_from_requirements_file():
-    """
-    It should support download (in the scratch path) from PyPi from a requirements file
-    """
-
-    env = reset_env()
-    write_file('test-req.txt', textwrap.dedent("""
-        INITools==0.1
-        """))
-    result = run_pip('install', '-r', env.scratch_path/ 'test-req.txt', '-d', '.', expect_error=True)
-    assert Path('scratch')/ 'INITools-0.1.tar.gz' in result.files_created
-    assert env.site_packages/ 'initools' not in result.files_created
-
-
-def test_download_should_download_dependencies():
-    """
-    It should download dependencies (in the scratch path)
-    """
-
-    env = reset_env()
-    result = run_pip('install', 'Paste[openid]==1.7.5.1', '-d', '.', expect_error=True)
-    assert Path('scratch')/ 'Paste-1.7.5.1.tar.gz' in result.files_created
-    openid_tarball_prefix = str(Path('scratch')/ 'python-openid-')
-    assert any(path.startswith(openid_tarball_prefix) for path in result.files_created)
-    assert env.site_packages/ 'openid' not in result.files_created
diff --git a/vendor/pip-1.2.1/tests/test_extras.py b/vendor/pip-1.2.1/tests/test_extras.py
deleted file mode 100644
index 163893e8..00000000
--- a/vendor/pip-1.2.1/tests/test_extras.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from os.path import join
-
-from tests.test_pip import reset_env, run_pip
-
-
-def test_simple_extras_install_from_pypi():
-    """
-    Test installing a package from PyPI using extras dependency Paste[openid].
-    """
-    e = reset_env()
-    result = run_pip('install', 'Paste[openid]==1.7.5.1', expect_stderr=True)
-    initools_folder = e.site_packages / 'openid'
-    assert initools_folder in result.files_created, result.files_created
-
-
-def test_no_extras_uninstall():
-    """
-    No extras dependency gets uninstalled when the root package is uninstalled
-    """
-    env = reset_env()
-    result = run_pip('install', 'Paste[openid]==1.7.5.1', expect_stderr=True)
-    assert join(env.site_packages, 'paste') in result.files_created, sorted(result.files_created.keys())
-    assert join(env.site_packages, 'openid') in result.files_created, sorted(result.files_created.keys())
-    result2 = run_pip('uninstall', 'Paste', '-y')
-    # openid should not be uninstalled
-    initools_folder = env.site_packages / 'openid'
-    assert not initools_folder in result2.files_deleted, result.files_deleted
diff --git a/vendor/pip-1.2.1/tests/test_file_scheme_index.py b/vendor/pip-1.2.1/tests/test_file_scheme_index.py
deleted file mode 100644
index 38f6654b..00000000
--- a/vendor/pip-1.2.1/tests/test_file_scheme_index.py
+++ /dev/null
@@ -1,16 +0,0 @@
-from pip.backwardcompat import urllib
-from tests.test_pip import here, reset_env, run_pip, pyversion
-from tests.path import Path
-
-index_url = 'file://' + urllib.quote(str(Path(here).abspath/'in dex').replace('\\', '/'))
-
-
-def test_install():
-    """
-    Test installing from a local index.
-
-    """
-    env = reset_env()
-    result = run_pip('install', '-vvv', '--index-url', index_url, 'FSPkg', expect_error=False)
-    assert (env.site_packages/'fspkg') in result.files_created, str(result.stdout)
-    assert (env.site_packages/'FSPkg-0.1dev-py%s.egg-info' % pyversion) in result.files_created, str(result)
diff --git a/vendor/pip-1.2.1/tests/test_finder.py b/vendor/pip-1.2.1/tests/test_finder.py
deleted file mode 100644
index 4c930ed8..00000000
--- a/vendor/pip-1.2.1/tests/test_finder.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from pip.backwardcompat import urllib
-
-from pip.req import InstallRequirement
-from pip.index import PackageFinder
-
-from tests.path import Path
-from tests.test_pip import here
-
-find_links = 'file://' + urllib.quote(str(Path(here).abspath/'packages').replace('\\', '/'))
-
-
-def test_no_mpkg():
-    """Finder skips zipfiles with "macosx10" in the name."""
-    finder = PackageFinder([find_links], [])
-    req = InstallRequirement.from_line("pkgwithmpkg")
-    found = finder.find_requirement(req, False)
-
-    assert found.url.endswith("pkgwithmpkg-1.0.tar.gz"), found
diff --git a/vendor/pip-1.2.1/tests/test_freeze.py b/vendor/pip-1.2.1/tests/test_freeze.py
deleted file mode 100644
index 4412c143..00000000
--- a/vendor/pip-1.2.1/tests/test_freeze.py
+++ /dev/null
@@ -1,241 +0,0 @@
-import sys
-import re
-import textwrap
-from doctest import OutputChecker, ELLIPSIS
-from tests.test_pip import reset_env, run_pip, write_file, get_env, pyversion
-from tests.local_repos import local_checkout, local_repo
-
-
-distribute_re = re.compile('^distribute==[0-9.]+\n', re.MULTILINE)
-
-
-def _check_output(result, expected):
-    checker = OutputChecker()
-    actual = str(result)
-
-    ## FIXME!  The following is a TOTAL hack.  For some reason the
-    ## __str__ result for pkg_resources.Requirement gets downcased on
-    ## Windows.  Since INITools is the only package we're installing
-    ## in this file with funky case requirements, I'm forcibly
-    ## upcasing it.  You can also normalize everything to lowercase,
-    ## but then you have to remember to upcase <BLANKLINE>.  The right
-    ## thing to do in the end is probably to find out how to report
-    ## the proper fully-cased package name in our error message.
-    if sys.platform == 'win32':
-        actual = actual.replace('initools', 'INITools')
-
-    # This allows our existing tests to work when run in a context
-    # with distribute installed.
-    actual = distribute_re.sub('', actual)
-
-    def banner(msg):
-        return '\n========== %s ==========\n' % msg
-    assert checker.check_output(expected, actual, ELLIPSIS), banner('EXPECTED')+expected+banner('ACTUAL')+actual+banner(6*'=')
-
-
-def test_freeze_basic():
-    """
-    Some tests of freeze, first we have to install some stuff.  Note that
-    the test is a little crude at the end because Python 2.5+ adds egg
-    info to the standard library, so stuff like wsgiref will show up in
-    the freezing.  (Probably that should be accounted for in pip, but
-    currently it is not).
-
-    """
-    env = reset_env()
-    write_file('initools-req.txt', textwrap.dedent("""\
-        INITools==0.2
-        # and something else to test out:
-        MarkupSafe<=0.12
-        """))
-    result = run_pip('install', '-r', env.scratch_path/'initools-req.txt')
-    result = run_pip('freeze', expect_stderr=True)
-    expected = textwrap.dedent("""\
-        Script result: pip freeze
-        -- stdout: --------------------
-        INITools==0.2
-        MarkupSafe==0.12...
-        <BLANKLINE>""")
-    _check_output(result, expected)
-
-
-def test_freeze_svn():
-    """Now lets try it with an svn checkout"""
-    env = reset_env()
-    result = env.run('svn', 'co', '-r10',
-                     local_repo('svn+http://svn.colorstudy.com/INITools/trunk'),
-                     'initools-trunk')
-    result = env.run('python', 'setup.py', 'develop',
-            cwd=env.scratch_path/ 'initools-trunk', expect_stderr=True)
-    result = run_pip('freeze', expect_stderr=True)
-    expected = textwrap.dedent("""\
-        Script result: ...pip freeze
-        -- stdout: --------------------
-        -e %s@10#egg=INITools-0.3.1dev...-dev_r10
-        ...""" % local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'))
-    _check_output(result, expected)
-
-
-def test_freeze_git_clone():
-    """
-    Test freezing a Git clone.
-
-    """
-    env = reset_env()
-    result = env.run('git', 'clone', local_repo('git+http://github.com/pypa/pip-test-package.git'), 'pip-test-package')
-    result = env.run('git', 'checkout', '7d654e66c8fa7149c165ddeffa5b56bc06619458',
-            cwd=env.scratch_path / 'pip-test-package', expect_stderr=True)
-    result = env.run('python', 'setup.py', 'develop',
-            cwd=env.scratch_path / 'pip-test-package')
-    result = run_pip('freeze', expect_stderr=True)
-    expected = textwrap.dedent("""\
-        Script result: ...pip freeze
-        -- stdout: --------------------
-        -e %s@...#egg=pip_test_package-...
-        ...""" % local_checkout('git+http://github.com/pypa/pip-test-package.git'))
-    _check_output(result, expected)
-
-    result = run_pip('freeze', '-f',
-                     '%s#egg=pip_test_package' % local_checkout('git+http://github.com/pypa/pip-test-package.git'),
-                     expect_stderr=True)
-    expected = textwrap.dedent("""\
-        Script result: pip freeze -f %(repo)s#egg=pip_test_package
-        -- stdout: --------------------
-        -f %(repo)s#egg=pip_test_package
-        -e %(repo)s@...#egg=pip_test_package-dev
-        ...""" % {'repo': local_checkout('git+http://github.com/pypa/pip-test-package.git')})
-    _check_output(result, expected)
-
-
-def test_freeze_mercurial_clone():
-    """
-    Test freezing a Mercurial clone.
-
-    """
-    reset_env()
-    env = get_env()
-    result = env.run('hg', 'clone',
-                     '-r', '7bc186caa7dc',
-                     local_repo('hg+http://bitbucket.org/jezdez/django-authority'),
-                     'django-authority')
-    result = env.run('python', 'setup.py', 'develop',
-            cwd=env.scratch_path/'django-authority', expect_stderr=True)
-    result = run_pip('freeze', expect_stderr=True)
-    expected = textwrap.dedent("""\
-        Script result: ...pip freeze
-        -- stdout: --------------------
-        -e %s@...#egg=django_authority-...
-        ...""" % local_checkout('hg+http://bitbucket.org/jezdez/django-authority'))
-    _check_output(result, expected)
-
-    result = run_pip('freeze', '-f',
-                     '%s#egg=django_authority' % local_checkout('hg+http://bitbucket.org/jezdez/django-authority'),
-                     expect_stderr=True)
-    expected = textwrap.dedent("""\
-        Script result: ...pip freeze -f %(repo)s#egg=django_authority
-        -- stdout: --------------------
-        -f %(repo)s#egg=django_authority
-        -e %(repo)s@...#egg=django_authority-dev
-        ...""" % {'repo': local_checkout('hg+http://bitbucket.org/jezdez/django-authority')})
-    _check_output(result, expected)
-
-
-def test_freeze_bazaar_clone():
-    """
-    Test freezing a Bazaar clone.
-
-    """
-    reset_env()
-    env = get_env()
-    result = env.run('bzr', 'checkout', '-r', '174',
-                     local_repo('bzr+http://bazaar.launchpad.net/%7Edjango-wikiapp/django-wikiapp/release-0.1'),
-                     'django-wikiapp')
-    result = env.run('python', 'setup.py', 'develop',
-            cwd=env.scratch_path/'django-wikiapp')
-    result = run_pip('freeze', expect_stderr=True)
-    expected = textwrap.dedent("""\
-        Script result: ...pip freeze
-        -- stdout: --------------------
-        -e %s@...#egg=django_wikiapp-...
-        ...""" % local_checkout('bzr+http://bazaar.launchpad.net/%7Edjango-wikiapp/django-wikiapp/release-0.1'))
-    _check_output(result, expected)
-
-    result = run_pip('freeze', '-f',
-                     '%s/#egg=django-wikiapp' %
-                     local_checkout('bzr+http://bazaar.launchpad.net/%7Edjango-wikiapp/django-wikiapp/release-0.1'),
-                     expect_stderr=True)
-    expected = textwrap.dedent("""\
-        Script result: ...pip freeze -f %(repo)s/#egg=django-wikiapp
-        -- stdout: --------------------
-        -f %(repo)s/#egg=django-wikiapp
-        -e %(repo)s@...#egg=django_wikiapp-...
-        ...""" % {'repo':
-                  local_checkout('bzr+http://bazaar.launchpad.net/%7Edjango-wikiapp/django-wikiapp/release-0.1')})
-    _check_output(result, expected)
-
-
-def test_freeze_with_local_option():
-    """
-    Test that wsgiref (from global site-packages) is reported normally, but not with --local.
-
-    """
-    reset_env()
-    result = run_pip('install', 'initools==0.2')
-    result = run_pip('freeze', expect_stderr=True)
-    expected = textwrap.dedent("""\
-        Script result: ...pip freeze
-        -- stdout: --------------------
-        INITools==0.2
-        wsgiref==...
-        <BLANKLINE>""")
-
-    # The following check is broken (see
-    # http://bitbucket.org/ianb/pip/issue/110).  For now we are simply
-    # neutering this test, but if we can't find a way to fix it,
-    # this whole function should be removed.
-
-    # _check_output(result, expected)
-
-    result = run_pip('freeze', '--local', expect_stderr=True)
-    expected = textwrap.dedent("""\
-        Script result: ...pip freeze --local
-        -- stdout: --------------------
-        INITools==0.2
-        <BLANKLINE>""")
-    _check_output(result, expected)
-
-
-def test_freeze_with_requirement_option():
-    """
-    Test that new requirements are created correctly with --requirement hints
-
-    """
-    reset_env()
-    ignores = textwrap.dedent("""\
-        # Unchanged requirements below this line
-        -r ignore.txt
-        --requirement ignore.txt
-        -Z ignore
-        --always-unzip ignore
-        -f http://ignore
-        -i http://ignore
-        --extra-index-url http://ignore
-        --find-links http://ignore
-        --index-url http://ignore
-        """)
-    write_file('hint.txt', textwrap.dedent("""\
-        INITools==0.1
-        NoExist==4.2
-        """) + ignores)
-    result = run_pip('install', 'initools==0.2')
-    result = run_pip('install', 'MarkupSafe')
-    result = run_pip('freeze', '--requirement', 'hint.txt', expect_stderr=True)
-    expected = textwrap.dedent("""\
-        Script result: pip freeze --requirement hint.txt
-        -- stderr: --------------------
-        Requirement file contains NoExist==4.2, but that package is not installed
-
-        -- stdout: --------------------
-        INITools==0.2
-        """) + ignores + "## The following requirements were added by pip --freeze:..."
-    _check_output(result, expected)
diff --git a/vendor/pip-1.2.1/tests/test_help.py b/vendor/pip-1.2.1/tests/test_help.py
deleted file mode 100644
index e638963e..00000000
--- a/vendor/pip-1.2.1/tests/test_help.py
+++ /dev/null
@@ -1,66 +0,0 @@
-from pip.exceptions import CommandError
-from pip.commands.help import (HelpCommand,
-                               SUCCESS,
-                               ERROR,)
-from mock import Mock
-from nose.tools import assert_raises
-from tests.test_pip import run_pip, reset_env
-
-
-def test_run_method_should_return_sucess_when_finds_command_name():
-    """
-    Test HelpCommand.run for existing command
-    """
-    options_mock = Mock()
-    args = ('freeze',)
-    help_cmd = HelpCommand()
-    status = help_cmd.run(options_mock, args)
-    assert status == SUCCESS
-
-
-def test_run_method_should_return_sucess_when_command_name_not_specified():
-    """
-    Test HelpCommand.run when there are no args
-    """
-    options_mock = Mock()
-    args = ()
-    help_cmd = HelpCommand()
-    status = help_cmd.run(options_mock, args)
-    assert status == SUCCESS
-
-
-def test_run_method_should_raise_command_error_when_command_does_not_exist():
-    """
-    Test HelpCommand.run for non-existing command
-    """
-    options_mock = Mock()
-    args = ('mycommand',)
-    help_cmd = HelpCommand()
-    assert_raises(CommandError, help_cmd.run, options_mock, args)
-
-
-def test_help_command_should_exit_status_ok_when_command_exists():
-    """
-    Test `help` command for existing command
-    """
-    reset_env()
-    result = run_pip('help', 'freeze')
-    assert result.returncode == SUCCESS
-
-
-def test_help_command_should_exit_status_ok_when_no_command_is_specified():
-    """
-    Test `help` command for no command
-    """
-    reset_env()
-    result = run_pip('help')
-    assert result.returncode == SUCCESS
-
-
-def test_help_command_should_exit_status_error_when_command_does_not_exist():
-    """
-    Test `help` command for non-existing command
-    """
-    reset_env()
-    result = run_pip('help', 'mycommand', expect_error=True)
-    assert result.returncode == ERROR
diff --git a/vendor/pip-1.2.1/tests/test_index.py b/vendor/pip-1.2.1/tests/test_index.py
deleted file mode 100644
index 6f9d216d..00000000
--- a/vendor/pip-1.2.1/tests/test_index.py
+++ /dev/null
@@ -1,28 +0,0 @@
-from pip.index import package_to_requirement, HTMLPage
-
-
-def test_package_name_should_be_converted_to_requirement():
-    """
-    Test that it translates a name like Foo-1.2 to Foo==1.3
-    """
-    assert package_to_requirement('Foo-1.2') == 'Foo==1.2'
-    assert package_to_requirement('Foo-dev') == 'Foo==dev'
-    assert package_to_requirement('Foo') == 'Foo'
-
-
-def test_html_page_should_be_able_to_scrap_rel_links():
-    """
-    Test scraping page looking for url in href
-    """
-    page = HTMLPage("""
-        <!-- The <th> elements below are a terrible terrible hack for setuptools -->
-        <li>
-        <strong>Home Page:</strong>
-        <!-- <th>Home Page -->
-        <a href="http://supervisord.org/">http://supervisord.org/</a>
-        </li>""", "supervisor")
-
-    links = list(page.scraped_rel_links())
-    assert len(links) == 1
-    assert links[0].url == 'http://supervisord.org/'
-
diff --git a/vendor/pip-1.2.1/tests/test_pip.py b/vendor/pip-1.2.1/tests/test_pip.py
deleted file mode 100644
index 17e8f661..00000000
--- a/vendor/pip-1.2.1/tests/test_pip.py
+++ /dev/null
@@ -1,618 +0,0 @@
-#!/usr/bin/env python
-import os
-import sys
-import tempfile
-import shutil
-import glob
-import atexit
-import textwrap
-import site
-
-from scripttest import TestFileEnvironment, FoundDir
-from tests.path import Path, curdir, u
-from pip.util import rmtree
-
-pyversion = sys.version[:3]
-
-# the directory containing all the tests
-here = Path(__file__).abspath.folder
-
-# the root of this pip source distribution
-src_folder = here.folder
-download_cache = tempfile.mkdtemp(prefix='pip-test-cache')
-site_packages_suffix = site.USER_SITE[len(site.USER_BASE) + 1:]
-
-
-def path_to_url(path):
-    """
-    Convert a path to URI. The path will be made absolute and
-    will not have quoted path parts.
-    (adapted from pip.util)
-    """
-    path = os.path.normpath(os.path.abspath(path))
-    drive, path = os.path.splitdrive(path)
-    filepath = path.split(os.path.sep)
-    url = '/'.join(filepath)
-    if drive:
-        return 'file:///' + drive + url
-    return 'file://' +url
-
-
-def demand_dirs(path):
-    if not os.path.exists(path):
-        os.makedirs(path)
-
-
-# Tweak the path so we can find up-to-date pip sources
-# (http://bitbucket.org/ianb/pip/issue/98)
-sys.path = [src_folder] + sys.path
-
-
-def create_virtualenv(where, distribute=False):
-    import virtualenv
-    if sys.version_info[0] > 2:
-        distribute = True
-    virtualenv.create_environment(
-        where, use_distribute=distribute, unzip_setuptools=True)
-
-    return virtualenv.path_locations(where)
-
-
-def relpath(root, other):
-    """a poor man's os.path.relpath, since we may not have Python 2.6"""
-    prefix = root+Path.sep
-    assert other.startswith(prefix)
-    return Path(other[len(prefix):])
-
-if 'PYTHONPATH' in os.environ:
-    del os.environ['PYTHONPATH']
-
-
-try:
-    any
-except NameError:
-
-    def any(seq):
-        for item in seq:
-            if item:
-                return True
-        return False
-
-
-def clear_environ(environ):
-    return dict(((k, v) for k, v in environ.items()
-                if not k.lower().startswith('pip_')))
-
-
-def install_setuptools(env):
-    easy_install = os.path.join(env.bin_path, 'easy_install')
-    version = 'setuptools==0.6c11'
-    if sys.platform != 'win32':
-        return env.run(easy_install, version)
-
-    tempdir = tempfile.mkdtemp()
-    try:
-        for f in glob.glob(easy_install+'*'):
-            shutil.copy2(f, tempdir)
-        return env.run(os.path.join(tempdir, 'easy_install'), version)
-    finally:
-        rmtree(tempdir)
-
-
-env = None
-
-
-def reset_env(environ=None, use_distribute=None):
-    global env
-    # FastTestPipEnv reuses env, not safe if use_distribute specified
-    if use_distribute is None:
-        env = FastTestPipEnvironment(environ)
-    else:
-        env = TestPipEnvironment(environ, use_distribute=use_distribute)
-    return env
-
-
-class TestFailure(AssertionError):
-    """
-
-    An "assertion" failed during testing.
-
-    """
-    pass
-
-
-#
-# This cleanup routine prevents the __del__ method that cleans up the tree of
-# the last TestPipEnvironment from firing after shutil has already been
-# unloaded.  It also ensures that FastTestPipEnvironment doesn't leave an
-# environment hanging around that might confuse the next test run.
-#
-def _cleanup():
-    global env
-    del env
-    rmtree(download_cache, ignore_errors=True)
-    rmtree(fast_test_env_root, ignore_errors=True)
-    rmtree(fast_test_env_backup, ignore_errors=True)
-
-atexit.register(_cleanup)
-
-
-class TestPipResult(object):
-
-    def __init__(self, impl, verbose=False):
-        self._impl = impl
-
-        if verbose:
-            print(self.stdout)
-            if self.stderr:
-                print('======= stderr ========')
-                print(self.stderr)
-                print('=======================')
-
-    def __getattr__(self, attr):
-        return getattr(self._impl, attr)
-
-    if sys.platform == 'win32':
-
-        @property
-        def stdout(self):
-            return self._impl.stdout.replace('\r\n', '\n')
-
-        @property
-        def stderr(self):
-            return self._impl.stderr.replace('\r\n', '\n')
-
-        def __str__(self):
-            return str(self._impl).replace('\r\n', '\n')
-    else:
-        # Python doesn't automatically forward __str__ through __getattr__
-
-        def __str__(self):
-            return str(self._impl)
-
-    def assert_installed(self, pkg_name, with_files=[], without_files=[], without_egg_link=False, use_user_site=False):
-        e = self.test_env
-
-        pkg_dir = e.venv/ 'src'/ pkg_name.lower()
-
-        if use_user_site:
-            egg_link_path = e.user_site / pkg_name + '.egg-link'
-        else:
-            egg_link_path = e.site_packages / pkg_name + '.egg-link'
-        if without_egg_link:
-            if egg_link_path in self.files_created:
-                raise TestFailure('unexpected egg link file created: '\
-                                  '%r\n%s' % (egg_link_path, self))
-        else:
-            if not egg_link_path in self.files_created:
-                raise TestFailure('expected egg link file missing: '\
-                                  '%r\n%s' % (egg_link_path, self))
-
-            egg_link_file = self.files_created[egg_link_path]
-
-            if not (# FIXME: I don't understand why there's a trailing . here
-                    egg_link_file.bytes.endswith('.')
-                and egg_link_file.bytes[:-1].strip().endswith(pkg_dir)):
-                raise TestFailure(textwrap.dedent(u('''\
-                Incorrect egg_link file %r
-                Expected ending: %r
-                ------- Actual contents -------
-                %s
-                -------------------------------''' % (
-                        egg_link_file,
-                        pkg_dir + u('\n.'),
-                        egg_link_file.bytes))))
-
-        if use_user_site:
-            pth_file = Path.string(e.user_site / 'easy-install.pth')
-        else:
-            pth_file = Path.string(e.site_packages / 'easy-install.pth')
-
-        if (pth_file in self.files_updated) == without_egg_link:
-            raise TestFailure('%r unexpectedly %supdated by install' % (
-                pth_file, (not without_egg_link and 'not ' or '')))
-
-        if (pkg_dir in self.files_created) == (curdir in without_files):
-            raise TestFailure(textwrap.dedent('''\
-            expected package directory %r %sto be created
-            actually created:
-            %s
-            ''') % (
-                Path.string(pkg_dir),
-                (curdir in without_files and 'not ' or ''),
-                sorted(self.files_created.keys())))
-
-        for f in with_files:
-            if not (pkg_dir/f).normpath in self.files_created:
-                raise TestFailure('Package directory %r missing '\
-                                  'expected content %f' % (pkg_dir, f))
-
-        for f in without_files:
-            if (pkg_dir/f).normpath in self.files_created:
-                raise TestFailure('Package directory %r has '\
-                                  'unexpected content %f' % (pkg_dir, f))
-
-
-class TestPipEnvironment(TestFileEnvironment):
-    """A specialized TestFileEnvironment for testing pip"""
-
-    #
-    # Attribute naming convention
-    # ---------------------------
-    #
-    # Instances of this class have many attributes representing paths
-    # in the filesystem.  To keep things straight, absolute paths have
-    # a name of the form xxxx_path and relative paths have a name that
-    # does not end in '_path'.
-
-    # The following paths are relative to the root_path, and should be
-    # treated by clients as instance attributes.  The fact that they
-    # are defined in the class is an implementation detail
-
-    # where we'll create the virtual Python installation for testing
-    #
-    # Named with a leading dot to reduce the chance of spurious
-    # results due to being mistaken for the virtualenv package.
-    venv = Path('.virtualenv')
-
-    # The root of a directory tree to be used arbitrarily by tests
-    scratch = Path('scratch')
-
-    exe = sys.platform == 'win32' and '.exe' or ''
-
-    verbose = False
-
-    def __init__(self, environ=None, use_distribute=None):
-
-        self.root_path = Path(tempfile.mkdtemp('-piptest'))
-
-        # We will set up a virtual environment at root_path.
-        self.scratch_path = self.root_path / self.scratch
-
-        self.venv_path = self.root_path / self.venv
-
-        if not environ:
-            environ = os.environ.copy()
-            environ = clear_environ(environ)
-            environ['PIP_DOWNLOAD_CACHE'] = str(download_cache)
-
-        environ['PIP_NO_INPUT'] = '1'
-        environ['PIP_LOG_FILE'] = str(self.root_path/'pip-log.txt')
-
-        super(TestPipEnvironment, self).__init__(
-            self.root_path, ignore_hidden=False,
-            environ=environ, split_cmd=False, start_clear=False,
-            cwd=self.scratch_path, capture_temp=True, assert_no_temp=True)
-
-        demand_dirs(self.venv_path)
-        demand_dirs(self.scratch_path)
-
-        if use_distribute is None:
-            use_distribute = os.environ.get('PIP_TEST_USE_DISTRIBUTE', False)
-        self.use_distribute = use_distribute
-
-        # Create a virtualenv and remember where it's putting things.
-        virtualenv_paths = create_virtualenv(self.venv_path, distribute=self.use_distribute)
-
-        assert self.venv_path == virtualenv_paths[0] # sanity check
-
-        for id, path in zip(('venv', 'lib', 'include', 'bin'), virtualenv_paths):
-            setattr(self, id+'_path', Path(path))
-            setattr(self, id, relpath(self.root_path, path))
-
-        assert self.venv == TestPipEnvironment.venv # sanity check
-
-        self.site_packages = self.lib/'site-packages'
-        self.user_base_path = self.venv_path/'user'
-        self.user_site_path = self.venv_path/'user'/site_packages_suffix
-
-        self.user_site = relpath(self.root_path, self.user_site_path)
-        demand_dirs(self.user_site_path)
-        self.environ["PYTHONUSERBASE"] = self.user_base_path
-
-        # create easy-install.pth in user_site, so we always have it updated instead of created
-        open(self.user_site_path/'easy-install.pth', 'w').close()
-
-        # put the test-scratch virtualenv's bin dir first on the PATH
-        self.environ['PATH'] = Path.pathsep.join((self.bin_path, self.environ['PATH']))
-
-        # test that test-scratch virtualenv creation produced sensible venv python
-        result = self.run('python', '-c', 'import sys; print(sys.executable)')
-        pythonbin = result.stdout.strip()
-
-        if Path(pythonbin).noext != self.bin_path/'python':
-            raise RuntimeError(
-                "Oops! 'python' in our test environment runs %r"
-                " rather than expected %r" % (pythonbin, self.bin_path/'python'))
-
-        # make sure we have current setuptools to avoid svn incompatibilities
-        if not self.use_distribute:
-            install_setuptools(self)
-
-        # Uninstall whatever version of pip came with the virtualenv.
-        # Earlier versions of pip were incapable of
-        # self-uninstallation on Windows, so we use the one we're testing.
-        self.run('python', '-c',
-                 '"import sys; sys.path.insert(0, %r); import pip; sys.exit(pip.main());"' % os.path.dirname(here),
-                 'uninstall', '-vvv', '-y', 'pip')
-
-        # Install this version instead
-        self.run('python', 'setup.py', 'install', cwd=src_folder, expect_stderr=True)
-        self._use_cached_pypi_server()
-
-    def _ignore_file(self, fn):
-        if fn.endswith('__pycache__') or fn.endswith(".pyc"):
-            result = True
-        else:
-            result = super(TestPipEnvironment, self)._ignore_file(fn)
-        return result
-
-    def run(self, *args, **kw):
-        if self.verbose:
-            print('>> running %s %s' % (args, kw))
-        cwd = kw.pop('cwd', None)
-        run_from = kw.pop('run_from', None)
-        assert not cwd or not run_from, "Don't use run_from; it's going away"
-        cwd = Path.string(cwd or run_from or self.cwd)
-        assert not isinstance(cwd, Path)
-        return TestPipResult(super(TestPipEnvironment, self).run(cwd=cwd, *args, **kw), verbose=self.verbose)
-
-    def __del__(self):
-        rmtree(str(self.root_path), ignore_errors=True)
-
-    def _use_cached_pypi_server(self):
-        site_packages = self.root_path / self.site_packages
-        pth = open(os.path.join(site_packages, 'pypi_intercept.pth'), 'w')
-        pth.write('import sys; ')
-        pth.write('sys.path.insert(0, %r); ' % str(here))
-        pth.write('import pypi_server; pypi_server.PyPIProxy.setup(); ')
-        pth.write('sys.path.remove(%r); ' % str(here))
-        pth.close()
-
-
-fast_test_env_root = here / 'tests_cache' / 'test_ws'
-fast_test_env_backup = here / 'tests_cache' / 'test_ws_backup'
-
-
-class FastTestPipEnvironment(TestPipEnvironment):
-    def __init__(self, environ=None):
-        import virtualenv
-
-        self.root_path = fast_test_env_root
-        self.backup_path = fast_test_env_backup
-
-        self.scratch_path = self.root_path / self.scratch
-
-        # We will set up a virtual environment at root_path.
-        self.venv_path = self.root_path / self.venv
-
-        if not environ:
-            environ = os.environ.copy()
-            environ = clear_environ(environ)
-            environ['PIP_DOWNLOAD_CACHE'] = str(download_cache)
-
-        environ['PIP_NO_INPUT'] = '1'
-        environ['PIP_LOG_FILE'] = str(self.root_path/'pip-log.txt')
-
-        TestFileEnvironment.__init__(self,
-            self.root_path, ignore_hidden=False,
-            environ=environ, split_cmd=False, start_clear=False,
-            cwd=self.scratch_path, capture_temp=True, assert_no_temp=True)
-
-        virtualenv_paths = virtualenv.path_locations(self.venv_path)
-
-        for id, path in zip(('venv', 'lib', 'include', 'bin'), virtualenv_paths):
-            setattr(self, id+'_path', Path(path))
-            setattr(self, id, relpath(self.root_path, path))
-
-        assert self.venv == TestPipEnvironment.venv # sanity check
-
-        self.site_packages = self.lib/'site-packages'
-        self.user_base_path = self.venv_path/'user'
-        self.user_site_path = self.venv_path/'user'/'lib'/self.lib.name/'site-packages'
-
-        self.user_site = relpath(self.root_path, self.user_site_path)
-
-        self.environ["PYTHONUSERBASE"] = self.user_base_path
-
-        # put the test-scratch virtualenv's bin dir first on the PATH
-        self.environ['PATH'] = Path.pathsep.join((self.bin_path, self.environ['PATH']))
-
-        self.use_distribute = os.environ.get('PIP_TEST_USE_DISTRIBUTE', False)
-
-        if self.root_path.exists:
-            rmtree(self.root_path)
-        if self.backup_path.exists:
-            shutil.copytree(self.backup_path, self.root_path, True)
-        else:
-            demand_dirs(self.venv_path)
-            demand_dirs(self.scratch_path)
-
-            # Create a virtualenv and remember where it's putting things.
-            create_virtualenv(self.venv_path, distribute=self.use_distribute)
-
-            demand_dirs(self.user_site_path)
-
-            # create easy-install.pth in user_site, so we always have it updated instead of created
-            open(self.user_site_path/'easy-install.pth', 'w').close()
-
-            # test that test-scratch virtualenv creation produced sensible venv python
-            result = self.run('python', '-c', 'import sys; print(sys.executable)')
-            pythonbin = result.stdout.strip()
-
-            if Path(pythonbin).noext != self.bin_path/'python':
-                raise RuntimeError(
-                    "Oops! 'python' in our test environment runs %r"
-                    " rather than expected %r" % (pythonbin, self.bin_path/'python'))
-
-            # make sure we have current setuptools to avoid svn incompatibilities
-            if not self.use_distribute:
-                install_setuptools(self)
-
-            # Uninstall whatever version of pip came with the virtualenv.
-            # Earlier versions of pip were incapable of
-            # self-uninstallation on Windows, so we use the one we're testing.
-            self.run('python', '-c',
-                     '"import sys; sys.path.insert(0, %r); import pip; sys.exit(pip.main());"' % os.path.dirname(here),
-                     'uninstall', '-vvv', '-y', 'pip')
-
-            # Install this version instead
-            self.run('python', 'setup.py', 'install', cwd=src_folder, expect_stderr=True)
-            shutil.copytree(self.root_path, self.backup_path, True)
-        self._use_cached_pypi_server()
-        assert self.root_path.exists
-
-    def __del__(self):
-        pass # shutil.rmtree(str(self.root_path), ignore_errors=True)
-
-
-def run_pip(*args, **kw):
-    result = env.run('pip', *args, **kw)
-    ignore = []
-    for path, f in result.files_before.items():
-        # ignore updated directories, often due to .pyc or __pycache__
-        if (path in result.files_updated and
-            isinstance(result.files_updated[path], FoundDir)):
-            ignore.append(path)
-    for path in ignore:
-        del result.files_updated[path]
-    return result
-
-
-def write_file(filename, text, dest=None):
-    """Write a file in the dest (default=env.scratch_path)
-
-    """
-    env = get_env()
-    if dest:
-        complete_path = dest/ filename
-    else:
-        complete_path = env.scratch_path/ filename
-    f = open(complete_path, 'w')
-    f.write(text)
-    f.close()
-
-
-def mkdir(dirname):
-    os.mkdir(os.path.join(get_env().scratch_path, dirname))
-
-
-def get_env():
-    if env is None:
-        reset_env()
-    return env
-
-
-# FIXME ScriptTest does something similar, but only within a single
-# ProcResult; this generalizes it so states can be compared across
-# multiple commands.  Maybe should be rolled into ScriptTest?
-def diff_states(start, end, ignore=None):
-    """
-    Differences two "filesystem states" as represented by dictionaries
-    of FoundFile and FoundDir objects.
-
-    Returns a dictionary with following keys:
-
-    ``deleted``
-        Dictionary of files/directories found only in the start state.
-
-    ``created``
-        Dictionary of files/directories found only in the end state.
-
-    ``updated``
-        Dictionary of files whose size has changed (FIXME not entirely
-        reliable, but comparing contents is not possible because
-        FoundFile.bytes is lazy, and comparing mtime doesn't help if
-        we want to know if a file has been returned to its earlier
-        state).
-
-    Ignores mtime and other file attributes; only presence/absence and
-    size are considered.
-
-    """
-    ignore = ignore or []
-
-    def prefix_match(path, prefix):
-        if path == prefix:
-            return True
-        prefix = prefix.rstrip(os.path.sep) + os.path.sep
-        return path.startswith(prefix)
-
-    start_keys = set([k for k in start.keys()
-                      if not any([prefix_match(k, i) for i in ignore])])
-    end_keys = set([k for k in end.keys()
-                    if not any([prefix_match(k, i) for i in ignore])])
-    deleted = dict([(k, start[k]) for k in start_keys.difference(end_keys)])
-    created = dict([(k, end[k]) for k in end_keys.difference(start_keys)])
-    updated = {}
-    for k in start_keys.intersection(end_keys):
-        if (start[k].size != end[k].size):
-            updated[k] = end[k]
-    return dict(deleted=deleted, created=created, updated=updated)
-
-
-def assert_all_changes(start_state, end_state, expected_changes):
-    """
-    Fails if anything changed that isn't listed in the
-    expected_changes.
-
-    start_state is either a dict mapping paths to
-    scripttest.[FoundFile|FoundDir] objects or a TestPipResult whose
-    files_before we'll test.  end_state is either a similar dict or a
-    TestPipResult whose files_after we'll test.
-
-    Note: listing a directory means anything below
-    that directory can be expected to have changed.
-    """
-    start_files = start_state
-    end_files = end_state
-    if isinstance(start_state, TestPipResult):
-        start_files = start_state.files_before
-    if isinstance(end_state, TestPipResult):
-        end_files = end_state.files_after
-
-    diff = diff_states(start_files, end_files, ignore=expected_changes)
-    if list(diff.values()) != [{}, {}, {}]:
-        raise TestFailure('Unexpected changes:\n' + '\n'.join(
-            [k + ': ' + ', '.join(v.keys()) for k, v in diff.items()]))
-
-    # Don't throw away this potentially useful information
-    return diff
-
-
-def _create_test_package(env):
-    mkdir('version_pkg')
-    version_pkg_path = env.scratch_path/'version_pkg'
-    write_file('version_pkg.py', textwrap.dedent('''\
-                                def main():
-                                    print('0.1')
-                                '''), version_pkg_path)
-    write_file('setup.py', textwrap.dedent('''\
-                        from setuptools import setup, find_packages
-                        setup(name='version_pkg',
-                              version='0.1',
-                              packages=find_packages(),
-                              py_modules=['version_pkg'],
-                              entry_points=dict(console_scripts=['version_pkg=version_pkg:main']))
-                        '''), version_pkg_path)
-    env.run('git', 'init', cwd=version_pkg_path)
-    env.run('git', 'add', '.', cwd=version_pkg_path)
-    env.run('git', 'commit', '-q',
-            '--author', 'Pip <python-virtualenv@googlegroups.com>',
-            '-am', 'initial version', cwd=version_pkg_path)
-    return version_pkg_path
-
-
-def _change_test_package_version(env, version_pkg_path):
-    write_file('version_pkg.py', textwrap.dedent('''\
-        def main():
-            print("some different version")'''), version_pkg_path)
-    env.run('git', 'commit', '-q',
-            '--author', 'Pip <python-virtualenv@googlegroups.com>',
-            '-am', 'messed version',
-            cwd=version_pkg_path, expect_stderr=True)
-
-
-if __name__ == '__main__':
-    sys.stderr.write("Run pip's tests using nosetests. Requires virtualenv, ScriptTest, and nose.\n")
-    sys.exit(1)
diff --git a/vendor/pip-1.2.1/tests/test_proxy.py b/vendor/pip-1.2.1/tests/test_proxy.py
deleted file mode 100644
index fe6e551b..00000000
--- a/vendor/pip-1.2.1/tests/test_proxy.py
+++ /dev/null
@@ -1,64 +0,0 @@
-"""
-Tests for the proxy support in pip.
-
-TODO shouldn't need to hack sys.path in here.
-
-"""
-
-import os
-import sys
-sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))
-
-import os
-import pip
-import getpass
-from pip.basecommand import get_proxy
-from tests.test_pip import here
-
-
-def new_getpass(prompt, answer='passwd'):
-    print('%s%s' % (prompt, answer))
-    return answer
-
-
-def test_correct_pip_version():
-    """
-    Check we are importing pip from the right place.
-
-    """
-    base = os.path.dirname(here)
-    assert pip.__file__.startswith(base), pip.__file__
-
-
-def test_remove_proxy():
-    """
-    Test removing proxy from environ.
-
-    """
-    if 'HTTP_PROXY' in os.environ:
-        del os.environ['HTTP_PROXY']
-    assert get_proxy() == None
-    os.environ['HTTP_PROXY'] = 'user:pwd@server.com:port'
-    assert get_proxy() == 'user:pwd@server.com:port'
-    del os.environ['HTTP_PROXY']
-    assert get_proxy('server.com') == 'server.com'
-    assert get_proxy('server.com:80') == 'server.com:80'
-    assert get_proxy('user:passwd@server.com:3128') == 'user:passwd@server.com:3128'
-
-
-def test_get_proxy():
-    """
-    Test get_proxy returns correct proxy info.
-
-    """
-    # monkeypatch getpass.getpass, to avoid asking for a password
-    old_getpass = getpass.getpass
-    getpass.getpass = new_getpass
-
-    # Test it:
-    assert get_proxy('user:@server.com:3128') == 'user:@server.com:3128'
-    assert get_proxy('user@server.com:3128') == 'user:passwd@server.com:3128'
-
-    # Undo monkeypatch
-    getpass.getpass = old_getpass
-
diff --git a/vendor/pip-1.2.1/tests/test_requirements.py b/vendor/pip-1.2.1/tests/test_requirements.py
deleted file mode 100644
index 59e1347c..00000000
--- a/vendor/pip-1.2.1/tests/test_requirements.py
+++ /dev/null
@@ -1,108 +0,0 @@
-import os.path
-import textwrap
-from pip.backwardcompat import urllib
-from pip.req import Requirements
-from tests.test_pip import reset_env, run_pip, write_file, pyversion, here, path_to_url
-from tests.local_repos import local_checkout
-from tests.path import Path
-
-
-def test_requirements_file():
-    """
-    Test installing from a requirements file.
-
-    """
-    other_lib_name, other_lib_version = 'anyjson', '0.3'
-    env = reset_env()
-    write_file('initools-req.txt', textwrap.dedent("""\
-        INITools==0.2
-        # and something else to test out:
-        %s<=%s
-        """ % (other_lib_name, other_lib_version)))
-    result = run_pip('install', '-r', env.scratch_path / 'initools-req.txt')
-    assert env.site_packages/'INITools-0.2-py%s.egg-info' % pyversion in result.files_created
-    assert env.site_packages/'initools' in result.files_created
-    assert result.files_created[env.site_packages/other_lib_name].dir
-    fn = '%s-%s-py%s.egg-info' % (other_lib_name, other_lib_version, pyversion)
-    assert result.files_created[env.site_packages/fn].dir
-
-
-def test_relative_requirements_file():
-    """
-    Test installing from a requirements file with a relative path with an egg= definition..
-
-    """
-    url = path_to_url(os.path.join(here, 'packages', '..', 'packages', 'FSPkg')) + '#egg=FSPkg'
-    env = reset_env()
-    write_file('file-egg-req.txt', textwrap.dedent("""\
-        %s
-        """ % url))
-    result = run_pip('install', '-vvv', '-r', env.scratch_path / 'file-egg-req.txt')
-    assert (env.site_packages/'FSPkg-0.1dev-py%s.egg-info' % pyversion) in result.files_created, str(result)
-    assert (env.site_packages/'fspkg') in result.files_created, str(result.stdout)
-
-
-def test_multiple_requirements_files():
-    """
-    Test installing from multiple nested requirements files.
-
-    """
-    other_lib_name, other_lib_version = 'anyjson', '0.3'
-    env = reset_env()
-    write_file('initools-req.txt', textwrap.dedent("""\
-        -e %s@10#egg=INITools-dev
-        -r %s-req.txt""" % (local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'),
-                            other_lib_name)))
-    write_file('%s-req.txt' % other_lib_name, textwrap.dedent("""\
-        %s<=%s
-        """ % (other_lib_name, other_lib_version)))
-    result = run_pip('install', '-r', env.scratch_path / 'initools-req.txt')
-    assert result.files_created[env.site_packages/other_lib_name].dir
-    fn = '%s-%s-py%s.egg-info' % (other_lib_name, other_lib_version, pyversion)
-    assert result.files_created[env.site_packages/fn].dir
-    assert env.venv/'src'/'initools' in result.files_created
-
-
-def test_respect_order_in_requirements_file():
-    env = reset_env()
-    write_file('frameworks-req.txt', textwrap.dedent("""\
-        bidict
-        ordereddict
-        initools
-        """))
-    result = run_pip('install', '-r', env.scratch_path / 'frameworks-req.txt')
-    downloaded = [line for line in result.stdout.split('\n')
-                  if 'Downloading/unpacking' in line]
-
-    assert 'bidict' in downloaded[0], 'First download should ' \
-            'be "bidict" but was "%s"' % downloaded[0]
-    assert 'ordereddict' in downloaded[1], 'Second download should ' \
-            'be "ordereddict" but was "%s"' % downloaded[1]
-    assert 'initools' in downloaded[2], 'Third download should ' \
-            'be "initools" but was "%s"' % downloaded[2]
-
-
-def test_requirements_data_structure_keeps_order():
-    requirements = Requirements()
-    requirements['pip'] = 'pip'
-    requirements['nose'] = 'nose'
-    requirements['coverage'] = 'coverage'
-
-    assert ['pip', 'nose', 'coverage'] == list(requirements.values())
-    assert ['pip', 'nose', 'coverage'] == list(requirements.keys())
-
-
-def test_requirements_data_structure_implements__repr__():
-    requirements = Requirements()
-    requirements['pip'] = 'pip'
-    requirements['nose'] = 'nose'
-
-    assert "Requirements({'pip': 'pip', 'nose': 'nose'})" == repr(requirements)
-
-
-def test_requirements_data_structure_implements__contains__():
-    requirements = Requirements()
-    requirements['pip'] = 'pip'
-
-    assert 'pip' in requirements
-    assert 'nose' not in requirements
diff --git a/vendor/pip-1.2.1/tests/test_search.py b/vendor/pip-1.2.1/tests/test_search.py
deleted file mode 100644
index 53aad534..00000000
--- a/vendor/pip-1.2.1/tests/test_search.py
+++ /dev/null
@@ -1,131 +0,0 @@
-import pip.download
-from pip.commands.search import (compare_versions,
-                                 highest_version,
-                                 transform_hits,
-                                 SearchCommand)
-from pip.status_codes import NO_MATCHES_FOUND, SUCCESS
-from pip.backwardcompat import xmlrpclib, b
-from mock import Mock
-from tests.test_pip import run_pip, reset_env, pyversion
-from tests.pypi_server import assert_equal
-
-
-if pyversion >= '3':
-    VERBOSE_FALSE = False
-else:
-    VERBOSE_FALSE = 0
-
-
-def test_version_compare():
-    """
-    Test version comparison.
-
-    """
-    assert compare_versions('1.0', '1.1') == -1
-    assert compare_versions('1.1', '1.0') == 1
-    assert compare_versions('1.1a1', '1.1') == -1
-    assert compare_versions('1.1.1', '1.1a') == -1
-    assert highest_version(['1.0', '2.0', '0.1']) == '2.0'
-    assert highest_version(['1.0a1', '1.0']) == '1.0'
-
-
-def test_pypi_xml_transformation():
-    """
-    Test transformation of data structures (pypi xmlrpc to custom list).
-
-    """
-    pypi_hits = [{'_pypi_ordering': 100, 'name': 'foo', 'summary': 'foo summary', 'version': '1.0'},
-            {'_pypi_ordering': 200, 'name': 'foo', 'summary': 'foo summary v2', 'version': '2.0'},
-            {'_pypi_ordering': 50, 'name': 'bar', 'summary': 'bar summary', 'version': '1.0'}]
-    expected = [{'score': 200, 'versions': ['1.0', '2.0'], 'name': 'foo', 'summary': 'foo summary v2'},
-            {'score': 50, 'versions': ['1.0'], 'name': 'bar', 'summary': 'bar summary'}]
-    assert_equal(expected, transform_hits(pypi_hits))
-
-
-def test_search():
-    """
-    End to end test of search command.
-
-    """
-    reset_env()
-    output = run_pip('search', 'pip')
-    assert 'pip installs packages' in output.stdout
-
-
-def test_multiple_search():
-    """
-    Test searching for multiple packages at once.
-
-    """
-    reset_env()
-    output = run_pip('search', 'pip', 'INITools')
-    assert 'pip installs packages' in output.stdout
-    assert 'Tools for parsing and using INI-style files' in output.stdout
-
-
-def test_searching_through_Search_class():
-    """
-    Verify if ``pip.vcs.Search`` uses tests xmlrpclib.Transport class
-    """
-    original_xmlrpclib_transport = pip.download.xmlrpclib_transport
-    pip.download.xmlrpclib_transport = fake_transport = Mock()
-    query = 'mylittlequerythatdoesnotexists'
-    dumped_xmlrpc_request = b(xmlrpclib.dumps(({'name': query, 'summary': query}, 'or'), 'search'))
-    expected = [{'_pypi_ordering': 100, 'name': 'foo', 'summary': 'foo summary', 'version': '1.0'}]
-    fake_transport.request.return_value = (expected,)
-    pypi_searcher = SearchCommand()
-    result = pypi_searcher.search(query, 'http://pypi.python.org/pypi')
-    try:
-        assert expected == result, result
-        fake_transport.request.assert_called_with('pypi.python.org', '/pypi', dumped_xmlrpc_request, verbose=VERBOSE_FALSE)
-    finally:
-        pip.download.xmlrpclib_transport = original_xmlrpclib_transport
-
-
-def test_search_missing_argument():
-    """
-    Test missing required argument for search
-    """
-    env = reset_env(use_distribute=True)
-    result = run_pip('search', expect_error=True)
-    assert 'ERROR: Missing required argument (search query).' in result.stdout
-
-
-def test_run_method_should_return_sucess_when_find_packages():
-    """
-    Test SearchCommand.run for found package
-    """
-    options_mock = Mock()
-    options_mock.index = 'http://pypi.python.org/pypi'
-    search_cmd = SearchCommand()
-    status = search_cmd.run(options_mock, ('pip',))
-    assert status == SUCCESS
-
-
-def test_run_method_should_return_no_matches_found_when_does_not_find_packages():
-    """
-    Test SearchCommand.run for no matches
-    """
-    options_mock = Mock()
-    options_mock.index = 'http://pypi.python.org/pypi'
-    search_cmd = SearchCommand()
-    status = search_cmd.run(options_mock, ('non-existant-package',))
-    assert status == NO_MATCHES_FOUND, status
-
-
-def test_search_should_exit_status_code_zero_when_find_packages():
-    """
-    Test search exit status code for package found
-    """
-    env = reset_env(use_distribute=True)
-    result = run_pip('search', 'pip')
-    assert result.returncode == SUCCESS
-
-
-def test_search_exit_status_code_when_finds_no_package():
-    """
-    Test search exit status code for no matches
-    """
-    env = reset_env(use_distribute=True)
-    result = run_pip('search', 'non-existant-package', expect_error=True)
-    assert result.returncode == NO_MATCHES_FOUND
diff --git a/vendor/pip-1.2.1/tests/test_unicode.py b/vendor/pip-1.2.1/tests/test_unicode.py
deleted file mode 100644
index d9196e75..00000000
--- a/vendor/pip-1.2.1/tests/test_unicode.py
+++ /dev/null
@@ -1,25 +0,0 @@
-import os
-from tests.test_pip import here, reset_env, run_pip
-
-
-def test_install_package_that_emits_unicode():
-    """
-    Install a package with a setup.py that emits UTF-8 output and then fails.
-    This works fine in Python 2, but fails in Python 3 with:
-
-    Traceback (most recent call last):
-      ...
-      File "/Users/marc/python/virtualenvs/py3.1-phpserialize/lib/python3.2/site-packages/pip-1.0.2-py3.2.egg/pip/__init__.py", line 230, in call_subprocess
-        line = console_to_str(stdout.readline())
-      File "/Users/marc/python/virtualenvs/py3.1-phpserialize/lib/python3.2/site-packages/pip-1.0.2-py3.2.egg/pip/backwardcompat.py", line 60, in console_to_str
-        return s.decode(console_encoding)
-    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 17: ordinal not in range(128)
-
-    Refs https://github.com/pypa/pip/issues/326
-    """
-
-    env = reset_env()
-    to_install = os.path.abspath(os.path.join(here, 'packages', 'BrokenEmitsUTF8'))
-    result = run_pip('install', to_install, expect_error=True)
-    assert '__main__.FakeError: this package designed to fail on install' in result.stdout
-    assert 'UnicodeDecodeError' not in result.stdout
diff --git a/vendor/pip-1.2.1/tests/test_uninstall.py b/vendor/pip-1.2.1/tests/test_uninstall.py
deleted file mode 100644
index c88c7a68..00000000
--- a/vendor/pip-1.2.1/tests/test_uninstall.py
+++ /dev/null
@@ -1,139 +0,0 @@
-import textwrap
-import sys
-from os.path import join
-from tempfile import mkdtemp
-from tests.test_pip import reset_env, run_pip, assert_all_changes, write_file
-from tests.local_repos import local_repo, local_checkout
-
-from pip.util import rmtree
-
-
-def test_simple_uninstall():
-    """
-    Test simple install and uninstall.
-
-    """
-    env = reset_env()
-    result = run_pip('install', 'INITools==0.2', expect_error=True)
-    assert join(env.site_packages, 'initools') in result.files_created, sorted(result.files_created.keys())
-    result2 = run_pip('uninstall', 'INITools', '-y', expect_error=True)
-    assert_all_changes(result, result2, [env.venv/'build', 'cache'])
-
-
-def test_uninstall_with_scripts():
-    """
-    Uninstall an easy_installed package with scripts.
-
-    """
-    env = reset_env()
-    result = env.run('easy_install', 'PyLogo', expect_stderr=True)
-    easy_install_pth = env.site_packages/ 'easy-install.pth'
-    pylogo = sys.platform == 'win32' and 'pylogo' or 'PyLogo'
-    assert(pylogo in result.files_updated[easy_install_pth].bytes)
-    result2 = run_pip('uninstall', 'pylogo', '-y', expect_error=True)
-    assert_all_changes(result, result2, [env.venv/'build', 'cache'])
-
-
-def test_uninstall_namespace_package():
-    """
-    Uninstall a distribution with a namespace package without clobbering
-    the namespace and everything in it.
-
-    """
-    env = reset_env()
-    result = run_pip('install', 'pd.requires==0.0.3', expect_error=True)
-    assert join(env.site_packages, 'pd') in result.files_created, sorted(result.files_created.keys())
-    result2 = run_pip('uninstall', 'pd.find', '-y', expect_error=True)
-    assert join(env.site_packages, 'pd') not in result2.files_deleted, sorted(result2.files_deleted.keys())
-    assert join(env.site_packages, 'pd', 'find') in result2.files_deleted, sorted(result2.files_deleted.keys())
-
-
-def test_uninstall_console_scripts():
-    """
-    Test uninstalling a package with more files (console_script entry points, extra directories).
-
-    """
-    env = reset_env()
-    args = ['install']
-    args.append('discover')
-    result = run_pip(*args, **{"expect_error": True})
-    assert env.bin/'discover'+env.exe in result.files_created, sorted(result.files_created.keys())
-    result2 = run_pip('uninstall', 'discover', '-y', expect_error=True)
-    assert_all_changes(result, result2, [env.venv/'build', 'cache'])
-
-
-def test_uninstall_easy_installed_console_scripts():
-    """
-    Test uninstalling package with console_scripts that is easy_installed.
-
-    """
-    env = reset_env()
-    args = ['easy_install']
-    args.append('discover')
-    result = env.run(*args, **{"expect_stderr": True})
-    assert env.bin/'discover'+env.exe in result.files_created, sorted(result.files_created.keys())
-    result2 = run_pip('uninstall', 'discover', '-y')
-    assert_all_changes(result, result2, [env.venv/'build', 'cache'])
-
-
-def test_uninstall_editable_from_svn():
-    """
-    Test uninstalling an editable installation from svn.
-
-    """
-    env = reset_env()
-    result = run_pip('install', '-e', '%s#egg=initools-dev' %
-                     local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'))
-    result.assert_installed('INITools')
-    result2 = run_pip('uninstall', '-y', 'initools')
-    assert (env.venv/'src'/'initools' in result2.files_after), 'oh noes, pip deleted my sources!'
-    assert_all_changes(result, result2, [env.venv/'src', env.venv/'build'])
-
-
-def test_uninstall_editable_with_source_outside_venv():
-    """
-    Test uninstalling editable install from existing source outside the venv.
-
-    """
-    try:
-        temp = mkdtemp()
-        tmpdir = join(temp, 'virtualenv')
-        _test_uninstall_editable_with_source_outside_venv(tmpdir)
-    finally:
-        rmtree(temp)
-
-
-def _test_uninstall_editable_with_source_outside_venv(tmpdir):
-    env = reset_env()
-    result = env.run('git', 'clone', local_repo('git+git://github.com/pypa/virtualenv'), tmpdir)
-    result2 = run_pip('install', '-e', tmpdir)
-    assert (join(env.site_packages, 'virtualenv.egg-link') in result2.files_created), list(result2.files_created.keys())
-    result3 = run_pip('uninstall', '-y', 'virtualenv', expect_error=True)
-    assert_all_changes(result, result3, [env.venv/'build'])
-
-
-def test_uninstall_from_reqs_file():
-    """
-    Test uninstall from a requirements file.
-
-    """
-    env = reset_env()
-    write_file('test-req.txt', textwrap.dedent("""\
-        -e %s#egg=initools-dev
-        # and something else to test out:
-        PyLogo<0.4
-        """ % local_checkout('svn+http://svn.colorstudy.com/INITools/trunk')))
-    result = run_pip('install', '-r', 'test-req.txt')
-    write_file('test-req.txt', textwrap.dedent("""\
-        # -f, -i, and --extra-index-url should all be ignored by uninstall
-        -f http://www.example.com
-        -i http://www.example.com
-        --extra-index-url http://www.example.com
-
-        -e %s#egg=initools-dev
-        # and something else to test out:
-        PyLogo<0.4
-        """ % local_checkout('svn+http://svn.colorstudy.com/INITools/trunk')))
-    result2 = run_pip('uninstall', '-r', 'test-req.txt', '-y')
-    assert_all_changes(
-        result, result2, [env.venv/'build', env.venv/'src', env.scratch/'test-req.txt'])
diff --git a/vendor/pip-1.2.1/tests/test_upgrade.py b/vendor/pip-1.2.1/tests/test_upgrade.py
deleted file mode 100644
index c6b8d686..00000000
--- a/vendor/pip-1.2.1/tests/test_upgrade.py
+++ /dev/null
@@ -1,192 +0,0 @@
-import textwrap
-from os.path import join
-from tests.test_pip import (here, reset_env, run_pip, assert_all_changes,
-                            write_file, pyversion, _create_test_package,
-                            _change_test_package_version)
-
-
-def test_no_upgrade_unless_requested():
-    """
-    No upgrade if not specifically requested.
-
-    """
-    reset_env()
-    run_pip('install', 'INITools==0.1', expect_error=True)
-    result = run_pip('install', 'INITools', expect_error=True)
-    assert not result.files_created, 'pip install INITools upgraded when it should not have'
-
-
-def test_upgrade_to_specific_version():
-    """
-    It does upgrade to specific version requested.
-
-    """
-    env = reset_env()
-    run_pip('install', 'INITools==0.1', expect_error=True)
-    result = run_pip('install', 'INITools==0.2', expect_error=True)
-    assert result.files_created, 'pip install with specific version did not upgrade'
-    assert env.site_packages/'INITools-0.1-py%s.egg-info' % pyversion in result.files_deleted
-    assert env.site_packages/'INITools-0.2-py%s.egg-info' % pyversion in result.files_created
-
-
-def test_upgrade_if_requested():
-    """
-    And it does upgrade if requested.
-
-    """
-    env = reset_env()
-    run_pip('install', 'INITools==0.1', expect_error=True)
-    result = run_pip('install', '--upgrade', 'INITools', expect_error=True)
-    assert result.files_created, 'pip install --upgrade did not upgrade'
-    assert env.site_packages/'INITools-0.1-py%s.egg-info' % pyversion not in result.files_created
-
-
-def test_upgrade_with_newest_already_installed():
-    """
-    If the newest version of a package is already installed, the package should
-    not be reinstalled and the user should be informed.
-    """
-
-    env = reset_env()
-    run_pip('install', 'INITools')
-    result = run_pip('install', '--upgrade', 'INITools')
-    assert not result.files_created, 'pip install --upgrade INITools upgraded when it should not have'
-    assert 'already up-to-date' in result.stdout
-
-
-def test_upgrade_force_reinstall_newest():
-    """
-    Force reinstallation of a package even if it is already at its newest
-    version if --force-reinstall is supplied.
-    """
-
-    env = reset_env()
-    result = run_pip('install', 'INITools')
-    assert env.site_packages/ 'initools' in result.files_created, sorted(result.files_created.keys())
-    result2 = run_pip('install', '--upgrade', '--force-reinstall', 'INITools')
-    assert result2.files_updated, 'upgrade to INITools 0.3 failed'
-    result3 = run_pip('uninstall', 'initools', '-y', expect_error=True)
-    assert_all_changes(result, result3, [env.venv/'build', 'cache'])
-
-
-def test_uninstall_before_upgrade():
-    """
-    Automatic uninstall-before-upgrade.
-
-    """
-    env = reset_env()
-    result = run_pip('install', 'INITools==0.2', expect_error=True)
-    assert env.site_packages/ 'initools' in result.files_created, sorted(result.files_created.keys())
-    result2 = run_pip('install', 'INITools==0.3', expect_error=True)
-    assert result2.files_created, 'upgrade to INITools 0.3 failed'
-    result3 = run_pip('uninstall', 'initools', '-y', expect_error=True)
-    assert_all_changes(result, result3, [env.venv/'build', 'cache'])
-
-
-def test_uninstall_before_upgrade_from_url():
-    """
-    Automatic uninstall-before-upgrade from URL.
-
-    """
-    env = reset_env()
-    result = run_pip('install', 'INITools==0.2', expect_error=True)
-    assert env.site_packages/ 'initools' in result.files_created, sorted(result.files_created.keys())
-    result2 = run_pip('install', 'http://pypi.python.org/packages/source/I/INITools/INITools-0.3.tar.gz', expect_error=True)
-    assert result2.files_created, 'upgrade to INITools 0.3 failed'
-    result3 = run_pip('uninstall', 'initools', '-y', expect_error=True)
-    assert_all_changes(result, result3, [env.venv/'build', 'cache'])
-
-
-def test_upgrade_to_same_version_from_url():
-    """
-    When installing from a URL the same version that is already installed, no
-    need to uninstall and reinstall if --upgrade is not specified.
-
-    """
-    env = reset_env()
-    result = run_pip('install', 'INITools==0.3', expect_error=True)
-    assert env.site_packages/ 'initools' in result.files_created, sorted(result.files_created.keys())
-    result2 = run_pip('install', 'http://pypi.python.org/packages/source/I/INITools/INITools-0.3.tar.gz', expect_error=True)
-    assert not result2.files_updated, 'INITools 0.3 reinstalled same version'
-    result3 = run_pip('uninstall', 'initools', '-y', expect_error=True)
-    assert_all_changes(result, result3, [env.venv/'build', 'cache'])
-
-
-def test_upgrade_from_reqs_file():
-    """
-    Upgrade from a requirements file.
-
-    """
-    env = reset_env()
-    write_file('test-req.txt', textwrap.dedent("""\
-        PyLogo<0.4
-        # and something else to test out:
-        INITools==0.3
-        """))
-    install_result = run_pip('install', '-r', env.scratch_path/ 'test-req.txt')
-    write_file('test-req.txt', textwrap.dedent("""\
-        PyLogo
-        # and something else to test out:
-        INITools
-        """))
-    run_pip('install', '--upgrade', '-r', env.scratch_path/ 'test-req.txt')
-    uninstall_result = run_pip('uninstall', '-r', env.scratch_path/ 'test-req.txt', '-y')
-    assert_all_changes(install_result, uninstall_result, [env.venv/'build', 'cache', env.scratch/'test-req.txt'])
-
-
-def test_uninstall_rollback():
-    """
-    Test uninstall-rollback (using test package with a setup.py
-    crafted to fail on install).
-
-    """
-    env = reset_env()
-    find_links = 'file://' + join(here, 'packages')
-    result = run_pip('install', '-f', find_links, '--no-index', 'broken==0.1')
-    assert env.site_packages / 'broken.py' in result.files_created, list(result.files_created.keys())
-    result2 = run_pip('install', '-f', find_links, '--no-index', 'broken==0.2broken', expect_error=True)
-    assert result2.returncode == 1, str(result2)
-    assert env.run('python', '-c', "import broken; print(broken.VERSION)").stdout == '0.1\n'
-    assert_all_changes(result.files_after, result2, [env.venv/'build', 'pip-log.txt'])
-
-
-def test_editable_git_upgrade():
-    """
-    Test installing an editable git package from a repository, upgrading the repository,
-    installing again, and check it gets the newer version
-    """
-    env = reset_env()
-    version_pkg_path = _create_test_package(env)
-    run_pip('install', '-e', '%s#egg=version_pkg' % ('git+file://' + version_pkg_path))
-    version = env.run('version_pkg')
-    assert '0.1' in version.stdout
-    _change_test_package_version(env, version_pkg_path)
-    run_pip('install', '-e', '%s#egg=version_pkg' % ('git+file://' + version_pkg_path))
-    version2 = env.run('version_pkg')
-    assert 'some different version' in version2.stdout
-
-
-def test_should_not_install_always_from_cache():
-    """
-    If there is an old cached package, pip should download the newer version
-    Related to issue #175
-    """
-    env = reset_env()
-    run_pip('install', 'INITools==0.2', expect_error=True)
-    run_pip('uninstall', '-y', 'INITools')
-    result = run_pip('install', 'INITools==0.1', expect_error=True)
-    assert env.site_packages/'INITools-0.2-py%s.egg-info' % pyversion not in result.files_created
-    assert env.site_packages/'INITools-0.1-py%s.egg-info' % pyversion in result.files_created
-
-
-def test_install_with_ignoreinstalled_requested():
-    """
-    It installs package if ignore installed is set.
-
-    """
-    env = reset_env()
-    run_pip('install', 'INITools==0.1', expect_error=True)
-    result = run_pip('install', '-I', 'INITools', expect_error=True)
-    assert result.files_created, 'pip install -I did not install'
-    assert env.site_packages/'INITools-0.1-py%s.egg-info' % pyversion not in result.files_created
-
diff --git a/vendor/pip-1.2.1/tests/test_vcs_backends.py b/vendor/pip-1.2.1/tests/test_vcs_backends.py
deleted file mode 100644
index 9561254f..00000000
--- a/vendor/pip-1.2.1/tests/test_vcs_backends.py
+++ /dev/null
@@ -1,131 +0,0 @@
-from tests.test_pip import (reset_env, run_pip,
-                      _create_test_package, _change_test_package_version)
-from tests.local_repos import local_checkout
-
-
-def test_install_editable_from_git_with_https():
-    """
-    Test cloning from Git with https.
-    """
-    reset_env()
-    result = run_pip('install', '-e',
-                     '%s#egg=pip-test-package' %
-                     local_checkout('git+https://github.com/pypa/pip-test-package.git'),
-                     expect_error=True)
-    result.assert_installed('pip-test-package', with_files=['.git'])
-
-
-def test_git_with_sha1_revisions():
-    """
-    Git backend should be able to install from SHA1 revisions
-    """
-    env = reset_env()
-    version_pkg_path = _create_test_package(env)
-    _change_test_package_version(env, version_pkg_path)
-    sha1 = env.run('git', 'rev-parse', 'HEAD~1', cwd=version_pkg_path).stdout.strip()
-    run_pip('install', '-e', '%s@%s#egg=version_pkg' % ('git+file://' + version_pkg_path.abspath.replace('\\', '/'), sha1))
-    version = env.run('version_pkg')
-    assert '0.1' in version.stdout, version.stdout
-
-
-def test_git_with_branch_name_as_revision():
-    """
-    Git backend should be able to install from branch names
-    """
-    env = reset_env()
-    version_pkg_path = _create_test_package(env)
-    env.run('git', 'checkout', '-b', 'test_branch', expect_stderr=True, cwd=version_pkg_path)
-    _change_test_package_version(env, version_pkg_path)
-    run_pip('install', '-e', '%s@test_branch#egg=version_pkg' % ('git+file://' + version_pkg_path.abspath.replace('\\', '/')))
-    version = env.run('version_pkg')
-    assert 'some different version' in version.stdout
-
-
-def test_git_with_tag_name_as_revision():
-    """
-    Git backend should be able to install from tag names
-    """
-    env = reset_env()
-    version_pkg_path = _create_test_package(env)
-    env.run('git', 'tag', 'test_tag', expect_stderr=True, cwd=version_pkg_path)
-    _change_test_package_version(env, version_pkg_path)
-    run_pip('install', '-e', '%s@test_tag#egg=version_pkg' % ('git+file://' + version_pkg_path.abspath.replace('\\', '/')))
-    version = env.run('version_pkg')
-    assert '0.1' in version.stdout
-
-
-def test_git_with_tag_name_and_update():
-    """
-    Test cloning a git repository and updating to a different version.
-    """
-    reset_env()
-    result = run_pip('install', '-e', '%s#egg=pip-test-package' %
-                     local_checkout('git+http://github.com/pypa/pip-test-package.git'),
-                     expect_error=True)
-    result.assert_installed('pip-test-package', with_files=['.git'])
-    result = run_pip('install', '--global-option=--version', '-e',
-                     '%s@0.1.1#egg=pip-test-package' %
-                     local_checkout('git+http://github.com/pypa/pip-test-package.git'),
-                     expect_error=True)
-    assert '0.1.1\n' in result.stdout
-
-
-def test_git_branch_should_not_be_changed():
-    """
-    Editable installations should not change branch
-    related to issue #32 and #161
-    """
-    env = reset_env()
-    run_pip('install', '-e', '%s#egg=pip-test-package' %
-                local_checkout('git+http://github.com/pypa/pip-test-package.git'),
-                expect_error=True)
-    source_dir = env.venv_path/'src'/'pip-test-package'
-    result = env.run('git', 'branch', cwd=source_dir)
-    assert '* master' in result.stdout, result.stdout
-
-
-def test_git_with_non_editable_unpacking():
-    """
-    Test cloning a git repository from a non-editable URL with a given tag.
-    """
-    reset_env()
-    result = run_pip('install', '--global-option=--version', local_checkout(
-                     'git+http://github.com/pypa/pip-test-package.git@0.1.1#egg=pip-test-package'
-                     ), expect_error=True)
-    assert '0.1.1\n' in result.stdout
-
-
-def test_git_with_editable_where_egg_contains_dev_string():
-    """
-    Test cloning a git repository from an editable url which contains "dev" string
-    """
-    reset_env()
-    result = run_pip('install', '-e', '%s#egg=django-devserver' %
-                     local_checkout('git+git://github.com/dcramer/django-devserver.git'))
-    result.assert_installed('django-devserver', with_files=['.git'])
-
-
-def test_git_with_non_editable_where_egg_contains_dev_string():
-    """
-    Test cloning a git repository from a non-editable url which contains "dev" string
-    """
-    env = reset_env()
-    result = run_pip('install', '%s#egg=django-devserver' %
-                     local_checkout('git+git://github.com/dcramer/django-devserver.git'))
-    devserver_folder = env.site_packages/'devserver'
-    assert devserver_folder in result.files_created, str(result)
-
-
-def test_git_with_ambiguous_revs():
-    """
-    Test git with two "names" (tag/branch) pointing to the same commit
-    """
-    env = reset_env()
-    version_pkg_path = _create_test_package(env)
-    package_url = 'git+file://%s@0.1#egg=version_pkg' % (version_pkg_path.abspath.replace('\\', '/'))
-    env.run('git', 'tag', '0.1', cwd=version_pkg_path)
-    result = run_pip('install', '-e', package_url)
-    assert 'Could not find a tag or branch' not in result.stdout
-    # it is 'version-pkg' instead of 'version_pkg' because
-    # egg-link name is version-pkg.egg-link because it is a single .py module
-    result.assert_installed('version-pkg', with_files=['.git'])
diff --git a/vendor/pip-1.2.1/tests/test_vcs_bazaar.py b/vendor/pip-1.2.1/tests/test_vcs_bazaar.py
deleted file mode 100644
index 4e43fe5f..00000000
--- a/vendor/pip-1.2.1/tests/test_vcs_bazaar.py
+++ /dev/null
@@ -1,29 +0,0 @@
-from tests.test_pip import pyversion
-from pip.vcs.bazaar import Bazaar
-
-if pyversion >= '3':
-    VERBOSE_FALSE = False
-else:
-    VERBOSE_FALSE = 0
-
-
-def test_bazaar_simple_urls():
-    """
-    Test bzr url support.
-
-    SSH and launchpad have special handling.
-    """
-    http_bzr_repo = Bazaar(url='bzr+http://bzr.myproject.org/MyProject/trunk/#egg=MyProject')
-    https_bzr_repo = Bazaar(url='bzr+https://bzr.myproject.org/MyProject/trunk/#egg=MyProject')
-    ssh_bzr_repo = Bazaar(url='bzr+ssh://bzr.myproject.org/MyProject/trunk/#egg=MyProject')
-    ftp_bzr_repo = Bazaar(url='bzr+ftp://bzr.myproject.org/MyProject/trunk/#egg=MyProject')
-    sftp_bzr_repo = Bazaar(url='bzr+sftp://bzr.myproject.org/MyProject/trunk/#egg=MyProject')
-    launchpad_bzr_repo = Bazaar(url='bzr+lp:MyLaunchpadProject#egg=MyLaunchpadProject')
-
-    assert http_bzr_repo.get_url_rev() == ('http://bzr.myproject.org/MyProject/trunk/', None)
-    assert https_bzr_repo.get_url_rev() == ('https://bzr.myproject.org/MyProject/trunk/', None)
-    assert ssh_bzr_repo.get_url_rev() == ('bzr+ssh://bzr.myproject.org/MyProject/trunk/', None)
-    assert ftp_bzr_repo.get_url_rev() == ('ftp://bzr.myproject.org/MyProject/trunk/', None)
-    assert sftp_bzr_repo.get_url_rev() == ('sftp://bzr.myproject.org/MyProject/trunk/', None)
-    assert launchpad_bzr_repo.get_url_rev() == ('lp:MyLaunchpadProject', None)
-
diff --git a/vendor/pip-1.2.1/tests/test_vcs_git.py b/vendor/pip-1.2.1/tests/test_vcs_git.py
deleted file mode 100644
index 0b3abab2..00000000
--- a/vendor/pip-1.2.1/tests/test_vcs_git.py
+++ /dev/null
@@ -1,77 +0,0 @@
-from mock import patch
-from pip.vcs.git import Git
-from tests.test_pip import (reset_env, run_pip,
-                            _create_test_package)
-
-
-def test_get_tag_revs_should_return_tag_name_and_commit_pair():
-    env = reset_env()
-    version_pkg_path = _create_test_package(env)
-    env.run('git', 'tag', '0.1', cwd=version_pkg_path)
-    env.run('git', 'tag', '0.2', cwd=version_pkg_path)
-    commit = env.run('git', 'rev-parse', 'HEAD',
-                     cwd=version_pkg_path).stdout.strip()
-    git = Git()
-    result = git.get_tag_revs(version_pkg_path)
-    assert result == {'0.1': commit, '0.2': commit}, result
-
-
-def test_get_branch_revs_should_return_branch_name_and_commit_pair():
-    env = reset_env()
-    version_pkg_path = _create_test_package(env)
-    env.run('git', 'branch', 'branch0.1', cwd=version_pkg_path)
-    commit = env.run('git', 'rev-parse', 'HEAD',
-                     cwd=version_pkg_path).stdout.strip()
-    git = Git()
-    result = git.get_branch_revs(version_pkg_path)
-    assert result == {'master': commit, 'branch0.1': commit}
-
-
-def test_get_branch_revs_should_ignore_no_branch():
-    env = reset_env()
-    version_pkg_path = _create_test_package(env)
-    env.run('git', 'branch', 'branch0.1', cwd=version_pkg_path)
-    commit = env.run('git', 'rev-parse', 'HEAD',
-                     cwd=version_pkg_path).stdout.strip()
-    # current branch here is "* (nobranch)"
-    env.run('git', 'checkout', commit,
-            cwd=version_pkg_path, expect_stderr=True)
-    git = Git()
-    result = git.get_branch_revs(version_pkg_path)
-    assert result == {'master': commit, 'branch0.1': commit}
-
-
-@patch('pip.vcs.git.Git.get_tag_revs')
-@patch('pip.vcs.git.Git.get_branch_revs')
-def test_check_rev_options_should_handle_branch_name(branches_revs_mock,
-                                                     tags_revs_mock):
-    branches_revs_mock.return_value = {'master': '123456'}
-    tags_revs_mock.return_value = {'0.1': '123456'}
-    git = Git()
-
-    result = git.check_rev_options('master', '.', [])
-    assert result == ['123456']
-
-
-@patch('pip.vcs.git.Git.get_tag_revs')
-@patch('pip.vcs.git.Git.get_branch_revs')
-def test_check_rev_options_should_handle_tag_name(branches_revs_mock,
-                                                  tags_revs_mock):
-    branches_revs_mock.return_value = {'master': '123456'}
-    tags_revs_mock.return_value = {'0.1': '123456'}
-    git = Git()
-
-    result = git.check_rev_options('0.1', '.', [])
-    assert result == ['123456']
-
-
-@patch('pip.vcs.git.Git.get_tag_revs')
-@patch('pip.vcs.git.Git.get_branch_revs')
-def test_check_rev_options_should_handle_ambiguous_commit(branches_revs_mock,
-                                                          tags_revs_mock):
-    branches_revs_mock.return_value = {'master': '123456'}
-    tags_revs_mock.return_value = {'0.1': '123456'}
-    git = Git()
-
-    result = git.check_rev_options('0.1', '.', [])
-    assert result == ['123456'], result
diff --git a/vendor/pip-1.2.1/tests/test_vcs_subversion.py b/vendor/pip-1.2.1/tests/test_vcs_subversion.py
deleted file mode 100644
index 21222011..00000000
--- a/vendor/pip-1.2.1/tests/test_vcs_subversion.py
+++ /dev/null
@@ -1,21 +0,0 @@
-from mock import patch
-from pip.vcs.subversion import Subversion
-from tests.test_pip import reset_env
-
-@patch('pip.vcs.subversion.call_subprocess')
-def test_obtain_should_recognize_auth_info_in_url(call_subprocess_mock):
-    env = reset_env()
-    svn = Subversion(url='svn+http://username:password@svn.example.com/')
-    svn.obtain(env.scratch_path/'test')
-    call_subprocess_mock.assert_called_with([
-        svn.cmd, 'checkout', '-q', '--username', 'username', '--password', 'password',
-        'http://username:password@svn.example.com/', env.scratch_path/'test'])
-
-@patch('pip.vcs.subversion.call_subprocess')
-def test_export_should_recognize_auth_info_in_url(call_subprocess_mock):
-    env = reset_env()
-    svn = Subversion(url='svn+http://username:password@svn.example.com/')
-    svn.export(env.scratch_path/'test')
-    assert call_subprocess_mock.call_args[0] == ([
-        svn.cmd, 'export', '--username', 'username', '--password', 'password',
-        'http://username:password@svn.example.com/', env.scratch_path/'test'],)
-- 
GitLab