From a146b14b60170ca1202631ba15b8444fc0863869 Mon Sep 17 00:00:00 2001 From: Majeri Kasmaei Chervine Date: Fri, 6 Oct 2017 13:33:46 +0200 Subject: [PATCH] Minor fixes --- client/client_test.go | 30 +- client/common.go | 10 +- client/realms.go | 4 +- utils/.idea/misc.xml | 4 - utils/.idea/modules.xml | 8 - utils/.idea/utils.iml | 11 - utils/.idea/workspace.xml | 313 - utils/bin/activate | 78 - utils/bin/activate.csh | 36 - utils/bin/activate.fish | 76 - utils/bin/activate_this.py | 34 - utils/bin/chardetect | 11 - utils/bin/easy_install | 11 - utils/bin/easy_install-3.5 | 11 - utils/bin/pip | 11 - utils/bin/pip3 | 11 - utils/bin/pip3.5 | 11 - utils/bin/python | 1 - utils/bin/python-config | 78 - utils/bin/python3 | Bin 11224 -> 0 bytes utils/bin/python3.5 | 1 - utils/bin/wheel | 11 - utils/file_parser.py | 91 - utils/html_parser.py | 38 - utils/include/python3.5m | 1 - utils/lib/python3.5/__future__.py | 1 - .../__pycache__/__future__.cpython-35.pyc | Bin 4361 -> 0 bytes .../__pycache__/_bootlocale.cpython-35.pyc | Bin 1091 -> 0 bytes .../_collections_abc.cpython-35.pyc | Bin 29863 -> 0 bytes .../__pycache__/_weakrefset.cpython-35.pyc | Bin 8468 -> 0 bytes .../python3.5/__pycache__/abc.cpython-35.pyc | Bin 7912 -> 0 bytes .../__pycache__/base64.cpython-35.pyc | Bin 18458 -> 0 bytes .../__pycache__/bisect.cpython-35.pyc | Bin 2881 -> 0 bytes .../__pycache__/codecs.cpython-35.pyc | Bin 35350 -> 0 bytes .../python3.5/__pycache__/copy.cpython-35.pyc | Bin 8154 -> 0 bytes .../__pycache__/copyreg.cpython-35.pyc | Bin 4599 -> 0 bytes .../__pycache__/fnmatch.cpython-35.pyc | Bin 3178 -> 0 bytes .../__pycache__/functools.cpython-35.pyc | Bin 23631 -> 0 bytes .../__pycache__/genericpath.cpython-35.pyc | Bin 3979 -> 0 bytes .../__pycache__/hashlib.cpython-35.pyc | Bin 7892 -> 0 bytes .../__pycache__/heapq.cpython-35.pyc | Bin 15089 -> 0 bytes .../python3.5/__pycache__/hmac.cpython-35.pyc | Bin 5178 -> 0 bytes .../python3.5/__pycache__/imp.cpython-35.pyc | Bin 10502 -> 0 bytes .../python3.5/__pycache__/io.cpython-35.pyc | Bin 3505 -> 0 bytes .../__pycache__/keyword.cpython-35.pyc | Bin 1987 -> 0 bytes .../__pycache__/linecache.cpython-35.pyc | Bin 4124 -> 0 bytes .../__pycache__/locale.cpython-35.pyc | Bin 36575 -> 0 bytes .../__pycache__/operator.cpython-35.pyc | Bin 14836 -> 0 bytes .../python3.5/__pycache__/os.cpython-35.pyc | Bin 31314 -> 0 bytes .../__pycache__/posixpath.cpython-35.pyc | Bin 11201 -> 0 bytes .../__pycache__/random.cpython-35.pyc | Bin 19374 -> 0 bytes .../python3.5/__pycache__/re.cpython-35.pyc | Bin 14499 -> 0 bytes .../__pycache__/reprlib.cpython-35.pyc | Bin 6006 -> 0 bytes .../__pycache__/shutil.cpython-35.pyc | Bin 32686 -> 0 bytes .../python3.5/__pycache__/site.cpython-35.pyc | Bin 22506 -> 0 bytes .../__pycache__/sre_compile.cpython-35.pyc | Bin 10967 -> 0 bytes .../__pycache__/sre_constants.cpython-35.pyc | Bin 5988 -> 0 bytes .../__pycache__/sre_parse.cpython-35.pyc | Bin 22382 -> 0 bytes .../python3.5/__pycache__/stat.cpython-35.pyc | Bin 4209 -> 0 bytes .../__pycache__/struct.cpython-35.pyc | Bin 394 -> 0 bytes .../__pycache__/tarfile.cpython-35.pyc | Bin 69129 -> 0 bytes .../__pycache__/tempfile.cpython-35.pyc | Bin 23681 -> 0 bytes .../__pycache__/token.cpython-35.pyc | Bin 3720 -> 0 bytes .../__pycache__/tokenize.cpython-35.pyc | Bin 20508 -> 0 bytes .../__pycache__/types.cpython-35.pyc | Bin 8787 -> 0 bytes .../__pycache__/warnings.cpython-35.pyc | Bin 13092 -> 0 bytes .../__pycache__/weakref.cpython-35.pyc | Bin 20693 -> 0 bytes utils/lib/python3.5/_bootlocale.py | 1 - utils/lib/python3.5/_collections_abc.py | 1 - utils/lib/python3.5/_dummy_thread.py | 1 - utils/lib/python3.5/_weakrefset.py | 1 - utils/lib/python3.5/abc.py | 1 - utils/lib/python3.5/base64.py | 1 - utils/lib/python3.5/bisect.py | 1 - utils/lib/python3.5/codecs.py | 1 - utils/lib/python3.5/collections | 1 - utils/lib/python3.5/config-3.5m | 1 - utils/lib/python3.5/copy.py | 1 - utils/lib/python3.5/copyreg.py | 1 - utils/lib/python3.5/distutils/__init__.py | 101 - .../__pycache__/__init__.cpython-35.pyc | Bin 3179 -> 0 bytes utils/lib/python3.5/distutils/distutils.cfg | 6 - utils/lib/python3.5/encodings | 1 - utils/lib/python3.5/fnmatch.py | 1 - utils/lib/python3.5/functools.py | 1 - utils/lib/python3.5/genericpath.py | 1 - utils/lib/python3.5/hashlib.py | 1 - utils/lib/python3.5/heapq.py | 1 - utils/lib/python3.5/hmac.py | 1 - utils/lib/python3.5/imp.py | 1 - utils/lib/python3.5/importlib | 1 - utils/lib/python3.5/io.py | 1 - utils/lib/python3.5/keyword.py | 1 - utils/lib/python3.5/lib-dynload | 1 - utils/lib/python3.5/linecache.py | 1 - utils/lib/python3.5/locale.py | 1 - .../lib/python3.5/no-global-site-packages.txt | 0 utils/lib/python3.5/ntpath.py | 1 - utils/lib/python3.5/operator.py | 1 - utils/lib/python3.5/orig-prefix.txt | 1 - utils/lib/python3.5/os.py | 1 - utils/lib/python3.5/plat-linux | 1 - utils/lib/python3.5/posixpath.py | 1 - utils/lib/python3.5/random.py | 1 - utils/lib/python3.5/re.py | 1 - utils/lib/python3.5/reprlib.py | 1 - utils/lib/python3.5/rlcompleter.py | 1 - utils/lib/python3.5/shutil.py | 1 - .../__pycache__/easy_install.cpython-35.pyc | Bin 286 -> 0 bytes .../DESCRIPTION.rst | 3 - .../beautifulsoup4-4.6.0.dist-info/INSTALLER | 1 - .../beautifulsoup4-4.6.0.dist-info/METADATA | 28 - .../beautifulsoup4-4.6.0.dist-info/RECORD | 41 - .../beautifulsoup4-4.6.0.dist-info/WHEEL | 5 - .../metadata.json | 1 - .../top_level.txt | 1 - .../python3.5/site-packages/bs4/__init__.py | 529 -- .../bs4/__pycache__/__init__.cpython-35.pyc | Bin 15413 -> 0 bytes .../bs4/__pycache__/dammit.cpython-35.pyc | Bin 20530 -> 0 bytes .../bs4/__pycache__/diagnose.cpython-35.pyc | Bin 8149 -> 0 bytes .../bs4/__pycache__/element.cpython-35.pyc | Bin 51512 -> 0 bytes .../bs4/__pycache__/testing.cpython-35.pyc | Bin 32815 -> 0 bytes .../site-packages/bs4/builder/__init__.py | 333 - .../__pycache__/__init__.cpython-35.pyc | Bin 9260 -> 0 bytes .../__pycache__/_html5lib.cpython-35.pyc | Bin 12610 -> 0 bytes .../__pycache__/_htmlparser.cpython-35.pyc | Bin 8764 -> 0 bytes .../builder/__pycache__/_lxml.cpython-35.pyc | Bin 7528 -> 0 bytes .../site-packages/bs4/builder/_html5lib.py | 426 - .../site-packages/bs4/builder/_htmlparser.py | 314 - .../site-packages/bs4/builder/_lxml.py | 258 - .../lib/python3.5/site-packages/bs4/dammit.py | 842 -- .../python3.5/site-packages/bs4/diagnose.py | 219 - .../python3.5/site-packages/bs4/element.py | 1808 ---- .../python3.5/site-packages/bs4/testing.py | 770 -- .../site-packages/bs4/tests/__init__.py | 1 - .../tests/__pycache__/__init__.cpython-35.pyc | Bin 181 -> 0 bytes .../test_builder_registry.cpython-35.pyc | Bin 5420 -> 0 bytes .../__pycache__/test_docs.cpython-35.pyc | Bin 431 -> 0 bytes .../__pycache__/test_html5lib.cpython-35.pyc | Bin 5693 -> 0 bytes .../test_htmlparser.cpython-35.pyc | Bin 1969 -> 0 bytes .../__pycache__/test_lxml.cpython-35.pyc | Bin 3071 -> 0 bytes .../__pycache__/test_soup.cpython-35.pyc | Bin 23257 -> 0 bytes .../__pycache__/test_tree.cpython-35.pyc | Bin 92942 -> 0 bytes .../bs4/tests/test_builder_registry.py | 147 - .../site-packages/bs4/tests/test_docs.py | 36 - .../site-packages/bs4/tests/test_html5lib.py | 130 - .../bs4/tests/test_htmlparser.py | 34 - .../site-packages/bs4/tests/test_lxml.py | 76 - .../site-packages/bs4/tests/test_soup.py | 501 -- .../site-packages/bs4/tests/test_tree.py | 2050 ----- .../DESCRIPTION.rst | 49 - .../certifi-2017.4.17.dist-info/INSTALLER | 1 - .../certifi-2017.4.17.dist-info/METADATA | 68 - .../certifi-2017.4.17.dist-info/RECORD | 16 - .../certifi-2017.4.17.dist-info/WHEEL | 6 - .../certifi-2017.4.17.dist-info/metadata.json | 1 - .../certifi-2017.4.17.dist-info/top_level.txt | 1 - .../site-packages/certifi/__init__.py | 3 - .../site-packages/certifi/__main__.py | 2 - .../__pycache__/__init__.cpython-35.pyc | Bin 227 -> 0 bytes .../__pycache__/__main__.cpython-35.pyc | Bin 197 -> 0 bytes .../certifi/__pycache__/core.cpython-35.pyc | Bin 1133 -> 0 bytes .../site-packages/certifi/cacert.pem | 5246 ----------- .../python3.5/site-packages/certifi/core.py | 36 - .../site-packages/certifi/old_root.pem | 414 - .../python3.5/site-packages/certifi/weak.pem | 5660 ------------ .../chardet-3.0.4.dist-info/DESCRIPTION.rst | 70 - .../chardet-3.0.4.dist-info/INSTALLER | 1 - .../chardet-3.0.4.dist-info/METADATA | 96 - .../chardet-3.0.4.dist-info/RECORD | 91 - .../chardet-3.0.4.dist-info/WHEEL | 6 - .../chardet-3.0.4.dist-info/entry_points.txt | 3 - .../chardet-3.0.4.dist-info/metadata.json | 1 - .../chardet-3.0.4.dist-info/top_level.txt | 1 - .../site-packages/chardet/__init__.py | 39 - .../__pycache__/__init__.cpython-35.pyc | Bin 838 -> 0 bytes .../__pycache__/big5freq.cpython-35.pyc | Bin 54675 -> 0 bytes .../__pycache__/big5prober.cpython-35.pyc | Bin 1103 -> 0 bytes .../chardistribution.cpython-35.pyc | Bin 6645 -> 0 bytes .../charsetgroupprober.cpython-35.pyc | Bin 2363 -> 0 bytes .../__pycache__/charsetprober.cpython-35.pyc | Bin 3581 -> 0 bytes .../codingstatemachine.cpython-35.pyc | Bin 2925 -> 0 bytes .../chardet/__pycache__/compat.cpython-35.pyc | Bin 332 -> 0 bytes .../__pycache__/cp949prober.cpython-35.pyc | Bin 1110 -> 0 bytes .../chardet/__pycache__/enums.cpython-35.pyc | Bin 2692 -> 0 bytes .../__pycache__/escprober.cpython-35.pyc | Bin 2748 -> 0 bytes .../chardet/__pycache__/escsm.cpython-35.pyc | Bin 7854 -> 0 bytes .../__pycache__/eucjpprober.cpython-35.pyc | Bin 2549 -> 0 bytes .../__pycache__/euckrfreq.cpython-35.pyc | Bin 24061 -> 0 bytes .../__pycache__/euckrprober.cpython-35.pyc | Bin 1111 -> 0 bytes .../__pycache__/euctwfreq.cpython-35.pyc | Bin 54684 -> 0 bytes .../__pycache__/euctwprober.cpython-35.pyc | Bin 1111 -> 0 bytes .../__pycache__/gb2312freq.cpython-35.pyc | Bin 38326 -> 0 bytes .../__pycache__/gb2312prober.cpython-35.pyc | Bin 1119 -> 0 bytes .../__pycache__/hebrewprober.cpython-35.pyc | Bin 3168 -> 0 bytes .../__pycache__/jisfreq.cpython-35.pyc | Bin 44470 -> 0 bytes .../chardet/__pycache__/jpcntx.cpython-35.pyc | Bin 24767 -> 0 bytes .../langbulgarianmodel.cpython-35.pyc | Bin 24874 -> 0 bytes .../langcyrillicmodel.cpython-35.pyc | Bin 30529 -> 0 bytes .../__pycache__/langgreekmodel.cpython-35.pyc | Bin 24552 -> 0 bytes .../langhebrewmodel.cpython-35.pyc | Bin 23380 -> 0 bytes .../langhungarianmodel.cpython-35.pyc | Bin 24848 -> 0 bytes .../__pycache__/langthaimodel.cpython-35.pyc | Bin 23359 -> 0 bytes .../langturkishmodel.cpython-35.pyc | Bin 23377 -> 0 bytes .../__pycache__/latin1prober.cpython-35.pyc | Bin 3266 -> 0 bytes .../mbcharsetprober.cpython-35.pyc | Bin 2349 -> 0 bytes .../mbcsgroupprober.cpython-35.pyc | Bin 1122 -> 0 bytes .../chardet/__pycache__/mbcssm.cpython-35.pyc | Bin 18838 -> 0 bytes .../sbcharsetprober.cpython-35.pyc | Bin 3169 -> 0 bytes .../sbcsgroupprober.cpython-35.pyc | Bin 1674 -> 0 bytes .../__pycache__/sjisprober.cpython-35.pyc | Bin 2577 -> 0 bytes .../universaldetector.cpython-35.pyc | Bin 6380 -> 0 bytes .../__pycache__/utf8prober.cpython-35.pyc | Bin 2050 -> 0 bytes .../__pycache__/version.cpython-35.pyc | Bin 390 -> 0 bytes .../site-packages/chardet/big5freq.py | 386 - .../site-packages/chardet/big5prober.py | 47 - .../site-packages/chardet/chardistribution.py | 233 - .../chardet/charsetgroupprober.py | 106 - .../site-packages/chardet/charsetprober.py | 145 - .../site-packages/chardet/cli/__init__.py | 1 - .../cli/__pycache__/__init__.cpython-35.pyc | Bin 138 -> 0 bytes .../cli/__pycache__/chardetect.cpython-35.pyc | Bin 2741 -> 0 bytes .../site-packages/chardet/cli/chardetect.py | 85 - .../chardet/codingstatemachine.py | 88 - .../python3.5/site-packages/chardet/compat.py | 34 - .../site-packages/chardet/cp949prober.py | 49 - .../python3.5/site-packages/chardet/enums.py | 76 - .../site-packages/chardet/escprober.py | 101 - .../python3.5/site-packages/chardet/escsm.py | 246 - .../site-packages/chardet/eucjpprober.py | 92 - .../site-packages/chardet/euckrfreq.py | 195 - .../site-packages/chardet/euckrprober.py | 47 - .../site-packages/chardet/euctwfreq.py | 387 - .../site-packages/chardet/euctwprober.py | 46 - .../site-packages/chardet/gb2312freq.py | 283 - .../site-packages/chardet/gb2312prober.py | 46 - .../site-packages/chardet/hebrewprober.py | 292 - .../site-packages/chardet/jisfreq.py | 325 - .../python3.5/site-packages/chardet/jpcntx.py | 233 - .../chardet/langbulgarianmodel.py | 228 - .../chardet/langcyrillicmodel.py | 333 - .../site-packages/chardet/langgreekmodel.py | 225 - .../site-packages/chardet/langhebrewmodel.py | 200 - .../chardet/langhungarianmodel.py | 225 - .../site-packages/chardet/langthaimodel.py | 199 - .../site-packages/chardet/langturkishmodel.py | 193 - .../site-packages/chardet/latin1prober.py | 145 - .../site-packages/chardet/mbcharsetprober.py | 91 - .../site-packages/chardet/mbcsgroupprober.py | 54 - .../python3.5/site-packages/chardet/mbcssm.py | 572 -- .../site-packages/chardet/sbcharsetprober.py | 132 - .../site-packages/chardet/sbcsgroupprober.py | 73 - .../site-packages/chardet/sjisprober.py | 92 - .../chardet/universaldetector.py | 286 - .../site-packages/chardet/utf8prober.py | 82 - .../site-packages/chardet/version.py | 9 - .../python3.5/site-packages/easy_install.py | 5 - .../idna-2.5.dist-info/DESCRIPTION.rst | 178 - .../idna-2.5.dist-info/INSTALLER | 1 - .../site-packages/idna-2.5.dist-info/METADATA | 204 - .../site-packages/idna-2.5.dist-info/RECORD | 22 - .../site-packages/idna-2.5.dist-info/WHEEL | 6 - .../idna-2.5.dist-info/metadata.json | 1 - .../site-packages/idna-2.5.dist-info/pbr.json | 1 - .../idna-2.5.dist-info/top_level.txt | 1 - .../python3.5/site-packages/idna/__init__.py | 1 - .../idna/__pycache__/__init__.cpython-35.pyc | Bin 151 -> 0 bytes .../idna/__pycache__/codec.cpython-35.pyc | Bin 3352 -> 0 bytes .../idna/__pycache__/compat.cpython-35.pyc | Bin 581 -> 0 bytes .../idna/__pycache__/core.cpython-35.pyc | Bin 9952 -> 0 bytes .../idna/__pycache__/idnadata.cpython-35.pyc | Bin 26453 -> 0 bytes .../idna/__pycache__/intranges.cpython-35.pyc | Bin 1863 -> 0 bytes .../idna/__pycache__/uts46data.cpython-35.pyc | Bin 230901 -> 0 bytes .../lib/python3.5/site-packages/idna/codec.py | 118 - .../python3.5/site-packages/idna/compat.py | 12 - .../lib/python3.5/site-packages/idna/core.py | 387 - .../python3.5/site-packages/idna/idnadata.py | 1584 ---- .../python3.5/site-packages/idna/intranges.py | 53 - .../python3.5/site-packages/idna/uts46data.py | 7633 ----------------- .../lxml-3.8.0.dist-info/DESCRIPTION.rst | 78 - .../lxml-3.8.0.dist-info/INSTALLER | 1 - .../lxml-3.8.0.dist-info/METADATA | 114 - .../site-packages/lxml-3.8.0.dist-info/RECORD | 155 - .../site-packages/lxml-3.8.0.dist-info/WHEEL | 5 - .../lxml-3.8.0.dist-info/metadata.json | 1 - .../lxml-3.8.0.dist-info/top_level.txt | 1 - .../site-packages/lxml/ElementInclude.py | 217 - .../python3.5/site-packages/lxml/__init__.py | 20 - .../__pycache__/ElementInclude.cpython-35.pyc | Bin 3681 -> 0 bytes .../lxml/__pycache__/__init__.cpython-35.pyc | Bin 668 -> 0 bytes .../__pycache__/_elementpath.cpython-35.pyc | Bin 6725 -> 0 bytes .../lxml/__pycache__/builder.cpython-35.pyc | Bin 6049 -> 0 bytes .../lxml/__pycache__/cssselect.cpython-35.pyc | Bin 3721 -> 0 bytes .../__pycache__/doctestcompare.cpython-35.pyc | Bin 15294 -> 0 bytes .../__pycache__/pyclasslookup.cpython-35.pyc | Bin 196 -> 0 bytes .../lxml/__pycache__/sax.cpython-35.pyc | Bin 8265 -> 0 bytes .../__pycache__/usedoctest.cpython-35.pyc | Bin 390 -> 0 bytes .../site-packages/lxml/_elementpath.py | 324 - .../python3.5/site-packages/lxml/builder.py | 234 - .../python3.5/site-packages/lxml/cssselect.py | 102 - .../site-packages/lxml/doctestcompare.py | 508 -- .../etree.cpython-35m-x86_64-linux-gnu.so | Bin 14109083 -> 0 bytes .../site-packages/lxml/html/ElementSoup.py | 10 - .../site-packages/lxml/html/__init__.py | 1921 ----- .../__pycache__/ElementSoup.cpython-35.pyc | Bin 500 -> 0 bytes .../html/__pycache__/__init__.cpython-35.pyc | Bin 59711 -> 0 bytes .../__pycache__/_diffcommand.cpython-35.pyc | Bin 2377 -> 0 bytes .../__pycache__/_html5builder.cpython-35.pyc | Bin 3789 -> 0 bytes .../html/__pycache__/_setmixin.cpython-35.pyc | Bin 2066 -> 0 bytes .../html/__pycache__/builder.cpython-35.pyc | Bin 3208 -> 0 bytes .../html/__pycache__/clean.cpython-35.pyc | Bin 17844 -> 0 bytes .../lxml/html/__pycache__/defs.cpython-35.pyc | Bin 3198 -> 0 bytes .../lxml/html/__pycache__/diff.cpython-35.pyc | Bin 26019 -> 0 bytes .../html/__pycache__/formfill.cpython-35.pyc | Bin 8259 -> 0 bytes .../__pycache__/html5parser.cpython-35.pyc | Bin 5924 -> 0 bytes .../__pycache__/soupparser.cpython-35.pyc | Bin 8538 -> 0 bytes .../__pycache__/usedoctest.cpython-35.pyc | Bin 416 -> 0 bytes .../site-packages/lxml/html/_diffcommand.py | 87 - .../site-packages/lxml/html/_html5builder.py | 100 - .../site-packages/lxml/html/_setmixin.py | 52 - .../site-packages/lxml/html/builder.py | 133 - .../site-packages/lxml/html/clean.py | 741 -- .../python3.5/site-packages/lxml/html/defs.py | 131 - .../python3.5/site-packages/lxml/html/diff.py | 881 -- .../site-packages/lxml/html/formfill.py | 299 - .../site-packages/lxml/html/html5parser.py | 214 - .../site-packages/lxml/html/soupparser.py | 310 - .../site-packages/lxml/html/usedoctest.py | 13 - .../site-packages/lxml/includes/__init__.py | 0 .../__pycache__/__init__.cpython-35.pyc | Bin 137 -> 0 bytes .../site-packages/lxml/includes/c14n.pxd | 26 - .../site-packages/lxml/includes/config.pxd | 3 - .../site-packages/lxml/includes/dtdvalid.pxd | 18 - .../site-packages/lxml/includes/etree_defs.h | 421 - .../lxml/includes/etreepublic.pxd | 237 - .../lxml/includes/htmlparser.pxd | 56 - .../lxml/includes/libexslt/exslt.h | 102 - .../lxml/includes/libexslt/exsltconfig.h | 73 - .../lxml/includes/libexslt/exsltexports.h | 140 - .../lxml/includes/libxml/DOCBparser.h | 96 - .../lxml/includes/libxml/HTMLparser.h | 306 - .../lxml/includes/libxml/HTMLtree.h | 147 - .../site-packages/lxml/includes/libxml/SAX.h | 173 - .../site-packages/lxml/includes/libxml/SAX2.h | 178 - .../site-packages/lxml/includes/libxml/c14n.h | 126 - .../lxml/includes/libxml/catalog.h | 182 - .../lxml/includes/libxml/chvalid.h | 230 - .../lxml/includes/libxml/debugXML.h | 217 - .../site-packages/lxml/includes/libxml/dict.h | 80 - .../lxml/includes/libxml/encoding.h | 240 - .../lxml/includes/libxml/entities.h | 151 - .../lxml/includes/libxml/globals.h | 509 -- .../site-packages/lxml/includes/libxml/hash.h | 233 - .../site-packages/lxml/includes/libxml/list.h | 137 - .../lxml/includes/libxml/nanoftp.h | 163 - .../lxml/includes/libxml/nanohttp.h | 81 - .../lxml/includes/libxml/parser.h | 1241 --- .../lxml/includes/libxml/parserInternals.h | 644 -- .../lxml/includes/libxml/relaxng.h | 217 - .../lxml/includes/libxml/schemasInternals.h | 958 --- .../lxml/includes/libxml/schematron.h | 142 - .../lxml/includes/libxml/threads.h | 84 - .../site-packages/lxml/includes/libxml/tree.h | 1311 --- .../site-packages/lxml/includes/libxml/uri.h | 94 - .../lxml/includes/libxml/valid.h | 458 - .../lxml/includes/libxml/xinclude.h | 129 - .../lxml/includes/libxml/xlink.h | 189 - .../lxml/includes/libxml/xmlIO.h | 366 - .../lxml/includes/libxml/xmlautomata.h | 146 - .../lxml/includes/libxml/xmlerror.h | 945 -- .../lxml/includes/libxml/xmlexports.h | 162 - .../lxml/includes/libxml/xmlmemory.h | 224 - .../lxml/includes/libxml/xmlmodule.h | 57 - .../lxml/includes/libxml/xmlreader.h | 428 - .../lxml/includes/libxml/xmlregexp.h | 222 - .../lxml/includes/libxml/xmlsave.h | 88 - .../lxml/includes/libxml/xmlschemas.h | 246 - .../lxml/includes/libxml/xmlschemastypes.h | 151 - .../lxml/includes/libxml/xmlstring.h | 140 - .../lxml/includes/libxml/xmlunicode.h | 202 - .../lxml/includes/libxml/xmlversion.h | 489 -- .../lxml/includes/libxml/xmlwriter.h | 488 -- .../lxml/includes/libxml/xpath.h | 557 -- .../lxml/includes/libxml/xpathInternals.h | 632 -- .../lxml/includes/libxml/xpointer.h | 114 - .../lxml/includes/libxslt/attributes.h | 38 - .../lxml/includes/libxslt/documents.h | 93 - .../lxml/includes/libxslt/extensions.h | 262 - .../lxml/includes/libxslt/extra.h | 80 - .../lxml/includes/libxslt/functions.h | 78 - .../lxml/includes/libxslt/imports.h | 75 - .../lxml/includes/libxslt/keys.h | 53 - .../lxml/includes/libxslt/namespaces.h | 68 - .../lxml/includes/libxslt/numbersInternals.h | 73 - .../lxml/includes/libxslt/pattern.h | 81 - .../lxml/includes/libxslt/preproc.h | 43 - .../lxml/includes/libxslt/security.h | 104 - .../lxml/includes/libxslt/templates.h | 77 - .../lxml/includes/libxslt/transform.h | 207 - .../lxml/includes/libxslt/variables.h | 91 - .../lxml/includes/libxslt/xslt.h | 110 - .../lxml/includes/libxslt/xsltInternals.h | 1972 ----- .../lxml/includes/libxslt/xsltconfig.h | 183 - .../lxml/includes/libxslt/xsltexports.h | 142 - .../lxml/includes/libxslt/xsltlocale.h | 67 - .../lxml/includes/libxslt/xsltutils.h | 313 - .../lxml/includes/lxml-version.h | 3 - .../site-packages/lxml/includes/relaxng.pxd | 64 - .../lxml/includes/schematron.pxd | 34 - .../site-packages/lxml/includes/tree.pxd | 477 - .../site-packages/lxml/includes/uri.pxd | 5 - .../site-packages/lxml/includes/xinclude.pxd | 22 - .../site-packages/lxml/includes/xmlerror.pxd | 851 -- .../site-packages/lxml/includes/xmlparser.pxd | 249 - .../site-packages/lxml/includes/xmlschema.pxd | 35 - .../site-packages/lxml/includes/xpath.pxd | 135 - .../site-packages/lxml/includes/xslt.pxd | 180 - .../lxml/isoschematron/__init__.py | 334 - .../__pycache__/__init__.cpython-35.pyc | Bin 10079 -> 0 bytes .../resources/rng/iso-schematron.rng | 622 -- .../resources/xsl/RNG2Schtrn.xsl | 75 - .../resources/xsl/XSD2Schtrn.xsl | 77 - .../iso_abstract_expand.xsl | 296 - .../iso-schematron-xslt1/iso_dsdl_include.xsl | 1160 --- .../iso_schematron_message.xsl | 55 - .../iso_schematron_skeleton_for_xslt1.xsl | 1796 ---- .../iso_svrl_for_xslt1.xsl | 588 -- .../xsl/iso-schematron-xslt1/readme.txt | 83 - .../python3.5/site-packages/lxml/lxml.etree.h | 220 - .../site-packages/lxml/lxml.etree_api.h | 233 - .../objectify.cpython-35m-x86_64-linux-gnu.so | Bin 5116090 -> 0 bytes .../site-packages/lxml/pyclasslookup.py | 3 - utils/lib/python3.5/site-packages/lxml/sax.py | 248 - .../site-packages/lxml/usedoctest.py | 13 - .../pip-9.0.1.dist-info/DESCRIPTION.rst | 39 - .../pip-9.0.1.dist-info/INSTALLER | 1 - .../pip-9.0.1.dist-info/METADATA | 69 - .../site-packages/pip-9.0.1.dist-info/RECORD | 501 -- .../site-packages/pip-9.0.1.dist-info/WHEEL | 6 - .../pip-9.0.1.dist-info/entry_points.txt | 5 - .../pip-9.0.1.dist-info/metadata.json | 1 - .../pip-9.0.1.dist-info/top_level.txt | 1 - .../python3.5/site-packages/pip/__init__.py | 331 - .../python3.5/site-packages/pip/__main__.py | 19 - .../pip/__pycache__/__init__.cpython-35.pyc | Bin 9242 -> 0 bytes .../pip/__pycache__/__main__.cpython-35.pyc | Bin 418 -> 0 bytes .../__pycache__/basecommand.cpython-35.pyc | Bin 7884 -> 0 bytes .../pip/__pycache__/baseparser.cpython-35.pyc | Bin 10000 -> 0 bytes .../pip/__pycache__/cmdoptions.cpython-35.pyc | Bin 13899 -> 0 bytes .../pip/__pycache__/download.cpython-35.pyc | Bin 22225 -> 0 bytes .../pip/__pycache__/exceptions.cpython-35.pyc | Bin 10965 -> 0 bytes .../pip/__pycache__/index.cpython-35.pyc | Bin 32608 -> 0 bytes .../pip/__pycache__/locations.cpython-35.pyc | Bin 4287 -> 0 bytes .../pip/__pycache__/pep425tags.cpython-35.pyc | Bin 8206 -> 0 bytes .../__pycache__/status_codes.cpython-35.pyc | Bin 354 -> 0 bytes .../pip/__pycache__/wheel.cpython-35.pyc | Bin 23734 -> 0 bytes .../site-packages/pip/_vendor/__init__.py | 107 - .../__pycache__/__init__.cpython-35.pyc | Bin 2911 -> 0 bytes .../__pycache__/appdirs.cpython-35.pyc | Bin 19660 -> 0 bytes .../_vendor/__pycache__/distro.cpython-35.pyc | Bin 33672 -> 0 bytes .../__pycache__/ipaddress.cpython-35.pyc | Bin 70596 -> 0 bytes .../__pycache__/ordereddict.cpython-35.pyc | Bin 3883 -> 0 bytes .../__pycache__/pyparsing.cpython-35.pyc | Bin 212217 -> 0 bytes .../__pycache__/re-vendor.cpython-35.pyc | Bin 1174 -> 0 bytes .../__pycache__/retrying.cpython-35.pyc | Bin 8695 -> 0 bytes .../_vendor/__pycache__/six.cpython-35.pyc | Bin 26349 -> 0 bytes .../site-packages/pip/_vendor/appdirs.py | 552 -- .../pip/_vendor/cachecontrol/__init__.py | 11 - .../__pycache__/__init__.cpython-35.pyc | Bin 520 -> 0 bytes .../__pycache__/_cmd.cpython-35.pyc | Bin 1632 -> 0 bytes .../__pycache__/adapter.cpython-35.pyc | Bin 3080 -> 0 bytes .../__pycache__/cache.cpython-35.pyc | Bin 1803 -> 0 bytes .../__pycache__/compat.cpython-35.pyc | Bin 594 -> 0 bytes .../__pycache__/controller.cpython-35.pyc | Bin 8433 -> 0 bytes .../__pycache__/filewrapper.cpython-35.pyc | Bin 2224 -> 0 bytes .../__pycache__/heuristics.cpython-35.pyc | Bin 4936 -> 0 bytes .../__pycache__/serialize.cpython-35.pyc | Bin 4859 -> 0 bytes .../__pycache__/wrapper.cpython-35.pyc | Bin 560 -> 0 bytes .../pip/_vendor/cachecontrol/_cmd.py | 60 - .../pip/_vendor/cachecontrol/adapter.py | 125 - .../pip/_vendor/cachecontrol/cache.py | 39 - .../_vendor/cachecontrol/caches/__init__.py | 18 - .../__pycache__/__init__.cpython-35.pyc | Bin 577 -> 0 bytes .../__pycache__/file_cache.cpython-35.pyc | Bin 2986 -> 0 bytes .../__pycache__/redis_cache.cpython-35.pyc | Bin 1762 -> 0 bytes .../_vendor/cachecontrol/caches/file_cache.py | 116 - .../cachecontrol/caches/redis_cache.py | 41 - .../pip/_vendor/cachecontrol/compat.py | 20 - .../pip/_vendor/cachecontrol/controller.py | 353 - .../pip/_vendor/cachecontrol/filewrapper.py | 78 - .../pip/_vendor/cachecontrol/heuristics.py | 138 - .../pip/_vendor/cachecontrol/serialize.py | 196 - .../pip/_vendor/cachecontrol/wrapper.py | 21 - .../pip/_vendor/colorama/__init__.py | 7 - .../__pycache__/__init__.cpython-35.pyc | Bin 420 -> 0 bytes .../colorama/__pycache__/ansi.cpython-35.pyc | Bin 3473 -> 0 bytes .../__pycache__/ansitowin32.cpython-35.pyc | Bin 7868 -> 0 bytes .../__pycache__/initialise.cpython-35.pyc | Bin 1791 -> 0 bytes .../colorama/__pycache__/win32.cpython-35.pyc | Bin 3968 -> 0 bytes .../__pycache__/winterm.cpython-35.pyc | Bin 4944 -> 0 bytes .../pip/_vendor/colorama/ansi.py | 102 - .../pip/_vendor/colorama/ansitowin32.py | 236 - .../pip/_vendor/colorama/initialise.py | 82 - .../pip/_vendor/colorama/win32.py | 154 - .../pip/_vendor/colorama/winterm.py | 162 - .../pip/_vendor/distlib/__init__.py | 23 - .../__pycache__/__init__.cpython-35.pyc | Bin 1046 -> 0 bytes .../distlib/__pycache__/compat.cpython-35.pyc | Bin 34494 -> 0 bytes .../__pycache__/database.cpython-35.pyc | Bin 44873 -> 0 bytes .../distlib/__pycache__/index.cpython-35.pyc | Bin 18371 -> 0 bytes .../__pycache__/locators.cpython-35.pyc | Bin 41455 -> 0 bytes .../__pycache__/manifest.cpython-35.pyc | Bin 11134 -> 0 bytes .../__pycache__/markers.cpython-35.pyc | Bin 6533 -> 0 bytes .../__pycache__/metadata.cpython-35.pyc | Bin 29389 -> 0 bytes .../__pycache__/resources.cpython-35.pyc | Bin 11778 -> 0 bytes .../__pycache__/scripts.cpython-35.pyc | Bin 10934 -> 0 bytes .../distlib/__pycache__/util.cpython-35.pyc | Bin 48832 -> 0 bytes .../__pycache__/version.cpython-35.pyc | Bin 22965 -> 0 bytes .../distlib/__pycache__/wheel.cpython-35.pyc | Bin 27835 -> 0 bytes .../pip/_vendor/distlib/_backport/__init__.py | 6 - .../__pycache__/__init__.cpython-35.pyc | Bin 436 -> 0 bytes .../_backport/__pycache__/misc.cpython-35.pyc | Bin 1107 -> 0 bytes .../__pycache__/shutil.cpython-35.pyc | Bin 22901 -> 0 bytes .../__pycache__/sysconfig.cpython-35.pyc | Bin 17552 -> 0 bytes .../__pycache__/tarfile.cpython-35.pyc | Bin 68944 -> 0 bytes .../pip/_vendor/distlib/_backport/misc.py | 41 - .../pip/_vendor/distlib/_backport/shutil.py | 761 -- .../_vendor/distlib/_backport/sysconfig.cfg | 84 - .../_vendor/distlib/_backport/sysconfig.py | 788 -- .../pip/_vendor/distlib/_backport/tarfile.py | 2607 ------ .../pip/_vendor/distlib/compat.py | 1111 --- .../pip/_vendor/distlib/database.py | 1312 --- .../pip/_vendor/distlib/index.py | 515 -- .../pip/_vendor/distlib/locators.py | 1283 --- .../pip/_vendor/distlib/manifest.py | 393 - .../pip/_vendor/distlib/markers.py | 190 - .../pip/_vendor/distlib/metadata.py | 1068 --- .../pip/_vendor/distlib/resources.py | 355 - .../pip/_vendor/distlib/scripts.py | 384 - .../site-packages/pip/_vendor/distlib/t32.exe | Bin 89088 -> 0 bytes .../site-packages/pip/_vendor/distlib/t64.exe | Bin 97792 -> 0 bytes .../site-packages/pip/_vendor/distlib/util.py | 1611 ---- .../pip/_vendor/distlib/version.py | 742 -- .../site-packages/pip/_vendor/distlib/w32.exe | Bin 85504 -> 0 bytes .../site-packages/pip/_vendor/distlib/w64.exe | Bin 94208 -> 0 bytes .../pip/_vendor/distlib/wheel.py | 978 --- .../site-packages/pip/_vendor/distro.py | 1081 --- .../pip/_vendor/html5lib/__init__.py | 25 - .../__pycache__/__init__.cpython-35.pyc | Bin 953 -> 0 bytes .../__pycache__/_ihatexml.cpython-35.pyc | Bin 14433 -> 0 bytes .../__pycache__/_inputstream.cpython-35.pyc | Bin 24856 -> 0 bytes .../__pycache__/_tokenizer.cpython-35.pyc | Bin 47749 -> 0 bytes .../__pycache__/_utils.cpython-35.pyc | Bin 3608 -> 0 bytes .../__pycache__/constants.cpython-35.pyc | Bin 72202 -> 0 bytes .../__pycache__/html5parser.cpython-35.pyc | Bin 106003 -> 0 bytes .../__pycache__/serializer.cpython-35.pyc | Bin 10055 -> 0 bytes .../pip/_vendor/html5lib/_ihatexml.py | 288 - .../pip/_vendor/html5lib/_inputstream.py | 923 -- .../pip/_vendor/html5lib/_tokenizer.py | 1721 ---- .../pip/_vendor/html5lib/_trie/__init__.py | 14 - .../_trie/__pycache__/__init__.cpython-35.pyc | Bin 395 -> 0 bytes .../_trie/__pycache__/_base.cpython-35.pyc | Bin 1556 -> 0 bytes .../_trie/__pycache__/datrie.cpython-35.pyc | Bin 2109 -> 0 bytes .../_trie/__pycache__/py.cpython-35.pyc | Bin 2400 -> 0 bytes .../pip/_vendor/html5lib/_trie/_base.py | 38 - .../pip/_vendor/html5lib/_trie/datrie.py | 44 - .../pip/_vendor/html5lib/_trie/py.py | 67 - .../pip/_vendor/html5lib/_utils.py | 127 - .../pip/_vendor/html5lib/constants.py | 2945 ------- .../pip/_vendor/html5lib/filters/__init__.py | 0 .../__pycache__/__init__.cpython-35.pyc | Bin 151 -> 0 bytes .../alphabeticalattributes.cpython-35.pyc | Bin 1084 -> 0 bytes .../filters/__pycache__/base.cpython-35.pyc | Bin 841 -> 0 bytes .../inject_meta_charset.cpython-35.pyc | Bin 1808 -> 0 bytes .../filters/__pycache__/lint.cpython-35.pyc | Bin 2606 -> 0 bytes .../__pycache__/optionaltags.cpython-35.pyc | Bin 3276 -> 0 bytes .../__pycache__/sanitizer.cpython-35.pyc | Bin 18605 -> 0 bytes .../__pycache__/whitespace.cpython-35.pyc | Bin 1342 -> 0 bytes .../filters/alphabeticalattributes.py | 20 - .../pip/_vendor/html5lib/filters/base.py | 12 - .../html5lib/filters/inject_meta_charset.py | 65 - .../pip/_vendor/html5lib/filters/lint.py | 81 - .../_vendor/html5lib/filters/optionaltags.py | 206 - .../pip/_vendor/html5lib/filters/sanitizer.py | 865 -- .../_vendor/html5lib/filters/whitespace.py | 38 - .../pip/_vendor/html5lib/html5parser.py | 2733 ------ .../pip/_vendor/html5lib/serializer.py | 334 - .../_vendor/html5lib/treeadapters/__init__.py | 12 - .../__pycache__/__init__.cpython-35.pyc | Bin 427 -> 0 bytes .../__pycache__/genshi.cpython-35.pyc | Bin 1621 -> 0 bytes .../__pycache__/sax.cpython-35.pyc | Bin 1466 -> 0 bytes .../_vendor/html5lib/treeadapters/genshi.py | 47 - .../pip/_vendor/html5lib/treeadapters/sax.py | 44 - .../_vendor/html5lib/treebuilders/__init__.py | 76 - .../__pycache__/__init__.cpython-35.pyc | Bin 3168 -> 0 bytes .../__pycache__/base.cpython-35.pyc | Bin 11930 -> 0 bytes .../__pycache__/dom.cpython-35.pyc | Bin 9998 -> 0 bytes .../__pycache__/etree.cpython-35.pyc | Bin 12956 -> 0 bytes .../__pycache__/etree_lxml.cpython-35.pyc | Bin 12922 -> 0 bytes .../pip/_vendor/html5lib/treebuilders/base.py | 383 - .../pip/_vendor/html5lib/treebuilders/dom.py | 236 - .../_vendor/html5lib/treebuilders/etree.py | 340 - .../html5lib/treebuilders/etree_lxml.py | 367 - .../_vendor/html5lib/treewalkers/__init__.py | 143 - .../__pycache__/__init__.cpython-35.pyc | Bin 4052 -> 0 bytes .../__pycache__/base.cpython-35.pyc | Bin 4936 -> 0 bytes .../__pycache__/dom.cpython-35.pyc | Bin 1819 -> 0 bytes .../__pycache__/etree.cpython-35.pyc | Bin 3996 -> 0 bytes .../__pycache__/etree_lxml.cpython-35.pyc | Bin 7253 -> 0 bytes .../__pycache__/genshi.cpython-35.pyc | Bin 2063 -> 0 bytes .../pip/_vendor/html5lib/treewalkers/base.py | 150 - .../pip/_vendor/html5lib/treewalkers/dom.py | 43 - .../pip/_vendor/html5lib/treewalkers/etree.py | 137 - .../html5lib/treewalkers/etree_lxml.py | 213 - .../_vendor/html5lib/treewalkers/genshi.py | 69 - .../site-packages/pip/_vendor/ipaddress.py | 2425 ------ .../pip/_vendor/lockfile/__init__.py | 347 - .../__pycache__/__init__.cpython-35.pyc | Bin 10292 -> 0 bytes .../__pycache__/linklockfile.cpython-35.pyc | Bin 2441 -> 0 bytes .../__pycache__/mkdirlockfile.cpython-35.pyc | Bin 2859 -> 0 bytes .../__pycache__/pidlockfile.cpython-35.pyc | Bin 5073 -> 0 bytes .../__pycache__/sqlitelockfile.cpython-35.pyc | Bin 4057 -> 0 bytes .../symlinklockfile.cpython-35.pyc | Bin 2316 -> 0 bytes .../pip/_vendor/lockfile/linklockfile.py | 73 - .../pip/_vendor/lockfile/mkdirlockfile.py | 84 - .../pip/_vendor/lockfile/pidlockfile.py | 190 - .../pip/_vendor/lockfile/sqlitelockfile.py | 156 - .../pip/_vendor/lockfile/symlinklockfile.py | 70 - .../site-packages/pip/_vendor/ordereddict.py | 127 - .../pip/_vendor/packaging/__about__.py | 21 - .../pip/_vendor/packaging/__init__.py | 14 - .../__pycache__/__about__.cpython-35.pyc | Bin 704 -> 0 bytes .../__pycache__/__init__.cpython-35.pyc | Bin 544 -> 0 bytes .../__pycache__/_compat.cpython-35.pyc | Bin 1020 -> 0 bytes .../__pycache__/_structures.cpython-35.pyc | Bin 2940 -> 0 bytes .../__pycache__/markers.cpython-35.pyc | Bin 9515 -> 0 bytes .../__pycache__/requirements.cpython-35.pyc | Bin 4222 -> 0 bytes .../__pycache__/specifiers.cpython-35.pyc | Bin 21140 -> 0 bytes .../__pycache__/utils.cpython-35.pyc | Bin 466 -> 0 bytes .../__pycache__/version.cpython-35.pyc | Bin 11420 -> 0 bytes .../pip/_vendor/packaging/_compat.py | 30 - .../pip/_vendor/packaging/_structures.py | 68 - .../pip/_vendor/packaging/markers.py | 303 - .../pip/_vendor/packaging/requirements.py | 129 - .../pip/_vendor/packaging/specifiers.py | 774 -- .../pip/_vendor/packaging/utils.py | 14 - .../pip/_vendor/packaging/version.py | 393 - .../pip/_vendor/pkg_resources/__init__.py | 3052 ------- .../__pycache__/__init__.cpython-35.pyc | Bin 101607 -> 0 bytes .../pip/_vendor/progress/__init__.py | 123 - .../__pycache__/__init__.cpython-35.pyc | Bin 4046 -> 0 bytes .../progress/__pycache__/bar.cpython-35.pyc | Bin 2632 -> 0 bytes .../__pycache__/counter.cpython-35.pyc | Bin 1645 -> 0 bytes .../__pycache__/helpers.cpython-35.pyc | Bin 3148 -> 0 bytes .../__pycache__/spinner.cpython-35.pyc | Bin 1270 -> 0 bytes .../site-packages/pip/_vendor/progress/bar.py | 83 - .../pip/_vendor/progress/counter.py | 47 - .../pip/_vendor/progress/helpers.py | 91 - .../pip/_vendor/progress/spinner.py | 40 - .../site-packages/pip/_vendor/pyparsing.py | 5696 ------------ .../site-packages/pip/_vendor/re-vendor.py | 34 - .../pip/_vendor/requests/__init__.py | 88 - .../__pycache__/__init__.cpython-35.pyc | Bin 2405 -> 0 bytes .../__pycache__/adapters.cpython-35.pyc | Bin 16644 -> 0 bytes .../requests/__pycache__/api.cpython-35.pyc | Bin 6048 -> 0 bytes .../requests/__pycache__/auth.cpython-35.pyc | Bin 7775 -> 0 bytes .../requests/__pycache__/certs.cpython-35.pyc | Bin 804 -> 0 bytes .../__pycache__/compat.cpython-35.pyc | Bin 1510 -> 0 bytes .../__pycache__/cookies.cpython-35.pyc | Bin 19450 -> 0 bytes .../__pycache__/exceptions.cpython-35.pyc | Bin 5111 -> 0 bytes .../requests/__pycache__/hooks.cpython-35.pyc | Bin 1003 -> 0 bytes .../__pycache__/models.cpython-35.pyc | Bin 23757 -> 0 bytes .../__pycache__/sessions.cpython-35.pyc | Bin 19197 -> 0 bytes .../__pycache__/status_codes.cpython-35.pyc | Bin 3908 -> 0 bytes .../__pycache__/structures.cpython-35.pyc | Bin 4528 -> 0 bytes .../requests/__pycache__/utils.cpython-35.pyc | Bin 20041 -> 0 bytes .../pip/_vendor/requests/adapters.py | 503 -- .../site-packages/pip/_vendor/requests/api.py | 148 - .../pip/_vendor/requests/auth.py | 252 - .../pip/_vendor/requests/cacert.pem | 5616 ------------ .../pip/_vendor/requests/certs.py | 25 - .../pip/_vendor/requests/compat.py | 68 - .../pip/_vendor/requests/cookies.py | 540 -- .../pip/_vendor/requests/exceptions.py | 114 - .../pip/_vendor/requests/hooks.py | 34 - .../pip/_vendor/requests/models.py | 873 -- .../pip/_vendor/requests/packages/__init__.py | 36 - .../__pycache__/__init__.cpython-35.pyc | Bin 1584 -> 0 bytes .../requests/packages/chardet/__init__.py | 32 - .../__pycache__/__init__.cpython-35.pyc | Bin 694 -> 0 bytes .../__pycache__/big5freq.cpython-35.pyc | Bin 113792 -> 0 bytes .../__pycache__/big5prober.cpython-35.pyc | Bin 957 -> 0 bytes .../__pycache__/chardetect.cpython-35.pyc | Bin 2640 -> 0 bytes .../chardistribution.cpython-35.pyc | Bin 6571 -> 0 bytes .../charsetgroupprober.cpython-35.pyc | Bin 2178 -> 0 bytes .../__pycache__/charsetprober.cpython-35.pyc | Bin 1798 -> 0 bytes .../codingstatemachine.cpython-35.pyc | Bin 1526 -> 0 bytes .../chardet/__pycache__/compat.cpython-35.pyc | Bin 489 -> 0 bytes .../__pycache__/constants.cpython-35.pyc | Bin 326 -> 0 bytes .../__pycache__/cp949prober.cpython-35.pyc | Bin 964 -> 0 bytes .../__pycache__/escprober.cpython-35.pyc | Bin 2060 -> 0 bytes .../chardet/__pycache__/escsm.cpython-35.pyc | Bin 7200 -> 0 bytes .../__pycache__/eucjpprober.cpython-35.pyc | Bin 2413 -> 0 bytes .../__pycache__/euckrfreq.cpython-35.pyc | Bin 88783 -> 0 bytes .../__pycache__/euckrprober.cpython-35.pyc | Bin 965 -> 0 bytes .../__pycache__/euctwfreq.cpython-35.pyc | Bin 61181 -> 0 bytes .../__pycache__/euctwprober.cpython-35.pyc | Bin 965 -> 0 bytes .../__pycache__/gb2312freq.cpython-35.pyc | Bin 68799 -> 0 bytes .../__pycache__/gb2312prober.cpython-35.pyc | Bin 971 -> 0 bytes .../__pycache__/hebrewprober.cpython-35.pyc | Bin 2947 -> 0 bytes .../__pycache__/jisfreq.cpython-35.pyc | Bin 84015 -> 0 bytes .../chardet/__pycache__/jpcntx.cpython-35.pyc | Bin 24675 -> 0 bytes .../langbulgarianmodel.cpython-35.pyc | Bin 24844 -> 0 bytes .../langcyrillicmodel.cpython-35.pyc | Bin 30462 -> 0 bytes .../__pycache__/langgreekmodel.cpython-35.pyc | Bin 24531 -> 0 bytes .../langhebrewmodel.cpython-35.pyc | Bin 23367 -> 0 bytes .../langhungarianmodel.cpython-35.pyc | Bin 24829 -> 0 bytes .../__pycache__/langthaimodel.cpython-35.pyc | Bin 23353 -> 0 bytes .../__pycache__/latin1prober.cpython-35.pyc | Bin 3133 -> 0 bytes .../mbcharsetprober.cpython-35.pyc | Bin 2111 -> 0 bytes .../mbcsgroupprober.cpython-35.pyc | Bin 1094 -> 0 bytes .../chardet/__pycache__/mbcssm.cpython-35.pyc | Bin 17419 -> 0 bytes .../sbcharsetprober.cpython-35.pyc | Bin 2917 -> 0 bytes .../sbcsgroupprober.cpython-35.pyc | Bin 1723 -> 0 bytes .../__pycache__/sjisprober.cpython-35.pyc | Bin 2447 -> 0 bytes .../universaldetector.cpython-35.pyc | Bin 3664 -> 0 bytes .../__pycache__/utf8prober.cpython-35.pyc | Bin 1882 -> 0 bytes .../requests/packages/chardet/big5freq.py | 925 -- .../requests/packages/chardet/big5prober.py | 42 - .../requests/packages/chardet/chardetect.py | 80 - .../packages/chardet/chardistribution.py | 231 - .../packages/chardet/charsetgroupprober.py | 106 - .../packages/chardet/charsetprober.py | 62 - .../packages/chardet/codingstatemachine.py | 61 - .../requests/packages/chardet/compat.py | 34 - .../requests/packages/chardet/constants.py | 39 - .../requests/packages/chardet/cp949prober.py | 44 - .../requests/packages/chardet/escprober.py | 86 - .../requests/packages/chardet/escsm.py | 242 - .../requests/packages/chardet/eucjpprober.py | 90 - .../requests/packages/chardet/euckrfreq.py | 596 -- .../requests/packages/chardet/euckrprober.py | 42 - .../requests/packages/chardet/euctwfreq.py | 428 - .../requests/packages/chardet/euctwprober.py | 41 - .../requests/packages/chardet/gb2312freq.py | 472 - .../requests/packages/chardet/gb2312prober.py | 41 - .../requests/packages/chardet/hebrewprober.py | 283 - .../requests/packages/chardet/jisfreq.py | 569 -- .../requests/packages/chardet/jpcntx.py | 227 - .../packages/chardet/langbulgarianmodel.py | 229 - .../packages/chardet/langcyrillicmodel.py | 329 - .../packages/chardet/langgreekmodel.py | 225 - .../packages/chardet/langhebrewmodel.py | 201 - .../packages/chardet/langhungarianmodel.py | 225 - .../packages/chardet/langthaimodel.py | 200 - .../requests/packages/chardet/latin1prober.py | 139 - .../packages/chardet/mbcharsetprober.py | 86 - .../packages/chardet/mbcsgroupprober.py | 54 - .../requests/packages/chardet/mbcssm.py | 572 -- .../packages/chardet/sbcharsetprober.py | 120 - .../packages/chardet/sbcsgroupprober.py | 69 - .../requests/packages/chardet/sjisprober.py | 91 - .../packages/chardet/universaldetector.py | 170 - .../requests/packages/chardet/utf8prober.py | 76 - .../requests/packages/urllib3/__init__.py | 96 - .../__pycache__/__init__.cpython-35.pyc | Bin 2632 -> 0 bytes .../__pycache__/_collections.cpython-35.pyc | Bin 11246 -> 0 bytes .../__pycache__/connection.cpython-35.pyc | Bin 9098 -> 0 bytes .../__pycache__/connectionpool.cpython-35.pyc | Bin 23953 -> 0 bytes .../__pycache__/exceptions.cpython-35.pyc | Bin 9335 -> 0 bytes .../urllib3/__pycache__/fields.cpython-35.pyc | Bin 6110 -> 0 bytes .../__pycache__/filepost.cpython-35.pyc | Bin 2809 -> 0 bytes .../__pycache__/poolmanager.cpython-35.pyc | Bin 11377 -> 0 bytes .../__pycache__/request.cpython-35.pyc | Bin 5742 -> 0 bytes .../__pycache__/response.cpython-35.pyc | Bin 14757 -> 0 bytes .../requests/packages/urllib3/_collections.py | 324 - .../requests/packages/urllib3/connection.py | 330 - .../packages/urllib3/connectionpool.py | 866 -- .../packages/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-35.pyc | Bin 168 -> 0 bytes .../__pycache__/appengine.cpython-35.pyc | Bin 7103 -> 0 bytes .../__pycache__/ntlmpool.cpython-35.pyc | Bin 3543 -> 0 bytes .../__pycache__/pyopenssl.cpython-35.pyc | Bin 10891 -> 0 bytes .../contrib/__pycache__/socks.cpython-35.pyc | Bin 4763 -> 0 bytes .../packages/urllib3/contrib/appengine.py | 231 - .../packages/urllib3/contrib/ntlmpool.py | 115 - .../packages/urllib3/contrib/pyopenssl.py | 358 - .../packages/urllib3/contrib/socks.py | 172 - .../requests/packages/urllib3/exceptions.py | 209 - .../requests/packages/urllib3/fields.py | 178 - .../requests/packages/urllib3/filepost.py | 94 - .../packages/urllib3/packages/__init__.py | 5 - .../__pycache__/__init__.cpython-35.pyc | Bin 304 -> 0 bytes .../__pycache__/ordered_dict.cpython-35.pyc | Bin 8886 -> 0 bytes .../packages/__pycache__/six.cpython-35.pyc | Bin 26384 -> 0 bytes .../packages/urllib3/packages/ordered_dict.py | 259 - .../requests/packages/urllib3/packages/six.py | 868 -- .../packages/ssl_match_hostname/__init__.py | 13 - .../__pycache__/__init__.cpython-35.pyc | Bin 473 -> 0 bytes .../_implementation.cpython-35.pyc | Bin 2487 -> 0 bytes .../ssl_match_hostname/_implementation.py | 105 - .../requests/packages/urllib3/poolmanager.py | 367 - .../requests/packages/urllib3/request.py | 151 - .../requests/packages/urllib3/response.py | 530 -- .../packages/urllib3/util/__init__.py | 46 - .../util/__pycache__/__init__.cpython-35.pyc | Bin 1020 -> 0 bytes .../__pycache__/connection.cpython-35.pyc | Bin 3486 -> 0 bytes .../util/__pycache__/request.cpython-35.pyc | Bin 2036 -> 0 bytes .../util/__pycache__/response.cpython-35.pyc | Bin 1915 -> 0 bytes .../util/__pycache__/retry.cpython-35.pyc | Bin 9601 -> 0 bytes .../util/__pycache__/ssl_.cpython-35.pyc | Bin 9235 -> 0 bytes .../util/__pycache__/timeout.cpython-35.pyc | Bin 9015 -> 0 bytes .../util/__pycache__/url.cpython-35.pyc | Bin 5267 -> 0 bytes .../packages/urllib3/util/connection.py | 144 - .../requests/packages/urllib3/util/request.py | 72 - .../packages/urllib3/util/response.py | 74 - .../requests/packages/urllib3/util/retry.py | 300 - .../requests/packages/urllib3/util/ssl_.py | 320 - .../requests/packages/urllib3/util/timeout.py | 242 - .../requests/packages/urllib3/util/url.py | 217 - .../pip/_vendor/requests/sessions.py | 712 -- .../pip/_vendor/requests/status_codes.py | 91 - .../pip/_vendor/requests/structures.py | 105 - .../pip/_vendor/requests/utils.py | 817 -- .../site-packages/pip/_vendor/retrying.py | 267 - .../site-packages/pip/_vendor/six.py | 868 -- .../pip/_vendor/webencodings/__init__.py | 342 - .../__pycache__/__init__.cpython-35.pyc | Bin 10055 -> 0 bytes .../__pycache__/labels.cpython-35.pyc | Bin 4435 -> 0 bytes .../__pycache__/mklabels.cpython-35.pyc | Bin 1981 -> 0 bytes .../__pycache__/tests.cpython-35.pyc | Bin 5946 -> 0 bytes .../__pycache__/x_user_defined.cpython-35.pyc | Bin 2741 -> 0 bytes .../pip/_vendor/webencodings/labels.py | 231 - .../pip/_vendor/webencodings/mklabels.py | 59 - .../pip/_vendor/webencodings/tests.py | 153 - .../_vendor/webencodings/x_user_defined.py | 325 - .../site-packages/pip/basecommand.py | 337 - .../python3.5/site-packages/pip/baseparser.py | 293 - .../python3.5/site-packages/pip/cmdoptions.py | 633 -- .../site-packages/pip/commands/__init__.py | 86 - .../__pycache__/__init__.cpython-35.pyc | Bin 2200 -> 0 bytes .../commands/__pycache__/check.cpython-35.pyc | Bin 1378 -> 0 bytes .../__pycache__/completion.cpython-35.pyc | Bin 2744 -> 0 bytes .../__pycache__/download.cpython-35.pyc | Bin 5803 -> 0 bytes .../__pycache__/freeze.cpython-35.pyc | Bin 2764 -> 0 bytes .../commands/__pycache__/hash.cpython-35.pyc | Bin 2052 -> 0 bytes .../commands/__pycache__/help.cpython-35.pyc | Bin 1150 -> 0 bytes .../__pycache__/install.cpython-35.pyc | Bin 10588 -> 0 bytes .../commands/__pycache__/list.cpython-35.pyc | Bin 10495 -> 0 bytes .../__pycache__/search.cpython-35.pyc | Bin 4491 -> 0 bytes .../commands/__pycache__/show.cpython-35.pyc | Bin 5858 -> 0 bytes .../__pycache__/uninstall.cpython-35.pyc | Bin 2697 -> 0 bytes .../commands/__pycache__/wheel.cpython-35.pyc | Bin 5780 -> 0 bytes .../site-packages/pip/commands/check.py | 39 - .../site-packages/pip/commands/completion.py | 81 - .../site-packages/pip/commands/download.py | 212 - .../site-packages/pip/commands/freeze.py | 87 - .../site-packages/pip/commands/hash.py | 57 - .../site-packages/pip/commands/help.py | 35 - .../site-packages/pip/commands/install.py | 437 - .../site-packages/pip/commands/list.py | 337 - .../site-packages/pip/commands/search.py | 133 - .../site-packages/pip/commands/show.py | 154 - .../site-packages/pip/commands/uninstall.py | 76 - .../site-packages/pip/commands/wheel.py | 208 - .../site-packages/pip/compat/__init__.py | 164 - .../__pycache__/__init__.cpython-35.pyc | Bin 4278 -> 0 bytes .../__pycache__/dictconfig.cpython-35.pyc | Bin 15022 -> 0 bytes .../site-packages/pip/compat/dictconfig.py | 565 -- .../python3.5/site-packages/pip/download.py | 906 -- .../python3.5/site-packages/pip/exceptions.py | 244 - .../lib/python3.5/site-packages/pip/index.py | 1102 --- .../python3.5/site-packages/pip/locations.py | 182 - .../site-packages/pip/models/__init__.py | 4 - .../__pycache__/__init__.cpython-35.pyc | Bin 233 -> 0 bytes .../models/__pycache__/index.cpython-35.pyc | Bin 886 -> 0 bytes .../site-packages/pip/models/index.py | 16 - .../site-packages/pip/operations/__init__.py | 0 .../__pycache__/__init__.cpython-35.pyc | Bin 137 -> 0 bytes .../__pycache__/check.cpython-35.pyc | Bin 1529 -> 0 bytes .../__pycache__/freeze.cpython-35.pyc | Bin 3122 -> 0 bytes .../site-packages/pip/operations/check.py | 49 - .../site-packages/pip/operations/freeze.py | 132 - .../python3.5/site-packages/pip/pep425tags.py | 324 - .../site-packages/pip/req/__init__.py | 10 - .../req/__pycache__/__init__.cpython-35.pyc | Bin 428 -> 0 bytes .../req/__pycache__/req_file.cpython-35.pyc | Bin 9084 -> 0 bytes .../__pycache__/req_install.cpython-35.pyc | Bin 33203 -> 0 bytes .../req/__pycache__/req_set.cpython-35.pyc | Bin 22459 -> 0 bytes .../__pycache__/req_uninstall.cpython-35.pyc | Bin 6840 -> 0 bytes .../site-packages/pip/req/req_file.py | 342 - .../site-packages/pip/req/req_install.py | 1204 --- .../site-packages/pip/req/req_set.py | 798 -- .../site-packages/pip/req/req_uninstall.py | 195 - .../site-packages/pip/status_codes.py | 8 - .../site-packages/pip/utils/__init__.py | 852 -- .../utils/__pycache__/__init__.cpython-35.pyc | Bin 23932 -> 0 bytes .../utils/__pycache__/appdirs.cpython-35.pyc | Bin 8071 -> 0 bytes .../utils/__pycache__/build.cpython-35.pyc | Bin 1411 -> 0 bytes .../__pycache__/deprecation.cpython-35.pyc | Bin 1865 -> 0 bytes .../utils/__pycache__/encoding.cpython-35.pyc | Bin 1124 -> 0 bytes .../__pycache__/filesystem.cpython-35.pyc | Bin 645 -> 0 bytes .../utils/__pycache__/glibc.cpython-35.pyc | Bin 1480 -> 0 bytes .../utils/__pycache__/hashes.cpython-35.pyc | Bin 3412 -> 0 bytes .../utils/__pycache__/logging.cpython-35.pyc | Bin 4186 -> 0 bytes .../utils/__pycache__/outdated.cpython-35.pyc | Bin 4575 -> 0 bytes .../__pycache__/packaging.cpython-35.pyc | Bin 2141 -> 0 bytes .../setuptools_build.cpython-35.pyc | Bin 329 -> 0 bytes .../pip/utils/__pycache__/ui.cpython-35.pyc | Bin 10254 -> 0 bytes .../site-packages/pip/utils/appdirs.py | 248 - .../site-packages/pip/utils/build.py | 42 - .../site-packages/pip/utils/deprecation.py | 76 - .../site-packages/pip/utils/encoding.py | 31 - .../site-packages/pip/utils/filesystem.py | 28 - .../site-packages/pip/utils/glibc.py | 81 - .../site-packages/pip/utils/hashes.py | 92 - .../site-packages/pip/utils/logging.py | 130 - .../site-packages/pip/utils/outdated.py | 162 - .../site-packages/pip/utils/packaging.py | 63 - .../pip/utils/setuptools_build.py | 8 - .../python3.5/site-packages/pip/utils/ui.py | 344 - .../site-packages/pip/vcs/__init__.py | 366 - .../vcs/__pycache__/__init__.cpython-35.pyc | Bin 11830 -> 0 bytes .../pip/vcs/__pycache__/bazaar.cpython-35.pyc | Bin 3944 -> 0 bytes .../pip/vcs/__pycache__/git.cpython-35.pyc | Bin 9599 -> 0 bytes .../vcs/__pycache__/mercurial.cpython-35.pyc | Bin 3871 -> 0 bytes .../vcs/__pycache__/subversion.cpython-35.pyc | Bin 7853 -> 0 bytes .../python3.5/site-packages/pip/vcs/bazaar.py | 116 - .../python3.5/site-packages/pip/vcs/git.py | 300 - .../site-packages/pip/vcs/mercurial.py | 103 - .../site-packages/pip/vcs/subversion.py | 269 - .../lib/python3.5/site-packages/pip/wheel.py | 853 -- .../site-packages/pkg_resources/__init__.py | 3072 ------- .../__pycache__/__init__.cpython-35.pyc | Bin 102474 -> 0 bytes .../__pycache__/py31compat.cpython-35.pyc | Bin 705 -> 0 bytes .../pkg_resources/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-35.pyc | Bin 151 -> 0 bytes .../__pycache__/appdirs.cpython-35.pyc | Bin 19677 -> 0 bytes .../__pycache__/pyparsing.cpython-35.pyc | Bin 212234 -> 0 bytes .../_vendor/__pycache__/six.cpython-35.pyc | Bin 26366 -> 0 bytes .../pkg_resources/_vendor/appdirs.py | 552 -- .../_vendor/packaging/__about__.py | 21 - .../_vendor/packaging/__init__.py | 14 - .../__pycache__/__about__.cpython-35.pyc | Bin 721 -> 0 bytes .../__pycache__/__init__.cpython-35.pyc | Bin 561 -> 0 bytes .../__pycache__/_compat.cpython-35.pyc | Bin 1037 -> 0 bytes .../__pycache__/_structures.cpython-35.pyc | Bin 2957 -> 0 bytes .../__pycache__/markers.cpython-35.pyc | Bin 9541 -> 0 bytes .../__pycache__/requirements.cpython-35.pyc | Bin 4257 -> 0 bytes .../__pycache__/specifiers.cpython-35.pyc | Bin 21157 -> 0 bytes .../__pycache__/utils.cpython-35.pyc | Bin 483 -> 0 bytes .../__pycache__/version.cpython-35.pyc | Bin 11437 -> 0 bytes .../_vendor/packaging/_compat.py | 30 - .../_vendor/packaging/_structures.py | 68 - .../_vendor/packaging/markers.py | 301 - .../_vendor/packaging/requirements.py | 127 - .../_vendor/packaging/specifiers.py | 774 -- .../pkg_resources/_vendor/packaging/utils.py | 14 - .../_vendor/packaging/version.py | 393 - .../pkg_resources/_vendor/pyparsing.py | 5696 ------------ .../pkg_resources/_vendor/six.py | 868 -- .../pkg_resources/extern/__init__.py | 73 - .../__pycache__/__init__.cpython-35.pyc | Bin 2508 -> 0 bytes .../site-packages/pkg_resources/py31compat.py | 22 - .../requests-2.18.1.dist-info/DESCRIPTION.rst | 1610 ---- .../requests-2.18.1.dist-info/INSTALLER | 1 - .../requests-2.18.1.dist-info/METADATA | 1646 ---- .../requests-2.18.1.dist-info/RECORD | 43 - .../requests-2.18.1.dist-info/WHEEL | 6 - .../requests-2.18.1.dist-info/metadata.json | 1 - .../requests-2.18.1.dist-info/top_level.txt | 1 - .../site-packages/requests/__init__.py | 121 - .../__pycache__/__init__.cpython-35.pyc | Bin 3472 -> 0 bytes .../__pycache__/__version__.cpython-35.pyc | Bin 514 -> 0 bytes .../_internal_utils.cpython-35.pyc | Bin 1302 -> 0 bytes .../__pycache__/adapters.cpython-35.pyc | Bin 17291 -> 0 bytes .../requests/__pycache__/api.cpython-35.pyc | Bin 6478 -> 0 bytes .../requests/__pycache__/auth.cpython-35.pyc | Bin 8515 -> 0 bytes .../requests/__pycache__/certs.cpython-35.pyc | Bin 578 -> 0 bytes .../__pycache__/compat.cpython-35.pyc | Bin 1689 -> 0 bytes .../__pycache__/cookies.cpython-35.pyc | Bin 19531 -> 0 bytes .../__pycache__/exceptions.cpython-35.pyc | Bin 5559 -> 0 bytes .../requests/__pycache__/help.cpython-35.pyc | Bin 2717 -> 0 bytes .../requests/__pycache__/hooks.cpython-35.pyc | Bin 996 -> 0 bytes .../__pycache__/models.cpython-35.pyc | Bin 25871 -> 0 bytes .../__pycache__/packages.cpython-35.pyc | Bin 407 -> 0 bytes .../__pycache__/sessions.cpython-35.pyc | Bin 19688 -> 0 bytes .../__pycache__/status_codes.cpython-35.pyc | Bin 3916 -> 0 bytes .../__pycache__/structures.cpython-35.pyc | Bin 4521 -> 0 bytes .../requests/__pycache__/utils.cpython-35.pyc | Bin 22051 -> 0 bytes .../site-packages/requests/__version__.py | 14 - .../site-packages/requests/_internal_utils.py | 42 - .../site-packages/requests/adapters.py | 520 -- .../python3.5/site-packages/requests/api.py | 152 - .../python3.5/site-packages/requests/auth.py | 293 - .../python3.5/site-packages/requests/certs.py | 18 - .../site-packages/requests/compat.py | 71 - .../site-packages/requests/cookies.py | 542 -- .../site-packages/requests/exceptions.py | 122 - .../python3.5/site-packages/requests/help.py | 111 - .../python3.5/site-packages/requests/hooks.py | 34 - .../site-packages/requests/models.py | 950 -- .../site-packages/requests/packages.py | 14 - .../site-packages/requests/sessions.py | 731 -- .../site-packages/requests/status_codes.py | 91 - .../site-packages/requests/structures.py | 105 - .../python3.5/site-packages/requests/utils.py | 904 -- .../DESCRIPTION.rst | 25 - .../setuptools-36.2.0.dist-info/INSTALLER | 1 - .../setuptools-36.2.0.dist-info/METADATA | 57 - .../setuptools-36.2.0.dist-info/RECORD | 155 - .../setuptools-36.2.0.dist-info/WHEEL | 6 - .../dependency_links.txt | 2 - .../entry_points.txt | 64 - .../setuptools-36.2.0.dist-info/metadata.json | 1 - .../setuptools-36.2.0.dist-info/top_level.txt | 3 - .../setuptools-36.2.0.dist-info/zip-safe | 1 - .../site-packages/setuptools/__init__.py | 160 - .../__pycache__/__init__.cpython-35.pyc | Bin 5960 -> 0 bytes .../__pycache__/archive_util.cpython-35.pyc | Bin 5473 -> 0 bytes .../__pycache__/config.cpython-35.pyc | Bin 14647 -> 0 bytes .../__pycache__/dep_util.cpython-35.pyc | Bin 857 -> 0 bytes .../__pycache__/depends.cpython-35.pyc | Bin 5629 -> 0 bytes .../__pycache__/dist.cpython-35.pyc | Bin 36589 -> 0 bytes .../__pycache__/extension.cpython-35.pyc | Bin 2059 -> 0 bytes .../__pycache__/glob.cpython-35.pyc | Bin 4147 -> 0 bytes .../__pycache__/launch.cpython-35.pyc | Bin 880 -> 0 bytes .../__pycache__/lib2to3_ex.cpython-35.pyc | Bin 2555 -> 0 bytes .../__pycache__/monkey.cpython-35.pyc | Bin 5480 -> 0 bytes .../__pycache__/msvc.cpython-35.pyc | Bin 37060 -> 0 bytes .../__pycache__/namespaces.cpython-35.pyc | Bin 3857 -> 0 bytes .../__pycache__/package_index.cpython-35.pyc | Bin 35449 -> 0 bytes .../__pycache__/py26compat.cpython-35.pyc | Bin 1063 -> 0 bytes .../__pycache__/py27compat.cpython-35.pyc | Bin 813 -> 0 bytes .../__pycache__/py31compat.cpython-35.pyc | Bin 1972 -> 0 bytes .../__pycache__/py33compat.cpython-35.pyc | Bin 1289 -> 0 bytes .../__pycache__/py36compat.cpython-35.pyc | Bin 2353 -> 0 bytes .../__pycache__/sandbox.cpython-35.pyc | Bin 16918 -> 0 bytes .../__pycache__/site-patch.cpython-35.pyc | Bin 1662 -> 0 bytes .../__pycache__/ssl_support.cpython-35.pyc | Bin 7160 -> 0 bytes .../__pycache__/unicode_utils.cpython-35.pyc | Bin 1212 -> 0 bytes .../__pycache__/version.cpython-35.pyc | Bin 297 -> 0 bytes .../windows_support.cpython-35.pyc | Bin 1029 -> 0 bytes .../site-packages/setuptools/archive_util.py | 173 - .../site-packages/setuptools/cli-32.exe | Bin 65536 -> 0 bytes .../site-packages/setuptools/cli-64.exe | Bin 74752 -> 0 bytes .../site-packages/setuptools/cli.exe | Bin 65536 -> 0 bytes .../setuptools/command/__init__.py | 17 - .../__pycache__/__init__.cpython-35.pyc | Bin 734 -> 0 bytes .../command/__pycache__/alias.cpython-35.pyc | Bin 2605 -> 0 bytes .../__pycache__/bdist_egg.cpython-35.pyc | Bin 14943 -> 0 bytes .../__pycache__/bdist_rpm.cpython-35.pyc | Bin 1831 -> 0 bytes .../__pycache__/bdist_wininst.cpython-35.pyc | Bin 979 -> 0 bytes .../__pycache__/build_clib.cpython-35.pyc | Bin 2578 -> 0 bytes .../__pycache__/build_ext.cpython-35.pyc | Bin 10929 -> 0 bytes .../__pycache__/build_py.cpython-35.pyc | Bin 9254 -> 0 bytes .../__pycache__/develop.cpython-35.pyc | Bin 6952 -> 0 bytes .../__pycache__/easy_install.cpython-35.pyc | Bin 69791 -> 0 bytes .../__pycache__/egg_info.cpython-35.pyc | Bin 22754 -> 0 bytes .../__pycache__/install.cpython-35.pyc | Bin 4233 -> 0 bytes .../install_egg_info.cpython-35.pyc | Bin 2593 -> 0 bytes .../__pycache__/install_lib.cpython-35.pyc | Bin 4272 -> 0 bytes .../install_scripts.cpython-35.pyc | Bin 2442 -> 0 bytes .../__pycache__/py36compat.cpython-35.pyc | Bin 4914 -> 0 bytes .../__pycache__/register.cpython-35.pyc | Bin 584 -> 0 bytes .../command/__pycache__/rotate.cpython-35.pyc | Bin 2750 -> 0 bytes .../__pycache__/saveopts.cpython-35.pyc | Bin 949 -> 0 bytes .../command/__pycache__/sdist.cpython-35.pyc | Bin 6641 -> 0 bytes .../command/__pycache__/setopt.cpython-35.pyc | Bin 4923 -> 0 bytes .../command/__pycache__/test.cpython-35.pyc | Bin 8360 -> 0 bytes .../command/__pycache__/upload.cpython-35.pyc | Bin 1427 -> 0 bytes .../__pycache__/upload_docs.cpython-35.pyc | Bin 6672 -> 0 bytes .../site-packages/setuptools/command/alias.py | 80 - .../setuptools/command/bdist_egg.py | 472 - .../setuptools/command/bdist_rpm.py | 43 - .../setuptools/command/bdist_wininst.py | 21 - .../setuptools/command/build_clib.py | 98 - .../setuptools/command/build_ext.py | 328 - .../setuptools/command/build_py.py | 270 - .../setuptools/command/develop.py | 214 - .../setuptools/command/easy_install.py | 2301 ----- .../setuptools/command/egg_info.py | 697 -- .../setuptools/command/install.py | 125 - .../setuptools/command/install_egg_info.py | 62 - .../setuptools/command/install_lib.py | 121 - .../setuptools/command/install_scripts.py | 65 - .../setuptools/command/launcher manifest.xml | 15 - .../setuptools/command/py36compat.py | 136 - .../setuptools/command/register.py | 10 - .../setuptools/command/rotate.py | 66 - .../setuptools/command/saveopts.py | 22 - .../site-packages/setuptools/command/sdist.py | 206 - .../setuptools/command/setopt.py | 149 - .../site-packages/setuptools/command/test.py | 254 - .../setuptools/command/upload.py | 42 - .../setuptools/command/upload_docs.py | 206 - .../site-packages/setuptools/config.py | 548 -- .../site-packages/setuptools/dep_util.py | 23 - .../site-packages/setuptools/depends.py | 186 - .../site-packages/setuptools/dist.py | 981 --- .../site-packages/setuptools/extension.py | 57 - .../setuptools/extern/__init__.py | 4 - .../__pycache__/__init__.cpython-35.pyc | Bin 303 -> 0 bytes .../site-packages/setuptools/glob.py | 176 - .../site-packages/setuptools/gui-32.exe | Bin 65536 -> 0 bytes .../site-packages/setuptools/gui-64.exe | Bin 75264 -> 0 bytes .../site-packages/setuptools/gui.exe | Bin 65536 -> 0 bytes .../site-packages/setuptools/launch.py | 35 - .../site-packages/setuptools/lib2to3_ex.py | 62 - .../site-packages/setuptools/monkey.py | 197 - .../site-packages/setuptools/msvc.py | 1293 --- .../site-packages/setuptools/namespaces.py | 107 - .../site-packages/setuptools/package_index.py | 1115 --- .../site-packages/setuptools/py26compat.py | 31 - .../site-packages/setuptools/py27compat.py | 28 - .../site-packages/setuptools/py31compat.py | 56 - .../site-packages/setuptools/py33compat.py | 45 - .../site-packages/setuptools/py36compat.py | 82 - .../site-packages/setuptools/sandbox.py | 495 -- .../setuptools/script (dev).tmpl | 5 - .../site-packages/setuptools/script.tmpl | 3 - .../site-packages/setuptools/site-patch.py | 74 - .../site-packages/setuptools/ssl_support.py | 255 - .../site-packages/setuptools/unicode_utils.py | 44 - .../site-packages/setuptools/version.py | 6 - .../setuptools/windows_support.py | 29 - .../urllib3-1.21.1.dist-info/DESCRIPTION.rst | 978 --- .../urllib3-1.21.1.dist-info/INSTALLER | 1 - .../urllib3-1.21.1.dist-info/METADATA | 1006 --- .../urllib3-1.21.1.dist-info/RECORD | 79 - .../urllib3-1.21.1.dist-info/WHEEL | 6 - .../urllib3-1.21.1.dist-info/metadata.json | 1 - .../urllib3-1.21.1.dist-info/top_level.txt | 1 - .../site-packages/urllib3/__init__.py | 97 - .../__pycache__/__init__.cpython-35.pyc | Bin 2608 -> 0 bytes .../__pycache__/_collections.cpython-35.pyc | Bin 11106 -> 0 bytes .../__pycache__/connection.cpython-35.pyc | Bin 9534 -> 0 bytes .../__pycache__/connectionpool.cpython-35.pyc | Bin 24719 -> 0 bytes .../__pycache__/exceptions.cpython-35.pyc | Bin 10866 -> 0 bytes .../urllib3/__pycache__/fields.cpython-35.pyc | Bin 6091 -> 0 bytes .../__pycache__/filepost.cpython-35.pyc | Bin 2784 -> 0 bytes .../__pycache__/poolmanager.cpython-35.pyc | Bin 13379 -> 0 bytes .../__pycache__/request.cpython-35.pyc | Bin 5667 -> 0 bytes .../__pycache__/response.cpython-35.pyc | Bin 17231 -> 0 bytes .../site-packages/urllib3/_collections.py | 314 - .../site-packages/urllib3/connection.py | 373 - .../site-packages/urllib3/connectionpool.py | 899 -- .../site-packages/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-35.pyc | Bin 142 -> 0 bytes .../__pycache__/appengine.cpython-35.pyc | Bin 9280 -> 0 bytes .../__pycache__/ntlmpool.cpython-35.pyc | Bin 3465 -> 0 bytes .../__pycache__/pyopenssl.cpython-35.pyc | Bin 14963 -> 0 bytes .../securetransport.cpython-35.pyc | Bin 19282 -> 0 bytes .../contrib/__pycache__/socks.cpython-35.pyc | Bin 5064 -> 0 bytes .../contrib/_securetransport/__init__.py | 0 .../__pycache__/__init__.cpython-35.pyc | Bin 159 -> 0 bytes .../__pycache__/bindings.cpython-35.pyc | Bin 11344 -> 0 bytes .../__pycache__/low_level.cpython-35.pyc | Bin 7977 -> 0 bytes .../contrib/_securetransport/bindings.py | 590 -- .../contrib/_securetransport/low_level.py | 343 - .../urllib3/contrib/appengine.py | 296 - .../site-packages/urllib3/contrib/ntlmpool.py | 112 - .../urllib3/contrib/pyopenssl.py | 452 - .../urllib3/contrib/securetransport.py | 807 -- .../site-packages/urllib3/contrib/socks.py | 188 - .../site-packages/urllib3/exceptions.py | 246 - .../python3.5/site-packages/urllib3/fields.py | 178 - .../site-packages/urllib3/filepost.py | 94 - .../urllib3/packages/__init__.py | 5 - .../__pycache__/__init__.cpython-35.pyc | Bin 278 -> 0 bytes .../__pycache__/ordered_dict.cpython-35.pyc | Bin 8860 -> 0 bytes .../packages/__pycache__/six.cpython-35.pyc | Bin 26358 -> 0 bytes .../urllib3/packages/backports/__init__.py | 0 .../__pycache__/__init__.cpython-35.pyc | Bin 153 -> 0 bytes .../__pycache__/makefile.cpython-35.pyc | Bin 1385 -> 0 bytes .../urllib3/packages/backports/makefile.py | 53 - .../urllib3/packages/ordered_dict.py | 259 - .../site-packages/urllib3/packages/six.py | 868 -- .../packages/ssl_match_hostname/__init__.py | 19 - .../__pycache__/__init__.cpython-35.pyc | Bin 560 -> 0 bytes .../_implementation.cpython-35.pyc | Bin 3511 -> 0 bytes .../ssl_match_hostname/_implementation.py | 157 - .../site-packages/urllib3/poolmanager.py | 440 - .../site-packages/urllib3/request.py | 148 - .../site-packages/urllib3/response.py | 622 -- .../site-packages/urllib3/util/__init__.py | 54 - .../util/__pycache__/__init__.cpython-35.pyc | Bin 1134 -> 0 bytes .../__pycache__/connection.cpython-35.pyc | Bin 3276 -> 0 bytes .../util/__pycache__/request.cpython-35.pyc | Bin 3327 -> 0 bytes .../util/__pycache__/response.cpython-35.pyc | Bin 1942 -> 0 bytes .../util/__pycache__/retry.cpython-35.pyc | Bin 12955 -> 0 bytes .../util/__pycache__/selectors.cpython-35.pyc | Bin 17723 -> 0 bytes .../util/__pycache__/ssl_.cpython-35.pyc | Bin 9339 -> 0 bytes .../util/__pycache__/timeout.cpython-35.pyc | Bin 9000 -> 0 bytes .../util/__pycache__/url.cpython-35.pyc | Bin 5523 -> 0 bytes .../util/__pycache__/wait.cpython-35.pyc | Bin 1684 -> 0 bytes .../site-packages/urllib3/util/connection.py | 130 - .../site-packages/urllib3/util/request.py | 118 - .../site-packages/urllib3/util/response.py | 81 - .../site-packages/urllib3/util/retry.py | 401 - .../site-packages/urllib3/util/selectors.py | 581 -- .../site-packages/urllib3/util/ssl_.py | 337 - .../site-packages/urllib3/util/timeout.py | 242 - .../site-packages/urllib3/util/url.py | 230 - .../site-packages/urllib3/util/wait.py | 40 - .../wheel-0.30.0a0.dist-info/DESCRIPTION.rst | 325 - .../wheel-0.30.0a0.dist-info/INSTALLER | 1 - .../wheel-0.30.0a0.dist-info/LICENSE.txt | 22 - .../wheel-0.30.0a0.dist-info/METADATA | 357 - .../wheel-0.30.0a0.dist-info/RECORD | 86 - .../wheel-0.30.0a0.dist-info/WHEEL | 6 - .../wheel-0.30.0a0.dist-info/entry_points.txt | 6 - .../wheel-0.30.0a0.dist-info/metadata.json | 1 - .../wheel-0.30.0a0.dist-info/top_level.txt | 1 - .../python3.5/site-packages/wheel/__init__.py | 2 - .../python3.5/site-packages/wheel/__main__.py | 17 - .../wheel/__pycache__/__init__.cpython-35.pyc | Bin 157 -> 0 bytes .../wheel/__pycache__/__main__.cpython-35.pyc | Bin 599 -> 0 bytes .../wheel/__pycache__/archive.cpython-35.pyc | Bin 2220 -> 0 bytes .../__pycache__/bdist_wheel.cpython-35.pyc | Bin 14113 -> 0 bytes .../__pycache__/decorator.cpython-35.pyc | Bin 874 -> 0 bytes .../__pycache__/egg2wheel.cpython-35.pyc | Bin 2840 -> 0 bytes .../wheel/__pycache__/install.cpython-35.pyc | Bin 15431 -> 0 bytes .../wheel/__pycache__/metadata.cpython-35.pyc | Bin 9452 -> 0 bytes .../wheel/__pycache__/paths.cpython-35.pyc | Bin 1155 -> 0 bytes .../__pycache__/pep425tags.cpython-35.pyc | Bin 5022 -> 0 bytes .../wheel/__pycache__/pkginfo.cpython-35.pyc | Bin 1598 -> 0 bytes .../wheel/__pycache__/util.cpython-35.pyc | Bin 6059 -> 0 bytes .../__pycache__/wininst2wheel.cpython-35.pyc | Bin 5867 -> 0 bytes .../python3.5/site-packages/wheel/archive.py | 79 - .../site-packages/wheel/bdist_wheel.py | 473 - .../site-packages/wheel/decorator.py | 19 - .../site-packages/wheel/egg2wheel.py | 86 - .../site-packages/wheel/eggnames.txt | 87 - .../python3.5/site-packages/wheel/install.py | 481 -- .../python3.5/site-packages/wheel/metadata.py | 333 - .../python3.5/site-packages/wheel/paths.py | 41 - .../site-packages/wheel/pep425tags.py | 182 - .../python3.5/site-packages/wheel/pkginfo.py | 44 - .../wheel/signatures/__init__.py | 106 - .../__pycache__/__init__.cpython-35.pyc | Bin 3160 -> 0 bytes .../__pycache__/djbec.cpython-35.pyc | Bin 10088 -> 0 bytes .../__pycache__/ed25519py.cpython-35.pyc | Bin 1805 -> 0 bytes .../__pycache__/keys.cpython-35.pyc | Bin 4254 -> 0 bytes .../site-packages/wheel/signatures/djbec.py | 270 - .../wheel/signatures/ed25519py.py | 52 - .../site-packages/wheel/signatures/keys.py | 99 - .../site-packages/wheel/test/__init__.py | 1 - .../test/__pycache__/__init__.cpython-35.pyc | Bin 135 -> 0 bytes .../test/__pycache__/conftest.cpython-35.pyc | Bin 1789 -> 0 bytes .../__pycache__/test_basic.cpython-35.pyc | Bin 7398 -> 0 bytes .../__pycache__/test_install.cpython-35.pyc | Bin 1890 -> 0 bytes .../test/__pycache__/test_keys.cpython-35.pyc | Bin 3055 -> 0 bytes .../__pycache__/test_paths.cpython-35.pyc | Bin 449 -> 0 bytes .../__pycache__/test_ranking.cpython-35.pyc | Bin 1639 -> 0 bytes .../test_signatures.cpython-35.pyc | Bin 1227 -> 0 bytes .../__pycache__/test_tagopt.cpython-35.pyc | Bin 7044 -> 0 bytes .../test/__pycache__/test_tool.cpython-35.pyc | Bin 1923 -> 0 bytes .../__pycache__/test_wheelfile.cpython-35.pyc | Bin 3993 -> 0 bytes .../__pycache__/setup.cpython-35.pyc | Bin 1081 -> 0 bytes .../test/complex-dist/complexdist/__init__.py | 2 - .../__pycache__/__init__.cpython-35.pyc | Bin 254 -> 0 bytes .../wheel/test/complex-dist/setup.py | 30 - .../site-packages/wheel/test/conftest.py | 45 - .../__pycache__/setup.cpython-35.pyc | Bin 746 -> 0 bytes .../wheel/test/extension.dist/setup.py | 20 - .../__pycache__/headersdist.cpython-35.pyc | Bin 151 -> 0 bytes .../__pycache__/setup.cpython-35.pyc | Bin 646 -> 0 bytes .../wheel/test/headers.dist/header.h | 0 .../wheel/test/headers.dist/headersdist.py | 0 .../wheel/test/headers.dist/setup.py | 16 - .../wheel/test/pydist-schema.json | 362 - .../__pycache__/setup.cpython-35.pyc | Bin 702 -> 0 bytes .../wheel/test/simple.dist/setup.py | 17 - .../test/simple.dist/simpledist/__init__.py | 0 .../__pycache__/__init__.cpython-35.pyc | Bin 158 -> 0 bytes .../test/test-1.0-py2.py3-none-win32.whl | Bin 5226 -> 0 bytes .../site-packages/wheel/test/test_basic.py | 178 - .../site-packages/wheel/test/test_install.py | 55 - .../site-packages/wheel/test/test_keys.py | 98 - .../site-packages/wheel/test/test_paths.py | 6 - .../site-packages/wheel/test/test_ranking.py | 43 - .../wheel/test/test_signatures.py | 47 - .../site-packages/wheel/test/test_tagopt.py | 176 - .../site-packages/wheel/test/test_tool.py | 25 - .../wheel/test/test_wheelfile.py | 142 - .../site-packages/wheel/tool/__init__.py | 359 - .../tool/__pycache__/__init__.cpython-35.pyc | Bin 12138 -> 0 bytes .../lib/python3.5/site-packages/wheel/util.py | 167 - .../site-packages/wheel/wininst2wheel.py | 216 - utils/lib/python3.5/site.py | 758 -- utils/lib/python3.5/sre_compile.py | 1 - utils/lib/python3.5/sre_constants.py | 1 - utils/lib/python3.5/sre_parse.py | 1 - utils/lib/python3.5/stat.py | 1 - utils/lib/python3.5/struct.py | 1 - utils/lib/python3.5/tarfile.py | 1 - utils/lib/python3.5/tempfile.py | 1 - utils/lib/python3.5/token.py | 1 - utils/lib/python3.5/tokenize.py | 1 - utils/lib/python3.5/types.py | 1 - utils/lib/python3.5/warnings.py | 1 - utils/lib/python3.5/weakref.py | 1 - utils/lib64 | 1 - utils/resources/AdminEventRepresentation | 8 - utils/resources/AuthDetailsRepresentation | 4 - ...uthenticationExecutionExportRepresentation | 8 - .../AuthenticationExecutionInfoRepresentation | 12 - .../AuthenticationExecutionRepresentation | 9 - .../AuthenticationFlowRepresentation | 7 - .../AuthenticatorConfigInfoRepresentation | 4 - .../AuthenticatorConfigRepresentation | 3 - utils/resources/CertificateRepresentation | 4 - .../ClientInitialAccessCreatePresentation | 2 - .../resources/ClientInitialAccessPresentation | 6 - utils/resources/ClientMappingsRepresentation | 3 - utils/resources/ClientRepresentation | 37 - utils/resources/ClientTemplateRepresentation | 15 - utils/resources/ComponentExportRepresentation | 6 - utils/resources/ComponentRepresentation | 7 - utils/resources/ComponentTypeRepresentation | 4 - utils/resources/ConfigPropertyRepresentation | 7 - utils/resources/CredentialRepresentation | 13 - utils/resources/EventRepresentation | 9 - .../resources/FederatedIdentityRepresentation | 3 - utils/resources/GlobalRequestResult | 2 - utils/resources/GroupRepresentation | 8 - .../IdentityProviderMapperRepresentation | 5 - .../resources/IdentityProviderRepresentation | 12 - utils/resources/KeyStoreConfig | 6 - utils/resources/KeysMetadataRepresentation | 2 - ...taRepresentation-KeyMetadataRepresentation | 7 - utils/resources/ManagementPermissionReference | 3 - utils/resources/MappingsRepresentation | 2 - utils/resources/MemoryInfoRepresentation | 7 - utils/resources/MultivaluedHashMap | 3 - utils/resources/PartialImportRepresentation | 7 - .../PasswordPolicyTypeRepresentation | 5 - utils/resources/PolicyRepresentation | 10 - utils/resources/ProfileInfoRepresentation | 2 - utils/resources/ProtocolMapperRepresentation | 7 - utils/resources/ProviderRepresentation | 2 - .../resources/RealmEventsConfigRepresentation | 6 - utils/resources/RealmRepresentation | 83 - .../RequiredActionProviderRepresentation | 6 - utils/resources/ResourceOwnerRepresentation | 2 - utils/resources/ResourceRepresentation | 9 - utils/resources/ResourceServerRepresentation | 8 - utils/resources/RoleRepresentation | 8 - utils/resources/RoleRepresentation-Composites | 2 - utils/resources/RolesRepresentation | 2 - utils/resources/ScopeMappingRepresentation | 4 - utils/resources/ScopeRepresentation | 5 - utils/resources/ServerInfoRepresentation | 14 - utils/resources/SpiInfoRepresentation | 2 - utils/resources/SynchronizationResult | 6 - utils/resources/SystemInfoRepresentation | 18 - utils/resources/UserConsentRepresentation | 6 - .../UserFederationMapperRepresentation | 5 - .../UserFederationProviderRepresentation | 8 - utils/resources/UserRepresentation | 22 - utils/resources/UserSessionRepresentation | 7 - 1362 files changed, 11 insertions(+), 209743 deletions(-) delete mode 100644 utils/.idea/misc.xml delete mode 100644 utils/.idea/modules.xml delete mode 100644 utils/.idea/utils.iml delete mode 100644 utils/.idea/workspace.xml delete mode 100644 utils/bin/activate delete mode 100644 utils/bin/activate.csh delete mode 100644 utils/bin/activate.fish delete mode 100644 utils/bin/activate_this.py delete mode 100755 utils/bin/chardetect delete mode 100755 utils/bin/easy_install delete mode 100755 utils/bin/easy_install-3.5 delete mode 100755 utils/bin/pip delete mode 100755 utils/bin/pip3 delete mode 100755 utils/bin/pip3.5 delete mode 120000 utils/bin/python delete mode 100755 utils/bin/python-config delete mode 100755 utils/bin/python3 delete mode 120000 utils/bin/python3.5 delete mode 100755 utils/bin/wheel delete mode 100755 utils/file_parser.py delete mode 100755 utils/html_parser.py delete mode 120000 utils/include/python3.5m delete mode 120000 utils/lib/python3.5/__future__.py delete mode 100644 utils/lib/python3.5/__pycache__/__future__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/_bootlocale.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/_collections_abc.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/_weakrefset.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/abc.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/base64.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/bisect.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/codecs.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/copy.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/copyreg.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/fnmatch.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/functools.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/genericpath.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/hashlib.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/heapq.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/hmac.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/imp.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/io.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/keyword.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/linecache.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/locale.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/operator.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/os.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/posixpath.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/random.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/re.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/reprlib.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/shutil.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/site.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/sre_compile.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/sre_constants.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/sre_parse.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/stat.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/struct.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/tarfile.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/tempfile.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/token.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/tokenize.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/types.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/warnings.cpython-35.pyc delete mode 100644 utils/lib/python3.5/__pycache__/weakref.cpython-35.pyc delete mode 120000 utils/lib/python3.5/_bootlocale.py delete mode 120000 utils/lib/python3.5/_collections_abc.py delete mode 120000 utils/lib/python3.5/_dummy_thread.py delete mode 120000 utils/lib/python3.5/_weakrefset.py delete mode 120000 utils/lib/python3.5/abc.py delete mode 120000 utils/lib/python3.5/base64.py delete mode 120000 utils/lib/python3.5/bisect.py delete mode 120000 utils/lib/python3.5/codecs.py delete mode 120000 utils/lib/python3.5/collections delete mode 120000 utils/lib/python3.5/config-3.5m delete mode 120000 utils/lib/python3.5/copy.py delete mode 120000 utils/lib/python3.5/copyreg.py delete mode 100644 utils/lib/python3.5/distutils/__init__.py delete mode 100644 utils/lib/python3.5/distutils/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/distutils/distutils.cfg delete mode 120000 utils/lib/python3.5/encodings delete mode 120000 utils/lib/python3.5/fnmatch.py delete mode 120000 utils/lib/python3.5/functools.py delete mode 120000 utils/lib/python3.5/genericpath.py delete mode 120000 utils/lib/python3.5/hashlib.py delete mode 120000 utils/lib/python3.5/heapq.py delete mode 120000 utils/lib/python3.5/hmac.py delete mode 120000 utils/lib/python3.5/imp.py delete mode 120000 utils/lib/python3.5/importlib delete mode 120000 utils/lib/python3.5/io.py delete mode 120000 utils/lib/python3.5/keyword.py delete mode 120000 utils/lib/python3.5/lib-dynload delete mode 120000 utils/lib/python3.5/linecache.py delete mode 120000 utils/lib/python3.5/locale.py delete mode 100644 utils/lib/python3.5/no-global-site-packages.txt delete mode 120000 utils/lib/python3.5/ntpath.py delete mode 120000 utils/lib/python3.5/operator.py delete mode 100644 utils/lib/python3.5/orig-prefix.txt delete mode 120000 utils/lib/python3.5/os.py delete mode 120000 utils/lib/python3.5/plat-linux delete mode 120000 utils/lib/python3.5/posixpath.py delete mode 120000 utils/lib/python3.5/random.py delete mode 120000 utils/lib/python3.5/re.py delete mode 120000 utils/lib/python3.5/reprlib.py delete mode 120000 utils/lib/python3.5/rlcompleter.py delete mode 120000 utils/lib/python3.5/shutil.py delete mode 100644 utils/lib/python3.5/site-packages/__pycache__/easy_install.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/DESCRIPTION.rst delete mode 100644 utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/INSTALLER delete mode 100644 utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/METADATA delete mode 100644 utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/RECORD delete mode 100644 utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/WHEEL delete mode 100644 utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/metadata.json delete mode 100644 utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/top_level.txt delete mode 100644 utils/lib/python3.5/site-packages/bs4/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/bs4/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/bs4/__pycache__/dammit.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/bs4/__pycache__/diagnose.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/bs4/__pycache__/element.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/bs4/__pycache__/testing.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/bs4/builder/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/bs4/builder/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/bs4/builder/__pycache__/_html5lib.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/bs4/builder/__pycache__/_htmlparser.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/bs4/builder/__pycache__/_lxml.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/bs4/builder/_html5lib.py delete mode 100644 utils/lib/python3.5/site-packages/bs4/builder/_htmlparser.py delete mode 100644 utils/lib/python3.5/site-packages/bs4/builder/_lxml.py delete mode 100644 utils/lib/python3.5/site-packages/bs4/dammit.py delete mode 100644 utils/lib/python3.5/site-packages/bs4/diagnose.py delete mode 100644 utils/lib/python3.5/site-packages/bs4/element.py delete mode 100644 utils/lib/python3.5/site-packages/bs4/testing.py delete mode 100644 utils/lib/python3.5/site-packages/bs4/tests/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/bs4/tests/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/bs4/tests/__pycache__/test_builder_registry.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/bs4/tests/__pycache__/test_docs.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/bs4/tests/__pycache__/test_html5lib.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/bs4/tests/__pycache__/test_htmlparser.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/bs4/tests/__pycache__/test_lxml.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/bs4/tests/__pycache__/test_soup.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/bs4/tests/__pycache__/test_tree.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/bs4/tests/test_builder_registry.py delete mode 100644 utils/lib/python3.5/site-packages/bs4/tests/test_docs.py delete mode 100644 utils/lib/python3.5/site-packages/bs4/tests/test_html5lib.py delete mode 100644 utils/lib/python3.5/site-packages/bs4/tests/test_htmlparser.py delete mode 100644 utils/lib/python3.5/site-packages/bs4/tests/test_lxml.py delete mode 100644 utils/lib/python3.5/site-packages/bs4/tests/test_soup.py delete mode 100644 utils/lib/python3.5/site-packages/bs4/tests/test_tree.py delete mode 100644 utils/lib/python3.5/site-packages/certifi-2017.4.17.dist-info/DESCRIPTION.rst delete mode 100644 utils/lib/python3.5/site-packages/certifi-2017.4.17.dist-info/INSTALLER delete mode 100644 utils/lib/python3.5/site-packages/certifi-2017.4.17.dist-info/METADATA delete mode 100644 utils/lib/python3.5/site-packages/certifi-2017.4.17.dist-info/RECORD delete mode 100644 utils/lib/python3.5/site-packages/certifi-2017.4.17.dist-info/WHEEL delete mode 100644 utils/lib/python3.5/site-packages/certifi-2017.4.17.dist-info/metadata.json delete mode 100644 utils/lib/python3.5/site-packages/certifi-2017.4.17.dist-info/top_level.txt delete mode 100644 utils/lib/python3.5/site-packages/certifi/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/certifi/__main__.py delete mode 100644 utils/lib/python3.5/site-packages/certifi/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/certifi/__pycache__/__main__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/certifi/__pycache__/core.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/certifi/cacert.pem delete mode 100644 utils/lib/python3.5/site-packages/certifi/core.py delete mode 100644 utils/lib/python3.5/site-packages/certifi/old_root.pem delete mode 100644 utils/lib/python3.5/site-packages/certifi/weak.pem delete mode 100644 utils/lib/python3.5/site-packages/chardet-3.0.4.dist-info/DESCRIPTION.rst delete mode 100644 utils/lib/python3.5/site-packages/chardet-3.0.4.dist-info/INSTALLER delete mode 100644 utils/lib/python3.5/site-packages/chardet-3.0.4.dist-info/METADATA delete mode 100644 utils/lib/python3.5/site-packages/chardet-3.0.4.dist-info/RECORD delete mode 100644 utils/lib/python3.5/site-packages/chardet-3.0.4.dist-info/WHEEL delete mode 100644 utils/lib/python3.5/site-packages/chardet-3.0.4.dist-info/entry_points.txt delete mode 100644 utils/lib/python3.5/site-packages/chardet-3.0.4.dist-info/metadata.json delete mode 100644 utils/lib/python3.5/site-packages/chardet-3.0.4.dist-info/top_level.txt delete mode 100644 utils/lib/python3.5/site-packages/chardet/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/big5freq.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/big5prober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/chardistribution.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/charsetgroupprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/charsetprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/codingstatemachine.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/compat.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/cp949prober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/enums.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/escprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/escsm.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/eucjpprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/euckrfreq.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/euckrprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/euctwfreq.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/euctwprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/gb2312freq.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/gb2312prober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/hebrewprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/jisfreq.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/jpcntx.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/langbulgarianmodel.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/langcyrillicmodel.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/langgreekmodel.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/langhebrewmodel.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/langhungarianmodel.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/langthaimodel.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/langturkishmodel.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/latin1prober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/mbcharsetprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/mbcsgroupprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/mbcssm.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/sbcharsetprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/sbcsgroupprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/sjisprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/universaldetector.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/utf8prober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/__pycache__/version.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/big5freq.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/big5prober.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/chardistribution.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/charsetgroupprober.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/charsetprober.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/cli/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/cli/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/cli/__pycache__/chardetect.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/chardet/cli/chardetect.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/codingstatemachine.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/compat.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/cp949prober.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/enums.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/escprober.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/escsm.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/eucjpprober.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/euckrfreq.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/euckrprober.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/euctwfreq.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/euctwprober.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/gb2312freq.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/gb2312prober.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/hebrewprober.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/jisfreq.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/jpcntx.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/langbulgarianmodel.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/langcyrillicmodel.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/langgreekmodel.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/langhebrewmodel.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/langhungarianmodel.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/langthaimodel.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/langturkishmodel.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/latin1prober.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/mbcharsetprober.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/mbcsgroupprober.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/mbcssm.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/sbcharsetprober.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/sbcsgroupprober.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/sjisprober.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/universaldetector.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/utf8prober.py delete mode 100644 utils/lib/python3.5/site-packages/chardet/version.py delete mode 100644 utils/lib/python3.5/site-packages/easy_install.py delete mode 100644 utils/lib/python3.5/site-packages/idna-2.5.dist-info/DESCRIPTION.rst delete mode 100644 utils/lib/python3.5/site-packages/idna-2.5.dist-info/INSTALLER delete mode 100644 utils/lib/python3.5/site-packages/idna-2.5.dist-info/METADATA delete mode 100644 utils/lib/python3.5/site-packages/idna-2.5.dist-info/RECORD delete mode 100644 utils/lib/python3.5/site-packages/idna-2.5.dist-info/WHEEL delete mode 100644 utils/lib/python3.5/site-packages/idna-2.5.dist-info/metadata.json delete mode 100644 utils/lib/python3.5/site-packages/idna-2.5.dist-info/pbr.json delete mode 100644 utils/lib/python3.5/site-packages/idna-2.5.dist-info/top_level.txt delete mode 100644 utils/lib/python3.5/site-packages/idna/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/idna/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/idna/__pycache__/codec.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/idna/__pycache__/compat.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/idna/__pycache__/core.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/idna/__pycache__/idnadata.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/idna/__pycache__/intranges.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/idna/__pycache__/uts46data.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/idna/codec.py delete mode 100644 utils/lib/python3.5/site-packages/idna/compat.py delete mode 100644 utils/lib/python3.5/site-packages/idna/core.py delete mode 100644 utils/lib/python3.5/site-packages/idna/idnadata.py delete mode 100644 utils/lib/python3.5/site-packages/idna/intranges.py delete mode 100644 utils/lib/python3.5/site-packages/idna/uts46data.py delete mode 100644 utils/lib/python3.5/site-packages/lxml-3.8.0.dist-info/DESCRIPTION.rst delete mode 100644 utils/lib/python3.5/site-packages/lxml-3.8.0.dist-info/INSTALLER delete mode 100644 utils/lib/python3.5/site-packages/lxml-3.8.0.dist-info/METADATA delete mode 100644 utils/lib/python3.5/site-packages/lxml-3.8.0.dist-info/RECORD delete mode 100644 utils/lib/python3.5/site-packages/lxml-3.8.0.dist-info/WHEEL delete mode 100644 utils/lib/python3.5/site-packages/lxml-3.8.0.dist-info/metadata.json delete mode 100644 utils/lib/python3.5/site-packages/lxml-3.8.0.dist-info/top_level.txt delete mode 100644 utils/lib/python3.5/site-packages/lxml/ElementInclude.py delete mode 100644 utils/lib/python3.5/site-packages/lxml/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/lxml/__pycache__/ElementInclude.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/__pycache__/_elementpath.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/__pycache__/builder.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/__pycache__/cssselect.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/__pycache__/doctestcompare.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/__pycache__/pyclasslookup.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/__pycache__/sax.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/__pycache__/usedoctest.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/_elementpath.py delete mode 100644 utils/lib/python3.5/site-packages/lxml/builder.py delete mode 100644 utils/lib/python3.5/site-packages/lxml/cssselect.py delete mode 100644 utils/lib/python3.5/site-packages/lxml/doctestcompare.py delete mode 100755 utils/lib/python3.5/site-packages/lxml/etree.cpython-35m-x86_64-linux-gnu.so delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/ElementSoup.py delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/__pycache__/ElementSoup.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/__pycache__/_diffcommand.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/__pycache__/_html5builder.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/__pycache__/_setmixin.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/__pycache__/builder.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/__pycache__/clean.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/__pycache__/defs.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/__pycache__/diff.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/__pycache__/formfill.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/__pycache__/html5parser.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/__pycache__/soupparser.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/__pycache__/usedoctest.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/_diffcommand.py delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/_html5builder.py delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/_setmixin.py delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/builder.py delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/clean.py delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/defs.py delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/diff.py delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/formfill.py delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/html5parser.py delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/soupparser.py delete mode 100644 utils/lib/python3.5/site-packages/lxml/html/usedoctest.py delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/c14n.pxd delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/config.pxd delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/dtdvalid.pxd delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/etree_defs.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/etreepublic.pxd delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/htmlparser.pxd delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libexslt/exslt.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libexslt/exsltconfig.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libexslt/exsltexports.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/DOCBparser.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/HTMLparser.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/HTMLtree.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/SAX.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/SAX2.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/c14n.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/catalog.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/chvalid.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/debugXML.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/dict.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/encoding.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/entities.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/globals.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/hash.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/list.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/nanoftp.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/nanohttp.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/parser.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/parserInternals.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/relaxng.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/schemasInternals.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/schematron.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/threads.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/tree.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/uri.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/valid.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/xinclude.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/xlink.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/xmlIO.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/xmlautomata.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/xmlerror.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/xmlexports.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/xmlmemory.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/xmlmodule.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/xmlreader.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/xmlregexp.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/xmlsave.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/xmlschemas.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/xmlschemastypes.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/xmlstring.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/xmlunicode.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/xmlversion.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/xmlwriter.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/xpath.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/xpathInternals.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxml/xpointer.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxslt/attributes.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxslt/documents.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxslt/extensions.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxslt/extra.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxslt/functions.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxslt/imports.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxslt/keys.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxslt/namespaces.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxslt/numbersInternals.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxslt/pattern.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxslt/preproc.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxslt/security.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxslt/templates.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxslt/transform.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxslt/variables.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxslt/xslt.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxslt/xsltInternals.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxslt/xsltconfig.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxslt/xsltexports.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxslt/xsltlocale.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/libxslt/xsltutils.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/lxml-version.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/relaxng.pxd delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/schematron.pxd delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/tree.pxd delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/uri.pxd delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/xinclude.pxd delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/xmlerror.pxd delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/xmlparser.pxd delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/xmlschema.pxd delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/xpath.pxd delete mode 100644 utils/lib/python3.5/site-packages/lxml/includes/xslt.pxd delete mode 100644 utils/lib/python3.5/site-packages/lxml/isoschematron/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/lxml/isoschematron/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/lxml/isoschematron/resources/rng/iso-schematron.rng delete mode 100644 utils/lib/python3.5/site-packages/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl delete mode 100644 utils/lib/python3.5/site-packages/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl delete mode 100644 utils/lib/python3.5/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl delete mode 100644 utils/lib/python3.5/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl delete mode 100644 utils/lib/python3.5/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl delete mode 100644 utils/lib/python3.5/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl delete mode 100644 utils/lib/python3.5/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl delete mode 100644 utils/lib/python3.5/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt delete mode 100644 utils/lib/python3.5/site-packages/lxml/lxml.etree.h delete mode 100644 utils/lib/python3.5/site-packages/lxml/lxml.etree_api.h delete mode 100755 utils/lib/python3.5/site-packages/lxml/objectify.cpython-35m-x86_64-linux-gnu.so delete mode 100644 utils/lib/python3.5/site-packages/lxml/pyclasslookup.py delete mode 100644 utils/lib/python3.5/site-packages/lxml/sax.py delete mode 100644 utils/lib/python3.5/site-packages/lxml/usedoctest.py delete mode 100644 utils/lib/python3.5/site-packages/pip-9.0.1.dist-info/DESCRIPTION.rst delete mode 100644 utils/lib/python3.5/site-packages/pip-9.0.1.dist-info/INSTALLER delete mode 100644 utils/lib/python3.5/site-packages/pip-9.0.1.dist-info/METADATA delete mode 100644 utils/lib/python3.5/site-packages/pip-9.0.1.dist-info/RECORD delete mode 100644 utils/lib/python3.5/site-packages/pip-9.0.1.dist-info/WHEEL delete mode 100644 utils/lib/python3.5/site-packages/pip-9.0.1.dist-info/entry_points.txt delete mode 100644 utils/lib/python3.5/site-packages/pip-9.0.1.dist-info/metadata.json delete mode 100644 utils/lib/python3.5/site-packages/pip-9.0.1.dist-info/top_level.txt delete mode 100644 utils/lib/python3.5/site-packages/pip/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/__main__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/__pycache__/__main__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/__pycache__/basecommand.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/__pycache__/baseparser.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/__pycache__/cmdoptions.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/__pycache__/download.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/__pycache__/exceptions.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/__pycache__/index.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/__pycache__/locations.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/__pycache__/pep425tags.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/__pycache__/status_codes.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/__pycache__/wheel.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/__pycache__/appdirs.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/__pycache__/distro.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/__pycache__/ipaddress.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/__pycache__/ordereddict.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/__pycache__/pyparsing.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/__pycache__/re-vendor.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/__pycache__/retrying.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/__pycache__/six.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/appdirs.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/__pycache__/compat.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/_cmd.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/adapter.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/cache.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/caches/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/compat.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/controller.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/filewrapper.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/heuristics.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/serialize.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/cachecontrol/wrapper.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/colorama/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/colorama/ansi.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/colorama/ansitowin32.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/colorama/initialise.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/colorama/win32.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/colorama/winterm.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/_backport/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/_backport/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/_backport/__pycache__/misc.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/_backport/__pycache__/shutil.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/_backport/__pycache__/sysconfig.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/_backport/__pycache__/tarfile.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/_backport/misc.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/_backport/shutil.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/_backport/sysconfig.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/_backport/tarfile.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/compat.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/database.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/index.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/locators.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/manifest.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/markers.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/metadata.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/resources.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/scripts.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/t32.exe delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/t64.exe delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/util.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/version.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/w32.exe delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/w64.exe delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distlib/wheel.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/distro.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/__pycache__/_ihatexml.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/__pycache__/_inputstream.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/__pycache__/_tokenizer.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/__pycache__/_utils.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/__pycache__/constants.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/__pycache__/html5parser.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/__pycache__/serializer.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/_ihatexml.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/_inputstream.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/_tokenizer.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/_trie/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/_trie/__pycache__/_base.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/_trie/__pycache__/datrie.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/_trie/__pycache__/py.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/_trie/_base.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/_trie/datrie.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/_trie/py.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/_utils.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/constants.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/filters/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/filters/__pycache__/alphabeticalattributes.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/filters/__pycache__/base.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/filters/__pycache__/inject_meta_charset.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/filters/__pycache__/lint.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/filters/__pycache__/optionaltags.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/filters/__pycache__/sanitizer.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/filters/__pycache__/whitespace.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/filters/base.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/filters/lint.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/filters/optionaltags.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/filters/sanitizer.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/filters/whitespace.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/html5parser.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/serializer.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/genshi.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/sax.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treeadapters/sax.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/base.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/dom.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/etree.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/etree_lxml.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treebuilders/base.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treebuilders/dom.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treebuilders/etree.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/base.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/dom.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/etree.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/etree_lxml.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/genshi.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treewalkers/base.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treewalkers/dom.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treewalkers/etree.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/html5lib/treewalkers/genshi.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/ipaddress.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/lockfile/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/lockfile/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/lockfile/__pycache__/linklockfile.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/lockfile/__pycache__/mkdirlockfile.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/lockfile/__pycache__/pidlockfile.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/lockfile/__pycache__/sqlitelockfile.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/lockfile/__pycache__/symlinklockfile.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/lockfile/linklockfile.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/lockfile/mkdirlockfile.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/lockfile/pidlockfile.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/lockfile/sqlitelockfile.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/lockfile/symlinklockfile.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/ordereddict.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/packaging/__about__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/packaging/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/packaging/__pycache__/_compat.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/packaging/_compat.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/packaging/_structures.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/packaging/markers.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/packaging/requirements.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/packaging/specifiers.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/packaging/utils.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/packaging/version.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/progress/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/progress/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/progress/__pycache__/bar.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/progress/__pycache__/counter.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/progress/__pycache__/helpers.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/progress/__pycache__/spinner.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/progress/bar.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/progress/counter.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/progress/helpers.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/progress/spinner.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/pyparsing.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/re-vendor.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/__pycache__/api.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/__pycache__/models.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/adapters.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/api.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/auth.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/cacert.pem delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/certs.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/compat.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/cookies.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/exceptions.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/hooks.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/models.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/big5freq.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/big5prober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/chardetect.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/chardistribution.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/charsetgroupprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/charsetprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/codingstatemachine.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/compat.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/constants.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/cp949prober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/escprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/escsm.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/eucjpprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/euckrfreq.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/euckrprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/euctwfreq.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/euctwprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/gb2312freq.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/gb2312prober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/hebrewprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/jisfreq.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/jpcntx.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/langbulgarianmodel.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/langcyrillicmodel.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/langgreekmodel.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/langhebrewmodel.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/langhungarianmodel.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/langthaimodel.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/latin1prober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/mbcharsetprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/mbcsgroupprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/mbcssm.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/sbcharsetprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/sbcsgroupprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/sjisprober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/universaldetector.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/utf8prober.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/big5freq.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/big5prober.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/chardetect.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/chardistribution.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/charsetgroupprober.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/charsetprober.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/codingstatemachine.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/compat.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/constants.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/cp949prober.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/escprober.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/escsm.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/eucjpprober.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/euckrfreq.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/euckrprober.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/euctwfreq.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/euctwprober.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/gb2312freq.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/gb2312prober.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/hebrewprober.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/jisfreq.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/jpcntx.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/langbulgarianmodel.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/langcyrillicmodel.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/langgreekmodel.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/langhebrewmodel.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/langhungarianmodel.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/langthaimodel.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/latin1prober.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/mbcharsetprober.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/mbcsgroupprober.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/mbcssm.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/sbcharsetprober.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/sbcsgroupprober.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/sjisprober.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/universaldetector.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/chardet/utf8prober.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/_collections.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/connection.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/connectionpool.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/exceptions.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/fields.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/filepost.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/poolmanager.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/request.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/response.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/_collections.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/connection.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/connectionpool.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__pycache__/appengine.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__pycache__/ntlmpool.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__pycache__/pyopenssl.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__pycache__/socks.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/contrib/appengine.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/contrib/ntlmpool.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/contrib/socks.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/exceptions.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/fields.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/filepost.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/packages/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/packages/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/packages/__pycache__/ordered_dict.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/packages/__pycache__/six.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/packages/ordered_dict.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/packages/six.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/poolmanager.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/request.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/response.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/util/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/connection.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/request.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/response.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/retry.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/ssl_.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/timeout.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/url.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/util/connection.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/util/request.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/util/response.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/util/retry.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/util/timeout.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/util/url.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/sessions.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/status_codes.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/structures.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/requests/utils.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/retrying.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/six.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/webencodings/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/webencodings/labels.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/webencodings/mklabels.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/webencodings/tests.py delete mode 100644 utils/lib/python3.5/site-packages/pip/_vendor/webencodings/x_user_defined.py delete mode 100644 utils/lib/python3.5/site-packages/pip/basecommand.py delete mode 100644 utils/lib/python3.5/site-packages/pip/baseparser.py delete mode 100644 utils/lib/python3.5/site-packages/pip/cmdoptions.py delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/__pycache__/check.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/__pycache__/completion.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/__pycache__/download.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/__pycache__/freeze.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/__pycache__/hash.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/__pycache__/help.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/__pycache__/install.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/__pycache__/list.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/__pycache__/search.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/__pycache__/show.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/__pycache__/uninstall.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/__pycache__/wheel.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/check.py delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/completion.py delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/download.py delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/freeze.py delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/hash.py delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/help.py delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/install.py delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/list.py delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/search.py delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/show.py delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/uninstall.py delete mode 100644 utils/lib/python3.5/site-packages/pip/commands/wheel.py delete mode 100644 utils/lib/python3.5/site-packages/pip/compat/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/compat/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/compat/__pycache__/dictconfig.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/compat/dictconfig.py delete mode 100644 utils/lib/python3.5/site-packages/pip/download.py delete mode 100644 utils/lib/python3.5/site-packages/pip/exceptions.py delete mode 100644 utils/lib/python3.5/site-packages/pip/index.py delete mode 100644 utils/lib/python3.5/site-packages/pip/locations.py delete mode 100644 utils/lib/python3.5/site-packages/pip/models/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/models/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/models/__pycache__/index.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/models/index.py delete mode 100644 utils/lib/python3.5/site-packages/pip/operations/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/operations/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/operations/__pycache__/check.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/operations/__pycache__/freeze.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/operations/check.py delete mode 100644 utils/lib/python3.5/site-packages/pip/operations/freeze.py delete mode 100644 utils/lib/python3.5/site-packages/pip/pep425tags.py delete mode 100644 utils/lib/python3.5/site-packages/pip/req/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/req/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/req/__pycache__/req_file.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/req/__pycache__/req_install.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/req/__pycache__/req_set.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/req/__pycache__/req_uninstall.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/req/req_file.py delete mode 100644 utils/lib/python3.5/site-packages/pip/req/req_install.py delete mode 100644 utils/lib/python3.5/site-packages/pip/req/req_set.py delete mode 100644 utils/lib/python3.5/site-packages/pip/req/req_uninstall.py delete mode 100644 utils/lib/python3.5/site-packages/pip/status_codes.py delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/__pycache__/appdirs.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/__pycache__/build.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/__pycache__/deprecation.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/__pycache__/encoding.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/__pycache__/filesystem.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/__pycache__/glibc.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/__pycache__/hashes.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/__pycache__/logging.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/__pycache__/outdated.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/__pycache__/packaging.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/__pycache__/setuptools_build.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/__pycache__/ui.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/appdirs.py delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/build.py delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/deprecation.py delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/encoding.py delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/filesystem.py delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/glibc.py delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/hashes.py delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/logging.py delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/outdated.py delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/packaging.py delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/setuptools_build.py delete mode 100644 utils/lib/python3.5/site-packages/pip/utils/ui.py delete mode 100644 utils/lib/python3.5/site-packages/pip/vcs/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pip/vcs/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/vcs/__pycache__/bazaar.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/vcs/__pycache__/git.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/vcs/__pycache__/mercurial.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/vcs/__pycache__/subversion.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pip/vcs/bazaar.py delete mode 100644 utils/lib/python3.5/site-packages/pip/vcs/git.py delete mode 100644 utils/lib/python3.5/site-packages/pip/vcs/mercurial.py delete mode 100644 utils/lib/python3.5/site-packages/pip/vcs/subversion.py delete mode 100644 utils/lib/python3.5/site-packages/pip/wheel.py delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/__pycache__/py31compat.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/__pycache__/six.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/appdirs.py delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/packaging/__about__.py delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/packaging/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/packaging/_compat.py delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/packaging/_structures.py delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/packaging/markers.py delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/packaging/requirements.py delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/packaging/specifiers.py delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/packaging/utils.py delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/packaging/version.py delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/pyparsing.py delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/_vendor/six.py delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/extern/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/pkg_resources/py31compat.py delete mode 100644 utils/lib/python3.5/site-packages/requests-2.18.1.dist-info/DESCRIPTION.rst delete mode 100644 utils/lib/python3.5/site-packages/requests-2.18.1.dist-info/INSTALLER delete mode 100644 utils/lib/python3.5/site-packages/requests-2.18.1.dist-info/METADATA delete mode 100644 utils/lib/python3.5/site-packages/requests-2.18.1.dist-info/RECORD delete mode 100644 utils/lib/python3.5/site-packages/requests-2.18.1.dist-info/WHEEL delete mode 100644 utils/lib/python3.5/site-packages/requests-2.18.1.dist-info/metadata.json delete mode 100644 utils/lib/python3.5/site-packages/requests-2.18.1.dist-info/top_level.txt delete mode 100644 utils/lib/python3.5/site-packages/requests/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/requests/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/requests/__pycache__/__version__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/requests/__pycache__/_internal_utils.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/requests/__pycache__/adapters.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/requests/__pycache__/api.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/requests/__pycache__/auth.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/requests/__pycache__/certs.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/requests/__pycache__/compat.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/requests/__pycache__/cookies.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/requests/__pycache__/exceptions.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/requests/__pycache__/help.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/requests/__pycache__/hooks.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/requests/__pycache__/models.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/requests/__pycache__/packages.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/requests/__pycache__/sessions.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/requests/__pycache__/status_codes.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/requests/__pycache__/structures.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/requests/__pycache__/utils.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/requests/__version__.py delete mode 100644 utils/lib/python3.5/site-packages/requests/_internal_utils.py delete mode 100644 utils/lib/python3.5/site-packages/requests/adapters.py delete mode 100644 utils/lib/python3.5/site-packages/requests/api.py delete mode 100644 utils/lib/python3.5/site-packages/requests/auth.py delete mode 100644 utils/lib/python3.5/site-packages/requests/certs.py delete mode 100644 utils/lib/python3.5/site-packages/requests/compat.py delete mode 100644 utils/lib/python3.5/site-packages/requests/cookies.py delete mode 100644 utils/lib/python3.5/site-packages/requests/exceptions.py delete mode 100644 utils/lib/python3.5/site-packages/requests/help.py delete mode 100644 utils/lib/python3.5/site-packages/requests/hooks.py delete mode 100644 utils/lib/python3.5/site-packages/requests/models.py delete mode 100644 utils/lib/python3.5/site-packages/requests/packages.py delete mode 100644 utils/lib/python3.5/site-packages/requests/sessions.py delete mode 100644 utils/lib/python3.5/site-packages/requests/status_codes.py delete mode 100644 utils/lib/python3.5/site-packages/requests/structures.py delete mode 100644 utils/lib/python3.5/site-packages/requests/utils.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools-36.2.0.dist-info/DESCRIPTION.rst delete mode 100644 utils/lib/python3.5/site-packages/setuptools-36.2.0.dist-info/INSTALLER delete mode 100644 utils/lib/python3.5/site-packages/setuptools-36.2.0.dist-info/METADATA delete mode 100644 utils/lib/python3.5/site-packages/setuptools-36.2.0.dist-info/RECORD delete mode 100644 utils/lib/python3.5/site-packages/setuptools-36.2.0.dist-info/WHEEL delete mode 100644 utils/lib/python3.5/site-packages/setuptools-36.2.0.dist-info/dependency_links.txt delete mode 100644 utils/lib/python3.5/site-packages/setuptools-36.2.0.dist-info/entry_points.txt delete mode 100644 utils/lib/python3.5/site-packages/setuptools-36.2.0.dist-info/metadata.json delete mode 100644 utils/lib/python3.5/site-packages/setuptools-36.2.0.dist-info/top_level.txt delete mode 100644 utils/lib/python3.5/site-packages/setuptools-36.2.0.dist-info/zip-safe delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/archive_util.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/config.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/dep_util.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/depends.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/dist.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/extension.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/glob.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/launch.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/lib2to3_ex.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/monkey.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/msvc.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/namespaces.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/package_index.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/py26compat.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/py27compat.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/py31compat.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/py33compat.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/py36compat.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/sandbox.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/site-patch.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/ssl_support.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/unicode_utils.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/version.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/__pycache__/windows_support.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/archive_util.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/cli-32.exe delete mode 100644 utils/lib/python3.5/site-packages/setuptools/cli-64.exe delete mode 100644 utils/lib/python3.5/site-packages/setuptools/cli.exe delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/alias.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/bdist_wininst.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/build_clib.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/build_ext.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/build_py.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/develop.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/easy_install.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/egg_info.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/install.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/install_lib.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/install_scripts.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/py36compat.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/register.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/rotate.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/saveopts.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/sdist.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/setopt.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/test.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/upload.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/__pycache__/upload_docs.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/alias.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/bdist_egg.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/bdist_rpm.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/bdist_wininst.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/build_clib.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/build_ext.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/build_py.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/develop.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/easy_install.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/egg_info.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/install.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/install_egg_info.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/install_lib.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/install_scripts.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/launcher manifest.xml delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/py36compat.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/register.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/rotate.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/saveopts.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/sdist.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/setopt.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/test.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/upload.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/command/upload_docs.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/config.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/dep_util.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/depends.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/dist.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/extension.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/extern/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/extern/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/setuptools/glob.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/gui-32.exe delete mode 100644 utils/lib/python3.5/site-packages/setuptools/gui-64.exe delete mode 100644 utils/lib/python3.5/site-packages/setuptools/gui.exe delete mode 100644 utils/lib/python3.5/site-packages/setuptools/launch.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/lib2to3_ex.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/monkey.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/msvc.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/namespaces.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/package_index.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/py26compat.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/py27compat.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/py31compat.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/py33compat.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/py36compat.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/sandbox.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/script (dev).tmpl delete mode 100644 utils/lib/python3.5/site-packages/setuptools/script.tmpl delete mode 100644 utils/lib/python3.5/site-packages/setuptools/site-patch.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/ssl_support.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/unicode_utils.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/version.py delete mode 100644 utils/lib/python3.5/site-packages/setuptools/windows_support.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3-1.21.1.dist-info/DESCRIPTION.rst delete mode 100644 utils/lib/python3.5/site-packages/urllib3-1.21.1.dist-info/INSTALLER delete mode 100644 utils/lib/python3.5/site-packages/urllib3-1.21.1.dist-info/METADATA delete mode 100644 utils/lib/python3.5/site-packages/urllib3-1.21.1.dist-info/RECORD delete mode 100644 utils/lib/python3.5/site-packages/urllib3-1.21.1.dist-info/WHEEL delete mode 100644 utils/lib/python3.5/site-packages/urllib3-1.21.1.dist-info/metadata.json delete mode 100644 utils/lib/python3.5/site-packages/urllib3-1.21.1.dist-info/top_level.txt delete mode 100644 utils/lib/python3.5/site-packages/urllib3/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/__pycache__/_collections.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/__pycache__/connection.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/__pycache__/connectionpool.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/__pycache__/exceptions.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/__pycache__/fields.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/__pycache__/filepost.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/__pycache__/poolmanager.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/__pycache__/request.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/__pycache__/response.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/_collections.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/connection.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/connectionpool.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/contrib/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/contrib/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/contrib/__pycache__/appengine.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/contrib/__pycache__/ntlmpool.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/contrib/__pycache__/securetransport.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/contrib/__pycache__/socks.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/contrib/_securetransport/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/contrib/_securetransport/bindings.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/contrib/_securetransport/low_level.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/contrib/appengine.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/contrib/ntlmpool.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/contrib/pyopenssl.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/contrib/securetransport.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/contrib/socks.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/exceptions.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/fields.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/filepost.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/packages/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/packages/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/packages/__pycache__/ordered_dict.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/packages/__pycache__/six.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/packages/backports/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/packages/backports/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/packages/backports/__pycache__/makefile.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/packages/backports/makefile.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/packages/ordered_dict.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/packages/six.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/packages/ssl_match_hostname/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/packages/ssl_match_hostname/_implementation.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/poolmanager.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/request.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/response.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/util/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/util/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/util/__pycache__/connection.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/util/__pycache__/request.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/util/__pycache__/response.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/util/__pycache__/retry.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/util/__pycache__/selectors.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/util/__pycache__/ssl_.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/util/__pycache__/timeout.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/util/__pycache__/url.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/util/__pycache__/wait.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/urllib3/util/connection.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/util/request.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/util/response.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/util/retry.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/util/selectors.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/util/ssl_.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/util/timeout.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/util/url.py delete mode 100644 utils/lib/python3.5/site-packages/urllib3/util/wait.py delete mode 100644 utils/lib/python3.5/site-packages/wheel-0.30.0a0.dist-info/DESCRIPTION.rst delete mode 100644 utils/lib/python3.5/site-packages/wheel-0.30.0a0.dist-info/INSTALLER delete mode 100644 utils/lib/python3.5/site-packages/wheel-0.30.0a0.dist-info/LICENSE.txt delete mode 100644 utils/lib/python3.5/site-packages/wheel-0.30.0a0.dist-info/METADATA delete mode 100644 utils/lib/python3.5/site-packages/wheel-0.30.0a0.dist-info/RECORD delete mode 100644 utils/lib/python3.5/site-packages/wheel-0.30.0a0.dist-info/WHEEL delete mode 100644 utils/lib/python3.5/site-packages/wheel-0.30.0a0.dist-info/entry_points.txt delete mode 100644 utils/lib/python3.5/site-packages/wheel-0.30.0a0.dist-info/metadata.json delete mode 100644 utils/lib/python3.5/site-packages/wheel-0.30.0a0.dist-info/top_level.txt delete mode 100644 utils/lib/python3.5/site-packages/wheel/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/__main__.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/__pycache__/__main__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/__pycache__/archive.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/__pycache__/bdist_wheel.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/__pycache__/decorator.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/__pycache__/egg2wheel.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/__pycache__/install.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/__pycache__/metadata.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/__pycache__/paths.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/__pycache__/pep425tags.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/__pycache__/pkginfo.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/__pycache__/util.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/__pycache__/wininst2wheel.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/archive.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/bdist_wheel.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/decorator.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/egg2wheel.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/eggnames.txt delete mode 100644 utils/lib/python3.5/site-packages/wheel/install.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/metadata.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/paths.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/pep425tags.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/pkginfo.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/signatures/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/signatures/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/signatures/__pycache__/djbec.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/signatures/__pycache__/ed25519py.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/signatures/__pycache__/keys.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/signatures/djbec.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/signatures/ed25519py.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/signatures/keys.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/__pycache__/conftest.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/__pycache__/test_basic.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/__pycache__/test_install.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/__pycache__/test_keys.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/__pycache__/test_paths.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/__pycache__/test_ranking.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/__pycache__/test_signatures.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/__pycache__/test_tagopt.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/__pycache__/test_tool.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/__pycache__/test_wheelfile.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/complex-dist/__pycache__/setup.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/complex-dist/complexdist/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/complex-dist/complexdist/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/complex-dist/setup.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/conftest.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/extension.dist/__pycache__/setup.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/extension.dist/setup.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/headers.dist/__pycache__/headersdist.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/headers.dist/__pycache__/setup.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/headers.dist/header.h delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/headers.dist/headersdist.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/headers.dist/setup.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/pydist-schema.json delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/simple.dist/__pycache__/setup.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/simple.dist/setup.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/simple.dist/simpledist/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/simple.dist/simpledist/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/test-1.0-py2.py3-none-win32.whl delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/test_basic.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/test_install.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/test_keys.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/test_paths.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/test_ranking.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/test_signatures.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/test_tagopt.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/test_tool.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/test/test_wheelfile.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/tool/__init__.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/tool/__pycache__/__init__.cpython-35.pyc delete mode 100644 utils/lib/python3.5/site-packages/wheel/util.py delete mode 100644 utils/lib/python3.5/site-packages/wheel/wininst2wheel.py delete mode 100644 utils/lib/python3.5/site.py delete mode 120000 utils/lib/python3.5/sre_compile.py delete mode 120000 utils/lib/python3.5/sre_constants.py delete mode 120000 utils/lib/python3.5/sre_parse.py delete mode 120000 utils/lib/python3.5/stat.py delete mode 120000 utils/lib/python3.5/struct.py delete mode 120000 utils/lib/python3.5/tarfile.py delete mode 120000 utils/lib/python3.5/tempfile.py delete mode 120000 utils/lib/python3.5/token.py delete mode 120000 utils/lib/python3.5/tokenize.py delete mode 120000 utils/lib/python3.5/types.py delete mode 120000 utils/lib/python3.5/warnings.py delete mode 120000 utils/lib/python3.5/weakref.py delete mode 120000 utils/lib64 delete mode 100644 utils/resources/AdminEventRepresentation delete mode 100644 utils/resources/AuthDetailsRepresentation delete mode 100644 utils/resources/AuthenticationExecutionExportRepresentation delete mode 100644 utils/resources/AuthenticationExecutionInfoRepresentation delete mode 100644 utils/resources/AuthenticationExecutionRepresentation delete mode 100644 utils/resources/AuthenticationFlowRepresentation delete mode 100644 utils/resources/AuthenticatorConfigInfoRepresentation delete mode 100644 utils/resources/AuthenticatorConfigRepresentation delete mode 100644 utils/resources/CertificateRepresentation delete mode 100644 utils/resources/ClientInitialAccessCreatePresentation delete mode 100644 utils/resources/ClientInitialAccessPresentation delete mode 100644 utils/resources/ClientMappingsRepresentation delete mode 100644 utils/resources/ClientRepresentation delete mode 100644 utils/resources/ClientTemplateRepresentation delete mode 100644 utils/resources/ComponentExportRepresentation delete mode 100644 utils/resources/ComponentRepresentation delete mode 100644 utils/resources/ComponentTypeRepresentation delete mode 100644 utils/resources/ConfigPropertyRepresentation delete mode 100644 utils/resources/CredentialRepresentation delete mode 100644 utils/resources/EventRepresentation delete mode 100644 utils/resources/FederatedIdentityRepresentation delete mode 100644 utils/resources/GlobalRequestResult delete mode 100644 utils/resources/GroupRepresentation delete mode 100644 utils/resources/IdentityProviderMapperRepresentation delete mode 100644 utils/resources/IdentityProviderRepresentation delete mode 100644 utils/resources/KeyStoreConfig delete mode 100644 utils/resources/KeysMetadataRepresentation delete mode 100644 utils/resources/KeysMetadataRepresentation-KeyMetadataRepresentation delete mode 100644 utils/resources/ManagementPermissionReference delete mode 100644 utils/resources/MappingsRepresentation delete mode 100644 utils/resources/MemoryInfoRepresentation delete mode 100644 utils/resources/MultivaluedHashMap delete mode 100644 utils/resources/PartialImportRepresentation delete mode 100644 utils/resources/PasswordPolicyTypeRepresentation delete mode 100644 utils/resources/PolicyRepresentation delete mode 100644 utils/resources/ProfileInfoRepresentation delete mode 100644 utils/resources/ProtocolMapperRepresentation delete mode 100644 utils/resources/ProviderRepresentation delete mode 100644 utils/resources/RealmEventsConfigRepresentation delete mode 100644 utils/resources/RealmRepresentation delete mode 100644 utils/resources/RequiredActionProviderRepresentation delete mode 100644 utils/resources/ResourceOwnerRepresentation delete mode 100644 utils/resources/ResourceRepresentation delete mode 100644 utils/resources/ResourceServerRepresentation delete mode 100644 utils/resources/RoleRepresentation delete mode 100644 utils/resources/RoleRepresentation-Composites delete mode 100644 utils/resources/RolesRepresentation delete mode 100644 utils/resources/ScopeMappingRepresentation delete mode 100644 utils/resources/ScopeRepresentation delete mode 100644 utils/resources/ServerInfoRepresentation delete mode 100644 utils/resources/SpiInfoRepresentation delete mode 100644 utils/resources/SynchronizationResult delete mode 100644 utils/resources/SystemInfoRepresentation delete mode 100644 utils/resources/UserConsentRepresentation delete mode 100644 utils/resources/UserFederationMapperRepresentation delete mode 100644 utils/resources/UserFederationProviderRepresentation delete mode 100644 utils/resources/UserRepresentation delete mode 100644 utils/resources/UserSessionRepresentation diff --git a/client/client_test.go b/client/client_test.go index 2fd68cc..8b4dfe9 100644 --- a/client/client_test.go +++ b/client/client_test.go @@ -5,37 +5,11 @@ import ( "time" "github.com/stretchr/testify/require" "fmt" - "crypto/cipher" - "crypto/aes" ) -type setivable interface { - cipher.BlockMode - SetIV([]byte) -} - - -func Test_Poop(t *testing.T) { - var k []byte = make([]byte, 16) - var iv []byte = k - b, e := aes.NewCipher(k) - if e != nil { - fmt.Println(e) - return - } - var c = cipher.NewCBCEncrypter(b, iv) - switch cp := c.(type) { - case setivable: - fmt.Println("Haha!") - cp.SetIV(k) - case cipher.BlockMode: - fmt.Println("Hoho!") - } -} - func initTest(t *testing.T) Client { var config HttpConfig = HttpConfig{ - Addr: "http://127.0.0.1:8080", + Addr: "http://172.17.0.2:8080", Username: "admin", Password: "admin", Timeout: time.Second * 5, @@ -59,7 +33,7 @@ func TestClient_getToken(t *testing.T) { func TestClient_GetRealms(t *testing.T) { var client Client = initTest(t) - var realms []map[string]interface{} + var realms []RealmRepresentation { var err error realms, err = client.GetRealms() diff --git a/client/common.go b/client/common.go index 6af83c8..22dd5b0 100644 --- a/client/common.go +++ b/client/common.go @@ -7,13 +7,14 @@ import ( "time" "net/http" "gopkg.in/h2non/gentleman.v2" + "gopkg.in/h2non/gentleman.v2/plugin" "gopkg.in/h2non/gentleman.v2/plugins/timeout" //"gopkg.in/h2non/gentleman.v2/plugins/multipart" ) type Client interface { - GetRealms() ([]map[string]interface{}, error) + GetRealms() ([]RealmRepresentation, error) GetUsers(realm string) ([]UserRepresentation, error) } @@ -43,7 +44,7 @@ func NewHttpClient(config HttpConfig) (Client, error) { } if u.Scheme != "http" { - var m string = fmt.Sprint("Unsupported protocol %s. Your address must start with http://", u.Scheme) + var m string = fmt.Sprintf("Unsupported protocol %s. Your address must start with http://", u.Scheme) return nil, errors.New(m) } @@ -112,11 +113,14 @@ func (c *client) getToken() error { return nil } -func (c *client) do(path string) (*gentleman.Response, error) { +func (c *client) do(path string, plugins ...plugin.Plugin) (*gentleman.Response, error) { var req *gentleman.Request = c.httpClient.Get() { req = req.Path(path) req = req.SetHeader("Authorization", fmt.Sprintf("Bearer %s", c.accessToken)) + for _, p := range plugins { + req = req.Use(p) + } } var resp *gentleman.Response { diff --git a/client/realms.go b/client/realms.go index 0c95250..b24c5ad 100644 --- a/client/realms.go +++ b/client/realms.go @@ -7,7 +7,7 @@ import ( "encoding/json" ) -func (c *client) GetRealms() ([]map[string]interface{}, error) { +func (c *client) GetRealms() ([]RealmRepresentation, error) { var getRealms_Path string = "/auth/admin/realms" var resp *gentleman.Response { @@ -17,7 +17,7 @@ func (c *client) GetRealms() ([]map[string]interface{}, error) { return nil, errors.Wrap(err, "Get Realms failed.") } } - var result []map[string]interface{} + var result []RealmRepresentation { var err error err = json.Unmarshal(resp.Bytes(), &result) diff --git a/utils/.idea/misc.xml b/utils/.idea/misc.xml deleted file mode 100644 index d8e6b49..0000000 --- a/utils/.idea/misc.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/utils/.idea/modules.xml b/utils/.idea/modules.xml deleted file mode 100644 index 2213c52..0000000 --- a/utils/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/utils/.idea/utils.iml b/utils/.idea/utils.iml deleted file mode 100644 index 2e70106..0000000 --- a/utils/.idea/utils.iml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/utils/.idea/workspace.xml b/utils/.idea/workspace.xml deleted file mode 100644 index fad9dca..0000000 --- a/utils/.idea/workspace.xml +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - print - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1500550169408 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/utils/bin/activate b/utils/bin/activate deleted file mode 100644 index f4e7699..0000000 --- a/utils/bin/activate +++ /dev/null @@ -1,78 +0,0 @@ -# This file must be used with "source bin/activate" *from bash* -# you cannot run it directly - -deactivate () { - unset -f pydoc >/dev/null 2>&1 - - # reset old environment variables - # ! [ -z ${VAR+_} ] returns true if VAR is declared at all - if ! [ -z "${_OLD_VIRTUAL_PATH+_}" ] ; then - PATH="$_OLD_VIRTUAL_PATH" - export PATH - unset _OLD_VIRTUAL_PATH - fi - if ! [ -z "${_OLD_VIRTUAL_PYTHONHOME+_}" ] ; then - PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME" - export PYTHONHOME - unset _OLD_VIRTUAL_PYTHONHOME - fi - - # This should detect bash and zsh, which have a hash command that must - # be called to get it to forget past commands. Without forgetting - # past commands the $PATH changes we made may not be respected - if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ] ; then - hash -r 2>/dev/null - fi - - if ! [ -z "${_OLD_VIRTUAL_PS1+_}" ] ; then - PS1="$_OLD_VIRTUAL_PS1" - export PS1 - unset _OLD_VIRTUAL_PS1 - fi - - unset VIRTUAL_ENV - if [ ! "${1-}" = "nondestructive" ] ; then - # Self destruct! - unset -f deactivate - fi -} - -# unset irrelevant variables -deactivate nondestructive - -VIRTUAL_ENV="/root/cloudtrust/go/src/github.com/elca-kairos-py/keycloak/utils" -export VIRTUAL_ENV - -_OLD_VIRTUAL_PATH="$PATH" -PATH="$VIRTUAL_ENV/bin:$PATH" -export PATH - -# unset PYTHONHOME if set -if ! [ -z "${PYTHONHOME+_}" ] ; then - _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME" - unset PYTHONHOME -fi - -if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then - _OLD_VIRTUAL_PS1="$PS1" - if [ "x" != x ] ; then - PS1="$PS1" - else - PS1="(`basename \"$VIRTUAL_ENV\"`) $PS1" - fi - export PS1 -fi - -# Make sure to unalias pydoc if it's already there -alias pydoc 2>/dev/null >/dev/null && unalias pydoc - -pydoc () { - python -m pydoc "$@" -} - -# This should detect bash and zsh, which have a hash command that must -# be called to get it to forget past commands. Without forgetting -# past commands the $PATH changes we made may not be respected -if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ] ; then - hash -r 2>/dev/null -fi diff --git a/utils/bin/activate.csh b/utils/bin/activate.csh deleted file mode 100644 index ac3fc9e..0000000 --- a/utils/bin/activate.csh +++ /dev/null @@ -1,36 +0,0 @@ -# This file must be used with "source bin/activate.csh" *from csh*. -# You cannot run it directly. -# Created by Davide Di Blasi . - -alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate && unalias pydoc' - -# Unset irrelevant variables. -deactivate nondestructive - -setenv VIRTUAL_ENV "/root/cloudtrust/go/src/github.com/elca-kairos-py/keycloak/utils" - -set _OLD_VIRTUAL_PATH="$PATH" -setenv PATH "$VIRTUAL_ENV/bin:$PATH" - - - -if ("" != "") then - set env_name = "" -else - set env_name = `basename "$VIRTUAL_ENV"` -endif - -# Could be in a non-interactive environment, -# in which case, $prompt is undefined and we wouldn't -# care about the prompt anyway. -if ( $?prompt ) then - set _OLD_VIRTUAL_PROMPT="$prompt" - set prompt = "[$env_name] $prompt" -endif - -unset env_name - -alias pydoc python -m pydoc - -rehash - diff --git a/utils/bin/activate.fish b/utils/bin/activate.fish deleted file mode 100644 index 048f66c..0000000 --- a/utils/bin/activate.fish +++ /dev/null @@ -1,76 +0,0 @@ -# This file must be used using `. bin/activate.fish` *within a running fish ( http://fishshell.com ) session*. -# Do not run it directly. - -function deactivate -d 'Exit virtualenv mode and return to the normal environment.' - # reset old environment variables - if test -n "$_OLD_VIRTUAL_PATH" - set -gx PATH $_OLD_VIRTUAL_PATH - set -e _OLD_VIRTUAL_PATH - end - - if test -n "$_OLD_VIRTUAL_PYTHONHOME" - set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME - set -e _OLD_VIRTUAL_PYTHONHOME - end - - if test -n "$_OLD_FISH_PROMPT_OVERRIDE" - # Set an empty local `$fish_function_path` to allow the removal of `fish_prompt` using `functions -e`. - set -l fish_function_path - - # Erase virtualenv's `fish_prompt` and restore the original. - functions -e fish_prompt - functions -c _old_fish_prompt fish_prompt - functions -e _old_fish_prompt - set -e _OLD_FISH_PROMPT_OVERRIDE - end - - set -e VIRTUAL_ENV - - if test "$argv[1]" != 'nondestructive' - # Self-destruct! - functions -e pydoc - functions -e deactivate - end -end - -# Unset irrelevant variables. -deactivate nondestructive - -set -gx VIRTUAL_ENV "/root/cloudtrust/go/src/github.com/elca-kairos-py/keycloak/utils" - -set -gx _OLD_VIRTUAL_PATH $PATH -set -gx PATH "$VIRTUAL_ENV/bin" $PATH - -# Unset `$PYTHONHOME` if set. -if set -q PYTHONHOME - set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME - set -e PYTHONHOME -end - -function pydoc - python -m pydoc $argv -end - -if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" - # Copy the current `fish_prompt` function as `_old_fish_prompt`. - functions -c fish_prompt _old_fish_prompt - - function fish_prompt - # Save the current $status, for fish_prompts that display it. - set -l old_status $status - - # Prompt override provided? - # If not, just prepend the environment name. - if test -n "" - printf '%s%s' "" (set_color normal) - else - printf '%s(%s) ' (set_color normal) (basename "$VIRTUAL_ENV") - end - - # Restore the original $status - echo "exit $old_status" | source - _old_fish_prompt - end - - set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" -end diff --git a/utils/bin/activate_this.py b/utils/bin/activate_this.py deleted file mode 100644 index f18193b..0000000 --- a/utils/bin/activate_this.py +++ /dev/null @@ -1,34 +0,0 @@ -"""By using execfile(this_file, dict(__file__=this_file)) you will -activate this virtualenv environment. - -This can be used when you must use an existing Python interpreter, not -the virtualenv bin/python -""" - -try: - __file__ -except NameError: - raise AssertionError( - "You must run this like execfile('path/to/activate_this.py', dict(__file__='path/to/activate_this.py'))") -import sys -import os - -old_os_path = os.environ.get('PATH', '') -os.environ['PATH'] = os.path.dirname(os.path.abspath(__file__)) + os.pathsep + old_os_path -base = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -if sys.platform == 'win32': - site_packages = os.path.join(base, 'Lib', 'site-packages') -else: - site_packages = os.path.join(base, 'lib', 'python%s' % sys.version[:3], 'site-packages') -prev_sys_path = list(sys.path) -import site -site.addsitedir(site_packages) -sys.real_prefix = sys.prefix -sys.prefix = base -# Move the added items to the front of the path: -new_sys_path = [] -for item in list(sys.path): - if item not in prev_sys_path: - new_sys_path.append(item) - sys.path.remove(item) -sys.path[:0] = new_sys_path diff --git a/utils/bin/chardetect b/utils/bin/chardetect deleted file mode 100755 index e45a6d4..0000000 --- a/utils/bin/chardetect +++ /dev/null @@ -1,11 +0,0 @@ -#!/root/cloudtrust/go/src/github.com/elca-kairos-py/keycloak/utils/bin/python3 - -# -*- coding: utf-8 -*- -import re -import sys - -from chardet.cli.chardetect import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/utils/bin/easy_install b/utils/bin/easy_install deleted file mode 100755 index 0bb770d..0000000 --- a/utils/bin/easy_install +++ /dev/null @@ -1,11 +0,0 @@ -#!/root/cloudtrust/go/src/github.com/elca-kairos-py/keycloak/utils/bin/python3 - -# -*- coding: utf-8 -*- -import re -import sys - -from setuptools.command.easy_install import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/utils/bin/easy_install-3.5 b/utils/bin/easy_install-3.5 deleted file mode 100755 index 0bb770d..0000000 --- a/utils/bin/easy_install-3.5 +++ /dev/null @@ -1,11 +0,0 @@ -#!/root/cloudtrust/go/src/github.com/elca-kairos-py/keycloak/utils/bin/python3 - -# -*- coding: utf-8 -*- -import re -import sys - -from setuptools.command.easy_install import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/utils/bin/pip b/utils/bin/pip deleted file mode 100755 index 2a0f09d..0000000 --- a/utils/bin/pip +++ /dev/null @@ -1,11 +0,0 @@ -#!/root/cloudtrust/go/src/github.com/elca-kairos-py/keycloak/utils/bin/python3 - -# -*- coding: utf-8 -*- -import re -import sys - -from pip import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/utils/bin/pip3 b/utils/bin/pip3 deleted file mode 100755 index 2a0f09d..0000000 --- a/utils/bin/pip3 +++ /dev/null @@ -1,11 +0,0 @@ -#!/root/cloudtrust/go/src/github.com/elca-kairos-py/keycloak/utils/bin/python3 - -# -*- coding: utf-8 -*- -import re -import sys - -from pip import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/utils/bin/pip3.5 b/utils/bin/pip3.5 deleted file mode 100755 index 2a0f09d..0000000 --- a/utils/bin/pip3.5 +++ /dev/null @@ -1,11 +0,0 @@ -#!/root/cloudtrust/go/src/github.com/elca-kairos-py/keycloak/utils/bin/python3 - -# -*- coding: utf-8 -*- -import re -import sys - -from pip import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/utils/bin/python b/utils/bin/python deleted file mode 120000 index b8a0adb..0000000 --- a/utils/bin/python +++ /dev/null @@ -1 +0,0 @@ -python3 \ No newline at end of file diff --git a/utils/bin/python-config b/utils/bin/python-config deleted file mode 100755 index 4449dab..0000000 --- a/utils/bin/python-config +++ /dev/null @@ -1,78 +0,0 @@ -#!/root/cloudtrust/go/src/github.com/elca-kairos-py/keycloak/utils/bin/python - -import sys -import getopt -import sysconfig - -valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags', - 'ldflags', 'help'] - -if sys.version_info >= (3, 2): - valid_opts.insert(-1, 'extension-suffix') - valid_opts.append('abiflags') -if sys.version_info >= (3, 3): - valid_opts.append('configdir') - - -def exit_with_usage(code=1): - sys.stderr.write("Usage: {0} [{1}]\n".format( - sys.argv[0], '|'.join('--'+opt for opt in valid_opts))) - sys.exit(code) - -try: - opts, args = getopt.getopt(sys.argv[1:], '', valid_opts) -except getopt.error: - exit_with_usage() - -if not opts: - exit_with_usage() - -pyver = sysconfig.get_config_var('VERSION') -getvar = sysconfig.get_config_var - -opt_flags = [flag for (flag, val) in opts] - -if '--help' in opt_flags: - exit_with_usage(code=0) - -for opt in opt_flags: - if opt == '--prefix': - print(sysconfig.get_config_var('prefix')) - - elif opt == '--exec-prefix': - print(sysconfig.get_config_var('exec_prefix')) - - elif opt in ('--includes', '--cflags'): - flags = ['-I' + sysconfig.get_path('include'), - '-I' + sysconfig.get_path('platinclude')] - if opt == '--cflags': - flags.extend(getvar('CFLAGS').split()) - print(' '.join(flags)) - - elif opt in ('--libs', '--ldflags'): - abiflags = getattr(sys, 'abiflags', '') - libs = ['-lpython' + pyver + abiflags] - libs += getvar('LIBS').split() - libs += getvar('SYSLIBS').split() - # add the prefix/lib/pythonX.Y/config dir, but only if there is no - # shared library in prefix/lib/. - if opt == '--ldflags': - if not getvar('Py_ENABLE_SHARED'): - libs.insert(0, '-L' + getvar('LIBPL')) - if not getvar('PYTHONFRAMEWORK'): - libs.extend(getvar('LINKFORSHARED').split()) - print(' '.join(libs)) - - elif opt == '--extension-suffix': - ext_suffix = sysconfig.get_config_var('EXT_SUFFIX') - if ext_suffix is None: - ext_suffix = sysconfig.get_config_var('SO') - print(ext_suffix) - - elif opt == '--abiflags': - if not getattr(sys, 'abiflags', None): - exit_with_usage() - print(sys.abiflags) - - elif opt == '--configdir': - print(sysconfig.get_config_var('LIBPL')) diff --git a/utils/bin/python3 b/utils/bin/python3 deleted file mode 100755 index b6eb71c3e0ff4657340724cb9391fa56b49df698..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11224 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 diff --git a/utils/bin/python3.5 b/utils/bin/python3.5 deleted file mode 120000 index b8a0adb..0000000 --- a/utils/bin/python3.5 +++ /dev/null @@ -1 +0,0 @@ -python3 \ No newline at end of file diff --git a/utils/bin/wheel b/utils/bin/wheel deleted file mode 100755 index 7d68eb3..0000000 --- a/utils/bin/wheel +++ /dev/null @@ -1,11 +0,0 @@ -#!/root/cloudtrust/go/src/github.com/elca-kairos-py/keycloak/utils/bin/python3 - -# -*- coding: utf-8 -*- -import re -import sys - -from wheel.tool import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/utils/file_parser.py b/utils/file_parser.py deleted file mode 100755 index abd72d9..0000000 --- a/utils/file_parser.py +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/env python3 - -import sys -import re - -#Parameter required or optional -OPT_TOKEN = 'optional' -REQ_TOKEN = 'required' -REQ_TOKENS = set([OPT_TOKEN,REQ_TOKEN]) - -#Direct Type tokens (directly mapped to golang) -DIRECT_INT_TYPE_TOKENS = set(['int16','int32','int64']) - -#Typed Arrays -STL_OPEN_TOKEN = '<' -STL_CLOSE_TOKEN = '>' -ARRAY_TOKEN = 'array' - -#Type tokens -MAP_TYPE_TOKEN = 'Map' -INT_TYPE_TOKEN = 'integer' -BOOL_TYPE_TOKEN = 'boolean' -STRING_TYPE_TOKEN = 'string' -ENUM_TYPE_TOKEN = 'enum' -TYPE_TOKENS = set([MAP_TYPE_TOKEN,INT_TYPE_TOKEN,BOOL_TYPE_TOKEN,STRING_TYPE_TOKEN, ENUM_TYPE_TOKEN]) - -MAP_TOKEN_TO_GO = { - MAP_TYPE_TOKEN:"map[string]interface{}", - BOOL_TYPE_TOKEN:"bool", - STRING_TYPE_TOKEN:"string", - ENUM_TYPE_TOKEN:"string", -} - -def panic(*args): - eprint(*args) - sys.exit(1) - -def eprint(*args): - print(*args, file=sys.stderr) - -def to_go_array(go_type): - return "[]%s" % go_type - -def is_req(split_line): - req = split_line.pop(0) - if req not in REQ_TOKENS: - panic("Token %s does not match requirement tokens" % req) - if req == REQ_TOKEN: - return True - return False - -def get_type(split_line): - token = split_line.pop(0) - if token in TYPE_TOKENS: - if token == INT_TYPE_TOKEN: - token = split_line.pop() - if token not in DIRECT_INT_TYPE_TOKENS: - panic("%s is wrong int type!" % token) - return token - return MAP_TOKEN_TO_GO[token] - if token == STL_OPEN_TOKEN: - return to_go_array(get_type(split_line)) - return token - -def parse_line(split_line): - field_name = split_line.pop(0) - if field_name == type: - field_name = "typ" - exported_field_name = field_name[0].upper() + field_name[1:] - required = is_req(split_line) - go_type = get_type(split_line) - if required: - res = """\t%s *%s `json:"%s"`\n""" % (exported_field_name,go_type,field_name) - else: - res = """\t%s *%s `json:"%s,omitempty"`\n""" % (exported_field_name,go_type,field_name) - return res - - -def main(): - if len(sys.argv) < 2: - eprint("Usage : %s file" % sys.argv[0]) - return - res = "type %s struct { \n" % sys.argv[1] - with open(sys.argv[1], 'r') as table: - for line in table.readlines(): - res += parse_line([x for x in re.split('\s+|\(|\)',line) if x]) - res += "}\n" - print(res) - -if __name__ == "__main__": - main() diff --git a/utils/html_parser.py b/utils/html_parser.py deleted file mode 100755 index 633be1f..0000000 --- a/utils/html_parser.py +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env python3 - -from bs4 import BeautifulSoup -import requests - -keycloak_doc = requests.get("http://www.keycloak.org/docs-api/3.2/rest-api/index.html").text - -soup = BeautifulSoup(keycloak_doc, "lxml") - -for div in soup.body.find_all('div'): - if div.h2: - if div.h2.string == "Definitions": - definitions=div.div - break - -for div in definitions.find_all('div'): - name = div.h3.string - print("\n",name,"\n") - #print(div) - with open("./resources/{}".format(name), "w") as f : - try: - for tr in div.table.tbody.find_all('tr'): - tds = tr.find_all('td') - field_name = tds[0].p.strong.string - field_req = tds[0].p.em.string - if tds[1].p.string: - field_type = tds[1].p.string - else: - field_type = tds[1].p.a.string - if field_req not in set(['optional','required']): - field_req = 'optional' - print(field_name + ' ' + field_req + ' ' + field_type) - f.write(field_name + ' ' + field_req + ' ' + field_type + '\n') - - except : - print("WARNING!!!", name) - -#print(definitions.find_all('div')[-1]) diff --git a/utils/include/python3.5m b/utils/include/python3.5m deleted file mode 120000 index f39ee13..0000000 --- a/utils/include/python3.5m +++ /dev/null @@ -1 +0,0 @@ -/usr/include/python3.5m \ No newline at end of file diff --git a/utils/lib/python3.5/__future__.py b/utils/lib/python3.5/__future__.py deleted file mode 120000 index b6ab033..0000000 --- a/utils/lib/python3.5/__future__.py +++ /dev/null @@ -1 +0,0 @@ -/usr/lib64/python3.5/__future__.py \ No newline at end of file diff --git a/utils/lib/python3.5/__pycache__/__future__.cpython-35.pyc b/utils/lib/python3.5/__pycache__/__future__.cpython-35.pyc deleted file mode 100644 index 2bfbb52a0c6084af60fb537316e650670b552de1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4361 zcmbtXTaz0{6>jZa>WXTu80}hloYi$rEOD;)v%2QOPTGK6Q?9q(U z(_>q%JWv(*G5i8v`5k)YY5xLGe5XgVEA6f+2c%L@&*{^r&+R*XbaQ9N`DbPC#ql-9 z{>2tPMa&=Jm)tHeCK+=v7MNUNa+S$7CfAwVU~-emEhdX>SY$3%9X2d5RbV$=@Lggq zShtxA?j7c0!!C2N=Q4A#?Fw_T^D1+TOkQKI!{i=wFR`!WbtZ4Hzv8qT?E4kwZZoyb z3g{dt|xn?PMn5;5Yw3IzdsWEw%DaTT-Tgp8q?=yADQf@HGS-1Q^3^o|+C_mPc z#{)hYiA2deLBxZ|kH-^Xf_|uYD57C1hKlZ0`kALSl z9G@d4OsZ8&j1~VqFM0F#{St3aOb|yR?5I%TFkY&Z_!ALHVPZX9AX+gb>f+BKvFhYR`r>b>e+@!%oO!K=w^ zq8*La`5pHzU_0!z&kDYKj;&K~)(^UMuUUUyZ_@cC5h9YM3NQ7Qu}>d{2Jo>e@mTZH zAV3644|!sA5Dib%$^~`noyI|PZpgCsWyd)iL2c6~$xu6; z;J2wt2#FQmPYoZ7Dfi>Z1W^jkY(tU);#rUg@#k!%Jt9nEIEuI82-q7d5h0(ls0coR zg^`jx_rWkWj@0pFGLLOyMC8LTMAi>QlJLAtWDzxQV(5feCX*Q13%O%uMzKsPPIaiv znKaxlTQJkgSxxuLP=Bdlpk|Rf_WOYu1S*teKA<{cvnd(HX^5&o!AejK3CCG=OSKs} zLJ!liiVS&)$o(`3;Wj=Um2G8$KHyN1paQz=dq++qF%EnxQ#rfDM5-$1y%ChN z+TfX>D4uFior~5UtvkX1y$Bwl5y5p9R#0~CRVzv%?yp6NQ1fvLV2*`BOi3FtnIIB6 zKuK_JOND}v1>&&ny?y)EDv*%njmQsEscQ41t0TCw6`zDOzX23VBiReDNq`^dGW?WfZx6 zwhN^rgDR4_dv+y_0&<-f27nCmakkqRT2DQZct_1=N6p#p$w3ekPi9x)cW<7P9s;3~ z<11(yj`3pw<1{>?;V(3>0u3uPtkJN=e6XE-Rxo>nUqXXI$AN|dBRUD&cc3Mpe!_Mi zG|zhwnxnU{oe0g*VH9y4JF~4E0{$8V(ubaO${~Kq&oO*gVBaz3VX|T;cwMy<9LgZ1 z&?>Law&M9UJ1dU!%XPN1lt1OQ*;=B)fqOaUo!`Fhm6I)ViYEX3ooV!2?BCzibR3(S zAI7OP8d+5v#YVMnA&f%lYvmbiW&pK%n6L{#Qb;i5D zbrkL!;Pb+p30NSw7IrFXzb@X>0bZCo|!X;JbXWs%gx?0KjWc~Wl|HkOk*<7kyP z2?JD^Ja6WBUUvUuzU_J6rXtK%^mRJ&1`Qw4@G%Vp(1n4L%PQN#B-z5SUD#gV-r6o& z>M`ZlG2v#mMvdZZ-S&;gt3+A1J>oI>=9oZuT%>`p)he&+TX^c9(y&d#&+^xN$*$Wa zDp{84Jxe4cU*b8h{v@B}OJ@YqE0#_-Tzpn37o)8j^Rxc9T~>qJ%L3`tT*EU3K5tk-83+>5Xnq&n==!Xw|#D`eXMx zreD=t_0B;Le`pSx&Gy%zUIX>$S?^h=?mcciZ_wW&_eZC+gD<=7=CfYiYdm?{?)2P` zPnW)K^#15|dk4MxlX`1uOpGjut(y4e7fgZt8v(VjK4pP9`tB--J7RtUmkQi zFT8`U_vPcG=Hfx8N_Tthrxp&Hke~?@nh>Dr=GBz{n(|*$>TAM~CL}DN%!1C=@vSd1 ltp4FHIFfHLY^<&pmcPZ-osA73f9bojcWVQD#g!j6{s#i*YL@^2 diff --git a/utils/lib/python3.5/__pycache__/_bootlocale.cpython-35.pyc b/utils/lib/python3.5/__pycache__/_bootlocale.cpython-35.pyc deleted file mode 100644 index 680f53ffc8f6af9f87f7bb9aced69a8773db20c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1091 zcmZuw%}(4f5FTeCyX+4tlooLdr#2F74*gLjDq0HkNDoWZvX_vJy^D9VaWr;>g4#>r zW%?9-g`RWmiC5^U>dpzIF_{(~)*Z#Hj_~gkVz#sVU>yZ7PhQ1=;07F6s z+<}C_kc`@PVCaBgFm1qe0eAy08Q=%tWG@1D;fkCWA>DG` zj4|unymvlHAHi3<*Sg;$+JV1x@q5pk%T&&z#MAjm3*)J=XU>F|s5nZ5H&;BTDc6E~ zk?~||1ZF4*J#8X1dDea|=b1u74x^&F8cKC@&)=dOoMb0VjdPhE z$ILG1v$I2EpN3v0FaT2qm(>Go41DM4+Pe5o*$nHz!V`lPfWe#v$D%oNIk08 zKLK63^fwGpDHFtr%DKT@n_!{>jd3uM<}4reV>J&%5=Yy!NTSl)SrN=cLGIBk$c;>N zkjT;NmqAvTGnKyRzY4+;1*}Q>Sy8T0Ce-t>Kx&{!sSz@rSTSi^6EJKM-qmXN?rPnj zh1C^60`Q%|H_{a$SW(%s@uqCIW~(Ck4w7;Kmn_%{YiL@_GOf_i3k1;UvWIEk(IJs^ zbrA@117-oHBx?pU2WUyEtj`91ymV>iq7zS6Q}& dW$SJIPwms12R>9Ve~%2pc<)*Z?Q7~mRRh9 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 Z$`A1h$JbE$O7M1Sqz6~2k?DcN{{x~0xorRd diff --git a/utils/lib/python3.5/__pycache__/_weakrefset.cpython-35.pyc b/utils/lib/python3.5/__pycache__/_weakrefset.cpython-35.pyc deleted file mode 100644 index 7453704246714eb6865c43027c2aa571b3fd75b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8468 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 diff --git a/utils/lib/python3.5/__pycache__/abc.cpython-35.pyc b/utils/lib/python3.5/__pycache__/abc.cpython-35.pyc deleted file mode 100644 index 66cf942c1132f8dc330c831fa7254f8117af7722..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7912 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 diff --git a/utils/lib/python3.5/__pycache__/base64.cpython-35.pyc b/utils/lib/python3.5/__pycache__/base64.cpython-35.pyc deleted file mode 100644 index ada32673590ce647ff92bd92ebef26be2280ea25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18458 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 E1344{vj6}9 diff --git a/utils/lib/python3.5/__pycache__/bisect.cpython-35.pyc b/utils/lib/python3.5/__pycache__/bisect.cpython-35.pyc deleted file mode 100644 index 3873f2a4b5cd5030bba5d89588c162f1f8951e98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2881 zcmds(&u<$=6vyA}I{xjnq%A3&M&go1jki*PLscrE;*d*`NJXhDWQ}*n-ig;cW_CBV zBS!+tfq#Yng1=+0oN_?iIq}}C?SwRyiWEfDb!Ia2X6C*5@tN=LcBj+)?aqy7A2b1e zhcizL%b#INf5a>V=wZ$vbRcvgtiaC>^cYA6J+zee4G62&?t*loS6SI>5Z0|7JCr>e z5H_u)3iC~CY(ZRuCr^_tsK`2un_w2e7<-m5_!eXCd+noJU#L_DnbHXt@kkq$MU%99 zg0q9iL52R|vw_LQ^axY>3uX&Dy)l5f4H+)MftL(^Vz9tfxG=7RxeFOqf$YaF%s!_f z*h)jvWqBJH{QhwT7PjM}0`F1l5U_+pzQ0F>a09lF9jZJkceqGGK9+KdO+3{mlOY#rnom?R;)1JmY3w$e9G|@*jZSeF zj1=LV9H9@ja?Uf&vq*BIMp4G~@U$|~7;d)o^3{~KQp8-CQOaY@cS1Q7d7SaPo}Eyn zPED~)c7*5gfzENN=-o~vja48if}ofK$x|sz5XrD>n+?PLKiWpulNT^9qfxNAC%7ReC(61LMllnFkR@5Xf>Ib2K85&+n`6 zcq9%b)*pPzXC>sTcFTu&uI{hMA5uM^5Y_EuW<3Y!0g zP{wk&)=4T~Etxz+hSeE!B(`YMHYy-E(4QF?|P#^jN_@^cqF2-w$=r z@7p)A{c=Fm4ar?mEgf2_4UOs5`lYF8?Mi}W0zWKM3bYXG?Luz>8hD&PEYr! zs++@^l@fc!J?vziI5v{lu?-}DY!C!6kORgB39yc1Aczql{v!dB3gRFz5bVMM64(J2 zSs=Ul{l4$jtE!%!A$6_{WXP_5{p!`bzVChadv#!ZeDq(Pn0n)z-!|q?Oy=(yq)+1$ z{cgz^-908q3NQTFPe?r^0Q=GB{O%m{kSOyWwSDB!iFi#S4?4Zp9!kQ zFPorZ_P<{+Un`iaZ=fdp$L%*O=Jj^LyzW8r17VWe~0n+8Gpa=4;cTT@edjQPUGKY{KLk-+xYhw|6b#J#=p<_M~r{e`1c$C z0pmYt{A0#HZv1KEf6n-yH~tCZpEUlA@lP55A+vPC%%cMjn|bu%5mTNYG4trhqe$&C z^XSWCW**&n+|2JbLD5`8r=Bn?MH4hvaT7Cqzyt@(`z14f5V=orXv{rm-p5oOLe|q9Dzgrm;7%!c7jmC5 z{^;bRfiuUlhfQ!ua_>d%X-+9~ z?@Dq#d z2rE205BOXp(3l3GULy3E2E@KhFft9$y-avA4H&*cz%mVBqODni_a^WYfW^;O32OcX zkS`hkXQU*cecAX|Bt2s`UN!+Bf6f3c=O2>voTML?^lOrSMABc8^rMo#D(S~0{ko(d zH&@$F0P%qiK>W8$g+hVo{g5E}!*YE@u8+#~F}Xf&-Vn@3+fSO{NfTZ#*>&}lnSaUz zfc6`LUjMih+%E_RNY5MpO+pCxS9`|T{AZboTQ(m*i{{GoTbsY_H9CIKh`f_0y-OS2 z%M9;wu+)sY;l>H?%%zK7z3qF;L2E4tqnXjs(W_yz+YQ>@!iM)sJ#3sj)Aqx_ zdpTHL=!Hw(@zr|kbW4BCG&-x(c;t9v8Wpc?gw3Vpu6K6!@x+kD_cz1a$UuiNojojSgk18`})hCzMxa!}9wB9L%zGJDVFjVF2f_~=pqXr^hv zU#i`Q{ASvNq)1d|uFjmdU>6)k70nMbw6@*vc9 z;xWY-+bZ~)`Jey%dr=YJKl!nI{rD$QS$=` ztVMRc*f3peIwk@8ViC@0QHFWwTf&?S5~>ygOvx9WgcJ<1P}oi!>5t^KL~FxK<^BD>88lkDwS5 z!{%MEPGeR^Oc*lFOw>7o(G_N=N8?Jjw}uruRI9av^;#`13*3&PSK+T{iXOBo*qTuy|aKg4W_cFyYhq@uT@u zVW-nQ)o68kemCqz-BU}QQ&HGBwbbk`_ZCR?P6e$-{p3o$8Fr$RYa6Flf(;a}ubk?2 z0kc!B=E4(?omvx;`{>N$rvzTn3@GHoXy9#pqW!p-(mjQd+`lpW+T1G$KvFSd=cz$J z@{ivRnA7+Hi~}UEB_L%2;KH?Jx&V$Ldjf3tUzsk>Za(nb1JTR_k=I$c7BsrvVkh(x zbOCYo>Rs=Fqc@(PuEZm?S_7*r0)$3uwbhQ_YXwM;)oSnb>Mg>oR+HI_i%oyJ5I%*T z$lU3L(qlY~BEec%tF`beVy8`^RG2JmPG*OvMW%;X+}8UXN`_y+g=pe;8mNablBo+{ zV2V)6T-cl}oy$l>W4MeJs>9V{wJ=tg7|*TT5^kPmDZ+o?%H^6Zi`;+(ixsU47VBCT z?3L-^kdUiCT{gx$7c4g0K_pAE*#@Oq1QnBMjk@)2&#SkL~=fyvD% zxja67YDP;OpY~P*@M=HuR_hyHFA6-rxwuHW+VzBhy62a{xmzR)QDYg5BqGaR3p>}F zBmmMYCAeNaTfJS(rf)^2jaC&E{!J@9#f zHfNvW*RdCld63SM)i{$raV+X#l9zx^LDZi`cU4B_0_b~{_k z7M99-E@x+wBdD(deNZ9md;OJ{(_UoeE|YY#jJX#C1@<5Bv|AfF(gF$5J#(y|fgkhw z`{7DJ8q^_sQSeR=QxjnAq%~zYJ}QyFz7f4O`_-A5nfJETl2+ns%OwU5!99c(gbsCq zFJ8UX>a3%icKtN!5SjxIh#Ryai+b0ab<3j@8N{yrxT@=^L2|@Dev`DH#U~=e29JiG z4B`&DT|WvL#XBz|oYERgznkr~URTg347$CrjTP((e+3YFUEFhh=J52P6J9H5FJX;g z#YLbAKIQl9=q<%iBB0Glmgk5KM0DUuYh%W{*!57Z-fIEnx}97#j$$N_^)+OUPV*9(hT3-R+tmxzgLJCMP^K-*aOCeOS3b}yL7Se-8WSoJw8HCVabc!8( zaxyn`1KfmOI@hqW&2X^_=JzpFE=K>^d;C zlQ~n^D;u=Dd10|;)t80dqMI)w5PpMjc~Pqa-e|dkGR5dba#I%$78mIBYOvY~H*!_1 zVliN`FGBNF78=~B69N#k7HyxR99M2e+FlAd_T(?%x>Jqxqpv&133pm|Qs}d~?m`l7 zyUxOMNQdWnN##@#QK{klCO*2v_9aV9M>acM4NvnSC;o=2WbfZjdQm<4=S@a!z zM7|z7P%TVMHSp8@m5@4(PxLx2x0ZKB*rmBni$pfHH^E7zF3{ICs3BNh zYs~<{1?5{wfZ&o^Dlv8vvsSUSb*YP{memDF;_{@j8B25>;Rn@#lmR&!7LEXFcLN-r ztj#r~0!a8GhT9NAi3Gp-Ar6RIN6p!oTB4lQz{qKjD{cO7M>x(xSM8Es44f>-@KO>% z*0XhB+i3_XvraVw*Y-dS0SfFoIAcarxDu#btlFOkMNA2!tB2}i-D|DD$1dIbXwx_`({;$t=s z4(Os3`9MA7JW7`u&|9dAZCzhAt{$zmxJcB<>vDW z#CT5Tj$O3_5J5vE$^}pcSA`-D2oy+D(u3m}jb~QJrWhYrWF&pK5)Tuq6np;zhlr0E zi0?_MSr`gWqfkGm_!9Goci~ICe3_S5cuCn%$~Z`{{|P>7E~$WV?3$>KRmQ3fWV*i+ zQm65Wd|YmmecXgWGcj(GeSnqh$UflP<0J6-?E#V88{he&$Yg=P6&*K!Pv(7YnIe=m zG?4aeEeXmkx)_vu&@^2#3-u@v+k{9gmcukt3%C>Qn<|Ry^0bn^>JXh(+6e?_te_4y zR+mm$N%8}84o>k|PVwEiWKFX$#}+^V$Vp&^GSmcT!wV<`IfKv(1>Rp|#`g473jH^f zQBqpiQ`|hd{rozT+9=}@{_)$bp^Re6?!cgH$zfUP`8gC;!H0J74BC+*#=C1eMQWiA z{yXw?IhQu4cj{8^sg%~!pvd0I+`WhdChD5lv=6)oW3(DXH35TYk-o9FVBjvB_h7$9 zK2X${uNTcBW!11`%ZN%LXEc137xE`aWx}guY#dfx_UqkxTvaX+4<~wb-*9Ci{wc~w zw8NX?c;TMnRAKYJ9Y#8U9gy6~0PjS?AqPylJ7b2df5D7_rdgp6e~ub0Qj8Ziy&d|s z0}mKSB|7hGkO{?FF)I`un6X3qBuzhL`$EnOJECMlRC8qA&C3)!P%vwt9!}`WE*0Ai zyFgw>>3%qoLjLGB`;t=N(d{X)pw3aYbQ@%N7UljkTi=b#7|C#DtTHh?Rvs&byw||T z{gse9jn5}7%pXJ>1BH22?L!!SXlMDjg?X)Ydtu(TF4T4hVP2}C^tP=qpERUW$PU81 zptr*-LGR5!cdTD!_&yQdb~3eDZ7aejCATs1f0jge5_%zqw_r3SunJw%!#N4Y4%M-j zl!_Cj2k{r3>(g$owFavl(h&3E1@>?Na}ou6-1R;$t|z_s1?z7q3_tBUeVOvL2n+h? zN0HWrm`t&Un6bR9p7d`kopxlBj8a_8<@yLRGdI`!=0Ib!awN%bMR^uBSHbb$G-Q z>j1PM?JB4T3#sXsM&%7afC4-1-PeNf1N)lkOuN%Q*$&`(X~K?7|K3s%x~Ze% z67Z$lN?mO-+(bG|0Dkr2+?QT`ZBDuYejtk1rfKa>9Ekqn%I)Fv_rt;guvUEOM~YC|boqw@}6g zF7tsb+pTiJMP1*&>jrUUCrxZC7V2E*RWeHwwy0treV#Pw)8*Ys&A$mVKb}kr{I1rf z4|fxMYOvyC^>&hJP4OnD(}mj!6%V?_n$=d%Y4puZ()y0d-2H^eZAcMh*#8%wRGAwU zWp4Li@xe#YpQ18nr(pAU1o}HEbGGD%QsykucvhK9ekLI9bK5`-?9gc6Ro^(t4V-*A zuj5uZfz0bHr~S56H!d%zZiLnCt8R}GiMV3ScB-45Bgb1mQPoXn@oBgI2di$bOG?OU z`c%sFKUvl7HBRtA)h)clTR+1KBSrc(0j{>^Ika19Y{>w1U^$7vvD{m0Y*~c39gXcm ziVNFlY)QX%kOWeV4GPmD&C;+cpki}tjqN1|_Q6Jkr1gR1-_6Tjv;~a~ty|3-)M!g5 zZlSNu-eylyBD;gWCip_w-wvgnL%A8YzC~XvhrBnK;BMefAHij4QAvzr5^sbsqnj{- zA>;_QGWcKAhPK830?*4$*wcngfLjPf-z`6({2~;6k30o8jYP?_1_aPgVQ%jTiHl0U zNV53HZwC@Ok(|$h(S9&Fx!{9!6!o0DBJXh@;HRJ~6Mh23<~eR!7vJc~Rue9EE7>t- zSFCUh;Db<<5inT+8FtRKe=8ly$q~~0ErOx8x;oHaUtqx+!iNx^KyT6ZQBiEn#W@U& zjM_FPN*?_f;-aLUBsL0N$OiP(ZxI@mn>6p(ClVpV{tbu{N@Xb)@IF*jP`>+8&z4Ic z3wQUAefZ#^0jLTxL%BbR26DKwLtId<^Z7XCbZ+1`lSm;fCS_s2!PIT$U% zZ<0Edkudw=H`|w8MyZUzrO!W>BPlqGPsAWgHRdTXK#(wO&@`Ije_}~RTq%vIYJmjZ z-hAGZ@EbL;>+(JpQQJ~=Mva;h*Uu2!8Kn)`F_zV5L5?jWiz^b722VUD0x<*FqE@BF&(yi(<}6q5+-Jj!5TbDsibGTt)%}pnKK5Mk|0T zM_N3gRmeI+ml1Z;W}s`njztfVt6oRVv zH99aEY#FUp|F$=+BXZB0!AARVQKneLt(?!=Ate2CijazpTxxIw;R`_HPP50Y>}1mt z?fpKK13xQ7m2@2;raf2@p(cp{t0Kk~#44_GPeCK-!?5rzwEoNNI|X!8m?|7ZEP4*T zSmWTH?_tk1@*D}F9Pp=Xz5v_BasVbz>gaVa9)>OfH0JeV6orqK3F1TdgCNLm;nkwto?>-tFXDhuPs|-uu>+Xuz0OVY7;2JtyZ*z5L*hOAR&Zh1_Q9KzQg*X#QiNZH|5q*UC5F(7lgg?hiotH&k204^TOW$D2 z#DuZp#G$bv{2QC7!V*zxAkY0(kUEV|^sjNrip2qTK0*SPa2YEc!%K&s$b@{Xj%3~0 zi6A5uj`0Z65}ahilCbX%w=_p~j^0F$c$Xm=--K9l<9Hq z&(y7@ECvZ%Hkk4jwxY^5Q>Gzpj{;fl3lCv5I|$ilaeJVU4P4`H8{k2SNWh=6apRg? zYnTC*$e|brQ>uR(+=FU^Ny({VIi8&!5~?MFX*@~`nwo#&-BbWHEhKDjO#+{5X?8rCO;dc) z;tAQ`QQ-X!i4HgYm`UABHGyqEiQuc)nhL%pmct*v@tg`pqe#HH&VYNR`ylyTu1WLf zkRB*+-;W#LWAh?U7dEGq`rAg;I`jiJbHOoyUHC=1&-$bPh_EhIs{s>f@c4QG+Qy( zs-!)Lj%ZJ&IVuh#lYPVN;E9TfzH2UR+$-7G;)g8UA4!yjs(Eh++o6Bnl)Iy{ z9r}$z;k{u~*!(%hU4-WfEG>_5WW(m#t|SbjuMX@oyas|S_L28Z0ecfU8nlDnSIkPm zgkLOt&6sw{;EE#!kX<=B_eN!02^iYb@>Ahalsat*(TFn5;5Ru!wf;ZKAk=CVi&PeMB2T0yl8j1Z zMQ|5}n3HNDH}-`j=5BNKMDS4gO)4lV!nb=2cBNjbcrY) z;Y*VZQtg0Ju=OD!{M`!h5a-*-g^e8HyZ(t>hZZQmcfD2F4{o32ZnzWH9FIDnCD1!A5iH zH8MkFdO{|3zEV#g$tU#%1j05KHz2Vx`Yh;*;}4-_(jVP3l{_z7VpRLjb>!s3*|AU& zK?mr+(sqLKjuVh~d8l(!A-HuaUR1RV-gNH&8)8#DFUX0m?chn_f-#fHMh2nmjQ2@YxK#K4OaUN8f+#j?uP z(OFX;yoNOLQB{@UUbgxymQJ{mm^a<(%U7bHQc@*TkNL1;6QJ;zhE69{*3^*@57SJ5 z_M*A41ui!|9)i=Du*u6Cynx@CxCHmA)l)f9;S%qVp{f8exfS0edN%CFqtP1n0P?Dsm!^ED?$h35r@O`L$C#K=EZt6Ka5{eWPVInh%YoSE(JFlaYZUr?@+4WJi`uk zaQS_*`3p#x!z0j(M@psQSYcnG3|V7ep@8&caS}m(Rh;}$D%^{0&eh^^T=~7fI8~g$ zX5>m?tT|a`hyb){+mV((#S=?g`DHszHsI6$CYh=b?g{oVDy(V?yAOi6HwRL(TEbB+iWXat4 zW8sV7snEtm{dymKUBrR#|Clb$0;rho5QTv7drX7HBl;KpiT+D+S40F9ws%K)SAVke zP;{V*p_}0OFngHdlP*&8NeI)g?;8Ti-R5aP`JHb-0s`cx_iX+n>}yQ(^u5OXfD-!;eu6)c5Ft-(-X~?k!4`?taxN zY26Vg2(_u}kVX$8E6$mK`k<>6=qnxqSkUTMF!_p5WW5{(_+KLHSsSor;)+>04wT2T zRmw%W;iwO=L4&OH$>$`?Lw%H&FT_-#*z{ zg!8nW6^&sbByI|-CicPMq$jcn6y5TSEFMXK8NEqdA|%Zilx1tRybMIM%t#>B;L712 zzqw$9A00sg1drrUVXtY?pO^`rqRx{)0pKAge`t>awlZ6%LAzreE1)?Lj72yiRIM=5 z<>qZU`yrJ@D2hpFk%cTtO$enSY~pl+tn{4O!W}}kg{qT-i;zFT7?Gmn{Gtp7Skp&Y z#TOwOLPJPW1{;pWvqY!KCFza~;-)07BS08l~pToLC#tODbSdW99 z3-LH4ct{*%TJX?ALT3R(eh)|pVPZe8S0EC&!xJ_i!*E=Xt7riUgCdT@QDmJE*(sW# z3H}#Qe~h!VI%^l9zsP2L>z@mM9=G}iBInoe{H5Ao=4d2@sDxu^AR%tCMX?t+U?&+B zzul;~CNZj8c^|ka-_Bf8!V&Hg3h^Ve_v!g-)PsJkXy^8$ZHKWd22{TAkn`py@}VxsL7+_IK{*bTX#_?khk~*y9MOA zy>^3YerkY8>?GWb%97&7pV4FQAUP)wP|!dy0|c%fLZVU7bvGHEWeD+5uf5Xlthd## zRl&sYkKY9US$rbOs35waS*lqwEoaFw2WiNJ*&Jw4>emuOD&r6?bEf+P%m&VRADgnO zh>Pg8;K~M?^*y1rp3tC<^az(N6G|(I>=X^sxg~$g@0`CP5KrpVUk*z^oaHbu7_0iN zY>DyAp4|ml`vkESH6z5Gd6Whr?AnvK#73C~6Z?{F@04~TE1J%NG?5i^qavj``1}Qd z#kw+GQDsF7=)-YU`##XoL8|i|QZV6b<0E3(*t{z{1NyY{w1_^Ii@L$%8P+2@gA2JK zy90Cm7K#X6OBk(aQ+=$1bnm;4nii7)7#)S}1;;%5p;{+F-Klln{}-9o2h9Onr*QG1 zIzVEcbl_`9_sJPT?0+xQfx`oUkaQr*aZfy?0ALI-G+``I#vM>rEPOaI3Gr!V3Nr$@ zZNy!2qd#!{Ep3A|A6+C8j`wd|LpU;Gz{EJ2h;zX|e)A)wOk|>gi1~{sB5_&?WG*qI z4>1`%@o!xRib>o_4l!jBeo(xS))|(Ov_3zeb>9D@OzU?K7{0W=RkZ^F)(N-=31WpJ z24o@rz(Lpf=#-MKQxQ1WwQT^;`~RLDDkH%S&;us~^l?XB=OUhUT_Pv35mDMPI6v7- z=$;xLb)L*7O`{OZYg)+9Mo3jMYKjn@bTBr?az};bKXF(>3K1kV&M+w(g_nc%XCYW> zTjBe^I#j7_-ZKDIKBh1!5y8Lj+A3@gB3GZPApWPB&I~3I8F74is$UX61AL?f5TX^N zJ{8CNBymzamA^kqJQbzTUuR#rD91){nrU%ja-z(CIHse79pd<&7=m=3kFF}A_-TBi ze~C)~xfTloS6L#dT#k?^h~tU*pHea`&^R|=4Ey}4;<%H}#h9N;=a9&qbdE9*sWr3; z5;?@^DG9TJMDC<>NaRjBS8-efbT))%xqYMLxt~-Tjrs$lzG?$Qrm| z1ypg`Ny#EsM}y^RXL_Vu-NcUHdbE;h^c+K9NrqwRwKnelVMW$+nwTkItYY_F>oi`4 zIJi*`>4f(hj&Sd|FCI7QAsScf9nr^+s17ilxDL~5`Z}>C2Gbf&p?4$`owy@a3J!eN zqpPYKiNu^4>qYe+YS5?OgmsPD$_WJ$q+UuXsr_Y}4!B0@u;WmWO}j%)3X^P4O$C@z zb1{Bk(gd)uJ3Fw4-vlnHE;ED_|M<-%BLV=oa+1e5UB;;}NT}w5yKp5TjU1>p@PB1< zpxUS-35$zzRk2P-!vO6jkHYr6N{2f%b9dJ}C!q$o@l)p4JcS+6?-9x&D@uaY5%{r;uz_U8c}roOt0~(aL)Boa zmgX#g8MF-$%L@Y7`Q-17PA{v@LaEgVf7ppT(1Z|lfYppW6fn2vnv;AbyI3ML+llKN z>%Q4WUAX#Y-ke z;MtR$TmnavAisSYbH>Pw2kgr#^ZQeSNOw7WW`BnKiJ*E z99%U4aWT8=g}w|Zr{z>RP4}xL=08zWsS?Cv;t^Eb>G$M`X6tbv^zEDCWFg(Fa@lSR zCrwNh*Id_MW!Ht7uMC^;o^%-R!~6|@wFd5CBp^tl)_tIXQLo)$VBs(GexJg_XCCBu zMv*WY1HmylcanmIW6G(+xnYU@2)&k$>ri$E2Sj?%RtXU(V2_UaeCJ@&5L6Rc>?k`c zs6=0G0;R7pR}{BFgF(~g6bGZgnczU2RG%M6s#c?Xid!@IkyWedlTgIcghMRFxsRfE zm&3ox!N`c+V3TmwZHM@EJoC64Vo8SB2P?jB;G;SxMD~4-?SS{uFR`T!bzL|$I5&%* z$0NEzl@n9>)b*HIs*K@GOcz|6_v0Z2xR4sk-Pzf&%hF0z{b+Kfo1vUbEb88L&PpC?cm;fCRmH{cjI>?g~-6|RwHE0<2Y&B8&1+sq)o$Mb1 zmH%@NvPFTc-S(1D78%5+sr$c_PAPQ%z9|*8|1;~EdX-%lBp9}dTVWXoFb)r?@T<-h*S6TgK5aO>##ZueE(knkSfO$eAP#_G;tR; z8;!tGH3an-Cs~fk)}y!(io~x5=?Wg?-!MK*pT#HoDlXQBg!k4QA#cHIUKwH<3H&?& zS`N}q)+#HV9u7o^L;6?K6BzOrsSI4{;!#=Kh)?UPet;-;Q40{@24~3o2&O{>7>W&< z8gzvrh!>^$^B^kTtK1Y1ealJ@Py-=?r{OCa^hu|Y$bRbUaq=OxN`~X&tpkYagocon zBU6dm>BOgm7(!vph`kKBct%2?`|FYbTZz`KHyRAGrD|pO@~aB!I+FM-vMwmbeb4at ze*0pKMBr!a^=gOb=$C=A)k+-Rj2;zL{u8qGz-7|A0pTTiq{?a(?9uHv@iW>q`Z zpBbY)O`f~7@Pwic)hl_mi`Fi$ZgFpC$iBJu6@;*2M2O2AEG$};#ucFY< zMXi}9e!0#NaL!AbV7b7?VzV`F02#0l;n}F;tw;#_!iI(vwPxIqbW$XsJMyp-B9u+6 z?5hANDaU;QnHM;?8j0Ats$57Mg2)mQz$sbB@FR;AFmR;qNO#D99o%eOSm0Zf>>NcQ zsar@{Mf};B*I#`bdDFx3Fh|W}5aKeCH)OVmQ1c@WB5|38=F2?8ZN3zR>-};E8~Iss zk2{bscaI^g5MhakXkuLSU5Ivep%t{V@FN6w35k?)LU9q%jF_mNUZuDP2>i7wGqm#D)@ORCc)_M+^z5jy9BtE5{n>A3L^ z=%O2@>yM2MrZI=4kIRZXIA8-5NPs?THM!Z!EOyz>l9>c9H|{w~qK|WLuMw+NI$!B{ z{sNIw!ua;68?1}{#$`qmynQ_jmgo{{Pguw--pD3ojxwQIFhq@dfZ+5X$!%kuKl{OcSOHm4-O5gQ6QeZpQ7LAAOBLKoDN!TZa6MH_9% z+KR@TK=u&M%vI#-#@us3VEPw3peD8sxS3@}k75jP?h0qfILXecd!~@GM6Hy%(rw7nVQZnC$a!@umj+0`Zd)pJM3$y?b zPHb$$JxKo82zZ#+uN2-njE!t^*ZK%>beR@-TMHoO;mUM*^Ls+Ngh*1&qCuM5lP!3a zc&ak$_64Av^*fS4IKb2rL7+xTKaqf`ws~%Tgf)ix`G)MXn9D8w*s>0-(lLR-QjQY z=Wp;rD22bpOP|#BAo9v!mV-e=%EG@Kh2bs+T?#j$USkDe$?#;mZ(#%Y3PfEWcC==9 zqlOa}y2r!z(zJK-dAx79(M=T~r#dqmvN+9QI6w^A9Nuuu_e?@7)OX_Gc`rF~ksI-3 zHi)kF9f^wMt2p)Ix{G{wq9YkL#%4HI(IH%#(&4u!?B*WGNxxb&?^Ml|bXpLATAX<( zE;Q4ukPgKkjXuZDGOFi!j}ykqN6hAfTL(S!T&n}EGJ1X{eMD-TF3guOpuU>p$*ol! zOjlNoyr`sC~hqpo}UsEF=$-LJonBN zAxQIv{{k+ZrHISAE;&S#m^pKr=>!31|`ahY>cis#LT0DXAp2 zsId+~6Z)b)2hVO3Z=04Q0r(ICkZfI0uv1XaG6w57jTC%KHmsi7&~$oK2(5{1iWaXM zv@287llR?IhusIlRN3TS0R` zW9_LYAD>wxLi3HWGWbl;e=_jQ8K%JDw|Wmf^l;ryC*QhS0o`4VrpxwR0Su{zp2mgM zxUdozuJ@zRUO^#|YHiUY#2^W87_Sx%L5v+Q?ky;}}yjrY(* zf(W>1IVrR&bHM35HjAy|Jqoqj<`Aa{(K4GAiItgtPTw*4Yiy_#ZA9}!HI?DxU3iOZ zC+v#uIA2;{-iUWy*}#z@tCGVvv%?aDH?!}?qu~fIWE&wx@sKnpoZ{sUT;dVNM95or zLvoLBf)}dL;VxcAd7+jZastAKc-hCxeqLVZG7=3%D9=1DC* zq<)GR30#CfdQ9EN3#E{dtS%%mmE|h)9G>LQW4s*aWtx}I@j_KDJi!a4;rVK95!51> zA4%XBg{LJy>iS@;^LWJ@mQM!cLc>Xv;^F6DY3;Rw=Q&H!-^8U_JXkJa&-G;CD8fOg z!Eie$oLTs0Y6OQ#z{s$xS{lW_Y6&r*_#UZ9TFO-``|q84asToCNA^Fw|MUAV?*HM` t)v5Nu&rLo!Hj00{@ekjK9K8eI2TG_j`L_p1#+LNot}?&*-l2n~{|7W(u<`%^ diff --git a/utils/lib/python3.5/__pycache__/copy.cpython-35.pyc b/utils/lib/python3.5/__pycache__/copy.cpython-35.pyc deleted file mode 100644 index ab5c1729e80870a0f0dcde30a3e208dd5c17864d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8154 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 diff --git a/utils/lib/python3.5/__pycache__/copyreg.cpython-35.pyc b/utils/lib/python3.5/__pycache__/copyreg.cpython-35.pyc deleted file mode 100644 index 350a0ad00bdfa89f2cd4aa08b15098093db3bc2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4599 zcmZu!&5s*N6|d@U_t+lKM<(B!WYfDO%UUG%B0>~kvLxDM*#itwCcBdiikfzJ+0)~m zZl|i98INXIiG&;C#0|j-A#r0RPG}GO4cusn6Q>-xatXip+8>i4w!2(i_3G8D_wjqL z&Mqv}|9N)cHivPI;Gs3Lk5u_;B2DGa(Inj?aj zQfz{tN|Y}#<%m&LsEUvq>56caEBbYz9}6kvlk}2!9MwcrXTmw5Y$871918D*)Lj|R$kk?O{&io7_je{#)Bvyv)K zO&+8n=CdyG)Ym6;VGG=eYSw)izaUjJDDa<*M!wtCqOG$&dB@TpGJ%AGk(XR=8OXRk| zE2t%g)|=Ma{uQkv$QI+o-C@cdZD)P9ziqrwZ?H4qu30B zJlyhgBGVQGYTBD~S;r^!Z7!8M@F$!%7mp~z&pLk=x`rkH{aIUQS>6tlY#2dRCU5t$ zw$Wj`7w22UPAklI+A0Zy>-`|snYlg~wfkxW@}S=y=5b=$N!+=4qdgeqTUq*@)_2=s zHW+EuYoV3cfnvtg(FobVx9&7#NaOUOe-fNkdJ!E`sd$S@Cn~#iN?4L$zfp?s~5*rEw`hAd6`T(MTfZEZ$#{jbD+gg?wmq$UGRGvo2nhB$Pw^xSl*LrY0OS3F6jc>E--i^m68#X|?K z&>zSg+d2Y$NU>hNzz5f{YQ5>My&{DcHQ(Wa}o{7^Qrg|!8NAP{1Qc6G!d@7wfYAzOwcLBSaV5~$Y zY{omlui#)iI-|~3V1hi?`a&u4XZPR{tPgtd~g$s z%tvShy!fQNBrBE+udZ23c!PIKTQ18j`HZRS;29oo&d;I!UtK(q)iy$vf&EKF9&PnU1b= zYKMY{J1Wf$EtvU+7iJnLktd@TuW61?YtK$wxcyx+&+$_)OodQ;zK=3%d~ip%(4XqK zf)~;kAG}UT!a7Erm&y2$lQA%ZQtqd|m_&U^<5BJIEO3nrAX^S23Fsj7*FyIr4NV2Q8an4TUjBcFXfNR9X7$21(zG zvfY$<5dBXS5GnE=Dw8FsI8ZJ9R7a>mX=9|I5Gg9f!y?Ui zzYqD8H~>7?O#M5`2taqTDDLtZW6ca^Y^NfVtM9}{tASPqzE6x}JyulE&8bM9>L@nM zW?ZSZn*3J4$;ldQ4BubV7vahJ12o0F@9(OhuT>Y$ZvnL{{#A3;04Hc#6F4>JOHv!S zracO&+HfrCZ4(Qgop};MwDvipX8w>_`K}=v_8%?vqL0ME-8oh*}%?js? z!l9w#0a~Al{&Ub8!XwcDCQ8S4<&tIF%W?^rxFl<68`8Bd%S+a2n-J3mqU!H~ehOd& zUKGn5$NxYFRRC}czD|+I$=R{{Qe@wtD-=4ZB`j%faM_I@E;BgRNQxPXP*ev<@H_=Z zeZ*->VM~L|7gOaR()Kz9Gl&qXzh#aU4sTBX=f^QvRtVrgRDWYCmsk-LSmGEJuUsXr zJiAJJH0Sm&JXAeIA-nG6+5~S7vq-h{Ih;Cv{rdHn`zL6?qZ|w$)vlDQt~ zZ$qqN1=Znmq<9q}OVX}-ghJ6pm<)0AxJ4um?ONF2e#}#}jp;w&G4G-gaD|I-l7>8u zuY-SAo*K7x`G!AC6WTK@1Fp|(Tb9C8+uFk1WP`Jxz!%82D8qhCB_lZx+k9q6@-183 zrYo8yZkIMBtL}`=bsH|W-n92W`aGTJ7+7=MV4n9WuDZE0ITcBi23z}AXI7#rX|np5 zh1L*jt2h(uR^O)H56~3LNAw@k)wAj7k785>F!v35u( zb|XHkCK=u)Tv1&uJ@R9sFjOeGsN9w;*IKGKTw7LwJr%oQFFTEz>oneL*bTRF%Z0M= Iw$f<)53s;6LI3~& diff --git a/utils/lib/python3.5/__pycache__/fnmatch.cpython-35.pyc b/utils/lib/python3.5/__pycache__/fnmatch.cpython-35.pyc deleted file mode 100644 index 70fc0d8566bb753534b93007d11bf98ae731f6f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3178 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 B$5a3S diff --git a/utils/lib/python3.5/__pycache__/genericpath.cpython-35.pyc b/utils/lib/python3.5/__pycache__/genericpath.cpython-35.pyc deleted file mode 100644 index 826dcfdc15924bbeba6a52fc9fe1fe9d63305af6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3979 zcmcIn%W@mX6}>Zf5(Gt2l10;wla6AQHMR^yb`&R$@+whcX(Pu1Q?g;JriL>OaEQUo zsJkHpC~_0WsmdQ@mrXXQO8&w5joGHM@Gp4fb9+b#qQz9AR6zE{?e~42zSvw_YkhhB z;>Ya`qJPrTXBGUf(Dc7RBBDO1Ly=2~LwztM?^55Ts6tVdq8deYiW(F(DO#bZMbRon zZHm@txJrGjImgR>kE5`7ofj~VUFUf{^Vq(@+nL8X7x*;hao|NhpLv{oi7#RvSG>fx zGmpD2^Igp2(oMdd`8A4OW-*wD09zEjVtEMgDn;M1JOps5=e;)nQ|mW@*%w(ZRbb*Q z)gsKs<17^>6XQ%tVfKSmWT_M%^jh1QNHZfQT8b!EGBnAoBgF1LPYRvOFdoDqwndXf zY7vj~Oc@*?MUdwz%T*j0*&0mJu)JxYvN5J(eY}O2j;a# zMO{u~ZFJEbN&|7n(sDTNm>XNJfmt2TWl@VYfXO>R^mxz_po!&gs)}jRQl6 zFU5zyIUH`I=?=(jgACDuLx)74JLEh}FH_aHG-{FZ$Z;G*NAKg*p^vOxEA#DLsg3w- zUqUA(0+F+oOX*><2hvOwY<)LKV9PXRdCCBHbo1B+={c| ztT`*r!dxy!7v{Q!&g|kd<~nj{*H3tj>$Sm(dha2dJpdG6b)^B#G&+D#ex^EHr7@pxxgD%Kwd>#D0T7wtJJO1 z=>i^-A|BYhU<0QJMd&qF_woGBxX*rR(;+2kH`(@Z7@D>Lu2TLt;tI zCc1B+ouwv+I{VLtI@@YF&JP$QocWCt(UHoWSRxz17wm)UkestzMq+O!GTq@oz2;N~BqX_kfDMQHse;@w^nFA0!#@H``t1vJ5s@Lvkt9uR^6?0IwZa(#ly0ECQ#f(q zgr{SS^WYAe=A0zAPF1Ikzb)sybHNF1mhkv-v-Y`y4$N=>3N$4exs-k1j=($^ad?FD z`Q|hDYCg*Zr>)qV3@i#+Fp_D=k3SNg@rlzG7*j`L#A#-~Bl!gA%6F`d#X&r9Kd`YquX?kQpPS;>RYOoF6TU`Pu@ppnv+T#{H(MYeZ<`bs}fBkPM&m7+Fa z&z&e!8RR$mApb@kex^B(mesKy!Wcgl%v;C&1I!|rkV>3DE~$4<23^jtqnb@UOw|bP z;WcIaRqSk?4)I^5QI*u+nL*xe9yMtCfDRixH$vR}jrVXD^)IG58IhBmqJQQYPSLte zQC^06*|nVkf}z~;9u9o`36j^!i)oa{dtvt)3j31*; zt0nNcvzSM%A)iQvdWaMHxK2gF^Wzes0>(SdsUg$ox`>Bqrm)N&ae@I@q?hWvE7!O} zyN;LLcvpVLUt%20#2$_q=VsRVil4driYc z1i6<+a@t=lXUa|!SC`z{$y;l?r}DE{@iiL;hh?}&zYIc+b*GN_UPqL--4?i4obNj4 zTwo~Sht)qDy@q_Ul zJ6^Hl_`QTW(C$Jhcu*sF@G^odBKn=(`H%zf3r1{EV}F7zrm?8!)$ZTjoxgciU-Lwu zhQQhsc1AtShDHG>xXzv#2^i;}F;~^Rb2~`iz?yi<^Kc?+%#=$RED~{AR_zNs*IvD7 z#X3%rb3jM9#i*iY7Z)qLvs~Kh9G3M%M2hzPqUrk_U%v0v`c3}f!@Z&k;dH;gk2Oa1 zoA|b8s7)C2w42WR;l2zm*)M^R(?Y?zjyfF8tvj#bbx`kN+}kJ`z8__w z?=Kf&z8@qBh8TKn@vAuB6&GHLu}yL6EB377SH)tAV)Rpt88!y&@k(@c*{9IYMT&cBJ+wJyByJr9D;2Y?jYj1u7=mUs6 diff --git a/utils/lib/python3.5/__pycache__/hashlib.cpython-35.pyc b/utils/lib/python3.5/__pycache__/hashlib.cpython-35.pyc deleted file mode 100644 index 0205496ba902a5cbbfc09ffb206f1c66cf2b405c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7892 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 diff --git a/utils/lib/python3.5/__pycache__/heapq.cpython-35.pyc b/utils/lib/python3.5/__pycache__/heapq.cpython-35.pyc deleted file mode 100644 index 35e8b35e4997cd69dc2cbcc519cc141ed2be9de9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15089 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 H0P=qU+q(2j diff --git a/utils/lib/python3.5/__pycache__/hmac.cpython-35.pyc b/utils/lib/python3.5/__pycache__/hmac.cpython-35.pyc deleted file mode 100644 index ca588c1bf801266aab5a30806956d6d712431bc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5178 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 Y`7v$M0H=lw=nOKQYtFSwt#VHN55nrs-~a#s diff --git a/utils/lib/python3.5/__pycache__/imp.cpython-35.pyc b/utils/lib/python3.5/__pycache__/imp.cpython-35.pyc deleted file mode 100644 index e70fd9dff2bcc99d077bdbfa736f191a3079f5e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10502 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 diff --git a/utils/lib/python3.5/__pycache__/io.cpython-35.pyc b/utils/lib/python3.5/__pycache__/io.cpython-35.pyc deleted file mode 100644 index 8a056155b22cf72b3085750cb9291b98cbda2162..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3505 zcmb_f&2k&Z5pED9Kr8`L6eUa4??@MmDGI3aPYwyoMbac4mTgiYB{N=EYCYH)03+`1 zz%#p~psVr{d4xPc&Z)cwt~sgl205jBW&w~@(jl$@g|7MO>G`_*>)yqkRx9}D=Gu>Y zEr5T)mCsEaZ{yGYy#gQrLX;H_(Cq6K0Z#0rQT zAXY)#1hEGFn-Jo`TOe*jQiTvL`0+f1XbQ)l(0aN6;R2*J2y2kmA*@5X2;m~64G0^M z1`r02En?k(o zE`+y1tV8$-d?W6WH-AC@=7A2}0dXJXJiNXO@2Zt>9W@@1v!t=$H12_1hj)nlKJGmv z=V`Cu_8v_39^&33iUjQ~yS+z~y~iN$!)pez0q-hMdGi~P0mvrE7RVKl%g|eZy+5x( z_ypubr})Gv{!&!V-r(92$W`dgO?4h$)%k1X?58Ib=hKbH{2vPdF9(t-%~CCjM6#jL z7fMLWa$J5f$_F}QD$Awm@t9UMv$>HxWdojxL}mRpLjys#P)V*briU_Py&{WqMF%Yt zvZpdB&<0w>xxc0z1UtFABG*Hvdv18xIc5VT4L9*%L}v*C@8W$t&RLgR$>M}t%MOos zanfdodEm`^Rn$=N3@l;gCE7MS(z)DZ1AQqkq}fE%+}&@`cgr#zSUKc|JJem7UrKZX z-4y5`Lr2-AQRrTO=D+@^85Ts|gLc}~{$EW+oXv36qbHs$k z3v*_R;ZU0#G4|C3UWcLc05CZFZ*rNr%e}7z@`PWOlgojM2N+qNSY`>uh+V3D;No=! zbT9#p@iqLCbw|0+;4CT!Dv^iB2&L;Hi`%nX(1nr=0Xi||0J(O2%6fRxBGTQW*ONwy z5}F6)&~)7n1r3?NrwAtec{aUigEDD@8Hi0bv3iDKr*uu`CzukNQ%a_5XD_%i%wHFH zb`l{l!I%-3Mcz#?`4kR6qT^kS5i`;bC35vbCZqP$mlNFA>BM_XY-!xlxGV*qVW-Dq ztPI5O>cY0!F2xz6iaEnbJC;nG#!RT}c`8$FMm`@@3CMl-!wMK}veVpP<`0hp3Iefb;&geqhxOplq5Gy^P!+L^r$|7` z8I=c?V?OB&lqA(tu`4v6eVrleU4tl(Tk@XT&$A6@gFMKDFU788g~cJa>|Bm6wZY-! z7$!jQoc}He_Vy2UUVZm6+I@9!uzwPr9)|ltz!=+c>}RpYN>`cd0@#?a^Y9|UzT{|* zd45}7()GA}qx;lOxkIL?#g&!To`6MUzJF0kk$!USj6FlNx=U9gax|)K+hVKPz&=8z zhT2+%ylw|?|NTv&u&G>NpigkMNZD4OR<$k+>&8(pw1s}nV}%5D$c zLOYW=X{EeCrXL^zi8&RY?wFWuaktvz*Y4ew*=wHSW8#Ix60_Jdwz}ogRX@fnyNQm^ z9l2av9nVwJ$2CvFabwz6#x>vF#`Urw$BPqIj+d`fcQ*G8W;XW?Xf{7_&F0G7wTf}z zYm6RCP*Xi3W*)#1e@nit+kk790PhN{-|uKDFf@wG3&@GVX_SO1~$o@5x|{ zzv+ioxAA8mppdAFFL-poy|3Uqkb57)7r)buIa5WIqm9~lF^Z^?qi7sNk*@+AH>2p6 zf+yupHBx$9kIJ0Yqe$pDiv9-X5gKvgKRdOKk1P zB<9c0vHNTLd^qZ0ZKFCr?-aR8Y$s9O-+s~YHSl@+%Z}3R;mE=K1Gz-bHY;Hxl{t4c z`Kvvj_nw=(1b&^wJreg(U<{^&G!JQY>Y*P!rZqC~E&fVOzZ%FQ+Q1Zi5Xee&o%0_@ z%}M!y)mnX}(s19K)n=tR_oszMwNb5A@VoG|`oMi# Pb1RirWp!??vRe5sxEaQJ diff --git a/utils/lib/python3.5/__pycache__/keyword.cpython-35.pyc b/utils/lib/python3.5/__pycache__/keyword.cpython-35.pyc deleted file mode 100644 index 6ded8f0f5ea558900ea6dcaf534428c9b05ed245..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1987 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 PD-~+x#-+y1#>f8$pCZ8G diff --git a/utils/lib/python3.5/__pycache__/locale.cpython-35.pyc b/utils/lib/python3.5/__pycache__/locale.cpython-35.pyc deleted file mode 100644 index 44f107e26ace0e6b17932c9c37cea0ae3f938e33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36575 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 Nc|3>U^7r!Ze*iEcddUC) diff --git a/utils/lib/python3.5/__pycache__/os.cpython-35.pyc b/utils/lib/python3.5/__pycache__/os.cpython-35.pyc deleted file mode 100644 index d36dc21ed485be13454fd8eae81e83de1b4dcc1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31314 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

x^tM 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 aBFfgB)zIgl<_qBQqBZx@LfWX+^nU>Ubex3% diff --git a/utils/lib/python3.5/__pycache__/shutil.cpython-35.pyc b/utils/lib/python3.5/__pycache__/shutil.cpython-35.pyc deleted file mode 100644 index 878d9d9bf2840e9fa9fd2a678cafd1a98a3d5335..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32686 zcmd6w3vgW5dEd|7UAzGT1mD){5)utUqCi;>Tb3A06d#H#38V>1q}Hav#qI)J64(Xr zT@b)pa%@YnoJ=y#({7r$&E(bCX&z0J=_8X)nkLO-I%$&5IMYqzamJlYl(aLMI7u5P zef<94x%ciaL`k-%kAU2>=bn4s=R4o~oZUAzHvDgn?0RAC2b}wo>-sxR{Bb^U)bCuy zxgufUDmk|jxFQiB&$(hQjpto4pT-NWSV-f2uGp8x`(3f$Z5>D-2V8N$y??+}C_Csb z)c3nWb;w;CcF{*&5Cj#f8FVky19!1gX4n;n-TQ~F%t%j}pHIt-Y%eqFilgrRqgH0D zr_5_N1+Pp<+dfpp(3pS|C$Ot{sZuDG)|`;%$*oj!Yo zp$@vrkgL%D5m%u{W3IBpRmNRq!c}&<%A~98ausUb<0^YyWuL3;cNOOAZLV^QtK8}; zx4Fvgu5yQ4KH!Rz?#W81lCQ8h6Rx_;z05@JCiS4QDD@6k-EFCRNS#s>O5K^}-An47 zYE`L|Y3e>w?{bwxmU<{n-B0SQPs{&n+Jf?j>hUY*ga zDwA{89jiXV1_}SE+a9VA6b!WYWH)uhMXpwXPgYozJ1E zyY4EH_3(5$Ik9kr#`t8qqnfs({8=6_>+a>i1=T)x^(j}m;VK(?T?8C9^-eSL zw5y*s_+`vn?i$)aq1}K;VajvecCa|bJoK5 zxhItSn}phwmATEi`I(QmKK)#?wo+?ug-h%8aYSYtDY;>s2Wxp_35Tn7dCktRpZ8b zR3=*^x)#zfy7cGS$5XRdjRbPtOGH!R2amZKGaVP2$TD@%D(i zs17w2ueJx%2OnE)RH{A}H%rZSL2uiA3h(#H>U6uX+PG0|_eZPt)ORY18c};T)e^R-F_PzI^6kNe z1s12eu+Sb}SYR2}R}>#zSh&7kTJdi_>!Og{7JQ|6G-@=ON6RaX^-42ZkDEuA8%N`) zd~~_iyt2MHTW+i#t*(?y_g*X2qDFl0+Sbu))h)7@t{q(ma^s^bwZ(Tncyw*6d8JW* zVD_P-@fD@du5DSL-bG7sj$kyn`FQs7ZrgaoU}9W!>@C9`ugh3GblN4G1ugP=XIuuy4~7Zy6h_pyV@p{5?;^YwRj z2c=stc6YWJ*&c2-*o9#!yjG*vjis=$R*ihO4_9ZGXVbkt!w3P4uoe%8{M8%HFkW9< zYeY>3uQ7(P-x@Z+(3dTRTGUFoR$Hsiynf8ll*ShJ1~y*x_8a*4@#emc#Tln`>z?lM zmKe(Fs@A65SYN5w5EiRpmHoTUAikFFsd6#rU-xpfht5??6+;`XLp_}ovrT_SiW?R?(L4=kq=Nq*KCVp!g2JY_Ka0&@-A~u%apV z*hf?%DOZD3ES1=zU(3MmVjxdu1ItBveoZ*1<_ZikPfUNrop$vJKJhHU=Cpg!xvS2- zm=gtlDeqp)yZC@R`y%{epa;?A>v?y3zxt` zAzMczruRi9ZqCi*+665d*fgp&t22dmK?MkTTkKz{)|Z=CiuuL$r7q|( z2a^=I$CH=N3SPE$xn|y7EhMn=QUM8ek_qjz2`y1yE>dqc#<+=>7z-aU%sIJm}`zH30aQi{N%mvB^HbnhETAS z-R`A+*WBS=>~k;nD2vQpcQN@Q=lo26>nBe1LUsbj%sy^sw;H0@lp*v@S%&drP)fEe{` z_j?{JIwFuMi1Ukt8rp;N3s23Te(Lm@_CVYeQ&NotXwkiT*0{h^##r7fDE%4G=G){gQ5!pYH*l`Vu4(DitSdVUk0}5}ARYi~_PeWtg21aohCu*A zML6Ye>^WDI)s;L;j+ED z41f~@fYM544b(5Ml&{b$!H{Y!-GC&O7FViPjb~z>snypvX8=@S9!ca%1Lm#)^@2EG z0fG})ZTI_{=EO)-Eudz7~xeL+3i)*I@%$mfDOI+Jhxl)-6rvstZI04!mqcnhSp8fwmJi*Skw z@Os#S1u)P`pg;)p%#CVfWFOX&$rh69l#Iglz0n>xHFxIx{BviEikv)t{I{w&OQ5j zEY>HK8n**vVa3{gH%cq(h~sL-0zn*-oKU&d`Q1FnZzFI+`QU(IFHfuU!T#Vjo(~4m z9B<3YqCasnLTzXG#6qPN$0`JKR=t?0QnVbm`>$>2dt1X+)8|xBwYUzR9OCH~K6yUz zKcIS`MgVAX8^jW-_=?MYi{a0;#}iP`&}Rcen;}#~pQD~#j6UdIb#95e`lV?7IQy*N z-~p0EsC=5pjzF^tD)!{sxXVD~+A|Pf$3DFUyp?mo&_e zl4OOxC+~9X1mi;nZC8HT_z-Qd=8$crQA7Bz23w(3FqT$86KKDE{Z>bb-85o#e4M>L zz|KDIHc>ZDut{g#OKhhh*Muh-v!UL0^&N5z0-iPBX)7M#8QSa6|xmkqcN5BNPV z-h@eKq*=SR>2|h$$2MIFUO|WsE@7z=9?ob5j777y%8pp|UrQ^c<#^_eDTp|V#+n50 z(n_ezH{WI^!B(4H8|~&)#VCO&i>S<7Qx(rdwR81&&NipPx*$~GC|JKBuzVe?=cD(L zZY3h^hHb#!E-cg=Yd@!=9@<-bwd*upv&U8%Wl+X@W|gI^CiJIowX%zksbzp__+3`u z6L9x=+h**r0rWh=PKH2c0+2QYD2UGS<-2f@7__a?xVFCb3#uz=fB);-_nERDC}Y+G zF+tmU@DjaAMGQ3a(IGv~(>q}R)GPB8@!Z<}MAHzX|LWmPQ7x&%(PIR!>veRV)L-Hg z4-z=g&v;M>jOw=g&;qSiJ@Flc?K7Av4wSE0q&#)Nn5*b?nhem0!qtR&vHgsW1Fncd+ zS%i(%6xiU51CXK;eP({+%2qoM+P7s(Cqt_jNeuc)KCxI|H?Y5OPtc#+(>K|_-%#=Z zjOT5^*hnAqlMh1D#)9dfFSoaYQU$wWSx@kZFA=bm3D4;{%m>mGwl-_(-@+1lK@!qW zB21#+{;WGJ1!xC$aeI+EvLB`>ebI;Kk z_4eMgS%*9Ae6`9#306I-*Ho-B%oLgWF{#z?2ZUS;?FE>=TFemJg{z2G?ZHJPZ;|py ziz%bBW1sZ`nBVoG-W%{}?|g}mS4fPChVSBE#y#eF_x}fMt2mskB1!g_5-3#`OX>ZpXLXEo z602jlS`6|hPbZcjHXO7XC8ajfx>Vq$*p$VxmmHo6y?r5ED@6btmV^XE&q8fvZ%8x< z)$8lkdKrSf6fUnc7VnLlTj&B(ql7J$wIj*R8iC=iZkAWp5hRT{H$c=FL~1l4yZFRH z#LIL$C)FP$<>aM1OzW4E63}b4z%=5nOd%Lt$0Gsu%tReee+un>F9oy*mg?AUu!;23 zAbm$)Rc)fbmx3UAFF||EkF{dPjkq|FbYBLkbR>RTX-Bmu7PgsQhCy}-jp_&Y-WIfG zw&m!e@!Q^bY@dr5tc$KF2nj&{mS8)0KM8$mLNnz0Ci}|T`1+F?TXNzFKCuY9N8BE3 zi#>&9M$hjrLNrj98duu_KiVQK@-`k>qVk$|ixFa1F95{xMS2V{JY zs_uHKe1Hd5eelUphheJ&L6St4#V3xqtv^iD>5K8n(YpfmaUgko362!D^NW@Z#RHG< z$Y>qJ{-RdHy#v)7$~IA(>kTVQE4+a*4$#5`}Mov0Qgb35K8nN#y z{Vm(}97dQZ#_R!~EzUCRBF$z*PSD48B%RUka24~QsVPe<($Q^s>3h~t2vi-UQ8l69 zFtS6VOl#29dT2bDaFM5@kXF=2B@~)e22P@;7^8QGX!i&gsVd1!8B~Ie(o60gwJ302)|ylWa}5Rj(r0d3#&^@G6FUHIM!B5 zO(~aIf00D*(~yWPVI!VRX0Qu_xAhpk?0#6i?=1d1^%d*U#s2@Q)ZXKozddmc7 zwl=Sa%E;`I%uZ`_lkE>HzF3tu>P9WbC{+2cGCn0K zjyPh2ORG&`&w7|-Zm1eoC9IaPT4&SXmq>M{kl#!OfI-8`r(54p4FuisOgBccE4D;*m$oaA?i=+@;dg^ zBgl6)mC$XH%+DcaH_3pe z6TAbw)1X{znElvuUzbVq%5^ylM8^~i5QujJ3}eqQ4=Y(NDAA$!^+9z^g0<%pL&c1FQ{Q)rd6S;Q-8CMJ29vp=+!$8jG2;1P5C8I}+vqP$1pD#_ zf;@(!@nASNLF$40PRvPfC-wljc2ahKaFnw6yNKo2pP0eB_!txTDVo}vGKQwxq;yca zOHqF#+ZXEh!zG|nhi!RY8b|1OMD!iL1Wupn>-OQRLj_CT2Ix$If*?2eV!}Rc@S%>GSDILCL=MO4wlR;|!;B4E|6{aMXPK>OjTwk z9ccJX>j7V&+8$h5Uon@i=mV-c%mM@J8$4bUSih5q695CQW7s^008X=m2DkGp(B8}U z2mn2SGsI5fQwGRmL8Lm$d6nl+`{X`82E~s9+X6RlwrApzDNGaf#zri16x@PIfF7s> z)7@|k2X5wxZX?#`1Ay-2rQb5;zCpDl6RHA~kZSOz~6p#z+W z(|uxC`!xg3f|5OO!ek?a7|R@eIoP_xYBX?FNAb({gM(WiO7@bs(A{Zpl}oc@OY0ua z3)dgcU2Oe=y~St??0Pv42uw}4(Px6@xCw7;MPxlTvs_DPbi!;4$)w5__k|#}3w~c$ zt7Lm!t6vB%){ncb2}zF_V%QA$TU@BmvZH*r|DdY^I);3)y$a_*7 zUq8a*w`sqgB;t}iIvETFN0ME73*Ua9=7T$k-Og^kJ(ysx%2(%LE?<~{XdTM!BwZAVi$ zY`SOC3_aa{ft=~4d9c9xQWu;c^f9xaH%cgyv%rkDfmYQ+A zt8AqzMiL3`(X1jBQKM-~UV=bA>}8zGB~xqCYx*jO$VXMb)sl8ZHI>5VI)YX^L}Pr^N(hhb zzQrw^J-ie$xD;2aW%-7kpkHmA{u6Cd7djW#j^ume@$H8d`z8e+QD7)qq`-4yA5}~o z%uJtWp%NYPLLx61wtkuS_>#R28;_FyiyHAUB5tHV7{|3|G}oUS561JJdpZDamJh}l zAH_T_7XJh;HeO4(xJ)JXCt)DZN27}$A`pc%2_T8&-P(TP<9)K^`FDn$yv7!c%6|-Z zb8WdVWt^u}gtjZ>Ozo#0Iy|)K2vm8f1YiE`MtfeFxt? zBx8&O>+vP>K{7fL0Sa4hnA{ZB6oTRry!xnh-s4qE2^iCSG9Xhvdz+*N1ZwY=Fierk zGH&cZIhHPEU zS~jXj@%fp7(mkw0H&WN}n6Tu1H^Hi~4e5~|P7|O8(ZL;gCP>dQYvxg~j$x#@wu+No zl&VyotJgNesnr`(=o`#G|8*u^odnA2pZ1k>sWE!Bvt2Jd;>=2_no_3E1l@KKB(G5N zI+GM_YJ}#qTEo~RRG!tO@$?#$O_Q=+1)X4VG!bvy#U5>SY#J8Ou+&IBy@Nh@o3+(R z$IQhHwJ+Klksj&wIE8`!4cAE6Otdzbp;2$v%Bk8E>R^NDI+#LBDzwgtuJwq55U0%H z&1R$y!AYtkuPBvQsGrgDdNM3aJnvAAph-^Gw0jW}<&&zi8J!L1yZkt9Jb+H(A-oP1 z1u~dje2Gm{Xmq}7SaxUt9h(tOX^G36{P8f+>3q`dbm&^GOaphhM~id0L!cQ&$<%0a z0HqJm>NnKEsfUS%4X9#u(wyRTmd)820JEl~U%l+7?W<9)ZQ~DKr&zNI`|6cz$JvCy z4oAIMA{~1{JBfz68j81>orP;qj>a{dtQh_3joEUDI&(u)p@I!>bI@>WalDRKgXze( zu|Jq@Yq}l$MJ`_)fy#U{uO>`OwI?1+JXqoW`Z!o)Yb!EvCW}`K5 zepDwoKeMw#XuP8D0g@pwUe3C#j3OD)H3gy--owV6aXb1#iAp#zdWZ#>BU2ZO#6p@g zZJ@PVl=t__0?NB6QgvY#98_$C;47k7_Y-k%>z7t8KM@piw-A#kv>Wm(-P{EK^xbdY z12}yvy(}WEKYiHTWr?G1;ZTxb1pnH&M1iu&|FpcBYFWN0t0t54eRH_8-FF+KOZt}FL zQeX=LuS#KHss?lR`!z`9#{=`K0i2fd_e>X;757)bg z55kX<(MR7)CmF0JA^Mb$Yv9qR6@*!!osf*0s-Aq4QGcIu7M5GJwX!+r@hFD`Z9h$M zEM2si7F&5~17OGoU42RG4IJtf+5nik`^4Vp)zfnAh@MVZ9ld&5-nx2qpA=50M2VO__u`BnZ0?$w-oHE&1dG2V}x!?LLu;_nJjnn@Xrdjx#o zAlxG3+2LCIWapQPfzhJ_P$THi=&F(@qz(x#QfPi=vLrlr!e}?zTLMPoXAkP2>nIuVqblybOo5 zW<5;LV;VyMkKm1{i|aT8nT1xo8V2ecaEV|J^)Y3pI`vu)thSU-@Vt~Iou^1+y}5>Q zEt|76o0u;~V3VZyba+n~PR){!A!pORwzBRyAhnKBD{8DoHJA`czMo5-LN<4%Sh2%X zv&)*YsoBMrCXm5S%`%BI$>gQTP_-o;)3T|3&&SL~-^LD&{ysr5x75?dRM*aJ zwpu3^Ipk%h1G-1gCWf)X+L}+RkpZIYC9Kb5r8$kTGD-N-Ms<2xW3EU^x&;IQ(#g&-TzEZ>< zjR+Rnd9Zk~52Ge_yF9oJCt}5Cg5m(ZkUa&buzyH%?LJ%XcAu?(^n)aI$RMZPQEn|z zUR2>@!jGOFjv}WIK@SwR?p(0D1gLkBjnmPYbeC-vHeNgwNA%sz>}-!O6rXwOi3JXO zoIP{y{Hc>zZk{OK-}OAc@J#X9<6Q~E&+9nHDe1(bcd6SNhSs^mR<#G%m>Q(3ML(jt^3-9|o~(+s;M@8^ z-kW)~J=QbN^IDB#ymS*<2kEzy4|b{1+$b*5JFrw8V3j6d-p2Byux`@4+%nXUoeIr% zZX_4|Jmt&MXzNdFo2e;s)DJd=daR(hHXaKSwom7rOxNNM?234paR{C>Nry7oaneze zAP`g_V7{a{teS*-UW<5es@WI9WMd^nPm=7POtaH4uOSv#bX4Mh1{h4BQKUjGp^AFc zL66{*PX|!Qq!Umu&ukLG`;Q(EyK8wDQ3=EoYGvsO4NKZIdZsR7jWw^nVDm4mDD=)M zJ9+6#?gJb^9CnaUXy#_gPPG~dJ$Y%~;qaCkv>u9H*EfhhTqft^&`QB z%~es>lb5PrRqaWuP(`yeMc?`+!{y!f_P!NO{X}p<=gT;Y%M{Pg47GkNBc0&QHz$$_ z?(ZUyUF0Gw{buB1YL;wM2zp&;-RO=scIsx8p!u{ykLC>p&w+qR?nS_NX4u%vbWm9^ zfDp1ho6yz{Hi}%sl5OJFNLQAbiS_`s_M)5UbLZu7RvaXv_i=kD%^LeND4{B{;2^OSvm|5u9$}Wp zNq7CDx#4ac0{$4nSpyv||GaQ0>~aS__6PYMHKFk!Zxp{H7yS}-L_eqCrwLknFis>> zEbU9ea6Q`eMYZ$Y_@veZR%Z_ zSN4}u+Y>y+S_6;aUP(pIm+`(9N;A64F*}|ENUNl-?@S@G<8aww0z7BH*$cQ6kK6@b z;^!c{>77Ff!*WVKUMOD7hc5Agj8eC>IQ20%{f;-I9M&2hfd!1qD5IsKoUtvD@ep|i zA{;)iQN5jD+4_I!R`&sTWrhQP00V(E;oJcfuHTt+*R{6;laoB%$+vT}_j&0M#eu&q z!$U|&g+_qBGJH(_OKg*Wh67{l$^~BOPcxv8t*y4C z2JGdr$;7{2!na{^F4_Q9g64Qk)z3VbQ5Dw%<_LrxpRr6RxlKR4`Ghi@y!439QX-&% zJ(0z-+@tX;c5KMh8BjS+H4n$LOQ%kn6yvzrzHxyBPgs zMg>!FoeA(58U!}P?OHr_qxG3O`nV)d=5^SuAvEX_PcO;BkRyz^zsLorI#jP62?6FM zDzUiBuRjA}wIr}<>@!l7%zlYyX^Q37N|La89QRViYuY)Fz`Ni(m44EGcnL`0kAS72 z`#JG$plL(t9sx9=jUbbepEXg3izGzwoR{Jn>8 zEI5qUQif7`5T*26+B#fw1O_n)Bk*1FXE3)nvy1$HmLdojly#s-e-nJvvhC34Xo5;H z+`SBc31j4UE3D!RVv@9Ti9cuz6R&J{ieFP1TnAtyy&8>v^||;3s|#k)_$+aX$=0vi z3-l_aARu`LbWoS?!NzUvkn;q4@&F9oh58iQIDaE2D_`+ushb;EB20|&|{Lm zoo?iSi_hF(-OLl&HF=9&p1Del@c#B;CRr?pfo+vWo-t91$QkA~C!{j{tu+PJ+) z?GZUeh^w2TN0RaBk-m)lPkBEFG$%e)g1=F7v4>}%v$XClcb;BhBH#{$Ze%&F3)xIv zv)#DXjSa0|%GoiQC5)yGCh0LJ8gOCWU>3I4YTCK@qhEo);_v|T($&&pl|G=%kiN-; z{$9-teeYnOWo>|9@lT{4<$T=y@5U}#r2bAd~B9AqkiGA@^pCX)-CJxYjrds z+u+m$1rsn{6Jm`1wSpg3@IwTxJz1TL+fvHp%*O$E~fmtTF zdxdF>{-x>>f;UZd^y9>4COrEuO$TV$lM9MmZgr!&Kug@20}&bVTfuy1 zxyuWh(auAK+IeU-H|5Y=m<0zF6L$Wxu=YENxJgt6MjR%kJP_lbo5US%2ZUk|LczXZ z2Wi6y130}(tpFL>(Yg9gvqV)M)Bj)Mv$I>;zD~Z{z$W2eGK>|!6`w5+^m#tiY>&VXz~`mxcFsc(xY^G=2Vs9%akEUA3>l`cyg&V~@OU5DQ%3vkVrP18%8cKD z&mLcRZtm>y6HljXcJyym^RE%W^#6L+N~oAEzR2?3YRdTQe$QWL{wpHj8u$r5vBa<% zBs;G=H!=!-^3pvv3m7;0+~%!`TPvh-BDp(61g_s5yMDL3aDA7%u=$9n-pNb%C;B5^ z>(C`v%|ZfE<3R6G!$2n~28r#siCllmpMLdx{HMi$L)blw4%Vc&}oc*MEO1J+~|wE$y9(6pd?V)N*^P_ z{3o207oyB;n@KUIl}kk$1R`!6My_IEy;PGcJqs2%mrTBhP%`nobo#O+8M{tMB;{se z&E;(1=?!Y>$*0Z>+s|e6!_|1L;hjtpBGtnbTu#~NtihBIhoAv32|Z1TipfYGT2i8b zj3ijdidhK=cvVNQ5+Y|Zf-mMN4^maF$qftW1I%F~^Y!dVdOA3VCrKh;m~&%T3eRyq z)b!rgBU~u`$!mf!x?cn?ZG$BuQS_gb zkZq;txAhoifg!j(JU*$NUvs=S708*V(q*sZOF>EM+^n|Zd$XRS2pfO#H`(qFb7F)7j#)p zJJ^1wET+K(0VG{r7EIkuNtYkRWq5**oQ8FwYCd;6yEqRwI&P;3IdVmOG#C9bxih#E zHIv@M;7&^VZn)#5MK|aHTNmnwTtR96gpax9$mOCN98D3RW%haqzyEBRNdPM3dSDA$ zXdO=$lu;k$gDKm-usz%NW{dm2SP)MD-)xzWb}w_679IBFrdoA8n?K87ZJCOL=Sz{d zo!&`W(d&)MO{7D=cm==s|5*i8s;E^$8@3IJb{2=%>Nc(%iJuVGMJ5S?iZ^Bv0{x9=40?e6YiNZyrjN zNN}A8geO2CLZHSSMt5n$&tJa__LKWlD$--+=4=nahj+L&0XRljigq*RU(jQi1&052 zVSlMtQgHP=#*b@4hRNrQ)6xmp=uddcIB8+W9ehskiT{XzP9^-+{?4%EBA2PdUN$uq zep6GK(G<8N0|<%#I0U86(7^2hj~f{gZAs@0G#Biq4zx`{eZf>< zUYBN#B;ENLa~=oxQL(-C6^k*aBT2nfmnQfsg?>#n=dr6=pg!rhham*XX6Udy2^Z6~ z2X3N#O7#=|fO-!iOcf~IJR?vBg6R-ET{57fF(QUZRfa!l$)lR&PKh^mjoIJ_9;7kI z2%Vbk@`<_Z7e8YtGew6fquxTvCD$OjoM^kg7A2RRq3P+hjVr;QX(x<3rL#8v6xTrd z6B$E_A=pH_X(D6K6L+T#yD%Y>oFobvTagt`nb11SFfG)j&0}ho8n{fMoDZMRoHmr4 z9@o(&3v;boo=a3MzP~9)HH|mTbo9II46jtbHO-ce$Io?W`O>>Y|AVsI9{!YKKd!*M zL<*H!xoJDlNFGShHnt%;Wr#kn;P(_rX|ipLNBcIA-iMVljPYBOR3Gy~b&23=4 zQG}=+*gbV2bE$b_iDNmHT8s=9mzFVP+E;75*#Oykt=1AA)){i^5x1VF4UgIUh7%Sr zR||!Cx7(ZXr1?&s!EnU>rwG=E9r%_q5c0mK!4i^8F zZ2wVUVVJ((`$+E#xJR>@t!xk3I!b}=mHhyWVwYKVKWJTOl=WswvnBhz|8q;0Snq@; z5oqmj-v7rn%SV63gcQf*Zk(+_^yj3dH=KoJM|0Zkn??Dfl z5!jv`B_4!XO(@!3n%gYSdcdQ3qDCIE3#^K5rX67B%jdO!PdVxA>}p}75S5D3&~1SNgTryOY!SA__l1xl_#Q>`2F$YHQa9G54kAg zQS%lw9Sy2dRc=NE^d_PJ-eN;huEb(vbMp@VbGp69D`K#gNI8SBC{0OHd#aefE$zoq zn)9vL5hV<*_#hfZXiajRQM``(g!1Be$%Xr^U1^$?@rkefFaDzc#_FSlH)`;4!Of}y z^W+|R#_ovi@+Zt=4)8vLCJP@>+2pjNa6n|5{$ig_VMfLN1#4_OT&mDt2`;CIaCa%> zqCe<|NDLvhcv2w;nl%2JNX~2f3Cf7W_9v`y8=n(=;vJ;=YXZ=z!N>v?x?c^)!hT>J^!Ef$ad#%x)HSt#Y1-zSs1w1nUjQ(c(;{1f`SdZn?E5US86WPHR~h* zEGVzmZ}59eb#uqLfp4tzb4S7xXP$ZP*|~WmTLSZEo|-!~-vz!aTaY78l1bs(btzd| zf!=waZCoD`)0-OWBA_@#*K8vIc~u-qP5nnPAdG`+*6;=WPE*no?LyxP@`&q8s!u5? zscIlG0ru?1&g8Ho>uf*2BXuNufx8qc(Ef!5^%!r4h=Xy~HXanU`i+J$zMRwpRrmhH zR?7SNgL>KY+nRtw)I)9E^|CHQ)BP%2Y4x01=Qs|yDLEHs&8hFn<@Nf(0{y;0;$CIN z^z$3$kDZ>S+o&3fp&2XQGcZhr$&Z2g7506MH8U z%N5@b-*+Uu|G~~LOWAC9TSRT-T0GrV#%V@wq)U1cR#(@#nTt#1l1V$CK|<=Z@_L?1 z5Q|%gPD!Tq*iV~zd|4bwz``WhVxK_T*%>lMND@CwN?e_Y(SkR*~VpMn^y6qU z>>yE4bGaY#A8v?_^D~kN)Yta~Nj_Q_?aIeHt~Sl`ajNEJ=A_?kM(WSWOIOniPr;<< zDE&yVs_~zzMCkXld{U&Tv>SVZ&38&8YIo>^&KU^hICFy$&fKAOiU^K_(9i8cKz#oC z0#3uz!3E9Q%$Qw<{bX_=O}Gf;hr0-u5qNH)6rMeP{u>cJID^23_TX<@Ng{_A3epWN zNzeA4aD(5ycCj`d4oXo)*-085yd@E)!?2@q3099J-elKZR_V*ao4PU1YG!ktUO4k~ z_@cJiMPjq5ZoE5}TJtC7tV(t!xs&ZB#CUj0eVO8z4>&sEpLDu3s&Tz!9g4)rN*uI_ zoBTRgT$Lni6?I8jGH7u~m?1OGHO znBecGJVW_qzPP7=c+k$5R}+ElAPHX?I<{P`S2x$9_pE3jYPjFE_HP?TmZ{v`LydYD zAN!e*W#*esV$QZs(zktyVLuAVV?l3MqG2lYFV&UkR|pzuC-9p+u)PzRcWuvU;m@h; z{~+K{4~p{vAX9)7eMw2WzWIvotBCb9m|pv0P9->#*Wp%iA%qy&m4uN5(dZv5xJ)oJ z;=A|(C71x*Pmk?N=qu=WxWS3dBj4O=wa#yz)uQ5neiF?h>_#!M?_tvCLX!w9=Fw% z?>K92KIC?cD~*3YFVgsDeEe_t;)-O_=c6gbjholx*j;hv39jE;N zW;CYYRt3`aM&kAQ{0Q^}eClM--U- zWkaz|g7$cN_Fm>VU9(kF>PVJK%5%#6%?d^dihD~p8nsHCUOdasKs2#z#{L+(Xs#V} z_A-%#COaz>{gPt8szAoPNS2jomjbyDMY|PzQNbPsdlmelf=Ho0d!*t2gm zKl#qd$;pY)Q3SmgMh}i2xrO|kAJ0ubG?W|dAAfjsXp}#kFCO1>?|xh|1o*oU6!}iV z(c#HGqxqp=|2s!VMko1M#XX~i(f-k?(eXXOEtD9yoSl&Eb!c42@^j;(x?M-H(UHkJ H#_#>#C9Ke% diff --git a/utils/lib/python3.5/__pycache__/site.cpython-35.pyc b/utils/lib/python3.5/__pycache__/site.cpython-35.pyc deleted file mode 100644 index e8f230455cd6a360e6616525ce8cd78f8b74d99c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22506 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 diff --git a/utils/lib/python3.5/__pycache__/sre_compile.cpython-35.pyc b/utils/lib/python3.5/__pycache__/sre_compile.cpython-35.pyc deleted file mode 100644 index 246bb73af33d101e4e63b50c19680f7ed435b838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10967 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 diff --git a/utils/lib/python3.5/__pycache__/sre_constants.cpython-35.pyc b/utils/lib/python3.5/__pycache__/sre_constants.cpython-35.pyc deleted file mode 100644 index a91c8a17cc121fb718d3a26b001f4417356307e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5988 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 USZ1W_7`}g`j%WINwq`E=f6M#xkpKVy diff --git a/utils/lib/python3.5/__pycache__/stat.cpython-35.pyc b/utils/lib/python3.5/__pycache__/stat.cpython-35.pyc deleted file mode 100644 index 336e00866eaf77f5db73bafeee5d913ada78dc57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4209 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 diff --git a/utils/lib/python3.5/__pycache__/types.cpython-35.pyc b/utils/lib/python3.5/__pycache__/types.cpython-35.pyc deleted file mode 100644 index 5dc245909dd57ec00fdbcf3fd6eb7af710e36ebc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8787 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 z z&hp$2N@b&+pU%3$DN#XG#a9_h$zzG9$)B2`UX2F zW}5ugBziH^)1nQaqA;IC^jBpAq^lPo*kqzhMn9@WC(&CK7LM%>hoMe)(^kCl_t1g=7=clAfl&ToL1&scKgEw7j)jX5luiui@^dsGqn#dn`fD_ z;VGk43IE-&TAXxo_5glwxd4=wV%15`!m|@9t!f26HKooW#9(43z-J({z`mx zq6jugd^`J*V2P?6|By5Gf*o*lED&1icMXkk4F^x2Ahb6aQ=Kh%?6g&rO+tKXFs9&b zQ~wlew;KBQ@KelhO%Ua2uYVtHBH57D)a%FoPNpvs?hLStV;~I*WuD*d74_0jDC*@T zB7?0;;ULnR6}7zs{&pPFj!!M5@sVFp%#7WS|HBI67b=?}(ARAT9>R*#s2sjhQoa3d zoPyZdd+qU{);jh$roMK$Z$YSeYs^Q%=Nk7uy9LHb^$x-QkZp574}0sS!z3@3P}w_3 zlXz4%HPDop6^kay2v_y?vgj~`j;BV)>rz0ZDidN!WL)Nb;OnDGKZ--vWSkThFs>iz zERP{xNm_88I7xHAE2H~53^79{m0lRfQfYW1pNNKJMU@oDa0UBpf=s(P&tX)3ED^bS}e;G?3Quw`e)FZ!Bs0>!m^A%vGc< zq>Q)R9TDFzFHOvWyd3_Ct{XPO=+NIF&|HJqRkl&bb}VD&T6ST#zf)MpUB%xv z-i@Oy$J6QHy(*MP{06*n4KTK~DHo8Ul8rKX6g78J{3ii;>_3q=&Lbw@<6_WB2KM39 zp1A|B8z=V1I(;}IRIv~-NXEwqpEBK9yekdclLrua%ryEii@Eg2%yKG z!Y(9FmYB`E=1}R>Z_)K(V`uetnBNWan`NL@K=Hn@6Q^D1i|2J#?}Yo^P(KeMFKzPB zAfau2iObhZA=5BLxZX@DeVa;OL8cjS5JeXOL3GZn#2_B@@#KRH&(P+*^gT*t_7h|{ zwPxh~1LB51oN7oor|}MGuh`2dv#kQ5oVU)P6`^=F%Qq5x(OH{WcAHBpZxd$ajph&k EA6Q+SS^xk5 diff --git a/utils/lib/python3.5/__pycache__/warnings.cpython-35.pyc b/utils/lib/python3.5/__pycache__/warnings.cpython-35.pyc deleted file mode 100644 index 8e19c6ee21a287482a766a35202ca44682b025aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13092 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 sjDis|%lz`qMe?%u2#Q?p`O-9g4g&vD{8 diff --git a/utils/lib/python3.5/_bootlocale.py b/utils/lib/python3.5/_bootlocale.py deleted file mode 120000 index 83c9424..0000000 --- a/utils/lib/python3.5/_bootlocale.py +++ /dev/null @@ -1 +0,0 @@ -/usr/lib64/python3.5/_bootlocale.py \ No newline at end of file diff --git a/utils/lib/python3.5/_collections_abc.py b/utils/lib/python3.5/_collections_abc.py deleted file mode 120000 index 0e4b41f..0000000 --- a/utils/lib/python3.5/_collections_abc.py +++ /dev/null @@ -1 +0,0 @@ -/usr/lib64/python3.5/_collections_abc.py \ No newline at end of file diff --git a/utils/lib/python3.5/_dummy_thread.py b/utils/lib/python3.5/_dummy_thread.py deleted file mode 120000 index 7917de0..0000000 --- a/utils/lib/python3.5/_dummy_thread.py +++ /dev/null @@ -1 +0,0 @@ -/usr/lib64/python3.5/_dummy_thread.py \ No newline at end of file diff --git a/utils/lib/python3.5/_weakrefset.py b/utils/lib/python3.5/_weakrefset.py deleted file mode 120000 index d1d5a57..0000000 --- a/utils/lib/python3.5/_weakrefset.py +++ /dev/null @@ -1 +0,0 @@ -/usr/lib64/python3.5/_weakrefset.py \ No newline at end of file diff --git a/utils/lib/python3.5/abc.py b/utils/lib/python3.5/abc.py deleted file mode 120000 index 1f42e72..0000000 --- a/utils/lib/python3.5/abc.py +++ /dev/null @@ -1 +0,0 @@ -/usr/lib64/python3.5/abc.py \ No newline at end of file diff --git a/utils/lib/python3.5/base64.py b/utils/lib/python3.5/base64.py deleted file mode 120000 index 1ddaaac..0000000 --- a/utils/lib/python3.5/base64.py +++ /dev/null @@ -1 +0,0 @@ -/usr/lib64/python3.5/base64.py \ No newline at end of file diff --git a/utils/lib/python3.5/bisect.py b/utils/lib/python3.5/bisect.py deleted file mode 120000 index ab10c0d..0000000 --- a/utils/lib/python3.5/bisect.py +++ /dev/null @@ -1 +0,0 @@ -/usr/lib64/python3.5/bisect.py \ No newline at end of file diff --git a/utils/lib/python3.5/codecs.py b/utils/lib/python3.5/codecs.py deleted file mode 120000 index 0ab8747..0000000 --- a/utils/lib/python3.5/codecs.py +++ /dev/null @@ -1 +0,0 @@ -/usr/lib64/python3.5/codecs.py \ No newline at end of file diff --git a/utils/lib/python3.5/collections b/utils/lib/python3.5/collections deleted file mode 120000 index 98877bb..0000000 --- a/utils/lib/python3.5/collections +++ /dev/null @@ -1 +0,0 @@ -/usr/lib64/python3.5/collections \ No newline at end of file diff --git a/utils/lib/python3.5/config-3.5m b/utils/lib/python3.5/config-3.5m deleted file mode 120000 index d2d1192..0000000 --- a/utils/lib/python3.5/config-3.5m +++ /dev/null @@ -1 +0,0 @@ -/usr/lib64/python3.5/config-3.5m \ No newline at end of file diff --git a/utils/lib/python3.5/copy.py b/utils/lib/python3.5/copy.py deleted file mode 120000 index 28a7fab..0000000 --- a/utils/lib/python3.5/copy.py +++ /dev/null @@ -1 +0,0 @@ -/usr/lib64/python3.5/copy.py \ No newline at end of file diff --git a/utils/lib/python3.5/copyreg.py b/utils/lib/python3.5/copyreg.py deleted file mode 120000 index af3fcc5..0000000 --- a/utils/lib/python3.5/copyreg.py +++ /dev/null @@ -1 +0,0 @@ -/usr/lib64/python3.5/copyreg.py \ No newline at end of file diff --git a/utils/lib/python3.5/distutils/__init__.py b/utils/lib/python3.5/distutils/__init__.py deleted file mode 100644 index 29fc1da..0000000 --- a/utils/lib/python3.5/distutils/__init__.py +++ /dev/null @@ -1,101 +0,0 @@ -import os -import sys -import warnings -import imp -import opcode # opcode is not a virtualenv module, so we can use it to find the stdlib - # Important! To work on pypy, this must be a module that resides in the - # lib-python/modified-x.y.z directory - -dirname = os.path.dirname - -distutils_path = os.path.join(os.path.dirname(opcode.__file__), 'distutils') -if os.path.normpath(distutils_path) == os.path.dirname(os.path.normpath(__file__)): - warnings.warn( - "The virtualenv distutils package at %s appears to be in the same location as the system distutils?") -else: - __path__.insert(0, distutils_path) - real_distutils = imp.load_module("_virtualenv_distutils", None, distutils_path, ('', '', imp.PKG_DIRECTORY)) - # Copy the relevant attributes - try: - __revision__ = real_distutils.__revision__ - except AttributeError: - pass - __version__ = real_distutils.__version__ - -from distutils import dist, sysconfig - -try: - basestring -except NameError: - basestring = str - -## patch build_ext (distutils doesn't know how to get the libs directory -## path on windows - it hardcodes the paths around the patched sys.prefix) - -if sys.platform == 'win32': - from distutils.command.build_ext import build_ext as old_build_ext - class build_ext(old_build_ext): - def finalize_options (self): - if self.library_dirs is None: - self.library_dirs = [] - elif isinstance(self.library_dirs, basestring): - self.library_dirs = self.library_dirs.split(os.pathsep) - - self.library_dirs.insert(0, os.path.join(sys.real_prefix, "Libs")) - old_build_ext.finalize_options(self) - - from distutils.command import build_ext as build_ext_module - build_ext_module.build_ext = build_ext - -## distutils.dist patches: - -old_find_config_files = dist.Distribution.find_config_files -def find_config_files(self): - found = old_find_config_files(self) - system_distutils = os.path.join(distutils_path, 'distutils.cfg') - #if os.path.exists(system_distutils): - # found.insert(0, system_distutils) - # What to call the per-user config file - if os.name == 'posix': - user_filename = ".pydistutils.cfg" - else: - user_filename = "pydistutils.cfg" - user_filename = os.path.join(sys.prefix, user_filename) - if os.path.isfile(user_filename): - for item in list(found): - if item.endswith('pydistutils.cfg'): - found.remove(item) - found.append(user_filename) - return found -dist.Distribution.find_config_files = find_config_files - -## distutils.sysconfig patches: - -old_get_python_inc = sysconfig.get_python_inc -def sysconfig_get_python_inc(plat_specific=0, prefix=None): - if prefix is None: - prefix = sys.real_prefix - return old_get_python_inc(plat_specific, prefix) -sysconfig_get_python_inc.__doc__ = old_get_python_inc.__doc__ -sysconfig.get_python_inc = sysconfig_get_python_inc - -old_get_python_lib = sysconfig.get_python_lib -def sysconfig_get_python_lib(plat_specific=0, standard_lib=0, prefix=None): - if standard_lib and prefix is None: - prefix = sys.real_prefix - return old_get_python_lib(plat_specific, standard_lib, prefix) -sysconfig_get_python_lib.__doc__ = old_get_python_lib.__doc__ -sysconfig.get_python_lib = sysconfig_get_python_lib - -old_get_config_vars = sysconfig.get_config_vars -def sysconfig_get_config_vars(*args): - real_vars = old_get_config_vars(*args) - if sys.platform == 'win32': - lib_dir = os.path.join(sys.real_prefix, "libs") - if isinstance(real_vars, dict) and 'LIBDIR' not in real_vars: - real_vars['LIBDIR'] = lib_dir # asked for all - elif isinstance(real_vars, list) and 'LIBDIR' in args: - real_vars = real_vars + [lib_dir] # asked for list - return real_vars -sysconfig_get_config_vars.__doc__ = old_get_config_vars.__doc__ -sysconfig.get_config_vars = sysconfig_get_config_vars diff --git a/utils/lib/python3.5/distutils/__pycache__/__init__.cpython-35.pyc b/utils/lib/python3.5/distutils/__pycache__/__init__.cpython-35.pyc deleted file mode 100644 index f8d326e3ce7889a28e6956dd0e321bf7257f94dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3179 zcma)8-ESMm5uZICKShd^6v;}gB#dLlrawfZX^IvI`ehqNkU%Z00In}67N@(VeAMxd z**(gZDnHpkUkViHWB-Ey?LV}yed@o^r~YP-q-5oxJ?V~fvopK1Gr!;LUF&pOKmYsm z`Cq$4|DsFRCgfk^HcvdF82^G&qF^Zt3dBP1QQ$4)3I&yg>{H;AA{tj|T%(}2kn0Np z8lT1udV{GvdV_hIi=h^&ChM2(a{+p1kD+6a^gl>>G+v>&!p0(#q}nv@a0Kk{kx&&H zuTt#u4xoyw{LjiRjo^eBdvw|%)uZtm1#9#yTPI(w({YQm;OluN=np)+LBWRGT8+~8 zXtGJcCQY^|*dlS-Aa#wzvuqo_+s^kP`>OXTxJKm+g2o?ETz6srO>jyZlwPOF4h0{Q zcoHMF7QKZUTl|pTAdx$6HCTP*tUktOc1V3p63UFyA-ccyzXMSN9wM#yyqvXlODq(2R#w}`B+vRGMp=1k z3N^Wy=vTp}yjVak7qB$&tk18u37;s>M#+(_zD%;ue=-oZc{oebSgKb=#6d4Eu%YC| z4g_GbWC7#fVVJ7`{8zA9U)Nz0iMc2LR&hVXZT^JEIf&utblf0)osOJF5@mO&5cAQ( zu|hwdzm6+ZfG}0YI^1DgP6Bpec^;}Wor)%nTXRM+1&S3Kx7m~_0^l7CD*Kw_3H)!8 zLo?_E?KC;mp*}@+w6U$kB$+9~EK;_07#d{?on*+3nWjl$z1-OPG%Q{iHMKQZDqUEg z71kf;NoFfZr(Mx1OyyLoQS!=ma-?#ZP}>_NS(qkgO6F58ok6~Rqtek2q`C3@XEfA# zUJRo&pT&iqnPPa94~>q7M@jKwcDNVilc7qZ@cwa_=-k|&o(_-IDa^y;p~KY>8~WK# zhtt#IMV@`W_r-8o_MwzXmK0L%O;7a(7W)jhY2!hnE81dRYrdsl-CyFB$}gq$j)SC9t1$`2e{cD+vn&pJW$(D?5kY4Lbh{{c4eKXpEmz8E z*M1c67nsv*<3Rw_rr#A!uO_wutqnkIO>~52&_!H+zW8@p@*8+TCP7o~3!7a2aanth zDU2c1?_ePI2Nkzvy#@!n&WSrxg)9*dh)3vdooN~t(o9v9jFL!y1k0#nx_P(xA;v zC=PWjxj+5?;lug>{`2tHIeZQ>!tE{&pYJEQ&7bioIrbO2;27A&-xqJFz^8)ixlAOG z%5`LB9k>KS;$sA6-!bd(dR%828-)zbm)Y%wo%&X?8I9TWgCgU?MDs&&>pkn<{ zADN)(nlsN5)Ugz|{j0!u|6O2QTKGH6WSDJ?j4p6}9f;;zKj1a)mytL+HeQB0!_i@E zC7DcvT0V{PSUD=&Iu>=rb(}^+Wx`6ScQA=?TVBqN|%G0iKrRZ zn!B)W@>0!x5Wlpo;2hNVp$x7sr{|++0+8-4&kNVi^*Woa{m3lnE$tTJw;!QJxsVW{ zYYbo#oLAqav%UqTW1+1}8Rrpi=8_3BR`txR(mcLog3jZ6Zrg^h3F8~93T zt$YP5Co1ZJ|6Jhk?JgEuCokdV3BX&*Z}GI9r^GTf1vG$WPz?7RT>-_R1Pq52XatxR zcm|lta9wOX?p+No@9%VeA>;be#ao<8Y}_PLenm9B zIB7LevmbRogx-4-s~@1!38nU1?L;zO(aqBMY9EJnZ$lm0P~Hx$QRQ)XIOwE0s{f?= ZzfgtsI6t*s4Mv}_#Kg&(@ol!lJ^{hXOuGO8 diff --git a/utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/DESCRIPTION.rst b/utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/DESCRIPTION.rst deleted file mode 100644 index 30379a1..0000000 --- a/utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/DESCRIPTION.rst +++ /dev/null @@ -1,3 +0,0 @@ -Beautiful Soup sits atop an HTML or XML parser, providing Pythonic idioms for iterating, searching, and modifying the parse tree. - - diff --git a/utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/INSTALLER b/utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/METADATA b/utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/METADATA deleted file mode 100644 index cc2f64b..0000000 --- a/utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/METADATA +++ /dev/null @@ -1,28 +0,0 @@ -Metadata-Version: 2.0 -Name: beautifulsoup4 -Version: 4.6.0 -Summary: Screen-scraping library -Home-page: http://www.crummy.com/software/BeautifulSoup/bs4/ -Author: Leonard Richardson -Author-email: leonardr@segfault.org -License: MIT -Download-URL: http://www.crummy.com/software/BeautifulSoup/bs4/download/ -Platform: UNKNOWN -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Topic :: Text Processing :: Markup :: HTML -Classifier: Topic :: Text Processing :: Markup :: XML -Classifier: Topic :: Text Processing :: Markup :: SGML -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Provides-Extra: html5lib -Requires-Dist: html5lib; extra == 'html5lib' -Provides-Extra: lxml -Requires-Dist: lxml; extra == 'lxml' - -Beautiful Soup sits atop an HTML or XML parser, providing Pythonic idioms for iterating, searching, and modifying the parse tree. - - diff --git a/utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/RECORD b/utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/RECORD deleted file mode 100644 index 2cd9fbd..0000000 --- a/utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/RECORD +++ /dev/null @@ -1,41 +0,0 @@ -beautifulsoup4-4.6.0.dist-info/DESCRIPTION.rst,sha256=HReC3om4K1XIgRKEVjgzdTEKfTTE3F83hEHkQQJwuU0,132 -beautifulsoup4-4.6.0.dist-info/METADATA,sha256=MygZZNNKIcXfK60bDPVe3zpyJeyqRoTy1PBE2uqb4TY,1109 -beautifulsoup4-4.6.0.dist-info/RECORD,, -beautifulsoup4-4.6.0.dist-info/WHEEL,sha256=dXGL5yz26tu5uNsUy9EBoBYhrvMYqmFH9Vm82OQUT-8,95 -beautifulsoup4-4.6.0.dist-info/metadata.json,sha256=5165aEwyWzVfTK8Rs17tqfMof2bpgGLGbjGAo24oFNc,1110 -beautifulsoup4-4.6.0.dist-info/top_level.txt,sha256=H8VT-IuPWLzQqwG9_eChjXDJ1z0H9RRebdSR90Bjnkw,4 -bs4/__init__.py,sha256=tO59vxn6pDf_-5iy_a_rG65rDph3TyY7wKqRu9zNQ_4,20394 -bs4/dammit.py,sha256=T91drgzqXmIrH---Qm5tG_jvOqv1QaYdJPOt9lRJucw,29910 -bs4/diagnose.py,sha256=k_dyxYqq52gaikV1hfiwh0_PoWGbx2fsnjm5IAMS7PA,6773 -bs4/element.py,sha256=2EZ_aM5jWf7tREyxXjvziW23Q59tSijCacC8-hfyx5M,68798 -bs4/testing.py,sha256=GEdA91wNzzJ5XewPEgz1oCzDT1ihT-UYphgah2CyXDM,30800 -bs4/builder/__init__.py,sha256=ECq2riLT2cie_wig7cTgMQU6YAuZ6cjZTFKWJC1st7g,11552 -bs4/builder/_html5lib.py,sha256=LZeT3YMgTWWKzydl48fkbwdB6IQC3nV67Ej_nbmJrcs,16688 -bs4/builder/_htmlparser.py,sha256=7ytwx-cp8Ju4nVvZqsUtL7bGNv0c3KgT44lbnyqQvHk,11609 -bs4/builder/_lxml.py,sha256=xPBXWAVfqRvWlAYoykIGVmp8JhhADxriYrXfmEjSqNE,9470 -bs4/tests/__init__.py,sha256=bdUBDE750n7qNEfue7-3a1fBaUxJlvZMkvJvZa-lbYs,27 -bs4/tests/test_builder_registry.py,sha256=pllfRpArh9TYhjjRUiu1wITr9Ryyv4hiaAtRjij-k4E,5582 -bs4/tests/test_docs.py,sha256=FXfz2bGL4Xe0q6duwpmg9hmFiZuU4DVJPNZ0hTb6aH4,1067 -bs4/tests/test_html5lib.py,sha256=MYtpDf9mkYxHUNxBeRVmwqG5E0-R2b_NlpX3lOW30Zs,4907 -bs4/tests/test_htmlparser.py,sha256=22Ivw1wno80DD3j7NxZhc8rrBKSfgwBaAH4tzYIT7lM,1191 -bs4/tests/test_lxml.py,sha256=7ge3DMNPQIBibALPWvqn-hAdOBUCoQAVOHIu8rQhSFg,2379 -bs4/tests/test_soup.py,sha256=ugOafuY7DoCZFaxjMoBivnYNE_Iz0CRN2ZPkChLy6VY,20313 -bs4/tests/test_tree.py,sha256=psSal7EQIeDEoimz_DVloKKG1D_8CSAFJY-Yvov2bx0,78204 -beautifulsoup4-4.6.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -bs4/__pycache__/testing.cpython-35.pyc,, -bs4/tests/__pycache__/test_builder_registry.cpython-35.pyc,, -bs4/tests/__pycache__/test_docs.cpython-35.pyc,, -bs4/builder/__pycache__/__init__.cpython-35.pyc,, -bs4/__pycache__/diagnose.cpython-35.pyc,, -bs4/builder/__pycache__/_htmlparser.cpython-35.pyc,, -bs4/builder/__pycache__/_html5lib.cpython-35.pyc,, -bs4/builder/__pycache__/_lxml.cpython-35.pyc,, -bs4/tests/__pycache__/__init__.cpython-35.pyc,, -bs4/tests/__pycache__/test_tree.cpython-35.pyc,, -bs4/tests/__pycache__/test_html5lib.cpython-35.pyc,, -bs4/__pycache__/__init__.cpython-35.pyc,, -bs4/__pycache__/element.cpython-35.pyc,, -bs4/__pycache__/dammit.cpython-35.pyc,, -bs4/tests/__pycache__/test_lxml.cpython-35.pyc,, -bs4/tests/__pycache__/test_soup.cpython-35.pyc,, -bs4/tests/__pycache__/test_htmlparser.cpython-35.pyc,, diff --git a/utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/WHEEL b/utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/WHEEL deleted file mode 100644 index a68f088..0000000 --- a/utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.30.0.a0) -Root-Is-Purelib: true -Tag: py3-none-any - diff --git a/utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/metadata.json b/utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/metadata.json deleted file mode 100644 index 830af35..0000000 --- a/utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Topic :: Text Processing :: Markup :: HTML", "Topic :: Text Processing :: Markup :: XML", "Topic :: Text Processing :: Markup :: SGML", "Topic :: Software Development :: Libraries :: Python Modules"], "download_url": "http://www.crummy.com/software/BeautifulSoup/bs4/download/", "extensions": {"python.details": {"contacts": [{"email": "leonardr@segfault.org", "name": "Leonard Richardson", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "http://www.crummy.com/software/BeautifulSoup/bs4/"}}}, "extras": ["html5lib", "lxml"], "generator": "bdist_wheel (0.30.0.a0)", "license": "MIT", "metadata_version": "2.0", "name": "beautifulsoup4", "run_requires": [{"extra": "html5lib", "requires": ["html5lib"]}, {"extra": "lxml", "requires": ["lxml"]}], "summary": "Screen-scraping library", "version": "4.6.0"} \ No newline at end of file diff --git a/utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/top_level.txt b/utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/top_level.txt deleted file mode 100644 index 1315442..0000000 --- a/utils/lib/python3.5/site-packages/beautifulsoup4-4.6.0.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -bs4 diff --git a/utils/lib/python3.5/site-packages/bs4/__init__.py b/utils/lib/python3.5/site-packages/bs4/__init__.py deleted file mode 100644 index 62e9e5d..0000000 --- a/utils/lib/python3.5/site-packages/bs4/__init__.py +++ /dev/null @@ -1,529 +0,0 @@ -"""Beautiful Soup -Elixir and Tonic -"The Screen-Scraper's Friend" -http://www.crummy.com/software/BeautifulSoup/ - -Beautiful Soup uses a pluggable XML or HTML parser to parse a -(possibly invalid) document into a tree representation. Beautiful Soup -provides methods and Pythonic idioms that make it easy to navigate, -search, and modify the parse tree. - -Beautiful Soup works with Python 2.7 and up. It works better if lxml -and/or html5lib is installed. - -For more than you ever wanted to know about Beautiful Soup, see the -documentation: -http://www.crummy.com/software/BeautifulSoup/bs4/doc/ - -""" - -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -__author__ = "Leonard Richardson (leonardr@segfault.org)" -__version__ = "4.6.0" -__copyright__ = "Copyright (c) 2004-2017 Leonard Richardson" -__license__ = "MIT" - -__all__ = ['BeautifulSoup'] - -import os -import re -import traceback -import warnings - -from .builder import builder_registry, ParserRejectedMarkup -from .dammit import UnicodeDammit -from .element import ( - CData, - Comment, - DEFAULT_OUTPUT_ENCODING, - Declaration, - Doctype, - NavigableString, - PageElement, - ProcessingInstruction, - ResultSet, - SoupStrainer, - Tag, - ) - -# The very first thing we do is give a useful error if someone is -# running this code under Python 3 without converting it. -'You are trying to run the Python 2 version of Beautiful Soup under Python 3. This will not work.'!='You need to convert the code, either by installing it (`python setup.py install`) or by running 2to3 (`2to3 -w bs4`).' - -class BeautifulSoup(Tag): - """ - This class defines the basic interface called by the tree builders. - - These methods will be called by the parser: - reset() - feed(markup) - - The tree builder may call these methods from its feed() implementation: - handle_starttag(name, attrs) # See note about return value - handle_endtag(name) - handle_data(data) # Appends to the current data node - endData(containerClass=NavigableString) # Ends the current data node - - No matter how complicated the underlying parser is, you should be - able to build a tree using 'start tag' events, 'end tag' events, - 'data' events, and "done with data" events. - - If you encounter an empty-element tag (aka a self-closing tag, - like HTML's
tag), call handle_starttag and then - handle_endtag. - """ - ROOT_TAG_NAME = '[document]' - - # If the end-user gives no indication which tree builder they - # want, look for one with these features. - DEFAULT_BUILDER_FEATURES = ['html', 'fast'] - - ASCII_SPACES = '\x20\x0a\x09\x0c\x0d' - - NO_PARSER_SPECIFIED_WARNING = "No parser was explicitly specified, so I'm using the best available %(markup_type)s parser for this system (\"%(parser)s\"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently.\n\nThe code that caused this warning is on line %(line_number)s of the file %(filename)s. To get rid of this warning, change code that looks like this:\n\n BeautifulSoup(YOUR_MARKUP})\n\nto this:\n\n BeautifulSoup(YOUR_MARKUP, \"%(parser)s\")\n" - - def __init__(self, markup="", features=None, builder=None, - parse_only=None, from_encoding=None, exclude_encodings=None, - **kwargs): - """The Soup object is initialized as the 'root tag', and the - provided markup (which can be a string or a file-like object) - is fed into the underlying parser.""" - - if 'convertEntities' in kwargs: - warnings.warn( - "BS4 does not respect the convertEntities argument to the " - "BeautifulSoup constructor. Entities are always converted " - "to Unicode characters.") - - if 'markupMassage' in kwargs: - del kwargs['markupMassage'] - warnings.warn( - "BS4 does not respect the markupMassage argument to the " - "BeautifulSoup constructor. The tree builder is responsible " - "for any necessary markup massage.") - - if 'smartQuotesTo' in kwargs: - del kwargs['smartQuotesTo'] - warnings.warn( - "BS4 does not respect the smartQuotesTo argument to the " - "BeautifulSoup constructor. Smart quotes are always converted " - "to Unicode characters.") - - if 'selfClosingTags' in kwargs: - del kwargs['selfClosingTags'] - warnings.warn( - "BS4 does not respect the selfClosingTags argument to the " - "BeautifulSoup constructor. The tree builder is responsible " - "for understanding self-closing tags.") - - if 'isHTML' in kwargs: - del kwargs['isHTML'] - warnings.warn( - "BS4 does not respect the isHTML argument to the " - "BeautifulSoup constructor. Suggest you use " - "features='lxml' for HTML and features='lxml-xml' for " - "XML.") - - def deprecated_argument(old_name, new_name): - if old_name in kwargs: - warnings.warn( - 'The "%s" argument to the BeautifulSoup constructor ' - 'has been renamed to "%s."' % (old_name, new_name)) - value = kwargs[old_name] - del kwargs[old_name] - return value - return None - - parse_only = parse_only or deprecated_argument( - "parseOnlyThese", "parse_only") - - from_encoding = from_encoding or deprecated_argument( - "fromEncoding", "from_encoding") - - if from_encoding and isinstance(markup, str): - warnings.warn("You provided Unicode markup but also provided a value for from_encoding. Your from_encoding will be ignored.") - from_encoding = None - - if len(kwargs) > 0: - arg = list(kwargs.keys()).pop() - raise TypeError( - "__init__() got an unexpected keyword argument '%s'" % arg) - - if builder is None: - original_features = features - if isinstance(features, str): - features = [features] - if features is None or len(features) == 0: - features = self.DEFAULT_BUILDER_FEATURES - builder_class = builder_registry.lookup(*features) - if builder_class is None: - raise FeatureNotFound( - "Couldn't find a tree builder with the features you " - "requested: %s. Do you need to install a parser library?" - % ",".join(features)) - builder = builder_class() - if not (original_features == builder.NAME or - original_features in builder.ALTERNATE_NAMES): - if builder.is_xml: - markup_type = "XML" - else: - markup_type = "HTML" - - caller = traceback.extract_stack()[0] - filename = caller[0] - line_number = caller[1] - warnings.warn(self.NO_PARSER_SPECIFIED_WARNING % dict( - filename=filename, - line_number=line_number, - parser=builder.NAME, - markup_type=markup_type)) - - self.builder = builder - self.is_xml = builder.is_xml - self.known_xml = self.is_xml - self.builder.soup = self - - self.parse_only = parse_only - - if hasattr(markup, 'read'): # It's a file-type object. - markup = markup.read() - elif len(markup) <= 256 and ( - (isinstance(markup, bytes) and not b'<' in markup) - or (isinstance(markup, str) and not '<' in markup) - ): - # Print out warnings for a couple beginner problems - # involving passing non-markup to Beautiful Soup. - # Beautiful Soup will still parse the input as markup, - # just in case that's what the user really wants. - if (isinstance(markup, str) - and not os.path.supports_unicode_filenames): - possible_filename = markup.encode("utf8") - else: - possible_filename = markup - is_file = False - try: - is_file = os.path.exists(possible_filename) - except Exception as e: - # This is almost certainly a problem involving - # characters not valid in filenames on this - # system. Just let it go. - pass - if is_file: - if isinstance(markup, str): - markup = markup.encode("utf8") - warnings.warn( - '"%s" looks like a filename, not markup. You should' - ' probably open this file and pass the filehandle into' - ' Beautiful Soup.' % markup) - self._check_markup_is_url(markup) - - for (self.markup, self.original_encoding, self.declared_html_encoding, - self.contains_replacement_characters) in ( - self.builder.prepare_markup( - markup, from_encoding, exclude_encodings=exclude_encodings)): - self.reset() - try: - self._feed() - break - except ParserRejectedMarkup: - pass - - # Clear out the markup and remove the builder's circular - # reference to this object. - self.markup = None - self.builder.soup = None - - def __copy__(self): - copy = type(self)( - self.encode('utf-8'), builder=self.builder, from_encoding='utf-8' - ) - - # Although we encoded the tree to UTF-8, that may not have - # been the encoding of the original markup. Set the copy's - # .original_encoding to reflect the original object's - # .original_encoding. - copy.original_encoding = self.original_encoding - return copy - - def __getstate__(self): - # Frequently a tree builder can't be pickled. - d = dict(self.__dict__) - if 'builder' in d and not self.builder.picklable: - d['builder'] = None - return d - - @staticmethod - def _check_markup_is_url(markup): - """ - Check if markup looks like it's actually a url and raise a warning - if so. Markup can be unicode or str (py2) / bytes (py3). - """ - if isinstance(markup, bytes): - space = b' ' - cant_start_with = (b"http:", b"https:") - elif isinstance(markup, str): - space = ' ' - cant_start_with = ("http:", "https:") - else: - return - - if any(markup.startswith(prefix) for prefix in cant_start_with): - if not space in markup: - if isinstance(markup, bytes): - decoded_markup = markup.decode('utf-8', 'replace') - else: - decoded_markup = markup - warnings.warn( - '"%s" looks like a URL. Beautiful Soup is not an' - ' HTTP client. You should probably use an HTTP client like' - ' requests to get the document behind the URL, and feed' - ' that document to Beautiful Soup.' % decoded_markup - ) - - def _feed(self): - # Convert the document to Unicode. - self.builder.reset() - - self.builder.feed(self.markup) - # Close out any unfinished strings and close all the open tags. - self.endData() - while self.currentTag.name != self.ROOT_TAG_NAME: - self.popTag() - - def reset(self): - Tag.__init__(self, self, self.builder, self.ROOT_TAG_NAME) - self.hidden = 1 - self.builder.reset() - self.current_data = [] - self.currentTag = None - self.tagStack = [] - self.preserve_whitespace_tag_stack = [] - self.pushTag(self) - - def new_tag(self, name, namespace=None, nsprefix=None, **attrs): - """Create a new tag associated with this soup.""" - return Tag(None, self.builder, name, namespace, nsprefix, attrs) - - def new_string(self, s, subclass=NavigableString): - """Create a new NavigableString associated with this soup.""" - return subclass(s) - - def insert_before(self, successor): - raise NotImplementedError("BeautifulSoup objects don't support insert_before().") - - def insert_after(self, successor): - raise NotImplementedError("BeautifulSoup objects don't support insert_after().") - - def popTag(self): - tag = self.tagStack.pop() - if self.preserve_whitespace_tag_stack and tag == self.preserve_whitespace_tag_stack[-1]: - self.preserve_whitespace_tag_stack.pop() - #print "Pop", tag.name - if self.tagStack: - self.currentTag = self.tagStack[-1] - return self.currentTag - - def pushTag(self, tag): - #print "Push", tag.name - if self.currentTag: - self.currentTag.contents.append(tag) - self.tagStack.append(tag) - self.currentTag = self.tagStack[-1] - if tag.name in self.builder.preserve_whitespace_tags: - self.preserve_whitespace_tag_stack.append(tag) - - def endData(self, containerClass=NavigableString): - if self.current_data: - current_data = ''.join(self.current_data) - # If whitespace is not preserved, and this string contains - # nothing but ASCII spaces, replace it with a single space - # or newline. - if not self.preserve_whitespace_tag_stack: - strippable = True - for i in current_data: - if i not in self.ASCII_SPACES: - strippable = False - break - if strippable: - if '\n' in current_data: - current_data = '\n' - else: - current_data = ' ' - - # Reset the data collector. - self.current_data = [] - - # Should we add this string to the tree at all? - if self.parse_only and len(self.tagStack) <= 1 and \ - (not self.parse_only.text or \ - not self.parse_only.search(current_data)): - return - - o = containerClass(current_data) - self.object_was_parsed(o) - - def object_was_parsed(self, o, parent=None, most_recent_element=None): - """Add an object to the parse tree.""" - parent = parent or self.currentTag - previous_element = most_recent_element or self._most_recent_element - - next_element = previous_sibling = next_sibling = None - if isinstance(o, Tag): - next_element = o.next_element - next_sibling = o.next_sibling - previous_sibling = o.previous_sibling - if not previous_element: - previous_element = o.previous_element - - o.setup(parent, previous_element, next_element, previous_sibling, next_sibling) - - self._most_recent_element = o - parent.contents.append(o) - - if parent.next_sibling: - # This node is being inserted into an element that has - # already been parsed. Deal with any dangling references. - index = len(parent.contents)-1 - while index >= 0: - if parent.contents[index] is o: - break - index -= 1 - else: - raise ValueError( - "Error building tree: supposedly %r was inserted " - "into %r after the fact, but I don't see it!" % ( - o, parent - ) - ) - if index == 0: - previous_element = parent - previous_sibling = None - else: - previous_element = previous_sibling = parent.contents[index-1] - if index == len(parent.contents)-1: - next_element = parent.next_sibling - next_sibling = None - else: - next_element = next_sibling = parent.contents[index+1] - - o.previous_element = previous_element - if previous_element: - previous_element.next_element = o - o.next_element = next_element - if next_element: - next_element.previous_element = o - o.next_sibling = next_sibling - if next_sibling: - next_sibling.previous_sibling = o - o.previous_sibling = previous_sibling - if previous_sibling: - previous_sibling.next_sibling = o - - def _popToTag(self, name, nsprefix=None, inclusivePop=True): - """Pops the tag stack up to and including the most recent - instance of the given tag. If inclusivePop is false, pops the tag - stack up to but *not* including the most recent instqance of - the given tag.""" - #print "Popping to %s" % name - if name == self.ROOT_TAG_NAME: - # The BeautifulSoup object itself can never be popped. - return - - most_recently_popped = None - - stack_size = len(self.tagStack) - for i in range(stack_size - 1, 0, -1): - t = self.tagStack[i] - if (name == t.name and nsprefix == t.prefix): - if inclusivePop: - most_recently_popped = self.popTag() - break - most_recently_popped = self.popTag() - - return most_recently_popped - - def handle_starttag(self, name, namespace, nsprefix, attrs): - """Push a start tag on to the stack. - - If this method returns None, the tag was rejected by the - SoupStrainer. You should proceed as if the tag had not occurred - in the document. For instance, if this was a self-closing tag, - don't call handle_endtag. - """ - - # print "Start tag %s: %s" % (name, attrs) - self.endData() - - if (self.parse_only and len(self.tagStack) <= 1 - and (self.parse_only.text - or not self.parse_only.search_tag(name, attrs))): - return None - - tag = Tag(self, self.builder, name, namespace, nsprefix, attrs, - self.currentTag, self._most_recent_element) - if tag is None: - return tag - if self._most_recent_element: - self._most_recent_element.next_element = tag - self._most_recent_element = tag - self.pushTag(tag) - return tag - - def handle_endtag(self, name, nsprefix=None): - #print "End tag: " + name - self.endData() - self._popToTag(name, nsprefix) - - def handle_data(self, data): - self.current_data.append(data) - - def decode(self, pretty_print=False, - eventual_encoding=DEFAULT_OUTPUT_ENCODING, - formatter="minimal"): - """Returns a string or Unicode representation of this document. - To get Unicode, pass None for encoding.""" - - if self.is_xml: - # Print the XML declaration - encoding_part = '' - if eventual_encoding != None: - encoding_part = ' encoding="%s"' % eventual_encoding - prefix = '\n' % encoding_part - else: - prefix = '' - if not pretty_print: - indent_level = None - else: - indent_level = 0 - return prefix + super(BeautifulSoup, self).decode( - indent_level, eventual_encoding, formatter) - -# Alias to make it easier to type import: 'from bs4 import _soup' -_s = BeautifulSoup -_soup = BeautifulSoup - -class BeautifulStoneSoup(BeautifulSoup): - """Deprecated interface to an XML parser.""" - - def __init__(self, *args, **kwargs): - kwargs['features'] = 'xml' - warnings.warn( - 'The BeautifulStoneSoup class is deprecated. Instead of using ' - 'it, pass features="xml" into the BeautifulSoup constructor.') - super(BeautifulStoneSoup, self).__init__(*args, **kwargs) - - -class StopParsing(Exception): - pass - -class FeatureNotFound(ValueError): - pass - - -#By default, act as an HTML pretty-printer. -if __name__ == '__main__': - import sys - soup = BeautifulSoup(sys.stdin) - print(soup.prettify()) diff --git a/utils/lib/python3.5/site-packages/bs4/__pycache__/__init__.cpython-35.pyc b/utils/lib/python3.5/site-packages/bs4/__pycache__/__init__.cpython-35.pyc deleted file mode 100644 index 9b6f5c8fcaf9fb110f7df8cd7d861f522284caef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15413 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 diff --git a/utils/lib/python3.5/site-packages/bs4/__pycache__/dammit.cpython-35.pyc b/utils/lib/python3.5/site-packages/bs4/__pycache__/dammit.cpython-35.pyc deleted file mode 100644 index d0dcca2420203e1c705d9840332ab3acf54cb5b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20530 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 A;Q#;t diff --git a/utils/lib/python3.5/site-packages/bs4/__pycache__/element.cpython-35.pyc b/utils/lib/python3.5/site-packages/bs4/__pycache__/element.cpython-35.pyc deleted file mode 100644 index f7ad23b705bf7636db2de49b4c1bce75103c3cfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51512 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 J_}qb`{||?}b^`za diff --git a/utils/lib/python3.5/site-packages/bs4/builder/__init__.py b/utils/lib/python3.5/site-packages/bs4/builder/__init__.py deleted file mode 100644 index 4d6f96d..0000000 --- a/utils/lib/python3.5/site-packages/bs4/builder/__init__.py +++ /dev/null @@ -1,333 +0,0 @@ -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -from collections import defaultdict -import itertools -import sys -from bs4.element import ( - CharsetMetaAttributeValue, - ContentMetaAttributeValue, - HTMLAwareEntitySubstitution, - whitespace_re - ) - -__all__ = [ - 'HTMLTreeBuilder', - 'SAXTreeBuilder', - 'TreeBuilder', - 'TreeBuilderRegistry', - ] - -# Some useful features for a TreeBuilder to have. -FAST = 'fast' -PERMISSIVE = 'permissive' -STRICT = 'strict' -XML = 'xml' -HTML = 'html' -HTML_5 = 'html5' - - -class TreeBuilderRegistry(object): - - def __init__(self): - self.builders_for_feature = defaultdict(list) - self.builders = [] - - def register(self, treebuilder_class): - """Register a treebuilder based on its advertised features.""" - for feature in treebuilder_class.features: - self.builders_for_feature[feature].insert(0, treebuilder_class) - self.builders.insert(0, treebuilder_class) - - def lookup(self, *features): - if len(self.builders) == 0: - # There are no builders at all. - return None - - if len(features) == 0: - # They didn't ask for any features. Give them the most - # recently registered builder. - return self.builders[0] - - # Go down the list of features in order, and eliminate any builders - # that don't match every feature. - features = list(features) - features.reverse() - candidates = None - candidate_set = None - while len(features) > 0: - feature = features.pop() - we_have_the_feature = self.builders_for_feature.get(feature, []) - if len(we_have_the_feature) > 0: - if candidates is None: - candidates = we_have_the_feature - candidate_set = set(candidates) - else: - # Eliminate any candidates that don't have this feature. - candidate_set = candidate_set.intersection( - set(we_have_the_feature)) - - # The only valid candidates are the ones in candidate_set. - # Go through the original list of candidates and pick the first one - # that's in candidate_set. - if candidate_set is None: - return None - for candidate in candidates: - if candidate in candidate_set: - return candidate - return None - -# The BeautifulSoup class will take feature lists from developers and use them -# to look up builders in this registry. -builder_registry = TreeBuilderRegistry() - -class TreeBuilder(object): - """Turn a document into a Beautiful Soup object tree.""" - - NAME = "[Unknown tree builder]" - ALTERNATE_NAMES = [] - features = [] - - is_xml = False - picklable = False - preserve_whitespace_tags = set() - empty_element_tags = None # A tag will be considered an empty-element - # tag when and only when it has no contents. - - # A value for these tag/attribute combinations is a space- or - # comma-separated list of CDATA, rather than a single CDATA. - cdata_list_attributes = {} - - - def __init__(self): - self.soup = None - - def reset(self): - pass - - def can_be_empty_element(self, tag_name): - """Might a tag with this name be an empty-element tag? - - The final markup may or may not actually present this tag as - self-closing. - - For instance: an HTMLBuilder does not consider a

tag to be - an empty-element tag (it's not in - HTMLBuilder.empty_element_tags). This means an empty

tag - will be presented as "

", not "

". - - The default implementation has no opinion about which tags are - empty-element tags, so a tag will be presented as an - empty-element tag if and only if it has no contents. - "" will become "", and "bar" will - be left alone. - """ - if self.empty_element_tags is None: - return True - return tag_name in self.empty_element_tags - - def feed(self, markup): - raise NotImplementedError() - - def prepare_markup(self, markup, user_specified_encoding=None, - document_declared_encoding=None): - return markup, None, None, False - - def test_fragment_to_document(self, fragment): - """Wrap an HTML fragment to make it look like a document. - - Different parsers do this differently. For instance, lxml - introduces an empty tag, and html5lib - doesn't. Abstracting this away lets us write simple tests - which run HTML fragments through the parser and compare the - results against other HTML fragments. - - This method should not be used outside of tests. - """ - return fragment - - def set_up_substitutions(self, tag): - return False - - def _replace_cdata_list_attribute_values(self, tag_name, attrs): - """Replaces class="foo bar" with class=["foo", "bar"] - - Modifies its input in place. - """ - if not attrs: - return attrs - if self.cdata_list_attributes: - universal = self.cdata_list_attributes.get('*', []) - tag_specific = self.cdata_list_attributes.get( - tag_name.lower(), None) - for attr in list(attrs.keys()): - if attr in universal or (tag_specific and attr in tag_specific): - # We have a "class"-type attribute whose string - # value is a whitespace-separated list of - # values. Split it into a list. - value = attrs[attr] - if isinstance(value, str): - values = whitespace_re.split(value) - else: - # html5lib sometimes calls setAttributes twice - # for the same tag when rearranging the parse - # tree. On the second call the attribute value - # here is already a list. If this happens, - # leave the value alone rather than trying to - # split it again. - values = value - attrs[attr] = values - return attrs - -class SAXTreeBuilder(TreeBuilder): - """A Beautiful Soup treebuilder that listens for SAX events.""" - - def feed(self, markup): - raise NotImplementedError() - - def close(self): - pass - - def startElement(self, name, attrs): - attrs = dict((key[1], value) for key, value in list(attrs.items())) - #print "Start %s, %r" % (name, attrs) - self.soup.handle_starttag(name, attrs) - - def endElement(self, name): - #print "End %s" % name - self.soup.handle_endtag(name) - - def startElementNS(self, nsTuple, nodeName, attrs): - # Throw away (ns, nodeName) for now. - self.startElement(nodeName, attrs) - - def endElementNS(self, nsTuple, nodeName): - # Throw away (ns, nodeName) for now. - self.endElement(nodeName) - #handler.endElementNS((ns, node.nodeName), node.nodeName) - - def startPrefixMapping(self, prefix, nodeValue): - # Ignore the prefix for now. - pass - - def endPrefixMapping(self, prefix): - # Ignore the prefix for now. - # handler.endPrefixMapping(prefix) - pass - - def characters(self, content): - self.soup.handle_data(content) - - def startDocument(self): - pass - - def endDocument(self): - pass - - -class HTMLTreeBuilder(TreeBuilder): - """This TreeBuilder knows facts about HTML. - - Such as which tags are empty-element tags. - """ - - preserve_whitespace_tags = HTMLAwareEntitySubstitution.preserve_whitespace_tags - empty_element_tags = set([ - # These are from HTML5. - 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'menuitem', 'meta', 'param', 'source', 'track', 'wbr', - - # These are from HTML4, removed in HTML5. - 'spacer', 'frame' - ]) - - # The HTML standard defines these attributes as containing a - # space-separated list of values, not a single value. That is, - # class="foo bar" means that the 'class' attribute has two values, - # 'foo' and 'bar', not the single value 'foo bar'. When we - # encounter one of these attributes, we will parse its value into - # a list of values if possible. Upon output, the list will be - # converted back into a string. - cdata_list_attributes = { - "*" : ['class', 'accesskey', 'dropzone'], - "a" : ['rel', 'rev'], - "link" : ['rel', 'rev'], - "td" : ["headers"], - "th" : ["headers"], - "td" : ["headers"], - "form" : ["accept-charset"], - "object" : ["archive"], - - # These are HTML5 specific, as are *.accesskey and *.dropzone above. - "area" : ["rel"], - "icon" : ["sizes"], - "iframe" : ["sandbox"], - "output" : ["for"], - } - - def set_up_substitutions(self, tag): - # We are only interested in tags - if tag.name != 'meta': - return False - - http_equiv = tag.get('http-equiv') - content = tag.get('content') - charset = tag.get('charset') - - # We are interested in tags that say what encoding the - # document was originally in. This means HTML 5-style - # tags that provide the "charset" attribute. It also means - # HTML 4-style tags that provide the "content" - # attribute and have "http-equiv" set to "content-type". - # - # In both cases we will replace the value of the appropriate - # attribute with a standin object that can take on any - # encoding. - meta_encoding = None - if charset is not None: - # HTML 5 style: - # - meta_encoding = charset - tag['charset'] = CharsetMetaAttributeValue(charset) - - elif (content is not None and http_equiv is not None - and http_equiv.lower() == 'content-type'): - # HTML 4 style: - # - tag['content'] = ContentMetaAttributeValue(content) - - return (meta_encoding is not None) - -def register_treebuilders_from(module): - """Copy TreeBuilders from the given module into this module.""" - # I'm fairly sure this is not the best way to do this. - this_module = sys.modules['bs4.builder'] - for name in module.__all__: - obj = getattr(module, name) - - if issubclass(obj, TreeBuilder): - setattr(this_module, name, obj) - this_module.__all__.append(name) - # Register the builder while we're at it. - this_module.builder_registry.register(obj) - -class ParserRejectedMarkup(Exception): - pass - -# Builders are registered in reverse order of priority, so that custom -# builder registrations will take precedence. In general, we want lxml -# to take precedence over html5lib, because it's faster. And we only -# want to use HTMLParser as a last result. -from . import _htmlparser -register_treebuilders_from(_htmlparser) -try: - from . import _html5lib - register_treebuilders_from(_html5lib) -except ImportError: - # They don't have html5lib installed. - pass -try: - from . import _lxml - register_treebuilders_from(_lxml) -except ImportError: - # They don't have lxml installed. - pass diff --git a/utils/lib/python3.5/site-packages/bs4/builder/__pycache__/__init__.cpython-35.pyc b/utils/lib/python3.5/site-packages/bs4/builder/__pycache__/__init__.cpython-35.pyc deleted file mode 100644 index f12995521d4000d63ba489c0f6ff4fb45c376ce8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9260 zcmbta&2QXDb}u&BpK4jMWXqQPFfg(z&h+-w=bMu!>?(5>`nJ%EBs(K}A>6mChlWzjQ)RTVBeYQn7w zYe~2@Vbz7ZB&=oO)`fLOxXZ#?5kGWMD~nfHwk+hTc!|}{3VBw%6vA3V_Xr&Eri8~(+*MuQ2i^G~wKi2SkG1SE8>5xqxaz$8I zk|9@K8}d~)1oUn-wth(`)X?H3S9YDTAGuy9+HV-~=H0%dLK*GJ$k~Y^<+aC=eCYUN ziLPK6$>E}|OFuf;`*i2XQF3<}dC^I0+z#2NQNV)BW)$)6@oobQhq%4 zd{?UYOl#-!{P$A+V?ForK=!;aQYW#|b;8K1jiefQVdy=RaS83%L98DS{MhJ6D2r5n z*r9z+p8_g(@P;3tkT@fa7>!sDl>(m{SPy@Etk#sn=rqA3=y+)e@AP9-j^7o}HSt7bsb+} z356)EYM0(Xq$zO54rRa-p?-)rTmgz;hlDQR2=LfpL8wh)xfXRWpQNqdPvP*n*@{3- z?tB4)g2p;&CsLIlGnKkH{zINRo52w3-x$;&&=&^JRuoT4;<-Ugh?96x}G8Uce_Jqc|*rnY23ZX8{!2P#h)$? zOG5pM>aC~05|04gY83YQ;2PCf_vMgJNv(odaalqpY=JI|yY^<^et)eLa{_)C5e9F9lt z(eX7=2fkeb4Ak!6 z4gU(ooRTBU3R}xO0hI>MfLVpYgIT4rB4m{qh|DNV>XPtKhZ$u%`wDd!Q$SW&Q^JtK z=GM3ls|lN1=Q?a96es=wd`7&&aBVJ22n%qIZ(<-Y|pA&EMor+v%olARIQD<^fS= zAe|wsP)e8SqS+)zp6?Uk(hb8(IiYzCsBPaG-M)5%amJ^4>-M$WUWtyW>t%X_Q9^5n z6r9<|_+elMBbaV{I_+Q_ned@HI4PiI!pq7Qf9ocP@Hx?QPAzW_n(Gz3thYTRj$f6_Gb8s&!RBRI$y4;Dqi26v!U zW}@Afj>{?~VO@?Oe6O7iA|*6@Cu*8Ih;I~h9VnVC>l{H3`V#KyI5dwG0vor;y^Y`z?= zQY9Ak1J?}u!Ps|MCqeSSBM|m+MEcYWx(TW?AxyYxDsj_On&*;D+Mqq{wWGkEa@fx@ zhFO}tooDbjj(9WgfZ21Lp5mlK3(TW)4hGa7kL)lPf`)&VVKOKDi-0>ipy{dLCB9|R z`&(4t;f6ITTZvIszeuesA|D`_I@@tC zV5IFuINHgeKgVhu&x>LS2BQj}zY4E^Q@d)^5Hqh;O4=E1@_wGDzsa<4Z?Ds4-lpO^ zw4<_3(tN~JWU}p(e5ZM|NIV%$(E4f6AmDXZsLEXSwsdJ#nQ0EBGG^Ydl1>UJ+ zuzor@)@0v+JQ8~7mtIy-1}g412r%a2sL5ms_H#Bd zf43kWYEKcmvJLnp?Kq91^tjM`Kh~i|)NQoR5%bs8?VcRUbGA< zD6Z$%`a8mjNGr6r3zJL#2Ue#zjO2gR3FVKsv~<)G3z&f$b}gFVX*9yn=g4`4`vl0uKm!|-5?xF@a* z16S_9iDGB+6x(n8Qx3N)bGV&`JjK8n%_vEj&c@m!k}_1Ep{{<93f6{P zka))R83FcN|BRL?q2`Y-4|fWcH_L0Xc3gs1?|R2pmFU8m_jx4Nc&DE+*q$>&oY?!9 z94g;hM3+<0r}*j32&L?Duz(J$*x#us|20EEpS(4Pz&z}!<+G#t2JF0)vNJgsDKp3A zG&G$jQmuoF40!196XFavZ8Fc$GpG&`f*$&PGf@_%hT>&Dl6z^o>fbTLRJ&fDBgQGf z|JRyJpzCzS|H!SlHMe38Y`?KG=Ygmlj7;2udsHJ4Wl>NMsMez5CsaJ7;tMJ)D!!y* zCLEcBurd8>bcPpEkki0ULJ?_7qfTX!zB}m49s<0BH~b$IuR99T5Ks6LP{JWVz8ZD_ z9>dg8NL+-(IY``s#34vrfy4>ut&ymc55ayw;sNw94=&@7j^7eJObd@8t6viCWzmEE zxiYO}Ex4k4i@QwWev2y@yUCSn!u>W^t_$~Vu6#$h?@-0V4J5plcZJ(v?*v}UdoYII zRb}jW@|Xj(oG)oo8WU~?xEDblr++9@m4dlwr6TnENQM54|BcWuE~ zb!1$m2>3A8kJ`#A@%0{jZ^VJHeIH<7agpN*tLk(RafF!Js<U7rv^T$H~58&nt;A0uPI+ou6W@3(hU)UI`~bzJPkI) zHo~|By45J}D@sA%pVazMG`cCDj=g8N)V<%REmTcKOs&Yb;Fu>D+0g1ajAj~$gzCTWCSi+FDpWPS@V>sXw1R7z zIs&=$pPu}#=$RHKs?d70To|H=_)-&o=O%p8W1C$Ey5&0Ht1=Gs$&Y}`s;7sB@Eo6r z+Yq7S^inTK7aH*mT;=KY8h=;BlWKa>+S3cTBTK^ckM0JelYEX6xokveeFnRk--ZzHSf; zodLClzO1ckD`28kZMC5O7%d%Yo<3xh@8IP$=$xTIawtCc8RyL&NV*l0?jB!I?8B$K zjzP1aJBQkgY5oKt9}yztkJL3q-)a{H{T~UN5`jrl4xd&2{1ACTd=zcUDmJdhOHiwR zazz;?m;68Y-dcly0BJrCdhU1KfdO=Xe{hiie^#+KE_lzO^rMm_3F zSv5Ku4H(;ttzZ{ejtGJy2m%6PUx*F<0|++ug{S2TiXb3@EA-COzQFJIWmR?e91$kA zrOL_5{4(>){O&L7NU2oV`rY2GFJDyZ-__7>8ubf!{I;c3L#ZuGRZ+22!&WWSQ89H} zRc)!KR4b+0j;cDUomSPfYG+h6quNV#@fs_LX_PpRsZYEP@`w6Y!@lc8DFno;dpRh`42oT|>N zo1LFjj(0@eEhzmz%Bmh!R{yxb<^^`azycG%-on1{A3z@*RquB!_5Pa;;H1>2vVAYB zK1r$SG4*Dns2U|{Eh%qKZ6BA8XV5XO8WYknp}c3M^#occRbxt8rv&_@bd=FCtr|1Z zF{8Y)v_3}+)+)2%YUn(DSiW zcBR{Hdz~Q6UhdX|M?Ei`SgqY}Zq+tg-Wq1>Y=x=y+E&F1)9yyi_pYMmu(Dn!w(-wF zp#* zk(WAXgx4{tgEA?cUr~c)RsY#{eXo2cXt!QzH8;vZx4gl#EZ52b&UGow#a*lQG{E`e zU!qI={jZ>SY^%pgxu`fwKcfOmZ42I?Sju_~h8ETU%{CqNo`tuyN@}&geXF}u?&kue{mSW$$6VwbSriuT$?faDG1ql!9__XBbW3W)SssxzY9f&I>`=-|6+b zI@mXU>1rhv9@+6d?fN~h-rQ_@jb!pL_n@XbSj7(=)+*`H@x9h&m}%Ga-JPDMgjbI> zy7e7W*=>0BR!t90P@UR~um2sTk6_df&z}w2y|cY$?~I)3nfv!2HMh5Fcg}8jwVj~3 zxzqByJH40BZuoc%2cLE0^Iqyb3dg}`J*?&$T)xZ$&!JGMd^%&5tp3Tp60kHnqHYr! zzYLxfo)tX)-=P4(w((!6b2qQ_Nfp>?8?0n0k}Yu5cA8vAxQzNlS-Z9hAl*vsrc{tq zplgsb?RQ2@&g?fJKlqYlZ1uC zv@8OwbaSiOskH`J<%8~BuhZ;fi3|pNwRTvn->K;ctyZG>NKdTeO2B%x!|%ceLm01-6}G!K2o+I73?yRwI{* zIjf-JkE1AB89QT7r>2X=LQ$v4lRyF1#yNuP>D)V{?c&*lX9{dqq z*7^9WD4-r8(uvXSEQ+%x{$|^zdbW%bZaCD>lm`e2l(xeq_^pC|9S zu$;c{x`uc{vSmO43FQ}1C}@MCJxTdFImGcp61xFuE@B5J|HKYQ-*qZ%1F!uH8gy@=@&%HpJOBw%EEBIay_ z=xiJ%Zs_-Y6|p&7Lv zAHgw;iosF%$TEy`uqGSZ@+hGa$~?h1v$%EW;zQsgizf#}chzVq!vZ)R1QCLW6HW#L zPgP>yaBOIkA(6Qn`y}sRqJ!11eh*#W{9?$)(~VG*K1GV->COyuH%`FXQtAmJ8&RmR z`N02)sAQPp&n)$stv*XJZiOuc*TW-tl2V@=6%7+=!-Qtkwxd25zF4bdN7%mq+RweX z^wRmti|4;qe&^jw*RQRV7o}m5Em5^{{&9Kj*4p}&8-tcp3I2JYOrybb_OXh1yGng7 zhFniXuTUw#MgO<@TtaVf1NK3ig2umLnFMw;FL=dnEOi&r`k%+WvVmTmeh&;!Gz2Ec zQoYaOSFtyEB}|%oW{4;*5fs|2u~9HeIIek&v+n&z3l-{!7s3D#- zuM7NBkU4Qe9n)N(fr(ZwC6f(yz%gS=-?G6&yBYOxR|N=hrE$BY;D6u{E`PYGepW2i zZdQl|jX5rO{%4Fpiuf$xWCjRu_W&;nV9Lfm5DcS*RK=daa?rq_WR@7qQGeIE`EXeU zlkAjbmj=s5TYxVr=K zy3h5;M_S_dGiNyV%$aljEc!V|KaGadzPvA=_RsYT=s4}a!M@70evY`%*$LC_T2Q|e zrnfXb**yHVpouu|p?;enVqZ(Fy~Tpgr*WUsH6#F$32HU{AWS0x*!DH`Yv^oun;nG5 z$S-;Dt?Ja?+Ur#Enu;sTaB}1Tt@d7bslXW}rRaxg$#I2g84Y(tyy!yYPa(?~+WLMt z2`{QyYatwuoKj;z#9f9_R=Tggqf4G|M^bl$E!R+b8Vfcss!d0d@)DHCoY= zu@=#G49|ph#9pwz1g~t;>YpD{$it2{W4pB&5xunB>eg#5|J>4ETbs$xfnuYuHq!@3P>owD^$Yqs#spI((8-0o4q)d!kaZ`=`GU%9WD- zD(C%i7B90{W^sYVRTe+R;sy)GRQl^I)>zQo=pKv2a>Fpa!3H4$;~nnIpG8r$=W<1- z$R}0INSTs|sE*F$M;W<*$LF+rB2Eb1r|`}tZ3ZjDy4V^hR@R|m5mV-*4pj?XS&%v! zq2P*AhkAv68kaf%CKzjSEY#%`By~E>F|U0cJY6Ry{P8cJ6+HeT3Wz^c7b8Wf(Bl!+ z!bW&}lz4G?gpOql(16`f-63Y>dH)rj$aO|$XDUYH;5aV9hXFrTAaD?SW>hI`7%IlK z(6<3180Z>m5`G5A@4AP$5E?+=!xQ^EBbdm*k+>rTP&paW3zz^68cv)H$b@k1ZbtbR z1wS#ZXhjRqF%ZOC+6jkN2HtQnU_Fs7#Vgb|6tSGHvC(D#1~1Dw+pD4VQY9z(jOtvS zuD?r#s61m(R}GZ>C_^c}QU^T`YYwl+dH=DLW1sq0+#`v8^n z2{O#$KF_D9F#5AYluLl?)c^ePZ$iAtBiuv0hvGV+%hHG>tO~;``?SMU%j?KK4_+!n>I)FA`;SA*O(x4l zod*jmZ5Iz$M0P>ev&>SFre%D40FB{n8yf%9(3-<^O#nvLO+1{h1MRgOyfqwWBE{`fbc z>MM9L3eLoDpfL3;96jnX=zh^%tQe0I6L=i#xyU`$3X(7;|$&G1L3jB(Kl9{*3FfPj+&Z3;C_4h5f@kmyUS zM;)Da<36x1B87A8qr3kGE7&%|B53Km=xRnS(Maqc5ZHMKc~=3YIfxs%AeNN{i~7&_ zf-5s1#CtWonz`lf%!1lSID?^F4q?bpoi|+r42C;0k__aaJc9&e0x``IP?#5BxTwRe zn@I)oHcX)0qU!u=yjyb;ugI!q0<;*5mf-PTj1&0ESSD=tjLZf^!C+=L{df|IZxHlE zp%MbZOtds36>(|Cbfkte)mB$xKo|Q zoy5Ln!%3HM04wK(L37-Kh*o1~n-N~y-{H!%_w@#5Z~5TTY<%lBSYH@S6j%OI1iBLN^%V?8{x zf1QQFI-CXIkjWG#`orOgAe7Pr+zsp7QEsTHA7GREHVZLZ&!L87`%Vub6ZM)T@T%G9 zGO~IK(qUNlAXm_pn9?6;-s&tIGruJ5dIy2TuIEqCpYmM7QFzQKbDm$S3$hiGiTS9so zi-b36jYLcF5QP-fxI#>}2zlv3!%#(^8h{coT=8KeR!Qrh#*A{9`j=1(i{_%?l81{B zPXfN!HeDy+6T&zFb;-bK;P!C6E>{~&&%e$+=g_DSV`r=x+|b6{Jpf8#39@z~d*8(i zahDANcT|8bw*>=%MuZ56Be2D9#bC(K4b`zd2*J^X0|Dbs=I$^TK97Jt78b|UL#6_O zhcOkMlkqCx_!tKsCx!zd7ybyXJeZdHx>7KCjO%p)clJ$OUb zM61wIz)+)ArcjAa8N7rJ*&BGoHui*f2C=(JO!puXj%lxruQ^tj^|?-j#0{|qig&0# z!GMX2g!t^ zfgJ?=ju>EcOAEOREjgJbH#7yj3izG8W`u@IEB!|-ALqrjK@0dm>af_X2(#$#u?{eJ zfVB1kMsE|44j7v93ytLx%t7-z#UdDR$wzln>~&XxwdD5J4I zV(n8D)k%D1b-&r&@nhpY)Dn*)_e-`BAKLN5nW}grxM78VB3xIUrkXVk$vo4W@@>wr z+fh9}fb;iyDAoCWowD!hi~HIKZjC!KJwE?&jpI-q+iYq$KxT&H;tWZB-?DI!_e;s7 z`B<$JtVG$-w<#*;0I4$YWKwzfF>@*SHK`2znmoSxDaegKU47pCv&?7a`4`^-~NJkm063V7d&Xxmt%;aZ2Db zV8}g29#cRjXyh-z$VXomWsT;06YCj0A|{k}Od>8#V+%7x>g#JPL<^>nO^}?-UM-Wa zx4IpV3i8`LxB^Dd${dB`H-+R`d#H z9WEWIx5Ts!x<}R|n5_A7vL+NOO<0*;6BL2mtKh>=9GJn$kc01{f|2TS_>Bo}Qsvn4 zm`GfiLl7;(gApD3n_^Kjp@ zNHwI2mx@^?j7?+?kmScRy@1Dm5yclwHmt$Q($`7+juc+_2yw`i@T(vT5Coh*4qoiM z2mo&I!OdueVik&rxkKjqh1)d*+aiaW!g-^4)!L>GM&F|K{#ucr*`e4=&`h15=$IP27n+Obj!mnbL zy_W()+JVnEpdt_Tk2$A<3aDsY%E}`1cQ82klxc?3bx>5t@LkkW3@$+*8pl?#0rV#K0>?OG7{E!nNtjGcn#avg>ozN2VG7hfJB_oC|*?rsy14_vE zJZj+>4i8sWa&DpJX*yDpSJv;c#;c4lV?F?qyq6(5nb$ba2OLV6TQ=YGouktAPoc=C ia5mOrX5J}U^Uh*6g^#!j)-=imd;awWcmBk}U;iKI(?I9| diff --git a/utils/lib/python3.5/site-packages/bs4/builder/__pycache__/_htmlparser.cpython-35.pyc b/utils/lib/python3.5/site-packages/bs4/builder/__pycache__/_htmlparser.cpython-35.pyc deleted file mode 100644 index ba89d280d565b2d9767dbb456fdfe341dd4421fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8764 zcmb_hOKcq3TK=p0@gXNpR9*>1bL zy604N95?nL-CPz3=`KJ5G|S5hi4_tONTAD#6)To!!3H4_gv5?TgaqIJS9Q7Vn@m{H zcAYwP&iT*z&wu{+nH(4>Y<<^y{CJ+|U#RCdiuxTq!3QQ$mB>bE(3U~AK~) zNRgc)WB-&irKKrNcAAVw{>PN|GPGMD)gr^rlF>O!Kdxq|nx&s&t}J;udI|V6J$hWt z5&kjgNtV9y4f={#$WgtI>^_+q^*q^m^7?3}z+Kfo`aP3QZ(xFcvWsL7kk`+xyCyaN zfxIGB^WFM@v}ed3>>2aVGDgPRLp|;PCG7>;#rR=ayPxVK)EFgulp14Xk5S_k*{7&6 zPWCu8Cdi&3gYhj=eUcheWKU7!G}))4)&Z)Yp~hLV&r;(Y+2^S79@+1qZ;j+16%}n;k^+77)6_e~D*%!&XNITP19i^8zuS?|N z-y#QP)IKJa%keRprN#`|GeC5lsuPThJxkR|s!mD0MBc1` zp+p_|6A^5>sDa8=+bt6qDiT(xh7O{>K%(r0bf>Ry1M zZfLp6^JhZzH?3!GbwQ6G0hg8MebTPgtDbtrY+5pO;iwm1gUQ#bQcYFiLEWE$${jqx zFbWS_0S}|Zp&3BdRB1G?l~TITaeTMoIgTzkPNP|E*STJFoNwB0J?i;$QhgXL#p|WT zu+ds<)mrn<7`6H5&-ZIPTkiJaGtX^@was=tXtrA)Ej|nIM942X+hLh zQG=LK(TGramBPm>Zh6J1l`=ZByyAwg&Mh|^4bKmC|B6?syUGn~O<(6$nw4~PU zs#)=ZpyqGg^Mg>eE8Jf)_2{Y}*24Yu_Ok$Qpa!UcFZ^1iS@l-jMxz#D_i3h}9^$fx z+B&;let2)W-05e;7b47$QJ0augD3b7#R=+yE17jttT3u+si!H@0$`M%f<2)T@DDN1 z%V(CV5b%B(2{DHp4@eyYz*|F7&$G-xMtEin9;ND-)S&>NiN>W4zzOD89s>n1g>ycw zCqL<)%R0^_VHj0m2H_uXg(-d?Phg=4iFOP+AUZ&4($5Ssw(vpZfO!a$8sHnnV9Y!< zzZQaF&bf8vxz&BAQf~%c)$tmwaNqIj9v>YOI`Hb7I_;{hKxcRN_G!9eJj%^vNCJfn4YE7To zcKs^&{ut7C!9zoFM-aLy4Bag~&>iVl@mWf%GgwQfSx$7u4MP>^6gp09O^^1@;|c5v zV=6oCn=(3cZ`4$^dxp&KC0VUE5TphpqS`0Pbj00Ki^rs=Sc4gmUxT<(}sNl6JBgQ6HLjQ-Lv z44xuQJDFn?&a7$bnA6kxRAt+%>^jF;*up$1IvDW7wE7PMe*p?>MA* zlH{Dym@VO+Pw){L7aRPR?&4R@fkX57ErEPWtMV;A4md zd+hcU8#QNjt$eTi*eTz4mOov3xU^heeW+7gUKo)iQq&?SI?qVDmC#c{l9Tipj_Cor z1@{3I`2(g%0Rj2_=rn(TA8Uk)xNGIR5C8rTc9#(}7G8w}>WS z;nz6`DLY59IW>r;Sk&IQqvV7mN9vC-JW>e80M7N@XBvSW+X=I($R2B#<2!+Pb;VBo zfR7nlh^3GufH^eCALS0n8bTNKV}kuaV>}J4Qe>TzX(40@4bp3!zLopS<;M?JEjt(2 z)MchXHd2f?P*+S~ovM3&L?M>2@1sznwBTX>DaHm&QUZB~jMGLDMge4cr+xx#LL;Wn zaT7VIh+u!w@d%jb}PJfOGVk(Ur zS*V6=#7vjpCK$cI37P&sg+e7eQ5;-+-*M+-5pUK0g0~^YF+%_1+t5!S)=Gnlt&d_T zmE(dPS9OUCb|xZ!g(<4on^hlkag&SNT(A;U%Um4UYN?42Jc*7U;t3{D6wP9>*gte` zsK1yhju!ihnPQ<>P&}rBC;2ftckl#Xqwt^+#eIuHJq|+<@}>!i2_zdl$w45cu!SrF zVu~a}fy#}d5|nTj5vNF+Ar4Y7CxVL%eE)*txZ!TO(i=Xc&?G+8byT3?fg%iW5ii!` z&;};m0Ix&A$KNTs0U<{Zj3@Zp0U8`wq}T51EE_twaKn|R57QPpu}KL^X+5=ke+`k@ z7t7`Q51sPTZ?3L8QJ|)+-kzwfLqS zA4Pf&M<-q1>MXXT&T(;cUUF1?>VJbLHVp%C8QE>@oIi@OdP2%1WLc~5aq*9NhaW!6 zppF8RV|5Ab09suZ4Jpb3VseZ)ANJQxGji|QHP5m) z&Lz4~W{>76WjlXeu;Sl!<%MnKU$>U5kLJU6tL|B|4Oi{9Ti2|ns%_PLw{CepB4{2mAxhxbysSsO7nORuir_8AFJS+vhI{~gD8J(A6c|d4fxJ2! z;bo6>_msfc6WuMytVit^z=ffUxtth94rhfW#eu+Dk+1bR=C>!?$oM!x%d6BjYa9c| z7};m4%}QG!lV!Sn>Ngm2AXEsJyBn~xRmo4B;5a?l0urFJ6Yb;g0U59dM7bej#7LV( z_$PUIC|RR(`OQpte1b#`vnorx>EFi(WD?%=hL|V#VC+o`-~CMdS?H$ z5>0P$VuS~IV96k~f@WQ^MGOHp6-KJp!NivL0!|~#LZm0G+4_q{9TH+OEB*kfzS1=e zt6JcL6Vr=iLx+wfdwUBN)owKQ7b?xhV$j?Sksh=tebP0y=Jl1=wvS|4zMPIFBUK5WCwZFrBO zW(hOlM@dl0EUgmlr?b&Q>POssLKU*^|0g_A+yJL(2wa!~PclCi;6ioI935A$Qe@0Z z11IdMorQ3Nuy(#xtL)a@XLT>mdoDd(hgY9oTl#!eafqVWO6tB%&xQK(g2)iBaR+16 zgXNKdWwZ5{cqA>#o*n-UnZ;bn7#->S)`{Z#>~O=ldq?r&P^Z8-oD6y40a39bEVR4_usK1G}nzM?tEuy z-hTRIej%!TF#qebEF=*uP9U|e_O@%G7qp-`!MWf7 z&*BtF?O8kYy7S0P@!AeAemz;eyZEIyLB$x%-NaVkur^~WITeTpGA?e|R6siV0d-wpWQ1j%|q8oo-mpu0ky1y4G?n!)ZCcvfs(3#eh(zp+?Zy%{}S0QA+-+T z2*O8emAci^?WiUVr8#`OZPPs{;k1-nt3#N2j-h~@VGgIb399HmJ`AoUdX~Lzw*Je^ zfd2vK7b=e3pGe_C$%=MlpI;&<#8#X(GGX;a<8m~Ne^JJK6BL0$Un0kV2!c($bi-em zgbM-P3nd#U*1qr%pmd>d(GrCc>?9Qbc>_H_fHC=n1Rn^~ z|B=E%cQHgISg4N!y0HIbBhrPzztRKF8p3JTD8Ptu+=9B_ zq66elKo?W+fhU?y@$J@4gWHkQjv`1j`6ii0prrk1d@df}kai@`kB?VBk#=A*6h)#~ zzMs^e$j%114k9s5uxNvHkmo=P1VKCeR54oEiUeYy-Zwu-#uOA30txkoc<^D74zSx{ z+Rc&r&g7FD=JpNHX@CxaQz165oCf^ZJixkQZFg`1R^U}8F)l=aEUoyCyT{`0Da_%I z(ZS%cL6d0ZfjFPvl|^wYfQ|Ix$8;^qzBdh;knI3q{5VfZGjm*#c5s=HXN1(>%8ZkA zfVh)AOe8C>$!b$QP27q3P809z-vr_ecXwwjjjSoKJiTHS+_}{Dy%+G5LO6XD7v{Bl zLFROG?XxA-kCBQqFRzW6*T(c~6U9cu^iWUo&NgD!xqL$6y`)GM|Rul@%= z_1ioP7YGSAxc-#uXYC;;S<4Aw+V$xuJq<}@x3A0RV2m{I4HyC+G^M}XCth8tG4 z_25zfhmS9oqFh`GSs9%{F3wXrS9b%xF;FYK;#Ukc($xn}h{=_Uv|eUQ!LsW<5F@C# zh|_0e`Y6|zMfR%I40NW_gq4=KU1vn0=nNwIrjp!-?!&5*DLe{6^~5rV{|*A2GMs2< z^)qp%*Y#lF!F%P6@Kv8z8jA9>Monii3l>w)7~P9pR2UUwSCZ!1XhiBvE;`b%wIPzM z7=&mOel@h9=Qnk>xw(l2dh9L-N^o2G;xnQ3f1@qnb09be>?ox19!q772}!SAL|fh% zH%DQY4dXn@yzv44hS^TTl^8ZB05gg@zbDKw^yiHW#w6w$GRMqe^b8pAJrP(jyYY|T zDLl(~f?q)a9SZ*zQVEWA5OPV6yZ(EPR#Sz-h~lH^{OXH}*OF_`RIneY2aIkJA$0(T#kJjL zllge3sqm`#c;ysubHUMfF%nrh6rZB7`*D@K5Z~lQDJ0I0MJXhX8YJCf7kE@0w~TTt zhg=bCd<`7AY~$R=ej9S{C^(rRDFt=NwQsrDMxk>E%|E%nzG{!uoA56{#pntSe5zOo zMW*DKg;+f#O`JX5cO$yczQrmhxPu~_&8LQu&OT*~rb@WzDdx`^myz0@O3mgb%yYS{ eIdL%Y;RSFO_|D9m*#U5)IbjxmR7``<%>M#7<8~OeeV0amNlFNIX%>-RZdy-M+4STrRs_ zIrmoLDr_W3Kw^Ug(kuoEi7o#C60n;stYCq3HZ0IA8i^GWi(UY~@4L4uw%bOO>l~lg z{q8y6_xoO_7RSen^}p!;?7y!O{Tm(oWYE5k68#6N5MPVxHhE~+6gt$jsD-Xg7WZB0 zJLEY@KSNEIJXh9cshOcxmb`2-m!oEmT6yyF)GClypjMH*BDKcI8>3c^ zO^`Q1tx57GsWnC36t$+wo2J$bc{9|SC2y8mbL7n>&lIRRPpt*=7SIRTMf%NfjCcQ5 z&Y))L4K}%i(GnksM=erQq?YInHhh7?3{@-RX8!TlPabb+r9SU9nxWDUI~oIK^3?FR zU=39)ll#0MtLV{B(acw4-DuYz{d5zZjEX^{k}3Ha3ACeF_iAyY(>6tnk%#itw3 zo;<2nAAPl9=AH&RQu>+NQ?*!yPXfK)>zc9S%N@K2yPn!;*E%8gu&!dP?P%jR4_eI{ zA9nZ|q2mLKND+A!a~W_@4()-H8D=abu5v7AKm>9IYU&s)k}8lIBUK_bPHKYc8I~?E z1nGkRSk}O@X$rFx=2%9MbO<5^Y0nY_%U{T~L~lWPj>2&YCuDYhIEw|KIYnQV0rj(q5tl0Dwmp=q=s|>0@?DrY=&5?nP-|q7dK9(!NaLdlX)gHX83!SeEt` z3O}ImsiaZokLCK_DZjpOd!m6g}8UoXG@c)6qN zE0Dv=M|bXgveF)cq=uF9;r|7c2Pn}es1Awt1l;=t(hF&~8e6mny|lQWC~OFA1aq@= zXwe&TtCifQ$;N@MtJsVIYmKg73xha#=;gGkbzUjGW%4RTLd7wYeyDbWUNiQ)0wkTq z%T0lyDgBCV+(Q%q7R}XeqwpGxJ8#}#b z)ai9^uWUysiK?ym%%kOQ-%Ol*;YT1Cs}YMb^PdSjDb$QU9AT5on#)}vh;VXi zvy#;pK+-r7@H3-Y-MH_oreY)K$3Z;;7$8|QvA*$e?aRko{$};b+S97Zwxd?ijfSVc z3KIG{SEr7i_x(n@5&Qnbv9!#vbPTIkdfIbuVx=m#=QMcKM zE4E10IAFo)BNcq8+GeyB)F0#Fh}DOjDXVM`-aqF&!}T?`w)|nm=XMPx`g>Fm36#Hd zl%c~6^N=wt(rXte7STbHvCF53GlJ@klnIC8oOfLM$~rOM=J`EXUN8aN0F8GGffn=- z1sr85&hf%Sm=nAkYh60Z(ZO{(%+X$+)?Zwtqr7wqbcn_~A}@bI&mn|r#U1=}v7CPH z_8Y1h-Yu_{;i4KUDtC6uw{Hq(qvg@6@{N{wtsj+#cIijuP}Q1&R^hv$cgxGWK~(Ow z;lJyhwkp?l10BHk>9SVcCOj{LwNf0d-w0~E!?*Ghts*Rl%0U_CF^E;YUxp@@S;OEQ z%ki!%hn-rFsl40c=0oH5;+;<_MU!nrK1`Wr^qR}vk!uICN50+1?xRSLVTpd9*EyIn zSvjB5vpiB59yT)BYLymibXv)fzhu75c-~-n2TXHG82NjYQtX;eKJu z6Sj>ey&QJC8@HO?c&wqyso{sk3ezY+Ox0;nPk>8ci1L%2ZDB_dt1?X#t*lkD3-+Wl zjWTJC*(J-dW~`}m?el0*|u>6=kGIdt+=PF=!q97R9Bs1N`ngq<<;8a+2cd zHT~}qdfBJv{5lXHhbJcMdHVsm@dU+_6i?CKH0?OFUxYKatRuwJgGGvGM4Lq=v6nxz z==slJk?_TW-*@QiwnblyiLw(DRhdoDl-cIMR5J_pZLZjQ7+0$xG{pyBe7X7Ce)W;J zp+DrgAMo6CM>pz?cF-I_K(moH?v7HSahj@aGPPzWQfB7Mb^~#uT1T`Hstv6XD2_eu zbP!fbCkYV7o=S9(jIbEtBE|7Bc#X>uhq2TtSZOxaeUym3DZ%RVU&);Tf|h`wd3y#( znzN>@E7suR+18WyTVpfLAO6qYKrqBw#R8zAQ-hsLotmwG4U_r?s*08D^D+-e#Xecz zNA;&D5tD;(E}i{$VNs3w&Yuzrb6#Hm^Ay4YD})kw_mP`gZp3VmFT=|veOGoV@d(y1 z2HSrw>jVev#IWce8SpUE@LO-88Zh+;z+vj;fpt8DFS`evS17?;GbMnUl>o1{>0tGH z&%L-ozbj@QMje(Ofg>zEVn<|8iCJe?kf+s`e?`v`Lmw6Bpf5x~cJ%TWN{AHc2udXS zby(z=Gvyo|LB&8B(MKMp&pN~!xQZfZ{z_J(latMZH_%TUOdjAJpmBWlb3Di)S@H@w zarz3;WhnKC60b>=8dC{XaNI?*$NK{T%;^b>X=r|bR5^?ze6==LzltW0^$efTE z;VbK<1QHw_31AR3+sn6%v#XBZqN>!%9ouX;;EF9=*Q)CCKDj9 zjl7IRd?w$H5<+I8(MEEC6x2^k(wfL*(V9mXIc`tFfK2czjGw2(LUrVahCq10 zuh~Qev9qQEzQ|h<(H#6loDU!-7+inx1A(O^5gcNd`3b;fKPzp)&4udAavBfWgF6o! z?NH*1T2E_)70rGb0ZZeRDknUW_=Dq)I>y@N5yO@@5s2os0$(E)Cgv;6FP>wg`b(}( z@=QO)*x#Z=Y@C>5uC)N;TCxT|JR5&!0%61*4riG|!kxcEgHui{2ep0C z5B)nhYNAf#sWxCCNB^v6#_4vt$dtt4J;Q)EUhA}wE-?Cekw|BYNt_`f?a&06!$;KJGB!m}q5z>#oPLF;VcB!FH7L>I+JfK~V=MpS%G!XA6` zJF5&g&V11?P?@px=}?xMh8bC|)@jF3sZ$%#yt#it8T#{cq6t1(&BZ$Yuq)@b z?Bmzb80~{0l-wXBst!D|!vd-kUZMdc!vBV8z>#^!Ma_2`-qg^}`mn8jBaFQ1&Ng4! z`LBa0xq1mJnPZ5`bbH&4&}5^21Oskz2=V!X@$@-&K-{2=I6iL;-aDJ)DTTAy&bKfp zj+=JGnw>xm@=rM_=X&=bZh?0^Q&p<`&9VE@ZD*^49~j)9uy^o%Q}q2-C+xvZ`=;dkFMB~VnUVNhU&I@{x#2C%)3s;Sjc5LY z$7|K9{xPPK%#>ByxSMNFHq7MOJeKKHA}<<03CUdx_DPx9LQjtb%)5@_6_ zVN8N*4&{?XqrxqA)N-vQ!M?uFU5_hvO!^zHYFw>z#pu;_t`Kb=2f=0TvPF>#R?eU! z-ge0<*jae@tW|L4?W|j}OZie^rdY~590`0_nlCw%H%f)lR4G$(P_q24(T5fMK1!re zp&Y;6=3h1NQwZ*hGocyP4LAw zuC%$0Tj~Ndq^McggMwTTa~}Ti1V}j=6?4N1fruYgS#II%B+DxD&3}?<4Yh@R#wobT z-Q<5_d}!=WU!22Yc;MtFL-NnLQ`)&KnI}t=Km4DIu(T0pG*(w+^te&cyP$e{pR666><%qQ<@DapwHce0DGhH=dY`K%R~@ce zT(!9x=W3+ly31WL5k+pXi4c4xj6YXRnHT?#60rnItf2M+Vw$WCH7r&xnw;8 Da9LUQ diff --git a/utils/lib/python3.5/site-packages/bs4/builder/_html5lib.py b/utils/lib/python3.5/site-packages/bs4/builder/_html5lib.py deleted file mode 100644 index d9d468f..0000000 --- a/utils/lib/python3.5/site-packages/bs4/builder/_html5lib.py +++ /dev/null @@ -1,426 +0,0 @@ -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -__all__ = [ - 'HTML5TreeBuilder', - ] - -import warnings -import re -from bs4.builder import ( - PERMISSIVE, - HTML, - HTML_5, - HTMLTreeBuilder, - ) -from bs4.element import ( - NamespacedAttribute, - whitespace_re, -) -import html5lib -from html5lib.constants import ( - namespaces, - prefixes, - ) -from bs4.element import ( - Comment, - Doctype, - NavigableString, - Tag, - ) - -try: - # Pre-0.99999999 - from html5lib.treebuilders import _base as treebuilder_base - new_html5lib = False -except ImportError as e: - # 0.99999999 and up - from html5lib.treebuilders import base as treebuilder_base - new_html5lib = True - -class HTML5TreeBuilder(HTMLTreeBuilder): - """Use html5lib to build a tree.""" - - NAME = "html5lib" - - features = [NAME, PERMISSIVE, HTML_5, HTML] - - def prepare_markup(self, markup, user_specified_encoding, - document_declared_encoding=None, exclude_encodings=None): - # Store the user-specified encoding for use later on. - self.user_specified_encoding = user_specified_encoding - - # document_declared_encoding and exclude_encodings aren't used - # ATM because the html5lib TreeBuilder doesn't use - # UnicodeDammit. - if exclude_encodings: - warnings.warn("You provided a value for exclude_encoding, but the html5lib tree builder doesn't support exclude_encoding.") - yield (markup, None, None, False) - - # These methods are defined by Beautiful Soup. - def feed(self, markup): - if self.soup.parse_only is not None: - warnings.warn("You provided a value for parse_only, but the html5lib tree builder doesn't support parse_only. The entire document will be parsed.") - parser = html5lib.HTMLParser(tree=self.create_treebuilder) - - extra_kwargs = dict() - if not isinstance(markup, str): - if new_html5lib: - extra_kwargs['override_encoding'] = self.user_specified_encoding - else: - extra_kwargs['encoding'] = self.user_specified_encoding - doc = parser.parse(markup, **extra_kwargs) - - # Set the character encoding detected by the tokenizer. - if isinstance(markup, str): - # We need to special-case this because html5lib sets - # charEncoding to UTF-8 if it gets Unicode input. - doc.original_encoding = None - else: - original_encoding = parser.tokenizer.stream.charEncoding[0] - if not isinstance(original_encoding, str): - # In 0.99999999 and up, the encoding is an html5lib - # Encoding object. We want to use a string for compatibility - # with other tree builders. - original_encoding = original_encoding.name - doc.original_encoding = original_encoding - - def create_treebuilder(self, namespaceHTMLElements): - self.underlying_builder = TreeBuilderForHtml5lib( - namespaceHTMLElements, self.soup) - return self.underlying_builder - - def test_fragment_to_document(self, fragment): - """See `TreeBuilder`.""" - return '%s' % fragment - - -class TreeBuilderForHtml5lib(treebuilder_base.TreeBuilder): - - def __init__(self, namespaceHTMLElements, soup=None): - if soup: - self.soup = soup - else: - from bs4 import BeautifulSoup - self.soup = BeautifulSoup("", "html.parser") - super(TreeBuilderForHtml5lib, self).__init__(namespaceHTMLElements) - - def documentClass(self): - self.soup.reset() - return Element(self.soup, self.soup, None) - - def insertDoctype(self, token): - name = token["name"] - publicId = token["publicId"] - systemId = token["systemId"] - - doctype = Doctype.for_name_and_ids(name, publicId, systemId) - self.soup.object_was_parsed(doctype) - - def elementClass(self, name, namespace): - tag = self.soup.new_tag(name, namespace) - return Element(tag, self.soup, namespace) - - def commentClass(self, data): - return TextNode(Comment(data), self.soup) - - def fragmentClass(self): - from bs4 import BeautifulSoup - self.soup = BeautifulSoup("", "html.parser") - self.soup.name = "[document_fragment]" - return Element(self.soup, self.soup, None) - - def appendChild(self, node): - # XXX This code is not covered by the BS4 tests. - self.soup.append(node.element) - - def getDocument(self): - return self.soup - - def getFragment(self): - return treebuilder_base.TreeBuilder.getFragment(self).element - - def testSerializer(self, element): - from bs4 import BeautifulSoup - rv = [] - doctype_re = re.compile(r'^(.*?)(?: PUBLIC "(.*?)"(?: "(.*?)")?| SYSTEM "(.*?)")?$') - - def serializeElement(element, indent=0): - if isinstance(element, BeautifulSoup): - pass - if isinstance(element, Doctype): - m = doctype_re.match(element) - if m: - name = m.group(1) - if m.lastindex > 1: - publicId = m.group(2) or "" - systemId = m.group(3) or m.group(4) or "" - rv.append("""|%s""" % - (' ' * indent, name, publicId, systemId)) - else: - rv.append("|%s" % (' ' * indent, name)) - else: - rv.append("|%s" % (' ' * indent,)) - elif isinstance(element, Comment): - rv.append("|%s" % (' ' * indent, element)) - elif isinstance(element, NavigableString): - rv.append("|%s\"%s\"" % (' ' * indent, element)) - else: - if element.namespace: - name = "%s %s" % (prefixes[element.namespace], - element.name) - else: - name = element.name - rv.append("|%s<%s>" % (' ' * indent, name)) - if element.attrs: - attributes = [] - for name, value in list(element.attrs.items()): - if isinstance(name, NamespacedAttribute): - name = "%s %s" % (prefixes[name.namespace], name.name) - if isinstance(value, list): - value = " ".join(value) - attributes.append((name, value)) - - for name, value in sorted(attributes): - rv.append('|%s%s="%s"' % (' ' * (indent + 2), name, value)) - indent += 2 - for child in element.children: - serializeElement(child, indent) - serializeElement(element, 0) - - return "\n".join(rv) - -class AttrList(object): - def __init__(self, element): - self.element = element - self.attrs = dict(self.element.attrs) - def __iter__(self): - return list(self.attrs.items()).__iter__() - def __setitem__(self, name, value): - # If this attribute is a multi-valued attribute for this element, - # turn its value into a list. - list_attr = HTML5TreeBuilder.cdata_list_attributes - if (name in list_attr['*'] - or (self.element.name in list_attr - and name in list_attr[self.element.name])): - # A node that is being cloned may have already undergone - # this procedure. - if not isinstance(value, list): - value = whitespace_re.split(value) - self.element[name] = value - def items(self): - return list(self.attrs.items()) - def keys(self): - return list(self.attrs.keys()) - def __len__(self): - return len(self.attrs) - def __getitem__(self, name): - return self.attrs[name] - def __contains__(self, name): - return name in list(self.attrs.keys()) - - -class Element(treebuilder_base.Node): - def __init__(self, element, soup, namespace): - treebuilder_base.Node.__init__(self, element.name) - self.element = element - self.soup = soup - self.namespace = namespace - - def appendChild(self, node): - string_child = child = None - if isinstance(node, str): - # Some other piece of code decided to pass in a string - # instead of creating a TextElement object to contain the - # string. - string_child = child = node - elif isinstance(node, Tag): - # Some other piece of code decided to pass in a Tag - # instead of creating an Element object to contain the - # Tag. - child = node - elif node.element.__class__ == NavigableString: - string_child = child = node.element - node.parent = self - else: - child = node.element - node.parent = self - - if not isinstance(child, str) and child.parent is not None: - node.element.extract() - - if (string_child and self.element.contents - and self.element.contents[-1].__class__ == NavigableString): - # We are appending a string onto another string. - # TODO This has O(n^2) performance, for input like - # "aaa..." - old_element = self.element.contents[-1] - new_element = self.soup.new_string(old_element + string_child) - old_element.replace_with(new_element) - self.soup._most_recent_element = new_element - else: - if isinstance(node, str): - # Create a brand new NavigableString from this string. - child = self.soup.new_string(node) - - # Tell Beautiful Soup to act as if it parsed this element - # immediately after the parent's last descendant. (Or - # immediately after the parent, if it has no children.) - if self.element.contents: - most_recent_element = self.element._last_descendant(False) - elif self.element.next_element is not None: - # Something from further ahead in the parse tree is - # being inserted into this earlier element. This is - # very annoying because it means an expensive search - # for the last element in the tree. - most_recent_element = self.soup._last_descendant() - else: - most_recent_element = self.element - - self.soup.object_was_parsed( - child, parent=self.element, - most_recent_element=most_recent_element) - - def getAttributes(self): - if isinstance(self.element, Comment): - return {} - return AttrList(self.element) - - def setAttributes(self, attributes): - - if attributes is not None and len(attributes) > 0: - - converted_attributes = [] - for name, value in list(attributes.items()): - if isinstance(name, tuple): - new_name = NamespacedAttribute(*name) - del attributes[name] - attributes[new_name] = value - - self.soup.builder._replace_cdata_list_attribute_values( - self.name, attributes) - for name, value in list(attributes.items()): - self.element[name] = value - - # The attributes may contain variables that need substitution. - # Call set_up_substitutions manually. - # - # The Tag constructor called this method when the Tag was created, - # but we just set/changed the attributes, so call it again. - self.soup.builder.set_up_substitutions(self.element) - attributes = property(getAttributes, setAttributes) - - def insertText(self, data, insertBefore=None): - text = TextNode(self.soup.new_string(data), self.soup) - if insertBefore: - self.insertBefore(text, insertBefore) - else: - self.appendChild(text) - - def insertBefore(self, node, refNode): - index = self.element.index(refNode.element) - if (node.element.__class__ == NavigableString and self.element.contents - and self.element.contents[index-1].__class__ == NavigableString): - # (See comments in appendChild) - old_node = self.element.contents[index-1] - new_str = self.soup.new_string(old_node + node.element) - old_node.replace_with(new_str) - else: - self.element.insert(index, node.element) - node.parent = self - - def removeChild(self, node): - node.element.extract() - - def reparentChildren(self, new_parent): - """Move all of this tag's children into another tag.""" - # print "MOVE", self.element.contents - # print "FROM", self.element - # print "TO", new_parent.element - - element = self.element - new_parent_element = new_parent.element - # Determine what this tag's next_element will be once all the children - # are removed. - final_next_element = element.next_sibling - - new_parents_last_descendant = new_parent_element._last_descendant(False, False) - if len(new_parent_element.contents) > 0: - # The new parent already contains children. We will be - # appending this tag's children to the end. - new_parents_last_child = new_parent_element.contents[-1] - new_parents_last_descendant_next_element = new_parents_last_descendant.next_element - else: - # The new parent contains no children. - new_parents_last_child = None - new_parents_last_descendant_next_element = new_parent_element.next_element - - to_append = element.contents - if len(to_append) > 0: - # Set the first child's previous_element and previous_sibling - # to elements within the new parent - first_child = to_append[0] - if new_parents_last_descendant: - first_child.previous_element = new_parents_last_descendant - else: - first_child.previous_element = new_parent_element - first_child.previous_sibling = new_parents_last_child - if new_parents_last_descendant: - new_parents_last_descendant.next_element = first_child - else: - new_parent_element.next_element = first_child - if new_parents_last_child: - new_parents_last_child.next_sibling = first_child - - # Find the very last element being moved. It is now the - # parent's last descendant. It has no .next_sibling and - # its .next_element is whatever the previous last - # descendant had. - last_childs_last_descendant = to_append[-1]._last_descendant(False, True) - - last_childs_last_descendant.next_element = new_parents_last_descendant_next_element - if new_parents_last_descendant_next_element: - # TODO: This code has no test coverage and I'm not sure - # how to get html5lib to go through this path, but it's - # just the other side of the previous line. - new_parents_last_descendant_next_element.previous_element = last_childs_last_descendant - last_childs_last_descendant.next_sibling = None - - for child in to_append: - child.parent = new_parent_element - new_parent_element.contents.append(child) - - # Now that this element has no children, change its .next_element. - element.contents = [] - element.next_element = final_next_element - - # print "DONE WITH MOVE" - # print "FROM", self.element - # print "TO", new_parent_element - - def cloneNode(self): - tag = self.soup.new_tag(self.element.name, self.namespace) - node = Element(tag, self.soup, self.namespace) - for key,value in self.attributes: - node.attributes[key] = value - return node - - def hasContent(self): - return self.element.contents - - def getNameTuple(self): - if self.namespace == None: - return namespaces["html"], self.name - else: - return self.namespace, self.name - - nameTuple = property(getNameTuple) - -class TextNode(Element): - def __init__(self, element, soup): - treebuilder_base.Node.__init__(self, None) - self.element = element - self.soup = soup - - def cloneNode(self): - raise NotImplementedError diff --git a/utils/lib/python3.5/site-packages/bs4/builder/_htmlparser.py b/utils/lib/python3.5/site-packages/bs4/builder/_htmlparser.py deleted file mode 100644 index 907d355..0000000 --- a/utils/lib/python3.5/site-packages/bs4/builder/_htmlparser.py +++ /dev/null @@ -1,314 +0,0 @@ -"""Use the HTMLParser library to parse HTML files that aren't too bad.""" - -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -__all__ = [ - 'HTMLParserTreeBuilder', - ] - -from html.parser import HTMLParser - -try: - from html.parser import HTMLParseError -except ImportError as e: - # HTMLParseError is removed in Python 3.5. Since it can never be - # thrown in 3.5, we can just define our own class as a placeholder. - class HTMLParseError(Exception): - pass - -import sys -import warnings - -# Starting in Python 3.2, the HTMLParser constructor takes a 'strict' -# argument, which we'd like to set to False. Unfortunately, -# http://bugs.python.org/issue13273 makes strict=True a better bet -# before Python 3.2.3. -# -# At the end of this file, we monkeypatch HTMLParser so that -# strict=True works well on Python 3.2.2. -major, minor, release = sys.version_info[:3] -CONSTRUCTOR_TAKES_STRICT = major == 3 and minor == 2 and release >= 3 -CONSTRUCTOR_STRICT_IS_DEPRECATED = major == 3 and minor == 3 -CONSTRUCTOR_TAKES_CONVERT_CHARREFS = major == 3 and minor >= 4 - - -from bs4.element import ( - CData, - Comment, - Declaration, - Doctype, - ProcessingInstruction, - ) -from bs4.dammit import EntitySubstitution, UnicodeDammit - -from bs4.builder import ( - HTML, - HTMLTreeBuilder, - STRICT, - ) - - -HTMLPARSER = 'html.parser' - -class BeautifulSoupHTMLParser(HTMLParser): - - def __init__(self, *args, **kwargs): - HTMLParser.__init__(self, *args, **kwargs) - - # Keep a list of empty-element tags that were encountered - # without an explicit closing tag. If we encounter a closing tag - # of this type, we'll associate it with one of those entries. - # - # This isn't a stack because we don't care about the - # order. It's a list of closing tags we've already handled and - # will ignore, assuming they ever show up. - self.already_closed_empty_element = [] - - def handle_startendtag(self, name, attrs): - # This is only called when the markup looks like - # . - - # is_startend() tells handle_starttag not to close the tag - # just because its name matches a known empty-element tag. We - # know that this is an empty-element tag and we want to call - # handle_endtag ourselves. - tag = self.handle_starttag(name, attrs, handle_empty_element=False) - self.handle_endtag(name) - - def handle_starttag(self, name, attrs, handle_empty_element=True): - # XXX namespace - attr_dict = {} - for key, value in attrs: - # Change None attribute values to the empty string - # for consistency with the other tree builders. - if value is None: - value = '' - attr_dict[key] = value - attrvalue = '""' - #print "START", name - tag = self.soup.handle_starttag(name, None, None, attr_dict) - if tag and tag.is_empty_element and handle_empty_element: - # Unlike other parsers, html.parser doesn't send separate end tag - # events for empty-element tags. (It's handled in - # handle_startendtag, but only if the original markup looked like - # .) - # - # So we need to call handle_endtag() ourselves. Since we - # know the start event is identical to the end event, we - # don't want handle_endtag() to cross off any previous end - # events for tags of this name. - self.handle_endtag(name, check_already_closed=False) - - # But we might encounter an explicit closing tag for this tag - # later on. If so, we want to ignore it. - self.already_closed_empty_element.append(name) - - def handle_endtag(self, name, check_already_closed=True): - #print "END", name - if check_already_closed and name in self.already_closed_empty_element: - # This is a redundant end tag for an empty-element tag. - # We've already called handle_endtag() for it, so just - # check it off the list. - # print "ALREADY CLOSED", name - self.already_closed_empty_element.remove(name) - else: - self.soup.handle_endtag(name) - - def handle_data(self, data): - self.soup.handle_data(data) - - def handle_charref(self, name): - # XXX workaround for a bug in HTMLParser. Remove this once - # it's fixed in all supported versions. - # http://bugs.python.org/issue13633 - if name.startswith('x'): - real_name = int(name.lstrip('x'), 16) - elif name.startswith('X'): - real_name = int(name.lstrip('X'), 16) - else: - real_name = int(name) - - try: - data = chr(real_name) - except (ValueError, OverflowError) as e: - data = "\N{REPLACEMENT CHARACTER}" - - self.handle_data(data) - - def handle_entityref(self, name): - character = EntitySubstitution.HTML_ENTITY_TO_CHARACTER.get(name) - if character is not None: - data = character - else: - data = "&%s;" % name - self.handle_data(data) - - def handle_comment(self, data): - self.soup.endData() - self.soup.handle_data(data) - self.soup.endData(Comment) - - def handle_decl(self, data): - self.soup.endData() - if data.startswith("DOCTYPE "): - data = data[len("DOCTYPE "):] - elif data == 'DOCTYPE': - # i.e. "" - data = '' - self.soup.handle_data(data) - self.soup.endData(Doctype) - - def unknown_decl(self, data): - if data.upper().startswith('CDATA['): - cls = CData - data = data[len('CDATA['):] - else: - cls = Declaration - self.soup.endData() - self.soup.handle_data(data) - self.soup.endData(cls) - - def handle_pi(self, data): - self.soup.endData() - self.soup.handle_data(data) - self.soup.endData(ProcessingInstruction) - - -class HTMLParserTreeBuilder(HTMLTreeBuilder): - - is_xml = False - picklable = True - NAME = HTMLPARSER - features = [NAME, HTML, STRICT] - - def __init__(self, *args, **kwargs): - if CONSTRUCTOR_TAKES_STRICT and not CONSTRUCTOR_STRICT_IS_DEPRECATED: - kwargs['strict'] = False - if CONSTRUCTOR_TAKES_CONVERT_CHARREFS: - kwargs['convert_charrefs'] = False - self.parser_args = (args, kwargs) - - def prepare_markup(self, markup, user_specified_encoding=None, - document_declared_encoding=None, exclude_encodings=None): - """ - :return: A 4-tuple (markup, original encoding, encoding - declared within markup, whether any characters had to be - replaced with REPLACEMENT CHARACTER). - """ - if isinstance(markup, str): - yield (markup, None, None, False) - return - - try_encodings = [user_specified_encoding, document_declared_encoding] - dammit = UnicodeDammit(markup, try_encodings, is_html=True, - exclude_encodings=exclude_encodings) - yield (dammit.markup, dammit.original_encoding, - dammit.declared_html_encoding, - dammit.contains_replacement_characters) - - def feed(self, markup): - args, kwargs = self.parser_args - parser = BeautifulSoupHTMLParser(*args, **kwargs) - parser.soup = self.soup - try: - parser.feed(markup) - except HTMLParseError as e: - warnings.warn(RuntimeWarning( - "Python's built-in HTMLParser cannot parse the given document. This is not a bug in Beautiful Soup. The best solution is to install an external parser (lxml or html5lib), and use Beautiful Soup with that parser. See http://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser for help.")) - raise e - parser.already_closed_empty_element = [] - -# Patch 3.2 versions of HTMLParser earlier than 3.2.3 to use some -# 3.2.3 code. This ensures they don't treat markup like

as a -# string. -# -# XXX This code can be removed once most Python 3 users are on 3.2.3. -if major == 3 and minor == 2 and not CONSTRUCTOR_TAKES_STRICT: - import re - attrfind_tolerant = re.compile( - r'\s*((?<=[\'"\s])[^\s/>][^\s/=>]*)(\s*=+\s*' - r'(\'[^\']*\'|"[^"]*"|(?![\'"])[^>\s]*))?') - HTMLParserTreeBuilder.attrfind_tolerant = attrfind_tolerant - - locatestarttagend = re.compile(r""" - <[a-zA-Z][-.a-zA-Z0-9:_]* # tag name - (?:\s+ # whitespace before attribute name - (?:[a-zA-Z_][-.:a-zA-Z0-9_]* # attribute name - (?:\s*=\s* # value indicator - (?:'[^']*' # LITA-enclosed value - |\"[^\"]*\" # LIT-enclosed value - |[^'\">\s]+ # bare value - ) - )? - ) - )* - \s* # trailing whitespace -""", re.VERBOSE) - BeautifulSoupHTMLParser.locatestarttagend = locatestarttagend - - from html.parser import tagfind, attrfind - - def parse_starttag(self, i): - self.__starttag_text = None - endpos = self.check_for_whole_start_tag(i) - if endpos < 0: - return endpos - rawdata = self.rawdata - self.__starttag_text = rawdata[i:endpos] - - # Now parse the data between i+1 and j into a tag and attrs - attrs = [] - match = tagfind.match(rawdata, i+1) - assert match, 'unexpected call to parse_starttag()' - k = match.end() - self.lasttag = tag = rawdata[i+1:k].lower() - while k < endpos: - if self.strict: - m = attrfind.match(rawdata, k) - else: - m = attrfind_tolerant.match(rawdata, k) - if not m: - break - attrname, rest, attrvalue = m.group(1, 2, 3) - if not rest: - attrvalue = None - elif attrvalue[:1] == '\'' == attrvalue[-1:] or \ - attrvalue[:1] == '"' == attrvalue[-1:]: - attrvalue = attrvalue[1:-1] - if attrvalue: - attrvalue = self.unescape(attrvalue) - attrs.append((attrname.lower(), attrvalue)) - k = m.end() - - end = rawdata[k:endpos].strip() - if end not in (">", "/>"): - lineno, offset = self.getpos() - if "\n" in self.__starttag_text: - lineno = lineno + self.__starttag_text.count("\n") - offset = len(self.__starttag_text) \ - - self.__starttag_text.rfind("\n") - else: - offset = offset + len(self.__starttag_text) - if self.strict: - self.error("junk characters in start tag: %r" - % (rawdata[k:endpos][:20],)) - self.handle_data(rawdata[i:endpos]) - return endpos - if end.endswith('/>'): - # XHTML-style empty tag: - self.handle_startendtag(tag, attrs) - else: - self.handle_starttag(tag, attrs) - if tag in self.CDATA_CONTENT_ELEMENTS: - self.set_cdata_mode(tag) - return endpos - - def set_cdata_mode(self, elem): - self.cdata_elem = elem.lower() - self.interesting = re.compile(r'' % self.cdata_elem, re.I) - - BeautifulSoupHTMLParser.parse_starttag = parse_starttag - BeautifulSoupHTMLParser.set_cdata_mode = set_cdata_mode - - CONSTRUCTOR_TAKES_STRICT = True diff --git a/utils/lib/python3.5/site-packages/bs4/builder/_lxml.py b/utils/lib/python3.5/site-packages/bs4/builder/_lxml.py deleted file mode 100644 index 244d457..0000000 --- a/utils/lib/python3.5/site-packages/bs4/builder/_lxml.py +++ /dev/null @@ -1,258 +0,0 @@ -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. -__all__ = [ - 'LXMLTreeBuilderForXML', - 'LXMLTreeBuilder', - ] - -from io import BytesIO -from io import StringIO -import collections -from lxml import etree -from bs4.element import ( - Comment, - Doctype, - NamespacedAttribute, - ProcessingInstruction, - XMLProcessingInstruction, -) -from bs4.builder import ( - FAST, - HTML, - HTMLTreeBuilder, - PERMISSIVE, - ParserRejectedMarkup, - TreeBuilder, - XML) -from bs4.dammit import EncodingDetector - -LXML = 'lxml' - -class LXMLTreeBuilderForXML(TreeBuilder): - DEFAULT_PARSER_CLASS = etree.XMLParser - - is_xml = True - processing_instruction_class = XMLProcessingInstruction - - NAME = "lxml-xml" - ALTERNATE_NAMES = ["xml"] - - # Well, it's permissive by XML parser standards. - features = [NAME, LXML, XML, FAST, PERMISSIVE] - - CHUNK_SIZE = 512 - - # This namespace mapping is specified in the XML Namespace - # standard. - DEFAULT_NSMAPS = {'http://www.w3.org/XML/1998/namespace' : "xml"} - - def default_parser(self, encoding): - # This can either return a parser object or a class, which - # will be instantiated with default arguments. - if self._default_parser is not None: - return self._default_parser - return etree.XMLParser( - target=self, strip_cdata=False, recover=True, encoding=encoding) - - def parser_for(self, encoding): - # Use the default parser. - parser = self.default_parser(encoding) - - if isinstance(parser, collections.Callable): - # Instantiate the parser with default arguments - parser = parser(target=self, strip_cdata=False, encoding=encoding) - return parser - - def __init__(self, parser=None, empty_element_tags=None): - # TODO: Issue a warning if parser is present but not a - # callable, since that means there's no way to create new - # parsers for different encodings. - self._default_parser = parser - if empty_element_tags is not None: - self.empty_element_tags = set(empty_element_tags) - self.soup = None - self.nsmaps = [self.DEFAULT_NSMAPS] - - def _getNsTag(self, tag): - # Split the namespace URL out of a fully-qualified lxml tag - # name. Copied from lxml's src/lxml/sax.py. - if tag[0] == '{': - return tuple(tag[1:].split('}', 1)) - else: - return (None, tag) - - def prepare_markup(self, markup, user_specified_encoding=None, - exclude_encodings=None, - document_declared_encoding=None): - """ - :yield: A series of 4-tuples. - (markup, encoding, declared encoding, - has undergone character replacement) - - Each 4-tuple represents a strategy for parsing the document. - """ - # Instead of using UnicodeDammit to convert the bytestring to - # Unicode using different encodings, use EncodingDetector to - # iterate over the encodings, and tell lxml to try to parse - # the document as each one in turn. - is_html = not self.is_xml - if is_html: - self.processing_instruction_class = ProcessingInstruction - else: - self.processing_instruction_class = XMLProcessingInstruction - - if isinstance(markup, str): - # We were given Unicode. Maybe lxml can parse Unicode on - # this system? - yield markup, None, document_declared_encoding, False - - if isinstance(markup, str): - # No, apparently not. Convert the Unicode to UTF-8 and - # tell lxml to parse it as UTF-8. - yield (markup.encode("utf8"), "utf8", - document_declared_encoding, False) - - try_encodings = [user_specified_encoding, document_declared_encoding] - detector = EncodingDetector( - markup, try_encodings, is_html, exclude_encodings) - for encoding in detector.encodings: - yield (detector.markup, encoding, document_declared_encoding, False) - - def feed(self, markup): - if isinstance(markup, bytes): - markup = BytesIO(markup) - elif isinstance(markup, str): - markup = StringIO(markup) - - # Call feed() at least once, even if the markup is empty, - # or the parser won't be initialized. - data = markup.read(self.CHUNK_SIZE) - try: - self.parser = self.parser_for(self.soup.original_encoding) - self.parser.feed(data) - while len(data) != 0: - # Now call feed() on the rest of the data, chunk by chunk. - data = markup.read(self.CHUNK_SIZE) - if len(data) != 0: - self.parser.feed(data) - self.parser.close() - except (UnicodeDecodeError, LookupError, etree.ParserError) as e: - raise ParserRejectedMarkup(str(e)) - - def close(self): - self.nsmaps = [self.DEFAULT_NSMAPS] - - def start(self, name, attrs, nsmap={}): - # Make sure attrs is a mutable dict--lxml may send an immutable dictproxy. - attrs = dict(attrs) - nsprefix = None - # Invert each namespace map as it comes in. - if len(self.nsmaps) > 1: - # There are no new namespaces for this tag, but - # non-default namespaces are in play, so we need a - # separate tag stack to know when they end. - self.nsmaps.append(None) - elif len(nsmap) > 0: - # A new namespace mapping has come into play. - inverted_nsmap = dict((value, key) for key, value in list(nsmap.items())) - self.nsmaps.append(inverted_nsmap) - # Also treat the namespace mapping as a set of attributes on the - # tag, so we can recreate it later. - attrs = attrs.copy() - for prefix, namespace in list(nsmap.items()): - attribute = NamespacedAttribute( - "xmlns", prefix, "http://www.w3.org/2000/xmlns/") - attrs[attribute] = namespace - - # Namespaces are in play. Find any attributes that came in - # from lxml with namespaces attached to their names, and - # turn then into NamespacedAttribute objects. - new_attrs = {} - for attr, value in list(attrs.items()): - namespace, attr = self._getNsTag(attr) - if namespace is None: - new_attrs[attr] = value - else: - nsprefix = self._prefix_for_namespace(namespace) - attr = NamespacedAttribute(nsprefix, attr, namespace) - new_attrs[attr] = value - attrs = new_attrs - - namespace, name = self._getNsTag(name) - nsprefix = self._prefix_for_namespace(namespace) - self.soup.handle_starttag(name, namespace, nsprefix, attrs) - - def _prefix_for_namespace(self, namespace): - """Find the currently active prefix for the given namespace.""" - if namespace is None: - return None - for inverted_nsmap in reversed(self.nsmaps): - if inverted_nsmap is not None and namespace in inverted_nsmap: - return inverted_nsmap[namespace] - return None - - def end(self, name): - self.soup.endData() - completed_tag = self.soup.tagStack[-1] - namespace, name = self._getNsTag(name) - nsprefix = None - if namespace is not None: - for inverted_nsmap in reversed(self.nsmaps): - if inverted_nsmap is not None and namespace in inverted_nsmap: - nsprefix = inverted_nsmap[namespace] - break - self.soup.handle_endtag(name, nsprefix) - if len(self.nsmaps) > 1: - # This tag, or one of its parents, introduced a namespace - # mapping, so pop it off the stack. - self.nsmaps.pop() - - def pi(self, target, data): - self.soup.endData() - self.soup.handle_data(target + ' ' + data) - self.soup.endData(self.processing_instruction_class) - - def data(self, content): - self.soup.handle_data(content) - - def doctype(self, name, pubid, system): - self.soup.endData() - doctype = Doctype.for_name_and_ids(name, pubid, system) - self.soup.object_was_parsed(doctype) - - def comment(self, content): - "Handle comments as Comment objects." - self.soup.endData() - self.soup.handle_data(content) - self.soup.endData(Comment) - - def test_fragment_to_document(self, fragment): - """See `TreeBuilder`.""" - return '\n%s' % fragment - - -class LXMLTreeBuilder(HTMLTreeBuilder, LXMLTreeBuilderForXML): - - NAME = LXML - ALTERNATE_NAMES = ["lxml-html"] - - features = ALTERNATE_NAMES + [NAME, HTML, FAST, PERMISSIVE] - is_xml = False - processing_instruction_class = ProcessingInstruction - - def default_parser(self, encoding): - return etree.HTMLParser - - def feed(self, markup): - encoding = self.soup.original_encoding - try: - self.parser = self.parser_for(encoding) - self.parser.feed(markup) - self.parser.close() - except (UnicodeDecodeError, LookupError, etree.ParserError) as e: - raise ParserRejectedMarkup(str(e)) - - - def test_fragment_to_document(self, fragment): - """See `TreeBuilder`.""" - return '%s' % fragment diff --git a/utils/lib/python3.5/site-packages/bs4/dammit.py b/utils/lib/python3.5/site-packages/bs4/dammit.py deleted file mode 100644 index 8e399e0..0000000 --- a/utils/lib/python3.5/site-packages/bs4/dammit.py +++ /dev/null @@ -1,842 +0,0 @@ -# -*- coding: utf-8 -*- -"""Beautiful Soup bonus library: Unicode, Dammit - -This library converts a bytestream to Unicode through any means -necessary. It is heavily based on code from Mark Pilgrim's Universal -Feed Parser. It works best on XML and HTML, but it does not rewrite the -XML or HTML to reflect a new encoding; that's the tree builder's job. -""" -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. -__license__ = "MIT" - -import codecs -from html.entities import codepoint2name -import re -import logging -import string - -# Import a library to autodetect character encodings. -chardet_type = None -try: - # First try the fast C implementation. - # PyPI package: cchardet - import cchardet - def chardet_dammit(s): - return cchardet.detect(s)['encoding'] -except ImportError: - try: - # Fall back to the pure Python implementation - # Debian package: python-chardet - # PyPI package: chardet - import chardet - def chardet_dammit(s): - return chardet.detect(s)['encoding'] - #import chardet.constants - #chardet.constants._debug = 1 - except ImportError: - # No chardet available. - def chardet_dammit(s): - return None - -# Available from http://cjkpython.i18n.org/. -try: - import iconv_codec -except ImportError: - pass - -xml_encoding_re = re.compile( - '^<\?.*encoding=[\'"](.*?)[\'"].*\?>'.encode(), re.I) -html_meta_re = re.compile( - '<\s*meta[^>]+charset\s*=\s*["\']?([^>]*?)[ /;\'">]'.encode(), re.I) - -class EntitySubstitution(object): - - """Substitute XML or HTML entities for the corresponding characters.""" - - def _populate_class_variables(): - lookup = {} - reverse_lookup = {} - characters_for_re = [] - for codepoint, name in list(codepoint2name.items()): - character = chr(codepoint) - if codepoint != 34: - # There's no point in turning the quotation mark into - # ", unless it happens within an attribute value, which - # is handled elsewhere. - characters_for_re.append(character) - lookup[character] = name - # But we do want to turn " into the quotation mark. - reverse_lookup[name] = character - re_definition = "[%s]" % "".join(characters_for_re) - return lookup, reverse_lookup, re.compile(re_definition) - (CHARACTER_TO_HTML_ENTITY, HTML_ENTITY_TO_CHARACTER, - CHARACTER_TO_HTML_ENTITY_RE) = _populate_class_variables() - - CHARACTER_TO_XML_ENTITY = { - "'": "apos", - '"': "quot", - "&": "amp", - "<": "lt", - ">": "gt", - } - - BARE_AMPERSAND_OR_BRACKET = re.compile("([<>]|" - "&(?!#\d+;|#x[0-9a-fA-F]+;|\w+;)" - ")") - - AMPERSAND_OR_BRACKET = re.compile("([<>&])") - - @classmethod - def _substitute_html_entity(cls, matchobj): - entity = cls.CHARACTER_TO_HTML_ENTITY.get(matchobj.group(0)) - return "&%s;" % entity - - @classmethod - def _substitute_xml_entity(cls, matchobj): - """Used with a regular expression to substitute the - appropriate XML entity for an XML special character.""" - entity = cls.CHARACTER_TO_XML_ENTITY[matchobj.group(0)] - return "&%s;" % entity - - @classmethod - def quoted_attribute_value(self, value): - """Make a value into a quoted XML attribute, possibly escaping it. - - Most strings will be quoted using double quotes. - - Bob's Bar -> "Bob's Bar" - - If a string contains double quotes, it will be quoted using - single quotes. - - Welcome to "my bar" -> 'Welcome to "my bar"' - - If a string contains both single and double quotes, the - double quotes will be escaped, and the string will be quoted - using double quotes. - - Welcome to "Bob's Bar" -> "Welcome to "Bob's bar" - """ - quote_with = '"' - if '"' in value: - if "'" in value: - # The string contains both single and double - # quotes. Turn the double quotes into - # entities. We quote the double quotes rather than - # the single quotes because the entity name is - # """ whether this is HTML or XML. If we - # quoted the single quotes, we'd have to decide - # between ' and &squot;. - replace_with = """ - value = value.replace('"', replace_with) - else: - # There are double quotes but no single quotes. - # We can use single quotes to quote the attribute. - quote_with = "'" - return quote_with + value + quote_with - - @classmethod - def substitute_xml(cls, value, make_quoted_attribute=False): - """Substitute XML entities for special XML characters. - - :param value: A string to be substituted. The less-than sign - will become <, the greater-than sign will become >, - and any ampersands will become &. If you want ampersands - that appear to be part of an entity definition to be left - alone, use substitute_xml_containing_entities() instead. - - :param make_quoted_attribute: If True, then the string will be - quoted, as befits an attribute value. - """ - # Escape angle brackets and ampersands. - value = cls.AMPERSAND_OR_BRACKET.sub( - cls._substitute_xml_entity, value) - - if make_quoted_attribute: - value = cls.quoted_attribute_value(value) - return value - - @classmethod - def substitute_xml_containing_entities( - cls, value, make_quoted_attribute=False): - """Substitute XML entities for special XML characters. - - :param value: A string to be substituted. The less-than sign will - become <, the greater-than sign will become >, and any - ampersands that are not part of an entity defition will - become &. - - :param make_quoted_attribute: If True, then the string will be - quoted, as befits an attribute value. - """ - # Escape angle brackets, and ampersands that aren't part of - # entities. - value = cls.BARE_AMPERSAND_OR_BRACKET.sub( - cls._substitute_xml_entity, value) - - if make_quoted_attribute: - value = cls.quoted_attribute_value(value) - return value - - @classmethod - def substitute_html(cls, s): - """Replace certain Unicode characters with named HTML entities. - - This differs from data.encode(encoding, 'xmlcharrefreplace') - in that the goal is to make the result more readable (to those - with ASCII displays) rather than to recover from - errors. There's absolutely nothing wrong with a UTF-8 string - containg a LATIN SMALL LETTER E WITH ACUTE, but replacing that - character with "é" will make it more readable to some - people. - """ - return cls.CHARACTER_TO_HTML_ENTITY_RE.sub( - cls._substitute_html_entity, s) - - -class EncodingDetector: - """Suggests a number of possible encodings for a bytestring. - - Order of precedence: - - 1. Encodings you specifically tell EncodingDetector to try first - (the override_encodings argument to the constructor). - - 2. An encoding declared within the bytestring itself, either in an - XML declaration (if the bytestring is to be interpreted as an XML - document), or in a tag (if the bytestring is to be - interpreted as an HTML document.) - - 3. An encoding detected through textual analysis by chardet, - cchardet, or a similar external library. - - 4. UTF-8. - - 5. Windows-1252. - """ - def __init__(self, markup, override_encodings=None, is_html=False, - exclude_encodings=None): - self.override_encodings = override_encodings or [] - exclude_encodings = exclude_encodings or [] - self.exclude_encodings = set([x.lower() for x in exclude_encodings]) - self.chardet_encoding = None - self.is_html = is_html - self.declared_encoding = None - - # First order of business: strip a byte-order mark. - self.markup, self.sniffed_encoding = self.strip_byte_order_mark(markup) - - def _usable(self, encoding, tried): - if encoding is not None: - encoding = encoding.lower() - if encoding in self.exclude_encodings: - return False - if encoding not in tried: - tried.add(encoding) - return True - return False - - @property - def encodings(self): - """Yield a number of encodings that might work for this markup.""" - tried = set() - for e in self.override_encodings: - if self._usable(e, tried): - yield e - - # Did the document originally start with a byte-order mark - # that indicated its encoding? - if self._usable(self.sniffed_encoding, tried): - yield self.sniffed_encoding - - # Look within the document for an XML or HTML encoding - # declaration. - if self.declared_encoding is None: - self.declared_encoding = self.find_declared_encoding( - self.markup, self.is_html) - if self._usable(self.declared_encoding, tried): - yield self.declared_encoding - - # Use third-party character set detection to guess at the - # encoding. - if self.chardet_encoding is None: - self.chardet_encoding = chardet_dammit(self.markup) - if self._usable(self.chardet_encoding, tried): - yield self.chardet_encoding - - # As a last-ditch effort, try utf-8 and windows-1252. - for e in ('utf-8', 'windows-1252'): - if self._usable(e, tried): - yield e - - @classmethod - def strip_byte_order_mark(cls, data): - """If a byte-order mark is present, strip it and return the encoding it implies.""" - encoding = None - if isinstance(data, str): - # Unicode data cannot have a byte-order mark. - return data, encoding - if (len(data) >= 4) and (data[:2] == b'\xfe\xff') \ - and (data[2:4] != '\x00\x00'): - encoding = 'utf-16be' - data = data[2:] - elif (len(data) >= 4) and (data[:2] == b'\xff\xfe') \ - and (data[2:4] != '\x00\x00'): - encoding = 'utf-16le' - data = data[2:] - elif data[:3] == b'\xef\xbb\xbf': - encoding = 'utf-8' - data = data[3:] - elif data[:4] == b'\x00\x00\xfe\xff': - encoding = 'utf-32be' - data = data[4:] - elif data[:4] == b'\xff\xfe\x00\x00': - encoding = 'utf-32le' - data = data[4:] - return data, encoding - - @classmethod - def find_declared_encoding(cls, markup, is_html=False, search_entire_document=False): - """Given a document, tries to find its declared encoding. - - An XML encoding is declared at the beginning of the document. - - An HTML encoding is declared in a tag, hopefully near the - beginning of the document. - """ - if search_entire_document: - xml_endpos = html_endpos = len(markup) - else: - xml_endpos = 1024 - html_endpos = max(2048, int(len(markup) * 0.05)) - - declared_encoding = None - declared_encoding_match = xml_encoding_re.search(markup, endpos=xml_endpos) - if not declared_encoding_match and is_html: - declared_encoding_match = html_meta_re.search(markup, endpos=html_endpos) - if declared_encoding_match is not None: - declared_encoding = declared_encoding_match.groups()[0].decode( - 'ascii', 'replace') - if declared_encoding: - return declared_encoding.lower() - return None - -class UnicodeDammit: - """A class for detecting the encoding of a *ML document and - converting it to a Unicode string. If the source encoding is - windows-1252, can replace MS smart quotes with their HTML or XML - equivalents.""" - - # This dictionary maps commonly seen values for "charset" in HTML - # meta tags to the corresponding Python codec names. It only covers - # values that aren't in Python's aliases and can't be determined - # by the heuristics in find_codec. - CHARSET_ALIASES = {"macintosh": "mac-roman", - "x-sjis": "shift-jis"} - - ENCODINGS_WITH_SMART_QUOTES = [ - "windows-1252", - "iso-8859-1", - "iso-8859-2", - ] - - def __init__(self, markup, override_encodings=[], - smart_quotes_to=None, is_html=False, exclude_encodings=[]): - self.smart_quotes_to = smart_quotes_to - self.tried_encodings = [] - self.contains_replacement_characters = False - self.is_html = is_html - self.log = logging.getLogger(__name__) - self.detector = EncodingDetector( - markup, override_encodings, is_html, exclude_encodings) - - # Short-circuit if the data is in Unicode to begin with. - if isinstance(markup, str) or markup == '': - self.markup = markup - self.unicode_markup = str(markup) - self.original_encoding = None - return - - # The encoding detector may have stripped a byte-order mark. - # Use the stripped markup from this point on. - self.markup = self.detector.markup - - u = None - for encoding in self.detector.encodings: - markup = self.detector.markup - u = self._convert_from(encoding) - if u is not None: - break - - if not u: - # None of the encodings worked. As an absolute last resort, - # try them again with character replacement. - - for encoding in self.detector.encodings: - if encoding != "ascii": - u = self._convert_from(encoding, "replace") - if u is not None: - self.log.warning( - "Some characters could not be decoded, and were " - "replaced with REPLACEMENT CHARACTER." - ) - self.contains_replacement_characters = True - break - - # If none of that worked, we could at this point force it to - # ASCII, but that would destroy so much data that I think - # giving up is better. - self.unicode_markup = u - if not u: - self.original_encoding = None - - def _sub_ms_char(self, match): - """Changes a MS smart quote character to an XML or HTML - entity, or an ASCII character.""" - orig = match.group(1) - if self.smart_quotes_to == 'ascii': - sub = self.MS_CHARS_TO_ASCII.get(orig).encode() - else: - sub = self.MS_CHARS.get(orig) - if type(sub) == tuple: - if self.smart_quotes_to == 'xml': - sub = '&#x'.encode() + sub[1].encode() + ';'.encode() - else: - sub = '&'.encode() + sub[0].encode() + ';'.encode() - else: - sub = sub.encode() - return sub - - def _convert_from(self, proposed, errors="strict"): - proposed = self.find_codec(proposed) - if not proposed or (proposed, errors) in self.tried_encodings: - return None - self.tried_encodings.append((proposed, errors)) - markup = self.markup - # Convert smart quotes to HTML if coming from an encoding - # that might have them. - if (self.smart_quotes_to is not None - and proposed in self.ENCODINGS_WITH_SMART_QUOTES): - smart_quotes_re = b"([\x80-\x9f])" - smart_quotes_compiled = re.compile(smart_quotes_re) - markup = smart_quotes_compiled.sub(self._sub_ms_char, markup) - - try: - #print "Trying to convert document to %s (errors=%s)" % ( - # proposed, errors) - u = self._to_unicode(markup, proposed, errors) - self.markup = u - self.original_encoding = proposed - except Exception as e: - #print "That didn't work!" - #print e - return None - #print "Correct encoding: %s" % proposed - return self.markup - - def _to_unicode(self, data, encoding, errors="strict"): - '''Given a string and its encoding, decodes the string into Unicode. - %encoding is a string recognized by encodings.aliases''' - return str(data, encoding, errors) - - @property - def declared_html_encoding(self): - if not self.is_html: - return None - return self.detector.declared_encoding - - def find_codec(self, charset): - value = (self._codec(self.CHARSET_ALIASES.get(charset, charset)) - or (charset and self._codec(charset.replace("-", ""))) - or (charset and self._codec(charset.replace("-", "_"))) - or (charset and charset.lower()) - or charset - ) - if value: - return value.lower() - return None - - def _codec(self, charset): - if not charset: - return charset - codec = None - try: - codecs.lookup(charset) - codec = charset - except (LookupError, ValueError): - pass - return codec - - - # A partial mapping of ISO-Latin-1 to HTML entities/XML numeric entities. - MS_CHARS = {b'\x80': ('euro', '20AC'), - b'\x81': ' ', - b'\x82': ('sbquo', '201A'), - b'\x83': ('fnof', '192'), - b'\x84': ('bdquo', '201E'), - b'\x85': ('hellip', '2026'), - b'\x86': ('dagger', '2020'), - b'\x87': ('Dagger', '2021'), - b'\x88': ('circ', '2C6'), - b'\x89': ('permil', '2030'), - b'\x8A': ('Scaron', '160'), - b'\x8B': ('lsaquo', '2039'), - b'\x8C': ('OElig', '152'), - b'\x8D': '?', - b'\x8E': ('#x17D', '17D'), - b'\x8F': '?', - b'\x90': '?', - b'\x91': ('lsquo', '2018'), - b'\x92': ('rsquo', '2019'), - b'\x93': ('ldquo', '201C'), - b'\x94': ('rdquo', '201D'), - b'\x95': ('bull', '2022'), - b'\x96': ('ndash', '2013'), - b'\x97': ('mdash', '2014'), - b'\x98': ('tilde', '2DC'), - b'\x99': ('trade', '2122'), - b'\x9a': ('scaron', '161'), - b'\x9b': ('rsaquo', '203A'), - b'\x9c': ('oelig', '153'), - b'\x9d': '?', - b'\x9e': ('#x17E', '17E'), - b'\x9f': ('Yuml', ''),} - - # A parochial partial mapping of ISO-Latin-1 to ASCII. Contains - # horrors like stripping diacritical marks to turn á into a, but also - # contains non-horrors like turning “ into ". - MS_CHARS_TO_ASCII = { - b'\x80' : 'EUR', - b'\x81' : ' ', - b'\x82' : ',', - b'\x83' : 'f', - b'\x84' : ',,', - b'\x85' : '...', - b'\x86' : '+', - b'\x87' : '++', - b'\x88' : '^', - b'\x89' : '%', - b'\x8a' : 'S', - b'\x8b' : '<', - b'\x8c' : 'OE', - b'\x8d' : '?', - b'\x8e' : 'Z', - b'\x8f' : '?', - b'\x90' : '?', - b'\x91' : "'", - b'\x92' : "'", - b'\x93' : '"', - b'\x94' : '"', - b'\x95' : '*', - b'\x96' : '-', - b'\x97' : '--', - b'\x98' : '~', - b'\x99' : '(TM)', - b'\x9a' : 's', - b'\x9b' : '>', - b'\x9c' : 'oe', - b'\x9d' : '?', - b'\x9e' : 'z', - b'\x9f' : 'Y', - b'\xa0' : ' ', - b'\xa1' : '!', - b'\xa2' : 'c', - b'\xa3' : 'GBP', - b'\xa4' : '$', #This approximation is especially parochial--this is the - #generic currency symbol. - b'\xa5' : 'YEN', - b'\xa6' : '|', - b'\xa7' : 'S', - b'\xa8' : '..', - b'\xa9' : '', - b'\xaa' : '(th)', - b'\xab' : '<<', - b'\xac' : '!', - b'\xad' : ' ', - b'\xae' : '(R)', - b'\xaf' : '-', - b'\xb0' : 'o', - b'\xb1' : '+-', - b'\xb2' : '2', - b'\xb3' : '3', - b'\xb4' : ("'", 'acute'), - b'\xb5' : 'u', - b'\xb6' : 'P', - b'\xb7' : '*', - b'\xb8' : ',', - b'\xb9' : '1', - b'\xba' : '(th)', - b'\xbb' : '>>', - b'\xbc' : '1/4', - b'\xbd' : '1/2', - b'\xbe' : '3/4', - b'\xbf' : '?', - b'\xc0' : 'A', - b'\xc1' : 'A', - b'\xc2' : 'A', - b'\xc3' : 'A', - b'\xc4' : 'A', - b'\xc5' : 'A', - b'\xc6' : 'AE', - b'\xc7' : 'C', - b'\xc8' : 'E', - b'\xc9' : 'E', - b'\xca' : 'E', - b'\xcb' : 'E', - b'\xcc' : 'I', - b'\xcd' : 'I', - b'\xce' : 'I', - b'\xcf' : 'I', - b'\xd0' : 'D', - b'\xd1' : 'N', - b'\xd2' : 'O', - b'\xd3' : 'O', - b'\xd4' : 'O', - b'\xd5' : 'O', - b'\xd6' : 'O', - b'\xd7' : '*', - b'\xd8' : 'O', - b'\xd9' : 'U', - b'\xda' : 'U', - b'\xdb' : 'U', - b'\xdc' : 'U', - b'\xdd' : 'Y', - b'\xde' : 'b', - b'\xdf' : 'B', - b'\xe0' : 'a', - b'\xe1' : 'a', - b'\xe2' : 'a', - b'\xe3' : 'a', - b'\xe4' : 'a', - b'\xe5' : 'a', - b'\xe6' : 'ae', - b'\xe7' : 'c', - b'\xe8' : 'e', - b'\xe9' : 'e', - b'\xea' : 'e', - b'\xeb' : 'e', - b'\xec' : 'i', - b'\xed' : 'i', - b'\xee' : 'i', - b'\xef' : 'i', - b'\xf0' : 'o', - b'\xf1' : 'n', - b'\xf2' : 'o', - b'\xf3' : 'o', - b'\xf4' : 'o', - b'\xf5' : 'o', - b'\xf6' : 'o', - b'\xf7' : '/', - b'\xf8' : 'o', - b'\xf9' : 'u', - b'\xfa' : 'u', - b'\xfb' : 'u', - b'\xfc' : 'u', - b'\xfd' : 'y', - b'\xfe' : 'b', - b'\xff' : 'y', - } - - # A map used when removing rogue Windows-1252/ISO-8859-1 - # characters in otherwise UTF-8 documents. - # - # Note that \x81, \x8d, \x8f, \x90, and \x9d are undefined in - # Windows-1252. - WINDOWS_1252_TO_UTF8 = { - 0x80 : b'\xe2\x82\xac', # € - 0x82 : b'\xe2\x80\x9a', # ‚ - 0x83 : b'\xc6\x92', # ƒ - 0x84 : b'\xe2\x80\x9e', # „ - 0x85 : b'\xe2\x80\xa6', # … - 0x86 : b'\xe2\x80\xa0', # † - 0x87 : b'\xe2\x80\xa1', # ‡ - 0x88 : b'\xcb\x86', # ˆ - 0x89 : b'\xe2\x80\xb0', # ‰ - 0x8a : b'\xc5\xa0', # Š - 0x8b : b'\xe2\x80\xb9', # ‹ - 0x8c : b'\xc5\x92', # Œ - 0x8e : b'\xc5\xbd', # Ž - 0x91 : b'\xe2\x80\x98', # ‘ - 0x92 : b'\xe2\x80\x99', # ’ - 0x93 : b'\xe2\x80\x9c', # “ - 0x94 : b'\xe2\x80\x9d', # ” - 0x95 : b'\xe2\x80\xa2', # • - 0x96 : b'\xe2\x80\x93', # – - 0x97 : b'\xe2\x80\x94', # — - 0x98 : b'\xcb\x9c', # ˜ - 0x99 : b'\xe2\x84\xa2', # ™ - 0x9a : b'\xc5\xa1', # š - 0x9b : b'\xe2\x80\xba', # › - 0x9c : b'\xc5\x93', # œ - 0x9e : b'\xc5\xbe', # ž - 0x9f : b'\xc5\xb8', # Ÿ - 0xa0 : b'\xc2\xa0', #   - 0xa1 : b'\xc2\xa1', # ¡ - 0xa2 : b'\xc2\xa2', # ¢ - 0xa3 : b'\xc2\xa3', # £ - 0xa4 : b'\xc2\xa4', # ¤ - 0xa5 : b'\xc2\xa5', # ¥ - 0xa6 : b'\xc2\xa6', # ¦ - 0xa7 : b'\xc2\xa7', # § - 0xa8 : b'\xc2\xa8', # ¨ - 0xa9 : b'\xc2\xa9', # © - 0xaa : b'\xc2\xaa', # ª - 0xab : b'\xc2\xab', # « - 0xac : b'\xc2\xac', # ¬ - 0xad : b'\xc2\xad', # ­ - 0xae : b'\xc2\xae', # ® - 0xaf : b'\xc2\xaf', # ¯ - 0xb0 : b'\xc2\xb0', # ° - 0xb1 : b'\xc2\xb1', # ± - 0xb2 : b'\xc2\xb2', # ² - 0xb3 : b'\xc2\xb3', # ³ - 0xb4 : b'\xc2\xb4', # ´ - 0xb5 : b'\xc2\xb5', # µ - 0xb6 : b'\xc2\xb6', # ¶ - 0xb7 : b'\xc2\xb7', # · - 0xb8 : b'\xc2\xb8', # ¸ - 0xb9 : b'\xc2\xb9', # ¹ - 0xba : b'\xc2\xba', # º - 0xbb : b'\xc2\xbb', # » - 0xbc : b'\xc2\xbc', # ¼ - 0xbd : b'\xc2\xbd', # ½ - 0xbe : b'\xc2\xbe', # ¾ - 0xbf : b'\xc2\xbf', # ¿ - 0xc0 : b'\xc3\x80', # À - 0xc1 : b'\xc3\x81', # Á - 0xc2 : b'\xc3\x82', #  - 0xc3 : b'\xc3\x83', # à - 0xc4 : b'\xc3\x84', # Ä - 0xc5 : b'\xc3\x85', # Å - 0xc6 : b'\xc3\x86', # Æ - 0xc7 : b'\xc3\x87', # Ç - 0xc8 : b'\xc3\x88', # È - 0xc9 : b'\xc3\x89', # É - 0xca : b'\xc3\x8a', # Ê - 0xcb : b'\xc3\x8b', # Ë - 0xcc : b'\xc3\x8c', # Ì - 0xcd : b'\xc3\x8d', # Í - 0xce : b'\xc3\x8e', # Î - 0xcf : b'\xc3\x8f', # Ï - 0xd0 : b'\xc3\x90', # Ð - 0xd1 : b'\xc3\x91', # Ñ - 0xd2 : b'\xc3\x92', # Ò - 0xd3 : b'\xc3\x93', # Ó - 0xd4 : b'\xc3\x94', # Ô - 0xd5 : b'\xc3\x95', # Õ - 0xd6 : b'\xc3\x96', # Ö - 0xd7 : b'\xc3\x97', # × - 0xd8 : b'\xc3\x98', # Ø - 0xd9 : b'\xc3\x99', # Ù - 0xda : b'\xc3\x9a', # Ú - 0xdb : b'\xc3\x9b', # Û - 0xdc : b'\xc3\x9c', # Ü - 0xdd : b'\xc3\x9d', # Ý - 0xde : b'\xc3\x9e', # Þ - 0xdf : b'\xc3\x9f', # ß - 0xe0 : b'\xc3\xa0', # à - 0xe1 : b'\xa1', # á - 0xe2 : b'\xc3\xa2', # â - 0xe3 : b'\xc3\xa3', # ã - 0xe4 : b'\xc3\xa4', # ä - 0xe5 : b'\xc3\xa5', # å - 0xe6 : b'\xc3\xa6', # æ - 0xe7 : b'\xc3\xa7', # ç - 0xe8 : b'\xc3\xa8', # è - 0xe9 : b'\xc3\xa9', # é - 0xea : b'\xc3\xaa', # ê - 0xeb : b'\xc3\xab', # ë - 0xec : b'\xc3\xac', # ì - 0xed : b'\xc3\xad', # í - 0xee : b'\xc3\xae', # î - 0xef : b'\xc3\xaf', # ï - 0xf0 : b'\xc3\xb0', # ð - 0xf1 : b'\xc3\xb1', # ñ - 0xf2 : b'\xc3\xb2', # ò - 0xf3 : b'\xc3\xb3', # ó - 0xf4 : b'\xc3\xb4', # ô - 0xf5 : b'\xc3\xb5', # õ - 0xf6 : b'\xc3\xb6', # ö - 0xf7 : b'\xc3\xb7', # ÷ - 0xf8 : b'\xc3\xb8', # ø - 0xf9 : b'\xc3\xb9', # ù - 0xfa : b'\xc3\xba', # ú - 0xfb : b'\xc3\xbb', # û - 0xfc : b'\xc3\xbc', # ü - 0xfd : b'\xc3\xbd', # ý - 0xfe : b'\xc3\xbe', # þ - } - - MULTIBYTE_MARKERS_AND_SIZES = [ - (0xc2, 0xdf, 2), # 2-byte characters start with a byte C2-DF - (0xe0, 0xef, 3), # 3-byte characters start with E0-EF - (0xf0, 0xf4, 4), # 4-byte characters start with F0-F4 - ] - - FIRST_MULTIBYTE_MARKER = MULTIBYTE_MARKERS_AND_SIZES[0][0] - LAST_MULTIBYTE_MARKER = MULTIBYTE_MARKERS_AND_SIZES[-1][1] - - @classmethod - def detwingle(cls, in_bytes, main_encoding="utf8", - embedded_encoding="windows-1252"): - """Fix characters from one encoding embedded in some other encoding. - - Currently the only situation supported is Windows-1252 (or its - subset ISO-8859-1), embedded in UTF-8. - - The input must be a bytestring. If you've already converted - the document to Unicode, you're too late. - - The output is a bytestring in which `embedded_encoding` - characters have been converted to their `main_encoding` - equivalents. - """ - if embedded_encoding.replace('_', '-').lower() not in ( - 'windows-1252', 'windows_1252'): - raise NotImplementedError( - "Windows-1252 and ISO-8859-1 are the only currently supported " - "embedded encodings.") - - if main_encoding.lower() not in ('utf8', 'utf-8'): - raise NotImplementedError( - "UTF-8 is the only currently supported main encoding.") - - byte_chunks = [] - - chunk_start = 0 - pos = 0 - while pos < len(in_bytes): - byte = in_bytes[pos] - if not isinstance(byte, int): - # Python 2.x - byte = ord(byte) - if (byte >= cls.FIRST_MULTIBYTE_MARKER - and byte <= cls.LAST_MULTIBYTE_MARKER): - # This is the start of a UTF-8 multibyte character. Skip - # to the end. - for start, end, size in cls.MULTIBYTE_MARKERS_AND_SIZES: - if byte >= start and byte <= end: - pos += size - break - elif byte >= 0x80 and byte in cls.WINDOWS_1252_TO_UTF8: - # We found a Windows-1252 character! - # Save the string up to this point as a chunk. - byte_chunks.append(in_bytes[chunk_start:pos]) - - # Now translate the Windows-1252 character into UTF-8 - # and add it as another, one-byte chunk. - byte_chunks.append(cls.WINDOWS_1252_TO_UTF8[byte]) - pos += 1 - chunk_start = pos - else: - # Go on to the next character. - pos += 1 - if chunk_start == 0: - # The string is unchanged. - return in_bytes - else: - # Store the final chunk. - byte_chunks.append(in_bytes[chunk_start:]) - return b''.join(byte_chunks) - diff --git a/utils/lib/python3.5/site-packages/bs4/diagnose.py b/utils/lib/python3.5/site-packages/bs4/diagnose.py deleted file mode 100644 index 1254861..0000000 --- a/utils/lib/python3.5/site-packages/bs4/diagnose.py +++ /dev/null @@ -1,219 +0,0 @@ -"""Diagnostic functions, mainly for use when doing tech support.""" - -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. -__license__ = "MIT" - -import cProfile -from io import StringIO -from html.parser import HTMLParser -import bs4 -from bs4 import BeautifulSoup, __version__ -from bs4.builder import builder_registry - -import os -import pstats -import random -import tempfile -import time -import traceback -import sys -import cProfile - -def diagnose(data): - """Diagnostic suite for isolating common problems.""" - print("Diagnostic running on Beautiful Soup %s" % __version__) - print("Python version %s" % sys.version) - - basic_parsers = ["html.parser", "html5lib", "lxml"] - for name in basic_parsers: - for builder in builder_registry.builders: - if name in builder.features: - break - else: - basic_parsers.remove(name) - print(( - "I noticed that %s is not installed. Installing it may help." % - name)) - - if 'lxml' in basic_parsers: - basic_parsers.append(["lxml", "xml"]) - try: - from lxml import etree - print("Found lxml version %s" % ".".join(map(str,etree.LXML_VERSION))) - except ImportError as e: - print ( - "lxml is not installed or couldn't be imported.") - - - if 'html5lib' in basic_parsers: - try: - import html5lib - print("Found html5lib version %s" % html5lib.__version__) - except ImportError as e: - print ( - "html5lib is not installed or couldn't be imported.") - - if hasattr(data, 'read'): - data = data.read() - elif os.path.exists(data): - print('"%s" looks like a filename. Reading data from the file.' % data) - with open(data) as fp: - data = fp.read() - elif data.startswith("http:") or data.startswith("https:"): - print('"%s" looks like a URL. Beautiful Soup is not an HTTP client.' % data) - print("You need to use some other library to get the document behind the URL, and feed that document to Beautiful Soup.") - return - print() - - for parser in basic_parsers: - print("Trying to parse your markup with %s" % parser) - success = False - try: - soup = BeautifulSoup(data, parser) - success = True - except Exception as e: - print("%s could not parse the markup." % parser) - traceback.print_exc() - if success: - print("Here's what %s did with the markup:" % parser) - print(soup.prettify()) - - print("-" * 80) - -def lxml_trace(data, html=True, **kwargs): - """Print out the lxml events that occur during parsing. - - This lets you see how lxml parses a document when no Beautiful - Soup code is running. - """ - from lxml import etree - for event, element in etree.iterparse(StringIO(data), html=html, **kwargs): - print(("%s, %4s, %s" % (event, element.tag, element.text))) - -class AnnouncingParser(HTMLParser): - """Announces HTMLParser parse events, without doing anything else.""" - - def _p(self, s): - print(s) - - def handle_starttag(self, name, attrs): - self._p("%s START" % name) - - def handle_endtag(self, name): - self._p("%s END" % name) - - def handle_data(self, data): - self._p("%s DATA" % data) - - def handle_charref(self, name): - self._p("%s CHARREF" % name) - - def handle_entityref(self, name): - self._p("%s ENTITYREF" % name) - - def handle_comment(self, data): - self._p("%s COMMENT" % data) - - def handle_decl(self, data): - self._p("%s DECL" % data) - - def unknown_decl(self, data): - self._p("%s UNKNOWN-DECL" % data) - - def handle_pi(self, data): - self._p("%s PI" % data) - -def htmlparser_trace(data): - """Print out the HTMLParser events that occur during parsing. - - This lets you see how HTMLParser parses a document when no - Beautiful Soup code is running. - """ - parser = AnnouncingParser() - parser.feed(data) - -_vowels = "aeiou" -_consonants = "bcdfghjklmnpqrstvwxyz" - -def rword(length=5): - "Generate a random word-like string." - s = '' - for i in range(length): - if i % 2 == 0: - t = _consonants - else: - t = _vowels - s += random.choice(t) - return s - -def rsentence(length=4): - "Generate a random sentence-like string." - return " ".join(rword(random.randint(4,9)) for i in range(length)) - -def rdoc(num_elements=1000): - """Randomly generate an invalid HTML document.""" - tag_names = ['p', 'div', 'span', 'i', 'b', 'script', 'table'] - elements = [] - for i in range(num_elements): - choice = random.randint(0,3) - if choice == 0: - # New tag. - tag_name = random.choice(tag_names) - elements.append("<%s>" % tag_name) - elif choice == 1: - elements.append(rsentence(random.randint(1,4))) - elif choice == 2: - # Close a tag. - tag_name = random.choice(tag_names) - elements.append("" % tag_name) - return "" + "\n".join(elements) + "" - -def benchmark_parsers(num_elements=100000): - """Very basic head-to-head performance benchmark.""" - print("Comparative parser benchmark on Beautiful Soup %s" % __version__) - data = rdoc(num_elements) - print("Generated a large invalid HTML document (%d bytes)." % len(data)) - - for parser in ["lxml", ["lxml", "html"], "html5lib", "html.parser"]: - success = False - try: - a = time.time() - soup = BeautifulSoup(data, parser) - b = time.time() - success = True - except Exception as e: - print("%s could not parse the markup." % parser) - traceback.print_exc() - if success: - print("BS4+%s parsed the markup in %.2fs." % (parser, b-a)) - - from lxml import etree - a = time.time() - etree.HTML(data) - b = time.time() - print("Raw lxml parsed the markup in %.2fs." % (b-a)) - - import html5lib - parser = html5lib.HTMLParser() - a = time.time() - parser.parse(data) - b = time.time() - print("Raw html5lib parsed the markup in %.2fs." % (b-a)) - -def profile(num_elements=100000, parser="lxml"): - - filehandle = tempfile.NamedTemporaryFile() - filename = filehandle.name - - data = rdoc(num_elements) - vars = dict(bs4=bs4, data=data, parser=parser) - cProfile.runctx('bs4.BeautifulSoup(data, parser)' , vars, vars, filename) - - stats = pstats.Stats(filename) - # stats.strip_dirs() - stats.sort_stats("cumulative") - stats.print_stats('_html5lib|bs4', 50) - -if __name__ == '__main__': - diagnose(sys.stdin.read()) diff --git a/utils/lib/python3.5/site-packages/bs4/element.py b/utils/lib/python3.5/site-packages/bs4/element.py deleted file mode 100644 index a4a750d..0000000 --- a/utils/lib/python3.5/site-packages/bs4/element.py +++ /dev/null @@ -1,1808 +0,0 @@ -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. -__license__ = "MIT" - -import collections -import re -import shlex -import sys -import warnings -from bs4.dammit import EntitySubstitution - -DEFAULT_OUTPUT_ENCODING = "utf-8" -PY3K = (sys.version_info[0] > 2) - -whitespace_re = re.compile("\s+") - -def _alias(attr): - """Alias one attribute name to another for backward compatibility""" - @property - def alias(self): - return getattr(self, attr) - - @alias.setter - def alias(self): - return setattr(self, attr) - return alias - - -class NamespacedAttribute(str): - - def __new__(cls, prefix, name, namespace=None): - if name is None: - obj = str.__new__(cls, prefix) - elif prefix is None: - # Not really namespaced. - obj = str.__new__(cls, name) - else: - obj = str.__new__(cls, prefix + ":" + name) - obj.prefix = prefix - obj.name = name - obj.namespace = namespace - return obj - -class AttributeValueWithCharsetSubstitution(str): - """A stand-in object for a character encoding specified in HTML.""" - -class CharsetMetaAttributeValue(AttributeValueWithCharsetSubstitution): - """A generic stand-in for the value of a meta tag's 'charset' attribute. - - When Beautiful Soup parses the markup '', the - value of the 'charset' attribute will be one of these objects. - """ - - def __new__(cls, original_value): - obj = str.__new__(cls, original_value) - obj.original_value = original_value - return obj - - def encode(self, encoding): - return encoding - - -class ContentMetaAttributeValue(AttributeValueWithCharsetSubstitution): - """A generic stand-in for the value of a meta tag's 'content' attribute. - - When Beautiful Soup parses the markup: - - - The value of the 'content' attribute will be one of these objects. - """ - - CHARSET_RE = re.compile("((^|;)\s*charset=)([^;]*)", re.M) - - def __new__(cls, original_value): - match = cls.CHARSET_RE.search(original_value) - if match is None: - # No substitution necessary. - return str.__new__(str, original_value) - - obj = str.__new__(cls, original_value) - obj.original_value = original_value - return obj - - def encode(self, encoding): - def rewrite(match): - return match.group(1) + encoding - return self.CHARSET_RE.sub(rewrite, self.original_value) - -class HTMLAwareEntitySubstitution(EntitySubstitution): - - """Entity substitution rules that are aware of some HTML quirks. - - Specifically, the contents of - -Hello, world! - - -''' - soup = self.soup(html) - self.assertEqual("text/javascript", soup.find('script')['type']) - - def test_comment(self): - # Comments are represented as Comment objects. - markup = "

foobaz

" - self.assertSoupEquals(markup) - - soup = self.soup(markup) - comment = soup.find(text="foobar") - self.assertEqual(comment.__class__, Comment) - - # The comment is properly integrated into the tree. - foo = soup.find(text="foo") - self.assertEqual(comment, foo.next_element) - baz = soup.find(text="baz") - self.assertEqual(comment, baz.previous_element) - - def test_preserved_whitespace_in_pre_and_textarea(self): - """Whitespace must be preserved in
 and "
-        self.assertSoupEquals(pre_markup)
-        self.assertSoupEquals(textarea_markup)
-
-        soup = self.soup(pre_markup)
-        self.assertEqual(soup.pre.prettify(), pre_markup)
-
-        soup = self.soup(textarea_markup)
-        self.assertEqual(soup.textarea.prettify(), textarea_markup)
-
-        soup = self.soup("")
-        self.assertEqual(soup.textarea.prettify(), "")
-
-    def test_nested_inline_elements(self):
-        """Inline elements can be nested indefinitely."""
-        b_tag = "Inside a B tag"
-        self.assertSoupEquals(b_tag)
-
-        nested_b_tag = "

A nested tag

" - self.assertSoupEquals(nested_b_tag) - - double_nested_b_tag = "

A doubly nested tag

" - self.assertSoupEquals(nested_b_tag) - - def test_nested_block_level_elements(self): - """Block elements can be nested.""" - soup = self.soup('

Foo

') - blockquote = soup.blockquote - self.assertEqual(blockquote.p.b.string, 'Foo') - self.assertEqual(blockquote.b.string, 'Foo') - - def test_correctly_nested_tables(self): - """One table can go inside another one.""" - markup = ('' - '' - "') - - self.assertSoupEquals( - markup, - '
Here's another table:" - '' - '' - '
foo
Here\'s another table:' - '
foo
' - '
') - - self.assertSoupEquals( - "" - "" - "
Foo
Bar
Baz
") - - def test_deeply_nested_multivalued_attribute(self): - # html5lib can set the attributes of the same tag many times - # as it rearranges the tree. This has caused problems with - # multivalued attributes. - markup = '
' - soup = self.soup(markup) - self.assertEqual(["css"], soup.div.div['class']) - - def test_multivalued_attribute_on_html(self): - # html5lib uses a different API to set the attributes ot the - # tag. This has caused problems with multivalued - # attributes. - markup = '' - soup = self.soup(markup) - self.assertEqual(["a", "b"], soup.html['class']) - - def test_angle_brackets_in_attribute_values_are_escaped(self): - self.assertSoupEquals('', '') - - def test_entities_in_attributes_converted_to_unicode(self): - expect = '

' - self.assertSoupEquals('

', expect) - self.assertSoupEquals('

', expect) - self.assertSoupEquals('

', expect) - self.assertSoupEquals('

', expect) - - def test_entities_in_text_converted_to_unicode(self): - expect = '

pi\N{LATIN SMALL LETTER N WITH TILDE}ata

' - self.assertSoupEquals("

piñata

", expect) - self.assertSoupEquals("

piñata

", expect) - self.assertSoupEquals("

piñata

", expect) - self.assertSoupEquals("

piñata

", expect) - - def test_quot_entity_converted_to_quotation_mark(self): - self.assertSoupEquals("

I said "good day!"

", - '

I said "good day!"

') - - def test_out_of_range_entity(self): - expect = "\N{REPLACEMENT CHARACTER}" - self.assertSoupEquals("�", expect) - self.assertSoupEquals("�", expect) - self.assertSoupEquals("�", expect) - - def test_multipart_strings(self): - "Mostly to prevent a recurrence of a bug in the html5lib treebuilder." - soup = self.soup("

\nfoo

") - self.assertEqual("p", soup.h2.string.next_element.name) - self.assertEqual("p", soup.p.name) - self.assertConnectedness(soup) - - def test_empty_element_tags(self): - """Verify consistent handling of empty-element tags, - no matter how they come in through the markup. - """ - self.assertSoupEquals('


', "


") - self.assertSoupEquals('


', "


") - - def test_head_tag_between_head_and_body(self): - "Prevent recurrence of a bug in the html5lib treebuilder." - content = """ - - foo - -""" - soup = self.soup(content) - self.assertNotEqual(None, soup.html.body) - self.assertConnectedness(soup) - - def test_multiple_copies_of_a_tag(self): - "Prevent recurrence of a bug in the html5lib treebuilder." - content = """ - - - - - -""" - soup = self.soup(content) - self.assertConnectedness(soup.article) - - def test_basic_namespaces(self): - """Parsers don't need to *understand* namespaces, but at the - very least they should not choke on namespaces or lose - data.""" - - markup = b'4' - soup = self.soup(markup) - self.assertEqual(markup, soup.encode()) - html = soup.html - self.assertEqual('http://www.w3.org/1999/xhtml', soup.html['xmlns']) - self.assertEqual( - 'http://www.w3.org/1998/Math/MathML', soup.html['xmlns:mathml']) - self.assertEqual( - 'http://www.w3.org/2000/svg', soup.html['xmlns:svg']) - - def test_multivalued_attribute_value_becomes_list(self): - markup = b'' - soup = self.soup(markup) - self.assertEqual(['foo', 'bar'], soup.a['class']) - - # - # Generally speaking, tests below this point are more tests of - # Beautiful Soup than tests of the tree builders. But parsers are - # weird, so we run these tests separately for every tree builder - # to detect any differences between them. - # - - def test_can_parse_unicode_document(self): - # A seemingly innocuous document... but it's in Unicode! And - # it contains characters that can't be represented in the - # encoding found in the declaration! The horror! - markup = 'Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!' - soup = self.soup(markup) - self.assertEqual('Sacr\xe9 bleu!', soup.body.string) - - def test_soupstrainer(self): - """Parsers should be able to work with SoupStrainers.""" - strainer = SoupStrainer("b") - soup = self.soup("A bold statement", - parse_only=strainer) - self.assertEqual(soup.decode(), "bold") - - def test_single_quote_attribute_values_become_double_quotes(self): - self.assertSoupEquals("", - '') - - def test_attribute_values_with_nested_quotes_are_left_alone(self): - text = """a""" - self.assertSoupEquals(text) - - def test_attribute_values_with_double_nested_quotes_get_quoted(self): - text = """a""" - soup = self.soup(text) - soup.foo['attr'] = 'Brawls happen at "Bob\'s Bar"' - self.assertSoupEquals( - soup.foo.decode(), - """a""") - - def test_ampersand_in_attribute_value_gets_escaped(self): - self.assertSoupEquals('', - '') - - self.assertSoupEquals( - 'foo', - 'foo') - - def test_escaped_ampersand_in_attribute_value_is_left_alone(self): - self.assertSoupEquals('') - - def test_entities_in_strings_converted_during_parsing(self): - # Both XML and HTML entities are converted to Unicode characters - # during parsing. - text = "

<<sacré bleu!>>

" - expected = "

<<sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!>>

" - self.assertSoupEquals(text, expected) - - def test_smart_quotes_converted_on_the_way_in(self): - # Microsoft smart quotes are converted to Unicode characters during - # parsing. - quote = b"

\x91Foo\x92

" - soup = self.soup(quote) - self.assertEqual( - soup.p.string, - "\N{LEFT SINGLE QUOTATION MARK}Foo\N{RIGHT SINGLE QUOTATION MARK}") - - def test_non_breaking_spaces_converted_on_the_way_in(self): - soup = self.soup("  ") - self.assertEqual(soup.a.string, "\N{NO-BREAK SPACE}" * 2) - - def test_entities_converted_on_the_way_out(self): - text = "

<<sacré bleu!>>

" - expected = "

<<sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!>>

".encode("utf-8") - soup = self.soup(text) - self.assertEqual(soup.p.encode("utf-8"), expected) - - def test_real_iso_latin_document(self): - # Smoke test of interrelated functionality, using an - # easy-to-understand document. - - # Here it is in Unicode. Note that it claims to be in ISO-Latin-1. - unicode_html = '

Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!

' - - # That's because we're going to encode it into ISO-Latin-1, and use - # that to test. - iso_latin_html = unicode_html.encode("iso-8859-1") - - # Parse the ISO-Latin-1 HTML. - soup = self.soup(iso_latin_html) - # Encode it to UTF-8. - result = soup.encode("utf-8") - - # What do we expect the result to look like? Well, it would - # look like unicode_html, except that the META tag would say - # UTF-8 instead of ISO-Latin-1. - expected = unicode_html.replace("ISO-Latin-1", "utf-8") - - # And, of course, it would be in UTF-8, not Unicode. - expected = expected.encode("utf-8") - - # Ta-da! - self.assertEqual(result, expected) - - def test_real_shift_jis_document(self): - # Smoke test to make sure the parser can handle a document in - # Shift-JIS encoding, without choking. - shift_jis_html = ( - b'
'
-            b'\x82\xb1\x82\xea\x82\xcdShift-JIS\x82\xc5\x83R\x81[\x83f'
-            b'\x83B\x83\x93\x83O\x82\xb3\x82\xea\x82\xbd\x93\xfa\x96{\x8c'
-            b'\xea\x82\xcc\x83t\x83@\x83C\x83\x8b\x82\xc5\x82\xb7\x81B'
-            b'
') - unicode_html = shift_jis_html.decode("shift-jis") - soup = self.soup(unicode_html) - - # Make sure the parse tree is correctly encoded to various - # encodings. - self.assertEqual(soup.encode("utf-8"), unicode_html.encode("utf-8")) - self.assertEqual(soup.encode("euc_jp"), unicode_html.encode("euc_jp")) - - def test_real_hebrew_document(self): - # A real-world test to make sure we can convert ISO-8859-9 (a - # Hebrew encoding) to UTF-8. - hebrew_document = b'Hebrew (ISO 8859-8) in Visual Directionality

Hebrew (ISO 8859-8) in Visual Directionality

\xed\xe5\xec\xf9' - soup = self.soup( - hebrew_document, from_encoding="iso8859-8") - # Some tree builders call it iso8859-8, others call it iso-8859-9. - # That's not a difference we really care about. - assert soup.original_encoding in ('iso8859-8', 'iso-8859-8') - self.assertEqual( - soup.encode('utf-8'), - hebrew_document.decode("iso8859-8").encode("utf-8")) - - def test_meta_tag_reflects_current_encoding(self): - # Here's the tag saying that a document is - # encoded in Shift-JIS. - meta_tag = ('') - - # Here's a document incorporating that meta tag. - shift_jis_html = ( - '\n%s\n' - '' - 'Shift-JIS markup goes here.') % meta_tag - soup = self.soup(shift_jis_html) - - # Parse the document, and the charset is seemingly unaffected. - parsed_meta = soup.find('meta', {'http-equiv': 'Content-type'}) - content = parsed_meta['content'] - self.assertEqual('text/html; charset=x-sjis', content) - - # But that value is actually a ContentMetaAttributeValue object. - self.assertTrue(isinstance(content, ContentMetaAttributeValue)) - - # And it will take on a value that reflects its current - # encoding. - self.assertEqual('text/html; charset=utf8', content.encode("utf8")) - - # For the rest of the story, see TestSubstitutions in - # test_tree.py. - - def test_html5_style_meta_tag_reflects_current_encoding(self): - # Here's the tag saying that a document is - # encoded in Shift-JIS. - meta_tag = ('') - - # Here's a document incorporating that meta tag. - shift_jis_html = ( - '\n%s\n' - '' - 'Shift-JIS markup goes here.') % meta_tag - soup = self.soup(shift_jis_html) - - # Parse the document, and the charset is seemingly unaffected. - parsed_meta = soup.find('meta', id="encoding") - charset = parsed_meta['charset'] - self.assertEqual('x-sjis', charset) - - # But that value is actually a CharsetMetaAttributeValue object. - self.assertTrue(isinstance(charset, CharsetMetaAttributeValue)) - - # And it will take on a value that reflects its current - # encoding. - self.assertEqual('utf8', charset.encode("utf8")) - - def test_tag_with_no_attributes_can_have_attributes_added(self): - data = self.soup("text") - data.a['foo'] = 'bar' - self.assertEqual('text', data.a.decode()) - -class XMLTreeBuilderSmokeTest(object): - - def test_pickle_and_unpickle_identity(self): - # Pickling a tree, then unpickling it, yields a tree identical - # to the original. - tree = self.soup("foo") - dumped = pickle.dumps(tree, 2) - loaded = pickle.loads(dumped) - self.assertEqual(loaded.__class__, BeautifulSoup) - self.assertEqual(loaded.decode(), tree.decode()) - - def test_docstring_generated(self): - soup = self.soup("") - self.assertEqual( - soup.encode(), b'\n') - - def test_xml_declaration(self): - markup = b"""\n""" - soup = self.soup(markup) - self.assertEqual(markup, soup.encode("utf8")) - - def test_processing_instruction(self): - markup = b"""\n""" - soup = self.soup(markup) - self.assertEqual(markup, soup.encode("utf8")) - - def test_real_xhtml_document(self): - """A real XHTML document should come out *exactly* the same as it went in.""" - markup = b""" - - -Hello. -Goodbye. -""" - soup = self.soup(markup) - self.assertEqual( - soup.encode("utf-8"), markup) - - def test_formatter_processes_script_tag_for_xml_documents(self): - doc = """ - -""" - soup = BeautifulSoup(doc, "lxml-xml") - # lxml would have stripped this while parsing, but we can add - # it later. - soup.script.string = 'console.log("< < hey > > ");' - encoded = soup.encode() - self.assertTrue(b"< < hey > >" in encoded) - - def test_can_parse_unicode_document(self): - markup = 'Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!' - soup = self.soup(markup) - self.assertEqual('Sacr\xe9 bleu!', soup.root.string) - - def test_popping_namespaced_tag(self): - markup = 'b2012-07-02T20:33:42Zcd' - soup = self.soup(markup) - self.assertEqual( - str(soup.rss), markup) - - def test_docstring_includes_correct_encoding(self): - soup = self.soup("") - self.assertEqual( - soup.encode("latin1"), - b'\n') - - def test_large_xml_document(self): - """A large XML document should come out the same as it went in.""" - markup = (b'\n' - + b'0' * (2**12) - + b'') - soup = self.soup(markup) - self.assertEqual(soup.encode("utf-8"), markup) - - - def test_tags_are_empty_element_if_and_only_if_they_are_empty(self): - self.assertSoupEquals("

", "

") - self.assertSoupEquals("

foo

") - - def test_namespaces_are_preserved(self): - markup = 'This tag is in the a namespaceThis tag is in the b namespace' - soup = self.soup(markup) - root = soup.root - self.assertEqual("http://example.com/", root['xmlns:a']) - self.assertEqual("http://example.net/", root['xmlns:b']) - - def test_closing_namespaced_tag(self): - markup = '

20010504

' - soup = self.soup(markup) - self.assertEqual(str(soup.p), markup) - - def test_namespaced_attributes(self): - markup = '' - soup = self.soup(markup) - self.assertEqual(str(soup.foo), markup) - - def test_namespaced_attributes_xml_namespace(self): - markup = 'bar' - soup = self.soup(markup) - self.assertEqual(str(soup.foo), markup) - - def test_find_by_prefixed_name(self): - doc = """ -foo - bar - baz - -""" - soup = self.soup(doc) - - # There are three tags. - self.assertEqual(3, len(soup.find_all('tag'))) - - # But two of them are ns1:tag and one of them is ns2:tag. - self.assertEqual(2, len(soup.find_all('ns1:tag'))) - self.assertEqual(1, len(soup.find_all('ns2:tag'))) - - self.assertEqual(1, len(soup.find_all('ns2:tag', key='value'))) - self.assertEqual(3, len(soup.find_all(['ns1:tag', 'ns2:tag']))) - - def test_copy_tag_preserves_namespace(self): - xml = """ -""" - - soup = self.soup(xml) - tag = soup.document - duplicate = copy.copy(tag) - - # The two tags have the same namespace prefix. - self.assertEqual(tag.prefix, duplicate.prefix) - - -class HTML5TreeBuilderSmokeTest(HTMLTreeBuilderSmokeTest): - """Smoke test for a tree builder that supports HTML5.""" - - def test_real_xhtml_document(self): - # Since XHTML is not HTML5, HTML5 parsers are not tested to handle - # XHTML documents in any particular way. - pass - - def test_html_tags_have_namespace(self): - markup = "" - soup = self.soup(markup) - self.assertEqual("http://www.w3.org/1999/xhtml", soup.a.namespace) - - def test_svg_tags_have_namespace(self): - markup = '' - soup = self.soup(markup) - namespace = "http://www.w3.org/2000/svg" - self.assertEqual(namespace, soup.svg.namespace) - self.assertEqual(namespace, soup.circle.namespace) - - - def test_mathml_tags_have_namespace(self): - markup = '5' - soup = self.soup(markup) - namespace = 'http://www.w3.org/1998/Math/MathML' - self.assertEqual(namespace, soup.math.namespace) - self.assertEqual(namespace, soup.msqrt.namespace) - - def test_xml_declaration_becomes_comment(self): - markup = '' - soup = self.soup(markup) - self.assertTrue(isinstance(soup.contents[0], Comment)) - self.assertEqual(soup.contents[0], '?xml version="1.0" encoding="utf-8"?') - self.assertEqual("html", soup.contents[0].next_element.name) - -def skipIf(condition, reason): - def nothing(test, *args, **kwargs): - return None - - def decorator(test_item): - if condition: - return nothing - else: - return test_item - - return decorator diff --git a/utils/lib/python3.5/site-packages/bs4/tests/__init__.py b/utils/lib/python3.5/site-packages/bs4/tests/__init__.py deleted file mode 100644 index 142c8cc..0000000 --- a/utils/lib/python3.5/site-packages/bs4/tests/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"The beautifulsoup tests." diff --git a/utils/lib/python3.5/site-packages/bs4/tests/__pycache__/__init__.cpython-35.pyc b/utils/lib/python3.5/site-packages/bs4/tests/__pycache__/__init__.cpython-35.pyc deleted file mode 100644 index 57552c137bb97b16a1103d46de315da3b467728f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmWgV<>gABRS+r7z`*brh~a<{$Z`PUVlE(&!oUy(BpDfkHJPd;LNZbnl2Q{(OES|+ zbBgmz3lvIHi%W|2{4^PFvB$@!1(E&^#Wu{$LPhYRcld%p9X%ko^i z-Q54%= zuqLd!7&e5}5W@vwEeLsZk%w2gyD6+DhGW#C_%t{#Ow|%knnM3UNGaVqJ$@WW@#tuS zCpCCdTUc!|ToTq&I(2z!>ObG9^MHx z9wf^%kNdQ({8K^WCa&lXgn|iS7f3dkWsst-K>)yJu$Noqc2&S0z@DC?(GUQT+I0eO zx3ie6(f;FmLB3_eX>yZffmFQd1qDbJ%jw>QI1*D`AA5D+IAnuE+JYs4#G_26mxR%bY3;o6P zZ0MbiXz&PEK=FDvF$Yc*C+0ys^sVMd>7f@z-ZPaLpAG$_23mOiIB8J#HQ(!X7LpcO z$A0i|XLqN&mn=FF7!dC~9Xo!~DA-Z+!|=&?q#Mvx*GZ8284d2=yOqz^H9Q7C%t-lz zuY`ufivQf(j)$Y|kvH08)@?p}cH|xII|tjnoRtw+d3C!NUEPj}&@Am)if)aLk`?N= z`{A(X1y1aR!3JIsy#XO)O|Hv&g(bE4e)9GyMA({LWXi4v)?&N<6%Df5hts%AaSR)$ zMx8PltbvZymciciB<_QWm9h38DLEFpYjR^yD>r+^HvG6<#&XSj#{{q$^1f*DdQr|bjEprZt24c_9z zEf~oZQ_^&@NZzqE;#fEbV0HmU`IP`(Wq<=`s9YOfryYItKHe0OF*4$2lwAddSLNiL zx$sUcQou@4w2h02Yoh^J5sI=PB;=nr#ph6-gDHXz!ss!wSNR?Rb)Q%&<)`53Zyr7( z>q}X>^mCR{c=Bdx=OI1LeeHt)djgCN?lx4#Lf7+&|dN`a0F5@!ZjY z7wkvLQs0UD2X=n1Y5!I$jXe(?FH%v`{KWCcYDeo(cPdQVL_VKo?vEJQUOA2+Is^!F z<9-}!+YMD@r;Mch64A~?WxcvmdDCpk$&I-%ztWQ3P9tg9Hkrh>lcsGCLwD>`yJg!H zL9?E^jg9neTc5+*^?4E(NxVgZLS#vhL+S;HH*xWPTe4PZEwvU~ZGPUz^WsCe-NY4r z0r7vyo~Ss!ge{O#Tf%K~8^y_zaF@B=6z+;}&u|;H2`Z5_Ze#FS&|*DlO{Ltey*%ZX z%7T2vM&F0UH;{(+RiL!vPbXN?jrmN$4SYTpO$jNH{a@yDycNb1%U<9pr7guy00xwNH2(I*kWAr&V!+>KD?mav*#OD=`KZZCo z#S4z}5>a9p%o^m$R_TtxY`0pO;~-)n zqZ@rcnxRQ@wwJ9x0M&CB{2lF{LX(hda=o%5C*PgY`LsC&1cVa7z_{In;3&I?3j8RYtCe=+`H@9&Stf|%s#HU_ym?zso6nT z=-bDN5oI_bTjnKm^5ZFOzh!P-&`s&x#agM}MG-eo`%K9h?J0ewjL88&&VCoGCPvTE z--v>K55r~=c=r@7a&seDKPh6Ijey%%$_=nchRLeDBqzW4HcY;8wbR*g<&{uEvMxBn zR4`K{^iMK4Ca(|2RfZ$0GX{?5NA~jr6%Z+Ma(ly(uZAj!qk<;{i3uSj^6Rf&2IMu@ zD?lN4q3brT=tGEtI?z1h4dMt>B8wFzCpyM>bj|RD(U}8G8Xb~Grs{h|>&h%`ZkKV| zSHNNzqIyQ!1~B=_kE`eczdYnbBh~i?o^qd)R;hO_%VjxvFc-N0@dX8rn(P;b<+*VD$qhvco`GZED~z3Oj_*))L+J(6*JM{iC#- z?|mm$)`IW!pYX(4Mqe+R@+HFM&L53Oqfo~vG;PQCivaLP>^iHsiOTEv;@3Pc>&AEF z+T=%3-$ z`sXB0YE3@(eNcw8#OA&e1R)2CFz9E_|=IZnx9c z-=nR*P2&3`-XZZr5?nk`-qBY{{FDTpqx1(PDE8{>Bu>=i7MIjNK*uMzm;qc;8?8Eu z>T1ixWwg#{8qrzf*IA8m;KhWFzKo}qfxjlwGs+@bTX~^E22M}iWahLQB`?=>C`=ab z4T*+)f=T}~;R7R`*R94L*1qlFuNErx`PHZGI%!-_j}$j3Iz}51I19)Ys=7-xL$1iC QY|F)pA>S~$Wn6gwzbI(rK>z>% diff --git a/utils/lib/python3.5/site-packages/bs4/tests/__pycache__/test_docs.cpython-35.pyc b/utils/lib/python3.5/site-packages/bs4/tests/__pycache__/test_docs.cpython-35.pyc deleted file mode 100644 index 04a2a37de1f8f7e73137c9463c683d19bbf7005d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 431 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 RHqODdo-?jmrjdut{ug2myITMN diff --git a/utils/lib/python3.5/site-packages/bs4/tests/__pycache__/test_htmlparser.cpython-35.pyc b/utils/lib/python3.5/site-packages/bs4/tests/__pycache__/test_htmlparser.cpython-35.pyc deleted file mode 100644 index 8e822e3f93726d306e8551b32305586f12bbc091..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1969 zcmb_cPj4GV6o0ecU9UF|jtVqLNYx&=Sfci&>d9CY6>1M)Arg?-%V_NxJDbe@VP>|- zR&olTf-ivhN_*whufU1-#*Sr5S}MUh^UHfPZ{EEBr^meu?m-+X{S;NT08eum3P z1ObpDG7ugp289Qy2aNa*s1BqZcjklgp$H%ipa>xiw-N!UE))@@5wI5`1kr_GP*)dZ z05XJIAJQJ_IU7cs7w6Jglh`VerD?QG>_uh~WO88(HL5dhq)x1sGMP8I63DD%DRpM0 zNmf-QVmdRU*Jv{gS=%$xa;vk2oDID;I;)zRUT8mgdH&7U=P3H+R?AsYT}e8@J0H{8 zx9+6_i3MrA`#MNG!)3lh!1$yX2t*I$HV__pc*`L5$uZ#*i$M|i7dqNSK}3%3fp3pdMX>lVpb9n{GEF%|k9;H5@^{b?vVT4w+oB%V zdHvW$@bRlx>-=(+U5w{4Yiz!3l))%H8PCm=F-FxIhn(WS4gaWKw*w)US)(l9W#NdP z_YlC_jNWbf=#8uQyW*oN3@Q2H%tmL(J4bJ!hivcWe58t*o25$`^N5e)u1({JW;Tl@vZozAK9#khli8bPasV;D&)^aOuId z>*re!ZalZsfoqS-_67-*_rV5m-GR#xY?p+Qz*Ce*WUgcV&GP$FB_swOZF^!d$BFUB(d%DgSS1K=8qrJ@Lc#=&g^XamxCgW`Snrdw} zj8dP9wGG_`*#@F1YSRX)%7jVd%;2=J=em(?oSVEfHY*o0?e2=U^{GaNzN;)`(D*bY z4N{~bsgUB$dOLMhvb)c7!?zEMQ#8j=dx1Y-57>Zhp5E*HzJW(?QM5R0Y#K8zgP$R> z&mfLqOaa^RZoClhx+R!xKAp_W&8xfLJEQc*ic2~g5$U_CXf(8kSdtXVZG9hWZApg&CJSR z6`Y)Va?U@RprBc58TlD(d34lM~#B%}1 zYxqi=0eAp5N(P<*J_B4DjSa93*uOTOrocAALzxC{!cGQuvS4T7RsSBCJO{gZ5E7U@ z0cVXAX3%iX&m-Bt<_R0yB-Ds z@5d_pC~U|35m!ahG-BcQ(2*Kb8M)hwo_26lMz3OLI}ZHF6%v)Ent#$fa89x~u ztl=xSQE;R)G6*G-4r7)gwh{qT6ex-!@)B3lG_^Cpvw-X^M(e;QD4M$%_B=%w$$&%{ z?a31tyh*(W*UK2(DK&ov|D&4@uQo8QTU+Nrw6(R=#>~?X{ik;wUztS_qnCi^vwDpQ z0~Zi~Q*yuaJBSKS|NL?}4x;6#7v0g!xwE&o-`nZB+smzS)FtA4f4L>^FH_v4mJXr4 z6z!|B$2;!8kDU?kuG5F$x5`^3Bwzo-n)D9dC+pj%5t~V}oP;_^cYUE3QNu z$3)1Dp9Zck5$iH~uMtkf6i(H=CVn`Gov`Bwx8LOslCu}@*H9~qD1c>He)JCSor~Xj z=NuC9hlJo^8igP#4A&Z%co7lbOH$LK?N%ogR_J@y9v89~_N}lpsv@D~?u9+ilDw-! zd(196_$WMI;N&Pgm$b`rwDYd~Y zvl1KL`Z%_y_8!rb?oLr!$5&!$pzNXx>pLF+`(>I?i1n=r5d&T!A-{jQNjM>AO^8h( zIMP%)#{A7t`5*-zlYs?ngs9xjkWBcTt*eaS?NE5lVS1%yEw2vEl@`hye=o&W+egr> zp0qrU#jlMWz|#QNaw_-66@BD^RFk;g-gd@wp~en^u$7O@M0|nISNe8QilN9?E!Y+pbQZsCtEwJJ0$3yW?2i9w*xIpgA zkeDSww67Ia&T;x~z#T{B9VZCAfluS2<4}%{G+Bojg3Gx`gb^n3zNpd>(|s3N)N zym-0M*r+#0vmZ8IHl9AOi_2t1CGP|lR8<9~yO>0A1z$;nqM0$OX0ecB6*iO6y5U#< zt!JShAL&~}&NcelO%zDZf77?HR;r71zjK=G|JQoRyAM}IjrTX?_^55@)I7(bvz?<} z%ZMAeSA0f-ZZ4>niqA>tK=M{D>n_?y=X!%<5|1a>v>s|l= diff --git a/utils/lib/python3.5/site-packages/bs4/tests/__pycache__/test_soup.cpython-35.pyc b/utils/lib/python3.5/site-packages/bs4/tests/__pycache__/test_soup.cpython-35.pyc deleted file mode 100644 index 8a41e13439c5f1c57f5e3768b36dbe19f9c8ff21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23257 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 diff --git a/utils/lib/python3.5/site-packages/bs4/tests/__pycache__/test_tree.cpython-35.pyc b/utils/lib/python3.5/site-packages/bs4/tests/__pycache__/test_tree.cpython-35.pyc deleted file mode 100644 index c014abd2f4e89aa2ff9cb5329d01ffa1a6b60f94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92942 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 diff --git a/utils/lib/python3.5/site-packages/bs4/tests/test_builder_registry.py b/utils/lib/python3.5/site-packages/bs4/tests/test_builder_registry.py deleted file mode 100644 index 90cad82..0000000 --- a/utils/lib/python3.5/site-packages/bs4/tests/test_builder_registry.py +++ /dev/null @@ -1,147 +0,0 @@ -"""Tests of the builder registry.""" - -import unittest -import warnings - -from bs4 import BeautifulSoup -from bs4.builder import ( - builder_registry as registry, - HTMLParserTreeBuilder, - TreeBuilderRegistry, -) - -try: - from bs4.builder import HTML5TreeBuilder - HTML5LIB_PRESENT = True -except ImportError: - HTML5LIB_PRESENT = False - -try: - from bs4.builder import ( - LXMLTreeBuilderForXML, - LXMLTreeBuilder, - ) - LXML_PRESENT = True -except ImportError: - LXML_PRESENT = False - - -class BuiltInRegistryTest(unittest.TestCase): - """Test the built-in registry with the default builders registered.""" - - def test_combination(self): - if LXML_PRESENT: - self.assertEqual(registry.lookup('fast', 'html'), - LXMLTreeBuilder) - - if LXML_PRESENT: - self.assertEqual(registry.lookup('permissive', 'xml'), - LXMLTreeBuilderForXML) - self.assertEqual(registry.lookup('strict', 'html'), - HTMLParserTreeBuilder) - if HTML5LIB_PRESENT: - self.assertEqual(registry.lookup('html5lib', 'html'), - HTML5TreeBuilder) - - def test_lookup_by_markup_type(self): - if LXML_PRESENT: - self.assertEqual(registry.lookup('html'), LXMLTreeBuilder) - self.assertEqual(registry.lookup('xml'), LXMLTreeBuilderForXML) - else: - self.assertEqual(registry.lookup('xml'), None) - if HTML5LIB_PRESENT: - self.assertEqual(registry.lookup('html'), HTML5TreeBuilder) - else: - self.assertEqual(registry.lookup('html'), HTMLParserTreeBuilder) - - def test_named_library(self): - if LXML_PRESENT: - self.assertEqual(registry.lookup('lxml', 'xml'), - LXMLTreeBuilderForXML) - self.assertEqual(registry.lookup('lxml', 'html'), - LXMLTreeBuilder) - if HTML5LIB_PRESENT: - self.assertEqual(registry.lookup('html5lib'), - HTML5TreeBuilder) - - self.assertEqual(registry.lookup('html.parser'), - HTMLParserTreeBuilder) - - def test_beautifulsoup_constructor_does_lookup(self): - - with warnings.catch_warnings(record=True) as w: - # This will create a warning about not explicitly - # specifying a parser, but we'll ignore it. - - # You can pass in a string. - BeautifulSoup("", features="html") - # Or a list of strings. - BeautifulSoup("", features=["html", "fast"]) - - # You'll get an exception if BS can't find an appropriate - # builder. - self.assertRaises(ValueError, BeautifulSoup, - "", features="no-such-feature") - -class RegistryTest(unittest.TestCase): - """Test the TreeBuilderRegistry class in general.""" - - def setUp(self): - self.registry = TreeBuilderRegistry() - - def builder_for_features(self, *feature_list): - cls = type('Builder_' + '_'.join(feature_list), - (object,), {'features' : feature_list}) - - self.registry.register(cls) - return cls - - def test_register_with_no_features(self): - builder = self.builder_for_features() - - # Since the builder advertises no features, you can't find it - # by looking up features. - self.assertEqual(self.registry.lookup('foo'), None) - - # But you can find it by doing a lookup with no features, if - # this happens to be the only registered builder. - self.assertEqual(self.registry.lookup(), builder) - - def test_register_with_features_makes_lookup_succeed(self): - builder = self.builder_for_features('foo', 'bar') - self.assertEqual(self.registry.lookup('foo'), builder) - self.assertEqual(self.registry.lookup('bar'), builder) - - def test_lookup_fails_when_no_builder_implements_feature(self): - builder = self.builder_for_features('foo', 'bar') - self.assertEqual(self.registry.lookup('baz'), None) - - def test_lookup_gets_most_recent_registration_when_no_feature_specified(self): - builder1 = self.builder_for_features('foo') - builder2 = self.builder_for_features('bar') - self.assertEqual(self.registry.lookup(), builder2) - - def test_lookup_fails_when_no_tree_builders_registered(self): - self.assertEqual(self.registry.lookup(), None) - - def test_lookup_gets_most_recent_builder_supporting_all_features(self): - has_one = self.builder_for_features('foo') - has_the_other = self.builder_for_features('bar') - has_both_early = self.builder_for_features('foo', 'bar', 'baz') - has_both_late = self.builder_for_features('foo', 'bar', 'quux') - lacks_one = self.builder_for_features('bar') - has_the_other = self.builder_for_features('foo') - - # There are two builders featuring 'foo' and 'bar', but - # the one that also features 'quux' was registered later. - self.assertEqual(self.registry.lookup('foo', 'bar'), - has_both_late) - - # There is only one builder featuring 'foo', 'bar', and 'baz'. - self.assertEqual(self.registry.lookup('foo', 'bar', 'baz'), - has_both_early) - - def test_lookup_fails_when_cannot_reconcile_requested_features(self): - builder1 = self.builder_for_features('foo', 'bar') - builder2 = self.builder_for_features('foo', 'baz') - self.assertEqual(self.registry.lookup('bar', 'baz'), None) diff --git a/utils/lib/python3.5/site-packages/bs4/tests/test_docs.py b/utils/lib/python3.5/site-packages/bs4/tests/test_docs.py deleted file mode 100644 index 5b9f677..0000000 --- a/utils/lib/python3.5/site-packages/bs4/tests/test_docs.py +++ /dev/null @@ -1,36 +0,0 @@ -"Test harness for doctests." - -# pylint: disable-msg=E0611,W0142 - -__metaclass__ = type -__all__ = [ - 'additional_tests', - ] - -import atexit -import doctest -import os -#from pkg_resources import ( -# resource_filename, resource_exists, resource_listdir, cleanup_resources) -import unittest - -DOCTEST_FLAGS = ( - doctest.ELLIPSIS | - doctest.NORMALIZE_WHITESPACE | - doctest.REPORT_NDIFF) - - -# def additional_tests(): -# "Run the doc tests (README.txt and docs/*, if any exist)" -# doctest_files = [ -# os.path.abspath(resource_filename('bs4', 'README.txt'))] -# if resource_exists('bs4', 'docs'): -# for name in resource_listdir('bs4', 'docs'): -# if name.endswith('.txt'): -# doctest_files.append( -# os.path.abspath( -# resource_filename('bs4', 'docs/%s' % name))) -# kwargs = dict(module_relative=False, optionflags=DOCTEST_FLAGS) -# atexit.register(cleanup_resources) -# return unittest.TestSuite(( -# doctest.DocFileSuite(*doctest_files, **kwargs))) diff --git a/utils/lib/python3.5/site-packages/bs4/tests/test_html5lib.py b/utils/lib/python3.5/site-packages/bs4/tests/test_html5lib.py deleted file mode 100644 index 81fb7d3..0000000 --- a/utils/lib/python3.5/site-packages/bs4/tests/test_html5lib.py +++ /dev/null @@ -1,130 +0,0 @@ -"""Tests to ensure that the html5lib tree builder generates good trees.""" - -import warnings - -try: - from bs4.builder import HTML5TreeBuilder - HTML5LIB_PRESENT = True -except ImportError as e: - HTML5LIB_PRESENT = False -from bs4.element import SoupStrainer -from bs4.testing import ( - HTML5TreeBuilderSmokeTest, - SoupTest, - skipIf, -) - -@skipIf( - not HTML5LIB_PRESENT, - "html5lib seems not to be present, not testing its tree builder.") -class HTML5LibBuilderSmokeTest(SoupTest, HTML5TreeBuilderSmokeTest): - """See ``HTML5TreeBuilderSmokeTest``.""" - - @property - def default_builder(self): - return HTML5TreeBuilder() - - def test_soupstrainer(self): - # The html5lib tree builder does not support SoupStrainers. - strainer = SoupStrainer("b") - markup = "

A bold statement.

" - with warnings.catch_warnings(record=True) as w: - soup = self.soup(markup, parse_only=strainer) - self.assertEqual( - soup.decode(), self.document_for(markup)) - - self.assertTrue( - "the html5lib tree builder doesn't support parse_only" in - str(w[0].message)) - - def test_correctly_nested_tables(self): - """html5lib inserts tags where other parsers don't.""" - markup = ('' - '' - "') - - self.assertSoupEquals( - markup, - '
Here's another table:" - '' - '' - '
foo
Here\'s another table:' - '
foo
' - '
') - - self.assertSoupEquals( - "" - "" - "
Foo
Bar
Baz
") - - def test_xml_declaration_followed_by_doctype(self): - markup = ''' - - - - - -

foo

- -''' - soup = self.soup(markup) - # Verify that we can reach the

tag; this means the tree is connected. - self.assertEqual(b"

foo

", soup.p.encode()) - - def test_reparented_markup(self): - markup = '

foo

\n

bar

' - soup = self.soup(markup) - self.assertEqual("

foo

\n

bar

", soup.body.decode()) - self.assertEqual(2, len(soup.find_all('p'))) - - - def test_reparented_markup_ends_with_whitespace(self): - markup = '

foo

\n

bar

\n' - soup = self.soup(markup) - self.assertEqual("

foo

\n

bar

\n", soup.body.decode()) - self.assertEqual(2, len(soup.find_all('p'))) - - def test_reparented_markup_containing_identical_whitespace_nodes(self): - """Verify that we keep the two whitespace nodes in this - document distinct when reparenting the adjacent tags. - """ - markup = '
' - soup = self.soup(markup) - space1, space2 = soup.find_all(string=' ') - tbody1, tbody2 = soup.find_all('tbody') - assert space1.next_element is tbody1 - assert tbody2.next_element is space2 - - def test_reparented_markup_containing_children(self): - markup = '' - soup = self.soup(markup) - noscript = soup.noscript - self.assertEqual("target", noscript.next_element) - target = soup.find(string='target') - - # The 'aftermath' string was duplicated; we want the second one. - final_aftermath = soup.find_all(string='aftermath')[-1] - - # The