From 49993410777bd4ddd8d8e2c1f8bfad89917ddb3d Mon Sep 17 00:00:00 2001 From: Corder Guy Date: Fri, 6 Apr 2018 00:58:02 -0500 Subject: [PATCH] Update venv --- .../DESCRIPTION.rst | 0 .../INSTALLER | 0 .../METADATA | 9 +- .../RECORD | 367 +- .../WHEEL | 2 +- .../entry_points.txt | 2 +- .../metadata.json | 2 +- .../top_level.txt | 0 lib/python3.6/site-packages/pip/__init__.py | 25 +- .../pip/__pycache__/__init__.cpython-36.pyc | Bin 8375 -> 8646 bytes .../pip/__pycache__/__main__.cpython-36.pyc | Bin 374 -> 374 bytes .../__pycache__/basecommand.cpython-36.pyc | Bin 7210 -> 7210 bytes .../pip/__pycache__/baseparser.cpython-36.pyc | Bin 9271 -> 9271 bytes .../pip/__pycache__/cmdoptions.cpython-36.pyc | Bin 12929 -> 12929 bytes .../pip/__pycache__/download.cpython-36.pyc | Bin 20310 -> 20279 bytes .../pip/__pycache__/exceptions.cpython-36.pyc | Bin 10483 -> 10483 bytes .../pip/__pycache__/index.cpython-36.pyc | Bin 30233 -> 30233 bytes .../pip/__pycache__/locations.cpython-36.pyc | Bin 3869 -> 3869 bytes .../pip/__pycache__/pep425tags.cpython-36.pyc | Bin 7464 -> 7464 bytes .../__pycache__/status_codes.cpython-36.pyc | Bin 338 -> 338 bytes .../pip/__pycache__/wheel.cpython-36.pyc | Bin 21655 -> 21655 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 2741 -> 2741 bytes .../__pycache__/appdirs.cpython-36.pyc | Bin 18560 -> 18560 bytes .../_vendor/__pycache__/distro.cpython-36.pyc | Bin 32532 -> 32532 bytes .../__pycache__/ipaddress.cpython-36.pyc | Bin 66367 -> 66367 bytes .../__pycache__/ordereddict.cpython-36.pyc | Bin 3565 -> 3565 bytes .../__pycache__/pyparsing.cpython-36.pyc | Bin 201056 -> 201056 bytes .../__pycache__/re-vendor.cpython-36.pyc | Bin 1053 -> 1053 bytes .../__pycache__/retrying.cpython-36.pyc | Bin 8042 -> 8042 bytes .../_vendor/__pycache__/six.cpython-36.pyc | Bin 24431 -> 24431 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 500 -> 500 bytes .../__pycache__/_cmd.cpython-36.pyc | Bin 1509 -> 1509 bytes .../__pycache__/adapter.cpython-36.pyc | Bin 2836 -> 2836 bytes .../__pycache__/cache.cpython-36.pyc | Bin 1711 -> 1711 bytes .../__pycache__/compat.cpython-36.pyc | Bin 567 -> 531 bytes .../__pycache__/controller.cpython-36.pyc | Bin 7711 -> 7711 bytes .../__pycache__/filewrapper.cpython-36.pyc | Bin 2104 -> 2104 bytes .../__pycache__/heuristics.cpython-36.pyc | Bin 4646 -> 4646 bytes .../__pycache__/serialize.cpython-36.pyc | Bin 4423 -> 4423 bytes .../__pycache__/wrapper.cpython-36.pyc | Bin 519 -> 519 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 557 -> 557 bytes .../__pycache__/file_cache.cpython-36.pyc | Bin 2754 -> 2754 bytes .../__pycache__/redis_cache.cpython-36.pyc | Bin 1660 -> 1660 bytes .../pip/_vendor/cachecontrol/compat.py | 4 +- .../pip/_vendor/certifi/__init__.py | 3 + .../pip/_vendor/certifi/__main__.py | 2 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 227 bytes .../__pycache__/__main__.cpython-36.pyc | Bin 0 -> 198 bytes .../certifi/__pycache__/core.cpython-36.pyc | Bin 0 -> 1162 bytes .../pip/_vendor/certifi/cacert.pem | 4433 ++++++++++ .../site-packages/pip/_vendor/certifi/core.py | 37 + .../packages => }/chardet/__init__.py | 31 +- .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 794 bytes .../__pycache__/big5freq.cpython-36.pyc | Bin 0 -> 54681 bytes .../__pycache__/big5prober.cpython-36.pyc | Bin 0 -> 1070 bytes .../chardistribution.cpython-36.pyc | Bin 0 -> 6266 bytes .../charsetgroupprober.cpython-36.pyc | Bin 0 -> 2177 bytes .../__pycache__/charsetprober.cpython-36.pyc | Bin 0 -> 3403 bytes .../codingstatemachine.cpython-36.pyc | Bin 0 -> 2834 bytes .../chardet/__pycache__/compat.cpython-36.pyc | Bin 0 -> 310 bytes .../__pycache__/cp949prober.cpython-36.pyc | Bin 0 -> 1077 bytes .../chardet/__pycache__/enums.cpython-36.pyc | Bin 0 -> 2568 bytes .../__pycache__/escprober.cpython-36.pyc | Bin 0 -> 2559 bytes .../chardet/__pycache__/escsm.cpython-36.pyc | Bin 0 -> 7316 bytes .../__pycache__/eucjpprober.cpython-36.pyc | Bin 0 -> 2363 bytes .../__pycache__/euckrfreq.cpython-36.pyc | Bin 0 -> 24067 bytes .../__pycache__/euckrprober.cpython-36.pyc | Bin 0 -> 1078 bytes .../__pycache__/euctwfreq.cpython-36.pyc | Bin 61179 -> 54690 bytes .../__pycache__/euctwprober.cpython-36.pyc | Bin 0 -> 1078 bytes .../__pycache__/gb2312freq.cpython-36.pyc | Bin 68797 -> 38332 bytes .../__pycache__/gb2312prober.cpython-36.pyc | Bin 0 -> 1086 bytes .../__pycache__/hebrewprober.cpython-36.pyc | Bin 0 -> 2920 bytes .../__pycache__/jisfreq.cpython-36.pyc | Bin 84013 -> 44476 bytes .../chardet/__pycache__/jpcntx.cpython-36.pyc | Bin 0 -> 38615 bytes .../langbulgarianmodel.cpython-36.pyc | Bin 24800 -> 24830 bytes .../langcyrillicmodel.cpython-36.pyc | Bin 30330 -> 30381 bytes .../__pycache__/langgreekmodel.cpython-36.pyc | Bin 24487 -> 24508 bytes .../langhebrewmodel.cpython-36.pyc | Bin 23345 -> 23362 bytes .../langhungarianmodel.cpython-36.pyc | Bin 24785 -> 24804 bytes .../__pycache__/langthaimodel.cpython-36.pyc | Bin 23331 -> 23341 bytes .../langturkishmodel.cpython-36.pyc | Bin 0 -> 23359 bytes .../__pycache__/latin1prober.cpython-36.pyc | Bin 0 -> 2891 bytes .../mbcharsetprober.cpython-36.pyc | Bin 0 -> 2182 bytes .../mbcsgroupprober.cpython-36.pyc | Bin 0 -> 1073 bytes .../chardet/__pycache__/mbcssm.cpython-36.pyc | Bin 0 -> 17526 bytes .../sbcharsetprober.cpython-36.pyc | Bin 0 -> 2935 bytes .../sbcsgroupprober.cpython-36.pyc | Bin 0 -> 1563 bytes .../__pycache__/sjisprober.cpython-36.pyc | Bin 0 -> 2389 bytes .../universaldetector.cpython-36.pyc | Bin 0 -> 5784 bytes .../__pycache__/utf8prober.cpython-36.pyc | Bin 0 -> 1920 bytes .../__pycache__/version.cpython-36.pyc | Bin 0 -> 389 bytes .../pip/_vendor/chardet/big5freq.py | 386 + .../packages => }/chardet/big5prober.py | 15 +- .../packages => }/chardet/chardistribution.py | 148 +- .../pip/_vendor/chardet/charsetgroupprober.py | 106 + .../pip/_vendor/chardet/charsetprober.py | 145 + .../pip/_vendor/chardet/cli/__init__.py | 1 + .../cli/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 146 bytes .../cli/__pycache__/chardetect.cpython-36.pyc | Bin 0 -> 2617 bytes .../chardet => chardet/cli}/chardetect.py | 21 +- .../pip/_vendor/chardet/codingstatemachine.py | 88 + .../{requests/packages => }/chardet/compat.py | 16 +- .../packages => }/chardet/cp949prober.py | 19 +- .../pip/_vendor/chardet/enums.py | 76 + .../pip/_vendor/chardet/escprober.py | 101 + .../pip/_vendor/chardet/escsm.py | 246 + .../pip/_vendor/chardet/eucjpprober.py | 92 + .../pip/_vendor/chardet/euckrfreq.py | 195 + .../packages => }/chardet/euckrprober.py | 15 +- .../packages => }/chardet/euctwfreq.py | 719 +- .../packages => }/chardet/euctwprober.py | 19 +- .../packages => }/chardet/gb2312freq.py | 195 +- .../packages => }/chardet/gb2312prober.py | 19 +- .../packages => }/chardet/hebrewprober.py | 163 +- .../packages => }/chardet/jisfreq.py | 250 +- .../{requests/packages => }/chardet/jpcntx.py | 124 +- .../chardet/langbulgarianmodel.py | 25 +- .../chardet/langcyrillicmodel.py | 82 +- .../packages => }/chardet/langgreekmodel.py | 28 +- .../packages => }/chardet/langhebrewmodel.py | 17 +- .../chardet/langhungarianmodel.py | 24 +- .../packages => }/chardet/langthaimodel.py | 13 +- .../pip/_vendor/chardet/langturkishmodel.py | 193 + .../packages => }/chardet/latin1prober.py | 48 +- .../pip/_vendor/chardet/mbcharsetprober.py | 91 + .../packages => }/chardet/mbcsgroupprober.py | 6 +- .../pip/_vendor/chardet/mbcssm.py | 572 ++ .../pip/_vendor/chardet/sbcharsetprober.py | 132 + .../packages => }/chardet/sbcsgroupprober.py | 30 +- .../pip/_vendor/chardet/sjisprober.py | 92 + .../pip/_vendor/chardet/universaldetector.py | 286 + .../packages => }/chardet/utf8prober.py | 62 +- .../pip/_vendor/chardet/version.py | 9 + .../__pycache__/__init__.cpython-36.pyc | Bin 394 -> 394 bytes .../colorama/__pycache__/ansi.cpython-36.pyc | Bin 3292 -> 3292 bytes .../__pycache__/ansitowin32.cpython-36.pyc | Bin 7024 -> 7024 bytes .../__pycache__/initialise.cpython-36.pyc | Bin 1615 -> 1615 bytes .../colorama/__pycache__/win32.cpython-36.pyc | Bin 3585 -> 3585 bytes .../__pycache__/winterm.cpython-36.pyc | Bin 4517 -> 4517 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 992 -> 992 bytes .../distlib/__pycache__/compat.cpython-36.pyc | Bin 31953 -> 31953 bytes .../__pycache__/database.cpython-36.pyc | Bin 42091 -> 42091 bytes .../distlib/__pycache__/index.cpython-36.pyc | Bin 17325 -> 17325 bytes .../__pycache__/locators.cpython-36.pyc | Bin 38549 -> 38549 bytes .../__pycache__/manifest.cpython-36.pyc | Bin 10311 -> 10311 bytes .../__pycache__/markers.cpython-36.pyc | Bin 5987 -> 5987 bytes .../__pycache__/metadata.cpython-36.pyc | Bin 27030 -> 27030 bytes .../__pycache__/resources.cpython-36.pyc | Bin 10859 -> 10859 bytes .../__pycache__/scripts.cpython-36.pyc | Bin 10026 -> 10026 bytes .../distlib/__pycache__/util.cpython-36.pyc | Bin 44453 -> 44453 bytes .../__pycache__/version.cpython-36.pyc | Bin 20969 -> 20969 bytes .../distlib/__pycache__/wheel.cpython-36.pyc | Bin 24990 -> 24990 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 434 -> 434 bytes .../_backport/__pycache__/misc.cpython-36.pyc | Bin 1040 -> 1040 bytes .../__pycache__/shutil.cpython-36.pyc | Bin 21387 -> 21387 bytes .../__pycache__/sysconfig.cpython-36.pyc | Bin 15988 -> 15988 bytes .../__pycache__/tarfile.cpython-36.pyc | Bin 62998 -> 62998 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 913 -> 913 bytes .../__pycache__/_ihatexml.cpython-36.pyc | Bin 13807 -> 13807 bytes .../__pycache__/_inputstream.cpython-36.pyc | Bin 22661 -> 22661 bytes .../__pycache__/_tokenizer.cpython-36.pyc | Bin 42111 -> 42111 bytes .../__pycache__/_utils.cpython-36.pyc | Bin 3320 -> 3320 bytes .../__pycache__/constants.cpython-36.pyc | Bin 66270 -> 66270 bytes .../__pycache__/html5parser.cpython-36.pyc | Bin 97955 -> 97955 bytes .../__pycache__/serializer.cpython-36.pyc | Bin 9316 -> 9316 bytes .../_trie/__pycache__/__init__.cpython-36.pyc | Bin 376 -> 376 bytes .../_trie/__pycache__/_base.cpython-36.pyc | Bin 1465 -> 1465 bytes .../_trie/__pycache__/datrie.cpython-36.pyc | Bin 1978 -> 1978 bytes .../_trie/__pycache__/py.cpython-36.pyc | Bin 2183 -> 2183 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 151 -> 151 bytes .../alphabeticalattributes.cpython-36.pyc | Bin 1022 -> 1022 bytes .../filters/__pycache__/base.cpython-36.pyc | Bin 801 -> 801 bytes .../inject_meta_charset.cpython-36.pyc | Bin 1652 -> 1652 bytes .../filters/__pycache__/lint.cpython-36.pyc | Bin 2323 -> 2323 bytes .../__pycache__/optionaltags.cpython-36.pyc | Bin 2995 -> 2995 bytes .../__pycache__/sanitizer.cpython-36.pyc | Bin 17990 -> 17990 bytes .../__pycache__/whitespace.cpython-36.pyc | Bin 1227 -> 1227 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 406 -> 406 bytes .../__pycache__/genshi.cpython-36.pyc | Bin 1483 -> 1483 bytes .../__pycache__/sax.cpython-36.pyc | Bin 1337 -> 1337 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 3085 -> 3085 bytes .../__pycache__/base.cpython-36.pyc | Bin 11128 -> 11128 bytes .../__pycache__/dom.cpython-36.pyc | Bin 9224 -> 9224 bytes .../__pycache__/etree.cpython-36.pyc | Bin 11818 -> 11818 bytes .../__pycache__/etree_lxml.cpython-36.pyc | Bin 11770 -> 11770 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 3776 -> 3776 bytes .../__pycache__/base.cpython-36.pyc | Bin 4532 -> 4532 bytes .../__pycache__/dom.cpython-36.pyc | Bin 1673 -> 1673 bytes .../__pycache__/etree.cpython-36.pyc | Bin 3627 -> 3627 bytes .../__pycache__/etree_lxml.cpython-36.pyc | Bin 6608 -> 6608 bytes .../__pycache__/genshi.cpython-36.pyc | Bin 1847 -> 1847 bytes .../pip/_vendor/idna/__init__.py | 2 + .../idna/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 208 bytes .../idna/__pycache__/codec.cpython-36.pyc | Bin 0 -> 3055 bytes .../idna/__pycache__/compat.cpython-36.pyc | Bin 0 -> 568 bytes .../idna/__pycache__/core.cpython-36.pyc | Bin 0 -> 8925 bytes .../idna/__pycache__/idnadata.cpython-36.pyc | Bin 0 -> 24457 bytes .../idna/__pycache__/intranges.cpython-36.pyc | Bin 0 -> 1769 bytes .../__pycache__/package_data.cpython-36.pyc | Bin 0 -> 162 bytes .../idna/__pycache__/uts46data.cpython-36.pyc | Bin 0 -> 225857 bytes .../site-packages/pip/_vendor/idna/codec.py | 118 + .../site-packages/pip/_vendor/idna/compat.py | 12 + .../site-packages/pip/_vendor/idna/core.py | 387 + .../pip/_vendor/idna/idnadata.py | 1585 ++++ .../pip/_vendor/idna/intranges.py | 53 + .../pip/_vendor/idna/package_data.py | 2 + .../pip/_vendor/idna/uts46data.py | 7634 +++++++++++++++++ .../__pycache__/__init__.cpython-36.pyc | Bin 9860 -> 9860 bytes .../__pycache__/linklockfile.cpython-36.pyc | Bin 2239 -> 2239 bytes .../__pycache__/mkdirlockfile.cpython-36.pyc | Bin 2601 -> 2601 bytes .../__pycache__/pidlockfile.cpython-36.pyc | Bin 4801 -> 4801 bytes .../__pycache__/sqlitelockfile.cpython-36.pyc | Bin 3700 -> 3700 bytes .../symlinklockfile.cpython-36.pyc | Bin 2124 -> 2124 bytes .../__pycache__/__about__.cpython-36.pyc | Bin 670 -> 670 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 508 -> 508 bytes .../__pycache__/_compat.cpython-36.pyc | Bin 955 -> 955 bytes .../__pycache__/_structures.cpython-36.pyc | Bin 2812 -> 2812 bytes .../__pycache__/markers.cpython-36.pyc | Bin 8826 -> 8826 bytes .../__pycache__/requirements.cpython-36.pyc | Bin 3813 -> 3813 bytes .../__pycache__/specifiers.cpython-36.pyc | Bin 19774 -> 19774 bytes .../__pycache__/utils.cpython-36.pyc | Bin 439 -> 439 bytes .../__pycache__/version.cpython-36.pyc | Bin 10549 -> 10549 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 95258 -> 95258 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 3796 -> 3796 bytes .../progress/__pycache__/bar.cpython-36.pyc | Bin 2415 -> 2415 bytes .../__pycache__/counter.cpython-36.pyc | Bin 1539 -> 1539 bytes .../__pycache__/helpers.cpython-36.pyc | Bin 2925 -> 2925 bytes .../__pycache__/spinner.cpython-36.pyc | Bin 1181 -> 1181 bytes .../pip/_vendor/requests/__init__.py | 61 +- .../__pycache__/__init__.cpython-36.pyc | Bin 2288 -> 3150 bytes .../__pycache__/__version__.cpython-36.pyc | Bin 0 -> 501 bytes .../_internal_utils.cpython-36.pyc | Bin 0 -> 1259 bytes .../__pycache__/adapters.cpython-36.pyc | Bin 15758 -> 16474 bytes .../requests/__pycache__/api.cpython-36.pyc | Bin 5989 -> 6426 bytes .../requests/__pycache__/auth.cpython-36.pyc | Bin 7103 -> 7787 bytes .../requests/__pycache__/certs.cpython-36.pyc | Bin 775 -> 584 bytes .../__pycache__/compat.cpython-36.pyc | Bin 1361 -> 1481 bytes .../__pycache__/cookies.cpython-36.pyc | Bin 18427 -> 18509 bytes .../__pycache__/exceptions.cpython-36.pyc | Bin 4831 -> 5274 bytes .../requests/__pycache__/help.cpython-36.pyc | Bin 0 -> 2645 bytes .../requests/__pycache__/hooks.cpython-36.pyc | Bin 948 -> 948 bytes .../__pycache__/models.cpython-36.pyc | Bin 21862 -> 23907 bytes .../__pycache__/packages.cpython-36.pyc | Bin 0 -> 476 bytes .../__pycache__/sessions.cpython-36.pyc | Bin 17920 -> 18422 bytes .../__pycache__/status_codes.cpython-36.pyc | Bin 3609 -> 3624 bytes .../__pycache__/structures.cpython-36.pyc | Bin 4356 -> 4356 bytes .../requests/__pycache__/utils.cpython-36.pyc | Bin 18744 -> 20602 bytes .../pip/_vendor/requests/__version__.py | 14 + .../pip/_vendor/requests/_internal_utils.py | 42 + .../pip/_vendor/requests/adapters.py | 72 +- .../site-packages/pip/_vendor/requests/api.py | 34 +- .../pip/_vendor/requests/auth.py | 51 +- .../pip/_vendor/requests/cacert.pem | 2891 ++----- .../pip/_vendor/requests/certs.py | 13 +- .../pip/_vendor/requests/compat.py | 19 +- .../pip/_vendor/requests/cookies.py | 12 +- .../pip/_vendor/requests/exceptions.py | 10 +- .../pip/_vendor/requests/help.py | 120 + .../pip/_vendor/requests/models.py | 175 +- .../pip/_vendor/requests/packages.py | 16 + .../pip/_vendor/requests/packages/__init__.py | 36 - .../__pycache__/__init__.cpython-36.pyc | Bin 1554 -> 0 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 647 -> 0 bytes .../__pycache__/big5freq.cpython-36.pyc | Bin 141741 -> 0 bytes .../__pycache__/big5prober.cpython-36.pyc | Bin 909 -> 0 bytes .../__pycache__/chardetect.cpython-36.pyc | Bin 2521 -> 0 bytes .../chardistribution.cpython-36.pyc | Bin 6131 -> 0 bytes .../charsetgroupprober.cpython-36.pyc | Bin 1975 -> 0 bytes .../__pycache__/charsetprober.cpython-36.pyc | Bin 1726 -> 0 bytes .../codingstatemachine.cpython-36.pyc | Bin 1446 -> 0 bytes .../chardet/__pycache__/compat.cpython-36.pyc | Bin 455 -> 0 bytes .../__pycache__/constants.cpython-36.pyc | Bin 310 -> 0 bytes .../__pycache__/cp949prober.cpython-36.pyc | Bin 916 -> 0 bytes .../__pycache__/escprober.cpython-36.pyc | Bin 1896 -> 0 bytes .../chardet/__pycache__/escsm.cpython-36.pyc | Bin 6866 -> 0 bytes .../__pycache__/eucjpprober.cpython-36.pyc | Bin 2207 -> 0 bytes .../__pycache__/euckrfreq.cpython-36.pyc | Bin 88781 -> 0 bytes .../__pycache__/euckrprober.cpython-36.pyc | Bin 917 -> 0 bytes .../__pycache__/euctwprober.cpython-36.pyc | Bin 917 -> 0 bytes .../__pycache__/gb2312prober.cpython-36.pyc | Bin 923 -> 0 bytes .../__pycache__/hebrewprober.cpython-36.pyc | Bin 2711 -> 0 bytes .../chardet/__pycache__/jpcntx.cpython-36.pyc | Bin 38518 -> 0 bytes .../__pycache__/latin1prober.cpython-36.pyc | Bin 2743 -> 0 bytes .../mbcharsetprober.cpython-36.pyc | Bin 1934 -> 0 bytes .../mbcsgroupprober.cpython-36.pyc | Bin 1020 -> 0 bytes .../chardet/__pycache__/mbcssm.cpython-36.pyc | Bin 16563 -> 0 bytes .../sbcharsetprober.cpython-36.pyc | Bin 2693 -> 0 bytes .../sbcsgroupprober.cpython-36.pyc | Bin 1584 -> 0 bytes .../__pycache__/sjisprober.cpython-36.pyc | Bin 2240 -> 0 bytes .../universaldetector.cpython-36.pyc | Bin 3220 -> 0 bytes .../__pycache__/utf8prober.cpython-36.pyc | Bin 1739 -> 0 bytes .../requests/packages/chardet/big5freq.py | 925 -- .../packages/chardet/charsetgroupprober.py | 106 - .../packages/chardet/charsetprober.py | 62 - .../packages/chardet/codingstatemachine.py | 61 - .../requests/packages/chardet/constants.py | 39 - .../requests/packages/chardet/escprober.py | 86 - .../requests/packages/chardet/escsm.py | 242 - .../requests/packages/chardet/eucjpprober.py | 90 - .../requests/packages/chardet/euckrfreq.py | 596 -- .../packages/chardet/mbcharsetprober.py | 86 - .../requests/packages/chardet/mbcssm.py | 572 -- .../packages/chardet/sbcharsetprober.py | 120 - .../requests/packages/chardet/sjisprober.py | 91 - .../packages/chardet/universaldetector.py | 170 - .../__pycache__/connection.cpython-36.pyc | Bin 8419 -> 0 bytes .../__pycache__/exceptions.cpython-36.pyc | Bin 8876 -> 0 bytes .../__pycache__/poolmanager.cpython-36.pyc | Bin 10823 -> 0 bytes .../__pycache__/response.cpython-36.pyc | Bin 13756 -> 0 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 168 -> 0 bytes .../__pycache__/appengine.cpython-36.pyc | Bin 6636 -> 0 bytes .../__pycache__/pyopenssl.cpython-36.pyc | Bin 10109 -> 0 bytes .../contrib/__pycache__/socks.cpython-36.pyc | Bin 4483 -> 0 bytes .../packages/urllib3/contrib/pyopenssl.py | 358 - .../__pycache__/__init__.cpython-36.pyc | Bin 294 -> 0 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 455 -> 0 bytes .../_implementation.cpython-36.pyc | Bin 2279 -> 0 bytes .../util/__pycache__/__init__.cpython-36.pyc | Bin 966 -> 0 bytes .../__pycache__/connection.cpython-36.pyc | Bin 3252 -> 0 bytes .../util/__pycache__/request.cpython-36.pyc | Bin 1951 -> 0 bytes .../util/__pycache__/retry.cpython-36.pyc | Bin 9107 -> 0 bytes .../util/__pycache__/url.cpython-36.pyc | Bin 4887 -> 0 bytes .../pip/_vendor/requests/sessions.py | 233 +- .../pip/_vendor/requests/status_codes.py | 2 +- .../pip/_vendor/requests/utils.py | 191 +- .../packages => }/urllib3/__init__.py | 3 +- .../__pycache__/__init__.cpython-36.pyc | Bin 2477 -> 2459 bytes .../__pycache__/_collections.cpython-36.pyc | Bin 10560 -> 10493 bytes .../__pycache__/connection.cpython-36.pyc | Bin 0 -> 8792 bytes .../__pycache__/connectionpool.cpython-36.pyc | Bin 22703 -> 23687 bytes .../__pycache__/exceptions.cpython-36.pyc | Bin 0 -> 10350 bytes .../urllib3/__pycache__/fields.cpython-36.pyc | Bin 5834 -> 5821 bytes .../__pycache__/filepost.cpython-36.pyc | Bin 2637 -> 2620 bytes .../__pycache__/poolmanager.cpython-36.pyc | Bin 0 -> 12763 bytes .../__pycache__/request.cpython-36.pyc | Bin 5579 -> 5515 bytes .../__pycache__/response.cpython-36.pyc | Bin 0 -> 16184 bytes .../packages => }/urllib3/_collections.py | 27 +- .../packages => }/urllib3/connection.py | 97 +- .../packages => }/urllib3/connectionpool.py | 169 +- .../packages => }/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 150 bytes .../__pycache__/appengine.cpython-36.pyc | Bin 0 -> 8764 bytes .../__pycache__/ntlmpool.cpython-36.pyc | Bin 3265 -> 3198 bytes .../__pycache__/pyopenssl.cpython-36.pyc | Bin 0 -> 14084 bytes .../securetransport.cpython-36.pyc | Bin 0 -> 17969 bytes .../contrib/__pycache__/socks.cpython-36.pyc | Bin 0 -> 4759 bytes .../contrib/_securetransport/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 167 bytes .../__pycache__/bindings.cpython-36.pyc | Bin 0 -> 10382 bytes .../__pycache__/low_level.cpython-36.pyc | Bin 0 -> 7407 bytes .../contrib/_securetransport/bindings.py | 593 ++ .../contrib/_securetransport/low_level.py | 343 + .../urllib3/contrib/appengine.py | 109 +- .../packages => }/urllib3/contrib/ntlmpool.py | 7 +- .../pip/_vendor/urllib3/contrib/pyopenssl.py | 455 + .../urllib3/contrib/securetransport.py | 810 ++ .../packages => }/urllib3/contrib/socks.py | 26 +- .../packages => }/urllib3/exceptions.py | 37 + .../{requests/packages => }/urllib3/fields.py | 2 +- .../packages => }/urllib3/filepost.py | 2 +- .../urllib3/packages/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 276 bytes .../__pycache__/ordered_dict.cpython-36.pyc | Bin 8371 -> 8353 bytes .../packages/__pycache__/six.cpython-36.pyc | Bin 24466 -> 24448 bytes .../urllib3/packages/backports/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 161 bytes .../__pycache__/makefile.cpython-36.pyc | Bin 0 -> 1261 bytes .../urllib3/packages/backports/makefile.py | 53 + .../urllib3/packages/ordered_dict.py | 0 .../packages => }/urllib3/packages/six.py | 0 .../packages/ssl_match_hostname/__init__.py | 8 +- .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 537 bytes .../_implementation.cpython-36.pyc | Bin 0 -> 3240 bytes .../ssl_match_hostname/_implementation.py | 58 +- .../packages => }/urllib3/poolmanager.py | 197 +- .../packages => }/urllib3/request.py | 5 +- .../packages => }/urllib3/response.py | 110 +- .../packages => }/urllib3/util/__init__.py | 8 + .../util/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 1080 bytes .../__pycache__/connection.cpython-36.pyc | Bin 0 -> 3078 bytes .../util/__pycache__/request.cpython-36.pyc | Bin 0 -> 3172 bytes .../util/__pycache__/response.cpython-36.pyc | Bin 1823 -> 1853 bytes .../util/__pycache__/retry.cpython-36.pyc | Bin 0 -> 12268 bytes .../util/__pycache__/selectors.cpython-36.pyc | Bin 0 -> 16367 bytes .../util/__pycache__/ssl_.cpython-36.pyc | Bin 8732 -> 8913 bytes .../util/__pycache__/timeout.cpython-36.pyc | Bin 8738 -> 8721 bytes .../util/__pycache__/url.cpython-36.pyc | Bin 0 -> 5140 bytes .../util/__pycache__/wait.cpython-36.pyc | Bin 0 -> 1615 bytes .../packages => }/urllib3/util/connection.py | 32 +- .../packages => }/urllib3/util/request.py | 48 +- .../packages => }/urllib3/util/response.py | 7 + .../packages => }/urllib3/util/retry.py | 149 +- .../pip/_vendor/urllib3/util/selectors.py | 581 ++ .../packages => }/urllib3/util/ssl_.py | 47 +- .../packages => }/urllib3/util/timeout.py | 22 +- .../packages => }/urllib3/util/url.py | 23 +- .../pip/_vendor/urllib3/util/wait.py | 40 + .../__pycache__/__init__.cpython-36.pyc | Bin 9626 -> 9626 bytes .../__pycache__/labels.cpython-36.pyc | Bin 4040 -> 4040 bytes .../__pycache__/mklabels.cpython-36.pyc | Bin 1862 -> 1862 bytes .../__pycache__/tests.cpython-36.pyc | Bin 5018 -> 5018 bytes .../__pycache__/x_user_defined.cpython-36.pyc | Bin 2615 -> 2615 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 2028 -> 2028 bytes .../commands/__pycache__/check.cpython-36.pyc | Bin 1269 -> 1269 bytes .../__pycache__/completion.cpython-36.pyc | Bin 2600 -> 2600 bytes .../__pycache__/download.cpython-36.pyc | Bin 5385 -> 5385 bytes .../__pycache__/freeze.cpython-36.pyc | Bin 2582 -> 2582 bytes .../commands/__pycache__/hash.cpython-36.pyc | Bin 1923 -> 1923 bytes .../commands/__pycache__/help.cpython-36.pyc | Bin 1074 -> 1074 bytes .../__pycache__/install.cpython-36.pyc | Bin 9856 -> 9856 bytes .../commands/__pycache__/list.cpython-36.pyc | Bin 9685 -> 9685 bytes .../__pycache__/search.cpython-36.pyc | Bin 4164 -> 4164 bytes .../commands/__pycache__/show.cpython-36.pyc | Bin 5335 -> 5335 bytes .../__pycache__/uninstall.cpython-36.pyc | Bin 2560 -> 2560 bytes .../commands/__pycache__/wheel.cpython-36.pyc | Bin 5422 -> 5422 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 3957 -> 3957 bytes .../__pycache__/dictconfig.cpython-36.pyc | Bin 13604 -> 13604 bytes lib/python3.6/site-packages/pip/download.py | 2 +- .../__pycache__/__init__.cpython-36.pyc | Bin 223 -> 223 bytes .../models/__pycache__/index.cpython-36.pyc | Bin 827 -> 827 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 137 -> 137 bytes .../__pycache__/check.cpython-36.pyc | Bin 1424 -> 1424 bytes .../__pycache__/freeze.cpython-36.pyc | Bin 2881 -> 2881 bytes .../req/__pycache__/__init__.cpython-36.pyc | Bin 404 -> 404 bytes .../req/__pycache__/req_file.cpython-36.pyc | Bin 8419 -> 8419 bytes .../__pycache__/req_install.cpython-36.pyc | Bin 30120 -> 30120 bytes .../req/__pycache__/req_set.cpython-36.pyc | Bin 20967 -> 20967 bytes .../__pycache__/req_uninstall.cpython-36.pyc | Bin 6282 -> 6282 bytes .../utils/__pycache__/__init__.cpython-36.pyc | Bin 22198 -> 22198 bytes .../utils/__pycache__/appdirs.cpython-36.pyc | Bin 7701 -> 7701 bytes .../utils/__pycache__/build.cpython-36.pyc | Bin 1315 -> 1315 bytes .../__pycache__/deprecation.cpython-36.pyc | Bin 1728 -> 1728 bytes .../utils/__pycache__/encoding.cpython-36.pyc | Bin 1018 -> 1018 bytes .../__pycache__/filesystem.cpython-36.pyc | Bin 583 -> 583 bytes .../utils/__pycache__/glibc.cpython-36.pyc | Bin 1366 -> 1366 bytes .../utils/__pycache__/hashes.cpython-36.pyc | Bin 3242 -> 3242 bytes .../utils/__pycache__/logging.cpython-36.pyc | Bin 3898 -> 3898 bytes .../utils/__pycache__/outdated.cpython-36.pyc | Bin 4223 -> 4223 bytes .../__pycache__/packaging.cpython-36.pyc | Bin 1986 -> 1986 bytes .../setuptools_build.cpython-36.pyc | Bin 327 -> 327 bytes .../pip/utils/__pycache__/ui.cpython-36.pyc | Bin 9583 -> 9583 bytes .../vcs/__pycache__/__init__.cpython-36.pyc | Bin 11102 -> 11102 bytes .../pip/vcs/__pycache__/bazaar.cpython-36.pyc | Bin 3655 -> 3655 bytes .../pip/vcs/__pycache__/git.cpython-36.pyc | Bin 8795 -> 8795 bytes .../vcs/__pycache__/mercurial.cpython-36.pyc | Bin 3568 -> 3568 bytes .../vcs/__pycache__/subversion.cpython-36.pyc | Bin 7107 -> 7107 bytes pip-selfcheck.json | 1 + 447 files changed, 23562 insertions(+), 7684 deletions(-) rename lib/python3.6/site-packages/{pip-9.0.1.dist-info => pip-9.0.3.dist-info}/DESCRIPTION.rst (100%) rename lib/python3.6/site-packages/{pip-9.0.1.dist-info => pip-9.0.3.dist-info}/INSTALLER (100%) rename lib/python3.6/site-packages/{pip-9.0.1.dist-info => pip-9.0.3.dist-info}/METADATA (98%) rename lib/python3.6/site-packages/{pip-9.0.1.dist-info => pip-9.0.3.dist-info}/RECORD (59%) rename lib/python3.6/site-packages/{pip-9.0.1.dist-info => pip-9.0.3.dist-info}/WHEEL (70%) rename lib/python3.6/site-packages/{pip-9.0.1.dist-info => pip-9.0.3.dist-info}/entry_points.txt (73%) rename lib/python3.6/site-packages/{pip-9.0.1.dist-info => pip-9.0.3.dist-info}/metadata.json (85%) rename lib/python3.6/site-packages/{pip-9.0.1.dist-info => pip-9.0.3.dist-info}/top_level.txt (100%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/certifi/__init__.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/certifi/__main__.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/certifi/cacert.pem create mode 100644 lib/python3.6/site-packages/pip/_vendor/certifi/core.py rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/__init__.py (55%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/compat.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-36.pyc rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/__pycache__/euctwfreq.cpython-36.pyc (87%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-36.pyc rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/__pycache__/gb2312freq.cpython-36.pyc (55%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-36.pyc rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/__pycache__/jisfreq.cpython-36.pyc (52%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-36.pyc rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/__pycache__/langbulgarianmodel.cpython-36.pyc (93%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/__pycache__/langcyrillicmodel.cpython-36.pyc (94%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/__pycache__/langgreekmodel.cpython-36.pyc (93%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/__pycache__/langhebrewmodel.cpython-36.pyc (96%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/__pycache__/langhungarianmodel.cpython-36.pyc (95%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/__pycache__/langthaimodel.cpython-36.pyc (96%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/big5freq.py rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/big5prober.py (82%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/chardistribution.py (61%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/charsetgroupprober.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/charsetprober.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/cli/__init__.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-36.pyc rename lib/python3.6/site-packages/pip/_vendor/{requests/packages/chardet => chardet/cli}/chardetect.py (83%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/codingstatemachine.py rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/compat.py (85%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/cp949prober.py (83%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/enums.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/escprober.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/escsm.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/eucjpprober.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/euckrfreq.py rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/euckrprober.py (82%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/euctwfreq.py (66%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/euctwprober.py (82%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/gb2312freq.py (57%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/gb2312prober.py (81%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/hebrewprober.py (76%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/jisfreq.py (54%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/jpcntx.py (87%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/langbulgarianmodel.py (96%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/langcyrillicmodel.py (91%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/langgreekmodel.py (96%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/langhebrewmodel.py (97%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/langhungarianmodel.py (96%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/langthaimodel.py (98%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/langturkishmodel.py rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/latin1prober.py (81%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/mbcharsetprober.py rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/mbcsgroupprober.py (93%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/mbcssm.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/sbcharsetprober.py rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/sbcsgroupprober.py (70%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/sjisprober.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/universaldetector.py rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/chardet/utf8prober.py (56%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/chardet/version.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/idna/__init__.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/idna/__pycache__/core.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/idna/codec.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/idna/compat.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/idna/core.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/idna/idnadata.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/idna/intranges.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/idna/package_data.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/idna/uts46data.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/help.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/__version__.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/_internal_utils.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/help.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages.py delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/__init__.py delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/__pycache__/__init__.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/__init__.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/big5freq.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/big5prober.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/chardetect.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/chardistribution.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/charsetgroupprober.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/charsetprober.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/codingstatemachine.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/compat.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/constants.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/cp949prober.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/escprober.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/escsm.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/eucjpprober.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/euckrfreq.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/euckrprober.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/euctwprober.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/gb2312prober.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/hebrewprober.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/jpcntx.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/latin1prober.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/mbcharsetprober.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/mbcsgroupprober.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/mbcssm.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/sbcharsetprober.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/sbcsgroupprober.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/sjisprober.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/universaldetector.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/utf8prober.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/big5freq.py delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/charsetgroupprober.py delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/charsetprober.py delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/codingstatemachine.py delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/constants.py delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/escprober.py delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/escsm.py delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/eucjpprober.py delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/euckrfreq.py delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/mbcharsetprober.py delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/mbcssm.py delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/sbcharsetprober.py delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/sjisprober.py delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/universaldetector.py delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/connection.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/exceptions.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/poolmanager.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/response.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__pycache__/__init__.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__pycache__/appengine.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__pycache__/pyopenssl.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__pycache__/socks.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/__pycache__/__init__.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/__init__.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/connection.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/request.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/retry.cpython-36.pyc delete mode 100644 lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/url.cpython-36.pyc rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/__init__.py (99%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/__pycache__/__init__.cpython-36.pyc (84%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/__pycache__/_collections.cpython-36.pyc (75%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-36.pyc rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/__pycache__/connectionpool.cpython-36.pyc (52%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-36.pyc rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/__pycache__/fields.cpython-36.pyc (90%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/__pycache__/filepost.cpython-36.pyc (82%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-36.pyc rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/__pycache__/request.cpython-36.pyc (76%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-36.pyc rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/_collections.py (93%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/connection.py (79%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/connectionpool.py (86%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/contrib/__init__.py (100%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-36.pyc rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/contrib/__pycache__/ntlmpool.cpython-36.pyc (54%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/contrib/appengine.py (64%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/contrib/ntlmpool.py (96%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/securetransport.py rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/contrib/socks.py (88%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/exceptions.py (84%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/fields.py (99%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/filepost.py (96%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/packages/__init__.py (100%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-36.pyc rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/packages/__pycache__/ordered_dict.cpython-36.pyc (97%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/packages/__pycache__/six.cpython-36.pyc (99%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/packages/ordered_dict.py (100%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/packages/six.py (100%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/packages/ssl_match_hostname/__init__.py (64%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-36.pyc rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/packages/ssl_match_hostname/_implementation.py (64%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/poolmanager.py (62%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/request.py (98%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/response.py (80%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/util/__init__.py (85%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-36.pyc rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/util/__pycache__/response.cpython-36.pyc (50%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/util/__pycache__/selectors.cpython-36.pyc rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/util/__pycache__/ssl_.cpython-36.pyc (54%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/util/__pycache__/timeout.cpython-36.pyc (72%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-36.pyc create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-36.pyc rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/util/connection.py (84%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/util/request.py (56%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/util/response.py (92%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/util/retry.py (65%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/util/selectors.py rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/util/ssl_.py (90%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/util/timeout.py (93%) rename lib/python3.6/site-packages/pip/_vendor/{requests/packages => }/urllib3/util/url.py (88%) create mode 100644 lib/python3.6/site-packages/pip/_vendor/urllib3/util/wait.py create mode 100644 pip-selfcheck.json diff --git a/lib/python3.6/site-packages/pip-9.0.1.dist-info/DESCRIPTION.rst b/lib/python3.6/site-packages/pip-9.0.3.dist-info/DESCRIPTION.rst similarity index 100% rename from lib/python3.6/site-packages/pip-9.0.1.dist-info/DESCRIPTION.rst rename to lib/python3.6/site-packages/pip-9.0.3.dist-info/DESCRIPTION.rst diff --git a/lib/python3.6/site-packages/pip-9.0.1.dist-info/INSTALLER b/lib/python3.6/site-packages/pip-9.0.3.dist-info/INSTALLER similarity index 100% rename from lib/python3.6/site-packages/pip-9.0.1.dist-info/INSTALLER rename to lib/python3.6/site-packages/pip-9.0.3.dist-info/INSTALLER diff --git a/lib/python3.6/site-packages/pip-9.0.1.dist-info/METADATA b/lib/python3.6/site-packages/pip-9.0.3.dist-info/METADATA similarity index 98% rename from lib/python3.6/site-packages/pip-9.0.1.dist-info/METADATA rename to lib/python3.6/site-packages/pip-9.0.3.dist-info/METADATA index 600a905..0373c2d 100644 --- a/lib/python3.6/site-packages/pip-9.0.1.dist-info/METADATA +++ b/lib/python3.6/site-packages/pip-9.0.3.dist-info/METADATA @@ -1,6 +1,6 @@ Metadata-Version: 2.0 Name: pip -Version: 9.0.1 +Version: 9.0.3 Summary: The PyPA recommended tool for installing Python packages. Home-page: https://pip.pypa.io/ Author: The pip developers @@ -22,11 +22,12 @@ Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: Implementation :: PyPy Requires-Python: >=2.6,!=3.0.*,!=3.1.*,!=3.2.* Provides-Extra: testing +Provides-Extra: testing +Requires-Dist: pytest; extra == 'testing' +Requires-Dist: virtualenv (>=1.10); extra == 'testing' +Requires-Dist: scripttest (>=1.3); extra == 'testing' Requires-Dist: mock; extra == 'testing' Requires-Dist: pretend; extra == 'testing' -Requires-Dist: pytest; extra == 'testing' -Requires-Dist: scripttest (>=1.3); extra == 'testing' -Requires-Dist: virtualenv (>=1.10); extra == 'testing' pip === diff --git a/lib/python3.6/site-packages/pip-9.0.1.dist-info/RECORD b/lib/python3.6/site-packages/pip-9.0.3.dist-info/RECORD similarity index 59% rename from lib/python3.6/site-packages/pip-9.0.1.dist-info/RECORD rename to lib/python3.6/site-packages/pip-9.0.3.dist-info/RECORD index b8b3e47..855e043 100644 --- a/lib/python3.6/site-packages/pip-9.0.1.dist-info/RECORD +++ b/lib/python3.6/site-packages/pip-9.0.3.dist-info/RECORD @@ -1,9 +1,9 @@ -pip/__init__.py,sha256=00QWSreEBjb8Y8sPs8HeqgLXSB-3UrONJxo4J5APxEc,11348 +pip/__init__.py,sha256=axvIjW_MghmGb9VQEbRfkys1a5jKGsyyZ0df0M-bePU,11956 pip/__main__.py,sha256=V6Kh-IEDEFpt1cahRE6MajUF_14qJR_Qsvn4MjWZXzE,584 pip/basecommand.py,sha256=TTlmZesQ4Vuxcto2KqwZGmgmN5ioHEl_DeFev9ie_SA,11910 pip/baseparser.py,sha256=AKMOeF3fTrRroiv0DmTQbdiLW0DQux2KqGC_dJJB9d0,10465 pip/cmdoptions.py,sha256=8JCcF2kKAF2cFnV77oW-3DsHJifr9jF2WuChzzwgcwg,16474 -pip/download.py,sha256=rA0wbmqC2n9ejX481YJSidmKgQqQDjdaxkHkHlAN68k,32171 +pip/download.py,sha256=_VJaNGsdawONd9shasl7MxNzTo8g0EACn2ga6GRjM5o,32153 pip/exceptions.py,sha256=BvqH-Jw3tP2b-2IJ2kjrQemOAPMqKrQMLRIZHZQpJXk,8121 pip/index.py,sha256=L6UhtAEZc2qw7BqfQrkPQcw2gCgEw3GukLRSA95BNyI,39950 pip/locations.py,sha256=9rJRlgonC6QC2zGDIn_7mXaoZ9_tF_IHM2BQhWVRgbo,5626 @@ -23,7 +23,7 @@ pip/_vendor/cachecontrol/__init__.py,sha256=UPyFlz0dIjxusu5ITig9UDFJdSY5LTwijhld pip/_vendor/cachecontrol/_cmd.py,sha256=MPxZfZd2LKDzVrs55X3wA1rsI2YuP8evLZSwQj0dIk0,1320 pip/_vendor/cachecontrol/adapter.py,sha256=RaGYyRA-RA1J0AnE67GzEYFPBu4YH4EQUvQqTKa57iM,4608 pip/_vendor/cachecontrol/cache.py,sha256=xtl-V-pr9KSt9VvFDRCB9yrHPEvqvbk-5M1vAInZb5k,790 -pip/_vendor/cachecontrol/compat.py,sha256=uyovOpd1ehI3J1XeBqJvcsIp6fvkjBpoQmu_0J2st8c,416 +pip/_vendor/cachecontrol/compat.py,sha256=2MTOyI1JlG_gJpfuy3-UQQlKMRiJimR-XXB0sr44wj0,380 pip/_vendor/cachecontrol/controller.py,sha256=elDsLcaYA15ncodRmHnWQp6ekU_ocEGtDeGLbsnTjzo,13024 pip/_vendor/cachecontrol/filewrapper.py,sha256=_K8cStmXqD33m15PfsQ8rlpo6FfXjVbKmjvLXyICRgI,2531 pip/_vendor/cachecontrol/heuristics.py,sha256=WtJrVsyWjpP9WoUiDVdTZZRNBCz5ZVptaQpYnqofDQU,4141 @@ -32,6 +32,51 @@ pip/_vendor/cachecontrol/wrapper.py,sha256=Kqyu_3TW_54XDudha4-HF21vyEOAJ4ZnRXFys pip/_vendor/cachecontrol/caches/__init__.py,sha256=uWnUtyMvHY_LULaL_4_IR1F_xPgK5zHfJyRnBq4DnPE,369 pip/_vendor/cachecontrol/caches/file_cache.py,sha256=FsDug3bwUAQ3okjjfGzxlDaBf2fwVSn1iBKMTL6SyGU,3532 pip/_vendor/cachecontrol/caches/redis_cache.py,sha256=XywqxkS9MkCaflTOY_wjrE02neKdywB9YwlOBbP7Ywc,973 +pip/_vendor/certifi/__init__.py,sha256=QSRy1UztE-i09IuGIKKuc190k07lt6ktabbelPMIZoc,63 +pip/_vendor/certifi/__main__.py,sha256=FiOYt1Fltst7wk9DRa6GCoBr8qBUxlNQu_MKJf04E6s,41 +pip/_vendor/certifi/cacert.pem,sha256=7CEXfLHxDwvDpwVu0y_2lfJYk63cU-KUKI_DL1Lq8Uo,271088 +pip/_vendor/certifi/core.py,sha256=xPQDdG_siy5A7BfqGWa7RJhcA61xXEqPiSrw9GNyhHE,836 +pip/_vendor/chardet/__init__.py,sha256=YsP5wQlsHJ2auF1RZJfypiSrCA7_bQiRm3ES_NI76-Y,1559 +pip/_vendor/chardet/big5freq.py,sha256=D_zK5GyzoVsRes0HkLJziltFQX0bKCLOrFe9_xDvO_8,31254 +pip/_vendor/chardet/big5prober.py,sha256=kBxHbdetBpPe7xrlb-e990iot64g_eGSLd32lB7_h3M,1757 +pip/_vendor/chardet/chardistribution.py,sha256=3woWS62KrGooKyqz4zQSnjFbJpa6V7g02daAibTwcl8,9411 +pip/_vendor/chardet/charsetgroupprober.py,sha256=6bDu8YIiRuScX4ca9Igb0U69TA2PGXXDej6Cc4_9kO4,3787 +pip/_vendor/chardet/charsetprober.py,sha256=KSmwJErjypyj0bRZmC5F5eM7c8YQgLYIjZXintZNstg,5110 +pip/_vendor/chardet/codingstatemachine.py,sha256=VYp_6cyyki5sHgXDSZnXW4q1oelHc3cu9AyQTX7uug8,3590 +pip/_vendor/chardet/compat.py,sha256=PKTzHkSbtbHDqS9PyujMbX74q1a8mMpeQTDVsQhZMRw,1134 +pip/_vendor/chardet/cp949prober.py,sha256=TZ434QX8zzBsnUvL_8wm4AQVTZ2ZkqEEQL_lNw9f9ow,1855 +pip/_vendor/chardet/enums.py,sha256=Aimwdb9as1dJKZaFNUH2OhWIVBVd6ZkJJ_WK5sNY8cU,1661 +pip/_vendor/chardet/escprober.py,sha256=kkyqVg1Yw3DIOAMJ2bdlyQgUFQhuHAW8dUGskToNWSc,3950 +pip/_vendor/chardet/escsm.py,sha256=RuXlgNvTIDarndvllNCk5WZBIpdCxQ0kcd9EAuxUh84,10510 +pip/_vendor/chardet/eucjpprober.py,sha256=iD8Jdp0ISRjgjiVN7f0e8xGeQJ5GM2oeZ1dA8nbSeUw,3749 +pip/_vendor/chardet/euckrfreq.py,sha256=-7GdmvgWez4-eO4SuXpa7tBiDi5vRXQ8WvdFAzVaSfo,13546 +pip/_vendor/chardet/euckrprober.py,sha256=MqFMTQXxW4HbzIpZ9lKDHB3GN8SP4yiHenTmf8g_PxY,1748 +pip/_vendor/chardet/euctwfreq.py,sha256=No1WyduFOgB5VITUA7PLyC5oJRNzRyMbBxaKI1l16MA,31621 +pip/_vendor/chardet/euctwprober.py,sha256=13p6EP4yRaxqnP4iHtxHOJ6R2zxHq1_m8hTRjzVZ95c,1747 +pip/_vendor/chardet/gb2312freq.py,sha256=JX8lsweKLmnCwmk8UHEQsLgkr_rP_kEbvivC4qPOrlc,20715 +pip/_vendor/chardet/gb2312prober.py,sha256=gGvIWi9WhDjE-xQXHvNIyrnLvEbMAYgyUSZ65HUfylw,1754 +pip/_vendor/chardet/hebrewprober.py,sha256=c3SZ-K7hvyzGY6JRAZxJgwJ_sUS9k0WYkvMY00YBYFo,13838 +pip/_vendor/chardet/jisfreq.py,sha256=vpmJv2Bu0J8gnMVRPHMFefTRvo_ha1mryLig8CBwgOg,25777 +pip/_vendor/chardet/jpcntx.py,sha256=PYlNqRUQT8LM3cT5FmHGP0iiscFlTWED92MALvBungo,19643 +pip/_vendor/chardet/langbulgarianmodel.py,sha256=1HqQS9Pbtnj1xQgxitJMvw8X6kKr5OockNCZWfEQrPE,12839 +pip/_vendor/chardet/langcyrillicmodel.py,sha256=LODajvsetH87yYDDQKA2CULXUH87tI223dhfjh9Zx9c,17948 +pip/_vendor/chardet/langgreekmodel.py,sha256=8YAW7bU8YwSJap0kIJSbPMw1BEqzGjWzqcqf0WgUKAA,12688 +pip/_vendor/chardet/langhebrewmodel.py,sha256=JSnqmE5E62tDLTPTvLpQsg5gOMO4PbdWRvV7Avkc0HA,11345 +pip/_vendor/chardet/langhungarianmodel.py,sha256=RhapYSG5l0ZaO-VV4Fan5sW0WRGQqhwBM61yx3yxyOA,12592 +pip/_vendor/chardet/langthaimodel.py,sha256=8l0173Gu_W6G8mxmQOTEF4ls2YdE7FxWf3QkSxEGXJQ,11290 +pip/_vendor/chardet/langturkishmodel.py,sha256=W22eRNJsqI6uWAfwXSKVWWnCerYqrI8dZQTm_M0lRFk,11102 +pip/_vendor/chardet/latin1prober.py,sha256=S2IoORhFk39FEFOlSFWtgVybRiP6h7BlLldHVclNkU8,5370 +pip/_vendor/chardet/mbcharsetprober.py,sha256=AR95eFH9vuqSfvLQZN-L5ijea25NOBCoXqw8s5O9xLQ,3413 +pip/_vendor/chardet/mbcsgroupprober.py,sha256=h6TRnnYq2OxG1WdD5JOyxcdVpn7dG0q-vB8nWr5mbh4,2012 +pip/_vendor/chardet/mbcssm.py,sha256=SY32wVIF3HzcjY3BaEspy9metbNSKxIIB0RKPn7tjpI,25481 +pip/_vendor/chardet/sbcharsetprober.py,sha256=LDSpCldDCFlYwUkGkwD2oFxLlPWIWXT09akH_2PiY74,5657 +pip/_vendor/chardet/sbcsgroupprober.py,sha256=1IprcCB_k1qfmnxGC6MBbxELlKqD3scW6S8YIwdeyXA,3546 +pip/_vendor/chardet/sjisprober.py,sha256=IIt-lZj0WJqK4rmUZzKZP4GJlE8KUEtFYVuY96ek5MQ,3774 +pip/_vendor/chardet/universaldetector.py,sha256=qL0174lSZE442eB21nnktT9_VcAye07laFWUeUrjttY,12485 +pip/_vendor/chardet/utf8prober.py,sha256=IdD8v3zWOsB8OLiyPi-y_fqwipRFxV9Nc1eKBLSuIEw,2766 +pip/_vendor/chardet/version.py,sha256=sp3B08mrDXB-pf3K9fqJ_zeDHOCLC8RrngQyDFap_7g,242 +pip/_vendor/chardet/cli/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 +pip/_vendor/chardet/cli/chardetect.py,sha256=YBO8L4mXo0WR6_-Fjh_8QxPBoEBNqB9oNxNrdc54AQs,2738 pip/_vendor/colorama/__init__.py,sha256=9xByrTvk9upkL5NGV5It2Eje4-kzNLwa_1lGPWpXoNU,240 pip/_vendor/colorama/ansi.py,sha256=Fi0un-QLqRm-v7o_nKiOqyC8PapBJK7DLV_q9LKtTO0,2524 pip/_vendor/colorama/ansitowin32.py,sha256=gJZB35Lbdjatykd2zrUUnokMzkvcFgscyn_tNxxMFHA,9668 @@ -95,6 +140,14 @@ pip/_vendor/html5lib/treewalkers/dom.py,sha256=EHyFR8D8lYNnyDU9lx_IKigVJRyecUGua pip/_vendor/html5lib/treewalkers/etree.py,sha256=8jVLEY2FjgN4RFugwhAh44l9ScVYoDStQFCnlPwvafI,4684 pip/_vendor/html5lib/treewalkers/etree_lxml.py,sha256=sY6wfRshWTllu6n48TPWpKsQRPp-0CQrT0hj_AdzHSU,6309 pip/_vendor/html5lib/treewalkers/genshi.py,sha256=4D2PECZ5n3ZN3qu3jMl9yY7B81jnQApBQSVlfaIuYbA,2309 +pip/_vendor/idna/__init__.py,sha256=9Nt7xpyet3DmOrPUGooDdAwmHZZu1qUAy2EaJ93kGiQ,58 +pip/_vendor/idna/codec.py,sha256=lvYb7yu7PhAqFaAIAdWcwgaWI2UmgseUua-1c0AsG0A,3299 +pip/_vendor/idna/compat.py,sha256=R-h29D-6mrnJzbXxymrWUW7iZUvy-26TQwZ0ij57i4U,232 +pip/_vendor/idna/core.py,sha256=GafiWdYQIK5TSjWdRzCYCho704ALtMCrV_dnXXn57U0,11390 +pip/_vendor/idna/idnadata.py,sha256=-Cg83lurKoA9p7lb0lMAsos0rFz1dnKrGeBE3o8UuCA,32999 +pip/_vendor/idna/intranges.py,sha256=TY1lpxZIQWEP6tNqjZkFA5hgoMWOj1OBmnUG8ihT87E,1749 +pip/_vendor/idna/package_data.py,sha256=KMSUTS_M7ZZ7Ugl_V_EOxV-D3o7v7yVkt45JK_bpW24,21 +pip/_vendor/idna/uts46data.py,sha256=YylQYBfljAx_WVqR2D7HgcGGyVCWwPm6uF38aERuhyw,184944 pip/_vendor/lockfile/__init__.py,sha256=Tqpz90DwKYfhPsfzVOJl84TL87pdFE5ePNHdXAxs4Tk,9371 pip/_vendor/lockfile/linklockfile.py,sha256=C7OH3H4GdK68u4FQgp8fkP2kO4fyUTSyj3X6blgfobc,2652 pip/_vendor/lockfile/mkdirlockfile.py,sha256=e3qgIL-etZMLsS-3ft19iW_8IQ360HNkGOqE3yBKsUw,3096 @@ -116,88 +169,61 @@ pip/_vendor/progress/bar.py,sha256=YNPJeRrwYVKFO2nyaEwsQjYByamMWTgJMvQO1NpD-AY,2 pip/_vendor/progress/counter.py,sha256=kEqA8jWEdwrc6P_9VaRx7bjOHwk9gxl-Q9oVbQ08v5c,1502 pip/_vendor/progress/helpers.py,sha256=FehfwZTv-5cCfsbcMlvlUkm3xZ0cRhsev6XVpmeTF4c,2854 pip/_vendor/progress/spinner.py,sha256=iCVtUQbaJUFHTjn1ZLPQLPYeao4lC9aXAa_HxIeUK6k,1314 -pip/_vendor/requests/__init__.py,sha256=Cde-qxOWcslaEcPvKAJQPFbY8_va8PMbU7Rssr7vViI,2326 -pip/_vendor/requests/adapters.py,sha256=DJdgax91PyS2s6_oZPELbuLWNlM2xGguNu62sqcOUik,19740 -pip/_vendor/requests/api.py,sha256=PgminOpD8hLLKLNs0RWLKr1HpNc4Qxr_6uen8q2c9CI,5794 -pip/_vendor/requests/auth.py,sha256=eBLtJlcTZxRG7xKXCvGQBLO9a-PxFgMf2qTUbtZwMJM,8175 -pip/_vendor/requests/cacert.pem,sha256=5xzWFRrSP0ZsXiW6emg8UQ_w497lT4qWCv32OO8R1ME,344712 -pip/_vendor/requests/certs.py,sha256=Aa-oStu9f2lVi8VM9Aw1xaAtTIz7bhu5CGKNPEW1waM,625 -pip/_vendor/requests/compat.py,sha256=0cgWB43LEX5OrX1O4k-bPbFlIbWXgEd412DSDJtF1Y8,1687 -pip/_vendor/requests/cookies.py,sha256=awMI0hm3SKheMEDTqO8AIadc2XmnCGKPCTNw_4hlM3Q,18208 -pip/_vendor/requests/exceptions.py,sha256=x-MGvDASYKSstuCNYTA5IT_EAcxTp5knE3WPMrgkrlI,2860 +pip/_vendor/requests/__init__.py,sha256=JRFVBw6JyV98WQSqv8jshc5_g9xIbLhevI5LHaVi9I4,3575 +pip/_vendor/requests/__version__.py,sha256=BQ279bjqQ_8PHhvD_FN36UuFqjbSUqsm7bMeyJV-kVo,436 +pip/_vendor/requests/_internal_utils.py,sha256=Zx3PnEUccyfsB-ie11nZVAW8qClJy0gx1qNME7rgT18,1096 +pip/_vendor/requests/adapters.py,sha256=LAay3OH0ZbvI6bDW_M5Of06tU5z2fnCflrp_Xm38KsY,21016 +pip/_vendor/requests/api.py,sha256=BqVZnvsWu6Pwm0vQ3fw_Dj9_I-gcOR9CbScB2htPArA,6237 +pip/_vendor/requests/auth.py,sha256=4KCFQHrL1Lcox3uMh4tjOh3OrJhw-F5zti91wY-ZyTY,9728 +pip/_vendor/requests/cacert.pem,sha256=7CEXfLHxDwvDpwVu0y_2lfJYk63cU-KUKI_DL1Lq8Uo,271088 +pip/_vendor/requests/certs.py,sha256=nXRVq9DtGmv_1AYbwjTu9UrgAcdJv05ZvkNeaoLOZxY,465 +pip/_vendor/requests/compat.py,sha256=kcqhV7U43c4i8Ouk5e5YdJXMDEmWNLT97LYm6Uor-74,1626 +pip/_vendor/requests/cookies.py,sha256=u7QC5hmloMwdT9-2taz5GpwAvzp2LTUS9cP4SWUKnfM,18208 +pip/_vendor/requests/exceptions.py,sha256=oZwYwCm65Y0FMuFqojEgUlWUBQ4MkXRy5URHV1b98L4,3115 +pip/_vendor/requests/help.py,sha256=UuBTtc7tEpnU_ivnpuk2hjgzuS6z7GnTEkSbENlc1XQ,3667 pip/_vendor/requests/hooks.py,sha256=HXAHoC1FNTFRZX6-lNdvPM7Tst4kvGwYTN-AOKRxoRU,767 -pip/_vendor/requests/models.py,sha256=YHuL2khGDFxeWc-NMJIcfFqvYJ0dKs1mXfj1Fuff1J8,30532 -pip/_vendor/requests/sessions.py,sha256=H7HpKRLKeu1MSH5W1-PI2GMCFLN4bz5i3OFqjjgzE5k,25609 -pip/_vendor/requests/status_codes.py,sha256=uwVHcMPkHV3FElDLlnDTH3KULZIAGxaovbBxrjWm8N0,3316 +pip/_vendor/requests/models.py,sha256=lcz2GEOe2eOu-GqAGdpA0vJUpI7EE4eDSlWI78R8Y64,34051 +pip/_vendor/requests/packages.py,sha256=njJmVifY4aSctuW3PP5EFRCxjEwMRDO6J_feG2dKWsI,695 +pip/_vendor/requests/sessions.py,sha256=_A5qpfrohHVFYLEuVyEJ4v3-lIlNwO3GpHG-LzkWFCM,27546 +pip/_vendor/requests/status_codes.py,sha256=a9bwuU7lMr4HshsRZdzBbUsYVsIo4Fu9GYg1XFTFFPc,3323 pip/_vendor/requests/structures.py,sha256=yexCvWbX40M6E8mLQOpAGZZ-ZoAnyaT2dni-Bp-b42g,3012 -pip/_vendor/requests/utils.py,sha256=9d3jqnA8avsF9N1QPmsk2pJgo2pxuExrN2hoIhtLggY,24163 -pip/_vendor/requests/packages/__init__.py,sha256=CVheqNRcXIkAi5037RhxeqbAqd0QhrK1o9R9kS2xvuI,1384 -pip/_vendor/requests/packages/chardet/__init__.py,sha256=XuTKCYOR7JwsoHxqZTYH86LVyMDbDI3s1s0W_qoGEBM,1295 -pip/_vendor/requests/packages/chardet/big5freq.py,sha256=D8oTdz-GM7Jg8TsaWJDm65vM_OLHC3xub6qUJ3rOgsQ,82594 -pip/_vendor/requests/packages/chardet/big5prober.py,sha256=XX96C--6WKYW36mL-z7pJSAtc169Z8ZImByCP4pEN9A,1684 -pip/_vendor/requests/packages/chardet/chardetect.py,sha256=f4299UZG6uWd3i3r_N0OdrFj2sA9JFI54PAmDLAFmWA,2504 -pip/_vendor/requests/packages/chardet/chardistribution.py,sha256=cUARQFr1oTLXeJCDQrDRkUP778AvSMzhSCnG8VLCV58,9226 -pip/_vendor/requests/packages/chardet/charsetgroupprober.py,sha256=0lKk7VE516fgMw119tNefFqLOxKfIE9WfdkpIT69OKU,3791 -pip/_vendor/requests/packages/chardet/charsetprober.py,sha256=Z48o2KiOj23FNqYH8FqzhH5m1qdm3rI8DcTm2Yqtklg,1902 -pip/_vendor/requests/packages/chardet/codingstatemachine.py,sha256=E85rYhHVMw9xDEJVgiQhp0OnLGr6i2r8_7QOWMKTH08,2318 -pip/_vendor/requests/packages/chardet/compat.py,sha256=5mm6yrHwef1JEG5OxkPJlSq5lkjLVpEGh3iPgFBkpkM,1157 -pip/_vendor/requests/packages/chardet/constants.py,sha256=-UnY8U7EP7z9fTyd09yq35BEkSFEAUAiv9ohd1DW1s4,1335 -pip/_vendor/requests/packages/chardet/cp949prober.py,sha256=FMvdLyB7fejPXRsTbca7LK1P3RUvvssmjUNyaEfz8zY,1782 -pip/_vendor/requests/packages/chardet/escprober.py,sha256=q5TcQKeVq31WxrW7Sv8yjpZkjEoaHO8S92EJZ9hodys,3187 -pip/_vendor/requests/packages/chardet/escsm.py,sha256=7iljEKN8lXTh8JFXPUSwlibMno6R6ksq4evLxbkzfro,7839 -pip/_vendor/requests/packages/chardet/eucjpprober.py,sha256=5IpfSEjAb7h3hcGMd6dkU80O900C2N6xku28rdYFKuc,3678 -pip/_vendor/requests/packages/chardet/euckrfreq.py,sha256=T5saK5mImySG5ygQPtsp6o2uKulouCwYm2ElOyFkJqU,45978 -pip/_vendor/requests/packages/chardet/euckrprober.py,sha256=Wo7dnZ5Erw_nB4H-m5alMiOxOuJUmGHlwCSaGqExDZA,1675 -pip/_vendor/requests/packages/chardet/euctwfreq.py,sha256=G_I0BW9i1w0ONeeUwIYqV7_U09buIHdqh-wNHVaql7I,34872 -pip/_vendor/requests/packages/chardet/euctwprober.py,sha256=upS2P6GuT5ujOxXYw-RJLcT7A4PTuo27KGUKU4UZpIQ,1676 -pip/_vendor/requests/packages/chardet/gb2312freq.py,sha256=M2gFdo_qQ_BslStEchrPW5CrPEZEacC0uyDLw4ok-kY,36011 -pip/_vendor/requests/packages/chardet/gb2312prober.py,sha256=VWnjoRa83Y6V6oczMaxyUr0uy48iCnC2nzk9zfEIRHc,1681 -pip/_vendor/requests/packages/chardet/hebrewprober.py,sha256=8pdoUfsVXf_L4BnJde_BewS6H2yInV5688eu0nFhLHY,13359 -pip/_vendor/requests/packages/chardet/jisfreq.py,sha256=ZcL4R5ekHHbP2KCYGakVMBsiKqZZZAABzhwi-uRkOps,47315 -pip/_vendor/requests/packages/chardet/jpcntx.py,sha256=yftmp0QaF6RJO5SJs8I7LU5AF4rwP23ebeCQL4BM1OY,19348 -pip/_vendor/requests/packages/chardet/langbulgarianmodel.py,sha256=ZyPsA796MSVhYdfWhMCgKWckupAKAnKqWcE3Cl3ej6o,12784 -pip/_vendor/requests/packages/chardet/langcyrillicmodel.py,sha256=fkcd5OvogUp-GrNDWAZPgkYsSRCD2omotAEvqjlmLKE,17725 -pip/_vendor/requests/packages/chardet/langgreekmodel.py,sha256=QHMy31CH_ot67UCtmurCEKqKx2WwoaKrw2YCYYBK2Lw,12628 -pip/_vendor/requests/packages/chardet/langhebrewmodel.py,sha256=4ASl5vzKJPng4H278VHKtRYC03TpQpenlHTcsmZH1rE,11318 -pip/_vendor/requests/packages/chardet/langhungarianmodel.py,sha256=SXwuUzh49_cBeMXhshRHdrhlkz0T8_pZWV_pdqBKNFk,12536 -pip/_vendor/requests/packages/chardet/langthaimodel.py,sha256=-k7djh3dGKngAGnt3WfuoJN7acDcWcmHAPojhaUd7q4,11275 -pip/_vendor/requests/packages/chardet/latin1prober.py,sha256=238JHOxH8aRudJY2NmeSv5s7i0Qe3GuklIU3HlYybvg,5232 -pip/_vendor/requests/packages/chardet/mbcharsetprober.py,sha256=9rOCjDVsmSMp6e7q2syqak22j7lrbUZhJhMee2gbVL0,3268 -pip/_vendor/requests/packages/chardet/mbcsgroupprober.py,sha256=SHRzNPLpDXfMJLA8phCHVU0WgqbgDCNxDQMolGX_7yk,1967 -pip/_vendor/requests/packages/chardet/mbcssm.py,sha256=IKwJXyxu34n6NojmxVxC60MLFtJKm-hIfxaFEnb3uBA,19590 -pip/_vendor/requests/packages/chardet/sbcharsetprober.py,sha256=Xq0lODqJnDgxglBiQI4BqTFiPbn63-0a5XNA5-hVu7U,4793 -pip/_vendor/requests/packages/chardet/sbcsgroupprober.py,sha256=8hLyH8RAG-aohBo7o_KciWVgRo42ZE_zEtuNG1JMRYI,3291 -pip/_vendor/requests/packages/chardet/sjisprober.py,sha256=UYOmiMDzttYIkSDoOB08UEagivJpUXz4tuWiWzTiOr8,3764 -pip/_vendor/requests/packages/chardet/universaldetector.py,sha256=h-E2x6XSCzlNjycYWG0Fe4Cf1SGdaIzUNu2HCphpMZA,6840 -pip/_vendor/requests/packages/chardet/utf8prober.py,sha256=7tdNZGrJY7jZUBD483GGMkiP0Tx8Fp-cGvWHoAsilHg,2652 -pip/_vendor/requests/packages/urllib3/__init__.py,sha256=EF9pbHgMzqQek2Y6EZ82A8B6wETFeW7bK0K-HoZ3Ffo,2852 -pip/_vendor/requests/packages/urllib3/_collections.py,sha256=RP-cHyTx4AgYwvoETK8q1IVRbWFJnE0VV692ZHSbU68,10553 -pip/_vendor/requests/packages/urllib3/connection.py,sha256=QCmkelYgtbc06DfJtgs22na78kRTLCTbLb-OSWLbt-A,11617 -pip/_vendor/requests/packages/urllib3/connectionpool.py,sha256=fls19n1Y4jnwOBsZz_9F01i08xH2gZXEIyyDmWd-mKU,33591 -pip/_vendor/requests/packages/urllib3/exceptions.py,sha256=zGjhZCR1wefEnCN5b7WouQ3UhXesJ2bRKYIeWusaFJs,5599 -pip/_vendor/requests/packages/urllib3/fields.py,sha256=WUMvCLvnw7XemBq6AmCgNPJwyIJL_vWaMHaA2FLlscM,5931 -pip/_vendor/requests/packages/urllib3/filepost.py,sha256=NvLlFsdt8ih_Q4S2ekQF3CJG0nOXs32YI-G04_AdT2g,2320 -pip/_vendor/requests/packages/urllib3/poolmanager.py,sha256=9Uf0fUk0aR_s1auXgwceoN2gbaIQ08lrum_cGEA9-_U,13092 -pip/_vendor/requests/packages/urllib3/request.py,sha256=jET7OvA3FSjxABBRGhCyMdPvM9XuJA6df9gRhkJiJiY,5988 -pip/_vendor/requests/packages/urllib3/response.py,sha256=wxJSV_6pyh6Cgx7XFVGpNhpZCbh4eL7lCSFaU4ixXXc,18615 -pip/_vendor/requests/packages/urllib3/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/requests/packages/urllib3/contrib/appengine.py,sha256=NdN_xOgDLMadUPe_dN3wdan_DH9-fxVNqFgq19tbqQs,7937 -pip/_vendor/requests/packages/urllib3/contrib/ntlmpool.py,sha256=r-vMDMXAGbix9a7-IhbKVTATmAst-5g4hKYOLf8Kd5M,4531 -pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py,sha256=JsdAh0gL4XvQzhOEBRoFtJN91qLf1LFIDEFZs95445I,11778 -pip/_vendor/requests/packages/urllib3/contrib/socks.py,sha256=uPHtE6R8uyUbD9R8l2wO80c87WDGZ9rou3kNOwV74eA,5668 -pip/_vendor/requests/packages/urllib3/packages/__init__.py,sha256=nlChrGzkjCkmhCX9HrF_qHPUgosfsPQkVIJxiiLhk9g,109 -pip/_vendor/requests/packages/urllib3/packages/ordered_dict.py,sha256=VQaPONfhVMsb8B63Xg7ZOydJqIE_jzeMhVN3Pec6ogw,8935 -pip/_vendor/requests/packages/urllib3/packages/six.py,sha256=A6hdJZVjI3t_geebZ9BzUvwRrIXo0lfwzQlM2LcKyas,30098 -pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py,sha256=cOWMIn1orgJoA35p6pSzO_-Dc6iOX9Dhl6D2sL9b_2o,460 -pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py,sha256=fK28k37hL7-D79v9iM2fHgNK9Q1Pw0M7qVRL4rkfFjQ,3778 -pip/_vendor/requests/packages/urllib3/util/__init__.py,sha256=n2QE9_0Bb6u8tf7LUc4qKe8V-Hz9G8lEOc9j_30Q8d0,892 -pip/_vendor/requests/packages/urllib3/util/connection.py,sha256=7B5Mmepg5Xd399VKE__VHxD2ObapYFrB3mWJ_EnIebs,4744 -pip/_vendor/requests/packages/urllib3/util/request.py,sha256=ZMDewRK-mjlK72szGIIjzYnLIn-zPP0WgJUMjKeZ6Tg,2128 -pip/_vendor/requests/packages/urllib3/util/response.py,sha256=1UFd5TIp9MyBp4xgnZoyQZscZVPPr0tWRaXNR5w_vds,2165 -pip/_vendor/requests/packages/urllib3/util/retry.py,sha256=5eA3GHR_L14qz66NU6gr-v5VbKYsvdEqOvCcsx1oLKo,10664 -pip/_vendor/requests/packages/urllib3/util/ssl_.py,sha256=7xR_jvQLTQA1U006wJ1bl2KuLGnD1qQvUcFM2uysedw,11622 -pip/_vendor/requests/packages/urllib3/util/timeout.py,sha256=ioAIYptFyBG7eU_r8_ZmO45hpj1dJE6WCvrGR9dNFjs,9596 -pip/_vendor/requests/packages/urllib3/util/url.py,sha256=EcX4ZfmgKWcqM4sY9FlC-yN4y_snuURPV0TpUPHNjnc,5879 +pip/_vendor/requests/utils.py,sha256=sPEkSVLXnGlfobbJMnx5E9Vc4kfv6TpFWpHKFB8wO8U,27652 +pip/_vendor/urllib3/__init__.py,sha256=EfUPF9RHveaF9g5dcK5kBsGDp5LrIB-396MpK2RQk1I,2853 +pip/_vendor/urllib3/_collections.py,sha256=b0-x45LBArs96Rum5xGAbPsriwfB3MZVQbsv7lFiUwE,10204 +pip/_vendor/urllib3/connection.py,sha256=4GKR8uXHz6IpztYhtuhKBqXj84HbbFUF3CvwymGfLD0,13003 +pip/_vendor/urllib3/connectionpool.py,sha256=5ub8CXnKs1wc2X-MyuVVPo3_9scWLghSgbHOJTpQXuE,35358 +pip/_vendor/urllib3/exceptions.py,sha256=dz1gBEgtROnLrW8V911KhVZWeAn3H2OhDGztWNXQpr0,6603 +pip/_vendor/urllib3/fields.py,sha256=YrNRM8RBUmM8guXKUQFa3kwj6XvQZ78Z8inE6l-YK-E,5943 +pip/_vendor/urllib3/filepost.py,sha256=NF6Rly66bilWU-sdULXjCdQgN1uRxfFRedeifcRLzkU,2321 +pip/_vendor/urllib3/poolmanager.py,sha256=-51BAPlD0MgECYduHhfbZCEiZoU_NDFOKYlhSjiff2Q,16345 +pip/_vendor/urllib3/request.py,sha256=wrt2D0SWLLgTRKrRnaZophq2xXpCvNRd7RMT6F5o5hY,5946 +pip/_vendor/urllib3/response.py,sha256=7mGUH35L2IPuZVOY7QvDQ1GSSKIf6V6geJXThdjmQD4,22903 +pip/_vendor/urllib3/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/urllib3/contrib/appengine.py,sha256=41l3arTy-kBBpOdVpSPYVC64Qo7RLnXnDED6hcIthA0,10865 +pip/_vendor/urllib3/contrib/ntlmpool.py,sha256=Q9-rO5Rh2-IqyEd4ZicpTDfMnOlf0IPPCkjhChBCjV4,4478 +pip/_vendor/urllib3/contrib/pyopenssl.py,sha256=BxJ1yMPE62duuHJP6jlZxLz_FNTKbWI0b-nVRKlBDgI,15354 +pip/_vendor/urllib3/contrib/securetransport.py,sha256=ZRPz6Q1tnsu9H1BOAQVUSHIyowWmfaBb7pGlbG5iOPk,30501 +pip/_vendor/urllib3/contrib/socks.py,sha256=zPYUKMg_c0n9HFjZPG9nGN2kjpaH7qUCZxrD5B7G0_I,6195 +pip/_vendor/urllib3/contrib/_securetransport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/urllib3/contrib/_securetransport/bindings.py,sha256=x2kLSh-ASZKsun0FxtraBuLVe3oHuth4YW6yZ5Vof-w,17560 +pip/_vendor/urllib3/contrib/_securetransport/low_level.py,sha256=UbhUykEH6HUIJud9_rn_6YWjionk5iq_rq6YrhVM6Co,12062 +pip/_vendor/urllib3/packages/__init__.py,sha256=nlChrGzkjCkmhCX9HrF_qHPUgosfsPQkVIJxiiLhk9g,109 +pip/_vendor/urllib3/packages/ordered_dict.py,sha256=VQaPONfhVMsb8B63Xg7ZOydJqIE_jzeMhVN3Pec6ogw,8935 +pip/_vendor/urllib3/packages/six.py,sha256=A6hdJZVjI3t_geebZ9BzUvwRrIXo0lfwzQlM2LcKyas,30098 +pip/_vendor/urllib3/packages/backports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/urllib3/packages/backports/makefile.py,sha256=r1IADol_pBBq2Y1ub4CPyuS2hXuShK47nfFngZRcRhI,1461 +pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py,sha256=WBVbxQBojNAxfZwNavkox3BgJiMA9BJmm-_fwd0jD_o,688 +pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.py,sha256=lAj7qGCZLOldhn8gZDY6Tqp4mvgkbTfy4k4gDIDRo8g,5702 +pip/_vendor/urllib3/util/__init__.py,sha256=6Ran4oAVIy40Cu_oEPWnNV9bwF5rXx6G1DUZ7oehjPY,1044 +pip/_vendor/urllib3/util/connection.py,sha256=_6_5JZJF3HHRXR7HaxHg3mk7qMKK3N0nl3DL8gFAfo4,4237 +pip/_vendor/urllib3/util/request.py,sha256=H5_lrHvtwl2U2BbT1UYN9HpruNc1gsNFlz2njQmhPrQ,3705 +pip/_vendor/urllib3/util/response.py,sha256=SSNL888W-MQ8t3HAi44kNGgF682p6H__ytEXzBYxV_M,2343 +pip/_vendor/urllib3/util/retry.py,sha256=p4LHm-OVaNdNyZ-hoAodTIoxNocAuuegT36Hx_Gcwkg,14601 +pip/_vendor/urllib3/util/selectors.py,sha256=PIINzwjiD5Z6IyTKA1tR5n1kCOXyThpDCE2fCVFzLeM,21147 +pip/_vendor/urllib3/util/ssl_.py,sha256=YpciM0mN_rd27wchLENSxTNa7PWEgZ2MP9ateFurCeo,12208 +pip/_vendor/urllib3/util/timeout.py,sha256=7lHNrgL5YH2cI1j-yZnzV_J8jBlRVdmFhQaNyM1_2b8,9757 +pip/_vendor/urllib3/util/url.py,sha256=qCY_HHUXvo05wAsEERALgExtlgxLnAHSQ7ce1b-g3SM,6487 +pip/_vendor/urllib3/util/wait.py,sha256=Q_pd_bD6iaPgRKwEmcjTYDrSPj4Dd4ojykmqA398b8o,1451 pip/_vendor/webencodings/__init__.py,sha256=t7rAQQxXwalY-ak9hTl73qHjhia9UH-sL-e00qQrBpo,10576 pip/_vendor/webencodings/labels.py,sha256=4AO_KxTddqGtrL9ns7kAPjb0CcN6xsCIxbK37HY9r3E,8979 pip/_vendor/webencodings/mklabels.py,sha256=GYIeywnpaLnP0GSic8LFWgd0UVvO_l1Nc6YoF-87R_4,1305 @@ -246,17 +272,17 @@ pip/vcs/bazaar.py,sha256=tYTwc4b4off8mr0O2o8SiGejqBDJxcbDBMSMd9-ISYc,3803 pip/vcs/git.py,sha256=5LfWryi78A-2ULjEZJvCTarJ_3l8venwXASlwm8hiug,11197 pip/vcs/mercurial.py,sha256=xG6rDiwHCRytJEs23SIHBXl_SwQo2jkkdD_6rVVP5h4,3472 pip/vcs/subversion.py,sha256=GAuX2Sk7IZvJyEzENKcVld_wGBrQ3fpXDlXjapZEYdI,9350 -pip-9.0.1.dist-info/DESCRIPTION.rst,sha256=Va8Wj1XBpTbVQ2Z41mZRJdALEeziiS_ZewWn1H2ecY4,1287 -pip-9.0.1.dist-info/METADATA,sha256=mvs_tLoKAbECXY_6QHiVWQsagSL-1UjolQTpScT8JSk,2529 -pip-9.0.1.dist-info/RECORD,, -pip-9.0.1.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110 -pip-9.0.1.dist-info/entry_points.txt,sha256=GWc-Wb9WUKZ1EuVWNz-G0l3BeIpbNJLx0OJbZ61AAV0,68 -pip-9.0.1.dist-info/metadata.json,sha256=aqvkETDy4mHUBob-2Fn5WWlXORi_M2OSfQ2HQCUU_Fk,1565 -pip-9.0.1.dist-info/top_level.txt,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pip-9.0.3.dist-info/DESCRIPTION.rst,sha256=Va8Wj1XBpTbVQ2Z41mZRJdALEeziiS_ZewWn1H2ecY4,1287 +pip-9.0.3.dist-info/METADATA,sha256=kM2zXDoIPiZ2qojfkaDC7aKqTFwuwgMRVJ7FYUtAAVk,2553 +pip-9.0.3.dist-info/RECORD,, +pip-9.0.3.dist-info/WHEEL,sha256=kdsN-5OJAZIiHN-iO4Rhl82KyS0bDWf4uBwMbkNafr8,110 +pip-9.0.3.dist-info/entry_points.txt,sha256=Q-fR2tcp9DRdeXoGn1wR67Xecy32o5EyQEnzDghwqqk,68 +pip-9.0.3.dist-info/metadata.json,sha256=4Lmrui3knL0bgoxl18scys1UztOfugUfCzARcpKW4zA,1565 +pip-9.0.3.dist-info/top_level.txt,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 ../../../bin/pip,sha256=pjq8iYLQXdYySv6NPNpVnpraioM1_yy3qXr3UqTUPbc,230 ../../../bin/pip3,sha256=pjq8iYLQXdYySv6NPNpVnpraioM1_yy3qXr3UqTUPbc,230 ../../../bin/pip3.6,sha256=pjq8iYLQXdYySv6NPNpVnpraioM1_yy3qXr3UqTUPbc,230 -pip-9.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pip-9.0.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 pip/__pycache__/wheel.cpython-36.pyc,, pip/__pycache__/status_codes.cpython-36.pyc,, pip/__pycache__/pep425tags.cpython-36.pyc,, @@ -326,12 +352,50 @@ pip/_vendor/webencodings/__pycache__/tests.cpython-36.pyc,, pip/_vendor/webencodings/__pycache__/mklabels.cpython-36.pyc,, pip/_vendor/webencodings/__pycache__/labels.cpython-36.pyc,, pip/_vendor/webencodings/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/urllib3/__pycache__/response.cpython-36.pyc,, +pip/_vendor/urllib3/__pycache__/request.cpython-36.pyc,, +pip/_vendor/urllib3/__pycache__/poolmanager.cpython-36.pyc,, +pip/_vendor/urllib3/__pycache__/filepost.cpython-36.pyc,, +pip/_vendor/urllib3/__pycache__/fields.cpython-36.pyc,, +pip/_vendor/urllib3/__pycache__/exceptions.cpython-36.pyc,, +pip/_vendor/urllib3/__pycache__/connectionpool.cpython-36.pyc,, +pip/_vendor/urllib3/__pycache__/connection.cpython-36.pyc,, +pip/_vendor/urllib3/__pycache__/_collections.cpython-36.pyc,, +pip/_vendor/urllib3/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/urllib3/util/__pycache__/wait.cpython-36.pyc,, +pip/_vendor/urllib3/util/__pycache__/url.cpython-36.pyc,, +pip/_vendor/urllib3/util/__pycache__/timeout.cpython-36.pyc,, +pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-36.pyc,, +pip/_vendor/urllib3/util/__pycache__/selectors.cpython-36.pyc,, +pip/_vendor/urllib3/util/__pycache__/retry.cpython-36.pyc,, +pip/_vendor/urllib3/util/__pycache__/response.cpython-36.pyc,, +pip/_vendor/urllib3/util/__pycache__/request.cpython-36.pyc,, +pip/_vendor/urllib3/util/__pycache__/connection.cpython-36.pyc,, +pip/_vendor/urllib3/util/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/urllib3/packages/__pycache__/six.cpython-36.pyc,, +pip/_vendor/urllib3/packages/__pycache__/ordered_dict.cpython-36.pyc,, +pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-36.pyc,, +pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-36.pyc,, +pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-36.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-36.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-36.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-36.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-36.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-36.pyc,, +pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-36.pyc,, +pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-36.pyc,, pip/_vendor/requests/__pycache__/utils.cpython-36.pyc,, pip/_vendor/requests/__pycache__/structures.cpython-36.pyc,, pip/_vendor/requests/__pycache__/status_codes.cpython-36.pyc,, pip/_vendor/requests/__pycache__/sessions.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/packages.cpython-36.pyc,, pip/_vendor/requests/__pycache__/models.cpython-36.pyc,, pip/_vendor/requests/__pycache__/hooks.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/help.cpython-36.pyc,, pip/_vendor/requests/__pycache__/exceptions.cpython-36.pyc,, pip/_vendor/requests/__pycache__/cookies.cpython-36.pyc,, pip/_vendor/requests/__pycache__/compat.cpython-36.pyc,, @@ -339,74 +403,9 @@ pip/_vendor/requests/__pycache__/certs.cpython-36.pyc,, pip/_vendor/requests/__pycache__/auth.cpython-36.pyc,, pip/_vendor/requests/__pycache__/api.cpython-36.pyc,, pip/_vendor/requests/__pycache__/adapters.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/_internal_utils.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/__version__.cpython-36.pyc,, pip/_vendor/requests/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/requests/packages/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/response.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/request.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/poolmanager.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/filepost.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/fields.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/exceptions.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/connectionpool.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/connection.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/_collections.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/url.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/timeout.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/ssl_.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/retry.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/response.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/request.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/connection.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/packages/__pycache__/six.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/packages/__pycache__/ordered_dict.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/packages/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/contrib/__pycache__/socks.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/contrib/__pycache__/pyopenssl.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/contrib/__pycache__/ntlmpool.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/contrib/__pycache__/appengine.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/contrib/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/utf8prober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/universaldetector.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/sjisprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/sbcsgroupprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/sbcharsetprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/mbcssm.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/mbcsgroupprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/mbcharsetprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/latin1prober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/langthaimodel.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/langhungarianmodel.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/langhebrewmodel.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/langgreekmodel.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/langcyrillicmodel.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/langbulgarianmodel.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/jpcntx.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/jisfreq.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/hebrewprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/gb2312prober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/gb2312freq.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/euctwprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/euctwfreq.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/euckrprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/euckrfreq.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/eucjpprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/escsm.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/escprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/cp949prober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/constants.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/compat.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/codingstatemachine.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/charsetprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/charsetgroupprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/chardistribution.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/chardetect.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/big5prober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/big5freq.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/__init__.cpython-36.pyc,, pip/_vendor/progress/__pycache__/spinner.cpython-36.pyc,, pip/_vendor/progress/__pycache__/helpers.cpython-36.pyc,, pip/_vendor/progress/__pycache__/counter.cpython-36.pyc,, @@ -428,6 +427,14 @@ pip/_vendor/lockfile/__pycache__/pidlockfile.cpython-36.pyc,, pip/_vendor/lockfile/__pycache__/mkdirlockfile.cpython-36.pyc,, pip/_vendor/lockfile/__pycache__/linklockfile.cpython-36.pyc,, pip/_vendor/lockfile/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/idna/__pycache__/uts46data.cpython-36.pyc,, +pip/_vendor/idna/__pycache__/package_data.cpython-36.pyc,, +pip/_vendor/idna/__pycache__/intranges.cpython-36.pyc,, +pip/_vendor/idna/__pycache__/idnadata.cpython-36.pyc,, +pip/_vendor/idna/__pycache__/core.cpython-36.pyc,, +pip/_vendor/idna/__pycache__/compat.cpython-36.pyc,, +pip/_vendor/idna/__pycache__/codec.cpython-36.pyc,, +pip/_vendor/idna/__pycache__/__init__.cpython-36.pyc,, pip/_vendor/html5lib/__pycache__/serializer.cpython-36.pyc,, pip/_vendor/html5lib/__pycache__/html5parser.cpython-36.pyc,, pip/_vendor/html5lib/__pycache__/constants.cpython-36.pyc,, @@ -486,6 +493,50 @@ pip/_vendor/colorama/__pycache__/initialise.cpython-36.pyc,, pip/_vendor/colorama/__pycache__/ansitowin32.cpython-36.pyc,, pip/_vendor/colorama/__pycache__/ansi.cpython-36.pyc,, pip/_vendor/colorama/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/version.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/utf8prober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/universaldetector.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/sjisprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/mbcssm.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/latin1prober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/langthaimodel.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/langcyrillicmodel.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/jpcntx.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/jisfreq.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/hebrewprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/gb2312prober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/gb2312freq.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/euctwprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/euctwfreq.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/euckrprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/euckrfreq.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/eucjpprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/escsm.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/escprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/enums.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/cp949prober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/compat.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/charsetprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/chardistribution.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/big5prober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/big5freq.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-36.pyc,, +pip/_vendor/chardet/cli/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/certifi/__pycache__/core.cpython-36.pyc,, +pip/_vendor/certifi/__pycache__/__main__.cpython-36.pyc,, +pip/_vendor/certifi/__pycache__/__init__.cpython-36.pyc,, pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-36.pyc,, pip/_vendor/cachecontrol/__pycache__/serialize.cpython-36.pyc,, pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-36.pyc,, diff --git a/lib/python3.6/site-packages/pip-9.0.1.dist-info/WHEEL b/lib/python3.6/site-packages/pip-9.0.3.dist-info/WHEEL similarity index 70% rename from lib/python3.6/site-packages/pip-9.0.1.dist-info/WHEEL rename to lib/python3.6/site-packages/pip-9.0.3.dist-info/WHEEL index 8b6dd1b..7332a41 100644 --- a/lib/python3.6/site-packages/pip-9.0.1.dist-info/WHEEL +++ b/lib/python3.6/site-packages/pip-9.0.3.dist-info/WHEEL @@ -1,5 +1,5 @@ Wheel-Version: 1.0 -Generator: bdist_wheel (0.29.0) +Generator: bdist_wheel (0.30.0) Root-Is-Purelib: true Tag: py2-none-any Tag: py3-none-any diff --git a/lib/python3.6/site-packages/pip-9.0.1.dist-info/entry_points.txt b/lib/python3.6/site-packages/pip-9.0.3.dist-info/entry_points.txt similarity index 73% rename from lib/python3.6/site-packages/pip-9.0.1.dist-info/entry_points.txt rename to lib/python3.6/site-packages/pip-9.0.3.dist-info/entry_points.txt index c02a8d5..879fd89 100644 --- a/lib/python3.6/site-packages/pip-9.0.1.dist-info/entry_points.txt +++ b/lib/python3.6/site-packages/pip-9.0.3.dist-info/entry_points.txt @@ -1,5 +1,5 @@ [console_scripts] pip = pip:main pip3 = pip:main -pip3.5 = pip:main +pip3.6 = pip:main diff --git a/lib/python3.6/site-packages/pip-9.0.1.dist-info/metadata.json b/lib/python3.6/site-packages/pip-9.0.3.dist-info/metadata.json similarity index 85% rename from lib/python3.6/site-packages/pip-9.0.1.dist-info/metadata.json rename to lib/python3.6/site-packages/pip-9.0.3.dist-info/metadata.json index 9eae02c..839baa1 100644 --- a/lib/python3.6/site-packages/pip-9.0.1.dist-info/metadata.json +++ b/lib/python3.6/site-packages/pip-9.0.3.dist-info/metadata.json @@ -1 +1 @@ -{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Topic :: Software Development :: Build Tools", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: Implementation :: PyPy"], "extensions": {"python.commands": {"wrap_console": {"pip": "pip:main", "pip3": "pip:main", "pip3.5": "pip:main"}}, "python.details": {"contacts": [{"email": "python-virtualenv@groups.google.com", "name": "The pip developers", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://pip.pypa.io/"}}, "python.exports": {"console_scripts": {"pip": "pip:main", "pip3": "pip:main", "pip3.5": "pip:main"}}}, "extras": ["testing"], "generator": "bdist_wheel (0.29.0)", "keywords": ["easy_install", "distutils", "setuptools", "egg", "virtualenv"], "license": "MIT", "metadata_version": "2.0", "name": "pip", "requires_python": ">=2.6,!=3.0.*,!=3.1.*,!=3.2.*", "run_requires": [{"extra": "testing", "requires": ["mock", "pretend", "pytest", "scripttest (>=1.3)", "virtualenv (>=1.10)"]}], "summary": "The PyPA recommended tool for installing Python packages.", "test_requires": [{"requires": ["mock", "pretend", "pytest", "scripttest (>=1.3)", "virtualenv (>=1.10)"]}], "version": "9.0.1"} \ No newline at end of file +{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Topic :: Software Development :: Build Tools", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: Implementation :: PyPy"], "extensions": {"python.commands": {"wrap_console": {"pip": "pip:main", "pip3": "pip:main", "pip3.6": "pip:main"}}, "python.details": {"contacts": [{"email": "python-virtualenv@groups.google.com", "name": "The pip developers", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://pip.pypa.io/"}}, "python.exports": {"console_scripts": {"pip": "pip:main", "pip3": "pip:main", "pip3.6": "pip:main"}}}, "extras": ["testing"], "generator": "bdist_wheel (0.30.0)", "keywords": ["easy_install", "distutils", "setuptools", "egg", "virtualenv"], "license": "MIT", "metadata_version": "2.0", "name": "pip", "requires_python": ">=2.6,!=3.0.*,!=3.1.*,!=3.2.*", "run_requires": [{"extra": "testing", "requires": ["mock", "pretend", "pytest", "scripttest (>=1.3)", "virtualenv (>=1.10)"]}], "summary": "The PyPA recommended tool for installing Python packages.", "test_requires": [{"requires": ["mock", "pretend", "pytest", "scripttest (>=1.3)", "virtualenv (>=1.10)"]}], "version": "9.0.3"} \ No newline at end of file diff --git a/lib/python3.6/site-packages/pip-9.0.1.dist-info/top_level.txt b/lib/python3.6/site-packages/pip-9.0.3.dist-info/top_level.txt similarity index 100% rename from lib/python3.6/site-packages/pip-9.0.1.dist-info/top_level.txt rename to lib/python3.6/site-packages/pip-9.0.3.dist-info/top_level.txt diff --git a/lib/python3.6/site-packages/pip/__init__.py b/lib/python3.6/site-packages/pip/__init__.py index 9c1d8f9..c00b284 100644 --- a/lib/python3.6/site-packages/pip/__init__.py +++ b/lib/python3.6/site-packages/pip/__init__.py @@ -18,9 +18,26 @@ import re # to add socks as yet another dependency for pip, nor do I want to allow-stder # in the DEP-8 tests, so just suppress the warning. pdb tells me this has to # be done before the import of pip.vcs. -from pip._vendor.requests.packages.urllib3.exceptions import DependencyWarning +from pip._vendor.urllib3.exceptions import DependencyWarning warnings.filterwarnings("ignore", category=DependencyWarning) # noqa +# We want to inject the use of SecureTransport as early as possible so that any +# references or sessions or what have you are ensured to have it, however we +# only want to do this in the case that we're running on macOS and the linked +# OpenSSL is too old to handle TLSv1.2 +try: + import ssl +except ImportError: + pass +else: + if (sys.platform == "darwin" and + getattr(ssl, "OPENSSL_VERSION_NUMBER", 0) < 0x1000100f): # OpenSSL 1.0.1 + try: + from pip._vendor.urllib3.contrib import securetransport + except (ImportError, OSError): + pass + else: + securetransport.inject_into_urllib3() from pip.exceptions import InstallationError, CommandError, PipError from pip.utils import get_installed_distributions, get_prog @@ -29,9 +46,7 @@ from pip.vcs import git, mercurial, subversion, bazaar # noqa from pip.baseparser import ConfigOptionParser, UpdatingDefaultsHelpFormatter from pip.commands import get_summaries, get_similar_commands from pip.commands import commands_dict -from pip._vendor.requests.packages.urllib3.exceptions import ( - InsecureRequestWarning, -) +from pip._vendor.urllib3.exceptions import InsecureRequestWarning # assignment for flake8 to be happy @@ -43,7 +58,7 @@ import pip.cmdoptions cmdoptions = pip.cmdoptions # The version as used in the setup.py and the docs conf.py -__version__ = "9.0.1" +__version__ = "9.0.3" logger = logging.getLogger(__name__) diff --git a/lib/python3.6/site-packages/pip/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/__pycache__/__init__.cpython-36.pyc index 3f200de37ce1de6d4db5bedf9449e5abb981ec48..963a1b4ffe282f1f994c9d2ac76fe89fd4430990 100644 GIT binary patch delta 2851 zcmZuzTWlOx8J;t1?{(~5Uv_=ltR0-hnL1uOaok+7XdE|n6`aZ|(lDYLjdzaivFFB_ zSv#%-i*X8-P-vUOT~t*I2=TxRM&j~-5Dy@g3V1^t2?>FO#2X;-KtYKAKfBn$idXZ^ zIsf_Z|9}4R51#q?!uV`gSN84fFO2V373ELLV}Jdy{t!ITuihB9n!B2<*s7};+KYd1nQp3S~}&J#_ykTQl?lstt7$aWU zD9e49d%~+26>roS^~Q`b@1${3(!1Rcc;m*ncgi>=_j&iUcg8s5O&Ak$Ux58toU?n4DVo@<(&>F-%+Ta!&hDVP-T6=j);_!cfnuDui*^a# z7wiFh5Z<%)kUb3Vi}sj3VwWEfWA2t>pRg+r6uUy7-cJ~p=(Ih$rM^zsyO6)jbZ%eS zC!kNQDf-F3U^R3i^42Qn@g~jDs?Y4P$aiz9&XW3l-$cJw%t~mLE zQb7KQ)*Fn*%<`i!VDZ7b}86HS@e{wqZ z!s*Znr&b$|YfsHs-sbA=>@NRxa*W*Ne@&Vf4w-e8je(#bJ772$HCF2ZsPpZprEeUS zo&qrVUMfmUA$_+jS;+k-G3@a3*#Z8$ban2?mxT0% zT>yK6Y=c9YkkM@uOdNOTzLc(IW}cHS5s{5zi^b876L07(HG*uhS~RFq;^<( zQK&&AQq(&qJc@Y3!@G=2sFjSJ0c!~yhA=+c-z%m1lSa__+G`XC_{{$}^HXCKR( zj8~A&Cx!fNp37g(6;W*$LO);5kCJ)r=V!?Ren@wH~(6HdEy?>*&ad;K;{J+ zg*A|ZSz+4_pmiwjzu7){=i=>>cr!F z#UGQG`1R81>Psm92Ero*j&Lk%Y14FkCpJxm9K2Tgn@Y+DdqYXm{0j1Z6+jQ+P$2#g+lov^Ki+Vl!q)NH0YK7BHT^fEp#&F_%)N2^^-m!V{HR^NYxK03fRzIxc13 zK+?C6l&iZ|6nQk>2yFH}q-fx9?9|&N^osou;mC$ujU(-Kfd9Y~;h0LRS~5$rs`iYQ zmL~$5z_V(OZ<;z;)~|@HX|6S5_<))w!|BdG3jmimSYO9_$>zl&EYj@~MzZ^*^F{?* z!Q6&|2aI1G)tiYZaz$>*!w>NyV*wNC5U$}Gw30|ce^_zMjFHErstxA4&gyKn9>4%~ zRvF$!k-Afp(ng=-Z_;`UeH#a6n^kn9JX{hQVn0T$Hj{&-DQ{l}&l|DhMsifQ=3+O- zhJDK3L?|HiAoL>i0krh4LdVPL!WjNf$Z)a>4K*Hq>q|(NBTQc9A=nzyr+U+~VJM+f zA^{@ILC$s5kb&TDLr!5T{0ND7E7&~*9Ivg>aX1r1GFZj1WyRzieNv@G`nng`4VTVi u-J%tMs~XI(_77KCjdUkf0!Wf-mK2BzPcN*~YCo(BWKg0;v^0NfZ1BIwd9b7a delta 2506 zcmZuyOKcoP5Z#`&_rLbq>-BFPXN?n_iQ{z=#|hvN9P$SQC?OmM#ALnQwr4%FGpU)i z69hPtgM<+O2E<3=cR=F8M;0I<4xE4!5(k7dH{iqt1cw|VAyL(9?6AtN=1p~VRrTxY z>Y8tleR*_rDw|Dx8~@IDXip^aTjYjc8_Kiz_!nLtt*r70kJ%X~Yh;}cqr>SmI#~pD zaXaU98C_1d(XGY_9OsR^(_{3gande0y+*IoXY@J!M!z#)3@Cld9(0OE(HSy^)HrQ# zbB2v!XS=aojWakd86_oW?WD6hVvMMPX5V6riqYB*V+Zdrc8X~2Rx!55j9nsDOY=4{ z!rPzM(6W=~u0{-FWFuZ;r{wE#bN{BXuE92R4B3j# z!nEI*tGXDj&i!V*5(OPWxL1xP{DfM(9d^hM5(kHsU)1%2t)*epzACRJ9v*6jzH~E# zMY)(fF}=kjs(8R8t`)LnB$M<&ESngS@J%9_sLz@}e`Bs#YzP(%BOD6zafV_MzGn%D1VY}_F2!N#g zI@8Yz@~6xmHZ8U6G&?D8%O24;HmTz8qtK%SCGyNv8i9*NVprU<$y_5ip1%A74sWG=w>@Dbdsz=97mvL`pi zX65PJxmcbY&dB$3!$|j=TzP;Fw{?-bPgFVt6=nI za6$gFq>cFjcN;<2z5*6fm?2%dN;`chzEYUTucA^f zH1|#{mmw`@3qxb)Q4dcMP$-oaEEfRMP*T7rI4ai)(@v81TPZ2M9`A7go%Y>1*Z8|WPQ5t zFO3bXj}6Ay$ZKT#I)XmfBzpnnFj05GsaAXebMpRTUs{sYs{|S86?=PPBtAoy@s$eH zt@;8Smv0q|ERbImz1at8CdY**@IuwAm$6~gmwb4WycD^uc#5#1{w&SDLm=e*&`hyq z1Ic-C9TST_xE_&T5B+-hLs~=w0q>L0uKFCdI9eMhAz`~y395@Ni2!n&k>R$d?|BR* zJb|sesY-04=B8MNQ53N4yi5_5RSTuKX`+Q`9+MvppId!}%sxd>hv!+gfcHrC0jbhe zyW;zf2o_xqpO7YlgafO(p(0lBIlRjNys1>wsdw(F}MWP*h%)YrfVRSoJcs|%2%=|*7LJ|rou>RD-$h(5eU zkR|9K=p@J?gevSD7M;4^pxPWz*9$Wgar5Kbqk5X^BI-Kzl8OAYRB+}g7N=oyK?L{V ze(@rHK}xDsI8Q(gt$ACokVMxojJb0)Q4Lf!Rp+|dDTIl`j>{XiI6^t~56g=qyrK}tViMd%xmBy8uH?x+D0RVw*2^|0c delta 29 lcmZ2wvC4wYn3tF982d)HrK}t##wCSW=EcUFH?x+D0RVvu2;%?% diff --git a/lib/python3.6/site-packages/pip/__pycache__/baseparser.cpython-36.pyc b/lib/python3.6/site-packages/pip/__pycache__/baseparser.cpython-36.pyc index 467d92195bf0697393a35f96d856cb788205ddf3..d102aa560d5584b83b913443366cb1c282f94d46 100644 GIT binary patch delta 29 lcmdn)vE75sn3tDpA=gH>R%Q-^#N4c;O5@7SlbM$&004z$2}%F} delta 29 lcmdn)vE75sn3tF982d)HR%Q+pfVs2JarE%rv@9bS#0EeLo*Z=?k delta 29 kcmZonZA@h|=H=x&#=ep5B|C?SaYc=>SssNpd?Dx#_a1+`Ypj*ECX*IBE! zF7$G)w-R4)GS}K;YMb2lEuuFvGOgiWIJI4EqZEvJ7Y*2U5fC)EXWHoRH+<~#{ zF!HXJ$@jd^_kDx+<5m5BRqa|sL*1wKOT4|?e^l?f84@8?fr2Ju!widXH8&d(Gb*Ch z>@Z?xT*Rxn#YmV*ku0}a9EFs$>YH+_sETb2V6dc!omB-xaF!G}Ww2NycIm@#(Oq(u zzDFN{o9>oTx}c9@j6Nm<^nLm`G`c4J`T;kGNWp{Fk}8g5y?zWY=Sk5b(z3olo%q*N z_|V1zXP87g2~44bl<=dIJjXP;$P8vMOI{#=9`X`%=p}UoF;8A$0gI%8B`lLBR1||-J#N4c;O5@7SeN3rp0F!+Qj{pDw delta 29 kcmewy_&Jcxn3tF982d)H1||*@T_MmA$!Uao~)8`<8lau_7$W+hb`S8o2rDqjEqt*Z+4 delta 31 ncmbRFhH>T_MmA$!Uan*88`<8la+nyG6lR$h8*l!_DqjEqtw{>I diff --git a/lib/python3.6/site-packages/pip/__pycache__/locations.cpython-36.pyc b/lib/python3.6/site-packages/pip/__pycache__/locations.cpython-36.pyc index a7a7ce5d91f7825488673c5770165e09a21c71bb..bb060a87a83ee83d38272f3cc450171f4622ac2b 100644 GIT binary patch delta 29 lcmbO$H&>3$n3tDpA=gH>oh%#%iMd%xmBy8ukF$hv0RVbQ2*>~c delta 29 lcmbO$H&>3$n3tF982d)Hoh%$C#wCSW=EcUFkF$hv0RVaD2#x>% diff --git a/lib/python3.6/site-packages/pip/__pycache__/pep425tags.cpython-36.pyc b/lib/python3.6/site-packages/pip/__pycache__/pep425tags.cpython-36.pyc index 0c1d1252e9c472847b61fc9d3b63fb82b1af06fb..32ec6ef3b3f78d053ad96b8844b874c75372fe5f 100644 GIT binary patch delta 29 kcmZ2swZe+cn3tDpA=gH>Y9uutRrmn_jnD}0 delta 31 ncmbQfl5zSc0Tn3tDpA=gH>G!_nn#N4c;O5@7SB`l6?0CxEZCjbBd delta 29 kcmdlgx>c0Tn3tF982d)HG!_mMpZDO)LQbsC){c delta 31 ncmbR8k8#RBMmA$!Uan*88`(;^I82O73bV|MjW;)QO)LQbs2U1q diff --git a/lib/python3.6/site-packages/pip/_vendor/__pycache__/ipaddress.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/__pycache__/ipaddress.cpython-36.pyc index 22dc11a3750aa1132e6c4c365edc447ce373ee2f..0462f021e25a28c5538b8c189c0bba399d5abade 100644 GIT binary patch delta 31 ncmdnr#Xhsf$#N4c;O5@7SnT%VQ0B*|&FaQ7m delta 29 kcmbQsF_(kQn3tF982d)HXhsebJSGl<#N4c;O5@7SHB9eh0F5IFvH$=8 delta 29 kcmaE5_sWjVn3tF982d)HJSGkkd5jzeiMd%xmBy8m*D!hj0DHR#%m4rY delta 28 kcmeyu{Dqm#n3tF982d)Hd5jz;#wCSW=EcU7*D!hj0DF@Nk^lez diff --git a/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-36.pyc index 411a6d0e4f066e107a77370a27939048d6ec352f..655708438c0fa64306ee75f5335643421c555b5a 100644 GIT binary patch delta 29 kcmaFL{gj){n3tDpA=gH>E=CT6#N4c;O5@7SGZ=kY0D=t&zW@LL delta 29 kcmaFL{gj){n3tF982d)HE=CR$S|$#I#N4c;O5@7S-AtVv0CF)1TL1t6 delta 29 kcmbOtHbsohn3tF982d)HS|$z?3Puit#N4c;O5@7SZH$_%0Cf5Y5C8xG delta 29 kcmZ3_yPlWLn3tF982d)H3PuhSCU-Cfa~LG%W+hb`S5AJ+7yekKls#N4c;O5@7SbD5f?0e%Vy?EnA( delta 29 kcmbPlGv9{In3tF982d)HekKkR|4bYPiMd%xmBy8ud6~6Y0e(3MI{*Lx delta 29 kcmdlXutR{&n3tF982d)H|4bYv#wCSW=EcUFd6~6Y0e#m90RR91 diff --git a/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-36.pyc index a0daa2915d37b46717e0120ef63cc97351ed1066..179fea6b2275bdb4c965abab8066d8d8b59621f0 100644 GIT binary patch delta 29 kcmZ3cvP^}|n3tDpA=gH>Vnz;w#N4c;O5@7Sjf_hL0C;-{sQ>@~ delta 29 kcmZ3cvP^}|n3tF982d)HVnz-VKt>LO#N4c;O5@7S@r*C{0evJ0J|vX+I-n3tDpA=gH>V~iXIiMd%xmBy8muP{ae0B_a^p#T5? delta 28 kcmZ3>vX+I-n3tF982d)HV~iXo#wCSW=EcU7uP{ae0B^1cX8-^I diff --git a/lib/python3.6/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-36.pyc index fc7fb0b7b449de015bde33001aa52c6535f7a0e2..596f97ff363f5e811e62e648a98ec4e924bcc2f9 100644 GIT binary patch delta 29 kcmX>kdPtPbn3tDpA=gGW8zv5e#N4c;O5@7SUQ87n0Cv>~A^-pY delta 29 kcmX>kdPtPbn3tF982d&x8zv4DbVd$?#N4c;O5@7SrHt&X0E7exWB>pF delta 29 kcmeyv^M{Acn3tF982d)HbVd#ngw)bv(+Rfq~&M5W@izkmUfx#S%awg&~D8has0SiZPcdiiwdSg(-?Tg*li( zljS8NP+F7e7HfG%YEkMf&itH|crdey%gDgcLeIcZ&(Ok8ljRmma(+>25y;dcW*~8k zJ3hWFwWv5VKQBIhB|{M#NCHIsveqxjEzmE>EYM9V&CE&BHAu|ON~$!j1POsLP+wk3 sevy81YEemMTBd${d}dx|NqoFsLFFwDo80`A(wtN~kh6+Gwh1r+0AMmY82|tP literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..65847ac837d9d4287bfd54796d122758f7a59a53 GIT binary patch literal 198 zcmXr!<>gw)bv#Owfq~&M5W@izkmUfx#Zo{bg&~D8has0Sijk2al_{06nV}iTN?{6S z&}4oIlxNUnyv16cky@1Mr^y_}o}5}#l9`rS1Ty0mYe7+FUdc*^A{HPIO#HIeFUc*? zFUTy=O)AaINzpY(%*{%wG_C{*fpL6UYFv9BijmC*aau z`4JrXCHoJ#a^f#=;=Q!ZCd4fH`NesD@ALOQKi%DpeneOCu}{b^a$^MGAHlTmzz7l( zL4}vmm^P~ydvA&GMQ}+(ApMme2cjdomn80po(N&>%AV+-d*+P{WoJcJloH{6AcN@Q zW0Xqc)I<%-W%R8bQFJ<0mgQPhnPf(~$`qElsbs3KF3GaQDP6Ekr)x(~Sejs_VJY)r z^c!H3lN9ZCP;ic5+C4Cm0CW<2g2sLW#INrk%hE_lC&jC(5Sjdxm_ik27vCcW;}l9S zWOB}|Oe>?@l8u`v1}Mi8;+Sa9583-nCRVbs2E>Lfb!Fh3nX6Pb$x5T=O28kd*_m{B zuN-~rbjd1<*;1peJ+SJmkb)VlogFquPX<99a$Y34HToyu`(WWP(R2vD6F&?D2gXEzT z2F-WNE;0*(A+Isu0T@SSbmlpKMZd27;0p+5g$?&kE~4v34LY@_Z5@<}o7O#{41&k& zO;m>03uams16tF`^(9OQ73$6ch?V!SB5IS+9nai_wFQNnEvS9?Kv04@Z{<+}(8wCh z)vbMT+~|1|(u$!f1&C`chExlQ z4X;2X|HL-}m&q;l7AngC))o{5vnPj-pAS(Li?v{ZPxP7|HJsewu8~4RV86Y^Lm= (3, 0) and not isinstance(aBuf, bytes))): - raise ValueError('Expected a bytes object, not a unicode object') +def detect(byte_str): + """ + Detect the encoding of the given byte string. - from . import universaldetector - u = universaldetector.UniversalDetector() - u.reset() - u.feed(aBuf) - u.close() - return u.result + :param byte_str: The byte sequence to examine. + :type byte_str: ``bytes`` or ``bytearray`` + """ + if not isinstance(byte_str, bytearray): + if not isinstance(byte_str, bytes): + raise TypeError('Expected object of type bytes or bytearray, got: ' + '{0}'.format(type(byte_str))) + else: + byte_str = bytearray(byte_str) + detector = UniversalDetector() + detector.feed(byte_str) + return detector.close() diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d1596a4c3c3419316f137e47456816e2d242de04 GIT binary patch literal 794 zcmYjPO^?$s5ViB&z@iooaP*N%Y+KPipn?z*RD#Qb*aeAPk~DU^sp2>|F4`>Zh4M!b zCw>Y4!B>X6*M~Ug8-a9fjY*pV3_pptjQ9pu25yb`KIKteD zENptKu(=aCZEY7W_acw`kq^B?-LEJLsCS0?{%;KQzNPIqA0C=C?ql71SLUCXtkdEJ zQ!GYrOPLj}cVC7J)U&6F?W_=W!3ZleLGyA!#Juen;I<^Q zMln(=2?v9)rA(?+ro26f;b3B9$T174KicunFODI}z2c6oG48Ns3APb=;l%#8*FxsdUY0X|sJ);pk;exIT Q_Vf;PwZV4rP29Er0!uC1fB*mh literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2fa6d95f9ec2d43fd873a94269cbd7236569673c GIT binary patch literal 54681 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 K@^`5F`M&`Oc>Jya literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..90fc62312e10db4ba3be7bf5cdfabb87f78e6363 GIT binary patch literal 6266 zcmcIoOLH5?5#A@T0AJukBq+%e^oT7a*27X{Cyrx@q9}>B1S%j^vG8FWtYM*R+3W9hZgvO|;n-Qn7ZJ5n2UM|JJ4 zCK4j~ToXxu?3w8v1Mi3w_>_MP{5bfu=mX!U_zCd+VgUSr;b`e-c7CBad+X7{>|DVsPT|(l_kOXLK8)yCeev~;<)4hP z`~1eX2^-1;3oqVj-85Qo1w?3@nio@8iN2wzsi>u>y{WAvo?)rbV1Zu9C!@me$ z%-GTo{4lRaR^V5cKG)<4nELPO%VBNp@>*r>;^KOxDlT3r)m9cau5D1Hn)hSBE*kPO zl?XqK?;X#-w6+mBo>!??LeINI7Yu@EW30-;90M!Ml zAx!wpYMxdb%9Yev`SSH#x$2iB_>Ei;mO}r|HVrA{O-VI!f+P!)*X42cx&N4)WN#AW z`)EM|M6+PI(LB}DZuRUkalni5k$nY$575~JG*=BdhGW(?^=JB)S+_)D%iJ`DxoXRW zO)Oc#cHRPVJblx|JY!Xp3&KJVvnI7wt2N7N&9a1zZ6}*&mwaF3N;w`#sT}$;_p}l| z&aKuPPwTm=UtbO%ZxfD^xRj?rDuicY`#-qyc9dH7!x&w$OU5{DlteklQqGAis&^ey z4@x6j;c=hOB8#@%!P+1Lq8X0SZ&5gK_k5 z{P2w~Ptr5^=ZxkB>4)pGo+~%%OBLbQ z%YJUL6u_B{dd~j{n6A{9bD|WMl-Kf!UC2b^4`vIq4<0@6Zci;tc?3ZJ-^;qUw-V-GlKT=yfm|Up|^#5 z7nRiltl^zzs@H_?j4)uDS%{&UgFv}!$9vA=Mu^ZC?suX*gP9ey*b=*WwznlaSTE!U z7^do_n(uj0+Vg4+v5vs%A!K?_)=SlRM1GS-yhidW$u~$|Az^rs=SlJ;-y)$M9S5ue zii#z}7`T8I@a1xJEB+bIkdtx-os45k&M2d`FTMc00zP9WzkRGN=>lQmxr01s3JW>Q z`WT_ZC7|tSQq>;a64xG7P&J!U9cm%oj%UV-!SoX%@_1H=bmS$%B&f5KkW!Hytgrb} zGNZ*V;PJ(gg4(1C96Ut@{uY3cUs9e|u9kwp^J3p9k0>8vZs34ufH^Zm^K8!z>?VdC z@a*hjnp$YoCR{VAZ5fEQ24d<3VX~Li#yDb4Y7?5Uvq-NZfyOkOET|WI`)^ph{UZ>C zyX{Ze%aQN^kuFqrcpd#Hy;P9_-d9Ayj&oKU;@N+M7H`OQ5cRS~^IY!@wZkp~%S9}d zOqTL8iE<7VMguM1mHldU$A8KyU0&r(^=NMX30gqsJ9>XYolzM~`=YaW{l92>zj#Dw zl5fBo`5h9qTbn(Vb(n5rEG5}vAZ=qQ-t_K!#ic(-JBXt0h94!0{y=NLO`?-rC&`iQ zN0EGUN80f|@U%ZcI|!d1JNaMWBj4KdB)D-GG<5xQKClfMN)8R0kH71ePwhWYZs7n!s-b9IK z@h)siR5&sbimYy-D2C2=p)badf>VyH0#RIxNroZ?qNp$MQ9Fp90qNJ6*+SHap3%pQ z=J^-w^01KNx%`4pY(t8YLqjTitFnCkNCEW@%!~om$DRs9te9dz4Y2o8K>Z%G_5$im zFS}m?rw^d1C!8L(;Pm!EIElmrv)f*nB?&WpYdEc(mx^;;nBs?kIif5}at*uo4;^x-qh+GLzdWg!7*)A)d`i+=R^`7zK5!=J&1?cb36 ziR3GiuSrgW$eZl_l)YS=sAy>K7G`luRnR=gNnP;yCFH97CO$JLI5YYPzD@gqR11Y? zPxl=br#$XI^Vw~jQgUdVvebX?;gJG$7Iq#Ms1bL5pv3QP_(7x+rER3L%8ik_uf#_t zRVBWyO8l;Qb^Eti92aK{cX67{v8RyKQR2(9JJJ|L?fCW;<{l+ts{{@>__-X(E literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4b161cef3268298bd10a9acada0b3963a1c29b4e GIT binary patch literal 2177 zcmb_d&2Jk;6rb6dU9TNGEg@|KL?T5+;EE=oMgk;gi~1!FxTr~~v;vJB&t$RVugt8g z#B3xaN9u_i2d*5s^xxpXf3P>isVDB7_`TUQ2_@WE`@Mbhv2WhT@4dO+Xw-hL{hItX z&)6UA)FUC^0=f6VG}FA#20Y=M|^U=lG<_i~5&# zwACG^8(BLu7&mTz+qN4fqiJJ1*mV5RY4o^ zp^kLrkj;1!L5_9R%N1SIbB8R6bzL{`u0CawB{kS|u2?ua{JtGc#-#Vqmhuuu6VotR?S@(%i!^xnijC~+nv7ok$%Tzis&Z%;;85Gi){<|d2Lab6^KWOelzcDsua5U^ z4AqxGjs(URc!b~djeiGf^@aT%$}Bw;FmjE8=2~DU0h=)d3&B%jZ#8E3&V#)JawIT54~Oeq@)++0K3zJ)b${Hk-((KaZID|5 zgNMv5fphY#9FYek^#TBdx0=G+R?Md+Q=QRpyQ|HxV~RRu2fnCbdw}xrmY1fU*t>`$ zKA^M6RTf0vQpu-po?+=}b^nLK_Ej8N#DwihJN+*UFJRNhpqDK?3q~(g9oHQ}h{%WY zdkA}b6gWU;co5`)TiA{BpvT?o{tej7_<_iUyNa>ML{IJn_Et`n2{`p4gq>z9n2iC! zKmmpTS*(MP2xKw##9Hid8`Ca)RV}~TjUQ9O@O@LZ?s?34_%&-DV)hkSR>*B*v?bsd z@x2F+T6fgvn`L4{M-8rsS`RkW7k520i%9v&ru1n|;;sG6V9MGBD6mV!e3nmAeGzk? zf!q}^=3yBCmI1E;pv0*Ri3rl7<_H;$ z1V(RZ;8lx*z}KPN`x?7Lq~f6u`HkK6T=XLM6=o|4qr|8>3pn%hwHZ5*M=K$%faY>J zlc@{N47EWa`>W|XY*do+sYm!>3FOPFeIBtez z5mI`Rs_)5kh|gIfz4%hns6-xt+*L5<6C{xuiC@`SD23;dzL;MG(OLvPy?jRM{@EU= zam>-pLEQm2M@^~0NKg7C*Ol6xwEN|XZ{xnP6*1Z#E}d+@^ov}w1go-=8%I}2$MpM3 zoxl&R$9GBJAgLNxK#uxo%;%$etsd9oc+q#?Rx?aOgS*T5LP#1%J*RB9mTm*T??ibi Uk?JD;q;%lMGU=y->bx%g1~anL=>Px# literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c171f8c8a402ef6fc39ce11c4e9b901b0f635607 GIT binary patch literal 3403 zcmai1TW=f36`s9{qAA&tV<&OccF-Vb*hF#)0|9EdiXGWa92ja~sR%&BT`hNpO!WK?q51f``vCo-sh4+F9Pr9d0%M;ci zYx*y-iygeQ&^E22@s-NjaoRo9p_UPSnimIyo2Yq;Ml!HwEn8SEM_dw)a9>z0Fchhd8FD@8b1LHTumKkqgd{Mk<#+$;1 zl9!8({a&aJr6%>H>UK=|*QW=O4Q;4UPjw$P-$oSBdL`zkyC0Vx%2NdgFsqbM7S}h3Da3F)A@ad~mO}lV&nRJv7L4RVZ zf$qOIuj;|@>M$Pev`29wc0LXV{r33Um`J7uPh=`Gbv1%1LTc0JQV)$uyTdWbiPKmI z!OzGD;>|1{zmv;L*6+@jMRaIXsIQDCWi;!PvG&|pN73=M)^FcAy0d?D_uzBoVcxXV zIdn$-vf042@RWpFA7Pjq?^-7pm*t!9OTtM3<9Q0knNY*=H6j}10|+sGy;@1KPp&LW zI=gJ?s9!J8HZ~Pbd(?T=Ft;P6xK>HCPPUe%(dX4>(OFDbe-=8{4|>l8)hCq{`&I9m z@2kZa?-45PgDx1D@nK%LLZ z*OCj_iBrjSPf4`nq0D*K;bdQay;>J0!(P~y`Z||sH;MBepHp)FAlx~*wbOc7Esj&< zoix;OmWIi7zBJ_ofH1-WZ2ar(FVqVmy5g0{FxNbTUteSWF24mPq+Z+|WuqMW zJswfW8}HBbsMv){awUgJ7)gPnA#>oJMDlzH5)bnzju)QYtyddMJIqDE!{IO?7r+iO zAdgf$)H#3Ji=!SF8Ba6KM{xI@*$FRBYPaH-zmG7TANbE7Jm2~L;fIUq?3{@D>4BnD zYq0fPUBd9?_bBQLMoq6+r}zq$3dia)D8(9LP(Z7~m(MgVm0~TRRgw{2Y*`ucGzJ40}ud56s@rATfUv4Lk39xQ^_)wdFUgEz7kw?UN5yLU;w6 z3dfX7D;)nBlM=_mn%csiI?uk(m046>!NWK&)`yVg|k5!~zSJX?<_NJU8;&Uz93KN-$H!%?D@k}lkRtVgf(Setx3kcxn9Y*} z4^zP@Z<@Tah}0Q?D7-29kYJulnerQZXO=92?^cp$fI+FiJWBt+hz4WN0ZX=l1OhfpPM0VU&!GR6VrTZj91@1C*sBV;no zk$OtCG<<9v4OkNHD}Kkv_mE!GUzCr>TVQX`An?YKdWXn_!vjF-UG#Vr z;gyIRFOjMGF@60Jnxaw6BJ@>QE{@Ru_my4+e$5 zBTP|xC>r##iKBtUjUv?BL?9;(SMHQTl8Ud?H^v+6b8H!I-d uHCj!X5C1LF(I7Xk*}~7-eHm%9=nQKk$vk9hH%cq_=%~zlx@OhvhVwtw9&6tK literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6859159406450a37944e8291105b9759724e33b5 GIT binary patch literal 2834 zcma)8O^@3|7#`dC@Mg22v=q7mq~U@Z(Pk_4P^m)D(iSdsLAwD+x6w%^y^KXn`ZCD8nIHKc`+>=ZY`$Z%seU%| zMDbCfF*X<4rpY1`nq$-f5BT?mc3=u1)h;_xTq*=-u}iB&r6dnEmzm=bO2HWKM`3f zIaE@7UcjHe6A{#C5Un(y2*Za;fexv1n~qW?2bE{fpVe+H{mNyUAWz6W@J>8!M!rUX z-HpV#?4AQaoMx^Pm`sQt!XvkgvXmp3mCB^!9Ade&bJ7TV6$%W~>b&3uFf_t6CPkX8 zl9Ruhq)5sH3M55t1w^w%G`V;gu1h*ecT2 zkWcH{b|k6SNwz?e5wlm}>Ro)Kiy5h4kSrP&P={^^!l7dFf!mt+IQi(JJGCch<{r8; z?~KJbanXCO_a(z~U>nn>ZJpD2`;1M)bLQb>#?j{=YIor7l&yG%BFM^KoGi4CN&FZJ z*6);hai;Qex0-jUUAD7gJjTIU?u?cF5zk7OVI1dTrsBA4(JV%qsBvZce%UZ88Ie}Jo-a=-9z^+nsG9DZ*FZd?-*I>NMB3>cREh+0F9vHKJ?sYZ+*OZ)}IEy z`ud*4TikH-0p@))7B^{y8*A*dk1+ZPdmFg-Cgy1!^5Kj%*t8*A4-lq9ps#NGFxpKr zVN7i4)8UdK>eXUbgHg9yF~W&h=xEomzg$lt_FKA%o1?^Wq;Jq`i@G+=Hyll+mqZQxSI)v>&RoOa2MgFhxpkp4eod#&r2Tg-3Svf;-n!#YbpNM%=tWrL~)DMegv z&#dy6gLnTZDt6*!5gcD|>#KirYs>sy%Nufjr%|Jy&k4>x{Ux#Djvyc+4SzpHn# zw(P`o@+>ksF}iX5av`$i`O%JJStN0+Nq<*X`X)VnOx-Qo8_snxSK6LB(-+ccl}nmx z>kBkPr5fIBcwra@VGk{EbN!~?!A#Ut`C?|O8gCWDDgKwa`E8(O_;uy-H=hwQnF#%E F@DD0E_GJJ7 literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/compat.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/compat.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2bb9513fd403ff8fdad27c41aba4e461cac475fd GIT binary patch literal 310 zcmYj}Jx;_h5QY7dY_frE5aJA^Sb|7}gb)=aLV^Z2Q4-IJEQxK|&I%ugl9O-;w^Vxt zD(t0UM)S?nd(x{{tKy^hVj@B48~qy^^j$a;!4bzJVhGR{^Yjhrb50rI38Roex*==< zDa*uZa7aifB*p>nYgE$Cq%Tc7VsqDc@M2b4=sjWhmu2igo$G=tbkPaj{d zBI*!Y?Xy`7z2w01t~Jm^YiZ%#Hr6TdY3D4MPo$4xX~fTUWhYgsL9M%a82S3Lowl8; vU9=9@>_Bj-tNyjs9BkFgNwxMuIiKH5lFuXDo`oWF5|GmZCt-8EAbi!!BR#Ks#d6T8z?PA1q6(p23| zrG5uXzJ!0smKDFiihG?F(hWGWeR3V&$GImv{eJgr_d9#lA>;>XjR5d#nC1W$K?GGK zr;Jj>p7L^^`40Ok$U_!79H=Pounr~fhzLb=MMNaSrO#r~nUF#JlY*-OtsftL8XbK+ z$c)w5w6fW}cvB>5VKM`U8>6|%irK^_R*sYOEGr~fAC4o!( zZFI7?yT>PEKK^iU_&$XYe};d9%q{>)7!`zh*W{E6D!i+h`7#i`2(HMIvJkM#8E|w> z0>UuoPQB{=JH9FKGENmrpJaCh158oe%7GFF;!Y-t)LoJQ8z(Zi9I)#0O z^He3qaQ=<_+8^4y9F|$RIju4!Hn)@fe7e|Kpvg`CMHXVNhbgcsq#dRukXbrzx5|Z% zA@Vbr1_7aKwCl(8;(m*gt=rV^aD)7e@E)p2P^j5EW}&;Ldte$+-G$BJX6eIg-NQ7X z99|^3d=3_ar4#SsQ9EM$qyI;Zj^#lOPFDk)}FGLyqr$U8;eelUo!SC}2=b(iye zE-Hn%$NA?fQO${?t&V|4=&)VrHE^rfVX6B!%}J$F&~2pRHnCO2$byr^Qve3F5z}7W z3!Dv9!|u68wUp3^W1|s^!Jj5?ei|nwww_OK=xUm(u^}u1s{vu5(46bPnKa0CBYxSG OxBmo_K?U@vd;H%Hz5Db4 literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..044613087e20db15de70e56301ba6a41687a5c6d GIT binary patch literal 2568 zcmbVO%Wm676s2AiMLTKY07VxCI*S&lfJQEwP2mQG^`ITbGG&N#(9DLSIb(?lMJh97 z0tx6U`H?RB2mOQogSK7i7y7<;B>53LMiL75YA!jPxpVHBGkkFCmideMJN;SLv_G^9 zR~g#7U~&YGX;jKDafy{7E~~f%afRs+>nbioTxABthKef?*O&>h zsbU@C4YmpKri!cVmaElo&xF~GW0IbdY{ZF`#yW!!&n-JR7BAhjfC3wBjI9UC7rgNE#>WaCbNkqPP*J>ghSRu@QL7(CmH6? z35!loxqy&J>@G<_@+5l6g$!Z>`SUPK1qmVJ6HcO}p+;Lk3fclQS`@)K_3GU4{UjK3 z-=CYlKTcU5V|&y0U*ti&dQ$a$mWIAh&7;V=@((p#dh*8KrUo zf9mcfXmJg@*zF;>cSB37Os58`(i$)GN=u_AH@V)@coo_k%mCLpr&Tj%9lwoIIF1KeFOxdqNBFUzs^MnOHlRG1Ip z{N|BJPoiYFWc~j8!hXj33B1m)FkK)w&VdD{UkhTbV|iBFvz>iv?DdYFj&FNZcY2Fl?gNpOB7oP|Nz&RbJiHsPW$_ywN^9=a6I(Pqr zbua!!_Yb&>P_qkvehY;Afa>nk!&a|LD;;|ugsQrl``Yq+ z2E#YOmgUjcat-GwK5^=XI!5Mtdh!gu71ZIXgj}GQ3Ea@Cj;i-{6U>c=%g==$@pMwN NluLJNcRm3F|35F2Vy*xH literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f7fc8a3b1b2d60c5fee618fd91f10c5036ddff10 GIT binary patch literal 2559 zcma)7OK;mo5Z)yzilQjlQ5@GPnwD^Z0xFs~NG?SYvi3uaK0y zq*6FY=_87q5g%N)ZgcD8!5>k&+$9hFLGGWJX|xIWHI5 zo*m}BeCT)%CHD!>aPyRKQ_zX-6?nEz%GN6i%a>_d*lagsT_k(5cPJzXN}E02iCXof zk%*m!-|j@Btf$4tji@zfw8VBNNQ6usw4a-$&dg9vDjRA3fye4QY-e|?@;EJ3>$|sZ z-nz9}yC{3OcTx6eekBbKbgHQYw5J5c3iKlVu>3r!qX;Q9p<22_PipK+6UPhQa z%dJx~pu#gpmpurZ+w4h~i$wSdgvk{VSOF7%qE`E^Eu=Ucx}p(xf}tyg z-)lvkQR6TWu893cU$`(mZg-lA8;hd>Oh;c*fN9VX-0ekf(o;)yxQLQYbLb{*5yR}c zqZ>+F^EDMTLh!54M*ISpgd}uKCR$e;Q%-*bgtf?+FnvtAMw028cZu8rUhifTE6Gjh z1S}T+_TnFH^I-e!Lg$>*6+ky$=!#PvM^8(NE-QLT(Gu8Qo)E+`BtxqK9P&feqdcD1sVnvfn5 zafyMDStJ&kS`Y8--9uZM!(a2!?tbN7P1^92E;S&7&jhT^{N5l+(o1ZbR>7GMwG)dZ zEuD#QyI3cw$zm*_G$SD`Nm)ycSOiVAKR8y7F+XU;F=M}xf9`A~VSl6F>0dt_bOL_; zW+Ut#4sQ=pqy~Eio9@XC^asv203v`gsMj0)p)A5KKZX&%2ZYcPHK{|F;YEtWoV}x~ zZ({q#Jc2%U1ANY*qy~aBlwe+t*D;e@n79_`9hzJvT4lB-B? ziO*ofXisPn&TLRkMZp0&TD@>;m664f@#r`Ffx?KI*oS=#d-Thd&94ZShfI0qU zOaW*=ooL5D;7)=6{zM<^4kUW4cd0| z8?|kTxOoKwZVrV``7ZFD9f{*)TK*CNm1ZjY`@8#7RO2B%v$lJ{b}Dj3X;q`}%<4fM zWS+IX`(4iKkjcYJ@S|1q&P|rFXCeWx7nNnYE$8+Y55nIu; zX3hX?G=<=GSR`HtLZ}UuQ-sQ~;WdG?sRb`m97Sz(T{Hd#&p}$B literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4f69421855c41edbec63c7bb3fb3e2fa06b40916 GIT binary patch literal 7316 zcmeHLNpIRf6t-Cm*pLLWG;Px;s(OeIl$2b0sH!9sl_Wqa;4~M@VTLSXlMR*9-_lEu z{U!Yi71y5l3q5t-*v3noL?k4%4Okw}+rIbadFFYT?LKq5GbV_5tupeTNVVxZ092Y)U*2W`c7-P3PeUf#&wh@N^F zacCd3oivP^jo-`np)c9`=m55*7i{bx5w9YN#IQs}BH_51l{kKi5>)f%tgv@+g&)^A zOuyc2_|YRfJnDf5-+UR_u|{M)U3QM>EN@QvO*Wuw>9D!cD4;p~49$}So+oo;9xvb| zn@bD$IZ9G(|ExKEI{Q{k-secif7~o1BOS*WEgs;x=5k{brSKYBBuP4>Qe+XQ@FI(Q z2`^PS`Nfbfb57<5@se6UJ!_L{PwkN*)PZ3LnlLm0XlNPWh5~KAhy|4XxR=guzsaIV z4y<${3rMOrRb5wl>T#2xxIr}3dat7)Ne5U{G*>@WHKj?~20aM1)fO2v7vd}t51a^DxW4WgMbe(GQ(c~uDU$HXxPH+0 zEwzimRMYwIIA`;3)|lUoSt1@d5pry-iZIEVX}{}RuGX!_Wp6FT^7fxnM`?-h4an}f2_iJWs$UN*PR2pCBUpI zj=9@^-0OB$yXa10np5DWf8_Eq3X^ufrE75Zii84Ea>XhNS8KbK+8~^-RF3Ew=YFlK zl=3J{rPUfrf>L3(q7?IGrMA0Q%p(aTC8c!qAzwrZdZY>`s<|@5irXYLUbQI?M#`34 zf;#x*f}*4Y3WV-(EGW?PMs-+mK~d5H1wwx)&@-XFbJ_yz5TW_~Hq&c$Gu^Xp`nZ4A z#OW=yb$)!YeE}?XE1yXlceD%~Mq|>;5WTLqUUx4B(RZy5?l;N%HHxEm=@%j%q=(3N txI&?IeuH1xxbU8L&6_HG03g7j(b|5BGz=PO;r_{{dx3aytM3 literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2e04030e0c456a9f933304ea56dbd1e870f73caf GIT binary patch literal 2363 zcmai0OK;mo5Z>iW6ivyB6DM|16fV#l1T=Ag6h#j~&{S6QKr9=Uf}#r)TS~i@$&i$? zqzYS5PI8fJ|3VKv^wxjT|G+~pJ>}9L&`UeBlmxlxL-g*>&OT=5+j;mwt>*pU{lb2% z6Y?8b`&mGL1}*yrIza@DNkSP-3}#TA8?l*K%+jMi<^g& zI1fL+$Ytv+P+ghhZmD2pt2GkKV~az;-EF^YJwHAOvs{J!Ngj^U$7v8>WMKx2H}qm_ zl;-k0U*p#`pLY-W;n6|+#Q+pr{mccG9Rnc=qk=HwEjguv3ggmcrlw6{0c}ZJ*uuFa zbIKf`wbejZL{)f~gt=lv_%K%A5{oboP^c9fT6SsG03pF2jwl#g_Azuh$?1&DjmVh8 zVs7Tv9Om54ojHNAlDm4W&Pe3p4ng2@+G%bSb~YJHrK)gA;c_0PVa~a-VX9o@RR(rwz zeADtBOU&*qZTe^M-h+cz!2^iQ62>J+mcsirL~0W$hzvkaHOk={vbM0hjvem!2wH~m zf=W%Vtv%sA4agN;@G)D<1A@ZC7@esDXYM{f*7q(%l`>X>3LjAcba@&i@;+W*Ku3(} z&bqwyP5&#FxzB@fkiwh&mtZ#z(%~c+O7y&?&?}fPHw?5!unYYO-ACK`30QpoyGEVP z;X5E-|N6!N+>OYb(V4Le@$tr-ffGmeD?@c)#fd5c96EBLRcFQ=vP|wp8{pdhF?n6r zduy;)0JnaHy9r$2z}<~Gd1K8CVF2gn8ARtUghq5tm=AH>imu~qX3Zg+0d-@24id^8 zpq(&x2==$gcX-44{(o70UH_7RJZmA((DJrH)0?l1@2R@4@4huB3wj4bHQIe;;e2Ti zaJIoS?9TLqJJ}xml~J&F7Up{pej~LPQcgRu4vfF=sv>fN94Yu<)1gcp;A8Ov1p zz-L|x8IEU|QWYkV!fv0O9Gw(SJQ@zADr_P9lcBnS7j0vQ56PU)QI8+C3#UBEoM*i* z%$fVe(aX*Of7WAmxA*v@$F2{-Ee8{&WC|m=DF|jBhrlnVI)V!8R7#<0TD(?;RS(*| zcB}WS^Mq{&`2XfizGBFKZHuJ0VBr=gJPK(ejw)1#AK>t&Dko}RQ}^5URr>zHIN z0s%Uzf`-grCNMOXxu^|C9CRS9qDj3EYJ3V!r&B_=jE2r8b;u`{rm)BSQl|}A-JuTM zp`KAU>eL60YfKyKVTY!z!VM9|roA5p!E2I;fJY`HPIKXMZ;fFZc>thS5i~3Deu_ie5z(3IY@XOemZe9_PtOOk$*c z&RS^WHg;Mb;88b^C7ehJ=3Lr z#kcTtKhPPs)2uUFrjsPoKB&EwZ6^IiUMs^uVXkFcwzm+ literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fab0ed1fe796b5984c73e14c8961374205287bf3 GIT binary patch literal 24067 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 literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c7a620b104308b1db334b8381b0b26fcbe88eca6 GIT binary patch literal 1078 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 diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..73e0d2db67adf0ed8a25148dbe1954cb209e1838 GIT binary patch literal 1078 zcmah|&2AGh5VrR(+carW1qdWAa3T_IkjfENKw5Dj1t~?9e6gIh+ivCE1lvoMsJB$= zb8zHIcmQsD<-{v+V#eD*dVyVe{Hv;?EV{Ao~JBoLGy_SWjy zR#RmR&`#=<^SsO*=LQ3s7z|s>JQds)2Bl#4ewi&9PkiXrB7gA<2=*C zTF$?cUweI5O#9P(x;?IPEw`VG;(R>Yo#ByR{Ie?M#Pl-|LMqo+Rpu_HUXGpV%%qU{ z2`r0%&<)zADV^V4p=4)S`Ympdp80U z&<`&~p`OBt4Zx6K{$Mrb>P!Dk%aS9JUx@NwX;UrA(@LBwlyaH!R+q~cdMS#9)p1_8 zIWH!%(ug~pf2xFTJf62Y1s*|SH!~X$)@*{QyEp1&N^6iCsaO`aju=_+Gw~RJ#oFj+WhKJ?#88sybT RUpDRSJ;Gve1Ul5;!EYcq|6u?C literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/gb2312freq.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-36.pyc similarity index 55% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/gb2312freq.cpython-36.pyc rename to lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-36.pyc index 8704599a00e336b02f494c16b1c859ce0537e335..b5b7f7fde360da27e809adf27a23b3a9b34d33b9 100644 GIT binary patch delta 198 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 O5&p;hM*mOzm;Nuv(BfnO diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7e632ca7325e389cce0f49f8bdf1a5885cfab3b6 GIT binary patch literal 1086 zcmah|&2AGh5VrR(+puX+r6Pg2z==q-DGf)&PgB$jDM-2bVr|xLx{-GiY%fx(-V&+L z!I3B79rntJSK!2qw}JEmUU~ejXLn}&&F4X<)Bf82&gzJeA7pC;fZxJ2r(gsTRFQ%* zN)da?D}3fV?5m&%S?F+}qN2rGl$;R}ifBzlB=2IL&h~mRNdCR^H58fz$dnSiw6FZL}h=wyw!6Mvov6m7e!@>d;gR zsWmW9>X`Gq%q`~{1L_bA+sPao+!PwS!S=-#13X0vuB5I*EseCmL|~-4fOUuSOr^$f z{*C;4)3?QAcdM7&H3 z`3!c92Znf85AWpM{_6jETSF9+k^f2@tF)X}=~QAnH%advbn`_o#*SfuoY!s6i@B&2 z;)L_hRjL|~RpJdyI|_hZHqFg6!aX~*i?28F%sc~@dSWDg~T+8lECeO zc38KV+!D}qN+U;XuThM_`%^Uc$LWdPcir8RPot;^q8N}D%FTuTTS@m@d1 LVo(MNb&vNO9PRyP literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f5e814a4a650a1f7f846d16dea0138811f09a091 GIT binary patch literal 2920 zcmZuz%WoS+7@yf!)|<7PXY(XY%hS*#eUMTFDul#MEgGkaQ!0&wMviCW*l}!k)@~c) zN=S)Rj+{{sAaUW+148@-Nc<0bL!1KQA@Ml$0^c{gc4D`?n%{i$+~0h!*~{^`^Of@> zOI#u3XL8~(Kz<*Je;z;(LCa*1GD=a_%G#dJbV^o<(1meGgyGQxof*Q+lB9J+VM&q( z@#USI%zE`(vbyC-=x|XgRtnjAuI}YwQs>bl$^Q}rk1#3-(*$L@&|p`cnZjU}Fj=3l zm@WEPOxVm3G1e~}=8Aq67cNVPI6Ea0Y~T^urs9+sIJDWI7!*T?gbj&dF#`3l7!{|X z9uZ?=9O_XqAts?d?Tv{kF?~o5C>sa)1u>)K36Rf-StU`o zN525+qhAqzL--xx4}?Dv{zCX0;U9#55ln!>CnHZ*e`+4S*L2d^^|`B87vG+{+H~(1 zE24VepSyTzaWRjY#0P8C5f=X%K%LZSiyUYr?EnS^X%Vg~G!&W&Eropw?G`D;!ntq) znn^l=={IVglxXR|=Db)b);SL*_;#_9EAu=UkC&^3VjdcPzAC+7{N&KRqTlF@n7k&v zdx6Whylt2nwoY}H*OUhY2_7wq+NSh;uMUo3_+EJ%>KNzwa?bZT|Ast$Z=t?dTc{Ol zb6bsKSEidy1g=`b z8W@*!C`Q5DwL;!z5WAkvEZyWEE?sYnYpJ!in7N$^>~O-ZRL~zvo7tt6bW&5N3~0Xh zEOyZko%UNG5*;BydyL*JEa#X6vJvjtn0`h@lt*pv6&#WBn!I0iC|#iFrT zr-WC$i7Fe0}O}>_5 zqua$Y^zofyVTW(+*F9dXl=oGn$yac#3Op5uZ(tLHF^H|CHdD)+>C9?7C~URVuggHs zH)O9ZjBU>oKfp?V7Jy8-nx#3KLv78`U2TB6`hf1x5iLP&>KM(zF8koxPA)<2ouGXH z4LG|BgK_eZD%a9>O*sv{I#@^rM?cx6avt@mY-WPKaYY~2unKGjEqm9H8__D&hE+t0 zXcYxZ5GkXU+B>Ob3V0TLlCk4N6^yN=Gdv8a*G2QK6Nb#@ip&3%9?+ zG4nUdD7&2Bg)2TBk+b-{R}s!4;34EWge1a?2(Kf&1i;)V+o|jie# z?mu}3B^9+QRxdy^u;Jo?f0O#YT*T2U2za0%9{nNYy>glJV`l*+OyVSUt)f9ch2o=n zY|Wt0yry9q*sr;c?brsq3Hu#)$~DyAP$p@zc;q+X4Jgrg%=9XaJwLPoe&hJ_p@bg~ R>~}*2Uc;8Uaa`)={|Bkgk!k<{ literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/jisfreq.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-36.pyc similarity index 52% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/jisfreq.cpython-36.pyc rename to lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-36.pyc index c4973d6ab2fb4bb5a3040eafccfd24955e8be248..ea51310231e2508169c52c6901d267ec85c2cbbc 100644 GIT binary patch delta 195 zcmZ2GfpyPqCQoBtUao~)$D=l;Ffcr3Kmr1S3=9rHez6FUNMVR#NMVd(oFJGY9K{4A zg@PG0M1U&NAv!o5GBNdaJ;jJV^DmEf4p0e zYhb*8kc(^3N`@jqkXjJ&%Syi_w?Mxjvp_egG&3hf*B~)BE2+}B5+nr1@nxxbDfvay Se>*cOF{v=QV*&uBmN4M} literal 84013 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 delta 308 zcmYk0!AiqG5QcZ#6s20J2d~~MgczfE^`JMaQVYr=gf%m?Ynx=dyKU6hD0uQ6M0&Mq ztJc>Le1V=lh)MO}4D-V`@c;bZBlKcwrP? zSq=&2-~op42v4^KmPh)>&oj1QbWAF5_h;k0s1(>z(B!HfA1Xjq<&u@9!TQ>e&X9! UjS|wI`m2M9zebDmR*wGe4^YHrXaE2J diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/langcyrillicmodel.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/langcyrillicmodel.cpython-36.pyc similarity index 94% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/langcyrillicmodel.cpython-36.pyc rename to lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/langcyrillicmodel.cpython-36.pyc index 56cbeacc763438165488acbe3199b521be96a211..b4e1397fe5a93457bf3da44674a3e6a0b5cd2e48 100644 GIT binary patch delta 615 zcmb7>J4*vW5XbK>@r*HoLGS^JbwKeE60Ag21QAgpHrp)g%@9}b#ok7Zh4}(j+S*tM zHWp&x`~CJK*xKqBu<{aC5KZF_JM8@aGdm3P`L6GM=%sW+Lwq~_NZQ9V?M?f68Z~Vw zjDz*i!41*imgsOt47eu|cpy=DBsK6vOw`bXLpXwCIDykGlhmTF$eAKBG!!{kqz)q$ zk~xA4h2mJFk}egg$EYG#iX`BAMoT^K@9soOq&8Ow0?yo&Ns`t)6I6QC6M%v`%qK}- zpoM_0g<&iOUm?x1=yQwN)b|1|`4UpWB=<x&D%Vfr#4E7f+Wgc1}Le^9DI%0 z%*_{A9#<2~+y!qrIM|QQx}}zhsqujv{oB4ROzZ2<^i`2s?XatxsiJf^%o-^QZrj|d zBDanYPYz^$7IuD5TamKa-$k1n!D|0;xIj^MpQAm}@q2vkch42L4c)!WS(q!Pi)B=~ dbP2=Z#OAc@GEC!OO}^-Zh8~L=`nUb}{RNJR%y9q! delta 560 zcma)&Jx>BL7{_~X_yS@u5eEl%5)DxVSxk&CgHgmFap*$o^@&vPj-xFqF8Cc-U0qBZ zj3(myJDQmIC0z9jFnOFe2rjnilm34F_i56jFQxIRRARxPzux(RC+86QK)*)_p(&fi zo?YlYM)UzI^bvdL6ZX<)tkOF6(HGnS2s-E)tbdFv+$cLnJHUzD)pY&Ro}-$S;DFz;U42OMqM=#>u;yGb{ZI>G@yKCIh~&3L;WG>A4+=1kX_)_xYApH3y?f37$>kqEZLt8Zd=wr2l6Z zp;%UFbP+Ic(Q>2Z3Co$TlCJQ$3L|M`8@U!nhHSoxs5l07Peu*yp)sggdSV%&;eqh+ zJ?V*{-V${@O?PAfVJ9k-MvYjGl^1rcN3g;FU$AH=OXc;--&TKkv{~-i*YyNGw~NMC xMI}|C){-6+R)v3D>sGoG>AQFv?MB^SuIA(Wl#u?Qx-^QaD|FVO$+$y*@(VRUdM^L~ delta 342 zcmdn9pKc_Q&S6E^U`xNi!*#u zOG;9UqPRh36{nW?CFX9fWLApO5%mEo%`=a8Mzuq%JTuSG$kZ4`eDc{?E0+yecA%mUq{(#)I`T@&My!YuP*V~`LS$Cst%rQ{ds7o`@KrWThJ>lY*@XD6no f7EiW}(_{%^WMG)QAx>^{OPm%X7Y7RyBLo5fQhsd? diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/langhebrewmodel.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-36.pyc similarity index 96% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/langhebrewmodel.cpython-36.pyc rename to lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-36.pyc index 7fca0984779818b11b940ad24a70d624b6e616b6..ab2992c8041a6c5c2258c601403c054083a39372 100644 GIT binary patch delta 344 zcmYjMPfG$p9G$gILK2do=;F1M#8kYexn*Eln;_0*8h3u^)c#|3v^*8`5%$`pb0-lj z`wLzC1YPRbx9HSvryjfq?;YObjV8+bMA@_w0d9*&}1avaYpAtyJG5 z2aSqW^RL>g`DyS|gz{6)O3Tf<+|6|Q++>+8YMpk5g<%-|kqp3Qj_|+QX*C^A=Wueo Kj$=wBqWl7u(QZKi delta 320 zcmX@Kjd9~PMi*mVUan*8$D_=27#JQiAOisg1_vO&SO!R>?1^GX*&D@}%8<&KvOQ%- z%FdKsb6BI8Qg#P3XzttSwwgI!lQoJjIU}(sB;UU%CAG*mu^>vIpeQvtH6=AKIn_6@ zq$sl@N;Eg5vLG`#F()9uII|?PEHx;xBr`usFgrE1z%?&DC$l)iC$*#`wJ3@kWL9x% ziC$7U&mb7U(9GX6B^mni!W9W|2@jjEEpDo zrCDiN!vLtfS2%5(;qim=m@@yTG^AJ5V6!HCM3o$N!$ VKje%}3Ruslu)&u-Uh_Tvw?ESJYH-+BLl*cZQP0n5aaC=s(8b5=cO>|Ey-5ripjNL7noD7S8QLDd-F{PN9^7E+eZd6z0 M8nh-W;Bm*{zwZ!T?EnA( delta 254 zcmZ3xjdAfdMi*mVUan*8$D_D)7#JQiAOisg1_vO&SO!R>?1^GX*&D@}%8<&KvOQ%- z%FdKsb6BI8Qg#P3XzttSwv0JSlQoJjIU}(sB;UU%CAG*mu^>vIpeQvtH6=AKIn_6@ zq$sl@N;Eg5vLG`#F()9uII|?PEHx;xBr`usFgrE1z%?&DC$l)iC$*#`wJ3@kWL9x% ziC<#w<~SDjP?sG*XB2^mUqSjMxdr+KnFYE@rI|S?x+caYg<0ms#vmaujxS5iOUWxlb7J3LyKf)eKMi%de;%6F>-45|Kj{9h`(gL@-9J3B?a=h@AD4FK{bkd? z`bC>|7Y-5@2!{y!2*(Hq3iE|U!f`@>MrYH}!mh%R!ePQu!YRTL!U4j5!b0I-;dtRB zp}%@((_&$o@HJs?VYV<`*jd<1*hAPx__{Dl_=+$`m?7*a>?xcmY$wbVwimuC>@O@4 zjumzgb`#zg-V@#x-Vxpw-V)vv-Vk0FUK3swUJ+gvUJ_muUJ#xao)exGo)MlFo)UV( zlfp*f3E^?!G2v0+5#eFsLg69dLE!=6e&IghUf~|0E8H#ICEO|8A>1z9Cfq9ABAh3j zEu1UdEQ|^_2{#HS2sa4V3)czP3fBl%3s(tO3ReiLgwuo-!db%4h0BF+3zrGYh2IDp zgiD2A3oC_7gdYg&g>}M+Fe$7Rz9kF^MYvd)5XOb?2=jzPg6GqE1W6(Q23c} zj_?iP4B`92GGVE(M)-;FJ>h&|U*Tk7weVx%m%;_YH-%y0r^1+Uy6_`mCt+J*7vUnI z|F5(1Z|5AdapUZNoUrV&S*I;MYyRTJiYb>*VbwX5cBJG9e^RU>71a(sBa zbbDoZ^~l7~P7|fKqSx)MS<&nJlV$YMq1`4oOpLA=85^D$UpqQEy1qADMkYtchjzKB z*P9sbtywwNR~sJdO-}a8&}>Pr?M)7^8Cl)?Xy(|+nw9HDR`$+3v@@;KDgA%{$7g+m z=@QsRm?7v}tLVpHwi9Lw+Y7UV9faA!9O0|Nj>23)zdB`SLBBd>S3%#KWjA4WL0^w$ z4`EMXFQNU%sPEjekD%Y`vY)WOpie~6?{YanI8Zo9I9NDD&?l_uvsMlh4i}CP<_kv( z3xuPDqXm6-%R=E8VUf_dpT0ASKF?*butYdk(5JW@C+IU-ju-TWRZbL667(r9`iK^N znUqt6Qw4qQi$00vG(n%;qK|jcN3`f0py>Od==-ajE$CBR^i5Hg3i@g&`eG~kZYlcQ z7kz~keajSmFBN^A6@A5(bA|H+eIbddjrLamE6)qI?B~iu%ecu#) zB^70mXscO6o3YR!#Uhz{T)U@Ke%oM3yd zB<2!tPpr{GkH_&elLuStMOf?p72G{M$8Xkmj}agTRan4dMyxjjs>RP5dxk8oUMt*z3l8n zxD?kCoo#Vi_*1&^La4AVRxIfR_qIRS0CgUYid|-SxZQ}+;RGk} zbhX8)+bkBlVATc<@Geopy^*jyS&p{l1RKQTP#h)9Ah9JZUX9g=u>t!vTD4PM>;!EV z#q~4;0p=1zimcn5K(w}fEr!Zxu~5beJtw%AJ8Cf(*N&!`Q(eb2_p%1A>rke{79E}u z*>;!S_PWL_0yT>^&bQ@@h~e4-lwf&~U0cj`%)KONV+I}Gk7Cx15)zxwVx%`^kQ3a- z9gewQnkwBR?>Uc@AVc88JK*Cb!HO_T!fRRpczAa0IW!J^b zr49k~VkB)&cmv0{D7K=mQ8Z?33AeT+=hrN*yk#5&75f5in%-v7sb28mE3C!0gKv= zxpc%_Cy*x_mPI4B#oRb1=5oF*AH)0MMvNyxz{-uM#u~0e#qzNlSrVaAYomBGTkMBb zdktb(@vs))7+b_}9rIa{4Lw}m0F|1BsFnHgP|U~>rMJE%G$TxXYQ z^tQ)P#%k;hsjcerR(=w8;f2~SLcn$LevTo)jHvTmve9NYvg}7MFP)A~mSsu;?SZomQ=L9hXcurJ!U0d`bZ;K8R z#IVR>Ia_;OO1?-IPv@<0c|TsQ@vJ!7E>Fz8jyY>E(w5~LXSjqmM7ONP3vmpKvmaUR zwS|D&>~aDEws;L@xVYxhOV+Uf0wf&6#j=#$u;>WOZX-CK%b7+DQD@QPHpkjKq8Alg zmWmjn^wzBCt(73G|W;6_>PUN20zjguUy3P*~K%iDkHZ0yW+8E>nSuFQP)@{TnK`$)yoQN#3MvI4_mkqF@ z&czJJBGLHciQ>4DO{v2oixmRx#k65r0Jq(WV!ND*>ox4sf#n&vw%h@Tu@It-bxwpl zG1?IIAf{ot*e=CL5u1|bw*u~EWK455M!J`}$c9TDOS*)SwHXvgHsr&ljYL>>BSzcQ zE#JYFxV1sVuo&qW?-C_;DYiuk79~j4iX%obmPPG07CS+S-FEQn6K&x(s<@6~EO*2+ zMK(kmvrdFm^tNXyuGJC4qGL)H&*?TV&RLdc29}G%jaV(qYK_?#UK5R8yNzwN;t-{m z{TeM71EgXQiI8esx7JY;rH;jGbpym|CAD=KX^Xj0Jb=s7VX=lSP}6fZHb8)mh=oht z7sQH-8n^Nt1|7BAh+!cbv2dviYtXuA`yAc&4S15;$mq4}4%%#yu!T!q$h(9XZNvuc zrDN+`ah4bI9UzvhbwmlhwP%Xr0raAy=GIhdv0CqDjy1kPZNFNqwqK)Yt@wW|#;=bp zZ_m46HJ&x4$3YLPQF*H-8ux2VY}IwY1j9e&!}1IKC3u4=pD=Hmp}kM<{{huCi-te> zOROjN|77a2@w4|;7viid18y0R*$p41d_ttdB%L4sz)^2Zdf&MJ( literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..91143f9eb1a50d0bc5f578c4c1067349026beb96 GIT binary patch literal 2891 zcmc&#OK)366rP#;@b%4g;*>OPNI{j5P`yY)RS-q0NFw)zlovP!X%rY7&)Bhh{pj2= z5aVn}q%Pqvuw=uJV8eg7JH!Iz2e9dibLOVC9fd-~f;*byGv}O{IrE)|Zx;&TkKwQU z`5Ym?lktxdvI^_u3r2_}lE$P>Ii<+6n6(}50Pk>Dy4;h5`_kh%>GJ?&d70y(4EU7H z^GJrgp#1-Rjvk_?G(EOm#ZoJ4Wf$(<)I00CN)+*WouWGD9JLBF|Tr zO}n?;Yxb7*`psA_y;E(s_6}|zpvX?~mFmc@Ud9WgGRv`jSIhEA76s$BJV3^F6+nP(Y78g9;B4(Y(lfxP z(SuL!e=N#tJ7V+khAx6gkF76vN-K4_ke-qBSU&b59v4CLwb*V{^*cFqOt{Y=okiC z$G8wC=L!LdJ9H&|!t|=~T0Vp^w~hOQq3eNGviBj|?}9C+_S52LsLKO}P8Lv&=$1mh zSZ~IVt>WvZ*%zwQh?~j2h?N0ZlAcCLlmX10ZrNseF$2&pHo8*9Sx)53>uZ&YO$aQq z)Zg6N5gYeYUnJNkY?eSJAz$)ritu3Xz$j4bl-78Np*Srh7whOu2BmIYDQV#7WF82i zA&kJz0Dc+0L_;>1oro^(co|jn3a7<-7Z}9a&=vy(i#~EGO*l6OW^%ED+82sn~iVhet!7d;CKbo-hLXpp~d}F z^zLe7_xoS|ys`Vo3Se>_wdkRK6G-YL{kBD|S2B5l~dQ+-SO`U~kx&aA4 zQhx`>oPrfmmmyp}n}^y9sOtoDus8wMl5Z~SVle2Sn(j;wDQHlXo$P!5^RXiXC1WiI4i8@v6fV2`?oxL09-1D8g zw?>WSyx^cd@g3liH$DPye207GDPI9qf|<3GCQ>4?_Rh}k?9R;2&iw9irBeQ_{1-o{ z5b`&<)Lh`df}TGDB8j94=~GTA@+@I}hdX_jyOca7(vj{dk*=Z>hkMd%lDdCJ;aHs( zm93*lHd@*Yck9PXq2LU(U(kluRg}1HL57mJj5-3{MF!$%?GPSbjrX!so%u#p2HMVPfJZ z$3|W8b5twWpj|JtqDF^V_Xxq!nf3frU<@&IOeU9SA!_+s##SsC`sPi;@r>5avSsPX2kaVfurOK|EM%5936xJ&O9h z_VMFmT(VvKs8X5f4b&u++32^C%as|}r(7Q#>k{bw1bQ9-A#{oQ@Ed(_ec0B|FVVr& zz=q>R$1Bx~q7&{6j_dNU22rxiG?=W(Ho zB*Yz5L$c#g#ia!#i%4z(S%aSAE<&qtnX>Jp`!`(4s=sm{yweuyKqn0O3DOo`nc^!i zH!`!^A0(=;QlsRK)|sC9GIip@lOmjjTBK25eTM36wz1L2H#l;6|NrzyFM-}0><5^T z!>Fr1zhwKScRk;GQ4yH4m~u7_3?lOSPy4cT0>5qY!yhM*|2@`o#&pc?LAjndW5>8X z?kodhh2^G`}pqIvM0w80`y?Lma@CA8QwR@LTCR% ztKTa;4G*CTCsC=*VqQ+wYa?<5PmK^+csu+1d;5i-WZf=DymjbmLA4Zr5(kWn$Pz3TU!S$(R#MO1CwvJ z>z*w`9^mD{FI~`>hvz_MEd-d>0$s4BaZw-oK6vy6^n4u%0?#5;Y5)}*P}g!urz=Zr zm6lnRg)j#>8@+c!3E|bQFC9b#YedGtaaq+5gU}7#;C&0Ijk?b(S3Uz8feAjn>9C*MT(eneH@~wn V<BL`m|X`{lmk*K z^~6JP)duG1b!!Y!|c|X|CIw8Nv#&Uo^1?Vqe1QAq{ zj511*ThhvGW*crxCv%x=xFc&>oz)F@Wg}~{rr|Z|Wj^x_ugf3{S!j4eZe`nS+wi8m zmF=({N=}IIgnvbZpU|bvS|aF^DEv*KjEI)4?z@5NC&h`H&GR!g8zu^(-o^QgqZ_Y( z`m(?F{O1?l)3dc3oOBKj9~`WG+}%o>=0GcMx&6A+?Qb;Di!JjtA^2_pY=C|SrXU4fkfk-T z7F5u$Ab(*mN#OuoKn+j_GyqM2wOvikb$^sM%OIOeH zL@6I~lnu_)Xy6 zzf@cB-+KUk8w{Z>%b}Z(XMMi&pQii&dWvWdB!?EKgDl~^^f=FEVlI&foPU@Ptez_Sg7FY9YIO)lVGg}lRRrh4{5Xf}T19Y3%p1autpYeO^HK4sis1B2 axi_7y81_{*9$I|GjZ literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b48e127adbd36c01d4b6e306513dded6698a6c71 GIT binary patch literal 17526 zcmeHOOLN;c5GHNvVLkkQ#c>?Rd09ymCr;Z*W;&h5u97CPlZ@m{XK>NT0#rLAIUY)G z8~=m;hhBQ@FX^>sUwiUj=&9HRL4uShOO)cO4$aYGfyK92EEY>p79XY4iQf}{l3&Z3 z_P3_~>6-Q}uh*+1nnpFMSGAf>bX}uMWQghShxx~V4~tu|j`C5&#F*=6!j?)`t!t$ZBw%*aaR!TW)uZ)vPdXr4C32LxO zHbuu#^EAChX4KW;9)ZhcxgwW3y<@3$=p*s=%v$Ie7E!54{7|YEo3A_|v-CEZV>2|t zX4xE_z!}ZcRdUJFY4^1(^7mb*^TN5=-jVtx+Eq5q4t%8ckZ4!QXSF~xDR+-NPnPIia+O`-vA4vo(kUEyncgGUXp|O^4vunKf3cF6H(e4}c zKDmjA1gAl)j&f@-Z}O2~E<9dki)gpCC%LVPO!ktN3Yl!RbxP}R(KT|Laa-9fcAL(i z^{ey&$yj*kCszzhI!DtqMQ8b_Ft_L#vvXm+x|F)TUc4;`FKk0U*mLZ3Yz3=W)DapY zQ$}aESm+-F%e{|RkntpjrX<&C$=4mPPW!j&N9S6#wrlHYOjm|!H;O8&{6+52hvY8H z(97%&yGs{wPu!zd3R-6UlpnpcjDC{ZE|vH84_Kj5YOqr{o1G2;F@OvMiEu)Ujr||L z%tT1CTrJh>#YSnj%1BC7Dy4GcgGrKgP+^Hi%X=lWSY-#IeqtPyYV0%$`eH!hK=`3g zJ56vxBAaiYeDUNsntQjIefd_Duky$7U$X3|oNfF}qR%(hA3aH=*<8wD*{=F0MkclLqzFx2ahwKjw z0>lhS5Fg+Iz_v06oxp}QLvq1<068ZU@un@@%ODE#BMYUf;qqh4liav0%sM|Apx}nguxj}xqD-Z4{zp{OE5nsl>BI?MkOsc-oi+Q zsz{vu+4Ihh3#bnj1jL50!9SY$u8|Wty>OV9F)j3>#TV=Bo{&=$aR=VObTgO)mOB$w z?khMQj3SIDusS?l@;k5ZsV5Yik8=id|9GtGAQ|{}@jSHq_B#(jc)Cqg7#QUDZWQw6gX$k|LUgd9DF?4IIOn* zMitgP6BDTs*B@8Tvwy&OpXVX6`><&r`5woH)y}iFlVJw<+sV+hf&TKim*r72rSB$( z4gGm$N?(@*6ojd<^VI0^6?)wF&gFFW?Q$Lh$Bd8*veG@Tk>@Divp)CJ1OHCaIZk3g z;xgNvM3S_t$^o=}8>(`;xRrLS#ZiD9&fU}2ebv{4-Kz=_)=#`bM}&^xN2;J3doaVt zev)ba#|;{6-w?wjdC``BFat8Q>VjpM3$UPVlBAs<@!#Iz<97Jp?SS7g^bzKcN%4D( zRu2T8r>=9WI{%s(OwP$zy?jUa>9F{tPv@tj-E;W!PX`7s%b4)8%ozk;r7_`E8ihyk$T-!RN$;?ZHfzMA*Smt!~20NhH4U;`x`w&8@;oB$v;>$&*N7 z=V^Y2L|^O_irYC7LwR9`Oo@))Kg}1na<7X!PdB!5BrT-d#qBrW<+jKOzIz1PNL;WS zIBhk$k)xK}hVu87UcMDj!2;B3^gu1S3VoHgp`5j#(AW$GxeDF+!G?0yfh|*ADj&v%5$8 zRhoTJs=eR+_~;`v;ivc$JD?xTHF)cdvc_6%w_LB+?jL?UiGN-DK#!{In?)|qtC4E`HF>DMC>Eeo?q0xve>#O#4uM6Z^b{fV!w`Eyh(pUPbb*ZcQb!sKp z*^S@M)(a~ETDjhM=j&nX9kw}FJaoUpt@SvqhB3?SoYyDuTI}muO>@l)`ZU)(tM^y) aqCSrP1s_A4Em-BERf6}S9ZHb7cg4SgzvTS@ literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..20fa415d57e17a08855f65099a5c93449aee94da GIT binary patch literal 2935 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�!XQjn^B1^deG_6M&s=l*0{NYGSv99ddjLEkm$Sr%B_= zfAf_nwENFa?(x5g!*Ik3=Rw?W9SPo`5irG z26sAxZvJE%wq=z#~VI%P8(g4`c0Kxha1 zl0&@~=4)Ljny_~U@Dq*E zc7|R#!vsJ37k;fzAW6ZYs<2{}>HyZcpF(XE8P-&daalN92M2oxg&Pn1eWeRWs_wY2 zG4Av-b`?D3?(TKO&Q{@;C%L=bX~Ud*PxfB!Zi?*=ciNrD2OYlDhj{LdwN@#N5Z@q} z`vS^BIV~gKK2%ETnh|eQ;nmHp&eld}d-o|{><@FH(&4y&BxIO}Mcv#vOb;We(w^eY z_Orc%&c@4*=sY{vg2{``mSeJqdk6{Ws0$kL;G(>tvD`y#1ma+_>ng?8K#gypWnV)_ z=uO%%#ikDB#x@l8SbpmC7IkTpHGyY^`mE0CGyraoO%~_U5^cLoNAv|YlOCS|0gi<_ z0O5)u&kV(KlNvKtRtMW)q(2Ad5+W-Jk6Tu0AlPJHHv!`z56%m=nf>1`yx=Ej8Kx&O zHcVFM^t_HLJQwgpU?mcw@P$Z*avUQa2=RIx#^sKw%cc+(9z-O(F8Rq^tgL|`qj*s} ze+zmlj^WL@gdFOQsj8-+;=}X>vGOioDyZ^TnilUggU8*BIcuSvuB4 zPE!73U|u!eK<4>J%)D#d9gKQuerz5x?!uKBym*KTcT_q~G85w_8_K8PQrl8*)V1&) Sm56+Y?}|}40Oyxq!}<@x`7L(< literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..efdc6d19d0b5c199215193513233a7b4e17ce7ef GIT binary patch literal 5784 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 literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..04c6ff0206152ee7635e4bbfa4749b2f5b338e82 GIT binary patch literal 1920 zcmah~OKT%X5bmCrM)F8D_Cm7caY$f6VQptwmUtnFvny+DgDn|pOrRk&(sWy^@yuB6 z8HKfwPcrOnPx%8m=CXeyxBP%PCFJB&a?UALJ+@X32@!Nnb@ijFzOMT8xLU3JSoxX# zQX%AbvhcG&{{}|72SN}*BN9_aDe6XK#3nOii&=VZMt1BlN9$Hpie2VXvP*<5oGT(6 zNoOW2i&B@=-D?Wh)oEUByzHs2%#PGqU#hy1d#DYQK{xAVGWQO9!OLMH^$fPJHqOND z;>{9Xa_qm@;@v}j*xqR#1aR~GXWnS34~is=3c?IQnfaQWP+XJkyNS#M{}3+VKU4(S2j$QgSK*@ zA>nD9S9vmydEDm#fSTsElBvu9A1js734F_(2T?CgIsb|L_0?t;k2Xic(RzP8jKuoq zy*TV&Jib7a9{hWmh%>c`mkF6|jb|ti6L`<2KfR zhvE}Bbr%Xq-7G*62#BR2Fk07mf8AE-N28!T)Sym@TEZo&s>P>C~(_D7%9S3 zL^xSlh)<()Cpdho2A;s87ZhH=XiaR$dwomad*iC`F?W=E8g7~Kq!-Iac-{a(jLCZo z-WK=#uhYE9<3IelQ7;*cdjt7o!Pg@4x9fq912$nkICOG9fbuGw(jD?$|Iz@|Nl2&0 zj9!{kGc!W-)KCvIE3~m3kI1>BttGHN2djI>S_UhYED0+!0PNJpnMJ}SVSGUh!k5mS zZ=tM14^CEL?;Fr-Gqfz9TI$X1eYgX_He1&iu+r49qF9jiv z+le`?w$Bfnxl?Rl&c5G;IdfmMk6Sx@-)DB$f7bEY+5lcB7%L?c_(DBLGSS5Y-Gx`P z@=nulHvIk8ZeG)S&ytg&kVzofYIm>Q@f*iJ_xCzYm>lfXEnRZV?O$XPe5;%W%)9MF z9jmU6cO_z-NGYB|%<0D<2sDca!==_-*66C?K^wWoWO<=%@Z7vy5FJchKjQ`{f?h(a zguuk7L_L_IuIFpyDY>M=oYMD!N2XB8x|yuj;O*{jlY4Lf*uKW5xM8b5x9diMMz!5) z^2Xk?4nOL&pMw=Ui#g*Y8lK93l)btSYX>k=Y(=6|S;6q{FNA*=%esdQhF!vWUg11G z6XOVVkMr|!FDh2lM{u3y7u~|S3#0=Km|dtKxNPoVP8|_1@ra-J)ZYXo*!xM3^p@Tz z+`UH+1v9`UsY(j;g&Au=in0bP!7#2$wyHr>s~O!gu?AaE*ivnn6d)>|Q4Mkhd4V;d zHd<-P;hEWj2{6=F3aJ{fAkYrFEihH4aQ=kX)SxJu;mQ_L&)^yhxGJ$|*Wip`fwI4H zzUG*fD3^Q`?fO$RLFbK+7Nf8kq$!bknl>kC+8J|2-#F*C89d(HFK_P_Z=ODKZ)oXz x7F(`j#nd>fSV_hc%r{v*tq-jhPDc=_ +# +# 128 --> 0.42261 +# 256 --> 0.57851 +# 512 --> 0.74851 +# 1024 --> 0.89384 +# 2048 --> 0.97583 +# +# Ideal Distribution Ratio = 0.74851/(1-0.74851) =2.98 +# Random Distribution Ration = 512/(5401-512)=0.105 +# +# Typical Distribution Ratio about 25% of Ideal one, still much higher than RDR + +BIG5_TYPICAL_DISTRIBUTION_RATIO = 0.75 + +#Char to FreqOrder table +BIG5_TABLE_SIZE = 5376 + +BIG5_CHAR_TO_FREQ_ORDER = ( + 1,1801,1506, 255,1431, 198, 9, 82, 6,5008, 177, 202,3681,1256,2821, 110, # 16 +3814, 33,3274, 261, 76, 44,2114, 16,2946,2187,1176, 659,3971, 26,3451,2653, # 32 +1198,3972,3350,4202, 410,2215, 302, 590, 361,1964, 8, 204, 58,4510,5009,1932, # 48 + 63,5010,5011, 317,1614, 75, 222, 159,4203,2417,1480,5012,3555,3091, 224,2822, # 64 +3682, 3, 10,3973,1471, 29,2787,1135,2866,1940, 873, 130,3275,1123, 312,5013, # 80 +4511,2052, 507, 252, 682,5014, 142,1915, 124, 206,2947, 34,3556,3204, 64, 604, # 96 +5015,2501,1977,1978, 155,1991, 645, 641,1606,5016,3452, 337, 72, 406,5017, 80, # 112 + 630, 238,3205,1509, 263, 939,1092,2654, 756,1440,1094,3453, 449, 69,2987, 591, # 128 + 179,2096, 471, 115,2035,1844, 60, 50,2988, 134, 806,1869, 734,2036,3454, 180, # 144 + 995,1607, 156, 537,2907, 688,5018, 319,1305, 779,2145, 514,2379, 298,4512, 359, # 160 +2502, 90,2716,1338, 663, 11, 906,1099,2553, 20,2441, 182, 532,1716,5019, 732, # 176 +1376,4204,1311,1420,3206, 25,2317,1056, 113, 399, 382,1950, 242,3455,2474, 529, # 192 +3276, 475,1447,3683,5020, 117, 21, 656, 810,1297,2300,2334,3557,5021, 126,4205, # 208 + 706, 456, 150, 613,4513, 71,1118,2037,4206, 145,3092, 85, 835, 486,2115,1246, # 224 +1426, 428, 727,1285,1015, 800, 106, 623, 303,1281,5022,2128,2359, 347,3815, 221, # 240 +3558,3135,5023,1956,1153,4207, 83, 296,1199,3093, 192, 624, 93,5024, 822,1898, # 256 +2823,3136, 795,2065, 991,1554,1542,1592, 27, 43,2867, 859, 139,1456, 860,4514, # 272 + 437, 712,3974, 164,2397,3137, 695, 211,3037,2097, 195,3975,1608,3559,3560,3684, # 288 +3976, 234, 811,2989,2098,3977,2233,1441,3561,1615,2380, 668,2077,1638, 305, 228, # 304 +1664,4515, 467, 415,5025, 262,2099,1593, 239, 108, 300, 200,1033, 512,1247,2078, # 320 +5026,5027,2176,3207,3685,2682, 593, 845,1062,3277, 88,1723,2038,3978,1951, 212, # 336 + 266, 152, 149, 468,1899,4208,4516, 77, 187,5028,3038, 37, 5,2990,5029,3979, # 352 +5030,5031, 39,2524,4517,2908,3208,2079, 55, 148, 74,4518, 545, 483,1474,1029, # 368 +1665, 217,1870,1531,3138,1104,2655,4209, 24, 172,3562, 900,3980,3563,3564,4519, # 384 + 32,1408,2824,1312, 329, 487,2360,2251,2717, 784,2683, 4,3039,3351,1427,1789, # 400 + 188, 109, 499,5032,3686,1717,1790, 888,1217,3040,4520,5033,3565,5034,3352,1520, # 416 +3687,3981, 196,1034, 775,5035,5036, 929,1816, 249, 439, 38,5037,1063,5038, 794, # 432 +3982,1435,2301, 46, 178,3278,2066,5039,2381,5040, 214,1709,4521, 804, 35, 707, # 448 + 324,3688,1601,2554, 140, 459,4210,5041,5042,1365, 839, 272, 978,2262,2580,3456, # 464 +2129,1363,3689,1423, 697, 100,3094, 48, 70,1231, 495,3139,2196,5043,1294,5044, # 480 +2080, 462, 586,1042,3279, 853, 256, 988, 185,2382,3457,1698, 434,1084,5045,3458, # 496 + 314,2625,2788,4522,2335,2336, 569,2285, 637,1817,2525, 757,1162,1879,1616,3459, # 512 + 287,1577,2116, 768,4523,1671,2868,3566,2526,1321,3816, 909,2418,5046,4211, 933, # 528 +3817,4212,2053,2361,1222,4524, 765,2419,1322, 786,4525,5047,1920,1462,1677,2909, # 544 +1699,5048,4526,1424,2442,3140,3690,2600,3353,1775,1941,3460,3983,4213, 309,1369, # 560 +1130,2825, 364,2234,1653,1299,3984,3567,3985,3986,2656, 525,1085,3041, 902,2001, # 576 +1475, 964,4527, 421,1845,1415,1057,2286, 940,1364,3141, 376,4528,4529,1381, 7, # 592 +2527, 983,2383, 336,1710,2684,1846, 321,3461, 559,1131,3042,2752,1809,1132,1313, # 608 + 265,1481,1858,5049, 352,1203,2826,3280, 167,1089, 420,2827, 776, 792,1724,3568, # 624 +4214,2443,3281,5050,4215,5051, 446, 229, 333,2753, 901,3818,1200,1557,4530,2657, # 640 +1921, 395,2754,2685,3819,4216,1836, 125, 916,3209,2626,4531,5052,5053,3820,5054, # 656 +5055,5056,4532,3142,3691,1133,2555,1757,3462,1510,2318,1409,3569,5057,2146, 438, # 672 +2601,2910,2384,3354,1068, 958,3043, 461, 311,2869,2686,4217,1916,3210,4218,1979, # 688 + 383, 750,2755,2627,4219, 274, 539, 385,1278,1442,5058,1154,1965, 384, 561, 210, # 704 + 98,1295,2556,3570,5059,1711,2420,1482,3463,3987,2911,1257, 129,5060,3821, 642, # 720 + 523,2789,2790,2658,5061, 141,2235,1333, 68, 176, 441, 876, 907,4220, 603,2602, # 736 + 710, 171,3464, 404, 549, 18,3143,2398,1410,3692,1666,5062,3571,4533,2912,4534, # 752 +5063,2991, 368,5064, 146, 366, 99, 871,3693,1543, 748, 807,1586,1185, 22,2263, # 768 + 379,3822,3211,5065,3212, 505,1942,2628,1992,1382,2319,5066, 380,2362, 218, 702, # 784 +1818,1248,3465,3044,3572,3355,3282,5067,2992,3694, 930,3283,3823,5068, 59,5069, # 800 + 585, 601,4221, 497,3466,1112,1314,4535,1802,5070,1223,1472,2177,5071, 749,1837, # 816 + 690,1900,3824,1773,3988,1476, 429,1043,1791,2236,2117, 917,4222, 447,1086,1629, # 832 +5072, 556,5073,5074,2021,1654, 844,1090, 105, 550, 966,1758,2828,1008,1783, 686, # 848 +1095,5075,2287, 793,1602,5076,3573,2603,4536,4223,2948,2302,4537,3825, 980,2503, # 864 + 544, 353, 527,4538, 908,2687,2913,5077, 381,2629,1943,1348,5078,1341,1252, 560, # 880 +3095,5079,3467,2870,5080,2054, 973, 886,2081, 143,4539,5081,5082, 157,3989, 496, # 896 +4224, 57, 840, 540,2039,4540,4541,3468,2118,1445, 970,2264,1748,1966,2082,4225, # 912 +3144,1234,1776,3284,2829,3695, 773,1206,2130,1066,2040,1326,3990,1738,1725,4226, # 928 + 279,3145, 51,1544,2604, 423,1578,2131,2067, 173,4542,1880,5083,5084,1583, 264, # 944 + 610,3696,4543,2444, 280, 154,5085,5086,5087,1739, 338,1282,3096, 693,2871,1411, # 960 +1074,3826,2445,5088,4544,5089,5090,1240, 952,2399,5091,2914,1538,2688, 685,1483, # 976 +4227,2475,1436, 953,4228,2055,4545, 671,2400, 79,4229,2446,3285, 608, 567,2689, # 992 +3469,4230,4231,1691, 393,1261,1792,2401,5092,4546,5093,5094,5095,5096,1383,1672, # 1008 +3827,3213,1464, 522,1119, 661,1150, 216, 675,4547,3991,1432,3574, 609,4548,2690, # 1024 +2402,5097,5098,5099,4232,3045, 0,5100,2476, 315, 231,2447, 301,3356,4549,2385, # 1040 +5101, 233,4233,3697,1819,4550,4551,5102, 96,1777,1315,2083,5103, 257,5104,1810, # 1056 +3698,2718,1139,1820,4234,2022,1124,2164,2791,1778,2659,5105,3097, 363,1655,3214, # 1072 +5106,2993,5107,5108,5109,3992,1567,3993, 718, 103,3215, 849,1443, 341,3357,2949, # 1088 +1484,5110,1712, 127, 67, 339,4235,2403, 679,1412, 821,5111,5112, 834, 738, 351, # 1104 +2994,2147, 846, 235,1497,1881, 418,1993,3828,2719, 186,1100,2148,2756,3575,1545, # 1120 +1355,2950,2872,1377, 583,3994,4236,2581,2995,5113,1298,3699,1078,2557,3700,2363, # 1136 + 78,3829,3830, 267,1289,2100,2002,1594,4237, 348, 369,1274,2197,2178,1838,4552, # 1152 +1821,2830,3701,2757,2288,2003,4553,2951,2758, 144,3358, 882,4554,3995,2759,3470, # 1168 +4555,2915,5114,4238,1726, 320,5115,3996,3046, 788,2996,5116,2831,1774,1327,2873, # 1184 +3997,2832,5117,1306,4556,2004,1700,3831,3576,2364,2660, 787,2023, 506, 824,3702, # 1200 + 534, 323,4557,1044,3359,2024,1901, 946,3471,5118,1779,1500,1678,5119,1882,4558, # 1216 + 165, 243,4559,3703,2528, 123, 683,4239, 764,4560, 36,3998,1793, 589,2916, 816, # 1232 + 626,1667,3047,2237,1639,1555,1622,3832,3999,5120,4000,2874,1370,1228,1933, 891, # 1248 +2084,2917, 304,4240,5121, 292,2997,2720,3577, 691,2101,4241,1115,4561, 118, 662, # 1264 +5122, 611,1156, 854,2386,1316,2875, 2, 386, 515,2918,5123,5124,3286, 868,2238, # 1280 +1486, 855,2661, 785,2216,3048,5125,1040,3216,3578,5126,3146, 448,5127,1525,5128, # 1296 +2165,4562,5129,3833,5130,4242,2833,3579,3147, 503, 818,4001,3148,1568, 814, 676, # 1312 +1444, 306,1749,5131,3834,1416,1030, 197,1428, 805,2834,1501,4563,5132,5133,5134, # 1328 +1994,5135,4564,5136,5137,2198, 13,2792,3704,2998,3149,1229,1917,5138,3835,2132, # 1344 +5139,4243,4565,2404,3580,5140,2217,1511,1727,1120,5141,5142, 646,3836,2448, 307, # 1360 +5143,5144,1595,3217,5145,5146,5147,3705,1113,1356,4002,1465,2529,2530,5148, 519, # 1376 +5149, 128,2133, 92,2289,1980,5150,4003,1512, 342,3150,2199,5151,2793,2218,1981, # 1392 +3360,4244, 290,1656,1317, 789, 827,2365,5152,3837,4566, 562, 581,4004,5153, 401, # 1408 +4567,2252, 94,4568,5154,1399,2794,5155,1463,2025,4569,3218,1944,5156, 828,1105, # 1424 +4245,1262,1394,5157,4246, 605,4570,5158,1784,2876,5159,2835, 819,2102, 578,2200, # 1440 +2952,5160,1502, 436,3287,4247,3288,2836,4005,2919,3472,3473,5161,2721,2320,5162, # 1456 +5163,2337,2068, 23,4571, 193, 826,3838,2103, 699,1630,4248,3098, 390,1794,1064, # 1472 +3581,5164,1579,3099,3100,1400,5165,4249,1839,1640,2877,5166,4572,4573, 137,4250, # 1488 + 598,3101,1967, 780, 104, 974,2953,5167, 278, 899, 253, 402, 572, 504, 493,1339, # 1504 +5168,4006,1275,4574,2582,2558,5169,3706,3049,3102,2253, 565,1334,2722, 863, 41, # 1520 +5170,5171,4575,5172,1657,2338, 19, 463,2760,4251, 606,5173,2999,3289,1087,2085, # 1536 +1323,2662,3000,5174,1631,1623,1750,4252,2691,5175,2878, 791,2723,2663,2339, 232, # 1552 +2421,5176,3001,1498,5177,2664,2630, 755,1366,3707,3290,3151,2026,1609, 119,1918, # 1568 +3474, 862,1026,4253,5178,4007,3839,4576,4008,4577,2265,1952,2477,5179,1125, 817, # 1584 +4254,4255,4009,1513,1766,2041,1487,4256,3050,3291,2837,3840,3152,5180,5181,1507, # 1600 +5182,2692, 733, 40,1632,1106,2879, 345,4257, 841,2531, 230,4578,3002,1847,3292, # 1616 +3475,5183,1263, 986,3476,5184, 735, 879, 254,1137, 857, 622,1300,1180,1388,1562, # 1632 +4010,4011,2954, 967,2761,2665,1349, 592,2134,1692,3361,3003,1995,4258,1679,4012, # 1648 +1902,2188,5185, 739,3708,2724,1296,1290,5186,4259,2201,2202,1922,1563,2605,2559, # 1664 +1871,2762,3004,5187, 435,5188, 343,1108, 596, 17,1751,4579,2239,3477,3709,5189, # 1680 +4580, 294,3582,2955,1693, 477, 979, 281,2042,3583, 643,2043,3710,2631,2795,2266, # 1696 +1031,2340,2135,2303,3584,4581, 367,1249,2560,5190,3585,5191,4582,1283,3362,2005, # 1712 + 240,1762,3363,4583,4584, 836,1069,3153, 474,5192,2149,2532, 268,3586,5193,3219, # 1728 +1521,1284,5194,1658,1546,4260,5195,3587,3588,5196,4261,3364,2693,1685,4262, 961, # 1744 +1673,2632, 190,2006,2203,3841,4585,4586,5197, 570,2504,3711,1490,5198,4587,2633, # 1760 +3293,1957,4588, 584,1514, 396,1045,1945,5199,4589,1968,2449,5200,5201,4590,4013, # 1776 + 619,5202,3154,3294, 215,2007,2796,2561,3220,4591,3221,4592, 763,4263,3842,4593, # 1792 +5203,5204,1958,1767,2956,3365,3712,1174, 452,1477,4594,3366,3155,5205,2838,1253, # 1808 +2387,2189,1091,2290,4264, 492,5206, 638,1169,1825,2136,1752,4014, 648, 926,1021, # 1824 +1324,4595, 520,4596, 997, 847,1007, 892,4597,3843,2267,1872,3713,2405,1785,4598, # 1840 +1953,2957,3103,3222,1728,4265,2044,3714,4599,2008,1701,3156,1551, 30,2268,4266, # 1856 +5207,2027,4600,3589,5208, 501,5209,4267, 594,3478,2166,1822,3590,3479,3591,3223, # 1872 + 829,2839,4268,5210,1680,3157,1225,4269,5211,3295,4601,4270,3158,2341,5212,4602, # 1888 +4271,5213,4015,4016,5214,1848,2388,2606,3367,5215,4603, 374,4017, 652,4272,4273, # 1904 + 375,1140, 798,5216,5217,5218,2366,4604,2269, 546,1659, 138,3051,2450,4605,5219, # 1920 +2254, 612,1849, 910, 796,3844,1740,1371, 825,3845,3846,5220,2920,2562,5221, 692, # 1936 + 444,3052,2634, 801,4606,4274,5222,1491, 244,1053,3053,4275,4276, 340,5223,4018, # 1952 +1041,3005, 293,1168, 87,1357,5224,1539, 959,5225,2240, 721, 694,4277,3847, 219, # 1968 +1478, 644,1417,3368,2666,1413,1401,1335,1389,4019,5226,5227,3006,2367,3159,1826, # 1984 + 730,1515, 184,2840, 66,4607,5228,1660,2958, 246,3369, 378,1457, 226,3480, 975, # 2000 +4020,2959,1264,3592, 674, 696,5229, 163,5230,1141,2422,2167, 713,3593,3370,4608, # 2016 +4021,5231,5232,1186, 15,5233,1079,1070,5234,1522,3224,3594, 276,1050,2725, 758, # 2032 +1126, 653,2960,3296,5235,2342, 889,3595,4022,3104,3007, 903,1250,4609,4023,3481, # 2048 +3596,1342,1681,1718, 766,3297, 286, 89,2961,3715,5236,1713,5237,2607,3371,3008, # 2064 +5238,2962,2219,3225,2880,5239,4610,2505,2533, 181, 387,1075,4024, 731,2190,3372, # 2080 +5240,3298, 310, 313,3482,2304, 770,4278, 54,3054, 189,4611,3105,3848,4025,5241, # 2096 +1230,1617,1850, 355,3597,4279,4612,3373, 111,4280,3716,1350,3160,3483,3055,4281, # 2112 +2150,3299,3598,5242,2797,4026,4027,3009, 722,2009,5243,1071, 247,1207,2343,2478, # 2128 +1378,4613,2010, 864,1437,1214,4614, 373,3849,1142,2220, 667,4615, 442,2763,2563, # 2144 +3850,4028,1969,4282,3300,1840, 837, 170,1107, 934,1336,1883,5244,5245,2119,4283, # 2160 +2841, 743,1569,5246,4616,4284, 582,2389,1418,3484,5247,1803,5248, 357,1395,1729, # 2176 +3717,3301,2423,1564,2241,5249,3106,3851,1633,4617,1114,2086,4285,1532,5250, 482, # 2192 +2451,4618,5251,5252,1492, 833,1466,5253,2726,3599,1641,2842,5254,1526,1272,3718, # 2208 +4286,1686,1795, 416,2564,1903,1954,1804,5255,3852,2798,3853,1159,2321,5256,2881, # 2224 +4619,1610,1584,3056,2424,2764, 443,3302,1163,3161,5257,5258,4029,5259,4287,2506, # 2240 +3057,4620,4030,3162,2104,1647,3600,2011,1873,4288,5260,4289, 431,3485,5261, 250, # 2256 + 97, 81,4290,5262,1648,1851,1558, 160, 848,5263, 866, 740,1694,5264,2204,2843, # 2272 +3226,4291,4621,3719,1687, 950,2479, 426, 469,3227,3720,3721,4031,5265,5266,1188, # 2288 + 424,1996, 861,3601,4292,3854,2205,2694, 168,1235,3602,4293,5267,2087,1674,4622, # 2304 +3374,3303, 220,2565,1009,5268,3855, 670,3010, 332,1208, 717,5269,5270,3603,2452, # 2320 +4032,3375,5271, 513,5272,1209,2882,3376,3163,4623,1080,5273,5274,5275,5276,2534, # 2336 +3722,3604, 815,1587,4033,4034,5277,3605,3486,3856,1254,4624,1328,3058,1390,4035, # 2352 +1741,4036,3857,4037,5278, 236,3858,2453,3304,5279,5280,3723,3859,1273,3860,4625, # 2368 +5281, 308,5282,4626, 245,4627,1852,2480,1307,2583, 430, 715,2137,2454,5283, 270, # 2384 + 199,2883,4038,5284,3606,2727,1753, 761,1754, 725,1661,1841,4628,3487,3724,5285, # 2400 +5286, 587, 14,3305, 227,2608, 326, 480,2270, 943,2765,3607, 291, 650,1884,5287, # 2416 +1702,1226, 102,1547, 62,3488, 904,4629,3489,1164,4294,5288,5289,1224,1548,2766, # 2432 + 391, 498,1493,5290,1386,1419,5291,2056,1177,4630, 813, 880,1081,2368, 566,1145, # 2448 +4631,2291,1001,1035,2566,2609,2242, 394,1286,5292,5293,2069,5294, 86,1494,1730, # 2464 +4039, 491,1588, 745, 897,2963, 843,3377,4040,2767,2884,3306,1768, 998,2221,2070, # 2480 + 397,1827,1195,1970,3725,3011,3378, 284,5295,3861,2507,2138,2120,1904,5296,4041, # 2496 +2151,4042,4295,1036,3490,1905, 114,2567,4296, 209,1527,5297,5298,2964,2844,2635, # 2512 +2390,2728,3164, 812,2568,5299,3307,5300,1559, 737,1885,3726,1210, 885, 28,2695, # 2528 +3608,3862,5301,4297,1004,1780,4632,5302, 346,1982,2222,2696,4633,3863,1742, 797, # 2544 +1642,4043,1934,1072,1384,2152, 896,4044,3308,3727,3228,2885,3609,5303,2569,1959, # 2560 +4634,2455,1786,5304,5305,5306,4045,4298,1005,1308,3728,4299,2729,4635,4636,1528, # 2576 +2610, 161,1178,4300,1983, 987,4637,1101,4301, 631,4046,1157,3229,2425,1343,1241, # 2592 +1016,2243,2570, 372, 877,2344,2508,1160, 555,1935, 911,4047,5307, 466,1170, 169, # 2608 +1051,2921,2697,3729,2481,3012,1182,2012,2571,1251,2636,5308, 992,2345,3491,1540, # 2624 +2730,1201,2071,2406,1997,2482,5309,4638, 528,1923,2191,1503,1874,1570,2369,3379, # 2640 +3309,5310, 557,1073,5311,1828,3492,2088,2271,3165,3059,3107, 767,3108,2799,4639, # 2656 +1006,4302,4640,2346,1267,2179,3730,3230, 778,4048,3231,2731,1597,2667,5312,4641, # 2672 +5313,3493,5314,5315,5316,3310,2698,1433,3311, 131, 95,1504,4049, 723,4303,3166, # 2688 +1842,3610,2768,2192,4050,2028,2105,3731,5317,3013,4051,1218,5318,3380,3232,4052, # 2704 +4304,2584, 248,1634,3864, 912,5319,2845,3732,3060,3865, 654, 53,5320,3014,5321, # 2720 +1688,4642, 777,3494,1032,4053,1425,5322, 191, 820,2121,2846, 971,4643, 931,3233, # 2736 + 135, 664, 783,3866,1998, 772,2922,1936,4054,3867,4644,2923,3234, 282,2732, 640, # 2752 +1372,3495,1127, 922, 325,3381,5323,5324, 711,2045,5325,5326,4055,2223,2800,1937, # 2768 +4056,3382,2224,2255,3868,2305,5327,4645,3869,1258,3312,4057,3235,2139,2965,4058, # 2784 +4059,5328,2225, 258,3236,4646, 101,1227,5329,3313,1755,5330,1391,3314,5331,2924, # 2800 +2057, 893,5332,5333,5334,1402,4305,2347,5335,5336,3237,3611,5337,5338, 878,1325, # 2816 +1781,2801,4647, 259,1385,2585, 744,1183,2272,4648,5339,4060,2509,5340, 684,1024, # 2832 +4306,5341, 472,3612,3496,1165,3315,4061,4062, 322,2153, 881, 455,1695,1152,1340, # 2848 + 660, 554,2154,4649,1058,4650,4307, 830,1065,3383,4063,4651,1924,5342,1703,1919, # 2864 +5343, 932,2273, 122,5344,4652, 947, 677,5345,3870,2637, 297,1906,1925,2274,4653, # 2880 +2322,3316,5346,5347,4308,5348,4309, 84,4310, 112, 989,5349, 547,1059,4064, 701, # 2896 +3613,1019,5350,4311,5351,3497, 942, 639, 457,2306,2456, 993,2966, 407, 851, 494, # 2912 +4654,3384, 927,5352,1237,5353,2426,3385, 573,4312, 680, 921,2925,1279,1875, 285, # 2928 + 790,1448,1984, 719,2168,5354,5355,4655,4065,4066,1649,5356,1541, 563,5357,1077, # 2944 +5358,3386,3061,3498, 511,3015,4067,4068,3733,4069,1268,2572,3387,3238,4656,4657, # 2960 +5359, 535,1048,1276,1189,2926,2029,3167,1438,1373,2847,2967,1134,2013,5360,4313, # 2976 +1238,2586,3109,1259,5361, 700,5362,2968,3168,3734,4314,5363,4315,1146,1876,1907, # 2992 +4658,2611,4070, 781,2427, 132,1589, 203, 147, 273,2802,2407, 898,1787,2155,4071, # 3008 +4072,5364,3871,2803,5365,5366,4659,4660,5367,3239,5368,1635,3872, 965,5369,1805, # 3024 +2699,1516,3614,1121,1082,1329,3317,4073,1449,3873, 65,1128,2848,2927,2769,1590, # 3040 +3874,5370,5371, 12,2668, 45, 976,2587,3169,4661, 517,2535,1013,1037,3240,5372, # 3056 +3875,2849,5373,3876,5374,3499,5375,2612, 614,1999,2323,3877,3110,2733,2638,5376, # 3072 +2588,4316, 599,1269,5377,1811,3735,5378,2700,3111, 759,1060, 489,1806,3388,3318, # 3088 +1358,5379,5380,2391,1387,1215,2639,2256, 490,5381,5382,4317,1759,2392,2348,5383, # 3104 +4662,3878,1908,4074,2640,1807,3241,4663,3500,3319,2770,2349, 874,5384,5385,3501, # 3120 +3736,1859, 91,2928,3737,3062,3879,4664,5386,3170,4075,2669,5387,3502,1202,1403, # 3136 +3880,2969,2536,1517,2510,4665,3503,2511,5388,4666,5389,2701,1886,1495,1731,4076, # 3152 +2370,4667,5390,2030,5391,5392,4077,2702,1216, 237,2589,4318,2324,4078,3881,4668, # 3168 +4669,2703,3615,3504, 445,4670,5393,5394,5395,5396,2771, 61,4079,3738,1823,4080, # 3184 +5397, 687,2046, 935, 925, 405,2670, 703,1096,1860,2734,4671,4081,1877,1367,2704, # 3200 +3389, 918,2106,1782,2483, 334,3320,1611,1093,4672, 564,3171,3505,3739,3390, 945, # 3216 +2641,2058,4673,5398,1926, 872,4319,5399,3506,2705,3112, 349,4320,3740,4082,4674, # 3232 +3882,4321,3741,2156,4083,4675,4676,4322,4677,2408,2047, 782,4084, 400, 251,4323, # 3248 +1624,5400,5401, 277,3742, 299,1265, 476,1191,3883,2122,4324,4325,1109, 205,5402, # 3264 +2590,1000,2157,3616,1861,5403,5404,5405,4678,5406,4679,2573, 107,2484,2158,4085, # 3280 +3507,3172,5407,1533, 541,1301, 158, 753,4326,2886,3617,5408,1696, 370,1088,4327, # 3296 +4680,3618, 579, 327, 440, 162,2244, 269,1938,1374,3508, 968,3063, 56,1396,3113, # 3312 +2107,3321,3391,5409,1927,2159,4681,3016,5410,3619,5411,5412,3743,4682,2485,5413, # 3328 +2804,5414,1650,4683,5415,2613,5416,5417,4086,2671,3392,1149,3393,4087,3884,4088, # 3344 +5418,1076, 49,5419, 951,3242,3322,3323, 450,2850, 920,5420,1812,2805,2371,4328, # 3360 +1909,1138,2372,3885,3509,5421,3243,4684,1910,1147,1518,2428,4685,3886,5422,4686, # 3376 +2393,2614, 260,1796,3244,5423,5424,3887,3324, 708,5425,3620,1704,5426,3621,1351, # 3392 +1618,3394,3017,1887, 944,4329,3395,4330,3064,3396,4331,5427,3744, 422, 413,1714, # 3408 +3325, 500,2059,2350,4332,2486,5428,1344,1911, 954,5429,1668,5430,5431,4089,2409, # 3424 +4333,3622,3888,4334,5432,2307,1318,2512,3114, 133,3115,2887,4687, 629, 31,2851, # 3440 +2706,3889,4688, 850, 949,4689,4090,2970,1732,2089,4335,1496,1853,5433,4091, 620, # 3456 +3245, 981,1242,3745,3397,1619,3746,1643,3326,2140,2457,1971,1719,3510,2169,5434, # 3472 +3246,5435,5436,3398,1829,5437,1277,4690,1565,2048,5438,1636,3623,3116,5439, 869, # 3488 +2852, 655,3890,3891,3117,4092,3018,3892,1310,3624,4691,5440,5441,5442,1733, 558, # 3504 +4692,3747, 335,1549,3065,1756,4336,3748,1946,3511,1830,1291,1192, 470,2735,2108, # 3520 +2806, 913,1054,4093,5443,1027,5444,3066,4094,4693, 982,2672,3399,3173,3512,3247, # 3536 +3248,1947,2807,5445, 571,4694,5446,1831,5447,3625,2591,1523,2429,5448,2090, 984, # 3552 +4695,3749,1960,5449,3750, 852, 923,2808,3513,3751, 969,1519, 999,2049,2325,1705, # 3568 +5450,3118, 615,1662, 151, 597,4095,2410,2326,1049, 275,4696,3752,4337, 568,3753, # 3584 +3626,2487,4338,3754,5451,2430,2275, 409,3249,5452,1566,2888,3514,1002, 769,2853, # 3600 + 194,2091,3174,3755,2226,3327,4339, 628,1505,5453,5454,1763,2180,3019,4096, 521, # 3616 +1161,2592,1788,2206,2411,4697,4097,1625,4340,4341, 412, 42,3119, 464,5455,2642, # 3632 +4698,3400,1760,1571,2889,3515,2537,1219,2207,3893,2643,2141,2373,4699,4700,3328, # 3648 +1651,3401,3627,5456,5457,3628,2488,3516,5458,3756,5459,5460,2276,2092, 460,5461, # 3664 +4701,5462,3020, 962, 588,3629, 289,3250,2644,1116, 52,5463,3067,1797,5464,5465, # 3680 +5466,1467,5467,1598,1143,3757,4342,1985,1734,1067,4702,1280,3402, 465,4703,1572, # 3696 + 510,5468,1928,2245,1813,1644,3630,5469,4704,3758,5470,5471,2673,1573,1534,5472, # 3712 +5473, 536,1808,1761,3517,3894,3175,2645,5474,5475,5476,4705,3518,2929,1912,2809, # 3728 +5477,3329,1122, 377,3251,5478, 360,5479,5480,4343,1529, 551,5481,2060,3759,1769, # 3744 +2431,5482,2930,4344,3330,3120,2327,2109,2031,4706,1404, 136,1468,1479, 672,1171, # 3760 +3252,2308, 271,3176,5483,2772,5484,2050, 678,2736, 865,1948,4707,5485,2014,4098, # 3776 +2971,5486,2737,2227,1397,3068,3760,4708,4709,1735,2931,3403,3631,5487,3895, 509, # 3792 +2854,2458,2890,3896,5488,5489,3177,3178,4710,4345,2538,4711,2309,1166,1010, 552, # 3808 + 681,1888,5490,5491,2972,2973,4099,1287,1596,1862,3179, 358, 453, 736, 175, 478, # 3824 +1117, 905,1167,1097,5492,1854,1530,5493,1706,5494,2181,3519,2292,3761,3520,3632, # 3840 +4346,2093,4347,5495,3404,1193,2489,4348,1458,2193,2208,1863,1889,1421,3331,2932, # 3856 +3069,2182,3521, 595,2123,5496,4100,5497,5498,4349,1707,2646, 223,3762,1359, 751, # 3872 +3121, 183,3522,5499,2810,3021, 419,2374, 633, 704,3897,2394, 241,5500,5501,5502, # 3888 + 838,3022,3763,2277,2773,2459,3898,1939,2051,4101,1309,3122,2246,1181,5503,1136, # 3904 +2209,3899,2375,1446,4350,2310,4712,5504,5505,4351,1055,2615, 484,3764,5506,4102, # 3920 + 625,4352,2278,3405,1499,4353,4103,5507,4104,4354,3253,2279,2280,3523,5508,5509, # 3936 +2774, 808,2616,3765,3406,4105,4355,3123,2539, 526,3407,3900,4356, 955,5510,1620, # 3952 +4357,2647,2432,5511,1429,3766,1669,1832, 994, 928,5512,3633,1260,5513,5514,5515, # 3968 +1949,2293, 741,2933,1626,4358,2738,2460, 867,1184, 362,3408,1392,5516,5517,4106, # 3984 +4359,1770,1736,3254,2934,4713,4714,1929,2707,1459,1158,5518,3070,3409,2891,1292, # 4000 +1930,2513,2855,3767,1986,1187,2072,2015,2617,4360,5519,2574,2514,2170,3768,2490, # 4016 +3332,5520,3769,4715,5521,5522, 666,1003,3023,1022,3634,4361,5523,4716,1814,2257, # 4032 + 574,3901,1603, 295,1535, 705,3902,4362, 283, 858, 417,5524,5525,3255,4717,4718, # 4048 +3071,1220,1890,1046,2281,2461,4107,1393,1599, 689,2575, 388,4363,5526,2491, 802, # 4064 +5527,2811,3903,2061,1405,2258,5528,4719,3904,2110,1052,1345,3256,1585,5529, 809, # 4080 +5530,5531,5532, 575,2739,3524, 956,1552,1469,1144,2328,5533,2329,1560,2462,3635, # 4096 +3257,4108, 616,2210,4364,3180,2183,2294,5534,1833,5535,3525,4720,5536,1319,3770, # 4112 +3771,1211,3636,1023,3258,1293,2812,5537,5538,5539,3905, 607,2311,3906, 762,2892, # 4128 +1439,4365,1360,4721,1485,3072,5540,4722,1038,4366,1450,2062,2648,4367,1379,4723, # 4144 +2593,5541,5542,4368,1352,1414,2330,2935,1172,5543,5544,3907,3908,4724,1798,1451, # 4160 +5545,5546,5547,5548,2936,4109,4110,2492,2351, 411,4111,4112,3637,3333,3124,4725, # 4176 +1561,2674,1452,4113,1375,5549,5550, 47,2974, 316,5551,1406,1591,2937,3181,5552, # 4192 +1025,2142,3125,3182, 354,2740, 884,2228,4369,2412, 508,3772, 726,3638, 996,2433, # 4208 +3639, 729,5553, 392,2194,1453,4114,4726,3773,5554,5555,2463,3640,2618,1675,2813, # 4224 + 919,2352,2975,2353,1270,4727,4115, 73,5556,5557, 647,5558,3259,2856,2259,1550, # 4240 +1346,3024,5559,1332, 883,3526,5560,5561,5562,5563,3334,2775,5564,1212, 831,1347, # 4256 +4370,4728,2331,3909,1864,3073, 720,3910,4729,4730,3911,5565,4371,5566,5567,4731, # 4272 +5568,5569,1799,4732,3774,2619,4733,3641,1645,2376,4734,5570,2938, 669,2211,2675, # 4288 +2434,5571,2893,5572,5573,1028,3260,5574,4372,2413,5575,2260,1353,5576,5577,4735, # 4304 +3183, 518,5578,4116,5579,4373,1961,5580,2143,4374,5581,5582,3025,2354,2355,3912, # 4320 + 516,1834,1454,4117,2708,4375,4736,2229,2620,1972,1129,3642,5583,2776,5584,2976, # 4336 +1422, 577,1470,3026,1524,3410,5585,5586, 432,4376,3074,3527,5587,2594,1455,2515, # 4352 +2230,1973,1175,5588,1020,2741,4118,3528,4737,5589,2742,5590,1743,1361,3075,3529, # 4368 +2649,4119,4377,4738,2295, 895, 924,4378,2171, 331,2247,3076, 166,1627,3077,1098, # 4384 +5591,1232,2894,2231,3411,4739, 657, 403,1196,2377, 542,3775,3412,1600,4379,3530, # 4400 +5592,4740,2777,3261, 576, 530,1362,4741,4742,2540,2676,3776,4120,5593, 842,3913, # 4416 +5594,2814,2032,1014,4121, 213,2709,3413, 665, 621,4380,5595,3777,2939,2435,5596, # 4432 +2436,3335,3643,3414,4743,4381,2541,4382,4744,3644,1682,4383,3531,1380,5597, 724, # 4448 +2282, 600,1670,5598,1337,1233,4745,3126,2248,5599,1621,4746,5600, 651,4384,5601, # 4464 +1612,4385,2621,5602,2857,5603,2743,2312,3078,5604, 716,2464,3079, 174,1255,2710, # 4480 +4122,3645, 548,1320,1398, 728,4123,1574,5605,1891,1197,3080,4124,5606,3081,3082, # 4496 +3778,3646,3779, 747,5607, 635,4386,4747,5608,5609,5610,4387,5611,5612,4748,5613, # 4512 +3415,4749,2437, 451,5614,3780,2542,2073,4388,2744,4389,4125,5615,1764,4750,5616, # 4528 +4390, 350,4751,2283,2395,2493,5617,4391,4126,2249,1434,4127, 488,4752, 458,4392, # 4544 +4128,3781, 771,1330,2396,3914,2576,3184,2160,2414,1553,2677,3185,4393,5618,2494, # 4560 +2895,2622,1720,2711,4394,3416,4753,5619,2543,4395,5620,3262,4396,2778,5621,2016, # 4576 +2745,5622,1155,1017,3782,3915,5623,3336,2313, 201,1865,4397,1430,5624,4129,5625, # 4592 +5626,5627,5628,5629,4398,1604,5630, 414,1866, 371,2595,4754,4755,3532,2017,3127, # 4608 +4756,1708, 960,4399, 887, 389,2172,1536,1663,1721,5631,2232,4130,2356,2940,1580, # 4624 +5632,5633,1744,4757,2544,4758,4759,5634,4760,5635,2074,5636,4761,3647,3417,2896, # 4640 +4400,5637,4401,2650,3418,2815, 673,2712,2465, 709,3533,4131,3648,4402,5638,1148, # 4656 + 502, 634,5639,5640,1204,4762,3649,1575,4763,2623,3783,5641,3784,3128, 948,3263, # 4672 + 121,1745,3916,1110,5642,4403,3083,2516,3027,4132,3785,1151,1771,3917,1488,4133, # 4688 +1987,5643,2438,3534,5644,5645,2094,5646,4404,3918,1213,1407,2816, 531,2746,2545, # 4704 +3264,1011,1537,4764,2779,4405,3129,1061,5647,3786,3787,1867,2897,5648,2018, 120, # 4720 +4406,4407,2063,3650,3265,2314,3919,2678,3419,1955,4765,4134,5649,3535,1047,2713, # 4736 +1266,5650,1368,4766,2858, 649,3420,3920,2546,2747,1102,2859,2679,5651,5652,2000, # 4752 +5653,1111,3651,2977,5654,2495,3921,3652,2817,1855,3421,3788,5655,5656,3422,2415, # 4768 +2898,3337,3266,3653,5657,2577,5658,3654,2818,4135,1460, 856,5659,3655,5660,2899, # 4784 +2978,5661,2900,3922,5662,4408, 632,2517, 875,3923,1697,3924,2296,5663,5664,4767, # 4800 +3028,1239, 580,4768,4409,5665, 914, 936,2075,1190,4136,1039,2124,5666,5667,5668, # 4816 +5669,3423,1473,5670,1354,4410,3925,4769,2173,3084,4137, 915,3338,4411,4412,3339, # 4832 +1605,1835,5671,2748, 398,3656,4413,3926,4138, 328,1913,2860,4139,3927,1331,4414, # 4848 +3029, 937,4415,5672,3657,4140,4141,3424,2161,4770,3425, 524, 742, 538,3085,1012, # 4864 +5673,5674,3928,2466,5675, 658,1103, 225,3929,5676,5677,4771,5678,4772,5679,3267, # 4880 +1243,5680,4142, 963,2250,4773,5681,2714,3658,3186,5682,5683,2596,2332,5684,4774, # 4896 +5685,5686,5687,3536, 957,3426,2547,2033,1931,2941,2467, 870,2019,3659,1746,2780, # 4912 +2781,2439,2468,5688,3930,5689,3789,3130,3790,3537,3427,3791,5690,1179,3086,5691, # 4928 +3187,2378,4416,3792,2548,3188,3131,2749,4143,5692,3428,1556,2549,2297, 977,2901, # 4944 +2034,4144,1205,3429,5693,1765,3430,3189,2125,1271, 714,1689,4775,3538,5694,2333, # 4960 +3931, 533,4417,3660,2184, 617,5695,2469,3340,3539,2315,5696,5697,3190,5698,5699, # 4976 +3932,1988, 618, 427,2651,3540,3431,5700,5701,1244,1690,5702,2819,4418,4776,5703, # 4992 +3541,4777,5704,2284,1576, 473,3661,4419,3432, 972,5705,3662,5706,3087,5707,5708, # 5008 +4778,4779,5709,3793,4145,4146,5710, 153,4780, 356,5711,1892,2902,4420,2144, 408, # 5024 + 803,2357,5712,3933,5713,4421,1646,2578,2518,4781,4782,3934,5714,3935,4422,5715, # 5040 +2416,3433, 752,5716,5717,1962,3341,2979,5718, 746,3030,2470,4783,4423,3794, 698, # 5056 +4784,1893,4424,3663,2550,4785,3664,3936,5719,3191,3434,5720,1824,1302,4147,2715, # 5072 +3937,1974,4425,5721,4426,3192, 823,1303,1288,1236,2861,3542,4148,3435, 774,3938, # 5088 +5722,1581,4786,1304,2862,3939,4787,5723,2440,2162,1083,3268,4427,4149,4428, 344, # 5104 +1173, 288,2316, 454,1683,5724,5725,1461,4788,4150,2597,5726,5727,4789, 985, 894, # 5120 +5728,3436,3193,5729,1914,2942,3795,1989,5730,2111,1975,5731,4151,5732,2579,1194, # 5136 + 425,5733,4790,3194,1245,3796,4429,5734,5735,2863,5736, 636,4791,1856,3940, 760, # 5152 +1800,5737,4430,2212,1508,4792,4152,1894,1684,2298,5738,5739,4793,4431,4432,2213, # 5168 + 479,5740,5741, 832,5742,4153,2496,5743,2980,2497,3797, 990,3132, 627,1815,2652, # 5184 +4433,1582,4434,2126,2112,3543,4794,5744, 799,4435,3195,5745,4795,2113,1737,3031, # 5200 +1018, 543, 754,4436,3342,1676,4796,4797,4154,4798,1489,5746,3544,5747,2624,2903, # 5216 +4155,5748,5749,2981,5750,5751,5752,5753,3196,4799,4800,2185,1722,5754,3269,3270, # 5232 +1843,3665,1715, 481, 365,1976,1857,5755,5756,1963,2498,4801,5757,2127,3666,3271, # 5248 + 433,1895,2064,2076,5758, 602,2750,5759,5760,5761,5762,5763,3032,1628,3437,5764, # 5264 +3197,4802,4156,2904,4803,2519,5765,2551,2782,5766,5767,5768,3343,4804,2905,5769, # 5280 +4805,5770,2864,4806,4807,1221,2982,4157,2520,5771,5772,5773,1868,1990,5774,5775, # 5296 +5776,1896,5777,5778,4808,1897,4158, 318,5779,2095,4159,4437,5780,5781, 485,5782, # 5312 + 938,3941, 553,2680, 116,5783,3942,3667,5784,3545,2681,2783,3438,3344,2820,5785, # 5328 +3668,2943,4160,1747,2944,2983,5786,5787, 207,5788,4809,5789,4810,2521,5790,3033, # 5344 + 890,3669,3943,5791,1878,3798,3439,5792,2186,2358,3440,1652,5793,5794,5795, 941, # 5360 +2299, 208,3546,4161,2020, 330,4438,3944,2906,2499,3799,4439,4811,5796,5797,5798, # 5376 +) + diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/big5prober.py b/lib/python3.6/site-packages/pip/_vendor/chardet/big5prober.py similarity index 82% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/big5prober.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/big5prober.py index becce81..98f9970 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/big5prober.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/big5prober.py @@ -28,15 +28,20 @@ from .mbcharsetprober import MultiByteCharSetProber from .codingstatemachine import CodingStateMachine from .chardistribution import Big5DistributionAnalysis -from .mbcssm import Big5SMModel +from .mbcssm import BIG5_SM_MODEL class Big5Prober(MultiByteCharSetProber): def __init__(self): - MultiByteCharSetProber.__init__(self) - self._mCodingSM = CodingStateMachine(Big5SMModel) - self._mDistributionAnalyzer = Big5DistributionAnalysis() + super(Big5Prober, self).__init__() + self.coding_sm = CodingStateMachine(BIG5_SM_MODEL) + self.distribution_analyzer = Big5DistributionAnalysis() self.reset() - def get_charset_name(self): + @property + def charset_name(self): return "Big5" + + @property + def language(self): + return "Chinese" diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/chardistribution.py b/lib/python3.6/site-packages/pip/_vendor/chardet/chardistribution.py similarity index 61% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/chardistribution.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/chardistribution.py index 4e64a00..c0395f4 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/chardistribution.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/chardistribution.py @@ -25,82 +25,84 @@ # 02110-1301 USA ######################### END LICENSE BLOCK ######################### -from .euctwfreq import (EUCTWCharToFreqOrder, EUCTW_TABLE_SIZE, +from .euctwfreq import (EUCTW_CHAR_TO_FREQ_ORDER, EUCTW_TABLE_SIZE, EUCTW_TYPICAL_DISTRIBUTION_RATIO) -from .euckrfreq import (EUCKRCharToFreqOrder, EUCKR_TABLE_SIZE, +from .euckrfreq import (EUCKR_CHAR_TO_FREQ_ORDER, EUCKR_TABLE_SIZE, EUCKR_TYPICAL_DISTRIBUTION_RATIO) -from .gb2312freq import (GB2312CharToFreqOrder, GB2312_TABLE_SIZE, +from .gb2312freq import (GB2312_CHAR_TO_FREQ_ORDER, GB2312_TABLE_SIZE, GB2312_TYPICAL_DISTRIBUTION_RATIO) -from .big5freq import (Big5CharToFreqOrder, BIG5_TABLE_SIZE, +from .big5freq import (BIG5_CHAR_TO_FREQ_ORDER, BIG5_TABLE_SIZE, BIG5_TYPICAL_DISTRIBUTION_RATIO) -from .jisfreq import (JISCharToFreqOrder, JIS_TABLE_SIZE, +from .jisfreq import (JIS_CHAR_TO_FREQ_ORDER, JIS_TABLE_SIZE, JIS_TYPICAL_DISTRIBUTION_RATIO) -from .compat import wrap_ord - -ENOUGH_DATA_THRESHOLD = 1024 -SURE_YES = 0.99 -SURE_NO = 0.01 -MINIMUM_DATA_THRESHOLD = 3 -class CharDistributionAnalysis: +class CharDistributionAnalysis(object): + ENOUGH_DATA_THRESHOLD = 1024 + SURE_YES = 0.99 + SURE_NO = 0.01 + MINIMUM_DATA_THRESHOLD = 3 + def __init__(self): # Mapping table to get frequency order from char order (get from # GetOrder()) - self._mCharToFreqOrder = None - self._mTableSize = None # Size of above table + self._char_to_freq_order = None + self._table_size = None # Size of above table # This is a constant value which varies from language to language, # used in calculating confidence. See # http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html # for further detail. - self._mTypicalDistributionRatio = None + self.typical_distribution_ratio = None + self._done = None + self._total_chars = None + self._freq_chars = None self.reset() def reset(self): """reset analyser, clear any state""" # If this flag is set to True, detection is done and conclusion has # been made - self._mDone = False - self._mTotalChars = 0 # Total characters encountered + self._done = False + self._total_chars = 0 # Total characters encountered # The number of characters whose frequency order is less than 512 - self._mFreqChars = 0 + self._freq_chars = 0 - def feed(self, aBuf, aCharLen): + def feed(self, char, char_len): """feed a character with known length""" - if aCharLen == 2: + if char_len == 2: # we only care about 2-bytes character in our distribution analysis - order = self.get_order(aBuf) + order = self.get_order(char) else: order = -1 if order >= 0: - self._mTotalChars += 1 + self._total_chars += 1 # order is valid - if order < self._mTableSize: - if 512 > self._mCharToFreqOrder[order]: - self._mFreqChars += 1 + if order < self._table_size: + if 512 > self._char_to_freq_order[order]: + self._freq_chars += 1 def get_confidence(self): """return confidence based on existing data""" # if we didn't receive any character in our consideration range, # return negative answer - if self._mTotalChars <= 0 or self._mFreqChars <= MINIMUM_DATA_THRESHOLD: - return SURE_NO + if self._total_chars <= 0 or self._freq_chars <= self.MINIMUM_DATA_THRESHOLD: + return self.SURE_NO - if self._mTotalChars != self._mFreqChars: - r = (self._mFreqChars / ((self._mTotalChars - self._mFreqChars) - * self._mTypicalDistributionRatio)) - if r < SURE_YES: + if self._total_chars != self._freq_chars: + r = (self._freq_chars / ((self._total_chars - self._freq_chars) + * self.typical_distribution_ratio)) + if r < self.SURE_YES: return r # normalize confidence (we don't want to be 100% sure) - return SURE_YES + return self.SURE_YES def got_enough_data(self): # It is not necessary to receive all data to draw conclusion. # For charset detection, certain amount of data is enough - return self._mTotalChars > ENOUGH_DATA_THRESHOLD + return self._total_chars > self.ENOUGH_DATA_THRESHOLD - def get_order(self, aBuf): + def get_order(self, byte_str): # We do not handle characters based on the original encoding string, # but convert this encoding string to a number, here called order. # This allows multiple encodings of a language to share one frequency @@ -110,55 +112,55 @@ class CharDistributionAnalysis: class EUCTWDistributionAnalysis(CharDistributionAnalysis): def __init__(self): - CharDistributionAnalysis.__init__(self) - self._mCharToFreqOrder = EUCTWCharToFreqOrder - self._mTableSize = EUCTW_TABLE_SIZE - self._mTypicalDistributionRatio = EUCTW_TYPICAL_DISTRIBUTION_RATIO + super(EUCTWDistributionAnalysis, self).__init__() + self._char_to_freq_order = EUCTW_CHAR_TO_FREQ_ORDER + self._table_size = EUCTW_TABLE_SIZE + self.typical_distribution_ratio = EUCTW_TYPICAL_DISTRIBUTION_RATIO - def get_order(self, aBuf): + def get_order(self, byte_str): # for euc-TW encoding, we are interested # first byte range: 0xc4 -- 0xfe # second byte range: 0xa1 -- 0xfe # no validation needed here. State machine has done that - first_char = wrap_ord(aBuf[0]) + first_char = byte_str[0] if first_char >= 0xC4: - return 94 * (first_char - 0xC4) + wrap_ord(aBuf[1]) - 0xA1 + return 94 * (first_char - 0xC4) + byte_str[1] - 0xA1 else: return -1 class EUCKRDistributionAnalysis(CharDistributionAnalysis): def __init__(self): - CharDistributionAnalysis.__init__(self) - self._mCharToFreqOrder = EUCKRCharToFreqOrder - self._mTableSize = EUCKR_TABLE_SIZE - self._mTypicalDistributionRatio = EUCKR_TYPICAL_DISTRIBUTION_RATIO + super(EUCKRDistributionAnalysis, self).__init__() + self._char_to_freq_order = EUCKR_CHAR_TO_FREQ_ORDER + self._table_size = EUCKR_TABLE_SIZE + self.typical_distribution_ratio = EUCKR_TYPICAL_DISTRIBUTION_RATIO - def get_order(self, aBuf): + def get_order(self, byte_str): # for euc-KR encoding, we are interested # first byte range: 0xb0 -- 0xfe # second byte range: 0xa1 -- 0xfe # no validation needed here. State machine has done that - first_char = wrap_ord(aBuf[0]) + first_char = byte_str[0] if first_char >= 0xB0: - return 94 * (first_char - 0xB0) + wrap_ord(aBuf[1]) - 0xA1 + return 94 * (first_char - 0xB0) + byte_str[1] - 0xA1 else: return -1 class GB2312DistributionAnalysis(CharDistributionAnalysis): def __init__(self): - CharDistributionAnalysis.__init__(self) - self._mCharToFreqOrder = GB2312CharToFreqOrder - self._mTableSize = GB2312_TABLE_SIZE - self._mTypicalDistributionRatio = GB2312_TYPICAL_DISTRIBUTION_RATIO + super(GB2312DistributionAnalysis, self).__init__() + self._char_to_freq_order = GB2312_CHAR_TO_FREQ_ORDER + self._table_size = GB2312_TABLE_SIZE + self.typical_distribution_ratio = GB2312_TYPICAL_DISTRIBUTION_RATIO - def get_order(self, aBuf): + def get_order(self, byte_str): # for GB2312 encoding, we are interested # first byte range: 0xb0 -- 0xfe # second byte range: 0xa1 -- 0xfe # no validation needed here. State machine has done that - first_char, second_char = wrap_ord(aBuf[0]), wrap_ord(aBuf[1]) + first_char, second_char = byte_str[0], byte_str[1] if (first_char >= 0xB0) and (second_char >= 0xA1): return 94 * (first_char - 0xB0) + second_char - 0xA1 else: @@ -167,17 +169,17 @@ class GB2312DistributionAnalysis(CharDistributionAnalysis): class Big5DistributionAnalysis(CharDistributionAnalysis): def __init__(self): - CharDistributionAnalysis.__init__(self) - self._mCharToFreqOrder = Big5CharToFreqOrder - self._mTableSize = BIG5_TABLE_SIZE - self._mTypicalDistributionRatio = BIG5_TYPICAL_DISTRIBUTION_RATIO + super(Big5DistributionAnalysis, self).__init__() + self._char_to_freq_order = BIG5_CHAR_TO_FREQ_ORDER + self._table_size = BIG5_TABLE_SIZE + self.typical_distribution_ratio = BIG5_TYPICAL_DISTRIBUTION_RATIO - def get_order(self, aBuf): + def get_order(self, byte_str): # for big5 encoding, we are interested # first byte range: 0xa4 -- 0xfe # second byte range: 0x40 -- 0x7e , 0xa1 -- 0xfe # no validation needed here. State machine has done that - first_char, second_char = wrap_ord(aBuf[0]), wrap_ord(aBuf[1]) + first_char, second_char = byte_str[0], byte_str[1] if first_char >= 0xA4: if second_char >= 0xA1: return 157 * (first_char - 0xA4) + second_char - 0xA1 + 63 @@ -189,17 +191,17 @@ class Big5DistributionAnalysis(CharDistributionAnalysis): class SJISDistributionAnalysis(CharDistributionAnalysis): def __init__(self): - CharDistributionAnalysis.__init__(self) - self._mCharToFreqOrder = JISCharToFreqOrder - self._mTableSize = JIS_TABLE_SIZE - self._mTypicalDistributionRatio = JIS_TYPICAL_DISTRIBUTION_RATIO + super(SJISDistributionAnalysis, self).__init__() + self._char_to_freq_order = JIS_CHAR_TO_FREQ_ORDER + self._table_size = JIS_TABLE_SIZE + self.typical_distribution_ratio = JIS_TYPICAL_DISTRIBUTION_RATIO - def get_order(self, aBuf): + def get_order(self, byte_str): # for sjis encoding, we are interested # first byte range: 0x81 -- 0x9f , 0xe0 -- 0xfe # second byte range: 0x40 -- 0x7e, 0x81 -- oxfe # no validation needed here. State machine has done that - first_char, second_char = wrap_ord(aBuf[0]), wrap_ord(aBuf[1]) + first_char, second_char = byte_str[0], byte_str[1] if (first_char >= 0x81) and (first_char <= 0x9F): order = 188 * (first_char - 0x81) elif (first_char >= 0xE0) and (first_char <= 0xEF): @@ -214,18 +216,18 @@ class SJISDistributionAnalysis(CharDistributionAnalysis): class EUCJPDistributionAnalysis(CharDistributionAnalysis): def __init__(self): - CharDistributionAnalysis.__init__(self) - self._mCharToFreqOrder = JISCharToFreqOrder - self._mTableSize = JIS_TABLE_SIZE - self._mTypicalDistributionRatio = JIS_TYPICAL_DISTRIBUTION_RATIO + super(EUCJPDistributionAnalysis, self).__init__() + self._char_to_freq_order = JIS_CHAR_TO_FREQ_ORDER + self._table_size = JIS_TABLE_SIZE + self.typical_distribution_ratio = JIS_TYPICAL_DISTRIBUTION_RATIO - def get_order(self, aBuf): + def get_order(self, byte_str): # for euc-JP encoding, we are interested # first byte range: 0xa0 -- 0xfe # second byte range: 0xa1 -- 0xfe # no validation needed here. State machine has done that - char = wrap_ord(aBuf[0]) + char = byte_str[0] if char >= 0xA0: - return 94 * (char - 0xA1) + wrap_ord(aBuf[1]) - 0xa1 + return 94 * (char - 0xA1) + byte_str[1] - 0xa1 else: return -1 diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/charsetgroupprober.py b/lib/python3.6/site-packages/pip/_vendor/chardet/charsetgroupprober.py new file mode 100644 index 0000000..8b3738e --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/charsetgroupprober.py @@ -0,0 +1,106 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .enums import ProbingState +from .charsetprober import CharSetProber + + +class CharSetGroupProber(CharSetProber): + def __init__(self, lang_filter=None): + super(CharSetGroupProber, self).__init__(lang_filter=lang_filter) + self._active_num = 0 + self.probers = [] + self._best_guess_prober = None + + def reset(self): + super(CharSetGroupProber, self).reset() + self._active_num = 0 + for prober in self.probers: + if prober: + prober.reset() + prober.active = True + self._active_num += 1 + self._best_guess_prober = None + + @property + def charset_name(self): + if not self._best_guess_prober: + self.get_confidence() + if not self._best_guess_prober: + return None + return self._best_guess_prober.charset_name + + @property + def language(self): + if not self._best_guess_prober: + self.get_confidence() + if not self._best_guess_prober: + return None + return self._best_guess_prober.language + + def feed(self, byte_str): + for prober in self.probers: + if not prober: + continue + if not prober.active: + continue + state = prober.feed(byte_str) + if not state: + continue + if state == ProbingState.FOUND_IT: + self._best_guess_prober = prober + return self.state + elif state == ProbingState.NOT_ME: + prober.active = False + self._active_num -= 1 + if self._active_num <= 0: + self._state = ProbingState.NOT_ME + return self.state + return self.state + + def get_confidence(self): + state = self.state + if state == ProbingState.FOUND_IT: + return 0.99 + elif state == ProbingState.NOT_ME: + return 0.01 + best_conf = 0.0 + self._best_guess_prober = None + for prober in self.probers: + if not prober: + continue + if not prober.active: + self.logger.debug('%s not active', prober.charset_name) + continue + conf = prober.get_confidence() + self.logger.debug('%s %s confidence = %s', prober.charset_name, prober.language, conf) + if best_conf < conf: + best_conf = conf + self._best_guess_prober = prober + if not self._best_guess_prober: + return 0.0 + return best_conf diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/charsetprober.py b/lib/python3.6/site-packages/pip/_vendor/chardet/charsetprober.py new file mode 100644 index 0000000..eac4e59 --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/charsetprober.py @@ -0,0 +1,145 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +import logging +import re + +from .enums import ProbingState + + +class CharSetProber(object): + + SHORTCUT_THRESHOLD = 0.95 + + def __init__(self, lang_filter=None): + self._state = None + self.lang_filter = lang_filter + self.logger = logging.getLogger(__name__) + + def reset(self): + self._state = ProbingState.DETECTING + + @property + def charset_name(self): + return None + + def feed(self, buf): + pass + + @property + def state(self): + return self._state + + def get_confidence(self): + return 0.0 + + @staticmethod + def filter_high_byte_only(buf): + buf = re.sub(b'([\x00-\x7F])+', b' ', buf) + return buf + + @staticmethod + def filter_international_words(buf): + """ + We define three types of bytes: + alphabet: english alphabets [a-zA-Z] + international: international characters [\x80-\xFF] + marker: everything else [^a-zA-Z\x80-\xFF] + + The input buffer can be thought to contain a series of words delimited + by markers. This function works to filter all words that contain at + least one international character. All contiguous sequences of markers + are replaced by a single space ascii character. + + This filter applies to all scripts which do not use English characters. + """ + filtered = bytearray() + + # This regex expression filters out only words that have at-least one + # international character. The word may include one marker character at + # the end. + words = re.findall(b'[a-zA-Z]*[\x80-\xFF]+[a-zA-Z]*[^a-zA-Z\x80-\xFF]?', + buf) + + for word in words: + filtered.extend(word[:-1]) + + # If the last character in the word is a marker, replace it with a + # space as markers shouldn't affect our analysis (they are used + # similarly across all languages and may thus have similar + # frequencies). + last_char = word[-1:] + if not last_char.isalpha() and last_char < b'\x80': + last_char = b' ' + filtered.extend(last_char) + + return filtered + + @staticmethod + def filter_with_english_letters(buf): + """ + Returns a copy of ``buf`` that retains only the sequences of English + alphabet and high byte characters that are not between <> characters. + Also retains English alphabet and high byte characters immediately + before occurrences of >. + + This filter can be applied to all scripts which contain both English + characters and extended ASCII characters, but is currently only used by + ``Latin1Prober``. + """ + filtered = bytearray() + in_tag = False + prev = 0 + + for curr in range(len(buf)): + # Slice here to get bytes instead of an int with Python 3 + buf_char = buf[curr:curr + 1] + # Check if we're coming out of or entering an HTML tag + if buf_char == b'>': + in_tag = False + elif buf_char == b'<': + in_tag = True + + # If current character is not extended-ASCII and not alphabetic... + if buf_char < b'\x80' and not buf_char.isalpha(): + # ...and we're not in a tag + if curr > prev and not in_tag: + # Keep everything after last non-extended-ASCII, + # non-alphabetic character + filtered.extend(buf[prev:curr]) + # Output a space to delimit stretch we kept + filtered.extend(b' ') + prev = curr + 1 + + # If we're not in a tag... + if not in_tag: + # Keep everything after last non-extended-ASCII, non-alphabetic + # character + filtered.extend(buf[prev:]) + + return filtered diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/cli/__init__.py b/lib/python3.6/site-packages/pip/_vendor/chardet/cli/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/cli/__init__.py @@ -0,0 +1 @@ + diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a92d4069c76859b162eb62595d49be1ad96b1666 GIT binary patch literal 146 zcmXr!<>gw)bv%lZfq~&M5W@jTzyXMhS%5?eLokCTqu)w~B9JhG_+_tOl3So(kXfLc zRGOKSqHBuQ3QpmMzCFb#>u*SF*D<& zcAY2pwf}$@9(m!K^NA-5(ONpN@V|B1yU9)0aiVXBGM#94ewq$X znNFSv#mYjkQnI|1f{oHlut}m%6-x@vq?nXalL^zOB9)8_Erwd~NEE}8r^ShiqR*cu z`6Ls)UKBBW@37%%A}d3t%3N5VB$V(WX=LrzQ$2Q`7Q8%Hox6u09AcnP*|01|DaRgy z9dtjqG{1DvV~HB3=_|%}y9ZJ9)rb}4Itauxk>wej@qL!+Rmdq~N{h){n-{)z z7yi<{@E6|LBgu6j`LcQJ{M>vkP`F=$M{knIBxhM#2-RZ`;L3_jm+V9!KTvGA>{e^^Y_hWJv9IXH zX=k_|%(PIOZi^%rJ$8hardOu{oU#nCMP^8A_uKGWt-&d+&V=bnfl@Gy^)co*o*i8D z*t5GAui)+3;YC0C53KW+wFLU4P}58wwYOy*2{l`E&_v2)W`dCr+yop|XKKT&RKkRn zwG7ELdJAsV z4Kz*^x{=#(BQJDA^r0KLd+3|cNU|D&aqJhMrHil-{{@0}#x4=y3m5Qo#~$~20G-ck zOP7Z_khgVh92Oz9o016I9Y=1cr^#7oO|r9lg6CyS=4HMfLMf4;_95CGgt(PYZ=FL4mk? zz$ed%4e4%KB2T8s1PFvw$d3YMi3ox7M1mS$#yQN-dhF{}DO@hz2Z6B^wJ{OHbd(Cd zqS*Cb9onk`KNZd82W~q8a`xHd$G}9Fy#H{w_v7QoELCi(;3q8rl?11tH9cE6)fqO* z(az1kfAD|lA4R#r{g;P%NmzqZ5fg3z#?&m)&VTxXo|f}d0RF!MKZmBAW^}br1W^Dz z8#1TZUvmEH;5HYd1SQt1$h&PkIWX?K?Z5=5BAb|iA~&@Hu`5$w8PB&mofSo!`bwBL z-?_cB=Jig8CL&yWKvZ$mzG51P8Z--PX??na>oExcFs<}>%f;>r!4IU1Cw|jnB^L{qy;W%qW8QAvOJ^}jX0(?^vc@f zw%w!lo~g$%FNbk#q8JY~9xoBclHOS9Q$rLaZ&5>Gn))h{HoAUmHR__&@!wCy#MjqK zJoeQKUj0*3N=xchsOtj}0b@U++>OQt*!Vav`7{%sv@ogOKofXxAjk#+!=E4Bh;BCA Fe*vrG|AGJj literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/chardetect.py b/lib/python3.6/site-packages/pip/_vendor/chardet/cli/chardetect.py similarity index 83% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/chardetect.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/cli/chardetect.py index ffe892f..f0a4cc5 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/chardetect.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/cli/chardetect.py @@ -17,9 +17,9 @@ from __future__ import absolute_import, print_function, unicode_literals import argparse import sys -from io import open from chardet import __version__ +from chardet.compat import PY2 from chardet.universaldetector import UniversalDetector @@ -35,9 +35,15 @@ def description_of(lines, name='stdin'): """ u = UniversalDetector() for line in lines: + line = bytearray(line) u.feed(line) + # shortcut out of the loop to save reading further - particularly useful if we read a BOM. + if u.done: + break u.close() result = u.result + if PY2: + name = name.decode(sys.getfilesystemencoding(), 'ignore') if result['encoding']: return '{0}: {1} with confidence {2}'.format(name, result['encoding'], result['confidence']) @@ -46,23 +52,22 @@ def description_of(lines, name='stdin'): def main(argv=None): - ''' + """ Handles command line arguments and gets things started. :param argv: List of arguments, as if specified on the command-line. If None, ``sys.argv[1:]`` is used instead. :type argv: list of str - ''' + """ # Get command line arguments parser = argparse.ArgumentParser( description="Takes one or more file paths and reports their detected \ - encodings", - formatter_class=argparse.ArgumentDefaultsHelpFormatter, - conflict_handler='resolve') + encodings") parser.add_argument('input', - help='File whose encoding we would like to determine.', + help='File whose encoding we would like to determine. \ + (default: stdin)', type=argparse.FileType('rb'), nargs='*', - default=[sys.stdin]) + default=[sys.stdin if PY2 else sys.stdin.buffer]) parser.add_argument('--version', action='version', version='%(prog)s {0}'.format(__version__)) args = parser.parse_args(argv) diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/codingstatemachine.py b/lib/python3.6/site-packages/pip/_vendor/chardet/codingstatemachine.py new file mode 100644 index 0000000..68fba44 --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/codingstatemachine.py @@ -0,0 +1,88 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +import logging + +from .enums import MachineState + + +class CodingStateMachine(object): + """ + A state machine to verify a byte sequence for a particular encoding. For + each byte the detector receives, it will feed that byte to every active + state machine available, one byte at a time. The state machine changes its + state based on its previous state and the byte it receives. There are 3 + states in a state machine that are of interest to an auto-detector: + + START state: This is the state to start with, or a legal byte sequence + (i.e. a valid code point) for character has been identified. + + ME state: This indicates that the state machine identified a byte sequence + that is specific to the charset it is designed for and that + there is no other possible encoding which can contain this byte + sequence. This will to lead to an immediate positive answer for + the detector. + + ERROR state: This indicates the state machine identified an illegal byte + sequence for that encoding. This will lead to an immediate + negative answer for this encoding. Detector will exclude this + encoding from consideration from here on. + """ + def __init__(self, sm): + self._model = sm + self._curr_byte_pos = 0 + self._curr_char_len = 0 + self._curr_state = None + self.logger = logging.getLogger(__name__) + self.reset() + + def reset(self): + self._curr_state = MachineState.START + + def next_state(self, c): + # for each byte we get its class + # if it is first byte, we also get byte length + byte_class = self._model['class_table'][c] + if self._curr_state == MachineState.START: + self._curr_byte_pos = 0 + self._curr_char_len = self._model['char_len_table'][byte_class] + # from byte's class and state_table, we get its next state + curr_state = (self._curr_state * self._model['class_factor'] + + byte_class) + self._curr_state = self._model['state_table'][curr_state] + self._curr_byte_pos += 1 + return self._curr_state + + def get_current_charlen(self): + return self._curr_char_len + + def get_coding_state_machine(self): + return self._model['name'] + + @property + def language(self): + return self._model['language'] diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/compat.py b/lib/python3.6/site-packages/pip/_vendor/chardet/compat.py similarity index 85% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/compat.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/compat.py index d9e30ad..ddd7468 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/compat.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/compat.py @@ -1,6 +1,7 @@ ######################## BEGIN LICENSE BLOCK ######################## # Contributor(s): -# Ian Cordasco - port to Python +# Dan Blanchard +# Ian Cordasco # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -22,13 +23,12 @@ import sys if sys.version_info < (3, 0): + PY2 = True + PY3 = False base_str = (str, unicode) + text_type = unicode else: + PY2 = False + PY3 = True base_str = (bytes, str) - - -def wrap_ord(a): - if sys.version_info < (3, 0) and isinstance(a, base_str): - return ord(a) - else: - return a + text_type = str diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/cp949prober.py b/lib/python3.6/site-packages/pip/_vendor/chardet/cp949prober.py similarity index 83% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/cp949prober.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/cp949prober.py index ff4272f..efd793a 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/cp949prober.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/cp949prober.py @@ -25,20 +25,25 @@ # 02110-1301 USA ######################### END LICENSE BLOCK ######################### -from .mbcharsetprober import MultiByteCharSetProber -from .codingstatemachine import CodingStateMachine from .chardistribution import EUCKRDistributionAnalysis -from .mbcssm import CP949SMModel +from .codingstatemachine import CodingStateMachine +from .mbcharsetprober import MultiByteCharSetProber +from .mbcssm import CP949_SM_MODEL class CP949Prober(MultiByteCharSetProber): def __init__(self): - MultiByteCharSetProber.__init__(self) - self._mCodingSM = CodingStateMachine(CP949SMModel) + super(CP949Prober, self).__init__() + self.coding_sm = CodingStateMachine(CP949_SM_MODEL) # NOTE: CP949 is a superset of EUC-KR, so the distribution should be # not different. - self._mDistributionAnalyzer = EUCKRDistributionAnalysis() + self.distribution_analyzer = EUCKRDistributionAnalysis() self.reset() - def get_charset_name(self): + @property + def charset_name(self): return "CP949" + + @property + def language(self): + return "Korean" diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/enums.py b/lib/python3.6/site-packages/pip/_vendor/chardet/enums.py new file mode 100644 index 0000000..0451207 --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/enums.py @@ -0,0 +1,76 @@ +""" +All of the Enums that are used throughout the chardet package. + +:author: Dan Blanchard (dan.blanchard@gmail.com) +""" + + +class InputState(object): + """ + This enum represents the different states a universal detector can be in. + """ + PURE_ASCII = 0 + ESC_ASCII = 1 + HIGH_BYTE = 2 + + +class LanguageFilter(object): + """ + This enum represents the different language filters we can apply to a + ``UniversalDetector``. + """ + CHINESE_SIMPLIFIED = 0x01 + CHINESE_TRADITIONAL = 0x02 + JAPANESE = 0x04 + KOREAN = 0x08 + NON_CJK = 0x10 + ALL = 0x1F + CHINESE = CHINESE_SIMPLIFIED | CHINESE_TRADITIONAL + CJK = CHINESE | JAPANESE | KOREAN + + +class ProbingState(object): + """ + This enum represents the different states a prober can be in. + """ + DETECTING = 0 + FOUND_IT = 1 + NOT_ME = 2 + + +class MachineState(object): + """ + This enum represents the different states a state machine can be in. + """ + START = 0 + ERROR = 1 + ITS_ME = 2 + + +class SequenceLikelihood(object): + """ + This enum represents the likelihood of a character following the previous one. + """ + NEGATIVE = 0 + UNLIKELY = 1 + LIKELY = 2 + POSITIVE = 3 + + @classmethod + def get_num_categories(cls): + """:returns: The number of likelihood categories in the enum.""" + return 4 + + +class CharacterCategory(object): + """ + This enum represents the different categories language models for + ``SingleByteCharsetProber`` put characters into. + + Anything less than CONTROL is considered a letter. + """ + UNDEFINED = 255 + LINE_BREAK = 254 + SYMBOL = 253 + DIGIT = 252 + CONTROL = 251 diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/escprober.py b/lib/python3.6/site-packages/pip/_vendor/chardet/escprober.py new file mode 100644 index 0000000..c70493f --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/escprober.py @@ -0,0 +1,101 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetprober import CharSetProber +from .codingstatemachine import CodingStateMachine +from .enums import LanguageFilter, ProbingState, MachineState +from .escsm import (HZ_SM_MODEL, ISO2022CN_SM_MODEL, ISO2022JP_SM_MODEL, + ISO2022KR_SM_MODEL) + + +class EscCharSetProber(CharSetProber): + """ + This CharSetProber uses a "code scheme" approach for detecting encodings, + whereby easily recognizable escape or shift sequences are relied on to + identify these encodings. + """ + + def __init__(self, lang_filter=None): + super(EscCharSetProber, self).__init__(lang_filter=lang_filter) + self.coding_sm = [] + if self.lang_filter & LanguageFilter.CHINESE_SIMPLIFIED: + self.coding_sm.append(CodingStateMachine(HZ_SM_MODEL)) + self.coding_sm.append(CodingStateMachine(ISO2022CN_SM_MODEL)) + if self.lang_filter & LanguageFilter.JAPANESE: + self.coding_sm.append(CodingStateMachine(ISO2022JP_SM_MODEL)) + if self.lang_filter & LanguageFilter.KOREAN: + self.coding_sm.append(CodingStateMachine(ISO2022KR_SM_MODEL)) + self.active_sm_count = None + self._detected_charset = None + self._detected_language = None + self._state = None + self.reset() + + def reset(self): + super(EscCharSetProber, self).reset() + for coding_sm in self.coding_sm: + if not coding_sm: + continue + coding_sm.active = True + coding_sm.reset() + self.active_sm_count = len(self.coding_sm) + self._detected_charset = None + self._detected_language = None + + @property + def charset_name(self): + return self._detected_charset + + @property + def language(self): + return self._detected_language + + def get_confidence(self): + if self._detected_charset: + return 0.99 + else: + return 0.00 + + def feed(self, byte_str): + for c in byte_str: + for coding_sm in self.coding_sm: + if not coding_sm or not coding_sm.active: + continue + coding_state = coding_sm.next_state(c) + if coding_state == MachineState.ERROR: + coding_sm.active = False + self.active_sm_count -= 1 + if self.active_sm_count <= 0: + self._state = ProbingState.NOT_ME + return self.state + elif coding_state == MachineState.ITS_ME: + self._state = ProbingState.FOUND_IT + self._detected_charset = coding_sm.get_coding_state_machine() + self._detected_language = coding_sm.language + return self.state + + return self.state diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/escsm.py b/lib/python3.6/site-packages/pip/_vendor/chardet/escsm.py new file mode 100644 index 0000000..0069523 --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/escsm.py @@ -0,0 +1,246 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .enums import MachineState + +HZ_CLS = ( +1,0,0,0,0,0,0,0, # 00 - 07 +0,0,0,0,0,0,0,0, # 08 - 0f +0,0,0,0,0,0,0,0, # 10 - 17 +0,0,0,1,0,0,0,0, # 18 - 1f +0,0,0,0,0,0,0,0, # 20 - 27 +0,0,0,0,0,0,0,0, # 28 - 2f +0,0,0,0,0,0,0,0, # 30 - 37 +0,0,0,0,0,0,0,0, # 38 - 3f +0,0,0,0,0,0,0,0, # 40 - 47 +0,0,0,0,0,0,0,0, # 48 - 4f +0,0,0,0,0,0,0,0, # 50 - 57 +0,0,0,0,0,0,0,0, # 58 - 5f +0,0,0,0,0,0,0,0, # 60 - 67 +0,0,0,0,0,0,0,0, # 68 - 6f +0,0,0,0,0,0,0,0, # 70 - 77 +0,0,0,4,0,5,2,0, # 78 - 7f +1,1,1,1,1,1,1,1, # 80 - 87 +1,1,1,1,1,1,1,1, # 88 - 8f +1,1,1,1,1,1,1,1, # 90 - 97 +1,1,1,1,1,1,1,1, # 98 - 9f +1,1,1,1,1,1,1,1, # a0 - a7 +1,1,1,1,1,1,1,1, # a8 - af +1,1,1,1,1,1,1,1, # b0 - b7 +1,1,1,1,1,1,1,1, # b8 - bf +1,1,1,1,1,1,1,1, # c0 - c7 +1,1,1,1,1,1,1,1, # c8 - cf +1,1,1,1,1,1,1,1, # d0 - d7 +1,1,1,1,1,1,1,1, # d8 - df +1,1,1,1,1,1,1,1, # e0 - e7 +1,1,1,1,1,1,1,1, # e8 - ef +1,1,1,1,1,1,1,1, # f0 - f7 +1,1,1,1,1,1,1,1, # f8 - ff +) + +HZ_ST = ( +MachineState.START,MachineState.ERROR, 3,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,# 00-07 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,# 08-0f +MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START, 4,MachineState.ERROR,# 10-17 + 5,MachineState.ERROR, 6,MachineState.ERROR, 5, 5, 4,MachineState.ERROR,# 18-1f + 4,MachineState.ERROR, 4, 4, 4,MachineState.ERROR, 4,MachineState.ERROR,# 20-27 + 4,MachineState.ITS_ME,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,# 28-2f +) + +HZ_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0) + +HZ_SM_MODEL = {'class_table': HZ_CLS, + 'class_factor': 6, + 'state_table': HZ_ST, + 'char_len_table': HZ_CHAR_LEN_TABLE, + 'name': "HZ-GB-2312", + 'language': 'Chinese'} + +ISO2022CN_CLS = ( +2,0,0,0,0,0,0,0, # 00 - 07 +0,0,0,0,0,0,0,0, # 08 - 0f +0,0,0,0,0,0,0,0, # 10 - 17 +0,0,0,1,0,0,0,0, # 18 - 1f +0,0,0,0,0,0,0,0, # 20 - 27 +0,3,0,0,0,0,0,0, # 28 - 2f +0,0,0,0,0,0,0,0, # 30 - 37 +0,0,0,0,0,0,0,0, # 38 - 3f +0,0,0,4,0,0,0,0, # 40 - 47 +0,0,0,0,0,0,0,0, # 48 - 4f +0,0,0,0,0,0,0,0, # 50 - 57 +0,0,0,0,0,0,0,0, # 58 - 5f +0,0,0,0,0,0,0,0, # 60 - 67 +0,0,0,0,0,0,0,0, # 68 - 6f +0,0,0,0,0,0,0,0, # 70 - 77 +0,0,0,0,0,0,0,0, # 78 - 7f +2,2,2,2,2,2,2,2, # 80 - 87 +2,2,2,2,2,2,2,2, # 88 - 8f +2,2,2,2,2,2,2,2, # 90 - 97 +2,2,2,2,2,2,2,2, # 98 - 9f +2,2,2,2,2,2,2,2, # a0 - a7 +2,2,2,2,2,2,2,2, # a8 - af +2,2,2,2,2,2,2,2, # b0 - b7 +2,2,2,2,2,2,2,2, # b8 - bf +2,2,2,2,2,2,2,2, # c0 - c7 +2,2,2,2,2,2,2,2, # c8 - cf +2,2,2,2,2,2,2,2, # d0 - d7 +2,2,2,2,2,2,2,2, # d8 - df +2,2,2,2,2,2,2,2, # e0 - e7 +2,2,2,2,2,2,2,2, # e8 - ef +2,2,2,2,2,2,2,2, # f0 - f7 +2,2,2,2,2,2,2,2, # f8 - ff +) + +ISO2022CN_ST = ( +MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,# 00-07 +MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 08-0f +MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,# 10-17 +MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 4,MachineState.ERROR,# 18-1f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 20-27 + 5, 6,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 28-2f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 30-37 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.START,# 38-3f +) + +ISO2022CN_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0, 0, 0, 0) + +ISO2022CN_SM_MODEL = {'class_table': ISO2022CN_CLS, + 'class_factor': 9, + 'state_table': ISO2022CN_ST, + 'char_len_table': ISO2022CN_CHAR_LEN_TABLE, + 'name': "ISO-2022-CN", + 'language': 'Chinese'} + +ISO2022JP_CLS = ( +2,0,0,0,0,0,0,0, # 00 - 07 +0,0,0,0,0,0,2,2, # 08 - 0f +0,0,0,0,0,0,0,0, # 10 - 17 +0,0,0,1,0,0,0,0, # 18 - 1f +0,0,0,0,7,0,0,0, # 20 - 27 +3,0,0,0,0,0,0,0, # 28 - 2f +0,0,0,0,0,0,0,0, # 30 - 37 +0,0,0,0,0,0,0,0, # 38 - 3f +6,0,4,0,8,0,0,0, # 40 - 47 +0,9,5,0,0,0,0,0, # 48 - 4f +0,0,0,0,0,0,0,0, # 50 - 57 +0,0,0,0,0,0,0,0, # 58 - 5f +0,0,0,0,0,0,0,0, # 60 - 67 +0,0,0,0,0,0,0,0, # 68 - 6f +0,0,0,0,0,0,0,0, # 70 - 77 +0,0,0,0,0,0,0,0, # 78 - 7f +2,2,2,2,2,2,2,2, # 80 - 87 +2,2,2,2,2,2,2,2, # 88 - 8f +2,2,2,2,2,2,2,2, # 90 - 97 +2,2,2,2,2,2,2,2, # 98 - 9f +2,2,2,2,2,2,2,2, # a0 - a7 +2,2,2,2,2,2,2,2, # a8 - af +2,2,2,2,2,2,2,2, # b0 - b7 +2,2,2,2,2,2,2,2, # b8 - bf +2,2,2,2,2,2,2,2, # c0 - c7 +2,2,2,2,2,2,2,2, # c8 - cf +2,2,2,2,2,2,2,2, # d0 - d7 +2,2,2,2,2,2,2,2, # d8 - df +2,2,2,2,2,2,2,2, # e0 - e7 +2,2,2,2,2,2,2,2, # e8 - ef +2,2,2,2,2,2,2,2, # f0 - f7 +2,2,2,2,2,2,2,2, # f8 - ff +) + +ISO2022JP_ST = ( +MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,# 00-07 +MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 08-0f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,# 10-17 +MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,# 18-1f +MachineState.ERROR, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 4,MachineState.ERROR,MachineState.ERROR,# 20-27 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 6,MachineState.ITS_ME,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,# 28-2f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,# 30-37 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 38-3f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.START,MachineState.START,# 40-47 +) + +ISO2022JP_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + +ISO2022JP_SM_MODEL = {'class_table': ISO2022JP_CLS, + 'class_factor': 10, + 'state_table': ISO2022JP_ST, + 'char_len_table': ISO2022JP_CHAR_LEN_TABLE, + 'name': "ISO-2022-JP", + 'language': 'Japanese'} + +ISO2022KR_CLS = ( +2,0,0,0,0,0,0,0, # 00 - 07 +0,0,0,0,0,0,0,0, # 08 - 0f +0,0,0,0,0,0,0,0, # 10 - 17 +0,0,0,1,0,0,0,0, # 18 - 1f +0,0,0,0,3,0,0,0, # 20 - 27 +0,4,0,0,0,0,0,0, # 28 - 2f +0,0,0,0,0,0,0,0, # 30 - 37 +0,0,0,0,0,0,0,0, # 38 - 3f +0,0,0,5,0,0,0,0, # 40 - 47 +0,0,0,0,0,0,0,0, # 48 - 4f +0,0,0,0,0,0,0,0, # 50 - 57 +0,0,0,0,0,0,0,0, # 58 - 5f +0,0,0,0,0,0,0,0, # 60 - 67 +0,0,0,0,0,0,0,0, # 68 - 6f +0,0,0,0,0,0,0,0, # 70 - 77 +0,0,0,0,0,0,0,0, # 78 - 7f +2,2,2,2,2,2,2,2, # 80 - 87 +2,2,2,2,2,2,2,2, # 88 - 8f +2,2,2,2,2,2,2,2, # 90 - 97 +2,2,2,2,2,2,2,2, # 98 - 9f +2,2,2,2,2,2,2,2, # a0 - a7 +2,2,2,2,2,2,2,2, # a8 - af +2,2,2,2,2,2,2,2, # b0 - b7 +2,2,2,2,2,2,2,2, # b8 - bf +2,2,2,2,2,2,2,2, # c0 - c7 +2,2,2,2,2,2,2,2, # c8 - cf +2,2,2,2,2,2,2,2, # d0 - d7 +2,2,2,2,2,2,2,2, # d8 - df +2,2,2,2,2,2,2,2, # e0 - e7 +2,2,2,2,2,2,2,2, # e8 - ef +2,2,2,2,2,2,2,2, # f0 - f7 +2,2,2,2,2,2,2,2, # f8 - ff +) + +ISO2022KR_ST = ( +MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,# 00-07 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,# 08-0f +MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 4,MachineState.ERROR,MachineState.ERROR,# 10-17 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 18-1f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.START,MachineState.START,MachineState.START,MachineState.START,# 20-27 +) + +ISO2022KR_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0) + +ISO2022KR_SM_MODEL = {'class_table': ISO2022KR_CLS, + 'class_factor': 6, + 'state_table': ISO2022KR_ST, + 'char_len_table': ISO2022KR_CHAR_LEN_TABLE, + 'name': "ISO-2022-KR", + 'language': 'Korean'} + + diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/eucjpprober.py b/lib/python3.6/site-packages/pip/_vendor/chardet/eucjpprober.py new file mode 100644 index 0000000..20ce8f7 --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/eucjpprober.py @@ -0,0 +1,92 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .enums import ProbingState, MachineState +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import EUCJPDistributionAnalysis +from .jpcntx import EUCJPContextAnalysis +from .mbcssm import EUCJP_SM_MODEL + + +class EUCJPProber(MultiByteCharSetProber): + def __init__(self): + super(EUCJPProber, self).__init__() + self.coding_sm = CodingStateMachine(EUCJP_SM_MODEL) + self.distribution_analyzer = EUCJPDistributionAnalysis() + self.context_analyzer = EUCJPContextAnalysis() + self.reset() + + def reset(self): + super(EUCJPProber, self).reset() + self.context_analyzer.reset() + + @property + def charset_name(self): + return "EUC-JP" + + @property + def language(self): + return "Japanese" + + def feed(self, byte_str): + for i in range(len(byte_str)): + # PY3K: byte_str is a byte array, so byte_str[i] is an int, not a byte + coding_state = self.coding_sm.next_state(byte_str[i]) + if coding_state == MachineState.ERROR: + self.logger.debug('%s %s prober hit error at byte %s', + self.charset_name, self.language, i) + self._state = ProbingState.NOT_ME + break + elif coding_state == MachineState.ITS_ME: + self._state = ProbingState.FOUND_IT + break + elif coding_state == MachineState.START: + char_len = self.coding_sm.get_current_charlen() + if i == 0: + self._last_char[1] = byte_str[0] + self.context_analyzer.feed(self._last_char, char_len) + self.distribution_analyzer.feed(self._last_char, char_len) + else: + self.context_analyzer.feed(byte_str[i - 1:i + 1], + char_len) + self.distribution_analyzer.feed(byte_str[i - 1:i + 1], + char_len) + + self._last_char[0] = byte_str[-1] + + if self.state == ProbingState.DETECTING: + if (self.context_analyzer.got_enough_data() and + (self.get_confidence() > self.SHORTCUT_THRESHOLD)): + self._state = ProbingState.FOUND_IT + + return self.state + + def get_confidence(self): + context_conf = self.context_analyzer.get_confidence() + distrib_conf = self.distribution_analyzer.get_confidence() + return max(context_conf, distrib_conf) diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/euckrfreq.py b/lib/python3.6/site-packages/pip/_vendor/chardet/euckrfreq.py new file mode 100644 index 0000000..b68078c --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/euckrfreq.py @@ -0,0 +1,195 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# Sampling from about 20M text materials include literature and computer technology + +# 128 --> 0.79 +# 256 --> 0.92 +# 512 --> 0.986 +# 1024 --> 0.99944 +# 2048 --> 0.99999 +# +# Idea Distribution Ratio = 0.98653 / (1-0.98653) = 73.24 +# Random Distribution Ration = 512 / (2350-512) = 0.279. +# +# Typical Distribution Ratio + +EUCKR_TYPICAL_DISTRIBUTION_RATIO = 6.0 + +EUCKR_TABLE_SIZE = 2352 + +# Char to FreqOrder table , +EUCKR_CHAR_TO_FREQ_ORDER = ( + 13, 130, 120,1396, 481,1719,1720, 328, 609, 212,1721, 707, 400, 299,1722, 87, +1397,1723, 104, 536,1117,1203,1724,1267, 685,1268, 508,1725,1726,1727,1728,1398, +1399,1729,1730,1731, 141, 621, 326,1057, 368,1732, 267, 488, 20,1733,1269,1734, + 945,1400,1735, 47, 904,1270,1736,1737, 773, 248,1738, 409, 313, 786, 429,1739, + 116, 987, 813,1401, 683, 75,1204, 145,1740,1741,1742,1743, 16, 847, 667, 622, + 708,1744,1745,1746, 966, 787, 304, 129,1747, 60, 820, 123, 676,1748,1749,1750, +1751, 617,1752, 626,1753,1754,1755,1756, 653,1757,1758,1759,1760,1761,1762, 856, + 344,1763,1764,1765,1766, 89, 401, 418, 806, 905, 848,1767,1768,1769, 946,1205, + 709,1770,1118,1771, 241,1772,1773,1774,1271,1775, 569,1776, 999,1777,1778,1779, +1780, 337, 751,1058, 28, 628, 254,1781, 177, 906, 270, 349, 891,1079,1782, 19, +1783, 379,1784, 315,1785, 629, 754,1402, 559,1786, 636, 203,1206,1787, 710, 567, +1788, 935, 814,1789,1790,1207, 766, 528,1791,1792,1208,1793,1794,1795,1796,1797, +1403,1798,1799, 533,1059,1404,1405,1156,1406, 936, 884,1080,1800, 351,1801,1802, +1803,1804,1805, 801,1806,1807,1808,1119,1809,1157, 714, 474,1407,1810, 298, 899, + 885,1811,1120, 802,1158,1812, 892,1813,1814,1408, 659,1815,1816,1121,1817,1818, +1819,1820,1821,1822, 319,1823, 594, 545,1824, 815, 937,1209,1825,1826, 573,1409, +1022,1827,1210,1828,1829,1830,1831,1832,1833, 556, 722, 807,1122,1060,1834, 697, +1835, 900, 557, 715,1836,1410, 540,1411, 752,1159, 294, 597,1211, 976, 803, 770, +1412,1837,1838, 39, 794,1413, 358,1839, 371, 925,1840, 453, 661, 788, 531, 723, + 544,1023,1081, 869, 91,1841, 392, 430, 790, 602,1414, 677,1082, 457,1415,1416, +1842,1843, 475, 327,1024,1417, 795, 121,1844, 733, 403,1418,1845,1846,1847, 300, + 119, 711,1212, 627,1848,1272, 207,1849,1850, 796,1213, 382,1851, 519,1852,1083, + 893,1853,1854,1855, 367, 809, 487, 671,1856, 663,1857,1858, 956, 471, 306, 857, +1859,1860,1160,1084,1861,1862,1863,1864,1865,1061,1866,1867,1868,1869,1870,1871, + 282, 96, 574,1872, 502,1085,1873,1214,1874, 907,1875,1876, 827, 977,1419,1420, +1421, 268,1877,1422,1878,1879,1880, 308,1881, 2, 537,1882,1883,1215,1884,1885, + 127, 791,1886,1273,1423,1887, 34, 336, 404, 643,1888, 571, 654, 894, 840,1889, + 0, 886,1274, 122, 575, 260, 908, 938,1890,1275, 410, 316,1891,1892, 100,1893, +1894,1123, 48,1161,1124,1025,1895, 633, 901,1276,1896,1897, 115, 816,1898, 317, +1899, 694,1900, 909, 734,1424, 572, 866,1425, 691, 85, 524,1010, 543, 394, 841, +1901,1902,1903,1026,1904,1905,1906,1907,1908,1909, 30, 451, 651, 988, 310,1910, +1911,1426, 810,1216, 93,1912,1913,1277,1217,1914, 858, 759, 45, 58, 181, 610, + 269,1915,1916, 131,1062, 551, 443,1000, 821,1427, 957, 895,1086,1917,1918, 375, +1919, 359,1920, 687,1921, 822,1922, 293,1923,1924, 40, 662, 118, 692, 29, 939, + 887, 640, 482, 174,1925, 69,1162, 728,1428, 910,1926,1278,1218,1279, 386, 870, + 217, 854,1163, 823,1927,1928,1929,1930, 834,1931, 78,1932, 859,1933,1063,1934, +1935,1936,1937, 438,1164, 208, 595,1938,1939,1940,1941,1219,1125,1942, 280, 888, +1429,1430,1220,1431,1943,1944,1945,1946,1947,1280, 150, 510,1432,1948,1949,1950, +1951,1952,1953,1954,1011,1087,1955,1433,1043,1956, 881,1957, 614, 958,1064,1065, +1221,1958, 638,1001, 860, 967, 896,1434, 989, 492, 553,1281,1165,1959,1282,1002, +1283,1222,1960,1961,1962,1963, 36, 383, 228, 753, 247, 454,1964, 876, 678,1965, +1966,1284, 126, 464, 490, 835, 136, 672, 529, 940,1088,1435, 473,1967,1968, 467, + 50, 390, 227, 587, 279, 378, 598, 792, 968, 240, 151, 160, 849, 882,1126,1285, + 639,1044, 133, 140, 288, 360, 811, 563,1027, 561, 142, 523,1969,1970,1971, 7, + 103, 296, 439, 407, 506, 634, 990,1972,1973,1974,1975, 645,1976,1977,1978,1979, +1980,1981, 236,1982,1436,1983,1984,1089, 192, 828, 618, 518,1166, 333,1127,1985, + 818,1223,1986,1987,1988,1989,1990,1991,1992,1993, 342,1128,1286, 746, 842,1994, +1995, 560, 223,1287, 98, 8, 189, 650, 978,1288,1996,1437,1997, 17, 345, 250, + 423, 277, 234, 512, 226, 97, 289, 42, 167,1998, 201,1999,2000, 843, 836, 824, + 532, 338, 783,1090, 182, 576, 436,1438,1439, 527, 500,2001, 947, 889,2002,2003, +2004,2005, 262, 600, 314, 447,2006, 547,2007, 693, 738,1129,2008, 71,1440, 745, + 619, 688,2009, 829,2010,2011, 147,2012, 33, 948,2013,2014, 74, 224,2015, 61, + 191, 918, 399, 637,2016,1028,1130, 257, 902,2017,2018,2019,2020,2021,2022,2023, +2024,2025,2026, 837,2027,2028,2029,2030, 179, 874, 591, 52, 724, 246,2031,2032, +2033,2034,1167, 969,2035,1289, 630, 605, 911,1091,1168,2036,2037,2038,1441, 912, +2039, 623,2040,2041, 253,1169,1290,2042,1442, 146, 620, 611, 577, 433,2043,1224, + 719,1170, 959, 440, 437, 534, 84, 388, 480,1131, 159, 220, 198, 679,2044,1012, + 819,1066,1443, 113,1225, 194, 318,1003,1029,2045,2046,2047,2048,1067,2049,2050, +2051,2052,2053, 59, 913, 112,2054, 632,2055, 455, 144, 739,1291,2056, 273, 681, + 499,2057, 448,2058,2059, 760,2060,2061, 970, 384, 169, 245,1132,2062,2063, 414, +1444,2064,2065, 41, 235,2066, 157, 252, 877, 568, 919, 789, 580,2067, 725,2068, +2069,1292,2070,2071,1445,2072,1446,2073,2074, 55, 588, 66,1447, 271,1092,2075, +1226,2076, 960,1013, 372,2077,2078,2079,2080,2081,1293,2082,2083,2084,2085, 850, +2086,2087,2088,2089,2090, 186,2091,1068, 180,2092,2093,2094, 109,1227, 522, 606, +2095, 867,1448,1093, 991,1171, 926, 353,1133,2096, 581,2097,2098,2099,1294,1449, +1450,2100, 596,1172,1014,1228,2101,1451,1295,1173,1229,2102,2103,1296,1134,1452, + 949,1135,2104,2105,1094,1453,1454,1455,2106,1095,2107,2108,2109,2110,2111,2112, +2113,2114,2115,2116,2117, 804,2118,2119,1230,1231, 805,1456, 405,1136,2120,2121, +2122,2123,2124, 720, 701,1297, 992,1457, 927,1004,2125,2126,2127,2128,2129,2130, + 22, 417,2131, 303,2132, 385,2133, 971, 520, 513,2134,1174, 73,1096, 231, 274, + 962,1458, 673,2135,1459,2136, 152,1137,2137,2138,2139,2140,1005,1138,1460,1139, +2141,2142,2143,2144, 11, 374, 844,2145, 154,1232, 46,1461,2146, 838, 830, 721, +1233, 106,2147, 90, 428, 462, 578, 566,1175, 352,2148,2149, 538,1234, 124,1298, +2150,1462, 761, 565,2151, 686,2152, 649,2153, 72, 173,2154, 460, 415,2155,1463, +2156,1235, 305,2157,2158,2159,2160,2161,2162, 579,2163,2164,2165,2166,2167, 747, +2168,2169,2170,2171,1464, 669,2172,2173,2174,2175,2176,1465,2177, 23, 530, 285, +2178, 335, 729,2179, 397,2180,2181,2182,1030,2183,2184, 698,2185,2186, 325,2187, +2188, 369,2189, 799,1097,1015, 348,2190,1069, 680,2191, 851,1466,2192,2193, 10, +2194, 613, 424,2195, 979, 108, 449, 589, 27, 172, 81,1031, 80, 774, 281, 350, +1032, 525, 301, 582,1176,2196, 674,1045,2197,2198,1467, 730, 762,2199,2200,2201, +2202,1468,2203, 993,2204,2205, 266,1070, 963,1140,2206,2207,2208, 664,1098, 972, +2209,2210,2211,1177,1469,1470, 871,2212,2213,2214,2215,2216,1471,2217,2218,2219, +2220,2221,2222,2223,2224,2225,2226,2227,1472,1236,2228,2229,2230,2231,2232,2233, +2234,2235,1299,2236,2237, 200,2238, 477, 373,2239,2240, 731, 825, 777,2241,2242, +2243, 521, 486, 548,2244,2245,2246,1473,1300, 53, 549, 137, 875, 76, 158,2247, +1301,1474, 469, 396,1016, 278, 712,2248, 321, 442, 503, 767, 744, 941,1237,1178, +1475,2249, 82, 178,1141,1179, 973,2250,1302,2251, 297,2252,2253, 570,2254,2255, +2256, 18, 450, 206,2257, 290, 292,1142,2258, 511, 162, 99, 346, 164, 735,2259, +1476,1477, 4, 554, 343, 798,1099,2260,1100,2261, 43, 171,1303, 139, 215,2262, +2263, 717, 775,2264,1033, 322, 216,2265, 831,2266, 149,2267,1304,2268,2269, 702, +1238, 135, 845, 347, 309,2270, 484,2271, 878, 655, 238,1006,1478,2272, 67,2273, + 295,2274,2275, 461,2276, 478, 942, 412,2277,1034,2278,2279,2280, 265,2281, 541, +2282,2283,2284,2285,2286, 70, 852,1071,2287,2288,2289,2290, 21, 56, 509, 117, + 432,2291,2292, 331, 980, 552,1101, 148, 284, 105, 393,1180,1239, 755,2293, 187, +2294,1046,1479,2295, 340,2296, 63,1047, 230,2297,2298,1305, 763,1306, 101, 800, + 808, 494,2299,2300,2301, 903,2302, 37,1072, 14, 5,2303, 79, 675,2304, 312, +2305,2306,2307,2308,2309,1480, 6,1307,2310,2311,2312, 1, 470, 35, 24, 229, +2313, 695, 210, 86, 778, 15, 784, 592, 779, 32, 77, 855, 964,2314, 259,2315, + 501, 380,2316,2317, 83, 981, 153, 689,1308,1481,1482,1483,2318,2319, 716,1484, +2320,2321,2322,2323,2324,2325,1485,2326,2327, 128, 57, 68, 261,1048, 211, 170, +1240, 31,2328, 51, 435, 742,2329,2330,2331, 635,2332, 264, 456,2333,2334,2335, + 425,2336,1486, 143, 507, 263, 943,2337, 363, 920,1487, 256,1488,1102, 243, 601, +1489,2338,2339,2340,2341,2342,2343,2344, 861,2345,2346,2347,2348,2349,2350, 395, +2351,1490,1491, 62, 535, 166, 225,2352,2353, 668, 419,1241, 138, 604, 928,2354, +1181,2355,1492,1493,2356,2357,2358,1143,2359, 696,2360, 387, 307,1309, 682, 476, +2361,2362, 332, 12, 222, 156,2363, 232,2364, 641, 276, 656, 517,1494,1495,1035, + 416, 736,1496,2365,1017, 586,2366,2367,2368,1497,2369, 242,2370,2371,2372,1498, +2373, 965, 713,2374,2375,2376,2377, 740, 982,1499, 944,1500,1007,2378,2379,1310, +1501,2380,2381,2382, 785, 329,2383,2384,1502,2385,2386,2387, 932,2388,1503,2389, +2390,2391,2392,1242,2393,2394,2395,2396,2397, 994, 950,2398,2399,2400,2401,1504, +1311,2402,2403,2404,2405,1049, 749,2406,2407, 853, 718,1144,1312,2408,1182,1505, +2409,2410, 255, 516, 479, 564, 550, 214,1506,1507,1313, 413, 239, 444, 339,1145, +1036,1508,1509,1314,1037,1510,1315,2411,1511,2412,2413,2414, 176, 703, 497, 624, + 593, 921, 302,2415, 341, 165,1103,1512,2416,1513,2417,2418,2419, 376,2420, 700, +2421,2422,2423, 258, 768,1316,2424,1183,2425, 995, 608,2426,2427,2428,2429, 221, +2430,2431,2432,2433,2434,2435,2436,2437, 195, 323, 726, 188, 897, 983,1317, 377, + 644,1050, 879,2438, 452,2439,2440,2441,2442,2443,2444, 914,2445,2446,2447,2448, + 915, 489,2449,1514,1184,2450,2451, 515, 64, 427, 495,2452, 583,2453, 483, 485, +1038, 562, 213,1515, 748, 666,2454,2455,2456,2457, 334,2458, 780, 996,1008, 705, +1243,2459,2460,2461,2462,2463, 114,2464, 493,1146, 366, 163,1516, 961,1104,2465, + 291,2466,1318,1105,2467,1517, 365,2468, 355, 951,1244,2469,1319,2470, 631,2471, +2472, 218,1320, 364, 320, 756,1518,1519,1321,1520,1322,2473,2474,2475,2476, 997, +2477,2478,2479,2480, 665,1185,2481, 916,1521,2482,2483,2484, 584, 684,2485,2486, + 797,2487,1051,1186,2488,2489,2490,1522,2491,2492, 370,2493,1039,1187, 65,2494, + 434, 205, 463,1188,2495, 125, 812, 391, 402, 826, 699, 286, 398, 155, 781, 771, + 585,2496, 590, 505,1073,2497, 599, 244, 219, 917,1018, 952, 646,1523,2498,1323, +2499,2500, 49, 984, 354, 741,2501, 625,2502,1324,2503,1019, 190, 357, 757, 491, + 95, 782, 868,2504,2505,2506,2507,2508,2509, 134,1524,1074, 422,1525, 898,2510, + 161,2511,2512,2513,2514, 769,2515,1526,2516,2517, 411,1325,2518, 472,1527,2519, +2520,2521,2522,2523,2524, 985,2525,2526,2527,2528,2529,2530, 764,2531,1245,2532, +2533, 25, 204, 311,2534, 496,2535,1052,2536,2537,2538,2539,2540,2541,2542, 199, + 704, 504, 468, 758, 657,1528, 196, 44, 839,1246, 272, 750,2543, 765, 862,2544, +2545,1326,2546, 132, 615, 933,2547, 732,2548,2549,2550,1189,1529,2551, 283,1247, +1053, 607, 929,2552,2553,2554, 930, 183, 872, 616,1040,1147,2555,1148,1020, 441, + 249,1075,2556,2557,2558, 466, 743,2559,2560,2561, 92, 514, 426, 420, 526,2562, +2563,2564,2565,2566,2567,2568, 185,2569,2570,2571,2572, 776,1530, 658,2573, 362, +2574, 361, 922,1076, 793,2575,2576,2577,2578,2579,2580,1531, 251,2581,2582,2583, +2584,1532, 54, 612, 237,1327,2585,2586, 275, 408, 647, 111,2587,1533,1106, 465, + 3, 458, 9, 38,2588, 107, 110, 890, 209, 26, 737, 498,2589,1534,2590, 431, + 202, 88,1535, 356, 287,1107, 660,1149,2591, 381,1536, 986,1150, 445,1248,1151, + 974,2592,2593, 846,2594, 446, 953, 184,1249,1250, 727,2595, 923, 193, 883,2596, +2597,2598, 102, 324, 539, 817,2599, 421,1041,2600, 832,2601, 94, 175, 197, 406, +2602, 459,2603,2604,2605,2606,2607, 330, 555,2608,2609,2610, 706,1108, 389,2611, +2612,2613,2614, 233,2615, 833, 558, 931, 954,1251,2616,2617,1537, 546,2618,2619, +1009,2620,2621,2622,1538, 690,1328,2623, 955,2624,1539,2625,2626, 772,2627,2628, +2629,2630,2631, 924, 648, 863, 603,2632,2633, 934,1540, 864, 865,2634, 642,1042, + 670,1190,2635,2636,2637,2638, 168,2639, 652, 873, 542,1054,1541,2640,2641,2642, # 512, 256 +) + diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/euckrprober.py b/lib/python3.6/site-packages/pip/_vendor/chardet/euckrprober.py similarity index 82% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/euckrprober.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/euckrprober.py index 5982a46..345a060 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/euckrprober.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/euckrprober.py @@ -28,15 +28,20 @@ from .mbcharsetprober import MultiByteCharSetProber from .codingstatemachine import CodingStateMachine from .chardistribution import EUCKRDistributionAnalysis -from .mbcssm import EUCKRSMModel +from .mbcssm import EUCKR_SM_MODEL class EUCKRProber(MultiByteCharSetProber): def __init__(self): - MultiByteCharSetProber.__init__(self) - self._mCodingSM = CodingStateMachine(EUCKRSMModel) - self._mDistributionAnalyzer = EUCKRDistributionAnalysis() + super(EUCKRProber, self).__init__() + self.coding_sm = CodingStateMachine(EUCKR_SM_MODEL) + self.distribution_analyzer = EUCKRDistributionAnalysis() self.reset() - def get_charset_name(self): + @property + def charset_name(self): return "EUC-KR" + + @property + def language(self): + return "Korean" diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/euctwfreq.py b/lib/python3.6/site-packages/pip/_vendor/chardet/euctwfreq.py similarity index 66% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/euctwfreq.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/euctwfreq.py index 576e750..ed7a995 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/euctwfreq.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/euctwfreq.py @@ -44,385 +44,344 @@ EUCTW_TYPICAL_DISTRIBUTION_RATIO = 0.75 # Char to FreqOrder table , -EUCTW_TABLE_SIZE = 8102 +EUCTW_TABLE_SIZE = 5376 -EUCTWCharToFreqOrder = ( - 1,1800,1506, 255,1431, 198, 9, 82, 6,7310, 177, 202,3615,1256,2808, 110, # 2742 -3735, 33,3241, 261, 76, 44,2113, 16,2931,2184,1176, 659,3868, 26,3404,2643, # 2758 -1198,3869,3313,4060, 410,2211, 302, 590, 361,1963, 8, 204, 58,4296,7311,1931, # 2774 - 63,7312,7313, 317,1614, 75, 222, 159,4061,2412,1480,7314,3500,3068, 224,2809, # 2790 -3616, 3, 10,3870,1471, 29,2774,1135,2852,1939, 873, 130,3242,1123, 312,7315, # 2806 -4297,2051, 507, 252, 682,7316, 142,1914, 124, 206,2932, 34,3501,3173, 64, 604, # 2822 -7317,2494,1976,1977, 155,1990, 645, 641,1606,7318,3405, 337, 72, 406,7319, 80, # 2838 - 630, 238,3174,1509, 263, 939,1092,2644, 756,1440,1094,3406, 449, 69,2969, 591, # 2854 - 179,2095, 471, 115,2034,1843, 60, 50,2970, 134, 806,1868, 734,2035,3407, 180, # 2870 - 995,1607, 156, 537,2893, 688,7320, 319,1305, 779,2144, 514,2374, 298,4298, 359, # 2886 -2495, 90,2707,1338, 663, 11, 906,1099,2545, 20,2436, 182, 532,1716,7321, 732, # 2902 -1376,4062,1311,1420,3175, 25,2312,1056, 113, 399, 382,1949, 242,3408,2467, 529, # 2918 -3243, 475,1447,3617,7322, 117, 21, 656, 810,1297,2295,2329,3502,7323, 126,4063, # 2934 - 706, 456, 150, 613,4299, 71,1118,2036,4064, 145,3069, 85, 835, 486,2114,1246, # 2950 -1426, 428, 727,1285,1015, 800, 106, 623, 303,1281,7324,2127,2354, 347,3736, 221, # 2966 -3503,3110,7325,1955,1153,4065, 83, 296,1199,3070, 192, 624, 93,7326, 822,1897, # 2982 -2810,3111, 795,2064, 991,1554,1542,1592, 27, 43,2853, 859, 139,1456, 860,4300, # 2998 - 437, 712,3871, 164,2392,3112, 695, 211,3017,2096, 195,3872,1608,3504,3505,3618, # 3014 -3873, 234, 811,2971,2097,3874,2229,1441,3506,1615,2375, 668,2076,1638, 305, 228, # 3030 -1664,4301, 467, 415,7327, 262,2098,1593, 239, 108, 300, 200,1033, 512,1247,2077, # 3046 -7328,7329,2173,3176,3619,2673, 593, 845,1062,3244, 88,1723,2037,3875,1950, 212, # 3062 - 266, 152, 149, 468,1898,4066,4302, 77, 187,7330,3018, 37, 5,2972,7331,3876, # 3078 -7332,7333, 39,2517,4303,2894,3177,2078, 55, 148, 74,4304, 545, 483,1474,1029, # 3094 -1665, 217,1869,1531,3113,1104,2645,4067, 24, 172,3507, 900,3877,3508,3509,4305, # 3110 - 32,1408,2811,1312, 329, 487,2355,2247,2708, 784,2674, 4,3019,3314,1427,1788, # 3126 - 188, 109, 499,7334,3620,1717,1789, 888,1217,3020,4306,7335,3510,7336,3315,1520, # 3142 -3621,3878, 196,1034, 775,7337,7338, 929,1815, 249, 439, 38,7339,1063,7340, 794, # 3158 -3879,1435,2296, 46, 178,3245,2065,7341,2376,7342, 214,1709,4307, 804, 35, 707, # 3174 - 324,3622,1601,2546, 140, 459,4068,7343,7344,1365, 839, 272, 978,2257,2572,3409, # 3190 -2128,1363,3623,1423, 697, 100,3071, 48, 70,1231, 495,3114,2193,7345,1294,7346, # 3206 -2079, 462, 586,1042,3246, 853, 256, 988, 185,2377,3410,1698, 434,1084,7347,3411, # 3222 - 314,2615,2775,4308,2330,2331, 569,2280, 637,1816,2518, 757,1162,1878,1616,3412, # 3238 - 287,1577,2115, 768,4309,1671,2854,3511,2519,1321,3737, 909,2413,7348,4069, 933, # 3254 -3738,7349,2052,2356,1222,4310, 765,2414,1322, 786,4311,7350,1919,1462,1677,2895, # 3270 -1699,7351,4312,1424,2437,3115,3624,2590,3316,1774,1940,3413,3880,4070, 309,1369, # 3286 -1130,2812, 364,2230,1653,1299,3881,3512,3882,3883,2646, 525,1085,3021, 902,2000, # 3302 -1475, 964,4313, 421,1844,1415,1057,2281, 940,1364,3116, 376,4314,4315,1381, 7, # 3318 -2520, 983,2378, 336,1710,2675,1845, 321,3414, 559,1131,3022,2742,1808,1132,1313, # 3334 - 265,1481,1857,7352, 352,1203,2813,3247, 167,1089, 420,2814, 776, 792,1724,3513, # 3350 -4071,2438,3248,7353,4072,7354, 446, 229, 333,2743, 901,3739,1200,1557,4316,2647, # 3366 -1920, 395,2744,2676,3740,4073,1835, 125, 916,3178,2616,4317,7355,7356,3741,7357, # 3382 -7358,7359,4318,3117,3625,1133,2547,1757,3415,1510,2313,1409,3514,7360,2145, 438, # 3398 -2591,2896,2379,3317,1068, 958,3023, 461, 311,2855,2677,4074,1915,3179,4075,1978, # 3414 - 383, 750,2745,2617,4076, 274, 539, 385,1278,1442,7361,1154,1964, 384, 561, 210, # 3430 - 98,1295,2548,3515,7362,1711,2415,1482,3416,3884,2897,1257, 129,7363,3742, 642, # 3446 - 523,2776,2777,2648,7364, 141,2231,1333, 68, 176, 441, 876, 907,4077, 603,2592, # 3462 - 710, 171,3417, 404, 549, 18,3118,2393,1410,3626,1666,7365,3516,4319,2898,4320, # 3478 -7366,2973, 368,7367, 146, 366, 99, 871,3627,1543, 748, 807,1586,1185, 22,2258, # 3494 - 379,3743,3180,7368,3181, 505,1941,2618,1991,1382,2314,7369, 380,2357, 218, 702, # 3510 -1817,1248,3418,3024,3517,3318,3249,7370,2974,3628, 930,3250,3744,7371, 59,7372, # 3526 - 585, 601,4078, 497,3419,1112,1314,4321,1801,7373,1223,1472,2174,7374, 749,1836, # 3542 - 690,1899,3745,1772,3885,1476, 429,1043,1790,2232,2116, 917,4079, 447,1086,1629, # 3558 -7375, 556,7376,7377,2020,1654, 844,1090, 105, 550, 966,1758,2815,1008,1782, 686, # 3574 -1095,7378,2282, 793,1602,7379,3518,2593,4322,4080,2933,2297,4323,3746, 980,2496, # 3590 - 544, 353, 527,4324, 908,2678,2899,7380, 381,2619,1942,1348,7381,1341,1252, 560, # 3606 -3072,7382,3420,2856,7383,2053, 973, 886,2080, 143,4325,7384,7385, 157,3886, 496, # 3622 -4081, 57, 840, 540,2038,4326,4327,3421,2117,1445, 970,2259,1748,1965,2081,4082, # 3638 -3119,1234,1775,3251,2816,3629, 773,1206,2129,1066,2039,1326,3887,1738,1725,4083, # 3654 - 279,3120, 51,1544,2594, 423,1578,2130,2066, 173,4328,1879,7386,7387,1583, 264, # 3670 - 610,3630,4329,2439, 280, 154,7388,7389,7390,1739, 338,1282,3073, 693,2857,1411, # 3686 -1074,3747,2440,7391,4330,7392,7393,1240, 952,2394,7394,2900,1538,2679, 685,1483, # 3702 -4084,2468,1436, 953,4085,2054,4331, 671,2395, 79,4086,2441,3252, 608, 567,2680, # 3718 -3422,4087,4088,1691, 393,1261,1791,2396,7395,4332,7396,7397,7398,7399,1383,1672, # 3734 -3748,3182,1464, 522,1119, 661,1150, 216, 675,4333,3888,1432,3519, 609,4334,2681, # 3750 -2397,7400,7401,7402,4089,3025, 0,7403,2469, 315, 231,2442, 301,3319,4335,2380, # 3766 -7404, 233,4090,3631,1818,4336,4337,7405, 96,1776,1315,2082,7406, 257,7407,1809, # 3782 -3632,2709,1139,1819,4091,2021,1124,2163,2778,1777,2649,7408,3074, 363,1655,3183, # 3798 -7409,2975,7410,7411,7412,3889,1567,3890, 718, 103,3184, 849,1443, 341,3320,2934, # 3814 -1484,7413,1712, 127, 67, 339,4092,2398, 679,1412, 821,7414,7415, 834, 738, 351, # 3830 -2976,2146, 846, 235,1497,1880, 418,1992,3749,2710, 186,1100,2147,2746,3520,1545, # 3846 -1355,2935,2858,1377, 583,3891,4093,2573,2977,7416,1298,3633,1078,2549,3634,2358, # 3862 - 78,3750,3751, 267,1289,2099,2001,1594,4094, 348, 369,1274,2194,2175,1837,4338, # 3878 -1820,2817,3635,2747,2283,2002,4339,2936,2748, 144,3321, 882,4340,3892,2749,3423, # 3894 -4341,2901,7417,4095,1726, 320,7418,3893,3026, 788,2978,7419,2818,1773,1327,2859, # 3910 -3894,2819,7420,1306,4342,2003,1700,3752,3521,2359,2650, 787,2022, 506, 824,3636, # 3926 - 534, 323,4343,1044,3322,2023,1900, 946,3424,7421,1778,1500,1678,7422,1881,4344, # 3942 - 165, 243,4345,3637,2521, 123, 683,4096, 764,4346, 36,3895,1792, 589,2902, 816, # 3958 - 626,1667,3027,2233,1639,1555,1622,3753,3896,7423,3897,2860,1370,1228,1932, 891, # 3974 -2083,2903, 304,4097,7424, 292,2979,2711,3522, 691,2100,4098,1115,4347, 118, 662, # 3990 -7425, 611,1156, 854,2381,1316,2861, 2, 386, 515,2904,7426,7427,3253, 868,2234, # 4006 -1486, 855,2651, 785,2212,3028,7428,1040,3185,3523,7429,3121, 448,7430,1525,7431, # 4022 -2164,4348,7432,3754,7433,4099,2820,3524,3122, 503, 818,3898,3123,1568, 814, 676, # 4038 -1444, 306,1749,7434,3755,1416,1030, 197,1428, 805,2821,1501,4349,7435,7436,7437, # 4054 -1993,7438,4350,7439,7440,2195, 13,2779,3638,2980,3124,1229,1916,7441,3756,2131, # 4070 -7442,4100,4351,2399,3525,7443,2213,1511,1727,1120,7444,7445, 646,3757,2443, 307, # 4086 -7446,7447,1595,3186,7448,7449,7450,3639,1113,1356,3899,1465,2522,2523,7451, 519, # 4102 -7452, 128,2132, 92,2284,1979,7453,3900,1512, 342,3125,2196,7454,2780,2214,1980, # 4118 -3323,7455, 290,1656,1317, 789, 827,2360,7456,3758,4352, 562, 581,3901,7457, 401, # 4134 -4353,2248, 94,4354,1399,2781,7458,1463,2024,4355,3187,1943,7459, 828,1105,4101, # 4150 -1262,1394,7460,4102, 605,4356,7461,1783,2862,7462,2822, 819,2101, 578,2197,2937, # 4166 -7463,1502, 436,3254,4103,3255,2823,3902,2905,3425,3426,7464,2712,2315,7465,7466, # 4182 -2332,2067, 23,4357, 193, 826,3759,2102, 699,1630,4104,3075, 390,1793,1064,3526, # 4198 -7467,1579,3076,3077,1400,7468,4105,1838,1640,2863,7469,4358,4359, 137,4106, 598, # 4214 -3078,1966, 780, 104, 974,2938,7470, 278, 899, 253, 402, 572, 504, 493,1339,7471, # 4230 -3903,1275,4360,2574,2550,7472,3640,3029,3079,2249, 565,1334,2713, 863, 41,7473, # 4246 -7474,4361,7475,1657,2333, 19, 463,2750,4107, 606,7476,2981,3256,1087,2084,1323, # 4262 -2652,2982,7477,1631,1623,1750,4108,2682,7478,2864, 791,2714,2653,2334, 232,2416, # 4278 -7479,2983,1498,7480,2654,2620, 755,1366,3641,3257,3126,2025,1609, 119,1917,3427, # 4294 - 862,1026,4109,7481,3904,3760,4362,3905,4363,2260,1951,2470,7482,1125, 817,4110, # 4310 -4111,3906,1513,1766,2040,1487,4112,3030,3258,2824,3761,3127,7483,7484,1507,7485, # 4326 -2683, 733, 40,1632,1106,2865, 345,4113, 841,2524, 230,4364,2984,1846,3259,3428, # 4342 -7486,1263, 986,3429,7487, 735, 879, 254,1137, 857, 622,1300,1180,1388,1562,3907, # 4358 -3908,2939, 967,2751,2655,1349, 592,2133,1692,3324,2985,1994,4114,1679,3909,1901, # 4374 -2185,7488, 739,3642,2715,1296,1290,7489,4115,2198,2199,1921,1563,2595,2551,1870, # 4390 -2752,2986,7490, 435,7491, 343,1108, 596, 17,1751,4365,2235,3430,3643,7492,4366, # 4406 - 294,3527,2940,1693, 477, 979, 281,2041,3528, 643,2042,3644,2621,2782,2261,1031, # 4422 -2335,2134,2298,3529,4367, 367,1249,2552,7493,3530,7494,4368,1283,3325,2004, 240, # 4438 -1762,3326,4369,4370, 836,1069,3128, 474,7495,2148,2525, 268,3531,7496,3188,1521, # 4454 -1284,7497,1658,1546,4116,7498,3532,3533,7499,4117,3327,2684,1685,4118, 961,1673, # 4470 -2622, 190,2005,2200,3762,4371,4372,7500, 570,2497,3645,1490,7501,4373,2623,3260, # 4486 -1956,4374, 584,1514, 396,1045,1944,7502,4375,1967,2444,7503,7504,4376,3910, 619, # 4502 -7505,3129,3261, 215,2006,2783,2553,3189,4377,3190,4378, 763,4119,3763,4379,7506, # 4518 -7507,1957,1767,2941,3328,3646,1174, 452,1477,4380,3329,3130,7508,2825,1253,2382, # 4534 -2186,1091,2285,4120, 492,7509, 638,1169,1824,2135,1752,3911, 648, 926,1021,1324, # 4550 -4381, 520,4382, 997, 847,1007, 892,4383,3764,2262,1871,3647,7510,2400,1784,4384, # 4566 -1952,2942,3080,3191,1728,4121,2043,3648,4385,2007,1701,3131,1551, 30,2263,4122, # 4582 -7511,2026,4386,3534,7512, 501,7513,4123, 594,3431,2165,1821,3535,3432,3536,3192, # 4598 - 829,2826,4124,7514,1680,3132,1225,4125,7515,3262,4387,4126,3133,2336,7516,4388, # 4614 -4127,7517,3912,3913,7518,1847,2383,2596,3330,7519,4389, 374,3914, 652,4128,4129, # 4630 - 375,1140, 798,7520,7521,7522,2361,4390,2264, 546,1659, 138,3031,2445,4391,7523, # 4646 -2250, 612,1848, 910, 796,3765,1740,1371, 825,3766,3767,7524,2906,2554,7525, 692, # 4662 - 444,3032,2624, 801,4392,4130,7526,1491, 244,1053,3033,4131,4132, 340,7527,3915, # 4678 -1041,2987, 293,1168, 87,1357,7528,1539, 959,7529,2236, 721, 694,4133,3768, 219, # 4694 -1478, 644,1417,3331,2656,1413,1401,1335,1389,3916,7530,7531,2988,2362,3134,1825, # 4710 - 730,1515, 184,2827, 66,4393,7532,1660,2943, 246,3332, 378,1457, 226,3433, 975, # 4726 -3917,2944,1264,3537, 674, 696,7533, 163,7534,1141,2417,2166, 713,3538,3333,4394, # 4742 -3918,7535,7536,1186, 15,7537,1079,1070,7538,1522,3193,3539, 276,1050,2716, 758, # 4758 -1126, 653,2945,3263,7539,2337, 889,3540,3919,3081,2989, 903,1250,4395,3920,3434, # 4774 -3541,1342,1681,1718, 766,3264, 286, 89,2946,3649,7540,1713,7541,2597,3334,2990, # 4790 -7542,2947,2215,3194,2866,7543,4396,2498,2526, 181, 387,1075,3921, 731,2187,3335, # 4806 -7544,3265, 310, 313,3435,2299, 770,4134, 54,3034, 189,4397,3082,3769,3922,7545, # 4822 -1230,1617,1849, 355,3542,4135,4398,3336, 111,4136,3650,1350,3135,3436,3035,4137, # 4838 -2149,3266,3543,7546,2784,3923,3924,2991, 722,2008,7547,1071, 247,1207,2338,2471, # 4854 -1378,4399,2009, 864,1437,1214,4400, 373,3770,1142,2216, 667,4401, 442,2753,2555, # 4870 -3771,3925,1968,4138,3267,1839, 837, 170,1107, 934,1336,1882,7548,7549,2118,4139, # 4886 -2828, 743,1569,7550,4402,4140, 582,2384,1418,3437,7551,1802,7552, 357,1395,1729, # 4902 -3651,3268,2418,1564,2237,7553,3083,3772,1633,4403,1114,2085,4141,1532,7554, 482, # 4918 -2446,4404,7555,7556,1492, 833,1466,7557,2717,3544,1641,2829,7558,1526,1272,3652, # 4934 -4142,1686,1794, 416,2556,1902,1953,1803,7559,3773,2785,3774,1159,2316,7560,2867, # 4950 -4405,1610,1584,3036,2419,2754, 443,3269,1163,3136,7561,7562,3926,7563,4143,2499, # 4966 -3037,4406,3927,3137,2103,1647,3545,2010,1872,4144,7564,4145, 431,3438,7565, 250, # 4982 - 97, 81,4146,7566,1648,1850,1558, 160, 848,7567, 866, 740,1694,7568,2201,2830, # 4998 -3195,4147,4407,3653,1687, 950,2472, 426, 469,3196,3654,3655,3928,7569,7570,1188, # 5014 - 424,1995, 861,3546,4148,3775,2202,2685, 168,1235,3547,4149,7571,2086,1674,4408, # 5030 -3337,3270, 220,2557,1009,7572,3776, 670,2992, 332,1208, 717,7573,7574,3548,2447, # 5046 -3929,3338,7575, 513,7576,1209,2868,3339,3138,4409,1080,7577,7578,7579,7580,2527, # 5062 -3656,3549, 815,1587,3930,3931,7581,3550,3439,3777,1254,4410,1328,3038,1390,3932, # 5078 -1741,3933,3778,3934,7582, 236,3779,2448,3271,7583,7584,3657,3780,1273,3781,4411, # 5094 -7585, 308,7586,4412, 245,4413,1851,2473,1307,2575, 430, 715,2136,2449,7587, 270, # 5110 - 199,2869,3935,7588,3551,2718,1753, 761,1754, 725,1661,1840,4414,3440,3658,7589, # 5126 -7590, 587, 14,3272, 227,2598, 326, 480,2265, 943,2755,3552, 291, 650,1883,7591, # 5142 -1702,1226, 102,1547, 62,3441, 904,4415,3442,1164,4150,7592,7593,1224,1548,2756, # 5158 - 391, 498,1493,7594,1386,1419,7595,2055,1177,4416, 813, 880,1081,2363, 566,1145, # 5174 -4417,2286,1001,1035,2558,2599,2238, 394,1286,7596,7597,2068,7598, 86,1494,1730, # 5190 -3936, 491,1588, 745, 897,2948, 843,3340,3937,2757,2870,3273,1768, 998,2217,2069, # 5206 - 397,1826,1195,1969,3659,2993,3341, 284,7599,3782,2500,2137,2119,1903,7600,3938, # 5222 -2150,3939,4151,1036,3443,1904, 114,2559,4152, 209,1527,7601,7602,2949,2831,2625, # 5238 -2385,2719,3139, 812,2560,7603,3274,7604,1559, 737,1884,3660,1210, 885, 28,2686, # 5254 -3553,3783,7605,4153,1004,1779,4418,7606, 346,1981,2218,2687,4419,3784,1742, 797, # 5270 -1642,3940,1933,1072,1384,2151, 896,3941,3275,3661,3197,2871,3554,7607,2561,1958, # 5286 -4420,2450,1785,7608,7609,7610,3942,4154,1005,1308,3662,4155,2720,4421,4422,1528, # 5302 -2600, 161,1178,4156,1982, 987,4423,1101,4157, 631,3943,1157,3198,2420,1343,1241, # 5318 -1016,2239,2562, 372, 877,2339,2501,1160, 555,1934, 911,3944,7611, 466,1170, 169, # 5334 -1051,2907,2688,3663,2474,2994,1182,2011,2563,1251,2626,7612, 992,2340,3444,1540, # 5350 -2721,1201,2070,2401,1996,2475,7613,4424, 528,1922,2188,1503,1873,1570,2364,3342, # 5366 -3276,7614, 557,1073,7615,1827,3445,2087,2266,3140,3039,3084, 767,3085,2786,4425, # 5382 -1006,4158,4426,2341,1267,2176,3664,3199, 778,3945,3200,2722,1597,2657,7616,4427, # 5398 -7617,3446,7618,7619,7620,3277,2689,1433,3278, 131, 95,1504,3946, 723,4159,3141, # 5414 -1841,3555,2758,2189,3947,2027,2104,3665,7621,2995,3948,1218,7622,3343,3201,3949, # 5430 -4160,2576, 248,1634,3785, 912,7623,2832,3666,3040,3786, 654, 53,7624,2996,7625, # 5446 -1688,4428, 777,3447,1032,3950,1425,7626, 191, 820,2120,2833, 971,4429, 931,3202, # 5462 - 135, 664, 783,3787,1997, 772,2908,1935,3951,3788,4430,2909,3203, 282,2723, 640, # 5478 -1372,3448,1127, 922, 325,3344,7627,7628, 711,2044,7629,7630,3952,2219,2787,1936, # 5494 -3953,3345,2220,2251,3789,2300,7631,4431,3790,1258,3279,3954,3204,2138,2950,3955, # 5510 -3956,7632,2221, 258,3205,4432, 101,1227,7633,3280,1755,7634,1391,3281,7635,2910, # 5526 -2056, 893,7636,7637,7638,1402,4161,2342,7639,7640,3206,3556,7641,7642, 878,1325, # 5542 -1780,2788,4433, 259,1385,2577, 744,1183,2267,4434,7643,3957,2502,7644, 684,1024, # 5558 -4162,7645, 472,3557,3449,1165,3282,3958,3959, 322,2152, 881, 455,1695,1152,1340, # 5574 - 660, 554,2153,4435,1058,4436,4163, 830,1065,3346,3960,4437,1923,7646,1703,1918, # 5590 -7647, 932,2268, 122,7648,4438, 947, 677,7649,3791,2627, 297,1905,1924,2269,4439, # 5606 -2317,3283,7650,7651,4164,7652,4165, 84,4166, 112, 989,7653, 547,1059,3961, 701, # 5622 -3558,1019,7654,4167,7655,3450, 942, 639, 457,2301,2451, 993,2951, 407, 851, 494, # 5638 -4440,3347, 927,7656,1237,7657,2421,3348, 573,4168, 680, 921,2911,1279,1874, 285, # 5654 - 790,1448,1983, 719,2167,7658,7659,4441,3962,3963,1649,7660,1541, 563,7661,1077, # 5670 -7662,3349,3041,3451, 511,2997,3964,3965,3667,3966,1268,2564,3350,3207,4442,4443, # 5686 -7663, 535,1048,1276,1189,2912,2028,3142,1438,1373,2834,2952,1134,2012,7664,4169, # 5702 -1238,2578,3086,1259,7665, 700,7666,2953,3143,3668,4170,7667,4171,1146,1875,1906, # 5718 -4444,2601,3967, 781,2422, 132,1589, 203, 147, 273,2789,2402, 898,1786,2154,3968, # 5734 -3969,7668,3792,2790,7669,7670,4445,4446,7671,3208,7672,1635,3793, 965,7673,1804, # 5750 -2690,1516,3559,1121,1082,1329,3284,3970,1449,3794, 65,1128,2835,2913,2759,1590, # 5766 -3795,7674,7675, 12,2658, 45, 976,2579,3144,4447, 517,2528,1013,1037,3209,7676, # 5782 -3796,2836,7677,3797,7678,3452,7679,2602, 614,1998,2318,3798,3087,2724,2628,7680, # 5798 -2580,4172, 599,1269,7681,1810,3669,7682,2691,3088, 759,1060, 489,1805,3351,3285, # 5814 -1358,7683,7684,2386,1387,1215,2629,2252, 490,7685,7686,4173,1759,2387,2343,7687, # 5830 -4448,3799,1907,3971,2630,1806,3210,4449,3453,3286,2760,2344, 874,7688,7689,3454, # 5846 -3670,1858, 91,2914,3671,3042,3800,4450,7690,3145,3972,2659,7691,3455,1202,1403, # 5862 -3801,2954,2529,1517,2503,4451,3456,2504,7692,4452,7693,2692,1885,1495,1731,3973, # 5878 -2365,4453,7694,2029,7695,7696,3974,2693,1216, 237,2581,4174,2319,3975,3802,4454, # 5894 -4455,2694,3560,3457, 445,4456,7697,7698,7699,7700,2761, 61,3976,3672,1822,3977, # 5910 -7701, 687,2045, 935, 925, 405,2660, 703,1096,1859,2725,4457,3978,1876,1367,2695, # 5926 -3352, 918,2105,1781,2476, 334,3287,1611,1093,4458, 564,3146,3458,3673,3353, 945, # 5942 -2631,2057,4459,7702,1925, 872,4175,7703,3459,2696,3089, 349,4176,3674,3979,4460, # 5958 -3803,4177,3675,2155,3980,4461,4462,4178,4463,2403,2046, 782,3981, 400, 251,4179, # 5974 -1624,7704,7705, 277,3676, 299,1265, 476,1191,3804,2121,4180,4181,1109, 205,7706, # 5990 -2582,1000,2156,3561,1860,7707,7708,7709,4464,7710,4465,2565, 107,2477,2157,3982, # 6006 -3460,3147,7711,1533, 541,1301, 158, 753,4182,2872,3562,7712,1696, 370,1088,4183, # 6022 -4466,3563, 579, 327, 440, 162,2240, 269,1937,1374,3461, 968,3043, 56,1396,3090, # 6038 -2106,3288,3354,7713,1926,2158,4467,2998,7714,3564,7715,7716,3677,4468,2478,7717, # 6054 -2791,7718,1650,4469,7719,2603,7720,7721,3983,2661,3355,1149,3356,3984,3805,3985, # 6070 -7722,1076, 49,7723, 951,3211,3289,3290, 450,2837, 920,7724,1811,2792,2366,4184, # 6086 -1908,1138,2367,3806,3462,7725,3212,4470,1909,1147,1518,2423,4471,3807,7726,4472, # 6102 -2388,2604, 260,1795,3213,7727,7728,3808,3291, 708,7729,3565,1704,7730,3566,1351, # 6118 -1618,3357,2999,1886, 944,4185,3358,4186,3044,3359,4187,7731,3678, 422, 413,1714, # 6134 -3292, 500,2058,2345,4188,2479,7732,1344,1910, 954,7733,1668,7734,7735,3986,2404, # 6150 -4189,3567,3809,4190,7736,2302,1318,2505,3091, 133,3092,2873,4473, 629, 31,2838, # 6166 -2697,3810,4474, 850, 949,4475,3987,2955,1732,2088,4191,1496,1852,7737,3988, 620, # 6182 -3214, 981,1242,3679,3360,1619,3680,1643,3293,2139,2452,1970,1719,3463,2168,7738, # 6198 -3215,7739,7740,3361,1828,7741,1277,4476,1565,2047,7742,1636,3568,3093,7743, 869, # 6214 -2839, 655,3811,3812,3094,3989,3000,3813,1310,3569,4477,7744,7745,7746,1733, 558, # 6230 -4478,3681, 335,1549,3045,1756,4192,3682,1945,3464,1829,1291,1192, 470,2726,2107, # 6246 -2793, 913,1054,3990,7747,1027,7748,3046,3991,4479, 982,2662,3362,3148,3465,3216, # 6262 -3217,1946,2794,7749, 571,4480,7750,1830,7751,3570,2583,1523,2424,7752,2089, 984, # 6278 -4481,3683,1959,7753,3684, 852, 923,2795,3466,3685, 969,1519, 999,2048,2320,1705, # 6294 -7754,3095, 615,1662, 151, 597,3992,2405,2321,1049, 275,4482,3686,4193, 568,3687, # 6310 -3571,2480,4194,3688,7755,2425,2270, 409,3218,7756,1566,2874,3467,1002, 769,2840, # 6326 - 194,2090,3149,3689,2222,3294,4195, 628,1505,7757,7758,1763,2177,3001,3993, 521, # 6342 -1161,2584,1787,2203,2406,4483,3994,1625,4196,4197, 412, 42,3096, 464,7759,2632, # 6358 -4484,3363,1760,1571,2875,3468,2530,1219,2204,3814,2633,2140,2368,4485,4486,3295, # 6374 -1651,3364,3572,7760,7761,3573,2481,3469,7762,3690,7763,7764,2271,2091, 460,7765, # 6390 -4487,7766,3002, 962, 588,3574, 289,3219,2634,1116, 52,7767,3047,1796,7768,7769, # 6406 -7770,1467,7771,1598,1143,3691,4198,1984,1734,1067,4488,1280,3365, 465,4489,1572, # 6422 - 510,7772,1927,2241,1812,1644,3575,7773,4490,3692,7774,7775,2663,1573,1534,7776, # 6438 -7777,4199, 536,1807,1761,3470,3815,3150,2635,7778,7779,7780,4491,3471,2915,1911, # 6454 -2796,7781,3296,1122, 377,3220,7782, 360,7783,7784,4200,1529, 551,7785,2059,3693, # 6470 -1769,2426,7786,2916,4201,3297,3097,2322,2108,2030,4492,1404, 136,1468,1479, 672, # 6486 -1171,3221,2303, 271,3151,7787,2762,7788,2049, 678,2727, 865,1947,4493,7789,2013, # 6502 -3995,2956,7790,2728,2223,1397,3048,3694,4494,4495,1735,2917,3366,3576,7791,3816, # 6518 - 509,2841,2453,2876,3817,7792,7793,3152,3153,4496,4202,2531,4497,2304,1166,1010, # 6534 - 552, 681,1887,7794,7795,2957,2958,3996,1287,1596,1861,3154, 358, 453, 736, 175, # 6550 - 478,1117, 905,1167,1097,7796,1853,1530,7797,1706,7798,2178,3472,2287,3695,3473, # 6566 -3577,4203,2092,4204,7799,3367,1193,2482,4205,1458,2190,2205,1862,1888,1421,3298, # 6582 -2918,3049,2179,3474, 595,2122,7800,3997,7801,7802,4206,1707,2636, 223,3696,1359, # 6598 - 751,3098, 183,3475,7803,2797,3003, 419,2369, 633, 704,3818,2389, 241,7804,7805, # 6614 -7806, 838,3004,3697,2272,2763,2454,3819,1938,2050,3998,1309,3099,2242,1181,7807, # 6630 -1136,2206,3820,2370,1446,4207,2305,4498,7808,7809,4208,1055,2605, 484,3698,7810, # 6646 -3999, 625,4209,2273,3368,1499,4210,4000,7811,4001,4211,3222,2274,2275,3476,7812, # 6662 -7813,2764, 808,2606,3699,3369,4002,4212,3100,2532, 526,3370,3821,4213, 955,7814, # 6678 -1620,4214,2637,2427,7815,1429,3700,1669,1831, 994, 928,7816,3578,1260,7817,7818, # 6694 -7819,1948,2288, 741,2919,1626,4215,2729,2455, 867,1184, 362,3371,1392,7820,7821, # 6710 -4003,4216,1770,1736,3223,2920,4499,4500,1928,2698,1459,1158,7822,3050,3372,2877, # 6726 -1292,1929,2506,2842,3701,1985,1187,2071,2014,2607,4217,7823,2566,2507,2169,3702, # 6742 -2483,3299,7824,3703,4501,7825,7826, 666,1003,3005,1022,3579,4218,7827,4502,1813, # 6758 -2253, 574,3822,1603, 295,1535, 705,3823,4219, 283, 858, 417,7828,7829,3224,4503, # 6774 -4504,3051,1220,1889,1046,2276,2456,4004,1393,1599, 689,2567, 388,4220,7830,2484, # 6790 - 802,7831,2798,3824,2060,1405,2254,7832,4505,3825,2109,1052,1345,3225,1585,7833, # 6806 - 809,7834,7835,7836, 575,2730,3477, 956,1552,1469,1144,2323,7837,2324,1560,2457, # 6822 -3580,3226,4005, 616,2207,3155,2180,2289,7838,1832,7839,3478,4506,7840,1319,3704, # 6838 -3705,1211,3581,1023,3227,1293,2799,7841,7842,7843,3826, 607,2306,3827, 762,2878, # 6854 -1439,4221,1360,7844,1485,3052,7845,4507,1038,4222,1450,2061,2638,4223,1379,4508, # 6870 -2585,7846,7847,4224,1352,1414,2325,2921,1172,7848,7849,3828,3829,7850,1797,1451, # 6886 -7851,7852,7853,7854,2922,4006,4007,2485,2346, 411,4008,4009,3582,3300,3101,4509, # 6902 -1561,2664,1452,4010,1375,7855,7856, 47,2959, 316,7857,1406,1591,2923,3156,7858, # 6918 -1025,2141,3102,3157, 354,2731, 884,2224,4225,2407, 508,3706, 726,3583, 996,2428, # 6934 -3584, 729,7859, 392,2191,1453,4011,4510,3707,7860,7861,2458,3585,2608,1675,2800, # 6950 - 919,2347,2960,2348,1270,4511,4012, 73,7862,7863, 647,7864,3228,2843,2255,1550, # 6966 -1346,3006,7865,1332, 883,3479,7866,7867,7868,7869,3301,2765,7870,1212, 831,1347, # 6982 -4226,4512,2326,3830,1863,3053, 720,3831,4513,4514,3832,7871,4227,7872,7873,4515, # 6998 -7874,7875,1798,4516,3708,2609,4517,3586,1645,2371,7876,7877,2924, 669,2208,2665, # 7014 -2429,7878,2879,7879,7880,1028,3229,7881,4228,2408,7882,2256,1353,7883,7884,4518, # 7030 -3158, 518,7885,4013,7886,4229,1960,7887,2142,4230,7888,7889,3007,2349,2350,3833, # 7046 - 516,1833,1454,4014,2699,4231,4519,2225,2610,1971,1129,3587,7890,2766,7891,2961, # 7062 -1422, 577,1470,3008,1524,3373,7892,7893, 432,4232,3054,3480,7894,2586,1455,2508, # 7078 -2226,1972,1175,7895,1020,2732,4015,3481,4520,7896,2733,7897,1743,1361,3055,3482, # 7094 -2639,4016,4233,4521,2290, 895, 924,4234,2170, 331,2243,3056, 166,1627,3057,1098, # 7110 -7898,1232,2880,2227,3374,4522, 657, 403,1196,2372, 542,3709,3375,1600,4235,3483, # 7126 -7899,4523,2767,3230, 576, 530,1362,7900,4524,2533,2666,3710,4017,7901, 842,3834, # 7142 -7902,2801,2031,1014,4018, 213,2700,3376, 665, 621,4236,7903,3711,2925,2430,7904, # 7158 -2431,3302,3588,3377,7905,4237,2534,4238,4525,3589,1682,4239,3484,1380,7906, 724, # 7174 -2277, 600,1670,7907,1337,1233,4526,3103,2244,7908,1621,4527,7909, 651,4240,7910, # 7190 -1612,4241,2611,7911,2844,7912,2734,2307,3058,7913, 716,2459,3059, 174,1255,2701, # 7206 -4019,3590, 548,1320,1398, 728,4020,1574,7914,1890,1197,3060,4021,7915,3061,3062, # 7222 -3712,3591,3713, 747,7916, 635,4242,4528,7917,7918,7919,4243,7920,7921,4529,7922, # 7238 -3378,4530,2432, 451,7923,3714,2535,2072,4244,2735,4245,4022,7924,1764,4531,7925, # 7254 -4246, 350,7926,2278,2390,2486,7927,4247,4023,2245,1434,4024, 488,4532, 458,4248, # 7270 -4025,3715, 771,1330,2391,3835,2568,3159,2159,2409,1553,2667,3160,4249,7928,2487, # 7286 -2881,2612,1720,2702,4250,3379,4533,7929,2536,4251,7930,3231,4252,2768,7931,2015, # 7302 -2736,7932,1155,1017,3716,3836,7933,3303,2308, 201,1864,4253,1430,7934,4026,7935, # 7318 -7936,7937,7938,7939,4254,1604,7940, 414,1865, 371,2587,4534,4535,3485,2016,3104, # 7334 -4536,1708, 960,4255, 887, 389,2171,1536,1663,1721,7941,2228,4027,2351,2926,1580, # 7350 -7942,7943,7944,1744,7945,2537,4537,4538,7946,4539,7947,2073,7948,7949,3592,3380, # 7366 -2882,4256,7950,4257,2640,3381,2802, 673,2703,2460, 709,3486,4028,3593,4258,7951, # 7382 -1148, 502, 634,7952,7953,1204,4540,3594,1575,4541,2613,3717,7954,3718,3105, 948, # 7398 -3232, 121,1745,3837,1110,7955,4259,3063,2509,3009,4029,3719,1151,1771,3838,1488, # 7414 -4030,1986,7956,2433,3487,7957,7958,2093,7959,4260,3839,1213,1407,2803, 531,2737, # 7430 -2538,3233,1011,1537,7960,2769,4261,3106,1061,7961,3720,3721,1866,2883,7962,2017, # 7446 - 120,4262,4263,2062,3595,3234,2309,3840,2668,3382,1954,4542,7963,7964,3488,1047, # 7462 -2704,1266,7965,1368,4543,2845, 649,3383,3841,2539,2738,1102,2846,2669,7966,7967, # 7478 -1999,7968,1111,3596,2962,7969,2488,3842,3597,2804,1854,3384,3722,7970,7971,3385, # 7494 -2410,2884,3304,3235,3598,7972,2569,7973,3599,2805,4031,1460, 856,7974,3600,7975, # 7510 -2885,2963,7976,2886,3843,7977,4264, 632,2510, 875,3844,1697,3845,2291,7978,7979, # 7526 -4544,3010,1239, 580,4545,4265,7980, 914, 936,2074,1190,4032,1039,2123,7981,7982, # 7542 -7983,3386,1473,7984,1354,4266,3846,7985,2172,3064,4033, 915,3305,4267,4268,3306, # 7558 -1605,1834,7986,2739, 398,3601,4269,3847,4034, 328,1912,2847,4035,3848,1331,4270, # 7574 -3011, 937,4271,7987,3602,4036,4037,3387,2160,4546,3388, 524, 742, 538,3065,1012, # 7590 -7988,7989,3849,2461,7990, 658,1103, 225,3850,7991,7992,4547,7993,4548,7994,3236, # 7606 -1243,7995,4038, 963,2246,4549,7996,2705,3603,3161,7997,7998,2588,2327,7999,4550, # 7622 -8000,8001,8002,3489,3307, 957,3389,2540,2032,1930,2927,2462, 870,2018,3604,1746, # 7638 -2770,2771,2434,2463,8003,3851,8004,3723,3107,3724,3490,3390,3725,8005,1179,3066, # 7654 -8006,3162,2373,4272,3726,2541,3163,3108,2740,4039,8007,3391,1556,2542,2292, 977, # 7670 -2887,2033,4040,1205,3392,8008,1765,3393,3164,2124,1271,1689, 714,4551,3491,8009, # 7686 -2328,3852, 533,4273,3605,2181, 617,8010,2464,3308,3492,2310,8011,8012,3165,8013, # 7702 -8014,3853,1987, 618, 427,2641,3493,3394,8015,8016,1244,1690,8017,2806,4274,4552, # 7718 -8018,3494,8019,8020,2279,1576, 473,3606,4275,3395, 972,8021,3607,8022,3067,8023, # 7734 -8024,4553,4554,8025,3727,4041,4042,8026, 153,4555, 356,8027,1891,2888,4276,2143, # 7750 - 408, 803,2352,8028,3854,8029,4277,1646,2570,2511,4556,4557,3855,8030,3856,4278, # 7766 -8031,2411,3396, 752,8032,8033,1961,2964,8034, 746,3012,2465,8035,4279,3728, 698, # 7782 -4558,1892,4280,3608,2543,4559,3609,3857,8036,3166,3397,8037,1823,1302,4043,2706, # 7798 -3858,1973,4281,8038,4282,3167, 823,1303,1288,1236,2848,3495,4044,3398, 774,3859, # 7814 -8039,1581,4560,1304,2849,3860,4561,8040,2435,2161,1083,3237,4283,4045,4284, 344, # 7830 -1173, 288,2311, 454,1683,8041,8042,1461,4562,4046,2589,8043,8044,4563, 985, 894, # 7846 -8045,3399,3168,8046,1913,2928,3729,1988,8047,2110,1974,8048,4047,8049,2571,1194, # 7862 - 425,8050,4564,3169,1245,3730,4285,8051,8052,2850,8053, 636,4565,1855,3861, 760, # 7878 -1799,8054,4286,2209,1508,4566,4048,1893,1684,2293,8055,8056,8057,4287,4288,2210, # 7894 - 479,8058,8059, 832,8060,4049,2489,8061,2965,2490,3731, 990,3109, 627,1814,2642, # 7910 -4289,1582,4290,2125,2111,3496,4567,8062, 799,4291,3170,8063,4568,2112,1737,3013, # 7926 -1018, 543, 754,4292,3309,1676,4569,4570,4050,8064,1489,8065,3497,8066,2614,2889, # 7942 -4051,8067,8068,2966,8069,8070,8071,8072,3171,4571,4572,2182,1722,8073,3238,3239, # 7958 -1842,3610,1715, 481, 365,1975,1856,8074,8075,1962,2491,4573,8076,2126,3611,3240, # 7974 - 433,1894,2063,2075,8077, 602,2741,8078,8079,8080,8081,8082,3014,1628,3400,8083, # 7990 -3172,4574,4052,2890,4575,2512,8084,2544,2772,8085,8086,8087,3310,4576,2891,8088, # 8006 -4577,8089,2851,4578,4579,1221,2967,4053,2513,8090,8091,8092,1867,1989,8093,8094, # 8022 -8095,1895,8096,8097,4580,1896,4054, 318,8098,2094,4055,4293,8099,8100, 485,8101, # 8038 - 938,3862, 553,2670, 116,8102,3863,3612,8103,3498,2671,2773,3401,3311,2807,8104, # 8054 -3613,2929,4056,1747,2930,2968,8105,8106, 207,8107,8108,2672,4581,2514,8109,3015, # 8070 - 890,3614,3864,8110,1877,3732,3402,8111,2183,2353,3403,1652,8112,8113,8114, 941, # 8086 -2294, 208,3499,4057,2019, 330,4294,3865,2892,2492,3733,4295,8115,8116,8117,8118, # 8102 -#Everything below is of no interest for detection purpose -2515,1613,4582,8119,3312,3866,2516,8120,4058,8121,1637,4059,2466,4583,3867,8122, # 8118 -2493,3016,3734,8123,8124,2192,8125,8126,2162,8127,8128,8129,8130,8131,8132,8133, # 8134 -8134,8135,8136,8137,8138,8139,8140,8141,8142,8143,8144,8145,8146,8147,8148,8149, # 8150 -8150,8151,8152,8153,8154,8155,8156,8157,8158,8159,8160,8161,8162,8163,8164,8165, # 8166 -8166,8167,8168,8169,8170,8171,8172,8173,8174,8175,8176,8177,8178,8179,8180,8181, # 8182 -8182,8183,8184,8185,8186,8187,8188,8189,8190,8191,8192,8193,8194,8195,8196,8197, # 8198 -8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8208,8209,8210,8211,8212,8213, # 8214 -8214,8215,8216,8217,8218,8219,8220,8221,8222,8223,8224,8225,8226,8227,8228,8229, # 8230 -8230,8231,8232,8233,8234,8235,8236,8237,8238,8239,8240,8241,8242,8243,8244,8245, # 8246 -8246,8247,8248,8249,8250,8251,8252,8253,8254,8255,8256,8257,8258,8259,8260,8261, # 8262 -8262,8263,8264,8265,8266,8267,8268,8269,8270,8271,8272,8273,8274,8275,8276,8277, # 8278 -8278,8279,8280,8281,8282,8283,8284,8285,8286,8287,8288,8289,8290,8291,8292,8293, # 8294 -8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,8304,8305,8306,8307,8308,8309, # 8310 -8310,8311,8312,8313,8314,8315,8316,8317,8318,8319,8320,8321,8322,8323,8324,8325, # 8326 -8326,8327,8328,8329,8330,8331,8332,8333,8334,8335,8336,8337,8338,8339,8340,8341, # 8342 -8342,8343,8344,8345,8346,8347,8348,8349,8350,8351,8352,8353,8354,8355,8356,8357, # 8358 -8358,8359,8360,8361,8362,8363,8364,8365,8366,8367,8368,8369,8370,8371,8372,8373, # 8374 -8374,8375,8376,8377,8378,8379,8380,8381,8382,8383,8384,8385,8386,8387,8388,8389, # 8390 -8390,8391,8392,8393,8394,8395,8396,8397,8398,8399,8400,8401,8402,8403,8404,8405, # 8406 -8406,8407,8408,8409,8410,8411,8412,8413,8414,8415,8416,8417,8418,8419,8420,8421, # 8422 -8422,8423,8424,8425,8426,8427,8428,8429,8430,8431,8432,8433,8434,8435,8436,8437, # 8438 -8438,8439,8440,8441,8442,8443,8444,8445,8446,8447,8448,8449,8450,8451,8452,8453, # 8454 -8454,8455,8456,8457,8458,8459,8460,8461,8462,8463,8464,8465,8466,8467,8468,8469, # 8470 -8470,8471,8472,8473,8474,8475,8476,8477,8478,8479,8480,8481,8482,8483,8484,8485, # 8486 -8486,8487,8488,8489,8490,8491,8492,8493,8494,8495,8496,8497,8498,8499,8500,8501, # 8502 -8502,8503,8504,8505,8506,8507,8508,8509,8510,8511,8512,8513,8514,8515,8516,8517, # 8518 -8518,8519,8520,8521,8522,8523,8524,8525,8526,8527,8528,8529,8530,8531,8532,8533, # 8534 -8534,8535,8536,8537,8538,8539,8540,8541,8542,8543,8544,8545,8546,8547,8548,8549, # 8550 -8550,8551,8552,8553,8554,8555,8556,8557,8558,8559,8560,8561,8562,8563,8564,8565, # 8566 -8566,8567,8568,8569,8570,8571,8572,8573,8574,8575,8576,8577,8578,8579,8580,8581, # 8582 -8582,8583,8584,8585,8586,8587,8588,8589,8590,8591,8592,8593,8594,8595,8596,8597, # 8598 -8598,8599,8600,8601,8602,8603,8604,8605,8606,8607,8608,8609,8610,8611,8612,8613, # 8614 -8614,8615,8616,8617,8618,8619,8620,8621,8622,8623,8624,8625,8626,8627,8628,8629, # 8630 -8630,8631,8632,8633,8634,8635,8636,8637,8638,8639,8640,8641,8642,8643,8644,8645, # 8646 -8646,8647,8648,8649,8650,8651,8652,8653,8654,8655,8656,8657,8658,8659,8660,8661, # 8662 -8662,8663,8664,8665,8666,8667,8668,8669,8670,8671,8672,8673,8674,8675,8676,8677, # 8678 -8678,8679,8680,8681,8682,8683,8684,8685,8686,8687,8688,8689,8690,8691,8692,8693, # 8694 -8694,8695,8696,8697,8698,8699,8700,8701,8702,8703,8704,8705,8706,8707,8708,8709, # 8710 -8710,8711,8712,8713,8714,8715,8716,8717,8718,8719,8720,8721,8722,8723,8724,8725, # 8726 -8726,8727,8728,8729,8730,8731,8732,8733,8734,8735,8736,8737,8738,8739,8740,8741) # 8742 +EUCTW_CHAR_TO_FREQ_ORDER = ( + 1,1800,1506, 255,1431, 198, 9, 82, 6,7310, 177, 202,3615,1256,2808, 110, # 2742 +3735, 33,3241, 261, 76, 44,2113, 16,2931,2184,1176, 659,3868, 26,3404,2643, # 2758 +1198,3869,3313,4060, 410,2211, 302, 590, 361,1963, 8, 204, 58,4296,7311,1931, # 2774 + 63,7312,7313, 317,1614, 75, 222, 159,4061,2412,1480,7314,3500,3068, 224,2809, # 2790 +3616, 3, 10,3870,1471, 29,2774,1135,2852,1939, 873, 130,3242,1123, 312,7315, # 2806 +4297,2051, 507, 252, 682,7316, 142,1914, 124, 206,2932, 34,3501,3173, 64, 604, # 2822 +7317,2494,1976,1977, 155,1990, 645, 641,1606,7318,3405, 337, 72, 406,7319, 80, # 2838 + 630, 238,3174,1509, 263, 939,1092,2644, 756,1440,1094,3406, 449, 69,2969, 591, # 2854 + 179,2095, 471, 115,2034,1843, 60, 50,2970, 134, 806,1868, 734,2035,3407, 180, # 2870 + 995,1607, 156, 537,2893, 688,7320, 319,1305, 779,2144, 514,2374, 298,4298, 359, # 2886 +2495, 90,2707,1338, 663, 11, 906,1099,2545, 20,2436, 182, 532,1716,7321, 732, # 2902 +1376,4062,1311,1420,3175, 25,2312,1056, 113, 399, 382,1949, 242,3408,2467, 529, # 2918 +3243, 475,1447,3617,7322, 117, 21, 656, 810,1297,2295,2329,3502,7323, 126,4063, # 2934 + 706, 456, 150, 613,4299, 71,1118,2036,4064, 145,3069, 85, 835, 486,2114,1246, # 2950 +1426, 428, 727,1285,1015, 800, 106, 623, 303,1281,7324,2127,2354, 347,3736, 221, # 2966 +3503,3110,7325,1955,1153,4065, 83, 296,1199,3070, 192, 624, 93,7326, 822,1897, # 2982 +2810,3111, 795,2064, 991,1554,1542,1592, 27, 43,2853, 859, 139,1456, 860,4300, # 2998 + 437, 712,3871, 164,2392,3112, 695, 211,3017,2096, 195,3872,1608,3504,3505,3618, # 3014 +3873, 234, 811,2971,2097,3874,2229,1441,3506,1615,2375, 668,2076,1638, 305, 228, # 3030 +1664,4301, 467, 415,7327, 262,2098,1593, 239, 108, 300, 200,1033, 512,1247,2077, # 3046 +7328,7329,2173,3176,3619,2673, 593, 845,1062,3244, 88,1723,2037,3875,1950, 212, # 3062 + 266, 152, 149, 468,1898,4066,4302, 77, 187,7330,3018, 37, 5,2972,7331,3876, # 3078 +7332,7333, 39,2517,4303,2894,3177,2078, 55, 148, 74,4304, 545, 483,1474,1029, # 3094 +1665, 217,1869,1531,3113,1104,2645,4067, 24, 172,3507, 900,3877,3508,3509,4305, # 3110 + 32,1408,2811,1312, 329, 487,2355,2247,2708, 784,2674, 4,3019,3314,1427,1788, # 3126 + 188, 109, 499,7334,3620,1717,1789, 888,1217,3020,4306,7335,3510,7336,3315,1520, # 3142 +3621,3878, 196,1034, 775,7337,7338, 929,1815, 249, 439, 38,7339,1063,7340, 794, # 3158 +3879,1435,2296, 46, 178,3245,2065,7341,2376,7342, 214,1709,4307, 804, 35, 707, # 3174 + 324,3622,1601,2546, 140, 459,4068,7343,7344,1365, 839, 272, 978,2257,2572,3409, # 3190 +2128,1363,3623,1423, 697, 100,3071, 48, 70,1231, 495,3114,2193,7345,1294,7346, # 3206 +2079, 462, 586,1042,3246, 853, 256, 988, 185,2377,3410,1698, 434,1084,7347,3411, # 3222 + 314,2615,2775,4308,2330,2331, 569,2280, 637,1816,2518, 757,1162,1878,1616,3412, # 3238 + 287,1577,2115, 768,4309,1671,2854,3511,2519,1321,3737, 909,2413,7348,4069, 933, # 3254 +3738,7349,2052,2356,1222,4310, 765,2414,1322, 786,4311,7350,1919,1462,1677,2895, # 3270 +1699,7351,4312,1424,2437,3115,3624,2590,3316,1774,1940,3413,3880,4070, 309,1369, # 3286 +1130,2812, 364,2230,1653,1299,3881,3512,3882,3883,2646, 525,1085,3021, 902,2000, # 3302 +1475, 964,4313, 421,1844,1415,1057,2281, 940,1364,3116, 376,4314,4315,1381, 7, # 3318 +2520, 983,2378, 336,1710,2675,1845, 321,3414, 559,1131,3022,2742,1808,1132,1313, # 3334 + 265,1481,1857,7352, 352,1203,2813,3247, 167,1089, 420,2814, 776, 792,1724,3513, # 3350 +4071,2438,3248,7353,4072,7354, 446, 229, 333,2743, 901,3739,1200,1557,4316,2647, # 3366 +1920, 395,2744,2676,3740,4073,1835, 125, 916,3178,2616,4317,7355,7356,3741,7357, # 3382 +7358,7359,4318,3117,3625,1133,2547,1757,3415,1510,2313,1409,3514,7360,2145, 438, # 3398 +2591,2896,2379,3317,1068, 958,3023, 461, 311,2855,2677,4074,1915,3179,4075,1978, # 3414 + 383, 750,2745,2617,4076, 274, 539, 385,1278,1442,7361,1154,1964, 384, 561, 210, # 3430 + 98,1295,2548,3515,7362,1711,2415,1482,3416,3884,2897,1257, 129,7363,3742, 642, # 3446 + 523,2776,2777,2648,7364, 141,2231,1333, 68, 176, 441, 876, 907,4077, 603,2592, # 3462 + 710, 171,3417, 404, 549, 18,3118,2393,1410,3626,1666,7365,3516,4319,2898,4320, # 3478 +7366,2973, 368,7367, 146, 366, 99, 871,3627,1543, 748, 807,1586,1185, 22,2258, # 3494 + 379,3743,3180,7368,3181, 505,1941,2618,1991,1382,2314,7369, 380,2357, 218, 702, # 3510 +1817,1248,3418,3024,3517,3318,3249,7370,2974,3628, 930,3250,3744,7371, 59,7372, # 3526 + 585, 601,4078, 497,3419,1112,1314,4321,1801,7373,1223,1472,2174,7374, 749,1836, # 3542 + 690,1899,3745,1772,3885,1476, 429,1043,1790,2232,2116, 917,4079, 447,1086,1629, # 3558 +7375, 556,7376,7377,2020,1654, 844,1090, 105, 550, 966,1758,2815,1008,1782, 686, # 3574 +1095,7378,2282, 793,1602,7379,3518,2593,4322,4080,2933,2297,4323,3746, 980,2496, # 3590 + 544, 353, 527,4324, 908,2678,2899,7380, 381,2619,1942,1348,7381,1341,1252, 560, # 3606 +3072,7382,3420,2856,7383,2053, 973, 886,2080, 143,4325,7384,7385, 157,3886, 496, # 3622 +4081, 57, 840, 540,2038,4326,4327,3421,2117,1445, 970,2259,1748,1965,2081,4082, # 3638 +3119,1234,1775,3251,2816,3629, 773,1206,2129,1066,2039,1326,3887,1738,1725,4083, # 3654 + 279,3120, 51,1544,2594, 423,1578,2130,2066, 173,4328,1879,7386,7387,1583, 264, # 3670 + 610,3630,4329,2439, 280, 154,7388,7389,7390,1739, 338,1282,3073, 693,2857,1411, # 3686 +1074,3747,2440,7391,4330,7392,7393,1240, 952,2394,7394,2900,1538,2679, 685,1483, # 3702 +4084,2468,1436, 953,4085,2054,4331, 671,2395, 79,4086,2441,3252, 608, 567,2680, # 3718 +3422,4087,4088,1691, 393,1261,1791,2396,7395,4332,7396,7397,7398,7399,1383,1672, # 3734 +3748,3182,1464, 522,1119, 661,1150, 216, 675,4333,3888,1432,3519, 609,4334,2681, # 3750 +2397,7400,7401,7402,4089,3025, 0,7403,2469, 315, 231,2442, 301,3319,4335,2380, # 3766 +7404, 233,4090,3631,1818,4336,4337,7405, 96,1776,1315,2082,7406, 257,7407,1809, # 3782 +3632,2709,1139,1819,4091,2021,1124,2163,2778,1777,2649,7408,3074, 363,1655,3183, # 3798 +7409,2975,7410,7411,7412,3889,1567,3890, 718, 103,3184, 849,1443, 341,3320,2934, # 3814 +1484,7413,1712, 127, 67, 339,4092,2398, 679,1412, 821,7414,7415, 834, 738, 351, # 3830 +2976,2146, 846, 235,1497,1880, 418,1992,3749,2710, 186,1100,2147,2746,3520,1545, # 3846 +1355,2935,2858,1377, 583,3891,4093,2573,2977,7416,1298,3633,1078,2549,3634,2358, # 3862 + 78,3750,3751, 267,1289,2099,2001,1594,4094, 348, 369,1274,2194,2175,1837,4338, # 3878 +1820,2817,3635,2747,2283,2002,4339,2936,2748, 144,3321, 882,4340,3892,2749,3423, # 3894 +4341,2901,7417,4095,1726, 320,7418,3893,3026, 788,2978,7419,2818,1773,1327,2859, # 3910 +3894,2819,7420,1306,4342,2003,1700,3752,3521,2359,2650, 787,2022, 506, 824,3636, # 3926 + 534, 323,4343,1044,3322,2023,1900, 946,3424,7421,1778,1500,1678,7422,1881,4344, # 3942 + 165, 243,4345,3637,2521, 123, 683,4096, 764,4346, 36,3895,1792, 589,2902, 816, # 3958 + 626,1667,3027,2233,1639,1555,1622,3753,3896,7423,3897,2860,1370,1228,1932, 891, # 3974 +2083,2903, 304,4097,7424, 292,2979,2711,3522, 691,2100,4098,1115,4347, 118, 662, # 3990 +7425, 611,1156, 854,2381,1316,2861, 2, 386, 515,2904,7426,7427,3253, 868,2234, # 4006 +1486, 855,2651, 785,2212,3028,7428,1040,3185,3523,7429,3121, 448,7430,1525,7431, # 4022 +2164,4348,7432,3754,7433,4099,2820,3524,3122, 503, 818,3898,3123,1568, 814, 676, # 4038 +1444, 306,1749,7434,3755,1416,1030, 197,1428, 805,2821,1501,4349,7435,7436,7437, # 4054 +1993,7438,4350,7439,7440,2195, 13,2779,3638,2980,3124,1229,1916,7441,3756,2131, # 4070 +7442,4100,4351,2399,3525,7443,2213,1511,1727,1120,7444,7445, 646,3757,2443, 307, # 4086 +7446,7447,1595,3186,7448,7449,7450,3639,1113,1356,3899,1465,2522,2523,7451, 519, # 4102 +7452, 128,2132, 92,2284,1979,7453,3900,1512, 342,3125,2196,7454,2780,2214,1980, # 4118 +3323,7455, 290,1656,1317, 789, 827,2360,7456,3758,4352, 562, 581,3901,7457, 401, # 4134 +4353,2248, 94,4354,1399,2781,7458,1463,2024,4355,3187,1943,7459, 828,1105,4101, # 4150 +1262,1394,7460,4102, 605,4356,7461,1783,2862,7462,2822, 819,2101, 578,2197,2937, # 4166 +7463,1502, 436,3254,4103,3255,2823,3902,2905,3425,3426,7464,2712,2315,7465,7466, # 4182 +2332,2067, 23,4357, 193, 826,3759,2102, 699,1630,4104,3075, 390,1793,1064,3526, # 4198 +7467,1579,3076,3077,1400,7468,4105,1838,1640,2863,7469,4358,4359, 137,4106, 598, # 4214 +3078,1966, 780, 104, 974,2938,7470, 278, 899, 253, 402, 572, 504, 493,1339,7471, # 4230 +3903,1275,4360,2574,2550,7472,3640,3029,3079,2249, 565,1334,2713, 863, 41,7473, # 4246 +7474,4361,7475,1657,2333, 19, 463,2750,4107, 606,7476,2981,3256,1087,2084,1323, # 4262 +2652,2982,7477,1631,1623,1750,4108,2682,7478,2864, 791,2714,2653,2334, 232,2416, # 4278 +7479,2983,1498,7480,2654,2620, 755,1366,3641,3257,3126,2025,1609, 119,1917,3427, # 4294 + 862,1026,4109,7481,3904,3760,4362,3905,4363,2260,1951,2470,7482,1125, 817,4110, # 4310 +4111,3906,1513,1766,2040,1487,4112,3030,3258,2824,3761,3127,7483,7484,1507,7485, # 4326 +2683, 733, 40,1632,1106,2865, 345,4113, 841,2524, 230,4364,2984,1846,3259,3428, # 4342 +7486,1263, 986,3429,7487, 735, 879, 254,1137, 857, 622,1300,1180,1388,1562,3907, # 4358 +3908,2939, 967,2751,2655,1349, 592,2133,1692,3324,2985,1994,4114,1679,3909,1901, # 4374 +2185,7488, 739,3642,2715,1296,1290,7489,4115,2198,2199,1921,1563,2595,2551,1870, # 4390 +2752,2986,7490, 435,7491, 343,1108, 596, 17,1751,4365,2235,3430,3643,7492,4366, # 4406 + 294,3527,2940,1693, 477, 979, 281,2041,3528, 643,2042,3644,2621,2782,2261,1031, # 4422 +2335,2134,2298,3529,4367, 367,1249,2552,7493,3530,7494,4368,1283,3325,2004, 240, # 4438 +1762,3326,4369,4370, 836,1069,3128, 474,7495,2148,2525, 268,3531,7496,3188,1521, # 4454 +1284,7497,1658,1546,4116,7498,3532,3533,7499,4117,3327,2684,1685,4118, 961,1673, # 4470 +2622, 190,2005,2200,3762,4371,4372,7500, 570,2497,3645,1490,7501,4373,2623,3260, # 4486 +1956,4374, 584,1514, 396,1045,1944,7502,4375,1967,2444,7503,7504,4376,3910, 619, # 4502 +7505,3129,3261, 215,2006,2783,2553,3189,4377,3190,4378, 763,4119,3763,4379,7506, # 4518 +7507,1957,1767,2941,3328,3646,1174, 452,1477,4380,3329,3130,7508,2825,1253,2382, # 4534 +2186,1091,2285,4120, 492,7509, 638,1169,1824,2135,1752,3911, 648, 926,1021,1324, # 4550 +4381, 520,4382, 997, 847,1007, 892,4383,3764,2262,1871,3647,7510,2400,1784,4384, # 4566 +1952,2942,3080,3191,1728,4121,2043,3648,4385,2007,1701,3131,1551, 30,2263,4122, # 4582 +7511,2026,4386,3534,7512, 501,7513,4123, 594,3431,2165,1821,3535,3432,3536,3192, # 4598 + 829,2826,4124,7514,1680,3132,1225,4125,7515,3262,4387,4126,3133,2336,7516,4388, # 4614 +4127,7517,3912,3913,7518,1847,2383,2596,3330,7519,4389, 374,3914, 652,4128,4129, # 4630 + 375,1140, 798,7520,7521,7522,2361,4390,2264, 546,1659, 138,3031,2445,4391,7523, # 4646 +2250, 612,1848, 910, 796,3765,1740,1371, 825,3766,3767,7524,2906,2554,7525, 692, # 4662 + 444,3032,2624, 801,4392,4130,7526,1491, 244,1053,3033,4131,4132, 340,7527,3915, # 4678 +1041,2987, 293,1168, 87,1357,7528,1539, 959,7529,2236, 721, 694,4133,3768, 219, # 4694 +1478, 644,1417,3331,2656,1413,1401,1335,1389,3916,7530,7531,2988,2362,3134,1825, # 4710 + 730,1515, 184,2827, 66,4393,7532,1660,2943, 246,3332, 378,1457, 226,3433, 975, # 4726 +3917,2944,1264,3537, 674, 696,7533, 163,7534,1141,2417,2166, 713,3538,3333,4394, # 4742 +3918,7535,7536,1186, 15,7537,1079,1070,7538,1522,3193,3539, 276,1050,2716, 758, # 4758 +1126, 653,2945,3263,7539,2337, 889,3540,3919,3081,2989, 903,1250,4395,3920,3434, # 4774 +3541,1342,1681,1718, 766,3264, 286, 89,2946,3649,7540,1713,7541,2597,3334,2990, # 4790 +7542,2947,2215,3194,2866,7543,4396,2498,2526, 181, 387,1075,3921, 731,2187,3335, # 4806 +7544,3265, 310, 313,3435,2299, 770,4134, 54,3034, 189,4397,3082,3769,3922,7545, # 4822 +1230,1617,1849, 355,3542,4135,4398,3336, 111,4136,3650,1350,3135,3436,3035,4137, # 4838 +2149,3266,3543,7546,2784,3923,3924,2991, 722,2008,7547,1071, 247,1207,2338,2471, # 4854 +1378,4399,2009, 864,1437,1214,4400, 373,3770,1142,2216, 667,4401, 442,2753,2555, # 4870 +3771,3925,1968,4138,3267,1839, 837, 170,1107, 934,1336,1882,7548,7549,2118,4139, # 4886 +2828, 743,1569,7550,4402,4140, 582,2384,1418,3437,7551,1802,7552, 357,1395,1729, # 4902 +3651,3268,2418,1564,2237,7553,3083,3772,1633,4403,1114,2085,4141,1532,7554, 482, # 4918 +2446,4404,7555,7556,1492, 833,1466,7557,2717,3544,1641,2829,7558,1526,1272,3652, # 4934 +4142,1686,1794, 416,2556,1902,1953,1803,7559,3773,2785,3774,1159,2316,7560,2867, # 4950 +4405,1610,1584,3036,2419,2754, 443,3269,1163,3136,7561,7562,3926,7563,4143,2499, # 4966 +3037,4406,3927,3137,2103,1647,3545,2010,1872,4144,7564,4145, 431,3438,7565, 250, # 4982 + 97, 81,4146,7566,1648,1850,1558, 160, 848,7567, 866, 740,1694,7568,2201,2830, # 4998 +3195,4147,4407,3653,1687, 950,2472, 426, 469,3196,3654,3655,3928,7569,7570,1188, # 5014 + 424,1995, 861,3546,4148,3775,2202,2685, 168,1235,3547,4149,7571,2086,1674,4408, # 5030 +3337,3270, 220,2557,1009,7572,3776, 670,2992, 332,1208, 717,7573,7574,3548,2447, # 5046 +3929,3338,7575, 513,7576,1209,2868,3339,3138,4409,1080,7577,7578,7579,7580,2527, # 5062 +3656,3549, 815,1587,3930,3931,7581,3550,3439,3777,1254,4410,1328,3038,1390,3932, # 5078 +1741,3933,3778,3934,7582, 236,3779,2448,3271,7583,7584,3657,3780,1273,3781,4411, # 5094 +7585, 308,7586,4412, 245,4413,1851,2473,1307,2575, 430, 715,2136,2449,7587, 270, # 5110 + 199,2869,3935,7588,3551,2718,1753, 761,1754, 725,1661,1840,4414,3440,3658,7589, # 5126 +7590, 587, 14,3272, 227,2598, 326, 480,2265, 943,2755,3552, 291, 650,1883,7591, # 5142 +1702,1226, 102,1547, 62,3441, 904,4415,3442,1164,4150,7592,7593,1224,1548,2756, # 5158 + 391, 498,1493,7594,1386,1419,7595,2055,1177,4416, 813, 880,1081,2363, 566,1145, # 5174 +4417,2286,1001,1035,2558,2599,2238, 394,1286,7596,7597,2068,7598, 86,1494,1730, # 5190 +3936, 491,1588, 745, 897,2948, 843,3340,3937,2757,2870,3273,1768, 998,2217,2069, # 5206 + 397,1826,1195,1969,3659,2993,3341, 284,7599,3782,2500,2137,2119,1903,7600,3938, # 5222 +2150,3939,4151,1036,3443,1904, 114,2559,4152, 209,1527,7601,7602,2949,2831,2625, # 5238 +2385,2719,3139, 812,2560,7603,3274,7604,1559, 737,1884,3660,1210, 885, 28,2686, # 5254 +3553,3783,7605,4153,1004,1779,4418,7606, 346,1981,2218,2687,4419,3784,1742, 797, # 5270 +1642,3940,1933,1072,1384,2151, 896,3941,3275,3661,3197,2871,3554,7607,2561,1958, # 5286 +4420,2450,1785,7608,7609,7610,3942,4154,1005,1308,3662,4155,2720,4421,4422,1528, # 5302 +2600, 161,1178,4156,1982, 987,4423,1101,4157, 631,3943,1157,3198,2420,1343,1241, # 5318 +1016,2239,2562, 372, 877,2339,2501,1160, 555,1934, 911,3944,7611, 466,1170, 169, # 5334 +1051,2907,2688,3663,2474,2994,1182,2011,2563,1251,2626,7612, 992,2340,3444,1540, # 5350 +2721,1201,2070,2401,1996,2475,7613,4424, 528,1922,2188,1503,1873,1570,2364,3342, # 5366 +3276,7614, 557,1073,7615,1827,3445,2087,2266,3140,3039,3084, 767,3085,2786,4425, # 5382 +1006,4158,4426,2341,1267,2176,3664,3199, 778,3945,3200,2722,1597,2657,7616,4427, # 5398 +7617,3446,7618,7619,7620,3277,2689,1433,3278, 131, 95,1504,3946, 723,4159,3141, # 5414 +1841,3555,2758,2189,3947,2027,2104,3665,7621,2995,3948,1218,7622,3343,3201,3949, # 5430 +4160,2576, 248,1634,3785, 912,7623,2832,3666,3040,3786, 654, 53,7624,2996,7625, # 5446 +1688,4428, 777,3447,1032,3950,1425,7626, 191, 820,2120,2833, 971,4429, 931,3202, # 5462 + 135, 664, 783,3787,1997, 772,2908,1935,3951,3788,4430,2909,3203, 282,2723, 640, # 5478 +1372,3448,1127, 922, 325,3344,7627,7628, 711,2044,7629,7630,3952,2219,2787,1936, # 5494 +3953,3345,2220,2251,3789,2300,7631,4431,3790,1258,3279,3954,3204,2138,2950,3955, # 5510 +3956,7632,2221, 258,3205,4432, 101,1227,7633,3280,1755,7634,1391,3281,7635,2910, # 5526 +2056, 893,7636,7637,7638,1402,4161,2342,7639,7640,3206,3556,7641,7642, 878,1325, # 5542 +1780,2788,4433, 259,1385,2577, 744,1183,2267,4434,7643,3957,2502,7644, 684,1024, # 5558 +4162,7645, 472,3557,3449,1165,3282,3958,3959, 322,2152, 881, 455,1695,1152,1340, # 5574 + 660, 554,2153,4435,1058,4436,4163, 830,1065,3346,3960,4437,1923,7646,1703,1918, # 5590 +7647, 932,2268, 122,7648,4438, 947, 677,7649,3791,2627, 297,1905,1924,2269,4439, # 5606 +2317,3283,7650,7651,4164,7652,4165, 84,4166, 112, 989,7653, 547,1059,3961, 701, # 5622 +3558,1019,7654,4167,7655,3450, 942, 639, 457,2301,2451, 993,2951, 407, 851, 494, # 5638 +4440,3347, 927,7656,1237,7657,2421,3348, 573,4168, 680, 921,2911,1279,1874, 285, # 5654 + 790,1448,1983, 719,2167,7658,7659,4441,3962,3963,1649,7660,1541, 563,7661,1077, # 5670 +7662,3349,3041,3451, 511,2997,3964,3965,3667,3966,1268,2564,3350,3207,4442,4443, # 5686 +7663, 535,1048,1276,1189,2912,2028,3142,1438,1373,2834,2952,1134,2012,7664,4169, # 5702 +1238,2578,3086,1259,7665, 700,7666,2953,3143,3668,4170,7667,4171,1146,1875,1906, # 5718 +4444,2601,3967, 781,2422, 132,1589, 203, 147, 273,2789,2402, 898,1786,2154,3968, # 5734 +3969,7668,3792,2790,7669,7670,4445,4446,7671,3208,7672,1635,3793, 965,7673,1804, # 5750 +2690,1516,3559,1121,1082,1329,3284,3970,1449,3794, 65,1128,2835,2913,2759,1590, # 5766 +3795,7674,7675, 12,2658, 45, 976,2579,3144,4447, 517,2528,1013,1037,3209,7676, # 5782 +3796,2836,7677,3797,7678,3452,7679,2602, 614,1998,2318,3798,3087,2724,2628,7680, # 5798 +2580,4172, 599,1269,7681,1810,3669,7682,2691,3088, 759,1060, 489,1805,3351,3285, # 5814 +1358,7683,7684,2386,1387,1215,2629,2252, 490,7685,7686,4173,1759,2387,2343,7687, # 5830 +4448,3799,1907,3971,2630,1806,3210,4449,3453,3286,2760,2344, 874,7688,7689,3454, # 5846 +3670,1858, 91,2914,3671,3042,3800,4450,7690,3145,3972,2659,7691,3455,1202,1403, # 5862 +3801,2954,2529,1517,2503,4451,3456,2504,7692,4452,7693,2692,1885,1495,1731,3973, # 5878 +2365,4453,7694,2029,7695,7696,3974,2693,1216, 237,2581,4174,2319,3975,3802,4454, # 5894 +4455,2694,3560,3457, 445,4456,7697,7698,7699,7700,2761, 61,3976,3672,1822,3977, # 5910 +7701, 687,2045, 935, 925, 405,2660, 703,1096,1859,2725,4457,3978,1876,1367,2695, # 5926 +3352, 918,2105,1781,2476, 334,3287,1611,1093,4458, 564,3146,3458,3673,3353, 945, # 5942 +2631,2057,4459,7702,1925, 872,4175,7703,3459,2696,3089, 349,4176,3674,3979,4460, # 5958 +3803,4177,3675,2155,3980,4461,4462,4178,4463,2403,2046, 782,3981, 400, 251,4179, # 5974 +1624,7704,7705, 277,3676, 299,1265, 476,1191,3804,2121,4180,4181,1109, 205,7706, # 5990 +2582,1000,2156,3561,1860,7707,7708,7709,4464,7710,4465,2565, 107,2477,2157,3982, # 6006 +3460,3147,7711,1533, 541,1301, 158, 753,4182,2872,3562,7712,1696, 370,1088,4183, # 6022 +4466,3563, 579, 327, 440, 162,2240, 269,1937,1374,3461, 968,3043, 56,1396,3090, # 6038 +2106,3288,3354,7713,1926,2158,4467,2998,7714,3564,7715,7716,3677,4468,2478,7717, # 6054 +2791,7718,1650,4469,7719,2603,7720,7721,3983,2661,3355,1149,3356,3984,3805,3985, # 6070 +7722,1076, 49,7723, 951,3211,3289,3290, 450,2837, 920,7724,1811,2792,2366,4184, # 6086 +1908,1138,2367,3806,3462,7725,3212,4470,1909,1147,1518,2423,4471,3807,7726,4472, # 6102 +2388,2604, 260,1795,3213,7727,7728,3808,3291, 708,7729,3565,1704,7730,3566,1351, # 6118 +1618,3357,2999,1886, 944,4185,3358,4186,3044,3359,4187,7731,3678, 422, 413,1714, # 6134 +3292, 500,2058,2345,4188,2479,7732,1344,1910, 954,7733,1668,7734,7735,3986,2404, # 6150 +4189,3567,3809,4190,7736,2302,1318,2505,3091, 133,3092,2873,4473, 629, 31,2838, # 6166 +2697,3810,4474, 850, 949,4475,3987,2955,1732,2088,4191,1496,1852,7737,3988, 620, # 6182 +3214, 981,1242,3679,3360,1619,3680,1643,3293,2139,2452,1970,1719,3463,2168,7738, # 6198 +3215,7739,7740,3361,1828,7741,1277,4476,1565,2047,7742,1636,3568,3093,7743, 869, # 6214 +2839, 655,3811,3812,3094,3989,3000,3813,1310,3569,4477,7744,7745,7746,1733, 558, # 6230 +4478,3681, 335,1549,3045,1756,4192,3682,1945,3464,1829,1291,1192, 470,2726,2107, # 6246 +2793, 913,1054,3990,7747,1027,7748,3046,3991,4479, 982,2662,3362,3148,3465,3216, # 6262 +3217,1946,2794,7749, 571,4480,7750,1830,7751,3570,2583,1523,2424,7752,2089, 984, # 6278 +4481,3683,1959,7753,3684, 852, 923,2795,3466,3685, 969,1519, 999,2048,2320,1705, # 6294 +7754,3095, 615,1662, 151, 597,3992,2405,2321,1049, 275,4482,3686,4193, 568,3687, # 6310 +3571,2480,4194,3688,7755,2425,2270, 409,3218,7756,1566,2874,3467,1002, 769,2840, # 6326 + 194,2090,3149,3689,2222,3294,4195, 628,1505,7757,7758,1763,2177,3001,3993, 521, # 6342 +1161,2584,1787,2203,2406,4483,3994,1625,4196,4197, 412, 42,3096, 464,7759,2632, # 6358 +4484,3363,1760,1571,2875,3468,2530,1219,2204,3814,2633,2140,2368,4485,4486,3295, # 6374 +1651,3364,3572,7760,7761,3573,2481,3469,7762,3690,7763,7764,2271,2091, 460,7765, # 6390 +4487,7766,3002, 962, 588,3574, 289,3219,2634,1116, 52,7767,3047,1796,7768,7769, # 6406 +7770,1467,7771,1598,1143,3691,4198,1984,1734,1067,4488,1280,3365, 465,4489,1572, # 6422 + 510,7772,1927,2241,1812,1644,3575,7773,4490,3692,7774,7775,2663,1573,1534,7776, # 6438 +7777,4199, 536,1807,1761,3470,3815,3150,2635,7778,7779,7780,4491,3471,2915,1911, # 6454 +2796,7781,3296,1122, 377,3220,7782, 360,7783,7784,4200,1529, 551,7785,2059,3693, # 6470 +1769,2426,7786,2916,4201,3297,3097,2322,2108,2030,4492,1404, 136,1468,1479, 672, # 6486 +1171,3221,2303, 271,3151,7787,2762,7788,2049, 678,2727, 865,1947,4493,7789,2013, # 6502 +3995,2956,7790,2728,2223,1397,3048,3694,4494,4495,1735,2917,3366,3576,7791,3816, # 6518 + 509,2841,2453,2876,3817,7792,7793,3152,3153,4496,4202,2531,4497,2304,1166,1010, # 6534 + 552, 681,1887,7794,7795,2957,2958,3996,1287,1596,1861,3154, 358, 453, 736, 175, # 6550 + 478,1117, 905,1167,1097,7796,1853,1530,7797,1706,7798,2178,3472,2287,3695,3473, # 6566 +3577,4203,2092,4204,7799,3367,1193,2482,4205,1458,2190,2205,1862,1888,1421,3298, # 6582 +2918,3049,2179,3474, 595,2122,7800,3997,7801,7802,4206,1707,2636, 223,3696,1359, # 6598 + 751,3098, 183,3475,7803,2797,3003, 419,2369, 633, 704,3818,2389, 241,7804,7805, # 6614 +7806, 838,3004,3697,2272,2763,2454,3819,1938,2050,3998,1309,3099,2242,1181,7807, # 6630 +1136,2206,3820,2370,1446,4207,2305,4498,7808,7809,4208,1055,2605, 484,3698,7810, # 6646 +3999, 625,4209,2273,3368,1499,4210,4000,7811,4001,4211,3222,2274,2275,3476,7812, # 6662 +7813,2764, 808,2606,3699,3369,4002,4212,3100,2532, 526,3370,3821,4213, 955,7814, # 6678 +1620,4214,2637,2427,7815,1429,3700,1669,1831, 994, 928,7816,3578,1260,7817,7818, # 6694 +7819,1948,2288, 741,2919,1626,4215,2729,2455, 867,1184, 362,3371,1392,7820,7821, # 6710 +4003,4216,1770,1736,3223,2920,4499,4500,1928,2698,1459,1158,7822,3050,3372,2877, # 6726 +1292,1929,2506,2842,3701,1985,1187,2071,2014,2607,4217,7823,2566,2507,2169,3702, # 6742 +2483,3299,7824,3703,4501,7825,7826, 666,1003,3005,1022,3579,4218,7827,4502,1813, # 6758 +2253, 574,3822,1603, 295,1535, 705,3823,4219, 283, 858, 417,7828,7829,3224,4503, # 6774 +4504,3051,1220,1889,1046,2276,2456,4004,1393,1599, 689,2567, 388,4220,7830,2484, # 6790 + 802,7831,2798,3824,2060,1405,2254,7832,4505,3825,2109,1052,1345,3225,1585,7833, # 6806 + 809,7834,7835,7836, 575,2730,3477, 956,1552,1469,1144,2323,7837,2324,1560,2457, # 6822 +3580,3226,4005, 616,2207,3155,2180,2289,7838,1832,7839,3478,4506,7840,1319,3704, # 6838 +3705,1211,3581,1023,3227,1293,2799,7841,7842,7843,3826, 607,2306,3827, 762,2878, # 6854 +1439,4221,1360,7844,1485,3052,7845,4507,1038,4222,1450,2061,2638,4223,1379,4508, # 6870 +2585,7846,7847,4224,1352,1414,2325,2921,1172,7848,7849,3828,3829,7850,1797,1451, # 6886 +7851,7852,7853,7854,2922,4006,4007,2485,2346, 411,4008,4009,3582,3300,3101,4509, # 6902 +1561,2664,1452,4010,1375,7855,7856, 47,2959, 316,7857,1406,1591,2923,3156,7858, # 6918 +1025,2141,3102,3157, 354,2731, 884,2224,4225,2407, 508,3706, 726,3583, 996,2428, # 6934 +3584, 729,7859, 392,2191,1453,4011,4510,3707,7860,7861,2458,3585,2608,1675,2800, # 6950 + 919,2347,2960,2348,1270,4511,4012, 73,7862,7863, 647,7864,3228,2843,2255,1550, # 6966 +1346,3006,7865,1332, 883,3479,7866,7867,7868,7869,3301,2765,7870,1212, 831,1347, # 6982 +4226,4512,2326,3830,1863,3053, 720,3831,4513,4514,3832,7871,4227,7872,7873,4515, # 6998 +7874,7875,1798,4516,3708,2609,4517,3586,1645,2371,7876,7877,2924, 669,2208,2665, # 7014 +2429,7878,2879,7879,7880,1028,3229,7881,4228,2408,7882,2256,1353,7883,7884,4518, # 7030 +3158, 518,7885,4013,7886,4229,1960,7887,2142,4230,7888,7889,3007,2349,2350,3833, # 7046 + 516,1833,1454,4014,2699,4231,4519,2225,2610,1971,1129,3587,7890,2766,7891,2961, # 7062 +1422, 577,1470,3008,1524,3373,7892,7893, 432,4232,3054,3480,7894,2586,1455,2508, # 7078 +2226,1972,1175,7895,1020,2732,4015,3481,4520,7896,2733,7897,1743,1361,3055,3482, # 7094 +2639,4016,4233,4521,2290, 895, 924,4234,2170, 331,2243,3056, 166,1627,3057,1098, # 7110 +7898,1232,2880,2227,3374,4522, 657, 403,1196,2372, 542,3709,3375,1600,4235,3483, # 7126 +7899,4523,2767,3230, 576, 530,1362,7900,4524,2533,2666,3710,4017,7901, 842,3834, # 7142 +7902,2801,2031,1014,4018, 213,2700,3376, 665, 621,4236,7903,3711,2925,2430,7904, # 7158 +2431,3302,3588,3377,7905,4237,2534,4238,4525,3589,1682,4239,3484,1380,7906, 724, # 7174 +2277, 600,1670,7907,1337,1233,4526,3103,2244,7908,1621,4527,7909, 651,4240,7910, # 7190 +1612,4241,2611,7911,2844,7912,2734,2307,3058,7913, 716,2459,3059, 174,1255,2701, # 7206 +4019,3590, 548,1320,1398, 728,4020,1574,7914,1890,1197,3060,4021,7915,3061,3062, # 7222 +3712,3591,3713, 747,7916, 635,4242,4528,7917,7918,7919,4243,7920,7921,4529,7922, # 7238 +3378,4530,2432, 451,7923,3714,2535,2072,4244,2735,4245,4022,7924,1764,4531,7925, # 7254 +4246, 350,7926,2278,2390,2486,7927,4247,4023,2245,1434,4024, 488,4532, 458,4248, # 7270 +4025,3715, 771,1330,2391,3835,2568,3159,2159,2409,1553,2667,3160,4249,7928,2487, # 7286 +2881,2612,1720,2702,4250,3379,4533,7929,2536,4251,7930,3231,4252,2768,7931,2015, # 7302 +2736,7932,1155,1017,3716,3836,7933,3303,2308, 201,1864,4253,1430,7934,4026,7935, # 7318 +7936,7937,7938,7939,4254,1604,7940, 414,1865, 371,2587,4534,4535,3485,2016,3104, # 7334 +4536,1708, 960,4255, 887, 389,2171,1536,1663,1721,7941,2228,4027,2351,2926,1580, # 7350 +7942,7943,7944,1744,7945,2537,4537,4538,7946,4539,7947,2073,7948,7949,3592,3380, # 7366 +2882,4256,7950,4257,2640,3381,2802, 673,2703,2460, 709,3486,4028,3593,4258,7951, # 7382 +1148, 502, 634,7952,7953,1204,4540,3594,1575,4541,2613,3717,7954,3718,3105, 948, # 7398 +3232, 121,1745,3837,1110,7955,4259,3063,2509,3009,4029,3719,1151,1771,3838,1488, # 7414 +4030,1986,7956,2433,3487,7957,7958,2093,7959,4260,3839,1213,1407,2803, 531,2737, # 7430 +2538,3233,1011,1537,7960,2769,4261,3106,1061,7961,3720,3721,1866,2883,7962,2017, # 7446 + 120,4262,4263,2062,3595,3234,2309,3840,2668,3382,1954,4542,7963,7964,3488,1047, # 7462 +2704,1266,7965,1368,4543,2845, 649,3383,3841,2539,2738,1102,2846,2669,7966,7967, # 7478 +1999,7968,1111,3596,2962,7969,2488,3842,3597,2804,1854,3384,3722,7970,7971,3385, # 7494 +2410,2884,3304,3235,3598,7972,2569,7973,3599,2805,4031,1460, 856,7974,3600,7975, # 7510 +2885,2963,7976,2886,3843,7977,4264, 632,2510, 875,3844,1697,3845,2291,7978,7979, # 7526 +4544,3010,1239, 580,4545,4265,7980, 914, 936,2074,1190,4032,1039,2123,7981,7982, # 7542 +7983,3386,1473,7984,1354,4266,3846,7985,2172,3064,4033, 915,3305,4267,4268,3306, # 7558 +1605,1834,7986,2739, 398,3601,4269,3847,4034, 328,1912,2847,4035,3848,1331,4270, # 7574 +3011, 937,4271,7987,3602,4036,4037,3387,2160,4546,3388, 524, 742, 538,3065,1012, # 7590 +7988,7989,3849,2461,7990, 658,1103, 225,3850,7991,7992,4547,7993,4548,7994,3236, # 7606 +1243,7995,4038, 963,2246,4549,7996,2705,3603,3161,7997,7998,2588,2327,7999,4550, # 7622 +8000,8001,8002,3489,3307, 957,3389,2540,2032,1930,2927,2462, 870,2018,3604,1746, # 7638 +2770,2771,2434,2463,8003,3851,8004,3723,3107,3724,3490,3390,3725,8005,1179,3066, # 7654 +8006,3162,2373,4272,3726,2541,3163,3108,2740,4039,8007,3391,1556,2542,2292, 977, # 7670 +2887,2033,4040,1205,3392,8008,1765,3393,3164,2124,1271,1689, 714,4551,3491,8009, # 7686 +2328,3852, 533,4273,3605,2181, 617,8010,2464,3308,3492,2310,8011,8012,3165,8013, # 7702 +8014,3853,1987, 618, 427,2641,3493,3394,8015,8016,1244,1690,8017,2806,4274,4552, # 7718 +8018,3494,8019,8020,2279,1576, 473,3606,4275,3395, 972,8021,3607,8022,3067,8023, # 7734 +8024,4553,4554,8025,3727,4041,4042,8026, 153,4555, 356,8027,1891,2888,4276,2143, # 7750 + 408, 803,2352,8028,3854,8029,4277,1646,2570,2511,4556,4557,3855,8030,3856,4278, # 7766 +8031,2411,3396, 752,8032,8033,1961,2964,8034, 746,3012,2465,8035,4279,3728, 698, # 7782 +4558,1892,4280,3608,2543,4559,3609,3857,8036,3166,3397,8037,1823,1302,4043,2706, # 7798 +3858,1973,4281,8038,4282,3167, 823,1303,1288,1236,2848,3495,4044,3398, 774,3859, # 7814 +8039,1581,4560,1304,2849,3860,4561,8040,2435,2161,1083,3237,4283,4045,4284, 344, # 7830 +1173, 288,2311, 454,1683,8041,8042,1461,4562,4046,2589,8043,8044,4563, 985, 894, # 7846 +8045,3399,3168,8046,1913,2928,3729,1988,8047,2110,1974,8048,4047,8049,2571,1194, # 7862 + 425,8050,4564,3169,1245,3730,4285,8051,8052,2850,8053, 636,4565,1855,3861, 760, # 7878 +1799,8054,4286,2209,1508,4566,4048,1893,1684,2293,8055,8056,8057,4287,4288,2210, # 7894 + 479,8058,8059, 832,8060,4049,2489,8061,2965,2490,3731, 990,3109, 627,1814,2642, # 7910 +4289,1582,4290,2125,2111,3496,4567,8062, 799,4291,3170,8063,4568,2112,1737,3013, # 7926 +1018, 543, 754,4292,3309,1676,4569,4570,4050,8064,1489,8065,3497,8066,2614,2889, # 7942 +4051,8067,8068,2966,8069,8070,8071,8072,3171,4571,4572,2182,1722,8073,3238,3239, # 7958 +1842,3610,1715, 481, 365,1975,1856,8074,8075,1962,2491,4573,8076,2126,3611,3240, # 7974 + 433,1894,2063,2075,8077, 602,2741,8078,8079,8080,8081,8082,3014,1628,3400,8083, # 7990 +3172,4574,4052,2890,4575,2512,8084,2544,2772,8085,8086,8087,3310,4576,2891,8088, # 8006 +4577,8089,2851,4578,4579,1221,2967,4053,2513,8090,8091,8092,1867,1989,8093,8094, # 8022 +8095,1895,8096,8097,4580,1896,4054, 318,8098,2094,4055,4293,8099,8100, 485,8101, # 8038 + 938,3862, 553,2670, 116,8102,3863,3612,8103,3498,2671,2773,3401,3311,2807,8104, # 8054 +3613,2929,4056,1747,2930,2968,8105,8106, 207,8107,8108,2672,4581,2514,8109,3015, # 8070 + 890,3614,3864,8110,1877,3732,3402,8111,2183,2353,3403,1652,8112,8113,8114, 941, # 8086 +2294, 208,3499,4057,2019, 330,4294,3865,2892,2492,3733,4295,8115,8116,8117,8118, # 8102 +) -# flake8: noqa diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/euctwprober.py b/lib/python3.6/site-packages/pip/_vendor/chardet/euctwprober.py similarity index 82% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/euctwprober.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/euctwprober.py index fe652fe..35669cc 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/euctwprober.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/euctwprober.py @@ -13,12 +13,12 @@ # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. -# +# # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. -# +# # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA @@ -28,14 +28,19 @@ from .mbcharsetprober import MultiByteCharSetProber from .codingstatemachine import CodingStateMachine from .chardistribution import EUCTWDistributionAnalysis -from .mbcssm import EUCTWSMModel +from .mbcssm import EUCTW_SM_MODEL class EUCTWProber(MultiByteCharSetProber): def __init__(self): - MultiByteCharSetProber.__init__(self) - self._mCodingSM = CodingStateMachine(EUCTWSMModel) - self._mDistributionAnalyzer = EUCTWDistributionAnalysis() + super(EUCTWProber, self).__init__() + self.coding_sm = CodingStateMachine(EUCTW_SM_MODEL) + self.distribution_analyzer = EUCTWDistributionAnalysis() self.reset() - def get_charset_name(self): + @property + def charset_name(self): return "EUC-TW" + + @property + def language(self): + return "Taiwan" diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/gb2312freq.py b/lib/python3.6/site-packages/pip/_vendor/chardet/gb2312freq.py similarity index 57% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/gb2312freq.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/gb2312freq.py index 1238f51..697837b 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/gb2312freq.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/gb2312freq.py @@ -43,7 +43,7 @@ GB2312_TYPICAL_DISTRIBUTION_RATIO = 0.9 GB2312_TABLE_SIZE = 3760 -GB2312CharToFreqOrder = ( +GB2312_CHAR_TO_FREQ_ORDER = ( 1671, 749,1443,2364,3924,3807,2330,3921,1704,3463,2691,1511,1515, 572,3191,2205, 2361, 224,2558, 479,1711, 963,3162, 440,4060,1905,2966,2947,3580,2647,3961,3842, 2204, 869,4207, 970,2678,5626,2944,2956,1479,4048, 514,3595, 588,1346,2820,3409, @@ -278,195 +278,6 @@ GB2312CharToFreqOrder = ( 1718,1717,2655,3453,3143,4465, 161,2889,2980,2009,1421, 56,1908,1640,2387,2232, 1917,1874,2477,4921, 148, 83,3438, 592,4245,2882,1822,1055, 741, 115,1496,1624, 381,1638,4592,1020, 516,3214, 458, 947,4575,1432, 211,1514,2926,1865,2142, 189, - 852,1221,1400,1486, 882,2299,4036, 351, 28,1122, 700,6479,6480,6481,6482,6483, # last 512 -#Everything below is of no interest for detection purpose -5508,6484,3900,3414,3974,4441,4024,3537,4037,5628,5099,3633,6485,3148,6486,3636, -5509,3257,5510,5973,5445,5872,4941,4403,3174,4627,5873,6276,2286,4230,5446,5874, -5122,6102,6103,4162,5447,5123,5323,4849,6277,3980,3851,5066,4246,5774,5067,6278, -3001,2807,5695,3346,5775,5974,5158,5448,6487,5975,5976,5776,3598,6279,5696,4806, -4211,4154,6280,6488,6489,6490,6281,4212,5037,3374,4171,6491,4562,4807,4722,4827, -5977,6104,4532,4079,5159,5324,5160,4404,3858,5359,5875,3975,4288,4610,3486,4512, -5325,3893,5360,6282,6283,5560,2522,4231,5978,5186,5449,2569,3878,6284,5401,3578, -4415,6285,4656,5124,5979,2506,4247,4449,3219,3417,4334,4969,4329,6492,4576,4828, -4172,4416,4829,5402,6286,3927,3852,5361,4369,4830,4477,4867,5876,4173,6493,6105, -4657,6287,6106,5877,5450,6494,4155,4868,5451,3700,5629,4384,6288,6289,5878,3189, -4881,6107,6290,6495,4513,6496,4692,4515,4723,5100,3356,6497,6291,3810,4080,5561, -3570,4430,5980,6498,4355,5697,6499,4724,6108,6109,3764,4050,5038,5879,4093,3226, -6292,5068,5217,4693,3342,5630,3504,4831,4377,4466,4309,5698,4431,5777,6293,5778, -4272,3706,6110,5326,3752,4676,5327,4273,5403,4767,5631,6500,5699,5880,3475,5039, -6294,5562,5125,4348,4301,4482,4068,5126,4593,5700,3380,3462,5981,5563,3824,5404, -4970,5511,3825,4738,6295,6501,5452,4516,6111,5881,5564,6502,6296,5982,6503,4213, -4163,3454,6504,6112,4009,4450,6113,4658,6297,6114,3035,6505,6115,3995,4904,4739, -4563,4942,4110,5040,3661,3928,5362,3674,6506,5292,3612,4791,5565,4149,5983,5328, -5259,5021,4725,4577,4564,4517,4364,6298,5405,4578,5260,4594,4156,4157,5453,3592, -3491,6507,5127,5512,4709,4922,5984,5701,4726,4289,6508,4015,6116,5128,4628,3424, -4241,5779,6299,4905,6509,6510,5454,5702,5780,6300,4365,4923,3971,6511,5161,3270, -3158,5985,4100, 867,5129,5703,6117,5363,3695,3301,5513,4467,6118,6512,5455,4232, -4242,4629,6513,3959,4478,6514,5514,5329,5986,4850,5162,5566,3846,4694,6119,5456, -4869,5781,3779,6301,5704,5987,5515,4710,6302,5882,6120,4392,5364,5705,6515,6121, -6516,6517,3736,5988,5457,5989,4695,2457,5883,4551,5782,6303,6304,6305,5130,4971, -6122,5163,6123,4870,3263,5365,3150,4871,6518,6306,5783,5069,5706,3513,3498,4409, -5330,5632,5366,5458,5459,3991,5990,4502,3324,5991,5784,3696,4518,5633,4119,6519, -4630,5634,4417,5707,4832,5992,3418,6124,5993,5567,4768,5218,6520,4595,3458,5367, -6125,5635,6126,4202,6521,4740,4924,6307,3981,4069,4385,6308,3883,2675,4051,3834, -4302,4483,5568,5994,4972,4101,5368,6309,5164,5884,3922,6127,6522,6523,5261,5460, -5187,4164,5219,3538,5516,4111,3524,5995,6310,6311,5369,3181,3386,2484,5188,3464, -5569,3627,5708,6524,5406,5165,4677,4492,6312,4872,4851,5885,4468,5996,6313,5709, -5710,6128,2470,5886,6314,5293,4882,5785,3325,5461,5101,6129,5711,5786,6525,4906, -6526,6527,4418,5887,5712,4808,2907,3701,5713,5888,6528,3765,5636,5331,6529,6530, -3593,5889,3637,4943,3692,5714,5787,4925,6315,6130,5462,4405,6131,6132,6316,5262, -6531,6532,5715,3859,5716,5070,4696,5102,3929,5788,3987,4792,5997,6533,6534,3920, -4809,5000,5998,6535,2974,5370,6317,5189,5263,5717,3826,6536,3953,5001,4883,3190, -5463,5890,4973,5999,4741,6133,6134,3607,5570,6000,4711,3362,3630,4552,5041,6318, -6001,2950,2953,5637,4646,5371,4944,6002,2044,4120,3429,6319,6537,5103,4833,6538, -6539,4884,4647,3884,6003,6004,4758,3835,5220,5789,4565,5407,6540,6135,5294,4697, -4852,6320,6321,3206,4907,6541,6322,4945,6542,6136,6543,6323,6005,4631,3519,6544, -5891,6545,5464,3784,5221,6546,5571,4659,6547,6324,6137,5190,6548,3853,6549,4016, -4834,3954,6138,5332,3827,4017,3210,3546,4469,5408,5718,3505,4648,5790,5131,5638, -5791,5465,4727,4318,6325,6326,5792,4553,4010,4698,3439,4974,3638,4335,3085,6006, -5104,5042,5166,5892,5572,6327,4356,4519,5222,5573,5333,5793,5043,6550,5639,5071, -4503,6328,6139,6551,6140,3914,3901,5372,6007,5640,4728,4793,3976,3836,4885,6552, -4127,6553,4451,4102,5002,6554,3686,5105,6555,5191,5072,5295,4611,5794,5296,6556, -5893,5264,5894,4975,5466,5265,4699,4976,4370,4056,3492,5044,4886,6557,5795,4432, -4769,4357,5467,3940,4660,4290,6141,4484,4770,4661,3992,6329,4025,4662,5022,4632, -4835,4070,5297,4663,4596,5574,5132,5409,5895,6142,4504,5192,4664,5796,5896,3885, -5575,5797,5023,4810,5798,3732,5223,4712,5298,4084,5334,5468,6143,4052,4053,4336, -4977,4794,6558,5335,4908,5576,5224,4233,5024,4128,5469,5225,4873,6008,5045,4729, -4742,4633,3675,4597,6559,5897,5133,5577,5003,5641,5719,6330,6560,3017,2382,3854, -4406,4811,6331,4393,3964,4946,6561,2420,3722,6562,4926,4378,3247,1736,4442,6332, -5134,6333,5226,3996,2918,5470,4319,4003,4598,4743,4744,4485,3785,3902,5167,5004, -5373,4394,5898,6144,4874,1793,3997,6334,4085,4214,5106,5642,4909,5799,6009,4419, -4189,3330,5899,4165,4420,5299,5720,5227,3347,6145,4081,6335,2876,3930,6146,3293, -3786,3910,3998,5900,5300,5578,2840,6563,5901,5579,6147,3531,5374,6564,6565,5580, -4759,5375,6566,6148,3559,5643,6336,6010,5517,6337,6338,5721,5902,3873,6011,6339, -6567,5518,3868,3649,5722,6568,4771,4947,6569,6149,4812,6570,2853,5471,6340,6341, -5644,4795,6342,6012,5723,6343,5724,6013,4349,6344,3160,6150,5193,4599,4514,4493, -5168,4320,6345,4927,3666,4745,5169,5903,5005,4928,6346,5725,6014,4730,4203,5046, -4948,3395,5170,6015,4150,6016,5726,5519,6347,5047,3550,6151,6348,4197,4310,5904, -6571,5581,2965,6152,4978,3960,4291,5135,6572,5301,5727,4129,4026,5905,4853,5728, -5472,6153,6349,4533,2700,4505,5336,4678,3583,5073,2994,4486,3043,4554,5520,6350, -6017,5800,4487,6351,3931,4103,5376,6352,4011,4321,4311,4190,5136,6018,3988,3233, -4350,5906,5645,4198,6573,5107,3432,4191,3435,5582,6574,4139,5410,6353,5411,3944, -5583,5074,3198,6575,6354,4358,6576,5302,4600,5584,5194,5412,6577,6578,5585,5413, -5303,4248,5414,3879,4433,6579,4479,5025,4854,5415,6355,4760,4772,3683,2978,4700, -3797,4452,3965,3932,3721,4910,5801,6580,5195,3551,5907,3221,3471,3029,6019,3999, -5908,5909,5266,5267,3444,3023,3828,3170,4796,5646,4979,4259,6356,5647,5337,3694, -6357,5648,5338,4520,4322,5802,3031,3759,4071,6020,5586,4836,4386,5048,6581,3571, -4679,4174,4949,6154,4813,3787,3402,3822,3958,3215,3552,5268,4387,3933,4950,4359, -6021,5910,5075,3579,6358,4234,4566,5521,6359,3613,5049,6022,5911,3375,3702,3178, -4911,5339,4521,6582,6583,4395,3087,3811,5377,6023,6360,6155,4027,5171,5649,4421, -4249,2804,6584,2270,6585,4000,4235,3045,6156,5137,5729,4140,4312,3886,6361,4330, -6157,4215,6158,3500,3676,4929,4331,3713,4930,5912,4265,3776,3368,5587,4470,4855, -3038,4980,3631,6159,6160,4132,4680,6161,6362,3923,4379,5588,4255,6586,4121,6587, -6363,4649,6364,3288,4773,4774,6162,6024,6365,3543,6588,4274,3107,3737,5050,5803, -4797,4522,5589,5051,5730,3714,4887,5378,4001,4523,6163,5026,5522,4701,4175,2791, -3760,6589,5473,4224,4133,3847,4814,4815,4775,3259,5416,6590,2738,6164,6025,5304, -3733,5076,5650,4816,5590,6591,6165,6592,3934,5269,6593,3396,5340,6594,5804,3445, -3602,4042,4488,5731,5732,3525,5591,4601,5196,6166,6026,5172,3642,4612,3202,4506, -4798,6366,3818,5108,4303,5138,5139,4776,3332,4304,2915,3415,4434,5077,5109,4856, -2879,5305,4817,6595,5913,3104,3144,3903,4634,5341,3133,5110,5651,5805,6167,4057, -5592,2945,4371,5593,6596,3474,4182,6367,6597,6168,4507,4279,6598,2822,6599,4777, -4713,5594,3829,6169,3887,5417,6170,3653,5474,6368,4216,2971,5228,3790,4579,6369, -5733,6600,6601,4951,4746,4555,6602,5418,5475,6027,3400,4665,5806,6171,4799,6028, -5052,6172,3343,4800,4747,5006,6370,4556,4217,5476,4396,5229,5379,5477,3839,5914, -5652,5807,4714,3068,4635,5808,6173,5342,4192,5078,5419,5523,5734,6174,4557,6175, -4602,6371,6176,6603,5809,6372,5735,4260,3869,5111,5230,6029,5112,6177,3126,4681, -5524,5915,2706,3563,4748,3130,6178,4018,5525,6604,6605,5478,4012,4837,6606,4534, -4193,5810,4857,3615,5479,6030,4082,3697,3539,4086,5270,3662,4508,4931,5916,4912, -5811,5027,3888,6607,4397,3527,3302,3798,2775,2921,2637,3966,4122,4388,4028,4054, -1633,4858,5079,3024,5007,3982,3412,5736,6608,3426,3236,5595,3030,6179,3427,3336, -3279,3110,6373,3874,3039,5080,5917,5140,4489,3119,6374,5812,3405,4494,6031,4666, -4141,6180,4166,6032,5813,4981,6609,5081,4422,4982,4112,3915,5653,3296,3983,6375, -4266,4410,5654,6610,6181,3436,5082,6611,5380,6033,3819,5596,4535,5231,5306,5113, -6612,4952,5918,4275,3113,6613,6376,6182,6183,5814,3073,4731,4838,5008,3831,6614, -4888,3090,3848,4280,5526,5232,3014,5655,5009,5737,5420,5527,6615,5815,5343,5173, -5381,4818,6616,3151,4953,6617,5738,2796,3204,4360,2989,4281,5739,5174,5421,5197, -3132,5141,3849,5142,5528,5083,3799,3904,4839,5480,2880,4495,3448,6377,6184,5271, -5919,3771,3193,6034,6035,5920,5010,6036,5597,6037,6378,6038,3106,5422,6618,5423, -5424,4142,6619,4889,5084,4890,4313,5740,6620,3437,5175,5307,5816,4199,5198,5529, -5817,5199,5656,4913,5028,5344,3850,6185,2955,5272,5011,5818,4567,4580,5029,5921, -3616,5233,6621,6622,6186,4176,6039,6379,6380,3352,5200,5273,2908,5598,5234,3837, -5308,6623,6624,5819,4496,4323,5309,5201,6625,6626,4983,3194,3838,4167,5530,5922, -5274,6381,6382,3860,3861,5599,3333,4292,4509,6383,3553,5481,5820,5531,4778,6187, -3955,3956,4324,4389,4218,3945,4325,3397,2681,5923,4779,5085,4019,5482,4891,5382, -5383,6040,4682,3425,5275,4094,6627,5310,3015,5483,5657,4398,5924,3168,4819,6628, -5925,6629,5532,4932,4613,6041,6630,4636,6384,4780,4204,5658,4423,5821,3989,4683, -5822,6385,4954,6631,5345,6188,5425,5012,5384,3894,6386,4490,4104,6632,5741,5053, -6633,5823,5926,5659,5660,5927,6634,5235,5742,5824,4840,4933,4820,6387,4859,5928, -4955,6388,4143,3584,5825,5346,5013,6635,5661,6389,5014,5484,5743,4337,5176,5662, -6390,2836,6391,3268,6392,6636,6042,5236,6637,4158,6638,5744,5663,4471,5347,3663, -4123,5143,4293,3895,6639,6640,5311,5929,5826,3800,6189,6393,6190,5664,5348,3554, -3594,4749,4603,6641,5385,4801,6043,5827,4183,6642,5312,5426,4761,6394,5665,6191, -4715,2669,6643,6644,5533,3185,5427,5086,5930,5931,5386,6192,6044,6645,4781,4013, -5745,4282,4435,5534,4390,4267,6045,5746,4984,6046,2743,6193,3501,4087,5485,5932, -5428,4184,4095,5747,4061,5054,3058,3862,5933,5600,6646,5144,3618,6395,3131,5055, -5313,6396,4650,4956,3855,6194,3896,5202,4985,4029,4225,6195,6647,5828,5486,5829, -3589,3002,6648,6397,4782,5276,6649,6196,6650,4105,3803,4043,5237,5830,6398,4096, -3643,6399,3528,6651,4453,3315,4637,6652,3984,6197,5535,3182,3339,6653,3096,2660, -6400,6654,3449,5934,4250,4236,6047,6401,5831,6655,5487,3753,4062,5832,6198,6199, -6656,3766,6657,3403,4667,6048,6658,4338,2897,5833,3880,2797,3780,4326,6659,5748, -5015,6660,5387,4351,5601,4411,6661,3654,4424,5935,4339,4072,5277,4568,5536,6402, -6662,5238,6663,5349,5203,6200,5204,6201,5145,4536,5016,5056,4762,5834,4399,4957, -6202,6403,5666,5749,6664,4340,6665,5936,5177,5667,6666,6667,3459,4668,6404,6668, -6669,4543,6203,6670,4276,6405,4480,5537,6671,4614,5205,5668,6672,3348,2193,4763, -6406,6204,5937,5602,4177,5669,3419,6673,4020,6205,4443,4569,5388,3715,3639,6407, -6049,4058,6206,6674,5938,4544,6050,4185,4294,4841,4651,4615,5488,6207,6408,6051, -5178,3241,3509,5835,6208,4958,5836,4341,5489,5278,6209,2823,5538,5350,5206,5429, -6675,4638,4875,4073,3516,4684,4914,4860,5939,5603,5389,6052,5057,3237,5490,3791, -6676,6409,6677,4821,4915,4106,5351,5058,4243,5539,4244,5604,4842,4916,5239,3028, -3716,5837,5114,5605,5390,5940,5430,6210,4332,6678,5540,4732,3667,3840,6053,4305, -3408,5670,5541,6410,2744,5240,5750,6679,3234,5606,6680,5607,5671,3608,4283,4159, -4400,5352,4783,6681,6411,6682,4491,4802,6211,6412,5941,6413,6414,5542,5751,6683, -4669,3734,5942,6684,6415,5943,5059,3328,4670,4144,4268,6685,6686,6687,6688,4372, -3603,6689,5944,5491,4373,3440,6416,5543,4784,4822,5608,3792,4616,5838,5672,3514, -5391,6417,4892,6690,4639,6691,6054,5673,5839,6055,6692,6056,5392,6212,4038,5544, -5674,4497,6057,6693,5840,4284,5675,4021,4545,5609,6418,4454,6419,6213,4113,4472, -5314,3738,5087,5279,4074,5610,4959,4063,3179,4750,6058,6420,6214,3476,4498,4716, -5431,4960,4685,6215,5241,6694,6421,6216,6695,5841,5945,6422,3748,5946,5179,3905, -5752,5545,5947,4374,6217,4455,6423,4412,6218,4803,5353,6696,3832,5280,6219,4327, -4702,6220,6221,6059,4652,5432,6424,3749,4751,6425,5753,4986,5393,4917,5948,5030, -5754,4861,4733,6426,4703,6697,6222,4671,5949,4546,4961,5180,6223,5031,3316,5281, -6698,4862,4295,4934,5207,3644,6427,5842,5950,6428,6429,4570,5843,5282,6430,6224, -5088,3239,6060,6699,5844,5755,6061,6431,2701,5546,6432,5115,5676,4039,3993,3327, -4752,4425,5315,6433,3941,6434,5677,4617,4604,3074,4581,6225,5433,6435,6226,6062, -4823,5756,5116,6227,3717,5678,4717,5845,6436,5679,5846,6063,5847,6064,3977,3354, -6437,3863,5117,6228,5547,5394,4499,4524,6229,4605,6230,4306,4500,6700,5951,6065, -3693,5952,5089,4366,4918,6701,6231,5548,6232,6702,6438,4704,5434,6703,6704,5953, -4168,6705,5680,3420,6706,5242,4407,6066,3812,5757,5090,5954,4672,4525,3481,5681, -4618,5395,5354,5316,5955,6439,4962,6707,4526,6440,3465,4673,6067,6441,5682,6708, -5435,5492,5758,5683,4619,4571,4674,4804,4893,4686,5493,4753,6233,6068,4269,6442, -6234,5032,4705,5146,5243,5208,5848,6235,6443,4963,5033,4640,4226,6236,5849,3387, -6444,6445,4436,4437,5850,4843,5494,4785,4894,6709,4361,6710,5091,5956,3331,6237, -4987,5549,6069,6711,4342,3517,4473,5317,6070,6712,6071,4706,6446,5017,5355,6713, -6714,4988,5436,6447,4734,5759,6715,4735,4547,4456,4754,6448,5851,6449,6450,3547, -5852,5318,6451,6452,5092,4205,6716,6238,4620,4219,5611,6239,6072,4481,5760,5957, -5958,4059,6240,6453,4227,4537,6241,5761,4030,4186,5244,5209,3761,4457,4876,3337, -5495,5181,6242,5959,5319,5612,5684,5853,3493,5854,6073,4169,5613,5147,4895,6074, -5210,6717,5182,6718,3830,6243,2798,3841,6075,6244,5855,5614,3604,4606,5496,5685, -5118,5356,6719,6454,5960,5357,5961,6720,4145,3935,4621,5119,5962,4261,6721,6455, -4786,5963,4375,4582,6245,6246,6247,6076,5437,4877,5856,3376,4380,6248,4160,6722, -5148,6456,5211,6457,6723,4718,6458,6724,6249,5358,4044,3297,6459,6250,5857,5615, -5497,5245,6460,5498,6725,6251,6252,5550,3793,5499,2959,5396,6461,6462,4572,5093, -5500,5964,3806,4146,6463,4426,5762,5858,6077,6253,4755,3967,4220,5965,6254,4989, -5501,6464,4352,6726,6078,4764,2290,5246,3906,5438,5283,3767,4964,2861,5763,5094, -6255,6256,4622,5616,5859,5860,4707,6727,4285,4708,4824,5617,6257,5551,4787,5212, -4965,4935,4687,6465,6728,6466,5686,6079,3494,4413,2995,5247,5966,5618,6729,5967, -5764,5765,5687,5502,6730,6731,6080,5397,6467,4990,6258,6732,4538,5060,5619,6733, -4719,5688,5439,5018,5149,5284,5503,6734,6081,4607,6259,5120,3645,5861,4583,6260, -4584,4675,5620,4098,5440,6261,4863,2379,3306,4585,5552,5689,4586,5285,6735,4864, -6736,5286,6082,6737,4623,3010,4788,4381,4558,5621,4587,4896,3698,3161,5248,4353, -4045,6262,3754,5183,4588,6738,6263,6739,6740,5622,3936,6741,6468,6742,6264,5095, -6469,4991,5968,6743,4992,6744,6083,4897,6745,4256,5766,4307,3108,3968,4444,5287, -3889,4343,6084,4510,6085,4559,6086,4898,5969,6746,5623,5061,4919,5249,5250,5504, -5441,6265,5320,4878,3242,5862,5251,3428,6087,6747,4237,5624,5442,6266,5553,4539, -6748,2585,3533,5398,4262,6088,5150,4736,4438,6089,6267,5505,4966,6749,6268,6750, -6269,5288,5554,3650,6090,6091,4624,6092,5690,6751,5863,4270,5691,4277,5555,5864, -6752,5692,4720,4865,6470,5151,4688,4825,6753,3094,6754,6471,3235,4653,6755,5213, -5399,6756,3201,4589,5865,4967,6472,5866,6473,5019,3016,6757,5321,4756,3957,4573, -6093,4993,5767,4721,6474,6758,5625,6759,4458,6475,6270,6760,5556,4994,5214,5252, -6271,3875,5768,6094,5034,5506,4376,5769,6761,2120,6476,5253,5770,6762,5771,5970, -3990,5971,5557,5558,5772,6477,6095,2787,4641,5972,5121,6096,6097,6272,6763,3703, -5867,5507,6273,4206,6274,4789,6098,6764,3619,3646,3833,3804,2394,3788,4936,3978, -4866,4899,6099,6100,5559,6478,6765,3599,5868,6101,5869,5870,6275,6766,4527,6767) + 852,1221,1400,1486, 882,2299,4036, 351, 28,1122, 700,6479,6480,6481,6482,6483, #last 512 +) -# flake8: noqa diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/gb2312prober.py b/lib/python3.6/site-packages/pip/_vendor/chardet/gb2312prober.py similarity index 81% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/gb2312prober.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/gb2312prober.py index 0325a2d..8446d2d 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/gb2312prober.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/gb2312prober.py @@ -13,12 +13,12 @@ # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. -# +# # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. -# +# # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA @@ -28,14 +28,19 @@ from .mbcharsetprober import MultiByteCharSetProber from .codingstatemachine import CodingStateMachine from .chardistribution import GB2312DistributionAnalysis -from .mbcssm import GB2312SMModel +from .mbcssm import GB2312_SM_MODEL class GB2312Prober(MultiByteCharSetProber): def __init__(self): - MultiByteCharSetProber.__init__(self) - self._mCodingSM = CodingStateMachine(GB2312SMModel) - self._mDistributionAnalyzer = GB2312DistributionAnalysis() + super(GB2312Prober, self).__init__() + self.coding_sm = CodingStateMachine(GB2312_SM_MODEL) + self.distribution_analyzer = GB2312DistributionAnalysis() self.reset() - def get_charset_name(self): + @property + def charset_name(self): return "GB2312" + + @property + def language(self): + return "Chinese" diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/hebrewprober.py b/lib/python3.6/site-packages/pip/_vendor/chardet/hebrewprober.py similarity index 76% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/hebrewprober.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/hebrewprober.py index ba225c5..b0e1bf4 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/hebrewprober.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/hebrewprober.py @@ -26,8 +26,7 @@ ######################### END LICENSE BLOCK ######################### from .charsetprober import CharSetProber -from .constants import eNotMe, eDetecting -from .compat import wrap_ord +from .enums import ProbingState # This prober doesn't actually recognize a language or a charset. # It is a helper prober for the use of the Hebrew model probers @@ -126,56 +125,59 @@ from .compat import wrap_ord # model probers scores. The answer is returned in the form of the name of the # charset identified, either "windows-1255" or "ISO-8859-8". -# windows-1255 / ISO-8859-8 code points of interest -FINAL_KAF = 0xea -NORMAL_KAF = 0xeb -FINAL_MEM = 0xed -NORMAL_MEM = 0xee -FINAL_NUN = 0xef -NORMAL_NUN = 0xf0 -FINAL_PE = 0xf3 -NORMAL_PE = 0xf4 -FINAL_TSADI = 0xf5 -NORMAL_TSADI = 0xf6 - -# Minimum Visual vs Logical final letter score difference. -# If the difference is below this, don't rely solely on the final letter score -# distance. -MIN_FINAL_CHAR_DISTANCE = 5 - -# Minimum Visual vs Logical model score difference. -# If the difference is below this, don't rely at all on the model score -# distance. -MIN_MODEL_DISTANCE = 0.01 - -VISUAL_HEBREW_NAME = "ISO-8859-8" -LOGICAL_HEBREW_NAME = "windows-1255" - - class HebrewProber(CharSetProber): + # windows-1255 / ISO-8859-8 code points of interest + FINAL_KAF = 0xea + NORMAL_KAF = 0xeb + FINAL_MEM = 0xed + NORMAL_MEM = 0xee + FINAL_NUN = 0xef + NORMAL_NUN = 0xf0 + FINAL_PE = 0xf3 + NORMAL_PE = 0xf4 + FINAL_TSADI = 0xf5 + NORMAL_TSADI = 0xf6 + + # Minimum Visual vs Logical final letter score difference. + # If the difference is below this, don't rely solely on the final letter score + # distance. + MIN_FINAL_CHAR_DISTANCE = 5 + + # Minimum Visual vs Logical model score difference. + # If the difference is below this, don't rely at all on the model score + # distance. + MIN_MODEL_DISTANCE = 0.01 + + VISUAL_HEBREW_NAME = "ISO-8859-8" + LOGICAL_HEBREW_NAME = "windows-1255" + def __init__(self): - CharSetProber.__init__(self) - self._mLogicalProber = None - self._mVisualProber = None + super(HebrewProber, self).__init__() + self._final_char_logical_score = None + self._final_char_visual_score = None + self._prev = None + self._before_prev = None + self._logical_prober = None + self._visual_prober = None self.reset() def reset(self): - self._mFinalCharLogicalScore = 0 - self._mFinalCharVisualScore = 0 + self._final_char_logical_score = 0 + self._final_char_visual_score = 0 # The two last characters seen in the previous buffer, # mPrev and mBeforePrev are initialized to space in order to simulate # a word delimiter at the beginning of the data - self._mPrev = ' ' - self._mBeforePrev = ' ' + self._prev = ' ' + self._before_prev = ' ' # These probers are owned by the group prober. def set_model_probers(self, logicalProber, visualProber): - self._mLogicalProber = logicalProber - self._mVisualProber = visualProber + self._logical_prober = logicalProber + self._visual_prober = visualProber def is_final(self, c): - return wrap_ord(c) in [FINAL_KAF, FINAL_MEM, FINAL_NUN, FINAL_PE, - FINAL_TSADI] + return c in [self.FINAL_KAF, self.FINAL_MEM, self.FINAL_NUN, + self.FINAL_PE, self.FINAL_TSADI] def is_non_final(self, c): # The normal Tsadi is not a good Non-Final letter due to words like @@ -188,9 +190,10 @@ class HebrewProber(CharSetProber): # for example legally end with a Non-Final Pe or Kaf. However, the # benefit of these letters as Non-Final letters outweighs the damage # since these words are quite rare. - return wrap_ord(c) in [NORMAL_KAF, NORMAL_MEM, NORMAL_NUN, NORMAL_PE] + return c in [self.NORMAL_KAF, self.NORMAL_MEM, + self.NORMAL_NUN, self.NORMAL_PE] - def feed(self, aBuf): + def feed(self, byte_str): # Final letter analysis for logical-visual decision. # Look for evidence that the received buffer is either logical Hebrew # or visual Hebrew. @@ -217,67 +220,73 @@ class HebrewProber(CharSetProber): # We automatically filter out all 7-bit characters (replace them with # spaces) so the word boundary detection works properly. [MAP] - if self.get_state() == eNotMe: + if self.state == ProbingState.NOT_ME: # Both model probers say it's not them. No reason to continue. - return eNotMe + return ProbingState.NOT_ME - aBuf = self.filter_high_bit_only(aBuf) + byte_str = self.filter_high_byte_only(byte_str) - for cur in aBuf: + for cur in byte_str: if cur == ' ': # We stand on a space - a word just ended - if self._mBeforePrev != ' ': - # next-to-last char was not a space so self._mPrev is not a + if self._before_prev != ' ': + # next-to-last char was not a space so self._prev is not a # 1 letter word - if self.is_final(self._mPrev): + if self.is_final(self._prev): # case (1) [-2:not space][-1:final letter][cur:space] - self._mFinalCharLogicalScore += 1 - elif self.is_non_final(self._mPrev): + self._final_char_logical_score += 1 + elif self.is_non_final(self._prev): # case (2) [-2:not space][-1:Non-Final letter][ # cur:space] - self._mFinalCharVisualScore += 1 + self._final_char_visual_score += 1 else: # Not standing on a space - if ((self._mBeforePrev == ' ') and - (self.is_final(self._mPrev)) and (cur != ' ')): + if ((self._before_prev == ' ') and + (self.is_final(self._prev)) and (cur != ' ')): # case (3) [-2:space][-1:final letter][cur:not space] - self._mFinalCharVisualScore += 1 - self._mBeforePrev = self._mPrev - self._mPrev = cur + self._final_char_visual_score += 1 + self._before_prev = self._prev + self._prev = cur # Forever detecting, till the end or until both model probers return - # eNotMe (handled above) - return eDetecting + # ProbingState.NOT_ME (handled above) + return ProbingState.DETECTING - def get_charset_name(self): + @property + def charset_name(self): # Make the decision: is it Logical or Visual? # If the final letter score distance is dominant enough, rely on it. - finalsub = self._mFinalCharLogicalScore - self._mFinalCharVisualScore - if finalsub >= MIN_FINAL_CHAR_DISTANCE: - return LOGICAL_HEBREW_NAME - if finalsub <= -MIN_FINAL_CHAR_DISTANCE: - return VISUAL_HEBREW_NAME + finalsub = self._final_char_logical_score - self._final_char_visual_score + if finalsub >= self.MIN_FINAL_CHAR_DISTANCE: + return self.LOGICAL_HEBREW_NAME + if finalsub <= -self.MIN_FINAL_CHAR_DISTANCE: + return self.VISUAL_HEBREW_NAME # It's not dominant enough, try to rely on the model scores instead. - modelsub = (self._mLogicalProber.get_confidence() - - self._mVisualProber.get_confidence()) - if modelsub > MIN_MODEL_DISTANCE: - return LOGICAL_HEBREW_NAME - if modelsub < -MIN_MODEL_DISTANCE: - return VISUAL_HEBREW_NAME + modelsub = (self._logical_prober.get_confidence() + - self._visual_prober.get_confidence()) + if modelsub > self.MIN_MODEL_DISTANCE: + return self.LOGICAL_HEBREW_NAME + if modelsub < -self.MIN_MODEL_DISTANCE: + return self.VISUAL_HEBREW_NAME # Still no good, back to final letter distance, maybe it'll save the # day. if finalsub < 0.0: - return VISUAL_HEBREW_NAME + return self.VISUAL_HEBREW_NAME # (finalsub > 0 - Logical) or (don't know what to do) default to # Logical. - return LOGICAL_HEBREW_NAME + return self.LOGICAL_HEBREW_NAME - def get_state(self): + @property + def language(self): + return 'Hebrew' + + @property + def state(self): # Remain active as long as any of the model probers are active. - if (self._mLogicalProber.get_state() == eNotMe) and \ - (self._mVisualProber.get_state() == eNotMe): - return eNotMe - return eDetecting + if (self._logical_prober.state == ProbingState.NOT_ME) and \ + (self._visual_prober.state == ProbingState.NOT_ME): + return ProbingState.NOT_ME + return ProbingState.DETECTING diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/jisfreq.py b/lib/python3.6/site-packages/pip/_vendor/chardet/jisfreq.py similarity index 54% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/jisfreq.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/jisfreq.py index 064345b..83fc082 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/jisfreq.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/jisfreq.py @@ -46,7 +46,7 @@ JIS_TYPICAL_DISTRIBUTION_RATIO = 3.0 # Char to FreqOrder table , JIS_TABLE_SIZE = 4368 -JISCharToFreqOrder = ( +JIS_CHAR_TO_FREQ_ORDER = ( 40, 1, 6, 182, 152, 180, 295,2127, 285, 381,3295,4304,3068,4606,3165,3510, # 16 3511,1822,2785,4607,1193,2226,5070,4608, 171,2996,1247, 18, 179,5071, 856,1661, # 32 1262,5072, 619, 127,3431,3512,3230,1899,1700, 232, 228,1294,1298, 284, 283,2041, # 48 @@ -320,250 +320,6 @@ JISCharToFreqOrder = ( 2413,2477,1216,2725,2159, 334,3840,1328,3624,2921,1525,4132, 564,1056, 891,4363, # 4336 1444,1698,2385,2251,3729,1365,2281,2235,1717,6188, 864,3841,2515, 444, 527,2767, # 4352 2922,3625, 544, 461,6189, 566, 209,2437,3398,2098,1065,2068,3331,3626,3257,2137, # 4368 #last 512 -#Everything below is of no interest for detection purpose -2138,2122,3730,2888,1995,1820,1044,6190,6191,6192,6193,6194,6195,6196,6197,6198, # 4384 -6199,6200,6201,6202,6203,6204,6205,4670,6206,6207,6208,6209,6210,6211,6212,6213, # 4400 -6214,6215,6216,6217,6218,6219,6220,6221,6222,6223,6224,6225,6226,6227,6228,6229, # 4416 -6230,6231,6232,6233,6234,6235,6236,6237,3187,6238,6239,3969,6240,6241,6242,6243, # 4432 -6244,4671,6245,6246,4672,6247,6248,4133,6249,6250,4364,6251,2923,2556,2613,4673, # 4448 -4365,3970,6252,6253,6254,6255,4674,6256,6257,6258,2768,2353,4366,4675,4676,3188, # 4464 -4367,3463,6259,4134,4677,4678,6260,2267,6261,3842,3332,4368,3543,6262,6263,6264, # 4480 -3013,1954,1928,4135,4679,6265,6266,2478,3091,6267,4680,4369,6268,6269,1699,6270, # 4496 -3544,4136,4681,6271,4137,6272,4370,2804,6273,6274,2593,3971,3972,4682,6275,2236, # 4512 -4683,6276,6277,4684,6278,6279,4138,3973,4685,6280,6281,3258,6282,6283,6284,6285, # 4528 -3974,4686,2841,3975,6286,6287,3545,6288,6289,4139,4687,4140,6290,4141,6291,4142, # 4544 -6292,6293,3333,6294,6295,6296,4371,6297,3399,6298,6299,4372,3976,6300,6301,6302, # 4560 -4373,6303,6304,3843,3731,6305,4688,4374,6306,6307,3259,2294,6308,3732,2530,4143, # 4576 -6309,4689,6310,6311,6312,3048,6313,6314,4690,3733,2237,6315,6316,2282,3334,6317, # 4592 -6318,3844,6319,6320,4691,6321,3400,4692,6322,4693,6323,3049,6324,4375,6325,3977, # 4608 -6326,6327,6328,3546,6329,4694,3335,6330,4695,4696,6331,6332,6333,6334,4376,3978, # 4624 -6335,4697,3979,4144,6336,3980,4698,6337,6338,6339,6340,6341,4699,4700,4701,6342, # 4640 -6343,4702,6344,6345,4703,6346,6347,4704,6348,4705,4706,3135,6349,4707,6350,4708, # 4656 -6351,4377,6352,4709,3734,4145,6353,2506,4710,3189,6354,3050,4711,3981,6355,3547, # 4672 -3014,4146,4378,3735,2651,3845,3260,3136,2224,1986,6356,3401,6357,4712,2594,3627, # 4688 -3137,2573,3736,3982,4713,3628,4714,4715,2682,3629,4716,6358,3630,4379,3631,6359, # 4704 -6360,6361,3983,6362,6363,6364,6365,4147,3846,4717,6366,6367,3737,2842,6368,4718, # 4720 -2628,6369,3261,6370,2386,6371,6372,3738,3984,4719,3464,4720,3402,6373,2924,3336, # 4736 -4148,2866,6374,2805,3262,4380,2704,2069,2531,3138,2806,2984,6375,2769,6376,4721, # 4752 -4722,3403,6377,6378,3548,6379,6380,2705,3092,1979,4149,2629,3337,2889,6381,3338, # 4768 -4150,2557,3339,4381,6382,3190,3263,3739,6383,4151,4723,4152,2558,2574,3404,3191, # 4784 -6384,6385,4153,6386,4724,4382,6387,6388,4383,6389,6390,4154,6391,4725,3985,6392, # 4800 -3847,4155,6393,6394,6395,6396,6397,3465,6398,4384,6399,6400,6401,6402,6403,6404, # 4816 -4156,6405,6406,6407,6408,2123,6409,6410,2326,3192,4726,6411,6412,6413,6414,4385, # 4832 -4157,6415,6416,4158,6417,3093,3848,6418,3986,6419,6420,3849,6421,6422,6423,4159, # 4848 -6424,6425,4160,6426,3740,6427,6428,6429,6430,3987,6431,4727,6432,2238,6433,6434, # 4864 -4386,3988,6435,6436,3632,6437,6438,2843,6439,6440,6441,6442,3633,6443,2958,6444, # 4880 -6445,3466,6446,2364,4387,3850,6447,4388,2959,3340,6448,3851,6449,4728,6450,6451, # 4896 -3264,4729,6452,3193,6453,4389,4390,2706,3341,4730,6454,3139,6455,3194,6456,3051, # 4912 -2124,3852,1602,4391,4161,3853,1158,3854,4162,3989,4392,3990,4731,4732,4393,2040, # 4928 -4163,4394,3265,6457,2807,3467,3855,6458,6459,6460,3991,3468,4733,4734,6461,3140, # 4944 -2960,6462,4735,6463,6464,6465,6466,4736,4737,4738,4739,6467,6468,4164,2403,3856, # 4960 -6469,6470,2770,2844,6471,4740,6472,6473,6474,6475,6476,6477,6478,3195,6479,4741, # 4976 -4395,6480,2867,6481,4742,2808,6482,2493,4165,6483,6484,6485,6486,2295,4743,6487, # 4992 -6488,6489,3634,6490,6491,6492,6493,6494,6495,6496,2985,4744,6497,6498,4745,6499, # 5008 -6500,2925,3141,4166,6501,6502,4746,6503,6504,4747,6505,6506,6507,2890,6508,6509, # 5024 -6510,6511,6512,6513,6514,6515,6516,6517,6518,6519,3469,4167,6520,6521,6522,4748, # 5040 -4396,3741,4397,4749,4398,3342,2125,4750,6523,4751,4752,4753,3052,6524,2961,4168, # 5056 -6525,4754,6526,4755,4399,2926,4169,6527,3857,6528,4400,4170,6529,4171,6530,6531, # 5072 -2595,6532,6533,6534,6535,3635,6536,6537,6538,6539,6540,6541,6542,4756,6543,6544, # 5088 -6545,6546,6547,6548,4401,6549,6550,6551,6552,4402,3405,4757,4403,6553,6554,6555, # 5104 -4172,3742,6556,6557,6558,3992,3636,6559,6560,3053,2726,6561,3549,4173,3054,4404, # 5120 -6562,6563,3993,4405,3266,3550,2809,4406,6564,6565,6566,4758,4759,6567,3743,6568, # 5136 -4760,3744,4761,3470,6569,6570,6571,4407,6572,3745,4174,6573,4175,2810,4176,3196, # 5152 -4762,6574,4177,6575,6576,2494,2891,3551,6577,6578,3471,6579,4408,6580,3015,3197, # 5168 -6581,3343,2532,3994,3858,6582,3094,3406,4409,6583,2892,4178,4763,4410,3016,4411, # 5184 -6584,3995,3142,3017,2683,6585,4179,6586,6587,4764,4412,6588,6589,4413,6590,2986, # 5200 -6591,2962,3552,6592,2963,3472,6593,6594,4180,4765,6595,6596,2225,3267,4414,6597, # 5216 -3407,3637,4766,6598,6599,3198,6600,4415,6601,3859,3199,6602,3473,4767,2811,4416, # 5232 -1856,3268,3200,2575,3996,3997,3201,4417,6603,3095,2927,6604,3143,6605,2268,6606, # 5248 -3998,3860,3096,2771,6607,6608,3638,2495,4768,6609,3861,6610,3269,2745,4769,4181, # 5264 -3553,6611,2845,3270,6612,6613,6614,3862,6615,6616,4770,4771,6617,3474,3999,4418, # 5280 -4419,6618,3639,3344,6619,4772,4182,6620,2126,6621,6622,6623,4420,4773,6624,3018, # 5296 -6625,4774,3554,6626,4183,2025,3746,6627,4184,2707,6628,4421,4422,3097,1775,4185, # 5312 -3555,6629,6630,2868,6631,6632,4423,6633,6634,4424,2414,2533,2928,6635,4186,2387, # 5328 -6636,4775,6637,4187,6638,1891,4425,3202,3203,6639,6640,4776,6641,3345,6642,6643, # 5344 -3640,6644,3475,3346,3641,4000,6645,3144,6646,3098,2812,4188,3642,3204,6647,3863, # 5360 -3476,6648,3864,6649,4426,4001,6650,6651,6652,2576,6653,4189,4777,6654,6655,6656, # 5376 -2846,6657,3477,3205,4002,6658,4003,6659,3347,2252,6660,6661,6662,4778,6663,6664, # 5392 -6665,6666,6667,6668,6669,4779,4780,2048,6670,3478,3099,6671,3556,3747,4004,6672, # 5408 -6673,6674,3145,4005,3748,6675,6676,6677,6678,6679,3408,6680,6681,6682,6683,3206, # 5424 -3207,6684,6685,4781,4427,6686,4782,4783,4784,6687,6688,6689,4190,6690,6691,3479, # 5440 -6692,2746,6693,4428,6694,6695,6696,6697,6698,6699,4785,6700,6701,3208,2727,6702, # 5456 -3146,6703,6704,3409,2196,6705,4429,6706,6707,6708,2534,1996,6709,6710,6711,2747, # 5472 -6712,6713,6714,4786,3643,6715,4430,4431,6716,3557,6717,4432,4433,6718,6719,6720, # 5488 -6721,3749,6722,4006,4787,6723,6724,3644,4788,4434,6725,6726,4789,2772,6727,6728, # 5504 -6729,6730,6731,2708,3865,2813,4435,6732,6733,4790,4791,3480,6734,6735,6736,6737, # 5520 -4436,3348,6738,3410,4007,6739,6740,4008,6741,6742,4792,3411,4191,6743,6744,6745, # 5536 -6746,6747,3866,6748,3750,6749,6750,6751,6752,6753,6754,6755,3867,6756,4009,6757, # 5552 -4793,4794,6758,2814,2987,6759,6760,6761,4437,6762,6763,6764,6765,3645,6766,6767, # 5568 -3481,4192,6768,3751,6769,6770,2174,6771,3868,3752,6772,6773,6774,4193,4795,4438, # 5584 -3558,4796,4439,6775,4797,6776,6777,4798,6778,4799,3559,4800,6779,6780,6781,3482, # 5600 -6782,2893,6783,6784,4194,4801,4010,6785,6786,4440,6787,4011,6788,6789,6790,6791, # 5616 -6792,6793,4802,6794,6795,6796,4012,6797,6798,6799,6800,3349,4803,3483,6801,4804, # 5632 -4195,6802,4013,6803,6804,4196,6805,4014,4015,6806,2847,3271,2848,6807,3484,6808, # 5648 -6809,6810,4441,6811,4442,4197,4443,3272,4805,6812,3412,4016,1579,6813,6814,4017, # 5664 -6815,3869,6816,2964,6817,4806,6818,6819,4018,3646,6820,6821,4807,4019,4020,6822, # 5680 -6823,3560,6824,6825,4021,4444,6826,4198,6827,6828,4445,6829,6830,4199,4808,6831, # 5696 -6832,6833,3870,3019,2458,6834,3753,3413,3350,6835,4809,3871,4810,3561,4446,6836, # 5712 -6837,4447,4811,4812,6838,2459,4448,6839,4449,6840,6841,4022,3872,6842,4813,4814, # 5728 -6843,6844,4815,4200,4201,4202,6845,4023,6846,6847,4450,3562,3873,6848,6849,4816, # 5744 -4817,6850,4451,4818,2139,6851,3563,6852,6853,3351,6854,6855,3352,4024,2709,3414, # 5760 -4203,4452,6856,4204,6857,6858,3874,3875,6859,6860,4819,6861,6862,6863,6864,4453, # 5776 -3647,6865,6866,4820,6867,6868,6869,6870,4454,6871,2869,6872,6873,4821,6874,3754, # 5792 -6875,4822,4205,6876,6877,6878,3648,4206,4455,6879,4823,6880,4824,3876,6881,3055, # 5808 -4207,6882,3415,6883,6884,6885,4208,4209,6886,4210,3353,6887,3354,3564,3209,3485, # 5824 -2652,6888,2728,6889,3210,3755,6890,4025,4456,6891,4825,6892,6893,6894,6895,4211, # 5840 -6896,6897,6898,4826,6899,6900,4212,6901,4827,6902,2773,3565,6903,4828,6904,6905, # 5856 -6906,6907,3649,3650,6908,2849,3566,6909,3567,3100,6910,6911,6912,6913,6914,6915, # 5872 -4026,6916,3355,4829,3056,4457,3756,6917,3651,6918,4213,3652,2870,6919,4458,6920, # 5888 -2438,6921,6922,3757,2774,4830,6923,3356,4831,4832,6924,4833,4459,3653,2507,6925, # 5904 -4834,2535,6926,6927,3273,4027,3147,6928,3568,6929,6930,6931,4460,6932,3877,4461, # 5920 -2729,3654,6933,6934,6935,6936,2175,4835,2630,4214,4028,4462,4836,4215,6937,3148, # 5936 -4216,4463,4837,4838,4217,6938,6939,2850,4839,6940,4464,6941,6942,6943,4840,6944, # 5952 -4218,3274,4465,6945,6946,2710,6947,4841,4466,6948,6949,2894,6950,6951,4842,6952, # 5968 -4219,3057,2871,6953,6954,6955,6956,4467,6957,2711,6958,6959,6960,3275,3101,4843, # 5984 -6961,3357,3569,6962,4844,6963,6964,4468,4845,3570,6965,3102,4846,3758,6966,4847, # 6000 -3878,4848,4849,4029,6967,2929,3879,4850,4851,6968,6969,1733,6970,4220,6971,6972, # 6016 -6973,6974,6975,6976,4852,6977,6978,6979,6980,6981,6982,3759,6983,6984,6985,3486, # 6032 -3487,6986,3488,3416,6987,6988,6989,6990,6991,6992,6993,6994,6995,6996,6997,4853, # 6048 -6998,6999,4030,7000,7001,3211,7002,7003,4221,7004,7005,3571,4031,7006,3572,7007, # 6064 -2614,4854,2577,7008,7009,2965,3655,3656,4855,2775,3489,3880,4222,4856,3881,4032, # 6080 -3882,3657,2730,3490,4857,7010,3149,7011,4469,4858,2496,3491,4859,2283,7012,7013, # 6096 -7014,2365,4860,4470,7015,7016,3760,7017,7018,4223,1917,7019,7020,7021,4471,7022, # 6112 -2776,4472,7023,7024,7025,7026,4033,7027,3573,4224,4861,4034,4862,7028,7029,1929, # 6128 -3883,4035,7030,4473,3058,7031,2536,3761,3884,7032,4036,7033,2966,2895,1968,4474, # 6144 -3276,4225,3417,3492,4226,2105,7034,7035,1754,2596,3762,4227,4863,4475,3763,4864, # 6160 -3764,2615,2777,3103,3765,3658,3418,4865,2296,3766,2815,7036,7037,7038,3574,2872, # 6176 -3277,4476,7039,4037,4477,7040,7041,4038,7042,7043,7044,7045,7046,7047,2537,7048, # 6192 -7049,7050,7051,7052,7053,7054,4478,7055,7056,3767,3659,4228,3575,7057,7058,4229, # 6208 -7059,7060,7061,3660,7062,3212,7063,3885,4039,2460,7064,7065,7066,7067,7068,7069, # 6224 -7070,7071,7072,7073,7074,4866,3768,4867,7075,7076,7077,7078,4868,3358,3278,2653, # 6240 -7079,7080,4479,3886,7081,7082,4869,7083,7084,7085,7086,7087,7088,2538,7089,7090, # 6256 -7091,4040,3150,3769,4870,4041,2896,3359,4230,2930,7092,3279,7093,2967,4480,3213, # 6272 -4481,3661,7094,7095,7096,7097,7098,7099,7100,7101,7102,2461,3770,7103,7104,4231, # 6288 -3151,7105,7106,7107,4042,3662,7108,7109,4871,3663,4872,4043,3059,7110,7111,7112, # 6304 -3493,2988,7113,4873,7114,7115,7116,3771,4874,7117,7118,4232,4875,7119,3576,2336, # 6320 -4876,7120,4233,3419,4044,4877,4878,4482,4483,4879,4484,4234,7121,3772,4880,1045, # 6336 -3280,3664,4881,4882,7122,7123,7124,7125,4883,7126,2778,7127,4485,4486,7128,4884, # 6352 -3214,3887,7129,7130,3215,7131,4885,4045,7132,7133,4046,7134,7135,7136,7137,7138, # 6368 -7139,7140,7141,7142,7143,4235,7144,4886,7145,7146,7147,4887,7148,7149,7150,4487, # 6384 -4047,4488,7151,7152,4888,4048,2989,3888,7153,3665,7154,4049,7155,7156,7157,7158, # 6400 -7159,7160,2931,4889,4890,4489,7161,2631,3889,4236,2779,7162,7163,4891,7164,3060, # 6416 -7165,1672,4892,7166,4893,4237,3281,4894,7167,7168,3666,7169,3494,7170,7171,4050, # 6432 -7172,7173,3104,3360,3420,4490,4051,2684,4052,7174,4053,7175,7176,7177,2253,4054, # 6448 -7178,7179,4895,7180,3152,3890,3153,4491,3216,7181,7182,7183,2968,4238,4492,4055, # 6464 -7184,2990,7185,2479,7186,7187,4493,7188,7189,7190,7191,7192,4896,7193,4897,2969, # 6480 -4494,4898,7194,3495,7195,7196,4899,4495,7197,3105,2731,7198,4900,7199,7200,7201, # 6496 -4056,7202,3361,7203,7204,4496,4901,4902,7205,4497,7206,7207,2315,4903,7208,4904, # 6512 -7209,4905,2851,7210,7211,3577,7212,3578,4906,7213,4057,3667,4907,7214,4058,2354, # 6528 -3891,2376,3217,3773,7215,7216,7217,7218,7219,4498,7220,4908,3282,2685,7221,3496, # 6544 -4909,2632,3154,4910,7222,2337,7223,4911,7224,7225,7226,4912,4913,3283,4239,4499, # 6560 -7227,2816,7228,7229,7230,7231,7232,7233,7234,4914,4500,4501,7235,7236,7237,2686, # 6576 -7238,4915,7239,2897,4502,7240,4503,7241,2516,7242,4504,3362,3218,7243,7244,7245, # 6592 -4916,7246,7247,4505,3363,7248,7249,7250,7251,3774,4506,7252,7253,4917,7254,7255, # 6608 -3284,2991,4918,4919,3219,3892,4920,3106,3497,4921,7256,7257,7258,4922,7259,4923, # 6624 -3364,4507,4508,4059,7260,4240,3498,7261,7262,4924,7263,2992,3893,4060,3220,7264, # 6640 -7265,7266,7267,7268,7269,4509,3775,7270,2817,7271,4061,4925,4510,3776,7272,4241, # 6656 -4511,3285,7273,7274,3499,7275,7276,7277,4062,4512,4926,7278,3107,3894,7279,7280, # 6672 -4927,7281,4513,7282,7283,3668,7284,7285,4242,4514,4243,7286,2058,4515,4928,4929, # 6688 -4516,7287,3286,4244,7288,4517,7289,7290,7291,3669,7292,7293,4930,4931,4932,2355, # 6704 -4933,7294,2633,4518,7295,4245,7296,7297,4519,7298,7299,4520,4521,4934,7300,4246, # 6720 -4522,7301,7302,7303,3579,7304,4247,4935,7305,4936,7306,7307,7308,7309,3777,7310, # 6736 -4523,7311,7312,7313,4248,3580,7314,4524,3778,4249,7315,3581,7316,3287,7317,3221, # 6752 -7318,4937,7319,7320,7321,7322,7323,7324,4938,4939,7325,4525,7326,7327,7328,4063, # 6768 -7329,7330,4940,7331,7332,4941,7333,4526,7334,3500,2780,1741,4942,2026,1742,7335, # 6784 -7336,3582,4527,2388,7337,7338,7339,4528,7340,4250,4943,7341,7342,7343,4944,7344, # 6800 -7345,7346,3020,7347,4945,7348,7349,7350,7351,3895,7352,3896,4064,3897,7353,7354, # 6816 -7355,4251,7356,7357,3898,7358,3779,7359,3780,3288,7360,7361,4529,7362,4946,4530, # 6832 -2027,7363,3899,4531,4947,3222,3583,7364,4948,7365,7366,7367,7368,4949,3501,4950, # 6848 -3781,4951,4532,7369,2517,4952,4252,4953,3155,7370,4954,4955,4253,2518,4533,7371, # 6864 -7372,2712,4254,7373,7374,7375,3670,4956,3671,7376,2389,3502,4065,7377,2338,7378, # 6880 -7379,7380,7381,3061,7382,4957,7383,7384,7385,7386,4958,4534,7387,7388,2993,7389, # 6896 -3062,7390,4959,7391,7392,7393,4960,3108,4961,7394,4535,7395,4962,3421,4536,7396, # 6912 -4963,7397,4964,1857,7398,4965,7399,7400,2176,3584,4966,7401,7402,3422,4537,3900, # 6928 -3585,7403,3782,7404,2852,7405,7406,7407,4538,3783,2654,3423,4967,4539,7408,3784, # 6944 -3586,2853,4540,4541,7409,3901,7410,3902,7411,7412,3785,3109,2327,3903,7413,7414, # 6960 -2970,4066,2932,7415,7416,7417,3904,3672,3424,7418,4542,4543,4544,7419,4968,7420, # 6976 -7421,4255,7422,7423,7424,7425,7426,4067,7427,3673,3365,4545,7428,3110,2559,3674, # 6992 -7429,7430,3156,7431,7432,3503,7433,3425,4546,7434,3063,2873,7435,3223,4969,4547, # 7008 -4548,2898,4256,4068,7436,4069,3587,3786,2933,3787,4257,4970,4971,3788,7437,4972, # 7024 -3064,7438,4549,7439,7440,7441,7442,7443,4973,3905,7444,2874,7445,7446,7447,7448, # 7040 -3021,7449,4550,3906,3588,4974,7450,7451,3789,3675,7452,2578,7453,4070,7454,7455, # 7056 -7456,4258,3676,7457,4975,7458,4976,4259,3790,3504,2634,4977,3677,4551,4260,7459, # 7072 -7460,7461,7462,3907,4261,4978,7463,7464,7465,7466,4979,4980,7467,7468,2213,4262, # 7088 -7469,7470,7471,3678,4981,7472,2439,7473,4263,3224,3289,7474,3908,2415,4982,7475, # 7104 -4264,7476,4983,2655,7477,7478,2732,4552,2854,2875,7479,7480,4265,7481,4553,4984, # 7120 -7482,7483,4266,7484,3679,3366,3680,2818,2781,2782,3367,3589,4554,3065,7485,4071, # 7136 -2899,7486,7487,3157,2462,4072,4555,4073,4985,4986,3111,4267,2687,3368,4556,4074, # 7152 -3791,4268,7488,3909,2783,7489,2656,1962,3158,4557,4987,1963,3159,3160,7490,3112, # 7168 -4988,4989,3022,4990,4991,3792,2855,7491,7492,2971,4558,7493,7494,4992,7495,7496, # 7184 -7497,7498,4993,7499,3426,4559,4994,7500,3681,4560,4269,4270,3910,7501,4075,4995, # 7200 -4271,7502,7503,4076,7504,4996,7505,3225,4997,4272,4077,2819,3023,7506,7507,2733, # 7216 -4561,7508,4562,7509,3369,3793,7510,3590,2508,7511,7512,4273,3113,2994,2616,7513, # 7232 -7514,7515,7516,7517,7518,2820,3911,4078,2748,7519,7520,4563,4998,7521,7522,7523, # 7248 -7524,4999,4274,7525,4564,3682,2239,4079,4565,7526,7527,7528,7529,5000,7530,7531, # 7264 -5001,4275,3794,7532,7533,7534,3066,5002,4566,3161,7535,7536,4080,7537,3162,7538, # 7280 -7539,4567,7540,7541,7542,7543,7544,7545,5003,7546,4568,7547,7548,7549,7550,7551, # 7296 -7552,7553,7554,7555,7556,5004,7557,7558,7559,5005,7560,3795,7561,4569,7562,7563, # 7312 -7564,2821,3796,4276,4277,4081,7565,2876,7566,5006,7567,7568,2900,7569,3797,3912, # 7328 -7570,7571,7572,4278,7573,7574,7575,5007,7576,7577,5008,7578,7579,4279,2934,7580, # 7344 -7581,5009,7582,4570,7583,4280,7584,7585,7586,4571,4572,3913,7587,4573,3505,7588, # 7360 -5010,7589,7590,7591,7592,3798,4574,7593,7594,5011,7595,4281,7596,7597,7598,4282, # 7376 -5012,7599,7600,5013,3163,7601,5014,7602,3914,7603,7604,2734,4575,4576,4577,7605, # 7392 -7606,7607,7608,7609,3506,5015,4578,7610,4082,7611,2822,2901,2579,3683,3024,4579, # 7408 -3507,7612,4580,7613,3226,3799,5016,7614,7615,7616,7617,7618,7619,7620,2995,3290, # 7424 -7621,4083,7622,5017,7623,7624,7625,7626,7627,4581,3915,7628,3291,7629,5018,7630, # 7440 -7631,7632,7633,4084,7634,7635,3427,3800,7636,7637,4582,7638,5019,4583,5020,7639, # 7456 -3916,7640,3801,5021,4584,4283,7641,7642,3428,3591,2269,7643,2617,7644,4585,3592, # 7472 -7645,4586,2902,7646,7647,3227,5022,7648,4587,7649,4284,7650,7651,7652,4588,2284, # 7488 -7653,5023,7654,7655,7656,4589,5024,3802,7657,7658,5025,3508,4590,7659,7660,7661, # 7504 -1969,5026,7662,7663,3684,1821,2688,7664,2028,2509,4285,7665,2823,1841,7666,2689, # 7520 -3114,7667,3917,4085,2160,5027,5028,2972,7668,5029,7669,7670,7671,3593,4086,7672, # 7536 -4591,4087,5030,3803,7673,7674,7675,7676,7677,7678,7679,4286,2366,4592,4593,3067, # 7552 -2328,7680,7681,4594,3594,3918,2029,4287,7682,5031,3919,3370,4288,4595,2856,7683, # 7568 -3509,7684,7685,5032,5033,7686,7687,3804,2784,7688,7689,7690,7691,3371,7692,7693, # 7584 -2877,5034,7694,7695,3920,4289,4088,7696,7697,7698,5035,7699,5036,4290,5037,5038, # 7600 -5039,7700,7701,7702,5040,5041,3228,7703,1760,7704,5042,3229,4596,2106,4089,7705, # 7616 -4597,2824,5043,2107,3372,7706,4291,4090,5044,7707,4091,7708,5045,3025,3805,4598, # 7632 -4292,4293,4294,3373,7709,4599,7710,5046,7711,7712,5047,5048,3806,7713,7714,7715, # 7648 -5049,7716,7717,7718,7719,4600,5050,7720,7721,7722,5051,7723,4295,3429,7724,7725, # 7664 -7726,7727,3921,7728,3292,5052,4092,7729,7730,7731,7732,7733,7734,7735,5053,5054, # 7680 -7736,7737,7738,7739,3922,3685,7740,7741,7742,7743,2635,5055,7744,5056,4601,7745, # 7696 -7746,2560,7747,7748,7749,7750,3923,7751,7752,7753,7754,7755,4296,2903,7756,7757, # 7712 -7758,7759,7760,3924,7761,5057,4297,7762,7763,5058,4298,7764,4093,7765,7766,5059, # 7728 -3925,7767,7768,7769,7770,7771,7772,7773,7774,7775,7776,3595,7777,4299,5060,4094, # 7744 -7778,3293,5061,7779,7780,4300,7781,7782,4602,7783,3596,7784,7785,3430,2367,7786, # 7760 -3164,5062,5063,4301,7787,7788,4095,5064,5065,7789,3374,3115,7790,7791,7792,7793, # 7776 -7794,7795,7796,3597,4603,7797,7798,3686,3116,3807,5066,7799,7800,5067,7801,7802, # 7792 -4604,4302,5068,4303,4096,7803,7804,3294,7805,7806,5069,4605,2690,7807,3026,7808, # 7808 -7809,7810,7811,7812,7813,7814,7815,7816,7817,7818,7819,7820,7821,7822,7823,7824, # 7824 -7825,7826,7827,7828,7829,7830,7831,7832,7833,7834,7835,7836,7837,7838,7839,7840, # 7840 -7841,7842,7843,7844,7845,7846,7847,7848,7849,7850,7851,7852,7853,7854,7855,7856, # 7856 -7857,7858,7859,7860,7861,7862,7863,7864,7865,7866,7867,7868,7869,7870,7871,7872, # 7872 -7873,7874,7875,7876,7877,7878,7879,7880,7881,7882,7883,7884,7885,7886,7887,7888, # 7888 -7889,7890,7891,7892,7893,7894,7895,7896,7897,7898,7899,7900,7901,7902,7903,7904, # 7904 -7905,7906,7907,7908,7909,7910,7911,7912,7913,7914,7915,7916,7917,7918,7919,7920, # 7920 -7921,7922,7923,7924,3926,7925,7926,7927,7928,7929,7930,7931,7932,7933,7934,7935, # 7936 -7936,7937,7938,7939,7940,7941,7942,7943,7944,7945,7946,7947,7948,7949,7950,7951, # 7952 -7952,7953,7954,7955,7956,7957,7958,7959,7960,7961,7962,7963,7964,7965,7966,7967, # 7968 -7968,7969,7970,7971,7972,7973,7974,7975,7976,7977,7978,7979,7980,7981,7982,7983, # 7984 -7984,7985,7986,7987,7988,7989,7990,7991,7992,7993,7994,7995,7996,7997,7998,7999, # 8000 -8000,8001,8002,8003,8004,8005,8006,8007,8008,8009,8010,8011,8012,8013,8014,8015, # 8016 -8016,8017,8018,8019,8020,8021,8022,8023,8024,8025,8026,8027,8028,8029,8030,8031, # 8032 -8032,8033,8034,8035,8036,8037,8038,8039,8040,8041,8042,8043,8044,8045,8046,8047, # 8048 -8048,8049,8050,8051,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8062,8063, # 8064 -8064,8065,8066,8067,8068,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079, # 8080 -8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,8093,8094,8095, # 8096 -8096,8097,8098,8099,8100,8101,8102,8103,8104,8105,8106,8107,8108,8109,8110,8111, # 8112 -8112,8113,8114,8115,8116,8117,8118,8119,8120,8121,8122,8123,8124,8125,8126,8127, # 8128 -8128,8129,8130,8131,8132,8133,8134,8135,8136,8137,8138,8139,8140,8141,8142,8143, # 8144 -8144,8145,8146,8147,8148,8149,8150,8151,8152,8153,8154,8155,8156,8157,8158,8159, # 8160 -8160,8161,8162,8163,8164,8165,8166,8167,8168,8169,8170,8171,8172,8173,8174,8175, # 8176 -8176,8177,8178,8179,8180,8181,8182,8183,8184,8185,8186,8187,8188,8189,8190,8191, # 8192 -8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207, # 8208 -8208,8209,8210,8211,8212,8213,8214,8215,8216,8217,8218,8219,8220,8221,8222,8223, # 8224 -8224,8225,8226,8227,8228,8229,8230,8231,8232,8233,8234,8235,8236,8237,8238,8239, # 8240 -8240,8241,8242,8243,8244,8245,8246,8247,8248,8249,8250,8251,8252,8253,8254,8255, # 8256 -8256,8257,8258,8259,8260,8261,8262,8263,8264,8265,8266,8267,8268,8269,8270,8271) # 8272 +) + -# flake8: noqa diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/jpcntx.py b/lib/python3.6/site-packages/pip/_vendor/chardet/jpcntx.py similarity index 87% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/jpcntx.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/jpcntx.py index 59aeb6a..20044e4 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/jpcntx.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/jpcntx.py @@ -25,13 +25,6 @@ # 02110-1301 USA ######################### END LICENSE BLOCK ######################### -from .compat import wrap_ord - -NUM_OF_CATEGORY = 6 -DONT_KNOW = -1 -ENOUGH_REL_THRESHOLD = 100 -MAX_REL_THRESHOLD = 1000 -MINIMUM_DATA_THRESHOLD = 4 # This is hiragana 2-char sequence table, the number in each cell represents its frequency category jp2CharContext = ( @@ -120,24 +113,35 @@ jp2CharContext = ( (0,4,0,3,0,3,0,3,0,3,5,5,3,3,3,3,4,3,4,3,3,3,4,4,4,3,3,3,3,4,3,5,3,3,1,3,2,4,5,5,5,5,4,3,4,5,5,3,2,2,3,3,3,3,2,3,3,1,2,3,2,4,3,3,3,4,0,4,0,2,0,4,3,2,2,1,2,0,3,0,0,4,1), ) -class JapaneseContextAnalysis: +class JapaneseContextAnalysis(object): + NUM_OF_CATEGORY = 6 + DONT_KNOW = -1 + ENOUGH_REL_THRESHOLD = 100 + MAX_REL_THRESHOLD = 1000 + MINIMUM_DATA_THRESHOLD = 4 + def __init__(self): + self._total_rel = None + self._rel_sample = None + self._need_to_skip_char_num = None + self._last_char_order = None + self._done = None self.reset() def reset(self): - self._mTotalRel = 0 # total sequence received - # category counters, each interger counts sequence in its category - self._mRelSample = [0] * NUM_OF_CATEGORY + self._total_rel = 0 # total sequence received + # category counters, each integer counts sequence in its category + self._rel_sample = [0] * self.NUM_OF_CATEGORY # if last byte in current buffer is not the last byte of a character, # we need to know how many bytes to skip in next buffer - self._mNeedToSkipCharNum = 0 - self._mLastCharOrder = -1 # The order of previous char + self._need_to_skip_char_num = 0 + self._last_char_order = -1 # The order of previous char # If this flag is set to True, detection is done and conclusion has # been made - self._mDone = False + self._done = False - def feed(self, aBuf, aLen): - if self._mDone: + def feed(self, byte_str, num_bytes): + if self._done: return # The buffer we got is byte oriented, and a character may span in more than one @@ -147,81 +151,83 @@ class JapaneseContextAnalysis: # well and analyse the character once it is complete, but since a # character will not make much difference, by simply skipping # this character will simply our logic and improve performance. - i = self._mNeedToSkipCharNum - while i < aLen: - order, charLen = self.get_order(aBuf[i:i + 2]) - i += charLen - if i > aLen: - self._mNeedToSkipCharNum = i - aLen - self._mLastCharOrder = -1 + i = self._need_to_skip_char_num + while i < num_bytes: + order, char_len = self.get_order(byte_str[i:i + 2]) + i += char_len + if i > num_bytes: + self._need_to_skip_char_num = i - num_bytes + self._last_char_order = -1 else: - if (order != -1) and (self._mLastCharOrder != -1): - self._mTotalRel += 1 - if self._mTotalRel > MAX_REL_THRESHOLD: - self._mDone = True + if (order != -1) and (self._last_char_order != -1): + self._total_rel += 1 + if self._total_rel > self.MAX_REL_THRESHOLD: + self._done = True break - self._mRelSample[jp2CharContext[self._mLastCharOrder][order]] += 1 - self._mLastCharOrder = order + self._rel_sample[jp2CharContext[self._last_char_order][order]] += 1 + self._last_char_order = order def got_enough_data(self): - return self._mTotalRel > ENOUGH_REL_THRESHOLD + return self._total_rel > self.ENOUGH_REL_THRESHOLD def get_confidence(self): # This is just one way to calculate confidence. It works well for me. - if self._mTotalRel > MINIMUM_DATA_THRESHOLD: - return (self._mTotalRel - self._mRelSample[0]) / self._mTotalRel + if self._total_rel > self.MINIMUM_DATA_THRESHOLD: + return (self._total_rel - self._rel_sample[0]) / self._total_rel else: - return DONT_KNOW + return self.DONT_KNOW - def get_order(self, aBuf): + def get_order(self, byte_str): return -1, 1 class SJISContextAnalysis(JapaneseContextAnalysis): def __init__(self): - self.charset_name = "SHIFT_JIS" + super(SJISContextAnalysis, self).__init__() + self._charset_name = "SHIFT_JIS" - def get_charset_name(self): - return self.charset_name + @property + def charset_name(self): + return self._charset_name - def get_order(self, aBuf): - if not aBuf: + def get_order(self, byte_str): + if not byte_str: return -1, 1 # find out current char's byte length - first_char = wrap_ord(aBuf[0]) - if ((0x81 <= first_char <= 0x9F) or (0xE0 <= first_char <= 0xFC)): - charLen = 2 + first_char = byte_str[0] + if (0x81 <= first_char <= 0x9F) or (0xE0 <= first_char <= 0xFC): + char_len = 2 if (first_char == 0x87) or (0xFA <= first_char <= 0xFC): - self.charset_name = "CP932" + self._charset_name = "CP932" else: - charLen = 1 + char_len = 1 # return its order if it is hiragana - if len(aBuf) > 1: - second_char = wrap_ord(aBuf[1]) + if len(byte_str) > 1: + second_char = byte_str[1] if (first_char == 202) and (0x9F <= second_char <= 0xF1): - return second_char - 0x9F, charLen + return second_char - 0x9F, char_len - return -1, charLen + return -1, char_len class EUCJPContextAnalysis(JapaneseContextAnalysis): - def get_order(self, aBuf): - if not aBuf: + def get_order(self, byte_str): + if not byte_str: return -1, 1 # find out current char's byte length - first_char = wrap_ord(aBuf[0]) + first_char = byte_str[0] if (first_char == 0x8E) or (0xA1 <= first_char <= 0xFE): - charLen = 2 + char_len = 2 elif first_char == 0x8F: - charLen = 3 + char_len = 3 else: - charLen = 1 + char_len = 1 # return its order if it is hiragana - if len(aBuf) > 1: - second_char = wrap_ord(aBuf[1]) + if len(byte_str) > 1: + second_char = byte_str[1] if (first_char == 0xA4) and (0xA1 <= second_char <= 0xF3): - return second_char - 0xA1, charLen + return second_char - 0xA1, char_len + + return -1, char_len - return -1, charLen -# flake8: noqa diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langbulgarianmodel.py b/lib/python3.6/site-packages/pip/_vendor/chardet/langbulgarianmodel.py similarity index 96% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langbulgarianmodel.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/langbulgarianmodel.py index e5788fc..2aa4fb2 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langbulgarianmodel.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/langbulgarianmodel.py @@ -210,20 +210,19 @@ BulgarianLangModel = ( ) Latin5BulgarianModel = { - 'charToOrderMap': Latin5_BulgarianCharToOrderMap, - 'precedenceMatrix': BulgarianLangModel, - 'mTypicalPositiveRatio': 0.969392, - 'keepEnglishLetter': False, - 'charsetName': "ISO-8859-5" + 'char_to_order_map': Latin5_BulgarianCharToOrderMap, + 'precedence_matrix': BulgarianLangModel, + 'typical_positive_ratio': 0.969392, + 'keep_english_letter': False, + 'charset_name': "ISO-8859-5", + 'language': 'Bulgairan', } Win1251BulgarianModel = { - 'charToOrderMap': win1251BulgarianCharToOrderMap, - 'precedenceMatrix': BulgarianLangModel, - 'mTypicalPositiveRatio': 0.969392, - 'keepEnglishLetter': False, - 'charsetName': "windows-1251" + 'char_to_order_map': win1251BulgarianCharToOrderMap, + 'precedence_matrix': BulgarianLangModel, + 'typical_positive_ratio': 0.969392, + 'keep_english_letter': False, + 'charset_name': "windows-1251", + 'language': 'Bulgarian', } - - -# flake8: noqa diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langcyrillicmodel.py b/lib/python3.6/site-packages/pip/_vendor/chardet/langcyrillicmodel.py similarity index 91% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langcyrillicmodel.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/langcyrillicmodel.py index a86f54b..e5f9a1f 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langcyrillicmodel.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/langcyrillicmodel.py @@ -27,7 +27,7 @@ # KOI8-R language model # Character Mapping Table: -KOI8R_CharToOrderMap = ( +KOI8R_char_to_order_map = ( 255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 @@ -46,7 +46,7 @@ KOI8R_CharToOrderMap = ( 35, 43, 45, 32, 40, 52, 56, 33, 61, 62, 51, 57, 47, 63, 50, 70, # f0 ) -win1251_CharToOrderMap = ( +win1251_char_to_order_map = ( 255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 @@ -65,7 +65,7 @@ win1251_CharToOrderMap = ( 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27, 16, ) -latin5_CharToOrderMap = ( +latin5_char_to_order_map = ( 255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 @@ -84,7 +84,7 @@ latin5_CharToOrderMap = ( 239, 68,240,241,242,243,244,245,246,247,248,249,250,251,252,255, ) -macCyrillic_CharToOrderMap = ( +macCyrillic_char_to_order_map = ( 255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 @@ -103,7 +103,7 @@ macCyrillic_CharToOrderMap = ( 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27,255, ) -IBM855_CharToOrderMap = ( +IBM855_char_to_order_map = ( 255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 @@ -122,7 +122,7 @@ IBM855_CharToOrderMap = ( 250, 18, 62, 20, 51, 25, 57, 30, 47, 29, 63, 22, 50,251,252,255, ) -IBM866_CharToOrderMap = ( +IBM866_char_to_order_map = ( 255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 @@ -279,51 +279,55 @@ RussianLangModel = ( ) Koi8rModel = { - 'charToOrderMap': KOI8R_CharToOrderMap, - 'precedenceMatrix': RussianLangModel, - 'mTypicalPositiveRatio': 0.976601, - 'keepEnglishLetter': False, - 'charsetName': "KOI8-R" + 'char_to_order_map': KOI8R_char_to_order_map, + 'precedence_matrix': RussianLangModel, + 'typical_positive_ratio': 0.976601, + 'keep_english_letter': False, + 'charset_name': "KOI8-R", + 'language': 'Russian', } Win1251CyrillicModel = { - 'charToOrderMap': win1251_CharToOrderMap, - 'precedenceMatrix': RussianLangModel, - 'mTypicalPositiveRatio': 0.976601, - 'keepEnglishLetter': False, - 'charsetName': "windows-1251" + 'char_to_order_map': win1251_char_to_order_map, + 'precedence_matrix': RussianLangModel, + 'typical_positive_ratio': 0.976601, + 'keep_english_letter': False, + 'charset_name': "windows-1251", + 'language': 'Russian', } Latin5CyrillicModel = { - 'charToOrderMap': latin5_CharToOrderMap, - 'precedenceMatrix': RussianLangModel, - 'mTypicalPositiveRatio': 0.976601, - 'keepEnglishLetter': False, - 'charsetName': "ISO-8859-5" + 'char_to_order_map': latin5_char_to_order_map, + 'precedence_matrix': RussianLangModel, + 'typical_positive_ratio': 0.976601, + 'keep_english_letter': False, + 'charset_name': "ISO-8859-5", + 'language': 'Russian', } MacCyrillicModel = { - 'charToOrderMap': macCyrillic_CharToOrderMap, - 'precedenceMatrix': RussianLangModel, - 'mTypicalPositiveRatio': 0.976601, - 'keepEnglishLetter': False, - 'charsetName': "MacCyrillic" -}; + 'char_to_order_map': macCyrillic_char_to_order_map, + 'precedence_matrix': RussianLangModel, + 'typical_positive_ratio': 0.976601, + 'keep_english_letter': False, + 'charset_name': "MacCyrillic", + 'language': 'Russian', +} Ibm866Model = { - 'charToOrderMap': IBM866_CharToOrderMap, - 'precedenceMatrix': RussianLangModel, - 'mTypicalPositiveRatio': 0.976601, - 'keepEnglishLetter': False, - 'charsetName': "IBM866" + 'char_to_order_map': IBM866_char_to_order_map, + 'precedence_matrix': RussianLangModel, + 'typical_positive_ratio': 0.976601, + 'keep_english_letter': False, + 'charset_name': "IBM866", + 'language': 'Russian', } Ibm855Model = { - 'charToOrderMap': IBM855_CharToOrderMap, - 'precedenceMatrix': RussianLangModel, - 'mTypicalPositiveRatio': 0.976601, - 'keepEnglishLetter': False, - 'charsetName': "IBM855" + 'char_to_order_map': IBM855_char_to_order_map, + 'precedence_matrix': RussianLangModel, + 'typical_positive_ratio': 0.976601, + 'keep_english_letter': False, + 'charset_name': "IBM855", + 'language': 'Russian', } - -# flake8: noqa diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langgreekmodel.py b/lib/python3.6/site-packages/pip/_vendor/chardet/langgreekmodel.py similarity index 96% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langgreekmodel.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/langgreekmodel.py index ddb5837..5332221 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langgreekmodel.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/langgreekmodel.py @@ -31,7 +31,7 @@ # 252: 0 - 9 # Character Mapping Table: -Latin7_CharToOrderMap = ( +Latin7_char_to_order_map = ( 255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 @@ -50,7 +50,7 @@ Latin7_CharToOrderMap = ( 9, 8, 14, 7, 2, 12, 28, 23, 42, 24, 64, 75, 19, 26, 27,253, # f0 ) -win1253_CharToOrderMap = ( +win1253_char_to_order_map = ( 255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 @@ -207,19 +207,19 @@ GreekLangModel = ( ) Latin7GreekModel = { - 'charToOrderMap': Latin7_CharToOrderMap, - 'precedenceMatrix': GreekLangModel, - 'mTypicalPositiveRatio': 0.982851, - 'keepEnglishLetter': False, - 'charsetName': "ISO-8859-7" + 'char_to_order_map': Latin7_char_to_order_map, + 'precedence_matrix': GreekLangModel, + 'typical_positive_ratio': 0.982851, + 'keep_english_letter': False, + 'charset_name': "ISO-8859-7", + 'language': 'Greek', } Win1253GreekModel = { - 'charToOrderMap': win1253_CharToOrderMap, - 'precedenceMatrix': GreekLangModel, - 'mTypicalPositiveRatio': 0.982851, - 'keepEnglishLetter': False, - 'charsetName': "windows-1253" + 'char_to_order_map': win1253_char_to_order_map, + 'precedence_matrix': GreekLangModel, + 'typical_positive_ratio': 0.982851, + 'keep_english_letter': False, + 'charset_name': "windows-1253", + 'language': 'Greek', } - -# flake8: noqa diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langhebrewmodel.py b/lib/python3.6/site-packages/pip/_vendor/chardet/langhebrewmodel.py similarity index 97% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langhebrewmodel.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/langhebrewmodel.py index 75f2bc7..58f4c87 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langhebrewmodel.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/langhebrewmodel.py @@ -34,7 +34,7 @@ # Windows-1255 language model # Character Mapping Table: -win1255_CharToOrderMap = ( +WIN1255_CHAR_TO_ORDER_MAP = ( 255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 @@ -59,7 +59,7 @@ win1255_CharToOrderMap = ( # first 1024 sequences: 1.5981% # rest sequences: 0.087% # negative sequences: 0.0015% -HebrewLangModel = ( +HEBREW_LANG_MODEL = ( 0,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,2,3,2,1,2,0,1,0,0, 3,0,3,1,0,0,1,3,2,0,1,1,2,0,2,2,2,1,1,1,1,2,1,1,1,2,0,0,2,2,0,1, 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2, @@ -191,11 +191,10 @@ HebrewLangModel = ( ) Win1255HebrewModel = { - 'charToOrderMap': win1255_CharToOrderMap, - 'precedenceMatrix': HebrewLangModel, - 'mTypicalPositiveRatio': 0.984004, - 'keepEnglishLetter': False, - 'charsetName': "windows-1255" + 'char_to_order_map': WIN1255_CHAR_TO_ORDER_MAP, + 'precedence_matrix': HEBREW_LANG_MODEL, + 'typical_positive_ratio': 0.984004, + 'keep_english_letter': False, + 'charset_name': "windows-1255", + 'language': 'Hebrew', } - -# flake8: noqa diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langhungarianmodel.py b/lib/python3.6/site-packages/pip/_vendor/chardet/langhungarianmodel.py similarity index 96% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langhungarianmodel.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/langhungarianmodel.py index 49d2f0f..bb7c095 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langhungarianmodel.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/langhungarianmodel.py @@ -207,19 +207,19 @@ HungarianLangModel = ( ) Latin2HungarianModel = { - 'charToOrderMap': Latin2_HungarianCharToOrderMap, - 'precedenceMatrix': HungarianLangModel, - 'mTypicalPositiveRatio': 0.947368, - 'keepEnglishLetter': True, - 'charsetName': "ISO-8859-2" + 'char_to_order_map': Latin2_HungarianCharToOrderMap, + 'precedence_matrix': HungarianLangModel, + 'typical_positive_ratio': 0.947368, + 'keep_english_letter': True, + 'charset_name': "ISO-8859-2", + 'language': 'Hungarian', } Win1250HungarianModel = { - 'charToOrderMap': win1250HungarianCharToOrderMap, - 'precedenceMatrix': HungarianLangModel, - 'mTypicalPositiveRatio': 0.947368, - 'keepEnglishLetter': True, - 'charsetName': "windows-1250" + 'char_to_order_map': win1250HungarianCharToOrderMap, + 'precedence_matrix': HungarianLangModel, + 'typical_positive_ratio': 0.947368, + 'keep_english_letter': True, + 'charset_name': "windows-1250", + 'language': 'Hungarian', } - -# flake8: noqa diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langthaimodel.py b/lib/python3.6/site-packages/pip/_vendor/chardet/langthaimodel.py similarity index 98% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langthaimodel.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/langthaimodel.py index 0508b1b..15f94c2 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langthaimodel.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/langthaimodel.py @@ -190,11 +190,10 @@ ThaiLangModel = ( ) TIS620ThaiModel = { - 'charToOrderMap': TIS620CharToOrderMap, - 'precedenceMatrix': ThaiLangModel, - 'mTypicalPositiveRatio': 0.926386, - 'keepEnglishLetter': False, - 'charsetName': "TIS-620" + 'char_to_order_map': TIS620CharToOrderMap, + 'precedence_matrix': ThaiLangModel, + 'typical_positive_ratio': 0.926386, + 'keep_english_letter': False, + 'charset_name': "TIS-620", + 'language': 'Thai', } - -# flake8: noqa diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/langturkishmodel.py b/lib/python3.6/site-packages/pip/_vendor/chardet/langturkishmodel.py new file mode 100644 index 0000000..a427a45 --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/langturkishmodel.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Özgür Baskın - Turkish Language Model +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# 255: Control characters that usually does not exist in any text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 + +# Character Mapping Table: +Latin5_TurkishCharToOrderMap = ( +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255, 23, 37, 47, 39, 29, 52, 36, 45, 53, 60, 16, 49, 20, 46, 42, + 48, 69, 44, 35, 31, 51, 38, 62, 65, 43, 56,255,255,255,255,255, +255, 1, 21, 28, 12, 2, 18, 27, 25, 3, 24, 10, 5, 13, 4, 15, + 26, 64, 7, 8, 9, 14, 32, 57, 58, 11, 22,255,255,255,255,255, +180,179,178,177,176,175,174,173,172,171,170,169,168,167,166,165, +164,163,162,161,160,159,101,158,157,156,155,154,153,152,151,106, +150,149,148,147,146,145,144,100,143,142,141,140,139,138,137,136, + 94, 80, 93,135,105,134,133, 63,132,131,130,129,128,127,126,125, +124,104, 73, 99, 79, 85,123, 54,122, 98, 92,121,120, 91,103,119, + 68,118,117, 97,116,115, 50, 90,114,113,112,111, 55, 41, 40, 86, + 89, 70, 59, 78, 71, 82, 88, 33, 77, 66, 84, 83,110, 75, 61, 96, + 30, 67,109, 74, 87,102, 34, 95, 81,108, 76, 72, 17, 6, 19,107, +) + +TurkishLangModel = ( +3,2,3,3,3,1,3,3,3,3,3,3,3,3,2,1,1,3,3,1,3,3,0,3,3,3,3,3,0,3,1,3, +3,2,1,0,0,1,1,0,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,2,2,0,0,1,0,0,1, +3,2,2,3,3,0,3,3,3,3,3,3,3,2,3,1,0,3,3,1,3,3,0,3,3,3,3,3,0,3,0,3, +3,1,1,0,1,0,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,2,2,0,0,0,1,0,1, +3,3,2,3,3,0,3,3,3,3,3,3,3,2,3,1,1,3,3,0,3,3,1,2,3,3,3,3,0,3,0,3, +3,1,1,0,0,0,1,0,0,0,0,1,1,0,1,2,1,0,0,0,1,0,0,0,0,2,0,0,0,0,0,1, +3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,1,3,3,2,0,3,2,1,2,2,1,3,3,0,0,0,2, +2,2,0,1,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,0,0,1, +3,3,3,2,3,3,1,2,3,3,3,3,3,3,3,1,3,2,1,0,3,2,0,1,2,3,3,2,1,0,0,2, +2,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0, +1,0,1,3,3,1,3,3,3,3,3,3,3,1,2,0,0,2,3,0,2,3,0,0,2,2,2,3,0,3,0,1, +2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,0,3,2,0,2,3,2,3,3,1,0,0,2, +3,2,0,0,1,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,0,2,0,0,1, +3,3,3,2,3,3,2,3,3,3,3,2,3,3,3,0,3,3,0,0,2,1,0,0,2,3,2,2,0,0,0,2, +2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,1,0,2,0,0,1, +3,3,3,2,3,3,3,3,3,3,3,2,3,3,3,0,3,2,0,1,3,2,1,1,3,2,3,2,1,0,0,2, +2,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0, +3,3,3,2,3,3,3,3,3,3,3,2,3,3,3,0,3,2,2,0,2,3,0,0,2,2,2,2,0,0,0,2, +3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,0,1,0,0,0, +3,3,3,3,3,3,3,2,2,2,2,3,2,3,3,0,3,3,1,1,2,2,0,0,2,2,3,2,0,0,1,3, +0,3,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1, +3,3,3,2,3,3,3,2,1,2,2,3,2,3,3,0,3,2,0,0,1,1,0,1,1,2,1,2,0,0,0,1, +0,3,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,0,0, +3,3,3,2,3,3,2,3,2,2,2,3,3,3,3,1,3,1,1,0,3,2,1,1,3,3,2,3,1,0,0,1, +1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,0,0,1, +3,2,2,3,3,0,3,3,3,3,3,3,3,2,2,1,0,3,3,1,3,3,0,1,3,3,2,3,0,3,0,3, +2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, +2,2,2,3,3,0,3,3,3,3,3,3,3,3,3,0,0,3,2,0,3,3,0,3,2,3,3,3,0,3,1,3, +2,0,0,0,0,0,0,0,0,0,0,1,0,1,2,0,1,0,0,0,0,0,0,0,2,2,0,0,1,0,0,1, +3,3,3,1,2,3,3,1,0,0,1,0,0,3,3,2,3,0,0,2,0,0,2,0,2,0,0,0,2,0,2,0, +0,3,1,0,1,0,0,0,2,2,1,0,1,1,2,1,2,2,2,0,2,1,1,0,0,0,2,0,0,0,0,0, +1,2,1,3,3,0,3,3,3,3,3,2,3,0,0,0,0,2,3,0,2,3,1,0,2,3,1,3,0,3,0,2, +3,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,1,3,3,2,2,3,2,2,0,1,2,3,0,1,2,1,0,1,0,0,0,1,0,2,2,0,0,0,1, +1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0, +3,3,3,1,3,3,1,1,3,3,1,1,3,3,1,0,2,1,2,0,2,1,0,0,1,1,2,1,0,0,0,2, +2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,1,0,2,1,3,0,0,2,0,0,3,3,0,3,0,0,1,0,1,2,0,0,1,1,2,2,0,1,0, +0,1,2,1,1,0,1,0,1,1,1,1,1,0,1,1,1,2,2,1,2,0,1,0,0,0,0,0,0,1,0,0, +3,3,3,2,3,2,3,3,0,2,2,2,3,3,3,0,3,0,0,0,2,2,0,1,2,1,1,1,0,0,0,1, +0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, +3,3,3,3,3,3,2,1,2,2,3,3,3,3,2,0,2,0,0,0,2,2,0,0,2,1,3,3,0,0,1,1, +1,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0, +1,1,2,3,3,0,3,3,3,3,3,3,2,2,0,2,0,2,3,2,3,2,2,2,2,2,2,2,1,3,2,3, +2,0,2,1,2,2,2,2,1,1,2,2,1,2,2,1,2,0,0,2,1,1,0,2,1,0,0,1,0,0,0,1, +2,3,3,1,1,1,0,1,1,1,2,3,2,1,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0, +0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,2,2,2,3,2,3,2,2,1,3,3,3,0,2,1,2,0,2,1,0,0,1,1,1,1,1,0,0,1, +2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,2,0,1,0,0,0, +3,3,3,2,3,3,3,3,3,2,3,1,2,3,3,1,2,0,0,0,0,0,0,0,3,2,1,1,0,0,0,0, +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, +3,3,3,2,2,3,3,2,1,1,1,1,1,3,3,0,3,1,0,0,1,1,0,0,3,1,2,1,0,0,0,0, +0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0, +3,3,3,2,2,3,2,2,2,3,2,1,1,3,3,0,3,0,0,0,0,1,0,0,3,1,1,2,0,0,0,1, +1,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, +1,1,1,3,3,0,3,3,3,3,3,2,2,2,1,2,0,2,1,2,2,1,1,0,1,2,2,2,2,2,2,2, +0,0,2,1,2,1,2,1,0,1,1,3,1,2,1,1,2,0,0,2,0,1,0,1,0,1,0,0,0,1,0,1, +3,3,3,1,3,3,3,0,1,1,0,2,2,3,1,0,3,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0, +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,2,0,0,2,2,1,0,0,1,0,0,3,3,1,3,0,0,1,1,0,2,0,3,0,0,0,2,0,1,1, +0,1,2,0,1,2,2,0,2,2,2,2,1,0,2,1,1,0,2,0,2,1,2,0,0,0,0,0,0,0,0,0, +3,3,3,1,3,2,3,2,0,2,2,2,1,3,2,0,2,1,2,0,1,2,0,0,1,0,2,2,0,0,0,2, +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0, +3,3,3,0,3,3,1,1,2,3,1,0,3,2,3,0,3,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0, +1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,3,3,0,3,3,2,3,3,2,2,0,0,0,0,1,2,0,1,3,0,0,0,3,1,1,0,3,0,2, +2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,1,2,2,1,0,3,1,1,1,1,3,3,2,3,0,0,1,0,1,2,0,2,2,0,2,2,0,2,1, +0,2,2,1,1,1,1,0,2,1,1,0,1,1,1,1,2,1,2,1,2,0,1,0,1,0,0,0,0,0,0,0, +3,3,3,0,1,1,3,0,0,1,1,0,0,2,2,0,3,0,0,1,1,0,1,0,0,0,0,0,2,0,0,0, +0,3,1,0,1,0,1,0,2,0,0,1,0,1,0,1,1,1,2,1,1,0,2,0,0,0,0,0,0,0,0,0, +3,3,3,0,2,0,2,0,1,1,1,0,0,3,3,0,2,0,0,1,0,0,2,1,1,0,1,0,1,0,1,0, +0,2,0,1,2,0,2,0,2,1,1,0,1,0,2,1,1,0,2,1,1,0,1,0,0,0,1,1,0,0,0,0, +3,2,3,0,1,0,0,0,0,0,0,0,0,1,2,0,1,0,0,1,0,0,1,0,0,0,0,0,2,0,0,0, +0,0,1,1,0,0,1,0,1,0,0,1,0,0,0,2,1,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,0,0,2,3,0,0,1,0,1,0,2,3,2,3,0,0,1,3,0,2,1,0,0,0,0,2,0,1,0, +0,2,1,0,0,1,1,0,2,1,0,0,1,0,0,1,1,0,1,1,2,0,1,0,0,0,0,1,0,0,0,0, +3,2,2,0,0,1,1,0,0,0,0,0,0,3,1,1,1,0,0,0,0,0,1,0,0,0,0,0,2,0,1,0, +0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0, +0,0,0,3,3,0,2,3,2,2,1,2,2,1,1,2,0,1,3,2,2,2,0,0,2,2,0,0,0,1,2,1, +3,0,2,1,1,0,1,1,1,0,1,2,2,2,1,1,2,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0, +0,1,1,2,3,0,3,3,3,2,2,2,2,1,0,1,0,1,0,1,2,2,0,0,2,2,1,3,1,1,2,1, +0,0,1,1,2,0,1,1,0,0,1,2,0,2,1,1,2,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0, +3,3,2,0,0,3,1,0,0,0,0,0,0,3,2,1,2,0,0,1,0,0,2,0,0,0,0,0,2,0,1,0, +0,2,1,1,0,0,1,0,1,2,0,0,1,1,0,0,2,1,1,1,1,0,2,0,0,0,0,0,0,0,0,0, +3,3,2,0,0,1,0,0,0,0,1,0,0,3,3,2,2,0,0,1,0,0,2,0,1,0,0,0,2,0,1,0, +0,0,1,1,0,0,2,0,2,1,0,0,1,1,2,1,2,0,2,1,2,1,1,1,0,0,1,1,0,0,0,0, +3,3,2,0,0,2,2,0,0,0,1,1,0,2,2,1,3,1,0,1,0,1,2,0,0,0,0,0,1,0,1,0, +0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,2,0,0,0,1,0,0,1,0,0,2,3,1,2,0,0,1,0,0,2,0,0,0,1,0,2,0,2,0, +0,1,1,2,2,1,2,0,2,1,1,0,0,1,1,0,1,1,1,1,2,1,1,0,0,0,0,0,0,0,0,0, +3,3,3,0,2,1,2,1,0,0,1,1,0,3,3,1,2,0,0,1,0,0,2,0,2,0,1,1,2,0,0,0, +0,0,1,1,1,1,2,0,1,1,0,1,1,1,1,0,0,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0, +3,3,3,0,2,2,3,2,0,0,1,0,0,2,3,1,0,0,0,0,0,0,2,0,2,0,0,0,2,0,0,0, +0,1,1,0,0,0,1,0,0,1,0,1,1,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0, +3,2,3,0,0,0,0,0,0,0,1,0,0,2,2,2,2,0,0,1,0,0,2,0,0,0,0,0,2,0,1,0, +0,0,2,1,1,0,1,0,2,1,1,0,0,1,1,2,1,0,2,0,2,0,1,0,0,0,2,0,0,0,0,0, +0,0,0,2,2,0,2,1,1,1,1,2,2,0,0,1,0,1,0,0,1,3,0,0,0,0,1,0,0,2,1,0, +0,0,1,0,1,0,0,0,0,0,2,1,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0, +2,0,0,2,3,0,2,3,1,2,2,0,2,0,0,2,0,2,1,1,1,2,1,0,0,1,2,1,1,2,1,0, +1,0,2,0,1,0,1,1,0,0,2,2,1,2,1,1,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,0,2,1,2,0,0,0,1,0,0,3,2,0,1,0,0,1,0,0,2,0,0,0,1,2,1,0,1,0, +0,0,0,0,1,0,1,0,0,1,0,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0, +0,0,0,2,2,0,2,2,1,1,0,1,1,1,1,1,0,0,1,2,1,1,1,0,1,0,0,0,1,1,1,1, +0,0,2,1,0,1,1,1,0,1,1,2,1,2,1,1,2,0,1,1,2,1,0,2,0,0,0,0,0,0,0,0, +3,2,2,0,0,2,0,0,0,0,0,0,0,2,2,0,2,0,0,1,0,0,2,0,0,0,0,0,2,0,0,0, +0,2,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0, +0,0,0,3,2,0,2,2,0,1,1,0,1,0,0,1,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0, +2,0,1,0,1,0,1,1,0,0,1,2,0,1,0,1,1,0,0,1,0,1,0,2,0,0,0,0,0,0,0,0, +2,2,2,0,1,1,0,0,0,1,0,0,0,1,2,0,1,0,0,1,0,0,1,0,0,0,0,1,2,0,1,0, +0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0, +2,2,2,2,1,0,1,1,1,0,0,0,0,1,2,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0, +1,1,2,0,1,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,2,0,0,0,0,0,1, +0,0,1,2,2,0,2,1,2,1,1,2,2,0,0,0,0,1,0,0,1,1,0,0,2,0,0,0,0,1,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, +2,2,2,0,0,0,1,0,0,0,0,0,0,2,2,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, +0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,2,2,0,1,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,1,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +) + +Latin5TurkishModel = { + 'char_to_order_map': Latin5_TurkishCharToOrderMap, + 'precedence_matrix': TurkishLangModel, + 'typical_positive_ratio': 0.970290, + 'keep_english_letter': True, + 'charset_name': "ISO-8859-9", + 'language': 'Turkish', +} diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/latin1prober.py b/lib/python3.6/site-packages/pip/_vendor/chardet/latin1prober.py similarity index 81% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/latin1prober.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/latin1prober.py index eef3573..7d1e8c2 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/latin1prober.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/latin1prober.py @@ -27,8 +27,7 @@ ######################### END LICENSE BLOCK ######################### from .charsetprober import CharSetProber -from .constants import eNotMe -from .compat import wrap_ord +from .enums import ProbingState FREQ_CAT_NUM = 4 @@ -82,7 +81,7 @@ Latin1_CharToClass = ( # 2 : normal # 3 : very likely Latin1ClassModel = ( - # UDF OTH ASC ASS ACV ACO ASV ASO +# UDF OTH ASC ASS ACV ACO ASV ASO 0, 0, 0, 0, 0, 0, 0, 0, # UDF 0, 3, 3, 3, 3, 3, 3, 3, # OTH 0, 3, 3, 3, 3, 3, 3, 3, # ASC @@ -96,40 +95,47 @@ Latin1ClassModel = ( class Latin1Prober(CharSetProber): def __init__(self): - CharSetProber.__init__(self) + super(Latin1Prober, self).__init__() + self._last_char_class = None + self._freq_counter = None self.reset() def reset(self): - self._mLastCharClass = OTH - self._mFreqCounter = [0] * FREQ_CAT_NUM + self._last_char_class = OTH + self._freq_counter = [0] * FREQ_CAT_NUM CharSetProber.reset(self) - def get_charset_name(self): - return "windows-1252" + @property + def charset_name(self): + return "ISO-8859-1" - def feed(self, aBuf): - aBuf = self.filter_with_english_letters(aBuf) - for c in aBuf: - charClass = Latin1_CharToClass[wrap_ord(c)] - freq = Latin1ClassModel[(self._mLastCharClass * CLASS_NUM) - + charClass] + @property + def language(self): + return "" + + def feed(self, byte_str): + byte_str = self.filter_with_english_letters(byte_str) + for c in byte_str: + char_class = Latin1_CharToClass[c] + freq = Latin1ClassModel[(self._last_char_class * CLASS_NUM) + + char_class] if freq == 0: - self._mState = eNotMe + self._state = ProbingState.NOT_ME break - self._mFreqCounter[freq] += 1 - self._mLastCharClass = charClass + self._freq_counter[freq] += 1 + self._last_char_class = char_class - return self.get_state() + return self.state def get_confidence(self): - if self.get_state() == eNotMe: + if self.state == ProbingState.NOT_ME: return 0.01 - total = sum(self._mFreqCounter) + total = sum(self._freq_counter) if total < 0.01: confidence = 0.0 else: - confidence = ((self._mFreqCounter[3] - self._mFreqCounter[1] * 20.0) + confidence = ((self._freq_counter[3] - self._freq_counter[1] * 20.0) / total) if confidence < 0.0: confidence = 0.0 diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/mbcharsetprober.py b/lib/python3.6/site-packages/pip/_vendor/chardet/mbcharsetprober.py new file mode 100644 index 0000000..6256ecf --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/mbcharsetprober.py @@ -0,0 +1,91 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# Proofpoint, Inc. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetprober import CharSetProber +from .enums import ProbingState, MachineState + + +class MultiByteCharSetProber(CharSetProber): + """ + MultiByteCharSetProber + """ + + def __init__(self, lang_filter=None): + super(MultiByteCharSetProber, self).__init__(lang_filter=lang_filter) + self.distribution_analyzer = None + self.coding_sm = None + self._last_char = [0, 0] + + def reset(self): + super(MultiByteCharSetProber, self).reset() + if self.coding_sm: + self.coding_sm.reset() + if self.distribution_analyzer: + self.distribution_analyzer.reset() + self._last_char = [0, 0] + + @property + def charset_name(self): + raise NotImplementedError + + @property + def language(self): + raise NotImplementedError + + def feed(self, byte_str): + for i in range(len(byte_str)): + coding_state = self.coding_sm.next_state(byte_str[i]) + if coding_state == MachineState.ERROR: + self.logger.debug('%s %s prober hit error at byte %s', + self.charset_name, self.language, i) + self._state = ProbingState.NOT_ME + break + elif coding_state == MachineState.ITS_ME: + self._state = ProbingState.FOUND_IT + break + elif coding_state == MachineState.START: + char_len = self.coding_sm.get_current_charlen() + if i == 0: + self._last_char[1] = byte_str[0] + self.distribution_analyzer.feed(self._last_char, char_len) + else: + self.distribution_analyzer.feed(byte_str[i - 1:i + 1], + char_len) + + self._last_char[0] = byte_str[-1] + + if self.state == ProbingState.DETECTING: + if (self.distribution_analyzer.got_enough_data() and + (self.get_confidence() > self.SHORTCUT_THRESHOLD)): + self._state = ProbingState.FOUND_IT + + return self.state + + def get_confidence(self): + return self.distribution_analyzer.get_confidence() diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/mbcsgroupprober.py b/lib/python3.6/site-packages/pip/_vendor/chardet/mbcsgroupprober.py similarity index 93% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/mbcsgroupprober.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/mbcsgroupprober.py index 03c9dcf..530abe7 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/mbcsgroupprober.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/mbcsgroupprober.py @@ -39,9 +39,9 @@ from .euctwprober import EUCTWProber class MBCSGroupProber(CharSetGroupProber): - def __init__(self): - CharSetGroupProber.__init__(self) - self._mProbers = [ + def __init__(self, lang_filter=None): + super(MBCSGroupProber, self).__init__(lang_filter=lang_filter) + self.probers = [ UTF8Prober(), SJISProber(), EUCJPProber(), diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/mbcssm.py b/lib/python3.6/site-packages/pip/_vendor/chardet/mbcssm.py new file mode 100644 index 0000000..8360d0f --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/mbcssm.py @@ -0,0 +1,572 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .enums import MachineState + +# BIG5 + +BIG5_CLS = ( + 1,1,1,1,1,1,1,1, # 00 - 07 #allow 0x00 as legal value + 1,1,1,1,1,1,0,0, # 08 - 0f + 1,1,1,1,1,1,1,1, # 10 - 17 + 1,1,1,0,1,1,1,1, # 18 - 1f + 1,1,1,1,1,1,1,1, # 20 - 27 + 1,1,1,1,1,1,1,1, # 28 - 2f + 1,1,1,1,1,1,1,1, # 30 - 37 + 1,1,1,1,1,1,1,1, # 38 - 3f + 2,2,2,2,2,2,2,2, # 40 - 47 + 2,2,2,2,2,2,2,2, # 48 - 4f + 2,2,2,2,2,2,2,2, # 50 - 57 + 2,2,2,2,2,2,2,2, # 58 - 5f + 2,2,2,2,2,2,2,2, # 60 - 67 + 2,2,2,2,2,2,2,2, # 68 - 6f + 2,2,2,2,2,2,2,2, # 70 - 77 + 2,2,2,2,2,2,2,1, # 78 - 7f + 4,4,4,4,4,4,4,4, # 80 - 87 + 4,4,4,4,4,4,4,4, # 88 - 8f + 4,4,4,4,4,4,4,4, # 90 - 97 + 4,4,4,4,4,4,4,4, # 98 - 9f + 4,3,3,3,3,3,3,3, # a0 - a7 + 3,3,3,3,3,3,3,3, # a8 - af + 3,3,3,3,3,3,3,3, # b0 - b7 + 3,3,3,3,3,3,3,3, # b8 - bf + 3,3,3,3,3,3,3,3, # c0 - c7 + 3,3,3,3,3,3,3,3, # c8 - cf + 3,3,3,3,3,3,3,3, # d0 - d7 + 3,3,3,3,3,3,3,3, # d8 - df + 3,3,3,3,3,3,3,3, # e0 - e7 + 3,3,3,3,3,3,3,3, # e8 - ef + 3,3,3,3,3,3,3,3, # f0 - f7 + 3,3,3,3,3,3,3,0 # f8 - ff +) + +BIG5_ST = ( + MachineState.ERROR,MachineState.START,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,#08-0f + MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START#10-17 +) + +BIG5_CHAR_LEN_TABLE = (0, 1, 1, 2, 0) + +BIG5_SM_MODEL = {'class_table': BIG5_CLS, + 'class_factor': 5, + 'state_table': BIG5_ST, + 'char_len_table': BIG5_CHAR_LEN_TABLE, + 'name': 'Big5'} + +# CP949 + +CP949_CLS = ( + 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,0,0, # 00 - 0f + 1,1,1,1,1,1,1,1, 1,1,1,0,1,1,1,1, # 10 - 1f + 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, # 20 - 2f + 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, # 30 - 3f + 1,4,4,4,4,4,4,4, 4,4,4,4,4,4,4,4, # 40 - 4f + 4,4,5,5,5,5,5,5, 5,5,5,1,1,1,1,1, # 50 - 5f + 1,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5, # 60 - 6f + 5,5,5,5,5,5,5,5, 5,5,5,1,1,1,1,1, # 70 - 7f + 0,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6, # 80 - 8f + 6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6, # 90 - 9f + 6,7,7,7,7,7,7,7, 7,7,7,7,7,8,8,8, # a0 - af + 7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7, # b0 - bf + 7,7,7,7,7,7,9,2, 2,3,2,2,2,2,2,2, # c0 - cf + 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, # d0 - df + 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, # e0 - ef + 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,0, # f0 - ff +) + +CP949_ST = ( +#cls= 0 1 2 3 4 5 6 7 8 9 # previous state = + MachineState.ERROR,MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START, 4, 5,MachineState.ERROR, 6, # MachineState.START + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, # MachineState.ERROR + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME, # MachineState.ITS_ME + MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START, # 3 + MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, # 4 + MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, # 5 + MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START, # 6 +) + +CP949_CHAR_LEN_TABLE = (0, 1, 2, 0, 1, 1, 2, 2, 0, 2) + +CP949_SM_MODEL = {'class_table': CP949_CLS, + 'class_factor': 10, + 'state_table': CP949_ST, + 'char_len_table': CP949_CHAR_LEN_TABLE, + 'name': 'CP949'} + +# EUC-JP + +EUCJP_CLS = ( + 4,4,4,4,4,4,4,4, # 00 - 07 + 4,4,4,4,4,4,5,5, # 08 - 0f + 4,4,4,4,4,4,4,4, # 10 - 17 + 4,4,4,5,4,4,4,4, # 18 - 1f + 4,4,4,4,4,4,4,4, # 20 - 27 + 4,4,4,4,4,4,4,4, # 28 - 2f + 4,4,4,4,4,4,4,4, # 30 - 37 + 4,4,4,4,4,4,4,4, # 38 - 3f + 4,4,4,4,4,4,4,4, # 40 - 47 + 4,4,4,4,4,4,4,4, # 48 - 4f + 4,4,4,4,4,4,4,4, # 50 - 57 + 4,4,4,4,4,4,4,4, # 58 - 5f + 4,4,4,4,4,4,4,4, # 60 - 67 + 4,4,4,4,4,4,4,4, # 68 - 6f + 4,4,4,4,4,4,4,4, # 70 - 77 + 4,4,4,4,4,4,4,4, # 78 - 7f + 5,5,5,5,5,5,5,5, # 80 - 87 + 5,5,5,5,5,5,1,3, # 88 - 8f + 5,5,5,5,5,5,5,5, # 90 - 97 + 5,5,5,5,5,5,5,5, # 98 - 9f + 5,2,2,2,2,2,2,2, # a0 - a7 + 2,2,2,2,2,2,2,2, # a8 - af + 2,2,2,2,2,2,2,2, # b0 - b7 + 2,2,2,2,2,2,2,2, # b8 - bf + 2,2,2,2,2,2,2,2, # c0 - c7 + 2,2,2,2,2,2,2,2, # c8 - cf + 2,2,2,2,2,2,2,2, # d0 - d7 + 2,2,2,2,2,2,2,2, # d8 - df + 0,0,0,0,0,0,0,0, # e0 - e7 + 0,0,0,0,0,0,0,0, # e8 - ef + 0,0,0,0,0,0,0,0, # f0 - f7 + 0,0,0,0,0,0,0,5 # f8 - ff +) + +EUCJP_ST = ( + 3, 4, 3, 5,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.START,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#10-17 + MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 3,MachineState.ERROR,#18-1f + 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START#20-27 +) + +EUCJP_CHAR_LEN_TABLE = (2, 2, 2, 3, 1, 0) + +EUCJP_SM_MODEL = {'class_table': EUCJP_CLS, + 'class_factor': 6, + 'state_table': EUCJP_ST, + 'char_len_table': EUCJP_CHAR_LEN_TABLE, + 'name': 'EUC-JP'} + +# EUC-KR + +EUCKR_CLS = ( + 1,1,1,1,1,1,1,1, # 00 - 07 + 1,1,1,1,1,1,0,0, # 08 - 0f + 1,1,1,1,1,1,1,1, # 10 - 17 + 1,1,1,0,1,1,1,1, # 18 - 1f + 1,1,1,1,1,1,1,1, # 20 - 27 + 1,1,1,1,1,1,1,1, # 28 - 2f + 1,1,1,1,1,1,1,1, # 30 - 37 + 1,1,1,1,1,1,1,1, # 38 - 3f + 1,1,1,1,1,1,1,1, # 40 - 47 + 1,1,1,1,1,1,1,1, # 48 - 4f + 1,1,1,1,1,1,1,1, # 50 - 57 + 1,1,1,1,1,1,1,1, # 58 - 5f + 1,1,1,1,1,1,1,1, # 60 - 67 + 1,1,1,1,1,1,1,1, # 68 - 6f + 1,1,1,1,1,1,1,1, # 70 - 77 + 1,1,1,1,1,1,1,1, # 78 - 7f + 0,0,0,0,0,0,0,0, # 80 - 87 + 0,0,0,0,0,0,0,0, # 88 - 8f + 0,0,0,0,0,0,0,0, # 90 - 97 + 0,0,0,0,0,0,0,0, # 98 - 9f + 0,2,2,2,2,2,2,2, # a0 - a7 + 2,2,2,2,2,3,3,3, # a8 - af + 2,2,2,2,2,2,2,2, # b0 - b7 + 2,2,2,2,2,2,2,2, # b8 - bf + 2,2,2,2,2,2,2,2, # c0 - c7 + 2,3,2,2,2,2,2,2, # c8 - cf + 2,2,2,2,2,2,2,2, # d0 - d7 + 2,2,2,2,2,2,2,2, # d8 - df + 2,2,2,2,2,2,2,2, # e0 - e7 + 2,2,2,2,2,2,2,2, # e8 - ef + 2,2,2,2,2,2,2,2, # f0 - f7 + 2,2,2,2,2,2,2,0 # f8 - ff +) + +EUCKR_ST = ( + MachineState.ERROR,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START #08-0f +) + +EUCKR_CHAR_LEN_TABLE = (0, 1, 2, 0) + +EUCKR_SM_MODEL = {'class_table': EUCKR_CLS, + 'class_factor': 4, + 'state_table': EUCKR_ST, + 'char_len_table': EUCKR_CHAR_LEN_TABLE, + 'name': 'EUC-KR'} + +# EUC-TW + +EUCTW_CLS = ( + 2,2,2,2,2,2,2,2, # 00 - 07 + 2,2,2,2,2,2,0,0, # 08 - 0f + 2,2,2,2,2,2,2,2, # 10 - 17 + 2,2,2,0,2,2,2,2, # 18 - 1f + 2,2,2,2,2,2,2,2, # 20 - 27 + 2,2,2,2,2,2,2,2, # 28 - 2f + 2,2,2,2,2,2,2,2, # 30 - 37 + 2,2,2,2,2,2,2,2, # 38 - 3f + 2,2,2,2,2,2,2,2, # 40 - 47 + 2,2,2,2,2,2,2,2, # 48 - 4f + 2,2,2,2,2,2,2,2, # 50 - 57 + 2,2,2,2,2,2,2,2, # 58 - 5f + 2,2,2,2,2,2,2,2, # 60 - 67 + 2,2,2,2,2,2,2,2, # 68 - 6f + 2,2,2,2,2,2,2,2, # 70 - 77 + 2,2,2,2,2,2,2,2, # 78 - 7f + 0,0,0,0,0,0,0,0, # 80 - 87 + 0,0,0,0,0,0,6,0, # 88 - 8f + 0,0,0,0,0,0,0,0, # 90 - 97 + 0,0,0,0,0,0,0,0, # 98 - 9f + 0,3,4,4,4,4,4,4, # a0 - a7 + 5,5,1,1,1,1,1,1, # a8 - af + 1,1,1,1,1,1,1,1, # b0 - b7 + 1,1,1,1,1,1,1,1, # b8 - bf + 1,1,3,1,3,3,3,3, # c0 - c7 + 3,3,3,3,3,3,3,3, # c8 - cf + 3,3,3,3,3,3,3,3, # d0 - d7 + 3,3,3,3,3,3,3,3, # d8 - df + 3,3,3,3,3,3,3,3, # e0 - e7 + 3,3,3,3,3,3,3,3, # e8 - ef + 3,3,3,3,3,3,3,3, # f0 - f7 + 3,3,3,3,3,3,3,0 # f8 - ff +) + +EUCTW_ST = ( + MachineState.ERROR,MachineState.ERROR,MachineState.START, 3, 3, 3, 4,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.START,MachineState.ERROR,#10-17 + MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f + 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.START,MachineState.START,#20-27 + MachineState.START,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START #28-2f +) + +EUCTW_CHAR_LEN_TABLE = (0, 0, 1, 2, 2, 2, 3) + +EUCTW_SM_MODEL = {'class_table': EUCTW_CLS, + 'class_factor': 7, + 'state_table': EUCTW_ST, + 'char_len_table': EUCTW_CHAR_LEN_TABLE, + 'name': 'x-euc-tw'} + +# GB2312 + +GB2312_CLS = ( + 1,1,1,1,1,1,1,1, # 00 - 07 + 1,1,1,1,1,1,0,0, # 08 - 0f + 1,1,1,1,1,1,1,1, # 10 - 17 + 1,1,1,0,1,1,1,1, # 18 - 1f + 1,1,1,1,1,1,1,1, # 20 - 27 + 1,1,1,1,1,1,1,1, # 28 - 2f + 3,3,3,3,3,3,3,3, # 30 - 37 + 3,3,1,1,1,1,1,1, # 38 - 3f + 2,2,2,2,2,2,2,2, # 40 - 47 + 2,2,2,2,2,2,2,2, # 48 - 4f + 2,2,2,2,2,2,2,2, # 50 - 57 + 2,2,2,2,2,2,2,2, # 58 - 5f + 2,2,2,2,2,2,2,2, # 60 - 67 + 2,2,2,2,2,2,2,2, # 68 - 6f + 2,2,2,2,2,2,2,2, # 70 - 77 + 2,2,2,2,2,2,2,4, # 78 - 7f + 5,6,6,6,6,6,6,6, # 80 - 87 + 6,6,6,6,6,6,6,6, # 88 - 8f + 6,6,6,6,6,6,6,6, # 90 - 97 + 6,6,6,6,6,6,6,6, # 98 - 9f + 6,6,6,6,6,6,6,6, # a0 - a7 + 6,6,6,6,6,6,6,6, # a8 - af + 6,6,6,6,6,6,6,6, # b0 - b7 + 6,6,6,6,6,6,6,6, # b8 - bf + 6,6,6,6,6,6,6,6, # c0 - c7 + 6,6,6,6,6,6,6,6, # c8 - cf + 6,6,6,6,6,6,6,6, # d0 - d7 + 6,6,6,6,6,6,6,6, # d8 - df + 6,6,6,6,6,6,6,6, # e0 - e7 + 6,6,6,6,6,6,6,6, # e8 - ef + 6,6,6,6,6,6,6,6, # f0 - f7 + 6,6,6,6,6,6,6,0 # f8 - ff +) + +GB2312_ST = ( + MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, 3,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,#10-17 + 4,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f + MachineState.ERROR,MachineState.ERROR, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,#20-27 + MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START #28-2f +) + +# To be accurate, the length of class 6 can be either 2 or 4. +# But it is not necessary to discriminate between the two since +# it is used for frequency analysis only, and we are validating +# each code range there as well. So it is safe to set it to be +# 2 here. +GB2312_CHAR_LEN_TABLE = (0, 1, 1, 1, 1, 1, 2) + +GB2312_SM_MODEL = {'class_table': GB2312_CLS, + 'class_factor': 7, + 'state_table': GB2312_ST, + 'char_len_table': GB2312_CHAR_LEN_TABLE, + 'name': 'GB2312'} + +# Shift_JIS + +SJIS_CLS = ( + 1,1,1,1,1,1,1,1, # 00 - 07 + 1,1,1,1,1,1,0,0, # 08 - 0f + 1,1,1,1,1,1,1,1, # 10 - 17 + 1,1,1,0,1,1,1,1, # 18 - 1f + 1,1,1,1,1,1,1,1, # 20 - 27 + 1,1,1,1,1,1,1,1, # 28 - 2f + 1,1,1,1,1,1,1,1, # 30 - 37 + 1,1,1,1,1,1,1,1, # 38 - 3f + 2,2,2,2,2,2,2,2, # 40 - 47 + 2,2,2,2,2,2,2,2, # 48 - 4f + 2,2,2,2,2,2,2,2, # 50 - 57 + 2,2,2,2,2,2,2,2, # 58 - 5f + 2,2,2,2,2,2,2,2, # 60 - 67 + 2,2,2,2,2,2,2,2, # 68 - 6f + 2,2,2,2,2,2,2,2, # 70 - 77 + 2,2,2,2,2,2,2,1, # 78 - 7f + 3,3,3,3,3,2,2,3, # 80 - 87 + 3,3,3,3,3,3,3,3, # 88 - 8f + 3,3,3,3,3,3,3,3, # 90 - 97 + 3,3,3,3,3,3,3,3, # 98 - 9f + #0xa0 is illegal in sjis encoding, but some pages does + #contain such byte. We need to be more error forgiven. + 2,2,2,2,2,2,2,2, # a0 - a7 + 2,2,2,2,2,2,2,2, # a8 - af + 2,2,2,2,2,2,2,2, # b0 - b7 + 2,2,2,2,2,2,2,2, # b8 - bf + 2,2,2,2,2,2,2,2, # c0 - c7 + 2,2,2,2,2,2,2,2, # c8 - cf + 2,2,2,2,2,2,2,2, # d0 - d7 + 2,2,2,2,2,2,2,2, # d8 - df + 3,3,3,3,3,3,3,3, # e0 - e7 + 3,3,3,3,3,4,4,4, # e8 - ef + 3,3,3,3,3,3,3,3, # f0 - f7 + 3,3,3,3,3,0,0,0) # f8 - ff + + +SJIS_ST = ( + MachineState.ERROR,MachineState.START,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START #10-17 +) + +SJIS_CHAR_LEN_TABLE = (0, 1, 1, 2, 0, 0) + +SJIS_SM_MODEL = {'class_table': SJIS_CLS, + 'class_factor': 6, + 'state_table': SJIS_ST, + 'char_len_table': SJIS_CHAR_LEN_TABLE, + 'name': 'Shift_JIS'} + +# UCS2-BE + +UCS2BE_CLS = ( + 0,0,0,0,0,0,0,0, # 00 - 07 + 0,0,1,0,0,2,0,0, # 08 - 0f + 0,0,0,0,0,0,0,0, # 10 - 17 + 0,0,0,3,0,0,0,0, # 18 - 1f + 0,0,0,0,0,0,0,0, # 20 - 27 + 0,3,3,3,3,3,0,0, # 28 - 2f + 0,0,0,0,0,0,0,0, # 30 - 37 + 0,0,0,0,0,0,0,0, # 38 - 3f + 0,0,0,0,0,0,0,0, # 40 - 47 + 0,0,0,0,0,0,0,0, # 48 - 4f + 0,0,0,0,0,0,0,0, # 50 - 57 + 0,0,0,0,0,0,0,0, # 58 - 5f + 0,0,0,0,0,0,0,0, # 60 - 67 + 0,0,0,0,0,0,0,0, # 68 - 6f + 0,0,0,0,0,0,0,0, # 70 - 77 + 0,0,0,0,0,0,0,0, # 78 - 7f + 0,0,0,0,0,0,0,0, # 80 - 87 + 0,0,0,0,0,0,0,0, # 88 - 8f + 0,0,0,0,0,0,0,0, # 90 - 97 + 0,0,0,0,0,0,0,0, # 98 - 9f + 0,0,0,0,0,0,0,0, # a0 - a7 + 0,0,0,0,0,0,0,0, # a8 - af + 0,0,0,0,0,0,0,0, # b0 - b7 + 0,0,0,0,0,0,0,0, # b8 - bf + 0,0,0,0,0,0,0,0, # c0 - c7 + 0,0,0,0,0,0,0,0, # c8 - cf + 0,0,0,0,0,0,0,0, # d0 - d7 + 0,0,0,0,0,0,0,0, # d8 - df + 0,0,0,0,0,0,0,0, # e0 - e7 + 0,0,0,0,0,0,0,0, # e8 - ef + 0,0,0,0,0,0,0,0, # f0 - f7 + 0,0,0,0,0,0,4,5 # f8 - ff +) + +UCS2BE_ST = ( + 5, 7, 7,MachineState.ERROR, 4, 3,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME, 6, 6, 6, 6,MachineState.ERROR,MachineState.ERROR,#10-17 + 6, 6, 6, 6, 6,MachineState.ITS_ME, 6, 6,#18-1f + 6, 6, 6, 6, 5, 7, 7,MachineState.ERROR,#20-27 + 5, 8, 6, 6,MachineState.ERROR, 6, 6, 6,#28-2f + 6, 6, 6, 6,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START #30-37 +) + +UCS2BE_CHAR_LEN_TABLE = (2, 2, 2, 0, 2, 2) + +UCS2BE_SM_MODEL = {'class_table': UCS2BE_CLS, + 'class_factor': 6, + 'state_table': UCS2BE_ST, + 'char_len_table': UCS2BE_CHAR_LEN_TABLE, + 'name': 'UTF-16BE'} + +# UCS2-LE + +UCS2LE_CLS = ( + 0,0,0,0,0,0,0,0, # 00 - 07 + 0,0,1,0,0,2,0,0, # 08 - 0f + 0,0,0,0,0,0,0,0, # 10 - 17 + 0,0,0,3,0,0,0,0, # 18 - 1f + 0,0,0,0,0,0,0,0, # 20 - 27 + 0,3,3,3,3,3,0,0, # 28 - 2f + 0,0,0,0,0,0,0,0, # 30 - 37 + 0,0,0,0,0,0,0,0, # 38 - 3f + 0,0,0,0,0,0,0,0, # 40 - 47 + 0,0,0,0,0,0,0,0, # 48 - 4f + 0,0,0,0,0,0,0,0, # 50 - 57 + 0,0,0,0,0,0,0,0, # 58 - 5f + 0,0,0,0,0,0,0,0, # 60 - 67 + 0,0,0,0,0,0,0,0, # 68 - 6f + 0,0,0,0,0,0,0,0, # 70 - 77 + 0,0,0,0,0,0,0,0, # 78 - 7f + 0,0,0,0,0,0,0,0, # 80 - 87 + 0,0,0,0,0,0,0,0, # 88 - 8f + 0,0,0,0,0,0,0,0, # 90 - 97 + 0,0,0,0,0,0,0,0, # 98 - 9f + 0,0,0,0,0,0,0,0, # a0 - a7 + 0,0,0,0,0,0,0,0, # a8 - af + 0,0,0,0,0,0,0,0, # b0 - b7 + 0,0,0,0,0,0,0,0, # b8 - bf + 0,0,0,0,0,0,0,0, # c0 - c7 + 0,0,0,0,0,0,0,0, # c8 - cf + 0,0,0,0,0,0,0,0, # d0 - d7 + 0,0,0,0,0,0,0,0, # d8 - df + 0,0,0,0,0,0,0,0, # e0 - e7 + 0,0,0,0,0,0,0,0, # e8 - ef + 0,0,0,0,0,0,0,0, # f0 - f7 + 0,0,0,0,0,0,4,5 # f8 - ff +) + +UCS2LE_ST = ( + 6, 6, 7, 6, 4, 3,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME, 5, 5, 5,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,#10-17 + 5, 5, 5,MachineState.ERROR, 5,MachineState.ERROR, 6, 6,#18-1f + 7, 6, 8, 8, 5, 5, 5,MachineState.ERROR,#20-27 + 5, 5, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5, 5,#28-2f + 5, 5, 5,MachineState.ERROR, 5,MachineState.ERROR,MachineState.START,MachineState.START #30-37 +) + +UCS2LE_CHAR_LEN_TABLE = (2, 2, 2, 2, 2, 2) + +UCS2LE_SM_MODEL = {'class_table': UCS2LE_CLS, + 'class_factor': 6, + 'state_table': UCS2LE_ST, + 'char_len_table': UCS2LE_CHAR_LEN_TABLE, + 'name': 'UTF-16LE'} + +# UTF-8 + +UTF8_CLS = ( + 1,1,1,1,1,1,1,1, # 00 - 07 #allow 0x00 as a legal value + 1,1,1,1,1,1,0,0, # 08 - 0f + 1,1,1,1,1,1,1,1, # 10 - 17 + 1,1,1,0,1,1,1,1, # 18 - 1f + 1,1,1,1,1,1,1,1, # 20 - 27 + 1,1,1,1,1,1,1,1, # 28 - 2f + 1,1,1,1,1,1,1,1, # 30 - 37 + 1,1,1,1,1,1,1,1, # 38 - 3f + 1,1,1,1,1,1,1,1, # 40 - 47 + 1,1,1,1,1,1,1,1, # 48 - 4f + 1,1,1,1,1,1,1,1, # 50 - 57 + 1,1,1,1,1,1,1,1, # 58 - 5f + 1,1,1,1,1,1,1,1, # 60 - 67 + 1,1,1,1,1,1,1,1, # 68 - 6f + 1,1,1,1,1,1,1,1, # 70 - 77 + 1,1,1,1,1,1,1,1, # 78 - 7f + 2,2,2,2,3,3,3,3, # 80 - 87 + 4,4,4,4,4,4,4,4, # 88 - 8f + 4,4,4,4,4,4,4,4, # 90 - 97 + 4,4,4,4,4,4,4,4, # 98 - 9f + 5,5,5,5,5,5,5,5, # a0 - a7 + 5,5,5,5,5,5,5,5, # a8 - af + 5,5,5,5,5,5,5,5, # b0 - b7 + 5,5,5,5,5,5,5,5, # b8 - bf + 0,0,6,6,6,6,6,6, # c0 - c7 + 6,6,6,6,6,6,6,6, # c8 - cf + 6,6,6,6,6,6,6,6, # d0 - d7 + 6,6,6,6,6,6,6,6, # d8 - df + 7,8,8,8,8,8,8,8, # e0 - e7 + 8,8,8,8,8,9,8,8, # e8 - ef + 10,11,11,11,11,11,11,11, # f0 - f7 + 12,13,13,13,14,15,0,0 # f8 - ff +) + +UTF8_ST = ( + MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 12, 10,#00-07 + 9, 11, 8, 7, 6, 5, 4, 3,#08-0f + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#10-17 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#20-27 + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#28-2f + MachineState.ERROR,MachineState.ERROR, 5, 5, 5, 5,MachineState.ERROR,MachineState.ERROR,#30-37 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#38-3f + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5, 5, 5,MachineState.ERROR,MachineState.ERROR,#40-47 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#48-4f + MachineState.ERROR,MachineState.ERROR, 7, 7, 7, 7,MachineState.ERROR,MachineState.ERROR,#50-57 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#58-5f + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 7, 7,MachineState.ERROR,MachineState.ERROR,#60-67 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#68-6f + MachineState.ERROR,MachineState.ERROR, 9, 9, 9, 9,MachineState.ERROR,MachineState.ERROR,#70-77 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#78-7f + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 9,MachineState.ERROR,MachineState.ERROR,#80-87 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#88-8f + MachineState.ERROR,MachineState.ERROR, 12, 12, 12, 12,MachineState.ERROR,MachineState.ERROR,#90-97 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#98-9f + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 12,MachineState.ERROR,MachineState.ERROR,#a0-a7 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#a8-af + MachineState.ERROR,MachineState.ERROR, 12, 12, 12,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#b0-b7 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#b8-bf + MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,#c0-c7 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR #c8-cf +) + +UTF8_CHAR_LEN_TABLE = (0, 1, 0, 0, 0, 0, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6) + +UTF8_SM_MODEL = {'class_table': UTF8_CLS, + 'class_factor': 16, + 'state_table': UTF8_ST, + 'char_len_table': UTF8_CHAR_LEN_TABLE, + 'name': 'UTF-8'} diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/sbcharsetprober.py b/lib/python3.6/site-packages/pip/_vendor/chardet/sbcharsetprober.py new file mode 100644 index 0000000..0adb51d --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/sbcharsetprober.py @@ -0,0 +1,132 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetprober import CharSetProber +from .enums import CharacterCategory, ProbingState, SequenceLikelihood + + +class SingleByteCharSetProber(CharSetProber): + SAMPLE_SIZE = 64 + SB_ENOUGH_REL_THRESHOLD = 1024 # 0.25 * SAMPLE_SIZE^2 + POSITIVE_SHORTCUT_THRESHOLD = 0.95 + NEGATIVE_SHORTCUT_THRESHOLD = 0.05 + + def __init__(self, model, reversed=False, name_prober=None): + super(SingleByteCharSetProber, self).__init__() + self._model = model + # TRUE if we need to reverse every pair in the model lookup + self._reversed = reversed + # Optional auxiliary prober for name decision + self._name_prober = name_prober + self._last_order = None + self._seq_counters = None + self._total_seqs = None + self._total_char = None + self._freq_char = None + self.reset() + + def reset(self): + super(SingleByteCharSetProber, self).reset() + # char order of last character + self._last_order = 255 + self._seq_counters = [0] * SequenceLikelihood.get_num_categories() + self._total_seqs = 0 + self._total_char = 0 + # characters that fall in our sampling range + self._freq_char = 0 + + @property + def charset_name(self): + if self._name_prober: + return self._name_prober.charset_name + else: + return self._model['charset_name'] + + @property + def language(self): + if self._name_prober: + return self._name_prober.language + else: + return self._model.get('language') + + def feed(self, byte_str): + if not self._model['keep_english_letter']: + byte_str = self.filter_international_words(byte_str) + if not byte_str: + return self.state + char_to_order_map = self._model['char_to_order_map'] + for i, c in enumerate(byte_str): + # XXX: Order is in range 1-64, so one would think we want 0-63 here, + # but that leads to 27 more test failures than before. + order = char_to_order_map[c] + # XXX: This was SYMBOL_CAT_ORDER before, with a value of 250, but + # CharacterCategory.SYMBOL is actually 253, so we use CONTROL + # to make it closer to the original intent. The only difference + # is whether or not we count digits and control characters for + # _total_char purposes. + if order < CharacterCategory.CONTROL: + self._total_char += 1 + if order < self.SAMPLE_SIZE: + self._freq_char += 1 + if self._last_order < self.SAMPLE_SIZE: + self._total_seqs += 1 + if not self._reversed: + i = (self._last_order * self.SAMPLE_SIZE) + order + model = self._model['precedence_matrix'][i] + else: # reverse the order of the letters in the lookup + i = (order * self.SAMPLE_SIZE) + self._last_order + model = self._model['precedence_matrix'][i] + self._seq_counters[model] += 1 + self._last_order = order + + charset_name = self._model['charset_name'] + if self.state == ProbingState.DETECTING: + if self._total_seqs > self.SB_ENOUGH_REL_THRESHOLD: + confidence = self.get_confidence() + if confidence > self.POSITIVE_SHORTCUT_THRESHOLD: + self.logger.debug('%s confidence = %s, we have a winner', + charset_name, confidence) + self._state = ProbingState.FOUND_IT + elif confidence < self.NEGATIVE_SHORTCUT_THRESHOLD: + self.logger.debug('%s confidence = %s, below negative ' + 'shortcut threshhold %s', charset_name, + confidence, + self.NEGATIVE_SHORTCUT_THRESHOLD) + self._state = ProbingState.NOT_ME + + return self.state + + def get_confidence(self): + r = 0.01 + if self._total_seqs > 0: + r = ((1.0 * self._seq_counters[SequenceLikelihood.POSITIVE]) / + self._total_seqs / self._model['typical_positive_ratio']) + r = r * self._freq_char / self._total_char + if r >= 1.0: + r = 0.99 + return r diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/sbcsgroupprober.py b/lib/python3.6/site-packages/pip/_vendor/chardet/sbcsgroupprober.py similarity index 70% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/sbcsgroupprober.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/sbcsgroupprober.py index 1b6196c..98e95dc 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/sbcsgroupprober.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/sbcsgroupprober.py @@ -33,16 +33,17 @@ from .langcyrillicmodel import (Win1251CyrillicModel, Koi8rModel, Ibm866Model, Ibm855Model) from .langgreekmodel import Latin7GreekModel, Win1253GreekModel from .langbulgarianmodel import Latin5BulgarianModel, Win1251BulgarianModel -from .langhungarianmodel import Latin2HungarianModel, Win1250HungarianModel +# from .langhungarianmodel import Latin2HungarianModel, Win1250HungarianModel from .langthaimodel import TIS620ThaiModel from .langhebrewmodel import Win1255HebrewModel from .hebrewprober import HebrewProber +from .langturkishmodel import Latin5TurkishModel class SBCSGroupProber(CharSetGroupProber): def __init__(self): - CharSetGroupProber.__init__(self) - self._mProbers = [ + super(SBCSGroupProber, self).__init__() + self.probers = [ SingleByteCharSetProber(Win1251CyrillicModel), SingleByteCharSetProber(Koi8rModel), SingleByteCharSetProber(Latin5CyrillicModel), @@ -53,17 +54,20 @@ class SBCSGroupProber(CharSetGroupProber): SingleByteCharSetProber(Win1253GreekModel), SingleByteCharSetProber(Latin5BulgarianModel), SingleByteCharSetProber(Win1251BulgarianModel), - SingleByteCharSetProber(Latin2HungarianModel), - SingleByteCharSetProber(Win1250HungarianModel), + # TODO: Restore Hungarian encodings (iso-8859-2 and windows-1250) + # after we retrain model. + # SingleByteCharSetProber(Latin2HungarianModel), + # SingleByteCharSetProber(Win1250HungarianModel), SingleByteCharSetProber(TIS620ThaiModel), + SingleByteCharSetProber(Latin5TurkishModel), ] - hebrewProber = HebrewProber() - logicalHebrewProber = SingleByteCharSetProber(Win1255HebrewModel, - False, hebrewProber) - visualHebrewProber = SingleByteCharSetProber(Win1255HebrewModel, True, - hebrewProber) - hebrewProber.set_model_probers(logicalHebrewProber, visualHebrewProber) - self._mProbers.extend([hebrewProber, logicalHebrewProber, - visualHebrewProber]) + hebrew_prober = HebrewProber() + logical_hebrew_prober = SingleByteCharSetProber(Win1255HebrewModel, + False, hebrew_prober) + visual_hebrew_prober = SingleByteCharSetProber(Win1255HebrewModel, True, + hebrew_prober) + hebrew_prober.set_model_probers(logical_hebrew_prober, visual_hebrew_prober) + self.probers.extend([hebrew_prober, logical_hebrew_prober, + visual_hebrew_prober]) self.reset() diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/sjisprober.py b/lib/python3.6/site-packages/pip/_vendor/chardet/sjisprober.py new file mode 100644 index 0000000..9e29623 --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/sjisprober.py @@ -0,0 +1,92 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import SJISDistributionAnalysis +from .jpcntx import SJISContextAnalysis +from .mbcssm import SJIS_SM_MODEL +from .enums import ProbingState, MachineState + + +class SJISProber(MultiByteCharSetProber): + def __init__(self): + super(SJISProber, self).__init__() + self.coding_sm = CodingStateMachine(SJIS_SM_MODEL) + self.distribution_analyzer = SJISDistributionAnalysis() + self.context_analyzer = SJISContextAnalysis() + self.reset() + + def reset(self): + super(SJISProber, self).reset() + self.context_analyzer.reset() + + @property + def charset_name(self): + return self.context_analyzer.charset_name + + @property + def language(self): + return "Japanese" + + def feed(self, byte_str): + for i in range(len(byte_str)): + coding_state = self.coding_sm.next_state(byte_str[i]) + if coding_state == MachineState.ERROR: + self.logger.debug('%s %s prober hit error at byte %s', + self.charset_name, self.language, i) + self._state = ProbingState.NOT_ME + break + elif coding_state == MachineState.ITS_ME: + self._state = ProbingState.FOUND_IT + break + elif coding_state == MachineState.START: + char_len = self.coding_sm.get_current_charlen() + if i == 0: + self._last_char[1] = byte_str[0] + self.context_analyzer.feed(self._last_char[2 - char_len:], + char_len) + self.distribution_analyzer.feed(self._last_char, char_len) + else: + self.context_analyzer.feed(byte_str[i + 1 - char_len:i + 3 + - char_len], char_len) + self.distribution_analyzer.feed(byte_str[i - 1:i + 1], + char_len) + + self._last_char[0] = byte_str[-1] + + if self.state == ProbingState.DETECTING: + if (self.context_analyzer.got_enough_data() and + (self.get_confidence() > self.SHORTCUT_THRESHOLD)): + self._state = ProbingState.FOUND_IT + + return self.state + + def get_confidence(self): + context_conf = self.context_analyzer.get_confidence() + distrib_conf = self.distribution_analyzer.get_confidence() + return max(context_conf, distrib_conf) diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/universaldetector.py b/lib/python3.6/site-packages/pip/_vendor/chardet/universaldetector.py new file mode 100644 index 0000000..7b4e92d --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/universaldetector.py @@ -0,0 +1,286 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### +""" +Module containing the UniversalDetector detector class, which is the primary +class a user of ``chardet`` should use. + +:author: Mark Pilgrim (initial port to Python) +:author: Shy Shalom (original C code) +:author: Dan Blanchard (major refactoring for 3.0) +:author: Ian Cordasco +""" + + +import codecs +import logging +import re + +from .charsetgroupprober import CharSetGroupProber +from .enums import InputState, LanguageFilter, ProbingState +from .escprober import EscCharSetProber +from .latin1prober import Latin1Prober +from .mbcsgroupprober import MBCSGroupProber +from .sbcsgroupprober import SBCSGroupProber + + +class UniversalDetector(object): + """ + The ``UniversalDetector`` class underlies the ``chardet.detect`` function + and coordinates all of the different charset probers. + + To get a ``dict`` containing an encoding and its confidence, you can simply + run: + + .. code:: + + u = UniversalDetector() + u.feed(some_bytes) + u.close() + detected = u.result + + """ + + MINIMUM_THRESHOLD = 0.20 + HIGH_BYTE_DETECTOR = re.compile(b'[\x80-\xFF]') + ESC_DETECTOR = re.compile(b'(\033|~{)') + WIN_BYTE_DETECTOR = re.compile(b'[\x80-\x9F]') + ISO_WIN_MAP = {'iso-8859-1': 'Windows-1252', + 'iso-8859-2': 'Windows-1250', + 'iso-8859-5': 'Windows-1251', + 'iso-8859-6': 'Windows-1256', + 'iso-8859-7': 'Windows-1253', + 'iso-8859-8': 'Windows-1255', + 'iso-8859-9': 'Windows-1254', + 'iso-8859-13': 'Windows-1257'} + + def __init__(self, lang_filter=LanguageFilter.ALL): + self._esc_charset_prober = None + self._charset_probers = [] + self.result = None + self.done = None + self._got_data = None + self._input_state = None + self._last_char = None + self.lang_filter = lang_filter + self.logger = logging.getLogger(__name__) + self._has_win_bytes = None + self.reset() + + def reset(self): + """ + Reset the UniversalDetector and all of its probers back to their + initial states. This is called by ``__init__``, so you only need to + call this directly in between analyses of different documents. + """ + self.result = {'encoding': None, 'confidence': 0.0, 'language': None} + self.done = False + self._got_data = False + self._has_win_bytes = False + self._input_state = InputState.PURE_ASCII + self._last_char = b'' + if self._esc_charset_prober: + self._esc_charset_prober.reset() + for prober in self._charset_probers: + prober.reset() + + def feed(self, byte_str): + """ + Takes a chunk of a document and feeds it through all of the relevant + charset probers. + + After calling ``feed``, you can check the value of the ``done`` + attribute to see if you need to continue feeding the + ``UniversalDetector`` more data, or if it has made a prediction + (in the ``result`` attribute). + + .. note:: + You should always call ``close`` when you're done feeding in your + document if ``done`` is not already ``True``. + """ + if self.done: + return + + if not len(byte_str): + return + + if not isinstance(byte_str, bytearray): + byte_str = bytearray(byte_str) + + # First check for known BOMs, since these are guaranteed to be correct + if not self._got_data: + # If the data starts with BOM, we know it is UTF + if byte_str.startswith(codecs.BOM_UTF8): + # EF BB BF UTF-8 with BOM + self.result = {'encoding': "UTF-8-SIG", + 'confidence': 1.0, + 'language': ''} + elif byte_str.startswith((codecs.BOM_UTF32_LE, + codecs.BOM_UTF32_BE)): + # FF FE 00 00 UTF-32, little-endian BOM + # 00 00 FE FF UTF-32, big-endian BOM + self.result = {'encoding': "UTF-32", + 'confidence': 1.0, + 'language': ''} + elif byte_str.startswith(b'\xFE\xFF\x00\x00'): + # FE FF 00 00 UCS-4, unusual octet order BOM (3412) + self.result = {'encoding': "X-ISO-10646-UCS-4-3412", + 'confidence': 1.0, + 'language': ''} + elif byte_str.startswith(b'\x00\x00\xFF\xFE'): + # 00 00 FF FE UCS-4, unusual octet order BOM (2143) + self.result = {'encoding': "X-ISO-10646-UCS-4-2143", + 'confidence': 1.0, + 'language': ''} + elif byte_str.startswith((codecs.BOM_LE, codecs.BOM_BE)): + # FF FE UTF-16, little endian BOM + # FE FF UTF-16, big endian BOM + self.result = {'encoding': "UTF-16", + 'confidence': 1.0, + 'language': ''} + + self._got_data = True + if self.result['encoding'] is not None: + self.done = True + return + + # If none of those matched and we've only see ASCII so far, check + # for high bytes and escape sequences + if self._input_state == InputState.PURE_ASCII: + if self.HIGH_BYTE_DETECTOR.search(byte_str): + self._input_state = InputState.HIGH_BYTE + elif self._input_state == InputState.PURE_ASCII and \ + self.ESC_DETECTOR.search(self._last_char + byte_str): + self._input_state = InputState.ESC_ASCII + + self._last_char = byte_str[-1:] + + # If we've seen escape sequences, use the EscCharSetProber, which + # uses a simple state machine to check for known escape sequences in + # HZ and ISO-2022 encodings, since those are the only encodings that + # use such sequences. + if self._input_state == InputState.ESC_ASCII: + if not self._esc_charset_prober: + self._esc_charset_prober = EscCharSetProber(self.lang_filter) + if self._esc_charset_prober.feed(byte_str) == ProbingState.FOUND_IT: + self.result = {'encoding': + self._esc_charset_prober.charset_name, + 'confidence': + self._esc_charset_prober.get_confidence(), + 'language': + self._esc_charset_prober.language} + self.done = True + # If we've seen high bytes (i.e., those with values greater than 127), + # we need to do more complicated checks using all our multi-byte and + # single-byte probers that are left. The single-byte probers + # use character bigram distributions to determine the encoding, whereas + # the multi-byte probers use a combination of character unigram and + # bigram distributions. + elif self._input_state == InputState.HIGH_BYTE: + if not self._charset_probers: + self._charset_probers = [MBCSGroupProber(self.lang_filter)] + # If we're checking non-CJK encodings, use single-byte prober + if self.lang_filter & LanguageFilter.NON_CJK: + self._charset_probers.append(SBCSGroupProber()) + self._charset_probers.append(Latin1Prober()) + for prober in self._charset_probers: + if prober.feed(byte_str) == ProbingState.FOUND_IT: + self.result = {'encoding': prober.charset_name, + 'confidence': prober.get_confidence(), + 'language': prober.language} + self.done = True + break + if self.WIN_BYTE_DETECTOR.search(byte_str): + self._has_win_bytes = True + + def close(self): + """ + Stop analyzing the current document and come up with a final + prediction. + + :returns: The ``result`` attribute, a ``dict`` with the keys + `encoding`, `confidence`, and `language`. + """ + # Don't bother with checks if we're already done + if self.done: + return self.result + self.done = True + + if not self._got_data: + self.logger.debug('no data received!') + + # Default to ASCII if it is all we've seen so far + elif self._input_state == InputState.PURE_ASCII: + self.result = {'encoding': 'ascii', + 'confidence': 1.0, + 'language': ''} + + # If we have seen non-ASCII, return the best that met MINIMUM_THRESHOLD + elif self._input_state == InputState.HIGH_BYTE: + prober_confidence = None + max_prober_confidence = 0.0 + max_prober = None + for prober in self._charset_probers: + if not prober: + continue + prober_confidence = prober.get_confidence() + if prober_confidence > max_prober_confidence: + max_prober_confidence = prober_confidence + max_prober = prober + if max_prober and (max_prober_confidence > self.MINIMUM_THRESHOLD): + charset_name = max_prober.charset_name + lower_charset_name = max_prober.charset_name.lower() + confidence = max_prober.get_confidence() + # Use Windows encoding name instead of ISO-8859 if we saw any + # extra Windows-specific bytes + if lower_charset_name.startswith('iso-8859'): + if self._has_win_bytes: + charset_name = self.ISO_WIN_MAP.get(lower_charset_name, + charset_name) + self.result = {'encoding': charset_name, + 'confidence': confidence, + 'language': max_prober.language} + + # Log all prober confidences if none met MINIMUM_THRESHOLD + if self.logger.getEffectiveLevel() == logging.DEBUG: + if self.result['encoding'] is None: + self.logger.debug('no probers hit minimum threshold') + for group_prober in self._charset_probers: + if not group_prober: + continue + if isinstance(group_prober, CharSetGroupProber): + for prober in group_prober.probers: + self.logger.debug('%s %s confidence = %s', + prober.charset_name, + prober.language, + prober.get_confidence()) + else: + self.logger.debug('%s %s confidence = %s', + prober.charset_name, + prober.language, + prober.get_confidence()) + return self.result diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/utf8prober.py b/lib/python3.6/site-packages/pip/_vendor/chardet/utf8prober.py similarity index 56% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/utf8prober.py rename to lib/python3.6/site-packages/pip/_vendor/chardet/utf8prober.py index 1c0bb5d..6c3196c 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/utf8prober.py +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/utf8prober.py @@ -25,52 +25,58 @@ # 02110-1301 USA ######################### END LICENSE BLOCK ######################### -from . import constants from .charsetprober import CharSetProber +from .enums import ProbingState, MachineState from .codingstatemachine import CodingStateMachine -from .mbcssm import UTF8SMModel +from .mbcssm import UTF8_SM_MODEL -ONE_CHAR_PROB = 0.5 class UTF8Prober(CharSetProber): + ONE_CHAR_PROB = 0.5 + def __init__(self): - CharSetProber.__init__(self) - self._mCodingSM = CodingStateMachine(UTF8SMModel) + super(UTF8Prober, self).__init__() + self.coding_sm = CodingStateMachine(UTF8_SM_MODEL) + self._num_mb_chars = None self.reset() def reset(self): - CharSetProber.reset(self) - self._mCodingSM.reset() - self._mNumOfMBChar = 0 + super(UTF8Prober, self).reset() + self.coding_sm.reset() + self._num_mb_chars = 0 - def get_charset_name(self): + @property + def charset_name(self): return "utf-8" - def feed(self, aBuf): - for c in aBuf: - codingState = self._mCodingSM.next_state(c) - if codingState == constants.eError: - self._mState = constants.eNotMe - break - elif codingState == constants.eItsMe: - self._mState = constants.eFoundIt - break - elif codingState == constants.eStart: - if self._mCodingSM.get_current_charlen() >= 2: - self._mNumOfMBChar += 1 + @property + def language(self): + return "" - if self.get_state() == constants.eDetecting: - if self.get_confidence() > constants.SHORTCUT_THRESHOLD: - self._mState = constants.eFoundIt + def feed(self, byte_str): + for c in byte_str: + coding_state = self.coding_sm.next_state(c) + if coding_state == MachineState.ERROR: + self._state = ProbingState.NOT_ME + break + elif coding_state == MachineState.ITS_ME: + self._state = ProbingState.FOUND_IT + break + elif coding_state == MachineState.START: + if self.coding_sm.get_current_charlen() >= 2: + self._num_mb_chars += 1 - return self.get_state() + if self.state == ProbingState.DETECTING: + if self.get_confidence() > self.SHORTCUT_THRESHOLD: + self._state = ProbingState.FOUND_IT + + return self.state def get_confidence(self): unlike = 0.99 - if self._mNumOfMBChar < 6: - for i in range(0, self._mNumOfMBChar): - unlike = unlike * ONE_CHAR_PROB + if self._num_mb_chars < 6: + unlike *= self.ONE_CHAR_PROB ** self._num_mb_chars return 1.0 - unlike else: return unlike diff --git a/lib/python3.6/site-packages/pip/_vendor/chardet/version.py b/lib/python3.6/site-packages/pip/_vendor/chardet/version.py new file mode 100644 index 0000000..bb2a34a --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/chardet/version.py @@ -0,0 +1,9 @@ +""" +This module exists only to simplify retrieving the version number of chardet +from within setup.py and from chardet subpackages. + +:author: Dan Blanchard (dan.blanchard@gmail.com) +""" + +__version__ = "3.0.4" +VERSION = __version__.split('.') diff --git a/lib/python3.6/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-36.pyc index 2588243736ea44a4da58bf313ffa66c11b3993fa..1a0334584389956f1c0955272288408a35478d35 100644 GIT binary patch delta 28 jcmeBT?qX&$=H=yD$hDEpj*-J4F*hrz(ztT652GCbUX=$f delta 28 jcmeBT?qX&$=H=x&#=eowj*-K}xTG-4yx4fM52GCbUTp^S diff --git a/lib/python3.6/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-36.pyc index 6b123b503db891d7988f0325fdb8ffc410cd2a3f..5cd333f7bdb1c07fc05aea86fbe6cddcb0885f91 100644 GIT binary patch delta 29 lcmca3c}J4Xn3tDpA=gH>)r=eliMd%xmBy8ucQPt-0|13k2K1L3M#N4c;O5@7Sa~Q8k0sxNs3C{ok delta 29 lcmexh_Q8zJn3tF982d)HK1L1`6h;n%#N4c;O5@7SMU2J*0CoKc6#xJL delta 29 kcmZ3gyi}RZn3tF982d)H6h;mcu*Juq*)pwmu5q delta 31 ncmccklkwtDMmA$!Uan*88`-)zI82O73bV|MjW^HWuq*)pwcHA& diff --git a/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-36.pyc index 11be83e23a4eb214d901ae7ed5cdd8071e49d6ce..4b48bcbe66c0510d06b118e9883e5e5402801dd8 100644 GIT binary patch delta 31 ncmaETg6Z`MCN^VUUao~)8`;EJISdkWvyv)}D>tjMy3GdwsGSM_ delta 31 ncmaETg6Z`MCN^VUUan*88`;EJIZTX83bV|MjW?^Zy3Gdws5=S8 diff --git a/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-36.pyc index 1ce3a4314ecad48a01b1e334b09968c7ab7e641b..a3a8f417b397f5eeec3a7dbd17ae2a02350c9716 100644 GIT binary patch delta 31 mcmZ46&bYRnk&!YuP*ea6Ev`n3tDpA=gH>Ps|(!iMd%xmBy8uSlm?rh1CfA delta 28 jcmX>ea6Ev`n3tF982d)HPs|)9#wCSW=EcUFSlm?rg{=s| diff --git a/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-36.pyc index 4c2c932885aa0865a8fe70d5b5628ab5f7c8b707..54745522dfe22ccafe833bf1cbbe9b25ffc4e64c 100644 GIT binary patch delta 29 lcmaE?_gIh3n3tDpA=gH>jZ7Q{iMd%xmBy8u_cJXK0RW8K3Ag|N delta 29 lcmaE?_gIh3n3tF982d)HjZ7RS#wCSW=EcUF_cJXK0RW7734QMmA$!Uao~)8`)%7I1CbVvyv)}D>rMgMmA$!Uan*88`)%7I82O73bV|MjW=ttb%7 delta 29 kcmaDI@;Zdgn3tF982d&xLuL*Wr)(SsiMd%xmBy8uKeL%D004@u36%f< delta 29 lcmZ4Gx5|&rn3tF982d)Hr)(T1#wCSW=EcUFKeL%D004?h30nXF diff --git a/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-36.pyc index a2eef8c8f7f65f1aa53a262760ef53cc50c1f844..1920c170ac1233b0dccb15b5abb8c6313773b5a3 100644 GIT binary patch delta 31 ncmZ2_n`!B7CN^VUUao~)8`&;!a2O=!W+hb`S8l$?aeN5?tY-_C delta 31 ncmZ2_n`!B7CN^VUUan*88`&;!aF`gE6lR$h8*jeHaeN5?tOW~Q diff --git a/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-36.pyc index 3921458ed4ce5d5b9fdab1d16bf38c9d133d8854..1d3b3afba45df471cae2cd685f13dfcf7e79a885 100644 GIT binary patch delta 31 ncmaF4nDOOeMmA$!Uao~)8`&ILI1CbVvyv)}D>wVI%<=^Qqdy7* delta 31 ncmaF4nDOOeMmA$!Uan*88`&ILI82O73bV|MjW_$V%<=^QqTLC} diff --git a/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-36.pyc index 39ff85508feb2e9cb3844ed53b17e44867bbb561..6541dd45ea68fe083bf6904291db2f7381934e94 100644 GIT binary patch delta 31 ncmbPtm~q}=MmA$!Uao~)8`;WOISdkWvyv)}D>t{WO2q&GoLdQ~ delta 31 ncmbPtm~q}=MmA$!Uan*88`;WOIZTX83bV|MjW@TjO2q&GoB0WD diff --git a/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/__pycache__/__init__.cpython-36.pyc index 700f9682a17b349587c13a099125491a63f370a1..2ce12daf5d37dd0b0242640b7d27e5f719e3a6a7 100644 GIT binary patch delta 28 jcmdnQyos63n3tDpA=gH>WJV5y#N4c;O5@7Og^Z2>X`%X?h2d diff --git a/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/__pycache__/misc.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/__pycache__/misc.cpython-36.pyc index 91341465fb2683a81c129f713a9dc004614f8c2b..ceb401991df7c23d0eb72a08392e973554e0df65 100644 GIT binary patch delta 29 lcmbQhF@b~4n3tDpA=gH>1&ka9iMd%xmBy8u*D)qB0RV8b2u=V1 delta 29 lcmbQhF@b~4n3tF982d)H1&kaf#wCSW=EcUF*D)qB0RV7O2owMS diff --git a/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/__pycache__/shutil.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/__pycache__/shutil.cpython-36.pyc index 7fa79aedf6b23252cae68b6bb34c016257443de6..43cdedf25ac42de0136aa84001aa9fdb6f439a51 100644 GIT binary patch delta 31 ncmeBP&e*-2kW;SD9Uao~)8`;*ga~LG%W+hb`S8m?R9{COcsk#d_ delta 31 ncmbRChI!f>W;SD9Uan*88`;*gbC?*H6lR$h8*kpr9{COcsaOj8 diff --git a/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/__init__.cpython-36.pyc index 415a61fa0e1e6fa5da5f3d365569389ea2a12838..f77814abb3e513634de49ae82db6b901d9e9bbbd 100644 GIT binary patch delta 28 jcmbQpK9QZxn3tDpA=gGWYi16E#N4c;O5@7Op3EKqVABUo delta 28 jcmbQpK9QZxn3tF982d&xYi14;J8@Ot1? zN0x}{XYhm30S)eK9$PeQnO0s4))S$G^SZ0ARNYF|Wz$|;a)Gq|=e@~GW4*=`c)&;t z*SkS=qa~Z2GnwOx5W;mTBT^P;|LVTAXgOZ3Kc8W=Qqm2YE$Yl+(=a!9f4ZHlax(s^ zcLC;M>KJ;ZmU7(NKZ%?C$M~DxEhL_+o0X~MuG0eDt1$m{xt@xs{@L^AsrPNLJ;BQ2 znKVreVllu*NdCD*#K3Wh}_+i?-W+Pkz?f`dz4d4-w2QUO|6L<<( zK!uklq9n^-Pb4M3PxQZd1{r5B8V%cWT-|b=+H{CePIqd@AeziPwF^wI6iq|48Fo2m zTBcRNDe8txnF!|1f+;@+-E-wMQN~7LsFtWJSJ@i2C<41c1n2+;6lGFjF@$KHX+Q!< d0<8f46IK8y@K{2qc5a&*F3ZYpy7-sO>>r6~^Kt+H delta 967 zcmZvb&rTCj6vpRPI+P-aP@qWL00yNk|J$M)La~6TfJ)ThDADQk(hhW{_0DZ1abaSj z8{@`n-1r2#GZPKIfNY2>SMw6Qg7<5SF^0wb=FE4`{mz^-caHat_taEJNAPFsSM^6< zAf4jRcCR=o_pon^5KRn)Lz0;=B}49~a6ch2*Bw|Q?IVh!uo!Sr_y)6NOymZS)P^d0 zBUv&b9z>F4RJ@9OQ>T$PBT~^h;Y0_d-@EA8KthV2<>dq=6rzw85+orXOSr$Hx%LZ- zQe@YF9Iyl|11oMaK1s-;&=R9PNbuTtWy>mW=oXEiVXNYO;$z3U)Z;$3iVYiXCfP+U z)opG;SOZjGUcw7dyWl)Gc?lcD-uUmiO)1A)>*YK@)9oVl{6?i_b9Typ)P&bPw>Ggx z)JBFloE(Y6ovolm%Z_Om;{Il$RJ340=lbm$uhuwQaJ#2&lCJ-}w?%n6W;})mjN-v& zH}Gq-WwR?LbGQ~jxJe!E5lcJwS8rHrohPf!=d+Af%ep~xC7n5J0p?G{aH@x_3o`RM zb{*zH>KJ;po^sOLKZ)DoVCHQskHqs$GmF}MlNRZIl{H>h=(8cUF?;c1_Cq&pPqEq& znG~HJ#iEZT<&8}?Vr;>lUYk*|9j@Elsh#X3>-%gYI*AnkZxAFjUKw%T>045(U5pLO?Gtq$u+Wiy%bn>@qM0 eOaNT~{u5>ZI`BxsQ!DvhYH*g7-SmqundLw8Q|nCt diff --git a/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/_inputstream.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/_inputstream.cpython-36.pyc index 82aef96f4126f30b1cd5c39db7edaca71a5ecd0d..52995c6bdf18203422db73ca1e6ec4fba3475de4 100644 GIT binary patch delta 31 ncmZqO$k@7(k&!YuP*wJBeVz*dwyz7K delta 31 ncmex=g6aPWCN^VUUan*88`sjM6ZiMd%xmBy8u7qcFe0|1cO3F80& delta 29 lcmaFj@x+78n3tF982d)HsjM6(#wCSW=EcUF7qcFe0|1bB38?@8 diff --git a/lib/python3.6/site-packages/pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-36.pyc index 08d7606f079bb6e63176be01dec0a99adca90bd4..010e7a004d800b08ca3e44827250419e612b3b9b 100644 GIT binary patch delta 28 jcmeyt^n;1bn3tDpA=gGWIYthH#N4c;O5@7OI*dL5b7KeA delta 28 jcmeyt^n;1bn3tF982d&xIYtf>^Nbt@iMd%xmBy8u?=s$D1^|BU34Z_p delta 29 lcmdnVy_1{Gn3tF982d)H^NbuO#wCSW=EcUF?=s$D1^|AH2}J+^ diff --git a/lib/python3.6/site-packages/pip/_vendor/html5lib/_trie/__pycache__/datrie.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/html5lib/_trie/__pycache__/datrie.cpython-36.pyc index c39193a643cc9a5e2b63937217a1d9e0fc02ce72..0a30f3abee8f8d235733c1a907003484c84ca0f3 100644 GIT binary patch delta 29 kcmdnRzl)#En3tDpA=gH>Y$gta#N4c;O5@7Sl}wJT0Cx-sDgXcg delta 29 kcmdnRzl)#En3tF982d)HY$gs9|0Az^=EdT%j delta 29 kcmZn{Y!_rR=H=x&#=en_iHXC+xTG-4yx4fN08=>|0Awcy^8f$< diff --git a/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-36.pyc index caea555a5c4e9f01b249dc3fd7b17b6dc1885dbe..31f1188f3bcb4aab9aea0dadabfd580f7abb26d0 100644 GIT binary patch delta 26 hcmbQvIGvHrn3tDpA=gAUPY#2`+^nQZ_y7O^ delta 29 kcmZ3;wvdg@n3tF982d&x8Ac8hXhsf$#N4c;O5@7SnT*`50D)WxKmY&$ delta 29 kcmeyu^M!}an3tF982d)HXhsebFN_=piMd%xmBy8unV1CG0d;K$#Q*>R delta 29 kcmbO%G+Btvn3tF982d)HFN_=}#wCSW=EcUFnV1CG0d)%pivR!s diff --git a/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/optionaltags.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/optionaltags.cpython-36.pyc index ce4743fe79e2da5b40c1ec9bb4cae5092bc28005..0b8dc345076b8c873eee497558e086e75d6859df 100644 GIT binary patch delta 29 lcmdlizFC~jn3tDpA=gH>nT#9;iMd%xmBy8umoxHk0RVbc2vz_9 delta 29 lcmdlizFC~jn3tF982d)HnT#AJ#wCSW=EcUFmoxHk0RVaP2pj+a diff --git a/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/sanitizer.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/sanitizer.cpython-36.pyc index 0b62fe8eb9d76e8aad3288bbab3ccaa804c218b6..ab857707020e5dfdf35e623fbb6f2bb3de5114a4 100644 GIT binary patch delta 31 ncmX@s!+5NRkhfEv>iMd%xmBy8u-!t7|1OS8T3Bv#Y delta 29 lcmX@jd76{Wn3tF982d)HhfEwM#wCSW=EcUF-!t7|1OS7G35fsz diff --git a/lib/python3.6/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/__init__.cpython-36.pyc index 2242fa5dd69787d1bf742601d0ce2ad7b22a47f9..c5aec0f11b2ddcbed691307dea4360dc581970b6 100644 GIT binary patch delta 28 jcmbQnJdK&nn3tDpA=gGWQ$`Mh#N4c;O5@7O&WynTV2}q% delta 28 jcmbQnJdK&nn3tF982d&xQ$`LG(K@0Cy<}DgXcg delta 29 kcmX@jeVUuin3tF982d&xM`jKa(K@0CvX*@Bjb+ diff --git a/lib/python3.6/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/sax.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/sax.cpython-36.pyc index aa9ee0ba85de8ee6adf30e6c26b0ca507022b9b0..83461022ac3317e3a2307ec6dba92f3c3ab18cd0 100644 GIT binary patch delta 29 kcmdnVwUdj@n3tDpA=gGW9u^LR#N4c;O5@7SQY`X}0B$x1J^%m! delta 29 kcmdnVwUdj@n3tF982d&x9u^K0R delta 29 kcmeD1=jwFTc| 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 diff --git a/lib/python3.6/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/etree_lxml.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/etree_lxml.cpython-36.pyc index 4f9f0b8287b4ecbd21a0156da3fce8a2d3052c19..c398fb6213c09cf70cefdf105f319346e7815816 100644 GIT binary patch delta 2699 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 diff --git a/lib/python3.6/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/__init__.cpython-36.pyc index f0da28d71fa92b79fb0c0b7da2213f8e25fa0175..d7276e52a8e2dcca33d6effbf375b1ea9cda19a7 100644 GIT binary patch delta 29 kcmX>gdq9@Wn3tDpA=gGWEp`rr#N4c;O5@7S7VI7D0Cy$`BLDyZ delta 29 kcmX>gdq9@Wn3tF982d&xEp`qQPx# diff --git a/lib/python3.6/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/base.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/base.cpython-36.pyc index 489cdd4cf7cad305f76c02b6ef74ba43ed64e32f..dd604882ee0f717c912693b50329ea1cf9cda8fa 100644 GIT binary patch delta 29 kcmdm@yhWMKn3tDpA=gH>8YT{d#N4c;O5@7ST})d10DB||TL1t6 delta 29 kcmdm@yhWMKn3tF982d)H8YT`CWsHosHm_wAViDqDU|=ZX1rnM}Mf@PPz~qap_KbX!1=++I zc_wSJO%{{|3g6<)OUz9zE=WvHE#jMemd%C3ATc*9snWP|vn0DKqa)myB1VW=Z~;x$ zB4LoZA|L`RsthuZEwP{=H7`Yztw;qVp*nd!hqQnOh^YrB^f#a4P+&{}YXTVyc4rYg zkoEFE5EPjKSt!PXOfE8nsf3#i5-T`mJ^^XRV%sgYg2bX!pdKXufpqhxrz z=k8E50O>ac5#}Jm21J0gXfhV*!q`RnlUsR|1sy@cthd;m^K)}SCi6|+$)m-1Yw{Bw z4Iz*mia!0xa=dDcZj)VkyR>9Ll5Rla79Y@d*N~#rRNwrR(wtNz$AO)xKlvxG5dej4 Ba~uEw delta 570 zcmZvXF;Buk7=}5uSA-tgIv4^WMhse_RVnJ=phg%a4o++hy%>$O^?=09$;7zc4{&oK z4u;7;;9%n5WYXEipWvkT9a16M;mw=(>-&7)b+g?pwh2i*sSo%Lp?dEg852e_7K<@W zh&jem;HUVjvV#cM@hnPm6LUQ);&9S)nzR)-4ax|A!IgN~Zl9lSwd`J6t)jgM!%&|U z1*XCb;Ld=^bRKxv2?FZ5CT4jUEb!ZSW_l6qN+eeAIX;J6SpuxQlc~aee2I^32seTU zGFuz`8L=T)2PuKrAb&R15(#uEHvwOw`+W8H{BS(*1C|r>P-*xbug%iZpLj04Fx8)z zK>eR>Ar2fyMQ7-J&?d*UeJCe2{+7HhtU|vGvI(*c0u>Xn<$-4wztZyhF2qWx?)%Lq zkO_a(im1-twIu^)BRz}fNC8!NmE06FFsuj(Q(}Adh*5gryPY#SbeufX;-94S4Uu(m AlmGw# diff --git a/lib/python3.6/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/etree_lxml.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/etree_lxml.cpython-36.pyc index 4406841428cc78d77aab5fcde5d91fb48bcff392..c3d46d48d1e9e356f758b6222f5adb401ebebe0e 100644 GIT binary patch delta 131 zcmca$e8HH_n3tDpA=gH>tBf25iMd%xmBy8uA2ZtUGv3;)Ab6XJ(RK14;S5%11_p*( zlQTt>1${s)&b-9j)Z&7~ diff --git a/lib/python3.6/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/genshi.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/genshi.cpython-36.pyc index 0032be298421fbe1bafcc38897bc02108287702c..6f218832953b2fcba03acfd8a2248c5443b8832b 100644 GIT binary patch delta 29 lcmdnax1Ep8n3tDpA=gH>UM3EM#N4c;O5@7Svzg|w004Q52*3aU delta 29 lcmdnax1Ep8n3tF982d)HUM3C`gw)bv(+7fq~&M5W@izkmUfx#S%awg&~D8has0Sijfh-X3Aj-VMt*PX3%7L z$q1CzWW2>4A77SQRGgWg7atGgGHUs0GT-7UNKDR7OiztZNi0b$0-1P=B{{z+btOX) z8;}Dgep%?3&r ayk0@&Ee@O9{FKt1R6CFxib2NnFaiLz0yP)_ literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..153fd8be1c37320541d5188e387887470beb1030 GIT binary patch literal 3055 zcmchZ&5zqe6u@Wv9VeUJhNY#Yl(fCzO5I&32oAI?bSux!Bk(uSBb+(Hng3zLt*4%P=K}AIvzzQkt5!%jnm03VCiC&;_ukBvg$4JK`=|f7 z#n@vu_nBB;$5i}`LNLKomT{kFny+QLuV;pDWTtO&CN!a^mT#%t_U+j2JHnW7zws#( zrm!9|VZ~P8o#?)c8e2H1aZuAlO$#**;iASx%>ruLsA-B8YFaVr7AJ9aGUo5i_3)=4-eG-10;2>jF0_Oe`6~!bLQs zc^&7Dq*auVL}f⩔l<<*D)0?q_*18V(0g#-bb3Cc0mSxk!_IyL;igwebbXz{ZZA1}6SD^ScYgg8n5_;!4mfP`@PjN8?FwM;pNRyl8Vb~VburjAyIJ8E=VYC-ce&Eaj$;D)x_QifTn59j~4%bYomng*JiG($XY8>Cujg@fW_y__ogm1=EDi$c20=Cuqm;_6Ah;o|< zivVJ27Q-|tr46Y^vlP+AZdqqIa1 zO?Gi;)#nh0vK?%WwzgsjYOgwn6BcVI7~gX{m!tDxO(o5u8o48Pd0Xk0^fqtt-SbC* zSUEU$&oiJy8zSz3*n$frj-&KdYEDW?IuN%7iE}7v9zar z!)r9kX%te&YYom&l^zEQZg?F_N7#n5)J_lpQ3-F7=#n^3Vnz*xwHe2CR!Z#Ynb+UruqS%DRQh+2f96G zF&FP`O}1{A5Qo_vNXi&`c(okzqM0dX6M8tzHjOuRAgaIYgty{QyzqpVaDx8agj7E; zA>9hssY4e<$@*OIQk$^8t|Z3o(khX7q5X(=f~WVSL9YVOmImExvs+DelG)W$M=dy@ zt4{}H3rRz>eWT2_S3?c%313;3dTtc5p&k`Cb9~v*ML3&B#T>XuIx-&6hK@U1+1!qC zqHVkiVJE{*1)T!J*r;&}f13Ki71VhhX+#5<+e{tdl_$^x3*JT{HM|JyXpjw)G_E~| zRwmDUq9S!Hjz(Iw)?+(N(LKBmTFtSWaXzeH71s#Jfr6 literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..36757be96964af36af2fa7a71b5857a5733a79fd GIT binary patch literal 568 zcma)3y-ve05VrHvx)q&xfviO>si=e)5TYs!S+cY&T~M0y5R}B0<02I?QC@_RC*d8k zvcM}aahIy7LPEmQ-FLRnpFe*d_j=uz?%U#nG4_t}GaRfgF{%M3V8C-W-y%nJz|H7P2Aqg5|jxuD3dT%g--0TUf1opn#`tA zFXN_-`QLg#ZuJ;qXtZoo3#WBwu5QYV8i;ep-}#gO0Cy}pxZzJ67{1ww9|qA?JPA%l zqq6{%tb$V6U}dvBt7K3nh15psKpSOMs&e$@Fjh7ybS?{7S_#+2C_@%kzr~5&>F%C3 uQV{q3+Dny@wNKL1#t=iQ4Q=o7koBf{sW>kbta5ol|JVGR;KC8EaK8aB2X#XL literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/idna/__pycache__/core.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/idna/__pycache__/core.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..75f1c5c3582dc4dff023b42c4c80d9ce23348170 GIT binary patch literal 8925 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 literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..36486e1bc7a962ad78eed10bae41f44d784618e2 GIT binary patch literal 225857 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

NHKArmNHO>NG>0W~$RHb(-y2 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 bovHrZdu&NlLoeT6J^OC_Z}#6(pY#6>Dwc!o literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/idna/codec.py b/lib/python3.6/site-packages/pip/_vendor/idna/codec.py new file mode 100644 index 0000000..98c65ea --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/idna/codec.py @@ -0,0 +1,118 @@ +from .core import encode, decode, alabel, ulabel, IDNAError +import codecs +import re + +_unicode_dots_re = re.compile(u'[\u002e\u3002\uff0e\uff61]') + +class Codec(codecs.Codec): + + def encode(self, data, errors='strict'): + + if errors != 'strict': + raise IDNAError("Unsupported error handling \"{0}\"".format(errors)) + + if not data: + return "", 0 + + return encode(data), len(data) + + def decode(self, data, errors='strict'): + + if errors != 'strict': + raise IDNAError("Unsupported error handling \"{0}\"".format(errors)) + + if not data: + return u"", 0 + + return decode(data), len(data) + +class IncrementalEncoder(codecs.BufferedIncrementalEncoder): + def _buffer_encode(self, data, errors, final): + if errors != 'strict': + raise IDNAError("Unsupported error handling \"{0}\"".format(errors)) + + if not data: + return ("", 0) + + labels = _unicode_dots_re.split(data) + trailing_dot = u'' + if labels: + if not labels[-1]: + trailing_dot = '.' + del labels[-1] + elif not final: + # Keep potentially unfinished label until the next call + del labels[-1] + if labels: + trailing_dot = '.' + + result = [] + size = 0 + for label in labels: + result.append(alabel(label)) + if size: + size += 1 + size += len(label) + + # Join with U+002E + result = ".".join(result) + trailing_dot + size += len(trailing_dot) + return (result, size) + +class IncrementalDecoder(codecs.BufferedIncrementalDecoder): + def _buffer_decode(self, data, errors, final): + if errors != 'strict': + raise IDNAError("Unsupported error handling \"{0}\"".format(errors)) + + if not data: + return (u"", 0) + + # IDNA allows decoding to operate on Unicode strings, too. + if isinstance(data, unicode): + labels = _unicode_dots_re.split(data) + else: + # Must be ASCII string + data = str(data) + unicode(data, "ascii") + labels = data.split(".") + + trailing_dot = u'' + if labels: + if not labels[-1]: + trailing_dot = u'.' + del labels[-1] + elif not final: + # Keep potentially unfinished label until the next call + del labels[-1] + if labels: + trailing_dot = u'.' + + result = [] + size = 0 + for label in labels: + result.append(ulabel(label)) + if size: + size += 1 + size += len(label) + + result = u".".join(result) + trailing_dot + size += len(trailing_dot) + return (result, size) + + +class StreamWriter(Codec, codecs.StreamWriter): + pass + +class StreamReader(Codec, codecs.StreamReader): + pass + +def getregentry(): + return codecs.CodecInfo( + name='idna', + encode=Codec().encode, + decode=Codec().decode, + incrementalencoder=IncrementalEncoder, + incrementaldecoder=IncrementalDecoder, + streamwriter=StreamWriter, + streamreader=StreamReader, + ) diff --git a/lib/python3.6/site-packages/pip/_vendor/idna/compat.py b/lib/python3.6/site-packages/pip/_vendor/idna/compat.py new file mode 100644 index 0000000..4d47f33 --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/idna/compat.py @@ -0,0 +1,12 @@ +from .core import * +from .codec import * + +def ToASCII(label): + return encode(label) + +def ToUnicode(label): + return decode(label) + +def nameprep(s): + raise NotImplementedError("IDNA 2008 does not utilise nameprep protocol") + diff --git a/lib/python3.6/site-packages/pip/_vendor/idna/core.py b/lib/python3.6/site-packages/pip/_vendor/idna/core.py new file mode 100644 index 0000000..b55b664 --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/idna/core.py @@ -0,0 +1,387 @@ +from . import idnadata +import bisect +import unicodedata +import re +import sys +from .intranges import intranges_contain + +_virama_combining_class = 9 +_alabel_prefix = b'xn--' +_unicode_dots_re = re.compile(u'[\u002e\u3002\uff0e\uff61]') + +if sys.version_info[0] == 3: + unicode = str + unichr = chr + +class IDNAError(UnicodeError): + """ Base exception for all IDNA-encoding related problems """ + pass + + +class IDNABidiError(IDNAError): + """ Exception when bidirectional requirements are not satisfied """ + pass + + +class InvalidCodepoint(IDNAError): + """ Exception when a disallowed or unallocated codepoint is used """ + pass + + +class InvalidCodepointContext(IDNAError): + """ Exception when the codepoint is not valid in the context it is used """ + pass + + +def _combining_class(cp): + return unicodedata.combining(unichr(cp)) + +def _is_script(cp, script): + return intranges_contain(ord(cp), idnadata.scripts[script]) + +def _punycode(s): + return s.encode('punycode') + +def _unot(s): + return 'U+{0:04X}'.format(s) + + +def valid_label_length(label): + + if len(label) > 63: + return False + return True + + +def valid_string_length(label, trailing_dot): + + if len(label) > (254 if trailing_dot else 253): + return False + return True + + +def check_bidi(label, check_ltr=False): + + # Bidi rules should only be applied if string contains RTL characters + bidi_label = False + for (idx, cp) in enumerate(label, 1): + direction = unicodedata.bidirectional(cp) + if direction == '': + # String likely comes from a newer version of Unicode + raise IDNABidiError('Unknown directionality in label {0} at position {1}'.format(repr(label), idx)) + if direction in ['R', 'AL', 'AN']: + bidi_label = True + break + if not bidi_label and not check_ltr: + return True + + # Bidi rule 1 + direction = unicodedata.bidirectional(label[0]) + if direction in ['R', 'AL']: + rtl = True + elif direction == 'L': + rtl = False + else: + raise IDNABidiError('First codepoint in label {0} must be directionality L, R or AL'.format(repr(label))) + + valid_ending = False + number_type = False + for (idx, cp) in enumerate(label, 1): + direction = unicodedata.bidirectional(cp) + + if rtl: + # Bidi rule 2 + if not direction in ['R', 'AL', 'AN', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']: + raise IDNABidiError('Invalid direction for codepoint at position {0} in a right-to-left label'.format(idx)) + # Bidi rule 3 + if direction in ['R', 'AL', 'EN', 'AN']: + valid_ending = True + elif direction != 'NSM': + valid_ending = False + # Bidi rule 4 + if direction in ['AN', 'EN']: + if not number_type: + number_type = direction + else: + if number_type != direction: + raise IDNABidiError('Can not mix numeral types in a right-to-left label') + else: + # Bidi rule 5 + if not direction in ['L', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']: + raise IDNABidiError('Invalid direction for codepoint at position {0} in a left-to-right label'.format(idx)) + # Bidi rule 6 + if direction in ['L', 'EN']: + valid_ending = True + elif direction != 'NSM': + valid_ending = False + + if not valid_ending: + raise IDNABidiError('Label ends with illegal codepoint directionality') + + return True + + +def check_initial_combiner(label): + + if unicodedata.category(label[0])[0] == 'M': + raise IDNAError('Label begins with an illegal combining character') + return True + + +def check_hyphen_ok(label): + + if label[2:4] == '--': + raise IDNAError('Label has disallowed hyphens in 3rd and 4th position') + if label[0] == '-' or label[-1] == '-': + raise IDNAError('Label must not start or end with a hyphen') + return True + + +def check_nfc(label): + + if unicodedata.normalize('NFC', label) != label: + raise IDNAError('Label must be in Normalization Form C') + + +def valid_contextj(label, pos): + + cp_value = ord(label[pos]) + + if cp_value == 0x200c: + + if pos > 0: + if _combining_class(ord(label[pos - 1])) == _virama_combining_class: + return True + + ok = False + for i in range(pos-1, -1, -1): + joining_type = idnadata.joining_types.get(ord(label[i])) + if joining_type == ord('T'): + continue + if joining_type in [ord('L'), ord('D')]: + ok = True + break + + if not ok: + return False + + ok = False + for i in range(pos+1, len(label)): + joining_type = idnadata.joining_types.get(ord(label[i])) + if joining_type == ord('T'): + continue + if joining_type in [ord('R'), ord('D')]: + ok = True + break + return ok + + if cp_value == 0x200d: + + if pos > 0: + if _combining_class(ord(label[pos - 1])) == _virama_combining_class: + return True + return False + + else: + + return False + + +def valid_contexto(label, pos, exception=False): + + cp_value = ord(label[pos]) + + if cp_value == 0x00b7: + if 0 < pos < len(label)-1: + if ord(label[pos - 1]) == 0x006c and ord(label[pos + 1]) == 0x006c: + return True + return False + + elif cp_value == 0x0375: + if pos < len(label)-1 and len(label) > 1: + return _is_script(label[pos + 1], 'Greek') + return False + + elif cp_value == 0x05f3 or cp_value == 0x05f4: + if pos > 0: + return _is_script(label[pos - 1], 'Hebrew') + return False + + elif cp_value == 0x30fb: + for cp in label: + if cp == u'\u30fb': + continue + if _is_script(cp, 'Hiragana') or _is_script(cp, 'Katakana') or _is_script(cp, 'Han'): + return True + return False + + elif 0x660 <= cp_value <= 0x669: + for cp in label: + if 0x6f0 <= ord(cp) <= 0x06f9: + return False + return True + + elif 0x6f0 <= cp_value <= 0x6f9: + for cp in label: + if 0x660 <= ord(cp) <= 0x0669: + return False + return True + + +def check_label(label): + + if isinstance(label, (bytes, bytearray)): + label = label.decode('utf-8') + if len(label) == 0: + raise IDNAError('Empty Label') + + check_nfc(label) + check_hyphen_ok(label) + check_initial_combiner(label) + + for (pos, cp) in enumerate(label): + cp_value = ord(cp) + if intranges_contain(cp_value, idnadata.codepoint_classes['PVALID']): + continue + elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTJ']): + if not valid_contextj(label, pos): + raise InvalidCodepointContext('Joiner {0} not allowed at position {1} in {2}'.format(_unot(cp_value), pos+1, repr(label))) + elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTO']): + if not valid_contexto(label, pos): + raise InvalidCodepointContext('Codepoint {0} not allowed at position {1} in {2}'.format(_unot(cp_value), pos+1, repr(label))) + else: + raise InvalidCodepoint('Codepoint {0} at position {1} of {2} not allowed'.format(_unot(cp_value), pos+1, repr(label))) + + check_bidi(label) + + +def alabel(label): + + try: + label = label.encode('ascii') + try: + ulabel(label) + except IDNAError: + raise IDNAError('The label {0} is not a valid A-label'.format(label)) + if not valid_label_length(label): + raise IDNAError('Label too long') + return label + except UnicodeEncodeError: + pass + + if not label: + raise IDNAError('No Input') + + label = unicode(label) + check_label(label) + label = _punycode(label) + label = _alabel_prefix + label + + if not valid_label_length(label): + raise IDNAError('Label too long') + + return label + + +def ulabel(label): + + if not isinstance(label, (bytes, bytearray)): + try: + label = label.encode('ascii') + except UnicodeEncodeError: + check_label(label) + return label + + label = label.lower() + if label.startswith(_alabel_prefix): + label = label[len(_alabel_prefix):] + else: + check_label(label) + return label.decode('ascii') + + label = label.decode('punycode') + check_label(label) + return label + + +def uts46_remap(domain, std3_rules=True, transitional=False): + """Re-map the characters in the string according to UTS46 processing.""" + from .uts46data import uts46data + output = u"" + try: + for pos, char in enumerate(domain): + code_point = ord(char) + uts46row = uts46data[code_point if code_point < 256 else + bisect.bisect_left(uts46data, (code_point, "Z")) - 1] + status = uts46row[1] + replacement = uts46row[2] if len(uts46row) == 3 else None + if (status == "V" or + (status == "D" and not transitional) or + (status == "3" and std3_rules and replacement is None)): + output += char + elif replacement is not None and (status == "M" or + (status == "3" and std3_rules) or + (status == "D" and transitional)): + output += replacement + elif status != "I": + raise IndexError() + return unicodedata.normalize("NFC", output) + except IndexError: + raise InvalidCodepoint( + "Codepoint {0} not allowed at position {1} in {2}".format( + _unot(code_point), pos + 1, repr(domain))) + + +def encode(s, strict=False, uts46=False, std3_rules=False, transitional=False): + + if isinstance(s, (bytes, bytearray)): + s = s.decode("ascii") + if uts46: + s = uts46_remap(s, std3_rules, transitional) + trailing_dot = False + result = [] + if strict: + labels = s.split('.') + else: + labels = _unicode_dots_re.split(s) + while labels and not labels[0]: + del labels[0] + if not labels: + raise IDNAError('Empty domain') + if labels[-1] == '': + del labels[-1] + trailing_dot = True + for label in labels: + result.append(alabel(label)) + if trailing_dot: + result.append(b'') + s = b'.'.join(result) + if not valid_string_length(s, trailing_dot): + raise IDNAError('Domain too long') + return s + + +def decode(s, strict=False, uts46=False, std3_rules=False): + + if isinstance(s, (bytes, bytearray)): + s = s.decode("ascii") + if uts46: + s = uts46_remap(s, std3_rules, False) + trailing_dot = False + result = [] + if not strict: + labels = _unicode_dots_re.split(s) + else: + labels = s.split(u'.') + while labels and not labels[0]: + del labels[0] + if not labels: + raise IDNAError('Empty domain') + if not labels[-1]: + del labels[-1] + trailing_dot = True + for label in labels: + result.append(ulabel(label)) + if trailing_dot: + result.append(u'') + return u'.'.join(result) diff --git a/lib/python3.6/site-packages/pip/_vendor/idna/idnadata.py b/lib/python3.6/site-packages/pip/_vendor/idna/idnadata.py new file mode 100644 index 0000000..c48f1b5 --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/idna/idnadata.py @@ -0,0 +1,1585 @@ +# This file is automatically generated by tools/idna-data + +__version__ = "6.3.0" +scripts = { + 'Greek': ( + 0x37000000374, + 0x37500000378, + 0x37a0000037e, + 0x38400000385, + 0x38600000387, + 0x3880000038b, + 0x38c0000038d, + 0x38e000003a2, + 0x3a3000003e2, + 0x3f000000400, + 0x1d2600001d2b, + 0x1d5d00001d62, + 0x1d6600001d6b, + 0x1dbf00001dc0, + 0x1f0000001f16, + 0x1f1800001f1e, + 0x1f2000001f46, + 0x1f4800001f4e, + 0x1f5000001f58, + 0x1f5900001f5a, + 0x1f5b00001f5c, + 0x1f5d00001f5e, + 0x1f5f00001f7e, + 0x1f8000001fb5, + 0x1fb600001fc5, + 0x1fc600001fd4, + 0x1fd600001fdc, + 0x1fdd00001ff0, + 0x1ff200001ff5, + 0x1ff600001fff, + 0x212600002127, + 0x101400001018b, + 0x1d2000001d246, + ), + 'Han': ( + 0x2e8000002e9a, + 0x2e9b00002ef4, + 0x2f0000002fd6, + 0x300500003006, + 0x300700003008, + 0x30210000302a, + 0x30380000303c, + 0x340000004db6, + 0x4e0000009fcd, + 0xf9000000fa6e, + 0xfa700000fada, + 0x200000002a6d7, + 0x2a7000002b735, + 0x2b7400002b81e, + 0x2f8000002fa1e, + ), + 'Hebrew': ( + 0x591000005c8, + 0x5d0000005eb, + 0x5f0000005f5, + 0xfb1d0000fb37, + 0xfb380000fb3d, + 0xfb3e0000fb3f, + 0xfb400000fb42, + 0xfb430000fb45, + 0xfb460000fb50, + ), + 'Hiragana': ( + 0x304100003097, + 0x309d000030a0, + 0x1b0010001b002, + 0x1f2000001f201, + ), + 'Katakana': ( + 0x30a1000030fb, + 0x30fd00003100, + 0x31f000003200, + 0x32d0000032ff, + 0x330000003358, + 0xff660000ff70, + 0xff710000ff9e, + 0x1b0000001b001, + ), +} +joining_types = { + 0x600: 85, + 0x601: 85, + 0x602: 85, + 0x603: 85, + 0x604: 85, + 0x608: 85, + 0x60b: 85, + 0x620: 68, + 0x621: 85, + 0x622: 82, + 0x623: 82, + 0x624: 82, + 0x625: 82, + 0x626: 68, + 0x627: 82, + 0x628: 68, + 0x629: 82, + 0x62a: 68, + 0x62b: 68, + 0x62c: 68, + 0x62d: 68, + 0x62e: 68, + 0x62f: 82, + 0x630: 82, + 0x631: 82, + 0x632: 82, + 0x633: 68, + 0x634: 68, + 0x635: 68, + 0x636: 68, + 0x637: 68, + 0x638: 68, + 0x639: 68, + 0x63a: 68, + 0x63b: 68, + 0x63c: 68, + 0x63d: 68, + 0x63e: 68, + 0x63f: 68, + 0x640: 67, + 0x641: 68, + 0x642: 68, + 0x643: 68, + 0x644: 68, + 0x645: 68, + 0x646: 68, + 0x647: 68, + 0x648: 82, + 0x649: 68, + 0x64a: 68, + 0x66e: 68, + 0x66f: 68, + 0x671: 82, + 0x672: 82, + 0x673: 82, + 0x674: 85, + 0x675: 82, + 0x676: 82, + 0x677: 82, + 0x678: 68, + 0x679: 68, + 0x67a: 68, + 0x67b: 68, + 0x67c: 68, + 0x67d: 68, + 0x67e: 68, + 0x67f: 68, + 0x680: 68, + 0x681: 68, + 0x682: 68, + 0x683: 68, + 0x684: 68, + 0x685: 68, + 0x686: 68, + 0x687: 68, + 0x688: 82, + 0x689: 82, + 0x68a: 82, + 0x68b: 82, + 0x68c: 82, + 0x68d: 82, + 0x68e: 82, + 0x68f: 82, + 0x690: 82, + 0x691: 82, + 0x692: 82, + 0x693: 82, + 0x694: 82, + 0x695: 82, + 0x696: 82, + 0x697: 82, + 0x698: 82, + 0x699: 82, + 0x69a: 68, + 0x69b: 68, + 0x69c: 68, + 0x69d: 68, + 0x69e: 68, + 0x69f: 68, + 0x6a0: 68, + 0x6a1: 68, + 0x6a2: 68, + 0x6a3: 68, + 0x6a4: 68, + 0x6a5: 68, + 0x6a6: 68, + 0x6a7: 68, + 0x6a8: 68, + 0x6a9: 68, + 0x6aa: 68, + 0x6ab: 68, + 0x6ac: 68, + 0x6ad: 68, + 0x6ae: 68, + 0x6af: 68, + 0x6b0: 68, + 0x6b1: 68, + 0x6b2: 68, + 0x6b3: 68, + 0x6b4: 68, + 0x6b5: 68, + 0x6b6: 68, + 0x6b7: 68, + 0x6b8: 68, + 0x6b9: 68, + 0x6ba: 68, + 0x6bb: 68, + 0x6bc: 68, + 0x6bd: 68, + 0x6be: 68, + 0x6bf: 68, + 0x6c0: 82, + 0x6c1: 68, + 0x6c2: 68, + 0x6c3: 82, + 0x6c4: 82, + 0x6c5: 82, + 0x6c6: 82, + 0x6c7: 82, + 0x6c8: 82, + 0x6c9: 82, + 0x6ca: 82, + 0x6cb: 82, + 0x6cc: 68, + 0x6cd: 82, + 0x6ce: 68, + 0x6cf: 82, + 0x6d0: 68, + 0x6d1: 68, + 0x6d2: 82, + 0x6d3: 82, + 0x6d5: 82, + 0x6dd: 85, + 0x6ee: 82, + 0x6ef: 82, + 0x6fa: 68, + 0x6fb: 68, + 0x6fc: 68, + 0x6ff: 68, + 0x710: 82, + 0x712: 68, + 0x713: 68, + 0x714: 68, + 0x715: 82, + 0x716: 82, + 0x717: 82, + 0x718: 82, + 0x719: 82, + 0x71a: 68, + 0x71b: 68, + 0x71c: 68, + 0x71d: 68, + 0x71e: 82, + 0x71f: 68, + 0x720: 68, + 0x721: 68, + 0x722: 68, + 0x723: 68, + 0x724: 68, + 0x725: 68, + 0x726: 68, + 0x727: 68, + 0x728: 82, + 0x729: 68, + 0x72a: 82, + 0x72b: 68, + 0x72c: 82, + 0x72d: 68, + 0x72e: 68, + 0x72f: 82, + 0x74d: 82, + 0x74e: 68, + 0x74f: 68, + 0x750: 68, + 0x751: 68, + 0x752: 68, + 0x753: 68, + 0x754: 68, + 0x755: 68, + 0x756: 68, + 0x757: 68, + 0x758: 68, + 0x759: 82, + 0x75a: 82, + 0x75b: 82, + 0x75c: 68, + 0x75d: 68, + 0x75e: 68, + 0x75f: 68, + 0x760: 68, + 0x761: 68, + 0x762: 68, + 0x763: 68, + 0x764: 68, + 0x765: 68, + 0x766: 68, + 0x767: 68, + 0x768: 68, + 0x769: 68, + 0x76a: 68, + 0x76b: 82, + 0x76c: 82, + 0x76d: 68, + 0x76e: 68, + 0x76f: 68, + 0x770: 68, + 0x771: 82, + 0x772: 68, + 0x773: 82, + 0x774: 82, + 0x775: 68, + 0x776: 68, + 0x777: 68, + 0x778: 82, + 0x779: 82, + 0x77a: 68, + 0x77b: 68, + 0x77c: 68, + 0x77d: 68, + 0x77e: 68, + 0x77f: 68, + 0x7ca: 68, + 0x7cb: 68, + 0x7cc: 68, + 0x7cd: 68, + 0x7ce: 68, + 0x7cf: 68, + 0x7d0: 68, + 0x7d1: 68, + 0x7d2: 68, + 0x7d3: 68, + 0x7d4: 68, + 0x7d5: 68, + 0x7d6: 68, + 0x7d7: 68, + 0x7d8: 68, + 0x7d9: 68, + 0x7da: 68, + 0x7db: 68, + 0x7dc: 68, + 0x7dd: 68, + 0x7de: 68, + 0x7df: 68, + 0x7e0: 68, + 0x7e1: 68, + 0x7e2: 68, + 0x7e3: 68, + 0x7e4: 68, + 0x7e5: 68, + 0x7e6: 68, + 0x7e7: 68, + 0x7e8: 68, + 0x7e9: 68, + 0x7ea: 68, + 0x7fa: 67, + 0x840: 82, + 0x841: 68, + 0x842: 68, + 0x843: 68, + 0x844: 68, + 0x845: 68, + 0x846: 82, + 0x847: 68, + 0x848: 68, + 0x849: 82, + 0x84a: 68, + 0x84b: 68, + 0x84c: 68, + 0x84d: 68, + 0x84e: 68, + 0x84f: 82, + 0x850: 68, + 0x851: 68, + 0x852: 68, + 0x853: 68, + 0x854: 82, + 0x855: 68, + 0x856: 85, + 0x857: 85, + 0x858: 85, + 0x8a0: 68, + 0x8a2: 68, + 0x8a3: 68, + 0x8a4: 68, + 0x8a5: 68, + 0x8a6: 68, + 0x8a7: 68, + 0x8a8: 68, + 0x8a9: 68, + 0x8aa: 82, + 0x8ab: 82, + 0x8ac: 82, + 0x1806: 85, + 0x1807: 68, + 0x180a: 67, + 0x180e: 85, + 0x1820: 68, + 0x1821: 68, + 0x1822: 68, + 0x1823: 68, + 0x1824: 68, + 0x1825: 68, + 0x1826: 68, + 0x1827: 68, + 0x1828: 68, + 0x1829: 68, + 0x182a: 68, + 0x182b: 68, + 0x182c: 68, + 0x182d: 68, + 0x182e: 68, + 0x182f: 68, + 0x1830: 68, + 0x1831: 68, + 0x1832: 68, + 0x1833: 68, + 0x1834: 68, + 0x1835: 68, + 0x1836: 68, + 0x1837: 68, + 0x1838: 68, + 0x1839: 68, + 0x183a: 68, + 0x183b: 68, + 0x183c: 68, + 0x183d: 68, + 0x183e: 68, + 0x183f: 68, + 0x1840: 68, + 0x1841: 68, + 0x1842: 68, + 0x1843: 68, + 0x1844: 68, + 0x1845: 68, + 0x1846: 68, + 0x1847: 68, + 0x1848: 68, + 0x1849: 68, + 0x184a: 68, + 0x184b: 68, + 0x184c: 68, + 0x184d: 68, + 0x184e: 68, + 0x184f: 68, + 0x1850: 68, + 0x1851: 68, + 0x1852: 68, + 0x1853: 68, + 0x1854: 68, + 0x1855: 68, + 0x1856: 68, + 0x1857: 68, + 0x1858: 68, + 0x1859: 68, + 0x185a: 68, + 0x185b: 68, + 0x185c: 68, + 0x185d: 68, + 0x185e: 68, + 0x185f: 68, + 0x1860: 68, + 0x1861: 68, + 0x1862: 68, + 0x1863: 68, + 0x1864: 68, + 0x1865: 68, + 0x1866: 68, + 0x1867: 68, + 0x1868: 68, + 0x1869: 68, + 0x186a: 68, + 0x186b: 68, + 0x186c: 68, + 0x186d: 68, + 0x186e: 68, + 0x186f: 68, + 0x1870: 68, + 0x1871: 68, + 0x1872: 68, + 0x1873: 68, + 0x1874: 68, + 0x1875: 68, + 0x1876: 68, + 0x1877: 68, + 0x1880: 85, + 0x1881: 85, + 0x1882: 85, + 0x1883: 85, + 0x1884: 85, + 0x1885: 85, + 0x1886: 85, + 0x1887: 68, + 0x1888: 68, + 0x1889: 68, + 0x188a: 68, + 0x188b: 68, + 0x188c: 68, + 0x188d: 68, + 0x188e: 68, + 0x188f: 68, + 0x1890: 68, + 0x1891: 68, + 0x1892: 68, + 0x1893: 68, + 0x1894: 68, + 0x1895: 68, + 0x1896: 68, + 0x1897: 68, + 0x1898: 68, + 0x1899: 68, + 0x189a: 68, + 0x189b: 68, + 0x189c: 68, + 0x189d: 68, + 0x189e: 68, + 0x189f: 68, + 0x18a0: 68, + 0x18a1: 68, + 0x18a2: 68, + 0x18a3: 68, + 0x18a4: 68, + 0x18a5: 68, + 0x18a6: 68, + 0x18a7: 68, + 0x18a8: 68, + 0x18aa: 68, + 0x200c: 85, + 0x200d: 67, + 0x2066: 85, + 0x2067: 85, + 0x2068: 85, + 0x2069: 85, + 0xa840: 68, + 0xa841: 68, + 0xa842: 68, + 0xa843: 68, + 0xa844: 68, + 0xa845: 68, + 0xa846: 68, + 0xa847: 68, + 0xa848: 68, + 0xa849: 68, + 0xa84a: 68, + 0xa84b: 68, + 0xa84c: 68, + 0xa84d: 68, + 0xa84e: 68, + 0xa84f: 68, + 0xa850: 68, + 0xa851: 68, + 0xa852: 68, + 0xa853: 68, + 0xa854: 68, + 0xa855: 68, + 0xa856: 68, + 0xa857: 68, + 0xa858: 68, + 0xa859: 68, + 0xa85a: 68, + 0xa85b: 68, + 0xa85c: 68, + 0xa85d: 68, + 0xa85e: 68, + 0xa85f: 68, + 0xa860: 68, + 0xa861: 68, + 0xa862: 68, + 0xa863: 68, + 0xa864: 68, + 0xa865: 68, + 0xa866: 68, + 0xa867: 68, + 0xa868: 68, + 0xa869: 68, + 0xa86a: 68, + 0xa86b: 68, + 0xa86c: 68, + 0xa86d: 68, + 0xa86e: 68, + 0xa86f: 68, + 0xa870: 68, + 0xa871: 68, + 0xa872: 76, + 0xa873: 85, +} +codepoint_classes = { + 'PVALID': ( + 0x2d0000002e, + 0x300000003a, + 0x610000007b, + 0xdf000000f7, + 0xf800000100, + 0x10100000102, + 0x10300000104, + 0x10500000106, + 0x10700000108, + 0x1090000010a, + 0x10b0000010c, + 0x10d0000010e, + 0x10f00000110, + 0x11100000112, + 0x11300000114, + 0x11500000116, + 0x11700000118, + 0x1190000011a, + 0x11b0000011c, + 0x11d0000011e, + 0x11f00000120, + 0x12100000122, + 0x12300000124, + 0x12500000126, + 0x12700000128, + 0x1290000012a, + 0x12b0000012c, + 0x12d0000012e, + 0x12f00000130, + 0x13100000132, + 0x13500000136, + 0x13700000139, + 0x13a0000013b, + 0x13c0000013d, + 0x13e0000013f, + 0x14200000143, + 0x14400000145, + 0x14600000147, + 0x14800000149, + 0x14b0000014c, + 0x14d0000014e, + 0x14f00000150, + 0x15100000152, + 0x15300000154, + 0x15500000156, + 0x15700000158, + 0x1590000015a, + 0x15b0000015c, + 0x15d0000015e, + 0x15f00000160, + 0x16100000162, + 0x16300000164, + 0x16500000166, + 0x16700000168, + 0x1690000016a, + 0x16b0000016c, + 0x16d0000016e, + 0x16f00000170, + 0x17100000172, + 0x17300000174, + 0x17500000176, + 0x17700000178, + 0x17a0000017b, + 0x17c0000017d, + 0x17e0000017f, + 0x18000000181, + 0x18300000184, + 0x18500000186, + 0x18800000189, + 0x18c0000018e, + 0x19200000193, + 0x19500000196, + 0x1990000019c, + 0x19e0000019f, + 0x1a1000001a2, + 0x1a3000001a4, + 0x1a5000001a6, + 0x1a8000001a9, + 0x1aa000001ac, + 0x1ad000001ae, + 0x1b0000001b1, + 0x1b4000001b5, + 0x1b6000001b7, + 0x1b9000001bc, + 0x1bd000001c4, + 0x1ce000001cf, + 0x1d0000001d1, + 0x1d2000001d3, + 0x1d4000001d5, + 0x1d6000001d7, + 0x1d8000001d9, + 0x1da000001db, + 0x1dc000001de, + 0x1df000001e0, + 0x1e1000001e2, + 0x1e3000001e4, + 0x1e5000001e6, + 0x1e7000001e8, + 0x1e9000001ea, + 0x1eb000001ec, + 0x1ed000001ee, + 0x1ef000001f1, + 0x1f5000001f6, + 0x1f9000001fa, + 0x1fb000001fc, + 0x1fd000001fe, + 0x1ff00000200, + 0x20100000202, + 0x20300000204, + 0x20500000206, + 0x20700000208, + 0x2090000020a, + 0x20b0000020c, + 0x20d0000020e, + 0x20f00000210, + 0x21100000212, + 0x21300000214, + 0x21500000216, + 0x21700000218, + 0x2190000021a, + 0x21b0000021c, + 0x21d0000021e, + 0x21f00000220, + 0x22100000222, + 0x22300000224, + 0x22500000226, + 0x22700000228, + 0x2290000022a, + 0x22b0000022c, + 0x22d0000022e, + 0x22f00000230, + 0x23100000232, + 0x2330000023a, + 0x23c0000023d, + 0x23f00000241, + 0x24200000243, + 0x24700000248, + 0x2490000024a, + 0x24b0000024c, + 0x24d0000024e, + 0x24f000002b0, + 0x2b9000002c2, + 0x2c6000002d2, + 0x2ec000002ed, + 0x2ee000002ef, + 0x30000000340, + 0x34200000343, + 0x3460000034f, + 0x35000000370, + 0x37100000372, + 0x37300000374, + 0x37700000378, + 0x37b0000037e, + 0x39000000391, + 0x3ac000003cf, + 0x3d7000003d8, + 0x3d9000003da, + 0x3db000003dc, + 0x3dd000003de, + 0x3df000003e0, + 0x3e1000003e2, + 0x3e3000003e4, + 0x3e5000003e6, + 0x3e7000003e8, + 0x3e9000003ea, + 0x3eb000003ec, + 0x3ed000003ee, + 0x3ef000003f0, + 0x3f3000003f4, + 0x3f8000003f9, + 0x3fb000003fd, + 0x43000000460, + 0x46100000462, + 0x46300000464, + 0x46500000466, + 0x46700000468, + 0x4690000046a, + 0x46b0000046c, + 0x46d0000046e, + 0x46f00000470, + 0x47100000472, + 0x47300000474, + 0x47500000476, + 0x47700000478, + 0x4790000047a, + 0x47b0000047c, + 0x47d0000047e, + 0x47f00000480, + 0x48100000482, + 0x48300000488, + 0x48b0000048c, + 0x48d0000048e, + 0x48f00000490, + 0x49100000492, + 0x49300000494, + 0x49500000496, + 0x49700000498, + 0x4990000049a, + 0x49b0000049c, + 0x49d0000049e, + 0x49f000004a0, + 0x4a1000004a2, + 0x4a3000004a4, + 0x4a5000004a6, + 0x4a7000004a8, + 0x4a9000004aa, + 0x4ab000004ac, + 0x4ad000004ae, + 0x4af000004b0, + 0x4b1000004b2, + 0x4b3000004b4, + 0x4b5000004b6, + 0x4b7000004b8, + 0x4b9000004ba, + 0x4bb000004bc, + 0x4bd000004be, + 0x4bf000004c0, + 0x4c2000004c3, + 0x4c4000004c5, + 0x4c6000004c7, + 0x4c8000004c9, + 0x4ca000004cb, + 0x4cc000004cd, + 0x4ce000004d0, + 0x4d1000004d2, + 0x4d3000004d4, + 0x4d5000004d6, + 0x4d7000004d8, + 0x4d9000004da, + 0x4db000004dc, + 0x4dd000004de, + 0x4df000004e0, + 0x4e1000004e2, + 0x4e3000004e4, + 0x4e5000004e6, + 0x4e7000004e8, + 0x4e9000004ea, + 0x4eb000004ec, + 0x4ed000004ee, + 0x4ef000004f0, + 0x4f1000004f2, + 0x4f3000004f4, + 0x4f5000004f6, + 0x4f7000004f8, + 0x4f9000004fa, + 0x4fb000004fc, + 0x4fd000004fe, + 0x4ff00000500, + 0x50100000502, + 0x50300000504, + 0x50500000506, + 0x50700000508, + 0x5090000050a, + 0x50b0000050c, + 0x50d0000050e, + 0x50f00000510, + 0x51100000512, + 0x51300000514, + 0x51500000516, + 0x51700000518, + 0x5190000051a, + 0x51b0000051c, + 0x51d0000051e, + 0x51f00000520, + 0x52100000522, + 0x52300000524, + 0x52500000526, + 0x52700000528, + 0x5590000055a, + 0x56100000587, + 0x591000005be, + 0x5bf000005c0, + 0x5c1000005c3, + 0x5c4000005c6, + 0x5c7000005c8, + 0x5d0000005eb, + 0x5f0000005f3, + 0x6100000061b, + 0x62000000640, + 0x64100000660, + 0x66e00000675, + 0x679000006d4, + 0x6d5000006dd, + 0x6df000006e9, + 0x6ea000006f0, + 0x6fa00000700, + 0x7100000074b, + 0x74d000007b2, + 0x7c0000007f6, + 0x8000000082e, + 0x8400000085c, + 0x8a0000008a1, + 0x8a2000008ad, + 0x8e4000008ff, + 0x90000000958, + 0x96000000964, + 0x96600000970, + 0x97100000978, + 0x97900000980, + 0x98100000984, + 0x9850000098d, + 0x98f00000991, + 0x993000009a9, + 0x9aa000009b1, + 0x9b2000009b3, + 0x9b6000009ba, + 0x9bc000009c5, + 0x9c7000009c9, + 0x9cb000009cf, + 0x9d7000009d8, + 0x9e0000009e4, + 0x9e6000009f2, + 0xa0100000a04, + 0xa0500000a0b, + 0xa0f00000a11, + 0xa1300000a29, + 0xa2a00000a31, + 0xa3200000a33, + 0xa3500000a36, + 0xa3800000a3a, + 0xa3c00000a3d, + 0xa3e00000a43, + 0xa4700000a49, + 0xa4b00000a4e, + 0xa5100000a52, + 0xa5c00000a5d, + 0xa6600000a76, + 0xa8100000a84, + 0xa8500000a8e, + 0xa8f00000a92, + 0xa9300000aa9, + 0xaaa00000ab1, + 0xab200000ab4, + 0xab500000aba, + 0xabc00000ac6, + 0xac700000aca, + 0xacb00000ace, + 0xad000000ad1, + 0xae000000ae4, + 0xae600000af0, + 0xb0100000b04, + 0xb0500000b0d, + 0xb0f00000b11, + 0xb1300000b29, + 0xb2a00000b31, + 0xb3200000b34, + 0xb3500000b3a, + 0xb3c00000b45, + 0xb4700000b49, + 0xb4b00000b4e, + 0xb5600000b58, + 0xb5f00000b64, + 0xb6600000b70, + 0xb7100000b72, + 0xb8200000b84, + 0xb8500000b8b, + 0xb8e00000b91, + 0xb9200000b96, + 0xb9900000b9b, + 0xb9c00000b9d, + 0xb9e00000ba0, + 0xba300000ba5, + 0xba800000bab, + 0xbae00000bba, + 0xbbe00000bc3, + 0xbc600000bc9, + 0xbca00000bce, + 0xbd000000bd1, + 0xbd700000bd8, + 0xbe600000bf0, + 0xc0100000c04, + 0xc0500000c0d, + 0xc0e00000c11, + 0xc1200000c29, + 0xc2a00000c34, + 0xc3500000c3a, + 0xc3d00000c45, + 0xc4600000c49, + 0xc4a00000c4e, + 0xc5500000c57, + 0xc5800000c5a, + 0xc6000000c64, + 0xc6600000c70, + 0xc8200000c84, + 0xc8500000c8d, + 0xc8e00000c91, + 0xc9200000ca9, + 0xcaa00000cb4, + 0xcb500000cba, + 0xcbc00000cc5, + 0xcc600000cc9, + 0xcca00000cce, + 0xcd500000cd7, + 0xcde00000cdf, + 0xce000000ce4, + 0xce600000cf0, + 0xcf100000cf3, + 0xd0200000d04, + 0xd0500000d0d, + 0xd0e00000d11, + 0xd1200000d3b, + 0xd3d00000d45, + 0xd4600000d49, + 0xd4a00000d4f, + 0xd5700000d58, + 0xd6000000d64, + 0xd6600000d70, + 0xd7a00000d80, + 0xd8200000d84, + 0xd8500000d97, + 0xd9a00000db2, + 0xdb300000dbc, + 0xdbd00000dbe, + 0xdc000000dc7, + 0xdca00000dcb, + 0xdcf00000dd5, + 0xdd600000dd7, + 0xdd800000de0, + 0xdf200000df4, + 0xe0100000e33, + 0xe3400000e3b, + 0xe4000000e4f, + 0xe5000000e5a, + 0xe8100000e83, + 0xe8400000e85, + 0xe8700000e89, + 0xe8a00000e8b, + 0xe8d00000e8e, + 0xe9400000e98, + 0xe9900000ea0, + 0xea100000ea4, + 0xea500000ea6, + 0xea700000ea8, + 0xeaa00000eac, + 0xead00000eb3, + 0xeb400000eba, + 0xebb00000ebe, + 0xec000000ec5, + 0xec600000ec7, + 0xec800000ece, + 0xed000000eda, + 0xede00000ee0, + 0xf0000000f01, + 0xf0b00000f0c, + 0xf1800000f1a, + 0xf2000000f2a, + 0xf3500000f36, + 0xf3700000f38, + 0xf3900000f3a, + 0xf3e00000f43, + 0xf4400000f48, + 0xf4900000f4d, + 0xf4e00000f52, + 0xf5300000f57, + 0xf5800000f5c, + 0xf5d00000f69, + 0xf6a00000f6d, + 0xf7100000f73, + 0xf7400000f75, + 0xf7a00000f81, + 0xf8200000f85, + 0xf8600000f93, + 0xf9400000f98, + 0xf9900000f9d, + 0xf9e00000fa2, + 0xfa300000fa7, + 0xfa800000fac, + 0xfad00000fb9, + 0xfba00000fbd, + 0xfc600000fc7, + 0x10000000104a, + 0x10500000109e, + 0x10d0000010fb, + 0x10fd00001100, + 0x120000001249, + 0x124a0000124e, + 0x125000001257, + 0x125800001259, + 0x125a0000125e, + 0x126000001289, + 0x128a0000128e, + 0x1290000012b1, + 0x12b2000012b6, + 0x12b8000012bf, + 0x12c0000012c1, + 0x12c2000012c6, + 0x12c8000012d7, + 0x12d800001311, + 0x131200001316, + 0x13180000135b, + 0x135d00001360, + 0x138000001390, + 0x13a0000013f5, + 0x14010000166d, + 0x166f00001680, + 0x16810000169b, + 0x16a0000016eb, + 0x17000000170d, + 0x170e00001715, + 0x172000001735, + 0x174000001754, + 0x17600000176d, + 0x176e00001771, + 0x177200001774, + 0x1780000017b4, + 0x17b6000017d4, + 0x17d7000017d8, + 0x17dc000017de, + 0x17e0000017ea, + 0x18100000181a, + 0x182000001878, + 0x1880000018ab, + 0x18b0000018f6, + 0x19000000191d, + 0x19200000192c, + 0x19300000193c, + 0x19460000196e, + 0x197000001975, + 0x1980000019ac, + 0x19b0000019ca, + 0x19d0000019da, + 0x1a0000001a1c, + 0x1a2000001a5f, + 0x1a6000001a7d, + 0x1a7f00001a8a, + 0x1a9000001a9a, + 0x1aa700001aa8, + 0x1b0000001b4c, + 0x1b5000001b5a, + 0x1b6b00001b74, + 0x1b8000001bf4, + 0x1c0000001c38, + 0x1c4000001c4a, + 0x1c4d00001c7e, + 0x1cd000001cd3, + 0x1cd400001cf7, + 0x1d0000001d2c, + 0x1d2f00001d30, + 0x1d3b00001d3c, + 0x1d4e00001d4f, + 0x1d6b00001d78, + 0x1d7900001d9b, + 0x1dc000001de7, + 0x1dfc00001e00, + 0x1e0100001e02, + 0x1e0300001e04, + 0x1e0500001e06, + 0x1e0700001e08, + 0x1e0900001e0a, + 0x1e0b00001e0c, + 0x1e0d00001e0e, + 0x1e0f00001e10, + 0x1e1100001e12, + 0x1e1300001e14, + 0x1e1500001e16, + 0x1e1700001e18, + 0x1e1900001e1a, + 0x1e1b00001e1c, + 0x1e1d00001e1e, + 0x1e1f00001e20, + 0x1e2100001e22, + 0x1e2300001e24, + 0x1e2500001e26, + 0x1e2700001e28, + 0x1e2900001e2a, + 0x1e2b00001e2c, + 0x1e2d00001e2e, + 0x1e2f00001e30, + 0x1e3100001e32, + 0x1e3300001e34, + 0x1e3500001e36, + 0x1e3700001e38, + 0x1e3900001e3a, + 0x1e3b00001e3c, + 0x1e3d00001e3e, + 0x1e3f00001e40, + 0x1e4100001e42, + 0x1e4300001e44, + 0x1e4500001e46, + 0x1e4700001e48, + 0x1e4900001e4a, + 0x1e4b00001e4c, + 0x1e4d00001e4e, + 0x1e4f00001e50, + 0x1e5100001e52, + 0x1e5300001e54, + 0x1e5500001e56, + 0x1e5700001e58, + 0x1e5900001e5a, + 0x1e5b00001e5c, + 0x1e5d00001e5e, + 0x1e5f00001e60, + 0x1e6100001e62, + 0x1e6300001e64, + 0x1e6500001e66, + 0x1e6700001e68, + 0x1e6900001e6a, + 0x1e6b00001e6c, + 0x1e6d00001e6e, + 0x1e6f00001e70, + 0x1e7100001e72, + 0x1e7300001e74, + 0x1e7500001e76, + 0x1e7700001e78, + 0x1e7900001e7a, + 0x1e7b00001e7c, + 0x1e7d00001e7e, + 0x1e7f00001e80, + 0x1e8100001e82, + 0x1e8300001e84, + 0x1e8500001e86, + 0x1e8700001e88, + 0x1e8900001e8a, + 0x1e8b00001e8c, + 0x1e8d00001e8e, + 0x1e8f00001e90, + 0x1e9100001e92, + 0x1e9300001e94, + 0x1e9500001e9a, + 0x1e9c00001e9e, + 0x1e9f00001ea0, + 0x1ea100001ea2, + 0x1ea300001ea4, + 0x1ea500001ea6, + 0x1ea700001ea8, + 0x1ea900001eaa, + 0x1eab00001eac, + 0x1ead00001eae, + 0x1eaf00001eb0, + 0x1eb100001eb2, + 0x1eb300001eb4, + 0x1eb500001eb6, + 0x1eb700001eb8, + 0x1eb900001eba, + 0x1ebb00001ebc, + 0x1ebd00001ebe, + 0x1ebf00001ec0, + 0x1ec100001ec2, + 0x1ec300001ec4, + 0x1ec500001ec6, + 0x1ec700001ec8, + 0x1ec900001eca, + 0x1ecb00001ecc, + 0x1ecd00001ece, + 0x1ecf00001ed0, + 0x1ed100001ed2, + 0x1ed300001ed4, + 0x1ed500001ed6, + 0x1ed700001ed8, + 0x1ed900001eda, + 0x1edb00001edc, + 0x1edd00001ede, + 0x1edf00001ee0, + 0x1ee100001ee2, + 0x1ee300001ee4, + 0x1ee500001ee6, + 0x1ee700001ee8, + 0x1ee900001eea, + 0x1eeb00001eec, + 0x1eed00001eee, + 0x1eef00001ef0, + 0x1ef100001ef2, + 0x1ef300001ef4, + 0x1ef500001ef6, + 0x1ef700001ef8, + 0x1ef900001efa, + 0x1efb00001efc, + 0x1efd00001efe, + 0x1eff00001f08, + 0x1f1000001f16, + 0x1f2000001f28, + 0x1f3000001f38, + 0x1f4000001f46, + 0x1f5000001f58, + 0x1f6000001f68, + 0x1f7000001f71, + 0x1f7200001f73, + 0x1f7400001f75, + 0x1f7600001f77, + 0x1f7800001f79, + 0x1f7a00001f7b, + 0x1f7c00001f7d, + 0x1fb000001fb2, + 0x1fb600001fb7, + 0x1fc600001fc7, + 0x1fd000001fd3, + 0x1fd600001fd8, + 0x1fe000001fe3, + 0x1fe400001fe8, + 0x1ff600001ff7, + 0x214e0000214f, + 0x218400002185, + 0x2c3000002c5f, + 0x2c6100002c62, + 0x2c6500002c67, + 0x2c6800002c69, + 0x2c6a00002c6b, + 0x2c6c00002c6d, + 0x2c7100002c72, + 0x2c7300002c75, + 0x2c7600002c7c, + 0x2c8100002c82, + 0x2c8300002c84, + 0x2c8500002c86, + 0x2c8700002c88, + 0x2c8900002c8a, + 0x2c8b00002c8c, + 0x2c8d00002c8e, + 0x2c8f00002c90, + 0x2c9100002c92, + 0x2c9300002c94, + 0x2c9500002c96, + 0x2c9700002c98, + 0x2c9900002c9a, + 0x2c9b00002c9c, + 0x2c9d00002c9e, + 0x2c9f00002ca0, + 0x2ca100002ca2, + 0x2ca300002ca4, + 0x2ca500002ca6, + 0x2ca700002ca8, + 0x2ca900002caa, + 0x2cab00002cac, + 0x2cad00002cae, + 0x2caf00002cb0, + 0x2cb100002cb2, + 0x2cb300002cb4, + 0x2cb500002cb6, + 0x2cb700002cb8, + 0x2cb900002cba, + 0x2cbb00002cbc, + 0x2cbd00002cbe, + 0x2cbf00002cc0, + 0x2cc100002cc2, + 0x2cc300002cc4, + 0x2cc500002cc6, + 0x2cc700002cc8, + 0x2cc900002cca, + 0x2ccb00002ccc, + 0x2ccd00002cce, + 0x2ccf00002cd0, + 0x2cd100002cd2, + 0x2cd300002cd4, + 0x2cd500002cd6, + 0x2cd700002cd8, + 0x2cd900002cda, + 0x2cdb00002cdc, + 0x2cdd00002cde, + 0x2cdf00002ce0, + 0x2ce100002ce2, + 0x2ce300002ce5, + 0x2cec00002ced, + 0x2cee00002cf2, + 0x2cf300002cf4, + 0x2d0000002d26, + 0x2d2700002d28, + 0x2d2d00002d2e, + 0x2d3000002d68, + 0x2d7f00002d97, + 0x2da000002da7, + 0x2da800002daf, + 0x2db000002db7, + 0x2db800002dbf, + 0x2dc000002dc7, + 0x2dc800002dcf, + 0x2dd000002dd7, + 0x2dd800002ddf, + 0x2de000002e00, + 0x2e2f00002e30, + 0x300500003008, + 0x302a0000302e, + 0x303c0000303d, + 0x304100003097, + 0x30990000309b, + 0x309d0000309f, + 0x30a1000030fb, + 0x30fc000030ff, + 0x31050000312e, + 0x31a0000031bb, + 0x31f000003200, + 0x340000004db6, + 0x4e0000009fcd, + 0xa0000000a48d, + 0xa4d00000a4fe, + 0xa5000000a60d, + 0xa6100000a62c, + 0xa6410000a642, + 0xa6430000a644, + 0xa6450000a646, + 0xa6470000a648, + 0xa6490000a64a, + 0xa64b0000a64c, + 0xa64d0000a64e, + 0xa64f0000a650, + 0xa6510000a652, + 0xa6530000a654, + 0xa6550000a656, + 0xa6570000a658, + 0xa6590000a65a, + 0xa65b0000a65c, + 0xa65d0000a65e, + 0xa65f0000a660, + 0xa6610000a662, + 0xa6630000a664, + 0xa6650000a666, + 0xa6670000a668, + 0xa6690000a66a, + 0xa66b0000a66c, + 0xa66d0000a670, + 0xa6740000a67e, + 0xa67f0000a680, + 0xa6810000a682, + 0xa6830000a684, + 0xa6850000a686, + 0xa6870000a688, + 0xa6890000a68a, + 0xa68b0000a68c, + 0xa68d0000a68e, + 0xa68f0000a690, + 0xa6910000a692, + 0xa6930000a694, + 0xa6950000a696, + 0xa6970000a698, + 0xa69f0000a6e6, + 0xa6f00000a6f2, + 0xa7170000a720, + 0xa7230000a724, + 0xa7250000a726, + 0xa7270000a728, + 0xa7290000a72a, + 0xa72b0000a72c, + 0xa72d0000a72e, + 0xa72f0000a732, + 0xa7330000a734, + 0xa7350000a736, + 0xa7370000a738, + 0xa7390000a73a, + 0xa73b0000a73c, + 0xa73d0000a73e, + 0xa73f0000a740, + 0xa7410000a742, + 0xa7430000a744, + 0xa7450000a746, + 0xa7470000a748, + 0xa7490000a74a, + 0xa74b0000a74c, + 0xa74d0000a74e, + 0xa74f0000a750, + 0xa7510000a752, + 0xa7530000a754, + 0xa7550000a756, + 0xa7570000a758, + 0xa7590000a75a, + 0xa75b0000a75c, + 0xa75d0000a75e, + 0xa75f0000a760, + 0xa7610000a762, + 0xa7630000a764, + 0xa7650000a766, + 0xa7670000a768, + 0xa7690000a76a, + 0xa76b0000a76c, + 0xa76d0000a76e, + 0xa76f0000a770, + 0xa7710000a779, + 0xa77a0000a77b, + 0xa77c0000a77d, + 0xa77f0000a780, + 0xa7810000a782, + 0xa7830000a784, + 0xa7850000a786, + 0xa7870000a789, + 0xa78c0000a78d, + 0xa78e0000a78f, + 0xa7910000a792, + 0xa7930000a794, + 0xa7a10000a7a2, + 0xa7a30000a7a4, + 0xa7a50000a7a6, + 0xa7a70000a7a8, + 0xa7a90000a7aa, + 0xa7fa0000a828, + 0xa8400000a874, + 0xa8800000a8c5, + 0xa8d00000a8da, + 0xa8e00000a8f8, + 0xa8fb0000a8fc, + 0xa9000000a92e, + 0xa9300000a954, + 0xa9800000a9c1, + 0xa9cf0000a9da, + 0xaa000000aa37, + 0xaa400000aa4e, + 0xaa500000aa5a, + 0xaa600000aa77, + 0xaa7a0000aa7c, + 0xaa800000aac3, + 0xaadb0000aade, + 0xaae00000aaf0, + 0xaaf20000aaf7, + 0xab010000ab07, + 0xab090000ab0f, + 0xab110000ab17, + 0xab200000ab27, + 0xab280000ab2f, + 0xabc00000abeb, + 0xabec0000abee, + 0xabf00000abfa, + 0xac000000d7a4, + 0xfa0e0000fa10, + 0xfa110000fa12, + 0xfa130000fa15, + 0xfa1f0000fa20, + 0xfa210000fa22, + 0xfa230000fa25, + 0xfa270000fa2a, + 0xfb1e0000fb1f, + 0xfe200000fe27, + 0xfe730000fe74, + 0x100000001000c, + 0x1000d00010027, + 0x100280001003b, + 0x1003c0001003e, + 0x1003f0001004e, + 0x100500001005e, + 0x10080000100fb, + 0x101fd000101fe, + 0x102800001029d, + 0x102a0000102d1, + 0x103000001031f, + 0x1033000010341, + 0x103420001034a, + 0x103800001039e, + 0x103a0000103c4, + 0x103c8000103d0, + 0x104280001049e, + 0x104a0000104aa, + 0x1080000010806, + 0x1080800010809, + 0x1080a00010836, + 0x1083700010839, + 0x1083c0001083d, + 0x1083f00010856, + 0x1090000010916, + 0x109200001093a, + 0x10980000109b8, + 0x109be000109c0, + 0x10a0000010a04, + 0x10a0500010a07, + 0x10a0c00010a14, + 0x10a1500010a18, + 0x10a1900010a34, + 0x10a3800010a3b, + 0x10a3f00010a40, + 0x10a6000010a7d, + 0x10b0000010b36, + 0x10b4000010b56, + 0x10b6000010b73, + 0x10c0000010c49, + 0x1100000011047, + 0x1106600011070, + 0x11080000110bb, + 0x110d0000110e9, + 0x110f0000110fa, + 0x1110000011135, + 0x1113600011140, + 0x11180000111c5, + 0x111d0000111da, + 0x11680000116b8, + 0x116c0000116ca, + 0x120000001236f, + 0x130000001342f, + 0x1680000016a39, + 0x16f0000016f45, + 0x16f5000016f7f, + 0x16f8f00016fa0, + 0x1b0000001b002, + 0x200000002a6d7, + 0x2a7000002b735, + 0x2b7400002b81e, + ), + 'CONTEXTJ': ( + 0x200c0000200e, + ), + 'CONTEXTO': ( + 0xb7000000b8, + 0x37500000376, + 0x5f3000005f5, + 0x6600000066a, + 0x6f0000006fa, + 0x30fb000030fc, + ), +} diff --git a/lib/python3.6/site-packages/pip/_vendor/idna/intranges.py b/lib/python3.6/site-packages/pip/_vendor/idna/intranges.py new file mode 100644 index 0000000..fa8a735 --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/idna/intranges.py @@ -0,0 +1,53 @@ +""" +Given a list of integers, made up of (hopefully) a small number of long runs +of consecutive integers, compute a representation of the form +((start1, end1), (start2, end2) ...). Then answer the question "was x present +in the original list?" in time O(log(# runs)). +""" + +import bisect + +def intranges_from_list(list_): + """Represent a list of integers as a sequence of ranges: + ((start_0, end_0), (start_1, end_1), ...), such that the original + integers are exactly those x such that start_i <= x < end_i for some i. + + Ranges are encoded as single integers (start << 32 | end), not as tuples. + """ + + sorted_list = sorted(list_) + ranges = [] + last_write = -1 + for i in range(len(sorted_list)): + if i+1 < len(sorted_list): + if sorted_list[i] == sorted_list[i+1]-1: + continue + current_range = sorted_list[last_write+1:i+1] + ranges.append(_encode_range(current_range[0], current_range[-1] + 1)) + last_write = i + + return tuple(ranges) + +def _encode_range(start, end): + return (start << 32) | end + +def _decode_range(r): + return (r >> 32), (r & ((1 << 32) - 1)) + + +def intranges_contain(int_, ranges): + """Determine if `int_` falls into one of the ranges in `ranges`.""" + tuple_ = _encode_range(int_, 0) + pos = bisect.bisect_left(ranges, tuple_) + # we could be immediately ahead of a tuple (start, end) + # with start < int_ <= end + if pos > 0: + left, right = _decode_range(ranges[pos-1]) + if left <= int_ < right: + return True + # or we could be immediately behind a tuple (int_, end) + if pos < len(ranges): + left, _ = _decode_range(ranges[pos]) + if left == int_: + return True + return False diff --git a/lib/python3.6/site-packages/pip/_vendor/idna/package_data.py b/lib/python3.6/site-packages/pip/_vendor/idna/package_data.py new file mode 100644 index 0000000..fc33139 --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/idna/package_data.py @@ -0,0 +1,2 @@ +__version__ = '2.6' + diff --git a/lib/python3.6/site-packages/pip/_vendor/idna/uts46data.py b/lib/python3.6/site-packages/pip/_vendor/idna/uts46data.py new file mode 100644 index 0000000..f9b3236 --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/idna/uts46data.py @@ -0,0 +1,7634 @@ +# This file is automatically generated by tools/idna-data +# vim: set fileencoding=utf-8 : + +"""IDNA Mapping Table from UTS46.""" + + +__version__ = "6.3.0" +def _seg_0(): + return [ + (0x0, '3'), + (0x1, '3'), + (0x2, '3'), + (0x3, '3'), + (0x4, '3'), + (0x5, '3'), + (0x6, '3'), + (0x7, '3'), + (0x8, '3'), + (0x9, '3'), + (0xA, '3'), + (0xB, '3'), + (0xC, '3'), + (0xD, '3'), + (0xE, '3'), + (0xF, '3'), + (0x10, '3'), + (0x11, '3'), + (0x12, '3'), + (0x13, '3'), + (0x14, '3'), + (0x15, '3'), + (0x16, '3'), + (0x17, '3'), + (0x18, '3'), + (0x19, '3'), + (0x1A, '3'), + (0x1B, '3'), + (0x1C, '3'), + (0x1D, '3'), + (0x1E, '3'), + (0x1F, '3'), + (0x20, '3'), + (0x21, '3'), + (0x22, '3'), + (0x23, '3'), + (0x24, '3'), + (0x25, '3'), + (0x26, '3'), + (0x27, '3'), + (0x28, '3'), + (0x29, '3'), + (0x2A, '3'), + (0x2B, '3'), + (0x2C, '3'), + (0x2D, 'V'), + (0x2E, 'V'), + (0x2F, '3'), + (0x30, 'V'), + (0x31, 'V'), + (0x32, 'V'), + (0x33, 'V'), + (0x34, 'V'), + (0x35, 'V'), + (0x36, 'V'), + (0x37, 'V'), + (0x38, 'V'), + (0x39, 'V'), + (0x3A, '3'), + (0x3B, '3'), + (0x3C, '3'), + (0x3D, '3'), + (0x3E, '3'), + (0x3F, '3'), + (0x40, '3'), + (0x41, 'M', u'a'), + (0x42, 'M', u'b'), + (0x43, 'M', u'c'), + (0x44, 'M', u'd'), + (0x45, 'M', u'e'), + (0x46, 'M', u'f'), + (0x47, 'M', u'g'), + (0x48, 'M', u'h'), + (0x49, 'M', u'i'), + (0x4A, 'M', u'j'), + (0x4B, 'M', u'k'), + (0x4C, 'M', u'l'), + (0x4D, 'M', u'm'), + (0x4E, 'M', u'n'), + (0x4F, 'M', u'o'), + (0x50, 'M', u'p'), + (0x51, 'M', u'q'), + (0x52, 'M', u'r'), + (0x53, 'M', u's'), + (0x54, 'M', u't'), + (0x55, 'M', u'u'), + (0x56, 'M', u'v'), + (0x57, 'M', u'w'), + (0x58, 'M', u'x'), + (0x59, 'M', u'y'), + (0x5A, 'M', u'z'), + (0x5B, '3'), + (0x5C, '3'), + (0x5D, '3'), + (0x5E, '3'), + (0x5F, '3'), + (0x60, '3'), + (0x61, 'V'), + (0x62, 'V'), + (0x63, 'V'), + ] + +def _seg_1(): + return [ + (0x64, 'V'), + (0x65, 'V'), + (0x66, 'V'), + (0x67, 'V'), + (0x68, 'V'), + (0x69, 'V'), + (0x6A, 'V'), + (0x6B, 'V'), + (0x6C, 'V'), + (0x6D, 'V'), + (0x6E, 'V'), + (0x6F, 'V'), + (0x70, 'V'), + (0x71, 'V'), + (0x72, 'V'), + (0x73, 'V'), + (0x74, 'V'), + (0x75, 'V'), + (0x76, 'V'), + (0x77, 'V'), + (0x78, 'V'), + (0x79, 'V'), + (0x7A, 'V'), + (0x7B, '3'), + (0x7C, '3'), + (0x7D, '3'), + (0x7E, '3'), + (0x7F, '3'), + (0x80, 'X'), + (0x81, 'X'), + (0x82, 'X'), + (0x83, 'X'), + (0x84, 'X'), + (0x85, 'X'), + (0x86, 'X'), + (0x87, 'X'), + (0x88, 'X'), + (0x89, 'X'), + (0x8A, 'X'), + (0x8B, 'X'), + (0x8C, 'X'), + (0x8D, 'X'), + (0x8E, 'X'), + (0x8F, 'X'), + (0x90, 'X'), + (0x91, 'X'), + (0x92, 'X'), + (0x93, 'X'), + (0x94, 'X'), + (0x95, 'X'), + (0x96, 'X'), + (0x97, 'X'), + (0x98, 'X'), + (0x99, 'X'), + (0x9A, 'X'), + (0x9B, 'X'), + (0x9C, 'X'), + (0x9D, 'X'), + (0x9E, 'X'), + (0x9F, 'X'), + (0xA0, '3', u' '), + (0xA1, 'V'), + (0xA2, 'V'), + (0xA3, 'V'), + (0xA4, 'V'), + (0xA5, 'V'), + (0xA6, 'V'), + (0xA7, 'V'), + (0xA8, '3', u' ̈'), + (0xA9, 'V'), + (0xAA, 'M', u'a'), + (0xAB, 'V'), + (0xAC, 'V'), + (0xAD, 'I'), + (0xAE, 'V'), + (0xAF, '3', u' ̄'), + (0xB0, 'V'), + (0xB1, 'V'), + (0xB2, 'M', u'2'), + (0xB3, 'M', u'3'), + (0xB4, '3', u' ́'), + (0xB5, 'M', u'μ'), + (0xB6, 'V'), + (0xB7, 'V'), + (0xB8, '3', u' ̧'), + (0xB9, 'M', u'1'), + (0xBA, 'M', u'o'), + (0xBB, 'V'), + (0xBC, 'M', u'1⁄4'), + (0xBD, 'M', u'1⁄2'), + (0xBE, 'M', u'3⁄4'), + (0xBF, 'V'), + (0xC0, 'M', u'à'), + (0xC1, 'M', u'á'), + (0xC2, 'M', u'â'), + (0xC3, 'M', u'ã'), + (0xC4, 'M', u'ä'), + (0xC5, 'M', u'å'), + (0xC6, 'M', u'æ'), + (0xC7, 'M', u'ç'), + ] + +def _seg_2(): + return [ + (0xC8, 'M', u'è'), + (0xC9, 'M', u'é'), + (0xCA, 'M', u'ê'), + (0xCB, 'M', u'ë'), + (0xCC, 'M', u'ì'), + (0xCD, 'M', u'í'), + (0xCE, 'M', u'î'), + (0xCF, 'M', u'ï'), + (0xD0, 'M', u'ð'), + (0xD1, 'M', u'ñ'), + (0xD2, 'M', u'ò'), + (0xD3, 'M', u'ó'), + (0xD4, 'M', u'ô'), + (0xD5, 'M', u'õ'), + (0xD6, 'M', u'ö'), + (0xD7, 'V'), + (0xD8, 'M', u'ø'), + (0xD9, 'M', u'ù'), + (0xDA, 'M', u'ú'), + (0xDB, 'M', u'û'), + (0xDC, 'M', u'ü'), + (0xDD, 'M', u'ý'), + (0xDE, 'M', u'þ'), + (0xDF, 'D', u'ss'), + (0xE0, 'V'), + (0xE1, 'V'), + (0xE2, 'V'), + (0xE3, 'V'), + (0xE4, 'V'), + (0xE5, 'V'), + (0xE6, 'V'), + (0xE7, 'V'), + (0xE8, 'V'), + (0xE9, 'V'), + (0xEA, 'V'), + (0xEB, 'V'), + (0xEC, 'V'), + (0xED, 'V'), + (0xEE, 'V'), + (0xEF, 'V'), + (0xF0, 'V'), + (0xF1, 'V'), + (0xF2, 'V'), + (0xF3, 'V'), + (0xF4, 'V'), + (0xF5, 'V'), + (0xF6, 'V'), + (0xF7, 'V'), + (0xF8, 'V'), + (0xF9, 'V'), + (0xFA, 'V'), + (0xFB, 'V'), + (0xFC, 'V'), + (0xFD, 'V'), + (0xFE, 'V'), + (0xFF, 'V'), + (0x100, 'M', u'ā'), + (0x101, 'V'), + (0x102, 'M', u'ă'), + (0x103, 'V'), + (0x104, 'M', u'ą'), + (0x105, 'V'), + (0x106, 'M', u'ć'), + (0x107, 'V'), + (0x108, 'M', u'ĉ'), + (0x109, 'V'), + (0x10A, 'M', u'ċ'), + (0x10B, 'V'), + (0x10C, 'M', u'č'), + (0x10D, 'V'), + (0x10E, 'M', u'ď'), + (0x10F, 'V'), + (0x110, 'M', u'đ'), + (0x111, 'V'), + (0x112, 'M', u'ē'), + (0x113, 'V'), + (0x114, 'M', u'ĕ'), + (0x115, 'V'), + (0x116, 'M', u'ė'), + (0x117, 'V'), + (0x118, 'M', u'ę'), + (0x119, 'V'), + (0x11A, 'M', u'ě'), + (0x11B, 'V'), + (0x11C, 'M', u'ĝ'), + (0x11D, 'V'), + (0x11E, 'M', u'ğ'), + (0x11F, 'V'), + (0x120, 'M', u'ġ'), + (0x121, 'V'), + (0x122, 'M', u'ģ'), + (0x123, 'V'), + (0x124, 'M', u'ĥ'), + (0x125, 'V'), + (0x126, 'M', u'ħ'), + (0x127, 'V'), + (0x128, 'M', u'ĩ'), + (0x129, 'V'), + (0x12A, 'M', u'ī'), + (0x12B, 'V'), + ] + +def _seg_3(): + return [ + (0x12C, 'M', u'ĭ'), + (0x12D, 'V'), + (0x12E, 'M', u'į'), + (0x12F, 'V'), + (0x130, 'M', u'i̇'), + (0x131, 'V'), + (0x132, 'M', u'ij'), + (0x134, 'M', u'ĵ'), + (0x135, 'V'), + (0x136, 'M', u'ķ'), + (0x137, 'V'), + (0x139, 'M', u'ĺ'), + (0x13A, 'V'), + (0x13B, 'M', u'ļ'), + (0x13C, 'V'), + (0x13D, 'M', u'ľ'), + (0x13E, 'V'), + (0x13F, 'M', u'l·'), + (0x141, 'M', u'ł'), + (0x142, 'V'), + (0x143, 'M', u'ń'), + (0x144, 'V'), + (0x145, 'M', u'ņ'), + (0x146, 'V'), + (0x147, 'M', u'ň'), + (0x148, 'V'), + (0x149, 'M', u'ʼn'), + (0x14A, 'M', u'ŋ'), + (0x14B, 'V'), + (0x14C, 'M', u'ō'), + (0x14D, 'V'), + (0x14E, 'M', u'ŏ'), + (0x14F, 'V'), + (0x150, 'M', u'ő'), + (0x151, 'V'), + (0x152, 'M', u'œ'), + (0x153, 'V'), + (0x154, 'M', u'ŕ'), + (0x155, 'V'), + (0x156, 'M', u'ŗ'), + (0x157, 'V'), + (0x158, 'M', u'ř'), + (0x159, 'V'), + (0x15A, 'M', u'ś'), + (0x15B, 'V'), + (0x15C, 'M', u'ŝ'), + (0x15D, 'V'), + (0x15E, 'M', u'ş'), + (0x15F, 'V'), + (0x160, 'M', u'š'), + (0x161, 'V'), + (0x162, 'M', u'ţ'), + (0x163, 'V'), + (0x164, 'M', u'ť'), + (0x165, 'V'), + (0x166, 'M', u'ŧ'), + (0x167, 'V'), + (0x168, 'M', u'ũ'), + (0x169, 'V'), + (0x16A, 'M', u'ū'), + (0x16B, 'V'), + (0x16C, 'M', u'ŭ'), + (0x16D, 'V'), + (0x16E, 'M', u'ů'), + (0x16F, 'V'), + (0x170, 'M', u'ű'), + (0x171, 'V'), + (0x172, 'M', u'ų'), + (0x173, 'V'), + (0x174, 'M', u'ŵ'), + (0x175, 'V'), + (0x176, 'M', u'ŷ'), + (0x177, 'V'), + (0x178, 'M', u'ÿ'), + (0x179, 'M', u'ź'), + (0x17A, 'V'), + (0x17B, 'M', u'ż'), + (0x17C, 'V'), + (0x17D, 'M', u'ž'), + (0x17E, 'V'), + (0x17F, 'M', u's'), + (0x180, 'V'), + (0x181, 'M', u'ɓ'), + (0x182, 'M', u'ƃ'), + (0x183, 'V'), + (0x184, 'M', u'ƅ'), + (0x185, 'V'), + (0x186, 'M', u'ɔ'), + (0x187, 'M', u'ƈ'), + (0x188, 'V'), + (0x189, 'M', u'ɖ'), + (0x18A, 'M', u'ɗ'), + (0x18B, 'M', u'ƌ'), + (0x18C, 'V'), + (0x18E, 'M', u'ǝ'), + (0x18F, 'M', u'ə'), + (0x190, 'M', u'ɛ'), + (0x191, 'M', u'ƒ'), + (0x192, 'V'), + (0x193, 'M', u'ɠ'), + ] + +def _seg_4(): + return [ + (0x194, 'M', u'ɣ'), + (0x195, 'V'), + (0x196, 'M', u'ɩ'), + (0x197, 'M', u'ɨ'), + (0x198, 'M', u'ƙ'), + (0x199, 'V'), + (0x19C, 'M', u'ɯ'), + (0x19D, 'M', u'ɲ'), + (0x19E, 'V'), + (0x19F, 'M', u'ɵ'), + (0x1A0, 'M', u'ơ'), + (0x1A1, 'V'), + (0x1A2, 'M', u'ƣ'), + (0x1A3, 'V'), + (0x1A4, 'M', u'ƥ'), + (0x1A5, 'V'), + (0x1A6, 'M', u'ʀ'), + (0x1A7, 'M', u'ƨ'), + (0x1A8, 'V'), + (0x1A9, 'M', u'ʃ'), + (0x1AA, 'V'), + (0x1AC, 'M', u'ƭ'), + (0x1AD, 'V'), + (0x1AE, 'M', u'ʈ'), + (0x1AF, 'M', u'ư'), + (0x1B0, 'V'), + (0x1B1, 'M', u'ʊ'), + (0x1B2, 'M', u'ʋ'), + (0x1B3, 'M', u'ƴ'), + (0x1B4, 'V'), + (0x1B5, 'M', u'ƶ'), + (0x1B6, 'V'), + (0x1B7, 'M', u'ʒ'), + (0x1B8, 'M', u'ƹ'), + (0x1B9, 'V'), + (0x1BC, 'M', u'ƽ'), + (0x1BD, 'V'), + (0x1C4, 'M', u'dž'), + (0x1C7, 'M', u'lj'), + (0x1CA, 'M', u'nj'), + (0x1CD, 'M', u'ǎ'), + (0x1CE, 'V'), + (0x1CF, 'M', u'ǐ'), + (0x1D0, 'V'), + (0x1D1, 'M', u'ǒ'), + (0x1D2, 'V'), + (0x1D3, 'M', u'ǔ'), + (0x1D4, 'V'), + (0x1D5, 'M', u'ǖ'), + (0x1D6, 'V'), + (0x1D7, 'M', u'ǘ'), + (0x1D8, 'V'), + (0x1D9, 'M', u'ǚ'), + (0x1DA, 'V'), + (0x1DB, 'M', u'ǜ'), + (0x1DC, 'V'), + (0x1DE, 'M', u'ǟ'), + (0x1DF, 'V'), + (0x1E0, 'M', u'ǡ'), + (0x1E1, 'V'), + (0x1E2, 'M', u'ǣ'), + (0x1E3, 'V'), + (0x1E4, 'M', u'ǥ'), + (0x1E5, 'V'), + (0x1E6, 'M', u'ǧ'), + (0x1E7, 'V'), + (0x1E8, 'M', u'ǩ'), + (0x1E9, 'V'), + (0x1EA, 'M', u'ǫ'), + (0x1EB, 'V'), + (0x1EC, 'M', u'ǭ'), + (0x1ED, 'V'), + (0x1EE, 'M', u'ǯ'), + (0x1EF, 'V'), + (0x1F1, 'M', u'dz'), + (0x1F4, 'M', u'ǵ'), + (0x1F5, 'V'), + (0x1F6, 'M', u'ƕ'), + (0x1F7, 'M', u'ƿ'), + (0x1F8, 'M', u'ǹ'), + (0x1F9, 'V'), + (0x1FA, 'M', u'ǻ'), + (0x1FB, 'V'), + (0x1FC, 'M', u'ǽ'), + (0x1FD, 'V'), + (0x1FE, 'M', u'ǿ'), + (0x1FF, 'V'), + (0x200, 'M', u'ȁ'), + (0x201, 'V'), + (0x202, 'M', u'ȃ'), + (0x203, 'V'), + (0x204, 'M', u'ȅ'), + (0x205, 'V'), + (0x206, 'M', u'ȇ'), + (0x207, 'V'), + (0x208, 'M', u'ȉ'), + (0x209, 'V'), + (0x20A, 'M', u'ȋ'), + (0x20B, 'V'), + (0x20C, 'M', u'ȍ'), + ] + +def _seg_5(): + return [ + (0x20D, 'V'), + (0x20E, 'M', u'ȏ'), + (0x20F, 'V'), + (0x210, 'M', u'ȑ'), + (0x211, 'V'), + (0x212, 'M', u'ȓ'), + (0x213, 'V'), + (0x214, 'M', u'ȕ'), + (0x215, 'V'), + (0x216, 'M', u'ȗ'), + (0x217, 'V'), + (0x218, 'M', u'ș'), + (0x219, 'V'), + (0x21A, 'M', u'ț'), + (0x21B, 'V'), + (0x21C, 'M', u'ȝ'), + (0x21D, 'V'), + (0x21E, 'M', u'ȟ'), + (0x21F, 'V'), + (0x220, 'M', u'ƞ'), + (0x221, 'V'), + (0x222, 'M', u'ȣ'), + (0x223, 'V'), + (0x224, 'M', u'ȥ'), + (0x225, 'V'), + (0x226, 'M', u'ȧ'), + (0x227, 'V'), + (0x228, 'M', u'ȩ'), + (0x229, 'V'), + (0x22A, 'M', u'ȫ'), + (0x22B, 'V'), + (0x22C, 'M', u'ȭ'), + (0x22D, 'V'), + (0x22E, 'M', u'ȯ'), + (0x22F, 'V'), + (0x230, 'M', u'ȱ'), + (0x231, 'V'), + (0x232, 'M', u'ȳ'), + (0x233, 'V'), + (0x23A, 'M', u'ⱥ'), + (0x23B, 'M', u'ȼ'), + (0x23C, 'V'), + (0x23D, 'M', u'ƚ'), + (0x23E, 'M', u'ⱦ'), + (0x23F, 'V'), + (0x241, 'M', u'ɂ'), + (0x242, 'V'), + (0x243, 'M', u'ƀ'), + (0x244, 'M', u'ʉ'), + (0x245, 'M', u'ʌ'), + (0x246, 'M', u'ɇ'), + (0x247, 'V'), + (0x248, 'M', u'ɉ'), + (0x249, 'V'), + (0x24A, 'M', u'ɋ'), + (0x24B, 'V'), + (0x24C, 'M', u'ɍ'), + (0x24D, 'V'), + (0x24E, 'M', u'ɏ'), + (0x24F, 'V'), + (0x2B0, 'M', u'h'), + (0x2B1, 'M', u'ɦ'), + (0x2B2, 'M', u'j'), + (0x2B3, 'M', u'r'), + (0x2B4, 'M', u'ɹ'), + (0x2B5, 'M', u'ɻ'), + (0x2B6, 'M', u'ʁ'), + (0x2B7, 'M', u'w'), + (0x2B8, 'M', u'y'), + (0x2B9, 'V'), + (0x2D8, '3', u' ̆'), + (0x2D9, '3', u' ̇'), + (0x2DA, '3', u' ̊'), + (0x2DB, '3', u' ̨'), + (0x2DC, '3', u' ̃'), + (0x2DD, '3', u' ̋'), + (0x2DE, 'V'), + (0x2E0, 'M', u'ɣ'), + (0x2E1, 'M', u'l'), + (0x2E2, 'M', u's'), + (0x2E3, 'M', u'x'), + (0x2E4, 'M', u'ʕ'), + (0x2E5, 'V'), + (0x340, 'M', u'̀'), + (0x341, 'M', u'́'), + (0x342, 'V'), + (0x343, 'M', u'̓'), + (0x344, 'M', u'̈́'), + (0x345, 'M', u'ι'), + (0x346, 'V'), + (0x34F, 'I'), + (0x350, 'V'), + (0x370, 'M', u'ͱ'), + (0x371, 'V'), + (0x372, 'M', u'ͳ'), + (0x373, 'V'), + (0x374, 'M', u'ʹ'), + (0x375, 'V'), + (0x376, 'M', u'ͷ'), + (0x377, 'V'), + ] + +def _seg_6(): + return [ + (0x378, 'X'), + (0x37A, '3', u' ι'), + (0x37B, 'V'), + (0x37E, '3', u';'), + (0x37F, 'X'), + (0x384, '3', u' ́'), + (0x385, '3', u' ̈́'), + (0x386, 'M', u'ά'), + (0x387, 'M', u'·'), + (0x388, 'M', u'έ'), + (0x389, 'M', u'ή'), + (0x38A, 'M', u'ί'), + (0x38B, 'X'), + (0x38C, 'M', u'ό'), + (0x38D, 'X'), + (0x38E, 'M', u'ύ'), + (0x38F, 'M', u'ώ'), + (0x390, 'V'), + (0x391, 'M', u'α'), + (0x392, 'M', u'β'), + (0x393, 'M', u'γ'), + (0x394, 'M', u'δ'), + (0x395, 'M', u'ε'), + (0x396, 'M', u'ζ'), + (0x397, 'M', u'η'), + (0x398, 'M', u'θ'), + (0x399, 'M', u'ι'), + (0x39A, 'M', u'κ'), + (0x39B, 'M', u'λ'), + (0x39C, 'M', u'μ'), + (0x39D, 'M', u'ν'), + (0x39E, 'M', u'ξ'), + (0x39F, 'M', u'ο'), + (0x3A0, 'M', u'π'), + (0x3A1, 'M', u'ρ'), + (0x3A2, 'X'), + (0x3A3, 'M', u'σ'), + (0x3A4, 'M', u'τ'), + (0x3A5, 'M', u'υ'), + (0x3A6, 'M', u'φ'), + (0x3A7, 'M', u'χ'), + (0x3A8, 'M', u'ψ'), + (0x3A9, 'M', u'ω'), + (0x3AA, 'M', u'ϊ'), + (0x3AB, 'M', u'ϋ'), + (0x3AC, 'V'), + (0x3C2, 'D', u'σ'), + (0x3C3, 'V'), + (0x3CF, 'M', u'ϗ'), + (0x3D0, 'M', u'β'), + (0x3D1, 'M', u'θ'), + (0x3D2, 'M', u'υ'), + (0x3D3, 'M', u'ύ'), + (0x3D4, 'M', u'ϋ'), + (0x3D5, 'M', u'φ'), + (0x3D6, 'M', u'π'), + (0x3D7, 'V'), + (0x3D8, 'M', u'ϙ'), + (0x3D9, 'V'), + (0x3DA, 'M', u'ϛ'), + (0x3DB, 'V'), + (0x3DC, 'M', u'ϝ'), + (0x3DD, 'V'), + (0x3DE, 'M', u'ϟ'), + (0x3DF, 'V'), + (0x3E0, 'M', u'ϡ'), + (0x3E1, 'V'), + (0x3E2, 'M', u'ϣ'), + (0x3E3, 'V'), + (0x3E4, 'M', u'ϥ'), + (0x3E5, 'V'), + (0x3E6, 'M', u'ϧ'), + (0x3E7, 'V'), + (0x3E8, 'M', u'ϩ'), + (0x3E9, 'V'), + (0x3EA, 'M', u'ϫ'), + (0x3EB, 'V'), + (0x3EC, 'M', u'ϭ'), + (0x3ED, 'V'), + (0x3EE, 'M', u'ϯ'), + (0x3EF, 'V'), + (0x3F0, 'M', u'κ'), + (0x3F1, 'M', u'ρ'), + (0x3F2, 'M', u'σ'), + (0x3F3, 'V'), + (0x3F4, 'M', u'θ'), + (0x3F5, 'M', u'ε'), + (0x3F6, 'V'), + (0x3F7, 'M', u'ϸ'), + (0x3F8, 'V'), + (0x3F9, 'M', u'σ'), + (0x3FA, 'M', u'ϻ'), + (0x3FB, 'V'), + (0x3FD, 'M', u'ͻ'), + (0x3FE, 'M', u'ͼ'), + (0x3FF, 'M', u'ͽ'), + (0x400, 'M', u'ѐ'), + (0x401, 'M', u'ё'), + (0x402, 'M', u'ђ'), + (0x403, 'M', u'ѓ'), + ] + +def _seg_7(): + return [ + (0x404, 'M', u'є'), + (0x405, 'M', u'ѕ'), + (0x406, 'M', u'і'), + (0x407, 'M', u'ї'), + (0x408, 'M', u'ј'), + (0x409, 'M', u'љ'), + (0x40A, 'M', u'њ'), + (0x40B, 'M', u'ћ'), + (0x40C, 'M', u'ќ'), + (0x40D, 'M', u'ѝ'), + (0x40E, 'M', u'ў'), + (0x40F, 'M', u'џ'), + (0x410, 'M', u'а'), + (0x411, 'M', u'б'), + (0x412, 'M', u'в'), + (0x413, 'M', u'г'), + (0x414, 'M', u'д'), + (0x415, 'M', u'е'), + (0x416, 'M', u'ж'), + (0x417, 'M', u'з'), + (0x418, 'M', u'и'), + (0x419, 'M', u'й'), + (0x41A, 'M', u'к'), + (0x41B, 'M', u'л'), + (0x41C, 'M', u'м'), + (0x41D, 'M', u'н'), + (0x41E, 'M', u'о'), + (0x41F, 'M', u'п'), + (0x420, 'M', u'р'), + (0x421, 'M', u'с'), + (0x422, 'M', u'т'), + (0x423, 'M', u'у'), + (0x424, 'M', u'ф'), + (0x425, 'M', u'х'), + (0x426, 'M', u'ц'), + (0x427, 'M', u'ч'), + (0x428, 'M', u'ш'), + (0x429, 'M', u'щ'), + (0x42A, 'M', u'ъ'), + (0x42B, 'M', u'ы'), + (0x42C, 'M', u'ь'), + (0x42D, 'M', u'э'), + (0x42E, 'M', u'ю'), + (0x42F, 'M', u'я'), + (0x430, 'V'), + (0x460, 'M', u'ѡ'), + (0x461, 'V'), + (0x462, 'M', u'ѣ'), + (0x463, 'V'), + (0x464, 'M', u'ѥ'), + (0x465, 'V'), + (0x466, 'M', u'ѧ'), + (0x467, 'V'), + (0x468, 'M', u'ѩ'), + (0x469, 'V'), + (0x46A, 'M', u'ѫ'), + (0x46B, 'V'), + (0x46C, 'M', u'ѭ'), + (0x46D, 'V'), + (0x46E, 'M', u'ѯ'), + (0x46F, 'V'), + (0x470, 'M', u'ѱ'), + (0x471, 'V'), + (0x472, 'M', u'ѳ'), + (0x473, 'V'), + (0x474, 'M', u'ѵ'), + (0x475, 'V'), + (0x476, 'M', u'ѷ'), + (0x477, 'V'), + (0x478, 'M', u'ѹ'), + (0x479, 'V'), + (0x47A, 'M', u'ѻ'), + (0x47B, 'V'), + (0x47C, 'M', u'ѽ'), + (0x47D, 'V'), + (0x47E, 'M', u'ѿ'), + (0x47F, 'V'), + (0x480, 'M', u'ҁ'), + (0x481, 'V'), + (0x48A, 'M', u'ҋ'), + (0x48B, 'V'), + (0x48C, 'M', u'ҍ'), + (0x48D, 'V'), + (0x48E, 'M', u'ҏ'), + (0x48F, 'V'), + (0x490, 'M', u'ґ'), + (0x491, 'V'), + (0x492, 'M', u'ғ'), + (0x493, 'V'), + (0x494, 'M', u'ҕ'), + (0x495, 'V'), + (0x496, 'M', u'җ'), + (0x497, 'V'), + (0x498, 'M', u'ҙ'), + (0x499, 'V'), + (0x49A, 'M', u'қ'), + (0x49B, 'V'), + (0x49C, 'M', u'ҝ'), + (0x49D, 'V'), + (0x49E, 'M', u'ҟ'), + ] + +def _seg_8(): + return [ + (0x49F, 'V'), + (0x4A0, 'M', u'ҡ'), + (0x4A1, 'V'), + (0x4A2, 'M', u'ң'), + (0x4A3, 'V'), + (0x4A4, 'M', u'ҥ'), + (0x4A5, 'V'), + (0x4A6, 'M', u'ҧ'), + (0x4A7, 'V'), + (0x4A8, 'M', u'ҩ'), + (0x4A9, 'V'), + (0x4AA, 'M', u'ҫ'), + (0x4AB, 'V'), + (0x4AC, 'M', u'ҭ'), + (0x4AD, 'V'), + (0x4AE, 'M', u'ү'), + (0x4AF, 'V'), + (0x4B0, 'M', u'ұ'), + (0x4B1, 'V'), + (0x4B2, 'M', u'ҳ'), + (0x4B3, 'V'), + (0x4B4, 'M', u'ҵ'), + (0x4B5, 'V'), + (0x4B6, 'M', u'ҷ'), + (0x4B7, 'V'), + (0x4B8, 'M', u'ҹ'), + (0x4B9, 'V'), + (0x4BA, 'M', u'һ'), + (0x4BB, 'V'), + (0x4BC, 'M', u'ҽ'), + (0x4BD, 'V'), + (0x4BE, 'M', u'ҿ'), + (0x4BF, 'V'), + (0x4C0, 'X'), + (0x4C1, 'M', u'ӂ'), + (0x4C2, 'V'), + (0x4C3, 'M', u'ӄ'), + (0x4C4, 'V'), + (0x4C5, 'M', u'ӆ'), + (0x4C6, 'V'), + (0x4C7, 'M', u'ӈ'), + (0x4C8, 'V'), + (0x4C9, 'M', u'ӊ'), + (0x4CA, 'V'), + (0x4CB, 'M', u'ӌ'), + (0x4CC, 'V'), + (0x4CD, 'M', u'ӎ'), + (0x4CE, 'V'), + (0x4D0, 'M', u'ӑ'), + (0x4D1, 'V'), + (0x4D2, 'M', u'ӓ'), + (0x4D3, 'V'), + (0x4D4, 'M', u'ӕ'), + (0x4D5, 'V'), + (0x4D6, 'M', u'ӗ'), + (0x4D7, 'V'), + (0x4D8, 'M', u'ә'), + (0x4D9, 'V'), + (0x4DA, 'M', u'ӛ'), + (0x4DB, 'V'), + (0x4DC, 'M', u'ӝ'), + (0x4DD, 'V'), + (0x4DE, 'M', u'ӟ'), + (0x4DF, 'V'), + (0x4E0, 'M', u'ӡ'), + (0x4E1, 'V'), + (0x4E2, 'M', u'ӣ'), + (0x4E3, 'V'), + (0x4E4, 'M', u'ӥ'), + (0x4E5, 'V'), + (0x4E6, 'M', u'ӧ'), + (0x4E7, 'V'), + (0x4E8, 'M', u'ө'), + (0x4E9, 'V'), + (0x4EA, 'M', u'ӫ'), + (0x4EB, 'V'), + (0x4EC, 'M', u'ӭ'), + (0x4ED, 'V'), + (0x4EE, 'M', u'ӯ'), + (0x4EF, 'V'), + (0x4F0, 'M', u'ӱ'), + (0x4F1, 'V'), + (0x4F2, 'M', u'ӳ'), + (0x4F3, 'V'), + (0x4F4, 'M', u'ӵ'), + (0x4F5, 'V'), + (0x4F6, 'M', u'ӷ'), + (0x4F7, 'V'), + (0x4F8, 'M', u'ӹ'), + (0x4F9, 'V'), + (0x4FA, 'M', u'ӻ'), + (0x4FB, 'V'), + (0x4FC, 'M', u'ӽ'), + (0x4FD, 'V'), + (0x4FE, 'M', u'ӿ'), + (0x4FF, 'V'), + (0x500, 'M', u'ԁ'), + (0x501, 'V'), + (0x502, 'M', u'ԃ'), + (0x503, 'V'), + ] + +def _seg_9(): + return [ + (0x504, 'M', u'ԅ'), + (0x505, 'V'), + (0x506, 'M', u'ԇ'), + (0x507, 'V'), + (0x508, 'M', u'ԉ'), + (0x509, 'V'), + (0x50A, 'M', u'ԋ'), + (0x50B, 'V'), + (0x50C, 'M', u'ԍ'), + (0x50D, 'V'), + (0x50E, 'M', u'ԏ'), + (0x50F, 'V'), + (0x510, 'M', u'ԑ'), + (0x511, 'V'), + (0x512, 'M', u'ԓ'), + (0x513, 'V'), + (0x514, 'M', u'ԕ'), + (0x515, 'V'), + (0x516, 'M', u'ԗ'), + (0x517, 'V'), + (0x518, 'M', u'ԙ'), + (0x519, 'V'), + (0x51A, 'M', u'ԛ'), + (0x51B, 'V'), + (0x51C, 'M', u'ԝ'), + (0x51D, 'V'), + (0x51E, 'M', u'ԟ'), + (0x51F, 'V'), + (0x520, 'M', u'ԡ'), + (0x521, 'V'), + (0x522, 'M', u'ԣ'), + (0x523, 'V'), + (0x524, 'M', u'ԥ'), + (0x525, 'V'), + (0x526, 'M', u'ԧ'), + (0x527, 'V'), + (0x528, 'X'), + (0x531, 'M', u'ա'), + (0x532, 'M', u'բ'), + (0x533, 'M', u'գ'), + (0x534, 'M', u'դ'), + (0x535, 'M', u'ե'), + (0x536, 'M', u'զ'), + (0x537, 'M', u'է'), + (0x538, 'M', u'ը'), + (0x539, 'M', u'թ'), + (0x53A, 'M', u'ժ'), + (0x53B, 'M', u'ի'), + (0x53C, 'M', u'լ'), + (0x53D, 'M', u'խ'), + (0x53E, 'M', u'ծ'), + (0x53F, 'M', u'կ'), + (0x540, 'M', u'հ'), + (0x541, 'M', u'ձ'), + (0x542, 'M', u'ղ'), + (0x543, 'M', u'ճ'), + (0x544, 'M', u'մ'), + (0x545, 'M', u'յ'), + (0x546, 'M', u'ն'), + (0x547, 'M', u'շ'), + (0x548, 'M', u'ո'), + (0x549, 'M', u'չ'), + (0x54A, 'M', u'պ'), + (0x54B, 'M', u'ջ'), + (0x54C, 'M', u'ռ'), + (0x54D, 'M', u'ս'), + (0x54E, 'M', u'վ'), + (0x54F, 'M', u'տ'), + (0x550, 'M', u'ր'), + (0x551, 'M', u'ց'), + (0x552, 'M', u'ւ'), + (0x553, 'M', u'փ'), + (0x554, 'M', u'ք'), + (0x555, 'M', u'օ'), + (0x556, 'M', u'ֆ'), + (0x557, 'X'), + (0x559, 'V'), + (0x560, 'X'), + (0x561, 'V'), + (0x587, 'M', u'եւ'), + (0x588, 'X'), + (0x589, 'V'), + (0x58B, 'X'), + (0x58F, 'V'), + (0x590, 'X'), + (0x591, 'V'), + (0x5C8, 'X'), + (0x5D0, 'V'), + (0x5EB, 'X'), + (0x5F0, 'V'), + (0x5F5, 'X'), + (0x606, 'V'), + (0x61C, 'X'), + (0x61E, 'V'), + (0x675, 'M', u'اٴ'), + (0x676, 'M', u'وٴ'), + (0x677, 'M', u'ۇٴ'), + (0x678, 'M', u'يٴ'), + (0x679, 'V'), + (0x6DD, 'X'), + ] + +def _seg_10(): + return [ + (0x6DE, 'V'), + (0x70E, 'X'), + (0x710, 'V'), + (0x74B, 'X'), + (0x74D, 'V'), + (0x7B2, 'X'), + (0x7C0, 'V'), + (0x7FB, 'X'), + (0x800, 'V'), + (0x82E, 'X'), + (0x830, 'V'), + (0x83F, 'X'), + (0x840, 'V'), + (0x85C, 'X'), + (0x85E, 'V'), + (0x85F, 'X'), + (0x8A0, 'V'), + (0x8A1, 'X'), + (0x8A2, 'V'), + (0x8AD, 'X'), + (0x8E4, 'V'), + (0x8FF, 'X'), + (0x900, 'V'), + (0x958, 'M', u'क़'), + (0x959, 'M', u'ख़'), + (0x95A, 'M', u'ग़'), + (0x95B, 'M', u'ज़'), + (0x95C, 'M', u'ड़'), + (0x95D, 'M', u'ढ़'), + (0x95E, 'M', u'फ़'), + (0x95F, 'M', u'य़'), + (0x960, 'V'), + (0x978, 'X'), + (0x979, 'V'), + (0x980, 'X'), + (0x981, 'V'), + (0x984, 'X'), + (0x985, 'V'), + (0x98D, 'X'), + (0x98F, 'V'), + (0x991, 'X'), + (0x993, 'V'), + (0x9A9, 'X'), + (0x9AA, 'V'), + (0x9B1, 'X'), + (0x9B2, 'V'), + (0x9B3, 'X'), + (0x9B6, 'V'), + (0x9BA, 'X'), + (0x9BC, 'V'), + (0x9C5, 'X'), + (0x9C7, 'V'), + (0x9C9, 'X'), + (0x9CB, 'V'), + (0x9CF, 'X'), + (0x9D7, 'V'), + (0x9D8, 'X'), + (0x9DC, 'M', u'ড়'), + (0x9DD, 'M', u'ঢ়'), + (0x9DE, 'X'), + (0x9DF, 'M', u'য়'), + (0x9E0, 'V'), + (0x9E4, 'X'), + (0x9E6, 'V'), + (0x9FC, 'X'), + (0xA01, 'V'), + (0xA04, 'X'), + (0xA05, 'V'), + (0xA0B, 'X'), + (0xA0F, 'V'), + (0xA11, 'X'), + (0xA13, 'V'), + (0xA29, 'X'), + (0xA2A, 'V'), + (0xA31, 'X'), + (0xA32, 'V'), + (0xA33, 'M', u'ਲ਼'), + (0xA34, 'X'), + (0xA35, 'V'), + (0xA36, 'M', u'ਸ਼'), + (0xA37, 'X'), + (0xA38, 'V'), + (0xA3A, 'X'), + (0xA3C, 'V'), + (0xA3D, 'X'), + (0xA3E, 'V'), + (0xA43, 'X'), + (0xA47, 'V'), + (0xA49, 'X'), + (0xA4B, 'V'), + (0xA4E, 'X'), + (0xA51, 'V'), + (0xA52, 'X'), + (0xA59, 'M', u'ਖ਼'), + (0xA5A, 'M', u'ਗ਼'), + (0xA5B, 'M', u'ਜ਼'), + (0xA5C, 'V'), + (0xA5D, 'X'), + (0xA5E, 'M', u'ਫ਼'), + (0xA5F, 'X'), + ] + +def _seg_11(): + return [ + (0xA66, 'V'), + (0xA76, 'X'), + (0xA81, 'V'), + (0xA84, 'X'), + (0xA85, 'V'), + (0xA8E, 'X'), + (0xA8F, 'V'), + (0xA92, 'X'), + (0xA93, 'V'), + (0xAA9, 'X'), + (0xAAA, 'V'), + (0xAB1, 'X'), + (0xAB2, 'V'), + (0xAB4, 'X'), + (0xAB5, 'V'), + (0xABA, 'X'), + (0xABC, 'V'), + (0xAC6, 'X'), + (0xAC7, 'V'), + (0xACA, 'X'), + (0xACB, 'V'), + (0xACE, 'X'), + (0xAD0, 'V'), + (0xAD1, 'X'), + (0xAE0, 'V'), + (0xAE4, 'X'), + (0xAE6, 'V'), + (0xAF2, 'X'), + (0xB01, 'V'), + (0xB04, 'X'), + (0xB05, 'V'), + (0xB0D, 'X'), + (0xB0F, 'V'), + (0xB11, 'X'), + (0xB13, 'V'), + (0xB29, 'X'), + (0xB2A, 'V'), + (0xB31, 'X'), + (0xB32, 'V'), + (0xB34, 'X'), + (0xB35, 'V'), + (0xB3A, 'X'), + (0xB3C, 'V'), + (0xB45, 'X'), + (0xB47, 'V'), + (0xB49, 'X'), + (0xB4B, 'V'), + (0xB4E, 'X'), + (0xB56, 'V'), + (0xB58, 'X'), + (0xB5C, 'M', u'ଡ଼'), + (0xB5D, 'M', u'ଢ଼'), + (0xB5E, 'X'), + (0xB5F, 'V'), + (0xB64, 'X'), + (0xB66, 'V'), + (0xB78, 'X'), + (0xB82, 'V'), + (0xB84, 'X'), + (0xB85, 'V'), + (0xB8B, 'X'), + (0xB8E, 'V'), + (0xB91, 'X'), + (0xB92, 'V'), + (0xB96, 'X'), + (0xB99, 'V'), + (0xB9B, 'X'), + (0xB9C, 'V'), + (0xB9D, 'X'), + (0xB9E, 'V'), + (0xBA0, 'X'), + (0xBA3, 'V'), + (0xBA5, 'X'), + (0xBA8, 'V'), + (0xBAB, 'X'), + (0xBAE, 'V'), + (0xBBA, 'X'), + (0xBBE, 'V'), + (0xBC3, 'X'), + (0xBC6, 'V'), + (0xBC9, 'X'), + (0xBCA, 'V'), + (0xBCE, 'X'), + (0xBD0, 'V'), + (0xBD1, 'X'), + (0xBD7, 'V'), + (0xBD8, 'X'), + (0xBE6, 'V'), + (0xBFB, 'X'), + (0xC01, 'V'), + (0xC04, 'X'), + (0xC05, 'V'), + (0xC0D, 'X'), + (0xC0E, 'V'), + (0xC11, 'X'), + (0xC12, 'V'), + (0xC29, 'X'), + (0xC2A, 'V'), + (0xC34, 'X'), + (0xC35, 'V'), + ] + +def _seg_12(): + return [ + (0xC3A, 'X'), + (0xC3D, 'V'), + (0xC45, 'X'), + (0xC46, 'V'), + (0xC49, 'X'), + (0xC4A, 'V'), + (0xC4E, 'X'), + (0xC55, 'V'), + (0xC57, 'X'), + (0xC58, 'V'), + (0xC5A, 'X'), + (0xC60, 'V'), + (0xC64, 'X'), + (0xC66, 'V'), + (0xC70, 'X'), + (0xC78, 'V'), + (0xC80, 'X'), + (0xC82, 'V'), + (0xC84, 'X'), + (0xC85, 'V'), + (0xC8D, 'X'), + (0xC8E, 'V'), + (0xC91, 'X'), + (0xC92, 'V'), + (0xCA9, 'X'), + (0xCAA, 'V'), + (0xCB4, 'X'), + (0xCB5, 'V'), + (0xCBA, 'X'), + (0xCBC, 'V'), + (0xCC5, 'X'), + (0xCC6, 'V'), + (0xCC9, 'X'), + (0xCCA, 'V'), + (0xCCE, 'X'), + (0xCD5, 'V'), + (0xCD7, 'X'), + (0xCDE, 'V'), + (0xCDF, 'X'), + (0xCE0, 'V'), + (0xCE4, 'X'), + (0xCE6, 'V'), + (0xCF0, 'X'), + (0xCF1, 'V'), + (0xCF3, 'X'), + (0xD02, 'V'), + (0xD04, 'X'), + (0xD05, 'V'), + (0xD0D, 'X'), + (0xD0E, 'V'), + (0xD11, 'X'), + (0xD12, 'V'), + (0xD3B, 'X'), + (0xD3D, 'V'), + (0xD45, 'X'), + (0xD46, 'V'), + (0xD49, 'X'), + (0xD4A, 'V'), + (0xD4F, 'X'), + (0xD57, 'V'), + (0xD58, 'X'), + (0xD60, 'V'), + (0xD64, 'X'), + (0xD66, 'V'), + (0xD76, 'X'), + (0xD79, 'V'), + (0xD80, 'X'), + (0xD82, 'V'), + (0xD84, 'X'), + (0xD85, 'V'), + (0xD97, 'X'), + (0xD9A, 'V'), + (0xDB2, 'X'), + (0xDB3, 'V'), + (0xDBC, 'X'), + (0xDBD, 'V'), + (0xDBE, 'X'), + (0xDC0, 'V'), + (0xDC7, 'X'), + (0xDCA, 'V'), + (0xDCB, 'X'), + (0xDCF, 'V'), + (0xDD5, 'X'), + (0xDD6, 'V'), + (0xDD7, 'X'), + (0xDD8, 'V'), + (0xDE0, 'X'), + (0xDF2, 'V'), + (0xDF5, 'X'), + (0xE01, 'V'), + (0xE33, 'M', u'ํา'), + (0xE34, 'V'), + (0xE3B, 'X'), + (0xE3F, 'V'), + (0xE5C, 'X'), + (0xE81, 'V'), + (0xE83, 'X'), + (0xE84, 'V'), + (0xE85, 'X'), + (0xE87, 'V'), + ] + +def _seg_13(): + return [ + (0xE89, 'X'), + (0xE8A, 'V'), + (0xE8B, 'X'), + (0xE8D, 'V'), + (0xE8E, 'X'), + (0xE94, 'V'), + (0xE98, 'X'), + (0xE99, 'V'), + (0xEA0, 'X'), + (0xEA1, 'V'), + (0xEA4, 'X'), + (0xEA5, 'V'), + (0xEA6, 'X'), + (0xEA7, 'V'), + (0xEA8, 'X'), + (0xEAA, 'V'), + (0xEAC, 'X'), + (0xEAD, 'V'), + (0xEB3, 'M', u'ໍາ'), + (0xEB4, 'V'), + (0xEBA, 'X'), + (0xEBB, 'V'), + (0xEBE, 'X'), + (0xEC0, 'V'), + (0xEC5, 'X'), + (0xEC6, 'V'), + (0xEC7, 'X'), + (0xEC8, 'V'), + (0xECE, 'X'), + (0xED0, 'V'), + (0xEDA, 'X'), + (0xEDC, 'M', u'ຫນ'), + (0xEDD, 'M', u'ຫມ'), + (0xEDE, 'V'), + (0xEE0, 'X'), + (0xF00, 'V'), + (0xF0C, 'M', u'་'), + (0xF0D, 'V'), + (0xF43, 'M', u'གྷ'), + (0xF44, 'V'), + (0xF48, 'X'), + (0xF49, 'V'), + (0xF4D, 'M', u'ཌྷ'), + (0xF4E, 'V'), + (0xF52, 'M', u'དྷ'), + (0xF53, 'V'), + (0xF57, 'M', u'བྷ'), + (0xF58, 'V'), + (0xF5C, 'M', u'ཛྷ'), + (0xF5D, 'V'), + (0xF69, 'M', u'ཀྵ'), + (0xF6A, 'V'), + (0xF6D, 'X'), + (0xF71, 'V'), + (0xF73, 'M', u'ཱི'), + (0xF74, 'V'), + (0xF75, 'M', u'ཱུ'), + (0xF76, 'M', u'ྲྀ'), + (0xF77, 'M', u'ྲཱྀ'), + (0xF78, 'M', u'ླྀ'), + (0xF79, 'M', u'ླཱྀ'), + (0xF7A, 'V'), + (0xF81, 'M', u'ཱྀ'), + (0xF82, 'V'), + (0xF93, 'M', u'ྒྷ'), + (0xF94, 'V'), + (0xF98, 'X'), + (0xF99, 'V'), + (0xF9D, 'M', u'ྜྷ'), + (0xF9E, 'V'), + (0xFA2, 'M', u'ྡྷ'), + (0xFA3, 'V'), + (0xFA7, 'M', u'ྦྷ'), + (0xFA8, 'V'), + (0xFAC, 'M', u'ྫྷ'), + (0xFAD, 'V'), + (0xFB9, 'M', u'ྐྵ'), + (0xFBA, 'V'), + (0xFBD, 'X'), + (0xFBE, 'V'), + (0xFCD, 'X'), + (0xFCE, 'V'), + (0xFDB, 'X'), + (0x1000, 'V'), + (0x10A0, 'X'), + (0x10C7, 'M', u'ⴧ'), + (0x10C8, 'X'), + (0x10CD, 'M', u'ⴭ'), + (0x10CE, 'X'), + (0x10D0, 'V'), + (0x10FC, 'M', u'ნ'), + (0x10FD, 'V'), + (0x115F, 'X'), + (0x1161, 'V'), + (0x1249, 'X'), + (0x124A, 'V'), + (0x124E, 'X'), + (0x1250, 'V'), + (0x1257, 'X'), + (0x1258, 'V'), + ] + +def _seg_14(): + return [ + (0x1259, 'X'), + (0x125A, 'V'), + (0x125E, 'X'), + (0x1260, 'V'), + (0x1289, 'X'), + (0x128A, 'V'), + (0x128E, 'X'), + (0x1290, 'V'), + (0x12B1, 'X'), + (0x12B2, 'V'), + (0x12B6, 'X'), + (0x12B8, 'V'), + (0x12BF, 'X'), + (0x12C0, 'V'), + (0x12C1, 'X'), + (0x12C2, 'V'), + (0x12C6, 'X'), + (0x12C8, 'V'), + (0x12D7, 'X'), + (0x12D8, 'V'), + (0x1311, 'X'), + (0x1312, 'V'), + (0x1316, 'X'), + (0x1318, 'V'), + (0x135B, 'X'), + (0x135D, 'V'), + (0x137D, 'X'), + (0x1380, 'V'), + (0x139A, 'X'), + (0x13A0, 'V'), + (0x13F5, 'X'), + (0x1400, 'V'), + (0x1680, 'X'), + (0x1681, 'V'), + (0x169D, 'X'), + (0x16A0, 'V'), + (0x16F1, 'X'), + (0x1700, 'V'), + (0x170D, 'X'), + (0x170E, 'V'), + (0x1715, 'X'), + (0x1720, 'V'), + (0x1737, 'X'), + (0x1740, 'V'), + (0x1754, 'X'), + (0x1760, 'V'), + (0x176D, 'X'), + (0x176E, 'V'), + (0x1771, 'X'), + (0x1772, 'V'), + (0x1774, 'X'), + (0x1780, 'V'), + (0x17B4, 'X'), + (0x17B6, 'V'), + (0x17DE, 'X'), + (0x17E0, 'V'), + (0x17EA, 'X'), + (0x17F0, 'V'), + (0x17FA, 'X'), + (0x1800, 'V'), + (0x1806, 'X'), + (0x1807, 'V'), + (0x180B, 'I'), + (0x180E, 'X'), + (0x1810, 'V'), + (0x181A, 'X'), + (0x1820, 'V'), + (0x1878, 'X'), + (0x1880, 'V'), + (0x18AB, 'X'), + (0x18B0, 'V'), + (0x18F6, 'X'), + (0x1900, 'V'), + (0x191D, 'X'), + (0x1920, 'V'), + (0x192C, 'X'), + (0x1930, 'V'), + (0x193C, 'X'), + (0x1940, 'V'), + (0x1941, 'X'), + (0x1944, 'V'), + (0x196E, 'X'), + (0x1970, 'V'), + (0x1975, 'X'), + (0x1980, 'V'), + (0x19AC, 'X'), + (0x19B0, 'V'), + (0x19CA, 'X'), + (0x19D0, 'V'), + (0x19DB, 'X'), + (0x19DE, 'V'), + (0x1A1C, 'X'), + (0x1A1E, 'V'), + (0x1A5F, 'X'), + (0x1A60, 'V'), + (0x1A7D, 'X'), + (0x1A7F, 'V'), + (0x1A8A, 'X'), + (0x1A90, 'V'), + (0x1A9A, 'X'), + ] + +def _seg_15(): + return [ + (0x1AA0, 'V'), + (0x1AAE, 'X'), + (0x1B00, 'V'), + (0x1B4C, 'X'), + (0x1B50, 'V'), + (0x1B7D, 'X'), + (0x1B80, 'V'), + (0x1BF4, 'X'), + (0x1BFC, 'V'), + (0x1C38, 'X'), + (0x1C3B, 'V'), + (0x1C4A, 'X'), + (0x1C4D, 'V'), + (0x1C80, 'X'), + (0x1CC0, 'V'), + (0x1CC8, 'X'), + (0x1CD0, 'V'), + (0x1CF7, 'X'), + (0x1D00, 'V'), + (0x1D2C, 'M', u'a'), + (0x1D2D, 'M', u'æ'), + (0x1D2E, 'M', u'b'), + (0x1D2F, 'V'), + (0x1D30, 'M', u'd'), + (0x1D31, 'M', u'e'), + (0x1D32, 'M', u'ǝ'), + (0x1D33, 'M', u'g'), + (0x1D34, 'M', u'h'), + (0x1D35, 'M', u'i'), + (0x1D36, 'M', u'j'), + (0x1D37, 'M', u'k'), + (0x1D38, 'M', u'l'), + (0x1D39, 'M', u'm'), + (0x1D3A, 'M', u'n'), + (0x1D3B, 'V'), + (0x1D3C, 'M', u'o'), + (0x1D3D, 'M', u'ȣ'), + (0x1D3E, 'M', u'p'), + (0x1D3F, 'M', u'r'), + (0x1D40, 'M', u't'), + (0x1D41, 'M', u'u'), + (0x1D42, 'M', u'w'), + (0x1D43, 'M', u'a'), + (0x1D44, 'M', u'ɐ'), + (0x1D45, 'M', u'ɑ'), + (0x1D46, 'M', u'ᴂ'), + (0x1D47, 'M', u'b'), + (0x1D48, 'M', u'd'), + (0x1D49, 'M', u'e'), + (0x1D4A, 'M', u'ə'), + (0x1D4B, 'M', u'ɛ'), + (0x1D4C, 'M', u'ɜ'), + (0x1D4D, 'M', u'g'), + (0x1D4E, 'V'), + (0x1D4F, 'M', u'k'), + (0x1D50, 'M', u'm'), + (0x1D51, 'M', u'ŋ'), + (0x1D52, 'M', u'o'), + (0x1D53, 'M', u'ɔ'), + (0x1D54, 'M', u'ᴖ'), + (0x1D55, 'M', u'ᴗ'), + (0x1D56, 'M', u'p'), + (0x1D57, 'M', u't'), + (0x1D58, 'M', u'u'), + (0x1D59, 'M', u'ᴝ'), + (0x1D5A, 'M', u'ɯ'), + (0x1D5B, 'M', u'v'), + (0x1D5C, 'M', u'ᴥ'), + (0x1D5D, 'M', u'β'), + (0x1D5E, 'M', u'γ'), + (0x1D5F, 'M', u'δ'), + (0x1D60, 'M', u'φ'), + (0x1D61, 'M', u'χ'), + (0x1D62, 'M', u'i'), + (0x1D63, 'M', u'r'), + (0x1D64, 'M', u'u'), + (0x1D65, 'M', u'v'), + (0x1D66, 'M', u'β'), + (0x1D67, 'M', u'γ'), + (0x1D68, 'M', u'ρ'), + (0x1D69, 'M', u'φ'), + (0x1D6A, 'M', u'χ'), + (0x1D6B, 'V'), + (0x1D78, 'M', u'н'), + (0x1D79, 'V'), + (0x1D9B, 'M', u'ɒ'), + (0x1D9C, 'M', u'c'), + (0x1D9D, 'M', u'ɕ'), + (0x1D9E, 'M', u'ð'), + (0x1D9F, 'M', u'ɜ'), + (0x1DA0, 'M', u'f'), + (0x1DA1, 'M', u'ɟ'), + (0x1DA2, 'M', u'ɡ'), + (0x1DA3, 'M', u'ɥ'), + (0x1DA4, 'M', u'ɨ'), + (0x1DA5, 'M', u'ɩ'), + (0x1DA6, 'M', u'ɪ'), + (0x1DA7, 'M', u'ᵻ'), + (0x1DA8, 'M', u'ʝ'), + (0x1DA9, 'M', u'ɭ'), + ] + +def _seg_16(): + return [ + (0x1DAA, 'M', u'ᶅ'), + (0x1DAB, 'M', u'ʟ'), + (0x1DAC, 'M', u'ɱ'), + (0x1DAD, 'M', u'ɰ'), + (0x1DAE, 'M', u'ɲ'), + (0x1DAF, 'M', u'ɳ'), + (0x1DB0, 'M', u'ɴ'), + (0x1DB1, 'M', u'ɵ'), + (0x1DB2, 'M', u'ɸ'), + (0x1DB3, 'M', u'ʂ'), + (0x1DB4, 'M', u'ʃ'), + (0x1DB5, 'M', u'ƫ'), + (0x1DB6, 'M', u'ʉ'), + (0x1DB7, 'M', u'ʊ'), + (0x1DB8, 'M', u'ᴜ'), + (0x1DB9, 'M', u'ʋ'), + (0x1DBA, 'M', u'ʌ'), + (0x1DBB, 'M', u'z'), + (0x1DBC, 'M', u'ʐ'), + (0x1DBD, 'M', u'ʑ'), + (0x1DBE, 'M', u'ʒ'), + (0x1DBF, 'M', u'θ'), + (0x1DC0, 'V'), + (0x1DE7, 'X'), + (0x1DFC, 'V'), + (0x1E00, 'M', u'ḁ'), + (0x1E01, 'V'), + (0x1E02, 'M', u'ḃ'), + (0x1E03, 'V'), + (0x1E04, 'M', u'ḅ'), + (0x1E05, 'V'), + (0x1E06, 'M', u'ḇ'), + (0x1E07, 'V'), + (0x1E08, 'M', u'ḉ'), + (0x1E09, 'V'), + (0x1E0A, 'M', u'ḋ'), + (0x1E0B, 'V'), + (0x1E0C, 'M', u'ḍ'), + (0x1E0D, 'V'), + (0x1E0E, 'M', u'ḏ'), + (0x1E0F, 'V'), + (0x1E10, 'M', u'ḑ'), + (0x1E11, 'V'), + (0x1E12, 'M', u'ḓ'), + (0x1E13, 'V'), + (0x1E14, 'M', u'ḕ'), + (0x1E15, 'V'), + (0x1E16, 'M', u'ḗ'), + (0x1E17, 'V'), + (0x1E18, 'M', u'ḙ'), + (0x1E19, 'V'), + (0x1E1A, 'M', u'ḛ'), + (0x1E1B, 'V'), + (0x1E1C, 'M', u'ḝ'), + (0x1E1D, 'V'), + (0x1E1E, 'M', u'ḟ'), + (0x1E1F, 'V'), + (0x1E20, 'M', u'ḡ'), + (0x1E21, 'V'), + (0x1E22, 'M', u'ḣ'), + (0x1E23, 'V'), + (0x1E24, 'M', u'ḥ'), + (0x1E25, 'V'), + (0x1E26, 'M', u'ḧ'), + (0x1E27, 'V'), + (0x1E28, 'M', u'ḩ'), + (0x1E29, 'V'), + (0x1E2A, 'M', u'ḫ'), + (0x1E2B, 'V'), + (0x1E2C, 'M', u'ḭ'), + (0x1E2D, 'V'), + (0x1E2E, 'M', u'ḯ'), + (0x1E2F, 'V'), + (0x1E30, 'M', u'ḱ'), + (0x1E31, 'V'), + (0x1E32, 'M', u'ḳ'), + (0x1E33, 'V'), + (0x1E34, 'M', u'ḵ'), + (0x1E35, 'V'), + (0x1E36, 'M', u'ḷ'), + (0x1E37, 'V'), + (0x1E38, 'M', u'ḹ'), + (0x1E39, 'V'), + (0x1E3A, 'M', u'ḻ'), + (0x1E3B, 'V'), + (0x1E3C, 'M', u'ḽ'), + (0x1E3D, 'V'), + (0x1E3E, 'M', u'ḿ'), + (0x1E3F, 'V'), + (0x1E40, 'M', u'ṁ'), + (0x1E41, 'V'), + (0x1E42, 'M', u'ṃ'), + (0x1E43, 'V'), + (0x1E44, 'M', u'ṅ'), + (0x1E45, 'V'), + (0x1E46, 'M', u'ṇ'), + (0x1E47, 'V'), + (0x1E48, 'M', u'ṉ'), + (0x1E49, 'V'), + (0x1E4A, 'M', u'ṋ'), + ] + +def _seg_17(): + return [ + (0x1E4B, 'V'), + (0x1E4C, 'M', u'ṍ'), + (0x1E4D, 'V'), + (0x1E4E, 'M', u'ṏ'), + (0x1E4F, 'V'), + (0x1E50, 'M', u'ṑ'), + (0x1E51, 'V'), + (0x1E52, 'M', u'ṓ'), + (0x1E53, 'V'), + (0x1E54, 'M', u'ṕ'), + (0x1E55, 'V'), + (0x1E56, 'M', u'ṗ'), + (0x1E57, 'V'), + (0x1E58, 'M', u'ṙ'), + (0x1E59, 'V'), + (0x1E5A, 'M', u'ṛ'), + (0x1E5B, 'V'), + (0x1E5C, 'M', u'ṝ'), + (0x1E5D, 'V'), + (0x1E5E, 'M', u'ṟ'), + (0x1E5F, 'V'), + (0x1E60, 'M', u'ṡ'), + (0x1E61, 'V'), + (0x1E62, 'M', u'ṣ'), + (0x1E63, 'V'), + (0x1E64, 'M', u'ṥ'), + (0x1E65, 'V'), + (0x1E66, 'M', u'ṧ'), + (0x1E67, 'V'), + (0x1E68, 'M', u'ṩ'), + (0x1E69, 'V'), + (0x1E6A, 'M', u'ṫ'), + (0x1E6B, 'V'), + (0x1E6C, 'M', u'ṭ'), + (0x1E6D, 'V'), + (0x1E6E, 'M', u'ṯ'), + (0x1E6F, 'V'), + (0x1E70, 'M', u'ṱ'), + (0x1E71, 'V'), + (0x1E72, 'M', u'ṳ'), + (0x1E73, 'V'), + (0x1E74, 'M', u'ṵ'), + (0x1E75, 'V'), + (0x1E76, 'M', u'ṷ'), + (0x1E77, 'V'), + (0x1E78, 'M', u'ṹ'), + (0x1E79, 'V'), + (0x1E7A, 'M', u'ṻ'), + (0x1E7B, 'V'), + (0x1E7C, 'M', u'ṽ'), + (0x1E7D, 'V'), + (0x1E7E, 'M', u'ṿ'), + (0x1E7F, 'V'), + (0x1E80, 'M', u'ẁ'), + (0x1E81, 'V'), + (0x1E82, 'M', u'ẃ'), + (0x1E83, 'V'), + (0x1E84, 'M', u'ẅ'), + (0x1E85, 'V'), + (0x1E86, 'M', u'ẇ'), + (0x1E87, 'V'), + (0x1E88, 'M', u'ẉ'), + (0x1E89, 'V'), + (0x1E8A, 'M', u'ẋ'), + (0x1E8B, 'V'), + (0x1E8C, 'M', u'ẍ'), + (0x1E8D, 'V'), + (0x1E8E, 'M', u'ẏ'), + (0x1E8F, 'V'), + (0x1E90, 'M', u'ẑ'), + (0x1E91, 'V'), + (0x1E92, 'M', u'ẓ'), + (0x1E93, 'V'), + (0x1E94, 'M', u'ẕ'), + (0x1E95, 'V'), + (0x1E9A, 'M', u'aʾ'), + (0x1E9B, 'M', u'ṡ'), + (0x1E9C, 'V'), + (0x1E9E, 'M', u'ss'), + (0x1E9F, 'V'), + (0x1EA0, 'M', u'ạ'), + (0x1EA1, 'V'), + (0x1EA2, 'M', u'ả'), + (0x1EA3, 'V'), + (0x1EA4, 'M', u'ấ'), + (0x1EA5, 'V'), + (0x1EA6, 'M', u'ầ'), + (0x1EA7, 'V'), + (0x1EA8, 'M', u'ẩ'), + (0x1EA9, 'V'), + (0x1EAA, 'M', u'ẫ'), + (0x1EAB, 'V'), + (0x1EAC, 'M', u'ậ'), + (0x1EAD, 'V'), + (0x1EAE, 'M', u'ắ'), + (0x1EAF, 'V'), + (0x1EB0, 'M', u'ằ'), + (0x1EB1, 'V'), + (0x1EB2, 'M', u'ẳ'), + (0x1EB3, 'V'), + ] + +def _seg_18(): + return [ + (0x1EB4, 'M', u'ẵ'), + (0x1EB5, 'V'), + (0x1EB6, 'M', u'ặ'), + (0x1EB7, 'V'), + (0x1EB8, 'M', u'ẹ'), + (0x1EB9, 'V'), + (0x1EBA, 'M', u'ẻ'), + (0x1EBB, 'V'), + (0x1EBC, 'M', u'ẽ'), + (0x1EBD, 'V'), + (0x1EBE, 'M', u'ế'), + (0x1EBF, 'V'), + (0x1EC0, 'M', u'ề'), + (0x1EC1, 'V'), + (0x1EC2, 'M', u'ể'), + (0x1EC3, 'V'), + (0x1EC4, 'M', u'ễ'), + (0x1EC5, 'V'), + (0x1EC6, 'M', u'ệ'), + (0x1EC7, 'V'), + (0x1EC8, 'M', u'ỉ'), + (0x1EC9, 'V'), + (0x1ECA, 'M', u'ị'), + (0x1ECB, 'V'), + (0x1ECC, 'M', u'ọ'), + (0x1ECD, 'V'), + (0x1ECE, 'M', u'ỏ'), + (0x1ECF, 'V'), + (0x1ED0, 'M', u'ố'), + (0x1ED1, 'V'), + (0x1ED2, 'M', u'ồ'), + (0x1ED3, 'V'), + (0x1ED4, 'M', u'ổ'), + (0x1ED5, 'V'), + (0x1ED6, 'M', u'ỗ'), + (0x1ED7, 'V'), + (0x1ED8, 'M', u'ộ'), + (0x1ED9, 'V'), + (0x1EDA, 'M', u'ớ'), + (0x1EDB, 'V'), + (0x1EDC, 'M', u'ờ'), + (0x1EDD, 'V'), + (0x1EDE, 'M', u'ở'), + (0x1EDF, 'V'), + (0x1EE0, 'M', u'ỡ'), + (0x1EE1, 'V'), + (0x1EE2, 'M', u'ợ'), + (0x1EE3, 'V'), + (0x1EE4, 'M', u'ụ'), + (0x1EE5, 'V'), + (0x1EE6, 'M', u'ủ'), + (0x1EE7, 'V'), + (0x1EE8, 'M', u'ứ'), + (0x1EE9, 'V'), + (0x1EEA, 'M', u'ừ'), + (0x1EEB, 'V'), + (0x1EEC, 'M', u'ử'), + (0x1EED, 'V'), + (0x1EEE, 'M', u'ữ'), + (0x1EEF, 'V'), + (0x1EF0, 'M', u'ự'), + (0x1EF1, 'V'), + (0x1EF2, 'M', u'ỳ'), + (0x1EF3, 'V'), + (0x1EF4, 'M', u'ỵ'), + (0x1EF5, 'V'), + (0x1EF6, 'M', u'ỷ'), + (0x1EF7, 'V'), + (0x1EF8, 'M', u'ỹ'), + (0x1EF9, 'V'), + (0x1EFA, 'M', u'ỻ'), + (0x1EFB, 'V'), + (0x1EFC, 'M', u'ỽ'), + (0x1EFD, 'V'), + (0x1EFE, 'M', u'ỿ'), + (0x1EFF, 'V'), + (0x1F08, 'M', u'ἀ'), + (0x1F09, 'M', u'ἁ'), + (0x1F0A, 'M', u'ἂ'), + (0x1F0B, 'M', u'ἃ'), + (0x1F0C, 'M', u'ἄ'), + (0x1F0D, 'M', u'ἅ'), + (0x1F0E, 'M', u'ἆ'), + (0x1F0F, 'M', u'ἇ'), + (0x1F10, 'V'), + (0x1F16, 'X'), + (0x1F18, 'M', u'ἐ'), + (0x1F19, 'M', u'ἑ'), + (0x1F1A, 'M', u'ἒ'), + (0x1F1B, 'M', u'ἓ'), + (0x1F1C, 'M', u'ἔ'), + (0x1F1D, 'M', u'ἕ'), + (0x1F1E, 'X'), + (0x1F20, 'V'), + (0x1F28, 'M', u'ἠ'), + (0x1F29, 'M', u'ἡ'), + (0x1F2A, 'M', u'ἢ'), + (0x1F2B, 'M', u'ἣ'), + (0x1F2C, 'M', u'ἤ'), + (0x1F2D, 'M', u'ἥ'), + ] + +def _seg_19(): + return [ + (0x1F2E, 'M', u'ἦ'), + (0x1F2F, 'M', u'ἧ'), + (0x1F30, 'V'), + (0x1F38, 'M', u'ἰ'), + (0x1F39, 'M', u'ἱ'), + (0x1F3A, 'M', u'ἲ'), + (0x1F3B, 'M', u'ἳ'), + (0x1F3C, 'M', u'ἴ'), + (0x1F3D, 'M', u'ἵ'), + (0x1F3E, 'M', u'ἶ'), + (0x1F3F, 'M', u'ἷ'), + (0x1F40, 'V'), + (0x1F46, 'X'), + (0x1F48, 'M', u'ὀ'), + (0x1F49, 'M', u'ὁ'), + (0x1F4A, 'M', u'ὂ'), + (0x1F4B, 'M', u'ὃ'), + (0x1F4C, 'M', u'ὄ'), + (0x1F4D, 'M', u'ὅ'), + (0x1F4E, 'X'), + (0x1F50, 'V'), + (0x1F58, 'X'), + (0x1F59, 'M', u'ὑ'), + (0x1F5A, 'X'), + (0x1F5B, 'M', u'ὓ'), + (0x1F5C, 'X'), + (0x1F5D, 'M', u'ὕ'), + (0x1F5E, 'X'), + (0x1F5F, 'M', u'ὗ'), + (0x1F60, 'V'), + (0x1F68, 'M', u'ὠ'), + (0x1F69, 'M', u'ὡ'), + (0x1F6A, 'M', u'ὢ'), + (0x1F6B, 'M', u'ὣ'), + (0x1F6C, 'M', u'ὤ'), + (0x1F6D, 'M', u'ὥ'), + (0x1F6E, 'M', u'ὦ'), + (0x1F6F, 'M', u'ὧ'), + (0x1F70, 'V'), + (0x1F71, 'M', u'ά'), + (0x1F72, 'V'), + (0x1F73, 'M', u'έ'), + (0x1F74, 'V'), + (0x1F75, 'M', u'ή'), + (0x1F76, 'V'), + (0x1F77, 'M', u'ί'), + (0x1F78, 'V'), + (0x1F79, 'M', u'ό'), + (0x1F7A, 'V'), + (0x1F7B, 'M', u'ύ'), + (0x1F7C, 'V'), + (0x1F7D, 'M', u'ώ'), + (0x1F7E, 'X'), + (0x1F80, 'M', u'ἀι'), + (0x1F81, 'M', u'ἁι'), + (0x1F82, 'M', u'ἂι'), + (0x1F83, 'M', u'ἃι'), + (0x1F84, 'M', u'ἄι'), + (0x1F85, 'M', u'ἅι'), + (0x1F86, 'M', u'ἆι'), + (0x1F87, 'M', u'ἇι'), + (0x1F88, 'M', u'ἀι'), + (0x1F89, 'M', u'ἁι'), + (0x1F8A, 'M', u'ἂι'), + (0x1F8B, 'M', u'ἃι'), + (0x1F8C, 'M', u'ἄι'), + (0x1F8D, 'M', u'ἅι'), + (0x1F8E, 'M', u'ἆι'), + (0x1F8F, 'M', u'ἇι'), + (0x1F90, 'M', u'ἠι'), + (0x1F91, 'M', u'ἡι'), + (0x1F92, 'M', u'ἢι'), + (0x1F93, 'M', u'ἣι'), + (0x1F94, 'M', u'ἤι'), + (0x1F95, 'M', u'ἥι'), + (0x1F96, 'M', u'ἦι'), + (0x1F97, 'M', u'ἧι'), + (0x1F98, 'M', u'ἠι'), + (0x1F99, 'M', u'ἡι'), + (0x1F9A, 'M', u'ἢι'), + (0x1F9B, 'M', u'ἣι'), + (0x1F9C, 'M', u'ἤι'), + (0x1F9D, 'M', u'ἥι'), + (0x1F9E, 'M', u'ἦι'), + (0x1F9F, 'M', u'ἧι'), + (0x1FA0, 'M', u'ὠι'), + (0x1FA1, 'M', u'ὡι'), + (0x1FA2, 'M', u'ὢι'), + (0x1FA3, 'M', u'ὣι'), + (0x1FA4, 'M', u'ὤι'), + (0x1FA5, 'M', u'ὥι'), + (0x1FA6, 'M', u'ὦι'), + (0x1FA7, 'M', u'ὧι'), + (0x1FA8, 'M', u'ὠι'), + (0x1FA9, 'M', u'ὡι'), + (0x1FAA, 'M', u'ὢι'), + (0x1FAB, 'M', u'ὣι'), + (0x1FAC, 'M', u'ὤι'), + (0x1FAD, 'M', u'ὥι'), + (0x1FAE, 'M', u'ὦι'), + ] + +def _seg_20(): + return [ + (0x1FAF, 'M', u'ὧι'), + (0x1FB0, 'V'), + (0x1FB2, 'M', u'ὰι'), + (0x1FB3, 'M', u'αι'), + (0x1FB4, 'M', u'άι'), + (0x1FB5, 'X'), + (0x1FB6, 'V'), + (0x1FB7, 'M', u'ᾶι'), + (0x1FB8, 'M', u'ᾰ'), + (0x1FB9, 'M', u'ᾱ'), + (0x1FBA, 'M', u'ὰ'), + (0x1FBB, 'M', u'ά'), + (0x1FBC, 'M', u'αι'), + (0x1FBD, '3', u' ̓'), + (0x1FBE, 'M', u'ι'), + (0x1FBF, '3', u' ̓'), + (0x1FC0, '3', u' ͂'), + (0x1FC1, '3', u' ̈͂'), + (0x1FC2, 'M', u'ὴι'), + (0x1FC3, 'M', u'ηι'), + (0x1FC4, 'M', u'ήι'), + (0x1FC5, 'X'), + (0x1FC6, 'V'), + (0x1FC7, 'M', u'ῆι'), + (0x1FC8, 'M', u'ὲ'), + (0x1FC9, 'M', u'έ'), + (0x1FCA, 'M', u'ὴ'), + (0x1FCB, 'M', u'ή'), + (0x1FCC, 'M', u'ηι'), + (0x1FCD, '3', u' ̓̀'), + (0x1FCE, '3', u' ̓́'), + (0x1FCF, '3', u' ̓͂'), + (0x1FD0, 'V'), + (0x1FD3, 'M', u'ΐ'), + (0x1FD4, 'X'), + (0x1FD6, 'V'), + (0x1FD8, 'M', u'ῐ'), + (0x1FD9, 'M', u'ῑ'), + (0x1FDA, 'M', u'ὶ'), + (0x1FDB, 'M', u'ί'), + (0x1FDC, 'X'), + (0x1FDD, '3', u' ̔̀'), + (0x1FDE, '3', u' ̔́'), + (0x1FDF, '3', u' ̔͂'), + (0x1FE0, 'V'), + (0x1FE3, 'M', u'ΰ'), + (0x1FE4, 'V'), + (0x1FE8, 'M', u'ῠ'), + (0x1FE9, 'M', u'ῡ'), + (0x1FEA, 'M', u'ὺ'), + (0x1FEB, 'M', u'ύ'), + (0x1FEC, 'M', u'ῥ'), + (0x1FED, '3', u' ̈̀'), + (0x1FEE, '3', u' ̈́'), + (0x1FEF, '3', u'`'), + (0x1FF0, 'X'), + (0x1FF2, 'M', u'ὼι'), + (0x1FF3, 'M', u'ωι'), + (0x1FF4, 'M', u'ώι'), + (0x1FF5, 'X'), + (0x1FF6, 'V'), + (0x1FF7, 'M', u'ῶι'), + (0x1FF8, 'M', u'ὸ'), + (0x1FF9, 'M', u'ό'), + (0x1FFA, 'M', u'ὼ'), + (0x1FFB, 'M', u'ώ'), + (0x1FFC, 'M', u'ωι'), + (0x1FFD, '3', u' ́'), + (0x1FFE, '3', u' ̔'), + (0x1FFF, 'X'), + (0x2000, '3', u' '), + (0x200B, 'I'), + (0x200C, 'D', u''), + (0x200E, 'X'), + (0x2010, 'V'), + (0x2011, 'M', u'‐'), + (0x2012, 'V'), + (0x2017, '3', u' ̳'), + (0x2018, 'V'), + (0x2024, 'X'), + (0x2027, 'V'), + (0x2028, 'X'), + (0x202F, '3', u' '), + (0x2030, 'V'), + (0x2033, 'M', u'′′'), + (0x2034, 'M', u'′′′'), + (0x2035, 'V'), + (0x2036, 'M', u'‵‵'), + (0x2037, 'M', u'‵‵‵'), + (0x2038, 'V'), + (0x203C, '3', u'!!'), + (0x203D, 'V'), + (0x203E, '3', u' ̅'), + (0x203F, 'V'), + (0x2047, '3', u'??'), + (0x2048, '3', u'?!'), + (0x2049, '3', u'!?'), + (0x204A, 'V'), + (0x2057, 'M', u'′′′′'), + (0x2058, 'V'), + ] + +def _seg_21(): + return [ + (0x205F, '3', u' '), + (0x2060, 'I'), + (0x2061, 'X'), + (0x2064, 'I'), + (0x2065, 'X'), + (0x2070, 'M', u'0'), + (0x2071, 'M', u'i'), + (0x2072, 'X'), + (0x2074, 'M', u'4'), + (0x2075, 'M', u'5'), + (0x2076, 'M', u'6'), + (0x2077, 'M', u'7'), + (0x2078, 'M', u'8'), + (0x2079, 'M', u'9'), + (0x207A, '3', u'+'), + (0x207B, 'M', u'−'), + (0x207C, '3', u'='), + (0x207D, '3', u'('), + (0x207E, '3', u')'), + (0x207F, 'M', u'n'), + (0x2080, 'M', u'0'), + (0x2081, 'M', u'1'), + (0x2082, 'M', u'2'), + (0x2083, 'M', u'3'), + (0x2084, 'M', u'4'), + (0x2085, 'M', u'5'), + (0x2086, 'M', u'6'), + (0x2087, 'M', u'7'), + (0x2088, 'M', u'8'), + (0x2089, 'M', u'9'), + (0x208A, '3', u'+'), + (0x208B, 'M', u'−'), + (0x208C, '3', u'='), + (0x208D, '3', u'('), + (0x208E, '3', u')'), + (0x208F, 'X'), + (0x2090, 'M', u'a'), + (0x2091, 'M', u'e'), + (0x2092, 'M', u'o'), + (0x2093, 'M', u'x'), + (0x2094, 'M', u'ə'), + (0x2095, 'M', u'h'), + (0x2096, 'M', u'k'), + (0x2097, 'M', u'l'), + (0x2098, 'M', u'm'), + (0x2099, 'M', u'n'), + (0x209A, 'M', u'p'), + (0x209B, 'M', u's'), + (0x209C, 'M', u't'), + (0x209D, 'X'), + (0x20A0, 'V'), + (0x20A8, 'M', u'rs'), + (0x20A9, 'V'), + (0x20BB, 'X'), + (0x20D0, 'V'), + (0x20F1, 'X'), + (0x2100, '3', u'a/c'), + (0x2101, '3', u'a/s'), + (0x2102, 'M', u'c'), + (0x2103, 'M', u'°c'), + (0x2104, 'V'), + (0x2105, '3', u'c/o'), + (0x2106, '3', u'c/u'), + (0x2107, 'M', u'ɛ'), + (0x2108, 'V'), + (0x2109, 'M', u'°f'), + (0x210A, 'M', u'g'), + (0x210B, 'M', u'h'), + (0x210F, 'M', u'ħ'), + (0x2110, 'M', u'i'), + (0x2112, 'M', u'l'), + (0x2114, 'V'), + (0x2115, 'M', u'n'), + (0x2116, 'M', u'no'), + (0x2117, 'V'), + (0x2119, 'M', u'p'), + (0x211A, 'M', u'q'), + (0x211B, 'M', u'r'), + (0x211E, 'V'), + (0x2120, 'M', u'sm'), + (0x2121, 'M', u'tel'), + (0x2122, 'M', u'tm'), + (0x2123, 'V'), + (0x2124, 'M', u'z'), + (0x2125, 'V'), + (0x2126, 'M', u'ω'), + (0x2127, 'V'), + (0x2128, 'M', u'z'), + (0x2129, 'V'), + (0x212A, 'M', u'k'), + (0x212B, 'M', u'å'), + (0x212C, 'M', u'b'), + (0x212D, 'M', u'c'), + (0x212E, 'V'), + (0x212F, 'M', u'e'), + (0x2131, 'M', u'f'), + (0x2132, 'X'), + (0x2133, 'M', u'm'), + (0x2134, 'M', u'o'), + (0x2135, 'M', u'א'), + ] + +def _seg_22(): + return [ + (0x2136, 'M', u'ב'), + (0x2137, 'M', u'ג'), + (0x2138, 'M', u'ד'), + (0x2139, 'M', u'i'), + (0x213A, 'V'), + (0x213B, 'M', u'fax'), + (0x213C, 'M', u'π'), + (0x213D, 'M', u'γ'), + (0x213F, 'M', u'π'), + (0x2140, 'M', u'∑'), + (0x2141, 'V'), + (0x2145, 'M', u'd'), + (0x2147, 'M', u'e'), + (0x2148, 'M', u'i'), + (0x2149, 'M', u'j'), + (0x214A, 'V'), + (0x2150, 'M', u'1⁄7'), + (0x2151, 'M', u'1⁄9'), + (0x2152, 'M', u'1⁄10'), + (0x2153, 'M', u'1⁄3'), + (0x2154, 'M', u'2⁄3'), + (0x2155, 'M', u'1⁄5'), + (0x2156, 'M', u'2⁄5'), + (0x2157, 'M', u'3⁄5'), + (0x2158, 'M', u'4⁄5'), + (0x2159, 'M', u'1⁄6'), + (0x215A, 'M', u'5⁄6'), + (0x215B, 'M', u'1⁄8'), + (0x215C, 'M', u'3⁄8'), + (0x215D, 'M', u'5⁄8'), + (0x215E, 'M', u'7⁄8'), + (0x215F, 'M', u'1⁄'), + (0x2160, 'M', u'i'), + (0x2161, 'M', u'ii'), + (0x2162, 'M', u'iii'), + (0x2163, 'M', u'iv'), + (0x2164, 'M', u'v'), + (0x2165, 'M', u'vi'), + (0x2166, 'M', u'vii'), + (0x2167, 'M', u'viii'), + (0x2168, 'M', u'ix'), + (0x2169, 'M', u'x'), + (0x216A, 'M', u'xi'), + (0x216B, 'M', u'xii'), + (0x216C, 'M', u'l'), + (0x216D, 'M', u'c'), + (0x216E, 'M', u'd'), + (0x216F, 'M', u'm'), + (0x2170, 'M', u'i'), + (0x2171, 'M', u'ii'), + (0x2172, 'M', u'iii'), + (0x2173, 'M', u'iv'), + (0x2174, 'M', u'v'), + (0x2175, 'M', u'vi'), + (0x2176, 'M', u'vii'), + (0x2177, 'M', u'viii'), + (0x2178, 'M', u'ix'), + (0x2179, 'M', u'x'), + (0x217A, 'M', u'xi'), + (0x217B, 'M', u'xii'), + (0x217C, 'M', u'l'), + (0x217D, 'M', u'c'), + (0x217E, 'M', u'd'), + (0x217F, 'M', u'm'), + (0x2180, 'V'), + (0x2183, 'X'), + (0x2184, 'V'), + (0x2189, 'M', u'0⁄3'), + (0x218A, 'X'), + (0x2190, 'V'), + (0x222C, 'M', u'∫∫'), + (0x222D, 'M', u'∫∫∫'), + (0x222E, 'V'), + (0x222F, 'M', u'∮∮'), + (0x2230, 'M', u'∮∮∮'), + (0x2231, 'V'), + (0x2260, '3'), + (0x2261, 'V'), + (0x226E, '3'), + (0x2270, 'V'), + (0x2329, 'M', u'〈'), + (0x232A, 'M', u'〉'), + (0x232B, 'V'), + (0x23F4, 'X'), + (0x2400, 'V'), + (0x2427, 'X'), + (0x2440, 'V'), + (0x244B, 'X'), + (0x2460, 'M', u'1'), + (0x2461, 'M', u'2'), + (0x2462, 'M', u'3'), + (0x2463, 'M', u'4'), + (0x2464, 'M', u'5'), + (0x2465, 'M', u'6'), + (0x2466, 'M', u'7'), + (0x2467, 'M', u'8'), + (0x2468, 'M', u'9'), + (0x2469, 'M', u'10'), + (0x246A, 'M', u'11'), + (0x246B, 'M', u'12'), + ] + +def _seg_23(): + return [ + (0x246C, 'M', u'13'), + (0x246D, 'M', u'14'), + (0x246E, 'M', u'15'), + (0x246F, 'M', u'16'), + (0x2470, 'M', u'17'), + (0x2471, 'M', u'18'), + (0x2472, 'M', u'19'), + (0x2473, 'M', u'20'), + (0x2474, '3', u'(1)'), + (0x2475, '3', u'(2)'), + (0x2476, '3', u'(3)'), + (0x2477, '3', u'(4)'), + (0x2478, '3', u'(5)'), + (0x2479, '3', u'(6)'), + (0x247A, '3', u'(7)'), + (0x247B, '3', u'(8)'), + (0x247C, '3', u'(9)'), + (0x247D, '3', u'(10)'), + (0x247E, '3', u'(11)'), + (0x247F, '3', u'(12)'), + (0x2480, '3', u'(13)'), + (0x2481, '3', u'(14)'), + (0x2482, '3', u'(15)'), + (0x2483, '3', u'(16)'), + (0x2484, '3', u'(17)'), + (0x2485, '3', u'(18)'), + (0x2486, '3', u'(19)'), + (0x2487, '3', u'(20)'), + (0x2488, 'X'), + (0x249C, '3', u'(a)'), + (0x249D, '3', u'(b)'), + (0x249E, '3', u'(c)'), + (0x249F, '3', u'(d)'), + (0x24A0, '3', u'(e)'), + (0x24A1, '3', u'(f)'), + (0x24A2, '3', u'(g)'), + (0x24A3, '3', u'(h)'), + (0x24A4, '3', u'(i)'), + (0x24A5, '3', u'(j)'), + (0x24A6, '3', u'(k)'), + (0x24A7, '3', u'(l)'), + (0x24A8, '3', u'(m)'), + (0x24A9, '3', u'(n)'), + (0x24AA, '3', u'(o)'), + (0x24AB, '3', u'(p)'), + (0x24AC, '3', u'(q)'), + (0x24AD, '3', u'(r)'), + (0x24AE, '3', u'(s)'), + (0x24AF, '3', u'(t)'), + (0x24B0, '3', u'(u)'), + (0x24B1, '3', u'(v)'), + (0x24B2, '3', u'(w)'), + (0x24B3, '3', u'(x)'), + (0x24B4, '3', u'(y)'), + (0x24B5, '3', u'(z)'), + (0x24B6, 'M', u'a'), + (0x24B7, 'M', u'b'), + (0x24B8, 'M', u'c'), + (0x24B9, 'M', u'd'), + (0x24BA, 'M', u'e'), + (0x24BB, 'M', u'f'), + (0x24BC, 'M', u'g'), + (0x24BD, 'M', u'h'), + (0x24BE, 'M', u'i'), + (0x24BF, 'M', u'j'), + (0x24C0, 'M', u'k'), + (0x24C1, 'M', u'l'), + (0x24C2, 'M', u'm'), + (0x24C3, 'M', u'n'), + (0x24C4, 'M', u'o'), + (0x24C5, 'M', u'p'), + (0x24C6, 'M', u'q'), + (0x24C7, 'M', u'r'), + (0x24C8, 'M', u's'), + (0x24C9, 'M', u't'), + (0x24CA, 'M', u'u'), + (0x24CB, 'M', u'v'), + (0x24CC, 'M', u'w'), + (0x24CD, 'M', u'x'), + (0x24CE, 'M', u'y'), + (0x24CF, 'M', u'z'), + (0x24D0, 'M', u'a'), + (0x24D1, 'M', u'b'), + (0x24D2, 'M', u'c'), + (0x24D3, 'M', u'd'), + (0x24D4, 'M', u'e'), + (0x24D5, 'M', u'f'), + (0x24D6, 'M', u'g'), + (0x24D7, 'M', u'h'), + (0x24D8, 'M', u'i'), + (0x24D9, 'M', u'j'), + (0x24DA, 'M', u'k'), + (0x24DB, 'M', u'l'), + (0x24DC, 'M', u'm'), + (0x24DD, 'M', u'n'), + (0x24DE, 'M', u'o'), + (0x24DF, 'M', u'p'), + (0x24E0, 'M', u'q'), + (0x24E1, 'M', u'r'), + (0x24E2, 'M', u's'), + ] + +def _seg_24(): + return [ + (0x24E3, 'M', u't'), + (0x24E4, 'M', u'u'), + (0x24E5, 'M', u'v'), + (0x24E6, 'M', u'w'), + (0x24E7, 'M', u'x'), + (0x24E8, 'M', u'y'), + (0x24E9, 'M', u'z'), + (0x24EA, 'M', u'0'), + (0x24EB, 'V'), + (0x2700, 'X'), + (0x2701, 'V'), + (0x2A0C, 'M', u'∫∫∫∫'), + (0x2A0D, 'V'), + (0x2A74, '3', u'::='), + (0x2A75, '3', u'=='), + (0x2A76, '3', u'==='), + (0x2A77, 'V'), + (0x2ADC, 'M', u'⫝̸'), + (0x2ADD, 'V'), + (0x2B4D, 'X'), + (0x2B50, 'V'), + (0x2B5A, 'X'), + (0x2C00, 'M', u'ⰰ'), + (0x2C01, 'M', u'ⰱ'), + (0x2C02, 'M', u'ⰲ'), + (0x2C03, 'M', u'ⰳ'), + (0x2C04, 'M', u'ⰴ'), + (0x2C05, 'M', u'ⰵ'), + (0x2C06, 'M', u'ⰶ'), + (0x2C07, 'M', u'ⰷ'), + (0x2C08, 'M', u'ⰸ'), + (0x2C09, 'M', u'ⰹ'), + (0x2C0A, 'M', u'ⰺ'), + (0x2C0B, 'M', u'ⰻ'), + (0x2C0C, 'M', u'ⰼ'), + (0x2C0D, 'M', u'ⰽ'), + (0x2C0E, 'M', u'ⰾ'), + (0x2C0F, 'M', u'ⰿ'), + (0x2C10, 'M', u'ⱀ'), + (0x2C11, 'M', u'ⱁ'), + (0x2C12, 'M', u'ⱂ'), + (0x2C13, 'M', u'ⱃ'), + (0x2C14, 'M', u'ⱄ'), + (0x2C15, 'M', u'ⱅ'), + (0x2C16, 'M', u'ⱆ'), + (0x2C17, 'M', u'ⱇ'), + (0x2C18, 'M', u'ⱈ'), + (0x2C19, 'M', u'ⱉ'), + (0x2C1A, 'M', u'ⱊ'), + (0x2C1B, 'M', u'ⱋ'), + (0x2C1C, 'M', u'ⱌ'), + (0x2C1D, 'M', u'ⱍ'), + (0x2C1E, 'M', u'ⱎ'), + (0x2C1F, 'M', u'ⱏ'), + (0x2C20, 'M', u'ⱐ'), + (0x2C21, 'M', u'ⱑ'), + (0x2C22, 'M', u'ⱒ'), + (0x2C23, 'M', u'ⱓ'), + (0x2C24, 'M', u'ⱔ'), + (0x2C25, 'M', u'ⱕ'), + (0x2C26, 'M', u'ⱖ'), + (0x2C27, 'M', u'ⱗ'), + (0x2C28, 'M', u'ⱘ'), + (0x2C29, 'M', u'ⱙ'), + (0x2C2A, 'M', u'ⱚ'), + (0x2C2B, 'M', u'ⱛ'), + (0x2C2C, 'M', u'ⱜ'), + (0x2C2D, 'M', u'ⱝ'), + (0x2C2E, 'M', u'ⱞ'), + (0x2C2F, 'X'), + (0x2C30, 'V'), + (0x2C5F, 'X'), + (0x2C60, 'M', u'ⱡ'), + (0x2C61, 'V'), + (0x2C62, 'M', u'ɫ'), + (0x2C63, 'M', u'ᵽ'), + (0x2C64, 'M', u'ɽ'), + (0x2C65, 'V'), + (0x2C67, 'M', u'ⱨ'), + (0x2C68, 'V'), + (0x2C69, 'M', u'ⱪ'), + (0x2C6A, 'V'), + (0x2C6B, 'M', u'ⱬ'), + (0x2C6C, 'V'), + (0x2C6D, 'M', u'ɑ'), + (0x2C6E, 'M', u'ɱ'), + (0x2C6F, 'M', u'ɐ'), + (0x2C70, 'M', u'ɒ'), + (0x2C71, 'V'), + (0x2C72, 'M', u'ⱳ'), + (0x2C73, 'V'), + (0x2C75, 'M', u'ⱶ'), + (0x2C76, 'V'), + (0x2C7C, 'M', u'j'), + (0x2C7D, 'M', u'v'), + (0x2C7E, 'M', u'ȿ'), + (0x2C7F, 'M', u'ɀ'), + (0x2C80, 'M', u'ⲁ'), + (0x2C81, 'V'), + (0x2C82, 'M', u'ⲃ'), + ] + +def _seg_25(): + return [ + (0x2C83, 'V'), + (0x2C84, 'M', u'ⲅ'), + (0x2C85, 'V'), + (0x2C86, 'M', u'ⲇ'), + (0x2C87, 'V'), + (0x2C88, 'M', u'ⲉ'), + (0x2C89, 'V'), + (0x2C8A, 'M', u'ⲋ'), + (0x2C8B, 'V'), + (0x2C8C, 'M', u'ⲍ'), + (0x2C8D, 'V'), + (0x2C8E, 'M', u'ⲏ'), + (0x2C8F, 'V'), + (0x2C90, 'M', u'ⲑ'), + (0x2C91, 'V'), + (0x2C92, 'M', u'ⲓ'), + (0x2C93, 'V'), + (0x2C94, 'M', u'ⲕ'), + (0x2C95, 'V'), + (0x2C96, 'M', u'ⲗ'), + (0x2C97, 'V'), + (0x2C98, 'M', u'ⲙ'), + (0x2C99, 'V'), + (0x2C9A, 'M', u'ⲛ'), + (0x2C9B, 'V'), + (0x2C9C, 'M', u'ⲝ'), + (0x2C9D, 'V'), + (0x2C9E, 'M', u'ⲟ'), + (0x2C9F, 'V'), + (0x2CA0, 'M', u'ⲡ'), + (0x2CA1, 'V'), + (0x2CA2, 'M', u'ⲣ'), + (0x2CA3, 'V'), + (0x2CA4, 'M', u'ⲥ'), + (0x2CA5, 'V'), + (0x2CA6, 'M', u'ⲧ'), + (0x2CA7, 'V'), + (0x2CA8, 'M', u'ⲩ'), + (0x2CA9, 'V'), + (0x2CAA, 'M', u'ⲫ'), + (0x2CAB, 'V'), + (0x2CAC, 'M', u'ⲭ'), + (0x2CAD, 'V'), + (0x2CAE, 'M', u'ⲯ'), + (0x2CAF, 'V'), + (0x2CB0, 'M', u'ⲱ'), + (0x2CB1, 'V'), + (0x2CB2, 'M', u'ⲳ'), + (0x2CB3, 'V'), + (0x2CB4, 'M', u'ⲵ'), + (0x2CB5, 'V'), + (0x2CB6, 'M', u'ⲷ'), + (0x2CB7, 'V'), + (0x2CB8, 'M', u'ⲹ'), + (0x2CB9, 'V'), + (0x2CBA, 'M', u'ⲻ'), + (0x2CBB, 'V'), + (0x2CBC, 'M', u'ⲽ'), + (0x2CBD, 'V'), + (0x2CBE, 'M', u'ⲿ'), + (0x2CBF, 'V'), + (0x2CC0, 'M', u'ⳁ'), + (0x2CC1, 'V'), + (0x2CC2, 'M', u'ⳃ'), + (0x2CC3, 'V'), + (0x2CC4, 'M', u'ⳅ'), + (0x2CC5, 'V'), + (0x2CC6, 'M', u'ⳇ'), + (0x2CC7, 'V'), + (0x2CC8, 'M', u'ⳉ'), + (0x2CC9, 'V'), + (0x2CCA, 'M', u'ⳋ'), + (0x2CCB, 'V'), + (0x2CCC, 'M', u'ⳍ'), + (0x2CCD, 'V'), + (0x2CCE, 'M', u'ⳏ'), + (0x2CCF, 'V'), + (0x2CD0, 'M', u'ⳑ'), + (0x2CD1, 'V'), + (0x2CD2, 'M', u'ⳓ'), + (0x2CD3, 'V'), + (0x2CD4, 'M', u'ⳕ'), + (0x2CD5, 'V'), + (0x2CD6, 'M', u'ⳗ'), + (0x2CD7, 'V'), + (0x2CD8, 'M', u'ⳙ'), + (0x2CD9, 'V'), + (0x2CDA, 'M', u'ⳛ'), + (0x2CDB, 'V'), + (0x2CDC, 'M', u'ⳝ'), + (0x2CDD, 'V'), + (0x2CDE, 'M', u'ⳟ'), + (0x2CDF, 'V'), + (0x2CE0, 'M', u'ⳡ'), + (0x2CE1, 'V'), + (0x2CE2, 'M', u'ⳣ'), + (0x2CE3, 'V'), + (0x2CEB, 'M', u'ⳬ'), + (0x2CEC, 'V'), + (0x2CED, 'M', u'ⳮ'), + ] + +def _seg_26(): + return [ + (0x2CEE, 'V'), + (0x2CF2, 'M', u'ⳳ'), + (0x2CF3, 'V'), + (0x2CF4, 'X'), + (0x2CF9, 'V'), + (0x2D26, 'X'), + (0x2D27, 'V'), + (0x2D28, 'X'), + (0x2D2D, 'V'), + (0x2D2E, 'X'), + (0x2D30, 'V'), + (0x2D68, 'X'), + (0x2D6F, 'M', u'ⵡ'), + (0x2D70, 'V'), + (0x2D71, 'X'), + (0x2D7F, 'V'), + (0x2D97, 'X'), + (0x2DA0, 'V'), + (0x2DA7, 'X'), + (0x2DA8, 'V'), + (0x2DAF, 'X'), + (0x2DB0, 'V'), + (0x2DB7, 'X'), + (0x2DB8, 'V'), + (0x2DBF, 'X'), + (0x2DC0, 'V'), + (0x2DC7, 'X'), + (0x2DC8, 'V'), + (0x2DCF, 'X'), + (0x2DD0, 'V'), + (0x2DD7, 'X'), + (0x2DD8, 'V'), + (0x2DDF, 'X'), + (0x2DE0, 'V'), + (0x2E3C, 'X'), + (0x2E80, 'V'), + (0x2E9A, 'X'), + (0x2E9B, 'V'), + (0x2E9F, 'M', u'母'), + (0x2EA0, 'V'), + (0x2EF3, 'M', u'龟'), + (0x2EF4, 'X'), + (0x2F00, 'M', u'一'), + (0x2F01, 'M', u'丨'), + (0x2F02, 'M', u'丶'), + (0x2F03, 'M', u'丿'), + (0x2F04, 'M', u'乙'), + (0x2F05, 'M', u'亅'), + (0x2F06, 'M', u'二'), + (0x2F07, 'M', u'亠'), + (0x2F08, 'M', u'人'), + (0x2F09, 'M', u'儿'), + (0x2F0A, 'M', u'入'), + (0x2F0B, 'M', u'八'), + (0x2F0C, 'M', u'冂'), + (0x2F0D, 'M', u'冖'), + (0x2F0E, 'M', u'冫'), + (0x2F0F, 'M', u'几'), + (0x2F10, 'M', u'凵'), + (0x2F11, 'M', u'刀'), + (0x2F12, 'M', u'力'), + (0x2F13, 'M', u'勹'), + (0x2F14, 'M', u'匕'), + (0x2F15, 'M', u'匚'), + (0x2F16, 'M', u'匸'), + (0x2F17, 'M', u'十'), + (0x2F18, 'M', u'卜'), + (0x2F19, 'M', u'卩'), + (0x2F1A, 'M', u'厂'), + (0x2F1B, 'M', u'厶'), + (0x2F1C, 'M', u'又'), + (0x2F1D, 'M', u'口'), + (0x2F1E, 'M', u'囗'), + (0x2F1F, 'M', u'土'), + (0x2F20, 'M', u'士'), + (0x2F21, 'M', u'夂'), + (0x2F22, 'M', u'夊'), + (0x2F23, 'M', u'夕'), + (0x2F24, 'M', u'大'), + (0x2F25, 'M', u'女'), + (0x2F26, 'M', u'子'), + (0x2F27, 'M', u'宀'), + (0x2F28, 'M', u'寸'), + (0x2F29, 'M', u'小'), + (0x2F2A, 'M', u'尢'), + (0x2F2B, 'M', u'尸'), + (0x2F2C, 'M', u'屮'), + (0x2F2D, 'M', u'山'), + (0x2F2E, 'M', u'巛'), + (0x2F2F, 'M', u'工'), + (0x2F30, 'M', u'己'), + (0x2F31, 'M', u'巾'), + (0x2F32, 'M', u'干'), + (0x2F33, 'M', u'幺'), + (0x2F34, 'M', u'广'), + (0x2F35, 'M', u'廴'), + (0x2F36, 'M', u'廾'), + (0x2F37, 'M', u'弋'), + (0x2F38, 'M', u'弓'), + (0x2F39, 'M', u'彐'), + ] + +def _seg_27(): + return [ + (0x2F3A, 'M', u'彡'), + (0x2F3B, 'M', u'彳'), + (0x2F3C, 'M', u'心'), + (0x2F3D, 'M', u'戈'), + (0x2F3E, 'M', u'戶'), + (0x2F3F, 'M', u'手'), + (0x2F40, 'M', u'支'), + (0x2F41, 'M', u'攴'), + (0x2F42, 'M', u'文'), + (0x2F43, 'M', u'斗'), + (0x2F44, 'M', u'斤'), + (0x2F45, 'M', u'方'), + (0x2F46, 'M', u'无'), + (0x2F47, 'M', u'日'), + (0x2F48, 'M', u'曰'), + (0x2F49, 'M', u'月'), + (0x2F4A, 'M', u'木'), + (0x2F4B, 'M', u'欠'), + (0x2F4C, 'M', u'止'), + (0x2F4D, 'M', u'歹'), + (0x2F4E, 'M', u'殳'), + (0x2F4F, 'M', u'毋'), + (0x2F50, 'M', u'比'), + (0x2F51, 'M', u'毛'), + (0x2F52, 'M', u'氏'), + (0x2F53, 'M', u'气'), + (0x2F54, 'M', u'水'), + (0x2F55, 'M', u'火'), + (0x2F56, 'M', u'爪'), + (0x2F57, 'M', u'父'), + (0x2F58, 'M', u'爻'), + (0x2F59, 'M', u'爿'), + (0x2F5A, 'M', u'片'), + (0x2F5B, 'M', u'牙'), + (0x2F5C, 'M', u'牛'), + (0x2F5D, 'M', u'犬'), + (0x2F5E, 'M', u'玄'), + (0x2F5F, 'M', u'玉'), + (0x2F60, 'M', u'瓜'), + (0x2F61, 'M', u'瓦'), + (0x2F62, 'M', u'甘'), + (0x2F63, 'M', u'生'), + (0x2F64, 'M', u'用'), + (0x2F65, 'M', u'田'), + (0x2F66, 'M', u'疋'), + (0x2F67, 'M', u'疒'), + (0x2F68, 'M', u'癶'), + (0x2F69, 'M', u'白'), + (0x2F6A, 'M', u'皮'), + (0x2F6B, 'M', u'皿'), + (0x2F6C, 'M', u'目'), + (0x2F6D, 'M', u'矛'), + (0x2F6E, 'M', u'矢'), + (0x2F6F, 'M', u'石'), + (0x2F70, 'M', u'示'), + (0x2F71, 'M', u'禸'), + (0x2F72, 'M', u'禾'), + (0x2F73, 'M', u'穴'), + (0x2F74, 'M', u'立'), + (0x2F75, 'M', u'竹'), + (0x2F76, 'M', u'米'), + (0x2F77, 'M', u'糸'), + (0x2F78, 'M', u'缶'), + (0x2F79, 'M', u'网'), + (0x2F7A, 'M', u'羊'), + (0x2F7B, 'M', u'羽'), + (0x2F7C, 'M', u'老'), + (0x2F7D, 'M', u'而'), + (0x2F7E, 'M', u'耒'), + (0x2F7F, 'M', u'耳'), + (0x2F80, 'M', u'聿'), + (0x2F81, 'M', u'肉'), + (0x2F82, 'M', u'臣'), + (0x2F83, 'M', u'自'), + (0x2F84, 'M', u'至'), + (0x2F85, 'M', u'臼'), + (0x2F86, 'M', u'舌'), + (0x2F87, 'M', u'舛'), + (0x2F88, 'M', u'舟'), + (0x2F89, 'M', u'艮'), + (0x2F8A, 'M', u'色'), + (0x2F8B, 'M', u'艸'), + (0x2F8C, 'M', u'虍'), + (0x2F8D, 'M', u'虫'), + (0x2F8E, 'M', u'血'), + (0x2F8F, 'M', u'行'), + (0x2F90, 'M', u'衣'), + (0x2F91, 'M', u'襾'), + (0x2F92, 'M', u'見'), + (0x2F93, 'M', u'角'), + (0x2F94, 'M', u'言'), + (0x2F95, 'M', u'谷'), + (0x2F96, 'M', u'豆'), + (0x2F97, 'M', u'豕'), + (0x2F98, 'M', u'豸'), + (0x2F99, 'M', u'貝'), + (0x2F9A, 'M', u'赤'), + (0x2F9B, 'M', u'走'), + (0x2F9C, 'M', u'足'), + (0x2F9D, 'M', u'身'), + ] + +def _seg_28(): + return [ + (0x2F9E, 'M', u'車'), + (0x2F9F, 'M', u'辛'), + (0x2FA0, 'M', u'辰'), + (0x2FA1, 'M', u'辵'), + (0x2FA2, 'M', u'邑'), + (0x2FA3, 'M', u'酉'), + (0x2FA4, 'M', u'釆'), + (0x2FA5, 'M', u'里'), + (0x2FA6, 'M', u'金'), + (0x2FA7, 'M', u'長'), + (0x2FA8, 'M', u'門'), + (0x2FA9, 'M', u'阜'), + (0x2FAA, 'M', u'隶'), + (0x2FAB, 'M', u'隹'), + (0x2FAC, 'M', u'雨'), + (0x2FAD, 'M', u'靑'), + (0x2FAE, 'M', u'非'), + (0x2FAF, 'M', u'面'), + (0x2FB0, 'M', u'革'), + (0x2FB1, 'M', u'韋'), + (0x2FB2, 'M', u'韭'), + (0x2FB3, 'M', u'音'), + (0x2FB4, 'M', u'頁'), + (0x2FB5, 'M', u'風'), + (0x2FB6, 'M', u'飛'), + (0x2FB7, 'M', u'食'), + (0x2FB8, 'M', u'首'), + (0x2FB9, 'M', u'香'), + (0x2FBA, 'M', u'馬'), + (0x2FBB, 'M', u'骨'), + (0x2FBC, 'M', u'高'), + (0x2FBD, 'M', u'髟'), + (0x2FBE, 'M', u'鬥'), + (0x2FBF, 'M', u'鬯'), + (0x2FC0, 'M', u'鬲'), + (0x2FC1, 'M', u'鬼'), + (0x2FC2, 'M', u'魚'), + (0x2FC3, 'M', u'鳥'), + (0x2FC4, 'M', u'鹵'), + (0x2FC5, 'M', u'鹿'), + (0x2FC6, 'M', u'麥'), + (0x2FC7, 'M', u'麻'), + (0x2FC8, 'M', u'黃'), + (0x2FC9, 'M', u'黍'), + (0x2FCA, 'M', u'黑'), + (0x2FCB, 'M', u'黹'), + (0x2FCC, 'M', u'黽'), + (0x2FCD, 'M', u'鼎'), + (0x2FCE, 'M', u'鼓'), + (0x2FCF, 'M', u'鼠'), + (0x2FD0, 'M', u'鼻'), + (0x2FD1, 'M', u'齊'), + (0x2FD2, 'M', u'齒'), + (0x2FD3, 'M', u'龍'), + (0x2FD4, 'M', u'龜'), + (0x2FD5, 'M', u'龠'), + (0x2FD6, 'X'), + (0x3000, '3', u' '), + (0x3001, 'V'), + (0x3002, 'M', u'.'), + (0x3003, 'V'), + (0x3036, 'M', u'〒'), + (0x3037, 'V'), + (0x3038, 'M', u'十'), + (0x3039, 'M', u'卄'), + (0x303A, 'M', u'卅'), + (0x303B, 'V'), + (0x3040, 'X'), + (0x3041, 'V'), + (0x3097, 'X'), + (0x3099, 'V'), + (0x309B, '3', u' ゙'), + (0x309C, '3', u' ゚'), + (0x309D, 'V'), + (0x309F, 'M', u'より'), + (0x30A0, 'V'), + (0x30FF, 'M', u'コト'), + (0x3100, 'X'), + (0x3105, 'V'), + (0x312E, 'X'), + (0x3131, 'M', u'ᄀ'), + (0x3132, 'M', u'ᄁ'), + (0x3133, 'M', u'ᆪ'), + (0x3134, 'M', u'ᄂ'), + (0x3135, 'M', u'ᆬ'), + (0x3136, 'M', u'ᆭ'), + (0x3137, 'M', u'ᄃ'), + (0x3138, 'M', u'ᄄ'), + (0x3139, 'M', u'ᄅ'), + (0x313A, 'M', u'ᆰ'), + (0x313B, 'M', u'ᆱ'), + (0x313C, 'M', u'ᆲ'), + (0x313D, 'M', u'ᆳ'), + (0x313E, 'M', u'ᆴ'), + (0x313F, 'M', u'ᆵ'), + (0x3140, 'M', u'ᄚ'), + (0x3141, 'M', u'ᄆ'), + (0x3142, 'M', u'ᄇ'), + (0x3143, 'M', u'ᄈ'), + (0x3144, 'M', u'ᄡ'), + ] + +def _seg_29(): + return [ + (0x3145, 'M', u'ᄉ'), + (0x3146, 'M', u'ᄊ'), + (0x3147, 'M', u'ᄋ'), + (0x3148, 'M', u'ᄌ'), + (0x3149, 'M', u'ᄍ'), + (0x314A, 'M', u'ᄎ'), + (0x314B, 'M', u'ᄏ'), + (0x314C, 'M', u'ᄐ'), + (0x314D, 'M', u'ᄑ'), + (0x314E, 'M', u'ᄒ'), + (0x314F, 'M', u'ᅡ'), + (0x3150, 'M', u'ᅢ'), + (0x3151, 'M', u'ᅣ'), + (0x3152, 'M', u'ᅤ'), + (0x3153, 'M', u'ᅥ'), + (0x3154, 'M', u'ᅦ'), + (0x3155, 'M', u'ᅧ'), + (0x3156, 'M', u'ᅨ'), + (0x3157, 'M', u'ᅩ'), + (0x3158, 'M', u'ᅪ'), + (0x3159, 'M', u'ᅫ'), + (0x315A, 'M', u'ᅬ'), + (0x315B, 'M', u'ᅭ'), + (0x315C, 'M', u'ᅮ'), + (0x315D, 'M', u'ᅯ'), + (0x315E, 'M', u'ᅰ'), + (0x315F, 'M', u'ᅱ'), + (0x3160, 'M', u'ᅲ'), + (0x3161, 'M', u'ᅳ'), + (0x3162, 'M', u'ᅴ'), + (0x3163, 'M', u'ᅵ'), + (0x3164, 'X'), + (0x3165, 'M', u'ᄔ'), + (0x3166, 'M', u'ᄕ'), + (0x3167, 'M', u'ᇇ'), + (0x3168, 'M', u'ᇈ'), + (0x3169, 'M', u'ᇌ'), + (0x316A, 'M', u'ᇎ'), + (0x316B, 'M', u'ᇓ'), + (0x316C, 'M', u'ᇗ'), + (0x316D, 'M', u'ᇙ'), + (0x316E, 'M', u'ᄜ'), + (0x316F, 'M', u'ᇝ'), + (0x3170, 'M', u'ᇟ'), + (0x3171, 'M', u'ᄝ'), + (0x3172, 'M', u'ᄞ'), + (0x3173, 'M', u'ᄠ'), + (0x3174, 'M', u'ᄢ'), + (0x3175, 'M', u'ᄣ'), + (0x3176, 'M', u'ᄧ'), + (0x3177, 'M', u'ᄩ'), + (0x3178, 'M', u'ᄫ'), + (0x3179, 'M', u'ᄬ'), + (0x317A, 'M', u'ᄭ'), + (0x317B, 'M', u'ᄮ'), + (0x317C, 'M', u'ᄯ'), + (0x317D, 'M', u'ᄲ'), + (0x317E, 'M', u'ᄶ'), + (0x317F, 'M', u'ᅀ'), + (0x3180, 'M', u'ᅇ'), + (0x3181, 'M', u'ᅌ'), + (0x3182, 'M', u'ᇱ'), + (0x3183, 'M', u'ᇲ'), + (0x3184, 'M', u'ᅗ'), + (0x3185, 'M', u'ᅘ'), + (0x3186, 'M', u'ᅙ'), + (0x3187, 'M', u'ᆄ'), + (0x3188, 'M', u'ᆅ'), + (0x3189, 'M', u'ᆈ'), + (0x318A, 'M', u'ᆑ'), + (0x318B, 'M', u'ᆒ'), + (0x318C, 'M', u'ᆔ'), + (0x318D, 'M', u'ᆞ'), + (0x318E, 'M', u'ᆡ'), + (0x318F, 'X'), + (0x3190, 'V'), + (0x3192, 'M', u'一'), + (0x3193, 'M', u'二'), + (0x3194, 'M', u'三'), + (0x3195, 'M', u'四'), + (0x3196, 'M', u'上'), + (0x3197, 'M', u'中'), + (0x3198, 'M', u'下'), + (0x3199, 'M', u'甲'), + (0x319A, 'M', u'乙'), + (0x319B, 'M', u'丙'), + (0x319C, 'M', u'丁'), + (0x319D, 'M', u'天'), + (0x319E, 'M', u'地'), + (0x319F, 'M', u'人'), + (0x31A0, 'V'), + (0x31BB, 'X'), + (0x31C0, 'V'), + (0x31E4, 'X'), + (0x31F0, 'V'), + (0x3200, '3', u'(ᄀ)'), + (0x3201, '3', u'(ᄂ)'), + (0x3202, '3', u'(ᄃ)'), + (0x3203, '3', u'(ᄅ)'), + (0x3204, '3', u'(ᄆ)'), + ] + +def _seg_30(): + return [ + (0x3205, '3', u'(ᄇ)'), + (0x3206, '3', u'(ᄉ)'), + (0x3207, '3', u'(ᄋ)'), + (0x3208, '3', u'(ᄌ)'), + (0x3209, '3', u'(ᄎ)'), + (0x320A, '3', u'(ᄏ)'), + (0x320B, '3', u'(ᄐ)'), + (0x320C, '3', u'(ᄑ)'), + (0x320D, '3', u'(ᄒ)'), + (0x320E, '3', u'(가)'), + (0x320F, '3', u'(나)'), + (0x3210, '3', u'(다)'), + (0x3211, '3', u'(라)'), + (0x3212, '3', u'(마)'), + (0x3213, '3', u'(바)'), + (0x3214, '3', u'(사)'), + (0x3215, '3', u'(아)'), + (0x3216, '3', u'(자)'), + (0x3217, '3', u'(차)'), + (0x3218, '3', u'(카)'), + (0x3219, '3', u'(타)'), + (0x321A, '3', u'(파)'), + (0x321B, '3', u'(하)'), + (0x321C, '3', u'(주)'), + (0x321D, '3', u'(오전)'), + (0x321E, '3', u'(오후)'), + (0x321F, 'X'), + (0x3220, '3', u'(一)'), + (0x3221, '3', u'(二)'), + (0x3222, '3', u'(三)'), + (0x3223, '3', u'(四)'), + (0x3224, '3', u'(五)'), + (0x3225, '3', u'(六)'), + (0x3226, '3', u'(七)'), + (0x3227, '3', u'(八)'), + (0x3228, '3', u'(九)'), + (0x3229, '3', u'(十)'), + (0x322A, '3', u'(月)'), + (0x322B, '3', u'(火)'), + (0x322C, '3', u'(水)'), + (0x322D, '3', u'(木)'), + (0x322E, '3', u'(金)'), + (0x322F, '3', u'(土)'), + (0x3230, '3', u'(日)'), + (0x3231, '3', u'(株)'), + (0x3232, '3', u'(有)'), + (0x3233, '3', u'(社)'), + (0x3234, '3', u'(名)'), + (0x3235, '3', u'(特)'), + (0x3236, '3', u'(財)'), + (0x3237, '3', u'(祝)'), + (0x3238, '3', u'(労)'), + (0x3239, '3', u'(代)'), + (0x323A, '3', u'(呼)'), + (0x323B, '3', u'(学)'), + (0x323C, '3', u'(監)'), + (0x323D, '3', u'(企)'), + (0x323E, '3', u'(資)'), + (0x323F, '3', u'(協)'), + (0x3240, '3', u'(祭)'), + (0x3241, '3', u'(休)'), + (0x3242, '3', u'(自)'), + (0x3243, '3', u'(至)'), + (0x3244, 'M', u'問'), + (0x3245, 'M', u'幼'), + (0x3246, 'M', u'文'), + (0x3247, 'M', u'箏'), + (0x3248, 'V'), + (0x3250, 'M', u'pte'), + (0x3251, 'M', u'21'), + (0x3252, 'M', u'22'), + (0x3253, 'M', u'23'), + (0x3254, 'M', u'24'), + (0x3255, 'M', u'25'), + (0x3256, 'M', u'26'), + (0x3257, 'M', u'27'), + (0x3258, 'M', u'28'), + (0x3259, 'M', u'29'), + (0x325A, 'M', u'30'), + (0x325B, 'M', u'31'), + (0x325C, 'M', u'32'), + (0x325D, 'M', u'33'), + (0x325E, 'M', u'34'), + (0x325F, 'M', u'35'), + (0x3260, 'M', u'ᄀ'), + (0x3261, 'M', u'ᄂ'), + (0x3262, 'M', u'ᄃ'), + (0x3263, 'M', u'ᄅ'), + (0x3264, 'M', u'ᄆ'), + (0x3265, 'M', u'ᄇ'), + (0x3266, 'M', u'ᄉ'), + (0x3267, 'M', u'ᄋ'), + (0x3268, 'M', u'ᄌ'), + (0x3269, 'M', u'ᄎ'), + (0x326A, 'M', u'ᄏ'), + (0x326B, 'M', u'ᄐ'), + (0x326C, 'M', u'ᄑ'), + (0x326D, 'M', u'ᄒ'), + (0x326E, 'M', u'가'), + (0x326F, 'M', u'나'), + ] + +def _seg_31(): + return [ + (0x3270, 'M', u'다'), + (0x3271, 'M', u'라'), + (0x3272, 'M', u'마'), + (0x3273, 'M', u'바'), + (0x3274, 'M', u'사'), + (0x3275, 'M', u'아'), + (0x3276, 'M', u'자'), + (0x3277, 'M', u'차'), + (0x3278, 'M', u'카'), + (0x3279, 'M', u'타'), + (0x327A, 'M', u'파'), + (0x327B, 'M', u'하'), + (0x327C, 'M', u'참고'), + (0x327D, 'M', u'주의'), + (0x327E, 'M', u'우'), + (0x327F, 'V'), + (0x3280, 'M', u'一'), + (0x3281, 'M', u'二'), + (0x3282, 'M', u'三'), + (0x3283, 'M', u'四'), + (0x3284, 'M', u'五'), + (0x3285, 'M', u'六'), + (0x3286, 'M', u'七'), + (0x3287, 'M', u'八'), + (0x3288, 'M', u'九'), + (0x3289, 'M', u'十'), + (0x328A, 'M', u'月'), + (0x328B, 'M', u'火'), + (0x328C, 'M', u'水'), + (0x328D, 'M', u'木'), + (0x328E, 'M', u'金'), + (0x328F, 'M', u'土'), + (0x3290, 'M', u'日'), + (0x3291, 'M', u'株'), + (0x3292, 'M', u'有'), + (0x3293, 'M', u'社'), + (0x3294, 'M', u'名'), + (0x3295, 'M', u'特'), + (0x3296, 'M', u'財'), + (0x3297, 'M', u'祝'), + (0x3298, 'M', u'労'), + (0x3299, 'M', u'秘'), + (0x329A, 'M', u'男'), + (0x329B, 'M', u'女'), + (0x329C, 'M', u'適'), + (0x329D, 'M', u'優'), + (0x329E, 'M', u'印'), + (0x329F, 'M', u'注'), + (0x32A0, 'M', u'項'), + (0x32A1, 'M', u'休'), + (0x32A2, 'M', u'写'), + (0x32A3, 'M', u'正'), + (0x32A4, 'M', u'上'), + (0x32A5, 'M', u'中'), + (0x32A6, 'M', u'下'), + (0x32A7, 'M', u'左'), + (0x32A8, 'M', u'右'), + (0x32A9, 'M', u'医'), + (0x32AA, 'M', u'宗'), + (0x32AB, 'M', u'学'), + (0x32AC, 'M', u'監'), + (0x32AD, 'M', u'企'), + (0x32AE, 'M', u'資'), + (0x32AF, 'M', u'協'), + (0x32B0, 'M', u'夜'), + (0x32B1, 'M', u'36'), + (0x32B2, 'M', u'37'), + (0x32B3, 'M', u'38'), + (0x32B4, 'M', u'39'), + (0x32B5, 'M', u'40'), + (0x32B6, 'M', u'41'), + (0x32B7, 'M', u'42'), + (0x32B8, 'M', u'43'), + (0x32B9, 'M', u'44'), + (0x32BA, 'M', u'45'), + (0x32BB, 'M', u'46'), + (0x32BC, 'M', u'47'), + (0x32BD, 'M', u'48'), + (0x32BE, 'M', u'49'), + (0x32BF, 'M', u'50'), + (0x32C0, 'M', u'1月'), + (0x32C1, 'M', u'2月'), + (0x32C2, 'M', u'3月'), + (0x32C3, 'M', u'4月'), + (0x32C4, 'M', u'5月'), + (0x32C5, 'M', u'6月'), + (0x32C6, 'M', u'7月'), + (0x32C7, 'M', u'8月'), + (0x32C8, 'M', u'9月'), + (0x32C9, 'M', u'10月'), + (0x32CA, 'M', u'11月'), + (0x32CB, 'M', u'12月'), + (0x32CC, 'M', u'hg'), + (0x32CD, 'M', u'erg'), + (0x32CE, 'M', u'ev'), + (0x32CF, 'M', u'ltd'), + (0x32D0, 'M', u'ア'), + (0x32D1, 'M', u'イ'), + (0x32D2, 'M', u'ウ'), + (0x32D3, 'M', u'エ'), + ] + +def _seg_32(): + return [ + (0x32D4, 'M', u'オ'), + (0x32D5, 'M', u'カ'), + (0x32D6, 'M', u'キ'), + (0x32D7, 'M', u'ク'), + (0x32D8, 'M', u'ケ'), + (0x32D9, 'M', u'コ'), + (0x32DA, 'M', u'サ'), + (0x32DB, 'M', u'シ'), + (0x32DC, 'M', u'ス'), + (0x32DD, 'M', u'セ'), + (0x32DE, 'M', u'ソ'), + (0x32DF, 'M', u'タ'), + (0x32E0, 'M', u'チ'), + (0x32E1, 'M', u'ツ'), + (0x32E2, 'M', u'テ'), + (0x32E3, 'M', u'ト'), + (0x32E4, 'M', u'ナ'), + (0x32E5, 'M', u'ニ'), + (0x32E6, 'M', u'ヌ'), + (0x32E7, 'M', u'ネ'), + (0x32E8, 'M', u'ノ'), + (0x32E9, 'M', u'ハ'), + (0x32EA, 'M', u'ヒ'), + (0x32EB, 'M', u'フ'), + (0x32EC, 'M', u'ヘ'), + (0x32ED, 'M', u'ホ'), + (0x32EE, 'M', u'マ'), + (0x32EF, 'M', u'ミ'), + (0x32F0, 'M', u'ム'), + (0x32F1, 'M', u'メ'), + (0x32F2, 'M', u'モ'), + (0x32F3, 'M', u'ヤ'), + (0x32F4, 'M', u'ユ'), + (0x32F5, 'M', u'ヨ'), + (0x32F6, 'M', u'ラ'), + (0x32F7, 'M', u'リ'), + (0x32F8, 'M', u'ル'), + (0x32F9, 'M', u'レ'), + (0x32FA, 'M', u'ロ'), + (0x32FB, 'M', u'ワ'), + (0x32FC, 'M', u'ヰ'), + (0x32FD, 'M', u'ヱ'), + (0x32FE, 'M', u'ヲ'), + (0x32FF, 'X'), + (0x3300, 'M', u'アパート'), + (0x3301, 'M', u'アルファ'), + (0x3302, 'M', u'アンペア'), + (0x3303, 'M', u'アール'), + (0x3304, 'M', u'イニング'), + (0x3305, 'M', u'インチ'), + (0x3306, 'M', u'ウォン'), + (0x3307, 'M', u'エスクード'), + (0x3308, 'M', u'エーカー'), + (0x3309, 'M', u'オンス'), + (0x330A, 'M', u'オーム'), + (0x330B, 'M', u'カイリ'), + (0x330C, 'M', u'カラット'), + (0x330D, 'M', u'カロリー'), + (0x330E, 'M', u'ガロン'), + (0x330F, 'M', u'ガンマ'), + (0x3310, 'M', u'ギガ'), + (0x3311, 'M', u'ギニー'), + (0x3312, 'M', u'キュリー'), + (0x3313, 'M', u'ギルダー'), + (0x3314, 'M', u'キロ'), + (0x3315, 'M', u'キログラム'), + (0x3316, 'M', u'キロメートル'), + (0x3317, 'M', u'キロワット'), + (0x3318, 'M', u'グラム'), + (0x3319, 'M', u'グラムトン'), + (0x331A, 'M', u'クルゼイロ'), + (0x331B, 'M', u'クローネ'), + (0x331C, 'M', u'ケース'), + (0x331D, 'M', u'コルナ'), + (0x331E, 'M', u'コーポ'), + (0x331F, 'M', u'サイクル'), + (0x3320, 'M', u'サンチーム'), + (0x3321, 'M', u'シリング'), + (0x3322, 'M', u'センチ'), + (0x3323, 'M', u'セント'), + (0x3324, 'M', u'ダース'), + (0x3325, 'M', u'デシ'), + (0x3326, 'M', u'ドル'), + (0x3327, 'M', u'トン'), + (0x3328, 'M', u'ナノ'), + (0x3329, 'M', u'ノット'), + (0x332A, 'M', u'ハイツ'), + (0x332B, 'M', u'パーセント'), + (0x332C, 'M', u'パーツ'), + (0x332D, 'M', u'バーレル'), + (0x332E, 'M', u'ピアストル'), + (0x332F, 'M', u'ピクル'), + (0x3330, 'M', u'ピコ'), + (0x3331, 'M', u'ビル'), + (0x3332, 'M', u'ファラッド'), + (0x3333, 'M', u'フィート'), + (0x3334, 'M', u'ブッシェル'), + (0x3335, 'M', u'フラン'), + (0x3336, 'M', u'ヘクタール'), + (0x3337, 'M', u'ペソ'), + ] + +def _seg_33(): + return [ + (0x3338, 'M', u'ペニヒ'), + (0x3339, 'M', u'ヘルツ'), + (0x333A, 'M', u'ペンス'), + (0x333B, 'M', u'ページ'), + (0x333C, 'M', u'ベータ'), + (0x333D, 'M', u'ポイント'), + (0x333E, 'M', u'ボルト'), + (0x333F, 'M', u'ホン'), + (0x3340, 'M', u'ポンド'), + (0x3341, 'M', u'ホール'), + (0x3342, 'M', u'ホーン'), + (0x3343, 'M', u'マイクロ'), + (0x3344, 'M', u'マイル'), + (0x3345, 'M', u'マッハ'), + (0x3346, 'M', u'マルク'), + (0x3347, 'M', u'マンション'), + (0x3348, 'M', u'ミクロン'), + (0x3349, 'M', u'ミリ'), + (0x334A, 'M', u'ミリバール'), + (0x334B, 'M', u'メガ'), + (0x334C, 'M', u'メガトン'), + (0x334D, 'M', u'メートル'), + (0x334E, 'M', u'ヤード'), + (0x334F, 'M', u'ヤール'), + (0x3350, 'M', u'ユアン'), + (0x3351, 'M', u'リットル'), + (0x3352, 'M', u'リラ'), + (0x3353, 'M', u'ルピー'), + (0x3354, 'M', u'ルーブル'), + (0x3355, 'M', u'レム'), + (0x3356, 'M', u'レントゲン'), + (0x3357, 'M', u'ワット'), + (0x3358, 'M', u'0点'), + (0x3359, 'M', u'1点'), + (0x335A, 'M', u'2点'), + (0x335B, 'M', u'3点'), + (0x335C, 'M', u'4点'), + (0x335D, 'M', u'5点'), + (0x335E, 'M', u'6点'), + (0x335F, 'M', u'7点'), + (0x3360, 'M', u'8点'), + (0x3361, 'M', u'9点'), + (0x3362, 'M', u'10点'), + (0x3363, 'M', u'11点'), + (0x3364, 'M', u'12点'), + (0x3365, 'M', u'13点'), + (0x3366, 'M', u'14点'), + (0x3367, 'M', u'15点'), + (0x3368, 'M', u'16点'), + (0x3369, 'M', u'17点'), + (0x336A, 'M', u'18点'), + (0x336B, 'M', u'19点'), + (0x336C, 'M', u'20点'), + (0x336D, 'M', u'21点'), + (0x336E, 'M', u'22点'), + (0x336F, 'M', u'23点'), + (0x3370, 'M', u'24点'), + (0x3371, 'M', u'hpa'), + (0x3372, 'M', u'da'), + (0x3373, 'M', u'au'), + (0x3374, 'M', u'bar'), + (0x3375, 'M', u'ov'), + (0x3376, 'M', u'pc'), + (0x3377, 'M', u'dm'), + (0x3378, 'M', u'dm2'), + (0x3379, 'M', u'dm3'), + (0x337A, 'M', u'iu'), + (0x337B, 'M', u'平成'), + (0x337C, 'M', u'昭和'), + (0x337D, 'M', u'大正'), + (0x337E, 'M', u'明治'), + (0x337F, 'M', u'株式会社'), + (0x3380, 'M', u'pa'), + (0x3381, 'M', u'na'), + (0x3382, 'M', u'μa'), + (0x3383, 'M', u'ma'), + (0x3384, 'M', u'ka'), + (0x3385, 'M', u'kb'), + (0x3386, 'M', u'mb'), + (0x3387, 'M', u'gb'), + (0x3388, 'M', u'cal'), + (0x3389, 'M', u'kcal'), + (0x338A, 'M', u'pf'), + (0x338B, 'M', u'nf'), + (0x338C, 'M', u'μf'), + (0x338D, 'M', u'μg'), + (0x338E, 'M', u'mg'), + (0x338F, 'M', u'kg'), + (0x3390, 'M', u'hz'), + (0x3391, 'M', u'khz'), + (0x3392, 'M', u'mhz'), + (0x3393, 'M', u'ghz'), + (0x3394, 'M', u'thz'), + (0x3395, 'M', u'μl'), + (0x3396, 'M', u'ml'), + (0x3397, 'M', u'dl'), + (0x3398, 'M', u'kl'), + (0x3399, 'M', u'fm'), + (0x339A, 'M', u'nm'), + (0x339B, 'M', u'μm'), + ] + +def _seg_34(): + return [ + (0x339C, 'M', u'mm'), + (0x339D, 'M', u'cm'), + (0x339E, 'M', u'km'), + (0x339F, 'M', u'mm2'), + (0x33A0, 'M', u'cm2'), + (0x33A1, 'M', u'm2'), + (0x33A2, 'M', u'km2'), + (0x33A3, 'M', u'mm3'), + (0x33A4, 'M', u'cm3'), + (0x33A5, 'M', u'm3'), + (0x33A6, 'M', u'km3'), + (0x33A7, 'M', u'm∕s'), + (0x33A8, 'M', u'm∕s2'), + (0x33A9, 'M', u'pa'), + (0x33AA, 'M', u'kpa'), + (0x33AB, 'M', u'mpa'), + (0x33AC, 'M', u'gpa'), + (0x33AD, 'M', u'rad'), + (0x33AE, 'M', u'rad∕s'), + (0x33AF, 'M', u'rad∕s2'), + (0x33B0, 'M', u'ps'), + (0x33B1, 'M', u'ns'), + (0x33B2, 'M', u'μs'), + (0x33B3, 'M', u'ms'), + (0x33B4, 'M', u'pv'), + (0x33B5, 'M', u'nv'), + (0x33B6, 'M', u'μv'), + (0x33B7, 'M', u'mv'), + (0x33B8, 'M', u'kv'), + (0x33B9, 'M', u'mv'), + (0x33BA, 'M', u'pw'), + (0x33BB, 'M', u'nw'), + (0x33BC, 'M', u'μw'), + (0x33BD, 'M', u'mw'), + (0x33BE, 'M', u'kw'), + (0x33BF, 'M', u'mw'), + (0x33C0, 'M', u'kω'), + (0x33C1, 'M', u'mω'), + (0x33C2, 'X'), + (0x33C3, 'M', u'bq'), + (0x33C4, 'M', u'cc'), + (0x33C5, 'M', u'cd'), + (0x33C6, 'M', u'c∕kg'), + (0x33C7, 'X'), + (0x33C8, 'M', u'db'), + (0x33C9, 'M', u'gy'), + (0x33CA, 'M', u'ha'), + (0x33CB, 'M', u'hp'), + (0x33CC, 'M', u'in'), + (0x33CD, 'M', u'kk'), + (0x33CE, 'M', u'km'), + (0x33CF, 'M', u'kt'), + (0x33D0, 'M', u'lm'), + (0x33D1, 'M', u'ln'), + (0x33D2, 'M', u'log'), + (0x33D3, 'M', u'lx'), + (0x33D4, 'M', u'mb'), + (0x33D5, 'M', u'mil'), + (0x33D6, 'M', u'mol'), + (0x33D7, 'M', u'ph'), + (0x33D8, 'X'), + (0x33D9, 'M', u'ppm'), + (0x33DA, 'M', u'pr'), + (0x33DB, 'M', u'sr'), + (0x33DC, 'M', u'sv'), + (0x33DD, 'M', u'wb'), + (0x33DE, 'M', u'v∕m'), + (0x33DF, 'M', u'a∕m'), + (0x33E0, 'M', u'1日'), + (0x33E1, 'M', u'2日'), + (0x33E2, 'M', u'3日'), + (0x33E3, 'M', u'4日'), + (0x33E4, 'M', u'5日'), + (0x33E5, 'M', u'6日'), + (0x33E6, 'M', u'7日'), + (0x33E7, 'M', u'8日'), + (0x33E8, 'M', u'9日'), + (0x33E9, 'M', u'10日'), + (0x33EA, 'M', u'11日'), + (0x33EB, 'M', u'12日'), + (0x33EC, 'M', u'13日'), + (0x33ED, 'M', u'14日'), + (0x33EE, 'M', u'15日'), + (0x33EF, 'M', u'16日'), + (0x33F0, 'M', u'17日'), + (0x33F1, 'M', u'18日'), + (0x33F2, 'M', u'19日'), + (0x33F3, 'M', u'20日'), + (0x33F4, 'M', u'21日'), + (0x33F5, 'M', u'22日'), + (0x33F6, 'M', u'23日'), + (0x33F7, 'M', u'24日'), + (0x33F8, 'M', u'25日'), + (0x33F9, 'M', u'26日'), + (0x33FA, 'M', u'27日'), + (0x33FB, 'M', u'28日'), + (0x33FC, 'M', u'29日'), + (0x33FD, 'M', u'30日'), + (0x33FE, 'M', u'31日'), + (0x33FF, 'M', u'gal'), + ] + +def _seg_35(): + return [ + (0x3400, 'V'), + (0x4DB6, 'X'), + (0x4DC0, 'V'), + (0x9FCD, 'X'), + (0xA000, 'V'), + (0xA48D, 'X'), + (0xA490, 'V'), + (0xA4C7, 'X'), + (0xA4D0, 'V'), + (0xA62C, 'X'), + (0xA640, 'M', u'ꙁ'), + (0xA641, 'V'), + (0xA642, 'M', u'ꙃ'), + (0xA643, 'V'), + (0xA644, 'M', u'ꙅ'), + (0xA645, 'V'), + (0xA646, 'M', u'ꙇ'), + (0xA647, 'V'), + (0xA648, 'M', u'ꙉ'), + (0xA649, 'V'), + (0xA64A, 'M', u'ꙋ'), + (0xA64B, 'V'), + (0xA64C, 'M', u'ꙍ'), + (0xA64D, 'V'), + (0xA64E, 'M', u'ꙏ'), + (0xA64F, 'V'), + (0xA650, 'M', u'ꙑ'), + (0xA651, 'V'), + (0xA652, 'M', u'ꙓ'), + (0xA653, 'V'), + (0xA654, 'M', u'ꙕ'), + (0xA655, 'V'), + (0xA656, 'M', u'ꙗ'), + (0xA657, 'V'), + (0xA658, 'M', u'ꙙ'), + (0xA659, 'V'), + (0xA65A, 'M', u'ꙛ'), + (0xA65B, 'V'), + (0xA65C, 'M', u'ꙝ'), + (0xA65D, 'V'), + (0xA65E, 'M', u'ꙟ'), + (0xA65F, 'V'), + (0xA660, 'M', u'ꙡ'), + (0xA661, 'V'), + (0xA662, 'M', u'ꙣ'), + (0xA663, 'V'), + (0xA664, 'M', u'ꙥ'), + (0xA665, 'V'), + (0xA666, 'M', u'ꙧ'), + (0xA667, 'V'), + (0xA668, 'M', u'ꙩ'), + (0xA669, 'V'), + (0xA66A, 'M', u'ꙫ'), + (0xA66B, 'V'), + (0xA66C, 'M', u'ꙭ'), + (0xA66D, 'V'), + (0xA680, 'M', u'ꚁ'), + (0xA681, 'V'), + (0xA682, 'M', u'ꚃ'), + (0xA683, 'V'), + (0xA684, 'M', u'ꚅ'), + (0xA685, 'V'), + (0xA686, 'M', u'ꚇ'), + (0xA687, 'V'), + (0xA688, 'M', u'ꚉ'), + (0xA689, 'V'), + (0xA68A, 'M', u'ꚋ'), + (0xA68B, 'V'), + (0xA68C, 'M', u'ꚍ'), + (0xA68D, 'V'), + (0xA68E, 'M', u'ꚏ'), + (0xA68F, 'V'), + (0xA690, 'M', u'ꚑ'), + (0xA691, 'V'), + (0xA692, 'M', u'ꚓ'), + (0xA693, 'V'), + (0xA694, 'M', u'ꚕ'), + (0xA695, 'V'), + (0xA696, 'M', u'ꚗ'), + (0xA697, 'V'), + (0xA698, 'X'), + (0xA69F, 'V'), + (0xA6F8, 'X'), + (0xA700, 'V'), + (0xA722, 'M', u'ꜣ'), + (0xA723, 'V'), + (0xA724, 'M', u'ꜥ'), + (0xA725, 'V'), + (0xA726, 'M', u'ꜧ'), + (0xA727, 'V'), + (0xA728, 'M', u'ꜩ'), + (0xA729, 'V'), + (0xA72A, 'M', u'ꜫ'), + (0xA72B, 'V'), + (0xA72C, 'M', u'ꜭ'), + (0xA72D, 'V'), + (0xA72E, 'M', u'ꜯ'), + (0xA72F, 'V'), + (0xA732, 'M', u'ꜳ'), + (0xA733, 'V'), + ] + +def _seg_36(): + return [ + (0xA734, 'M', u'ꜵ'), + (0xA735, 'V'), + (0xA736, 'M', u'ꜷ'), + (0xA737, 'V'), + (0xA738, 'M', u'ꜹ'), + (0xA739, 'V'), + (0xA73A, 'M', u'ꜻ'), + (0xA73B, 'V'), + (0xA73C, 'M', u'ꜽ'), + (0xA73D, 'V'), + (0xA73E, 'M', u'ꜿ'), + (0xA73F, 'V'), + (0xA740, 'M', u'ꝁ'), + (0xA741, 'V'), + (0xA742, 'M', u'ꝃ'), + (0xA743, 'V'), + (0xA744, 'M', u'ꝅ'), + (0xA745, 'V'), + (0xA746, 'M', u'ꝇ'), + (0xA747, 'V'), + (0xA748, 'M', u'ꝉ'), + (0xA749, 'V'), + (0xA74A, 'M', u'ꝋ'), + (0xA74B, 'V'), + (0xA74C, 'M', u'ꝍ'), + (0xA74D, 'V'), + (0xA74E, 'M', u'ꝏ'), + (0xA74F, 'V'), + (0xA750, 'M', u'ꝑ'), + (0xA751, 'V'), + (0xA752, 'M', u'ꝓ'), + (0xA753, 'V'), + (0xA754, 'M', u'ꝕ'), + (0xA755, 'V'), + (0xA756, 'M', u'ꝗ'), + (0xA757, 'V'), + (0xA758, 'M', u'ꝙ'), + (0xA759, 'V'), + (0xA75A, 'M', u'ꝛ'), + (0xA75B, 'V'), + (0xA75C, 'M', u'ꝝ'), + (0xA75D, 'V'), + (0xA75E, 'M', u'ꝟ'), + (0xA75F, 'V'), + (0xA760, 'M', u'ꝡ'), + (0xA761, 'V'), + (0xA762, 'M', u'ꝣ'), + (0xA763, 'V'), + (0xA764, 'M', u'ꝥ'), + (0xA765, 'V'), + (0xA766, 'M', u'ꝧ'), + (0xA767, 'V'), + (0xA768, 'M', u'ꝩ'), + (0xA769, 'V'), + (0xA76A, 'M', u'ꝫ'), + (0xA76B, 'V'), + (0xA76C, 'M', u'ꝭ'), + (0xA76D, 'V'), + (0xA76E, 'M', u'ꝯ'), + (0xA76F, 'V'), + (0xA770, 'M', u'ꝯ'), + (0xA771, 'V'), + (0xA779, 'M', u'ꝺ'), + (0xA77A, 'V'), + (0xA77B, 'M', u'ꝼ'), + (0xA77C, 'V'), + (0xA77D, 'M', u'ᵹ'), + (0xA77E, 'M', u'ꝿ'), + (0xA77F, 'V'), + (0xA780, 'M', u'ꞁ'), + (0xA781, 'V'), + (0xA782, 'M', u'ꞃ'), + (0xA783, 'V'), + (0xA784, 'M', u'ꞅ'), + (0xA785, 'V'), + (0xA786, 'M', u'ꞇ'), + (0xA787, 'V'), + (0xA78B, 'M', u'ꞌ'), + (0xA78C, 'V'), + (0xA78D, 'M', u'ɥ'), + (0xA78E, 'V'), + (0xA78F, 'X'), + (0xA790, 'M', u'ꞑ'), + (0xA791, 'V'), + (0xA792, 'M', u'ꞓ'), + (0xA793, 'V'), + (0xA794, 'X'), + (0xA7A0, 'M', u'ꞡ'), + (0xA7A1, 'V'), + (0xA7A2, 'M', u'ꞣ'), + (0xA7A3, 'V'), + (0xA7A4, 'M', u'ꞥ'), + (0xA7A5, 'V'), + (0xA7A6, 'M', u'ꞧ'), + (0xA7A7, 'V'), + (0xA7A8, 'M', u'ꞩ'), + (0xA7A9, 'V'), + (0xA7AA, 'M', u'ɦ'), + (0xA7AB, 'X'), + (0xA7F8, 'M', u'ħ'), + ] + +def _seg_37(): + return [ + (0xA7F9, 'M', u'œ'), + (0xA7FA, 'V'), + (0xA82C, 'X'), + (0xA830, 'V'), + (0xA83A, 'X'), + (0xA840, 'V'), + (0xA878, 'X'), + (0xA880, 'V'), + (0xA8C5, 'X'), + (0xA8CE, 'V'), + (0xA8DA, 'X'), + (0xA8E0, 'V'), + (0xA8FC, 'X'), + (0xA900, 'V'), + (0xA954, 'X'), + (0xA95F, 'V'), + (0xA97D, 'X'), + (0xA980, 'V'), + (0xA9CE, 'X'), + (0xA9CF, 'V'), + (0xA9DA, 'X'), + (0xA9DE, 'V'), + (0xA9E0, 'X'), + (0xAA00, 'V'), + (0xAA37, 'X'), + (0xAA40, 'V'), + (0xAA4E, 'X'), + (0xAA50, 'V'), + (0xAA5A, 'X'), + (0xAA5C, 'V'), + (0xAA7C, 'X'), + (0xAA80, 'V'), + (0xAAC3, 'X'), + (0xAADB, 'V'), + (0xAAF7, 'X'), + (0xAB01, 'V'), + (0xAB07, 'X'), + (0xAB09, 'V'), + (0xAB0F, 'X'), + (0xAB11, 'V'), + (0xAB17, 'X'), + (0xAB20, 'V'), + (0xAB27, 'X'), + (0xAB28, 'V'), + (0xAB2F, 'X'), + (0xABC0, 'V'), + (0xABEE, 'X'), + (0xABF0, 'V'), + (0xABFA, 'X'), + (0xAC00, 'V'), + (0xD7A4, 'X'), + (0xD7B0, 'V'), + (0xD7C7, 'X'), + (0xD7CB, 'V'), + (0xD7FC, 'X'), + (0xF900, 'M', u'豈'), + (0xF901, 'M', u'更'), + (0xF902, 'M', u'車'), + (0xF903, 'M', u'賈'), + (0xF904, 'M', u'滑'), + (0xF905, 'M', u'串'), + (0xF906, 'M', u'句'), + (0xF907, 'M', u'龜'), + (0xF909, 'M', u'契'), + (0xF90A, 'M', u'金'), + (0xF90B, 'M', u'喇'), + (0xF90C, 'M', u'奈'), + (0xF90D, 'M', u'懶'), + (0xF90E, 'M', u'癩'), + (0xF90F, 'M', u'羅'), + (0xF910, 'M', u'蘿'), + (0xF911, 'M', u'螺'), + (0xF912, 'M', u'裸'), + (0xF913, 'M', u'邏'), + (0xF914, 'M', u'樂'), + (0xF915, 'M', u'洛'), + (0xF916, 'M', u'烙'), + (0xF917, 'M', u'珞'), + (0xF918, 'M', u'落'), + (0xF919, 'M', u'酪'), + (0xF91A, 'M', u'駱'), + (0xF91B, 'M', u'亂'), + (0xF91C, 'M', u'卵'), + (0xF91D, 'M', u'欄'), + (0xF91E, 'M', u'爛'), + (0xF91F, 'M', u'蘭'), + (0xF920, 'M', u'鸞'), + (0xF921, 'M', u'嵐'), + (0xF922, 'M', u'濫'), + (0xF923, 'M', u'藍'), + (0xF924, 'M', u'襤'), + (0xF925, 'M', u'拉'), + (0xF926, 'M', u'臘'), + (0xF927, 'M', u'蠟'), + (0xF928, 'M', u'廊'), + (0xF929, 'M', u'朗'), + (0xF92A, 'M', u'浪'), + (0xF92B, 'M', u'狼'), + (0xF92C, 'M', u'郎'), + (0xF92D, 'M', u'來'), + ] + +def _seg_38(): + return [ + (0xF92E, 'M', u'冷'), + (0xF92F, 'M', u'勞'), + (0xF930, 'M', u'擄'), + (0xF931, 'M', u'櫓'), + (0xF932, 'M', u'爐'), + (0xF933, 'M', u'盧'), + (0xF934, 'M', u'老'), + (0xF935, 'M', u'蘆'), + (0xF936, 'M', u'虜'), + (0xF937, 'M', u'路'), + (0xF938, 'M', u'露'), + (0xF939, 'M', u'魯'), + (0xF93A, 'M', u'鷺'), + (0xF93B, 'M', u'碌'), + (0xF93C, 'M', u'祿'), + (0xF93D, 'M', u'綠'), + (0xF93E, 'M', u'菉'), + (0xF93F, 'M', u'錄'), + (0xF940, 'M', u'鹿'), + (0xF941, 'M', u'論'), + (0xF942, 'M', u'壟'), + (0xF943, 'M', u'弄'), + (0xF944, 'M', u'籠'), + (0xF945, 'M', u'聾'), + (0xF946, 'M', u'牢'), + (0xF947, 'M', u'磊'), + (0xF948, 'M', u'賂'), + (0xF949, 'M', u'雷'), + (0xF94A, 'M', u'壘'), + (0xF94B, 'M', u'屢'), + (0xF94C, 'M', u'樓'), + (0xF94D, 'M', u'淚'), + (0xF94E, 'M', u'漏'), + (0xF94F, 'M', u'累'), + (0xF950, 'M', u'縷'), + (0xF951, 'M', u'陋'), + (0xF952, 'M', u'勒'), + (0xF953, 'M', u'肋'), + (0xF954, 'M', u'凜'), + (0xF955, 'M', u'凌'), + (0xF956, 'M', u'稜'), + (0xF957, 'M', u'綾'), + (0xF958, 'M', u'菱'), + (0xF959, 'M', u'陵'), + (0xF95A, 'M', u'讀'), + (0xF95B, 'M', u'拏'), + (0xF95C, 'M', u'樂'), + (0xF95D, 'M', u'諾'), + (0xF95E, 'M', u'丹'), + (0xF95F, 'M', u'寧'), + (0xF960, 'M', u'怒'), + (0xF961, 'M', u'率'), + (0xF962, 'M', u'異'), + (0xF963, 'M', u'北'), + (0xF964, 'M', u'磻'), + (0xF965, 'M', u'便'), + (0xF966, 'M', u'復'), + (0xF967, 'M', u'不'), + (0xF968, 'M', u'泌'), + (0xF969, 'M', u'數'), + (0xF96A, 'M', u'索'), + (0xF96B, 'M', u'參'), + (0xF96C, 'M', u'塞'), + (0xF96D, 'M', u'省'), + (0xF96E, 'M', u'葉'), + (0xF96F, 'M', u'說'), + (0xF970, 'M', u'殺'), + (0xF971, 'M', u'辰'), + (0xF972, 'M', u'沈'), + (0xF973, 'M', u'拾'), + (0xF974, 'M', u'若'), + (0xF975, 'M', u'掠'), + (0xF976, 'M', u'略'), + (0xF977, 'M', u'亮'), + (0xF978, 'M', u'兩'), + (0xF979, 'M', u'凉'), + (0xF97A, 'M', u'梁'), + (0xF97B, 'M', u'糧'), + (0xF97C, 'M', u'良'), + (0xF97D, 'M', u'諒'), + (0xF97E, 'M', u'量'), + (0xF97F, 'M', u'勵'), + (0xF980, 'M', u'呂'), + (0xF981, 'M', u'女'), + (0xF982, 'M', u'廬'), + (0xF983, 'M', u'旅'), + (0xF984, 'M', u'濾'), + (0xF985, 'M', u'礪'), + (0xF986, 'M', u'閭'), + (0xF987, 'M', u'驪'), + (0xF988, 'M', u'麗'), + (0xF989, 'M', u'黎'), + (0xF98A, 'M', u'力'), + (0xF98B, 'M', u'曆'), + (0xF98C, 'M', u'歷'), + (0xF98D, 'M', u'轢'), + (0xF98E, 'M', u'年'), + (0xF98F, 'M', u'憐'), + (0xF990, 'M', u'戀'), + (0xF991, 'M', u'撚'), + ] + +def _seg_39(): + return [ + (0xF992, 'M', u'漣'), + (0xF993, 'M', u'煉'), + (0xF994, 'M', u'璉'), + (0xF995, 'M', u'秊'), + (0xF996, 'M', u'練'), + (0xF997, 'M', u'聯'), + (0xF998, 'M', u'輦'), + (0xF999, 'M', u'蓮'), + (0xF99A, 'M', u'連'), + (0xF99B, 'M', u'鍊'), + (0xF99C, 'M', u'列'), + (0xF99D, 'M', u'劣'), + (0xF99E, 'M', u'咽'), + (0xF99F, 'M', u'烈'), + (0xF9A0, 'M', u'裂'), + (0xF9A1, 'M', u'說'), + (0xF9A2, 'M', u'廉'), + (0xF9A3, 'M', u'念'), + (0xF9A4, 'M', u'捻'), + (0xF9A5, 'M', u'殮'), + (0xF9A6, 'M', u'簾'), + (0xF9A7, 'M', u'獵'), + (0xF9A8, 'M', u'令'), + (0xF9A9, 'M', u'囹'), + (0xF9AA, 'M', u'寧'), + (0xF9AB, 'M', u'嶺'), + (0xF9AC, 'M', u'怜'), + (0xF9AD, 'M', u'玲'), + (0xF9AE, 'M', u'瑩'), + (0xF9AF, 'M', u'羚'), + (0xF9B0, 'M', u'聆'), + (0xF9B1, 'M', u'鈴'), + (0xF9B2, 'M', u'零'), + (0xF9B3, 'M', u'靈'), + (0xF9B4, 'M', u'領'), + (0xF9B5, 'M', u'例'), + (0xF9B6, 'M', u'禮'), + (0xF9B7, 'M', u'醴'), + (0xF9B8, 'M', u'隸'), + (0xF9B9, 'M', u'惡'), + (0xF9BA, 'M', u'了'), + (0xF9BB, 'M', u'僚'), + (0xF9BC, 'M', u'寮'), + (0xF9BD, 'M', u'尿'), + (0xF9BE, 'M', u'料'), + (0xF9BF, 'M', u'樂'), + (0xF9C0, 'M', u'燎'), + (0xF9C1, 'M', u'療'), + (0xF9C2, 'M', u'蓼'), + (0xF9C3, 'M', u'遼'), + (0xF9C4, 'M', u'龍'), + (0xF9C5, 'M', u'暈'), + (0xF9C6, 'M', u'阮'), + (0xF9C7, 'M', u'劉'), + (0xF9C8, 'M', u'杻'), + (0xF9C9, 'M', u'柳'), + (0xF9CA, 'M', u'流'), + (0xF9CB, 'M', u'溜'), + (0xF9CC, 'M', u'琉'), + (0xF9CD, 'M', u'留'), + (0xF9CE, 'M', u'硫'), + (0xF9CF, 'M', u'紐'), + (0xF9D0, 'M', u'類'), + (0xF9D1, 'M', u'六'), + (0xF9D2, 'M', u'戮'), + (0xF9D3, 'M', u'陸'), + (0xF9D4, 'M', u'倫'), + (0xF9D5, 'M', u'崙'), + (0xF9D6, 'M', u'淪'), + (0xF9D7, 'M', u'輪'), + (0xF9D8, 'M', u'律'), + (0xF9D9, 'M', u'慄'), + (0xF9DA, 'M', u'栗'), + (0xF9DB, 'M', u'率'), + (0xF9DC, 'M', u'隆'), + (0xF9DD, 'M', u'利'), + (0xF9DE, 'M', u'吏'), + (0xF9DF, 'M', u'履'), + (0xF9E0, 'M', u'易'), + (0xF9E1, 'M', u'李'), + (0xF9E2, 'M', u'梨'), + (0xF9E3, 'M', u'泥'), + (0xF9E4, 'M', u'理'), + (0xF9E5, 'M', u'痢'), + (0xF9E6, 'M', u'罹'), + (0xF9E7, 'M', u'裏'), + (0xF9E8, 'M', u'裡'), + (0xF9E9, 'M', u'里'), + (0xF9EA, 'M', u'離'), + (0xF9EB, 'M', u'匿'), + (0xF9EC, 'M', u'溺'), + (0xF9ED, 'M', u'吝'), + (0xF9EE, 'M', u'燐'), + (0xF9EF, 'M', u'璘'), + (0xF9F0, 'M', u'藺'), + (0xF9F1, 'M', u'隣'), + (0xF9F2, 'M', u'鱗'), + (0xF9F3, 'M', u'麟'), + (0xF9F4, 'M', u'林'), + (0xF9F5, 'M', u'淋'), + ] + +def _seg_40(): + return [ + (0xF9F6, 'M', u'臨'), + (0xF9F7, 'M', u'立'), + (0xF9F8, 'M', u'笠'), + (0xF9F9, 'M', u'粒'), + (0xF9FA, 'M', u'狀'), + (0xF9FB, 'M', u'炙'), + (0xF9FC, 'M', u'識'), + (0xF9FD, 'M', u'什'), + (0xF9FE, 'M', u'茶'), + (0xF9FF, 'M', u'刺'), + (0xFA00, 'M', u'切'), + (0xFA01, 'M', u'度'), + (0xFA02, 'M', u'拓'), + (0xFA03, 'M', u'糖'), + (0xFA04, 'M', u'宅'), + (0xFA05, 'M', u'洞'), + (0xFA06, 'M', u'暴'), + (0xFA07, 'M', u'輻'), + (0xFA08, 'M', u'行'), + (0xFA09, 'M', u'降'), + (0xFA0A, 'M', u'見'), + (0xFA0B, 'M', u'廓'), + (0xFA0C, 'M', u'兀'), + (0xFA0D, 'M', u'嗀'), + (0xFA0E, 'V'), + (0xFA10, 'M', u'塚'), + (0xFA11, 'V'), + (0xFA12, 'M', u'晴'), + (0xFA13, 'V'), + (0xFA15, 'M', u'凞'), + (0xFA16, 'M', u'猪'), + (0xFA17, 'M', u'益'), + (0xFA18, 'M', u'礼'), + (0xFA19, 'M', u'神'), + (0xFA1A, 'M', u'祥'), + (0xFA1B, 'M', u'福'), + (0xFA1C, 'M', u'靖'), + (0xFA1D, 'M', u'精'), + (0xFA1E, 'M', u'羽'), + (0xFA1F, 'V'), + (0xFA20, 'M', u'蘒'), + (0xFA21, 'V'), + (0xFA22, 'M', u'諸'), + (0xFA23, 'V'), + (0xFA25, 'M', u'逸'), + (0xFA26, 'M', u'都'), + (0xFA27, 'V'), + (0xFA2A, 'M', u'飯'), + (0xFA2B, 'M', u'飼'), + (0xFA2C, 'M', u'館'), + (0xFA2D, 'M', u'鶴'), + (0xFA2E, 'M', u'郞'), + (0xFA2F, 'M', u'隷'), + (0xFA30, 'M', u'侮'), + (0xFA31, 'M', u'僧'), + (0xFA32, 'M', u'免'), + (0xFA33, 'M', u'勉'), + (0xFA34, 'M', u'勤'), + (0xFA35, 'M', u'卑'), + (0xFA36, 'M', u'喝'), + (0xFA37, 'M', u'嘆'), + (0xFA38, 'M', u'器'), + (0xFA39, 'M', u'塀'), + (0xFA3A, 'M', u'墨'), + (0xFA3B, 'M', u'層'), + (0xFA3C, 'M', u'屮'), + (0xFA3D, 'M', u'悔'), + (0xFA3E, 'M', u'慨'), + (0xFA3F, 'M', u'憎'), + (0xFA40, 'M', u'懲'), + (0xFA41, 'M', u'敏'), + (0xFA42, 'M', u'既'), + (0xFA43, 'M', u'暑'), + (0xFA44, 'M', u'梅'), + (0xFA45, 'M', u'海'), + (0xFA46, 'M', u'渚'), + (0xFA47, 'M', u'漢'), + (0xFA48, 'M', u'煮'), + (0xFA49, 'M', u'爫'), + (0xFA4A, 'M', u'琢'), + (0xFA4B, 'M', u'碑'), + (0xFA4C, 'M', u'社'), + (0xFA4D, 'M', u'祉'), + (0xFA4E, 'M', u'祈'), + (0xFA4F, 'M', u'祐'), + (0xFA50, 'M', u'祖'), + (0xFA51, 'M', u'祝'), + (0xFA52, 'M', u'禍'), + (0xFA53, 'M', u'禎'), + (0xFA54, 'M', u'穀'), + (0xFA55, 'M', u'突'), + (0xFA56, 'M', u'節'), + (0xFA57, 'M', u'練'), + (0xFA58, 'M', u'縉'), + (0xFA59, 'M', u'繁'), + (0xFA5A, 'M', u'署'), + (0xFA5B, 'M', u'者'), + (0xFA5C, 'M', u'臭'), + (0xFA5D, 'M', u'艹'), + (0xFA5F, 'M', u'著'), + ] + +def _seg_41(): + return [ + (0xFA60, 'M', u'褐'), + (0xFA61, 'M', u'視'), + (0xFA62, 'M', u'謁'), + (0xFA63, 'M', u'謹'), + (0xFA64, 'M', u'賓'), + (0xFA65, 'M', u'贈'), + (0xFA66, 'M', u'辶'), + (0xFA67, 'M', u'逸'), + (0xFA68, 'M', u'難'), + (0xFA69, 'M', u'響'), + (0xFA6A, 'M', u'頻'), + (0xFA6B, 'M', u'恵'), + (0xFA6C, 'M', u'𤋮'), + (0xFA6D, 'M', u'舘'), + (0xFA6E, 'X'), + (0xFA70, 'M', u'並'), + (0xFA71, 'M', u'况'), + (0xFA72, 'M', u'全'), + (0xFA73, 'M', u'侀'), + (0xFA74, 'M', u'充'), + (0xFA75, 'M', u'冀'), + (0xFA76, 'M', u'勇'), + (0xFA77, 'M', u'勺'), + (0xFA78, 'M', u'喝'), + (0xFA79, 'M', u'啕'), + (0xFA7A, 'M', u'喙'), + (0xFA7B, 'M', u'嗢'), + (0xFA7C, 'M', u'塚'), + (0xFA7D, 'M', u'墳'), + (0xFA7E, 'M', u'奄'), + (0xFA7F, 'M', u'奔'), + (0xFA80, 'M', u'婢'), + (0xFA81, 'M', u'嬨'), + (0xFA82, 'M', u'廒'), + (0xFA83, 'M', u'廙'), + (0xFA84, 'M', u'彩'), + (0xFA85, 'M', u'徭'), + (0xFA86, 'M', u'惘'), + (0xFA87, 'M', u'慎'), + (0xFA88, 'M', u'愈'), + (0xFA89, 'M', u'憎'), + (0xFA8A, 'M', u'慠'), + (0xFA8B, 'M', u'懲'), + (0xFA8C, 'M', u'戴'), + (0xFA8D, 'M', u'揄'), + (0xFA8E, 'M', u'搜'), + (0xFA8F, 'M', u'摒'), + (0xFA90, 'M', u'敖'), + (0xFA91, 'M', u'晴'), + (0xFA92, 'M', u'朗'), + (0xFA93, 'M', u'望'), + (0xFA94, 'M', u'杖'), + (0xFA95, 'M', u'歹'), + (0xFA96, 'M', u'殺'), + (0xFA97, 'M', u'流'), + (0xFA98, 'M', u'滛'), + (0xFA99, 'M', u'滋'), + (0xFA9A, 'M', u'漢'), + (0xFA9B, 'M', u'瀞'), + (0xFA9C, 'M', u'煮'), + (0xFA9D, 'M', u'瞧'), + (0xFA9E, 'M', u'爵'), + (0xFA9F, 'M', u'犯'), + (0xFAA0, 'M', u'猪'), + (0xFAA1, 'M', u'瑱'), + (0xFAA2, 'M', u'甆'), + (0xFAA3, 'M', u'画'), + (0xFAA4, 'M', u'瘝'), + (0xFAA5, 'M', u'瘟'), + (0xFAA6, 'M', u'益'), + (0xFAA7, 'M', u'盛'), + (0xFAA8, 'M', u'直'), + (0xFAA9, 'M', u'睊'), + (0xFAAA, 'M', u'着'), + (0xFAAB, 'M', u'磌'), + (0xFAAC, 'M', u'窱'), + (0xFAAD, 'M', u'節'), + (0xFAAE, 'M', u'类'), + (0xFAAF, 'M', u'絛'), + (0xFAB0, 'M', u'練'), + (0xFAB1, 'M', u'缾'), + (0xFAB2, 'M', u'者'), + (0xFAB3, 'M', u'荒'), + (0xFAB4, 'M', u'華'), + (0xFAB5, 'M', u'蝹'), + (0xFAB6, 'M', u'襁'), + (0xFAB7, 'M', u'覆'), + (0xFAB8, 'M', u'視'), + (0xFAB9, 'M', u'調'), + (0xFABA, 'M', u'諸'), + (0xFABB, 'M', u'請'), + (0xFABC, 'M', u'謁'), + (0xFABD, 'M', u'諾'), + (0xFABE, 'M', u'諭'), + (0xFABF, 'M', u'謹'), + (0xFAC0, 'M', u'變'), + (0xFAC1, 'M', u'贈'), + (0xFAC2, 'M', u'輸'), + (0xFAC3, 'M', u'遲'), + (0xFAC4, 'M', u'醙'), + ] + +def _seg_42(): + return [ + (0xFAC5, 'M', u'鉶'), + (0xFAC6, 'M', u'陼'), + (0xFAC7, 'M', u'難'), + (0xFAC8, 'M', u'靖'), + (0xFAC9, 'M', u'韛'), + (0xFACA, 'M', u'響'), + (0xFACB, 'M', u'頋'), + (0xFACC, 'M', u'頻'), + (0xFACD, 'M', u'鬒'), + (0xFACE, 'M', u'龜'), + (0xFACF, 'M', u'𢡊'), + (0xFAD0, 'M', u'𢡄'), + (0xFAD1, 'M', u'𣏕'), + (0xFAD2, 'M', u'㮝'), + (0xFAD3, 'M', u'䀘'), + (0xFAD4, 'M', u'䀹'), + (0xFAD5, 'M', u'𥉉'), + (0xFAD6, 'M', u'𥳐'), + (0xFAD7, 'M', u'𧻓'), + (0xFAD8, 'M', u'齃'), + (0xFAD9, 'M', u'龎'), + (0xFADA, 'X'), + (0xFB00, 'M', u'ff'), + (0xFB01, 'M', u'fi'), + (0xFB02, 'M', u'fl'), + (0xFB03, 'M', u'ffi'), + (0xFB04, 'M', u'ffl'), + (0xFB05, 'M', u'st'), + (0xFB07, 'X'), + (0xFB13, 'M', u'մն'), + (0xFB14, 'M', u'մե'), + (0xFB15, 'M', u'մի'), + (0xFB16, 'M', u'վն'), + (0xFB17, 'M', u'մխ'), + (0xFB18, 'X'), + (0xFB1D, 'M', u'יִ'), + (0xFB1E, 'V'), + (0xFB1F, 'M', u'ײַ'), + (0xFB20, 'M', u'ע'), + (0xFB21, 'M', u'א'), + (0xFB22, 'M', u'ד'), + (0xFB23, 'M', u'ה'), + (0xFB24, 'M', u'כ'), + (0xFB25, 'M', u'ל'), + (0xFB26, 'M', u'ם'), + (0xFB27, 'M', u'ר'), + (0xFB28, 'M', u'ת'), + (0xFB29, '3', u'+'), + (0xFB2A, 'M', u'שׁ'), + (0xFB2B, 'M', u'שׂ'), + (0xFB2C, 'M', u'שּׁ'), + (0xFB2D, 'M', u'שּׂ'), + (0xFB2E, 'M', u'אַ'), + (0xFB2F, 'M', u'אָ'), + (0xFB30, 'M', u'אּ'), + (0xFB31, 'M', u'בּ'), + (0xFB32, 'M', u'גּ'), + (0xFB33, 'M', u'דּ'), + (0xFB34, 'M', u'הּ'), + (0xFB35, 'M', u'וּ'), + (0xFB36, 'M', u'זּ'), + (0xFB37, 'X'), + (0xFB38, 'M', u'טּ'), + (0xFB39, 'M', u'יּ'), + (0xFB3A, 'M', u'ךּ'), + (0xFB3B, 'M', u'כּ'), + (0xFB3C, 'M', u'לּ'), + (0xFB3D, 'X'), + (0xFB3E, 'M', u'מּ'), + (0xFB3F, 'X'), + (0xFB40, 'M', u'נּ'), + (0xFB41, 'M', u'סּ'), + (0xFB42, 'X'), + (0xFB43, 'M', u'ףּ'), + (0xFB44, 'M', u'פּ'), + (0xFB45, 'X'), + (0xFB46, 'M', u'צּ'), + (0xFB47, 'M', u'קּ'), + (0xFB48, 'M', u'רּ'), + (0xFB49, 'M', u'שּ'), + (0xFB4A, 'M', u'תּ'), + (0xFB4B, 'M', u'וֹ'), + (0xFB4C, 'M', u'בֿ'), + (0xFB4D, 'M', u'כֿ'), + (0xFB4E, 'M', u'פֿ'), + (0xFB4F, 'M', u'אל'), + (0xFB50, 'M', u'ٱ'), + (0xFB52, 'M', u'ٻ'), + (0xFB56, 'M', u'پ'), + (0xFB5A, 'M', u'ڀ'), + (0xFB5E, 'M', u'ٺ'), + (0xFB62, 'M', u'ٿ'), + (0xFB66, 'M', u'ٹ'), + (0xFB6A, 'M', u'ڤ'), + (0xFB6E, 'M', u'ڦ'), + (0xFB72, 'M', u'ڄ'), + (0xFB76, 'M', u'ڃ'), + (0xFB7A, 'M', u'چ'), + (0xFB7E, 'M', u'ڇ'), + (0xFB82, 'M', u'ڍ'), + ] + +def _seg_43(): + return [ + (0xFB84, 'M', u'ڌ'), + (0xFB86, 'M', u'ڎ'), + (0xFB88, 'M', u'ڈ'), + (0xFB8A, 'M', u'ژ'), + (0xFB8C, 'M', u'ڑ'), + (0xFB8E, 'M', u'ک'), + (0xFB92, 'M', u'گ'), + (0xFB96, 'M', u'ڳ'), + (0xFB9A, 'M', u'ڱ'), + (0xFB9E, 'M', u'ں'), + (0xFBA0, 'M', u'ڻ'), + (0xFBA4, 'M', u'ۀ'), + (0xFBA6, 'M', u'ہ'), + (0xFBAA, 'M', u'ھ'), + (0xFBAE, 'M', u'ے'), + (0xFBB0, 'M', u'ۓ'), + (0xFBB2, 'V'), + (0xFBC2, 'X'), + (0xFBD3, 'M', u'ڭ'), + (0xFBD7, 'M', u'ۇ'), + (0xFBD9, 'M', u'ۆ'), + (0xFBDB, 'M', u'ۈ'), + (0xFBDD, 'M', u'ۇٴ'), + (0xFBDE, 'M', u'ۋ'), + (0xFBE0, 'M', u'ۅ'), + (0xFBE2, 'M', u'ۉ'), + (0xFBE4, 'M', u'ې'), + (0xFBE8, 'M', u'ى'), + (0xFBEA, 'M', u'ئا'), + (0xFBEC, 'M', u'ئە'), + (0xFBEE, 'M', u'ئو'), + (0xFBF0, 'M', u'ئۇ'), + (0xFBF2, 'M', u'ئۆ'), + (0xFBF4, 'M', u'ئۈ'), + (0xFBF6, 'M', u'ئې'), + (0xFBF9, 'M', u'ئى'), + (0xFBFC, 'M', u'ی'), + (0xFC00, 'M', u'ئج'), + (0xFC01, 'M', u'ئح'), + (0xFC02, 'M', u'ئم'), + (0xFC03, 'M', u'ئى'), + (0xFC04, 'M', u'ئي'), + (0xFC05, 'M', u'بج'), + (0xFC06, 'M', u'بح'), + (0xFC07, 'M', u'بخ'), + (0xFC08, 'M', u'بم'), + (0xFC09, 'M', u'بى'), + (0xFC0A, 'M', u'بي'), + (0xFC0B, 'M', u'تج'), + (0xFC0C, 'M', u'تح'), + (0xFC0D, 'M', u'تخ'), + (0xFC0E, 'M', u'تم'), + (0xFC0F, 'M', u'تى'), + (0xFC10, 'M', u'تي'), + (0xFC11, 'M', u'ثج'), + (0xFC12, 'M', u'ثم'), + (0xFC13, 'M', u'ثى'), + (0xFC14, 'M', u'ثي'), + (0xFC15, 'M', u'جح'), + (0xFC16, 'M', u'جم'), + (0xFC17, 'M', u'حج'), + (0xFC18, 'M', u'حم'), + (0xFC19, 'M', u'خج'), + (0xFC1A, 'M', u'خح'), + (0xFC1B, 'M', u'خم'), + (0xFC1C, 'M', u'سج'), + (0xFC1D, 'M', u'سح'), + (0xFC1E, 'M', u'سخ'), + (0xFC1F, 'M', u'سم'), + (0xFC20, 'M', u'صح'), + (0xFC21, 'M', u'صم'), + (0xFC22, 'M', u'ضج'), + (0xFC23, 'M', u'ضح'), + (0xFC24, 'M', u'ضخ'), + (0xFC25, 'M', u'ضم'), + (0xFC26, 'M', u'طح'), + (0xFC27, 'M', u'طم'), + (0xFC28, 'M', u'ظم'), + (0xFC29, 'M', u'عج'), + (0xFC2A, 'M', u'عم'), + (0xFC2B, 'M', u'غج'), + (0xFC2C, 'M', u'غم'), + (0xFC2D, 'M', u'فج'), + (0xFC2E, 'M', u'فح'), + (0xFC2F, 'M', u'فخ'), + (0xFC30, 'M', u'فم'), + (0xFC31, 'M', u'فى'), + (0xFC32, 'M', u'في'), + (0xFC33, 'M', u'قح'), + (0xFC34, 'M', u'قم'), + (0xFC35, 'M', u'قى'), + (0xFC36, 'M', u'قي'), + (0xFC37, 'M', u'كا'), + (0xFC38, 'M', u'كج'), + (0xFC39, 'M', u'كح'), + (0xFC3A, 'M', u'كخ'), + (0xFC3B, 'M', u'كل'), + (0xFC3C, 'M', u'كم'), + (0xFC3D, 'M', u'كى'), + (0xFC3E, 'M', u'كي'), + ] + +def _seg_44(): + return [ + (0xFC3F, 'M', u'لج'), + (0xFC40, 'M', u'لح'), + (0xFC41, 'M', u'لخ'), + (0xFC42, 'M', u'لم'), + (0xFC43, 'M', u'لى'), + (0xFC44, 'M', u'لي'), + (0xFC45, 'M', u'مج'), + (0xFC46, 'M', u'مح'), + (0xFC47, 'M', u'مخ'), + (0xFC48, 'M', u'مم'), + (0xFC49, 'M', u'مى'), + (0xFC4A, 'M', u'مي'), + (0xFC4B, 'M', u'نج'), + (0xFC4C, 'M', u'نح'), + (0xFC4D, 'M', u'نخ'), + (0xFC4E, 'M', u'نم'), + (0xFC4F, 'M', u'نى'), + (0xFC50, 'M', u'ني'), + (0xFC51, 'M', u'هج'), + (0xFC52, 'M', u'هم'), + (0xFC53, 'M', u'هى'), + (0xFC54, 'M', u'هي'), + (0xFC55, 'M', u'يج'), + (0xFC56, 'M', u'يح'), + (0xFC57, 'M', u'يخ'), + (0xFC58, 'M', u'يم'), + (0xFC59, 'M', u'يى'), + (0xFC5A, 'M', u'يي'), + (0xFC5B, 'M', u'ذٰ'), + (0xFC5C, 'M', u'رٰ'), + (0xFC5D, 'M', u'ىٰ'), + (0xFC5E, '3', u' ٌّ'), + (0xFC5F, '3', u' ٍّ'), + (0xFC60, '3', u' َّ'), + (0xFC61, '3', u' ُّ'), + (0xFC62, '3', u' ِّ'), + (0xFC63, '3', u' ّٰ'), + (0xFC64, 'M', u'ئر'), + (0xFC65, 'M', u'ئز'), + (0xFC66, 'M', u'ئم'), + (0xFC67, 'M', u'ئن'), + (0xFC68, 'M', u'ئى'), + (0xFC69, 'M', u'ئي'), + (0xFC6A, 'M', u'بر'), + (0xFC6B, 'M', u'بز'), + (0xFC6C, 'M', u'بم'), + (0xFC6D, 'M', u'بن'), + (0xFC6E, 'M', u'بى'), + (0xFC6F, 'M', u'بي'), + (0xFC70, 'M', u'تر'), + (0xFC71, 'M', u'تز'), + (0xFC72, 'M', u'تم'), + (0xFC73, 'M', u'تن'), + (0xFC74, 'M', u'تى'), + (0xFC75, 'M', u'تي'), + (0xFC76, 'M', u'ثر'), + (0xFC77, 'M', u'ثز'), + (0xFC78, 'M', u'ثم'), + (0xFC79, 'M', u'ثن'), + (0xFC7A, 'M', u'ثى'), + (0xFC7B, 'M', u'ثي'), + (0xFC7C, 'M', u'فى'), + (0xFC7D, 'M', u'في'), + (0xFC7E, 'M', u'قى'), + (0xFC7F, 'M', u'قي'), + (0xFC80, 'M', u'كا'), + (0xFC81, 'M', u'كل'), + (0xFC82, 'M', u'كم'), + (0xFC83, 'M', u'كى'), + (0xFC84, 'M', u'كي'), + (0xFC85, 'M', u'لم'), + (0xFC86, 'M', u'لى'), + (0xFC87, 'M', u'لي'), + (0xFC88, 'M', u'ما'), + (0xFC89, 'M', u'مم'), + (0xFC8A, 'M', u'نر'), + (0xFC8B, 'M', u'نز'), + (0xFC8C, 'M', u'نم'), + (0xFC8D, 'M', u'نن'), + (0xFC8E, 'M', u'نى'), + (0xFC8F, 'M', u'ني'), + (0xFC90, 'M', u'ىٰ'), + (0xFC91, 'M', u'ير'), + (0xFC92, 'M', u'يز'), + (0xFC93, 'M', u'يم'), + (0xFC94, 'M', u'ين'), + (0xFC95, 'M', u'يى'), + (0xFC96, 'M', u'يي'), + (0xFC97, 'M', u'ئج'), + (0xFC98, 'M', u'ئح'), + (0xFC99, 'M', u'ئخ'), + (0xFC9A, 'M', u'ئم'), + (0xFC9B, 'M', u'ئه'), + (0xFC9C, 'M', u'بج'), + (0xFC9D, 'M', u'بح'), + (0xFC9E, 'M', u'بخ'), + (0xFC9F, 'M', u'بم'), + (0xFCA0, 'M', u'به'), + (0xFCA1, 'M', u'تج'), + (0xFCA2, 'M', u'تح'), + ] + +def _seg_45(): + return [ + (0xFCA3, 'M', u'تخ'), + (0xFCA4, 'M', u'تم'), + (0xFCA5, 'M', u'ته'), + (0xFCA6, 'M', u'ثم'), + (0xFCA7, 'M', u'جح'), + (0xFCA8, 'M', u'جم'), + (0xFCA9, 'M', u'حج'), + (0xFCAA, 'M', u'حم'), + (0xFCAB, 'M', u'خج'), + (0xFCAC, 'M', u'خم'), + (0xFCAD, 'M', u'سج'), + (0xFCAE, 'M', u'سح'), + (0xFCAF, 'M', u'سخ'), + (0xFCB0, 'M', u'سم'), + (0xFCB1, 'M', u'صح'), + (0xFCB2, 'M', u'صخ'), + (0xFCB3, 'M', u'صم'), + (0xFCB4, 'M', u'ضج'), + (0xFCB5, 'M', u'ضح'), + (0xFCB6, 'M', u'ضخ'), + (0xFCB7, 'M', u'ضم'), + (0xFCB8, 'M', u'طح'), + (0xFCB9, 'M', u'ظم'), + (0xFCBA, 'M', u'عج'), + (0xFCBB, 'M', u'عم'), + (0xFCBC, 'M', u'غج'), + (0xFCBD, 'M', u'غم'), + (0xFCBE, 'M', u'فج'), + (0xFCBF, 'M', u'فح'), + (0xFCC0, 'M', u'فخ'), + (0xFCC1, 'M', u'فم'), + (0xFCC2, 'M', u'قح'), + (0xFCC3, 'M', u'قم'), + (0xFCC4, 'M', u'كج'), + (0xFCC5, 'M', u'كح'), + (0xFCC6, 'M', u'كخ'), + (0xFCC7, 'M', u'كل'), + (0xFCC8, 'M', u'كم'), + (0xFCC9, 'M', u'لج'), + (0xFCCA, 'M', u'لح'), + (0xFCCB, 'M', u'لخ'), + (0xFCCC, 'M', u'لم'), + (0xFCCD, 'M', u'له'), + (0xFCCE, 'M', u'مج'), + (0xFCCF, 'M', u'مح'), + (0xFCD0, 'M', u'مخ'), + (0xFCD1, 'M', u'مم'), + (0xFCD2, 'M', u'نج'), + (0xFCD3, 'M', u'نح'), + (0xFCD4, 'M', u'نخ'), + (0xFCD5, 'M', u'نم'), + (0xFCD6, 'M', u'نه'), + (0xFCD7, 'M', u'هج'), + (0xFCD8, 'M', u'هم'), + (0xFCD9, 'M', u'هٰ'), + (0xFCDA, 'M', u'يج'), + (0xFCDB, 'M', u'يح'), + (0xFCDC, 'M', u'يخ'), + (0xFCDD, 'M', u'يم'), + (0xFCDE, 'M', u'يه'), + (0xFCDF, 'M', u'ئم'), + (0xFCE0, 'M', u'ئه'), + (0xFCE1, 'M', u'بم'), + (0xFCE2, 'M', u'به'), + (0xFCE3, 'M', u'تم'), + (0xFCE4, 'M', u'ته'), + (0xFCE5, 'M', u'ثم'), + (0xFCE6, 'M', u'ثه'), + (0xFCE7, 'M', u'سم'), + (0xFCE8, 'M', u'سه'), + (0xFCE9, 'M', u'شم'), + (0xFCEA, 'M', u'شه'), + (0xFCEB, 'M', u'كل'), + (0xFCEC, 'M', u'كم'), + (0xFCED, 'M', u'لم'), + (0xFCEE, 'M', u'نم'), + (0xFCEF, 'M', u'نه'), + (0xFCF0, 'M', u'يم'), + (0xFCF1, 'M', u'يه'), + (0xFCF2, 'M', u'ـَّ'), + (0xFCF3, 'M', u'ـُّ'), + (0xFCF4, 'M', u'ـِّ'), + (0xFCF5, 'M', u'طى'), + (0xFCF6, 'M', u'طي'), + (0xFCF7, 'M', u'عى'), + (0xFCF8, 'M', u'عي'), + (0xFCF9, 'M', u'غى'), + (0xFCFA, 'M', u'غي'), + (0xFCFB, 'M', u'سى'), + (0xFCFC, 'M', u'سي'), + (0xFCFD, 'M', u'شى'), + (0xFCFE, 'M', u'شي'), + (0xFCFF, 'M', u'حى'), + (0xFD00, 'M', u'حي'), + (0xFD01, 'M', u'جى'), + (0xFD02, 'M', u'جي'), + (0xFD03, 'M', u'خى'), + (0xFD04, 'M', u'خي'), + (0xFD05, 'M', u'صى'), + (0xFD06, 'M', u'صي'), + ] + +def _seg_46(): + return [ + (0xFD07, 'M', u'ضى'), + (0xFD08, 'M', u'ضي'), + (0xFD09, 'M', u'شج'), + (0xFD0A, 'M', u'شح'), + (0xFD0B, 'M', u'شخ'), + (0xFD0C, 'M', u'شم'), + (0xFD0D, 'M', u'شر'), + (0xFD0E, 'M', u'سر'), + (0xFD0F, 'M', u'صر'), + (0xFD10, 'M', u'ضر'), + (0xFD11, 'M', u'طى'), + (0xFD12, 'M', u'طي'), + (0xFD13, 'M', u'عى'), + (0xFD14, 'M', u'عي'), + (0xFD15, 'M', u'غى'), + (0xFD16, 'M', u'غي'), + (0xFD17, 'M', u'سى'), + (0xFD18, 'M', u'سي'), + (0xFD19, 'M', u'شى'), + (0xFD1A, 'M', u'شي'), + (0xFD1B, 'M', u'حى'), + (0xFD1C, 'M', u'حي'), + (0xFD1D, 'M', u'جى'), + (0xFD1E, 'M', u'جي'), + (0xFD1F, 'M', u'خى'), + (0xFD20, 'M', u'خي'), + (0xFD21, 'M', u'صى'), + (0xFD22, 'M', u'صي'), + (0xFD23, 'M', u'ضى'), + (0xFD24, 'M', u'ضي'), + (0xFD25, 'M', u'شج'), + (0xFD26, 'M', u'شح'), + (0xFD27, 'M', u'شخ'), + (0xFD28, 'M', u'شم'), + (0xFD29, 'M', u'شر'), + (0xFD2A, 'M', u'سر'), + (0xFD2B, 'M', u'صر'), + (0xFD2C, 'M', u'ضر'), + (0xFD2D, 'M', u'شج'), + (0xFD2E, 'M', u'شح'), + (0xFD2F, 'M', u'شخ'), + (0xFD30, 'M', u'شم'), + (0xFD31, 'M', u'سه'), + (0xFD32, 'M', u'شه'), + (0xFD33, 'M', u'طم'), + (0xFD34, 'M', u'سج'), + (0xFD35, 'M', u'سح'), + (0xFD36, 'M', u'سخ'), + (0xFD37, 'M', u'شج'), + (0xFD38, 'M', u'شح'), + (0xFD39, 'M', u'شخ'), + (0xFD3A, 'M', u'طم'), + (0xFD3B, 'M', u'ظم'), + (0xFD3C, 'M', u'اً'), + (0xFD3E, 'V'), + (0xFD40, 'X'), + (0xFD50, 'M', u'تجم'), + (0xFD51, 'M', u'تحج'), + (0xFD53, 'M', u'تحم'), + (0xFD54, 'M', u'تخم'), + (0xFD55, 'M', u'تمج'), + (0xFD56, 'M', u'تمح'), + (0xFD57, 'M', u'تمخ'), + (0xFD58, 'M', u'جمح'), + (0xFD5A, 'M', u'حمي'), + (0xFD5B, 'M', u'حمى'), + (0xFD5C, 'M', u'سحج'), + (0xFD5D, 'M', u'سجح'), + (0xFD5E, 'M', u'سجى'), + (0xFD5F, 'M', u'سمح'), + (0xFD61, 'M', u'سمج'), + (0xFD62, 'M', u'سمم'), + (0xFD64, 'M', u'صحح'), + (0xFD66, 'M', u'صمم'), + (0xFD67, 'M', u'شحم'), + (0xFD69, 'M', u'شجي'), + (0xFD6A, 'M', u'شمخ'), + (0xFD6C, 'M', u'شمم'), + (0xFD6E, 'M', u'ضحى'), + (0xFD6F, 'M', u'ضخم'), + (0xFD71, 'M', u'طمح'), + (0xFD73, 'M', u'طمم'), + (0xFD74, 'M', u'طمي'), + (0xFD75, 'M', u'عجم'), + (0xFD76, 'M', u'عمم'), + (0xFD78, 'M', u'عمى'), + (0xFD79, 'M', u'غمم'), + (0xFD7A, 'M', u'غمي'), + (0xFD7B, 'M', u'غمى'), + (0xFD7C, 'M', u'فخم'), + (0xFD7E, 'M', u'قمح'), + (0xFD7F, 'M', u'قمم'), + (0xFD80, 'M', u'لحم'), + (0xFD81, 'M', u'لحي'), + (0xFD82, 'M', u'لحى'), + (0xFD83, 'M', u'لجج'), + (0xFD85, 'M', u'لخم'), + (0xFD87, 'M', u'لمح'), + (0xFD89, 'M', u'محج'), + (0xFD8A, 'M', u'محم'), + ] + +def _seg_47(): + return [ + (0xFD8B, 'M', u'محي'), + (0xFD8C, 'M', u'مجح'), + (0xFD8D, 'M', u'مجم'), + (0xFD8E, 'M', u'مخج'), + (0xFD8F, 'M', u'مخم'), + (0xFD90, 'X'), + (0xFD92, 'M', u'مجخ'), + (0xFD93, 'M', u'همج'), + (0xFD94, 'M', u'همم'), + (0xFD95, 'M', u'نحم'), + (0xFD96, 'M', u'نحى'), + (0xFD97, 'M', u'نجم'), + (0xFD99, 'M', u'نجى'), + (0xFD9A, 'M', u'نمي'), + (0xFD9B, 'M', u'نمى'), + (0xFD9C, 'M', u'يمم'), + (0xFD9E, 'M', u'بخي'), + (0xFD9F, 'M', u'تجي'), + (0xFDA0, 'M', u'تجى'), + (0xFDA1, 'M', u'تخي'), + (0xFDA2, 'M', u'تخى'), + (0xFDA3, 'M', u'تمي'), + (0xFDA4, 'M', u'تمى'), + (0xFDA5, 'M', u'جمي'), + (0xFDA6, 'M', u'جحى'), + (0xFDA7, 'M', u'جمى'), + (0xFDA8, 'M', u'سخى'), + (0xFDA9, 'M', u'صحي'), + (0xFDAA, 'M', u'شحي'), + (0xFDAB, 'M', u'ضحي'), + (0xFDAC, 'M', u'لجي'), + (0xFDAD, 'M', u'لمي'), + (0xFDAE, 'M', u'يحي'), + (0xFDAF, 'M', u'يجي'), + (0xFDB0, 'M', u'يمي'), + (0xFDB1, 'M', u'ممي'), + (0xFDB2, 'M', u'قمي'), + (0xFDB3, 'M', u'نحي'), + (0xFDB4, 'M', u'قمح'), + (0xFDB5, 'M', u'لحم'), + (0xFDB6, 'M', u'عمي'), + (0xFDB7, 'M', u'كمي'), + (0xFDB8, 'M', u'نجح'), + (0xFDB9, 'M', u'مخي'), + (0xFDBA, 'M', u'لجم'), + (0xFDBB, 'M', u'كمم'), + (0xFDBC, 'M', u'لجم'), + (0xFDBD, 'M', u'نجح'), + (0xFDBE, 'M', u'جحي'), + (0xFDBF, 'M', u'حجي'), + (0xFDC0, 'M', u'مجي'), + (0xFDC1, 'M', u'فمي'), + (0xFDC2, 'M', u'بحي'), + (0xFDC3, 'M', u'كمم'), + (0xFDC4, 'M', u'عجم'), + (0xFDC5, 'M', u'صمم'), + (0xFDC6, 'M', u'سخي'), + (0xFDC7, 'M', u'نجي'), + (0xFDC8, 'X'), + (0xFDF0, 'M', u'صلے'), + (0xFDF1, 'M', u'قلے'), + (0xFDF2, 'M', u'الله'), + (0xFDF3, 'M', u'اكبر'), + (0xFDF4, 'M', u'محمد'), + (0xFDF5, 'M', u'صلعم'), + (0xFDF6, 'M', u'رسول'), + (0xFDF7, 'M', u'عليه'), + (0xFDF8, 'M', u'وسلم'), + (0xFDF9, 'M', u'صلى'), + (0xFDFA, '3', u'صلى الله عليه وسلم'), + (0xFDFB, '3', u'جل جلاله'), + (0xFDFC, 'M', u'ریال'), + (0xFDFD, 'V'), + (0xFDFE, 'X'), + (0xFE00, 'I'), + (0xFE10, '3', u','), + (0xFE11, 'M', u'、'), + (0xFE12, 'X'), + (0xFE13, '3', u':'), + (0xFE14, '3', u';'), + (0xFE15, '3', u'!'), + (0xFE16, '3', u'?'), + (0xFE17, 'M', u'〖'), + (0xFE18, 'M', u'〗'), + (0xFE19, 'X'), + (0xFE20, 'V'), + (0xFE27, 'X'), + (0xFE31, 'M', u'—'), + (0xFE32, 'M', u'–'), + (0xFE33, '3', u'_'), + (0xFE35, '3', u'('), + (0xFE36, '3', u')'), + (0xFE37, '3', u'{'), + (0xFE38, '3', u'}'), + (0xFE39, 'M', u'〔'), + (0xFE3A, 'M', u'〕'), + (0xFE3B, 'M', u'【'), + (0xFE3C, 'M', u'】'), + (0xFE3D, 'M', u'《'), + (0xFE3E, 'M', u'》'), + ] + +def _seg_48(): + return [ + (0xFE3F, 'M', u'〈'), + (0xFE40, 'M', u'〉'), + (0xFE41, 'M', u'「'), + (0xFE42, 'M', u'」'), + (0xFE43, 'M', u'『'), + (0xFE44, 'M', u'』'), + (0xFE45, 'V'), + (0xFE47, '3', u'['), + (0xFE48, '3', u']'), + (0xFE49, '3', u' ̅'), + (0xFE4D, '3', u'_'), + (0xFE50, '3', u','), + (0xFE51, 'M', u'、'), + (0xFE52, 'X'), + (0xFE54, '3', u';'), + (0xFE55, '3', u':'), + (0xFE56, '3', u'?'), + (0xFE57, '3', u'!'), + (0xFE58, 'M', u'—'), + (0xFE59, '3', u'('), + (0xFE5A, '3', u')'), + (0xFE5B, '3', u'{'), + (0xFE5C, '3', u'}'), + (0xFE5D, 'M', u'〔'), + (0xFE5E, 'M', u'〕'), + (0xFE5F, '3', u'#'), + (0xFE60, '3', u'&'), + (0xFE61, '3', u'*'), + (0xFE62, '3', u'+'), + (0xFE63, 'M', u'-'), + (0xFE64, '3', u'<'), + (0xFE65, '3', u'>'), + (0xFE66, '3', u'='), + (0xFE67, 'X'), + (0xFE68, '3', u'\\'), + (0xFE69, '3', u'$'), + (0xFE6A, '3', u'%'), + (0xFE6B, '3', u'@'), + (0xFE6C, 'X'), + (0xFE70, '3', u' ً'), + (0xFE71, 'M', u'ـً'), + (0xFE72, '3', u' ٌ'), + (0xFE73, 'V'), + (0xFE74, '3', u' ٍ'), + (0xFE75, 'X'), + (0xFE76, '3', u' َ'), + (0xFE77, 'M', u'ـَ'), + (0xFE78, '3', u' ُ'), + (0xFE79, 'M', u'ـُ'), + (0xFE7A, '3', u' ِ'), + (0xFE7B, 'M', u'ـِ'), + (0xFE7C, '3', u' ّ'), + (0xFE7D, 'M', u'ـّ'), + (0xFE7E, '3', u' ْ'), + (0xFE7F, 'M', u'ـْ'), + (0xFE80, 'M', u'ء'), + (0xFE81, 'M', u'آ'), + (0xFE83, 'M', u'أ'), + (0xFE85, 'M', u'ؤ'), + (0xFE87, 'M', u'إ'), + (0xFE89, 'M', u'ئ'), + (0xFE8D, 'M', u'ا'), + (0xFE8F, 'M', u'ب'), + (0xFE93, 'M', u'ة'), + (0xFE95, 'M', u'ت'), + (0xFE99, 'M', u'ث'), + (0xFE9D, 'M', u'ج'), + (0xFEA1, 'M', u'ح'), + (0xFEA5, 'M', u'خ'), + (0xFEA9, 'M', u'د'), + (0xFEAB, 'M', u'ذ'), + (0xFEAD, 'M', u'ر'), + (0xFEAF, 'M', u'ز'), + (0xFEB1, 'M', u'س'), + (0xFEB5, 'M', u'ش'), + (0xFEB9, 'M', u'ص'), + (0xFEBD, 'M', u'ض'), + (0xFEC1, 'M', u'ط'), + (0xFEC5, 'M', u'ظ'), + (0xFEC9, 'M', u'ع'), + (0xFECD, 'M', u'غ'), + (0xFED1, 'M', u'ف'), + (0xFED5, 'M', u'ق'), + (0xFED9, 'M', u'ك'), + (0xFEDD, 'M', u'ل'), + (0xFEE1, 'M', u'م'), + (0xFEE5, 'M', u'ن'), + (0xFEE9, 'M', u'ه'), + (0xFEED, 'M', u'و'), + (0xFEEF, 'M', u'ى'), + (0xFEF1, 'M', u'ي'), + (0xFEF5, 'M', u'لآ'), + (0xFEF7, 'M', u'لأ'), + (0xFEF9, 'M', u'لإ'), + (0xFEFB, 'M', u'لا'), + (0xFEFD, 'X'), + (0xFEFF, 'I'), + (0xFF00, 'X'), + (0xFF01, '3', u'!'), + (0xFF02, '3', u'"'), + ] + +def _seg_49(): + return [ + (0xFF03, '3', u'#'), + (0xFF04, '3', u'$'), + (0xFF05, '3', u'%'), + (0xFF06, '3', u'&'), + (0xFF07, '3', u'\''), + (0xFF08, '3', u'('), + (0xFF09, '3', u')'), + (0xFF0A, '3', u'*'), + (0xFF0B, '3', u'+'), + (0xFF0C, '3', u','), + (0xFF0D, 'M', u'-'), + (0xFF0E, 'M', u'.'), + (0xFF0F, '3', u'/'), + (0xFF10, 'M', u'0'), + (0xFF11, 'M', u'1'), + (0xFF12, 'M', u'2'), + (0xFF13, 'M', u'3'), + (0xFF14, 'M', u'4'), + (0xFF15, 'M', u'5'), + (0xFF16, 'M', u'6'), + (0xFF17, 'M', u'7'), + (0xFF18, 'M', u'8'), + (0xFF19, 'M', u'9'), + (0xFF1A, '3', u':'), + (0xFF1B, '3', u';'), + (0xFF1C, '3', u'<'), + (0xFF1D, '3', u'='), + (0xFF1E, '3', u'>'), + (0xFF1F, '3', u'?'), + (0xFF20, '3', u'@'), + (0xFF21, 'M', u'a'), + (0xFF22, 'M', u'b'), + (0xFF23, 'M', u'c'), + (0xFF24, 'M', u'd'), + (0xFF25, 'M', u'e'), + (0xFF26, 'M', u'f'), + (0xFF27, 'M', u'g'), + (0xFF28, 'M', u'h'), + (0xFF29, 'M', u'i'), + (0xFF2A, 'M', u'j'), + (0xFF2B, 'M', u'k'), + (0xFF2C, 'M', u'l'), + (0xFF2D, 'M', u'm'), + (0xFF2E, 'M', u'n'), + (0xFF2F, 'M', u'o'), + (0xFF30, 'M', u'p'), + (0xFF31, 'M', u'q'), + (0xFF32, 'M', u'r'), + (0xFF33, 'M', u's'), + (0xFF34, 'M', u't'), + (0xFF35, 'M', u'u'), + (0xFF36, 'M', u'v'), + (0xFF37, 'M', u'w'), + (0xFF38, 'M', u'x'), + (0xFF39, 'M', u'y'), + (0xFF3A, 'M', u'z'), + (0xFF3B, '3', u'['), + (0xFF3C, '3', u'\\'), + (0xFF3D, '3', u']'), + (0xFF3E, '3', u'^'), + (0xFF3F, '3', u'_'), + (0xFF40, '3', u'`'), + (0xFF41, 'M', u'a'), + (0xFF42, 'M', u'b'), + (0xFF43, 'M', u'c'), + (0xFF44, 'M', u'd'), + (0xFF45, 'M', u'e'), + (0xFF46, 'M', u'f'), + (0xFF47, 'M', u'g'), + (0xFF48, 'M', u'h'), + (0xFF49, 'M', u'i'), + (0xFF4A, 'M', u'j'), + (0xFF4B, 'M', u'k'), + (0xFF4C, 'M', u'l'), + (0xFF4D, 'M', u'm'), + (0xFF4E, 'M', u'n'), + (0xFF4F, 'M', u'o'), + (0xFF50, 'M', u'p'), + (0xFF51, 'M', u'q'), + (0xFF52, 'M', u'r'), + (0xFF53, 'M', u's'), + (0xFF54, 'M', u't'), + (0xFF55, 'M', u'u'), + (0xFF56, 'M', u'v'), + (0xFF57, 'M', u'w'), + (0xFF58, 'M', u'x'), + (0xFF59, 'M', u'y'), + (0xFF5A, 'M', u'z'), + (0xFF5B, '3', u'{'), + (0xFF5C, '3', u'|'), + (0xFF5D, '3', u'}'), + (0xFF5E, '3', u'~'), + (0xFF5F, 'M', u'⦅'), + (0xFF60, 'M', u'⦆'), + (0xFF61, 'M', u'.'), + (0xFF62, 'M', u'「'), + (0xFF63, 'M', u'」'), + (0xFF64, 'M', u'、'), + (0xFF65, 'M', u'・'), + (0xFF66, 'M', u'ヲ'), + ] + +def _seg_50(): + return [ + (0xFF67, 'M', u'ァ'), + (0xFF68, 'M', u'ィ'), + (0xFF69, 'M', u'ゥ'), + (0xFF6A, 'M', u'ェ'), + (0xFF6B, 'M', u'ォ'), + (0xFF6C, 'M', u'ャ'), + (0xFF6D, 'M', u'ュ'), + (0xFF6E, 'M', u'ョ'), + (0xFF6F, 'M', u'ッ'), + (0xFF70, 'M', u'ー'), + (0xFF71, 'M', u'ア'), + (0xFF72, 'M', u'イ'), + (0xFF73, 'M', u'ウ'), + (0xFF74, 'M', u'エ'), + (0xFF75, 'M', u'オ'), + (0xFF76, 'M', u'カ'), + (0xFF77, 'M', u'キ'), + (0xFF78, 'M', u'ク'), + (0xFF79, 'M', u'ケ'), + (0xFF7A, 'M', u'コ'), + (0xFF7B, 'M', u'サ'), + (0xFF7C, 'M', u'シ'), + (0xFF7D, 'M', u'ス'), + (0xFF7E, 'M', u'セ'), + (0xFF7F, 'M', u'ソ'), + (0xFF80, 'M', u'タ'), + (0xFF81, 'M', u'チ'), + (0xFF82, 'M', u'ツ'), + (0xFF83, 'M', u'テ'), + (0xFF84, 'M', u'ト'), + (0xFF85, 'M', u'ナ'), + (0xFF86, 'M', u'ニ'), + (0xFF87, 'M', u'ヌ'), + (0xFF88, 'M', u'ネ'), + (0xFF89, 'M', u'ノ'), + (0xFF8A, 'M', u'ハ'), + (0xFF8B, 'M', u'ヒ'), + (0xFF8C, 'M', u'フ'), + (0xFF8D, 'M', u'ヘ'), + (0xFF8E, 'M', u'ホ'), + (0xFF8F, 'M', u'マ'), + (0xFF90, 'M', u'ミ'), + (0xFF91, 'M', u'ム'), + (0xFF92, 'M', u'メ'), + (0xFF93, 'M', u'モ'), + (0xFF94, 'M', u'ヤ'), + (0xFF95, 'M', u'ユ'), + (0xFF96, 'M', u'ヨ'), + (0xFF97, 'M', u'ラ'), + (0xFF98, 'M', u'リ'), + (0xFF99, 'M', u'ル'), + (0xFF9A, 'M', u'レ'), + (0xFF9B, 'M', u'ロ'), + (0xFF9C, 'M', u'ワ'), + (0xFF9D, 'M', u'ン'), + (0xFF9E, 'M', u'゙'), + (0xFF9F, 'M', u'゚'), + (0xFFA0, 'X'), + (0xFFA1, 'M', u'ᄀ'), + (0xFFA2, 'M', u'ᄁ'), + (0xFFA3, 'M', u'ᆪ'), + (0xFFA4, 'M', u'ᄂ'), + (0xFFA5, 'M', u'ᆬ'), + (0xFFA6, 'M', u'ᆭ'), + (0xFFA7, 'M', u'ᄃ'), + (0xFFA8, 'M', u'ᄄ'), + (0xFFA9, 'M', u'ᄅ'), + (0xFFAA, 'M', u'ᆰ'), + (0xFFAB, 'M', u'ᆱ'), + (0xFFAC, 'M', u'ᆲ'), + (0xFFAD, 'M', u'ᆳ'), + (0xFFAE, 'M', u'ᆴ'), + (0xFFAF, 'M', u'ᆵ'), + (0xFFB0, 'M', u'ᄚ'), + (0xFFB1, 'M', u'ᄆ'), + (0xFFB2, 'M', u'ᄇ'), + (0xFFB3, 'M', u'ᄈ'), + (0xFFB4, 'M', u'ᄡ'), + (0xFFB5, 'M', u'ᄉ'), + (0xFFB6, 'M', u'ᄊ'), + (0xFFB7, 'M', u'ᄋ'), + (0xFFB8, 'M', u'ᄌ'), + (0xFFB9, 'M', u'ᄍ'), + (0xFFBA, 'M', u'ᄎ'), + (0xFFBB, 'M', u'ᄏ'), + (0xFFBC, 'M', u'ᄐ'), + (0xFFBD, 'M', u'ᄑ'), + (0xFFBE, 'M', u'ᄒ'), + (0xFFBF, 'X'), + (0xFFC2, 'M', u'ᅡ'), + (0xFFC3, 'M', u'ᅢ'), + (0xFFC4, 'M', u'ᅣ'), + (0xFFC5, 'M', u'ᅤ'), + (0xFFC6, 'M', u'ᅥ'), + (0xFFC7, 'M', u'ᅦ'), + (0xFFC8, 'X'), + (0xFFCA, 'M', u'ᅧ'), + (0xFFCB, 'M', u'ᅨ'), + (0xFFCC, 'M', u'ᅩ'), + (0xFFCD, 'M', u'ᅪ'), + ] + +def _seg_51(): + return [ + (0xFFCE, 'M', u'ᅫ'), + (0xFFCF, 'M', u'ᅬ'), + (0xFFD0, 'X'), + (0xFFD2, 'M', u'ᅭ'), + (0xFFD3, 'M', u'ᅮ'), + (0xFFD4, 'M', u'ᅯ'), + (0xFFD5, 'M', u'ᅰ'), + (0xFFD6, 'M', u'ᅱ'), + (0xFFD7, 'M', u'ᅲ'), + (0xFFD8, 'X'), + (0xFFDA, 'M', u'ᅳ'), + (0xFFDB, 'M', u'ᅴ'), + (0xFFDC, 'M', u'ᅵ'), + (0xFFDD, 'X'), + (0xFFE0, 'M', u'¢'), + (0xFFE1, 'M', u'£'), + (0xFFE2, 'M', u'¬'), + (0xFFE3, '3', u' ̄'), + (0xFFE4, 'M', u'¦'), + (0xFFE5, 'M', u'¥'), + (0xFFE6, 'M', u'₩'), + (0xFFE7, 'X'), + (0xFFE8, 'M', u'│'), + (0xFFE9, 'M', u'←'), + (0xFFEA, 'M', u'↑'), + (0xFFEB, 'M', u'→'), + (0xFFEC, 'M', u'↓'), + (0xFFED, 'M', u'■'), + (0xFFEE, 'M', u'○'), + (0xFFEF, 'X'), + (0x10000, 'V'), + (0x1000C, 'X'), + (0x1000D, 'V'), + (0x10027, 'X'), + (0x10028, 'V'), + (0x1003B, 'X'), + (0x1003C, 'V'), + (0x1003E, 'X'), + (0x1003F, 'V'), + (0x1004E, 'X'), + (0x10050, 'V'), + (0x1005E, 'X'), + (0x10080, 'V'), + (0x100FB, 'X'), + (0x10100, 'V'), + (0x10103, 'X'), + (0x10107, 'V'), + (0x10134, 'X'), + (0x10137, 'V'), + (0x1018B, 'X'), + (0x10190, 'V'), + (0x1019C, 'X'), + (0x101D0, 'V'), + (0x101FE, 'X'), + (0x10280, 'V'), + (0x1029D, 'X'), + (0x102A0, 'V'), + (0x102D1, 'X'), + (0x10300, 'V'), + (0x1031F, 'X'), + (0x10320, 'V'), + (0x10324, 'X'), + (0x10330, 'V'), + (0x1034B, 'X'), + (0x10380, 'V'), + (0x1039E, 'X'), + (0x1039F, 'V'), + (0x103C4, 'X'), + (0x103C8, 'V'), + (0x103D6, 'X'), + (0x10400, 'M', u'𐐨'), + (0x10401, 'M', u'𐐩'), + (0x10402, 'M', u'𐐪'), + (0x10403, 'M', u'𐐫'), + (0x10404, 'M', u'𐐬'), + (0x10405, 'M', u'𐐭'), + (0x10406, 'M', u'𐐮'), + (0x10407, 'M', u'𐐯'), + (0x10408, 'M', u'𐐰'), + (0x10409, 'M', u'𐐱'), + (0x1040A, 'M', u'𐐲'), + (0x1040B, 'M', u'𐐳'), + (0x1040C, 'M', u'𐐴'), + (0x1040D, 'M', u'𐐵'), + (0x1040E, 'M', u'𐐶'), + (0x1040F, 'M', u'𐐷'), + (0x10410, 'M', u'𐐸'), + (0x10411, 'M', u'𐐹'), + (0x10412, 'M', u'𐐺'), + (0x10413, 'M', u'𐐻'), + (0x10414, 'M', u'𐐼'), + (0x10415, 'M', u'𐐽'), + (0x10416, 'M', u'𐐾'), + (0x10417, 'M', u'𐐿'), + (0x10418, 'M', u'𐑀'), + (0x10419, 'M', u'𐑁'), + (0x1041A, 'M', u'𐑂'), + (0x1041B, 'M', u'𐑃'), + (0x1041C, 'M', u'𐑄'), + (0x1041D, 'M', u'𐑅'), + ] + +def _seg_52(): + return [ + (0x1041E, 'M', u'𐑆'), + (0x1041F, 'M', u'𐑇'), + (0x10420, 'M', u'𐑈'), + (0x10421, 'M', u'𐑉'), + (0x10422, 'M', u'𐑊'), + (0x10423, 'M', u'𐑋'), + (0x10424, 'M', u'𐑌'), + (0x10425, 'M', u'𐑍'), + (0x10426, 'M', u'𐑎'), + (0x10427, 'M', u'𐑏'), + (0x10428, 'V'), + (0x1049E, 'X'), + (0x104A0, 'V'), + (0x104AA, 'X'), + (0x10800, 'V'), + (0x10806, 'X'), + (0x10808, 'V'), + (0x10809, 'X'), + (0x1080A, 'V'), + (0x10836, 'X'), + (0x10837, 'V'), + (0x10839, 'X'), + (0x1083C, 'V'), + (0x1083D, 'X'), + (0x1083F, 'V'), + (0x10856, 'X'), + (0x10857, 'V'), + (0x10860, 'X'), + (0x10900, 'V'), + (0x1091C, 'X'), + (0x1091F, 'V'), + (0x1093A, 'X'), + (0x1093F, 'V'), + (0x10940, 'X'), + (0x10980, 'V'), + (0x109B8, 'X'), + (0x109BE, 'V'), + (0x109C0, 'X'), + (0x10A00, 'V'), + (0x10A04, 'X'), + (0x10A05, 'V'), + (0x10A07, 'X'), + (0x10A0C, 'V'), + (0x10A14, 'X'), + (0x10A15, 'V'), + (0x10A18, 'X'), + (0x10A19, 'V'), + (0x10A34, 'X'), + (0x10A38, 'V'), + (0x10A3B, 'X'), + (0x10A3F, 'V'), + (0x10A48, 'X'), + (0x10A50, 'V'), + (0x10A59, 'X'), + (0x10A60, 'V'), + (0x10A80, 'X'), + (0x10B00, 'V'), + (0x10B36, 'X'), + (0x10B39, 'V'), + (0x10B56, 'X'), + (0x10B58, 'V'), + (0x10B73, 'X'), + (0x10B78, 'V'), + (0x10B80, 'X'), + (0x10C00, 'V'), + (0x10C49, 'X'), + (0x10E60, 'V'), + (0x10E7F, 'X'), + (0x11000, 'V'), + (0x1104E, 'X'), + (0x11052, 'V'), + (0x11070, 'X'), + (0x11080, 'V'), + (0x110BD, 'X'), + (0x110BE, 'V'), + (0x110C2, 'X'), + (0x110D0, 'V'), + (0x110E9, 'X'), + (0x110F0, 'V'), + (0x110FA, 'X'), + (0x11100, 'V'), + (0x11135, 'X'), + (0x11136, 'V'), + (0x11144, 'X'), + (0x11180, 'V'), + (0x111C9, 'X'), + (0x111D0, 'V'), + (0x111DA, 'X'), + (0x11680, 'V'), + (0x116B8, 'X'), + (0x116C0, 'V'), + (0x116CA, 'X'), + (0x12000, 'V'), + (0x1236F, 'X'), + (0x12400, 'V'), + (0x12463, 'X'), + (0x12470, 'V'), + (0x12474, 'X'), + (0x13000, 'V'), + (0x1342F, 'X'), + ] + +def _seg_53(): + return [ + (0x16800, 'V'), + (0x16A39, 'X'), + (0x16F00, 'V'), + (0x16F45, 'X'), + (0x16F50, 'V'), + (0x16F7F, 'X'), + (0x16F8F, 'V'), + (0x16FA0, 'X'), + (0x1B000, 'V'), + (0x1B002, 'X'), + (0x1D000, 'V'), + (0x1D0F6, 'X'), + (0x1D100, 'V'), + (0x1D127, 'X'), + (0x1D129, 'V'), + (0x1D15E, 'M', u'𝅗𝅥'), + (0x1D15F, 'M', u'𝅘𝅥'), + (0x1D160, 'M', u'𝅘𝅥𝅮'), + (0x1D161, 'M', u'𝅘𝅥𝅯'), + (0x1D162, 'M', u'𝅘𝅥𝅰'), + (0x1D163, 'M', u'𝅘𝅥𝅱'), + (0x1D164, 'M', u'𝅘𝅥𝅲'), + (0x1D165, 'V'), + (0x1D173, 'X'), + (0x1D17B, 'V'), + (0x1D1BB, 'M', u'𝆹𝅥'), + (0x1D1BC, 'M', u'𝆺𝅥'), + (0x1D1BD, 'M', u'𝆹𝅥𝅮'), + (0x1D1BE, 'M', u'𝆺𝅥𝅮'), + (0x1D1BF, 'M', u'𝆹𝅥𝅯'), + (0x1D1C0, 'M', u'𝆺𝅥𝅯'), + (0x1D1C1, 'V'), + (0x1D1DE, 'X'), + (0x1D200, 'V'), + (0x1D246, 'X'), + (0x1D300, 'V'), + (0x1D357, 'X'), + (0x1D360, 'V'), + (0x1D372, 'X'), + (0x1D400, 'M', u'a'), + (0x1D401, 'M', u'b'), + (0x1D402, 'M', u'c'), + (0x1D403, 'M', u'd'), + (0x1D404, 'M', u'e'), + (0x1D405, 'M', u'f'), + (0x1D406, 'M', u'g'), + (0x1D407, 'M', u'h'), + (0x1D408, 'M', u'i'), + (0x1D409, 'M', u'j'), + (0x1D40A, 'M', u'k'), + (0x1D40B, 'M', u'l'), + (0x1D40C, 'M', u'm'), + (0x1D40D, 'M', u'n'), + (0x1D40E, 'M', u'o'), + (0x1D40F, 'M', u'p'), + (0x1D410, 'M', u'q'), + (0x1D411, 'M', u'r'), + (0x1D412, 'M', u's'), + (0x1D413, 'M', u't'), + (0x1D414, 'M', u'u'), + (0x1D415, 'M', u'v'), + (0x1D416, 'M', u'w'), + (0x1D417, 'M', u'x'), + (0x1D418, 'M', u'y'), + (0x1D419, 'M', u'z'), + (0x1D41A, 'M', u'a'), + (0x1D41B, 'M', u'b'), + (0x1D41C, 'M', u'c'), + (0x1D41D, 'M', u'd'), + (0x1D41E, 'M', u'e'), + (0x1D41F, 'M', u'f'), + (0x1D420, 'M', u'g'), + (0x1D421, 'M', u'h'), + (0x1D422, 'M', u'i'), + (0x1D423, 'M', u'j'), + (0x1D424, 'M', u'k'), + (0x1D425, 'M', u'l'), + (0x1D426, 'M', u'm'), + (0x1D427, 'M', u'n'), + (0x1D428, 'M', u'o'), + (0x1D429, 'M', u'p'), + (0x1D42A, 'M', u'q'), + (0x1D42B, 'M', u'r'), + (0x1D42C, 'M', u's'), + (0x1D42D, 'M', u't'), + (0x1D42E, 'M', u'u'), + (0x1D42F, 'M', u'v'), + (0x1D430, 'M', u'w'), + (0x1D431, 'M', u'x'), + (0x1D432, 'M', u'y'), + (0x1D433, 'M', u'z'), + (0x1D434, 'M', u'a'), + (0x1D435, 'M', u'b'), + (0x1D436, 'M', u'c'), + (0x1D437, 'M', u'd'), + (0x1D438, 'M', u'e'), + (0x1D439, 'M', u'f'), + (0x1D43A, 'M', u'g'), + (0x1D43B, 'M', u'h'), + (0x1D43C, 'M', u'i'), + ] + +def _seg_54(): + return [ + (0x1D43D, 'M', u'j'), + (0x1D43E, 'M', u'k'), + (0x1D43F, 'M', u'l'), + (0x1D440, 'M', u'm'), + (0x1D441, 'M', u'n'), + (0x1D442, 'M', u'o'), + (0x1D443, 'M', u'p'), + (0x1D444, 'M', u'q'), + (0x1D445, 'M', u'r'), + (0x1D446, 'M', u's'), + (0x1D447, 'M', u't'), + (0x1D448, 'M', u'u'), + (0x1D449, 'M', u'v'), + (0x1D44A, 'M', u'w'), + (0x1D44B, 'M', u'x'), + (0x1D44C, 'M', u'y'), + (0x1D44D, 'M', u'z'), + (0x1D44E, 'M', u'a'), + (0x1D44F, 'M', u'b'), + (0x1D450, 'M', u'c'), + (0x1D451, 'M', u'd'), + (0x1D452, 'M', u'e'), + (0x1D453, 'M', u'f'), + (0x1D454, 'M', u'g'), + (0x1D455, 'X'), + (0x1D456, 'M', u'i'), + (0x1D457, 'M', u'j'), + (0x1D458, 'M', u'k'), + (0x1D459, 'M', u'l'), + (0x1D45A, 'M', u'm'), + (0x1D45B, 'M', u'n'), + (0x1D45C, 'M', u'o'), + (0x1D45D, 'M', u'p'), + (0x1D45E, 'M', u'q'), + (0x1D45F, 'M', u'r'), + (0x1D460, 'M', u's'), + (0x1D461, 'M', u't'), + (0x1D462, 'M', u'u'), + (0x1D463, 'M', u'v'), + (0x1D464, 'M', u'w'), + (0x1D465, 'M', u'x'), + (0x1D466, 'M', u'y'), + (0x1D467, 'M', u'z'), + (0x1D468, 'M', u'a'), + (0x1D469, 'M', u'b'), + (0x1D46A, 'M', u'c'), + (0x1D46B, 'M', u'd'), + (0x1D46C, 'M', u'e'), + (0x1D46D, 'M', u'f'), + (0x1D46E, 'M', u'g'), + (0x1D46F, 'M', u'h'), + (0x1D470, 'M', u'i'), + (0x1D471, 'M', u'j'), + (0x1D472, 'M', u'k'), + (0x1D473, 'M', u'l'), + (0x1D474, 'M', u'm'), + (0x1D475, 'M', u'n'), + (0x1D476, 'M', u'o'), + (0x1D477, 'M', u'p'), + (0x1D478, 'M', u'q'), + (0x1D479, 'M', u'r'), + (0x1D47A, 'M', u's'), + (0x1D47B, 'M', u't'), + (0x1D47C, 'M', u'u'), + (0x1D47D, 'M', u'v'), + (0x1D47E, 'M', u'w'), + (0x1D47F, 'M', u'x'), + (0x1D480, 'M', u'y'), + (0x1D481, 'M', u'z'), + (0x1D482, 'M', u'a'), + (0x1D483, 'M', u'b'), + (0x1D484, 'M', u'c'), + (0x1D485, 'M', u'd'), + (0x1D486, 'M', u'e'), + (0x1D487, 'M', u'f'), + (0x1D488, 'M', u'g'), + (0x1D489, 'M', u'h'), + (0x1D48A, 'M', u'i'), + (0x1D48B, 'M', u'j'), + (0x1D48C, 'M', u'k'), + (0x1D48D, 'M', u'l'), + (0x1D48E, 'M', u'm'), + (0x1D48F, 'M', u'n'), + (0x1D490, 'M', u'o'), + (0x1D491, 'M', u'p'), + (0x1D492, 'M', u'q'), + (0x1D493, 'M', u'r'), + (0x1D494, 'M', u's'), + (0x1D495, 'M', u't'), + (0x1D496, 'M', u'u'), + (0x1D497, 'M', u'v'), + (0x1D498, 'M', u'w'), + (0x1D499, 'M', u'x'), + (0x1D49A, 'M', u'y'), + (0x1D49B, 'M', u'z'), + (0x1D49C, 'M', u'a'), + (0x1D49D, 'X'), + (0x1D49E, 'M', u'c'), + (0x1D49F, 'M', u'd'), + (0x1D4A0, 'X'), + ] + +def _seg_55(): + return [ + (0x1D4A2, 'M', u'g'), + (0x1D4A3, 'X'), + (0x1D4A5, 'M', u'j'), + (0x1D4A6, 'M', u'k'), + (0x1D4A7, 'X'), + (0x1D4A9, 'M', u'n'), + (0x1D4AA, 'M', u'o'), + (0x1D4AB, 'M', u'p'), + (0x1D4AC, 'M', u'q'), + (0x1D4AD, 'X'), + (0x1D4AE, 'M', u's'), + (0x1D4AF, 'M', u't'), + (0x1D4B0, 'M', u'u'), + (0x1D4B1, 'M', u'v'), + (0x1D4B2, 'M', u'w'), + (0x1D4B3, 'M', u'x'), + (0x1D4B4, 'M', u'y'), + (0x1D4B5, 'M', u'z'), + (0x1D4B6, 'M', u'a'), + (0x1D4B7, 'M', u'b'), + (0x1D4B8, 'M', u'c'), + (0x1D4B9, 'M', u'd'), + (0x1D4BA, 'X'), + (0x1D4BB, 'M', u'f'), + (0x1D4BC, 'X'), + (0x1D4BD, 'M', u'h'), + (0x1D4BE, 'M', u'i'), + (0x1D4BF, 'M', u'j'), + (0x1D4C0, 'M', u'k'), + (0x1D4C1, 'M', u'l'), + (0x1D4C2, 'M', u'm'), + (0x1D4C3, 'M', u'n'), + (0x1D4C4, 'X'), + (0x1D4C5, 'M', u'p'), + (0x1D4C6, 'M', u'q'), + (0x1D4C7, 'M', u'r'), + (0x1D4C8, 'M', u's'), + (0x1D4C9, 'M', u't'), + (0x1D4CA, 'M', u'u'), + (0x1D4CB, 'M', u'v'), + (0x1D4CC, 'M', u'w'), + (0x1D4CD, 'M', u'x'), + (0x1D4CE, 'M', u'y'), + (0x1D4CF, 'M', u'z'), + (0x1D4D0, 'M', u'a'), + (0x1D4D1, 'M', u'b'), + (0x1D4D2, 'M', u'c'), + (0x1D4D3, 'M', u'd'), + (0x1D4D4, 'M', u'e'), + (0x1D4D5, 'M', u'f'), + (0x1D4D6, 'M', u'g'), + (0x1D4D7, 'M', u'h'), + (0x1D4D8, 'M', u'i'), + (0x1D4D9, 'M', u'j'), + (0x1D4DA, 'M', u'k'), + (0x1D4DB, 'M', u'l'), + (0x1D4DC, 'M', u'm'), + (0x1D4DD, 'M', u'n'), + (0x1D4DE, 'M', u'o'), + (0x1D4DF, 'M', u'p'), + (0x1D4E0, 'M', u'q'), + (0x1D4E1, 'M', u'r'), + (0x1D4E2, 'M', u's'), + (0x1D4E3, 'M', u't'), + (0x1D4E4, 'M', u'u'), + (0x1D4E5, 'M', u'v'), + (0x1D4E6, 'M', u'w'), + (0x1D4E7, 'M', u'x'), + (0x1D4E8, 'M', u'y'), + (0x1D4E9, 'M', u'z'), + (0x1D4EA, 'M', u'a'), + (0x1D4EB, 'M', u'b'), + (0x1D4EC, 'M', u'c'), + (0x1D4ED, 'M', u'd'), + (0x1D4EE, 'M', u'e'), + (0x1D4EF, 'M', u'f'), + (0x1D4F0, 'M', u'g'), + (0x1D4F1, 'M', u'h'), + (0x1D4F2, 'M', u'i'), + (0x1D4F3, 'M', u'j'), + (0x1D4F4, 'M', u'k'), + (0x1D4F5, 'M', u'l'), + (0x1D4F6, 'M', u'm'), + (0x1D4F7, 'M', u'n'), + (0x1D4F8, 'M', u'o'), + (0x1D4F9, 'M', u'p'), + (0x1D4FA, 'M', u'q'), + (0x1D4FB, 'M', u'r'), + (0x1D4FC, 'M', u's'), + (0x1D4FD, 'M', u't'), + (0x1D4FE, 'M', u'u'), + (0x1D4FF, 'M', u'v'), + (0x1D500, 'M', u'w'), + (0x1D501, 'M', u'x'), + (0x1D502, 'M', u'y'), + (0x1D503, 'M', u'z'), + (0x1D504, 'M', u'a'), + (0x1D505, 'M', u'b'), + (0x1D506, 'X'), + (0x1D507, 'M', u'd'), + ] + +def _seg_56(): + return [ + (0x1D508, 'M', u'e'), + (0x1D509, 'M', u'f'), + (0x1D50A, 'M', u'g'), + (0x1D50B, 'X'), + (0x1D50D, 'M', u'j'), + (0x1D50E, 'M', u'k'), + (0x1D50F, 'M', u'l'), + (0x1D510, 'M', u'm'), + (0x1D511, 'M', u'n'), + (0x1D512, 'M', u'o'), + (0x1D513, 'M', u'p'), + (0x1D514, 'M', u'q'), + (0x1D515, 'X'), + (0x1D516, 'M', u's'), + (0x1D517, 'M', u't'), + (0x1D518, 'M', u'u'), + (0x1D519, 'M', u'v'), + (0x1D51A, 'M', u'w'), + (0x1D51B, 'M', u'x'), + (0x1D51C, 'M', u'y'), + (0x1D51D, 'X'), + (0x1D51E, 'M', u'a'), + (0x1D51F, 'M', u'b'), + (0x1D520, 'M', u'c'), + (0x1D521, 'M', u'd'), + (0x1D522, 'M', u'e'), + (0x1D523, 'M', u'f'), + (0x1D524, 'M', u'g'), + (0x1D525, 'M', u'h'), + (0x1D526, 'M', u'i'), + (0x1D527, 'M', u'j'), + (0x1D528, 'M', u'k'), + (0x1D529, 'M', u'l'), + (0x1D52A, 'M', u'm'), + (0x1D52B, 'M', u'n'), + (0x1D52C, 'M', u'o'), + (0x1D52D, 'M', u'p'), + (0x1D52E, 'M', u'q'), + (0x1D52F, 'M', u'r'), + (0x1D530, 'M', u's'), + (0x1D531, 'M', u't'), + (0x1D532, 'M', u'u'), + (0x1D533, 'M', u'v'), + (0x1D534, 'M', u'w'), + (0x1D535, 'M', u'x'), + (0x1D536, 'M', u'y'), + (0x1D537, 'M', u'z'), + (0x1D538, 'M', u'a'), + (0x1D539, 'M', u'b'), + (0x1D53A, 'X'), + (0x1D53B, 'M', u'd'), + (0x1D53C, 'M', u'e'), + (0x1D53D, 'M', u'f'), + (0x1D53E, 'M', u'g'), + (0x1D53F, 'X'), + (0x1D540, 'M', u'i'), + (0x1D541, 'M', u'j'), + (0x1D542, 'M', u'k'), + (0x1D543, 'M', u'l'), + (0x1D544, 'M', u'm'), + (0x1D545, 'X'), + (0x1D546, 'M', u'o'), + (0x1D547, 'X'), + (0x1D54A, 'M', u's'), + (0x1D54B, 'M', u't'), + (0x1D54C, 'M', u'u'), + (0x1D54D, 'M', u'v'), + (0x1D54E, 'M', u'w'), + (0x1D54F, 'M', u'x'), + (0x1D550, 'M', u'y'), + (0x1D551, 'X'), + (0x1D552, 'M', u'a'), + (0x1D553, 'M', u'b'), + (0x1D554, 'M', u'c'), + (0x1D555, 'M', u'd'), + (0x1D556, 'M', u'e'), + (0x1D557, 'M', u'f'), + (0x1D558, 'M', u'g'), + (0x1D559, 'M', u'h'), + (0x1D55A, 'M', u'i'), + (0x1D55B, 'M', u'j'), + (0x1D55C, 'M', u'k'), + (0x1D55D, 'M', u'l'), + (0x1D55E, 'M', u'm'), + (0x1D55F, 'M', u'n'), + (0x1D560, 'M', u'o'), + (0x1D561, 'M', u'p'), + (0x1D562, 'M', u'q'), + (0x1D563, 'M', u'r'), + (0x1D564, 'M', u's'), + (0x1D565, 'M', u't'), + (0x1D566, 'M', u'u'), + (0x1D567, 'M', u'v'), + (0x1D568, 'M', u'w'), + (0x1D569, 'M', u'x'), + (0x1D56A, 'M', u'y'), + (0x1D56B, 'M', u'z'), + (0x1D56C, 'M', u'a'), + (0x1D56D, 'M', u'b'), + (0x1D56E, 'M', u'c'), + ] + +def _seg_57(): + return [ + (0x1D56F, 'M', u'd'), + (0x1D570, 'M', u'e'), + (0x1D571, 'M', u'f'), + (0x1D572, 'M', u'g'), + (0x1D573, 'M', u'h'), + (0x1D574, 'M', u'i'), + (0x1D575, 'M', u'j'), + (0x1D576, 'M', u'k'), + (0x1D577, 'M', u'l'), + (0x1D578, 'M', u'm'), + (0x1D579, 'M', u'n'), + (0x1D57A, 'M', u'o'), + (0x1D57B, 'M', u'p'), + (0x1D57C, 'M', u'q'), + (0x1D57D, 'M', u'r'), + (0x1D57E, 'M', u's'), + (0x1D57F, 'M', u't'), + (0x1D580, 'M', u'u'), + (0x1D581, 'M', u'v'), + (0x1D582, 'M', u'w'), + (0x1D583, 'M', u'x'), + (0x1D584, 'M', u'y'), + (0x1D585, 'M', u'z'), + (0x1D586, 'M', u'a'), + (0x1D587, 'M', u'b'), + (0x1D588, 'M', u'c'), + (0x1D589, 'M', u'd'), + (0x1D58A, 'M', u'e'), + (0x1D58B, 'M', u'f'), + (0x1D58C, 'M', u'g'), + (0x1D58D, 'M', u'h'), + (0x1D58E, 'M', u'i'), + (0x1D58F, 'M', u'j'), + (0x1D590, 'M', u'k'), + (0x1D591, 'M', u'l'), + (0x1D592, 'M', u'm'), + (0x1D593, 'M', u'n'), + (0x1D594, 'M', u'o'), + (0x1D595, 'M', u'p'), + (0x1D596, 'M', u'q'), + (0x1D597, 'M', u'r'), + (0x1D598, 'M', u's'), + (0x1D599, 'M', u't'), + (0x1D59A, 'M', u'u'), + (0x1D59B, 'M', u'v'), + (0x1D59C, 'M', u'w'), + (0x1D59D, 'M', u'x'), + (0x1D59E, 'M', u'y'), + (0x1D59F, 'M', u'z'), + (0x1D5A0, 'M', u'a'), + (0x1D5A1, 'M', u'b'), + (0x1D5A2, 'M', u'c'), + (0x1D5A3, 'M', u'd'), + (0x1D5A4, 'M', u'e'), + (0x1D5A5, 'M', u'f'), + (0x1D5A6, 'M', u'g'), + (0x1D5A7, 'M', u'h'), + (0x1D5A8, 'M', u'i'), + (0x1D5A9, 'M', u'j'), + (0x1D5AA, 'M', u'k'), + (0x1D5AB, 'M', u'l'), + (0x1D5AC, 'M', u'm'), + (0x1D5AD, 'M', u'n'), + (0x1D5AE, 'M', u'o'), + (0x1D5AF, 'M', u'p'), + (0x1D5B0, 'M', u'q'), + (0x1D5B1, 'M', u'r'), + (0x1D5B2, 'M', u's'), + (0x1D5B3, 'M', u't'), + (0x1D5B4, 'M', u'u'), + (0x1D5B5, 'M', u'v'), + (0x1D5B6, 'M', u'w'), + (0x1D5B7, 'M', u'x'), + (0x1D5B8, 'M', u'y'), + (0x1D5B9, 'M', u'z'), + (0x1D5BA, 'M', u'a'), + (0x1D5BB, 'M', u'b'), + (0x1D5BC, 'M', u'c'), + (0x1D5BD, 'M', u'd'), + (0x1D5BE, 'M', u'e'), + (0x1D5BF, 'M', u'f'), + (0x1D5C0, 'M', u'g'), + (0x1D5C1, 'M', u'h'), + (0x1D5C2, 'M', u'i'), + (0x1D5C3, 'M', u'j'), + (0x1D5C4, 'M', u'k'), + (0x1D5C5, 'M', u'l'), + (0x1D5C6, 'M', u'm'), + (0x1D5C7, 'M', u'n'), + (0x1D5C8, 'M', u'o'), + (0x1D5C9, 'M', u'p'), + (0x1D5CA, 'M', u'q'), + (0x1D5CB, 'M', u'r'), + (0x1D5CC, 'M', u's'), + (0x1D5CD, 'M', u't'), + (0x1D5CE, 'M', u'u'), + (0x1D5CF, 'M', u'v'), + (0x1D5D0, 'M', u'w'), + (0x1D5D1, 'M', u'x'), + (0x1D5D2, 'M', u'y'), + ] + +def _seg_58(): + return [ + (0x1D5D3, 'M', u'z'), + (0x1D5D4, 'M', u'a'), + (0x1D5D5, 'M', u'b'), + (0x1D5D6, 'M', u'c'), + (0x1D5D7, 'M', u'd'), + (0x1D5D8, 'M', u'e'), + (0x1D5D9, 'M', u'f'), + (0x1D5DA, 'M', u'g'), + (0x1D5DB, 'M', u'h'), + (0x1D5DC, 'M', u'i'), + (0x1D5DD, 'M', u'j'), + (0x1D5DE, 'M', u'k'), + (0x1D5DF, 'M', u'l'), + (0x1D5E0, 'M', u'm'), + (0x1D5E1, 'M', u'n'), + (0x1D5E2, 'M', u'o'), + (0x1D5E3, 'M', u'p'), + (0x1D5E4, 'M', u'q'), + (0x1D5E5, 'M', u'r'), + (0x1D5E6, 'M', u's'), + (0x1D5E7, 'M', u't'), + (0x1D5E8, 'M', u'u'), + (0x1D5E9, 'M', u'v'), + (0x1D5EA, 'M', u'w'), + (0x1D5EB, 'M', u'x'), + (0x1D5EC, 'M', u'y'), + (0x1D5ED, 'M', u'z'), + (0x1D5EE, 'M', u'a'), + (0x1D5EF, 'M', u'b'), + (0x1D5F0, 'M', u'c'), + (0x1D5F1, 'M', u'd'), + (0x1D5F2, 'M', u'e'), + (0x1D5F3, 'M', u'f'), + (0x1D5F4, 'M', u'g'), + (0x1D5F5, 'M', u'h'), + (0x1D5F6, 'M', u'i'), + (0x1D5F7, 'M', u'j'), + (0x1D5F8, 'M', u'k'), + (0x1D5F9, 'M', u'l'), + (0x1D5FA, 'M', u'm'), + (0x1D5FB, 'M', u'n'), + (0x1D5FC, 'M', u'o'), + (0x1D5FD, 'M', u'p'), + (0x1D5FE, 'M', u'q'), + (0x1D5FF, 'M', u'r'), + (0x1D600, 'M', u's'), + (0x1D601, 'M', u't'), + (0x1D602, 'M', u'u'), + (0x1D603, 'M', u'v'), + (0x1D604, 'M', u'w'), + (0x1D605, 'M', u'x'), + (0x1D606, 'M', u'y'), + (0x1D607, 'M', u'z'), + (0x1D608, 'M', u'a'), + (0x1D609, 'M', u'b'), + (0x1D60A, 'M', u'c'), + (0x1D60B, 'M', u'd'), + (0x1D60C, 'M', u'e'), + (0x1D60D, 'M', u'f'), + (0x1D60E, 'M', u'g'), + (0x1D60F, 'M', u'h'), + (0x1D610, 'M', u'i'), + (0x1D611, 'M', u'j'), + (0x1D612, 'M', u'k'), + (0x1D613, 'M', u'l'), + (0x1D614, 'M', u'm'), + (0x1D615, 'M', u'n'), + (0x1D616, 'M', u'o'), + (0x1D617, 'M', u'p'), + (0x1D618, 'M', u'q'), + (0x1D619, 'M', u'r'), + (0x1D61A, 'M', u's'), + (0x1D61B, 'M', u't'), + (0x1D61C, 'M', u'u'), + (0x1D61D, 'M', u'v'), + (0x1D61E, 'M', u'w'), + (0x1D61F, 'M', u'x'), + (0x1D620, 'M', u'y'), + (0x1D621, 'M', u'z'), + (0x1D622, 'M', u'a'), + (0x1D623, 'M', u'b'), + (0x1D624, 'M', u'c'), + (0x1D625, 'M', u'd'), + (0x1D626, 'M', u'e'), + (0x1D627, 'M', u'f'), + (0x1D628, 'M', u'g'), + (0x1D629, 'M', u'h'), + (0x1D62A, 'M', u'i'), + (0x1D62B, 'M', u'j'), + (0x1D62C, 'M', u'k'), + (0x1D62D, 'M', u'l'), + (0x1D62E, 'M', u'm'), + (0x1D62F, 'M', u'n'), + (0x1D630, 'M', u'o'), + (0x1D631, 'M', u'p'), + (0x1D632, 'M', u'q'), + (0x1D633, 'M', u'r'), + (0x1D634, 'M', u's'), + (0x1D635, 'M', u't'), + (0x1D636, 'M', u'u'), + ] + +def _seg_59(): + return [ + (0x1D637, 'M', u'v'), + (0x1D638, 'M', u'w'), + (0x1D639, 'M', u'x'), + (0x1D63A, 'M', u'y'), + (0x1D63B, 'M', u'z'), + (0x1D63C, 'M', u'a'), + (0x1D63D, 'M', u'b'), + (0x1D63E, 'M', u'c'), + (0x1D63F, 'M', u'd'), + (0x1D640, 'M', u'e'), + (0x1D641, 'M', u'f'), + (0x1D642, 'M', u'g'), + (0x1D643, 'M', u'h'), + (0x1D644, 'M', u'i'), + (0x1D645, 'M', u'j'), + (0x1D646, 'M', u'k'), + (0x1D647, 'M', u'l'), + (0x1D648, 'M', u'm'), + (0x1D649, 'M', u'n'), + (0x1D64A, 'M', u'o'), + (0x1D64B, 'M', u'p'), + (0x1D64C, 'M', u'q'), + (0x1D64D, 'M', u'r'), + (0x1D64E, 'M', u's'), + (0x1D64F, 'M', u't'), + (0x1D650, 'M', u'u'), + (0x1D651, 'M', u'v'), + (0x1D652, 'M', u'w'), + (0x1D653, 'M', u'x'), + (0x1D654, 'M', u'y'), + (0x1D655, 'M', u'z'), + (0x1D656, 'M', u'a'), + (0x1D657, 'M', u'b'), + (0x1D658, 'M', u'c'), + (0x1D659, 'M', u'd'), + (0x1D65A, 'M', u'e'), + (0x1D65B, 'M', u'f'), + (0x1D65C, 'M', u'g'), + (0x1D65D, 'M', u'h'), + (0x1D65E, 'M', u'i'), + (0x1D65F, 'M', u'j'), + (0x1D660, 'M', u'k'), + (0x1D661, 'M', u'l'), + (0x1D662, 'M', u'm'), + (0x1D663, 'M', u'n'), + (0x1D664, 'M', u'o'), + (0x1D665, 'M', u'p'), + (0x1D666, 'M', u'q'), + (0x1D667, 'M', u'r'), + (0x1D668, 'M', u's'), + (0x1D669, 'M', u't'), + (0x1D66A, 'M', u'u'), + (0x1D66B, 'M', u'v'), + (0x1D66C, 'M', u'w'), + (0x1D66D, 'M', u'x'), + (0x1D66E, 'M', u'y'), + (0x1D66F, 'M', u'z'), + (0x1D670, 'M', u'a'), + (0x1D671, 'M', u'b'), + (0x1D672, 'M', u'c'), + (0x1D673, 'M', u'd'), + (0x1D674, 'M', u'e'), + (0x1D675, 'M', u'f'), + (0x1D676, 'M', u'g'), + (0x1D677, 'M', u'h'), + (0x1D678, 'M', u'i'), + (0x1D679, 'M', u'j'), + (0x1D67A, 'M', u'k'), + (0x1D67B, 'M', u'l'), + (0x1D67C, 'M', u'm'), + (0x1D67D, 'M', u'n'), + (0x1D67E, 'M', u'o'), + (0x1D67F, 'M', u'p'), + (0x1D680, 'M', u'q'), + (0x1D681, 'M', u'r'), + (0x1D682, 'M', u's'), + (0x1D683, 'M', u't'), + (0x1D684, 'M', u'u'), + (0x1D685, 'M', u'v'), + (0x1D686, 'M', u'w'), + (0x1D687, 'M', u'x'), + (0x1D688, 'M', u'y'), + (0x1D689, 'M', u'z'), + (0x1D68A, 'M', u'a'), + (0x1D68B, 'M', u'b'), + (0x1D68C, 'M', u'c'), + (0x1D68D, 'M', u'd'), + (0x1D68E, 'M', u'e'), + (0x1D68F, 'M', u'f'), + (0x1D690, 'M', u'g'), + (0x1D691, 'M', u'h'), + (0x1D692, 'M', u'i'), + (0x1D693, 'M', u'j'), + (0x1D694, 'M', u'k'), + (0x1D695, 'M', u'l'), + (0x1D696, 'M', u'm'), + (0x1D697, 'M', u'n'), + (0x1D698, 'M', u'o'), + (0x1D699, 'M', u'p'), + (0x1D69A, 'M', u'q'), + ] + +def _seg_60(): + return [ + (0x1D69B, 'M', u'r'), + (0x1D69C, 'M', u's'), + (0x1D69D, 'M', u't'), + (0x1D69E, 'M', u'u'), + (0x1D69F, 'M', u'v'), + (0x1D6A0, 'M', u'w'), + (0x1D6A1, 'M', u'x'), + (0x1D6A2, 'M', u'y'), + (0x1D6A3, 'M', u'z'), + (0x1D6A4, 'M', u'ı'), + (0x1D6A5, 'M', u'ȷ'), + (0x1D6A6, 'X'), + (0x1D6A8, 'M', u'α'), + (0x1D6A9, 'M', u'β'), + (0x1D6AA, 'M', u'γ'), + (0x1D6AB, 'M', u'δ'), + (0x1D6AC, 'M', u'ε'), + (0x1D6AD, 'M', u'ζ'), + (0x1D6AE, 'M', u'η'), + (0x1D6AF, 'M', u'θ'), + (0x1D6B0, 'M', u'ι'), + (0x1D6B1, 'M', u'κ'), + (0x1D6B2, 'M', u'λ'), + (0x1D6B3, 'M', u'μ'), + (0x1D6B4, 'M', u'ν'), + (0x1D6B5, 'M', u'ξ'), + (0x1D6B6, 'M', u'ο'), + (0x1D6B7, 'M', u'π'), + (0x1D6B8, 'M', u'ρ'), + (0x1D6B9, 'M', u'θ'), + (0x1D6BA, 'M', u'σ'), + (0x1D6BB, 'M', u'τ'), + (0x1D6BC, 'M', u'υ'), + (0x1D6BD, 'M', u'φ'), + (0x1D6BE, 'M', u'χ'), + (0x1D6BF, 'M', u'ψ'), + (0x1D6C0, 'M', u'ω'), + (0x1D6C1, 'M', u'∇'), + (0x1D6C2, 'M', u'α'), + (0x1D6C3, 'M', u'β'), + (0x1D6C4, 'M', u'γ'), + (0x1D6C5, 'M', u'δ'), + (0x1D6C6, 'M', u'ε'), + (0x1D6C7, 'M', u'ζ'), + (0x1D6C8, 'M', u'η'), + (0x1D6C9, 'M', u'θ'), + (0x1D6CA, 'M', u'ι'), + (0x1D6CB, 'M', u'κ'), + (0x1D6CC, 'M', u'λ'), + (0x1D6CD, 'M', u'μ'), + (0x1D6CE, 'M', u'ν'), + (0x1D6CF, 'M', u'ξ'), + (0x1D6D0, 'M', u'ο'), + (0x1D6D1, 'M', u'π'), + (0x1D6D2, 'M', u'ρ'), + (0x1D6D3, 'M', u'σ'), + (0x1D6D5, 'M', u'τ'), + (0x1D6D6, 'M', u'υ'), + (0x1D6D7, 'M', u'φ'), + (0x1D6D8, 'M', u'χ'), + (0x1D6D9, 'M', u'ψ'), + (0x1D6DA, 'M', u'ω'), + (0x1D6DB, 'M', u'∂'), + (0x1D6DC, 'M', u'ε'), + (0x1D6DD, 'M', u'θ'), + (0x1D6DE, 'M', u'κ'), + (0x1D6DF, 'M', u'φ'), + (0x1D6E0, 'M', u'ρ'), + (0x1D6E1, 'M', u'π'), + (0x1D6E2, 'M', u'α'), + (0x1D6E3, 'M', u'β'), + (0x1D6E4, 'M', u'γ'), + (0x1D6E5, 'M', u'δ'), + (0x1D6E6, 'M', u'ε'), + (0x1D6E7, 'M', u'ζ'), + (0x1D6E8, 'M', u'η'), + (0x1D6E9, 'M', u'θ'), + (0x1D6EA, 'M', u'ι'), + (0x1D6EB, 'M', u'κ'), + (0x1D6EC, 'M', u'λ'), + (0x1D6ED, 'M', u'μ'), + (0x1D6EE, 'M', u'ν'), + (0x1D6EF, 'M', u'ξ'), + (0x1D6F0, 'M', u'ο'), + (0x1D6F1, 'M', u'π'), + (0x1D6F2, 'M', u'ρ'), + (0x1D6F3, 'M', u'θ'), + (0x1D6F4, 'M', u'σ'), + (0x1D6F5, 'M', u'τ'), + (0x1D6F6, 'M', u'υ'), + (0x1D6F7, 'M', u'φ'), + (0x1D6F8, 'M', u'χ'), + (0x1D6F9, 'M', u'ψ'), + (0x1D6FA, 'M', u'ω'), + (0x1D6FB, 'M', u'∇'), + (0x1D6FC, 'M', u'α'), + (0x1D6FD, 'M', u'β'), + (0x1D6FE, 'M', u'γ'), + (0x1D6FF, 'M', u'δ'), + (0x1D700, 'M', u'ε'), + ] + +def _seg_61(): + return [ + (0x1D701, 'M', u'ζ'), + (0x1D702, 'M', u'η'), + (0x1D703, 'M', u'θ'), + (0x1D704, 'M', u'ι'), + (0x1D705, 'M', u'κ'), + (0x1D706, 'M', u'λ'), + (0x1D707, 'M', u'μ'), + (0x1D708, 'M', u'ν'), + (0x1D709, 'M', u'ξ'), + (0x1D70A, 'M', u'ο'), + (0x1D70B, 'M', u'π'), + (0x1D70C, 'M', u'ρ'), + (0x1D70D, 'M', u'σ'), + (0x1D70F, 'M', u'τ'), + (0x1D710, 'M', u'υ'), + (0x1D711, 'M', u'φ'), + (0x1D712, 'M', u'χ'), + (0x1D713, 'M', u'ψ'), + (0x1D714, 'M', u'ω'), + (0x1D715, 'M', u'∂'), + (0x1D716, 'M', u'ε'), + (0x1D717, 'M', u'θ'), + (0x1D718, 'M', u'κ'), + (0x1D719, 'M', u'φ'), + (0x1D71A, 'M', u'ρ'), + (0x1D71B, 'M', u'π'), + (0x1D71C, 'M', u'α'), + (0x1D71D, 'M', u'β'), + (0x1D71E, 'M', u'γ'), + (0x1D71F, 'M', u'δ'), + (0x1D720, 'M', u'ε'), + (0x1D721, 'M', u'ζ'), + (0x1D722, 'M', u'η'), + (0x1D723, 'M', u'θ'), + (0x1D724, 'M', u'ι'), + (0x1D725, 'M', u'κ'), + (0x1D726, 'M', u'λ'), + (0x1D727, 'M', u'μ'), + (0x1D728, 'M', u'ν'), + (0x1D729, 'M', u'ξ'), + (0x1D72A, 'M', u'ο'), + (0x1D72B, 'M', u'π'), + (0x1D72C, 'M', u'ρ'), + (0x1D72D, 'M', u'θ'), + (0x1D72E, 'M', u'σ'), + (0x1D72F, 'M', u'τ'), + (0x1D730, 'M', u'υ'), + (0x1D731, 'M', u'φ'), + (0x1D732, 'M', u'χ'), + (0x1D733, 'M', u'ψ'), + (0x1D734, 'M', u'ω'), + (0x1D735, 'M', u'∇'), + (0x1D736, 'M', u'α'), + (0x1D737, 'M', u'β'), + (0x1D738, 'M', u'γ'), + (0x1D739, 'M', u'δ'), + (0x1D73A, 'M', u'ε'), + (0x1D73B, 'M', u'ζ'), + (0x1D73C, 'M', u'η'), + (0x1D73D, 'M', u'θ'), + (0x1D73E, 'M', u'ι'), + (0x1D73F, 'M', u'κ'), + (0x1D740, 'M', u'λ'), + (0x1D741, 'M', u'μ'), + (0x1D742, 'M', u'ν'), + (0x1D743, 'M', u'ξ'), + (0x1D744, 'M', u'ο'), + (0x1D745, 'M', u'π'), + (0x1D746, 'M', u'ρ'), + (0x1D747, 'M', u'σ'), + (0x1D749, 'M', u'τ'), + (0x1D74A, 'M', u'υ'), + (0x1D74B, 'M', u'φ'), + (0x1D74C, 'M', u'χ'), + (0x1D74D, 'M', u'ψ'), + (0x1D74E, 'M', u'ω'), + (0x1D74F, 'M', u'∂'), + (0x1D750, 'M', u'ε'), + (0x1D751, 'M', u'θ'), + (0x1D752, 'M', u'κ'), + (0x1D753, 'M', u'φ'), + (0x1D754, 'M', u'ρ'), + (0x1D755, 'M', u'π'), + (0x1D756, 'M', u'α'), + (0x1D757, 'M', u'β'), + (0x1D758, 'M', u'γ'), + (0x1D759, 'M', u'δ'), + (0x1D75A, 'M', u'ε'), + (0x1D75B, 'M', u'ζ'), + (0x1D75C, 'M', u'η'), + (0x1D75D, 'M', u'θ'), + (0x1D75E, 'M', u'ι'), + (0x1D75F, 'M', u'κ'), + (0x1D760, 'M', u'λ'), + (0x1D761, 'M', u'μ'), + (0x1D762, 'M', u'ν'), + (0x1D763, 'M', u'ξ'), + (0x1D764, 'M', u'ο'), + (0x1D765, 'M', u'π'), + (0x1D766, 'M', u'ρ'), + ] + +def _seg_62(): + return [ + (0x1D767, 'M', u'θ'), + (0x1D768, 'M', u'σ'), + (0x1D769, 'M', u'τ'), + (0x1D76A, 'M', u'υ'), + (0x1D76B, 'M', u'φ'), + (0x1D76C, 'M', u'χ'), + (0x1D76D, 'M', u'ψ'), + (0x1D76E, 'M', u'ω'), + (0x1D76F, 'M', u'∇'), + (0x1D770, 'M', u'α'), + (0x1D771, 'M', u'β'), + (0x1D772, 'M', u'γ'), + (0x1D773, 'M', u'δ'), + (0x1D774, 'M', u'ε'), + (0x1D775, 'M', u'ζ'), + (0x1D776, 'M', u'η'), + (0x1D777, 'M', u'θ'), + (0x1D778, 'M', u'ι'), + (0x1D779, 'M', u'κ'), + (0x1D77A, 'M', u'λ'), + (0x1D77B, 'M', u'μ'), + (0x1D77C, 'M', u'ν'), + (0x1D77D, 'M', u'ξ'), + (0x1D77E, 'M', u'ο'), + (0x1D77F, 'M', u'π'), + (0x1D780, 'M', u'ρ'), + (0x1D781, 'M', u'σ'), + (0x1D783, 'M', u'τ'), + (0x1D784, 'M', u'υ'), + (0x1D785, 'M', u'φ'), + (0x1D786, 'M', u'χ'), + (0x1D787, 'M', u'ψ'), + (0x1D788, 'M', u'ω'), + (0x1D789, 'M', u'∂'), + (0x1D78A, 'M', u'ε'), + (0x1D78B, 'M', u'θ'), + (0x1D78C, 'M', u'κ'), + (0x1D78D, 'M', u'φ'), + (0x1D78E, 'M', u'ρ'), + (0x1D78F, 'M', u'π'), + (0x1D790, 'M', u'α'), + (0x1D791, 'M', u'β'), + (0x1D792, 'M', u'γ'), + (0x1D793, 'M', u'δ'), + (0x1D794, 'M', u'ε'), + (0x1D795, 'M', u'ζ'), + (0x1D796, 'M', u'η'), + (0x1D797, 'M', u'θ'), + (0x1D798, 'M', u'ι'), + (0x1D799, 'M', u'κ'), + (0x1D79A, 'M', u'λ'), + (0x1D79B, 'M', u'μ'), + (0x1D79C, 'M', u'ν'), + (0x1D79D, 'M', u'ξ'), + (0x1D79E, 'M', u'ο'), + (0x1D79F, 'M', u'π'), + (0x1D7A0, 'M', u'ρ'), + (0x1D7A1, 'M', u'θ'), + (0x1D7A2, 'M', u'σ'), + (0x1D7A3, 'M', u'τ'), + (0x1D7A4, 'M', u'υ'), + (0x1D7A5, 'M', u'φ'), + (0x1D7A6, 'M', u'χ'), + (0x1D7A7, 'M', u'ψ'), + (0x1D7A8, 'M', u'ω'), + (0x1D7A9, 'M', u'∇'), + (0x1D7AA, 'M', u'α'), + (0x1D7AB, 'M', u'β'), + (0x1D7AC, 'M', u'γ'), + (0x1D7AD, 'M', u'δ'), + (0x1D7AE, 'M', u'ε'), + (0x1D7AF, 'M', u'ζ'), + (0x1D7B0, 'M', u'η'), + (0x1D7B1, 'M', u'θ'), + (0x1D7B2, 'M', u'ι'), + (0x1D7B3, 'M', u'κ'), + (0x1D7B4, 'M', u'λ'), + (0x1D7B5, 'M', u'μ'), + (0x1D7B6, 'M', u'ν'), + (0x1D7B7, 'M', u'ξ'), + (0x1D7B8, 'M', u'ο'), + (0x1D7B9, 'M', u'π'), + (0x1D7BA, 'M', u'ρ'), + (0x1D7BB, 'M', u'σ'), + (0x1D7BD, 'M', u'τ'), + (0x1D7BE, 'M', u'υ'), + (0x1D7BF, 'M', u'φ'), + (0x1D7C0, 'M', u'χ'), + (0x1D7C1, 'M', u'ψ'), + (0x1D7C2, 'M', u'ω'), + (0x1D7C3, 'M', u'∂'), + (0x1D7C4, 'M', u'ε'), + (0x1D7C5, 'M', u'θ'), + (0x1D7C6, 'M', u'κ'), + (0x1D7C7, 'M', u'φ'), + (0x1D7C8, 'M', u'ρ'), + (0x1D7C9, 'M', u'π'), + (0x1D7CA, 'M', u'ϝ'), + (0x1D7CC, 'X'), + (0x1D7CE, 'M', u'0'), + ] + +def _seg_63(): + return [ + (0x1D7CF, 'M', u'1'), + (0x1D7D0, 'M', u'2'), + (0x1D7D1, 'M', u'3'), + (0x1D7D2, 'M', u'4'), + (0x1D7D3, 'M', u'5'), + (0x1D7D4, 'M', u'6'), + (0x1D7D5, 'M', u'7'), + (0x1D7D6, 'M', u'8'), + (0x1D7D7, 'M', u'9'), + (0x1D7D8, 'M', u'0'), + (0x1D7D9, 'M', u'1'), + (0x1D7DA, 'M', u'2'), + (0x1D7DB, 'M', u'3'), + (0x1D7DC, 'M', u'4'), + (0x1D7DD, 'M', u'5'), + (0x1D7DE, 'M', u'6'), + (0x1D7DF, 'M', u'7'), + (0x1D7E0, 'M', u'8'), + (0x1D7E1, 'M', u'9'), + (0x1D7E2, 'M', u'0'), + (0x1D7E3, 'M', u'1'), + (0x1D7E4, 'M', u'2'), + (0x1D7E5, 'M', u'3'), + (0x1D7E6, 'M', u'4'), + (0x1D7E7, 'M', u'5'), + (0x1D7E8, 'M', u'6'), + (0x1D7E9, 'M', u'7'), + (0x1D7EA, 'M', u'8'), + (0x1D7EB, 'M', u'9'), + (0x1D7EC, 'M', u'0'), + (0x1D7ED, 'M', u'1'), + (0x1D7EE, 'M', u'2'), + (0x1D7EF, 'M', u'3'), + (0x1D7F0, 'M', u'4'), + (0x1D7F1, 'M', u'5'), + (0x1D7F2, 'M', u'6'), + (0x1D7F3, 'M', u'7'), + (0x1D7F4, 'M', u'8'), + (0x1D7F5, 'M', u'9'), + (0x1D7F6, 'M', u'0'), + (0x1D7F7, 'M', u'1'), + (0x1D7F8, 'M', u'2'), + (0x1D7F9, 'M', u'3'), + (0x1D7FA, 'M', u'4'), + (0x1D7FB, 'M', u'5'), + (0x1D7FC, 'M', u'6'), + (0x1D7FD, 'M', u'7'), + (0x1D7FE, 'M', u'8'), + (0x1D7FF, 'M', u'9'), + (0x1D800, 'X'), + (0x1EE00, 'M', u'ا'), + (0x1EE01, 'M', u'ب'), + (0x1EE02, 'M', u'ج'), + (0x1EE03, 'M', u'د'), + (0x1EE04, 'X'), + (0x1EE05, 'M', u'و'), + (0x1EE06, 'M', u'ز'), + (0x1EE07, 'M', u'ح'), + (0x1EE08, 'M', u'ط'), + (0x1EE09, 'M', u'ي'), + (0x1EE0A, 'M', u'ك'), + (0x1EE0B, 'M', u'ل'), + (0x1EE0C, 'M', u'م'), + (0x1EE0D, 'M', u'ن'), + (0x1EE0E, 'M', u'س'), + (0x1EE0F, 'M', u'ع'), + (0x1EE10, 'M', u'ف'), + (0x1EE11, 'M', u'ص'), + (0x1EE12, 'M', u'ق'), + (0x1EE13, 'M', u'ر'), + (0x1EE14, 'M', u'ش'), + (0x1EE15, 'M', u'ت'), + (0x1EE16, 'M', u'ث'), + (0x1EE17, 'M', u'خ'), + (0x1EE18, 'M', u'ذ'), + (0x1EE19, 'M', u'ض'), + (0x1EE1A, 'M', u'ظ'), + (0x1EE1B, 'M', u'غ'), + (0x1EE1C, 'M', u'ٮ'), + (0x1EE1D, 'M', u'ں'), + (0x1EE1E, 'M', u'ڡ'), + (0x1EE1F, 'M', u'ٯ'), + (0x1EE20, 'X'), + (0x1EE21, 'M', u'ب'), + (0x1EE22, 'M', u'ج'), + (0x1EE23, 'X'), + (0x1EE24, 'M', u'ه'), + (0x1EE25, 'X'), + (0x1EE27, 'M', u'ح'), + (0x1EE28, 'X'), + (0x1EE29, 'M', u'ي'), + (0x1EE2A, 'M', u'ك'), + (0x1EE2B, 'M', u'ل'), + (0x1EE2C, 'M', u'م'), + (0x1EE2D, 'M', u'ن'), + (0x1EE2E, 'M', u'س'), + (0x1EE2F, 'M', u'ع'), + (0x1EE30, 'M', u'ف'), + (0x1EE31, 'M', u'ص'), + (0x1EE32, 'M', u'ق'), + ] + +def _seg_64(): + return [ + (0x1EE33, 'X'), + (0x1EE34, 'M', u'ش'), + (0x1EE35, 'M', u'ت'), + (0x1EE36, 'M', u'ث'), + (0x1EE37, 'M', u'خ'), + (0x1EE38, 'X'), + (0x1EE39, 'M', u'ض'), + (0x1EE3A, 'X'), + (0x1EE3B, 'M', u'غ'), + (0x1EE3C, 'X'), + (0x1EE42, 'M', u'ج'), + (0x1EE43, 'X'), + (0x1EE47, 'M', u'ح'), + (0x1EE48, 'X'), + (0x1EE49, 'M', u'ي'), + (0x1EE4A, 'X'), + (0x1EE4B, 'M', u'ل'), + (0x1EE4C, 'X'), + (0x1EE4D, 'M', u'ن'), + (0x1EE4E, 'M', u'س'), + (0x1EE4F, 'M', u'ع'), + (0x1EE50, 'X'), + (0x1EE51, 'M', u'ص'), + (0x1EE52, 'M', u'ق'), + (0x1EE53, 'X'), + (0x1EE54, 'M', u'ش'), + (0x1EE55, 'X'), + (0x1EE57, 'M', u'خ'), + (0x1EE58, 'X'), + (0x1EE59, 'M', u'ض'), + (0x1EE5A, 'X'), + (0x1EE5B, 'M', u'غ'), + (0x1EE5C, 'X'), + (0x1EE5D, 'M', u'ں'), + (0x1EE5E, 'X'), + (0x1EE5F, 'M', u'ٯ'), + (0x1EE60, 'X'), + (0x1EE61, 'M', u'ب'), + (0x1EE62, 'M', u'ج'), + (0x1EE63, 'X'), + (0x1EE64, 'M', u'ه'), + (0x1EE65, 'X'), + (0x1EE67, 'M', u'ح'), + (0x1EE68, 'M', u'ط'), + (0x1EE69, 'M', u'ي'), + (0x1EE6A, 'M', u'ك'), + (0x1EE6B, 'X'), + (0x1EE6C, 'M', u'م'), + (0x1EE6D, 'M', u'ن'), + (0x1EE6E, 'M', u'س'), + (0x1EE6F, 'M', u'ع'), + (0x1EE70, 'M', u'ف'), + (0x1EE71, 'M', u'ص'), + (0x1EE72, 'M', u'ق'), + (0x1EE73, 'X'), + (0x1EE74, 'M', u'ش'), + (0x1EE75, 'M', u'ت'), + (0x1EE76, 'M', u'ث'), + (0x1EE77, 'M', u'خ'), + (0x1EE78, 'X'), + (0x1EE79, 'M', u'ض'), + (0x1EE7A, 'M', u'ظ'), + (0x1EE7B, 'M', u'غ'), + (0x1EE7C, 'M', u'ٮ'), + (0x1EE7D, 'X'), + (0x1EE7E, 'M', u'ڡ'), + (0x1EE7F, 'X'), + (0x1EE80, 'M', u'ا'), + (0x1EE81, 'M', u'ب'), + (0x1EE82, 'M', u'ج'), + (0x1EE83, 'M', u'د'), + (0x1EE84, 'M', u'ه'), + (0x1EE85, 'M', u'و'), + (0x1EE86, 'M', u'ز'), + (0x1EE87, 'M', u'ح'), + (0x1EE88, 'M', u'ط'), + (0x1EE89, 'M', u'ي'), + (0x1EE8A, 'X'), + (0x1EE8B, 'M', u'ل'), + (0x1EE8C, 'M', u'م'), + (0x1EE8D, 'M', u'ن'), + (0x1EE8E, 'M', u'س'), + (0x1EE8F, 'M', u'ع'), + (0x1EE90, 'M', u'ف'), + (0x1EE91, 'M', u'ص'), + (0x1EE92, 'M', u'ق'), + (0x1EE93, 'M', u'ر'), + (0x1EE94, 'M', u'ش'), + (0x1EE95, 'M', u'ت'), + (0x1EE96, 'M', u'ث'), + (0x1EE97, 'M', u'خ'), + (0x1EE98, 'M', u'ذ'), + (0x1EE99, 'M', u'ض'), + (0x1EE9A, 'M', u'ظ'), + (0x1EE9B, 'M', u'غ'), + (0x1EE9C, 'X'), + (0x1EEA1, 'M', u'ب'), + (0x1EEA2, 'M', u'ج'), + (0x1EEA3, 'M', u'د'), + (0x1EEA4, 'X'), + ] + +def _seg_65(): + return [ + (0x1EEA5, 'M', u'و'), + (0x1EEA6, 'M', u'ز'), + (0x1EEA7, 'M', u'ح'), + (0x1EEA8, 'M', u'ط'), + (0x1EEA9, 'M', u'ي'), + (0x1EEAA, 'X'), + (0x1EEAB, 'M', u'ل'), + (0x1EEAC, 'M', u'م'), + (0x1EEAD, 'M', u'ن'), + (0x1EEAE, 'M', u'س'), + (0x1EEAF, 'M', u'ع'), + (0x1EEB0, 'M', u'ف'), + (0x1EEB1, 'M', u'ص'), + (0x1EEB2, 'M', u'ق'), + (0x1EEB3, 'M', u'ر'), + (0x1EEB4, 'M', u'ش'), + (0x1EEB5, 'M', u'ت'), + (0x1EEB6, 'M', u'ث'), + (0x1EEB7, 'M', u'خ'), + (0x1EEB8, 'M', u'ذ'), + (0x1EEB9, 'M', u'ض'), + (0x1EEBA, 'M', u'ظ'), + (0x1EEBB, 'M', u'غ'), + (0x1EEBC, 'X'), + (0x1EEF0, 'V'), + (0x1EEF2, 'X'), + (0x1F000, 'V'), + (0x1F02C, 'X'), + (0x1F030, 'V'), + (0x1F094, 'X'), + (0x1F0A0, 'V'), + (0x1F0AF, 'X'), + (0x1F0B1, 'V'), + (0x1F0BF, 'X'), + (0x1F0C1, 'V'), + (0x1F0D0, 'X'), + (0x1F0D1, 'V'), + (0x1F0E0, 'X'), + (0x1F101, '3', u'0,'), + (0x1F102, '3', u'1,'), + (0x1F103, '3', u'2,'), + (0x1F104, '3', u'3,'), + (0x1F105, '3', u'4,'), + (0x1F106, '3', u'5,'), + (0x1F107, '3', u'6,'), + (0x1F108, '3', u'7,'), + (0x1F109, '3', u'8,'), + (0x1F10A, '3', u'9,'), + (0x1F10B, 'X'), + (0x1F110, '3', u'(a)'), + (0x1F111, '3', u'(b)'), + (0x1F112, '3', u'(c)'), + (0x1F113, '3', u'(d)'), + (0x1F114, '3', u'(e)'), + (0x1F115, '3', u'(f)'), + (0x1F116, '3', u'(g)'), + (0x1F117, '3', u'(h)'), + (0x1F118, '3', u'(i)'), + (0x1F119, '3', u'(j)'), + (0x1F11A, '3', u'(k)'), + (0x1F11B, '3', u'(l)'), + (0x1F11C, '3', u'(m)'), + (0x1F11D, '3', u'(n)'), + (0x1F11E, '3', u'(o)'), + (0x1F11F, '3', u'(p)'), + (0x1F120, '3', u'(q)'), + (0x1F121, '3', u'(r)'), + (0x1F122, '3', u'(s)'), + (0x1F123, '3', u'(t)'), + (0x1F124, '3', u'(u)'), + (0x1F125, '3', u'(v)'), + (0x1F126, '3', u'(w)'), + (0x1F127, '3', u'(x)'), + (0x1F128, '3', u'(y)'), + (0x1F129, '3', u'(z)'), + (0x1F12A, 'M', u'〔s〕'), + (0x1F12B, 'M', u'c'), + (0x1F12C, 'M', u'r'), + (0x1F12D, 'M', u'cd'), + (0x1F12E, 'M', u'wz'), + (0x1F12F, 'X'), + (0x1F130, 'M', u'a'), + (0x1F131, 'M', u'b'), + (0x1F132, 'M', u'c'), + (0x1F133, 'M', u'd'), + (0x1F134, 'M', u'e'), + (0x1F135, 'M', u'f'), + (0x1F136, 'M', u'g'), + (0x1F137, 'M', u'h'), + (0x1F138, 'M', u'i'), + (0x1F139, 'M', u'j'), + (0x1F13A, 'M', u'k'), + (0x1F13B, 'M', u'l'), + (0x1F13C, 'M', u'm'), + (0x1F13D, 'M', u'n'), + (0x1F13E, 'M', u'o'), + (0x1F13F, 'M', u'p'), + (0x1F140, 'M', u'q'), + (0x1F141, 'M', u'r'), + (0x1F142, 'M', u's'), + ] + +def _seg_66(): + return [ + (0x1F143, 'M', u't'), + (0x1F144, 'M', u'u'), + (0x1F145, 'M', u'v'), + (0x1F146, 'M', u'w'), + (0x1F147, 'M', u'x'), + (0x1F148, 'M', u'y'), + (0x1F149, 'M', u'z'), + (0x1F14A, 'M', u'hv'), + (0x1F14B, 'M', u'mv'), + (0x1F14C, 'M', u'sd'), + (0x1F14D, 'M', u'ss'), + (0x1F14E, 'M', u'ppv'), + (0x1F14F, 'M', u'wc'), + (0x1F150, 'V'), + (0x1F16A, 'M', u'mc'), + (0x1F16B, 'M', u'md'), + (0x1F16C, 'X'), + (0x1F170, 'V'), + (0x1F190, 'M', u'dj'), + (0x1F191, 'V'), + (0x1F19B, 'X'), + (0x1F1E6, 'V'), + (0x1F200, 'M', u'ほか'), + (0x1F201, 'M', u'ココ'), + (0x1F202, 'M', u'サ'), + (0x1F203, 'X'), + (0x1F210, 'M', u'手'), + (0x1F211, 'M', u'字'), + (0x1F212, 'M', u'双'), + (0x1F213, 'M', u'デ'), + (0x1F214, 'M', u'二'), + (0x1F215, 'M', u'多'), + (0x1F216, 'M', u'解'), + (0x1F217, 'M', u'天'), + (0x1F218, 'M', u'交'), + (0x1F219, 'M', u'映'), + (0x1F21A, 'M', u'無'), + (0x1F21B, 'M', u'料'), + (0x1F21C, 'M', u'前'), + (0x1F21D, 'M', u'後'), + (0x1F21E, 'M', u'再'), + (0x1F21F, 'M', u'新'), + (0x1F220, 'M', u'初'), + (0x1F221, 'M', u'終'), + (0x1F222, 'M', u'生'), + (0x1F223, 'M', u'販'), + (0x1F224, 'M', u'声'), + (0x1F225, 'M', u'吹'), + (0x1F226, 'M', u'演'), + (0x1F227, 'M', u'投'), + (0x1F228, 'M', u'捕'), + (0x1F229, 'M', u'一'), + (0x1F22A, 'M', u'三'), + (0x1F22B, 'M', u'遊'), + (0x1F22C, 'M', u'左'), + (0x1F22D, 'M', u'中'), + (0x1F22E, 'M', u'右'), + (0x1F22F, 'M', u'指'), + (0x1F230, 'M', u'走'), + (0x1F231, 'M', u'打'), + (0x1F232, 'M', u'禁'), + (0x1F233, 'M', u'空'), + (0x1F234, 'M', u'合'), + (0x1F235, 'M', u'満'), + (0x1F236, 'M', u'有'), + (0x1F237, 'M', u'月'), + (0x1F238, 'M', u'申'), + (0x1F239, 'M', u'割'), + (0x1F23A, 'M', u'営'), + (0x1F23B, 'X'), + (0x1F240, 'M', u'〔本〕'), + (0x1F241, 'M', u'〔三〕'), + (0x1F242, 'M', u'〔二〕'), + (0x1F243, 'M', u'〔安〕'), + (0x1F244, 'M', u'〔点〕'), + (0x1F245, 'M', u'〔打〕'), + (0x1F246, 'M', u'〔盗〕'), + (0x1F247, 'M', u'〔勝〕'), + (0x1F248, 'M', u'〔敗〕'), + (0x1F249, 'X'), + (0x1F250, 'M', u'得'), + (0x1F251, 'M', u'可'), + (0x1F252, 'X'), + (0x1F300, 'V'), + (0x1F321, 'X'), + (0x1F330, 'V'), + (0x1F336, 'X'), + (0x1F337, 'V'), + (0x1F37D, 'X'), + (0x1F380, 'V'), + (0x1F394, 'X'), + (0x1F3A0, 'V'), + (0x1F3C5, 'X'), + (0x1F3C6, 'V'), + (0x1F3CB, 'X'), + (0x1F3E0, 'V'), + (0x1F3F1, 'X'), + (0x1F400, 'V'), + (0x1F43F, 'X'), + (0x1F440, 'V'), + ] + +def _seg_67(): + return [ + (0x1F441, 'X'), + (0x1F442, 'V'), + (0x1F4F8, 'X'), + (0x1F4F9, 'V'), + (0x1F4FD, 'X'), + (0x1F500, 'V'), + (0x1F53E, 'X'), + (0x1F540, 'V'), + (0x1F544, 'X'), + (0x1F550, 'V'), + (0x1F568, 'X'), + (0x1F5FB, 'V'), + (0x1F641, 'X'), + (0x1F645, 'V'), + (0x1F650, 'X'), + (0x1F680, 'V'), + (0x1F6C6, 'X'), + (0x1F700, 'V'), + (0x1F774, 'X'), + (0x20000, 'V'), + (0x2A6D7, 'X'), + (0x2A700, 'V'), + (0x2B735, 'X'), + (0x2B740, 'V'), + (0x2B81E, 'X'), + (0x2F800, 'M', u'丽'), + (0x2F801, 'M', u'丸'), + (0x2F802, 'M', u'乁'), + (0x2F803, 'M', u'𠄢'), + (0x2F804, 'M', u'你'), + (0x2F805, 'M', u'侮'), + (0x2F806, 'M', u'侻'), + (0x2F807, 'M', u'倂'), + (0x2F808, 'M', u'偺'), + (0x2F809, 'M', u'備'), + (0x2F80A, 'M', u'僧'), + (0x2F80B, 'M', u'像'), + (0x2F80C, 'M', u'㒞'), + (0x2F80D, 'M', u'𠘺'), + (0x2F80E, 'M', u'免'), + (0x2F80F, 'M', u'兔'), + (0x2F810, 'M', u'兤'), + (0x2F811, 'M', u'具'), + (0x2F812, 'M', u'𠔜'), + (0x2F813, 'M', u'㒹'), + (0x2F814, 'M', u'內'), + (0x2F815, 'M', u'再'), + (0x2F816, 'M', u'𠕋'), + (0x2F817, 'M', u'冗'), + (0x2F818, 'M', u'冤'), + (0x2F819, 'M', u'仌'), + (0x2F81A, 'M', u'冬'), + (0x2F81B, 'M', u'况'), + (0x2F81C, 'M', u'𩇟'), + (0x2F81D, 'M', u'凵'), + (0x2F81E, 'M', u'刃'), + (0x2F81F, 'M', u'㓟'), + (0x2F820, 'M', u'刻'), + (0x2F821, 'M', u'剆'), + (0x2F822, 'M', u'割'), + (0x2F823, 'M', u'剷'), + (0x2F824, 'M', u'㔕'), + (0x2F825, 'M', u'勇'), + (0x2F826, 'M', u'勉'), + (0x2F827, 'M', u'勤'), + (0x2F828, 'M', u'勺'), + (0x2F829, 'M', u'包'), + (0x2F82A, 'M', u'匆'), + (0x2F82B, 'M', u'北'), + (0x2F82C, 'M', u'卉'), + (0x2F82D, 'M', u'卑'), + (0x2F82E, 'M', u'博'), + (0x2F82F, 'M', u'即'), + (0x2F830, 'M', u'卽'), + (0x2F831, 'M', u'卿'), + (0x2F834, 'M', u'𠨬'), + (0x2F835, 'M', u'灰'), + (0x2F836, 'M', u'及'), + (0x2F837, 'M', u'叟'), + (0x2F838, 'M', u'𠭣'), + (0x2F839, 'M', u'叫'), + (0x2F83A, 'M', u'叱'), + (0x2F83B, 'M', u'吆'), + (0x2F83C, 'M', u'咞'), + (0x2F83D, 'M', u'吸'), + (0x2F83E, 'M', u'呈'), + (0x2F83F, 'M', u'周'), + (0x2F840, 'M', u'咢'), + (0x2F841, 'M', u'哶'), + (0x2F842, 'M', u'唐'), + (0x2F843, 'M', u'啓'), + (0x2F844, 'M', u'啣'), + (0x2F845, 'M', u'善'), + (0x2F847, 'M', u'喙'), + (0x2F848, 'M', u'喫'), + (0x2F849, 'M', u'喳'), + (0x2F84A, 'M', u'嗂'), + (0x2F84B, 'M', u'圖'), + (0x2F84C, 'M', u'嘆'), + (0x2F84D, 'M', u'圗'), + ] + +def _seg_68(): + return [ + (0x2F84E, 'M', u'噑'), + (0x2F84F, 'M', u'噴'), + (0x2F850, 'M', u'切'), + (0x2F851, 'M', u'壮'), + (0x2F852, 'M', u'城'), + (0x2F853, 'M', u'埴'), + (0x2F854, 'M', u'堍'), + (0x2F855, 'M', u'型'), + (0x2F856, 'M', u'堲'), + (0x2F857, 'M', u'報'), + (0x2F858, 'M', u'墬'), + (0x2F859, 'M', u'𡓤'), + (0x2F85A, 'M', u'売'), + (0x2F85B, 'M', u'壷'), + (0x2F85C, 'M', u'夆'), + (0x2F85D, 'M', u'多'), + (0x2F85E, 'M', u'夢'), + (0x2F85F, 'M', u'奢'), + (0x2F860, 'M', u'𡚨'), + (0x2F861, 'M', u'𡛪'), + (0x2F862, 'M', u'姬'), + (0x2F863, 'M', u'娛'), + (0x2F864, 'M', u'娧'), + (0x2F865, 'M', u'姘'), + (0x2F866, 'M', u'婦'), + (0x2F867, 'M', u'㛮'), + (0x2F868, 'X'), + (0x2F869, 'M', u'嬈'), + (0x2F86A, 'M', u'嬾'), + (0x2F86C, 'M', u'𡧈'), + (0x2F86D, 'M', u'寃'), + (0x2F86E, 'M', u'寘'), + (0x2F86F, 'M', u'寧'), + (0x2F870, 'M', u'寳'), + (0x2F871, 'M', u'𡬘'), + (0x2F872, 'M', u'寿'), + (0x2F873, 'M', u'将'), + (0x2F874, 'X'), + (0x2F875, 'M', u'尢'), + (0x2F876, 'M', u'㞁'), + (0x2F877, 'M', u'屠'), + (0x2F878, 'M', u'屮'), + (0x2F879, 'M', u'峀'), + (0x2F87A, 'M', u'岍'), + (0x2F87B, 'M', u'𡷤'), + (0x2F87C, 'M', u'嵃'), + (0x2F87D, 'M', u'𡷦'), + (0x2F87E, 'M', u'嵮'), + (0x2F87F, 'M', u'嵫'), + (0x2F880, 'M', u'嵼'), + (0x2F881, 'M', u'巡'), + (0x2F882, 'M', u'巢'), + (0x2F883, 'M', u'㠯'), + (0x2F884, 'M', u'巽'), + (0x2F885, 'M', u'帨'), + (0x2F886, 'M', u'帽'), + (0x2F887, 'M', u'幩'), + (0x2F888, 'M', u'㡢'), + (0x2F889, 'M', u'𢆃'), + (0x2F88A, 'M', u'㡼'), + (0x2F88B, 'M', u'庰'), + (0x2F88C, 'M', u'庳'), + (0x2F88D, 'M', u'庶'), + (0x2F88E, 'M', u'廊'), + (0x2F88F, 'M', u'𪎒'), + (0x2F890, 'M', u'廾'), + (0x2F891, 'M', u'𢌱'), + (0x2F893, 'M', u'舁'), + (0x2F894, 'M', u'弢'), + (0x2F896, 'M', u'㣇'), + (0x2F897, 'M', u'𣊸'), + (0x2F898, 'M', u'𦇚'), + (0x2F899, 'M', u'形'), + (0x2F89A, 'M', u'彫'), + (0x2F89B, 'M', u'㣣'), + (0x2F89C, 'M', u'徚'), + (0x2F89D, 'M', u'忍'), + (0x2F89E, 'M', u'志'), + (0x2F89F, 'M', u'忹'), + (0x2F8A0, 'M', u'悁'), + (0x2F8A1, 'M', u'㤺'), + (0x2F8A2, 'M', u'㤜'), + (0x2F8A3, 'M', u'悔'), + (0x2F8A4, 'M', u'𢛔'), + (0x2F8A5, 'M', u'惇'), + (0x2F8A6, 'M', u'慈'), + (0x2F8A7, 'M', u'慌'), + (0x2F8A8, 'M', u'慎'), + (0x2F8A9, 'M', u'慌'), + (0x2F8AA, 'M', u'慺'), + (0x2F8AB, 'M', u'憎'), + (0x2F8AC, 'M', u'憲'), + (0x2F8AD, 'M', u'憤'), + (0x2F8AE, 'M', u'憯'), + (0x2F8AF, 'M', u'懞'), + (0x2F8B0, 'M', u'懲'), + (0x2F8B1, 'M', u'懶'), + (0x2F8B2, 'M', u'成'), + (0x2F8B3, 'M', u'戛'), + (0x2F8B4, 'M', u'扝'), + ] + +def _seg_69(): + return [ + (0x2F8B5, 'M', u'抱'), + (0x2F8B6, 'M', u'拔'), + (0x2F8B7, 'M', u'捐'), + (0x2F8B8, 'M', u'𢬌'), + (0x2F8B9, 'M', u'挽'), + (0x2F8BA, 'M', u'拼'), + (0x2F8BB, 'M', u'捨'), + (0x2F8BC, 'M', u'掃'), + (0x2F8BD, 'M', u'揤'), + (0x2F8BE, 'M', u'𢯱'), + (0x2F8BF, 'M', u'搢'), + (0x2F8C0, 'M', u'揅'), + (0x2F8C1, 'M', u'掩'), + (0x2F8C2, 'M', u'㨮'), + (0x2F8C3, 'M', u'摩'), + (0x2F8C4, 'M', u'摾'), + (0x2F8C5, 'M', u'撝'), + (0x2F8C6, 'M', u'摷'), + (0x2F8C7, 'M', u'㩬'), + (0x2F8C8, 'M', u'敏'), + (0x2F8C9, 'M', u'敬'), + (0x2F8CA, 'M', u'𣀊'), + (0x2F8CB, 'M', u'旣'), + (0x2F8CC, 'M', u'書'), + (0x2F8CD, 'M', u'晉'), + (0x2F8CE, 'M', u'㬙'), + (0x2F8CF, 'M', u'暑'), + (0x2F8D0, 'M', u'㬈'), + (0x2F8D1, 'M', u'㫤'), + (0x2F8D2, 'M', u'冒'), + (0x2F8D3, 'M', u'冕'), + (0x2F8D4, 'M', u'最'), + (0x2F8D5, 'M', u'暜'), + (0x2F8D6, 'M', u'肭'), + (0x2F8D7, 'M', u'䏙'), + (0x2F8D8, 'M', u'朗'), + (0x2F8D9, 'M', u'望'), + (0x2F8DA, 'M', u'朡'), + (0x2F8DB, 'M', u'杞'), + (0x2F8DC, 'M', u'杓'), + (0x2F8DD, 'M', u'𣏃'), + (0x2F8DE, 'M', u'㭉'), + (0x2F8DF, 'M', u'柺'), + (0x2F8E0, 'M', u'枅'), + (0x2F8E1, 'M', u'桒'), + (0x2F8E2, 'M', u'梅'), + (0x2F8E3, 'M', u'𣑭'), + (0x2F8E4, 'M', u'梎'), + (0x2F8E5, 'M', u'栟'), + (0x2F8E6, 'M', u'椔'), + (0x2F8E7, 'M', u'㮝'), + (0x2F8E8, 'M', u'楂'), + (0x2F8E9, 'M', u'榣'), + (0x2F8EA, 'M', u'槪'), + (0x2F8EB, 'M', u'檨'), + (0x2F8EC, 'M', u'𣚣'), + (0x2F8ED, 'M', u'櫛'), + (0x2F8EE, 'M', u'㰘'), + (0x2F8EF, 'M', u'次'), + (0x2F8F0, 'M', u'𣢧'), + (0x2F8F1, 'M', u'歔'), + (0x2F8F2, 'M', u'㱎'), + (0x2F8F3, 'M', u'歲'), + (0x2F8F4, 'M', u'殟'), + (0x2F8F5, 'M', u'殺'), + (0x2F8F6, 'M', u'殻'), + (0x2F8F7, 'M', u'𣪍'), + (0x2F8F8, 'M', u'𡴋'), + (0x2F8F9, 'M', u'𣫺'), + (0x2F8FA, 'M', u'汎'), + (0x2F8FB, 'M', u'𣲼'), + (0x2F8FC, 'M', u'沿'), + (0x2F8FD, 'M', u'泍'), + (0x2F8FE, 'M', u'汧'), + (0x2F8FF, 'M', u'洖'), + (0x2F900, 'M', u'派'), + (0x2F901, 'M', u'海'), + (0x2F902, 'M', u'流'), + (0x2F903, 'M', u'浩'), + (0x2F904, 'M', u'浸'), + (0x2F905, 'M', u'涅'), + (0x2F906, 'M', u'𣴞'), + (0x2F907, 'M', u'洴'), + (0x2F908, 'M', u'港'), + (0x2F909, 'M', u'湮'), + (0x2F90A, 'M', u'㴳'), + (0x2F90B, 'M', u'滋'), + (0x2F90C, 'M', u'滇'), + (0x2F90D, 'M', u'𣻑'), + (0x2F90E, 'M', u'淹'), + (0x2F90F, 'M', u'潮'), + (0x2F910, 'M', u'𣽞'), + (0x2F911, 'M', u'𣾎'), + (0x2F912, 'M', u'濆'), + (0x2F913, 'M', u'瀹'), + (0x2F914, 'M', u'瀞'), + (0x2F915, 'M', u'瀛'), + (0x2F916, 'M', u'㶖'), + (0x2F917, 'M', u'灊'), + (0x2F918, 'M', u'災'), + ] + +def _seg_70(): + return [ + (0x2F919, 'M', u'灷'), + (0x2F91A, 'M', u'炭'), + (0x2F91B, 'M', u'𠔥'), + (0x2F91C, 'M', u'煅'), + (0x2F91D, 'M', u'𤉣'), + (0x2F91E, 'M', u'熜'), + (0x2F91F, 'X'), + (0x2F920, 'M', u'爨'), + (0x2F921, 'M', u'爵'), + (0x2F922, 'M', u'牐'), + (0x2F923, 'M', u'𤘈'), + (0x2F924, 'M', u'犀'), + (0x2F925, 'M', u'犕'), + (0x2F926, 'M', u'𤜵'), + (0x2F927, 'M', u'𤠔'), + (0x2F928, 'M', u'獺'), + (0x2F929, 'M', u'王'), + (0x2F92A, 'M', u'㺬'), + (0x2F92B, 'M', u'玥'), + (0x2F92C, 'M', u'㺸'), + (0x2F92E, 'M', u'瑇'), + (0x2F92F, 'M', u'瑜'), + (0x2F930, 'M', u'瑱'), + (0x2F931, 'M', u'璅'), + (0x2F932, 'M', u'瓊'), + (0x2F933, 'M', u'㼛'), + (0x2F934, 'M', u'甤'), + (0x2F935, 'M', u'𤰶'), + (0x2F936, 'M', u'甾'), + (0x2F937, 'M', u'𤲒'), + (0x2F938, 'M', u'異'), + (0x2F939, 'M', u'𢆟'), + (0x2F93A, 'M', u'瘐'), + (0x2F93B, 'M', u'𤾡'), + (0x2F93C, 'M', u'𤾸'), + (0x2F93D, 'M', u'𥁄'), + (0x2F93E, 'M', u'㿼'), + (0x2F93F, 'M', u'䀈'), + (0x2F940, 'M', u'直'), + (0x2F941, 'M', u'𥃳'), + (0x2F942, 'M', u'𥃲'), + (0x2F943, 'M', u'𥄙'), + (0x2F944, 'M', u'𥄳'), + (0x2F945, 'M', u'眞'), + (0x2F946, 'M', u'真'), + (0x2F948, 'M', u'睊'), + (0x2F949, 'M', u'䀹'), + (0x2F94A, 'M', u'瞋'), + (0x2F94B, 'M', u'䁆'), + (0x2F94C, 'M', u'䂖'), + (0x2F94D, 'M', u'𥐝'), + (0x2F94E, 'M', u'硎'), + (0x2F94F, 'M', u'碌'), + (0x2F950, 'M', u'磌'), + (0x2F951, 'M', u'䃣'), + (0x2F952, 'M', u'𥘦'), + (0x2F953, 'M', u'祖'), + (0x2F954, 'M', u'𥚚'), + (0x2F955, 'M', u'𥛅'), + (0x2F956, 'M', u'福'), + (0x2F957, 'M', u'秫'), + (0x2F958, 'M', u'䄯'), + (0x2F959, 'M', u'穀'), + (0x2F95A, 'M', u'穊'), + (0x2F95B, 'M', u'穏'), + (0x2F95C, 'M', u'𥥼'), + (0x2F95D, 'M', u'𥪧'), + (0x2F95F, 'X'), + (0x2F960, 'M', u'䈂'), + (0x2F961, 'M', u'𥮫'), + (0x2F962, 'M', u'篆'), + (0x2F963, 'M', u'築'), + (0x2F964, 'M', u'䈧'), + (0x2F965, 'M', u'𥲀'), + (0x2F966, 'M', u'糒'), + (0x2F967, 'M', u'䊠'), + (0x2F968, 'M', u'糨'), + (0x2F969, 'M', u'糣'), + (0x2F96A, 'M', u'紀'), + (0x2F96B, 'M', u'𥾆'), + (0x2F96C, 'M', u'絣'), + (0x2F96D, 'M', u'䌁'), + (0x2F96E, 'M', u'緇'), + (0x2F96F, 'M', u'縂'), + (0x2F970, 'M', u'繅'), + (0x2F971, 'M', u'䌴'), + (0x2F972, 'M', u'𦈨'), + (0x2F973, 'M', u'𦉇'), + (0x2F974, 'M', u'䍙'), + (0x2F975, 'M', u'𦋙'), + (0x2F976, 'M', u'罺'), + (0x2F977, 'M', u'𦌾'), + (0x2F978, 'M', u'羕'), + (0x2F979, 'M', u'翺'), + (0x2F97A, 'M', u'者'), + (0x2F97B, 'M', u'𦓚'), + (0x2F97C, 'M', u'𦔣'), + (0x2F97D, 'M', u'聠'), + (0x2F97E, 'M', u'𦖨'), + (0x2F97F, 'M', u'聰'), + ] + +def _seg_71(): + return [ + (0x2F980, 'M', u'𣍟'), + (0x2F981, 'M', u'䏕'), + (0x2F982, 'M', u'育'), + (0x2F983, 'M', u'脃'), + (0x2F984, 'M', u'䐋'), + (0x2F985, 'M', u'脾'), + (0x2F986, 'M', u'媵'), + (0x2F987, 'M', u'𦞧'), + (0x2F988, 'M', u'𦞵'), + (0x2F989, 'M', u'𣎓'), + (0x2F98A, 'M', u'𣎜'), + (0x2F98B, 'M', u'舁'), + (0x2F98C, 'M', u'舄'), + (0x2F98D, 'M', u'辞'), + (0x2F98E, 'M', u'䑫'), + (0x2F98F, 'M', u'芑'), + (0x2F990, 'M', u'芋'), + (0x2F991, 'M', u'芝'), + (0x2F992, 'M', u'劳'), + (0x2F993, 'M', u'花'), + (0x2F994, 'M', u'芳'), + (0x2F995, 'M', u'芽'), + (0x2F996, 'M', u'苦'), + (0x2F997, 'M', u'𦬼'), + (0x2F998, 'M', u'若'), + (0x2F999, 'M', u'茝'), + (0x2F99A, 'M', u'荣'), + (0x2F99B, 'M', u'莭'), + (0x2F99C, 'M', u'茣'), + (0x2F99D, 'M', u'莽'), + (0x2F99E, 'M', u'菧'), + (0x2F99F, 'M', u'著'), + (0x2F9A0, 'M', u'荓'), + (0x2F9A1, 'M', u'菊'), + (0x2F9A2, 'M', u'菌'), + (0x2F9A3, 'M', u'菜'), + (0x2F9A4, 'M', u'𦰶'), + (0x2F9A5, 'M', u'𦵫'), + (0x2F9A6, 'M', u'𦳕'), + (0x2F9A7, 'M', u'䔫'), + (0x2F9A8, 'M', u'蓱'), + (0x2F9A9, 'M', u'蓳'), + (0x2F9AA, 'M', u'蔖'), + (0x2F9AB, 'M', u'𧏊'), + (0x2F9AC, 'M', u'蕤'), + (0x2F9AD, 'M', u'𦼬'), + (0x2F9AE, 'M', u'䕝'), + (0x2F9AF, 'M', u'䕡'), + (0x2F9B0, 'M', u'𦾱'), + (0x2F9B1, 'M', u'𧃒'), + (0x2F9B2, 'M', u'䕫'), + (0x2F9B3, 'M', u'虐'), + (0x2F9B4, 'M', u'虜'), + (0x2F9B5, 'M', u'虧'), + (0x2F9B6, 'M', u'虩'), + (0x2F9B7, 'M', u'蚩'), + (0x2F9B8, 'M', u'蚈'), + (0x2F9B9, 'M', u'蜎'), + (0x2F9BA, 'M', u'蛢'), + (0x2F9BB, 'M', u'蝹'), + (0x2F9BC, 'M', u'蜨'), + (0x2F9BD, 'M', u'蝫'), + (0x2F9BE, 'M', u'螆'), + (0x2F9BF, 'X'), + (0x2F9C0, 'M', u'蟡'), + (0x2F9C1, 'M', u'蠁'), + (0x2F9C2, 'M', u'䗹'), + (0x2F9C3, 'M', u'衠'), + (0x2F9C4, 'M', u'衣'), + (0x2F9C5, 'M', u'𧙧'), + (0x2F9C6, 'M', u'裗'), + (0x2F9C7, 'M', u'裞'), + (0x2F9C8, 'M', u'䘵'), + (0x2F9C9, 'M', u'裺'), + (0x2F9CA, 'M', u'㒻'), + (0x2F9CB, 'M', u'𧢮'), + (0x2F9CC, 'M', u'𧥦'), + (0x2F9CD, 'M', u'䚾'), + (0x2F9CE, 'M', u'䛇'), + (0x2F9CF, 'M', u'誠'), + (0x2F9D0, 'M', u'諭'), + (0x2F9D1, 'M', u'變'), + (0x2F9D2, 'M', u'豕'), + (0x2F9D3, 'M', u'𧲨'), + (0x2F9D4, 'M', u'貫'), + (0x2F9D5, 'M', u'賁'), + (0x2F9D6, 'M', u'贛'), + (0x2F9D7, 'M', u'起'), + (0x2F9D8, 'M', u'𧼯'), + (0x2F9D9, 'M', u'𠠄'), + (0x2F9DA, 'M', u'跋'), + (0x2F9DB, 'M', u'趼'), + (0x2F9DC, 'M', u'跰'), + (0x2F9DD, 'M', u'𠣞'), + (0x2F9DE, 'M', u'軔'), + (0x2F9DF, 'M', u'輸'), + (0x2F9E0, 'M', u'𨗒'), + (0x2F9E1, 'M', u'𨗭'), + (0x2F9E2, 'M', u'邔'), + (0x2F9E3, 'M', u'郱'), + ] + +def _seg_72(): + return [ + (0x2F9E4, 'M', u'鄑'), + (0x2F9E5, 'M', u'𨜮'), + (0x2F9E6, 'M', u'鄛'), + (0x2F9E7, 'M', u'鈸'), + (0x2F9E8, 'M', u'鋗'), + (0x2F9E9, 'M', u'鋘'), + (0x2F9EA, 'M', u'鉼'), + (0x2F9EB, 'M', u'鏹'), + (0x2F9EC, 'M', u'鐕'), + (0x2F9ED, 'M', u'𨯺'), + (0x2F9EE, 'M', u'開'), + (0x2F9EF, 'M', u'䦕'), + (0x2F9F0, 'M', u'閷'), + (0x2F9F1, 'M', u'𨵷'), + (0x2F9F2, 'M', u'䧦'), + (0x2F9F3, 'M', u'雃'), + (0x2F9F4, 'M', u'嶲'), + (0x2F9F5, 'M', u'霣'), + (0x2F9F6, 'M', u'𩅅'), + (0x2F9F7, 'M', u'𩈚'), + (0x2F9F8, 'M', u'䩮'), + (0x2F9F9, 'M', u'䩶'), + (0x2F9FA, 'M', u'韠'), + (0x2F9FB, 'M', u'𩐊'), + (0x2F9FC, 'M', u'䪲'), + (0x2F9FD, 'M', u'𩒖'), + (0x2F9FE, 'M', u'頋'), + (0x2FA00, 'M', u'頩'), + (0x2FA01, 'M', u'𩖶'), + (0x2FA02, 'M', u'飢'), + (0x2FA03, 'M', u'䬳'), + (0x2FA04, 'M', u'餩'), + (0x2FA05, 'M', u'馧'), + (0x2FA06, 'M', u'駂'), + (0x2FA07, 'M', u'駾'), + (0x2FA08, 'M', u'䯎'), + (0x2FA09, 'M', u'𩬰'), + (0x2FA0A, 'M', u'鬒'), + (0x2FA0B, 'M', u'鱀'), + (0x2FA0C, 'M', u'鳽'), + (0x2FA0D, 'M', u'䳎'), + (0x2FA0E, 'M', u'䳭'), + (0x2FA0F, 'M', u'鵧'), + (0x2FA10, 'M', u'𪃎'), + (0x2FA11, 'M', u'䳸'), + (0x2FA12, 'M', u'𪄅'), + (0x2FA13, 'M', u'𪈎'), + (0x2FA14, 'M', u'𪊑'), + (0x2FA15, 'M', u'麻'), + (0x2FA16, 'M', u'䵖'), + (0x2FA17, 'M', u'黹'), + (0x2FA18, 'M', u'黾'), + (0x2FA19, 'M', u'鼅'), + (0x2FA1A, 'M', u'鼏'), + (0x2FA1B, 'M', u'鼖'), + (0x2FA1C, 'M', u'鼻'), + (0x2FA1D, 'M', u'𪘀'), + (0x2FA1E, 'X'), + (0xE0100, 'I'), + (0xE01F0, 'X'), + ] + +uts46data = tuple( + _seg_0() + + _seg_1() + + _seg_2() + + _seg_3() + + _seg_4() + + _seg_5() + + _seg_6() + + _seg_7() + + _seg_8() + + _seg_9() + + _seg_10() + + _seg_11() + + _seg_12() + + _seg_13() + + _seg_14() + + _seg_15() + + _seg_16() + + _seg_17() + + _seg_18() + + _seg_19() + + _seg_20() + + _seg_21() + + _seg_22() + + _seg_23() + + _seg_24() + + _seg_25() + + _seg_26() + + _seg_27() + + _seg_28() + + _seg_29() + + _seg_30() + + _seg_31() + + _seg_32() + + _seg_33() + + _seg_34() + + _seg_35() + + _seg_36() + + _seg_37() + + _seg_38() + + _seg_39() + + _seg_40() + + _seg_41() + + _seg_42() + + _seg_43() + + _seg_44() + + _seg_45() + + _seg_46() + + _seg_47() + + _seg_48() + + _seg_49() + + _seg_50() + + _seg_51() + + _seg_52() + + _seg_53() + + _seg_54() + + _seg_55() + + _seg_56() + + _seg_57() + + _seg_58() + + _seg_59() + + _seg_60() + + _seg_61() + + _seg_62() + + _seg_63() + + _seg_64() + + _seg_65() + + _seg_66() + + _seg_67() + + _seg_68() + + _seg_69() + + _seg_70() + + _seg_71() + + _seg_72() +) diff --git a/lib/python3.6/site-packages/pip/_vendor/lockfile/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/lockfile/__pycache__/__init__.cpython-36.pyc index 71d34888c75b2523627991af61c638165fe28ce1..8bc2e90698a68d3a73e74e5b93b5c9c42748930a 100644 GIT binary patch delta 29 kcmZqiZSiF@=H=yD$hDEJpM%37F*hrz(ztT-T#o0m0DSNXOaK4? delta 29 kcmZqiZSiF@=H=x&#=eoQpM%51xTG-4yx4g2T#o0m0DO)K5&!@I diff --git a/lib/python3.6/site-packages/pip/_vendor/lockfile/__pycache__/linklockfile.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/lockfile/__pycache__/linklockfile.cpython-36.pyc index 4f06f6df994aef503323482d40a0a829299f52c5..3d74752ffe4368c64c6ad34aeaedb207491030c7 100644 GIT binary patch delta 29 kcmdllxL=UXn3tDpA=gGWPZkb?#N4c;O5@7S;Vc;}0Crgj9smFU delta 29 kcmdllxL=UXn3tF982d&xPZkanr%W6MiMd%xmBy8uKQo!J0|0&22>k#6 delta 29 lcmZ1}vQmW2n3tF982d)Hr%W6s#wCSW=EcUFKQo!J0|0$=2*UsX diff --git a/lib/python3.6/site-packages/pip/_vendor/lockfile/__pycache__/pidlockfile.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/lockfile/__pycache__/pidlockfile.cpython-36.pyc index e7358e6e99fe3a35e36873c62ec13a94f373479d..282c460646838ed0575c8f008b53842f9b471b54 100644 GIT binary patch delta 29 kcmX@8dQg?kn3tDpA=gH>Ze|XH#N4c;O5@7SGnqB`0e_+hmjD0& delta 29 kcmX@8dQg?kn3tF982d)HZe|V>t<8 diff --git a/lib/python3.6/site-packages/pip/_vendor/lockfile/__pycache__/sqlitelockfile.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/lockfile/__pycache__/sqlitelockfile.cpython-36.pyc index 016bbb57651673eaf6e181f68a4f7b69c4179ee8..d3b67adc5ad838d17ced9e1c6adb370cd9e44d34 100644 GIT binary patch delta 29 kcmew&^F@Zun3tDpA=gH>coq(W#N4c;O5@7Sxh(8l0EIsYZvX%Q delta 29 kcmew&^F@Zun3tF982d)Hcoq&5ja7KX5n3tDpA=gGWaV8Ff#N4c;O5@7Ss!Zx^0CaB$j{pDw delta 29 kcmX>ja7KX5n3tF982d&xaV8EE^^6<_iMd%xmBy8m_cGc80DhDR^#A|> delta 28 kcmeyv{D+y%n3tF982d)H^^6=Q#wCSW=EcU7_cGc80Df!;y8r+H diff --git a/lib/python3.6/site-packages/pip/_vendor/packaging/__pycache__/_compat.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/packaging/__pycache__/_compat.cpython-36.pyc index 08f59d11543a1a6e156d22968e51cf9af96c5a95..c4e7d47a5835e7aa30213e37a98a3acec9d79b3e 100644 GIT binary patch delta 29 lcmdnZzMGxRn3tDpA=gH>w~QPHiMd%xmBy8ue={Cn1OR}f37G%@ delta 29 lcmdnZzMGxRn3tF982d)Hw~QPn#wCSW=EcUFe={Cn1OR|S310vJ diff --git a/lib/python3.6/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-36.pyc index d2c0a1c2499df0b198259baec05036ff2157aee4..2ffce3baa6cd8a10020b7d3bdaa5aba08e663aaf 100644 GIT binary patch delta 29 kcmew(`bU(_n3tDpA=gH>SVj(m#N4c;O5@7S*^Co80fssV@Bjb+ delta 29 kcmew(`bU(_n3tF982d)HSVj&L$In3tDpA=gH>2v!b*#N4c;O5@7SX{;i$0FJT<-v9sr delta 29 kcmez6^2>$In3tF982d)H2v!agR2B|{#N4c;O5@7S#Vkc!0E2r7$^ZZW delta 29 kcmaDV`&5?An3tF982d)HR2B{stVw-SPqenNkV< delta 31 ncmdlti*es9MmA$!Uan*88`;8`I82O73bV|MjW?$--SPqenD7b2 diff --git a/lib/python3.6/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-36.pyc index 0813d2f76e85dadca0a95ef302cf9012f24e718a..2197ebad3eb4613cc23427780cebc79001c7da25 100644 GIT binary patch delta 28 jcmdnayq%fNn3tDpA=gGWCPof}#N4c;O5@7O0*uQ6WJCvf delta 28 jcmdnayq%fNn3tF982d&xCPoeuG$sy%#N4c;O5@7SB}@rC0DqAPmH+?% delta 29 kcmca2dqtMbn3tF982d)HG$sxcHYN^(#N4c;O5@7SQ;M1& delta 29 kcmZqXY35-w=H=x&#=em)nvuiAxTG-4yx4eiCgUs?0BK(bvH$=8 diff --git a/lib/python3.6/site-packages/pip/_vendor/progress/__pycache__/helpers.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/progress/__pycache__/helpers.cpython-36.pyc index 6f9ff45b8f891b7914dbbf7b0ceea646e580133f..0df9c1b0fe8daeb33722903db7a39120661fdc5d 100644 GIT binary patch delta 29 kcmaDW_EwC|n3tDpA=gGWeI^cr#N4c;O5@7SwoC?`0Dj;I82|tP delta 29 kcmaDW_EwC|n3tF982d&xeI^bQ5=IV##N4c;O5@7SO^nja0B^(x%m4rY delta 29 kcmbQsIhT{on3tF982d)H5=IUaRkk^lez diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/__init__.py b/lib/python3.6/site-packages/pip/_vendor/requests/__init__.py index 44f6836..d679f2f 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/__init__.py +++ b/lib/python3.6/site-packages/pip/_vendor/requests/__init__.py @@ -6,7 +6,7 @@ # / """ -Requests HTTP library +Requests HTTP Library ~~~~~~~~~~~~~~~~~~~~~ Requests is an HTTP library, written in Python, for human beings. Basic GET @@ -36,33 +36,66 @@ usage: The other HTTP methods are supported - see `requests.api`. Full documentation is at . -:copyright: (c) 2016 by Kenneth Reitz. +:copyright: (c) 2017 by Kenneth Reitz. :license: Apache 2.0, see LICENSE for more details. """ -__title__ = 'requests' -__version__ = '2.11.1' -__build__ = 0x021101 -__author__ = 'Kenneth Reitz' -__license__ = 'Apache 2.0' -__copyright__ = 'Copyright 2016 Kenneth Reitz' +from pip._vendor import urllib3 +from pip._vendor import chardet +import warnings +from .exceptions import RequestsDependencyWarning + + +def check_compatibility(urllib3_version, chardet_version): + urllib3_version = urllib3_version.split('.') + assert urllib3_version != ['dev'] # Verify urllib3 isn't installed from git. + + # Sometimes, urllib3 only reports its version as 16.1. + if len(urllib3_version) == 2: + urllib3_version.append('0') + + # Check urllib3 for compatibility. + major, minor, patch = urllib3_version # noqa: F811 + major, minor, patch = int(major), int(minor), int(patch) + # urllib3 >= 1.21.1, <= 1.22 + assert major == 1 + assert minor >= 21 + assert minor <= 22 + + # Check chardet for compatibility. + major, minor, patch = chardet_version.split('.')[:3] + major, minor, patch = int(major), int(minor), int(patch) + # chardet >= 3.0.2, < 3.1.0 + assert major == 3 + assert minor < 1 + assert patch >= 2 + + +# Check imported dependencies for compatibility. +try: + check_compatibility(urllib3.__version__, chardet.__version__) +except (AssertionError, ValueError): + warnings.warn("urllib3 ({0}) or chardet ({1}) doesn't match a supported " + "version!".format(urllib3.__version__, chardet.__version__), + RequestsDependencyWarning) # Attempt to enable urllib3's SNI support, if possible -# Note: Patched by pip to prevent using the PyOpenSSL module. On Windows this -# prevents upgrading cryptography. # try: -# from .packages.urllib3.contrib import pyopenssl +# from pip._vendor.urllib3.contrib import pyopenssl # pyopenssl.inject_into_urllib3() # except ImportError: # pass -import warnings - # urllib3's DependencyWarnings should be silenced. -from .packages.urllib3.exceptions import DependencyWarning +from pip._vendor.urllib3.exceptions import DependencyWarning warnings.simplefilter('ignore', DependencyWarning) +from .__version__ import __title__, __description__, __url__, __version__ +from .__version__ import __build__, __author__, __author_email__, __license__ +from .__version__ import __copyright__, __cake__ + from . import utils +from . import packages from .models import Request, Response, PreparedRequest from .api import request, get, head, post, patch, put, delete, options from .sessions import session, Session diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-36.pyc index 40aae86de45a6cb460da6553135c9adca80c1765..3b0b2786bea9d76327af8986c5e49b64c895403a 100644 GIT binary patch delta 1917 zcmah}&2Jk;6rb4-d$Ua(=iB*c>Ow!_rg4%cZPGSCs}{8fR3WG+jF6U%XOgTvvvz0J zr74Llk#a-=`G`1h=}Bwlie=o9{y)$sKb+94EP;nYv?zIy-5r6PyRKOnL7 zK5pjA0aajyY~>(7AqqGP8}>_26OdkM!gpH_CHmb(hm>Or}nO*>W zf=#FrD`n%s1v#mv*i<$s0-t8n86T1}>LfdA7ZGaZ+Y$cnnaE~t4n zpXsCWqFP`J86SfTR9RImvPHGTmeev^R+rc%wZc}^DqB^T*=2QwU4gZfJ93S!?G}NJ z%Qdym*0cP~L4K|_{4c2f9#ccf9l|Gg=_%nQu~xr!=fGy`M|pwab+K_k>#vFR19Cun z*_jlpe2Pzhj-_$lC6$@*FN+ZW9r3U&Ok&D+@85sB{MHW-=~otA>kc?~I)_;H3QhBE zEoHR1g0!|1YA%v{hfsZ-n|yA6TeL*XMO@o`5b8LJw`<@%dt5*VzFY8_X8?Po4sjmP zePG<$rVZPa68b4ktUWj`w;PtO!kUiF9X$OW`Ox0C_U(NqarUeO3TS5tvo^8F(cGTJ z-G*g8LPvWx&ox{ldpzHu=5fa9(Z-x`?=x%ifBbe{IQGEtk3DB@gP5N(?!ZZ1^BZzb zAfbKtQd&)IE*>3X=qX*&81^A{%;7kK4N!4Y*R*7mq=lQt2%SXD_)V>wI<=*U(_GlX zJf?OOv!vp(!CvlzM?xD|$_9HCcrK)_3hQ9)swl>vR+!Xwz9kxW{dZ$AQLV*R)LPhV zN0Kirg{r=}yRzGTm^;@QsqKhbBd9eM*hHHVoN0F%tjr7mp*}6x{nWR8I%D-yc6=qP+`=w zlTl5?2HaPybRd9$Te~{i-brA+7fc7Wuz_cV<4zEO>H^kXva^i&|6jOgsXtbm|BdC8qmz?sn%57$2L)x@cUZHxS@6cw0Q0 zjnh0ATVY!!_bXHvL9e`yDd5c-rT_|Ag)GFpsWlpDyilq4@lnH>)EAFyBFmi7*mYQ_ z4$&u(7I3NmUMSn*=(;&*mgcsa8Y;wQkNK|lDqB6~u7u|OCQ>aawj!Abt*6lKGy+~2 zJ&SM(p^R`E;gxLvSAnKPpF!m;@|UTtv_0)PPm7$S%bWZ(iSU=x{m3Qb`PS=h!7wULdB*rg6Dq9O#u-f?k>6ek7* zO801qdC1G{GA*-dG|gtv46C5)m0X;rRaQeaHj8Fi9o1O_HCPih*&Lc1OXUk|Af;%8SZUS=Rq5A@I zRf}Gi0iMP6X8_lUzq2wapyhiYHtquDt&;8p?yQmJ37Ej&9W}@?+{AOw3+ji?E#S9a z8g)qDHjGyWJe|HVFW=7`P9BYjkYa3Yb~iS<8xgD;U|haR;+V)m=O&5dc zGLn=ivlIlogo|hx|I+g+l<5XRIFf@Q{}r=GqaKNc&L{^#@6X*R*LfWBIEwoMEvVaj z81{+ijyR>!gRL%k(j$pfXA5qs>M~D6ETLpOqLT0oa7&988)8BQx0S;k4fW_jRtS@b zyV@-&>~T+<`uX!|jTw!KMpYqm1QEIk!E0KZ)tV<{C`Uq7i;3WMExG$DYUseG#+*h= zV_xHc#)8J8#zBS5wdt_mS8eik`mS`ex0H(^##h1^Q^NO6C7-PxP3D|ct&J!-=POUF hD42!`|E`i#@StaSunv#I3iRNL?Lb3W71%Osg`eXQ{-yu` diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..78959161deff3af4198afe428de97dee7f1c78ee GIT binary patch literal 501 zcmZ8ey-ve05O&+NO;aim3?RhdwGvJGg9JhdidZTkp$a;AvC`Nyrui|BgOt1jZ-9i@ zU}NANc!!Me0?bUffue$~JKcSEpZ%TPYcz}p;}yLW0C)!rOXZ-iEZSC%00c+@6-W^k zNePvRhBQ(}Wl}*EQbkpwBc0SxjTjf8S$PTG8AwS`*skS z>82|s-?uED*IRRf8H!0->6)EAbBAdgMUXa5X%JB9!gI=Gny&e@KmA6;49E$_F}EF; z!mim)w@yNy2sUvg?6y0*@DDv+Qp3F6J;IOs+h?ePv!;>NFqTYu6l1iEF`^jGehQ)vc@4 zo~ptV5W13;yU!y_`rP7-xAGfWZQH*ZC%t3_<)&l=Box;C#jFKkCQmZ`zz<36(ZllW L^H!D93jg;P_k*1h literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1eb8d1e0ef7fdf5e0bac72b8f9fd97917a8bee0e GIT binary patch literal 1259 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 delta 4160 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 ZT9PQK2Uo}cdXfn6_;fozI^9A#{|EP$`_upc diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/api.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/api.cpython-36.pyc index 12ebacb9b6b74db7dac8b94f26e0294e1c3d2eca..d524e8ef1707d65e6e7d5637360c313212ceb282 100644 GIT binary patch delta 627 zcmaiw&ubGw6vs1L(70(*(opL~c%Ez^b;TkTR7z~tMhqs96+|gycK5}MZg$GdY~y-R z^r)!RIqA)dcvSYHhpIQvdhjTMc<>;oe}NMzSP#+}<~?}7zVkj`4?R9&FBFUR6Z_r8 z)qO8)K`gx|yFr%73E%=ECKd2LsAMfd3BBH>xvQAgV4X$@R#$sHm>aPu0w1Bz#c&?u zfQJ}XvrX&$#N?31DM$=>97_Fg*O$5*Q$Io{WOD3b#r2$a$2-$L*L6DWuIF^ln^*Ui zn@+=Rxt{AZ-FgEAhD>0f7?1Tve!qUX``%5LsR0V0;By`!jcdSS7!6o3fPhK_rohN5 z!6RwH_@{V;u#STDQyaD&lQMr4CUa1N*XlxmLa{yzsKVNq0R^c9i!X1NSlrSWCWen$ zp28YcgMa686J4%@pTwcrRdGlpW*hlgD}R^{ulVUgs-N2qsb-(;pM;#$A10gSZ(TI3 zfX1-JMLW}NT`J$v6Q$$iY_?SD6LLX6ojOh4=0r}8QC zS|6Ccwqt!-Ia-jpTuxfX@Jnxc7E(-Y(^f J`J!DK-`|y>%On5* delta 364 zcmbPb^i+?_n3tF982j<4MPeJdiWr$racr(*v}c?=QFz7Xh0L1FEIIjk>65RqJ+=u> zEm0`RR|qL8O;yNDQwZ=64$%(?4bgXT^>GbxRVYeL$t+4uE>TF!&&kOz&&*3#$ShV! z1hG?7CJS&(@hQ(pEy+kNQUDSP!NEQX$*Dyp3gwwOISNUs3T3H9nQ57+DS8Ty3eJx4 zPN9A-KCTJ{i6t2d$%%PDbBgmp$_k3|%Q90^Q#MC&iZgMT7?%`gnHL*RuH@EdRNuUk z`y(Tx_2k*S9vm-%Q}a@Q)^C2pE5pd>xtWtcjgc{Ia)E#w8`u@$X? mD`gZn=dMF2-Rvyx&dAt3xm%)%SDTBEgO`Jsi;s(!ix&V?C~uko diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-36.pyc index 53ac3cc6b5c8d78c721acba0859a3a051ce98d54..5cf06e47e2ef85f99a09d09cf42e973fd163aad3 100644 GIT binary patch delta 3275 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 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-36.pyc index 340a1d16ade3f72293e48a8fff51ffbd8d7b2320..24b7766ef9d9393d690483c6bb800bc760e134b3 100644 GIT binary patch delta 273 zcmZo?JHZlQ%*)HQkn4EVMMegO#|%h-3CMN;;$k%*k-`wgkiwY4l*5?I6vf2Ikjk9G zoXu3El**FI)XdP#$jFew63n2Nlq;)$xO>sC`e4sPE4P8duy;J<1N;5kmg$)@$tEdnR)T?ewwVe*yH0< z@{{A^ql61G3-sd4Qu9*si}aw{i$E>~sn1KyO^uJg#ad95nOCxsp@055S`uI(_KzT2pn9P6tb&aqeg+G2q6$s1cEUM!SNMdF1I6e(tT-eg^3y! z3ZxeL6|Vgs?EHppQ>My4@UAUFW|+sDUEaQ#{Uv^O*5h6;x()7<1qb*I|3%mGx3=0d z3kniYO!0yx{QJN%ukcEd2nOd+JrjWbJfc?&Tq>dbACQO(sQ6dFj_S-geZ&C81~$yz z^Un|mX`cZ^wEc3q{d2QEjhXSUrbw7sw}0VT_Rdy&XhFk_&G-X)T5OnN8}|}lJ^zGy zN!3tKao7+}kOW)VZma%Vm-5SxPdTNfvtj;SFsGO>_ zL=#Fm$qSV78Yr~Z6z=}Ar{RmSUd&#$<6V!RtjT^D9Jt{e0q>!A$}-I>DdW%tQmQ(W z(gbxoaz5ntNrL@kkAm)pvZ+bGC#uP*oxhd%4ds>In_JZ*dt#XhUzfF79u@eeXWO=K PL9mc>Heh|$_d|9M-4AkF diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-36.pyc index f7e7cc9bc2d9eb977aaec849e7d179bfd891436f..2d5729c4d7c7b8b67c0370e56b3bcdd6960c835e 100644 GIT binary patch delta 825 zcmZWn&x_MQ7|mqTBu&%bzqYlzt?Sk`?ryE!_2z;ocvNI>-zBuobWL}rt<$<#5PBCB zB_N&z!GFY)c=Q_ZBnbOYh%>PZEt}zcdAx7(z87YGT0att!(`I>VtohD73H_G@?gOq zh?>4bisC7tc*s*JVk)Rea!fH`f`=N!NX$bO#naAI(3d~SrU@$!y>U@S;(>+Lr#_2Uy zgIc6nbdznuX2cV8i`Aiy6w-j}qPEEmXpkM)Ax(0V><%#8l5C*D!Wn%f#(Tuy2s@kJ zzA`=qsVliJBPHpcjKtEAW*Nw={Yr}NvjeC`apJVK67$YV%yw%nXM=2utO7+cnRQpZ zMbZHR$HOOzlMX(iSxugkgF>VKyvsc@dvc));X)pn6Aup5r=4(P!pE=XZf`#6PNyyz zo%?(|Vq`Q6OQ&Qen?707gV*Yddnw_-(-JZgvJ&DFViLp^QMe(&l#mnP#CSgVjLS`t zCf*;9&wMiMa_4SnxUM(uyKb16_>-15Yfga<=y50!(DT2nug-y8+sw1V00vSDw2 xI1heloyQM_uBoF7(X7FQC~( zKZ9Suk6`1`i-)}$55#Za$(aS3symrqo_TlPXP({p>V9(;okYUgj5n>1s!;A3}0$ zaHR*HOh7`uU$~3N&K4P&fsD*TR^}il^N^PXC`9k#VoPqr_WIZ&6qT7HcH}PXMm1NI zWC==2W9ErHxexmo@iJUd^MD^hnOC5~uktFd4Jg##eBjnQ>W_cQDh2IG7ahI_>^eK8&Hh2BW_-bb!#1qs#wjxVwL%Uil#Uq=_p%mK%mZyW7J3o zpYi-q{dCm8q1Aug^BJEn)e=2h62+yynT8cSCC`I%a>^2F=_fT(8fgtjL)|FyEe%^E zu8~n_P(Q1+tKsPa4&(jFWIW`fp5JJNR=3M0{cbn3r@j8T_lnPgPxL|Xi{5`3T4%lx z!;^Mov1wC<(0md(_&M#GSAhDayS3`+v@Qx0^-Vr!T{i5`{X+28I1YXqRlF5Av0A0A z9W;L5JDSVs(R4U%o}3K@Yu@S1Pe*rWo!~{R{rI8UVGxhlmPtM8#ck8TRlJ8iY^$jT SG4N`5#KgC8epS7w+xQPBfu{lh diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-36.pyc index d25b9bc50f8f6c72a98517abe8941e75240af3ea..0f02faa8210cef59c1dda0c03ac76c20388a09ff 100644 GIT binary patch delta 4234 zcmaJ^U2Gf25xzb0$m5ZsNc~Z^Wc~Ozlq31CjxAMoti+a`*p?f~e_tCy zr?_-&tA&iDb?TObZyzLjf0PJF`cL zv_x0JecaofnVp&ac6RUIZ<0TKpKL$S(qg=8e3BVBsVIL_8va_KeGDE~A#ZKpyG#@s zpqd>n>KVNl$wZ1q#wbQJQKD30lu*@XD<>5i zqT$;L4O^`%flLD4bsB;9hN9-SIAA(3*Ar);Tr@{hbID$0Z(*3v_c^4;FJiSa$N7a zw&cwXA5IgYTcw;sA@Foe`Yyr?)__SZ=8C|)<;hT30E3d@g|HRlAB1=GVGcxa0j!Bo z*<`LoAIZoU;Q`XYWBTzF=BZhv^E%rl)3phW8Yrd8%!**iELx4$-i{Q%QWxF4CLi!u zVjFabFtz5)CEIJ%tG*ivkj>K5z@k+Vfmcntah(6&cx9WMxzUmaQcI7_&nKcRCFPo| z{U4$PDn~8*fRRPCW(6%~IebE)CceHLM$+x!e zBNP05`>)4QOe9T8vpL6E%v)LCbD3R+$w~*<5j53`f`m1AljM^fJIRS^v7?Q|B{f6T zDVq5b>*04h2S#Mjlc?K+x<<~nOlHp7mMcR3WRDoT-#JFk@UE_Zj5f)z#JeAVYvS`W4cR)W|^Pq7y9N1jF(K|!-tc}BB)!SiqM#=yPBk$%*u4k5V z77O$LY&o!_KE-Yn2rXVS*}N-Au5pg)#lAMui;k?);53@7N0Q{X`~RML5d}7Gsp{(k zgbZFr4V>e#ChiS>(VIc3E03}B;npbGDecId{6AyW&$nfWZ|!PxYy8rVkM>AoGF5P* zB0*%~3HyuhvJFul+WGOY)IlDwMjfqedJ7vhs_9+bWOvhP*ehsb{S;OEiLaB%x`Lbt zBb7TZt@-71ZFPk~^Eof?luTCHV2ck8^=N7vX;b<0L*-*rU`52Tusup1aNEsh8S-v* zJ>>Ed5di_)baAxK&jpYhuRa{gkl}OdR2o@;6GXFFs2X|CDrU3KRKNA)2-$xLRT|2* zq(KuscUA8+|9tr4QKW67b4@g;W&1NtliKD{g4efjbF_nhIdbRf7+CNpE23*~a#HtN z-dhl1W|eIdHo-hfU}6}a;OU^BUR)Fr#Erl%U^iiT6shL}g)j5_dp>>X1sn(hh{&_D z>^yHWX-foiPPtN_K!ldc)by-Xl4%ZO3R3Ukj>Gd^Avy`FhN`Ouv<%Wg*lp;|;ZcTv zA$VGq>cIGGggE^DBYjh)TXr)8`g#{;L7x;stn>!w*3Y&qE zU-7=DN6Ad}^3&%Cxx+s=*1!B+=$@?ep1lU|LSOK_vQx4v>^o@hbp*(Ql5Sxr&+a0; zfgrc)9c;;1Wf8~F*!K|LM35$=UuY*C6@h%o6G1Ouw1jc`BHm~H2!9B}LeH5tR4 z5K7D!g$`doWo*k3*pJZW69{NC9T1_S12=q|-QjOdw6BkP8f5;;e={*krmO#)_zT%z zBNTd@R)spUw;2f@8sm1}^>R+Jd^ErxKKoSvTIG~Zq%{$(-M#QsV$bn&$NLj90}WZ{ zw~lxB{0rHGor5e&4TC=c<7Au){cFD`zuKWfm;(^4eM5mtAqegoo)U~X9LvPi$>HS8> F{{SmRS-}7R delta 4162 zcmaJ^S#TRk8J^ZL8p)C@ABk+oj+MhnlvsAM&arV^IfxTGhjZ8=hY})W_1KmyX(m0R zBnnAf8)p~T>_V1a7OL1S9$*jHCrVWmRTNcF)Iw1d#S{C`RXhPtn|&`@j0{@Be%Jho|Jf-y~ayLZQHKe7{Y`#uVi*O5MK@jE}-&{abl!>+XeuFX=02 zNv+^d`iWAGP(oe#Kr)~Qh;l_Kc6$`PX+FT_h=Tv+YA_kNrW9RQl`(~Ssrp!ZJ^z>2WGmdYf6d7_zv>(%D>1? zH}UYz-km+ou+Qg*2JM15XlBjCbSaysiM>Pit=s`?h-ba!Xb>dggke$`N;?qY|MA|4 zd+=RD2mlDRsM~oX(@6TEdO6w-GL6Q*tEdqGXX+>*bq!sya(ar}BW< z9%puuJaF0G`>vdNp8)#c(ctmJ6PQ&O3GCE$PI$%*%Z@k60EKT(Pg9*)!ab|oGF&F3 z_hR%-{I9;gjkrbOnFA%EnrUX~bj60ZYcUe!4Lt(+K9ifwbJOm5V@L0$R&FgV#KF!UBDj&7XkfsBuv-R+xFzzKtBO z{HVQ^ge50cY82AhBJ1S8TNfLUc^F0APIMB;<@sE)H0#-i(o$!R{h{_}&4 z($pv~XTa-DuPsm)%G@-vaY&If8m`xX@AgS@#qfTwaIstBrl^w3Go5 zfvlA+T6Vga(V5DJHxBjHT*Og8oxhW2vz8#4dLNZRel{KWYcBTKp!tO@wZK%bzeoP-TdPsgw|9_T4c)MtXk)dD%11ly zl7*Urbc8#V#TfTGeRKJAMSx~AcGf7SS$T~u&=ML{bqZzr3D65~ImPE8VbVncBtq_W zP3pHwx@B9(WzC#UvjI@x-`{!VDBe{fn1X65+E5BsD#ehdOUEbKK!hIz@@WfKYh^wI za>JGVyOJa^u}Y<$H0Yoyl>&!ZTQ8(iM=QVRA0RJ%5moBix@1iQJ!?tt6z>`MB!Mii z53Yd*)$@+03%q&o$2VUF4afLAhN9_3YTe1&bHc}TGoOYU(NO{u!6pIX9w+;FX2OGY z!lrPVuvrwT?H`3N^XTqBUO$fuZUEt5&akv4JQ>3**Bl77WYV;)FLBUoKr?3YNY~o8 zz~J@Du|4m)&P%4qa#-esv!!z&vqYCw>#I43;dxUt*&@wU`uB$2HyRnmv#+zP)-Lc` zuMwJUOzL)t6&rDpAs6oOcMkl1A48XJ(=e+CCcMy;>=idRN&x$S9C9g@ddlB<`TfZ| zFnKYYlfLY*9)$Dipn+KmH}08ey9MYPfAG zi^CiOGDmKUm2iX^V_!jdh#=Dzs#aV^&*zt_4mY?&6M0LY<^6}YN5er?^TQRZ2E9Qo z&>rZ-F+0n1hpdZe3kWT10LSbk0{XAslfs87$fX?;u1bW6KwmJ+OIIyO{g4lgY#@&+ zr$@d^_7%X)b251HlF-I&+dN;)m*XMfyA5Ba(5sy93T$e^V;an^5{O3+m&t4Vt;6kP zlz(tIaZO&fVQj1^%hWU3nXFFZe&NA(CetkZm&&Gof-!@!s~El{glF0?@(fE_RvtSF zqqtgg%BFb#k*@ZYq+l08s=|{;4w8$Nw~w4B3txkYd!2ph{#YMP^i3!FuEqMshx;am z`=(-J6PMWQuzs?}efAjMg*FGyyO9m@h79b$7SnTnQGDIhyiI*Gt4N+>**hmB@3ymXc|#n8eCBU5+ofi_F?7o z(T8MV43^mY7@?n?$1!$Qb_?NM1di|_f+Rusm~FG{bjhyLqe^VFB7Ba2ON6TNW{Z;N ztHKPy-!ij$mEtbT&!3&#H1RPQfWNxV!E-6z<9zta^7$UReh#r-pca(umB8p zqV=GR7ePh1&&{!&3qBkUAsj(Cj(~TW2u_xYc#aOgW&g$Pitt3q#*fd5v}r=ubMB`{ zs3w_#r|TpFW38)Oxjjs=&_)UdE#>vY0Y%}R-yB diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-36.pyc index e708a4a91e18692e907fd76a76e071f2c2d93610..32bfc32e25f0e3c40ab0e7816258d9c5ed2604b4 100644 GIT binary patch delta 520 zcmY+9yGkTM6o$Lk>2+2dmW6ZK(ICWT9i3wio6BBp*= zrCNMud$x7`WIx);8gK11qUq@Rq3d_=YTuefIPj(5ja^t!B3eRJcr>#Ldu<4H$Uu6k zEj1tr#w7!T*+CN|(-`@3n`y;fIxx-})F9@mYNkNJnLoT-=-bzhYCdl*fgRfCmN~4&gyFMEDfxEd+&I;q(%pVuc zc%AP58PJT>$x=21k85iE3d}q>5oetKbSL?>r9^udW|Jg_ZhVz3cPG-H(@xg;2mc3@KWv zlBrV7EK$-a+QAH(I+NEhCNnZ_7GQeI$YEk!QkZ34Y`mG3Wj4>`c)qz&psVJoPK^#LU{4q>(t^?#_;9XJ%(-e(PHc3(haj@9u6} zQT|cR{hC033N8B+I;OY^QyB@>h`2;WS_?H-lcVnHax`2+j;3qEsE1Z$yS9`yfNr=A zNt-}Bt^>5i?64WN+yzxB7Gc&1+fm2usLIz$Om&4X9ysD>Rl$d8ZU@>DwB>J7N z!4h!LlVx|AIjs3YaWAnJTY&Km)@B_TS9q5#9uV;dUpbL_c9s6pQSV{GrXi=JB+mUH z4&r?}obFS>(?sNS%)^w68(Dww3bwBF)v}$6AkMwLX*|kYSQRy95Ekc$i!cpkiNq(zeQILpEjs>L6HrbD|AE&B<&T$!jR%CRzo{ejn4 zU`}AJ#uMNW;C#!pT$|_;|^(hNRIeix7W15dS-6`^M64M|`LmqJm zB!-6iF{Aaa2aZGGwV>f%aVdvdYFV1>{l8MFW;7K7tb_#>(-@CzKtE3e z<T582_AAkgYJ-rr9MdlbfSI1MECXiT<@=nxC#aK@7?u0O4rjMT^mk=kga{-N0VW3 zt3Z})upnlMSQq@eDV#yJj&LwYi?VZJGgq)^DRfHHCbsIRHaw=uYmP&7B2ehG z<{L1%1Wnfb-#`@Is_LsMWa>+Dj0kvDS8@#y@OF)WgpukU;2(LaAx5;HsR;JcYVBQtGg%uLX<7^uv7=>U2(kFI~gV=nw06B;wG zN@vVS{~X{B;1o?rgq%mERiClwKxD)cbX%eYeV@ol*{LCPeym62+H+xnK-t~i+1T3M z{nGntSMpbX2j8j?h0E6AmGy@RvPC?lPeBK6p1{DG^Ss1vY zH4;UdC;P%r$A!?4WzRFCzf`Gy2c_S|SJvkCh7eGS6j@RW`c|p3YVEFuCf<|s`y601 z7veffN$nc=CTx7UIJYz3Yro+x%nQuJfV!71KmyNY1NlfHG}$_2T;l`o!?$1 z(!h&NlHwY;;dahqR&lY6WG#ue(M=r{eFRi?7dnLyVnX(}2~pdc302`}M75y`pe8hU z^cK0S6BQp*_L3%I4c3lO!Te_eaUWWSb(Sl+Iw84sBELeI_M>*9!dHO~S!NvdcL3t^ zVohGs5)JV(N4Mq~=V$c6?)KK;@hiM>A>A4oT=d=n2lO$6n8CfW)z?cyY5-)(lDIV3 zG)gn+SGC)V`;OqtL7;=EQz7Cu^rh{2$cGF6&C>EbmW({FbUgTUKwS4cfx_Y@b}}tj zka{0iHUWSJHTcL>ILks=0W!AN2q~WJEBm5~sNt;de}xiG4I6 z(~Ba7VLtT~;Tv2!+nA)}soEb$@)PM3{Fceks;;&G)8s=C<65KzXS}Gk0qu0v!FQVd Kj(x{AZ1q3kh}QT3 literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-36.pyc index 3fa6029fae04e42fcaa2a0b5ce246d11c7224c30..d7b77fa5e6bb7859dfa2f441743189e5533421c1 100644 GIT binary patch delta 29 kcmdnOzJ;C5n3tDpA=gH>PDT!c#N4c;O5@7S(-~!%0CoomApigX delta 29 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 AI{*Lx delta 7693 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 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c97f3011dd5fb791bb333b86db2a9237fff8499e GIT binary patch literal 476 zcmYjM!A`T1Somb~0csBq(;po+Mf2B)4Yhb_#hXA%Iv#;T99uQVT z(t*H06OEFfRRR(pwl`QqSkz0Rr$zxqipJ8AW26fk4OZ_!NyJdI4OS}&BQHi50;k$Q z+J)+86rB$Euo+HZ)0$}CTj({u^bIgpG#8x5(}A*LwvH5?%_G4u+nuIy>V}WFW{GeW zad#KTguqRXGLvo^&6d#vO1EbU9T$XIfu*5$qD)yxMGqrEdoPA8JTS@$!+4b@A`3%R z=gBPMQdvBfnWC$Nb$92%k*Qvn!c&o+qz#E9O%C>@U-^*61 zr;qJV^O&>#WwcsMi$PIQzjX-Z{blg}Go*#G{k`*uXf4^&VAmXCla|>g=cG-30LXEO ACjbBd literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-36.pyc index 102d6261ce601ffcfbe09b3ec5a1bf07f282c17e..917c8c3950ed9f9ea52fb0702bc0bd7da0b050f3 100644 GIT binary patch delta 6996 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 aE{$LZ@jX&j#__V-?8>#J*YMD9@Babb1UaYx delta 6453 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 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-36.pyc index 2555f831d205c26262e12cf128f6dfd9f910e9f8..f1dceba214678d85501cc933a730839846c0ba57 100644 GIT binary patch delta 29 kcmZosYEfb{=H=yD$hDE}94m)GVs2JarE%rvJFFVq0Cxlkod5s; delta 29 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 delta 5942 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 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/__version__.py b/lib/python3.6/site-packages/pip/_vendor/requests/__version__.py new file mode 100644 index 0000000..dc33eef --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/requests/__version__.py @@ -0,0 +1,14 @@ +# .-. .-. .-. . . .-. .-. .-. .-. +# |( |- |.| | | |- `-. | `-. +# ' ' `-' `-`.`-' `-' `-' ' `-' + +__title__ = 'requests' +__description__ = 'Python HTTP for Humans.' +__url__ = 'http://python-requests.org' +__version__ = '2.18.4' +__build__ = 0x021804 +__author__ = 'Kenneth Reitz' +__author_email__ = 'me@kennethreitz.org' +__license__ = 'Apache 2.0' +__copyright__ = 'Copyright 2017 Kenneth Reitz' +__cake__ = u'\u2728 \U0001f370 \u2728' diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/_internal_utils.py b/lib/python3.6/site-packages/pip/_vendor/requests/_internal_utils.py new file mode 100644 index 0000000..759d9a5 --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/requests/_internal_utils.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- + +""" +requests._internal_utils +~~~~~~~~~~~~~~ + +Provides utility functions that are consumed internally by Requests +which depend on extremely few external helpers (such as compat) +""" + +from .compat import is_py2, builtin_str, str + + +def to_native_string(string, encoding='ascii'): + """Given a string object, regardless of type, returns a representation of + that string in the native string type, encoding and decoding where + necessary. This assumes ASCII unless told otherwise. + """ + if isinstance(string, builtin_str): + out = string + else: + if is_py2: + out = string.encode(encoding) + else: + out = string.decode(encoding) + + return out + + +def unicode_is_ascii(u_string): + """Determine if unicode string only contains ASCII characters. + + :param str u_string: unicode string to check. Must be unicode + and not Python 2 `str`. + :rtype: bool + """ + assert isinstance(u_string, str) + try: + u_string.encode('ascii') + return True + except UnicodeEncodeError: + return False diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/adapters.py b/lib/python3.6/site-packages/pip/_vendor/requests/adapters.py index 4a4c4e0..5787638 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/adapters.py +++ b/lib/python3.6/site-packages/pip/_vendor/requests/adapters.py @@ -11,33 +11,34 @@ and maintain connections. import os.path import socket +from pip._vendor.urllib3.poolmanager import PoolManager, proxy_from_url +from pip._vendor.urllib3.response import HTTPResponse +from pip._vendor.urllib3.util import Timeout as TimeoutSauce +from pip._vendor.urllib3.util.retry import Retry +from pip._vendor.urllib3.exceptions import ClosedPoolError +from pip._vendor.urllib3.exceptions import ConnectTimeoutError +from pip._vendor.urllib3.exceptions import HTTPError as _HTTPError +from pip._vendor.urllib3.exceptions import MaxRetryError +from pip._vendor.urllib3.exceptions import NewConnectionError +from pip._vendor.urllib3.exceptions import ProxyError as _ProxyError +from pip._vendor.urllib3.exceptions import ProtocolError +from pip._vendor.urllib3.exceptions import ReadTimeoutError +from pip._vendor.urllib3.exceptions import SSLError as _SSLError +from pip._vendor.urllib3.exceptions import ResponseError + from .models import Response -from .packages.urllib3.poolmanager import PoolManager, proxy_from_url -from .packages.urllib3.response import HTTPResponse -from .packages.urllib3.util import Timeout as TimeoutSauce -from .packages.urllib3.util.retry import Retry from .compat import urlparse, basestring from .utils import (DEFAULT_CA_BUNDLE_PATH, get_encoding_from_headers, prepend_scheme_if_needed, get_auth_from_url, urldefragauth, - select_proxy, to_native_string) + select_proxy) from .structures import CaseInsensitiveDict -from .packages.urllib3.exceptions import ClosedPoolError -from .packages.urllib3.exceptions import ConnectTimeoutError -from .packages.urllib3.exceptions import HTTPError as _HTTPError -from .packages.urllib3.exceptions import MaxRetryError -from .packages.urllib3.exceptions import NewConnectionError -from .packages.urllib3.exceptions import ProxyError as _ProxyError -from .packages.urllib3.exceptions import ProtocolError -from .packages.urllib3.exceptions import ReadTimeoutError -from .packages.urllib3.exceptions import SSLError as _SSLError -from .packages.urllib3.exceptions import ResponseError from .cookies import extract_cookies_to_jar from .exceptions import (ConnectionError, ConnectTimeout, ReadTimeout, SSLError, ProxyError, RetryError, InvalidSchema) from .auth import _basic_auth_str try: - from .packages.urllib3.contrib.socks import SOCKSProxyManager + from pip._vendor.urllib3.contrib.socks import SOCKSProxyManager except ImportError: def SOCKSProxyManager(*args, **kwargs): raise InvalidSchema("Missing dependencies for SOCKS support.") @@ -64,7 +65,9 @@ class BaseAdapter(object): data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. :type timeout: float or tuple - :param verify: (optional) Whether to verify SSL certificates. + :param verify: (optional) Either a boolean, in which case it controls whether we verify + the server's TLS certificate, or a string, in which case it must be a path + to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. """ @@ -168,7 +171,7 @@ class HTTPAdapter(BaseAdapter): :param proxy: The proxy to return a urllib3 ProxyManager for. :param proxy_kwargs: Extra keyword arguments used to configure the Proxy Manager. :returns: ProxyManager - :rtype: requests.packages.urllib3.ProxyManager + :rtype: urllib3.ProxyManager """ if proxy in self.proxy_manager: manager = self.proxy_manager[proxy] @@ -202,7 +205,9 @@ class HTTPAdapter(BaseAdapter): :param conn: The urllib3 connection object associated with the cert. :param url: The requested URL. - :param verify: Whether we should actually verify the certificate. + :param verify: Either a boolean, in which case it controls whether we verify + the server's TLS certificate, or a string, in which case it must be a path + to a CA bundle to use :param cert: The SSL certificate to verify. """ if url.lower().startswith('https') and verify: @@ -216,8 +221,9 @@ class HTTPAdapter(BaseAdapter): if not cert_loc: cert_loc = DEFAULT_CA_BUNDLE_PATH - if not cert_loc: - raise Exception("Could not find a suitable SSL CA certificate bundle.") + if not cert_loc or not os.path.exists(cert_loc): + raise IOError("Could not find a suitable TLS CA certificate bundle, " + "invalid path: {0}".format(cert_loc)) conn.cert_reqs = 'CERT_REQUIRED' @@ -236,6 +242,13 @@ class HTTPAdapter(BaseAdapter): conn.key_file = cert[1] else: conn.cert_file = cert + conn.key_file = None + if conn.cert_file and not os.path.exists(conn.cert_file): + raise IOError("Could not find the TLS certificate file, " + "invalid path: {0}".format(conn.cert_file)) + if conn.key_file and not os.path.exists(conn.key_file): + raise IOError("Could not find the TLS key file, " + "invalid path: {0}".format(conn.key_file)) def build_response(self, req, resp): """Builds a :class:`Response ` object from a urllib3 @@ -281,7 +294,7 @@ class HTTPAdapter(BaseAdapter): :param url: The URL to connect to. :param proxies: (optional) A Requests-style dictionary of proxies used on this request. - :rtype: requests.packages.urllib3.ConnectionPool + :rtype: urllib3.ConnectionPool """ proxy = select_proxy(url, proxies) @@ -366,7 +379,7 @@ class HTTPAdapter(BaseAdapter): headers = {} username, password = get_auth_from_url(proxy) - if username and password: + if username: headers['Proxy-Authorization'] = _basic_auth_str(username, password) @@ -380,8 +393,10 @@ class HTTPAdapter(BaseAdapter): :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. - :type timeout: float or tuple - :param verify: (optional) Whether to verify SSL certificates. + :type timeout: float or tuple or urllib3 Timeout object + :param verify: (optional) Either a boolean, in which case it controls whether + we verify the server's TLS certificate, or a string, in which case it + must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response @@ -405,6 +420,8 @@ class HTTPAdapter(BaseAdapter): "timeout tuple, or a single float to set " "both timeouts to the same value".format(timeout)) raise ValueError(err) + elif isinstance(timeout, TimeoutSauce): + pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) @@ -484,6 +501,10 @@ class HTTPAdapter(BaseAdapter): if isinstance(e.reason, _ProxyError): raise ProxyError(e, request=request) + if isinstance(e.reason, _SSLError): + # This branch is for urllib3 v1.22 and later. + raise SSLError(e, request=request) + raise ConnectionError(e, request=request) except ClosedPoolError as e: @@ -494,6 +515,7 @@ class HTTPAdapter(BaseAdapter): except (_SSLError, _HTTPError) as e: if isinstance(e, _SSLError): + # This branch is for urllib3 versions earlier than v1.22 raise SSLError(e, request=request) elif isinstance(e, ReadTimeoutError): raise ReadTimeout(e, request=request) diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/api.py b/lib/python3.6/site-packages/pip/_vendor/requests/api.py index 580b3f3..bc2115c 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/api.py +++ b/lib/python3.6/site-packages/pip/_vendor/requests/api.py @@ -19,7 +19,7 @@ def request(method, url, **kwargs): :param method: method for the new :class:`Request` object. :param url: URL for the new :class:`Request` object. :param params: (optional) Dictionary or bytes to be sent in the query string for the :class:`Request`. - :param data: (optional) Dictionary, bytes, or file-like object to send in the body of the :class:`Request`. + :param data: (optional) Dictionary or list of tuples ``[(key, value)]`` (will be form-encoded), bytes, or file-like object to send in the body of the :class:`Request`. :param json: (optional) json data to send in the body of the :class:`Request`. :param headers: (optional) Dictionary of HTTP Headers to send with the :class:`Request`. :param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`. @@ -29,14 +29,16 @@ def request(method, url, **kwargs): defining the content type of the given file and ``custom_headers`` a dict-like object containing additional headers to add for the file. :param auth: (optional) Auth tuple to enable Basic/Digest/Custom HTTP Auth. - :param timeout: (optional) How long to wait for the server to send data + :param timeout: (optional) How many seconds to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. :type timeout: float or tuple - :param allow_redirects: (optional) Boolean. Set to True if POST/PUT/DELETE redirect following is allowed. + :param allow_redirects: (optional) Boolean. Enable/disable GET/OPTIONS/POST/PUT/PATCH/DELETE/HEAD redirection. Defaults to ``True``. :type allow_redirects: bool :param proxies: (optional) Dictionary mapping protocol to the URL of the proxy. - :param verify: (optional) whether the SSL cert will be verified. A CA_BUNDLE path can also be provided. Defaults to ``True``. + :param verify: (optional) Either a boolean, in which case it controls whether we verify + the server's TLS certificate, or a string, in which case it must be a path + to a CA bundle to use. Defaults to ``True``. :param stream: (optional) if ``False``, the response content will be immediately downloaded. :param cert: (optional) if String, path to ssl client cert file (.pem). If Tuple, ('cert', 'key') pair. :return: :class:`Response ` object @@ -57,7 +59,7 @@ def request(method, url, **kwargs): def get(url, params=None, **kwargs): - """Sends a GET request. + r"""Sends a GET request. :param url: URL for the new :class:`Request` object. :param params: (optional) Dictionary or bytes to be sent in the query string for the :class:`Request`. @@ -71,7 +73,7 @@ def get(url, params=None, **kwargs): def options(url, **kwargs): - """Sends a OPTIONS request. + r"""Sends an OPTIONS request. :param url: URL for the new :class:`Request` object. :param \*\*kwargs: Optional arguments that ``request`` takes. @@ -84,7 +86,7 @@ def options(url, **kwargs): def head(url, **kwargs): - """Sends a HEAD request. + r"""Sends a HEAD request. :param url: URL for the new :class:`Request` object. :param \*\*kwargs: Optional arguments that ``request`` takes. @@ -97,10 +99,10 @@ def head(url, **kwargs): def post(url, data=None, json=None, **kwargs): - """Sends a POST request. + r"""Sends a POST request. :param url: URL for the new :class:`Request` object. - :param data: (optional) Dictionary, bytes, or file-like object to send in the body of the :class:`Request`. + :param data: (optional) Dictionary (will be form-encoded), bytes, or file-like object to send in the body of the :class:`Request`. :param json: (optional) json data to send in the body of the :class:`Request`. :param \*\*kwargs: Optional arguments that ``request`` takes. :return: :class:`Response ` object @@ -111,10 +113,11 @@ def post(url, data=None, json=None, **kwargs): def put(url, data=None, **kwargs): - """Sends a PUT request. + r"""Sends a PUT request. :param url: URL for the new :class:`Request` object. - :param data: (optional) Dictionary, bytes, or file-like object to send in the body of the :class:`Request`. + :param data: (optional) Dictionary (will be form-encoded), bytes, or file-like object to send in the body of the :class:`Request`. + :param json: (optional) json data to send in the body of the :class:`Request`. :param \*\*kwargs: Optional arguments that ``request`` takes. :return: :class:`Response ` object :rtype: requests.Response @@ -124,20 +127,21 @@ def put(url, data=None, **kwargs): def patch(url, data=None, **kwargs): - """Sends a PATCH request. + r"""Sends a PATCH request. :param url: URL for the new :class:`Request` object. - :param data: (optional) Dictionary, bytes, or file-like object to send in the body of the :class:`Request`. + :param data: (optional) Dictionary (will be form-encoded), bytes, or file-like object to send in the body of the :class:`Request`. + :param json: (optional) json data to send in the body of the :class:`Request`. :param \*\*kwargs: Optional arguments that ``request`` takes. :return: :class:`Response ` object :rtype: requests.Response """ - return request('patch', url, data=data, **kwargs) + return request('patch', url, data=data, **kwargs) def delete(url, **kwargs): - """Sends a DELETE request. + r"""Sends a DELETE request. :param url: URL for the new :class:`Request` object. :param \*\*kwargs: Optional arguments that ``request`` takes. diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/auth.py b/lib/python3.6/site-packages/pip/_vendor/requests/auth.py index 49bcb24..1a182df 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/auth.py +++ b/lib/python3.6/site-packages/pip/_vendor/requests/auth.py @@ -12,13 +12,14 @@ import re import time import hashlib import threading +import warnings from base64 import b64encode -from .compat import urlparse, str +from .compat import urlparse, str, basestring from .cookies import extract_cookies_to_jar -from .utils import parse_dict_header, to_native_string -from .status_codes import codes +from ._internal_utils import to_native_string +from .utils import parse_dict_header CONTENT_TYPE_FORM_URLENCODED = 'application/x-www-form-urlencoded' CONTENT_TYPE_MULTI_PART = 'multipart/form-data' @@ -27,8 +28,42 @@ CONTENT_TYPE_MULTI_PART = 'multipart/form-data' def _basic_auth_str(username, password): """Returns a Basic Auth string.""" + # "I want us to put a big-ol' comment on top of it that + # says that this behaviour is dumb but we need to preserve + # it because people are relying on it." + # - Lukasa + # + # These are here solely to maintain backwards compatibility + # for things like ints. This will be removed in 3.0.0. + if not isinstance(username, basestring): + warnings.warn( + "Non-string usernames will no longer be supported in Requests " + "3.0.0. Please convert the object you've passed in ({0!r}) to " + "a string or bytes object in the near future to avoid " + "problems.".format(username), + category=DeprecationWarning, + ) + username = str(username) + + if not isinstance(password, basestring): + warnings.warn( + "Non-string passwords will no longer be supported in Requests " + "3.0.0. Please convert the object you've passed in ({0!r}) to " + "a string or bytes object in the near future to avoid " + "problems.".format(password), + category=DeprecationWarning, + ) + password = str(password) + # -- End Removal -- + + if isinstance(username, str): + username = username.encode('latin1') + + if isinstance(password, str): + password = password.encode('latin1') + authstr = 'Basic ' + to_native_string( - b64encode(('%s:%s' % (username, password)).encode('latin1')).strip() + b64encode(b':'.join((username, password))).strip() ) return authstr @@ -157,7 +192,7 @@ class HTTPDigestAuth(AuthBase): elif qop == 'auth' or 'auth' in qop.split(','): noncebit = "%s:%s:%s:%s:%s" % ( nonce, ncvalue, cnonce, 'auth', HA2 - ) + ) respdig = KD(HA1, noncebit) else: # XXX handle auth-int. @@ -191,6 +226,12 @@ class HTTPDigestAuth(AuthBase): :rtype: requests.Response """ + # If response is not 4xx, do not auth + # See https://github.com/requests/requests/issues/3772 + if not 400 <= r.status_code < 500: + self._thread_local.num_401_calls = 1 + return r + if self._thread_local.pos is not None: # Rewind the file position indicator of the body to where # it was to resend the request. diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/cacert.pem b/lib/python3.6/site-packages/pip/_vendor/requests/cacert.pem index 6a66daa..101ac98 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/cacert.pem +++ b/lib/python3.6/site-packages/pip/_vendor/requests/cacert.pem @@ -1,31 +1,4 @@ -# Issuer: O=Equifax OU=Equifax Secure Certificate Authority -# Subject: O=Equifax OU=Equifax Secure Certificate Authority -# Label: "Equifax Secure CA" -# Serial: 903804111 -# MD5 Fingerprint: 67:cb:9d:c0:13:24:8a:82:9b:b2:17:1e:d1:1b:ec:d4 -# SHA1 Fingerprint: d2:32:09:ad:23:d3:14:23:21:74:e4:0d:7f:9d:62:13:97:86:63:3a -# SHA256 Fingerprint: 08:29:7a:40:47:db:a2:36:80:c7:31:db:6e:31:76:53:ca:78:48:e1:be:bd:3a:0b:01:79:a7:07:f9:2c:f1:78 ------BEGIN CERTIFICATE----- -MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV -UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy -dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1 -MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx -dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f -BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A -cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC -AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ -MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm -aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw -ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj -IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF -MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA -A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y -7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh -1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 ------END CERTIFICATE----- - # Issuer: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA # Subject: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA # Label: "GlobalSign Root CA" @@ -117,38 +90,6 @@ F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== -----END CERTIFICATE----- -# Issuer: CN=VeriSign Class 4 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only -# Subject: CN=VeriSign Class 4 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only -# Label: "Verisign Class 4 Public Primary Certification Authority - G3" -# Serial: 314531972711909413743075096039378935511 -# MD5 Fingerprint: db:c8:f2:27:2e:b1:ea:6a:29:23:5d:fe:56:3e:33:df -# SHA1 Fingerprint: c8:ec:8c:87:92:69:cb:4b:ab:39:e9:8d:7e:57:67:f3:14:95:73:9d -# SHA256 Fingerprint: e3:89:36:0d:0f:db:ae:b3:d2:50:58:4b:47:30:31:4e:22:2f:39:c1:56:a0:20:14:4e:8d:96:05:61:79:15:06 ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl -cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu -LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT -aWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD -VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT -aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ -bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu -IENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK3LpRFpxlmr8Y+1 -GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaStBO3IFsJ -+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0Gbd -U6LM8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLm -NxdLMEYH5IBtptiWLugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XY -ufTsgsbSPZUd5cBPhMnZo0QoBmrXRazwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ -ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAj/ola09b5KROJ1WrIhVZPMq1 -CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXttmhwwjIDLk5Mq -g6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm -fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c -2NU8Qh0XwRJdRTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/ -bLvSHgCwIe34QWKCudiyxLtGUPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== ------END CERTIFICATE----- - # Issuer: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited # Subject: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited # Label: "Entrust.net Premium 2048 Secure Server CA" @@ -211,38 +152,6 @@ ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp -----END CERTIFICATE----- -# Issuer: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network -# Subject: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network -# Label: "AddTrust Low-Value Services Root" -# Serial: 1 -# MD5 Fingerprint: 1e:42:95:02:33:92:6b:b9:5f:c0:7f:da:d6:b2:4b:fc -# SHA1 Fingerprint: cc:ab:0e:a0:4c:23:01:d6:69:7b:dd:37:9f:cd:12:eb:24:e3:94:9d -# SHA256 Fingerprint: 8c:72:09:27:9a:c0:4e:27:5e:16:d0:7f:d3:b7:75:e8:01:54:b5:96:80:46:e3:1f:52:dd:25:76:63:24:e9:a7 ------BEGIN CERTIFICATE----- -MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 -b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMw -MTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML -QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYD -VQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUA -A4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ul -CDtbKRY654eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6n -tGO0/7Gcrjyvd7ZWxbWroulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyl -dI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1Zmne3yzxbrww2ywkEtvrNTVokMsAsJch -PXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJuiGMx1I4S+6+JNM3GOGvDC -+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8wHQYDVR0O -BBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8E -BTADAQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBl -MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFk -ZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENB -IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxtZBsfzQ3duQH6lmM0MkhHma6X -7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0PhiVYrqW9yTkkz -43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY -eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJl -pz/+0WatC7xrmYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOA -WiFeIc9TVPC6b4nbqKqVz4vjccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= ------END CERTIFICATE----- - # Issuer: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network # Subject: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network # Label: "AddTrust External Root" @@ -276,71 +185,6 @@ c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= -----END CERTIFICATE----- -# Issuer: CN=AddTrust Public CA Root O=AddTrust AB OU=AddTrust TTP Network -# Subject: CN=AddTrust Public CA Root O=AddTrust AB OU=AddTrust TTP Network -# Label: "AddTrust Public Services Root" -# Serial: 1 -# MD5 Fingerprint: c1:62:3e:23:c5:82:73:9c:03:59:4b:2b:e9:77:49:7f -# SHA1 Fingerprint: 2a:b6:28:48:5e:78:fb:f3:ad:9e:79:10:dd:6b:df:99:72:2c:96:e5 -# SHA256 Fingerprint: 07:91:ca:07:49:b2:07:82:aa:d3:c7:d7:bd:0c:df:c9:48:58:35:84:3e:b2:d7:99:60:09:ce:43:ab:6c:69:27 ------BEGIN CERTIFICATE----- -MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 -b3JrMSAwHgYDVQQDExdBZGRUcnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAx -MDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtB -ZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIDAeBgNV -BAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOC -AQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV -6tsfSlbunyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nX -GCwwfQ56HmIexkvA/X1id9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnP -dzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSGAa2Il+tmzV7R/9x98oTaunet3IAIx6eH -1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAwHM+A+WD+eeSI8t0A65RF -62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0GA1UdDgQW -BBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUw -AwEB/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDEL -MAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRU -cnVzdCBUVFAgTmV0d29yazEgMB4GA1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJv -b3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4JNojVhaTdt02KLmuG7jD8WS6 -IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL+YPoRNWyQSW/ -iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao -GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh -4SINhwBk/ox9Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQm -XiLsks3/QppEIW1cxeMiHV9HEufOX1362KqxMy3ZdvJOOjMMK7MtkAY= ------END CERTIFICATE----- - -# Issuer: CN=AddTrust Qualified CA Root O=AddTrust AB OU=AddTrust TTP Network -# Subject: CN=AddTrust Qualified CA Root O=AddTrust AB OU=AddTrust TTP Network -# Label: "AddTrust Qualified Certificates Root" -# Serial: 1 -# MD5 Fingerprint: 27:ec:39:47:cd:da:5a:af:e2:9a:01:65:21:a9:4c:bb -# SHA1 Fingerprint: 4d:23:78:ec:91:95:39:b5:00:7f:75:8f:03:3b:21:1e:c5:4d:8b:cf -# SHA256 Fingerprint: 80:95:21:08:05:db:4b:bc:35:5e:44:28:d8:fd:6e:c2:cd:e3:ab:5f:b9:7a:99:42:98:8e:b8:f4:dc:d0:60:16 ------BEGIN CERTIFICATE----- -MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 -b3JrMSMwIQYDVQQDExpBZGRUcnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1 -MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcxCzAJBgNVBAYTAlNFMRQwEgYDVQQK -EwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIzAh -BgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwq -xBb/4Oxx64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G -87B4pfYOQnrjfxvM0PC3KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i -2O+tCBGaKZnhqkRFmhJePp1tUvznoD1oL/BLcHwTOK28FSXx1s6rosAx1i+f4P8U -WfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GRwVY18BTcZTYJbqukB8c1 -0cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HUMIHRMB0G -A1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0T -AQH/BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6Fr -pGkwZzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQL -ExRBZGRUcnVzdCBUVFAgTmV0d29yazEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlm -aWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBABmrder4i2VhlRO6aQTv -hsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxGGuoYQ992zPlm -hpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X -dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3 -P6CxB9bpT9zeRXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9Y -iQBCYz95OdBEsIJuQRno3eDBiFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5no -xqE= ------END CERTIFICATE----- - # Issuer: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. # Subject: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. # Label: "Entrust Root Certification Authority" @@ -376,35 +220,6 @@ eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m 0vdXcDazv/wor3ElhVsT/h5/WrQ8 -----END CERTIFICATE----- -# Issuer: O=RSA Security Inc OU=RSA Security 2048 V3 -# Subject: O=RSA Security Inc OU=RSA Security 2048 V3 -# Label: "RSA Security 2048 v3" -# Serial: 13297492616345471454730593562152402946 -# MD5 Fingerprint: 77:0d:19:b1:21:fd:00:42:9c:3e:0c:a5:dd:0b:02:8e -# SHA1 Fingerprint: 25:01:90:19:cf:fb:d9:99:1c:b7:68:25:74:8d:94:5f:30:93:95:42 -# SHA256 Fingerprint: af:8b:67:62:a1:e5:28:22:81:61:a9:5d:5c:55:9e:e2:66:27:8f:75:d7:9e:83:01:89:a5:03:50:6a:bd:6b:4c ------BEGIN CERTIFICATE----- -MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6 -MRkwFwYDVQQKExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJp -dHkgMjA0OCBWMzAeFw0wMTAyMjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAX -BgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAbBgNVBAsTFFJTQSBTZWN1cml0eSAy -MDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt49VcdKA3Xtp -eafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7Jylg -/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGl -wSMiuLgbWhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnh -AMFRD0xS+ARaqn1y07iHKrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2 -PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP+Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpu -AWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB -BjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4EFgQUB8NR -MKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYc -HnmYv/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/ -Zb5gEydxiKRz44Rj0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+ -f00/FGj1EVDVwfSQpQgdMWD/YIwjVAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVO -rSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395nzIlQnQFgCi/vcEkllgVsRch -6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kApKnXwiJPZ9d3 -7CAFYd4= ------END CERTIFICATE----- - # Issuer: CN=GeoTrust Global CA O=GeoTrust Inc. # Subject: CN=GeoTrust Global CA O=GeoTrust Inc. # Label: "GeoTrust Global CA" @@ -433,35 +248,6 @@ hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV 5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== -----END CERTIFICATE----- -# Issuer: CN=GeoTrust Global CA 2 O=GeoTrust Inc. -# Subject: CN=GeoTrust Global CA 2 O=GeoTrust Inc. -# Label: "GeoTrust Global CA 2" -# Serial: 1 -# MD5 Fingerprint: 0e:40:a7:6c:de:03:5d:8f:d1:0f:e4:d1:8d:f9:6c:a9 -# SHA1 Fingerprint: a9:e9:78:08:14:37:58:88:f2:05:19:b0:6d:2b:0d:2b:60:16:90:7d -# SHA256 Fingerprint: ca:2d:82:a0:86:77:07:2f:8a:b6:76:4f:f0:35:67:6c:fe:3e:5e:32:5e:01:21:72:df:3f:92:09:6d:b7:9b:85 ------BEGIN CERTIFICATE----- -MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEW -MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFs -IENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQG -EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3Qg -R2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDvPE1A -PRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/NTL8 -Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hL -TytCOb1kLUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL -5mkWRxHCJ1kDs6ZgwiFAVvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7 -S4wMcoKK+xfNAGw6EzywhIdLFnopsk/bHdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe -2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE -FHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNHK266ZUap -EBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6td -EPx7srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv -/NgdRN3ggX+d6YvhZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywN -A0ZF66D0f0hExghAzN4bcLUprbqLOzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0 -abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkCx1YAzUm5s2x7UwQa4qjJqhIF -I8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqFH4z1Ir+rzoPz -4iIprn2DQKi6bA== ------END CERTIFICATE----- - # Issuer: CN=GeoTrust Universal CA O=GeoTrust Inc. # Subject: CN=GeoTrust Universal CA O=GeoTrust Inc. # Label: "GeoTrust Universal CA" @@ -570,33 +356,6 @@ LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pzzkWKsKZJ/0x9nXGIxHYdkFsd 398znM/jra6O1I7mT1GvFpLgXPYHDw== -----END CERTIFICATE----- -# Issuer: CN=Certum CA O=Unizeto Sp. z o.o. -# Subject: CN=Certum CA O=Unizeto Sp. z o.o. -# Label: "Certum Root CA" -# Serial: 65568 -# MD5 Fingerprint: 2c:8f:9f:66:1d:18:90:b1:47:26:9d:8e:86:82:8c:a9 -# SHA1 Fingerprint: 62:52:dc:40:f7:11:43:a2:2f:de:9e:f7:34:8e:06:42:51:b1:81:18 -# SHA256 Fingerprint: d8:e0:fe:bc:1d:b2:e3:8d:00:94:0f:37:d2:7d:41:34:4d:99:3e:73:4b:99:d5:65:6d:97:78:d4:d8:14:36:24 ------BEGIN CERTIFICATE----- -MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBM -MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD -QTAeFw0wMjA2MTExMDQ2MzlaFw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBM -MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD -QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6xwS7TT3zNJc4YPk/E -jG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdLkKWo -ePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GI -ULdtlkIJ89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapu -Ob7kky/ZR6By6/qmW6/KUz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUg -AKpoC6EahQGcxEZjgoi2IrHu/qpGWX7PNSzVttpd90gzFFS269lvzs2I1qsb2pY7 -HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEA -uI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+GXYkHAQa -TOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTg -xSvgGrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1q -CjqTE5s7FCMTY5w/0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5x -O/fIR/RpbxXyEV6DHpx8Uq79AtoSqFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs -6GAqm4VKQPNriiTsBhYscw== ------END CERTIFICATE----- - # Issuer: CN=AAA Certificate Services O=Comodo CA Limited # Subject: CN=AAA Certificate Services O=Comodo CA Limited # Label: "Comodo AAA Services root" @@ -630,72 +389,6 @@ l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== -----END CERTIFICATE----- -# Issuer: CN=Secure Certificate Services O=Comodo CA Limited -# Subject: CN=Secure Certificate Services O=Comodo CA Limited -# Label: "Comodo Secure Services root" -# Serial: 1 -# MD5 Fingerprint: d3:d9:bd:ae:9f:ac:67:24:b3:c8:1b:52:e1:b9:a9:bd -# SHA1 Fingerprint: 4a:65:d5:f4:1d:ef:39:b8:b8:90:4a:4a:d3:64:81:33:cf:c7:a1:d1 -# SHA256 Fingerprint: bd:81:ce:3b:4f:65:91:d1:1a:67:b5:fc:7a:47:fd:ef:25:52:1b:f9:aa:4e:18:b9:e3:df:2e:34:a7:80:3b:e8 ------BEGIN CERTIFICATE----- -MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEb -MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow -GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRp -ZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVow -fjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G -A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAiBgNV -BAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEB -BQADggEPADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPM -cm3ye5drswfxdySRXyWP9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3S -HpR7LZQdqnXXs5jLrLxkU0C8j6ysNstcrbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996 -CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rCoznl2yY4rYsK7hljxxwk -3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3Vp6ea5EQz -6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNV -HQ4EFgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1Ud -EwEB/wQFMAMBAf8wgYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2Rv -Y2EuY29tL1NlY3VyZUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRw -Oi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmww -DQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm4J4oqF7Tt/Q0 -5qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj -Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtI -gKvcnDe4IRRLDXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJ -aD61JlfutuC23bkpgHl9j6PwpCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDl -izeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1HRR3B7Hzs/Sk= ------END CERTIFICATE----- - -# Issuer: CN=Trusted Certificate Services O=Comodo CA Limited -# Subject: CN=Trusted Certificate Services O=Comodo CA Limited -# Label: "Comodo Trusted Services root" -# Serial: 1 -# MD5 Fingerprint: 91:1b:3f:6e:cd:9e:ab:ee:07:fe:1f:71:d2:b3:61:27 -# SHA1 Fingerprint: e1:9f:e3:0e:8b:84:60:9e:80:9b:17:0d:72:a8:c5:ba:6e:14:09:bd -# SHA256 Fingerprint: 3f:06:e5:56:81:d4:96:f5:be:16:9e:b5:38:9f:9f:2b:8f:f6:1e:17:08:df:68:81:72:48:49:cd:5d:27:cb:69 ------BEGIN CERTIFICATE----- -MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEb -MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow -GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0 -aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEwMDAwMDBaFw0yODEyMzEyMzU5NTla -MH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO -BgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUwIwYD -VQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWW -fnJSoBVC21ndZHoa0Lh73TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMt -TGo87IvDktJTdyR0nAducPy9C1t2ul/y/9c3S0pgePfw+spwtOpZqqPOSC+pw7IL -fhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6juljatEPmsbS9Is6FARW -1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsSivnkBbA7 -kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0G -A1UdDgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYD -VR0TAQH/BAUwAwEB/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21v -ZG9jYS5jb20vVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRo -dHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMu -Y3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8NtwuleGFTQQuS9/ -HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32 -pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxIS -jBc/lDb+XbDABHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+ -xqFx7D+gIIxmOom0jtTYsU0lR+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/Atyjcn -dBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O9y5Xt5hwXsjEeLBi ------END CERTIFICATE----- - # Issuer: CN=QuoVadis Root Certification Authority O=QuoVadis Limited OU=Root Certification Authority # Subject: CN=QuoVadis Root Certification Authority O=QuoVadis Limited OU=Root Certification Authority # Label: "QuoVadis Root CA" @@ -880,221 +573,6 @@ Tk6ezAyNlNzZRZxe7EJQY670XcSxEtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2 ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLHllpwrN9M -----END CERTIFICATE----- -# Issuer: CN=Staat der Nederlanden Root CA O=Staat der Nederlanden -# Subject: CN=Staat der Nederlanden Root CA O=Staat der Nederlanden -# Label: "Staat der Nederlanden Root CA" -# Serial: 10000010 -# MD5 Fingerprint: 60:84:7c:5a:ce:db:0c:d4:cb:a7:e9:fe:02:c6:a9:c0 -# SHA1 Fingerprint: 10:1d:fa:3f:d5:0b:cb:bb:9b:b5:60:0c:19:55:a4:1a:f4:73:3a:04 -# SHA256 Fingerprint: d4:1d:82:9e:8c:16:59:82:2a:f9:3f:ce:62:bf:fc:de:26:4f:c8:4e:8b:95:0c:5f:f2:75:d0:52:35:46:95:a3 ------BEGIN CERTIFICATE----- -MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJO -TDEeMBwGA1UEChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFh -dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEy -MTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4wHAYDVQQKExVTdGFhdCBkZXIgTmVk -ZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxhbmRlbiBSb290IENB -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFtvszn -ExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw71 -9tV2U02PjLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MO -hXeiD+EwR+4A5zN9RGcaC1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+U -tFE5A3+y3qcym7RHjm+0Sq7lr7HcsBthvJly3uSJt3omXdozSVtSnA71iq3DuD3o -BmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn622r+I/q85Ej0ZytqERAh -SQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRVHSAAMDww -OgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMv -cm9vdC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA -7Jbg0zTBLL9s+DANBgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k -/rvuFbQvBgwp8qiSpGEN/KtcCFtREytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzm -eafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbwMVcoEoJz6TMvplW0C5GUR5z6 -u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3ynGQI0DvDKcWy -7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR -iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw== ------END CERTIFICATE----- - -# Issuer: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com -# Subject: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com -# Label: "UTN DATACorp SGC Root CA" -# Serial: 91374294542884689855167577680241077609 -# MD5 Fingerprint: b3:a5:3e:77:21:6d:ac:4a:c0:c9:fb:d5:41:3d:ca:06 -# SHA1 Fingerprint: 58:11:9f:0e:12:82:87:ea:50:fd:d9:87:45:6f:4f:78:dc:fa:d6:d4 -# SHA256 Fingerprint: 85:fb:2f:91:dd:12:27:5a:01:45:b6:36:53:4f:84:02:4a:d6:8b:69:b8:ee:88:68:4f:f7:11:37:58:05:b3:48 ------BEGIN CERTIFICATE----- -MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCB -kzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZBgNVBAMTElVUTiAtIERBVEFDb3Jw -IFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBaMIGTMQswCQYDVQQG -EwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYD -VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cu -dXNlcnRydXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjAN -BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6 -E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ysraP6LnD43m77VkIVni5c7yPeIbkFdicZ -D0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlowHDyUwDAXlCCpVZvNvlK -4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA9P4yPykq -lXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulW -bfXv33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQAB -o4GrMIGoMAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRT -MtGzz3/64PGgXYVOktKeRR20TzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3Js -LnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dDLmNybDAqBgNVHSUEIzAhBggr -BgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3DQEBBQUAA4IB -AQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft -Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyj -j98C5OBxOvG0I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVH -KWss5nbZqSl9Mt3JNjy9rjXxEZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv -2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwPDPafepE39peC4N1xaf92P2BNPM/3 -mfnGV/TJVTl4uix5yaaIK/QI ------END CERTIFICATE----- - -# Issuer: CN=UTN-USERFirst-Hardware O=The USERTRUST Network OU=http://www.usertrust.com -# Subject: CN=UTN-USERFirst-Hardware O=The USERTRUST Network OU=http://www.usertrust.com -# Label: "UTN USERFirst Hardware Root CA" -# Serial: 91374294542884704022267039221184531197 -# MD5 Fingerprint: 4c:56:41:e5:0d:bb:2b:e8:ca:a3:ed:18:08:ad:43:39 -# SHA1 Fingerprint: 04:83:ed:33:99:ac:36:08:05:87:22:ed:bc:5e:46:00:e3:be:f9:d7 -# SHA256 Fingerprint: 6e:a5:47:41:d0:04:66:7e:ed:1b:48:16:63:4a:a3:a7:9e:6e:4b:96:95:0f:82:79:da:fc:8d:9b:d8:81:21:37 ------BEGIN CERTIFICATE----- -MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB -lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt -SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG -A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe -MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v -d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh -cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn -0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ -M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a -MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd -oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI -DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy -oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD -VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0 -dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy -bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF -BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM -//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli -CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE -CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t -3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS -KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA== ------END CERTIFICATE----- - -# Issuer: CN=Chambers of Commerce Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org -# Subject: CN=Chambers of Commerce Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org -# Label: "Camerfirma Chambers of Commerce Root" -# Serial: 0 -# MD5 Fingerprint: b0:01:ee:14:d9:af:29:18:94:76:8e:f1:69:33:2a:84 -# SHA1 Fingerprint: 6e:3a:55:a4:19:0c:19:5c:93:84:3c:c0:db:72:2e:31:30:61:f0:b1 -# SHA256 Fingerprint: 0c:25:8a:12:a5:67:4a:ef:25:f2:8b:a7:dc:fa:ec:ee:a3:48:e5:41:e6:f5:cc:4e:e6:3b:71:b3:61:60:6a:c3 ------BEGIN CERTIFICATE----- -MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEn -MCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQL -ExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMg -b2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAxNjEzNDNaFw0zNzA5MzAxNjEzNDRa -MH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZpcm1hIFNBIENJRiBB -ODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3JnMSIw -IAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0B -AQEFAAOCAQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtb -unXF/KGIJPov7coISjlUxFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0d -BmpAPrMMhe5cG3nCYsS4No41XQEMIwRHNaqbYE6gZj3LJgqcQKH0XZi/caulAGgq -7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jWDA+wWFjbw2Y3npuRVDM3 -0pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFVd9oKDMyX -roDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIG -A1UdEwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5j -aGFtYmVyc2lnbi5vcmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p -26EpW1eLTXYGduHRooowDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIA -BzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hhbWJlcnNpZ24ub3JnMCcGA1Ud -EgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYDVR0gBFEwTzBN -BgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz -aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEB -AAxBl8IahsAifJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZd -p0AJPaxJRUXcLo0waLIJuvvDL8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi -1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wNUPf6s+xCX6ndbcj0dc97wXImsQEc -XCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/nADydb47kMgkdTXg0 -eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1erfu -tGWaIZDgqtCYvDi1czyL+Nw= ------END CERTIFICATE----- - -# Issuer: CN=Global Chambersign Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org -# Subject: CN=Global Chambersign Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org -# Label: "Camerfirma Global Chambersign Root" -# Serial: 0 -# MD5 Fingerprint: c5:e6:7b:bf:06:d0:4f:43:ed:c4:7a:65:8a:fb:6b:19 -# SHA1 Fingerprint: 33:9b:6b:14:50:24:9b:55:7a:01:87:72:84:d9:e0:2f:c3:d2:d8:e9 -# SHA256 Fingerprint: ef:3c:b4:17:fc:8e:bf:6f:97:87:6c:9e:4e:ce:39:de:1e:a5:fe:64:91:41:d1:02:8b:7d:11:c0:b2:29:8c:ed ------BEGIN CERTIFICATE----- -MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEn -MCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQL -ExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENo -YW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYxNDE4WhcNMzcwOTMwMTYxNDE4WjB9 -MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgy -NzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEgMB4G -A1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUA -A4IBDQAwggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0 -Mi+ITaFgCPS3CU6gSS9J1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/s -QJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8Oby4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpV -eAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl6DJWk0aJqCWKZQbua795 -B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c8lCrEqWh -z0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0T -AQH/BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1i -ZXJzaWduLm9yZy9jaGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4w -TcbOX60Qq+UDpfqpFDAOBgNVHQ8BAf8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAH -MCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBjaGFtYmVyc2lnbi5vcmcwKgYD -VR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9yZzBbBgNVHSAE -VDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh -bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0B -AQUFAAOCAQEAPDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUM -bKGKfKX0j//U2K0X1S0E0T9YgOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXi -ryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJPJ7oKXqJ1/6v/2j1pReQvayZzKWG -VwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4IBHNfTIzSJRUTN3c -ecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREest2d/ -AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A== ------END CERTIFICATE----- - -# Issuer: CN=NetLock Kozjegyzoi (Class A) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Subject: CN=NetLock Kozjegyzoi (Class A) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Label: "NetLock Notary (Class A) Root" -# Serial: 259 -# MD5 Fingerprint: 86:38:6d:5e:49:63:6c:85:5c:db:6d:dc:94:b7:d0:f7 -# SHA1 Fingerprint: ac:ed:5f:65:53:fd:25:ce:01:5f:1f:7a:48:3b:6a:74:9f:61:78:c6 -# SHA256 Fingerprint: 7f:12:cd:5f:7e:5e:29:0e:c7:d8:51:79:d5:b7:2c:20:a5:be:75:08:ff:db:5b:f8:1a:b9:68:4a:7f:c9:f6:67 ------BEGIN CERTIFICATE----- -MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhV -MRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMe -TmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0 -dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFzcyBB -KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oXDTE5MDIxOTIzMTQ0 -N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQHEwhC -dWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQu -MRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBL -b3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSMD7tM9DceqQWC2ObhbHDqeLVu0ThEDaiD -zl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZz+qMkjvN9wfcZnSX9EUi -3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC/tmwqcm8 -WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LY -Oph7tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2Esi -NCubMvJIH5+hCoR64sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCC -ApswDgYDVR0PAQH/BAQDAgAGMBIGA1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4 -QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZRUxFTSEgRXplbiB0 -YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRhdGFz -aSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu -IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtm -ZWxlbG9zc2VnLWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMg -ZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVs -amFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJhc2EgbWVndGFsYWxoYXRv -IGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBzOi8vd3d3 -Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6 -ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1 -YW5jZSBhbmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3Qg -dG8gdGhlIE5ldExvY2sgQ1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRs -b2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBjcHNAbmV0bG9jay5uZXQuMA0G -CSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5ayZrU3/b39/zcT0mwBQO -xmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjPytoUMaFP -0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQ -QeJBCWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxk -f1qbFFgBJ34TUMdrKuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK -8CtmdWOMovsEPoMOmzbwGOQmIMOM8CgHrTwXZoi1/baI ------END CERTIFICATE----- - # Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com # Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com # Label: "XRamp Global CA Root" @@ -1192,58 +670,6 @@ VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q= -----END CERTIFICATE----- -# Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing -# Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing -# Label: "StartCom Certification Authority" -# Serial: 1 -# MD5 Fingerprint: 22:4d:8f:8a:fc:f7:35:c2:bb:57:34:90:7b:8b:22:16 -# SHA1 Fingerprint: 3e:2b:f7:f2:03:1b:96:f3:8c:e6:c4:d8:a8:5d:3e:2d:58:47:6a:0f -# SHA256 Fingerprint: c7:66:a9:be:f2:d4:07:1c:86:3a:31:aa:49:20:e8:13:b2:d1:98:60:8c:b7:b7:cf:e2:11:43:b8:36:df:09:ea ------BEGIN CERTIFICATE----- -MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW -MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg -Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM2WhcNMzYwOTE3MTk0NjM2WjB9 -MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi -U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh -cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA -A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk -pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf -OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C -Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT -Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi -HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM -Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w -+2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ -Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 -Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B -26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID -AQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE -FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9j -ZXJ0LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3Js -LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFM -BgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0 -Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5zdGFy -dGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3Rh -cnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlh -YmlsaXR5LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2Yg -dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFp -bGFibGUgYXQgaHR0cDovL2NlcnQuc3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJ -YIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNT -TCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAgEAFmyZ -9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8 -jhvh3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUW -FjgKXlf2Ysd6AgXmvB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJz -ewT4F+irsfMuXGRuczE6Eri8sxHkfY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1 -ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3fsNrarnDy0RLrHiQi+fHLB5L -EUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZEoalHmdkrQYu -L6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq -yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuC -O3NJo2pXh5Tl1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6V -um0ABj6y6koQOdjQK/W/7HW/lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkySh -NOsF/5oirpt9P/FlUQqmMGqz9IgcgA38corog14= ------END CERTIFICATE----- - # Issuer: O=Government Root Certification Authority # Subject: O=Government Root Certification Authority # Label: "Taiwan GRCA" @@ -1284,48 +710,6 @@ LMDDav7v3Aun+kbfYNucpllQdSNpc5Oy+fwC00fmcc4QAu4njIT/rEUNE1yDMuAl pYYsfPQS -----END CERTIFICATE----- -# Issuer: CN=Swisscom Root CA 1 O=Swisscom OU=Digital Certificate Services -# Subject: CN=Swisscom Root CA 1 O=Swisscom OU=Digital Certificate Services -# Label: "Swisscom Root CA 1" -# Serial: 122348795730808398873664200247279986742 -# MD5 Fingerprint: f8:38:7c:77:88:df:2c:16:68:2e:c2:e2:52:4b:b8:f9 -# SHA1 Fingerprint: 5f:3a:fc:0a:8b:64:f6:86:67:34:74:df:7e:a9:a2:fe:f9:fa:7a:51 -# SHA256 Fingerprint: 21:db:20:12:36:60:bb:2e:d4:18:20:5d:a1:1e:e7:a8:5a:65:e2:bc:6e:55:b5:af:7e:78:99:c8:a2:66:d9:2e ------BEGIN CERTIFICATE----- -MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBk -MQswCQYDVQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0 -YWwgQ2VydGlmaWNhdGUgU2VydmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3Qg -Q0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4MTgyMjA2MjBaMGQxCzAJBgNVBAYT -AmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGlnaXRhbCBDZXJ0aWZp -Y2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIICIjAN -BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9 -m2BtRsiMMW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdih -FvkcxC7mlSpnzNApbjyFNDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/ -TilftKaNXXsLmREDA/7n29uj/x2lzZAeAR81sH8A25Bvxn570e56eqeqDFdvpG3F -EzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkCb6dJtDZd0KTeByy2dbco -kdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn7uHbHaBu -HYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNF -vJbNcA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo -19AOeCMgkckkKmUpWyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjC -L3UcPX7ape8eYIVpQtPM+GP+HkM5haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJW -bjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNYMUJDLXT5xp6mig/p/r+D5kNX -JLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0hBBYw -FDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j -BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzc -K6FptWfUjNP9MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzf -ky9NfEBWMXrrpA9gzXrzvsMnjgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7Ik -Vh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQMbFamIp1TpBcahQq4FJHgmDmHtqB -sfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4HVtA4oJVwIHaM190e -3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtlvrsR -ls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ip -mXeascClOS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HH -b6D0jqTsNFFbjCYDcKF31QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksf -rK/7DZBaZmBwXarNeNQk7shBoJMBkpxqnvy5JMWzFYJ+vq6VK+uxwNrjAWALXmms -hFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCyx/yP2FS1k2Kdzs9Z+z0Y -zirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMWNY6E0F/6 -MBr1mmz0DlP5OlvRHA== ------END CERTIFICATE----- - # Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com # Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com # Label: "DigiCert Assured ID Root CA" @@ -1475,71 +859,6 @@ JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ -----END CERTIFICATE----- -# Issuer: CN=DST ACES CA X6 O=Digital Signature Trust OU=DST ACES -# Subject: CN=DST ACES CA X6 O=Digital Signature Trust OU=DST ACES -# Label: "DST ACES CA X6" -# Serial: 17771143917277623872238992636097467865 -# MD5 Fingerprint: 21:d8:4c:82:2b:99:09:33:a2:eb:14:24:8d:8e:5f:e8 -# SHA1 Fingerprint: 40:54:da:6f:1c:3f:40:74:ac:ed:0f:ec:cd:db:79:d1:53:fb:90:1d -# SHA256 Fingerprint: 76:7c:95:5a:76:41:2c:89:af:68:8e:90:a1:c7:0f:55:6c:fd:6b:60:25:db:ea:10:41:6d:7e:b6:83:1f:8c:40 ------BEGIN CERTIFICATE----- -MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBb -MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3Qx -ETAPBgNVBAsTCERTVCBBQ0VTMRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0w -MzExMjAyMTE5NThaFw0xNzExMjAyMTE5NThaMFsxCzAJBgNVBAYTAlVTMSAwHgYD -VQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UECxMIRFNUIEFDRVMx -FzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPu -ktKe1jzIDZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7 -gLFViYsx+tC3dr5BPTCapCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZH -fAjIgrrep4c9oW24MFbCswKBXy314powGCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4a -ahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPyMjwmR/onJALJfh1biEIT -ajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1UdEwEB/wQF -MAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rk -c3QuY29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjto -dHRwOi8vd3d3LnRydXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMt -aW5kZXguaHRtbDAdBgNVHQ4EFgQUCXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZI -hvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V25FYrnJmQ6AgwbN99Pe7lv7Uk -QIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6tFr8hlxCBPeP/ -h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq -nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpR -rscL9yuwNwXsvFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf2 -9w4LTJxoeHtxMcfrHuBnQfO3oKfN5XozNmr6mis= ------END CERTIFICATE----- - -# Issuer: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. (c) Kasım 2005 -# Subject: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. (c) Kasım 2005 -# Label: "TURKTRUST Certificate Services Provider Root 2" -# Serial: 1 -# MD5 Fingerprint: 37:a5:6e:d4:b1:25:84:97:b7:fd:56:15:7a:f9:a2:00 -# SHA1 Fingerprint: b4:35:d4:e1:11:9d:1c:66:90:a7:49:eb:b3:94:bd:63:7b:a7:82:b7 -# SHA256 Fingerprint: c4:70:cf:54:7e:23:02:b9:77:fb:29:dd:71:a8:9a:7b:6c:1f:60:77:7b:03:29:f5:60:17:f3:28:bf:4f:6b:e6 ------BEGIN CERTIFICATE----- -MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOc -UktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sx -c8SxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xS -S1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kg -SGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcNMDUxMTA3MTAwNzU3 -WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVrdHJv -bmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJU -UjEPMA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSw -bGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWe -LiAoYykgS2FzxLFtIDIwMDUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqeLCDe2JAOCtFp0if7qnef -J1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKIx+XlZEdh -R3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJ -Qv2gQrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGX -JHpsmxcPbe9TmJEr5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1p -zpwACPI2/z7woQ8arBT9pmAPAgMBAAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58S -Fq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8GA1UdEwEB/wQFMAMBAf8wDQYJ -KoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/nttRbj2hWyfIvwq -ECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4 -Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFz -gw2lGh1uEpJ+hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotH -uFEJjOp9zYhys2AzsfAKRO8P9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LS -y3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5UrbnBEI= ------END CERTIFICATE----- - # Issuer: CN=SwissSign Gold CA - G2 O=SwissSign AG # Subject: CN=SwissSign Gold CA - G2 O=SwissSign AG # Label: "SwissSign Gold CA - G2" @@ -1844,42 +1163,6 @@ wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHN pGxlaKFJdlxDydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey -----END CERTIFICATE----- -# Issuer: CN=WellsSecure Public Root Certificate Authority O=Wells Fargo WellsSecure OU=Wells Fargo Bank NA -# Subject: CN=WellsSecure Public Root Certificate Authority O=Wells Fargo WellsSecure OU=Wells Fargo Bank NA -# Label: "WellsSecure Public Root Certificate Authority" -# Serial: 1 -# MD5 Fingerprint: 15:ac:a5:c2:92:2d:79:bc:e8:7f:cb:67:ed:02:cf:36 -# SHA1 Fingerprint: e7:b4:f6:9d:61:ec:90:69:db:7e:90:a7:40:1a:3c:f4:7d:4f:e8:ee -# SHA256 Fingerprint: a7:12:72:ae:aa:a3:cf:e8:72:7f:7f:b3:9f:0f:b3:d1:e5:42:6e:90:60:b0:6e:e6:f1:3e:9a:3c:58:33:cd:43 ------BEGIN CERTIFICATE----- -MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMx -IDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxs -cyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9v -dCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDcxMjEzMTcwNzU0WhcNMjIxMjE0 -MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdl -bGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQD -DC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkw -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+r -WxxTkqxtnt3CxC5FlAM1iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjU -Dk/41itMpBb570OYj7OeUt9tkTmPOL13i0Nj67eT/DBMHAGTthP796EfvyXhdDcs -HqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8bJVhHlfXBIEyg1J55oNj -z7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiBK0HmOFaf -SZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/Slwxl -AgMBAAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqG -KGh0dHA6Ly9jcmwucGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0P -AQH/BAQDAgHGMB0GA1UdDgQWBBQmlRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0j -BIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGBi6SBiDCBhTELMAkGA1UEBhMC -VVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNX -ZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg -Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEB -ALkVsUSRzCPIK0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd -/ZDJPHV3V3p9+N701NX3leZ0bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pB -A4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSljqHyita04pO2t/caaH/+Xc/77szWn -k4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+esE2fDbbFwRnzVlhE9 -iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJtylv -2G0xffX8oRAHh84vWdw+WNs= ------END CERTIFICATE----- - # Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited # Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited # Label: "COMODO ECC Certification Authority" @@ -1904,67 +1187,6 @@ fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= -----END CERTIFICATE----- -# Issuer: CN=IGC/A O=PM/SGDN OU=DCSSI -# Subject: CN=IGC/A O=PM/SGDN OU=DCSSI -# Label: "IGC/A" -# Serial: 245102874772 -# MD5 Fingerprint: 0c:7f:dd:6a:f4:2a:b9:c8:9b:bd:20:7e:a9:db:5c:37 -# SHA1 Fingerprint: 60:d6:89:74:b5:c2:65:9e:8a:0f:c1:88:7c:88:d2:46:69:1b:18:2c -# SHA256 Fingerprint: b9:be:a7:86:0a:96:2e:a3:61:1d:ab:97:ab:6d:a3:e2:1c:10:68:b9:7d:55:57:5e:d0:e1:12:79:c1:1c:89:32 ------BEGIN CERTIFICATE----- -MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYT -AkZSMQ8wDQYDVQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQ -TS9TR0ROMQ4wDAYDVQQLEwVEQ1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG -9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMB4XDTAyMTIxMzE0MjkyM1oXDTIw -MTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIEwZGcmFuY2UxDjAM -BgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NTSTEO -MAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2 -LmZyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaI -s9z4iPf930Pfeo2aSVz2TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2 -xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCWSo7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4 -u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYyHF2fYPepraX/z9E0+X1b -F8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNdfrGoRpAx -Vs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGd -PDPQtQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNV -HSAEDjAMMAoGCCqBegF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAx -NjAfBgNVHSMEGDAWgBSjBS8YYFDCiQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUF -AAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RKq89toB9RlPhJy3Q2FLwV3duJ -L92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3QMZsyK10XZZOY -YLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg -Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2a -NjSaTFR+FwNIlQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R -0982gaEbeC9xs/FZTEYYKKuF0mBWWg== ------END CERTIFICATE----- - -# Issuer: O=SECOM Trust Systems CO.,LTD. OU=Security Communication EV RootCA1 -# Subject: O=SECOM Trust Systems CO.,LTD. OU=Security Communication EV RootCA1 -# Label: "Security Communication EV RootCA1" -# Serial: 0 -# MD5 Fingerprint: 22:2d:a6:01:ea:7c:0a:f7:f0:6c:56:43:3f:77:76:d3 -# SHA1 Fingerprint: fe:b8:c4:32:dc:f9:76:9a:ce:ae:3d:d8:90:8f:fd:28:86:65:64:7d -# SHA256 Fingerprint: a2:2d:ba:68:1e:97:37:6e:2d:39:7d:72:8a:ae:3a:9b:62:96:b9:fd:ba:60:bc:2e:11:f6:47:f2:c6:75:fb:37 ------BEGIN CERTIFICATE----- -MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDEl -MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMh -U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIz -MloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09N -IFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNlY3VyaXR5IENvbW11 -bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSE -RMqm4miO/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gO -zXppFodEtZDkBp2uoQSXWHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5 -bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4zZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDF -MxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4bepJz11sS6/vmsJWXMY1 -VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK9U2vP9eC -OKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0G -CSqGSIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HW -tWS3irO4G8za+6xmiEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZ -q51ihPZRwSzJIxXYKLerJRO1RuGGAv8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDb -EJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnWmHyojf6GPgcWkuF75x3sM3Z+ -Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEWT1MKZPlO9L9O -VL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 ------END CERTIFICATE----- - # Issuer: CN=OISTE WISeKey Global Root GA CA O=WISeKey OU=Copyright (c) 2005/OISTE Foundation Endorsed # Subject: CN=OISTE WISeKey Global Root GA CA O=WISeKey OU=Copyright (c) 2005/OISTE Foundation Endorsed # Label: "OISTE WISeKey Global Root GA CA" @@ -1997,57 +1219,6 @@ Fj4A4xylNoEYokxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ /L7fCg0= -----END CERTIFICATE----- -# Issuer: CN=Microsec e-Szigno Root CA O=Microsec Ltd. OU=e-Szigno CA -# Subject: CN=Microsec e-Szigno Root CA O=Microsec Ltd. OU=e-Szigno CA -# Label: "Microsec e-Szigno Root CA" -# Serial: 272122594155480254301341951808045322001 -# MD5 Fingerprint: f0:96:b6:2f:c5:10:d5:67:8e:83:25:32:e8:5e:2e:e5 -# SHA1 Fingerprint: 23:88:c9:d3:71:cc:9e:96:3d:ff:7d:3c:a7:ce:fc:d6:25:ec:19:0d -# SHA256 Fingerprint: 32:7a:3d:76:1a:ba:de:a0:34:eb:99:84:06:27:5c:b1:a4:77:6e:fd:ae:2f:df:6d:01:68:ea:1c:4f:55:67:d0 ------BEGIN CERTIFICATE----- -MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAw -cjELMAkGA1UEBhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNy -b3NlYyBMdGQuMRQwEgYDVQQLEwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9z -ZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0MDYxMjI4NDRaFw0xNzA0MDYxMjI4 -NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEWMBQGA1UEChMN -TWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMTGU1p -Y3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw -ggEKAoIBAQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2u -uO/TEdyB5s87lozWbxXGd36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+ -LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/NoqdNAoI/gqyFxuEPkEeZlApxcpMqyabA -vjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjcQR/Ji3HWVBTji1R4P770 -Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJPqW+jqpx -62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcB -AQRbMFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3Aw -LQYIKwYBBQUHMAKGIWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAP -BgNVHRMBAf8EBTADAQH/MIIBcwYDVR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIB -AQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3LmUtc3ppZ25vLmh1L1NaU1ov -MIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0AdAB2AOEAbgB5 -ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn -AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABT -AHoAbwBsAGcA4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABh -ACAAcwB6AGUAcgBpAG4AdAAgAGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABo -AHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMAegBpAGcAbgBvAC4AaAB1AC8AUwBa -AFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6Ly93d3cuZS1zemln -bm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NOPU1p -Y3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxP -PU1pY3Jvc2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZv -Y2F0aW9uTGlzdDtiaW5hcnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuB -EGluZm9AZS1zemlnbm8uaHWkdzB1MSMwIQYDVQQDDBpNaWNyb3NlYyBlLVN6aWdu -w7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhTWjEWMBQGA1UEChMNTWlj -cm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhVMIGsBgNV -HSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJI -VTERMA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDAS -BgNVBAsTC2UtU3ppZ25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBS -b290IENBghEAzLjnv04pGv2i3GalHCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS -8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMTnGZjWS7KXHAM/IO8VbH0jgds -ZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FEaGAHQzAxQmHl -7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a -86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfR -hUZLphK3dehKyVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/ -MPMMNz7UwiiAc7EBt51alhQBS6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU= ------END CERTIFICATE----- - # Issuer: CN=Certigna O=Dhimyotis # Subject: CN=Certigna O=Dhimyotis # Label: "Certigna" @@ -2179,114 +1350,6 @@ W9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmODBCEIZ43ygknQW/2xzQ+D hNQ+IIX3Sj0rnP0qCglN6oH4EZw= -----END CERTIFICATE----- -# Issuer: CN=TÜBİTAK UEKAE Kök Sertifika Hizmet Sağlayıcısı - Sürüm 3 O=Türkiye Bilimsel ve Teknolojik Araştırma Kurumu - TÜBİTAK OU=Ulusal Elektronik ve Kriptoloji Araştırma Enstitüsü - UEKAE/Kamu Sertifikasyon Merkezi -# Subject: CN=TÜBİTAK UEKAE Kök Sertifika Hizmet Sağlayıcısı - Sürüm 3 O=Türkiye Bilimsel ve Teknolojik Araştırma Kurumu - TÜBİTAK OU=Ulusal Elektronik ve Kriptoloji Araştırma Enstitüsü - UEKAE/Kamu Sertifikasyon Merkezi -# Label: "T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3" -# Serial: 17 -# MD5 Fingerprint: ed:41:f5:8c:50:c5:2b:9c:73:e6:ee:6c:eb:c2:a8:26 -# SHA1 Fingerprint: 1b:4b:39:61:26:27:6b:64:91:a2:68:6d:d7:02:43:21:2d:1f:1d:96 -# SHA256 Fingerprint: e4:c7:34:30:d7:a5:b5:09:25:df:43:37:0a:0d:21:6e:9a:79:b9:d6:db:83:73:a0:c6:9e:b1:cc:31:c7:c5:2a ------BEGIN CERTIFICATE----- -MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRS -MRgwFgYDVQQHDA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJp -bGltc2VsIHZlIFRla25vbG9qaWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSw -VEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ryb25payB2ZSBLcmlwdG9sb2ppIEFy -YcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNVBAsMGkthbXUgU2Vy -dGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUgS8O2 -ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAe -Fw0wNzA4MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIx -GDAWBgNVBAcMD0dlYnplIC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmls -aW1zZWwgdmUgVGVrbm9sb2ppayBBcmHFn3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBU -QUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZlIEtyaXB0b2xvamkgQXJh -xZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2FtdSBTZXJ0 -aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7Zr -IFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIB -IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4h -gb46ezzb8R1Sf1n68yJMlaCQvEhOEav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yK -O7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1xnnRFDDtG1hba+818qEhTsXO -fJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR6Oqeyjh1jmKw -lZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL -hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQID -AQABo0IwQDAdBgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/ -BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmP -NOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4N5EY3ATIZJkrGG2AA1nJrvhY0D7t -wyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLTy9LQQfMmNkqblWwM -7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYhLBOh -gLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5n -oN+J1q2MdqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUs -yZyQ2uypQjyttgI= ------END CERTIFICATE----- - -# Issuer: CN=Buypass Class 2 CA 1 O=Buypass AS-983163327 -# Subject: CN=Buypass Class 2 CA 1 O=Buypass AS-983163327 -# Label: "Buypass Class 2 CA 1" -# Serial: 1 -# MD5 Fingerprint: b8:08:9a:f0:03:cc:1b:0d:c8:6c:0b:76:a1:75:64:23 -# SHA1 Fingerprint: a0:a1:ab:90:c9:fc:84:7b:3b:12:61:e8:97:7d:5f:d3:22:61:d3:cc -# SHA256 Fingerprint: 0f:4e:9c:dd:26:4b:02:55:50:d1:70:80:63:40:21:4f:e9:44:34:c9:b0:2f:69:7e:c7:10:fc:5f:ea:fb:5e:38 ------BEGIN CERTIFICATE----- -MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEd -MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3Mg -Q2xhc3MgMiBDQSAxMB4XDTA2MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzEL -MAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MR0wGwYD -VQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7McXA0 -ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLX -l18xoS830r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVB -HfCuuCkslFJgNJQ72uA40Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B -5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/RuFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3 -WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNCMEAwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0PAQH/BAQD -AgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLP -gcIV1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+ -DKhQ7SLHrQVMdvvt7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKu -BctN518fV4bVIJwo+28TOPX2EZL2fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHs -h7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5wwDX3OaJdZtB7WZ+oRxKaJyOk -LY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho ------END CERTIFICATE----- - -# Issuer: CN=EBG Elektronik Sertifika Hizmet Sağlayıcısı O=EBG Bilişim Teknolojileri ve Hizmetleri A.Ş. -# Subject: CN=EBG Elektronik Sertifika Hizmet Sağlayıcısı O=EBG Bilişim Teknolojileri ve Hizmetleri A.Ş. -# Label: "EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1" -# Serial: 5525761995591021570 -# MD5 Fingerprint: 2c:20:26:9d:cb:1a:4a:00:85:b5:b7:5a:ae:c2:01:37 -# SHA1 Fingerprint: 8c:96:ba:eb:dd:2b:07:07:48:ee:30:32:66:a0:f3:98:6e:7c:ae:58 -# SHA256 Fingerprint: 35:ae:5b:dd:d8:f7:ae:63:5c:ff:ba:56:82:a8:f0:0b:95:f4:84:62:c7:10:8e:e9:a0:e5:29:2b:07:4a:af:b2 ------BEGIN CERTIFICATE----- -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 -QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT ------END CERTIFICATE----- - # Issuer: O=certSIGN OU=certSIGN ROOT CA # Subject: O=certSIGN OU=certSIGN ROOT CA # Label: "certSIGN ROOT CA" @@ -2315,64 +1378,6 @@ i/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7NzTogVZ96edhBiIL5VaZVDADlN 9u6wWk5JRFRYX0KD -----END CERTIFICATE----- -# Issuer: CN=CNNIC ROOT O=CNNIC -# Subject: CN=CNNIC ROOT O=CNNIC -# Label: "CNNIC ROOT" -# Serial: 1228079105 -# MD5 Fingerprint: 21:bc:82:ab:49:c4:13:3b:4b:b2:2b:5c:6b:90:9c:19 -# SHA1 Fingerprint: 8b:af:4c:9b:1d:f0:2a:92:f7:da:12:8e:b9:1b:ac:f4:98:60:4b:6f -# SHA256 Fingerprint: e2:83:93:77:3d:a8:45:a6:79:f2:08:0c:c7:fb:44:a3:b7:a1:c3:79:2c:b7:eb:77:29:fd:cb:6a:8d:99:ae:a7 ------BEGIN CERTIFICATE----- -MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJD -TjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2 -MDcwOTE0WhcNMjcwNDE2MDcwOTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMF -Q05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwggEiMA0GCSqGSIb3DQEBAQUAA4IB -DwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzDo+/hn7E7SIX1mlwh -IhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tizVHa6 -dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZO -V/kbZKKTVrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrC -GHn2emU1z5DrvTOTn1OrczvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gN -v7Sg2Ca+I19zN38m5pIEo3/PIKe38zrKy5nLAgMBAAGjczBxMBEGCWCGSAGG+EIB -AQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscCwQ7vptU7ETAPBgNVHRMB -Af8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991SlgrHAsEO -76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnK -OOK5Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvH -ugDnuL8BV8F3RTIMO/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7Hgvi -yJA/qIYM/PmLXoXLT1tLYhFHxUV8BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fL -buXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2G8kS1sHNzYDzAgE8yGnLRUhj -2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5mmxE= ------END CERTIFICATE----- - -# Issuer: O=Japanese Government OU=ApplicationCA -# Subject: O=Japanese Government OU=ApplicationCA -# Label: "ApplicationCA - Japanese Government" -# Serial: 49 -# MD5 Fingerprint: 7e:23:4e:5b:a7:a5:b4:25:e9:00:07:74:11:62:ae:d6 -# SHA1 Fingerprint: 7f:8a:b0:cf:d0:51:87:6a:66:f3:36:0f:47:c8:8d:8c:d3:35:fc:74 -# SHA256 Fingerprint: 2d:47:43:7d:e1:79:51:21:5a:12:f3:c5:8e:51:c7:29:a5:80:26:ef:1f:cc:0a:5f:b3:d9:dc:01:2f:60:0d:19 ------BEGIN CERTIFICATE----- -MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEc -MBoGA1UEChMTSmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRp -b25DQTAeFw0wNzEyMTIxNTAwMDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYT -AkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zlcm5tZW50MRYwFAYDVQQLEw1BcHBs -aWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp23gdE6H -j6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4fl+K -f5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55 -IrmTwcrNwVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cw -FO5cjFW6WY2H/CPek9AEjP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDiht -QWEjdnjDuGWk81quzMKq2edY3rZ+nYVunyoKb58DKTCXKB28t89UKU5RMfkntigm -/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRUWssmP3HMlEYNllPqa0jQ -k/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNVBAYTAkpQ -MRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOC -seODvOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD -ggEBADlqRHZ3ODrso2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJ -hyzjVOGjprIIC8CFqMjSnHH2HZ9g/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+ -eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYDio+nEhEMy/0/ecGc/WLuo89U -DNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmWdupwX3kSa+Sj -B1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL -rosot4LKGAfmt1t06SAZf7IbiVQ= ------END CERTIFICATE----- - # Issuer: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only # Subject: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only # Label: "GeoTrust Primary Certification Authority - G3" @@ -2552,9 +1557,9 @@ kf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMDA2gAMGUCMGYhDBgmYFo4e1ZC FRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== -----END CERTIFICATE----- -# Issuer: CN=NetLock Arany (Class Gold) Főtanúsítvány O=NetLock Kft. OU=Tanúsítványkiadók (Certification Services) -# Subject: CN=NetLock Arany (Class Gold) Főtanúsítvány O=NetLock Kft. OU=Tanúsítványkiadók (Certification Services) -# Label: "NetLock Arany (Class Gold) Főtanúsítvány" +# Issuer: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) +# Subject: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) +# Label: "NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny" # Serial: 80544274841616 # MD5 Fingerprint: c5:a1:b7:ff:73:dd:d6:d7:34:32:18:df:fc:3c:ad:88 # SHA1 Fingerprint: 06:08:3f:59:3f:15:a1:04:a0:69:a4:6b:a9:03:d0:06:b7:97:09:91 @@ -2625,75 +1630,6 @@ Y7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoVIPVVYpbtbZNQvOSqeK3Z ywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm66+KAQ== -----END CERTIFICATE----- -# Issuer: CN=CA Disig O=Disig a.s. -# Subject: CN=CA Disig O=Disig a.s. -# Label: "CA Disig" -# Serial: 1 -# MD5 Fingerprint: 3f:45:96:39:e2:50:87:f7:bb:fe:98:0c:3c:20:98:e6 -# SHA1 Fingerprint: 2a:c8:d5:8b:57:ce:bf:2f:49:af:f2:fc:76:8f:51:14:62:90:7a:41 -# SHA256 Fingerprint: 92:bf:51:19:ab:ec:ca:d0:b1:33:2d:c4:e1:d0:5f:ba:75:b5:67:90:44:ee:0c:a2:6e:93:1f:74:4f:2f:33:cf ------BEGIN CERTIFICATE----- -MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzET -MBEGA1UEBxMKQnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UE -AxMIQ0EgRGlzaWcwHhcNMDYwMzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQsw -CQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcg -YS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw -ggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgmGErE -Nx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnX -mjxUizkDPw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYD -XcDtab86wYqg6I7ZuUUohwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhW -S8+2rT+MitcE5eN4TPWGqvWP+j1scaMtymfraHtuM6kMgiioTGohQBUgDCZbg8Kp -FhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8wgfwwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0PAQH/BAQD -AgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cu -ZGlzaWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5z -ay9jYS9jcmwvY2FfZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2sv -Y2EvY3JsL2NhX2Rpc2lnLmNybDAaBgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEw -DQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59tWDYcPQuBDRIrRhCA/ec8J9B6 -yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3mkkp7M5+cTxq -EEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/ -CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeB -EicTXxChds6KezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFN -PGO+I++MzVpQuGhU+QqZMxEA4Z7CRneC9VkGjCFMhwnN5ag= ------END CERTIFICATE----- - -# Issuer: CN=Juur-SK O=AS Sertifitseerimiskeskus -# Subject: CN=Juur-SK O=AS Sertifitseerimiskeskus -# Label: "Juur-SK" -# Serial: 999181308 -# MD5 Fingerprint: aa:8e:5d:d9:f8:db:0a:58:b7:8d:26:87:6c:82:35:55 -# SHA1 Fingerprint: 40:9d:4b:d9:17:b5:5c:27:b6:9b:64:cb:98:22:44:0d:cd:09:b8:89 -# SHA256 Fingerprint: ec:c3:e9:c3:40:75:03:be:e0:91:aa:95:2f:41:34:8f:f8:8b:aa:86:3b:22:64:be:fa:c8:07:90:15:74:e9:39 ------BEGIN CERTIFICATE----- -MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcN -AQkBFglwa2lAc2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZp -dHNlZXJpbWlza2Vza3VzMRAwDgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMw -MVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMQsw -CQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEQ -MA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -AIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOB -SvZiF3tfTQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkz -ABpTpyHhOEvWgxutr2TC+Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvH -LCu3GFH+4Hv2qEivbDtPL+/40UceJlfwUR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMP -PbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDaTpxt4brNj3pssAki14sL -2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQFMAMBAf8w -ggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwIC -MIHDHoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDk -AGwAagBhAHMAdABhAHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0 -AHMAZQBlAHIAaQBtAGkAcwBrAGUAcwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABz -AGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABrAGkAbgBuAGkAdABhAG0AaQBz -AGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nwcy8wKwYDVR0f -BCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE -FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcY -P2/v6X2+MA4GA1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOi -CfP+JmeaUOTDBS8rNXiRTHyoERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+g -kcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyLabVAyJRld/JXIWY7zoVAtjNjGr95 -HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678IIbsSt4beDI3poHS -na9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkhMp6q -qIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0Z -TbvGRNs2yyqcjg== ------END CERTIFICATE----- - # Issuer: CN=Hongkong Post Root CA 1 O=Hongkong Post # Subject: CN=Hongkong Post Root CA 1 O=Hongkong Post # Label: "Hongkong Post Root CA 1" @@ -2751,47 +1687,6 @@ pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061lgeLKBObjBmN QSdJQO7e5iNEOdyhIta6A/I= -----END CERTIFICATE----- -# Issuer: CN=ACEDICOM Root O=EDICOM OU=PKI -# Subject: CN=ACEDICOM Root O=EDICOM OU=PKI -# Label: "ACEDICOM Root" -# Serial: 7029493972724711941 -# MD5 Fingerprint: 42:81:a0:e2:1c:e3:55:10:de:55:89:42:65:96:22:e6 -# SHA1 Fingerprint: e0:b4:32:2e:b2:f6:a5:68:b6:54:53:84:48:18:4a:50:36:87:43:84 -# SHA256 Fingerprint: 03:95:0f:b4:9a:53:1f:3e:19:91:94:23:98:df:a9:e0:ea:32:d7:ba:1c:dd:9b:c8:5d:b5:7e:d9:40:0b:43:4a ------BEGIN CERTIFICATE----- -MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UE -AwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00x -CzAJBgNVBAYTAkVTMB4XDTA4MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEW -MBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZF -RElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC -AgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHkWLn7 -09gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7 -XBZXehuDYAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5P -Grjm6gSSrj0RuVFCPYewMYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAK -t0SdE3QrwqXrIhWYENiLxQSfHY9g5QYbm8+5eaA9oiM/Qj9r+hwDezCNzmzAv+Yb -X79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbkHQl/Sog4P75n/TSW9R28 -MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTTxKJxqvQU -fecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI -2Sf23EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyH -K9caUPgn6C9D4zq92Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEae -ZAwUswdbxcJzbPEHXEUkFDWug/FqTYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAP -BgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz4SsrSbbXc6GqlPUB53NlTKxQ -MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU9QHnc2VMrFAw -RAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv -bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWIm -fQwng4/F9tqgaHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3 -gvoFNTPhNahXwOf9jU8/kzJPeGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKe -I6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1PwkzQSulgUV1qzOMPPKC8W64iLgpq0i -5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1ThCojz2GuHURwCRi -ipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oIKiMn -MCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZ -o5NjEFIqnxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6 -zqylfDJKZ0DcMDQj3dcEI2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacN -GHk0vFQYXlPKNFHtRQrmjseCNj6nOGOpMCwXEGCSn1WHElkQwg9naRHMTh5+Spqt -r0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3otkYNbn5XOmeUwssfnHdK -Z05phkOTOPu220+DkdRgfks+KzgHVZhepA== ------END CERTIFICATE----- - # Issuer: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. # Subject: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. # Label: "Microsec e-Szigno Root CA 2009" @@ -3277,122 +2172,6 @@ VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI 03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= -----END CERTIFICATE----- -# Issuer: CN=Certinomis - Autorité Racine O=Certinomis OU=0002 433998903 -# Subject: CN=Certinomis - Autorité Racine O=Certinomis OU=0002 433998903 -# Label: "Certinomis - Autorité Racine" -# Serial: 1 -# MD5 Fingerprint: 7f:30:78:8c:03:e3:ca:c9:0a:e2:c9:ea:1e:aa:55:1a -# SHA1 Fingerprint: 2e:14:da:ec:28:f0:fa:1e:8e:38:9a:4e:ab:eb:26:c0:0a:d3:83:c3 -# SHA256 Fingerprint: fc:bf:e2:88:62:06:f7:2b:27:59:3c:8b:07:02:97:e1:2d:76:9e:d1:0e:d7:93:07:05:a8:09:8e:ff:c1:4d:17 ------BEGIN CERTIFICATE----- -MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjET -MBEGA1UEChMKQ2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAk -BgNVBAMMHUNlcnRpbm9taXMgLSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4 -Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkGA1UEBhMCRlIxEzARBgNVBAoTCkNl -cnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYwJAYDVQQDDB1DZXJ0 -aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jY -F1AMnmHawE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N -8y4oH3DfVS9O7cdxbwlyLu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWe -rP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K -/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92NjMD2AR5vpTESOH2VwnHu -7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9qc1pkIuVC -28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6 -lSTClrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1E -nn1So2+WLhl+HPNbxxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB -0iSVL1N6aaLwD4ZFjliCK0wi1F6g530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql09 -5gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna4NH4+ej9Uji29YnfAgMBAAGj -WzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBQN -jLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ -KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9s -ov3/4gbIOZ/xWqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZM -OH8oMDX/nyNTt7buFHAAQCvaR6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q -619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40nJ+U8/aGH88bc62UeYdocMMzpXDn -2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1BCxMjidPJC+iKunqj -o3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjvJL1v -nxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG -5ERQL1TEqkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWq -pdEdnV1j6CTmNhTih60bWfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZb -dsLLO7XSAPCjDuGtbkD326C00EauFddEwk01+dIL8hf2rGbVJLJP0RyZwG71fet0 -BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/vgt2Fl43N+bYdJeimUV5 ------END CERTIFICATE----- - -# Issuer: CN=Root CA Generalitat Valenciana O=Generalitat Valenciana OU=PKIGVA -# Subject: CN=Root CA Generalitat Valenciana O=Generalitat Valenciana OU=PKIGVA -# Label: "Root CA Generalitat Valenciana" -# Serial: 994436456 -# MD5 Fingerprint: 2c:8c:17:5e:b1:54:ab:93:17:b5:36:5a:db:d1:c6:f2 -# SHA1 Fingerprint: a0:73:e5:c5:bd:43:61:0d:86:4c:21:13:0a:85:58:57:cc:9c:ea:46 -# SHA256 Fingerprint: 8c:4e:df:d0:43:48:f3:22:96:9e:7e:29:a4:cd:4d:ca:00:46:55:06:1c:16:e1:b0:76:42:2e:f3:42:ad:63:0e ------BEGIN CERTIFICATE----- -MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJF -UzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJ -R1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcN -MDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3WjBoMQswCQYDVQQGEwJFUzEfMB0G -A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScw -JQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+ -WmmmO3I2F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKj -SgbwJ/BXufjpTjJ3Cj9BZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGl -u6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQD0EbtFpKd71ng+CT516nDOeB0/RSrFOy -A8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXteJajCq+TA81yc477OMUxk -Hl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMBAAGjggM7 -MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBr -aS5ndmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIIC -IwYKKwYBBAG/VQIBADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8A -cgBpAGQAYQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIA -YQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIAYQBsAGkAdABhAHQAIABWAGEA -bABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQByAGEAYwBpAPMA -bgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA -aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMA -aQBvAG4AYQBtAGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQA -ZQAgAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEA -YwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBuAHQAcgBhACAAZQBuACAAbABhACAA -ZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAAOgAvAC8AdwB3AHcA -LgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0dHA6 -Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+y -eAT8MIGVBgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQsw -CQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0G -A1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVu -Y2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRhTvW1yEICKrNcda3Fbcrn -lD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdzCkj+IHLt -b8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg -9J63NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XF -ducTZnV+ZfsBn5OHiJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmC -IoaZM3Fa6hlXPZHNqcCjbgcTpsnt+GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM= ------END CERTIFICATE----- - -# Issuer: CN=A-Trust-nQual-03 O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH OU=A-Trust-nQual-03 -# Subject: CN=A-Trust-nQual-03 O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH OU=A-Trust-nQual-03 -# Label: "A-Trust-nQual-03" -# Serial: 93214 -# MD5 Fingerprint: 49:63:ae:27:f4:d5:95:3d:d8:db:24:86:b8:9c:07:53 -# SHA1 Fingerprint: d3:c0:63:f2:19:ed:07:3e:34:ad:5d:75:0b:32:76:29:ff:d5:9a:f2 -# SHA256 Fingerprint: 79:3c:bf:45:59:b9:fd:e3:8a:b2:2d:f1:68:69:f6:98:81:ae:14:c4:b0:13:9a:c7:88:a7:8a:1a:fc:ca:02:fb ------BEGIN CERTIFICATE----- -MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R -dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTA1MDgxNzIyMDAw -MFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy -dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52 -ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMM -EEEtVHJ1c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQCtPWFuA/OQO8BBC4SAzewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUj -lUC5B3ilJfYKvUWG6Nm9wASOhURh73+nyfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZ -znF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPESU7l0+m0iKsMrmKS1GWH -2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4iHQF63n1 -k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs -2e3Vcuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYD -VR0OBAoECERqlWdVeRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC -AQEAVdRU0VlIXLOThaq/Yy/kgM40ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fG -KOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmrsQd7TZjTXLDR8KdCoLXEjq/+ -8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZdJXDRZslo+S4R -FGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS -mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmE -DNuxUCAKGkq6ahq97BvIxYSazQ== ------END CERTIFICATE----- - # Issuer: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA # Subject: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA # Label: "TWCA Root Certification Authority" @@ -3554,96 +2333,6 @@ jZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYliB6XzCGcKQEN ZetX2fNXlrtIzYE= -----END CERTIFICATE----- -# Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing -# Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing -# Label: "StartCom Certification Authority" -# Serial: 45 -# MD5 Fingerprint: c9:3b:0d:84:41:fc:a4:76:79:23:08:57:de:10:19:16 -# SHA1 Fingerprint: a3:f1:33:3f:e2:42:bf:cf:c5:d1:4e:8f:39:42:98:40:68:10:d1:a0 -# SHA256 Fingerprint: e1:78:90:ee:09:a3:fb:f4:f4:8b:9c:41:4a:17:d6:37:b7:a5:06:47:e9:bc:75:23:22:72:7f:cc:17:42:a9:11 ------BEGIN CERTIFICATE----- -MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEW -MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg -Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM3WhcNMzYwOTE3MTk0NjM2WjB9 -MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi -U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh -cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA -A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk -pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf -OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C -Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT -Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi -HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM -Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w -+2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ -Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 -Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B -26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID -AQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD -VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFul -F2mHMMo0aEPQQa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCC -ATgwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5w -ZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2ludGVybWVk -aWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENvbW1lcmNpYWwgKFN0 -YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0aGUg -c2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0 -aWZpY2F0aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93 -d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgG -CWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1 -dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5fPGFf59Jb2vKXfuM/gTF -wWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWmN3PH/UvS -Ta0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst -0OcNOrg+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNc -pRJvkrKTlMeIFw6Ttn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKl -CcWw0bdT82AUuoVpaiF8H3VhFyAXe2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVF -P0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA2MFrLH9ZXF2RsXAiV+uKa0hK -1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBsHvUwyKMQ5bLm -KhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE -JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ -8dCAWZvLMdibD4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnm -fyWl8kgAwKQB2j8= ------END CERTIFICATE----- - -# Issuer: CN=StartCom Certification Authority G2 O=StartCom Ltd. -# Subject: CN=StartCom Certification Authority G2 O=StartCom Ltd. -# Label: "StartCom Certification Authority G2" -# Serial: 59 -# MD5 Fingerprint: 78:4b:fb:9e:64:82:0a:d3:b8:4c:62:f3:64:f2:90:64 -# SHA1 Fingerprint: 31:f1:fd:68:22:63:20:ee:c6:3b:3f:9d:ea:4a:3e:53:7c:7c:39:17 -# SHA256 Fingerprint: c7:ba:65:67:de:93:a7:98:ae:1f:aa:79:1e:71:2d:37:8f:ae:1f:93:c4:39:7f:ea:44:1b:b7:cb:e6:fd:59:95 ------BEGIN CERTIFICATE----- -MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEW -MBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlm -aWNhdGlvbiBBdXRob3JpdHkgRzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1 -OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoG -A1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRzIwggIiMA0G -CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8Oo1XJ -JZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsD -vfOpL9HG4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnoo -D/Uefyf3lLE3PbfHkffiAez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/ -Q0kGi4xDuFby2X8hQxfqp0iVAXV16iulQ5XqFYSdCI0mblWbq9zSOdIxHWDirMxW -RST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbsO+wmETRIjfaAKxojAuuK -HDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8HvKTlXcxN -nw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM -0D4LnMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/i -UUjXuG+v+E5+M5iSFGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9 -Ha90OrInwMEePnWjFqmveiJdnxMaz6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHg -TuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE -AwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJKoZIhvcNAQEL -BQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K -2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfX -UfEpY9Z1zRbkJ4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl -6/2o1PXWT6RbdejF0mCy2wl+JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK -9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG/+gyRr61M3Z3qAFdlsHB1b6uJcDJ -HgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTcnIhT76IxW1hPkWLI -wpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/XldblhY -XzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5l -IxKVCCIcl85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoo -hdVddLHRDiBYmxOlsGOm7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulr -so8uBtjRkcfGEvRM/TAXw8HaOFvjqermobp573PYtlNXLfbQ4ddI ------END CERTIFICATE----- - # Issuer: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 # Subject: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 # Label: "Buypass Class 2 Root CA" @@ -3785,39 +2474,6 @@ iAYLtqZLICjU3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/v GVCJYMzpJJUPwssd8m92kMfMdcGWxZ0= -----END CERTIFICATE----- -# Issuer: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. (c) Aralık 2007 -# Subject: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. (c) Aralık 2007 -# Label: "TURKTRUST Certificate Services Provider Root 2007" -# Serial: 1 -# MD5 Fingerprint: 2b:70:20:56:86:82:a0:18:c8:07:53:12:28:70:21:72 -# SHA1 Fingerprint: f1:7f:6f:b6:31:dc:99:e3:a3:c8:7f:fe:1c:f1:81:10:88:d9:60:33 -# SHA256 Fingerprint: 97:8c:d9:66:f2:fa:a0:7b:a7:aa:95:00:d9:c0:2e:9d:77:f2:cd:ad:a6:ad:6b:a7:4a:f4:b9:1c:66:59:3c:50 ------BEGIN CERTIFICATE----- -MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOc -UktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sx -c8SxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xS -S1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kg -SGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4XDTA3MTIyNTE4Mzcx -OVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxla3Ry -b25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMC -VFIxDzANBgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDE -sGxldGnFn2ltIHZlIEJpbGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7F -ni4gKGMpIEFyYWzEsWsgMjAwNzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9NYvDdE3ePYakqtdTyuTFY -KTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQvKUmi8wUG -+7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveG -HtyaKhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6P -IzdezKKqdfcYbwnTrqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M -733WB2+Y8a+xwXrXgTW4qhe04MsCAwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHk -Yb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0G -CSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/sPx+EnWVUXKgW -AkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I -aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5 -mxRZNTZPz/OOXl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsa -XRik7r4EW5nVcV9VZWRi1aKbBFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZ -qxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAKpoRq0Tl9 ------END CERTIFICATE----- - # Issuer: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH # Subject: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH # Label: "D-TRUST Root Class 3 CA 2 2009" @@ -3884,222 +2540,6 @@ xpeG0ILD5EJt/rDiZE4OJudANCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqX KVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVvw9y4AyHqnxbxLFS1 -----END CERTIFICATE----- -# Issuer: CN=Autoridad de Certificacion Raiz del Estado Venezolano O=Sistema Nacional de Certificacion Electronica OU=Superintendencia de Servicios de Certificacion Electronica -# Subject: CN=PSCProcert O=Sistema Nacional de Certificacion Electronica OU=Proveedor de Certificados PROCERT -# Label: "PSCProcert" -# Serial: 11 -# MD5 Fingerprint: e6:24:e9:12:01:ae:0c:de:8e:85:c4:ce:a3:12:dd:ec -# SHA1 Fingerprint: 70:c1:8d:74:b4:28:81:0a:e4:fd:a5:75:d7:01:9f:99:b0:3d:50:74 -# SHA256 Fingerprint: 3c:fc:3c:14:d1:f6:84:ff:17:e3:8c:43:ca:44:0c:00:b9:67:ec:93:3e:8b:fe:06:4c:a1:d7:2c:90:f2:ad:b0 ------BEGIN CERTIFICATE----- -MIIJhjCCB26gAwIBAgIBCzANBgkqhkiG9w0BAQsFADCCAR4xPjA8BgNVBAMTNUF1 -dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIFJhaXogZGVsIEVzdGFkbyBWZW5lem9s -YW5vMQswCQYDVQQGEwJWRTEQMA4GA1UEBxMHQ2FyYWNhczEZMBcGA1UECBMQRGlz -dHJpdG8gQ2FwaXRhbDE2MDQGA1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0 -aWZpY2FjaW9uIEVsZWN0cm9uaWNhMUMwQQYDVQQLEzpTdXBlcmludGVuZGVuY2lh -IGRlIFNlcnZpY2lvcyBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMSUwIwYJ -KoZIhvcNAQkBFhZhY3JhaXpAc3VzY2VydGUuZ29iLnZlMB4XDTEwMTIyODE2NTEw -MFoXDTIwMTIyNTIzNTk1OVowgdExJjAkBgkqhkiG9w0BCQEWF2NvbnRhY3RvQHBy -b2NlcnQubmV0LnZlMQ8wDQYDVQQHEwZDaGFjYW8xEDAOBgNVBAgTB01pcmFuZGEx -KjAoBgNVBAsTIVByb3ZlZWRvciBkZSBDZXJ0aWZpY2Fkb3MgUFJPQ0VSVDE2MDQG -A1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9u -aWNhMQswCQYDVQQGEwJWRTETMBEGA1UEAxMKUFNDUHJvY2VydDCCAiIwDQYJKoZI -hvcNAQEBBQADggIPADCCAgoCggIBANW39KOUM6FGqVVhSQ2oh3NekS1wwQYalNo9 -7BVCwfWMrmoX8Yqt/ICV6oNEolt6Vc5Pp6XVurgfoCfAUFM+jbnADrgV3NZs+J74 -BCXfgI8Qhd19L3uA3VcAZCP4bsm+lU/hdezgfl6VzbHvvnpC2Mks0+saGiKLt38G -ieU89RLAu9MLmV+QfI4tL3czkkohRqipCKzx9hEC2ZUWno0vluYC3XXCFCpa1sl9 -JcLB/KpnheLsvtF8PPqv1W7/U0HU9TI4seJfxPmOEO8GqQKJ/+MMbpfg353bIdD0 -PghpbNjU5Db4g7ayNo+c7zo3Fn2/omnXO1ty0K+qP1xmk6wKImG20qCZyFSTXai2 -0b1dCl53lKItwIKOvMoDKjSuc/HUtQy9vmebVOvh+qBa7Dh+PsHMosdEMXXqP+UH -0quhJZb25uSgXTcYOWEAM11G1ADEtMo88aKjPvM6/2kwLkDd9p+cJsmWN63nOaK/ -6mnbVSKVUyqUtd+tFjiBdWbjxywbk5yqjKPK2Ww8F22c3HxT4CAnQzb5EuE8XL1m -v6JpIzi4mWCZDlZTOpx+FIywBm/xhnaQr/2v/pDGj59/i5IjnOcVdo/Vi5QTcmn7 -K2FjiO/mpF7moxdqWEfLcU8UC17IAggmosvpr2uKGcfLFFb14dq12fy/czja+eev -bqQ34gcnAgMBAAGjggMXMIIDEzASBgNVHRMBAf8ECDAGAQH/AgEBMDcGA1UdEgQw -MC6CD3N1c2NlcnRlLmdvYi52ZaAbBgVghl4CAqASDBBSSUYtRy0yMDAwNDAzNi0w -MB0GA1UdDgQWBBRBDxk4qpl/Qguk1yeYVKIXTC1RVDCCAVAGA1UdIwSCAUcwggFD -gBStuyIdxuDSAaj9dlBSk+2YwU2u06GCASakggEiMIIBHjE+MDwGA1UEAxM1QXV0 -b3JpZGFkIGRlIENlcnRpZmljYWNpb24gUmFpeiBkZWwgRXN0YWRvIFZlbmV6b2xh -bm8xCzAJBgNVBAYTAlZFMRAwDgYDVQQHEwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0 -cml0byBDYXBpdGFsMTYwNAYDVQQKEy1TaXN0ZW1hIE5hY2lvbmFsIGRlIENlcnRp -ZmljYWNpb24gRWxlY3Ryb25pY2ExQzBBBgNVBAsTOlN1cGVyaW50ZW5kZW5jaWEg -ZGUgU2VydmljaW9zIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExJTAjBgkq -hkiG9w0BCQEWFmFjcmFpekBzdXNjZXJ0ZS5nb2IudmWCAQowDgYDVR0PAQH/BAQD -AgEGME0GA1UdEQRGMESCDnByb2NlcnQubmV0LnZloBUGBWCGXgIBoAwMClBTQy0w -MDAwMDKgGwYFYIZeAgKgEgwQUklGLUotMzE2MzUzNzMtNzB2BgNVHR8EbzBtMEag -RKBChkBodHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9sY3IvQ0VSVElGSUNBRE8t -UkFJWi1TSEEzODRDUkxERVIuY3JsMCOgIaAfhh1sZGFwOi8vYWNyYWl6LnN1c2Nl -cnRlLmdvYi52ZTA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9v -Y3NwLnN1c2NlcnRlLmdvYi52ZTBBBgNVHSAEOjA4MDYGBmCGXgMBAjAsMCoGCCsG -AQUFBwIBFh5odHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9kcGMwDQYJKoZIhvcN -AQELBQADggIBACtZ6yKZu4SqT96QxtGGcSOeSwORR3C7wJJg7ODU523G0+1ng3dS -1fLld6c2suNUvtm7CpsR72H0xpkzmfWvADmNg7+mvTV+LFwxNG9s2/NkAZiqlCxB -3RWGymspThbASfzXg0gTB1GEMVKIu4YXx2sviiCtxQuPcD4quxtxj7mkoP3Yldmv -Wb8lK5jpY5MvYB7Eqvh39YtsL+1+LrVPQA3uvFd359m21D+VJzog1eWuq2w1n8Gh -HVnchIHuTQfiSLaeS5UtQbHh6N5+LwUeaO6/u5BlOsju6rEYNxxik6SgMexxbJHm -pHmJWhSnFFAFTKQAVzAswbVhltw+HoSvOULP5dAssSS830DD7X9jSr3hTxJkhpXz -sOfIt+FTvZLm8wyWuevo5pLtp4EJFAv8lXrPj9Y0TzYS3F7RNHXGRoAvlQSMx4bE -qCaJqD8Zm4G7UaRKhqsLEQ+xrmNTbSjq3TNWOByyrYDT13K9mmyZY+gAu0F2Bbdb -mRiKw7gSXFbPVgx96OLP7bx0R/vu0xdOIk9W/1DzLuY5poLWccret9W6aAjtmcz9 -opLLabid+Qqkpj5PkygqYWwHJgD/ll9ohri4zspV4KuxPX+Y1zMOWj3YeMLEYC/H -YvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km ------END CERTIFICATE----- - -# Issuer: CN=China Internet Network Information Center EV Certificates Root O=China Internet Network Information Center -# Subject: CN=China Internet Network Information Center EV Certificates Root O=China Internet Network Information Center -# Label: "China Internet Network Information Center EV Certificates Root" -# Serial: 1218379777 -# MD5 Fingerprint: 55:5d:63:00:97:bd:6a:97:f5:67:ab:4b:fb:6e:63:15 -# SHA1 Fingerprint: 4f:99:aa:93:fb:2b:d1:37:26:a1:99:4a:ce:7f:f0:05:f2:93:5d:1e -# SHA256 Fingerprint: 1c:01:c6:f4:db:b2:fe:fc:22:55:8b:2b:ca:32:56:3f:49:84:4a:cf:c3:2b:7b:e4:b0:ff:59:9f:9e:8c:7a:f7 ------BEGIN CERTIFICATE----- -MIID9zCCAt+gAwIBAgIESJ8AATANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMC -Q04xMjAwBgNVBAoMKUNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24g -Q2VudGVyMUcwRQYDVQQDDD5DaGluYSBJbnRlcm5ldCBOZXR3b3JrIEluZm9ybWF0 -aW9uIENlbnRlciBFViBDZXJ0aWZpY2F0ZXMgUm9vdDAeFw0xMDA4MzEwNzExMjVa -Fw0zMDA4MzEwNzExMjVaMIGKMQswCQYDVQQGEwJDTjEyMDAGA1UECgwpQ2hpbmEg -SW50ZXJuZXQgTmV0d29yayBJbmZvcm1hdGlvbiBDZW50ZXIxRzBFBgNVBAMMPkNo -aW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyIEVWIENlcnRp -ZmljYXRlcyBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm35z -7r07eKpkQ0H1UN+U8i6yjUqORlTSIRLIOTJCBumD1Z9S7eVnAztUwYyZmczpwA// -DdmEEbK40ctb3B75aDFk4Zv6dOtouSCV98YPjUesWgbdYavi7NifFy2cyjw1l1Vx -zUOFsUcW9SxTgHbP0wBkvUCZ3czY28Sf1hNfQYOL+Q2HklY0bBoQCxfVWhyXWIQ8 -hBouXJE0bhlffxdpxWXvayHG1VA6v2G5BY3vbzQ6sm8UY78WO5upKv23KzhmBsUs -4qpnHkWnjQRmQvaPK++IIGmPMowUc9orhpFjIpryp9vOiYurXccUwVswah+xt54u -gQEC7c+WXmPbqOY4twIDAQABo2MwYTAfBgNVHSMEGDAWgBR8cks5x8DbYqVPm6oY -NJKiyoOCWTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4E -FgQUfHJLOcfA22KlT5uqGDSSosqDglkwDQYJKoZIhvcNAQEFBQADggEBACrDx0M3 -j92tpLIM7twUbY8opJhJywyA6vPtI2Z1fcXTIWd50XPFtQO3WKwMVC/GVhMPMdoG -52U7HW8228gd+f2ABsqjPWYWqJ1MFn3AlUa1UeTiH9fqBk1jjZaM7+czV0I664zB -echNdn3e9rG3geCg+aF4RhcaVpjwTj2rHO3sOdwHSPdj/gauwqRcalsyiMXHM4Ws -ZkJHwlgkmeHlPuV1LI5D1l08eB6olYIpUNHRFrrvwb562bTYzB5MRuF3sTGrvSrI -zo9uoV1/A3U05K2JRVRevq4opbs/eHnrc7MKDf2+yfdWrPa37S+bISnHOLaVxATy -wy39FCqQmbkHzJ8= ------END CERTIFICATE----- - -# Issuer: CN=Swisscom Root CA 2 O=Swisscom OU=Digital Certificate Services -# Subject: CN=Swisscom Root CA 2 O=Swisscom OU=Digital Certificate Services -# Label: "Swisscom Root CA 2" -# Serial: 40698052477090394928831521023204026294 -# MD5 Fingerprint: 5b:04:69:ec:a5:83:94:63:18:a7:86:d0:e4:f2:6e:19 -# SHA1 Fingerprint: 77:47:4f:c6:30:e4:0f:4c:47:64:3f:84:ba:b8:c6:95:4a:8a:41:ec -# SHA256 Fingerprint: f0:9b:12:2c:71:14:f4:a0:9b:d4:ea:4f:4a:99:d5:58:b4:6e:4c:25:cd:81:14:0d:29:c0:56:13:91:4c:38:41 ------BEGIN CERTIFICATE----- -MIIF2TCCA8GgAwIBAgIQHp4o6Ejy5e/DfEoeWhhntjANBgkqhkiG9w0BAQsFADBk -MQswCQYDVQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0 -YWwgQ2VydGlmaWNhdGUgU2VydmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3Qg -Q0EgMjAeFw0xMTA2MjQwODM4MTRaFw0zMTA2MjUwNzM4MTRaMGQxCzAJBgNVBAYT -AmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGlnaXRhbCBDZXJ0aWZp -Y2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAyMIICIjAN -BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlUJOhJ1R5tMJ6HJaI2nbeHCOFvEr -jw0DzpPMLgAIe6szjPTpQOYXTKueuEcUMncy3SgM3hhLX3af+Dk7/E6J2HzFZ++r -0rk0X2s682Q2zsKwzxNoysjL67XiPS4h3+os1OD5cJZM/2pYmLcX5BtS5X4HAB1f -2uY+lQS3aYg5oUFgJWFLlTloYhyxCwWJwDaCFCE/rtuh/bxvHGCGtlOUSbkrRsVP -ACu/obvLP+DHVxxX6NZp+MEkUp2IVd3Chy50I9AU/SpHWrumnf2U5NGKpV+GY3aF -y6//SSj8gO1MedK75MDvAe5QQQg1I3ArqRa0jG6F6bYRzzHdUyYb3y1aSgJA/MTA -tukxGggo5WDDH8SQjhBiYEQN7Aq+VRhxLKX0srwVYv8c474d2h5Xszx+zYIdkeNL -6yxSNLCK/RJOlrDrcH+eOfdmQrGrrFLadkBXeyq96G4DsguAhYidDMfCd7Camlf0 -uPoTXGiTOmekl9AbmbeGMktg2M7v0Ax/lZ9vh0+Hio5fCHyqW/xavqGRn1V9TrAL -acywlKinh/LTSlDcX3KwFnUey7QYYpqwpzmqm59m2I2mbJYV4+by+PGDYmy7Velh -k6M99bFXi08jsJvllGov34zflVEpYKELKeRcVVi3qPyZ7iVNTA6z00yPhOgpD/0Q -VAKFyPnlw4vP5w8CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0hBBYw -FDASBgdghXQBUwIBBgdghXQBUwIBMBIGA1UdEwEB/wQIMAYBAf8CAQcwHQYDVR0O -BBYEFE0mICKJS9PVpAqhb97iEoHF8TwuMB8GA1UdIwQYMBaAFE0mICKJS9PVpAqh -b97iEoHF8TwuMA0GCSqGSIb3DQEBCwUAA4ICAQAyCrKkG8t9voJXiblqf/P0wS4R -fbgZPnm3qKhyN2abGu2sEzsOv2LwnN+ee6FTSA5BesogpxcbtnjsQJHzQq0Qw1zv -/2BZf82Fo4s9SBwlAjxnffUy6S8w5X2lejjQ82YqZh6NM4OKb3xuqFp1mrjX2lhI -REeoTPpMSQpKwhI3qEAMw8jh0FcNlzKVxzqfl9NX+Ave5XLzo9v/tdhZsnPdTSpx -srpJ9csc1fV5yJmz/MFMdOO0vSk3FQQoHt5FRnDsr7p4DooqzgB53MBfGWcsa0vv -aGgLQ+OswWIJ76bdZWGgr4RVSJFSHMYlkSrQwSIjYVmvRRGFHQEkNI/Ps/8XciAT -woCqISxxOQ7Qj1zB09GOInJGTB2Wrk9xseEFKZZZ9LuedT3PDTcNYtsmjGOpI99n -Bjx8Oto0QuFmtEYE3saWmA9LSHokMnWRn6z3aOkquVVlzl1h0ydw2Df+n7mvoC5W -t6NlUe07qxS/TFED6F+KBZvuim6c779o+sjaC+NCydAXFJy3SuCvkychVSa1ZC+N -8f+mQAWFBVzKBxlcCxMoTFh/wqXvRdpg065lYZ1Tg3TCrvJcwhbtkj6EPnNgiLx2 -9CzP0H1907he0ZESEOnN3col49XtmS++dYFLJPlFRpTJKSFTnCZFqhMX5OfNeOI5 -wSsSnqaeG8XmDtkx2Q== ------END CERTIFICATE----- - -# Issuer: CN=Swisscom Root EV CA 2 O=Swisscom OU=Digital Certificate Services -# Subject: CN=Swisscom Root EV CA 2 O=Swisscom OU=Digital Certificate Services -# Label: "Swisscom Root EV CA 2" -# Serial: 322973295377129385374608406479535262296 -# MD5 Fingerprint: 7b:30:34:9f:dd:0a:4b:6b:35:ca:31:51:28:5d:ae:ec -# SHA1 Fingerprint: e7:a1:90:29:d3:d5:52:dc:0d:0f:c6:92:d3:ea:88:0d:15:2e:1a:6b -# SHA256 Fingerprint: d9:5f:ea:3c:a4:ee:dc:e7:4c:d7:6e:75:fc:6d:1f:f6:2c:44:1f:0f:a8:bc:77:f0:34:b1:9e:5d:b2:58:01:5d ------BEGIN CERTIFICATE----- -MIIF4DCCA8igAwIBAgIRAPL6ZOJ0Y9ON/RAdBB92ylgwDQYJKoZIhvcNAQELBQAw -ZzELMAkGA1UEBhMCY2gxETAPBgNVBAoTCFN3aXNzY29tMSUwIwYDVQQLExxEaWdp -dGFsIENlcnRpZmljYXRlIFNlcnZpY2VzMR4wHAYDVQQDExVTd2lzc2NvbSBSb290 -IEVWIENBIDIwHhcNMTEwNjI0MDk0NTA4WhcNMzEwNjI1MDg0NTA4WjBnMQswCQYD -VQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2Vy -dGlmaWNhdGUgU2VydmljZXMxHjAcBgNVBAMTFVN3aXNzY29tIFJvb3QgRVYgQ0Eg -MjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMT3HS9X6lds93BdY7Bx -UglgRCgzo3pOCvrY6myLURYaVa5UJsTMRQdBTxB5f3HSek4/OE6zAMaVylvNwSqD -1ycfMQ4jFrclyxy0uYAyXhqdk/HoPGAsp15XGVhRXrwsVgu42O+LgrQ8uMIkqBPH -oCE2G3pXKSinLr9xJZDzRINpUKTk4RtiGZQJo/PDvO/0vezbE53PnUgJUmfANykR -HvvSEaeFGHR55E+FFOtSN+KxRdjMDUN/rhPSays/p8LiqG12W0OfvrSdsyaGOx9/ -5fLoZigWJdBLlzin5M8J0TbDC77aO0RYjb7xnglrPvMyxyuHxuxenPaHZa0zKcQv -idm5y8kDnftslFGXEBuGCxobP/YCfnvUxVFkKJ3106yDgYjTdLRZncHrYTNaRdHL -OdAGalNgHa/2+2m8atwBz735j9m9W8E6X47aD0upm50qKGsaCnw8qyIL5XctcfaC -NYGu+HuB5ur+rPQam3Rc6I8k9l2dRsQs0h4rIWqDJ2dVSqTjyDKXZpBy2uPUZC5f -46Fq9mDU5zXNysRojddxyNMkM3OxbPlq4SjbX8Y96L5V5jcb7STZDxmPX2MYWFCB -UWVv8p9+agTnNCRxunZLWB4ZvRVgRaoMEkABnRDixzgHcgplwLa7JSnaFp6LNYth -7eVxV4O1PHGf40+/fh6Bn0GXAgMBAAGjgYYwgYMwDgYDVR0PAQH/BAQDAgGGMB0G -A1UdIQQWMBQwEgYHYIV0AVMCAgYHYIV0AVMCAjASBgNVHRMBAf8ECDAGAQH/AgED -MB0GA1UdDgQWBBRF2aWBbj2ITY1x0kbBbkUe88SAnTAfBgNVHSMEGDAWgBRF2aWB -bj2ITY1x0kbBbkUe88SAnTANBgkqhkiG9w0BAQsFAAOCAgEAlDpzBp9SSzBc1P6x -XCX5145v9Ydkn+0UjrgEjihLj6p7jjm02Vj2e6E1CqGdivdj5eu9OYLU43otb98T -PLr+flaYC/NUn81ETm484T4VvwYmneTwkLbUwp4wLh/vx3rEUMfqe9pQy3omywC0 -Wqu1kx+AiYQElY2NfwmTv9SoqORjbdlk5LgpWgi/UOGED1V7XwgiG/W9mR4U9s70 -WBCCswo9GcG/W6uqmdjyMb3lOGbcWAXH7WMaLgqXfIeTK7KK4/HsGOV1timH59yL -Gn602MnTihdsfSlEvoqq9X46Lmgxk7lq2prg2+kupYTNHAq4Sgj5nPFhJpiTt3tm -7JFe3VE/23MPrQRYCd0EApUKPtN236YQHoA96M2kZNEzx5LH4k5E4wnJTsJdhw4S -nr8PyQUQ3nqjsTzyP6WqJ3mtMX0f/fwZacXduT98zca0wjAefm6S139hdlqP65VN -vBFuIXxZN5nQBrz5Bm0yFqXZaajh3DyAHmBR3NdUIR7KYndP+tiPsys6DXhyyWhB -WkdKwqPrGtcKqzwyVcgKEZzfdNbwQBUdyLmPtTbFr/giuMod89a2GQ+fYWVq6nTI -fI/DT11lgh/ZDYnadXL77/FHZxOzyNEZiCcmmpl5fx7kLD977vHeTYuWl8PVP3wb -I+2ksx0WckNLIOFZfsLorSa/ovc= ------END CERTIFICATE----- - -# Issuer: CN=CA Disig Root R1 O=Disig a.s. -# Subject: CN=CA Disig Root R1 O=Disig a.s. -# Label: "CA Disig Root R1" -# Serial: 14052245610670616104 -# MD5 Fingerprint: be:ec:11:93:9a:f5:69:21:bc:d7:c1:c0:67:89:cc:2a -# SHA1 Fingerprint: 8e:1c:74:f8:a6:20:b9:e5:8a:f4:61:fa:ec:2b:47:56:51:1a:52:c6 -# SHA256 Fingerprint: f9:6f:23:f4:c3:e7:9c:07:7a:46:98:8d:5a:f5:90:06:76:a0:f0:39:cb:64:5d:d1:75:49:b2:16:c8:24:40:ce ------BEGIN CERTIFICATE----- -MIIFaTCCA1GgAwIBAgIJAMMDmu5QkG4oMA0GCSqGSIb3DQEBBQUAMFIxCzAJBgNV -BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu -MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIxMB4XDTEyMDcxOTA5MDY1NloXDTQy -MDcxOTA5MDY1NlowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx -EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjEw -ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCqw3j33Jijp1pedxiy3QRk -D2P9m5YJgNXoqqXinCaUOuiZc4yd39ffg/N4T0Dhf9Kn0uXKE5Pn7cZ3Xza1lK/o -OI7bm+V8u8yN63Vz4STN5qctGS7Y1oprFOsIYgrY3LMATcMjfF9DCCMyEtztDK3A -fQ+lekLZWnDZv6fXARz2m6uOt0qGeKAeVjGu74IKgEH3G8muqzIm1Cxr7X1r5OJe -IgpFy4QxTaz+29FHuvlglzmxZcfe+5nkCiKxLU3lSCZpq+Kq8/v8kiky6bM+TR8n -oc2OuRf7JT7JbvN32g0S9l3HuzYQ1VTW8+DiR0jm3hTaYVKvJrT1cU/J19IG32PK -/yHoWQbgCNWEFVP3Q+V8xaCJmGtzxmjOZd69fwX3se72V6FglcXM6pM6vpmumwKj -rckWtc7dXpl4fho5frLABaTAgqWjR56M6ly2vGfb5ipN0gTco65F97yLnByn1tUD -3AjLLhbKXEAz6GfDLuemROoRRRw1ZS0eRWEkG4IupZ0zXWX4Qfkuy5Q/H6MMMSRE -7cderVC6xkGbrPAXZcD4XW9boAo0PO7X6oifmPmvTiT6l7Jkdtqr9O3jw2Dv1fkC -yC2fg69naQanMVXVz0tv/wQFx1isXxYb5dKj6zHbHzMVTdDypVP1y+E9Tmgt2BLd -qvLmTZtJ5cUoobqwWsagtQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud -DwEB/wQEAwIBBjAdBgNVHQ4EFgQUiQq0OJMa5qvum5EY+fU8PjXQ04IwDQYJKoZI -hvcNAQEFBQADggIBADKL9p1Kyb4U5YysOMo6CdQbzoaz3evUuii+Eq5FLAR0rBNR -xVgYZk2C2tXck8An4b58n1KeElb21Zyp9HWc+jcSjxyT7Ff+Bw+r1RL3D65hXlaA -SfX8MPWbTx9BLxyE04nH4toCdu0Jz2zBuByDHBb6lM19oMgY0sidbvW9adRtPTXo -HqJPYNcHKfyyo6SdbhWSVhlMCrDpfNIZTUJG7L399ldb3Zh+pE3McgODWF3vkzpB -emOqfDqo9ayk0d2iLbYq/J8BjuIQscTK5GfbVSUZP/3oNn6z4eGBrxEWi1CXYBmC -AMBrTXO40RMHPuq2MU/wQppt4hF05ZSsjYSVPCGvxdpHyN85YmLLW1AL14FABZyb -7bq2ix4Eb5YgOe2kfSnbSM6C3NQCjR0EMVrHS/BsYVLXtFHCgWzN4funodKSds+x -DzdYpPJScWc/DIh4gInByLUfkmO+p3qKViwaqKactV2zY9ATIKHrkWzQjX2v3wvk -F7mGnjixlAxYjOBVqjtjbZqJYLhkKpLGN/R+Q0O3c+gB53+XD9fyexn9GtePyfqF -a3qdnom2piiZk4hA9z7NUaPK6u95RyG1/jLix8NRb76AdPCkwzryT+lf3xkK8jsT -Q6wxpLPn6/wY1gGp8yqPNg7rtLG8t0zJa7+h89n07eLw4+1knj0vllJPgFOL ------END CERTIFICATE----- - # Issuer: CN=CA Disig Root R2 O=Disig a.s. # Subject: CN=CA Disig Root R2 O=Disig a.s. # Label: "CA Disig Root R2" @@ -4268,8 +2708,8 @@ HL/EVlP6Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVx SK236thZiNSQvxaz2emsWWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= -----END CERTIFICATE----- -# Issuer: CN=E-Tugra Certification Authority O=E-Tuğra EBG Bilişim Teknolojileri ve Hizmetleri A.Ş. OU=E-Tugra Sertifikasyon Merkezi -# Subject: CN=E-Tugra Certification Authority O=E-Tuğra EBG Bilişim Teknolojileri ve Hizmetleri A.Ş. OU=E-Tugra Sertifikasyon Merkezi +# Issuer: CN=E-Tugra Certification Authority O=E-Tu\u011fra EBG Bili\u015fim Teknolojileri ve Hizmetleri A.\u015e. OU=E-Tugra Sertifikasyon Merkezi +# Subject: CN=E-Tugra Certification Authority O=E-Tu\u011fra EBG Bili\u015fim Teknolojileri ve Hizmetleri A.\u015e. OU=E-Tugra Sertifikasyon Merkezi # Label: "E-Tugra Certification Authority" # Serial: 7667447206703254355 # MD5 Fingerprint: b8:a1:03:63:b0:bd:21:71:70:8a:6f:13:3a:bb:79:49 @@ -4635,85 +3075,6 @@ r/OSmbaz5mEP0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1 gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+ -----END CERTIFICATE----- -# Issuer: CN=Certification Authority of WoSign O=WoSign CA Limited -# Subject: CN=Certification Authority of WoSign O=WoSign CA Limited -# Label: "WoSign" -# Serial: 125491772294754854453622855443212256657 -# MD5 Fingerprint: a1:f2:f9:b5:d2:c8:7a:74:b8:f3:05:f1:d7:e1:84:8d -# SHA1 Fingerprint: b9:42:94:bf:91:ea:8f:b6:4b:e6:10:97:c7:fb:00:13:59:b6:76:cb -# SHA256 Fingerprint: 4b:22:d5:a6:ae:c9:9f:3c:db:79:aa:5e:c0:68:38:47:9c:d5:ec:ba:71:64:f7:f2:2d:c1:d6:5f:63:d8:57:08 ------BEGIN CERTIFICATE----- -MIIFdjCCA16gAwIBAgIQXmjWEXGUY1BWAGjzPsnFkTANBgkqhkiG9w0BAQUFADBV -MQswCQYDVQQGEwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxKjAoBgNV -BAMTIUNlcnRpZmljYXRpb24gQXV0aG9yaXR5IG9mIFdvU2lnbjAeFw0wOTA4MDgw -MTAwMDFaFw0zOTA4MDgwMTAwMDFaMFUxCzAJBgNVBAYTAkNOMRowGAYDVQQKExFX -b1NpZ24gQ0EgTGltaXRlZDEqMCgGA1UEAxMhQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgb2YgV29TaWduMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvcqN -rLiRFVaXe2tcesLea9mhsMMQI/qnobLMMfo+2aYpbxY94Gv4uEBf2zmoAHqLoE1U -fcIiePyOCbiohdfMlZdLdNiefvAA5A6JrkkoRBoQmTIPJYhTpA2zDxIIFgsDcScc -f+Hb0v1naMQFXQoOXXDX2JegvFNBmpGN9J42Znp+VsGQX+axaCA2pIwkLCxHC1l2 -ZjC1vt7tj/id07sBMOby8w7gLJKA84X5KIq0VC6a7fd2/BVoFutKbOsuEo/Uz/4M -x1wdC34FMr5esAkqQtXJTpCzWQ27en7N1QhatH/YHGkR+ScPewavVIMYe+HdVHpR -aG53/Ma/UkpmRqGyZxq7o093oL5d//xWC0Nyd5DKnvnyOfUNqfTq1+ezEC8wQjch -zDBwyYaYD8xYTYO7feUapTeNtqwylwA6Y3EkHp43xP901DfA4v6IRmAR3Qg/UDar -uHqklWJqbrDKaiFaafPz+x1wOZXzp26mgYmhiMU7ccqjUu6Du/2gd/Tkb+dC221K -mYo0SLwX3OSACCK28jHAPwQ+658geda4BmRkAjHXqc1S+4RFaQkAKtxVi8QGRkvA -Sh0JWzko/amrzgD5LkhLJuYwTKVYyrREgk/nkR4zw7CT/xH8gdLKH3Ep3XZPkiWv -HYG3Dy+MwwbMLyejSuQOmbp8HkUff6oZRZb9/D0CAwEAAaNCMEAwDgYDVR0PAQH/ -BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFOFmzw7R8bNLtwYgFP6H -EtX2/vs+MA0GCSqGSIb3DQEBBQUAA4ICAQCoy3JAsnbBfnv8rWTjMnvMPLZdRtP1 -LOJwXcgu2AZ9mNELIaCJWSQBnfmvCX0KI4I01fx8cpm5o9dU9OpScA7F9dY74ToJ -MuYhOZO9sxXqT2r09Ys/L3yNWC7F4TmgPsc9SnOeQHrAK2GpZ8nzJLmzbVUsWh2e -JXLOC62qx1ViC777Y7NhRCOjy+EaDveaBk3e1CNOIZZbOVtXHS9dCF4Jef98l7VN -g64N1uajeeAz0JmWAjCnPv/So0M/BVoG6kQC2nz4SNAzqfkHx5Xh9T71XXG68pWp -dIhhWeO/yloTunK0jF02h+mmxTwTv97QRCbut+wucPrXnbes5cVAWubXbHssw1ab -R80LzvobtCHXt2a49CUwi1wNuepnsvRtrtWhnk/Yn+knArAdBtaP4/tIEp9/EaEQ -PkxROpaw0RPxx9gmrjrKkcRpnd8BKWRRb2jaFOwIQZeQjdCygPLPwj2/kWjFgGce -xGATVdVhmVd8upUPYUk6ynW8yQqTP2cOEvIo4jEbwFcW3wh8GcF+Dx+FHgo2fFt+ -J7x6v+Db9NpSvd4MVHAxkUOVyLzwPt0JfjBkUO1/AaQzZ01oT74V77D2AhGiGxMl -OtzCWfHjXEa7ZywCRuoeSKbmW9m1vFGikpbbqsY3Iqb+zCB0oy2pLmvLwIIRIbWT -ee5Ehr7XHuQe+w== ------END CERTIFICATE----- - -# Issuer: CN=CA 沃通根证书 O=WoSign CA Limited -# Subject: CN=CA 沃通根证书 O=WoSign CA Limited -# Label: "WoSign China" -# Serial: 106921963437422998931660691310149453965 -# MD5 Fingerprint: 78:83:5b:52:16:76:c4:24:3b:83:78:e8:ac:da:9a:93 -# SHA1 Fingerprint: 16:32:47:8d:89:f9:21:3a:92:00:85:63:f5:a4:a7:d3:12:40:8a:d6 -# SHA256 Fingerprint: d6:f0:34:bd:94:aa:23:3f:02:97:ec:a4:24:5b:28:39:73:e4:47:aa:59:0f:31:0c:77:f4:8f:df:83:11:22:54 ------BEGIN CERTIFICATE----- -MIIFWDCCA0CgAwIBAgIQUHBrzdgT/BtOOzNy0hFIjTANBgkqhkiG9w0BAQsFADBG -MQswCQYDVQQGEwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxGzAZBgNV -BAMMEkNBIOayg+mAmuagueivgeS5pjAeFw0wOTA4MDgwMTAwMDFaFw0zOTA4MDgw -MTAwMDFaMEYxCzAJBgNVBAYTAkNOMRowGAYDVQQKExFXb1NpZ24gQ0EgTGltaXRl -ZDEbMBkGA1UEAwwSQ0Eg5rKD6YCa5qC56K+B5LmmMIICIjANBgkqhkiG9w0BAQEF -AAOCAg8AMIICCgKCAgEA0EkhHiX8h8EqwqzbdoYGTufQdDTc7WU1/FDWiD+k8H/r -D195L4mx/bxjWDeTmzj4t1up+thxx7S8gJeNbEvxUNUqKaqoGXqW5pWOdO2XCld1 -9AXbbQs5uQF/qvbW2mzmBeCkTVL829B0txGMe41P/4eDrv8FAxNXUDf+jJZSEExf -v5RxadmWPgxDT74wwJ85dE8GRV2j1lY5aAfMh09Qd5Nx2UQIsYo06Yms25tO4dnk -UkWMLhQfkWsZHWgpLFbE4h4TV2TwYeO5Ed+w4VegG63XX9Gv2ystP9Bojg/qnw+L -NVgbExz03jWhCl3W6t8Sb8D7aQdGctyB9gQjF+BNdeFyb7Ao65vh4YOhn0pdr8yb -+gIgthhid5E7o9Vlrdx8kHccREGkSovrlXLp9glk3Kgtn3R46MGiCWOc76DbT52V -qyBPt7D3h1ymoOQ3OMdc4zUPLK2jgKLsLl3Az+2LBcLmc272idX10kaO6m1jGx6K -yX2m+Jzr5dVjhU1zZmkR/sgO9MHHZklTfuQZa/HpelmjbX7FF+Ynxu8b22/8DU0G -AbQOXDBGVWCvOGU6yke6rCzMRh+yRpY/8+0mBe53oWprfi1tWFxK1I5nuPHa1UaK -J/kR8slC/k7e3x9cxKSGhxYzoacXGKUN5AXlK8IrC6KVkLn9YDxOiT7nnO4fuwEC -AwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O -BBYEFOBNv9ybQV0T6GTwp+kVpOGBwboxMA0GCSqGSIb3DQEBCwUAA4ICAQBqinA4 -WbbaixjIvirTthnVZil6Xc1bL3McJk6jfW+rtylNpumlEYOnOXOvEESS5iVdT2H6 -yAa+Tkvv/vMx/sZ8cApBWNromUuWyXi8mHwCKe0JgOYKOoICKuLJL8hWGSbueBwj -/feTZU7n85iYr83d2Z5AiDEoOqsuC7CsDCT6eiaY8xJhEPRdF/d+4niXVOKM6Cm6 -jBAyvd0zaziGfjk9DgNyp115j0WKWa5bIW4xRtVZjc8VX90xJc/bYNaBRHIpAlf2 -ltTW/+op2znFuCyKGo3Oy+dCMYYFaA6eFN0AkLppRQjbbpCBhqcqBT/mhDn4t/lX -X0ykeVoQDF7Va/81XwVRHmyjdanPUIPTfPRm94KNPQx96N97qA4bLJyuQHCH2u2n -FoJavjVsIE4iYdm8UXrNemHcSxH5/mc0zy4EZmFcV5cjjPOGG0jfKq+nwf/Yjj4D -u9gqsPoUJbJRa4ZDhS4HIxaAjUz7tGM7zMN07RujHv41D198HRaG9Q7DlfEvr10l -O1Hm13ZBONFLAzkopR6RctR9q5czxNM+4Gm2KHmgCY0c0f9BckgG/Jou5yD5m6Le -ie2uPAmvylezkolwQOQvT8Jwg0DXJCxr5wkf09XHwQj02w47HAcLQxGEIYbpgNR1 -2KvxAmLBsX5VYc8T1yaw15zLKYs4SgsOkI26oQ== ------END CERTIFICATE----- - # Issuer: CN=COMODO RSA Certification Authority O=COMODO CA Limited # Subject: CN=COMODO RSA Certification Authority O=COMODO CA Limited # Label: "COMODO RSA Certification Authority" @@ -5122,9 +3483,9 @@ AAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3CekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ 5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su -----END CERTIFICATE----- -# Issuer: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5 O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. -# Subject: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5 O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. -# Label: "TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5" +# Issuer: CN=T\xdcRKTRUST Elektronik Sertifika Hizmet Sa\u011flay\u0131c\u0131s\u0131 H5 O=T\xdcRKTRUST Bilgi \u0130leti\u015fim ve Bili\u015fim G\xfcvenli\u011fi Hizmetleri A.\u015e. +# Subject: CN=T\xdcRKTRUST Elektronik Sertifika Hizmet Sa\u011flay\u0131c\u0131s\u0131 H5 O=T\xdcRKTRUST Bilgi \u0130leti\u015fim ve Bili\u015fim G\xfcvenli\u011fi Hizmetleri A.\u015e. +# Label: "T\xdcRKTRUST Elektronik Sertifika Hizmet Sa\u011flay\u0131c\u0131s\u0131 H5" # Serial: 156233699172481 # MD5 Fingerprint: da:70:8e:f0:22:df:93:26:f6:5f:9f:d3:15:06:52:4e # SHA1 Fingerprint: c4:18:f6:4d:46:d1:df:00:3d:27:30:13:72:43:a9:12:11:c6:75:fb @@ -5155,39 +3516,6 @@ Yv4HAqGEVka+lgqaE9chTLd8B59OTj+RdPsnnRHM3eaxynFNExc5JsUpISuTKWqW +qtB4Uu2NQvAmxU= -----END CERTIFICATE----- -# Issuer: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H6 O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. -# Subject: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H6 O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. -# Label: "TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H6" -# Serial: 138134509972618 -# MD5 Fingerprint: f8:c5:ee:2a:6b:be:95:8d:08:f7:25:4a:ea:71:3e:46 -# SHA1 Fingerprint: 8a:5c:8c:ee:a5:03:e6:05:56:ba:d8:1b:d4:f6:c9:b0:ed:e5:2f:e0 -# SHA256 Fingerprint: 8d:e7:86:55:e1:be:7f:78:47:80:0b:93:f6:94:d2:1d:36:8c:c0:6e:03:3e:7f:ab:04:bb:5e:b9:9d:a6:b7:00 ------BEGIN CERTIFICATE----- -MIIEJjCCAw6gAwIBAgIGfaHyZeyKMA0GCSqGSIb3DQEBCwUAMIGxMQswCQYDVQQG -EwJUUjEPMA0GA1UEBwwGQW5rYXJhMU0wSwYDVQQKDERUw5xSS1RSVVNUIEJpbGdp -IMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBB -LsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBI -aXptZXQgU2HEn2xhecSxY8Sxc8SxIEg2MB4XDTEzMTIxODA5MDQxMFoXDTIzMTIx -NjA5MDQxMFowgbExCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExTTBLBgNV -BAoMRFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBCaWxpxZ9pbSBHw7x2 -ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMUIwQAYDVQQDDDlUw5xSS1RSVVNUIEVs -ZWt0cm9uaWsgU2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLEgSDYwggEi -MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCdsGjW6L0UlqMACprx9MfMkU1x -eHe59yEmFXNRFpQJRwXiM/VomjX/3EsvMsew7eKC5W/a2uqsxgbPJQ1BgfbBOCK9 -+bGlprMBvD9QFyv26WZV1DOzXPhDIHiTVRZwGTLmiddk671IUP320EEDwnS3/faA -z1vFq6TWlRKb55cTMgPp1KtDWxbtMyJkKbbSk60vbNg9tvYdDjTu0n2pVQ8g9P0p -u5FbHH3GQjhtQiht1AH7zYiXSX6484P4tZgvsycLSF5W506jM7NE1qXyGJTtHB6p -lVxiSvgNZ1GpryHV+DKdeboaX+UEVU0TRv/yz3THGmNtwx8XEsMeED5gCLMxAgMB -AAGjQjBAMB0GA1UdDgQWBBTdVRcT9qzoSCHK77Wv0QAy7Z6MtTAOBgNVHQ8BAf8E -BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAb1gNl0Oq -FlQ+v6nfkkU/hQu7VtMMUszIv3ZnXuaqs6fvuay0EBQNdH49ba3RfdCaqaXKGDsC -QC4qnFAUi/5XfldcEQlLNkVS9z2sFP1E34uXI9TDwe7UU5X+LEr+DXCqu4svLcsy -o4LyVN/Y8t3XSHLuSqMplsNEzm61kod2pLv0kmzOLBQJZo6NrRa1xxsJYTvjIKID -gI6tflEATseWhvtDmHd9KMeP2Cpu54Rvl0EpABZeTeIT6lnAY2c6RPuY/ATTMHKm -9ocJV612ph1jmv3XZch4gyt1O6VbuA1df74jrlZVlFjvH4GMKrLN5ptjnhi85WsG -tAuYSyher4hYyw== ------END CERTIFICATE----- - # Issuer: CN=Certinomis - Root CA O=Certinomis OU=0002 433998903 # Subject: CN=Certinomis - Root CA O=Certinomis OU=0002 433998903 # Label: "Certinomis - Root CA" @@ -5227,390 +3555,879 @@ Y/M50n92Uaf0yKHxDHYiI0ZSKS3io0EHVmmY0gUJvGnHWmHNj4FgFU2A3ZDifcRQ 8ow7bkrHxuaAKzyBvBGAFhAn1/DNP3nMcyrDflOR1m749fPH0FFNjkulW+YZFzvW gQncItzujrnEj1PhZ7szuIgVRs/taTX/dQ1G885x4cVrhkIGuUE= -----END CERTIFICATE----- -# Issuer: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited -# Subject: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited -# Label: "Entrust.net Secure Server CA" -# Serial: 927650371 -# MD5 Fingerprint: df:f2:80:73:cc:f1:e6:61:73:fc:f5:42:e9:c5:7c:ee -# SHA1 Fingerprint: 99:a6:9b:e6:1a:fe:88:6b:4d:2b:82:00:7c:b8:54:fc:31:7e:15:39 -# SHA256 Fingerprint: 62:f2:40:27:8c:56:4c:4d:d8:bf:7d:9d:4f:6f:36:6e:a8:94:d2:2f:5f:34:d9:89:a9:83:ac:ec:2f:ff:ed:50 + +# Issuer: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed +# Subject: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed +# Label: "OISTE WISeKey Global Root GB CA" +# Serial: 157768595616588414422159278966750757568 +# MD5 Fingerprint: a4:eb:b9:61:28:2e:b7:2f:98:b0:35:26:90:99:51:1d +# SHA1 Fingerprint: 0f:f9:40:76:18:d3:d7:6a:4b:98:f0:a8:35:9e:0c:fd:27:ac:cc:ed +# SHA256 Fingerprint: 6b:9c:08:e8:6e:b0:f7:67:cf:ad:65:cd:98:b6:21:49:e5:49:4a:67:f5:84:5e:7b:d1:ed:01:9f:27:b8:6b:d6 -----BEGIN CERTIFICATE----- -MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC -VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u -ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc -KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u -ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 -MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE -ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j -b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF -bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg -U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA -A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ -I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 -wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC -AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb -oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 -BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p -dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk -MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp -b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu -dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 -MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi -E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa -MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI -hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN -95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd -2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= +MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBt +MQswCQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUg +Rm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9i +YWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAwMzJaFw0zOTEyMDExNTEwMzFaMG0x +CzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBG +b3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh +bCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3 +HEokKtaXscriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGx +WuR51jIjK+FTzJlFXHtPrby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX +1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNk +u7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4oQnc/nSMbsrY9gBQHTC5P +99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvgGUpuuy9r +M2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUB +BAMCAQAwDQYJKoZIhvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrgh +cViXfa43FK8+5/ea4n32cZiZBKpDdHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5 +gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0VQreUGdNZtGn//3ZwLWoo4rO +ZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEuiHZeeevJuQHHf +aPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic +Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= -----END CERTIFICATE----- -# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority -# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority -# Label: "ValiCert Class 2 VA" +# Issuer: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. +# Subject: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. +# Label: "SZAFIR ROOT CA2" +# Serial: 357043034767186914217277344587386743377558296292 +# MD5 Fingerprint: 11:64:c1:89:b0:24:b1:8c:b1:07:7e:89:9e:51:9e:99 +# SHA1 Fingerprint: e2:52:fa:95:3f:ed:db:24:60:bd:6e:28:f3:9c:cc:cf:5e:b3:3f:de +# SHA256 Fingerprint: a1:33:9d:33:28:1a:0b:56:e5:57:d3:d3:2b:1c:e7:f9:36:7e:b0:94:bd:5f:a7:2a:7e:50:04:c8:de:d7:ca:fe +-----BEGIN CERTIFICATE----- +MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQEL +BQAwUTELMAkGA1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6 +ZW5pb3dhIFMuQS4xGDAWBgNVBAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkw +NzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJBgNVBAYTAlBMMSgwJgYDVQQKDB9L +cmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYDVQQDDA9TWkFGSVIg +Uk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5QqEvN +QLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT +3PSQ1hNKDJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw +3gAeqDRHu5rr/gsUvTaE2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr6 +3fE9biCloBK0TXC5ztdyO4mTp4CEHCdJckm1/zuVnsHMyAHs6A6KCpbns6aH5db5 +BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwiieDhZNRnvDF5YTy7ykHN +XGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD +AgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsF +AAOCAQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw +8PRBEew/R40/cof5O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOG +nXkZ7/e7DDWQw4rtTw/1zBLZpD67oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCP +oky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul4+vJhaAlIDf7js4MNIThPIGy +d05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6+/NNIxuZMzSg +LvWpCz/UXeHPhJ/iGcJfitYgHuNztw== +-----END CERTIFICATE----- + +# Issuer: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Subject: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Label: "Certum Trusted Network CA 2" +# Serial: 44979900017204383099463764357512596969 +# MD5 Fingerprint: 6d:46:9e:d9:25:6d:08:23:5b:5e:74:7d:1e:27:db:f2 +# SHA1 Fingerprint: d3:dd:48:3e:2b:bf:4c:05:e8:af:10:f5:fa:76:26:cf:d3:dc:30:92 +# SHA256 Fingerprint: b6:76:f2:ed:da:e8:77:5c:d3:6c:b0:f6:3c:d1:d4:60:39:61:f4:9e:62:65:ba:01:3a:2f:03:07:b6:d0:b8:04 +-----BEGIN CERTIFICATE----- +MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCB +gDELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu +QS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIG +A1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQSAyMCIYDzIwMTExMDA2MDgz +OTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQTDEiMCAGA1UEChMZ +VW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3 +b3JrIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWA +DGSdhhuWZGc/IjoedQF97/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn +0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+oCgCXhVqqndwpyeI1B+twTUrWwbNWuKFB +OJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40bRr5HMNUuctHFY9rnY3lE +fktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2puTRZCr+E +Sv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1m +o130GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02i +sx7QBlrd9pPPV3WZ9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOW +OZV7bIBaTxNyxtd9KXpEulKkKtVBRgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgez +Tv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pyehizKV/Ma5ciSixqClnrDvFAS +adgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vMBhBgu4M1t15n +3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQ +F/xlhMcQSZDe28cmk4gmb3DWAl45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTf +CVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuAL55MYIR4PSFk1vtBHxgP58l1cb29 +XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMoclm2q8KMZiYcdywm +djWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tMpkT/ +WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jb +AoJnwTnbw3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksq +P/ujmv5zMnHCnsZy4YpoJ/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Ko +b7a6bINDd82Kkhehnlt4Fj1F4jNy3eFmypnTycUm/Q1oBEauttmbjL4ZvrHG8hnj +XALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLXis7VmFxWlgPF7ncGNf/P +5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7zAYspsbi +DrW5viSP +-----END CERTIFICATE----- + +# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Subject: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Label: "Hellenic Academic and Research Institutions RootCA 2015" +# Serial: 0 +# MD5 Fingerprint: ca:ff:e2:db:03:d9:cb:4b:e9:0f:ad:84:fd:7b:18:ce +# SHA1 Fingerprint: 01:0c:06:95:a6:98:19:14:ff:bf:5f:c6:b0:b6:95:ea:29:e9:12:a6 +# SHA256 Fingerprint: a0:40:92:9a:02:ce:53:b4:ac:f4:f2:ff:c6:98:1c:e4:49:6f:75:5e:6d:45:fe:0b:2a:69:2b:cd:52:52:3f:36 +-----BEGIN CERTIFICATE----- +MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1Ix +DzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5k +IFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMT +N0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9v +dENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAxMTIxWjCBpjELMAkG +A1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNh +ZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkx +QDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1 +dGlvbnMgUm9vdENBIDIwMTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQDC+Kk/G4n8PDwEXT2QNrCROnk8ZlrvbTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA +4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+ehiGsxr/CL0BgzuNtFajT0 +AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+6PAQZe10 +4S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06C +ojXdFPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV +9Cz82XBST3i4vTwri5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrD +gfgXy5I2XdGj2HUb4Ysn6npIQf1FGQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6 +Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2fu/Z8VFRfS0myGlZYeCsargq +NhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9muiNX6hME6wGko +LfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc +Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVd +ctA4GGqd83EkVAswDQYJKoZIhvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0I +XtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+D1hYc2Ryx+hFjtyp8iY/xnmMsVMI +M4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrMd/K4kPFox/la/vot +9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+yd+2V +Z5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/ea +j8GsGsVn82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnh +X9izjFk0WaSrT2y7HxjbdavYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQ +l033DlZdwJVqwjbDG2jJ9SrcR5q+ss7FJej6A7na+RZukYT1HCjI/CbM1xyQVqdf +bzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVtJ94Cj8rDtSvK6evIIVM4 +pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGaJI7ZjnHK +e7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0 +vm9qp/UsQu0yrbYhnr68 +-----END CERTIFICATE----- + +# Issuer: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Subject: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Label: "Hellenic Academic and Research Institutions ECC RootCA 2015" +# Serial: 0 +# MD5 Fingerprint: 81:e5:b4:17:eb:c2:f5:e1:4b:0d:41:7b:49:92:fe:ef +# SHA1 Fingerprint: 9f:f1:71:8d:92:d5:9a:f3:7d:74:97:b4:bc:6f:84:68:0b:ba:b6:66 +# SHA256 Fingerprint: 44:b5:45:aa:8a:25:e6:5a:73:ca:15:dc:27:fc:36:d2:4c:1c:b9:95:3a:06:65:39:b1:15:82:dc:48:7b:48:33 +-----BEGIN CERTIFICATE----- +MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzAN +BgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl +c2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hl +bGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgRUNDIFJv +b3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEwMzcxMlowgaoxCzAJ +BgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmljIEFj +YWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5 +MUQwQgYDVQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0 +dXRpb25zIEVDQyBSb290Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKg +QehLgoRc4vgxEZmGZE4JJS+dQS8KrjVPdJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJa +jq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoKVlp8aQuqgAkkbH7BRqNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFLQi +C4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaep +lSTAGiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7Sof +TUwJCA3sS61kFyjndc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR +-----END CERTIFICATE----- + +# Issuer: CN=Certplus Root CA G1 O=Certplus +# Subject: CN=Certplus Root CA G1 O=Certplus +# Label: "Certplus Root CA G1" +# Serial: 1491911565779898356709731176965615564637713 +# MD5 Fingerprint: 7f:09:9c:f7:d9:b9:5c:69:69:56:d5:37:3e:14:0d:42 +# SHA1 Fingerprint: 22:fd:d0:b7:fd:a2:4e:0d:ac:49:2c:a0:ac:a6:7b:6a:1f:e3:f7:66 +# SHA256 Fingerprint: 15:2a:40:2b:fc:df:2c:d5:48:05:4d:22:75:b3:9c:7f:ca:3e:c0:97:80:78:b0:f0:ea:76:e5:61:a6:c7:43:3e +-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgISESBVg+QtPlRWhS2DN7cs3EYRMA0GCSqGSIb3DQEBDQUA +MD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2Vy +dHBsdXMgUm9vdCBDQSBHMTAeFw0xNDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBa +MD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2Vy +dHBsdXMgUm9vdCBDQSBHMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +ANpQh7bauKk+nWT6VjOaVj0W5QOVsjQcmm1iBdTYj+eJZJ+622SLZOZ5KmHNr49a +iZFluVj8tANfkT8tEBXgfs+8/H9DZ6itXjYj2JizTfNDnjl8KvzsiNWI7nC9hRYt +6kuJPKNxQv4c/dMcLRC4hlTqQ7jbxofaqK6AJc96Jh2qkbBIb6613p7Y1/oA/caP +0FG7Yn2ksYyy/yARujVjBYZHYEMzkPZHogNPlk2dT8Hq6pyi/jQu3rfKG3akt62f +6ajUeD94/vI4CTYd0hYCyOwqaK/1jpTvLRN6HkJKHRUxrgwEV/xhc/MxVoYxgKDE +EW4wduOU8F8ExKyHcomYxZ3MVwia9Az8fXoFOvpHgDm2z4QTd28n6v+WZxcIbekN +1iNQMLAVdBM+5S//Ds3EC0pd8NgAM0lm66EYfFkuPSi5YXHLtaW6uOrc4nBvCGrc +h2c0798wct3zyT8j/zXhviEpIDCB5BmlIOklynMxdCm+4kLV87ImZsdo/Rmz5yCT +mehd4F6H50boJZwKKSTUzViGUkAksnsPmBIgJPaQbEfIDbsYIC7Z/fyL8inqh3SV +4EJQeIQEQWGw9CEjjy3LKCHyamz0GqbFFLQ3ZU+V/YDI+HLlJWvEYLF7bY5KinPO +WftwenMGE9nTdDckQQoRb5fc5+R+ob0V8rqHDz1oihYHAgMBAAGjYzBhMA4GA1Ud +DwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSowcCbkahDFXxd +Bie0KlHYlwuBsTAfBgNVHSMEGDAWgBSowcCbkahDFXxdBie0KlHYlwuBsTANBgkq +hkiG9w0BAQ0FAAOCAgEAnFZvAX7RvUz1isbwJh/k4DgYzDLDKTudQSk0YcbX8ACh +66Ryj5QXvBMsdbRX7gp8CXrc1cqh0DQT+Hern+X+2B50ioUHj3/MeXrKls3N/U/7 +/SMNkPX0XtPGYX2eEeAC7gkE2Qfdpoq3DIMku4NQkv5gdRE+2J2winq14J2by5BS +S7CTKtQ+FjPlnsZlFT5kOwQ/2wyPX1wdaR+v8+khjPPvl/aatxm2hHSco1S1cE5j +2FddUyGbQJJD+tZ3VTNPZNX70Cxqjm0lpu+F6ALEUz65noe8zDUa3qHpimOHZR4R +Kttjd5cUvpoUmRGywO6wT/gUITJDT5+rosuoD6o7BlXGEilXCNQ314cnrUlZp5Gr +RHpejXDbl85IULFzk/bwg2D5zfHhMf1bfHEhYxQUqq/F3pN+aLHsIqKqkHWetUNy +6mSjhEv9DKgma3GX7lZjZuhCVPnHHd/Qj1vfyDBviP4NxDMcU6ij/UgQ8uQKTuEV +V/xuZDDCVRHc6qnNSlSsKWNEz0pAoNZoWRsz+e86i9sgktxChL8Bq4fA1SCC28a5 +g4VCXA9DO2pJNdWY9BW/+mGBDAkgGNLQFwzLSABQ6XaCjGTXOqAHVcweMcDvOrRl +++O/QmueD6i9a5jc2NvLi6Td11n0bt3+qsOR0C5CB8AMTVPNJLFMWx5R9N/pkvo= +-----END CERTIFICATE----- + +# Issuer: CN=Certplus Root CA G2 O=Certplus +# Subject: CN=Certplus Root CA G2 O=Certplus +# Label: "Certplus Root CA G2" +# Serial: 1492087096131536844209563509228951875861589 +# MD5 Fingerprint: a7:ee:c4:78:2d:1b:ee:2d:b9:29:ce:d6:a7:96:32:31 +# SHA1 Fingerprint: 4f:65:8e:1f:e9:06:d8:28:02:e9:54:47:41:c9:54:25:5d:69:cc:1a +# SHA256 Fingerprint: 6c:c0:50:41:e6:44:5e:74:69:6c:4c:fb:c9:f8:0f:54:3b:7e:ab:bb:44:b4:ce:6f:78:7c:6a:99:71:c4:2f:17 +-----BEGIN CERTIFICATE----- +MIICHDCCAaKgAwIBAgISESDZkc6uo+jF5//pAq/Pc7xVMAoGCCqGSM49BAMDMD4x +CzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBs +dXMgUm9vdCBDQSBHMjAeFw0xNDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBaMD4x +CzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBs +dXMgUm9vdCBDQSBHMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABM0PW1aC3/BFGtat +93nwHcmsltaeTpwftEIRyoa/bfuFo8XlGVzX7qY/aWfYeOKmycTbLXku54uNAm8x +Ik0G42ByRZ0OQneezs/lf4WbGOT8zC5y0xaTTsqZY1yhBSpsBqNjMGEwDgYDVR0P +AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNqDYwJ5jtpMxjwj +FNiPwyCrKGBZMB8GA1UdIwQYMBaAFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMAoGCCqG +SM49BAMDA2gAMGUCMHD+sAvZ94OX7PNVHdTcswYO/jOYnYs5kGuUIe22113WTNch +p+e/IQ8rzfcq3IUHnQIxAIYUFuXcsGXCwI4Un78kFmjlvPl5adytRSv3tjFzzAal +U5ORGpOucGpnutee5WEaXw== +-----END CERTIFICATE----- + +# Issuer: CN=OpenTrust Root CA G1 O=OpenTrust +# Subject: CN=OpenTrust Root CA G1 O=OpenTrust +# Label: "OpenTrust Root CA G1" +# Serial: 1492036577811947013770400127034825178844775 +# MD5 Fingerprint: 76:00:cc:81:29:cd:55:5e:88:6a:7a:2e:f7:4d:39:da +# SHA1 Fingerprint: 79:91:e8:34:f7:e2:ee:dd:08:95:01:52:e9:55:2d:14:e9:58:d5:7e +# SHA256 Fingerprint: 56:c7:71:28:d9:8c:18:d9:1b:4c:fd:ff:bc:25:ee:91:03:d4:75:8e:a2:ab:ad:82:6a:90:f3:45:7d:46:0e:b4 +-----BEGIN CERTIFICATE----- +MIIFbzCCA1egAwIBAgISESCzkFU5fX82bWTCp59rY45nMA0GCSqGSIb3DQEBCwUA +MEAxCzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9w +ZW5UcnVzdCBSb290IENBIEcxMB4XDTE0MDUyNjA4NDU1MFoXDTM4MDExNTAwMDAw +MFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCU9wZW5UcnVzdDEdMBsGA1UEAwwU +T3BlblRydXN0IFJvb3QgQ0EgRzEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQD4eUbalsUwXopxAy1wpLuwxQjczeY1wICkES3d5oeuXT2R0odsN7faYp6b +wiTXj/HbpqbfRm9RpnHLPhsxZ2L3EVs0J9V5ToybWL0iEA1cJwzdMOWo010hOHQX +/uMftk87ay3bfWAfjH1MBcLrARYVmBSO0ZB3Ij/swjm4eTrwSSTilZHcYTSSjFR0 +77F9jAHiOH3BX2pfJLKOYheteSCtqx234LSWSE9mQxAGFiQD4eCcjsZGT44ameGP +uY4zbGneWK2gDqdkVBFpRGZPTBKnjix9xNRbxQA0MMHZmf4yzgeEtE7NCv82TWLx +p2NX5Ntqp66/K7nJ5rInieV+mhxNaMbBGN4zK1FGSxyO9z0M+Yo0FMT7MzUj8czx +Kselu7Cizv5Ta01BG2Yospb6p64KTrk5M0ScdMGTHPjgniQlQ/GbI4Kq3ywgsNw2 +TgOzfALU5nsaqocTvz6hdLubDuHAk5/XpGbKuxs74zD0M1mKB3IDVedzagMxbm+W +G+Oin6+Sx+31QrclTDsTBM8clq8cIqPQqwWyTBIjUtz9GVsnnB47ev1CI9sjgBPw +vFEVVJSmdz7QdFG9URQIOTfLHzSpMJ1ShC5VkLG631UAC9hWLbFJSXKAqWLXwPYY +EQRVzXR7z2FwefR7LFxckvzluFqrTJOVoSfupb7PcSNCupt2LQIDAQABo2MwYTAO +BgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUl0YhVyE1 +2jZVx/PxN3DlCPaTKbYwHwYDVR0jBBgwFoAUl0YhVyE12jZVx/PxN3DlCPaTKbYw +DQYJKoZIhvcNAQELBQADggIBAB3dAmB84DWn5ph76kTOZ0BP8pNuZtQ5iSas000E +PLuHIT839HEl2ku6q5aCgZG27dmxpGWX4m9kWaSW7mDKHyP7Rbr/jyTwyqkxf3kf +gLMtMrpkZ2CvuVnN35pJ06iCsfmYlIrM4LvgBBuZYLFGZdwIorJGnkSI6pN+VxbS +FXJfLkur1J1juONI5f6ELlgKn0Md/rcYkoZDSw6cMoYsYPXpSOqV7XAp8dUv/TW0 +V8/bhUiZucJvbI/NeJWsZCj9VrDDb8O+WVLhX4SPgPL0DTatdrOjteFkdjpY3H1P +XlZs5VVZV6Xf8YpmMIzUUmI4d7S+KNfKNsSbBfD4Fdvb8e80nR14SohWZ25g/4/I +i+GOvUKpMwpZQhISKvqxnUOOBZuZ2mKtVzazHbYNeS2WuOvyDEsMpZTGMKcmGS3t +TAZQMPH9WD25SxdfGbRqhFS0OE85og2WaMMolP3tLR9Ka0OWLpABEPs4poEL0L91 +09S5zvE/bw4cHjdx5RiHdRk/ULlepEU0rbDK5uUTdg8xFKmOLZTW1YVNcxVPS/Ky +Pu1svf0OnWZzsD2097+o4BGkxK51CUpjAEggpsadCwmKtODmzj7HPiY46SvepghJ +AwSQiumPv+i2tCqjI40cHLI5kqiPAlxAOXXUc0ECd97N4EOH1uS6SsNsEn/+KuYj +1oxx +-----END CERTIFICATE----- + +# Issuer: CN=OpenTrust Root CA G2 O=OpenTrust +# Subject: CN=OpenTrust Root CA G2 O=OpenTrust +# Label: "OpenTrust Root CA G2" +# Serial: 1492012448042702096986875987676935573415441 +# MD5 Fingerprint: 57:24:b6:59:24:6b:ae:c8:fe:1c:0c:20:f2:c0:4e:eb +# SHA1 Fingerprint: 79:5f:88:60:c5:ab:7c:3d:92:e6:cb:f4:8d:e1:45:cd:11:ef:60:0b +# SHA256 Fingerprint: 27:99:58:29:fe:6a:75:15:c1:bf:e8:48:f9:c4:76:1d:b1:6c:22:59:29:25:7b:f4:0d:08:94:f2:9e:a8:ba:f2 +-----BEGIN CERTIFICATE----- +MIIFbzCCA1egAwIBAgISESChaRu/vbm9UpaPI+hIvyYRMA0GCSqGSIb3DQEBDQUA +MEAxCzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9w +ZW5UcnVzdCBSb290IENBIEcyMB4XDTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAw +MFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCU9wZW5UcnVzdDEdMBsGA1UEAwwU +T3BlblRydXN0IFJvb3QgQ0EgRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQDMtlelM5QQgTJT32F+D3Y5z1zCU3UdSXqWON2ic2rxb95eolq5cSG+Ntmh +/LzubKh8NBpxGuga2F8ORAbtp+Dz0mEL4DKiltE48MLaARf85KxP6O6JHnSrT78e +CbY2albz4e6WiWYkBuTNQjpK3eCasMSCRbP+yatcfD7J6xcvDH1urqWPyKwlCm/6 +1UWY0jUJ9gNDlP7ZvyCVeYCYitmJNbtRG6Q3ffyZO6v/v6wNj0OxmXsWEH4db0fE +FY8ElggGQgT4hNYdvJGmQr5J1WqIP7wtUdGejeBSzFfdNTVY27SPJIjki9/ca1TS +gSuyzpJLHB9G+h3Ykst2Z7UJmQnlrBcUVXDGPKBWCgOz3GIZ38i1MH/1PCZ1Eb3X +G7OHngevZXHloM8apwkQHZOJZlvoPGIytbU6bumFAYueQ4xncyhZW+vj3CzMpSZy +YhK05pyDRPZRpOLAeiRXyg6lPzq1O4vldu5w5pLeFlwoW5cZJ5L+epJUzpM5ChaH +vGOz9bGTXOBut9Dq+WIyiET7vycotjCVXRIouZW+j1MY5aIYFuJWpLIsEPUdN6b4 +t/bQWVyJ98LVtZR00dX+G7bw5tYee9I8y6jj9RjzIR9u701oBnstXW5DiabA+aC/ +gh7PU3+06yzbXfZqfUAkBXKJOAGTy3HCOV0GEfZvePg3DTmEJwIDAQABo2MwYTAO +BgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUajn6QiL3 +5okATV59M4PLuG53hq8wHwYDVR0jBBgwFoAUajn6QiL35okATV59M4PLuG53hq8w +DQYJKoZIhvcNAQENBQADggIBAJjLq0A85TMCl38th6aP1F5Kr7ge57tx+4BkJamz +Gj5oXScmp7oq4fBXgwpkTx4idBvpkF/wrM//T2h6OKQQbA2xx6R3gBi2oihEdqc0 +nXGEL8pZ0keImUEiyTCYYW49qKgFbdEfwFFEVn8nNQLdXpgKQuswv42hm1GqO+qT +RmTFAHneIWv2V6CG1wZy7HBGS4tz3aAhdT7cHcCP009zHIXZ/n9iyJVvttN7jLpT +wm+bREx50B1ws9efAvSyB7DH5fitIw6mVskpEndI2S9G/Tvw/HRwkqWOOAgfZDC2 +t0v7NqwQjqBSM2OdAzVWxWm9xiNaJ5T2pBL4LTM8oValX9YZ6e18CL13zSdkzJTa +TkZQh+D5wVOAHrut+0dSixv9ovneDiK3PTNZbNTe9ZUGMg1RGUFcPk8G97krgCf2 +o6p6fAbhQ8MTOWIaNr3gKC6UAuQpLmBVrkA9sHSSXvAgZJY/X0VdiLWK2gKgW0VU +3jg9CcCoSmVGFvyqv1ROTVu+OEO3KMqLM6oaJbolXCkvW0pujOotnCr2BXbgd5eA +iN1nE28daCSLT7d0geX0YJ96Vdc+N9oWaz53rK4YcJUIeSkDiv7BO7M/Gg+kO14f +WKGVyasvc0rQLW6aWQ9VGHgtPFGml4vmu7JwqkwR3v98KzfUetF3NI/n+UL3PIEM +S1IK +-----END CERTIFICATE----- + +# Issuer: CN=OpenTrust Root CA G3 O=OpenTrust +# Subject: CN=OpenTrust Root CA G3 O=OpenTrust +# Label: "OpenTrust Root CA G3" +# Serial: 1492104908271485653071219941864171170455615 +# MD5 Fingerprint: 21:37:b4:17:16:92:7b:67:46:70:a9:96:d7:a8:13:24 +# SHA1 Fingerprint: 6e:26:64:f3:56:bf:34:55:bf:d1:93:3f:7c:01:de:d8:13:da:8a:a6 +# SHA256 Fingerprint: b7:c3:62:31:70:6e:81:07:8c:36:7c:b8:96:19:8f:1e:32:08:dd:92:69:49:dd:8f:57:09:a4:10:f7:5b:62:92 +-----BEGIN CERTIFICATE----- +MIICITCCAaagAwIBAgISESDm+Ez8JLC+BUCs2oMbNGA/MAoGCCqGSM49BAMDMEAx +CzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5U +cnVzdCBSb290IENBIEczMB4XDTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAwMFow +QDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCU9wZW5UcnVzdDEdMBsGA1UEAwwUT3Bl +blRydXN0IFJvb3QgQ0EgRzMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARK7liuTcpm +3gY6oxH84Bjwbhy6LTAMidnW7ptzg6kjFYwvWYpa3RTqnVkrQ7cG7DK2uu5Bta1d +oYXM6h0UZqNnfkbilPPntlahFVmhTzeXuSIevRHr9LIfXsMUmuXZl5mjYzBhMA4G +A1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRHd8MUi2I5 +DMlv4VBN0BBY3JWIbTAfBgNVHSMEGDAWgBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAK +BggqhkjOPQQDAwNpADBmAjEAj6jcnboMBBf6Fek9LykBl7+BFjNAk2z8+e2AcG+q +j9uEwov1NcoG3GRvaBbhj5G5AjEA2Euly8LQCGzpGPta3U1fJAuwACEl74+nBCZx +4nxp5V2a+EEfOzmTk51V6s2N8fvB +-----END CERTIFICATE----- + +# Issuer: CN=ISRG Root X1 O=Internet Security Research Group +# Subject: CN=ISRG Root X1 O=Internet Security Research Group +# Label: "ISRG Root X1" +# Serial: 172886928669790476064670243504169061120 +# MD5 Fingerprint: 0c:d2:f9:e0:da:17:73:e9:ed:86:4d:a5:e3:70:e7:4e +# SHA1 Fingerprint: ca:bd:2a:79:a1:07:6a:31:f2:1d:25:36:35:cb:03:9d:43:29:a5:e8 +# SHA256 Fingerprint: 96:bc:ec:06:26:49:76:f3:74:60:77:9a:cf:28:c5:a7:cf:e8:a3:c0:aa:e1:1a:8f:fc:ee:05:c0:bd:df:08:c6 +-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 +WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu +ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY +MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc +h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ +0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U +A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW +T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH +B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC +B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv +KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn +OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn +jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw +qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI +rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq +hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL +ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ +3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK +NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 +ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur +TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC +jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc +oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq +4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA +mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d +emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= +-----END CERTIFICATE----- + +# Issuer: O=FNMT-RCM OU=AC RAIZ FNMT-RCM +# Subject: O=FNMT-RCM OU=AC RAIZ FNMT-RCM +# Label: "AC RAIZ FNMT-RCM" +# Serial: 485876308206448804701554682760554759 +# MD5 Fingerprint: e2:09:04:b4:d3:bd:d1:a0:14:fd:1a:d2:47:c4:57:1d +# SHA1 Fingerprint: ec:50:35:07:b2:15:c4:95:62:19:e2:a8:9a:5b:42:99:2c:4c:2c:20 +# SHA256 Fingerprint: eb:c5:57:0c:29:01:8c:4d:67:b1:aa:12:7b:af:12:f7:03:b4:61:1e:bc:17:b7:da:b5:57:38:94:17:9b:93:fa +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsx +CzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJ +WiBGTk1ULVJDTTAeFw0wODEwMjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJ +BgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBG +Tk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALpxgHpMhm5/ +yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcfqQgf +BBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAz +WHFctPVrbtQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxF +tBDXaEAUwED653cXeuYLj2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z +374jNUUeAlz+taibmSXaXvMiwzn15Cou08YfxGyqxRxqAQVKL9LFwag0Jl1mpdIC +IfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mwWsXmo8RZZUc1g16p6DUL +mbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnTtOmlcYF7 +wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peS +MKGJ47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2 +ZSysV4999AeU14ECll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMet +UqIJ5G+GR4of6ygnXYMgrwTJbFaai0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFPd9xf3E6Jobd2Sn9R2gzL+H +YJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1odHRwOi8vd3d3 +LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD +nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1 +RXxlDPiyN8+sD8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYM +LVN0V2Ue1bLdI4E7pWYjJ2cJj+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf +77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrTQfv6MooqtyuGC2mDOL7Nii4LcK2N +JpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW+YJF1DngoABd15jm +fZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7Ixjp +6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp +1txyM/1d8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B +9kiABdcPUXmsEKvU7ANm5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wok +RqEIr9baRRmW1FMdW4R58MD3R++Lj8UGrp1MYp3/RgT408m2ECVAdf4WqslKYIYv +uu8wd+RU4riEmViAqhOLUTpPSPaLtrM= +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 1 O=Amazon +# Subject: CN=Amazon Root CA 1 O=Amazon +# Label: "Amazon Root CA 1" +# Serial: 143266978916655856878034712317230054538369994 +# MD5 Fingerprint: 43:c6:bf:ae:ec:fe:ad:2f:18:c6:88:68:30:fc:c8:e6 +# SHA1 Fingerprint: 8d:a7:f9:65:ec:5e:fc:37:91:0f:1c:6e:59:fd:c1:cc:6a:6e:de:16 +# SHA256 Fingerprint: 8e:cd:e6:88:4f:3d:87:b1:12:5b:a3:1a:c3:fc:b1:3d:70:16:de:7f:57:cc:90:4f:e1:cb:97:c6:ae:98:19:6e +-----BEGIN CERTIFICATE----- +MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF +ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 +b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL +MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv +b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj +ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM +9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw +IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6 +VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L +93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm +jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA +A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI +U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs +N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv +o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU +5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy +rqXRfboQnoZsG4q5WTP468SQvvG5 +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 2 O=Amazon +# Subject: CN=Amazon Root CA 2 O=Amazon +# Label: "Amazon Root CA 2" +# Serial: 143266982885963551818349160658925006970653239 +# MD5 Fingerprint: c8:e5:8d:ce:a8:42:e2:7a:c0:2a:5c:7c:9e:26:bf:66 +# SHA1 Fingerprint: 5a:8c:ef:45:d7:a6:98:59:76:7a:8c:8b:44:96:b5:78:cf:47:4b:1a +# SHA256 Fingerprint: 1b:a5:b2:aa:8c:65:40:1a:82:96:01:18:f8:0b:ec:4f:62:30:4d:83:ce:c4:71:3a:19:c3:9c:01:1e:a4:6d:b4 +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwF +ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 +b24gUm9vdCBDQSAyMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTEL +MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv +b3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK2Wny2cSkxK +gXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4kHbZ +W0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg +1dKmSYXpN+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K +8nu+NQWpEjTj82R0Yiw9AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r +2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvdfLC6HM783k81ds8P+HgfajZRRidhW+me +z/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAExkv8LV/SasrlX6avvDXbR +8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSSbtqDT6Zj +mUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz +7Mt0Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6 ++XUyo05f7O0oYtlNc/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI +0u1ufm8/0i2BWSlmy5A5lREedCf+3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB +Af8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSwDPBMMPQFWAJI/TPlUq9LhONm +UjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oAA7CXDpO8Wqj2 +LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY ++gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kS +k5Nrp+gvU5LEYFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl +7uxMMne0nxrpS10gxdr9HIcWxkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygm +btmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQgj9sAq+uEjonljYE1x2igGOpm/Hl +urR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbWaQbLU8uz/mtBzUF+ +fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoVYh63 +n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE +76KlXIx3KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H +9jVlpNMKVv/1F2Rs76giJUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT +4PsJYGw= +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 3 O=Amazon +# Subject: CN=Amazon Root CA 3 O=Amazon +# Label: "Amazon Root CA 3" +# Serial: 143266986699090766294700635381230934788665930 +# MD5 Fingerprint: a0:d4:ef:0b:f7:b5:d8:49:95:2a:ec:f5:c4:fc:81:87 +# SHA1 Fingerprint: 0d:44:dd:8c:3c:8c:1a:1a:58:75:64:81:e9:0f:2e:2a:ff:b3:d2:6e +# SHA256 Fingerprint: 18:ce:6c:fe:7b:f1:4e:60:b2:e3:47:b8:df:e8:68:cb:31:d0:2e:bb:3a:da:27:15:69:f5:03:43:b4:6d:b3:a4 +-----BEGIN CERTIFICATE----- +MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5 +MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g +Um9vdCBDQSAzMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG +A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg +Q0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZBf8ANm+gBG1bG8lKl +ui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjrZt6j +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSr +ttvXBp43rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkr +BqWTrBqYaGFy+uGh0PsceGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteM +YyRIHN8wfdVoOw== +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 4 O=Amazon +# Subject: CN=Amazon Root CA 4 O=Amazon +# Label: "Amazon Root CA 4" +# Serial: 143266989758080763974105200630763877849284878 +# MD5 Fingerprint: 89:bc:27:d5:eb:17:8d:06:6a:69:d5:fd:89:47:b4:cd +# SHA1 Fingerprint: f6:10:84:07:d6:f8:bb:67:98:0c:c2:e2:44:c2:eb:ae:1c:ef:63:be +# SHA256 Fingerprint: e3:5d:28:41:9e:d0:20:25:cf:a6:90:38:cd:62:39:62:45:8d:a5:c6:95:fb:de:a3:c2:2b:0b:fb:25:89:70:92 +-----BEGIN CERTIFICATE----- +MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5 +MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g +Um9vdCBDQSA0MB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG +A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg +Q0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN/sGKe0uoe0ZLY7Bi +9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri83Bk +M6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WB +MAoGCCqGSM49BAMDA2gAMGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlw +CkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1AE47xDqUEpHJWEadIRNyp4iciuRMStuW +1KyLa2tJElMzrdfkviT8tQp21KW8EA== +-----END CERTIFICATE----- + +# Issuer: CN=LuxTrust Global Root 2 O=LuxTrust S.A. +# Subject: CN=LuxTrust Global Root 2 O=LuxTrust S.A. +# Label: "LuxTrust Global Root 2" +# Serial: 59914338225734147123941058376788110305822489521 +# MD5 Fingerprint: b2:e1:09:00:61:af:f7:f1:91:6f:c4:ad:8d:5e:3b:7c +# SHA1 Fingerprint: 1e:0e:56:19:0a:d1:8b:25:98:b2:04:44:ff:66:8a:04:17:99:5f:3f +# SHA256 Fingerprint: 54:45:5f:71:29:c2:0b:14:47:c4:18:f9:97:16:8f:24:c5:8f:c5:02:3b:f5:da:5b:e2:eb:6e:1d:d8:90:2e:d5 +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +# Issuer: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM +# Subject: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM +# Label: "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" # Serial: 1 -# MD5 Fingerprint: a9:23:75:9b:ba:49:36:6e:31:c2:db:f2:e7:66:ba:87 -# SHA1 Fingerprint: 31:7a:2a:d0:7f:2b:33:5e:f5:a1:c3:4e:4b:57:e8:b7:d8:f1:fc:a6 -# SHA256 Fingerprint: 58:d0:17:27:9c:d4:dc:63:ab:dd:b1:96:a6:c9:90:6c:30:c4:e0:87:83:ea:e8:c1:60:99:54:d6:93:55:59:6b +# MD5 Fingerprint: dc:00:81:dc:69:2f:3e:2f:b0:3b:f6:3d:5a:91:8e:49 +# SHA1 Fingerprint: 31:43:64:9b:ec:ce:27:ec:ed:3a:3f:0b:8f:0d:e4:e8:91:dd:ee:ca +# SHA256 Fingerprint: 46:ed:c3:68:90:46:d5:3a:45:3f:b3:10:4a:b8:0d:ca:ec:65:8b:26:60:ea:16:29:dd:7e:86:79:90:64:87:16 -----BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy -NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY -dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 -WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS -v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v -UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu -IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC -W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd +MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIx +GDAWBgNVBAcTD0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxp +bXNlbCB2ZSBUZWtub2xvamlrIEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0w +KwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24gTWVya2V6aSAtIEthbXUgU00xNjA0 +BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRpZmlrYXNpIC0gU3Vy +dW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYDVQQG +EwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXll +IEJpbGltc2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklU +QUsxLTArBgNVBAsTJEthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBT +TTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11IFNNIFNTTCBLb2sgU2VydGlmaWthc2kg +LSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr3UwM6q7 +a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y86Ij5iySr +LqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INr +N3wcwv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2X +YacQuFWQfw4tJzh03+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/ +iSIzL+aFCr2lqBs23tPcLG07xxO9WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4f +AJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQUZT/HiobGPN08VFw1+DrtUgxH +V8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL +BQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh +AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPf +IPP54+M638yclNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4 +lzwDGrpDxpa5RXI4s6ehlj2Re37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c +8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0jq5Rm+K37DwhuJi1/FwcJsoz7UMCf +lo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM= -----END CERTIFICATE----- -# Issuer: CN=NetLock Expressz (Class C) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Subject: CN=NetLock Expressz (Class C) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Label: "NetLock Express (Class C) Root" -# Serial: 104 -# MD5 Fingerprint: 4f:eb:f1:f0:70:c2:80:63:5d:58:9f:da:12:3c:a9:c4 -# SHA1 Fingerprint: e3:92:51:2f:0a:cf:f5:05:df:f6:de:06:7f:75:37:e1:65:ea:57:4b -# SHA256 Fingerprint: 0b:5e:ed:4e:84:64:03:cf:55:e0:65:84:84:40:ed:2a:82:75:8b:f5:b9:aa:1f:25:3d:46:13:cf:a0:80:ff:3f +# Issuer: CN=GDCA TrustAUTH R5 ROOT O=GUANG DONG CERTIFICATE AUTHORITY CO.,LTD. +# Subject: CN=GDCA TrustAUTH R5 ROOT O=GUANG DONG CERTIFICATE AUTHORITY CO.,LTD. +# Label: "GDCA TrustAUTH R5 ROOT" +# Serial: 9009899650740120186 +# MD5 Fingerprint: 63:cc:d9:3d:34:35:5c:6f:53:a3:e2:08:70:48:1f:b4 +# SHA1 Fingerprint: 0f:36:38:5b:81:1a:25:c3:9b:31:4e:83:ca:e9:34:66:70:cc:74:b4 +# SHA256 Fingerprint: bf:ff:8f:d0:44:33:48:7d:6a:8a:a6:0c:1a:29:76:7a:9f:c2:bb:b0:5e:42:0f:71:3a:13:b9:92:89:1d:38:93 -----BEGIN CERTIFICATE----- -MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUx -ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0 -b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQD -EytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBDKSBUYW51c2l0dmFueWtpYWRvMB4X -DTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJBgNVBAYTAkhVMREw -DwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9u -c2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMr -TmV0TG9jayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzAN -BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNA -OoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3ZW3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC -2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63euyucYT2BDMIJTLrdKwW -RMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQwDgYDVR0P -AQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEW -ggJNRklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0 -YWxhbm9zIFN6b2xnYWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFz -b2sgYWxhcGphbiBrZXN6dWx0LiBBIGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBO -ZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1iaXp0b3NpdGFzYSB2ZWRpLiBB -IGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0ZWxlIGF6IGVs -b2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs -ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25s -YXBqYW4gYSBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kg -a2VyaGV0byBheiBlbGxlbm9yemVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4g -SU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5kIHRoZSB1c2Ugb2YgdGhpcyBjZXJ0 -aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQUyBhdmFpbGFibGUg -YXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwgYXQg -Y3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmY -ta3UzbM2xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2g -pO0u9f38vf5NNwgMvOOWgyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4 -Fp1hBWeAyNDYpQcCNJgEjTME1A== +MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UE +BhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ +IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0 +MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVowYjELMAkGA1UEBhMCQ04xMjAwBgNV +BAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8w +HQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJj +Dp6L3TQsAlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBj +TnnEt1u9ol2x8kECK62pOqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+u +KU49tm7srsHwJ5uu4/Ts765/94Y9cnrrpftZTqfrlYwiOXnhLQiPzLyRuEH3FMEj +qcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ9Cy5WmYqsBebnh52nUpm +MUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQxXABZG12 +ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloP +zgsMR6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3Gk +L30SgLdTMEZeS1SZD2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeC +jGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4oR24qoAATILnsn8JuLwwoC8N9VKejveSswoA +HQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx9hoh49pwBiFYFIeFd3mqgnkC +AwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlRMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg +p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZm +DRd9FBUb1Ov9H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5 +COmSdI31R9KrO9b7eGZONn356ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ry +L3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd+PwyvzeG5LuOmCd+uh8W4XAR8gPf +JWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQHtZa37dG/OaG+svg +IHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBDF8Io +2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV +09tL7ECQ8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQ +XR4EzzffHqhmsYzmIGrv/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrq +T8p+ck0LcIymSLumoRT2+1hEmRSuqguTaaApJUqlyyvdimYHFngVV3Eb7PVHhPOe +MTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g== -----END CERTIFICATE----- -# Issuer: CN=NetLock Uzleti (Class B) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Subject: CN=NetLock Uzleti (Class B) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Label: "NetLock Business (Class B) Root" -# Serial: 105 -# MD5 Fingerprint: 39:16:aa:b9:6a:41:e1:14:69:df:9e:6c:3b:72:dc:b6 -# SHA1 Fingerprint: 87:9f:4b:ee:05:df:98:58:3b:e3:60:d6:33:e7:0d:3f:fe:98:71:af -# SHA256 Fingerprint: 39:df:7b:68:2b:7b:93:8f:84:71:54:81:cc:de:8d:60:d8:f2:2e:c5:98:87:7d:0a:aa:c1:2b:59:18:2b:03:12 +# Issuer: CN=TrustCor RootCert CA-1 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority +# Subject: CN=TrustCor RootCert CA-1 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority +# Label: "TrustCor RootCert CA-1" +# Serial: 15752444095811006489 +# MD5 Fingerprint: 6e:85:f1:dc:1a:00:d3:22:d5:b2:b2:ac:6b:37:05:45 +# SHA1 Fingerprint: ff:bd:cd:e7:82:c8:43:5e:3c:6f:26:86:5c:ca:a8:3a:45:5b:c3:0a +# SHA256 Fingerprint: d4:0e:9c:86:cd:8f:e4:68:c1:77:69:59:f4:9e:a7:74:fa:54:86:84:b6:c4:06:f3:90:92:61:f4:dc:e2:57:5c -----BEGIN CERTIFICATE----- -MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUx -ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0 -b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQD -EylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikgVGFudXNpdHZhbnlraWFkbzAeFw05 -OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYDVQQGEwJIVTERMA8G -A1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNh -Z2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5l -dExvY2sgVXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqG -SIb3DQEBAQUAA4GNADCBiQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xK -gZjupNTKihe5In+DCnVMm8Bp2GQ5o+2So/1bXHQawEfKOml2mrriRBf8TKPV/riX -iK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr1nGTLbO/CVRY7QbrqHvc -Q7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNVHQ8BAf8E -BAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1G -SUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFu -b3MgU3pvbGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBh -bGFwamFuIGtlc3p1bHQuIEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExv -Y2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRvc2l0YXNhIHZlZGkuIEEgZGln -aXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUgYXogZWxvaXJ0 -IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh -c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGph -biBhIGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJo -ZXRvIGF6IGVsbGVub3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBP -UlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmlj -YXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2YWlsYWJsZSBhdCBo -dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBjcHNA -bmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06 -sPgzTEdM43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXa -n3BukxowOR0w2y7jfLKRstE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKS -NitjrFgBazMpUIaD8QFI +MIIEMDCCAxigAwIBAgIJANqb7HHzA7AZMA0GCSqGSIb3DQEBCwUAMIGkMQswCQYD +VQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEk +MCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5U +cnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHzAdBgNVBAMMFlRydXN0Q29y +IFJvb3RDZXJ0IENBLTEwHhcNMTYwMjA0MTIzMjE2WhcNMjkxMjMxMTcyMzE2WjCB +pDELMAkGA1UEBhMCUEExDzANBgNVBAgMBlBhbmFtYTEUMBIGA1UEBwwLUGFuYW1h +IENpdHkxJDAiBgNVBAoMG1RydXN0Q29yIFN5c3RlbXMgUy4gZGUgUi5MLjEnMCUG +A1UECwweVHJ1c3RDb3IgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR8wHQYDVQQDDBZU +cnVzdENvciBSb290Q2VydCBDQS0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAv463leLCJhJrMxnHQFgKq1mqjQCj/IDHUHuO1CAmujIS2CNUSSUQIpid +RtLByZ5OGy4sDjjzGiVoHKZaBeYei0i/mJZ0PmnK6bV4pQa81QBeCQryJ3pS/C3V +seq0iWEk8xoT26nPUu0MJLq5nux+AHT6k61sKZKuUbS701e/s/OojZz0JEsq1pme +9J7+wH5COucLlVPat2gOkEz7cD+PSiyU8ybdY2mplNgQTsVHCJCZGxdNuWxu72CV +EY4hgLW9oHPY0LJ3xEXqWib7ZnZ2+AYfYW0PVcWDtxBWcgYHpfOxGgMFZA6dWorW +hnAbJN7+KIor0Gqw/Hqi3LJ5DotlDwIDAQABo2MwYTAdBgNVHQ4EFgQU7mtJPHo/ +DeOxCbeKyKsZn3MzUOcwHwYDVR0jBBgwFoAU7mtJPHo/DeOxCbeKyKsZn3MzUOcw +DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQAD +ggEBACUY1JGPE+6PHh0RU9otRCkZoB5rMZ5NDp6tPVxBb5UrJKF5mDo4Nvu7Zp5I +/5CQ7z3UuJu0h3U/IJvOcs+hVcFNZKIZBqEHMwwLKeXx6quj7LUKdJDHfXLy11yf +ke+Ri7fc7Waiz45mO7yfOgLgJ90WmMCV1Aqk5IGadZQ1nJBfiDcGrVmVCrDRZ9MZ +yonnMlo2HD6CqFqTvsbQZJG2z9m2GM/bftJlo6bEjhcxwft+dtvTheNYsnd6djts +L1Ac59v2Z3kf9YKVmgenFK+P3CghZwnS1k1aHBkcjndcw5QkPTJrS37UeJSDvjdN +zl/HHk484IkzlQsPpTLWPFp5LBk= -----END CERTIFICATE----- -# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority -# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority -# Label: "RSA Root Certificate 1" -# Serial: 1 -# MD5 Fingerprint: a2:6f:53:b7:ee:40:db:4a:68:e7:fa:18:d9:10:4b:72 -# SHA1 Fingerprint: 69:bd:8c:f4:9c:d3:00:fb:59:2e:17:93:ca:55:6a:f3:ec:aa:35:fb -# SHA256 Fingerprint: bc:23:f9:8a:31:3c:b9:2d:e3:bb:fc:3a:5a:9f:44:61:ac:39:49:4c:4a:e1:5a:9e:9d:f1:31:e9:9b:73:01:9a +# Issuer: CN=TrustCor RootCert CA-2 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority +# Subject: CN=TrustCor RootCert CA-2 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority +# Label: "TrustCor RootCert CA-2" +# Serial: 2711694510199101698 +# MD5 Fingerprint: a2:e1:f8:18:0b:ba:45:d5:c7:41:2a:bb:37:52:45:64 +# SHA1 Fingerprint: b8:be:6d:cb:56:f1:55:b9:63:d4:12:ca:4e:06:34:c7:94:b2:1c:c0 +# SHA256 Fingerprint: 07:53:e9:40:37:8c:1b:d5:e3:83:6e:39:5d:ae:a5:cb:83:9e:50:46:f1:bd:0e:ae:19:51:cf:10:fe:c7:c9:65 -----BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy -NjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD -cnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs -2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY -JJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE -Zwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ -n0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A -PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu +MIIGLzCCBBegAwIBAgIIJaHfyjPLWQIwDQYJKoZIhvcNAQELBQAwgaQxCzAJBgNV +BAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5MSQw +IgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRy +dXN0Q29yIENlcnRpZmljYXRlIEF1dGhvcml0eTEfMB0GA1UEAwwWVHJ1c3RDb3Ig +Um9vdENlcnQgQ0EtMjAeFw0xNjAyMDQxMjMyMjNaFw0zNDEyMzExNzI2MzlaMIGk +MQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEg +Q2l0eTEkMCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYD +VQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHzAdBgNVBAMMFlRy +dXN0Q29yIFJvb3RDZXJ0IENBLTIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQCnIG7CKqJiJJWQdsg4foDSq8GbZQWU9MEKENUCrO2fk8eHyLAnK0IMPQo+ +QVqedd2NyuCb7GgypGmSaIwLgQ5WoD4a3SwlFIIvl9NkRvRUqdw6VC0xK5mC8tkq +1+9xALgxpL56JAfDQiDyitSSBBtlVkxs1Pu2YVpHI7TYabS3OtB0PAx1oYxOdqHp +2yqlO/rOsP9+aij9JxzIsekp8VduZLTQwRVtDr4uDkbIXvRR/u8OYzo7cbrPb1nK +DOObXUm4TOJXsZiKQlecdu/vvdFoqNL0Cbt3Nb4lggjEFixEIFapRBF37120Hape +az6LMvYHL1cEksr1/p3C6eizjkxLAjHZ5DxIgif3GIJ2SDpxsROhOdUuxTTCHWKF +3wP+TfSvPd9cW436cOGlfifHhi5qjxLGhF5DUVCcGZt45vz27Ud+ez1m7xMTiF88 +oWP7+ayHNZ/zgp6kPwqcMWmLmaSISo5uZk3vFsQPeSghYA2FFn3XVDjxklb9tTNM +g9zXEJ9L/cb4Qr26fHMC4P99zVvh1Kxhe1fVSntb1IVYJ12/+CtgrKAmrhQhJ8Z3 +mjOAPF5GP/fDsaOGM8boXg25NSyqRsGFAnWAoOsk+xWq5Gd/bnc/9ASKL3x74xdh +8N0JqSDIvgmk0H5Ew7IwSjiqqewYmgeCK9u4nBit2uBGF6zPXQIDAQABo2MwYTAd +BgNVHQ4EFgQU2f4hQG6UnrybPZx9mCAZ5YwwYrIwHwYDVR0jBBgwFoAU2f4hQG6U +nrybPZx9mCAZ5YwwYrIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYw +DQYJKoZIhvcNAQELBQADggIBAJ5Fngw7tu/hOsh80QA9z+LqBrWyOrsGS2h60COX +dKcs8AjYeVrXWoSK2BKaG9l9XE1wxaX5q+WjiYndAfrs3fnpkpfbsEZC89NiqpX+ +MWcUaViQCqoL7jcjx1BRtPV+nuN79+TMQjItSQzL/0kMmx40/W5ulop5A7Zv2wnL +/V9lFDfhOPXzYRZY5LVtDQsEGz9QLX+zx3oaFoBg+Iof6Rsqxvm6ARppv9JYx1RX +CI/hOWB3S6xZhBqI8d3LT3jX5+EzLfzuQfogsL7L9ziUwOHQhQ+77Sxzq+3+knYa +ZH9bDTMJBzN7Bj8RpFxwPIXAz+OQqIN3+tvmxYxoZxBnpVIt8MSZj3+/0WvitUfW +2dCFmU2Umw9Lje4AWkcdEQOsQRivh7dvDDqPys/cA8GiCcjl/YBeyGBCARsaU1q7 +N6a3vLqE6R5sGtRk2tRD/pOLS/IseRYQ1JMLiI+h2IYURpFHmygk71dSTlxCnKr3 +Sewn6EAes6aJInKc9Q0ztFijMDvd1GpUk74aTfOTlPf8hAs/hCBcNANExdqtvArB +As8e5ZTZ845b2EzwnexhF7sUMlQMAimTHpKG9n/v55IFDlndmQguLvqcAFLTxWYp +5KeXRKQOKIETNcX2b2TmQcTVL8w0RSXPQQCWPUouwpaYT05KnJe32x+SMsj/D1Fu +1uwJ -----END CERTIFICATE----- -# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority -# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority -# Label: "ValiCert Class 1 VA" -# Serial: 1 -# MD5 Fingerprint: 65:58:ab:15:ad:57:6c:1e:a8:a7:b5:69:ac:bf:ff:eb -# SHA1 Fingerprint: e5:df:74:3c:b6:01:c4:9b:98:43:dc:ab:8c:e8:6a:81:10:9f:e4:8e -# SHA256 Fingerprint: f4:c1:49:55:1a:30:13:a3:5b:c7:bf:fe:17:a7:f3:44:9b:c1:ab:5b:5a:0a:e7:4b:06:c2:3b:90:00:4c:01:04 +# Issuer: CN=TrustCor ECA-1 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority +# Subject: CN=TrustCor ECA-1 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority +# Label: "TrustCor ECA-1" +# Serial: 9548242946988625984 +# MD5 Fingerprint: 27:92:23:1d:0a:f5:40:7c:e9:e6:6b:9d:d8:f5:e7:6c +# SHA1 Fingerprint: 58:d1:df:95:95:67:6b:63:c0:f0:5b:1c:17:4d:8b:84:0b:c8:78:bd +# SHA256 Fingerprint: 5a:88:5d:b1:9c:01:d9:12:c5:75:93:88:93:8c:af:bb:df:03:1a:b2:d4:8e:91:ee:15:58:9b:42:97:1d:03:9c -----BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy -NTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y -LqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+ -TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y -TfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0 -LBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW -I8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw -nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI +MIIEIDCCAwigAwIBAgIJAISCLF8cYtBAMA0GCSqGSIb3DQEBCwUAMIGcMQswCQYD +VQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEk +MCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5U +cnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxFzAVBgNVBAMMDlRydXN0Q29y +IEVDQS0xMB4XDTE2MDIwNDEyMzIzM1oXDTI5MTIzMTE3MjgwN1owgZwxCzAJBgNV +BAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5MSQw +IgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRy +dXN0Q29yIENlcnRpZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOVHJ1c3RDb3Ig +RUNBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPj+ARtZ+odnbb +3w9U73NjKYKtR8aja+3+XzP4Q1HpGjORMRegdMTUpwHmspI+ap3tDvl0mEDTPwOA +BoJA6LHip1GnHYMma6ve+heRK9jGrB6xnhkB1Zem6g23xFUfJ3zSCNV2HykVh0A5 +3ThFEXXQmqc04L/NyFIduUd+Dbi7xgz2c1cWWn5DkR9VOsZtRASqnKmcp0yJF4Ou +owReUoCLHhIlERnXDH19MURB6tuvsBzvgdAsxZohmz3tQjtQJvLsznFhBmIhVE5/ +wZ0+fyCMgMsq2JdiyIMzkX2woloPV+g7zPIlstR8L+xNxqE6FXrntl019fZISjZF +ZtS6mFjBAgMBAAGjYzBhMB0GA1UdDgQWBBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAf +BgNVHSMEGDAWgBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAPBgNVHRMBAf8EBTADAQH/ +MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAQEABT41XBVwm8nHc2Fv +civUwo/yQ10CzsSUuZQRg2dd4mdsdXa/uwyqNsatR5Nj3B5+1t4u/ukZMjgDfxT2 +AHMsWbEhBuH7rBiVDKP/mZb3Kyeb1STMHd3BOuCYRLDE5D53sXOpZCz2HAF8P11F +hcCF5yWPldwX8zyfGm6wyuMdKulMY/okYWLW2n62HGz1Ah3UKt1VkOsqEUc8Ll50 +soIipX1TH0XsJ5F95yIW6MBoNtjG8U+ARDL54dHRHareqKucBK+tIA5kmE2la8BI +WJZpTdwHjFGTot+fDz2LYLSCjaoITmJF4PkL0uDgPFveXHEnJcLmA4GLEFPjx1Wi +tJ/X5g== -----END CERTIFICATE----- -# Issuer: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. -# Subject: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. -# Label: "Equifax Secure eBusiness CA 1" -# Serial: 4 -# MD5 Fingerprint: 64:9c:ef:2e:44:fc:c6:8f:52:07:d0:51:73:8f:cb:3d -# SHA1 Fingerprint: da:40:18:8b:91:89:a3:ed:ee:ae:da:97:fe:2f:9d:f5:b7:d1:8a:41 -# SHA256 Fingerprint: cf:56:ff:46:a4:a1:86:10:9d:d9:65:84:b5:ee:b5:8a:51:0c:42:75:b0:e5:f9:4f:40:bb:ae:86:5e:19:f6:73 +# Issuer: CN=SSL.com Root Certification Authority RSA O=SSL Corporation +# Subject: CN=SSL.com Root Certification Authority RSA O=SSL Corporation +# Label: "SSL.com Root Certification Authority RSA" +# Serial: 8875640296558310041 +# MD5 Fingerprint: 86:69:12:c0:70:f1:ec:ac:ac:c2:d5:bc:a5:5b:a1:29 +# SHA1 Fingerprint: b7:ab:33:08:d1:ea:44:77:ba:14:80:12:5a:6f:bd:a9:36:49:0c:bb +# SHA256 Fingerprint: 85:66:6a:56:2e:e0:be:5c:e9:25:c1:d8:89:0a:6f:76:a8:7e:c1:6d:4d:7d:5f:29:ea:74:19:cf:20:12:3b:69 -----BEGIN CERTIFICATE----- -MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT -ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw -MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j -LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ -KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo -RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu -WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw -Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD -AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK -eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM -zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+ -WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN -/Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ== +MIIF3TCCA8WgAwIBAgIIeyyb0xaAMpkwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UE +BhMCVVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQK +DA9TU0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTYwMjEyMTczOTM5WhcNNDEwMjEyMTcz +OTM5WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv +dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv +bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh4/WvpOz6Sl2R +xFdHaxh3a3by/ZPkPQ/CFp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVToZRdOQbngT0aX +qhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8P2FI7bADFB0QDksZ4LtO7IZl/zbzXmcC +C52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/geoeOy3ZExqysdBP+lSgQ3 +6YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9aqkpk8zruFvh +/l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrIM/4RJTXq/LrF +YD3ZfBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUWNmuF6R7As93E +JNyAKoFBbZQ+yODJgUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH4Ih86hzOtXVc +US4cK38acijnALXRdMbX5J+tB5O2UzU1/Dfkw/ZdFr4hc96SCvigY2q8lpJqPvi8 +ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi81xtZPCvM8hnIk2snYxnP/Okm ++Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4sbE6x/c+cCbqi +M+2HAgMBAAGjYzBhMB0GA1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAPBgNV +HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMA4G +A1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAIBgRlCn7Jp0cHh5wYfGV +cpNxJK1ok1iOMq8bs3AD/CUrdIWQPXhq9LmLpZc7tRiRux6n+UBbkflVma8eEdBc +Hadm47GUBwwyOabqG7B52B2ccETjit3E+ZUfijhDPwGFpUenPUayvOUiaPd7nNgs +PgohyC0zrL/FgZkxdMF1ccW+sfAjRfSda/wZY52jvATGGAslu1OJD7OAUN5F7kR/ +q5R4ZJjT9ijdh9hwZXT7DrkT66cPYakylszeu+1jTBi7qUD3oFRuIIhxdRjqerQ0 +cuAjJ3dctpDqhiVAq+8zD8ufgr6iIPv2tS0a5sKFsXQP+8hlAqRSAUfdSSLBv9jr +a6x+3uxjMxW3IwiPxg+NQVrdjsW5j+VFP3jbutIbQLH+cU0/4IGiul607BXgk90I +H37hVZkLId6Tngr75qNJvTYw/ud3sqB1l7UtgYgXZSD32pAAn8lSzDLKNXz1PQ/Y +K9f1JmzJBjSWFupwWRoyeXkLtoh/D1JIPb9s2KJELtFOt3JY04kTlf5Eq/jXixtu +nLwsoFvVagCvXzfh1foQC5ichucmj87w7G6KVwuA406ywKBjYZC6VWg3dGq2ktuf +oYYitmUnDuy2n0Jg5GfCtdpBC8TTi2EbvPofkSvXRAdeuims2cXp71NIWuuA8ShY +Ic2wBlX7Jz9TkHCpBB5XJ7k= -----END CERTIFICATE----- -# Issuer: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. -# Subject: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. -# Label: "Equifax Secure Global eBusiness CA" -# Serial: 1 -# MD5 Fingerprint: 8f:5d:77:06:27:c4:98:3c:5b:93:78:e7:d7:7d:9b:cc -# SHA1 Fingerprint: 7e:78:4a:10:1c:82:65:cc:2d:e1:f1:6d:47:b4:40:ca:d9:0a:19:45 -# SHA256 Fingerprint: 5f:0b:62:ea:b5:e3:53:ea:65:21:65:16:58:fb:b6:53:59:f4:43:28:0a:4a:fb:d1:04:d7:7d:10:f9:f0:4c:07 +# Issuer: CN=SSL.com Root Certification Authority ECC O=SSL Corporation +# Subject: CN=SSL.com Root Certification Authority ECC O=SSL Corporation +# Label: "SSL.com Root Certification Authority ECC" +# Serial: 8495723813297216424 +# MD5 Fingerprint: 2e:da:e4:39:7f:9c:8f:37:d1:70:9f:26:17:51:3a:8e +# SHA1 Fingerprint: c3:19:7c:39:24:e6:54:af:1b:c4:ab:20:95:7a:e2:c3:0e:13:02:6a +# SHA256 Fingerprint: 34:17:bb:06:cc:60:07:da:1b:96:1c:92:0b:8a:b4:ce:3f:ad:82:0e:4a:a3:0b:9a:cb:c4:a7:4e:bd:ce:bc:65 -----BEGIN CERTIFICATE----- -MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT -ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw -MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj -dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l -c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC -UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc -58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ -o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH -MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr -aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA -A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA -Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv -8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV +MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMC +VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T +U0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNDAzWhcNNDEwMjEyMTgxNDAz +WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0 +b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNvbSBS +b290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB +BAAiA2IABEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI +7Z4INcgn64mMU1jrYor+8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPg +CemB+vNH06NjMGEwHQYDVR0OBBYEFILRhXMw5zUE044CkvvlpNHEIejNMA8GA1Ud +EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTTjgKS++Wk0cQh6M0wDgYD +VR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCWe+0F+S8T +kdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+ +gA0z5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl -----END CERTIFICATE----- -# Issuer: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division -# Subject: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division -# Label: "Thawte Premium Server CA" -# Serial: 1 -# MD5 Fingerprint: 06:9f:69:79:16:66:90:02:1b:8c:8c:a2:c3:07:6f:3a -# SHA1 Fingerprint: 62:7f:8d:78:27:65:63:99:d2:7d:7f:90:44:c9:fe:b3:f3:3e:fa:9a -# SHA256 Fingerprint: ab:70:36:36:5c:71:54:aa:29:c2:c2:9f:5d:41:91:16:3b:16:2a:22:25:01:13:57:d5:6d:07:ff:a7:bc:1f:72 +# Issuer: CN=SSL.com EV Root Certification Authority RSA R2 O=SSL Corporation +# Subject: CN=SSL.com EV Root Certification Authority RSA R2 O=SSL Corporation +# Label: "SSL.com EV Root Certification Authority RSA R2" +# Serial: 6248227494352943350 +# MD5 Fingerprint: e1:1e:31:58:1a:ae:54:53:02:f6:17:6a:11:7b:4d:95 +# SHA1 Fingerprint: 74:3a:f0:52:9b:d0:32:a0:f4:4a:83:cd:d4:ba:a9:7b:7c:2e:c4:9a +# SHA256 Fingerprint: 2e:7b:f1:6c:c2:24:85:a7:bb:e2:aa:86:96:75:07:61:b0:ae:39:be:3b:2f:e9:d0:cc:6d:4e:f7:34:91:42:5c -----BEGIN CERTIFICATE----- -MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy -dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t -MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB -MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG -A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp -b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl -cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv -bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE -VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ -ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR -uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG -9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI -hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM -pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg== +MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNV +BAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UE +CgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMB4XDTE3MDUzMTE4MTQzN1oXDTQy +MDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4G +A1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQD +DC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvq +M0fNTPl9fb69LT3w23jhhqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssuf +OePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7wcXHswxzpY6IXFJ3vG2fThVUCAtZJycxa +4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTOZw+oz12WGQvE43LrrdF9 +HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+B6KjBSYR +aZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcA +b9ZhCBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQ +Gp8hLH94t2S42Oim9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQV +PWKchjgGAGYS5Fl2WlPAApiiECtoRHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMO +pgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+SlmJuwgUHfbSguPvuUCYHBBXtSu +UDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48+qvWBkofZ6aY +MBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV +HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa4 +9QaAJadz20ZpqJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBW +s47LCp1Jjr+kxJG7ZhcFUZh1++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5 +Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nxY/hoLVUE0fKNsKTPvDxeH3jnpaAg +cLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2GguDKBAdRUNf/ktUM +79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDzOFSz +/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXt +ll9ldDz7CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEm +Kf7GUmG6sXP/wwyc5WxqlD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKK +QbNmC1r7fSOl8hqw/96bg5Qu0T/fkreRrwU7ZcegbLHNYhLDkBvjJc40vG93drEQ +w/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1hlMYegouCRw2n5H9gooi +S9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX9hwJ1C07 +mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w== -----END CERTIFICATE----- -# Issuer: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division -# Subject: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division -# Label: "Thawte Server CA" -# Serial: 1 -# MD5 Fingerprint: c5:70:c4:a2:ed:53:78:0c:c8:10:53:81:64:cb:d0:1d -# SHA1 Fingerprint: 23:e5:94:94:51:95:f2:41:48:03:b4:d5:64:d2:a3:a3:f5:d8:8b:8c -# SHA256 Fingerprint: b4:41:0b:73:e2:e6:ea:ca:47:fb:c4:2f:8f:a4:01:8a:f4:38:1d:c5:4c:fa:a8:44:50:46:1e:ed:09:45:4d:e9 +# Issuer: CN=SSL.com EV Root Certification Authority ECC O=SSL Corporation +# Subject: CN=SSL.com EV Root Certification Authority ECC O=SSL Corporation +# Label: "SSL.com EV Root Certification Authority ECC" +# Serial: 3182246526754555285 +# MD5 Fingerprint: 59:53:22:65:83:42:01:54:c0:ce:42:b9:5a:7c:f2:90 +# SHA1 Fingerprint: 4c:dd:51:a3:d1:f5:20:32:14:b0:c6:c5:32:23:03:91:c7:46:42:6d +# SHA256 Fingerprint: 22:a2:c1:f7:bd:ed:70:4c:c1:e7:01:b5:f4:08:c3:10:88:0f:e9:56:b5:de:2a:4a:44:f9:9c:87:3a:25:a7:c8 -----BEGIN CERTIFICATE----- -MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm -MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx -MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT -DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3 -dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl -cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3 -DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD -gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91 -yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX -L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj -EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG -7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e -QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ -qdq5snUb9kLy78fyGPmJvKP/iiMucEc= ------END CERTIFICATE----- - -# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority -# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority -# Label: "Verisign Class 3 Public Primary Certification Authority" -# Serial: 149843929435818692848040365716851702463 -# MD5 Fingerprint: 10:fc:63:5d:f6:26:3e:0d:f3:25:be:5f:79:cd:67:67 -# SHA1 Fingerprint: 74:2c:31:92:e6:07:e4:24:eb:45:49:54:2b:e1:bb:c5:3e:61:74:e2 -# SHA256 Fingerprint: e7:68:56:34:ef:ac:f6:9a:ce:93:9a:6b:25:5b:7b:4f:ab:ef:42:93:5b:50:a2:65:ac:b5:cb:60:27:e4:4e:70 ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE -BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is -I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G -CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do -lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc -AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k ------END CERTIFICATE----- - -# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority -# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority -# Label: "Verisign Class 3 Public Primary Certification Authority" -# Serial: 80507572722862485515306429940691309246 -# MD5 Fingerprint: ef:5a:f1:33:ef:f1:cd:bb:51:02:ee:12:14:4b:96:c4 -# SHA1 Fingerprint: a1:db:63:93:91:6f:17:e4:18:55:09:40:04:15:c7:02:40:b0:ae:6b -# SHA256 Fingerprint: a4:b6:b3:99:6f:c2:f3:06:b3:fd:86:81:bd:63:41:3d:8c:50:09:cc:4f:a3:29:c2:cc:f0:e2:fa:1b:14:03:05 ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE -BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is -I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G -CSqGSIb3DQEBBQUAA4GBABByUqkFFBkyCEHwxWsKzH4PIRnN5GfcX6kb5sroc50i -2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWXbj9T/UWZYB2oK0z5XqcJ -2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/D/xwzoiQ ------END CERTIFICATE----- - -# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network -# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network -# Label: "Verisign Class 3 Public Primary Certification Authority - G2" -# Serial: 167285380242319648451154478808036881606 -# MD5 Fingerprint: a2:33:9b:4c:74:78:73:d4:6c:e7:c1:f3:8d:cb:5c:e9 -# SHA1 Fingerprint: 85:37:1c:a6:e5:50:14:3d:ce:28:03:47:1b:de:3a:09:e8:f8:77:0f -# SHA256 Fingerprint: 83:ce:3c:12:29:68:8a:59:3d:48:5f:81:97:3c:0f:91:95:43:1e:da:37:cc:5e:36:43:0e:79:c7:a8:88:63:8b ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh -c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy -MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp -emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X -DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw -FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg -UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo -YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 -MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 -pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 -13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID -AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk -U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i -F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY -oJ2daZH9 ------END CERTIFICATE----- - -# Issuer: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. -# Subject: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. -# Label: "GTE CyberTrust Global Root" -# Serial: 421 -# MD5 Fingerprint: ca:3d:d3:68:f1:03:5c:d0:32:fa:b8:2b:59:e8:5a:db -# SHA1 Fingerprint: 97:81:79:50:d8:1c:96:70:cc:34:d8:09:cf:79:44:31:36:7e:f4:74 -# SHA256 Fingerprint: a5:31:25:18:8d:21:10:aa:96:4b:02:c7:b7:c6:da:32:03:17:08:94:e5:fb:71:ff:fb:66:67:d5:e6:81:0a:36 ------BEGIN CERTIFICATE----- -MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD -VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv -bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv -b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV -UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU -cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds -b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH -iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS -r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4 -04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r -GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9 -3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P -lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ +MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMC +VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T +U0wgQ29ycG9yYXRpb24xNDAyBgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNTIzWhcNNDEwMjEyMTgx +NTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv +dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NMLmNv +bSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49 +AgEGBSuBBAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMA +VIbc/R/fALhBYlzccBYy3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1Kthku +WnBaBu2+8KGwytAJKaNjMGEwHQYDVR0OBBYEFFvKXuXe0oGqzagtZFG22XKbl+ZP +MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe5d7SgarNqC1kUbbZcpuX +5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJN+vp1RPZ +ytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZg +h5Mmm7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg== -----END CERTIFICATE----- diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/certs.py b/lib/python3.6/site-packages/pip/_vendor/requests/certs.py index f922b99..06a594e 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/certs.py +++ b/lib/python3.6/site-packages/pip/_vendor/requests/certs.py @@ -5,21 +5,14 @@ requests.certs ~~~~~~~~~~~~~~ -This module returns the preferred default CA certificate bundle. +This module returns the preferred default CA certificate bundle. There is +only one — the one from the certifi package. If you are packaging Requests, e.g., for a Linux distribution or a managed environment, you can change the definition of where() to return a separately packaged CA bundle. """ -import os.path - -try: - from certifi import where -except ImportError: - def where(): - """Return the preferred certificate bundle.""" - # vendored bundle inside Requests - return os.path.join(os.path.dirname(__file__), 'cacert.pem') +from pip._vendor.certifi import where if __name__ == '__main__': print(where()) diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/compat.py b/lib/python3.6/site-packages/pip/_vendor/requests/compat.py index 353ec29..9c7d6d8 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/compat.py +++ b/lib/python3.6/site-packages/pip/_vendor/requests/compat.py @@ -8,7 +8,7 @@ This module handles import compatibility issues between Python 2 and Python 3. """ -from .packages import chardet +from pip._vendor import chardet import sys @@ -25,13 +25,9 @@ is_py2 = (_ver[0] == 2) #: Python 3.x? is_py3 = (_ver[0] == 3) -# Note: We've patched out simplejson support in pip because it prevents -# upgrading simplejson on Windows. # try: # import simplejson as json -# except (ImportError, SyntaxError): -# # simplejson does not support Python 3.2, it throws a SyntaxError -# # because of u'...' Unicode literals. +# except ImportError: import json # --------- @@ -39,23 +35,27 @@ import json # --------- if is_py2: - from urllib import quote, unquote, quote_plus, unquote_plus, urlencode, getproxies, proxy_bypass + from urllib import ( + quote, unquote, quote_plus, unquote_plus, urlencode, getproxies, + proxy_bypass, proxy_bypass_environment, getproxies_environment) from urlparse import urlparse, urlunparse, urljoin, urlsplit, urldefrag from urllib2 import parse_http_list import cookielib from Cookie import Morsel from StringIO import StringIO - from .packages.urllib3.packages.ordered_dict import OrderedDict + + from pip._vendor.urllib3.packages.ordered_dict import OrderedDict builtin_str = str bytes = str str = unicode basestring = basestring numeric_types = (int, long, float) + integer_types = (int, long) elif is_py3: from urllib.parse import urlparse, urlunparse, urljoin, urlsplit, urlencode, quote, unquote, quote_plus, unquote_plus, urldefrag - from urllib.request import parse_http_list, getproxies, proxy_bypass + from urllib.request import parse_http_list, getproxies, proxy_bypass, proxy_bypass_environment, getproxies_environment from http import cookiejar as cookielib from http.cookies import Morsel from io import StringIO @@ -66,3 +66,4 @@ elif is_py3: bytes = bytes basestring = (str, bytes) numeric_types = (int, float) + integer_types = (int,) diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/cookies.py b/lib/python3.6/site-packages/pip/_vendor/requests/cookies.py index 41a2fde..ab3c88b 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/cookies.py +++ b/lib/python3.6/site-packages/pip/_vendor/requests/cookies.py @@ -13,12 +13,12 @@ import copy import time import calendar import collections + +from ._internal_utils import to_native_string from .compat import cookielib, urlparse, urlunparse, Morsel try: import threading - # grr, pyflakes: this fixes "redefinition of unused 'threading'" - threading except ImportError: import dummy_threading as threading @@ -55,7 +55,7 @@ class MockRequest(object): if not self._r.headers.get('Host'): return self._r.url # If they did set it, retrieve it and reconstruct the expected domain - host = self._r.headers['Host'] + host = to_native_string(self._r.headers['Host'], encoding='utf-8') parsed = urlparse(self._r.url) # Reconstruct the URL as we expect it return urlunparse([ @@ -306,8 +306,10 @@ class RequestsCookieJar(cookielib.CookieJar, collections.MutableMapping): """ dictionary = {} for cookie in iter(self): - if (domain is None or cookie.domain == domain) and (path is None - or cookie.path == path): + if ( + (domain is None or cookie.domain == domain) and + (path is None or cookie.path == path) + ): dictionary[cookie.name] = cookie.value return dictionary diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/exceptions.py b/lib/python3.6/site-packages/pip/_vendor/requests/exceptions.py index b89e0cc..3e5d0b2 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/exceptions.py +++ b/lib/python3.6/site-packages/pip/_vendor/requests/exceptions.py @@ -6,7 +6,7 @@ requests.exceptions This module contains the set of Requests' exceptions. """ -from .packages.urllib3.exceptions import HTTPError as BaseHTTPError +from pip._vendor.urllib3.exceptions import HTTPError as BaseHTTPError class RequestException(IOError): @@ -101,6 +101,9 @@ class RetryError(RequestException): """Custom retries logic failed""" +class UnrewindableBodyError(RequestException): + """Requests encountered an error when trying to rewind a body""" + # Warnings @@ -112,3 +115,8 @@ class RequestsWarning(Warning): class FileModeWarning(RequestsWarning, DeprecationWarning): """A file was opened in text mode, but Requests determined its binary length.""" pass + + +class RequestsDependencyWarning(RequestsWarning): + """An imported dependency doesn't match the expected version range.""" + pass diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/help.py b/lib/python3.6/site-packages/pip/_vendor/requests/help.py new file mode 100644 index 0000000..7c4b193 --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/requests/help.py @@ -0,0 +1,120 @@ +"""Module containing bug report helper(s).""" +from __future__ import print_function + +import json +import platform +import sys +import ssl + +from pip._vendor import idna +from pip._vendor import urllib3 +from pip._vendor import chardet + +from . import __version__ as requests_version + +try: + from .packages.urllib3.contrib import pyopenssl +except ImportError: + pyopenssl = None + OpenSSL = None + cryptography = None +else: + import OpenSSL + import cryptography + + +def _implementation(): + """Return a dict with the Python implementation and version. + + Provide both the name and the version of the Python implementation + currently running. For example, on CPython 2.7.5 it will return + {'name': 'CPython', 'version': '2.7.5'}. + + This function works best on CPython and PyPy: in particular, it probably + doesn't work for Jython or IronPython. Future investigation should be done + to work out the correct shape of the code for those platforms. + """ + implementation = platform.python_implementation() + + if implementation == 'CPython': + implementation_version = platform.python_version() + elif implementation == 'PyPy': + implementation_version = '%s.%s.%s' % (sys.pypy_version_info.major, + sys.pypy_version_info.minor, + sys.pypy_version_info.micro) + if sys.pypy_version_info.releaselevel != 'final': + implementation_version = ''.join([ + implementation_version, sys.pypy_version_info.releaselevel + ]) + elif implementation == 'Jython': + implementation_version = platform.python_version() # Complete Guess + elif implementation == 'IronPython': + implementation_version = platform.python_version() # Complete Guess + else: + implementation_version = 'Unknown' + + return {'name': implementation, 'version': implementation_version} + + +def info(): + """Generate information for a bug report.""" + try: + platform_info = { + 'system': platform.system(), + 'release': platform.release(), + } + except IOError: + platform_info = { + 'system': 'Unknown', + 'release': 'Unknown', + } + + implementation_info = _implementation() + urllib3_info = {'version': urllib3.__version__} + chardet_info = {'version': chardet.__version__} + + pyopenssl_info = { + 'version': None, + 'openssl_version': '', + } + if OpenSSL: + pyopenssl_info = { + 'version': OpenSSL.__version__, + 'openssl_version': '%x' % OpenSSL.SSL.OPENSSL_VERSION_NUMBER, + } + cryptography_info = { + 'version': getattr(cryptography, '__version__', ''), + } + idna_info = { + 'version': getattr(idna, '__version__', ''), + } + + # OPENSSL_VERSION_NUMBER doesn't exist in the Python 2.6 ssl module. + system_ssl = getattr(ssl, 'OPENSSL_VERSION_NUMBER', None) + system_ssl_info = { + 'version': '%x' % system_ssl if system_ssl is not None else '' + } + + return { + 'platform': platform_info, + 'implementation': implementation_info, + 'system_ssl': system_ssl_info, + 'using_pyopenssl': pyopenssl is not None, + 'pyOpenSSL': pyopenssl_info, + 'urllib3': urllib3_info, + 'chardet': chardet_info, + 'cryptography': cryptography_info, + 'idna': idna_info, + 'requests': { + 'version': requests_version, + }, + } + + +def main(): + """Pretty-print the bug information as JSON.""" + print(json.dumps(info(), sort_keys=True, indent=2)) + + +if __name__ == '__main__': + main() diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/models.py b/lib/python3.6/site-packages/pip/_vendor/requests/models.py index 11434ef..4254fbd 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/models.py +++ b/lib/python3.6/site-packages/pip/_vendor/requests/models.py @@ -9,28 +9,35 @@ This module contains the primary objects that power Requests. import collections import datetime +import sys -from io import BytesIO, UnsupportedOperation +# Import encoding now, to avoid implicit import later. +# Implicit import within threads may cause LookupError when standard library is in a ZIP, +# such as in Embedded Python. See https://github.com/requests/requests/issues/3578. +import encodings.idna + +from pip._vendor.urllib3.fields import RequestField +from pip._vendor.urllib3.filepost import encode_multipart_formdata +from pip._vendor.urllib3.util import parse_url +from pip._vendor.urllib3.exceptions import ( + DecodeError, ReadTimeoutError, ProtocolError, LocationParseError) + +from io import UnsupportedOperation from .hooks import default_hooks from .structures import CaseInsensitiveDict from .auth import HTTPBasicAuth from .cookies import cookiejar_from_dict, get_cookie_header, _copy_cookie_jar -from .packages.urllib3.fields import RequestField -from .packages.urllib3.filepost import encode_multipart_formdata -from .packages.urllib3.util import parse_url -from .packages.urllib3.exceptions import ( - DecodeError, ReadTimeoutError, ProtocolError, LocationParseError) from .exceptions import ( HTTPError, MissingSchema, InvalidURL, ChunkedEncodingError, ContentDecodingError, ConnectionError, StreamConsumedError) +from ._internal_utils import to_native_string, unicode_is_ascii from .utils import ( guess_filename, get_auth_from_url, requote_uri, stream_decode_response_unicode, to_key_val_list, parse_header_links, - iter_slices, guess_json_utf, super_len, to_native_string, - check_header_validity) + iter_slices, guess_json_utf, super_len, check_header_validity) from .compat import ( - cookielib, urlunparse, urlsplit, urlencode, str, bytes, StringIO, + cookielib, urlunparse, urlsplit, urlencode, str, bytes, is_py2, chardet, builtin_str, basestring) from .compat import json as complexjson from .status_codes import codes @@ -208,8 +215,9 @@ class Request(RequestHooksMixin): """ - def __init__(self, method=None, url=None, headers=None, files=None, - data=None, params=None, auth=None, cookies=None, hooks=None, json=None): + def __init__(self, + method=None, url=None, headers=None, files=None, data=None, + params=None, auth=None, cookies=None, hooks=None, json=None): # Default empty dicts for dict params. data = [] if data is None else data @@ -285,9 +293,12 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): self.body = None #: dictionary of callback hooks, for internal usage. self.hooks = default_hooks() + #: integer denoting starting position of a readable file-like body. + self._body_position = None - def prepare(self, method=None, url=None, headers=None, files=None, - data=None, params=None, auth=None, cookies=None, hooks=None, json=None): + def prepare(self, + method=None, url=None, headers=None, files=None, data=None, + params=None, auth=None, cookies=None, hooks=None, json=None): """Prepares the entire request with the given parameters.""" self.prepare_method(method) @@ -314,6 +325,7 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): p._cookies = _copy_cookie_jar(self._cookies) p.body = self.body p.hooks = self.hooks + p._body_position = self._body_position return p def prepare_method(self, method): @@ -322,18 +334,31 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): if self.method is not None: self.method = to_native_string(self.method.upper()) + @staticmethod + def _get_idna_encoded_host(host): + import idna + + try: + host = idna.encode(host, uts46=True).decode('utf-8') + except idna.IDNAError: + raise UnicodeError + return host + def prepare_url(self, url, params): """Prepares the given HTTP URL.""" #: Accept objects that have string representations. #: We're unable to blindly call unicode/str functions #: as this will include the bytestring indicator (b'') #: on python 3.x. - #: https://github.com/kennethreitz/requests/pull/2238 + #: https://github.com/requests/requests/pull/2238 if isinstance(url, bytes): url = url.decode('utf8') else: url = unicode(url) if is_py2 else str(url) + # Remove leading whitespaces from url + url = url.lstrip() + # Don't do any URL preparation for non-HTTP schemes like `mailto`, # `data` etc to work around exceptions from `url_parse`, which # handles RFC 3986 only. @@ -356,10 +381,16 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): if not host: raise InvalidURL("Invalid URL %r: No host supplied" % url) - # Only want to apply IDNA to the hostname - try: - host = host.encode('idna').decode('utf-8') - except UnicodeError: + # In general, we want to try IDNA encoding the hostname if the string contains + # non-ASCII characters. This allows users to automatically get the correct IDNA + # behaviour. For strings containing only ASCII characters, we need to also verify + # it doesn't start with a wildcard (*), before allowing the unencoded hostname. + if not unicode_is_ascii(host): + try: + host = self._get_idna_encoded_host(host) + except UnicodeError: + raise InvalidURL('URL has an invalid label.') + elif host.startswith(u'*'): raise InvalidURL('URL has an invalid label.') # Carefully reconstruct the network location @@ -419,7 +450,6 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): # Nottin' on you. body = None content_type = None - length = None if not data and json is not None: # urllib3 requires a bytes-like body. Python 2's json.dumps @@ -431,7 +461,7 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): is_stream = all([ hasattr(data, '__iter__'), - not isinstance(data, (basestring, list, tuple, dict)) + not isinstance(data, (basestring, list, tuple, collections.Mapping)) ]) try: @@ -442,6 +472,17 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): if is_stream: body = data + if getattr(body, 'tell', None) is not None: + # Record the current file position before reading. + # This will allow us to rewind a file in the event + # of a redirect. + try: + self._body_position = body.tell() + except (IOError, OSError): + # This differentiates from None, allowing us to catch + # a failed `tell()` later when trying to rewind the body + self._body_position = object() + if files: raise NotImplementedError('Streamed bodies and files are mutually exclusive.') @@ -470,17 +511,16 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): self.body = body def prepare_content_length(self, body): - if hasattr(body, 'seek') and hasattr(body, 'tell'): - curr_pos = body.tell() - body.seek(0, 2) - end_pos = body.tell() - self.headers['Content-Length'] = builtin_str(max(0, end_pos - curr_pos)) - body.seek(curr_pos, 0) - elif body is not None: - l = super_len(body) - if l: - self.headers['Content-Length'] = builtin_str(l) - elif (self.method not in ('GET', 'HEAD')) and (self.headers.get('Content-Length') is None): + """Prepare Content-Length header based on request method and body""" + if body is not None: + length = super_len(body) + if length: + # If length exists, set it. Otherwise, we fallback + # to Transfer-Encoding: chunked. + self.headers['Content-Length'] = builtin_str(length) + elif self.method not in ('GET', 'HEAD') and self.headers.get('Content-Length') is None: + # Set Content-Length to 0 for methods that can have a body + # but don't provide one. (i.e. not GET or HEAD) self.headers['Content-Length'] = '0' def prepare_auth(self, auth, url=''): @@ -546,10 +586,9 @@ class Response(object): ] def __init__(self): - super(Response, self).__init__() - self._content = False self._content_consumed = False + self._next = None #: Integer Code of responded HTTP Status, e.g. 404 or 200. self.status_code = None @@ -593,6 +632,12 @@ class Response(object): #: is a response. self.request = None + def __enter__(self): + return self + + def __exit__(self, *args): + self.close() + def __getstate__(self): # Consume everything; accessing the content attribute makes # sure the content has been fully read. @@ -616,11 +661,23 @@ class Response(object): return '' % (self.status_code) def __bool__(self): - """Returns true if :attr:`status_code` is 'OK'.""" + """Returns True if :attr:`status_code` is less than 400. + + This attribute checks if the status code of the response is between + 400 and 600 to see if there was a client error or a server error. If + the status code, is between 200 and 400, this will return True. This + is **not** a check to see if the response code is ``200 OK``. + """ return self.ok def __nonzero__(self): - """Returns true if :attr:`status_code` is 'OK'.""" + """Returns True if :attr:`status_code` is less than 400. + + This attribute checks if the status code of the response is between + 400 and 600 to see if there was a client error or a server error. If + the status code, is between 200 and 400, this will return True. This + is **not** a check to see if the response code is ``200 OK``. + """ return self.ok def __iter__(self): @@ -629,6 +686,13 @@ class Response(object): @property def ok(self): + """Returns True if :attr:`status_code` is less than 400. + + This attribute checks if the status code of the response is between + 400 and 600 to see if there was a client error or a server error. If + the status code, is between 200 and 400, this will return True. This + is **not** a check to see if the response code is ``200 OK``. + """ try: self.raise_for_status() except HTTPError: @@ -644,12 +708,17 @@ class Response(object): @property def is_permanent_redirect(self): - """True if this Response one of the permanent versions of redirect""" + """True if this Response one of the permanent versions of redirect.""" return ('location' in self.headers and self.status_code in (codes.moved_permanently, codes.permanent_redirect)) + @property + def next(self): + """Returns a PreparedRequest for the next request in a redirect chain, if there is one.""" + return self._next + @property def apparent_encoding(self): - """The apparent encoding, provided by the chardet library""" + """The apparent encoding, provided by the chardet library.""" return chardet.detect(self.content)['encoding'] def iter_content(self, chunk_size=1, decode_unicode=False): @@ -744,18 +813,14 @@ class Response(object): if self._content is False: # Read the contents. - try: - if self._content_consumed: - raise RuntimeError( - 'The content for this response was already consumed') + if self._content_consumed: + raise RuntimeError( + 'The content for this response was already consumed') - if self.status_code == 0: - self._content = None - else: - self._content = bytes().join(self.iter_content(CONTENT_CHUNK_SIZE)) or bytes() - - except AttributeError: + if self.status_code == 0 or self.raw is None: self._content = None + else: + self._content = bytes().join(self.iter_content(CONTENT_CHUNK_SIZE)) or bytes() self._content_consumed = True # don't need to release the connection; that's been handled by urllib3 @@ -801,9 +866,10 @@ class Response(object): return content def json(self, **kwargs): - """Returns the json-encoded content of a response, if any. + r"""Returns the json-encoded content of a response, if any. :param \*\*kwargs: Optional arguments that ``json.loads`` takes. + :raises ValueError: If the response body does not contain valid json. """ if not self.encoding and self.content and len(self.content) > 3: @@ -848,7 +914,14 @@ class Response(object): http_error_msg = '' if isinstance(self.reason, bytes): - reason = self.reason.decode('utf-8', 'ignore') + # We attempt to decode utf-8 first because some servers + # choose to localize their reason strings. If the string + # isn't utf-8, we fall back to iso-8859-1 for all other + # encodings. (See PR #3538) + try: + reason = self.reason.decode('utf-8') + except UnicodeDecodeError: + reason = self.reason.decode('iso-8859-1') else: reason = self.reason @@ -870,4 +943,6 @@ class Response(object): if not self._content_consumed: self.raw.close() - return self.raw.release_conn() + release_conn = getattr(self.raw, 'release_conn', None) + if release_conn is not None: + release_conn() diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages.py b/lib/python3.6/site-packages/pip/_vendor/requests/packages.py new file mode 100644 index 0000000..9582fa7 --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/requests/packages.py @@ -0,0 +1,16 @@ +import sys + +# This code exists for backwards compatibility reasons. +# I don't like it either. Just look the other way. :) + +for package in ('urllib3', 'idna', 'chardet'): + vendored_package = "pip._vendor." + package + locals()[package] = __import__(vendored_package) + # This traversal is apparently necessary such that the identities are + # preserved (requests.packages.urllib3.* is urllib3.*) + for mod in list(sys.modules): + if mod == vendored_package or mod.startswith(vendored_package + '.'): + unprefixed_mod = mod[len("pip._vendor."):] + sys.modules['pip._vendor.requests.packages.' + unprefixed_mod] = sys.modules[mod] + +# Kinda cool, though, right? diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/__init__.py b/lib/python3.6/site-packages/pip/_vendor/requests/packages/__init__.py deleted file mode 100644 index 971c2ad..0000000 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/__init__.py +++ /dev/null @@ -1,36 +0,0 @@ -''' -Debian and other distributions "unbundle" requests' vendored dependencies, and -rewrite all imports to use the global versions of ``urllib3`` and ``chardet``. -The problem with this is that not only requests itself imports those -dependencies, but third-party code outside of the distros' control too. - -In reaction to these problems, the distro maintainers replaced -``requests.packages`` with a magical "stub module" that imports the correct -modules. The implementations were varying in quality and all had severe -problems. For example, a symlink (or hardlink) that links the correct modules -into place introduces problems regarding object identity, since you now have -two modules in `sys.modules` with the same API, but different identities:: - - requests.packages.urllib3 is not urllib3 - -With version ``2.5.2``, requests started to maintain its own stub, so that -distro-specific breakage would be reduced to a minimum, even though the whole -issue is not requests' fault in the first place. See -https://github.com/kennethreitz/requests/pull/2375 for the corresponding pull -request. -''' - -from __future__ import absolute_import -import sys - -try: - from . import urllib3 -except ImportError: - import urllib3 - sys.modules['%s.urllib3' % __name__] = urllib3 - -try: - from . import chardet -except ImportError: - import chardet - sys.modules['%s.chardet' % __name__] = chardet diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 61d76e11e56e63f303798363f54e0e64571fa106..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1554 zcmZWp-EQMV6tkLU8_g#9`FYgtc{q(W9S}u69bb$IIh)YJYoBOLKVK)y^K)it(%D?3iC2B?pFO|f}#jkDOp|?Mb|}9R5iB(eNklWC#q?!DHS%bk-jDn>45%y z%{^%2!DzKTva_hHH8G&GecQSsjx;8rv3^A>Y_SPt( zU^2$8HSNT!s7xe9goxJA9`TO^`$}lI)SfQlNhPh~6$(}qdkM3aSGRnPjyQL;I904= zMbex)A4+J92vPHn=0QiouZ*==dDbs*8AOF>0SSb(V{h69Ey6vwTdCI|HQWWRBvFkf zM`LO(z#*A{Y~Otb-x&+|E00iQCAe*)q`rmE>2dTU{y6LViNol?p_`#y$B49njxB9V z!ii9!J19g-tO+SLWy%|30VKKh)Y%-I)D^%*3b|SlEq#EdU|wA@2K4!#_}LJ=n5P(};U{CSW739Fn4kodNT5-r4vSJCwQNE& z2XcopR-3SnnWyEoQOKlof$Z+v-Sc@0D;^Xvjs*xSX`Sy)$lw(stG#dC)nc(GR-w!) z(=2XLYxK26>EA5&IEywYwYa!^{tQ-R`oUk<8r_)|=jjFSPJxWQrGqUwOLvcX>5K{< z^FF8FzfJpz>7eHu_L)kyb#%F9d&2wR@Jm0ZAUj-j5=D8ga(r!$~?-EOg zRkC~Ux;s-|T5IfXI;3GY%X3XJpaMFElRpxBLSNnOpO*{Yw2M}@=Vg#eoPT-g?{1#E z%lN3f^8PS;pu+HKF7lkr@OhrK+uiI%zt>kE6SDi1Zbzf{)7fa0K1n}FXX!_W(Z7D> B{}KQI diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 82720bc56011d78b02aff4319a8499b565dc8c71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 647 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

j0T_ru z7>pqpieVUz5g3V47>zL)i*Xo_37CjUn2afyifNdR8JLOD(F2*KW@8TKVjkvW0TyBr z7GnvPVi}fW1y*7eR$~p;VjbFe>Kzk3ko6`vU?VnRGqzwWwqZMVU?+BAH-16wJj5eB#uGfnGyH>p@fL;0S?`2!+rHgRlsP@Q8qjh=j<9f_csYQB^cVM-0S7 zEW}0}#6>*BM*<|oxaff-Qi+iSNs$c6kpd}^3aOC>X^{@;kpUTz37L@vS&fQqPu%BX^>sD|pOftsj= z+NguNsE7J!fQD#<#%O}3Xolu!ftF~6)@XyaXovRbfR5;d&gg=!2tYS3~(fsq)6(HMiV7>DtgfQgud$(Vu(cIZ?!4bw3L zGcgOZF$Z%o5A(4A3;$nMW|3NqC0L4OSdJA~iB(vQHCT&vSdR_Zh)vjxE!c`}*p408 ziCx%@J=lwV*pCDF0|)UZ4&gBV!rwT8qd11+IDwNmh0{2Lvp9$IxPXhegv+>stGI^i zxPhCvh1 z2Y%ug{=;ts$r(sc1VeCyKuCl_XoNvnghO~lKtx1BWJEz!L_>7MKup9!Y{Wra#6x@} zKtd!!VkALQBtvqfKuV-SYNSD0q(gdSKt^OjW@JHDWJ7l3Ku+XBZsb8;8KuMHBX_P@(l*2?1)AFhUDxwl9qYA2`8meQGIclhysD;|7gSx1P`e=ZL zXoSXSf~IJO=4gSIXoc2jgSKdg_UM3)=!DMbg02WaH*`l2^h7W8Mj!M=KlH}{48$M| z#t;m}Fbu~CjKnC6#u$vnIE=>xOvEHi#uQA&G)%_~%)~6r#vIJWJj}-eEW{!##u6;W zGAzdmti&p;#u}`}I;_VAY{VvP#ujYFHf+ZZ?8GkY#vbg&KJ3Q<{DFh`6NhjZf8lQ& z!BHH;ah$+OoWg0G!C9Q}o5APQd0fCnT*75s!Bt$tb=<&B+`?_#!Cl@+p*HHEF6yB^8lWK>p)s1EDVm`gwYAOYbJ_#?z10fA?RAOV4I z9)kn~z8eb?5cnQ8NI>AL+#msguNZ>_L_^>cRgi!fh>2K;jW~#lc!-Y#NQgv8j3fyB zZ)8CN0{^2`B5k0(e#;I~Eu2?+c{ z=pX@sf6NyoAn;F9f&^qlCS*nyWJTbIY(WCDBk;9PkbuBPd=UFBNI-7nL0;rTeiT4K z6hdJXK~WS#ag;zwltO8gL0ObTc~n3}R6=D`K~+>kb<{vj)Ix34L0!~CeKbHrG(uxE zK~pqCbF@H9v_fmNL0hy#dvriYbV6rzL01Hz8@i(hdZHJ4qYwI`ANpee24WBfV+e*~ z7=~j6Mq(63V+_V(9L8e;CSnpMV+y8X8m40gW?~j*V-DtG9_C{K7Ge<=V+odG8J1%O zR$>)aV-40~9oAz5HewStV+*!o8@6Kyc48NHV-NOXANJz_{=h-}i9brDUcGWkQ!-_7U_^48ITc~ zkQrH!71@v-Igk^%kQ;fB7x|DM1yB%$P#8r}6va>+B~TKjP#R@W7UfVL6;KhCP#INF z71dB3HBb|^P#bkn7xhpd4bTvc&=^h76wS~aEzlCJ&>C&f7VXd;9ncY-&>3CO6#?jm z?&yJ@=!M?sgTCm8{uqFP7=*zXf}t3O;TVCD7=_UogRvNg@tA;#n1sogf~lB>>6n3; zn1$JxgSnW8`B;F3ScJt`f~8o7a1eju5Dw!n{EZ_xieosA6F7-eIE^zni*q=S3%H0&xQr{fifg!z8@P#E zxQ#owi+i|_2Y84_c#J1_if8x-|Kd4b;3Zz+HQwMY-r+qy;3GcaGrr&}zTrE5;3t0J zKm10JV1WchFa$>kghVKWMi_)eID|(8L_{P+MifLvG(<-X#6&E_MjXUNJj6!=Bt#-4 zMiL}NG9*U|q(myDMjE6=I;2MiWJD%pMiyj6He^Q*=HB?6p)I=@RMjg~eJ=8}7G(;mbMiVqeGc-pF zv_vbkMjNz6JG4g!bVMg~Mi+F2Hw*#Y&>cO{6TQ$Ieb5*E&>sUZ5Q8unLogJ>FdQQ= z5~DC0V=xxuFdh>y5tA?(Q!o|NFdZ{66SFWIb1)b4FdqxB5R0%FORyBnupBF}605Kp zYp@pUupS$*5u30XTd)<|upK+F6T7e*d$1S#upbBT2M*#-9KvDzg}-qGM{x|taRMiC z3a4=fXK@baaRC=`372sNS8)y3aRWDT3%79xcX1E*@c<9;2#@guPw@=@;9oq)3%tZD zyv7^6#XG#m2YkdQe8v}i#W#G%5B$V0{DfQqPu%BX^>sD|pO zftsj=+NguNsE7J!fQD#<#%O}3Xolu!ftF~6)@XyaXovRbfR5;d&gg=!@L5SfH*`l2 z^h7W8Mj!M=KlH}{48$M|#t;m}Fbu~CjKnC6#u$vnIE=>xOvEHi#uQA&G)%_~%)~6r z#vIJWJj}-eEW{!##u6;WGAzdmti&p;#u}`}I;_VAY{VvP#ujYFHf+ZZ?8GkY#vbg& zKJ3Q<{DFh`6NhjZf8lQ&!BHH;ah$+OoWg0G!C9Qcd0fCnT*75s!Bt$tb=<&B+`?_# z!Cl@+p*HHEF6yB^8lWK>p)s1EDVm`x01L4Qi?IYtu?)+x0xPi!tFZ=a zu@3980UNOio3RC3u?^d?13R$`yRip*u@C!k0Ds^h{=^|1#$WgwM{pF!a2zLa5~pw) zXK)tha2^+M5tncoS8x^Aa2+>r6Sr_1cW@W?a32rw5RdQ}Pw*7a@DKjQbG*Pyyuxd| z!CSn;dwjr0e8OjZ!B>34cl^Ll{K9|ujUXWd35s9{jt~fmPza4M2#atCj|hl}NQjIm zh>B>4ju?oEScr`{h>LiLj|51FL`aMzNQz`gjuc3VR7j09NQ-nxj||9&OvsEZ$ck*p zjvUB|T*!?)$cuc)j{+!&LMV(PD2iezjuI$|QYeiwD2s9^j|!-WN~nw~sETT+jvA#Th1FPtwOEJs*no}Lgw5E3t=NX`*nyqch27YLz1WBS zIDkKJ5P#wj4&yKUjUzaUV>pfzIEhm@jWallb2yI+xQI)*j4QZ`Yq*XZxQSc1jXSuD zd$^AWc!)=Mj3;=CXZQ#I;yGU6C0^k*-rz0X;XOX!BR=6XzThjq;X8idCw}2S{6>&a zfdoY`1V;#jL@0zt7=%SQghvEKL?lE;6huWdL`Mw7L@dNc9K=OD#76=oL?R?c5+p@3 zBu5IQL@K048l*)!q(=s1L?&cL7Gy;>WJeC>6n3;n1$JxgSnW8`B;F3ScJt`f~8o7a1eju5Dw!n{EZ_xieosA6F7-eIE^zn zi*q=S3%H0&xQr{fifg!z8@P#ExQ#owi+i|_2Y84_c#J1_if8x-|Kd4b;3Zz+HQwMY z-r+qy;3GcaGrr&}zTrE5;3t0JKm10J(18R+Fa$>kghVKWMi_)eID|(8L_{P+MifLv zG(<-X#6&E_MjXUNJj6!=Bt#-4MiL}NG9*U|q(myDMjE6=I;2MiWJD%pMiyj6He^Q* z=HB?6p)I=@R zMjg~eJ=8}7G(;mbMiVqeGc-pFv_vbkMjNz6JG4g!bVMg~Mi+F2--`<9hVJNrp6G?% z=!3rKhyECVff$6r7=ob~hT#~2kr;*17=y7Ghw+$ziI{}Rn1ZR8hUu7rnV5yyn1i{P zhxu55g;<2eSc0WkhUHj+l~{$;hy6H! zKX4F#;t&qwFZ_)oIErI9juSYEQ#g$?IE!;Qj|;enOSp_HxQc7IjvKg%TeyuoxQlzZ zj|X^&M|g}Uc#3EE2mj(ZUf?BO;WggiE#BchKHwuh;WNJAE56}7e&8p5;XnLFkT8J+ zMKAMKUBu z3Zz6Tq(&N~MLMKM24qAgWJVTbMK)wd4&+2GOR7Mq4MKx4M4b(&})J7fDMLpC<12jY1W zMLV=d2XsUybVe6+g#+eFu?d^81zWKV+pz;Xu?xGg2Yay(`*8q&;2{3QAsohE_!~!X6vuEJCvXy{a2jWD z7Uyst7jO}ma2Z!{71wYbH*gcTa2t1U7x!=<5AYC=@EA|<6wmMv{>5{=z)QTsYrMf* zyu*8Zz(;(-XMDj|e8YGAz)$?bfB20cVFL+@U2K;jW~#lc!-Y#NQgv8j3h{kWJrz_NQqQPjWkG$bV!d3$cRkHj4a5CY{-rr z$cbFYjXcPUe8`UiD2PHRj3OwCVknLhD2Y-ijWYkE=$^K~K%yuL#o z_0a$g(Fl#v1WnNl&Cvoa(F(2625r#}?cq0khmPok&gg=!=!Wj-fu87v-spq>&=>vC z9|JHDgD@CFFciZu93wCiqc9p{Fc#x59uqJTlQ0=mFcs4<9WyW!voITTFc5FpfF0wNFsBM5>b7=j}NLLwAG zBMibK9Ks_4A|etZBMPD-8locxVj>n|BM#ys9^xYb5+V^2BMFis8ImIfQX&;nBMs6b z9nvEMG9nW)BMY)38?qw@av~RUBM6PCTNOgXpRXb*=# z9Xg^DI-?7^q8qxS2YR9xdZQ2iLtpeme+34cl^Ll z{K9YiL4eSI35Y-lj35Y#U2K;jW~#l zc!-Y#NQgv8j3h{kWJrz_NQqQPjWkG$bV!d3$cRkHj4a5CY{-rr$cbFYjXcPUfABBz zAwLSBAPS){il8Wpp*TvQBub$)%AhRDp*$*}A}XOWs-P;Wp*m`yCTgKJ>Yy&_p*|X* zAsV4EnxH9~p*dQhC0e01+Mq4kp*`F{cIb#s=!`Dtif-tR9_Wc)=#4)34}H-O{V@Oo zF$jY(1Vb?l!!ZIQF$$wG24gV}<1qmfF$t3~1yeB%(=h`xF$=RX2XiqG^RWO6u?UN? z1WU0D%drA0u?nlP25Yen>#+eFu?d^81zWKV+pz;Xu?xGg2Yay(`*8pVaR`TT1V?cU z$8iEDaSEq#24`^&=WziSaS4}k1y^wm*Kq?kaSOL`2X}D~_wfJ^@d%Ic1W)k{&+!5; z@d~f;25<2W@9_a2@d=;t1z+(E-|+)K@e9B42LZzT*BM*<{7A|yrCS*nyWJNY)M-JpfF62fY+B~TKjP#R@W z7UfVL6;KhCP#INF71dB3HBb|^P#bkn7xhpd4bTvc&=^h76wS~aEzlCJ&>C&f7VXd; zZooTqL??7c7j#88bVm>LL@)G4AN+^D=!gCofPol3~(fsq)6(HMiV7>Dtg zfQgud$(Vwvn1<Q~(IEVANfQz_<%eaE8 zxQ6Svft$F6+qi?fxQF|AfQNX5$9RILc!uYAftPrN*LZ`sc!&4+fRFfu&-j9`_=fNJ zfuHz=-}r+7VgC{kfe;u$5EQ`>93c=Ap%5Bj5EkJO9uW``kq{YC5Eao79Wf9Su@D<^ z5EtkLSR;36*JGOpk%uHiav;3jV2Htygq?%_Tj;2|F2F`nQl zp5ZxO;3Zz+HQwMY-r+qy;3GcaGrr&}zTrE5;3t0JH~t_%xW5EMAOuDb1Vu0eM+k&O zD1=5Bghe=nM+8JfBt%9OL`5`2M-0S7EW}0}#6>*BM*<{7A|yrCS*nyWJNY)M-JpfF62fY+B~TKjP#R@W z7UfVL6;KhCP#INF71dB3HBb|^P#bkn7xhpd4bTvc&=^h76wS~aEzlCJ&>C&f7VXd; zmVY{QL??7c7j#88bVm>LL@)G4AN+^D=!gCofPol3~(fsq)6(HMiV7>Dtg zfQgud$(Vwvn1<Q~(IEVANfQz_<%eaE8 zxQ6Svft$F6+qi?fxQF|AfQNX5$9RILc!uYAftPrN*LZ`sc!&4+fRFfu&-j9`_=fNJ zfuHz=-}r+7;r|j4fe;u$5EQ`>93c=Ap%5Bj5EkJO9uW``kq{YC5Eao79Wf9Su@D<^ z5EtkLScOXT-QPDt%GV?2c@MB zVk8~=dVjRX}0w!V-CSwYwVj8An24-RwW@8TK zVjkvW0TyBr7GnvPVi}fW1y*7eR$~p;Vjb3F12$q4He(C6VjH$&2X2Y%uge&Y`UMEFZU1VUg0K~Mxk zaD+feghFV9L0E)Cctk)%L_%alK~zLTbi_bR#6oPuL0rT`d?Y|ZBtl{&K~f|`a-={? zq(W+>L0Y6kdSpOGWI|?SK~`i#cH}@#L**S> zpe0(NHQJyp+Mzw{J$C4bPUws-=!$OWjvnZVUg(WJ_z!*25B)I!12G7LF$6;~48t)3 zBQXl2F$QBX4&yNa6EO*sF$GgG4bw3LGcgOZF$Z%o5A(4A3$X}`u>?!849l?sE3pcz zu?B0g4(qW28?gzSu?1VP4coB;JFyG9u?Ksx5BqTd2XP38aRf(k499T-Cvgg=aRz5` z4(D+J7jX%faRpa#4cBo4H*pKMaR+yC5BKo^5Ag_(@dQut4A1cbFYyYm@dj`44)5^+ zAMpvF@daP;4d3wtKk*B{@dp7S{v{v+AuxgfQqPu%BX^>sD|pO zftsj=+NguNsE7J!fQD#<#%O}3Xolu!ftF~6)@XyaXovPNb=#pMI-xVVpewqeJ9?le zdZ9P^;6L<5KlH}{48$M|#t;m}Fbu~CjKnC6#u$vnIE=>xOvEHi#uQA&G)%_~%)~6r z#vIJWJj}-eEW{!##u6;WGAzdmti&p;#u}`}I;_VAY{VvP#ujYFHf+ZZ?8GkY#vbg& zKJ3Q<9K<0U#t|IFF&xJUoWv=d#u=Q&Ih@A@T*M_@#uZ$}HC)FH+{7*1#vR16w zJj5eB#uGfnGd#x&yu>TK#v8oFJG{pSe8eYw#ut3WH+;tr{KPN(#vcTT^p}7Lgun=b zpa_QG2!W6Yh0q9tun33nh=7QQgvf}3sECH>h=G`hh1iILxQK`NNPvV$gv3aKq)3M3 zNP(0{h15ucv`B~a$bgK5h1|%4y!Z$IA|LXj01BcI3Zn>$q8N&! z1WKY5N}~+Qq8!Sj0xF^sDx(Ujq8h5B25O=fYNHP7q8{p_0UDwa8lwrCq8XZ_1zMsN zTB8lxq8-}9%6Es3=!DMbg0AR>?&yJ@=!M?sga6PM{m>r+Fc5<<7(*}=!!R5pFcPCM z8e=dP<1ii*FcFh58B;J7(=Z(~FcY&d8*?xh^DrL^un>!|7)!7e%di|PuoA1V8f&l? z>#!ahuo0WE8C$Rw+prxwuoJtm8+))9`>-Dea1e)Z7)Njv$8a1ca1y6*8fS18=Wreu za1obq8CP%>*Ki#-a1*z18+ULQ_i!H%@DPvi7*FsN&+r^C@Di`^8gK9x@9-WU@DZQz z8DH=f-|!tj@DsoA8-EZW@?QcX5CS6zf+84#BLqSs6hb2m!Xg~PBLX5K5+WlCq9Pii zBL-q37Gfg~;vyd6BLNa35fUQ_k|G(BBLz|-6;dM&(jpzwBLgxb6EY(UvLYL@BL{LK z7jh#H^5P%-i+sqB0w{<=D2yT~iee~^5-5pMD2*~Gi*hKB3aE%msEjJ8ifX8i8mNg{ zsEsR;36*JGOpk%uHiav;3jV2Htygq?%_Tj;2|F2 zF`nQlp5ZxO;3Zz+HQwMY-r+qy;3GcaGrr&}zTrE5;3t0JH~t_%l)nT-AOuDb1Vu0e zM+k&OD1=5Bghe=nM+8JfBt%9OL`5`2M-0S7EW}0}#6>*BM*<{7A|yrCS*nyWJNY)M-JpfF62fY+B~TKj zP#R@W7UfVL6;KhCP#INF71dB3HBb|^P#bkn7xhpd4bTvc&=^h76wS~aEzlCJ&>C&f z7VXd;+AbYBq7yo!3%a5kx}yhrq8ECj5B@`6^h19Pz(5SbU<|=f48w4Yz(|b3XpF&F zjKg?Lz(h>KWK6+SOv7}{z)Z}-Y|O!2%)@*vz(Op-Vl2T@EW>iFz)GybYOKLptiyV2 zz(#DsW^BP$Y{Pc!z)tMKZtTHc?8AN>z(E|sVI09x9K&&(z)76KX`I1XoWprsz(rib zWn95kT*GzTz)jr3ZQQ|K+{1l5z(YL3V?4oAJi~Lmz)QTsYrMf*yu*8Zz(;(-XMDj| ze8YGAz)$?bZ~Q@ksDBBFKnRQ=2#R0`jt~fmPza4M2#atCj|hl}NQjImh>B>4ju?oE zScr`{h>LiLj|51FL`aMzNQz`gjuc3VR7j09NQ-nxj||9&OvsEZ$ck*pjvUB|T*!?) z$cumQFY+Nj3ZNhgp)iV|D2kytN}wc4p)|^%EXtugDxe}Np)#tVDypG6YM>@+p*HHE zF6yB^8lWK>p)s1EDVm`LL@)G4AN+^D z=!gCofPol3~(fsq)6(HMiV7>DtgfQgud$(Vwvn1<Q~(IEVANfQz_<%eaE8xQ6Svft$F6+qi?fxQF|AfQNX5$9RIL zc!uYAftPrN*LZ`sc!&4+fRFfu&-j9`_=fNJfuHz=-}r+7(f$$;fe;u$5EQ`>93c=A zp%5Bj5EkJO9uW``kq{YC5Eao79Wf9Su@D<^5EtkLSx01L4Qi?IYtu?)+x0xPi!tFZ=au@3980UNOi zo3RC3u?^d?13R$`yRip*u@C!k00(ghhj9c)aSX?C0w-|_r*Q^naSrEk0T*!zmvIGG zaShjT12=ICw{Zt|aS!+L01xp9kMRUg@eI%L0x$6juki+N@ec3t0Uz-RpYa7>@eSYc z13&Q#zwrkFqW>iz0wFMhASi+%I6@#KLLoH5AS}WmJR%?>A|W!OAS$9EI$|IuVj(u- zATHt|J`x}y5+N~?ASsd|IZ_}cQXw_cAT81%Ju)C8G9fdvAS<#VJ8~c=av?YJATR#G zzsQIDD1d?}gu*C-q9}&qD1nkFh0-X4vM7i0sDO&7gvzLbs;GwQsDYZOh1#ftx~PZx zXn=-jgvMxsrf7!dXn~e!h1O_;wrGd;5Hs!25uMN(UCcO{6TQ$IeefUpq96KW z00v?Z24e_@Vi<;F1V&;MMq>=dVjRX}0w!V-CSwYwVj8An24-RwW@8TKVjkvW0TyBr z7GnvPVi}fW1y*7eR$~p;Vjb3F12$q4He(C6VjH$&2X2Y%uge&Y`U#P~}<1VUg0K~MxkaD+feghFV9 zL0E)Cctk)%L_%alK~zLTbi_bR#6oPuL0rT`d?Y|ZBtl{&K~f|`a-={?q(W+>L0Y6k zdSpOGWI|?SK~`i#cH}@#cP#W|eE1zf}>T*eh##Wh^V z4cx>n+{PW;#Xa1|13bhdJjN3|#WOs|3%tZDyv7^6#XG#m2YkdQe8v}i#W#G%5B$V0 z{Kg*yi20X*2!y~0f}jY7;0S?`2!+rHgRlsP@Q8qjh=j<9f~bgw=!k)sh=tgQgSd!? z_(*_+NQA^lf}}`>~qXH_T5-Ot#s-haIqXufC7HXpo>Y^U%qX8PC z5gMZjnxYw+qXk-`6^ud4Vi+<>j0T_ru z7>pqpieVUz5g3V47>zL)i*Xo_37CjUn2afyifNdR8JLM#n2kA@i+Pxj1z3nhSd1lD zie*@i63?3if{OiANYx1_>DgZ5bG}i5eR`11VIrD!4U!>5elIZ24N8n z;Sm855ebnI1yK5%~$ zkqMcR1zC{|*^vV|kqfzz2YK-i{zX3IM*$Q>ArwXt6h$!w>E3`%%v_(6#M+bC7Cv-*^ zbVWCGM-TKwFZ4zq{D;2ihyECVff$6r7=ob~hT#~2kr;*17=y7Ghw+$ziI{}Rn1ZR8 zhUu7rnV5yyn1i{Phxu55g;<2eSc0WkhUHj+l~{$;hy6H!gE)l4ID(@%hT}MalQ@ObID@k|hx53Ai@1c#xPq&=hU>V2o4AGB zxP!a6hx>Sdhj@g?c!H;RhUa*Jmw1KOc!Rfihxhn^kNAYo_=2zahVS@+pZJB}_=5nk z{}K>^5Ewxa6u}T2ArKOw5E@|+7U2*c5fBlP5E)Sr710nKF%T265F2q27x54u36Kzp zkQhmj6v>brDUcGWkQ!-_7U_^48ITc~kQrH!71@v-Igk^%kQ;fB7ysa28KuMHBX_P@(ltXz`Kt)tSWmG{`R6}*tKuy#_ZPYCfi zG(&T=KufejYqUXIv_pGzKu2^!XLLbVbVGOaKu`2SZ}h=`=!<^nj{z8nK^Tl77>Z#S zju9A%Q5cOe7>jWjj|rHFNtlc&n2Kqbjv1JVS(uGEn2ULsj|EtWMOcg_Sc+v>julvm zRalKRSc`R7j}6#}P1uYr*otk~jvd&EUD%C1*o%GGj{`V}LpY2hIErI9juSYEQ#g$? zIE!;Qj|;enOSp_HxQc7IjvKg%TeyuoxQlzZj|X^&M|g}Uc#3Cuju&`|S9py#c#C&< zj}Q2WPxy>4_=<1%jvx4mU-*qb2oUEl0TBp+5d=XI48aisArT6p5e8uq4&f025fKTI z5d~2Z4bc$;F%b)~5eIP*5Al%z36ThikpxMR49SrKDUk}Pkp^jz4(X8r8IcK@kp)?i z4cUL zL@)G4AN+^D=!gCofPol3~(fsq)6(HMiV7>DtgfQgud$(Vwvn1<Q~(IEVANfQz_<%eaE8xQ6Svft$F6+qi?fxQF|A zfQNX5$9RILc!uYAftPrN*LZ`sc!&4+fRFfu&-j9`_=fNJfuHz=-}r+7asLt!fe;u$ z5EQ`>93c=Ap%5Bj5EkJO9uW``kq{YC5Eao79Wf9Su@D<^5EtkLSPAsC8b7>*GbiBTAh zF&K++7>@~Th(~ygCwPiyc#ao%iC1`yH+YM8c#jYGh)?*8 zFZhaY_>Ld=iC_4QKL`--F98t=HB?6p)I=@R zMjg~eJ=8}7G(;mbMiVqeGc-pFv_vbkMjNz6JG4g!bVMg~Mi+ENH*`l2^h7W8Mj!l# zzUYVk7=VEoguxhsp%{kY7=e)(h0z#;u^5N(n1G3xgvpqKshEc8n1Pv?h1r;cxtNFf zSb&9CgvD5brC5gLSb>#Th1FPtwOEJs*no}Lgw5E3t=NX`*nyqch27YLz1WBSIDmsV zgu^(3qd11+IDwNmh0{2Lvp9$IxPXhegv+>stGI^ixPhCvh1kb<{vj)Ix34L0!~CeKbHrG(uxEK~pqCbF@H9v_fmNL0hy# zdvriYbV6rzL05D`cl1C{^g?g+!GGwBe&~+@7>Gd_j3F3`VHl1P7>Q9BjWHODaTt#Y zn21T3j47CkX_$@~n2A}KjX9W$d6pfzIEhm@jWallb2yI+xQI)*j4QZ` zYq*XZxQSc1jXSuDd$^AWc!)=Mj3;=CXLybmc!^hdjW>9UcX*Ev_=r#Vj4$|#Z}^TM z_=#WmjXwyG;4c9Y2!RmX^{@;kpUTz37L@vS&OR7Mq4MKx4M4b(&})J7fDMLpC< z12jY1WMLV=d2XsUybVe6+MK^Ru5A;MY^hO{2hrZ~C{uqFP z7=*zXf}t3O;TVCD7=_UogRvNg@tA;#n1sogf~lB>>6n3;n1$JxgSnW8`B;F3ScJt` zf~8o7$riNxP{xegS)tg`*?tdc!bAzf~R5v{7 zkP(@X8Cj4O*^nJMkQ2F(8+niy|KMNbLw*!MK@>t^6hToGLvfTqNt8lqltEdPLwQs{ zMN~p%R6$i#Lv_?ZP1Hhd)InX;Lwz(rLo`BTG(l4|Lvyr1OSD33v_V_6Lwj^UM|47G zbU{~iLwEE*PxL}>^ud4Vi+<>j0T_ru7>pqpieVUz5g3V47>zL)i*Xo_37CjUn2afy zifNdR8JLM#n2kA@i+Pxj1z3nhSd1lDie*@i63?3if{OiANYx1_>DgZ zkmxS~5eR`11VIrD!4U!>5elIZ24N8n;Sm855ebnI1yK5%~$kqMcR1zC{|*^vV|kqfzz2YK-i{zX3IM*$Q> zArwXt6h$!w>E3`%%v_(6#M+bC7Cv-*^bVWCGM-TKwFZ4zq{D;2ihyECVff$6r7=ob~ zhT#~2kr;*17=y7Ghw+$ziI{}Rn1ZR8hUu7rnV5yyn1i{Phxu55g;<2eSc0WkhUHj+ zl~{$;hy6H!gE)l4ID(@%hT}MalQ@Ob zID@k|hx53Ai@1c#xPq&=hU>V2o4AGBxP!a6hx>Sdhj@g?c!H;RhUa*Jmw1KOc!Rfi zhxhn^kNAYo_=2zahVS@+pZJB}_=5n6{}K>^5Ewxa6u}T2ArKOw5E@|+7U2*c5fBlP z5E)Sr710nKF%T265F2q27x54u36KzpkQhmj6v>brDUcGWkQ!-_7U_^48ITc~kQrH! z71@v-Igk^%kQ;fB7ysa28KuMHBX_P@(ltXz`Kt)tSWmG{` zR6}*tKuy#_ZPYCfiG(&T=KufejYqUXIv_pGzKu2^!XLLbVbVGOa zKu`2SZ}h=`=!<^nj{z8nK^Tl77>Z#Sju9A%Q5cOe7>jWjj|rHFNtlc&n2Kqbjv1JV zS(uGEn2ULsj|EtWMOcg_Sc+v>julvmRalKRSc`R7j}6#}P1uYr*otk~jvd&EUD%C1 z*o%GGj{`V}LpY2hIErI9juSYEQ#g$?IE!;Qj|;enOSp_HxQc7IjvKg%TeyuoxQlzZ zj|X^&M|g}Uc#3Cuju&`|S9py#c#C&4_=<1%jvx4mU-*qb2$1A20TBp+ z5d=XI48aisArT6p5e8uq4&f025fKTI5d~2Z4bc$;F%b)~5eIP*5Al%z36ThikpxMR z49SrKDUk}Pkp^jz4(X8r8IcK@kp)?i4cULL@)G4AN+^D=!gCofPol3~(fsq)6 z(HMiV7>DtgfQgud$(Vwvn1<Q~(IEVAN zfQz_<%eaE8xQ6Svft$F6+qi?fxQF|AfQNX5$9RILc!uYAftPrN*LZ`sc!&4+fRFfu z&-j9`_=fNJfuHz=-}r+7N&gZMfe;u$5EQ`>93c=Ap%5Bj5EkJO9uW``kq{YC5Eao7 z9Wf9Su@D<^5EtkLSPAsC8b7>*GbiBTAhF&K++7>@~Th(~yg zCwPiyc#ao%iC1`yH+YM8c#jYGh)?*8FZhaY_>Ld=iC_4QKM0WQF98t=HB?6p)I=@RMjg~eJ=8}7G(;mbMiVqeGc-pFv_vbkMjNz6 zJG4g!bVMg~Mi+ENH*`l2^h7W8Mj!l#zUYVk7=VEoguxhsp%{kY7=e)(h0z#;u^5N( zn1G3xgvpqKshEc8n1Pv?h1r;cxtNFfSb&9CgvD5brC5gLSb>#Th1FPtwOEJs*no}L zgw5E3t=NX`*nyqch27YLz1WBSIDmsVgu^(3qd11+IDwNmh0{2Lvp9$IxPXhegv+>s ztGI^ixPhCvh1kb<{vj)Ix34L0!~C zeKbHrG(uxEK~pqCbF@H9v_fmNL0hy#dvriYbV6rzL05D`cl1C{^g?g+!GGwBe&~+@ z7>Gd_j3F3`VHl1P7>Q9BjWHODaTt#Yn21T3j47CkX_$@~n2A}KjX9W$d6pfzIEhm@jWallb2yI+xQI)*j4QZ`Yq*XZxQSc1jXSuDd$^AWc!)=Mj3;=CXLybm zc!^hdjW>9UcX*Ev_=r#Vj4$|#Z}^TM_=#WmjXwyG;x7Ra2!RmX^{@; zkpUTz37L@vS&OR7Mq4MKx4M4b(&})J7fDMLpC<12jY1WMLV=d2XsUy zbVe6+MK^Ru5A;MY^hO{2hrZ~C{uqFP7=*zXf}t3O;TVCD7=_UogRvNg@tA;#n1sog zf~lB>>6n3;n1$JxgSnW8`B;F3ScJt`f~8o7$riN zxP{xegS)tg`*?tdc!bAzf~R5v{7kP(@X8Cj4O*^vGJ_U)+&uw7vrZQH%twr$(C zZQHhO+qTzg+qP}n_j0T_ru7>pqpieVUz5g3V4 z7>zL)i*Xo_37CjUn2afyifNdR8JLM#n2kA@i+Pxj1z3nhSd1lDie*@i6R;36*JGOpk%uHiav;3jV2Htygq?%_Tj;2|F2F`nQlp5ZxO;3Zz+HQwMY-r+qy z;3GcaGrr&}zTrE5;3t0JH~t_%%D)6eAOuDb1Vu0eM+k&OD1=5BgvCDyhwzAih=_#9 zh=QnyhUkcan23egh=aI@hxkZ4JD1)*nhw`X^il~IjsDi4fhU%z+ zny7`^sDrwwhx%xMhG>MwXo99_hURF2mS~06XoI$BhxX`zj_8EW=z^~3hVJNrp6G?% z=!3rKhyECVff$6r7=ob~hT#~2kr;*17=y7Ghw+$ziI{}Rn1ZR8hUu7rnV5yyn1i{P zhxu55g;<2eSc0WkhUHj+l~{$4({R}?&AR- z;t?L>37+B^p5p~x;uT)w4c_7%-s1y4;uAjO3%=qTzT*de;un774+5n6OF#rdU<5%> z1VeCyKuCl_XoNvn{DW`^j|hl}NQjImh>B>4ju?oEScr`{h>LiLj|51FL`aMzNQz`g zjuc3VR7j09NQ-nxj||9&OvsEZ$ck*pjvUB|T*!?)$cuc)j{+!&LMV(PD2iezjuI$| zQYeiwD2s9^j|!-WN~nw~sETT+jvAZ#Sju9A%Q5cOe7>jWj zj|rHFNtlc&n2Kqbjv1JVS(uGEn2ULsj|EtWMOcg_Sc+v>julvmRalKRSc`R7j}6#} zP1uYr*otlV7yn^9c3>xVVK??*FZN+S4&WdT;V_QiD30McPT(X?;WWfQqPu%BX^>sD|pOftsj=+NguN zsE7J!fQD#<#%O}3Xolu!ftF~6)@XyaXovRbfR5;d&gg=!=!Wj-fu87v-spqA=!gCo zfPol3~(fsq)6(HMiV7>DtgfQgud$(Vwvn1<?rvPT~|!;|$K?9M0ncF5(g{;|i|g8m{98ZsHbh;|}iP9`54-9^w%m;|ZSP z8J^<>Ug8yA;|<>89p2*uKH?KT;|spx8@}TQe&QE?;|~I)`Aa|qLSO_zPy|D8gg{7y zLTH3RSp0)<2#*Meh)9TxD2R$^h>jSDiCBn@IEagQh>rwFh(t(?BuI*6NRAXpiBw39 zG)RkdNRJH2h)l?gEXay%$c`MyiCoByJjjcD$d3Xjh(aigA}EStD2@^+iBc$yGAN63 zD31!Lh)Sr8DyWKTsE!(_iCU6PCTNOgXpRXpau) zh)(E?F6fGG=#C!fiC*Z9KIn^n=#K#yh(Q>PAsC8b7>*GbiBTAhF&K++7>@~kghVKWMi_*}KM05Lh=7QQgvf}3sECH>h=G`hh1iIL zxQK`NNPvV$gv3aKq)3M3NP(0{h15ucv`B~a$bgK5h1|%4yvT?A zD1d?}gu*C-q9}&qD1nkFh0-X4vM7i0sDO&7gvzLbs;GwQsDYZOh1#ftx~PZxXn=-j zgvMxsrf7!dXn~e!h1O_;wrGd;=zxysgwE)KuIPsD=z*T-h2H3czUYVk7=VEoguxhs zp%{kY7=e)(h0z#;u^5N(n1G3xgvpqKshEc8n1Pv?h1r;cxtNFfSb&9CgvD5brC5gL zSb>#Th1FPtwOEJs*no}Lgw5E3t=NWt@gKHh2X2Y%uge&Y`Ur29)i1VUg0K~MxkaD+feghFV9L0J5Q za0rhGh=@ptj3|hTXo!v&h>2K;jW~#lc!-Y#NQgv8j3h{kWJrz_NQqQPjWkG$bV!d3 z$cRkHj4a5CY{-rr$cbFYjXcPUe8`UiD2PHRj3OwCVknLhD2Y-ijWQ^Uawv}qsEA6a zj4G&#YN(DHsEJyrjXJ1{dZ>>EXoyB=j3#J`W@wHUXo*&6jW%eDc4&_d=!j0}j4tSk zZs?94=!stFjXvm$e&~+@7>Gd_j3F3`VHl1P7>Q9BjWHODaTt#Yn21T3j47CkX_$@~ zn2A}KjX9W$d6MCT`(2 z?%*!&;XWSVAs*o|p5Q5-;W=L5C0^k*-rz0X;XOX!BR=6XzThjq;X8idCw}2K{vbg5 zzXU`e1V#`9MKAf~u&7>ZpO5sD;|7gSx1P`e=ZLXoSXSf~IJO z=4gSIXoc2jgSKdg_UM3)=!DMbg0AR>?&yJ@=!M?sgTCm8{uqFP7=*zXf}t3O;TVCD z7=_UogRvNg@tA;#n1sogf~lB>>6n3;n1$JxgSnW8`B;F3ScJt`f~8o7R$RifD+A7>J2jh>bXii+G5S1W1TPNQ@*%ieyNR6iA6wNR2c|i*!hj49JK~$c!w= zifqV^9LR}W$c;S6i+sqB0w{<=D2yT~iee~^5-5pMD2*~Gi*hKB3aE%msEjJ8ifX8i z8mNg{sEsj0T_ru7>pqpieVUz5g3V47>zL)i*Xo_37CjUn2afyifNdR8JLM#n2kA@ zi+Pxj1z3nhSd1lDie*@i6R;36*JGOpk%uHiav;3jV2Htygq?%_Tj z;2|F2F`nQlp5ZxO;3Zz+HQwMY-r+qy;3GcaGrr&}zTrE5;3t0JH~t_%#=itaAOuDb z1Vu0eM+k&OD1=5BgvCDyhwzAih=_#9h=QnyhUkcan23egh=aI@hxkZ4JD1)*nhw`X^il~IjsDi4fhU%z+ny7`^sDrwwhx%xMhG>MwXo99_hURF2mS~06 zXoI$BhxX`zj_8EW=z^~3hVJNrp6G?%=!3rKhyECVff$6r7=ob~hT#~2kr;*17=y7G zhw+$ziI{}Rn1ZR8hUu7rnV5yyn1i{Phxu55g;<2eSc0WkhUHj+l~{$4({R}?&AR-;t?L>37+B^p5p~x;uT)w4c_7%-s1y4;uAjO z3%=qTzT*de;un774+3QROF#rdU<5%>1VeCyKuCl_XoNvn{DW`^j|hl}NQjImh>B>4 zju?oEScr`{h>LiLj|51FL`aMzNQz`gjuc3VR7j09NQ-nxj||9&OvsEZ$ck*pjvUB| zT*!?)$cuc)j{+!&LMV(PD2iezjuI$|QYeiwD2s9^j|!-WN~nw~sETT+jvAZ#Sju9A%Q5cOe7>jWjj|rHFNtlc&n2Kqbjv1JVS(uGEn2ULsj|EtW zMOcg_Sc+v>julvmRalKRSc`R7j}6#}P1uYr*otlV7yn^9c3>xVVK??*FZN+S4&WdT z;V_QiD30McPT(X?;WWfQqPu%BX^>sD|pOftsj=+NguNsE7J!fQD#<#%O}3Xolu!ftF~6)@XyaXovRb zfR5;d&gg=!=!Wj-fu87v-spqA=!gCofPol3~(fsq)6(HMiV7>DtgfQgud z$(Vwvn1<?rvPT~|!;|$K?9M0ncF5(g{;|i|g z8m{98ZsHbh;|}iP9`54-9^w%m;|ZSP8J^<>Ug8yA;|<>89p2*uKH?KT;|spx8@}TQ ze&QE?;|~I4`Aa|qLSO_zPy|D8gg{7yLTH3RSp0)<2#*Meh)9TxD2R$^h>jSDiCBn@ zIEagQh>rwFh(t(?BuI*6NRAXpiBw39G)RkdNRJH2h)l?gEXay%$c`MyiCoByJjjcD z$d3Xjh(aigA}EStD2@^+iBc$yGAN63D31!Lh)Sr8DyWKTsE!(_iCU6PCTNOgXpRXpau)h)(E?F6fGG=#C!fiC*Z9KIn^n=#K#yh(Q>P zAsC8b7>*GbiBTAhF&K++7>@~kghVKWMi_*} zKM05Lh=7QQgvf}3sECH>h=G`hh1iILxQK`NNPvV$gv3aKq)3M3NP(0{h15ucv`B~a z$bgK5h1|%4yvT?AD1d?}gu*C-q9}&qD1nkFh0-X4vM7i0sDO&7 zgvzLbs;GwQsDYZOh1#ftx~PZxXn=-jgvMxsrf7!dXn~e!h1O_;wrGd;=zxysgwE)K zuIPsD=z*T-h2H3czUYVk7=VEoguxhsp%{kY7=e)(h0z#;u^5N(n1G3xgvprlmlT0( z#w%E&SeAN~Ym_fhs6gp@g-cYbT(LyKDwRu=D_gH(fxlJFaR2`g1qzlfQm;~pnnh|x zD%he~mO{-NbgbO2XvZcU%5`kqq~nUeSE)(yy-d2!ZQ7@6-=ck*hFw~;Zk#4_rp_H& zX6uwm)BjiMb#2nNal4M`{*La_q*Lck>Do7F)T%+VCY{nX`a5moCY{qY{JTWczujru z_qZM+cbj&NyR>eS_wVzp0G%!e3lJbk;2?nm1pMFkzXblzCJ^ZV?9TpoZvL0R{}T8= Hn85!7d|BZK diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/big5prober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/big5prober.cpython-36.pyc deleted file mode 100644 index 16ce58f39637f07e80234e90b2162fa2676521e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 909 zcmZuv&2H2%5VrH*bStVNRY-7x3punol!^;NrCW*9E=YUx#mdHJ>m^RIwu7{*-nNgx zOYkD_4!LsT6*w_=3M@a4W<2rOoTl$du$H1(^xsMcC&$nD$QY%*yW zuSzKYYj_Y{fayozI3k!K;xWv;TSR>3vjFCRg@7ySQ(I&JQCf_4*xA+?gXyQ>3|itF zv;_r>XZ$V1G%(>7!5rP7WxRzW3_(3S%@Spg_6en;7KT#g!>s!zal0uJF6z65XX|5oJmCy76#vGO=+EC+^x zwl^h#J>_s_SnWZ=#e>_2-~MpH4YfFc8LbP+Gg#GDD}*->ckcXq-!u!Yn)V2#eM+fp zSXbG2MCqz4sv+aps1cOgx!LNb?DYzI96bip7IcD>$gNDXJ#tUZ?_dqexc4JRrE5oR r+ffef=w6Z>IxTlPa(K!Js%S0UL%Y)dL(wNM2JkO!XFAzO*nR#FF6o=#UeuB2~M zRZfT}*%$BYyzYP4KLYz3>XoPc3o9Ym7p})hseCuESWQX^8%(v0&i(TG34OA)mOAi|17v5kueZ%*>_=`-*+OYGP z%x27_r$V!;6s%ILsFYw+nG05@W~NzMa;8LGDMKpE%!E{o3nMZkcr41S;<7x}as1(T zX;J55JdR_A-`gykrK(Y6x+;XTNu3Hd6pftTdTGqgWyz~^Jv_L3|1Jh*#B~~mIL#lp;8n`D+<{p@$KlsneIKCJUqcvg>0Jfiy>{t6@V@O|g_psJ ze;F=)-+R`3;$aj}TG57A(PhN_Tb}xu2Pe^`-;5x`Tiz0B=Ml{=ee_xYL3{C&3+Cs- z%vH%!cn-&okyZ^{98niJqKF-(M?k_l%dDD0*(I`4&O$D=q1ncOM(`;2<2qGo!E#v& zJ!X$#%5|Bk*s(zHF|lEC)a)@A^-6Ed9#J^yWSBm>FhXydEz?4b*&!q?uWkdZT3iGM-hqVF^TDJAqgH;03k>L5ur znhL>fE6Xb_Y`a;s?P;Zo)C^j-<*s5Qx`FlQHlnfWVdsB5^)j0Of4XOidasuC@Mtb` zK799{d3N#_eUGNx2OQyLs68c~&4o64uTHbm^jPS<)e~E{@PAZa*nX48nu3v3(?8%4 zO(%JA+mHRe-}T%0dVU6k87doMyayLIU;eL(qrfHek~{|qpPC)-O;{nPZo zT>YCK-^F+1rU!dF{G}Ix@0p(IUy|PLGH{^(`iaM127F&x{OHp75Zsi5xw5J#h^8pA zELF$zLX>#fGzGY6;Efmx7)=#8>(>~C`q`L$vV!sT<~v{(CV}f(WO6D6Uvc01tRbD% z0G9xN{R8P7f=KVMr%&~T9+CBb9E`tx`jkn{<{EZnsf|c+3)(Ywpl|N5@s!-!;;YBM zmzVLNHc0vUGQaAq5wC3r7_IU%0fyV&K#JXMFpH;`WO=H!y+P>DWoD9@i!>O^vE^d# zBdQPQGa&w#hkTBiYMxUXP6a)6;(k?7oNSgfI1R$3ldVLTJ zwLw5+qYh|SH%Vw8RYG^wfls06BnhvwB(ZUVqKaB1l0;ECR3QoCBlQ-E+YmO8m7*GH zJF7f5uHIUWMkvNjfo=YDRLb#l;DWSTJPon diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/chardistribution.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/chardistribution.cpython-36.pyc deleted file mode 100644 index dae5c02b33a1bd626f67ae2bce53d4949ecb323b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6131 zcmd5=&2t+`6`xOOB+IgF%eL%%jh(Q&f=$dO8K{%ieioA z^o$cCl%l}7@CU$YDWHl2ds+AcD7f(PCqT`Cg5sppR&nG4ztDhKNpHv+5;Cot@`kNpFKwm05o<)q^lHW%wMM-$Ys?$B#)T|a z&3Y5o1nO~Xk{Q+%OISIUw5C@iHpEh|C6?M#tQl~_EDbL0&g`ky8So=413n}8v*1VB z82B;4p94S6vf#6VKM#I_O@f~k`~~n+EC)U(c#};RrTk1w#=`Szm|fnuyZ+6)PaM8p zzsKEYk2!OBm=RKYePQw8vRz!YmP4~G`Q)S3y9*EPrPbp4+UnxQ`s(9?y|#c?d#nd* z{ld)%Hq{)?_E7S*k~l~9c{KFI&Qe}#Y*}5;lV~0S68n04s{_C95>L| zhpWZIDE4!=#_D_?z}O0kmzM zuQ&0@Q!McYFk;J175$WLiLWz_K+#mErERU?iwVKRHmgv10*%Kys37tNcE_JA96$T2?wEy^@=9pu>{)n{rVK$YM(49qtCZ zyk?f_wXF(sYbDp*bbJ`GUNhbA0NIsV*MkA&}Iim=vwc9qe-@{7s%UMb~^ohe*s^z3?)T&YIl*IHLf+LHeP>_rl#1U=% z9)q;L1tKui`Z?815G-MoUTWmw=THxmTNUo(?7@-sY^T^s+T!OZ(bDu3PT*OkadGg{ zx~{X3*ZI5nl3yl5Xow6v5Hu7g>nJ`M0-%X;lKfX-d9e0o!J3cM;#& zKu7Z_I<+A*BWL8S(ztZYdQXp`uVJ1a(Og{&k>u1E%F(s&%_3+B`b7w$h#Dbim})0D zn$OVZAcAHGDSHBbzKxMi#LvfV{45^D4~tDvm^z57IN=IuztIj}i70qQA?p{kK5|8^ zpAflC>CUJRu&Qhq;C1AK0ci)FDt)CM4 z4UxYQ`GUv=5Ppkl-=mt@Asv6G@26BzloVLJNZtAX@(+;vbg3jjW^lX7$YZz}Qii1= zc^qiS(*yGxnCrJRYZsU#IW;gT8~^a5|4(H8g_bG)bLq{-`)hj?nkv5TLi5;c9D%W& zjqB}fyl<#%{R|^U36{vMM3!Yj)`3oMHm(iI!~cp8+TpP$4cWI1 zh5W3QaCb|=i!J<1#Kkp;XxZkXh0Zk>=`dx&RaXSBn!hhG_9wgc zN$ht)?h%+~n)lg&H#uio=%6o}0y5bT2C^wRJ7Bt`!*ixXBj-W0q=Q2im0xjOjd)&Z zkA^O74O90D0@i?NasS(vJv8YvJ32PDP2$T>V6zMIh7D_S&0vgcan7274z$E73v)13 z)(YoPS9BF?SuenFEnm5K{=kl=;|m+)41KhcjeU@-gQYCt8JkmRSYy#;;DIJCHN$(N zVFTzzB}<^>Dvo=@UK+>wLOl4ao%Wua#&nQZ;z41_<#*!2o^k2H)Hqkj5VCZp-}#x@ z1-$Y1(N;PbZ;gB7hsV=iUq5`bolcU+Zkt4&;^$_lM|R7a30_Iv*0|L^X?2a;Y6CfK zQolNrb}7WMhjDZK!iISL9gtICj8}Px-|Vgbcm%1j6QPrKEHp8~bm;D)uK|JxWH82tP-rw~44h($& zaugbaujH>3vv+Ut_vVvr$`5^%qpLjqfWv7>=K^D08 zaSqZTktf3LWrA{pdm)A9hfT0q2T1LRU^@ge0>K}+f2gj=L$e$Y4oMox zq6%bdZ`!f1(F?+*H(_0Y{3DRt0ArjAK>%2R@~0g&f%1F_T;c!O+AV;SlUMao!b3#9 zK7PRlVX`@+!cTc30M$Ls0UVtIoHn#LWI8y*SfsgeI)r`+DbXJK-N{ZCB%wQocG>Qv zDybw@NEYT8qHBKkc#Rq?NU!r_p`%NMRwg^*p4UU-3+XT+w&(~1mV9~tv(#3^`h6Rv%3#m{ohiqe^P(os?nldg|1JT zy-T~-iBVr(OKTWwb3EuP3u6azO-1>1urE(wS8(VP|s;W|I)sj34^9v;3 jz^S>|F6P9=T%%6*YPY?ctB(usK7E@Wr{PYK*MfflZ@#K? diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/charsetprober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/charsetprober.cpython-36.pyc deleted file mode 100644 index ac01c32256c131c9ac829731687ddb5021d129a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1726 zcmb7^&2AGh5P+iCXUL+?Ko0V#vrvE{>KrUU33VRIu!y<yzmp+*;KFbKYs;cBkU&cDF_B{WS*OGD7NADoD(XrG$L$T94P4YqnQJ{s` zBm&9=uY;(S$Nh#oO1+|LoUX0)W)NzrL_27;MFWey z8-=HPXlQO6H$m#hPAKb4&CN z(UlY;DGJf)LO-N&Nr;oa7mj8W6@V&|pxml5iA54iB-Ti*lek6V>e(EP=#f!WWDl{& ol>a=>+Y>)0@0fYlNtk)PMkhr}X6=>a_eYd3?$d^3R>BSc0wKa|jsO4v diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/codingstatemachine.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/codingstatemachine.cpython-36.pyc deleted file mode 100644 index d2fd19722c568ceeb2c6fa9427b41a3e895923d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1446 zcmZ`&Ur!V<5O2GCd&_d12qr@O6MfOF1}+g2VnPh@5`B@22_`1{(k$BockG{|?WvIC z3BHV9M888{ec~(lhnO}0n*Qa2_k4t z3Yt)gGRs-vB_1VjiSUGfNrZpF5??g-NE}>IaEPf5ZDhG>cq)UhpSq4sauJDc?cI7xtnH3{ZeKa z7e8E)xTjmia-#bn%s_c?k6LW5*Q3&agjR+aL9Fv9`HkP6k_g1CJc> zPqGx1>L__KlG^CbFwKtBL#aC%1Q*hDGFP6)@`}2=_2H=vIq#Q!!}(*lMu(U+4cvcr z@85>3Ut4Dg41TyyIupUh5Z4pz0`0|2q0+V|#k=;#RH3OWt!6FU!q||fKpK4rJzJTP zfa}l%7a#0!xEwA65C8>0WtA8@rWdfDBQDH%$4tEtAambYc&lX0fCz7(-ktfYoH$abegoEBE178GNP^yc-pt@!+iLyM^`a`;(OVxnelNL4`kaS1Myi>nPGgGM~ za-FYj-BbrE02hVnt2Q#MS~Za&46*NeWNDT(_hDkXxrX~-g18IxSMO|8$}gr?;Um*a zz=*#@BfxTzwUN^{J$o>trGGqcpo&SlzG9l#ks482XEzf;yL>1O$0T9QIrbu#u0#!$m7OzIb;A=_r|PWriFxI!VG86lwEP*-RRfd;lGD}dn&Ex|4VCzUoQ^v z(csOT+lcd`5~CdD7Uw6UG_N&k0ph!fR*NXzMz)L$-}4l6laF)!2uS0z2x%CEUU)0? v6rT6uhMmi*5@0WluHRFTRmCth_3)t4R6rLWquOx0&h6EG*l9Ft(U$iM;&4hJ diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/compat.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/compat.cpython-36.pyc deleted file mode 100644 index bc872e5d77821a24b4d1a52a225c47a7d7b98391..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 455 zcmY*VJx{|h5Ix&TYXaS1Lrg3kN|1`gf)ElTQkQO7A~$v+{YX-uQ&g!N@MHKR@E^P~ z^)E1S?o>{?=jXHU-Lr?iUh>ub&ORc5A2{DBg$2{dT7fD8=Gn2zUQ&kZ+X%Co4F zCN?}UEp+q_Sx2)m^gBE1g3&Ih6fAIxu!h1TC0-J^ASZ&H<6CgzjT4Ku@J13_7}Hpi zibj^xT^qXl{D8+^;0FE4+E^^>Dle;P?UNGA3Z1G7S)?edcRZ>Ds2&tXhK((?%6@^=vRLUX<0wrA57Ll)Gv+ zUcOq@9o>`(*#ZA%97-#{|hlCr3KMm9FTK_sIL?1KAUO z=_PFBx3tOH?qTZ^%7=Y?UBshs7i1DvO(_O21%v{tx)dQ?tEQF<6amBvZ-Hupx#{|u zG0IR~pr!d?GQV4UVm3sqapYqTf&br+s(lx)^;enel`1A^yz4&@(z0D4+e AM*si- diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/cp949prober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/cp949prober.cpython-36.pyc deleted file mode 100644 index 64f0d9a3a817967232352ae1239ff5d6aca20ede..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 916 zcmZuv&2H2%5VrH*bStU~RYK|sE<~u!VJo3Z2o<)71KQP!6&GKuY;3k!;v{Q3NW1E7 z`!c);yhE;>cmWQa7&`?mKaOTR8GB~F`8>megZOj!g?tYX`igdz2lge1x&p-z!zB`! zU~Fusbc9P>YrCZ#3~gT*ArGsAfgAnCVROah6{f6$kHwSMNq|-d+_-%VOT@qOM+4S-Dn)g2TaR zdU1X+8;@(o%Nz>)UJh87AnF7ZM+7rO9EO>5i-^ly=E3eUACLvzzRl9($PG-h%x;p5 zK-6PU8ZGe++5!pM(e4&(>S=$AU=ME4GTcH4Ly!gNKD0D zpJQogCdX9#)7^&4&X-(q4NZEAm+wCz8N=-#(^QKlZHne}-WDZ0Js;}T@~IjcmlgVv zSFDz)e3B-tbP#QY9d zPmX;EDXet_-g{sfbv B+Qk3> diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/escprober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/escprober.cpython-36.pyc deleted file mode 100644 index e1232eef1d619198b1072fc34730154b4f9a8505..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1896 zcmaJ>&2L*p5Z`@Yetxz?YT6P+B?Kx5A6lcN5+GGjnzSV#n+hXET7g!tZ#S-;_hIj@ zORyX+?tv5H#F;CX{u%H;yc^=w6L(I`>~j+8M7*b+ot>TCnfcA^?6g|Z@3lXeZW8hr z`OoJ8e-DQK28bYnrX-_`QskY~$z0}U9`iDv`B}gMD|gdc7P8RtURuv07Fpg;8(EVz zDS1RhAZpKvsL62YvX%%3q*H%M!9<6a^`ywPiF2bnURnQ)4SKyo$h6$tAAGs}{`U56 ze_itV<8{dwU#%o?Uu*YitOn9NR>c#kK+xVT#3&yQOl)K?PM(f(3DWR86;F7fL;`M{ zeGYK34J4J=|#|Lac8LZ(`9r$W!lAWqEanJnE@<_OcLb~)&kS9rE3jZBObm_~%m zQ5$$9OsY!iS>!6Ri5KFnT^Jfy5HoF3k2)AN{PXJ<;}xX>)MywZ^LP{uOdMQ@aSQnFK&PM;?bY; zt1tfkWQYdv1GoOiyA5lv$PY(C=83!u2Q&sp02a@gzkRuXXZnea1JtpW&mPUMusHr@ zL7@zOI&qGFL{EYL;ly3ISP~0&O!ZAW!-HBtDJ>PmPBlsV^aFxCc*0aIy_^!|u7`<`PS*b*^0mz{zHZN zdT?O3diINBqixNkJ< zh4NuB%f-H7TNTLI-zpuRRUNL%j9=BQ7vG;9mNZe<&_ZKX#nuaK0q2EWdWTYq`ykUd zf#B;stz?I8KwSrxhQLJ>>83Nkb|H~?N52zdd%~*Z9G(}?3NcHOZ*o4J#c8!;yG8XV zucIe#AbAVPxnq{I&n$us^h+ZX(lCPG4FiSCerKax;pt1A={02}=7zvum~LI3~& diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/escsm.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/escsm.cpython-36.pyc deleted file mode 100644 index 962a836674a3e5b3e1df318d3966a6ffbe15c4be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6866 zcmeHL&2kb!5T0e11(u&cLi{Vsb2uOotny-6DN`x|6Di_pE~(AVV50nGW@D8;i&dU| z5q$@)o_GaMcFzL4AjTpgK@D_m&-BdBH{bU5^bS)>CatfLZ}js$LcWvWPa|XtY*`Kw z!U)rvq@_`<6{4Y*PIZm2RcdgJhnNW(B@_^y`-1Jz&vdxgfGdI}2-@mmx?hKJ9-7jP zO&Vrv)Z_+?3UiZ1S?p7oMp%|c0nzl3Ma~SX1pd-#|t+Ukd#Ie4p_8=F0hl5$YF{Ag^*q|A9o38RS@Xhd5 zmR57EvCKZn-RVPEk(}N$`Mzrl7s_WsbOe+;uH5B)jKIEuDvSzZkMwm^Ca8~AndV3wCxt}#}F&Nv;Qhz z+$8P7y_AjrUb*fg7v!y$u2nAn+js5?rkMOK2?K5&tOzjCn7@Fg^vwr)R1c zzf^;TxOBu7J0fSEo%g&X>4)n=m*;$vBz`i^e(1~Y^^?Iu-TCiKuHtX02H%aPBd*vH zx!6n@VV*hDf7j<+tuy7!B!do?uTCVajU~loBYXLK$b`FUC8QibbJ9ZjI=hCtZsxtnkUgY;v)WKVqX?|kn>Mq CycWLE;ak~Hs%ansD_4_RS{HRI2gzL8 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 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/euckrprober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/euckrprober.cpython-36.pyc deleted file mode 100644 index 4a77e7c40dc58008f288030ac024600c93d17815..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 917 zcmZuvy>8nu5GM5>$3cUj2v8tXyHtat!3DYmMOvrm5ZDM}bm2nCBJ0QzC7GlO*vO`A zeUiRN`wm(=^%XkxNTr4QL*kA{9(nxkyBi-I48DY4$)^CJZ)j(DV4s7i3s4L(Tp)o7 z#>RFEN4Uhbwp)0@C%(14A`l@7F?xrX&w_iz0*+gkL@b=6IQotuRE)dhX;bL@%|`Rd zO)BSHU&(60C3ub|70b)zT&J2()9fZMIh;Ou`+jnHeUU3I^F^ccs(f9h#YW`{oI~rJ zPp1{*MFt=I9u8RNAnF7ZM+7rO9EO>5kBG}$=E3SQACLvzzKzo3$P7#~%xZ#6K-6+wO45H8ofuJ6fiK$8f3)UkGnccEA1m;w<(J zrREK#-GEY2v8FKgkkWON7QM%2B!>`h=W9crH2+KJb@UWO8Qc+$0(&xx_sAo$c)-=O zV~a?RGTWBQw590V(w37PT0(akv#)0WQIrz4+BWq6P;}8*5B`~j!x0g54p3nVbX z*w{|t2$#6lb_-AV#J9Fr1R^9MMsE=FS#XC~z;Wx6h=p?$N8d4oig9;5Z3>;g+Gswx zN#&gDOIas0e;n%(3jhto%|-%hTsFLI@2zG!q_l`qS**r;5Ab7-CO z>9k_J$l!zD!vX6YM4f=*h+u|@!!UF15OJByJXk&E1G1pow^4c=nSp7BSxt}$hx4I%{#aYqPwR~gA?yd(R*x0atQHuzBc4Z^S^{%M~^|2!5!f!uqU&4k30~Idt5y` ywus~?vu&wNTZ+CdZ8^!IC3L4T`+5ctMJZvcZA1SLMHij*;9r>jwA2r=oz71Xk=*A1 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/gb2312prober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/gb2312prober.cpython-36.pyc deleted file mode 100644 index 7a9cc5cab17ae467d6cb4d6b8146e6fa6041f6b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 923 zcmZuv&2AGh5VrTfArVz2dO&c16MJY^G?lm@RGLaXB?9HzjqYoWnA>b>*n zv}U|4;EO-Q1M3V#KLN!N!3+_PVdmW;;xnHGum&syY*9Dt!}L%Ji_{Lg+9(qc{Q{Ih z*Z2l)fd}Ime+xDZOt?j`MmOj>-og`xAR?ZniLy_-gi=unL#gs%t3ps@K;>PkQ)QVZ zhgANP--fF$R9tfdX$G2?AHE6+k)TCR;8nr;TI&xLK;tp8PkEOD*&c37(MA2Hhg1gZFL(wI#d+={;k2>;)*iG*jdkWgb diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/hebrewprober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/hebrewprober.cpython-36.pyc deleted file mode 100644 index fd3124bca391db9507e389dbfc8a9bc55f6dd9b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2711 zcmZuzOLH4V5T4nWSL>B5KNAuHCO|+CMZBOnTps z{J^po3HgciJr>AUp@j;76Hcq7Mj53j8&#ubGP7neOOMT}U2~WNvc*QY&0OxV1Rr4@ zciAXUFrRxY$wyg=`)rISS(>NVI3HsZJk2KgIGegb_ynJPNcg0nhbEimQw5TlKBDmH z42_bD+eKLrYF#!qh0GX{Bk~QkDk4uT2_;IZQZIv=dmxL=pdtCu&+y*SF9^RP{D$y5 z!XF5KBK(E$H^M&%HbD8~sjqMR*n0SG%Udq2&0V>2>CL$-E&rfW=Z%AK?)-&Imr9`4 zdkm1SLJL;_1YwjDW^l@lhlH8ja4U$U~mFxw#kll2+Ev*Et=2R z5?_kkAgI(UDhQ&nptjN|S4zcd{DCMH)b3Qm{odG?A`}W@YK5Y@^(B$Vz`*18v#Qq2 zHY?4!&HYN1&t05XdpnoId7RQMxF;Z1GAqU2z6e#AZ5B(r#j*&qCCDHbD!Z-SYU)Iu zYu=X=VE1!qp$kB$M;-XJru)4=*QNdRFgy$IaR@>XBZOZE0@2g~F!M)f`!Su(SkbYd zcD+(BR&hslLQp6*q=;tv7UEFE^G;A(m*QUJ2eoTr3p8<*p>hUH>ZrtU9EZ~YUqI_P z1Fl%$%*22*IPj6C9W^$7gmDz7Or>2)!b@V%-_yOZmh7Li$-JVR$*ajIb&!iBU&1E#jS+F7N+kT zFyHYYHN0KAIs?R!k0y>$93)=0y0q<>wwGVqSncrc%1FE`BlAQ@XFb*@skaw87wx!;Q<3%fQ*gwUN#m$gt*i*4+A8m`4l7fQ3ie zzP8%0jW+PO>1}K8&E6#{0UN>0%M-v`>MHI70ScDqh>)ip}!!tbU z8lLGJY3iG4)1y;Hin`RZTH^!Bz;}C<28s60Cx-#Jij5v84`>^9{;n;LD-)6d@+jG* z@{F={YU~~75H&}z2W?1=a(69xU2B63+C<*c+7tp!L>vP2K03C# zoDbrIvUqc0BUoB4+*-&l=Ay}!wHwQeuw`%Nu5IM*2Kj~6Tr_cKxo~@MP8SlE!bFrB z^{omQ^^(wqC7M9nt7}WSm7dvdv2pd03->pftIG&T!x2wwlTcH!eAJ6I@h|WVku))V zh_VHh-7;O;lP#FDTBimgKWw9yg@J4DC9sKE*r9M34A`KvFf#uiDFdPik&G`sT{+Lf zD|*jqSL03e^a_reGw`{%g2M($0rl3*6EyWU&SysPPDOX&PW1vTvint({UF$b%QRlm zcbvW(ztg08Tksr3ka_woJPnXyom4`0!Ezqor0$; xw0r~S=MgR-oJT;aee|_Acr8Zm+i_st!Tq5Bw)hkdA-5p5LqFTHEd%Dv{{W|BWk3J` diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/jpcntx.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/jpcntx.cpython-36.pyc deleted file mode 100644 index 260e0edb3c27b8cb58bf8539a8a7480b3eecc7b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38518 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 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/latin1prober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/latin1prober.cpython-36.pyc deleted file mode 100644 index d42b714677f9f06670eb5897f300407a69ac7cf4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2743 zcmc&#Pj4GV6rb6DUT@Zplcs4ys6d?RLu$1N>ZPJdT~dS+C#_SEMnS8MXYANn|H$=BynXZDo7p$N-<#RhLc#kb_bVGL z5b`_8K9rDk7{?uh5KcIaNS887Q8yx^Ycf;oW@L43W`k}qhubX233Iu_@;t{pu+4Cn z`8>}G++#&P!)As1zqh=&eamL;iQBjA{2U-qoI=5ekuP$(qxX8l=py)w5OLji+wqLJ zYCf!YHA=NMcdOMY%a>^XFD4pmCdO%yf?2SpBr z3!(x2^1;Y;=M+1H?CfV9xsAWq(jGK0;gt7I>rP7IDz@JRyHLDCTs*XEP<5e{29(*l&ye}(K91lgT;>sXw9EB|r zR~i5x7pfBJOa~gpM}u!=5!O9`9wT;ydUSL*yO~G-WOVbcK7=_6b`wxeTT~efsGG{_ z*y%p?{*0PL{L4;a?(BV*%m&@9FjmNCH45W6@i*Um`Z}m?>;<*A+esnlZbJIi{;;Qn z)VRo5oK9s4UK)s0%;OMUP3SRxf>4M0bTmJ;1C8WV`bdl>1^3J;P+-(X{z)64JBe2w zKl%8H{=m&&OiC@G0)!I?3VLBz9Kk9v@<-_C!PKX(M>cd61Y%KQ*I8itP!MEHC-jtl z^JYw6lCM5LH533kHYRk5oSMpn2us-juz8Pw#Tr|j9vSk5ascw&F0SB?EgO8?cuGw2 z3?ji}9hbgDUw(q6W~Nj~eW*OP+-yexa&XdChk@v|qIP^3L_&crPA*Ukkf^=Brb;4U zNh#fU*edFmOXxhddr#wF#L4R#IoJ}3zGgeZis zg!BWbKF^^A>zdKN4>p4f=&?ZN0Vs{m*|s-2dZw*^ESXaQ^?^wf~S1#XS zg^SB5z0}h`NgfIYPFqjKX<<2yes>TmeSqa%$efvPUvA1fTHB~snF(hXMD+_4J2*tG zz9ZkmZQe(*gaT>HP^=k8o)h<3S}mVEfKl85;lnBQ4a>0TwPu#+e`$+(_;Y5OW&I5R CUmTOX|M$GpXn23r{`7yZGxj%o z?Q?)Xz)J4{2qyTL`Ak^C9`lLiTbyubY)>5D;p}TBDx&(5iK=vR+ph@TW9`~2yky;1 z9I(xcr9l#>I*fISLu2 zS~xp`L9W$R#+Qns;1q5UL~*2ppx6i|dr_)Y)Su}niNB1)@!4Fe!V4z5iHPE1?||_A zFx6xa{C840KKg~JWeED`u%jo_&NQ0d>Cd9ExN~nupN>9DcZg(G@Pmv+qB=^R&Sa|7 z&NLjHghQEj1`sEt?o9fGrBY8#K<`e^R28DhwbTV*+~ZaJ=Ip6}+8;dgBUp71WzX*IPL|uVkokP=3u| z%N8YaO*r>yUmp?IT2{%?>X2AcV4ZL_8Nnv|$-;|^`)}b@hJmojE~IcH%^h+rJdlx8}wSG?6vuJtE}kOaim*PsYJCx-Rh&WTLt$Ng}J?5 z*kc(N6&1!qX$s5tV);S`7&lrf8$5nhKBC7(H4w5t8y0qYmKN1i3&<=gKdK0fD`3Qh zR^aX?`at@%VA3NQAUx422(J7pnZ@FX1_d`t`|Bq4Go@r)mJLiXC2fkkaE_!D{t_`6 zYkW`cNi7E&Q^CJ6OmraQWHvkwM5x1J#RyB{qe#ejApN!8<8PiF?mj;Z4j(^zgv0(` zyJ|Y6aKeYPBi{-4;W>}|E5MMU3nAzXcw_qyPW_ diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/mbcsgroupprober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/mbcsgroupprober.cpython-36.pyc deleted file mode 100644 index b461038415dc5245b570911d3ed020be8197d306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1020 zcmZ8f!EO^V5VdzV$!2#$+Q5Mm_aLA6_PJjvUWpKJK5U1AW#oT z>CbTDFW?_?<-{*=V#Zn0s9wFvd$Z1Z=8e0JM)b4xi~Xn(@|&!!0Qe!meuE&0po(b9 zC`IlmPy5Vw+*g6Fu!`e>s_Gi6IbKnruCu!1RTb%&#g5lhq8qH?c&HxeCTlugR~veh zZBlYfL?q%{B4SDBK5L1jPuh(?6v}ARMXUF5VEQsYHnSo-Gqa&Ikc}?RU+>+i{>hvE zO2w}(dM9TqnH(SObf4|4G`@cO{!aGJ_ILMJGCCTMp05<{J^!$jDb%xC9pu)Q)%ojd15G5+z$jOA>kU4mrdvlWefB;YdQ~@+#9%#(kn{0$oO5n`kOl{8Dj2F5VBW;wv8Ik8g23ur zFPpQAijh|4U~OQfy8KQ|6E^%k@8mk`WaDgWSd5j}+U@4olNYv&DF^;ZPQ}c0jJz(S z&21+eq*sHHw4D^@CS=~x!_wK3l6N6>Re?} zkzejDYj?h~$WF$#OrXasmPI-#+jEAqWHiJ(S8hW4-KHy3W^fiPPBXZ9Wd;Ysq9I(q mGJ!*Kf670X8Jw6acdaEHlEJ+bFD>7A7|i-kh=_tYQkmsL&s zTXX-5XxcY$ZTy+gG_LVTOKV41q#b3^c8tX$8o$KiA}S&x!V~bRT1?mt`(RwP<_t^l z%PcA4JSh?)$x}T2Yl5Zt6_&=iBnc(rc$8;cQhUj_^~7i%>XEag#xCtN?y|b=;w+ye-P3%I%{T~{@7%Agzf(8fqm@aP zMz4MuUE2n-0Cb<@Wp-Z7fbMhRJf9-n7x*1ED|L5ijXGJ0`cZ>*FOZWL`CWEN%!2mc=u&;keC%q?qD?v*jdt4*T6R<+Ze@`Gj5N6?RQr zfjL*jHC`fHuJils2Fc3;?Pp68G-2G}4w0i(L@Nn!h|NKB`mMQWH}$Fc=o_%*CZA`w z1ZWmF#Vvk@Y`M)JusO1pq6FA!Uf_9t79^vFWS4!`JoJy#ygAT)1v71%9E?I+oSfk| zj*-LWH;(=N#^Ii*^}~aNyx%zZg__^E?B~;d;|HRx{OyHr{>94tA-f~y_ytiGcla#D z?k>Mr)5;6`P};R}Y%eKlW?eVov#RS`I()t`jaOnHp91?)Byl7$B=8W>SbS;Y!{c&- zWgD%!VXW8Rw*<=(|E%6Hw{(^@%(^M$K)&&@uCIzsy4s6x*4tt~iK0?S(nvB$vOrj3 z`SsIBPj{2mH_MfmujS{;+HU%%ir8sX%pY0u`O?DT!v&V9ecWi8?_R#B?WW(XKdU_a zVyS9#tJVD+O3WiEAelgN3P};jZUPZczMa#+0XjNibb@}-i3F543O1n1!+~Ke^^gSd z0R;e;fj;g8m#H3-6XpY~IpsuW*`l?KLt%Y{q(7V@c_ix_ADjB1r2l;kD&^?r`PxSh zMtq*@V@zSNYbADzX&*&Ee=L<0-z_i=sJ-WZ^-xtCpN?uAUiSV*6=Pmb z$5*g9v6UZLp7-qmzLQkjNlHixvolE+ zN$1kF0qx&MqSO?x(1E2W0mRY0ck~T^>FdGaMTH3KCtjf=LPx-sD(J!<&-8KLWV-)w zLk2q!#IQ)7w9t=dLWWkIunKbm0@|lYI`xtM>>a*thkxA;_#ML`!n`>te~;1Yg`nfD z>)0;UpJv9BQx$8J@92&WOF#NlKOG&Oqo02&7#@+)@rcX;WD=)LdC6(KEFp2cRxV1u z7^IXAHQp~43;9!Fj)~# zDlNMXAh8_w)Ly;X;-bYebliv_X~_a+k~j}2PhAcQPA9#5Em4w16meb@b-7V1YYqxn z3$?P=g<4s2qt@R#C}1tr`r9tl`db^7m8YZ#ma%xiO-a@REXY0^nXbW+D#E3R15^8__QMo)0p3` zH@>fb5XO81Qi%(5zWu&o814JpKkuc#YH#tKmiT%WL>nI=8%qf|S2jY6$BU6-q!f!s zqY>HC2S|)3N)gp&hCm)4}_4{baOI~}>{!Q-f~p0 Ziqld0V7RPQ*7fGRHrsyg|LM+}e*y0~HbDRY diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/sbcharsetprober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/sbcharsetprober.cpython-36.pyc deleted file mode 100644 index 3b59506f98f0d9d48e1199a205b48395fa8354b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2693 zcmZ`*&2Ae<67HTq4o9R+JMxbr$66QZc;-H zf7H{oVud=%53twG8w3b)*xT*{Y~EpRK~B2t=IqPvS4~E7yjBxkT~l4vU0wZk74MYG z!M_SWhX1(4*w5^R=77J8o_z%(nBXZ3nXrVN^1c;XoOma-`%dT>-c8-U7kc2mupkPd zFZ{45ieVsva8AsHC0P>IH5Qg1Fi{faXH1l(b7F_{f;U-h{uH~g#wiD_@x0g`4l*4N zbcT=e+Fq=hQa@6|U8x}O4^=#hhDw~?g?hr^YPVzBzgN27{*BsqE2qyfcS@&dqn|Y! z++FnSBM`|#E?8)Zvap5ojEA;xh4+kwjwlEpqbrIc!03rNQNmad7CD<=Z6;w(0h%(RdcSKjP!J*a;Im zVRgB-7Z}A(P#j%DJwpp7igx4lzpzvWQND?%nuj2ti~5^!rnlj~$}ct^Z>`pMqV4sl zS^smicCVF}qkdB!tPRHljWCmXYpCNCvfn=F(&;MJ5g6iYTwS2eD5_KP8gaBA;VdhG zAQFf|iF=60(HrN*!d&93191au04PjVi1zpizyi(^d=Z>EwAIMxX7@qJsM)FvqrB3U zI-1ENf`OWY_#CINW9lw?=7BJ{8(2p-&vWUo-N1i>OCX=g(`*48pYRiY z%(Z1kJcaBgq&A)C>wix8efF2XALC)b!dhh7nb;?=Ja#6IcK4YICwN^wPuL#=C6Nbd z0n*$^{h8E0FX8|DRDm!+~PR=5mxY)%TT&EQYT)pD|&q7+7crIIH zw4%*E!5RQy@!<9sWPvm2a&La$`YTr&-+{ic@67nh2|F%K3i_gvd=gcv0wBS4^US#uco6b?_0auI)2gXJ(botP0ozDVMDDwT^vew@7wVe~?oAMtE^w z%26FzE6MgYr3SXcd4fc1XkNlrJW_ObVP&LbTM9X7%dJ?eKr0^{|O!VGxtRp$~I7*GnS#GCt5Ecn`s1HyijOCT)ms_jboAi96?VbDe z9koc}x#qpCN1OGi`7o@j*CA1tiCiN>FH&74LKPtlj1gZ8sX(J&rR0G7+(8fcCD3`(1B@Pe#hM4bgm+&-x*{E)`xd@u zoEfd7>*wVJ+UzWY5vC}@CJ$_a5qS3ov(~<&HUzzL9?@=U0As^2V8rN?l%iRJoxG8*@{W@U2K5%%Sw2;-+DSq+Hv}5m?ea}9iVU6CEbM| z{imIt6it@AifCzc;f>);an7UKM1ZkKG zj0-IKf$#b6E0WhPsCO{rGvJqJWno&rr++)V_OL&~+o!js-Xu~b@-~q_5TQz>t`MO* gZ{%x%R!WW{rS%S0I%STfB*mh diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/sbcsgroupprober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/sbcsgroupprober.cpython-36.pyc deleted file mode 100644 index f619196c22fc8bb6986df2c9fe07e50157b6dd1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1584 zcmaJ>%Wm676rCaUpeV|EI<{LB=vFCWC3fUwQ51m<)Ct-c1!SPWYzRu6%2Z|~c}OL7 zp{$e->8e0~r2PkW*;Rj`tKNG@R;3~+g*mv7dEIl*=(JYze=Gkk{sp{lMa?e^q*YZnMA2% z^m-OcmHXe!lIOAS@D=2+M>XVTI5qtP%!Pc)WIJTLOFn5You#{SI9swwW71i2^v7@yitMi#>JCbBufD$SJ}_8&?uB78 zO|mdFF1Q9uGDUY30EkMcEzPNEVX%q8W-7B#qYlG4 zDLBnb^2bb0psB+wBvrw@JF#js42ZA)NE~buZKN z-aMH<8ZHtQKYDta-ACUzJ)Vqrf1~sLZ(^Tn@6KJ(O9Ov5xlZkX1#PcO2_!r z>_v~~cLt^L1&s6Ar%Jf%|EsWfpx(3o1Qn5u3O2HsUx%VY31XjQL47?QQ20Y-OyA6&%v;+4a!J(U? diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/sjisprober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/sjisprober.cpython-36.pyc deleted file mode 100644 index 1a54451248385904483cc84b3394001a262e18ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2240 zcmZuy-EJF26rR~#uh;ARxNdQr7Emq#$ro)vt%QUsRO%F3)TC9@3N!+(HlB&I&hFZo z9YYd1+_>ELHMr*);0?IgTdw*FT=AXRv~hoI&CJCp=5n(pu&V-_m|s&jJxxx}G+&P=uBa(q^_K zmN@&4$%YJ{GZ`vp?uuo}cUiCb5;w7(mmG7Cm!0itYLdGrM)eP3y{pV)J>F9ql6HSA zlYF>qVxzX>!9kKMaJ#$TKiJ($3Zs*~sY%B9H+h_%6iETuWs>#BxlzYvf!!qb?)LUr zsuWs{!8k8WoSR}mmc05oAnsrkw=gLtxMaeSTsqI0aHT6fte&h%A8Sq4Wq{SM{1bKA zgl9`-NH;ccw<3M>^Rzhjp0YJm zCL*s9$0(08)aiR~ZsUM2Fbb*%#!s&;-23(s1FHiyN*fJpLJDIHoAEh6b6)V{w&9Y` zoVl~bUhtotGuH;io$;BwjtV>TW}fjzwL?cAVD|K}U?5s9(B?sr98LU~S5VfUuo7T&tEB324 zt94P!zdMlD=0Fv2Kd5BYH*Tx6VY&3ypw(rd{EB*KpVhJ&(7lizb$&o>W2)i+dg#&jD^H<=J?Opqj;8#dUfrlFdE+248)&An-iXb{ z9$;&uT+E zzc3P~m$hGY0!1nq2#kjI&e&`#QI9eUh+sT01sH+)c0A4H0|O2u+K9`xl%`s%ysAo= zB7hPPAvvdhlm1CM00Qf<)TiV0>RsT`4Ma( z>@B{+!~hLfcnjU>bKkj&FV6x7%>*1PyaP$wX+x{aL#OSu_!9I3=X7>gQZE?#;SC)__*g0Mu2AoEeZjytL%P!o2;&Jtq6o+yWn(!_iC&7LqiLL05{so3&QXPEid<#m z1=Lx};#~vMPcba;0&?qt7r4PEn)tmHy^ck!W_#!ORh79#Qqiu`W=kWhUSRw1h!!cI z`)nU!`|=2XG#MZw_N5U%jx36-dZd`Gd3)tTgkIZN2Dd9uzy6R6C4>%;&ewnUf1f7` AzyJUM diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/universaldetector.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/universaldetector.cpython-36.pyc deleted file mode 100644 index 28b6aa50dcc9f2c0a362a7ec7db3b1670c9574aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3220 zcmZuzO>7&-6`uX!a!FAXCEIdjJAvvVM%ji|^iwq`TF0d6gQE9deJYBcTNLOqr$y0APr4QDO$WQ*o24i!(k|xhoA**EWJ z=0``fe@*`__|q-M{>_FS2mC`c^#X)5ZZ%nC1(wCQ&7Gzl*yig54luXrMyVhLjPX>{ zi_$^b@Lto8GC{`h>1H+>2}b(kb3u;#!6>(bJZHfe&jf`hjA!}C7mSY_+rc<@Hd!%u zVqx*36=$mLmeQ4$Rwod!4Ty4U6efc|j{{Hcajftx?``JT+hiK{p5WxZqJGHsR?JpSq+Tkv~E>Cd}-xN=CA777W zu^;l>d-Znf83yE7Jn(DEJ zcZ{K&VR~mnr7-TNpO@Z#raW-py50NLFN?)=Y)cWRtL>;$Z;H4O?$&F&<+?uGLYxbQ zst$S+Vf1xtU`%wuJSt8}p@fEkT_u`3e`In33!Z*5qodADr`{=Tck4}FTA0`Sjqj;> z5}6jh5G~%8Gg9n#h0pG%YC_FaVSX<3O!v$}=oky#@4SrtFs!%gIt)u#MP)&l zmBZ`dJ-l_vsQ1s*2i7IalIt4legcMEm)pO$VMWFrP>Z{uaAHtL6QAO+Z|K3sY59Gk z4WDd%FbO{Mh<%njvU*k`+b@5boPoDd!{p{E+OaQM)i$rUYH=2xx>M)qi^p64BOKn~ z!G_(Yj$Phvi69+Do4O)(oC%{RZT+aCD{)pl>q_w>Rjt=?O3`Yo)74PYBF=`J1r>o{wE(D!r!}qXMmsb z{5j6Y$Z7DGDPEXjuPk}b@Z(dAPwctWHyXw{fMoT^o(*XWe6BG{wnA@3=P^sRMPr9G z#-PC(g`Rbj8NHSsCq3-wI%l+F^a^IoxS91I;3r;L>bLsZF<}$bZ(OHU^o_|%L&>wNh^Kub!|CvWi--<4C~W2Y%v5)~4`hBy~h75n9<>mhdfk$i{5xqf$kE?iq4 z?vK+{zk$ z^F0D7$q(fcs(=sC6bE6*BChRQE~sZu*m>)$6&%~j*$GW#Ioq@D82y};w|r!s>y~Hd z?HqU?yl)kZlzNntCZL-~JDj|no9M3xd7l1*nn_JI4h(MEPfg$~bx+$3N8Z(LBh~Pz zx+b-gn>qlEw5AlWLIKWGCNMIPqIesO(#LDgjx6pS+4wpKA3#2WFt~f<_FUE3-|4xH z+%YtIR?psZ1p?l=)?|h1Ykgt2T9)aJ98R>_(;Nk5T8gT`4TOIqyA`J@ zR9CJHxq;6g-o?nIkf`b1x}J_uhof#Zt#?rqc6ZxNo|Ptuuf4CP&x_pj52xQ(*yGc zFK@0qU3(f1i62HL;stjVB z8xH8f8C|$4IVDjzJ6@96a8+`Ca%SVK2nBN71cB>bQC7_w8@Qn1enYVthN$ad)aKnL z@wqVE?^c=#BB@>{Ri465E)qG9N5h!{p8-G`igFwFl=gG}V@cBDM9j=F$T{@nH$j42 z)7+O6o0;Gb#-i=2s?n9XFQtGA#?;rOlr4e`ZjOB|%0ZH@X7am4OeXsdapoXt{j0Vc a`#(tj_W>m~MJJym0lMDN>)VNqUFZLC4*c2x diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/utf8prober.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/utf8prober.cpython-36.pyc deleted file mode 100644 index 736a9bf95d6a7356523fc7ce587ec43228eabf37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1739 zcmZuxOK&4Z5bmCr$BykRNhCl-hyxsq$XX(iHis2i^4QHv*ol&?RvLju&UD*rduD9+ zv{8thllKSgk-xxYe+K-AIe|Fk1ZPfs)su&JwYI9dy1J*jzItueYL(whe*`~P82g(o z{2a(nK-nRfV1mai;Q{9)Td|ecfo)_vb`m#mjqJo;QVL3t-N1jwgeOX`nJ7tnZU<%I zpRz{zn!{X!=jCXWX1bH=44c~CtByLA`dE$5rGjE*ZzTF@?^JiRY;~en{ZvA`^y2L4 z_Gzm%5;E?=41Ry^M1@dr3(FHwwgo0xzy%8|!G-mj1-7t-gVhnP@UXg~Bz&x%D2oc# zl30R+)x1Kl6rM!nEd6LD+k2qw3oy+Fe8%Pohqkmmha5UHHgM;-Dj4kWcEeLPZsvX% z_S3!&Lq#D~F6k;^a)YpyyGmwK1D=z~xceJZOStjhQBx=5=D0uJIG^@ov9YzOCxb`X zCaDaCKg(2%R8z^xRAxGBjyut?)00^oJ@V{KW zhx+i=%MWAz9N*ky22yLl4OT*K8^l)onk+XQ16!3LD<3Scg-Lsw9Ccf}l;#FkD76Bm zfvT#srR!gV7TtTW;GPN6JHAm)Og<>Af+OZu`_cvIjcsH1!w=;TdQyiJA_P55JBe)4 ztCU>EFF#v&@%?*|xr1x;9+7$cR|pq_8Q*6=onKi93>Aho=U4X3*4DrtTIw6DD2~uQ zW)sh7J!p5KExn`lq4kV~@*IGMF6|sPs0iy3sxPceyq65;OLG+6po-gXu&bF}edwq+ zw-$>#2#DRjCa0C@xn+}$ppwc99isKLRCE}4@<6GP!rC6`mJCW^V)_n>=Q@MJmrqC2 zR6N(v;6&+Q)x>71luV0Q#xhlPGFGM&V?3zHeW_)n(Z_k+d@xG8eIe6G1}mqBM<-`{ zFV4cV!;=GSe%MFdP+jCsXLs7oc@!)~_cNd<6lx4pExFT`QhbYTMukb$Tm|{ux#M-d zV%2$_`_|?1LQ?6wyDFmgBr=J73_M>OVyBSme?lf!@Aar{t?a91$)IJFJ4!=JM zk57(vaY)z$Z<@yaq0D*zJ;3TC93Ox(Y8Ga2t^hO8eY$||-6*#kJ`EqL@i4^536qhS z#w1t6a5C-0#fg~=MY}G;wpt@b?=ARn7kNd -# -# 128 --> 0.42261 -# 256 --> 0.57851 -# 512 --> 0.74851 -# 1024 --> 0.89384 -# 2048 --> 0.97583 -# -# Ideal Distribution Ratio = 0.74851/(1-0.74851) =2.98 -# Random Distribution Ration = 512/(5401-512)=0.105 -# -# Typical Distribution Ratio about 25% of Ideal one, still much higher than RDR - -BIG5_TYPICAL_DISTRIBUTION_RATIO = 0.75 - -#Char to FreqOrder table -BIG5_TABLE_SIZE = 5376 - -Big5CharToFreqOrder = ( - 1,1801,1506, 255,1431, 198, 9, 82, 6,5008, 177, 202,3681,1256,2821, 110, # 16 -3814, 33,3274, 261, 76, 44,2114, 16,2946,2187,1176, 659,3971, 26,3451,2653, # 32 -1198,3972,3350,4202, 410,2215, 302, 590, 361,1964, 8, 204, 58,4510,5009,1932, # 48 - 63,5010,5011, 317,1614, 75, 222, 159,4203,2417,1480,5012,3555,3091, 224,2822, # 64 -3682, 3, 10,3973,1471, 29,2787,1135,2866,1940, 873, 130,3275,1123, 312,5013, # 80 -4511,2052, 507, 252, 682,5014, 142,1915, 124, 206,2947, 34,3556,3204, 64, 604, # 96 -5015,2501,1977,1978, 155,1991, 645, 641,1606,5016,3452, 337, 72, 406,5017, 80, # 112 - 630, 238,3205,1509, 263, 939,1092,2654, 756,1440,1094,3453, 449, 69,2987, 591, # 128 - 179,2096, 471, 115,2035,1844, 60, 50,2988, 134, 806,1869, 734,2036,3454, 180, # 144 - 995,1607, 156, 537,2907, 688,5018, 319,1305, 779,2145, 514,2379, 298,4512, 359, # 160 -2502, 90,2716,1338, 663, 11, 906,1099,2553, 20,2441, 182, 532,1716,5019, 732, # 176 -1376,4204,1311,1420,3206, 25,2317,1056, 113, 399, 382,1950, 242,3455,2474, 529, # 192 -3276, 475,1447,3683,5020, 117, 21, 656, 810,1297,2300,2334,3557,5021, 126,4205, # 208 - 706, 456, 150, 613,4513, 71,1118,2037,4206, 145,3092, 85, 835, 486,2115,1246, # 224 -1426, 428, 727,1285,1015, 800, 106, 623, 303,1281,5022,2128,2359, 347,3815, 221, # 240 -3558,3135,5023,1956,1153,4207, 83, 296,1199,3093, 192, 624, 93,5024, 822,1898, # 256 -2823,3136, 795,2065, 991,1554,1542,1592, 27, 43,2867, 859, 139,1456, 860,4514, # 272 - 437, 712,3974, 164,2397,3137, 695, 211,3037,2097, 195,3975,1608,3559,3560,3684, # 288 -3976, 234, 811,2989,2098,3977,2233,1441,3561,1615,2380, 668,2077,1638, 305, 228, # 304 -1664,4515, 467, 415,5025, 262,2099,1593, 239, 108, 300, 200,1033, 512,1247,2078, # 320 -5026,5027,2176,3207,3685,2682, 593, 845,1062,3277, 88,1723,2038,3978,1951, 212, # 336 - 266, 152, 149, 468,1899,4208,4516, 77, 187,5028,3038, 37, 5,2990,5029,3979, # 352 -5030,5031, 39,2524,4517,2908,3208,2079, 55, 148, 74,4518, 545, 483,1474,1029, # 368 -1665, 217,1870,1531,3138,1104,2655,4209, 24, 172,3562, 900,3980,3563,3564,4519, # 384 - 32,1408,2824,1312, 329, 487,2360,2251,2717, 784,2683, 4,3039,3351,1427,1789, # 400 - 188, 109, 499,5032,3686,1717,1790, 888,1217,3040,4520,5033,3565,5034,3352,1520, # 416 -3687,3981, 196,1034, 775,5035,5036, 929,1816, 249, 439, 38,5037,1063,5038, 794, # 432 -3982,1435,2301, 46, 178,3278,2066,5039,2381,5040, 214,1709,4521, 804, 35, 707, # 448 - 324,3688,1601,2554, 140, 459,4210,5041,5042,1365, 839, 272, 978,2262,2580,3456, # 464 -2129,1363,3689,1423, 697, 100,3094, 48, 70,1231, 495,3139,2196,5043,1294,5044, # 480 -2080, 462, 586,1042,3279, 853, 256, 988, 185,2382,3457,1698, 434,1084,5045,3458, # 496 - 314,2625,2788,4522,2335,2336, 569,2285, 637,1817,2525, 757,1162,1879,1616,3459, # 512 - 287,1577,2116, 768,4523,1671,2868,3566,2526,1321,3816, 909,2418,5046,4211, 933, # 528 -3817,4212,2053,2361,1222,4524, 765,2419,1322, 786,4525,5047,1920,1462,1677,2909, # 544 -1699,5048,4526,1424,2442,3140,3690,2600,3353,1775,1941,3460,3983,4213, 309,1369, # 560 -1130,2825, 364,2234,1653,1299,3984,3567,3985,3986,2656, 525,1085,3041, 902,2001, # 576 -1475, 964,4527, 421,1845,1415,1057,2286, 940,1364,3141, 376,4528,4529,1381, 7, # 592 -2527, 983,2383, 336,1710,2684,1846, 321,3461, 559,1131,3042,2752,1809,1132,1313, # 608 - 265,1481,1858,5049, 352,1203,2826,3280, 167,1089, 420,2827, 776, 792,1724,3568, # 624 -4214,2443,3281,5050,4215,5051, 446, 229, 333,2753, 901,3818,1200,1557,4530,2657, # 640 -1921, 395,2754,2685,3819,4216,1836, 125, 916,3209,2626,4531,5052,5053,3820,5054, # 656 -5055,5056,4532,3142,3691,1133,2555,1757,3462,1510,2318,1409,3569,5057,2146, 438, # 672 -2601,2910,2384,3354,1068, 958,3043, 461, 311,2869,2686,4217,1916,3210,4218,1979, # 688 - 383, 750,2755,2627,4219, 274, 539, 385,1278,1442,5058,1154,1965, 384, 561, 210, # 704 - 98,1295,2556,3570,5059,1711,2420,1482,3463,3987,2911,1257, 129,5060,3821, 642, # 720 - 523,2789,2790,2658,5061, 141,2235,1333, 68, 176, 441, 876, 907,4220, 603,2602, # 736 - 710, 171,3464, 404, 549, 18,3143,2398,1410,3692,1666,5062,3571,4533,2912,4534, # 752 -5063,2991, 368,5064, 146, 366, 99, 871,3693,1543, 748, 807,1586,1185, 22,2263, # 768 - 379,3822,3211,5065,3212, 505,1942,2628,1992,1382,2319,5066, 380,2362, 218, 702, # 784 -1818,1248,3465,3044,3572,3355,3282,5067,2992,3694, 930,3283,3823,5068, 59,5069, # 800 - 585, 601,4221, 497,3466,1112,1314,4535,1802,5070,1223,1472,2177,5071, 749,1837, # 816 - 690,1900,3824,1773,3988,1476, 429,1043,1791,2236,2117, 917,4222, 447,1086,1629, # 832 -5072, 556,5073,5074,2021,1654, 844,1090, 105, 550, 966,1758,2828,1008,1783, 686, # 848 -1095,5075,2287, 793,1602,5076,3573,2603,4536,4223,2948,2302,4537,3825, 980,2503, # 864 - 544, 353, 527,4538, 908,2687,2913,5077, 381,2629,1943,1348,5078,1341,1252, 560, # 880 -3095,5079,3467,2870,5080,2054, 973, 886,2081, 143,4539,5081,5082, 157,3989, 496, # 896 -4224, 57, 840, 540,2039,4540,4541,3468,2118,1445, 970,2264,1748,1966,2082,4225, # 912 -3144,1234,1776,3284,2829,3695, 773,1206,2130,1066,2040,1326,3990,1738,1725,4226, # 928 - 279,3145, 51,1544,2604, 423,1578,2131,2067, 173,4542,1880,5083,5084,1583, 264, # 944 - 610,3696,4543,2444, 280, 154,5085,5086,5087,1739, 338,1282,3096, 693,2871,1411, # 960 -1074,3826,2445,5088,4544,5089,5090,1240, 952,2399,5091,2914,1538,2688, 685,1483, # 976 -4227,2475,1436, 953,4228,2055,4545, 671,2400, 79,4229,2446,3285, 608, 567,2689, # 992 -3469,4230,4231,1691, 393,1261,1792,2401,5092,4546,5093,5094,5095,5096,1383,1672, # 1008 -3827,3213,1464, 522,1119, 661,1150, 216, 675,4547,3991,1432,3574, 609,4548,2690, # 1024 -2402,5097,5098,5099,4232,3045, 0,5100,2476, 315, 231,2447, 301,3356,4549,2385, # 1040 -5101, 233,4233,3697,1819,4550,4551,5102, 96,1777,1315,2083,5103, 257,5104,1810, # 1056 -3698,2718,1139,1820,4234,2022,1124,2164,2791,1778,2659,5105,3097, 363,1655,3214, # 1072 -5106,2993,5107,5108,5109,3992,1567,3993, 718, 103,3215, 849,1443, 341,3357,2949, # 1088 -1484,5110,1712, 127, 67, 339,4235,2403, 679,1412, 821,5111,5112, 834, 738, 351, # 1104 -2994,2147, 846, 235,1497,1881, 418,1993,3828,2719, 186,1100,2148,2756,3575,1545, # 1120 -1355,2950,2872,1377, 583,3994,4236,2581,2995,5113,1298,3699,1078,2557,3700,2363, # 1136 - 78,3829,3830, 267,1289,2100,2002,1594,4237, 348, 369,1274,2197,2178,1838,4552, # 1152 -1821,2830,3701,2757,2288,2003,4553,2951,2758, 144,3358, 882,4554,3995,2759,3470, # 1168 -4555,2915,5114,4238,1726, 320,5115,3996,3046, 788,2996,5116,2831,1774,1327,2873, # 1184 -3997,2832,5117,1306,4556,2004,1700,3831,3576,2364,2660, 787,2023, 506, 824,3702, # 1200 - 534, 323,4557,1044,3359,2024,1901, 946,3471,5118,1779,1500,1678,5119,1882,4558, # 1216 - 165, 243,4559,3703,2528, 123, 683,4239, 764,4560, 36,3998,1793, 589,2916, 816, # 1232 - 626,1667,3047,2237,1639,1555,1622,3832,3999,5120,4000,2874,1370,1228,1933, 891, # 1248 -2084,2917, 304,4240,5121, 292,2997,2720,3577, 691,2101,4241,1115,4561, 118, 662, # 1264 -5122, 611,1156, 854,2386,1316,2875, 2, 386, 515,2918,5123,5124,3286, 868,2238, # 1280 -1486, 855,2661, 785,2216,3048,5125,1040,3216,3578,5126,3146, 448,5127,1525,5128, # 1296 -2165,4562,5129,3833,5130,4242,2833,3579,3147, 503, 818,4001,3148,1568, 814, 676, # 1312 -1444, 306,1749,5131,3834,1416,1030, 197,1428, 805,2834,1501,4563,5132,5133,5134, # 1328 -1994,5135,4564,5136,5137,2198, 13,2792,3704,2998,3149,1229,1917,5138,3835,2132, # 1344 -5139,4243,4565,2404,3580,5140,2217,1511,1727,1120,5141,5142, 646,3836,2448, 307, # 1360 -5143,5144,1595,3217,5145,5146,5147,3705,1113,1356,4002,1465,2529,2530,5148, 519, # 1376 -5149, 128,2133, 92,2289,1980,5150,4003,1512, 342,3150,2199,5151,2793,2218,1981, # 1392 -3360,4244, 290,1656,1317, 789, 827,2365,5152,3837,4566, 562, 581,4004,5153, 401, # 1408 -4567,2252, 94,4568,5154,1399,2794,5155,1463,2025,4569,3218,1944,5156, 828,1105, # 1424 -4245,1262,1394,5157,4246, 605,4570,5158,1784,2876,5159,2835, 819,2102, 578,2200, # 1440 -2952,5160,1502, 436,3287,4247,3288,2836,4005,2919,3472,3473,5161,2721,2320,5162, # 1456 -5163,2337,2068, 23,4571, 193, 826,3838,2103, 699,1630,4248,3098, 390,1794,1064, # 1472 -3581,5164,1579,3099,3100,1400,5165,4249,1839,1640,2877,5166,4572,4573, 137,4250, # 1488 - 598,3101,1967, 780, 104, 974,2953,5167, 278, 899, 253, 402, 572, 504, 493,1339, # 1504 -5168,4006,1275,4574,2582,2558,5169,3706,3049,3102,2253, 565,1334,2722, 863, 41, # 1520 -5170,5171,4575,5172,1657,2338, 19, 463,2760,4251, 606,5173,2999,3289,1087,2085, # 1536 -1323,2662,3000,5174,1631,1623,1750,4252,2691,5175,2878, 791,2723,2663,2339, 232, # 1552 -2421,5176,3001,1498,5177,2664,2630, 755,1366,3707,3290,3151,2026,1609, 119,1918, # 1568 -3474, 862,1026,4253,5178,4007,3839,4576,4008,4577,2265,1952,2477,5179,1125, 817, # 1584 -4254,4255,4009,1513,1766,2041,1487,4256,3050,3291,2837,3840,3152,5180,5181,1507, # 1600 -5182,2692, 733, 40,1632,1106,2879, 345,4257, 841,2531, 230,4578,3002,1847,3292, # 1616 -3475,5183,1263, 986,3476,5184, 735, 879, 254,1137, 857, 622,1300,1180,1388,1562, # 1632 -4010,4011,2954, 967,2761,2665,1349, 592,2134,1692,3361,3003,1995,4258,1679,4012, # 1648 -1902,2188,5185, 739,3708,2724,1296,1290,5186,4259,2201,2202,1922,1563,2605,2559, # 1664 -1871,2762,3004,5187, 435,5188, 343,1108, 596, 17,1751,4579,2239,3477,3709,5189, # 1680 -4580, 294,3582,2955,1693, 477, 979, 281,2042,3583, 643,2043,3710,2631,2795,2266, # 1696 -1031,2340,2135,2303,3584,4581, 367,1249,2560,5190,3585,5191,4582,1283,3362,2005, # 1712 - 240,1762,3363,4583,4584, 836,1069,3153, 474,5192,2149,2532, 268,3586,5193,3219, # 1728 -1521,1284,5194,1658,1546,4260,5195,3587,3588,5196,4261,3364,2693,1685,4262, 961, # 1744 -1673,2632, 190,2006,2203,3841,4585,4586,5197, 570,2504,3711,1490,5198,4587,2633, # 1760 -3293,1957,4588, 584,1514, 396,1045,1945,5199,4589,1968,2449,5200,5201,4590,4013, # 1776 - 619,5202,3154,3294, 215,2007,2796,2561,3220,4591,3221,4592, 763,4263,3842,4593, # 1792 -5203,5204,1958,1767,2956,3365,3712,1174, 452,1477,4594,3366,3155,5205,2838,1253, # 1808 -2387,2189,1091,2290,4264, 492,5206, 638,1169,1825,2136,1752,4014, 648, 926,1021, # 1824 -1324,4595, 520,4596, 997, 847,1007, 892,4597,3843,2267,1872,3713,2405,1785,4598, # 1840 -1953,2957,3103,3222,1728,4265,2044,3714,4599,2008,1701,3156,1551, 30,2268,4266, # 1856 -5207,2027,4600,3589,5208, 501,5209,4267, 594,3478,2166,1822,3590,3479,3591,3223, # 1872 - 829,2839,4268,5210,1680,3157,1225,4269,5211,3295,4601,4270,3158,2341,5212,4602, # 1888 -4271,5213,4015,4016,5214,1848,2388,2606,3367,5215,4603, 374,4017, 652,4272,4273, # 1904 - 375,1140, 798,5216,5217,5218,2366,4604,2269, 546,1659, 138,3051,2450,4605,5219, # 1920 -2254, 612,1849, 910, 796,3844,1740,1371, 825,3845,3846,5220,2920,2562,5221, 692, # 1936 - 444,3052,2634, 801,4606,4274,5222,1491, 244,1053,3053,4275,4276, 340,5223,4018, # 1952 -1041,3005, 293,1168, 87,1357,5224,1539, 959,5225,2240, 721, 694,4277,3847, 219, # 1968 -1478, 644,1417,3368,2666,1413,1401,1335,1389,4019,5226,5227,3006,2367,3159,1826, # 1984 - 730,1515, 184,2840, 66,4607,5228,1660,2958, 246,3369, 378,1457, 226,3480, 975, # 2000 -4020,2959,1264,3592, 674, 696,5229, 163,5230,1141,2422,2167, 713,3593,3370,4608, # 2016 -4021,5231,5232,1186, 15,5233,1079,1070,5234,1522,3224,3594, 276,1050,2725, 758, # 2032 -1126, 653,2960,3296,5235,2342, 889,3595,4022,3104,3007, 903,1250,4609,4023,3481, # 2048 -3596,1342,1681,1718, 766,3297, 286, 89,2961,3715,5236,1713,5237,2607,3371,3008, # 2064 -5238,2962,2219,3225,2880,5239,4610,2505,2533, 181, 387,1075,4024, 731,2190,3372, # 2080 -5240,3298, 310, 313,3482,2304, 770,4278, 54,3054, 189,4611,3105,3848,4025,5241, # 2096 -1230,1617,1850, 355,3597,4279,4612,3373, 111,4280,3716,1350,3160,3483,3055,4281, # 2112 -2150,3299,3598,5242,2797,4026,4027,3009, 722,2009,5243,1071, 247,1207,2343,2478, # 2128 -1378,4613,2010, 864,1437,1214,4614, 373,3849,1142,2220, 667,4615, 442,2763,2563, # 2144 -3850,4028,1969,4282,3300,1840, 837, 170,1107, 934,1336,1883,5244,5245,2119,4283, # 2160 -2841, 743,1569,5246,4616,4284, 582,2389,1418,3484,5247,1803,5248, 357,1395,1729, # 2176 -3717,3301,2423,1564,2241,5249,3106,3851,1633,4617,1114,2086,4285,1532,5250, 482, # 2192 -2451,4618,5251,5252,1492, 833,1466,5253,2726,3599,1641,2842,5254,1526,1272,3718, # 2208 -4286,1686,1795, 416,2564,1903,1954,1804,5255,3852,2798,3853,1159,2321,5256,2881, # 2224 -4619,1610,1584,3056,2424,2764, 443,3302,1163,3161,5257,5258,4029,5259,4287,2506, # 2240 -3057,4620,4030,3162,2104,1647,3600,2011,1873,4288,5260,4289, 431,3485,5261, 250, # 2256 - 97, 81,4290,5262,1648,1851,1558, 160, 848,5263, 866, 740,1694,5264,2204,2843, # 2272 -3226,4291,4621,3719,1687, 950,2479, 426, 469,3227,3720,3721,4031,5265,5266,1188, # 2288 - 424,1996, 861,3601,4292,3854,2205,2694, 168,1235,3602,4293,5267,2087,1674,4622, # 2304 -3374,3303, 220,2565,1009,5268,3855, 670,3010, 332,1208, 717,5269,5270,3603,2452, # 2320 -4032,3375,5271, 513,5272,1209,2882,3376,3163,4623,1080,5273,5274,5275,5276,2534, # 2336 -3722,3604, 815,1587,4033,4034,5277,3605,3486,3856,1254,4624,1328,3058,1390,4035, # 2352 -1741,4036,3857,4037,5278, 236,3858,2453,3304,5279,5280,3723,3859,1273,3860,4625, # 2368 -5281, 308,5282,4626, 245,4627,1852,2480,1307,2583, 430, 715,2137,2454,5283, 270, # 2384 - 199,2883,4038,5284,3606,2727,1753, 761,1754, 725,1661,1841,4628,3487,3724,5285, # 2400 -5286, 587, 14,3305, 227,2608, 326, 480,2270, 943,2765,3607, 291, 650,1884,5287, # 2416 -1702,1226, 102,1547, 62,3488, 904,4629,3489,1164,4294,5288,5289,1224,1548,2766, # 2432 - 391, 498,1493,5290,1386,1419,5291,2056,1177,4630, 813, 880,1081,2368, 566,1145, # 2448 -4631,2291,1001,1035,2566,2609,2242, 394,1286,5292,5293,2069,5294, 86,1494,1730, # 2464 -4039, 491,1588, 745, 897,2963, 843,3377,4040,2767,2884,3306,1768, 998,2221,2070, # 2480 - 397,1827,1195,1970,3725,3011,3378, 284,5295,3861,2507,2138,2120,1904,5296,4041, # 2496 -2151,4042,4295,1036,3490,1905, 114,2567,4296, 209,1527,5297,5298,2964,2844,2635, # 2512 -2390,2728,3164, 812,2568,5299,3307,5300,1559, 737,1885,3726,1210, 885, 28,2695, # 2528 -3608,3862,5301,4297,1004,1780,4632,5302, 346,1982,2222,2696,4633,3863,1742, 797, # 2544 -1642,4043,1934,1072,1384,2152, 896,4044,3308,3727,3228,2885,3609,5303,2569,1959, # 2560 -4634,2455,1786,5304,5305,5306,4045,4298,1005,1308,3728,4299,2729,4635,4636,1528, # 2576 -2610, 161,1178,4300,1983, 987,4637,1101,4301, 631,4046,1157,3229,2425,1343,1241, # 2592 -1016,2243,2570, 372, 877,2344,2508,1160, 555,1935, 911,4047,5307, 466,1170, 169, # 2608 -1051,2921,2697,3729,2481,3012,1182,2012,2571,1251,2636,5308, 992,2345,3491,1540, # 2624 -2730,1201,2071,2406,1997,2482,5309,4638, 528,1923,2191,1503,1874,1570,2369,3379, # 2640 -3309,5310, 557,1073,5311,1828,3492,2088,2271,3165,3059,3107, 767,3108,2799,4639, # 2656 -1006,4302,4640,2346,1267,2179,3730,3230, 778,4048,3231,2731,1597,2667,5312,4641, # 2672 -5313,3493,5314,5315,5316,3310,2698,1433,3311, 131, 95,1504,4049, 723,4303,3166, # 2688 -1842,3610,2768,2192,4050,2028,2105,3731,5317,3013,4051,1218,5318,3380,3232,4052, # 2704 -4304,2584, 248,1634,3864, 912,5319,2845,3732,3060,3865, 654, 53,5320,3014,5321, # 2720 -1688,4642, 777,3494,1032,4053,1425,5322, 191, 820,2121,2846, 971,4643, 931,3233, # 2736 - 135, 664, 783,3866,1998, 772,2922,1936,4054,3867,4644,2923,3234, 282,2732, 640, # 2752 -1372,3495,1127, 922, 325,3381,5323,5324, 711,2045,5325,5326,4055,2223,2800,1937, # 2768 -4056,3382,2224,2255,3868,2305,5327,4645,3869,1258,3312,4057,3235,2139,2965,4058, # 2784 -4059,5328,2225, 258,3236,4646, 101,1227,5329,3313,1755,5330,1391,3314,5331,2924, # 2800 -2057, 893,5332,5333,5334,1402,4305,2347,5335,5336,3237,3611,5337,5338, 878,1325, # 2816 -1781,2801,4647, 259,1385,2585, 744,1183,2272,4648,5339,4060,2509,5340, 684,1024, # 2832 -4306,5341, 472,3612,3496,1165,3315,4061,4062, 322,2153, 881, 455,1695,1152,1340, # 2848 - 660, 554,2154,4649,1058,4650,4307, 830,1065,3383,4063,4651,1924,5342,1703,1919, # 2864 -5343, 932,2273, 122,5344,4652, 947, 677,5345,3870,2637, 297,1906,1925,2274,4653, # 2880 -2322,3316,5346,5347,4308,5348,4309, 84,4310, 112, 989,5349, 547,1059,4064, 701, # 2896 -3613,1019,5350,4311,5351,3497, 942, 639, 457,2306,2456, 993,2966, 407, 851, 494, # 2912 -4654,3384, 927,5352,1237,5353,2426,3385, 573,4312, 680, 921,2925,1279,1875, 285, # 2928 - 790,1448,1984, 719,2168,5354,5355,4655,4065,4066,1649,5356,1541, 563,5357,1077, # 2944 -5358,3386,3061,3498, 511,3015,4067,4068,3733,4069,1268,2572,3387,3238,4656,4657, # 2960 -5359, 535,1048,1276,1189,2926,2029,3167,1438,1373,2847,2967,1134,2013,5360,4313, # 2976 -1238,2586,3109,1259,5361, 700,5362,2968,3168,3734,4314,5363,4315,1146,1876,1907, # 2992 -4658,2611,4070, 781,2427, 132,1589, 203, 147, 273,2802,2407, 898,1787,2155,4071, # 3008 -4072,5364,3871,2803,5365,5366,4659,4660,5367,3239,5368,1635,3872, 965,5369,1805, # 3024 -2699,1516,3614,1121,1082,1329,3317,4073,1449,3873, 65,1128,2848,2927,2769,1590, # 3040 -3874,5370,5371, 12,2668, 45, 976,2587,3169,4661, 517,2535,1013,1037,3240,5372, # 3056 -3875,2849,5373,3876,5374,3499,5375,2612, 614,1999,2323,3877,3110,2733,2638,5376, # 3072 -2588,4316, 599,1269,5377,1811,3735,5378,2700,3111, 759,1060, 489,1806,3388,3318, # 3088 -1358,5379,5380,2391,1387,1215,2639,2256, 490,5381,5382,4317,1759,2392,2348,5383, # 3104 -4662,3878,1908,4074,2640,1807,3241,4663,3500,3319,2770,2349, 874,5384,5385,3501, # 3120 -3736,1859, 91,2928,3737,3062,3879,4664,5386,3170,4075,2669,5387,3502,1202,1403, # 3136 -3880,2969,2536,1517,2510,4665,3503,2511,5388,4666,5389,2701,1886,1495,1731,4076, # 3152 -2370,4667,5390,2030,5391,5392,4077,2702,1216, 237,2589,4318,2324,4078,3881,4668, # 3168 -4669,2703,3615,3504, 445,4670,5393,5394,5395,5396,2771, 61,4079,3738,1823,4080, # 3184 -5397, 687,2046, 935, 925, 405,2670, 703,1096,1860,2734,4671,4081,1877,1367,2704, # 3200 -3389, 918,2106,1782,2483, 334,3320,1611,1093,4672, 564,3171,3505,3739,3390, 945, # 3216 -2641,2058,4673,5398,1926, 872,4319,5399,3506,2705,3112, 349,4320,3740,4082,4674, # 3232 -3882,4321,3741,2156,4083,4675,4676,4322,4677,2408,2047, 782,4084, 400, 251,4323, # 3248 -1624,5400,5401, 277,3742, 299,1265, 476,1191,3883,2122,4324,4325,1109, 205,5402, # 3264 -2590,1000,2157,3616,1861,5403,5404,5405,4678,5406,4679,2573, 107,2484,2158,4085, # 3280 -3507,3172,5407,1533, 541,1301, 158, 753,4326,2886,3617,5408,1696, 370,1088,4327, # 3296 -4680,3618, 579, 327, 440, 162,2244, 269,1938,1374,3508, 968,3063, 56,1396,3113, # 3312 -2107,3321,3391,5409,1927,2159,4681,3016,5410,3619,5411,5412,3743,4682,2485,5413, # 3328 -2804,5414,1650,4683,5415,2613,5416,5417,4086,2671,3392,1149,3393,4087,3884,4088, # 3344 -5418,1076, 49,5419, 951,3242,3322,3323, 450,2850, 920,5420,1812,2805,2371,4328, # 3360 -1909,1138,2372,3885,3509,5421,3243,4684,1910,1147,1518,2428,4685,3886,5422,4686, # 3376 -2393,2614, 260,1796,3244,5423,5424,3887,3324, 708,5425,3620,1704,5426,3621,1351, # 3392 -1618,3394,3017,1887, 944,4329,3395,4330,3064,3396,4331,5427,3744, 422, 413,1714, # 3408 -3325, 500,2059,2350,4332,2486,5428,1344,1911, 954,5429,1668,5430,5431,4089,2409, # 3424 -4333,3622,3888,4334,5432,2307,1318,2512,3114, 133,3115,2887,4687, 629, 31,2851, # 3440 -2706,3889,4688, 850, 949,4689,4090,2970,1732,2089,4335,1496,1853,5433,4091, 620, # 3456 -3245, 981,1242,3745,3397,1619,3746,1643,3326,2140,2457,1971,1719,3510,2169,5434, # 3472 -3246,5435,5436,3398,1829,5437,1277,4690,1565,2048,5438,1636,3623,3116,5439, 869, # 3488 -2852, 655,3890,3891,3117,4092,3018,3892,1310,3624,4691,5440,5441,5442,1733, 558, # 3504 -4692,3747, 335,1549,3065,1756,4336,3748,1946,3511,1830,1291,1192, 470,2735,2108, # 3520 -2806, 913,1054,4093,5443,1027,5444,3066,4094,4693, 982,2672,3399,3173,3512,3247, # 3536 -3248,1947,2807,5445, 571,4694,5446,1831,5447,3625,2591,1523,2429,5448,2090, 984, # 3552 -4695,3749,1960,5449,3750, 852, 923,2808,3513,3751, 969,1519, 999,2049,2325,1705, # 3568 -5450,3118, 615,1662, 151, 597,4095,2410,2326,1049, 275,4696,3752,4337, 568,3753, # 3584 -3626,2487,4338,3754,5451,2430,2275, 409,3249,5452,1566,2888,3514,1002, 769,2853, # 3600 - 194,2091,3174,3755,2226,3327,4339, 628,1505,5453,5454,1763,2180,3019,4096, 521, # 3616 -1161,2592,1788,2206,2411,4697,4097,1625,4340,4341, 412, 42,3119, 464,5455,2642, # 3632 -4698,3400,1760,1571,2889,3515,2537,1219,2207,3893,2643,2141,2373,4699,4700,3328, # 3648 -1651,3401,3627,5456,5457,3628,2488,3516,5458,3756,5459,5460,2276,2092, 460,5461, # 3664 -4701,5462,3020, 962, 588,3629, 289,3250,2644,1116, 52,5463,3067,1797,5464,5465, # 3680 -5466,1467,5467,1598,1143,3757,4342,1985,1734,1067,4702,1280,3402, 465,4703,1572, # 3696 - 510,5468,1928,2245,1813,1644,3630,5469,4704,3758,5470,5471,2673,1573,1534,5472, # 3712 -5473, 536,1808,1761,3517,3894,3175,2645,5474,5475,5476,4705,3518,2929,1912,2809, # 3728 -5477,3329,1122, 377,3251,5478, 360,5479,5480,4343,1529, 551,5481,2060,3759,1769, # 3744 -2431,5482,2930,4344,3330,3120,2327,2109,2031,4706,1404, 136,1468,1479, 672,1171, # 3760 -3252,2308, 271,3176,5483,2772,5484,2050, 678,2736, 865,1948,4707,5485,2014,4098, # 3776 -2971,5486,2737,2227,1397,3068,3760,4708,4709,1735,2931,3403,3631,5487,3895, 509, # 3792 -2854,2458,2890,3896,5488,5489,3177,3178,4710,4345,2538,4711,2309,1166,1010, 552, # 3808 - 681,1888,5490,5491,2972,2973,4099,1287,1596,1862,3179, 358, 453, 736, 175, 478, # 3824 -1117, 905,1167,1097,5492,1854,1530,5493,1706,5494,2181,3519,2292,3761,3520,3632, # 3840 -4346,2093,4347,5495,3404,1193,2489,4348,1458,2193,2208,1863,1889,1421,3331,2932, # 3856 -3069,2182,3521, 595,2123,5496,4100,5497,5498,4349,1707,2646, 223,3762,1359, 751, # 3872 -3121, 183,3522,5499,2810,3021, 419,2374, 633, 704,3897,2394, 241,5500,5501,5502, # 3888 - 838,3022,3763,2277,2773,2459,3898,1939,2051,4101,1309,3122,2246,1181,5503,1136, # 3904 -2209,3899,2375,1446,4350,2310,4712,5504,5505,4351,1055,2615, 484,3764,5506,4102, # 3920 - 625,4352,2278,3405,1499,4353,4103,5507,4104,4354,3253,2279,2280,3523,5508,5509, # 3936 -2774, 808,2616,3765,3406,4105,4355,3123,2539, 526,3407,3900,4356, 955,5510,1620, # 3952 -4357,2647,2432,5511,1429,3766,1669,1832, 994, 928,5512,3633,1260,5513,5514,5515, # 3968 -1949,2293, 741,2933,1626,4358,2738,2460, 867,1184, 362,3408,1392,5516,5517,4106, # 3984 -4359,1770,1736,3254,2934,4713,4714,1929,2707,1459,1158,5518,3070,3409,2891,1292, # 4000 -1930,2513,2855,3767,1986,1187,2072,2015,2617,4360,5519,2574,2514,2170,3768,2490, # 4016 -3332,5520,3769,4715,5521,5522, 666,1003,3023,1022,3634,4361,5523,4716,1814,2257, # 4032 - 574,3901,1603, 295,1535, 705,3902,4362, 283, 858, 417,5524,5525,3255,4717,4718, # 4048 -3071,1220,1890,1046,2281,2461,4107,1393,1599, 689,2575, 388,4363,5526,2491, 802, # 4064 -5527,2811,3903,2061,1405,2258,5528,4719,3904,2110,1052,1345,3256,1585,5529, 809, # 4080 -5530,5531,5532, 575,2739,3524, 956,1552,1469,1144,2328,5533,2329,1560,2462,3635, # 4096 -3257,4108, 616,2210,4364,3180,2183,2294,5534,1833,5535,3525,4720,5536,1319,3770, # 4112 -3771,1211,3636,1023,3258,1293,2812,5537,5538,5539,3905, 607,2311,3906, 762,2892, # 4128 -1439,4365,1360,4721,1485,3072,5540,4722,1038,4366,1450,2062,2648,4367,1379,4723, # 4144 -2593,5541,5542,4368,1352,1414,2330,2935,1172,5543,5544,3907,3908,4724,1798,1451, # 4160 -5545,5546,5547,5548,2936,4109,4110,2492,2351, 411,4111,4112,3637,3333,3124,4725, # 4176 -1561,2674,1452,4113,1375,5549,5550, 47,2974, 316,5551,1406,1591,2937,3181,5552, # 4192 -1025,2142,3125,3182, 354,2740, 884,2228,4369,2412, 508,3772, 726,3638, 996,2433, # 4208 -3639, 729,5553, 392,2194,1453,4114,4726,3773,5554,5555,2463,3640,2618,1675,2813, # 4224 - 919,2352,2975,2353,1270,4727,4115, 73,5556,5557, 647,5558,3259,2856,2259,1550, # 4240 -1346,3024,5559,1332, 883,3526,5560,5561,5562,5563,3334,2775,5564,1212, 831,1347, # 4256 -4370,4728,2331,3909,1864,3073, 720,3910,4729,4730,3911,5565,4371,5566,5567,4731, # 4272 -5568,5569,1799,4732,3774,2619,4733,3641,1645,2376,4734,5570,2938, 669,2211,2675, # 4288 -2434,5571,2893,5572,5573,1028,3260,5574,4372,2413,5575,2260,1353,5576,5577,4735, # 4304 -3183, 518,5578,4116,5579,4373,1961,5580,2143,4374,5581,5582,3025,2354,2355,3912, # 4320 - 516,1834,1454,4117,2708,4375,4736,2229,2620,1972,1129,3642,5583,2776,5584,2976, # 4336 -1422, 577,1470,3026,1524,3410,5585,5586, 432,4376,3074,3527,5587,2594,1455,2515, # 4352 -2230,1973,1175,5588,1020,2741,4118,3528,4737,5589,2742,5590,1743,1361,3075,3529, # 4368 -2649,4119,4377,4738,2295, 895, 924,4378,2171, 331,2247,3076, 166,1627,3077,1098, # 4384 -5591,1232,2894,2231,3411,4739, 657, 403,1196,2377, 542,3775,3412,1600,4379,3530, # 4400 -5592,4740,2777,3261, 576, 530,1362,4741,4742,2540,2676,3776,4120,5593, 842,3913, # 4416 -5594,2814,2032,1014,4121, 213,2709,3413, 665, 621,4380,5595,3777,2939,2435,5596, # 4432 -2436,3335,3643,3414,4743,4381,2541,4382,4744,3644,1682,4383,3531,1380,5597, 724, # 4448 -2282, 600,1670,5598,1337,1233,4745,3126,2248,5599,1621,4746,5600, 651,4384,5601, # 4464 -1612,4385,2621,5602,2857,5603,2743,2312,3078,5604, 716,2464,3079, 174,1255,2710, # 4480 -4122,3645, 548,1320,1398, 728,4123,1574,5605,1891,1197,3080,4124,5606,3081,3082, # 4496 -3778,3646,3779, 747,5607, 635,4386,4747,5608,5609,5610,4387,5611,5612,4748,5613, # 4512 -3415,4749,2437, 451,5614,3780,2542,2073,4388,2744,4389,4125,5615,1764,4750,5616, # 4528 -4390, 350,4751,2283,2395,2493,5617,4391,4126,2249,1434,4127, 488,4752, 458,4392, # 4544 -4128,3781, 771,1330,2396,3914,2576,3184,2160,2414,1553,2677,3185,4393,5618,2494, # 4560 -2895,2622,1720,2711,4394,3416,4753,5619,2543,4395,5620,3262,4396,2778,5621,2016, # 4576 -2745,5622,1155,1017,3782,3915,5623,3336,2313, 201,1865,4397,1430,5624,4129,5625, # 4592 -5626,5627,5628,5629,4398,1604,5630, 414,1866, 371,2595,4754,4755,3532,2017,3127, # 4608 -4756,1708, 960,4399, 887, 389,2172,1536,1663,1721,5631,2232,4130,2356,2940,1580, # 4624 -5632,5633,1744,4757,2544,4758,4759,5634,4760,5635,2074,5636,4761,3647,3417,2896, # 4640 -4400,5637,4401,2650,3418,2815, 673,2712,2465, 709,3533,4131,3648,4402,5638,1148, # 4656 - 502, 634,5639,5640,1204,4762,3649,1575,4763,2623,3783,5641,3784,3128, 948,3263, # 4672 - 121,1745,3916,1110,5642,4403,3083,2516,3027,4132,3785,1151,1771,3917,1488,4133, # 4688 -1987,5643,2438,3534,5644,5645,2094,5646,4404,3918,1213,1407,2816, 531,2746,2545, # 4704 -3264,1011,1537,4764,2779,4405,3129,1061,5647,3786,3787,1867,2897,5648,2018, 120, # 4720 -4406,4407,2063,3650,3265,2314,3919,2678,3419,1955,4765,4134,5649,3535,1047,2713, # 4736 -1266,5650,1368,4766,2858, 649,3420,3920,2546,2747,1102,2859,2679,5651,5652,2000, # 4752 -5653,1111,3651,2977,5654,2495,3921,3652,2817,1855,3421,3788,5655,5656,3422,2415, # 4768 -2898,3337,3266,3653,5657,2577,5658,3654,2818,4135,1460, 856,5659,3655,5660,2899, # 4784 -2978,5661,2900,3922,5662,4408, 632,2517, 875,3923,1697,3924,2296,5663,5664,4767, # 4800 -3028,1239, 580,4768,4409,5665, 914, 936,2075,1190,4136,1039,2124,5666,5667,5668, # 4816 -5669,3423,1473,5670,1354,4410,3925,4769,2173,3084,4137, 915,3338,4411,4412,3339, # 4832 -1605,1835,5671,2748, 398,3656,4413,3926,4138, 328,1913,2860,4139,3927,1331,4414, # 4848 -3029, 937,4415,5672,3657,4140,4141,3424,2161,4770,3425, 524, 742, 538,3085,1012, # 4864 -5673,5674,3928,2466,5675, 658,1103, 225,3929,5676,5677,4771,5678,4772,5679,3267, # 4880 -1243,5680,4142, 963,2250,4773,5681,2714,3658,3186,5682,5683,2596,2332,5684,4774, # 4896 -5685,5686,5687,3536, 957,3426,2547,2033,1931,2941,2467, 870,2019,3659,1746,2780, # 4912 -2781,2439,2468,5688,3930,5689,3789,3130,3790,3537,3427,3791,5690,1179,3086,5691, # 4928 -3187,2378,4416,3792,2548,3188,3131,2749,4143,5692,3428,1556,2549,2297, 977,2901, # 4944 -2034,4144,1205,3429,5693,1765,3430,3189,2125,1271, 714,1689,4775,3538,5694,2333, # 4960 -3931, 533,4417,3660,2184, 617,5695,2469,3340,3539,2315,5696,5697,3190,5698,5699, # 4976 -3932,1988, 618, 427,2651,3540,3431,5700,5701,1244,1690,5702,2819,4418,4776,5703, # 4992 -3541,4777,5704,2284,1576, 473,3661,4419,3432, 972,5705,3662,5706,3087,5707,5708, # 5008 -4778,4779,5709,3793,4145,4146,5710, 153,4780, 356,5711,1892,2902,4420,2144, 408, # 5024 - 803,2357,5712,3933,5713,4421,1646,2578,2518,4781,4782,3934,5714,3935,4422,5715, # 5040 -2416,3433, 752,5716,5717,1962,3341,2979,5718, 746,3030,2470,4783,4423,3794, 698, # 5056 -4784,1893,4424,3663,2550,4785,3664,3936,5719,3191,3434,5720,1824,1302,4147,2715, # 5072 -3937,1974,4425,5721,4426,3192, 823,1303,1288,1236,2861,3542,4148,3435, 774,3938, # 5088 -5722,1581,4786,1304,2862,3939,4787,5723,2440,2162,1083,3268,4427,4149,4428, 344, # 5104 -1173, 288,2316, 454,1683,5724,5725,1461,4788,4150,2597,5726,5727,4789, 985, 894, # 5120 -5728,3436,3193,5729,1914,2942,3795,1989,5730,2111,1975,5731,4151,5732,2579,1194, # 5136 - 425,5733,4790,3194,1245,3796,4429,5734,5735,2863,5736, 636,4791,1856,3940, 760, # 5152 -1800,5737,4430,2212,1508,4792,4152,1894,1684,2298,5738,5739,4793,4431,4432,2213, # 5168 - 479,5740,5741, 832,5742,4153,2496,5743,2980,2497,3797, 990,3132, 627,1815,2652, # 5184 -4433,1582,4434,2126,2112,3543,4794,5744, 799,4435,3195,5745,4795,2113,1737,3031, # 5200 -1018, 543, 754,4436,3342,1676,4796,4797,4154,4798,1489,5746,3544,5747,2624,2903, # 5216 -4155,5748,5749,2981,5750,5751,5752,5753,3196,4799,4800,2185,1722,5754,3269,3270, # 5232 -1843,3665,1715, 481, 365,1976,1857,5755,5756,1963,2498,4801,5757,2127,3666,3271, # 5248 - 433,1895,2064,2076,5758, 602,2750,5759,5760,5761,5762,5763,3032,1628,3437,5764, # 5264 -3197,4802,4156,2904,4803,2519,5765,2551,2782,5766,5767,5768,3343,4804,2905,5769, # 5280 -4805,5770,2864,4806,4807,1221,2982,4157,2520,5771,5772,5773,1868,1990,5774,5775, # 5296 -5776,1896,5777,5778,4808,1897,4158, 318,5779,2095,4159,4437,5780,5781, 485,5782, # 5312 - 938,3941, 553,2680, 116,5783,3942,3667,5784,3545,2681,2783,3438,3344,2820,5785, # 5328 -3668,2943,4160,1747,2944,2983,5786,5787, 207,5788,4809,5789,4810,2521,5790,3033, # 5344 - 890,3669,3943,5791,1878,3798,3439,5792,2186,2358,3440,1652,5793,5794,5795, 941, # 5360 -2299, 208,3546,4161,2020, 330,4438,3944,2906,2499,3799,4439,4811,5796,5797,5798, # 5376 #last 512 -#Everything below is of no interest for detection purpose -2522,1613,4812,5799,3345,3945,2523,5800,4162,5801,1637,4163,2471,4813,3946,5802, # 5392 -2500,3034,3800,5803,5804,2195,4814,5805,2163,5806,5807,5808,5809,5810,5811,5812, # 5408 -5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824,5825,5826,5827,5828, # 5424 -5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840,5841,5842,5843,5844, # 5440 -5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856,5857,5858,5859,5860, # 5456 -5861,5862,5863,5864,5865,5866,5867,5868,5869,5870,5871,5872,5873,5874,5875,5876, # 5472 -5877,5878,5879,5880,5881,5882,5883,5884,5885,5886,5887,5888,5889,5890,5891,5892, # 5488 -5893,5894,5895,5896,5897,5898,5899,5900,5901,5902,5903,5904,5905,5906,5907,5908, # 5504 -5909,5910,5911,5912,5913,5914,5915,5916,5917,5918,5919,5920,5921,5922,5923,5924, # 5520 -5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936,5937,5938,5939,5940, # 5536 -5941,5942,5943,5944,5945,5946,5947,5948,5949,5950,5951,5952,5953,5954,5955,5956, # 5552 -5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968,5969,5970,5971,5972, # 5568 -5973,5974,5975,5976,5977,5978,5979,5980,5981,5982,5983,5984,5985,5986,5987,5988, # 5584 -5989,5990,5991,5992,5993,5994,5995,5996,5997,5998,5999,6000,6001,6002,6003,6004, # 5600 -6005,6006,6007,6008,6009,6010,6011,6012,6013,6014,6015,6016,6017,6018,6019,6020, # 5616 -6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6032,6033,6034,6035,6036, # 5632 -6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048,6049,6050,6051,6052, # 5648 -6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064,6065,6066,6067,6068, # 5664 -6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080,6081,6082,6083,6084, # 5680 -6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,6099,6100, # 5696 -6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112,6113,6114,6115,6116, # 5712 -6117,6118,6119,6120,6121,6122,6123,6124,6125,6126,6127,6128,6129,6130,6131,6132, # 5728 -6133,6134,6135,6136,6137,6138,6139,6140,6141,6142,6143,6144,6145,6146,6147,6148, # 5744 -6149,6150,6151,6152,6153,6154,6155,6156,6157,6158,6159,6160,6161,6162,6163,6164, # 5760 -6165,6166,6167,6168,6169,6170,6171,6172,6173,6174,6175,6176,6177,6178,6179,6180, # 5776 -6181,6182,6183,6184,6185,6186,6187,6188,6189,6190,6191,6192,6193,6194,6195,6196, # 5792 -6197,6198,6199,6200,6201,6202,6203,6204,6205,6206,6207,6208,6209,6210,6211,6212, # 5808 -6213,6214,6215,6216,6217,6218,6219,6220,6221,6222,6223,3670,6224,6225,6226,6227, # 5824 -6228,6229,6230,6231,6232,6233,6234,6235,6236,6237,6238,6239,6240,6241,6242,6243, # 5840 -6244,6245,6246,6247,6248,6249,6250,6251,6252,6253,6254,6255,6256,6257,6258,6259, # 5856 -6260,6261,6262,6263,6264,6265,6266,6267,6268,6269,6270,6271,6272,6273,6274,6275, # 5872 -6276,6277,6278,6279,6280,6281,6282,6283,6284,6285,4815,6286,6287,6288,6289,6290, # 5888 -6291,6292,4816,6293,6294,6295,6296,6297,6298,6299,6300,6301,6302,6303,6304,6305, # 5904 -6306,6307,6308,6309,6310,6311,4817,4818,6312,6313,6314,6315,6316,6317,6318,4819, # 5920 -6319,6320,6321,6322,6323,6324,6325,6326,6327,6328,6329,6330,6331,6332,6333,6334, # 5936 -6335,6336,6337,4820,6338,6339,6340,6341,6342,6343,6344,6345,6346,6347,6348,6349, # 5952 -6350,6351,6352,6353,6354,6355,6356,6357,6358,6359,6360,6361,6362,6363,6364,6365, # 5968 -6366,6367,6368,6369,6370,6371,6372,6373,6374,6375,6376,6377,6378,6379,6380,6381, # 5984 -6382,6383,6384,6385,6386,6387,6388,6389,6390,6391,6392,6393,6394,6395,6396,6397, # 6000 -6398,6399,6400,6401,6402,6403,6404,6405,6406,6407,6408,6409,6410,3441,6411,6412, # 6016 -6413,6414,6415,6416,6417,6418,6419,6420,6421,6422,6423,6424,6425,4440,6426,6427, # 6032 -6428,6429,6430,6431,6432,6433,6434,6435,6436,6437,6438,6439,6440,6441,6442,6443, # 6048 -6444,6445,6446,6447,6448,6449,6450,6451,6452,6453,6454,4821,6455,6456,6457,6458, # 6064 -6459,6460,6461,6462,6463,6464,6465,6466,6467,6468,6469,6470,6471,6472,6473,6474, # 6080 -6475,6476,6477,3947,3948,6478,6479,6480,6481,3272,4441,6482,6483,6484,6485,4442, # 6096 -6486,6487,6488,6489,6490,6491,6492,6493,6494,6495,6496,4822,6497,6498,6499,6500, # 6112 -6501,6502,6503,6504,6505,6506,6507,6508,6509,6510,6511,6512,6513,6514,6515,6516, # 6128 -6517,6518,6519,6520,6521,6522,6523,6524,6525,6526,6527,6528,6529,6530,6531,6532, # 6144 -6533,6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6544,6545,6546,6547,6548, # 6160 -6549,6550,6551,6552,6553,6554,6555,6556,2784,6557,4823,6558,6559,6560,6561,6562, # 6176 -6563,6564,6565,6566,6567,6568,6569,3949,6570,6571,6572,4824,6573,6574,6575,6576, # 6192 -6577,6578,6579,6580,6581,6582,6583,4825,6584,6585,6586,3950,2785,6587,6588,6589, # 6208 -6590,6591,6592,6593,6594,6595,6596,6597,6598,6599,6600,6601,6602,6603,6604,6605, # 6224 -6606,6607,6608,6609,6610,6611,6612,4826,6613,6614,6615,4827,6616,6617,6618,6619, # 6240 -6620,6621,6622,6623,6624,6625,4164,6626,6627,6628,6629,6630,6631,6632,6633,6634, # 6256 -3547,6635,4828,6636,6637,6638,6639,6640,6641,6642,3951,2984,6643,6644,6645,6646, # 6272 -6647,6648,6649,4165,6650,4829,6651,6652,4830,6653,6654,6655,6656,6657,6658,6659, # 6288 -6660,6661,6662,4831,6663,6664,6665,6666,6667,6668,6669,6670,6671,4166,6672,4832, # 6304 -3952,6673,6674,6675,6676,4833,6677,6678,6679,4167,6680,6681,6682,3198,6683,6684, # 6320 -6685,6686,6687,6688,6689,6690,6691,6692,6693,6694,6695,6696,6697,4834,6698,6699, # 6336 -6700,6701,6702,6703,6704,6705,6706,6707,6708,6709,6710,6711,6712,6713,6714,6715, # 6352 -6716,6717,6718,6719,6720,6721,6722,6723,6724,6725,6726,6727,6728,6729,6730,6731, # 6368 -6732,6733,6734,4443,6735,6736,6737,6738,6739,6740,6741,6742,6743,6744,6745,4444, # 6384 -6746,6747,6748,6749,6750,6751,6752,6753,6754,6755,6756,6757,6758,6759,6760,6761, # 6400 -6762,6763,6764,6765,6766,6767,6768,6769,6770,6771,6772,6773,6774,6775,6776,6777, # 6416 -6778,6779,6780,6781,4168,6782,6783,3442,6784,6785,6786,6787,6788,6789,6790,6791, # 6432 -4169,6792,6793,6794,6795,6796,6797,6798,6799,6800,6801,6802,6803,6804,6805,6806, # 6448 -6807,6808,6809,6810,6811,4835,6812,6813,6814,4445,6815,6816,4446,6817,6818,6819, # 6464 -6820,6821,6822,6823,6824,6825,6826,6827,6828,6829,6830,6831,6832,6833,6834,6835, # 6480 -3548,6836,6837,6838,6839,6840,6841,6842,6843,6844,6845,6846,4836,6847,6848,6849, # 6496 -6850,6851,6852,6853,6854,3953,6855,6856,6857,6858,6859,6860,6861,6862,6863,6864, # 6512 -6865,6866,6867,6868,6869,6870,6871,6872,6873,6874,6875,6876,6877,3199,6878,6879, # 6528 -6880,6881,6882,4447,6883,6884,6885,6886,6887,6888,6889,6890,6891,6892,6893,6894, # 6544 -6895,6896,6897,6898,6899,6900,6901,6902,6903,6904,4170,6905,6906,6907,6908,6909, # 6560 -6910,6911,6912,6913,6914,6915,6916,6917,6918,6919,6920,6921,6922,6923,6924,6925, # 6576 -6926,6927,4837,6928,6929,6930,6931,6932,6933,6934,6935,6936,3346,6937,6938,4838, # 6592 -6939,6940,6941,4448,6942,6943,6944,6945,6946,4449,6947,6948,6949,6950,6951,6952, # 6608 -6953,6954,6955,6956,6957,6958,6959,6960,6961,6962,6963,6964,6965,6966,6967,6968, # 6624 -6969,6970,6971,6972,6973,6974,6975,6976,6977,6978,6979,6980,6981,6982,6983,6984, # 6640 -6985,6986,6987,6988,6989,6990,6991,6992,6993,6994,3671,6995,6996,6997,6998,4839, # 6656 -6999,7000,7001,7002,3549,7003,7004,7005,7006,7007,7008,7009,7010,7011,7012,7013, # 6672 -7014,7015,7016,7017,7018,7019,7020,7021,7022,7023,7024,7025,7026,7027,7028,7029, # 6688 -7030,4840,7031,7032,7033,7034,7035,7036,7037,7038,4841,7039,7040,7041,7042,7043, # 6704 -7044,7045,7046,7047,7048,7049,7050,7051,7052,7053,7054,7055,7056,7057,7058,7059, # 6720 -7060,7061,7062,7063,7064,7065,7066,7067,7068,7069,7070,2985,7071,7072,7073,7074, # 6736 -7075,7076,7077,7078,7079,7080,4842,7081,7082,7083,7084,7085,7086,7087,7088,7089, # 6752 -7090,7091,7092,7093,7094,7095,7096,7097,7098,7099,7100,7101,7102,7103,7104,7105, # 6768 -7106,7107,7108,7109,7110,7111,7112,7113,7114,7115,7116,7117,7118,4450,7119,7120, # 6784 -7121,7122,7123,7124,7125,7126,7127,7128,7129,7130,7131,7132,7133,7134,7135,7136, # 6800 -7137,7138,7139,7140,7141,7142,7143,4843,7144,7145,7146,7147,7148,7149,7150,7151, # 6816 -7152,7153,7154,7155,7156,7157,7158,7159,7160,7161,7162,7163,7164,7165,7166,7167, # 6832 -7168,7169,7170,7171,7172,7173,7174,7175,7176,7177,7178,7179,7180,7181,7182,7183, # 6848 -7184,7185,7186,7187,7188,4171,4172,7189,7190,7191,7192,7193,7194,7195,7196,7197, # 6864 -7198,7199,7200,7201,7202,7203,7204,7205,7206,7207,7208,7209,7210,7211,7212,7213, # 6880 -7214,7215,7216,7217,7218,7219,7220,7221,7222,7223,7224,7225,7226,7227,7228,7229, # 6896 -7230,7231,7232,7233,7234,7235,7236,7237,7238,7239,7240,7241,7242,7243,7244,7245, # 6912 -7246,7247,7248,7249,7250,7251,7252,7253,7254,7255,7256,7257,7258,7259,7260,7261, # 6928 -7262,7263,7264,7265,7266,7267,7268,7269,7270,7271,7272,7273,7274,7275,7276,7277, # 6944 -7278,7279,7280,7281,7282,7283,7284,7285,7286,7287,7288,7289,7290,7291,7292,7293, # 6960 -7294,7295,7296,4844,7297,7298,7299,7300,7301,7302,7303,7304,7305,7306,7307,7308, # 6976 -7309,7310,7311,7312,7313,7314,7315,7316,4451,7317,7318,7319,7320,7321,7322,7323, # 6992 -7324,7325,7326,7327,7328,7329,7330,7331,7332,7333,7334,7335,7336,7337,7338,7339, # 7008 -7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7350,7351,7352,7353,4173,7354, # 7024 -7355,4845,7356,7357,7358,7359,7360,7361,7362,7363,7364,7365,7366,7367,7368,7369, # 7040 -7370,7371,7372,7373,7374,7375,7376,7377,7378,7379,7380,7381,7382,7383,7384,7385, # 7056 -7386,7387,7388,4846,7389,7390,7391,7392,7393,7394,7395,7396,7397,7398,7399,7400, # 7072 -7401,7402,7403,7404,7405,3672,7406,7407,7408,7409,7410,7411,7412,7413,7414,7415, # 7088 -7416,7417,7418,7419,7420,7421,7422,7423,7424,7425,7426,7427,7428,7429,7430,7431, # 7104 -7432,7433,7434,7435,7436,7437,7438,7439,7440,7441,7442,7443,7444,7445,7446,7447, # 7120 -7448,7449,7450,7451,7452,7453,4452,7454,3200,7455,7456,7457,7458,7459,7460,7461, # 7136 -7462,7463,7464,7465,7466,7467,7468,7469,7470,7471,7472,7473,7474,4847,7475,7476, # 7152 -7477,3133,7478,7479,7480,7481,7482,7483,7484,7485,7486,7487,7488,7489,7490,7491, # 7168 -7492,7493,7494,7495,7496,7497,7498,7499,7500,7501,7502,3347,7503,7504,7505,7506, # 7184 -7507,7508,7509,7510,7511,7512,7513,7514,7515,7516,7517,7518,7519,7520,7521,4848, # 7200 -7522,7523,7524,7525,7526,7527,7528,7529,7530,7531,7532,7533,7534,7535,7536,7537, # 7216 -7538,7539,7540,7541,7542,7543,7544,7545,7546,7547,7548,7549,3801,4849,7550,7551, # 7232 -7552,7553,7554,7555,7556,7557,7558,7559,7560,7561,7562,7563,7564,7565,7566,7567, # 7248 -7568,7569,3035,7570,7571,7572,7573,7574,7575,7576,7577,7578,7579,7580,7581,7582, # 7264 -7583,7584,7585,7586,7587,7588,7589,7590,7591,7592,7593,7594,7595,7596,7597,7598, # 7280 -7599,7600,7601,7602,7603,7604,7605,7606,7607,7608,7609,7610,7611,7612,7613,7614, # 7296 -7615,7616,4850,7617,7618,3802,7619,7620,7621,7622,7623,7624,7625,7626,7627,7628, # 7312 -7629,7630,7631,7632,4851,7633,7634,7635,7636,7637,7638,7639,7640,7641,7642,7643, # 7328 -7644,7645,7646,7647,7648,7649,7650,7651,7652,7653,7654,7655,7656,7657,7658,7659, # 7344 -7660,7661,7662,7663,7664,7665,7666,7667,7668,7669,7670,4453,7671,7672,7673,7674, # 7360 -7675,7676,7677,7678,7679,7680,7681,7682,7683,7684,7685,7686,7687,7688,7689,7690, # 7376 -7691,7692,7693,7694,7695,7696,7697,3443,7698,7699,7700,7701,7702,4454,7703,7704, # 7392 -7705,7706,7707,7708,7709,7710,7711,7712,7713,2472,7714,7715,7716,7717,7718,7719, # 7408 -7720,7721,7722,7723,7724,7725,7726,7727,7728,7729,7730,7731,3954,7732,7733,7734, # 7424 -7735,7736,7737,7738,7739,7740,7741,7742,7743,7744,7745,7746,7747,7748,7749,7750, # 7440 -3134,7751,7752,4852,7753,7754,7755,4853,7756,7757,7758,7759,7760,4174,7761,7762, # 7456 -7763,7764,7765,7766,7767,7768,7769,7770,7771,7772,7773,7774,7775,7776,7777,7778, # 7472 -7779,7780,7781,7782,7783,7784,7785,7786,7787,7788,7789,7790,7791,7792,7793,7794, # 7488 -7795,7796,7797,7798,7799,7800,7801,7802,7803,7804,7805,4854,7806,7807,7808,7809, # 7504 -7810,7811,7812,7813,7814,7815,7816,7817,7818,7819,7820,7821,7822,7823,7824,7825, # 7520 -4855,7826,7827,7828,7829,7830,7831,7832,7833,7834,7835,7836,7837,7838,7839,7840, # 7536 -7841,7842,7843,7844,7845,7846,7847,3955,7848,7849,7850,7851,7852,7853,7854,7855, # 7552 -7856,7857,7858,7859,7860,3444,7861,7862,7863,7864,7865,7866,7867,7868,7869,7870, # 7568 -7871,7872,7873,7874,7875,7876,7877,7878,7879,7880,7881,7882,7883,7884,7885,7886, # 7584 -7887,7888,7889,7890,7891,4175,7892,7893,7894,7895,7896,4856,4857,7897,7898,7899, # 7600 -7900,2598,7901,7902,7903,7904,7905,7906,7907,7908,4455,7909,7910,7911,7912,7913, # 7616 -7914,3201,7915,7916,7917,7918,7919,7920,7921,4858,7922,7923,7924,7925,7926,7927, # 7632 -7928,7929,7930,7931,7932,7933,7934,7935,7936,7937,7938,7939,7940,7941,7942,7943, # 7648 -7944,7945,7946,7947,7948,7949,7950,7951,7952,7953,7954,7955,7956,7957,7958,7959, # 7664 -7960,7961,7962,7963,7964,7965,7966,7967,7968,7969,7970,7971,7972,7973,7974,7975, # 7680 -7976,7977,7978,7979,7980,7981,4859,7982,7983,7984,7985,7986,7987,7988,7989,7990, # 7696 -7991,7992,7993,7994,7995,7996,4860,7997,7998,7999,8000,8001,8002,8003,8004,8005, # 7712 -8006,8007,8008,8009,8010,8011,8012,8013,8014,8015,8016,4176,8017,8018,8019,8020, # 7728 -8021,8022,8023,4861,8024,8025,8026,8027,8028,8029,8030,8031,8032,8033,8034,8035, # 7744 -8036,4862,4456,8037,8038,8039,8040,4863,8041,8042,8043,8044,8045,8046,8047,8048, # 7760 -8049,8050,8051,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8062,8063,8064, # 7776 -8065,8066,8067,8068,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079,8080, # 7792 -8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,8093,8094,8095,8096, # 7808 -8097,8098,8099,4864,4177,8100,8101,8102,8103,8104,8105,8106,8107,8108,8109,8110, # 7824 -8111,8112,8113,8114,8115,8116,8117,8118,8119,8120,4178,8121,8122,8123,8124,8125, # 7840 -8126,8127,8128,8129,8130,8131,8132,8133,8134,8135,8136,8137,8138,8139,8140,8141, # 7856 -8142,8143,8144,8145,4865,4866,8146,8147,8148,8149,8150,8151,8152,8153,8154,8155, # 7872 -8156,8157,8158,8159,8160,8161,8162,8163,8164,8165,4179,8166,8167,8168,8169,8170, # 7888 -8171,8172,8173,8174,8175,8176,8177,8178,8179,8180,8181,4457,8182,8183,8184,8185, # 7904 -8186,8187,8188,8189,8190,8191,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201, # 7920 -8202,8203,8204,8205,8206,8207,8208,8209,8210,8211,8212,8213,8214,8215,8216,8217, # 7936 -8218,8219,8220,8221,8222,8223,8224,8225,8226,8227,8228,8229,8230,8231,8232,8233, # 7952 -8234,8235,8236,8237,8238,8239,8240,8241,8242,8243,8244,8245,8246,8247,8248,8249, # 7968 -8250,8251,8252,8253,8254,8255,8256,3445,8257,8258,8259,8260,8261,8262,4458,8263, # 7984 -8264,8265,8266,8267,8268,8269,8270,8271,8272,4459,8273,8274,8275,8276,3550,8277, # 8000 -8278,8279,8280,8281,8282,8283,8284,8285,8286,8287,8288,8289,4460,8290,8291,8292, # 8016 -8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,8304,8305,8306,8307,4867, # 8032 -8308,8309,8310,8311,8312,3551,8313,8314,8315,8316,8317,8318,8319,8320,8321,8322, # 8048 -8323,8324,8325,8326,4868,8327,8328,8329,8330,8331,8332,8333,8334,8335,8336,8337, # 8064 -8338,8339,8340,8341,8342,8343,8344,8345,8346,8347,8348,8349,8350,8351,8352,8353, # 8080 -8354,8355,8356,8357,8358,8359,8360,8361,8362,8363,4869,4461,8364,8365,8366,8367, # 8096 -8368,8369,8370,4870,8371,8372,8373,8374,8375,8376,8377,8378,8379,8380,8381,8382, # 8112 -8383,8384,8385,8386,8387,8388,8389,8390,8391,8392,8393,8394,8395,8396,8397,8398, # 8128 -8399,8400,8401,8402,8403,8404,8405,8406,8407,8408,8409,8410,4871,8411,8412,8413, # 8144 -8414,8415,8416,8417,8418,8419,8420,8421,8422,4462,8423,8424,8425,8426,8427,8428, # 8160 -8429,8430,8431,8432,8433,2986,8434,8435,8436,8437,8438,8439,8440,8441,8442,8443, # 8176 -8444,8445,8446,8447,8448,8449,8450,8451,8452,8453,8454,8455,8456,8457,8458,8459, # 8192 -8460,8461,8462,8463,8464,8465,8466,8467,8468,8469,8470,8471,8472,8473,8474,8475, # 8208 -8476,8477,8478,4180,8479,8480,8481,8482,8483,8484,8485,8486,8487,8488,8489,8490, # 8224 -8491,8492,8493,8494,8495,8496,8497,8498,8499,8500,8501,8502,8503,8504,8505,8506, # 8240 -8507,8508,8509,8510,8511,8512,8513,8514,8515,8516,8517,8518,8519,8520,8521,8522, # 8256 -8523,8524,8525,8526,8527,8528,8529,8530,8531,8532,8533,8534,8535,8536,8537,8538, # 8272 -8539,8540,8541,8542,8543,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554, # 8288 -8555,8556,8557,8558,8559,8560,8561,8562,8563,8564,4872,8565,8566,8567,8568,8569, # 8304 -8570,8571,8572,8573,4873,8574,8575,8576,8577,8578,8579,8580,8581,8582,8583,8584, # 8320 -8585,8586,8587,8588,8589,8590,8591,8592,8593,8594,8595,8596,8597,8598,8599,8600, # 8336 -8601,8602,8603,8604,8605,3803,8606,8607,8608,8609,8610,8611,8612,8613,4874,3804, # 8352 -8614,8615,8616,8617,8618,8619,8620,8621,3956,8622,8623,8624,8625,8626,8627,8628, # 8368 -8629,8630,8631,8632,8633,8634,8635,8636,8637,8638,2865,8639,8640,8641,8642,8643, # 8384 -8644,8645,8646,8647,8648,8649,8650,8651,8652,8653,8654,8655,8656,4463,8657,8658, # 8400 -8659,4875,4876,8660,8661,8662,8663,8664,8665,8666,8667,8668,8669,8670,8671,8672, # 8416 -8673,8674,8675,8676,8677,8678,8679,8680,8681,4464,8682,8683,8684,8685,8686,8687, # 8432 -8688,8689,8690,8691,8692,8693,8694,8695,8696,8697,8698,8699,8700,8701,8702,8703, # 8448 -8704,8705,8706,8707,8708,8709,2261,8710,8711,8712,8713,8714,8715,8716,8717,8718, # 8464 -8719,8720,8721,8722,8723,8724,8725,8726,8727,8728,8729,8730,8731,8732,8733,4181, # 8480 -8734,8735,8736,8737,8738,8739,8740,8741,8742,8743,8744,8745,8746,8747,8748,8749, # 8496 -8750,8751,8752,8753,8754,8755,8756,8757,8758,8759,8760,8761,8762,8763,4877,8764, # 8512 -8765,8766,8767,8768,8769,8770,8771,8772,8773,8774,8775,8776,8777,8778,8779,8780, # 8528 -8781,8782,8783,8784,8785,8786,8787,8788,4878,8789,4879,8790,8791,8792,4880,8793, # 8544 -8794,8795,8796,8797,8798,8799,8800,8801,4881,8802,8803,8804,8805,8806,8807,8808, # 8560 -8809,8810,8811,8812,8813,8814,8815,3957,8816,8817,8818,8819,8820,8821,8822,8823, # 8576 -8824,8825,8826,8827,8828,8829,8830,8831,8832,8833,8834,8835,8836,8837,8838,8839, # 8592 -8840,8841,8842,8843,8844,8845,8846,8847,4882,8848,8849,8850,8851,8852,8853,8854, # 8608 -8855,8856,8857,8858,8859,8860,8861,8862,8863,8864,8865,8866,8867,8868,8869,8870, # 8624 -8871,8872,8873,8874,8875,8876,8877,8878,8879,8880,8881,8882,8883,8884,3202,8885, # 8640 -8886,8887,8888,8889,8890,8891,8892,8893,8894,8895,8896,8897,8898,8899,8900,8901, # 8656 -8902,8903,8904,8905,8906,8907,8908,8909,8910,8911,8912,8913,8914,8915,8916,8917, # 8672 -8918,8919,8920,8921,8922,8923,8924,4465,8925,8926,8927,8928,8929,8930,8931,8932, # 8688 -4883,8933,8934,8935,8936,8937,8938,8939,8940,8941,8942,8943,2214,8944,8945,8946, # 8704 -8947,8948,8949,8950,8951,8952,8953,8954,8955,8956,8957,8958,8959,8960,8961,8962, # 8720 -8963,8964,8965,4884,8966,8967,8968,8969,8970,8971,8972,8973,8974,8975,8976,8977, # 8736 -8978,8979,8980,8981,8982,8983,8984,8985,8986,8987,8988,8989,8990,8991,8992,4885, # 8752 -8993,8994,8995,8996,8997,8998,8999,9000,9001,9002,9003,9004,9005,9006,9007,9008, # 8768 -9009,9010,9011,9012,9013,9014,9015,9016,9017,9018,9019,9020,9021,4182,9022,9023, # 8784 -9024,9025,9026,9027,9028,9029,9030,9031,9032,9033,9034,9035,9036,9037,9038,9039, # 8800 -9040,9041,9042,9043,9044,9045,9046,9047,9048,9049,9050,9051,9052,9053,9054,9055, # 8816 -9056,9057,9058,9059,9060,9061,9062,9063,4886,9064,9065,9066,9067,9068,9069,4887, # 8832 -9070,9071,9072,9073,9074,9075,9076,9077,9078,9079,9080,9081,9082,9083,9084,9085, # 8848 -9086,9087,9088,9089,9090,9091,9092,9093,9094,9095,9096,9097,9098,9099,9100,9101, # 8864 -9102,9103,9104,9105,9106,9107,9108,9109,9110,9111,9112,9113,9114,9115,9116,9117, # 8880 -9118,9119,9120,9121,9122,9123,9124,9125,9126,9127,9128,9129,9130,9131,9132,9133, # 8896 -9134,9135,9136,9137,9138,9139,9140,9141,3958,9142,9143,9144,9145,9146,9147,9148, # 8912 -9149,9150,9151,4888,9152,9153,9154,9155,9156,9157,9158,9159,9160,9161,9162,9163, # 8928 -9164,9165,9166,9167,9168,9169,9170,9171,9172,9173,9174,9175,4889,9176,9177,9178, # 8944 -9179,9180,9181,9182,9183,9184,9185,9186,9187,9188,9189,9190,9191,9192,9193,9194, # 8960 -9195,9196,9197,9198,9199,9200,9201,9202,9203,4890,9204,9205,9206,9207,9208,9209, # 8976 -9210,9211,9212,9213,9214,9215,9216,9217,9218,9219,9220,9221,9222,4466,9223,9224, # 8992 -9225,9226,9227,9228,9229,9230,9231,9232,9233,9234,9235,9236,9237,9238,9239,9240, # 9008 -9241,9242,9243,9244,9245,4891,9246,9247,9248,9249,9250,9251,9252,9253,9254,9255, # 9024 -9256,9257,4892,9258,9259,9260,9261,4893,4894,9262,9263,9264,9265,9266,9267,9268, # 9040 -9269,9270,9271,9272,9273,4467,9274,9275,9276,9277,9278,9279,9280,9281,9282,9283, # 9056 -9284,9285,3673,9286,9287,9288,9289,9290,9291,9292,9293,9294,9295,9296,9297,9298, # 9072 -9299,9300,9301,9302,9303,9304,9305,9306,9307,9308,9309,9310,9311,9312,9313,9314, # 9088 -9315,9316,9317,9318,9319,9320,9321,9322,4895,9323,9324,9325,9326,9327,9328,9329, # 9104 -9330,9331,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,9342,9343,9344,9345, # 9120 -9346,9347,4468,9348,9349,9350,9351,9352,9353,9354,9355,9356,9357,9358,9359,9360, # 9136 -9361,9362,9363,9364,9365,9366,9367,9368,9369,9370,9371,9372,9373,4896,9374,4469, # 9152 -9375,9376,9377,9378,9379,4897,9380,9381,9382,9383,9384,9385,9386,9387,9388,9389, # 9168 -9390,9391,9392,9393,9394,9395,9396,9397,9398,9399,9400,9401,9402,9403,9404,9405, # 9184 -9406,4470,9407,2751,9408,9409,3674,3552,9410,9411,9412,9413,9414,9415,9416,9417, # 9200 -9418,9419,9420,9421,4898,9422,9423,9424,9425,9426,9427,9428,9429,3959,9430,9431, # 9216 -9432,9433,9434,9435,9436,4471,9437,9438,9439,9440,9441,9442,9443,9444,9445,9446, # 9232 -9447,9448,9449,9450,3348,9451,9452,9453,9454,9455,9456,9457,9458,9459,9460,9461, # 9248 -9462,9463,9464,9465,9466,9467,9468,9469,9470,9471,9472,4899,9473,9474,9475,9476, # 9264 -9477,4900,9478,9479,9480,9481,9482,9483,9484,9485,9486,9487,9488,3349,9489,9490, # 9280 -9491,9492,9493,9494,9495,9496,9497,9498,9499,9500,9501,9502,9503,9504,9505,9506, # 9296 -9507,9508,9509,9510,9511,9512,9513,9514,9515,9516,9517,9518,9519,9520,4901,9521, # 9312 -9522,9523,9524,9525,9526,4902,9527,9528,9529,9530,9531,9532,9533,9534,9535,9536, # 9328 -9537,9538,9539,9540,9541,9542,9543,9544,9545,9546,9547,9548,9549,9550,9551,9552, # 9344 -9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568, # 9360 -9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9581,9582,9583,9584, # 9376 -3805,9585,9586,9587,9588,9589,9590,9591,9592,9593,9594,9595,9596,9597,9598,9599, # 9392 -9600,9601,9602,4903,9603,9604,9605,9606,9607,4904,9608,9609,9610,9611,9612,9613, # 9408 -9614,4905,9615,9616,9617,9618,9619,9620,9621,9622,9623,9624,9625,9626,9627,9628, # 9424 -9629,9630,9631,9632,4906,9633,9634,9635,9636,9637,9638,9639,9640,9641,9642,9643, # 9440 -4907,9644,9645,9646,9647,9648,9649,9650,9651,9652,9653,9654,9655,9656,9657,9658, # 9456 -9659,9660,9661,9662,9663,9664,9665,9666,9667,9668,9669,9670,9671,9672,4183,9673, # 9472 -9674,9675,9676,9677,4908,9678,9679,9680,9681,4909,9682,9683,9684,9685,9686,9687, # 9488 -9688,9689,9690,4910,9691,9692,9693,3675,9694,9695,9696,2945,9697,9698,9699,9700, # 9504 -9701,9702,9703,9704,9705,4911,9706,9707,9708,9709,9710,9711,9712,9713,9714,9715, # 9520 -9716,9717,9718,9719,9720,9721,9722,9723,9724,9725,9726,9727,9728,9729,9730,9731, # 9536 -9732,9733,9734,9735,4912,9736,9737,9738,9739,9740,4913,9741,9742,9743,9744,9745, # 9552 -9746,9747,9748,9749,9750,9751,9752,9753,9754,9755,9756,9757,9758,4914,9759,9760, # 9568 -9761,9762,9763,9764,9765,9766,9767,9768,9769,9770,9771,9772,9773,9774,9775,9776, # 9584 -9777,9778,9779,9780,9781,9782,4915,9783,9784,9785,9786,9787,9788,9789,9790,9791, # 9600 -9792,9793,4916,9794,9795,9796,9797,9798,9799,9800,9801,9802,9803,9804,9805,9806, # 9616 -9807,9808,9809,9810,9811,9812,9813,9814,9815,9816,9817,9818,9819,9820,9821,9822, # 9632 -9823,9824,9825,9826,9827,9828,9829,9830,9831,9832,9833,9834,9835,9836,9837,9838, # 9648 -9839,9840,9841,9842,9843,9844,9845,9846,9847,9848,9849,9850,9851,9852,9853,9854, # 9664 -9855,9856,9857,9858,9859,9860,9861,9862,9863,9864,9865,9866,9867,9868,4917,9869, # 9680 -9870,9871,9872,9873,9874,9875,9876,9877,9878,9879,9880,9881,9882,9883,9884,9885, # 9696 -9886,9887,9888,9889,9890,9891,9892,4472,9893,9894,9895,9896,9897,3806,9898,9899, # 9712 -9900,9901,9902,9903,9904,9905,9906,9907,9908,9909,9910,9911,9912,9913,9914,4918, # 9728 -9915,9916,9917,4919,9918,9919,9920,9921,4184,9922,9923,9924,9925,9926,9927,9928, # 9744 -9929,9930,9931,9932,9933,9934,9935,9936,9937,9938,9939,9940,9941,9942,9943,9944, # 9760 -9945,9946,4920,9947,9948,9949,9950,9951,9952,9953,9954,9955,4185,9956,9957,9958, # 9776 -9959,9960,9961,9962,9963,9964,9965,4921,9966,9967,9968,4473,9969,9970,9971,9972, # 9792 -9973,9974,9975,9976,9977,4474,9978,9979,9980,9981,9982,9983,9984,9985,9986,9987, # 9808 -9988,9989,9990,9991,9992,9993,9994,9995,9996,9997,9998,9999,10000,10001,10002,10003, # 9824 -10004,10005,10006,10007,10008,10009,10010,10011,10012,10013,10014,10015,10016,10017,10018,10019, # 9840 -10020,10021,4922,10022,4923,10023,10024,10025,10026,10027,10028,10029,10030,10031,10032,10033, # 9856 -10034,10035,10036,10037,10038,10039,10040,10041,10042,10043,10044,10045,10046,10047,10048,4924, # 9872 -10049,10050,10051,10052,10053,10054,10055,10056,10057,10058,10059,10060,10061,10062,10063,10064, # 9888 -10065,10066,10067,10068,10069,10070,10071,10072,10073,10074,10075,10076,10077,10078,10079,10080, # 9904 -10081,10082,10083,10084,10085,10086,10087,4475,10088,10089,10090,10091,10092,10093,10094,10095, # 9920 -10096,10097,4476,10098,10099,10100,10101,10102,10103,10104,10105,10106,10107,10108,10109,10110, # 9936 -10111,2174,10112,10113,10114,10115,10116,10117,10118,10119,10120,10121,10122,10123,10124,10125, # 9952 -10126,10127,10128,10129,10130,10131,10132,10133,10134,10135,10136,10137,10138,10139,10140,3807, # 9968 -4186,4925,10141,10142,10143,10144,10145,10146,10147,4477,4187,10148,10149,10150,10151,10152, # 9984 -10153,4188,10154,10155,10156,10157,10158,10159,10160,10161,4926,10162,10163,10164,10165,10166, #10000 -10167,10168,10169,10170,10171,10172,10173,10174,10175,10176,10177,10178,10179,10180,10181,10182, #10016 -10183,10184,10185,10186,10187,10188,10189,10190,10191,10192,3203,10193,10194,10195,10196,10197, #10032 -10198,10199,10200,4478,10201,10202,10203,10204,4479,10205,10206,10207,10208,10209,10210,10211, #10048 -10212,10213,10214,10215,10216,10217,10218,10219,10220,10221,10222,10223,10224,10225,10226,10227, #10064 -10228,10229,10230,10231,10232,10233,10234,4927,10235,10236,10237,10238,10239,10240,10241,10242, #10080 -10243,10244,10245,10246,10247,10248,10249,10250,10251,10252,10253,10254,10255,10256,10257,10258, #10096 -10259,10260,10261,10262,10263,10264,10265,10266,10267,10268,10269,10270,10271,10272,10273,4480, #10112 -4928,4929,10274,10275,10276,10277,10278,10279,10280,10281,10282,10283,10284,10285,10286,10287, #10128 -10288,10289,10290,10291,10292,10293,10294,10295,10296,10297,10298,10299,10300,10301,10302,10303, #10144 -10304,10305,10306,10307,10308,10309,10310,10311,10312,10313,10314,10315,10316,10317,10318,10319, #10160 -10320,10321,10322,10323,10324,10325,10326,10327,10328,10329,10330,10331,10332,10333,10334,4930, #10176 -10335,10336,10337,10338,10339,10340,10341,10342,4931,10343,10344,10345,10346,10347,10348,10349, #10192 -10350,10351,10352,10353,10354,10355,3088,10356,2786,10357,10358,10359,10360,4189,10361,10362, #10208 -10363,10364,10365,10366,10367,10368,10369,10370,10371,10372,10373,10374,10375,4932,10376,10377, #10224 -10378,10379,10380,10381,10382,10383,10384,10385,10386,10387,10388,10389,10390,10391,10392,4933, #10240 -10393,10394,10395,4934,10396,10397,10398,10399,10400,10401,10402,10403,10404,10405,10406,10407, #10256 -10408,10409,10410,10411,10412,3446,10413,10414,10415,10416,10417,10418,10419,10420,10421,10422, #10272 -10423,4935,10424,10425,10426,10427,10428,10429,10430,4936,10431,10432,10433,10434,10435,10436, #10288 -10437,10438,10439,10440,10441,10442,10443,4937,10444,10445,10446,10447,4481,10448,10449,10450, #10304 -10451,10452,10453,10454,10455,10456,10457,10458,10459,10460,10461,10462,10463,10464,10465,10466, #10320 -10467,10468,10469,10470,10471,10472,10473,10474,10475,10476,10477,10478,10479,10480,10481,10482, #10336 -10483,10484,10485,10486,10487,10488,10489,10490,10491,10492,10493,10494,10495,10496,10497,10498, #10352 -10499,10500,10501,10502,10503,10504,10505,4938,10506,10507,10508,10509,10510,2552,10511,10512, #10368 -10513,10514,10515,10516,3447,10517,10518,10519,10520,10521,10522,10523,10524,10525,10526,10527, #10384 -10528,10529,10530,10531,10532,10533,10534,10535,10536,10537,10538,10539,10540,10541,10542,10543, #10400 -4482,10544,4939,10545,10546,10547,10548,10549,10550,10551,10552,10553,10554,10555,10556,10557, #10416 -10558,10559,10560,10561,10562,10563,10564,10565,10566,10567,3676,4483,10568,10569,10570,10571, #10432 -10572,3448,10573,10574,10575,10576,10577,10578,10579,10580,10581,10582,10583,10584,10585,10586, #10448 -10587,10588,10589,10590,10591,10592,10593,10594,10595,10596,10597,10598,10599,10600,10601,10602, #10464 -10603,10604,10605,10606,10607,10608,10609,10610,10611,10612,10613,10614,10615,10616,10617,10618, #10480 -10619,10620,10621,10622,10623,10624,10625,10626,10627,4484,10628,10629,10630,10631,10632,4940, #10496 -10633,10634,10635,10636,10637,10638,10639,10640,10641,10642,10643,10644,10645,10646,10647,10648, #10512 -10649,10650,10651,10652,10653,10654,10655,10656,4941,10657,10658,10659,2599,10660,10661,10662, #10528 -10663,10664,10665,10666,3089,10667,10668,10669,10670,10671,10672,10673,10674,10675,10676,10677, #10544 -10678,10679,10680,4942,10681,10682,10683,10684,10685,10686,10687,10688,10689,10690,10691,10692, #10560 -10693,10694,10695,10696,10697,4485,10698,10699,10700,10701,10702,10703,10704,4943,10705,3677, #10576 -10706,10707,10708,10709,10710,10711,10712,4944,10713,10714,10715,10716,10717,10718,10719,10720, #10592 -10721,10722,10723,10724,10725,10726,10727,10728,4945,10729,10730,10731,10732,10733,10734,10735, #10608 -10736,10737,10738,10739,10740,10741,10742,10743,10744,10745,10746,10747,10748,10749,10750,10751, #10624 -10752,10753,10754,10755,10756,10757,10758,10759,10760,10761,4946,10762,10763,10764,10765,10766, #10640 -10767,4947,4948,10768,10769,10770,10771,10772,10773,10774,10775,10776,10777,10778,10779,10780, #10656 -10781,10782,10783,10784,10785,10786,10787,10788,10789,10790,10791,10792,10793,10794,10795,10796, #10672 -10797,10798,10799,10800,10801,10802,10803,10804,10805,10806,10807,10808,10809,10810,10811,10812, #10688 -10813,10814,10815,10816,10817,10818,10819,10820,10821,10822,10823,10824,10825,10826,10827,10828, #10704 -10829,10830,10831,10832,10833,10834,10835,10836,10837,10838,10839,10840,10841,10842,10843,10844, #10720 -10845,10846,10847,10848,10849,10850,10851,10852,10853,10854,10855,10856,10857,10858,10859,10860, #10736 -10861,10862,10863,10864,10865,10866,10867,10868,10869,10870,10871,10872,10873,10874,10875,10876, #10752 -10877,10878,4486,10879,10880,10881,10882,10883,10884,10885,4949,10886,10887,10888,10889,10890, #10768 -10891,10892,10893,10894,10895,10896,10897,10898,10899,10900,10901,10902,10903,10904,10905,10906, #10784 -10907,10908,10909,10910,10911,10912,10913,10914,10915,10916,10917,10918,10919,4487,10920,10921, #10800 -10922,10923,10924,10925,10926,10927,10928,10929,10930,10931,10932,4950,10933,10934,10935,10936, #10816 -10937,10938,10939,10940,10941,10942,10943,10944,10945,10946,10947,10948,10949,4488,10950,10951, #10832 -10952,10953,10954,10955,10956,10957,10958,10959,4190,10960,10961,10962,10963,10964,10965,10966, #10848 -10967,10968,10969,10970,10971,10972,10973,10974,10975,10976,10977,10978,10979,10980,10981,10982, #10864 -10983,10984,10985,10986,10987,10988,10989,10990,10991,10992,10993,10994,10995,10996,10997,10998, #10880 -10999,11000,11001,11002,11003,11004,11005,11006,3960,11007,11008,11009,11010,11011,11012,11013, #10896 -11014,11015,11016,11017,11018,11019,11020,11021,11022,11023,11024,11025,11026,11027,11028,11029, #10912 -11030,11031,11032,4951,11033,11034,11035,11036,11037,11038,11039,11040,11041,11042,11043,11044, #10928 -11045,11046,11047,4489,11048,11049,11050,11051,4952,11052,11053,11054,11055,11056,11057,11058, #10944 -4953,11059,11060,11061,11062,11063,11064,11065,11066,11067,11068,11069,11070,11071,4954,11072, #10960 -11073,11074,11075,11076,11077,11078,11079,11080,11081,11082,11083,11084,11085,11086,11087,11088, #10976 -11089,11090,11091,11092,11093,11094,11095,11096,11097,11098,11099,11100,11101,11102,11103,11104, #10992 -11105,11106,11107,11108,11109,11110,11111,11112,11113,11114,11115,3808,11116,11117,11118,11119, #11008 -11120,11121,11122,11123,11124,11125,11126,11127,11128,11129,11130,11131,11132,11133,11134,4955, #11024 -11135,11136,11137,11138,11139,11140,11141,11142,11143,11144,11145,11146,11147,11148,11149,11150, #11040 -11151,11152,11153,11154,11155,11156,11157,11158,11159,11160,11161,4956,11162,11163,11164,11165, #11056 -11166,11167,11168,11169,11170,11171,11172,11173,11174,11175,11176,11177,11178,11179,11180,4957, #11072 -11181,11182,11183,11184,11185,11186,4958,11187,11188,11189,11190,11191,11192,11193,11194,11195, #11088 -11196,11197,11198,11199,11200,3678,11201,11202,11203,11204,11205,11206,4191,11207,11208,11209, #11104 -11210,11211,11212,11213,11214,11215,11216,11217,11218,11219,11220,11221,11222,11223,11224,11225, #11120 -11226,11227,11228,11229,11230,11231,11232,11233,11234,11235,11236,11237,11238,11239,11240,11241, #11136 -11242,11243,11244,11245,11246,11247,11248,11249,11250,11251,4959,11252,11253,11254,11255,11256, #11152 -11257,11258,11259,11260,11261,11262,11263,11264,11265,11266,11267,11268,11269,11270,11271,11272, #11168 -11273,11274,11275,11276,11277,11278,11279,11280,11281,11282,11283,11284,11285,11286,11287,11288, #11184 -11289,11290,11291,11292,11293,11294,11295,11296,11297,11298,11299,11300,11301,11302,11303,11304, #11200 -11305,11306,11307,11308,11309,11310,11311,11312,11313,11314,3679,11315,11316,11317,11318,4490, #11216 -11319,11320,11321,11322,11323,11324,11325,11326,11327,11328,11329,11330,11331,11332,11333,11334, #11232 -11335,11336,11337,11338,11339,11340,11341,11342,11343,11344,11345,11346,11347,4960,11348,11349, #11248 -11350,11351,11352,11353,11354,11355,11356,11357,11358,11359,11360,11361,11362,11363,11364,11365, #11264 -11366,11367,11368,11369,11370,11371,11372,11373,11374,11375,11376,11377,3961,4961,11378,11379, #11280 -11380,11381,11382,11383,11384,11385,11386,11387,11388,11389,11390,11391,11392,11393,11394,11395, #11296 -11396,11397,4192,11398,11399,11400,11401,11402,11403,11404,11405,11406,11407,11408,11409,11410, #11312 -11411,4962,11412,11413,11414,11415,11416,11417,11418,11419,11420,11421,11422,11423,11424,11425, #11328 -11426,11427,11428,11429,11430,11431,11432,11433,11434,11435,11436,11437,11438,11439,11440,11441, #11344 -11442,11443,11444,11445,11446,11447,11448,11449,11450,11451,11452,11453,11454,11455,11456,11457, #11360 -11458,11459,11460,11461,11462,11463,11464,11465,11466,11467,11468,11469,4963,11470,11471,4491, #11376 -11472,11473,11474,11475,4964,11476,11477,11478,11479,11480,11481,11482,11483,11484,11485,11486, #11392 -11487,11488,11489,11490,11491,11492,4965,11493,11494,11495,11496,11497,11498,11499,11500,11501, #11408 -11502,11503,11504,11505,11506,11507,11508,11509,11510,11511,11512,11513,11514,11515,11516,11517, #11424 -11518,11519,11520,11521,11522,11523,11524,11525,11526,11527,11528,11529,3962,11530,11531,11532, #11440 -11533,11534,11535,11536,11537,11538,11539,11540,11541,11542,11543,11544,11545,11546,11547,11548, #11456 -11549,11550,11551,11552,11553,11554,11555,11556,11557,11558,11559,11560,11561,11562,11563,11564, #11472 -4193,4194,11565,11566,11567,11568,11569,11570,11571,11572,11573,11574,11575,11576,11577,11578, #11488 -11579,11580,11581,11582,11583,11584,11585,11586,11587,11588,11589,11590,11591,4966,4195,11592, #11504 -11593,11594,11595,11596,11597,11598,11599,11600,11601,11602,11603,11604,3090,11605,11606,11607, #11520 -11608,11609,11610,4967,11611,11612,11613,11614,11615,11616,11617,11618,11619,11620,11621,11622, #11536 -11623,11624,11625,11626,11627,11628,11629,11630,11631,11632,11633,11634,11635,11636,11637,11638, #11552 -11639,11640,11641,11642,11643,11644,11645,11646,11647,11648,11649,11650,11651,11652,11653,11654, #11568 -11655,11656,11657,11658,11659,11660,11661,11662,11663,11664,11665,11666,11667,11668,11669,11670, #11584 -11671,11672,11673,11674,4968,11675,11676,11677,11678,11679,11680,11681,11682,11683,11684,11685, #11600 -11686,11687,11688,11689,11690,11691,11692,11693,3809,11694,11695,11696,11697,11698,11699,11700, #11616 -11701,11702,11703,11704,11705,11706,11707,11708,11709,11710,11711,11712,11713,11714,11715,11716, #11632 -11717,11718,3553,11719,11720,11721,11722,11723,11724,11725,11726,11727,11728,11729,11730,4969, #11648 -11731,11732,11733,11734,11735,11736,11737,11738,11739,11740,4492,11741,11742,11743,11744,11745, #11664 -11746,11747,11748,11749,11750,11751,11752,4970,11753,11754,11755,11756,11757,11758,11759,11760, #11680 -11761,11762,11763,11764,11765,11766,11767,11768,11769,11770,11771,11772,11773,11774,11775,11776, #11696 -11777,11778,11779,11780,11781,11782,11783,11784,11785,11786,11787,11788,11789,11790,4971,11791, #11712 -11792,11793,11794,11795,11796,11797,4972,11798,11799,11800,11801,11802,11803,11804,11805,11806, #11728 -11807,11808,11809,11810,4973,11811,11812,11813,11814,11815,11816,11817,11818,11819,11820,11821, #11744 -11822,11823,11824,11825,11826,11827,11828,11829,11830,11831,11832,11833,11834,3680,3810,11835, #11760 -11836,4974,11837,11838,11839,11840,11841,11842,11843,11844,11845,11846,11847,11848,11849,11850, #11776 -11851,11852,11853,11854,11855,11856,11857,11858,11859,11860,11861,11862,11863,11864,11865,11866, #11792 -11867,11868,11869,11870,11871,11872,11873,11874,11875,11876,11877,11878,11879,11880,11881,11882, #11808 -11883,11884,4493,11885,11886,11887,11888,11889,11890,11891,11892,11893,11894,11895,11896,11897, #11824 -11898,11899,11900,11901,11902,11903,11904,11905,11906,11907,11908,11909,11910,11911,11912,11913, #11840 -11914,11915,4975,11916,11917,11918,11919,11920,11921,11922,11923,11924,11925,11926,11927,11928, #11856 -11929,11930,11931,11932,11933,11934,11935,11936,11937,11938,11939,11940,11941,11942,11943,11944, #11872 -11945,11946,11947,11948,11949,4976,11950,11951,11952,11953,11954,11955,11956,11957,11958,11959, #11888 -11960,11961,11962,11963,11964,11965,11966,11967,11968,11969,11970,11971,11972,11973,11974,11975, #11904 -11976,11977,11978,11979,11980,11981,11982,11983,11984,11985,11986,11987,4196,11988,11989,11990, #11920 -11991,11992,4977,11993,11994,11995,11996,11997,11998,11999,12000,12001,12002,12003,12004,12005, #11936 -12006,12007,12008,12009,12010,12011,12012,12013,12014,12015,12016,12017,12018,12019,12020,12021, #11952 -12022,12023,12024,12025,12026,12027,12028,12029,12030,12031,12032,12033,12034,12035,12036,12037, #11968 -12038,12039,12040,12041,12042,12043,12044,12045,12046,12047,12048,12049,12050,12051,12052,12053, #11984 -12054,12055,12056,12057,12058,12059,12060,12061,4978,12062,12063,12064,12065,12066,12067,12068, #12000 -12069,12070,12071,12072,12073,12074,12075,12076,12077,12078,12079,12080,12081,12082,12083,12084, #12016 -12085,12086,12087,12088,12089,12090,12091,12092,12093,12094,12095,12096,12097,12098,12099,12100, #12032 -12101,12102,12103,12104,12105,12106,12107,12108,12109,12110,12111,12112,12113,12114,12115,12116, #12048 -12117,12118,12119,12120,12121,12122,12123,4979,12124,12125,12126,12127,12128,4197,12129,12130, #12064 -12131,12132,12133,12134,12135,12136,12137,12138,12139,12140,12141,12142,12143,12144,12145,12146, #12080 -12147,12148,12149,12150,12151,12152,12153,12154,4980,12155,12156,12157,12158,12159,12160,4494, #12096 -12161,12162,12163,12164,3811,12165,12166,12167,12168,12169,4495,12170,12171,4496,12172,12173, #12112 -12174,12175,12176,3812,12177,12178,12179,12180,12181,12182,12183,12184,12185,12186,12187,12188, #12128 -12189,12190,12191,12192,12193,12194,12195,12196,12197,12198,12199,12200,12201,12202,12203,12204, #12144 -12205,12206,12207,12208,12209,12210,12211,12212,12213,12214,12215,12216,12217,12218,12219,12220, #12160 -12221,4981,12222,12223,12224,12225,12226,12227,12228,12229,12230,12231,12232,12233,12234,12235, #12176 -4982,12236,12237,12238,12239,12240,12241,12242,12243,12244,12245,4983,12246,12247,12248,12249, #12192 -4984,12250,12251,12252,12253,12254,12255,12256,12257,12258,12259,12260,12261,12262,12263,12264, #12208 -4985,12265,4497,12266,12267,12268,12269,12270,12271,12272,12273,12274,12275,12276,12277,12278, #12224 -12279,12280,12281,12282,12283,12284,12285,12286,12287,4986,12288,12289,12290,12291,12292,12293, #12240 -12294,12295,12296,2473,12297,12298,12299,12300,12301,12302,12303,12304,12305,12306,12307,12308, #12256 -12309,12310,12311,12312,12313,12314,12315,12316,12317,12318,12319,3963,12320,12321,12322,12323, #12272 -12324,12325,12326,12327,12328,12329,12330,12331,12332,4987,12333,12334,12335,12336,12337,12338, #12288 -12339,12340,12341,12342,12343,12344,12345,12346,12347,12348,12349,12350,12351,12352,12353,12354, #12304 -12355,12356,12357,12358,12359,3964,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369, #12320 -12370,3965,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384, #12336 -12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400, #12352 -12401,12402,12403,12404,12405,12406,12407,12408,4988,12409,12410,12411,12412,12413,12414,12415, #12368 -12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431, #12384 -12432,12433,12434,12435,12436,12437,12438,3554,12439,12440,12441,12442,12443,12444,12445,12446, #12400 -12447,12448,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462, #12416 -12463,12464,4989,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477, #12432 -12478,12479,12480,4990,12481,12482,12483,12484,12485,12486,12487,12488,12489,4498,12490,12491, #12448 -12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507, #12464 -12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523, #12480 -12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,12535,12536,12537,12538,12539, #12496 -12540,12541,12542,12543,12544,12545,12546,12547,12548,12549,12550,12551,4991,12552,12553,12554, #12512 -12555,12556,12557,12558,12559,12560,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570, #12528 -12571,12572,12573,12574,12575,12576,12577,12578,3036,12579,12580,12581,12582,12583,3966,12584, #12544 -12585,12586,12587,12588,12589,12590,12591,12592,12593,12594,12595,12596,12597,12598,12599,12600, #12560 -12601,12602,12603,12604,12605,12606,12607,12608,12609,12610,12611,12612,12613,12614,12615,12616, #12576 -12617,12618,12619,12620,12621,12622,12623,12624,12625,12626,12627,12628,12629,12630,12631,12632, #12592 -12633,12634,12635,12636,12637,12638,12639,12640,12641,12642,12643,12644,12645,12646,4499,12647, #12608 -12648,12649,12650,12651,12652,12653,12654,12655,12656,12657,12658,12659,12660,12661,12662,12663, #12624 -12664,12665,12666,12667,12668,12669,12670,12671,12672,12673,12674,12675,12676,12677,12678,12679, #12640 -12680,12681,12682,12683,12684,12685,12686,12687,12688,12689,12690,12691,12692,12693,12694,12695, #12656 -12696,12697,12698,4992,12699,12700,12701,12702,12703,12704,12705,12706,12707,12708,12709,12710, #12672 -12711,12712,12713,12714,12715,12716,12717,12718,12719,12720,12721,12722,12723,12724,12725,12726, #12688 -12727,12728,12729,12730,12731,12732,12733,12734,12735,12736,12737,12738,12739,12740,12741,12742, #12704 -12743,12744,12745,12746,12747,12748,12749,12750,12751,12752,12753,12754,12755,12756,12757,12758, #12720 -12759,12760,12761,12762,12763,12764,12765,12766,12767,12768,12769,12770,12771,12772,12773,12774, #12736 -12775,12776,12777,12778,4993,2175,12779,12780,12781,12782,12783,12784,12785,12786,4500,12787, #12752 -12788,12789,12790,12791,12792,12793,12794,12795,12796,12797,12798,12799,12800,12801,12802,12803, #12768 -12804,12805,12806,12807,12808,12809,12810,12811,12812,12813,12814,12815,12816,12817,12818,12819, #12784 -12820,12821,12822,12823,12824,12825,12826,4198,3967,12827,12828,12829,12830,12831,12832,12833, #12800 -12834,12835,12836,12837,12838,12839,12840,12841,12842,12843,12844,12845,12846,12847,12848,12849, #12816 -12850,12851,12852,12853,12854,12855,12856,12857,12858,12859,12860,12861,4199,12862,12863,12864, #12832 -12865,12866,12867,12868,12869,12870,12871,12872,12873,12874,12875,12876,12877,12878,12879,12880, #12848 -12881,12882,12883,12884,12885,12886,12887,4501,12888,12889,12890,12891,12892,12893,12894,12895, #12864 -12896,12897,12898,12899,12900,12901,12902,12903,12904,12905,12906,12907,12908,12909,12910,12911, #12880 -12912,4994,12913,12914,12915,12916,12917,12918,12919,12920,12921,12922,12923,12924,12925,12926, #12896 -12927,12928,12929,12930,12931,12932,12933,12934,12935,12936,12937,12938,12939,12940,12941,12942, #12912 -12943,12944,12945,12946,12947,12948,12949,12950,12951,12952,12953,12954,12955,12956,1772,12957, #12928 -12958,12959,12960,12961,12962,12963,12964,12965,12966,12967,12968,12969,12970,12971,12972,12973, #12944 -12974,12975,12976,12977,12978,12979,12980,12981,12982,12983,12984,12985,12986,12987,12988,12989, #12960 -12990,12991,12992,12993,12994,12995,12996,12997,4502,12998,4503,12999,13000,13001,13002,13003, #12976 -4504,13004,13005,13006,13007,13008,13009,13010,13011,13012,13013,13014,13015,13016,13017,13018, #12992 -13019,13020,13021,13022,13023,13024,13025,13026,13027,13028,13029,3449,13030,13031,13032,13033, #13008 -13034,13035,13036,13037,13038,13039,13040,13041,13042,13043,13044,13045,13046,13047,13048,13049, #13024 -13050,13051,13052,13053,13054,13055,13056,13057,13058,13059,13060,13061,13062,13063,13064,13065, #13040 -13066,13067,13068,13069,13070,13071,13072,13073,13074,13075,13076,13077,13078,13079,13080,13081, #13056 -13082,13083,13084,13085,13086,13087,13088,13089,13090,13091,13092,13093,13094,13095,13096,13097, #13072 -13098,13099,13100,13101,13102,13103,13104,13105,13106,13107,13108,13109,13110,13111,13112,13113, #13088 -13114,13115,13116,13117,13118,3968,13119,4995,13120,13121,13122,13123,13124,13125,13126,13127, #13104 -4505,13128,13129,13130,13131,13132,13133,13134,4996,4506,13135,13136,13137,13138,13139,4997, #13120 -13140,13141,13142,13143,13144,13145,13146,13147,13148,13149,13150,13151,13152,13153,13154,13155, #13136 -13156,13157,13158,13159,4998,13160,13161,13162,13163,13164,13165,13166,13167,13168,13169,13170, #13152 -13171,13172,13173,13174,13175,13176,4999,13177,13178,13179,13180,13181,13182,13183,13184,13185, #13168 -13186,13187,13188,13189,13190,13191,13192,13193,13194,13195,13196,13197,13198,13199,13200,13201, #13184 -13202,13203,13204,13205,13206,5000,13207,13208,13209,13210,13211,13212,13213,13214,13215,13216, #13200 -13217,13218,13219,13220,13221,13222,13223,13224,13225,13226,13227,4200,5001,13228,13229,13230, #13216 -13231,13232,13233,13234,13235,13236,13237,13238,13239,13240,3969,13241,13242,13243,13244,3970, #13232 -13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13255,13256,13257,13258,13259,13260, #13248 -13261,13262,13263,13264,13265,13266,13267,13268,3450,13269,13270,13271,13272,13273,13274,13275, #13264 -13276,5002,13277,13278,13279,13280,13281,13282,13283,13284,13285,13286,13287,13288,13289,13290, #13280 -13291,13292,13293,13294,13295,13296,13297,13298,13299,13300,13301,13302,3813,13303,13304,13305, #13296 -13306,13307,13308,13309,13310,13311,13312,13313,13314,13315,13316,13317,13318,13319,13320,13321, #13312 -13322,13323,13324,13325,13326,13327,13328,4507,13329,13330,13331,13332,13333,13334,13335,13336, #13328 -13337,13338,13339,13340,13341,5003,13342,13343,13344,13345,13346,13347,13348,13349,13350,13351, #13344 -13352,13353,13354,13355,13356,13357,13358,13359,13360,13361,13362,13363,13364,13365,13366,13367, #13360 -5004,13368,13369,13370,13371,13372,13373,13374,13375,13376,13377,13378,13379,13380,13381,13382, #13376 -13383,13384,13385,13386,13387,13388,13389,13390,13391,13392,13393,13394,13395,13396,13397,13398, #13392 -13399,13400,13401,13402,13403,13404,13405,13406,13407,13408,13409,13410,13411,13412,13413,13414, #13408 -13415,13416,13417,13418,13419,13420,13421,13422,13423,13424,13425,13426,13427,13428,13429,13430, #13424 -13431,13432,4508,13433,13434,13435,4201,13436,13437,13438,13439,13440,13441,13442,13443,13444, #13440 -13445,13446,13447,13448,13449,13450,13451,13452,13453,13454,13455,13456,13457,5005,13458,13459, #13456 -13460,13461,13462,13463,13464,13465,13466,13467,13468,13469,13470,4509,13471,13472,13473,13474, #13472 -13475,13476,13477,13478,13479,13480,13481,13482,13483,13484,13485,13486,13487,13488,13489,13490, #13488 -13491,13492,13493,13494,13495,13496,13497,13498,13499,13500,13501,13502,13503,13504,13505,13506, #13504 -13507,13508,13509,13510,13511,13512,13513,13514,13515,13516,13517,13518,13519,13520,13521,13522, #13520 -13523,13524,13525,13526,13527,13528,13529,13530,13531,13532,13533,13534,13535,13536,13537,13538, #13536 -13539,13540,13541,13542,13543,13544,13545,13546,13547,13548,13549,13550,13551,13552,13553,13554, #13552 -13555,13556,13557,13558,13559,13560,13561,13562,13563,13564,13565,13566,13567,13568,13569,13570, #13568 -13571,13572,13573,13574,13575,13576,13577,13578,13579,13580,13581,13582,13583,13584,13585,13586, #13584 -13587,13588,13589,13590,13591,13592,13593,13594,13595,13596,13597,13598,13599,13600,13601,13602, #13600 -13603,13604,13605,13606,13607,13608,13609,13610,13611,13612,13613,13614,13615,13616,13617,13618, #13616 -13619,13620,13621,13622,13623,13624,13625,13626,13627,13628,13629,13630,13631,13632,13633,13634, #13632 -13635,13636,13637,13638,13639,13640,13641,13642,5006,13643,13644,13645,13646,13647,13648,13649, #13648 -13650,13651,5007,13652,13653,13654,13655,13656,13657,13658,13659,13660,13661,13662,13663,13664, #13664 -13665,13666,13667,13668,13669,13670,13671,13672,13673,13674,13675,13676,13677,13678,13679,13680, #13680 -13681,13682,13683,13684,13685,13686,13687,13688,13689,13690,13691,13692,13693,13694,13695,13696, #13696 -13697,13698,13699,13700,13701,13702,13703,13704,13705,13706,13707,13708,13709,13710,13711,13712, #13712 -13713,13714,13715,13716,13717,13718,13719,13720,13721,13722,13723,13724,13725,13726,13727,13728, #13728 -13729,13730,13731,13732,13733,13734,13735,13736,13737,13738,13739,13740,13741,13742,13743,13744, #13744 -13745,13746,13747,13748,13749,13750,13751,13752,13753,13754,13755,13756,13757,13758,13759,13760, #13760 -13761,13762,13763,13764,13765,13766,13767,13768,13769,13770,13771,13772,13773,13774,3273,13775, #13776 -13776,13777,13778,13779,13780,13781,13782,13783,13784,13785,13786,13787,13788,13789,13790,13791, #13792 -13792,13793,13794,13795,13796,13797,13798,13799,13800,13801,13802,13803,13804,13805,13806,13807, #13808 -13808,13809,13810,13811,13812,13813,13814,13815,13816,13817,13818,13819,13820,13821,13822,13823, #13824 -13824,13825,13826,13827,13828,13829,13830,13831,13832,13833,13834,13835,13836,13837,13838,13839, #13840 -13840,13841,13842,13843,13844,13845,13846,13847,13848,13849,13850,13851,13852,13853,13854,13855, #13856 -13856,13857,13858,13859,13860,13861,13862,13863,13864,13865,13866,13867,13868,13869,13870,13871, #13872 -13872,13873,13874,13875,13876,13877,13878,13879,13880,13881,13882,13883,13884,13885,13886,13887, #13888 -13888,13889,13890,13891,13892,13893,13894,13895,13896,13897,13898,13899,13900,13901,13902,13903, #13904 -13904,13905,13906,13907,13908,13909,13910,13911,13912,13913,13914,13915,13916,13917,13918,13919, #13920 -13920,13921,13922,13923,13924,13925,13926,13927,13928,13929,13930,13931,13932,13933,13934,13935, #13936 -13936,13937,13938,13939,13940,13941,13942,13943,13944,13945,13946,13947,13948,13949,13950,13951, #13952 -13952,13953,13954,13955,13956,13957,13958,13959,13960,13961,13962,13963,13964,13965,13966,13967, #13968 -13968,13969,13970,13971,13972) #13973 - -# flake8: noqa diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/charsetgroupprober.py b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/charsetgroupprober.py deleted file mode 100644 index 85e7a1c..0000000 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/charsetgroupprober.py +++ /dev/null @@ -1,106 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from . import constants -import sys -from .charsetprober import CharSetProber - - -class CharSetGroupProber(CharSetProber): - def __init__(self): - CharSetProber.__init__(self) - self._mActiveNum = 0 - self._mProbers = [] - self._mBestGuessProber = None - - def reset(self): - CharSetProber.reset(self) - self._mActiveNum = 0 - for prober in self._mProbers: - if prober: - prober.reset() - prober.active = True - self._mActiveNum += 1 - self._mBestGuessProber = None - - def get_charset_name(self): - if not self._mBestGuessProber: - self.get_confidence() - if not self._mBestGuessProber: - return None -# self._mBestGuessProber = self._mProbers[0] - return self._mBestGuessProber.get_charset_name() - - def feed(self, aBuf): - for prober in self._mProbers: - if not prober: - continue - if not prober.active: - continue - st = prober.feed(aBuf) - if not st: - continue - if st == constants.eFoundIt: - self._mBestGuessProber = prober - return self.get_state() - elif st == constants.eNotMe: - prober.active = False - self._mActiveNum -= 1 - if self._mActiveNum <= 0: - self._mState = constants.eNotMe - return self.get_state() - return self.get_state() - - def get_confidence(self): - st = self.get_state() - if st == constants.eFoundIt: - return 0.99 - elif st == constants.eNotMe: - return 0.01 - bestConf = 0.0 - self._mBestGuessProber = None - for prober in self._mProbers: - if not prober: - continue - if not prober.active: - if constants._debug: - sys.stderr.write(prober.get_charset_name() - + ' not active\n') - continue - cf = prober.get_confidence() - if constants._debug: - sys.stderr.write('%s confidence = %s\n' % - (prober.get_charset_name(), cf)) - if bestConf < cf: - bestConf = cf - self._mBestGuessProber = prober - if not self._mBestGuessProber: - return 0.0 - return bestConf -# else: -# self._mBestGuessProber = self._mProbers[0] -# return self._mBestGuessProber.get_confidence() diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/charsetprober.py b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/charsetprober.py deleted file mode 100644 index 9758171..0000000 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/charsetprober.py +++ /dev/null @@ -1,62 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from . import constants -import re - - -class CharSetProber: - def __init__(self): - pass - - def reset(self): - self._mState = constants.eDetecting - - def get_charset_name(self): - return None - - def feed(self, aBuf): - pass - - def get_state(self): - return self._mState - - def get_confidence(self): - return 0.0 - - def filter_high_bit_only(self, aBuf): - aBuf = re.sub(b'([\x00-\x7F])+', b' ', aBuf) - return aBuf - - def filter_without_english_letters(self, aBuf): - aBuf = re.sub(b'([A-Za-z])+', b' ', aBuf) - return aBuf - - def filter_with_english_letters(self, aBuf): - # TODO - return aBuf diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/codingstatemachine.py b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/codingstatemachine.py deleted file mode 100644 index 8dd8c91..0000000 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/codingstatemachine.py +++ /dev/null @@ -1,61 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .constants import eStart -from .compat import wrap_ord - - -class CodingStateMachine: - def __init__(self, sm): - self._mModel = sm - self._mCurrentBytePos = 0 - self._mCurrentCharLen = 0 - self.reset() - - def reset(self): - self._mCurrentState = eStart - - def next_state(self, c): - # for each byte we get its class - # if it is first byte, we also get byte length - # PY3K: aBuf is a byte stream, so c is an int, not a byte - byteCls = self._mModel['classTable'][wrap_ord(c)] - if self._mCurrentState == eStart: - self._mCurrentBytePos = 0 - self._mCurrentCharLen = self._mModel['charLenTable'][byteCls] - # from byte's class and stateTable, we get its next state - curr_state = (self._mCurrentState * self._mModel['classFactor'] - + byteCls) - self._mCurrentState = self._mModel['stateTable'][curr_state] - self._mCurrentBytePos += 1 - return self._mCurrentState - - def get_current_charlen(self): - return self._mCurrentCharLen - - def get_coding_state_machine(self): - return self._mModel['name'] diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/constants.py b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/constants.py deleted file mode 100644 index e4d148b..0000000 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/constants.py +++ /dev/null @@ -1,39 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -_debug = 0 - -eDetecting = 0 -eFoundIt = 1 -eNotMe = 2 - -eStart = 0 -eError = 1 -eItsMe = 2 - -SHORTCUT_THRESHOLD = 0.95 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/escprober.py b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/escprober.py deleted file mode 100644 index 80a844f..0000000 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/escprober.py +++ /dev/null @@ -1,86 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from . import constants -from .escsm import (HZSMModel, ISO2022CNSMModel, ISO2022JPSMModel, - ISO2022KRSMModel) -from .charsetprober import CharSetProber -from .codingstatemachine import CodingStateMachine -from .compat import wrap_ord - - -class EscCharSetProber(CharSetProber): - def __init__(self): - CharSetProber.__init__(self) - self._mCodingSM = [ - CodingStateMachine(HZSMModel), - CodingStateMachine(ISO2022CNSMModel), - CodingStateMachine(ISO2022JPSMModel), - CodingStateMachine(ISO2022KRSMModel) - ] - self.reset() - - def reset(self): - CharSetProber.reset(self) - for codingSM in self._mCodingSM: - if not codingSM: - continue - codingSM.active = True - codingSM.reset() - self._mActiveSM = len(self._mCodingSM) - self._mDetectedCharset = None - - def get_charset_name(self): - return self._mDetectedCharset - - def get_confidence(self): - if self._mDetectedCharset: - return 0.99 - else: - return 0.00 - - def feed(self, aBuf): - for c in aBuf: - # PY3K: aBuf is a byte array, so c is an int, not a byte - for codingSM in self._mCodingSM: - if not codingSM: - continue - if not codingSM.active: - continue - codingState = codingSM.next_state(wrap_ord(c)) - if codingState == constants.eError: - codingSM.active = False - self._mActiveSM -= 1 - if self._mActiveSM <= 0: - self._mState = constants.eNotMe - return self.get_state() - elif codingState == constants.eItsMe: - self._mState = constants.eFoundIt - self._mDetectedCharset = codingSM.get_coding_state_machine() # nopep8 - return self.get_state() - - return self.get_state() diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/escsm.py b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/escsm.py deleted file mode 100644 index bd302b4..0000000 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/escsm.py +++ /dev/null @@ -1,242 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .constants import eStart, eError, eItsMe - -HZ_cls = ( -1,0,0,0,0,0,0,0, # 00 - 07 -0,0,0,0,0,0,0,0, # 08 - 0f -0,0,0,0,0,0,0,0, # 10 - 17 -0,0,0,1,0,0,0,0, # 18 - 1f -0,0,0,0,0,0,0,0, # 20 - 27 -0,0,0,0,0,0,0,0, # 28 - 2f -0,0,0,0,0,0,0,0, # 30 - 37 -0,0,0,0,0,0,0,0, # 38 - 3f -0,0,0,0,0,0,0,0, # 40 - 47 -0,0,0,0,0,0,0,0, # 48 - 4f -0,0,0,0,0,0,0,0, # 50 - 57 -0,0,0,0,0,0,0,0, # 58 - 5f -0,0,0,0,0,0,0,0, # 60 - 67 -0,0,0,0,0,0,0,0, # 68 - 6f -0,0,0,0,0,0,0,0, # 70 - 77 -0,0,0,4,0,5,2,0, # 78 - 7f -1,1,1,1,1,1,1,1, # 80 - 87 -1,1,1,1,1,1,1,1, # 88 - 8f -1,1,1,1,1,1,1,1, # 90 - 97 -1,1,1,1,1,1,1,1, # 98 - 9f -1,1,1,1,1,1,1,1, # a0 - a7 -1,1,1,1,1,1,1,1, # a8 - af -1,1,1,1,1,1,1,1, # b0 - b7 -1,1,1,1,1,1,1,1, # b8 - bf -1,1,1,1,1,1,1,1, # c0 - c7 -1,1,1,1,1,1,1,1, # c8 - cf -1,1,1,1,1,1,1,1, # d0 - d7 -1,1,1,1,1,1,1,1, # d8 - df -1,1,1,1,1,1,1,1, # e0 - e7 -1,1,1,1,1,1,1,1, # e8 - ef -1,1,1,1,1,1,1,1, # f0 - f7 -1,1,1,1,1,1,1,1, # f8 - ff -) - -HZ_st = ( -eStart,eError, 3,eStart,eStart,eStart,eError,eError,# 00-07 -eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,# 08-0f -eItsMe,eItsMe,eError,eError,eStart,eStart, 4,eError,# 10-17 - 5,eError, 6,eError, 5, 5, 4,eError,# 18-1f - 4,eError, 4, 4, 4,eError, 4,eError,# 20-27 - 4,eItsMe,eStart,eStart,eStart,eStart,eStart,eStart,# 28-2f -) - -HZCharLenTable = (0, 0, 0, 0, 0, 0) - -HZSMModel = {'classTable': HZ_cls, - 'classFactor': 6, - 'stateTable': HZ_st, - 'charLenTable': HZCharLenTable, - 'name': "HZ-GB-2312"} - -ISO2022CN_cls = ( -2,0,0,0,0,0,0,0, # 00 - 07 -0,0,0,0,0,0,0,0, # 08 - 0f -0,0,0,0,0,0,0,0, # 10 - 17 -0,0,0,1,0,0,0,0, # 18 - 1f -0,0,0,0,0,0,0,0, # 20 - 27 -0,3,0,0,0,0,0,0, # 28 - 2f -0,0,0,0,0,0,0,0, # 30 - 37 -0,0,0,0,0,0,0,0, # 38 - 3f -0,0,0,4,0,0,0,0, # 40 - 47 -0,0,0,0,0,0,0,0, # 48 - 4f -0,0,0,0,0,0,0,0, # 50 - 57 -0,0,0,0,0,0,0,0, # 58 - 5f -0,0,0,0,0,0,0,0, # 60 - 67 -0,0,0,0,0,0,0,0, # 68 - 6f -0,0,0,0,0,0,0,0, # 70 - 77 -0,0,0,0,0,0,0,0, # 78 - 7f -2,2,2,2,2,2,2,2, # 80 - 87 -2,2,2,2,2,2,2,2, # 88 - 8f -2,2,2,2,2,2,2,2, # 90 - 97 -2,2,2,2,2,2,2,2, # 98 - 9f -2,2,2,2,2,2,2,2, # a0 - a7 -2,2,2,2,2,2,2,2, # a8 - af -2,2,2,2,2,2,2,2, # b0 - b7 -2,2,2,2,2,2,2,2, # b8 - bf -2,2,2,2,2,2,2,2, # c0 - c7 -2,2,2,2,2,2,2,2, # c8 - cf -2,2,2,2,2,2,2,2, # d0 - d7 -2,2,2,2,2,2,2,2, # d8 - df -2,2,2,2,2,2,2,2, # e0 - e7 -2,2,2,2,2,2,2,2, # e8 - ef -2,2,2,2,2,2,2,2, # f0 - f7 -2,2,2,2,2,2,2,2, # f8 - ff -) - -ISO2022CN_st = ( -eStart, 3,eError,eStart,eStart,eStart,eStart,eStart,# 00-07 -eStart,eError,eError,eError,eError,eError,eError,eError,# 08-0f -eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,# 10-17 -eItsMe,eItsMe,eItsMe,eError,eError,eError, 4,eError,# 18-1f -eError,eError,eError,eItsMe,eError,eError,eError,eError,# 20-27 - 5, 6,eError,eError,eError,eError,eError,eError,# 28-2f -eError,eError,eError,eItsMe,eError,eError,eError,eError,# 30-37 -eError,eError,eError,eError,eError,eItsMe,eError,eStart,# 38-3f -) - -ISO2022CNCharLenTable = (0, 0, 0, 0, 0, 0, 0, 0, 0) - -ISO2022CNSMModel = {'classTable': ISO2022CN_cls, - 'classFactor': 9, - 'stateTable': ISO2022CN_st, - 'charLenTable': ISO2022CNCharLenTable, - 'name': "ISO-2022-CN"} - -ISO2022JP_cls = ( -2,0,0,0,0,0,0,0, # 00 - 07 -0,0,0,0,0,0,2,2, # 08 - 0f -0,0,0,0,0,0,0,0, # 10 - 17 -0,0,0,1,0,0,0,0, # 18 - 1f -0,0,0,0,7,0,0,0, # 20 - 27 -3,0,0,0,0,0,0,0, # 28 - 2f -0,0,0,0,0,0,0,0, # 30 - 37 -0,0,0,0,0,0,0,0, # 38 - 3f -6,0,4,0,8,0,0,0, # 40 - 47 -0,9,5,0,0,0,0,0, # 48 - 4f -0,0,0,0,0,0,0,0, # 50 - 57 -0,0,0,0,0,0,0,0, # 58 - 5f -0,0,0,0,0,0,0,0, # 60 - 67 -0,0,0,0,0,0,0,0, # 68 - 6f -0,0,0,0,0,0,0,0, # 70 - 77 -0,0,0,0,0,0,0,0, # 78 - 7f -2,2,2,2,2,2,2,2, # 80 - 87 -2,2,2,2,2,2,2,2, # 88 - 8f -2,2,2,2,2,2,2,2, # 90 - 97 -2,2,2,2,2,2,2,2, # 98 - 9f -2,2,2,2,2,2,2,2, # a0 - a7 -2,2,2,2,2,2,2,2, # a8 - af -2,2,2,2,2,2,2,2, # b0 - b7 -2,2,2,2,2,2,2,2, # b8 - bf -2,2,2,2,2,2,2,2, # c0 - c7 -2,2,2,2,2,2,2,2, # c8 - cf -2,2,2,2,2,2,2,2, # d0 - d7 -2,2,2,2,2,2,2,2, # d8 - df -2,2,2,2,2,2,2,2, # e0 - e7 -2,2,2,2,2,2,2,2, # e8 - ef -2,2,2,2,2,2,2,2, # f0 - f7 -2,2,2,2,2,2,2,2, # f8 - ff -) - -ISO2022JP_st = ( -eStart, 3,eError,eStart,eStart,eStart,eStart,eStart,# 00-07 -eStart,eStart,eError,eError,eError,eError,eError,eError,# 08-0f -eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,# 10-17 -eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eError,eError,# 18-1f -eError, 5,eError,eError,eError, 4,eError,eError,# 20-27 -eError,eError,eError, 6,eItsMe,eError,eItsMe,eError,# 28-2f -eError,eError,eError,eError,eError,eError,eItsMe,eItsMe,# 30-37 -eError,eError,eError,eItsMe,eError,eError,eError,eError,# 38-3f -eError,eError,eError,eError,eItsMe,eError,eStart,eStart,# 40-47 -) - -ISO2022JPCharLenTable = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0) - -ISO2022JPSMModel = {'classTable': ISO2022JP_cls, - 'classFactor': 10, - 'stateTable': ISO2022JP_st, - 'charLenTable': ISO2022JPCharLenTable, - 'name': "ISO-2022-JP"} - -ISO2022KR_cls = ( -2,0,0,0,0,0,0,0, # 00 - 07 -0,0,0,0,0,0,0,0, # 08 - 0f -0,0,0,0,0,0,0,0, # 10 - 17 -0,0,0,1,0,0,0,0, # 18 - 1f -0,0,0,0,3,0,0,0, # 20 - 27 -0,4,0,0,0,0,0,0, # 28 - 2f -0,0,0,0,0,0,0,0, # 30 - 37 -0,0,0,0,0,0,0,0, # 38 - 3f -0,0,0,5,0,0,0,0, # 40 - 47 -0,0,0,0,0,0,0,0, # 48 - 4f -0,0,0,0,0,0,0,0, # 50 - 57 -0,0,0,0,0,0,0,0, # 58 - 5f -0,0,0,0,0,0,0,0, # 60 - 67 -0,0,0,0,0,0,0,0, # 68 - 6f -0,0,0,0,0,0,0,0, # 70 - 77 -0,0,0,0,0,0,0,0, # 78 - 7f -2,2,2,2,2,2,2,2, # 80 - 87 -2,2,2,2,2,2,2,2, # 88 - 8f -2,2,2,2,2,2,2,2, # 90 - 97 -2,2,2,2,2,2,2,2, # 98 - 9f -2,2,2,2,2,2,2,2, # a0 - a7 -2,2,2,2,2,2,2,2, # a8 - af -2,2,2,2,2,2,2,2, # b0 - b7 -2,2,2,2,2,2,2,2, # b8 - bf -2,2,2,2,2,2,2,2, # c0 - c7 -2,2,2,2,2,2,2,2, # c8 - cf -2,2,2,2,2,2,2,2, # d0 - d7 -2,2,2,2,2,2,2,2, # d8 - df -2,2,2,2,2,2,2,2, # e0 - e7 -2,2,2,2,2,2,2,2, # e8 - ef -2,2,2,2,2,2,2,2, # f0 - f7 -2,2,2,2,2,2,2,2, # f8 - ff -) - -ISO2022KR_st = ( -eStart, 3,eError,eStart,eStart,eStart,eError,eError,# 00-07 -eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,# 08-0f -eItsMe,eItsMe,eError,eError,eError, 4,eError,eError,# 10-17 -eError,eError,eError,eError, 5,eError,eError,eError,# 18-1f -eError,eError,eError,eItsMe,eStart,eStart,eStart,eStart,# 20-27 -) - -ISO2022KRCharLenTable = (0, 0, 0, 0, 0, 0) - -ISO2022KRSMModel = {'classTable': ISO2022KR_cls, - 'classFactor': 6, - 'stateTable': ISO2022KR_st, - 'charLenTable': ISO2022KRCharLenTable, - 'name': "ISO-2022-KR"} - -# flake8: noqa diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/eucjpprober.py b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/eucjpprober.py deleted file mode 100644 index 8e64fdc..0000000 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/eucjpprober.py +++ /dev/null @@ -1,90 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -import sys -from . import constants -from .mbcharsetprober import MultiByteCharSetProber -from .codingstatemachine import CodingStateMachine -from .chardistribution import EUCJPDistributionAnalysis -from .jpcntx import EUCJPContextAnalysis -from .mbcssm import EUCJPSMModel - - -class EUCJPProber(MultiByteCharSetProber): - def __init__(self): - MultiByteCharSetProber.__init__(self) - self._mCodingSM = CodingStateMachine(EUCJPSMModel) - self._mDistributionAnalyzer = EUCJPDistributionAnalysis() - self._mContextAnalyzer = EUCJPContextAnalysis() - self.reset() - - def reset(self): - MultiByteCharSetProber.reset(self) - self._mContextAnalyzer.reset() - - def get_charset_name(self): - return "EUC-JP" - - def feed(self, aBuf): - aLen = len(aBuf) - for i in range(0, aLen): - # PY3K: aBuf is a byte array, so aBuf[i] is an int, not a byte - codingState = self._mCodingSM.next_state(aBuf[i]) - if codingState == constants.eError: - if constants._debug: - sys.stderr.write(self.get_charset_name() - + ' prober hit error at byte ' + str(i) - + '\n') - self._mState = constants.eNotMe - break - elif codingState == constants.eItsMe: - self._mState = constants.eFoundIt - break - elif codingState == constants.eStart: - charLen = self._mCodingSM.get_current_charlen() - if i == 0: - self._mLastChar[1] = aBuf[0] - self._mContextAnalyzer.feed(self._mLastChar, charLen) - self._mDistributionAnalyzer.feed(self._mLastChar, charLen) - else: - self._mContextAnalyzer.feed(aBuf[i - 1:i + 1], charLen) - self._mDistributionAnalyzer.feed(aBuf[i - 1:i + 1], - charLen) - - self._mLastChar[0] = aBuf[aLen - 1] - - if self.get_state() == constants.eDetecting: - if (self._mContextAnalyzer.got_enough_data() and - (self.get_confidence() > constants.SHORTCUT_THRESHOLD)): - self._mState = constants.eFoundIt - - return self.get_state() - - def get_confidence(self): - contxtCf = self._mContextAnalyzer.get_confidence() - distribCf = self._mDistributionAnalyzer.get_confidence() - return max(contxtCf, distribCf) diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/euckrfreq.py b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/euckrfreq.py deleted file mode 100644 index a179e4c..0000000 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/euckrfreq.py +++ /dev/null @@ -1,596 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# Sampling from about 20M text materials include literature and computer technology - -# 128 --> 0.79 -# 256 --> 0.92 -# 512 --> 0.986 -# 1024 --> 0.99944 -# 2048 --> 0.99999 -# -# Idea Distribution Ratio = 0.98653 / (1-0.98653) = 73.24 -# Random Distribution Ration = 512 / (2350-512) = 0.279. -# -# Typical Distribution Ratio - -EUCKR_TYPICAL_DISTRIBUTION_RATIO = 6.0 - -EUCKR_TABLE_SIZE = 2352 - -# Char to FreqOrder table , -EUCKRCharToFreqOrder = ( \ - 13, 130, 120,1396, 481,1719,1720, 328, 609, 212,1721, 707, 400, 299,1722, 87, -1397,1723, 104, 536,1117,1203,1724,1267, 685,1268, 508,1725,1726,1727,1728,1398, -1399,1729,1730,1731, 141, 621, 326,1057, 368,1732, 267, 488, 20,1733,1269,1734, - 945,1400,1735, 47, 904,1270,1736,1737, 773, 248,1738, 409, 313, 786, 429,1739, - 116, 987, 813,1401, 683, 75,1204, 145,1740,1741,1742,1743, 16, 847, 667, 622, - 708,1744,1745,1746, 966, 787, 304, 129,1747, 60, 820, 123, 676,1748,1749,1750, -1751, 617,1752, 626,1753,1754,1755,1756, 653,1757,1758,1759,1760,1761,1762, 856, - 344,1763,1764,1765,1766, 89, 401, 418, 806, 905, 848,1767,1768,1769, 946,1205, - 709,1770,1118,1771, 241,1772,1773,1774,1271,1775, 569,1776, 999,1777,1778,1779, -1780, 337, 751,1058, 28, 628, 254,1781, 177, 906, 270, 349, 891,1079,1782, 19, -1783, 379,1784, 315,1785, 629, 754,1402, 559,1786, 636, 203,1206,1787, 710, 567, -1788, 935, 814,1789,1790,1207, 766, 528,1791,1792,1208,1793,1794,1795,1796,1797, -1403,1798,1799, 533,1059,1404,1405,1156,1406, 936, 884,1080,1800, 351,1801,1802, -1803,1804,1805, 801,1806,1807,1808,1119,1809,1157, 714, 474,1407,1810, 298, 899, - 885,1811,1120, 802,1158,1812, 892,1813,1814,1408, 659,1815,1816,1121,1817,1818, -1819,1820,1821,1822, 319,1823, 594, 545,1824, 815, 937,1209,1825,1826, 573,1409, -1022,1827,1210,1828,1829,1830,1831,1832,1833, 556, 722, 807,1122,1060,1834, 697, -1835, 900, 557, 715,1836,1410, 540,1411, 752,1159, 294, 597,1211, 976, 803, 770, -1412,1837,1838, 39, 794,1413, 358,1839, 371, 925,1840, 453, 661, 788, 531, 723, - 544,1023,1081, 869, 91,1841, 392, 430, 790, 602,1414, 677,1082, 457,1415,1416, -1842,1843, 475, 327,1024,1417, 795, 121,1844, 733, 403,1418,1845,1846,1847, 300, - 119, 711,1212, 627,1848,1272, 207,1849,1850, 796,1213, 382,1851, 519,1852,1083, - 893,1853,1854,1855, 367, 809, 487, 671,1856, 663,1857,1858, 956, 471, 306, 857, -1859,1860,1160,1084,1861,1862,1863,1864,1865,1061,1866,1867,1868,1869,1870,1871, - 282, 96, 574,1872, 502,1085,1873,1214,1874, 907,1875,1876, 827, 977,1419,1420, -1421, 268,1877,1422,1878,1879,1880, 308,1881, 2, 537,1882,1883,1215,1884,1885, - 127, 791,1886,1273,1423,1887, 34, 336, 404, 643,1888, 571, 654, 894, 840,1889, - 0, 886,1274, 122, 575, 260, 908, 938,1890,1275, 410, 316,1891,1892, 100,1893, -1894,1123, 48,1161,1124,1025,1895, 633, 901,1276,1896,1897, 115, 816,1898, 317, -1899, 694,1900, 909, 734,1424, 572, 866,1425, 691, 85, 524,1010, 543, 394, 841, -1901,1902,1903,1026,1904,1905,1906,1907,1908,1909, 30, 451, 651, 988, 310,1910, -1911,1426, 810,1216, 93,1912,1913,1277,1217,1914, 858, 759, 45, 58, 181, 610, - 269,1915,1916, 131,1062, 551, 443,1000, 821,1427, 957, 895,1086,1917,1918, 375, -1919, 359,1920, 687,1921, 822,1922, 293,1923,1924, 40, 662, 118, 692, 29, 939, - 887, 640, 482, 174,1925, 69,1162, 728,1428, 910,1926,1278,1218,1279, 386, 870, - 217, 854,1163, 823,1927,1928,1929,1930, 834,1931, 78,1932, 859,1933,1063,1934, -1935,1936,1937, 438,1164, 208, 595,1938,1939,1940,1941,1219,1125,1942, 280, 888, -1429,1430,1220,1431,1943,1944,1945,1946,1947,1280, 150, 510,1432,1948,1949,1950, -1951,1952,1953,1954,1011,1087,1955,1433,1043,1956, 881,1957, 614, 958,1064,1065, -1221,1958, 638,1001, 860, 967, 896,1434, 989, 492, 553,1281,1165,1959,1282,1002, -1283,1222,1960,1961,1962,1963, 36, 383, 228, 753, 247, 454,1964, 876, 678,1965, -1966,1284, 126, 464, 490, 835, 136, 672, 529, 940,1088,1435, 473,1967,1968, 467, - 50, 390, 227, 587, 279, 378, 598, 792, 968, 240, 151, 160, 849, 882,1126,1285, - 639,1044, 133, 140, 288, 360, 811, 563,1027, 561, 142, 523,1969,1970,1971, 7, - 103, 296, 439, 407, 506, 634, 990,1972,1973,1974,1975, 645,1976,1977,1978,1979, -1980,1981, 236,1982,1436,1983,1984,1089, 192, 828, 618, 518,1166, 333,1127,1985, - 818,1223,1986,1987,1988,1989,1990,1991,1992,1993, 342,1128,1286, 746, 842,1994, -1995, 560, 223,1287, 98, 8, 189, 650, 978,1288,1996,1437,1997, 17, 345, 250, - 423, 277, 234, 512, 226, 97, 289, 42, 167,1998, 201,1999,2000, 843, 836, 824, - 532, 338, 783,1090, 182, 576, 436,1438,1439, 527, 500,2001, 947, 889,2002,2003, -2004,2005, 262, 600, 314, 447,2006, 547,2007, 693, 738,1129,2008, 71,1440, 745, - 619, 688,2009, 829,2010,2011, 147,2012, 33, 948,2013,2014, 74, 224,2015, 61, - 191, 918, 399, 637,2016,1028,1130, 257, 902,2017,2018,2019,2020,2021,2022,2023, -2024,2025,2026, 837,2027,2028,2029,2030, 179, 874, 591, 52, 724, 246,2031,2032, -2033,2034,1167, 969,2035,1289, 630, 605, 911,1091,1168,2036,2037,2038,1441, 912, -2039, 623,2040,2041, 253,1169,1290,2042,1442, 146, 620, 611, 577, 433,2043,1224, - 719,1170, 959, 440, 437, 534, 84, 388, 480,1131, 159, 220, 198, 679,2044,1012, - 819,1066,1443, 113,1225, 194, 318,1003,1029,2045,2046,2047,2048,1067,2049,2050, -2051,2052,2053, 59, 913, 112,2054, 632,2055, 455, 144, 739,1291,2056, 273, 681, - 499,2057, 448,2058,2059, 760,2060,2061, 970, 384, 169, 245,1132,2062,2063, 414, -1444,2064,2065, 41, 235,2066, 157, 252, 877, 568, 919, 789, 580,2067, 725,2068, -2069,1292,2070,2071,1445,2072,1446,2073,2074, 55, 588, 66,1447, 271,1092,2075, -1226,2076, 960,1013, 372,2077,2078,2079,2080,2081,1293,2082,2083,2084,2085, 850, -2086,2087,2088,2089,2090, 186,2091,1068, 180,2092,2093,2094, 109,1227, 522, 606, -2095, 867,1448,1093, 991,1171, 926, 353,1133,2096, 581,2097,2098,2099,1294,1449, -1450,2100, 596,1172,1014,1228,2101,1451,1295,1173,1229,2102,2103,1296,1134,1452, - 949,1135,2104,2105,1094,1453,1454,1455,2106,1095,2107,2108,2109,2110,2111,2112, -2113,2114,2115,2116,2117, 804,2118,2119,1230,1231, 805,1456, 405,1136,2120,2121, -2122,2123,2124, 720, 701,1297, 992,1457, 927,1004,2125,2126,2127,2128,2129,2130, - 22, 417,2131, 303,2132, 385,2133, 971, 520, 513,2134,1174, 73,1096, 231, 274, - 962,1458, 673,2135,1459,2136, 152,1137,2137,2138,2139,2140,1005,1138,1460,1139, -2141,2142,2143,2144, 11, 374, 844,2145, 154,1232, 46,1461,2146, 838, 830, 721, -1233, 106,2147, 90, 428, 462, 578, 566,1175, 352,2148,2149, 538,1234, 124,1298, -2150,1462, 761, 565,2151, 686,2152, 649,2153, 72, 173,2154, 460, 415,2155,1463, -2156,1235, 305,2157,2158,2159,2160,2161,2162, 579,2163,2164,2165,2166,2167, 747, -2168,2169,2170,2171,1464, 669,2172,2173,2174,2175,2176,1465,2177, 23, 530, 285, -2178, 335, 729,2179, 397,2180,2181,2182,1030,2183,2184, 698,2185,2186, 325,2187, -2188, 369,2189, 799,1097,1015, 348,2190,1069, 680,2191, 851,1466,2192,2193, 10, -2194, 613, 424,2195, 979, 108, 449, 589, 27, 172, 81,1031, 80, 774, 281, 350, -1032, 525, 301, 582,1176,2196, 674,1045,2197,2198,1467, 730, 762,2199,2200,2201, -2202,1468,2203, 993,2204,2205, 266,1070, 963,1140,2206,2207,2208, 664,1098, 972, -2209,2210,2211,1177,1469,1470, 871,2212,2213,2214,2215,2216,1471,2217,2218,2219, -2220,2221,2222,2223,2224,2225,2226,2227,1472,1236,2228,2229,2230,2231,2232,2233, -2234,2235,1299,2236,2237, 200,2238, 477, 373,2239,2240, 731, 825, 777,2241,2242, -2243, 521, 486, 548,2244,2245,2246,1473,1300, 53, 549, 137, 875, 76, 158,2247, -1301,1474, 469, 396,1016, 278, 712,2248, 321, 442, 503, 767, 744, 941,1237,1178, -1475,2249, 82, 178,1141,1179, 973,2250,1302,2251, 297,2252,2253, 570,2254,2255, -2256, 18, 450, 206,2257, 290, 292,1142,2258, 511, 162, 99, 346, 164, 735,2259, -1476,1477, 4, 554, 343, 798,1099,2260,1100,2261, 43, 171,1303, 139, 215,2262, -2263, 717, 775,2264,1033, 322, 216,2265, 831,2266, 149,2267,1304,2268,2269, 702, -1238, 135, 845, 347, 309,2270, 484,2271, 878, 655, 238,1006,1478,2272, 67,2273, - 295,2274,2275, 461,2276, 478, 942, 412,2277,1034,2278,2279,2280, 265,2281, 541, -2282,2283,2284,2285,2286, 70, 852,1071,2287,2288,2289,2290, 21, 56, 509, 117, - 432,2291,2292, 331, 980, 552,1101, 148, 284, 105, 393,1180,1239, 755,2293, 187, -2294,1046,1479,2295, 340,2296, 63,1047, 230,2297,2298,1305, 763,1306, 101, 800, - 808, 494,2299,2300,2301, 903,2302, 37,1072, 14, 5,2303, 79, 675,2304, 312, -2305,2306,2307,2308,2309,1480, 6,1307,2310,2311,2312, 1, 470, 35, 24, 229, -2313, 695, 210, 86, 778, 15, 784, 592, 779, 32, 77, 855, 964,2314, 259,2315, - 501, 380,2316,2317, 83, 981, 153, 689,1308,1481,1482,1483,2318,2319, 716,1484, -2320,2321,2322,2323,2324,2325,1485,2326,2327, 128, 57, 68, 261,1048, 211, 170, -1240, 31,2328, 51, 435, 742,2329,2330,2331, 635,2332, 264, 456,2333,2334,2335, - 425,2336,1486, 143, 507, 263, 943,2337, 363, 920,1487, 256,1488,1102, 243, 601, -1489,2338,2339,2340,2341,2342,2343,2344, 861,2345,2346,2347,2348,2349,2350, 395, -2351,1490,1491, 62, 535, 166, 225,2352,2353, 668, 419,1241, 138, 604, 928,2354, -1181,2355,1492,1493,2356,2357,2358,1143,2359, 696,2360, 387, 307,1309, 682, 476, -2361,2362, 332, 12, 222, 156,2363, 232,2364, 641, 276, 656, 517,1494,1495,1035, - 416, 736,1496,2365,1017, 586,2366,2367,2368,1497,2369, 242,2370,2371,2372,1498, -2373, 965, 713,2374,2375,2376,2377, 740, 982,1499, 944,1500,1007,2378,2379,1310, -1501,2380,2381,2382, 785, 329,2383,2384,1502,2385,2386,2387, 932,2388,1503,2389, -2390,2391,2392,1242,2393,2394,2395,2396,2397, 994, 950,2398,2399,2400,2401,1504, -1311,2402,2403,2404,2405,1049, 749,2406,2407, 853, 718,1144,1312,2408,1182,1505, -2409,2410, 255, 516, 479, 564, 550, 214,1506,1507,1313, 413, 239, 444, 339,1145, -1036,1508,1509,1314,1037,1510,1315,2411,1511,2412,2413,2414, 176, 703, 497, 624, - 593, 921, 302,2415, 341, 165,1103,1512,2416,1513,2417,2418,2419, 376,2420, 700, -2421,2422,2423, 258, 768,1316,2424,1183,2425, 995, 608,2426,2427,2428,2429, 221, -2430,2431,2432,2433,2434,2435,2436,2437, 195, 323, 726, 188, 897, 983,1317, 377, - 644,1050, 879,2438, 452,2439,2440,2441,2442,2443,2444, 914,2445,2446,2447,2448, - 915, 489,2449,1514,1184,2450,2451, 515, 64, 427, 495,2452, 583,2453, 483, 485, -1038, 562, 213,1515, 748, 666,2454,2455,2456,2457, 334,2458, 780, 996,1008, 705, -1243,2459,2460,2461,2462,2463, 114,2464, 493,1146, 366, 163,1516, 961,1104,2465, - 291,2466,1318,1105,2467,1517, 365,2468, 355, 951,1244,2469,1319,2470, 631,2471, -2472, 218,1320, 364, 320, 756,1518,1519,1321,1520,1322,2473,2474,2475,2476, 997, -2477,2478,2479,2480, 665,1185,2481, 916,1521,2482,2483,2484, 584, 684,2485,2486, - 797,2487,1051,1186,2488,2489,2490,1522,2491,2492, 370,2493,1039,1187, 65,2494, - 434, 205, 463,1188,2495, 125, 812, 391, 402, 826, 699, 286, 398, 155, 781, 771, - 585,2496, 590, 505,1073,2497, 599, 244, 219, 917,1018, 952, 646,1523,2498,1323, -2499,2500, 49, 984, 354, 741,2501, 625,2502,1324,2503,1019, 190, 357, 757, 491, - 95, 782, 868,2504,2505,2506,2507,2508,2509, 134,1524,1074, 422,1525, 898,2510, - 161,2511,2512,2513,2514, 769,2515,1526,2516,2517, 411,1325,2518, 472,1527,2519, -2520,2521,2522,2523,2524, 985,2525,2526,2527,2528,2529,2530, 764,2531,1245,2532, -2533, 25, 204, 311,2534, 496,2535,1052,2536,2537,2538,2539,2540,2541,2542, 199, - 704, 504, 468, 758, 657,1528, 196, 44, 839,1246, 272, 750,2543, 765, 862,2544, -2545,1326,2546, 132, 615, 933,2547, 732,2548,2549,2550,1189,1529,2551, 283,1247, -1053, 607, 929,2552,2553,2554, 930, 183, 872, 616,1040,1147,2555,1148,1020, 441, - 249,1075,2556,2557,2558, 466, 743,2559,2560,2561, 92, 514, 426, 420, 526,2562, -2563,2564,2565,2566,2567,2568, 185,2569,2570,2571,2572, 776,1530, 658,2573, 362, -2574, 361, 922,1076, 793,2575,2576,2577,2578,2579,2580,1531, 251,2581,2582,2583, -2584,1532, 54, 612, 237,1327,2585,2586, 275, 408, 647, 111,2587,1533,1106, 465, - 3, 458, 9, 38,2588, 107, 110, 890, 209, 26, 737, 498,2589,1534,2590, 431, - 202, 88,1535, 356, 287,1107, 660,1149,2591, 381,1536, 986,1150, 445,1248,1151, - 974,2592,2593, 846,2594, 446, 953, 184,1249,1250, 727,2595, 923, 193, 883,2596, -2597,2598, 102, 324, 539, 817,2599, 421,1041,2600, 832,2601, 94, 175, 197, 406, -2602, 459,2603,2604,2605,2606,2607, 330, 555,2608,2609,2610, 706,1108, 389,2611, -2612,2613,2614, 233,2615, 833, 558, 931, 954,1251,2616,2617,1537, 546,2618,2619, -1009,2620,2621,2622,1538, 690,1328,2623, 955,2624,1539,2625,2626, 772,2627,2628, -2629,2630,2631, 924, 648, 863, 603,2632,2633, 934,1540, 864, 865,2634, 642,1042, - 670,1190,2635,2636,2637,2638, 168,2639, 652, 873, 542,1054,1541,2640,2641,2642, # 512, 256 -#Everything below is of no interest for detection purpose -2643,2644,2645,2646,2647,2648,2649,2650,2651,2652,2653,2654,2655,2656,2657,2658, -2659,2660,2661,2662,2663,2664,2665,2666,2667,2668,2669,2670,2671,2672,2673,2674, -2675,2676,2677,2678,2679,2680,2681,2682,2683,2684,2685,2686,2687,2688,2689,2690, -2691,2692,2693,2694,2695,2696,2697,2698,2699,1542, 880,2700,2701,2702,2703,2704, -2705,2706,2707,2708,2709,2710,2711,2712,2713,2714,2715,2716,2717,2718,2719,2720, -2721,2722,2723,2724,2725,1543,2726,2727,2728,2729,2730,2731,2732,1544,2733,2734, -2735,2736,2737,2738,2739,2740,2741,2742,2743,2744,2745,2746,2747,2748,2749,2750, -2751,2752,2753,2754,1545,2755,2756,2757,2758,2759,2760,2761,2762,2763,2764,2765, -2766,1546,2767,1547,2768,2769,2770,2771,2772,2773,2774,2775,2776,2777,2778,2779, -2780,2781,2782,2783,2784,2785,2786,1548,2787,2788,2789,1109,2790,2791,2792,2793, -2794,2795,2796,2797,2798,2799,2800,2801,2802,2803,2804,2805,2806,2807,2808,2809, -2810,2811,2812,1329,2813,2814,2815,2816,2817,2818,2819,2820,2821,2822,2823,2824, -2825,2826,2827,2828,2829,2830,2831,2832,2833,2834,2835,2836,2837,2838,2839,2840, -2841,2842,2843,2844,2845,2846,2847,2848,2849,2850,2851,2852,2853,2854,2855,2856, -1549,2857,2858,2859,2860,1550,2861,2862,1551,2863,2864,2865,2866,2867,2868,2869, -2870,2871,2872,2873,2874,1110,1330,2875,2876,2877,2878,2879,2880,2881,2882,2883, -2884,2885,2886,2887,2888,2889,2890,2891,2892,2893,2894,2895,2896,2897,2898,2899, -2900,2901,2902,2903,2904,2905,2906,2907,2908,2909,2910,2911,2912,2913,2914,2915, -2916,2917,2918,2919,2920,2921,2922,2923,2924,2925,2926,2927,2928,2929,2930,1331, -2931,2932,2933,2934,2935,2936,2937,2938,2939,2940,2941,2942,2943,1552,2944,2945, -2946,2947,2948,2949,2950,2951,2952,2953,2954,2955,2956,2957,2958,2959,2960,2961, -2962,2963,2964,1252,2965,2966,2967,2968,2969,2970,2971,2972,2973,2974,2975,2976, -2977,2978,2979,2980,2981,2982,2983,2984,2985,2986,2987,2988,2989,2990,2991,2992, -2993,2994,2995,2996,2997,2998,2999,3000,3001,3002,3003,3004,3005,3006,3007,3008, -3009,3010,3011,3012,1553,3013,3014,3015,3016,3017,1554,3018,1332,3019,3020,3021, -3022,3023,3024,3025,3026,3027,3028,3029,3030,3031,3032,3033,3034,3035,3036,3037, -3038,3039,3040,3041,3042,3043,3044,3045,3046,3047,3048,3049,3050,1555,3051,3052, -3053,1556,1557,3054,3055,3056,3057,3058,3059,3060,3061,3062,3063,3064,3065,3066, -3067,1558,3068,3069,3070,3071,3072,3073,3074,3075,3076,1559,3077,3078,3079,3080, -3081,3082,3083,1253,3084,3085,3086,3087,3088,3089,3090,3091,3092,3093,3094,3095, -3096,3097,3098,3099,3100,3101,3102,3103,3104,3105,3106,3107,3108,1152,3109,3110, -3111,3112,3113,1560,3114,3115,3116,3117,1111,3118,3119,3120,3121,3122,3123,3124, -3125,3126,3127,3128,3129,3130,3131,3132,3133,3134,3135,3136,3137,3138,3139,3140, -3141,3142,3143,3144,3145,3146,3147,3148,3149,3150,3151,3152,3153,3154,3155,3156, -3157,3158,3159,3160,3161,3162,3163,3164,3165,3166,3167,3168,3169,3170,3171,3172, -3173,3174,3175,3176,1333,3177,3178,3179,3180,3181,3182,3183,3184,3185,3186,3187, -3188,3189,1561,3190,3191,1334,3192,3193,3194,3195,3196,3197,3198,3199,3200,3201, -3202,3203,3204,3205,3206,3207,3208,3209,3210,3211,3212,3213,3214,3215,3216,3217, -3218,3219,3220,3221,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232,3233, -3234,1562,3235,3236,3237,3238,3239,3240,3241,3242,3243,3244,3245,3246,3247,3248, -3249,3250,3251,3252,3253,3254,3255,3256,3257,3258,3259,3260,3261,3262,3263,3264, -3265,3266,3267,3268,3269,3270,3271,3272,3273,3274,3275,3276,3277,1563,3278,3279, -3280,3281,3282,3283,3284,3285,3286,3287,3288,3289,3290,3291,3292,3293,3294,3295, -3296,3297,3298,3299,3300,3301,3302,3303,3304,3305,3306,3307,3308,3309,3310,3311, -3312,3313,3314,3315,3316,3317,3318,3319,3320,3321,3322,3323,3324,3325,3326,3327, -3328,3329,3330,3331,3332,3333,3334,3335,3336,3337,3338,3339,3340,3341,3342,3343, -3344,3345,3346,3347,3348,3349,3350,3351,3352,3353,3354,3355,3356,3357,3358,3359, -3360,3361,3362,3363,3364,1335,3365,3366,3367,3368,3369,3370,3371,3372,3373,3374, -3375,3376,3377,3378,3379,3380,3381,3382,3383,3384,3385,3386,3387,1336,3388,3389, -3390,3391,3392,3393,3394,3395,3396,3397,3398,3399,3400,3401,3402,3403,3404,3405, -3406,3407,3408,3409,3410,3411,3412,3413,3414,1337,3415,3416,3417,3418,3419,1338, -3420,3421,3422,1564,1565,3423,3424,3425,3426,3427,3428,3429,3430,3431,1254,3432, -3433,3434,1339,3435,3436,3437,3438,3439,1566,3440,3441,3442,3443,3444,3445,3446, -3447,3448,3449,3450,3451,3452,3453,3454,1255,3455,3456,3457,3458,3459,1567,1191, -3460,1568,1569,3461,3462,3463,1570,3464,3465,3466,3467,3468,1571,3469,3470,3471, -3472,3473,1572,3474,3475,3476,3477,3478,3479,3480,3481,3482,3483,3484,3485,3486, -1340,3487,3488,3489,3490,3491,3492,1021,3493,3494,3495,3496,3497,3498,1573,3499, -1341,3500,3501,3502,3503,3504,3505,3506,3507,3508,3509,3510,3511,1342,3512,3513, -3514,3515,3516,1574,1343,3517,3518,3519,1575,3520,1576,3521,3522,3523,3524,3525, -3526,3527,3528,3529,3530,3531,3532,3533,3534,3535,3536,3537,3538,3539,3540,3541, -3542,3543,3544,3545,3546,3547,3548,3549,3550,3551,3552,3553,3554,3555,3556,3557, -3558,3559,3560,3561,3562,3563,3564,3565,3566,3567,3568,3569,3570,3571,3572,3573, -3574,3575,3576,3577,3578,3579,3580,1577,3581,3582,1578,3583,3584,3585,3586,3587, -3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603, -3604,1579,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618, -3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,1580,3630,3631,1581,3632, -3633,3634,3635,3636,3637,3638,3639,3640,3641,3642,3643,3644,3645,3646,3647,3648, -3649,3650,3651,3652,3653,3654,3655,3656,1582,3657,3658,3659,3660,3661,3662,3663, -3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3674,3675,3676,3677,3678,3679, -3680,3681,3682,3683,3684,3685,3686,3687,3688,3689,3690,3691,3692,3693,3694,3695, -3696,3697,3698,3699,3700,1192,3701,3702,3703,3704,1256,3705,3706,3707,3708,1583, -1257,3709,3710,3711,3712,3713,3714,3715,3716,1584,3717,3718,3719,3720,3721,3722, -3723,3724,3725,3726,3727,3728,3729,3730,3731,3732,3733,3734,3735,3736,3737,3738, -3739,3740,3741,3742,3743,3744,3745,1344,3746,3747,3748,3749,3750,3751,3752,3753, -3754,3755,3756,1585,3757,3758,3759,3760,3761,3762,3763,3764,3765,3766,1586,3767, -3768,3769,3770,3771,3772,3773,3774,3775,3776,3777,3778,1345,3779,3780,3781,3782, -3783,3784,3785,3786,3787,3788,3789,3790,3791,3792,3793,3794,3795,1346,1587,3796, -3797,1588,3798,3799,3800,3801,3802,3803,3804,3805,3806,1347,3807,3808,3809,3810, -3811,1589,3812,3813,3814,3815,3816,3817,3818,3819,3820,3821,1590,3822,3823,1591, -1348,3824,3825,3826,3827,3828,3829,3830,1592,3831,3832,1593,3833,3834,3835,3836, -3837,3838,3839,3840,3841,3842,3843,3844,1349,3845,3846,3847,3848,3849,3850,3851, -3852,3853,3854,3855,3856,3857,3858,1594,3859,3860,3861,3862,3863,3864,3865,3866, -3867,3868,3869,1595,3870,3871,3872,3873,1596,3874,3875,3876,3877,3878,3879,3880, -3881,3882,3883,3884,3885,3886,1597,3887,3888,3889,3890,3891,3892,3893,3894,3895, -1598,3896,3897,3898,1599,1600,3899,1350,3900,1351,3901,3902,1352,3903,3904,3905, -3906,3907,3908,3909,3910,3911,3912,3913,3914,3915,3916,3917,3918,3919,3920,3921, -3922,3923,3924,1258,3925,3926,3927,3928,3929,3930,3931,1193,3932,1601,3933,3934, -3935,3936,3937,3938,3939,3940,3941,3942,3943,1602,3944,3945,3946,3947,3948,1603, -3949,3950,3951,3952,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964, -3965,1604,3966,3967,3968,3969,3970,3971,3972,3973,3974,3975,3976,3977,1353,3978, -3979,3980,3981,3982,3983,3984,3985,3986,3987,3988,3989,3990,3991,1354,3992,3993, -3994,3995,3996,3997,3998,3999,4000,4001,4002,4003,4004,4005,4006,4007,4008,4009, -4010,4011,4012,4013,4014,4015,4016,4017,4018,4019,4020,4021,4022,4023,1355,4024, -4025,4026,4027,4028,4029,4030,4031,4032,4033,4034,4035,4036,4037,4038,4039,4040, -1605,4041,4042,4043,4044,4045,4046,4047,4048,4049,4050,4051,4052,4053,4054,4055, -4056,4057,4058,4059,4060,1606,4061,4062,4063,4064,1607,4065,4066,4067,4068,4069, -4070,4071,4072,4073,4074,4075,4076,1194,4077,4078,1608,4079,4080,4081,4082,4083, -4084,4085,4086,4087,1609,4088,4089,4090,4091,4092,4093,4094,4095,4096,4097,4098, -4099,4100,4101,4102,4103,4104,4105,4106,4107,4108,1259,4109,4110,4111,4112,4113, -4114,4115,4116,4117,4118,4119,4120,4121,4122,4123,4124,1195,4125,4126,4127,1610, -4128,4129,4130,4131,4132,4133,4134,4135,4136,4137,1356,4138,4139,4140,4141,4142, -4143,4144,1611,4145,4146,4147,4148,4149,4150,4151,4152,4153,4154,4155,4156,4157, -4158,4159,4160,4161,4162,4163,4164,4165,4166,4167,4168,4169,4170,4171,4172,4173, -4174,4175,4176,4177,4178,4179,4180,4181,4182,4183,4184,4185,4186,4187,4188,4189, -4190,4191,4192,4193,4194,4195,4196,4197,4198,4199,4200,4201,4202,4203,4204,4205, -4206,4207,4208,4209,4210,4211,4212,4213,4214,4215,4216,4217,4218,4219,1612,4220, -4221,4222,4223,4224,4225,4226,4227,1357,4228,1613,4229,4230,4231,4232,4233,4234, -4235,4236,4237,4238,4239,4240,4241,4242,4243,1614,4244,4245,4246,4247,4248,4249, -4250,4251,4252,4253,4254,4255,4256,4257,4258,4259,4260,4261,4262,4263,4264,4265, -4266,4267,4268,4269,4270,1196,1358,4271,4272,4273,4274,4275,4276,4277,4278,4279, -4280,4281,4282,4283,4284,4285,4286,4287,1615,4288,4289,4290,4291,4292,4293,4294, -4295,4296,4297,4298,4299,4300,4301,4302,4303,4304,4305,4306,4307,4308,4309,4310, -4311,4312,4313,4314,4315,4316,4317,4318,4319,4320,4321,4322,4323,4324,4325,4326, -4327,4328,4329,4330,4331,4332,4333,4334,1616,4335,4336,4337,4338,4339,4340,4341, -4342,4343,4344,4345,4346,4347,4348,4349,4350,4351,4352,4353,4354,4355,4356,4357, -4358,4359,4360,1617,4361,4362,4363,4364,4365,1618,4366,4367,4368,4369,4370,4371, -4372,4373,4374,4375,4376,4377,4378,4379,4380,4381,4382,4383,4384,4385,4386,4387, -4388,4389,4390,4391,4392,4393,4394,4395,4396,4397,4398,4399,4400,4401,4402,4403, -4404,4405,4406,4407,4408,4409,4410,4411,4412,4413,4414,4415,4416,1619,4417,4418, -4419,4420,4421,4422,4423,4424,4425,1112,4426,4427,4428,4429,4430,1620,4431,4432, -4433,4434,4435,4436,4437,4438,4439,4440,4441,4442,1260,1261,4443,4444,4445,4446, -4447,4448,4449,4450,4451,4452,4453,4454,4455,1359,4456,4457,4458,4459,4460,4461, -4462,4463,4464,4465,1621,4466,4467,4468,4469,4470,4471,4472,4473,4474,4475,4476, -4477,4478,4479,4480,4481,4482,4483,4484,4485,4486,4487,4488,4489,1055,4490,4491, -4492,4493,4494,4495,4496,4497,4498,4499,4500,4501,4502,4503,4504,4505,4506,4507, -4508,4509,4510,4511,4512,4513,4514,4515,4516,4517,4518,1622,4519,4520,4521,1623, -4522,4523,4524,4525,4526,4527,4528,4529,4530,4531,4532,4533,4534,4535,1360,4536, -4537,4538,4539,4540,4541,4542,4543, 975,4544,4545,4546,4547,4548,4549,4550,4551, -4552,4553,4554,4555,4556,4557,4558,4559,4560,4561,4562,4563,4564,4565,4566,4567, -4568,4569,4570,4571,1624,4572,4573,4574,4575,4576,1625,4577,4578,4579,4580,4581, -4582,4583,4584,1626,4585,4586,4587,4588,4589,4590,4591,4592,4593,4594,4595,1627, -4596,4597,4598,4599,4600,4601,4602,4603,4604,4605,4606,4607,4608,4609,4610,4611, -4612,4613,4614,4615,1628,4616,4617,4618,4619,4620,4621,4622,4623,4624,4625,4626, -4627,4628,4629,4630,4631,4632,4633,4634,4635,4636,4637,4638,4639,4640,4641,4642, -4643,4644,4645,4646,4647,4648,4649,1361,4650,4651,4652,4653,4654,4655,4656,4657, -4658,4659,4660,4661,1362,4662,4663,4664,4665,4666,4667,4668,4669,4670,4671,4672, -4673,4674,4675,4676,4677,4678,4679,4680,4681,4682,1629,4683,4684,4685,4686,4687, -1630,4688,4689,4690,4691,1153,4692,4693,4694,1113,4695,4696,4697,4698,4699,4700, -4701,4702,4703,4704,4705,4706,4707,4708,4709,4710,4711,1197,4712,4713,4714,4715, -4716,4717,4718,4719,4720,4721,4722,4723,4724,4725,4726,4727,4728,4729,4730,4731, -4732,4733,4734,4735,1631,4736,1632,4737,4738,4739,4740,4741,4742,4743,4744,1633, -4745,4746,4747,4748,4749,1262,4750,4751,4752,4753,4754,1363,4755,4756,4757,4758, -4759,4760,4761,4762,4763,4764,4765,4766,4767,4768,1634,4769,4770,4771,4772,4773, -4774,4775,4776,4777,4778,1635,4779,4780,4781,4782,4783,4784,4785,4786,4787,4788, -4789,1636,4790,4791,4792,4793,4794,4795,4796,4797,4798,4799,4800,4801,4802,4803, -4804,4805,4806,1637,4807,4808,4809,1638,4810,4811,4812,4813,4814,4815,4816,4817, -4818,1639,4819,4820,4821,4822,4823,4824,4825,4826,4827,4828,4829,4830,4831,4832, -4833,1077,4834,4835,4836,4837,4838,4839,4840,4841,4842,4843,4844,4845,4846,4847, -4848,4849,4850,4851,4852,4853,4854,4855,4856,4857,4858,4859,4860,4861,4862,4863, -4864,4865,4866,4867,4868,4869,4870,4871,4872,4873,4874,4875,4876,4877,4878,4879, -4880,4881,4882,4883,1640,4884,4885,1641,4886,4887,4888,4889,4890,4891,4892,4893, -4894,4895,4896,4897,4898,4899,4900,4901,4902,4903,4904,4905,4906,4907,4908,4909, -4910,4911,1642,4912,4913,4914,1364,4915,4916,4917,4918,4919,4920,4921,4922,4923, -4924,4925,4926,4927,4928,4929,4930,4931,1643,4932,4933,4934,4935,4936,4937,4938, -4939,4940,4941,4942,4943,4944,4945,4946,4947,4948,4949,4950,4951,4952,4953,4954, -4955,4956,4957,4958,4959,4960,4961,4962,4963,4964,4965,4966,4967,4968,4969,4970, -4971,4972,4973,4974,4975,4976,4977,4978,4979,4980,1644,4981,4982,4983,4984,1645, -4985,4986,1646,4987,4988,4989,4990,4991,4992,4993,4994,4995,4996,4997,4998,4999, -5000,5001,5002,5003,5004,5005,1647,5006,1648,5007,5008,5009,5010,5011,5012,1078, -5013,5014,5015,5016,5017,5018,5019,5020,5021,5022,5023,5024,5025,5026,5027,5028, -1365,5029,5030,5031,5032,5033,5034,5035,5036,5037,5038,5039,1649,5040,5041,5042, -5043,5044,5045,1366,5046,5047,5048,5049,5050,5051,5052,5053,5054,5055,1650,5056, -5057,5058,5059,5060,5061,5062,5063,5064,5065,5066,5067,5068,5069,5070,5071,5072, -5073,5074,5075,5076,5077,1651,5078,5079,5080,5081,5082,5083,5084,5085,5086,5087, -5088,5089,5090,5091,5092,5093,5094,5095,5096,5097,5098,5099,5100,5101,5102,5103, -5104,5105,5106,5107,5108,5109,5110,1652,5111,5112,5113,5114,5115,5116,5117,5118, -1367,5119,5120,5121,5122,5123,5124,5125,5126,5127,5128,5129,1653,5130,5131,5132, -5133,5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5145,5146,5147,5148, -5149,1368,5150,1654,5151,1369,5152,5153,5154,5155,5156,5157,5158,5159,5160,5161, -5162,5163,5164,5165,5166,5167,5168,5169,5170,5171,5172,5173,5174,5175,5176,5177, -5178,1370,5179,5180,5181,5182,5183,5184,5185,5186,5187,5188,5189,5190,5191,5192, -5193,5194,5195,5196,5197,5198,1655,5199,5200,5201,5202,1656,5203,5204,5205,5206, -1371,5207,1372,5208,5209,5210,5211,1373,5212,5213,1374,5214,5215,5216,5217,5218, -5219,5220,5221,5222,5223,5224,5225,5226,5227,5228,5229,5230,5231,5232,5233,5234, -5235,5236,5237,5238,5239,5240,5241,5242,5243,5244,5245,5246,5247,1657,5248,5249, -5250,5251,1658,1263,5252,5253,5254,5255,5256,1375,5257,5258,5259,5260,5261,5262, -5263,5264,5265,5266,5267,5268,5269,5270,5271,5272,5273,5274,5275,5276,5277,5278, -5279,5280,5281,5282,5283,1659,5284,5285,5286,5287,5288,5289,5290,5291,5292,5293, -5294,5295,5296,5297,5298,5299,5300,1660,5301,5302,5303,5304,5305,5306,5307,5308, -5309,5310,5311,5312,5313,5314,5315,5316,5317,5318,5319,5320,5321,1376,5322,5323, -5324,5325,5326,5327,5328,5329,5330,5331,5332,5333,1198,5334,5335,5336,5337,5338, -5339,5340,5341,5342,5343,1661,5344,5345,5346,5347,5348,5349,5350,5351,5352,5353, -5354,5355,5356,5357,5358,5359,5360,5361,5362,5363,5364,5365,5366,5367,5368,5369, -5370,5371,5372,5373,5374,5375,5376,5377,5378,5379,5380,5381,5382,5383,5384,5385, -5386,5387,5388,5389,5390,5391,5392,5393,5394,5395,5396,5397,5398,1264,5399,5400, -5401,5402,5403,5404,5405,5406,5407,5408,5409,5410,5411,5412,1662,5413,5414,5415, -5416,1663,5417,5418,5419,5420,5421,5422,5423,5424,5425,5426,5427,5428,5429,5430, -5431,5432,5433,5434,5435,5436,5437,5438,1664,5439,5440,5441,5442,5443,5444,5445, -5446,5447,5448,5449,5450,5451,5452,5453,5454,5455,5456,5457,5458,5459,5460,5461, -5462,5463,5464,5465,5466,5467,5468,5469,5470,5471,5472,5473,5474,5475,5476,5477, -5478,1154,5479,5480,5481,5482,5483,5484,5485,1665,5486,5487,5488,5489,5490,5491, -5492,5493,5494,5495,5496,5497,5498,5499,5500,5501,5502,5503,5504,5505,5506,5507, -5508,5509,5510,5511,5512,5513,5514,5515,5516,5517,5518,5519,5520,5521,5522,5523, -5524,5525,5526,5527,5528,5529,5530,5531,5532,5533,5534,5535,5536,5537,5538,5539, -5540,5541,5542,5543,5544,5545,5546,5547,5548,1377,5549,5550,5551,5552,5553,5554, -5555,5556,5557,5558,5559,5560,5561,5562,5563,5564,5565,5566,5567,5568,5569,5570, -1114,5571,5572,5573,5574,5575,5576,5577,5578,5579,5580,5581,5582,5583,5584,5585, -5586,5587,5588,5589,5590,5591,5592,1378,5593,5594,5595,5596,5597,5598,5599,5600, -5601,5602,5603,5604,5605,5606,5607,5608,5609,5610,5611,5612,5613,5614,1379,5615, -5616,5617,5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631, -5632,5633,5634,1380,5635,5636,5637,5638,5639,5640,5641,5642,5643,5644,5645,5646, -5647,5648,5649,1381,1056,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660, -1666,5661,5662,5663,5664,5665,5666,5667,5668,1667,5669,1668,5670,5671,5672,5673, -5674,5675,5676,5677,5678,1155,5679,5680,5681,5682,5683,5684,5685,5686,5687,5688, -5689,5690,5691,5692,5693,5694,5695,5696,5697,5698,1669,5699,5700,5701,5702,5703, -5704,5705,1670,5706,5707,5708,5709,5710,1671,5711,5712,5713,5714,1382,5715,5716, -5717,5718,5719,5720,5721,5722,5723,5724,5725,1672,5726,5727,1673,1674,5728,5729, -5730,5731,5732,5733,5734,5735,5736,1675,5737,5738,5739,5740,5741,5742,5743,5744, -1676,5745,5746,5747,5748,5749,5750,5751,1383,5752,5753,5754,5755,5756,5757,5758, -5759,5760,5761,5762,5763,5764,5765,5766,5767,5768,1677,5769,5770,5771,5772,5773, -1678,5774,5775,5776, 998,5777,5778,5779,5780,5781,5782,5783,5784,5785,1384,5786, -5787,5788,5789,5790,5791,5792,5793,5794,5795,5796,5797,5798,5799,5800,1679,5801, -5802,5803,1115,1116,5804,5805,5806,5807,5808,5809,5810,5811,5812,5813,5814,5815, -5816,5817,5818,5819,5820,5821,5822,5823,5824,5825,5826,5827,5828,5829,5830,5831, -5832,5833,5834,5835,5836,5837,5838,5839,5840,5841,5842,5843,5844,5845,5846,5847, -5848,5849,5850,5851,5852,5853,5854,5855,1680,5856,5857,5858,5859,5860,5861,5862, -5863,5864,1681,5865,5866,5867,1682,5868,5869,5870,5871,5872,5873,5874,5875,5876, -5877,5878,5879,1683,5880,1684,5881,5882,5883,5884,1685,5885,5886,5887,5888,5889, -5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5901,5902,5903,5904,5905, -5906,5907,1686,5908,5909,5910,5911,5912,5913,5914,5915,5916,5917,5918,5919,5920, -5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,1687, -5936,5937,5938,5939,5940,5941,5942,5943,5944,5945,5946,5947,5948,5949,5950,5951, -5952,1688,1689,5953,1199,5954,5955,5956,5957,5958,5959,5960,5961,1690,5962,5963, -5964,5965,5966,5967,5968,5969,5970,5971,5972,5973,5974,5975,5976,5977,5978,5979, -5980,5981,1385,5982,1386,5983,5984,5985,5986,5987,5988,5989,5990,5991,5992,5993, -5994,5995,5996,5997,5998,5999,6000,6001,6002,6003,6004,6005,6006,6007,6008,6009, -6010,6011,6012,6013,6014,6015,6016,6017,6018,6019,6020,6021,6022,6023,6024,6025, -6026,6027,1265,6028,6029,1691,6030,6031,6032,6033,6034,6035,6036,6037,6038,6039, -6040,6041,6042,6043,6044,6045,6046,6047,6048,6049,6050,6051,6052,6053,6054,6055, -6056,6057,6058,6059,6060,6061,6062,6063,6064,6065,6066,6067,6068,6069,6070,6071, -6072,6073,6074,6075,6076,6077,6078,6079,6080,6081,6082,6083,6084,1692,6085,6086, -6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,6099,6100,6101,6102, -6103,6104,6105,6106,6107,6108,6109,6110,6111,6112,6113,6114,6115,6116,6117,6118, -6119,6120,6121,6122,6123,6124,6125,6126,6127,6128,6129,6130,6131,1693,6132,6133, -6134,6135,6136,1694,6137,6138,6139,6140,6141,1695,6142,6143,6144,6145,6146,6147, -6148,6149,6150,6151,6152,6153,6154,6155,6156,6157,6158,6159,6160,6161,6162,6163, -6164,6165,6166,6167,6168,6169,6170,6171,6172,6173,6174,6175,6176,6177,6178,6179, -6180,6181,6182,6183,6184,6185,1696,6186,6187,6188,6189,6190,6191,6192,6193,6194, -6195,6196,6197,6198,6199,6200,6201,6202,6203,6204,6205,6206,6207,6208,6209,6210, -6211,6212,6213,6214,6215,6216,6217,6218,6219,1697,6220,6221,6222,6223,6224,6225, -6226,6227,6228,6229,6230,6231,6232,6233,6234,6235,6236,6237,6238,6239,6240,6241, -6242,6243,6244,6245,6246,6247,6248,6249,6250,6251,6252,6253,1698,6254,6255,6256, -6257,6258,6259,6260,6261,6262,6263,1200,6264,6265,6266,6267,6268,6269,6270,6271, #1024 -6272,6273,6274,6275,6276,6277,6278,6279,6280,6281,6282,6283,6284,6285,6286,6287, -6288,6289,6290,6291,6292,6293,6294,6295,6296,6297,6298,6299,6300,6301,6302,1699, -6303,6304,1700,6305,6306,6307,6308,6309,6310,6311,6312,6313,6314,6315,6316,6317, -6318,6319,6320,6321,6322,6323,6324,6325,6326,6327,6328,6329,6330,6331,6332,6333, -6334,6335,6336,6337,6338,6339,1701,6340,6341,6342,6343,6344,1387,6345,6346,6347, -6348,6349,6350,6351,6352,6353,6354,6355,6356,6357,6358,6359,6360,6361,6362,6363, -6364,6365,6366,6367,6368,6369,6370,6371,6372,6373,6374,6375,6376,6377,6378,6379, -6380,6381,6382,6383,6384,6385,6386,6387,6388,6389,6390,6391,6392,6393,6394,6395, -6396,6397,6398,6399,6400,6401,6402,6403,6404,6405,6406,6407,6408,6409,6410,6411, -6412,6413,1702,6414,6415,6416,6417,6418,6419,6420,6421,6422,1703,6423,6424,6425, -6426,6427,6428,6429,6430,6431,6432,6433,6434,6435,6436,6437,6438,1704,6439,6440, -6441,6442,6443,6444,6445,6446,6447,6448,6449,6450,6451,6452,6453,6454,6455,6456, -6457,6458,6459,6460,6461,6462,6463,6464,6465,6466,6467,6468,6469,6470,6471,6472, -6473,6474,6475,6476,6477,6478,6479,6480,6481,6482,6483,6484,6485,6486,6487,6488, -6489,6490,6491,6492,6493,6494,6495,6496,6497,6498,6499,6500,6501,6502,6503,1266, -6504,6505,6506,6507,6508,6509,6510,6511,6512,6513,6514,6515,6516,6517,6518,6519, -6520,6521,6522,6523,6524,6525,6526,6527,6528,6529,6530,6531,6532,6533,6534,6535, -6536,6537,6538,6539,6540,6541,6542,6543,6544,6545,6546,6547,6548,6549,6550,6551, -1705,1706,6552,6553,6554,6555,6556,6557,6558,6559,6560,6561,6562,6563,6564,6565, -6566,6567,6568,6569,6570,6571,6572,6573,6574,6575,6576,6577,6578,6579,6580,6581, -6582,6583,6584,6585,6586,6587,6588,6589,6590,6591,6592,6593,6594,6595,6596,6597, -6598,6599,6600,6601,6602,6603,6604,6605,6606,6607,6608,6609,6610,6611,6612,6613, -6614,6615,6616,6617,6618,6619,6620,6621,6622,6623,6624,6625,6626,6627,6628,6629, -6630,6631,6632,6633,6634,6635,6636,6637,1388,6638,6639,6640,6641,6642,6643,6644, -1707,6645,6646,6647,6648,6649,6650,6651,6652,6653,6654,6655,6656,6657,6658,6659, -6660,6661,6662,6663,1708,6664,6665,6666,6667,6668,6669,6670,6671,6672,6673,6674, -1201,6675,6676,6677,6678,6679,6680,6681,6682,6683,6684,6685,6686,6687,6688,6689, -6690,6691,6692,6693,6694,6695,6696,6697,6698,6699,6700,6701,6702,6703,6704,6705, -6706,6707,6708,6709,6710,6711,6712,6713,6714,6715,6716,6717,6718,6719,6720,6721, -6722,6723,6724,6725,1389,6726,6727,6728,6729,6730,6731,6732,6733,6734,6735,6736, -1390,1709,6737,6738,6739,6740,6741,6742,1710,6743,6744,6745,6746,1391,6747,6748, -6749,6750,6751,6752,6753,6754,6755,6756,6757,1392,6758,6759,6760,6761,6762,6763, -6764,6765,6766,6767,6768,6769,6770,6771,6772,6773,6774,6775,6776,6777,6778,6779, -6780,1202,6781,6782,6783,6784,6785,6786,6787,6788,6789,6790,6791,6792,6793,6794, -6795,6796,6797,6798,6799,6800,6801,6802,6803,6804,6805,6806,6807,6808,6809,1711, -6810,6811,6812,6813,6814,6815,6816,6817,6818,6819,6820,6821,6822,6823,6824,6825, -6826,6827,6828,6829,6830,6831,6832,6833,6834,6835,6836,1393,6837,6838,6839,6840, -6841,6842,6843,6844,6845,6846,6847,6848,6849,6850,6851,6852,6853,6854,6855,6856, -6857,6858,6859,6860,6861,6862,6863,6864,6865,6866,6867,6868,6869,6870,6871,6872, -6873,6874,6875,6876,6877,6878,6879,6880,6881,6882,6883,6884,6885,6886,6887,6888, -6889,6890,6891,6892,6893,6894,6895,6896,6897,6898,6899,6900,6901,6902,1712,6903, -6904,6905,6906,6907,6908,6909,6910,1713,6911,6912,6913,6914,6915,6916,6917,6918, -6919,6920,6921,6922,6923,6924,6925,6926,6927,6928,6929,6930,6931,6932,6933,6934, -6935,6936,6937,6938,6939,6940,6941,6942,6943,6944,6945,6946,6947,6948,6949,6950, -6951,6952,6953,6954,6955,6956,6957,6958,6959,6960,6961,6962,6963,6964,6965,6966, -6967,6968,6969,6970,6971,6972,6973,6974,1714,6975,6976,6977,6978,6979,6980,6981, -6982,6983,6984,6985,6986,6987,6988,1394,6989,6990,6991,6992,6993,6994,6995,6996, -6997,6998,6999,7000,1715,7001,7002,7003,7004,7005,7006,7007,7008,7009,7010,7011, -7012,7013,7014,7015,7016,7017,7018,7019,7020,7021,7022,7023,7024,7025,7026,7027, -7028,1716,7029,7030,7031,7032,7033,7034,7035,7036,7037,7038,7039,7040,7041,7042, -7043,7044,7045,7046,7047,7048,7049,7050,7051,7052,7053,7054,7055,7056,7057,7058, -7059,7060,7061,7062,7063,7064,7065,7066,7067,7068,7069,7070,7071,7072,7073,7074, -7075,7076,7077,7078,7079,7080,7081,7082,7083,7084,7085,7086,7087,7088,7089,7090, -7091,7092,7093,7094,7095,7096,7097,7098,7099,7100,7101,7102,7103,7104,7105,7106, -7107,7108,7109,7110,7111,7112,7113,7114,7115,7116,7117,7118,7119,7120,7121,7122, -7123,7124,7125,7126,7127,7128,7129,7130,7131,7132,7133,7134,7135,7136,7137,7138, -7139,7140,7141,7142,7143,7144,7145,7146,7147,7148,7149,7150,7151,7152,7153,7154, -7155,7156,7157,7158,7159,7160,7161,7162,7163,7164,7165,7166,7167,7168,7169,7170, -7171,7172,7173,7174,7175,7176,7177,7178,7179,7180,7181,7182,7183,7184,7185,7186, -7187,7188,7189,7190,7191,7192,7193,7194,7195,7196,7197,7198,7199,7200,7201,7202, -7203,7204,7205,7206,7207,1395,7208,7209,7210,7211,7212,7213,1717,7214,7215,7216, -7217,7218,7219,7220,7221,7222,7223,7224,7225,7226,7227,7228,7229,7230,7231,7232, -7233,7234,7235,7236,7237,7238,7239,7240,7241,7242,7243,7244,7245,7246,7247,7248, -7249,7250,7251,7252,7253,7254,7255,7256,7257,7258,7259,7260,7261,7262,7263,7264, -7265,7266,7267,7268,7269,7270,7271,7272,7273,7274,7275,7276,7277,7278,7279,7280, -7281,7282,7283,7284,7285,7286,7287,7288,7289,7290,7291,7292,7293,7294,7295,7296, -7297,7298,7299,7300,7301,7302,7303,7304,7305,7306,7307,7308,7309,7310,7311,7312, -7313,1718,7314,7315,7316,7317,7318,7319,7320,7321,7322,7323,7324,7325,7326,7327, -7328,7329,7330,7331,7332,7333,7334,7335,7336,7337,7338,7339,7340,7341,7342,7343, -7344,7345,7346,7347,7348,7349,7350,7351,7352,7353,7354,7355,7356,7357,7358,7359, -7360,7361,7362,7363,7364,7365,7366,7367,7368,7369,7370,7371,7372,7373,7374,7375, -7376,7377,7378,7379,7380,7381,7382,7383,7384,7385,7386,7387,7388,7389,7390,7391, -7392,7393,7394,7395,7396,7397,7398,7399,7400,7401,7402,7403,7404,7405,7406,7407, -7408,7409,7410,7411,7412,7413,7414,7415,7416,7417,7418,7419,7420,7421,7422,7423, -7424,7425,7426,7427,7428,7429,7430,7431,7432,7433,7434,7435,7436,7437,7438,7439, -7440,7441,7442,7443,7444,7445,7446,7447,7448,7449,7450,7451,7452,7453,7454,7455, -7456,7457,7458,7459,7460,7461,7462,7463,7464,7465,7466,7467,7468,7469,7470,7471, -7472,7473,7474,7475,7476,7477,7478,7479,7480,7481,7482,7483,7484,7485,7486,7487, -7488,7489,7490,7491,7492,7493,7494,7495,7496,7497,7498,7499,7500,7501,7502,7503, -7504,7505,7506,7507,7508,7509,7510,7511,7512,7513,7514,7515,7516,7517,7518,7519, -7520,7521,7522,7523,7524,7525,7526,7527,7528,7529,7530,7531,7532,7533,7534,7535, -7536,7537,7538,7539,7540,7541,7542,7543,7544,7545,7546,7547,7548,7549,7550,7551, -7552,7553,7554,7555,7556,7557,7558,7559,7560,7561,7562,7563,7564,7565,7566,7567, -7568,7569,7570,7571,7572,7573,7574,7575,7576,7577,7578,7579,7580,7581,7582,7583, -7584,7585,7586,7587,7588,7589,7590,7591,7592,7593,7594,7595,7596,7597,7598,7599, -7600,7601,7602,7603,7604,7605,7606,7607,7608,7609,7610,7611,7612,7613,7614,7615, -7616,7617,7618,7619,7620,7621,7622,7623,7624,7625,7626,7627,7628,7629,7630,7631, -7632,7633,7634,7635,7636,7637,7638,7639,7640,7641,7642,7643,7644,7645,7646,7647, -7648,7649,7650,7651,7652,7653,7654,7655,7656,7657,7658,7659,7660,7661,7662,7663, -7664,7665,7666,7667,7668,7669,7670,7671,7672,7673,7674,7675,7676,7677,7678,7679, -7680,7681,7682,7683,7684,7685,7686,7687,7688,7689,7690,7691,7692,7693,7694,7695, -7696,7697,7698,7699,7700,7701,7702,7703,7704,7705,7706,7707,7708,7709,7710,7711, -7712,7713,7714,7715,7716,7717,7718,7719,7720,7721,7722,7723,7724,7725,7726,7727, -7728,7729,7730,7731,7732,7733,7734,7735,7736,7737,7738,7739,7740,7741,7742,7743, -7744,7745,7746,7747,7748,7749,7750,7751,7752,7753,7754,7755,7756,7757,7758,7759, -7760,7761,7762,7763,7764,7765,7766,7767,7768,7769,7770,7771,7772,7773,7774,7775, -7776,7777,7778,7779,7780,7781,7782,7783,7784,7785,7786,7787,7788,7789,7790,7791, -7792,7793,7794,7795,7796,7797,7798,7799,7800,7801,7802,7803,7804,7805,7806,7807, -7808,7809,7810,7811,7812,7813,7814,7815,7816,7817,7818,7819,7820,7821,7822,7823, -7824,7825,7826,7827,7828,7829,7830,7831,7832,7833,7834,7835,7836,7837,7838,7839, -7840,7841,7842,7843,7844,7845,7846,7847,7848,7849,7850,7851,7852,7853,7854,7855, -7856,7857,7858,7859,7860,7861,7862,7863,7864,7865,7866,7867,7868,7869,7870,7871, -7872,7873,7874,7875,7876,7877,7878,7879,7880,7881,7882,7883,7884,7885,7886,7887, -7888,7889,7890,7891,7892,7893,7894,7895,7896,7897,7898,7899,7900,7901,7902,7903, -7904,7905,7906,7907,7908,7909,7910,7911,7912,7913,7914,7915,7916,7917,7918,7919, -7920,7921,7922,7923,7924,7925,7926,7927,7928,7929,7930,7931,7932,7933,7934,7935, -7936,7937,7938,7939,7940,7941,7942,7943,7944,7945,7946,7947,7948,7949,7950,7951, -7952,7953,7954,7955,7956,7957,7958,7959,7960,7961,7962,7963,7964,7965,7966,7967, -7968,7969,7970,7971,7972,7973,7974,7975,7976,7977,7978,7979,7980,7981,7982,7983, -7984,7985,7986,7987,7988,7989,7990,7991,7992,7993,7994,7995,7996,7997,7998,7999, -8000,8001,8002,8003,8004,8005,8006,8007,8008,8009,8010,8011,8012,8013,8014,8015, -8016,8017,8018,8019,8020,8021,8022,8023,8024,8025,8026,8027,8028,8029,8030,8031, -8032,8033,8034,8035,8036,8037,8038,8039,8040,8041,8042,8043,8044,8045,8046,8047, -8048,8049,8050,8051,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8062,8063, -8064,8065,8066,8067,8068,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079, -8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,8093,8094,8095, -8096,8097,8098,8099,8100,8101,8102,8103,8104,8105,8106,8107,8108,8109,8110,8111, -8112,8113,8114,8115,8116,8117,8118,8119,8120,8121,8122,8123,8124,8125,8126,8127, -8128,8129,8130,8131,8132,8133,8134,8135,8136,8137,8138,8139,8140,8141,8142,8143, -8144,8145,8146,8147,8148,8149,8150,8151,8152,8153,8154,8155,8156,8157,8158,8159, -8160,8161,8162,8163,8164,8165,8166,8167,8168,8169,8170,8171,8172,8173,8174,8175, -8176,8177,8178,8179,8180,8181,8182,8183,8184,8185,8186,8187,8188,8189,8190,8191, -8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207, -8208,8209,8210,8211,8212,8213,8214,8215,8216,8217,8218,8219,8220,8221,8222,8223, -8224,8225,8226,8227,8228,8229,8230,8231,8232,8233,8234,8235,8236,8237,8238,8239, -8240,8241,8242,8243,8244,8245,8246,8247,8248,8249,8250,8251,8252,8253,8254,8255, -8256,8257,8258,8259,8260,8261,8262,8263,8264,8265,8266,8267,8268,8269,8270,8271, -8272,8273,8274,8275,8276,8277,8278,8279,8280,8281,8282,8283,8284,8285,8286,8287, -8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303, -8304,8305,8306,8307,8308,8309,8310,8311,8312,8313,8314,8315,8316,8317,8318,8319, -8320,8321,8322,8323,8324,8325,8326,8327,8328,8329,8330,8331,8332,8333,8334,8335, -8336,8337,8338,8339,8340,8341,8342,8343,8344,8345,8346,8347,8348,8349,8350,8351, -8352,8353,8354,8355,8356,8357,8358,8359,8360,8361,8362,8363,8364,8365,8366,8367, -8368,8369,8370,8371,8372,8373,8374,8375,8376,8377,8378,8379,8380,8381,8382,8383, -8384,8385,8386,8387,8388,8389,8390,8391,8392,8393,8394,8395,8396,8397,8398,8399, -8400,8401,8402,8403,8404,8405,8406,8407,8408,8409,8410,8411,8412,8413,8414,8415, -8416,8417,8418,8419,8420,8421,8422,8423,8424,8425,8426,8427,8428,8429,8430,8431, -8432,8433,8434,8435,8436,8437,8438,8439,8440,8441,8442,8443,8444,8445,8446,8447, -8448,8449,8450,8451,8452,8453,8454,8455,8456,8457,8458,8459,8460,8461,8462,8463, -8464,8465,8466,8467,8468,8469,8470,8471,8472,8473,8474,8475,8476,8477,8478,8479, -8480,8481,8482,8483,8484,8485,8486,8487,8488,8489,8490,8491,8492,8493,8494,8495, -8496,8497,8498,8499,8500,8501,8502,8503,8504,8505,8506,8507,8508,8509,8510,8511, -8512,8513,8514,8515,8516,8517,8518,8519,8520,8521,8522,8523,8524,8525,8526,8527, -8528,8529,8530,8531,8532,8533,8534,8535,8536,8537,8538,8539,8540,8541,8542,8543, -8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554,8555,8556,8557,8558,8559, -8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,8570,8571,8572,8573,8574,8575, -8576,8577,8578,8579,8580,8581,8582,8583,8584,8585,8586,8587,8588,8589,8590,8591, -8592,8593,8594,8595,8596,8597,8598,8599,8600,8601,8602,8603,8604,8605,8606,8607, -8608,8609,8610,8611,8612,8613,8614,8615,8616,8617,8618,8619,8620,8621,8622,8623, -8624,8625,8626,8627,8628,8629,8630,8631,8632,8633,8634,8635,8636,8637,8638,8639, -8640,8641,8642,8643,8644,8645,8646,8647,8648,8649,8650,8651,8652,8653,8654,8655, -8656,8657,8658,8659,8660,8661,8662,8663,8664,8665,8666,8667,8668,8669,8670,8671, -8672,8673,8674,8675,8676,8677,8678,8679,8680,8681,8682,8683,8684,8685,8686,8687, -8688,8689,8690,8691,8692,8693,8694,8695,8696,8697,8698,8699,8700,8701,8702,8703, -8704,8705,8706,8707,8708,8709,8710,8711,8712,8713,8714,8715,8716,8717,8718,8719, -8720,8721,8722,8723,8724,8725,8726,8727,8728,8729,8730,8731,8732,8733,8734,8735, -8736,8737,8738,8739,8740,8741) - -# flake8: noqa diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/mbcharsetprober.py b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/mbcharsetprober.py deleted file mode 100644 index bb42f2f..0000000 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/mbcharsetprober.py +++ /dev/null @@ -1,86 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# Proofpoint, Inc. -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -import sys -from . import constants -from .charsetprober import CharSetProber - - -class MultiByteCharSetProber(CharSetProber): - def __init__(self): - CharSetProber.__init__(self) - self._mDistributionAnalyzer = None - self._mCodingSM = None - self._mLastChar = [0, 0] - - def reset(self): - CharSetProber.reset(self) - if self._mCodingSM: - self._mCodingSM.reset() - if self._mDistributionAnalyzer: - self._mDistributionAnalyzer.reset() - self._mLastChar = [0, 0] - - def get_charset_name(self): - pass - - def feed(self, aBuf): - aLen = len(aBuf) - for i in range(0, aLen): - codingState = self._mCodingSM.next_state(aBuf[i]) - if codingState == constants.eError: - if constants._debug: - sys.stderr.write(self.get_charset_name() - + ' prober hit error at byte ' + str(i) - + '\n') - self._mState = constants.eNotMe - break - elif codingState == constants.eItsMe: - self._mState = constants.eFoundIt - break - elif codingState == constants.eStart: - charLen = self._mCodingSM.get_current_charlen() - if i == 0: - self._mLastChar[1] = aBuf[0] - self._mDistributionAnalyzer.feed(self._mLastChar, charLen) - else: - self._mDistributionAnalyzer.feed(aBuf[i - 1:i + 1], - charLen) - - self._mLastChar[0] = aBuf[aLen - 1] - - if self.get_state() == constants.eDetecting: - if (self._mDistributionAnalyzer.got_enough_data() and - (self.get_confidence() > constants.SHORTCUT_THRESHOLD)): - self._mState = constants.eFoundIt - - return self.get_state() - - def get_confidence(self): - return self._mDistributionAnalyzer.get_confidence() diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/mbcssm.py b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/mbcssm.py deleted file mode 100644 index efe678c..0000000 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/mbcssm.py +++ /dev/null @@ -1,572 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .constants import eStart, eError, eItsMe - -# BIG5 - -BIG5_cls = ( - 1,1,1,1,1,1,1,1, # 00 - 07 #allow 0x00 as legal value - 1,1,1,1,1,1,0,0, # 08 - 0f - 1,1,1,1,1,1,1,1, # 10 - 17 - 1,1,1,0,1,1,1,1, # 18 - 1f - 1,1,1,1,1,1,1,1, # 20 - 27 - 1,1,1,1,1,1,1,1, # 28 - 2f - 1,1,1,1,1,1,1,1, # 30 - 37 - 1,1,1,1,1,1,1,1, # 38 - 3f - 2,2,2,2,2,2,2,2, # 40 - 47 - 2,2,2,2,2,2,2,2, # 48 - 4f - 2,2,2,2,2,2,2,2, # 50 - 57 - 2,2,2,2,2,2,2,2, # 58 - 5f - 2,2,2,2,2,2,2,2, # 60 - 67 - 2,2,2,2,2,2,2,2, # 68 - 6f - 2,2,2,2,2,2,2,2, # 70 - 77 - 2,2,2,2,2,2,2,1, # 78 - 7f - 4,4,4,4,4,4,4,4, # 80 - 87 - 4,4,4,4,4,4,4,4, # 88 - 8f - 4,4,4,4,4,4,4,4, # 90 - 97 - 4,4,4,4,4,4,4,4, # 98 - 9f - 4,3,3,3,3,3,3,3, # a0 - a7 - 3,3,3,3,3,3,3,3, # a8 - af - 3,3,3,3,3,3,3,3, # b0 - b7 - 3,3,3,3,3,3,3,3, # b8 - bf - 3,3,3,3,3,3,3,3, # c0 - c7 - 3,3,3,3,3,3,3,3, # c8 - cf - 3,3,3,3,3,3,3,3, # d0 - d7 - 3,3,3,3,3,3,3,3, # d8 - df - 3,3,3,3,3,3,3,3, # e0 - e7 - 3,3,3,3,3,3,3,3, # e8 - ef - 3,3,3,3,3,3,3,3, # f0 - f7 - 3,3,3,3,3,3,3,0 # f8 - ff -) - -BIG5_st = ( - eError,eStart,eStart, 3,eError,eError,eError,eError,#00-07 - eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eError,#08-0f - eError,eStart,eStart,eStart,eStart,eStart,eStart,eStart#10-17 -) - -Big5CharLenTable = (0, 1, 1, 2, 0) - -Big5SMModel = {'classTable': BIG5_cls, - 'classFactor': 5, - 'stateTable': BIG5_st, - 'charLenTable': Big5CharLenTable, - 'name': 'Big5'} - -# CP949 - -CP949_cls = ( - 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,0,0, # 00 - 0f - 1,1,1,1,1,1,1,1, 1,1,1,0,1,1,1,1, # 10 - 1f - 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, # 20 - 2f - 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, # 30 - 3f - 1,4,4,4,4,4,4,4, 4,4,4,4,4,4,4,4, # 40 - 4f - 4,4,5,5,5,5,5,5, 5,5,5,1,1,1,1,1, # 50 - 5f - 1,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5, # 60 - 6f - 5,5,5,5,5,5,5,5, 5,5,5,1,1,1,1,1, # 70 - 7f - 0,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6, # 80 - 8f - 6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6, # 90 - 9f - 6,7,7,7,7,7,7,7, 7,7,7,7,7,8,8,8, # a0 - af - 7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7, # b0 - bf - 7,7,7,7,7,7,9,2, 2,3,2,2,2,2,2,2, # c0 - cf - 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, # d0 - df - 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, # e0 - ef - 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,0, # f0 - ff -) - -CP949_st = ( -#cls= 0 1 2 3 4 5 6 7 8 9 # previous state = - eError,eStart, 3,eError,eStart,eStart, 4, 5,eError, 6, # eStart - eError,eError,eError,eError,eError,eError,eError,eError,eError,eError, # eError - eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe, # eItsMe - eError,eError,eStart,eStart,eError,eError,eError,eStart,eStart,eStart, # 3 - eError,eError,eStart,eStart,eStart,eStart,eStart,eStart,eStart,eStart, # 4 - eError,eStart,eStart,eStart,eStart,eStart,eStart,eStart,eStart,eStart, # 5 - eError,eStart,eStart,eStart,eStart,eError,eError,eStart,eStart,eStart, # 6 -) - -CP949CharLenTable = (0, 1, 2, 0, 1, 1, 2, 2, 0, 2) - -CP949SMModel = {'classTable': CP949_cls, - 'classFactor': 10, - 'stateTable': CP949_st, - 'charLenTable': CP949CharLenTable, - 'name': 'CP949'} - -# EUC-JP - -EUCJP_cls = ( - 4,4,4,4,4,4,4,4, # 00 - 07 - 4,4,4,4,4,4,5,5, # 08 - 0f - 4,4,4,4,4,4,4,4, # 10 - 17 - 4,4,4,5,4,4,4,4, # 18 - 1f - 4,4,4,4,4,4,4,4, # 20 - 27 - 4,4,4,4,4,4,4,4, # 28 - 2f - 4,4,4,4,4,4,4,4, # 30 - 37 - 4,4,4,4,4,4,4,4, # 38 - 3f - 4,4,4,4,4,4,4,4, # 40 - 47 - 4,4,4,4,4,4,4,4, # 48 - 4f - 4,4,4,4,4,4,4,4, # 50 - 57 - 4,4,4,4,4,4,4,4, # 58 - 5f - 4,4,4,4,4,4,4,4, # 60 - 67 - 4,4,4,4,4,4,4,4, # 68 - 6f - 4,4,4,4,4,4,4,4, # 70 - 77 - 4,4,4,4,4,4,4,4, # 78 - 7f - 5,5,5,5,5,5,5,5, # 80 - 87 - 5,5,5,5,5,5,1,3, # 88 - 8f - 5,5,5,5,5,5,5,5, # 90 - 97 - 5,5,5,5,5,5,5,5, # 98 - 9f - 5,2,2,2,2,2,2,2, # a0 - a7 - 2,2,2,2,2,2,2,2, # a8 - af - 2,2,2,2,2,2,2,2, # b0 - b7 - 2,2,2,2,2,2,2,2, # b8 - bf - 2,2,2,2,2,2,2,2, # c0 - c7 - 2,2,2,2,2,2,2,2, # c8 - cf - 2,2,2,2,2,2,2,2, # d0 - d7 - 2,2,2,2,2,2,2,2, # d8 - df - 0,0,0,0,0,0,0,0, # e0 - e7 - 0,0,0,0,0,0,0,0, # e8 - ef - 0,0,0,0,0,0,0,0, # f0 - f7 - 0,0,0,0,0,0,0,5 # f8 - ff -) - -EUCJP_st = ( - 3, 4, 3, 5,eStart,eError,eError,eError,#00-07 - eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,#08-0f - eItsMe,eItsMe,eStart,eError,eStart,eError,eError,eError,#10-17 - eError,eError,eStart,eError,eError,eError, 3,eError,#18-1f - 3,eError,eError,eError,eStart,eStart,eStart,eStart#20-27 -) - -EUCJPCharLenTable = (2, 2, 2, 3, 1, 0) - -EUCJPSMModel = {'classTable': EUCJP_cls, - 'classFactor': 6, - 'stateTable': EUCJP_st, - 'charLenTable': EUCJPCharLenTable, - 'name': 'EUC-JP'} - -# EUC-KR - -EUCKR_cls = ( - 1,1,1,1,1,1,1,1, # 00 - 07 - 1,1,1,1,1,1,0,0, # 08 - 0f - 1,1,1,1,1,1,1,1, # 10 - 17 - 1,1,1,0,1,1,1,1, # 18 - 1f - 1,1,1,1,1,1,1,1, # 20 - 27 - 1,1,1,1,1,1,1,1, # 28 - 2f - 1,1,1,1,1,1,1,1, # 30 - 37 - 1,1,1,1,1,1,1,1, # 38 - 3f - 1,1,1,1,1,1,1,1, # 40 - 47 - 1,1,1,1,1,1,1,1, # 48 - 4f - 1,1,1,1,1,1,1,1, # 50 - 57 - 1,1,1,1,1,1,1,1, # 58 - 5f - 1,1,1,1,1,1,1,1, # 60 - 67 - 1,1,1,1,1,1,1,1, # 68 - 6f - 1,1,1,1,1,1,1,1, # 70 - 77 - 1,1,1,1,1,1,1,1, # 78 - 7f - 0,0,0,0,0,0,0,0, # 80 - 87 - 0,0,0,0,0,0,0,0, # 88 - 8f - 0,0,0,0,0,0,0,0, # 90 - 97 - 0,0,0,0,0,0,0,0, # 98 - 9f - 0,2,2,2,2,2,2,2, # a0 - a7 - 2,2,2,2,2,3,3,3, # a8 - af - 2,2,2,2,2,2,2,2, # b0 - b7 - 2,2,2,2,2,2,2,2, # b8 - bf - 2,2,2,2,2,2,2,2, # c0 - c7 - 2,3,2,2,2,2,2,2, # c8 - cf - 2,2,2,2,2,2,2,2, # d0 - d7 - 2,2,2,2,2,2,2,2, # d8 - df - 2,2,2,2,2,2,2,2, # e0 - e7 - 2,2,2,2,2,2,2,2, # e8 - ef - 2,2,2,2,2,2,2,2, # f0 - f7 - 2,2,2,2,2,2,2,0 # f8 - ff -) - -EUCKR_st = ( - eError,eStart, 3,eError,eError,eError,eError,eError,#00-07 - eItsMe,eItsMe,eItsMe,eItsMe,eError,eError,eStart,eStart #08-0f -) - -EUCKRCharLenTable = (0, 1, 2, 0) - -EUCKRSMModel = {'classTable': EUCKR_cls, - 'classFactor': 4, - 'stateTable': EUCKR_st, - 'charLenTable': EUCKRCharLenTable, - 'name': 'EUC-KR'} - -# EUC-TW - -EUCTW_cls = ( - 2,2,2,2,2,2,2,2, # 00 - 07 - 2,2,2,2,2,2,0,0, # 08 - 0f - 2,2,2,2,2,2,2,2, # 10 - 17 - 2,2,2,0,2,2,2,2, # 18 - 1f - 2,2,2,2,2,2,2,2, # 20 - 27 - 2,2,2,2,2,2,2,2, # 28 - 2f - 2,2,2,2,2,2,2,2, # 30 - 37 - 2,2,2,2,2,2,2,2, # 38 - 3f - 2,2,2,2,2,2,2,2, # 40 - 47 - 2,2,2,2,2,2,2,2, # 48 - 4f - 2,2,2,2,2,2,2,2, # 50 - 57 - 2,2,2,2,2,2,2,2, # 58 - 5f - 2,2,2,2,2,2,2,2, # 60 - 67 - 2,2,2,2,2,2,2,2, # 68 - 6f - 2,2,2,2,2,2,2,2, # 70 - 77 - 2,2,2,2,2,2,2,2, # 78 - 7f - 0,0,0,0,0,0,0,0, # 80 - 87 - 0,0,0,0,0,0,6,0, # 88 - 8f - 0,0,0,0,0,0,0,0, # 90 - 97 - 0,0,0,0,0,0,0,0, # 98 - 9f - 0,3,4,4,4,4,4,4, # a0 - a7 - 5,5,1,1,1,1,1,1, # a8 - af - 1,1,1,1,1,1,1,1, # b0 - b7 - 1,1,1,1,1,1,1,1, # b8 - bf - 1,1,3,1,3,3,3,3, # c0 - c7 - 3,3,3,3,3,3,3,3, # c8 - cf - 3,3,3,3,3,3,3,3, # d0 - d7 - 3,3,3,3,3,3,3,3, # d8 - df - 3,3,3,3,3,3,3,3, # e0 - e7 - 3,3,3,3,3,3,3,3, # e8 - ef - 3,3,3,3,3,3,3,3, # f0 - f7 - 3,3,3,3,3,3,3,0 # f8 - ff -) - -EUCTW_st = ( - eError,eError,eStart, 3, 3, 3, 4,eError,#00-07 - eError,eError,eError,eError,eError,eError,eItsMe,eItsMe,#08-0f - eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eError,eStart,eError,#10-17 - eStart,eStart,eStart,eError,eError,eError,eError,eError,#18-1f - 5,eError,eError,eError,eStart,eError,eStart,eStart,#20-27 - eStart,eError,eStart,eStart,eStart,eStart,eStart,eStart #28-2f -) - -EUCTWCharLenTable = (0, 0, 1, 2, 2, 2, 3) - -EUCTWSMModel = {'classTable': EUCTW_cls, - 'classFactor': 7, - 'stateTable': EUCTW_st, - 'charLenTable': EUCTWCharLenTable, - 'name': 'x-euc-tw'} - -# GB2312 - -GB2312_cls = ( - 1,1,1,1,1,1,1,1, # 00 - 07 - 1,1,1,1,1,1,0,0, # 08 - 0f - 1,1,1,1,1,1,1,1, # 10 - 17 - 1,1,1,0,1,1,1,1, # 18 - 1f - 1,1,1,1,1,1,1,1, # 20 - 27 - 1,1,1,1,1,1,1,1, # 28 - 2f - 3,3,3,3,3,3,3,3, # 30 - 37 - 3,3,1,1,1,1,1,1, # 38 - 3f - 2,2,2,2,2,2,2,2, # 40 - 47 - 2,2,2,2,2,2,2,2, # 48 - 4f - 2,2,2,2,2,2,2,2, # 50 - 57 - 2,2,2,2,2,2,2,2, # 58 - 5f - 2,2,2,2,2,2,2,2, # 60 - 67 - 2,2,2,2,2,2,2,2, # 68 - 6f - 2,2,2,2,2,2,2,2, # 70 - 77 - 2,2,2,2,2,2,2,4, # 78 - 7f - 5,6,6,6,6,6,6,6, # 80 - 87 - 6,6,6,6,6,6,6,6, # 88 - 8f - 6,6,6,6,6,6,6,6, # 90 - 97 - 6,6,6,6,6,6,6,6, # 98 - 9f - 6,6,6,6,6,6,6,6, # a0 - a7 - 6,6,6,6,6,6,6,6, # a8 - af - 6,6,6,6,6,6,6,6, # b0 - b7 - 6,6,6,6,6,6,6,6, # b8 - bf - 6,6,6,6,6,6,6,6, # c0 - c7 - 6,6,6,6,6,6,6,6, # c8 - cf - 6,6,6,6,6,6,6,6, # d0 - d7 - 6,6,6,6,6,6,6,6, # d8 - df - 6,6,6,6,6,6,6,6, # e0 - e7 - 6,6,6,6,6,6,6,6, # e8 - ef - 6,6,6,6,6,6,6,6, # f0 - f7 - 6,6,6,6,6,6,6,0 # f8 - ff -) - -GB2312_st = ( - eError,eStart,eStart,eStart,eStart,eStart, 3,eError,#00-07 - eError,eError,eError,eError,eError,eError,eItsMe,eItsMe,#08-0f - eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eError,eError,eStart,#10-17 - 4,eError,eStart,eStart,eError,eError,eError,eError,#18-1f - eError,eError, 5,eError,eError,eError,eItsMe,eError,#20-27 - eError,eError,eStart,eStart,eStart,eStart,eStart,eStart #28-2f -) - -# To be accurate, the length of class 6 can be either 2 or 4. -# But it is not necessary to discriminate between the two since -# it is used for frequency analysis only, and we are validing -# each code range there as well. So it is safe to set it to be -# 2 here. -GB2312CharLenTable = (0, 1, 1, 1, 1, 1, 2) - -GB2312SMModel = {'classTable': GB2312_cls, - 'classFactor': 7, - 'stateTable': GB2312_st, - 'charLenTable': GB2312CharLenTable, - 'name': 'GB2312'} - -# Shift_JIS - -SJIS_cls = ( - 1,1,1,1,1,1,1,1, # 00 - 07 - 1,1,1,1,1,1,0,0, # 08 - 0f - 1,1,1,1,1,1,1,1, # 10 - 17 - 1,1,1,0,1,1,1,1, # 18 - 1f - 1,1,1,1,1,1,1,1, # 20 - 27 - 1,1,1,1,1,1,1,1, # 28 - 2f - 1,1,1,1,1,1,1,1, # 30 - 37 - 1,1,1,1,1,1,1,1, # 38 - 3f - 2,2,2,2,2,2,2,2, # 40 - 47 - 2,2,2,2,2,2,2,2, # 48 - 4f - 2,2,2,2,2,2,2,2, # 50 - 57 - 2,2,2,2,2,2,2,2, # 58 - 5f - 2,2,2,2,2,2,2,2, # 60 - 67 - 2,2,2,2,2,2,2,2, # 68 - 6f - 2,2,2,2,2,2,2,2, # 70 - 77 - 2,2,2,2,2,2,2,1, # 78 - 7f - 3,3,3,3,3,2,2,3, # 80 - 87 - 3,3,3,3,3,3,3,3, # 88 - 8f - 3,3,3,3,3,3,3,3, # 90 - 97 - 3,3,3,3,3,3,3,3, # 98 - 9f - #0xa0 is illegal in sjis encoding, but some pages does - #contain such byte. We need to be more error forgiven. - 2,2,2,2,2,2,2,2, # a0 - a7 - 2,2,2,2,2,2,2,2, # a8 - af - 2,2,2,2,2,2,2,2, # b0 - b7 - 2,2,2,2,2,2,2,2, # b8 - bf - 2,2,2,2,2,2,2,2, # c0 - c7 - 2,2,2,2,2,2,2,2, # c8 - cf - 2,2,2,2,2,2,2,2, # d0 - d7 - 2,2,2,2,2,2,2,2, # d8 - df - 3,3,3,3,3,3,3,3, # e0 - e7 - 3,3,3,3,3,4,4,4, # e8 - ef - 3,3,3,3,3,3,3,3, # f0 - f7 - 3,3,3,3,3,0,0,0) # f8 - ff - - -SJIS_st = ( - eError,eStart,eStart, 3,eError,eError,eError,eError,#00-07 - eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,#08-0f - eItsMe,eItsMe,eError,eError,eStart,eStart,eStart,eStart #10-17 -) - -SJISCharLenTable = (0, 1, 1, 2, 0, 0) - -SJISSMModel = {'classTable': SJIS_cls, - 'classFactor': 6, - 'stateTable': SJIS_st, - 'charLenTable': SJISCharLenTable, - 'name': 'Shift_JIS'} - -# UCS2-BE - -UCS2BE_cls = ( - 0,0,0,0,0,0,0,0, # 00 - 07 - 0,0,1,0,0,2,0,0, # 08 - 0f - 0,0,0,0,0,0,0,0, # 10 - 17 - 0,0,0,3,0,0,0,0, # 18 - 1f - 0,0,0,0,0,0,0,0, # 20 - 27 - 0,3,3,3,3,3,0,0, # 28 - 2f - 0,0,0,0,0,0,0,0, # 30 - 37 - 0,0,0,0,0,0,0,0, # 38 - 3f - 0,0,0,0,0,0,0,0, # 40 - 47 - 0,0,0,0,0,0,0,0, # 48 - 4f - 0,0,0,0,0,0,0,0, # 50 - 57 - 0,0,0,0,0,0,0,0, # 58 - 5f - 0,0,0,0,0,0,0,0, # 60 - 67 - 0,0,0,0,0,0,0,0, # 68 - 6f - 0,0,0,0,0,0,0,0, # 70 - 77 - 0,0,0,0,0,0,0,0, # 78 - 7f - 0,0,0,0,0,0,0,0, # 80 - 87 - 0,0,0,0,0,0,0,0, # 88 - 8f - 0,0,0,0,0,0,0,0, # 90 - 97 - 0,0,0,0,0,0,0,0, # 98 - 9f - 0,0,0,0,0,0,0,0, # a0 - a7 - 0,0,0,0,0,0,0,0, # a8 - af - 0,0,0,0,0,0,0,0, # b0 - b7 - 0,0,0,0,0,0,0,0, # b8 - bf - 0,0,0,0,0,0,0,0, # c0 - c7 - 0,0,0,0,0,0,0,0, # c8 - cf - 0,0,0,0,0,0,0,0, # d0 - d7 - 0,0,0,0,0,0,0,0, # d8 - df - 0,0,0,0,0,0,0,0, # e0 - e7 - 0,0,0,0,0,0,0,0, # e8 - ef - 0,0,0,0,0,0,0,0, # f0 - f7 - 0,0,0,0,0,0,4,5 # f8 - ff -) - -UCS2BE_st = ( - 5, 7, 7,eError, 4, 3,eError,eError,#00-07 - eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,#08-0f - eItsMe,eItsMe, 6, 6, 6, 6,eError,eError,#10-17 - 6, 6, 6, 6, 6,eItsMe, 6, 6,#18-1f - 6, 6, 6, 6, 5, 7, 7,eError,#20-27 - 5, 8, 6, 6,eError, 6, 6, 6,#28-2f - 6, 6, 6, 6,eError,eError,eStart,eStart #30-37 -) - -UCS2BECharLenTable = (2, 2, 2, 0, 2, 2) - -UCS2BESMModel = {'classTable': UCS2BE_cls, - 'classFactor': 6, - 'stateTable': UCS2BE_st, - 'charLenTable': UCS2BECharLenTable, - 'name': 'UTF-16BE'} - -# UCS2-LE - -UCS2LE_cls = ( - 0,0,0,0,0,0,0,0, # 00 - 07 - 0,0,1,0,0,2,0,0, # 08 - 0f - 0,0,0,0,0,0,0,0, # 10 - 17 - 0,0,0,3,0,0,0,0, # 18 - 1f - 0,0,0,0,0,0,0,0, # 20 - 27 - 0,3,3,3,3,3,0,0, # 28 - 2f - 0,0,0,0,0,0,0,0, # 30 - 37 - 0,0,0,0,0,0,0,0, # 38 - 3f - 0,0,0,0,0,0,0,0, # 40 - 47 - 0,0,0,0,0,0,0,0, # 48 - 4f - 0,0,0,0,0,0,0,0, # 50 - 57 - 0,0,0,0,0,0,0,0, # 58 - 5f - 0,0,0,0,0,0,0,0, # 60 - 67 - 0,0,0,0,0,0,0,0, # 68 - 6f - 0,0,0,0,0,0,0,0, # 70 - 77 - 0,0,0,0,0,0,0,0, # 78 - 7f - 0,0,0,0,0,0,0,0, # 80 - 87 - 0,0,0,0,0,0,0,0, # 88 - 8f - 0,0,0,0,0,0,0,0, # 90 - 97 - 0,0,0,0,0,0,0,0, # 98 - 9f - 0,0,0,0,0,0,0,0, # a0 - a7 - 0,0,0,0,0,0,0,0, # a8 - af - 0,0,0,0,0,0,0,0, # b0 - b7 - 0,0,0,0,0,0,0,0, # b8 - bf - 0,0,0,0,0,0,0,0, # c0 - c7 - 0,0,0,0,0,0,0,0, # c8 - cf - 0,0,0,0,0,0,0,0, # d0 - d7 - 0,0,0,0,0,0,0,0, # d8 - df - 0,0,0,0,0,0,0,0, # e0 - e7 - 0,0,0,0,0,0,0,0, # e8 - ef - 0,0,0,0,0,0,0,0, # f0 - f7 - 0,0,0,0,0,0,4,5 # f8 - ff -) - -UCS2LE_st = ( - 6, 6, 7, 6, 4, 3,eError,eError,#00-07 - eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,#08-0f - eItsMe,eItsMe, 5, 5, 5,eError,eItsMe,eError,#10-17 - 5, 5, 5,eError, 5,eError, 6, 6,#18-1f - 7, 6, 8, 8, 5, 5, 5,eError,#20-27 - 5, 5, 5,eError,eError,eError, 5, 5,#28-2f - 5, 5, 5,eError, 5,eError,eStart,eStart #30-37 -) - -UCS2LECharLenTable = (2, 2, 2, 2, 2, 2) - -UCS2LESMModel = {'classTable': UCS2LE_cls, - 'classFactor': 6, - 'stateTable': UCS2LE_st, - 'charLenTable': UCS2LECharLenTable, - 'name': 'UTF-16LE'} - -# UTF-8 - -UTF8_cls = ( - 1,1,1,1,1,1,1,1, # 00 - 07 #allow 0x00 as a legal value - 1,1,1,1,1,1,0,0, # 08 - 0f - 1,1,1,1,1,1,1,1, # 10 - 17 - 1,1,1,0,1,1,1,1, # 18 - 1f - 1,1,1,1,1,1,1,1, # 20 - 27 - 1,1,1,1,1,1,1,1, # 28 - 2f - 1,1,1,1,1,1,1,1, # 30 - 37 - 1,1,1,1,1,1,1,1, # 38 - 3f - 1,1,1,1,1,1,1,1, # 40 - 47 - 1,1,1,1,1,1,1,1, # 48 - 4f - 1,1,1,1,1,1,1,1, # 50 - 57 - 1,1,1,1,1,1,1,1, # 58 - 5f - 1,1,1,1,1,1,1,1, # 60 - 67 - 1,1,1,1,1,1,1,1, # 68 - 6f - 1,1,1,1,1,1,1,1, # 70 - 77 - 1,1,1,1,1,1,1,1, # 78 - 7f - 2,2,2,2,3,3,3,3, # 80 - 87 - 4,4,4,4,4,4,4,4, # 88 - 8f - 4,4,4,4,4,4,4,4, # 90 - 97 - 4,4,4,4,4,4,4,4, # 98 - 9f - 5,5,5,5,5,5,5,5, # a0 - a7 - 5,5,5,5,5,5,5,5, # a8 - af - 5,5,5,5,5,5,5,5, # b0 - b7 - 5,5,5,5,5,5,5,5, # b8 - bf - 0,0,6,6,6,6,6,6, # c0 - c7 - 6,6,6,6,6,6,6,6, # c8 - cf - 6,6,6,6,6,6,6,6, # d0 - d7 - 6,6,6,6,6,6,6,6, # d8 - df - 7,8,8,8,8,8,8,8, # e0 - e7 - 8,8,8,8,8,9,8,8, # e8 - ef - 10,11,11,11,11,11,11,11, # f0 - f7 - 12,13,13,13,14,15,0,0 # f8 - ff -) - -UTF8_st = ( - eError,eStart,eError,eError,eError,eError, 12, 10,#00-07 - 9, 11, 8, 7, 6, 5, 4, 3,#08-0f - eError,eError,eError,eError,eError,eError,eError,eError,#10-17 - eError,eError,eError,eError,eError,eError,eError,eError,#18-1f - eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,#20-27 - eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,#28-2f - eError,eError, 5, 5, 5, 5,eError,eError,#30-37 - eError,eError,eError,eError,eError,eError,eError,eError,#38-3f - eError,eError,eError, 5, 5, 5,eError,eError,#40-47 - eError,eError,eError,eError,eError,eError,eError,eError,#48-4f - eError,eError, 7, 7, 7, 7,eError,eError,#50-57 - eError,eError,eError,eError,eError,eError,eError,eError,#58-5f - eError,eError,eError,eError, 7, 7,eError,eError,#60-67 - eError,eError,eError,eError,eError,eError,eError,eError,#68-6f - eError,eError, 9, 9, 9, 9,eError,eError,#70-77 - eError,eError,eError,eError,eError,eError,eError,eError,#78-7f - eError,eError,eError,eError,eError, 9,eError,eError,#80-87 - eError,eError,eError,eError,eError,eError,eError,eError,#88-8f - eError,eError, 12, 12, 12, 12,eError,eError,#90-97 - eError,eError,eError,eError,eError,eError,eError,eError,#98-9f - eError,eError,eError,eError,eError, 12,eError,eError,#a0-a7 - eError,eError,eError,eError,eError,eError,eError,eError,#a8-af - eError,eError, 12, 12, 12,eError,eError,eError,#b0-b7 - eError,eError,eError,eError,eError,eError,eError,eError,#b8-bf - eError,eError,eStart,eStart,eStart,eStart,eError,eError,#c0-c7 - eError,eError,eError,eError,eError,eError,eError,eError #c8-cf -) - -UTF8CharLenTable = (0, 1, 0, 0, 0, 0, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6) - -UTF8SMModel = {'classTable': UTF8_cls, - 'classFactor': 16, - 'stateTable': UTF8_st, - 'charLenTable': UTF8CharLenTable, - 'name': 'UTF-8'} diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/sbcharsetprober.py b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/sbcharsetprober.py deleted file mode 100644 index 37291bd..0000000 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/sbcharsetprober.py +++ /dev/null @@ -1,120 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -import sys -from . import constants -from .charsetprober import CharSetProber -from .compat import wrap_ord - -SAMPLE_SIZE = 64 -SB_ENOUGH_REL_THRESHOLD = 1024 -POSITIVE_SHORTCUT_THRESHOLD = 0.95 -NEGATIVE_SHORTCUT_THRESHOLD = 0.05 -SYMBOL_CAT_ORDER = 250 -NUMBER_OF_SEQ_CAT = 4 -POSITIVE_CAT = NUMBER_OF_SEQ_CAT - 1 -#NEGATIVE_CAT = 0 - - -class SingleByteCharSetProber(CharSetProber): - def __init__(self, model, reversed=False, nameProber=None): - CharSetProber.__init__(self) - self._mModel = model - # TRUE if we need to reverse every pair in the model lookup - self._mReversed = reversed - # Optional auxiliary prober for name decision - self._mNameProber = nameProber - self.reset() - - def reset(self): - CharSetProber.reset(self) - # char order of last character - self._mLastOrder = 255 - self._mSeqCounters = [0] * NUMBER_OF_SEQ_CAT - self._mTotalSeqs = 0 - self._mTotalChar = 0 - # characters that fall in our sampling range - self._mFreqChar = 0 - - def get_charset_name(self): - if self._mNameProber: - return self._mNameProber.get_charset_name() - else: - return self._mModel['charsetName'] - - def feed(self, aBuf): - if not self._mModel['keepEnglishLetter']: - aBuf = self.filter_without_english_letters(aBuf) - aLen = len(aBuf) - if not aLen: - return self.get_state() - for c in aBuf: - order = self._mModel['charToOrderMap'][wrap_ord(c)] - if order < SYMBOL_CAT_ORDER: - self._mTotalChar += 1 - if order < SAMPLE_SIZE: - self._mFreqChar += 1 - if self._mLastOrder < SAMPLE_SIZE: - self._mTotalSeqs += 1 - if not self._mReversed: - i = (self._mLastOrder * SAMPLE_SIZE) + order - model = self._mModel['precedenceMatrix'][i] - else: # reverse the order of the letters in the lookup - i = (order * SAMPLE_SIZE) + self._mLastOrder - model = self._mModel['precedenceMatrix'][i] - self._mSeqCounters[model] += 1 - self._mLastOrder = order - - if self.get_state() == constants.eDetecting: - if self._mTotalSeqs > SB_ENOUGH_REL_THRESHOLD: - cf = self.get_confidence() - if cf > POSITIVE_SHORTCUT_THRESHOLD: - if constants._debug: - sys.stderr.write('%s confidence = %s, we have a' - 'winner\n' % - (self._mModel['charsetName'], cf)) - self._mState = constants.eFoundIt - elif cf < NEGATIVE_SHORTCUT_THRESHOLD: - if constants._debug: - sys.stderr.write('%s confidence = %s, below negative' - 'shortcut threshhold %s\n' % - (self._mModel['charsetName'], cf, - NEGATIVE_SHORTCUT_THRESHOLD)) - self._mState = constants.eNotMe - - return self.get_state() - - def get_confidence(self): - r = 0.01 - if self._mTotalSeqs > 0: - r = ((1.0 * self._mSeqCounters[POSITIVE_CAT]) / self._mTotalSeqs - / self._mModel['mTypicalPositiveRatio']) - r = r * self._mFreqChar / self._mTotalChar - if r >= 1.0: - r = 0.99 - return r diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/sjisprober.py b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/sjisprober.py deleted file mode 100644 index cd0e9e7..0000000 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/sjisprober.py +++ /dev/null @@ -1,91 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -import sys -from .mbcharsetprober import MultiByteCharSetProber -from .codingstatemachine import CodingStateMachine -from .chardistribution import SJISDistributionAnalysis -from .jpcntx import SJISContextAnalysis -from .mbcssm import SJISSMModel -from . import constants - - -class SJISProber(MultiByteCharSetProber): - def __init__(self): - MultiByteCharSetProber.__init__(self) - self._mCodingSM = CodingStateMachine(SJISSMModel) - self._mDistributionAnalyzer = SJISDistributionAnalysis() - self._mContextAnalyzer = SJISContextAnalysis() - self.reset() - - def reset(self): - MultiByteCharSetProber.reset(self) - self._mContextAnalyzer.reset() - - def get_charset_name(self): - return self._mContextAnalyzer.get_charset_name() - - def feed(self, aBuf): - aLen = len(aBuf) - for i in range(0, aLen): - codingState = self._mCodingSM.next_state(aBuf[i]) - if codingState == constants.eError: - if constants._debug: - sys.stderr.write(self.get_charset_name() - + ' prober hit error at byte ' + str(i) - + '\n') - self._mState = constants.eNotMe - break - elif codingState == constants.eItsMe: - self._mState = constants.eFoundIt - break - elif codingState == constants.eStart: - charLen = self._mCodingSM.get_current_charlen() - if i == 0: - self._mLastChar[1] = aBuf[0] - self._mContextAnalyzer.feed(self._mLastChar[2 - charLen:], - charLen) - self._mDistributionAnalyzer.feed(self._mLastChar, charLen) - else: - self._mContextAnalyzer.feed(aBuf[i + 1 - charLen:i + 3 - - charLen], charLen) - self._mDistributionAnalyzer.feed(aBuf[i - 1:i + 1], - charLen) - - self._mLastChar[0] = aBuf[aLen - 1] - - if self.get_state() == constants.eDetecting: - if (self._mContextAnalyzer.got_enough_data() and - (self.get_confidence() > constants.SHORTCUT_THRESHOLD)): - self._mState = constants.eFoundIt - - return self.get_state() - - def get_confidence(self): - contxtCf = self._mContextAnalyzer.get_confidence() - distribCf = self._mDistributionAnalyzer.get_confidence() - return max(contxtCf, distribCf) diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/universaldetector.py b/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/universaldetector.py deleted file mode 100644 index 476522b..0000000 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/universaldetector.py +++ /dev/null @@ -1,170 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from . import constants -import sys -import codecs -from .latin1prober import Latin1Prober # windows-1252 -from .mbcsgroupprober import MBCSGroupProber # multi-byte character sets -from .sbcsgroupprober import SBCSGroupProber # single-byte character sets -from .escprober import EscCharSetProber # ISO-2122, etc. -import re - -MINIMUM_THRESHOLD = 0.20 -ePureAscii = 0 -eEscAscii = 1 -eHighbyte = 2 - - -class UniversalDetector: - def __init__(self): - self._highBitDetector = re.compile(b'[\x80-\xFF]') - self._escDetector = re.compile(b'(\033|~{)') - self._mEscCharSetProber = None - self._mCharSetProbers = [] - self.reset() - - def reset(self): - self.result = {'encoding': None, 'confidence': 0.0} - self.done = False - self._mStart = True - self._mGotData = False - self._mInputState = ePureAscii - self._mLastChar = b'' - if self._mEscCharSetProber: - self._mEscCharSetProber.reset() - for prober in self._mCharSetProbers: - prober.reset() - - def feed(self, aBuf): - if self.done: - return - - aLen = len(aBuf) - if not aLen: - return - - if not self._mGotData: - # If the data starts with BOM, we know it is UTF - if aBuf[:3] == codecs.BOM_UTF8: - # EF BB BF UTF-8 with BOM - self.result = {'encoding': "UTF-8-SIG", 'confidence': 1.0} - elif aBuf[:4] == codecs.BOM_UTF32_LE: - # FF FE 00 00 UTF-32, little-endian BOM - self.result = {'encoding': "UTF-32LE", 'confidence': 1.0} - elif aBuf[:4] == codecs.BOM_UTF32_BE: - # 00 00 FE FF UTF-32, big-endian BOM - self.result = {'encoding': "UTF-32BE", 'confidence': 1.0} - elif aBuf[:4] == b'\xFE\xFF\x00\x00': - # FE FF 00 00 UCS-4, unusual octet order BOM (3412) - self.result = { - 'encoding': "X-ISO-10646-UCS-4-3412", - 'confidence': 1.0 - } - elif aBuf[:4] == b'\x00\x00\xFF\xFE': - # 00 00 FF FE UCS-4, unusual octet order BOM (2143) - self.result = { - 'encoding': "X-ISO-10646-UCS-4-2143", - 'confidence': 1.0 - } - elif aBuf[:2] == codecs.BOM_LE: - # FF FE UTF-16, little endian BOM - self.result = {'encoding': "UTF-16LE", 'confidence': 1.0} - elif aBuf[:2] == codecs.BOM_BE: - # FE FF UTF-16, big endian BOM - self.result = {'encoding': "UTF-16BE", 'confidence': 1.0} - - self._mGotData = True - if self.result['encoding'] and (self.result['confidence'] > 0.0): - self.done = True - return - - if self._mInputState == ePureAscii: - if self._highBitDetector.search(aBuf): - self._mInputState = eHighbyte - elif ((self._mInputState == ePureAscii) and - self._escDetector.search(self._mLastChar + aBuf)): - self._mInputState = eEscAscii - - self._mLastChar = aBuf[-1:] - - if self._mInputState == eEscAscii: - if not self._mEscCharSetProber: - self._mEscCharSetProber = EscCharSetProber() - if self._mEscCharSetProber.feed(aBuf) == constants.eFoundIt: - self.result = {'encoding': self._mEscCharSetProber.get_charset_name(), - 'confidence': self._mEscCharSetProber.get_confidence()} - self.done = True - elif self._mInputState == eHighbyte: - if not self._mCharSetProbers: - self._mCharSetProbers = [MBCSGroupProber(), SBCSGroupProber(), - Latin1Prober()] - for prober in self._mCharSetProbers: - if prober.feed(aBuf) == constants.eFoundIt: - self.result = {'encoding': prober.get_charset_name(), - 'confidence': prober.get_confidence()} - self.done = True - break - - def close(self): - if self.done: - return - if not self._mGotData: - if constants._debug: - sys.stderr.write('no data received!\n') - return - self.done = True - - if self._mInputState == ePureAscii: - self.result = {'encoding': 'ascii', 'confidence': 1.0} - return self.result - - if self._mInputState == eHighbyte: - proberConfidence = None - maxProberConfidence = 0.0 - maxProber = None - for prober in self._mCharSetProbers: - if not prober: - continue - proberConfidence = prober.get_confidence() - if proberConfidence > maxProberConfidence: - maxProberConfidence = proberConfidence - maxProber = prober - if maxProber and (maxProberConfidence > MINIMUM_THRESHOLD): - self.result = {'encoding': maxProber.get_charset_name(), - 'confidence': maxProber.get_confidence()} - return self.result - - if constants._debug: - sys.stderr.write('no probers hit minimum threshhold\n') - for prober in self._mCharSetProbers[0].mProbers: - if not prober: - continue - sys.stderr.write('%s confidence = %s\n' % - (prober.get_charset_name(), - prober.get_confidence())) diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/connection.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/connection.cpython-36.pyc deleted file mode 100644 index a5a22e317ae45577f4b01370dfde580a06652a47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8419 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 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/exceptions.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/exceptions.cpython-36.pyc deleted file mode 100644 index d7ef224ae1a08e1185a2ff6234a113ea908746ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8876 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 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/poolmanager.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/poolmanager.cpython-36.pyc deleted file mode 100644 index cba65255ee32fae710f76ed2b5407f119d4061b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10823 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 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 0cef7cabf3f4a34cf586c7ea2becb57e1db1b8f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmXr!<>flYemsf+2p)q77+?f49Dul(1xTbY1T$zd`mJOr0tq9CU!nRXxdr+KnFYE@ zrI|S?x+caYg<0ms#vmaujxS5iOUWjg diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__pycache__/appengine.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__pycache__/appengine.cpython-36.pyc deleted file mode 100644 index 204c4351c77f6c04cd227d52760987335bd6f8ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6636 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 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__pycache__/socks.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__pycache__/socks.cpython-36.pyc deleted file mode 100644 index e8306723c1360c0deb6493e0fc46e887c7f6fbd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4483 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 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py b/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py deleted file mode 100644 index ed3b9cc..0000000 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py +++ /dev/null @@ -1,358 +0,0 @@ -'''SSL with SNI_-support for Python 2. Follow these instructions if you would -like to verify SSL certificates in Python 2. Note, the default libraries do -*not* do certificate checking; you need to do additional work to validate -certificates yourself. - -This needs the following packages installed: - -* pyOpenSSL (tested with 0.13) -* ndg-httpsclient (tested with 0.3.2) -* pyasn1 (tested with 0.1.6) - -You can install them with the following command: - - pip install pyopenssl ndg-httpsclient pyasn1 - -To activate certificate checking, call -:func:`~urllib3.contrib.pyopenssl.inject_into_urllib3` from your Python code -before you begin making HTTP requests. This can be done in a ``sitecustomize`` -module, or at any other time before your application begins using ``urllib3``, -like this:: - - try: - import urllib3.contrib.pyopenssl - urllib3.contrib.pyopenssl.inject_into_urllib3() - except ImportError: - pass - -Now you can use :mod:`urllib3` as you normally would, and it will support SNI -when the required modules are installed. - -Activating this module also has the positive side effect of disabling SSL/TLS -compression in Python 2 (see `CRIME attack`_). - -If you want to configure the default list of supported cipher suites, you can -set the ``urllib3.contrib.pyopenssl.DEFAULT_SSL_CIPHER_LIST`` variable. - -Module Variables ----------------- - -:var DEFAULT_SSL_CIPHER_LIST: The list of supported SSL/TLS cipher suites. - -.. _sni: https://en.wikipedia.org/wiki/Server_Name_Indication -.. _crime attack: https://en.wikipedia.org/wiki/CRIME_(security_exploit) - -''' -from __future__ import absolute_import - -try: - from ndg.httpsclient.ssl_peer_verification import SUBJ_ALT_NAME_SUPPORT - from ndg.httpsclient.subj_alt_name import SubjectAltName as BaseSubjectAltName -except SyntaxError as e: - raise ImportError(e) - -import OpenSSL.SSL -from pyasn1.codec.der import decoder as der_decoder -from pyasn1.type import univ, constraint -from socket import timeout, error as SocketError - -try: # Platform-specific: Python 2 - from socket import _fileobject -except ImportError: # Platform-specific: Python 3 - _fileobject = None - from urllib3.packages.backports.makefile import backport_makefile - -import ssl -import select -import six - -from .. import connection -from .. import util - -__all__ = ['inject_into_urllib3', 'extract_from_urllib3'] - -# SNI only *really* works if we can read the subjectAltName of certificates. -HAS_SNI = SUBJ_ALT_NAME_SUPPORT - -# Map from urllib3 to PyOpenSSL compatible parameter-values. -_openssl_versions = { - ssl.PROTOCOL_SSLv23: OpenSSL.SSL.SSLv23_METHOD, - ssl.PROTOCOL_TLSv1: OpenSSL.SSL.TLSv1_METHOD, -} - -if hasattr(ssl, 'PROTOCOL_TLSv1_1') and hasattr(OpenSSL.SSL, 'TLSv1_1_METHOD'): - _openssl_versions[ssl.PROTOCOL_TLSv1_1] = OpenSSL.SSL.TLSv1_1_METHOD - -if hasattr(ssl, 'PROTOCOL_TLSv1_2') and hasattr(OpenSSL.SSL, 'TLSv1_2_METHOD'): - _openssl_versions[ssl.PROTOCOL_TLSv1_2] = OpenSSL.SSL.TLSv1_2_METHOD - -try: - _openssl_versions.update({ssl.PROTOCOL_SSLv3: OpenSSL.SSL.SSLv3_METHOD}) -except AttributeError: - pass - -_openssl_verify = { - ssl.CERT_NONE: OpenSSL.SSL.VERIFY_NONE, - ssl.CERT_OPTIONAL: OpenSSL.SSL.VERIFY_PEER, - ssl.CERT_REQUIRED: - OpenSSL.SSL.VERIFY_PEER + OpenSSL.SSL.VERIFY_FAIL_IF_NO_PEER_CERT, -} - -DEFAULT_SSL_CIPHER_LIST = util.ssl_.DEFAULT_CIPHERS.encode('ascii') - -# OpenSSL will only write 16K at a time -SSL_WRITE_BLOCKSIZE = 16384 - -orig_util_HAS_SNI = util.HAS_SNI -orig_connection_ssl_wrap_socket = connection.ssl_wrap_socket - - -def inject_into_urllib3(): - 'Monkey-patch urllib3 with PyOpenSSL-backed SSL-support.' - - connection.ssl_wrap_socket = ssl_wrap_socket - util.HAS_SNI = HAS_SNI - util.IS_PYOPENSSL = True - - -def extract_from_urllib3(): - 'Undo monkey-patching by :func:`inject_into_urllib3`.' - - connection.ssl_wrap_socket = orig_connection_ssl_wrap_socket - util.HAS_SNI = orig_util_HAS_SNI - util.IS_PYOPENSSL = False - - -# Note: This is a slightly bug-fixed version of same from ndg-httpsclient. -class SubjectAltName(BaseSubjectAltName): - '''ASN.1 implementation for subjectAltNames support''' - - # There is no limit to how many SAN certificates a certificate may have, - # however this needs to have some limit so we'll set an arbitrarily high - # limit. - sizeSpec = univ.SequenceOf.sizeSpec + \ - constraint.ValueSizeConstraint(1, 1024) - - -# Note: This is a slightly bug-fixed version of same from ndg-httpsclient. -def get_subj_alt_name(peer_cert): - # Search through extensions - dns_name = [] - if not SUBJ_ALT_NAME_SUPPORT: - return dns_name - - general_names = SubjectAltName() - for i in range(peer_cert.get_extension_count()): - ext = peer_cert.get_extension(i) - ext_name = ext.get_short_name() - if ext_name != b'subjectAltName': - continue - - # PyOpenSSL returns extension data in ASN.1 encoded form - ext_dat = ext.get_data() - decoded_dat = der_decoder.decode(ext_dat, - asn1Spec=general_names) - - for name in decoded_dat: - if not isinstance(name, SubjectAltName): - continue - for entry in range(len(name)): - component = name.getComponentByPosition(entry) - if component.getName() != 'dNSName': - continue - dns_name.append(str(component.getComponent())) - - return dns_name - - -class WrappedSocket(object): - '''API-compatibility wrapper for Python OpenSSL's Connection-class. - - Note: _makefile_refs, _drop() and _reuse() are needed for the garbage - collector of pypy. - ''' - - def __init__(self, connection, socket, suppress_ragged_eofs=True): - self.connection = connection - self.socket = socket - self.suppress_ragged_eofs = suppress_ragged_eofs - self._makefile_refs = 0 - self._closed = False - - def fileno(self): - return self.socket.fileno() - - # Copy-pasted from Python 3.5 source code - def _decref_socketios(self): - if self._makefile_refs > 0: - self._makefile_refs -= 1 - if self._closed: - self.close() - - def recv(self, *args, **kwargs): - try: - data = self.connection.recv(*args, **kwargs) - except OpenSSL.SSL.SysCallError as e: - if self.suppress_ragged_eofs and e.args == (-1, 'Unexpected EOF'): - return b'' - else: - raise SocketError(str(e)) - except OpenSSL.SSL.ZeroReturnError as e: - if self.connection.get_shutdown() == OpenSSL.SSL.RECEIVED_SHUTDOWN: - return b'' - else: - raise - except OpenSSL.SSL.WantReadError: - rd, wd, ed = select.select( - [self.socket], [], [], self.socket.gettimeout()) - if not rd: - raise timeout('The read operation timed out') - else: - return self.recv(*args, **kwargs) - else: - return data - - def recv_into(self, *args, **kwargs): - try: - return self.connection.recv_into(*args, **kwargs) - except OpenSSL.SSL.SysCallError as e: - if self.suppress_ragged_eofs and e.args == (-1, 'Unexpected EOF'): - return 0 - else: - raise SocketError(str(e)) - except OpenSSL.SSL.ZeroReturnError as e: - if self.connection.get_shutdown() == OpenSSL.SSL.RECEIVED_SHUTDOWN: - return 0 - else: - raise - except OpenSSL.SSL.WantReadError: - rd, wd, ed = select.select( - [self.socket], [], [], self.socket.gettimeout()) - if not rd: - raise timeout('The read operation timed out') - else: - return self.recv_into(*args, **kwargs) - - def settimeout(self, timeout): - return self.socket.settimeout(timeout) - - def _send_until_done(self, data): - while True: - try: - return self.connection.send(data) - except OpenSSL.SSL.WantWriteError: - _, wlist, _ = select.select([], [self.socket], [], - self.socket.gettimeout()) - if not wlist: - raise timeout() - continue - - def sendall(self, data): - total_sent = 0 - while total_sent < len(data): - sent = self._send_until_done(data[total_sent:total_sent + SSL_WRITE_BLOCKSIZE]) - total_sent += sent - - def shutdown(self): - # FIXME rethrow compatible exceptions should we ever use this - self.connection.shutdown() - - def close(self): - if self._makefile_refs < 1: - try: - self._closed = True - return self.connection.close() - except OpenSSL.SSL.Error: - return - else: - self._makefile_refs -= 1 - - def getpeercert(self, binary_form=False): - x509 = self.connection.get_peer_certificate() - - if not x509: - return x509 - - if binary_form: - return OpenSSL.crypto.dump_certificate( - OpenSSL.crypto.FILETYPE_ASN1, - x509) - - return { - 'subject': ( - (('commonName', x509.get_subject().CN),), - ), - 'subjectAltName': [ - ('DNS', value) - for value in get_subj_alt_name(x509) - ] - } - - def _reuse(self): - self._makefile_refs += 1 - - def _drop(self): - if self._makefile_refs < 1: - self.close() - else: - self._makefile_refs -= 1 - - -if _fileobject: # Platform-specific: Python 2 - def makefile(self, mode, bufsize=-1): - self._makefile_refs += 1 - return _fileobject(self, mode, bufsize, close=True) -else: # Platform-specific: Python 3 - makefile = backport_makefile - -WrappedSocket.makefile = makefile - - -def _verify_callback(cnx, x509, err_no, err_depth, return_code): - return err_no == 0 - - -def ssl_wrap_socket(sock, keyfile=None, certfile=None, cert_reqs=None, - ca_certs=None, server_hostname=None, - ssl_version=None, ca_cert_dir=None): - ctx = OpenSSL.SSL.Context(_openssl_versions[ssl_version]) - if certfile: - keyfile = keyfile or certfile # Match behaviour of the normal python ssl library - ctx.use_certificate_file(certfile) - if keyfile: - ctx.use_privatekey_file(keyfile) - if cert_reqs != ssl.CERT_NONE: - ctx.set_verify(_openssl_verify[cert_reqs], _verify_callback) - if ca_certs or ca_cert_dir: - try: - ctx.load_verify_locations(ca_certs, ca_cert_dir) - except OpenSSL.SSL.Error as e: - raise ssl.SSLError('bad ca_certs: %r' % ca_certs, e) - else: - ctx.set_default_verify_paths() - - # Disable TLS compression to mitigate CRIME attack (issue #309) - OP_NO_COMPRESSION = 0x20000 - ctx.set_options(OP_NO_COMPRESSION) - - # Set list of supported ciphersuites. - ctx.set_cipher_list(DEFAULT_SSL_CIPHER_LIST) - - cnx = OpenSSL.SSL.Connection(ctx, sock) - if isinstance(server_hostname, six.text_type): # Platform-specific: Python 3 - server_hostname = server_hostname.encode('utf-8') - cnx.set_tlsext_host_name(server_hostname) - cnx.set_connect_state() - while True: - try: - cnx.do_handshake() - except OpenSSL.SSL.WantReadError: - rd, _, _ = select.select([sock], [], [], sock.gettimeout()) - if not rd: - raise timeout('select timed out') - continue - except OpenSSL.SSL.Error as e: - raise ssl.SSLError('bad handshake: %r' % e) - break - - return WrappedSocket(cnx, sock) diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 9ca43e630fbc6ebf477956118940354a26db4b1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294 zcmX|5F-`+95VU;>7e$GXcmeGdiHk#`L5LU7AW>Yi^2H`G*k{LUBk?3Y0)KEzl`l}? zI|M7u?r3JDop!xme$=0xC4_tx{0}Sat^hB~l0;HNEbS;IlF7<2TXj|8XWdNBA4pT5 zN{TczpNk%yNl}5e-i3IgzxoBD0W0F}00)P05LSg*vF;l>-DaMb08c5Vpa8=7J(J1F zHGnV%;GKj;k*D?j$fNb#YrpA}Hga>-#^dufwxcuwUezF7;6WXe!ie09-HX^O{FmffJ7ORIKv3;KusFJ zqIt&@2*TYujXmdN>pX58ihY;n&UgTY?_opQ%38E}3rW246CuI%(G@d}Kk;eq*tIdG zse3Ya(;1nS)~Q^wm0ubR4v0J^3Em}1Tu0W5U7k-9W)-6Qr+*EGjPO@O11JFK2cfO6wr6OwrP$hAk>) yolUhLnm;p}Rz?V3c=NaLe~FY3uDBy)q?dL3T$Z#F>>~Ww_B=4|qaIol527DH=6Iq2 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-36.pyc deleted file mode 100644 index 2533e9b79897b96ff30e4d043d08e7c69cc8a786..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2279 zcmZ`)-EI^&6drqKc4sG>g+{bM#f3#h$!?QbAdn)|B2f4d6%B|~AZ?+;WbDn(W_D&` zdq}dH+;pkLGw=p|gI-rv`wqUXREgVO^rBZBd&v(}^~z_@93LMa+uwJ*G&}46UjL)_ zYs<3!w2m|f^c&E{G6-t*EQ%;jQ4dkOhwoa{q3%nIy3C%~J%`TFI`v+no=Y3le`)n< z6t7wB=J=cM28@g%84toiE@T#s*nFGx%Pf{jo{>J!N95tI9Du$Qz;A&tAy_7pC?(qi zmXT5<*#=o#yC1xPJgn7meJQvcTnH}3`g6Y_P;NjMO%Tk2B&{B%2vWf6_zL4P=_hd{ z*=^2qzS_2x7lt~QFjRgRj&fS2T5pEoRvD$!k)JJIgJ?$lTXf~9=oU$_xLzhHUA(*` zw}xMeC2cZ2e8DoB^DbvwB@4C1!tf)URgtn;tASwDu>#qtvwh1 z;m&@-pw}vQh-eK)>s7tNn-0G(F|A9OJwYd-|A?x(cn&d~iB%yjH{m`jm)15hmz6zq zsW(B$%C1AC8f{FFcm;k&ZoN12%$3*$PHOLXR6vQ>)DAt@4y4% z>XEHqo>&mWr%gILoT+S`7j2!?w&n!yHLAvNwgOMM;$!2%w;Ev@C{Y~eoN7(xuI08o3%Kdr6=7{ zDB$`MxCdfYq0V>#A^^g(U9t_ph$Bt~Niq^2f{xr;T_YM(*T~rY{)gb%7h`89TU;FD zr=6*x1L{ra0rXzGrCd>@iBxW!mzgv-uN=+_uG}==W?a>xq5!xlU&x3{v7N|)!knoZ z6LC~9RR`xZib09VrqOS8lG|R<40y+gF%o%G)QWnjJ+u;lWOn zQ$$iIx6sQdFJ*l>0vf9ZXQL>|DCE*O;@s!ahO%MGA#->g4obB`nh8TIvntdYOLRb3 zu7lv`_{c*|4ARA@WjpA&>)B0o!kx2E**-df&mevlykpG;-E>gh4fOv8MZ;b~iPF#o z8eo7fl&ii4P_cI|R5pNY{wdyb3=M1m@mYy07XXC$4e9{2@zBl{10$<|w&K(oO z)iGf9@?H(%Xs{l}(PS7N#Ci2WoZ%B|>p6hfsQ~J<4kY_c0&OZp8^fBcOAqWY(#M|| z!eyNUPt5-UPrpJHrZcCl0}l_ZO}#_CQhPRP0}>xIp7eK#97K|IH0U~H9^gk=oKr?g zKj(1bBoc%(S@H}_>$?X3P*T_Oc$3LsgUNz1t|!m8+tX^z1cYRyvyY2TKn$HOUA=gf zL>WEcmWjoodiiE@1i z1>$BZSAnI<2EMMU`a7%gfkUG_(?f>!&nsh%};By_l}%G*&@o6y~%c!`$7i=L%IGRG8+yb zyyu340mQL92Wae|CThXI4_XU3_8bs;`ZWh54*t~0Im|EWJdin3NT(i#G>^lOf21>- v3E@5E0-i#!oCnKv6S@YNc}G$*Z?q{g-dEFy{JJjC!n}^IhaG&}@vpoEBZ_l- diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 6be7482cf65763541c660dae72a3070060328692..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 966 zcmcJN&2H2%5XY0pZ{br9H!snALL6n2z~~)o-xGFVVbXiDyTvp zh>(O~P<5&`Uuk&!$cES?n_`P>iEXkC`Mcy!wX+Q7_pU%yFc00RI5LvA zmeE=$sqIyGonNmFEoIZN($=z}m6l4e3SP)WamMH=D=MZ9uHoRZq9vCG_G6bWmv3Im z#2iP1WqV6{@Zs&jt9{sYlfoFLEj_NA6Q-4}8|%iJfsPACOWe`y+_>rA zlrfxMz-=JJjd1Zv7m6BLo-sS`xU6ioW{st`7R<%(fU>n9EjnaYU(S0jIboKbN@HDL z71}V`YVHO`@ft;F$amjst`jI-_YpB-4KYH@5Gi66(L<~tu*rIYh!6urhL|FTfc^RS zzkGMT<5EhGTia?zsqVm4F1=}(*XUyKv1P`3buIxvm2ALz)b4ud9;`NhqcGA!`up$t6J?IwKcDHA200r z$0ufiDLQ$+3v diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/connection.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/connection.cpython-36.pyc deleted file mode 100644 index b0aa7c2c7c4aaf2eed3db8f55541c53ba5178b8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3252 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 a@kD#qU&Ned5j#ZiOL}lL01!Z`Sm<9dHa`0R diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/retry.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/retry.cpython-36.pyc deleted file mode 100644 index 2dda55f204d16106a0d4658eb414daace58be41e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9107 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 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/url.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/url.cpython-36.pyc deleted file mode 100644 index 81d3269e55e99779763050cef3123f1dca52c4de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4887 zcma)A&2uA174M!8X(Y>DXOlPypPi%X_j+Vm@nV8hJ?eSg{XV+i`@Pq? zwz^vXYxQs4e{V4MPqy@_qJI<3?BOAqE-Yx1&u62Eo%)Q7D3^cRrE zn!LCa^-P*fG8M+dajG+r>Z53=WHuQm>I( zG|Bb~Z!a}j;SmcwBT)RqiP8^?V4$Pjp&DgvC1D!OoRWna8>f*t%Z0cXcw| ztqXkKiL%IKdeYA(T8Tlbg;ry&3>1tHmV^_X+-q6#PCu}wF-E^NG#Aahjz{k6XLElahkVQ%Og}4m?mxq3 ze#SE=XUERIo3otfPVVMj?&p=fdK|z2XXk{sn_f{jS)?;_Kc?L^ld;lz6?Ba zFl+{e+fR(HfT(GQHEEzp1zo4d3OyQl;FN1&*iRy3!tl@R3BM@P?84e5Ur9gqeDuL1IcF`JuaPtntmaN$I{y~>bdp=g50sR>!3N(o6}rN+X2nRDFwM_-v@ah{fy<_ad~<{ z?pyj1=J|GB#lHU@^D22|&Z}x^e*mqTSLZYe*C6^G9L8b+ApNvb#pCeCe33|kxJ+OutC`M@}dP=AVQ9nx_TIVzHd;&LeM4A?l#*-|=nk-%Ld0ftx=uI*a!5PG+h!IIdiU|^r{+q9EeT6}*)e@UP&TNk++UTdw zX@cBrUZ~h(l5U=g>Ad-><#@xgdvU>QA-G^WQx_X^!f&4NjwY}>;V%LdT>wwBRtD(T zXAFX%-vM+G_X`jN z84ucr;m=7pp)*^g7fWwecgjz5wFr=Ma7bZT)WdL?%1J`~Mi?GWqGUb-elqQY?3*Ob zj7?xgFxDw@Z1zw;0|ELQ^!O${NHI+&7pwCm+E+;uhG*LYwV$L(lxS>@ru1tr;}Lis z_Z-I8Dhh)jQ+Q#r{8E`dB?-}$Zc9C{^4N^aj= z8g2T~-*G_JlirU}006kkWMwfQrBa+J9rY3b)j&v<#6u#OEn&t;(gI*c;4+9cvc!NO z%(7ZcY>C@tS%v&EUxIkfP;Vil(8^(yp~RGDtmn}1lYs>^%W{imE(;U(8#kf!Zkq;K@1DFx|`_VyB#*kK|s%~*z-ujBT;*RGxC zwk!;schZq+mfC*U2f7**HX{{jptpt5(PY?Dda?1Qg%z+{swlBlZ4&8SR7B@z*%R2& z6nC1E{}tMf^_ES*29aHrJd`7p&^uE z>+p15$2Z^(YCw+%c-9^L8paj~KqV=a3fAB6K%1PIdd7}Xg23zfsrTd8L-WxpXh^*| zJE-XERHjHry2sAP4$1;Xb+q*8!mvv;cZMWCtK~I)FR$eR)!InbwDJK~y0}b~E1enS z>OW#_@Enu11Bd$HT%V7FPwvV(N{*!BOi<16#=I-=4wf641JRPOp8xwr2fGxK@o zqpIh>;aSDTt9SS%*)dwnT~z;HLLwSg_@8mpK>2Z2`B(GGaTPmI$^C=MXI#IGTLZ_n zuhbT0k3{U-k(+kJUyM}$8=qz)>HuKA63Kw!tI`&G?xz_?v-xCCmiNOixs1YYI5!d$CHSvEd3dJ%WGAGU=mmAQzuU z^eqG}Jp1u#AJ}5uy#wIx+=I?G^chL?rBvV_pDAW-c+#g-BJyYxy|4~r)!{Ff*E6a5{$H>>5v z)VH``1HPze`%+Y6BjepT(>^8wO-5OBrOc=o79n(FwRhLTr_D!}F44#jY2VI+QEhPm zzs5TAQ#{y)=Tsbmqs146%DT7VcuwE~mfUqJRftBjhziiEyA|A}u#!LJ*7-U$N52Jb z3-F?(?V?%mA~;3xA>irux6jAxNUnU}K`Ya#GyQ?}+IQ#=2mGC)r2UIQJYHoZj!dQ^ zS^lAb|5i}jHa#o5yxiM@gziSTZ9R{lf{)K{L$IqdyFZ^}+)zouynyQ)_}yu)P%Si= z(0?E(TgZ%JrJp8=vUd=p$*7{P9`x0iE+wWstQtZpjIvA{d%X5sOQneGk^=UoU0$-^ bDl4w*lxGZGaT~nhG~CPX#;xG_;1~Y^Np;Fs diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/sessions.py b/lib/python3.6/site-packages/pip/_vendor/requests/sessions.py index bcbcc88..6570e73 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/sessions.py +++ b/lib/python3.6/site-packages/pip/_vendor/requests/sessions.py @@ -8,26 +8,28 @@ This module provides a Session object to manage and persist settings across requests (cookies, auth, proxies). """ import os +import platform +import time from collections import Mapping -from datetime import datetime +from datetime import timedelta from .auth import _basic_auth_str -from .compat import cookielib, OrderedDict, urljoin, urlparse +from .compat import cookielib, is_py3, OrderedDict, urljoin, urlparse from .cookies import ( cookiejar_from_dict, extract_cookies_to_jar, RequestsCookieJar, merge_cookies) from .models import Request, PreparedRequest, DEFAULT_REDIRECT_LIMIT from .hooks import default_hooks, dispatch_hook -from .utils import to_key_val_list, default_headers, to_native_string +from ._internal_utils import to_native_string +from .utils import to_key_val_list, default_headers from .exceptions import ( TooManyRedirects, InvalidSchema, ChunkedEncodingError, ContentDecodingError) -from .packages.urllib3._collections import RecentlyUsedContainer -from .structures import CaseInsensitiveDict +from .structures import CaseInsensitiveDict from .adapters import HTTPAdapter from .utils import ( requote_uri, get_environ_proxies, get_netrc_auth, should_bypass_proxies, - get_auth_from_url + get_auth_from_url, rewind_body ) from .status_codes import codes @@ -35,7 +37,14 @@ from .status_codes import codes # formerly defined here, reexposed here for backward compatibility from .models import REDIRECT_STATI -REDIRECT_CACHE_SIZE = 1000 +# Preferred clock, based on which one is more accurate on a given system. +if platform.system() == 'Windows': + try: # Python 3.3+ + preferred_clock = time.perf_counter + except AttributeError: # Earlier than Python 3. + preferred_clock = time.clock +else: + preferred_clock = time.time def merge_setting(request_setting, session_setting, dict_class=OrderedDict): @@ -85,39 +94,58 @@ def merge_hooks(request_hooks, session_hooks, dict_class=OrderedDict): class SessionRedirectMixin(object): + + def get_redirect_target(self, resp): + """Receives a Response. Returns a redirect URI or ``None``""" + # Due to the nature of how requests processes redirects this method will + # be called at least once upon the original response and at least twice + # on each subsequent redirect response (if any). + # If a custom mixin is used to handle this logic, it may be advantageous + # to cache the redirect location onto the response object as a private + # attribute. + if resp.is_redirect: + location = resp.headers['location'] + # Currently the underlying http module on py3 decode headers + # in latin1, but empirical evidence suggests that latin1 is very + # rarely used with non-ASCII characters in HTTP headers. + # It is more likely to get UTF8 header rather than latin1. + # This causes incorrect handling of UTF8 encoded location headers. + # To solve this, we re-encode the location in latin1. + if is_py3: + location = location.encode('latin1') + return to_native_string(location, 'utf8') + return None + def resolve_redirects(self, resp, req, stream=False, timeout=None, - verify=True, cert=None, proxies=None, **adapter_kwargs): - """Receives a Response. Returns a generator of Responses.""" + verify=True, cert=None, proxies=None, yield_requests=False, **adapter_kwargs): + """Receives a Response. Returns a generator of Responses or Requests.""" - i = 0 - hist = [] # keep track of history + hist = [] # keep track of history - while resp.is_redirect: + url = self.get_redirect_target(resp) + while url: prepared_request = req.copy() - if i > 0: - # Update history and keep track of redirects. - hist.append(resp) - new_hist = list(hist) - resp.history = new_hist + # Update history and keep track of redirects. + # resp.history must ignore the original request in this loop + hist.append(resp) + resp.history = hist[1:] try: resp.content # Consume socket so it can be released except (ChunkedEncodingError, ContentDecodingError, RuntimeError): resp.raw.read(decode_content=False) - if i >= self.max_redirects: + if len(resp.history) >= self.max_redirects: raise TooManyRedirects('Exceeded %s redirects.' % self.max_redirects, response=resp) # Release the connection back into the pool. resp.close() - url = resp.headers['location'] - # Handle redirection without scheme (see: RFC 1808 Section 4) if url.startswith('//'): parsed_rurl = urlparse(resp.url) - url = '%s:%s' % (parsed_rurl.scheme, url) + url = '%s:%s' % (to_native_string(parsed_rurl.scheme), url) # The scheme should be lower case... parsed = urlparse(url) @@ -132,15 +160,12 @@ class SessionRedirectMixin(object): url = requote_uri(url) prepared_request.url = to_native_string(url) - # Cache the url, unless it redirects to itself. - if resp.is_permanent_redirect and req.url != prepared_request.url: - self.redirect_cache[req.url] = prepared_request.url self.rebuild_method(prepared_request, resp) - # https://github.com/kennethreitz/requests/issues/1084 + # https://github.com/requests/requests/issues/1084 if resp.status_code not in (codes.temporary_redirect, codes.permanent_redirect): - # https://github.com/kennethreitz/requests/issues/3490 + # https://github.com/requests/requests/issues/3490 purged_headers = ('Content-Length', 'Content-Type', 'Transfer-Encoding') for header in purged_headers: prepared_request.headers.pop(header, None) @@ -156,31 +181,48 @@ class SessionRedirectMixin(object): # in the new request. Because we've mutated our copied prepared # request, use the old one that we haven't yet touched. extract_cookies_to_jar(prepared_request._cookies, req, resp.raw) - prepared_request._cookies.update(self.cookies) + merge_cookies(prepared_request._cookies, self.cookies) prepared_request.prepare_cookies(prepared_request._cookies) # Rebuild auth and proxy information. proxies = self.rebuild_proxies(prepared_request, proxies) self.rebuild_auth(prepared_request, resp) + # A failed tell() sets `_body_position` to `object()`. This non-None + # value ensures `rewindable` will be True, allowing us to raise an + # UnrewindableBodyError, instead of hanging the connection. + rewindable = ( + prepared_request._body_position is not None and + ('Content-Length' in headers or 'Transfer-Encoding' in headers) + ) + + # Attempt to rewind consumed file-like object. + if rewindable: + rewind_body(prepared_request) + # Override the original request. req = prepared_request - resp = self.send( - req, - stream=stream, - timeout=timeout, - verify=verify, - cert=cert, - proxies=proxies, - allow_redirects=False, - **adapter_kwargs - ) + if yield_requests: + yield req + else: - extract_cookies_to_jar(self.cookies, prepared_request, resp.raw) + resp = self.send( + req, + stream=stream, + timeout=timeout, + verify=verify, + cert=cert, + proxies=proxies, + allow_redirects=False, + **adapter_kwargs + ) - i += 1 - yield resp + extract_cookies_to_jar(self.cookies, prepared_request, resp.raw) + + # extract redirect url, if any, for the next loop + url = self.get_redirect_target(resp) + yield resp def rebuild_auth(self, prepared_request, response): """When being redirected we may want to strip authentication from the @@ -218,15 +260,18 @@ class SessionRedirectMixin(object): :rtype: dict """ + proxies = proxies if proxies is not None else {} headers = prepared_request.headers url = prepared_request.url scheme = urlparse(url).scheme - new_proxies = proxies.copy() if proxies is not None else {} + new_proxies = proxies.copy() + no_proxy = proxies.get('no_proxy') - if self.trust_env and not should_bypass_proxies(url): - environ_proxies = get_environ_proxies(url) + bypass_proxy = should_bypass_proxies(url, no_proxy=no_proxy) + if self.trust_env and not bypass_proxy: + environ_proxies = get_environ_proxies(url, no_proxy=no_proxy) - proxy = environ_proxies.get('all', environ_proxies.get(scheme)) + proxy = environ_proxies.get(scheme, environ_proxies.get('all')) if proxy: new_proxies.setdefault(scheme, proxy) @@ -322,7 +367,8 @@ class Session(SessionRedirectMixin): #: SSL Verification default. self.verify = True - #: SSL certificate default. + #: SSL client certificate default, if String, path to ssl client + #: cert file (.pem). If Tuple, ('cert', 'key') pair. self.cert = None #: Maximum number of redirects allowed. If the request exceeds this @@ -346,9 +392,6 @@ class Session(SessionRedirectMixin): self.mount('https://', HTTPAdapter()) self.mount('http://', HTTPAdapter()) - # Only store 1000 redirects to prevent using infinite memory - self.redirect_cache = RecentlyUsedContainer(REDIRECT_CACHE_SIZE) - def __enter__(self): return self @@ -396,20 +439,9 @@ class Session(SessionRedirectMixin): return p def request(self, method, url, - params=None, - data=None, - headers=None, - cookies=None, - files=None, - auth=None, - timeout=None, - allow_redirects=True, - proxies=None, - hooks=None, - stream=None, - verify=None, - cert=None, - json=None): + params=None, data=None, headers=None, cookies=None, files=None, + auth=None, timeout=None, allow_redirects=True, proxies=None, + hooks=None, stream=None, verify=None, cert=None, json=None): """Constructs a :class:`Request `, prepares it and sends it. Returns :class:`Response ` object. @@ -439,24 +471,25 @@ class Session(SessionRedirectMixin): hostname to the URL of the proxy. :param stream: (optional) whether to immediately download the response content. Defaults to ``False``. - :param verify: (optional) whether the SSL cert will be verified. - A CA_BUNDLE path can also be provided. Defaults to ``True``. + :param verify: (optional) Either a boolean, in which case it controls whether we verify + the server's TLS certificate, or a string, in which case it must be a path + to a CA bundle to use. Defaults to ``True``. :param cert: (optional) if String, path to ssl client cert file (.pem). If Tuple, ('cert', 'key') pair. :rtype: requests.Response """ # Create the Request. req = Request( - method = method.upper(), - url = url, - headers = headers, - files = files, - data = data or {}, - json = json, - params = params or {}, - auth = auth, - cookies = cookies, - hooks = hooks, + method=method.upper(), + url=url, + headers=headers, + files=files, + data=data or {}, + json=json, + params=params or {}, + auth=auth, + cookies=cookies, + hooks=hooks, ) prep = self.prepare_request(req) @@ -477,7 +510,7 @@ class Session(SessionRedirectMixin): return resp def get(self, url, **kwargs): - """Sends a GET request. Returns :class:`Response` object. + r"""Sends a GET request. Returns :class:`Response` object. :param url: URL for the new :class:`Request` object. :param \*\*kwargs: Optional arguments that ``request`` takes. @@ -488,7 +521,7 @@ class Session(SessionRedirectMixin): return self.request('GET', url, **kwargs) def options(self, url, **kwargs): - """Sends a OPTIONS request. Returns :class:`Response` object. + r"""Sends a OPTIONS request. Returns :class:`Response` object. :param url: URL for the new :class:`Request` object. :param \*\*kwargs: Optional arguments that ``request`` takes. @@ -499,7 +532,7 @@ class Session(SessionRedirectMixin): return self.request('OPTIONS', url, **kwargs) def head(self, url, **kwargs): - """Sends a HEAD request. Returns :class:`Response` object. + r"""Sends a HEAD request. Returns :class:`Response` object. :param url: URL for the new :class:`Request` object. :param \*\*kwargs: Optional arguments that ``request`` takes. @@ -510,7 +543,7 @@ class Session(SessionRedirectMixin): return self.request('HEAD', url, **kwargs) def post(self, url, data=None, json=None, **kwargs): - """Sends a POST request. Returns :class:`Response` object. + r"""Sends a POST request. Returns :class:`Response` object. :param url: URL for the new :class:`Request` object. :param data: (optional) Dictionary, bytes, or file-like object to send in the body of the :class:`Request`. @@ -522,7 +555,7 @@ class Session(SessionRedirectMixin): return self.request('POST', url, data=data, json=json, **kwargs) def put(self, url, data=None, **kwargs): - """Sends a PUT request. Returns :class:`Response` object. + r"""Sends a PUT request. Returns :class:`Response` object. :param url: URL for the new :class:`Request` object. :param data: (optional) Dictionary, bytes, or file-like object to send in the body of the :class:`Request`. @@ -533,7 +566,7 @@ class Session(SessionRedirectMixin): return self.request('PUT', url, data=data, **kwargs) def patch(self, url, data=None, **kwargs): - """Sends a PATCH request. Returns :class:`Response` object. + r"""Sends a PATCH request. Returns :class:`Response` object. :param url: URL for the new :class:`Request` object. :param data: (optional) Dictionary, bytes, or file-like object to send in the body of the :class:`Request`. @@ -541,10 +574,10 @@ class Session(SessionRedirectMixin): :rtype: requests.Response """ - return self.request('PATCH', url, data=data, **kwargs) + return self.request('PATCH', url, data=data, **kwargs) def delete(self, url, **kwargs): - """Sends a DELETE request. Returns :class:`Response` object. + r"""Sends a DELETE request. Returns :class:`Response` object. :param url: URL for the new :class:`Request` object. :param \*\*kwargs: Optional arguments that ``request`` takes. @@ -554,8 +587,7 @@ class Session(SessionRedirectMixin): return self.request('DELETE', url, **kwargs) def send(self, request, **kwargs): - """ - Send a given PreparedRequest. + """Send a given PreparedRequest. :rtype: requests.Response """ @@ -576,27 +608,18 @@ class Session(SessionRedirectMixin): stream = kwargs.get('stream') hooks = request.hooks - # Resolve URL in redirect cache, if available. - if allow_redirects: - checked_urls = set() - while request.url in self.redirect_cache: - checked_urls.add(request.url) - new_url = self.redirect_cache.get(request.url) - if new_url in checked_urls: - break - request.url = new_url - # Get the appropriate adapter to use adapter = self.get_adapter(url=request.url) # Start time (approximately) of the request - start = datetime.utcnow() + start = preferred_clock() # Send the request r = adapter.send(request, **kwargs) # Total elapsed time of the request (approximately) - r.elapsed = datetime.utcnow() - start + elapsed = preferred_clock() - start + r.elapsed = timedelta(seconds=elapsed) # Response manipulation hooks r = dispatch_hook('response', hooks, r, **kwargs) @@ -624,6 +647,13 @@ class Session(SessionRedirectMixin): r = history.pop() r.history = history + # If redirects aren't being followed, store the response on the Request for Response.next(). + if not allow_redirects: + try: + r._next = next(self.resolve_redirects(r, request, yield_requests=True, **kwargs)) + except StopIteration: + pass + if not stream: r.content @@ -638,7 +668,8 @@ class Session(SessionRedirectMixin): # Gather clues from the surrounding environment. if self.trust_env: # Set environment's proxies. - env_proxies = get_environ_proxies(url) or {} + no_proxy = proxies.get('no_proxy') if proxies is not None else None + env_proxies = get_environ_proxies(url, no_proxy=no_proxy) for (k, v) in env_proxies.items(): proxies.setdefault(k, v) @@ -679,7 +710,7 @@ class Session(SessionRedirectMixin): def mount(self, prefix, adapter): """Registers a connection adapter to a prefix. - Adapters are sorted in descending order by key length. + Adapters are sorted in descending order by prefix length. """ self.adapters[prefix] = adapter keys_to_move = [k for k in self.adapters if len(k) < len(prefix)] @@ -689,18 +720,12 @@ class Session(SessionRedirectMixin): def __getstate__(self): state = dict((attr, getattr(self, attr, None)) for attr in self.__attrs__) - state['redirect_cache'] = dict(self.redirect_cache) return state def __setstate__(self, state): - redirect_cache = state.pop('redirect_cache', {}) for attr, value in state.items(): setattr(self, attr, value) - self.redirect_cache = RecentlyUsedContainer(REDIRECT_CACHE_SIZE) - for redirect, to in redirect_cache.items(): - self.redirect_cache[redirect] = to - def session(): """ diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/status_codes.py b/lib/python3.6/site-packages/pip/_vendor/requests/status_codes.py index db2986b..dee8919 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/status_codes.py +++ b/lib/python3.6/site-packages/pip/_vendor/requests/status_codes.py @@ -87,5 +87,5 @@ codes = LookupDict(name='status_codes') for code, titles in _codes.items(): for title in titles: setattr(codes, title, code) - if not title.startswith('\\'): + if not title.startswith(('\\', '/')): setattr(codes, title.upper(), code) diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/utils.py b/lib/python3.6/site-packages/pip/_vendor/requests/utils.py index 30a03ca..5c47de9 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/utils.py +++ b/lib/python3.6/site-packages/pip/_vendor/requests/utils.py @@ -11,30 +11,82 @@ that are also useful for external consumption. import cgi import codecs import collections +import contextlib import io import os +import platform import re import socket import struct import warnings -from . import __version__ +from .__version__ import __version__ from . import certs +# to_native_string is unused here, but imported here for backwards compatibility +from ._internal_utils import to_native_string from .compat import parse_http_list as _parse_list_header -from .compat import (quote, urlparse, bytes, str, OrderedDict, unquote, is_py2, - builtin_str, getproxies, proxy_bypass, urlunparse, - basestring) -from .cookies import RequestsCookieJar, cookiejar_from_dict +from .compat import ( + quote, urlparse, bytes, str, OrderedDict, unquote, getproxies, + proxy_bypass, urlunparse, basestring, integer_types, is_py3, + proxy_bypass_environment, getproxies_environment) +from .cookies import cookiejar_from_dict from .structures import CaseInsensitiveDict -from .exceptions import InvalidURL, InvalidHeader, FileModeWarning - -_hush_pyflakes = (RequestsCookieJar,) +from .exceptions import ( + InvalidURL, InvalidHeader, FileModeWarning, UnrewindableBodyError) NETRC_FILES = ('.netrc', '_netrc') DEFAULT_CA_BUNDLE_PATH = certs.where() +if platform.system() == 'Windows': + # provide a proxy_bypass version on Windows without DNS lookups + + def proxy_bypass_registry(host): + if is_py3: + import winreg + else: + import _winreg as winreg + try: + internetSettings = winreg.OpenKey(winreg.HKEY_CURRENT_USER, + r'Software\Microsoft\Windows\CurrentVersion\Internet Settings') + proxyEnable = winreg.QueryValueEx(internetSettings, + 'ProxyEnable')[0] + proxyOverride = winreg.QueryValueEx(internetSettings, + 'ProxyOverride')[0] + except OSError: + return False + if not proxyEnable or not proxyOverride: + return False + + # make a check value list from the registry entry: replace the + # '' string by the localhost entry and the corresponding + # canonical entry. + proxyOverride = proxyOverride.split(';') + # now check if we match one of the registry values. + for test in proxyOverride: + if test == '': + if '.' not in host: + return True + test = test.replace(".", r"\.") # mask dots + test = test.replace("*", r".*") # change glob sequence + test = test.replace("?", r".") # change glob char + if re.match(test, host, re.I): + return True + return False + + def proxy_bypass(host): # noqa + """Return True, if the host should be bypassed. + + Checks proxy settings gathered from the environment, if specified, + or the registry. + """ + if getproxies_environment(): + return proxy_bypass_environment(host) + else: + return proxy_bypass_registry(host) + + def dict_to_sequence(d): """Returns an internal sequence dictionary update.""" @@ -45,7 +97,7 @@ def dict_to_sequence(d): def super_len(o): - total_length = 0 + total_length = None current_position = 0 if hasattr(o, '__len__'): @@ -54,10 +106,6 @@ def super_len(o): elif hasattr(o, 'len'): total_length = o.len - elif hasattr(o, 'getvalue'): - # e.g. BytesIO, cStringIO.StringIO - total_length = len(o.getvalue()) - elif hasattr(o, 'fileno'): try: fileno = o.fileno() @@ -87,7 +135,24 @@ def super_len(o): # is actually a special file descriptor like stdin. In this # instance, we don't know what the length is, so set it to zero and # let requests chunk it instead. - current_position = total_length + if total_length is not None: + current_position = total_length + else: + if hasattr(o, 'seek') and total_length is None: + # StringIO and BytesIO have seek but no useable fileno + try: + # seek to end of file + o.seek(0, 2) + total_length = o.tell() + + # seek back to current position to support + # partially read file-like objects + o.seek(current_position or 0) + except (OSError, IOError): + total_length = 0 + + if total_length is None: + total_length = 0 return max(0, total_length - current_position) @@ -106,7 +171,7 @@ def get_netrc_auth(url, raise_errors=False): except KeyError: # os.path.expanduser can fail when $HOME is undefined and # getpwuid fails. See http://bugs.python.org/issue20164 & - # https://github.com/kennethreitz/requests/issues/1846 + # https://github.com/requests/requests/issues/1846 return if os.path.exists(loc): @@ -319,9 +384,7 @@ def add_dict_to_cookiejar(cj, cookie_dict): :rtype: CookieJar """ - cj2 = cookiejar_from_dict(cookie_dict) - cj.update(cj2) - return cj + return cookiejar_from_dict(cookie_dict, cj) def get_encodings_from_content(content): @@ -431,8 +494,7 @@ def get_unicode_from_response(r): # The unreserved URI characters (RFC 3986) UNRESERVED_SET = frozenset( - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" - + "0123456789-._~") + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + "0123456789-._~") def unquote_unreserved(uri): @@ -482,7 +544,7 @@ def requote_uri(uri): def address_in_network(ip, net): - """This function allows you to check if on IP belongs to a network subnet + """This function allows you to check if an IP belongs to a network subnet Example: returns True if ip = 192.168.1.1 and net = 192.168.1.0/24 returns False if ip = 192.168.1.1 and net = 192.168.100.0/24 @@ -542,7 +604,29 @@ def is_valid_cidr(string_network): return True -def should_bypass_proxies(url): +@contextlib.contextmanager +def set_environ(env_name, value): + """Set the environment variable 'env_name' to 'value' + + Save previous value, yield, and then restore the previous value stored in + the environment variable 'env_name'. + + If 'value' is None, do nothing""" + value_changed = value is not None + if value_changed: + old_value = os.environ.get(env_name) + os.environ[env_name] = value + try: + yield + finally: + if value_changed: + if old_value is None: + del os.environ[env_name] + else: + os.environ[env_name] = old_value + + +def should_bypass_proxies(url, no_proxy): """ Returns whether we should bypass proxies or not. @@ -552,7 +636,9 @@ def should_bypass_proxies(url): # First check whether no_proxy is defined. If it is, check that the URL # we're getting isn't in the no_proxy list. - no_proxy = get_proxy('no_proxy') + no_proxy_arg = no_proxy + if no_proxy is None: + no_proxy = get_proxy('no_proxy') netloc = urlparse(url).netloc if no_proxy: @@ -581,14 +667,15 @@ def should_bypass_proxies(url): # If the system proxy settings indicate that this URL should be bypassed, # don't proxy. - # The proxy_bypass function is incredibly buggy on macOS in early versions + # The proxy_bypass function is incredibly buggy on OS X in early versions # of Python 2.6, so allow this call to fail. Only catch the specific # exceptions we've seen, though: this call failing in other ways can reveal # legitimate problems. - try: - bypass = proxy_bypass(netloc) - except (TypeError, socket.gaierror): - bypass = False + with set_environ('no_proxy', no_proxy_arg): + try: + bypass = proxy_bypass(netloc) + except (TypeError, socket.gaierror): + bypass = False if bypass: return True @@ -596,13 +683,13 @@ def should_bypass_proxies(url): return False -def get_environ_proxies(url): +def get_environ_proxies(url, no_proxy=None): """ Return a dict of environment proxies. :rtype: dict """ - if should_bypass_proxies(url): + if should_bypass_proxies(url, no_proxy=no_proxy): return {} else: return getproxies() @@ -617,13 +704,13 @@ def select_proxy(url, proxies): proxies = proxies or {} urlparts = urlparse(url) if urlparts.hostname is None: - return proxies.get('all', proxies.get(urlparts.scheme)) + return proxies.get(urlparts.scheme, proxies.get('all')) proxy_keys = [ - 'all://' + urlparts.hostname, - 'all', urlparts.scheme + '://' + urlparts.hostname, urlparts.scheme, + 'all://' + urlparts.hostname, + 'all', ] proxy = None for proxy_key in proxy_keys: @@ -702,7 +789,7 @@ def guess_json_utf(data): # easy as counting the nulls and from their location and count # determine the encoding. Also detect a BOM, if present. sample = data[:4] - if sample in (codecs.BOM_UTF32_LE, codecs.BOM32_BE): + if sample in (codecs.BOM_UTF32_LE, codecs.BOM_UTF32_BE): return 'utf-32' # BOM included if sample[:3] == codecs.BOM_UTF8: return 'utf-8-sig' # BOM included, MS style (discouraged) @@ -759,26 +846,11 @@ def get_auth_from_url(url): return auth -def to_native_string(string, encoding='ascii'): - """Given a string object, regardless of type, returns a representation of - that string in the native string type, encoding and decoding where - necessary. This assumes ASCII unless told otherwise. - """ - if isinstance(string, builtin_str): - out = string - else: - if is_py2: - out = string.encode(encoding) - else: - out = string.decode(encoding) - - return out - - # Moved outside of function to avoid recompile every call _CLEAN_HEADER_REGEX_BYTE = re.compile(b'^\\S[^\\r\\n]*$|^$') _CLEAN_HEADER_REGEX_STR = re.compile(r'^\S[^\r\n]*$|^$') + def check_header_validity(header): """Verifies that header value is a string which doesn't contain leading whitespace or return characters. This prevents unintended @@ -796,8 +868,8 @@ def check_header_validity(header): if not pat.match(value): raise InvalidHeader("Invalid return character or leading space in header: %s" % name) except TypeError: - raise InvalidHeader("Header value %s must be of type str or bytes, " - "not %s" % (value, type(value))) + raise InvalidHeader("Value for header {%s: %s} must be of type str or " + "bytes, not %s" % (name, value, type(value))) def urldefragauth(url): @@ -815,3 +887,18 @@ def urldefragauth(url): netloc = netloc.rsplit('@', 1)[-1] return urlunparse((scheme, netloc, path, params, query, '')) + + +def rewind_body(prepared_request): + """Move file pointer back to its recorded starting position + so it can be read again on redirect. + """ + body_seek = getattr(prepared_request.body, 'seek', None) + if body_seek is not None and isinstance(prepared_request._body_position, integer_types): + try: + body_seek(prepared_request._body_position) + except (IOError, OSError): + raise UnrewindableBodyError("An error occurred when rewinding request " + "body for redirect.") + else: + raise UnrewindableBodyError("Unable to rewind request body for redirect.") diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__init__.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/__init__.py similarity index 99% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__init__.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/__init__.py index c353674..aaa6b1c 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__init__.py +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/__init__.py @@ -32,7 +32,7 @@ except ImportError: __author__ = 'Andrey Petrov (andrey.petrov@shazow.net)' __license__ = 'MIT' -__version__ = '1.16' +__version__ = '1.22' __all__ = ( 'HTTPConnectionPool', @@ -71,6 +71,7 @@ def add_stderr_logger(level=logging.DEBUG): logger.debug('Added a stderr logging handler to logger: %s', __name__) return handler + # ... Clean up. del NullHandler diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-36.pyc similarity index 84% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/__init__.cpython-36.pyc rename to lib/python3.6/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-36.pyc index 3ff8764a365ac422bfc137f54cd7b30365f7f273..2a1c47f681aecb6a96b20dbd63a15389817d5f2e 100644 GIT binary patch delta 96 zcmZ20JX@I4n3tDpA=mLJ)s38n%o^7ECAkIq1(^l9Nu`-NDY^!Uxmih-#+4u;Fpe)v u%}dEInq0!XpUKE*asa#X<_MP8OpLLcUD#uoc!inRg_wkxxEMK@gqQ)O)f(FX delta 114 zcmbO&yjGagn3tF982j-km5rQ+%vQeoCAkIq1(^l9Nu`-NDY_=cC52h$#l|2ZFpe)v z%}dEI(l1IaEKMygDb_DYOwLYBPc5FD#Jr!$&}_0DyYgl?me)*-F`JFpW0-h_nAnAw MgqXM(Ihcf)0Yr2mmH+?% diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/_collections.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-36.pyc similarity index 75% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/_collections.cpython-36.pyc rename to lib/python3.6/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-36.pyc index 2c53a4c2edb412d49dd1827d704d9a9978f4bf1d..36bcc411449f9851da0af112d0eda20b0b2b9cd2 100644 GIT binary patch delta 605 zcmX9&O=}ZD7@l`_V$y9BVy!l5(`2*x*u=Ir*dD|WLD}T%L1LZ!yeHa3Yd-Q6gK zEg~t37ePi54=Ub7@F2mvUMzUhiwD7*D1ujye!L0J@c;dX_l7tB`Mvn&j9T{l)pwrV z>e0e0^#RN*mYge{QfH$xb*a12VpE68&SqoUE{oDYtJlmnyK0pzbF*vOj$P{1)|$1t zY4>;GsR}=N-S_Z3n_!6@QVpBoY6KNUjk6@vuohz}mPU`W49lWVupHCT6U<}JX3g7u$^5hZ~U0f1s4{8o&&m*>i_?SovJrX6`bcwXb zWa7}KYUx14u9FH`CK#Ol4^BncI#e(!|CGFyQ>-`+vW^QZ2#8>x6{p*2nFY!6h*FB* z(6kVKme_-!5``cHV2G-q^4Hp3byTzlDf!3X7_X%+!wP?&IsqZ>OW%V8f0F(Knf~L9 z1W@G9vRkm9$8x{+UKG=7h#!A(S!-O=Z7B2m`Z37z5BhbSa>|(WSr^2;BLb`Zj-f%5 dzc3EM4F6*2!(s2ZHz0!yJdl3`E&e=z?jPx5m)HOR diff --git a/lib/python3.6/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b7aa1515727ba9cb9c9ac2522b594f7ba897016d GIT binary patch literal 8792 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 delta 6202 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 diff --git a/lib/python3.6/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3e94d0408e5bd6822c450c6ecab487e7b8bead44 GIT binary patch literal 10350 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 literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/fields.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-36.pyc similarity index 90% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/fields.cpython-36.pyc rename to lib/python3.6/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-36.pyc index e6416ffc9c7c4d97324e822a39e089a5e5b31a36..bac3abead03a688ad4c3099e22222542fc4a3fa7 100644 GIT binary patch delta 144 zcmX@5yH}Ufn3tDpA=mLJ^NpOWOd6K@CAkIq1(^l9Nu`-NDY^!Uxmih-#+4u;Fpe)v z%}dEI+U&s;!owIac`l!vxmFFc3q!0@3{x#jEo%*H3S%~BkwOhq7IO_l7E29F4Qn$~ qGb1BIp+Y!A3R4zq4UiYipvk=X9bX6|qu*pFfnG+A%@+iIu>t@tE-5?! delta 145 zcmdn1drFtnn3tF982j-k?TwtQOjh3dCAkIq1(^l9Nu`-NDY_=cC52h$#l|2ZFpe)v z%}dEI(l1IaEKMygDb_DYOwLYBPc7bT#uUQC=rg&SPmW)$hS`N7RxXCAmZg@phIR5D sK1puIEY=#PX2xI!O{UEc_(B*bn+o)@u`r4;RY^^b=9Ap~P~Z+L03>KE4*&oF diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/filepost.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-36.pyc similarity index 82% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/filepost.cpython-36.pyc rename to lib/python3.6/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-36.pyc index 996796e6c5e507d390230599e4ac0997e1ea2177..5c9fae4680753316851d7c22cf9e97dee8585edc 100644 GIT binary patch delta 84 zcmX>rvPXo|n3tDpA=mLJ!Ht|sjQoCF3P9jrTBMMgo0M2I*^)6*!&<*2w?Mxjvp_eg hG&3hf*B~)BE2+}B5+nr1@nxxbDfva4&oDM}000uZ8vg(Q delta 101 zcmdlZa#n=Xn3tF982j-kfsLF>jC{Ua3P9jrTBMMgo0K@&iZRm4SHC2;K))cfKsTv0 yGbcsY#JHp|%e>eaBm~CsWvO{7`9=CgsfDGf#U;i11&PVoiRr1un|CudasU7qZy|jE diff --git a/lib/python3.6/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..483613091a224a97906d788545b57b131f9fa78c GIT binary patch literal 12763 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 D_K&*R literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/request.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-36.pyc similarity index 76% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/request.cpython-36.pyc rename to lib/python3.6/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-36.pyc index e402a39be3abeadc96071b0903eab17832824b5e..b4cf0a8c0036eb8e7bcf45d9967dae1bb9cdc5c2 100644 GIT binary patch delta 311 zcmX@D-L0Kq%*)HQkn4Dql{f>#V+JI^0%SV?aj_kcNMT4}%wfo7jACSDNMTB0&SA=B zj$#J0S#nr%S)*8iY}RzfC^mP76t)!B79cN`y_q?RV`7`!#EnY4nvAzNON(++^OEyZ zQa4^c!lGfNUy@s(Uyxa#n^c;alcH;on46VUX*O$QH%5=mbGh9)*g(!LVx9a-IGHhWvY*HqMy|=yqB2gL zx47ct(@IN9i&Ep`ir?GSwNTO dWG3kqBo-B?POcWUr^hf56Bfzo4ss#8+IrH|ONubIx$@bM3qK(9ksHD>F98B0@jtU#WcF;|K^Rf(Y2i z0RsTt75OIEf`bhV=p4B#BBEknVLO1*p1RVXdx>1(0uf9^TXr%=hPzS^jBFDTnMhBF zWF(q<#D+4wu4q+AauKts+wlk;-mkvBeu~>Cdg%DNZ~66hWZ9&?(Fg}OTR|h0rZ8`* zOFX7CI*4cx2D;zs^jkd|#4pk^tc^aT8327WmPHJkqe<=z0LPX5AsmlrzL}LJ{vN~e z`&P^*^R=8QPX4sPbDh9*|ys2ev1W^ r;Z({WIljlj1I9d-$bWv4?OHbVy&#PD7j{bpo>M`9A{3w`s946oLo8sv diff --git a/lib/python3.6/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dd8188bf1d89d50f1f917400c2dcc01623bbcf45 GIT binary patch literal 16184 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 EH~CHLqyPW_ literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/_collections.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/_collections.py similarity index 93% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/_collections.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/_collections.py index 77cee01..5df2372 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/_collections.py +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/_collections.py @@ -144,7 +144,7 @@ class HTTPHeaderDict(MutableMapping): self.extend(kwargs) def __setitem__(self, key, val): - self._container[key.lower()] = (key, val) + self._container[key.lower()] = [key, val] return self._container[key.lower()] def __getitem__(self, key): @@ -215,18 +215,11 @@ class HTTPHeaderDict(MutableMapping): 'bar, baz' """ key_lower = key.lower() - new_vals = key, val + new_vals = [key, val] # Keep the common case aka no item present as fast as possible vals = self._container.setdefault(key_lower, new_vals) if new_vals is not vals: - # new_vals was not inserted, as there was a previous one - if isinstance(vals, list): - # If already several items got inserted, we have a list - vals.append(val) - else: - # vals should be a tuple then, i.e. only one item so far - # Need to convert the tuple to list for further extension - self._container[key_lower] = [vals[0], vals[1], val] + vals.append(val) def extend(self, *args, **kwargs): """Generic import function for any type of header-like object. @@ -254,24 +247,26 @@ class HTTPHeaderDict(MutableMapping): for key, value in kwargs.items(): self.add(key, value) - def getlist(self, key): + def getlist(self, key, default=__marker): """Returns a list of all the values for the named field. Returns an empty list if the key doesn't exist.""" try: vals = self._container[key.lower()] except KeyError: - return [] + if default is self.__marker: + return [] + return default else: - if isinstance(vals, tuple): - return [vals[1]] - else: - return vals[1:] + return vals[1:] # Backwards compatibility for httplib getheaders = getlist getallmatchingheaders = getlist iget = getlist + # Backwards compatibility for http.cookiejar + get_all = getlist + def __repr__(self): return "%s(%s)" % (type(self).__name__, dict(self.itermerged())) diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/connection.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/connection.py similarity index 79% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/connection.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/connection.py index 5ce0080..c0d8329 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/connection.py +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/connection.py @@ -7,13 +7,8 @@ import socket from socket import error as SocketError, timeout as SocketTimeout import warnings from .packages import six - -try: # Python 3 - from http.client import HTTPConnection as _HTTPConnection - from http.client import HTTPException # noqa: unused in this module -except ImportError: - from httplib import HTTPConnection as _HTTPConnection - from httplib import HTTPException # noqa: unused in this module +from .packages.six.moves.http_client import HTTPConnection as _HTTPConnection +from .packages.six.moves.http_client import HTTPException # noqa: F401 try: # Compiled with SSL? import ssl @@ -44,8 +39,9 @@ from .packages.ssl_match_hostname import match_hostname, CertificateError from .util.ssl_ import ( resolve_cert_reqs, resolve_ssl_version, - ssl_wrap_socket, assert_fingerprint, + create_urllib3_context, + ssl_wrap_socket ) @@ -60,7 +56,10 @@ port_by_scheme = { 'https': 443, } -RECENT_DATE = datetime.date(2014, 1, 1) +# When updating RECENT_DATE, move it to +# within two years of the current date, and no +# earlier than 6 months ago. +RECENT_DATE = datetime.date(2016, 1, 1) class DummyConnection(object): @@ -174,7 +173,13 @@ class HTTPConnection(_HTTPConnection, object): """ headers = HTTPHeaderDict(headers if headers is not None else {}) skip_accept_encoding = 'accept-encoding' in headers - self.putrequest(method, url, skip_accept_encoding=skip_accept_encoding) + skip_host = 'host' in headers + self.putrequest( + method, + url, + skip_accept_encoding=skip_accept_encoding, + skip_host=skip_host + ) for header, value in headers.items(): self.putheader(header, value) if 'transfer-encoding' not in headers: @@ -203,14 +208,18 @@ class HTTPConnection(_HTTPConnection, object): class HTTPSConnection(HTTPConnection): default_port = port_by_scheme['https'] + ssl_version = None + def __init__(self, host, port=None, key_file=None, cert_file=None, - strict=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, **kw): + strict=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, + ssl_context=None, **kw): HTTPConnection.__init__(self, host, port, strict=strict, timeout=timeout, **kw) self.key_file = key_file self.cert_file = cert_file + self.ssl_context = ssl_context # Required property for Google AppEngine 1.9.0 which otherwise causes # HTTPS requests to go out as HTTP. (See Issue #356) @@ -219,7 +228,19 @@ class HTTPSConnection(HTTPConnection): def connect(self): conn = self._new_conn() self._prepare_conn(conn) - self.sock = ssl.wrap_socket(conn, self.key_file, self.cert_file) + + if self.ssl_context is None: + self.ssl_context = create_urllib3_context( + ssl_version=resolve_ssl_version(None), + cert_reqs=resolve_cert_reqs(None), + ) + + self.sock = ssl_wrap_socket( + sock=conn, + keyfile=self.key_file, + certfile=self.cert_file, + ssl_context=self.ssl_context, + ) class VerifiedHTTPSConnection(HTTPSConnection): @@ -237,9 +258,18 @@ class VerifiedHTTPSConnection(HTTPSConnection): cert_reqs=None, ca_certs=None, assert_hostname=None, assert_fingerprint=None, ca_cert_dir=None): - - if (ca_certs or ca_cert_dir) and cert_reqs is None: - cert_reqs = 'CERT_REQUIRED' + """ + This method should only be called once, before the connection is used. + """ + # If cert_reqs is not provided, we can try to guess. If the user gave + # us a cert database, we assume they want to use it: otherwise, if + # they gave us an SSL Context object we should use whatever is set for + # it. + if cert_reqs is None: + if ca_certs or ca_cert_dir: + cert_reqs = 'CERT_REQUIRED' + elif self.ssl_context is not None: + cert_reqs = self.ssl_context.verify_mode self.key_file = key_file self.cert_file = cert_file @@ -253,9 +283,6 @@ class VerifiedHTTPSConnection(HTTPSConnection): # Add certificate verification conn = self._new_conn() - resolved_cert_reqs = resolve_cert_reqs(self.cert_reqs) - resolved_ssl_version = resolve_ssl_version(self.ssl_version) - hostname = self.host if getattr(self, '_tunnel_host', None): # _tunnel_host was added in Python 2.6.3 @@ -281,18 +308,32 @@ class VerifiedHTTPSConnection(HTTPSConnection): # Wrap socket using verification with the root certs in # trusted_root_certs - self.sock = ssl_wrap_socket(conn, self.key_file, self.cert_file, - cert_reqs=resolved_cert_reqs, - ca_certs=self.ca_certs, - ca_cert_dir=self.ca_cert_dir, - server_hostname=hostname, - ssl_version=resolved_ssl_version) + if self.ssl_context is None: + self.ssl_context = create_urllib3_context( + ssl_version=resolve_ssl_version(self.ssl_version), + cert_reqs=resolve_cert_reqs(self.cert_reqs), + ) + + context = self.ssl_context + context.verify_mode = resolve_cert_reqs(self.cert_reqs) + self.sock = ssl_wrap_socket( + sock=conn, + keyfile=self.key_file, + certfile=self.cert_file, + ca_certs=self.ca_certs, + ca_cert_dir=self.ca_cert_dir, + server_hostname=hostname, + ssl_context=context) if self.assert_fingerprint: assert_fingerprint(self.sock.getpeercert(binary_form=True), self.assert_fingerprint) - elif resolved_cert_reqs != ssl.CERT_NONE \ + elif context.verify_mode != ssl.CERT_NONE \ + and not getattr(context, 'check_hostname', False) \ and self.assert_hostname is not False: + # While urllib3 attempts to always turn off hostname matching from + # the TLS library, this cannot always be done. So we check whether + # the TLS Library still thinks it's matching hostnames. cert = self.sock.getpeercert() if not cert.get('subjectAltName', ()): warnings.warn(( @@ -304,8 +345,10 @@ class VerifiedHTTPSConnection(HTTPSConnection): ) _match_hostname(cert, self.assert_hostname or hostname) - self.is_verified = (resolved_cert_reqs == ssl.CERT_REQUIRED or - self.assert_fingerprint is not None) + self.is_verified = ( + context.verify_mode == ssl.CERT_REQUIRED or + self.assert_fingerprint is not None + ) def _match_hostname(cert, asserted_hostname): diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/connectionpool.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/connectionpool.py similarity index 86% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/connectionpool.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/connectionpool.py index ab634cb..ec9600f 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/connectionpool.py +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/connectionpool.py @@ -7,13 +7,6 @@ import warnings from socket import error as SocketError, timeout as SocketTimeout import socket -try: # Python 3 - from queue import LifoQueue, Empty, Full -except ImportError: - from Queue import LifoQueue, Empty, Full - # Queue is imported for side effects on MS Windows - import Queue as _unused_module_Queue # noqa: unused - from .exceptions import ( ClosedPoolError, @@ -32,6 +25,7 @@ from .exceptions import ( ) from .packages.ssl_match_hostname import CertificateError from .packages import six +from .packages.six.moves import queue from .connection import ( port_by_scheme, DummyConnection, @@ -42,12 +36,17 @@ from .request import RequestMethods from .response import HTTPResponse from .util.connection import is_connection_dropped +from .util.request import set_file_position from .util.response import assert_header_parsing from .util.retry import Retry from .util.timeout import Timeout from .util.url import get_host, Url +if six.PY2: + # Queue is imported for side effects on MS Windows + import Queue as _unused_module_Queue # noqa: F401 + xrange = six.moves.xrange log = logging.getLogger(__name__) @@ -63,19 +62,14 @@ class ConnectionPool(object): """ scheme = None - QueueCls = LifoQueue + QueueCls = queue.LifoQueue def __init__(self, host, port=None): if not host: raise LocationValueError("No host specified.") - # httplib doesn't like it when we include brackets in ipv6 addresses - # Specifically, if we include brackets but also pass the port then - # httplib crazily doubles up the square brackets on the Host header. - # Instead, we need to make sure we never pass ``None`` as the port. - # However, for backward compatibility reasons we can't actually - # *assert* that. - self.host = host.strip('[]') + self.host = _ipv6_host(host).lower() + self._proxy_host = host.lower() self.port = port def __str__(self): @@ -156,7 +150,7 @@ class HTTPConnectionPool(ConnectionPool, RequestMethods): A dictionary with proxy headers, should not be used directly, instead, see :class:`urllib3.connectionpool.ProxyManager`" - :param \**conn_kw: + :param \\**conn_kw: Additional parameters are used to create fresh :class:`urllib3.connection.HTTPConnection`, :class:`urllib3.connection.HTTPSConnection` instances. """ @@ -210,8 +204,8 @@ class HTTPConnectionPool(ConnectionPool, RequestMethods): Return a fresh :class:`HTTPConnection`. """ self.num_connections += 1 - log.info("Starting new HTTP connection (%d): %s", - self.num_connections, self.host) + log.debug("Starting new HTTP connection (%d): %s", + self.num_connections, self.host) conn = self.ConnectionCls(host=self.host, port=self.port, timeout=self.timeout.connect_timeout, @@ -237,7 +231,7 @@ class HTTPConnectionPool(ConnectionPool, RequestMethods): except AttributeError: # self.pool is None raise ClosedPoolError(self, "Pool is closed.") - except Empty: + except queue.Empty: if self.block: raise EmptyPoolError(self, "Pool reached maximum size and no more " @@ -246,7 +240,7 @@ class HTTPConnectionPool(ConnectionPool, RequestMethods): # If this is a persistent connection, check if it got disconnected if conn and is_connection_dropped(conn): - log.info("Resetting dropped connection: %s", self.host) + log.debug("Resetting dropped connection: %s", self.host) conn.close() if getattr(conn, 'auto_open', 1) == 0: # This is a proxied connection that has been mutated by @@ -276,7 +270,7 @@ class HTTPConnectionPool(ConnectionPool, RequestMethods): except AttributeError: # self.pool is None. pass - except Full: + except queue.Full: # This should never happen if self.block == True log.warning( "Connection pool is full, discarding connection: %s", @@ -397,12 +391,13 @@ class HTTPConnectionPool(ConnectionPool, RequestMethods): # AppEngine doesn't have a version attr. http_version = getattr(conn, '_http_vsn_str', 'HTTP/?') - log.debug("\"%s %s %s\" %s %s", method, url, http_version, - httplib_response.status, httplib_response.length) + log.debug("%s://%s:%s \"%s %s %s\" %s %s", self.scheme, self.host, self.port, + method, url, http_version, httplib_response.status, + httplib_response.length) try: assert_header_parsing(httplib_response.msg) - except HeaderParsingError as hpe: # Platform-specific: Python 3 + except (HeaderParsingError, TypeError) as hpe: # Platform-specific: Python 3 log.warning( 'Failed to parse headers (url=%s): %s', self._absolute_url(url), hpe, exc_info=True) @@ -425,7 +420,7 @@ class HTTPConnectionPool(ConnectionPool, RequestMethods): if conn: conn.close() - except Empty: + except queue.Empty: pass # Done. def is_same_host(self, url): @@ -439,6 +434,8 @@ class HTTPConnectionPool(ConnectionPool, RequestMethods): # TODO: Add optional support for socket.gethostbyname checking. scheme, host, port = get_host(url) + host = _ipv6_host(host).lower() + # Use explicit default port for comparison when none is given if self.port and not port: port = port_by_scheme.get(scheme) @@ -450,7 +447,7 @@ class HTTPConnectionPool(ConnectionPool, RequestMethods): def urlopen(self, method, url, body=None, headers=None, retries=None, redirect=True, assert_same_host=True, timeout=_Default, pool_timeout=None, release_conn=None, chunked=False, - **response_kw): + body_pos=None, **response_kw): """ Get a connection from the pool and perform an HTTP request. This is the lowest level call for making a request, so you'll need to specify all @@ -532,7 +529,12 @@ class HTTPConnectionPool(ConnectionPool, RequestMethods): encoding. Otherwise, urllib3 will send the body using the standard content-length form. Defaults to False. - :param \**response_kw: + :param int body_pos: + Position to seek to in file-like body in the event of a retry or + redirect. Typically this won't need to be set because urllib3 will + auto-populate the value when needed. + + :param \\**response_kw: Additional parameters are passed to :meth:`urllib3.response.HTTPResponse.from_httplib` """ @@ -577,6 +579,10 @@ class HTTPConnectionPool(ConnectionPool, RequestMethods): # ensures we do proper cleanup in finally. clean_exit = False + # Rewind body position, if needed. Record current position + # for future rewinds in the event of a redirect/retry. + body_pos = set_file_position(body, body_pos) + try: # Request a connection from the queue. timeout_obj = self._get_timeout(timeout) @@ -600,38 +606,31 @@ class HTTPConnectionPool(ConnectionPool, RequestMethods): # mess. response_conn = conn if not release_conn else None + # Pass method to Response for length checking + response_kw['request_method'] = method + # Import httplib's response into our own wrapper object response = self.ResponseCls.from_httplib(httplib_response, pool=self, connection=response_conn, + retries=retries, **response_kw) # Everything went great! clean_exit = True - except Empty: + except queue.Empty: # Timed out by queue. raise EmptyPoolError(self, "No pool connections are available.") - except (BaseSSLError, CertificateError) as e: - # Close the connection. If a connection is reused on which there - # was a Certificate error, the next request will certainly raise - # another Certificate error. - clean_exit = False - raise SSLError(e) - - except SSLError: - # Treat SSLError separately from BaseSSLError to preserve - # traceback. - clean_exit = False - raise - - except (TimeoutError, HTTPException, SocketError, ProtocolError) as e: + except (TimeoutError, HTTPException, SocketError, ProtocolError, + BaseSSLError, SSLError, CertificateError) as e: # Discard the connection for these exceptions. It will be - # be replaced during the next _get_conn() call. + # replaced during the next _get_conn() call. clean_exit = False - - if isinstance(e, (SocketError, NewConnectionError)) and self.proxy: + if isinstance(e, (BaseSSLError, CertificateError)): + e = SSLError(e) + elif isinstance(e, (SocketError, NewConnectionError)) and self.proxy: e = ProxyError('Cannot connect to proxy.', e) elif isinstance(e, (SocketError, HTTPException)): e = ProtocolError('Connection aborted.', e) @@ -665,7 +664,17 @@ class HTTPConnectionPool(ConnectionPool, RequestMethods): return self.urlopen(method, url, body, headers, retries, redirect, assert_same_host, timeout=timeout, pool_timeout=pool_timeout, - release_conn=release_conn, **response_kw) + release_conn=release_conn, body_pos=body_pos, + **response_kw) + + def drain_and_release_conn(response): + try: + # discard any remaining response body, the connection will be + # released back to the pool once the entire response is read + response.read() + except (TimeoutError, HTTPException, SocketError, ProtocolError, + BaseSSLError, SSLError) as e: + pass # Handle redirect? redirect_location = redirect and response.get_redirect_location() @@ -677,39 +686,50 @@ class HTTPConnectionPool(ConnectionPool, RequestMethods): retries = retries.increment(method, url, response=response, _pool=self) except MaxRetryError: if retries.raise_on_redirect: - # Release the connection for this response, since we're not - # returning it to be released manually. - response.release_conn() + # Drain and release the connection for this response, since + # we're not returning it to be released manually. + drain_and_release_conn(response) raise return response - log.info("Redirecting %s -> %s", url, redirect_location) + # drain and return the connection to the pool before recursing + drain_and_release_conn(response) + + retries.sleep_for_retry(response) + log.debug("Redirecting %s -> %s", url, redirect_location) return self.urlopen( method, redirect_location, body, headers, retries=retries, redirect=redirect, assert_same_host=assert_same_host, timeout=timeout, pool_timeout=pool_timeout, - release_conn=release_conn, **response_kw) + release_conn=release_conn, body_pos=body_pos, + **response_kw) # Check if we should retry the HTTP response. - if retries.is_forced_retry(method, status_code=response.status): + has_retry_after = bool(response.getheader('Retry-After')) + if retries.is_retry(method, response.status, has_retry_after): try: retries = retries.increment(method, url, response=response, _pool=self) except MaxRetryError: if retries.raise_on_status: - # Release the connection for this response, since we're not - # returning it to be released manually. - response.release_conn() + # Drain and release the connection for this response, since + # we're not returning it to be released manually. + drain_and_release_conn(response) raise return response - retries.sleep() - log.info("Forced retry: %s", url) + + # drain and return the connection to the pool before recursing + drain_and_release_conn(response) + + retries.sleep(response) + log.debug("Retry: %s", url) return self.urlopen( method, url, body, headers, retries=retries, redirect=redirect, assert_same_host=assert_same_host, timeout=timeout, pool_timeout=pool_timeout, - release_conn=release_conn, **response_kw) + release_conn=release_conn, + body_pos=body_pos, **response_kw) return response @@ -775,7 +795,6 @@ class HTTPSConnectionPool(HTTPConnectionPool): assert_hostname=self.assert_hostname, assert_fingerprint=self.assert_fingerprint) conn.ssl_version = self.ssl_version - return conn def _prepare_proxy(self, conn): @@ -790,9 +809,9 @@ class HTTPSConnectionPool(HTTPConnectionPool): set_tunnel = conn._set_tunnel if sys.version_info <= (2, 6, 4) and not self.proxy_headers: # Python 2.6.4 and older - set_tunnel(self.host, self.port) + set_tunnel(self._proxy_host, self.port) else: - set_tunnel(self.host, self.port, self.proxy_headers) + set_tunnel(self._proxy_host, self.port, self.proxy_headers) conn.connect() @@ -801,8 +820,8 @@ class HTTPSConnectionPool(HTTPConnectionPool): Return a fresh :class:`httplib.HTTPSConnection`. """ self.num_connections += 1 - log.info("Starting new HTTPS connection (%d): %s", - self.num_connections, self.host) + log.debug("Starting new HTTPS connection (%d): %s", + self.num_connections, self.host) if not self.ConnectionCls or self.ConnectionCls is DummyConnection: raise SSLError("Can't connect to HTTPS URL because the SSL " @@ -834,7 +853,8 @@ class HTTPSConnectionPool(HTTPConnectionPool): warnings.warn(( 'Unverified HTTPS request is being made. ' 'Adding certificate verification is strongly advised. See: ' - 'https://urllib3.readthedocs.io/en/latest/security.html'), + 'https://urllib3.readthedocs.io/en/latest/advanced-usage.html' + '#ssl-warnings'), InsecureRequestWarning) @@ -848,7 +868,7 @@ def connection_from_url(url, **kw): :param url: Absolute URL string that must include the scheme. Port is optional. - :param \**kw: + :param \\**kw: Passes additional parameters to the constructor of the appropriate :class:`.ConnectionPool`. Useful for specifying things like timeout, maxsize, headers, etc. @@ -864,3 +884,22 @@ def connection_from_url(url, **kw): return HTTPSConnectionPool(host, port=port, **kw) else: return HTTPConnectionPool(host, port=port, **kw) + + +def _ipv6_host(host): + """ + Process IPv6 address literals + """ + + # httplib doesn't like it when we include brackets in IPv6 addresses + # Specifically, if we include brackets but also pass the port then + # httplib crazily doubles up the square brackets on the Host header. + # Instead, we need to make sure we never pass ``None`` as the port. + # However, for backward compatibility reasons we can't actually + # *assert* that. See http://bugs.python.org/issue28539 + # + # Also if an IPv6 address literal has a zone identifier, the + # percent sign might be URIencoded, convert it back into ASCII + if host.startswith('[') and host.endswith(']'): + host = host.replace('%25', '%').strip('[]') + return host diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__init__.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/__init__.py similarity index 100% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__init__.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/__init__.py diff --git a/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1aea67fd0b2ff5ebeb8459010ab4cbb6ad84eee5 GIT binary patch literal 150 zcmXr!<>gw)bv%jz2p)q77+?f49Dul(1xTbY1T$zd`mJOr0tq9CU(Wg^xdr+KnFYE@ zrI|S?x(124SxJ?~l^`K7jxS5iOUWF4F6d@&I literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..963d54179f784aee8534aba4ecff81032f9c203b GIT binary patch literal 8764 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 literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__pycache__/ntlmpool.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-36.pyc similarity index 54% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__pycache__/ntlmpool.cpython-36.pyc rename to lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-36.pyc index 80a13e774442bd80e5d8e6f05e7328c9932125d5..b5218ef8bd95542ae3b123ffee6ee31b01c23141 100644 GIT binary patch delta 718 zcmZ8f&1(}u6rb6h&CX`?p=|?ArM)O9|C#5nv1?$OotZs%S!b#hfLiw5Y~R@Jq+#5NgSb7I1cJ41^~2-Av^xb; zA^r)Em{eJhtXox`*PI`dCkA%sUrL{GW4)*ZU;}IbkZeY;;(GRxKE#)@pLBnzXu1SG z=-jHRMz-&qtu?_?z?x>c<4633Kh)b?&we@QTUQ{~R27J#5MWP~kTH*1R5d^^g*+Wg zmYdq1lYwMY)yeAa&6QP1`CC|RX?2|Kxp(mG?5%tE6xL8(0Py5h-ye#8k_@>JzQ4$W z7DLtM_%^*XOncIxGn^jl-okzTo8?vsWk;p zCznW-^xxZv`@`q`5l=Rg;N@m0Pc$2+X{@ISc$6+qbQ{vH0l*Pl40o|!PPaqJCW7Cy QbVO3qKybyVEX1VdA2#8jN&o-= delta 809 zcmZ8eTWi!n6rM@4o5^jrZd+_?1))!|v;nu$2WzQ_TEWZ0R;)n?yUDnXJGpc+tMsX0 z>#HDn^h9gN_w)#kbS0;S46FdEYn z;*(l!Fe5R11FwS6WM*Rd7Dkj%`vm*W0~F~IIYkkn)`{x3BBPI7^W*8Kt@iHTUax;Q zOH&$(I7?kz86zqlWup=0($P}E61mU*7uU-&HXUF~!FrjfyH-aw#b*JW@~gV`@|h=+ z+{@#9Z8(Wpw6@U|hp#t_E>QIf-q1A4xX0xEe=cs%r= zf?Qs=o*!`-;_`G;d#qq{`o8%Y&o9?^0;m920UBkGtl(BD$bH-{zmTV$x;*(J=QX+x zpDUM*4@(Qc)UYV6$_P^WHjwwG*URt5+07+Mx+=FIN{0Yl)|TZobqSvXznM^RkVTa$ z`AQpR(Gg!Sf0?Uumm%fv!F)ry4!qKteDpXSaZLvC21G)?@D{uY)GdG&02szanHP;#WGl&{38UMP WUcihrY%2<$!7bduwzO@PsDA(;D7zN` diff --git a/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d4c652a85ce4d2bbc4bda53aa53972c26e85328f GIT binary patch literal 14084 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 i-)?F0w#N<1j$XXU9)~bN%VD<0)-~F6> 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 E1#(=%!vFvP literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py new file mode 100644 index 0000000..bcf41c0 --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py @@ -0,0 +1,593 @@ +""" +This module uses ctypes to bind a whole bunch of functions and constants from +SecureTransport. The goal here is to provide the low-level API to +SecureTransport. These are essentially the C-level functions and constants, and +they're pretty gross to work with. + +This code is a bastardised version of the code found in Will Bond's oscrypto +library. An enormous debt is owed to him for blazing this trail for us. For +that reason, this code should be considered to be covered both by urllib3's +license and by oscrypto's: + + Copyright (c) 2015-2016 Will Bond + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +""" +from __future__ import absolute_import + +import platform +from ctypes.util import find_library +from ctypes import ( + c_void_p, c_int32, c_char_p, c_size_t, c_byte, c_uint32, c_ulong, c_long, + c_bool +) +from ctypes import CDLL, POINTER, CFUNCTYPE + + +security_path = find_library('Security') +if not security_path: + raise ImportError('The library Security could not be found') + + +core_foundation_path = find_library('CoreFoundation') +if not core_foundation_path: + raise ImportError('The library CoreFoundation could not be found') + + +version = platform.mac_ver()[0] +version_info = tuple(map(int, version.split('.'))) +if version_info < (10, 8): + raise OSError( + 'Only OS X 10.8 and newer are supported, not %s.%s' % ( + version_info[0], version_info[1] + ) + ) + +Security = CDLL(security_path, use_errno=True) +CoreFoundation = CDLL(core_foundation_path, use_errno=True) + +Boolean = c_bool +CFIndex = c_long +CFStringEncoding = c_uint32 +CFData = c_void_p +CFString = c_void_p +CFArray = c_void_p +CFMutableArray = c_void_p +CFDictionary = c_void_p +CFError = c_void_p +CFType = c_void_p +CFTypeID = c_ulong + +CFTypeRef = POINTER(CFType) +CFAllocatorRef = c_void_p + +OSStatus = c_int32 + +CFDataRef = POINTER(CFData) +CFStringRef = POINTER(CFString) +CFArrayRef = POINTER(CFArray) +CFMutableArrayRef = POINTER(CFMutableArray) +CFDictionaryRef = POINTER(CFDictionary) +CFArrayCallBacks = c_void_p +CFDictionaryKeyCallBacks = c_void_p +CFDictionaryValueCallBacks = c_void_p + +SecCertificateRef = POINTER(c_void_p) +SecExternalFormat = c_uint32 +SecExternalItemType = c_uint32 +SecIdentityRef = POINTER(c_void_p) +SecItemImportExportFlags = c_uint32 +SecItemImportExportKeyParameters = c_void_p +SecKeychainRef = POINTER(c_void_p) +SSLProtocol = c_uint32 +SSLCipherSuite = c_uint32 +SSLContextRef = POINTER(c_void_p) +SecTrustRef = POINTER(c_void_p) +SSLConnectionRef = c_uint32 +SecTrustResultType = c_uint32 +SecTrustOptionFlags = c_uint32 +SSLProtocolSide = c_uint32 +SSLConnectionType = c_uint32 +SSLSessionOption = c_uint32 + + +try: + Security.SecItemImport.argtypes = [ + CFDataRef, + CFStringRef, + POINTER(SecExternalFormat), + POINTER(SecExternalItemType), + SecItemImportExportFlags, + POINTER(SecItemImportExportKeyParameters), + SecKeychainRef, + POINTER(CFArrayRef), + ] + Security.SecItemImport.restype = OSStatus + + Security.SecCertificateGetTypeID.argtypes = [] + Security.SecCertificateGetTypeID.restype = CFTypeID + + Security.SecIdentityGetTypeID.argtypes = [] + Security.SecIdentityGetTypeID.restype = CFTypeID + + Security.SecKeyGetTypeID.argtypes = [] + Security.SecKeyGetTypeID.restype = CFTypeID + + Security.SecCertificateCreateWithData.argtypes = [ + CFAllocatorRef, + CFDataRef + ] + Security.SecCertificateCreateWithData.restype = SecCertificateRef + + Security.SecCertificateCopyData.argtypes = [ + SecCertificateRef + ] + Security.SecCertificateCopyData.restype = CFDataRef + + Security.SecCopyErrorMessageString.argtypes = [ + OSStatus, + c_void_p + ] + Security.SecCopyErrorMessageString.restype = CFStringRef + + Security.SecIdentityCreateWithCertificate.argtypes = [ + CFTypeRef, + SecCertificateRef, + POINTER(SecIdentityRef) + ] + Security.SecIdentityCreateWithCertificate.restype = OSStatus + + Security.SecKeychainCreate.argtypes = [ + c_char_p, + c_uint32, + c_void_p, + Boolean, + c_void_p, + POINTER(SecKeychainRef) + ] + Security.SecKeychainCreate.restype = OSStatus + + Security.SecKeychainDelete.argtypes = [ + SecKeychainRef + ] + Security.SecKeychainDelete.restype = OSStatus + + Security.SecPKCS12Import.argtypes = [ + CFDataRef, + CFDictionaryRef, + POINTER(CFArrayRef) + ] + Security.SecPKCS12Import.restype = OSStatus + + SSLReadFunc = CFUNCTYPE(OSStatus, SSLConnectionRef, c_void_p, POINTER(c_size_t)) + SSLWriteFunc = CFUNCTYPE(OSStatus, SSLConnectionRef, POINTER(c_byte), POINTER(c_size_t)) + + Security.SSLSetIOFuncs.argtypes = [ + SSLContextRef, + SSLReadFunc, + SSLWriteFunc + ] + Security.SSLSetIOFuncs.restype = OSStatus + + Security.SSLSetPeerID.argtypes = [ + SSLContextRef, + c_char_p, + c_size_t + ] + Security.SSLSetPeerID.restype = OSStatus + + Security.SSLSetCertificate.argtypes = [ + SSLContextRef, + CFArrayRef + ] + Security.SSLSetCertificate.restype = OSStatus + + Security.SSLSetCertificateAuthorities.argtypes = [ + SSLContextRef, + CFTypeRef, + Boolean + ] + Security.SSLSetCertificateAuthorities.restype = OSStatus + + Security.SSLSetConnection.argtypes = [ + SSLContextRef, + SSLConnectionRef + ] + Security.SSLSetConnection.restype = OSStatus + + Security.SSLSetPeerDomainName.argtypes = [ + SSLContextRef, + c_char_p, + c_size_t + ] + Security.SSLSetPeerDomainName.restype = OSStatus + + Security.SSLHandshake.argtypes = [ + SSLContextRef + ] + Security.SSLHandshake.restype = OSStatus + + Security.SSLRead.argtypes = [ + SSLContextRef, + c_char_p, + c_size_t, + POINTER(c_size_t) + ] + Security.SSLRead.restype = OSStatus + + Security.SSLWrite.argtypes = [ + SSLContextRef, + c_char_p, + c_size_t, + POINTER(c_size_t) + ] + Security.SSLWrite.restype = OSStatus + + Security.SSLClose.argtypes = [ + SSLContextRef + ] + Security.SSLClose.restype = OSStatus + + Security.SSLGetNumberSupportedCiphers.argtypes = [ + SSLContextRef, + POINTER(c_size_t) + ] + Security.SSLGetNumberSupportedCiphers.restype = OSStatus + + Security.SSLGetSupportedCiphers.argtypes = [ + SSLContextRef, + POINTER(SSLCipherSuite), + POINTER(c_size_t) + ] + Security.SSLGetSupportedCiphers.restype = OSStatus + + Security.SSLSetEnabledCiphers.argtypes = [ + SSLContextRef, + POINTER(SSLCipherSuite), + c_size_t + ] + Security.SSLSetEnabledCiphers.restype = OSStatus + + Security.SSLGetNumberEnabledCiphers.argtype = [ + SSLContextRef, + POINTER(c_size_t) + ] + Security.SSLGetNumberEnabledCiphers.restype = OSStatus + + Security.SSLGetEnabledCiphers.argtypes = [ + SSLContextRef, + POINTER(SSLCipherSuite), + POINTER(c_size_t) + ] + Security.SSLGetEnabledCiphers.restype = OSStatus + + Security.SSLGetNegotiatedCipher.argtypes = [ + SSLContextRef, + POINTER(SSLCipherSuite) + ] + Security.SSLGetNegotiatedCipher.restype = OSStatus + + Security.SSLGetNegotiatedProtocolVersion.argtypes = [ + SSLContextRef, + POINTER(SSLProtocol) + ] + Security.SSLGetNegotiatedProtocolVersion.restype = OSStatus + + Security.SSLCopyPeerTrust.argtypes = [ + SSLContextRef, + POINTER(SecTrustRef) + ] + Security.SSLCopyPeerTrust.restype = OSStatus + + Security.SecTrustSetAnchorCertificates.argtypes = [ + SecTrustRef, + CFArrayRef + ] + Security.SecTrustSetAnchorCertificates.restype = OSStatus + + Security.SecTrustSetAnchorCertificatesOnly.argstypes = [ + SecTrustRef, + Boolean + ] + Security.SecTrustSetAnchorCertificatesOnly.restype = OSStatus + + Security.SecTrustEvaluate.argtypes = [ + SecTrustRef, + POINTER(SecTrustResultType) + ] + Security.SecTrustEvaluate.restype = OSStatus + + Security.SecTrustGetCertificateCount.argtypes = [ + SecTrustRef + ] + Security.SecTrustGetCertificateCount.restype = CFIndex + + Security.SecTrustGetCertificateAtIndex.argtypes = [ + SecTrustRef, + CFIndex + ] + Security.SecTrustGetCertificateAtIndex.restype = SecCertificateRef + + Security.SSLCreateContext.argtypes = [ + CFAllocatorRef, + SSLProtocolSide, + SSLConnectionType + ] + Security.SSLCreateContext.restype = SSLContextRef + + Security.SSLSetSessionOption.argtypes = [ + SSLContextRef, + SSLSessionOption, + Boolean + ] + Security.SSLSetSessionOption.restype = OSStatus + + Security.SSLSetProtocolVersionMin.argtypes = [ + SSLContextRef, + SSLProtocol + ] + Security.SSLSetProtocolVersionMin.restype = OSStatus + + Security.SSLSetProtocolVersionMax.argtypes = [ + SSLContextRef, + SSLProtocol + ] + Security.SSLSetProtocolVersionMax.restype = OSStatus + + Security.SecCopyErrorMessageString.argtypes = [ + OSStatus, + c_void_p + ] + Security.SecCopyErrorMessageString.restype = CFStringRef + + Security.SSLReadFunc = SSLReadFunc + Security.SSLWriteFunc = SSLWriteFunc + Security.SSLContextRef = SSLContextRef + Security.SSLProtocol = SSLProtocol + Security.SSLCipherSuite = SSLCipherSuite + Security.SecIdentityRef = SecIdentityRef + Security.SecKeychainRef = SecKeychainRef + Security.SecTrustRef = SecTrustRef + Security.SecTrustResultType = SecTrustResultType + Security.SecExternalFormat = SecExternalFormat + Security.OSStatus = OSStatus + + Security.kSecImportExportPassphrase = CFStringRef.in_dll( + Security, 'kSecImportExportPassphrase' + ) + Security.kSecImportItemIdentity = CFStringRef.in_dll( + Security, 'kSecImportItemIdentity' + ) + + # CoreFoundation time! + CoreFoundation.CFRetain.argtypes = [ + CFTypeRef + ] + CoreFoundation.CFRetain.restype = CFTypeRef + + CoreFoundation.CFRelease.argtypes = [ + CFTypeRef + ] + CoreFoundation.CFRelease.restype = None + + CoreFoundation.CFGetTypeID.argtypes = [ + CFTypeRef + ] + CoreFoundation.CFGetTypeID.restype = CFTypeID + + CoreFoundation.CFStringCreateWithCString.argtypes = [ + CFAllocatorRef, + c_char_p, + CFStringEncoding + ] + CoreFoundation.CFStringCreateWithCString.restype = CFStringRef + + CoreFoundation.CFStringGetCStringPtr.argtypes = [ + CFStringRef, + CFStringEncoding + ] + CoreFoundation.CFStringGetCStringPtr.restype = c_char_p + + CoreFoundation.CFStringGetCString.argtypes = [ + CFStringRef, + c_char_p, + CFIndex, + CFStringEncoding + ] + CoreFoundation.CFStringGetCString.restype = c_bool + + CoreFoundation.CFDataCreate.argtypes = [ + CFAllocatorRef, + c_char_p, + CFIndex + ] + CoreFoundation.CFDataCreate.restype = CFDataRef + + CoreFoundation.CFDataGetLength.argtypes = [ + CFDataRef + ] + CoreFoundation.CFDataGetLength.restype = CFIndex + + CoreFoundation.CFDataGetBytePtr.argtypes = [ + CFDataRef + ] + CoreFoundation.CFDataGetBytePtr.restype = c_void_p + + CoreFoundation.CFDictionaryCreate.argtypes = [ + CFAllocatorRef, + POINTER(CFTypeRef), + POINTER(CFTypeRef), + CFIndex, + CFDictionaryKeyCallBacks, + CFDictionaryValueCallBacks + ] + CoreFoundation.CFDictionaryCreate.restype = CFDictionaryRef + + CoreFoundation.CFDictionaryGetValue.argtypes = [ + CFDictionaryRef, + CFTypeRef + ] + CoreFoundation.CFDictionaryGetValue.restype = CFTypeRef + + CoreFoundation.CFArrayCreate.argtypes = [ + CFAllocatorRef, + POINTER(CFTypeRef), + CFIndex, + CFArrayCallBacks, + ] + CoreFoundation.CFArrayCreate.restype = CFArrayRef + + CoreFoundation.CFArrayCreateMutable.argtypes = [ + CFAllocatorRef, + CFIndex, + CFArrayCallBacks + ] + CoreFoundation.CFArrayCreateMutable.restype = CFMutableArrayRef + + CoreFoundation.CFArrayAppendValue.argtypes = [ + CFMutableArrayRef, + c_void_p + ] + CoreFoundation.CFArrayAppendValue.restype = None + + CoreFoundation.CFArrayGetCount.argtypes = [ + CFArrayRef + ] + CoreFoundation.CFArrayGetCount.restype = CFIndex + + CoreFoundation.CFArrayGetValueAtIndex.argtypes = [ + CFArrayRef, + CFIndex + ] + CoreFoundation.CFArrayGetValueAtIndex.restype = c_void_p + + CoreFoundation.kCFAllocatorDefault = CFAllocatorRef.in_dll( + CoreFoundation, 'kCFAllocatorDefault' + ) + CoreFoundation.kCFTypeArrayCallBacks = c_void_p.in_dll(CoreFoundation, 'kCFTypeArrayCallBacks') + CoreFoundation.kCFTypeDictionaryKeyCallBacks = c_void_p.in_dll( + CoreFoundation, 'kCFTypeDictionaryKeyCallBacks' + ) + CoreFoundation.kCFTypeDictionaryValueCallBacks = c_void_p.in_dll( + CoreFoundation, 'kCFTypeDictionaryValueCallBacks' + ) + + CoreFoundation.CFTypeRef = CFTypeRef + CoreFoundation.CFArrayRef = CFArrayRef + CoreFoundation.CFStringRef = CFStringRef + CoreFoundation.CFDictionaryRef = CFDictionaryRef + +except (AttributeError): + raise ImportError('Error initializing ctypes') + + +class CFConst(object): + """ + A class object that acts as essentially a namespace for CoreFoundation + constants. + """ + kCFStringEncodingUTF8 = CFStringEncoding(0x08000100) + + +class SecurityConst(object): + """ + A class object that acts as essentially a namespace for Security constants. + """ + kSSLSessionOptionBreakOnServerAuth = 0 + + kSSLProtocol2 = 1 + kSSLProtocol3 = 2 + kTLSProtocol1 = 4 + kTLSProtocol11 = 7 + kTLSProtocol12 = 8 + + kSSLClientSide = 1 + kSSLStreamType = 0 + + kSecFormatPEMSequence = 10 + + kSecTrustResultInvalid = 0 + kSecTrustResultProceed = 1 + # This gap is present on purpose: this was kSecTrustResultConfirm, which + # is deprecated. + kSecTrustResultDeny = 3 + kSecTrustResultUnspecified = 4 + kSecTrustResultRecoverableTrustFailure = 5 + kSecTrustResultFatalTrustFailure = 6 + kSecTrustResultOtherError = 7 + + errSSLProtocol = -9800 + errSSLWouldBlock = -9803 + errSSLClosedGraceful = -9805 + errSSLClosedNoNotify = -9816 + errSSLClosedAbort = -9806 + + errSSLXCertChainInvalid = -9807 + errSSLCrypto = -9809 + errSSLInternal = -9810 + errSSLCertExpired = -9814 + errSSLCertNotYetValid = -9815 + errSSLUnknownRootCert = -9812 + errSSLNoRootCert = -9813 + errSSLHostNameMismatch = -9843 + errSSLPeerHandshakeFail = -9824 + errSSLPeerUserCancelled = -9839 + errSSLWeakPeerEphemeralDHKey = -9850 + errSSLServerAuthCompleted = -9841 + errSSLRecordOverflow = -9847 + + errSecVerifyFailed = -67808 + errSecNoTrustSettings = -25263 + errSecItemNotFound = -25300 + errSecInvalidTrustSettings = -25262 + + # Cipher suites. We only pick the ones our default cipher string allows. + TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 = 0xC02C + TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 = 0xC030 + TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 = 0xC02B + TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 = 0xC02F + TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 = 0x00A3 + TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 = 0x009F + TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 = 0x00A2 + TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 = 0x009E + TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 = 0xC024 + TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 = 0xC028 + TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA = 0xC00A + TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA = 0xC014 + TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 = 0x006B + TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 = 0x006A + TLS_DHE_RSA_WITH_AES_256_CBC_SHA = 0x0039 + TLS_DHE_DSS_WITH_AES_256_CBC_SHA = 0x0038 + TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 = 0xC023 + TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 = 0xC027 + TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA = 0xC009 + TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA = 0xC013 + TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 = 0x0067 + TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 = 0x0040 + TLS_DHE_RSA_WITH_AES_128_CBC_SHA = 0x0033 + TLS_DHE_DSS_WITH_AES_128_CBC_SHA = 0x0032 + TLS_RSA_WITH_AES_256_GCM_SHA384 = 0x009D + TLS_RSA_WITH_AES_128_GCM_SHA256 = 0x009C + TLS_RSA_WITH_AES_256_CBC_SHA256 = 0x003D + TLS_RSA_WITH_AES_128_CBC_SHA256 = 0x003C + TLS_RSA_WITH_AES_256_CBC_SHA = 0x0035 + TLS_RSA_WITH_AES_128_CBC_SHA = 0x002F + TLS_AES_128_GCM_SHA256 = 0x1301 + TLS_AES_256_GCM_SHA384 = 0x1302 + TLS_CHACHA20_POLY1305_SHA256 = 0x1303 diff --git a/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py new file mode 100644 index 0000000..5e3494b --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py @@ -0,0 +1,343 @@ +""" +Low-level helpers for the SecureTransport bindings. + +These are Python functions that are not directly related to the high-level APIs +but are necessary to get them to work. They include a whole bunch of low-level +CoreFoundation messing about and memory management. The concerns in this module +are almost entirely about trying to avoid memory leaks and providing +appropriate and useful assistance to the higher-level code. +""" +import base64 +import ctypes +import itertools +import re +import os +import ssl +import tempfile + +from .bindings import Security, CoreFoundation, CFConst + + +# This regular expression is used to grab PEM data out of a PEM bundle. +_PEM_CERTS_RE = re.compile( + b"-----BEGIN CERTIFICATE-----\n(.*?)\n-----END CERTIFICATE-----", re.DOTALL +) + + +def _cf_data_from_bytes(bytestring): + """ + Given a bytestring, create a CFData object from it. This CFData object must + be CFReleased by the caller. + """ + return CoreFoundation.CFDataCreate( + CoreFoundation.kCFAllocatorDefault, bytestring, len(bytestring) + ) + + +def _cf_dictionary_from_tuples(tuples): + """ + Given a list of Python tuples, create an associated CFDictionary. + """ + dictionary_size = len(tuples) + + # We need to get the dictionary keys and values out in the same order. + keys = (t[0] for t in tuples) + values = (t[1] for t in tuples) + cf_keys = (CoreFoundation.CFTypeRef * dictionary_size)(*keys) + cf_values = (CoreFoundation.CFTypeRef * dictionary_size)(*values) + + return CoreFoundation.CFDictionaryCreate( + CoreFoundation.kCFAllocatorDefault, + cf_keys, + cf_values, + dictionary_size, + CoreFoundation.kCFTypeDictionaryKeyCallBacks, + CoreFoundation.kCFTypeDictionaryValueCallBacks, + ) + + +def _cf_string_to_unicode(value): + """ + Creates a Unicode string from a CFString object. Used entirely for error + reporting. + + Yes, it annoys me quite a lot that this function is this complex. + """ + value_as_void_p = ctypes.cast(value, ctypes.POINTER(ctypes.c_void_p)) + + string = CoreFoundation.CFStringGetCStringPtr( + value_as_void_p, + CFConst.kCFStringEncodingUTF8 + ) + if string is None: + buffer = ctypes.create_string_buffer(1024) + result = CoreFoundation.CFStringGetCString( + value_as_void_p, + buffer, + 1024, + CFConst.kCFStringEncodingUTF8 + ) + if not result: + raise OSError('Error copying C string from CFStringRef') + string = buffer.value + if string is not None: + string = string.decode('utf-8') + return string + + +def _assert_no_error(error, exception_class=None): + """ + Checks the return code and throws an exception if there is an error to + report + """ + if error == 0: + return + + cf_error_string = Security.SecCopyErrorMessageString(error, None) + output = _cf_string_to_unicode(cf_error_string) + CoreFoundation.CFRelease(cf_error_string) + + if output is None or output == u'': + output = u'OSStatus %s' % error + + if exception_class is None: + exception_class = ssl.SSLError + + raise exception_class(output) + + +def _cert_array_from_pem(pem_bundle): + """ + Given a bundle of certs in PEM format, turns them into a CFArray of certs + that can be used to validate a cert chain. + """ + der_certs = [ + base64.b64decode(match.group(1)) + for match in _PEM_CERTS_RE.finditer(pem_bundle) + ] + if not der_certs: + raise ssl.SSLError("No root certificates specified") + + cert_array = CoreFoundation.CFArrayCreateMutable( + CoreFoundation.kCFAllocatorDefault, + 0, + ctypes.byref(CoreFoundation.kCFTypeArrayCallBacks) + ) + if not cert_array: + raise ssl.SSLError("Unable to allocate memory!") + + try: + for der_bytes in der_certs: + certdata = _cf_data_from_bytes(der_bytes) + if not certdata: + raise ssl.SSLError("Unable to allocate memory!") + cert = Security.SecCertificateCreateWithData( + CoreFoundation.kCFAllocatorDefault, certdata + ) + CoreFoundation.CFRelease(certdata) + if not cert: + raise ssl.SSLError("Unable to build cert object!") + + CoreFoundation.CFArrayAppendValue(cert_array, cert) + CoreFoundation.CFRelease(cert) + except Exception: + # We need to free the array before the exception bubbles further. + # We only want to do that if an error occurs: otherwise, the caller + # should free. + CoreFoundation.CFRelease(cert_array) + + return cert_array + + +def _is_cert(item): + """ + Returns True if a given CFTypeRef is a certificate. + """ + expected = Security.SecCertificateGetTypeID() + return CoreFoundation.CFGetTypeID(item) == expected + + +def _is_identity(item): + """ + Returns True if a given CFTypeRef is an identity. + """ + expected = Security.SecIdentityGetTypeID() + return CoreFoundation.CFGetTypeID(item) == expected + + +def _temporary_keychain(): + """ + This function creates a temporary Mac keychain that we can use to work with + credentials. This keychain uses a one-time password and a temporary file to + store the data. We expect to have one keychain per socket. The returned + SecKeychainRef must be freed by the caller, including calling + SecKeychainDelete. + + Returns a tuple of the SecKeychainRef and the path to the temporary + directory that contains it. + """ + # Unfortunately, SecKeychainCreate requires a path to a keychain. This + # means we cannot use mkstemp to use a generic temporary file. Instead, + # we're going to create a temporary directory and a filename to use there. + # This filename will be 8 random bytes expanded into base64. We also need + # some random bytes to password-protect the keychain we're creating, so we + # ask for 40 random bytes. + random_bytes = os.urandom(40) + filename = base64.b64encode(random_bytes[:8]).decode('utf-8') + password = base64.b64encode(random_bytes[8:]) # Must be valid UTF-8 + tempdirectory = tempfile.mkdtemp() + + keychain_path = os.path.join(tempdirectory, filename).encode('utf-8') + + # We now want to create the keychain itself. + keychain = Security.SecKeychainRef() + status = Security.SecKeychainCreate( + keychain_path, + len(password), + password, + False, + None, + ctypes.byref(keychain) + ) + _assert_no_error(status) + + # Having created the keychain, we want to pass it off to the caller. + return keychain, tempdirectory + + +def _load_items_from_file(keychain, path): + """ + Given a single file, loads all the trust objects from it into arrays and + the keychain. + Returns a tuple of lists: the first list is a list of identities, the + second a list of certs. + """ + certificates = [] + identities = [] + result_array = None + + with open(path, 'rb') as f: + raw_filedata = f.read() + + try: + filedata = CoreFoundation.CFDataCreate( + CoreFoundation.kCFAllocatorDefault, + raw_filedata, + len(raw_filedata) + ) + result_array = CoreFoundation.CFArrayRef() + result = Security.SecItemImport( + filedata, # cert data + None, # Filename, leaving it out for now + None, # What the type of the file is, we don't care + None, # what's in the file, we don't care + 0, # import flags + None, # key params, can include passphrase in the future + keychain, # The keychain to insert into + ctypes.byref(result_array) # Results + ) + _assert_no_error(result) + + # A CFArray is not very useful to us as an intermediary + # representation, so we are going to extract the objects we want + # and then free the array. We don't need to keep hold of keys: the + # keychain already has them! + result_count = CoreFoundation.CFArrayGetCount(result_array) + for index in range(result_count): + item = CoreFoundation.CFArrayGetValueAtIndex( + result_array, index + ) + item = ctypes.cast(item, CoreFoundation.CFTypeRef) + + if _is_cert(item): + CoreFoundation.CFRetain(item) + certificates.append(item) + elif _is_identity(item): + CoreFoundation.CFRetain(item) + identities.append(item) + finally: + if result_array: + CoreFoundation.CFRelease(result_array) + + CoreFoundation.CFRelease(filedata) + + return (identities, certificates) + + +def _load_client_cert_chain(keychain, *paths): + """ + Load certificates and maybe keys from a number of files. Has the end goal + of returning a CFArray containing one SecIdentityRef, and then zero or more + SecCertificateRef objects, suitable for use as a client certificate trust + chain. + """ + # Ok, the strategy. + # + # This relies on knowing that macOS will not give you a SecIdentityRef + # unless you have imported a key into a keychain. This is a somewhat + # artificial limitation of macOS (for example, it doesn't necessarily + # affect iOS), but there is nothing inside Security.framework that lets you + # get a SecIdentityRef without having a key in a keychain. + # + # So the policy here is we take all the files and iterate them in order. + # Each one will use SecItemImport to have one or more objects loaded from + # it. We will also point at a keychain that macOS can use to work with the + # private key. + # + # Once we have all the objects, we'll check what we actually have. If we + # already have a SecIdentityRef in hand, fab: we'll use that. Otherwise, + # we'll take the first certificate (which we assume to be our leaf) and + # ask the keychain to give us a SecIdentityRef with that cert's associated + # key. + # + # We'll then return a CFArray containing the trust chain: one + # SecIdentityRef and then zero-or-more SecCertificateRef objects. The + # responsibility for freeing this CFArray will be with the caller. This + # CFArray must remain alive for the entire connection, so in practice it + # will be stored with a single SSLSocket, along with the reference to the + # keychain. + certificates = [] + identities = [] + + # Filter out bad paths. + paths = (path for path in paths if path) + + try: + for file_path in paths: + new_identities, new_certs = _load_items_from_file( + keychain, file_path + ) + identities.extend(new_identities) + certificates.extend(new_certs) + + # Ok, we have everything. The question is: do we have an identity? If + # not, we want to grab one from the first cert we have. + if not identities: + new_identity = Security.SecIdentityRef() + status = Security.SecIdentityCreateWithCertificate( + keychain, + certificates[0], + ctypes.byref(new_identity) + ) + _assert_no_error(status) + identities.append(new_identity) + + # We now want to release the original certificate, as we no longer + # need it. + CoreFoundation.CFRelease(certificates.pop(0)) + + # We now need to build a new CFArray that holds the trust chain. + trust_chain = CoreFoundation.CFArrayCreateMutable( + CoreFoundation.kCFAllocatorDefault, + 0, + ctypes.byref(CoreFoundation.kCFTypeArrayCallBacks), + ) + for item in itertools.chain(identities, certificates): + # ArrayAppendValue does a CFRetain on the item. That's fine, + # because the finally block will release our other refs to them. + CoreFoundation.CFArrayAppendValue(trust_chain, item) + + return trust_chain + finally: + for obj in itertools.chain(identities, certificates): + CoreFoundation.CFRelease(obj) diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/appengine.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/appengine.py similarity index 64% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/appengine.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/appengine.py index 1579476..814b022 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/appengine.py +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/appengine.py @@ -1,7 +1,48 @@ +""" +This module provides a pool manager that uses Google App Engine's +`URLFetch Service `_. + +Example usage:: + + from urllib3 import PoolManager + from urllib3.contrib.appengine import AppEngineManager, is_appengine_sandbox + + if is_appengine_sandbox(): + # AppEngineManager uses AppEngine's URLFetch API behind the scenes + http = AppEngineManager() + else: + # PoolManager uses a socket-level API behind the scenes + http = PoolManager() + + r = http.request('GET', 'https://google.com/') + +There are `limitations `_ to the URLFetch service and it may not be +the best choice for your application. There are three options for using +urllib3 on Google App Engine: + +1. You can use :class:`AppEngineManager` with URLFetch. URLFetch is + cost-effective in many circumstances as long as your usage is within the + limitations. +2. You can use a normal :class:`~urllib3.PoolManager` by enabling sockets. + Sockets also have `limitations and restrictions + `_ and have a lower free quota than URLFetch. + To use sockets, be sure to specify the following in your ``app.yaml``:: + + env_variables: + GAE_USE_SOCKETS_HTTPLIB : 'true' + +3. If you are using `App Engine Flexible +`_, you can use the standard +:class:`PoolManager` without any configuration or special environment variables. +""" + from __future__ import absolute_import import logging import os import warnings +from ..packages.six.moves.urllib.parse import urljoin from ..exceptions import ( HTTPError, @@ -41,13 +82,12 @@ class AppEngineManager(RequestMethods): This manager uses the URLFetch service directly instead of using the emulated httplib, and is subject to URLFetch limitations as described in - the App Engine documentation here: + the App Engine documentation `here + `_. - https://cloud.google.com/appengine/docs/python/urlfetch - - Notably it will raise an AppEnginePlatformError if: + Notably it will raise an :class:`AppEnginePlatformError` if: * URLFetch is not available. - * If you attempt to use this on GAEv2 (Managed VMs), as full socket + * If you attempt to use this on App Engine Flexible, as full socket support is available. * If a request size is more than 10 megabytes. * If a response size is more than 32 megabtyes. @@ -56,7 +96,8 @@ class AppEngineManager(RequestMethods): Beyond those cases, it will raise normal urllib3 errors. """ - def __init__(self, headers=None, retries=None, validate_certificate=True): + def __init__(self, headers=None, retries=None, validate_certificate=True, + urlfetch_retries=True): if not urlfetch: raise AppEnginePlatformError( "URLFetch is not available in this environment.") @@ -70,11 +111,12 @@ class AppEngineManager(RequestMethods): warnings.warn( "urllib3 is using URLFetch on Google App Engine sandbox instead " "of sockets. To use sockets directly instead of URLFetch see " - "https://urllib3.readthedocs.io/en/latest/contrib.html.", + "https://urllib3.readthedocs.io/en/latest/reference/urllib3.contrib.html.", AppEnginePlatformWarning) RequestMethods.__init__(self, headers) self.validate_certificate = validate_certificate + self.urlfetch_retries = urlfetch_retries self.retries = retries or Retry.DEFAULT @@ -92,16 +134,17 @@ class AppEngineManager(RequestMethods): retries = self._get_retries(retries, redirect) try: + follow_redirects = ( + redirect and + retries.redirect != 0 and + retries.total) response = urlfetch.fetch( url, payload=body, method=method, headers=headers or {}, allow_truncated=False, - follow_redirects=( - redirect and - retries.redirect != 0 and - retries.total), + follow_redirects=self.urlfetch_retries and follow_redirects, deadline=self._get_absolute_timeout(timeout), validate_certificate=self.validate_certificate, ) @@ -133,19 +176,40 @@ class AppEngineManager(RequestMethods): "URLFetch does not support method: %s" % method, e) http_response = self._urlfetch_response_to_http_response( - response, **response_kw) + response, retries=retries, **response_kw) - # Check for redirect response - if (http_response.get_redirect_location() and - retries.raise_on_redirect and redirect): - raise MaxRetryError(self, url, "too many redirects") + # Handle redirect? + redirect_location = redirect and http_response.get_redirect_location() + if redirect_location: + # Check for redirect response + if (self.urlfetch_retries and retries.raise_on_redirect): + raise MaxRetryError(self, url, "too many redirects") + else: + if http_response.status == 303: + method = 'GET' + + try: + retries = retries.increment(method, url, response=http_response, _pool=self) + except MaxRetryError: + if retries.raise_on_redirect: + raise MaxRetryError(self, url, "too many redirects") + return http_response + + retries.sleep_for_retry(http_response) + log.debug("Redirecting %s -> %s", url, redirect_location) + redirect_url = urljoin(url, redirect_location) + return self.urlopen( + method, redirect_url, body, headers, + retries=retries, redirect=redirect, + timeout=timeout, **response_kw) # Check if we should retry the HTTP response. - if retries.is_forced_retry(method, status_code=http_response.status): + has_retry_after = bool(http_response.getheader('Retry-After')) + if retries.is_retry(method, http_response.status, has_retry_after): retries = retries.increment( method, url, response=http_response, _pool=self) - log.info("Forced retry: %s", url) - retries.sleep() + log.debug("Retry: %s", url) + retries.sleep(http_response) return self.urlopen( method, url, body=body, headers=headers, @@ -183,12 +247,13 @@ class AppEngineManager(RequestMethods): def _get_absolute_timeout(self, timeout): if timeout is Timeout.DEFAULT_TIMEOUT: - return 5 # 5s is the default timeout for URLFetch. + return None # Defer to URLFetch's default. if isinstance(timeout, Timeout): - if timeout._read is not timeout._connect: + if timeout._read is not None or timeout._connect is not None: warnings.warn( "URLFetch does not support granular timeout settings, " - "reverting to total timeout.", AppEnginePlatformWarning) + "reverting to total or default URLFetch timeout.", + AppEnginePlatformWarning) return timeout.total return timeout diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/ntlmpool.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py similarity index 96% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/ntlmpool.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py index 11d0b5c..642e99e 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/ntlmpool.py +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py @@ -5,14 +5,11 @@ Issue #10, see: http://code.google.com/p/urllib3/issues/detail?id=10 """ from __future__ import absolute_import -try: - from http.client import HTTPSConnection -except ImportError: - from httplib import HTTPSConnection from logging import getLogger from ntlm import ntlm -from urllib3 import HTTPSConnectionPool +from .. import HTTPSConnectionPool +from ..packages.six.moves.http_client import HTTPSConnection log = getLogger(__name__) diff --git a/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py new file mode 100644 index 0000000..f63b840 --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py @@ -0,0 +1,455 @@ +""" +SSL with SNI_-support for Python 2. Follow these instructions if you would +like to verify SSL certificates in Python 2. Note, the default libraries do +*not* do certificate checking; you need to do additional work to validate +certificates yourself. + +This needs the following packages installed: + +* pyOpenSSL (tested with 16.0.0) +* cryptography (minimum 1.3.4, from pyopenssl) +* idna (minimum 2.0, from cryptography) + +However, pyopenssl depends on cryptography, which depends on idna, so while we +use all three directly here we end up having relatively few packages required. + +You can install them with the following command: + + pip install pyopenssl cryptography idna + +To activate certificate checking, call +:func:`~urllib3.contrib.pyopenssl.inject_into_urllib3` from your Python code +before you begin making HTTP requests. This can be done in a ``sitecustomize`` +module, or at any other time before your application begins using ``urllib3``, +like this:: + + try: + import urllib3.contrib.pyopenssl + urllib3.contrib.pyopenssl.inject_into_urllib3() + except ImportError: + pass + +Now you can use :mod:`urllib3` as you normally would, and it will support SNI +when the required modules are installed. + +Activating this module also has the positive side effect of disabling SSL/TLS +compression in Python 2 (see `CRIME attack`_). + +If you want to configure the default list of supported cipher suites, you can +set the ``urllib3.contrib.pyopenssl.DEFAULT_SSL_CIPHER_LIST`` variable. + +.. _sni: https://en.wikipedia.org/wiki/Server_Name_Indication +.. _crime attack: https://en.wikipedia.org/wiki/CRIME_(security_exploit) +""" +from __future__ import absolute_import + +import OpenSSL.SSL +from cryptography import x509 +from cryptography.hazmat.backends.openssl import backend as openssl_backend +from cryptography.hazmat.backends.openssl.x509 import _Certificate + +from socket import timeout, error as SocketError +from io import BytesIO + +try: # Platform-specific: Python 2 + from socket import _fileobject +except ImportError: # Platform-specific: Python 3 + _fileobject = None + from ..packages.backports.makefile import backport_makefile + +import logging +import ssl +from ..packages import six +import sys + +from .. import util + +__all__ = ['inject_into_urllib3', 'extract_from_urllib3'] + +# SNI always works. +HAS_SNI = True + +# Map from urllib3 to PyOpenSSL compatible parameter-values. +_openssl_versions = { + ssl.PROTOCOL_SSLv23: OpenSSL.SSL.SSLv23_METHOD, + ssl.PROTOCOL_TLSv1: OpenSSL.SSL.TLSv1_METHOD, +} + +if hasattr(ssl, 'PROTOCOL_TLSv1_1') and hasattr(OpenSSL.SSL, 'TLSv1_1_METHOD'): + _openssl_versions[ssl.PROTOCOL_TLSv1_1] = OpenSSL.SSL.TLSv1_1_METHOD + +if hasattr(ssl, 'PROTOCOL_TLSv1_2') and hasattr(OpenSSL.SSL, 'TLSv1_2_METHOD'): + _openssl_versions[ssl.PROTOCOL_TLSv1_2] = OpenSSL.SSL.TLSv1_2_METHOD + +try: + _openssl_versions.update({ssl.PROTOCOL_SSLv3: OpenSSL.SSL.SSLv3_METHOD}) +except AttributeError: + pass + +_stdlib_to_openssl_verify = { + ssl.CERT_NONE: OpenSSL.SSL.VERIFY_NONE, + ssl.CERT_OPTIONAL: OpenSSL.SSL.VERIFY_PEER, + ssl.CERT_REQUIRED: + OpenSSL.SSL.VERIFY_PEER + OpenSSL.SSL.VERIFY_FAIL_IF_NO_PEER_CERT, +} +_openssl_to_stdlib_verify = dict( + (v, k) for k, v in _stdlib_to_openssl_verify.items() +) + +# OpenSSL will only write 16K at a time +SSL_WRITE_BLOCKSIZE = 16384 + +orig_util_HAS_SNI = util.HAS_SNI +orig_util_SSLContext = util.ssl_.SSLContext + + +log = logging.getLogger(__name__) + + +def inject_into_urllib3(): + 'Monkey-patch urllib3 with PyOpenSSL-backed SSL-support.' + + _validate_dependencies_met() + + util.ssl_.SSLContext = PyOpenSSLContext + util.HAS_SNI = HAS_SNI + util.ssl_.HAS_SNI = HAS_SNI + util.IS_PYOPENSSL = True + util.ssl_.IS_PYOPENSSL = True + + +def extract_from_urllib3(): + 'Undo monkey-patching by :func:`inject_into_urllib3`.' + + util.ssl_.SSLContext = orig_util_SSLContext + util.HAS_SNI = orig_util_HAS_SNI + util.ssl_.HAS_SNI = orig_util_HAS_SNI + util.IS_PYOPENSSL = False + util.ssl_.IS_PYOPENSSL = False + + +def _validate_dependencies_met(): + """ + Verifies that PyOpenSSL's package-level dependencies have been met. + Throws `ImportError` if they are not met. + """ + # Method added in `cryptography==1.1`; not available in older versions + from cryptography.x509.extensions import Extensions + if getattr(Extensions, "get_extension_for_class", None) is None: + raise ImportError("'cryptography' module missing required functionality. " + "Try upgrading to v1.3.4 or newer.") + + # pyOpenSSL 0.14 and above use cryptography for OpenSSL bindings. The _x509 + # attribute is only present on those versions. + from OpenSSL.crypto import X509 + x509 = X509() + if getattr(x509, "_x509", None) is None: + raise ImportError("'pyOpenSSL' module missing required functionality. " + "Try upgrading to v0.14 or newer.") + + +def _dnsname_to_stdlib(name): + """ + Converts a dNSName SubjectAlternativeName field to the form used by the + standard library on the given Python version. + + Cryptography produces a dNSName as a unicode string that was idna-decoded + from ASCII bytes. We need to idna-encode that string to get it back, and + then on Python 3 we also need to convert to unicode via UTF-8 (the stdlib + uses PyUnicode_FromStringAndSize on it, which decodes via UTF-8). + """ + def idna_encode(name): + """ + Borrowed wholesale from the Python Cryptography Project. It turns out + that we can't just safely call `idna.encode`: it can explode for + wildcard names. This avoids that problem. + """ + import idna + + for prefix in [u'*.', u'.']: + if name.startswith(prefix): + name = name[len(prefix):] + return prefix.encode('ascii') + idna.encode(name) + return idna.encode(name) + + name = idna_encode(name) + if sys.version_info >= (3, 0): + name = name.decode('utf-8') + return name + + +def get_subj_alt_name(peer_cert): + """ + Given an PyOpenSSL certificate, provides all the subject alternative names. + """ + # Pass the cert to cryptography, which has much better APIs for this. + if hasattr(peer_cert, "to_cryptography"): + cert = peer_cert.to_cryptography() + else: + # This is technically using private APIs, but should work across all + # relevant versions before PyOpenSSL got a proper API for this. + cert = _Certificate(openssl_backend, peer_cert._x509) + + # We want to find the SAN extension. Ask Cryptography to locate it (it's + # faster than looping in Python) + try: + ext = cert.extensions.get_extension_for_class( + x509.SubjectAlternativeName + ).value + except x509.ExtensionNotFound: + # No such extension, return the empty list. + return [] + except (x509.DuplicateExtension, x509.UnsupportedExtension, + x509.UnsupportedGeneralNameType, UnicodeError) as e: + # A problem has been found with the quality of the certificate. Assume + # no SAN field is present. + log.warning( + "A problem was encountered with the certificate that prevented " + "urllib3 from finding the SubjectAlternativeName field. This can " + "affect certificate validation. The error was %s", + e, + ) + return [] + + # We want to return dNSName and iPAddress fields. We need to cast the IPs + # back to strings because the match_hostname function wants them as + # strings. + # Sadly the DNS names need to be idna encoded and then, on Python 3, UTF-8 + # decoded. This is pretty frustrating, but that's what the standard library + # does with certificates, and so we need to attempt to do the same. + names = [ + ('DNS', _dnsname_to_stdlib(name)) + for name in ext.get_values_for_type(x509.DNSName) + ] + names.extend( + ('IP Address', str(name)) + for name in ext.get_values_for_type(x509.IPAddress) + ) + + return names + + +class WrappedSocket(object): + '''API-compatibility wrapper for Python OpenSSL's Connection-class. + + Note: _makefile_refs, _drop() and _reuse() are needed for the garbage + collector of pypy. + ''' + + def __init__(self, connection, socket, suppress_ragged_eofs=True): + self.connection = connection + self.socket = socket + self.suppress_ragged_eofs = suppress_ragged_eofs + self._makefile_refs = 0 + self._closed = False + + def fileno(self): + return self.socket.fileno() + + # Copy-pasted from Python 3.5 source code + def _decref_socketios(self): + if self._makefile_refs > 0: + self._makefile_refs -= 1 + if self._closed: + self.close() + + def recv(self, *args, **kwargs): + try: + data = self.connection.recv(*args, **kwargs) + except OpenSSL.SSL.SysCallError as e: + if self.suppress_ragged_eofs and e.args == (-1, 'Unexpected EOF'): + return b'' + else: + raise SocketError(str(e)) + except OpenSSL.SSL.ZeroReturnError as e: + if self.connection.get_shutdown() == OpenSSL.SSL.RECEIVED_SHUTDOWN: + return b'' + else: + raise + except OpenSSL.SSL.WantReadError: + rd = util.wait_for_read(self.socket, self.socket.gettimeout()) + if not rd: + raise timeout('The read operation timed out') + else: + return self.recv(*args, **kwargs) + else: + return data + + def recv_into(self, *args, **kwargs): + try: + return self.connection.recv_into(*args, **kwargs) + except OpenSSL.SSL.SysCallError as e: + if self.suppress_ragged_eofs and e.args == (-1, 'Unexpected EOF'): + return 0 + else: + raise SocketError(str(e)) + except OpenSSL.SSL.ZeroReturnError as e: + if self.connection.get_shutdown() == OpenSSL.SSL.RECEIVED_SHUTDOWN: + return 0 + else: + raise + except OpenSSL.SSL.WantReadError: + rd = util.wait_for_read(self.socket, self.socket.gettimeout()) + if not rd: + raise timeout('The read operation timed out') + else: + return self.recv_into(*args, **kwargs) + + def settimeout(self, timeout): + return self.socket.settimeout(timeout) + + def _send_until_done(self, data): + while True: + try: + return self.connection.send(data) + except OpenSSL.SSL.WantWriteError: + wr = util.wait_for_write(self.socket, self.socket.gettimeout()) + if not wr: + raise timeout() + continue + except OpenSSL.SSL.SysCallError as e: + raise SocketError(str(e)) + + def sendall(self, data): + total_sent = 0 + while total_sent < len(data): + sent = self._send_until_done(data[total_sent:total_sent + SSL_WRITE_BLOCKSIZE]) + total_sent += sent + + def shutdown(self): + # FIXME rethrow compatible exceptions should we ever use this + self.connection.shutdown() + + def close(self): + if self._makefile_refs < 1: + try: + self._closed = True + return self.connection.close() + except OpenSSL.SSL.Error: + return + else: + self._makefile_refs -= 1 + + def getpeercert(self, binary_form=False): + x509 = self.connection.get_peer_certificate() + + if not x509: + return x509 + + if binary_form: + return OpenSSL.crypto.dump_certificate( + OpenSSL.crypto.FILETYPE_ASN1, + x509) + + return { + 'subject': ( + (('commonName', x509.get_subject().CN),), + ), + 'subjectAltName': get_subj_alt_name(x509) + } + + def _reuse(self): + self._makefile_refs += 1 + + def _drop(self): + if self._makefile_refs < 1: + self.close() + else: + self._makefile_refs -= 1 + + +if _fileobject: # Platform-specific: Python 2 + def makefile(self, mode, bufsize=-1): + self._makefile_refs += 1 + return _fileobject(self, mode, bufsize, close=True) +else: # Platform-specific: Python 3 + makefile = backport_makefile + +WrappedSocket.makefile = makefile + + +class PyOpenSSLContext(object): + """ + I am a wrapper class for the PyOpenSSL ``Context`` object. I am responsible + for translating the interface of the standard library ``SSLContext`` object + to calls into PyOpenSSL. + """ + def __init__(self, protocol): + self.protocol = _openssl_versions[protocol] + self._ctx = OpenSSL.SSL.Context(self.protocol) + self._options = 0 + self.check_hostname = False + + @property + def options(self): + return self._options + + @options.setter + def options(self, value): + self._options = value + self._ctx.set_options(value) + + @property + def verify_mode(self): + return _openssl_to_stdlib_verify[self._ctx.get_verify_mode()] + + @verify_mode.setter + def verify_mode(self, value): + self._ctx.set_verify( + _stdlib_to_openssl_verify[value], + _verify_callback + ) + + def set_default_verify_paths(self): + self._ctx.set_default_verify_paths() + + def set_ciphers(self, ciphers): + if isinstance(ciphers, six.text_type): + ciphers = ciphers.encode('utf-8') + self._ctx.set_cipher_list(ciphers) + + def load_verify_locations(self, cafile=None, capath=None, cadata=None): + if cafile is not None: + cafile = cafile.encode('utf-8') + if capath is not None: + capath = capath.encode('utf-8') + self._ctx.load_verify_locations(cafile, capath) + if cadata is not None: + self._ctx.load_verify_locations(BytesIO(cadata)) + + def load_cert_chain(self, certfile, keyfile=None, password=None): + self._ctx.use_certificate_file(certfile) + if password is not None: + self._ctx.set_passwd_cb(lambda max_length, prompt_twice, userdata: password) + self._ctx.use_privatekey_file(keyfile or certfile) + + def wrap_socket(self, sock, server_side=False, + do_handshake_on_connect=True, suppress_ragged_eofs=True, + server_hostname=None): + cnx = OpenSSL.SSL.Connection(self._ctx, sock) + + if isinstance(server_hostname, six.text_type): # Platform-specific: Python 3 + server_hostname = server_hostname.encode('utf-8') + + if server_hostname is not None: + cnx.set_tlsext_host_name(server_hostname) + + cnx.set_connect_state() + + while True: + try: + cnx.do_handshake() + except OpenSSL.SSL.WantReadError: + rd = util.wait_for_read(sock, sock.gettimeout()) + if not rd: + raise timeout('select timed out') + continue + except OpenSSL.SSL.Error as e: + raise ssl.SSLError('bad handshake: %r' % e) + break + + return WrappedSocket(cnx, sock) + + +def _verify_callback(cnx, x509, err_no, err_depth, return_code): + return err_no == 0 diff --git a/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/securetransport.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/securetransport.py new file mode 100644 index 0000000..2cac70f --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/securetransport.py @@ -0,0 +1,810 @@ +""" +SecureTranport support for urllib3 via ctypes. + +This makes platform-native TLS available to urllib3 users on macOS without the +use of a compiler. This is an important feature because the Python Package +Index is moving to become a TLSv1.2-or-higher server, and the default OpenSSL +that ships with macOS is not capable of doing TLSv1.2. The only way to resolve +this is to give macOS users an alternative solution to the problem, and that +solution is to use SecureTransport. + +We use ctypes here because this solution must not require a compiler. That's +because pip is not allowed to require a compiler either. + +This is not intended to be a seriously long-term solution to this problem. +The hope is that PEP 543 will eventually solve this issue for us, at which +point we can retire this contrib module. But in the short term, we need to +solve the impending tire fire that is Python on Mac without this kind of +contrib module. So...here we are. + +To use this module, simply import and inject it:: + + import urllib3.contrib.securetransport + urllib3.contrib.securetransport.inject_into_urllib3() + +Happy TLSing! +""" +from __future__ import absolute_import + +import contextlib +import ctypes +import errno +import os.path +import shutil +import socket +import ssl +import threading +import weakref + +from .. import util +from ._securetransport.bindings import ( + Security, SecurityConst, CoreFoundation +) +from ._securetransport.low_level import ( + _assert_no_error, _cert_array_from_pem, _temporary_keychain, + _load_client_cert_chain +) + +try: # Platform-specific: Python 2 + from socket import _fileobject +except ImportError: # Platform-specific: Python 3 + _fileobject = None + from ..packages.backports.makefile import backport_makefile + +try: + memoryview(b'') +except NameError: + raise ImportError("SecureTransport only works on Pythons with memoryview") + +__all__ = ['inject_into_urllib3', 'extract_from_urllib3'] + +# SNI always works +HAS_SNI = True + +orig_util_HAS_SNI = util.HAS_SNI +orig_util_SSLContext = util.ssl_.SSLContext + +# This dictionary is used by the read callback to obtain a handle to the +# calling wrapped socket. This is a pretty silly approach, but for now it'll +# do. I feel like I should be able to smuggle a handle to the wrapped socket +# directly in the SSLConnectionRef, but for now this approach will work I +# guess. +# +# We need to lock around this structure for inserts, but we don't do it for +# reads/writes in the callbacks. The reasoning here goes as follows: +# +# 1. It is not possible to call into the callbacks before the dictionary is +# populated, so once in the callback the id must be in the dictionary. +# 2. The callbacks don't mutate the dictionary, they only read from it, and +# so cannot conflict with any of the insertions. +# +# This is good: if we had to lock in the callbacks we'd drastically slow down +# the performance of this code. +_connection_refs = weakref.WeakValueDictionary() +_connection_ref_lock = threading.Lock() + +# Limit writes to 16kB. This is OpenSSL's limit, but we'll cargo-cult it over +# for no better reason than we need *a* limit, and this one is right there. +SSL_WRITE_BLOCKSIZE = 16384 + +# This is our equivalent of util.ssl_.DEFAULT_CIPHERS, but expanded out to +# individual cipher suites. We need to do this becuase this is how +# SecureTransport wants them. +CIPHER_SUITES = [ + SecurityConst.TLS_AES_256_GCM_SHA384, + SecurityConst.TLS_CHACHA20_POLY1305_SHA256, + SecurityConst.TLS_AES_128_GCM_SHA256, + SecurityConst.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, + SecurityConst.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, + SecurityConst.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, + SecurityConst.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, + SecurityConst.TLS_DHE_DSS_WITH_AES_256_GCM_SHA384, + SecurityConst.TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, + SecurityConst.TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, + SecurityConst.TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, + SecurityConst.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, + SecurityConst.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, + SecurityConst.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, + SecurityConst.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, + SecurityConst.TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, + SecurityConst.TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, + SecurityConst.TLS_DHE_RSA_WITH_AES_256_CBC_SHA, + SecurityConst.TLS_DHE_DSS_WITH_AES_256_CBC_SHA, + SecurityConst.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, + SecurityConst.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, + SecurityConst.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, + SecurityConst.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, + SecurityConst.TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, + SecurityConst.TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, + SecurityConst.TLS_DHE_RSA_WITH_AES_128_CBC_SHA, + SecurityConst.TLS_DHE_DSS_WITH_AES_128_CBC_SHA, + SecurityConst.TLS_RSA_WITH_AES_256_GCM_SHA384, + SecurityConst.TLS_RSA_WITH_AES_128_GCM_SHA256, + SecurityConst.TLS_RSA_WITH_AES_256_CBC_SHA256, + SecurityConst.TLS_RSA_WITH_AES_128_CBC_SHA256, + SecurityConst.TLS_RSA_WITH_AES_256_CBC_SHA, + SecurityConst.TLS_RSA_WITH_AES_128_CBC_SHA, +] + +# Basically this is simple: for PROTOCOL_SSLv23 we turn it into a low of +# TLSv1 and a high of TLSv1.2. For everything else, we pin to that version. +_protocol_to_min_max = { + ssl.PROTOCOL_SSLv23: (SecurityConst.kTLSProtocol1, SecurityConst.kTLSProtocol12), +} + +if hasattr(ssl, "PROTOCOL_SSLv2"): + _protocol_to_min_max[ssl.PROTOCOL_SSLv2] = ( + SecurityConst.kSSLProtocol2, SecurityConst.kSSLProtocol2 + ) +if hasattr(ssl, "PROTOCOL_SSLv3"): + _protocol_to_min_max[ssl.PROTOCOL_SSLv3] = ( + SecurityConst.kSSLProtocol3, SecurityConst.kSSLProtocol3 + ) +if hasattr(ssl, "PROTOCOL_TLSv1"): + _protocol_to_min_max[ssl.PROTOCOL_TLSv1] = ( + SecurityConst.kTLSProtocol1, SecurityConst.kTLSProtocol1 + ) +if hasattr(ssl, "PROTOCOL_TLSv1_1"): + _protocol_to_min_max[ssl.PROTOCOL_TLSv1_1] = ( + SecurityConst.kTLSProtocol11, SecurityConst.kTLSProtocol11 + ) +if hasattr(ssl, "PROTOCOL_TLSv1_2"): + _protocol_to_min_max[ssl.PROTOCOL_TLSv1_2] = ( + SecurityConst.kTLSProtocol12, SecurityConst.kTLSProtocol12 + ) +if hasattr(ssl, "PROTOCOL_TLS"): + _protocol_to_min_max[ssl.PROTOCOL_TLS] = _protocol_to_min_max[ssl.PROTOCOL_SSLv23] + + +def inject_into_urllib3(): + """ + Monkey-patch urllib3 with SecureTransport-backed SSL-support. + """ + util.ssl_.SSLContext = SecureTransportContext + util.HAS_SNI = HAS_SNI + util.ssl_.HAS_SNI = HAS_SNI + util.IS_SECURETRANSPORT = True + util.ssl_.IS_SECURETRANSPORT = True + + +def extract_from_urllib3(): + """ + Undo monkey-patching by :func:`inject_into_urllib3`. + """ + util.ssl_.SSLContext = orig_util_SSLContext + util.HAS_SNI = orig_util_HAS_SNI + util.ssl_.HAS_SNI = orig_util_HAS_SNI + util.IS_SECURETRANSPORT = False + util.ssl_.IS_SECURETRANSPORT = False + + +def _read_callback(connection_id, data_buffer, data_length_pointer): + """ + SecureTransport read callback. This is called by ST to request that data + be returned from the socket. + """ + wrapped_socket = None + try: + wrapped_socket = _connection_refs.get(connection_id) + if wrapped_socket is None: + return SecurityConst.errSSLInternal + base_socket = wrapped_socket.socket + + requested_length = data_length_pointer[0] + + timeout = wrapped_socket.gettimeout() + error = None + read_count = 0 + buffer = (ctypes.c_char * requested_length).from_address(data_buffer) + buffer_view = memoryview(buffer) + + try: + while read_count < requested_length: + if timeout is None or timeout >= 0: + readables = util.wait_for_read([base_socket], timeout) + if not readables: + raise socket.error(errno.EAGAIN, 'timed out') + + # We need to tell ctypes that we have a buffer that can be + # written to. Upsettingly, we do that like this: + chunk_size = base_socket.recv_into( + buffer_view[read_count:requested_length] + ) + read_count += chunk_size + if not chunk_size: + if not read_count: + return SecurityConst.errSSLClosedGraceful + break + except (socket.error) as e: + error = e.errno + + if error is not None and error != errno.EAGAIN: + if error == errno.ECONNRESET: + return SecurityConst.errSSLClosedAbort + raise + + data_length_pointer[0] = read_count + + if read_count != requested_length: + return SecurityConst.errSSLWouldBlock + + return 0 + except Exception as e: + if wrapped_socket is not None: + wrapped_socket._exception = e + return SecurityConst.errSSLInternal + + +def _write_callback(connection_id, data_buffer, data_length_pointer): + """ + SecureTransport write callback. This is called by ST to request that data + actually be sent on the network. + """ + wrapped_socket = None + try: + wrapped_socket = _connection_refs.get(connection_id) + if wrapped_socket is None: + return SecurityConst.errSSLInternal + base_socket = wrapped_socket.socket + + bytes_to_write = data_length_pointer[0] + data = ctypes.string_at(data_buffer, bytes_to_write) + + timeout = wrapped_socket.gettimeout() + error = None + sent = 0 + + try: + while sent < bytes_to_write: + if timeout is None or timeout >= 0: + writables = util.wait_for_write([base_socket], timeout) + if not writables: + raise socket.error(errno.EAGAIN, 'timed out') + chunk_sent = base_socket.send(data) + sent += chunk_sent + + # This has some needless copying here, but I'm not sure there's + # much value in optimising this data path. + data = data[chunk_sent:] + except (socket.error) as e: + error = e.errno + + if error is not None and error != errno.EAGAIN: + if error == errno.ECONNRESET: + return SecurityConst.errSSLClosedAbort + raise + + data_length_pointer[0] = sent + if sent != bytes_to_write: + return SecurityConst.errSSLWouldBlock + + return 0 + except Exception as e: + if wrapped_socket is not None: + wrapped_socket._exception = e + return SecurityConst.errSSLInternal + + +# We need to keep these two objects references alive: if they get GC'd while +# in use then SecureTransport could attempt to call a function that is in freed +# memory. That would be...uh...bad. Yeah, that's the word. Bad. +_read_callback_pointer = Security.SSLReadFunc(_read_callback) +_write_callback_pointer = Security.SSLWriteFunc(_write_callback) + + +class WrappedSocket(object): + """ + API-compatibility wrapper for Python's OpenSSL wrapped socket object. + + Note: _makefile_refs, _drop(), and _reuse() are needed for the garbage + collector of PyPy. + """ + def __init__(self, socket): + self.socket = socket + self.context = None + self._makefile_refs = 0 + self._closed = False + self._exception = None + self._keychain = None + self._keychain_dir = None + self._client_cert_chain = None + + # We save off the previously-configured timeout and then set it to + # zero. This is done because we use select and friends to handle the + # timeouts, but if we leave the timeout set on the lower socket then + # Python will "kindly" call select on that socket again for us. Avoid + # that by forcing the timeout to zero. + self._timeout = self.socket.gettimeout() + self.socket.settimeout(0) + + @contextlib.contextmanager + def _raise_on_error(self): + """ + A context manager that can be used to wrap calls that do I/O from + SecureTransport. If any of the I/O callbacks hit an exception, this + context manager will correctly propagate the exception after the fact. + This avoids silently swallowing those exceptions. + + It also correctly forces the socket closed. + """ + self._exception = None + + # We explicitly don't catch around this yield because in the unlikely + # event that an exception was hit in the block we don't want to swallow + # it. + yield + if self._exception is not None: + exception, self._exception = self._exception, None + self.close() + raise exception + + def _set_ciphers(self): + """ + Sets up the allowed ciphers. By default this matches the set in + util.ssl_.DEFAULT_CIPHERS, at least as supported by macOS. This is done + custom and doesn't allow changing at this time, mostly because parsing + OpenSSL cipher strings is going to be a freaking nightmare. + """ + ciphers = (Security.SSLCipherSuite * len(CIPHER_SUITES))(*CIPHER_SUITES) + result = Security.SSLSetEnabledCiphers( + self.context, ciphers, len(CIPHER_SUITES) + ) + _assert_no_error(result) + + def _custom_validate(self, verify, trust_bundle): + """ + Called when we have set custom validation. We do this in two cases: + first, when cert validation is entirely disabled; and second, when + using a custom trust DB. + """ + # If we disabled cert validation, just say: cool. + if not verify: + return + + # We want data in memory, so load it up. + if os.path.isfile(trust_bundle): + with open(trust_bundle, 'rb') as f: + trust_bundle = f.read() + + cert_array = None + trust = Security.SecTrustRef() + + try: + # Get a CFArray that contains the certs we want. + cert_array = _cert_array_from_pem(trust_bundle) + + # Ok, now the hard part. We want to get the SecTrustRef that ST has + # created for this connection, shove our CAs into it, tell ST to + # ignore everything else it knows, and then ask if it can build a + # chain. This is a buuuunch of code. + result = Security.SSLCopyPeerTrust( + self.context, ctypes.byref(trust) + ) + _assert_no_error(result) + if not trust: + raise ssl.SSLError("Failed to copy trust reference") + + result = Security.SecTrustSetAnchorCertificates(trust, cert_array) + _assert_no_error(result) + + result = Security.SecTrustSetAnchorCertificatesOnly(trust, True) + _assert_no_error(result) + + trust_result = Security.SecTrustResultType() + result = Security.SecTrustEvaluate( + trust, ctypes.byref(trust_result) + ) + _assert_no_error(result) + finally: + if trust: + CoreFoundation.CFRelease(trust) + + if cert_array is None: + CoreFoundation.CFRelease(cert_array) + + # Ok, now we can look at what the result was. + successes = ( + SecurityConst.kSecTrustResultUnspecified, + SecurityConst.kSecTrustResultProceed + ) + if trust_result.value not in successes: + raise ssl.SSLError( + "certificate verify failed, error code: %d" % + trust_result.value + ) + + def handshake(self, + server_hostname, + verify, + trust_bundle, + min_version, + max_version, + client_cert, + client_key, + client_key_passphrase): + """ + Actually performs the TLS handshake. This is run automatically by + wrapped socket, and shouldn't be needed in user code. + """ + # First, we do the initial bits of connection setup. We need to create + # a context, set its I/O funcs, and set the connection reference. + self.context = Security.SSLCreateContext( + None, SecurityConst.kSSLClientSide, SecurityConst.kSSLStreamType + ) + result = Security.SSLSetIOFuncs( + self.context, _read_callback_pointer, _write_callback_pointer + ) + _assert_no_error(result) + + # Here we need to compute the handle to use. We do this by taking the + # id of self modulo 2**31 - 1. If this is already in the dictionary, we + # just keep incrementing by one until we find a free space. + with _connection_ref_lock: + handle = id(self) % 2147483647 + while handle in _connection_refs: + handle = (handle + 1) % 2147483647 + _connection_refs[handle] = self + + result = Security.SSLSetConnection(self.context, handle) + _assert_no_error(result) + + # If we have a server hostname, we should set that too. + if server_hostname: + if not isinstance(server_hostname, bytes): + server_hostname = server_hostname.encode('utf-8') + + result = Security.SSLSetPeerDomainName( + self.context, server_hostname, len(server_hostname) + ) + _assert_no_error(result) + + # Setup the ciphers. + self._set_ciphers() + + # Set the minimum and maximum TLS versions. + result = Security.SSLSetProtocolVersionMin(self.context, min_version) + _assert_no_error(result) + result = Security.SSLSetProtocolVersionMax(self.context, max_version) + _assert_no_error(result) + + # If there's a trust DB, we need to use it. We do that by telling + # SecureTransport to break on server auth. We also do that if we don't + # want to validate the certs at all: we just won't actually do any + # authing in that case. + if not verify or trust_bundle is not None: + result = Security.SSLSetSessionOption( + self.context, + SecurityConst.kSSLSessionOptionBreakOnServerAuth, + True + ) + _assert_no_error(result) + + # If there's a client cert, we need to use it. + if client_cert: + self._keychain, self._keychain_dir = _temporary_keychain() + self._client_cert_chain = _load_client_cert_chain( + self._keychain, client_cert, client_key + ) + result = Security.SSLSetCertificate( + self.context, self._client_cert_chain + ) + _assert_no_error(result) + + while True: + with self._raise_on_error(): + result = Security.SSLHandshake(self.context) + + if result == SecurityConst.errSSLWouldBlock: + raise socket.timeout("handshake timed out") + elif result == SecurityConst.errSSLServerAuthCompleted: + self._custom_validate(verify, trust_bundle) + continue + else: + _assert_no_error(result) + break + + def fileno(self): + return self.socket.fileno() + + # Copy-pasted from Python 3.5 source code + def _decref_socketios(self): + if self._makefile_refs > 0: + self._makefile_refs -= 1 + if self._closed: + self.close() + + def recv(self, bufsiz): + buffer = ctypes.create_string_buffer(bufsiz) + bytes_read = self.recv_into(buffer, bufsiz) + data = buffer[:bytes_read] + return data + + def recv_into(self, buffer, nbytes=None): + # Read short on EOF. + if self._closed: + return 0 + + if nbytes is None: + nbytes = len(buffer) + + buffer = (ctypes.c_char * nbytes).from_buffer(buffer) + processed_bytes = ctypes.c_size_t(0) + + with self._raise_on_error(): + result = Security.SSLRead( + self.context, buffer, nbytes, ctypes.byref(processed_bytes) + ) + + # There are some result codes that we want to treat as "not always + # errors". Specifically, those are errSSLWouldBlock, + # errSSLClosedGraceful, and errSSLClosedNoNotify. + if (result == SecurityConst.errSSLWouldBlock): + # If we didn't process any bytes, then this was just a time out. + # However, we can get errSSLWouldBlock in situations when we *did* + # read some data, and in those cases we should just read "short" + # and return. + if processed_bytes.value == 0: + # Timed out, no data read. + raise socket.timeout("recv timed out") + elif result in (SecurityConst.errSSLClosedGraceful, SecurityConst.errSSLClosedNoNotify): + # The remote peer has closed this connection. We should do so as + # well. Note that we don't actually return here because in + # principle this could actually be fired along with return data. + # It's unlikely though. + self.close() + else: + _assert_no_error(result) + + # Ok, we read and probably succeeded. We should return whatever data + # was actually read. + return processed_bytes.value + + def settimeout(self, timeout): + self._timeout = timeout + + def gettimeout(self): + return self._timeout + + def send(self, data): + processed_bytes = ctypes.c_size_t(0) + + with self._raise_on_error(): + result = Security.SSLWrite( + self.context, data, len(data), ctypes.byref(processed_bytes) + ) + + if result == SecurityConst.errSSLWouldBlock and processed_bytes.value == 0: + # Timed out + raise socket.timeout("send timed out") + else: + _assert_no_error(result) + + # We sent, and probably succeeded. Tell them how much we sent. + return processed_bytes.value + + def sendall(self, data): + total_sent = 0 + while total_sent < len(data): + sent = self.send(data[total_sent:total_sent + SSL_WRITE_BLOCKSIZE]) + total_sent += sent + + def shutdown(self): + with self._raise_on_error(): + Security.SSLClose(self.context) + + def close(self): + # TODO: should I do clean shutdown here? Do I have to? + if self._makefile_refs < 1: + self._closed = True + if self.context: + CoreFoundation.CFRelease(self.context) + self.context = None + if self._client_cert_chain: + CoreFoundation.CFRelease(self._client_cert_chain) + self._client_cert_chain = None + if self._keychain: + Security.SecKeychainDelete(self._keychain) + CoreFoundation.CFRelease(self._keychain) + shutil.rmtree(self._keychain_dir) + self._keychain = self._keychain_dir = None + return self.socket.close() + else: + self._makefile_refs -= 1 + + def getpeercert(self, binary_form=False): + # Urgh, annoying. + # + # Here's how we do this: + # + # 1. Call SSLCopyPeerTrust to get hold of the trust object for this + # connection. + # 2. Call SecTrustGetCertificateAtIndex for index 0 to get the leaf. + # 3. To get the CN, call SecCertificateCopyCommonName and process that + # string so that it's of the appropriate type. + # 4. To get the SAN, we need to do something a bit more complex: + # a. Call SecCertificateCopyValues to get the data, requesting + # kSecOIDSubjectAltName. + # b. Mess about with this dictionary to try to get the SANs out. + # + # This is gross. Really gross. It's going to be a few hundred LoC extra + # just to repeat something that SecureTransport can *already do*. So my + # operating assumption at this time is that what we want to do is + # instead to just flag to urllib3 that it shouldn't do its own hostname + # validation when using SecureTransport. + if not binary_form: + raise ValueError( + "SecureTransport only supports dumping binary certs" + ) + trust = Security.SecTrustRef() + certdata = None + der_bytes = None + + try: + # Grab the trust store. + result = Security.SSLCopyPeerTrust( + self.context, ctypes.byref(trust) + ) + _assert_no_error(result) + if not trust: + # Probably we haven't done the handshake yet. No biggie. + return None + + cert_count = Security.SecTrustGetCertificateCount(trust) + if not cert_count: + # Also a case that might happen if we haven't handshaked. + # Handshook? Handshaken? + return None + + leaf = Security.SecTrustGetCertificateAtIndex(trust, 0) + assert leaf + + # Ok, now we want the DER bytes. + certdata = Security.SecCertificateCopyData(leaf) + assert certdata + + data_length = CoreFoundation.CFDataGetLength(certdata) + data_buffer = CoreFoundation.CFDataGetBytePtr(certdata) + der_bytes = ctypes.string_at(data_buffer, data_length) + finally: + if certdata: + CoreFoundation.CFRelease(certdata) + if trust: + CoreFoundation.CFRelease(trust) + + return der_bytes + + def _reuse(self): + self._makefile_refs += 1 + + def _drop(self): + if self._makefile_refs < 1: + self.close() + else: + self._makefile_refs -= 1 + + +if _fileobject: # Platform-specific: Python 2 + def makefile(self, mode, bufsize=-1): + self._makefile_refs += 1 + return _fileobject(self, mode, bufsize, close=True) +else: # Platform-specific: Python 3 + def makefile(self, mode="r", buffering=None, *args, **kwargs): + # We disable buffering with SecureTransport because it conflicts with + # the buffering that ST does internally (see issue #1153 for more). + buffering = 0 + return backport_makefile(self, mode, buffering, *args, **kwargs) + +WrappedSocket.makefile = makefile + + +class SecureTransportContext(object): + """ + I am a wrapper class for the SecureTransport library, to translate the + interface of the standard library ``SSLContext`` object to calls into + SecureTransport. + """ + def __init__(self, protocol): + self._min_version, self._max_version = _protocol_to_min_max[protocol] + self._options = 0 + self._verify = False + self._trust_bundle = None + self._client_cert = None + self._client_key = None + self._client_key_passphrase = None + + @property + def check_hostname(self): + """ + SecureTransport cannot have its hostname checking disabled. For more, + see the comment on getpeercert() in this file. + """ + return True + + @check_hostname.setter + def check_hostname(self, value): + """ + SecureTransport cannot have its hostname checking disabled. For more, + see the comment on getpeercert() in this file. + """ + pass + + @property + def options(self): + # TODO: Well, crap. + # + # So this is the bit of the code that is the most likely to cause us + # trouble. Essentially we need to enumerate all of the SSL options that + # users might want to use and try to see if we can sensibly translate + # them, or whether we should just ignore them. + return self._options + + @options.setter + def options(self, value): + # TODO: Update in line with above. + self._options = value + + @property + def verify_mode(self): + return ssl.CERT_REQUIRED if self._verify else ssl.CERT_NONE + + @verify_mode.setter + def verify_mode(self, value): + self._verify = True if value == ssl.CERT_REQUIRED else False + + def set_default_verify_paths(self): + # So, this has to do something a bit weird. Specifically, what it does + # is nothing. + # + # This means that, if we had previously had load_verify_locations + # called, this does not undo that. We need to do that because it turns + # out that the rest of the urllib3 code will attempt to load the + # default verify paths if it hasn't been told about any paths, even if + # the context itself was sometime earlier. We resolve that by just + # ignoring it. + pass + + def load_default_certs(self): + return self.set_default_verify_paths() + + def set_ciphers(self, ciphers): + # For now, we just require the default cipher string. + if ciphers != util.ssl_.DEFAULT_CIPHERS: + raise ValueError( + "SecureTransport doesn't support custom cipher strings" + ) + + def load_verify_locations(self, cafile=None, capath=None, cadata=None): + # OK, we only really support cadata and cafile. + if capath is not None: + raise ValueError( + "SecureTransport does not support cert directories" + ) + + self._trust_bundle = cafile or cadata + + def load_cert_chain(self, certfile, keyfile=None, password=None): + self._client_cert = certfile + self._client_key = keyfile + self._client_cert_passphrase = password + + def wrap_socket(self, sock, server_side=False, + do_handshake_on_connect=True, suppress_ragged_eofs=True, + server_hostname=None): + # So, what do we do here? Firstly, we assert some properties. This is a + # stripped down shim, so there is some functionality we don't support. + # See PEP 543 for the real deal. + assert not server_side + assert do_handshake_on_connect + assert suppress_ragged_eofs + + # Ok, we're good to go. Now we want to create the wrapped socket object + # and store it in the appropriate place. + wrapped_socket = WrappedSocket(sock) + + # Now we can handshake + wrapped_socket.handshake( + server_hostname, self._verify, self._trust_bundle, + self._min_version, self._max_version, self._client_cert, + self._client_key, self._client_key_passphrase + ) + return wrapped_socket diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/socks.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/socks.py similarity index 88% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/socks.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/socks.py index 81970fa..39e92fd 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/socks.py +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/socks.py @@ -1,17 +1,23 @@ # -*- coding: utf-8 -*- """ -SOCKS support for urllib3 -~~~~~~~~~~~~~~~~~~~~~~~~~ - -This contrib module contains provisional support for SOCKS proxies from within +This module contains provisional support for SOCKS proxies from within urllib3. This module supports SOCKS4 (specifically the SOCKS4A variant) and SOCKS5. To enable its functionality, either install PySocks or install this module with the ``socks`` extra. +The SOCKS implementation supports the full range of urllib3 features. It also +supports the following SOCKS features: + +- SOCKS4 +- SOCKS4a +- SOCKS5 +- Usernames and passwords for the SOCKS proxy + Known Limitations: - Currently PySocks does not support contacting remote websites via literal - IPv6 addresses. Any such connection attempt will fail. + IPv6 addresses. Any such connection attempt will fail. You must use a domain + name. - Currently PySocks does not support IPv6 connections to the SOCKS proxy. Any such connection attempt will fail. """ @@ -77,6 +83,7 @@ class SOCKSConnection(HTTPConnection): proxy_port=self._socks_options['proxy_port'], proxy_username=self._socks_options['username'], proxy_password=self._socks_options['password'], + proxy_rdns=self._socks_options['rdns'], timeout=self.timeout, **extra_kw ) @@ -147,8 +154,16 @@ class SOCKSProxyManager(PoolManager): if parsed.scheme == 'socks5': socks_version = socks.PROXY_TYPE_SOCKS5 + rdns = False + elif parsed.scheme == 'socks5h': + socks_version = socks.PROXY_TYPE_SOCKS5 + rdns = True elif parsed.scheme == 'socks4': socks_version = socks.PROXY_TYPE_SOCKS4 + rdns = False + elif parsed.scheme == 'socks4a': + socks_version = socks.PROXY_TYPE_SOCKS4 + rdns = True else: raise ValueError( "Unable to determine SOCKS version from %s" % proxy_url @@ -162,6 +177,7 @@ class SOCKSProxyManager(PoolManager): 'proxy_port': parsed.port, 'username': username, 'password': password, + 'rdns': rdns } connection_pool_kw['_socks_options'] = socks_options diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/exceptions.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/exceptions.py similarity index 84% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/exceptions.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/exceptions.py index f2e6591..6c4be58 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/exceptions.py +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/exceptions.py @@ -1,4 +1,7 @@ from __future__ import absolute_import +from .packages.six.moves.http_client import ( + IncompleteRead as httplib_IncompleteRead +) # Base Exceptions @@ -193,6 +196,35 @@ class ResponseNotChunked(ProtocolError, ValueError): pass +class BodyNotHttplibCompatible(HTTPError): + """ + Body should be httplib.HTTPResponse like (have an fp attribute which + returns raw chunks) for read_chunked(). + """ + pass + + +class IncompleteRead(HTTPError, httplib_IncompleteRead): + """ + Response length doesn't match expected Content-Length + + Subclass of http_client.IncompleteRead to allow int value + for `partial` to avoid creating large objects on streamed + reads. + """ + def __init__(self, partial, expected): + super(IncompleteRead, self).__init__(partial, expected) + + def __repr__(self): + return ('IncompleteRead(%i bytes read, ' + '%i more expected)' % (self.partial, self.expected)) + + +class InvalidHeader(HTTPError): + "The header provided was somehow invalid." + pass + + class ProxySchemeUnknown(AssertionError, ValueError): "ProxyManager does not support the supplied scheme" # TODO(t-8ch): Stop inheriting from AssertionError in v2.0. @@ -207,3 +239,8 @@ class HeaderParsingError(HTTPError): def __init__(self, defects, unparsed_data): message = '%s, unparsed data: %r' % (defects or 'Unknown', unparsed_data) super(HeaderParsingError, self).__init__(message) + + +class UnrewindableBodyError(HTTPError): + "urllib3 encountered an error when trying to rewind a body" + pass diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/fields.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/fields.py similarity index 99% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/fields.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/fields.py index 8fa2a12..19b0ae0 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/fields.py +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/fields.py @@ -130,7 +130,7 @@ class RequestField(object): iterable = header_parts.items() for name, value in iterable: - if value: + if value is not None: parts.append(self._render_part(name, value)) return '; '.join(parts) diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/filepost.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/filepost.py similarity index 96% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/filepost.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/filepost.py index 97a2843..cd11cee 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/filepost.py +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/filepost.py @@ -13,7 +13,7 @@ writer = codecs.lookup('utf-8')[3] def choose_boundary(): """ - Our embarassingly-simple replacement for mimetools.choose_boundary. + Our embarrassingly-simple replacement for mimetools.choose_boundary. """ return uuid4().hex diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/__init__.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/packages/__init__.py similarity index 100% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/__init__.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/packages/__init__.py diff --git a/lib/python3.6/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0a648d64e5c3d75373e3afff6fc1fdce0362f5f1 GIT binary patch literal 276 zcmX|5yG{c!5M28b5}gtu@ddP31S4IG5Ct_2-8Cy;Y>2@=TYezj=TPz`{DWJn{6ebu z4k;_m>}Y1Cop!sezw6)50Ki|tWoS`P1>v@k06{bu(h&lJib_*cbyd+<-9jv1p;;Zv z6*MGY^FCOeqC{n!_3=pl{hJUp8XortJlGHiZlqt7=%pd^ZkD-5d`mHTiRh>A8RjIf z5V_WfKj7EJp6T?=qH)YAx9gMAVt3EYM?bdXWX-@YISA`n@>;9DWsdJZ`MV4ZQ4K00 W-nlWaAB+`A%g3o@nEGt!hMobVbx1n^ literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/__pycache__/ordered_dict.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/packages/__pycache__/ordered_dict.cpython-36.pyc similarity index 97% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/__pycache__/ordered_dict.cpython-36.pyc rename to lib/python3.6/site-packages/pip/_vendor/urllib3/packages/__pycache__/ordered_dict.cpython-36.pyc index 80492bf00b1073dd90e88171d359b3e5c49b9d84..cf4f4aa5f71940c7c15e60c1e42ad742ba685b46 100644 GIT binary patch delta 61 zcmdn&xX_W!n3tDpA=gGWSr!cs{gT`Q{esK_-K5gYoD^My#N4c;O5;k95E#dorRJsN L7j2GZ36lW;Ne&bW delta 79 zcmZ4JxY?1-n3tF982d&xSr)4({gT`Q{esK_-K5gYoD^LXgw)bv%jz2p)q77+?f49Dul(1xTbY1T$zd`mJOr0tq9CUw--}xdr+KnFYE@ zrI|S?x(124SxJ?~l^`K7jxS5iOUW?sCf1_16zDYF0o literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8a687d8bfe0e4875b0ab192fe6bbd827b453c626 GIT binary patch literal 1261 zcmZuwPm3Ej6qjbkGvo2tq<`3Jl+Z3UBz9maDW#NT+chkdO^A~&_|VxIOS3!ncxI5~ zxL)KO;+{)CKzr!1w;tNh&`Umn4!sl#`xQ!|eHyRLLi>cC-uvn4J-zp&gLXUkG5Brt zYXhM_&>3oP z4bx=(8BDQ<5t2yZHI{Ye)IPV@c#6e)5>rRv6z`!mehoEIcYPeU}4u5K5eX;%Hv#K??~%nll8`vh%LSudjjo^>=!6@7 zd1qcE^E73gQ6ePtdnU+iE+k19NwOm5%d3BYx}mlOlREe^&gbli^OEb%V<8xqSy|LN zx4_@16K&sV#91n|m6iIP&yNO=UwrXAI(#u096gJM$DNd0&MYJ485f5QYyPN-9H?B6W alf1!*vGPBGqReylsSlbk48mEVjqty|WNmQ( literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py new file mode 100644 index 0000000..75b80dc --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +""" +backports.makefile +~~~~~~~~~~~~~~~~~~ + +Backports the Python 3 ``socket.makefile`` method for use with anything that +wants to create a "fake" socket object. +""" +import io + +from socket import SocketIO + + +def backport_makefile(self, mode="r", buffering=None, encoding=None, + errors=None, newline=None): + """ + Backport of ``socket.makefile`` from Python 3.5. + """ + if not set(mode) <= set(["r", "w", "b"]): + raise ValueError( + "invalid mode %r (only r, w, b allowed)" % (mode,) + ) + writing = "w" in mode + reading = "r" in mode or not writing + assert reading or writing + binary = "b" in mode + rawmode = "" + if reading: + rawmode += "r" + if writing: + rawmode += "w" + raw = SocketIO(self, rawmode) + self._makefile_refs += 1 + if buffering is None: + buffering = -1 + if buffering < 0: + buffering = io.DEFAULT_BUFFER_SIZE + if buffering == 0: + if not binary: + raise ValueError("unbuffered streams must be binary") + return raw + if reading and writing: + buffer = io.BufferedRWPair(raw, raw, buffering) + elif reading: + buffer = io.BufferedReader(raw, buffering) + else: + assert writing + buffer = io.BufferedWriter(raw, buffering) + if binary: + return buffer + text = io.TextIOWrapper(buffer, encoding, errors, newline) + text.mode = mode + return text diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ordered_dict.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/packages/ordered_dict.py similarity index 100% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ordered_dict.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/packages/ordered_dict.py diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/six.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/packages/six.py similarity index 100% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/six.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/packages/six.py diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py similarity index 64% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py index dd59a75..d6594eb 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py @@ -1,5 +1,11 @@ +import sys + try: - # Python 3.2+ + # Our match_hostname function is the same as 3.5's, so we only want to + # import the match_hostname function if it's at least that good. + if sys.version_info < (3, 5): + raise ImportError("Fallback to vendored code") + from ssl import CertificateError, match_hostname except ImportError: try: diff --git a/lib/python3.6/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..71f5564394e736847dce9fc3b44bb220a8436785 GIT binary patch literal 537 zcmZWlO-lnY5S?VVwyxjMi_k+4BJ`ju^eQ5Vf)_6y)V+jl6E!y3EJ<2e@ucAY@aWBd z;eXhxr~U;`POMPHgn0}zFK^zYzp|3NB=6Z91^9qpX9M#?4EKz{ffEH8RNDgX2wxn5 z?Fh=_C-O+J*HDp;vsgE>27wDG&SDUBl-LIX;a2T$&cYwg)(>Yg=o>CFc9GLBK5jVOIhv=#!~T} zyPNzCx^&6|I3-uwM# zV|m&ChyP>u;X9V~FYCZCeri#Nx-Tv2vfAA4*69UWr`}7{^=O0oFRgBaF3~1@eY#9r@Li(# zz-nKde)go#$S9I=KkVm1X3>b_b#Wqy>@u4_SwxEcALv>`$>=JgYw^>>PII%gJIi*AGE7r_~FPzw4Fvzvi z9UxkR)_Pel@zCMB64Sbb-gERWly6a47vI1b&fF@Iu7_}XrAuo=%w=g0TqA8wJmw{G8A zBZ5`YbvO7;u;Kdzp1zdD{Z2>bc`Aa0$zG82qfTFr(hl#%y4(9Fz1FKeo}}I9p$z;xAV# z#VUxKPy#63c1yXUNE4~tI3H)yoV;>4E4Xsg`~~Bx78L~qm-2;-xD+oE*;kk|RbwKK z3a08{oJKJSaXu=NlqqMBCzkZNk(BUjWfnQ9vvwgy8N6cybg|1t&nEIB$1i*Jlm2 z5^5nHfE4Q-*NIvLw&`fB?)ie&|+I^^>n*?B}F zO1Xwi5mbS`$O6KSA*$j;rV~PQCbC~iLRl}#7>P0xrAIl3I2w^&&WY?N!eq&fMdsWJ zejD5->*U)0Sn7!m;=Ewj+JUiZJF1ZsCliCiitt1>yHho;{agUZ){;U;fvW3x3zI_O zq&V-ai=aR0UcuxO?Fw-3`v=XRt=c@A>I!M9k-1Q-T4aBjS732@z9_=-H23~pg zAAnk4LoD@%4p>pSL>ncd{-7zBWeZvWtb6z!Lk!v4sjVLU71%D7sI+PGigjw^fp%G+ zfg$}?)P|$^g7Ks`fzXO1S=I2kN^Ss9Ql=A!>aYWBAdw)P$uZABbvQB61yp~K$3rHA zBPI*RxbA$T-L3+k2^f-*)dhmB2E+jW?R&TGL15EU7BFLRpmjka&S1V&gDG7jhY-b{tMiu#lEBiVM1Z}%$3#gw<}4ul84+U`NQgDF(8W!sT8`PO zATXPzuPU3Sl8p*EA&`ezewIkq&fS|x#u%_oq%T867#HbI`Y+Bi$&Mv(lI#-(72{-U z`|*=-|Iw43{k_dyZD4yvNlk5BxTnyANCI`s4E~a>mOt1cb+w0tr>-2Z9Z=g7y7d(MG8ti5< zonH3a%Ot&orQikNMSZB_jJ7W*|BEOcS9d$!0es*$b)}(JH9xPQ+FblpYf}O=K?GFB z%7zd#RKqo_7_d=x$}&U3{FizFdlVIX8KkzS936`MiZ1z- z1r+1M^HA3^E;_vje*;5^&!DnA2YEKeE2xD%)N-J}w+6*QO&|>qtr)5LwouImOCZW7 zXf>%g_&rmvVEzzB11{4**>0+O7}7irL;ef+=bC|yd(_g-sK~jje6ke6)wLqGkl)uf ynw~1JXcro 1: + raise InvalidHeader("Content-Length contained multiple " + "unmatching values (%s)" % length) + length = lengths.pop() + except ValueError: + length = None + else: + if length < 0: + length = None + + # Convert status to int for comparison + # In some cases, httplib returns a status of "_UNKNOWN" + try: + status = int(self.status) + except ValueError: + status = 0 + + # Check for responses that shouldn't include a body + if status in (204, 304) or 100 <= status < 200 or request_method == 'HEAD': + length = 0 + + return length + def _init_decoder(self): """ - Set-up the _decoder attribute if necessar. + Set-up the _decoder attribute if necessary. """ # Note: content-encoding value should be case-insensitive, per RFC 7230 # Section 3.2 @@ -322,9 +392,18 @@ class HTTPResponse(io.IOBase): # no harm in redundantly calling close. self._fp.close() flush_decoder = True + if self.enforce_content_length and self.length_remaining not in (0, None): + # This is an edge case that httplib failed to cover due + # to concerns of backward compatibility. We're + # addressing it here to make sure IncompleteRead is + # raised during streaming, so all calls with incorrect + # Content-Length are caught. + raise IncompleteRead(self._fp_bytes_read, self.length_remaining) if data: self._fp_bytes_read += len(data) + if self.length_remaining is not None: + self.length_remaining -= len(data) data = self._decode(data, decode_content, flush_decoder) @@ -349,7 +428,7 @@ class HTTPResponse(io.IOBase): If True, will attempt to decode the body based on the 'content-encoding' header. """ - if self.chunked: + if self.chunked and self.supports_chunked_reads(): for line in self.read_chunked(amt, decode_content=decode_content): yield line else: @@ -395,6 +474,10 @@ class HTTPResponse(io.IOBase): def getheader(self, name, default=None): return self.headers.get(name, default) + # Backwards compatibility for http.cookiejar + def info(self): + return self.headers + # Overrides from io.IOBase def close(self): if not self.closed: @@ -407,10 +490,10 @@ class HTTPResponse(io.IOBase): def closed(self): if self._fp is None: return True + elif hasattr(self._fp, 'isclosed'): + return self._fp.isclosed() elif hasattr(self._fp, 'closed'): return self._fp.closed - elif hasattr(self._fp, 'isclosed'): # Python 2 - return self._fp.isclosed() else: return True @@ -440,6 +523,15 @@ class HTTPResponse(io.IOBase): b[:len(temp)] = temp return len(temp) + def supports_chunked_reads(self): + """ + Checks if the underlying file-like object looks like a + httplib.HTTPResponse object. We do this by testing for the fp + attribute. If it is present we assume it returns raw chunks as + processed by read_chunked(). + """ + return hasattr(self._fp, 'fp') + def _update_chunk_length(self): # First, we'll figure out length of a chunk and then # we'll try to read it from socket. @@ -491,6 +583,10 @@ class HTTPResponse(io.IOBase): raise ResponseNotChunked( "Response is not chunked. " "Header 'transfer-encoding: chunked' is missing.") + if not self.supports_chunked_reads(): + raise BodyNotHttplibCompatible( + "Body should be httplib.HTTPResponse like. " + "It should have have an fp attribute which returns raw chunks.") # Don't bother reading the body of a HEAD request. if self._original_response and is_response_to_head(self._original_response): diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__init__.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/__init__.py similarity index 85% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__init__.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/util/__init__.py index 4778cf9..2f2770b 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__init__.py +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/__init__.py @@ -7,6 +7,7 @@ from .ssl_ import ( SSLContext, HAS_SNI, IS_PYOPENSSL, + IS_SECURETRANSPORT, assert_fingerprint, resolve_cert_reqs, resolve_ssl_version, @@ -24,10 +25,15 @@ from .url import ( split_first, Url, ) +from .wait import ( + wait_for_read, + wait_for_write +) __all__ = ( 'HAS_SNI', 'IS_PYOPENSSL', + 'IS_SECURETRANSPORT', 'SSLContext', 'Retry', 'Timeout', @@ -43,4 +49,6 @@ __all__ = ( 'resolve_ssl_version', 'split_first', 'ssl_wrap_socket', + 'wait_for_read', + 'wait_for_write' ) diff --git a/lib/python3.6/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..660460626540961fed30aea41a3da8e83a4a02ae GIT binary patch literal 1080 zcmchW%Wl*#6o!+zC6mcqI+xxk6j(8fGDzL9K&Vw!iArc%P1*(CSec32hT2K6otAkV zBsM$=@8B(~z5*-GaRsedu_94EopbEO$N%r_w%fs%;5!-C9OsAg;2J`_2aoy+NSwsw zj&Oy;4fLM z1oxZ7{TUCv0axy%LAgv_qB~YUQw2jF$YgavIZX{6xL3z`l*XJ>`puEgVcg>9-b9OH zQl!Psyi9qr^C}h}=gZwCmh1zkCrffUfmL`q-<^~?2}3h&(Addy9XB YdJPCGp^Nv6pjQvw^+vDZxc_qh0#5t}c>n+a literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..99b323277296e7aeb10a4039a5362f729e9d78a2 GIT binary patch literal 3078 zcmaJ@&u<&Y72erhl1oygWG9W?A}yv#fS9T+xpAul(H2!?sTS(Uf=S1Yl3=;y48^6E zyUfhcGKJk7q8yw41-QQx8 zJE~z^Wwo!ZBahqDIAXNT15x(F7>)3hY!FJE@?LOSy>F2E;kN8L> zVpoVnjPxh^vC*1nJ81G_yp)yVUd%psGLqu|#1l8Qe)Jvm-(zmiQbgX?bIUblD+enT zR{h34Cq2uxlzY+;hs4r9z4saHfYa9k3Y86t=P_3c5lh+^3r@o^RTEA}NgU&JVG`3& zQYMo5oHH84jLJ!}h!`DWPn1Z`HX24qcOHmfX1?p12`#xhiUKLSgNah}C>(A)==TqI zE+r3WGMqw5Dd8Ydyi4~ILFZARV6~Z~QFy}X_I$n@ABQo&jicc-r(qP)AUX|}k_vNn zIvDH)k>rB`Rf*9aab@mtA&O3L_UM&+2|ikmqA)(DN(8aQ`FX6OC52|XkQ+u!?#g6z zvUkuwh9}Gef7etvHM^VGzZa;qu;6PnqUF=P^sf=0Zd;*}ct$3Zu=J?%0?w^B;xMe>vlq z-qBj*TXZWd5No(j;&fWXg=YPq()cdTG)w4#{%vQ1%_P3W0u1qaPfPY>56MI+AHMF7Qsr88tawl8;a`l<@MOU|{R$4VX|C3g~(wdvhJttow zcn}1YfFa&WL;^Z=Jzz|5Dc23uOK|CU&@cd`UI8q=gRep!k2oDKViPSJl>VT&TLJyx zj#|tC!NK6xB$4X20hs2C&S22_|N1CBL>w8Y;w;Hr$7K*10qZ3g*Qp6WuDB=yM3xay zu2V$vm5YS2Q~?fdWDGel&nbY+XOOKUBDr7yTxfqxW0>Yr5kgQd<_KucbVL?1j-zB4 zM3nJyu!s7MprYZQ2-ld91ku+)^^|aw|dNV37SA6_E`Si^G^z(zWpKHbd$ijG>lZ z^cQM5=Xqr=5|!ljQ4oVWgBj0l85j!92{#;CyjoiEwGlEa67Nf2y@zS}0bW+yBMtoA zO4Ysz{&R^<+D^kZbH$2%-LRxbeqw8`6u-b%Bb|WtBNXjqT| z%%=DY4QUfDS73CTo=!M8q43jh3x95G@A*#-dWX9^TBr`Ji*QGBH4;o}o^yd%n$dvX zKj9sFx^>U4)H3yBMf zWNeZVb2Iy?6~9?lQum8W>Juxrp8*o$F?LsU0!npFSUKDJ!E#D2CAgIW(luLe?Db Or!HyV^E|KV-S{6Xphb)T literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f409800c46259f8d72635bf267fdadc91122a8c3 GIT binary patch literal 3172 zcmbtWTW=#p7Vhe9x1EkN3Bzz*SZV{v7}?IC8I4c`!)8K2gMw$o3^xm@Q|_vaJL%h0 zRZqso5fbK!AHV}|Jnk>q|In{UEAbb2;+*O@cCxJYfsU$jTy^Tysqb8GtgZRK`2QY^ zuUOWv*3#zz{ZAO`8<@DoNo*x#KnT)yY$wjZ0ovhi>?XBAE%64P`CW_aNn_9e+8eA0 ze`XC<`4!&aD?gAylly%22Wzm#n|uxaU*Yu!R(t(7xWQ_Za-9uT78hCsQIcm;!_vy| z)=iOy85h6V$YhsfSgu8>7LSAs^f(s^xSsnwmEt5yIUB~}PR7T3Qf6|}d^Cyj4i|?p z)1n{Zi}0(%aAEAiP(Q;IS*PBV$XnW)5=~~dyq3OfXdCFaIXQBsWJXR&>T36tOv%*a z_IuXUmUpH$&<@a+>~k0B8qki6xusT%cU0%~8F|5i-3IKs^2f7X_tNeP?AGK@ z+y~B8pgq8*$yPyCpThTG1dxPrHzG2_anPdq) z79tN=96b@+W*H^jJ){Q*4`m?^4my-^u4pUF(o}>x%F=Cfq-&0}&SYK`$-+?NIxuE| z`xkO|SxSe3GCIt%Sg^E1<4EZa1$C8{z}h=kVSYc=lBEjmqo~ekYuRG01^Yh8p(jxs z!@D&-%A!+`3$_?C6@>vS^k{M8 zZWhB4CD2+L)J3gQmIyGPQYV?@XV4j=xA1HxqX`%uEoB7KUa!|WR{}Zy)M^02({b?E zRWNe8e?bu*DGbvfWZ~%lI3;p)!8Nta;%%B{U32D=SMEJ!Ngj*s?Fwsj@Y}a<(}W$1 z;4CEGT13J7==U81b7lPZH}5c=uypI4-u2D)IgZ~hg+yzcwot-ZP;_VutyK8~?kxng zPR|AWmkyW0#wfCUU$x(zhZPFG5Dk^+-$`e(eu;JBFZ7xC3r$OZ5!Ms$4tgJ*)Czsr zeYae@V8O|=e`3~2V~+S_%>X|)MY~b@k&05KSsIGcf#5D(4E55*&@9(?c6aygKMeNz zyZ1i4+y7WPkYr^IrqbgAlX<&d8a=Db1d0D*N-52QD*KfF!e`5k%U)crU2vzeerEB1 zS@K1=@AnV3bdqo7QQjREQOvv7S#mTS-x%YP8Nm~g@=R{cgSOC7ymgjQd-=F*F8k3c zh*WRGWWC`Mm-xhn(X?ICSQ<8Y5q?#3!VM@@d&twoY+ zhiG%fS$8a#@Gm4YH*C8$7(M-@Rw5bXmXm zpdwa-k9O|v?|t}iZ+{;Oy=x9R@B(AXYI+HeKBI&VQ2k*3yiZ|SZNOyJ8l*`!0RASq z>iD*N9oEj_ci_i4{2G2B?3{3W=A7D7o7-TDKEO{jR(=HD#>!8uFRjP<67ZkQf#*=+ zzX$Li=U-XrCYg5*308l-vdJcr5mgC;!v(Hm38cRNC+;?t&Qyu?@I9_1u0hrDqn#;V2 zx1kHsq=5DU8iwqUVoM3HF#Tl*2&JK`q7if-&`7+gdhHeYDmaeBR3NdVlz+$RHJq@q zloY1Y|ANJZsNC8`k!?r*12zVY`JICmLm@zy+*`f^i~$UF4JK<99Jz95vSBxf@3_Qp zw7tIh+Uuns1XTzIfy4|`dXO^3t(zwA4w^X&kD+%_JrzAQS=i`Z`r;|}agZETrTMx! wT6u$chRIzfg3OIedSY&sCKem-B^fVbaht%Bx(ZVhGUA5Gik@Q;f2VQv587prNB{r; literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/response.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-36.pyc similarity index 50% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/response.cpython-36.pyc rename to lib/python3.6/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-36.pyc index edd927c11e80c7d83f6497002582d2ed31968acc..a34c7d9e28318930bfe32b21ba72f136637665c0 100644 GIT binary patch delta 481 zcmY*U-AV#M6rMA?4(qgTmIY#kqEQ5il?2^Yh)>{+btCFdy8f)o>?j#QkWUbM-=ghoX9~LdfV)TuE-X2C@==;+SLZ~FezmqUF9#IEP zPzC8oK$r4eKuGnr1`SSnAbPUFbHRz%$rTK}Xtypc#2eZ5AY9 znu~;n<2QQ)pV^^xEd+NOL&3_N4|qrxeDDRSyeXgfeN_;Bui!aezAxixEH3&VOa(w)k>Y~^tU8w%921;k_( zZr6REaZzity3Kgat8?FRTL)6|wHbjS`?B+q1!xoSr8n6H<2HWS(#auFoTq;FbdQ8=h70H*8+Tf*-P{rH%A2T^eCv delta 463 zcmYk0ze~eF6vywb=^3wStX82FN-elJlps|E2SG#;Ttq=skdiiMO&go|?jjZhCpQ;~ zyR(BhI5@fL|Bye$$-5S`9Pjhqz3=<=X+PVnkLptq=t z4v~Q*?lG9hNWT-*C&y^Oltw(NJ;?aKzr*oiH1%Mt$EG+UI-5GtC$NZ zoXBnW+zuB`3_;+x8crYWNe9+}peQL`1O`Av35BmbLDgk+ovPMngf7mdxlFCFSQ!=Z+ DWMOAT diff --git a/lib/python3.6/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..38c7422dacfeed07a31f0894d9c2d925255b74a3 GIT binary patch literal 12268 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 Z8b3 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 literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/ssl_.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-36.pyc similarity index 54% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/ssl_.cpython-36.pyc rename to lib/python3.6/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-36.pyc index bae0183225222de87757432ce72497ddb142eca7..d437086e91657cce5e26b4125c0d5ae09b668bff 100644 GIT binary patch delta 1497 zcmah}T})e59KZkD+xGUhg$~9?yFw|2!iC*JTP6${Tf;h-LqN(RT&G>(f5%rT?6hp7 zsaZ^UQ=@o{iP4Z4jgQ2vKAQQo_@IgU;zND#!Ni9>`e>r@oLiXqqCGvo|L^=i&*%O4 z>W|4#-0fCAQNGc?7!ZVCg;T#E<5yVEe|8XB1N*^S^x@zwQE$`R@r)i=5_00AfDIcR z*obGb37fG6ThWU?JcoX4!*&c{2L`co)l&vNxaUCuL)q3XkM05CWg!=l1jE0nybFYY zz#FrR*-pK4Qot_k-WRaj2$e0m=eSZBdm{US-i5uWGTDuN*w17bqj(;*eb9R_h7lZK ztQWM zU6@Wq<60t_(qb2$(anWG)yVcu=Py{fBMJ@utF=gS6kSj3uKUiY9TSsYYN(94?&LJu)pWlxYlv(L7&<$ z0;zP#Z6HUvP9!mU-J!t)df)L8#43$S6GSq2FOyp_P}|LCR*lG7VJjQT=d;@V49TtM zR`aUOELp3i(OXV+(oE*8$|o*Wi8G?`;(U6?zMP%spmG@D;OAh5TiIN`bGE@H`qUYK zH>l#eQs2X@Dv(|-MAA!_Trc>{us9DJ;xNo%l!Koh23y)mnDI30`8ozN_&^b5rz|Np z*+IgU-(5RkCEd(aG3rJDKCB$pzb`^RjW-O#mvpn?G2?xWarn0KTH{yNv%J~@>0@|J zb(^_KKaF^MoDrrXuW%Tpx4lh%b6wm|wURNeex8Hr6{QE>IQ&eXcrU|m)avVM{9w;h zQZ}F@l^kV}zo)xLbj%kPnLyvr;@zV~A=g^4mlU)hlv&?&kRui$m)T1ziR3Zkj*?gc z9$iq#4{Yo#2_-8^Z?nf!aBaBJTBzgJnxzcvN!cnt`2rR{-|cEcb~}S> zxkcs;O>i%B+oJTZK=Psw*a7m*6PhHDB^$`13?g_~Yqfa51u`^)N0dd0aS7^}6zw*V zGYl5!Y(n=X(IC6YaGVuqmGvn{DKfZ%c|>oDm}L}JC~eErKa@;HcBNY zZq6qc<`Xlix!L&za)bN&IGC%P=8g2H@~FtHwph!ApigX delta 1265 zcmY*Z&2Jk;6yLYD~@oZA3_Szk< zfgp>jO?oNxP^Kr~M&XErEVvLM!2vFn5O6>;2ZXrr4{+hcytM;mSNnUv`OSOtX6DW8 zkMc+Bk+|FK_|E!$c7IY3{t%veB+gg(SAFMUtZ&T9VE|WL)QdNd_^GL z+3=Bv2&9MYf^R1c0=~R07Nx9|6o{AjP6XmphmK8IPdlcU^qmOV2zi$Hxjjb$q@UYi zB9Q?SJb~;886txu#MvkjGeR`dcmlscVl$?fDzQqTGPzeP6v^aVT)%a=P>rKxe99ZD zM#?ls)mt^Ss#jx`T>fV6K&`T$O+Vaz`vZAxJvFf^XOe3#CjMh*>g;p#Z57#>Iy1Z2 zR$EePBbh?Mu!d87UCy9l*ejXUvkYyTK+C=TDT5haQf~8VI-QVI!>~J+cVYNrcL%^W z>$JYsH^n!d#yCVxbOw1#V0Wz%P}rx|_uc1FwYNQ(Y+HhSR2@C!xT8 zvVRDR4b9<$xvHA4(Sm+7bwe)|BL&T9tCeC--!IeBn>nf#w1cT=hmp9I@jUz78HH)~ ztFwOsr_)xEO(2XREFcUZ7`ZJxx8w@K1$N050?HKEO4kVQjRGA-Bhpd!nd=3g5jKlq zafEqqnlzb)AS`EfU zE%bSGOCT6g)9g=w9Gq6Z^Ob_^()*XjVV%A;Q+v+(6e$p+CWPixisv^*p#@)dJ zME_s8s#Yi!s#RXBe{1HZ1m`=?yy0=#*v=5PjiOvcwv6E95Op=p)pGvkQ$;qGYMiGP z^fHz|%^rm1E+_E2Kh8zLX9gRv-^1Q+uV@Arn4yzf(b^%>5_3wDf2`?Hl>M4sqpG4% z5eGUzxX5Jb<(N?koKmwlPt}~RDn#AS)rz{3FKfE`mfm!2WR$IIFKx-2nM|5}Bl&n? zf03rf=pK$DV`xWt?@-O_bO)8!5q1%bm6uq2XoO#$>`)@;FnTX?Pu-VOI6nABmP@c)oXsm3{i&!K*?~@!iPdY9HSO9={ zZ6unohEOG((<@c;yi^L$3-Vu@o9M^C{MU1rf(`FpL-%CpA; z>9QV$`PZ$z>0F}ZR;OLl9qQ4cpT$x&ds}zj-hIFC^|$YCeX!eCPLxJ0l|Boo!jOw{ z_8^ljA-GVLBDSjc$D{J3Z7C~=Q&lO_Rhan+eWthKVne6$K#x?b*)SS5s+ui?O$XVt zz2#5M4Nza9LoJS)UbjtgSx>6=pQz>uXTP1FqSsDETWSgyZsLEHHv48}7rn9w;VKZo z4Kg7plO6;*Lz%P17k@@qPVL1SB=@|4XMbLNg02^@sYqc3xUD2&XW6RN+`3)Zf?4@6 zAcA)A9}1|DxTfI@*ZdLLMla-lkd0~KdI4-(0OvKRMiBdHno#)}4+WH5TmiTWunqvU z${qihT!L*j%dG*uCa1+0Ciluov7`*(_H%o;S>7 zCaC8LQ=6-5%7X(cg#{Z7#Z?Y{7|@Z7I7`dgSNUL{22udOsy(36mr@iJE}MBqQp$ck P;b9ij+`YPN;YI6Tbxt)R delta 1265 zcma)6O>ERw5Pr}0X1#ye>_#Dwrtp@8!b)KmHAQelB`M+(l|UinVqE)e;$+ue#&4r0 zS}7_)LL4LCIH4XY<}NWJ*ldpY#h19ax4A|Z-spY%SDJu}}M&o}n&+)r~; zv!zo0W%ku_{~Tj~utUp2`x@?eVR!2CX@AJiK4#0g8_c);++*hFWOm0~&im$VR?qMD z7q-1axs2n@bxO7o6kB6E4CDCLt-QdsC=~>9LkhJjh1Ua+p%N_QBR2=6umIONExdjTxn>oI!`T1y|Kq2i-&3W`&LtRy3KCTz4(1EX!{qx znpF?iuEewSNN;CDhJFN1kPmxE7dN}Ex9+aUIB5=_`n>pWQ4TQ=(|Z^Q%z_-^ufM-9 z&X>?ghn-ltpd2p>L+Poym0GcEw}6~bASe=iC<~|?sqHuczJ}vGNEU~88)XU^A)vH6 zhbq}ea~r5-XQ0q;9rh#3G_fGVvrjSfIZByv`OkxQ<*#}2V`bu75rJ?; zs~x#&hU}mv0;T04xoM%2t_XV_34tdz+;&fjwv1z(05=p{5~6)IDRg1$YVxkqs1T8+ zYygeZ)>3l4de^$tsArPB>g0Gv`_kN<&90mWh#<}1Mc(Ak>SyOZ?jDeWYq;aH2&`c9 zA*0Hz!Iz^Cj2W#EX@#B7)5U;Eyrfx@9;fcG5`!0G+x*Ibuv#!nr@?>9I8fu?@mdAB zAwxi;bd1`AzfQjRKVfesUhyyVpy`uOQq5*32#=%uZ89-0>sSigA2uok6WkwQnx0J| z9Fv+n5jXi*@>(p_I9VIw{kQThQ8^;}~RwG|`83g%i1k`Iyo7!E7x)RhT;6H}J zd4dClv_&6=?&BC5F>%}9Sf*u+4B1xkY;nXcm+XRFDpvP3DkM*9r!z2wamg>Wi8Hz^ SYUsWeN6C}7wKJw^Xa50owml#BXcBCHd&hBVN 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 literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bdcffc7de9ecf361fe127f8b9193ea8ce617d8b7 GIT binary patch literal 1615 zcmd5+QEMAV5Z=8zoz7>w4Wun`N?}t9tsWv7+^1qpLM%w2xQ%7vA_!u2yRz5WyH$2q zc4W>kRiSwc{Rw?6>05t9|HHlZDSshPnYoJ{6+-D-yJ$vpyEC&h-+Xsl>+9*S>7T=w zEkgbxODhEX4v6~(lpum?lG7p0gJF<|!!VDA5hY?pgd+Nh4qGA>EfIqii&fDU30Q3r z3`l3~6@>(ys7mkO9gGJ3Z~ONSsthK(iTr(9`1){;%E$r)!_InT_5Ig>q+-lYr{#F?pArr=u7 z!N;lM2qGF6rY3C4os)v8qRaNBpV`8_%T#B0n~nKn?pekQyjm4rTAq0bJX8LdsXUiL zaWD0}%g%3ouepbcb0&;*tT3J(^HV68xyuQ}6QyNgGMpB!03-sr4&pusbwoCmc;8O`{l6I4NWvkITcIqb#_V!x5s+dZF8 zds8*NJ)S8oZg2AZWIW%R<5n#rz*ZRBn^~>Zc&j(_O83qH{qA)BI^9NaGm}quHsC&o zwZU*b+@(2xOO{WTt@A65{pe%=_9UZvTrT&P{BBy=S3!~2wki8 zF?Za1YeV!+tUQ8UX{)$FuG6YoI1gu$oK@SaT$-7$k}F^%Jhp3a+M%_RT}RLB?hBf2De{A|5h{NsO=2M4y3&tKo?3O|btpG`}xFb7qzQUqFL} zcv;|#-ir->0RIV_53aDmO!A8*a6ZLQy7%^%R4bR{boCohQ@h6A;w8-}5KxPOOEW;0 YHSA5cb0cP2?%)gWVo*1d^rN)>1{T_{{r~^~ literal 0 HcmV?d00001 diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/connection.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/connection.py similarity index 84% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/connection.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/util/connection.py index 5e76135..bf699cf 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/connection.py +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/connection.py @@ -1,13 +1,7 @@ from __future__ import absolute_import import socket -try: - from select import poll, POLLIN -except ImportError: # `poll` doesn't exist on OSX and other platforms - poll = False - try: - from select import select - except ImportError: # `select` doesn't exist on AppEngine. - select = False +from .wait import wait_for_read +from .selectors import HAS_SELECT, SelectorError def is_connection_dropped(conn): # Platform-specific @@ -26,22 +20,13 @@ def is_connection_dropped(conn): # Platform-specific if sock is None: # Connection already closed (such as by httplib). return True - if not poll: - if not select: # Platform-specific: AppEngine - return False + if not HAS_SELECT: + return False - try: - return select([sock], [], [], 0.0)[0] - except socket.error: - return True - - # This version is better on platforms that support it. - p = poll() - p.register(sock, POLLIN) - for (fno, ev) in p.poll(0.0): - if fno == sock.fileno(): - # Either data is buffered (bad), or the connection is dropped. - return True + try: + return bool(wait_for_read(sock, timeout=0.0)) + except SelectorError: + return True # This function is copied from socket.py in the Python 2.7 standard @@ -141,4 +126,5 @@ def _has_ipv6(host): sock.close() return has_ipv6 + HAS_IPV6 = _has_ipv6('::1') diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/request.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/request.py similarity index 56% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/request.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/util/request.py index 7377931..3ddfcd5 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/request.py +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/request.py @@ -1,9 +1,11 @@ from __future__ import absolute_import from base64 import b64encode -from ..packages.six import b +from ..packages.six import b, integer_types +from ..exceptions import UnrewindableBodyError ACCEPT_ENCODING = 'gzip,deflate' +_FAILEDTELL = object() def make_headers(keep_alive=None, accept_encoding=None, user_agent=None, @@ -70,3 +72,47 @@ def make_headers(keep_alive=None, accept_encoding=None, user_agent=None, headers['cache-control'] = 'no-cache' return headers + + +def set_file_position(body, pos): + """ + If a position is provided, move file to that point. + Otherwise, we'll attempt to record a position for future use. + """ + if pos is not None: + rewind_body(body, pos) + elif getattr(body, 'tell', None) is not None: + try: + pos = body.tell() + except (IOError, OSError): + # This differentiates from None, allowing us to catch + # a failed `tell()` later when trying to rewind the body. + pos = _FAILEDTELL + + return pos + + +def rewind_body(body, body_pos): + """ + Attempt to rewind body to a certain position. + Primarily used for request redirects and retries. + + :param body: + File-like object that supports seek. + + :param int pos: + Position to seek to in file. + """ + body_seek = getattr(body, 'seek', None) + if body_seek is not None and isinstance(body_pos, integer_types): + try: + body_seek(body_pos) + except (IOError, OSError): + raise UnrewindableBodyError("An error occurred when rewinding request " + "body for redirect/retry.") + elif body_pos is _FAILEDTELL: + raise UnrewindableBodyError("Unable to record file position for rewinding " + "request body during a redirect/retry.") + else: + raise ValueError("body_pos must be of type integer, " + "instead it was %s." % type(body_pos)) diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/response.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/response.py similarity index 92% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/response.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/util/response.py index 0b5c75c..67cf730 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/response.py +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/response.py @@ -12,6 +12,13 @@ def is_fp_closed(obj): The file-like object to check. """ + try: + # Check `isclosed()` first, in case Python3 doesn't set `closed`. + # GH Issue #928 + return obj.isclosed() + except AttributeError: + pass + try: # Check via the official file-like-object way. return obj.closed diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/retry.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/retry.py similarity index 65% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/retry.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/util/retry.py index d379833..c603cb4 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/retry.py +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/retry.py @@ -1,6 +1,10 @@ from __future__ import absolute_import import time import logging +from collections import namedtuple +from itertools import takewhile +import email +import re from ..exceptions import ( ConnectTimeoutError, @@ -8,12 +12,17 @@ from ..exceptions import ( ProtocolError, ReadTimeoutError, ResponseError, + InvalidHeader, ) from ..packages import six log = logging.getLogger(__name__) +# Data structure for representing the metadata of requests that result in a retry. +RequestHistory = namedtuple('RequestHistory', ["method", "url", "error", + "status", "redirect_location"]) + class Retry(object): """ Retry configuration. @@ -76,6 +85,14 @@ class Retry(object): Set to ``False`` to disable and imply ``raise_on_redirect=False``. + :param int status: + How many times to retry on bad status codes. + + These are retries made on responses, where status code matches + ``status_forcelist``. + + Set to ``0`` to fail on the first retry of this type. + :param iterable method_whitelist: Set of uppercased HTTP method verbs that we should retry on. @@ -113,22 +130,34 @@ class Retry(object): whether we should raise an exception, or return a response, if status falls in ``status_forcelist`` range and retries have been exhausted. + + :param tuple history: The history of the request encountered during + each call to :meth:`~Retry.increment`. The list is in the order + the requests occurred. Each list item is of class :class:`RequestHistory`. + + :param bool respect_retry_after_header: + Whether to respect Retry-After header on status codes defined as + :attr:`Retry.RETRY_AFTER_STATUS_CODES` or not. + """ DEFAULT_METHOD_WHITELIST = frozenset([ 'HEAD', 'GET', 'PUT', 'DELETE', 'OPTIONS', 'TRACE']) + RETRY_AFTER_STATUS_CODES = frozenset([413, 429, 503]) + #: Maximum backoff time. BACKOFF_MAX = 120 - def __init__(self, total=10, connect=None, read=None, redirect=None, + def __init__(self, total=10, connect=None, read=None, redirect=None, status=None, method_whitelist=DEFAULT_METHOD_WHITELIST, status_forcelist=None, backoff_factor=0, raise_on_redirect=True, raise_on_status=True, - _observed_errors=0): + history=None, respect_retry_after_header=True): self.total = total self.connect = connect self.read = read + self.status = status if redirect is False or total is False: redirect = 0 @@ -140,18 +169,19 @@ class Retry(object): self.backoff_factor = backoff_factor self.raise_on_redirect = raise_on_redirect self.raise_on_status = raise_on_status - self._observed_errors = _observed_errors # TODO: use .history instead? + self.history = history or tuple() + self.respect_retry_after_header = respect_retry_after_header def new(self, **kw): params = dict( total=self.total, - connect=self.connect, read=self.read, redirect=self.redirect, + connect=self.connect, read=self.read, redirect=self.redirect, status=self.status, method_whitelist=self.method_whitelist, status_forcelist=self.status_forcelist, backoff_factor=self.backoff_factor, raise_on_redirect=self.raise_on_redirect, raise_on_status=self.raise_on_status, - _observed_errors=self._observed_errors, + history=self.history, ) params.update(kw) return type(self)(**params) @@ -175,23 +205,71 @@ class Retry(object): :rtype: float """ - if self._observed_errors <= 1: + # We want to consider only the last consecutive errors sequence (Ignore redirects). + consecutive_errors_len = len(list(takewhile(lambda x: x.redirect_location is None, + reversed(self.history)))) + if consecutive_errors_len <= 1: return 0 - backoff_value = self.backoff_factor * (2 ** (self._observed_errors - 1)) + backoff_value = self.backoff_factor * (2 ** (consecutive_errors_len - 1)) return min(self.BACKOFF_MAX, backoff_value) - def sleep(self): - """ Sleep between retry attempts using an exponential backoff. + def parse_retry_after(self, retry_after): + # Whitespace: https://tools.ietf.org/html/rfc7230#section-3.2.4 + if re.match(r"^\s*[0-9]+\s*$", retry_after): + seconds = int(retry_after) + else: + retry_date_tuple = email.utils.parsedate(retry_after) + if retry_date_tuple is None: + raise InvalidHeader("Invalid Retry-After header: %s" % retry_after) + retry_date = time.mktime(retry_date_tuple) + seconds = retry_date - time.time() - By default, the backoff factor is 0 and this method will return - immediately. - """ + if seconds < 0: + seconds = 0 + + return seconds + + def get_retry_after(self, response): + """ Get the value of Retry-After in seconds. """ + + retry_after = response.getheader("Retry-After") + + if retry_after is None: + return None + + return self.parse_retry_after(retry_after) + + def sleep_for_retry(self, response=None): + retry_after = self.get_retry_after(response) + if retry_after: + time.sleep(retry_after) + return True + + return False + + def _sleep_backoff(self): backoff = self.get_backoff_time() if backoff <= 0: return time.sleep(backoff) + def sleep(self, response=None): + """ Sleep between retry attempts. + + This method will respect a server's ``Retry-After`` response header + and sleep the duration of the time requested. If that is not present, it + will use an exponential backoff. By default, the backoff factor is 0 and + this method will return immediately. + """ + + if response: + slept = self.sleep_for_retry(response) + if slept: + return + + self._sleep_backoff() + def _is_connection_error(self, err): """ Errors when we're fairly sure that the server did not receive the request, so it should be safe to retry. @@ -204,17 +282,34 @@ class Retry(object): """ return isinstance(err, (ReadTimeoutError, ProtocolError)) - def is_forced_retry(self, method, status_code): - """ Is this method/status code retryable? (Based on method/codes whitelists) + def _is_method_retryable(self, method): + """ Checks if a given HTTP method should be retried upon, depending if + it is included on the method whitelist. """ if self.method_whitelist and method.upper() not in self.method_whitelist: return False - return self.status_forcelist and status_code in self.status_forcelist + return True + + def is_retry(self, method, status_code, has_retry_after=False): + """ Is this method/status code retryable? (Based on whitelists and control + variables such as the number of total retries to allow, whether to + respect the Retry-After header, whether this header is present, and + whether the returned status code is on the list of status codes to + be retried upon on the presence of the aforementioned header) + """ + if not self._is_method_retryable(method): + return False + + if self.status_forcelist and status_code in self.status_forcelist: + return True + + return (self.total and self.respect_retry_after_header and + has_retry_after and (status_code in self.RETRY_AFTER_STATUS_CODES)) def is_exhausted(self): """ Are we out of retries? """ - retry_counts = (self.total, self.connect, self.read, self.redirect) + retry_counts = (self.total, self.connect, self.read, self.redirect, self.status) retry_counts = list(filter(None, retry_counts)) if not retry_counts: return False @@ -241,11 +336,13 @@ class Retry(object): if total is not None: total -= 1 - _observed_errors = self._observed_errors connect = self.connect read = self.read redirect = self.redirect + status_count = self.status cause = 'unknown' + status = None + redirect_location = None if error and self._is_connection_error(error): # Connect retry? @@ -253,35 +350,39 @@ class Retry(object): raise six.reraise(type(error), error, _stacktrace) elif connect is not None: connect -= 1 - _observed_errors += 1 elif error and self._is_read_error(error): # Read retry? - if read is False: + if read is False or not self._is_method_retryable(method): raise six.reraise(type(error), error, _stacktrace) elif read is not None: read -= 1 - _observed_errors += 1 elif response and response.get_redirect_location(): # Redirect retry? if redirect is not None: redirect -= 1 cause = 'too many redirects' + redirect_location = response.get_redirect_location() + status = response.status else: # Incrementing because of a server error like a 500 in # status_forcelist and a the given method is in the whitelist - _observed_errors += 1 cause = ResponseError.GENERIC_ERROR if response and response.status: + if status_count is not None: + status_count -= 1 cause = ResponseError.SPECIFIC_ERROR.format( status_code=response.status) + status = response.status + + history = self.history + (RequestHistory(method, url, error, status, redirect_location),) new_retry = self.new( total=total, - connect=connect, read=read, redirect=redirect, - _observed_errors=_observed_errors) + connect=connect, read=read, redirect=redirect, status=status_count, + history=history) if new_retry.is_exhausted(): raise MaxRetryError(_pool, url, error or ResponseError(cause)) @@ -292,7 +393,7 @@ class Retry(object): def __repr__(self): return ('{cls.__name__}(total={self.total}, connect={self.connect}, ' - 'read={self.read}, redirect={self.redirect})').format( + 'read={self.read}, redirect={self.redirect}, status={self.status})').format( cls=type(self), self=self) diff --git a/lib/python3.6/site-packages/pip/_vendor/urllib3/util/selectors.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/selectors.py new file mode 100644 index 0000000..d75cb26 --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/selectors.py @@ -0,0 +1,581 @@ +# Backport of selectors.py from Python 3.5+ to support Python < 3.4 +# Also has the behavior specified in PEP 475 which is to retry syscalls +# in the case of an EINTR error. This module is required because selectors34 +# does not follow this behavior and instead returns that no dile descriptor +# events have occurred rather than retry the syscall. The decision to drop +# support for select.devpoll is made to maintain 100% test coverage. + +import errno +import math +import select +import socket +import sys +import time +from collections import namedtuple, Mapping + +try: + monotonic = time.monotonic +except (AttributeError, ImportError): # Python 3.3< + monotonic = time.time + +EVENT_READ = (1 << 0) +EVENT_WRITE = (1 << 1) + +HAS_SELECT = True # Variable that shows whether the platform has a selector. +_SYSCALL_SENTINEL = object() # Sentinel in case a system call returns None. +_DEFAULT_SELECTOR = None + + +class SelectorError(Exception): + def __init__(self, errcode): + super(SelectorError, self).__init__() + self.errno = errcode + + def __repr__(self): + return "".format(self.errno) + + def __str__(self): + return self.__repr__() + + +def _fileobj_to_fd(fileobj): + """ Return a file descriptor from a file object. If + given an integer will simply return that integer back. """ + if isinstance(fileobj, int): + fd = fileobj + else: + try: + fd = int(fileobj.fileno()) + except (AttributeError, TypeError, ValueError): + raise ValueError("Invalid file object: {0!r}".format(fileobj)) + if fd < 0: + raise ValueError("Invalid file descriptor: {0}".format(fd)) + return fd + + +# Determine which function to use to wrap system calls because Python 3.5+ +# already handles the case when system calls are interrupted. +if sys.version_info >= (3, 5): + def _syscall_wrapper(func, _, *args, **kwargs): + """ This is the short-circuit version of the below logic + because in Python 3.5+ all system calls automatically restart + and recalculate their timeouts. """ + try: + return func(*args, **kwargs) + except (OSError, IOError, select.error) as e: + errcode = None + if hasattr(e, "errno"): + errcode = e.errno + raise SelectorError(errcode) +else: + def _syscall_wrapper(func, recalc_timeout, *args, **kwargs): + """ Wrapper function for syscalls that could fail due to EINTR. + All functions should be retried if there is time left in the timeout + in accordance with PEP 475. """ + timeout = kwargs.get("timeout", None) + if timeout is None: + expires = None + recalc_timeout = False + else: + timeout = float(timeout) + if timeout < 0.0: # Timeout less than 0 treated as no timeout. + expires = None + else: + expires = monotonic() + timeout + + args = list(args) + if recalc_timeout and "timeout" not in kwargs: + raise ValueError( + "Timeout must be in args or kwargs to be recalculated") + + result = _SYSCALL_SENTINEL + while result is _SYSCALL_SENTINEL: + try: + result = func(*args, **kwargs) + # OSError is thrown by select.select + # IOError is thrown by select.epoll.poll + # select.error is thrown by select.poll.poll + # Aren't we thankful for Python 3.x rework for exceptions? + except (OSError, IOError, select.error) as e: + # select.error wasn't a subclass of OSError in the past. + errcode = None + if hasattr(e, "errno"): + errcode = e.errno + elif hasattr(e, "args"): + errcode = e.args[0] + + # Also test for the Windows equivalent of EINTR. + is_interrupt = (errcode == errno.EINTR or (hasattr(errno, "WSAEINTR") and + errcode == errno.WSAEINTR)) + + if is_interrupt: + if expires is not None: + current_time = monotonic() + if current_time > expires: + raise OSError(errno=errno.ETIMEDOUT) + if recalc_timeout: + if "timeout" in kwargs: + kwargs["timeout"] = expires - current_time + continue + if errcode: + raise SelectorError(errcode) + else: + raise + return result + + +SelectorKey = namedtuple('SelectorKey', ['fileobj', 'fd', 'events', 'data']) + + +class _SelectorMapping(Mapping): + """ Mapping of file objects to selector keys """ + + def __init__(self, selector): + self._selector = selector + + def __len__(self): + return len(self._selector._fd_to_key) + + def __getitem__(self, fileobj): + try: + fd = self._selector._fileobj_lookup(fileobj) + return self._selector._fd_to_key[fd] + except KeyError: + raise KeyError("{0!r} is not registered.".format(fileobj)) + + def __iter__(self): + return iter(self._selector._fd_to_key) + + +class BaseSelector(object): + """ Abstract Selector class + + A selector supports registering file objects to be monitored + for specific I/O events. + + A file object is a file descriptor or any object with a + `fileno()` method. An arbitrary object can be attached to the + file object which can be used for example to store context info, + a callback, etc. + + A selector can use various implementations (select(), poll(), epoll(), + and kqueue()) depending on the platform. The 'DefaultSelector' class uses + the most efficient implementation for the current platform. + """ + def __init__(self): + # Maps file descriptors to keys. + self._fd_to_key = {} + + # Read-only mapping returned by get_map() + self._map = _SelectorMapping(self) + + def _fileobj_lookup(self, fileobj): + """ Return a file descriptor from a file object. + This wraps _fileobj_to_fd() to do an exhaustive + search in case the object is invalid but we still + have it in our map. Used by unregister() so we can + unregister an object that was previously registered + even if it is closed. It is also used by _SelectorMapping + """ + try: + return _fileobj_to_fd(fileobj) + except ValueError: + + # Search through all our mapped keys. + for key in self._fd_to_key.values(): + if key.fileobj is fileobj: + return key.fd + + # Raise ValueError after all. + raise + + def register(self, fileobj, events, data=None): + """ Register a file object for a set of events to monitor. """ + if (not events) or (events & ~(EVENT_READ | EVENT_WRITE)): + raise ValueError("Invalid events: {0!r}".format(events)) + + key = SelectorKey(fileobj, self._fileobj_lookup(fileobj), events, data) + + if key.fd in self._fd_to_key: + raise KeyError("{0!r} (FD {1}) is already registered" + .format(fileobj, key.fd)) + + self._fd_to_key[key.fd] = key + return key + + def unregister(self, fileobj): + """ Unregister a file object from being monitored. """ + try: + key = self._fd_to_key.pop(self._fileobj_lookup(fileobj)) + except KeyError: + raise KeyError("{0!r} is not registered".format(fileobj)) + + # Getting the fileno of a closed socket on Windows errors with EBADF. + except socket.error as e: # Platform-specific: Windows. + if e.errno != errno.EBADF: + raise + else: + for key in self._fd_to_key.values(): + if key.fileobj is fileobj: + self._fd_to_key.pop(key.fd) + break + else: + raise KeyError("{0!r} is not registered".format(fileobj)) + return key + + def modify(self, fileobj, events, data=None): + """ Change a registered file object monitored events and data. """ + # NOTE: Some subclasses optimize this operation even further. + try: + key = self._fd_to_key[self._fileobj_lookup(fileobj)] + except KeyError: + raise KeyError("{0!r} is not registered".format(fileobj)) + + if events != key.events: + self.unregister(fileobj) + key = self.register(fileobj, events, data) + + elif data != key.data: + # Use a shortcut to update the data. + key = key._replace(data=data) + self._fd_to_key[key.fd] = key + + return key + + def select(self, timeout=None): + """ Perform the actual selection until some monitored file objects + are ready or the timeout expires. """ + raise NotImplementedError() + + def close(self): + """ Close the selector. This must be called to ensure that all + underlying resources are freed. """ + self._fd_to_key.clear() + self._map = None + + def get_key(self, fileobj): + """ Return the key associated with a registered file object. """ + mapping = self.get_map() + if mapping is None: + raise RuntimeError("Selector is closed") + try: + return mapping[fileobj] + except KeyError: + raise KeyError("{0!r} is not registered".format(fileobj)) + + def get_map(self): + """ Return a mapping of file objects to selector keys """ + return self._map + + def _key_from_fd(self, fd): + """ Return the key associated to a given file descriptor + Return None if it is not found. """ + try: + return self._fd_to_key[fd] + except KeyError: + return None + + def __enter__(self): + return self + + def __exit__(self, *args): + self.close() + + +# Almost all platforms have select.select() +if hasattr(select, "select"): + class SelectSelector(BaseSelector): + """ Select-based selector. """ + def __init__(self): + super(SelectSelector, self).__init__() + self._readers = set() + self._writers = set() + + def register(self, fileobj, events, data=None): + key = super(SelectSelector, self).register(fileobj, events, data) + if events & EVENT_READ: + self._readers.add(key.fd) + if events & EVENT_WRITE: + self._writers.add(key.fd) + return key + + def unregister(self, fileobj): + key = super(SelectSelector, self).unregister(fileobj) + self._readers.discard(key.fd) + self._writers.discard(key.fd) + return key + + def _select(self, r, w, timeout=None): + """ Wrapper for select.select because timeout is a positional arg """ + return select.select(r, w, [], timeout) + + def select(self, timeout=None): + # Selecting on empty lists on Windows errors out. + if not len(self._readers) and not len(self._writers): + return [] + + timeout = None if timeout is None else max(timeout, 0.0) + ready = [] + r, w, _ = _syscall_wrapper(self._select, True, self._readers, + self._writers, timeout) + r = set(r) + w = set(w) + for fd in r | w: + events = 0 + if fd in r: + events |= EVENT_READ + if fd in w: + events |= EVENT_WRITE + + key = self._key_from_fd(fd) + if key: + ready.append((key, events & key.events)) + return ready + + +if hasattr(select, "poll"): + class PollSelector(BaseSelector): + """ Poll-based selector """ + def __init__(self): + super(PollSelector, self).__init__() + self._poll = select.poll() + + def register(self, fileobj, events, data=None): + key = super(PollSelector, self).register(fileobj, events, data) + event_mask = 0 + if events & EVENT_READ: + event_mask |= select.POLLIN + if events & EVENT_WRITE: + event_mask |= select.POLLOUT + self._poll.register(key.fd, event_mask) + return key + + def unregister(self, fileobj): + key = super(PollSelector, self).unregister(fileobj) + self._poll.unregister(key.fd) + return key + + def _wrap_poll(self, timeout=None): + """ Wrapper function for select.poll.poll() so that + _syscall_wrapper can work with only seconds. """ + if timeout is not None: + if timeout <= 0: + timeout = 0 + else: + # select.poll.poll() has a resolution of 1 millisecond, + # round away from zero to wait *at least* timeout seconds. + timeout = math.ceil(timeout * 1e3) + + result = self._poll.poll(timeout) + return result + + def select(self, timeout=None): + ready = [] + fd_events = _syscall_wrapper(self._wrap_poll, True, timeout=timeout) + for fd, event_mask in fd_events: + events = 0 + if event_mask & ~select.POLLIN: + events |= EVENT_WRITE + if event_mask & ~select.POLLOUT: + events |= EVENT_READ + + key = self._key_from_fd(fd) + if key: + ready.append((key, events & key.events)) + + return ready + + +if hasattr(select, "epoll"): + class EpollSelector(BaseSelector): + """ Epoll-based selector """ + def __init__(self): + super(EpollSelector, self).__init__() + self._epoll = select.epoll() + + def fileno(self): + return self._epoll.fileno() + + def register(self, fileobj, events, data=None): + key = super(EpollSelector, self).register(fileobj, events, data) + events_mask = 0 + if events & EVENT_READ: + events_mask |= select.EPOLLIN + if events & EVENT_WRITE: + events_mask |= select.EPOLLOUT + _syscall_wrapper(self._epoll.register, False, key.fd, events_mask) + return key + + def unregister(self, fileobj): + key = super(EpollSelector, self).unregister(fileobj) + try: + _syscall_wrapper(self._epoll.unregister, False, key.fd) + except SelectorError: + # This can occur when the fd was closed since registry. + pass + return key + + def select(self, timeout=None): + if timeout is not None: + if timeout <= 0: + timeout = 0.0 + else: + # select.epoll.poll() has a resolution of 1 millisecond + # but luckily takes seconds so we don't need a wrapper + # like PollSelector. Just for better rounding. + timeout = math.ceil(timeout * 1e3) * 1e-3 + timeout = float(timeout) + else: + timeout = -1.0 # epoll.poll() must have a float. + + # We always want at least 1 to ensure that select can be called + # with no file descriptors registered. Otherwise will fail. + max_events = max(len(self._fd_to_key), 1) + + ready = [] + fd_events = _syscall_wrapper(self._epoll.poll, True, + timeout=timeout, + maxevents=max_events) + for fd, event_mask in fd_events: + events = 0 + if event_mask & ~select.EPOLLIN: + events |= EVENT_WRITE + if event_mask & ~select.EPOLLOUT: + events |= EVENT_READ + + key = self._key_from_fd(fd) + if key: + ready.append((key, events & key.events)) + return ready + + def close(self): + self._epoll.close() + super(EpollSelector, self).close() + + +if hasattr(select, "kqueue"): + class KqueueSelector(BaseSelector): + """ Kqueue / Kevent-based selector """ + def __init__(self): + super(KqueueSelector, self).__init__() + self._kqueue = select.kqueue() + + def fileno(self): + return self._kqueue.fileno() + + def register(self, fileobj, events, data=None): + key = super(KqueueSelector, self).register(fileobj, events, data) + if events & EVENT_READ: + kevent = select.kevent(key.fd, + select.KQ_FILTER_READ, + select.KQ_EV_ADD) + + _syscall_wrapper(self._kqueue.control, False, [kevent], 0, 0) + + if events & EVENT_WRITE: + kevent = select.kevent(key.fd, + select.KQ_FILTER_WRITE, + select.KQ_EV_ADD) + + _syscall_wrapper(self._kqueue.control, False, [kevent], 0, 0) + + return key + + def unregister(self, fileobj): + key = super(KqueueSelector, self).unregister(fileobj) + if key.events & EVENT_READ: + kevent = select.kevent(key.fd, + select.KQ_FILTER_READ, + select.KQ_EV_DELETE) + try: + _syscall_wrapper(self._kqueue.control, False, [kevent], 0, 0) + except SelectorError: + pass + if key.events & EVENT_WRITE: + kevent = select.kevent(key.fd, + select.KQ_FILTER_WRITE, + select.KQ_EV_DELETE) + try: + _syscall_wrapper(self._kqueue.control, False, [kevent], 0, 0) + except SelectorError: + pass + + return key + + def select(self, timeout=None): + if timeout is not None: + timeout = max(timeout, 0) + + max_events = len(self._fd_to_key) * 2 + ready_fds = {} + + kevent_list = _syscall_wrapper(self._kqueue.control, True, + None, max_events, timeout) + + for kevent in kevent_list: + fd = kevent.ident + event_mask = kevent.filter + events = 0 + if event_mask == select.KQ_FILTER_READ: + events |= EVENT_READ + if event_mask == select.KQ_FILTER_WRITE: + events |= EVENT_WRITE + + key = self._key_from_fd(fd) + if key: + if key.fd not in ready_fds: + ready_fds[key.fd] = (key, events & key.events) + else: + old_events = ready_fds[key.fd][1] + ready_fds[key.fd] = (key, (events | old_events) & key.events) + + return list(ready_fds.values()) + + def close(self): + self._kqueue.close() + super(KqueueSelector, self).close() + + +if not hasattr(select, 'select'): # Platform-specific: AppEngine + HAS_SELECT = False + + +def _can_allocate(struct): + """ Checks that select structs can be allocated by the underlying + operating system, not just advertised by the select module. We don't + check select() because we'll be hopeful that most platforms that + don't have it available will not advertise it. (ie: GAE) """ + try: + # select.poll() objects won't fail until used. + if struct == 'poll': + p = select.poll() + p.poll(0) + + # All others will fail on allocation. + else: + getattr(select, struct)().close() + return True + except (OSError, AttributeError) as e: + return False + + +# Choose the best implementation, roughly: +# kqueue == epoll > poll > select. Devpoll not supported. (See above) +# select() also can't accept a FD > FD_SETSIZE (usually around 1024) +def DefaultSelector(): + """ This function serves as a first call for DefaultSelector to + detect if the select module is being monkey-patched incorrectly + by eventlet, greenlet, and preserve proper behavior. """ + global _DEFAULT_SELECTOR + if _DEFAULT_SELECTOR is None: + if _can_allocate('kqueue'): + _DEFAULT_SELECTOR = KqueueSelector + elif _can_allocate('epoll'): + _DEFAULT_SELECTOR = EpollSelector + elif _can_allocate('poll'): + _DEFAULT_SELECTOR = PollSelector + elif hasattr(select, 'select'): + _DEFAULT_SELECTOR = SelectSelector + else: # Platform-specific: AppEngine + raise ValueError('Platform does not have a selector') + return _DEFAULT_SELECTOR() diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/ssl_.py similarity index 90% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/util/ssl_.py index 4a64d7e..32fd9ed 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/ssl_.py @@ -11,8 +11,8 @@ from ..exceptions import SSLError, InsecurePlatformWarning, SNIMissingWarning SSLContext = None HAS_SNI = False -create_default_context = None IS_PYOPENSSL = False +IS_SECURETRANSPORT = False # Maps the length of a digest to a possible hash function producing this digest HASHFUNC_MAP = { @@ -61,16 +61,31 @@ except ImportError: # - https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/ # # The general intent is: -# - Prefer cipher suites that offer perfect forward secrecy (DHE/ECDHE), +# - Prefer TLS 1.3 cipher suites +# - prefer cipher suites that offer perfect forward secrecy (DHE/ECDHE), # - prefer ECDHE over DHE for better performance, -# - prefer any AES-GCM over any AES-CBC for better performance and security, -# - use 3DES as fallback which is secure but slow, +# - prefer any AES-GCM and ChaCha20 over any AES-CBC for better performance and +# security, +# - prefer AES-GCM over ChaCha20 because hardware-accelerated AES is common, # - disable NULL authentication, MD5 MACs and DSS for security reasons. -DEFAULT_CIPHERS = ( - 'ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+HIGH:' - 'DH+HIGH:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+HIGH:RSA+3DES:!aNULL:' - '!eNULL:!MD5' -) +DEFAULT_CIPHERS = ':'.join([ + 'TLS13-AES-256-GCM-SHA384', + 'TLS13-CHACHA20-POLY1305-SHA256', + 'TLS13-AES-128-GCM-SHA256', + 'ECDH+AESGCM', + 'ECDH+CHACHA20', + 'DH+AESGCM', + 'DH+CHACHA20', + 'ECDH+AES256', + 'DH+AES256', + 'ECDH+AES128', + 'DH+AES', + 'RSA+AESGCM', + 'RSA+AES', + '!aNULL', + '!eNULL', + '!MD5', +]) try: from ssl import SSLContext # Modern SSL? @@ -117,8 +132,8 @@ except ImportError: 'urllib3 from configuring SSL appropriately and may cause ' 'certain SSL connections to fail. You can upgrade to a newer ' 'version of Python to solve this. For more information, see ' - 'https://urllib3.readthedocs.io/en/latest/security.html' - '#insecureplatformwarning.', + 'https://urllib3.readthedocs.io/en/latest/advanced-usage.html' + '#ssl-warnings', InsecurePlatformWarning ) kwargs = { @@ -287,6 +302,9 @@ def ssl_wrap_socket(sock, keyfile=None, certfile=None, cert_reqs=None, """ context = ssl_context if context is None: + # Note: This branch of code and all the variables in it are no longer + # used by urllib3 itself. We should consider deprecating and removing + # this code. context = create_urllib3_context(ssl_version, cert_reqs, ciphers=ciphers) @@ -301,6 +319,9 @@ def ssl_wrap_socket(sock, keyfile=None, certfile=None, cert_reqs=None, if e.errno == errno.ENOENT: raise SSLError(e) raise + elif getattr(context, 'load_default_certs', None) is not None: + # try to load OS default certs; works well on Windows (require Python3.4+) + context.load_default_certs() if certfile: context.load_cert_chain(certfile, keyfile) @@ -313,8 +334,8 @@ def ssl_wrap_socket(sock, keyfile=None, certfile=None, cert_reqs=None, 'This may cause the server to present an incorrect TLS ' 'certificate, which can cause validation failures. You can upgrade to ' 'a newer version of Python to solve this. For more information, see ' - 'https://urllib3.readthedocs.io/en/latest/security.html' - '#snimissingwarning.', + 'https://urllib3.readthedocs.io/en/latest/advanced-usage.html' + '#ssl-warnings', SNIMissingWarning ) return context.wrap_socket(sock) diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/timeout.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/timeout.py similarity index 93% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/timeout.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/util/timeout.py index ff62f47..cec817e 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/timeout.py +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/timeout.py @@ -11,11 +11,8 @@ from ..exceptions import TimeoutStateError _Default = object() -def current_time(): - """ - Retrieve the current time. This function is mocked out in unit testing. - """ - return time.time() +# Use time.monotonic if available. +current_time = getattr(time, "monotonic", time.time) class Timeout(object): @@ -111,8 +108,8 @@ class Timeout(object): :param name: The name of the timeout attribute to validate. This is used to specify in error messages. :return: The validated and casted version of the given value. - :raises ValueError: If the type is not an integer or a float, or if it - is a numeric value less than zero. + :raises ValueError: If it is a numeric value less than or equal to + zero, or the type is not an integer, float, or None. """ if value is _Default: return cls.DEFAULT_TIMEOUT @@ -120,20 +117,23 @@ class Timeout(object): if value is None or value is cls.DEFAULT_TIMEOUT: return value + if isinstance(value, bool): + raise ValueError("Timeout cannot be a boolean value. It must " + "be an int, float or None.") try: float(value) except (TypeError, ValueError): raise ValueError("Timeout value %s was %s, but it must be an " - "int or float." % (name, value)) + "int, float or None." % (name, value)) try: - if value < 0: + if value <= 0: raise ValueError("Attempted to set %s timeout to %s, but the " "timeout cannot be set to a value less " - "than 0." % (name, value)) + "than or equal to 0." % (name, value)) except TypeError: # Python 3 raise ValueError("Timeout value %s was %s, but it must be an " - "int or float." % (name, value)) + "int, float or None." % (name, value)) return value diff --git a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/url.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/url.py similarity index 88% rename from lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/url.py rename to lib/python3.6/site-packages/pip/_vendor/urllib3/util/url.py index e996204..6b6f996 100644 --- a/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/url.py +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/url.py @@ -6,18 +6,27 @@ from ..exceptions import LocationParseError url_attrs = ['scheme', 'auth', 'host', 'port', 'path', 'query', 'fragment'] +# We only want to normalize urls with an HTTP(S) scheme. +# urllib3 infers URLs without a scheme (None) to be http. +NORMALIZABLE_SCHEMES = ('http', 'https', None) + class Url(namedtuple('Url', url_attrs)): """ Datastructure for representing an HTTP URL. Used as a return value for - :func:`parse_url`. + :func:`parse_url`. Both the scheme and host are normalized as they are + both case-insensitive according to RFC 3986. """ - slots = () + __slots__ = () def __new__(cls, scheme=None, auth=None, host=None, port=None, path=None, query=None, fragment=None): if path and not path.startswith('/'): path = '/' + path + if scheme: + scheme = scheme.lower() + if host and scheme in NORMALIZABLE_SCHEMES: + host = host.lower() return super(Url, cls).__new__(cls, scheme, auth, host, port, path, query, fragment) @@ -184,10 +193,14 @@ def parse_url(url): host = _host if port: - # If given, ports must be integers. + # If given, ports must be integers. No whitespace, no plus or + # minus prefixes, no non-integer digits such as ^2 (superscript). if not port.isdigit(): raise LocationParseError(url) - port = int(port) + try: + port = int(port) + except ValueError: + raise LocationParseError(url) else: # Blank ports are cool, too. (rfc3986#section-3.2.3) port = None @@ -211,7 +224,7 @@ def parse_url(url): def get_host(url): """ - Deprecated. Use :func:`.parse_url` instead. + Deprecated. Use :func:`parse_url` instead. """ p = parse_url(url) return p.scheme or 'http', p.hostname, p.port diff --git a/lib/python3.6/site-packages/pip/_vendor/urllib3/util/wait.py b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/wait.py new file mode 100644 index 0000000..cb396e5 --- /dev/null +++ b/lib/python3.6/site-packages/pip/_vendor/urllib3/util/wait.py @@ -0,0 +1,40 @@ +from .selectors import ( + HAS_SELECT, + DefaultSelector, + EVENT_READ, + EVENT_WRITE +) + + +def _wait_for_io_events(socks, events, timeout=None): + """ Waits for IO events to be available from a list of sockets + or optionally a single socket if passed in. Returns a list of + sockets that can be interacted with immediately. """ + if not HAS_SELECT: + raise ValueError('Platform does not have a selector') + if not isinstance(socks, list): + # Probably just a single socket. + if hasattr(socks, "fileno"): + socks = [socks] + # Otherwise it might be a non-list iterable. + else: + socks = list(socks) + with DefaultSelector() as selector: + for sock in socks: + selector.register(sock, events) + return [key[0].fileobj for key in + selector.select(timeout) if key[1] & events] + + +def wait_for_read(socks, timeout=None): + """ Waits for reading to be available from a list of sockets + or optionally a single socket if passed in. Returns a list of + sockets that can be read from immediately. """ + return _wait_for_io_events(socks, EVENT_READ, timeout) + + +def wait_for_write(socks, timeout=None): + """ Waits for writing to be available from a list of sockets + or optionally a single socket if passed in. Returns a list of + sockets that can be written to immediately. """ + return _wait_for_io_events(socks, EVENT_WRITE, timeout) diff --git a/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-36.pyc index 0ee8aa1e75f858ba3f6e5542bfa543fd943dae85..ec7d58b549dd394ba3b11bb03d71985eac341636 100644 GIT binary patch delta 29 kcmbQ`JP&N*O#N4c;O5@7S$!zBG0DDRZP5=M^ delta 29 kcmbQ`Jhe?p$kn3tDpA=gH>E4&;AiMd%xmBy8uAMrk81OSJ;3GV;^ delta 29 lcmX>he?p$kn3tF982d)HE4&;g#wCSW=EcUFAMrk81OSIx3AF$K diff --git a/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-36.pyc index f5f71947bcebeebf8302df845b3209c93468837f..c8571832fd997538d8b3ea37485f4a26e3954afa 100644 GIT binary patch delta 29 lcmX@ccZ`qCn3tDpA=gH>lZ+e&iMd%xmBy8uuQTSe0sw&+2`B&n delta 29 lcmX@ccZ`qCn3tF982d)HlZ+fD#wCSW=EcUFuQTSe0sw%v2<`v? diff --git a/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-36.pyc index f5bc7b659b19607fea88546bb6074a474a5d8f72..46140a09345363021c282f579d82a30de814e438 100644 GIT binary patch delta 29 lcmbQGK1-d=n3tDpA=gH>nM@o8iMd%xmBy8umot49004R;2{Qly delta 29 lcmbQGK1-d=n3tF982d)HnM@oe#wCSW=EcUFmot49004Qx2>Ad2 diff --git a/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-36.pyc b/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-36.pyc index 57b6e05f573b9a75893bc9598e3744a08b3a56c1..4a8ac824b0484b49b83ab9664faf3eae2740d270 100644 GIT binary patch delta 29 lcmdlkvR#DDn3tDpA=gH>E+!6x#N4c;O5@7SGnnSH0|0uQ2+RNg delta 29 lcmdlkvR#DDn3tF982d)HE+!5WRAvr?#N4c;O5@7S#mto~0D=Vwy8r+H delta 29 kcmaFE|AwEDrOFY#N4c;O5@7S9n86m0E9va+yDRo delta 29 kcmey$`IVE+n3tF982d)HDrOE7vO6gCcn#N4c;O5@7SMQq!c0d&p?eEvOeOO0=H=yD$hDDeE;olkVs2JarE%rv)!cEM0Cvs@l>h($ delta 29 kcmeCw>eOO0=H=x&#=enlE;omXaY2do?hiMd%xmBy8u-?3`2004Pm2*LmW delta 29 lcmbOxGEIcdn3tF982d)H2do?>#wCSW=EcUF-?3`2004OZ2#5dx diff --git a/lib/python3.6/site-packages/pip/commands/__pycache__/hash.cpython-36.pyc b/lib/python3.6/site-packages/pip/commands/__pycache__/hash.cpython-36.pyc index b70ef43c93be9d155d7e158851f32ece1336321b..7c90aa1b05d5cc8eeee3afd17bf693fd0285b205 100644 GIT binary patch delta 29 kcmZqXZ{}w+=H=yD$hDDe9y5nQVs2JarE%rvHO$wU0dPDBxBvhE delta 29 kcmZqXZ{}w+=H=x&#=enl9y5oDaYdrTY#iMd%xmBy8u-!Qo`0swr}2=f2{ delta 29 lcmdnQv5AAtn3tF982d)HdrTZA#wCSW=EcUF-!Qo`0swq+2)O_N diff --git a/lib/python3.6/site-packages/pip/commands/__pycache__/install.cpython-36.pyc b/lib/python3.6/site-packages/pip/commands/__pycache__/install.cpython-36.pyc index 5be14d67accc1615c551c83e1b1c6385d194b565..ca8649e9047d57a478aa2f05fa750256c34cc7a5 100644 GIT binary patch delta 29 kcmZqhZSZ9?=H=yD$hDE}m;i@CVs2JarE%rvD*|go0f24^e*gdg delta 29 kcmZqhZSZ9?=H=x&#=ep5m;i@~aYb?h7liMd%xmBy8u_pnRK0RWEs30VLD delta 29 lcmccWebt-In3tF982d)Hb?h7_#wCSW=EcUF_pnRK0RWDf2_FCe diff --git a/lib/python3.6/site-packages/pip/commands/__pycache__/search.cpython-36.pyc b/lib/python3.6/site-packages/pip/commands/__pycache__/search.cpython-36.pyc index 1939580d2d45a112df20ac4f7cdb00761e206e50..b0c05634e497916995b337a6839edc98d75fa35c 100644 GIT binary patch delta 29 kcmX@2a72O4n3tDpA=gGWDHaZc#N4c;O5@7S8Z0tA0CryoqyPW_ delta 29 kcmX@2a72O4n3tF982d&xDHaYBXl4$B#N4c;O5@7Snap{D0D>3@vj6}9 delta 29 kcmcbvd0msun3tF982d)HXl4!*n+a diff --git a/lib/python3.6/site-packages/pip/commands/__pycache__/uninstall.cpython-36.pyc b/lib/python3.6/site-packages/pip/commands/__pycache__/uninstall.cpython-36.pyc index cc8cdab31ba94e4098aae714313a7a00f4e563f1..adb172580e46e43c5e702431076f5efeeb082f07 100644 GIT binary patch delta 29 kcmZn=X%JyE=H=yD$hDEphLyu0F*hrz(ztT77wa|_0BGF@+yDRo delta 29 kcmZn=X%JyE=H=x&#=eowhLyv_xTG-4yx4fN7wa|_0BCy$q5uE@ diff --git a/lib/python3.6/site-packages/pip/commands/__pycache__/wheel.cpython-36.pyc b/lib/python3.6/site-packages/pip/commands/__pycache__/wheel.cpython-36.pyc index 704f13b23a496dae83eca0048a9fd85cdb6cbc84..63bff8e7616da7a1184fb4fafd17e83e45a38617 100644 GIT binary patch delta 29 lcmZ3dwN8u8n3tDpA=gH>>zo`0iMd%xmBy8upK^L~0|0{}2|NG* delta 29 lcmZ3dwN8u8n3tF982d)H>zo`W#wCSW=EcUFpK^L~0|0`+2?78B diff --git a/lib/python3.6/site-packages/pip/compat/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/compat/__pycache__/__init__.cpython-36.pyc index e720a5f7139e5128a8e3c5e6f8693a6571d7b69d..3bdbd29d9287eb45d4ec146a9cfbeb78a52aef42 100644 GIT binary patch delta 29 lcmew=_f?L~n3tDpA=gH>c4iKP#N4c;O5@7SQ<)!d0|1Jo37r4{ delta 29 lcmew=_f?L~n3tF982d)Hc4iI}ON<-_iMd%xmBy8uA27NY0|1Sj39$eG delta 29 lcmZ3IwIqwpn3tF982d)HON<;Q#wCSW=EcUFA27NY0|1RW33mVh diff --git a/lib/python3.6/site-packages/pip/download.py b/lib/python3.6/site-packages/pip/download.py index 54d3131..039e55a 100644 --- a/lib/python3.6/site-packages/pip/download.py +++ b/lib/python3.6/site-packages/pip/download.py @@ -43,7 +43,7 @@ from pip._vendor.requests.auth import AuthBase, HTTPBasicAuth from pip._vendor.requests.models import CONTENT_CHUNK_SIZE, Response from pip._vendor.requests.utils import get_netrc_auth from pip._vendor.requests.structures import CaseInsensitiveDict -from pip._vendor.requests.packages import urllib3 +from pip._vendor import urllib3 from pip._vendor.cachecontrol import CacheControlAdapter from pip._vendor.cachecontrol.caches import FileCache from pip._vendor.lockfile import LockError diff --git a/lib/python3.6/site-packages/pip/models/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/models/__pycache__/__init__.cpython-36.pyc index 84b4276297718683ef38049e142f10d0035f0e41..e750ea83686f46d5eb83fa76b674a456a5416697 100644 GIT binary patch delta 26 icmcc5c%PBYn3tDpA=gBE=CT6#N4c;O5@7SGZ+^$0swe;2($nI delta 29 lcmdnZwwsO3n3tF982d)HE=CR$||s!=H=yD$TgA8lfxh}H!G>qxN>5+5dc!42Mz!L delta 26 hcmeBV>||s!=H=x&#y*kFlf%Tgq%h08*mz>N5dcz<2Gjrm diff --git a/lib/python3.6/site-packages/pip/operations/__pycache__/check.cpython-36.pyc b/lib/python3.6/site-packages/pip/operations/__pycache__/check.cpython-36.pyc index 832fbe7765bd5ef12f051a1cda92a93a169948a3..afc430ba43be50c4d91a8aeae194be87c3aa94d3 100644 GIT binary patch delta 29 lcmbQhJ%O9en3tDpA=gH>ent+1#N4c;O5@7Sa~VG~0|0R(2*dyY delta 29 lcmbQhJ%O9en3tF982d)Hent)xoc2JDXn3tDpA=gH>OKcnliMd%xmBy8uAFw5|004ra2|EA) delta 29 lcmX>oc2JDXn3tF982d)HOKcn_#wCSW=EcUFAFw5|004qN2>}2A diff --git a/lib/python3.6/site-packages/pip/req/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/req/__pycache__/__init__.cpython-36.pyc index 8dee7cf45148b0b6d771dc19cb51a74e5aaa3ea1..1b61cc4ef5143854e94f494aa4d33a895efc5156 100644 GIT binary patch delta 28 jcmbQjJcXIfn3tDpA=gH>Kt>LO#N4c;O5@7O@rJ|mrNW6iMd%xmBy8uzcam&1pt-S3ZDP~ delta 29 lcmaFt_}G!nn3tF982d)HmrNWc#wCSW=EcUFzcam&1pt+F3S|HQ diff --git a/lib/python3.6/site-packages/pip/req/__pycache__/req_install.cpython-36.pyc b/lib/python3.6/site-packages/pip/req/__pycache__/req_install.cpython-36.pyc index 8bdfaadba806abddd15ecdac20113040b91efed4..ec500e2e430de9a8e9211835b8f37b38fc099e49 100644 GIT binary patch delta 31 ncmZ4SnsLQzMmA$!Uao~)8`<>OI1CbVvyv)}D>vJ)<>UhZqPhv= delta 31 ncmZ4SnsLQzMmA$!Uan*88`<>OI82O73bV|MjW^q{<>UhZqF4#3 diff --git a/lib/python3.6/site-packages/pip/req/__pycache__/req_set.cpython-36.pyc b/lib/python3.6/site-packages/pip/req/__pycache__/req_set.cpython-36.pyc index 42433ebaa8f1ef5fa94cd3b60a7c342712ad1d3c..0e270a300eec52aad343b5fe94ef9cdab25fde83 100644 GIT binary patch delta 31 ncmaF9nDO~yMmA$!Uao~)8`+9kI1CbVvyv)}D>pZ?r1=5>rb!Af delta 31 ncmaF9nDO~yMmA$!Uan*88`+9kI82O73bV|MjW;*4r1=5>rRNFt diff --git a/lib/python3.6/site-packages/pip/req/__pycache__/req_uninstall.cpython-36.pyc b/lib/python3.6/site-packages/pip/req/__pycache__/req_uninstall.cpython-36.pyc index 22b1af76c52f8c863122d6fee33f9978b328a469..86092c789409e981090d0d3ee4c87bf8a7e6cc69 100644 GIT binary patch delta 29 kcmeA&>@s9C=H=yD$hDE}IunOMVs2JarE%rvr%X#l0et`oS^xk5 delta 29 kcmeA&>@s9C=H=x&#=ep5IunP9aYuioNBRQ*nuZCK delta 31 ncmdnCmT}u!MmA$!Uan*88`=EXIZTX83bV|MjW@@#NBRQ*nj{HY diff --git a/lib/python3.6/site-packages/pip/utils/__pycache__/appdirs.cpython-36.pyc b/lib/python3.6/site-packages/pip/utils/__pycache__/appdirs.cpython-36.pyc index 1c4a58ff462f9016f332154331ea2155d202a888..f6ca731fc23f7e76723bcc4549d97f9c13bf7408 100644 GIT binary patch delta 29 kcmbPgGu4L8n3tDpA=gGWJ2no3#N4c;O5@7SK5Qq&0d`mjf&c&j delta 29 kcmbPgGu4L8n3tF982d&xJ2nmz|n3tDpA=gH>ql_E|iMd%xmBy8uFEa)(0|0mk2(bVF delta 29 lcmZ3?wU~>|n3tF982d)Hql_FT#wCSW=EcUFFEa)(0|0lX2zLMg diff --git a/lib/python3.6/site-packages/pip/utils/__pycache__/deprecation.cpython-36.pyc b/lib/python3.6/site-packages/pip/utils/__pycache__/deprecation.cpython-36.pyc index 5dd11cfabee12a09f06682295d9bdb800b853554..372c89a8dd993020bae7b66b5d37e1a5ec60a069 100644 GIT binary patch delta 29 lcmX@Wdw`eCn3tDpA=gH>S&SS8iMd%xmBy8uS1?Mj0swnB2xR~O delta 29 lcmX@Wdw`eCn3tF982d)HS&SSe#wCSW=EcUFS1?Mj0swl}2rB>p diff --git a/lib/python3.6/site-packages/pip/utils/__pycache__/encoding.cpython-36.pyc b/lib/python3.6/site-packages/pip/utils/__pycache__/encoding.cpython-36.pyc index ec05570af3cdbd32c67ce206003b6f9e07f4984a..fe0d22644308e22966fe9cb41d65c80e56cee1ea 100644 GIT binary patch delta 29 lcmeyx{)?T>n3tDpA=gH>=S&<1iMd%xmBy8uzcR5h0sxGV2~q$6 delta 29 lcmeyx{)?T>n3tF982d)H=S&35*;DiMd%xmBy8m=P|AX0CCm`xc~qF delta 28 kcmX@ka-4+l(9riMd%xmBy8uUoz%00|130319#K delta 29 lcmcb{b&ZS7n3tF982d)H+l(A0#wCSW=EcUFUoz%00|11;2_^sl diff --git a/lib/python3.6/site-packages/pip/utils/__pycache__/hashes.cpython-36.pyc b/lib/python3.6/site-packages/pip/utils/__pycache__/hashes.cpython-36.pyc index 7b7006604244adfa52aef3ba83e941c49ab01dd3..7ce29880a766265d71f9b8323468a689afac3ff6 100644 GIT binary patch delta 29 lcmZ1_xk{4Fn3tDpA=gH>n@k)AiMd%xmBy8upEDii1OR_X34j0q delta 29 lcmZ1_xk{4Fn3tF982d)Hn@k)g#wCSW=EcUFpEDii1OR^K2}S?_ diff --git a/lib/python3.6/site-packages/pip/utils/__pycache__/logging.cpython-36.pyc b/lib/python3.6/site-packages/pip/utils/__pycache__/logging.cpython-36.pyc index cf9a6e034ee180d4839c3f7b5da8926d63ddbbc9..6ca08f2627ee0ab7d6ba196c24f6bffb222fc030 100644 GIT binary patch delta 29 kcmdlbw@Z%An3tDpA=gH>GA0g##N4c;O5@7SElk^Z0DJ=o+5i9m delta 29 kcmdlbw@Z%An3tF982d)HGA0fa diff --git a/lib/python3.6/site-packages/pip/utils/__pycache__/outdated.cpython-36.pyc b/lib/python3.6/site-packages/pip/utils/__pycache__/outdated.cpython-36.pyc index 7f94cb3d2ef971e1c3856ade3489d0f74af2fcb9..97c38cfb1ffb7d03f5ca15b5e9c975622fe0451e 100644 GIT binary patch delta 29 kcmeyb@Lz$=n3tDpA=gGWEoKgb#N4c;O5@7S7R>Iv0EEm4WB>pF delta 29 kcmeyb@Lz$=n3tF982d&xEoKfAIv0EB7?DgXcg diff --git a/lib/python3.6/site-packages/pip/utils/__pycache__/packaging.cpython-36.pyc b/lib/python3.6/site-packages/pip/utils/__pycache__/packaging.cpython-36.pyc index eb188fdb4af4cabda1657216e1204e137b0de788..0c650bd80afcf76e6b3b65173ec2a05d4680c948 100644 GIT binary patch delta 29 kcmX@ae~6#Wn3tDpA=gGWPi78-#N4c;O5@7S;mp}A0CtH8ApigX delta 29 kcmX@ae~6#Wn3tF982d&xPi77iH_RLciMd%xmBy8ue=(OT0sxu73SIyJ delta 29 lcmaFw_1=rkn3tF982d)HH_RL+#wCSW=EcUFe=(OT0sxs_3M2pk diff --git a/lib/python3.6/site-packages/pip/vcs/__pycache__/__init__.cpython-36.pyc b/lib/python3.6/site-packages/pip/vcs/__pycache__/__init__.cpython-36.pyc index cef349d60aae3eafbb2751553ab3efcd5b0be7a1..b164e88d027c9b69d832b6d5e1c298f949d06208 100644 GIT binary patch delta 29 kcmcZ?b}x+0n3tDpA=gGWOJ)v(#N4c;O5@7S?#$vE0EyoSmjD0& delta 29 kcmcZ?b}x+0n3tF982d&xOJ)uet<8 diff --git a/lib/python3.6/site-packages/pip/vcs/__pycache__/bazaar.cpython-36.pyc b/lib/python3.6/site-packages/pip/vcs/__pycache__/bazaar.cpython-36.pyc index e196716ee0a7cc68fa25a7b4f89797503d0011e4..6e9720207c01ca8e89b39d9bb1264884680d047b 100644 GIT binary patch delta 29 kcmX>ub6kean3tDpA=gGW0cH+^#N4c;O5@7Sa?G0C0CjE$m;e9( delta 29 kcmX>ub6kean3tF982d&x0cH*p5*7}F#N4c;O5@7SO)NKM0gI9eoB#j- delta 29 kcmccZa@&Q?n3tF982d)H5*7{<|4bYPiMd%xmBy8ud6^$`0RWCb34Q