From c20534dd085abc527dec7f91ae0dd11c77ef7549 Mon Sep 17 00:00:00 2001 From: JotaChina Date: Sun, 7 Dec 2025 11:09:08 -0300 Subject: [PATCH] teste --- .gitignore | 3 +- .../handler/__pycache__/utils.cpython-312.pyc | Bin 3344 -> 3605 bytes scripts/handler/utils.py | 11 +- venv/bin/tqdm | 8 + .../python3.12/site-packages/OpenSSL/SSL.py | 3239 +++++++++++++ .../site-packages/OpenSSL/__init__.py | 31 + .../OpenSSL/__pycache__/SSL.cpython-312.pyc | Bin 0 -> 137340 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 609 bytes .../OpenSSL/__pycache__/_util.cpython-312.pyc | Bin 0 -> 4980 bytes .../__pycache__/crypto.cpython-312.pyc | Bin 0 -> 104886 bytes .../OpenSSL/__pycache__/debug.cpython-312.pyc | Bin 0 -> 1726 bytes .../OpenSSL/__pycache__/rand.cpython-312.pyc | Bin 0 -> 1848 bytes .../__pycache__/version.cpython-312.pyc | Bin 0 -> 710 bytes .../python3.12/site-packages/OpenSSL/_util.py | 129 + .../site-packages/OpenSSL/crypto.py | 2450 ++++++++++ .../python3.12/site-packages/OpenSSL/debug.py | 40 + .../python3.12/site-packages/OpenSSL/py.typed | 0 .../python3.12/site-packages/OpenSSL/rand.py | 50 + .../site-packages/OpenSSL/version.py | 28 + .../typing_extensions.cpython-312.pyc | Bin 0 -> 163756 bytes ...fi_backend.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 348808 bytes .../site-packages/_yaml/__init__.py | 33 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 868 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 500 -> 500 bytes .../__pycache__/_utilities.cpython-312.pyc | Bin 2727 -> 2727 bytes .../blinker/__pycache__/base.cpython-312.pyc | Bin 22004 -> 22004 bytes .../INSTALLER | 0 .../cffi-2.0.0.dist-info/METADATA | 68 + .../site-packages/cffi-2.0.0.dist-info/RECORD | 49 + .../site-packages/cffi-2.0.0.dist-info/WHEEL | 6 + .../cffi-2.0.0.dist-info/entry_points.txt | 2 + .../cffi-2.0.0.dist-info/licenses/AUTHORS | 8 + .../cffi-2.0.0.dist-info/licenses/LICENSE | 23 + .../cffi-2.0.0.dist-info/top_level.txt | 2 + .../python3.12/site-packages/cffi/__init__.py | 14 + .../cffi/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 553 bytes .../_imp_emulation.cpython-312.pyc | Bin 0 -> 3883 bytes .../_shimmed_dist_utils.cpython-312.pyc | Bin 0 -> 2089 bytes .../cffi/__pycache__/api.cpython-312.pyc | Bin 0 -> 50312 bytes .../backend_ctypes.cpython-312.pyc | Bin 0 -> 63555 bytes .../__pycache__/cffi_opcode.cpython-312.pyc | Bin 0 -> 6784 bytes .../__pycache__/commontypes.cpython-312.pyc | Bin 0 -> 3083 bytes .../cffi/__pycache__/cparser.cpython-312.pyc | Bin 0 -> 46843 bytes .../cffi/__pycache__/error.cpython-312.pyc | Bin 0 -> 1895 bytes .../__pycache__/ffiplatform.cpython-312.pyc | Bin 0 -> 5832 bytes .../cffi/__pycache__/lock.cpython-312.pyc | Bin 0 -> 525 bytes .../cffi/__pycache__/model.cpython-312.pyc | Bin 0 -> 30160 bytes .../__pycache__/pkgconfig.cpython-312.pyc | Bin 0 -> 6372 bytes .../__pycache__/recompiler.cpython-312.pyc | Bin 0 -> 81075 bytes .../setuptools_ext.cpython-312.pyc | Bin 0 -> 11261 bytes .../__pycache__/vengine_cpy.cpython-312.pyc | Bin 0 -> 50933 bytes .../__pycache__/vengine_gen.cpython-312.pyc | Bin 0 -> 34169 bytes .../cffi/__pycache__/verifier.cpython-312.pyc | Bin 0 -> 16224 bytes .../site-packages/cffi/_cffi_errors.h | 149 + .../site-packages/cffi/_cffi_include.h | 389 ++ .../site-packages/cffi/_embedding.h | 550 +++ .../site-packages/cffi/_imp_emulation.py | 83 + .../site-packages/cffi/_shimmed_dist_utils.py | 45 + venv/lib/python3.12/site-packages/cffi/api.py | 967 ++++ .../site-packages/cffi/backend_ctypes.py | 1121 +++++ .../site-packages/cffi/cffi_opcode.py | 187 + .../site-packages/cffi/commontypes.py | 82 + .../python3.12/site-packages/cffi/cparser.py | 1015 ++++ .../python3.12/site-packages/cffi/error.py | 31 + .../site-packages/cffi/ffiplatform.py | 113 + .../lib/python3.12/site-packages/cffi/lock.py | 30 + .../python3.12/site-packages/cffi/model.py | 618 +++ .../site-packages/cffi/parse_c_type.h | 181 + .../site-packages/cffi/pkgconfig.py | 121 + .../site-packages/cffi/recompiler.py | 1598 ++++++ .../site-packages/cffi/setuptools_ext.py | 229 + .../site-packages/cffi/vengine_cpy.py | 1087 +++++ .../site-packages/cffi/vengine_gen.py | 679 +++ .../python3.12/site-packages/cffi/verifier.py | 306 ++ .../INSTALLER | 0 .../METADATA | 2 +- .../RECORD | 16 +- .../WHEEL | 0 .../licenses/LICENSE.txt | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 4072 -> 4072 bytes .../click/__pycache__/_compat.cpython-312.pyc | Bin 24194 -> 24194 bytes .../__pycache__/_termui_impl.cpython-312.pyc | Bin 31611 -> 31616 bytes .../__pycache__/_textwrap.cpython-312.pyc | Bin 2425 -> 2425 bytes .../click/__pycache__/_utils.cpython-312.pyc | Bin 1200 -> 1200 bytes .../__pycache__/_winconsole.cpython-312.pyc | Bin 11770 -> 11770 bytes .../click/__pycache__/core.cpython-312.pyc | Bin 133431 -> 134666 bytes .../__pycache__/decorators.cpython-312.pyc | Bin 22137 -> 22137 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 14776 -> 14776 bytes .../__pycache__/formatting.cpython-312.pyc | Bin 13672 -> 13672 bytes .../click/__pycache__/globals.cpython-312.pyc | Bin 2965 -> 2965 bytes .../click/__pycache__/parser.cpython-312.pyc | Bin 20442 -> 20442 bytes .../shell_completion.cpython-312.pyc | Bin 23337 -> 23337 bytes .../click/__pycache__/termui.cpython-312.pyc | Bin 34523 -> 34651 bytes .../click/__pycache__/testing.cpython-312.pyc | Bin 27409 -> 27409 bytes .../click/__pycache__/types.cpython-312.pyc | Bin 50038 -> 50038 bytes .../click/__pycache__/utils.cpython-312.pyc | Bin 24879 -> 24879 bytes .../site-packages/click/_termui_impl.py | 15 +- .../python3.12/site-packages/click/core.py | 104 +- .../python3.12/site-packages/click/termui.py | 18 +- .../cryptography-46.0.3.dist-info/INSTALLER | 1 + .../cryptography-46.0.3.dist-info/METADATA | 139 + .../cryptography-46.0.3.dist-info/RECORD | 180 + .../cryptography-46.0.3.dist-info/WHEEL | 5 + .../licenses/LICENSE | 3 + .../licenses/LICENSE.APACHE | 202 + .../licenses/LICENSE.BSD | 27 + .../site-packages/cryptography/__about__.py | 17 + .../site-packages/cryptography/__init__.py | 13 + .../__pycache__/__about__.cpython-312.pyc | Bin 0 -> 465 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 375 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 2389 bytes .../__pycache__/fernet.cpython-312.pyc | Bin 0 -> 11139 bytes .../__pycache__/utils.cpython-312.pyc | Bin 0 -> 6565 bytes .../site-packages/cryptography/exceptions.py | 52 + .../site-packages/cryptography/fernet.py | 224 + .../cryptography/hazmat/__init__.py | 13 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 256 bytes .../hazmat/__pycache__/_oid.cpython-312.pyc | Bin 0 -> 21046 bytes .../site-packages/cryptography/hazmat/_oid.py | 356 ++ .../cryptography/hazmat/asn1/__init__.py | 10 + .../asn1/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 335 bytes .../asn1/__pycache__/asn1.cpython-312.pyc | Bin 0 -> 3630 bytes .../cryptography/hazmat/asn1/asn1.py | 116 + .../cryptography/hazmat/backends/__init__.py | 13 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 506 bytes .../hazmat/backends/openssl/__init__.py | 9 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 372 bytes .../__pycache__/backend.cpython-312.pyc | Bin 0 -> 13514 bytes .../hazmat/backends/openssl/backend.py | 302 ++ .../cryptography/hazmat/bindings/__init__.py | 3 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 209 bytes .../hazmat/bindings/_rust.abi3.so | Bin 0 -> 12955672 bytes .../hazmat/bindings/_rust/__init__.pyi | 37 + .../hazmat/bindings/_rust/_openssl.pyi | 8 + .../hazmat/bindings/_rust/asn1.pyi | 7 + .../bindings/_rust/declarative_asn1.pyi | 32 + .../hazmat/bindings/_rust/exceptions.pyi | 17 + .../hazmat/bindings/_rust/ocsp.pyi | 117 + .../bindings/_rust/openssl/__init__.pyi | 75 + .../hazmat/bindings/_rust/openssl/aead.pyi | 107 + .../hazmat/bindings/_rust/openssl/ciphers.pyi | 38 + .../hazmat/bindings/_rust/openssl/cmac.pyi | 18 + .../hazmat/bindings/_rust/openssl/dh.pyi | 51 + .../hazmat/bindings/_rust/openssl/dsa.pyi | 41 + .../hazmat/bindings/_rust/openssl/ec.pyi | 52 + .../hazmat/bindings/_rust/openssl/ed25519.pyi | 13 + .../hazmat/bindings/_rust/openssl/ed448.pyi | 13 + .../hazmat/bindings/_rust/openssl/hashes.pyi | 28 + .../hazmat/bindings/_rust/openssl/hmac.pyi | 22 + .../hazmat/bindings/_rust/openssl/kdf.pyi | 72 + .../hazmat/bindings/_rust/openssl/keys.pyi | 34 + .../bindings/_rust/openssl/poly1305.pyi | 15 + .../hazmat/bindings/_rust/openssl/rsa.pyi | 55 + .../hazmat/bindings/_rust/openssl/x25519.pyi | 13 + .../hazmat/bindings/_rust/openssl/x448.pyi | 13 + .../hazmat/bindings/_rust/pkcs12.pyi | 52 + .../hazmat/bindings/_rust/pkcs7.pyi | 50 + .../hazmat/bindings/_rust/test_support.pyi | 23 + .../hazmat/bindings/_rust/x509.pyi | 301 ++ .../hazmat/bindings/openssl/__init__.py | 3 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 217 bytes .../__pycache__/_conditional.cpython-312.pyc | Bin 0 -> 5793 bytes .../__pycache__/binding.cpython-312.pyc | Bin 0 -> 5618 bytes .../hazmat/bindings/openssl/_conditional.py | 207 + .../hazmat/bindings/openssl/binding.py | 137 + .../cryptography/hazmat/decrepit/__init__.py | 5 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 260 bytes .../hazmat/decrepit/ciphers/__init__.py | 5 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 268 bytes .../__pycache__/algorithms.cpython-312.pyc | Bin 0 -> 4800 bytes .../hazmat/decrepit/ciphers/algorithms.py | 112 + .../hazmat/primitives/__init__.py | 3 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 211 bytes .../__pycache__/_asymmetric.cpython-312.pyc | Bin 0 -> 817 bytes .../_cipheralgorithm.cpython-312.pyc | Bin 0 -> 2497 bytes .../_serialization.cpython-312.pyc | Bin 0 -> 7041 bytes .../__pycache__/cmac.cpython-312.pyc | Bin 0 -> 439 bytes .../__pycache__/constant_time.cpython-312.pyc | Bin 0 -> 677 bytes .../__pycache__/hashes.cpython-312.pyc | Bin 0 -> 8281 bytes .../__pycache__/hmac.cpython-312.pyc | Bin 0 -> 598 bytes .../__pycache__/keywrap.cpython-312.pyc | Bin 0 -> 7475 bytes .../__pycache__/padding.cpython-312.pyc | Bin 0 -> 3262 bytes .../__pycache__/poly1305.cpython-312.pyc | Bin 0 -> 451 bytes .../hazmat/primitives/_asymmetric.py | 19 + .../hazmat/primitives/_cipheralgorithm.py | 60 + .../hazmat/primitives/_serialization.py | 168 + .../hazmat/primitives/asymmetric/__init__.py | 3 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 222 bytes .../asymmetric/__pycache__/dh.cpython-312.pyc | Bin 0 -> 6084 bytes .../__pycache__/dsa.cpython-312.pyc | Bin 0 -> 6930 bytes .../asymmetric/__pycache__/ec.cpython-312.pyc | Bin 0 -> 17838 bytes .../__pycache__/ed25519.cpython-312.pyc | Bin 0 -> 5618 bytes .../__pycache__/ed448.cpython-312.pyc | Bin 0 -> 5661 bytes .../__pycache__/padding.cpython-312.pyc | Bin 0 -> 4832 bytes .../__pycache__/rsa.cpython-312.pyc | Bin 0 -> 10447 bytes .../__pycache__/types.cpython-312.pyc | Bin 0 -> 3171 bytes .../__pycache__/utils.cpython-312.pyc | Bin 0 -> 1336 bytes .../__pycache__/x25519.cpython-312.pyc | Bin 0 -> 5415 bytes .../__pycache__/x448.cpython-312.pyc | Bin 0 -> 5456 bytes .../hazmat/primitives/asymmetric/dh.py | 147 + .../hazmat/primitives/asymmetric/dsa.py | 167 + .../hazmat/primitives/asymmetric/ec.py | 447 ++ .../hazmat/primitives/asymmetric/ed25519.py | 129 + .../hazmat/primitives/asymmetric/ed448.py | 131 + .../hazmat/primitives/asymmetric/padding.py | 111 + .../hazmat/primitives/asymmetric/rsa.py | 285 ++ .../hazmat/primitives/asymmetric/types.py | 111 + .../hazmat/primitives/asymmetric/utils.py | 24 + .../hazmat/primitives/asymmetric/x25519.py | 122 + .../hazmat/primitives/asymmetric/x448.py | 125 + .../hazmat/primitives/ciphers/__init__.py | 27 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 650 bytes .../ciphers/__pycache__/aead.cpython-312.pyc | Bin 0 -> 840 bytes .../__pycache__/algorithms.cpython-312.pyc | Bin 0 -> 4916 bytes .../ciphers/__pycache__/base.cpython-312.pyc | Bin 0 -> 7097 bytes .../ciphers/__pycache__/modes.cpython-312.pyc | Bin 0 -> 11809 bytes .../hazmat/primitives/ciphers/aead.py | 23 + .../hazmat/primitives/ciphers/algorithms.py | 136 + .../hazmat/primitives/ciphers/base.py | 146 + .../hazmat/primitives/ciphers/modes.py | 268 + .../cryptography/hazmat/primitives/cmac.py | 10 + .../hazmat/primitives/constant_time.py | 14 + .../cryptography/hazmat/primitives/hashes.py | 246 + .../cryptography/hazmat/primitives/hmac.py | 13 + .../hazmat/primitives/kdf/__init__.py | 23 + .../kdf/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1258 bytes .../kdf/__pycache__/argon2.cpython-312.pyc | Bin 0 -> 592 bytes .../kdf/__pycache__/concatkdf.cpython-312.pyc | Bin 0 -> 5633 bytes .../kdf/__pycache__/hkdf.cpython-312.pyc | Bin 0 -> 722 bytes .../kdf/__pycache__/kbkdf.cpython-312.pyc | Bin 0 -> 11312 bytes .../kdf/__pycache__/pbkdf2.cpython-312.pyc | Bin 0 -> 2737 bytes .../kdf/__pycache__/scrypt.cpython-312.pyc | Bin 0 -> 678 bytes .../kdf/__pycache__/x963kdf.cpython-312.pyc | Bin 0 -> 3123 bytes .../hazmat/primitives/kdf/argon2.py | 13 + .../hazmat/primitives/kdf/concatkdf.py | 125 + .../hazmat/primitives/kdf/hkdf.py | 16 + .../hazmat/primitives/kdf/kbkdf.py | 303 ++ .../hazmat/primitives/kdf/pbkdf2.py | 62 + .../hazmat/primitives/kdf/scrypt.py | 19 + .../hazmat/primitives/kdf/x963kdf.py | 61 + .../cryptography/hazmat/primitives/keywrap.py | 177 + .../cryptography/hazmat/primitives/padding.py | 69 + .../hazmat/primitives/poly1305.py | 11 + .../primitives/serialization/__init__.py | 65 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1390 bytes .../__pycache__/base.cpython-312.pyc | Bin 0 -> 855 bytes .../__pycache__/pkcs12.cpython-312.pyc | Bin 0 -> 6639 bytes .../__pycache__/pkcs7.cpython-312.pyc | Bin 0 -> 17288 bytes .../__pycache__/ssh.cpython-312.pyc | Bin 0 -> 67205 bytes .../hazmat/primitives/serialization/base.py | 14 + .../hazmat/primitives/serialization/pkcs12.py | 176 + .../hazmat/primitives/serialization/pkcs7.py | 411 ++ .../hazmat/primitives/serialization/ssh.py | 1619 +++++++ .../hazmat/primitives/twofactor/__init__.py | 9 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 464 bytes .../__pycache__/hotp.cpython-312.pyc | Bin 0 -> 5164 bytes .../__pycache__/totp.cpython-312.pyc | Bin 0 -> 2523 bytes .../hazmat/primitives/twofactor/hotp.py | 101 + .../hazmat/primitives/twofactor/totp.py | 56 + .../site-packages/cryptography/py.typed | 0 .../site-packages/cryptography/utils.py | 137 + .../cryptography/x509/__init__.py | 270 ++ .../x509/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 8453 bytes .../x509/__pycache__/base.cpython-312.pyc | Bin 0 -> 33523 bytes .../certificate_transparency.cpython-312.pyc | Bin 0 -> 1419 bytes .../__pycache__/extensions.cpython-312.pyc | Bin 0 -> 112576 bytes .../__pycache__/general_name.cpython-312.pyc | Bin 0 -> 13098 bytes .../x509/__pycache__/name.cpython-312.pyc | Bin 0 -> 23231 bytes .../x509/__pycache__/ocsp.cpython-312.pyc | Bin 0 -> 14990 bytes .../x509/__pycache__/oid.cpython-312.pyc | Bin 0 -> 772 bytes .../__pycache__/verification.cpython-312.pyc | Bin 0 -> 1018 bytes .../site-packages/cryptography/x509/base.py | 848 ++++ .../x509/certificate_transparency.py | 35 + .../cryptography/x509/extensions.py | 2528 ++++++++++ .../cryptography/x509/general_name.py | 281 ++ .../site-packages/cryptography/x509/name.py | 476 ++ .../site-packages/cryptography/x509/ocsp.py | 379 ++ .../site-packages/cryptography/x509/oid.py | 37 + .../cryptography/x509/verification.py | 34 + .../__pycache__/__init__.cpython-312.pyc | Bin 2532 -> 2532 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 240 -> 240 bytes .../flask/__pycache__/app.cpython-312.pyc | Bin 62487 -> 62487 bytes .../__pycache__/blueprints.cpython-312.pyc | Bin 4999 -> 4999 bytes .../flask/__pycache__/cli.cpython-312.pyc | Bin 43543 -> 43543 bytes .../flask/__pycache__/config.cpython-312.pyc | Bin 16251 -> 16251 bytes .../flask/__pycache__/ctx.cpython-312.pyc | Bin 19837 -> 19837 bytes .../__pycache__/debughelpers.cpython-312.pyc | Bin 9149 -> 9149 bytes .../flask/__pycache__/globals.cpython-312.pyc | Bin 1864 -> 1864 bytes .../flask/__pycache__/helpers.cpython-312.pyc | Bin 25565 -> 25565 bytes .../flask/__pycache__/logging.cpython-312.pyc | Bin 3266 -> 3266 bytes .../__pycache__/sessions.cpython-312.pyc | Bin 17181 -> 17181 bytes .../flask/__pycache__/signals.cpython-312.pyc | Bin 1221 -> 1221 bytes .../__pycache__/templating.cpython-312.pyc | Bin 9930 -> 9930 bytes .../flask/__pycache__/testing.cpython-312.pyc | Bin 13611 -> 13611 bytes .../flask/__pycache__/typing.cpython-312.pyc | Bin 4129 -> 4129 bytes .../flask/__pycache__/views.cpython-312.pyc | Bin 7020 -> 7020 bytes .../__pycache__/wrappers.cpython-312.pyc | Bin 10052 -> 10052 bytes .../json/__pycache__/__init__.cpython-312.pyc | Bin 6692 -> 6692 bytes .../json/__pycache__/provider.cpython-312.pyc | Bin 9259 -> 9259 bytes .../json/__pycache__/tag.cpython-312.pyc | Bin 13954 -> 13954 bytes .../sansio/__pycache__/app.cpython-312.pyc | Bin 33711 -> 33711 bytes .../__pycache__/blueprints.cpython-312.pyc | Bin 31212 -> 31212 bytes .../__pycache__/scaffold.cpython-312.pyc | Bin 30225 -> 30225 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 763 -> 763 bytes .../__pycache__/core.cpython-312.pyc | Bin 15829 -> 15829 bytes .../__pycache__/decorator.cpython-312.pyc | Bin 5065 -> 5065 bytes .../__pycache__/extension.cpython-312.pyc | Bin 8922 -> 8922 bytes .../__pycache__/version.cpython-312.pyc | Bin 216 -> 216 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1631 -> 1631 bytes .../__pycache__/_json.cpython-312.pyc | Bin 1185 -> 1185 bytes .../__pycache__/encoding.cpython-312.pyc | Bin 2685 -> 2685 bytes .../__pycache__/exc.cpython-312.pyc | Bin 3945 -> 3945 bytes .../__pycache__/serializer.cpython-312.pyc | Bin 15426 -> 15426 bytes .../__pycache__/signer.cpython-312.pyc | Bin 11291 -> 11291 bytes .../__pycache__/timed.cpython-312.pyc | Bin 8739 -> 8739 bytes .../__pycache__/url_safe.cpython-312.pyc | Bin 3535 -> 3535 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1656 -> 1656 bytes .../__pycache__/_identifier.cpython-312.pyc | Bin 2137 -> 2137 bytes .../__pycache__/async_utils.cpython-312.pyc | Bin 4977 -> 4977 bytes .../__pycache__/bccache.cpython-312.pyc | Bin 19348 -> 19348 bytes .../__pycache__/compiler.cpython-312.pyc | Bin 104063 -> 104063 bytes .../__pycache__/constants.cpython-312.pyc | Bin 1559 -> 1559 bytes .../jinja2/__pycache__/debug.cpython-312.pyc | Bin 6584 -> 6584 bytes .../__pycache__/defaults.cpython-312.pyc | Bin 1609 -> 1609 bytes .../__pycache__/environment.cpython-312.pyc | Bin 76685 -> 76685 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 7723 -> 7723 bytes .../jinja2/__pycache__/ext.cpython-312.pyc | Bin 41916 -> 41916 bytes .../__pycache__/filters.cpython-312.pyc | Bin 72333 -> 72333 bytes .../__pycache__/idtracking.cpython-312.pyc | Bin 19198 -> 19198 bytes .../jinja2/__pycache__/lexer.cpython-312.pyc | Bin 32079 -> 32079 bytes .../__pycache__/loaders.cpython-312.pyc | Bin 32358 -> 32358 bytes .../jinja2/__pycache__/meta.cpython-312.pyc | Bin 5493 -> 5493 bytes .../__pycache__/nativetypes.cpython-312.pyc | Bin 7014 -> 7014 bytes .../jinja2/__pycache__/nodes.cpython-312.pyc | Bin 58276 -> 58276 bytes .../__pycache__/optimizer.cpython-312.pyc | Bin 2692 -> 2692 bytes .../jinja2/__pycache__/parser.cpython-312.pyc | Bin 61206 -> 61206 bytes .../__pycache__/runtime.cpython-312.pyc | Bin 48894 -> 48894 bytes .../__pycache__/sandbox.cpython-312.pyc | Bin 18110 -> 18110 bytes .../jinja2/__pycache__/tests.cpython-312.pyc | Bin 9053 -> 9053 bytes .../jinja2/__pycache__/utils.cpython-312.pyc | Bin 34866 -> 34866 bytes .../__pycache__/visitor.cpython-312.pyc | Bin 5368 -> 5368 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 20966 -> 20966 bytes .../__pycache__/_native.cpython-312.pyc | Bin 618 -> 618 bytes .../pycparser-2.23.dist-info/INSTALLER | 1 + .../pycparser-2.23.dist-info/LICENSE | 27 + .../pycparser-2.23.dist-info/METADATA | 28 + .../pycparser-2.23.dist-info/RECORD | 41 + .../pycparser-2.23.dist-info/WHEEL | 5 + .../pycparser-2.23.dist-info/top_level.txt | 1 + .../site-packages/pycparser/__init__.py | 93 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 3049 bytes .../__pycache__/_ast_gen.cpython-312.pyc | Bin 0 -> 12534 bytes .../__pycache__/_build_tables.cpython-312.pyc | Bin 0 -> 792 bytes .../ast_transforms.cpython-312.pyc | Bin 0 -> 5569 bytes .../__pycache__/c_ast.cpython-312.pyc | Bin 0 -> 50261 bytes .../__pycache__/c_generator.cpython-312.pyc | Bin 0 -> 30108 bytes .../__pycache__/c_lexer.cpython-312.pyc | Bin 0 -> 18284 bytes .../__pycache__/c_parser.cpython-312.pyc | Bin 0 -> 88412 bytes .../__pycache__/lextab.cpython-312.pyc | Bin 0 -> 6983 bytes .../__pycache__/plyparser.cpython-312.pyc | Bin 0 -> 6067 bytes .../__pycache__/yacctab.cpython-312.pyc | Bin 0 -> 192195 bytes .../site-packages/pycparser/_ast_gen.py | 336 ++ .../site-packages/pycparser/_build_tables.py | 40 + .../site-packages/pycparser/_c_ast.cfg | 195 + .../site-packages/pycparser/ast_transforms.py | 164 + .../site-packages/pycparser/c_ast.py | 1125 +++++ .../site-packages/pycparser/c_generator.py | 502 ++ .../site-packages/pycparser/c_lexer.py | 569 +++ .../site-packages/pycparser/c_parser.py | 1973 ++++++++ .../site-packages/pycparser/lextab.py | 10 + .../site-packages/pycparser/ply/__init__.py | 5 + .../ply/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 257 bytes .../ply/__pycache__/cpp.cpython-312.pyc | Bin 0 -> 32335 bytes .../ply/__pycache__/ctokens.cpython-312.pyc | Bin 0 -> 2469 bytes .../ply/__pycache__/lex.cpython-312.pyc | Bin 0 -> 41624 bytes .../ply/__pycache__/yacc.cpython-312.pyc | Bin 0 -> 101149 bytes .../ply/__pycache__/ygen.cpython-312.pyc | Bin 0 -> 3012 bytes .../site-packages/pycparser/ply/cpp.py | 905 ++++ .../site-packages/pycparser/ply/ctokens.py | 133 + .../site-packages/pycparser/ply/lex.py | 1099 +++++ .../site-packages/pycparser/ply/yacc.py | 3494 +++++++++++++ .../site-packages/pycparser/ply/ygen.py | 74 + .../site-packages/pycparser/plyparser.py | 133 + .../site-packages/pycparser/yacctab.py | 374 ++ .../pyopenssl-25.3.0.dist-info/INSTALLER | 1 + .../pyopenssl-25.3.0.dist-info/METADATA | 525 ++ .../pyopenssl-25.3.0.dist-info/RECORD | 22 + .../pyopenssl-25.3.0.dist-info/REQUESTED | 0 .../pyopenssl-25.3.0.dist-info/WHEEL | 5 + .../licenses/LICENSE | 202 + .../pyopenssl-25.3.0.dist-info/top_level.txt | 1 + .../pyyaml-6.0.3.dist-info/INSTALLER | 1 + .../pyyaml-6.0.3.dist-info/METADATA | 59 + .../pyyaml-6.0.3.dist-info/RECORD | 44 + .../pyyaml-6.0.3.dist-info/REQUESTED | 0 .../pyyaml-6.0.3.dist-info/WHEEL | 7 + .../pyyaml-6.0.3.dist-info/licenses/LICENSE | 20 + .../pyyaml-6.0.3.dist-info/top_level.txt | 2 + .../tqdm-4.67.1.dist-info/INSTALLER | 1 + .../tqdm-4.67.1.dist-info/LICENCE | 49 + .../tqdm-4.67.1.dist-info/METADATA | 1594 ++++++ .../tqdm-4.67.1.dist-info/RECORD | 75 + .../tqdm-4.67.1.dist-info/REQUESTED | 0 .../site-packages/tqdm-4.67.1.dist-info/WHEEL | 5 + .../tqdm-4.67.1.dist-info/entry_points.txt | 2 + .../tqdm-4.67.1.dist-info/top_level.txt | 1 + .../python3.12/site-packages/tqdm/__init__.py | 38 + .../python3.12/site-packages/tqdm/__main__.py | 3 + .../tqdm/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1685 bytes .../tqdm/__pycache__/__main__.cpython-312.pyc | Bin 0 -> 239 bytes .../__pycache__/_dist_ver.cpython-312.pyc | Bin 0 -> 213 bytes .../tqdm/__pycache__/_main.cpython-312.pyc | Bin 0 -> 487 bytes .../tqdm/__pycache__/_monitor.cpython-312.pyc | Bin 0 -> 4176 bytes .../tqdm/__pycache__/_tqdm.cpython-312.pyc | Bin 0 -> 482 bytes .../__pycache__/_tqdm_gui.cpython-312.pyc | Bin 0 -> 495 bytes .../_tqdm_notebook.cpython-312.pyc | Bin 0 -> 516 bytes .../__pycache__/_tqdm_pandas.cpython-312.pyc | Bin 0 -> 1420 bytes .../tqdm/__pycache__/_utils.cpython-312.pyc | Bin 0 -> 894 bytes .../tqdm/__pycache__/asyncio.cpython-312.pyc | Bin 0 -> 4463 bytes .../tqdm/__pycache__/auto.cpython-312.pyc | Bin 0 -> 1355 bytes .../__pycache__/autonotebook.cpython-312.pyc | Bin 0 -> 1259 bytes .../tqdm/__pycache__/cli.cpython-312.pyc | Bin 0 -> 15496 bytes .../tqdm/__pycache__/dask.cpython-312.pyc | Bin 0 -> 2558 bytes .../tqdm/__pycache__/gui.cpython-312.pyc | Bin 0 -> 7802 bytes .../tqdm/__pycache__/keras.cpython-312.pyc | Bin 0 -> 6907 bytes .../tqdm/__pycache__/notebook.cpython-312.pyc | Bin 0 -> 11653 bytes .../tqdm/__pycache__/rich.cpython-312.pyc | Bin 0 -> 7233 bytes .../tqdm/__pycache__/std.cpython-312.pyc | Bin 0 -> 64592 bytes .../tqdm/__pycache__/tk.cpython-312.pyc | Bin 0 -> 9953 bytes .../tqdm/__pycache__/utils.cpython-312.pyc | Bin 0 -> 18781 bytes .../tqdm/__pycache__/version.cpython-312.pyc | Bin 0 -> 612 bytes .../site-packages/tqdm/_dist_ver.py | 1 + .../python3.12/site-packages/tqdm/_main.py | 9 + .../python3.12/site-packages/tqdm/_monitor.py | 95 + .../python3.12/site-packages/tqdm/_tqdm.py | 9 + .../site-packages/tqdm/_tqdm_gui.py | 9 + .../site-packages/tqdm/_tqdm_notebook.py | 9 + .../site-packages/tqdm/_tqdm_pandas.py | 24 + .../python3.12/site-packages/tqdm/_utils.py | 11 + .../python3.12/site-packages/tqdm/asyncio.py | 93 + .../lib/python3.12/site-packages/tqdm/auto.py | 40 + .../site-packages/tqdm/autonotebook.py | 29 + venv/lib/python3.12/site-packages/tqdm/cli.py | 324 ++ .../site-packages/tqdm/completion.sh | 19 + .../site-packages/tqdm/contrib/__init__.py | 92 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 4208 bytes .../contrib/__pycache__/bells.cpython-312.pyc | Bin 0 -> 1328 bytes .../__pycache__/concurrent.cpython-312.pyc | Bin 0 -> 4698 bytes .../__pycache__/discord.cpython-312.pyc | Bin 0 -> 8089 bytes .../__pycache__/itertools.cpython-312.pyc | Bin 0 -> 1452 bytes .../__pycache__/logging.cpython-312.pyc | Bin 0 -> 5173 bytes .../contrib/__pycache__/slack.cpython-312.pyc | Bin 0 -> 6098 bytes .../__pycache__/telegram.cpython-312.pyc | Bin 0 -> 7736 bytes .../__pycache__/utils_worker.cpython-312.pyc | Bin 0 -> 2087 bytes .../site-packages/tqdm/contrib/bells.py | 26 + .../site-packages/tqdm/contrib/concurrent.py | 105 + .../site-packages/tqdm/contrib/discord.py | 156 + .../site-packages/tqdm/contrib/itertools.py | 35 + .../site-packages/tqdm/contrib/logging.py | 126 + .../site-packages/tqdm/contrib/slack.py | 120 + .../site-packages/tqdm/contrib/telegram.py | 153 + .../tqdm/contrib/utils_worker.py | 38 + .../lib/python3.12/site-packages/tqdm/dask.py | 44 + venv/lib/python3.12/site-packages/tqdm/gui.py | 179 + .../python3.12/site-packages/tqdm/keras.py | 122 + .../python3.12/site-packages/tqdm/notebook.py | 317 ++ .../lib/python3.12/site-packages/tqdm/rich.py | 151 + venv/lib/python3.12/site-packages/tqdm/std.py | 1524 ++++++ venv/lib/python3.12/site-packages/tqdm/tk.py | 196 + venv/lib/python3.12/site-packages/tqdm/tqdm.1 | 314 ++ .../python3.12/site-packages/tqdm/utils.py | 399 ++ .../python3.12/site-packages/tqdm/version.py | 9 + .../INSTALLER | 1 + .../METADATA | 72 + .../typing_extensions-4.15.0.dist-info/RECORD | 7 + .../WHEEL | 2 +- .../licenses/LICENSE | 279 ++ .../site-packages/typing_extensions.py | 4317 +++++++++++++++++ .../werkzeug-3.1.4.dist-info/INSTALLER | 1 + .../METADATA | 24 +- .../RECORD | 59 +- .../werkzeug-3.1.4.dist-info/REQUESTED | 0 .../werkzeug-3.1.4.dist-info/WHEEL | 4 + .../licenses}/LICENSE.txt | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 343 -> 343 bytes .../__pycache__/_internal.cpython-312.pyc | Bin 9763 -> 9756 bytes .../__pycache__/_reloader.cpython-312.pyc | Bin 20614 -> 20927 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 33329 -> 34022 bytes .../__pycache__/formparser.cpython-312.pyc | Bin 17029 -> 17029 bytes .../werkzeug/__pycache__/http.cpython-312.pyc | Bin 50254 -> 50254 bytes .../__pycache__/local.cpython-312.pyc | Bin 28484 -> 28484 bytes .../__pycache__/security.cpython-312.pyc | Bin 7137 -> 7908 bytes .../__pycache__/serving.cpython-312.pyc | Bin 46131 -> 46100 bytes .../werkzeug/__pycache__/test.cpython-312.pyc | Bin 59873 -> 59873 bytes .../__pycache__/testapp.cpython-312.pyc | Bin 8894 -> 8894 bytes .../werkzeug/__pycache__/urls.cpython-312.pyc | Bin 8273 -> 8273 bytes .../__pycache__/user_agent.cpython-312.pyc | Bin 2156 -> 2156 bytes .../__pycache__/utils.cpython-312.pyc | Bin 28147 -> 27733 bytes .../werkzeug/__pycache__/wsgi.cpython-312.pyc | Bin 25219 -> 25219 bytes .../site-packages/werkzeug/_internal.py | 6 +- .../site-packages/werkzeug/_reloader.py | 24 +- .../__pycache__/__init__.cpython-312.pyc | Bin 2420 -> 2420 bytes .../__pycache__/accept.cpython-312.pyc | Bin 15947 -> 15947 bytes .../__pycache__/auth.cpython-312.pyc | Bin 14462 -> 14462 bytes .../__pycache__/cache_control.cpython-312.pyc | Bin 12229 -> 12229 bytes .../__pycache__/csp.cpython-312.pyc | Bin 6190 -> 6190 bytes .../__pycache__/etag.cpython-312.pyc | Bin 5405 -> 5405 bytes .../__pycache__/file_storage.cpython-312.pyc | Bin 8827 -> 8827 bytes .../__pycache__/headers.cpython-312.pyc | Bin 30523 -> 30523 bytes .../__pycache__/mixins.cpython-312.pyc | Bin 16403 -> 16403 bytes .../__pycache__/range.cpython-312.pyc | Bin 10058 -> 10058 bytes .../__pycache__/structures.cpython-312.pyc | Bin 59094 -> 59094 bytes .../werkzeug/datastructures/cache_control.py | 2 +- .../werkzeug/datastructures/file_storage.py | 2 +- .../werkzeug/datastructures/headers.py | 4 +- .../werkzeug/datastructures/mixins.py | 6 +- .../werkzeug/datastructures/range.py | 2 +- .../werkzeug/datastructures/structures.py | 10 +- .../site-packages/werkzeug/debug/__init__.py | 14 +- .../__pycache__/__init__.cpython-312.pyc | Bin 23479 -> 23591 bytes .../debug/__pycache__/console.cpython-312.pyc | Bin 11640 -> 11640 bytes .../debug/__pycache__/repr.cpython-312.pyc | Bin 13813 -> 13813 bytes .../debug/__pycache__/tbtools.cpython-312.pyc | Bin 17012 -> 17045 bytes .../site-packages/werkzeug/debug/tbtools.py | 11 +- .../site-packages/werkzeug/exceptions.py | 63 +- .../python3.12/site-packages/werkzeug/http.py | 4 +- .../site-packages/werkzeug/local.py | 22 +- .../__pycache__/__init__.cpython-312.pyc | Bin 200 -> 200 bytes .../__pycache__/dispatcher.cpython-312.pyc | Bin 3318 -> 3318 bytes .../__pycache__/http_proxy.cpython-312.pyc | Bin 9410 -> 9410 bytes .../__pycache__/lint.cpython-312.pyc | Bin 17780 -> 17780 bytes .../__pycache__/profiler.cpython-312.pyc | Bin 7204 -> 7204 bytes .../__pycache__/proxy_fix.cpython-312.pyc | Bin 7201 -> 7201 bytes .../__pycache__/shared_data.cpython-312.pyc | Bin 12756 -> 12756 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 4673 -> 4673 bytes .../__pycache__/converters.cpython-312.pyc | Bin 10913 -> 10913 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 7916 -> 7916 bytes .../routing/__pycache__/map.cpython-312.pyc | Bin 39841 -> 39841 bytes .../__pycache__/matcher.cpython-312.pyc | Bin 8284 -> 8284 bytes .../routing/__pycache__/rules.cpython-312.pyc | Bin 39175 -> 39175 bytes .../site-packages/werkzeug/routing/rules.py | 4 +- .../__pycache__/__init__.cpython-312.pyc | Bin 196 -> 196 bytes .../sansio/__pycache__/http.cpython-312.pyc | Bin 5647 -> 5647 bytes .../__pycache__/multipart.cpython-312.pyc | Bin 14055 -> 14296 bytes .../__pycache__/request.cpython-312.pyc | Bin 21889 -> 21889 bytes .../__pycache__/response.cpython-312.pyc | Bin 31744 -> 31744 bytes .../sansio/__pycache__/utils.cpython-312.pyc | Bin 6186 -> 6186 bytes .../site-packages/werkzeug/sansio/http.py | 2 +- .../werkzeug/sansio/multipart.py | 16 +- .../site-packages/werkzeug/sansio/response.py | 4 +- .../site-packages/werkzeug/security.py | 15 + .../site-packages/werkzeug/serving.py | 4 +- .../python3.12/site-packages/werkzeug/test.py | 2 +- .../site-packages/werkzeug/utils.py | 9 +- .../__pycache__/__init__.cpython-312.pyc | Bin 320 -> 320 bytes .../__pycache__/request.cpython-312.pyc | Bin 26150 -> 26150 bytes .../__pycache__/response.cpython-312.pyc | Bin 34575 -> 34575 bytes .../werkzeug/wrappers/request.py | 4 +- .../werkzeug/wrappers/response.py | 2 +- .../python3.12/site-packages/werkzeug/wsgi.py | 2 +- .../python3.12/site-packages/yaml/__init__.py | 390 ++ .../yaml/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 15622 bytes .../yaml/__pycache__/composer.cpython-312.pyc | Bin 0 -> 6531 bytes .../__pycache__/constructor.cpython-312.pyc | Bin 0 -> 34924 bytes .../yaml/__pycache__/cyaml.cpython-312.pyc | Bin 0 -> 4632 bytes .../yaml/__pycache__/dumper.cpython-312.pyc | Bin 0 -> 2468 bytes .../yaml/__pycache__/emitter.cpython-312.pyc | Bin 0 -> 50172 bytes .../yaml/__pycache__/error.cpython-312.pyc | Bin 0 -> 4274 bytes .../yaml/__pycache__/events.cpython-312.pyc | Bin 0 -> 4716 bytes .../yaml/__pycache__/loader.cpython-312.pyc | Bin 0 -> 3530 bytes .../yaml/__pycache__/nodes.cpython-312.pyc | Bin 0 -> 2215 bytes .../yaml/__pycache__/parser.cpython-312.pyc | Bin 0 -> 24720 bytes .../yaml/__pycache__/reader.cpython-312.pyc | Bin 0 -> 8850 bytes .../__pycache__/representer.cpython-312.pyc | Bin 0 -> 16923 bytes .../yaml/__pycache__/resolver.cpython-312.pyc | Bin 0 -> 9067 bytes .../yaml/__pycache__/scanner.cpython-312.pyc | Bin 0 -> 49858 bytes .../__pycache__/serializer.cpython-312.pyc | Bin 0 -> 6205 bytes .../yaml/__pycache__/tokens.cpython-312.pyc | Bin 0 -> 5785 bytes .../_yaml.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 2679264 bytes .../python3.12/site-packages/yaml/composer.py | 139 + .../site-packages/yaml/constructor.py | 748 +++ .../python3.12/site-packages/yaml/cyaml.py | 101 + .../python3.12/site-packages/yaml/dumper.py | 62 + .../python3.12/site-packages/yaml/emitter.py | 1137 +++++ .../python3.12/site-packages/yaml/error.py | 75 + .../python3.12/site-packages/yaml/events.py | 86 + .../python3.12/site-packages/yaml/loader.py | 63 + .../python3.12/site-packages/yaml/nodes.py | 49 + .../python3.12/site-packages/yaml/parser.py | 589 +++ .../python3.12/site-packages/yaml/reader.py | 185 + .../site-packages/yaml/representer.py | 389 ++ .../python3.12/site-packages/yaml/resolver.py | 227 + .../python3.12/site-packages/yaml/scanner.py | 1435 ++++++ .../site-packages/yaml/serializer.py | 111 + .../python3.12/site-packages/yaml/tokens.py | 104 + 595 files changed, 60147 insertions(+), 183 deletions(-) create mode 100755 venv/bin/tqdm create mode 100644 venv/lib/python3.12/site-packages/OpenSSL/SSL.py create mode 100644 venv/lib/python3.12/site-packages/OpenSSL/__init__.py create mode 100644 venv/lib/python3.12/site-packages/OpenSSL/__pycache__/SSL.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/OpenSSL/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/OpenSSL/__pycache__/_util.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/OpenSSL/__pycache__/crypto.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/OpenSSL/__pycache__/debug.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/OpenSSL/__pycache__/rand.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/OpenSSL/__pycache__/version.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/OpenSSL/_util.py create mode 100644 venv/lib/python3.12/site-packages/OpenSSL/crypto.py create mode 100644 venv/lib/python3.12/site-packages/OpenSSL/debug.py create mode 100644 venv/lib/python3.12/site-packages/OpenSSL/py.typed create mode 100644 venv/lib/python3.12/site-packages/OpenSSL/rand.py create mode 100644 venv/lib/python3.12/site-packages/OpenSSL/version.py create mode 100644 venv/lib/python3.12/site-packages/__pycache__/typing_extensions.cpython-312.pyc create mode 100755 venv/lib/python3.12/site-packages/_cffi_backend.cpython-312-x86_64-linux-gnu.so create mode 100644 venv/lib/python3.12/site-packages/_yaml/__init__.py create mode 100644 venv/lib/python3.12/site-packages/_yaml/__pycache__/__init__.cpython-312.pyc rename venv/lib/python3.12/site-packages/{click-8.3.0.dist-info => cffi-2.0.0.dist-info}/INSTALLER (100%) create mode 100644 venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/entry_points.txt create mode 100644 venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/licenses/AUTHORS create mode 100644 venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/licenses/LICENSE create mode 100644 venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/top_level.txt create mode 100644 venv/lib/python3.12/site-packages/cffi/__init__.py create mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/_imp_emulation.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/_shimmed_dist_utils.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/api.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/backend_ctypes.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/cffi_opcode.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/commontypes.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/cparser.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/error.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/ffiplatform.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/lock.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/model.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/pkgconfig.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/recompiler.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/setuptools_ext.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/vengine_cpy.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/vengine_gen.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/verifier.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cffi/_cffi_errors.h create mode 100644 venv/lib/python3.12/site-packages/cffi/_cffi_include.h create mode 100644 venv/lib/python3.12/site-packages/cffi/_embedding.h create mode 100644 venv/lib/python3.12/site-packages/cffi/_imp_emulation.py create mode 100644 venv/lib/python3.12/site-packages/cffi/_shimmed_dist_utils.py create mode 100644 venv/lib/python3.12/site-packages/cffi/api.py create mode 100644 venv/lib/python3.12/site-packages/cffi/backend_ctypes.py create mode 100644 venv/lib/python3.12/site-packages/cffi/cffi_opcode.py create mode 100644 venv/lib/python3.12/site-packages/cffi/commontypes.py create mode 100644 venv/lib/python3.12/site-packages/cffi/cparser.py create mode 100644 venv/lib/python3.12/site-packages/cffi/error.py create mode 100644 venv/lib/python3.12/site-packages/cffi/ffiplatform.py create mode 100644 venv/lib/python3.12/site-packages/cffi/lock.py create mode 100644 venv/lib/python3.12/site-packages/cffi/model.py create mode 100644 venv/lib/python3.12/site-packages/cffi/parse_c_type.h create mode 100644 venv/lib/python3.12/site-packages/cffi/pkgconfig.py create mode 100644 venv/lib/python3.12/site-packages/cffi/recompiler.py create mode 100644 venv/lib/python3.12/site-packages/cffi/setuptools_ext.py create mode 100644 venv/lib/python3.12/site-packages/cffi/vengine_cpy.py create mode 100644 venv/lib/python3.12/site-packages/cffi/vengine_gen.py create mode 100644 venv/lib/python3.12/site-packages/cffi/verifier.py rename venv/lib/python3.12/site-packages/{werkzeug-3.1.3.dist-info => click-8.3.1.dist-info}/INSTALLER (100%) rename venv/lib/python3.12/site-packages/{click-8.3.0.dist-info => click-8.3.1.dist-info}/METADATA (99%) rename venv/lib/python3.12/site-packages/{click-8.3.0.dist-info => click-8.3.1.dist-info}/RECORD (77%) rename venv/lib/python3.12/site-packages/{click-8.3.0.dist-info => click-8.3.1.dist-info}/WHEEL (100%) rename venv/lib/python3.12/site-packages/{click-8.3.0.dist-info => click-8.3.1.dist-info}/licenses/LICENSE.txt (100%) create mode 100644 venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/licenses/LICENSE create mode 100644 venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/licenses/LICENSE.APACHE create mode 100644 venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/licenses/LICENSE.BSD create mode 100644 venv/lib/python3.12/site-packages/cryptography/__about__.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/__init__.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/__pycache__/__about__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/__pycache__/exceptions.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/__pycache__/fernet.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/__pycache__/utils.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/exceptions.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/fernet.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/__init__.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/__pycache__/_oid.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/_oid.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/asn1/__init__.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/asn1/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/asn1/__pycache__/asn1.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/asn1/asn1.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/backends/__init__.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/backends/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/__init__.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/backend.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/__init__.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/__pycache__/__init__.cpython-312.pyc create mode 100755 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust.abi3.so create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/__init__.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/_openssl.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/asn1.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/declarative_asn1.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/exceptions.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/ocsp.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/dh.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ec.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/test_support.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/__init__.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/_conditional.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/binding.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/binding.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/__init__.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/__init__.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/__pycache__/algorithms.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/algorithms.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__init__.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/_asymmetric.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/_cipheralgorithm.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/_serialization.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/cmac.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/constant_time.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/hashes.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/hmac.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/keywrap.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/padding.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/poly1305.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/_asymmetric.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/_cipheralgorithm.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/_serialization.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/dh.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/dsa.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ec.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ed25519.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ed448.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/padding.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/rsa.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/types.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/utils.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/x25519.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/x448.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/dh.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/padding.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/types.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/utils.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__init__.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/aead.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/algorithms.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/base.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/modes.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/aead.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/base.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/modes.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/cmac.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/constant_time.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/hashes.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/hmac.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__init__.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/argon2.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/concatkdf.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/hkdf.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/kbkdf.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/pbkdf2.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/x963kdf.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/argon2.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/scrypt.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/keywrap.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/padding.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/poly1305.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__init__.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/base.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/pkcs12.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/pkcs7.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/base.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/ssh.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/__init__.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/hotp.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/totp.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/totp.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/py.typed create mode 100644 venv/lib/python3.12/site-packages/cryptography/utils.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/__init__.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/base.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/certificate_transparency.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/extensions.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/general_name.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/name.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/ocsp.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/oid.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/verification.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/base.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/certificate_transparency.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/extensions.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/general_name.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/name.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/ocsp.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/oid.py create mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/verification.py create mode 100644 venv/lib/python3.12/site-packages/pycparser-2.23.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/pycparser-2.23.dist-info/LICENSE create mode 100644 venv/lib/python3.12/site-packages/pycparser-2.23.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/pycparser-2.23.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/pycparser-2.23.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/pycparser-2.23.dist-info/top_level.txt create mode 100644 venv/lib/python3.12/site-packages/pycparser/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pycparser/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pycparser/__pycache__/_ast_gen.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pycparser/__pycache__/_build_tables.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pycparser/__pycache__/ast_transforms.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pycparser/__pycache__/c_ast.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pycparser/__pycache__/c_generator.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pycparser/__pycache__/c_lexer.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pycparser/__pycache__/c_parser.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pycparser/__pycache__/lextab.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pycparser/__pycache__/plyparser.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pycparser/__pycache__/yacctab.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pycparser/_ast_gen.py create mode 100644 venv/lib/python3.12/site-packages/pycparser/_build_tables.py create mode 100644 venv/lib/python3.12/site-packages/pycparser/_c_ast.cfg create mode 100644 venv/lib/python3.12/site-packages/pycparser/ast_transforms.py create mode 100644 venv/lib/python3.12/site-packages/pycparser/c_ast.py create mode 100644 venv/lib/python3.12/site-packages/pycparser/c_generator.py create mode 100644 venv/lib/python3.12/site-packages/pycparser/c_lexer.py create mode 100644 venv/lib/python3.12/site-packages/pycparser/c_parser.py create mode 100644 venv/lib/python3.12/site-packages/pycparser/lextab.py create mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/__pycache__/cpp.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/__pycache__/ctokens.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/__pycache__/lex.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/__pycache__/yacc.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/__pycache__/ygen.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/cpp.py create mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/ctokens.py create mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/lex.py create mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/yacc.py create mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/ygen.py create mode 100644 venv/lib/python3.12/site-packages/pycparser/plyparser.py create mode 100644 venv/lib/python3.12/site-packages/pycparser/yacctab.py create mode 100644 venv/lib/python3.12/site-packages/pyopenssl-25.3.0.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/pyopenssl-25.3.0.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/pyopenssl-25.3.0.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/pyopenssl-25.3.0.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/pyopenssl-25.3.0.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/pyopenssl-25.3.0.dist-info/licenses/LICENSE create mode 100644 venv/lib/python3.12/site-packages/pyopenssl-25.3.0.dist-info/top_level.txt create mode 100644 venv/lib/python3.12/site-packages/pyyaml-6.0.3.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/pyyaml-6.0.3.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/pyyaml-6.0.3.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/pyyaml-6.0.3.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/pyyaml-6.0.3.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/pyyaml-6.0.3.dist-info/licenses/LICENSE create mode 100644 venv/lib/python3.12/site-packages/pyyaml-6.0.3.dist-info/top_level.txt create mode 100644 venv/lib/python3.12/site-packages/tqdm-4.67.1.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/tqdm-4.67.1.dist-info/LICENCE create mode 100644 venv/lib/python3.12/site-packages/tqdm-4.67.1.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/tqdm-4.67.1.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/tqdm-4.67.1.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/tqdm-4.67.1.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/tqdm-4.67.1.dist-info/entry_points.txt create mode 100644 venv/lib/python3.12/site-packages/tqdm-4.67.1.dist-info/top_level.txt create mode 100644 venv/lib/python3.12/site-packages/tqdm/__init__.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/__main__.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/__main__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/_dist_ver.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/_main.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/_monitor.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/_tqdm.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/_tqdm_gui.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/_tqdm_notebook.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/_tqdm_pandas.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/_utils.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/asyncio.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/auto.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/autonotebook.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/cli.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/dask.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/gui.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/keras.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/notebook.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/rich.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/std.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/tk.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/utils.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/__pycache__/version.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/_dist_ver.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/_main.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/_monitor.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/_tqdm.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/_tqdm_gui.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/_tqdm_notebook.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/_tqdm_pandas.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/_utils.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/asyncio.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/auto.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/autonotebook.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/cli.py create mode 100755 venv/lib/python3.12/site-packages/tqdm/completion.sh create mode 100644 venv/lib/python3.12/site-packages/tqdm/contrib/__init__.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/contrib/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/contrib/__pycache__/bells.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/contrib/__pycache__/concurrent.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/contrib/__pycache__/discord.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/contrib/__pycache__/itertools.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/contrib/__pycache__/logging.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/contrib/__pycache__/slack.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/contrib/__pycache__/telegram.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/contrib/__pycache__/utils_worker.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/tqdm/contrib/bells.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/contrib/concurrent.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/contrib/discord.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/contrib/itertools.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/contrib/logging.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/contrib/slack.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/contrib/telegram.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/contrib/utils_worker.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/dask.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/gui.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/keras.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/notebook.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/rich.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/std.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/tk.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/tqdm.1 create mode 100644 venv/lib/python3.12/site-packages/tqdm/utils.py create mode 100644 venv/lib/python3.12/site-packages/tqdm/version.py create mode 100644 venv/lib/python3.12/site-packages/typing_extensions-4.15.0.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/typing_extensions-4.15.0.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/typing_extensions-4.15.0.dist-info/RECORD rename venv/lib/python3.12/site-packages/{werkzeug-3.1.3.dist-info => typing_extensions-4.15.0.dist-info}/WHEEL (71%) create mode 100644 venv/lib/python3.12/site-packages/typing_extensions-4.15.0.dist-info/licenses/LICENSE create mode 100644 venv/lib/python3.12/site-packages/typing_extensions.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug-3.1.4.dist-info/INSTALLER rename venv/lib/python3.12/site-packages/{werkzeug-3.1.3.dist-info => werkzeug-3.1.4.dist-info}/METADATA (83%) rename venv/lib/python3.12/site-packages/{werkzeug-3.1.3.dist-info => werkzeug-3.1.4.dist-info}/RECORD (69%) create mode 100644 venv/lib/python3.12/site-packages/werkzeug-3.1.4.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/werkzeug-3.1.4.dist-info/WHEEL rename venv/lib/python3.12/site-packages/{werkzeug-3.1.3.dist-info => werkzeug-3.1.4.dist-info/licenses}/LICENSE.txt (100%) create mode 100644 venv/lib/python3.12/site-packages/yaml/__init__.py create mode 100644 venv/lib/python3.12/site-packages/yaml/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/yaml/__pycache__/composer.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/yaml/__pycache__/constructor.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/yaml/__pycache__/cyaml.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/yaml/__pycache__/dumper.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/yaml/__pycache__/emitter.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/yaml/__pycache__/error.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/yaml/__pycache__/events.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/yaml/__pycache__/loader.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/yaml/__pycache__/nodes.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/yaml/__pycache__/parser.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/yaml/__pycache__/reader.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/yaml/__pycache__/representer.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/yaml/__pycache__/resolver.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/yaml/__pycache__/scanner.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/yaml/__pycache__/serializer.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/yaml/__pycache__/tokens.cpython-312.pyc create mode 100755 venv/lib/python3.12/site-packages/yaml/_yaml.cpython-312-x86_64-linux-gnu.so create mode 100644 venv/lib/python3.12/site-packages/yaml/composer.py create mode 100644 venv/lib/python3.12/site-packages/yaml/constructor.py create mode 100644 venv/lib/python3.12/site-packages/yaml/cyaml.py create mode 100644 venv/lib/python3.12/site-packages/yaml/dumper.py create mode 100644 venv/lib/python3.12/site-packages/yaml/emitter.py create mode 100644 venv/lib/python3.12/site-packages/yaml/error.py create mode 100644 venv/lib/python3.12/site-packages/yaml/events.py create mode 100644 venv/lib/python3.12/site-packages/yaml/loader.py create mode 100644 venv/lib/python3.12/site-packages/yaml/nodes.py create mode 100644 venv/lib/python3.12/site-packages/yaml/parser.py create mode 100644 venv/lib/python3.12/site-packages/yaml/reader.py create mode 100644 venv/lib/python3.12/site-packages/yaml/representer.py create mode 100644 venv/lib/python3.12/site-packages/yaml/resolver.py create mode 100644 venv/lib/python3.12/site-packages/yaml/scanner.py create mode 100644 venv/lib/python3.12/site-packages/yaml/serializer.py create mode 100644 venv/lib/python3.12/site-packages/yaml/tokens.py diff --git a/.gitignore b/.gitignore index 6ad63f7d..57dcaeb9 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,6 @@ _site vendor mmp .venv -venv .bundle src -assets/js/creations/server/data \ No newline at end of file +assets/js/creations/server/data diff --git a/scripts/handler/__pycache__/utils.cpython-312.pyc b/scripts/handler/__pycache__/utils.cpython-312.pyc index c6cf2dab30e9ebb1620c0d9880d91469e13bf5ac..b042a02ddcd457449e4686ba29d9cd11a1929346 100644 GIT binary patch delta 1087 zcmb7@&r2IY6vt;ao6Tl7yD`5sMhk+JHkVRbHI|C0Me7e*8;l}dq{}ul#>mFVZdz(D z$-zsYkd|$!7K@^n7B52njGjs^x~I}xPYrk|^wgPE14^WH4sX7^H=p-?`(xh3-gnDi zB}o8ut@r1qd~fAwN0b5J13&;l9VpEmTMI(GguybYUR=wbix~hgyAMyYXS?FYZiTy~ zgTF-w4l&5J?>ea{JRwW1%r8UPChGl9Q+JaT&Xc9HDVJNDa{H$PD&l$YADpMj`4F#2 z$g9XmQ2ay zA0nQP>S(HHQ*|~~j4IScdPLS>y!$7eblR3oBctZ?t7)tmnI+prq|N5@?CLAqRr>)M zDAJ$C5NYt$elZ^*7o^&2RoSOPJC!u_)qb;|7`cN;lYYmZp0d$t?Ro~_xOL>Y8wt>Z z4j7^;Ohd$q^Sv-=J>q+BM`^;L-9+_}bn180f_V@=g_X3>a~%80ec zzk{*bp!YSDu8>5WHBMZtZ^F%M4&0S7uvWzCVnIjPFxA|mx>6{r_$6&JL72RCT^x82 zqjdWzO|VWlhKX3oxj$^O%45p?m>7*YU8SkQ}{F z<_!`XE(qZ<2cU2qCZWLtpIl8;64hiSxp8Ydv6xU*9@cu|*!%i^KrZ*lg!^~6_W>4<*; DbfeU| delta 780 zcmb7?&1(}u7{+IIvzz_MZoZn>))t~6YC+vfAs0ijqM(AJwqAzX5b}=sAjy{5)zElo z4&q7BGKwJW#ha+7T>S^clXxlp54;t;d2(i>0l`C^!^4kfpXZ%-*?l$lV%GiQI2ID; z^UhN1xw+#`pVTozuMr@?9Yhc)1cOQxh!GVu5~HYX@e6vkdnD9uSdhC-=$vL4{P;it5@?jnct?NA9w+)S0_6~wv3a)J)BLA}(B%Unt)8@H20m# S(AsyGhxVBGhBJ!EF~0y?2ea1z diff --git a/scripts/handler/utils.py b/scripts/handler/utils.py index a0c02514..927b705a 100644 --- a/scripts/handler/utils.py +++ b/scripts/handler/utils.py @@ -7,10 +7,13 @@ import os #MMP_FOLDER = "/nethome/jotachina/projetos/src_mmpSearch/mmp" #MMPZ_FOLDER = "/nethome/jotachina/projetos/src_mmpSearch/mmpz" #WAV_FOLDER = "/nethome/jotachina/projetos/src_mmpSearch/wav" -BASE_PATH = "/var/html/www/trens/mmpSearch" -MMP_FOLDER = "/var/html/www/trens/mmpSearch/src_mmpSearch/mmp" -MMPZ_FOLDER = "/var/html/www/trens/mmpSearch/src_mmpSearch/mmpz" -WAV_FOLDER = "/var/html/www/trens/mmpSearch/src_mmpSearch/wav" +#### +# Corrigir caminhos do site global (user www-data) +#### +BASE_PATH = "/mmpSearch" +MMP_FOLDER = "src_mmpSearch/mmp" +MMPZ_FOLDER = "src_mmpSearch/mmpz" +WAV_FOLDER = "src_mmpSearch/wav" METADATA_FOLDER = os.path.join(BASE_PATH, "metadata") DATA_FOLDER = os.path.join(BASE_PATH, "_data") CERT_PATH = "/etc/letsencrypt/live/alice.ufsj.edu.br/fullchain.pem" diff --git a/venv/bin/tqdm b/venv/bin/tqdm new file mode 100755 index 00000000..ed0d9368 --- /dev/null +++ b/venv/bin/tqdm @@ -0,0 +1,8 @@ +#!/nethome/jotachina/projetos/mmpSearch/venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from tqdm.cli import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/lib/python3.12/site-packages/OpenSSL/SSL.py b/venv/lib/python3.12/site-packages/OpenSSL/SSL.py new file mode 100644 index 00000000..51c60d55 --- /dev/null +++ b/venv/lib/python3.12/site-packages/OpenSSL/SSL.py @@ -0,0 +1,3239 @@ +from __future__ import annotations + +import os +import socket +import typing +import warnings +from collections.abc import Sequence +from errno import errorcode +from functools import partial, wraps +from itertools import chain, count +from sys import platform +from typing import Any, Callable, Optional, TypeVar +from weakref import WeakValueDictionary + +from cryptography import x509 +from cryptography.hazmat.primitives.asymmetric import ec + +from OpenSSL._util import ( + StrOrBytesPath as _StrOrBytesPath, +) +from OpenSSL._util import ( + exception_from_error_queue as _exception_from_error_queue, +) +from OpenSSL._util import ( + ffi as _ffi, +) +from OpenSSL._util import ( + lib as _lib, +) +from OpenSSL._util import ( + make_assert as _make_assert, +) +from OpenSSL._util import ( + no_zero_allocator as _no_zero_allocator, +) +from OpenSSL._util import ( + path_bytes as _path_bytes, +) +from OpenSSL._util import ( + text_to_bytes_and_warn as _text_to_bytes_and_warn, +) +from OpenSSL.crypto import ( + FILETYPE_PEM, + X509, + PKey, + X509Name, + X509Store, + _EllipticCurve, + _PassphraseHelper, + _PrivateKey, +) + +__all__ = [ + "DTLS_CLIENT_METHOD", + "DTLS_METHOD", + "DTLS_SERVER_METHOD", + "MODE_RELEASE_BUFFERS", + "NO_OVERLAPPING_PROTOCOLS", + "OPENSSL_BUILT_ON", + "OPENSSL_CFLAGS", + "OPENSSL_DIR", + "OPENSSL_PLATFORM", + "OPENSSL_VERSION", + "OPENSSL_VERSION_NUMBER", + "OP_ALL", + "OP_CIPHER_SERVER_PREFERENCE", + "OP_COOKIE_EXCHANGE", + "OP_DONT_INSERT_EMPTY_FRAGMENTS", + "OP_EPHEMERAL_RSA", + "OP_MICROSOFT_BIG_SSLV3_BUFFER", + "OP_MICROSOFT_SESS_ID_BUG", + "OP_MSIE_SSLV2_RSA_PADDING", + "OP_NETSCAPE_CA_DN_BUG", + "OP_NETSCAPE_CHALLENGE_BUG", + "OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG", + "OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG", + "OP_NO_COMPRESSION", + "OP_NO_QUERY_MTU", + "OP_NO_TICKET", + "OP_PKCS1_CHECK_1", + "OP_PKCS1_CHECK_2", + "OP_SINGLE_DH_USE", + "OP_SINGLE_ECDH_USE", + "OP_SSLEAY_080_CLIENT_DH_BUG", + "OP_SSLREF2_REUSE_CERT_TYPE_BUG", + "OP_TLS_BLOCK_PADDING_BUG", + "OP_TLS_D5_BUG", + "OP_TLS_ROLLBACK_BUG", + "RECEIVED_SHUTDOWN", + "SENT_SHUTDOWN", + "SESS_CACHE_BOTH", + "SESS_CACHE_CLIENT", + "SESS_CACHE_NO_AUTO_CLEAR", + "SESS_CACHE_NO_INTERNAL", + "SESS_CACHE_NO_INTERNAL_LOOKUP", + "SESS_CACHE_NO_INTERNAL_STORE", + "SESS_CACHE_OFF", + "SESS_CACHE_SERVER", + "SSL3_VERSION", + "SSLEAY_BUILT_ON", + "SSLEAY_CFLAGS", + "SSLEAY_DIR", + "SSLEAY_PLATFORM", + "SSLEAY_VERSION", + "SSL_CB_ACCEPT_EXIT", + "SSL_CB_ACCEPT_LOOP", + "SSL_CB_ALERT", + "SSL_CB_CONNECT_EXIT", + "SSL_CB_CONNECT_LOOP", + "SSL_CB_EXIT", + "SSL_CB_HANDSHAKE_DONE", + "SSL_CB_HANDSHAKE_START", + "SSL_CB_LOOP", + "SSL_CB_READ", + "SSL_CB_READ_ALERT", + "SSL_CB_WRITE", + "SSL_CB_WRITE_ALERT", + "SSL_ST_ACCEPT", + "SSL_ST_CONNECT", + "SSL_ST_MASK", + "TLS1_1_VERSION", + "TLS1_2_VERSION", + "TLS1_3_VERSION", + "TLS1_VERSION", + "TLS_CLIENT_METHOD", + "TLS_METHOD", + "TLS_SERVER_METHOD", + "VERIFY_CLIENT_ONCE", + "VERIFY_FAIL_IF_NO_PEER_CERT", + "VERIFY_NONE", + "VERIFY_PEER", + "Connection", + "Context", + "Error", + "OP_NO_SSLv2", + "OP_NO_SSLv3", + "OP_NO_TLSv1", + "OP_NO_TLSv1_1", + "OP_NO_TLSv1_2", + "OP_NO_TLSv1_3", + "SSLeay_version", + "SSLv23_METHOD", + "Session", + "SysCallError", + "TLSv1_1_METHOD", + "TLSv1_2_METHOD", + "TLSv1_METHOD", + "WantReadError", + "WantWriteError", + "WantX509LookupError", + "X509VerificationCodes", + "ZeroReturnError", +] + + +OPENSSL_VERSION_NUMBER: int = _lib.OPENSSL_VERSION_NUMBER +OPENSSL_VERSION: int = _lib.OPENSSL_VERSION +OPENSSL_CFLAGS: int = _lib.OPENSSL_CFLAGS +OPENSSL_PLATFORM: int = _lib.OPENSSL_PLATFORM +OPENSSL_DIR: int = _lib.OPENSSL_DIR +OPENSSL_BUILT_ON: int = _lib.OPENSSL_BUILT_ON + +SSLEAY_VERSION = OPENSSL_VERSION +SSLEAY_CFLAGS = OPENSSL_CFLAGS +SSLEAY_PLATFORM = OPENSSL_PLATFORM +SSLEAY_DIR = OPENSSL_DIR +SSLEAY_BUILT_ON = OPENSSL_BUILT_ON + +SENT_SHUTDOWN = _lib.SSL_SENT_SHUTDOWN +RECEIVED_SHUTDOWN = _lib.SSL_RECEIVED_SHUTDOWN + +SSLv23_METHOD = 3 +TLSv1_METHOD = 4 +TLSv1_1_METHOD = 5 +TLSv1_2_METHOD = 6 +TLS_METHOD = 7 +TLS_SERVER_METHOD = 8 +TLS_CLIENT_METHOD = 9 +DTLS_METHOD = 10 +DTLS_SERVER_METHOD = 11 +DTLS_CLIENT_METHOD = 12 + +SSL3_VERSION: int = _lib.SSL3_VERSION +TLS1_VERSION: int = _lib.TLS1_VERSION +TLS1_1_VERSION: int = _lib.TLS1_1_VERSION +TLS1_2_VERSION: int = _lib.TLS1_2_VERSION +TLS1_3_VERSION: int = _lib.TLS1_3_VERSION + +OP_NO_SSLv2: int = _lib.SSL_OP_NO_SSLv2 +OP_NO_SSLv3: int = _lib.SSL_OP_NO_SSLv3 +OP_NO_TLSv1: int = _lib.SSL_OP_NO_TLSv1 +OP_NO_TLSv1_1: int = _lib.SSL_OP_NO_TLSv1_1 +OP_NO_TLSv1_2: int = _lib.SSL_OP_NO_TLSv1_2 +OP_NO_TLSv1_3: int = _lib.SSL_OP_NO_TLSv1_3 + +MODE_RELEASE_BUFFERS: int = _lib.SSL_MODE_RELEASE_BUFFERS + +OP_SINGLE_DH_USE: int = _lib.SSL_OP_SINGLE_DH_USE +OP_SINGLE_ECDH_USE: int = _lib.SSL_OP_SINGLE_ECDH_USE +OP_EPHEMERAL_RSA: int = _lib.SSL_OP_EPHEMERAL_RSA +OP_MICROSOFT_SESS_ID_BUG: int = _lib.SSL_OP_MICROSOFT_SESS_ID_BUG +OP_NETSCAPE_CHALLENGE_BUG: int = _lib.SSL_OP_NETSCAPE_CHALLENGE_BUG +OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: int = ( + _lib.SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG +) +OP_SSLREF2_REUSE_CERT_TYPE_BUG: int = _lib.SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG +OP_MICROSOFT_BIG_SSLV3_BUFFER: int = _lib.SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER +OP_MSIE_SSLV2_RSA_PADDING: int = _lib.SSL_OP_MSIE_SSLV2_RSA_PADDING +OP_SSLEAY_080_CLIENT_DH_BUG: int = _lib.SSL_OP_SSLEAY_080_CLIENT_DH_BUG +OP_TLS_D5_BUG: int = _lib.SSL_OP_TLS_D5_BUG +OP_TLS_BLOCK_PADDING_BUG: int = _lib.SSL_OP_TLS_BLOCK_PADDING_BUG +OP_DONT_INSERT_EMPTY_FRAGMENTS: int = _lib.SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS +OP_CIPHER_SERVER_PREFERENCE: int = _lib.SSL_OP_CIPHER_SERVER_PREFERENCE +OP_TLS_ROLLBACK_BUG: int = _lib.SSL_OP_TLS_ROLLBACK_BUG +OP_PKCS1_CHECK_1 = _lib.SSL_OP_PKCS1_CHECK_1 +OP_PKCS1_CHECK_2: int = _lib.SSL_OP_PKCS1_CHECK_2 +OP_NETSCAPE_CA_DN_BUG: int = _lib.SSL_OP_NETSCAPE_CA_DN_BUG +OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: int = ( + _lib.SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG +) +OP_NO_COMPRESSION: int = _lib.SSL_OP_NO_COMPRESSION + +OP_NO_QUERY_MTU: int = _lib.SSL_OP_NO_QUERY_MTU +OP_COOKIE_EXCHANGE: int = _lib.SSL_OP_COOKIE_EXCHANGE +OP_NO_TICKET: int = _lib.SSL_OP_NO_TICKET + +try: + OP_NO_RENEGOTIATION: int = _lib.SSL_OP_NO_RENEGOTIATION + __all__.append("OP_NO_RENEGOTIATION") +except AttributeError: + pass + +try: + OP_IGNORE_UNEXPECTED_EOF: int = _lib.SSL_OP_IGNORE_UNEXPECTED_EOF + __all__.append("OP_IGNORE_UNEXPECTED_EOF") +except AttributeError: + pass + +try: + OP_LEGACY_SERVER_CONNECT: int = _lib.SSL_OP_LEGACY_SERVER_CONNECT + __all__.append("OP_LEGACY_SERVER_CONNECT") +except AttributeError: + pass + +OP_ALL: int = _lib.SSL_OP_ALL + +VERIFY_PEER: int = _lib.SSL_VERIFY_PEER +VERIFY_FAIL_IF_NO_PEER_CERT: int = _lib.SSL_VERIFY_FAIL_IF_NO_PEER_CERT +VERIFY_CLIENT_ONCE: int = _lib.SSL_VERIFY_CLIENT_ONCE +VERIFY_NONE: int = _lib.SSL_VERIFY_NONE + +SESS_CACHE_OFF: int = _lib.SSL_SESS_CACHE_OFF +SESS_CACHE_CLIENT: int = _lib.SSL_SESS_CACHE_CLIENT +SESS_CACHE_SERVER: int = _lib.SSL_SESS_CACHE_SERVER +SESS_CACHE_BOTH: int = _lib.SSL_SESS_CACHE_BOTH +SESS_CACHE_NO_AUTO_CLEAR: int = _lib.SSL_SESS_CACHE_NO_AUTO_CLEAR +SESS_CACHE_NO_INTERNAL_LOOKUP: int = _lib.SSL_SESS_CACHE_NO_INTERNAL_LOOKUP +SESS_CACHE_NO_INTERNAL_STORE: int = _lib.SSL_SESS_CACHE_NO_INTERNAL_STORE +SESS_CACHE_NO_INTERNAL: int = _lib.SSL_SESS_CACHE_NO_INTERNAL + +SSL_ST_CONNECT: int = _lib.SSL_ST_CONNECT +SSL_ST_ACCEPT: int = _lib.SSL_ST_ACCEPT +SSL_ST_MASK: int = _lib.SSL_ST_MASK + +SSL_CB_LOOP: int = _lib.SSL_CB_LOOP +SSL_CB_EXIT: int = _lib.SSL_CB_EXIT +SSL_CB_READ: int = _lib.SSL_CB_READ +SSL_CB_WRITE: int = _lib.SSL_CB_WRITE +SSL_CB_ALERT: int = _lib.SSL_CB_ALERT +SSL_CB_READ_ALERT: int = _lib.SSL_CB_READ_ALERT +SSL_CB_WRITE_ALERT: int = _lib.SSL_CB_WRITE_ALERT +SSL_CB_ACCEPT_LOOP: int = _lib.SSL_CB_ACCEPT_LOOP +SSL_CB_ACCEPT_EXIT: int = _lib.SSL_CB_ACCEPT_EXIT +SSL_CB_CONNECT_LOOP: int = _lib.SSL_CB_CONNECT_LOOP +SSL_CB_CONNECT_EXIT: int = _lib.SSL_CB_CONNECT_EXIT +SSL_CB_HANDSHAKE_START: int = _lib.SSL_CB_HANDSHAKE_START +SSL_CB_HANDSHAKE_DONE: int = _lib.SSL_CB_HANDSHAKE_DONE + +_Buffer = typing.Union[bytes, bytearray, memoryview] +_T = TypeVar("_T") + + +class _NoOverlappingProtocols: + pass + + +NO_OVERLAPPING_PROTOCOLS = _NoOverlappingProtocols() + +# Callback types. +_ALPNSelectCallback = Callable[ + [ + "Connection", + typing.List[bytes], + ], + typing.Union[bytes, _NoOverlappingProtocols], +] +_CookieGenerateCallback = Callable[["Connection"], bytes] +_CookieVerifyCallback = Callable[["Connection", bytes], bool] +_OCSPClientCallback = Callable[["Connection", bytes, Optional[_T]], bool] +_OCSPServerCallback = Callable[["Connection", Optional[_T]], bytes] +_PassphraseCallback = Callable[[int, bool, Optional[_T]], bytes] +_VerifyCallback = Callable[["Connection", X509, int, int, int], bool] + + +class X509VerificationCodes: + """ + Success and error codes for X509 verification, as returned by the + underlying ``X509_STORE_CTX_get_error()`` function and passed by pyOpenSSL + to verification callback functions. + + See `OpenSSL Verification Errors + `_ + for details. + """ + + OK = _lib.X509_V_OK + ERR_UNABLE_TO_GET_ISSUER_CERT = _lib.X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT + ERR_UNABLE_TO_GET_CRL = _lib.X509_V_ERR_UNABLE_TO_GET_CRL + ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE = ( + _lib.X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE + ) + ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE = ( + _lib.X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE + ) + ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY = ( + _lib.X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY + ) + ERR_CERT_SIGNATURE_FAILURE = _lib.X509_V_ERR_CERT_SIGNATURE_FAILURE + ERR_CRL_SIGNATURE_FAILURE = _lib.X509_V_ERR_CRL_SIGNATURE_FAILURE + ERR_CERT_NOT_YET_VALID = _lib.X509_V_ERR_CERT_NOT_YET_VALID + ERR_CERT_HAS_EXPIRED = _lib.X509_V_ERR_CERT_HAS_EXPIRED + ERR_CRL_NOT_YET_VALID = _lib.X509_V_ERR_CRL_NOT_YET_VALID + ERR_CRL_HAS_EXPIRED = _lib.X509_V_ERR_CRL_HAS_EXPIRED + ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD = ( + _lib.X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD + ) + ERR_ERROR_IN_CERT_NOT_AFTER_FIELD = ( + _lib.X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD + ) + ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD = ( + _lib.X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD + ) + ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD = ( + _lib.X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD + ) + ERR_OUT_OF_MEM = _lib.X509_V_ERR_OUT_OF_MEM + ERR_DEPTH_ZERO_SELF_SIGNED_CERT = ( + _lib.X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT + ) + ERR_SELF_SIGNED_CERT_IN_CHAIN = _lib.X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN + ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY = ( + _lib.X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY + ) + ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE = ( + _lib.X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE + ) + ERR_CERT_CHAIN_TOO_LONG = _lib.X509_V_ERR_CERT_CHAIN_TOO_LONG + ERR_CERT_REVOKED = _lib.X509_V_ERR_CERT_REVOKED + ERR_INVALID_CA = _lib.X509_V_ERR_INVALID_CA + ERR_PATH_LENGTH_EXCEEDED = _lib.X509_V_ERR_PATH_LENGTH_EXCEEDED + ERR_INVALID_PURPOSE = _lib.X509_V_ERR_INVALID_PURPOSE + ERR_CERT_UNTRUSTED = _lib.X509_V_ERR_CERT_UNTRUSTED + ERR_CERT_REJECTED = _lib.X509_V_ERR_CERT_REJECTED + ERR_SUBJECT_ISSUER_MISMATCH = _lib.X509_V_ERR_SUBJECT_ISSUER_MISMATCH + ERR_AKID_SKID_MISMATCH = _lib.X509_V_ERR_AKID_SKID_MISMATCH + ERR_AKID_ISSUER_SERIAL_MISMATCH = ( + _lib.X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH + ) + ERR_KEYUSAGE_NO_CERTSIGN = _lib.X509_V_ERR_KEYUSAGE_NO_CERTSIGN + ERR_UNABLE_TO_GET_CRL_ISSUER = _lib.X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER + ERR_UNHANDLED_CRITICAL_EXTENSION = ( + _lib.X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION + ) + ERR_KEYUSAGE_NO_CRL_SIGN = _lib.X509_V_ERR_KEYUSAGE_NO_CRL_SIGN + ERR_UNHANDLED_CRITICAL_CRL_EXTENSION = ( + _lib.X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION + ) + ERR_INVALID_NON_CA = _lib.X509_V_ERR_INVALID_NON_CA + ERR_PROXY_PATH_LENGTH_EXCEEDED = _lib.X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED + ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE = ( + _lib.X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE + ) + ERR_PROXY_CERTIFICATES_NOT_ALLOWED = ( + _lib.X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED + ) + ERR_INVALID_EXTENSION = _lib.X509_V_ERR_INVALID_EXTENSION + ERR_INVALID_POLICY_EXTENSION = _lib.X509_V_ERR_INVALID_POLICY_EXTENSION + ERR_NO_EXPLICIT_POLICY = _lib.X509_V_ERR_NO_EXPLICIT_POLICY + ERR_DIFFERENT_CRL_SCOPE = _lib.X509_V_ERR_DIFFERENT_CRL_SCOPE + ERR_UNSUPPORTED_EXTENSION_FEATURE = ( + _lib.X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE + ) + ERR_UNNESTED_RESOURCE = _lib.X509_V_ERR_UNNESTED_RESOURCE + ERR_PERMITTED_VIOLATION = _lib.X509_V_ERR_PERMITTED_VIOLATION + ERR_EXCLUDED_VIOLATION = _lib.X509_V_ERR_EXCLUDED_VIOLATION + ERR_SUBTREE_MINMAX = _lib.X509_V_ERR_SUBTREE_MINMAX + ERR_UNSUPPORTED_CONSTRAINT_TYPE = ( + _lib.X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE + ) + ERR_UNSUPPORTED_CONSTRAINT_SYNTAX = ( + _lib.X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX + ) + ERR_UNSUPPORTED_NAME_SYNTAX = _lib.X509_V_ERR_UNSUPPORTED_NAME_SYNTAX + ERR_CRL_PATH_VALIDATION_ERROR = _lib.X509_V_ERR_CRL_PATH_VALIDATION_ERROR + ERR_HOSTNAME_MISMATCH = _lib.X509_V_ERR_HOSTNAME_MISMATCH + ERR_EMAIL_MISMATCH = _lib.X509_V_ERR_EMAIL_MISMATCH + ERR_IP_ADDRESS_MISMATCH = _lib.X509_V_ERR_IP_ADDRESS_MISMATCH + ERR_APPLICATION_VERIFICATION = _lib.X509_V_ERR_APPLICATION_VERIFICATION + + +# Taken from https://golang.org/src/crypto/x509/root_linux.go +_CERTIFICATE_FILE_LOCATIONS = [ + "/etc/ssl/certs/ca-certificates.crt", # Debian/Ubuntu/Gentoo etc. + "/etc/pki/tls/certs/ca-bundle.crt", # Fedora/RHEL 6 + "/etc/ssl/ca-bundle.pem", # OpenSUSE + "/etc/pki/tls/cacert.pem", # OpenELEC + "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem", # CentOS/RHEL 7 +] + +_CERTIFICATE_PATH_LOCATIONS = [ + "/etc/ssl/certs", # SLES10/SLES11 +] + +# These values are compared to output from cffi's ffi.string so they must be +# byte strings. +_CRYPTOGRAPHY_MANYLINUX_CA_DIR = b"/opt/pyca/cryptography/openssl/certs" +_CRYPTOGRAPHY_MANYLINUX_CA_FILE = b"/opt/pyca/cryptography/openssl/cert.pem" + + +class Error(Exception): + """ + An error occurred in an `OpenSSL.SSL` API. + """ + + +_raise_current_error = partial(_exception_from_error_queue, Error) +_openssl_assert = _make_assert(Error) + + +class WantReadError(Error): + pass + + +class WantWriteError(Error): + pass + + +class WantX509LookupError(Error): + pass + + +class ZeroReturnError(Error): + pass + + +class SysCallError(Error): + pass + + +class _CallbackExceptionHelper: + """ + A base class for wrapper classes that allow for intelligent exception + handling in OpenSSL callbacks. + + :ivar list _problems: Any exceptions that occurred while executing in a + context where they could not be raised in the normal way. Typically + this is because OpenSSL has called into some Python code and requires a + return value. The exceptions are saved to be raised later when it is + possible to do so. + """ + + def __init__(self) -> None: + self._problems: list[Exception] = [] + + def raise_if_problem(self) -> None: + """ + Raise an exception from the OpenSSL error queue or that was previously + captured whe running a callback. + """ + if self._problems: + try: + _raise_current_error() + except Error: + pass + raise self._problems.pop(0) + + +class _VerifyHelper(_CallbackExceptionHelper): + """ + Wrap a callback such that it can be used as a certificate verification + callback. + """ + + def __init__(self, callback: _VerifyCallback) -> None: + _CallbackExceptionHelper.__init__(self) + + @wraps(callback) + def wrapper(ok, store_ctx): # type: ignore[no-untyped-def] + x509 = _lib.X509_STORE_CTX_get_current_cert(store_ctx) + _lib.X509_up_ref(x509) + cert = X509._from_raw_x509_ptr(x509) + error_number = _lib.X509_STORE_CTX_get_error(store_ctx) + error_depth = _lib.X509_STORE_CTX_get_error_depth(store_ctx) + + index = _lib.SSL_get_ex_data_X509_STORE_CTX_idx() + ssl = _lib.X509_STORE_CTX_get_ex_data(store_ctx, index) + connection = Connection._reverse_mapping[ssl] + + try: + result = callback( + connection, cert, error_number, error_depth, ok + ) + except Exception as e: + self._problems.append(e) + return 0 + else: + if result: + _lib.X509_STORE_CTX_set_error(store_ctx, _lib.X509_V_OK) + return 1 + else: + return 0 + + self.callback = _ffi.callback( + "int (*)(int, X509_STORE_CTX *)", wrapper + ) + + +class _ALPNSelectHelper(_CallbackExceptionHelper): + """ + Wrap a callback such that it can be used as an ALPN selection callback. + """ + + def __init__(self, callback: _ALPNSelectCallback) -> None: + _CallbackExceptionHelper.__init__(self) + + @wraps(callback) + def wrapper(ssl, out, outlen, in_, inlen, arg): # type: ignore[no-untyped-def] + try: + conn = Connection._reverse_mapping[ssl] + + # The string passed to us is made up of multiple + # length-prefixed bytestrings. We need to split that into a + # list. + instr = _ffi.buffer(in_, inlen)[:] + protolist = [] + while instr: + encoded_len = instr[0] + proto = instr[1 : encoded_len + 1] + protolist.append(proto) + instr = instr[encoded_len + 1 :] + + # Call the callback + outbytes = callback(conn, protolist) + any_accepted = True + if outbytes is NO_OVERLAPPING_PROTOCOLS: + outbytes = b"" + any_accepted = False + elif not isinstance(outbytes, bytes): + raise TypeError( + "ALPN callback must return a bytestring or the " + "special NO_OVERLAPPING_PROTOCOLS sentinel value." + ) + + # Save our callback arguments on the connection object to make + # sure that they don't get freed before OpenSSL can use them. + # Then, return them in the appropriate output parameters. + conn._alpn_select_callback_args = [ + _ffi.new("unsigned char *", len(outbytes)), + _ffi.new("unsigned char[]", outbytes), + ] + outlen[0] = conn._alpn_select_callback_args[0][0] + out[0] = conn._alpn_select_callback_args[1] + if not any_accepted: + return _lib.SSL_TLSEXT_ERR_NOACK + return _lib.SSL_TLSEXT_ERR_OK + except Exception as e: + self._problems.append(e) + return _lib.SSL_TLSEXT_ERR_ALERT_FATAL + + self.callback = _ffi.callback( + ( + "int (*)(SSL *, unsigned char **, unsigned char *, " + "const unsigned char *, unsigned int, void *)" + ), + wrapper, + ) + + +class _OCSPServerCallbackHelper(_CallbackExceptionHelper): + """ + Wrap a callback such that it can be used as an OCSP callback for the server + side. + + Annoyingly, OpenSSL defines one OCSP callback but uses it in two different + ways. For servers, that callback is expected to retrieve some OCSP data and + hand it to OpenSSL, and may return only SSL_TLSEXT_ERR_OK, + SSL_TLSEXT_ERR_FATAL, and SSL_TLSEXT_ERR_NOACK. For clients, that callback + is expected to check the OCSP data, and returns a negative value on error, + 0 if the response is not acceptable, or positive if it is. These are + mutually exclusive return code behaviours, and they mean that we need two + helpers so that we always return an appropriate error code if the user's + code throws an exception. + + Given that we have to have two helpers anyway, these helpers are a bit more + helpery than most: specifically, they hide a few more of the OpenSSL + functions so that the user has an easier time writing these callbacks. + + This helper implements the server side. + """ + + def __init__(self, callback: _OCSPServerCallback[Any]) -> None: + _CallbackExceptionHelper.__init__(self) + + @wraps(callback) + def wrapper(ssl, cdata): # type: ignore[no-untyped-def] + try: + conn = Connection._reverse_mapping[ssl] + + # Extract the data if any was provided. + if cdata != _ffi.NULL: + data = _ffi.from_handle(cdata) + else: + data = None + + # Call the callback. + ocsp_data = callback(conn, data) + + if not isinstance(ocsp_data, bytes): + raise TypeError("OCSP callback must return a bytestring.") + + # If the OCSP data was provided, we will pass it to OpenSSL. + # However, we have an early exit here: if no OCSP data was + # provided we will just exit out and tell OpenSSL that there + # is nothing to do. + if not ocsp_data: + return 3 # SSL_TLSEXT_ERR_NOACK + + # OpenSSL takes ownership of this data and expects it to have + # been allocated by OPENSSL_malloc. + ocsp_data_length = len(ocsp_data) + data_ptr = _lib.OPENSSL_malloc(ocsp_data_length) + _ffi.buffer(data_ptr, ocsp_data_length)[:] = ocsp_data + + _lib.SSL_set_tlsext_status_ocsp_resp( + ssl, data_ptr, ocsp_data_length + ) + + return 0 + except Exception as e: + self._problems.append(e) + return 2 # SSL_TLSEXT_ERR_ALERT_FATAL + + self.callback = _ffi.callback("int (*)(SSL *, void *)", wrapper) + + +class _OCSPClientCallbackHelper(_CallbackExceptionHelper): + """ + Wrap a callback such that it can be used as an OCSP callback for the client + side. + + Annoyingly, OpenSSL defines one OCSP callback but uses it in two different + ways. For servers, that callback is expected to retrieve some OCSP data and + hand it to OpenSSL, and may return only SSL_TLSEXT_ERR_OK, + SSL_TLSEXT_ERR_FATAL, and SSL_TLSEXT_ERR_NOACK. For clients, that callback + is expected to check the OCSP data, and returns a negative value on error, + 0 if the response is not acceptable, or positive if it is. These are + mutually exclusive return code behaviours, and they mean that we need two + helpers so that we always return an appropriate error code if the user's + code throws an exception. + + Given that we have to have two helpers anyway, these helpers are a bit more + helpery than most: specifically, they hide a few more of the OpenSSL + functions so that the user has an easier time writing these callbacks. + + This helper implements the client side. + """ + + def __init__(self, callback: _OCSPClientCallback[Any]) -> None: + _CallbackExceptionHelper.__init__(self) + + @wraps(callback) + def wrapper(ssl, cdata): # type: ignore[no-untyped-def] + try: + conn = Connection._reverse_mapping[ssl] + + # Extract the data if any was provided. + if cdata != _ffi.NULL: + data = _ffi.from_handle(cdata) + else: + data = None + + # Get the OCSP data. + ocsp_ptr = _ffi.new("unsigned char **") + ocsp_len = _lib.SSL_get_tlsext_status_ocsp_resp(ssl, ocsp_ptr) + if ocsp_len < 0: + # No OCSP data. + ocsp_data = b"" + else: + # Copy the OCSP data, then pass it to the callback. + ocsp_data = _ffi.buffer(ocsp_ptr[0], ocsp_len)[:] + + valid = callback(conn, ocsp_data, data) + + # Return 1 on success or 0 on error. + return int(bool(valid)) + + except Exception as e: + self._problems.append(e) + # Return negative value if an exception is hit. + return -1 + + self.callback = _ffi.callback("int (*)(SSL *, void *)", wrapper) + + +class _CookieGenerateCallbackHelper(_CallbackExceptionHelper): + def __init__(self, callback: _CookieGenerateCallback) -> None: + _CallbackExceptionHelper.__init__(self) + + @wraps(callback) + def wrapper(ssl, out, outlen): # type: ignore[no-untyped-def] + try: + conn = Connection._reverse_mapping[ssl] + cookie = callback(conn) + out[0 : len(cookie)] = cookie + outlen[0] = len(cookie) + return 1 + except Exception as e: + self._problems.append(e) + # "a zero return value can be used to abort the handshake" + return 0 + + self.callback = _ffi.callback( + "int (*)(SSL *, unsigned char *, unsigned int *)", + wrapper, + ) + + +class _CookieVerifyCallbackHelper(_CallbackExceptionHelper): + def __init__(self, callback: _CookieVerifyCallback) -> None: + _CallbackExceptionHelper.__init__(self) + + @wraps(callback) + def wrapper(ssl, c_cookie, cookie_len): # type: ignore[no-untyped-def] + try: + conn = Connection._reverse_mapping[ssl] + return callback(conn, bytes(c_cookie[0:cookie_len])) + except Exception as e: + self._problems.append(e) + return 0 + + self.callback = _ffi.callback( + "int (*)(SSL *, unsigned char *, unsigned int)", + wrapper, + ) + + +def _asFileDescriptor(obj: Any) -> int: + fd = None + if not isinstance(obj, int): + meth = getattr(obj, "fileno", None) + if meth is not None: + obj = meth() + + if isinstance(obj, int): + fd = obj + + if not isinstance(fd, int): + raise TypeError("argument must be an int, or have a fileno() method.") + elif fd < 0: + raise ValueError( + f"file descriptor cannot be a negative integer ({fd:i})" + ) + + return fd + + +def OpenSSL_version(type: int) -> bytes: + """ + Return a string describing the version of OpenSSL in use. + + :param type: One of the :const:`OPENSSL_` constants defined in this module. + """ + return _ffi.string(_lib.OpenSSL_version(type)) + + +SSLeay_version = OpenSSL_version + + +def _make_requires(flag: int, error: str) -> Callable[[_T], _T]: + """ + Builds a decorator that ensures that functions that rely on OpenSSL + functions that are not present in this build raise NotImplementedError, + rather than AttributeError coming out of cryptography. + + :param flag: A cryptography flag that guards the functions, e.g. + ``Cryptography_HAS_NEXTPROTONEG``. + :param error: The string to be used in the exception if the flag is false. + """ + + def _requires_decorator(func): # type: ignore[no-untyped-def] + if not flag: + + @wraps(func) + def explode(*args, **kwargs): # type: ignore[no-untyped-def] + raise NotImplementedError(error) + + return explode + else: + return func + + return _requires_decorator + + +_requires_keylog = _make_requires( + getattr(_lib, "Cryptography_HAS_KEYLOG", 0), "Key logging not available" +) + + +class Session: + """ + A class representing an SSL session. A session defines certain connection + parameters which may be re-used to speed up the setup of subsequent + connections. + + .. versionadded:: 0.14 + """ + + _session: Any + + +F = TypeVar("F", bound=Callable[..., Any]) + + +def _require_not_used(f: F) -> F: + @wraps(f) + def inner(self: Context, *args: Any, **kwargs: Any) -> Any: + if self._used: + warnings.warn( + ( + "Attempting to mutate a Context after a Connection was " + "created. In the future, this will raise an exception" + ), + DeprecationWarning, + stacklevel=2, + ) + return f(self, *args, **kwargs) + + return typing.cast(F, inner) + + +class Context: + """ + :class:`OpenSSL.SSL.Context` instances define the parameters for setting + up new SSL connections. + + :param method: One of TLS_METHOD, TLS_CLIENT_METHOD, TLS_SERVER_METHOD, + DTLS_METHOD, DTLS_CLIENT_METHOD, or DTLS_SERVER_METHOD. + SSLv23_METHOD, TLSv1_METHOD, etc. are deprecated and should + not be used. + """ + + _methods: typing.ClassVar[ + dict[int, tuple[Callable[[], Any], int | None]] + ] = { + SSLv23_METHOD: (_lib.TLS_method, None), + TLSv1_METHOD: (_lib.TLS_method, TLS1_VERSION), + TLSv1_1_METHOD: (_lib.TLS_method, TLS1_1_VERSION), + TLSv1_2_METHOD: (_lib.TLS_method, TLS1_2_VERSION), + TLS_METHOD: (_lib.TLS_method, None), + TLS_SERVER_METHOD: (_lib.TLS_server_method, None), + TLS_CLIENT_METHOD: (_lib.TLS_client_method, None), + DTLS_METHOD: (_lib.DTLS_method, None), + DTLS_SERVER_METHOD: (_lib.DTLS_server_method, None), + DTLS_CLIENT_METHOD: (_lib.DTLS_client_method, None), + } + + def __init__(self, method: int) -> None: + if not isinstance(method, int): + raise TypeError("method must be an integer") + + try: + method_func, version = self._methods[method] + except KeyError: + raise ValueError("No such protocol") + + method_obj = method_func() + _openssl_assert(method_obj != _ffi.NULL) + + context = _lib.SSL_CTX_new(method_obj) + _openssl_assert(context != _ffi.NULL) + context = _ffi.gc(context, _lib.SSL_CTX_free) + + self._context = context + self._used = False + self._passphrase_helper: _PassphraseHelper | None = None + self._passphrase_callback: _PassphraseCallback[Any] | None = None + self._passphrase_userdata: Any | None = None + self._verify_helper: _VerifyHelper | None = None + self._verify_callback: _VerifyCallback | None = None + self._info_callback = None + self._keylog_callback = None + self._tlsext_servername_callback = None + self._app_data = None + self._alpn_select_helper: _ALPNSelectHelper | None = None + self._alpn_select_callback: _ALPNSelectCallback | None = None + self._ocsp_helper: ( + _OCSPClientCallbackHelper | _OCSPServerCallbackHelper | None + ) = None + self._ocsp_callback: ( + _OCSPClientCallback[Any] | _OCSPServerCallback[Any] | None + ) = None + self._ocsp_data: Any | None = None + self._cookie_generate_helper: _CookieGenerateCallbackHelper | None = ( + None + ) + self._cookie_verify_helper: _CookieVerifyCallbackHelper | None = None + + self.set_mode( + _lib.SSL_MODE_ENABLE_PARTIAL_WRITE + | _lib.SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER + ) + if version is not None: + self.set_min_proto_version(version) + self.set_max_proto_version(version) + + @_require_not_used + def set_min_proto_version(self, version: int) -> None: + """ + Set the minimum supported protocol version. Setting the minimum + version to 0 will enable protocol versions down to the lowest version + supported by the library. + + If the underlying OpenSSL build is missing support for the selected + version, this method will raise an exception. + """ + _openssl_assert( + _lib.SSL_CTX_set_min_proto_version(self._context, version) == 1 + ) + + @_require_not_used + def set_max_proto_version(self, version: int) -> None: + """ + Set the maximum supported protocol version. Setting the maximum + version to 0 will enable protocol versions up to the highest version + supported by the library. + + If the underlying OpenSSL build is missing support for the selected + version, this method will raise an exception. + """ + _openssl_assert( + _lib.SSL_CTX_set_max_proto_version(self._context, version) == 1 + ) + + @_require_not_used + def load_verify_locations( + self, + cafile: _StrOrBytesPath | None, + capath: _StrOrBytesPath | None = None, + ) -> None: + """ + Let SSL know where we can find trusted certificates for the certificate + chain. Note that the certificates have to be in PEM format. + + If capath is passed, it must be a directory prepared using the + ``c_rehash`` tool included with OpenSSL. Either, but not both, of + *pemfile* or *capath* may be :data:`None`. + + :param cafile: In which file we can find the certificates (``bytes`` or + ``str``). + :param capath: In which directory we can find the certificates + (``bytes`` or ``str``). + + :return: None + """ + if cafile is None: + cafile = _ffi.NULL + else: + cafile = _path_bytes(cafile) + + if capath is None: + capath = _ffi.NULL + else: + capath = _path_bytes(capath) + + load_result = _lib.SSL_CTX_load_verify_locations( + self._context, cafile, capath + ) + if not load_result: + _raise_current_error() + + def _wrap_callback( + self, callback: _PassphraseCallback[_T] + ) -> _PassphraseHelper: + @wraps(callback) + def wrapper(size: int, verify: bool, userdata: Any) -> bytes: + return callback(size, verify, self._passphrase_userdata) + + return _PassphraseHelper( + FILETYPE_PEM, wrapper, more_args=True, truncate=True + ) + + @_require_not_used + def set_passwd_cb( + self, + callback: _PassphraseCallback[_T], + userdata: _T | None = None, + ) -> None: + """ + Set the passphrase callback. This function will be called + when a private key with a passphrase is loaded. + + :param callback: The Python callback to use. This must accept three + positional arguments. First, an integer giving the maximum length + of the passphrase it may return. If the returned passphrase is + longer than this, it will be truncated. Second, a boolean value + which will be true if the user should be prompted for the + passphrase twice and the callback should verify that the two values + supplied are equal. Third, the value given as the *userdata* + parameter to :meth:`set_passwd_cb`. The *callback* must return + a byte string. If an error occurs, *callback* should return a false + value (e.g. an empty string). + :param userdata: (optional) A Python object which will be given as + argument to the callback + :return: None + """ + if not callable(callback): + raise TypeError("callback must be callable") + + self._passphrase_helper = self._wrap_callback(callback) + self._passphrase_callback = self._passphrase_helper.callback + _lib.SSL_CTX_set_default_passwd_cb( + self._context, self._passphrase_callback + ) + self._passphrase_userdata = userdata + + @_require_not_used + def set_default_verify_paths(self) -> None: + """ + Specify that the platform provided CA certificates are to be used for + verification purposes. This method has some caveats related to the + binary wheels that cryptography (pyOpenSSL's primary dependency) ships: + + * macOS will only load certificates using this method if the user has + the ``openssl@1.1`` `Homebrew `_ formula installed + in the default location. + * Windows will not work. + * manylinux cryptography wheels will work on most common Linux + distributions in pyOpenSSL 17.1.0 and above. pyOpenSSL detects the + manylinux wheel and attempts to load roots via a fallback path. + + :return: None + """ + # SSL_CTX_set_default_verify_paths will attempt to load certs from + # both a cafile and capath that are set at compile time. However, + # it will first check environment variables and, if present, load + # those paths instead + set_result = _lib.SSL_CTX_set_default_verify_paths(self._context) + _openssl_assert(set_result == 1) + # After attempting to set default_verify_paths we need to know whether + # to go down the fallback path. + # First we'll check to see if any env vars have been set. If so, + # we won't try to do anything else because the user has set the path + # themselves. + if not self._check_env_vars_set("SSL_CERT_DIR", "SSL_CERT_FILE"): + default_dir = _ffi.string(_lib.X509_get_default_cert_dir()) + default_file = _ffi.string(_lib.X509_get_default_cert_file()) + # Now we check to see if the default_dir and default_file are set + # to the exact values we use in our manylinux builds. If they are + # then we know to load the fallbacks + if ( + default_dir == _CRYPTOGRAPHY_MANYLINUX_CA_DIR + and default_file == _CRYPTOGRAPHY_MANYLINUX_CA_FILE + ): + # This is manylinux, let's load our fallback paths + self._fallback_default_verify_paths( + _CERTIFICATE_FILE_LOCATIONS, _CERTIFICATE_PATH_LOCATIONS + ) + + def _check_env_vars_set(self, dir_env_var: str, file_env_var: str) -> bool: + """ + Check to see if the default cert dir/file environment vars are present. + + :return: bool + """ + return ( + os.environ.get(file_env_var) is not None + or os.environ.get(dir_env_var) is not None + ) + + def _fallback_default_verify_paths( + self, file_path: list[str], dir_path: list[str] + ) -> None: + """ + Default verify paths are based on the compiled version of OpenSSL. + However, when pyca/cryptography is compiled as a manylinux wheel + that compiled location can potentially be wrong. So, like Go, we + will try a predefined set of paths and attempt to load roots + from there. + + :return: None + """ + for cafile in file_path: + if os.path.isfile(cafile): + self.load_verify_locations(cafile) + break + + for capath in dir_path: + if os.path.isdir(capath): + self.load_verify_locations(None, capath) + break + + @_require_not_used + def use_certificate_chain_file(self, certfile: _StrOrBytesPath) -> None: + """ + Load a certificate chain from a file. + + :param certfile: The name of the certificate chain file (``bytes`` or + ``str``). Must be PEM encoded. + + :return: None + """ + certfile = _path_bytes(certfile) + + result = _lib.SSL_CTX_use_certificate_chain_file( + self._context, certfile + ) + if not result: + _raise_current_error() + + @_require_not_used + def use_certificate_file( + self, certfile: _StrOrBytesPath, filetype: int = FILETYPE_PEM + ) -> None: + """ + Load a certificate from a file + + :param certfile: The name of the certificate file (``bytes`` or + ``str``). + :param filetype: (optional) The encoding of the file, which is either + :const:`FILETYPE_PEM` or :const:`FILETYPE_ASN1`. The default is + :const:`FILETYPE_PEM`. + + :return: None + """ + certfile = _path_bytes(certfile) + if not isinstance(filetype, int): + raise TypeError("filetype must be an integer") + + use_result = _lib.SSL_CTX_use_certificate_file( + self._context, certfile, filetype + ) + if not use_result: + _raise_current_error() + + @_require_not_used + def use_certificate(self, cert: X509 | x509.Certificate) -> None: + """ + Load a certificate from a X509 object + + :param cert: The X509 object + :return: None + """ + # Mirrored at Connection.use_certificate + if not isinstance(cert, X509): + cert = X509.from_cryptography(cert) + else: + warnings.warn( + ( + "Passing pyOpenSSL X509 objects is deprecated. You " + "should use a cryptography.x509.Certificate instead." + ), + DeprecationWarning, + stacklevel=2, + ) + + use_result = _lib.SSL_CTX_use_certificate(self._context, cert._x509) + if not use_result: + _raise_current_error() + + @_require_not_used + def add_extra_chain_cert(self, certobj: X509 | x509.Certificate) -> None: + """ + Add certificate to chain + + :param certobj: The X509 certificate object to add to the chain + :return: None + """ + if not isinstance(certobj, X509): + certobj = X509.from_cryptography(certobj) + else: + warnings.warn( + ( + "Passing pyOpenSSL X509 objects is deprecated. You " + "should use a cryptography.x509.Certificate instead." + ), + DeprecationWarning, + stacklevel=2, + ) + + copy = _lib.X509_dup(certobj._x509) + add_result = _lib.SSL_CTX_add_extra_chain_cert(self._context, copy) + if not add_result: + # TODO: This is untested. + _lib.X509_free(copy) + _raise_current_error() + + def _raise_passphrase_exception(self) -> None: + if self._passphrase_helper is not None: + self._passphrase_helper.raise_if_problem(Error) + + _raise_current_error() + + @_require_not_used + def use_privatekey_file( + self, keyfile: _StrOrBytesPath, filetype: int = FILETYPE_PEM + ) -> None: + """ + Load a private key from a file + + :param keyfile: The name of the key file (``bytes`` or ``str``) + :param filetype: (optional) The encoding of the file, which is either + :const:`FILETYPE_PEM` or :const:`FILETYPE_ASN1`. The default is + :const:`FILETYPE_PEM`. + + :return: None + """ + keyfile = _path_bytes(keyfile) + + if not isinstance(filetype, int): + raise TypeError("filetype must be an integer") + + use_result = _lib.SSL_CTX_use_PrivateKey_file( + self._context, keyfile, filetype + ) + if not use_result: + self._raise_passphrase_exception() + + @_require_not_used + def use_privatekey(self, pkey: _PrivateKey | PKey) -> None: + """ + Load a private key from a PKey object + + :param pkey: The PKey object + :return: None + """ + # Mirrored at Connection.use_privatekey + if not isinstance(pkey, PKey): + pkey = PKey.from_cryptography_key(pkey) + else: + warnings.warn( + ( + "Passing pyOpenSSL PKey objects is deprecated. You " + "should use a cryptography private key instead." + ), + DeprecationWarning, + stacklevel=2, + ) + + use_result = _lib.SSL_CTX_use_PrivateKey(self._context, pkey._pkey) + if not use_result: + self._raise_passphrase_exception() + + def check_privatekey(self) -> None: + """ + Check if the private key (loaded with :meth:`use_privatekey`) matches + the certificate (loaded with :meth:`use_certificate`) + + :return: :data:`None` (raises :exc:`Error` if something's wrong) + """ + if not _lib.SSL_CTX_check_private_key(self._context): + _raise_current_error() + + @_require_not_used + def load_client_ca(self, cafile: bytes) -> None: + """ + Load the trusted certificates that will be sent to the client. Does + not actually imply any of the certificates are trusted; that must be + configured separately. + + :param bytes cafile: The path to a certificates file in PEM format. + :return: None + """ + ca_list = _lib.SSL_load_client_CA_file( + _text_to_bytes_and_warn("cafile", cafile) + ) + _openssl_assert(ca_list != _ffi.NULL) + _lib.SSL_CTX_set_client_CA_list(self._context, ca_list) + + @_require_not_used + def set_session_id(self, buf: bytes) -> None: + """ + Set the session id to *buf* within which a session can be reused for + this Context object. This is needed when doing session resumption, + because there is no way for a stored session to know which Context + object it is associated with. + + :param bytes buf: The session id. + + :returns: None + """ + buf = _text_to_bytes_and_warn("buf", buf) + _openssl_assert( + _lib.SSL_CTX_set_session_id_context(self._context, buf, len(buf)) + == 1 + ) + + @_require_not_used + def set_session_cache_mode(self, mode: int) -> int: + """ + Set the behavior of the session cache used by all connections using + this Context. The previously set mode is returned. See + :const:`SESS_CACHE_*` for details about particular modes. + + :param mode: One or more of the SESS_CACHE_* flags (combine using + bitwise or) + :returns: The previously set caching mode. + + .. versionadded:: 0.14 + """ + if not isinstance(mode, int): + raise TypeError("mode must be an integer") + + return _lib.SSL_CTX_set_session_cache_mode(self._context, mode) + + def get_session_cache_mode(self) -> int: + """ + Get the current session cache mode. + + :returns: The currently used cache mode. + + .. versionadded:: 0.14 + """ + return _lib.SSL_CTX_get_session_cache_mode(self._context) + + @_require_not_used + def set_verify( + self, mode: int, callback: _VerifyCallback | None = None + ) -> None: + """ + Set the verification flags for this Context object to *mode* and + specify that *callback* should be used for verification callbacks. + + :param mode: The verify mode, this should be one of + :const:`VERIFY_NONE` and :const:`VERIFY_PEER`. If + :const:`VERIFY_PEER` is used, *mode* can be OR:ed with + :const:`VERIFY_FAIL_IF_NO_PEER_CERT` and + :const:`VERIFY_CLIENT_ONCE` to further control the behaviour. + :param callback: The optional Python verification callback to use. + This should take five arguments: A Connection object, an X509 + object, and three integer variables, which are in turn potential + error number, error depth and return code. *callback* should + return True if verification passes and False otherwise. + If omitted, OpenSSL's default verification is used. + :return: None + + See SSL_CTX_set_verify(3SSL) for further details. + """ + if not isinstance(mode, int): + raise TypeError("mode must be an integer") + + if callback is None: + self._verify_helper = None + self._verify_callback = None + _lib.SSL_CTX_set_verify(self._context, mode, _ffi.NULL) + else: + if not callable(callback): + raise TypeError("callback must be callable") + + self._verify_helper = _VerifyHelper(callback) + self._verify_callback = self._verify_helper.callback + _lib.SSL_CTX_set_verify(self._context, mode, self._verify_callback) + + @_require_not_used + def set_verify_depth(self, depth: int) -> None: + """ + Set the maximum depth for the certificate chain verification that shall + be allowed for this Context object. + + :param depth: An integer specifying the verify depth + :return: None + """ + if not isinstance(depth, int): + raise TypeError("depth must be an integer") + + _lib.SSL_CTX_set_verify_depth(self._context, depth) + + def get_verify_mode(self) -> int: + """ + Retrieve the Context object's verify mode, as set by + :meth:`set_verify`. + + :return: The verify mode + """ + return _lib.SSL_CTX_get_verify_mode(self._context) + + def get_verify_depth(self) -> int: + """ + Retrieve the Context object's verify depth, as set by + :meth:`set_verify_depth`. + + :return: The verify depth + """ + return _lib.SSL_CTX_get_verify_depth(self._context) + + @_require_not_used + def load_tmp_dh(self, dhfile: _StrOrBytesPath) -> None: + """ + Load parameters for Ephemeral Diffie-Hellman + + :param dhfile: The file to load EDH parameters from (``bytes`` or + ``str``). + + :return: None + """ + dhfile = _path_bytes(dhfile) + + bio = _lib.BIO_new_file(dhfile, b"r") + if bio == _ffi.NULL: + _raise_current_error() + bio = _ffi.gc(bio, _lib.BIO_free) + + dh = _lib.PEM_read_bio_DHparams(bio, _ffi.NULL, _ffi.NULL, _ffi.NULL) + dh = _ffi.gc(dh, _lib.DH_free) + res = _lib.SSL_CTX_set_tmp_dh(self._context, dh) + _openssl_assert(res == 1) + + @_require_not_used + def set_tmp_ecdh(self, curve: _EllipticCurve | ec.EllipticCurve) -> None: + """ + Select a curve to use for ECDHE key exchange. + + :param curve: A curve instance from cryptography + (:class:`~cryptogragraphy.hazmat.primitives.asymmetric.ec.EllipticCurve`). + Alternatively (deprecated) a curve object from either + :meth:`OpenSSL.crypto.get_elliptic_curve` or + :meth:`OpenSSL.crypto.get_elliptic_curves`. + + :return: None + """ + + if isinstance(curve, _EllipticCurve): + warnings.warn( + ( + "Passing pyOpenSSL elliptic curves to set_tmp_ecdh is " + "deprecated. You should use cryptography's elliptic curve " + "types instead." + ), + DeprecationWarning, + stacklevel=2, + ) + _lib.SSL_CTX_set_tmp_ecdh(self._context, curve._to_EC_KEY()) + else: + name = curve.name + if name == "secp192r1": + name = "prime192v1" + elif name == "secp256r1": + name = "prime256v1" + nid = _lib.OBJ_txt2nid(name.encode()) + if nid == _lib.NID_undef: + _raise_current_error() + + ec = _lib.EC_KEY_new_by_curve_name(nid) + _openssl_assert(ec != _ffi.NULL) + ec = _ffi.gc(ec, _lib.EC_KEY_free) + _lib.SSL_CTX_set_tmp_ecdh(self._context, ec) + + @_require_not_used + def set_cipher_list(self, cipher_list: bytes) -> None: + """ + Set the list of ciphers to be used in this context. + + See the OpenSSL manual for more information (e.g. + :manpage:`ciphers(1)`). + + Note this API does not change the cipher suites used in TLS 1.3 + Use `set_tls13_ciphersuites` for that. + + :param bytes cipher_list: An OpenSSL cipher string. + :return: None + """ + cipher_list = _text_to_bytes_and_warn("cipher_list", cipher_list) + + if not isinstance(cipher_list, bytes): + raise TypeError("cipher_list must be a byte string.") + + _openssl_assert( + _lib.SSL_CTX_set_cipher_list(self._context, cipher_list) == 1 + ) + + @_require_not_used + def set_tls13_ciphersuites(self, ciphersuites: bytes) -> None: + """ + Set the list of TLS 1.3 ciphers to be used in this context. + OpenSSL maintains a separate list of TLS 1.3+ ciphers to + ciphers for TLS 1.2 and lowers. + + See the OpenSSL manual for more information (e.g. + :manpage:`ciphers(1)`). + + :param bytes ciphersuites: An OpenSSL cipher string containing + TLS 1.3+ ciphersuites. + :return: None + + .. versionadded:: 25.2.0 + """ + if not isinstance(ciphersuites, bytes): + raise TypeError("ciphersuites must be a byte string.") + + _openssl_assert( + _lib.SSL_CTX_set_ciphersuites(self._context, ciphersuites) == 1 + ) + + @_require_not_used + def set_client_ca_list( + self, certificate_authorities: Sequence[X509Name] + ) -> None: + """ + Set the list of preferred client certificate signers for this server + context. + + This list of certificate authorities will be sent to the client when + the server requests a client certificate. + + :param certificate_authorities: a sequence of X509Names. + :return: None + + .. versionadded:: 0.10 + """ + name_stack = _lib.sk_X509_NAME_new_null() + _openssl_assert(name_stack != _ffi.NULL) + + try: + for ca_name in certificate_authorities: + if not isinstance(ca_name, X509Name): + raise TypeError( + f"client CAs must be X509Name objects, not " + f"{type(ca_name).__name__} objects" + ) + copy = _lib.X509_NAME_dup(ca_name._name) + _openssl_assert(copy != _ffi.NULL) + push_result = _lib.sk_X509_NAME_push(name_stack, copy) + if not push_result: + _lib.X509_NAME_free(copy) + _raise_current_error() + except Exception: + _lib.sk_X509_NAME_free(name_stack) + raise + + _lib.SSL_CTX_set_client_CA_list(self._context, name_stack) + + @_require_not_used + def add_client_ca( + self, certificate_authority: X509 | x509.Certificate + ) -> None: + """ + Add the CA certificate to the list of preferred signers for this + context. + + The list of certificate authorities will be sent to the client when the + server requests a client certificate. + + :param certificate_authority: certificate authority's X509 certificate. + :return: None + + .. versionadded:: 0.10 + """ + if not isinstance(certificate_authority, X509): + certificate_authority = X509.from_cryptography( + certificate_authority + ) + else: + warnings.warn( + ( + "Passing pyOpenSSL X509 objects is deprecated. You " + "should use a cryptography.x509.Certificate instead." + ), + DeprecationWarning, + stacklevel=2, + ) + + add_result = _lib.SSL_CTX_add_client_CA( + self._context, certificate_authority._x509 + ) + _openssl_assert(add_result == 1) + + @_require_not_used + def set_timeout(self, timeout: int) -> None: + """ + Set the timeout for newly created sessions for this Context object to + *timeout*. The default value is 300 seconds. See the OpenSSL manual + for more information (e.g. :manpage:`SSL_CTX_set_timeout(3)`). + + :param timeout: The timeout in (whole) seconds + :return: The previous session timeout + """ + if not isinstance(timeout, int): + raise TypeError("timeout must be an integer") + + return _lib.SSL_CTX_set_timeout(self._context, timeout) + + def get_timeout(self) -> int: + """ + Retrieve session timeout, as set by :meth:`set_timeout`. The default + is 300 seconds. + + :return: The session timeout + """ + return _lib.SSL_CTX_get_timeout(self._context) + + @_require_not_used + def set_info_callback( + self, callback: Callable[[Connection, int, int], None] + ) -> None: + """ + Set the information callback to *callback*. This function will be + called from time to time during SSL handshakes. + + :param callback: The Python callback to use. This should take three + arguments: a Connection object and two integers. The first integer + specifies where in the SSL handshake the function was called, and + the other the return code from a (possibly failed) internal + function call. + :return: None + """ + + @wraps(callback) + def wrapper(ssl, where, return_code): # type: ignore[no-untyped-def] + callback(Connection._reverse_mapping[ssl], where, return_code) + + self._info_callback = _ffi.callback( + "void (*)(const SSL *, int, int)", wrapper + ) + _lib.SSL_CTX_set_info_callback(self._context, self._info_callback) + + @_requires_keylog + @_require_not_used + def set_keylog_callback( + self, callback: Callable[[Connection, bytes], None] + ) -> None: + """ + Set the TLS key logging callback to *callback*. This function will be + called whenever TLS key material is generated or received, in order + to allow applications to store this keying material for debugging + purposes. + + :param callback: The Python callback to use. This should take two + arguments: a Connection object and a bytestring that contains + the key material in the format used by NSS for its SSLKEYLOGFILE + debugging output. + :return: None + """ + + @wraps(callback) + def wrapper(ssl, line): # type: ignore[no-untyped-def] + line = _ffi.string(line) + callback(Connection._reverse_mapping[ssl], line) + + self._keylog_callback = _ffi.callback( + "void (*)(const SSL *, const char *)", wrapper + ) + _lib.SSL_CTX_set_keylog_callback(self._context, self._keylog_callback) + + def get_app_data(self) -> Any: + """ + Get the application data (supplied via :meth:`set_app_data()`) + + :return: The application data + """ + return self._app_data + + @_require_not_used + def set_app_data(self, data: Any) -> None: + """ + Set the application data (will be returned from get_app_data()) + + :param data: Any Python object + :return: None + """ + self._app_data = data + + def get_cert_store(self) -> X509Store | None: + """ + Get the certificate store for the context. This can be used to add + "trusted" certificates without using the + :meth:`load_verify_locations` method. + + :return: A X509Store object or None if it does not have one. + """ + store = _lib.SSL_CTX_get_cert_store(self._context) + if store == _ffi.NULL: + # TODO: This is untested. + return None + + pystore = X509Store.__new__(X509Store) + pystore._store = store + return pystore + + @_require_not_used + def set_options(self, options: int) -> int: + """ + Add options. Options set before are not cleared! + This method should be used with the :const:`OP_*` constants. + + :param options: The options to add. + :return: The new option bitmask. + """ + if not isinstance(options, int): + raise TypeError("options must be an integer") + + return _lib.SSL_CTX_set_options(self._context, options) + + @_require_not_used + def set_mode(self, mode: int) -> int: + """ + Add modes via bitmask. Modes set before are not cleared! This method + should be used with the :const:`MODE_*` constants. + + :param mode: The mode to add. + :return: The new mode bitmask. + """ + if not isinstance(mode, int): + raise TypeError("mode must be an integer") + + return _lib.SSL_CTX_set_mode(self._context, mode) + + @_require_not_used + def clear_mode(self, mode_to_clear: int) -> int: + """ + Modes previously set cannot be overwritten without being + cleared first. This method should be used to clear existing modes. + """ + return _lib.SSL_CTX_clear_mode(self._context, mode_to_clear) + + @_require_not_used + def set_tlsext_servername_callback( + self, callback: Callable[[Connection], None] + ) -> None: + """ + Specify a callback function to be called when clients specify a server + name. + + :param callback: The callback function. It will be invoked with one + argument, the Connection instance. + + .. versionadded:: 0.13 + """ + + @wraps(callback) + def wrapper(ssl, alert, arg): # type: ignore[no-untyped-def] + callback(Connection._reverse_mapping[ssl]) + return 0 + + self._tlsext_servername_callback = _ffi.callback( + "int (*)(SSL *, int *, void *)", wrapper + ) + _lib.SSL_CTX_set_tlsext_servername_callback( + self._context, self._tlsext_servername_callback + ) + + @_require_not_used + def set_tlsext_use_srtp(self, profiles: bytes) -> None: + """ + Enable support for negotiating SRTP keying material. + + :param bytes profiles: A colon delimited list of protection profile + names, like ``b'SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32'``. + :return: None + """ + if not isinstance(profiles, bytes): + raise TypeError("profiles must be a byte string.") + + _openssl_assert( + _lib.SSL_CTX_set_tlsext_use_srtp(self._context, profiles) == 0 + ) + + @_require_not_used + def set_alpn_protos(self, protos: list[bytes]) -> None: + """ + Specify the protocols that the client is prepared to speak after the + TLS connection has been negotiated using Application Layer Protocol + Negotiation. + + :param protos: A list of the protocols to be offered to the server. + This list should be a Python list of bytestrings representing the + protocols to offer, e.g. ``[b'http/1.1', b'spdy/2']``. + """ + # Different versions of OpenSSL are inconsistent about how they handle + # empty proto lists (see #1043), so we avoid the problem entirely by + # rejecting them ourselves. + if not protos: + raise ValueError("at least one protocol must be specified") + + # Take the list of protocols and join them together, prefixing them + # with their lengths. + protostr = b"".join( + chain.from_iterable((bytes((len(p),)), p) for p in protos) + ) + + # Build a C string from the list. We don't need to save this off + # because OpenSSL immediately copies the data out. + input_str = _ffi.new("unsigned char[]", protostr) + + # https://www.openssl.org/docs/man1.1.0/man3/SSL_CTX_set_alpn_protos.html: + # SSL_CTX_set_alpn_protos() and SSL_set_alpn_protos() + # return 0 on success, and non-0 on failure. + # WARNING: these functions reverse the return value convention. + _openssl_assert( + _lib.SSL_CTX_set_alpn_protos( + self._context, input_str, len(protostr) + ) + == 0 + ) + + @_require_not_used + def set_alpn_select_callback(self, callback: _ALPNSelectCallback) -> None: + """ + Specify a callback function that will be called on the server when a + client offers protocols using ALPN. + + :param callback: The callback function. It will be invoked with two + arguments: the Connection, and a list of offered protocols as + bytestrings, e.g ``[b'http/1.1', b'spdy/2']``. It can return + one of those bytestrings to indicate the chosen protocol, the + empty bytestring to terminate the TLS connection, or the + :py:obj:`NO_OVERLAPPING_PROTOCOLS` to indicate that no offered + protocol was selected, but that the connection should not be + aborted. + """ + self._alpn_select_helper = _ALPNSelectHelper(callback) + self._alpn_select_callback = self._alpn_select_helper.callback + _lib.SSL_CTX_set_alpn_select_cb( + self._context, self._alpn_select_callback, _ffi.NULL + ) + + def _set_ocsp_callback( + self, + helper: _OCSPClientCallbackHelper | _OCSPServerCallbackHelper, + data: Any | None, + ) -> None: + """ + This internal helper does the common work for + ``set_ocsp_server_callback`` and ``set_ocsp_client_callback``, which is + almost all of it. + """ + self._ocsp_helper = helper + self._ocsp_callback = helper.callback + if data is None: + self._ocsp_data = _ffi.NULL + else: + self._ocsp_data = _ffi.new_handle(data) + + rc = _lib.SSL_CTX_set_tlsext_status_cb( + self._context, self._ocsp_callback + ) + _openssl_assert(rc == 1) + rc = _lib.SSL_CTX_set_tlsext_status_arg(self._context, self._ocsp_data) + _openssl_assert(rc == 1) + + @_require_not_used + def set_ocsp_server_callback( + self, + callback: _OCSPServerCallback[_T], + data: _T | None = None, + ) -> None: + """ + Set a callback to provide OCSP data to be stapled to the TLS handshake + on the server side. + + :param callback: The callback function. It will be invoked with two + arguments: the Connection, and the optional arbitrary data you have + provided. The callback must return a bytestring that contains the + OCSP data to staple to the handshake. If no OCSP data is available + for this connection, return the empty bytestring. + :param data: Some opaque data that will be passed into the callback + function when called. This can be used to avoid needing to do + complex data lookups or to keep track of what context is being + used. This parameter is optional. + """ + helper = _OCSPServerCallbackHelper(callback) + self._set_ocsp_callback(helper, data) + + @_require_not_used + def set_ocsp_client_callback( + self, + callback: _OCSPClientCallback[_T], + data: _T | None = None, + ) -> None: + """ + Set a callback to validate OCSP data stapled to the TLS handshake on + the client side. + + :param callback: The callback function. It will be invoked with three + arguments: the Connection, a bytestring containing the stapled OCSP + assertion, and the optional arbitrary data you have provided. The + callback must return a boolean that indicates the result of + validating the OCSP data: ``True`` if the OCSP data is valid and + the certificate can be trusted, or ``False`` if either the OCSP + data is invalid or the certificate has been revoked. + :param data: Some opaque data that will be passed into the callback + function when called. This can be used to avoid needing to do + complex data lookups or to keep track of what context is being + used. This parameter is optional. + """ + helper = _OCSPClientCallbackHelper(callback) + self._set_ocsp_callback(helper, data) + + @_require_not_used + def set_cookie_generate_callback( + self, callback: _CookieGenerateCallback + ) -> None: + self._cookie_generate_helper = _CookieGenerateCallbackHelper(callback) + _lib.SSL_CTX_set_cookie_generate_cb( + self._context, + self._cookie_generate_helper.callback, + ) + + @_require_not_used + def set_cookie_verify_callback( + self, callback: _CookieVerifyCallback + ) -> None: + self._cookie_verify_helper = _CookieVerifyCallbackHelper(callback) + _lib.SSL_CTX_set_cookie_verify_cb( + self._context, + self._cookie_verify_helper.callback, + ) + + +class Connection: + _reverse_mapping: typing.MutableMapping[Any, Connection] = ( + WeakValueDictionary() + ) + + def __init__( + self, context: Context, socket: socket.socket | None = None + ) -> None: + """ + Create a new Connection object, using the given OpenSSL.SSL.Context + instance and socket. + + :param context: An SSL Context to use for this connection + :param socket: The socket to use for transport layer + """ + if not isinstance(context, Context): + raise TypeError("context must be a Context instance") + + context._used = True + + ssl = _lib.SSL_new(context._context) + self._ssl = _ffi.gc(ssl, _lib.SSL_free) + # We set SSL_MODE_AUTO_RETRY to handle situations where OpenSSL returns + # an SSL_ERROR_WANT_READ when processing a non-application data packet + # even though there is still data on the underlying transport. + # See https://github.com/openssl/openssl/issues/6234 for more details. + _lib.SSL_set_mode(self._ssl, _lib.SSL_MODE_AUTO_RETRY) + self._context = context + self._app_data = None + + # References to strings used for Application Layer Protocol + # Negotiation. These strings get copied at some point but it's well + # after the callback returns, so we have to hang them somewhere to + # avoid them getting freed. + self._alpn_select_callback_args: Any = None + + # Reference the verify_callback of the Context. This ensures that if + # set_verify is called again after the SSL object has been created we + # do not point to a dangling reference + self._verify_helper = context._verify_helper + self._verify_callback = context._verify_callback + + # And likewise for the cookie callbacks + self._cookie_generate_helper = context._cookie_generate_helper + self._cookie_verify_helper = context._cookie_verify_helper + + self._reverse_mapping[self._ssl] = self + + if socket is None: + self._socket = None + # Don't set up any gc for these, SSL_free will take care of them. + self._into_ssl = _lib.BIO_new(_lib.BIO_s_mem()) + _openssl_assert(self._into_ssl != _ffi.NULL) + + self._from_ssl = _lib.BIO_new(_lib.BIO_s_mem()) + _openssl_assert(self._from_ssl != _ffi.NULL) + + _lib.SSL_set_bio(self._ssl, self._into_ssl, self._from_ssl) + else: + self._into_ssl = None + self._from_ssl = None + self._socket = socket + set_result = _lib.SSL_set_fd( + self._ssl, _asFileDescriptor(self._socket) + ) + _openssl_assert(set_result == 1) + + def __getattr__(self, name: str) -> Any: + """ + Look up attributes on the wrapped socket object if they are not found + on the Connection object. + """ + if self._socket is None: + raise AttributeError( + f"'{self.__class__.__name__}' object has no attribute '{name}'" + ) + else: + return getattr(self._socket, name) + + def _raise_ssl_error(self, ssl: Any, result: int) -> None: + if self._context._verify_helper is not None: + self._context._verify_helper.raise_if_problem() + if self._context._alpn_select_helper is not None: + self._context._alpn_select_helper.raise_if_problem() + if self._context._ocsp_helper is not None: + self._context._ocsp_helper.raise_if_problem() + + error = _lib.SSL_get_error(ssl, result) + if error == _lib.SSL_ERROR_WANT_READ: + raise WantReadError() + elif error == _lib.SSL_ERROR_WANT_WRITE: + raise WantWriteError() + elif error == _lib.SSL_ERROR_ZERO_RETURN: + raise ZeroReturnError() + elif error == _lib.SSL_ERROR_WANT_X509_LOOKUP: + # TODO: This is untested. + raise WantX509LookupError() + elif error == _lib.SSL_ERROR_SYSCALL: + if platform == "win32": + errno = _ffi.getwinerror()[0] + else: + errno = _ffi.errno + if _lib.ERR_peek_error() == 0 or errno != 0: + if result < 0 and errno != 0: + raise SysCallError(errno, errorcode.get(errno)) + raise SysCallError(-1, "Unexpected EOF") + else: + # TODO: This is untested, but I think twisted hits it? + _raise_current_error() + elif error == _lib.SSL_ERROR_SSL and _lib.ERR_peek_error() != 0: + # In 3.0.x an unexpected EOF no longer triggers syscall error + # but we want to maintain compatibility so we check here and + # raise syscall if it is an EOF. Since we're not actually sure + # what else could raise SSL_ERROR_SSL we check for the presence + # of the OpenSSL 3 constant SSL_R_UNEXPECTED_EOF_WHILE_READING + # and if it's not present we just raise an error, which matches + # the behavior before we added this elif section + peeked_error = _lib.ERR_peek_error() + reason = _lib.ERR_GET_REASON(peeked_error) + if _lib.Cryptography_HAS_UNEXPECTED_EOF_WHILE_READING: + _openssl_assert( + reason == _lib.SSL_R_UNEXPECTED_EOF_WHILE_READING + ) + _lib.ERR_clear_error() + raise SysCallError(-1, "Unexpected EOF") + else: + _raise_current_error() + elif error == _lib.SSL_ERROR_NONE: + pass + else: + _raise_current_error() + + def get_context(self) -> Context: + """ + Retrieve the :class:`Context` object associated with this + :class:`Connection`. + """ + return self._context + + def set_context(self, context: Context) -> None: + """ + Switch this connection to a new session context. + + :param context: A :class:`Context` instance giving the new session + context to use. + """ + if not isinstance(context, Context): + raise TypeError("context must be a Context instance") + + _lib.SSL_set_SSL_CTX(self._ssl, context._context) + self._context = context + self._context._used = True + + def get_servername(self) -> bytes | None: + """ + Retrieve the servername extension value if provided in the client hello + message, or None if there wasn't one. + + :return: A byte string giving the server name or :data:`None`. + + .. versionadded:: 0.13 + """ + name = _lib.SSL_get_servername( + self._ssl, _lib.TLSEXT_NAMETYPE_host_name + ) + if name == _ffi.NULL: + return None + + return _ffi.string(name) + + def set_verify( + self, mode: int, callback: _VerifyCallback | None = None + ) -> None: + """ + Override the Context object's verification flags for this specific + connection. See :py:meth:`Context.set_verify` for details. + """ + if not isinstance(mode, int): + raise TypeError("mode must be an integer") + + if callback is None: + self._verify_helper = None + self._verify_callback = None + _lib.SSL_set_verify(self._ssl, mode, _ffi.NULL) + else: + if not callable(callback): + raise TypeError("callback must be callable") + + self._verify_helper = _VerifyHelper(callback) + self._verify_callback = self._verify_helper.callback + _lib.SSL_set_verify(self._ssl, mode, self._verify_callback) + + def get_verify_mode(self) -> int: + """ + Retrieve the Connection object's verify mode, as set by + :meth:`set_verify`. + + :return: The verify mode + """ + return _lib.SSL_get_verify_mode(self._ssl) + + def use_certificate(self, cert: X509 | x509.Certificate) -> None: + """ + Load a certificate from a X509 object + + :param cert: The X509 object + :return: None + """ + # Mirrored from Context.use_certificate + if not isinstance(cert, X509): + cert = X509.from_cryptography(cert) + else: + warnings.warn( + ( + "Passing pyOpenSSL X509 objects is deprecated. You " + "should use a cryptography.x509.Certificate instead." + ), + DeprecationWarning, + stacklevel=2, + ) + + use_result = _lib.SSL_use_certificate(self._ssl, cert._x509) + if not use_result: + _raise_current_error() + + def use_privatekey(self, pkey: _PrivateKey | PKey) -> None: + """ + Load a private key from a PKey object + + :param pkey: The PKey object + :return: None + """ + # Mirrored from Context.use_privatekey + if not isinstance(pkey, PKey): + pkey = PKey.from_cryptography_key(pkey) + else: + warnings.warn( + ( + "Passing pyOpenSSL PKey objects is deprecated. You " + "should use a cryptography private key instead." + ), + DeprecationWarning, + stacklevel=2, + ) + + use_result = _lib.SSL_use_PrivateKey(self._ssl, pkey._pkey) + if not use_result: + self._context._raise_passphrase_exception() + + def set_ciphertext_mtu(self, mtu: int) -> None: + """ + For DTLS, set the maximum UDP payload size (*not* including IP/UDP + overhead). + + Note that you might have to set :data:`OP_NO_QUERY_MTU` to prevent + OpenSSL from spontaneously clearing this. + + :param mtu: An integer giving the maximum transmission unit. + + .. versionadded:: 21.1 + """ + _lib.SSL_set_mtu(self._ssl, mtu) + + def get_cleartext_mtu(self) -> int: + """ + For DTLS, get the maximum size of unencrypted data you can pass to + :meth:`write` without exceeding the MTU (as passed to + :meth:`set_ciphertext_mtu`). + + :return: The effective MTU as an integer. + + .. versionadded:: 21.1 + """ + + if not hasattr(_lib, "DTLS_get_data_mtu"): + raise NotImplementedError("requires OpenSSL 1.1.1 or better") + return _lib.DTLS_get_data_mtu(self._ssl) + + def set_tlsext_host_name(self, name: bytes) -> None: + """ + Set the value of the servername extension to send in the client hello. + + :param name: A byte string giving the name. + + .. versionadded:: 0.13 + """ + if not isinstance(name, bytes): + raise TypeError("name must be a byte string") + elif b"\0" in name: + raise TypeError("name must not contain NUL byte") + + # XXX I guess this can fail sometimes? + _lib.SSL_set_tlsext_host_name(self._ssl, name) + + def pending(self) -> int: + """ + Get the number of bytes that can be safely read from the SSL buffer + (**not** the underlying transport buffer). + + :return: The number of bytes available in the receive buffer. + """ + return _lib.SSL_pending(self._ssl) + + def send(self, buf: _Buffer, flags: int = 0) -> int: + """ + Send data on the connection. NOTE: If you get one of the WantRead, + WantWrite or WantX509Lookup exceptions on this, you have to call the + method again with the SAME buffer. + + :param buf: The string, buffer or memoryview to send + :param flags: (optional) Included for compatibility with the socket + API, the value is ignored + :return: The number of bytes written + """ + # Backward compatibility + buf = _text_to_bytes_and_warn("buf", buf) + + with _ffi.from_buffer(buf) as data: + # check len(buf) instead of len(data) for testability + if len(buf) > 2147483647: + raise ValueError( + "Cannot send more than 2**31-1 bytes at once." + ) + + result = _lib.SSL_write(self._ssl, data, len(data)) + self._raise_ssl_error(self._ssl, result) + + return result + + write = send + + def sendall(self, buf: _Buffer, flags: int = 0) -> int: + """ + Send "all" data on the connection. This calls send() repeatedly until + all data is sent. If an error occurs, it's impossible to tell how much + data has been sent. + + :param buf: The string, buffer or memoryview to send + :param flags: (optional) Included for compatibility with the socket + API, the value is ignored + :return: The number of bytes written + """ + buf = _text_to_bytes_and_warn("buf", buf) + + with _ffi.from_buffer(buf) as data: + left_to_send = len(buf) + total_sent = 0 + + while left_to_send: + # SSL_write's num arg is an int, + # so we cannot send more than 2**31-1 bytes at once. + result = _lib.SSL_write( + self._ssl, data + total_sent, min(left_to_send, 2147483647) + ) + self._raise_ssl_error(self._ssl, result) + total_sent += result + left_to_send -= result + + return total_sent + + def recv(self, bufsiz: int, flags: int | None = None) -> bytes: + """ + Receive data on the connection. + + :param bufsiz: The maximum number of bytes to read + :param flags: (optional) The only supported flag is ``MSG_PEEK``, + all other flags are ignored. + :return: The string read from the Connection + """ + buf = _no_zero_allocator("char[]", bufsiz) + if flags is not None and flags & socket.MSG_PEEK: + result = _lib.SSL_peek(self._ssl, buf, bufsiz) + else: + result = _lib.SSL_read(self._ssl, buf, bufsiz) + self._raise_ssl_error(self._ssl, result) + return _ffi.buffer(buf, result)[:] + + read = recv + + def recv_into( + self, + buffer: Any, # collections.abc.Buffer once we use Python 3.12+ + nbytes: int | None = None, + flags: int | None = None, + ) -> int: + """ + Receive data on the connection and copy it directly into the provided + buffer, rather than creating a new string. + + :param buffer: The buffer to copy into. + :param nbytes: (optional) The maximum number of bytes to read into the + buffer. If not present, defaults to the size of the buffer. If + larger than the size of the buffer, is reduced to the size of the + buffer. + :param flags: (optional) The only supported flag is ``MSG_PEEK``, + all other flags are ignored. + :return: The number of bytes read into the buffer. + """ + if nbytes is None: + nbytes = len(buffer) + else: + nbytes = min(nbytes, len(buffer)) + + # We need to create a temporary buffer. This is annoying, it would be + # better if we could pass memoryviews straight into the SSL_read call, + # but right now we can't. Revisit this if CFFI gets that ability. + buf = _no_zero_allocator("char[]", nbytes) + if flags is not None and flags & socket.MSG_PEEK: + result = _lib.SSL_peek(self._ssl, buf, nbytes) + else: + result = _lib.SSL_read(self._ssl, buf, nbytes) + self._raise_ssl_error(self._ssl, result) + + # This strange line is all to avoid a memory copy. The buffer protocol + # should allow us to assign a CFFI buffer to the LHS of this line, but + # on CPython 3.3+ that segfaults. As a workaround, we can temporarily + # wrap it in a memoryview. + buffer[:result] = memoryview(_ffi.buffer(buf, result)) + + return result + + def _handle_bio_errors(self, bio: Any, result: int) -> typing.NoReturn: + if _lib.BIO_should_retry(bio): + if _lib.BIO_should_read(bio): + raise WantReadError() + elif _lib.BIO_should_write(bio): + # TODO: This is untested. + raise WantWriteError() + elif _lib.BIO_should_io_special(bio): + # TODO: This is untested. I think io_special means the socket + # BIO has a not-yet connected socket. + raise ValueError("BIO_should_io_special") + else: + # TODO: This is untested. + raise ValueError("unknown bio failure") + else: + # TODO: This is untested. + _raise_current_error() + + def bio_read(self, bufsiz: int) -> bytes: + """ + If the Connection was created with a memory BIO, this method can be + used to read bytes from the write end of that memory BIO. Many + Connection methods will add bytes which must be read in this manner or + the buffer will eventually fill up and the Connection will be able to + take no further actions. + + :param bufsiz: The maximum number of bytes to read + :return: The string read. + """ + if self._from_ssl is None: + raise TypeError("Connection sock was not None") + + if not isinstance(bufsiz, int): + raise TypeError("bufsiz must be an integer") + + buf = _no_zero_allocator("char[]", bufsiz) + result = _lib.BIO_read(self._from_ssl, buf, bufsiz) + if result <= 0: + self._handle_bio_errors(self._from_ssl, result) + + return _ffi.buffer(buf, result)[:] + + def bio_write(self, buf: _Buffer) -> int: + """ + If the Connection was created with a memory BIO, this method can be + used to add bytes to the read end of that memory BIO. The Connection + can then read the bytes (for example, in response to a call to + :meth:`recv`). + + :param buf: The string to put into the memory BIO. + :return: The number of bytes written + """ + buf = _text_to_bytes_and_warn("buf", buf) + + if self._into_ssl is None: + raise TypeError("Connection sock was not None") + + with _ffi.from_buffer(buf) as data: + result = _lib.BIO_write(self._into_ssl, data, len(data)) + if result <= 0: + self._handle_bio_errors(self._into_ssl, result) + return result + + def renegotiate(self) -> bool: + """ + Renegotiate the session. + + :return: True if the renegotiation can be started, False otherwise + """ + if not self.renegotiate_pending(): + _openssl_assert(_lib.SSL_renegotiate(self._ssl) == 1) + return True + return False + + def do_handshake(self) -> None: + """ + Perform an SSL handshake (usually called after :meth:`renegotiate` or + one of :meth:`set_accept_state` or :meth:`set_connect_state`). This can + raise the same exceptions as :meth:`send` and :meth:`recv`. + + :return: None. + """ + result = _lib.SSL_do_handshake(self._ssl) + self._raise_ssl_error(self._ssl, result) + + def renegotiate_pending(self) -> bool: + """ + Check if there's a renegotiation in progress, it will return False once + a renegotiation is finished. + + :return: Whether there's a renegotiation in progress + """ + return _lib.SSL_renegotiate_pending(self._ssl) == 1 + + def total_renegotiations(self) -> int: + """ + Find out the total number of renegotiations. + + :return: The number of renegotiations. + """ + return _lib.SSL_total_renegotiations(self._ssl) + + def connect(self, addr: Any) -> None: + """ + Call the :meth:`connect` method of the underlying socket and set up SSL + on the socket, using the :class:`Context` object supplied to this + :class:`Connection` object at creation. + + :param addr: A remote address + :return: What the socket's connect method returns + """ + _lib.SSL_set_connect_state(self._ssl) + return self._socket.connect(addr) # type: ignore[return-value, union-attr] + + def connect_ex(self, addr: Any) -> int: + """ + Call the :meth:`connect_ex` method of the underlying socket and set up + SSL on the socket, using the Context object supplied to this Connection + object at creation. Note that if the :meth:`connect_ex` method of the + socket doesn't return 0, SSL won't be initialized. + + :param addr: A remove address + :return: What the socket's connect_ex method returns + """ + connect_ex = self._socket.connect_ex # type: ignore[union-attr] + self.set_connect_state() + return connect_ex(addr) + + def accept(self) -> tuple[Connection, Any]: + """ + Call the :meth:`accept` method of the underlying socket and set up SSL + on the returned socket, using the Context object supplied to this + :class:`Connection` object at creation. + + :return: A *(conn, addr)* pair where *conn* is the new + :class:`Connection` object created, and *address* is as returned by + the socket's :meth:`accept`. + """ + client, addr = self._socket.accept() # type: ignore[union-attr] + conn = Connection(self._context, client) + conn.set_accept_state() + return (conn, addr) + + def DTLSv1_listen(self) -> None: + """ + Call the OpenSSL function DTLSv1_listen on this connection. See the + OpenSSL manual for more details. + + :return: None + """ + # Possible future extension: return the BIO_ADDR in some form. + bio_addr = _lib.BIO_ADDR_new() + try: + result = _lib.DTLSv1_listen(self._ssl, bio_addr) + finally: + _lib.BIO_ADDR_free(bio_addr) + # DTLSv1_listen is weird. A zero return value means 'didn't find a + # ClientHello with valid cookie, but keep trying'. So basically + # WantReadError. But it doesn't work correctly with _raise_ssl_error. + # So we raise it manually instead. + if self._cookie_generate_helper is not None: + self._cookie_generate_helper.raise_if_problem() + if self._cookie_verify_helper is not None: + self._cookie_verify_helper.raise_if_problem() + if result == 0: + raise WantReadError() + if result < 0: + self._raise_ssl_error(self._ssl, result) + + def DTLSv1_get_timeout(self) -> int | None: + """ + Determine when the DTLS SSL object next needs to perform internal + processing due to the passage of time. + + When the returned number of seconds have passed, the + :meth:`DTLSv1_handle_timeout` method needs to be called. + + :return: The time left in seconds before the next timeout or `None` + if no timeout is currently active. + """ + ptv_sec = _ffi.new("time_t *") + ptv_usec = _ffi.new("long *") + if _lib.Cryptography_DTLSv1_get_timeout(self._ssl, ptv_sec, ptv_usec): + return ptv_sec[0] + (ptv_usec[0] / 1000000) + else: + return None + + def DTLSv1_handle_timeout(self) -> bool: + """ + Handles any timeout events which have become pending on a DTLS SSL + object. + + :return: `True` if there was a pending timeout, `False` otherwise. + """ + result = _lib.DTLSv1_handle_timeout(self._ssl) + if result < 0: + self._raise_ssl_error(self._ssl, result) + assert False, "unreachable" + else: + return bool(result) + + def bio_shutdown(self) -> None: + """ + If the Connection was created with a memory BIO, this method can be + used to indicate that *end of file* has been reached on the read end of + that memory BIO. + + :return: None + """ + if self._from_ssl is None: + raise TypeError("Connection sock was not None") + + _lib.BIO_set_mem_eof_return(self._into_ssl, 0) + + def shutdown(self) -> bool: + """ + Send the shutdown message to the Connection. + + :return: True if the shutdown completed successfully (i.e. both sides + have sent closure alerts), False otherwise (in which case you + call :meth:`recv` or :meth:`send` when the connection becomes + readable/writeable). + """ + result = _lib.SSL_shutdown(self._ssl) + if result < 0: + self._raise_ssl_error(self._ssl, result) + assert False, "unreachable" + elif result > 0: + return True + else: + return False + + def get_cipher_list(self) -> list[str]: + """ + Retrieve the list of ciphers used by the Connection object. + + :return: A list of native cipher strings. + """ + ciphers = [] + for i in count(): + result = _lib.SSL_get_cipher_list(self._ssl, i) + if result == _ffi.NULL: + break + ciphers.append(_ffi.string(result).decode("utf-8")) + return ciphers + + def get_client_ca_list(self) -> list[X509Name]: + """ + Get CAs whose certificates are suggested for client authentication. + + :return: If this is a server connection, the list of certificate + authorities that will be sent or has been sent to the client, as + controlled by this :class:`Connection`'s :class:`Context`. + + If this is a client connection, the list will be empty until the + connection with the server is established. + + .. versionadded:: 0.10 + """ + ca_names = _lib.SSL_get_client_CA_list(self._ssl) + if ca_names == _ffi.NULL: + # TODO: This is untested. + return [] + + result = [] + for i in range(_lib.sk_X509_NAME_num(ca_names)): + name = _lib.sk_X509_NAME_value(ca_names, i) + copy = _lib.X509_NAME_dup(name) + _openssl_assert(copy != _ffi.NULL) + + pyname = X509Name.__new__(X509Name) + pyname._name = _ffi.gc(copy, _lib.X509_NAME_free) + result.append(pyname) + return result + + def makefile(self, *args: Any, **kwargs: Any) -> typing.NoReturn: + """ + The makefile() method is not implemented, since there is no dup + semantics for SSL connections + + :raise: NotImplementedError + """ + raise NotImplementedError( + "Cannot make file object of OpenSSL.SSL.Connection" + ) + + def get_app_data(self) -> Any: + """ + Retrieve application data as set by :meth:`set_app_data`. + + :return: The application data + """ + return self._app_data + + def set_app_data(self, data: Any) -> None: + """ + Set application data + + :param data: The application data + :return: None + """ + self._app_data = data + + def get_shutdown(self) -> int: + """ + Get the shutdown state of the Connection. + + :return: The shutdown state, a bitvector of SENT_SHUTDOWN, + RECEIVED_SHUTDOWN. + """ + return _lib.SSL_get_shutdown(self._ssl) + + def set_shutdown(self, state: int) -> None: + """ + Set the shutdown state of the Connection. + + :param state: bitvector of SENT_SHUTDOWN, RECEIVED_SHUTDOWN. + :return: None + """ + if not isinstance(state, int): + raise TypeError("state must be an integer") + + _lib.SSL_set_shutdown(self._ssl, state) + + def get_state_string(self) -> bytes: + """ + Retrieve a verbose string detailing the state of the Connection. + + :return: A string representing the state + """ + return _ffi.string(_lib.SSL_state_string_long(self._ssl)) + + def server_random(self) -> bytes | None: + """ + Retrieve the random value used with the server hello message. + + :return: A string representing the state + """ + session = _lib.SSL_get_session(self._ssl) + if session == _ffi.NULL: + return None + length = _lib.SSL_get_server_random(self._ssl, _ffi.NULL, 0) + _openssl_assert(length > 0) + outp = _no_zero_allocator("unsigned char[]", length) + _lib.SSL_get_server_random(self._ssl, outp, length) + return _ffi.buffer(outp, length)[:] + + def client_random(self) -> bytes | None: + """ + Retrieve the random value used with the client hello message. + + :return: A string representing the state + """ + session = _lib.SSL_get_session(self._ssl) + if session == _ffi.NULL: + return None + + length = _lib.SSL_get_client_random(self._ssl, _ffi.NULL, 0) + _openssl_assert(length > 0) + outp = _no_zero_allocator("unsigned char[]", length) + _lib.SSL_get_client_random(self._ssl, outp, length) + return _ffi.buffer(outp, length)[:] + + def master_key(self) -> bytes | None: + """ + Retrieve the value of the master key for this session. + + :return: A string representing the state + """ + session = _lib.SSL_get_session(self._ssl) + if session == _ffi.NULL: + return None + + length = _lib.SSL_SESSION_get_master_key(session, _ffi.NULL, 0) + _openssl_assert(length > 0) + outp = _no_zero_allocator("unsigned char[]", length) + _lib.SSL_SESSION_get_master_key(session, outp, length) + return _ffi.buffer(outp, length)[:] + + def export_keying_material( + self, label: bytes, olen: int, context: bytes | None = None + ) -> bytes: + """ + Obtain keying material for application use. + + :param: label - a disambiguating label string as described in RFC 5705 + :param: olen - the length of the exported key material in bytes + :param: context - a per-association context value + :return: the exported key material bytes or None + """ + outp = _no_zero_allocator("unsigned char[]", olen) + context_buf = _ffi.NULL + context_len = 0 + use_context = 0 + if context is not None: + context_buf = context + context_len = len(context) + use_context = 1 + success = _lib.SSL_export_keying_material( + self._ssl, + outp, + olen, + label, + len(label), + context_buf, + context_len, + use_context, + ) + _openssl_assert(success == 1) + return _ffi.buffer(outp, olen)[:] + + def sock_shutdown(self, *args: Any, **kwargs: Any) -> None: + """ + Call the :meth:`shutdown` method of the underlying socket. + See :manpage:`shutdown(2)`. + + :return: What the socket's shutdown() method returns + """ + return self._socket.shutdown(*args, **kwargs) # type: ignore[return-value, union-attr] + + @typing.overload + def get_certificate( + self, *, as_cryptography: typing.Literal[True] + ) -> x509.Certificate | None: + pass + + @typing.overload + def get_certificate( + self, *, as_cryptography: typing.Literal[False] = False + ) -> X509 | None: + pass + + def get_certificate( + self, + *, + as_cryptography: typing.Literal[True] | typing.Literal[False] = False, + ) -> X509 | x509.Certificate | None: + """ + Retrieve the local certificate (if any) + + :param bool as_cryptography: Controls whether a + ``cryptography.x509.Certificate`` or an ``OpenSSL.crypto.X509`` + object should be returned. + + :return: The local certificate + """ + cert = _lib.SSL_get_certificate(self._ssl) + if cert != _ffi.NULL: + _lib.X509_up_ref(cert) + pycert = X509._from_raw_x509_ptr(cert) + if as_cryptography: + return pycert.to_cryptography() + return pycert + return None + + @typing.overload + def get_peer_certificate( + self, *, as_cryptography: typing.Literal[True] + ) -> x509.Certificate | None: + pass + + @typing.overload + def get_peer_certificate( + self, *, as_cryptography: typing.Literal[False] = False + ) -> X509 | None: + pass + + def get_peer_certificate( + self, + *, + as_cryptography: typing.Literal[True] | typing.Literal[False] = False, + ) -> X509 | x509.Certificate | None: + """ + Retrieve the other side's certificate (if any) + + :param bool as_cryptography: Controls whether a + ``cryptography.x509.Certificate`` or an ``OpenSSL.crypto.X509`` + object should be returned. + + :return: The peer's certificate + """ + cert = _lib.SSL_get_peer_certificate(self._ssl) + if cert != _ffi.NULL: + pycert = X509._from_raw_x509_ptr(cert) + if as_cryptography: + return pycert.to_cryptography() + return pycert + return None + + @staticmethod + def _cert_stack_to_list(cert_stack: Any) -> list[X509]: + """ + Internal helper to convert a STACK_OF(X509) to a list of X509 + instances. + """ + result = [] + for i in range(_lib.sk_X509_num(cert_stack)): + cert = _lib.sk_X509_value(cert_stack, i) + _openssl_assert(cert != _ffi.NULL) + res = _lib.X509_up_ref(cert) + _openssl_assert(res >= 1) + pycert = X509._from_raw_x509_ptr(cert) + result.append(pycert) + return result + + @staticmethod + def _cert_stack_to_cryptography_list( + cert_stack: Any, + ) -> list[x509.Certificate]: + """ + Internal helper to convert a STACK_OF(X509) to a list of X509 + instances. + """ + result = [] + for i in range(_lib.sk_X509_num(cert_stack)): + cert = _lib.sk_X509_value(cert_stack, i) + _openssl_assert(cert != _ffi.NULL) + res = _lib.X509_up_ref(cert) + _openssl_assert(res >= 1) + pycert = X509._from_raw_x509_ptr(cert) + result.append(pycert.to_cryptography()) + return result + + @typing.overload + def get_peer_cert_chain( + self, *, as_cryptography: typing.Literal[True] + ) -> list[x509.Certificate] | None: + pass + + @typing.overload + def get_peer_cert_chain( + self, *, as_cryptography: typing.Literal[False] = False + ) -> list[X509] | None: + pass + + def get_peer_cert_chain( + self, + *, + as_cryptography: typing.Literal[True] | typing.Literal[False] = False, + ) -> list[X509] | list[x509.Certificate] | None: + """ + Retrieve the other side's certificate (if any) + + :param bool as_cryptography: Controls whether a list of + ``cryptography.x509.Certificate`` or ``OpenSSL.crypto.X509`` + object should be returned. + + :return: A list of X509 instances giving the peer's certificate chain, + or None if it does not have one. + """ + cert_stack = _lib.SSL_get_peer_cert_chain(self._ssl) + if cert_stack == _ffi.NULL: + return None + + if as_cryptography: + return self._cert_stack_to_cryptography_list(cert_stack) + return self._cert_stack_to_list(cert_stack) + + @typing.overload + def get_verified_chain( + self, *, as_cryptography: typing.Literal[True] + ) -> list[x509.Certificate] | None: + pass + + @typing.overload + def get_verified_chain( + self, *, as_cryptography: typing.Literal[False] = False + ) -> list[X509] | None: + pass + + def get_verified_chain( + self, + *, + as_cryptography: typing.Literal[True] | typing.Literal[False] = False, + ) -> list[X509] | list[x509.Certificate] | None: + """ + Retrieve the verified certificate chain of the peer including the + peer's end entity certificate. It must be called after a session has + been successfully established. If peer verification was not successful + the chain may be incomplete, invalid, or None. + + :param bool as_cryptography: Controls whether a list of + ``cryptography.x509.Certificate`` or ``OpenSSL.crypto.X509`` + object should be returned. + + :return: A list of X509 instances giving the peer's verified + certificate chain, or None if it does not have one. + + .. versionadded:: 20.0 + """ + # OpenSSL 1.1+ + cert_stack = _lib.SSL_get0_verified_chain(self._ssl) + if cert_stack == _ffi.NULL: + return None + + if as_cryptography: + return self._cert_stack_to_cryptography_list(cert_stack) + return self._cert_stack_to_list(cert_stack) + + def want_read(self) -> bool: + """ + Checks if more data has to be read from the transport layer to complete + an operation. + + :return: True iff more data has to be read + """ + return _lib.SSL_want_read(self._ssl) + + def want_write(self) -> bool: + """ + Checks if there is data to write to the transport layer to complete an + operation. + + :return: True iff there is data to write + """ + return _lib.SSL_want_write(self._ssl) + + def set_accept_state(self) -> None: + """ + Set the connection to work in server mode. The handshake will be + handled automatically by read/write. + + :return: None + """ + _lib.SSL_set_accept_state(self._ssl) + + def set_connect_state(self) -> None: + """ + Set the connection to work in client mode. The handshake will be + handled automatically by read/write. + + :return: None + """ + _lib.SSL_set_connect_state(self._ssl) + + def get_session(self) -> Session | None: + """ + Returns the Session currently used. + + :return: An instance of :class:`OpenSSL.SSL.Session` or + :obj:`None` if no session exists. + + .. versionadded:: 0.14 + """ + session = _lib.SSL_get1_session(self._ssl) + if session == _ffi.NULL: + return None + + pysession = Session.__new__(Session) + pysession._session = _ffi.gc(session, _lib.SSL_SESSION_free) + return pysession + + def set_session(self, session: Session) -> None: + """ + Set the session to be used when the TLS/SSL connection is established. + + :param session: A Session instance representing the session to use. + :returns: None + + .. versionadded:: 0.14 + """ + if not isinstance(session, Session): + raise TypeError("session must be a Session instance") + + result = _lib.SSL_set_session(self._ssl, session._session) + _openssl_assert(result == 1) + + def _get_finished_message( + self, function: Callable[[Any, Any, int], int] + ) -> bytes | None: + """ + Helper to implement :meth:`get_finished` and + :meth:`get_peer_finished`. + + :param function: Either :data:`SSL_get_finished`: or + :data:`SSL_get_peer_finished`. + + :return: :data:`None` if the desired message has not yet been + received, otherwise the contents of the message. + """ + # The OpenSSL documentation says nothing about what might happen if the + # count argument given is zero. Specifically, it doesn't say whether + # the output buffer may be NULL in that case or not. Inspection of the + # implementation reveals that it calls memcpy() unconditionally. + # Section 7.1.4, paragraph 1 of the C standard suggests that + # memcpy(NULL, source, 0) is not guaranteed to produce defined (let + # alone desirable) behavior (though it probably does on just about + # every implementation...) + # + # Allocate a tiny buffer to pass in (instead of just passing NULL as + # one might expect) for the initial call so as to be safe against this + # potentially undefined behavior. + empty = _ffi.new("char[]", 0) + size = function(self._ssl, empty, 0) + if size == 0: + # No Finished message so far. + return None + + buf = _no_zero_allocator("char[]", size) + function(self._ssl, buf, size) + return _ffi.buffer(buf, size)[:] + + def get_finished(self) -> bytes | None: + """ + Obtain the latest TLS Finished message that we sent. + + :return: The contents of the message or :obj:`None` if the TLS + handshake has not yet completed. + + .. versionadded:: 0.15 + """ + return self._get_finished_message(_lib.SSL_get_finished) + + def get_peer_finished(self) -> bytes | None: + """ + Obtain the latest TLS Finished message that we received from the peer. + + :return: The contents of the message or :obj:`None` if the TLS + handshake has not yet completed. + + .. versionadded:: 0.15 + """ + return self._get_finished_message(_lib.SSL_get_peer_finished) + + def get_cipher_name(self) -> str | None: + """ + Obtain the name of the currently used cipher. + + :returns: The name of the currently used cipher or :obj:`None` + if no connection has been established. + + .. versionadded:: 0.15 + """ + cipher = _lib.SSL_get_current_cipher(self._ssl) + if cipher == _ffi.NULL: + return None + else: + name = _ffi.string(_lib.SSL_CIPHER_get_name(cipher)) + return name.decode("utf-8") + + def get_cipher_bits(self) -> int | None: + """ + Obtain the number of secret bits of the currently used cipher. + + :returns: The number of secret bits of the currently used cipher + or :obj:`None` if no connection has been established. + + .. versionadded:: 0.15 + """ + cipher = _lib.SSL_get_current_cipher(self._ssl) + if cipher == _ffi.NULL: + return None + else: + return _lib.SSL_CIPHER_get_bits(cipher, _ffi.NULL) + + def get_cipher_version(self) -> str | None: + """ + Obtain the protocol version of the currently used cipher. + + :returns: The protocol name of the currently used cipher + or :obj:`None` if no connection has been established. + + .. versionadded:: 0.15 + """ + cipher = _lib.SSL_get_current_cipher(self._ssl) + if cipher == _ffi.NULL: + return None + else: + version = _ffi.string(_lib.SSL_CIPHER_get_version(cipher)) + return version.decode("utf-8") + + def get_protocol_version_name(self) -> str: + """ + Retrieve the protocol version of the current connection. + + :returns: The TLS version of the current connection, for example + the value for TLS 1.2 would be ``TLSv1.2``or ``Unknown`` + for connections that were not successfully established. + """ + version = _ffi.string(_lib.SSL_get_version(self._ssl)) + return version.decode("utf-8") + + def get_protocol_version(self) -> int: + """ + Retrieve the SSL or TLS protocol version of the current connection. + + :returns: The TLS version of the current connection. For example, + it will return ``0x769`` for connections made over TLS version 1. + """ + version = _lib.SSL_version(self._ssl) + return version + + def set_alpn_protos(self, protos: list[bytes]) -> None: + """ + Specify the client's ALPN protocol list. + + These protocols are offered to the server during protocol negotiation. + + :param protos: A list of the protocols to be offered to the server. + This list should be a Python list of bytestrings representing the + protocols to offer, e.g. ``[b'http/1.1', b'spdy/2']``. + """ + # Different versions of OpenSSL are inconsistent about how they handle + # empty proto lists (see #1043), so we avoid the problem entirely by + # rejecting them ourselves. + if not protos: + raise ValueError("at least one protocol must be specified") + + # Take the list of protocols and join them together, prefixing them + # with their lengths. + protostr = b"".join( + chain.from_iterable((bytes((len(p),)), p) for p in protos) + ) + + # Build a C string from the list. We don't need to save this off + # because OpenSSL immediately copies the data out. + input_str = _ffi.new("unsigned char[]", protostr) + + # https://www.openssl.org/docs/man1.1.0/man3/SSL_CTX_set_alpn_protos.html: + # SSL_CTX_set_alpn_protos() and SSL_set_alpn_protos() + # return 0 on success, and non-0 on failure. + # WARNING: these functions reverse the return value convention. + _openssl_assert( + _lib.SSL_set_alpn_protos(self._ssl, input_str, len(protostr)) == 0 + ) + + def get_alpn_proto_negotiated(self) -> bytes: + """ + Get the protocol that was negotiated by ALPN. + + :returns: A bytestring of the protocol name. If no protocol has been + negotiated yet, returns an empty bytestring. + """ + data = _ffi.new("unsigned char **") + data_len = _ffi.new("unsigned int *") + + _lib.SSL_get0_alpn_selected(self._ssl, data, data_len) + + if not data_len: + return b"" + + return _ffi.buffer(data[0], data_len[0])[:] + + def get_selected_srtp_profile(self) -> bytes: + """ + Get the SRTP protocol which was negotiated. + + :returns: A bytestring of the SRTP profile name. If no profile has been + negotiated yet, returns an empty bytestring. + """ + profile = _lib.SSL_get_selected_srtp_profile(self._ssl) + if not profile: + return b"" + + return _ffi.string(profile.name) + + def request_ocsp(self) -> None: + """ + Called to request that the server sends stapled OCSP data, if + available. If this is not called on the client side then the server + will not send OCSP data. Should be used in conjunction with + :meth:`Context.set_ocsp_client_callback`. + """ + rc = _lib.SSL_set_tlsext_status_type( + self._ssl, _lib.TLSEXT_STATUSTYPE_ocsp + ) + _openssl_assert(rc == 1) + + def set_info_callback( + self, callback: Callable[[Connection, int, int], None] + ) -> None: + """ + Set the information callback to *callback*. This function will be + called from time to time during SSL handshakes. + + :param callback: The Python callback to use. This should take three + arguments: a Connection object and two integers. The first integer + specifies where in the SSL handshake the function was called, and + the other the return code from a (possibly failed) internal + function call. + :return: None + """ + + @wraps(callback) + def wrapper(ssl, where, return_code): # type: ignore[no-untyped-def] + callback(Connection._reverse_mapping[ssl], where, return_code) + + self._info_callback = _ffi.callback( + "void (*)(const SSL *, int, int)", wrapper + ) + _lib.SSL_set_info_callback(self._ssl, self._info_callback) diff --git a/venv/lib/python3.12/site-packages/OpenSSL/__init__.py b/venv/lib/python3.12/site-packages/OpenSSL/__init__.py new file mode 100644 index 00000000..7b077cf7 --- /dev/null +++ b/venv/lib/python3.12/site-packages/OpenSSL/__init__.py @@ -0,0 +1,31 @@ +# Copyright (C) AB Strakt +# See LICENSE for details. + +""" +pyOpenSSL - A simple wrapper around the OpenSSL library +""" + +from OpenSSL import SSL, crypto +from OpenSSL.version import ( + __author__, + __copyright__, + __email__, + __license__, + __summary__, + __title__, + __uri__, + __version__, +) + +__all__ = [ + "SSL", + "__author__", + "__copyright__", + "__email__", + "__license__", + "__summary__", + "__title__", + "__uri__", + "__version__", + "crypto", +] diff --git a/venv/lib/python3.12/site-packages/OpenSSL/__pycache__/SSL.cpython-312.pyc b/venv/lib/python3.12/site-packages/OpenSSL/__pycache__/SSL.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..434547a0ea86f81346c897a10d21195b638e85ff GIT binary patch literal 137340 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 Ji0xBQ-UAEUq-+2H literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/OpenSSL/__pycache__/_util.cpython-312.pyc b/venv/lib/python3.12/site-packages/OpenSSL/__pycache__/_util.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..577a1eeef519b1941a85b5f21f45e3c79c641dff GIT binary patch literal 4980 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/OpenSSL/__pycache__/crypto.cpython-312.pyc b/venv/lib/python3.12/site-packages/OpenSSL/__pycache__/crypto.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3655642966ecc582ee377349a042d9a2d2a24236 GIT binary patch literal 104886 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/OpenSSL/__pycache__/rand.cpython-312.pyc b/venv/lib/python3.12/site-packages/OpenSSL/__pycache__/rand.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..92d8c59f958857fbaf3aa438d1323f41002bc4ca GIT binary patch literal 1848 zcmZuy&2Jk;6rZ&>j^mA!P()Huibe!b9a3)sO(R*T5;V{Y4OLUAQZCMTcWkfYomtJy z#yAR6i;#NFtw`j+6@>%;2bZ7}5v@2NH5_^a(q4Mv&Frq510(HxzOVWH-kbfUTCE^x zw|Z`HY9sViFY-2)POP&QOdca2Z6e?D3wo5-*DClieg$0jQz^Gir zsv9so5G0DIkoC$lZK!4?4q=Qdq5{t3I;@NRptXDB%ZRd#jW6ngFdqjJ`!o{NBZ~U? zDjxC}%Px=mK8_{DT-IYP$3q-2sVMQE=_tWgMJnQL_vsGpdxbP`)0dzJ5$o({m^?)PEt>YfT7`336S-v15SOpg5&T#4ojsIm?OCs2 z2bgX0F9cD+&~67`;nq-5iQ59MzaW(eSZ4unP#gfK*w6teC|a)=jeD@U0K^C$4HqyG zo!HO>5MR;qeLkQ9w|ES&^L7mrhN)CR2nJw{yL^Dd*y|coDdxbf)C_r?DFRFbU2GJ{ zA`U5$u}F7Kq*)xFbAdxHC`h-t0QzvUoV}JLpR1O%B3b!aG#w1Qj-+eRpH97{En4%pj)@$QQ zC6Ky02=iz%W=u2lL;xzyIKe!Ed&E26m9AyS(Xpm}g)CCg-1l-slm? zMG-p8rW^3E?0#(sx!I-OHXd{V1;`prq)DPKk-!dRI-7mSFOw~l@wn5)X||;4lJmT* zlXs*InVspSDvNjtbM0UdNGM`m^|gYSglH1SFr}+ImOmo#I_!zp^g$`z6LYXwgiq=t zz;F^x&iw9N`qjB~>|8#wFB_FwNle4B&<~TC(VYWbQcA;1Y@LAM@nU{bbCU69)8}5Z znN*t1b`04{n@s^oqNF?^fbW%=Wf`*EM%5Eu^h3oNfg_jl2RXCfPvzDG;D_L(FyZ-@$9Pz&Z literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/OpenSSL/__pycache__/version.cpython-312.pyc b/venv/lib/python3.12/site-packages/OpenSSL/__pycache__/version.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ac87e9063db3fa46343e55c9a39bf689d583dd80 GIT binary patch literal 710 zcmZ`$zi-n(6t4B6J$^B zU%`NoDmMNW7RD$O68}JXO@4oMQ-+MhrgLpN=@r9vjzv^TYkgwzV zF?>F0R137JM)j|Hpi?6-Xe(&ZcF?9f!4B;N9cl(9wE~OUtn*p>Vgz>K47%kLM-*=a z%f{m~G(@LJ#i>Xb`Y1yom_(uE^NgZAVrWy9#2;iR;j*=I2npwT#3doC9w8Gh3K>tM z98#MQmWFWx+b$tVJYkt)O`_&$3Jsc~JkFE)+$3Z!6b)NZIj^-I439>@CT1 zKgx5Vo?5pYBIi>u zAu5LO<3y~R*DsZary`ud&9g?+BlNzZi+tBB@4Vc2fPBw88v34pj9w3%S|8<;MrfFT zEz*XuNwWs4hE5IjOl7-= (3, 9): + StrOrBytesPath = Union[str, bytes, os.PathLike[str], os.PathLike[bytes]] +else: + StrOrBytesPath = Union[str, bytes, os.PathLike] + +binding = Binding() +ffi = binding.ffi +lib: Any = binding.lib + + +# This is a special CFFI allocator that does not bother to zero its memory +# after allocation. This has vastly better performance on large allocations and +# so should be used whenever we don't need the memory zeroed out. +no_zero_allocator = ffi.new_allocator(should_clear_after_alloc=False) + + +def text(charp: Any) -> str: + """ + Get a native string type representing of the given CFFI ``char*`` object. + + :param charp: A C-style string represented using CFFI. + + :return: :class:`str` + """ + if not charp: + return "" + return ffi.string(charp).decode("utf-8") + + +def exception_from_error_queue(exception_type: type[Exception]) -> NoReturn: + """ + Convert an OpenSSL library failure into a Python exception. + + When a call to the native OpenSSL library fails, this is usually signalled + by the return value, and an error code is stored in an error queue + associated with the current thread. The err library provides functions to + obtain these error codes and textual error messages. + """ + errors = [] + + while True: + error = lib.ERR_get_error() + if error == 0: + break + errors.append( + ( + text(lib.ERR_lib_error_string(error)), + text(lib.ERR_func_error_string(error)), + text(lib.ERR_reason_error_string(error)), + ) + ) + + raise exception_type(errors) + + +def make_assert(error: type[Exception]) -> Callable[[bool], Any]: + """ + Create an assert function that uses :func:`exception_from_error_queue` to + raise an exception wrapped by *error*. + """ + + def openssl_assert(ok: bool) -> None: + """ + If *ok* is not True, retrieve the error from OpenSSL and raise it. + """ + if ok is not True: + exception_from_error_queue(error) + + return openssl_assert + + +def path_bytes(s: StrOrBytesPath) -> bytes: + """ + Convert a Python path to a :py:class:`bytes` for the path which can be + passed into an OpenSSL API accepting a filename. + + :param s: A path (valid for os.fspath). + + :return: An instance of :py:class:`bytes`. + """ + b = os.fspath(s) + + if isinstance(b, str): + return b.encode(sys.getfilesystemencoding()) + else: + return b + + +def byte_string(s: str) -> bytes: + return s.encode("charmap") + + +# A marker object to observe whether some optional arguments are passed any +# value or not. +UNSPECIFIED = object() + +_TEXT_WARNING = "str for {0} is no longer accepted, use bytes" + + +def text_to_bytes_and_warn(label: str, obj: Any) -> Any: + """ + If ``obj`` is text, emit a warning that it should be bytes instead and try + to convert it to bytes automatically. + + :param str label: The name of the parameter from which ``obj`` was taken + (so a developer can easily find the source of the problem and correct + it). + + :return: If ``obj`` is the text string type, a ``bytes`` object giving the + UTF-8 encoding of that text is returned. Otherwise, ``obj`` itself is + returned. + """ + if isinstance(obj, str): + warnings.warn( + _TEXT_WARNING.format(label), + category=DeprecationWarning, + stacklevel=3, + ) + return obj.encode("utf-8") + return obj diff --git a/venv/lib/python3.12/site-packages/OpenSSL/crypto.py b/venv/lib/python3.12/site-packages/OpenSSL/crypto.py new file mode 100644 index 00000000..366007e8 --- /dev/null +++ b/venv/lib/python3.12/site-packages/OpenSSL/crypto.py @@ -0,0 +1,2450 @@ +from __future__ import annotations + +import calendar +import datetime +import functools +import sys +import typing +import warnings +from base64 import b16encode +from collections.abc import Iterable, Sequence +from functools import partial +from typing import ( + Any, + Callable, + Union, +) + +if sys.version_info >= (3, 13): + from warnings import deprecated +elif sys.version_info < (3, 8): + _T = typing.TypeVar("T") + + def deprecated(msg: str, **kwargs: object) -> Callable[[_T], _T]: + return lambda f: f +else: + from typing_extensions import deprecated + +from cryptography import utils, x509 +from cryptography.hazmat.primitives.asymmetric import ( + dsa, + ec, + ed448, + ed25519, + rsa, +) + +from OpenSSL._util import StrOrBytesPath +from OpenSSL._util import ( + byte_string as _byte_string, +) +from OpenSSL._util import ( + exception_from_error_queue as _exception_from_error_queue, +) +from OpenSSL._util import ( + ffi as _ffi, +) +from OpenSSL._util import ( + lib as _lib, +) +from OpenSSL._util import ( + make_assert as _make_assert, +) +from OpenSSL._util import ( + path_bytes as _path_bytes, +) + +__all__ = [ + "FILETYPE_ASN1", + "FILETYPE_PEM", + "FILETYPE_TEXT", + "TYPE_DSA", + "TYPE_RSA", + "X509", + "Error", + "PKey", + "X509Extension", + "X509Name", + "X509Req", + "X509Store", + "X509StoreContext", + "X509StoreContextError", + "X509StoreFlags", + "dump_certificate", + "dump_certificate_request", + "dump_privatekey", + "dump_publickey", + "get_elliptic_curve", + "get_elliptic_curves", + "load_certificate", + "load_certificate_request", + "load_privatekey", + "load_publickey", +] + + +_PrivateKey = Union[ + dsa.DSAPrivateKey, + ec.EllipticCurvePrivateKey, + ed25519.Ed25519PrivateKey, + ed448.Ed448PrivateKey, + rsa.RSAPrivateKey, +] +_PublicKey = Union[ + dsa.DSAPublicKey, + ec.EllipticCurvePublicKey, + ed25519.Ed25519PublicKey, + ed448.Ed448PublicKey, + rsa.RSAPublicKey, +] +_Key = Union[_PrivateKey, _PublicKey] +PassphraseCallableT = Union[bytes, Callable[..., bytes]] + + +FILETYPE_PEM: int = _lib.SSL_FILETYPE_PEM +FILETYPE_ASN1: int = _lib.SSL_FILETYPE_ASN1 + +# TODO This was an API mistake. OpenSSL has no such constant. +FILETYPE_TEXT = 2**16 - 1 + +TYPE_RSA: int = _lib.EVP_PKEY_RSA +TYPE_DSA: int = _lib.EVP_PKEY_DSA +TYPE_DH: int = _lib.EVP_PKEY_DH +TYPE_EC: int = _lib.EVP_PKEY_EC + + +class Error(Exception): + """ + An error occurred in an `OpenSSL.crypto` API. + """ + + +_raise_current_error = partial(_exception_from_error_queue, Error) +_openssl_assert = _make_assert(Error) + + +def _new_mem_buf(buffer: bytes | None = None) -> Any: + """ + Allocate a new OpenSSL memory BIO. + + Arrange for the garbage collector to clean it up automatically. + + :param buffer: None or some bytes to use to put into the BIO so that they + can be read out. + """ + if buffer is None: + bio = _lib.BIO_new(_lib.BIO_s_mem()) + free = _lib.BIO_free + else: + data = _ffi.new("char[]", buffer) + bio = _lib.BIO_new_mem_buf(data, len(buffer)) + + # Keep the memory alive as long as the bio is alive! + def free(bio: Any, ref: Any = data) -> Any: + return _lib.BIO_free(bio) + + _openssl_assert(bio != _ffi.NULL) + + bio = _ffi.gc(bio, free) + return bio + + +def _bio_to_string(bio: Any) -> bytes: + """ + Copy the contents of an OpenSSL BIO object into a Python byte string. + """ + result_buffer = _ffi.new("char**") + buffer_length = _lib.BIO_get_mem_data(bio, result_buffer) + return _ffi.buffer(result_buffer[0], buffer_length)[:] + + +def _set_asn1_time(boundary: Any, when: bytes) -> None: + """ + The the time value of an ASN1 time object. + + @param boundary: An ASN1_TIME pointer (or an object safely + castable to that type) which will have its value set. + @param when: A string representation of the desired time value. + + @raise TypeError: If C{when} is not a L{bytes} string. + @raise ValueError: If C{when} does not represent a time in the required + format. + @raise RuntimeError: If the time value cannot be set for some other + (unspecified) reason. + """ + if not isinstance(when, bytes): + raise TypeError("when must be a byte string") + # ASN1_TIME_set_string validates the string without writing anything + # when the destination is NULL. + _openssl_assert(boundary != _ffi.NULL) + + set_result = _lib.ASN1_TIME_set_string(boundary, when) + if set_result == 0: + raise ValueError("Invalid string") + + +def _new_asn1_time(when: bytes) -> Any: + """ + Behaves like _set_asn1_time but returns a new ASN1_TIME object. + + @param when: A string representation of the desired time value. + + @raise TypeError: If C{when} is not a L{bytes} string. + @raise ValueError: If C{when} does not represent a time in the required + format. + @raise RuntimeError: If the time value cannot be set for some other + (unspecified) reason. + """ + ret = _lib.ASN1_TIME_new() + _openssl_assert(ret != _ffi.NULL) + ret = _ffi.gc(ret, _lib.ASN1_TIME_free) + _set_asn1_time(ret, when) + return ret + + +def _get_asn1_time(timestamp: Any) -> bytes | None: + """ + Retrieve the time value of an ASN1 time object. + + @param timestamp: An ASN1_GENERALIZEDTIME* (or an object safely castable to + that type) from which the time value will be retrieved. + + @return: The time value from C{timestamp} as a L{bytes} string in a certain + format. Or C{None} if the object contains no time value. + """ + string_timestamp = _ffi.cast("ASN1_STRING*", timestamp) + if _lib.ASN1_STRING_length(string_timestamp) == 0: + return None + elif ( + _lib.ASN1_STRING_type(string_timestamp) == _lib.V_ASN1_GENERALIZEDTIME + ): + return _ffi.string(_lib.ASN1_STRING_get0_data(string_timestamp)) + else: + generalized_timestamp = _ffi.new("ASN1_GENERALIZEDTIME**") + _lib.ASN1_TIME_to_generalizedtime(timestamp, generalized_timestamp) + _openssl_assert(generalized_timestamp[0] != _ffi.NULL) + + string_timestamp = _ffi.cast("ASN1_STRING*", generalized_timestamp[0]) + string_data = _lib.ASN1_STRING_get0_data(string_timestamp) + string_result = _ffi.string(string_data) + _lib.ASN1_GENERALIZEDTIME_free(generalized_timestamp[0]) + return string_result + + +class _X509NameInvalidator: + def __init__(self) -> None: + self._names: list[X509Name] = [] + + def add(self, name: X509Name) -> None: + self._names.append(name) + + def clear(self) -> None: + for name in self._names: + # Breaks the object, but also prevents UAF! + del name._name + + +class PKey: + """ + A class representing an DSA or RSA public key or key pair. + """ + + _only_public = False + _initialized = True + + def __init__(self) -> None: + pkey = _lib.EVP_PKEY_new() + self._pkey = _ffi.gc(pkey, _lib.EVP_PKEY_free) + self._initialized = False + + def to_cryptography_key(self) -> _Key: + """ + Export as a ``cryptography`` key. + + :rtype: One of ``cryptography``'s `key interfaces`_. + + .. _key interfaces: https://cryptography.io/en/latest/hazmat/\ + primitives/asymmetric/rsa/#key-interfaces + + .. versionadded:: 16.1.0 + """ + from cryptography.hazmat.primitives.serialization import ( + load_der_private_key, + load_der_public_key, + ) + + if self._only_public: + der = dump_publickey(FILETYPE_ASN1, self) + return typing.cast(_Key, load_der_public_key(der)) + else: + der = dump_privatekey(FILETYPE_ASN1, self) + return typing.cast(_Key, load_der_private_key(der, password=None)) + + @classmethod + def from_cryptography_key(cls, crypto_key: _Key) -> PKey: + """ + Construct based on a ``cryptography`` *crypto_key*. + + :param crypto_key: A ``cryptography`` key. + :type crypto_key: One of ``cryptography``'s `key interfaces`_. + + :rtype: PKey + + .. versionadded:: 16.1.0 + """ + if not isinstance( + crypto_key, + ( + dsa.DSAPrivateKey, + dsa.DSAPublicKey, + ec.EllipticCurvePrivateKey, + ec.EllipticCurvePublicKey, + ed25519.Ed25519PrivateKey, + ed25519.Ed25519PublicKey, + ed448.Ed448PrivateKey, + ed448.Ed448PublicKey, + rsa.RSAPrivateKey, + rsa.RSAPublicKey, + ), + ): + raise TypeError("Unsupported key type") + + from cryptography.hazmat.primitives.serialization import ( + Encoding, + NoEncryption, + PrivateFormat, + PublicFormat, + ) + + if isinstance( + crypto_key, + ( + dsa.DSAPublicKey, + ec.EllipticCurvePublicKey, + ed25519.Ed25519PublicKey, + ed448.Ed448PublicKey, + rsa.RSAPublicKey, + ), + ): + return load_publickey( + FILETYPE_ASN1, + crypto_key.public_bytes( + Encoding.DER, PublicFormat.SubjectPublicKeyInfo + ), + ) + else: + der = crypto_key.private_bytes( + Encoding.DER, PrivateFormat.PKCS8, NoEncryption() + ) + return load_privatekey(FILETYPE_ASN1, der) + + def generate_key(self, type: int, bits: int) -> None: + """ + Generate a key pair of the given type, with the given number of bits. + + This generates a key "into" the this object. + + :param type: The key type. + :type type: :py:data:`TYPE_RSA` or :py:data:`TYPE_DSA` + :param bits: The number of bits. + :type bits: :py:data:`int` ``>= 0`` + :raises TypeError: If :py:data:`type` or :py:data:`bits` isn't + of the appropriate type. + :raises ValueError: If the number of bits isn't an integer of + the appropriate size. + :return: ``None`` + """ + if not isinstance(type, int): + raise TypeError("type must be an integer") + + if not isinstance(bits, int): + raise TypeError("bits must be an integer") + + if type == TYPE_RSA: + if bits <= 0: + raise ValueError("Invalid number of bits") + + # TODO Check error return + exponent = _lib.BN_new() + exponent = _ffi.gc(exponent, _lib.BN_free) + _lib.BN_set_word(exponent, _lib.RSA_F4) + + rsa = _lib.RSA_new() + + result = _lib.RSA_generate_key_ex(rsa, bits, exponent, _ffi.NULL) + _openssl_assert(result == 1) + + result = _lib.EVP_PKEY_assign_RSA(self._pkey, rsa) + _openssl_assert(result == 1) + + elif type == TYPE_DSA: + dsa = _lib.DSA_new() + _openssl_assert(dsa != _ffi.NULL) + + dsa = _ffi.gc(dsa, _lib.DSA_free) + res = _lib.DSA_generate_parameters_ex( + dsa, bits, _ffi.NULL, 0, _ffi.NULL, _ffi.NULL, _ffi.NULL + ) + _openssl_assert(res == 1) + + _openssl_assert(_lib.DSA_generate_key(dsa) == 1) + _openssl_assert(_lib.EVP_PKEY_set1_DSA(self._pkey, dsa) == 1) + else: + raise Error("No such key type") + + self._initialized = True + + def check(self) -> bool: + """ + Check the consistency of an RSA private key. + + This is the Python equivalent of OpenSSL's ``RSA_check_key``. + + :return: ``True`` if key is consistent. + + :raise OpenSSL.crypto.Error: if the key is inconsistent. + + :raise TypeError: if the key is of a type which cannot be checked. + Only RSA keys can currently be checked. + """ + if self._only_public: + raise TypeError("public key only") + + if _lib.EVP_PKEY_type(self.type()) != _lib.EVP_PKEY_RSA: + raise TypeError("Only RSA keys can currently be checked.") + + rsa = _lib.EVP_PKEY_get1_RSA(self._pkey) + rsa = _ffi.gc(rsa, _lib.RSA_free) + result = _lib.RSA_check_key(rsa) + if result == 1: + return True + _raise_current_error() + + def type(self) -> int: + """ + Returns the type of the key + + :return: The type of the key. + """ + return _lib.EVP_PKEY_id(self._pkey) + + def bits(self) -> int: + """ + Returns the number of bits of the key + + :return: The number of bits of the key. + """ + return _lib.EVP_PKEY_bits(self._pkey) + + +class _EllipticCurve: + """ + A representation of a supported elliptic curve. + + @cvar _curves: :py:obj:`None` until an attempt is made to load the curves. + Thereafter, a :py:type:`set` containing :py:type:`_EllipticCurve` + instances each of which represents one curve supported by the system. + @type _curves: :py:type:`NoneType` or :py:type:`set` + """ + + _curves = None + + def __ne__(self, other: Any) -> bool: + """ + Implement cooperation with the right-hand side argument of ``!=``. + + Python 3 seems to have dropped this cooperation in this very narrow + circumstance. + """ + if isinstance(other, _EllipticCurve): + return super().__ne__(other) + return NotImplemented + + @classmethod + def _load_elliptic_curves(cls, lib: Any) -> set[_EllipticCurve]: + """ + Get the curves supported by OpenSSL. + + :param lib: The OpenSSL library binding object. + + :return: A :py:type:`set` of ``cls`` instances giving the names of the + elliptic curves the underlying library supports. + """ + num_curves = lib.EC_get_builtin_curves(_ffi.NULL, 0) + builtin_curves = _ffi.new("EC_builtin_curve[]", num_curves) + # The return value on this call should be num_curves again. We + # could check it to make sure but if it *isn't* then.. what could + # we do? Abort the whole process, I suppose...? -exarkun + lib.EC_get_builtin_curves(builtin_curves, num_curves) + return set(cls.from_nid(lib, c.nid) for c in builtin_curves) + + @classmethod + def _get_elliptic_curves(cls, lib: Any) -> set[_EllipticCurve]: + """ + Get, cache, and return the curves supported by OpenSSL. + + :param lib: The OpenSSL library binding object. + + :return: A :py:type:`set` of ``cls`` instances giving the names of the + elliptic curves the underlying library supports. + """ + if cls._curves is None: + cls._curves = cls._load_elliptic_curves(lib) + return cls._curves + + @classmethod + def from_nid(cls, lib: Any, nid: int) -> _EllipticCurve: + """ + Instantiate a new :py:class:`_EllipticCurve` associated with the given + OpenSSL NID. + + :param lib: The OpenSSL library binding object. + + :param nid: The OpenSSL NID the resulting curve object will represent. + This must be a curve NID (and not, for example, a hash NID) or + subsequent operations will fail in unpredictable ways. + :type nid: :py:class:`int` + + :return: The curve object. + """ + return cls(lib, nid, _ffi.string(lib.OBJ_nid2sn(nid)).decode("ascii")) + + def __init__(self, lib: Any, nid: int, name: str) -> None: + """ + :param _lib: The :py:mod:`cryptography` binding instance used to + interface with OpenSSL. + + :param _nid: The OpenSSL NID identifying the curve this object + represents. + :type _nid: :py:class:`int` + + :param name: The OpenSSL short name identifying the curve this object + represents. + :type name: :py:class:`unicode` + """ + self._lib = lib + self._nid = nid + self.name = name + + def __repr__(self) -> str: + return f"" + + def _to_EC_KEY(self) -> Any: + """ + Create a new OpenSSL EC_KEY structure initialized to use this curve. + + The structure is automatically garbage collected when the Python object + is garbage collected. + """ + key = self._lib.EC_KEY_new_by_curve_name(self._nid) + return _ffi.gc(key, _lib.EC_KEY_free) + + +@deprecated( + "get_elliptic_curves is deprecated. You should use the APIs in " + "cryptography instead." +) +def get_elliptic_curves() -> set[_EllipticCurve]: + """ + Return a set of objects representing the elliptic curves supported in the + OpenSSL build in use. + + The curve objects have a :py:class:`unicode` ``name`` attribute by which + they identify themselves. + + The curve objects are useful as values for the argument accepted by + :py:meth:`Context.set_tmp_ecdh` to specify which elliptical curve should be + used for ECDHE key exchange. + """ + return _EllipticCurve._get_elliptic_curves(_lib) + + +@deprecated( + "get_elliptic_curve is deprecated. You should use the APIs in " + "cryptography instead." +) +def get_elliptic_curve(name: str) -> _EllipticCurve: + """ + Return a single curve object selected by name. + + See :py:func:`get_elliptic_curves` for information about curve objects. + + :param name: The OpenSSL short name identifying the curve object to + retrieve. + :type name: :py:class:`unicode` + + If the named curve is not supported then :py:class:`ValueError` is raised. + """ + for curve in get_elliptic_curves(): + if curve.name == name: + return curve + raise ValueError("unknown curve name", name) + + +@functools.total_ordering +class X509Name: + """ + An X.509 Distinguished Name. + + :ivar countryName: The country of the entity. + :ivar C: Alias for :py:attr:`countryName`. + + :ivar stateOrProvinceName: The state or province of the entity. + :ivar ST: Alias for :py:attr:`stateOrProvinceName`. + + :ivar localityName: The locality of the entity. + :ivar L: Alias for :py:attr:`localityName`. + + :ivar organizationName: The organization name of the entity. + :ivar O: Alias for :py:attr:`organizationName`. + + :ivar organizationalUnitName: The organizational unit of the entity. + :ivar OU: Alias for :py:attr:`organizationalUnitName` + + :ivar commonName: The common name of the entity. + :ivar CN: Alias for :py:attr:`commonName`. + + :ivar emailAddress: The e-mail address of the entity. + """ + + def __init__(self, name: X509Name) -> None: + """ + Create a new X509Name, copying the given X509Name instance. + + :param name: The name to copy. + :type name: :py:class:`X509Name` + """ + name = _lib.X509_NAME_dup(name._name) + self._name: Any = _ffi.gc(name, _lib.X509_NAME_free) + + def __setattr__(self, name: str, value: Any) -> None: + if name.startswith("_"): + return super().__setattr__(name, value) + + # Note: we really do not want str subclasses here, so we do not use + # isinstance. + if type(name) is not str: + raise TypeError( + f"attribute name must be string, not " + f"'{type(value).__name__:.200}'" + ) + + nid = _lib.OBJ_txt2nid(_byte_string(name)) + if nid == _lib.NID_undef: + try: + _raise_current_error() + except Error: + pass + raise AttributeError("No such attribute") + + # If there's an old entry for this NID, remove it + for i in range(_lib.X509_NAME_entry_count(self._name)): + ent = _lib.X509_NAME_get_entry(self._name, i) + ent_obj = _lib.X509_NAME_ENTRY_get_object(ent) + ent_nid = _lib.OBJ_obj2nid(ent_obj) + if nid == ent_nid: + ent = _lib.X509_NAME_delete_entry(self._name, i) + _lib.X509_NAME_ENTRY_free(ent) + break + + if isinstance(value, str): + value = value.encode("utf-8") + + add_result = _lib.X509_NAME_add_entry_by_NID( + self._name, nid, _lib.MBSTRING_UTF8, value, -1, -1, 0 + ) + if not add_result: + _raise_current_error() + + def __getattr__(self, name: str) -> str | None: + """ + Find attribute. An X509Name object has the following attributes: + countryName (alias C), stateOrProvince (alias ST), locality (alias L), + organization (alias O), organizationalUnit (alias OU), commonName + (alias CN) and more... + """ + nid = _lib.OBJ_txt2nid(_byte_string(name)) + if nid == _lib.NID_undef: + # This is a bit weird. OBJ_txt2nid indicated failure, but it seems + # a lower level function, a2d_ASN1_OBJECT, also feels the need to + # push something onto the error queue. If we don't clean that up + # now, someone else will bump into it later and be quite confused. + # See lp#314814. + try: + _raise_current_error() + except Error: + pass + raise AttributeError("No such attribute") + + entry_index = _lib.X509_NAME_get_index_by_NID(self._name, nid, -1) + if entry_index == -1: + return None + + entry = _lib.X509_NAME_get_entry(self._name, entry_index) + data = _lib.X509_NAME_ENTRY_get_data(entry) + + result_buffer = _ffi.new("unsigned char**") + data_length = _lib.ASN1_STRING_to_UTF8(result_buffer, data) + _openssl_assert(data_length >= 0) + + try: + result = _ffi.buffer(result_buffer[0], data_length)[:].decode( + "utf-8" + ) + finally: + # XXX untested + _lib.OPENSSL_free(result_buffer[0]) + return result + + def __eq__(self, other: Any) -> bool: + if not isinstance(other, X509Name): + return NotImplemented + + return _lib.X509_NAME_cmp(self._name, other._name) == 0 + + def __lt__(self, other: Any) -> bool: + if not isinstance(other, X509Name): + return NotImplemented + + return _lib.X509_NAME_cmp(self._name, other._name) < 0 + + def __repr__(self) -> str: + """ + String representation of an X509Name + """ + result_buffer = _ffi.new("char[]", 512) + format_result = _lib.X509_NAME_oneline( + self._name, result_buffer, len(result_buffer) + ) + _openssl_assert(format_result != _ffi.NULL) + + return "".format( + _ffi.string(result_buffer).decode("utf-8"), + ) + + def hash(self) -> int: + """ + Return an integer representation of the first four bytes of the + MD5 digest of the DER representation of the name. + + This is the Python equivalent of OpenSSL's ``X509_NAME_hash``. + + :return: The (integer) hash of this name. + :rtype: :py:class:`int` + """ + return _lib.X509_NAME_hash(self._name) + + def der(self) -> bytes: + """ + Return the DER encoding of this name. + + :return: The DER encoded form of this name. + :rtype: :py:class:`bytes` + """ + result_buffer = _ffi.new("unsigned char**") + encode_result = _lib.i2d_X509_NAME(self._name, result_buffer) + _openssl_assert(encode_result >= 0) + + string_result = _ffi.buffer(result_buffer[0], encode_result)[:] + _lib.OPENSSL_free(result_buffer[0]) + return string_result + + def get_components(self) -> list[tuple[bytes, bytes]]: + """ + Returns the components of this name, as a sequence of 2-tuples. + + :return: The components of this name. + :rtype: :py:class:`list` of ``name, value`` tuples. + """ + result = [] + for i in range(_lib.X509_NAME_entry_count(self._name)): + ent = _lib.X509_NAME_get_entry(self._name, i) + + fname = _lib.X509_NAME_ENTRY_get_object(ent) + fval = _lib.X509_NAME_ENTRY_get_data(ent) + + nid = _lib.OBJ_obj2nid(fname) + name = _lib.OBJ_nid2sn(nid) + + # ffi.string does not handle strings containing NULL bytes + # (which may have been generated by old, broken software) + value = _ffi.buffer( + _lib.ASN1_STRING_get0_data(fval), _lib.ASN1_STRING_length(fval) + )[:] + result.append((_ffi.string(name), value)) + + return result + + +@deprecated( + "X509Extension support in pyOpenSSL is deprecated. You should use the " + "APIs in cryptography." +) +class X509Extension: + """ + An X.509 v3 certificate extension. + + .. deprecated:: 23.3.0 + Use cryptography's X509 APIs instead. + """ + + def __init__( + self, + type_name: bytes, + critical: bool, + value: bytes, + subject: X509 | None = None, + issuer: X509 | None = None, + ) -> None: + """ + Initializes an X509 extension. + + :param type_name: The name of the type of extension_ to create. + :type type_name: :py:data:`bytes` + + :param bool critical: A flag indicating whether this is a critical + extension. + + :param value: The OpenSSL textual representation of the extension's + value. + :type value: :py:data:`bytes` + + :param subject: Optional X509 certificate to use as subject. + :type subject: :py:class:`X509` + + :param issuer: Optional X509 certificate to use as issuer. + :type issuer: :py:class:`X509` + + .. _extension: https://www.openssl.org/docs/manmaster/man5/ + x509v3_config.html#STANDARD-EXTENSIONS + """ + ctx = _ffi.new("X509V3_CTX*") + + # A context is necessary for any extension which uses the r2i + # conversion method. That is, X509V3_EXT_nconf may segfault if passed + # a NULL ctx. Start off by initializing most of the fields to NULL. + _lib.X509V3_set_ctx(ctx, _ffi.NULL, _ffi.NULL, _ffi.NULL, _ffi.NULL, 0) + + # We have no configuration database - but perhaps we should (some + # extensions may require it). + _lib.X509V3_set_ctx_nodb(ctx) + + # Initialize the subject and issuer, if appropriate. ctx is a local, + # and as far as I can tell none of the X509V3_* APIs invoked here steal + # any references, so no need to mess with reference counts or + # duplicates. + if issuer is not None: + if not isinstance(issuer, X509): + raise TypeError("issuer must be an X509 instance") + ctx.issuer_cert = issuer._x509 + if subject is not None: + if not isinstance(subject, X509): + raise TypeError("subject must be an X509 instance") + ctx.subject_cert = subject._x509 + + if critical: + # There are other OpenSSL APIs which would let us pass in critical + # separately, but they're harder to use, and since value is already + # a pile of crappy junk smuggling a ton of utterly important + # structured data, what's the point of trying to avoid nasty stuff + # with strings? (However, X509V3_EXT_i2d in particular seems like + # it would be a better API to invoke. I do not know where to get + # the ext_struc it desires for its last parameter, though.) + value = b"critical," + value + + extension = _lib.X509V3_EXT_nconf(_ffi.NULL, ctx, type_name, value) + if extension == _ffi.NULL: + _raise_current_error() + self._extension = _ffi.gc(extension, _lib.X509_EXTENSION_free) + + @property + def _nid(self) -> Any: + return _lib.OBJ_obj2nid( + _lib.X509_EXTENSION_get_object(self._extension) + ) + + _prefixes: typing.ClassVar[dict[int, str]] = { + _lib.GEN_EMAIL: "email", + _lib.GEN_DNS: "DNS", + _lib.GEN_URI: "URI", + } + + def _subjectAltNameString(self) -> str: + names = _ffi.cast( + "GENERAL_NAMES*", _lib.X509V3_EXT_d2i(self._extension) + ) + + names = _ffi.gc(names, _lib.GENERAL_NAMES_free) + parts = [] + for i in range(_lib.sk_GENERAL_NAME_num(names)): + name = _lib.sk_GENERAL_NAME_value(names, i) + try: + label = self._prefixes[name.type] + except KeyError: + bio = _new_mem_buf() + _lib.GENERAL_NAME_print(bio, name) + parts.append(_bio_to_string(bio).decode("utf-8")) + else: + value = _ffi.buffer(name.d.ia5.data, name.d.ia5.length)[ + : + ].decode("utf-8") + parts.append(label + ":" + value) + return ", ".join(parts) + + def __str__(self) -> str: + """ + :return: a nice text representation of the extension + """ + if _lib.NID_subject_alt_name == self._nid: + return self._subjectAltNameString() + + bio = _new_mem_buf() + print_result = _lib.X509V3_EXT_print(bio, self._extension, 0, 0) + _openssl_assert(print_result != 0) + + return _bio_to_string(bio).decode("utf-8") + + def get_critical(self) -> bool: + """ + Returns the critical field of this X.509 extension. + + :return: The critical field. + """ + return _lib.X509_EXTENSION_get_critical(self._extension) + + def get_short_name(self) -> bytes: + """ + Returns the short type name of this X.509 extension. + + The result is a byte string such as :py:const:`b"basicConstraints"`. + + :return: The short type name. + :rtype: :py:data:`bytes` + + .. versionadded:: 0.12 + """ + obj = _lib.X509_EXTENSION_get_object(self._extension) + nid = _lib.OBJ_obj2nid(obj) + # OpenSSL 3.1.0 has a bug where nid2sn returns NULL for NIDs that + # previously returned UNDEF. This is a workaround for that issue. + # https://github.com/openssl/openssl/commit/908ba3ed9adbb3df90f76 + buf = _lib.OBJ_nid2sn(nid) + if buf != _ffi.NULL: + return _ffi.string(buf) + else: + return b"UNDEF" + + def get_data(self) -> bytes: + """ + Returns the data of the X509 extension, encoded as ASN.1. + + :return: The ASN.1 encoded data of this X509 extension. + :rtype: :py:data:`bytes` + + .. versionadded:: 0.12 + """ + octet_result = _lib.X509_EXTENSION_get_data(self._extension) + string_result = _ffi.cast("ASN1_STRING*", octet_result) + char_result = _lib.ASN1_STRING_get0_data(string_result) + result_length = _lib.ASN1_STRING_length(string_result) + return _ffi.buffer(char_result, result_length)[:] + + +@deprecated( + "CSR support in pyOpenSSL is deprecated. You should use the APIs " + "in cryptography." +) +class X509Req: + """ + An X.509 certificate signing requests. + + .. deprecated:: 24.2.0 + Use `cryptography.x509.CertificateSigningRequest` instead. + """ + + def __init__(self) -> None: + req = _lib.X509_REQ_new() + self._req = _ffi.gc(req, _lib.X509_REQ_free) + # Default to version 0. + self.set_version(0) + + def to_cryptography(self) -> x509.CertificateSigningRequest: + """ + Export as a ``cryptography`` certificate signing request. + + :rtype: ``cryptography.x509.CertificateSigningRequest`` + + .. versionadded:: 17.1.0 + """ + from cryptography.x509 import load_der_x509_csr + + der = _dump_certificate_request_internal(FILETYPE_ASN1, self) + + return load_der_x509_csr(der) + + @classmethod + def from_cryptography( + cls, crypto_req: x509.CertificateSigningRequest + ) -> X509Req: + """ + Construct based on a ``cryptography`` *crypto_req*. + + :param crypto_req: A ``cryptography`` X.509 certificate signing request + :type crypto_req: ``cryptography.x509.CertificateSigningRequest`` + + :rtype: X509Req + + .. versionadded:: 17.1.0 + """ + if not isinstance(crypto_req, x509.CertificateSigningRequest): + raise TypeError("Must be a certificate signing request") + + from cryptography.hazmat.primitives.serialization import Encoding + + der = crypto_req.public_bytes(Encoding.DER) + return _load_certificate_request_internal(FILETYPE_ASN1, der) + + def set_pubkey(self, pkey: PKey) -> None: + """ + Set the public key of the certificate signing request. + + :param pkey: The public key to use. + :type pkey: :py:class:`PKey` + + :return: ``None`` + """ + set_result = _lib.X509_REQ_set_pubkey(self._req, pkey._pkey) + _openssl_assert(set_result == 1) + + def get_pubkey(self) -> PKey: + """ + Get the public key of the certificate signing request. + + :return: The public key. + :rtype: :py:class:`PKey` + """ + pkey = PKey.__new__(PKey) + pkey._pkey = _lib.X509_REQ_get_pubkey(self._req) + _openssl_assert(pkey._pkey != _ffi.NULL) + pkey._pkey = _ffi.gc(pkey._pkey, _lib.EVP_PKEY_free) + pkey._only_public = True + return pkey + + def set_version(self, version: int) -> None: + """ + Set the version subfield (RFC 2986, section 4.1) of the certificate + request. + + :param int version: The version number. + :return: ``None`` + """ + if not isinstance(version, int): + raise TypeError("version must be an int") + if version != 0: + raise ValueError( + "Invalid version. The only valid version for X509Req is 0." + ) + set_result = _lib.X509_REQ_set_version(self._req, version) + _openssl_assert(set_result == 1) + + def get_version(self) -> int: + """ + Get the version subfield (RFC 2459, section 4.1.2.1) of the certificate + request. + + :return: The value of the version subfield. + :rtype: :py:class:`int` + """ + return _lib.X509_REQ_get_version(self._req) + + def get_subject(self) -> X509Name: + """ + Return the subject of this certificate signing request. + + This creates a new :class:`X509Name` that wraps the underlying subject + name field on the certificate signing request. Modifying it will modify + the underlying signing request, and will have the effect of modifying + any other :class:`X509Name` that refers to this subject. + + :return: The subject of this certificate signing request. + :rtype: :class:`X509Name` + """ + name = X509Name.__new__(X509Name) + name._name = _lib.X509_REQ_get_subject_name(self._req) + _openssl_assert(name._name != _ffi.NULL) + + # The name is owned by the X509Req structure. As long as the X509Name + # Python object is alive, keep the X509Req Python object alive. + name._owner = self + + return name + + def add_extensions(self, extensions: Iterable[X509Extension]) -> None: + """ + Add extensions to the certificate signing request. + + :param extensions: The X.509 extensions to add. + :type extensions: iterable of :py:class:`X509Extension` + :return: ``None`` + """ + warnings.warn( + ( + "This API is deprecated and will be removed in a future " + "version of pyOpenSSL. You should use pyca/cryptography's " + "X.509 APIs instead." + ), + DeprecationWarning, + stacklevel=2, + ) + + stack = _lib.sk_X509_EXTENSION_new_null() + _openssl_assert(stack != _ffi.NULL) + + stack = _ffi.gc(stack, _lib.sk_X509_EXTENSION_free) + + for ext in extensions: + if not isinstance(ext, X509Extension): + raise ValueError("One of the elements is not an X509Extension") + + # TODO push can fail (here and elsewhere) + _lib.sk_X509_EXTENSION_push(stack, ext._extension) + + add_result = _lib.X509_REQ_add_extensions(self._req, stack) + _openssl_assert(add_result == 1) + + def get_extensions(self) -> list[X509Extension]: + """ + Get X.509 extensions in the certificate signing request. + + :return: The X.509 extensions in this request. + :rtype: :py:class:`list` of :py:class:`X509Extension` objects. + + .. versionadded:: 0.15 + """ + warnings.warn( + ( + "This API is deprecated and will be removed in a future " + "version of pyOpenSSL. You should use pyca/cryptography's " + "X.509 APIs instead." + ), + DeprecationWarning, + stacklevel=2, + ) + + exts = [] + native_exts_obj = _lib.X509_REQ_get_extensions(self._req) + native_exts_obj = _ffi.gc( + native_exts_obj, + lambda x: _lib.sk_X509_EXTENSION_pop_free( + x, + _ffi.addressof(_lib._original_lib, "X509_EXTENSION_free"), + ), + ) + + for i in range(_lib.sk_X509_EXTENSION_num(native_exts_obj)): + ext = X509Extension.__new__(X509Extension) + extension = _lib.X509_EXTENSION_dup( + _lib.sk_X509_EXTENSION_value(native_exts_obj, i) + ) + ext._extension = _ffi.gc(extension, _lib.X509_EXTENSION_free) + exts.append(ext) + return exts + + def sign(self, pkey: PKey, digest: str) -> None: + """ + Sign the certificate signing request with this key and digest type. + + :param pkey: The key pair to sign with. + :type pkey: :py:class:`PKey` + :param digest: The name of the message digest to use for the signature, + e.g. :py:data:`"sha256"`. + :type digest: :py:class:`str` + :return: ``None`` + """ + if pkey._only_public: + raise ValueError("Key has only public part") + + if not pkey._initialized: + raise ValueError("Key is uninitialized") + + digest_obj = _lib.EVP_get_digestbyname(_byte_string(digest)) + if digest_obj == _ffi.NULL: + raise ValueError("No such digest method") + + sign_result = _lib.X509_REQ_sign(self._req, pkey._pkey, digest_obj) + _openssl_assert(sign_result > 0) + + def verify(self, pkey: PKey) -> bool: + """ + Verifies the signature on this certificate signing request. + + :param PKey key: A public key. + + :return: ``True`` if the signature is correct. + :rtype: bool + + :raises OpenSSL.crypto.Error: If the signature is invalid or there is a + problem verifying the signature. + """ + if not isinstance(pkey, PKey): + raise TypeError("pkey must be a PKey instance") + + result = _lib.X509_REQ_verify(self._req, pkey._pkey) + if result <= 0: + _raise_current_error() + + return result + + +class X509: + """ + An X.509 certificate. + """ + + def __init__(self) -> None: + x509 = _lib.X509_new() + _openssl_assert(x509 != _ffi.NULL) + self._x509 = _ffi.gc(x509, _lib.X509_free) + + self._issuer_invalidator = _X509NameInvalidator() + self._subject_invalidator = _X509NameInvalidator() + + @classmethod + def _from_raw_x509_ptr(cls, x509: Any) -> X509: + cert = cls.__new__(cls) + cert._x509 = _ffi.gc(x509, _lib.X509_free) + cert._issuer_invalidator = _X509NameInvalidator() + cert._subject_invalidator = _X509NameInvalidator() + return cert + + def to_cryptography(self) -> x509.Certificate: + """ + Export as a ``cryptography`` certificate. + + :rtype: ``cryptography.x509.Certificate`` + + .. versionadded:: 17.1.0 + """ + from cryptography.x509 import load_der_x509_certificate + + der = dump_certificate(FILETYPE_ASN1, self) + return load_der_x509_certificate(der) + + @classmethod + def from_cryptography(cls, crypto_cert: x509.Certificate) -> X509: + """ + Construct based on a ``cryptography`` *crypto_cert*. + + :param crypto_key: A ``cryptography`` X.509 certificate. + :type crypto_key: ``cryptography.x509.Certificate`` + + :rtype: X509 + + .. versionadded:: 17.1.0 + """ + if not isinstance(crypto_cert, x509.Certificate): + raise TypeError("Must be a certificate") + + from cryptography.hazmat.primitives.serialization import Encoding + + der = crypto_cert.public_bytes(Encoding.DER) + return load_certificate(FILETYPE_ASN1, der) + + def set_version(self, version: int) -> None: + """ + Set the version number of the certificate. Note that the + version value is zero-based, eg. a value of 0 is V1. + + :param version: The version number of the certificate. + :type version: :py:class:`int` + + :return: ``None`` + """ + if not isinstance(version, int): + raise TypeError("version must be an integer") + + _openssl_assert(_lib.X509_set_version(self._x509, version) == 1) + + def get_version(self) -> int: + """ + Return the version number of the certificate. + + :return: The version number of the certificate. + :rtype: :py:class:`int` + """ + return _lib.X509_get_version(self._x509) + + def get_pubkey(self) -> PKey: + """ + Get the public key of the certificate. + + :return: The public key. + :rtype: :py:class:`PKey` + """ + pkey = PKey.__new__(PKey) + pkey._pkey = _lib.X509_get_pubkey(self._x509) + if pkey._pkey == _ffi.NULL: + _raise_current_error() + pkey._pkey = _ffi.gc(pkey._pkey, _lib.EVP_PKEY_free) + pkey._only_public = True + return pkey + + def set_pubkey(self, pkey: PKey) -> None: + """ + Set the public key of the certificate. + + :param pkey: The public key. + :type pkey: :py:class:`PKey` + + :return: :py:data:`None` + """ + if not isinstance(pkey, PKey): + raise TypeError("pkey must be a PKey instance") + + set_result = _lib.X509_set_pubkey(self._x509, pkey._pkey) + _openssl_assert(set_result == 1) + + def sign(self, pkey: PKey, digest: str) -> None: + """ + Sign the certificate with this key and digest type. + + :param pkey: The key to sign with. + :type pkey: :py:class:`PKey` + + :param digest: The name of the message digest to use. + :type digest: :py:class:`str` + + :return: :py:data:`None` + """ + if not isinstance(pkey, PKey): + raise TypeError("pkey must be a PKey instance") + + if pkey._only_public: + raise ValueError("Key only has public part") + + if not pkey._initialized: + raise ValueError("Key is uninitialized") + + evp_md = _lib.EVP_get_digestbyname(_byte_string(digest)) + if evp_md == _ffi.NULL: + raise ValueError("No such digest method") + + sign_result = _lib.X509_sign(self._x509, pkey._pkey, evp_md) + _openssl_assert(sign_result > 0) + + def get_signature_algorithm(self) -> bytes: + """ + Return the signature algorithm used in the certificate. + + :return: The name of the algorithm. + :rtype: :py:class:`bytes` + + :raises ValueError: If the signature algorithm is undefined. + + .. versionadded:: 0.13 + """ + sig_alg = _lib.X509_get0_tbs_sigalg(self._x509) + alg = _ffi.new("ASN1_OBJECT **") + _lib.X509_ALGOR_get0(alg, _ffi.NULL, _ffi.NULL, sig_alg) + nid = _lib.OBJ_obj2nid(alg[0]) + if nid == _lib.NID_undef: + raise ValueError("Undefined signature algorithm") + return _ffi.string(_lib.OBJ_nid2ln(nid)) + + def digest(self, digest_name: str) -> bytes: + """ + Return the digest of the X509 object. + + :param digest_name: The name of the digest algorithm to use. + :type digest_name: :py:class:`str` + + :return: The digest of the object, formatted as + :py:const:`b":"`-delimited hex pairs. + :rtype: :py:class:`bytes` + """ + digest = _lib.EVP_get_digestbyname(_byte_string(digest_name)) + if digest == _ffi.NULL: + raise ValueError("No such digest method") + + result_buffer = _ffi.new("unsigned char[]", _lib.EVP_MAX_MD_SIZE) + result_length = _ffi.new("unsigned int[]", 1) + result_length[0] = len(result_buffer) + + digest_result = _lib.X509_digest( + self._x509, digest, result_buffer, result_length + ) + _openssl_assert(digest_result == 1) + + return b":".join( + [ + b16encode(ch).upper() + for ch in _ffi.buffer(result_buffer, result_length[0]) + ] + ) + + def subject_name_hash(self) -> int: + """ + Return the hash of the X509 subject. + + :return: The hash of the subject. + :rtype: :py:class:`int` + """ + return _lib.X509_subject_name_hash(self._x509) + + def set_serial_number(self, serial: int) -> None: + """ + Set the serial number of the certificate. + + :param serial: The new serial number. + :type serial: :py:class:`int` + + :return: :py:data`None` + """ + if not isinstance(serial, int): + raise TypeError("serial must be an integer") + + hex_serial = hex(serial)[2:] + hex_serial_bytes = hex_serial.encode("ascii") + + bignum_serial = _ffi.new("BIGNUM**") + + # BN_hex2bn stores the result in &bignum. + result = _lib.BN_hex2bn(bignum_serial, hex_serial_bytes) + _openssl_assert(result != _ffi.NULL) + + asn1_serial = _lib.BN_to_ASN1_INTEGER(bignum_serial[0], _ffi.NULL) + _lib.BN_free(bignum_serial[0]) + _openssl_assert(asn1_serial != _ffi.NULL) + asn1_serial = _ffi.gc(asn1_serial, _lib.ASN1_INTEGER_free) + set_result = _lib.X509_set_serialNumber(self._x509, asn1_serial) + _openssl_assert(set_result == 1) + + def get_serial_number(self) -> int: + """ + Return the serial number of this certificate. + + :return: The serial number. + :rtype: int + """ + asn1_serial = _lib.X509_get_serialNumber(self._x509) + bignum_serial = _lib.ASN1_INTEGER_to_BN(asn1_serial, _ffi.NULL) + try: + hex_serial = _lib.BN_bn2hex(bignum_serial) + try: + hexstring_serial = _ffi.string(hex_serial) + serial = int(hexstring_serial, 16) + return serial + finally: + _lib.OPENSSL_free(hex_serial) + finally: + _lib.BN_free(bignum_serial) + + def gmtime_adj_notAfter(self, amount: int) -> None: + """ + Adjust the time stamp on which the certificate stops being valid. + + :param int amount: The number of seconds by which to adjust the + timestamp. + :return: ``None`` + """ + if not isinstance(amount, int): + raise TypeError("amount must be an integer") + + notAfter = _lib.X509_getm_notAfter(self._x509) + _lib.X509_gmtime_adj(notAfter, amount) + + def gmtime_adj_notBefore(self, amount: int) -> None: + """ + Adjust the timestamp on which the certificate starts being valid. + + :param amount: The number of seconds by which to adjust the timestamp. + :return: ``None`` + """ + if not isinstance(amount, int): + raise TypeError("amount must be an integer") + + notBefore = _lib.X509_getm_notBefore(self._x509) + _lib.X509_gmtime_adj(notBefore, amount) + + def has_expired(self) -> bool: + """ + Check whether the certificate has expired. + + :return: ``True`` if the certificate has expired, ``False`` otherwise. + :rtype: bool + """ + time_bytes = self.get_notAfter() + if time_bytes is None: + raise ValueError("Unable to determine notAfter") + time_string = time_bytes.decode("utf-8") + not_after = datetime.datetime.strptime(time_string, "%Y%m%d%H%M%SZ") + + UTC = datetime.timezone.utc + utcnow = datetime.datetime.now(UTC).replace(tzinfo=None) + return not_after < utcnow + + def _get_boundary_time(self, which: Any) -> bytes | None: + return _get_asn1_time(which(self._x509)) + + def get_notBefore(self) -> bytes | None: + """ + Get the timestamp at which the certificate starts being valid. + + The timestamp is formatted as an ASN.1 TIME:: + + YYYYMMDDhhmmssZ + + :return: A timestamp string, or ``None`` if there is none. + :rtype: bytes or NoneType + """ + return self._get_boundary_time(_lib.X509_getm_notBefore) + + def _set_boundary_time( + self, which: Callable[..., Any], when: bytes + ) -> None: + return _set_asn1_time(which(self._x509), when) + + def set_notBefore(self, when: bytes) -> None: + """ + Set the timestamp at which the certificate starts being valid. + + The timestamp is formatted as an ASN.1 TIME:: + + YYYYMMDDhhmmssZ + + :param bytes when: A timestamp string. + :return: ``None`` + """ + return self._set_boundary_time(_lib.X509_getm_notBefore, when) + + def get_notAfter(self) -> bytes | None: + """ + Get the timestamp at which the certificate stops being valid. + + The timestamp is formatted as an ASN.1 TIME:: + + YYYYMMDDhhmmssZ + + :return: A timestamp string, or ``None`` if there is none. + :rtype: bytes or NoneType + """ + return self._get_boundary_time(_lib.X509_getm_notAfter) + + def set_notAfter(self, when: bytes) -> None: + """ + Set the timestamp at which the certificate stops being valid. + + The timestamp is formatted as an ASN.1 TIME:: + + YYYYMMDDhhmmssZ + + :param bytes when: A timestamp string. + :return: ``None`` + """ + return self._set_boundary_time(_lib.X509_getm_notAfter, when) + + def _get_name(self, which: Any) -> X509Name: + name = X509Name.__new__(X509Name) + name._name = which(self._x509) + _openssl_assert(name._name != _ffi.NULL) + + # The name is owned by the X509 structure. As long as the X509Name + # Python object is alive, keep the X509 Python object alive. + name._owner = self + + return name + + def _set_name(self, which: Any, name: X509Name) -> None: + if not isinstance(name, X509Name): + raise TypeError("name must be an X509Name") + set_result = which(self._x509, name._name) + _openssl_assert(set_result == 1) + + def get_issuer(self) -> X509Name: + """ + Return the issuer of this certificate. + + This creates a new :class:`X509Name` that wraps the underlying issuer + name field on the certificate. Modifying it will modify the underlying + certificate, and will have the effect of modifying any other + :class:`X509Name` that refers to this issuer. + + :return: The issuer of this certificate. + :rtype: :class:`X509Name` + """ + name = self._get_name(_lib.X509_get_issuer_name) + self._issuer_invalidator.add(name) + return name + + def set_issuer(self, issuer: X509Name) -> None: + """ + Set the issuer of this certificate. + + :param issuer: The issuer. + :type issuer: :py:class:`X509Name` + + :return: ``None`` + """ + self._set_name(_lib.X509_set_issuer_name, issuer) + self._issuer_invalidator.clear() + + def get_subject(self) -> X509Name: + """ + Return the subject of this certificate. + + This creates a new :class:`X509Name` that wraps the underlying subject + name field on the certificate. Modifying it will modify the underlying + certificate, and will have the effect of modifying any other + :class:`X509Name` that refers to this subject. + + :return: The subject of this certificate. + :rtype: :class:`X509Name` + """ + name = self._get_name(_lib.X509_get_subject_name) + self._subject_invalidator.add(name) + return name + + def set_subject(self, subject: X509Name) -> None: + """ + Set the subject of this certificate. + + :param subject: The subject. + :type subject: :py:class:`X509Name` + + :return: ``None`` + """ + self._set_name(_lib.X509_set_subject_name, subject) + self._subject_invalidator.clear() + + def get_extension_count(self) -> int: + """ + Get the number of extensions on this certificate. + + :return: The number of extensions. + :rtype: :py:class:`int` + + .. versionadded:: 0.12 + """ + return _lib.X509_get_ext_count(self._x509) + + def add_extensions(self, extensions: Iterable[X509Extension]) -> None: + """ + Add extensions to the certificate. + + :param extensions: The extensions to add. + :type extensions: An iterable of :py:class:`X509Extension` objects. + :return: ``None`` + """ + warnings.warn( + ( + "This API is deprecated and will be removed in a future " + "version of pyOpenSSL. You should use pyca/cryptography's " + "X.509 APIs instead." + ), + DeprecationWarning, + stacklevel=2, + ) + + for ext in extensions: + if not isinstance(ext, X509Extension): + raise ValueError("One of the elements is not an X509Extension") + + add_result = _lib.X509_add_ext(self._x509, ext._extension, -1) + _openssl_assert(add_result == 1) + + def get_extension(self, index: int) -> X509Extension: + """ + Get a specific extension of the certificate by index. + + Extensions on a certificate are kept in order. The index + parameter selects which extension will be returned. + + :param int index: The index of the extension to retrieve. + :return: The extension at the specified index. + :rtype: :py:class:`X509Extension` + :raises IndexError: If the extension index was out of bounds. + + .. versionadded:: 0.12 + """ + warnings.warn( + ( + "This API is deprecated and will be removed in a future " + "version of pyOpenSSL. You should use pyca/cryptography's " + "X.509 APIs instead." + ), + DeprecationWarning, + stacklevel=2, + ) + + ext = X509Extension.__new__(X509Extension) + ext._extension = _lib.X509_get_ext(self._x509, index) + if ext._extension == _ffi.NULL: + raise IndexError("extension index out of bounds") + + extension = _lib.X509_EXTENSION_dup(ext._extension) + ext._extension = _ffi.gc(extension, _lib.X509_EXTENSION_free) + return ext + + +class X509StoreFlags: + """ + Flags for X509 verification, used to change the behavior of + :class:`X509Store`. + + See `OpenSSL Verification Flags`_ for details. + + .. _OpenSSL Verification Flags: + https://www.openssl.org/docs/manmaster/man3/X509_VERIFY_PARAM_set_flags.html + """ + + CRL_CHECK: int = _lib.X509_V_FLAG_CRL_CHECK + CRL_CHECK_ALL: int = _lib.X509_V_FLAG_CRL_CHECK_ALL + IGNORE_CRITICAL: int = _lib.X509_V_FLAG_IGNORE_CRITICAL + X509_STRICT: int = _lib.X509_V_FLAG_X509_STRICT + ALLOW_PROXY_CERTS: int = _lib.X509_V_FLAG_ALLOW_PROXY_CERTS + POLICY_CHECK: int = _lib.X509_V_FLAG_POLICY_CHECK + EXPLICIT_POLICY: int = _lib.X509_V_FLAG_EXPLICIT_POLICY + INHIBIT_MAP: int = _lib.X509_V_FLAG_INHIBIT_MAP + CHECK_SS_SIGNATURE: int = _lib.X509_V_FLAG_CHECK_SS_SIGNATURE + PARTIAL_CHAIN: int = _lib.X509_V_FLAG_PARTIAL_CHAIN + + +class X509Store: + """ + An X.509 store. + + An X.509 store is used to describe a context in which to verify a + certificate. A description of a context may include a set of certificates + to trust, a set of certificate revocation lists, verification flags and + more. + + An X.509 store, being only a description, cannot be used by itself to + verify a certificate. To carry out the actual verification process, see + :class:`X509StoreContext`. + """ + + def __init__(self) -> None: + store = _lib.X509_STORE_new() + self._store = _ffi.gc(store, _lib.X509_STORE_free) + + def add_cert(self, cert: X509) -> None: + """ + Adds a trusted certificate to this store. + + Adding a certificate with this method adds this certificate as a + *trusted* certificate. + + :param X509 cert: The certificate to add to this store. + + :raises TypeError: If the certificate is not an :class:`X509`. + + :raises OpenSSL.crypto.Error: If OpenSSL was unhappy with your + certificate. + + :return: ``None`` if the certificate was added successfully. + """ + if not isinstance(cert, X509): + raise TypeError() + + res = _lib.X509_STORE_add_cert(self._store, cert._x509) + _openssl_assert(res == 1) + + def add_crl(self, crl: x509.CertificateRevocationList) -> None: + """ + Add a certificate revocation list to this store. + + The certificate revocation lists added to a store will only be used if + the associated flags are configured to check certificate revocation + lists. + + .. versionadded:: 16.1.0 + + :param crl: The certificate revocation list to add to this store. + :type crl: ``cryptography.x509.CertificateRevocationList`` + :return: ``None`` if the certificate revocation list was added + successfully. + """ + if isinstance(crl, x509.CertificateRevocationList): + from cryptography.hazmat.primitives.serialization import Encoding + + bio = _new_mem_buf(crl.public_bytes(Encoding.DER)) + openssl_crl = _lib.d2i_X509_CRL_bio(bio, _ffi.NULL) + _openssl_assert(openssl_crl != _ffi.NULL) + crl = _ffi.gc(openssl_crl, _lib.X509_CRL_free) + else: + raise TypeError( + "CRL must be of type " + "cryptography.x509.CertificateRevocationList" + ) + + _openssl_assert(_lib.X509_STORE_add_crl(self._store, crl) != 0) + + def set_flags(self, flags: int) -> None: + """ + Set verification flags to this store. + + Verification flags can be combined by oring them together. + + .. note:: + + Setting a verification flag sometimes requires clients to add + additional information to the store, otherwise a suitable error will + be raised. + + For example, in setting flags to enable CRL checking a + suitable CRL must be added to the store otherwise an error will be + raised. + + .. versionadded:: 16.1.0 + + :param int flags: The verification flags to set on this store. + See :class:`X509StoreFlags` for available constants. + :return: ``None`` if the verification flags were successfully set. + """ + _openssl_assert(_lib.X509_STORE_set_flags(self._store, flags) != 0) + + def set_time(self, vfy_time: datetime.datetime) -> None: + """ + Set the time against which the certificates are verified. + + Normally the current time is used. + + .. note:: + + For example, you can determine if a certificate was valid at a given + time. + + .. versionadded:: 17.0.0 + + :param datetime vfy_time: The verification time to set on this store. + :return: ``None`` if the verification time was successfully set. + """ + param = _lib.X509_VERIFY_PARAM_new() + param = _ffi.gc(param, _lib.X509_VERIFY_PARAM_free) + + _lib.X509_VERIFY_PARAM_set_time( + param, calendar.timegm(vfy_time.timetuple()) + ) + _openssl_assert(_lib.X509_STORE_set1_param(self._store, param) != 0) + + def load_locations( + self, + cafile: StrOrBytesPath | None, + capath: StrOrBytesPath | None = None, + ) -> None: + """ + Let X509Store know where we can find trusted certificates for the + certificate chain. Note that the certificates have to be in PEM + format. + + If *capath* is passed, it must be a directory prepared using the + ``c_rehash`` tool included with OpenSSL. Either, but not both, of + *cafile* or *capath* may be ``None``. + + .. note:: + + Both *cafile* and *capath* may be set simultaneously. + + Call this method multiple times to add more than one location. + For example, CA certificates, and certificate revocation list bundles + may be passed in *cafile* in subsequent calls to this method. + + .. versionadded:: 20.0 + + :param cafile: In which file we can find the certificates (``bytes`` or + ``unicode``). + :param capath: In which directory we can find the certificates + (``bytes`` or ``unicode``). + + :return: ``None`` if the locations were set successfully. + + :raises OpenSSL.crypto.Error: If both *cafile* and *capath* is ``None`` + or the locations could not be set for any reason. + + """ + if cafile is None: + cafile = _ffi.NULL + else: + cafile = _path_bytes(cafile) + + if capath is None: + capath = _ffi.NULL + else: + capath = _path_bytes(capath) + + load_result = _lib.X509_STORE_load_locations( + self._store, cafile, capath + ) + if not load_result: + _raise_current_error() + + +class X509StoreContextError(Exception): + """ + An exception raised when an error occurred while verifying a certificate + using `OpenSSL.X509StoreContext.verify_certificate`. + + :ivar certificate: The certificate which caused verificate failure. + :type certificate: :class:`X509` + """ + + def __init__( + self, message: str, errors: list[Any], certificate: X509 + ) -> None: + super().__init__(message) + self.errors = errors + self.certificate = certificate + + +class X509StoreContext: + """ + An X.509 store context. + + An X.509 store context is used to carry out the actual verification process + of a certificate in a described context. For describing such a context, see + :class:`X509Store`. + + :param X509Store store: The certificates which will be trusted for the + purposes of any verifications. + :param X509 certificate: The certificate to be verified. + :param chain: List of untrusted certificates that may be used for building + the certificate chain. May be ``None``. + :type chain: :class:`list` of :class:`X509` + """ + + def __init__( + self, + store: X509Store, + certificate: X509, + chain: Sequence[X509] | None = None, + ) -> None: + self._store = store + self._cert = certificate + self._chain = self._build_certificate_stack(chain) + + @staticmethod + def _build_certificate_stack( + certificates: Sequence[X509] | None, + ) -> None: + def cleanup(s: Any) -> None: + # Equivalent to sk_X509_pop_free, but we don't + # currently have a CFFI binding for that available + for i in range(_lib.sk_X509_num(s)): + x = _lib.sk_X509_value(s, i) + _lib.X509_free(x) + _lib.sk_X509_free(s) + + if certificates is None or len(certificates) == 0: + return _ffi.NULL + + stack = _lib.sk_X509_new_null() + _openssl_assert(stack != _ffi.NULL) + stack = _ffi.gc(stack, cleanup) + + for cert in certificates: + if not isinstance(cert, X509): + raise TypeError("One of the elements is not an X509 instance") + + _openssl_assert(_lib.X509_up_ref(cert._x509) > 0) + if _lib.sk_X509_push(stack, cert._x509) <= 0: + _lib.X509_free(cert._x509) + _raise_current_error() + + return stack + + @staticmethod + def _exception_from_context(store_ctx: Any) -> X509StoreContextError: + """ + Convert an OpenSSL native context error failure into a Python + exception. + + When a call to native OpenSSL X509_verify_cert fails, additional + information about the failure can be obtained from the store context. + """ + message = _ffi.string( + _lib.X509_verify_cert_error_string( + _lib.X509_STORE_CTX_get_error(store_ctx) + ) + ).decode("utf-8") + errors = [ + _lib.X509_STORE_CTX_get_error(store_ctx), + _lib.X509_STORE_CTX_get_error_depth(store_ctx), + message, + ] + # A context error should always be associated with a certificate, so we + # expect this call to never return :class:`None`. + _x509 = _lib.X509_STORE_CTX_get_current_cert(store_ctx) + _cert = _lib.X509_dup(_x509) + pycert = X509._from_raw_x509_ptr(_cert) + return X509StoreContextError(message, errors, pycert) + + def _verify_certificate(self) -> Any: + """ + Verifies the certificate and runs an X509_STORE_CTX containing the + results. + + :raises X509StoreContextError: If an error occurred when validating a + certificate in the context. Sets ``certificate`` attribute to + indicate which certificate caused the error. + """ + store_ctx = _lib.X509_STORE_CTX_new() + _openssl_assert(store_ctx != _ffi.NULL) + store_ctx = _ffi.gc(store_ctx, _lib.X509_STORE_CTX_free) + + ret = _lib.X509_STORE_CTX_init( + store_ctx, self._store._store, self._cert._x509, self._chain + ) + _openssl_assert(ret == 1) + + ret = _lib.X509_verify_cert(store_ctx) + if ret <= 0: + raise self._exception_from_context(store_ctx) + + return store_ctx + + def set_store(self, store: X509Store) -> None: + """ + Set the context's X.509 store. + + .. versionadded:: 0.15 + + :param X509Store store: The store description which will be used for + the purposes of any *future* verifications. + """ + self._store = store + + def verify_certificate(self) -> None: + """ + Verify a certificate in a context. + + .. versionadded:: 0.15 + + :raises X509StoreContextError: If an error occurred when validating a + certificate in the context. Sets ``certificate`` attribute to + indicate which certificate caused the error. + """ + self._verify_certificate() + + def get_verified_chain(self) -> list[X509]: + """ + Verify a certificate in a context and return the complete validated + chain. + + :raises X509StoreContextError: If an error occurred when validating a + certificate in the context. Sets ``certificate`` attribute to + indicate which certificate caused the error. + + .. versionadded:: 20.0 + """ + store_ctx = self._verify_certificate() + + # Note: X509_STORE_CTX_get1_chain returns a deep copy of the chain. + cert_stack = _lib.X509_STORE_CTX_get1_chain(store_ctx) + _openssl_assert(cert_stack != _ffi.NULL) + + result = [] + for i in range(_lib.sk_X509_num(cert_stack)): + cert = _lib.sk_X509_value(cert_stack, i) + _openssl_assert(cert != _ffi.NULL) + pycert = X509._from_raw_x509_ptr(cert) + result.append(pycert) + + # Free the stack but not the members which are freed by the X509 class. + _lib.sk_X509_free(cert_stack) + return result + + +def load_certificate(type: int, buffer: bytes) -> X509: + """ + Load a certificate (X509) from the string *buffer* encoded with the + type *type*. + + :param type: The file type (one of FILETYPE_PEM, FILETYPE_ASN1) + + :param bytes buffer: The buffer the certificate is stored in + + :return: The X509 object + """ + if isinstance(buffer, str): + buffer = buffer.encode("ascii") + + bio = _new_mem_buf(buffer) + + if type == FILETYPE_PEM: + x509 = _lib.PEM_read_bio_X509(bio, _ffi.NULL, _ffi.NULL, _ffi.NULL) + elif type == FILETYPE_ASN1: + x509 = _lib.d2i_X509_bio(bio, _ffi.NULL) + else: + raise ValueError("type argument must be FILETYPE_PEM or FILETYPE_ASN1") + + if x509 == _ffi.NULL: + _raise_current_error() + + return X509._from_raw_x509_ptr(x509) + + +def dump_certificate(type: int, cert: X509) -> bytes: + """ + Dump the certificate *cert* into a buffer string encoded with the type + *type*. + + :param type: The file type (one of FILETYPE_PEM, FILETYPE_ASN1, or + FILETYPE_TEXT) + :param cert: The certificate to dump + :return: The buffer with the dumped certificate in + """ + bio = _new_mem_buf() + + if type == FILETYPE_PEM: + result_code = _lib.PEM_write_bio_X509(bio, cert._x509) + elif type == FILETYPE_ASN1: + result_code = _lib.i2d_X509_bio(bio, cert._x509) + elif type == FILETYPE_TEXT: + result_code = _lib.X509_print_ex(bio, cert._x509, 0, 0) + else: + raise ValueError( + "type argument must be FILETYPE_PEM, FILETYPE_ASN1, or " + "FILETYPE_TEXT" + ) + + _openssl_assert(result_code == 1) + return _bio_to_string(bio) + + +def dump_publickey(type: int, pkey: PKey) -> bytes: + """ + Dump a public key to a buffer. + + :param type: The file type (one of :data:`FILETYPE_PEM` or + :data:`FILETYPE_ASN1`). + :param PKey pkey: The public key to dump + :return: The buffer with the dumped key in it. + :rtype: bytes + """ + bio = _new_mem_buf() + if type == FILETYPE_PEM: + write_bio = _lib.PEM_write_bio_PUBKEY + elif type == FILETYPE_ASN1: + write_bio = _lib.i2d_PUBKEY_bio + else: + raise ValueError("type argument must be FILETYPE_PEM or FILETYPE_ASN1") + + result_code = write_bio(bio, pkey._pkey) + if result_code != 1: # pragma: no cover + _raise_current_error() + + return _bio_to_string(bio) + + +def dump_privatekey( + type: int, + pkey: PKey, + cipher: str | None = None, + passphrase: PassphraseCallableT | None = None, +) -> bytes: + """ + Dump the private key *pkey* into a buffer string encoded with the type + *type*. Optionally (if *type* is :const:`FILETYPE_PEM`) encrypting it + using *cipher* and *passphrase*. + + :param type: The file type (one of :const:`FILETYPE_PEM`, + :const:`FILETYPE_ASN1`, or :const:`FILETYPE_TEXT`) + :param PKey pkey: The PKey to dump + :param cipher: (optional) if encrypted PEM format, the cipher to use + :param passphrase: (optional) if encrypted PEM format, this can be either + the passphrase to use, or a callback for providing the passphrase. + + :return: The buffer with the dumped key in + :rtype: bytes + """ + bio = _new_mem_buf() + + if not isinstance(pkey, PKey): + raise TypeError("pkey must be a PKey") + + if cipher is not None: + if passphrase is None: + raise TypeError( + "if a value is given for cipher " + "one must also be given for passphrase" + ) + cipher_obj = _lib.EVP_get_cipherbyname(_byte_string(cipher)) + if cipher_obj == _ffi.NULL: + raise ValueError("Invalid cipher name") + else: + cipher_obj = _ffi.NULL + + helper = _PassphraseHelper(type, passphrase) + if type == FILETYPE_PEM: + result_code = _lib.PEM_write_bio_PrivateKey( + bio, + pkey._pkey, + cipher_obj, + _ffi.NULL, + 0, + helper.callback, + helper.callback_args, + ) + helper.raise_if_problem() + elif type == FILETYPE_ASN1: + result_code = _lib.i2d_PrivateKey_bio(bio, pkey._pkey) + elif type == FILETYPE_TEXT: + if _lib.EVP_PKEY_id(pkey._pkey) != _lib.EVP_PKEY_RSA: + raise TypeError("Only RSA keys are supported for FILETYPE_TEXT") + + rsa = _ffi.gc(_lib.EVP_PKEY_get1_RSA(pkey._pkey), _lib.RSA_free) + result_code = _lib.RSA_print(bio, rsa, 0) + else: + raise ValueError( + "type argument must be FILETYPE_PEM, FILETYPE_ASN1, or " + "FILETYPE_TEXT" + ) + + _openssl_assert(result_code != 0) + + return _bio_to_string(bio) + + +class _PassphraseHelper: + def __init__( + self, + type: int, + passphrase: PassphraseCallableT | None, + more_args: bool = False, + truncate: bool = False, + ) -> None: + if type != FILETYPE_PEM and passphrase is not None: + raise ValueError( + "only FILETYPE_PEM key format supports encryption" + ) + self._passphrase = passphrase + self._more_args = more_args + self._truncate = truncate + self._problems: list[Exception] = [] + + @property + def callback(self) -> Any: + if self._passphrase is None: + return _ffi.NULL + elif isinstance(self._passphrase, bytes) or callable(self._passphrase): + return _ffi.callback("pem_password_cb", self._read_passphrase) + else: + raise TypeError( + "Last argument must be a byte string or a callable." + ) + + @property + def callback_args(self) -> Any: + if self._passphrase is None: + return _ffi.NULL + elif isinstance(self._passphrase, bytes) or callable(self._passphrase): + return _ffi.NULL + else: + raise TypeError( + "Last argument must be a byte string or a callable." + ) + + def raise_if_problem(self, exceptionType: type[Exception] = Error) -> None: + if self._problems: + # Flush the OpenSSL error queue + try: + _exception_from_error_queue(exceptionType) + except exceptionType: + pass + + raise self._problems.pop(0) + + def _read_passphrase( + self, buf: Any, size: int, rwflag: Any, userdata: Any + ) -> int: + try: + if callable(self._passphrase): + if self._more_args: + result = self._passphrase(size, rwflag, userdata) + else: + result = self._passphrase(rwflag) + else: + assert self._passphrase is not None + result = self._passphrase + if not isinstance(result, bytes): + raise ValueError("Bytes expected") + if len(result) > size: + if self._truncate: + result = result[:size] + else: + raise ValueError( + "passphrase returned by callback is too long" + ) + for i in range(len(result)): + buf[i] = result[i : i + 1] + return len(result) + except Exception as e: + self._problems.append(e) + return 0 + + +def load_publickey(type: int, buffer: str | bytes) -> PKey: + """ + Load a public key from a buffer. + + :param type: The file type (one of :data:`FILETYPE_PEM`, + :data:`FILETYPE_ASN1`). + :param buffer: The buffer the key is stored in. + :type buffer: A Python string object, either unicode or bytestring. + :return: The PKey object. + :rtype: :class:`PKey` + """ + if isinstance(buffer, str): + buffer = buffer.encode("ascii") + + bio = _new_mem_buf(buffer) + + if type == FILETYPE_PEM: + evp_pkey = _lib.PEM_read_bio_PUBKEY( + bio, _ffi.NULL, _ffi.NULL, _ffi.NULL + ) + elif type == FILETYPE_ASN1: + evp_pkey = _lib.d2i_PUBKEY_bio(bio, _ffi.NULL) + else: + raise ValueError("type argument must be FILETYPE_PEM or FILETYPE_ASN1") + + if evp_pkey == _ffi.NULL: + _raise_current_error() + + pkey = PKey.__new__(PKey) + pkey._pkey = _ffi.gc(evp_pkey, _lib.EVP_PKEY_free) + pkey._only_public = True + return pkey + + +def load_privatekey( + type: int, + buffer: str | bytes, + passphrase: PassphraseCallableT | None = None, +) -> PKey: + """ + Load a private key (PKey) from the string *buffer* encoded with the type + *type*. + + :param type: The file type (one of FILETYPE_PEM, FILETYPE_ASN1) + :param buffer: The buffer the key is stored in + :param passphrase: (optional) if encrypted PEM format, this can be + either the passphrase to use, or a callback for + providing the passphrase. + + :return: The PKey object + """ + if isinstance(buffer, str): + buffer = buffer.encode("ascii") + + bio = _new_mem_buf(buffer) + + helper = _PassphraseHelper(type, passphrase) + if type == FILETYPE_PEM: + evp_pkey = _lib.PEM_read_bio_PrivateKey( + bio, _ffi.NULL, helper.callback, helper.callback_args + ) + helper.raise_if_problem() + elif type == FILETYPE_ASN1: + evp_pkey = _lib.d2i_PrivateKey_bio(bio, _ffi.NULL) + else: + raise ValueError("type argument must be FILETYPE_PEM or FILETYPE_ASN1") + + if evp_pkey == _ffi.NULL: + _raise_current_error() + + pkey = PKey.__new__(PKey) + pkey._pkey = _ffi.gc(evp_pkey, _lib.EVP_PKEY_free) + return pkey + + +def dump_certificate_request(type: int, req: X509Req) -> bytes: + """ + Dump the certificate request *req* into a buffer string encoded with the + type *type*. + + :param type: The file type (one of FILETYPE_PEM, FILETYPE_ASN1) + :param req: The certificate request to dump + :return: The buffer with the dumped certificate request in + + + .. deprecated:: 24.2.0 + Use `cryptography.x509.CertificateSigningRequest` instead. + """ + bio = _new_mem_buf() + + if type == FILETYPE_PEM: + result_code = _lib.PEM_write_bio_X509_REQ(bio, req._req) + elif type == FILETYPE_ASN1: + result_code = _lib.i2d_X509_REQ_bio(bio, req._req) + elif type == FILETYPE_TEXT: + result_code = _lib.X509_REQ_print_ex(bio, req._req, 0, 0) + else: + raise ValueError( + "type argument must be FILETYPE_PEM, FILETYPE_ASN1, or " + "FILETYPE_TEXT" + ) + + _openssl_assert(result_code != 0) + + return _bio_to_string(bio) + + +_dump_certificate_request_internal = dump_certificate_request + +utils.deprecated( + dump_certificate_request, + __name__, + ( + "CSR support in pyOpenSSL is deprecated. You should use the APIs " + "in cryptography." + ), + DeprecationWarning, + name="dump_certificate_request", +) + + +def load_certificate_request(type: int, buffer: bytes) -> X509Req: + """ + Load a certificate request (X509Req) from the string *buffer* encoded with + the type *type*. + + :param type: The file type (one of FILETYPE_PEM, FILETYPE_ASN1) + :param buffer: The buffer the certificate request is stored in + :return: The X509Req object + + .. deprecated:: 24.2.0 + Use `cryptography.x509.load_der_x509_csr` or + `cryptography.x509.load_pem_x509_csr` instead. + """ + if isinstance(buffer, str): + buffer = buffer.encode("ascii") + + bio = _new_mem_buf(buffer) + + if type == FILETYPE_PEM: + req = _lib.PEM_read_bio_X509_REQ(bio, _ffi.NULL, _ffi.NULL, _ffi.NULL) + elif type == FILETYPE_ASN1: + req = _lib.d2i_X509_REQ_bio(bio, _ffi.NULL) + else: + raise ValueError("type argument must be FILETYPE_PEM or FILETYPE_ASN1") + + _openssl_assert(req != _ffi.NULL) + + x509req = X509Req.__new__(X509Req) + x509req._req = _ffi.gc(req, _lib.X509_REQ_free) + return x509req + + +_load_certificate_request_internal = load_certificate_request + +utils.deprecated( + load_certificate_request, + __name__, + ( + "CSR support in pyOpenSSL is deprecated. You should use the APIs " + "in cryptography." + ), + DeprecationWarning, + name="load_certificate_request", +) diff --git a/venv/lib/python3.12/site-packages/OpenSSL/debug.py b/venv/lib/python3.12/site-packages/OpenSSL/debug.py new file mode 100644 index 00000000..e0ed3f81 --- /dev/null +++ b/venv/lib/python3.12/site-packages/OpenSSL/debug.py @@ -0,0 +1,40 @@ +import ssl +import sys + +import cffi +import cryptography + +import OpenSSL.SSL + +from . import version + +_env_info = """\ +pyOpenSSL: {pyopenssl} +cryptography: {cryptography} +cffi: {cffi} +cryptography's compiled against OpenSSL: {crypto_openssl_compile} +cryptography's linked OpenSSL: {crypto_openssl_link} +Python's OpenSSL: {python_openssl} +Python executable: {python} +Python version: {python_version} +Platform: {platform} +sys.path: {sys_path}""".format( + pyopenssl=version.__version__, + crypto_openssl_compile=OpenSSL._util.ffi.string( + OpenSSL._util.lib.OPENSSL_VERSION_TEXT, + ).decode("ascii"), + crypto_openssl_link=OpenSSL.SSL.SSLeay_version( + OpenSSL.SSL.SSLEAY_VERSION + ).decode("ascii"), + python_openssl=getattr(ssl, "OPENSSL_VERSION", "n/a"), + cryptography=cryptography.__version__, + cffi=cffi.__version__, + python=sys.executable, + python_version=sys.version, + platform=sys.platform, + sys_path=sys.path, +) + + +if __name__ == "__main__": + print(_env_info) diff --git a/venv/lib/python3.12/site-packages/OpenSSL/py.typed b/venv/lib/python3.12/site-packages/OpenSSL/py.typed new file mode 100644 index 00000000..e69de29b diff --git a/venv/lib/python3.12/site-packages/OpenSSL/rand.py b/venv/lib/python3.12/site-packages/OpenSSL/rand.py new file mode 100644 index 00000000..e57425f3 --- /dev/null +++ b/venv/lib/python3.12/site-packages/OpenSSL/rand.py @@ -0,0 +1,50 @@ +""" +PRNG management routines, thin wrappers. +""" + +from __future__ import annotations + +import warnings + +from OpenSSL._util import lib as _lib + +warnings.warn( + "OpenSSL.rand is deprecated - you should use os.urandom instead", + DeprecationWarning, + stacklevel=3, +) + + +def add(buffer: bytes, entropy: int) -> None: + """ + Mix bytes from *string* into the PRNG state. + + The *entropy* argument is (the lower bound of) an estimate of how much + randomness is contained in *string*, measured in bytes. + + For more information, see e.g. :rfc:`1750`. + + This function is only relevant if you are forking Python processes and + need to reseed the CSPRNG after fork. + + :param buffer: Buffer with random data. + :param entropy: The entropy (in bytes) measurement of the buffer. + + :return: :obj:`None` + """ + if not isinstance(buffer, bytes): + raise TypeError("buffer must be a byte string") + + if not isinstance(entropy, int): + raise TypeError("entropy must be an integer") + + _lib.RAND_add(buffer, len(buffer), entropy) + + +def status() -> int: + """ + Check whether the PRNG has been seeded with enough data. + + :return: 1 if the PRNG is seeded enough, 0 otherwise. + """ + return _lib.RAND_status() diff --git a/venv/lib/python3.12/site-packages/OpenSSL/version.py b/venv/lib/python3.12/site-packages/OpenSSL/version.py new file mode 100644 index 00000000..c49055e1 --- /dev/null +++ b/venv/lib/python3.12/site-packages/OpenSSL/version.py @@ -0,0 +1,28 @@ +# Copyright (C) AB Strakt +# Copyright (C) Jean-Paul Calderone +# See LICENSE for details. + +""" +pyOpenSSL - A simple wrapper around the OpenSSL library +""" + +__all__ = [ + "__author__", + "__copyright__", + "__email__", + "__license__", + "__summary__", + "__title__", + "__uri__", + "__version__", +] + +__version__ = "25.3.0" + +__title__ = "pyOpenSSL" +__uri__ = "https://pyopenssl.org/" +__summary__ = "Python wrapper module around the OpenSSL library" +__author__ = "The pyOpenSSL developers" +__email__ = "cryptography-dev@python.org" +__license__ = "Apache License, Version 2.0" +__copyright__ = f"Copyright 2001-2025 {__author__}" diff --git a/venv/lib/python3.12/site-packages/__pycache__/typing_extensions.cpython-312.pyc b/venv/lib/python3.12/site-packages/__pycache__/typing_extensions.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..546b04d5e33688cc4f66c78adb0b0094cfb78389 GIT binary patch literal 163756 zcmdqK30z#)bw55E!wd|}zzmC62Z7jx(7rF01d^={$r9ei%V^*|BoNHVZwAQ_NMu`y z!B%1vI~8i=7&~e$)k=dKH&NQOk)1S2o3xz~IE<$_Ke<)=Yx?Vgg?^3W{M!D$=e~7@ zhnM`)&*%U7KZ!f<-F-Rt+;h)4_uL<6Wn~!f?Ce_F`8C00_&fTLpB(9B_IjDYaL&LP zIAgcLC;l3JM)qy;nb@yc`nC8h>^seu#(u3nEBj6NrL$j~&&Gc3K0Eu(@MW;yOkXDZ zb@;N_Z?-R+{W^V4KC{a!S4sWlOvfHF7zDAj9AC~61808O=*#6SJ~!|2<;{~SjZ*pY zIV+#t)u`qszjZB>-_+j|2Hygc;Z6gWe%ipFM3sq<}043JiAoOjMD~R zNzlw?(l5&1pyn^X`AU&vcGo8PTm9u6uNuWKU-`UovXnU9dE;a&aVqAGxUWwA>Uy9}`psIla?q}X+c(<+CkzrOkp zZDkfx-K)ly-+YTP?&TQw#pufhKAZE(y(Ul!pBzv9^({e)3Zz)VEri=RPpOrxZz+#Q z)U@)OZ)tEPSB2EexJ7W6v-Ve`{WXZs$+6Vmr1r05v1<{#j;~7!S%o&N;_9y~Rv>99 z^6OIbk>7l)rPekmtzCqe-Ez44>stf=p!zMp`PRb!xcsI5`ql;4Aa7Hbp!&&g@V9nF zk&1Dy=h3WUv+ugIrx2I>XZ!fUGtK4$* z?mh--D*$OLk^coXU->Nw`dTo)9?qzY)_#1qU~J{cn%}Nb&4={Lt>X9d`#VfmRx8+L z?}y~@yiN{lklv_Czni7EbdBl7_cJ!R%{A?)M;%D|2&~`|_xPyW^|I{&cL4_iGWU-dIXk!Q zw9)s#JR`ha!9TCh&DZA(?m!M1ToZD5kZVSc4{7p zzWtF-4jladLdTzn|4(%MJK+CUI{ruCAJy?c3jgam{+;lj)bZ~Mp5WV9&+S9cweUW< zf0cgar11R+KcExNOW}7T{Gd*FhZKGY;jKF1N2Kt35Pq*t_)#hRK7`-T`}l=4Q|8pN zQ;PKfV)^Ec)dl!!;BDN4GL{#JnjxQu6rTmWt?Q>cJ#`HJaUK8eV6{~C!zlZ~dCNW~ z#d-v>9zv{2-F9@d`ebu{xjqiVW5#fX(IELBR{ecFe2l$74}uX96@W@fIhj9t2J%?$&! z-_Lbo)_;oi6qaD_n5M6Lc~93b=ceL&xo)nf)1Y9SK`w|qKF#t7A&=vHZPH5i8U8ce zqZ)iRPpkRf4wLT`Cm^pA(ujm*m=Lo0>=7e?e9q&09GEMDG>=PZdQ;L!cu||s_e8Le zJApJ$0&8b-CxNw}KCqwX)5v3(`wZNt**KiSI6N-r<$H$tJpsQb zHRF4R&lhO7avC&CnXe3Vii5@bEaH8RKcks3Wm4^)l5-Tq78mK%?(?k0B|0Hr2x7N} zz2y+{AC`0SJDo$YLp< zManNEwP8eR-3SXg%Ri&Q?}*g8vvMBc#gfk#6(2hwA&Wc0J$J##J%8Hl`(hA#5sZ12 zPCLKIYVakL^IQB`rA5yLSFse;Iw_u;2fEzH0P#X0%kLb^kIK}^A!)un$KsD7{&~6n zzUR5$25fwZ)u3T+4Y)6Bpy}MawRs4&5ohAExq0|T8C+h_;fe7`K^ z`#UN5>Tx+B)$J~w+%9tCfb!o7E@h+n8b0c2S{Siw0b`mbS9L!|(_+u9GjDjOBOF4W; z$w8cLt#j+?`@Nuz`xCyL`%}KW!@_;{w8i&(QtE3dsrC3YuLe!r8$Lv2HGVTC#r-A^*BCX3x1Zf0GHCg9`4UBq;Wss4{|@m-;eP3=lJ^z zHp0L*sSoql;Q(PQb@&$W)qxVCPFX&OQ*$>MxF74M=`c|$(dB+D{r*HhE_#Ttv`+4P z`4J;VOUx^q`^(c--`AuO_^Xr=Xq#I%-)oE)q|Y_|>-oz3@D^Q(%H{h00HgZ{sQVva zbYmFZ*X9}B>ueX8%{$S?4xL(lBUpkq>DO{Xrbd0QGx(nb{J*8t;2ZOlXg@})poRM> zX5Alx+MA+Zso#{j7Pj)m9Y!t=TJ4*N^ETpqlg|&Q^WWsN{oj=9iS`}rFmVaA?^`_0 zwyQK>!DW#+vqw$7Z%c9h266sKDrH)(qmaeufOk;JAM<~Voc~zPIq2YihBCjy%KQ#O zz9Was(<+gpAkGpU*!BHMa5u`z=KcrD5+O>D({>Ftya)V@8(&p9MQ^aaeHVTEw;F2i z&3UN#H@Uw{qUOKH-9$US&wBIkQTCtk-{=3t|7UV*SdZv(p}5UTFBR(ZsQ@u&J$IZ5H=G zm6m1mfB-#yo9`!px_?B^{bZi;7NrB?c>lIsXZ6?jm%$9y3qMCM{F7Xs?=R=cO_T_U zxm{3mk>7lO6+AFcN^uRfaQ_Q+{cF_upXqm=xZ=#Cb&X)`Uoi2a_@vcF<|o6X&leWX3bMY#>?ukSj;ZaVxz-$byCo5jwJ=Cy^pjX8T=`X(HF zNzFrk;``7aSuP``x`zNb^o?nw*1DuFUJOi zf0(4u&KbB5x^sHo@x9aYGvCiZo7A%r_!a8@fA}=y{-<)D>aQ}x-riMo>s^R{4L!q(Is2#4P>5julM67~ZDA<%Q^INzSgQeL+SN5ToG^10_^fIKXR`0kE`rM2%kpGYT{ zif~9Tt-Z&)`GobJ;PF8Fv4nlw$v|f$&<3xpZQ;IP`z|Uo5)!nZ6l!k@38CIdXOK^1 zvxs-{K`Ex2eWL{t{;|luKrnEG7ZTR(y&WC+wKW|LbO!eYjwiBHVx%{PdXYp(q&4%8 z_VS6$X1*iP+Z}1{Y>y-|S^_;hC)PD{zrgVV&#?eIHA8&OJk)#qcu0tZx3z^6S@OsB zz6g&#kw2S4J!tP^YWU9XP#~gy?h0}URkGR@)Px;G1-XRvARj>a3G00V4G6j{7z{-) zP+Y=+;p2sfKggdzK&JE+p?-I^ck=ChQS-qic@?7+cs_+FC*f`ADx2OxS4n_XoQ% zT@M0II{}D^%$86@`LMTyB*;xTT0%P>!{}lX^@J0dfJ=O|M-K6kgcTDWGdW?~j=>W8 zcJ0T^2y}O|rerjQy1V)I2u6$MSulbb19-BCGXZU&kw1umx9=1}{d|z}v#awjoxOIp zCv0~G!be$-Cgg8twYayFKbf$xSxwVee53ho+r#&TS*T@iXBb0L+537Kl91y#rSC&DbA#=CB17?rBy9VSQ&WJ#(hme8m@>gc#zE@Ua3`yRlE_RA zNjucpk1n;+aH7^};+#*rCrG`KaWBB1m#WzwKsB?1ArTfCBqR!wKK&fu9%AULway|~ z2;XMGft0{tNLbqVNFd?yD^m#&E6zuMJHnMm(t|O~=ECcofj5vI5_FG@Shvi5raE)N z?w7%}U5+fLCLBLY1)nqY8S6|f{TZ9W5@>I^Y`APpSi-=~VM^xx;Gv~KK5{hF!!PXu zLTShB3M|F!>*6D!@Y0^1m(V3_87<8gqipFy0dx4zJENs{O*nT&ZM#^z62{hq zX%GJHZ3P*F-m5bv?Cqfw0iiR11=>blL7-N6XNhl8kPKv*D5=gU5P-DfPkCf`nyrP` zQ<~X51YHTtaGTG}-b{G23_()rOFLx1jJNrLzV`utw97eAmekv<$M3?+myG8OfLQWp zPp?79j8G_hRE?4+j1dKvhfM>9&jUjZC|m@T2BfiO?u179-gdUCd)s(#ZB%GYg-kxaLq>7Z93^3By!lulJNV ztuN!FzesL7kVi@;KSp@C8qWKKM%>Sbhd(u)Umo?|Kau}H)b+r$yYTGVn7iT9p$Yf$ zsAKtDm{od^L=!qaXzVkpIAGX_-m*hhkGS-ReU+!%S7;t}g>Z=+!dP`C)?Owo4$~mY zZKS~d98DXE4DkDj<_{OcQJWSoXp~x1IpJOubu41-sj~`CBbx9GImBlXsMlDTz#n42 zw)5THe*a~oSUMrNtzrlN4n-yBFYp(p1?TZ*LIuiKrG(ARLR(nBkS4 zC0+u;&ak%~G&NFSF&ANw*7iQ#$e?z6LC1R|A@9+^3Em5e#|zYVG{l9I@`X1Mx_sEH zNdY*Q;VtY9bx`SQB2ZwwH*z!(VR=T5BJVbkm|kFT5MNkwk(GcLLND(ntc$q3_c)Q) zl+_7PMfg>kMyWd6#SUQ;1jxD3yDj3C=*|Y#bP<_*LH(!9L22DkvSV3jS~v$!J27Un z2jJ+y{Crr0@H=~k&6o!cU=70&;}?wLj3`RR6=EMoI%$(3VF-bi zX*M?!=~(gklK@Uj!rb1Cy(8N}T92`vqzJEst^fiOPN3zgKa<8nO8GN*gqOl$GbQ)= z_Thep1U60NZ;rY)vng}-j+W^q`7!spsAHY}?4b&Ap?1(IRFLpBa(V`s240&+7?+bp(dkoP|$gKz~L zEER?2LzXjH@w}3$yhX9RMfk{w7nGg*%-PQjSw8PzLzmQSsvc|hI=o<+#ZrC3AUFmL zUHDFY4jI&CS6x`2AZmOI^@P|c!qjLFwG9l72zV@Qy%C-*nsPHO)cr|q%=FW!U{8Yu zqQ5YunM%le$Wx+q;+f8`?2^&eiR^_@+rqgGrK!dmN&uv# z;W&)+mrXC2WKI@qPQR;3qzJ;jZEPpw#S%kP`?9#$CDMqK5Kd}>6Lh^0@&iE%oqQP0 zC`oBXQs^(JDS2=}wq+MYi|Q|}x>Or2Tse`wDr#FL)}JP({3!70g%8eipw@ar^ku^f zCeYoWbaLme-e?1ZxYNi&OG~naIu*9W#rgw^>V^Z@%BdV{er5MdyT>*~oy(%OWpgV@ z6=t1Wgcl;(^s0DBoCpFf%+QTWstRq6zy|1T$L6TNAf^B0fd4?6Szu|Zlhgfd|8RfQ zwqR~$EQrBYgO4}jZfV3dNZl)ZA9-9B={ezbyeBNjPI6(1lvAf?J62zv=_z^}&@0-J zUUG@MbbqvP%|!OvsBP_BNL8j}0}2GB!WEw`1>49zv{DTiMft1LtpLz3B3O6~jsmP9 zEYU&|uv-285KT3AN*|M_SyN$W-m?S41EbAji$?dvoV8I~?f+|q0k}yO7AB~=lW>wM zh{Xz2HfrcesUh>V&aL8(u~qX|kzhf0_G9j2E~U=?ijUk7h>#&szQ31Jc}A!9m!(u( zrnsbSf*nnmRS>}Fs?qAGcU!b@`$TqA)Yde&mw!V|kP%vK9cx0J)P!%OG=cUta#X3p za~hNq?m&Ztzd=49Quk^EGrWMfsSkm2>W0|J7E2k9Gt~Wk60C@e2dyc97oEjJ3?Yeu zgvxFJZ43?%j<$|%m~b{mZH=tTEp<658xGpOg}Xx$U~}P5QD5Ora(+k-;Y{Htp*Na`$RTpv-wqZOFT6{hPm(i4&gaM>p%`;WmJz-O&S^v3wd~ZcTNZO# z&8-YeTIDT=F>UoNt1)dkIYs2GBd1PrnvL|@Y@D$gtd6O)yjWV^dtebQoi!V*`Rq+B zkqQINmWG)XinQZHdF0`kpEH;52me*#foW)~B>MYfu2KCc7TD^~@uRy4u)ggt*Dp}v zvlY^C<{%GR1uDn5SGr#6imB^Ti!e<2r*!u}kRLe(lsX+RA~#LkK(mmf7Acc%JEER5 zKn9vj7or`N8eW>pf9NpD@~Z*Fk>yu)roj8?q}HR@>M0CW!ZpgS2irMm+lU=jD0$n& zHf73Ah<0649@qwoTR#ojBB2080ZmUqx%gNVz3?Kg@FV>d2@z?+JI3~lrxg*^Bnwb5Z7 z+jvCw9zG1VJxRIz{=8C z<1n~#hHUTO&NSqdU$jS^^|uTbd(Mo_kd+g6x`u2snfUyG5s6QvXBwVymYH8LmYId+ z$SP@qD=5o@5Rt6bZ2K4^EU;jEF21MzAGkNy9}v8G%>&o!BK<60zgZ=1-$KUuEW>*IVTzOkk-Lq0Yf( zNrt+71Ii4CRgk18A3OC5z0~5Ak_%W_E59vo@XD_%FmzBYIcGRx z7{oH#Ygg~X?D9PWw?En@+ZyUTF-6V?*${|1o zJt1IYl~@HM`z(rpgj7nLB;~R);UY&8LgElYDrkkgn1_BuT7)!8(6u)xwUuQUP8g3T z?>`ItQU(0oAatSDB8tJn!mp63lZI^0A+a z<)6zsn>8AEvFm)-Tdukr^7mUV?~EO>Z)X@>c_a5eGZ?jra>qHNTZtlOiHEcY+g+mY zF}fhmFwREJ_$tDf4%2TL&lxcSZi}JM@HO*EqsSZs1QP2UQ29&bB{1#-p=htP*Y@}s zGaE`6oG7cN77PE07zDIos>MGtZfQ=zErZcsIwdmJx=U#&-NF4?!(GvxRW9JWKE&C9Y+k8EoF$2u|XmDbPL65^CE!7oNjbl}H3XjYv@T zL=;#B*Ca#sRexp3mVYsC^wJtXR$B9bX~298k~$d+hyco(mdJ(xU>8w-#OsItfEly` z>tf;GQ5|%^XYnJv1t*cq$PE!}Ik0V@q>{*GYgdvV>u*{nM1CfC5B#IpsTJ!@2hjHv z_?QZ})9%tyesaNdvQ8>5bm3{54$E%hJ6N+d4OvIJEwXGFm~7!@m`r9ARzr2fkNYDrj* zLUSZxhoA)NB}qLwhxY{pK#|cirStTR82lOPn-bIntV4If1^eW}HRF+Q4Zb!wv2e#k z;m!&7ol(b~thp_aC_jye8WCC=5(~t8NZlF{STg`PN!gQf$7#bYQ<{C#Y_`#Umr>k7 zGT29u^3dd@XI5mgsVW`38EWY!sH94){ys}x8rbp@0wlJ4!VGCd(nO-cU;{!5gL8;6 z<72e*ezxW$$W6ywDPNnfvVje@iguAd7TLw(P)*v4S(+1K8%qM_L&)5bmUBo<1 zc?Qxr;{y1}`5Fxa<}TWVr#u5`YK$|D7Q_tDjs4HYaAeL;B?Qu%H^C=l~KVa1VV zBHUh~xCGc(rWtCxL7~}LXv8Jvc%T!idRY>F!{SPx*(BOiSNMd5c@u^pJSSl~#_<6| zDjCEi5s%;h6hYY!k%Z=P>1fxLMU(Dj@v_>{hetAQE?72RG_hdQ(C(Y16*R&7Cl+p> zC~X>QnK5N&t)2E(jx#m8_XbNA&k>2Je!n zXXB-w3D3r8al>>)_1LE;D%PCcebZfY$#SV{!o5D~SpWX*QiG@Tmcf*j_pZw`lZM|9 z7&qqi%JOn8} zs69rPKon0~LGfLp#=85wq}&KUETruq28&ikPoX3+c2_`!Zy33kKUA_R3FpWtm3wwIW0c{uB96{Mq)=5#iaaRyM8;Ck=i^<&E7VA!sNh}sfm?(vaSq*7VjTvaNvBNyvmGuvj&MY>r&m(hsRt9PUdakm zROJ%>|F!#Nbd?MxDZJ^*)c!gW0{f3pmWqt2S7qoFfjpqh9LBpscM8~ibwUk{18-L0 zul7Qrme7|v89-F1=N4+~lx$SyEAba-%0NNU#`H{x*PF;yQbF#1gh-`6b+bT8h!F;s zM0R@!d|Rvv-C%(QL&7y+iG)*4%=Py4^wpUX7AivcCxj-^+S}nFknb=NIPBX> z&2N+#;p!u1lHq+AVg|wmsge4q+xZhl!E^*$YSl+S1)=CclRo+$Fe$mH41sy#Qa)V@ z`%0~sOk}@`zNUwC*ZS9phc1{-A49ExsASlyr=hEdnjoQP>GVOPP=riC!4>021dI}T zJA-V69K0p03`K^q@A6UrjeNoe{dTZB+apPgDuI?n=G;Wg@L_xb2&~CK5YKcxyJ>jS zWcl(~=JL2ZZ)n%Fd(l|nmF}0iWA2qhHVOytajYbu=O2lA8m2re zW1f{0p4Ai1HBs9danFx}l!pe;j6a!MsswbAZ^|Qgq>-IC=&x#`gGa0f)t z0GuSCrP{J~?8eJ{5_MHI`Y|Jo7I+vstyE(%CC7vb7{Zju00D>tV1&aHHZUXE8yMLZ zLK_+mF*J5?+Jj>>qp%o_%0L%~%TX&)JLfaQpBarzIIFHZH(m04z4UVFcx0k(Q`EL; z?$}t6h@RPlaFX?IITL5*EEhx-^0d<#V91fWpoLGT@VKuz_TZAe&$Aw&kcC_+bR239BfxP(l;oz4CuaF6L!#u)p?$=P zubOn0kFC12IaaxD+Lb@$S{QRJ#JA^C_$}AUo34UU%ZtwQPU%}55W;2hlYtioncsx( zQ_a$EobhRk%841W;HU-;Xbc#emH8ttA|$cV+ldIrReqH^==uZ3I8OKL#n<@h zmLk`pAI+R6?}soI>W=`3UY@6>nlcn_n|@yX=uOU0WFQ4_Ek90eAC_+%Fwq0bV{1{5 zVT8%pOdcWp3e_AG%=J=f>ZY4gX+LU4DxQPpV4g;DrJJXmW^kS|!`T|HAgRGwv}$l_ z7?(D0Tbt1)6K4(L=sD8cm@=Jxz=ZdV0W<1plk4yVjfoyVQ5gx~=ggM=`UA=dE)vWh zp_9;^;^~2~x2HGEjt9^_JKUJG91=cSiN9G|4!>lSg-{O{kqAn~N_zC$fN@wkhb0N6 zN|J<9mqigNa0L}Co|C<7PM8{(G5J)&+!H<`5jrC7{lLD7D*o7UVN3tYd2oTk1Z>>Y z9fF={cuS*_2xh_!VdAI1&tzHGi*{bExUgobcuA~y$)&)!d#ZSKtZ3&iX9>cd^i~=_ zuw!cg(geNpL4l|n0zCnx^O$t~150Zt;;Djo{5gZ|*^Bg4C{J_3Z zVtsf&$i!CqF;d?EkyvNbuv7_$3c2L0A%}FZ82^;ckR9*y6SV*o`&m?s3GfmbA~VGg z-WR9{DNCUV$=DG|TCui@>(#qRGcV>;dJA^j4dL}jjwS0Rc%~f}`AK&}yvRGcV8j~F z-7?fPomVu04m&Yfv~wbF=g`g@F3-8_FJ@1B3P!EZ?HQ|jWywoRu6veB-xo=7EcjAz zV&UqTXZ2OjcT2xrdfl`0#)7*?*F+cG4Sna9ms(z5Iey|B8?SkOSo%h3Y-LMy<^E{Z zf!Kn(N37EeuwZ_#VyhL{n7FRXYaaM4)p%Y=9e~4lrJB-D_&51Zt#nP(?ykIk+F_wLsPV>d7@}X z)UyKzKH~XBW4`gKZ!LLk$@N8doL_V8o@mjYc>ba>ZtUI}gR!AJUS2oaeQELd(QzL* zv3c8!vt~;{?u@~blRJ}P@D!fga(2sD^@O`F>ZoH&N1Z)|B`b1cY4sA-0sf9gkcLG6 zn8*@}NKQ752a&TlToqrn?rP*mZU2s4SoJMintjzwwjskcWnU1pFL=+iz+Mk^#Ehcb z^u{W|GGJN*;F%F6^K)b-(z~FJhzb+w8zP0l*ME>ah#M?)kVAV&fn)_jJ2}1NJWLMO z0fQirL;IsdzI;@iPJctvE?ZG3mi={1EU=Vy=6goX7z- zz%E>KG?)<|!q2JHY@7w4ac{%dtjHfg06~&PZ$HW@0v?o-H(-ef<6V_WAlvGd?SY|PtX@eMv z&S9ms{QST0h$l|kP(K075HTaPrWw$`X?_eDm>mL>`#_(Z&R_UNz^CmjaW`m_3cp(V zbozJP-?aCh<{i!cZLO^b4<*b2jsrF$EuBOfqxNvp9m-uWN1@t)5Qs8VkeMXmcGF>& zlo1y=M0}9u%V}gt6u0x49jA80UG8(4XER5eMh`|^-dhH1ns>;8!!6Hl9^M=+SsBY* z8FzT5^Gip$Xw~X*VIqISP-fh-VuU-_bG9eySuu7j=2=0U5ARTO98-P&+5Ka8zU65c z_k72Hefi$FEAO2BtbMfVOV0Pw5NXDa0x&ThIj8o{r6OrXp+TShCpe_;`VmVffQu+H zd6kFxWArr*5~OvM7kgxBUC<(PkCXBx&`x;tJgrZfQ6k&Ru7p6Y??2KVYQy@SFeAETRe>p< zVh^1L8zk61r^`D!nxC=~L^_-JP+kcFERGOZJcdxHIhxFAS<}wkDQ9)eSv}T!>Cu<^ zCY;N$eICCLyXN<&GZ#R!B`xc1n`6d|-w$S>C{78OLi;^qcb|V?!dWxrTpn{SpK`8_ zIaiN&U8|XJ?vC1azd!9Ly0AN%S;KOO+Z=$inKa5IT#CYGiAhE=>Pj|BBxn8)ybqn zqVgY;&WMBv>5bAE+Hiyeo`pn!Y$a%pd=l3bGn*x5GJsI18^oa)jcHGZ+l5Z3>fu-> zq&S3MK@`cSFTfjxU@Jr1D|-A9Xf8iEGkzJvQku?`dn1yR4U0lI&kkTCQF zkgaG;gv52sri-S6Tc|r)fIhHd*p(V$k)xr;8LV#nXgMe)ezv6q1GfDbS}NPl5W7U6 zDcDEw;X$rom_Ze*V5Ik%Pe&^@Mx7g@HXX$lDxaNvYQ~HHkmymuI8{${G<#I0&=W?c zUD5A7Ah%Q_j}v=UIst1I{sU>D3QCq!; z1QeO+9I-sJVJdUs^~{CSxy8|vEfcwSL>+g`m<^6f5q%+r@(_SBP~3o*-#PQv;G?f9T0)e8wAlg!prne|dysHKKsk%c-2k|#6)k%{q2vs0-#RCAG7 z;JabmDHv(+!e9-2C^r%jiUb=3VoMl`>A=Pk_?Lu^V%}V(Yp}|QYDG>rCnmr??g*<*l7W$V91BiK=z+GgQ-Yzt_ibg9hL?)e8 zHwoIePULQjI=0QE8C;@8gm&btJV?l%*){ml*H_d#WzE~5n3WF2EPJ1=&JIHg^1R+h zC%I_~$q%i}nfRN%gnEL6%vfW3+hx;X#hQRb5x_jsOHm; zvV?x7kp!BaG?F3;>ray(_#mmz$1c~x$lYZFy1Zjm+O4nG)RmiBE|zaavy0{YuttYT z(Sri%+ZiE-K6}6iN=rU;3{7O(udt^JY>U*ViM*tiq=h+=e9%C~OPHKTaHgQnDem!U`4IPmL_!N|$!R0Mr{N@A{sRa1 zx9<0E+q-xFeS3EuY8ARD!ZQ?M3pq@&>QVS5(zk7IBJg6C2VfD%(gTAC;uh}*l$D*S zox|u7&z1+F4T-`8e&RAMatL0-H}v)77EyjciOj?T%!nJp-$po-IgIpQcUD|%zqIJ9 zUE|AN4#r)c>D;0VJ73&?et$Hl;YxUX^{f5YbJoX8DsCCqNsn*Ng9&F0LMn zyj9$Av#e&uWGt_YSJsTxf+{O*m^GWri(oBbLD5VWin#58lGeG6XE#o{t7C2?y3{(p z`f6Rw-E!>&oTx)$v7_0_LrXDR#6O1@?P8`km-M!EbB$OSlUV97RH?Afg&eK^@vBlj zAhl2kfLA4HOsCk*6I+CJ| zgWsp2+=MLI4(ZuF!+WM2-k8HX=8ihnj76?H)?7LPXWE%R5*}^2v;*qv({-D!9-64z zHe!CuRSnX>wQ}yxhJcBY25+KzBrj7XH!vrZui}pRL=!UEpw-!?eTt?Jzohn|ye$tu zquEsBl0!9iIA6oRRk)xSAw_#r-8M7sDai^`9^oNyRb45b`0OG!Ny-B=qi8uj5h5hn zgO+ccrxpsPLJ2x0%XvWyU9GQG#b7Ev=h8V_5pkF8FDTlm(Ed~~oE~2L=rO3vkRTBv zJy4sn4MQ1^eXw_zOqtQyoun-W=>UcZ4??*@HTJYs&VrFR> zeNe_iAcM$O6zSlInob}lm~BUie1efEI)0c$a5a)XQA+d;UU3KN!ytWNYy<{o$d?Fe z;T>|A0G<|JMm31I^?v$%gdD=WU{JFv`>BozYnYvS6j`*&WChJa>vvDT6> zi)IK=u841`Se(L@TPopOnS^2enG36GS&@;6CNc z5x{-25VwcIWd2i~Rl*(usbC93a9ZoKG&AlpQj0TAnK^79E>1gI;S%ZC`;ml%*>Gh7 zWNZat=}NdpX=!FcbWC$CVUu@>j8!OXL{N&WfJ+wjk(z#M#hzzk5mS)SjNY5HEKy{Rzm zdj&?gNoPhZ=n*y@PvHe*5?t}oC6g3#Mvf&~P?5omGh#`EWjv4vL@=Yqd4iKmyy00KKH00Iw^vdw2VkGVBQ z|61xYQe{&__={8~TM60Zq#jF{>72RVS*A}TR3PUZ6}A}Zah54N+rHm;%WJl8H{Qx9 zv~Rw(s?5IN)>fm{zSTIBZ?spB9=dJ759=|OItkFykqZMfT7;R#6+BWOef=s>eW(XL z$*2E-A9Vl;`0*(wtTF2Gy%8EBkqqtoy2MPATQ%^>)Wf+l^-)L9Ma-hR~;7vqx5_U-*YmlT+9W)3jy})$x!4 zSRLobWUT!lMxYfUL51`Yj5OecmxYJPVZ;(KXA+qj5uP|Nsngj0R1)nlT1Z6AwCxmV zj-<$Qgl8y#oL><ZrKkDVXxq$2>4fkYlfg zSf;S_#jNvLw+ybV>JiHgcfsf?+EvEfwM^`Lc5tjUR!|=;STS9`WU_Dxa3Jt*dG#0< zZP)s8po0i7NZ0_%N7*zPmIa-Z2}W42u_ zuUJ3{CsAbU&LqsEY;8B7OPLxSe#M7bV8q}L7-h?gOl?sC2RR-#IW!?t z9=08mr&@)&9V0#%CR;{IbbQWLbi$@rnUtIbsdUPQj&7zp5s*Sz84zEQZmOjTb@10= z9I0C|y-=)04waBWDRwzW+Kgj6E>DQ0&LteR5`Rp?RZ)aNrPx_)IR`9PlCn#7lCle= z6wQc(m1;Z2Bw=hzTBn-f*S|zwresAzc}oC>w2m?h>cd1AqApAI-m5udk6yX!;$WTEoL%3fx4$Kabp)elsfGG_ z8?0l<@lYda-6y?`+`@B9&n}(Ht&8Q>4W-9D`9pRfrXfeXyb9<2e__e8*UlK=hzlbn zPXaiCeFD1Kag?iNRB4Yf>CGZ}VGy#CwksNz3RKh-m?zb_WR@w-PL)BWS)?>amgF+R z?uf!D(VJ_Wc;op!>arwnk5EP?TE`yDVx7$gmgKcGy|AGnWo`CoTLi|rRo10Y87BiK zu!KvIqq0?z(*n1Zs_*ifs(gqgay@h*uqT(!T_2aI1faW<9hGGKlJ z%6fz5Ps7}TvK6uih)~`Kdp6#HBFvOHChRDH#28V+G!mXey%2^Tm&Af36-?%-qzYY= znIIWpG_XfU&IbDz-6Z*fj3>Z&D{3Kh&4((eVV1O*^pu@iU`LdeK=eyz(4flQi=%un zh#|?XAam;Th9McIb5WY3i!eq7YsQ`J$6&=c2%AaZkVCvH-y6X+e{k>+O+|m~A`2TZ z5Toe@l5@$nvQms?&E+a7t)`}ne5t1HP?)l;m2pzaNg|2~4Fbdtg(VwW;u*4}ywEMM z_=GN&w~e(h0TryRSsJEW5a^^`4UT}xW!0&NknRfzK}Zfah!Vb&osgD`Vm`(sBM}?! zQNc|M?M%u^--2{mhiq?J737gYBE;xK_d*zozCHpWJmh)d3Z zfaI|!2`R}aU`tB8^?;UJChTbGZ`c_?I~mxJNgu^r4-*0^*@z4}Z@(Lz1@KB@+ts<~ zwgP$K5oI53Q~;wWnLvY~SSI+R4TjJGC*c5S(d`gew;(J9#VT?D7)6?}$r@h5VTxVX~(FnGiywT6d+F_)fzCCA$ae86>m9^t5 zuUf8h6N{TB7B-LUxs`1wsbSGK#0ob|6>flKBPzbq; zC8rb&x_HsfYmsY5QLX((s@#GlB1_I{C@H1W=%v4!F(c*&VZyp^+>yV1t?A9R_NKhF z?-^W8uC(vD((o>8ro4>aZAU!iL07S7mZVWy0V$btnfL67nNNp+)Nw-*GPlgt>Qt!%Vo4;j<=TocFZ>ofg)8K+ z3Jg&#K1U9JuEER?{ZUuQJZrQ`xJ_fuyDwO1hLNo1|eiVZsBF~+P<&6yRH_P=pF zDrr1E#;jn+(0?9Vj`%WwTnC$ zQfC3@sZAObVoTlmv8^8CFBA3>`=dh8wiAOF`dZUBp2N_51QS zvXm}F_Wgc^B>ZR$f_2O9Cp9i2a6y|(cM=hy-ihNYB6FM3oa)x#H!xsWfmzAw3cRh2 zAe(t!Oc|;Ze}`@WRWBpz3?A=|(Egtf^e{DX2|;v5G zC>1I#l%hYA+QAEr^zjB7IZKUxTqY%<5i&1 z(8#{7W8{P%)7TQxqa!TUgNiXk6-kA^)`1E_A*{pyoS=ea&4ieApn^7h4;e>kyN=&W z?Sz^hf)b6i^?OLN5qU4=cORT27(v18ng51?tV3W!b>oK4AgLO)qcX}v>ll5{Qth-X zW|-qACMTW6)*=ZhA=t&rAu?R+V{Yls1e21OR5*(7?Jw1sJEyVf=@GAD6`5CHD=>b~ z)5uI#o1(K`i8RsT3Dt+D`{(d0p8H>r)Bvn0%7OoP5IIb{F`Qb>Esp2nG}q|;(M8*@ zt^DDpH#SALcXrI7S0X&NLN~4u87Pz+x9O zVIl4CR32p*h{T&aRp%;<({xN^DHrk5aftq^Rsc2Q@S)oXz?ERI{G>4yIUq^Q57bZ` z#Wq$p$-qEc71IzIuM36JvKZ|<=xP)D@>w{dFpNcRM?B?`dwTX0fwW6|p)_@6f6ZK| z#+4`1mDB%U18l;t!rRn&x-g87>T!%xG8mWXfw5Y)K7=tyUZ7J)5tz+XNg0?WWo~(tsS@-gRYZ7~dg4iVr*csl z(DfJV7A3;7Ra;nv2+zVhN`5M+{txma=T|6O0oBzCsNTgubrpfCXvT>}-kGq9M-!8} zl4@Uxzge=SAPVWVhhkMU#)S6D(guwHk9tN=6AR`@1nU59(k2z3K|}DNKGIjCWs^Nf zm#=<_f`7ey9zt!9db3v7jit58Ielc>a->!CELd9Q>m$?Rq~Vz-nK5`5DgvJSdK4=x zCWjV&p_QC_$TF!jB>a3>b9liGk`o?~ah={9aU zb%z_Ie~vm-6L5SU2}G;%*}2o+`b&3AcwtZ+_c3@c?ut2=Ko$b8g&RklZ@U-9t5=T) zV%6);?!Vz#5YJh7@n|fkaXP;Y7APtgU)n!WxhdxIo^?{lu~^RX>HLc8u8KK9`iXA1 z@@5tpobF$;qcKlxPurfJY{4FtWzQ^;blSxooGqwyT`)te!2}=jotu0*gc~Lt$jSB- zlHi(g9G-};))p8zNsHj>^zMX}$sM^wChQ&v0Y9T)m1APmmo&cgJKJrC=^@io1y2<| zwcx3ur;5)RhE0%-F9%GetBd_Wy1byPhc0@_4nW>Ox@K`#U>7+{4~tc+k#H-DV^0_% z4^Ml%V8E(@JtGdPp+@2(9=L*u8|@*4EG0DUG^?vjh{!b*azDIAFyd_sl1$wOl{-a= zTFw;*pVL*Y|i(#{-*ssj1;bJ`< z0?x(`>p=?uaWj=t2tlxCxR|pm+7ao)Cd5+uqth^$!I_>e9I!ub9XAoy5BIew;l z18c^yhcGMK)dL_AuT+eI%alt24yurSyB5lC>aS|9{OQ7A4tkU*=9GtX$Yb+#;c(&O zHJTi0`A>O<3nR6%R~Jo+lxMj3N|vmdfmWt<8sM79<+7hHh>(H|dxRas3%ZudU+S+6 zFU^K$GoN*|n>%qa#KS1@AzPPtysnaOF4(5I&yn$2{Dh4vTXo*O926A;FCmj||q?J^LA?OxneS#cZ(Bqk#L-r@g zAxAd{=O@S^S2qXOC&QJsc;9f5F4ptN{X6JZAt16* z9;N}e94`M3dLo;YP!Dp>)L`yBITntMk@$f<1F5m{)mQ`W!5n?a7%q}y84alWhtBAS zzbnn2ykEN&xqz;1a*fsB0i{JoL-3B2Hsuave`K0P0~X=qkROfi!$AR>E@drK~)|#fPw_7$y9FGU>gpFt7_WY7mZi zIjP6bG$s9tl>pe7Q6u450Ll!#3>FngC?rBB*;5?A?uL9I*SQ02|Ut4;{xmWjs@?@(}b6GQkWo z?8dUjt z1w^xN(n^&+Xg$e{Mf`7?=)Zu2^XzRXPPk38D@$e4kRio;RxJo7(s4sLt=Y^Ryu8YuVvi`~pcS@Gi9C|wX$ zHN9xX)S_LnMZ0h{)TK37J-5xq>N`d=Zr}(TPT!CD-YQ%+lY@Nd;BHm4VCi((;;FLj zv9j&)lG;nvSJM%{e4BC9e51JH;=Qjt{L;hMi&sE}rE&S!AGrL$s}KGn&0JabZdKjb zwlM*RTq+h`Tr*XDhGop?*;SQ_HG8`B#@?Km+ z=2EXOSjNiS7AxC!ZRteW!Sm+$g7S+yr>a)Rs#d>#;#&i+4MZ!OV+)$&WvkDdZ4 z{a14Sjhr?(35R5ynXTQp4=t>PX?BWIa8Ql2SR0d;(?nL%Qkuw0T1FEN?Gl=BX_rr; zy%Kgd6ItK?1Jxu$W!gf;S(#Y00*k#tvr`~bwE~&E7hL4zz+smtdcB9`Ij8;IN{=}G zUPCwFG_yim5QkJIh&IzidlJrn;8=dHVF4~7F=y?Bo;=Prk6NDFaPg7rZm7wBf9DTd z-e|eL?jTvEFc=r@pkwyMJL#Bx9^5oa10Z+hM{%(G*mp`|)nxcLx^Ugq{HqxxANC%a z$Zw6hT5mdYK~P;?G?}|~(z$ioTm4G*OWD!#WoI2X$}2`3H%iN2y!ZUQWGXZ=QMzfU z1&79ATDbdc_r)#a8=`l#UMqp~lSu52*66+WPvk!^bZ5N0a_G)UM@ih7Kjo~9IV;Ct zK52QpX7NZm4y)aSIf1p&s#TNj)$zJU@~Xa3R5G*&mXU_`#+{{6XI*^Zva`?P>_2g}{sV4vIe)LRD9XRR>t45sh+(Sc6 z?>I}4&BEnV6>DM@YbGkz0k161eYdc5)Hu2VcqK3Y`4dwGb+LlFOA9ZxU#*$ius610 z?_|Ngm}ehO7%a|>xoTi%;Nxa6QLq9=R$0QRs|HizN#nC&kq*ZvfjeR(zdq#PGT zmH=M@-Dd3pAjC_&FYY_PZ^VAnoi804JbB&S826Mao68245PCuHN}0(?rdl zNe@i6mQJ~#O2MB>iS5nBLJ(I3qGo)n7RT*zeE50+naQ)Q6&9Q}>qg(b*EIcscoG$fF zR&2O>$3(@RiPF6z8Po3K(f*jbPBOJpDIVS+!!76|Px)AV%-tY`RjXkb&8n5Kb$i26 zFy$zVIm)8tYbG6Q<12ShtvnE0d0=AYK{_hEA?8{-l07!3(3?`BaZkmRXHm?vXe{`a zXZ3WRcWieo58bNueLJrx+2e*9Jc&d~R^BO3ZOl`9scg~%{d#Q{H#`Wdig~KW9+~v4 zVqtYLPu-=)w>;}-Do{;2hU1n_fv>&ptpA0nD5v5*1Du(4hT2sl>2JBJZq%=)sZ%pu zyL^1fMD13ZaEm_Vqh{H7$wbW-idKb{n|@2<6*cr*7O!4Izm;)!(NN1TXZI60|8h11 zZrA}t^=Ef1IaqJ~p{3&BGHa6k0wTicZ30@ z!A*!fMsKQNh$rcDh@8)n!`r#%v43ELiFa%7?OL-H9SehHkLoFB5;W|BlSbIHGpv6ow(I=mG`n3#I{EKQiUg$%Vv-28=y=8~p*hD%0g`SM2gW3$(a} z%jh)o0;?16J^3 zsjckc6pk2n1y*5$YFb&(P#EWAk|Aw+g(IfD1XizoT+V#$<8svR!+niPUW z+{C$YHHGbp%8$+*$b39)Aafvt%VTZLlUoH-ZutYav;w`9cBSA|tLQ(dIe*__9B}w) zhOuYB0SgC(Eg!6)BZuHiksjc2oWbXFLD%yjaN1B&b9J5vKoJ{Ut@FCTX1Q$u}Yw-@@l#X5r4PuN3nTaM|4jGyg zuT%|%L~FiBI|XhD00NyCA#S3$D-^9|)wIK~SJ z8yZ9BcEbq^y(My+C1Ai_Q##Ts?pfIGMcs=qoJoeLMbub9MbUNzdE2Ni#ACyDm;ph; z1s{|_CiXgmbn{>8PT&ubJmFH|&>uO9_=$AsJaob-2ccGe+>;_KAe7B`Y^DguZW-4S z-J&)ncx~;Br_FRam|ljk7U}+;Q1}C=D@g5pgCqC(`(l|TW7e_kxHIoULCopB;koNQ zvjGb)D2x^(kr;&wMr%il#x{=^jyta270urc%|EJm%dz){GjH^sm~-LSiSgE0&HAey(Jcq! zm31T5k;kCb5noU`V!h!kx(HKQjq%!*@E(lew)(RAk<55r@$k;Kv)tmjT-XOyPUF6t znFE?$Lq8DR@7+0(e`nNn=d{B^HNfr1IU8@ImX-11lK-7)&B~r}8K8aQ8SD6JNi?f* z$TXc(7^_-!{?V%ylR2A)tntj8Xl5ze<*gptK7>mYOKxTrkKQ%bc4^`Gj%(GZ9QNti ztA|WCORGos4w)ux3*ye4Av;_3+8KhA9GL}`qFjgD-C+$FY9+YcovD?WVGagL6h13c zC&^P+e2Hzj6Z{oiv_??OG<(g+pZ=6(l$K^KRYI0+aTp61Ob|-uOc$_xNfvI+Ejuq; zgcSry$s1D`FCjRQE>07cQHV^aC6&>!sV2996n z8^A|!6~01;`zn#g3@?N&3jqom2Ge@c+W|1*bIm&xk)q`dPAhi$TkI9 z4_ACTaEF30f_L1wm!Vck_%nDV5m-NjNB<%wu)vae3;2aQ~PVoL}_($>?B4V;u9gG z=9R>^LnwrE{V>_jN3=Fsl&PSKd0~DZ>o}VY-P#F7Z1+@6&LW&a1I{`k)I;ZxIN&@6zDlMNIZD02&g{t-w-FkW#uPn<#=;g( zH{c&Fpu5{!gKeVw5v&2x!2>15=DH2XJGg z5Ld}l?Ao>v$Ba44kgGvSt;krGgEB~l^hfz-V~6?^42tIQ(U6d0!U%08Qd=nuN4Gmq zbaK!S7CR3OZR2T=B$rEFKuA*l{+NI;@7NP^qMlj!*g`5%1lvG2v?{1%$tq98TdOoE zxhLzCn#;Hfs8rMb2QhITR?6rT%YXs|Y^nqf)r8Ed_h>gKGw1BemL}cpne6WKyx)JTqQG)@Cz;Hd|42W7 z{g>~1zuWu0_ZJ!sq~2J0%{7x&0UAA&{)FX@1zBc#X~^vfxzj@{N<$erAZ+GA*epv( zPrm0!NJ>^zGif>F0HdO4nlfC3(KL>QG!1AHX9we%HZh3{)68HHETqi^Vna`gS+_<8 zgtaaDlrhx&t5(OZp5C)d?z;m$1HD~pC$)dg>kCMCt+wB=xdd)-fHbMst->pwn!l+OWM? z|6F}+sX?e!;|^Sdd0XK(B1nZ#PxZXe1>}U6ZRqFe=Xfuo5Tv;2ghxCbh%v5YD~MJ> zr-87Oe)S?wSC2&qbpc7^O$b{gR}H2|SpCE}It*$vlDKJrBNF`phk8!I(rUmnnD z5TC&7y6+Uw1n~=GKV8~+Bxf?AHq2%ye6UcC@GO{5+c2tgu>d6u4{%CoJbi{jWw!S<*FWkfM!@x{t%WUNiKJRQ_k74b-~izD*yABvU8o6*w_GkE!_)oY zApb5P*Y>f1CwTg`|KbqN_#Ine_p8{d`Ks*xIq) znUwNL=Xc%L-N|>``+I-Q@VS)X!pqeP+HN1^X=rT$pUruK=4EVM{jTwL43ILlDIXFe8iKXxZAeI!v4?cCCh!xTi`#U1=BeJ~q3kd6eJLA%&f4+&AKN zJJsd7mkKOPq0==z_=e*RJO#_sOc(tJ;xEP>G5iN`4GT?I#|Wm>VMz_42wf0RdOCOz zoC}->MA#rSFJy*7hWbGolI6#%k&-5*tb+&@l$#F;Ba;nk5&SkZRzC2_-N@F+h(SUU zGh{DH;yM6RtqT_*+l1iA?>V5GULOa`N(RX+OcxvI^f*MdV9!BLlc*)*L@6mrMyN># z5up`2$P2iJ1edkiMXgolnm^tuHsU8BYN|3emE)}^s>t3~*;re-CtPb)Yn2I)S5J;v z)zjD6JLv1uw}I^xbyQW`c!O531%_f%G=*S<5sX%{*w!lEtyT{zTFa^pEi8q!c+<3U zv--6IEV-hgRZrRl(DfejiNX;wfUfOx$W#PS^oGCRY=-Uufr9jOR(8n2T!`H)J6L0q zR0w7iS7J5@Pjtpa7j+BcMCpQ_H`lDm28xI!0oww#vQ#9qR8<8PukAB*qs0m6GCdo( zkMD#D@J>%%olMx1U66$JpfA8Psh}W`oNlxL}D5l@P10pb;wY1ZyB z3Rk2NmafN(4#6v!KI9?UW_>1B`K_0&2~=(O2V&>pTU0_&M1&>+9bFKp+J+7Q^sGW5 z70a>+fu7MDHsAoU2rKm-;G~E;Ay`Rd_i)vR^$+{O=pCia5!ir&JmS}*SHc-!13`z` zVpXN@2hK0q`DmOe4>mh3TDeF|Yj$(*1&dupMC-XkV@}Q`=o4}-H5`*@-^MNg4JSzz zjW#TnoiQkv&fcz$KGRV}*%FgcU!py9p&jMoaS7__jArOLW4;3ARS37ji?mQ z(;t)a=*0!(D~~}`220VE!L*ejciOmja`&xf*lDIGkGLQybEnOw6b4fY$4}i(shD>c zjyFwYO}sdjJLBH+!<2kT&R{yaX2TyPznlE~?%A~M*Ikp&$+ct7H?~hKpGHQ7^z!Mn z?SaJYKgAz0%>I5xPGfES0^(LgH{AfpzE6j-srsIZSIom;bo`RxDVoQMVu3BiAuOZt z?uFQD*AS(hSQ>th5@SJxSu4BD3Cu67IjwJ(b_}E$(?5wwQb@^+HhFt@7c3`wIu$iZ zdJz`b+@V^5Nwv%PZ4+wE6(WQ!k~O!T?1Ie&g+ibS4YiAQ0;BeK9E?@?3S?kf{&?w| zPtC4q2(DIkPtz#!gcU;R4rqtk8C@pgdYUdwNB<5*muFQGbWY(=hEc#~5d7@sYYv3UFZ@7@BD&)=(uB|GVSv46uomo4Q_`|eZ+zsUy&F0qz^J_;^;b-&KwkzAdwf(-s zo3wWHiIL{9io02>kt_=tJ>enoBEAj53cLBzjzDJJ9az(>ST)%kT(NefTi@I#{u3AWR}n8BKzI77iOzA2dg&Ec1&!}~5X+2Oxcy=Aw!7sulN+b%Ze>iDH;*TVa*M}a3YFDdNeE>ZjkSe} zE5~-b`KvL3|6mSv2kVxueb&Xz(9vuefzXKN_n2VWa<>Z@{DmUs( z%G&wNBDe@q=63SUhS|dP!NT?LJvF;=PjKU&`9klF)yUUUxDBZ&-H+VK%x0WPSn7pR zmc5a4x%g6XFr@@o_wo)POn0eC*_mq^RdUA`d_gz8p9xM;AE4vkp`!&8VQJe~b7j&1{Vs76)a-+_e*!<+ zr2!|L4dY%Zof)Kl97qWE={=pwJQ0!TI>iu=_V~aZusD)MB9?oS-U{D|1i&iO*vV}O z#<<15L>OEW-e$-VjzijJEI=$Iukkb7cEtQdFbv;YZt+siA9Ptu=?@ifTY!iIJ~@pf~@aEE7T&KoYEerMIs97 z0T_M)t{feV01dxc5&m0Vt$O_0ay)?KUtD8jAq@zV z_iyH>JnbYB`35e;sv!c2AnVBG{g?I!GB->-{`P^Z2ZEU!0`3haQdu1=T>W0o?Aqoa zV$v4uoJrXg%E-FB>e8x_rg>0PWncZmwZgYcu9nP}ZVBRF+7{%FDt*8EFZKj?v?7B$ z*!I|ojPX6Me__Hux$f%uK+fv1Sfm&p*#|pur5@i0z`_i9UAQ55hdRb^yaV4R=WoQk zgI4pPn^{LCejL#wVJMddj09vinC=k&DqA*)vtWaFs_!fEiOXcaUpV7J_zLvVT0WS$#>!8 zVPI;`ED;Bs?CW^s7nnVHjaNh|-aBq9Z(`O+vhfi`_09b}?nS~|^#xL_f~&iAu$Vs6(_ zn_2syW!A1jGds1jC`-1`mxb^6B=M2njlRj*~g?$l-sz~oQZXHkufl<~HY58F9PxPp( zMSQ1}2hdS`15_a%J6}baY#bZ#LWkDdbEXS^|6Sc}P#f4M0b0yfC}o0n5sjcM&0mJk zAu~$N9&emUEq-}-C?PeFQE@w=B2?-fN%=6b7@pIKD*biXkQ$?{dyd)@>8Lzv@cMv= z49sw|vbEjc^I}imP>K8zb3v{dkjqa3V8hT8zD{2TJS~t+zKXxf)9E!{{UJ~P2T$yN zmC=>2Dzx(}yn2Zbcp7567}5n%qg~Z^(lcJ(8%itu;vV%b-w107Q528+ML5|5q#`^j zd|8n11j&Dn#c@-o0h$FhUH<0^BJVJtk4k!BWe$+?aWb(X1X*DdK}=l$Sma?yISj`S z-3~4n@fAAHoa+}kpl#qWCw?DAXkS86_OaKlMa0kJT zP&3gvTiF<_Y@AMeJdpUfbYKfY@J0*{K7!bom`*B+bPM?+pwW2x5=+m+%Ww;camF<{ zC)Xp^0sc;H0A-86YJ~VIymmqiC;LDxmb;0WsOj{9#5J)#*PC=kiaC~u z_^a_4&?Gn|B}yejsT@>j3$-5N(E65L80ol^%uu7fg{rixJP{{R?hgHAo4g7orMcCS zye1J$w)}o7-h3s=zRoSy)h6&;@hOhHPLS3KB%>)#qd=4XPG5Jvn$)-cvwcZ#EPe;a z+_d3XxFNgXx@+2fK>(+(WxDQ;Cbb#s!DekXnlv0|OhrW7HxU=x*=~LfKV-X!VT_f?;~o8mwh1f+;D|gEYk)&zq67 zLI)-Ur3MM_*Dm3XHinb;_QJPSFTlMrJ@<_l#$TFATYa~{ z^H%+p`pGQ#hZgQ}PNjS#e{XFJt$*Z${h`gfK91x4O9_wz7M2>XIt!1>tNg3K`Y|~9 z!if5(^o(*I@8>-vJkPtO@-Ff4=6IC>;m_1Lc!=&M8mTkhfm%jw*w` zgr=2#MCS&G8_9<%^Ji_EJsz27;5Tt|DBtSQh?MQW%f40QCk*PxyRSVnu`f{nRG{eT z>5OLr?q{Sy*JEVkTr7=^HJ84^!F`IeiUX;!?#Qi2<{VF7WzAK%U?z#8J7wOt>#x=a z5=#*FAyiyGwJ}swG1c`Tt}v+C-V!|f5n+d{HxQc$Ioshm$Y2g+Ul$rl?G{7R zg|B!H)_RmQlFJQC&7j99rZ&rKL>)GkH0-`!m)~#&H4Uh+RN**+i3U+Pa&Ma-*?cio z&6o*FwhY%jk%*eSuZYD3G2s4L7!eFeOHEH$I1%@ATc!w0>}9}U(HcdzYS>)y6Jgvf z8zNA~0}y0Mp%%AoAm*@L90R2$d4>#(@I<&$hn^%E{vVXR0A+9zYU^-qpM%0D4CR<@ zmyYD-(}M)Sf60ljO#DN|D@U5Yc0f&iPIu!lVc38>^awd^JhAo^NZLWb1MSr6~IiFAHDSGMAvL(LlFNm8v^bI zX?4r>=)B^e5)5{$#tI`bh5*Ua_gQBSE|A_VCOOIdagH;og4u-{?#IU_>GBXfHVg}BXuAfEV-k$9pFfe1epPiT|u)CkH!z~Cvg7#`Sc;Q>+f zK`@bm_vI8uN1y;XKC^T}CDx59onTG+bYzeyg9oNOydRk&cU_N*;GBg85>bV@m69bO zc_+KUU0l49Xx|T_iY5v_O~9awB;sJ{&hl}*nh4`>)*(kUhc|5CBFKOx5$7F_R}&HC zKC#XG%F6FBnh0BUt|=T4IIth&7)`VZ91q!f&kB`>oj{l;xNSy>B#8g{I(Ns zB}Tl0pO>5v6htrkb7)ek)h7st$WQr?%F(RB;X$fzl=~)d;rqRoO_b}vV z{L&w@4?3D*2>+D;!yapGShSy(-IXzNS}|Mbg9k%_1DT5`SCj)YLB23*xkOh#2wNq} zorCZGE@I44lM1o-CpoSC{hn?lGQf^DNUe{ex3!N^mZ;{Sxc?f5`RhE1(1cPIk({V( zon#pyWP#<@Ig;owzdxrbVud<4anXT=<~R7!do1*)eBaqKmn5%~nw7+Jq*8TZOP(r; zk0K;4>&?w0ip<3M99&x7hc~sQF=SG{Kl@?+QwjQqPd2E0Y!-K7K=G&1hiBpZ7j}ic?NeHv8AJ2q630`#&$IB!KnkE zi`hIRUuVxsl$ma7VWL+1?Lep)#DVBJYt!{J&Wdl=3N1eUDCP>@&Mc zw_#A6r|u{Qn+o`Y8NC)^-q4C^rVDbtaAvd2VSr_qnu2(YR?$PRt+)TwDae1k-CHfA z2nf7r3WyjJMpqt}TMMF1R8>`}2t;-Mj&5p*^}&^?u?CHktbY4not@ z2WJa!4S8aO@)CJWt*53&v0J>Ot^}^u1)#7Ly}Ek#xVO9N^WEIu;po`bb`d#^jD$(y z-Nf&BC{ue%N$jjnzl#L%jtrdRBQZSb%*xwlU_nsO&oXmELqf93Qci&6d#r zPwNPKO1D6WzzrOO;qRqQn^^|kAHzN~3yWL?zy#1)AXrj(+*mc8PS%zl|0q&iy9BydVW!YlXsmR3DobY2 zT$`*Gli;8^Fx^L+t29gmtO?J+pgT`jJ;m=`4`r z$cFGm>TB30nwyz!Zv`9&oTnTqJbvf|M73)ciq@a&VL)Jb?*S4y!sII?kNAHVMF#G7BFy@&zjDx47hb;7emm8r&9An*Df-Juiz`2 z4o0Gj4y9YQD}3`y_WH{vHcV%F18%R9Ywps14+NFTwvt99+bm$v-ycjoeySrHlL|+2 z$0;*L3{&yIrU)gf!=}A9li%XG&X_wKw&y0Zi|2$w4%>4x-4C7{)D}`aX+;BOTBT?P zyG%@NFpBt+f_ORl62LIpe%nlV+4hJ7t+WdYNTkYPP;V3tfb~^YRS77ULSH#9&`vG3 zWhnb`Au+;pe${JYVzo?+GL^NF$nAd_9SD;q`%+>Ou!vQo2~#6P?_(G#rdH9HrZQ5p z?6wk>-ePG^XBd_GDI(AphDT|=L{^z$O({c4d6JXrHN1{V?M|0q#Vg@&89(E$0!ug2 z{M!Ec(u#?m@05%*BXhufMfGIebj4==D4VaWncOj5xs^Z4f0&jvUs^R=x;|LCerji6 z+u`ZbBV(>_rrs&77<0XmI`7V(b(aO*n6{JfY zG#HSj*DqvxI2C0we*qVZNnj*CzO&C0-9Q6RVR4PDz)@4);b|ppRQq1vU!?~ehY_C20B^oE`@9!3e>JuikyjbFj@p|FuqGFdJX z|6_OvwmuE%AS!RCRfh5lFU5zJXU{G#zm3q%`9=D#s@uz}6@73bs(^0`YIyTdBBy>@ma7Rnx=_@F~j;eSwyfskkJ=fOu5?XVAxwMAP z22{t`5tfOm@P-(C3V39&IJm>kK|@ibWUw=M5Y~yJ7qVeUWWj^1_e-plYZhGy*RYLN zgyOL6fz6ZpC;?w=G8v6`D*Ls_cK-!FwJD~sVXELPZEe3C288Z>v2aZAy@M$4z6+_Npe3@4xJpBq!WW43%1swh^{Gw*8HpzVt-ig_Tms>8i zj3nJjTK-XtGpXu+tRp!CrhG|N5Q8LV@LsifuNwDOt-e|D!C+`*_0*OJvFS-QAFoWp z2|BiF>ex!R(1TTjauqhj$VLS8CtCk#Htx%Cp? z$U|pZ(FMdk6~%m>ckl8PKw04v{jZ2Zd3v2QsuP94yeutatw7gkJke(TXdR!x-qQQeaU^@ecx| z9a}cyc+q(*6$6$CQ?@2c#$b0L>og}KfZ;X&-+v4zY9lPdZWK9TzJ}?IctH9jjwIxu zQ*l@t6dmVa3!6k)if|FDgMYwJ-2G+VrIm!j5yTsQ&IwQ!O0umiCQ28B8%R+ZPy9B= zvKU`NWIgX*KDry}1jbuILWn8FYX^kV_}c!3NRsnT8as{)`V&}uCTG5S!F>o;6N5Paf1{z(jC?&#ePU={tn9)IuCeEXYD zGaMZDr;CIWQRWSp^gwW_VS(Ue=fi4Y@Hbg9Fbxx2M{+@5H2N?|M70e|41=ODEPKvJ z$o4|7vE%nRGE}wvL=O=6#8l_in#m(?uMU9knA#s+LCHf)%?}0GJA`5vp}_peFPY7+3Fg;~?E4{{v{$~p`s!+A zPYdL%59J^q-djmml8`*?X6v7wc>lx3 z31*S`3}bC9bv!YS=ragzh5B~}^BAioaB$2u6P-F*s{M*snqvD&jL?=PcRcH@k}D;X zE5BQJy)KZqc{+1Tz`bSR+90r>k$_kV5=BqE2S~KPae8++$P(T zMH6v5#VnS!CNY9JD~vz}vb?q~vAoV1a%|XRM_FX=b9m7r6@>9)M@)WdC^!Gc>6;nf z>;AL8_xt{$C$RmQ59^6_7Z2!Th2obExVeA^RhO z;XyH!U*y3c8DOj^ee1-P69~SOpL*XB!z?2)(Xxz~G!uR9>|+mwt#W>4f5~CcC|aIU z=lYyf(HieX8$6}J?R&zuDveS(IpnYc>R1D;EsIuzawRtE^TiBe=ZR9Xsmn3oMP3lf zV&w3dQVuAw9j8sngz=p5Y@H`&Iir4Hku7-bSpJ~k-q zBuBj%;!+U%r<^r!;%ne05MGrN8CPm%DtFAJJsQg2KHe}z zM}qj5zx`7D{PM!_T@&lB?7NY5V{mfW%<_g%?z-_D@d_;r=FtlBgK$b;Opal= zNR(>SdJzGSY@9^wLZb{I(K?v5n8p}ZlM%E>N8<>_6lcZ#wWyjiUd+L&Fo@y?=+GsH z!LL|%2I0k}j9i9eqXjn-BbVqkeGWC*dfyknz{tgv^;yKRFF_!*2S!4wzkEPvw9JpB zhQ36;WjAPf?GJ5z<{XaW7XzejhA$=-0$(R( z8_D8gqNzP$F2E=RQ9zZh@3Yf>&uML#S7mb7Bq3}+~;gfk$Hknk`W2@g|1 z+aml5&Pd&eb1IWd{)TBzg|v(1Mmq*7jH~Fg)0%BYJ6?64Vt6e_v`Ed(2(5IY5;Hl; z)^|w*7y)&dy_PYYczTs_*ZMnb^D%p^GOUbR<1Mp{{!#aE5=SqhHWKV|oL*yGS%1y1 zQwB)3$YIs$-!!n%xI55bT=~+>uYNlWCi9Kcn~is^zvefu+15~!FWtA?SUcKF)))>a zVVp7+!8l1vL*-8&ShCH1B}+fIS{kh#wjH|)VauXm&Wi~9rR7`u?}!`BbS5~lWDEZp zv*%*UaMEy!8nsWK0|?Xw(hqZOo7Jzzl~v!cIkSygK&NK43{^BKheFe99>FP@X#7H* zc?YU0Z8s2M7)|R!6++Xl!-YxHf{geKalm0ZN-+rbZy`!QK}lizw-BY97Tv!QhpY<$ zL%PmJrATjcQzuf_xxPkQSn$T5s)*aKlfa-uq4q9MALDH?pwsrCx!PWy_VM%tPfzl+ zpQmr)J$myD_ML-E34@~T8Y(v2!<1zO6yRiJO%uJazT>7XeaAI#W1As|x(HXvVIenl zsy-!*s<$)DbIup%;>4>l3a9+D_F6iouANz~YMweY88_MSyNSW7W}R71%Wzf~D~|9a zdki?$q3jC9>QG3xpWq(4NcE6}Qc=;{NFmtl5})Ev8GwJo0T41zsJ=}6oQoamIj879 z5x4!AFN=6rn3~sFMKX;TRV~Vp?hU@g0g@QwurdiSL(8`CIvwzMB z`d?5KBm&TeeB-6jm#%HPu_sWrF_^aTF7w*&{=jwXg@C7JI_E$j{Q$)M2>yLLvl0a3 z#Dz3@%)%;KC>iP+IX{hrnE7T`S?h4C_8^P z+Z)XGj_eBMmwfEVTLxRbxcP$8iHbmV)2-I&f_-BN@SzN3R{pS%8mz48!um_ice6_- z;;vozFnet%ulOzZ75Bu^>AY2AjYt{#=8=i4Z$10#sq;nU6FVojf3JGFsQEAU28)i~ zDcLfS6~Jjwg`UIZxC^n+-)x$2eQWQpeqp}2Dp2#-t*l$|0q^eV;yr=9J$G{p#v5M$ z{6xp?+^Y9dZw}mQeEUJ5A&#D zD_u3YVaj=Z)69k^KlJRsQ?eI|y^|BqPviwk_TJbyl{MAzZtgof@Z)Clt>w24eLwqF z&dn!-C3~;9?yY4XJlNpK${ibcealEQB&sw6MPH?5jt#szjBbW|(M0QH^S6&*X_)E? z6g+bCzz5AAG=N4w>?{eDl#h2$JTc{(e1U?QP4{DCb2IKaVwY#YJTg1~&CKyu1-Zz!wi@_|bSCYollc$ zn#o)hDkzzVy;3vQbT_|zqUlD?Z1whF_4b+k9Y5ImLFW%1y<1d%ZP#SWOwqP^PtD}| z_u^;QGzHf*&3KyUJ%~6s`AavC&Ul*8RVCiZ^^+BW)%ye9mg(XHfxH78-PpT@W!D-e zcgz%SeGm(M22#A=&hp;HMRs*CyZT1M?5Z8XRXYM%k3L9ngmjN0rxs#YO2#BwK?YcR!m-mz9z`U{J&x0C@W`jc^a3U_Pad&9!{dY(-)+m z6P~Vey%AUa1ko1aRa248ekAFED;AoU#6l$c$n?sFbX&pJa!6 z8?Y#i0cRH^)TV$zW@Pw=`>mNDi17h~*B7uHZ2!>iR;&MhKc z1%Lkz%H?5Ds9K&y`&&E(l~0rg7;k^wd>?wj7%ZjOaOvwWh*JHClSijisjB(KQL43^ z7g;D$QL5_?-RgL6-_7U$Xn%11Aw{T$QIEtiLOptLVN%{099nhgRAXWks!@mCjqiVP zu-6fG(qszu)s0gf?>U338x^VeC3mV5%F;9>G4FM7?k42WZ;z~j=53zEm^VWje5g*#4*izq%Mc00?ac2FYnKg&z3q9A0 z0P@X^Gpic|rH@Y+HU+YpLb*j_ZnZrv2=DW-J5CW{p)?3P&Yk?yk$n$biOZgH{y59E zY{fkXPHK(e1@l1rg!kWvMngom-%yqr(fae|3ml6 zX&nLKy!mDQF`tBOGv?YJ0|byH>e6YVYprwuU#cUT2E<6&VwY4~lEzEoy7Va}xXw_z zRbZ`lO7JXsxD{d-xz6Km#J|HOjROJ1-QnLD*ah-JL%y!R>u^B!1}P%!3QXw})zgst zrK-~GXA8R+xM(=Wis17ptw}t?evhmRo)D;uOC{onS{DXP9fHx4bvZjmoXrvY1c`oT z-1s{0@=>eI6SAI=tcxzyj~HEwfuU~}L*n?u(22>6ZouazIsu$SCss?P_neTMIdl}0 z0Tko>-PrS(ne{CQJ0O$oKceLekxOlxO7~3@7Q?}yP2%@N(Iho-u2upT!6+X?GT!72 zd8=VGSLMC&g<$3OtIKb#pDx|?kv!4yOirFt`x?H9-m*3JmSMCPvQiEGz*lFk(xg%e0A zLC9h&?wD*hW`dY8+`(N5`D1jnPOEqXCCue7Iuu$0+S))k{~ASrB~4g9R`$g&jAsTD zimqkOmaYw!uASO@yL9`V>`h}s)QOC}6v*CmBQ==4X(V|*A$c|-H<*w+z7?VJ=5y*N zUzi%2-~8wg@&lWm2yNL8@37oQM^g|AD0ej4f<}U>kR)x|E0*M883q5LF zLv@>H>l%Y~jSpfu0YI)4H922?V#bws*Q}}Pc0%bL`E0(lQgz?ds@Zi<2G>1_=xOLo zd{x#gUlrd;$qBe}6uw1onTJVU&*RoBF$(jY@v@IC;@D@(mLV19dXWRG!^ABH-tp@? z4qzW~==8ZnH)s1s-Csx#f!xJFtHWnn5P!+(i+?rdlw%|Y(!vBt3$gwfXxG9SqIZtjb_k<;3%o<+EA!!OT5B)pnv9 zScnK~V9_zcE^z5!0Sc3F2hG%)ERYl%I+qm<8Z8+gwy^%M;w!KPcd+OV-%iM#Pt6VF zJvN=%7)WenwA$0xDrQo=p&ZZHiILibQ^_~iy_@=jq?w9+_zEO_ zJ~fGH)FdWtyOX@_PK+M|;0O7d8pMp{~N#}b#9_V$BR z5Ff!_)ZQ+(d3F~v>WpbF1OF6+*0J)J*?rwi*Cx;T=XyB*kokp_TAn1W+WX*Ki#z3NqaHH+#J5ll3Nj$MzF+^Wq zqW@yhVZ97+ZJ4?0h-SwCoB~W_yp7?G=|}>I9L^r*l#?)Zbo)7LIx2~J0Um|oRH?g7 ziD(?yrX$Sh&+Hd@d}@&C?+k}VI2N_Hw*oWm=50(J@nTeQ*x)3HK;V6+U_~Hb0walA zyyZD#B~h+5OJwRV4Z?fCg|IQm7jIZ7=rDF5_fYhBL8{(@{=ut^jz6w%QiK08C~u1z~#=rAXX|^DNdPfS0_!W*dz~ zW%H(6t1>3);6jIm`O0WY)*>*F);jq4sw8!hFQYe*zY(6p0+9?CCV}K-*H@$o0g5Kn z@(v=r!FABym+&RF+P*kqR*tNG<_Goy;;nkpF$r`pPM#;K7r1$P$~|R0=uPw&qN$cC z2xO#9*o=nu0Cw|DR-m%GFD#NDl*_nq(zmzcRZIjlQLPI#huhl$S9|+{TKF-h&Vu`0 zz5XZ(=T%iZ@eG}eiLhja(g*BIeieDJPV>PL*vBJZqLgSYX0`yKX1nN8-HBEJov8`` zIGWejg*$pA+76?onpvW30n!_-0J9Mvc(Fd|!`g*~$tBtW#Kp{xe6w0`icJ5rK*Yeh zT=!;SgsTqOVd(Y@tT)&@pgXh!g#+_JUF`=RtX2Z0+F&HR0k9bwF>P&aZq zPcn$|36Me0sLYC`!L-te8YuYU0}Y1*^+%@DT1Q;-Y1y-B<-xRa&`BF6tESTs8$;=s zv=)5*FH9+&hmh@`f>P4aj6M6UzEJo2F$MkwDJ7}@e~?N4gG?f}*z5mirIBRr{c9(X zNDOLzJ)kVM)96H#T4wNb<70#Ssj`SrunNfLJm?2PKGWBK9&za~9JVckdq8yF*C4Sv z&Uf@kylX{hsa;bA2T>#2XuNQ|vG2l(6AOtXomhl32)0q7*N{29txXDUYqN*!;a@a0=gMxi!lE zc*C~M!rF}qj6dr(`y{tn{5KCnoNzw_w=9JgRldh!k#Qmx?yUqDbMP$x%N}h=H25*V zHN$!viE)(2^cgF_aTl9HV@IBy4N@4``bi)f*X_L=@ZtO{0k zZBC@2r#S`JX_9ilHaa70@#$m|L4B%{y86i9D@M*9c8NiqdJ(3b@l8;+Ss;;)O>Ut) zbHNmtfZBLMl#4W#Cs7D9Qjw31_}YfOo@OR^5W!O60+111NuOOnDymSC7a?*D@hM@F z?oucXQN@WBc!NVayE+RsN z$+{3KW7PB!HDTm;QeCSEKG7KVA$p6EfmBv7Nm2mbrq$MCDu|lJ{t-Z8+)g;~05mU( zR2jTMSOE5zEZdtMuo#+W5Hp5 zK^&)@?13a&12?PEqC!MNCv@8|>{Q83!^4bqYyD?Arg#-$IUx$7j1N5DStd8~=*dmV zuR}~{>wgX(WQ^Jcum5>SLc-pYAp^f3xle|P06hBVWk+^CxwEO&Q{&ln_`rUTZ2Dy~ zg8gS~^{KkLBi{aePv5!00dMt1^##QP_{#ju81{xu8)euRhKACf2O`scfG*em4p(8= zokOJY^p6~EI=f)B%NEPora{m9bByTF$KZBF_=qSAT$090!xAm?clCCc5xq$?0I<d0QbCjP?ze zWi;868GwyNSx_w1`Rq;U(k$o~jm|G#wDS-BT%F%>17qKc9zWSXFrbzL*g#az0l>WB}TPLeWlty zc~_CL3vv=Ky>eUlsnypU8V;$Hs7REvU0%@cTRrloj42~nM9u>bW`W9Q1nz39?0NrVd)4p4=A#f=64}w zyk(O95yOQaWebUIvoN&dp$lW9mny3*I?${udWZC%!Q_LM841`(enLAY;cVxfvNTJ;4_7| zXMg_-Jzd^bkT+5YMBi4~QKlGtf_jmH^srvOq{B5UW~n?bbaiN3!>JP9K8qlqs=5VV zNU__ih?n+vU;}=!s+NQemrK}c@qqheFL1h??LqifD;+Cq;K9nbuidg`ixn7^w{6@a zYEc?77-SgfWuz8G&6C74JJ6_2g=%C7LJb{;XpCkPkV@6aq%+V1B{T$5{2UT(>~Utl zMo?YX5%vo+LlbH3|HP};d0NOna>{Bv?coeZWI44l+u6rIDtNbG${l#*nLz!s(`m<+ zlGKJ#VgGGR{`Sv2`OQ8B6>g5gIRuJ?W)IuT1<%?mg#PoJ~Ru%a+R|6lhEqc!xypjWJ7_&X{D zYoB9S%pJZuO8RZI5V$u}toIOTb@8cn7=<4|*`EoMlDauN2u*hvQtT3cpWUi3>k6)9WoUlOyD85K385jrjc zCu)mK&?B6nJUwrlpq`&~f_BV<`{eK<+dVx@Jq%;lG0;yn9~(Llj7v>LF@8KZL(j?8vLI2fkF5^GVQ!dKo5lx3Ey_s|5S%2$>X8Y zXBf4rbA!6Q0jA*KK$T#xWc$utF8EC9GolWwK;7-T`up2Sc;WByqtdG55fz^}!I9eu zq5yIf-ExC(n~-q~Tm4oPZUGIUxcw4jy4)kWweB862Gag`hbDSg0}>j^*co#b=h>j? zMD$bc@q&Zs6YG`sR==2YfbU=r$)bz?IWrex!-ahfAS{QVNAJ6K7^W#BwE>J;yK1(8 zBt6M(nBC~{feh*#z^;I%N_slI7(H6a@e}R!q>WWiqE%kwf!>j=eh9<2>Z~4~v&*D2 zpQ1ntU+VYN029PUN}xqtm7KhbQ{>+9F91$jjwADJl89)pt-3!y=7Si%Um z*I<(9Q&P7f;Xu_y4k&7l26YYK)xnkNY!nq%r7&+Dz5S?C6xaHU6ar9`^@d$pa=Q_> z96bw=ZH78Mrx411P=gH;QK4bQgeH@c=PYsK^J*2suh7pSr0S_{*db}>*|v`vE7*mwtOYzUx^DlgJT7gv^*Tmps8@h+Jg5rsukdU z@H_ZpkJ(CZEsdx5h>(}#sfz7W{?(VRRR+?$fkYKmx)V>#1Fy?*pE5tY_of;75T2We zW$2>eBa-&2VbN9k=mMp@&he4KdO(xB=rH*P0X?Fy=AXlxFq=oW zssm046p6|ats4d?xKmG~xE|TUmQ*93rSYomuN5u{4nQeZ#wxo@MD$FUM^rd*392zv zqhl~gBTty#0)pao8}nln4__J%q?e-{Svg@dl2`)^$#I`P zssFSy(l+a&&P`toL)KXH(Pkzd+hPS*fkWt`1589683Ayv+#C`!)(2v)aIV0RO$|=l z(3+F@Yla0aR`uE(^ncD;I?P^dA?1d6#Kx9yM;0IAZ z7BlZh9Pkl@M%&ul5cf5^Dha88OE98u z5G(l(Pk%yK_7Rq^I6^6@vnhqal)~{-w^J(aAmB*qmDG{F5?ebFIjdD123+0ClGxg@ zNjvm=xcV{TH`F2gMpB*HU08T@QPN4&W+yX#E;%ZV0pwUHGi?!(1}qGulPoEkw0)rz zP2oF~6=IjH#sy+n(w@;U!H6Q^K)7f`f`Of5O(3ym3EWVI((Fw}uy1p^TB}r|vjd9? zsud`U(TP#1s=pA42(U$3A9r zHevD$pB2gvStP$$IE>h{%z{X);)}&znt`1L5JetVm_DZiq5Pbuxl2bJR!BU&^C-e) zsa%ShOjdDq!;&g=VpjfVe5o z?3JhS4C^X2{beM6$o$w57v~v?ozFl#??B0;x3Z=)c8w&2QZfQ5#n*GEp1yhb-Q%~K zf*W^-+?n5Kfm7F}58dT=^y~E>x=Ze*pn!XBhdcA-7PTCmnqWzuI`Q8;j1d)j({5>V zEOx2HZg0X>5eeJ$INlfHfSy_OP!^e3@QAQjW_(V;v-KM1jk&DQT@H2y$K?KtIKASs z&$8$X%b;~$by-x=s0-tx!w*W>TvS$GQKw_X)eVV+45z#_6)#y2$E8?{9?*Qx7EqR zZi^T+IvbH0b8V6L+`d@bB3w4S3=tlyY)~yT`o-rGLe=?N!|*bnL~!)QV}Uwf+cBK< z#S~lH6O1nqWj5tv65f{RlNXa;JAy@+^u>~aOmwXr!wHBns85263AX!4iaVTSwcdOu zv9AQ*Bywzq<0P_UuC3-IG1N#Nj)U$iWjJ2-9L6Eu22lb^PGrgA@mo2Xb~;-J#`eeH zAhaAS+9cl0v%R8U8YN#$?SrQ-VAD%4a9m8)<6kC7q~PRJNbfqFz?z4Etl-0&ipZC| z8?WF|&xUPduD^$Pnd%KAIwrUlw<4~Fy!+`a21PYf-*t&z#}ME_X$+4r$+-m?iNbn^ zi0uUR4K;*+X^_d55lbBea;NA%Ad)a(LvgTEvGU%R+J z0-Lnnj?OM7*PV+Ucws<7oDk#Nj+d23ePK8y3KK2#byu4N<{R2VBx(!-SPRCMvxU!I z;?w`iy(AUDkVvzoz^z#I_UEpCZmN8`q9Kr87Fq#Dq2cE8;L5FmmD>U<9{JeeT3#@= zlPMr7ZWMi(+kj|mq2gV)25+4T6t&!sjVUPr3!YzaFAncLa69q}$2Yuw0rBEg1hz2* zYD1191d$7rtPSR^ooWo`Z5)dWl~sVWv>s$RFJCc{Ly|inram+6%DQ;}| zuyD|7mMy&fqs zHthKzD{%18pXYs$jG%25txm>4I?9;(*+-pV=*BlpR9t!Fc4pON({~SCKQL3feZH)I z(*NC;uD>*0_UNT2?v#NxMrPlg*FP61+dB5dJy(2Q2CJ!D0UTBADLPiEN=*Gc_LW;#0MS0@&mz~gZGm7 zQnDkbV0`67_LbW4xQW>if0rZZN7gGEx`%<)q*?n);0jh%59J#ejB zmT?b=q;|J+q-nI)I6QBGvMASz1y->&R*&AhsfD0@A338 z`_h98=Ikw#oV^=^W$@rGxl^j6s%E{M~!q%SWP{box@zj><_=80HOlMtd51#K2Z9?EQ@~I-2~)0_@4S+t4Md!lW5{^e5ClRGXexIjRE$$ntG_$qlpwW!lXQ3lq-^aBSZZW;o z8nLjKu}-L5GjcZRrnG+cI}F}s<*T)2LSuZ!zqFREZ(Hy-6w-1pdR>sZsZXRbv3;;A zif)OhyGq%r3olw~L#^IDT_kJ08#b>&p0lTWd;`yU8#b(|4!5I37Gzmx$JN{Vi?py% zNJUBu|KtK5cAWHkUle=Ly?sU`1}=S|)M&+pb=VNTXJ+IV(P>bJs{^8cUOdeAFVwAT_!kc6DP^X>d;1*hr|M#I*F@u|(#&zVO!V6t+Frb-|gE_VTgs&F}qZ2WC zz^OoOkgcx<8BXfbVu$reJg7%Z_}c4Dxtl$SuS1hYI!(@-uYHgZ^!`e6rUYTzdsyFBoeud6)uc z0k!tO@}m*F6gKf#r_@`E3kbz)iL3yZ5QkQ9iHAmjWV%~ z-Xw;Q>GT{f?9yJJJv5#myGP9dvJ3{i%9Vj%P2NyU^ZV z4QU@B!p5qz5M~tuFf18;gPrK3!2$SYk+kgrQ^M9(ss5y!lfJW;ogD1xg?YHY9?+Im z*?O`Oewyemgl3|782A<=s+;(6D9=s9dPqtWdn1c)Gdf0SI^BT=wyZF4?1a4X6w}N#|Bj@7%1K_AMEmC166Pc$ka&gq)0zP9N zM^b7a-E%E#qVqfXDxG)0(-27A^u5kMJN^FY4-@x>kc~B2*6!Sjw#Fkzb{=kRYuWkK z&ckhocOE?4w!iV2wkLPC>~7uj_dbF^952$tu$AJ%U0EsTaA995mR%DpIrxSgmH>Z% zU&sW*+wgTv0_jMo zoUQV8vwhm~Nh}EMp_-kB9AD-I<`4bptf^7!ISE{Hs()asr`k2=A~~dNb@pLC&!wtq zhgx>heGDpP5v|W)rH0WNvTk_#O|H(zaDmn7bu7;wJMwzcNZfo%>d4?%x6b5kyq&T! zl$9SS*gR9X83~SW?hIx%j_jOIg_L^l2NfUW238!JPCXn*JS=M#SRxtJ3OKzEgo>J5 z)~^9Km_O6boNuF@q5kQ0>g^F$MqcSK{;v^7+0J^GfV1u2yfIo(o-jBerB?=`Mdn@lLWx@<6geG=%LW6joPDrcm@|d0q4Ky+1U(|@ z=n>;_(&9Xfrr z_8LsR4ob%K#v1Jld-bs>m3hN?RPyn9ROzz_L(uE(?DcOI40pV(RfPs2y5o<9TsEe7 zSbYRf=eki$IM|QbYYF>G4MEeOA3myG+I~W@u&N%P@-kx;_QNtV4lC2%Nhj$>DV2o1 z@(`V)AQOllMwO>!k=$b`{;vzEjo_YmoO0tYxhzMjy1$I{J}r z7mRX_pf}HJkvC7ylUmirCgs zqbL@|W60#RdJ(RXOP5h>5OD*OMqjSBQNxTewk@52GeWs|gm%C#ZDX_A+s*ZdwJ0xm z!CKmgt_Ad(wMgI?gee5w1e{C^9tyw0BkOQInsr#)b6Xpl$Y@(VAl5L?l_pLvn>+Ez z)3DXB!C}Vd*t~X;_#B;v7y#6bnDxe3}`J8VeL#-vm z6gEDl1=eMYQBy)pfz!)fq%qYAb4l2p$!v7@sZvOUDRN8*Gg4zhr%8+^&&zTsD~%+x zONT0>bd?nr-h3|}WSnF)hZ6iwu{Ts&A1YrLDq9m;xdGXgK3bNr7PhG~?z(&Fj;s{{ zcae~uBAlsCSh|hcvjAH_Y?nh9kFF;4JpBo&;T&B2 z%u^LL;rU!l+b+Zqe+7)542&^2Cg=G$Ub+lxIHq?FABu9D1*pYucE_wl8WE@CS%?Xb zIL

jD6O@1RouH0P$WO-75MNp{WJo6JLS_?1J%);8*B(G!5!akM#lxK8u#I&9`WA zh}32-REurJDb!1vPt|HEQ=-Sn;QI^XWT>*6=pN}^gwA=)fdA*L9O$D9AuH;2aBZZp z$fP2+Li8a6YBOk-Z0+i+MK)s-GV$NT{-*{6TbBVl`38M-RM1!K#G-&F(WwY<`*;}p zS}SEp&vo^lBU1rU8w6G-2N6M6=SL9Np|f*PQ;eg1L^%a?DUJyn>xIOL)B?jW=pLQw zE!9Tlr7A;Wn-U-zlq*}bxCe@&0#U4c=fc%fDSFLCYu1lwS_GV=P+ObPFA)e4T@96{ zgsff+Ihy5hSR}HrA>_iG*ZR4CM1<-#ap;!Ki{Q{!#JofDSPLla7M7{XD=|bCnafzm z2~B*$Qy#HV11?^6+}jYJv>e$dX=_si%i#3Pk>sB|NO3GLxt0`2tAPa=vKJ;gmMs@4 z*1Z(`{6zat_!Jh-#0=U+o_GcP(b|c>=0Uqz9`~uQh_pEI#lWg0#^>sa^Tl<=N6VUo zyHT8sx+MR!7;(pUCHoS5iQS2?K8c4tN^+Omm(bJ<)G~=ryQ9U`iBhJ~)n=!#{;-;`A`Gf2d^{pr!dg#xl|)?h;rP&SUN#zqqN7%5 zehWw1@NZ4HfI(nrq>238pzkD%U=1h7sebK3jpDE%(V{S4H&)fxwONb|tPHC)Li&&b z>CoTRBmp^dAhCfJ!8wF$7xCN#j8MyqjuVZ*F~*g-W=iFBUn1(NTr!JLKWn)xP#krESP zOK`uiP>KJq7^U|1wIDIQYT}Eu4TcE(rGI4t9}bedFFx-&Z)Nbx3%Yt6jdFUdut6wC z<$@6*sIAoQK@Fv9p22fczckNk@{uSCAcMi=TxFoTj_z({xhxSU?Hz5lf+H2yb0$R| zzJsAh6)vKj70E0FL2yl}{atmJApk@5epqGcVgRe-g{U`iTEy0ca&4vHV}q8r%@#XF z0VJoRN;N(UH%v2%Wj7{+6b>PR@eu~u{6cm$R&H??wov_DFAD#pz%xFlosSZ)0aA2t zdpqqrjHmtxZphd{H?3K>$POyLgx6!{5{(tD)qn(^OVGPoYmdbS$6KPlRIVZT<=}q` zXz|!_e+;KEt&G#MvoP!_{H2!r1avT_zQxkjMAKe=3;NA>bXpv452U?Kk0iL0*sLtX z9>XkEY%Ye@nWA^lPHI?Xc~B+;tS4PkrMDCjs5o`26P3?a9x7FIgyc(q6)n^{*cWDp z7jF7zm=t@Rl@uEkNm2Po^J`CridN#!{!pX^=o* zW-a>|V?Jm>da3osU!=EMOmD(jcq2LS=4l%IL>#Xo(JB%?W<}h_&r!EAJ4T!%Nh8T4 z?vZ8Paqz-Qd`Ev74n}mxmt)vvybV}w&_#1VdDZ56GnxXwIK4--t)nTY3yc!2zpth& z3S){2;IirzLlS;>^OVb!*TYKMw4H3+Q(_wWg9a% z_}G4N1WODEMorf$?VB=g=@+4PF~`r*yZmCpqA;4@>SM(A$J<~`9F9M|(x}P$d%DWH zHm+=NG!A%;yQgc6E9K@y>60;+`5RE$L&!-+;uUrg*PTm*vph>!4dII+!~PYZf8 z(dxh9MD*WU<9lD?s52awRVTHG&kv+D$@_)V;`B|Zy@nm5@ZHo3 zEqk13>vS{@f};eVINHJbLtm3vTk)23B3e9zL8pdwHVRP_oTr@MMzYx+th#H?uVW@) zh zsXZSQ1fF{O&x=3IdnS}yexu>LJFf2t=5G06$*RewKuP1&%G)K4H!FiBje)$zJNZR# z6>m|Yb&F}lZ-%Ssq_1}Hu`XiI|fzA5^-j?a&1A)8)KjQb(C2InCYh+L8 zMD^xjPAYCb-~3c3Q$qqtGYR`-!T`C39he|aH9@W$VF@@u*JG@axE^ooYpa`c%x(^I zCs7?v7*&6(T~ypq>OZBs!^&xEyNZq%Q&n{Q-Do}j!;+0t1A&rVH(v;r>KKIrL(yDe7>} zC7jpD-)TcjuOR)c_ql?+XbuN5tLXCnOZz9vrxI@+3miW3{a^YptM!M4#S^YT;p)lw zVBzXO)@nruUB_Y`de+8O+sJN_gb1teVHH09Ch#QX?y z5GloB_F%|O+S(KuDa4~jyb?!EpkMQGjEI-!;@Cd_oLgDcDH)?CR*40CKSj7){q}G1 zPDTe*hn+qB^Ff)|iC0>M4Z+d}tN zr&=LkG`7G3U7(yx(7_QHw0^eBT;AFl{_N(7yo0!hdD?+Pc|68LE$kpVVkn$ER(SLa z9P~d$t&rQp))G-)YA@A}Ad`F{W5SH=3FWVNtK>?_$i7foZXm5BRN)+GEp?Wy#B{ANz2zF=tTxx zCvo*4#{smtX}Wm*SnL}qcdBb=t9JyecLdTaAH;(`4-{{hIz5xw7^-WUt$Q+9_hcZe z=1%s?v1c#0U1|$dY@5!0Q^p z7kHy?$5_)$R`s17je+z=Y1G8iGZouH>*1qXI+MOeZz5tKys_eM(yP(Lzez8)T9!Gz zyaIqMU&EGF0*>WtP-s@+Y-U9;vtl-LOE7cG&GMPd9d~mJW^=28xmA;!Zs$T7^XNp? zY}up1vPW+vOqcDsl5l6urr9-*2iH74yXIhU&B5`6nY_9MK;;&XrQXdcf$wSdn$Vi{ zljq5)Y_>QRS&EoR+<9%$uKtieS96;dHcO0mY1yaI_INJgX(e*fevPwE40um)CULSv zTI^E7DPqnhP8c74(PGyNi(N!_di0PpR9y1$vb3b?JK1^n;_w&Vpt&n9_h0It=zjam z)iYC7!OE?{oNf0~_{{CdFS^IK@1;6YGw!GHs%*bADPtn$o`ZiU%O1#Ig<)8?&};ZB z2f0rG>bT#66R9C~OeyPTLw5-k;>l_*S*b$SS{N}NcJME2%H?!WnFjMn* zV0jbVnTwMdQB2uthP8_jNxOP+VQbgwpRHXMFBpxc?2fZqtzAU5*j^TGw#=MG+djj# z!&$@L_9VUSchj@y)3fH&^XJpO^9Zk;zB-t``d&)>vef%=N$iOvqbJyM;~?cKJ@F*Y zc8NzcI^42N)!HrD2gaW}vK-OcZ?s<9^=UM-K^?0|XIlLLSC1UgX>2{FRJ!q&S<~`i zrRZ z?ywS1qRLcHm{fJ*nq5FMxL;B8WnG!MObi46DCfiSI0_H(=z%pT!M?=8MO5BDLYXVt#Yr}5N zK5j(lU?U}aT#I|>xDNSbif!;BO4_GUqh%-bS5(!muU^}Cz90C!;6ez&6@Q_)&Lnh_ z`VljAg#+GxAny+JfioM1CseXKAfL)~*xJv*Pgf?-Wst9A$b-pSFP-5I4)o!Sf>dZF zDKa!an0Eyn67ZP;NStX?%ffCMX|0pnPZXEnH~JBMbT{;)1ywkJ~B{pG3-slS-#Q*#6bl2jX_OsqDvIh1OHF`rzUfI{Oz z8ih!Uzed$U-3m}QHCX{-KS)`1;%`2+;%P+uS69!8>aEry1y;QkmAd+vIZ6NI+t#$|n(fQ%wNT~aQZ?7XdJ$hQm?XggcbCd@fZiOW;1GhZ)c!F& z8-5Irg*%F8)lQz@&H#^1dWYQiDK=Y!&Qc25^pgR!umy{V5nF?KIdUCZfOAnmSgH$J zXsan&L&AZpHt_-qD$|0lA7C*If(2^WOpUw;$N$_{^v(*Xm!6Slco3H1g)I7sGd$l+Ke6X6 zx=KRZ0X?!S=4u89Z*_iVa{?bCI2`N`mu?UHc0{vxhAlf2X4~squJ2iNB9*YeDdudx zbIpXHi}iFKdaEwcN>=FWYnTk-0~wI;fQb07hy1?ML3;e5XHL(l*yRcW&;XL}6)Y zUue^eX|`NYZPnix7gY$pUuFsM&d7ev9?M) zkC+3r^i$VXNg^*x!Bf{(#oDM?>xH#ZJ34ggBN@22 zZo*?Ox2ww%WtG2lx;HAOJI#pyWZ&DU`{OJf!an?zE?V=^R;txHbP(w=%5y#4-bKa{ znjqOfeVuY$kj`4=7qWG5K+8C8jD379?P%qgX}^{@YT#NbP7KqX7qES`PmLKY1M#tE z7->o05-?H9MJC(O*_8G{GA=XI+0>HG=2e}fv1#b!7`z*kVbEgV!EHbr0@;YI*+f0L z0SYc4STLUJxi|zF*06#vXv0U`90gC&hnfZbIYN+Q$tW4Tg_0hapo^RxDd$2tZ)B)% z=wc5Z^8$134fNuE8thX@5W+EyP5+1*>+&1co7P}&)b5|sFJ-GNjvITf?}?iWBj&>3 zSkzoIbAH~uIpOps9PT#?Zx+TKr4dJI=s?s_KV`u3WOv_ozg2jvFl?)wx1E{U{NY34 z+FiJtbN|KWzufcFJ>k|fVdI%!tmUYz`L_>+&6VK0^f{l{Tv&nhIbShU_!o2bs#SlY zw(WIl|0G+DFo~*31Ms^jw{q(&ZvuBG-5&x1X_*U zN$(4BCxDSLp~HVYL#O>Yb`J)HzJ~-F$pMdcLO*y((QO8FDRQR^_Iq-78f2M~_NW_GSEiRTyTot%YVnE`eDH3h|lGxTqC}dPLRd-I9E2L(?S4`WDw*J zXbqAZP@Mq|iZgRa9Lze}KPz&4^-fZ&<%#J_t)_nUr{e~|npPt<{qpo(`~kn(0oq(mHHg2Io2{s4iY$h%ZQcZ!O}Q9um9 za2J+NEO$U}&JCOWi@uV#I&XDO9ZlG?r}WsFm3642rTfE1KXyrBV?LI&irO$h0v+xZ zRlccZs&&y;HRFicY7_O%5qr%&>{^?Hmtyw156{f0f3h>S>3G7G6FhaZ^D`)60erJ~ z=CL0gjFxo##Xz{^!Rf=FcuGFW-?Ug#3(l;*jdon6?X=@6Xjk8D*bwp7ev(^9r}2$< zitps$IgTC>R-d4lMJMS#7okCg)z@;<5UvT7O`%ya2YP~)Bv7;Ob<`IJMXLfF;0 zl43}^Ln%h%xL%-A1|>yXN2Nf^$JGLrQeTi3c$8VV#wFNf1(oVjtQUI4PW2QZf%((| z&|29k?-s|QQzmna(yAiykXTiWSTU^QMyx8*s-Rp|@J1WZPiV2SXqD3TfB~?|nm|U< z%96e&5`T=Ee5hDkr00;o>LJIK&jIuSm*d6Wl=BbklzRNkyM4@?OP)D zQh|mUwcjV4>OXQknc^Q;Q2YhEMU-e8Pl*oA=WkBm3eGM^3W5VeQ9-4Pn zeBx=m=PM1hh9*87i25G*3scy40=Q4PWy{cZ-TXrkVc0BCaU z%+Q_QJEuTy_o*2aas4Sqt4}jpjSzykqPVL(;wlgIe(b8c=d7DK5py;snm2`A4T})( zIl^TvvuC5Z+fWxr{d8->;|*obdukHilDM}z;>F7Fv9}I&anvuhs?kJi5P*QFo{8H0 zSbZ3)-A8*J@gkCh)>o~9|6y!3SUMdJm9*?o3Db(9%j>`_>%h>NaD-%-pkFvP;^Pg_ z;geq(PbR_X*m966HHn}C8jutW3c6m?yjp^kGbm-5VNWNN1Ev{J^2aqFXx|rV0m7E? ztQu;MQmw{~7ihgsxs>k(c27G2a&(1f{e*k$t;P(@aMwSU2MPh5Yu;2tQkrM{AWjN! zx~$^vA;1AJld(TQ4}u65GRgQZz_1IsN9gGfP!`OUW&B~R4Ev5x0V<8cTp|*K7r?)8QSb!cC{6c@IWB4`O(FYNpH( z7JF*$Iec+PWyAp}@R@Uo=52Eo5FKY9QcoG~?mZed9-T78jD;chyM=ET#)|hOY&lcb zFITOq?8+}Opgc8n6ju%UgFCcGE~xXj@R@^x=_o;WxWhX*a91N&}9u_NoTv zbhe&OYFx&!LNB#9{b0tDK%00WHSAtA&tRW>NJYCMtTWhhPw3#zL3%$*dlpDWos*nNLw>!*~WJUxtFikk-=x?^;12 zHx8IDNUOEfSeSxhjUauN?pYg1J5rno>(lK&#WtZ`-VLL$cLbTiG}ewYhY>uP!M+hs z0v2kI53JH;$DVK8M8KQ;_4WNlz0UQ?`t@?`K$b{)xFY$)U4EZVgI=sN@|Sk&gDr}0 zBmyLs4qF4Cd@tTzC=~DHzi{tC6=m1BbOx==X3 zDd@l;tm9y`$1t9H{W7`aB^ku^?&nn$lJ-(Wnm6Kq8chL6ti{Y#(4H~K{WAzj_m1aXlC&m1i4*v-JzBbcEG{H zcgpXyMe`nrZ8j^6PL9;^E=jfoBp$O4Wq#`~51A)D2W6*BlV zro;=;1z@XT)!st|?CBwk(XmWs*UKbHV>;TLaHK$7UC8||6^8L2XQ?nun!+R}Or*l3 zz<*6eB~F3U&|QdH!$o(r$K^hx;yZeJlFE%O1k>^@AQAuhfwL%hfE9=5YI=C=6K)P! zF68m}X=ITgu{}bBg$yy~Hp-NVqhSv(*KNT{;0)~|QXS74NV*0K#@+z3h4b45i+~f! znu#g+!bi;SQH`6ZCVxtIxpYT^OAr@{;vXv3@IodlGbTfA-Ne!aUX(oo?!%85HWaTp8Jg8|3brc23bOA?ko&J(X}#csSGC_CaTg^EGkRTXhn&E$RTYFWrBVXjs7%^jNCi4q)F?^WMxXr8T) zHasxbJm1jv_V7m~;fkXlok&#HzI*lUtFr~s%01zV2bMCl<$JNQ(dO?%$+bBMO_UKV z3Eia$yEj<=R_(3YH=+Nq`DeLXLao7);E6ZO=X2qiFgI8So!_+#ojYr)1KP0u@~IAB zA1vB(Zajbe`A`mO30;iao5Q6$V$Pk5joW{;Ilkke$c~4ijSo+EeC(>bS61_G=i8m} zvbIQBTfFROr0nSQQN+8mE82K)x+CVQyXz}_>%gr8Zys7v`K)_x8mG0>UGQTP%Y!?_ zEsJ?o;p!9N?gt~)4@UDI3cDUkv0hKQ$W(OVQU%xGs$&T8L# z5U7Pq8h6f~#nQ?d?f19EOSeTzw*`$$Mn~?RPkd#eu9=G2(vN+cmvWKc+D;s1Np(q( zYG+l%UKO*$cWCa^(JxmXRIBo~{$j03<*#2+*>d;XEqUN4uDQM+=f+#RBCTEF2Tr3a z9#q#Q>KbRZK-J>e*^4;jDsEGQuP^Ygxm5nrcu`}dsBw17e9`uVzxdtEw=-upzGK7Y z;9kXs*^SYPEq6|Y{k#8psR+sc^O{-ZtHE(uPQfQ$A5zLG_-eQr!}-Tf%K^3JPj}=T ztkC?KBlCbk^O3=HuvGt%t<`q0Q2*0HJ%0SO!gO$h{-@1qgq^TBWrvWAD!xiHlBPwf zO7!m#(V^fUX!&Ns06Y*U-^c(rBrp3KUURwv9Jew#|nN)l%e4oC33OL5qB4i;ge zheJw<5lNuu5S36sZUBBrL9s4zLp{Jj;ea&4{TRjD1YgF(UVMRB3n9ZPU_L`&8wT>T zJ%8%?uu(uDr%c6+Nla+Q|JCO~E$E0UY1zz&$PRm7h$86#r!Anx9gd&DjN>4R9p30C z^ibc>6N46DzRnP@2?t%p_|hy3Bq1_G`gGwiDDziJ#hQ|WWb#Qy%gR#198NvC>+AR6 zFX%2vTOGa}6utmv9gMor7V?2uAnOC0%--Q}iF`z-Tq4^B@vXGoAoOzifJ=<=fn7`s zhjz3{WY;-(Qe?YJY!K zr?l%#1DQyv%5LPvGa&jaf+=Q-51G~{6h9SEIU_@6{0ymWdfy&1e_(R?2`(cbf42?VDDfkNE1Rr7zNFxF52{uEPa14XfkQkCWQcR_f zdZmH`fRE6y8D1%1gLoMUWy}Nqp`ihmfzv4DseDI{WT0*^1fE4oiXa69#z2|n6&#G6 zCyWM&9~m$k#gpsoZ#{mnK^A+qLO^?wDc6obhgR91qFoWRZVAk=_gPAlm7!N~Z~ryz z-6{2RavN8PjZAPPb^a=9Yamk$j#Q(?#m*huxQ{`5pyA|nL_83n$54xc!?=PYD%mb{ z?CIyIk`u{DDoi@f&}hyAYGz;g{!1SBJqc%#YYhmq)I`pV9CLTn_>j-Oqg!RB-IkeLTm`qVW(Zgh4@x zRq|YFr9#M0n;$k3c(|CW$t76VHC!b%(ZO~gT=jD-Z=xZ5ved%D2a;zfFw4&X5RE~5 z$&Jce6^SlWqR^xR zLsS6EHmI2%AWqqOKz-NjU{weiLRpIz*NvmsaS~e;w^u~$72&#_bEjc97quT*gh^h$ z@AC|uH49~M``&o;=A*AY4i#5xUT|yZ^oRR@?_kWjdrGrdP#HWrrHL7H6E??`iI<|Y zl}8BBa_m~A6E~&Yl9yU?Bqiy67hDBxcLYkTfC}R2DtV$}ekj@KJv$1N8jkSKn2MER zx$4H)PI-$#&5rX0(!gVhFv1MA>>*^?>&JVz_5=!$M6E7?esEXCq?o0`Ie5Zs@bB$M z+4}uLVi>X;L<}C<8za5p0T`M}=>Rb8Yl}|X)yt!Df`l{9z^w^*PMHc*`<4)1dxdtA z(&lG%O3eXLB&VS$F{7U%fDlmw0@>leWdJ+8<*L|jv@i_Ihkd9KeUg$DFHsTl;44A& z1Tm#bz;d%R!>?BL@-;Ss!}q)q{{NaB8aRAjVl3i z(YQ)idh`O6QGh(ii44)O><2DMXav=KxPIEZ4}_MdeE782KRhye7PJozqLBgE00Blz zP6LnO8jn?!>wgl2n)ioCxP5$j0)RO<2H+y_9RQT9vw(8LcT(k1c8nE#fk=E~*Yn*& zgHHU6{BXfx3_%RRrn#QRsL)+fI&7sOrsN<)`b8G!MlT}v0Bnp0fUHdI#2YvB0LTE~ zlDpD;kH%!pGT;2W%H3k_UO@KqqG5G7i5H`N`=FK()LV}{-)DhRic0dv@dET8KbV( zhhm-V9~tF%$S2mmmBaoL5h|gCL4OjWBp~Ps`SH?FVBj3#HWTwrU{LU*B=52?4HYde z;MA{k_@+RrCn^J+UQuVMP84HGy+&-9B7PcVd*!0c_6BX>YUOUH1d^cb3E7?=iWkql zbPNqi4jQ3`wI0!qkG8j$t3uRAKv^FHm?6*$N4_TRSQYU$k6_lMOR@b)pmQd1Y9;ij z1l(FxNiY5oCknQ-ENi-%C}mOK$J`e@eCIzg6_p?o<*{>^ zw!H9`>0>ZC%KwXJ3ULKT_eaJ|^G&u z#}ZJG02GQiX6C5Yay65=s%=FEy+@E=Xa5x%w!&@#5PEENgo~1arvd3stqL$htW#KB zF9E63Ki1C;N#jq%a3%Tsc|dJ8_=V)E2C?S?Lf&Qayn{a`XiU6 zlt90P)q=fbYdGWz4gOYnDNK{N-~dTV29Tnomo8mpl752gz*3F1l-22~fSd>ABLxIF zZSR0OiY+V6Me)Lxk2@G3iomx{RVDvK*pnv3g&dr1qkGO??HLGEVIk!3cROtxkp{!o z1jR^BpYlm{ox#Vis-y%etHqL#w~vnA0T{c=?UIx|HMEd*%Z7i|XF|sK8lRW?j~z}< zf0QVj5NA_0oKZHjvX!y|CA;KELY|{lnO53WS~f{sCprgw3BS1o1WBh<5j+^P3+;{5 zDIN*rFEJN67n0#O1(cq6(LMcNC0Qt?uSDj?dalOVtZQ7Iezkv}N{5TLbtj7xd@asC zXcyp@l$We|Ad1PDCrIALh0fI#sDxKx&r4`kw0Y*vP;d$XbXcg63z;0rUYIXeCd-As z3EbPmaGClRheDD+ND*C-ZDg$|7k57|kct*#5J)}qM7@q7H_}%DKw!*LK+q3?>(3E< z$_qDN2n|O)wKIDoo<^LD@Gc?~#Q+qHSqc~31+NWE?S~V-a9;g9EGSFh!u~gH5PjPl z_zsYo2pQ<`pLGCH&X=|5g0$?`H?H=M9J0K&ORg{U1Aoi zBpv=uwM+%4RD2Trrthl?d8{O{J+e)78#F&L(z`~8y&@T{$3 z0a7@`l%^8lDaC5^^!yDCrmaZt7Z^m}d{q?wKo@ zdu;Alxa$;_x!ebVf}_iKFR64nZZ>Mtu=|8`gd>A_l$EW)d}$Z-tjoB+#N*E>YdXL9 z#Wz%+YYYxPDK3gv%)O{MMg9~~_@^u}8kC?<5Ae1BGyEF!+^6=7ltVG)fQ8lBZznKY27jp_d?HO~D;K86ZyE5refnBoP+9xX;b z9K#Z!KnK5qH;hK4y2<6erYdGRc?j$2`9~@{iI&hW?mU9D3FlOVdS`U;s%?>~ZQ;u8 zVdsvpWd}cNk%x5AJu7)0Zthod@qkC2zD$3CPsg(5W)*#l{u7mow0BS{rzh?#i#W@| zmNHfd?pt`CWO5|6VI3=pd`^x#d_l#^ z!3&%<0sm+G=6I-WraW{QCyimd0FtNdq<>k#(8a$>!4gz3n_MtpQS|hDwZ3HSGc8Fa z>#Vk>p8K)AGOd?9JQ59ZHcU9`7a8u0qqg8E-_%3GR(eLkA5;E&a6`CBW|L(lPi^w7 z7>uTx6<3zYx8hfucCHxIrgDfKEw;EhKVr@gUYR#ntQghS=2ZiNC7a4p$@eg&m^4dh z`m(Y1I&NsJ36Mzpuz99&$gcE|Na?gwWmAH5My2wZSh|h3Y~!bd7|?5K%*1kfa8Gwi1T3*AQ#_VIF)2HI%cL>+h^np8*bH!1j^DPT$?hv_cG zl_n3jCgs5`poI*WG{bul88DGfcd%@F$BN3}vb|F?)5UO#aEx6Vv6nKaB7em0XE$XL zd)cDB0I)?HvsP7xQrnWsV70BE@se2N8Dya7g_eKcUQhy9ai5@)B9s%`f~B-px`tvc z!vY6259x9#nn(Y&%~P;s(o?JGsa5nstL(N=cl?}!H!wgxvOue5?wF=aw4_`@_IF#?NR_pHR28Y*raiDitP!41FN#sz6^pLV@m1I`v zCdI)qI9a!>6?Pxr<&y0rkY}mO*@fkYCSl4Y+gXZ)Uccb)Y3=Sld2sKk?)ILx_9N~4 zTe}Y)>+ETNXy1`jUAXJwK~?_*N%7`o)Mi+@evKZ~;68~AQ?xO-E=*Tzuo)0`&|xSL zQ>kYg5t*$RvHTqo=Z?kvVgXSkFxwW*-v&RGi=M*Z$XhSmdSO-<^=t~;H?dKkhOc17 zdx?rPMZvFA@K#%5YWVKZorAdzd~aYg-VZ?IegpHzVPH(E=^K_a8SHsRzY%c9nefSBQv4<#9q`}5 z(y-v(+;2&z5*x5Sg@MTF0-iwDH`Hgc0yb>pZ2>z%d%%Iv5y(cE9dIIa-X{$gQF=gLVOp-`De8~9+`>*()pl{(O4BgJ3!GMe^juW=asnO<=Wpo7c zx?@~d|HvcVkAW>_GA!JU`=L69NAedCFeD%M%daT0ua!7TnIH#gu+mLciS!C$ywuDg z*+85g);z@hA?kgdpJ&I*Db@%EP=; z(0jgg?4$r5YI&VjR2-)bQc5C-5(#+(Uw?{1cdd680r?VNV5UnexQ63v&a#8B3H}k_ zRvW{Oom)#;QKz)h*rOYi0%9HB%9iSaa}jRzV*jvW9M$7ogmfjCEgAPDycPmbj5*k# zzNwbsUP+!yTd<4J!sL1{%J5%&3d#9O5=YTsW#AIbB?d66apVDU>cEqOG*QT_q-fJD z)xa;dwd6snfkeBK?HV*p9$G&P9~Pv~mDI)qgUnTxd?-ZXV|r2fP@Vtb^&dYZd<^S0 zW%E^)NU16z(-@lwL~`?pJh<6edLIY_yJ)48*a^~dNP==mgL5`)mX)29_8bcKPb(uL zil;3}UrAQvWL*MT3$2svN|wAp;Y$ZQ4*j?m+WK$6;=!QE!yvPNGCF{4(RofXl~USo z%61sg@t3fTpi~AdfFx`r+FI}>f=pIMLKIc0*r!t?0{$BjFax5tHKF(kXcc$vy_HjU|)6WHdtJ znCOB93G7Q5(o4p;5pgAZSSC$#@Uc`R5zFixD@_`KJb@G^QLiuu$MO{;PccK8HCD%1 zzAXFaNd_ZuP^QAMIkU+e^AW7GsDMss$t#$@a?D>TkPPNAmY~uU$=#=xd{p)4@uLN73NvKbS+RIY$-dL0Ok+*_I7DKc^Q=VVp6Ml9Z3_>tMLX zSg2)+6hn7&e}mb!kSnTJ^LZ-m=11w1{+ zi4!VDW~4J+5DdJtFXpU*>PXn%9(8ww?H%;=sSh>*kc~av6?Fp(d3U0q1Rh5^6QvC# zF7)56st;Sr6S?^SVlJ#+Q8}#}rZew(f&BJi#*chIxf*Uf5%Zn|%o!fl#60!)@=C)M zt#dVVh2gT}(YzC3*NJxWmPuGYWE4ZBW4*68rTu+vrlgGZQp^xnDca}7{C zIic<#?UQn7wy4zk`tFsV)6X>C=HYvd;u95LFvV6Q5|T8Vvk|5$1Rl+3+ydFw$#fd6$?XDo|W_*ZfFlC zpzE6Dj+IfaNVzvamV!3LTOE@Y>y`HWinp-6hfpwy(pMY#ZXL^pZexJ4MN*IMroQ6t zp+vlZkdcr78$ZX)QXJ5=jg`b%RD#}tk7-EiOT1w|`52Qx>P2KFL!ynbrmv0fCq-6r zuOT_Tt^7(|35o3-mFVwL1Z7XKZW=2~%DEx^@SLE|cnFDLD{pg7kImbP7u{vy@@-M~ z_ON|>!jTiseK_KH7!MQf;!s%#a%6Q?1%jLk8CiS{K;GpEcgNhw+_{fh!>&#ovy!%( z#*xi;s&atQJ?qq8LE_0o%jspX>qsdtiG2kX;{KedG23x|51C2q67E&B{bsqxaKjI& zQ3CqK;F(lkRZ@&J>=RctuHiAPxKd^l4$xd?Iqt#o3p$Zj6af3}fOZVIiS!31pScVw z2r_3`G>~2}Ksxj3?7J~+X;7n{bV~J49aG7aEf91e- z25w6sVe|L0)wV$t0}+Nffg%v@Zx5-cUKBP|3VUyX-mwL8g@~RB=)j{)-JE+4-;2b| z&o6l^Xy~!xlwr6&gBvskpF=fBoa7DeySX!wUkG%x>0OEZqI+0K`rqk}!C2_(oz~xe z{%&R6&$Vh_L&9H5CLqOeUrWT-GTU{hdam_{wIBOBVBF!O1uCcEo~M9^Cxzuvs9CN1>I@eh!vOVSC~F+gWby~iH;n1PEz$dwE4x@cILb;NkB%_Ehj>ZSTq@f}{9kXxE)MzOe9Sg}*NobfFG>nGOl5xU^5&|X|K_`ANIr0N&TmBT_ z=Xm^Y(>&j&<{_b~*gU%2EF6R77OZ8c^8E4K+DL9~!s`oJX9B-->Ag!cJ>i{4!-bt+ zXf=86WfdX|ZPw6CWtOZ8c?Si5jda-x@dQ6LVFJm|L%GMsiqcM0Il_0SfCs67#Cv4N zZAB4VQ3wcy)r%e<%-_(P{+cyC{^Ez1*L8;Vo-22iN{6Zx*TT{*7gAuID+{NQ)~xjl zzBJ#e(87#0N$D*5iR~y_oxhScvC?dUuvU~BN>q1PixVp~h6$|z>`F&hLERrk-@0YM zfOP(V>GVscy|UeoJil<7u1aUZu85&lfCeejBV~pQZn2E=Uja6sz~Z$%X7Twrom*-< z$7+uaLgFDvh4^ihD8Pa6hLn8xMSyq>cJv2_#KgJqT39!c96wOxaq~JoW9KIf`s)`I znTc+R>k)a`yNI-48X@@v!IN<}@GfN$_zY3jbAy7#a8J*BG^$=j9N~#-~ci1sfl=MW?E+RqMn^$`_4sJe{PR@H%}b| z0(CsMF_POjn;FgB0WfM8AI-IMsvYCeo)fo~Mr@^_tMj&|L}k;oK4ve&x-)g;--BtP z!@x0b${Z7qG|3o3{ZAp_+t zgqUI$sW`H6!~Fz#aleN7C(t!vF((y)bu^+U#n0D&qTVD!HIN8s;MpH!`gT}n#mSCD zq>Cy>|9@%4@~G94<)5UE#Ktl!?KhB$Qg<+d-|P3AGX{_jLTRni>tmuPx8wWAPkk6S7ZY z?0<%rW3JReL`T;@rD~PqH6Y`$!!Hk=ig{`m^Q*%ykmrBNA^X2kMb{m}|2Nb{tXE5F zz35bYEGM;I>`XpP6)R;GTlAELx?`T2)M}N54nch?Y!{r3{VCeA+LQK_p2?7y6C>u5 zkapYL38c;a14_iUP5jBdOa_S|;u!J!jN-8)eVPg!jWNZM{(qpK{}BNjhY#=!FdgHt zvz!*H1ZfIEduCaa3y(;fRlD}As7g)6A?GUnSvsWFn(9OQU?OCypEa;QcLJZ&ucb`2 zse#_$&&(*qEvAMgg9Q$dhL=?MGmA&~v*c5oii3Uhx){VwQV)1?-dw(_u~^+JzD!fr ziq~e!T`57F6@wN(v(%>T>y!yJdTaB~v$WQxRfnWZz^byF>SG0sX9NnZz%E*L(Mqb- zaRfb~tZWyw!LM zQ@k3A1SW-7taW4XyT~GW48AYKfky>llwl)8Cg{l?6_g`V67+F7@&+9YoiqZGiExRj zE4T6rXlu#(M2=Uj?Y)5_DQrt1-Xn<-EY!}@Nh8Jp+zB${*MF~(O4bcHBIe=Dg?y9x z{eSF`O;?=Mu?tg|vHn3cRn>Eqy=4AZgURk6r?7@2JyS-a2`m;h^Ooo7ofY;Ax}U}90mVGL!Rg+ zhP+Q@&kt^R^#$^Tzy;5R%QlC7TcX)p!58Vbpr!qYU z1MUIN-Jb!yi45Eu129^^?@Yuqkq*RF9gv7Aquz6v(`{@_GFloK>SL$3yrC1uEiXt? z!Uysu&QCni$|DN)2cCEWC)GnRev{gp9f6bf7Ec%@!6r=PM6+mS)F@ak%G=O7!ES&* zFIO1#vFPF{Z?Zy!c(^VccAuqz0>e(G`Q3Z5onFAh8f zBmBU?$Pnf$nMEcy3fqVEvX`he4*Ox_pg4$U8XA2=q5&*s{7@f%>YZ9_;Vhh24Ira$ zA`8gz8JHk2wq4L2kebi`#1lzHc_NL~*}r^=llrmF-!{}I_aWvD5eizg&JR=p*}*Tx zB-1VyyQ<{D^DrP$Mjz)<9Q4ccUo z_!j4!xZ^M3oZ>w-r^AF0nN7M+Vxs>y#2&MtBGUPr7yBy)-iS?TF%Hu{wiK@40&4LY z{a-CX@CMixEC{$uy|AzV>yzJ=>ySy+SL$lcfHI^PV+-Zrh1dC14lhzfIpCwHj7O~u z=Qhqf9dxB|s>5f=3tu`h*!yTvxt0h7E&XZEBn;rAajes z6jl(Ahj*YJJEruB65z`hC34(TnF&Ysb>6uKiw+6Z0xGd!;2pp$ z7=fjKu?IwnBX|jE3Q=J*@t;j06$Vz)5S9E;B;%*1n^-tRx{q!R5XK9X=&R|5@2EQI zYlV)DZ0&>{5S5f&;%9^y!c8%gU0DRI-7zQ;I;=dAg6{oCkJ(w3o4jHoF3x!{eb=>#_e1%Pz2X83qs#4UoP^`85SE_5FB5xIIIT}N_ zfL*J);Agij?35?P=7L;Inns4Bz zVG>?vVQHzEG>m7$FE$X-fxWCr8flh*RUBy;Cs|zKcotgT)`y-13_9vOVH>wy*ttIa zaU0ss!4A1?Yug3%bC2+ZH ze<4b!>-ZfGgMa}<1eRZU(|Md!RH5rin!;jwBnjvpyy^#l60l2{$ciZz@!o6L)>e@v zFGV1c7L^P#B-%>%$_0kWj9`2a^ zlnTjO@oYONwE;k2dFY=S3^RB@u91Wo7$zeeMo=F%fw0d%-hSM_xn&yx&dA+3a-KsS z`7fc|J$jim{}CUO5833s#?Lsg?dwK2$w&AurB8Mg-scE96r6%)Z zZ%f@s`&ozt$jG1J6HxrK{pWk1A$Syw9{|_jc63F411@GKysp4qbSwrpeRRUR=9kjI)=C_7$YaKVHFgySo6t< zPP|Y9qA|jeqGnd4C^R_o1FR4f><9f9dk3E!1zZ6jb#RAgOv=>9%1l&1>{OalXb(kN znAezK^#CS>OpD-?Qj3s+kwC45~$?f|@Xq2|s@&BrAcKiBpHk)P#Y;;I>l; z72l}Jli(B@RE0?Zc^jiMyD&G<8x3-06gD(tJE+0#vu_gz6RL)!h)VHJ;7RU9qP4ND z;@)c)eoQO3%tC3$fzzp5(NS#j-c z7^{VhM=^GQ`bnP&Kwtc#iBvcyi{c1zg4c?83He~=Bu-P>y!53JX(q^ueIT zN!N-ag^2~%{{E4!{*ktRUfp7d>&9N2Y2z$p@Z}uloJeLt$MhvgRKkPf{1zp_>i90z zk?n#R{2>!0{02SyKPfURBS$;i49G-B2H=3)PoGkwu-!J?lw+q`?cjc!zM(xZXQLX} zDWJXYf)TymL#y$E7EQBYrk_t<96F03xM1cB$peRzzn6tfdM#|C4Wols;L?wq(;}@H zB~8ll98(3f@Cyg8l+Rp{(ps5x@tb*)H86ogI~d4eD-wWw{E%9e?F|}UE1WVUfM$3) zp0hE6f98#g*}jAwxZr^8VQK`+uzYp}4ey+L_u|_ZBi;>oA1-(>n*C7N^3XkV&UD}H zmYCUp4+e_Ep+n3(aq7S)HqY(-p#wAhF<(ot=i zj+E|>Irk*;3UBVa>&~0j-pwnV0=hzRs5CS_+a1l@K6UsLTi#->@2&h>`EM27Dw@eh z8o4{B4WBr3$xU6wY|WiOv}7MJ8FCA52SOX)9C)(`%J@0n>i}8w1huzM#|s)F1r0H4 z<2^WCDh(Gk&6Y*8w@mFz4O$pJAX$dZ1&M4oxuD-1+69A$L_ul1pfOU=INgzO`KY(fy)zK6 z*b=GO5_4|F+qWLM^$2?h=Y6CT|4eX#yv-Mu#S5Dvg-z4uyXNevJz$Hl-mb8D*VGOKiEV8^%W0q0Pxrqucyln+A92^t=d^!h zh~#tvrQHaa&$k9{4ZMl^YP@xy*)dY40komY^)2R>hT1>a7|U(E-VW%g@;T2(712#6 z$SFN}9YpLY%QF2T*QHY^Djx5MY2&mQ>}g%^ZkArbesi30g!^!3!7ZU79I!llCzU* zl?=WwjpQ}mp(v2O$uvw#9*+D}Jt#PTjq9;(R!>@!^3uwAu}$gTq_;Zx?X^wv8`+F3 zot9o&5t8bHB+3%Y1K1%+OE939b0S2Xlu{Z}-ri8?@Tp~imbCreBbOD%2^os7VPwW# z{#TTrN+9$cbDi6%$RQ)S^n(v1m5$C8*p<$8u9=BK?DepXJJ{E~j<-a4v;=QbN^}aBgpctZ?w2iB;C6~ge zCpfZroO%OTey+DTsDVHdy z;<{zWJLwz)jZ5hE!+YQwNN|@mZXzo}xWnpXZhy&z792qd&)Q`1)rcg%LOQ~zfZHOe zKhnL&94Au3E;)A?P5_kpV>TCe%onWTFvidKI49ETepNnl-uGbVE7KCOQBze*sR zrp^T;kj45hUhL`VCWF4AD}z95>w$Od9&m%SQ|l4MNx>ASEr3=9Jt8#@wgKe&Yq0X%!bG%zgO@@8Ykv!erqSUVzRQlkbp=OEED*-bLx%$gSGEU=|<4C_UX$z%ylV6Usa5W1JbY%vjJ-Lc?ZMNx_ma zh77qe{+yU_z6Ur+Jym~B+}VSuA46lZc;e=|d2?ODSr~UVMV#c$oD>&!gfeH^qUL5S zn@gGuYeB+W8u!8}OI_T%J>uOyt;c$~Y1_0Jc4>*GP4u@u;qgsd5@!3cI9%f9G zYX{TFwYsK`kus1O21s{WqV@;E_9OS)1&em)8|ItlH*7a;A#>cnJL2Cxr;FO#=f=Wa zq+#mGn%Yk)Z_cSbupSIPHM8qZS=7CU)_bh{J^m0JcI7c1126E%&~8A1J9S+}z0?UnFm zVr@dsw!C;&btJ2LN}Die@fbldbHO`L@;uWWZLDG^A<&(>K9TT(OTJ|$|2eK;#?8V6 z{JdyyS#IhV9p2mC(8idf5=bAnpPg|=J@sLG{XI9{zcv`Qm))gd&=_$xPPHw%yg^s+ z%8ViEYJ_v1x~3^}%vhbMs;9r@37c!m@{6^D8kMV%N}aP{cTquezG7R1ciji}s6N_b zI%v`U)T~B``)LtC0z8$HwC1F;JikQg6gOXzHZF+P8YF$=~=KY|DRm5$Y+ z17pSpVW_8G?C3eo^Kk>L3&GfQAv2|37)hLA{jU2!{k}kYlg_>}(pZWsyxq$_kyE}R z8%cIaq`g@7W;~uj&?h1>zD8$m8pZO;%ml_^{Rju5`VaK)L!?a?h`+S#raN^D7@i`E zwi(`&TX1e^R-Acg#U*!8O-ngjI{p08na=MYmNN1(nT>@No(|K+U<)etEOohHOO)eJ zS_Z{9Dis@lFz)NqJd9p>Q6(*k#@@e0G24a3%+Ex1v=Tz>$mHsM5QdSwAHtn}=+g|Y zQ!Ijj12Q4#2XQ1qB2fs5@=1u+AxS?Q#KjWl1H6WnjA20{)zLv-&cz&{^uqxMBvs-k z($a(i;d2sPDdbKy{*&S)g@{M|hDnB!Ye8a|VUifqx+BQ&6?GC+KH5r1i>|84L8tllHJIXO9)tb zaU3s^tdRv}5Ya;gtcDl-)d=D+6}{uHVVqD6gtg~*-DSCZ zWF0o@Qob?JyU=btKXg$zI#5Ww_*WEFD1$tXByl6esnCxOFg<7BX^-{+U6_Vgl3-29 zik)ML8hQ$}c|uu{5*!#LXAYDplf7Stbe@S+Ng{}1NHCkDm-z?{{u)65B{U^3Z>o_J zgs7PfG!m-A#{-1T10-V>)VhaoxWHVIuq^qMSeLM56lG9!CXEFFy{Cp`f|yX`W0(np zX_&|ghkOgt(Fg|LaNiJK!jr+ER5oE0iIZ$yGYdy3Qi4+d3xy6449?K#ljo%raiAg| zBf^UT^8~{R2l%^l;?NMqpL`S0`1>V&JcKS_^3scB*bY^^UicBBQ%B;t3B(DVfU>g_ zC*EI-AT}4qGcP8W&oJaM#+sTnA+Jd+#KdFd$K?As7i;KXY5V&JN0oATt`NkIBX+yH z6Kj96V1s7`nkWVdE@9S)TNU>`?EU_ZNH4H)Y$+@Ow!XN0OH&I;o*t-((>@|_koZ%G5b^l zFzi%kECDk@Yrujq3;x2hxONn8>`MVOu2)2jAEs^SVE;vdgbT-DHAI_hL;x@lR*_zd z^Hfp24wU0N&;j^k%A3-?nwcml4j0rKI1vS0Ox+zi$d>T>ZE?>%j*uZSy1Ik|}=C`VE~ z=;NNA>(s=4ykqvLw?{&4Z;r)_HbjaxgbO!?HysK4jz+UP!uB<*Es;0W5) zc+X$ywv_9PJGm$#-v<-frWg)nzxh8=NdetJC3WVKgNqRGdqU=jvo5Rz@e%T89nU)d zS1Q>$Ys~Z|OCa?zyP{;w0`unjqUl2;$wiaq2vU%aAUg0vIXD6e9Cumo@jk-?O7!9Y z0;)Sq+_UyEhQfb&pzkR#YGWC~aN&09)(`9jI9|qKHxzwFAU+$*QPfF({5n;v7==We zXL*7RAGl@$@8|Iv-r=e}cdmrJ`=eP0!o~yq@R&x_YFnyK^Y7y+ukOuGX)n`Hn(?WY zq%=gipHV=~%soJ*eu?g6J!c}{jD{0}+3=J2McUs6y>ZE{s;F7cFzEN(&2lX1@s|WW zIX8x`4+Z-oStYCVYQ?VB=i#~09MAAXGCaY``3#tOs!i~vY?PmFna?O$(Wp)J^r{}9 z(fWgGz6_K-^rlfT6-P6ihmm<6cS)09>fe9F8)g6gTR}%F@c%Yr2cBm4EZ{)VF_r~| zNV%B&Ce2qs`XE?_G+*!l@T5Tv-Ba~dokE{e(iw(HhrYK21AX7nAT%(Tp&0L*l3xq4 zN=kY)!=pT`6Iu3g8`?HmPf(rg*T4HOCNJhK~krz2jrB~rHKNACExuE@5oa6xy>dp3 z`P1+QS(pE;pfT8H*45@a&wa|4wpl1#`d2ugNNb{#d1>M zrhwQ3&P7211%(v&DezH1Tp)Llf@2hTDezE`PeCsQwUlT*1&>nmpQJlBsF*!c7yX>1 zfGk`WoD6Hct-Vb~BJbje8RpGi8Ej@7r8+{-o~2-%g6An9K9GBb?#@z_0~GA1ppt@e z3d$%brJ#a>5(=s)sHUI>0eZZ%y}hlgrwe+GN7}oObslZ+Zsj7B>}iVhGrD__?*1Bg z!T{N_VQbO=DW>=TKr#1FnkE7T?uB2!eh!;&6?d0j=TLL}9sT?P{oF-Aw@|Q+f(Iyo zm4S-eNx^>l`4|OsJjQLKXIm*aM8Q>hHbKD)6kMZ#RvgYs!7chpr*NEua{EjA8K>aC zQIJ8c_J7gaOu94D-BAiUDL6twHoc&=jmx6o1O?p`oT8wMf)a|7O?M3V)K5RlDEKGJ z!$B`PC^$sV>gcYK0-1C?LO=IWaE78Z(cNQo_q&w9O}cx70(PW&i|)Qn0mBKJp*xbU zbL6)dn2=ak&JUagm~(*peR}r?6fn2|KUYi?8La1qAVd`i&zsoeErI}lb5pY<{n3GsF!N^19TD2$kggjRhgfv zY@e#KKUKLuRXILYnLkz8KUHOYsxq+qhT<<4uJ z(;K5Y&!jqm-=|-G{MzHwZBc#hq-NdkjGW15UVi@C^V8>Mbg_*3NnOI6JGJ@7?(4gQ zHM4Co^EQ@hQVst~m$zmx=_{sT1%(AN@ z*;SJ^fbz=4z*gXe>n}_mkjgW8G~xEe-E|Rn-L+%X!Og+^cy3c9w<%%FoifFZxe;S- zur{989LZ~*ZHXGU;v7BC5Z1X@j1~H#mE&rYe#?qmqc25mj9D)~ckQ`J9lF)(j9YvW zi*M3|R*`P)aELshIB6icYQHwT6<`P#bQK6m6d?`&@;e%g5C!N6vKjYnhV=KLMJT z(Rssm-4-_%M~uax=2_F7ZQ;iDHLb>Bm^_FUbk|5RDk8>;8TIVLvq$jSZJ6v7UT4RR z)e#(M8%+tQH)MO?XuR1NDvM-Sh8@)qPqLU6Reoc_h?or#V*`s>vOZ=$TGz9Zt@RpE zDOX*%{!lpka3ZfHn73@raB0FS`?5;~0EmvbZ*#=A8ET;bN7$vfi%2mqC>Vxoqz4Xnoh6Zxss*PKcHSQX6g5;*DB7c^%b{t!PBJS5cSrtsp!Gd z0jL4A?ZET|0VL?_R?W*fD(`K6UgCDzImX9xT~$ z$6f`E_kUG&|5x|#4O7p?wBB0}hEC3SV+9)$R@;q-uRlE5A>3T+U^UIs+o!$3vYUmgD%=WL;BLv! zvdGjws>b`Oh@*5>ML&cXbi3?Rne5YspgC$R3+u|}b%)>EKihGqGg@~zTy+=Pt zHRm+?hM;Q={=W1LOUL!9Z1)?!o4(-S%u{zZ+~J~*y_1JlbUXFgYvXE zo23mZL;kX6r#_QfFMo;dmcY8^7R9~w5pVs>^I^~Ku+FujGwYjBBSvO-#X!i}2%XO^ zyLNcRVAVU9{rtP_G0Z|%o%x)aYn>|wx8AYVRHfg&jLnfqjaGCSm}RaF`sO9D&dDP$|ca%&XVw3rsn9P)jYo#e$pS@g{+DG%$M`$U74_?Cbpxn4yqPrEJMqR#=sZ&>f zk)@-h8^M}gqu!^U9$CXGw@;0QT<85OUE!LcRR6F#?5q1+MK{Zx>lU?nSCzPk%+n(B zg~6!zE@NbS*IYUJEy2t+75=O>(0vWNUv6S)`$0Gj)~VCekHqxFYld3=BkFKr!_QT8 zvvyVu3gnn>3-Ywcv3x|UGTNq|nVyJcl#_11b9!@dPt07qtjRQa<~DtzlfH zC{SD1bevkhF@zrS>c}sWis8+A*&NK{Ttkpe;4oXiN1L%(&!Ek~?2&`pr_)Z(asfCayr9 zNy=WT({B`_;%@l~p|Q8dw7!JZdE>EfK6b4`NVGzVi8~rUELAqbh|bf{STpGKp0KxJ z7WKg$7HETWS>xnCbS}{ybwx6dg6{GiG4R=cwl{Vd^dFi3l*~GW#WXCF)gz7b;R$mz|U_2J?)-rST_0!M9J+%=}?JNcn zegccn;9b^e^tIGSUO3a#*TSKmzJA4MR6B`!W5$$zrng{BKOWPUtr>RcJJjLg=AWzR z2Gr#+@xRj(YbtiLjLmgAnz5vF=$%2wk_vx9#jEsZxr)UMJ2%9%8xv(U@v;N+Wd|a< z;=5&)VO=q15=%&?xbsADmvkO|mpWL!1Zvi$4gvp<{w{4z8L&VN&TE;^Yl-MQ;5dB# zL}6*dU!Eu`!!N6C#o49S=iYUBm+-AV7sC%&%o*&~sLCr`GO^oC01z*k*)5oy;Uj6q_m0i(yW{?&ydUPx9*dN<#Z2v!dzW;@dgt`nB^CaJG^_My>4;*SFt*&0 z8+Vk=JIbydx+|v`H5E+m{X%y@1H!AKaOt#8Zr3O0wFSbKCsUt^-ea`u`B+9pq8_`D z7X1nJ%4M}5f0oCn1%^&{$;wpA7V#h~|=z5U?K>DkBUx}z|~aUTw= zoJ$6y+7Ln%{8{!2TcErUzoMrIXhPp&2FDOyrR?S3o&ZS>sD2J&?I{`s*-J!hhn-yeuVBI20nNorY%oc zy*GNU_r$HG^VZU99iYE@%e3|rx8PqL-$Ihhg#-F8{Z2g9i zYY9!XVdiwae%E~ct~-5^`n{|4WVwbE-CdL2*SCPhXo;Hr5&i!^g-a|Uz}_As6R?pAto$I| zQD7IBSMDOOTmu)Ri+hPjrjhf(%?96Z1hjg|M$r!Zay)=j6f0q5WdJ? literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/_cffi_backend.cpython-312-x86_64-linux-gnu.so b/venv/lib/python3.12/site-packages/_cffi_backend.cpython-312-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..156ee43188df643d2639fdd256da4eb46db27dd9 GIT binary patch literal 348808 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%0Aw++4~(v&d?L<&vLhQT?V<%Ca@hS>%= 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�%m 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 VR+@(~_;1b?-v7RkV;Ro%{{WKxw(S4_ literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/_yaml/__init__.py b/venv/lib/python3.12/site-packages/_yaml/__init__.py new file mode 100644 index 00000000..7baa8c4b --- /dev/null +++ b/venv/lib/python3.12/site-packages/_yaml/__init__.py @@ -0,0 +1,33 @@ +# This is a stub package designed to roughly emulate the _yaml +# extension module, which previously existed as a standalone module +# and has been moved into the `yaml` package namespace. +# It does not perfectly mimic its old counterpart, but should get +# close enough for anyone who's relying on it even when they shouldn't. +import yaml + +# in some circumstances, the yaml module we imoprted may be from a different version, so we need +# to tread carefully when poking at it here (it may not have the attributes we expect) +if not getattr(yaml, '__with_libyaml__', False): + from sys import version_info + + exc = ModuleNotFoundError if version_info >= (3, 6) else ImportError + raise exc("No module named '_yaml'") +else: + from yaml._yaml import * + import warnings + warnings.warn( + 'The _yaml extension module is now located at yaml._yaml' + ' and its location is subject to change. To use the' + ' LibYAML-based parser and emitter, import from `yaml`:' + ' `from yaml import CLoader as Loader, CDumper as Dumper`.', + DeprecationWarning + ) + del warnings + # Don't `del yaml` here because yaml is actually an existing + # namespace member of _yaml. + +__name__ = '_yaml' +# If the module is top-level (i.e. not a part of any specific package) +# then the attribute should be set to ''. +# https://docs.python.org/3.8/library/types.html +__package__ = '' diff --git a/venv/lib/python3.12/site-packages/_yaml/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/_yaml/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..33ac8e0276b85dffeabc213715b0ea65b83d66d0 GIT binary patch literal 868 zcmYjPzi$&U6t?d!$>mo|Ta^j{k~@W}LI?@9R3J57sDzp#InJG%IL+B7+i9Cl zEenin%xs_viIM+-rTiG^AtWSNx&@V~6TTc3yutSO-uJ!t{OtGTase27x#6+h3;;h8 zaApRN?Bu!GUVs1uum>8z0u)jZSb=?Drvx=)VouKr?S>5jwS&y&V*sQ@9S&)xku{2J zkUfAY`w2AcTrc;=f@w~-;Tne9olN8ZuYpSo2UhBVVBHP!jbcz}lm@U`JWkvz@i~mQ zneN~oYYj-)!+5C*64C%wa3ZT15xly4 zwA!I)2v_O7`@HVX> zv?@?vQKU_oW!74|TVI}U5oOXvL@Fv#l81&&Ybxgu3nL*l+K?hd&7@fK7HW=A0?xt< z%Yp=nRH5`VhZYw5VU)VkQ?nLlMvcaxT8^DW9_QLr6Rl-ztAUb^8BRP^A5CUO=q1tT z!96L3jEfIOZKS}aJAPdFck$TWCXzGWRkrCNoq!9hVUp2#V*FltTB#@7)Qk4 zBy9s;gA-E|oUVDC>W&Dh*A<%h9ma_lNztWRC@&17hm=Ua<84vC<(WtJqJd%a8?|fK zJ;gMg|C>;GqYHZ2ygAbt*P_9xdpmvVJMx05l>9%%%rdkggeN5cOTS#;jz80f)0J1# zpL5i_@% literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/blinker/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/blinker/__pycache__/__init__.cpython-312.pyc index 48335193dfe1fcc140e3af19c8c17078d57640fd..cde6662f5457eedbf96257ea20c1e5e7927749ba 100644 GIT binary patch delta 21 bcmeyu{Dqn4G%qg~0}!}&nPzU}dBF$(L=Xl2 delta 21 bcmeyu{Dqn4G%qg~0}x0of10t8=LI7GM~()Z diff --git a/venv/lib/python3.12/site-packages/blinker/__pycache__/_utilities.cpython-312.pyc b/venv/lib/python3.12/site-packages/blinker/__pycache__/_utilities.cpython-312.pyc index 238f27c5282f6779ced24c3d9532a3315d0f6614..2585c36a621cd38e794b554f3ab10c028cccc972 100644 GIT binary patch delta 21 bcmZ23x?Gg!G%qg~0}!}&nPzU}nau?NIwJ)` delta 21 bcmZ23x?Gg!G%qg~0}x0of10t8XEqlAJ)s5S diff --git a/venv/lib/python3.12/site-packages/blinker/__pycache__/base.cpython-312.pyc b/venv/lib/python3.12/site-packages/blinker/__pycache__/base.cpython-312.pyc index 42687b3af169cb593f807044badd6c86d84601f4..eb9139e9047bac4df10abb5f8ff1a047ecceaaab 100644 GIT binary patch delta 23 dcmeyen(@nOMxN8Wyj%=G;M!%Hxsm5ZC;(zw2crN0 delta 23 dcmeyen(@nOMxN8Wyj%=GAhG;u#zvkOp#Wvr2toh= diff --git a/venv/lib/python3.12/site-packages/click-8.3.0.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/INSTALLER similarity index 100% rename from venv/lib/python3.12/site-packages/click-8.3.0.dist-info/INSTALLER rename to venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/INSTALLER diff --git a/venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/METADATA b/venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/METADATA new file mode 100644 index 00000000..67508e56 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/METADATA @@ -0,0 +1,68 @@ +Metadata-Version: 2.4 +Name: cffi +Version: 2.0.0 +Summary: Foreign Function Interface for Python calling C code. +Author: Armin Rigo, Maciej Fijalkowski +Maintainer: Matt Davis, Matt Clay, Matti Picus +License-Expression: MIT +Project-URL: Documentation, https://cffi.readthedocs.io/ +Project-URL: Changelog, https://cffi.readthedocs.io/en/latest/whatsnew.html +Project-URL: Downloads, https://github.com/python-cffi/cffi/releases +Project-URL: Contact, https://groups.google.com/forum/#!forum/python-cffi +Project-URL: Source Code, https://github.com/python-cffi/cffi +Project-URL: Issue Tracker, https://github.com/python-cffi/cffi/issues +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Classifier: Programming Language :: Python :: Free Threading :: 2 - Beta +Classifier: Programming Language :: Python :: Implementation :: CPython +Requires-Python: >=3.9 +Description-Content-Type: text/markdown +License-File: LICENSE +License-File: AUTHORS +Requires-Dist: pycparser; implementation_name != "PyPy" +Dynamic: license-file + +[![GitHub Actions Status](https://github.com/python-cffi/cffi/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/python-cffi/cffi/actions/workflows/ci.yaml?query=branch%3Amain++) +[![PyPI version](https://img.shields.io/pypi/v/cffi.svg)](https://pypi.org/project/cffi) +[![Read the Docs](https://img.shields.io/badge/docs-latest-blue.svg)][Documentation] + + +CFFI +==== + +Foreign Function Interface for Python calling C code. + +Please see the [Documentation] or uncompiled in the `doc/` subdirectory. + +Download +-------- + +[Download page](https://github.com/python-cffi/cffi/releases) + +Source Code +----------- + +Source code is publicly available on +[GitHub](https://github.com/python-cffi/cffi). + +Contact +------- + +[Mailing list](https://groups.google.com/forum/#!forum/python-cffi) + +Testing/development tips +------------------------ + +After `git clone` or `wget && tar`, we will get a directory called `cffi` or `cffi-x.x.x`. we call it `repo-directory`. To run tests under CPython, run the following in the `repo-directory`: + + pip install pytest + pip install -e . # editable install of CFFI for local development + pytest src/c/ testing/ + +[Documentation]: http://cffi.readthedocs.org/ diff --git a/venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/RECORD b/venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/RECORD new file mode 100644 index 00000000..6f822989 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/RECORD @@ -0,0 +1,49 @@ +_cffi_backend.cpython-312-x86_64-linux-gnu.so,sha256=AGLtw5fn9u4Cmwk3BbGlsXG7VZEvQekABMyEGuRZmcE,348808 +cffi-2.0.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +cffi-2.0.0.dist-info/METADATA,sha256=uYzn40F68Im8EtXHNBLZs7FoPM-OxzyYbDWsjJvhujk,2559 +cffi-2.0.0.dist-info/RECORD,, +cffi-2.0.0.dist-info/WHEEL,sha256=aSgG0F4rGPZtV0iTEIfy6dtHq6g67Lze3uLfk0vWn88,151 +cffi-2.0.0.dist-info/entry_points.txt,sha256=y6jTxnyeuLnL-XJcDv8uML3n6wyYiGRg8MTp_QGJ9Ho,75 +cffi-2.0.0.dist-info/licenses/AUTHORS,sha256=KmemC7-zN1nWfWRf8TG45ta8TK_CMtdR_Kw-2k0xTMg,208 +cffi-2.0.0.dist-info/licenses/LICENSE,sha256=W6JN3FcGf5JJrdZEw6_EGl1tw34jQz73Wdld83Cwr2M,1123 +cffi-2.0.0.dist-info/top_level.txt,sha256=rE7WR3rZfNKxWI9-jn6hsHCAl7MDkB-FmuQbxWjFehQ,19 +cffi/__init__.py,sha256=-ksBQ7MfDzVvbBlV_ftYBWAmEqfA86ljIzMxzaZeAlI,511 +cffi/__pycache__/__init__.cpython-312.pyc,, +cffi/__pycache__/_imp_emulation.cpython-312.pyc,, +cffi/__pycache__/_shimmed_dist_utils.cpython-312.pyc,, +cffi/__pycache__/api.cpython-312.pyc,, +cffi/__pycache__/backend_ctypes.cpython-312.pyc,, +cffi/__pycache__/cffi_opcode.cpython-312.pyc,, +cffi/__pycache__/commontypes.cpython-312.pyc,, +cffi/__pycache__/cparser.cpython-312.pyc,, +cffi/__pycache__/error.cpython-312.pyc,, +cffi/__pycache__/ffiplatform.cpython-312.pyc,, +cffi/__pycache__/lock.cpython-312.pyc,, +cffi/__pycache__/model.cpython-312.pyc,, +cffi/__pycache__/pkgconfig.cpython-312.pyc,, +cffi/__pycache__/recompiler.cpython-312.pyc,, +cffi/__pycache__/setuptools_ext.cpython-312.pyc,, +cffi/__pycache__/vengine_cpy.cpython-312.pyc,, +cffi/__pycache__/vengine_gen.cpython-312.pyc,, +cffi/__pycache__/verifier.cpython-312.pyc,, +cffi/_cffi_errors.h,sha256=zQXt7uR_m8gUW-fI2hJg0KoSkJFwXv8RGUkEDZ177dQ,3908 +cffi/_cffi_include.h,sha256=Exhmgm9qzHWzWivjfTe0D7Xp4rPUkVxdNuwGhMTMzbw,15055 +cffi/_embedding.h,sha256=Ai33FHblE7XSpHOCp8kPcWwN5_9BV14OvN0JVa6ITpw,18786 +cffi/_imp_emulation.py,sha256=RxREG8zAbI2RPGBww90u_5fi8sWdahpdipOoPzkp7C0,2960 +cffi/_shimmed_dist_utils.py,sha256=Bjj2wm8yZbvFvWEx5AEfmqaqZyZFhYfoyLLQHkXZuao,2230 +cffi/api.py,sha256=alBv6hZQkjpmZplBphdaRn2lPO9-CORs_M7ixabvZWI,42169 +cffi/backend_ctypes.py,sha256=h5ZIzLc6BFVXnGyc9xPqZWUS7qGy7yFSDqXe68Sa8z4,42454 +cffi/cffi_opcode.py,sha256=JDV5l0R0_OadBX_uE7xPPTYtMdmpp8I9UYd6av7aiDU,5731 +cffi/commontypes.py,sha256=7N6zPtCFlvxXMWhHV08psUjdYIK2XgsN3yo5dgua_v4,2805 +cffi/cparser.py,sha256=QUTfmlL-aO-MYR8bFGlvAUHc36OQr7XYLe0WLkGFjRo,44790 +cffi/error.py,sha256=v6xTiS4U0kvDcy4h_BDRo5v39ZQuj-IMRYLv5ETddZs,877 +cffi/ffiplatform.py,sha256=avxFjdikYGJoEtmJO7ewVmwG_VEVl6EZ_WaNhZYCqv4,3584 +cffi/lock.py,sha256=l9TTdwMIMpi6jDkJGnQgE9cvTIR7CAntIJr8EGHt3pY,747 +cffi/model.py,sha256=W30UFQZE73jL5Mx5N81YT77us2W2iJjTm0XYfnwz1cg,21797 +cffi/parse_c_type.h,sha256=OdwQfwM9ktq6vlCB43exFQmxDBtj2MBNdK8LYl15tjw,5976 +cffi/pkgconfig.py,sha256=LP1w7vmWvmKwyqLaU1Z243FOWGNQMrgMUZrvgFuOlco,4374 +cffi/recompiler.py,sha256=78J6lMEEOygXNmjN9-fOFFO3j7eW-iFxSrxfvQb54bY,65509 +cffi/setuptools_ext.py,sha256=0rCwBJ1W7FHWtiMKfNXsSST88V8UXrui5oeXFlDNLG8,9411 +cffi/vengine_cpy.py,sha256=oyQKD23kpE0aChUKA8Jg0e723foPiYzLYEdb-J0MiNs,43881 +cffi/vengine_gen.py,sha256=DUlEIrDiVin1Pnhn1sfoamnS5NLqfJcOdhRoeSNeJRg,26939 +cffi/verifier.py,sha256=oX8jpaohg2Qm3aHcznidAdvrVm5N4sQYG0a3Eo5mIl4,11182 diff --git a/venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/WHEEL b/venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/WHEEL new file mode 100644 index 00000000..e21e9f2f --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: setuptools (80.9.0) +Root-Is-Purelib: false +Tag: cp312-cp312-manylinux_2_17_x86_64 +Tag: cp312-cp312-manylinux2014_x86_64 + diff --git a/venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/entry_points.txt b/venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/entry_points.txt new file mode 100644 index 00000000..4b0274f2 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/entry_points.txt @@ -0,0 +1,2 @@ +[distutils.setup_keywords] +cffi_modules = cffi.setuptools_ext:cffi_modules diff --git a/venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/licenses/AUTHORS b/venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/licenses/AUTHORS new file mode 100644 index 00000000..370a25d3 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/licenses/AUTHORS @@ -0,0 +1,8 @@ +This package has been mostly done by Armin Rigo with help from +Maciej Fijałkowski. The idea is heavily based (although not directly +copied) from LuaJIT ffi by Mike Pall. + + +Other contributors: + + Google Inc. diff --git a/venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/licenses/LICENSE b/venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/licenses/LICENSE new file mode 100644 index 00000000..0a1dbfb0 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/licenses/LICENSE @@ -0,0 +1,23 @@ + +Except when otherwise stated (look for LICENSE files in directories or +information at the beginning of each file) all software and +documentation is licensed as follows: + + MIT No Attribution + + 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. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + diff --git a/venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/top_level.txt b/venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/top_level.txt new file mode 100644 index 00000000..f6457795 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi-2.0.0.dist-info/top_level.txt @@ -0,0 +1,2 @@ +_cffi_backend +cffi diff --git a/venv/lib/python3.12/site-packages/cffi/__init__.py b/venv/lib/python3.12/site-packages/cffi/__init__.py new file mode 100644 index 00000000..c99ec3d4 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi/__init__.py @@ -0,0 +1,14 @@ +__all__ = ['FFI', 'VerificationError', 'VerificationMissing', 'CDefError', + 'FFIError'] + +from .api import FFI +from .error import CDefError, FFIError, VerificationError, VerificationMissing +from .error import PkgConfigError + +__version__ = "2.0.0" +__version_info__ = (2, 0, 0) + +# The verifier module file names are based on the CRC32 of a string that +# contains the following version number. It may be older than __version__ +# if nothing is clearly incompatible. +__version_verifier_modules__ = "0.8.6" diff --git a/venv/lib/python3.12/site-packages/cffi/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cffi/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a36694e99ab2149639972ee80bce4ff72b3d862c GIT binary patch literal 553 zcmZutJ#Q2-5ViOF?nsmnBAP3pLR(~g2@;|}X#yuGI3Xb+(R{9Vo;aQPg- zdsLzvonne|oI4e+9qM3<-O8;!>eW8=>wpGzNW&HH0Uyx_uupq=K>K+}2a71~#lCUJ z;}>T04cDR&S=tFDpJ}bM+4`4yDcV-Z()13V^5XhF0^JHN!7GZfwiaVg`*7&M2G<79 zve>M@IxG*AEJV4|9Q%98C>h1>(yErQk+#Dh`=jJ>@@Nv@G9hDWRWWAVv=OVvjnA#K z|8>w2h|PepIoBc? zLZ+nAYQ{U&lDckQ^HgV3GUswmD)Ejq3#gV4lifYiijMCzX?B>Fyd_yt2*Q|t_4<4m7f#*6u*Ka52U|96Y#t68;Pj-u{XvpU~tBy8mr``(*HWYxn_eT=dbs L2OrT;-v-5RI53#m literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/cffi/__pycache__/_imp_emulation.cpython-312.pyc b/venv/lib/python3.12/site-packages/cffi/__pycache__/_imp_emulation.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..83cee85478a4f37ab223b053b2e235280a36a6b5 GIT binary patch literal 3883 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/cffi/__pycache__/api.cpython-312.pyc b/venv/lib/python3.12/site-packages/cffi/__pycache__/api.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..81ce9f0b681fb9f81dce4c3b02b4efa4b7237008 GIT binary patch literal 50312 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⋙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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/cffi/__pycache__/backend_ctypes.cpython-312.pyc b/venv/lib/python3.12/site-packages/cffi/__pycache__/backend_ctypes.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a93ef95da70fafa2ce70c6aeb0ddeb5792b82182 GIT binary patch literal 63555 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 Hox&6*;;FlWyF-81)|-#Ndz zznnUiBQU1wy4#cp`3)z%p&U6K2F@lC$uzOaIx<0Ne;@|@I`G&#y%f0sHjS0+Q8)hiA71e=DZc76x5NwQ>> z)WI7ZwlD_Jny@O=F|~nF$8873n)rm+)IcCi*Cbn96;~xkT!Ga!c~!nIJRuJm^SCd3 zBi<$#NSNvE6~?l}Svb_g9O)uqiU3kulV{0SuP%{gX_hPrnlkekOR$o@#3wJ=lWIgB z<2PD5l1*0Skz)Bivm@DY8#Iy|u1BNcN*FSCz7^6$Gue;Z!I7K0>DhEShBYOUIc+%6 zkkw+0dZA%cs}W^zBh*in#?8D|GfD-FI_@&Z@~b!)5{S}f3J99x2WwDwcTQQr&!*2Z?ABEw=l6&nAk0pb_%79 z>AjJcwk94-Z@+wHXXMJp)Io|ouWp_FaqPRX2baG;w|%<2ohkp-RY-pPhwRUj+o#|9 zg9vcQNb$?5eF?lneg@9|q9Rs`3t(q7nIQ>=ZDp7wdl3zGCJ`+XW7w3~ zU@XU3EbKeCI$}oAlR!jIR`*$0Ii_yV3;f2Y?fj>dxsGd@q3e5b6IM!U#ZxK%QYtfD zPHlCmMm=@0FHm(%x50C9;ZeIY4+mLbD{S8~j6o*j5YEu#;prqy4n#r8{QB>Iipx*U z%2kt5H843ccD>M#=~*^)UQKiCcaM*n$c2G_QtYB15{9Q z1IKEO8y)kGKR+($!_2iLlXutzY=YMbuYiGnMG(5OAdGIby98d{R8G+EX1fGl-BC#x a{Th6Db#pTKT9?49I|RVp**_7F6Z;#&Ri8`% literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/cffi/__pycache__/ffiplatform.cpython-312.pyc b/venv/lib/python3.12/site-packages/cffi/__pycache__/ffiplatform.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5b83012f304b1e3697549336d24782a9f792fffe GIT binary patch literal 5832 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/cffi/__pycache__/model.cpython-312.pyc b/venv/lib/python3.12/site-packages/cffi/__pycache__/model.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9b46baaeaa5ef844e4e568ce703c45c944631dec GIT binary patch literal 30160 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

dL5#Yiy}BT%nhu%gX^N0F#P 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/cffi/__pycache__/pkgconfig.cpython-312.pyc b/venv/lib/python3.12/site-packages/cffi/__pycache__/pkgconfig.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f347a2505f90b9995dc7537023dee75dc0b3020c GIT binary patch literal 6372 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 bDZ5eIa;3Hq;_jomfXFG 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/cffi/__pycache__/setuptools_ext.cpython-312.pyc b/venv/lib/python3.12/site-packages/cffi/__pycache__/setuptools_ext.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3f42a3ef6dae29563dd9b776716962fdca751d4c GIT binary patch literal 11261 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Ô+04Zcpf}L!8BwG;` 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/cffi/__pycache__/vengine_gen.cpython-312.pyc b/venv/lib/python3.12/site-packages/cffi/__pycache__/vengine_gen.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5f72a84c3d350f6c925ee17ffdfd6a5a2fc9eb9c GIT binary patch literal 34169 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/cffi/_cffi_errors.h b/venv/lib/python3.12/site-packages/cffi/_cffi_errors.h new file mode 100644 index 00000000..158e0590 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi/_cffi_errors.h @@ -0,0 +1,149 @@ +#ifndef CFFI_MESSAGEBOX +# ifdef _MSC_VER +# define CFFI_MESSAGEBOX 1 +# else +# define CFFI_MESSAGEBOX 0 +# endif +#endif + + +#if CFFI_MESSAGEBOX +/* Windows only: logic to take the Python-CFFI embedding logic + initialization errors and display them in a background thread + with MessageBox. The idea is that if the whole program closes + as a result of this problem, then likely it is already a console + program and you can read the stderr output in the console too. + If it is not a console program, then it will likely show its own + dialog to complain, or generally not abruptly close, and for this + case the background thread should stay alive. +*/ +static void *volatile _cffi_bootstrap_text; + +static PyObject *_cffi_start_error_capture(void) +{ + PyObject *result = NULL; + PyObject *x, *m, *bi; + + if (InterlockedCompareExchangePointer(&_cffi_bootstrap_text, + (void *)1, NULL) != NULL) + return (PyObject *)1; + + m = PyImport_AddModule("_cffi_error_capture"); + if (m == NULL) + goto error; + + result = PyModule_GetDict(m); + if (result == NULL) + goto error; + +#if PY_MAJOR_VERSION >= 3 + bi = PyImport_ImportModule("builtins"); +#else + bi = PyImport_ImportModule("__builtin__"); +#endif + if (bi == NULL) + goto error; + PyDict_SetItemString(result, "__builtins__", bi); + Py_DECREF(bi); + + x = PyRun_String( + "import sys\n" + "class FileLike:\n" + " def write(self, x):\n" + " try:\n" + " of.write(x)\n" + " except: pass\n" + " self.buf += x\n" + " def flush(self):\n" + " pass\n" + "fl = FileLike()\n" + "fl.buf = ''\n" + "of = sys.stderr\n" + "sys.stderr = fl\n" + "def done():\n" + " sys.stderr = of\n" + " return fl.buf\n", /* make sure the returned value stays alive */ + Py_file_input, + result, result); + Py_XDECREF(x); + + error: + if (PyErr_Occurred()) + { + PyErr_WriteUnraisable(Py_None); + PyErr_Clear(); + } + return result; +} + +#pragma comment(lib, "user32.lib") + +static DWORD WINAPI _cffi_bootstrap_dialog(LPVOID ignored) +{ + Sleep(666); /* may be interrupted if the whole process is closing */ +#if PY_MAJOR_VERSION >= 3 + MessageBoxW(NULL, (wchar_t *)_cffi_bootstrap_text, + L"Python-CFFI error", + MB_OK | MB_ICONERROR); +#else + MessageBoxA(NULL, (char *)_cffi_bootstrap_text, + "Python-CFFI error", + MB_OK | MB_ICONERROR); +#endif + _cffi_bootstrap_text = NULL; + return 0; +} + +static void _cffi_stop_error_capture(PyObject *ecap) +{ + PyObject *s; + void *text; + + if (ecap == (PyObject *)1) + return; + + if (ecap == NULL) + goto error; + + s = PyRun_String("done()", Py_eval_input, ecap, ecap); + if (s == NULL) + goto error; + + /* Show a dialog box, but in a background thread, and + never show multiple dialog boxes at once. */ +#if PY_MAJOR_VERSION >= 3 + text = PyUnicode_AsWideCharString(s, NULL); +#else + text = PyString_AsString(s); +#endif + + _cffi_bootstrap_text = text; + + if (text != NULL) + { + HANDLE h; + h = CreateThread(NULL, 0, _cffi_bootstrap_dialog, + NULL, 0, NULL); + if (h != NULL) + CloseHandle(h); + } + /* decref the string, but it should stay alive as 'fl.buf' + in the small module above. It will really be freed only if + we later get another similar error. So it's a leak of at + most one copy of the small module. That's fine for this + situation which is usually a "fatal error" anyway. */ + Py_DECREF(s); + PyErr_Clear(); + return; + + error: + _cffi_bootstrap_text = NULL; + PyErr_Clear(); +} + +#else + +static PyObject *_cffi_start_error_capture(void) { return NULL; } +static void _cffi_stop_error_capture(PyObject *ecap) { } + +#endif diff --git a/venv/lib/python3.12/site-packages/cffi/_cffi_include.h b/venv/lib/python3.12/site-packages/cffi/_cffi_include.h new file mode 100644 index 00000000..908a1d73 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi/_cffi_include.h @@ -0,0 +1,389 @@ +#define _CFFI_ + +/* We try to define Py_LIMITED_API before including Python.h. + + Mess: we can only define it if Py_DEBUG, Py_TRACE_REFS and + Py_REF_DEBUG are not defined. This is a best-effort approximation: + we can learn about Py_DEBUG from pyconfig.h, but it is unclear if + the same works for the other two macros. Py_DEBUG implies them, + but not the other way around. + + The implementation is messy (issue #350): on Windows, with _MSC_VER, + we have to define Py_LIMITED_API even before including pyconfig.h. + In that case, we guess what pyconfig.h will do to the macros above, + and check our guess after the #include. + + Note that on Windows, with CPython 3.x, you need >= 3.5 and virtualenv + version >= 16.0.0. With older versions of either, you don't get a + copy of PYTHON3.DLL in the virtualenv. We can't check the version of + CPython *before* we even include pyconfig.h. ffi.set_source() puts + a ``#define _CFFI_NO_LIMITED_API'' at the start of this file if it is + running on Windows < 3.5, as an attempt at fixing it, but that's + arguably wrong because it may not be the target version of Python. + Still better than nothing I guess. As another workaround, you can + remove the definition of Py_LIMITED_API here. + + See also 'py_limited_api' in cffi/setuptools_ext.py. +*/ +#if !defined(_CFFI_USE_EMBEDDING) && !defined(Py_LIMITED_API) +# ifdef _MSC_VER +# if !defined(_DEBUG) && !defined(Py_DEBUG) && !defined(Py_TRACE_REFS) && !defined(Py_REF_DEBUG) && !defined(_CFFI_NO_LIMITED_API) +# define Py_LIMITED_API +# endif +# include + /* sanity-check: Py_LIMITED_API will cause crashes if any of these + are also defined. Normally, the Python file PC/pyconfig.h does not + cause any of these to be defined, with the exception that _DEBUG + causes Py_DEBUG. Double-check that. */ +# ifdef Py_LIMITED_API +# if defined(Py_DEBUG) +# error "pyconfig.h unexpectedly defines Py_DEBUG, but Py_LIMITED_API is set" +# endif +# if defined(Py_TRACE_REFS) +# error "pyconfig.h unexpectedly defines Py_TRACE_REFS, but Py_LIMITED_API is set" +# endif +# if defined(Py_REF_DEBUG) +# error "pyconfig.h unexpectedly defines Py_REF_DEBUG, but Py_LIMITED_API is set" +# endif +# endif +# else +# include +# if !defined(Py_DEBUG) && !defined(Py_TRACE_REFS) && !defined(Py_REF_DEBUG) && !defined(_CFFI_NO_LIMITED_API) +# define Py_LIMITED_API +# endif +# endif +#endif + +#include +#ifdef __cplusplus +extern "C" { +#endif +#include +#include "parse_c_type.h" + +/* this block of #ifs should be kept exactly identical between + c/_cffi_backend.c, cffi/vengine_cpy.py, cffi/vengine_gen.py + and cffi/_cffi_include.h */ +#if defined(_MSC_VER) +# include /* for alloca() */ +# if _MSC_VER < 1600 /* MSVC < 2010 */ + typedef __int8 int8_t; + typedef __int16 int16_t; + typedef __int32 int32_t; + typedef __int64 int64_t; + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + typedef unsigned __int64 uint64_t; + typedef __int8 int_least8_t; + typedef __int16 int_least16_t; + typedef __int32 int_least32_t; + typedef __int64 int_least64_t; + typedef unsigned __int8 uint_least8_t; + typedef unsigned __int16 uint_least16_t; + typedef unsigned __int32 uint_least32_t; + typedef unsigned __int64 uint_least64_t; + typedef __int8 int_fast8_t; + typedef __int16 int_fast16_t; + typedef __int32 int_fast32_t; + typedef __int64 int_fast64_t; + typedef unsigned __int8 uint_fast8_t; + typedef unsigned __int16 uint_fast16_t; + typedef unsigned __int32 uint_fast32_t; + typedef unsigned __int64 uint_fast64_t; + typedef __int64 intmax_t; + typedef unsigned __int64 uintmax_t; +# else +# include +# endif +# if _MSC_VER < 1800 /* MSVC < 2013 */ +# ifndef __cplusplus + typedef unsigned char _Bool; +# endif +# endif +# define _cffi_float_complex_t _Fcomplex /* include for it */ +# define _cffi_double_complex_t _Dcomplex /* include for it */ +#else +# include +# if (defined (__SVR4) && defined (__sun)) || defined(_AIX) || defined(__hpux) +# include +# endif +# define _cffi_float_complex_t float _Complex +# define _cffi_double_complex_t double _Complex +#endif + +#ifdef __GNUC__ +# define _CFFI_UNUSED_FN __attribute__((unused)) +#else +# define _CFFI_UNUSED_FN /* nothing */ +#endif + +#ifdef __cplusplus +# ifndef _Bool + typedef bool _Bool; /* semi-hackish: C++ has no _Bool; bool is builtin */ +# endif +#endif + +/********** CPython-specific section **********/ +#ifndef PYPY_VERSION + + +#if PY_MAJOR_VERSION >= 3 +# define PyInt_FromLong PyLong_FromLong +#endif + +#define _cffi_from_c_double PyFloat_FromDouble +#define _cffi_from_c_float PyFloat_FromDouble +#define _cffi_from_c_long PyInt_FromLong +#define _cffi_from_c_ulong PyLong_FromUnsignedLong +#define _cffi_from_c_longlong PyLong_FromLongLong +#define _cffi_from_c_ulonglong PyLong_FromUnsignedLongLong +#define _cffi_from_c__Bool PyBool_FromLong + +#define _cffi_to_c_double PyFloat_AsDouble +#define _cffi_to_c_float PyFloat_AsDouble + +#define _cffi_from_c_int(x, type) \ + (((type)-1) > 0 ? /* unsigned */ \ + (sizeof(type) < sizeof(long) ? \ + PyInt_FromLong((long)x) : \ + sizeof(type) == sizeof(long) ? \ + PyLong_FromUnsignedLong((unsigned long)x) : \ + PyLong_FromUnsignedLongLong((unsigned long long)x)) : \ + (sizeof(type) <= sizeof(long) ? \ + PyInt_FromLong((long)x) : \ + PyLong_FromLongLong((long long)x))) + +#define _cffi_to_c_int(o, type) \ + ((type)( \ + sizeof(type) == 1 ? (((type)-1) > 0 ? (type)_cffi_to_c_u8(o) \ + : (type)_cffi_to_c_i8(o)) : \ + sizeof(type) == 2 ? (((type)-1) > 0 ? (type)_cffi_to_c_u16(o) \ + : (type)_cffi_to_c_i16(o)) : \ + sizeof(type) == 4 ? (((type)-1) > 0 ? (type)_cffi_to_c_u32(o) \ + : (type)_cffi_to_c_i32(o)) : \ + sizeof(type) == 8 ? (((type)-1) > 0 ? (type)_cffi_to_c_u64(o) \ + : (type)_cffi_to_c_i64(o)) : \ + (Py_FatalError("unsupported size for type " #type), (type)0))) + +#define _cffi_to_c_i8 \ + ((int(*)(PyObject *))_cffi_exports[1]) +#define _cffi_to_c_u8 \ + ((int(*)(PyObject *))_cffi_exports[2]) +#define _cffi_to_c_i16 \ + ((int(*)(PyObject *))_cffi_exports[3]) +#define _cffi_to_c_u16 \ + ((int(*)(PyObject *))_cffi_exports[4]) +#define _cffi_to_c_i32 \ + ((int(*)(PyObject *))_cffi_exports[5]) +#define _cffi_to_c_u32 \ + ((unsigned int(*)(PyObject *))_cffi_exports[6]) +#define _cffi_to_c_i64 \ + ((long long(*)(PyObject *))_cffi_exports[7]) +#define _cffi_to_c_u64 \ + ((unsigned long long(*)(PyObject *))_cffi_exports[8]) +#define _cffi_to_c_char \ + ((int(*)(PyObject *))_cffi_exports[9]) +#define _cffi_from_c_pointer \ + ((PyObject *(*)(char *, struct _cffi_ctypedescr *))_cffi_exports[10]) +#define _cffi_to_c_pointer \ + ((char *(*)(PyObject *, struct _cffi_ctypedescr *))_cffi_exports[11]) +#define _cffi_get_struct_layout \ + not used any more +#define _cffi_restore_errno \ + ((void(*)(void))_cffi_exports[13]) +#define _cffi_save_errno \ + ((void(*)(void))_cffi_exports[14]) +#define _cffi_from_c_char \ + ((PyObject *(*)(char))_cffi_exports[15]) +#define _cffi_from_c_deref \ + ((PyObject *(*)(char *, struct _cffi_ctypedescr *))_cffi_exports[16]) +#define _cffi_to_c \ + ((int(*)(char *, struct _cffi_ctypedescr *, PyObject *))_cffi_exports[17]) +#define _cffi_from_c_struct \ + ((PyObject *(*)(char *, struct _cffi_ctypedescr *))_cffi_exports[18]) +#define _cffi_to_c_wchar_t \ + ((_cffi_wchar_t(*)(PyObject *))_cffi_exports[19]) +#define _cffi_from_c_wchar_t \ + ((PyObject *(*)(_cffi_wchar_t))_cffi_exports[20]) +#define _cffi_to_c_long_double \ + ((long double(*)(PyObject *))_cffi_exports[21]) +#define _cffi_to_c__Bool \ + ((_Bool(*)(PyObject *))_cffi_exports[22]) +#define _cffi_prepare_pointer_call_argument \ + ((Py_ssize_t(*)(struct _cffi_ctypedescr *, \ + PyObject *, char **))_cffi_exports[23]) +#define _cffi_convert_array_from_object \ + ((int(*)(char *, struct _cffi_ctypedescr *, PyObject *))_cffi_exports[24]) +#define _CFFI_CPIDX 25 +#define _cffi_call_python \ + ((void(*)(struct _cffi_externpy_s *, char *))_cffi_exports[_CFFI_CPIDX]) +#define _cffi_to_c_wchar3216_t \ + ((int(*)(PyObject *))_cffi_exports[26]) +#define _cffi_from_c_wchar3216_t \ + ((PyObject *(*)(int))_cffi_exports[27]) +#define _CFFI_NUM_EXPORTS 28 + +struct _cffi_ctypedescr; + +static void *_cffi_exports[_CFFI_NUM_EXPORTS]; + +#define _cffi_type(index) ( \ + assert((((uintptr_t)_cffi_types[index]) & 1) == 0), \ + (struct _cffi_ctypedescr *)_cffi_types[index]) + +static PyObject *_cffi_init(const char *module_name, Py_ssize_t version, + const struct _cffi_type_context_s *ctx) +{ + PyObject *module, *o_arg, *new_module; + void *raw[] = { + (void *)module_name, + (void *)version, + (void *)_cffi_exports, + (void *)ctx, + }; + + module = PyImport_ImportModule("_cffi_backend"); + if (module == NULL) + goto failure; + + o_arg = PyLong_FromVoidPtr((void *)raw); + if (o_arg == NULL) + goto failure; + + new_module = PyObject_CallMethod( + module, (char *)"_init_cffi_1_0_external_module", (char *)"O", o_arg); + + Py_DECREF(o_arg); + Py_DECREF(module); + return new_module; + + failure: + Py_XDECREF(module); + return NULL; +} + + +#ifdef HAVE_WCHAR_H +typedef wchar_t _cffi_wchar_t; +#else +typedef uint16_t _cffi_wchar_t; /* same random pick as _cffi_backend.c */ +#endif + +_CFFI_UNUSED_FN static uint16_t _cffi_to_c_char16_t(PyObject *o) +{ + if (sizeof(_cffi_wchar_t) == 2) + return (uint16_t)_cffi_to_c_wchar_t(o); + else + return (uint16_t)_cffi_to_c_wchar3216_t(o); +} + +_CFFI_UNUSED_FN static PyObject *_cffi_from_c_char16_t(uint16_t x) +{ + if (sizeof(_cffi_wchar_t) == 2) + return _cffi_from_c_wchar_t((_cffi_wchar_t)x); + else + return _cffi_from_c_wchar3216_t((int)x); +} + +_CFFI_UNUSED_FN static int _cffi_to_c_char32_t(PyObject *o) +{ + if (sizeof(_cffi_wchar_t) == 4) + return (int)_cffi_to_c_wchar_t(o); + else + return (int)_cffi_to_c_wchar3216_t(o); +} + +_CFFI_UNUSED_FN static PyObject *_cffi_from_c_char32_t(unsigned int x) +{ + if (sizeof(_cffi_wchar_t) == 4) + return _cffi_from_c_wchar_t((_cffi_wchar_t)x); + else + return _cffi_from_c_wchar3216_t((int)x); +} + +union _cffi_union_alignment_u { + unsigned char m_char; + unsigned short m_short; + unsigned int m_int; + unsigned long m_long; + unsigned long long m_longlong; + float m_float; + double m_double; + long double m_longdouble; +}; + +struct _cffi_freeme_s { + struct _cffi_freeme_s *next; + union _cffi_union_alignment_u alignment; +}; + +_CFFI_UNUSED_FN static int +_cffi_convert_array_argument(struct _cffi_ctypedescr *ctptr, PyObject *arg, + char **output_data, Py_ssize_t datasize, + struct _cffi_freeme_s **freeme) +{ + char *p; + if (datasize < 0) + return -1; + + p = *output_data; + if (p == NULL) { + struct _cffi_freeme_s *fp = (struct _cffi_freeme_s *)PyObject_Malloc( + offsetof(struct _cffi_freeme_s, alignment) + (size_t)datasize); + if (fp == NULL) + return -1; + fp->next = *freeme; + *freeme = fp; + p = *output_data = (char *)&fp->alignment; + } + memset((void *)p, 0, (size_t)datasize); + return _cffi_convert_array_from_object(p, ctptr, arg); +} + +_CFFI_UNUSED_FN static void +_cffi_free_array_arguments(struct _cffi_freeme_s *freeme) +{ + do { + void *p = (void *)freeme; + freeme = freeme->next; + PyObject_Free(p); + } while (freeme != NULL); +} + +/********** end CPython-specific section **********/ +#else +_CFFI_UNUSED_FN +static void (*_cffi_call_python_org)(struct _cffi_externpy_s *, char *); +# define _cffi_call_python _cffi_call_python_org +#endif + + +#define _cffi_array_len(array) (sizeof(array) / sizeof((array)[0])) + +#define _cffi_prim_int(size, sign) \ + ((size) == 1 ? ((sign) ? _CFFI_PRIM_INT8 : _CFFI_PRIM_UINT8) : \ + (size) == 2 ? ((sign) ? _CFFI_PRIM_INT16 : _CFFI_PRIM_UINT16) : \ + (size) == 4 ? ((sign) ? _CFFI_PRIM_INT32 : _CFFI_PRIM_UINT32) : \ + (size) == 8 ? ((sign) ? _CFFI_PRIM_INT64 : _CFFI_PRIM_UINT64) : \ + _CFFI__UNKNOWN_PRIM) + +#define _cffi_prim_float(size) \ + ((size) == sizeof(float) ? _CFFI_PRIM_FLOAT : \ + (size) == sizeof(double) ? _CFFI_PRIM_DOUBLE : \ + (size) == sizeof(long double) ? _CFFI__UNKNOWN_LONG_DOUBLE : \ + _CFFI__UNKNOWN_FLOAT_PRIM) + +#define _cffi_check_int(got, got_nonpos, expected) \ + ((got_nonpos) == (expected <= 0) && \ + (got) == (unsigned long long)expected) + +#ifdef MS_WIN32 +# define _cffi_stdcall __stdcall +#else +# define _cffi_stdcall /* nothing */ +#endif + +#ifdef __cplusplus +} +#endif diff --git a/venv/lib/python3.12/site-packages/cffi/_embedding.h b/venv/lib/python3.12/site-packages/cffi/_embedding.h new file mode 100644 index 00000000..64c04f67 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi/_embedding.h @@ -0,0 +1,550 @@ + +/***** Support code for embedding *****/ + +#ifdef __cplusplus +extern "C" { +#endif + + +#if defined(_WIN32) +# define CFFI_DLLEXPORT __declspec(dllexport) +#elif defined(__GNUC__) +# define CFFI_DLLEXPORT __attribute__((visibility("default"))) +#else +# define CFFI_DLLEXPORT /* nothing */ +#endif + + +/* There are two global variables of type _cffi_call_python_fnptr: + + * _cffi_call_python, which we declare just below, is the one called + by ``extern "Python"`` implementations. + + * _cffi_call_python_org, which on CPython is actually part of the + _cffi_exports[] array, is the function pointer copied from + _cffi_backend. If _cffi_start_python() fails, then this is set + to NULL; otherwise, it should never be NULL. + + After initialization is complete, both are equal. However, the + first one remains equal to &_cffi_start_and_call_python until the + very end of initialization, when we are (or should be) sure that + concurrent threads also see a completely initialized world, and + only then is it changed. +*/ +#undef _cffi_call_python +typedef void (*_cffi_call_python_fnptr)(struct _cffi_externpy_s *, char *); +static void _cffi_start_and_call_python(struct _cffi_externpy_s *, char *); +static _cffi_call_python_fnptr _cffi_call_python = &_cffi_start_and_call_python; + + +#ifndef _MSC_VER + /* --- Assuming a GCC not infinitely old --- */ +# define cffi_compare_and_swap(l,o,n) __sync_bool_compare_and_swap(l,o,n) +# define cffi_write_barrier() __sync_synchronize() +# if !defined(__amd64__) && !defined(__x86_64__) && \ + !defined(__i386__) && !defined(__i386) +# define cffi_read_barrier() __sync_synchronize() +# else +# define cffi_read_barrier() (void)0 +# endif +#else + /* --- Windows threads version --- */ +# include +# define cffi_compare_and_swap(l,o,n) \ + (InterlockedCompareExchangePointer(l,n,o) == (o)) +# define cffi_write_barrier() InterlockedCompareExchange(&_cffi_dummy,0,0) +# define cffi_read_barrier() (void)0 +static volatile LONG _cffi_dummy; +#endif + +#ifdef WITH_THREAD +# ifndef _MSC_VER +# include + static pthread_mutex_t _cffi_embed_startup_lock; +# else + static CRITICAL_SECTION _cffi_embed_startup_lock; +# endif + static char _cffi_embed_startup_lock_ready = 0; +#endif + +static void _cffi_acquire_reentrant_mutex(void) +{ + static void *volatile lock = NULL; + + while (!cffi_compare_and_swap(&lock, NULL, (void *)1)) { + /* should ideally do a spin loop instruction here, but + hard to do it portably and doesn't really matter I + think: pthread_mutex_init() should be very fast, and + this is only run at start-up anyway. */ + } + +#ifdef WITH_THREAD + if (!_cffi_embed_startup_lock_ready) { +# ifndef _MSC_VER + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + pthread_mutex_init(&_cffi_embed_startup_lock, &attr); +# else + InitializeCriticalSection(&_cffi_embed_startup_lock); +# endif + _cffi_embed_startup_lock_ready = 1; + } +#endif + + while (!cffi_compare_and_swap(&lock, (void *)1, NULL)) + ; + +#ifndef _MSC_VER + pthread_mutex_lock(&_cffi_embed_startup_lock); +#else + EnterCriticalSection(&_cffi_embed_startup_lock); +#endif +} + +static void _cffi_release_reentrant_mutex(void) +{ +#ifndef _MSC_VER + pthread_mutex_unlock(&_cffi_embed_startup_lock); +#else + LeaveCriticalSection(&_cffi_embed_startup_lock); +#endif +} + + +/********** CPython-specific section **********/ +#ifndef PYPY_VERSION + +#include "_cffi_errors.h" + + +#define _cffi_call_python_org _cffi_exports[_CFFI_CPIDX] + +PyMODINIT_FUNC _CFFI_PYTHON_STARTUP_FUNC(void); /* forward */ + +static void _cffi_py_initialize(void) +{ + /* XXX use initsigs=0, which "skips initialization registration of + signal handlers, which might be useful when Python is + embedded" according to the Python docs. But review and think + if it should be a user-controllable setting. + + XXX we should also give a way to write errors to a buffer + instead of to stderr. + + XXX if importing 'site' fails, CPython (any version) calls + exit(). Should we try to work around this behavior here? + */ + Py_InitializeEx(0); +} + +static int _cffi_initialize_python(void) +{ + /* This initializes Python, imports _cffi_backend, and then the + present .dll/.so is set up as a CPython C extension module. + */ + int result; + PyGILState_STATE state; + PyObject *pycode=NULL, *global_dict=NULL, *x; + PyObject *builtins; + + state = PyGILState_Ensure(); + + /* Call the initxxx() function from the present module. It will + create and initialize us as a CPython extension module, instead + of letting the startup Python code do it---it might reimport + the same .dll/.so and get maybe confused on some platforms. + It might also have troubles locating the .dll/.so again for all + I know. + */ + (void)_CFFI_PYTHON_STARTUP_FUNC(); + if (PyErr_Occurred()) + goto error; + + /* Now run the Python code provided to ffi.embedding_init_code(). + */ + pycode = Py_CompileString(_CFFI_PYTHON_STARTUP_CODE, + "", + Py_file_input); + if (pycode == NULL) + goto error; + global_dict = PyDict_New(); + if (global_dict == NULL) + goto error; + builtins = PyEval_GetBuiltins(); + if (builtins == NULL) + goto error; + if (PyDict_SetItemString(global_dict, "__builtins__", builtins) < 0) + goto error; + x = PyEval_EvalCode( +#if PY_MAJOR_VERSION < 3 + (PyCodeObject *) +#endif + pycode, global_dict, global_dict); + if (x == NULL) + goto error; + Py_DECREF(x); + + /* Done! Now if we've been called from + _cffi_start_and_call_python() in an ``extern "Python"``, we can + only hope that the Python code did correctly set up the + corresponding @ffi.def_extern() function. Otherwise, the + general logic of ``extern "Python"`` functions (inside the + _cffi_backend module) will find that the reference is still + missing and print an error. + */ + result = 0; + done: + Py_XDECREF(pycode); + Py_XDECREF(global_dict); + PyGILState_Release(state); + return result; + + error:; + { + /* Print as much information as potentially useful. + Debugging load-time failures with embedding is not fun + */ + PyObject *ecap; + PyObject *exception, *v, *tb, *f, *modules, *mod; + PyErr_Fetch(&exception, &v, &tb); + ecap = _cffi_start_error_capture(); + f = PySys_GetObject((char *)"stderr"); + if (f != NULL && f != Py_None) { + PyFile_WriteString( + "Failed to initialize the Python-CFFI embedding logic:\n\n", f); + } + + if (exception != NULL) { + PyErr_NormalizeException(&exception, &v, &tb); + PyErr_Display(exception, v, tb); + } + Py_XDECREF(exception); + Py_XDECREF(v); + Py_XDECREF(tb); + + if (f != NULL && f != Py_None) { + PyFile_WriteString("\nFrom: " _CFFI_MODULE_NAME + "\ncompiled with cffi version: 2.0.0" + "\n_cffi_backend module: ", f); + modules = PyImport_GetModuleDict(); + mod = PyDict_GetItemString(modules, "_cffi_backend"); + if (mod == NULL) { + PyFile_WriteString("not loaded", f); + } + else { + v = PyObject_GetAttrString(mod, "__file__"); + PyFile_WriteObject(v, f, 0); + Py_XDECREF(v); + } + PyFile_WriteString("\nsys.path: ", f); + PyFile_WriteObject(PySys_GetObject((char *)"path"), f, 0); + PyFile_WriteString("\n\n", f); + } + _cffi_stop_error_capture(ecap); + } + result = -1; + goto done; +} + +#if PY_VERSION_HEX < 0x03080000 +PyAPI_DATA(char *) _PyParser_TokenNames[]; /* from CPython */ +#endif + +static int _cffi_carefully_make_gil(void) +{ + /* This does the basic initialization of Python. It can be called + completely concurrently from unrelated threads. It assumes + that we don't hold the GIL before (if it exists), and we don't + hold it afterwards. + + (What it really does used to be completely different in Python 2 + and Python 3, with the Python 2 solution avoiding the spin-lock + around the Py_InitializeEx() call. However, after recent changes + to CPython 2.7 (issue #358) it no longer works. So we use the + Python 3 solution everywhere.) + + This initializes Python by calling Py_InitializeEx(). + Important: this must not be called concurrently at all. + So we use a global variable as a simple spin lock. This global + variable must be from 'libpythonX.Y.so', not from this + cffi-based extension module, because it must be shared from + different cffi-based extension modules. + + In Python < 3.8, we choose + _PyParser_TokenNames[0] as a completely arbitrary pointer value + that is never written to. The default is to point to the + string "ENDMARKER". We change it temporarily to point to the + next character in that string. (Yes, I know it's REALLY + obscure.) + + In Python >= 3.8, this string array is no longer writable, so + instead we pick PyCapsuleType.tp_version_tag. We can't change + Python < 3.8 because someone might use a mixture of cffi + embedded modules, some of which were compiled before this file + changed. + + In Python >= 3.12, this stopped working because that particular + tp_version_tag gets modified during interpreter startup. It's + arguably a bad idea before 3.12 too, but again we can't change + that because someone might use a mixture of cffi embedded + modules, and no-one reported a bug so far. In Python >= 3.12 + we go instead for PyCapsuleType.tp_as_buffer, which is supposed + to always be NULL. We write to it temporarily a pointer to + a struct full of NULLs, which is semantically the same. + */ + +#ifdef WITH_THREAD +# if PY_VERSION_HEX < 0x03080000 + char *volatile *lock = (char *volatile *)_PyParser_TokenNames; + char *old_value, *locked_value; + + while (1) { /* spin loop */ + old_value = *lock; + locked_value = old_value + 1; + if (old_value[0] == 'E') { + assert(old_value[1] == 'N'); + if (cffi_compare_and_swap(lock, old_value, locked_value)) + break; + } + else { + assert(old_value[0] == 'N'); + /* should ideally do a spin loop instruction here, but + hard to do it portably and doesn't really matter I + think: PyEval_InitThreads() should be very fast, and + this is only run at start-up anyway. */ + } + } +# else +# if PY_VERSION_HEX < 0x030C0000 + int volatile *lock = (int volatile *)&PyCapsule_Type.tp_version_tag; + int old_value, locked_value = -42; + assert(!(PyCapsule_Type.tp_flags & Py_TPFLAGS_HAVE_VERSION_TAG)); +# else + static struct ebp_s { PyBufferProcs buf; int mark; } empty_buffer_procs; + empty_buffer_procs.mark = -42; + PyBufferProcs *volatile *lock = (PyBufferProcs *volatile *) + &PyCapsule_Type.tp_as_buffer; + PyBufferProcs *old_value, *locked_value = &empty_buffer_procs.buf; +# endif + + while (1) { /* spin loop */ + old_value = *lock; + if (old_value == 0) { + if (cffi_compare_and_swap(lock, old_value, locked_value)) + break; + } + else { +# if PY_VERSION_HEX < 0x030C0000 + assert(old_value == locked_value); +# else + /* The pointer should point to a possibly different + empty_buffer_procs from another C extension module */ + assert(((struct ebp_s *)old_value)->mark == -42); +# endif + /* should ideally do a spin loop instruction here, but + hard to do it portably and doesn't really matter I + think: PyEval_InitThreads() should be very fast, and + this is only run at start-up anyway. */ + } + } +# endif +#endif + + /* call Py_InitializeEx() */ + if (!Py_IsInitialized()) { + _cffi_py_initialize(); +#if PY_VERSION_HEX < 0x03070000 + PyEval_InitThreads(); +#endif + PyEval_SaveThread(); /* release the GIL */ + /* the returned tstate must be the one that has been stored into the + autoTLSkey by _PyGILState_Init() called from Py_Initialize(). */ + } + else { +#if PY_VERSION_HEX < 0x03070000 + /* PyEval_InitThreads() is always a no-op from CPython 3.7 */ + PyGILState_STATE state = PyGILState_Ensure(); + PyEval_InitThreads(); + PyGILState_Release(state); +#endif + } + +#ifdef WITH_THREAD + /* release the lock */ + while (!cffi_compare_and_swap(lock, locked_value, old_value)) + ; +#endif + + return 0; +} + +/********** end CPython-specific section **********/ + + +#else + + +/********** PyPy-specific section **********/ + +PyMODINIT_FUNC _CFFI_PYTHON_STARTUP_FUNC(const void *[]); /* forward */ + +static struct _cffi_pypy_init_s { + const char *name; + void *func; /* function pointer */ + const char *code; +} _cffi_pypy_init = { + _CFFI_MODULE_NAME, + _CFFI_PYTHON_STARTUP_FUNC, + _CFFI_PYTHON_STARTUP_CODE, +}; + +extern int pypy_carefully_make_gil(const char *); +extern int pypy_init_embedded_cffi_module(int, struct _cffi_pypy_init_s *); + +static int _cffi_carefully_make_gil(void) +{ + return pypy_carefully_make_gil(_CFFI_MODULE_NAME); +} + +static int _cffi_initialize_python(void) +{ + return pypy_init_embedded_cffi_module(0xB011, &_cffi_pypy_init); +} + +/********** end PyPy-specific section **********/ + + +#endif + + +#ifdef __GNUC__ +__attribute__((noinline)) +#endif +static _cffi_call_python_fnptr _cffi_start_python(void) +{ + /* Delicate logic to initialize Python. This function can be + called multiple times concurrently, e.g. when the process calls + its first ``extern "Python"`` functions in multiple threads at + once. It can also be called recursively, in which case we must + ignore it. We also have to consider what occurs if several + different cffi-based extensions reach this code in parallel + threads---it is a different copy of the code, then, and we + can't have any shared global variable unless it comes from + 'libpythonX.Y.so'. + + Idea: + + * _cffi_carefully_make_gil(): "carefully" call + PyEval_InitThreads() (possibly with Py_InitializeEx() first). + + * then we use a (local) custom lock to make sure that a call to this + cffi-based extension will wait if another call to the *same* + extension is running the initialization in another thread. + It is reentrant, so that a recursive call will not block, but + only one from a different thread. + + * then we grab the GIL and (Python 2) we call Py_InitializeEx(). + At this point, concurrent calls to Py_InitializeEx() are not + possible: we have the GIL. + + * do the rest of the specific initialization, which may + temporarily release the GIL but not the custom lock. + Only release the custom lock when we are done. + */ + static char called = 0; + + if (_cffi_carefully_make_gil() != 0) + return NULL; + + _cffi_acquire_reentrant_mutex(); + + /* Here the GIL exists, but we don't have it. We're only protected + from concurrency by the reentrant mutex. */ + + /* This file only initializes the embedded module once, the first + time this is called, even if there are subinterpreters. */ + if (!called) { + called = 1; /* invoke _cffi_initialize_python() only once, + but don't set '_cffi_call_python' right now, + otherwise concurrent threads won't call + this function at all (we need them to wait) */ + if (_cffi_initialize_python() == 0) { + /* now initialization is finished. Switch to the fast-path. */ + + /* We would like nobody to see the new value of + '_cffi_call_python' without also seeing the rest of the + data initialized. However, this is not possible. But + the new value of '_cffi_call_python' is the function + 'cffi_call_python()' from _cffi_backend. So: */ + cffi_write_barrier(); + /* ^^^ we put a write barrier here, and a corresponding + read barrier at the start of cffi_call_python(). This + ensures that after that read barrier, we see everything + done here before the write barrier. + */ + + assert(_cffi_call_python_org != NULL); + _cffi_call_python = (_cffi_call_python_fnptr)_cffi_call_python_org; + } + else { + /* initialization failed. Reset this to NULL, even if it was + already set to some other value. Future calls to + _cffi_start_python() are still forced to occur, and will + always return NULL from now on. */ + _cffi_call_python_org = NULL; + } + } + + _cffi_release_reentrant_mutex(); + + return (_cffi_call_python_fnptr)_cffi_call_python_org; +} + +static +void _cffi_start_and_call_python(struct _cffi_externpy_s *externpy, char *args) +{ + _cffi_call_python_fnptr fnptr; + int current_err = errno; +#ifdef _MSC_VER + int current_lasterr = GetLastError(); +#endif + fnptr = _cffi_start_python(); + if (fnptr == NULL) { + fprintf(stderr, "function %s() called, but initialization code " + "failed. Returning 0.\n", externpy->name); + memset(args, 0, externpy->size_of_result); + } +#ifdef _MSC_VER + SetLastError(current_lasterr); +#endif + errno = current_err; + + if (fnptr != NULL) + fnptr(externpy, args); +} + + +/* The cffi_start_python() function makes sure Python is initialized + and our cffi module is set up. It can be called manually from the + user C code. The same effect is obtained automatically from any + dll-exported ``extern "Python"`` function. This function returns + -1 if initialization failed, 0 if all is OK. */ +_CFFI_UNUSED_FN +static int cffi_start_python(void) +{ + if (_cffi_call_python == &_cffi_start_and_call_python) { + if (_cffi_start_python() == NULL) + return -1; + } + cffi_read_barrier(); + return 0; +} + +#undef cffi_compare_and_swap +#undef cffi_write_barrier +#undef cffi_read_barrier + +#ifdef __cplusplus +} +#endif diff --git a/venv/lib/python3.12/site-packages/cffi/_imp_emulation.py b/venv/lib/python3.12/site-packages/cffi/_imp_emulation.py new file mode 100644 index 00000000..136abddd --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi/_imp_emulation.py @@ -0,0 +1,83 @@ + +try: + # this works on Python < 3.12 + from imp import * + +except ImportError: + # this is a limited emulation for Python >= 3.12. + # Note that this is used only for tests or for the old ffi.verify(). + # This is copied from the source code of Python 3.11. + + from _imp import (acquire_lock, release_lock, + is_builtin, is_frozen) + + from importlib._bootstrap import _load + + from importlib import machinery + import os + import sys + import tokenize + + SEARCH_ERROR = 0 + PY_SOURCE = 1 + PY_COMPILED = 2 + C_EXTENSION = 3 + PY_RESOURCE = 4 + PKG_DIRECTORY = 5 + C_BUILTIN = 6 + PY_FROZEN = 7 + PY_CODERESOURCE = 8 + IMP_HOOK = 9 + + def get_suffixes(): + extensions = [(s, 'rb', C_EXTENSION) + for s in machinery.EXTENSION_SUFFIXES] + source = [(s, 'r', PY_SOURCE) for s in machinery.SOURCE_SUFFIXES] + bytecode = [(s, 'rb', PY_COMPILED) for s in machinery.BYTECODE_SUFFIXES] + return extensions + source + bytecode + + def find_module(name, path=None): + if not isinstance(name, str): + raise TypeError("'name' must be a str, not {}".format(type(name))) + elif not isinstance(path, (type(None), list)): + # Backwards-compatibility + raise RuntimeError("'path' must be None or a list, " + "not {}".format(type(path))) + + if path is None: + if is_builtin(name): + return None, None, ('', '', C_BUILTIN) + elif is_frozen(name): + return None, None, ('', '', PY_FROZEN) + else: + path = sys.path + + for entry in path: + package_directory = os.path.join(entry, name) + for suffix in ['.py', machinery.BYTECODE_SUFFIXES[0]]: + package_file_name = '__init__' + suffix + file_path = os.path.join(package_directory, package_file_name) + if os.path.isfile(file_path): + return None, package_directory, ('', '', PKG_DIRECTORY) + for suffix, mode, type_ in get_suffixes(): + file_name = name + suffix + file_path = os.path.join(entry, file_name) + if os.path.isfile(file_path): + break + else: + continue + break # Break out of outer loop when breaking out of inner loop. + else: + raise ImportError(name, name=name) + + encoding = None + if 'b' not in mode: + with open(file_path, 'rb') as file: + encoding = tokenize.detect_encoding(file.readline)[0] + file = open(file_path, mode, encoding=encoding) + return file, file_path, (suffix, mode, type_) + + def load_dynamic(name, path, file=None): + loader = machinery.ExtensionFileLoader(name, path) + spec = machinery.ModuleSpec(name=name, loader=loader, origin=path) + return _load(spec) diff --git a/venv/lib/python3.12/site-packages/cffi/_shimmed_dist_utils.py b/venv/lib/python3.12/site-packages/cffi/_shimmed_dist_utils.py new file mode 100644 index 00000000..c3d23128 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi/_shimmed_dist_utils.py @@ -0,0 +1,45 @@ +""" +Temporary shim module to indirect the bits of distutils we need from setuptools/distutils while providing useful +error messages beyond `No module named 'distutils' on Python >= 3.12, or when setuptools' vendored distutils is broken. + +This is a compromise to avoid a hard-dep on setuptools for Python >= 3.12, since many users don't need runtime compilation support from CFFI. +""" +import sys + +try: + # import setuptools first; this is the most robust way to ensure its embedded distutils is available + # (the .pth shim should usually work, but this is even more robust) + import setuptools +except Exception as ex: + if sys.version_info >= (3, 12): + # Python 3.12 has no built-in distutils to fall back on, so any import problem is fatal + raise Exception("This CFFI feature requires setuptools on Python >= 3.12. The setuptools module is missing or non-functional.") from ex + + # silently ignore on older Pythons (support fallback to stdlib distutils where available) +else: + del setuptools + +try: + # bring in just the bits of distutils we need, whether they really came from setuptools or stdlib-embedded distutils + from distutils import log, sysconfig + from distutils.ccompiler import CCompiler + from distutils.command.build_ext import build_ext + from distutils.core import Distribution, Extension + from distutils.dir_util import mkpath + from distutils.errors import DistutilsSetupError, CompileError, LinkError + from distutils.log import set_threshold, set_verbosity + + if sys.platform == 'win32': + try: + # FUTURE: msvc9compiler module was removed in setuptools 74; consider removing, as it's only used by an ancient patch in `recompiler` + from distutils.msvc9compiler import MSVCCompiler + except ImportError: + MSVCCompiler = None +except Exception as ex: + if sys.version_info >= (3, 12): + raise Exception("This CFFI feature requires setuptools on Python >= 3.12. Please install the setuptools package.") from ex + + # anything older, just let the underlying distutils import error fly + raise Exception("This CFFI feature requires distutils. Please install the distutils or setuptools package.") from ex + +del sys diff --git a/venv/lib/python3.12/site-packages/cffi/api.py b/venv/lib/python3.12/site-packages/cffi/api.py new file mode 100644 index 00000000..5a474f3d --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi/api.py @@ -0,0 +1,967 @@ +import sys, types +from .lock import allocate_lock +from .error import CDefError +from . import model + +try: + callable +except NameError: + # Python 3.1 + from collections import Callable + callable = lambda x: isinstance(x, Callable) + +try: + basestring +except NameError: + # Python 3.x + basestring = str + +_unspecified = object() + + + +class FFI(object): + r''' + The main top-level class that you instantiate once, or once per module. + + Example usage: + + ffi = FFI() + ffi.cdef(""" + int printf(const char *, ...); + """) + + C = ffi.dlopen(None) # standard library + -or- + C = ffi.verify() # use a C compiler: verify the decl above is right + + C.printf("hello, %s!\n", ffi.new("char[]", "world")) + ''' + + def __init__(self, backend=None): + """Create an FFI instance. The 'backend' argument is used to + select a non-default backend, mostly for tests. + """ + if backend is None: + # You need PyPy (>= 2.0 beta), or a CPython (>= 2.6) with + # _cffi_backend.so compiled. + import _cffi_backend as backend + from . import __version__ + if backend.__version__ != __version__: + # bad version! Try to be as explicit as possible. + if hasattr(backend, '__file__'): + # CPython + raise Exception("Version mismatch: this is the 'cffi' package version %s, located in %r. When we import the top-level '_cffi_backend' extension module, we get version %s, located in %r. The two versions should be equal; check your installation." % ( + __version__, __file__, + backend.__version__, backend.__file__)) + else: + # PyPy + raise Exception("Version mismatch: this is the 'cffi' package version %s, located in %r. This interpreter comes with a built-in '_cffi_backend' module, which is version %s. The two versions should be equal; check your installation." % ( + __version__, __file__, backend.__version__)) + # (If you insist you can also try to pass the option + # 'backend=backend_ctypes.CTypesBackend()', but don't + # rely on it! It's probably not going to work well.) + + from . import cparser + self._backend = backend + self._lock = allocate_lock() + self._parser = cparser.Parser() + self._cached_btypes = {} + self._parsed_types = types.ModuleType('parsed_types').__dict__ + self._new_types = types.ModuleType('new_types').__dict__ + self._function_caches = [] + self._libraries = [] + self._cdefsources = [] + self._included_ffis = [] + self._windows_unicode = None + self._init_once_cache = {} + self._cdef_version = None + self._embedding = None + self._typecache = model.get_typecache(backend) + if hasattr(backend, 'set_ffi'): + backend.set_ffi(self) + for name in list(backend.__dict__): + if name.startswith('RTLD_'): + setattr(self, name, getattr(backend, name)) + # + with self._lock: + self.BVoidP = self._get_cached_btype(model.voidp_type) + self.BCharA = self._get_cached_btype(model.char_array_type) + if isinstance(backend, types.ModuleType): + # _cffi_backend: attach these constants to the class + if not hasattr(FFI, 'NULL'): + FFI.NULL = self.cast(self.BVoidP, 0) + FFI.CData, FFI.CType = backend._get_types() + else: + # ctypes backend: attach these constants to the instance + self.NULL = self.cast(self.BVoidP, 0) + self.CData, self.CType = backend._get_types() + self.buffer = backend.buffer + + def cdef(self, csource, override=False, packed=False, pack=None): + """Parse the given C source. This registers all declared functions, + types, and global variables. The functions and global variables can + then be accessed via either 'ffi.dlopen()' or 'ffi.verify()'. + The types can be used in 'ffi.new()' and other functions. + If 'packed' is specified as True, all structs declared inside this + cdef are packed, i.e. laid out without any field alignment at all. + Alternatively, 'pack' can be a small integer, and requests for + alignment greater than that are ignored (pack=1 is equivalent to + packed=True). + """ + self._cdef(csource, override=override, packed=packed, pack=pack) + + def embedding_api(self, csource, packed=False, pack=None): + self._cdef(csource, packed=packed, pack=pack, dllexport=True) + if self._embedding is None: + self._embedding = '' + + def _cdef(self, csource, override=False, **options): + if not isinstance(csource, str): # unicode, on Python 2 + if not isinstance(csource, basestring): + raise TypeError("cdef() argument must be a string") + csource = csource.encode('ascii') + with self._lock: + self._cdef_version = object() + self._parser.parse(csource, override=override, **options) + self._cdefsources.append(csource) + if override: + for cache in self._function_caches: + cache.clear() + finishlist = self._parser._recomplete + if finishlist: + self._parser._recomplete = [] + for tp in finishlist: + tp.finish_backend_type(self, finishlist) + + def dlopen(self, name, flags=0): + """Load and return a dynamic library identified by 'name'. + The standard C library can be loaded by passing None. + Note that functions and types declared by 'ffi.cdef()' are not + linked to a particular library, just like C headers; in the + library we only look for the actual (untyped) symbols. + """ + if not (isinstance(name, basestring) or + name is None or + isinstance(name, self.CData)): + raise TypeError("dlopen(name): name must be a file name, None, " + "or an already-opened 'void *' handle") + with self._lock: + lib, function_cache = _make_ffi_library(self, name, flags) + self._function_caches.append(function_cache) + self._libraries.append(lib) + return lib + + def dlclose(self, lib): + """Close a library obtained with ffi.dlopen(). After this call, + access to functions or variables from the library will fail + (possibly with a segmentation fault). + """ + type(lib).__cffi_close__(lib) + + def _typeof_locked(self, cdecl): + # call me with the lock! + key = cdecl + if key in self._parsed_types: + return self._parsed_types[key] + # + if not isinstance(cdecl, str): # unicode, on Python 2 + cdecl = cdecl.encode('ascii') + # + type = self._parser.parse_type(cdecl) + really_a_function_type = type.is_raw_function + if really_a_function_type: + type = type.as_function_pointer() + btype = self._get_cached_btype(type) + result = btype, really_a_function_type + self._parsed_types[key] = result + return result + + def _typeof(self, cdecl, consider_function_as_funcptr=False): + # string -> ctype object + try: + result = self._parsed_types[cdecl] + except KeyError: + with self._lock: + result = self._typeof_locked(cdecl) + # + btype, really_a_function_type = result + if really_a_function_type and not consider_function_as_funcptr: + raise CDefError("the type %r is a function type, not a " + "pointer-to-function type" % (cdecl,)) + return btype + + def typeof(self, cdecl): + """Parse the C type given as a string and return the + corresponding object. + It can also be used on 'cdata' instance to get its C type. + """ + if isinstance(cdecl, basestring): + return self._typeof(cdecl) + if isinstance(cdecl, self.CData): + return self._backend.typeof(cdecl) + if isinstance(cdecl, types.BuiltinFunctionType): + res = _builtin_function_type(cdecl) + if res is not None: + return res + if (isinstance(cdecl, types.FunctionType) + and hasattr(cdecl, '_cffi_base_type')): + with self._lock: + return self._get_cached_btype(cdecl._cffi_base_type) + raise TypeError(type(cdecl)) + + def sizeof(self, cdecl): + """Return the size in bytes of the argument. It can be a + string naming a C type, or a 'cdata' instance. + """ + if isinstance(cdecl, basestring): + BType = self._typeof(cdecl) + return self._backend.sizeof(BType) + else: + return self._backend.sizeof(cdecl) + + def alignof(self, cdecl): + """Return the natural alignment size in bytes of the C type + given as a string. + """ + if isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl) + return self._backend.alignof(cdecl) + + def offsetof(self, cdecl, *fields_or_indexes): + """Return the offset of the named field inside the given + structure or array, which must be given as a C type name. + You can give several field names in case of nested structures. + You can also give numeric values which correspond to array + items, in case of an array type. + """ + if isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl) + return self._typeoffsetof(cdecl, *fields_or_indexes)[1] + + def new(self, cdecl, init=None): + """Allocate an instance according to the specified C type and + return a pointer to it. The specified C type must be either a + pointer or an array: ``new('X *')`` allocates an X and returns + a pointer to it, whereas ``new('X[n]')`` allocates an array of + n X'es and returns an array referencing it (which works + mostly like a pointer, like in C). You can also use + ``new('X[]', n)`` to allocate an array of a non-constant + length n. + + The memory is initialized following the rules of declaring a + global variable in C: by default it is zero-initialized, but + an explicit initializer can be given which can be used to + fill all or part of the memory. + + When the returned object goes out of scope, the memory + is freed. In other words the returned object has + ownership of the value of type 'cdecl' that it points to. This + means that the raw data can be used as long as this object is + kept alive, but must not be used for a longer time. Be careful + about that when copying the pointer to the memory somewhere + else, e.g. into another structure. + """ + if isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl) + return self._backend.newp(cdecl, init) + + def new_allocator(self, alloc=None, free=None, + should_clear_after_alloc=True): + """Return a new allocator, i.e. a function that behaves like ffi.new() + but uses the provided low-level 'alloc' and 'free' functions. + + 'alloc' is called with the size as argument. If it returns NULL, a + MemoryError is raised. 'free' is called with the result of 'alloc' + as argument. Both can be either Python function or directly C + functions. If 'free' is None, then no free function is called. + If both 'alloc' and 'free' are None, the default is used. + + If 'should_clear_after_alloc' is set to False, then the memory + returned by 'alloc' is assumed to be already cleared (or you are + fine with garbage); otherwise CFFI will clear it. + """ + compiled_ffi = self._backend.FFI() + allocator = compiled_ffi.new_allocator(alloc, free, + should_clear_after_alloc) + def allocate(cdecl, init=None): + if isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl) + return allocator(cdecl, init) + return allocate + + def cast(self, cdecl, source): + """Similar to a C cast: returns an instance of the named C + type initialized with the given 'source'. The source is + casted between integers or pointers of any type. + """ + if isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl) + return self._backend.cast(cdecl, source) + + def string(self, cdata, maxlen=-1): + """Return a Python string (or unicode string) from the 'cdata'. + If 'cdata' is a pointer or array of characters or bytes, returns + the null-terminated string. The returned string extends until + the first null character, or at most 'maxlen' characters. If + 'cdata' is an array then 'maxlen' defaults to its length. + + If 'cdata' is a pointer or array of wchar_t, returns a unicode + string following the same rules. + + If 'cdata' is a single character or byte or a wchar_t, returns + it as a string or unicode string. + + If 'cdata' is an enum, returns the value of the enumerator as a + string, or 'NUMBER' if the value is out of range. + """ + return self._backend.string(cdata, maxlen) + + def unpack(self, cdata, length): + """Unpack an array of C data of the given length, + returning a Python string/unicode/list. + + If 'cdata' is a pointer to 'char', returns a byte string. + It does not stop at the first null. This is equivalent to: + ffi.buffer(cdata, length)[:] + + If 'cdata' is a pointer to 'wchar_t', returns a unicode string. + 'length' is measured in wchar_t's; it is not the size in bytes. + + If 'cdata' is a pointer to anything else, returns a list of + 'length' items. This is a faster equivalent to: + [cdata[i] for i in range(length)] + """ + return self._backend.unpack(cdata, length) + + #def buffer(self, cdata, size=-1): + # """Return a read-write buffer object that references the raw C data + # pointed to by the given 'cdata'. The 'cdata' must be a pointer or + # an array. Can be passed to functions expecting a buffer, or directly + # manipulated with: + # + # buf[:] get a copy of it in a regular string, or + # buf[idx] as a single character + # buf[:] = ... + # buf[idx] = ... change the content + # """ + # note that 'buffer' is a type, set on this instance by __init__ + + def from_buffer(self, cdecl, python_buffer=_unspecified, + require_writable=False): + """Return a cdata of the given type pointing to the data of the + given Python object, which must support the buffer interface. + Note that this is not meant to be used on the built-in types + str or unicode (you can build 'char[]' arrays explicitly) + but only on objects containing large quantities of raw data + in some other format, like 'array.array' or numpy arrays. + + The first argument is optional and default to 'char[]'. + """ + if python_buffer is _unspecified: + cdecl, python_buffer = self.BCharA, cdecl + elif isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl) + return self._backend.from_buffer(cdecl, python_buffer, + require_writable) + + def memmove(self, dest, src, n): + """ffi.memmove(dest, src, n) copies n bytes of memory from src to dest. + + Like the C function memmove(), the memory areas may overlap; + apart from that it behaves like the C function memcpy(). + + 'src' can be any cdata ptr or array, or any Python buffer object. + 'dest' can be any cdata ptr or array, or a writable Python buffer + object. The size to copy, 'n', is always measured in bytes. + + Unlike other methods, this one supports all Python buffer including + byte strings and bytearrays---but it still does not support + non-contiguous buffers. + """ + return self._backend.memmove(dest, src, n) + + def callback(self, cdecl, python_callable=None, error=None, onerror=None): + """Return a callback object or a decorator making such a + callback object. 'cdecl' must name a C function pointer type. + The callback invokes the specified 'python_callable' (which may + be provided either directly or via a decorator). Important: the + callback object must be manually kept alive for as long as the + callback may be invoked from the C level. + """ + def callback_decorator_wrap(python_callable): + if not callable(python_callable): + raise TypeError("the 'python_callable' argument " + "is not callable") + return self._backend.callback(cdecl, python_callable, + error, onerror) + if isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl, consider_function_as_funcptr=True) + if python_callable is None: + return callback_decorator_wrap # decorator mode + else: + return callback_decorator_wrap(python_callable) # direct mode + + def getctype(self, cdecl, replace_with=''): + """Return a string giving the C type 'cdecl', which may be itself + a string or a object. If 'replace_with' is given, it gives + extra text to append (or insert for more complicated C types), like + a variable name, or '*' to get actually the C type 'pointer-to-cdecl'. + """ + if isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl) + replace_with = replace_with.strip() + if (replace_with.startswith('*') + and '&[' in self._backend.getcname(cdecl, '&')): + replace_with = '(%s)' % replace_with + elif replace_with and not replace_with[0] in '[(': + replace_with = ' ' + replace_with + return self._backend.getcname(cdecl, replace_with) + + def gc(self, cdata, destructor, size=0): + """Return a new cdata object that points to the same + data. Later, when this new cdata object is garbage-collected, + 'destructor(old_cdata_object)' will be called. + + The optional 'size' gives an estimate of the size, used to + trigger the garbage collection more eagerly. So far only used + on PyPy. It tells the GC that the returned object keeps alive + roughly 'size' bytes of external memory. + """ + return self._backend.gcp(cdata, destructor, size) + + def _get_cached_btype(self, type): + assert self._lock.acquire(False) is False + # call me with the lock! + try: + BType = self._cached_btypes[type] + except KeyError: + finishlist = [] + BType = type.get_cached_btype(self, finishlist) + for type in finishlist: + type.finish_backend_type(self, finishlist) + return BType + + def verify(self, source='', tmpdir=None, **kwargs): + """Verify that the current ffi signatures compile on this + machine, and return a dynamic library object. The dynamic + library can be used to call functions and access global + variables declared in this 'ffi'. The library is compiled + by the C compiler: it gives you C-level API compatibility + (including calling macros). This is unlike 'ffi.dlopen()', + which requires binary compatibility in the signatures. + """ + from .verifier import Verifier, _caller_dir_pycache + # + # If set_unicode(True) was called, insert the UNICODE and + # _UNICODE macro declarations + if self._windows_unicode: + self._apply_windows_unicode(kwargs) + # + # Set the tmpdir here, and not in Verifier.__init__: it picks + # up the caller's directory, which we want to be the caller of + # ffi.verify(), as opposed to the caller of Veritier(). + tmpdir = tmpdir or _caller_dir_pycache() + # + # Make a Verifier() and use it to load the library. + self.verifier = Verifier(self, source, tmpdir, **kwargs) + lib = self.verifier.load_library() + # + # Save the loaded library for keep-alive purposes, even + # if the caller doesn't keep it alive itself (it should). + self._libraries.append(lib) + return lib + + def _get_errno(self): + return self._backend.get_errno() + def _set_errno(self, errno): + self._backend.set_errno(errno) + errno = property(_get_errno, _set_errno, None, + "the value of 'errno' from/to the C calls") + + def getwinerror(self, code=-1): + return self._backend.getwinerror(code) + + def _pointer_to(self, ctype): + with self._lock: + return model.pointer_cache(self, ctype) + + def addressof(self, cdata, *fields_or_indexes): + """Return the address of a . + If 'fields_or_indexes' are given, returns the address of that + field or array item in the structure or array, recursively in + case of nested structures. + """ + try: + ctype = self._backend.typeof(cdata) + except TypeError: + if '__addressof__' in type(cdata).__dict__: + return type(cdata).__addressof__(cdata, *fields_or_indexes) + raise + if fields_or_indexes: + ctype, offset = self._typeoffsetof(ctype, *fields_or_indexes) + else: + if ctype.kind == "pointer": + raise TypeError("addressof(pointer)") + offset = 0 + ctypeptr = self._pointer_to(ctype) + return self._backend.rawaddressof(ctypeptr, cdata, offset) + + def _typeoffsetof(self, ctype, field_or_index, *fields_or_indexes): + ctype, offset = self._backend.typeoffsetof(ctype, field_or_index) + for field1 in fields_or_indexes: + ctype, offset1 = self._backend.typeoffsetof(ctype, field1, 1) + offset += offset1 + return ctype, offset + + def include(self, ffi_to_include): + """Includes the typedefs, structs, unions and enums defined + in another FFI instance. Usage is similar to a #include in C, + where a part of the program might include types defined in + another part for its own usage. Note that the include() + method has no effect on functions, constants and global + variables, which must anyway be accessed directly from the + lib object returned by the original FFI instance. + """ + if not isinstance(ffi_to_include, FFI): + raise TypeError("ffi.include() expects an argument that is also of" + " type cffi.FFI, not %r" % ( + type(ffi_to_include).__name__,)) + if ffi_to_include is self: + raise ValueError("self.include(self)") + with ffi_to_include._lock: + with self._lock: + self._parser.include(ffi_to_include._parser) + self._cdefsources.append('[') + self._cdefsources.extend(ffi_to_include._cdefsources) + self._cdefsources.append(']') + self._included_ffis.append(ffi_to_include) + + def new_handle(self, x): + return self._backend.newp_handle(self.BVoidP, x) + + def from_handle(self, x): + return self._backend.from_handle(x) + + def release(self, x): + self._backend.release(x) + + def set_unicode(self, enabled_flag): + """Windows: if 'enabled_flag' is True, enable the UNICODE and + _UNICODE defines in C, and declare the types like TCHAR and LPTCSTR + to be (pointers to) wchar_t. If 'enabled_flag' is False, + declare these types to be (pointers to) plain 8-bit characters. + This is mostly for backward compatibility; you usually want True. + """ + if self._windows_unicode is not None: + raise ValueError("set_unicode() can only be called once") + enabled_flag = bool(enabled_flag) + if enabled_flag: + self.cdef("typedef wchar_t TBYTE;" + "typedef wchar_t TCHAR;" + "typedef const wchar_t *LPCTSTR;" + "typedef const wchar_t *PCTSTR;" + "typedef wchar_t *LPTSTR;" + "typedef wchar_t *PTSTR;" + "typedef TBYTE *PTBYTE;" + "typedef TCHAR *PTCHAR;") + else: + self.cdef("typedef char TBYTE;" + "typedef char TCHAR;" + "typedef const char *LPCTSTR;" + "typedef const char *PCTSTR;" + "typedef char *LPTSTR;" + "typedef char *PTSTR;" + "typedef TBYTE *PTBYTE;" + "typedef TCHAR *PTCHAR;") + self._windows_unicode = enabled_flag + + def _apply_windows_unicode(self, kwds): + defmacros = kwds.get('define_macros', ()) + if not isinstance(defmacros, (list, tuple)): + raise TypeError("'define_macros' must be a list or tuple") + defmacros = list(defmacros) + [('UNICODE', '1'), + ('_UNICODE', '1')] + kwds['define_macros'] = defmacros + + def _apply_embedding_fix(self, kwds): + # must include an argument like "-lpython2.7" for the compiler + def ensure(key, value): + lst = kwds.setdefault(key, []) + if value not in lst: + lst.append(value) + # + if '__pypy__' in sys.builtin_module_names: + import os + if sys.platform == "win32": + # we need 'libpypy-c.lib'. Current distributions of + # pypy (>= 4.1) contain it as 'libs/python27.lib'. + pythonlib = "python{0[0]}{0[1]}".format(sys.version_info) + if hasattr(sys, 'prefix'): + ensure('library_dirs', os.path.join(sys.prefix, 'libs')) + else: + # we need 'libpypy-c.{so,dylib}', which should be by + # default located in 'sys.prefix/bin' for installed + # systems. + if sys.version_info < (3,): + pythonlib = "pypy-c" + else: + pythonlib = "pypy3-c" + if hasattr(sys, 'prefix'): + ensure('library_dirs', os.path.join(sys.prefix, 'bin')) + # On uninstalled pypy's, the libpypy-c is typically found in + # .../pypy/goal/. + if hasattr(sys, 'prefix'): + ensure('library_dirs', os.path.join(sys.prefix, 'pypy', 'goal')) + else: + if sys.platform == "win32": + template = "python%d%d" + if hasattr(sys, 'gettotalrefcount'): + template += '_d' + else: + try: + import sysconfig + except ImportError: # 2.6 + from cffi._shimmed_dist_utils import sysconfig + template = "python%d.%d" + if sysconfig.get_config_var('DEBUG_EXT'): + template += sysconfig.get_config_var('DEBUG_EXT') + pythonlib = (template % + (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff)) + if hasattr(sys, 'abiflags'): + pythonlib += sys.abiflags + ensure('libraries', pythonlib) + if sys.platform == "win32": + ensure('extra_link_args', '/MANIFEST') + + def set_source(self, module_name, source, source_extension='.c', **kwds): + import os + if hasattr(self, '_assigned_source'): + raise ValueError("set_source() cannot be called several times " + "per ffi object") + if not isinstance(module_name, basestring): + raise TypeError("'module_name' must be a string") + if os.sep in module_name or (os.altsep and os.altsep in module_name): + raise ValueError("'module_name' must not contain '/': use a dotted " + "name to make a 'package.module' location") + self._assigned_source = (str(module_name), source, + source_extension, kwds) + + def set_source_pkgconfig(self, module_name, pkgconfig_libs, source, + source_extension='.c', **kwds): + from . import pkgconfig + if not isinstance(pkgconfig_libs, list): + raise TypeError("the pkgconfig_libs argument must be a list " + "of package names") + kwds2 = pkgconfig.flags_from_pkgconfig(pkgconfig_libs) + pkgconfig.merge_flags(kwds, kwds2) + self.set_source(module_name, source, source_extension, **kwds) + + def distutils_extension(self, tmpdir='build', verbose=True): + from cffi._shimmed_dist_utils import mkpath + from .recompiler import recompile + # + if not hasattr(self, '_assigned_source'): + if hasattr(self, 'verifier'): # fallback, 'tmpdir' ignored + return self.verifier.get_extension() + raise ValueError("set_source() must be called before" + " distutils_extension()") + module_name, source, source_extension, kwds = self._assigned_source + if source is None: + raise TypeError("distutils_extension() is only for C extension " + "modules, not for dlopen()-style pure Python " + "modules") + mkpath(tmpdir) + ext, updated = recompile(self, module_name, + source, tmpdir=tmpdir, extradir=tmpdir, + source_extension=source_extension, + call_c_compiler=False, **kwds) + if verbose: + if updated: + sys.stderr.write("regenerated: %r\n" % (ext.sources[0],)) + else: + sys.stderr.write("not modified: %r\n" % (ext.sources[0],)) + return ext + + def emit_c_code(self, filename): + from .recompiler import recompile + # + if not hasattr(self, '_assigned_source'): + raise ValueError("set_source() must be called before emit_c_code()") + module_name, source, source_extension, kwds = self._assigned_source + if source is None: + raise TypeError("emit_c_code() is only for C extension modules, " + "not for dlopen()-style pure Python modules") + recompile(self, module_name, source, + c_file=filename, call_c_compiler=False, + uses_ffiplatform=False, **kwds) + + def emit_python_code(self, filename): + from .recompiler import recompile + # + if not hasattr(self, '_assigned_source'): + raise ValueError("set_source() must be called before emit_c_code()") + module_name, source, source_extension, kwds = self._assigned_source + if source is not None: + raise TypeError("emit_python_code() is only for dlopen()-style " + "pure Python modules, not for C extension modules") + recompile(self, module_name, source, + c_file=filename, call_c_compiler=False, + uses_ffiplatform=False, **kwds) + + def compile(self, tmpdir='.', verbose=0, target=None, debug=None): + """The 'target' argument gives the final file name of the + compiled DLL. Use '*' to force distutils' choice, suitable for + regular CPython C API modules. Use a file name ending in '.*' + to ask for the system's default extension for dynamic libraries + (.so/.dll/.dylib). + + The default is '*' when building a non-embedded C API extension, + and (module_name + '.*') when building an embedded library. + """ + from .recompiler import recompile + # + if not hasattr(self, '_assigned_source'): + raise ValueError("set_source() must be called before compile()") + module_name, source, source_extension, kwds = self._assigned_source + return recompile(self, module_name, source, tmpdir=tmpdir, + target=target, source_extension=source_extension, + compiler_verbose=verbose, debug=debug, **kwds) + + def init_once(self, func, tag): + # Read _init_once_cache[tag], which is either (False, lock) if + # we're calling the function now in some thread, or (True, result). + # Don't call setdefault() in most cases, to avoid allocating and + # immediately freeing a lock; but still use setdefaut() to avoid + # races. + try: + x = self._init_once_cache[tag] + except KeyError: + x = self._init_once_cache.setdefault(tag, (False, allocate_lock())) + # Common case: we got (True, result), so we return the result. + if x[0]: + return x[1] + # Else, it's a lock. Acquire it to serialize the following tests. + with x[1]: + # Read again from _init_once_cache the current status. + x = self._init_once_cache[tag] + if x[0]: + return x[1] + # Call the function and store the result back. + result = func() + self._init_once_cache[tag] = (True, result) + return result + + def embedding_init_code(self, pysource): + if self._embedding: + raise ValueError("embedding_init_code() can only be called once") + # fix 'pysource' before it gets dumped into the C file: + # - remove empty lines at the beginning, so it starts at "line 1" + # - dedent, if all non-empty lines are indented + # - check for SyntaxErrors + import re + match = re.match(r'\s*\n', pysource) + if match: + pysource = pysource[match.end():] + lines = pysource.splitlines() or [''] + prefix = re.match(r'\s*', lines[0]).group() + for i in range(1, len(lines)): + line = lines[i] + if line.rstrip(): + while not line.startswith(prefix): + prefix = prefix[:-1] + i = len(prefix) + lines = [line[i:]+'\n' for line in lines] + pysource = ''.join(lines) + # + compile(pysource, "cffi_init", "exec") + # + self._embedding = pysource + + def def_extern(self, *args, **kwds): + raise ValueError("ffi.def_extern() is only available on API-mode FFI " + "objects") + + def list_types(self): + """Returns the user type names known to this FFI instance. + This returns a tuple containing three lists of names: + (typedef_names, names_of_structs, names_of_unions) + """ + typedefs = [] + structs = [] + unions = [] + for key in self._parser._declarations: + if key.startswith('typedef '): + typedefs.append(key[8:]) + elif key.startswith('struct '): + structs.append(key[7:]) + elif key.startswith('union '): + unions.append(key[6:]) + typedefs.sort() + structs.sort() + unions.sort() + return (typedefs, structs, unions) + + +def _load_backend_lib(backend, name, flags): + import os + if not isinstance(name, basestring): + if sys.platform != "win32" or name is not None: + return backend.load_library(name, flags) + name = "c" # Windows: load_library(None) fails, but this works + # on Python 2 (backward compatibility hack only) + first_error = None + if '.' in name or '/' in name or os.sep in name: + try: + return backend.load_library(name, flags) + except OSError as e: + first_error = e + import ctypes.util + path = ctypes.util.find_library(name) + if path is None: + if name == "c" and sys.platform == "win32" and sys.version_info >= (3,): + raise OSError("dlopen(None) cannot work on Windows for Python 3 " + "(see http://bugs.python.org/issue23606)") + msg = ("ctypes.util.find_library() did not manage " + "to locate a library called %r" % (name,)) + if first_error is not None: + msg = "%s. Additionally, %s" % (first_error, msg) + raise OSError(msg) + return backend.load_library(path, flags) + +def _make_ffi_library(ffi, libname, flags): + backend = ffi._backend + backendlib = _load_backend_lib(backend, libname, flags) + # + def accessor_function(name): + key = 'function ' + name + tp, _ = ffi._parser._declarations[key] + BType = ffi._get_cached_btype(tp) + value = backendlib.load_function(BType, name) + library.__dict__[name] = value + # + def accessor_variable(name): + key = 'variable ' + name + tp, _ = ffi._parser._declarations[key] + BType = ffi._get_cached_btype(tp) + read_variable = backendlib.read_variable + write_variable = backendlib.write_variable + setattr(FFILibrary, name, property( + lambda self: read_variable(BType, name), + lambda self, value: write_variable(BType, name, value))) + # + def addressof_var(name): + try: + return addr_variables[name] + except KeyError: + with ffi._lock: + if name not in addr_variables: + key = 'variable ' + name + tp, _ = ffi._parser._declarations[key] + BType = ffi._get_cached_btype(tp) + if BType.kind != 'array': + BType = model.pointer_cache(ffi, BType) + p = backendlib.load_function(BType, name) + addr_variables[name] = p + return addr_variables[name] + # + def accessor_constant(name): + raise NotImplementedError("non-integer constant '%s' cannot be " + "accessed from a dlopen() library" % (name,)) + # + def accessor_int_constant(name): + library.__dict__[name] = ffi._parser._int_constants[name] + # + accessors = {} + accessors_version = [False] + addr_variables = {} + # + def update_accessors(): + if accessors_version[0] is ffi._cdef_version: + return + # + for key, (tp, _) in ffi._parser._declarations.items(): + if not isinstance(tp, model.EnumType): + tag, name = key.split(' ', 1) + if tag == 'function': + accessors[name] = accessor_function + elif tag == 'variable': + accessors[name] = accessor_variable + elif tag == 'constant': + accessors[name] = accessor_constant + else: + for i, enumname in enumerate(tp.enumerators): + def accessor_enum(name, tp=tp, i=i): + tp.check_not_partial() + library.__dict__[name] = tp.enumvalues[i] + accessors[enumname] = accessor_enum + for name in ffi._parser._int_constants: + accessors.setdefault(name, accessor_int_constant) + accessors_version[0] = ffi._cdef_version + # + def make_accessor(name): + with ffi._lock: + if name in library.__dict__ or name in FFILibrary.__dict__: + return # added by another thread while waiting for the lock + if name not in accessors: + update_accessors() + if name not in accessors: + raise AttributeError(name) + accessors[name](name) + # + class FFILibrary(object): + def __getattr__(self, name): + make_accessor(name) + return getattr(self, name) + def __setattr__(self, name, value): + try: + property = getattr(self.__class__, name) + except AttributeError: + make_accessor(name) + setattr(self, name, value) + else: + property.__set__(self, value) + def __dir__(self): + with ffi._lock: + update_accessors() + return accessors.keys() + def __addressof__(self, name): + if name in library.__dict__: + return library.__dict__[name] + if name in FFILibrary.__dict__: + return addressof_var(name) + make_accessor(name) + if name in library.__dict__: + return library.__dict__[name] + if name in FFILibrary.__dict__: + return addressof_var(name) + raise AttributeError("cffi library has no function or " + "global variable named '%s'" % (name,)) + def __cffi_close__(self): + backendlib.close_lib() + self.__dict__.clear() + # + if isinstance(libname, basestring): + try: + if not isinstance(libname, str): # unicode, on Python 2 + libname = libname.encode('utf-8') + FFILibrary.__name__ = 'FFILibrary_%s' % libname + except UnicodeError: + pass + library = FFILibrary() + return library, library.__dict__ + +def _builtin_function_type(func): + # a hack to make at least ffi.typeof(builtin_function) work, + # if the builtin function was obtained by 'vengine_cpy'. + import sys + try: + module = sys.modules[func.__module__] + ffi = module._cffi_original_ffi + types_of_builtin_funcs = module._cffi_types_of_builtin_funcs + tp = types_of_builtin_funcs[func] + except (KeyError, AttributeError, TypeError): + return None + else: + with ffi._lock: + return ffi._get_cached_btype(tp) diff --git a/venv/lib/python3.12/site-packages/cffi/backend_ctypes.py b/venv/lib/python3.12/site-packages/cffi/backend_ctypes.py new file mode 100644 index 00000000..e7956a79 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi/backend_ctypes.py @@ -0,0 +1,1121 @@ +import ctypes, ctypes.util, operator, sys +from . import model + +if sys.version_info < (3,): + bytechr = chr +else: + unicode = str + long = int + xrange = range + bytechr = lambda num: bytes([num]) + +class CTypesType(type): + pass + +class CTypesData(object): + __metaclass__ = CTypesType + __slots__ = ['__weakref__'] + __name__ = '' + + def __init__(self, *args): + raise TypeError("cannot instantiate %r" % (self.__class__,)) + + @classmethod + def _newp(cls, init): + raise TypeError("expected a pointer or array ctype, got '%s'" + % (cls._get_c_name(),)) + + @staticmethod + def _to_ctypes(value): + raise TypeError + + @classmethod + def _arg_to_ctypes(cls, *value): + try: + ctype = cls._ctype + except AttributeError: + raise TypeError("cannot create an instance of %r" % (cls,)) + if value: + res = cls._to_ctypes(*value) + if not isinstance(res, ctype): + res = cls._ctype(res) + else: + res = cls._ctype() + return res + + @classmethod + def _create_ctype_obj(cls, init): + if init is None: + return cls._arg_to_ctypes() + else: + return cls._arg_to_ctypes(init) + + @staticmethod + def _from_ctypes(ctypes_value): + raise TypeError + + @classmethod + def _get_c_name(cls, replace_with=''): + return cls._reftypename.replace(' &', replace_with) + + @classmethod + def _fix_class(cls): + cls.__name__ = 'CData<%s>' % (cls._get_c_name(),) + cls.__qualname__ = 'CData<%s>' % (cls._get_c_name(),) + cls.__module__ = 'ffi' + + def _get_own_repr(self): + raise NotImplementedError + + def _addr_repr(self, address): + if address == 0: + return 'NULL' + else: + if address < 0: + address += 1 << (8*ctypes.sizeof(ctypes.c_void_p)) + return '0x%x' % address + + def __repr__(self, c_name=None): + own = self._get_own_repr() + return '' % (c_name or self._get_c_name(), own) + + def _convert_to_address(self, BClass): + if BClass is None: + raise TypeError("cannot convert %r to an address" % ( + self._get_c_name(),)) + else: + raise TypeError("cannot convert %r to %r" % ( + self._get_c_name(), BClass._get_c_name())) + + @classmethod + def _get_size(cls): + return ctypes.sizeof(cls._ctype) + + def _get_size_of_instance(self): + return ctypes.sizeof(self._ctype) + + @classmethod + def _cast_from(cls, source): + raise TypeError("cannot cast to %r" % (cls._get_c_name(),)) + + def _cast_to_integer(self): + return self._convert_to_address(None) + + @classmethod + def _alignment(cls): + return ctypes.alignment(cls._ctype) + + def __iter__(self): + raise TypeError("cdata %r does not support iteration" % ( + self._get_c_name()),) + + def _make_cmp(name): + cmpfunc = getattr(operator, name) + def cmp(self, other): + v_is_ptr = not isinstance(self, CTypesGenericPrimitive) + w_is_ptr = (isinstance(other, CTypesData) and + not isinstance(other, CTypesGenericPrimitive)) + if v_is_ptr and w_is_ptr: + return cmpfunc(self._convert_to_address(None), + other._convert_to_address(None)) + elif v_is_ptr or w_is_ptr: + return NotImplemented + else: + if isinstance(self, CTypesGenericPrimitive): + self = self._value + if isinstance(other, CTypesGenericPrimitive): + other = other._value + return cmpfunc(self, other) + cmp.func_name = name + return cmp + + __eq__ = _make_cmp('__eq__') + __ne__ = _make_cmp('__ne__') + __lt__ = _make_cmp('__lt__') + __le__ = _make_cmp('__le__') + __gt__ = _make_cmp('__gt__') + __ge__ = _make_cmp('__ge__') + + def __hash__(self): + return hash(self._convert_to_address(None)) + + def _to_string(self, maxlen): + raise TypeError("string(): %r" % (self,)) + + +class CTypesGenericPrimitive(CTypesData): + __slots__ = [] + + def __hash__(self): + return hash(self._value) + + def _get_own_repr(self): + return repr(self._from_ctypes(self._value)) + + +class CTypesGenericArray(CTypesData): + __slots__ = [] + + @classmethod + def _newp(cls, init): + return cls(init) + + def __iter__(self): + for i in xrange(len(self)): + yield self[i] + + def _get_own_repr(self): + return self._addr_repr(ctypes.addressof(self._blob)) + + +class CTypesGenericPtr(CTypesData): + __slots__ = ['_address', '_as_ctype_ptr'] + _automatic_casts = False + kind = "pointer" + + @classmethod + def _newp(cls, init): + return cls(init) + + @classmethod + def _cast_from(cls, source): + if source is None: + address = 0 + elif isinstance(source, CTypesData): + address = source._cast_to_integer() + elif isinstance(source, (int, long)): + address = source + else: + raise TypeError("bad type for cast to %r: %r" % + (cls, type(source).__name__)) + return cls._new_pointer_at(address) + + @classmethod + def _new_pointer_at(cls, address): + self = cls.__new__(cls) + self._address = address + self._as_ctype_ptr = ctypes.cast(address, cls._ctype) + return self + + def _get_own_repr(self): + try: + return self._addr_repr(self._address) + except AttributeError: + return '???' + + def _cast_to_integer(self): + return self._address + + def __nonzero__(self): + return bool(self._address) + __bool__ = __nonzero__ + + @classmethod + def _to_ctypes(cls, value): + if not isinstance(value, CTypesData): + raise TypeError("unexpected %s object" % type(value).__name__) + address = value._convert_to_address(cls) + return ctypes.cast(address, cls._ctype) + + @classmethod + def _from_ctypes(cls, ctypes_ptr): + address = ctypes.cast(ctypes_ptr, ctypes.c_void_p).value or 0 + return cls._new_pointer_at(address) + + @classmethod + def _initialize(cls, ctypes_ptr, value): + if value: + ctypes_ptr.contents = cls._to_ctypes(value).contents + + def _convert_to_address(self, BClass): + if (BClass in (self.__class__, None) or BClass._automatic_casts + or self._automatic_casts): + return self._address + else: + return CTypesData._convert_to_address(self, BClass) + + +class CTypesBaseStructOrUnion(CTypesData): + __slots__ = ['_blob'] + + @classmethod + def _create_ctype_obj(cls, init): + # may be overridden + raise TypeError("cannot instantiate opaque type %s" % (cls,)) + + def _get_own_repr(self): + return self._addr_repr(ctypes.addressof(self._blob)) + + @classmethod + def _offsetof(cls, fieldname): + return getattr(cls._ctype, fieldname).offset + + def _convert_to_address(self, BClass): + if getattr(BClass, '_BItem', None) is self.__class__: + return ctypes.addressof(self._blob) + else: + return CTypesData._convert_to_address(self, BClass) + + @classmethod + def _from_ctypes(cls, ctypes_struct_or_union): + self = cls.__new__(cls) + self._blob = ctypes_struct_or_union + return self + + @classmethod + def _to_ctypes(cls, value): + return value._blob + + def __repr__(self, c_name=None): + return CTypesData.__repr__(self, c_name or self._get_c_name(' &')) + + +class CTypesBackend(object): + + PRIMITIVE_TYPES = { + 'char': ctypes.c_char, + 'short': ctypes.c_short, + 'int': ctypes.c_int, + 'long': ctypes.c_long, + 'long long': ctypes.c_longlong, + 'signed char': ctypes.c_byte, + 'unsigned char': ctypes.c_ubyte, + 'unsigned short': ctypes.c_ushort, + 'unsigned int': ctypes.c_uint, + 'unsigned long': ctypes.c_ulong, + 'unsigned long long': ctypes.c_ulonglong, + 'float': ctypes.c_float, + 'double': ctypes.c_double, + '_Bool': ctypes.c_bool, + } + + for _name in ['unsigned long long', 'unsigned long', + 'unsigned int', 'unsigned short', 'unsigned char']: + _size = ctypes.sizeof(PRIMITIVE_TYPES[_name]) + PRIMITIVE_TYPES['uint%d_t' % (8*_size)] = PRIMITIVE_TYPES[_name] + if _size == ctypes.sizeof(ctypes.c_void_p): + PRIMITIVE_TYPES['uintptr_t'] = PRIMITIVE_TYPES[_name] + if _size == ctypes.sizeof(ctypes.c_size_t): + PRIMITIVE_TYPES['size_t'] = PRIMITIVE_TYPES[_name] + + for _name in ['long long', 'long', 'int', 'short', 'signed char']: + _size = ctypes.sizeof(PRIMITIVE_TYPES[_name]) + PRIMITIVE_TYPES['int%d_t' % (8*_size)] = PRIMITIVE_TYPES[_name] + if _size == ctypes.sizeof(ctypes.c_void_p): + PRIMITIVE_TYPES['intptr_t'] = PRIMITIVE_TYPES[_name] + PRIMITIVE_TYPES['ptrdiff_t'] = PRIMITIVE_TYPES[_name] + if _size == ctypes.sizeof(ctypes.c_size_t): + PRIMITIVE_TYPES['ssize_t'] = PRIMITIVE_TYPES[_name] + + + def __init__(self): + self.RTLD_LAZY = 0 # not supported anyway by ctypes + self.RTLD_NOW = 0 + self.RTLD_GLOBAL = ctypes.RTLD_GLOBAL + self.RTLD_LOCAL = ctypes.RTLD_LOCAL + + def set_ffi(self, ffi): + self.ffi = ffi + + def _get_types(self): + return CTypesData, CTypesType + + def load_library(self, path, flags=0): + cdll = ctypes.CDLL(path, flags) + return CTypesLibrary(self, cdll) + + def new_void_type(self): + class CTypesVoid(CTypesData): + __slots__ = [] + _reftypename = 'void &' + @staticmethod + def _from_ctypes(novalue): + return None + @staticmethod + def _to_ctypes(novalue): + if novalue is not None: + raise TypeError("None expected, got %s object" % + (type(novalue).__name__,)) + return None + CTypesVoid._fix_class() + return CTypesVoid + + def new_primitive_type(self, name): + if name == 'wchar_t': + raise NotImplementedError(name) + ctype = self.PRIMITIVE_TYPES[name] + if name == 'char': + kind = 'char' + elif name in ('float', 'double'): + kind = 'float' + else: + if name in ('signed char', 'unsigned char'): + kind = 'byte' + elif name == '_Bool': + kind = 'bool' + else: + kind = 'int' + is_signed = (ctype(-1).value == -1) + # + def _cast_source_to_int(source): + if isinstance(source, (int, long, float)): + source = int(source) + elif isinstance(source, CTypesData): + source = source._cast_to_integer() + elif isinstance(source, bytes): + source = ord(source) + elif source is None: + source = 0 + else: + raise TypeError("bad type for cast to %r: %r" % + (CTypesPrimitive, type(source).__name__)) + return source + # + kind1 = kind + class CTypesPrimitive(CTypesGenericPrimitive): + __slots__ = ['_value'] + _ctype = ctype + _reftypename = '%s &' % name + kind = kind1 + + def __init__(self, value): + self._value = value + + @staticmethod + def _create_ctype_obj(init): + if init is None: + return ctype() + return ctype(CTypesPrimitive._to_ctypes(init)) + + if kind == 'int' or kind == 'byte': + @classmethod + def _cast_from(cls, source): + source = _cast_source_to_int(source) + source = ctype(source).value # cast within range + return cls(source) + def __int__(self): + return self._value + + if kind == 'bool': + @classmethod + def _cast_from(cls, source): + if not isinstance(source, (int, long, float)): + source = _cast_source_to_int(source) + return cls(bool(source)) + def __int__(self): + return int(self._value) + + if kind == 'char': + @classmethod + def _cast_from(cls, source): + source = _cast_source_to_int(source) + source = bytechr(source & 0xFF) + return cls(source) + def __int__(self): + return ord(self._value) + + if kind == 'float': + @classmethod + def _cast_from(cls, source): + if isinstance(source, float): + pass + elif isinstance(source, CTypesGenericPrimitive): + if hasattr(source, '__float__'): + source = float(source) + else: + source = int(source) + else: + source = _cast_source_to_int(source) + source = ctype(source).value # fix precision + return cls(source) + def __int__(self): + return int(self._value) + def __float__(self): + return self._value + + _cast_to_integer = __int__ + + if kind == 'int' or kind == 'byte' or kind == 'bool': + @staticmethod + def _to_ctypes(x): + if not isinstance(x, (int, long)): + if isinstance(x, CTypesData): + x = int(x) + else: + raise TypeError("integer expected, got %s" % + type(x).__name__) + if ctype(x).value != x: + if not is_signed and x < 0: + raise OverflowError("%s: negative integer" % name) + else: + raise OverflowError("%s: integer out of bounds" + % name) + return x + + if kind == 'char': + @staticmethod + def _to_ctypes(x): + if isinstance(x, bytes) and len(x) == 1: + return x + if isinstance(x, CTypesPrimitive): # > + return x._value + raise TypeError("character expected, got %s" % + type(x).__name__) + def __nonzero__(self): + return ord(self._value) != 0 + else: + def __nonzero__(self): + return self._value != 0 + __bool__ = __nonzero__ + + if kind == 'float': + @staticmethod + def _to_ctypes(x): + if not isinstance(x, (int, long, float, CTypesData)): + raise TypeError("float expected, got %s" % + type(x).__name__) + return ctype(x).value + + @staticmethod + def _from_ctypes(value): + return getattr(value, 'value', value) + + @staticmethod + def _initialize(blob, init): + blob.value = CTypesPrimitive._to_ctypes(init) + + if kind == 'char': + def _to_string(self, maxlen): + return self._value + if kind == 'byte': + def _to_string(self, maxlen): + return chr(self._value & 0xff) + # + CTypesPrimitive._fix_class() + return CTypesPrimitive + + def new_pointer_type(self, BItem): + getbtype = self.ffi._get_cached_btype + if BItem is getbtype(model.PrimitiveType('char')): + kind = 'charp' + elif BItem in (getbtype(model.PrimitiveType('signed char')), + getbtype(model.PrimitiveType('unsigned char'))): + kind = 'bytep' + elif BItem is getbtype(model.void_type): + kind = 'voidp' + else: + kind = 'generic' + # + class CTypesPtr(CTypesGenericPtr): + __slots__ = ['_own'] + if kind == 'charp': + __slots__ += ['__as_strbuf'] + _BItem = BItem + if hasattr(BItem, '_ctype'): + _ctype = ctypes.POINTER(BItem._ctype) + _bitem_size = ctypes.sizeof(BItem._ctype) + else: + _ctype = ctypes.c_void_p + if issubclass(BItem, CTypesGenericArray): + _reftypename = BItem._get_c_name('(* &)') + else: + _reftypename = BItem._get_c_name(' * &') + + def __init__(self, init): + ctypeobj = BItem._create_ctype_obj(init) + if kind == 'charp': + self.__as_strbuf = ctypes.create_string_buffer( + ctypeobj.value + b'\x00') + self._as_ctype_ptr = ctypes.cast( + self.__as_strbuf, self._ctype) + else: + self._as_ctype_ptr = ctypes.pointer(ctypeobj) + self._address = ctypes.cast(self._as_ctype_ptr, + ctypes.c_void_p).value + self._own = True + + def __add__(self, other): + if isinstance(other, (int, long)): + return self._new_pointer_at(self._address + + other * self._bitem_size) + else: + return NotImplemented + + def __sub__(self, other): + if isinstance(other, (int, long)): + return self._new_pointer_at(self._address - + other * self._bitem_size) + elif type(self) is type(other): + return (self._address - other._address) // self._bitem_size + else: + return NotImplemented + + def __getitem__(self, index): + if getattr(self, '_own', False) and index != 0: + raise IndexError + return BItem._from_ctypes(self._as_ctype_ptr[index]) + + def __setitem__(self, index, value): + self._as_ctype_ptr[index] = BItem._to_ctypes(value) + + if kind == 'charp' or kind == 'voidp': + @classmethod + def _arg_to_ctypes(cls, *value): + if value and isinstance(value[0], bytes): + return ctypes.c_char_p(value[0]) + else: + return super(CTypesPtr, cls)._arg_to_ctypes(*value) + + if kind == 'charp' or kind == 'bytep': + def _to_string(self, maxlen): + if maxlen < 0: + maxlen = sys.maxsize + p = ctypes.cast(self._as_ctype_ptr, + ctypes.POINTER(ctypes.c_char)) + n = 0 + while n < maxlen and p[n] != b'\x00': + n += 1 + return b''.join([p[i] for i in range(n)]) + + def _get_own_repr(self): + if getattr(self, '_own', False): + return 'owning %d bytes' % ( + ctypes.sizeof(self._as_ctype_ptr.contents),) + return super(CTypesPtr, self)._get_own_repr() + # + if (BItem is self.ffi._get_cached_btype(model.void_type) or + BItem is self.ffi._get_cached_btype(model.PrimitiveType('char'))): + CTypesPtr._automatic_casts = True + # + CTypesPtr._fix_class() + return CTypesPtr + + def new_array_type(self, CTypesPtr, length): + if length is None: + brackets = ' &[]' + else: + brackets = ' &[%d]' % length + BItem = CTypesPtr._BItem + getbtype = self.ffi._get_cached_btype + if BItem is getbtype(model.PrimitiveType('char')): + kind = 'char' + elif BItem in (getbtype(model.PrimitiveType('signed char')), + getbtype(model.PrimitiveType('unsigned char'))): + kind = 'byte' + else: + kind = 'generic' + # + class CTypesArray(CTypesGenericArray): + __slots__ = ['_blob', '_own'] + if length is not None: + _ctype = BItem._ctype * length + else: + __slots__.append('_ctype') + _reftypename = BItem._get_c_name(brackets) + _declared_length = length + _CTPtr = CTypesPtr + + def __init__(self, init): + if length is None: + if isinstance(init, (int, long)): + len1 = init + init = None + elif kind == 'char' and isinstance(init, bytes): + len1 = len(init) + 1 # extra null + else: + init = tuple(init) + len1 = len(init) + self._ctype = BItem._ctype * len1 + self._blob = self._ctype() + self._own = True + if init is not None: + self._initialize(self._blob, init) + + @staticmethod + def _initialize(blob, init): + if isinstance(init, bytes): + init = [init[i:i+1] for i in range(len(init))] + else: + if isinstance(init, CTypesGenericArray): + if (len(init) != len(blob) or + not isinstance(init, CTypesArray)): + raise TypeError("length/type mismatch: %s" % (init,)) + init = tuple(init) + if len(init) > len(blob): + raise IndexError("too many initializers") + addr = ctypes.cast(blob, ctypes.c_void_p).value + PTR = ctypes.POINTER(BItem._ctype) + itemsize = ctypes.sizeof(BItem._ctype) + for i, value in enumerate(init): + p = ctypes.cast(addr + i * itemsize, PTR) + BItem._initialize(p.contents, value) + + def __len__(self): + return len(self._blob) + + def __getitem__(self, index): + if not (0 <= index < len(self._blob)): + raise IndexError + return BItem._from_ctypes(self._blob[index]) + + def __setitem__(self, index, value): + if not (0 <= index < len(self._blob)): + raise IndexError + self._blob[index] = BItem._to_ctypes(value) + + if kind == 'char' or kind == 'byte': + def _to_string(self, maxlen): + if maxlen < 0: + maxlen = len(self._blob) + p = ctypes.cast(self._blob, + ctypes.POINTER(ctypes.c_char)) + n = 0 + while n < maxlen and p[n] != b'\x00': + n += 1 + return b''.join([p[i] for i in range(n)]) + + def _get_own_repr(self): + if getattr(self, '_own', False): + return 'owning %d bytes' % (ctypes.sizeof(self._blob),) + return super(CTypesArray, self)._get_own_repr() + + def _convert_to_address(self, BClass): + if BClass in (CTypesPtr, None) or BClass._automatic_casts: + return ctypes.addressof(self._blob) + else: + return CTypesData._convert_to_address(self, BClass) + + @staticmethod + def _from_ctypes(ctypes_array): + self = CTypesArray.__new__(CTypesArray) + self._blob = ctypes_array + return self + + @staticmethod + def _arg_to_ctypes(value): + return CTypesPtr._arg_to_ctypes(value) + + def __add__(self, other): + if isinstance(other, (int, long)): + return CTypesPtr._new_pointer_at( + ctypes.addressof(self._blob) + + other * ctypes.sizeof(BItem._ctype)) + else: + return NotImplemented + + @classmethod + def _cast_from(cls, source): + raise NotImplementedError("casting to %r" % ( + cls._get_c_name(),)) + # + CTypesArray._fix_class() + return CTypesArray + + def _new_struct_or_union(self, kind, name, base_ctypes_class): + # + class struct_or_union(base_ctypes_class): + pass + struct_or_union.__name__ = '%s_%s' % (kind, name) + kind1 = kind + # + class CTypesStructOrUnion(CTypesBaseStructOrUnion): + __slots__ = ['_blob'] + _ctype = struct_or_union + _reftypename = '%s &' % (name,) + _kind = kind = kind1 + # + CTypesStructOrUnion._fix_class() + return CTypesStructOrUnion + + def new_struct_type(self, name): + return self._new_struct_or_union('struct', name, ctypes.Structure) + + def new_union_type(self, name): + return self._new_struct_or_union('union', name, ctypes.Union) + + def complete_struct_or_union(self, CTypesStructOrUnion, fields, tp, + totalsize=-1, totalalignment=-1, sflags=0, + pack=0): + if totalsize >= 0 or totalalignment >= 0: + raise NotImplementedError("the ctypes backend of CFFI does not support " + "structures completed by verify(); please " + "compile and install the _cffi_backend module.") + struct_or_union = CTypesStructOrUnion._ctype + fnames = [fname for (fname, BField, bitsize) in fields] + btypes = [BField for (fname, BField, bitsize) in fields] + bitfields = [bitsize for (fname, BField, bitsize) in fields] + # + bfield_types = {} + cfields = [] + for (fname, BField, bitsize) in fields: + if bitsize < 0: + cfields.append((fname, BField._ctype)) + bfield_types[fname] = BField + else: + cfields.append((fname, BField._ctype, bitsize)) + bfield_types[fname] = Ellipsis + if sflags & 8: + struct_or_union._pack_ = 1 + elif pack: + struct_or_union._pack_ = pack + struct_or_union._fields_ = cfields + CTypesStructOrUnion._bfield_types = bfield_types + # + @staticmethod + def _create_ctype_obj(init): + result = struct_or_union() + if init is not None: + initialize(result, init) + return result + CTypesStructOrUnion._create_ctype_obj = _create_ctype_obj + # + def initialize(blob, init): + if is_union: + if len(init) > 1: + raise ValueError("union initializer: %d items given, but " + "only one supported (use a dict if needed)" + % (len(init),)) + if not isinstance(init, dict): + if isinstance(init, (bytes, unicode)): + raise TypeError("union initializer: got a str") + init = tuple(init) + if len(init) > len(fnames): + raise ValueError("too many values for %s initializer" % + CTypesStructOrUnion._get_c_name()) + init = dict(zip(fnames, init)) + addr = ctypes.addressof(blob) + for fname, value in init.items(): + BField, bitsize = name2fieldtype[fname] + assert bitsize < 0, \ + "not implemented: initializer with bit fields" + offset = CTypesStructOrUnion._offsetof(fname) + PTR = ctypes.POINTER(BField._ctype) + p = ctypes.cast(addr + offset, PTR) + BField._initialize(p.contents, value) + is_union = CTypesStructOrUnion._kind == 'union' + name2fieldtype = dict(zip(fnames, zip(btypes, bitfields))) + # + for fname, BField, bitsize in fields: + if fname == '': + raise NotImplementedError("nested anonymous structs/unions") + if hasattr(CTypesStructOrUnion, fname): + raise ValueError("the field name %r conflicts in " + "the ctypes backend" % fname) + if bitsize < 0: + def getter(self, fname=fname, BField=BField, + offset=CTypesStructOrUnion._offsetof(fname), + PTR=ctypes.POINTER(BField._ctype)): + addr = ctypes.addressof(self._blob) + p = ctypes.cast(addr + offset, PTR) + return BField._from_ctypes(p.contents) + def setter(self, value, fname=fname, BField=BField): + setattr(self._blob, fname, BField._to_ctypes(value)) + # + if issubclass(BField, CTypesGenericArray): + setter = None + if BField._declared_length == 0: + def getter(self, fname=fname, BFieldPtr=BField._CTPtr, + offset=CTypesStructOrUnion._offsetof(fname), + PTR=ctypes.POINTER(BField._ctype)): + addr = ctypes.addressof(self._blob) + p = ctypes.cast(addr + offset, PTR) + return BFieldPtr._from_ctypes(p) + # + else: + def getter(self, fname=fname, BField=BField): + return BField._from_ctypes(getattr(self._blob, fname)) + def setter(self, value, fname=fname, BField=BField): + # xxx obscure workaround + value = BField._to_ctypes(value) + oldvalue = getattr(self._blob, fname) + setattr(self._blob, fname, value) + if value != getattr(self._blob, fname): + setattr(self._blob, fname, oldvalue) + raise OverflowError("value too large for bitfield") + setattr(CTypesStructOrUnion, fname, property(getter, setter)) + # + CTypesPtr = self.ffi._get_cached_btype(model.PointerType(tp)) + for fname in fnames: + if hasattr(CTypesPtr, fname): + raise ValueError("the field name %r conflicts in " + "the ctypes backend" % fname) + def getter(self, fname=fname): + return getattr(self[0], fname) + def setter(self, value, fname=fname): + setattr(self[0], fname, value) + setattr(CTypesPtr, fname, property(getter, setter)) + + def new_function_type(self, BArgs, BResult, has_varargs): + nameargs = [BArg._get_c_name() for BArg in BArgs] + if has_varargs: + nameargs.append('...') + nameargs = ', '.join(nameargs) + # + class CTypesFunctionPtr(CTypesGenericPtr): + __slots__ = ['_own_callback', '_name'] + _ctype = ctypes.CFUNCTYPE(getattr(BResult, '_ctype', None), + *[BArg._ctype for BArg in BArgs], + use_errno=True) + _reftypename = BResult._get_c_name('(* &)(%s)' % (nameargs,)) + + def __init__(self, init, error=None): + # create a callback to the Python callable init() + import traceback + assert not has_varargs, "varargs not supported for callbacks" + if getattr(BResult, '_ctype', None) is not None: + error = BResult._from_ctypes( + BResult._create_ctype_obj(error)) + else: + error = None + def callback(*args): + args2 = [] + for arg, BArg in zip(args, BArgs): + args2.append(BArg._from_ctypes(arg)) + try: + res2 = init(*args2) + res2 = BResult._to_ctypes(res2) + except: + traceback.print_exc() + res2 = error + if issubclass(BResult, CTypesGenericPtr): + if res2: + res2 = ctypes.cast(res2, ctypes.c_void_p).value + # .value: http://bugs.python.org/issue1574593 + else: + res2 = None + #print repr(res2) + return res2 + if issubclass(BResult, CTypesGenericPtr): + # The only pointers callbacks can return are void*s: + # http://bugs.python.org/issue5710 + callback_ctype = ctypes.CFUNCTYPE( + ctypes.c_void_p, + *[BArg._ctype for BArg in BArgs], + use_errno=True) + else: + callback_ctype = CTypesFunctionPtr._ctype + self._as_ctype_ptr = callback_ctype(callback) + self._address = ctypes.cast(self._as_ctype_ptr, + ctypes.c_void_p).value + self._own_callback = init + + @staticmethod + def _initialize(ctypes_ptr, value): + if value: + raise NotImplementedError("ctypes backend: not supported: " + "initializers for function pointers") + + def __repr__(self): + c_name = getattr(self, '_name', None) + if c_name: + i = self._reftypename.index('(* &)') + if self._reftypename[i-1] not in ' )*': + c_name = ' ' + c_name + c_name = self._reftypename.replace('(* &)', c_name) + return CTypesData.__repr__(self, c_name) + + def _get_own_repr(self): + if getattr(self, '_own_callback', None) is not None: + return 'calling %r' % (self._own_callback,) + return super(CTypesFunctionPtr, self)._get_own_repr() + + def __call__(self, *args): + if has_varargs: + assert len(args) >= len(BArgs) + extraargs = args[len(BArgs):] + args = args[:len(BArgs)] + else: + assert len(args) == len(BArgs) + ctypes_args = [] + for arg, BArg in zip(args, BArgs): + ctypes_args.append(BArg._arg_to_ctypes(arg)) + if has_varargs: + for i, arg in enumerate(extraargs): + if arg is None: + ctypes_args.append(ctypes.c_void_p(0)) # NULL + continue + if not isinstance(arg, CTypesData): + raise TypeError( + "argument %d passed in the variadic part " + "needs to be a cdata object (got %s)" % + (1 + len(BArgs) + i, type(arg).__name__)) + ctypes_args.append(arg._arg_to_ctypes(arg)) + result = self._as_ctype_ptr(*ctypes_args) + return BResult._from_ctypes(result) + # + CTypesFunctionPtr._fix_class() + return CTypesFunctionPtr + + def new_enum_type(self, name, enumerators, enumvalues, CTypesInt): + assert isinstance(name, str) + reverse_mapping = dict(zip(reversed(enumvalues), + reversed(enumerators))) + # + class CTypesEnum(CTypesInt): + __slots__ = [] + _reftypename = '%s &' % name + + def _get_own_repr(self): + value = self._value + try: + return '%d: %s' % (value, reverse_mapping[value]) + except KeyError: + return str(value) + + def _to_string(self, maxlen): + value = self._value + try: + return reverse_mapping[value] + except KeyError: + return str(value) + # + CTypesEnum._fix_class() + return CTypesEnum + + def get_errno(self): + return ctypes.get_errno() + + def set_errno(self, value): + ctypes.set_errno(value) + + def string(self, b, maxlen=-1): + return b._to_string(maxlen) + + def buffer(self, bptr, size=-1): + raise NotImplementedError("buffer() with ctypes backend") + + def sizeof(self, cdata_or_BType): + if isinstance(cdata_or_BType, CTypesData): + return cdata_or_BType._get_size_of_instance() + else: + assert issubclass(cdata_or_BType, CTypesData) + return cdata_or_BType._get_size() + + def alignof(self, BType): + assert issubclass(BType, CTypesData) + return BType._alignment() + + def newp(self, BType, source): + if not issubclass(BType, CTypesData): + raise TypeError + return BType._newp(source) + + def cast(self, BType, source): + return BType._cast_from(source) + + def callback(self, BType, source, error, onerror): + assert onerror is None # XXX not implemented + return BType(source, error) + + _weakref_cache_ref = None + + def gcp(self, cdata, destructor, size=0): + if self._weakref_cache_ref is None: + import weakref + class MyRef(weakref.ref): + def __eq__(self, other): + myref = self() + return self is other or ( + myref is not None and myref is other()) + def __ne__(self, other): + return not (self == other) + def __hash__(self): + try: + return self._hash + except AttributeError: + self._hash = hash(self()) + return self._hash + self._weakref_cache_ref = {}, MyRef + weak_cache, MyRef = self._weakref_cache_ref + + if destructor is None: + try: + del weak_cache[MyRef(cdata)] + except KeyError: + raise TypeError("Can remove destructor only on a object " + "previously returned by ffi.gc()") + return None + + def remove(k): + cdata, destructor = weak_cache.pop(k, (None, None)) + if destructor is not None: + destructor(cdata) + + new_cdata = self.cast(self.typeof(cdata), cdata) + assert new_cdata is not cdata + weak_cache[MyRef(new_cdata, remove)] = (cdata, destructor) + return new_cdata + + typeof = type + + def getcname(self, BType, replace_with): + return BType._get_c_name(replace_with) + + def typeoffsetof(self, BType, fieldname, num=0): + if isinstance(fieldname, str): + if num == 0 and issubclass(BType, CTypesGenericPtr): + BType = BType._BItem + if not issubclass(BType, CTypesBaseStructOrUnion): + raise TypeError("expected a struct or union ctype") + BField = BType._bfield_types[fieldname] + if BField is Ellipsis: + raise TypeError("not supported for bitfields") + return (BField, BType._offsetof(fieldname)) + elif isinstance(fieldname, (int, long)): + if issubclass(BType, CTypesGenericArray): + BType = BType._CTPtr + if not issubclass(BType, CTypesGenericPtr): + raise TypeError("expected an array or ptr ctype") + BItem = BType._BItem + offset = BItem._get_size() * fieldname + if offset > sys.maxsize: + raise OverflowError + return (BItem, offset) + else: + raise TypeError(type(fieldname)) + + def rawaddressof(self, BTypePtr, cdata, offset=None): + if isinstance(cdata, CTypesBaseStructOrUnion): + ptr = ctypes.pointer(type(cdata)._to_ctypes(cdata)) + elif isinstance(cdata, CTypesGenericPtr): + if offset is None or not issubclass(type(cdata)._BItem, + CTypesBaseStructOrUnion): + raise TypeError("unexpected cdata type") + ptr = type(cdata)._to_ctypes(cdata) + elif isinstance(cdata, CTypesGenericArray): + ptr = type(cdata)._to_ctypes(cdata) + else: + raise TypeError("expected a ") + if offset: + ptr = ctypes.cast( + ctypes.c_void_p( + ctypes.cast(ptr, ctypes.c_void_p).value + offset), + type(ptr)) + return BTypePtr._from_ctypes(ptr) + + +class CTypesLibrary(object): + + def __init__(self, backend, cdll): + self.backend = backend + self.cdll = cdll + + def load_function(self, BType, name): + c_func = getattr(self.cdll, name) + funcobj = BType._from_ctypes(c_func) + funcobj._name = name + return funcobj + + def read_variable(self, BType, name): + try: + ctypes_obj = BType._ctype.in_dll(self.cdll, name) + except AttributeError as e: + raise NotImplementedError(e) + return BType._from_ctypes(ctypes_obj) + + def write_variable(self, BType, name, value): + new_ctypes_obj = BType._to_ctypes(value) + ctypes_obj = BType._ctype.in_dll(self.cdll, name) + ctypes.memmove(ctypes.addressof(ctypes_obj), + ctypes.addressof(new_ctypes_obj), + ctypes.sizeof(BType._ctype)) diff --git a/venv/lib/python3.12/site-packages/cffi/cffi_opcode.py b/venv/lib/python3.12/site-packages/cffi/cffi_opcode.py new file mode 100644 index 00000000..6421df62 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi/cffi_opcode.py @@ -0,0 +1,187 @@ +from .error import VerificationError + +class CffiOp(object): + def __init__(self, op, arg): + self.op = op + self.arg = arg + + def as_c_expr(self): + if self.op is None: + assert isinstance(self.arg, str) + return '(_cffi_opcode_t)(%s)' % (self.arg,) + classname = CLASS_NAME[self.op] + return '_CFFI_OP(_CFFI_OP_%s, %s)' % (classname, self.arg) + + def as_python_bytes(self): + if self.op is None and self.arg.isdigit(): + value = int(self.arg) # non-negative: '-' not in self.arg + if value >= 2**31: + raise OverflowError("cannot emit %r: limited to 2**31-1" + % (self.arg,)) + return format_four_bytes(value) + if isinstance(self.arg, str): + raise VerificationError("cannot emit to Python: %r" % (self.arg,)) + return format_four_bytes((self.arg << 8) | self.op) + + def __str__(self): + classname = CLASS_NAME.get(self.op, self.op) + return '(%s %s)' % (classname, self.arg) + +def format_four_bytes(num): + return '\\x%02X\\x%02X\\x%02X\\x%02X' % ( + (num >> 24) & 0xFF, + (num >> 16) & 0xFF, + (num >> 8) & 0xFF, + (num ) & 0xFF) + +OP_PRIMITIVE = 1 +OP_POINTER = 3 +OP_ARRAY = 5 +OP_OPEN_ARRAY = 7 +OP_STRUCT_UNION = 9 +OP_ENUM = 11 +OP_FUNCTION = 13 +OP_FUNCTION_END = 15 +OP_NOOP = 17 +OP_BITFIELD = 19 +OP_TYPENAME = 21 +OP_CPYTHON_BLTN_V = 23 # varargs +OP_CPYTHON_BLTN_N = 25 # noargs +OP_CPYTHON_BLTN_O = 27 # O (i.e. a single arg) +OP_CONSTANT = 29 +OP_CONSTANT_INT = 31 +OP_GLOBAL_VAR = 33 +OP_DLOPEN_FUNC = 35 +OP_DLOPEN_CONST = 37 +OP_GLOBAL_VAR_F = 39 +OP_EXTERN_PYTHON = 41 + +PRIM_VOID = 0 +PRIM_BOOL = 1 +PRIM_CHAR = 2 +PRIM_SCHAR = 3 +PRIM_UCHAR = 4 +PRIM_SHORT = 5 +PRIM_USHORT = 6 +PRIM_INT = 7 +PRIM_UINT = 8 +PRIM_LONG = 9 +PRIM_ULONG = 10 +PRIM_LONGLONG = 11 +PRIM_ULONGLONG = 12 +PRIM_FLOAT = 13 +PRIM_DOUBLE = 14 +PRIM_LONGDOUBLE = 15 + +PRIM_WCHAR = 16 +PRIM_INT8 = 17 +PRIM_UINT8 = 18 +PRIM_INT16 = 19 +PRIM_UINT16 = 20 +PRIM_INT32 = 21 +PRIM_UINT32 = 22 +PRIM_INT64 = 23 +PRIM_UINT64 = 24 +PRIM_INTPTR = 25 +PRIM_UINTPTR = 26 +PRIM_PTRDIFF = 27 +PRIM_SIZE = 28 +PRIM_SSIZE = 29 +PRIM_INT_LEAST8 = 30 +PRIM_UINT_LEAST8 = 31 +PRIM_INT_LEAST16 = 32 +PRIM_UINT_LEAST16 = 33 +PRIM_INT_LEAST32 = 34 +PRIM_UINT_LEAST32 = 35 +PRIM_INT_LEAST64 = 36 +PRIM_UINT_LEAST64 = 37 +PRIM_INT_FAST8 = 38 +PRIM_UINT_FAST8 = 39 +PRIM_INT_FAST16 = 40 +PRIM_UINT_FAST16 = 41 +PRIM_INT_FAST32 = 42 +PRIM_UINT_FAST32 = 43 +PRIM_INT_FAST64 = 44 +PRIM_UINT_FAST64 = 45 +PRIM_INTMAX = 46 +PRIM_UINTMAX = 47 +PRIM_FLOATCOMPLEX = 48 +PRIM_DOUBLECOMPLEX = 49 +PRIM_CHAR16 = 50 +PRIM_CHAR32 = 51 + +_NUM_PRIM = 52 +_UNKNOWN_PRIM = -1 +_UNKNOWN_FLOAT_PRIM = -2 +_UNKNOWN_LONG_DOUBLE = -3 + +_IO_FILE_STRUCT = -1 + +PRIMITIVE_TO_INDEX = { + 'char': PRIM_CHAR, + 'short': PRIM_SHORT, + 'int': PRIM_INT, + 'long': PRIM_LONG, + 'long long': PRIM_LONGLONG, + 'signed char': PRIM_SCHAR, + 'unsigned char': PRIM_UCHAR, + 'unsigned short': PRIM_USHORT, + 'unsigned int': PRIM_UINT, + 'unsigned long': PRIM_ULONG, + 'unsigned long long': PRIM_ULONGLONG, + 'float': PRIM_FLOAT, + 'double': PRIM_DOUBLE, + 'long double': PRIM_LONGDOUBLE, + '_cffi_float_complex_t': PRIM_FLOATCOMPLEX, + '_cffi_double_complex_t': PRIM_DOUBLECOMPLEX, + '_Bool': PRIM_BOOL, + 'wchar_t': PRIM_WCHAR, + 'char16_t': PRIM_CHAR16, + 'char32_t': PRIM_CHAR32, + 'int8_t': PRIM_INT8, + 'uint8_t': PRIM_UINT8, + 'int16_t': PRIM_INT16, + 'uint16_t': PRIM_UINT16, + 'int32_t': PRIM_INT32, + 'uint32_t': PRIM_UINT32, + 'int64_t': PRIM_INT64, + 'uint64_t': PRIM_UINT64, + 'intptr_t': PRIM_INTPTR, + 'uintptr_t': PRIM_UINTPTR, + 'ptrdiff_t': PRIM_PTRDIFF, + 'size_t': PRIM_SIZE, + 'ssize_t': PRIM_SSIZE, + 'int_least8_t': PRIM_INT_LEAST8, + 'uint_least8_t': PRIM_UINT_LEAST8, + 'int_least16_t': PRIM_INT_LEAST16, + 'uint_least16_t': PRIM_UINT_LEAST16, + 'int_least32_t': PRIM_INT_LEAST32, + 'uint_least32_t': PRIM_UINT_LEAST32, + 'int_least64_t': PRIM_INT_LEAST64, + 'uint_least64_t': PRIM_UINT_LEAST64, + 'int_fast8_t': PRIM_INT_FAST8, + 'uint_fast8_t': PRIM_UINT_FAST8, + 'int_fast16_t': PRIM_INT_FAST16, + 'uint_fast16_t': PRIM_UINT_FAST16, + 'int_fast32_t': PRIM_INT_FAST32, + 'uint_fast32_t': PRIM_UINT_FAST32, + 'int_fast64_t': PRIM_INT_FAST64, + 'uint_fast64_t': PRIM_UINT_FAST64, + 'intmax_t': PRIM_INTMAX, + 'uintmax_t': PRIM_UINTMAX, + } + +F_UNION = 0x01 +F_CHECK_FIELDS = 0x02 +F_PACKED = 0x04 +F_EXTERNAL = 0x08 +F_OPAQUE = 0x10 + +G_FLAGS = dict([('_CFFI_' + _key, globals()[_key]) + for _key in ['F_UNION', 'F_CHECK_FIELDS', 'F_PACKED', + 'F_EXTERNAL', 'F_OPAQUE']]) + +CLASS_NAME = {} +for _name, _value in list(globals().items()): + if _name.startswith('OP_') and isinstance(_value, int): + CLASS_NAME[_value] = _name[3:] diff --git a/venv/lib/python3.12/site-packages/cffi/commontypes.py b/venv/lib/python3.12/site-packages/cffi/commontypes.py new file mode 100644 index 00000000..d4dae351 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi/commontypes.py @@ -0,0 +1,82 @@ +import sys +from . import model +from .error import FFIError + + +COMMON_TYPES = {} + +try: + # fetch "bool" and all simple Windows types + from _cffi_backend import _get_common_types + _get_common_types(COMMON_TYPES) +except ImportError: + pass + +COMMON_TYPES['FILE'] = model.unknown_type('FILE', '_IO_FILE') +COMMON_TYPES['bool'] = '_Bool' # in case we got ImportError above +COMMON_TYPES['float _Complex'] = '_cffi_float_complex_t' +COMMON_TYPES['double _Complex'] = '_cffi_double_complex_t' + +for _type in model.PrimitiveType.ALL_PRIMITIVE_TYPES: + if _type.endswith('_t'): + COMMON_TYPES[_type] = _type +del _type + +_CACHE = {} + +def resolve_common_type(parser, commontype): + try: + return _CACHE[commontype] + except KeyError: + cdecl = COMMON_TYPES.get(commontype, commontype) + if not isinstance(cdecl, str): + result, quals = cdecl, 0 # cdecl is already a BaseType + elif cdecl in model.PrimitiveType.ALL_PRIMITIVE_TYPES: + result, quals = model.PrimitiveType(cdecl), 0 + elif cdecl == 'set-unicode-needed': + raise FFIError("The Windows type %r is only available after " + "you call ffi.set_unicode()" % (commontype,)) + else: + if commontype == cdecl: + raise FFIError( + "Unsupported type: %r. Please look at " + "http://cffi.readthedocs.io/en/latest/cdef.html#ffi-cdef-limitations " + "and file an issue if you think this type should really " + "be supported." % (commontype,)) + result, quals = parser.parse_type_and_quals(cdecl) # recursive + + assert isinstance(result, model.BaseTypeByIdentity) + _CACHE[commontype] = result, quals + return result, quals + + +# ____________________________________________________________ +# extra types for Windows (most of them are in commontypes.c) + + +def win_common_types(): + return { + "UNICODE_STRING": model.StructType( + "_UNICODE_STRING", + ["Length", + "MaximumLength", + "Buffer"], + [model.PrimitiveType("unsigned short"), + model.PrimitiveType("unsigned short"), + model.PointerType(model.PrimitiveType("wchar_t"))], + [-1, -1, -1]), + "PUNICODE_STRING": "UNICODE_STRING *", + "PCUNICODE_STRING": "const UNICODE_STRING *", + + "TBYTE": "set-unicode-needed", + "TCHAR": "set-unicode-needed", + "LPCTSTR": "set-unicode-needed", + "PCTSTR": "set-unicode-needed", + "LPTSTR": "set-unicode-needed", + "PTSTR": "set-unicode-needed", + "PTBYTE": "set-unicode-needed", + "PTCHAR": "set-unicode-needed", + } + +if sys.platform == 'win32': + COMMON_TYPES.update(win_common_types()) diff --git a/venv/lib/python3.12/site-packages/cffi/cparser.py b/venv/lib/python3.12/site-packages/cffi/cparser.py new file mode 100644 index 00000000..dd590d87 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi/cparser.py @@ -0,0 +1,1015 @@ +from . import model +from .commontypes import COMMON_TYPES, resolve_common_type +from .error import FFIError, CDefError +try: + from . import _pycparser as pycparser +except ImportError: + import pycparser +import weakref, re, sys + +try: + if sys.version_info < (3,): + import thread as _thread + else: + import _thread + lock = _thread.allocate_lock() +except ImportError: + lock = None + +def _workaround_for_static_import_finders(): + # Issue #392: packaging tools like cx_Freeze can not find these + # because pycparser uses exec dynamic import. This is an obscure + # workaround. This function is never called. + import pycparser.yacctab + import pycparser.lextab + +CDEF_SOURCE_STRING = "" +_r_comment = re.compile(r"/\*.*?\*/|//([^\n\\]|\\.)*?$", + re.DOTALL | re.MULTILINE) +_r_define = re.compile(r"^\s*#\s*define\s+([A-Za-z_][A-Za-z_0-9]*)" + r"\b((?:[^\n\\]|\\.)*?)$", + re.DOTALL | re.MULTILINE) +_r_line_directive = re.compile(r"^[ \t]*#[ \t]*(?:line|\d+)\b.*$", re.MULTILINE) +_r_partial_enum = re.compile(r"=\s*\.\.\.\s*[,}]|\.\.\.\s*\}") +_r_enum_dotdotdot = re.compile(r"__dotdotdot\d+__$") +_r_partial_array = re.compile(r"\[\s*\.\.\.\s*\]") +_r_words = re.compile(r"\w+|\S") +_parser_cache = None +_r_int_literal = re.compile(r"-?0?x?[0-9a-f]+[lu]*$", re.IGNORECASE) +_r_stdcall1 = re.compile(r"\b(__stdcall|WINAPI)\b") +_r_stdcall2 = re.compile(r"[(]\s*(__stdcall|WINAPI)\b") +_r_cdecl = re.compile(r"\b__cdecl\b") +_r_extern_python = re.compile(r'\bextern\s*"' + r'(Python|Python\s*\+\s*C|C\s*\+\s*Python)"\s*.') +_r_star_const_space = re.compile( # matches "* const " + r"[*]\s*((const|volatile|restrict)\b\s*)+") +_r_int_dotdotdot = re.compile(r"(\b(int|long|short|signed|unsigned|char)\s*)+" + r"\.\.\.") +_r_float_dotdotdot = re.compile(r"\b(double|float)\s*\.\.\.") + +def _get_parser(): + global _parser_cache + if _parser_cache is None: + _parser_cache = pycparser.CParser() + return _parser_cache + +def _workaround_for_old_pycparser(csource): + # Workaround for a pycparser issue (fixed between pycparser 2.10 and + # 2.14): "char*const***" gives us a wrong syntax tree, the same as + # for "char***(*const)". This means we can't tell the difference + # afterwards. But "char(*const(***))" gives us the right syntax + # tree. The issue only occurs if there are several stars in + # sequence with no parenthesis in between, just possibly qualifiers. + # Attempt to fix it by adding some parentheses in the source: each + # time we see "* const" or "* const *", we add an opening + # parenthesis before each star---the hard part is figuring out where + # to close them. + parts = [] + while True: + match = _r_star_const_space.search(csource) + if not match: + break + #print repr(''.join(parts)+csource), '=>', + parts.append(csource[:match.start()]) + parts.append('('); closing = ')' + parts.append(match.group()) # e.g. "* const " + endpos = match.end() + if csource.startswith('*', endpos): + parts.append('('); closing += ')' + level = 0 + i = endpos + while i < len(csource): + c = csource[i] + if c == '(': + level += 1 + elif c == ')': + if level == 0: + break + level -= 1 + elif c in ',;=': + if level == 0: + break + i += 1 + csource = csource[endpos:i] + closing + csource[i:] + #print repr(''.join(parts)+csource) + parts.append(csource) + return ''.join(parts) + +def _preprocess_extern_python(csource): + # input: `extern "Python" int foo(int);` or + # `extern "Python" { int foo(int); }` + # output: + # void __cffi_extern_python_start; + # int foo(int); + # void __cffi_extern_python_stop; + # + # input: `extern "Python+C" int foo(int);` + # output: + # void __cffi_extern_python_plus_c_start; + # int foo(int); + # void __cffi_extern_python_stop; + parts = [] + while True: + match = _r_extern_python.search(csource) + if not match: + break + endpos = match.end() - 1 + #print + #print ''.join(parts)+csource + #print '=>' + parts.append(csource[:match.start()]) + if 'C' in match.group(1): + parts.append('void __cffi_extern_python_plus_c_start; ') + else: + parts.append('void __cffi_extern_python_start; ') + if csource[endpos] == '{': + # grouping variant + closing = csource.find('}', endpos) + if closing < 0: + raise CDefError("'extern \"Python\" {': no '}' found") + if csource.find('{', endpos + 1, closing) >= 0: + raise NotImplementedError("cannot use { } inside a block " + "'extern \"Python\" { ... }'") + parts.append(csource[endpos+1:closing]) + csource = csource[closing+1:] + else: + # non-grouping variant + semicolon = csource.find(';', endpos) + if semicolon < 0: + raise CDefError("'extern \"Python\": no ';' found") + parts.append(csource[endpos:semicolon+1]) + csource = csource[semicolon+1:] + parts.append(' void __cffi_extern_python_stop;') + #print ''.join(parts)+csource + #print + parts.append(csource) + return ''.join(parts) + +def _warn_for_string_literal(csource): + if '"' not in csource: + return + for line in csource.splitlines(): + if '"' in line and not line.lstrip().startswith('#'): + import warnings + warnings.warn("String literal found in cdef() or type source. " + "String literals are ignored here, but you should " + "remove them anyway because some character sequences " + "confuse pre-parsing.") + break + +def _warn_for_non_extern_non_static_global_variable(decl): + if not decl.storage: + import warnings + warnings.warn("Global variable '%s' in cdef(): for consistency " + "with C it should have a storage class specifier " + "(usually 'extern')" % (decl.name,)) + +def _remove_line_directives(csource): + # _r_line_directive matches whole lines, without the final \n, if they + # start with '#line' with some spacing allowed, or '#NUMBER'. This + # function stores them away and replaces them with exactly the string + # '#line@N', where N is the index in the list 'line_directives'. + line_directives = [] + def replace(m): + i = len(line_directives) + line_directives.append(m.group()) + return '#line@%d' % i + csource = _r_line_directive.sub(replace, csource) + return csource, line_directives + +def _put_back_line_directives(csource, line_directives): + def replace(m): + s = m.group() + if not s.startswith('#line@'): + raise AssertionError("unexpected #line directive " + "(should have been processed and removed") + return line_directives[int(s[6:])] + return _r_line_directive.sub(replace, csource) + +def _preprocess(csource): + # First, remove the lines of the form '#line N "filename"' because + # the "filename" part could confuse the rest + csource, line_directives = _remove_line_directives(csource) + # Remove comments. NOTE: this only work because the cdef() section + # should not contain any string literals (except in line directives)! + def replace_keeping_newlines(m): + return ' ' + m.group().count('\n') * '\n' + csource = _r_comment.sub(replace_keeping_newlines, csource) + # Remove the "#define FOO x" lines + macros = {} + for match in _r_define.finditer(csource): + macroname, macrovalue = match.groups() + macrovalue = macrovalue.replace('\\\n', '').strip() + macros[macroname] = macrovalue + csource = _r_define.sub('', csource) + # + if pycparser.__version__ < '2.14': + csource = _workaround_for_old_pycparser(csource) + # + # BIG HACK: replace WINAPI or __stdcall with "volatile const". + # It doesn't make sense for the return type of a function to be + # "volatile volatile const", so we abuse it to detect __stdcall... + # Hack number 2 is that "int(volatile *fptr)();" is not valid C + # syntax, so we place the "volatile" before the opening parenthesis. + csource = _r_stdcall2.sub(' volatile volatile const(', csource) + csource = _r_stdcall1.sub(' volatile volatile const ', csource) + csource = _r_cdecl.sub(' ', csource) + # + # Replace `extern "Python"` with start/end markers + csource = _preprocess_extern_python(csource) + # + # Now there should not be any string literal left; warn if we get one + _warn_for_string_literal(csource) + # + # Replace "[...]" with "[__dotdotdotarray__]" + csource = _r_partial_array.sub('[__dotdotdotarray__]', csource) + # + # Replace "...}" with "__dotdotdotNUM__}". This construction should + # occur only at the end of enums; at the end of structs we have "...;}" + # and at the end of vararg functions "...);". Also replace "=...[,}]" + # with ",__dotdotdotNUM__[,}]": this occurs in the enums too, when + # giving an unknown value. + matches = list(_r_partial_enum.finditer(csource)) + for number, match in enumerate(reversed(matches)): + p = match.start() + if csource[p] == '=': + p2 = csource.find('...', p, match.end()) + assert p2 > p + csource = '%s,__dotdotdot%d__ %s' % (csource[:p], number, + csource[p2+3:]) + else: + assert csource[p:p+3] == '...' + csource = '%s __dotdotdot%d__ %s' % (csource[:p], number, + csource[p+3:]) + # Replace "int ..." or "unsigned long int..." with "__dotdotdotint__" + csource = _r_int_dotdotdot.sub(' __dotdotdotint__ ', csource) + # Replace "float ..." or "double..." with "__dotdotdotfloat__" + csource = _r_float_dotdotdot.sub(' __dotdotdotfloat__ ', csource) + # Replace all remaining "..." with the same name, "__dotdotdot__", + # which is declared with a typedef for the purpose of C parsing. + csource = csource.replace('...', ' __dotdotdot__ ') + # Finally, put back the line directives + csource = _put_back_line_directives(csource, line_directives) + return csource, macros + +def _common_type_names(csource): + # Look in the source for what looks like usages of types from the + # list of common types. A "usage" is approximated here as the + # appearance of the word, minus a "definition" of the type, which + # is the last word in a "typedef" statement. Approximative only + # but should be fine for all the common types. + look_for_words = set(COMMON_TYPES) + look_for_words.add(';') + look_for_words.add(',') + look_for_words.add('(') + look_for_words.add(')') + look_for_words.add('typedef') + words_used = set() + is_typedef = False + paren = 0 + previous_word = '' + for word in _r_words.findall(csource): + if word in look_for_words: + if word == ';': + if is_typedef: + words_used.discard(previous_word) + look_for_words.discard(previous_word) + is_typedef = False + elif word == 'typedef': + is_typedef = True + paren = 0 + elif word == '(': + paren += 1 + elif word == ')': + paren -= 1 + elif word == ',': + if is_typedef and paren == 0: + words_used.discard(previous_word) + look_for_words.discard(previous_word) + else: # word in COMMON_TYPES + words_used.add(word) + previous_word = word + return words_used + + +class Parser(object): + + def __init__(self): + self._declarations = {} + self._included_declarations = set() + self._anonymous_counter = 0 + self._structnode2type = weakref.WeakKeyDictionary() + self._options = {} + self._int_constants = {} + self._recomplete = [] + self._uses_new_feature = None + + def _parse(self, csource): + csource, macros = _preprocess(csource) + # XXX: for more efficiency we would need to poke into the + # internals of CParser... the following registers the + # typedefs, because their presence or absence influences the + # parsing itself (but what they are typedef'ed to plays no role) + ctn = _common_type_names(csource) + typenames = [] + for name in sorted(self._declarations): + if name.startswith('typedef '): + name = name[8:] + typenames.append(name) + ctn.discard(name) + typenames += sorted(ctn) + # + csourcelines = [] + csourcelines.append('# 1 ""') + for typename in typenames: + csourcelines.append('typedef int %s;' % typename) + csourcelines.append('typedef int __dotdotdotint__, __dotdotdotfloat__,' + ' __dotdotdot__;') + # this forces pycparser to consider the following in the file + # called from line 1 + csourcelines.append('# 1 "%s"' % (CDEF_SOURCE_STRING,)) + csourcelines.append(csource) + csourcelines.append('') # see test_missing_newline_bug + fullcsource = '\n'.join(csourcelines) + if lock is not None: + lock.acquire() # pycparser is not thread-safe... + try: + ast = _get_parser().parse(fullcsource) + except pycparser.c_parser.ParseError as e: + self.convert_pycparser_error(e, csource) + finally: + if lock is not None: + lock.release() + # csource will be used to find buggy source text + return ast, macros, csource + + def _convert_pycparser_error(self, e, csource): + # xxx look for ":NUM:" at the start of str(e) + # and interpret that as a line number. This will not work if + # the user gives explicit ``# NUM "FILE"`` directives. + line = None + msg = str(e) + match = re.match(r"%s:(\d+):" % (CDEF_SOURCE_STRING,), msg) + if match: + linenum = int(match.group(1), 10) + csourcelines = csource.splitlines() + if 1 <= linenum <= len(csourcelines): + line = csourcelines[linenum-1] + return line + + def convert_pycparser_error(self, e, csource): + line = self._convert_pycparser_error(e, csource) + + msg = str(e) + if line: + msg = 'cannot parse "%s"\n%s' % (line.strip(), msg) + else: + msg = 'parse error\n%s' % (msg,) + raise CDefError(msg) + + def parse(self, csource, override=False, packed=False, pack=None, + dllexport=False): + if packed: + if packed != True: + raise ValueError("'packed' should be False or True; use " + "'pack' to give another value") + if pack: + raise ValueError("cannot give both 'pack' and 'packed'") + pack = 1 + elif pack: + if pack & (pack - 1): + raise ValueError("'pack' must be a power of two, not %r" % + (pack,)) + else: + pack = 0 + prev_options = self._options + try: + self._options = {'override': override, + 'packed': pack, + 'dllexport': dllexport} + self._internal_parse(csource) + finally: + self._options = prev_options + + def _internal_parse(self, csource): + ast, macros, csource = self._parse(csource) + # add the macros + self._process_macros(macros) + # find the first "__dotdotdot__" and use that as a separator + # between the repeated typedefs and the real csource + iterator = iter(ast.ext) + for decl in iterator: + if decl.name == '__dotdotdot__': + break + else: + assert 0 + current_decl = None + # + try: + self._inside_extern_python = '__cffi_extern_python_stop' + for decl in iterator: + current_decl = decl + if isinstance(decl, pycparser.c_ast.Decl): + self._parse_decl(decl) + elif isinstance(decl, pycparser.c_ast.Typedef): + if not decl.name: + raise CDefError("typedef does not declare any name", + decl) + quals = 0 + if (isinstance(decl.type.type, pycparser.c_ast.IdentifierType) and + decl.type.type.names[-1].startswith('__dotdotdot')): + realtype = self._get_unknown_type(decl) + elif (isinstance(decl.type, pycparser.c_ast.PtrDecl) and + isinstance(decl.type.type, pycparser.c_ast.TypeDecl) and + isinstance(decl.type.type.type, + pycparser.c_ast.IdentifierType) and + decl.type.type.type.names[-1].startswith('__dotdotdot')): + realtype = self._get_unknown_ptr_type(decl) + else: + realtype, quals = self._get_type_and_quals( + decl.type, name=decl.name, partial_length_ok=True, + typedef_example="*(%s *)0" % (decl.name,)) + self._declare('typedef ' + decl.name, realtype, quals=quals) + elif decl.__class__.__name__ == 'Pragma': + # skip pragma, only in pycparser 2.15 + import warnings + warnings.warn( + "#pragma in cdef() are entirely ignored. " + "They should be removed for now, otherwise your " + "code might behave differently in a future version " + "of CFFI if #pragma support gets added. Note that " + "'#pragma pack' needs to be replaced with the " + "'packed' keyword argument to cdef().") + else: + raise CDefError("unexpected <%s>: this construct is valid " + "C but not valid in cdef()" % + decl.__class__.__name__, decl) + except CDefError as e: + if len(e.args) == 1: + e.args = e.args + (current_decl,) + raise + except FFIError as e: + msg = self._convert_pycparser_error(e, csource) + if msg: + e.args = (e.args[0] + "\n *** Err: %s" % msg,) + raise + + def _add_constants(self, key, val): + if key in self._int_constants: + if self._int_constants[key] == val: + return # ignore identical double declarations + raise FFIError( + "multiple declarations of constant: %s" % (key,)) + self._int_constants[key] = val + + def _add_integer_constant(self, name, int_str): + int_str = int_str.lower().rstrip("ul") + neg = int_str.startswith('-') + if neg: + int_str = int_str[1:] + # "010" is not valid oct in py3 + if (int_str.startswith("0") and int_str != '0' + and not int_str.startswith("0x")): + int_str = "0o" + int_str[1:] + pyvalue = int(int_str, 0) + if neg: + pyvalue = -pyvalue + self._add_constants(name, pyvalue) + self._declare('macro ' + name, pyvalue) + + def _process_macros(self, macros): + for key, value in macros.items(): + value = value.strip() + if _r_int_literal.match(value): + self._add_integer_constant(key, value) + elif value == '...': + self._declare('macro ' + key, value) + else: + raise CDefError( + 'only supports one of the following syntax:\n' + ' #define %s ... (literally dot-dot-dot)\n' + ' #define %s NUMBER (with NUMBER an integer' + ' constant, decimal/hex/octal)\n' + 'got:\n' + ' #define %s %s' + % (key, key, key, value)) + + def _declare_function(self, tp, quals, decl): + tp = self._get_type_pointer(tp, quals) + if self._options.get('dllexport'): + tag = 'dllexport_python ' + elif self._inside_extern_python == '__cffi_extern_python_start': + tag = 'extern_python ' + elif self._inside_extern_python == '__cffi_extern_python_plus_c_start': + tag = 'extern_python_plus_c ' + else: + tag = 'function ' + self._declare(tag + decl.name, tp) + + def _parse_decl(self, decl): + node = decl.type + if isinstance(node, pycparser.c_ast.FuncDecl): + tp, quals = self._get_type_and_quals(node, name=decl.name) + assert isinstance(tp, model.RawFunctionType) + self._declare_function(tp, quals, decl) + else: + if isinstance(node, pycparser.c_ast.Struct): + self._get_struct_union_enum_type('struct', node) + elif isinstance(node, pycparser.c_ast.Union): + self._get_struct_union_enum_type('union', node) + elif isinstance(node, pycparser.c_ast.Enum): + self._get_struct_union_enum_type('enum', node) + elif not decl.name: + raise CDefError("construct does not declare any variable", + decl) + # + if decl.name: + tp, quals = self._get_type_and_quals(node, + partial_length_ok=True) + if tp.is_raw_function: + self._declare_function(tp, quals, decl) + elif (tp.is_integer_type() and + hasattr(decl, 'init') and + hasattr(decl.init, 'value') and + _r_int_literal.match(decl.init.value)): + self._add_integer_constant(decl.name, decl.init.value) + elif (tp.is_integer_type() and + isinstance(decl.init, pycparser.c_ast.UnaryOp) and + decl.init.op == '-' and + hasattr(decl.init.expr, 'value') and + _r_int_literal.match(decl.init.expr.value)): + self._add_integer_constant(decl.name, + '-' + decl.init.expr.value) + elif (tp is model.void_type and + decl.name.startswith('__cffi_extern_python_')): + # hack: `extern "Python"` in the C source is replaced + # with "void __cffi_extern_python_start;" and + # "void __cffi_extern_python_stop;" + self._inside_extern_python = decl.name + else: + if self._inside_extern_python !='__cffi_extern_python_stop': + raise CDefError( + "cannot declare constants or " + "variables with 'extern \"Python\"'") + if (quals & model.Q_CONST) and not tp.is_array_type: + self._declare('constant ' + decl.name, tp, quals=quals) + else: + _warn_for_non_extern_non_static_global_variable(decl) + self._declare('variable ' + decl.name, tp, quals=quals) + + def parse_type(self, cdecl): + return self.parse_type_and_quals(cdecl)[0] + + def parse_type_and_quals(self, cdecl): + ast, macros = self._parse('void __dummy(\n%s\n);' % cdecl)[:2] + assert not macros + exprnode = ast.ext[-1].type.args.params[0] + if isinstance(exprnode, pycparser.c_ast.ID): + raise CDefError("unknown identifier '%s'" % (exprnode.name,)) + return self._get_type_and_quals(exprnode.type) + + def _declare(self, name, obj, included=False, quals=0): + if name in self._declarations: + prevobj, prevquals = self._declarations[name] + if prevobj is obj and prevquals == quals: + return + if not self._options.get('override'): + raise FFIError( + "multiple declarations of %s (for interactive usage, " + "try cdef(xx, override=True))" % (name,)) + assert '__dotdotdot__' not in name.split() + self._declarations[name] = (obj, quals) + if included: + self._included_declarations.add(obj) + + def _extract_quals(self, type): + quals = 0 + if isinstance(type, (pycparser.c_ast.TypeDecl, + pycparser.c_ast.PtrDecl)): + if 'const' in type.quals: + quals |= model.Q_CONST + if 'volatile' in type.quals: + quals |= model.Q_VOLATILE + if 'restrict' in type.quals: + quals |= model.Q_RESTRICT + return quals + + def _get_type_pointer(self, type, quals, declname=None): + if isinstance(type, model.RawFunctionType): + return type.as_function_pointer() + if (isinstance(type, model.StructOrUnionOrEnum) and + type.name.startswith('$') and type.name[1:].isdigit() and + type.forcename is None and declname is not None): + return model.NamedPointerType(type, declname, quals) + return model.PointerType(type, quals) + + def _get_type_and_quals(self, typenode, name=None, partial_length_ok=False, + typedef_example=None): + # first, dereference typedefs, if we have it already parsed, we're good + if (isinstance(typenode, pycparser.c_ast.TypeDecl) and + isinstance(typenode.type, pycparser.c_ast.IdentifierType) and + len(typenode.type.names) == 1 and + ('typedef ' + typenode.type.names[0]) in self._declarations): + tp, quals = self._declarations['typedef ' + typenode.type.names[0]] + quals |= self._extract_quals(typenode) + return tp, quals + # + if isinstance(typenode, pycparser.c_ast.ArrayDecl): + # array type + if typenode.dim is None: + length = None + else: + length = self._parse_constant( + typenode.dim, partial_length_ok=partial_length_ok) + # a hack: in 'typedef int foo_t[...][...];', don't use '...' as + # the length but use directly the C expression that would be + # generated by recompiler.py. This lets the typedef be used in + # many more places within recompiler.py + if typedef_example is not None: + if length == '...': + length = '_cffi_array_len(%s)' % (typedef_example,) + typedef_example = "*" + typedef_example + # + tp, quals = self._get_type_and_quals(typenode.type, + partial_length_ok=partial_length_ok, + typedef_example=typedef_example) + return model.ArrayType(tp, length), quals + # + if isinstance(typenode, pycparser.c_ast.PtrDecl): + # pointer type + itemtype, itemquals = self._get_type_and_quals(typenode.type) + tp = self._get_type_pointer(itemtype, itemquals, declname=name) + quals = self._extract_quals(typenode) + return tp, quals + # + if isinstance(typenode, pycparser.c_ast.TypeDecl): + quals = self._extract_quals(typenode) + type = typenode.type + if isinstance(type, pycparser.c_ast.IdentifierType): + # assume a primitive type. get it from .names, but reduce + # synonyms to a single chosen combination + names = list(type.names) + if names != ['signed', 'char']: # keep this unmodified + prefixes = {} + while names: + name = names[0] + if name in ('short', 'long', 'signed', 'unsigned'): + prefixes[name] = prefixes.get(name, 0) + 1 + del names[0] + else: + break + # ignore the 'signed' prefix below, and reorder the others + newnames = [] + for prefix in ('unsigned', 'short', 'long'): + for i in range(prefixes.get(prefix, 0)): + newnames.append(prefix) + if not names: + names = ['int'] # implicitly + if names == ['int']: # but kill it if 'short' or 'long' + if 'short' in prefixes or 'long' in prefixes: + names = [] + names = newnames + names + ident = ' '.join(names) + if ident == 'void': + return model.void_type, quals + if ident == '__dotdotdot__': + raise FFIError(':%d: bad usage of "..."' % + typenode.coord.line) + tp0, quals0 = resolve_common_type(self, ident) + return tp0, (quals | quals0) + # + if isinstance(type, pycparser.c_ast.Struct): + # 'struct foobar' + tp = self._get_struct_union_enum_type('struct', type, name) + return tp, quals + # + if isinstance(type, pycparser.c_ast.Union): + # 'union foobar' + tp = self._get_struct_union_enum_type('union', type, name) + return tp, quals + # + if isinstance(type, pycparser.c_ast.Enum): + # 'enum foobar' + tp = self._get_struct_union_enum_type('enum', type, name) + return tp, quals + # + if isinstance(typenode, pycparser.c_ast.FuncDecl): + # a function type + return self._parse_function_type(typenode, name), 0 + # + # nested anonymous structs or unions end up here + if isinstance(typenode, pycparser.c_ast.Struct): + return self._get_struct_union_enum_type('struct', typenode, name, + nested=True), 0 + if isinstance(typenode, pycparser.c_ast.Union): + return self._get_struct_union_enum_type('union', typenode, name, + nested=True), 0 + # + raise FFIError(":%d: bad or unsupported type declaration" % + typenode.coord.line) + + def _parse_function_type(self, typenode, funcname=None): + params = list(getattr(typenode.args, 'params', [])) + for i, arg in enumerate(params): + if not hasattr(arg, 'type'): + raise CDefError("%s arg %d: unknown type '%s'" + " (if you meant to use the old C syntax of giving" + " untyped arguments, it is not supported)" + % (funcname or 'in expression', i + 1, + getattr(arg, 'name', '?'))) + ellipsis = ( + len(params) > 0 and + isinstance(params[-1].type, pycparser.c_ast.TypeDecl) and + isinstance(params[-1].type.type, + pycparser.c_ast.IdentifierType) and + params[-1].type.type.names == ['__dotdotdot__']) + if ellipsis: + params.pop() + if not params: + raise CDefError( + "%s: a function with only '(...)' as argument" + " is not correct C" % (funcname or 'in expression')) + args = [self._as_func_arg(*self._get_type_and_quals(argdeclnode.type)) + for argdeclnode in params] + if not ellipsis and args == [model.void_type]: + args = [] + result, quals = self._get_type_and_quals(typenode.type) + # the 'quals' on the result type are ignored. HACK: we absure them + # to detect __stdcall functions: we textually replace "__stdcall" + # with "volatile volatile const" above. + abi = None + if hasattr(typenode.type, 'quals'): # else, probable syntax error anyway + if typenode.type.quals[-3:] == ['volatile', 'volatile', 'const']: + abi = '__stdcall' + return model.RawFunctionType(tuple(args), result, ellipsis, abi) + + def _as_func_arg(self, type, quals): + if isinstance(type, model.ArrayType): + return model.PointerType(type.item, quals) + elif isinstance(type, model.RawFunctionType): + return type.as_function_pointer() + else: + return type + + def _get_struct_union_enum_type(self, kind, type, name=None, nested=False): + # First, a level of caching on the exact 'type' node of the AST. + # This is obscure, but needed because pycparser "unrolls" declarations + # such as "typedef struct { } foo_t, *foo_p" and we end up with + # an AST that is not a tree, but a DAG, with the "type" node of the + # two branches foo_t and foo_p of the trees being the same node. + # It's a bit silly but detecting "DAG-ness" in the AST tree seems + # to be the only way to distinguish this case from two independent + # structs. See test_struct_with_two_usages. + try: + return self._structnode2type[type] + except KeyError: + pass + # + # Note that this must handle parsing "struct foo" any number of + # times and always return the same StructType object. Additionally, + # one of these times (not necessarily the first), the fields of + # the struct can be specified with "struct foo { ...fields... }". + # If no name is given, then we have to create a new anonymous struct + # with no caching; in this case, the fields are either specified + # right now or never. + # + force_name = name + name = type.name + # + # get the type or create it if needed + if name is None: + # 'force_name' is used to guess a more readable name for + # anonymous structs, for the common case "typedef struct { } foo". + if force_name is not None: + explicit_name = '$%s' % force_name + else: + self._anonymous_counter += 1 + explicit_name = '$%d' % self._anonymous_counter + tp = None + else: + explicit_name = name + key = '%s %s' % (kind, name) + tp, _ = self._declarations.get(key, (None, None)) + # + if tp is None: + if kind == 'struct': + tp = model.StructType(explicit_name, None, None, None) + elif kind == 'union': + tp = model.UnionType(explicit_name, None, None, None) + elif kind == 'enum': + if explicit_name == '__dotdotdot__': + raise CDefError("Enums cannot be declared with ...") + tp = self._build_enum_type(explicit_name, type.values) + else: + raise AssertionError("kind = %r" % (kind,)) + if name is not None: + self._declare(key, tp) + else: + if kind == 'enum' and type.values is not None: + raise NotImplementedError( + "enum %s: the '{}' declaration should appear on the first " + "time the enum is mentioned, not later" % explicit_name) + if not tp.forcename: + tp.force_the_name(force_name) + if tp.forcename and '$' in tp.name: + self._declare('anonymous %s' % tp.forcename, tp) + # + self._structnode2type[type] = tp + # + # enums: done here + if kind == 'enum': + return tp + # + # is there a 'type.decls'? If yes, then this is the place in the + # C sources that declare the fields. If no, then just return the + # existing type, possibly still incomplete. + if type.decls is None: + return tp + # + if tp.fldnames is not None: + raise CDefError("duplicate declaration of struct %s" % name) + fldnames = [] + fldtypes = [] + fldbitsize = [] + fldquals = [] + for decl in type.decls: + if (isinstance(decl.type, pycparser.c_ast.IdentifierType) and + ''.join(decl.type.names) == '__dotdotdot__'): + # XXX pycparser is inconsistent: 'names' should be a list + # of strings, but is sometimes just one string. Use + # str.join() as a way to cope with both. + self._make_partial(tp, nested) + continue + if decl.bitsize is None: + bitsize = -1 + else: + bitsize = self._parse_constant(decl.bitsize) + self._partial_length = False + type, fqual = self._get_type_and_quals(decl.type, + partial_length_ok=True) + if self._partial_length: + self._make_partial(tp, nested) + if isinstance(type, model.StructType) and type.partial: + self._make_partial(tp, nested) + fldnames.append(decl.name or '') + fldtypes.append(type) + fldbitsize.append(bitsize) + fldquals.append(fqual) + tp.fldnames = tuple(fldnames) + tp.fldtypes = tuple(fldtypes) + tp.fldbitsize = tuple(fldbitsize) + tp.fldquals = tuple(fldquals) + if fldbitsize != [-1] * len(fldbitsize): + if isinstance(tp, model.StructType) and tp.partial: + raise NotImplementedError("%s: using both bitfields and '...;'" + % (tp,)) + tp.packed = self._options.get('packed') + if tp.completed: # must be re-completed: it is not opaque any more + tp.completed = 0 + self._recomplete.append(tp) + return tp + + def _make_partial(self, tp, nested): + if not isinstance(tp, model.StructOrUnion): + raise CDefError("%s cannot be partial" % (tp,)) + if not tp.has_c_name() and not nested: + raise NotImplementedError("%s is partial but has no C name" %(tp,)) + tp.partial = True + + def _parse_constant(self, exprnode, partial_length_ok=False): + # for now, limited to expressions that are an immediate number + # or positive/negative number + if isinstance(exprnode, pycparser.c_ast.Constant): + s = exprnode.value + if '0' <= s[0] <= '9': + s = s.rstrip('uUlL') + try: + if s.startswith('0'): + return int(s, 8) + else: + return int(s, 10) + except ValueError: + if len(s) > 1: + if s.lower()[0:2] == '0x': + return int(s, 16) + elif s.lower()[0:2] == '0b': + return int(s, 2) + raise CDefError("invalid constant %r" % (s,)) + elif s[0] == "'" and s[-1] == "'" and ( + len(s) == 3 or (len(s) == 4 and s[1] == "\\")): + return ord(s[-2]) + else: + raise CDefError("invalid constant %r" % (s,)) + # + if (isinstance(exprnode, pycparser.c_ast.UnaryOp) and + exprnode.op == '+'): + return self._parse_constant(exprnode.expr) + # + if (isinstance(exprnode, pycparser.c_ast.UnaryOp) and + exprnode.op == '-'): + return -self._parse_constant(exprnode.expr) + # load previously defined int constant + if (isinstance(exprnode, pycparser.c_ast.ID) and + exprnode.name in self._int_constants): + return self._int_constants[exprnode.name] + # + if (isinstance(exprnode, pycparser.c_ast.ID) and + exprnode.name == '__dotdotdotarray__'): + if partial_length_ok: + self._partial_length = True + return '...' + raise FFIError(":%d: unsupported '[...]' here, cannot derive " + "the actual array length in this context" + % exprnode.coord.line) + # + if isinstance(exprnode, pycparser.c_ast.BinaryOp): + left = self._parse_constant(exprnode.left) + right = self._parse_constant(exprnode.right) + if exprnode.op == '+': + return left + right + elif exprnode.op == '-': + return left - right + elif exprnode.op == '*': + return left * right + elif exprnode.op == '/': + return self._c_div(left, right) + elif exprnode.op == '%': + return left - self._c_div(left, right) * right + elif exprnode.op == '<<': + return left << right + elif exprnode.op == '>>': + return left >> right + elif exprnode.op == '&': + return left & right + elif exprnode.op == '|': + return left | right + elif exprnode.op == '^': + return left ^ right + # + raise FFIError(":%d: unsupported expression: expected a " + "simple numeric constant" % exprnode.coord.line) + + def _c_div(self, a, b): + result = a // b + if ((a < 0) ^ (b < 0)) and (a % b) != 0: + result += 1 + return result + + def _build_enum_type(self, explicit_name, decls): + if decls is not None: + partial = False + enumerators = [] + enumvalues = [] + nextenumvalue = 0 + for enum in decls.enumerators: + if _r_enum_dotdotdot.match(enum.name): + partial = True + continue + if enum.value is not None: + nextenumvalue = self._parse_constant(enum.value) + enumerators.append(enum.name) + enumvalues.append(nextenumvalue) + self._add_constants(enum.name, nextenumvalue) + nextenumvalue += 1 + enumerators = tuple(enumerators) + enumvalues = tuple(enumvalues) + tp = model.EnumType(explicit_name, enumerators, enumvalues) + tp.partial = partial + else: # opaque enum + tp = model.EnumType(explicit_name, (), ()) + return tp + + def include(self, other): + for name, (tp, quals) in other._declarations.items(): + if name.startswith('anonymous $enum_$'): + continue # fix for test_anonymous_enum_include + kind = name.split(' ', 1)[0] + if kind in ('struct', 'union', 'enum', 'anonymous', 'typedef'): + self._declare(name, tp, included=True, quals=quals) + for k, v in other._int_constants.items(): + self._add_constants(k, v) + + def _get_unknown_type(self, decl): + typenames = decl.type.type.names + if typenames == ['__dotdotdot__']: + return model.unknown_type(decl.name) + + if typenames == ['__dotdotdotint__']: + if self._uses_new_feature is None: + self._uses_new_feature = "'typedef int... %s'" % decl.name + return model.UnknownIntegerType(decl.name) + + if typenames == ['__dotdotdotfloat__']: + # note: not for 'long double' so far + if self._uses_new_feature is None: + self._uses_new_feature = "'typedef float... %s'" % decl.name + return model.UnknownFloatType(decl.name) + + raise FFIError(':%d: unsupported usage of "..." in typedef' + % decl.coord.line) + + def _get_unknown_ptr_type(self, decl): + if decl.type.type.type.names == ['__dotdotdot__']: + return model.unknown_ptr_type(decl.name) + raise FFIError(':%d: unsupported usage of "..." in typedef' + % decl.coord.line) diff --git a/venv/lib/python3.12/site-packages/cffi/error.py b/venv/lib/python3.12/site-packages/cffi/error.py new file mode 100644 index 00000000..0a27247c --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi/error.py @@ -0,0 +1,31 @@ + +class FFIError(Exception): + __module__ = 'cffi' + +class CDefError(Exception): + __module__ = 'cffi' + def __str__(self): + try: + current_decl = self.args[1] + filename = current_decl.coord.file + linenum = current_decl.coord.line + prefix = '%s:%d: ' % (filename, linenum) + except (AttributeError, TypeError, IndexError): + prefix = '' + return '%s%s' % (prefix, self.args[0]) + +class VerificationError(Exception): + """ An error raised when verification fails + """ + __module__ = 'cffi' + +class VerificationMissing(Exception): + """ An error raised when incomplete structures are passed into + cdef, but no verification has been done + """ + __module__ = 'cffi' + +class PkgConfigError(Exception): + """ An error raised for missing modules in pkg-config + """ + __module__ = 'cffi' diff --git a/venv/lib/python3.12/site-packages/cffi/ffiplatform.py b/venv/lib/python3.12/site-packages/cffi/ffiplatform.py new file mode 100644 index 00000000..adca28f1 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi/ffiplatform.py @@ -0,0 +1,113 @@ +import sys, os +from .error import VerificationError + + +LIST_OF_FILE_NAMES = ['sources', 'include_dirs', 'library_dirs', + 'extra_objects', 'depends'] + +def get_extension(srcfilename, modname, sources=(), **kwds): + from cffi._shimmed_dist_utils import Extension + allsources = [srcfilename] + for src in sources: + allsources.append(os.path.normpath(src)) + return Extension(name=modname, sources=allsources, **kwds) + +def compile(tmpdir, ext, compiler_verbose=0, debug=None): + """Compile a C extension module using distutils.""" + + saved_environ = os.environ.copy() + try: + outputfilename = _build(tmpdir, ext, compiler_verbose, debug) + outputfilename = os.path.abspath(outputfilename) + finally: + # workaround for a distutils bugs where some env vars can + # become longer and longer every time it is used + for key, value in saved_environ.items(): + if os.environ.get(key) != value: + os.environ[key] = value + return outputfilename + +def _build(tmpdir, ext, compiler_verbose=0, debug=None): + # XXX compact but horrible :-( + from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity + + dist = Distribution({'ext_modules': [ext]}) + dist.parse_config_files() + options = dist.get_option_dict('build_ext') + if debug is None: + debug = sys.flags.debug + options['debug'] = ('ffiplatform', debug) + options['force'] = ('ffiplatform', True) + options['build_lib'] = ('ffiplatform', tmpdir) + options['build_temp'] = ('ffiplatform', tmpdir) + # + try: + old_level = set_threshold(0) or 0 + try: + set_verbosity(compiler_verbose) + dist.run_command('build_ext') + cmd_obj = dist.get_command_obj('build_ext') + [soname] = cmd_obj.get_outputs() + finally: + set_threshold(old_level) + except (CompileError, LinkError) as e: + raise VerificationError('%s: %s' % (e.__class__.__name__, e)) + # + return soname + +try: + from os.path import samefile +except ImportError: + def samefile(f1, f2): + return os.path.abspath(f1) == os.path.abspath(f2) + +def maybe_relative_path(path): + if not os.path.isabs(path): + return path # already relative + dir = path + names = [] + while True: + prevdir = dir + dir, name = os.path.split(prevdir) + if dir == prevdir or not dir: + return path # failed to make it relative + names.append(name) + try: + if samefile(dir, os.curdir): + names.reverse() + return os.path.join(*names) + except OSError: + pass + +# ____________________________________________________________ + +try: + int_or_long = (int, long) + import cStringIO +except NameError: + int_or_long = int # Python 3 + import io as cStringIO + +def _flatten(x, f): + if isinstance(x, str): + f.write('%ds%s' % (len(x), x)) + elif isinstance(x, dict): + keys = sorted(x.keys()) + f.write('%dd' % len(keys)) + for key in keys: + _flatten(key, f) + _flatten(x[key], f) + elif isinstance(x, (list, tuple)): + f.write('%dl' % len(x)) + for value in x: + _flatten(value, f) + elif isinstance(x, int_or_long): + f.write('%di' % (x,)) + else: + raise TypeError( + "the keywords to verify() contains unsupported object %r" % (x,)) + +def flatten(x): + f = cStringIO.StringIO() + _flatten(x, f) + return f.getvalue() diff --git a/venv/lib/python3.12/site-packages/cffi/lock.py b/venv/lib/python3.12/site-packages/cffi/lock.py new file mode 100644 index 00000000..db91b715 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi/lock.py @@ -0,0 +1,30 @@ +import sys + +if sys.version_info < (3,): + try: + from thread import allocate_lock + except ImportError: + from dummy_thread import allocate_lock +else: + try: + from _thread import allocate_lock + except ImportError: + from _dummy_thread import allocate_lock + + +##import sys +##l1 = allocate_lock + +##class allocate_lock(object): +## def __init__(self): +## self._real = l1() +## def __enter__(self): +## for i in range(4, 0, -1): +## print sys._getframe(i).f_code +## print +## return self._real.__enter__() +## def __exit__(self, *args): +## return self._real.__exit__(*args) +## def acquire(self, f): +## assert f is False +## return self._real.acquire(f) diff --git a/venv/lib/python3.12/site-packages/cffi/model.py b/venv/lib/python3.12/site-packages/cffi/model.py new file mode 100644 index 00000000..e5f4cae3 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi/model.py @@ -0,0 +1,618 @@ +import types +import weakref + +from .lock import allocate_lock +from .error import CDefError, VerificationError, VerificationMissing + +# type qualifiers +Q_CONST = 0x01 +Q_RESTRICT = 0x02 +Q_VOLATILE = 0x04 + +def qualify(quals, replace_with): + if quals & Q_CONST: + replace_with = ' const ' + replace_with.lstrip() + if quals & Q_VOLATILE: + replace_with = ' volatile ' + replace_with.lstrip() + if quals & Q_RESTRICT: + # It seems that __restrict is supported by gcc and msvc. + # If you hit some different compiler, add a #define in + # _cffi_include.h for it (and in its copies, documented there) + replace_with = ' __restrict ' + replace_with.lstrip() + return replace_with + + +class BaseTypeByIdentity(object): + is_array_type = False + is_raw_function = False + + def get_c_name(self, replace_with='', context='a C file', quals=0): + result = self.c_name_with_marker + assert result.count('&') == 1 + # some logic duplication with ffi.getctype()... :-( + replace_with = replace_with.strip() + if replace_with: + if replace_with.startswith('*') and '&[' in result: + replace_with = '(%s)' % replace_with + elif not replace_with[0] in '[(': + replace_with = ' ' + replace_with + replace_with = qualify(quals, replace_with) + result = result.replace('&', replace_with) + if '$' in result: + raise VerificationError( + "cannot generate '%s' in %s: unknown type name" + % (self._get_c_name(), context)) + return result + + def _get_c_name(self): + return self.c_name_with_marker.replace('&', '') + + def has_c_name(self): + return '$' not in self._get_c_name() + + def is_integer_type(self): + return False + + def get_cached_btype(self, ffi, finishlist, can_delay=False): + try: + BType = ffi._cached_btypes[self] + except KeyError: + BType = self.build_backend_type(ffi, finishlist) + BType2 = ffi._cached_btypes.setdefault(self, BType) + assert BType2 is BType + return BType + + def __repr__(self): + return '<%s>' % (self._get_c_name(),) + + def _get_items(self): + return [(name, getattr(self, name)) for name in self._attrs_] + + +class BaseType(BaseTypeByIdentity): + + def __eq__(self, other): + return (self.__class__ == other.__class__ and + self._get_items() == other._get_items()) + + def __ne__(self, other): + return not self == other + + def __hash__(self): + return hash((self.__class__, tuple(self._get_items()))) + + +class VoidType(BaseType): + _attrs_ = () + + def __init__(self): + self.c_name_with_marker = 'void&' + + def build_backend_type(self, ffi, finishlist): + return global_cache(self, ffi, 'new_void_type') + +void_type = VoidType() + + +class BasePrimitiveType(BaseType): + def is_complex_type(self): + return False + + +class PrimitiveType(BasePrimitiveType): + _attrs_ = ('name',) + + ALL_PRIMITIVE_TYPES = { + 'char': 'c', + 'short': 'i', + 'int': 'i', + 'long': 'i', + 'long long': 'i', + 'signed char': 'i', + 'unsigned char': 'i', + 'unsigned short': 'i', + 'unsigned int': 'i', + 'unsigned long': 'i', + 'unsigned long long': 'i', + 'float': 'f', + 'double': 'f', + 'long double': 'f', + '_cffi_float_complex_t': 'j', + '_cffi_double_complex_t': 'j', + '_Bool': 'i', + # the following types are not primitive in the C sense + 'wchar_t': 'c', + 'char16_t': 'c', + 'char32_t': 'c', + 'int8_t': 'i', + 'uint8_t': 'i', + 'int16_t': 'i', + 'uint16_t': 'i', + 'int32_t': 'i', + 'uint32_t': 'i', + 'int64_t': 'i', + 'uint64_t': 'i', + 'int_least8_t': 'i', + 'uint_least8_t': 'i', + 'int_least16_t': 'i', + 'uint_least16_t': 'i', + 'int_least32_t': 'i', + 'uint_least32_t': 'i', + 'int_least64_t': 'i', + 'uint_least64_t': 'i', + 'int_fast8_t': 'i', + 'uint_fast8_t': 'i', + 'int_fast16_t': 'i', + 'uint_fast16_t': 'i', + 'int_fast32_t': 'i', + 'uint_fast32_t': 'i', + 'int_fast64_t': 'i', + 'uint_fast64_t': 'i', + 'intptr_t': 'i', + 'uintptr_t': 'i', + 'intmax_t': 'i', + 'uintmax_t': 'i', + 'ptrdiff_t': 'i', + 'size_t': 'i', + 'ssize_t': 'i', + } + + def __init__(self, name): + assert name in self.ALL_PRIMITIVE_TYPES + self.name = name + self.c_name_with_marker = name + '&' + + def is_char_type(self): + return self.ALL_PRIMITIVE_TYPES[self.name] == 'c' + def is_integer_type(self): + return self.ALL_PRIMITIVE_TYPES[self.name] == 'i' + def is_float_type(self): + return self.ALL_PRIMITIVE_TYPES[self.name] == 'f' + def is_complex_type(self): + return self.ALL_PRIMITIVE_TYPES[self.name] == 'j' + + def build_backend_type(self, ffi, finishlist): + return global_cache(self, ffi, 'new_primitive_type', self.name) + + +class UnknownIntegerType(BasePrimitiveType): + _attrs_ = ('name',) + + def __init__(self, name): + self.name = name + self.c_name_with_marker = name + '&' + + def is_integer_type(self): + return True + + def build_backend_type(self, ffi, finishlist): + raise NotImplementedError("integer type '%s' can only be used after " + "compilation" % self.name) + +class UnknownFloatType(BasePrimitiveType): + _attrs_ = ('name', ) + + def __init__(self, name): + self.name = name + self.c_name_with_marker = name + '&' + + def build_backend_type(self, ffi, finishlist): + raise NotImplementedError("float type '%s' can only be used after " + "compilation" % self.name) + + +class BaseFunctionType(BaseType): + _attrs_ = ('args', 'result', 'ellipsis', 'abi') + + def __init__(self, args, result, ellipsis, abi=None): + self.args = args + self.result = result + self.ellipsis = ellipsis + self.abi = abi + # + reprargs = [arg._get_c_name() for arg in self.args] + if self.ellipsis: + reprargs.append('...') + reprargs = reprargs or ['void'] + replace_with = self._base_pattern % (', '.join(reprargs),) + if abi is not None: + replace_with = replace_with[:1] + abi + ' ' + replace_with[1:] + self.c_name_with_marker = ( + self.result.c_name_with_marker.replace('&', replace_with)) + + +class RawFunctionType(BaseFunctionType): + # Corresponds to a C type like 'int(int)', which is the C type of + # a function, but not a pointer-to-function. The backend has no + # notion of such a type; it's used temporarily by parsing. + _base_pattern = '(&)(%s)' + is_raw_function = True + + def build_backend_type(self, ffi, finishlist): + raise CDefError("cannot render the type %r: it is a function " + "type, not a pointer-to-function type" % (self,)) + + def as_function_pointer(self): + return FunctionPtrType(self.args, self.result, self.ellipsis, self.abi) + + +class FunctionPtrType(BaseFunctionType): + _base_pattern = '(*&)(%s)' + + def build_backend_type(self, ffi, finishlist): + result = self.result.get_cached_btype(ffi, finishlist) + args = [] + for tp in self.args: + args.append(tp.get_cached_btype(ffi, finishlist)) + abi_args = () + if self.abi == "__stdcall": + if not self.ellipsis: # __stdcall ignored for variadic funcs + try: + abi_args = (ffi._backend.FFI_STDCALL,) + except AttributeError: + pass + return global_cache(self, ffi, 'new_function_type', + tuple(args), result, self.ellipsis, *abi_args) + + def as_raw_function(self): + return RawFunctionType(self.args, self.result, self.ellipsis, self.abi) + + +class PointerType(BaseType): + _attrs_ = ('totype', 'quals') + + def __init__(self, totype, quals=0): + self.totype = totype + self.quals = quals + extra = " *&" + if totype.is_array_type: + extra = "(%s)" % (extra.lstrip(),) + extra = qualify(quals, extra) + self.c_name_with_marker = totype.c_name_with_marker.replace('&', extra) + + def build_backend_type(self, ffi, finishlist): + BItem = self.totype.get_cached_btype(ffi, finishlist, can_delay=True) + return global_cache(self, ffi, 'new_pointer_type', BItem) + +voidp_type = PointerType(void_type) + +def ConstPointerType(totype): + return PointerType(totype, Q_CONST) + +const_voidp_type = ConstPointerType(void_type) + + +class NamedPointerType(PointerType): + _attrs_ = ('totype', 'name') + + def __init__(self, totype, name, quals=0): + PointerType.__init__(self, totype, quals) + self.name = name + self.c_name_with_marker = name + '&' + + +class ArrayType(BaseType): + _attrs_ = ('item', 'length') + is_array_type = True + + def __init__(self, item, length): + self.item = item + self.length = length + # + if length is None: + brackets = '&[]' + elif length == '...': + brackets = '&[/*...*/]' + else: + brackets = '&[%s]' % length + self.c_name_with_marker = ( + self.item.c_name_with_marker.replace('&', brackets)) + + def length_is_unknown(self): + return isinstance(self.length, str) + + def resolve_length(self, newlength): + return ArrayType(self.item, newlength) + + def build_backend_type(self, ffi, finishlist): + if self.length_is_unknown(): + raise CDefError("cannot render the type %r: unknown length" % + (self,)) + self.item.get_cached_btype(ffi, finishlist) # force the item BType + BPtrItem = PointerType(self.item).get_cached_btype(ffi, finishlist) + return global_cache(self, ffi, 'new_array_type', BPtrItem, self.length) + +char_array_type = ArrayType(PrimitiveType('char'), None) + + +class StructOrUnionOrEnum(BaseTypeByIdentity): + _attrs_ = ('name',) + forcename = None + + def build_c_name_with_marker(self): + name = self.forcename or '%s %s' % (self.kind, self.name) + self.c_name_with_marker = name + '&' + + def force_the_name(self, forcename): + self.forcename = forcename + self.build_c_name_with_marker() + + def get_official_name(self): + assert self.c_name_with_marker.endswith('&') + return self.c_name_with_marker[:-1] + + +class StructOrUnion(StructOrUnionOrEnum): + fixedlayout = None + completed = 0 + partial = False + packed = 0 + + def __init__(self, name, fldnames, fldtypes, fldbitsize, fldquals=None): + self.name = name + self.fldnames = fldnames + self.fldtypes = fldtypes + self.fldbitsize = fldbitsize + self.fldquals = fldquals + self.build_c_name_with_marker() + + def anonymous_struct_fields(self): + if self.fldtypes is not None: + for name, type in zip(self.fldnames, self.fldtypes): + if name == '' and isinstance(type, StructOrUnion): + yield type + + def enumfields(self, expand_anonymous_struct_union=True): + fldquals = self.fldquals + if fldquals is None: + fldquals = (0,) * len(self.fldnames) + for name, type, bitsize, quals in zip(self.fldnames, self.fldtypes, + self.fldbitsize, fldquals): + if (name == '' and isinstance(type, StructOrUnion) + and expand_anonymous_struct_union): + # nested anonymous struct/union + for result in type.enumfields(): + yield result + else: + yield (name, type, bitsize, quals) + + def force_flatten(self): + # force the struct or union to have a declaration that lists + # directly all fields returned by enumfields(), flattening + # nested anonymous structs/unions. + names = [] + types = [] + bitsizes = [] + fldquals = [] + for name, type, bitsize, quals in self.enumfields(): + names.append(name) + types.append(type) + bitsizes.append(bitsize) + fldquals.append(quals) + self.fldnames = tuple(names) + self.fldtypes = tuple(types) + self.fldbitsize = tuple(bitsizes) + self.fldquals = tuple(fldquals) + + def get_cached_btype(self, ffi, finishlist, can_delay=False): + BType = StructOrUnionOrEnum.get_cached_btype(self, ffi, finishlist, + can_delay) + if not can_delay: + self.finish_backend_type(ffi, finishlist) + return BType + + def finish_backend_type(self, ffi, finishlist): + if self.completed: + if self.completed != 2: + raise NotImplementedError("recursive structure declaration " + "for '%s'" % (self.name,)) + return + BType = ffi._cached_btypes[self] + # + self.completed = 1 + # + if self.fldtypes is None: + pass # not completing it: it's an opaque struct + # + elif self.fixedlayout is None: + fldtypes = [tp.get_cached_btype(ffi, finishlist) + for tp in self.fldtypes] + lst = list(zip(self.fldnames, fldtypes, self.fldbitsize)) + extra_flags = () + if self.packed: + if self.packed == 1: + extra_flags = (8,) # SF_PACKED + else: + extra_flags = (0, self.packed) + ffi._backend.complete_struct_or_union(BType, lst, self, + -1, -1, *extra_flags) + # + else: + fldtypes = [] + fieldofs, fieldsize, totalsize, totalalignment = self.fixedlayout + for i in range(len(self.fldnames)): + fsize = fieldsize[i] + ftype = self.fldtypes[i] + # + if isinstance(ftype, ArrayType) and ftype.length_is_unknown(): + # fix the length to match the total size + BItemType = ftype.item.get_cached_btype(ffi, finishlist) + nlen, nrest = divmod(fsize, ffi.sizeof(BItemType)) + if nrest != 0: + self._verification_error( + "field '%s.%s' has a bogus size?" % ( + self.name, self.fldnames[i] or '{}')) + ftype = ftype.resolve_length(nlen) + self.fldtypes = (self.fldtypes[:i] + (ftype,) + + self.fldtypes[i+1:]) + # + BFieldType = ftype.get_cached_btype(ffi, finishlist) + if isinstance(ftype, ArrayType) and ftype.length is None: + assert fsize == 0 + else: + bitemsize = ffi.sizeof(BFieldType) + if bitemsize != fsize: + self._verification_error( + "field '%s.%s' is declared as %d bytes, but is " + "really %d bytes" % (self.name, + self.fldnames[i] or '{}', + bitemsize, fsize)) + fldtypes.append(BFieldType) + # + lst = list(zip(self.fldnames, fldtypes, self.fldbitsize, fieldofs)) + ffi._backend.complete_struct_or_union(BType, lst, self, + totalsize, totalalignment) + self.completed = 2 + + def _verification_error(self, msg): + raise VerificationError(msg) + + def check_not_partial(self): + if self.partial and self.fixedlayout is None: + raise VerificationMissing(self._get_c_name()) + + def build_backend_type(self, ffi, finishlist): + self.check_not_partial() + finishlist.append(self) + # + return global_cache(self, ffi, 'new_%s_type' % self.kind, + self.get_official_name(), key=self) + + +class StructType(StructOrUnion): + kind = 'struct' + + +class UnionType(StructOrUnion): + kind = 'union' + + +class EnumType(StructOrUnionOrEnum): + kind = 'enum' + partial = False + partial_resolved = False + + def __init__(self, name, enumerators, enumvalues, baseinttype=None): + self.name = name + self.enumerators = enumerators + self.enumvalues = enumvalues + self.baseinttype = baseinttype + self.build_c_name_with_marker() + + def force_the_name(self, forcename): + StructOrUnionOrEnum.force_the_name(self, forcename) + if self.forcename is None: + name = self.get_official_name() + self.forcename = '$' + name.replace(' ', '_') + + def check_not_partial(self): + if self.partial and not self.partial_resolved: + raise VerificationMissing(self._get_c_name()) + + def build_backend_type(self, ffi, finishlist): + self.check_not_partial() + base_btype = self.build_baseinttype(ffi, finishlist) + return global_cache(self, ffi, 'new_enum_type', + self.get_official_name(), + self.enumerators, self.enumvalues, + base_btype, key=self) + + def build_baseinttype(self, ffi, finishlist): + if self.baseinttype is not None: + return self.baseinttype.get_cached_btype(ffi, finishlist) + # + if self.enumvalues: + smallest_value = min(self.enumvalues) + largest_value = max(self.enumvalues) + else: + import warnings + try: + # XXX! The goal is to ensure that the warnings.warn() + # will not suppress the warning. We want to get it + # several times if we reach this point several times. + __warningregistry__.clear() + except NameError: + pass + warnings.warn("%r has no values explicitly defined; " + "guessing that it is equivalent to 'unsigned int'" + % self._get_c_name()) + smallest_value = largest_value = 0 + if smallest_value < 0: # needs a signed type + sign = 1 + candidate1 = PrimitiveType("int") + candidate2 = PrimitiveType("long") + else: + sign = 0 + candidate1 = PrimitiveType("unsigned int") + candidate2 = PrimitiveType("unsigned long") + btype1 = candidate1.get_cached_btype(ffi, finishlist) + btype2 = candidate2.get_cached_btype(ffi, finishlist) + size1 = ffi.sizeof(btype1) + size2 = ffi.sizeof(btype2) + if (smallest_value >= ((-1) << (8*size1-1)) and + largest_value < (1 << (8*size1-sign))): + return btype1 + if (smallest_value >= ((-1) << (8*size2-1)) and + largest_value < (1 << (8*size2-sign))): + return btype2 + raise CDefError("%s values don't all fit into either 'long' " + "or 'unsigned long'" % self._get_c_name()) + +def unknown_type(name, structname=None): + if structname is None: + structname = '$%s' % name + tp = StructType(structname, None, None, None) + tp.force_the_name(name) + tp.origin = "unknown_type" + return tp + +def unknown_ptr_type(name, structname=None): + if structname is None: + structname = '$$%s' % name + tp = StructType(structname, None, None, None) + return NamedPointerType(tp, name) + + +global_lock = allocate_lock() +_typecache_cffi_backend = weakref.WeakValueDictionary() + +def get_typecache(backend): + # returns _typecache_cffi_backend if backend is the _cffi_backend + # module, or type(backend).__typecache if backend is an instance of + # CTypesBackend (or some FakeBackend class during tests) + if isinstance(backend, types.ModuleType): + return _typecache_cffi_backend + with global_lock: + if not hasattr(type(backend), '__typecache'): + type(backend).__typecache = weakref.WeakValueDictionary() + return type(backend).__typecache + +def global_cache(srctype, ffi, funcname, *args, **kwds): + key = kwds.pop('key', (funcname, args)) + assert not kwds + try: + return ffi._typecache[key] + except KeyError: + pass + try: + res = getattr(ffi._backend, funcname)(*args) + except NotImplementedError as e: + raise NotImplementedError("%s: %r: %s" % (funcname, srctype, e)) + # note that setdefault() on WeakValueDictionary is not atomic + # and contains a rare bug (http://bugs.python.org/issue19542); + # we have to use a lock and do it ourselves + cache = ffi._typecache + with global_lock: + res1 = cache.get(key) + if res1 is None: + cache[key] = res + return res + else: + return res1 + +def pointer_cache(ffi, BType): + return global_cache('?', ffi, 'new_pointer_type', BType) + +def attach_exception_info(e, name): + if e.args and type(e.args[0]) is str: + e.args = ('%s: %s' % (name, e.args[0]),) + e.args[1:] diff --git a/venv/lib/python3.12/site-packages/cffi/parse_c_type.h b/venv/lib/python3.12/site-packages/cffi/parse_c_type.h new file mode 100644 index 00000000..84e4ef85 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi/parse_c_type.h @@ -0,0 +1,181 @@ + +/* This part is from file 'cffi/parse_c_type.h'. It is copied at the + beginning of C sources generated by CFFI's ffi.set_source(). */ + +typedef void *_cffi_opcode_t; + +#define _CFFI_OP(opcode, arg) (_cffi_opcode_t)(opcode | (((uintptr_t)(arg)) << 8)) +#define _CFFI_GETOP(cffi_opcode) ((unsigned char)(uintptr_t)cffi_opcode) +#define _CFFI_GETARG(cffi_opcode) (((intptr_t)cffi_opcode) >> 8) + +#define _CFFI_OP_PRIMITIVE 1 +#define _CFFI_OP_POINTER 3 +#define _CFFI_OP_ARRAY 5 +#define _CFFI_OP_OPEN_ARRAY 7 +#define _CFFI_OP_STRUCT_UNION 9 +#define _CFFI_OP_ENUM 11 +#define _CFFI_OP_FUNCTION 13 +#define _CFFI_OP_FUNCTION_END 15 +#define _CFFI_OP_NOOP 17 +#define _CFFI_OP_BITFIELD 19 +#define _CFFI_OP_TYPENAME 21 +#define _CFFI_OP_CPYTHON_BLTN_V 23 // varargs +#define _CFFI_OP_CPYTHON_BLTN_N 25 // noargs +#define _CFFI_OP_CPYTHON_BLTN_O 27 // O (i.e. a single arg) +#define _CFFI_OP_CONSTANT 29 +#define _CFFI_OP_CONSTANT_INT 31 +#define _CFFI_OP_GLOBAL_VAR 33 +#define _CFFI_OP_DLOPEN_FUNC 35 +#define _CFFI_OP_DLOPEN_CONST 37 +#define _CFFI_OP_GLOBAL_VAR_F 39 +#define _CFFI_OP_EXTERN_PYTHON 41 + +#define _CFFI_PRIM_VOID 0 +#define _CFFI_PRIM_BOOL 1 +#define _CFFI_PRIM_CHAR 2 +#define _CFFI_PRIM_SCHAR 3 +#define _CFFI_PRIM_UCHAR 4 +#define _CFFI_PRIM_SHORT 5 +#define _CFFI_PRIM_USHORT 6 +#define _CFFI_PRIM_INT 7 +#define _CFFI_PRIM_UINT 8 +#define _CFFI_PRIM_LONG 9 +#define _CFFI_PRIM_ULONG 10 +#define _CFFI_PRIM_LONGLONG 11 +#define _CFFI_PRIM_ULONGLONG 12 +#define _CFFI_PRIM_FLOAT 13 +#define _CFFI_PRIM_DOUBLE 14 +#define _CFFI_PRIM_LONGDOUBLE 15 + +#define _CFFI_PRIM_WCHAR 16 +#define _CFFI_PRIM_INT8 17 +#define _CFFI_PRIM_UINT8 18 +#define _CFFI_PRIM_INT16 19 +#define _CFFI_PRIM_UINT16 20 +#define _CFFI_PRIM_INT32 21 +#define _CFFI_PRIM_UINT32 22 +#define _CFFI_PRIM_INT64 23 +#define _CFFI_PRIM_UINT64 24 +#define _CFFI_PRIM_INTPTR 25 +#define _CFFI_PRIM_UINTPTR 26 +#define _CFFI_PRIM_PTRDIFF 27 +#define _CFFI_PRIM_SIZE 28 +#define _CFFI_PRIM_SSIZE 29 +#define _CFFI_PRIM_INT_LEAST8 30 +#define _CFFI_PRIM_UINT_LEAST8 31 +#define _CFFI_PRIM_INT_LEAST16 32 +#define _CFFI_PRIM_UINT_LEAST16 33 +#define _CFFI_PRIM_INT_LEAST32 34 +#define _CFFI_PRIM_UINT_LEAST32 35 +#define _CFFI_PRIM_INT_LEAST64 36 +#define _CFFI_PRIM_UINT_LEAST64 37 +#define _CFFI_PRIM_INT_FAST8 38 +#define _CFFI_PRIM_UINT_FAST8 39 +#define _CFFI_PRIM_INT_FAST16 40 +#define _CFFI_PRIM_UINT_FAST16 41 +#define _CFFI_PRIM_INT_FAST32 42 +#define _CFFI_PRIM_UINT_FAST32 43 +#define _CFFI_PRIM_INT_FAST64 44 +#define _CFFI_PRIM_UINT_FAST64 45 +#define _CFFI_PRIM_INTMAX 46 +#define _CFFI_PRIM_UINTMAX 47 +#define _CFFI_PRIM_FLOATCOMPLEX 48 +#define _CFFI_PRIM_DOUBLECOMPLEX 49 +#define _CFFI_PRIM_CHAR16 50 +#define _CFFI_PRIM_CHAR32 51 + +#define _CFFI__NUM_PRIM 52 +#define _CFFI__UNKNOWN_PRIM (-1) +#define _CFFI__UNKNOWN_FLOAT_PRIM (-2) +#define _CFFI__UNKNOWN_LONG_DOUBLE (-3) + +#define _CFFI__IO_FILE_STRUCT (-1) + + +struct _cffi_global_s { + const char *name; + void *address; + _cffi_opcode_t type_op; + void *size_or_direct_fn; // OP_GLOBAL_VAR: size, or 0 if unknown + // OP_CPYTHON_BLTN_*: addr of direct function +}; + +struct _cffi_getconst_s { + unsigned long long value; + const struct _cffi_type_context_s *ctx; + int gindex; +}; + +struct _cffi_struct_union_s { + const char *name; + int type_index; // -> _cffi_types, on a OP_STRUCT_UNION + int flags; // _CFFI_F_* flags below + size_t size; + int alignment; + int first_field_index; // -> _cffi_fields array + int num_fields; +}; +#define _CFFI_F_UNION 0x01 // is a union, not a struct +#define _CFFI_F_CHECK_FIELDS 0x02 // complain if fields are not in the + // "standard layout" or if some are missing +#define _CFFI_F_PACKED 0x04 // for CHECK_FIELDS, assume a packed struct +#define _CFFI_F_EXTERNAL 0x08 // in some other ffi.include() +#define _CFFI_F_OPAQUE 0x10 // opaque + +struct _cffi_field_s { + const char *name; + size_t field_offset; + size_t field_size; + _cffi_opcode_t field_type_op; +}; + +struct _cffi_enum_s { + const char *name; + int type_index; // -> _cffi_types, on a OP_ENUM + int type_prim; // _CFFI_PRIM_xxx + const char *enumerators; // comma-delimited string +}; + +struct _cffi_typename_s { + const char *name; + int type_index; /* if opaque, points to a possibly artificial + OP_STRUCT which is itself opaque */ +}; + +struct _cffi_type_context_s { + _cffi_opcode_t *types; + const struct _cffi_global_s *globals; + const struct _cffi_field_s *fields; + const struct _cffi_struct_union_s *struct_unions; + const struct _cffi_enum_s *enums; + const struct _cffi_typename_s *typenames; + int num_globals; + int num_struct_unions; + int num_enums; + int num_typenames; + const char *const *includes; + int num_types; + int flags; /* future extension */ +}; + +struct _cffi_parse_info_s { + const struct _cffi_type_context_s *ctx; + _cffi_opcode_t *output; + unsigned int output_size; + size_t error_location; + const char *error_message; +}; + +struct _cffi_externpy_s { + const char *name; + size_t size_of_result; + void *reserved1, *reserved2; +}; + +#ifdef _CFFI_INTERNAL +static int parse_c_type(struct _cffi_parse_info_s *info, const char *input); +static int search_in_globals(const struct _cffi_type_context_s *ctx, + const char *search, size_t search_len); +static int search_in_struct_unions(const struct _cffi_type_context_s *ctx, + const char *search, size_t search_len); +#endif diff --git a/venv/lib/python3.12/site-packages/cffi/pkgconfig.py b/venv/lib/python3.12/site-packages/cffi/pkgconfig.py new file mode 100644 index 00000000..5c93f15a --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi/pkgconfig.py @@ -0,0 +1,121 @@ +# pkg-config, https://www.freedesktop.org/wiki/Software/pkg-config/ integration for cffi +import sys, os, subprocess + +from .error import PkgConfigError + + +def merge_flags(cfg1, cfg2): + """Merge values from cffi config flags cfg2 to cf1 + + Example: + merge_flags({"libraries": ["one"]}, {"libraries": ["two"]}) + {"libraries": ["one", "two"]} + """ + for key, value in cfg2.items(): + if key not in cfg1: + cfg1[key] = value + else: + if not isinstance(cfg1[key], list): + raise TypeError("cfg1[%r] should be a list of strings" % (key,)) + if not isinstance(value, list): + raise TypeError("cfg2[%r] should be a list of strings" % (key,)) + cfg1[key].extend(value) + return cfg1 + + +def call(libname, flag, encoding=sys.getfilesystemencoding()): + """Calls pkg-config and returns the output if found + """ + a = ["pkg-config", "--print-errors"] + a.append(flag) + a.append(libname) + try: + pc = subprocess.Popen(a, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + except EnvironmentError as e: + raise PkgConfigError("cannot run pkg-config: %s" % (str(e).strip(),)) + + bout, berr = pc.communicate() + if pc.returncode != 0: + try: + berr = berr.decode(encoding) + except Exception: + pass + raise PkgConfigError(berr.strip()) + + if sys.version_info >= (3,) and not isinstance(bout, str): # Python 3.x + try: + bout = bout.decode(encoding) + except UnicodeDecodeError: + raise PkgConfigError("pkg-config %s %s returned bytes that cannot " + "be decoded with encoding %r:\n%r" % + (flag, libname, encoding, bout)) + + if os.altsep != '\\' and '\\' in bout: + raise PkgConfigError("pkg-config %s %s returned an unsupported " + "backslash-escaped output:\n%r" % + (flag, libname, bout)) + return bout + + +def flags_from_pkgconfig(libs): + r"""Return compiler line flags for FFI.set_source based on pkg-config output + + Usage + ... + ffibuilder.set_source("_foo", pkgconfig = ["libfoo", "libbar >= 1.8.3"]) + + If pkg-config is installed on build machine, then arguments include_dirs, + library_dirs, libraries, define_macros, extra_compile_args and + extra_link_args are extended with an output of pkg-config for libfoo and + libbar. + + Raises PkgConfigError in case the pkg-config call fails. + """ + + def get_include_dirs(string): + return [x[2:] for x in string.split() if x.startswith("-I")] + + def get_library_dirs(string): + return [x[2:] for x in string.split() if x.startswith("-L")] + + def get_libraries(string): + return [x[2:] for x in string.split() if x.startswith("-l")] + + # convert -Dfoo=bar to list of tuples [("foo", "bar")] expected by distutils + def get_macros(string): + def _macro(x): + x = x[2:] # drop "-D" + if '=' in x: + return tuple(x.split("=", 1)) # "-Dfoo=bar" => ("foo", "bar") + else: + return (x, None) # "-Dfoo" => ("foo", None) + return [_macro(x) for x in string.split() if x.startswith("-D")] + + def get_other_cflags(string): + return [x for x in string.split() if not x.startswith("-I") and + not x.startswith("-D")] + + def get_other_libs(string): + return [x for x in string.split() if not x.startswith("-L") and + not x.startswith("-l")] + + # return kwargs for given libname + def kwargs(libname): + fse = sys.getfilesystemencoding() + all_cflags = call(libname, "--cflags") + all_libs = call(libname, "--libs") + return { + "include_dirs": get_include_dirs(all_cflags), + "library_dirs": get_library_dirs(all_libs), + "libraries": get_libraries(all_libs), + "define_macros": get_macros(all_cflags), + "extra_compile_args": get_other_cflags(all_cflags), + "extra_link_args": get_other_libs(all_libs), + } + + # merge all arguments together + ret = {} + for libname in libs: + lib_flags = kwargs(libname) + merge_flags(ret, lib_flags) + return ret diff --git a/venv/lib/python3.12/site-packages/cffi/recompiler.py b/venv/lib/python3.12/site-packages/cffi/recompiler.py new file mode 100644 index 00000000..7734a348 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi/recompiler.py @@ -0,0 +1,1598 @@ +import io, os, sys, sysconfig +from . import ffiplatform, model +from .error import VerificationError +from .cffi_opcode import * + +VERSION_BASE = 0x2601 +VERSION_EMBEDDED = 0x2701 +VERSION_CHAR16CHAR32 = 0x2801 + +USE_LIMITED_API = ((sys.platform != 'win32' or sys.version_info < (3, 0) or + sys.version_info >= (3, 5)) and + not sysconfig.get_config_var("Py_GIL_DISABLED")) # free-threaded doesn't yet support limited API + +class GlobalExpr: + def __init__(self, name, address, type_op, size=0, check_value=0): + self.name = name + self.address = address + self.type_op = type_op + self.size = size + self.check_value = check_value + + def as_c_expr(self): + return ' { "%s", (void *)%s, %s, (void *)%s },' % ( + self.name, self.address, self.type_op.as_c_expr(), self.size) + + def as_python_expr(self): + return "b'%s%s',%d" % (self.type_op.as_python_bytes(), self.name, + self.check_value) + +class FieldExpr: + def __init__(self, name, field_offset, field_size, fbitsize, field_type_op): + self.name = name + self.field_offset = field_offset + self.field_size = field_size + self.fbitsize = fbitsize + self.field_type_op = field_type_op + + def as_c_expr(self): + spaces = " " * len(self.name) + return (' { "%s", %s,\n' % (self.name, self.field_offset) + + ' %s %s,\n' % (spaces, self.field_size) + + ' %s %s },' % (spaces, self.field_type_op.as_c_expr())) + + def as_python_expr(self): + raise NotImplementedError + + def as_field_python_expr(self): + if self.field_type_op.op == OP_NOOP: + size_expr = '' + elif self.field_type_op.op == OP_BITFIELD: + size_expr = format_four_bytes(self.fbitsize) + else: + raise NotImplementedError + return "b'%s%s%s'" % (self.field_type_op.as_python_bytes(), + size_expr, + self.name) + +class StructUnionExpr: + def __init__(self, name, type_index, flags, size, alignment, comment, + first_field_index, c_fields): + self.name = name + self.type_index = type_index + self.flags = flags + self.size = size + self.alignment = alignment + self.comment = comment + self.first_field_index = first_field_index + self.c_fields = c_fields + + def as_c_expr(self): + return (' { "%s", %d, %s,' % (self.name, self.type_index, self.flags) + + '\n %s, %s, ' % (self.size, self.alignment) + + '%d, %d ' % (self.first_field_index, len(self.c_fields)) + + ('/* %s */ ' % self.comment if self.comment else '') + + '},') + + def as_python_expr(self): + flags = eval(self.flags, G_FLAGS) + fields_expr = [c_field.as_field_python_expr() + for c_field in self.c_fields] + return "(b'%s%s%s',%s)" % ( + format_four_bytes(self.type_index), + format_four_bytes(flags), + self.name, + ','.join(fields_expr)) + +class EnumExpr: + def __init__(self, name, type_index, size, signed, allenums): + self.name = name + self.type_index = type_index + self.size = size + self.signed = signed + self.allenums = allenums + + def as_c_expr(self): + return (' { "%s", %d, _cffi_prim_int(%s, %s),\n' + ' "%s" },' % (self.name, self.type_index, + self.size, self.signed, self.allenums)) + + def as_python_expr(self): + prim_index = { + (1, 0): PRIM_UINT8, (1, 1): PRIM_INT8, + (2, 0): PRIM_UINT16, (2, 1): PRIM_INT16, + (4, 0): PRIM_UINT32, (4, 1): PRIM_INT32, + (8, 0): PRIM_UINT64, (8, 1): PRIM_INT64, + }[self.size, self.signed] + return "b'%s%s%s\\x00%s'" % (format_four_bytes(self.type_index), + format_four_bytes(prim_index), + self.name, self.allenums) + +class TypenameExpr: + def __init__(self, name, type_index): + self.name = name + self.type_index = type_index + + def as_c_expr(self): + return ' { "%s", %d },' % (self.name, self.type_index) + + def as_python_expr(self): + return "b'%s%s'" % (format_four_bytes(self.type_index), self.name) + + +# ____________________________________________________________ + + +class Recompiler: + _num_externpy = 0 + + def __init__(self, ffi, module_name, target_is_python=False): + self.ffi = ffi + self.module_name = module_name + self.target_is_python = target_is_python + self._version = VERSION_BASE + + def needs_version(self, ver): + self._version = max(self._version, ver) + + def collect_type_table(self): + self._typesdict = {} + self._generate("collecttype") + # + all_decls = sorted(self._typesdict, key=str) + # + # prepare all FUNCTION bytecode sequences first + self.cffi_types = [] + for tp in all_decls: + if tp.is_raw_function: + assert self._typesdict[tp] is None + self._typesdict[tp] = len(self.cffi_types) + self.cffi_types.append(tp) # placeholder + for tp1 in tp.args: + assert isinstance(tp1, (model.VoidType, + model.BasePrimitiveType, + model.PointerType, + model.StructOrUnionOrEnum, + model.FunctionPtrType)) + if self._typesdict[tp1] is None: + self._typesdict[tp1] = len(self.cffi_types) + self.cffi_types.append(tp1) # placeholder + self.cffi_types.append('END') # placeholder + # + # prepare all OTHER bytecode sequences + for tp in all_decls: + if not tp.is_raw_function and self._typesdict[tp] is None: + self._typesdict[tp] = len(self.cffi_types) + self.cffi_types.append(tp) # placeholder + if tp.is_array_type and tp.length is not None: + self.cffi_types.append('LEN') # placeholder + assert None not in self._typesdict.values() + # + # collect all structs and unions and enums + self._struct_unions = {} + self._enums = {} + for tp in all_decls: + if isinstance(tp, model.StructOrUnion): + self._struct_unions[tp] = None + elif isinstance(tp, model.EnumType): + self._enums[tp] = None + for i, tp in enumerate(sorted(self._struct_unions, + key=lambda tp: tp.name)): + self._struct_unions[tp] = i + for i, tp in enumerate(sorted(self._enums, + key=lambda tp: tp.name)): + self._enums[tp] = i + # + # emit all bytecode sequences now + for tp in all_decls: + method = getattr(self, '_emit_bytecode_' + tp.__class__.__name__) + method(tp, self._typesdict[tp]) + # + # consistency check + for op in self.cffi_types: + assert isinstance(op, CffiOp) + self.cffi_types = tuple(self.cffi_types) # don't change any more + + def _enum_fields(self, tp): + # When producing C, expand all anonymous struct/union fields. + # That's necessary to have C code checking the offsets of the + # individual fields contained in them. When producing Python, + # don't do it and instead write it like it is, with the + # corresponding fields having an empty name. Empty names are + # recognized at runtime when we import the generated Python + # file. + expand_anonymous_struct_union = not self.target_is_python + return tp.enumfields(expand_anonymous_struct_union) + + def _do_collect_type(self, tp): + if not isinstance(tp, model.BaseTypeByIdentity): + if isinstance(tp, tuple): + for x in tp: + self._do_collect_type(x) + return + if tp not in self._typesdict: + self._typesdict[tp] = None + if isinstance(tp, model.FunctionPtrType): + self._do_collect_type(tp.as_raw_function()) + elif isinstance(tp, model.StructOrUnion): + if tp.fldtypes is not None and ( + tp not in self.ffi._parser._included_declarations): + for name1, tp1, _, _ in self._enum_fields(tp): + self._do_collect_type(self._field_type(tp, name1, tp1)) + else: + for _, x in tp._get_items(): + self._do_collect_type(x) + + def _generate(self, step_name): + lst = self.ffi._parser._declarations.items() + for name, (tp, quals) in sorted(lst): + kind, realname = name.split(' ', 1) + try: + method = getattr(self, '_generate_cpy_%s_%s' % (kind, + step_name)) + except AttributeError: + raise VerificationError( + "not implemented in recompile(): %r" % name) + try: + self._current_quals = quals + method(tp, realname) + except Exception as e: + model.attach_exception_info(e, name) + raise + + # ---------- + + ALL_STEPS = ["global", "field", "struct_union", "enum", "typename"] + + def collect_step_tables(self): + # collect the declarations for '_cffi_globals', '_cffi_typenames', etc. + self._lsts = {} + for step_name in self.ALL_STEPS: + self._lsts[step_name] = [] + self._seen_struct_unions = set() + self._generate("ctx") + self._add_missing_struct_unions() + # + for step_name in self.ALL_STEPS: + lst = self._lsts[step_name] + if step_name != "field": + lst.sort(key=lambda entry: entry.name) + self._lsts[step_name] = tuple(lst) # don't change any more + # + # check for a possible internal inconsistency: _cffi_struct_unions + # should have been generated with exactly self._struct_unions + lst = self._lsts["struct_union"] + for tp, i in self._struct_unions.items(): + assert i < len(lst) + assert lst[i].name == tp.name + assert len(lst) == len(self._struct_unions) + # same with enums + lst = self._lsts["enum"] + for tp, i in self._enums.items(): + assert i < len(lst) + assert lst[i].name == tp.name + assert len(lst) == len(self._enums) + + # ---------- + + def _prnt(self, what=''): + self._f.write(what + '\n') + + def write_source_to_f(self, f, preamble): + if self.target_is_python: + assert preamble is None + self.write_py_source_to_f(f) + else: + assert preamble is not None + self.write_c_source_to_f(f, preamble) + + def _rel_readlines(self, filename): + g = open(os.path.join(os.path.dirname(__file__), filename), 'r') + lines = g.readlines() + g.close() + return lines + + def write_c_source_to_f(self, f, preamble): + self._f = f + prnt = self._prnt + if self.ffi._embedding is not None: + prnt('#define _CFFI_USE_EMBEDDING') + if not USE_LIMITED_API: + prnt('#define _CFFI_NO_LIMITED_API') + # + # first the '#include' (actually done by inlining the file's content) + lines = self._rel_readlines('_cffi_include.h') + i = lines.index('#include "parse_c_type.h"\n') + lines[i:i+1] = self._rel_readlines('parse_c_type.h') + prnt(''.join(lines)) + # + # if we have ffi._embedding != None, we give it here as a macro + # and include an extra file + base_module_name = self.module_name.split('.')[-1] + if self.ffi._embedding is not None: + prnt('#define _CFFI_MODULE_NAME "%s"' % (self.module_name,)) + prnt('static const char _CFFI_PYTHON_STARTUP_CODE[] = {') + self._print_string_literal_in_array(self.ffi._embedding) + prnt('0 };') + prnt('#ifdef PYPY_VERSION') + prnt('# define _CFFI_PYTHON_STARTUP_FUNC _cffi_pypyinit_%s' % ( + base_module_name,)) + prnt('#elif PY_MAJOR_VERSION >= 3') + prnt('# define _CFFI_PYTHON_STARTUP_FUNC PyInit_%s' % ( + base_module_name,)) + prnt('#else') + prnt('# define _CFFI_PYTHON_STARTUP_FUNC init%s' % ( + base_module_name,)) + prnt('#endif') + lines = self._rel_readlines('_embedding.h') + i = lines.index('#include "_cffi_errors.h"\n') + lines[i:i+1] = self._rel_readlines('_cffi_errors.h') + prnt(''.join(lines)) + self.needs_version(VERSION_EMBEDDED) + # + # then paste the C source given by the user, verbatim. + prnt('/************************************************************/') + prnt() + prnt(preamble) + prnt() + prnt('/************************************************************/') + prnt() + # + # the declaration of '_cffi_types' + prnt('static void *_cffi_types[] = {') + typeindex2type = dict([(i, tp) for (tp, i) in self._typesdict.items()]) + for i, op in enumerate(self.cffi_types): + comment = '' + if i in typeindex2type: + comment = ' // ' + typeindex2type[i]._get_c_name() + prnt('/* %2d */ %s,%s' % (i, op.as_c_expr(), comment)) + if not self.cffi_types: + prnt(' 0') + prnt('};') + prnt() + # + # call generate_cpy_xxx_decl(), for every xxx found from + # ffi._parser._declarations. This generates all the functions. + self._seen_constants = set() + self._generate("decl") + # + # the declaration of '_cffi_globals' and '_cffi_typenames' + nums = {} + for step_name in self.ALL_STEPS: + lst = self._lsts[step_name] + nums[step_name] = len(lst) + if nums[step_name] > 0: + prnt('static const struct _cffi_%s_s _cffi_%ss[] = {' % ( + step_name, step_name)) + for entry in lst: + prnt(entry.as_c_expr()) + prnt('};') + prnt() + # + # the declaration of '_cffi_includes' + if self.ffi._included_ffis: + prnt('static const char * const _cffi_includes[] = {') + for ffi_to_include in self.ffi._included_ffis: + try: + included_module_name, included_source = ( + ffi_to_include._assigned_source[:2]) + except AttributeError: + raise VerificationError( + "ffi object %r includes %r, but the latter has not " + "been prepared with set_source()" % ( + self.ffi, ffi_to_include,)) + if included_source is None: + raise VerificationError( + "not implemented yet: ffi.include() of a Python-based " + "ffi inside a C-based ffi") + prnt(' "%s",' % (included_module_name,)) + prnt(' NULL') + prnt('};') + prnt() + # + # the declaration of '_cffi_type_context' + prnt('static const struct _cffi_type_context_s _cffi_type_context = {') + prnt(' _cffi_types,') + for step_name in self.ALL_STEPS: + if nums[step_name] > 0: + prnt(' _cffi_%ss,' % step_name) + else: + prnt(' NULL, /* no %ss */' % step_name) + for step_name in self.ALL_STEPS: + if step_name != "field": + prnt(' %d, /* num_%ss */' % (nums[step_name], step_name)) + if self.ffi._included_ffis: + prnt(' _cffi_includes,') + else: + prnt(' NULL, /* no includes */') + prnt(' %d, /* num_types */' % (len(self.cffi_types),)) + flags = 0 + if self._num_externpy > 0 or self.ffi._embedding is not None: + flags |= 1 # set to mean that we use extern "Python" + prnt(' %d, /* flags */' % flags) + prnt('};') + prnt() + # + # the init function + prnt('#ifdef __GNUC__') + prnt('# pragma GCC visibility push(default) /* for -fvisibility= */') + prnt('#endif') + prnt() + prnt('#ifdef PYPY_VERSION') + prnt('PyMODINIT_FUNC') + prnt('_cffi_pypyinit_%s(const void *p[])' % (base_module_name,)) + prnt('{') + if flags & 1: + prnt(' if (((intptr_t)p[0]) >= 0x0A03) {') + prnt(' _cffi_call_python_org = ' + '(void(*)(struct _cffi_externpy_s *, char *))p[1];') + prnt(' }') + prnt(' p[0] = (const void *)0x%x;' % self._version) + prnt(' p[1] = &_cffi_type_context;') + prnt('#if PY_MAJOR_VERSION >= 3') + prnt(' return NULL;') + prnt('#endif') + prnt('}') + # on Windows, distutils insists on putting init_cffi_xyz in + # 'export_symbols', so instead of fighting it, just give up and + # give it one + prnt('# ifdef _MSC_VER') + prnt(' PyMODINIT_FUNC') + prnt('# if PY_MAJOR_VERSION >= 3') + prnt(' PyInit_%s(void) { return NULL; }' % (base_module_name,)) + prnt('# else') + prnt(' init%s(void) { }' % (base_module_name,)) + prnt('# endif') + prnt('# endif') + prnt('#elif PY_MAJOR_VERSION >= 3') + prnt('PyMODINIT_FUNC') + prnt('PyInit_%s(void)' % (base_module_name,)) + prnt('{') + prnt(' return _cffi_init("%s", 0x%x, &_cffi_type_context);' % ( + self.module_name, self._version)) + prnt('}') + prnt('#else') + prnt('PyMODINIT_FUNC') + prnt('init%s(void)' % (base_module_name,)) + prnt('{') + prnt(' _cffi_init("%s", 0x%x, &_cffi_type_context);' % ( + self.module_name, self._version)) + prnt('}') + prnt('#endif') + prnt() + prnt('#ifdef __GNUC__') + prnt('# pragma GCC visibility pop') + prnt('#endif') + self._version = None + + def _to_py(self, x): + if isinstance(x, str): + return "b'%s'" % (x,) + if isinstance(x, (list, tuple)): + rep = [self._to_py(item) for item in x] + if len(rep) == 1: + rep.append('') + return "(%s)" % (','.join(rep),) + return x.as_python_expr() # Py2: unicode unexpected; Py3: bytes unexp. + + def write_py_source_to_f(self, f): + self._f = f + prnt = self._prnt + # + # header + prnt("# auto-generated file") + prnt("import _cffi_backend") + # + # the 'import' of the included ffis + num_includes = len(self.ffi._included_ffis or ()) + for i in range(num_includes): + ffi_to_include = self.ffi._included_ffis[i] + try: + included_module_name, included_source = ( + ffi_to_include._assigned_source[:2]) + except AttributeError: + raise VerificationError( + "ffi object %r includes %r, but the latter has not " + "been prepared with set_source()" % ( + self.ffi, ffi_to_include,)) + if included_source is not None: + raise VerificationError( + "not implemented yet: ffi.include() of a C-based " + "ffi inside a Python-based ffi") + prnt('from %s import ffi as _ffi%d' % (included_module_name, i)) + prnt() + prnt("ffi = _cffi_backend.FFI('%s'," % (self.module_name,)) + prnt(" _version = 0x%x," % (self._version,)) + self._version = None + # + # the '_types' keyword argument + self.cffi_types = tuple(self.cffi_types) # don't change any more + types_lst = [op.as_python_bytes() for op in self.cffi_types] + prnt(' _types = %s,' % (self._to_py(''.join(types_lst)),)) + typeindex2type = dict([(i, tp) for (tp, i) in self._typesdict.items()]) + # + # the keyword arguments from ALL_STEPS + for step_name in self.ALL_STEPS: + lst = self._lsts[step_name] + if len(lst) > 0 and step_name != "field": + prnt(' _%ss = %s,' % (step_name, self._to_py(lst))) + # + # the '_includes' keyword argument + if num_includes > 0: + prnt(' _includes = (%s,),' % ( + ', '.join(['_ffi%d' % i for i in range(num_includes)]),)) + # + # the footer + prnt(')') + + # ---------- + + def _gettypenum(self, type): + # a KeyError here is a bug. please report it! :-) + return self._typesdict[type] + + def _convert_funcarg_to_c(self, tp, fromvar, tovar, errcode): + extraarg = '' + if isinstance(tp, model.BasePrimitiveType) and not tp.is_complex_type(): + if tp.is_integer_type() and tp.name != '_Bool': + converter = '_cffi_to_c_int' + extraarg = ', %s' % tp.name + elif isinstance(tp, model.UnknownFloatType): + # don't check with is_float_type(): it may be a 'long + # double' here, and _cffi_to_c_double would loose precision + converter = '(%s)_cffi_to_c_double' % (tp.get_c_name(''),) + else: + cname = tp.get_c_name('') + converter = '(%s)_cffi_to_c_%s' % (cname, + tp.name.replace(' ', '_')) + if cname in ('char16_t', 'char32_t'): + self.needs_version(VERSION_CHAR16CHAR32) + errvalue = '-1' + # + elif isinstance(tp, model.PointerType): + self._convert_funcarg_to_c_ptr_or_array(tp, fromvar, + tovar, errcode) + return + # + elif (isinstance(tp, model.StructOrUnionOrEnum) or + isinstance(tp, model.BasePrimitiveType)): + # a struct (not a struct pointer) as a function argument; + # or, a complex (the same code works) + self._prnt(' if (_cffi_to_c((char *)&%s, _cffi_type(%d), %s) < 0)' + % (tovar, self._gettypenum(tp), fromvar)) + self._prnt(' %s;' % errcode) + return + # + elif isinstance(tp, model.FunctionPtrType): + converter = '(%s)_cffi_to_c_pointer' % tp.get_c_name('') + extraarg = ', _cffi_type(%d)' % self._gettypenum(tp) + errvalue = 'NULL' + # + else: + raise NotImplementedError(tp) + # + self._prnt(' %s = %s(%s%s);' % (tovar, converter, fromvar, extraarg)) + self._prnt(' if (%s == (%s)%s && PyErr_Occurred())' % ( + tovar, tp.get_c_name(''), errvalue)) + self._prnt(' %s;' % errcode) + + def _extra_local_variables(self, tp, localvars, freelines): + if isinstance(tp, model.PointerType): + localvars.add('Py_ssize_t datasize') + localvars.add('struct _cffi_freeme_s *large_args_free = NULL') + freelines.add('if (large_args_free != NULL)' + ' _cffi_free_array_arguments(large_args_free);') + + def _convert_funcarg_to_c_ptr_or_array(self, tp, fromvar, tovar, errcode): + self._prnt(' datasize = _cffi_prepare_pointer_call_argument(') + self._prnt(' _cffi_type(%d), %s, (char **)&%s);' % ( + self._gettypenum(tp), fromvar, tovar)) + self._prnt(' if (datasize != 0) {') + self._prnt(' %s = ((size_t)datasize) <= 640 ? ' + '(%s)alloca((size_t)datasize) : NULL;' % ( + tovar, tp.get_c_name(''))) + self._prnt(' if (_cffi_convert_array_argument(_cffi_type(%d), %s, ' + '(char **)&%s,' % (self._gettypenum(tp), fromvar, tovar)) + self._prnt(' datasize, &large_args_free) < 0)') + self._prnt(' %s;' % errcode) + self._prnt(' }') + + def _convert_expr_from_c(self, tp, var, context): + if isinstance(tp, model.BasePrimitiveType): + if tp.is_integer_type() and tp.name != '_Bool': + return '_cffi_from_c_int(%s, %s)' % (var, tp.name) + elif isinstance(tp, model.UnknownFloatType): + return '_cffi_from_c_double(%s)' % (var,) + elif tp.name != 'long double' and not tp.is_complex_type(): + cname = tp.name.replace(' ', '_') + if cname in ('char16_t', 'char32_t'): + self.needs_version(VERSION_CHAR16CHAR32) + return '_cffi_from_c_%s(%s)' % (cname, var) + else: + return '_cffi_from_c_deref((char *)&%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + elif isinstance(tp, (model.PointerType, model.FunctionPtrType)): + return '_cffi_from_c_pointer((char *)%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + elif isinstance(tp, model.ArrayType): + return '_cffi_from_c_pointer((char *)%s, _cffi_type(%d))' % ( + var, self._gettypenum(model.PointerType(tp.item))) + elif isinstance(tp, model.StructOrUnion): + if tp.fldnames is None: + raise TypeError("'%s' is used as %s, but is opaque" % ( + tp._get_c_name(), context)) + return '_cffi_from_c_struct((char *)&%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + elif isinstance(tp, model.EnumType): + return '_cffi_from_c_deref((char *)&%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + else: + raise NotImplementedError(tp) + + # ---------- + # typedefs + + def _typedef_type(self, tp, name): + return self._global_type(tp, "(*(%s *)0)" % (name,)) + + def _generate_cpy_typedef_collecttype(self, tp, name): + self._do_collect_type(self._typedef_type(tp, name)) + + def _generate_cpy_typedef_decl(self, tp, name): + pass + + def _typedef_ctx(self, tp, name): + type_index = self._typesdict[tp] + self._lsts["typename"].append(TypenameExpr(name, type_index)) + + def _generate_cpy_typedef_ctx(self, tp, name): + tp = self._typedef_type(tp, name) + self._typedef_ctx(tp, name) + if getattr(tp, "origin", None) == "unknown_type": + self._struct_ctx(tp, tp.name, approxname=None) + elif isinstance(tp, model.NamedPointerType): + self._struct_ctx(tp.totype, tp.totype.name, approxname=tp.name, + named_ptr=tp) + + # ---------- + # function declarations + + def _generate_cpy_function_collecttype(self, tp, name): + self._do_collect_type(tp.as_raw_function()) + if tp.ellipsis and not self.target_is_python: + self._do_collect_type(tp) + + def _generate_cpy_function_decl(self, tp, name): + assert not self.target_is_python + assert isinstance(tp, model.FunctionPtrType) + if tp.ellipsis: + # cannot support vararg functions better than this: check for its + # exact type (including the fixed arguments), and build it as a + # constant function pointer (no CPython wrapper) + self._generate_cpy_constant_decl(tp, name) + return + prnt = self._prnt + numargs = len(tp.args) + if numargs == 0: + argname = 'noarg' + elif numargs == 1: + argname = 'arg0' + else: + argname = 'args' + # + # ------------------------------ + # the 'd' version of the function, only for addressof(lib, 'func') + arguments = [] + call_arguments = [] + context = 'argument of %s' % name + for i, type in enumerate(tp.args): + arguments.append(type.get_c_name(' x%d' % i, context)) + call_arguments.append('x%d' % i) + repr_arguments = ', '.join(arguments) + repr_arguments = repr_arguments or 'void' + if tp.abi: + abi = tp.abi + ' ' + else: + abi = '' + name_and_arguments = '%s_cffi_d_%s(%s)' % (abi, name, repr_arguments) + prnt('static %s' % (tp.result.get_c_name(name_and_arguments),)) + prnt('{') + call_arguments = ', '.join(call_arguments) + result_code = 'return ' + if isinstance(tp.result, model.VoidType): + result_code = '' + prnt(' %s%s(%s);' % (result_code, name, call_arguments)) + prnt('}') + # + prnt('#ifndef PYPY_VERSION') # ------------------------------ + # + prnt('static PyObject *') + prnt('_cffi_f_%s(PyObject *self, PyObject *%s)' % (name, argname)) + prnt('{') + # + context = 'argument of %s' % name + for i, type in enumerate(tp.args): + arg = type.get_c_name(' x%d' % i, context) + prnt(' %s;' % arg) + # + localvars = set() + freelines = set() + for type in tp.args: + self._extra_local_variables(type, localvars, freelines) + for decl in sorted(localvars): + prnt(' %s;' % (decl,)) + # + if not isinstance(tp.result, model.VoidType): + result_code = 'result = ' + context = 'result of %s' % name + result_decl = ' %s;' % tp.result.get_c_name(' result', context) + prnt(result_decl) + prnt(' PyObject *pyresult;') + else: + result_decl = None + result_code = '' + # + if len(tp.args) > 1: + rng = range(len(tp.args)) + for i in rng: + prnt(' PyObject *arg%d;' % i) + prnt() + prnt(' if (!PyArg_UnpackTuple(args, "%s", %d, %d, %s))' % ( + name, len(rng), len(rng), + ', '.join(['&arg%d' % i for i in rng]))) + prnt(' return NULL;') + prnt() + # + for i, type in enumerate(tp.args): + self._convert_funcarg_to_c(type, 'arg%d' % i, 'x%d' % i, + 'return NULL') + prnt() + # + prnt(' Py_BEGIN_ALLOW_THREADS') + prnt(' _cffi_restore_errno();') + call_arguments = ['x%d' % i for i in range(len(tp.args))] + call_arguments = ', '.join(call_arguments) + prnt(' { %s%s(%s); }' % (result_code, name, call_arguments)) + prnt(' _cffi_save_errno();') + prnt(' Py_END_ALLOW_THREADS') + prnt() + # + prnt(' (void)self; /* unused */') + if numargs == 0: + prnt(' (void)noarg; /* unused */') + if result_code: + prnt(' pyresult = %s;' % + self._convert_expr_from_c(tp.result, 'result', 'result type')) + for freeline in freelines: + prnt(' ' + freeline) + prnt(' return pyresult;') + else: + for freeline in freelines: + prnt(' ' + freeline) + prnt(' Py_INCREF(Py_None);') + prnt(' return Py_None;') + prnt('}') + # + prnt('#else') # ------------------------------ + # + # the PyPy version: need to replace struct/union arguments with + # pointers, and if the result is a struct/union, insert a first + # arg that is a pointer to the result. We also do that for + # complex args and return type. + def need_indirection(type): + return (isinstance(type, model.StructOrUnion) or + (isinstance(type, model.PrimitiveType) and + type.is_complex_type())) + difference = False + arguments = [] + call_arguments = [] + context = 'argument of %s' % name + for i, type in enumerate(tp.args): + indirection = '' + if need_indirection(type): + indirection = '*' + difference = True + arg = type.get_c_name(' %sx%d' % (indirection, i), context) + arguments.append(arg) + call_arguments.append('%sx%d' % (indirection, i)) + tp_result = tp.result + if need_indirection(tp_result): + context = 'result of %s' % name + arg = tp_result.get_c_name(' *result', context) + arguments.insert(0, arg) + tp_result = model.void_type + result_decl = None + result_code = '*result = ' + difference = True + if difference: + repr_arguments = ', '.join(arguments) + repr_arguments = repr_arguments or 'void' + name_and_arguments = '%s_cffi_f_%s(%s)' % (abi, name, + repr_arguments) + prnt('static %s' % (tp_result.get_c_name(name_and_arguments),)) + prnt('{') + if result_decl: + prnt(result_decl) + call_arguments = ', '.join(call_arguments) + prnt(' { %s%s(%s); }' % (result_code, name, call_arguments)) + if result_decl: + prnt(' return result;') + prnt('}') + else: + prnt('# define _cffi_f_%s _cffi_d_%s' % (name, name)) + # + prnt('#endif') # ------------------------------ + prnt() + + def _generate_cpy_function_ctx(self, tp, name): + if tp.ellipsis and not self.target_is_python: + self._generate_cpy_constant_ctx(tp, name) + return + type_index = self._typesdict[tp.as_raw_function()] + numargs = len(tp.args) + if self.target_is_python: + meth_kind = OP_DLOPEN_FUNC + elif numargs == 0: + meth_kind = OP_CPYTHON_BLTN_N # 'METH_NOARGS' + elif numargs == 1: + meth_kind = OP_CPYTHON_BLTN_O # 'METH_O' + else: + meth_kind = OP_CPYTHON_BLTN_V # 'METH_VARARGS' + self._lsts["global"].append( + GlobalExpr(name, '_cffi_f_%s' % name, + CffiOp(meth_kind, type_index), + size='_cffi_d_%s' % name)) + + # ---------- + # named structs or unions + + def _field_type(self, tp_struct, field_name, tp_field): + if isinstance(tp_field, model.ArrayType): + actual_length = tp_field.length + if actual_length == '...': + ptr_struct_name = tp_struct.get_c_name('*') + actual_length = '_cffi_array_len(((%s)0)->%s)' % ( + ptr_struct_name, field_name) + tp_item = self._field_type(tp_struct, '%s[0]' % field_name, + tp_field.item) + tp_field = model.ArrayType(tp_item, actual_length) + return tp_field + + def _struct_collecttype(self, tp): + self._do_collect_type(tp) + if self.target_is_python: + # also requires nested anon struct/unions in ABI mode, recursively + for fldtype in tp.anonymous_struct_fields(): + self._struct_collecttype(fldtype) + + def _struct_decl(self, tp, cname, approxname): + if tp.fldtypes is None: + return + prnt = self._prnt + checkfuncname = '_cffi_checkfld_%s' % (approxname,) + prnt('_CFFI_UNUSED_FN') + prnt('static void %s(%s *p)' % (checkfuncname, cname)) + prnt('{') + prnt(' /* only to generate compile-time warnings or errors */') + prnt(' (void)p;') + for fname, ftype, fbitsize, fqual in self._enum_fields(tp): + try: + if ftype.is_integer_type() or fbitsize >= 0: + # accept all integers, but complain on float or double + if fname != '': + prnt(" (void)((p->%s) | 0); /* check that '%s.%s' is " + "an integer */" % (fname, cname, fname)) + continue + # only accept exactly the type declared, except that '[]' + # is interpreted as a '*' and so will match any array length. + # (It would also match '*', but that's harder to detect...) + while (isinstance(ftype, model.ArrayType) + and (ftype.length is None or ftype.length == '...')): + ftype = ftype.item + fname = fname + '[0]' + prnt(' { %s = &p->%s; (void)tmp; }' % ( + ftype.get_c_name('*tmp', 'field %r'%fname, quals=fqual), + fname)) + except VerificationError as e: + prnt(' /* %s */' % str(e)) # cannot verify it, ignore + prnt('}') + prnt('struct _cffi_align_%s { char x; %s y; };' % (approxname, cname)) + prnt() + + def _struct_ctx(self, tp, cname, approxname, named_ptr=None): + type_index = self._typesdict[tp] + reason_for_not_expanding = None + flags = [] + if isinstance(tp, model.UnionType): + flags.append("_CFFI_F_UNION") + if tp.fldtypes is None: + flags.append("_CFFI_F_OPAQUE") + reason_for_not_expanding = "opaque" + if (tp not in self.ffi._parser._included_declarations and + (named_ptr is None or + named_ptr not in self.ffi._parser._included_declarations)): + if tp.fldtypes is None: + pass # opaque + elif tp.partial or any(tp.anonymous_struct_fields()): + pass # field layout obtained silently from the C compiler + else: + flags.append("_CFFI_F_CHECK_FIELDS") + if tp.packed: + if tp.packed > 1: + raise NotImplementedError( + "%r is declared with 'pack=%r'; only 0 or 1 are " + "supported in API mode (try to use \"...;\", which " + "does not require a 'pack' declaration)" % + (tp, tp.packed)) + flags.append("_CFFI_F_PACKED") + else: + flags.append("_CFFI_F_EXTERNAL") + reason_for_not_expanding = "external" + flags = '|'.join(flags) or '0' + c_fields = [] + if reason_for_not_expanding is None: + enumfields = list(self._enum_fields(tp)) + for fldname, fldtype, fbitsize, fqual in enumfields: + fldtype = self._field_type(tp, fldname, fldtype) + self._check_not_opaque(fldtype, + "field '%s.%s'" % (tp.name, fldname)) + # cname is None for _add_missing_struct_unions() only + op = OP_NOOP + if fbitsize >= 0: + op = OP_BITFIELD + size = '%d /* bits */' % fbitsize + elif cname is None or ( + isinstance(fldtype, model.ArrayType) and + fldtype.length is None): + size = '(size_t)-1' + else: + size = 'sizeof(((%s)0)->%s)' % ( + tp.get_c_name('*') if named_ptr is None + else named_ptr.name, + fldname) + if cname is None or fbitsize >= 0: + offset = '(size_t)-1' + elif named_ptr is not None: + offset = '(size_t)(((char *)&((%s)4096)->%s) - (char *)4096)' % ( + named_ptr.name, fldname) + else: + offset = 'offsetof(%s, %s)' % (tp.get_c_name(''), fldname) + c_fields.append( + FieldExpr(fldname, offset, size, fbitsize, + CffiOp(op, self._typesdict[fldtype]))) + first_field_index = len(self._lsts["field"]) + self._lsts["field"].extend(c_fields) + # + if cname is None: # unknown name, for _add_missing_struct_unions + size = '(size_t)-2' + align = -2 + comment = "unnamed" + else: + if named_ptr is not None: + size = 'sizeof(*(%s)0)' % (named_ptr.name,) + align = '-1 /* unknown alignment */' + else: + size = 'sizeof(%s)' % (cname,) + align = 'offsetof(struct _cffi_align_%s, y)' % (approxname,) + comment = None + else: + size = '(size_t)-1' + align = -1 + first_field_index = -1 + comment = reason_for_not_expanding + self._lsts["struct_union"].append( + StructUnionExpr(tp.name, type_index, flags, size, align, comment, + first_field_index, c_fields)) + self._seen_struct_unions.add(tp) + + def _check_not_opaque(self, tp, location): + while isinstance(tp, model.ArrayType): + tp = tp.item + if isinstance(tp, model.StructOrUnion) and tp.fldtypes is None: + raise TypeError( + "%s is of an opaque type (not declared in cdef())" % location) + + def _add_missing_struct_unions(self): + # not very nice, but some struct declarations might be missing + # because they don't have any known C name. Check that they are + # not partial (we can't complete or verify them!) and emit them + # anonymously. + lst = list(self._struct_unions.items()) + lst.sort(key=lambda tp_order: tp_order[1]) + for tp, order in lst: + if tp not in self._seen_struct_unions: + if tp.partial: + raise NotImplementedError("internal inconsistency: %r is " + "partial but was not seen at " + "this point" % (tp,)) + if tp.name.startswith('$') and tp.name[1:].isdigit(): + approxname = tp.name[1:] + elif tp.name == '_IO_FILE' and tp.forcename == 'FILE': + approxname = 'FILE' + self._typedef_ctx(tp, 'FILE') + else: + raise NotImplementedError("internal inconsistency: %r" % + (tp,)) + self._struct_ctx(tp, None, approxname) + + def _generate_cpy_struct_collecttype(self, tp, name): + self._struct_collecttype(tp) + _generate_cpy_union_collecttype = _generate_cpy_struct_collecttype + + def _struct_names(self, tp): + cname = tp.get_c_name('') + if ' ' in cname: + return cname, cname.replace(' ', '_') + else: + return cname, '_' + cname + + def _generate_cpy_struct_decl(self, tp, name): + self._struct_decl(tp, *self._struct_names(tp)) + _generate_cpy_union_decl = _generate_cpy_struct_decl + + def _generate_cpy_struct_ctx(self, tp, name): + self._struct_ctx(tp, *self._struct_names(tp)) + _generate_cpy_union_ctx = _generate_cpy_struct_ctx + + # ---------- + # 'anonymous' declarations. These are produced for anonymous structs + # or unions; the 'name' is obtained by a typedef. + + def _generate_cpy_anonymous_collecttype(self, tp, name): + if isinstance(tp, model.EnumType): + self._generate_cpy_enum_collecttype(tp, name) + else: + self._struct_collecttype(tp) + + def _generate_cpy_anonymous_decl(self, tp, name): + if isinstance(tp, model.EnumType): + self._generate_cpy_enum_decl(tp) + else: + self._struct_decl(tp, name, 'typedef_' + name) + + def _generate_cpy_anonymous_ctx(self, tp, name): + if isinstance(tp, model.EnumType): + self._enum_ctx(tp, name) + else: + self._struct_ctx(tp, name, 'typedef_' + name) + + # ---------- + # constants, declared with "static const ..." + + def _generate_cpy_const(self, is_int, name, tp=None, category='const', + check_value=None): + if (category, name) in self._seen_constants: + raise VerificationError( + "duplicate declaration of %s '%s'" % (category, name)) + self._seen_constants.add((category, name)) + # + prnt = self._prnt + funcname = '_cffi_%s_%s' % (category, name) + if is_int: + prnt('static int %s(unsigned long long *o)' % funcname) + prnt('{') + prnt(' int n = (%s) <= 0;' % (name,)) + prnt(' *o = (unsigned long long)((%s) | 0);' + ' /* check that %s is an integer */' % (name, name)) + if check_value is not None: + if check_value > 0: + check_value = '%dU' % (check_value,) + prnt(' if (!_cffi_check_int(*o, n, %s))' % (check_value,)) + prnt(' n |= 2;') + prnt(' return n;') + prnt('}') + else: + assert check_value is None + prnt('static void %s(char *o)' % funcname) + prnt('{') + prnt(' *(%s)o = %s;' % (tp.get_c_name('*'), name)) + prnt('}') + prnt() + + def _generate_cpy_constant_collecttype(self, tp, name): + is_int = tp.is_integer_type() + if not is_int or self.target_is_python: + self._do_collect_type(tp) + + def _generate_cpy_constant_decl(self, tp, name): + is_int = tp.is_integer_type() + self._generate_cpy_const(is_int, name, tp) + + def _generate_cpy_constant_ctx(self, tp, name): + if not self.target_is_python and tp.is_integer_type(): + type_op = CffiOp(OP_CONSTANT_INT, -1) + else: + if self.target_is_python: + const_kind = OP_DLOPEN_CONST + else: + const_kind = OP_CONSTANT + type_index = self._typesdict[tp] + type_op = CffiOp(const_kind, type_index) + self._lsts["global"].append( + GlobalExpr(name, '_cffi_const_%s' % name, type_op)) + + # ---------- + # enums + + def _generate_cpy_enum_collecttype(self, tp, name): + self._do_collect_type(tp) + + def _generate_cpy_enum_decl(self, tp, name=None): + for enumerator in tp.enumerators: + self._generate_cpy_const(True, enumerator) + + def _enum_ctx(self, tp, cname): + type_index = self._typesdict[tp] + type_op = CffiOp(OP_ENUM, -1) + if self.target_is_python: + tp.check_not_partial() + for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues): + self._lsts["global"].append( + GlobalExpr(enumerator, '_cffi_const_%s' % enumerator, type_op, + check_value=enumvalue)) + # + if cname is not None and '$' not in cname and not self.target_is_python: + size = "sizeof(%s)" % cname + signed = "((%s)-1) <= 0" % cname + else: + basetp = tp.build_baseinttype(self.ffi, []) + size = self.ffi.sizeof(basetp) + signed = int(int(self.ffi.cast(basetp, -1)) < 0) + allenums = ",".join(tp.enumerators) + self._lsts["enum"].append( + EnumExpr(tp.name, type_index, size, signed, allenums)) + + def _generate_cpy_enum_ctx(self, tp, name): + self._enum_ctx(tp, tp._get_c_name()) + + # ---------- + # macros: for now only for integers + + def _generate_cpy_macro_collecttype(self, tp, name): + pass + + def _generate_cpy_macro_decl(self, tp, name): + if tp == '...': + check_value = None + else: + check_value = tp # an integer + self._generate_cpy_const(True, name, check_value=check_value) + + def _generate_cpy_macro_ctx(self, tp, name): + if tp == '...': + if self.target_is_python: + raise VerificationError( + "cannot use the syntax '...' in '#define %s ...' when " + "using the ABI mode" % (name,)) + check_value = None + else: + check_value = tp # an integer + type_op = CffiOp(OP_CONSTANT_INT, -1) + self._lsts["global"].append( + GlobalExpr(name, '_cffi_const_%s' % name, type_op, + check_value=check_value)) + + # ---------- + # global variables + + def _global_type(self, tp, global_name): + if isinstance(tp, model.ArrayType): + actual_length = tp.length + if actual_length == '...': + actual_length = '_cffi_array_len(%s)' % (global_name,) + tp_item = self._global_type(tp.item, '%s[0]' % global_name) + tp = model.ArrayType(tp_item, actual_length) + return tp + + def _generate_cpy_variable_collecttype(self, tp, name): + self._do_collect_type(self._global_type(tp, name)) + + def _generate_cpy_variable_decl(self, tp, name): + prnt = self._prnt + tp = self._global_type(tp, name) + if isinstance(tp, model.ArrayType) and tp.length is None: + tp = tp.item + ampersand = '' + else: + ampersand = '&' + # This code assumes that casts from "tp *" to "void *" is a + # no-op, i.e. a function that returns a "tp *" can be called + # as if it returned a "void *". This should be generally true + # on any modern machine. The only exception to that rule (on + # uncommon architectures, and as far as I can tell) might be + # if 'tp' were a function type, but that is not possible here. + # (If 'tp' is a function _pointer_ type, then casts from "fn_t + # **" to "void *" are again no-ops, as far as I can tell.) + decl = '*_cffi_var_%s(void)' % (name,) + prnt('static ' + tp.get_c_name(decl, quals=self._current_quals)) + prnt('{') + prnt(' return %s(%s);' % (ampersand, name)) + prnt('}') + prnt() + + def _generate_cpy_variable_ctx(self, tp, name): + tp = self._global_type(tp, name) + type_index = self._typesdict[tp] + if self.target_is_python: + op = OP_GLOBAL_VAR + else: + op = OP_GLOBAL_VAR_F + self._lsts["global"].append( + GlobalExpr(name, '_cffi_var_%s' % name, CffiOp(op, type_index))) + + # ---------- + # extern "Python" + + def _generate_cpy_extern_python_collecttype(self, tp, name): + assert isinstance(tp, model.FunctionPtrType) + self._do_collect_type(tp) + _generate_cpy_dllexport_python_collecttype = \ + _generate_cpy_extern_python_plus_c_collecttype = \ + _generate_cpy_extern_python_collecttype + + def _extern_python_decl(self, tp, name, tag_and_space): + prnt = self._prnt + if isinstance(tp.result, model.VoidType): + size_of_result = '0' + else: + context = 'result of %s' % name + size_of_result = '(int)sizeof(%s)' % ( + tp.result.get_c_name('', context),) + prnt('static struct _cffi_externpy_s _cffi_externpy__%s =' % name) + prnt(' { "%s.%s", %s, 0, 0 };' % ( + self.module_name, name, size_of_result)) + prnt() + # + arguments = [] + context = 'argument of %s' % name + for i, type in enumerate(tp.args): + arg = type.get_c_name(' a%d' % i, context) + arguments.append(arg) + # + repr_arguments = ', '.join(arguments) + repr_arguments = repr_arguments or 'void' + name_and_arguments = '%s(%s)' % (name, repr_arguments) + if tp.abi == "__stdcall": + name_and_arguments = '_cffi_stdcall ' + name_and_arguments + # + def may_need_128_bits(tp): + return (isinstance(tp, model.PrimitiveType) and + tp.name == 'long double') + # + size_of_a = max(len(tp.args)*8, 8) + if may_need_128_bits(tp.result): + size_of_a = max(size_of_a, 16) + if isinstance(tp.result, model.StructOrUnion): + size_of_a = 'sizeof(%s) > %d ? sizeof(%s) : %d' % ( + tp.result.get_c_name(''), size_of_a, + tp.result.get_c_name(''), size_of_a) + prnt('%s%s' % (tag_and_space, tp.result.get_c_name(name_and_arguments))) + prnt('{') + prnt(' char a[%s];' % size_of_a) + prnt(' char *p = a;') + for i, type in enumerate(tp.args): + arg = 'a%d' % i + if (isinstance(type, model.StructOrUnion) or + may_need_128_bits(type)): + arg = '&' + arg + type = model.PointerType(type) + prnt(' *(%s)(p + %d) = %s;' % (type.get_c_name('*'), i*8, arg)) + prnt(' _cffi_call_python(&_cffi_externpy__%s, p);' % name) + if not isinstance(tp.result, model.VoidType): + prnt(' return *(%s)p;' % (tp.result.get_c_name('*'),)) + prnt('}') + prnt() + self._num_externpy += 1 + + def _generate_cpy_extern_python_decl(self, tp, name): + self._extern_python_decl(tp, name, 'static ') + + def _generate_cpy_dllexport_python_decl(self, tp, name): + self._extern_python_decl(tp, name, 'CFFI_DLLEXPORT ') + + def _generate_cpy_extern_python_plus_c_decl(self, tp, name): + self._extern_python_decl(tp, name, '') + + def _generate_cpy_extern_python_ctx(self, tp, name): + if self.target_is_python: + raise VerificationError( + "cannot use 'extern \"Python\"' in the ABI mode") + if tp.ellipsis: + raise NotImplementedError("a vararg function is extern \"Python\"") + type_index = self._typesdict[tp] + type_op = CffiOp(OP_EXTERN_PYTHON, type_index) + self._lsts["global"].append( + GlobalExpr(name, '&_cffi_externpy__%s' % name, type_op, name)) + + _generate_cpy_dllexport_python_ctx = \ + _generate_cpy_extern_python_plus_c_ctx = \ + _generate_cpy_extern_python_ctx + + def _print_string_literal_in_array(self, s): + prnt = self._prnt + prnt('// # NB. this is not a string because of a size limit in MSVC') + if not isinstance(s, bytes): # unicode + s = s.encode('utf-8') # -> bytes + else: + s.decode('utf-8') # got bytes, check for valid utf-8 + try: + s.decode('ascii') + except UnicodeDecodeError: + s = b'# -*- encoding: utf8 -*-\n' + s + for line in s.splitlines(True): + comment = line + if type('//') is bytes: # python2 + line = map(ord, line) # make a list of integers + else: # python3 + # type(line) is bytes, which enumerates like a list of integers + comment = ascii(comment)[1:-1] + prnt(('// ' + comment).rstrip()) + printed_line = '' + for c in line: + if len(printed_line) >= 76: + prnt(printed_line) + printed_line = '' + printed_line += '%d,' % (c,) + prnt(printed_line) + + # ---------- + # emitting the opcodes for individual types + + def _emit_bytecode_VoidType(self, tp, index): + self.cffi_types[index] = CffiOp(OP_PRIMITIVE, PRIM_VOID) + + def _emit_bytecode_PrimitiveType(self, tp, index): + prim_index = PRIMITIVE_TO_INDEX[tp.name] + self.cffi_types[index] = CffiOp(OP_PRIMITIVE, prim_index) + + def _emit_bytecode_UnknownIntegerType(self, tp, index): + s = ('_cffi_prim_int(sizeof(%s), (\n' + ' ((%s)-1) | 0 /* check that %s is an integer type */\n' + ' ) <= 0)' % (tp.name, tp.name, tp.name)) + self.cffi_types[index] = CffiOp(OP_PRIMITIVE, s) + + def _emit_bytecode_UnknownFloatType(self, tp, index): + s = ('_cffi_prim_float(sizeof(%s) *\n' + ' (((%s)1) / 2) * 2 /* integer => 0, float => 1 */\n' + ' )' % (tp.name, tp.name)) + self.cffi_types[index] = CffiOp(OP_PRIMITIVE, s) + + def _emit_bytecode_RawFunctionType(self, tp, index): + self.cffi_types[index] = CffiOp(OP_FUNCTION, self._typesdict[tp.result]) + index += 1 + for tp1 in tp.args: + realindex = self._typesdict[tp1] + if index != realindex: + if isinstance(tp1, model.PrimitiveType): + self._emit_bytecode_PrimitiveType(tp1, index) + else: + self.cffi_types[index] = CffiOp(OP_NOOP, realindex) + index += 1 + flags = int(tp.ellipsis) + if tp.abi is not None: + if tp.abi == '__stdcall': + flags |= 2 + else: + raise NotImplementedError("abi=%r" % (tp.abi,)) + self.cffi_types[index] = CffiOp(OP_FUNCTION_END, flags) + + def _emit_bytecode_PointerType(self, tp, index): + self.cffi_types[index] = CffiOp(OP_POINTER, self._typesdict[tp.totype]) + + _emit_bytecode_ConstPointerType = _emit_bytecode_PointerType + _emit_bytecode_NamedPointerType = _emit_bytecode_PointerType + + def _emit_bytecode_FunctionPtrType(self, tp, index): + raw = tp.as_raw_function() + self.cffi_types[index] = CffiOp(OP_POINTER, self._typesdict[raw]) + + def _emit_bytecode_ArrayType(self, tp, index): + item_index = self._typesdict[tp.item] + if tp.length is None: + self.cffi_types[index] = CffiOp(OP_OPEN_ARRAY, item_index) + elif tp.length == '...': + raise VerificationError( + "type %s badly placed: the '...' array length can only be " + "used on global arrays or on fields of structures" % ( + str(tp).replace('/*...*/', '...'),)) + else: + assert self.cffi_types[index + 1] == 'LEN' + self.cffi_types[index] = CffiOp(OP_ARRAY, item_index) + self.cffi_types[index + 1] = CffiOp(None, str(tp.length)) + + def _emit_bytecode_StructType(self, tp, index): + struct_index = self._struct_unions[tp] + self.cffi_types[index] = CffiOp(OP_STRUCT_UNION, struct_index) + _emit_bytecode_UnionType = _emit_bytecode_StructType + + def _emit_bytecode_EnumType(self, tp, index): + enum_index = self._enums[tp] + self.cffi_types[index] = CffiOp(OP_ENUM, enum_index) + + +if sys.version_info >= (3,): + NativeIO = io.StringIO +else: + class NativeIO(io.BytesIO): + def write(self, s): + if isinstance(s, unicode): + s = s.encode('ascii') + super(NativeIO, self).write(s) + +def _is_file_like(maybefile): + # compare to xml.etree.ElementTree._get_writer + return hasattr(maybefile, 'write') + +def _make_c_or_py_source(ffi, module_name, preamble, target_file, verbose): + if verbose: + print("generating %s" % (target_file,)) + recompiler = Recompiler(ffi, module_name, + target_is_python=(preamble is None)) + recompiler.collect_type_table() + recompiler.collect_step_tables() + if _is_file_like(target_file): + recompiler.write_source_to_f(target_file, preamble) + return True + f = NativeIO() + recompiler.write_source_to_f(f, preamble) + output = f.getvalue() + try: + with open(target_file, 'r') as f1: + if f1.read(len(output) + 1) != output: + raise IOError + if verbose: + print("(already up-to-date)") + return False # already up-to-date + except IOError: + tmp_file = '%s.~%d' % (target_file, os.getpid()) + with open(tmp_file, 'w') as f1: + f1.write(output) + try: + os.rename(tmp_file, target_file) + except OSError: + os.unlink(target_file) + os.rename(tmp_file, target_file) + return True + +def make_c_source(ffi, module_name, preamble, target_c_file, verbose=False): + assert preamble is not None + return _make_c_or_py_source(ffi, module_name, preamble, target_c_file, + verbose) + +def make_py_source(ffi, module_name, target_py_file, verbose=False): + return _make_c_or_py_source(ffi, module_name, None, target_py_file, + verbose) + +def _modname_to_file(outputdir, modname, extension): + parts = modname.split('.') + try: + os.makedirs(os.path.join(outputdir, *parts[:-1])) + except OSError: + pass + parts[-1] += extension + return os.path.join(outputdir, *parts), parts + + +# Aaargh. Distutils is not tested at all for the purpose of compiling +# DLLs that are not extension modules. Here are some hacks to work +# around that, in the _patch_for_*() functions... + +def _patch_meth(patchlist, cls, name, new_meth): + old = getattr(cls, name) + patchlist.append((cls, name, old)) + setattr(cls, name, new_meth) + return old + +def _unpatch_meths(patchlist): + for cls, name, old_meth in reversed(patchlist): + setattr(cls, name, old_meth) + +def _patch_for_embedding(patchlist): + if sys.platform == 'win32': + # we must not remove the manifest when building for embedding! + # FUTURE: this module was removed in setuptools 74; this is likely dead code and should be removed, + # since the toolchain it supports (VS2005-2008) is also long dead. + from cffi._shimmed_dist_utils import MSVCCompiler + if MSVCCompiler is not None: + _patch_meth(patchlist, MSVCCompiler, '_remove_visual_c_ref', + lambda self, manifest_file: manifest_file) + + if sys.platform == 'darwin': + # we must not make a '-bundle', but a '-dynamiclib' instead + from cffi._shimmed_dist_utils import CCompiler + def my_link_shared_object(self, *args, **kwds): + if '-bundle' in self.linker_so: + self.linker_so = list(self.linker_so) + i = self.linker_so.index('-bundle') + self.linker_so[i] = '-dynamiclib' + return old_link_shared_object(self, *args, **kwds) + old_link_shared_object = _patch_meth(patchlist, CCompiler, + 'link_shared_object', + my_link_shared_object) + +def _patch_for_target(patchlist, target): + from cffi._shimmed_dist_utils import build_ext + # if 'target' is different from '*', we need to patch some internal + # method to just return this 'target' value, instead of having it + # built from module_name + if target.endswith('.*'): + target = target[:-2] + if sys.platform == 'win32': + target += '.dll' + elif sys.platform == 'darwin': + target += '.dylib' + else: + target += '.so' + _patch_meth(patchlist, build_ext, 'get_ext_filename', + lambda self, ext_name: target) + + +def recompile(ffi, module_name, preamble, tmpdir='.', call_c_compiler=True, + c_file=None, source_extension='.c', extradir=None, + compiler_verbose=1, target=None, debug=None, + uses_ffiplatform=True, **kwds): + if not isinstance(module_name, str): + module_name = module_name.encode('ascii') + if ffi._windows_unicode: + ffi._apply_windows_unicode(kwds) + if preamble is not None: + if call_c_compiler and _is_file_like(c_file): + raise TypeError("Writing to file-like objects is not supported " + "with call_c_compiler=True") + embedding = (ffi._embedding is not None) + if embedding: + ffi._apply_embedding_fix(kwds) + if c_file is None: + c_file, parts = _modname_to_file(tmpdir, module_name, + source_extension) + if extradir: + parts = [extradir] + parts + ext_c_file = os.path.join(*parts) + else: + ext_c_file = c_file + # + if target is None: + if embedding: + target = '%s.*' % module_name + else: + target = '*' + # + if uses_ffiplatform: + ext = ffiplatform.get_extension(ext_c_file, module_name, **kwds) + else: + ext = None + updated = make_c_source(ffi, module_name, preamble, c_file, + verbose=compiler_verbose) + if call_c_compiler: + patchlist = [] + cwd = os.getcwd() + try: + if embedding: + _patch_for_embedding(patchlist) + if target != '*': + _patch_for_target(patchlist, target) + if compiler_verbose: + if tmpdir == '.': + msg = 'the current directory is' + else: + msg = 'setting the current directory to' + print('%s %r' % (msg, os.path.abspath(tmpdir))) + os.chdir(tmpdir) + outputfilename = ffiplatform.compile('.', ext, + compiler_verbose, debug) + finally: + os.chdir(cwd) + _unpatch_meths(patchlist) + return outputfilename + else: + return ext, updated + else: + if c_file is None: + c_file, _ = _modname_to_file(tmpdir, module_name, '.py') + updated = make_py_source(ffi, module_name, c_file, + verbose=compiler_verbose) + if call_c_compiler: + return c_file + else: + return None, updated + diff --git a/venv/lib/python3.12/site-packages/cffi/setuptools_ext.py b/venv/lib/python3.12/site-packages/cffi/setuptools_ext.py new file mode 100644 index 00000000..5cdd246f --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi/setuptools_ext.py @@ -0,0 +1,229 @@ +import os +import sys +import sysconfig + +try: + basestring +except NameError: + # Python 3.x + basestring = str + +def error(msg): + from cffi._shimmed_dist_utils import DistutilsSetupError + raise DistutilsSetupError(msg) + + +def execfile(filename, glob): + # We use execfile() (here rewritten for Python 3) instead of + # __import__() to load the build script. The problem with + # a normal import is that in some packages, the intermediate + # __init__.py files may already try to import the file that + # we are generating. + with open(filename) as f: + src = f.read() + src += '\n' # Python 2.6 compatibility + code = compile(src, filename, 'exec') + exec(code, glob, glob) + + +def add_cffi_module(dist, mod_spec): + from cffi.api import FFI + + if not isinstance(mod_spec, basestring): + error("argument to 'cffi_modules=...' must be a str or a list of str," + " not %r" % (type(mod_spec).__name__,)) + mod_spec = str(mod_spec) + try: + build_file_name, ffi_var_name = mod_spec.split(':') + except ValueError: + error("%r must be of the form 'path/build.py:ffi_variable'" % + (mod_spec,)) + if not os.path.exists(build_file_name): + ext = '' + rewritten = build_file_name.replace('.', '/') + '.py' + if os.path.exists(rewritten): + ext = ' (rewrite cffi_modules to [%r])' % ( + rewritten + ':' + ffi_var_name,) + error("%r does not name an existing file%s" % (build_file_name, ext)) + + mod_vars = {'__name__': '__cffi__', '__file__': build_file_name} + execfile(build_file_name, mod_vars) + + try: + ffi = mod_vars[ffi_var_name] + except KeyError: + error("%r: object %r not found in module" % (mod_spec, + ffi_var_name)) + if not isinstance(ffi, FFI): + ffi = ffi() # maybe it's a function instead of directly an ffi + if not isinstance(ffi, FFI): + error("%r is not an FFI instance (got %r)" % (mod_spec, + type(ffi).__name__)) + if not hasattr(ffi, '_assigned_source'): + error("%r: the set_source() method was not called" % (mod_spec,)) + module_name, source, source_extension, kwds = ffi._assigned_source + if ffi._windows_unicode: + kwds = kwds.copy() + ffi._apply_windows_unicode(kwds) + + if source is None: + _add_py_module(dist, ffi, module_name) + else: + _add_c_module(dist, ffi, module_name, source, source_extension, kwds) + +def _set_py_limited_api(Extension, kwds): + """ + Add py_limited_api to kwds if setuptools >= 26 is in use. + Do not alter the setting if it already exists. + Setuptools takes care of ignoring the flag on Python 2 and PyPy. + + CPython itself should ignore the flag in a debugging version + (by not listing .abi3.so in the extensions it supports), but + it doesn't so far, creating troubles. That's why we check + for "not hasattr(sys, 'gettotalrefcount')" (the 2.7 compatible equivalent + of 'd' not in sys.abiflags). (http://bugs.python.org/issue28401) + + On Windows, with CPython <= 3.4, it's better not to use py_limited_api + because virtualenv *still* doesn't copy PYTHON3.DLL on these versions. + Recently (2020) we started shipping only >= 3.5 wheels, though. So + we'll give it another try and set py_limited_api on Windows >= 3.5. + """ + from cffi._shimmed_dist_utils import log + from cffi import recompiler + + if ('py_limited_api' not in kwds and not hasattr(sys, 'gettotalrefcount') + and recompiler.USE_LIMITED_API): + import setuptools + try: + setuptools_major_version = int(setuptools.__version__.partition('.')[0]) + if setuptools_major_version >= 26: + kwds['py_limited_api'] = True + except ValueError: # certain development versions of setuptools + # If we don't know the version number of setuptools, we + # try to set 'py_limited_api' anyway. At worst, we get a + # warning. + kwds['py_limited_api'] = True + + if sysconfig.get_config_var("Py_GIL_DISABLED"): + if kwds.get('py_limited_api'): + log.info("Ignoring py_limited_api=True for free-threaded build.") + + kwds['py_limited_api'] = False + + if kwds.get('py_limited_api') is False: + # avoid setting Py_LIMITED_API if py_limited_api=False + # which _cffi_include.h does unless _CFFI_NO_LIMITED_API is defined + kwds.setdefault("define_macros", []).append(("_CFFI_NO_LIMITED_API", None)) + return kwds + +def _add_c_module(dist, ffi, module_name, source, source_extension, kwds): + # We are a setuptools extension. Need this build_ext for py_limited_api. + from setuptools.command.build_ext import build_ext + from cffi._shimmed_dist_utils import Extension, log, mkpath + from cffi import recompiler + + allsources = ['$PLACEHOLDER'] + allsources.extend(kwds.pop('sources', [])) + kwds = _set_py_limited_api(Extension, kwds) + ext = Extension(name=module_name, sources=allsources, **kwds) + + def make_mod(tmpdir, pre_run=None): + c_file = os.path.join(tmpdir, module_name + source_extension) + log.info("generating cffi module %r" % c_file) + mkpath(tmpdir) + # a setuptools-only, API-only hook: called with the "ext" and "ffi" + # arguments just before we turn the ffi into C code. To use it, + # subclass the 'distutils.command.build_ext.build_ext' class and + # add a method 'def pre_run(self, ext, ffi)'. + if pre_run is not None: + pre_run(ext, ffi) + updated = recompiler.make_c_source(ffi, module_name, source, c_file) + if not updated: + log.info("already up-to-date") + return c_file + + if dist.ext_modules is None: + dist.ext_modules = [] + dist.ext_modules.append(ext) + + base_class = dist.cmdclass.get('build_ext', build_ext) + class build_ext_make_mod(base_class): + def run(self): + if ext.sources[0] == '$PLACEHOLDER': + pre_run = getattr(self, 'pre_run', None) + ext.sources[0] = make_mod(self.build_temp, pre_run) + base_class.run(self) + dist.cmdclass['build_ext'] = build_ext_make_mod + # NB. multiple runs here will create multiple 'build_ext_make_mod' + # classes. Even in this case the 'build_ext' command should be + # run once; but just in case, the logic above does nothing if + # called again. + + +def _add_py_module(dist, ffi, module_name): + from setuptools.command.build_py import build_py + from setuptools.command.build_ext import build_ext + from cffi._shimmed_dist_utils import log, mkpath + from cffi import recompiler + + def generate_mod(py_file): + log.info("generating cffi module %r" % py_file) + mkpath(os.path.dirname(py_file)) + updated = recompiler.make_py_source(ffi, module_name, py_file) + if not updated: + log.info("already up-to-date") + + base_class = dist.cmdclass.get('build_py', build_py) + class build_py_make_mod(base_class): + def run(self): + base_class.run(self) + module_path = module_name.split('.') + module_path[-1] += '.py' + generate_mod(os.path.join(self.build_lib, *module_path)) + def get_source_files(self): + # This is called from 'setup.py sdist' only. Exclude + # the generate .py module in this case. + saved_py_modules = self.py_modules + try: + if saved_py_modules: + self.py_modules = [m for m in saved_py_modules + if m != module_name] + return base_class.get_source_files(self) + finally: + self.py_modules = saved_py_modules + dist.cmdclass['build_py'] = build_py_make_mod + + # distutils and setuptools have no notion I could find of a + # generated python module. If we don't add module_name to + # dist.py_modules, then things mostly work but there are some + # combination of options (--root and --record) that will miss + # the module. So we add it here, which gives a few apparently + # harmless warnings about not finding the file outside the + # build directory. + # Then we need to hack more in get_source_files(); see above. + if dist.py_modules is None: + dist.py_modules = [] + dist.py_modules.append(module_name) + + # the following is only for "build_ext -i" + base_class_2 = dist.cmdclass.get('build_ext', build_ext) + class build_ext_make_mod(base_class_2): + def run(self): + base_class_2.run(self) + if self.inplace: + # from get_ext_fullpath() in distutils/command/build_ext.py + module_path = module_name.split('.') + package = '.'.join(module_path[:-1]) + build_py = self.get_finalized_command('build_py') + package_dir = build_py.get_package_dir(package) + file_name = module_path[-1] + '.py' + generate_mod(os.path.join(package_dir, file_name)) + dist.cmdclass['build_ext'] = build_ext_make_mod + +def cffi_modules(dist, attr, value): + assert attr == 'cffi_modules' + if isinstance(value, basestring): + value = [value] + + for cffi_module in value: + add_cffi_module(dist, cffi_module) diff --git a/venv/lib/python3.12/site-packages/cffi/vengine_cpy.py b/venv/lib/python3.12/site-packages/cffi/vengine_cpy.py new file mode 100644 index 00000000..02e6a471 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi/vengine_cpy.py @@ -0,0 +1,1087 @@ +# +# DEPRECATED: implementation for ffi.verify() +# +import sys +from . import model +from .error import VerificationError +from . import _imp_emulation as imp + + +class VCPythonEngine(object): + _class_key = 'x' + _gen_python_module = True + + def __init__(self, verifier): + self.verifier = verifier + self.ffi = verifier.ffi + self._struct_pending_verification = {} + self._types_of_builtin_functions = {} + + def patch_extension_kwds(self, kwds): + pass + + def find_module(self, module_name, path, so_suffixes): + try: + f, filename, descr = imp.find_module(module_name, path) + except ImportError: + return None + if f is not None: + f.close() + # Note that after a setuptools installation, there are both .py + # and .so files with the same basename. The code here relies on + # imp.find_module() locating the .so in priority. + if descr[0] not in so_suffixes: + return None + return filename + + def collect_types(self): + self._typesdict = {} + self._generate("collecttype") + + def _prnt(self, what=''): + self._f.write(what + '\n') + + def _gettypenum(self, type): + # a KeyError here is a bug. please report it! :-) + return self._typesdict[type] + + def _do_collect_type(self, tp): + if ((not isinstance(tp, model.PrimitiveType) + or tp.name == 'long double') + and tp not in self._typesdict): + num = len(self._typesdict) + self._typesdict[tp] = num + + def write_source_to_f(self): + self.collect_types() + # + # The new module will have a _cffi_setup() function that receives + # objects from the ffi world, and that calls some setup code in + # the module. This setup code is split in several independent + # functions, e.g. one per constant. The functions are "chained" + # by ending in a tail call to each other. + # + # This is further split in two chained lists, depending on if we + # can do it at import-time or if we must wait for _cffi_setup() to + # provide us with the objects. This is needed because we + # need the values of the enum constants in order to build the + # that we may have to pass to _cffi_setup(). + # + # The following two 'chained_list_constants' items contains + # the head of these two chained lists, as a string that gives the + # call to do, if any. + self._chained_list_constants = ['((void)lib,0)', '((void)lib,0)'] + # + prnt = self._prnt + # first paste some standard set of lines that are mostly '#define' + prnt(cffimod_header) + prnt() + # then paste the C source given by the user, verbatim. + prnt(self.verifier.preamble) + prnt() + # + # call generate_cpy_xxx_decl(), for every xxx found from + # ffi._parser._declarations. This generates all the functions. + self._generate("decl") + # + # implement the function _cffi_setup_custom() as calling the + # head of the chained list. + self._generate_setup_custom() + prnt() + # + # produce the method table, including the entries for the + # generated Python->C function wrappers, which are done + # by generate_cpy_function_method(). + prnt('static PyMethodDef _cffi_methods[] = {') + self._generate("method") + prnt(' {"_cffi_setup", _cffi_setup, METH_VARARGS, NULL},') + prnt(' {NULL, NULL, 0, NULL} /* Sentinel */') + prnt('};') + prnt() + # + # standard init. + modname = self.verifier.get_module_name() + constants = self._chained_list_constants[False] + prnt('#if PY_MAJOR_VERSION >= 3') + prnt() + prnt('static struct PyModuleDef _cffi_module_def = {') + prnt(' PyModuleDef_HEAD_INIT,') + prnt(' "%s",' % modname) + prnt(' NULL,') + prnt(' -1,') + prnt(' _cffi_methods,') + prnt(' NULL, NULL, NULL, NULL') + prnt('};') + prnt() + prnt('PyMODINIT_FUNC') + prnt('PyInit_%s(void)' % modname) + prnt('{') + prnt(' PyObject *lib;') + prnt(' lib = PyModule_Create(&_cffi_module_def);') + prnt(' if (lib == NULL)') + prnt(' return NULL;') + prnt(' if (%s < 0 || _cffi_init() < 0) {' % (constants,)) + prnt(' Py_DECREF(lib);') + prnt(' return NULL;') + prnt(' }') + prnt('#if Py_GIL_DISABLED') + prnt(' PyUnstable_Module_SetGIL(lib, Py_MOD_GIL_NOT_USED);') + prnt('#endif') + prnt(' return lib;') + prnt('}') + prnt() + prnt('#else') + prnt() + prnt('PyMODINIT_FUNC') + prnt('init%s(void)' % modname) + prnt('{') + prnt(' PyObject *lib;') + prnt(' lib = Py_InitModule("%s", _cffi_methods);' % modname) + prnt(' if (lib == NULL)') + prnt(' return;') + prnt(' if (%s < 0 || _cffi_init() < 0)' % (constants,)) + prnt(' return;') + prnt(' return;') + prnt('}') + prnt() + prnt('#endif') + + def load_library(self, flags=None): + # XXX review all usages of 'self' here! + # import it as a new extension module + imp.acquire_lock() + try: + if hasattr(sys, "getdlopenflags"): + previous_flags = sys.getdlopenflags() + try: + if hasattr(sys, "setdlopenflags") and flags is not None: + sys.setdlopenflags(flags) + module = imp.load_dynamic(self.verifier.get_module_name(), + self.verifier.modulefilename) + except ImportError as e: + error = "importing %r: %s" % (self.verifier.modulefilename, e) + raise VerificationError(error) + finally: + if hasattr(sys, "setdlopenflags"): + sys.setdlopenflags(previous_flags) + finally: + imp.release_lock() + # + # call loading_cpy_struct() to get the struct layout inferred by + # the C compiler + self._load(module, 'loading') + # + # the C code will need the objects. Collect them in + # order in a list. + revmapping = dict([(value, key) + for (key, value) in self._typesdict.items()]) + lst = [revmapping[i] for i in range(len(revmapping))] + lst = list(map(self.ffi._get_cached_btype, lst)) + # + # build the FFILibrary class and instance and call _cffi_setup(). + # this will set up some fields like '_cffi_types', and only then + # it will invoke the chained list of functions that will really + # build (notably) the constant objects, as if they are + # pointers, and store them as attributes on the 'library' object. + class FFILibrary(object): + _cffi_python_module = module + _cffi_ffi = self.ffi + _cffi_dir = [] + def __dir__(self): + return FFILibrary._cffi_dir + list(self.__dict__) + library = FFILibrary() + if module._cffi_setup(lst, VerificationError, library): + import warnings + warnings.warn("reimporting %r might overwrite older definitions" + % (self.verifier.get_module_name())) + # + # finally, call the loaded_cpy_xxx() functions. This will perform + # the final adjustments, like copying the Python->C wrapper + # functions from the module to the 'library' object, and setting + # up the FFILibrary class with properties for the global C variables. + self._load(module, 'loaded', library=library) + module._cffi_original_ffi = self.ffi + module._cffi_types_of_builtin_funcs = self._types_of_builtin_functions + return library + + def _get_declarations(self): + lst = [(key, tp) for (key, (tp, qual)) in + self.ffi._parser._declarations.items()] + lst.sort() + return lst + + def _generate(self, step_name): + for name, tp in self._get_declarations(): + kind, realname = name.split(' ', 1) + try: + method = getattr(self, '_generate_cpy_%s_%s' % (kind, + step_name)) + except AttributeError: + raise VerificationError( + "not implemented in verify(): %r" % name) + try: + method(tp, realname) + except Exception as e: + model.attach_exception_info(e, name) + raise + + def _load(self, module, step_name, **kwds): + for name, tp in self._get_declarations(): + kind, realname = name.split(' ', 1) + method = getattr(self, '_%s_cpy_%s' % (step_name, kind)) + try: + method(tp, realname, module, **kwds) + except Exception as e: + model.attach_exception_info(e, name) + raise + + def _generate_nothing(self, tp, name): + pass + + def _loaded_noop(self, tp, name, module, **kwds): + pass + + # ---------- + + def _convert_funcarg_to_c(self, tp, fromvar, tovar, errcode): + extraarg = '' + if isinstance(tp, model.PrimitiveType): + if tp.is_integer_type() and tp.name != '_Bool': + converter = '_cffi_to_c_int' + extraarg = ', %s' % tp.name + elif tp.is_complex_type(): + raise VerificationError( + "not implemented in verify(): complex types") + else: + converter = '(%s)_cffi_to_c_%s' % (tp.get_c_name(''), + tp.name.replace(' ', '_')) + errvalue = '-1' + # + elif isinstance(tp, model.PointerType): + self._convert_funcarg_to_c_ptr_or_array(tp, fromvar, + tovar, errcode) + return + # + elif isinstance(tp, (model.StructOrUnion, model.EnumType)): + # a struct (not a struct pointer) as a function argument + self._prnt(' if (_cffi_to_c((char *)&%s, _cffi_type(%d), %s) < 0)' + % (tovar, self._gettypenum(tp), fromvar)) + self._prnt(' %s;' % errcode) + return + # + elif isinstance(tp, model.FunctionPtrType): + converter = '(%s)_cffi_to_c_pointer' % tp.get_c_name('') + extraarg = ', _cffi_type(%d)' % self._gettypenum(tp) + errvalue = 'NULL' + # + else: + raise NotImplementedError(tp) + # + self._prnt(' %s = %s(%s%s);' % (tovar, converter, fromvar, extraarg)) + self._prnt(' if (%s == (%s)%s && PyErr_Occurred())' % ( + tovar, tp.get_c_name(''), errvalue)) + self._prnt(' %s;' % errcode) + + def _extra_local_variables(self, tp, localvars, freelines): + if isinstance(tp, model.PointerType): + localvars.add('Py_ssize_t datasize') + localvars.add('struct _cffi_freeme_s *large_args_free = NULL') + freelines.add('if (large_args_free != NULL)' + ' _cffi_free_array_arguments(large_args_free);') + + def _convert_funcarg_to_c_ptr_or_array(self, tp, fromvar, tovar, errcode): + self._prnt(' datasize = _cffi_prepare_pointer_call_argument(') + self._prnt(' _cffi_type(%d), %s, (char **)&%s);' % ( + self._gettypenum(tp), fromvar, tovar)) + self._prnt(' if (datasize != 0) {') + self._prnt(' %s = ((size_t)datasize) <= 640 ? ' + 'alloca((size_t)datasize) : NULL;' % (tovar,)) + self._prnt(' if (_cffi_convert_array_argument(_cffi_type(%d), %s, ' + '(char **)&%s,' % (self._gettypenum(tp), fromvar, tovar)) + self._prnt(' datasize, &large_args_free) < 0)') + self._prnt(' %s;' % errcode) + self._prnt(' }') + + def _convert_expr_from_c(self, tp, var, context): + if isinstance(tp, model.PrimitiveType): + if tp.is_integer_type() and tp.name != '_Bool': + return '_cffi_from_c_int(%s, %s)' % (var, tp.name) + elif tp.name != 'long double': + return '_cffi_from_c_%s(%s)' % (tp.name.replace(' ', '_'), var) + else: + return '_cffi_from_c_deref((char *)&%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + elif isinstance(tp, (model.PointerType, model.FunctionPtrType)): + return '_cffi_from_c_pointer((char *)%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + elif isinstance(tp, model.ArrayType): + return '_cffi_from_c_pointer((char *)%s, _cffi_type(%d))' % ( + var, self._gettypenum(model.PointerType(tp.item))) + elif isinstance(tp, model.StructOrUnion): + if tp.fldnames is None: + raise TypeError("'%s' is used as %s, but is opaque" % ( + tp._get_c_name(), context)) + return '_cffi_from_c_struct((char *)&%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + elif isinstance(tp, model.EnumType): + return '_cffi_from_c_deref((char *)&%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + else: + raise NotImplementedError(tp) + + # ---------- + # typedefs: generates no code so far + + _generate_cpy_typedef_collecttype = _generate_nothing + _generate_cpy_typedef_decl = _generate_nothing + _generate_cpy_typedef_method = _generate_nothing + _loading_cpy_typedef = _loaded_noop + _loaded_cpy_typedef = _loaded_noop + + # ---------- + # function declarations + + def _generate_cpy_function_collecttype(self, tp, name): + assert isinstance(tp, model.FunctionPtrType) + if tp.ellipsis: + self._do_collect_type(tp) + else: + # don't call _do_collect_type(tp) in this common case, + # otherwise test_autofilled_struct_as_argument fails + for type in tp.args: + self._do_collect_type(type) + self._do_collect_type(tp.result) + + def _generate_cpy_function_decl(self, tp, name): + assert isinstance(tp, model.FunctionPtrType) + if tp.ellipsis: + # cannot support vararg functions better than this: check for its + # exact type (including the fixed arguments), and build it as a + # constant function pointer (no CPython wrapper) + self._generate_cpy_const(False, name, tp) + return + prnt = self._prnt + numargs = len(tp.args) + if numargs == 0: + argname = 'noarg' + elif numargs == 1: + argname = 'arg0' + else: + argname = 'args' + prnt('static PyObject *') + prnt('_cffi_f_%s(PyObject *self, PyObject *%s)' % (name, argname)) + prnt('{') + # + context = 'argument of %s' % name + for i, type in enumerate(tp.args): + prnt(' %s;' % type.get_c_name(' x%d' % i, context)) + # + localvars = set() + freelines = set() + for type in tp.args: + self._extra_local_variables(type, localvars, freelines) + for decl in sorted(localvars): + prnt(' %s;' % (decl,)) + # + if not isinstance(tp.result, model.VoidType): + result_code = 'result = ' + context = 'result of %s' % name + prnt(' %s;' % tp.result.get_c_name(' result', context)) + prnt(' PyObject *pyresult;') + else: + result_code = '' + # + if len(tp.args) > 1: + rng = range(len(tp.args)) + for i in rng: + prnt(' PyObject *arg%d;' % i) + prnt() + prnt(' if (!PyArg_ParseTuple(args, "%s:%s", %s))' % ( + 'O' * numargs, name, ', '.join(['&arg%d' % i for i in rng]))) + prnt(' return NULL;') + prnt() + # + for i, type in enumerate(tp.args): + self._convert_funcarg_to_c(type, 'arg%d' % i, 'x%d' % i, + 'return NULL') + prnt() + # + prnt(' Py_BEGIN_ALLOW_THREADS') + prnt(' _cffi_restore_errno();') + prnt(' { %s%s(%s); }' % ( + result_code, name, + ', '.join(['x%d' % i for i in range(len(tp.args))]))) + prnt(' _cffi_save_errno();') + prnt(' Py_END_ALLOW_THREADS') + prnt() + # + prnt(' (void)self; /* unused */') + if numargs == 0: + prnt(' (void)noarg; /* unused */') + if result_code: + prnt(' pyresult = %s;' % + self._convert_expr_from_c(tp.result, 'result', 'result type')) + for freeline in freelines: + prnt(' ' + freeline) + prnt(' return pyresult;') + else: + for freeline in freelines: + prnt(' ' + freeline) + prnt(' Py_INCREF(Py_None);') + prnt(' return Py_None;') + prnt('}') + prnt() + + def _generate_cpy_function_method(self, tp, name): + if tp.ellipsis: + return + numargs = len(tp.args) + if numargs == 0: + meth = 'METH_NOARGS' + elif numargs == 1: + meth = 'METH_O' + else: + meth = 'METH_VARARGS' + self._prnt(' {"%s", _cffi_f_%s, %s, NULL},' % (name, name, meth)) + + _loading_cpy_function = _loaded_noop + + def _loaded_cpy_function(self, tp, name, module, library): + if tp.ellipsis: + return + func = getattr(module, name) + setattr(library, name, func) + self._types_of_builtin_functions[func] = tp + + # ---------- + # named structs + + _generate_cpy_struct_collecttype = _generate_nothing + def _generate_cpy_struct_decl(self, tp, name): + assert name == tp.name + self._generate_struct_or_union_decl(tp, 'struct', name) + def _generate_cpy_struct_method(self, tp, name): + self._generate_struct_or_union_method(tp, 'struct', name) + def _loading_cpy_struct(self, tp, name, module): + self._loading_struct_or_union(tp, 'struct', name, module) + def _loaded_cpy_struct(self, tp, name, module, **kwds): + self._loaded_struct_or_union(tp) + + _generate_cpy_union_collecttype = _generate_nothing + def _generate_cpy_union_decl(self, tp, name): + assert name == tp.name + self._generate_struct_or_union_decl(tp, 'union', name) + def _generate_cpy_union_method(self, tp, name): + self._generate_struct_or_union_method(tp, 'union', name) + def _loading_cpy_union(self, tp, name, module): + self._loading_struct_or_union(tp, 'union', name, module) + def _loaded_cpy_union(self, tp, name, module, **kwds): + self._loaded_struct_or_union(tp) + + def _generate_struct_or_union_decl(self, tp, prefix, name): + if tp.fldnames is None: + return # nothing to do with opaque structs + checkfuncname = '_cffi_check_%s_%s' % (prefix, name) + layoutfuncname = '_cffi_layout_%s_%s' % (prefix, name) + cname = ('%s %s' % (prefix, name)).strip() + # + prnt = self._prnt + prnt('static void %s(%s *p)' % (checkfuncname, cname)) + prnt('{') + prnt(' /* only to generate compile-time warnings or errors */') + prnt(' (void)p;') + for fname, ftype, fbitsize, fqual in tp.enumfields(): + if (isinstance(ftype, model.PrimitiveType) + and ftype.is_integer_type()) or fbitsize >= 0: + # accept all integers, but complain on float or double + prnt(' (void)((p->%s) << 1);' % fname) + else: + # only accept exactly the type declared. + try: + prnt(' { %s = &p->%s; (void)tmp; }' % ( + ftype.get_c_name('*tmp', 'field %r'%fname, quals=fqual), + fname)) + except VerificationError as e: + prnt(' /* %s */' % str(e)) # cannot verify it, ignore + prnt('}') + prnt('static PyObject *') + prnt('%s(PyObject *self, PyObject *noarg)' % (layoutfuncname,)) + prnt('{') + prnt(' struct _cffi_aligncheck { char x; %s y; };' % cname) + prnt(' static Py_ssize_t nums[] = {') + prnt(' sizeof(%s),' % cname) + prnt(' offsetof(struct _cffi_aligncheck, y),') + for fname, ftype, fbitsize, fqual in tp.enumfields(): + if fbitsize >= 0: + continue # xxx ignore fbitsize for now + prnt(' offsetof(%s, %s),' % (cname, fname)) + if isinstance(ftype, model.ArrayType) and ftype.length is None: + prnt(' 0, /* %s */' % ftype._get_c_name()) + else: + prnt(' sizeof(((%s *)0)->%s),' % (cname, fname)) + prnt(' -1') + prnt(' };') + prnt(' (void)self; /* unused */') + prnt(' (void)noarg; /* unused */') + prnt(' return _cffi_get_struct_layout(nums);') + prnt(' /* the next line is not executed, but compiled */') + prnt(' %s(0);' % (checkfuncname,)) + prnt('}') + prnt() + + def _generate_struct_or_union_method(self, tp, prefix, name): + if tp.fldnames is None: + return # nothing to do with opaque structs + layoutfuncname = '_cffi_layout_%s_%s' % (prefix, name) + self._prnt(' {"%s", %s, METH_NOARGS, NULL},' % (layoutfuncname, + layoutfuncname)) + + def _loading_struct_or_union(self, tp, prefix, name, module): + if tp.fldnames is None: + return # nothing to do with opaque structs + layoutfuncname = '_cffi_layout_%s_%s' % (prefix, name) + # + function = getattr(module, layoutfuncname) + layout = function() + if isinstance(tp, model.StructOrUnion) and tp.partial: + # use the function()'s sizes and offsets to guide the + # layout of the struct + totalsize = layout[0] + totalalignment = layout[1] + fieldofs = layout[2::2] + fieldsize = layout[3::2] + tp.force_flatten() + assert len(fieldofs) == len(fieldsize) == len(tp.fldnames) + tp.fixedlayout = fieldofs, fieldsize, totalsize, totalalignment + else: + cname = ('%s %s' % (prefix, name)).strip() + self._struct_pending_verification[tp] = layout, cname + + def _loaded_struct_or_union(self, tp): + if tp.fldnames is None: + return # nothing to do with opaque structs + self.ffi._get_cached_btype(tp) # force 'fixedlayout' to be considered + + if tp in self._struct_pending_verification: + # check that the layout sizes and offsets match the real ones + def check(realvalue, expectedvalue, msg): + if realvalue != expectedvalue: + raise VerificationError( + "%s (we have %d, but C compiler says %d)" + % (msg, expectedvalue, realvalue)) + ffi = self.ffi + BStruct = ffi._get_cached_btype(tp) + layout, cname = self._struct_pending_verification.pop(tp) + check(layout[0], ffi.sizeof(BStruct), "wrong total size") + check(layout[1], ffi.alignof(BStruct), "wrong total alignment") + i = 2 + for fname, ftype, fbitsize, fqual in tp.enumfields(): + if fbitsize >= 0: + continue # xxx ignore fbitsize for now + check(layout[i], ffi.offsetof(BStruct, fname), + "wrong offset for field %r" % (fname,)) + if layout[i+1] != 0: + BField = ffi._get_cached_btype(ftype) + check(layout[i+1], ffi.sizeof(BField), + "wrong size for field %r" % (fname,)) + i += 2 + assert i == len(layout) + + # ---------- + # 'anonymous' declarations. These are produced for anonymous structs + # or unions; the 'name' is obtained by a typedef. + + _generate_cpy_anonymous_collecttype = _generate_nothing + + def _generate_cpy_anonymous_decl(self, tp, name): + if isinstance(tp, model.EnumType): + self._generate_cpy_enum_decl(tp, name, '') + else: + self._generate_struct_or_union_decl(tp, '', name) + + def _generate_cpy_anonymous_method(self, tp, name): + if not isinstance(tp, model.EnumType): + self._generate_struct_or_union_method(tp, '', name) + + def _loading_cpy_anonymous(self, tp, name, module): + if isinstance(tp, model.EnumType): + self._loading_cpy_enum(tp, name, module) + else: + self._loading_struct_or_union(tp, '', name, module) + + def _loaded_cpy_anonymous(self, tp, name, module, **kwds): + if isinstance(tp, model.EnumType): + self._loaded_cpy_enum(tp, name, module, **kwds) + else: + self._loaded_struct_or_union(tp) + + # ---------- + # constants, likely declared with '#define' + + def _generate_cpy_const(self, is_int, name, tp=None, category='const', + vartp=None, delayed=True, size_too=False, + check_value=None): + prnt = self._prnt + funcname = '_cffi_%s_%s' % (category, name) + prnt('static int %s(PyObject *lib)' % funcname) + prnt('{') + prnt(' PyObject *o;') + prnt(' int res;') + if not is_int: + prnt(' %s;' % (vartp or tp).get_c_name(' i', name)) + else: + assert category == 'const' + # + if check_value is not None: + self._check_int_constant_value(name, check_value) + # + if not is_int: + if category == 'var': + realexpr = '&' + name + else: + realexpr = name + prnt(' i = (%s);' % (realexpr,)) + prnt(' o = %s;' % (self._convert_expr_from_c(tp, 'i', + 'variable type'),)) + assert delayed + else: + prnt(' o = _cffi_from_c_int_const(%s);' % name) + prnt(' if (o == NULL)') + prnt(' return -1;') + if size_too: + prnt(' {') + prnt(' PyObject *o1 = o;') + prnt(' o = Py_BuildValue("On", o1, (Py_ssize_t)sizeof(%s));' + % (name,)) + prnt(' Py_DECREF(o1);') + prnt(' if (o == NULL)') + prnt(' return -1;') + prnt(' }') + prnt(' res = PyObject_SetAttrString(lib, "%s", o);' % name) + prnt(' Py_DECREF(o);') + prnt(' if (res < 0)') + prnt(' return -1;') + prnt(' return %s;' % self._chained_list_constants[delayed]) + self._chained_list_constants[delayed] = funcname + '(lib)' + prnt('}') + prnt() + + def _generate_cpy_constant_collecttype(self, tp, name): + is_int = isinstance(tp, model.PrimitiveType) and tp.is_integer_type() + if not is_int: + self._do_collect_type(tp) + + def _generate_cpy_constant_decl(self, tp, name): + is_int = isinstance(tp, model.PrimitiveType) and tp.is_integer_type() + self._generate_cpy_const(is_int, name, tp) + + _generate_cpy_constant_method = _generate_nothing + _loading_cpy_constant = _loaded_noop + _loaded_cpy_constant = _loaded_noop + + # ---------- + # enums + + def _check_int_constant_value(self, name, value, err_prefix=''): + prnt = self._prnt + if value <= 0: + prnt(' if ((%s) > 0 || (long)(%s) != %dL) {' % ( + name, name, value)) + else: + prnt(' if ((%s) <= 0 || (unsigned long)(%s) != %dUL) {' % ( + name, name, value)) + prnt(' char buf[64];') + prnt(' if ((%s) <= 0)' % name) + prnt(' snprintf(buf, 63, "%%ld", (long)(%s));' % name) + prnt(' else') + prnt(' snprintf(buf, 63, "%%lu", (unsigned long)(%s));' % + name) + prnt(' PyErr_Format(_cffi_VerificationError,') + prnt(' "%s%s has the real value %s, not %s",') + prnt(' "%s", "%s", buf, "%d");' % ( + err_prefix, name, value)) + prnt(' return -1;') + prnt(' }') + + def _enum_funcname(self, prefix, name): + # "$enum_$1" => "___D_enum____D_1" + name = name.replace('$', '___D_') + return '_cffi_e_%s_%s' % (prefix, name) + + def _generate_cpy_enum_decl(self, tp, name, prefix='enum'): + if tp.partial: + for enumerator in tp.enumerators: + self._generate_cpy_const(True, enumerator, delayed=False) + return + # + funcname = self._enum_funcname(prefix, name) + prnt = self._prnt + prnt('static int %s(PyObject *lib)' % funcname) + prnt('{') + for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues): + self._check_int_constant_value(enumerator, enumvalue, + "enum %s: " % name) + prnt(' return %s;' % self._chained_list_constants[True]) + self._chained_list_constants[True] = funcname + '(lib)' + prnt('}') + prnt() + + _generate_cpy_enum_collecttype = _generate_nothing + _generate_cpy_enum_method = _generate_nothing + + def _loading_cpy_enum(self, tp, name, module): + if tp.partial: + enumvalues = [getattr(module, enumerator) + for enumerator in tp.enumerators] + tp.enumvalues = tuple(enumvalues) + tp.partial_resolved = True + + def _loaded_cpy_enum(self, tp, name, module, library): + for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues): + setattr(library, enumerator, enumvalue) + + # ---------- + # macros: for now only for integers + + def _generate_cpy_macro_decl(self, tp, name): + if tp == '...': + check_value = None + else: + check_value = tp # an integer + self._generate_cpy_const(True, name, check_value=check_value) + + _generate_cpy_macro_collecttype = _generate_nothing + _generate_cpy_macro_method = _generate_nothing + _loading_cpy_macro = _loaded_noop + _loaded_cpy_macro = _loaded_noop + + # ---------- + # global variables + + def _generate_cpy_variable_collecttype(self, tp, name): + if isinstance(tp, model.ArrayType): + tp_ptr = model.PointerType(tp.item) + else: + tp_ptr = model.PointerType(tp) + self._do_collect_type(tp_ptr) + + def _generate_cpy_variable_decl(self, tp, name): + if isinstance(tp, model.ArrayType): + tp_ptr = model.PointerType(tp.item) + self._generate_cpy_const(False, name, tp, vartp=tp_ptr, + size_too = tp.length_is_unknown()) + else: + tp_ptr = model.PointerType(tp) + self._generate_cpy_const(False, name, tp_ptr, category='var') + + _generate_cpy_variable_method = _generate_nothing + _loading_cpy_variable = _loaded_noop + + def _loaded_cpy_variable(self, tp, name, module, library): + value = getattr(library, name) + if isinstance(tp, model.ArrayType): # int a[5] is "constant" in the + # sense that "a=..." is forbidden + if tp.length_is_unknown(): + assert isinstance(value, tuple) + (value, size) = value + BItemType = self.ffi._get_cached_btype(tp.item) + length, rest = divmod(size, self.ffi.sizeof(BItemType)) + if rest != 0: + raise VerificationError( + "bad size: %r does not seem to be an array of %s" % + (name, tp.item)) + tp = tp.resolve_length(length) + # 'value' is a which we have to replace with + # a if the N is actually known + if tp.length is not None: + BArray = self.ffi._get_cached_btype(tp) + value = self.ffi.cast(BArray, value) + setattr(library, name, value) + return + # remove ptr= from the library instance, and replace + # it by a property on the class, which reads/writes into ptr[0]. + ptr = value + delattr(library, name) + def getter(library): + return ptr[0] + def setter(library, value): + ptr[0] = value + setattr(type(library), name, property(getter, setter)) + type(library)._cffi_dir.append(name) + + # ---------- + + def _generate_setup_custom(self): + prnt = self._prnt + prnt('static int _cffi_setup_custom(PyObject *lib)') + prnt('{') + prnt(' return %s;' % self._chained_list_constants[True]) + prnt('}') + +cffimod_header = r''' +#include +#include + +/* this block of #ifs should be kept exactly identical between + c/_cffi_backend.c, cffi/vengine_cpy.py, cffi/vengine_gen.py + and cffi/_cffi_include.h */ +#if defined(_MSC_VER) +# include /* for alloca() */ +# if _MSC_VER < 1600 /* MSVC < 2010 */ + typedef __int8 int8_t; + typedef __int16 int16_t; + typedef __int32 int32_t; + typedef __int64 int64_t; + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + typedef unsigned __int64 uint64_t; + typedef __int8 int_least8_t; + typedef __int16 int_least16_t; + typedef __int32 int_least32_t; + typedef __int64 int_least64_t; + typedef unsigned __int8 uint_least8_t; + typedef unsigned __int16 uint_least16_t; + typedef unsigned __int32 uint_least32_t; + typedef unsigned __int64 uint_least64_t; + typedef __int8 int_fast8_t; + typedef __int16 int_fast16_t; + typedef __int32 int_fast32_t; + typedef __int64 int_fast64_t; + typedef unsigned __int8 uint_fast8_t; + typedef unsigned __int16 uint_fast16_t; + typedef unsigned __int32 uint_fast32_t; + typedef unsigned __int64 uint_fast64_t; + typedef __int64 intmax_t; + typedef unsigned __int64 uintmax_t; +# else +# include +# endif +# if _MSC_VER < 1800 /* MSVC < 2013 */ +# ifndef __cplusplus + typedef unsigned char _Bool; +# endif +# endif +# define _cffi_float_complex_t _Fcomplex /* include for it */ +# define _cffi_double_complex_t _Dcomplex /* include for it */ +#else +# include +# if (defined (__SVR4) && defined (__sun)) || defined(_AIX) || defined(__hpux) +# include +# endif +# define _cffi_float_complex_t float _Complex +# define _cffi_double_complex_t double _Complex +#endif + +#if PY_MAJOR_VERSION < 3 +# undef PyCapsule_CheckExact +# undef PyCapsule_GetPointer +# define PyCapsule_CheckExact(capsule) (PyCObject_Check(capsule)) +# define PyCapsule_GetPointer(capsule, name) \ + (PyCObject_AsVoidPtr(capsule)) +#endif + +#if PY_MAJOR_VERSION >= 3 +# define PyInt_FromLong PyLong_FromLong +#endif + +#define _cffi_from_c_double PyFloat_FromDouble +#define _cffi_from_c_float PyFloat_FromDouble +#define _cffi_from_c_long PyInt_FromLong +#define _cffi_from_c_ulong PyLong_FromUnsignedLong +#define _cffi_from_c_longlong PyLong_FromLongLong +#define _cffi_from_c_ulonglong PyLong_FromUnsignedLongLong +#define _cffi_from_c__Bool PyBool_FromLong + +#define _cffi_to_c_double PyFloat_AsDouble +#define _cffi_to_c_float PyFloat_AsDouble + +#define _cffi_from_c_int_const(x) \ + (((x) > 0) ? \ + ((unsigned long long)(x) <= (unsigned long long)LONG_MAX) ? \ + PyInt_FromLong((long)(x)) : \ + PyLong_FromUnsignedLongLong((unsigned long long)(x)) : \ + ((long long)(x) >= (long long)LONG_MIN) ? \ + PyInt_FromLong((long)(x)) : \ + PyLong_FromLongLong((long long)(x))) + +#define _cffi_from_c_int(x, type) \ + (((type)-1) > 0 ? /* unsigned */ \ + (sizeof(type) < sizeof(long) ? \ + PyInt_FromLong((long)x) : \ + sizeof(type) == sizeof(long) ? \ + PyLong_FromUnsignedLong((unsigned long)x) : \ + PyLong_FromUnsignedLongLong((unsigned long long)x)) : \ + (sizeof(type) <= sizeof(long) ? \ + PyInt_FromLong((long)x) : \ + PyLong_FromLongLong((long long)x))) + +#define _cffi_to_c_int(o, type) \ + ((type)( \ + sizeof(type) == 1 ? (((type)-1) > 0 ? (type)_cffi_to_c_u8(o) \ + : (type)_cffi_to_c_i8(o)) : \ + sizeof(type) == 2 ? (((type)-1) > 0 ? (type)_cffi_to_c_u16(o) \ + : (type)_cffi_to_c_i16(o)) : \ + sizeof(type) == 4 ? (((type)-1) > 0 ? (type)_cffi_to_c_u32(o) \ + : (type)_cffi_to_c_i32(o)) : \ + sizeof(type) == 8 ? (((type)-1) > 0 ? (type)_cffi_to_c_u64(o) \ + : (type)_cffi_to_c_i64(o)) : \ + (Py_FatalError("unsupported size for type " #type), (type)0))) + +#define _cffi_to_c_i8 \ + ((int(*)(PyObject *))_cffi_exports[1]) +#define _cffi_to_c_u8 \ + ((int(*)(PyObject *))_cffi_exports[2]) +#define _cffi_to_c_i16 \ + ((int(*)(PyObject *))_cffi_exports[3]) +#define _cffi_to_c_u16 \ + ((int(*)(PyObject *))_cffi_exports[4]) +#define _cffi_to_c_i32 \ + ((int(*)(PyObject *))_cffi_exports[5]) +#define _cffi_to_c_u32 \ + ((unsigned int(*)(PyObject *))_cffi_exports[6]) +#define _cffi_to_c_i64 \ + ((long long(*)(PyObject *))_cffi_exports[7]) +#define _cffi_to_c_u64 \ + ((unsigned long long(*)(PyObject *))_cffi_exports[8]) +#define _cffi_to_c_char \ + ((int(*)(PyObject *))_cffi_exports[9]) +#define _cffi_from_c_pointer \ + ((PyObject *(*)(char *, CTypeDescrObject *))_cffi_exports[10]) +#define _cffi_to_c_pointer \ + ((char *(*)(PyObject *, CTypeDescrObject *))_cffi_exports[11]) +#define _cffi_get_struct_layout \ + ((PyObject *(*)(Py_ssize_t[]))_cffi_exports[12]) +#define _cffi_restore_errno \ + ((void(*)(void))_cffi_exports[13]) +#define _cffi_save_errno \ + ((void(*)(void))_cffi_exports[14]) +#define _cffi_from_c_char \ + ((PyObject *(*)(char))_cffi_exports[15]) +#define _cffi_from_c_deref \ + ((PyObject *(*)(char *, CTypeDescrObject *))_cffi_exports[16]) +#define _cffi_to_c \ + ((int(*)(char *, CTypeDescrObject *, PyObject *))_cffi_exports[17]) +#define _cffi_from_c_struct \ + ((PyObject *(*)(char *, CTypeDescrObject *))_cffi_exports[18]) +#define _cffi_to_c_wchar_t \ + ((wchar_t(*)(PyObject *))_cffi_exports[19]) +#define _cffi_from_c_wchar_t \ + ((PyObject *(*)(wchar_t))_cffi_exports[20]) +#define _cffi_to_c_long_double \ + ((long double(*)(PyObject *))_cffi_exports[21]) +#define _cffi_to_c__Bool \ + ((_Bool(*)(PyObject *))_cffi_exports[22]) +#define _cffi_prepare_pointer_call_argument \ + ((Py_ssize_t(*)(CTypeDescrObject *, PyObject *, char **))_cffi_exports[23]) +#define _cffi_convert_array_from_object \ + ((int(*)(char *, CTypeDescrObject *, PyObject *))_cffi_exports[24]) +#define _CFFI_NUM_EXPORTS 25 + +typedef struct _ctypedescr CTypeDescrObject; + +static void *_cffi_exports[_CFFI_NUM_EXPORTS]; +static PyObject *_cffi_types, *_cffi_VerificationError; + +static int _cffi_setup_custom(PyObject *lib); /* forward */ + +static PyObject *_cffi_setup(PyObject *self, PyObject *args) +{ + PyObject *library; + int was_alive = (_cffi_types != NULL); + (void)self; /* unused */ + if (!PyArg_ParseTuple(args, "OOO", &_cffi_types, &_cffi_VerificationError, + &library)) + return NULL; + Py_INCREF(_cffi_types); + Py_INCREF(_cffi_VerificationError); + if (_cffi_setup_custom(library) < 0) + return NULL; + return PyBool_FromLong(was_alive); +} + +union _cffi_union_alignment_u { + unsigned char m_char; + unsigned short m_short; + unsigned int m_int; + unsigned long m_long; + unsigned long long m_longlong; + float m_float; + double m_double; + long double m_longdouble; +}; + +struct _cffi_freeme_s { + struct _cffi_freeme_s *next; + union _cffi_union_alignment_u alignment; +}; + +#ifdef __GNUC__ + __attribute__((unused)) +#endif +static int _cffi_convert_array_argument(CTypeDescrObject *ctptr, PyObject *arg, + char **output_data, Py_ssize_t datasize, + struct _cffi_freeme_s **freeme) +{ + char *p; + if (datasize < 0) + return -1; + + p = *output_data; + if (p == NULL) { + struct _cffi_freeme_s *fp = (struct _cffi_freeme_s *)PyObject_Malloc( + offsetof(struct _cffi_freeme_s, alignment) + (size_t)datasize); + if (fp == NULL) + return -1; + fp->next = *freeme; + *freeme = fp; + p = *output_data = (char *)&fp->alignment; + } + memset((void *)p, 0, (size_t)datasize); + return _cffi_convert_array_from_object(p, ctptr, arg); +} + +#ifdef __GNUC__ + __attribute__((unused)) +#endif +static void _cffi_free_array_arguments(struct _cffi_freeme_s *freeme) +{ + do { + void *p = (void *)freeme; + freeme = freeme->next; + PyObject_Free(p); + } while (freeme != NULL); +} + +static int _cffi_init(void) +{ + PyObject *module, *c_api_object = NULL; + + module = PyImport_ImportModule("_cffi_backend"); + if (module == NULL) + goto failure; + + c_api_object = PyObject_GetAttrString(module, "_C_API"); + if (c_api_object == NULL) + goto failure; + if (!PyCapsule_CheckExact(c_api_object)) { + PyErr_SetNone(PyExc_ImportError); + goto failure; + } + memcpy(_cffi_exports, PyCapsule_GetPointer(c_api_object, "cffi"), + _CFFI_NUM_EXPORTS * sizeof(void *)); + + Py_DECREF(module); + Py_DECREF(c_api_object); + return 0; + + failure: + Py_XDECREF(module); + Py_XDECREF(c_api_object); + return -1; +} + +#define _cffi_type(num) ((CTypeDescrObject *)PyList_GET_ITEM(_cffi_types, num)) + +/**********/ +''' diff --git a/venv/lib/python3.12/site-packages/cffi/vengine_gen.py b/venv/lib/python3.12/site-packages/cffi/vengine_gen.py new file mode 100644 index 00000000..bffc8212 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi/vengine_gen.py @@ -0,0 +1,679 @@ +# +# DEPRECATED: implementation for ffi.verify() +# +import sys, os +import types + +from . import model +from .error import VerificationError + + +class VGenericEngine(object): + _class_key = 'g' + _gen_python_module = False + + def __init__(self, verifier): + self.verifier = verifier + self.ffi = verifier.ffi + self.export_symbols = [] + self._struct_pending_verification = {} + + def patch_extension_kwds(self, kwds): + # add 'export_symbols' to the dictionary. Note that we add the + # list before filling it. When we fill it, it will thus also show + # up in kwds['export_symbols']. + kwds.setdefault('export_symbols', self.export_symbols) + + def find_module(self, module_name, path, so_suffixes): + for so_suffix in so_suffixes: + basename = module_name + so_suffix + if path is None: + path = sys.path + for dirname in path: + filename = os.path.join(dirname, basename) + if os.path.isfile(filename): + return filename + + def collect_types(self): + pass # not needed in the generic engine + + def _prnt(self, what=''): + self._f.write(what + '\n') + + def write_source_to_f(self): + prnt = self._prnt + # first paste some standard set of lines that are mostly '#include' + prnt(cffimod_header) + # then paste the C source given by the user, verbatim. + prnt(self.verifier.preamble) + # + # call generate_gen_xxx_decl(), for every xxx found from + # ffi._parser._declarations. This generates all the functions. + self._generate('decl') + # + # on Windows, distutils insists on putting init_cffi_xyz in + # 'export_symbols', so instead of fighting it, just give up and + # give it one + if sys.platform == 'win32': + if sys.version_info >= (3,): + prefix = 'PyInit_' + else: + prefix = 'init' + modname = self.verifier.get_module_name() + prnt("void %s%s(void) { }\n" % (prefix, modname)) + + def load_library(self, flags=0): + # import it with the CFFI backend + backend = self.ffi._backend + # needs to make a path that contains '/', on Posix + filename = os.path.join(os.curdir, self.verifier.modulefilename) + module = backend.load_library(filename, flags) + # + # call loading_gen_struct() to get the struct layout inferred by + # the C compiler + self._load(module, 'loading') + + # build the FFILibrary class and instance, this is a module subclass + # because modules are expected to have usually-constant-attributes and + # in PyPy this means the JIT is able to treat attributes as constant, + # which we want. + class FFILibrary(types.ModuleType): + _cffi_generic_module = module + _cffi_ffi = self.ffi + _cffi_dir = [] + def __dir__(self): + return FFILibrary._cffi_dir + library = FFILibrary("") + # + # finally, call the loaded_gen_xxx() functions. This will set + # up the 'library' object. + self._load(module, 'loaded', library=library) + return library + + def _get_declarations(self): + lst = [(key, tp) for (key, (tp, qual)) in + self.ffi._parser._declarations.items()] + lst.sort() + return lst + + def _generate(self, step_name): + for name, tp in self._get_declarations(): + kind, realname = name.split(' ', 1) + try: + method = getattr(self, '_generate_gen_%s_%s' % (kind, + step_name)) + except AttributeError: + raise VerificationError( + "not implemented in verify(): %r" % name) + try: + method(tp, realname) + except Exception as e: + model.attach_exception_info(e, name) + raise + + def _load(self, module, step_name, **kwds): + for name, tp in self._get_declarations(): + kind, realname = name.split(' ', 1) + method = getattr(self, '_%s_gen_%s' % (step_name, kind)) + try: + method(tp, realname, module, **kwds) + except Exception as e: + model.attach_exception_info(e, name) + raise + + def _generate_nothing(self, tp, name): + pass + + def _loaded_noop(self, tp, name, module, **kwds): + pass + + # ---------- + # typedefs: generates no code so far + + _generate_gen_typedef_decl = _generate_nothing + _loading_gen_typedef = _loaded_noop + _loaded_gen_typedef = _loaded_noop + + # ---------- + # function declarations + + def _generate_gen_function_decl(self, tp, name): + assert isinstance(tp, model.FunctionPtrType) + if tp.ellipsis: + # cannot support vararg functions better than this: check for its + # exact type (including the fixed arguments), and build it as a + # constant function pointer (no _cffi_f_%s wrapper) + self._generate_gen_const(False, name, tp) + return + prnt = self._prnt + numargs = len(tp.args) + argnames = [] + for i, type in enumerate(tp.args): + indirection = '' + if isinstance(type, model.StructOrUnion): + indirection = '*' + argnames.append('%sx%d' % (indirection, i)) + context = 'argument of %s' % name + arglist = [type.get_c_name(' %s' % arg, context) + for type, arg in zip(tp.args, argnames)] + tpresult = tp.result + if isinstance(tpresult, model.StructOrUnion): + arglist.insert(0, tpresult.get_c_name(' *r', context)) + tpresult = model.void_type + arglist = ', '.join(arglist) or 'void' + wrappername = '_cffi_f_%s' % name + self.export_symbols.append(wrappername) + if tp.abi: + abi = tp.abi + ' ' + else: + abi = '' + funcdecl = ' %s%s(%s)' % (abi, wrappername, arglist) + context = 'result of %s' % name + prnt(tpresult.get_c_name(funcdecl, context)) + prnt('{') + # + if isinstance(tp.result, model.StructOrUnion): + result_code = '*r = ' + elif not isinstance(tp.result, model.VoidType): + result_code = 'return ' + else: + result_code = '' + prnt(' %s%s(%s);' % (result_code, name, ', '.join(argnames))) + prnt('}') + prnt() + + _loading_gen_function = _loaded_noop + + def _loaded_gen_function(self, tp, name, module, library): + assert isinstance(tp, model.FunctionPtrType) + if tp.ellipsis: + newfunction = self._load_constant(False, tp, name, module) + else: + indirections = [] + base_tp = tp + if (any(isinstance(typ, model.StructOrUnion) for typ in tp.args) + or isinstance(tp.result, model.StructOrUnion)): + indirect_args = [] + for i, typ in enumerate(tp.args): + if isinstance(typ, model.StructOrUnion): + typ = model.PointerType(typ) + indirections.append((i, typ)) + indirect_args.append(typ) + indirect_result = tp.result + if isinstance(indirect_result, model.StructOrUnion): + if indirect_result.fldtypes is None: + raise TypeError("'%s' is used as result type, " + "but is opaque" % ( + indirect_result._get_c_name(),)) + indirect_result = model.PointerType(indirect_result) + indirect_args.insert(0, indirect_result) + indirections.insert(0, ("result", indirect_result)) + indirect_result = model.void_type + tp = model.FunctionPtrType(tuple(indirect_args), + indirect_result, tp.ellipsis) + BFunc = self.ffi._get_cached_btype(tp) + wrappername = '_cffi_f_%s' % name + newfunction = module.load_function(BFunc, wrappername) + for i, typ in indirections: + newfunction = self._make_struct_wrapper(newfunction, i, typ, + base_tp) + setattr(library, name, newfunction) + type(library)._cffi_dir.append(name) + + def _make_struct_wrapper(self, oldfunc, i, tp, base_tp): + backend = self.ffi._backend + BType = self.ffi._get_cached_btype(tp) + if i == "result": + ffi = self.ffi + def newfunc(*args): + res = ffi.new(BType) + oldfunc(res, *args) + return res[0] + else: + def newfunc(*args): + args = args[:i] + (backend.newp(BType, args[i]),) + args[i+1:] + return oldfunc(*args) + newfunc._cffi_base_type = base_tp + return newfunc + + # ---------- + # named structs + + def _generate_gen_struct_decl(self, tp, name): + assert name == tp.name + self._generate_struct_or_union_decl(tp, 'struct', name) + + def _loading_gen_struct(self, tp, name, module): + self._loading_struct_or_union(tp, 'struct', name, module) + + def _loaded_gen_struct(self, tp, name, module, **kwds): + self._loaded_struct_or_union(tp) + + def _generate_gen_union_decl(self, tp, name): + assert name == tp.name + self._generate_struct_or_union_decl(tp, 'union', name) + + def _loading_gen_union(self, tp, name, module): + self._loading_struct_or_union(tp, 'union', name, module) + + def _loaded_gen_union(self, tp, name, module, **kwds): + self._loaded_struct_or_union(tp) + + def _generate_struct_or_union_decl(self, tp, prefix, name): + if tp.fldnames is None: + return # nothing to do with opaque structs + checkfuncname = '_cffi_check_%s_%s' % (prefix, name) + layoutfuncname = '_cffi_layout_%s_%s' % (prefix, name) + cname = ('%s %s' % (prefix, name)).strip() + # + prnt = self._prnt + prnt('static void %s(%s *p)' % (checkfuncname, cname)) + prnt('{') + prnt(' /* only to generate compile-time warnings or errors */') + prnt(' (void)p;') + for fname, ftype, fbitsize, fqual in tp.enumfields(): + if (isinstance(ftype, model.PrimitiveType) + and ftype.is_integer_type()) or fbitsize >= 0: + # accept all integers, but complain on float or double + prnt(' (void)((p->%s) << 1);' % fname) + else: + # only accept exactly the type declared. + try: + prnt(' { %s = &p->%s; (void)tmp; }' % ( + ftype.get_c_name('*tmp', 'field %r'%fname, quals=fqual), + fname)) + except VerificationError as e: + prnt(' /* %s */' % str(e)) # cannot verify it, ignore + prnt('}') + self.export_symbols.append(layoutfuncname) + prnt('intptr_t %s(intptr_t i)' % (layoutfuncname,)) + prnt('{') + prnt(' struct _cffi_aligncheck { char x; %s y; };' % cname) + prnt(' static intptr_t nums[] = {') + prnt(' sizeof(%s),' % cname) + prnt(' offsetof(struct _cffi_aligncheck, y),') + for fname, ftype, fbitsize, fqual in tp.enumfields(): + if fbitsize >= 0: + continue # xxx ignore fbitsize for now + prnt(' offsetof(%s, %s),' % (cname, fname)) + if isinstance(ftype, model.ArrayType) and ftype.length is None: + prnt(' 0, /* %s */' % ftype._get_c_name()) + else: + prnt(' sizeof(((%s *)0)->%s),' % (cname, fname)) + prnt(' -1') + prnt(' };') + prnt(' return nums[i];') + prnt(' /* the next line is not executed, but compiled */') + prnt(' %s(0);' % (checkfuncname,)) + prnt('}') + prnt() + + def _loading_struct_or_union(self, tp, prefix, name, module): + if tp.fldnames is None: + return # nothing to do with opaque structs + layoutfuncname = '_cffi_layout_%s_%s' % (prefix, name) + # + BFunc = self.ffi._typeof_locked("intptr_t(*)(intptr_t)")[0] + function = module.load_function(BFunc, layoutfuncname) + layout = [] + num = 0 + while True: + x = function(num) + if x < 0: break + layout.append(x) + num += 1 + if isinstance(tp, model.StructOrUnion) and tp.partial: + # use the function()'s sizes and offsets to guide the + # layout of the struct + totalsize = layout[0] + totalalignment = layout[1] + fieldofs = layout[2::2] + fieldsize = layout[3::2] + tp.force_flatten() + assert len(fieldofs) == len(fieldsize) == len(tp.fldnames) + tp.fixedlayout = fieldofs, fieldsize, totalsize, totalalignment + else: + cname = ('%s %s' % (prefix, name)).strip() + self._struct_pending_verification[tp] = layout, cname + + def _loaded_struct_or_union(self, tp): + if tp.fldnames is None: + return # nothing to do with opaque structs + self.ffi._get_cached_btype(tp) # force 'fixedlayout' to be considered + + if tp in self._struct_pending_verification: + # check that the layout sizes and offsets match the real ones + def check(realvalue, expectedvalue, msg): + if realvalue != expectedvalue: + raise VerificationError( + "%s (we have %d, but C compiler says %d)" + % (msg, expectedvalue, realvalue)) + ffi = self.ffi + BStruct = ffi._get_cached_btype(tp) + layout, cname = self._struct_pending_verification.pop(tp) + check(layout[0], ffi.sizeof(BStruct), "wrong total size") + check(layout[1], ffi.alignof(BStruct), "wrong total alignment") + i = 2 + for fname, ftype, fbitsize, fqual in tp.enumfields(): + if fbitsize >= 0: + continue # xxx ignore fbitsize for now + check(layout[i], ffi.offsetof(BStruct, fname), + "wrong offset for field %r" % (fname,)) + if layout[i+1] != 0: + BField = ffi._get_cached_btype(ftype) + check(layout[i+1], ffi.sizeof(BField), + "wrong size for field %r" % (fname,)) + i += 2 + assert i == len(layout) + + # ---------- + # 'anonymous' declarations. These are produced for anonymous structs + # or unions; the 'name' is obtained by a typedef. + + def _generate_gen_anonymous_decl(self, tp, name): + if isinstance(tp, model.EnumType): + self._generate_gen_enum_decl(tp, name, '') + else: + self._generate_struct_or_union_decl(tp, '', name) + + def _loading_gen_anonymous(self, tp, name, module): + if isinstance(tp, model.EnumType): + self._loading_gen_enum(tp, name, module, '') + else: + self._loading_struct_or_union(tp, '', name, module) + + def _loaded_gen_anonymous(self, tp, name, module, **kwds): + if isinstance(tp, model.EnumType): + self._loaded_gen_enum(tp, name, module, **kwds) + else: + self._loaded_struct_or_union(tp) + + # ---------- + # constants, likely declared with '#define' + + def _generate_gen_const(self, is_int, name, tp=None, category='const', + check_value=None): + prnt = self._prnt + funcname = '_cffi_%s_%s' % (category, name) + self.export_symbols.append(funcname) + if check_value is not None: + assert is_int + assert category == 'const' + prnt('int %s(char *out_error)' % funcname) + prnt('{') + self._check_int_constant_value(name, check_value) + prnt(' return 0;') + prnt('}') + elif is_int: + assert category == 'const' + prnt('int %s(long long *out_value)' % funcname) + prnt('{') + prnt(' *out_value = (long long)(%s);' % (name,)) + prnt(' return (%s) <= 0;' % (name,)) + prnt('}') + else: + assert tp is not None + assert check_value is None + if category == 'var': + ampersand = '&' + else: + ampersand = '' + extra = '' + if category == 'const' and isinstance(tp, model.StructOrUnion): + extra = 'const *' + ampersand = '&' + prnt(tp.get_c_name(' %s%s(void)' % (extra, funcname), name)) + prnt('{') + prnt(' return (%s%s);' % (ampersand, name)) + prnt('}') + prnt() + + def _generate_gen_constant_decl(self, tp, name): + is_int = isinstance(tp, model.PrimitiveType) and tp.is_integer_type() + self._generate_gen_const(is_int, name, tp) + + _loading_gen_constant = _loaded_noop + + def _load_constant(self, is_int, tp, name, module, check_value=None): + funcname = '_cffi_const_%s' % name + if check_value is not None: + assert is_int + self._load_known_int_constant(module, funcname) + value = check_value + elif is_int: + BType = self.ffi._typeof_locked("long long*")[0] + BFunc = self.ffi._typeof_locked("int(*)(long long*)")[0] + function = module.load_function(BFunc, funcname) + p = self.ffi.new(BType) + negative = function(p) + value = int(p[0]) + if value < 0 and not negative: + BLongLong = self.ffi._typeof_locked("long long")[0] + value += (1 << (8*self.ffi.sizeof(BLongLong))) + else: + assert check_value is None + fntypeextra = '(*)(void)' + if isinstance(tp, model.StructOrUnion): + fntypeextra = '*' + fntypeextra + BFunc = self.ffi._typeof_locked(tp.get_c_name(fntypeextra, name))[0] + function = module.load_function(BFunc, funcname) + value = function() + if isinstance(tp, model.StructOrUnion): + value = value[0] + return value + + def _loaded_gen_constant(self, tp, name, module, library): + is_int = isinstance(tp, model.PrimitiveType) and tp.is_integer_type() + value = self._load_constant(is_int, tp, name, module) + setattr(library, name, value) + type(library)._cffi_dir.append(name) + + # ---------- + # enums + + def _check_int_constant_value(self, name, value): + prnt = self._prnt + if value <= 0: + prnt(' if ((%s) > 0 || (long)(%s) != %dL) {' % ( + name, name, value)) + else: + prnt(' if ((%s) <= 0 || (unsigned long)(%s) != %dUL) {' % ( + name, name, value)) + prnt(' char buf[64];') + prnt(' if ((%s) <= 0)' % name) + prnt(' sprintf(buf, "%%ld", (long)(%s));' % name) + prnt(' else') + prnt(' sprintf(buf, "%%lu", (unsigned long)(%s));' % + name) + prnt(' sprintf(out_error, "%s has the real value %s, not %s",') + prnt(' "%s", buf, "%d");' % (name[:100], value)) + prnt(' return -1;') + prnt(' }') + + def _load_known_int_constant(self, module, funcname): + BType = self.ffi._typeof_locked("char[]")[0] + BFunc = self.ffi._typeof_locked("int(*)(char*)")[0] + function = module.load_function(BFunc, funcname) + p = self.ffi.new(BType, 256) + if function(p) < 0: + error = self.ffi.string(p) + if sys.version_info >= (3,): + error = str(error, 'utf-8') + raise VerificationError(error) + + def _enum_funcname(self, prefix, name): + # "$enum_$1" => "___D_enum____D_1" + name = name.replace('$', '___D_') + return '_cffi_e_%s_%s' % (prefix, name) + + def _generate_gen_enum_decl(self, tp, name, prefix='enum'): + if tp.partial: + for enumerator in tp.enumerators: + self._generate_gen_const(True, enumerator) + return + # + funcname = self._enum_funcname(prefix, name) + self.export_symbols.append(funcname) + prnt = self._prnt + prnt('int %s(char *out_error)' % funcname) + prnt('{') + for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues): + self._check_int_constant_value(enumerator, enumvalue) + prnt(' return 0;') + prnt('}') + prnt() + + def _loading_gen_enum(self, tp, name, module, prefix='enum'): + if tp.partial: + enumvalues = [self._load_constant(True, tp, enumerator, module) + for enumerator in tp.enumerators] + tp.enumvalues = tuple(enumvalues) + tp.partial_resolved = True + else: + funcname = self._enum_funcname(prefix, name) + self._load_known_int_constant(module, funcname) + + def _loaded_gen_enum(self, tp, name, module, library): + for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues): + setattr(library, enumerator, enumvalue) + type(library)._cffi_dir.append(enumerator) + + # ---------- + # macros: for now only for integers + + def _generate_gen_macro_decl(self, tp, name): + if tp == '...': + check_value = None + else: + check_value = tp # an integer + self._generate_gen_const(True, name, check_value=check_value) + + _loading_gen_macro = _loaded_noop + + def _loaded_gen_macro(self, tp, name, module, library): + if tp == '...': + check_value = None + else: + check_value = tp # an integer + value = self._load_constant(True, tp, name, module, + check_value=check_value) + setattr(library, name, value) + type(library)._cffi_dir.append(name) + + # ---------- + # global variables + + def _generate_gen_variable_decl(self, tp, name): + if isinstance(tp, model.ArrayType): + if tp.length_is_unknown(): + prnt = self._prnt + funcname = '_cffi_sizeof_%s' % (name,) + self.export_symbols.append(funcname) + prnt("size_t %s(void)" % funcname) + prnt("{") + prnt(" return sizeof(%s);" % (name,)) + prnt("}") + tp_ptr = model.PointerType(tp.item) + self._generate_gen_const(False, name, tp_ptr) + else: + tp_ptr = model.PointerType(tp) + self._generate_gen_const(False, name, tp_ptr, category='var') + + _loading_gen_variable = _loaded_noop + + def _loaded_gen_variable(self, tp, name, module, library): + if isinstance(tp, model.ArrayType): # int a[5] is "constant" in the + # sense that "a=..." is forbidden + if tp.length_is_unknown(): + funcname = '_cffi_sizeof_%s' % (name,) + BFunc = self.ffi._typeof_locked('size_t(*)(void)')[0] + function = module.load_function(BFunc, funcname) + size = function() + BItemType = self.ffi._get_cached_btype(tp.item) + length, rest = divmod(size, self.ffi.sizeof(BItemType)) + if rest != 0: + raise VerificationError( + "bad size: %r does not seem to be an array of %s" % + (name, tp.item)) + tp = tp.resolve_length(length) + tp_ptr = model.PointerType(tp.item) + value = self._load_constant(False, tp_ptr, name, module) + # 'value' is a which we have to replace with + # a if the N is actually known + if tp.length is not None: + BArray = self.ffi._get_cached_btype(tp) + value = self.ffi.cast(BArray, value) + setattr(library, name, value) + type(library)._cffi_dir.append(name) + return + # remove ptr= from the library instance, and replace + # it by a property on the class, which reads/writes into ptr[0]. + funcname = '_cffi_var_%s' % name + BFunc = self.ffi._typeof_locked(tp.get_c_name('*(*)(void)', name))[0] + function = module.load_function(BFunc, funcname) + ptr = function() + def getter(library): + return ptr[0] + def setter(library, value): + ptr[0] = value + setattr(type(library), name, property(getter, setter)) + type(library)._cffi_dir.append(name) + +cffimod_header = r''' +#include +#include +#include +#include +#include /* XXX for ssize_t on some platforms */ + +/* this block of #ifs should be kept exactly identical between + c/_cffi_backend.c, cffi/vengine_cpy.py, cffi/vengine_gen.py + and cffi/_cffi_include.h */ +#if defined(_MSC_VER) +# include /* for alloca() */ +# if _MSC_VER < 1600 /* MSVC < 2010 */ + typedef __int8 int8_t; + typedef __int16 int16_t; + typedef __int32 int32_t; + typedef __int64 int64_t; + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + typedef unsigned __int64 uint64_t; + typedef __int8 int_least8_t; + typedef __int16 int_least16_t; + typedef __int32 int_least32_t; + typedef __int64 int_least64_t; + typedef unsigned __int8 uint_least8_t; + typedef unsigned __int16 uint_least16_t; + typedef unsigned __int32 uint_least32_t; + typedef unsigned __int64 uint_least64_t; + typedef __int8 int_fast8_t; + typedef __int16 int_fast16_t; + typedef __int32 int_fast32_t; + typedef __int64 int_fast64_t; + typedef unsigned __int8 uint_fast8_t; + typedef unsigned __int16 uint_fast16_t; + typedef unsigned __int32 uint_fast32_t; + typedef unsigned __int64 uint_fast64_t; + typedef __int64 intmax_t; + typedef unsigned __int64 uintmax_t; +# else +# include +# endif +# if _MSC_VER < 1800 /* MSVC < 2013 */ +# ifndef __cplusplus + typedef unsigned char _Bool; +# endif +# endif +# define _cffi_float_complex_t _Fcomplex /* include for it */ +# define _cffi_double_complex_t _Dcomplex /* include for it */ +#else +# include +# if (defined (__SVR4) && defined (__sun)) || defined(_AIX) || defined(__hpux) +# include +# endif +# define _cffi_float_complex_t float _Complex +# define _cffi_double_complex_t double _Complex +#endif +''' diff --git a/venv/lib/python3.12/site-packages/cffi/verifier.py b/venv/lib/python3.12/site-packages/cffi/verifier.py new file mode 100644 index 00000000..e392a2b7 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cffi/verifier.py @@ -0,0 +1,306 @@ +# +# DEPRECATED: implementation for ffi.verify() +# +import sys, os, binascii, shutil, io +from . import __version_verifier_modules__ +from . import ffiplatform +from .error import VerificationError + +if sys.version_info >= (3, 3): + import importlib.machinery + def _extension_suffixes(): + return importlib.machinery.EXTENSION_SUFFIXES[:] +else: + import imp + def _extension_suffixes(): + return [suffix for suffix, _, type in imp.get_suffixes() + if type == imp.C_EXTENSION] + + +if sys.version_info >= (3,): + NativeIO = io.StringIO +else: + class NativeIO(io.BytesIO): + def write(self, s): + if isinstance(s, unicode): + s = s.encode('ascii') + super(NativeIO, self).write(s) + + +class Verifier(object): + + def __init__(self, ffi, preamble, tmpdir=None, modulename=None, + ext_package=None, tag='', force_generic_engine=False, + source_extension='.c', flags=None, relative_to=None, **kwds): + if ffi._parser._uses_new_feature: + raise VerificationError( + "feature not supported with ffi.verify(), but only " + "with ffi.set_source(): %s" % (ffi._parser._uses_new_feature,)) + self.ffi = ffi + self.preamble = preamble + if not modulename: + flattened_kwds = ffiplatform.flatten(kwds) + vengine_class = _locate_engine_class(ffi, force_generic_engine) + self._vengine = vengine_class(self) + self._vengine.patch_extension_kwds(kwds) + self.flags = flags + self.kwds = self.make_relative_to(kwds, relative_to) + # + if modulename: + if tag: + raise TypeError("can't specify both 'modulename' and 'tag'") + else: + key = '\x00'.join(['%d.%d' % sys.version_info[:2], + __version_verifier_modules__, + preamble, flattened_kwds] + + ffi._cdefsources) + if sys.version_info >= (3,): + key = key.encode('utf-8') + k1 = hex(binascii.crc32(key[0::2]) & 0xffffffff) + k1 = k1.lstrip('0x').rstrip('L') + k2 = hex(binascii.crc32(key[1::2]) & 0xffffffff) + k2 = k2.lstrip('0').rstrip('L') + modulename = '_cffi_%s_%s%s%s' % (tag, self._vengine._class_key, + k1, k2) + suffix = _get_so_suffixes()[0] + self.tmpdir = tmpdir or _caller_dir_pycache() + self.sourcefilename = os.path.join(self.tmpdir, modulename + source_extension) + self.modulefilename = os.path.join(self.tmpdir, modulename + suffix) + self.ext_package = ext_package + self._has_source = False + self._has_module = False + + def write_source(self, file=None): + """Write the C source code. It is produced in 'self.sourcefilename', + which can be tweaked beforehand.""" + with self.ffi._lock: + if self._has_source and file is None: + raise VerificationError( + "source code already written") + self._write_source(file) + + def compile_module(self): + """Write the C source code (if not done already) and compile it. + This produces a dynamic link library in 'self.modulefilename'.""" + with self.ffi._lock: + if self._has_module: + raise VerificationError("module already compiled") + if not self._has_source: + self._write_source() + self._compile_module() + + def load_library(self): + """Get a C module from this Verifier instance. + Returns an instance of a FFILibrary class that behaves like the + objects returned by ffi.dlopen(), but that delegates all + operations to the C module. If necessary, the C code is written + and compiled first. + """ + with self.ffi._lock: + if not self._has_module: + self._locate_module() + if not self._has_module: + if not self._has_source: + self._write_source() + self._compile_module() + return self._load_library() + + def get_module_name(self): + basename = os.path.basename(self.modulefilename) + # kill both the .so extension and the other .'s, as introduced + # by Python 3: 'basename.cpython-33m.so' + basename = basename.split('.', 1)[0] + # and the _d added in Python 2 debug builds --- but try to be + # conservative and not kill a legitimate _d + if basename.endswith('_d') and hasattr(sys, 'gettotalrefcount'): + basename = basename[:-2] + return basename + + def get_extension(self): + if not self._has_source: + with self.ffi._lock: + if not self._has_source: + self._write_source() + sourcename = ffiplatform.maybe_relative_path(self.sourcefilename) + modname = self.get_module_name() + return ffiplatform.get_extension(sourcename, modname, **self.kwds) + + def generates_python_module(self): + return self._vengine._gen_python_module + + def make_relative_to(self, kwds, relative_to): + if relative_to and os.path.dirname(relative_to): + dirname = os.path.dirname(relative_to) + kwds = kwds.copy() + for key in ffiplatform.LIST_OF_FILE_NAMES: + if key in kwds: + lst = kwds[key] + if not isinstance(lst, (list, tuple)): + raise TypeError("keyword '%s' should be a list or tuple" + % (key,)) + lst = [os.path.join(dirname, fn) for fn in lst] + kwds[key] = lst + return kwds + + # ---------- + + def _locate_module(self): + if not os.path.isfile(self.modulefilename): + if self.ext_package: + try: + pkg = __import__(self.ext_package, None, None, ['__doc__']) + except ImportError: + return # cannot import the package itself, give up + # (e.g. it might be called differently before installation) + path = pkg.__path__ + else: + path = None + filename = self._vengine.find_module(self.get_module_name(), path, + _get_so_suffixes()) + if filename is None: + return + self.modulefilename = filename + self._vengine.collect_types() + self._has_module = True + + def _write_source_to(self, file): + self._vengine._f = file + try: + self._vengine.write_source_to_f() + finally: + del self._vengine._f + + def _write_source(self, file=None): + if file is not None: + self._write_source_to(file) + else: + # Write our source file to an in memory file. + f = NativeIO() + self._write_source_to(f) + source_data = f.getvalue() + + # Determine if this matches the current file + if os.path.exists(self.sourcefilename): + with open(self.sourcefilename, "r") as fp: + needs_written = not (fp.read() == source_data) + else: + needs_written = True + + # Actually write the file out if it doesn't match + if needs_written: + _ensure_dir(self.sourcefilename) + with open(self.sourcefilename, "w") as fp: + fp.write(source_data) + + # Set this flag + self._has_source = True + + def _compile_module(self): + # compile this C source + tmpdir = os.path.dirname(self.sourcefilename) + outputfilename = ffiplatform.compile(tmpdir, self.get_extension()) + try: + same = ffiplatform.samefile(outputfilename, self.modulefilename) + except OSError: + same = False + if not same: + _ensure_dir(self.modulefilename) + shutil.move(outputfilename, self.modulefilename) + self._has_module = True + + def _load_library(self): + assert self._has_module + if self.flags is not None: + return self._vengine.load_library(self.flags) + else: + return self._vengine.load_library() + +# ____________________________________________________________ + +_FORCE_GENERIC_ENGINE = False # for tests + +def _locate_engine_class(ffi, force_generic_engine): + if _FORCE_GENERIC_ENGINE: + force_generic_engine = True + if not force_generic_engine: + if '__pypy__' in sys.builtin_module_names: + force_generic_engine = True + else: + try: + import _cffi_backend + except ImportError: + _cffi_backend = '?' + if ffi._backend is not _cffi_backend: + force_generic_engine = True + if force_generic_engine: + from . import vengine_gen + return vengine_gen.VGenericEngine + else: + from . import vengine_cpy + return vengine_cpy.VCPythonEngine + +# ____________________________________________________________ + +_TMPDIR = None + +def _caller_dir_pycache(): + if _TMPDIR: + return _TMPDIR + result = os.environ.get('CFFI_TMPDIR') + if result: + return result + filename = sys._getframe(2).f_code.co_filename + return os.path.abspath(os.path.join(os.path.dirname(filename), + '__pycache__')) + +def set_tmpdir(dirname): + """Set the temporary directory to use instead of __pycache__.""" + global _TMPDIR + _TMPDIR = dirname + +def cleanup_tmpdir(tmpdir=None, keep_so=False): + """Clean up the temporary directory by removing all files in it + called `_cffi_*.{c,so}` as well as the `build` subdirectory.""" + tmpdir = tmpdir or _caller_dir_pycache() + try: + filelist = os.listdir(tmpdir) + except OSError: + return + if keep_so: + suffix = '.c' # only remove .c files + else: + suffix = _get_so_suffixes()[0].lower() + for fn in filelist: + if fn.lower().startswith('_cffi_') and ( + fn.lower().endswith(suffix) or fn.lower().endswith('.c')): + try: + os.unlink(os.path.join(tmpdir, fn)) + except OSError: + pass + clean_dir = [os.path.join(tmpdir, 'build')] + for dir in clean_dir: + try: + for fn in os.listdir(dir): + fn = os.path.join(dir, fn) + if os.path.isdir(fn): + clean_dir.append(fn) + else: + os.unlink(fn) + except OSError: + pass + +def _get_so_suffixes(): + suffixes = _extension_suffixes() + if not suffixes: + # bah, no C_EXTENSION available. Occurs on pypy without cpyext + if sys.platform == 'win32': + suffixes = [".pyd"] + else: + suffixes = [".so"] + + return suffixes + +def _ensure_dir(filename): + dirname = os.path.dirname(filename) + if dirname and not os.path.isdir(dirname): + os.makedirs(dirname) diff --git a/venv/lib/python3.12/site-packages/werkzeug-3.1.3.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/click-8.3.1.dist-info/INSTALLER similarity index 100% rename from venv/lib/python3.12/site-packages/werkzeug-3.1.3.dist-info/INSTALLER rename to venv/lib/python3.12/site-packages/click-8.3.1.dist-info/INSTALLER diff --git a/venv/lib/python3.12/site-packages/click-8.3.0.dist-info/METADATA b/venv/lib/python3.12/site-packages/click-8.3.1.dist-info/METADATA similarity index 99% rename from venv/lib/python3.12/site-packages/click-8.3.0.dist-info/METADATA rename to venv/lib/python3.12/site-packages/click-8.3.1.dist-info/METADATA index 534eb572..3f433afb 100644 --- a/venv/lib/python3.12/site-packages/click-8.3.0.dist-info/METADATA +++ b/venv/lib/python3.12/site-packages/click-8.3.1.dist-info/METADATA @@ -1,6 +1,6 @@ Metadata-Version: 2.4 Name: click -Version: 8.3.0 +Version: 8.3.1 Summary: Composable command line interface toolkit Maintainer-email: Pallets Requires-Python: >=3.10 diff --git a/venv/lib/python3.12/site-packages/click-8.3.0.dist-info/RECORD b/venv/lib/python3.12/site-packages/click-8.3.1.dist-info/RECORD similarity index 77% rename from venv/lib/python3.12/site-packages/click-8.3.0.dist-info/RECORD rename to venv/lib/python3.12/site-packages/click-8.3.1.dist-info/RECORD index dc3c2be0..77e5c989 100644 --- a/venv/lib/python3.12/site-packages/click-8.3.0.dist-info/RECORD +++ b/venv/lib/python3.12/site-packages/click-8.3.1.dist-info/RECORD @@ -1,8 +1,8 @@ -click-8.3.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -click-8.3.0.dist-info/METADATA,sha256=P6vpEHZ_MLBt4SO2eB-QaadcOdiznkzaZtJImRo7_V4,2621 -click-8.3.0.dist-info/RECORD,, -click-8.3.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82 -click-8.3.0.dist-info/licenses/LICENSE.txt,sha256=morRBqOU6FO_4h9C9OctWSgZoigF2ZG18ydQKSkrZY0,1475 +click-8.3.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +click-8.3.1.dist-info/METADATA,sha256=XZeBrMAE0ghTE88SjfrSDuSyNCpBPplxJR1tbwD9oZg,2621 +click-8.3.1.dist-info/RECORD,, +click-8.3.1.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82 +click-8.3.1.dist-info/licenses/LICENSE.txt,sha256=morRBqOU6FO_4h9C9OctWSgZoigF2ZG18ydQKSkrZY0,1475 click/__init__.py,sha256=6YyS1aeyknZ0LYweWozNZy0A9nZ_11wmYIhv3cbQrYo,4473 click/__pycache__/__init__.cpython-312.pyc,, click/__pycache__/_compat.cpython-312.pyc,, @@ -22,11 +22,11 @@ click/__pycache__/testing.cpython-312.pyc,, click/__pycache__/types.cpython-312.pyc,, click/__pycache__/utils.cpython-312.pyc,, click/_compat.py,sha256=v3xBZkFbvA1BXPRkFfBJc6-pIwPI7345m-kQEnpVAs4,18693 -click/_termui_impl.py,sha256=ktpAHyJtNkhyR-x64CQFD6xJQI11fTA3qg2AV3iCToU,26799 +click/_termui_impl.py,sha256=rgCb3On8X5A4200rA5L6i13u5iapmFer7sru57Jy6zA,27093 click/_textwrap.py,sha256=BOae0RQ6vg3FkNgSJyOoGzG1meGMxJ_ukWVZKx_v-0o,1400 click/_utils.py,sha256=kZwtTf5gMuCilJJceS2iTCvRvCY-0aN5rJq8gKw7p8g,943 click/_winconsole.py,sha256=_vxUuUaxwBhoR0vUWCNuHY8VUefiMdCIyU2SXPqoF-A,8465 -click/core.py,sha256=1A5T8UoAXklIGPTJ83_DJbVi35ehtJS2FTkP_wQ7es0,128855 +click/core.py,sha256=U6Bfxt8GkjNDqyJ0HqXvluJHtyZ4sY5USAvM1Cdq7mQ,132105 click/decorators.py,sha256=5P7abhJtAQYp_KHgjUvhMv464ERwOzrv2enNknlwHyQ,18461 click/exceptions.py,sha256=8utf8w6V5hJXMnO_ic1FNrtbwuEn1NUu1aDwV8UqnG4,9954 click/formatting.py,sha256=RVfwwr0rwWNpgGr8NaHodPzkIr7_tUyVh_nDdanLMNc,9730 @@ -34,7 +34,7 @@ click/globals.py,sha256=gM-Nh6A4M0HB_SgkaF5M4ncGGMDHc_flHXu9_oh4GEU,1923 click/parser.py,sha256=Q31pH0FlQZEq-UXE_ABRzlygEfvxPTuZbWNh4xfXmzw,19010 click/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 click/shell_completion.py,sha256=Cc4GQUFuWpfQBa9sF5qXeeYI7n3tI_1k6ZdSn4BZbT0,20994 -click/termui.py,sha256=vAYrKC2a7f_NfEIhAThEVYfa__ib5XQbTSCGtJlABRA,30847 +click/termui.py,sha256=hqCEjNndU-nzW08nRAkBaVgfZp_FdCA9KxfIWlKYaMc,31037 click/testing.py,sha256=EERbzcl1br0mW0qBS9EqkknfNfXB9WQEW0ELIpkvuSs,19102 click/types.py,sha256=ek54BNSFwPKsqtfT7jsqcc4WHui8AIFVMKM4oVZIXhc,39927 click/utils.py,sha256=gCUoewdAhA-QLBUUHxrLh4uj6m7T1WjZZMNPvR0I7YA,20257 diff --git a/venv/lib/python3.12/site-packages/click-8.3.0.dist-info/WHEEL b/venv/lib/python3.12/site-packages/click-8.3.1.dist-info/WHEEL similarity index 100% rename from venv/lib/python3.12/site-packages/click-8.3.0.dist-info/WHEEL rename to venv/lib/python3.12/site-packages/click-8.3.1.dist-info/WHEEL diff --git a/venv/lib/python3.12/site-packages/click-8.3.0.dist-info/licenses/LICENSE.txt b/venv/lib/python3.12/site-packages/click-8.3.1.dist-info/licenses/LICENSE.txt similarity index 100% rename from venv/lib/python3.12/site-packages/click-8.3.0.dist-info/licenses/LICENSE.txt rename to venv/lib/python3.12/site-packages/click-8.3.1.dist-info/licenses/LICENSE.txt diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/__init__.cpython-312.pyc index 1b91aa257aeee07fa933e824f918cf00c24b7621..963d814da100ae2a804b0329f0efe295afbf0a7f 100644 GIT binary patch delta 21 bcmaDM|3aSUG%qg~0}!}&nPzU}xx)_tMotDF delta 21 bcmaDM|3aSUG%qg~0}x0of10t8=MFyrNz4Ym diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/_compat.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/_compat.cpython-312.pyc index 89f7289aba491784fb9e934de834c067681a9b24..61b5afb2a9c51586b3d7fb696e3dd76d46e730b8 100644 GIT binary patch delta 23 dcmZqL%h@loFBbz4xOSOlZsaM80{~Gw26_Mh delta 23 dcmZqL%h@loFBbz4NGyMvv5}`N4ggfS2N?hW diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/_termui_impl.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/_termui_impl.cpython-312.pyc index 3732aa3e7262123bbb53ced460717a3cf56a8c5a..3fd159b2acf6b26d39f47e6022de3f096daca752 100644 GIT binary patch delta 313 zcmezUjj`c7Bj0IWUM>b8aP2b9yqdX@PsovxakHXhA2SC>Vp4H_PHD;JZ7$l3jFOWd zxmpN+;bIUFnc#DoU-3G>) zgMI%oGHPuO^54qHXu6pr@Ejwf&fA{D;R%o%6rVn_zAwag(1`O#=X}@Mm2B delta 311 zcmZqp&iMNqBj0IWUM>b8kXZgSV|~U(J|Ra&uFZ;$ea!6aMXAO4Ic1x-yJ#~qicfy* zY9aW9UwDGgWq!r${F)c}H81mPPu6pr#3;1+pj#jt+Yd$thGLn?627{a>NZFC{$pfR z-5l<}m66e4GjHHIMn;>>cY;iq8N)XVhIueD`fiR2&tqgvpL{YRcJhe`p3O#)jBJeg zn@!^LnHlvrFG>2&%D8CroQz&Z#`&AIvJ9CSpG}U*UBUQmGi%;sM#f*8U*^AMX4Khy zy;z!=(S7shvgOPHQH+cNH~1AlFoPL-=1_)%H-zzkmGd(zNa{lslNMAZhz2PH(I9m| P8mtURe~6m=s%jblvrcHa diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/_textwrap.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/_textwrap.cpython-312.pyc index dfdf4f285c29385077a1a567b098f65dec29efcc..63c548e32311c408ae89fcac3f383f2d0522a3bb 100644 GIT binary patch delta 21 bcmew<^izoEG%qg~0}!}&nPzU}$>jt9MkEEY delta 21 bcmew<^izoEG%qg~0}x0of10t8CzlfdNumZ( diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/_utils.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/_utils.cpython-312.pyc index 90c8bb16d26fc4dde4663aaab7bb03b809b3a01a..0408a7abd4f29be4141d42f3a3913a81c811e0f7 100644 GIT binary patch delta 21 bcmdnMxq*}CG%qg~0}!}&nPzU}S;7JUInM<^ delta 21 bcmdnMxq*}CG%qg~0}x0of10t8X9)`cJxvAQ diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/_winconsole.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/_winconsole.cpython-312.pyc index 9e6279f52ce8dd8c1e0b3f3a7cd2f3c26068eeab..aaf2a4000ed4ff737c6867a11ba9099ddd829953 100644 GIT binary patch delta 21 bcmewr{VSU1G%qg~0}!}&nPzU}d8Z2iQb-2t delta 21 bcmewr{VSU1G%qg~0}x0of10t8=bbJ9RmKO3 diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/core.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/core.cpython-312.pyc index c4f41946e97ccc5db9c25a1267d9e1fd1b0cb685..b41735c259052ab19dcef917adc602805b0d0a94 100644 GIT binary patch delta 11957 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

Y23i%u8*cq(E5?hBQdM z4872a4uE4t_TAiK2hPf(khrUwCe@9pM)1*a{-R29je}&o2!4 zt}@;>31c{Q5l`T{o#uH0K`sn)2z!_$zKTYlB=EF&`!Wm&rCPq+j2(AGnZI9#B)`>! zxP}Ie6av~f0piQz2?5!Oa|p;m9!GFwhGf=gzHJ=evC`8C%6Bb63)Tk&_q+D~41a>a zKz+t#4Fa_?FT|XyuoJ#@{eBfLK?s{Ka+xyKiDhhPCScw9muoO)I9p7;+)M+^>u=QJ zi$`2zwTkZupCW4^OAIUg*D=()C7!zuH?b5aZs4cT(c<+R5GNV^U7y{6`Ori~yDo^6 z|4u8v+q3*V*usE1n>zUHCR5Af4ft?)DPsAyYVF^!!(EAU+Y9pD_2yi8er*L>c56k^ zLR%qLkBiWdN#XvkzjuM36#pM6C^WFVGcNpXrak_dsJpk9FMhfS{h~Rj@lfj>)+G50 z>u=Cu;CS6jm~O!!X@tMXzXjz{e?Us|4+Q=#g{WB%~2y-R}^S z$p3zidKm%C{)Cra_(UrW%#6b>jQJ+e0b~-GNPq&9UZ4B!p+3H|961Gx44u>uVnl&XdNS%?Btq^# zLbJ+!2Sm%fI_#9)K;2pkk^4N~UB6GWw)*5OZbxzu81 zJVBFr6U-ie`${HcE>h1UJidIq{j0*;ONz!1@Y3cv~ delta 11015 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 Zab(2g5XfHk=ZhNpd(mwc&7Gv!{{=5Ra`6BF diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/decorators.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/decorators.cpython-312.pyc index c6a9cac4a3a3c5aa70af8b20bb62d1020117d880..afefcfb9035adb80aa3e2a285de417528e0ae774 100644 GIT binary patch delta 23 dcmeylhVkbbMxN8Wyj%=G;M!%HxsfL~3;<$f2Q>fy delta 23 dcmeylhVkbbMxN8Wyj%=GAhG;u#zvmpFaTxa2h;!n diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/exceptions.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/exceptions.cpython-312.pyc index d811fc861b505c0f3e8c4ac1cc045a7785231c97..49bbff03b4ea90d17f7fc744d74d39d165f4ac25 100644 GIT binary patch delta 21 bcmdl{yrY=sG%qg~0}!}&nPzU}Sz`$ROArQO delta 21 bcmdl{yrY=sG%qg~0}x0of10t8XN@HQPL2lv diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/formatting.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/formatting.cpython-312.pyc index 90ead78d02b39f3aff0377d501dda421a6ee3af3..5cfd1af695e42bb1836bd425e1c52418a1f80c96 100644 GIT binary patch delta 21 bcmaEn^&*SsG%qg~0}!}&nPzU}i7^ELP?iQ; delta 21 bcmaEn^&*SsG%qg~0}x0of10t8C&m;2R1^mK diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/globals.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/globals.cpython-312.pyc index c2ffcc841c958363736d7b30dc5fa8842def3d02..5f008baece9f652b662e8c42a312d140c9dad7f0 100644 GIT binary patch delta 21 bcmbO#K2@COG%qg~0}!}&nPzU}>Es3gH+%&W delta 21 bcmbO#K2@COG%qg~0}x0of10t8r;{51I{F2% diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/parser.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/parser.cpython-312.pyc index a1b5350affc1fdb363fec43b966abab91efbb6c8..16870ef903ecae5795d65dc90071f020fbaaf48f 100644 GIT binary patch delta 23 dcmcaLpYhgwMxN8Wyj%=G;M!%Hxsm6bKLA_S2R8r! delta 23 dcmcaLpYhgwMxN8Wyj%=GAhG;u#zvlV{s3Q82i5=p diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/shell_completion.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/shell_completion.cpython-312.pyc index 08a659ec89d44ffd364dc0db9c85977a81b3e7ef..176661e2a6de3e6f98bd3cf6013ee1b3ce797064 100644 GIT binary patch delta 23 dcmZ3vjdA5RMxN8Wyj%=G;M!%HxsgXU8UR)F23`OF delta 23 dcmZ3vjdA5RMxN8Wyj%=GAhG;u#zr35XaHGq2K@j4 diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/termui.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/termui.cpython-312.pyc index 39cacf5d6483778cb95f9b206fb1fe2f8a9845b8..8abb546134deec6f3f7285769ffed4743906052c 100644 GIT binary patch delta 3304 zcmbVOeQZo7nfi(QS{2ReF1KCgzrV|M zTj%nX&fxWDeK3=b4ynO-CYVeG6RG5g%7W2!T202(SWrs^wNW*gW~s5X#_#ep=sr&e zrO)z>-j!W35~BeUvwhF@wEct~rz3yqO9!+FbLuP6wo6y*He!qVsP3yXUfYKPR4Xh8t>SS1Xc}{xTQChhs zfwy>aa!kg(DX#y%@}j2nK0)|QU@1QpSVL>MvvJ9WL%eS6+3N6iPVJ3 z3@M|rc$$3^mHh~q5E}$gD%eKkUji_s=wOOzY#0Tb5%A>1_OcQFv*wn%ER0`-|I7lw zZgOQEJs$FFPh(Gq{%Y`DJ6+6w(efzG@kr|(fCpPc@;Q+tEF7gX#BPqZu24}rGwBki3xp*?#HK&det zaZP2>!Gy{lM=5&x>I^qX$F^riQxn^Vv&kWLkf+xAI}f9U84*|pOSX9Xif^_WZEz|9 zU(^SdU9Ojp;`nh0?Wa%hwe9|H5ote4XA!KJW>$8#2c?S;usD=jb`-glp&4dradl`)m2?n%q~Fr}P<0>;RB^EN z@M66HhHQ2Zrt{NVpOMajNY?lCjoPKxf$r4{cOSCXh=tsZE}|~>@!8>lK$gL4DK^^NWwc`m z&+|nCol7iZ=qsXr|A_hv2yY?0%|`|nJ1wV^`u>4Kj*kB{0?UX(jf&wo)KV0ZhiH4y z{Z9xN`PYV*1U|)wy(4URemGE?;;jDc@C#+Dh5LJ;SIP`~mL=F<(e`}=lxE5Ra9QR_ z$%!ab+$g&QQn#+(zq)MY-_TS4c8K0pV`ge~@P za}tJP0TKQA^snq~Pr?{GLM)zS$54lTz??=zHM;~qrnN{{LDR=y(N57Q|3P+B(?@9e zWq|3LEm0O7>zhie!CWwsO2WN5Fz%D1XmE`;jfZOfiF5!#c*XdZ@eZo;-Q%sdi3WpZ zXLcE(7bPXwotBRo4Tg#o4zqvp^W!aD8B6=WqX=IS4{HSu_Pe}mV#B@S_I->o(7-6e z)Ro2NZNs+B@Sq&was5G zMk~#K1nq@ol&_i$h91W8_YodJm_Y~uL?TRvm$H-{KO zu!H>=`1M61!!uVZBi7TW1kCGu4Yeov>r*%H`YlpBrtuOovCF3{_OiuZvDm8?J8iKu z7Wr!c!Hf8~1iLA{X;PcZ; zrRWvnBrfps9U<>q)`V{(6B9=H+8w@KWw1WQWv*R_KjDg|66noNCNlVhJ8E$XMTTAM zV;BfC--vQN2X-Tou(`5#xUr+vys?B!xzFyp5l`WWAmdz7WaYpVTR05glLC&#dPLh3 zxxbGx!GtxInnJ@$nb~nlieB;cGb?JkkzbPP+xnr(p~xa(sH%Tp7_qmd;}8J}|1j72 zg`KG0g76T+lK_USO{L?>5w;r#&Y@INgR7W`53({e5qmJm2Os!0-NVm5uu6UgrN80s zo&NjqcMikf9)=?|uChcb8Z*E1PoV<8qwFjKejM3(go_B+#+hi~qLGTmi!D@q=}RBz ztB&rmR4kiNZ)bizzw<@9D@Exhdd^u@unTsfs-YkWR**@pw@_|!2MM$kDopMqm7zkV z$z7y&MWM>%ZsPG3s!d))7WoRbCa)t-cVUsqJt+5@yq?IFmj`|3VAM`-T5_(=cdnrc z|7yI2sx{Ot@`Cq;Dt|$OH{|51DU>5~;A|DhoEWnbnG0t^zk-{{&db%vdTsix-#I4z E8^5wXc>n+a delta 3126 zcma)83v5%@8NSE%y>T4du^T%McHKC2Ubkb*s8c{8-FT!XbgP>w8DmWXvlHjRj2({c zya=RJsfx70O8-fe(#Kk8qMxBE70M!YTxxV zG4@+H;#~o!{GQT&cASy11ZTZozcG?JrLdH<3JpTe21;cUbHK{V>ZS!2iXJl+OzBj? zoaFo%<6F=~E#a;B;$8w5LP6o#93LKmJ(YQ79}2Pw_*Z2xa42vv@MPz#yXHs96BTpz zd#)>z$NP9Etlaki+~bRs)UK3XziV9xGQK~ut+1)8-M@`OwopiUG@i;QF>*4SPv!V` z;CR(Wwq2XA>Sb&czTsa7*Q4GB<;Iev{*o#AW$SS>y5hs6T#3#ksUL0Ny#G#kb*l&7 z^WVoRV0EBoL%vj+GI9HqHEYYc7j2K2;4qc}c=|Jid04@>X2!1mCJ<%fa?gHL8>-Qkzy6OlRls`nMi+xU`s*0cPa z=kBwfyJtPk=R7TEJuS1IR(LZsR!&Pfyw0*dD4hxh*00tcta;bWs-U&*AlnUR>h44I z)Q6Stq1mUBc5nT1#`eMXhGy3UN{&gYv!JAs>A~C(Xbq9Fr%=dgtN9Ulw?UPkLs|{~ z#)yy1`7;Qrt6&|@C3!rNO7dsnM8oZ_f)fQhwq=JhW7`Ju={`8!;E#MJ6nbUpK!rZ{ z@HG^a<`59kE;i0rRzFYUX9*4xJV5{iKO}eo;%lo`iQtdZ_%MNcfAfWoF zZmtK#Y=ev<1pjNLGiz&YMi%YbYiqkr0Sd(LC7>h=a$hPL=lm%0Yg*%m7*%nsZKZq? z1s`aywat|KcOq4-d>y`c8$v;ekBlVK{rn_!bp1r0Ly@GJzd2-S2maO*m9L`k6$vvk5wF#$7nO;{#SylFgH-+zljgOCTzep=wF)RjMhB(Ys(tp{&&=?mV!CY zQ~V!fTO=T9)`CFG(sxQp#qkIZ@%K<_)gq}imKF14Dx!RVOf~8ExEFcWgmA-?lTyH4 z@Z88`y>R%D92gh2jBNGNk(d*-YhT^@OLP5;NDFc{*FT)*KPDaZ1AQ71Rqqy1m#>xo zjhYz5@~2q>0;BE0kI3@t2$QakIFIk>nixrjrb4kyI>{68@TgBoki{qP%xKv4G109A z!Yv7Jk2bM^C&ubliAK{#8qsZpTC^O&zGk@S!EmU`(J22Edd6y7a)$Q*M-jdv9-S53 z*vH^!V;eS$+b3alI2jZyl)8F{euZDA&~#B3Z1^o%T$i}mB9OSArWhg+-GPPj+?TqNq+sjIq;q&1Q^N^vArn!9 zKDe@bC!2w;Jeb)1OZzzrvSkuIb;f=@et_?7YoUGz)ggv8*TyR#YUn zw^*WctK_dOmg?Llm4%CCI=4&iFBcs;cS;^#v0Udaslr!u>-;v!<}6m|+(UA&&MPIQ zY(C-B2MM!ud(HXVeCL-1>CfdYI$D@h busybox. resolve() causes them to misbehave. (eg. less becomes busybox) + cmd_path = Path(cmd_filepath).absolute() cmd_name = cmd_path.name import subprocess @@ -450,7 +453,7 @@ def _pipepager( c = subprocess.Popen( [str(cmd_path)] + cmd_params, - shell=True, + shell=False, stdin=subprocess.PIPE, env=env, errors="replace", @@ -520,8 +523,10 @@ def _tempfilepager( cmd_filepath = shutil.which(cmd) if not cmd_filepath: return False - # Resolves symlinks and produces a normalized absolute path string. - cmd_path = Path(cmd_filepath).resolve() + # Produces a normalized absolute path string. + # multi-call binaries such as busybox derive their identity from the symlink + # less -> busybox. resolve() causes them to misbehave. (eg. less becomes busybox) + cmd_path = Path(cmd_filepath).absolute() import subprocess import tempfile diff --git a/venv/lib/python3.12/site-packages/click/core.py b/venv/lib/python3.12/site-packages/click/core.py index ff2f74ad..57f549c7 100644 --- a/venv/lib/python3.12/site-packages/click/core.py +++ b/venv/lib/python3.12/site-packages/click/core.py @@ -799,8 +799,18 @@ class Context: for param in other_cmd.params: if param.name not in kwargs and param.expose_value: + default_value = param.get_default(ctx) + # We explicitly hide the :attr:`UNSET` value to the user, as we + # choose to make it an implementation detail. And because ``invoke`` + # has been designed as part of Click public API, we return ``None`` + # instead. Refs: + # https://github.com/pallets/click/issues/3066 + # https://github.com/pallets/click/issues/3065 + # https://github.com/pallets/click/pull/3068 + if default_value is UNSET: + default_value = None kwargs[param.name] = param.type_cast_value( # type: ignore - ctx, param.get_default(ctx) + ctx, default_value ) # Track all kwargs as params, so that forward() will pass @@ -1216,6 +1226,19 @@ class Command: for param in iter_params_for_processing(param_order, self.get_params(ctx)): _, args = param.handle_parse_result(ctx, opts, args) + # We now have all parameters' values into `ctx.params`, but the data may contain + # the `UNSET` sentinel. + # Convert `UNSET` to `None` to ensure that the user doesn't see `UNSET`. + # + # Waiting until after the initial parse to convert allows us to treat `UNSET` + # more like a missing value when multiple params use the same name. + # Refs: + # https://github.com/pallets/click/issues/3071 + # https://github.com/pallets/click/pull/3079 + for name, value in ctx.params.items(): + if value is UNSET: + ctx.params[name] = None + if args and not ctx.allow_extra_args and not ctx.resilient_parsing: ctx.fail( ngettext( @@ -2144,7 +2167,7 @@ class Parameter: self.nargs = nargs self.multiple = multiple self.expose_value = expose_value - self.default = default + self.default: t.Any | t.Callable[[], t.Any] | None = default self.is_eager = is_eager self.metavar = metavar self.envvar = envvar @@ -2315,7 +2338,7 @@ class Parameter: """Convert and validate a value against the parameter's :attr:`type`, :attr:`multiple`, and :attr:`nargs`. """ - if value in (None, UNSET): + if value is None: if self.multiple or self.nargs == -1: return () else: @@ -2398,7 +2421,16 @@ class Parameter: :meta private: """ - value = self.type_cast_value(ctx, value) + # shelter `type_cast_value` from ever seeing an `UNSET` value by handling the + # cases in which `UNSET` gets special treatment explicitly at this layer + # + # Refs: + # https://github.com/pallets/click/issues/3069 + if value is UNSET: + if self.multiple or self.nargs == -1: + value = () + else: + value = self.type_cast_value(ctx, value) if self.required and self.value_is_missing(value): raise MissingParameter(ctx=ctx, param=self) @@ -2408,7 +2440,37 @@ class Parameter: # to None. if value is UNSET: value = None - value = self.callback(ctx, self, value) + + # Search for parameters with UNSET values in the context. + unset_keys = {k: None for k, v in ctx.params.items() if v is UNSET} + # No UNSET values, call the callback as usual. + if not unset_keys: + value = self.callback(ctx, self, value) + + # Legacy case: provide a temporarily manipulated context to the callback + # to hide UNSET values as None. + # + # Refs: + # https://github.com/pallets/click/issues/3136 + # https://github.com/pallets/click/pull/3137 + else: + # Add another layer to the context stack to clearly hint that the + # context is temporarily modified. + with ctx: + # Update the context parameters to replace UNSET with None. + ctx.params.update(unset_keys) + # Feed these fake context parameters to the callback. + value = self.callback(ctx, self, value) + # Restore the UNSET values in the context parameters. + ctx.params.update( + { + k: UNSET + for k in unset_keys + # Only restore keys that are present and still None, in case + # the callback modified other parameters. + if k in ctx.params and ctx.params[k] is None + } + ) return value @@ -2528,17 +2590,14 @@ class Parameter: # We skip adding the value if it was previously set by another parameter # targeting the same variable name. This prevents parameters competing for # the same name to override each other. - and self.name not in ctx.params + and (self.name not in ctx.params or ctx.params[self.name] is UNSET) ): # Click is logically enforcing that the name is None if the parameter is # not to be exposed. We still assert it here to please the type checker. assert self.name is not None, ( f"{self!r} parameter's name should not be None when exposing value." ) - # Normalize UNSET values to None, as we're about to pass them to the - # command function and move them to the pure-Python realm of user-written - # code. - ctx.params[self.name] = value if value is not UNSET else None + ctx.params[self.name] = value return value, args @@ -2733,7 +2792,7 @@ class Option(Parameter): if type is None: # A flag without a flag_value is a boolean flag. if flag_value is UNSET: - self.type = types.BoolParamType() + self.type: types.ParamType = types.BoolParamType() # If the flag value is a boolean, use BoolParamType. elif isinstance(flag_value, bool): self.type = types.BoolParamType() @@ -3236,13 +3295,22 @@ class Option(Parameter): return value, source - def type_cast_value(self, ctx: Context, value: t.Any) -> t.Any: - if self.is_flag and not self.required: - if value is UNSET: - if self.is_bool_flag: - # If the flag is a boolean flag, we return False if it is not set. - value = False - return super().type_cast_value(ctx, value) + def process_value(self, ctx: Context, value: t.Any) -> t.Any: + # process_value has to be overridden on Options in order to capture + # `value == UNSET` cases before `type_cast_value()` gets called. + # + # Refs: + # https://github.com/pallets/click/issues/3069 + if self.is_flag and not self.required and self.is_bool_flag and value is UNSET: + value = False + + if self.callback is not None: + value = self.callback(ctx, self, value) + + return value + + # in the normal case, rely on Parameter.process_value + return super().process_value(ctx, value) class Argument(Parameter): diff --git a/venv/lib/python3.12/site-packages/click/termui.py b/venv/lib/python3.12/site-packages/click/termui.py index dcbb2221..2e98a077 100644 --- a/venv/lib/python3.12/site-packages/click/termui.py +++ b/venv/lib/python3.12/site-packages/click/termui.py @@ -119,6 +119,9 @@ def prompt( show_choices is true and text is "Group by" then the prompt will be "Group by (day, week): ". + .. versionchanged:: 8.3.1 + A space is no longer appended to the prompt. + .. versionadded:: 8.0 ``confirmation_prompt`` can be a custom string. @@ -138,10 +141,10 @@ def prompt( try: # Write the prompt separately so that we get nice # coloring through colorama on Windows - echo(text.rstrip(" "), nl=False, err=err) - # Echo a space to stdout to work around an issue where + echo(text[:-1], nl=False, err=err) + # Echo the last character to stdout to work around an issue where # readline causes backspace to clear the whole line. - return f(" ") + return f(text[-1:]) except (KeyboardInterrupt, EOFError): # getpass doesn't print a newline if the user aborts input with ^C. # Allegedly this behavior is inherited from getpass(3). @@ -214,6 +217,9 @@ def confirm( :param err: if set to true the file defaults to ``stderr`` instead of ``stdout``, the same as with echo. + .. versionchanged:: 8.3.1 + A space is no longer appended to the prompt. + .. versionchanged:: 8.0 Repeat until input is given if ``default`` is ``None``. @@ -231,10 +237,10 @@ def confirm( try: # Write the prompt separately so that we get nice # coloring through colorama on Windows - echo(prompt.rstrip(" "), nl=False, err=err) - # Echo a space to stdout to work around an issue where + echo(prompt[:-1], nl=False, err=err) + # Echo the last character to stdout to work around an issue where # readline causes backspace to clear the whole line. - value = visible_prompt_func(" ").lower().strip() + value = visible_prompt_func(prompt[-1:]).lower().strip() except (KeyboardInterrupt, EOFError): raise Abort() from None if value in ("y", "yes"): diff --git a/venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/INSTALLER new file mode 100644 index 00000000..a1b589e3 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/METADATA b/venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/METADATA new file mode 100644 index 00000000..7b07ee7b --- /dev/null +++ b/venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/METADATA @@ -0,0 +1,139 @@ +Metadata-Version: 2.4 +Name: cryptography +Version: 46.0.3 +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Natural Language :: English +Classifier: Operating System :: MacOS :: MacOS X +Classifier: Operating System :: POSIX +Classifier: Operating System :: POSIX :: BSD +Classifier: Operating System :: POSIX :: Linux +Classifier: Operating System :: Microsoft :: Windows +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Programming Language :: Python :: Free Threading :: 3 - Stable +Classifier: Topic :: Security :: Cryptography +Requires-Dist: cffi>=1.14 ; python_full_version == '3.8.*' and platform_python_implementation != 'PyPy' +Requires-Dist: cffi>=2.0.0 ; python_full_version >= '3.9' and platform_python_implementation != 'PyPy' +Requires-Dist: typing-extensions>=4.13.2 ; python_full_version < '3.11' +Requires-Dist: bcrypt>=3.1.5 ; extra == 'ssh' +Requires-Dist: nox[uv]>=2024.4.15 ; extra == 'nox' +Requires-Dist: cryptography-vectors==46.0.3 ; extra == 'test' +Requires-Dist: pytest>=7.4.0 ; extra == 'test' +Requires-Dist: pytest-benchmark>=4.0 ; extra == 'test' +Requires-Dist: pytest-cov>=2.10.1 ; extra == 'test' +Requires-Dist: pytest-xdist>=3.5.0 ; extra == 'test' +Requires-Dist: pretend>=0.7 ; extra == 'test' +Requires-Dist: certifi>=2024 ; extra == 'test' +Requires-Dist: pytest-randomly ; extra == 'test-randomorder' +Requires-Dist: sphinx>=5.3.0 ; extra == 'docs' +Requires-Dist: sphinx-rtd-theme>=3.0.0 ; extra == 'docs' +Requires-Dist: sphinx-inline-tabs ; extra == 'docs' +Requires-Dist: pyenchant>=3 ; extra == 'docstest' +Requires-Dist: readme-renderer>=30.0 ; extra == 'docstest' +Requires-Dist: sphinxcontrib-spelling>=7.3.1 ; extra == 'docstest' +Requires-Dist: build>=1.0.0 ; extra == 'sdist' +Requires-Dist: ruff>=0.11.11 ; extra == 'pep8test' +Requires-Dist: mypy>=1.14 ; extra == 'pep8test' +Requires-Dist: check-sdist ; extra == 'pep8test' +Requires-Dist: click>=8.0.1 ; extra == 'pep8test' +Provides-Extra: ssh +Provides-Extra: nox +Provides-Extra: test +Provides-Extra: test-randomorder +Provides-Extra: docs +Provides-Extra: docstest +Provides-Extra: sdist +Provides-Extra: pep8test +License-File: LICENSE +License-File: LICENSE.APACHE +License-File: LICENSE.BSD +Summary: cryptography is a package which provides cryptographic recipes and primitives to Python developers. +Author-email: The Python Cryptographic Authority and individual contributors +License-Expression: Apache-2.0 OR BSD-3-Clause +Requires-Python: >=3.8, !=3.9.0, !=3.9.1 +Description-Content-Type: text/x-rst; charset=UTF-8 +Project-URL: homepage, https://github.com/pyca/cryptography +Project-URL: documentation, https://cryptography.io/ +Project-URL: source, https://github.com/pyca/cryptography/ +Project-URL: issues, https://github.com/pyca/cryptography/issues +Project-URL: changelog, https://cryptography.io/en/latest/changelog/ + +pyca/cryptography +================= + +.. image:: https://img.shields.io/pypi/v/cryptography.svg + :target: https://pypi.org/project/cryptography/ + :alt: Latest Version + +.. image:: https://readthedocs.org/projects/cryptography/badge/?version=latest + :target: https://cryptography.io + :alt: Latest Docs + +.. image:: https://github.com/pyca/cryptography/actions/workflows/ci.yml/badge.svg + :target: https://github.com/pyca/cryptography/actions/workflows/ci.yml?query=branch%3Amain + +``cryptography`` is a package which provides cryptographic recipes and +primitives to Python developers. Our goal is for it to be your "cryptographic +standard library". It supports Python 3.8+ and PyPy3 7.3.11+. + +``cryptography`` includes both high level recipes and low level interfaces to +common cryptographic algorithms such as symmetric ciphers, message digests, and +key derivation functions. For example, to encrypt something with +``cryptography``'s high level symmetric encryption recipe: + +.. code-block:: pycon + + >>> from cryptography.fernet import Fernet + >>> # Put this somewhere safe! + >>> key = Fernet.generate_key() + >>> f = Fernet(key) + >>> token = f.encrypt(b"A really secret message. Not for prying eyes.") + >>> token + b'...' + >>> f.decrypt(token) + b'A really secret message. Not for prying eyes.' + +You can find more information in the `documentation`_. + +You can install ``cryptography`` with: + +.. code-block:: console + + $ pip install cryptography + +For full details see `the installation documentation`_. + +Discussion +~~~~~~~~~~ + +If you run into bugs, you can file them in our `issue tracker`_. + +We maintain a `cryptography-dev`_ mailing list for development discussion. + +You can also join ``#pyca`` on ``irc.libera.chat`` to ask questions or get +involved. + +Security +~~~~~~~~ + +Need to report a security issue? Please consult our `security reporting`_ +documentation. + + +.. _`documentation`: https://cryptography.io/ +.. _`the installation documentation`: https://cryptography.io/en/latest/installation/ +.. _`issue tracker`: https://github.com/pyca/cryptography/issues +.. _`cryptography-dev`: https://mail.python.org/mailman/listinfo/cryptography-dev +.. _`security reporting`: https://cryptography.io/en/latest/security/ + diff --git a/venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/RECORD b/venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/RECORD new file mode 100644 index 00000000..9099b5bc --- /dev/null +++ b/venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/RECORD @@ -0,0 +1,180 @@ +cryptography-46.0.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +cryptography-46.0.3.dist-info/METADATA,sha256=bx2LyCEmOVUC8FH5hsGEZewWPiZoIIYTq0hM9mu9r4s,5748 +cryptography-46.0.3.dist-info/RECORD,, +cryptography-46.0.3.dist-info/WHEEL,sha256=jkxrJemT4jZpYSr-u9xPalWqoow8benNmiXfjKXLlJw,108 +cryptography-46.0.3.dist-info/licenses/LICENSE,sha256=Pgx8CRqUi4JTO6mP18u0BDLW8amsv4X1ki0vmak65rs,197 +cryptography-46.0.3.dist-info/licenses/LICENSE.APACHE,sha256=qsc7MUj20dcRHbyjIJn2jSbGRMaBOuHk8F9leaomY_4,11360 +cryptography-46.0.3.dist-info/licenses/LICENSE.BSD,sha256=YCxMdILeZHndLpeTzaJ15eY9dz2s0eymiSMqtwCPtPs,1532 +cryptography/__about__.py,sha256=QCLxNH_Abbygdc9RQGpUmrK14Wp3Cl_SEiB2byLwyxo,445 +cryptography/__init__.py,sha256=mthuUrTd4FROCpUYrTIqhjz6s6T9djAZrV7nZ1oMm2o,364 +cryptography/__pycache__/__about__.cpython-312.pyc,, +cryptography/__pycache__/__init__.cpython-312.pyc,, +cryptography/__pycache__/exceptions.cpython-312.pyc,, +cryptography/__pycache__/fernet.cpython-312.pyc,, +cryptography/__pycache__/utils.cpython-312.pyc,, +cryptography/exceptions.py,sha256=835EWILc2fwxw-gyFMriciC2SqhViETB10LBSytnDIc,1087 +cryptography/fernet.py,sha256=3Cvxkh0KJSbX8HbnCHu4wfCW7U0GgfUA3v_qQ8a8iWc,6963 +cryptography/hazmat/__init__.py,sha256=5IwrLWrVp0AjEr_4FdWG_V057NSJGY_W4egNNsuct0g,455 +cryptography/hazmat/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/__pycache__/_oid.cpython-312.pyc,, +cryptography/hazmat/_oid.py,sha256=p8ThjwJB56Ci_rAIrjyJ1f8VjgD6e39es2dh8JIUBOw,17240 +cryptography/hazmat/asn1/__init__.py,sha256=hS_EWx3wVvZzfbCcNV8hzcDnyMM8H-BhIoS1TipUosk,293 +cryptography/hazmat/asn1/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/asn1/__pycache__/asn1.cpython-312.pyc,, +cryptography/hazmat/asn1/asn1.py,sha256=eMEThEXa19LQjcyVofgHsW6tsZnjp3ddH7bWkkcxfLM,3860 +cryptography/hazmat/backends/__init__.py,sha256=O5jvKFQdZnXhKeqJ-HtulaEL9Ni7mr1mDzZY5kHlYhI,361 +cryptography/hazmat/backends/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/backends/openssl/__init__.py,sha256=p3jmJfnCag9iE5sdMrN6VvVEu55u46xaS_IjoI0SrmA,305 +cryptography/hazmat/backends/openssl/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-312.pyc,, +cryptography/hazmat/backends/openssl/backend.py,sha256=tV5AxBoFJ2GfA0DMWSY-0TxQJrpQoexzI9R4Kybb--4,10215 +cryptography/hazmat/bindings/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/bindings/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/bindings/_rust.abi3.so,sha256=4bUN0J2p_ZQMdgmAc9eL0VMj_lgbTsHUmX4doekVIJ4,12955672 +cryptography/hazmat/bindings/_rust/__init__.pyi,sha256=KhqLhXFPArPzzJ7DYO9Fl8FoXB_BagAd_r4Dm_Ze9Xo,1257 +cryptography/hazmat/bindings/_rust/_openssl.pyi,sha256=mpNJLuYLbCVrd5i33FBTmWwL_55Dw7JPkSLlSX9Q7oI,230 +cryptography/hazmat/bindings/_rust/asn1.pyi,sha256=BrGjC8J6nwuS-r3EVcdXJB8ndotfY9mbQYOfpbPG0HA,354 +cryptography/hazmat/bindings/_rust/declarative_asn1.pyi,sha256=2ECFmYue1EPkHEE2Bm7aLwkjB0mSUTpr23v9MN4pri4,892 +cryptography/hazmat/bindings/_rust/exceptions.pyi,sha256=exXr2xw_0pB1kk93cYbM3MohbzoUkjOms1ZMUi0uQZE,640 +cryptography/hazmat/bindings/_rust/ocsp.pyi,sha256=VPVWuKHI9EMs09ZLRYAGvR0Iz0mCMmEzXAkgJHovpoM,4020 +cryptography/hazmat/bindings/_rust/openssl/__init__.pyi,sha256=iOAMDyHoNwwCSZfZzuXDr64g4GpGUeDgEN-LjXqdrBM,1522 +cryptography/hazmat/bindings/_rust/openssl/aead.pyi,sha256=4Nddw6-ynzIB3w2W86WvkGKTLlTDk_6F5l54RHCuy3E,2688 +cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi,sha256=LhPzHWSXJq4grAJXn6zSvSSdV-aYIIscHDwIPlJGGPs,1315 +cryptography/hazmat/bindings/_rust/openssl/cmac.pyi,sha256=nPH0X57RYpsAkRowVpjQiHE566ThUTx7YXrsadmrmHk,564 +cryptography/hazmat/bindings/_rust/openssl/dh.pyi,sha256=Z3TC-G04-THtSdAOPLM1h2G7ml5bda1ElZUcn5wpuhk,1564 +cryptography/hazmat/bindings/_rust/openssl/dsa.pyi,sha256=qBtkgj2albt2qFcnZ9UDrhzoNhCVO7HTby5VSf1EXMI,1299 +cryptography/hazmat/bindings/_rust/openssl/ec.pyi,sha256=zJy0pRa5n-_p2dm45PxECB_-B6SVZyNKfjxFDpPqT38,1691 +cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi,sha256=VXfXd5G6hUivg399R1DYdmW3eTb0EebzDTqjRC2gaRw,532 +cryptography/hazmat/bindings/_rust/openssl/ed448.pyi,sha256=Yx49lqdnjsD7bxiDV1kcaMrDktug5evi5a6zerMiy2s,514 +cryptography/hazmat/bindings/_rust/openssl/hashes.pyi,sha256=OWZvBx7xfo_HJl41Nc--DugVyCVPIprZ3HlOPTSWH9g,984 +cryptography/hazmat/bindings/_rust/openssl/hmac.pyi,sha256=BXZn7NDjL3JAbYW0SQ8pg1iyC5DbQXVhUAiwsi8DFR8,702 +cryptography/hazmat/bindings/_rust/openssl/kdf.pyi,sha256=xXfFBb9QehHfDtEaxV_65Z0YK7NquOVIChpTLkgAs_k,2029 +cryptography/hazmat/bindings/_rust/openssl/keys.pyi,sha256=teIt8M6ZEMJrn4s3W0UnW0DZ-30Jd68WnSsKKG124l0,912 +cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi,sha256=_SW9NtQ5FDlAbdclFtWpT4lGmxKIKHpN-4j8J2BzYfQ,585 +cryptography/hazmat/bindings/_rust/openssl/rsa.pyi,sha256=2OQCNSXkxgc-3uw1xiCCloIQTV6p9_kK79Yu0rhZgPc,1364 +cryptography/hazmat/bindings/_rust/openssl/x25519.pyi,sha256=ewn4GpQyb7zPwE-ni7GtyQgMC0A1mLuqYsSyqv6nI_s,523 +cryptography/hazmat/bindings/_rust/openssl/x448.pyi,sha256=juTZTmli8jO_5Vcufg-vHvx_tCyezmSLIh_9PU3TczI,505 +cryptography/hazmat/bindings/_rust/pkcs12.pyi,sha256=vEEd5wDiZvb8ZGFaziLCaWLzAwoG_tvPUxLQw5_uOl8,1605 +cryptography/hazmat/bindings/_rust/pkcs7.pyi,sha256=txGBJijqZshEcqra6byPNbnisIdlxzOSIHP2hl9arPs,1601 +cryptography/hazmat/bindings/_rust/test_support.pyi,sha256=PPhld-WkO743iXFPebeG0LtgK0aTzGdjcIsay1Gm5GE,757 +cryptography/hazmat/bindings/_rust/x509.pyi,sha256=n9X0IQ6ICbdIi-ExdCFZoBgeY6njm3QOVAVZwDQdnbk,9784 +cryptography/hazmat/bindings/openssl/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/bindings/openssl/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/bindings/openssl/__pycache__/_conditional.cpython-312.pyc,, +cryptography/hazmat/bindings/openssl/__pycache__/binding.cpython-312.pyc,, +cryptography/hazmat/bindings/openssl/_conditional.py,sha256=DMOpA_XN4l70zTc5_J9DpwlbQeUBRTWpfIJ4yRIn1-U,5791 +cryptography/hazmat/bindings/openssl/binding.py,sha256=x8eocEmukO4cm7cHqfVmOoYY7CCXdoF1v1WhZQt9neo,4610 +cryptography/hazmat/decrepit/__init__.py,sha256=wHCbWfaefa-fk6THSw9th9fJUsStJo7245wfFBqmduA,216 +cryptography/hazmat/decrepit/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/decrepit/ciphers/__init__.py,sha256=wHCbWfaefa-fk6THSw9th9fJUsStJo7245wfFBqmduA,216 +cryptography/hazmat/decrepit/ciphers/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/decrepit/ciphers/__pycache__/algorithms.cpython-312.pyc,, +cryptography/hazmat/decrepit/ciphers/algorithms.py,sha256=YrKgHS4MfwWaMmPBYRymRRlC0phwWp9ycICFezeJPGk,2595 +cryptography/hazmat/primitives/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/primitives/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/primitives/__pycache__/_asymmetric.cpython-312.pyc,, +cryptography/hazmat/primitives/__pycache__/_cipheralgorithm.cpython-312.pyc,, +cryptography/hazmat/primitives/__pycache__/_serialization.cpython-312.pyc,, +cryptography/hazmat/primitives/__pycache__/cmac.cpython-312.pyc,, +cryptography/hazmat/primitives/__pycache__/constant_time.cpython-312.pyc,, +cryptography/hazmat/primitives/__pycache__/hashes.cpython-312.pyc,, +cryptography/hazmat/primitives/__pycache__/hmac.cpython-312.pyc,, +cryptography/hazmat/primitives/__pycache__/keywrap.cpython-312.pyc,, +cryptography/hazmat/primitives/__pycache__/padding.cpython-312.pyc,, +cryptography/hazmat/primitives/__pycache__/poly1305.cpython-312.pyc,, +cryptography/hazmat/primitives/_asymmetric.py,sha256=RhgcouUB6HTiFDBrR1LxqkMjpUxIiNvQ1r_zJjRG6qQ,532 +cryptography/hazmat/primitives/_cipheralgorithm.py,sha256=Eh3i7lwedHfi0eLSsH93PZxQKzY9I6lkK67vL4V5tOc,1522 +cryptography/hazmat/primitives/_serialization.py,sha256=chgPCSF2jxI2Cr5gB-qbWXOvOfupBh4CARS0KAhv9AM,5123 +cryptography/hazmat/primitives/asymmetric/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/primitives/asymmetric/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/dh.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/dsa.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/ec.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/ed25519.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/ed448.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/padding.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/rsa.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/types.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/utils.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/x25519.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/x448.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/dh.py,sha256=0v_vEFFz5pQ1QG-FkWDyvgv7IfuVZSH5Q6LyFI5A8rg,3645 +cryptography/hazmat/primitives/asymmetric/dsa.py,sha256=Ld_bbbqQFz12dObHxIkzEQzX0SWWP41RLSWkYSaKhqE,4213 +cryptography/hazmat/primitives/asymmetric/ec.py,sha256=Vf5ig2PcS3PVnsb5N49Kx1uIkFBJyhg4BWXThDz5cug,12999 +cryptography/hazmat/primitives/asymmetric/ed25519.py,sha256=jZW5cs472wXXV3eB0sE1b8w64gdazwwU0_MT5UOTiXs,3700 +cryptography/hazmat/primitives/asymmetric/ed448.py,sha256=yAetgn2f2JYf0BO8MapGzXeThsvSMG5LmUCrxVOidAA,3729 +cryptography/hazmat/primitives/asymmetric/padding.py,sha256=vQ6l6gOg9HqcbOsvHrSiJRVLdEj9L4m4HkRGYziTyFA,2854 +cryptography/hazmat/primitives/asymmetric/rsa.py,sha256=ZnKOo2f34MCCOupC03Y1uR-_jiSG5IrelHEmxaME3D4,8303 +cryptography/hazmat/primitives/asymmetric/types.py,sha256=LnsOJym-wmPUJ7Knu_7bCNU3kIiELCd6krOaW_JU08I,2996 +cryptography/hazmat/primitives/asymmetric/utils.py,sha256=DPTs6T4F-UhwzFQTh-1fSEpQzazH2jf2xpIro3ItF4o,790 +cryptography/hazmat/primitives/asymmetric/x25519.py,sha256=_4nQeZ3yJ3Lg0RpXnaqA-1yt6vbx1F-wzLcaZHwSpeE,3613 +cryptography/hazmat/primitives/asymmetric/x448.py,sha256=WKBLtuVfJqiBRro654fGaQAlvsKbqbNkK7c4A_ZCdV0,3642 +cryptography/hazmat/primitives/ciphers/__init__.py,sha256=eyEXmjk6_CZXaOPYDr7vAYGXr29QvzgWL2-4CSolLFs,680 +cryptography/hazmat/primitives/ciphers/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/primitives/ciphers/__pycache__/aead.cpython-312.pyc,, +cryptography/hazmat/primitives/ciphers/__pycache__/algorithms.cpython-312.pyc,, +cryptography/hazmat/primitives/ciphers/__pycache__/base.cpython-312.pyc,, +cryptography/hazmat/primitives/ciphers/__pycache__/modes.cpython-312.pyc,, +cryptography/hazmat/primitives/ciphers/aead.py,sha256=Fzlyx7w8KYQakzDp1zWgJnIr62zgZrgVh1u2h4exB54,634 +cryptography/hazmat/primitives/ciphers/algorithms.py,sha256=Q7ZJwcsx83Mgxv5y7r6CyJKSdsOwC-my-5A67-ma2vw,3407 +cryptography/hazmat/primitives/ciphers/base.py,sha256=aBC7HHBBoixebmparVr0UlODs3VD0A7B6oz_AaRjDv8,4253 +cryptography/hazmat/primitives/ciphers/modes.py,sha256=20stpwhDtbAvpH0SMf9EDHIciwmTF-JMBUOZ9bU8WiQ,8318 +cryptography/hazmat/primitives/cmac.py,sha256=sz_s6H_cYnOvx-VNWdIKhRhe3Ymp8z8J0D3CBqOX3gg,338 +cryptography/hazmat/primitives/constant_time.py,sha256=xdunWT0nf8OvKdcqUhhlFKayGp4_PgVJRU2W1wLSr_A,422 +cryptography/hazmat/primitives/hashes.py,sha256=M8BrlKB3U6DEtHvWTV5VRjpteHv1kS3Zxm_Bsk04cr8,5184 +cryptography/hazmat/primitives/hmac.py,sha256=RpB3z9z5skirCQrm7zQbtnp9pLMnAjrlTUvKqF5aDDc,423 +cryptography/hazmat/primitives/kdf/__init__.py,sha256=4XibZnrYq4hh5xBjWiIXzaYW6FKx8hPbVaa_cB9zS64,750 +cryptography/hazmat/primitives/kdf/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/argon2.cpython-312.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/concatkdf.cpython-312.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/hkdf.cpython-312.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/kbkdf.cpython-312.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/pbkdf2.cpython-312.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-312.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/x963kdf.cpython-312.pyc,, +cryptography/hazmat/primitives/kdf/argon2.py,sha256=UFDNXG0v-rw3DqAQTB1UQAsQC2M5Ejg0k_6OCyhLKus,460 +cryptography/hazmat/primitives/kdf/concatkdf.py,sha256=Ua8KoLXXnzgsrAUmHpyKymaPt8aPRP0EHEaBz7QCQ9I,3737 +cryptography/hazmat/primitives/kdf/hkdf.py,sha256=M0lAEfRoc4kpp4-nwDj9yB-vNZukIOYEQrUlWsBNn9o,543 +cryptography/hazmat/primitives/kdf/kbkdf.py,sha256=oZepvo4evhKkkJQWRDwaPoIbyTaFmDc5NPimxg6lfKg,9165 +cryptography/hazmat/primitives/kdf/pbkdf2.py,sha256=1WIwhELR0w8ztTpTu8BrFiYWmK3hUfJq08I79TxwieE,1957 +cryptography/hazmat/primitives/kdf/scrypt.py,sha256=XyWUdUUmhuI9V6TqAPOvujCSMGv1XQdg0a21IWCmO-U,590 +cryptography/hazmat/primitives/kdf/x963kdf.py,sha256=zLTcF665QFvXX2f8TS7fmBZTteXpFjKahzfjjQcCJyw,1999 +cryptography/hazmat/primitives/keywrap.py,sha256=XV4Pj2fqSeD-RqZVvY2cA3j5_7RwJSFygYuLfk2ujCo,5650 +cryptography/hazmat/primitives/padding.py,sha256=QT-U-NvV2eQGO1wVPbDiNGNSc9keRDS-ig5cQOrLz0E,1865 +cryptography/hazmat/primitives/poly1305.py,sha256=P5EPQV-RB_FJPahpg01u0Ts4S_PnAmsroxIGXbGeRRo,355 +cryptography/hazmat/primitives/serialization/__init__.py,sha256=Q7uTgDlt7n3WfsMT6jYwutC6DIg_7SEeoAm1GHZ5B5E,1705 +cryptography/hazmat/primitives/serialization/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/primitives/serialization/__pycache__/base.cpython-312.pyc,, +cryptography/hazmat/primitives/serialization/__pycache__/pkcs12.cpython-312.pyc,, +cryptography/hazmat/primitives/serialization/__pycache__/pkcs7.cpython-312.pyc,, +cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-312.pyc,, +cryptography/hazmat/primitives/serialization/base.py,sha256=ikq5MJIwp_oUnjiaBco_PmQwOTYuGi-XkYUYHKy8Vo0,615 +cryptography/hazmat/primitives/serialization/pkcs12.py,sha256=mS9cFNG4afzvseoc5e1MWoY2VskfL8N8Y_OFjl67luY,5104 +cryptography/hazmat/primitives/serialization/pkcs7.py,sha256=5OR_Tkysxaprn4FegvJIfbep9rJ9wok6FLWvWwQ5-Mg,13943 +cryptography/hazmat/primitives/serialization/ssh.py,sha256=hPV5obFznz0QhFfXFPOeQ8y6MsurA0xVMQiLnLESEs8,53700 +cryptography/hazmat/primitives/twofactor/__init__.py,sha256=tmMZGB-g4IU1r7lIFqASU019zr0uPp_wEBYcwdDCKCA,258 +cryptography/hazmat/primitives/twofactor/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/primitives/twofactor/__pycache__/hotp.cpython-312.pyc,, +cryptography/hazmat/primitives/twofactor/__pycache__/totp.cpython-312.pyc,, +cryptography/hazmat/primitives/twofactor/hotp.py,sha256=ivZo5BrcCGWLsqql4nZV0XXCjyGPi_iHfDFltGlOJwk,3256 +cryptography/hazmat/primitives/twofactor/totp.py,sha256=m5LPpRL00kp4zY8gTjr55Hfz9aMlPS53kHmVkSQCmdY,1652 +cryptography/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +cryptography/utils.py,sha256=bZAjFC5KVpfmF29qS_18vvpW3mKxmdiRALcusHhTTkg,4301 +cryptography/x509/__init__.py,sha256=xloN0swseNx-m2WFZmCA17gOoxQWqeU82UVjEdJBePQ,8257 +cryptography/x509/__pycache__/__init__.cpython-312.pyc,, +cryptography/x509/__pycache__/base.cpython-312.pyc,, +cryptography/x509/__pycache__/certificate_transparency.cpython-312.pyc,, +cryptography/x509/__pycache__/extensions.cpython-312.pyc,, +cryptography/x509/__pycache__/general_name.cpython-312.pyc,, +cryptography/x509/__pycache__/name.cpython-312.pyc,, +cryptography/x509/__pycache__/ocsp.cpython-312.pyc,, +cryptography/x509/__pycache__/oid.cpython-312.pyc,, +cryptography/x509/__pycache__/verification.cpython-312.pyc,, +cryptography/x509/base.py,sha256=OrmTw3y8B6AE_nGXQPN8x9kq-d7rDWeH13gCq6T6D6U,27997 +cryptography/x509/certificate_transparency.py,sha256=JqoOIDhlwInrYMFW6IFn77WJ0viF-PB_rlZV3vs9MYc,797 +cryptography/x509/extensions.py,sha256=QxYrqR6SF1qzR9ZraP8wDiIczlEVlAFuwDRVcltB6Tk,77724 +cryptography/x509/general_name.py,sha256=sP_rV11Qlpsk4x3XXGJY_Mv0Q_s9dtjeLckHsjpLQoQ,7836 +cryptography/x509/name.py,sha256=ty0_xf0LnHwZAdEf-d8FLO1K4hGqx_7DsD3CHwoLJiY,15101 +cryptography/x509/ocsp.py,sha256=Yey6NdFV1MPjop24Mj_VenjEpg3kUaMopSWOK0AbeBs,12699 +cryptography/x509/oid.py,sha256=BUzgXXGVWilkBkdKPTm9R4qElE9gAGHgdYPMZAp7PJo,931 +cryptography/x509/verification.py,sha256=gR2C2c-XZQtblZhT5T5vjSKOtCb74ef2alPVmEcwFlM,958 diff --git a/venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/WHEEL b/venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/WHEEL new file mode 100644 index 00000000..8e48aa14 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: maturin (1.9.4) +Root-Is-Purelib: false +Tag: cp311-abi3-manylinux_2_34_x86_64 + diff --git a/venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/licenses/LICENSE b/venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/licenses/LICENSE new file mode 100644 index 00000000..b11f379e --- /dev/null +++ b/venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/licenses/LICENSE @@ -0,0 +1,3 @@ +This software is made available under the terms of *either* of the licenses +found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made +under the terms of *both* these licenses. diff --git a/venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/licenses/LICENSE.APACHE b/venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/licenses/LICENSE.APACHE new file mode 100644 index 00000000..62589edd --- /dev/null +++ b/venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/licenses/LICENSE.APACHE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/licenses/LICENSE.BSD b/venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/licenses/LICENSE.BSD new file mode 100644 index 00000000..ec1a29d3 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cryptography-46.0.3.dist-info/licenses/LICENSE.BSD @@ -0,0 +1,27 @@ +Copyright (c) Individual contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of PyCA Cryptography nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/venv/lib/python3.12/site-packages/cryptography/__about__.py b/venv/lib/python3.12/site-packages/cryptography/__about__.py new file mode 100644 index 00000000..a8116284 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cryptography/__about__.py @@ -0,0 +1,17 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +__all__ = [ + "__author__", + "__copyright__", + "__version__", +] + +__version__ = "46.0.3" + + +__author__ = "The Python Cryptographic Authority and individual contributors" +__copyright__ = f"Copyright 2013-2025 {__author__}" diff --git a/venv/lib/python3.12/site-packages/cryptography/__init__.py b/venv/lib/python3.12/site-packages/cryptography/__init__.py new file mode 100644 index 00000000..d374f752 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cryptography/__init__.py @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.__about__ import __author__, __copyright__, __version__ + +__all__ = [ + "__author__", + "__copyright__", + "__version__", +] diff --git a/venv/lib/python3.12/site-packages/cryptography/__pycache__/__about__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/__pycache__/__about__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cfa2b097634e5efc5c22ed4611fd3043d27a9b1d GIT binary patch literal 465 zcmYLGJ!>055Z%2yos2$`U<_^#3;`KSD@%^6ATWZI!r)ZbEUVkKZsoh(V{cDzs^nkc zA{c}_{|NsAH!g$PROy6G8dsTfFqz^p4`$}Q$2_*%4FvUVPUHhd=vPJF%lX&fmqTc7 z5Jwy*D8(VhXok3RheL zwV`y=rZm!7Y2+-nK%0~Aa&P>u5Dfaq!|tFz_!3Myer4pcu!Rwn8W*f?>fkI% zfce0TS3wQn9=!mfS4NZo7pWj~h!e$9F_IZQ7gpyaO|uKZOcaxaPz#dCDaqbE4|~T0 zl1nSP8H=viOynf`pQ0q7In@QE?`7rd&ev4)A`v6g0!8=)%8vlHF2?vz1L1>b&ucoX g`nH8W?ys6#AAOkMRpaOG=k;=(JbfBow@vlQza;#MhX4Qo literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/cryptography/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b1bb46232ceaaf177dbe33e95429ffe458d5fd64 GIT binary patch literal 375 zcmYjNJx{|h5Ve!EL5;G)4`7M}wSW~dB6VS5%W`#7leqXxj#DWkzk;2O-@?S2l>xCK zDwa-Mgpj!5^q$|ldndo-`HWy)ZTUa za8snC^{xw@7XUuSWy4|Rdlzi&xoi44E?U_R2YrH~pNwrf+EP@M0(d4nq-4KjMqr{A zY=ehXjWnD&Z#N>?mTB#71@~3Mw!&-3D scm4k0QrmT>#Ffu65I>Q$N7z1NO6m8E(BpTqcqNOkB*~(O)Mu#u0FVr9e*gdg literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/cryptography/__pycache__/exceptions.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/__pycache__/exceptions.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7f5a5b9223acec91de373774457022f16856b636 GIT binary patch literal 2389 zcmbVN&1)M+6rb5$eQPcGBmQWyBisE_+ekFIv{2fb;G}MXTI%Frm9nh0V`<&h?sjHv zBIAP(h9rkTE+zRFO#YOfQUWnc3x<$GZ*HZKkW=5Am7;Yq#dO5}=FM+r-kW*z-qWwT zo+Z$(Y*y_rHA0@@V9*kgK)Xds$OB>#i#nuD>y)CbI7(fCUUk&AR!>mEl+FBL>#*lZ zSfjz3R6PxA5}RYgxq(#ADC8=!68pqTvg{)@;_ErdrhrYy*t}#jz-D8tF4-Kg`4~GQ zSsmDs7+a8R0oY=UElPG2*s&NpD%o*hCt~baM=78C6OUP@Va{}2FE9h!b43ltS$3w&PJGOGa<|-3zN}Am@$loV+vsy0!QEl*!A9zh}`mIiN=+}zh;W;q2Gkcm_DudHwsEH|nS9|35w0<}BI6eJv z>PdS3aBB9Bb}!$BDZ(=VuOpc>$!Ig7Lk)xG3$GYMv|a8*Fhm)Npi=Kp(kg zn}LtAhSBz{EeGYiVf?&hI?;?gW2pBX)L@Qd7zdOWLBGI<_==AL^3(uuBy@mR`{bpf zB4p*1p=Bj3E;;ZzR_6*h-m!O>RXb2QI)YCl%m5saNUuD> zEV2l=ri*#MPY$(ov;z4vTOR3KzUf;ggldh?!ESyYL0&_e!>H#7Z=+B`kdsKA*;1kA z1#2uAUhz~@@1Sx7d4v*AxJAoo!LsUZ)MeP zx+a7gJKfd?s2$;b6iNuv7E&i{sX#!Z-H!p|MJ7XrKTGMCn|!R?sG+{%28=`SEOYMh zMqicGhcbNsx6VZArgHq-iSi@OI5!%e#mXAT;1AWdXmUJslqrL%5+#dF`^gi>dz0_D zM__P6zW0(OGZJO|_>=VP;dBWyUYD+dWWRvg#}RPP&Uwcc!4G^(1V+DHSH6X^y}Ei` z-v38FflJRJOd??1#xwXsBoRKsiFW}YgO3$0F@HEdd8}f;uq6AVjQ%nK7#(D7}z87{<2ZKY-I zw9TNhZo3vtii&~0;rJ3^LAq&Ji$nd!+IP#w<*%17Ut6hN6Zx3y&-Zn2<7sWNb@k%4__qcDzo19@W|}_@}S~T_tV<9IKSl7g<6VpAr2zxqhT( zo~l#7sZ)Pw-yG%MdYW5&oLk&W_mV1|d-z$8K-bGtnz`TU5$Jkpl-FXi9g}Bb@?d>} U&fj0@5$JkF+&l9E^+;d;10lxt3IG5A literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/cryptography/__pycache__/fernet.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/__pycache__/fernet.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..faecdb1baef807c82d8698c23d5fc7875c232490 GIT binary patch literal 11139 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 q%Ir$E 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 None: + super().__init__(message) + self._reason = reason + + +class AlreadyFinalized(Exception): + pass + + +class AlreadyUpdated(Exception): + pass + + +class NotYetFinalized(Exception): + pass + + +class InvalidTag(Exception): + pass + + +class InvalidSignature(Exception): + pass + + +class InternalError(Exception): + def __init__( + self, msg: str, err_code: list[rust_openssl.OpenSSLError] + ) -> None: + super().__init__(msg) + self.err_code = err_code + + +class InvalidKey(Exception): + pass diff --git a/venv/lib/python3.12/site-packages/cryptography/fernet.py b/venv/lib/python3.12/site-packages/cryptography/fernet.py new file mode 100644 index 00000000..c6744ae3 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cryptography/fernet.py @@ -0,0 +1,224 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import base64 +import binascii +import os +import time +import typing +from collections.abc import Iterable + +from cryptography import utils +from cryptography.exceptions import InvalidSignature +from cryptography.hazmat.primitives import hashes, padding +from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes +from cryptography.hazmat.primitives.hmac import HMAC + + +class InvalidToken(Exception): + pass + + +_MAX_CLOCK_SKEW = 60 + + +class Fernet: + def __init__( + self, + key: bytes | str, + backend: typing.Any = None, + ) -> None: + try: + key = base64.urlsafe_b64decode(key) + except binascii.Error as exc: + raise ValueError( + "Fernet key must be 32 url-safe base64-encoded bytes." + ) from exc + if len(key) != 32: + raise ValueError( + "Fernet key must be 32 url-safe base64-encoded bytes." + ) + + self._signing_key = key[:16] + self._encryption_key = key[16:] + + @classmethod + def generate_key(cls) -> bytes: + return base64.urlsafe_b64encode(os.urandom(32)) + + def encrypt(self, data: bytes) -> bytes: + return self.encrypt_at_time(data, int(time.time())) + + def encrypt_at_time(self, data: bytes, current_time: int) -> bytes: + iv = os.urandom(16) + return self._encrypt_from_parts(data, current_time, iv) + + def _encrypt_from_parts( + self, data: bytes, current_time: int, iv: bytes + ) -> bytes: + utils._check_bytes("data", data) + + padder = padding.PKCS7(algorithms.AES.block_size).padder() + padded_data = padder.update(data) + padder.finalize() + encryptor = Cipher( + algorithms.AES(self._encryption_key), + modes.CBC(iv), + ).encryptor() + ciphertext = encryptor.update(padded_data) + encryptor.finalize() + + basic_parts = ( + b"\x80" + + current_time.to_bytes(length=8, byteorder="big") + + iv + + ciphertext + ) + + h = HMAC(self._signing_key, hashes.SHA256()) + h.update(basic_parts) + hmac = h.finalize() + return base64.urlsafe_b64encode(basic_parts + hmac) + + def decrypt(self, token: bytes | str, ttl: int | None = None) -> bytes: + timestamp, data = Fernet._get_unverified_token_data(token) + if ttl is None: + time_info = None + else: + time_info = (ttl, int(time.time())) + return self._decrypt_data(data, timestamp, time_info) + + def decrypt_at_time( + self, token: bytes | str, ttl: int, current_time: int + ) -> bytes: + if ttl is None: + raise ValueError( + "decrypt_at_time() can only be used with a non-None ttl" + ) + timestamp, data = Fernet._get_unverified_token_data(token) + return self._decrypt_data(data, timestamp, (ttl, current_time)) + + def extract_timestamp(self, token: bytes | str) -> int: + timestamp, data = Fernet._get_unverified_token_data(token) + # Verify the token was not tampered with. + self._verify_signature(data) + return timestamp + + @staticmethod + def _get_unverified_token_data(token: bytes | str) -> tuple[int, bytes]: + if not isinstance(token, (str, bytes)): + raise TypeError("token must be bytes or str") + + try: + data = base64.urlsafe_b64decode(token) + except (TypeError, binascii.Error): + raise InvalidToken + + if not data or data[0] != 0x80: + raise InvalidToken + + if len(data) < 9: + raise InvalidToken + + timestamp = int.from_bytes(data[1:9], byteorder="big") + return timestamp, data + + def _verify_signature(self, data: bytes) -> None: + h = HMAC(self._signing_key, hashes.SHA256()) + h.update(data[:-32]) + try: + h.verify(data[-32:]) + except InvalidSignature: + raise InvalidToken + + def _decrypt_data( + self, + data: bytes, + timestamp: int, + time_info: tuple[int, int] | None, + ) -> bytes: + if time_info is not None: + ttl, current_time = time_info + if timestamp + ttl < current_time: + raise InvalidToken + + if current_time + _MAX_CLOCK_SKEW < timestamp: + raise InvalidToken + + self._verify_signature(data) + + iv = data[9:25] + ciphertext = data[25:-32] + decryptor = Cipher( + algorithms.AES(self._encryption_key), modes.CBC(iv) + ).decryptor() + plaintext_padded = decryptor.update(ciphertext) + try: + plaintext_padded += decryptor.finalize() + except ValueError: + raise InvalidToken + unpadder = padding.PKCS7(algorithms.AES.block_size).unpadder() + + unpadded = unpadder.update(plaintext_padded) + try: + unpadded += unpadder.finalize() + except ValueError: + raise InvalidToken + return unpadded + + +class MultiFernet: + def __init__(self, fernets: Iterable[Fernet]): + fernets = list(fernets) + if not fernets: + raise ValueError( + "MultiFernet requires at least one Fernet instance" + ) + self._fernets = fernets + + def encrypt(self, msg: bytes) -> bytes: + return self.encrypt_at_time(msg, int(time.time())) + + def encrypt_at_time(self, msg: bytes, current_time: int) -> bytes: + return self._fernets[0].encrypt_at_time(msg, current_time) + + def rotate(self, msg: bytes | str) -> bytes: + timestamp, data = Fernet._get_unverified_token_data(msg) + for f in self._fernets: + try: + p = f._decrypt_data(data, timestamp, None) + break + except InvalidToken: + pass + else: + raise InvalidToken + + iv = os.urandom(16) + return self._fernets[0]._encrypt_from_parts(p, timestamp, iv) + + def decrypt(self, msg: bytes | str, ttl: int | None = None) -> bytes: + for f in self._fernets: + try: + return f.decrypt(msg, ttl) + except InvalidToken: + pass + raise InvalidToken + + def decrypt_at_time( + self, msg: bytes | str, ttl: int, current_time: int + ) -> bytes: + for f in self._fernets: + try: + return f.decrypt_at_time(msg, ttl, current_time) + except InvalidToken: + pass + raise InvalidToken + + def extract_timestamp(self, msg: bytes | str) -> int: + for f in self._fernets: + try: + return f.extract_timestamp(msg) + except InvalidToken: + pass + raise InvalidToken diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/__init__.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/__init__.py new file mode 100644 index 00000000..b9f11870 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cryptography/hazmat/__init__.py @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +""" +Hazardous Materials + +This is a "Hazardous Materials" module. You should ONLY use it if you're +100% absolutely sure that you know what you're doing because this module +is full of land mines, dragons, and dinosaurs with laser guns. +""" diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2bfafaf35ef3c44454270c2d0f1ff0f87b6b756f GIT binary patch literal 256 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 F{|h6{W7hxx literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/_oid.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/_oid.py new file mode 100644 index 00000000..4bf138d4 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cryptography/hazmat/_oid.py @@ -0,0 +1,356 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import ( + ObjectIdentifier as ObjectIdentifier, +) +from cryptography.hazmat.primitives import hashes + + +class ExtensionOID: + SUBJECT_DIRECTORY_ATTRIBUTES = ObjectIdentifier("2.5.29.9") + SUBJECT_KEY_IDENTIFIER = ObjectIdentifier("2.5.29.14") + KEY_USAGE = ObjectIdentifier("2.5.29.15") + PRIVATE_KEY_USAGE_PERIOD = ObjectIdentifier("2.5.29.16") + SUBJECT_ALTERNATIVE_NAME = ObjectIdentifier("2.5.29.17") + ISSUER_ALTERNATIVE_NAME = ObjectIdentifier("2.5.29.18") + BASIC_CONSTRAINTS = ObjectIdentifier("2.5.29.19") + NAME_CONSTRAINTS = ObjectIdentifier("2.5.29.30") + CRL_DISTRIBUTION_POINTS = ObjectIdentifier("2.5.29.31") + CERTIFICATE_POLICIES = ObjectIdentifier("2.5.29.32") + POLICY_MAPPINGS = ObjectIdentifier("2.5.29.33") + AUTHORITY_KEY_IDENTIFIER = ObjectIdentifier("2.5.29.35") + POLICY_CONSTRAINTS = ObjectIdentifier("2.5.29.36") + EXTENDED_KEY_USAGE = ObjectIdentifier("2.5.29.37") + FRESHEST_CRL = ObjectIdentifier("2.5.29.46") + INHIBIT_ANY_POLICY = ObjectIdentifier("2.5.29.54") + ISSUING_DISTRIBUTION_POINT = ObjectIdentifier("2.5.29.28") + AUTHORITY_INFORMATION_ACCESS = ObjectIdentifier("1.3.6.1.5.5.7.1.1") + SUBJECT_INFORMATION_ACCESS = ObjectIdentifier("1.3.6.1.5.5.7.1.11") + OCSP_NO_CHECK = ObjectIdentifier("1.3.6.1.5.5.7.48.1.5") + TLS_FEATURE = ObjectIdentifier("1.3.6.1.5.5.7.1.24") + CRL_NUMBER = ObjectIdentifier("2.5.29.20") + DELTA_CRL_INDICATOR = ObjectIdentifier("2.5.29.27") + PRECERT_SIGNED_CERTIFICATE_TIMESTAMPS = ObjectIdentifier( + "1.3.6.1.4.1.11129.2.4.2" + ) + PRECERT_POISON = ObjectIdentifier("1.3.6.1.4.1.11129.2.4.3") + SIGNED_CERTIFICATE_TIMESTAMPS = ObjectIdentifier("1.3.6.1.4.1.11129.2.4.5") + MS_CERTIFICATE_TEMPLATE = ObjectIdentifier("1.3.6.1.4.1.311.21.7") + ADMISSIONS = ObjectIdentifier("1.3.36.8.3.3") + + +class OCSPExtensionOID: + NONCE = ObjectIdentifier("1.3.6.1.5.5.7.48.1.2") + ACCEPTABLE_RESPONSES = ObjectIdentifier("1.3.6.1.5.5.7.48.1.4") + + +class CRLEntryExtensionOID: + CERTIFICATE_ISSUER = ObjectIdentifier("2.5.29.29") + CRL_REASON = ObjectIdentifier("2.5.29.21") + INVALIDITY_DATE = ObjectIdentifier("2.5.29.24") + + +class NameOID: + COMMON_NAME = ObjectIdentifier("2.5.4.3") + COUNTRY_NAME = ObjectIdentifier("2.5.4.6") + LOCALITY_NAME = ObjectIdentifier("2.5.4.7") + STATE_OR_PROVINCE_NAME = ObjectIdentifier("2.5.4.8") + STREET_ADDRESS = ObjectIdentifier("2.5.4.9") + ORGANIZATION_IDENTIFIER = ObjectIdentifier("2.5.4.97") + ORGANIZATION_NAME = ObjectIdentifier("2.5.4.10") + ORGANIZATIONAL_UNIT_NAME = ObjectIdentifier("2.5.4.11") + SERIAL_NUMBER = ObjectIdentifier("2.5.4.5") + SURNAME = ObjectIdentifier("2.5.4.4") + GIVEN_NAME = ObjectIdentifier("2.5.4.42") + TITLE = ObjectIdentifier("2.5.4.12") + INITIALS = ObjectIdentifier("2.5.4.43") + GENERATION_QUALIFIER = ObjectIdentifier("2.5.4.44") + X500_UNIQUE_IDENTIFIER = ObjectIdentifier("2.5.4.45") + DN_QUALIFIER = ObjectIdentifier("2.5.4.46") + PSEUDONYM = ObjectIdentifier("2.5.4.65") + USER_ID = ObjectIdentifier("0.9.2342.19200300.100.1.1") + DOMAIN_COMPONENT = ObjectIdentifier("0.9.2342.19200300.100.1.25") + EMAIL_ADDRESS = ObjectIdentifier("1.2.840.113549.1.9.1") + JURISDICTION_COUNTRY_NAME = ObjectIdentifier("1.3.6.1.4.1.311.60.2.1.3") + JURISDICTION_LOCALITY_NAME = ObjectIdentifier("1.3.6.1.4.1.311.60.2.1.1") + JURISDICTION_STATE_OR_PROVINCE_NAME = ObjectIdentifier( + "1.3.6.1.4.1.311.60.2.1.2" + ) + BUSINESS_CATEGORY = ObjectIdentifier("2.5.4.15") + POSTAL_ADDRESS = ObjectIdentifier("2.5.4.16") + POSTAL_CODE = ObjectIdentifier("2.5.4.17") + INN = ObjectIdentifier("1.2.643.3.131.1.1") + OGRN = ObjectIdentifier("1.2.643.100.1") + SNILS = ObjectIdentifier("1.2.643.100.3") + UNSTRUCTURED_NAME = ObjectIdentifier("1.2.840.113549.1.9.2") + + +class SignatureAlgorithmOID: + RSA_WITH_MD5 = ObjectIdentifier("1.2.840.113549.1.1.4") + RSA_WITH_SHA1 = ObjectIdentifier("1.2.840.113549.1.1.5") + # This is an alternate OID for RSA with SHA1 that is occasionally seen + _RSA_WITH_SHA1 = ObjectIdentifier("1.3.14.3.2.29") + RSA_WITH_SHA224 = ObjectIdentifier("1.2.840.113549.1.1.14") + RSA_WITH_SHA256 = ObjectIdentifier("1.2.840.113549.1.1.11") + RSA_WITH_SHA384 = ObjectIdentifier("1.2.840.113549.1.1.12") + RSA_WITH_SHA512 = ObjectIdentifier("1.2.840.113549.1.1.13") + RSA_WITH_SHA3_224 = ObjectIdentifier("2.16.840.1.101.3.4.3.13") + RSA_WITH_SHA3_256 = ObjectIdentifier("2.16.840.1.101.3.4.3.14") + RSA_WITH_SHA3_384 = ObjectIdentifier("2.16.840.1.101.3.4.3.15") + RSA_WITH_SHA3_512 = ObjectIdentifier("2.16.840.1.101.3.4.3.16") + RSASSA_PSS = ObjectIdentifier("1.2.840.113549.1.1.10") + ECDSA_WITH_SHA1 = ObjectIdentifier("1.2.840.10045.4.1") + ECDSA_WITH_SHA224 = ObjectIdentifier("1.2.840.10045.4.3.1") + ECDSA_WITH_SHA256 = ObjectIdentifier("1.2.840.10045.4.3.2") + ECDSA_WITH_SHA384 = ObjectIdentifier("1.2.840.10045.4.3.3") + ECDSA_WITH_SHA512 = ObjectIdentifier("1.2.840.10045.4.3.4") + ECDSA_WITH_SHA3_224 = ObjectIdentifier("2.16.840.1.101.3.4.3.9") + ECDSA_WITH_SHA3_256 = ObjectIdentifier("2.16.840.1.101.3.4.3.10") + ECDSA_WITH_SHA3_384 = ObjectIdentifier("2.16.840.1.101.3.4.3.11") + ECDSA_WITH_SHA3_512 = ObjectIdentifier("2.16.840.1.101.3.4.3.12") + DSA_WITH_SHA1 = ObjectIdentifier("1.2.840.10040.4.3") + DSA_WITH_SHA224 = ObjectIdentifier("2.16.840.1.101.3.4.3.1") + DSA_WITH_SHA256 = ObjectIdentifier("2.16.840.1.101.3.4.3.2") + DSA_WITH_SHA384 = ObjectIdentifier("2.16.840.1.101.3.4.3.3") + DSA_WITH_SHA512 = ObjectIdentifier("2.16.840.1.101.3.4.3.4") + ED25519 = ObjectIdentifier("1.3.101.112") + ED448 = ObjectIdentifier("1.3.101.113") + GOSTR3411_94_WITH_3410_2001 = ObjectIdentifier("1.2.643.2.2.3") + GOSTR3410_2012_WITH_3411_2012_256 = ObjectIdentifier("1.2.643.7.1.1.3.2") + GOSTR3410_2012_WITH_3411_2012_512 = ObjectIdentifier("1.2.643.7.1.1.3.3") + + +_SIG_OIDS_TO_HASH: dict[ObjectIdentifier, hashes.HashAlgorithm | None] = { + SignatureAlgorithmOID.RSA_WITH_MD5: hashes.MD5(), + SignatureAlgorithmOID.RSA_WITH_SHA1: hashes.SHA1(), + SignatureAlgorithmOID._RSA_WITH_SHA1: hashes.SHA1(), + SignatureAlgorithmOID.RSA_WITH_SHA224: hashes.SHA224(), + SignatureAlgorithmOID.RSA_WITH_SHA256: hashes.SHA256(), + SignatureAlgorithmOID.RSA_WITH_SHA384: hashes.SHA384(), + SignatureAlgorithmOID.RSA_WITH_SHA512: hashes.SHA512(), + SignatureAlgorithmOID.RSA_WITH_SHA3_224: hashes.SHA3_224(), + SignatureAlgorithmOID.RSA_WITH_SHA3_256: hashes.SHA3_256(), + SignatureAlgorithmOID.RSA_WITH_SHA3_384: hashes.SHA3_384(), + SignatureAlgorithmOID.RSA_WITH_SHA3_512: hashes.SHA3_512(), + SignatureAlgorithmOID.ECDSA_WITH_SHA1: hashes.SHA1(), + SignatureAlgorithmOID.ECDSA_WITH_SHA224: hashes.SHA224(), + SignatureAlgorithmOID.ECDSA_WITH_SHA256: hashes.SHA256(), + SignatureAlgorithmOID.ECDSA_WITH_SHA384: hashes.SHA384(), + SignatureAlgorithmOID.ECDSA_WITH_SHA512: hashes.SHA512(), + SignatureAlgorithmOID.ECDSA_WITH_SHA3_224: hashes.SHA3_224(), + SignatureAlgorithmOID.ECDSA_WITH_SHA3_256: hashes.SHA3_256(), + SignatureAlgorithmOID.ECDSA_WITH_SHA3_384: hashes.SHA3_384(), + SignatureAlgorithmOID.ECDSA_WITH_SHA3_512: hashes.SHA3_512(), + SignatureAlgorithmOID.DSA_WITH_SHA1: hashes.SHA1(), + SignatureAlgorithmOID.DSA_WITH_SHA224: hashes.SHA224(), + SignatureAlgorithmOID.DSA_WITH_SHA256: hashes.SHA256(), + SignatureAlgorithmOID.ED25519: None, + SignatureAlgorithmOID.ED448: None, + SignatureAlgorithmOID.GOSTR3411_94_WITH_3410_2001: None, + SignatureAlgorithmOID.GOSTR3410_2012_WITH_3411_2012_256: None, + SignatureAlgorithmOID.GOSTR3410_2012_WITH_3411_2012_512: None, +} + + +class HashAlgorithmOID: + SHA1 = ObjectIdentifier("1.3.14.3.2.26") + SHA224 = ObjectIdentifier("2.16.840.1.101.3.4.2.4") + SHA256 = ObjectIdentifier("2.16.840.1.101.3.4.2.1") + SHA384 = ObjectIdentifier("2.16.840.1.101.3.4.2.2") + SHA512 = ObjectIdentifier("2.16.840.1.101.3.4.2.3") + SHA3_224 = ObjectIdentifier("1.3.6.1.4.1.37476.3.2.1.99.7.224") + SHA3_256 = ObjectIdentifier("1.3.6.1.4.1.37476.3.2.1.99.7.256") + SHA3_384 = ObjectIdentifier("1.3.6.1.4.1.37476.3.2.1.99.7.384") + SHA3_512 = ObjectIdentifier("1.3.6.1.4.1.37476.3.2.1.99.7.512") + SHA3_224_NIST = ObjectIdentifier("2.16.840.1.101.3.4.2.7") + SHA3_256_NIST = ObjectIdentifier("2.16.840.1.101.3.4.2.8") + SHA3_384_NIST = ObjectIdentifier("2.16.840.1.101.3.4.2.9") + SHA3_512_NIST = ObjectIdentifier("2.16.840.1.101.3.4.2.10") + + +class PublicKeyAlgorithmOID: + DSA = ObjectIdentifier("1.2.840.10040.4.1") + EC_PUBLIC_KEY = ObjectIdentifier("1.2.840.10045.2.1") + RSAES_PKCS1_v1_5 = ObjectIdentifier("1.2.840.113549.1.1.1") + RSASSA_PSS = ObjectIdentifier("1.2.840.113549.1.1.10") + X25519 = ObjectIdentifier("1.3.101.110") + X448 = ObjectIdentifier("1.3.101.111") + ED25519 = ObjectIdentifier("1.3.101.112") + ED448 = ObjectIdentifier("1.3.101.113") + + +class ExtendedKeyUsageOID: + SERVER_AUTH = ObjectIdentifier("1.3.6.1.5.5.7.3.1") + CLIENT_AUTH = ObjectIdentifier("1.3.6.1.5.5.7.3.2") + CODE_SIGNING = ObjectIdentifier("1.3.6.1.5.5.7.3.3") + EMAIL_PROTECTION = ObjectIdentifier("1.3.6.1.5.5.7.3.4") + TIME_STAMPING = ObjectIdentifier("1.3.6.1.5.5.7.3.8") + OCSP_SIGNING = ObjectIdentifier("1.3.6.1.5.5.7.3.9") + ANY_EXTENDED_KEY_USAGE = ObjectIdentifier("2.5.29.37.0") + SMARTCARD_LOGON = ObjectIdentifier("1.3.6.1.4.1.311.20.2.2") + KERBEROS_PKINIT_KDC = ObjectIdentifier("1.3.6.1.5.2.3.5") + IPSEC_IKE = ObjectIdentifier("1.3.6.1.5.5.7.3.17") + BUNDLE_SECURITY = ObjectIdentifier("1.3.6.1.5.5.7.3.35") + CERTIFICATE_TRANSPARENCY = ObjectIdentifier("1.3.6.1.4.1.11129.2.4.4") + + +class OtherNameFormOID: + PERMANENT_IDENTIFIER = ObjectIdentifier("1.3.6.1.5.5.7.8.3") + HW_MODULE_NAME = ObjectIdentifier("1.3.6.1.5.5.7.8.4") + DNS_SRV = ObjectIdentifier("1.3.6.1.5.5.7.8.7") + NAI_REALM = ObjectIdentifier("1.3.6.1.5.5.7.8.8") + SMTP_UTF8_MAILBOX = ObjectIdentifier("1.3.6.1.5.5.7.8.9") + ACP_NODE_NAME = ObjectIdentifier("1.3.6.1.5.5.7.8.10") + BUNDLE_EID = ObjectIdentifier("1.3.6.1.5.5.7.8.11") + + +class AuthorityInformationAccessOID: + CA_ISSUERS = ObjectIdentifier("1.3.6.1.5.5.7.48.2") + OCSP = ObjectIdentifier("1.3.6.1.5.5.7.48.1") + + +class SubjectInformationAccessOID: + CA_REPOSITORY = ObjectIdentifier("1.3.6.1.5.5.7.48.5") + + +class CertificatePoliciesOID: + CPS_QUALIFIER = ObjectIdentifier("1.3.6.1.5.5.7.2.1") + CPS_USER_NOTICE = ObjectIdentifier("1.3.6.1.5.5.7.2.2") + ANY_POLICY = ObjectIdentifier("2.5.29.32.0") + + +class AttributeOID: + CHALLENGE_PASSWORD = ObjectIdentifier("1.2.840.113549.1.9.7") + UNSTRUCTURED_NAME = ObjectIdentifier("1.2.840.113549.1.9.2") + + +_OID_NAMES = { + NameOID.COMMON_NAME: "commonName", + NameOID.COUNTRY_NAME: "countryName", + NameOID.LOCALITY_NAME: "localityName", + NameOID.STATE_OR_PROVINCE_NAME: "stateOrProvinceName", + NameOID.STREET_ADDRESS: "streetAddress", + NameOID.ORGANIZATION_NAME: "organizationName", + NameOID.ORGANIZATIONAL_UNIT_NAME: "organizationalUnitName", + NameOID.SERIAL_NUMBER: "serialNumber", + NameOID.SURNAME: "surname", + NameOID.GIVEN_NAME: "givenName", + NameOID.TITLE: "title", + NameOID.GENERATION_QUALIFIER: "generationQualifier", + NameOID.X500_UNIQUE_IDENTIFIER: "x500UniqueIdentifier", + NameOID.DN_QUALIFIER: "dnQualifier", + NameOID.PSEUDONYM: "pseudonym", + NameOID.USER_ID: "userID", + NameOID.DOMAIN_COMPONENT: "domainComponent", + NameOID.EMAIL_ADDRESS: "emailAddress", + NameOID.JURISDICTION_COUNTRY_NAME: "jurisdictionCountryName", + NameOID.JURISDICTION_LOCALITY_NAME: "jurisdictionLocalityName", + NameOID.JURISDICTION_STATE_OR_PROVINCE_NAME: ( + "jurisdictionStateOrProvinceName" + ), + NameOID.BUSINESS_CATEGORY: "businessCategory", + NameOID.POSTAL_ADDRESS: "postalAddress", + NameOID.POSTAL_CODE: "postalCode", + NameOID.INN: "INN", + NameOID.OGRN: "OGRN", + NameOID.SNILS: "SNILS", + NameOID.UNSTRUCTURED_NAME: "unstructuredName", + SignatureAlgorithmOID.RSA_WITH_MD5: "md5WithRSAEncryption", + SignatureAlgorithmOID.RSA_WITH_SHA1: "sha1WithRSAEncryption", + SignatureAlgorithmOID.RSA_WITH_SHA224: "sha224WithRSAEncryption", + SignatureAlgorithmOID.RSA_WITH_SHA256: "sha256WithRSAEncryption", + SignatureAlgorithmOID.RSA_WITH_SHA384: "sha384WithRSAEncryption", + SignatureAlgorithmOID.RSA_WITH_SHA512: "sha512WithRSAEncryption", + SignatureAlgorithmOID.RSASSA_PSS: "rsassaPss", + SignatureAlgorithmOID.ECDSA_WITH_SHA1: "ecdsa-with-SHA1", + SignatureAlgorithmOID.ECDSA_WITH_SHA224: "ecdsa-with-SHA224", + SignatureAlgorithmOID.ECDSA_WITH_SHA256: "ecdsa-with-SHA256", + SignatureAlgorithmOID.ECDSA_WITH_SHA384: "ecdsa-with-SHA384", + SignatureAlgorithmOID.ECDSA_WITH_SHA512: "ecdsa-with-SHA512", + SignatureAlgorithmOID.DSA_WITH_SHA1: "dsa-with-sha1", + SignatureAlgorithmOID.DSA_WITH_SHA224: "dsa-with-sha224", + SignatureAlgorithmOID.DSA_WITH_SHA256: "dsa-with-sha256", + SignatureAlgorithmOID.ED25519: "ed25519", + SignatureAlgorithmOID.ED448: "ed448", + SignatureAlgorithmOID.GOSTR3411_94_WITH_3410_2001: ( + "GOST R 34.11-94 with GOST R 34.10-2001" + ), + SignatureAlgorithmOID.GOSTR3410_2012_WITH_3411_2012_256: ( + "GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)" + ), + SignatureAlgorithmOID.GOSTR3410_2012_WITH_3411_2012_512: ( + "GOST R 34.10-2012 with GOST R 34.11-2012 (512 bit)" + ), + HashAlgorithmOID.SHA1: "sha1", + HashAlgorithmOID.SHA224: "sha224", + HashAlgorithmOID.SHA256: "sha256", + HashAlgorithmOID.SHA384: "sha384", + HashAlgorithmOID.SHA512: "sha512", + HashAlgorithmOID.SHA3_224: "sha3_224", + HashAlgorithmOID.SHA3_256: "sha3_256", + HashAlgorithmOID.SHA3_384: "sha3_384", + HashAlgorithmOID.SHA3_512: "sha3_512", + HashAlgorithmOID.SHA3_224_NIST: "sha3_224", + HashAlgorithmOID.SHA3_256_NIST: "sha3_256", + HashAlgorithmOID.SHA3_384_NIST: "sha3_384", + HashAlgorithmOID.SHA3_512_NIST: "sha3_512", + PublicKeyAlgorithmOID.DSA: "dsaEncryption", + PublicKeyAlgorithmOID.EC_PUBLIC_KEY: "id-ecPublicKey", + PublicKeyAlgorithmOID.RSAES_PKCS1_v1_5: "rsaEncryption", + PublicKeyAlgorithmOID.X25519: "X25519", + PublicKeyAlgorithmOID.X448: "X448", + ExtendedKeyUsageOID.SERVER_AUTH: "serverAuth", + ExtendedKeyUsageOID.CLIENT_AUTH: "clientAuth", + ExtendedKeyUsageOID.CODE_SIGNING: "codeSigning", + ExtendedKeyUsageOID.EMAIL_PROTECTION: "emailProtection", + ExtendedKeyUsageOID.TIME_STAMPING: "timeStamping", + ExtendedKeyUsageOID.OCSP_SIGNING: "OCSPSigning", + ExtendedKeyUsageOID.SMARTCARD_LOGON: "msSmartcardLogin", + ExtendedKeyUsageOID.KERBEROS_PKINIT_KDC: "pkInitKDC", + ExtensionOID.SUBJECT_DIRECTORY_ATTRIBUTES: "subjectDirectoryAttributes", + ExtensionOID.SUBJECT_KEY_IDENTIFIER: "subjectKeyIdentifier", + ExtensionOID.KEY_USAGE: "keyUsage", + ExtensionOID.PRIVATE_KEY_USAGE_PERIOD: "privateKeyUsagePeriod", + ExtensionOID.SUBJECT_ALTERNATIVE_NAME: "subjectAltName", + ExtensionOID.ISSUER_ALTERNATIVE_NAME: "issuerAltName", + ExtensionOID.BASIC_CONSTRAINTS: "basicConstraints", + ExtensionOID.PRECERT_SIGNED_CERTIFICATE_TIMESTAMPS: ( + "signedCertificateTimestampList" + ), + ExtensionOID.SIGNED_CERTIFICATE_TIMESTAMPS: ( + "signedCertificateTimestampList" + ), + ExtensionOID.PRECERT_POISON: "ctPoison", + ExtensionOID.MS_CERTIFICATE_TEMPLATE: "msCertificateTemplate", + ExtensionOID.ADMISSIONS: "Admissions", + CRLEntryExtensionOID.CRL_REASON: "cRLReason", + CRLEntryExtensionOID.INVALIDITY_DATE: "invalidityDate", + CRLEntryExtensionOID.CERTIFICATE_ISSUER: "certificateIssuer", + ExtensionOID.NAME_CONSTRAINTS: "nameConstraints", + ExtensionOID.CRL_DISTRIBUTION_POINTS: "cRLDistributionPoints", + ExtensionOID.CERTIFICATE_POLICIES: "certificatePolicies", + ExtensionOID.POLICY_MAPPINGS: "policyMappings", + ExtensionOID.AUTHORITY_KEY_IDENTIFIER: "authorityKeyIdentifier", + ExtensionOID.POLICY_CONSTRAINTS: "policyConstraints", + ExtensionOID.EXTENDED_KEY_USAGE: "extendedKeyUsage", + ExtensionOID.FRESHEST_CRL: "freshestCRL", + ExtensionOID.INHIBIT_ANY_POLICY: "inhibitAnyPolicy", + ExtensionOID.ISSUING_DISTRIBUTION_POINT: "issuingDistributionPoint", + ExtensionOID.AUTHORITY_INFORMATION_ACCESS: "authorityInfoAccess", + ExtensionOID.SUBJECT_INFORMATION_ACCESS: "subjectInfoAccess", + ExtensionOID.OCSP_NO_CHECK: "OCSPNoCheck", + ExtensionOID.CRL_NUMBER: "cRLNumber", + ExtensionOID.DELTA_CRL_INDICATOR: "deltaCRLIndicator", + ExtensionOID.TLS_FEATURE: "TLSFeature", + AuthorityInformationAccessOID.OCSP: "OCSP", + AuthorityInformationAccessOID.CA_ISSUERS: "caIssuers", + SubjectInformationAccessOID.CA_REPOSITORY: "caRepository", + CertificatePoliciesOID.CPS_QUALIFIER: "id-qt-cps", + CertificatePoliciesOID.CPS_USER_NOTICE: "id-qt-unotice", + OCSPExtensionOID.NONCE: "OCSPNonce", + AttributeOID.CHALLENGE_PASSWORD: "challengePassword", +} diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/asn1/__init__.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/asn1/__init__.py new file mode 100644 index 00000000..be683736 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cryptography/hazmat/asn1/__init__.py @@ -0,0 +1,10 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.asn1.asn1 import encode_der, sequence + +__all__ = [ + "encode_der", + "sequence", +] diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/asn1/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/asn1/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fd67ac28f94b1fac534f3d2635ea82960bf68a1f GIT binary patch literal 335 zcmYjNy-ve07_^;~Mny$pM1ql_1Nl@~5p0YsY*{Q5e`;Lf9~`$**mw$_foI_bP*x_k zNF9(m;qW84;dG}veL8(F)9HjnTrEKzQ$pSb^9%MPHiuC>5lJMiiKYeBtYDN#CX)p# zk~W=<-iPXpbrUqDmB=OfE^F|96+QYShCYpSJxjZz(zh25PI3~kkS5Y Py4R1AUG_NkSxi3xN17&-6`uVgm;VweSt2D`jFj3YBaxMC8MSL9b?V5DTMGrO> zVi9l+{amu*Qrz3(W6+SatnWlV&ttFyT7`)t62dXF-oc)#MaL1#u8RDAFq zQo@QK#(@*8VB2a8v~U$B`=#47=o)bJP$Ek3EBB!Q9M!;cI*gE$&^eyWc_|Ht8yN&vEJti>g$l>1L`#6tDgF0Vlol|e4 zB)4bo=DPlLMXnC)8y<@poWnDH5jQw;a zuje)0khPp@1v*@+vIM&=59vR`xQwk4t*qH+Rcgj6&_-FpRozGmmUlU?78Qw{=g^v5 z0=gFvR3Ke37$X=oN}vqP0mzsxu6_qkpJ+StAMK1U?1r!J_^-D@@f|V#B9>~# zJ~U$=es_5{wzwI3;TvoElBO^D_srAFyS{}Te&G-fM!9a7!v`@BO@YsWc!2U~gMl#a z=YV6ZFOW2=%cO9I9cvw zaNlVp1>b6p3mtAiGAOTh1HFj@JMLsq4JG+Sf}X*=mMc~jRZ{%fXaBa~ zc(#9UU-jw63uC9G3sTZ9p`vFewW7ho;7D#>_7x7;0j0DBrZaRxfb zUrw*-mVZsfI@D$s#$p+}qqo0!#rn@VL2nWb+oB;7M!+_QZ56G!9Vk^Q7-OJ_{;6fV*2? zY3(L5EOnZ~(1+dTj&o@*9C~ToaSOk=u!LtoN|M7DV8HXFBNoILq3bsoCT5~to~#hS z1;`VHsP`LRb9BZWooNl8YK4YcBjc^1(IXEmw7tj|JoE|C&}QJsf6PB8T@-)Uy-;}b z+DiJWR->p4?l!RH!m3fl+WP6YZ(G1euW5FPPx3Uq*F#D^XM6@5r|G@n4*oT$xSs6I z{&z8VKn{tS*KTqP`0NvVzr`<>HMO&Z$xl98DmloFv%gy3z%01 zv{Y0~tDFsg#CKMt7xsXpn!XHo1nRm+h{hTPzt`fGQdy}M)%P)}U!)N0L(sQ5hGG8g zMaXP&tet!Szly<|o&eH}cA zPBf!wGnxi+c&s^`GKW)*#ebm>4)}0m;V+ASTD*UL>)k#6Y=dd_W_J0J1_L<~JlzbO zGXv)u-nJ{iTxVJXu{KAEbMM*2fiQI_kePPE%Y<746KxL010j7Vz<3yQGw0d~#Jl?x zJ`hqn!l|Z^GKJLB3wy$EUa><${E$PgtISV?Z2uCu5{*xr!h|VIJmL3*`B$vh=D7G1 Ip{UjV1CW3kD*ylh literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/asn1/asn1.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/asn1/asn1.py new file mode 100644 index 00000000..dedad6f2 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cryptography/hazmat/asn1/asn1.py @@ -0,0 +1,116 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import dataclasses +import sys +import typing + +if sys.version_info < (3, 11): + import typing_extensions + + # We use the `include_extras` parameter of `get_type_hints`, which was + # added in Python 3.9. This can be replaced by the `typing` version + # once the min version is >= 3.9 + if sys.version_info < (3, 9): + get_type_hints = typing_extensions.get_type_hints + else: + get_type_hints = typing.get_type_hints +else: + get_type_hints = typing.get_type_hints + +from cryptography.hazmat.bindings._rust import declarative_asn1 + +T = typing.TypeVar("T", covariant=True) +U = typing.TypeVar("U") + + +encode_der = declarative_asn1.encode_der + + +def _normalize_field_type( + field_type: typing.Any, field_name: str +) -> declarative_asn1.AnnotatedType: + annotation = declarative_asn1.Annotation() + + if hasattr(field_type, "__asn1_root__"): + annotated_root = field_type.__asn1_root__ + if not isinstance(annotated_root, declarative_asn1.AnnotatedType): + raise TypeError(f"unsupported root type: {annotated_root}") + return annotated_root + else: + rust_field_type = declarative_asn1.non_root_python_to_rust(field_type) + + return declarative_asn1.AnnotatedType(rust_field_type, annotation) + + +def _annotate_fields( + raw_fields: dict[str, type], +) -> dict[str, declarative_asn1.AnnotatedType]: + fields = {} + for field_name, field_type in raw_fields.items(): + # Recursively normalize the field type into something that the + # Rust code can understand. + annotated_field_type = _normalize_field_type(field_type, field_name) + fields[field_name] = annotated_field_type + + return fields + + +def _register_asn1_sequence(cls: type[U]) -> None: + raw_fields = get_type_hints(cls, include_extras=True) + root = declarative_asn1.AnnotatedType( + declarative_asn1.Type.Sequence(cls, _annotate_fields(raw_fields)), + declarative_asn1.Annotation(), + ) + + setattr(cls, "__asn1_root__", root) + + +# Due to https://github.com/python/mypy/issues/19731, we can't define an alias +# for `dataclass_transform` that conditionally points to `typing` or +# `typing_extensions` depending on the Python version (like we do for +# `get_type_hints`). +# We work around it by making the whole decorated class conditional on the +# Python version. +if sys.version_info < (3, 11): + + @typing_extensions.dataclass_transform(kw_only_default=True) + def sequence(cls: type[U]) -> type[U]: + # We use `dataclasses.dataclass` to add an __init__ method + # to the class with keyword-only parameters. + if sys.version_info >= (3, 10): + dataclass_cls = dataclasses.dataclass( + repr=False, + eq=False, + # `match_args` was added in Python 3.10 and defaults + # to True + match_args=False, + # `kw_only` was added in Python 3.10 and defaults to + # False + kw_only=True, + )(cls) + else: + dataclass_cls = dataclasses.dataclass( + repr=False, + eq=False, + )(cls) + _register_asn1_sequence(dataclass_cls) + return dataclass_cls + +else: + + @typing.dataclass_transform(kw_only_default=True) + def sequence(cls: type[U]) -> type[U]: + # Only add an __init__ method, with keyword-only + # parameters. + dataclass_cls = dataclasses.dataclass( + repr=False, + eq=False, + match_args=False, + kw_only=True, + )(cls) + _register_asn1_sequence(dataclass_cls) + return dataclass_cls diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/backends/__init__.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/backends/__init__.py new file mode 100644 index 00000000..b4400aa0 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cryptography/hazmat/backends/__init__.py @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from typing import Any + + +def default_backend() -> Any: + from cryptography.hazmat.backends.openssl.backend import backend + + return backend diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/backends/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/backends/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fed1884d1d01a2f90d9524eeb7dda7eb1829e925 GIT binary patch literal 506 zcmYjN!Ab)$5S?__Ra=Tu!Ly*31>K-tMG(YeFW!0yaX0Oz?q)-h3M&dd_z!-A-{K!E z2!eRm=v5C3neR*(Q}1%GzT2VODY8M3^k@1v@{Q zD&g{~6m*Qv(p)M|wW-F!RhE{ez7*V~IlU3;h8FUQ>KeP%adLP>t#sl*qYpk3mi~7^ z7cS`11!YVs=@?6N-E3rH$R~wke^uj8?Vt5&3NPXLYo|Bu&yYbM7mSQ>6QfLsJYH$q zj14FFAs91wENCKEYpF)_`dsV@Oa}{Q9n;U+Nm*r+LY$gSq<(4ZulpGgLcZHTcHd$9 KD+kW*nrh>4Mft&8O*rg8C?Y_}q8Y`g)_z_aiMnUE?5 zHl&KB6BpV_+;IBe_fPje7-R(PW)5;p30bwl-a1=B*GDK`Nl8koh^7-tTisC|olFwc z$&60YIvsVt+JO;m`rH^Bd6d=!40}^vJP1?z6w9}xZj&)~zlaMj81o6{n$yD9F4~#r zuB!8jKWQHG-Bie}6D9<;PyDTEdW>i|JE4^RWP~1nlIxHD@a5#W=MS;)3-_9C3;+NC literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b72dae937bcad3e8c87535b52cf4effd7cc2db74 GIT binary patch literal 13514 zcmdTrZEPDycDwu%#SbkdQs0tIOR^+d5@mf_vSr7zEL)CkS!el@noVy@b5{~&lH$!$ zj-!FU(;+*THJ-0|v8wpw;kmAzf(4xitYX6XtS_-TK7-)+2{^`P84+zkr z@6CR2Nv@B##GGdY z*XxYne$OP2Hq>ll#OC*uIfPo)s{-85@hiaQoZ&=bB^6FZR}vC@R;(n&ge1ify%9|a z(ZnL4wxzJNBw~5>q_iH7izyO~%!LJ|*d#`v$hw+}#-xBHXSsa-+(6E9Wpa8hXP%p% z&)MfLPR$S88W@3E+*CBVB$CP4;tGkTmf}D%PfpJVOgZz^nJH+yB8U-Xq!hU14>tez zFq;RA$b?vd37G^oWEM;zi)dY7LpHHu*`seH<3O!3r1}i0b%xXiLu!*DwZ)Knz>w-U zq_!DSI}E9v<khYm>DM23X}ta zRXjky4hmg@?R87YFLVnP01pWP!49wu=#>E5f$jjS*ee7DFTg(d_5lnE{X#9ket>lVk3#!;fCEt8 z0B{h#8vzapM};PU!|LxM6b6K5pp6vK289-&jY7LtfX4tH05}HlAi!~eet^dT9s+m* zU>m>*fb9TJ0_*^I3gBUYFRXV4hH@2W!jYR|Lf8m6{E)7|j+>vq!MRsQxT&39YogQk+_5v}<*vt5oZ)GmqKXfP+|p0Q{2`Q_jvS z{K}aZ7NR)|kGVM(y#XlZF0v}6ctxY-xTwT0M3WLPCc-yjqL6bJeLiM$7D z=dboB#MIJCTc;2 z@y*r~Z(9Dz-js)Kibbdb2vmd?00Gm+!s2RTgtg_QF3%6a+(8XZfYfq^ff92{6A>d3 zf*O`Tte9s4*4d5531tH)v+cem5(%u)asP(B*MIK9+&o~8UjHR=F&tS3+!QzkM#iVG zj#sMlDRC`D4#Fr%D`dHPK1LhxuxPiUf=Kw-N>~sD;)hasjY%6;1b!1SNs9R`Q!Zjv zncvTw`&`-wOyIouC%WkD1rK?_3hdE6PfxG>AHyz z&+J%D?$hj!*;45s9ne`s&n@7!%x~1z`)%3V?0d>u%rgWHRlp=~22Pc4J}gNhNdf&3 z6z5DUHzoWvzh9namC7%<+D4r!T*dUO&_wb=1|r7QWx37_*ZGiaa!1nkBk~mVBB4#; z5wzHE3Mr@~CnHUxPLI{=E=^;oEepC!GQG%ro7L&LJ?iQ;*1Ezzt1Ko?Ss74GkaK9l zA`vv&vN-tx(+iACQ6RLt?Bh?l z<}BBf;d-{XzO=nB&GnUS&~k3$a?%ZY1d#o>t!`7;WbDS@P$PoI<{XKF<%zBPC2-*q zi~dA7F8Ws%{HZ0;FK-ad9)VUPVX_|dUt5Ywe)tQ1qSjAB1luHqNff%mwi5QEY(;+< zs;B&~0*I`{lTpyM{_tWrnvhaKht|XNS~#AJiO03y8ww5v2mC`v{V#?S{=uVz!&+64 zY24GK6Ei<#y5*q6jTUtkRB6_0g;%hJEYqJ=F`kwzcQnHt-Q)(-_QC%%E~}f8Dj%+7 z7^Q>G)s6RYtXBH1{w+dSlQ5ob~j8SYL+f;OoHm8%yERHM@J1|Sa@P}KlS6RA(( z9;WFwDtv5JlGIa##ICa`ZI>;BFH)M8ouw3p(JQXUrrC1=8{JhoM^r+A2qz+9&LtaS z`H&$mHU3Vn3Mss_noO>clqft_R9j_OJv`_&92tiu1+`Y(bP39&VaV<<+fFX)Z2idD z`tI_R#t+YCCoX3uE^l?tZhIR(L7ui{xV9`ekl_ZN1U9*ew0&X^-V*3?SKc=3dAqkk zRC!E*$FK^T-viw%NzX?z3dDd_R!_$OCzM^5`I*T9$_8>AhoABAi+!B45mz z4ZkXKyVXcwUwC%7!|XU1mq+2=kw@2mYWrK~Upcqh&I0eYIj_vShvRyQ)LRQpA_eGd zSFWLyX)?Jt*NkLPFsZzpXC9kp&*f}j`=hr+gOx8w=a5+k0Jmi#vKv>#7~GtI+KmNvaFq+KtRZ!CV!6%4CWkA4v@z>8a^_*iwdh+iiaaQ!P7k0V)}Pr zRMKmZ-C>?-s=ioR)jxICXPtc?Is2Y^Tem%ppZJ;{T)cnrDF8S{?FQu26_m=z4ri~f z$y=SisvXAZuG(o}JU$~0sOd5olD5g;gpXYX`YW)>w{==lwkEP!CTLC6gK>mL>LhuI zE0nLCM@9+@5irXq4x3z%v&12UC*icg-=v2Rg8pzpd6stYeJGXCdh3icxXr!;Z!bI) zvYlg@&ao};_;!5@wa@Jtu06{QXSm@fFMW7zlRJ~PpD9-z`1A0O&36DoIjy%uK*OXL zaoK-k$=85hZa!<1H^5R1^2MUI(W=@5!{Q%7SBl^H1+3$j^zMuNPH!Zfq&8k8WQFkH zUPW$}nKh1&K&*E)F7mXNv{A3lqNLzYaQr%Nvp>W2Z*l`^`#?FrQJGSH|2H7JO7@pk z)wr58J%=jR)Vtc2VRS0dK;`R7pIePDSPSY@-cNQzZHW;DatX7`n9X8V=BxSmm9UsB z_0zN?j#25KLPyd(WV$W%Zn4q>@3wK#U9bl`k>lGcdaP!tblt^N((gCCw}z z2#tF)@H7hZS~msEv)9fAT+~t!H;jTHyCLElUtA!#BJ%mp#Y^E>3W9Kn#ne*HefGln z>G^B?rRmx8*Jh}JhiHp-jw5(*B;SBcJ>yj*<=dsALrg7^!n{&Yus;PYY*_pO^eW+P z9h{k+wQnuHv$o~z-uBi%b=SXL@ve8vefa$&PhS4XD?fhaXTw`ZW_GHW>e{TQ?ITay zwy!zs>(2PP-=E6%p3L-~{K$9mS$zw%&3ZdC-p+@w{@Lw6zMbtlmFYSqyRdSfzAbm> z`^TRw{v`I}*w4;x^<1DWdNbbMZBP9J*L_#k)0Odb<;^Bv)u)Wfcba`xQE(Z32o9+YTW=V1}YMj+9`#+7PF7BBtS1-(-hl?AT zGk)km7naJo1>l4hy4a{yZEO)ajg2}WyTg0}aVgJe#)C8alwsXn5W>&;Iy1h`w5M~& zYBtitnv-)5y4cOhQ3HV(zJWcjnNnz?r1I4^k(*FPPGMGNo@#IkB|(HH{q%~<{uw%v z+8~2<#Tdb%40mXYYga=Cy&10e(e+L4SlWK9T+X#S35-kcHbc;`+N|K#f;9?aZNSZu zs>M|KhtQ~LHctfzd|32R37)}njvKL+$W2~~ZiwZxZ;0S2MAKZlCDtT-w;KNfol8d` zQ#jF);X1$~|GxD0v4_{QhsQJUw|RWC{y1m`w7n*yHMc-}m@S)s1CU*J{#S5>P`L^F zglY)=0is&DS&Ilud}Ni}66He#L7yzgQA&Yv>Wzg}u8Esiy|ic$W3gy56^+Qf6xtM` zR=d@B2Hi+_n$fG1TfcHo%N2*-+h-@5y)EEmjh!AGl`+(_C! zBFmyCSJ08hdF)yre%E_FMzW{Mo3aCq^sPzdCg`L|{S^pEvymgKc|JzIj{19RtR&lc z?Yb2Pt|a4r)lsNxYL~4%T{i3V)YeBT`vh~B6`r!|jv!gF&Mqk`?T}0h{hSkn<>GsiV z`{_*k=}m4@r=<<$2Jazu)nR%GfJZz9jRw+%l1Gz~AF8glYOgHv5~1kJ`^^FiH>0cw zT{(jl=qcf)xE5IoCl*CRMK`p|0_@f3KVdjhFJurzw$Vt5j@zK^e(FF?NFKa;|5ea_ z<9h99XyIRkuD+0kuLfR1T{#);PR-IkmMuM5hPnj%FFQHAK%Es#x_0xYr~VhTqcMka zi+=2>&!6>;W_+V*&!|pT4Cglt{p_aQjl3Cwz1hux&jJ>W_@FH)ReX$;Yn{?PKj3F3 z=lSWE=J>gb)7Sa4Grv|g!-FuFwejIW9mzKcOJSH!P zH>iVtIO9E><_@Rrhsy`2d6wVZV{r7Oi#2I7mNn4t9Uzf~S_UUe>Y1Y47HS#T0Lluq zypNTOAbRuIQ0k^$x^U*|GvNr)+KWW;%G~rUh$BBVc$B|# zl|O%Vdh*)zRpZUvDn{_EA&Br8E)I{PB=iIe3iz{hK`QtMy?%~%F94I>?@dPoc3EHO^IleF;+;5+dy7}dSzRR zOWuq~$8-bN1goT=3rGDO?4kp*S$NHBBO*ki6FJN5Nm{nW~kZA>TVp2 zffW6^{#{`3iv0d^8bjv40Y8n8EC@R3y4DuzGkxw6Bf)9qNHT@z8eJ6|`7LO((N^(TY!3b!{k_sUr}42GzS!Y;h@SCq&$1dr+{N?XTn)#Rk_w&| zRw6*QAc3IsPv$X0Q$sFdb_ugW1o{eo&Ow&5!;Rb!y^m8cxV4ipytk7vytzZ{;`G4a zn1T($t=$;*f`%$rIX^u$2bX$R2NZN>2Y)~hk7cn#h`<%ZiuG7UE0sw*jv8DihM;#!j$+n{ z8G2yyO(YG2OylPaW?#dMMhmVZhF(1lU6KXFmN28ylQ?4E#EhPqZX@~}G{kJ;~G_I=FW#_SIudo1rL`5MiORLt<1qx9#n=U!)iVKQ0mJ9frZd*>{Gy2iK8 z-MI`%C3nw#*S&48G6Y$BW5(VHr5bXNyUStieZWqm+h@CTY3Be_>AdH<>)N(E%E3;h zwb7Qg)b6;L18r$b({@K7Z8@~v()!T%g9~X(<93T5^X8VceQ(0CvUUDXH|uDC||=`gL#|9dUD5AVGV9K_U)JfKC5)+tpM{i7VD|J%VIsv=3UkB z-C1FsVwFa$bue#pLzf49*2a9V#d-{DI`S^Fbu8~N1Lm+5K`vp4 ze{P?Ub@wUqcR+)E%t)x0cg!ry{?fs)?f=G{`Kw(nW4yqUzx0|DbGOmOP2{U f8)Uz-nIUssvapU{Ff{*$opILuPT;i)`eXkC_;26! literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/backend.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/backend.py new file mode 100644 index 00000000..248b8c52 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/backend.py @@ -0,0 +1,302 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.bindings.openssl import binding +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives._asymmetric import AsymmetricPadding +from cryptography.hazmat.primitives.asymmetric import ec +from cryptography.hazmat.primitives.asymmetric import utils as asym_utils +from cryptography.hazmat.primitives.asymmetric.padding import ( + MGF1, + OAEP, + PSS, + PKCS1v15, +) +from cryptography.hazmat.primitives.ciphers import ( + CipherAlgorithm, +) +from cryptography.hazmat.primitives.ciphers.algorithms import ( + AES, +) +from cryptography.hazmat.primitives.ciphers.modes import ( + CBC, + Mode, +) + + +class Backend: + """ + OpenSSL API binding interfaces. + """ + + name = "openssl" + + # TripleDES encryption is disallowed/deprecated throughout 2023 in + # FIPS 140-3. To keep it simple we denylist any use of TripleDES (TDEA). + _fips_ciphers = (AES,) + # Sometimes SHA1 is still permissible. That logic is contained + # within the various *_supported methods. + _fips_hashes = ( + hashes.SHA224, + hashes.SHA256, + hashes.SHA384, + hashes.SHA512, + hashes.SHA512_224, + hashes.SHA512_256, + hashes.SHA3_224, + hashes.SHA3_256, + hashes.SHA3_384, + hashes.SHA3_512, + hashes.SHAKE128, + hashes.SHAKE256, + ) + _fips_ecdh_curves = ( + ec.SECP224R1, + ec.SECP256R1, + ec.SECP384R1, + ec.SECP521R1, + ) + _fips_rsa_min_key_size = 2048 + _fips_rsa_min_public_exponent = 65537 + _fips_dsa_min_modulus = 1 << 2048 + _fips_dh_min_key_size = 2048 + _fips_dh_min_modulus = 1 << _fips_dh_min_key_size + + def __init__(self) -> None: + self._binding = binding.Binding() + self._ffi = self._binding.ffi + self._lib = self._binding.lib + self._fips_enabled = rust_openssl.is_fips_enabled() + + def __repr__(self) -> str: + return ( + f"" + ) + + def openssl_assert(self, ok: bool) -> None: + return binding._openssl_assert(ok) + + def _enable_fips(self) -> None: + # This function enables FIPS mode for OpenSSL 3.0.0 on installs that + # have the FIPS provider installed properly. + rust_openssl.enable_fips(rust_openssl._providers) + assert rust_openssl.is_fips_enabled() + self._fips_enabled = rust_openssl.is_fips_enabled() + + def openssl_version_text(self) -> str: + """ + Friendly string name of the loaded OpenSSL library. This is not + necessarily the same version as it was compiled against. + + Example: OpenSSL 3.2.1 30 Jan 2024 + """ + return rust_openssl.openssl_version_text() + + def openssl_version_number(self) -> int: + return rust_openssl.openssl_version() + + def hash_supported(self, algorithm: hashes.HashAlgorithm) -> bool: + if self._fips_enabled and not isinstance(algorithm, self._fips_hashes): + return False + + return rust_openssl.hashes.hash_supported(algorithm) + + def signature_hash_supported( + self, algorithm: hashes.HashAlgorithm + ) -> bool: + # Dedicated check for hashing algorithm use in message digest for + # signatures, e.g. RSA PKCS#1 v1.5 SHA1 (sha1WithRSAEncryption). + if self._fips_enabled and isinstance(algorithm, hashes.SHA1): + return False + return self.hash_supported(algorithm) + + def scrypt_supported(self) -> bool: + if self._fips_enabled: + return False + else: + return hasattr(rust_openssl.kdf.Scrypt, "derive") + + def argon2_supported(self) -> bool: + if self._fips_enabled: + return False + else: + return hasattr(rust_openssl.kdf.Argon2id, "derive") + + def hmac_supported(self, algorithm: hashes.HashAlgorithm) -> bool: + # FIPS mode still allows SHA1 for HMAC + if self._fips_enabled and isinstance(algorithm, hashes.SHA1): + return True + if rust_openssl.CRYPTOGRAPHY_IS_AWSLC: + return isinstance( + algorithm, + ( + hashes.SHA1, + hashes.SHA224, + hashes.SHA256, + hashes.SHA384, + hashes.SHA512, + hashes.SHA512_224, + hashes.SHA512_256, + ), + ) + return self.hash_supported(algorithm) + + def cipher_supported(self, cipher: CipherAlgorithm, mode: Mode) -> bool: + if self._fips_enabled: + # FIPS mode requires AES. TripleDES is disallowed/deprecated in + # FIPS 140-3. + if not isinstance(cipher, self._fips_ciphers): + return False + + return rust_openssl.ciphers.cipher_supported(cipher, mode) + + def pbkdf2_hmac_supported(self, algorithm: hashes.HashAlgorithm) -> bool: + return self.hmac_supported(algorithm) + + def _consume_errors(self) -> list[rust_openssl.OpenSSLError]: + return rust_openssl.capture_error_stack() + + def _oaep_hash_supported(self, algorithm: hashes.HashAlgorithm) -> bool: + if self._fips_enabled and isinstance(algorithm, hashes.SHA1): + return False + + return isinstance( + algorithm, + ( + hashes.SHA1, + hashes.SHA224, + hashes.SHA256, + hashes.SHA384, + hashes.SHA512, + ), + ) + + def rsa_padding_supported(self, padding: AsymmetricPadding) -> bool: + if isinstance(padding, PKCS1v15): + return True + elif isinstance(padding, PSS) and isinstance(padding._mgf, MGF1): + # FIPS 186-4 only allows salt length == digest length for PSS + # It is technically acceptable to set an explicit salt length + # equal to the digest length and this will incorrectly fail, but + # since we don't do that in the tests and this method is + # private, we'll ignore that until we need to do otherwise. + if ( + self._fips_enabled + and padding._salt_length != PSS.DIGEST_LENGTH + ): + return False + return self.hash_supported(padding._mgf._algorithm) + elif isinstance(padding, OAEP) and isinstance(padding._mgf, MGF1): + return self._oaep_hash_supported( + padding._mgf._algorithm + ) and self._oaep_hash_supported(padding._algorithm) + else: + return False + + def rsa_encryption_supported(self, padding: AsymmetricPadding) -> bool: + if self._fips_enabled and isinstance(padding, PKCS1v15): + return False + else: + return self.rsa_padding_supported(padding) + + def dsa_supported(self) -> bool: + return ( + not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + and not self._fips_enabled + ) + + def dsa_hash_supported(self, algorithm: hashes.HashAlgorithm) -> bool: + if not self.dsa_supported(): + return False + return self.signature_hash_supported(algorithm) + + def cmac_algorithm_supported(self, algorithm) -> bool: + return self.cipher_supported( + algorithm, CBC(b"\x00" * algorithm.block_size) + ) + + def elliptic_curve_supported(self, curve: ec.EllipticCurve) -> bool: + if self._fips_enabled and not isinstance( + curve, self._fips_ecdh_curves + ): + return False + + return rust_openssl.ec.curve_supported(curve) + + def elliptic_curve_signature_algorithm_supported( + self, + signature_algorithm: ec.EllipticCurveSignatureAlgorithm, + curve: ec.EllipticCurve, + ) -> bool: + # We only support ECDSA right now. + if not isinstance(signature_algorithm, ec.ECDSA): + return False + + return self.elliptic_curve_supported(curve) and ( + isinstance(signature_algorithm.algorithm, asym_utils.Prehashed) + or self.hash_supported(signature_algorithm.algorithm) + ) + + def elliptic_curve_exchange_algorithm_supported( + self, algorithm: ec.ECDH, curve: ec.EllipticCurve + ) -> bool: + return self.elliptic_curve_supported(curve) and isinstance( + algorithm, ec.ECDH + ) + + def dh_supported(self) -> bool: + return ( + not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + and not rust_openssl.CRYPTOGRAPHY_IS_AWSLC + ) + + def dh_x942_serialization_supported(self) -> bool: + return self._lib.Cryptography_HAS_EVP_PKEY_DHX == 1 + + def x25519_supported(self) -> bool: + return not self._fips_enabled + + def x448_supported(self) -> bool: + if self._fips_enabled: + return False + return ( + not rust_openssl.CRYPTOGRAPHY_IS_LIBRESSL + and not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + and not rust_openssl.CRYPTOGRAPHY_IS_AWSLC + ) + + def ed25519_supported(self) -> bool: + return not self._fips_enabled + + def ed448_supported(self) -> bool: + if self._fips_enabled: + return False + return ( + not rust_openssl.CRYPTOGRAPHY_IS_LIBRESSL + and not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + and not rust_openssl.CRYPTOGRAPHY_IS_AWSLC + ) + + def ecdsa_deterministic_supported(self) -> bool: + return ( + rust_openssl.CRYPTOGRAPHY_OPENSSL_320_OR_GREATER + and not self._fips_enabled + ) + + def poly1305_supported(self) -> bool: + return not self._fips_enabled + + def pkcs7_supported(self) -> bool: + return ( + not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + and not rust_openssl.CRYPTOGRAPHY_IS_AWSLC + ) + + +backend = Backend() diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/__init__.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/__init__.py new file mode 100644 index 00000000..b5093362 --- /dev/null +++ b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/__init__.py @@ -0,0 +1,3 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d842972bd2eb33dc0155b5c0d7ff6d9548f494ca GIT binary patch literal 209 zcmZ8bJqp4w7;UVA2t9~{{ZLnNbae3mAx%G;)aHjI7UD%bgS)rz7@k17buwLj@OVGG z;k}Dul_i{7kguelDg0xYr{c#`5Qp-STY2&y& XC{y1$Ji0|XKob3AzBwVp<;nd3SDQN2 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust.abi3.so b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust.abi3.so new file mode 100755 index 0000000000000000000000000000000000000000..f08839772bc057ddfb793de9ca00fd1da695bcf0 GIT binary patch literal 12955672 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

i+$R`~DrC&vl%_W7P@a z_jCIl-g%1E>B9S}6TuJF_d7lK^3Rr^0X$Nj7`}Gjzr&N`?RX!-JF1hykJtAOV|aMF z@U_F}N2h6>hi`sp{SSUu z&CiRqUNzv8n=3!?QguT3dG7ZU;LDpSKXlcJ;Lmp7U%<;Vtj+*ls7?(3s{5Tic=L3t zGlJ);lfwHQeSZp%zHD`-@Jw|w_<{O9cLtB2WOe57iRu*aSnoeC;FBj>ofSM)of3YF zbM^iPyfajO;EC!4zpv)!LHeGk0Wbfq>r8m8IwAa*I*+vBvDS?)ystVDJkxtAJ$Q5@ z+pYm!bz=DcxPONT9-nG;M(~d6r0`Sq{_q%{e%|U#;i2ke@I(J?`)dYo-cqZY=>|^~I&{ZdfxAc5|2rqU~e&D(4r0^FhhhzA%sre~<54@u~Df}e& z?=r*V>urBc;i2ke@UeccUvHqQ`89dW`3ixx} z_Yv@1^-K7@^gL}1FEl>*W3~Tx(DB=VFEu`d=lXZ?+VE22BluQ-2ik*&uK(~{`5eMG zs-MDFn$H*>eA~`D8T?T9+!)@}_yWFi|85#Q)c6v-pyb zKGFCR-dL#r@J!=_KUe$z6}|7*fae+?(%rwO36HftMDSGC`91hV`zwYQ?%xfhYd$G_ z>+%m@YJ3L&v9@;xFEze^zs9XU@Quco@J!pgh6mr#b>rpL{!jFKJ`H$N<3spBe@E7a zhZ-NjbFH^Mct_)7c&Xnd8^R-vPvPD7>An))*Z2(nXXSYYk2Su4H-2jM7x2FFR>Di= zXHD00yx@vz|2t2&`VDwr>vITylRN*yBe(v*SFZo?#PuH@yxrzAgh!fx3SYW^Hx{0{ z{=*js+V#l{K5_kr$Cs%8@J!=Nc+Xw`z;lfcuB`U|neO}xFEl=cFZFk|ZMw!s@Uf1U z9=z1}nC`x}g>N)Ig(uqHF+9-s*BShK?)@uxqC6Myj@I)9JW<|C_}_Hjw}x+A{{K?# z|7+cSE4<_K4}YDW|Fq!~jgR0Tao3;l(yjmSFKhe|-c&zRc;f&)SBHnL|L_C!z4i>A zYW@X$r00qYc;@;Kf0O%O10HDq2AgXC_t5=X1D@}v`#yM6_cbB>UheM};pLUO?}G=b z6Ty#G9(wTXR6RFJ;#IYX2_a*&nSBD|oItCA_QmSl007f7^ZW7M`h2@Yia7e&D{}golr_ z{C0@5kXC9T#1ApgIx!Ho89S!K07bIyQiBzOVHM ze)U83yNmGRGkWd>FI6XnpWvQ*!^@Mb&J?~>oech&{q-IuJUG$n%;AOV6!1^F-vfb% zpR_tFc&<7ne5$|KSi?6vS)DCBQ=Q=N)%@H=`>O$;{IAYmbkzyrN9jJR4No6!dG69x zCxRd0)*pEONUJk|C#n;}KdkfM5MDmq>WtvA>ZI`f^xoqbUVP7TJB8=+41SSvID@AT zv_8+_nd%hqSbxv5fG78}IxF}@bxQb^%HbMb9BXy9@KkkztE&0=hUzrnaa;L;C#n6n>2R_psp6$F=^z zJF1hx@2UMhgU3^?Kk!g>3i#2=;R2q1SnChGsX8V6yqoKLTX=S?)*pDFI>A4x`MH(; zUaSEx-fwkU@Xf-GyAb|u_jil%@@T8mrK?T^|A6*;4<5Y7>I~pZ)rsLRa_DemtU;mISEA9$hpgzyvG_qOoxDCGyZwmjiyMBiEwZEqDLUl6uRL{+3@MKTr2Oev? z3iuVu^8y~d!}_y=cT}f@zv({84?KN=)!D+EEui5@;T!k71^!jtclY4sWmabZU#dLi17W^9{+wVPi@I zkKxf1%xCcQ0P`FksLleO>}%tf@JQoV@cxTzdU1FRQpgq+xpprN6#^D!((|5 zzR`Xk!d)H`c&IvKczURP?hM{^xq?shTz669CH$1*E&p5i-?U#E|E~6D=Mya_Ex4=G zsqtQo$2C5J-&ogU6L_rr&)|7%eaqpg#?RsII4a<$=zO=T@eTZ8dcUP{ZMARicnslg ze7DB?H9oBIw8p13p2L5j^UeYu-bm+J__#1{U02=S{&D*U|NsAl@Xy`b#&>JHU*ki# z``i@n>gVwOwU&oDd~(Al@0e!+Uw_VWzJ%}l-|7S0eQxldY9HJ@TW~kNQ{z2&|IIef z7(O}DJcVyQX+DPEN!K}9jn8X*S>x*(53aBF!F_J4#yfD=w-{b(yN2-ApX|Jr!Vl4N zn<@NB>O)@RiyAL$d|Ttq;P@T+YV7#mLEt{OUE@)W4{AKA@o|l3aCg3#!(HE&HNLL# z;0D$0b#+=b-l_2({EfQah--XQx*(4{rSb z-riP?cWS&><8h6TYJ38B*HJULyFMx4SL%9lRpXl)Z``EX2UjPAXZjwtTjPDW+wViT ztCQCF6zp&#^V|v)%c{wXEk2b_^QS?HQs3azxxo@c(=y;H9oBIw8p13p2OXB z=>qPKmlE#AZ)?1H^J*X5_;!s)aQC?bxI2!L8XwnqR^#&;U)K1##)Df_x7W?HRpXr+ z@6~u*@*JMY=Wv(9CEVpn3%`A4$8Ynt)jqgBx8d%3BdYO1jVEyTynO<9pF4xQ{ZiEU zs>U}p-q^Ley{>*(YTcPJhB;8&Kb2<~zu+jVTEx23v zI`B8SKEO|ZmaVIU8c*P^{uq7(z4w*D-E+=4+|^maU7pu99^A3o2RFV|+P^Kh%XtTWs{1?c8jovy1b?#D;Yp3pYP^8|Lhmtd z;Q52?`|IX^Rkt^lci`nqZG0E*^45pD{0!l4d|Knv8qaHdQR8KeZ)?1{TeS~vp6wcs zYCM6LAF{rU;P)zR{T##Hah<_kKj$^Rtnqb?2Y0S+udCmx@gBT5$hK<;U%t$I3{T|~ z_@i|FIjivkKGEMfu4;S(ciYw2y}G@Z>NpMIZohYHd=a=9v)$MZLs_{;Z_i8+bU#;Ax@PElCa5tYB+>KwtH^*3hR&aM;u&MDd zto9-Mgw<)oU7Z2E`C%I$!`=7^Jl1~9;f3nV;iv!Fj`s!pm+}?-xAHaokMb@2Px8iH zt9@|eTk!vAd>ekJ-`G6+@Q$`Ofd|U}1U^w8a`;l~;S%nSixvE`@o%vD?^j zJ%hVGtl&-6-@;SX5AI&=k9#iHg8xc?pWA^y?swL=2tJYb;jTYJ_-3I#z$f1~pTGlc z*9^Y=l#S2fZu|o7#xLRJ53SA`zSMr)!2hJ}4en9x=fC7l_%-r2{Pw?B4&i&qd+>+K z2XHrj2#=J{6rOxf{f9qW^`~&RA9HxAI&*la&t1X;jbFiCo;UF3V1pW$*pTU#=*!TjzIoH;K1>B7<;ck3z zuWElL*IWG%Ui{lUf(LK3&+Wk<^9Rf40Dg^rhcKz}G5lcFnZhUX8Qj$`YJ3HE_1Ex^ zss0xJae3q3)xNpU4dKUYdM( zqxE3}5AJI7Y22sUx8!c-O?ag7Ex4O!2zT@B!rl5ggomo1z}%$VB>pElwe}w9+;rq(B@SePJ-)f&fru)Yb{uGVxz}@&B{5cvwfWKNkgeUS5 z{22Kd{vr7k?)sL)dzTN!KIf~_uT)Kqk&#*ed{j1wmj?6=N_%!o2U4Qq{gS+jGYkXAWlNz7Z zcv0i48sF4-;{nw^xcP_h4_t2hy#xQGJc4KH+W?;IXZ?)f?sG>qp27dD&&}bN%L}-x zzk<8`Y~bWUxn+%SYrOg3YTsO)c8y0hKB)0AJW<~!@PBK&GWel7j^^;z zwS&s@s(xXZx`M&pu?{gu8sUYdnIx+z#OGyqUoLbs+rYzu5kr!cUdY;Q2>v z{sp}AVe=LIG}T$dzbtR;QSF=aHhiw}UHI4KJ@`fP0sLb52wuv^@WvbL`f3VypF4xQ z&z-~F=dR$F>vPxeTW@T?G#*;*PgCB4yYXH4o*F-ZA1NQg$MO-}ZPyrntj15_Uvs}B z2QQVACEVp|4G)yJ4g5U)onvFqYJc4G+pxyFaCaQ_;pyp?=ONr(KaAl`ji11;)%(LU z_+#|D6Ge@$;BKB9c%bu3<6+f4xOukW`FCu)I`GL)%=_>{;|KKfZTtwHX?zM#eq`e_ z_(bDp@a1_nK8FW?wd10IzgFw>20r<&)!D+=O}k!d?p5uZ%T*g5Tx4}3czlU@58k=h zybpKx`vbVU-%sFfzi05K>d)X~-LDmJH~$s9___K6PgdqZx7we{P1HB|YyM{YC4{@r z?ZTV-+z9UGKdAAf#>X|D)%d)|m+;SMyGraQ8esgTLTbcK({z__D^=H6A>?x?Oj9tmUCq#hNO_qSNzk{Tb^cvj;}c%<#x zz&Dy_^O4oh><>Aw1km#|u2w_!#cylfom7AH%p&#^V|v)%c{wXYk$sVaN3x{sj2~?zXF}@okN_qiTQp zPqzKugS-9Mhx@;aukjTAfcM*epVoL@;86J_u*;cwGlSyq1t&(AO)(SP~E9rI7&$*;`E@Xevt&kXMRFoU~3 z)ra8m)&1-G(15!>gzzKvJB=OqT6vD(Pt)&A z_TkrSd<@U^?-M2PSpV)%3J;!X>)r&OoMHctOa{;O@3Z9aiRu^do4(nO-z9wMt_Pk_ z?Pqv%%V7(i?Q9;x!~LFP#}~Z$O3Psfp1#_=3ol<~9>M$jSp6P6f0E_D5AS@*>I~pv zZXUxYrTe#0H+~*eVa|`#mh5OvXeQx1Cw{V|ZxX&%z=N9gByI)Oi z;Xb!;pIf-kE!^i8?sE(GxrO`O!hLSxKDTh6Te#0H+~*eVa|`#mrMukHU2fq%w{V|Z zxX&%z=N9gB3-`H&``p5PZsGnq0q%1P_qm1p+&--)w{V|ZxX&&968nCw1JC7McwZjT z-S=g1pIf-kE!^i8?sE&zzhK|XBygWwxX&#-|Hkv}`!aZNmiYu;{=`0a3eS%<&)`0{ zaGzVa&n?{N7VdKk_ql~PwI5gT@&lH$67F*g_qm1p+&;Y~w{V|ZxX&%!jO>W^nw{V|Zy2~xx=N9gB3-`H&`{xO8pIf-kE!^i8 z?sE(GxrO`O!hLSxKDTh6Te#0H+~*eVa|`#mh5OvXeQx1Cw{V|ZxW6xh``p5PZs9(+ z&#lQV+~*eVb4z!*h5OvXeQx1Cw{V|ZxX&%z=N9gB3-`H&``p5PZs9(+aGzVa&n?{N z7VdKk_qm1p+`@fs;Xb!;pIf-kE!^Li!F_JwKDTh6+vnBf7VdKk_qnCJ+`@fs;Xb!; zpIf-kE!^i8?sE(GxrO`O!hLSxKDTh6Te#0H+~*eVa|`#mh5OvXeQx1Cw{V|ZxX&%z z=N9g-6W~6#aGzVa&+UOVxrO`O!hLS(F1K)>Te#0H+~*eVa|`#mh5OvXeQx1Cw{V|Z zxX&%z=N9gB3-`H&``p5PZs9(+aGzVa&n?{N7VdKk_qm1p`!cxCE!^i8?sNP6n%u&D zZs9(+beCJW&n?{N7VdKk_qm1p+`@fs;Xb!;pIf-kE!^i8?sE(GxrO`O!hLSxKDTh6 zTe#0H+~*eVa|`#mh5OvX{dx=cxrO`O!d-5+^g~YG@!nnVf@+>yf3)8PYQU4H+V7q< z;g5NO{oY6i9_zpN;k^^B{s{h_2U?vJp0!`RW1boO3jNN~3_j8L1^hc-vd>+@H#=GV z4g4bgzS$P;#+rI_8bK#LY`d`9ttMO~Nn}6d))&4xJC;vh^u{b<3so!ntvPa#`oZd z{n7f_hr9VF@ZViy^BKWQ?XM~P5f@wi4DQAk@J}6K^%rnA|24d&<7)$V^_wrQ_U*I! zeX|za)$hXJ`5c>n1b6FC4FB}CHhu_q^~dmw?qSE*3VyqttWNtS)%hQ;^>#$x%jzuP zk387=*?MWU&R4X~4B>07Cv*5;mBYr%s&!tg<97hRuReDMKU1H(g}>p}Hvis1)%y2T zAExjd{M)u`4S$K&x9)#e>paUH*YG!L{ww%l@3;ExmsjhI9%B1t1V2dgU%=1a-Nv_u z)jB&*loR+pH2*pL=GxxIE2?!yT2BV>OO>k`{4JXQ7QUyBqu#;Q`seC*!=~`Fl=C(G z80E8jNVQI?d5+oETIWdRd<4Ih^0|ONSI1rJwWy>0GKBv}eVD^vuH&L{ShdbUsy~2Vtv<}) zM``|B`0sVR^j=r3|2B8M1iw(@*YGdsxahvVT4${79m5aS^~nnUQRSrlKh-*ism=&~ zQ{{F6|C&4By`fs?zrL^a2Y!XNYYso=TecoHM%6keX`Tc4W8L}>e~{MmEqtN#e(#Od z`oGltr|`F^Z)^CSl*8!oYMs)(FA87E`|v_OfamfQp2^4XiM)XO^FI6)THiKsx4#;1 zs&1FtUm^TvE!$sRxZ7WS_=D89A^Zc%TMEC$rz}4id|w?eIo!>^fV=rG;cosV+|7Rj zck>V4T;{%Y;7A$%X@KZPHs<7f&$SnF60f0uj#f1N(J zgdgS3@9^L1IBLG7+MmA8Q*HS9TK^;X-?csr;P29YPvDPHuEy|*uDde$b(-fKzPtLr zgnw53T*FUPAA%#Q+xsESvjsmvIq$%4bWdHE!cS5C82&VE?+Bi{`ylv{y3U-#Kc@54 z68=%me+@6Szk(yH+xvTY3%;ASs}Da_eMsOZYJW}O=jr+|hyTMpSAl;>eb~VF&~evH ztMh-b=GlSYR_jk6es7%z6Zqb$Gl9R~9e41T>9|@YChZw^rwWw({A5U$6f3 z;X6OT*6jq|RevV%i*!Gg!&~al5`Locvw=TI(3ni8(l{&;h)p>#s+?nj=SLP)%k}Hx4)-uz;`{(`rL%yN9#-oU+!&n+VDty z>%jNXbxs8DKicZ_;P2OShCci_c??fApCSAiI`1U#KPe|EJW+qf@clLa3H+t<3?6Ad zGx)wb?sB+$?pnYD)mgyb?v6+JS;}(>PxrDuui+2Y{tezy%}MYmB4uKbY+V+m&*XVpPfgh{u?F=5P&J6wu zZC4K8OY3t1@2JiK{#UI7C4BNY?O*sywY?kotL4EvtNVTOSnYTCCv@C3;WKSl2#=p& zb=vT+XnY4ATxZwM5xj`3P7j`FUG2j^rR#(k9`9pyhVZZJJe9!Tq3e(o9zWjdjN#wV zc1_?NbG|X#c`Ls`F_Af3LPTg+~w8{)InL>)QnW zLDk9NWk>rLp6mJ{hwrTX7x3o5&dcFZ)&24Uts8Clr*-}v!Y|c46Zj=MUUK-|^|^C+ zspDb`fA6zwp3%5E&tE>%j_WaetN}FWy`I+*th|z}LDD%HR`S56s}ZH0?fd4gZX;dpGb4wOyT~tMj=+dF#TD z)jBYOpR4=O6#j3`zkpw_b#(#%k3P5YzUq7qQ-7N9n+$CK_TithpW)XlhY5V3{Ey&`Ywft3!`=7-?#2i2ug=Gf@4@%h zb?gNGLmd|-{Ghwo_HN*p>p5zm-vema+Z@5p>Q58?Go3d>_@(;X4*WD-$42lwsXsBi zeDZU5%wPx)dgckd^HlQ@e4_Cw-2Hn)6S({LhBA2gJgYy0NAfv5Iof_ds(>&5V87SB zplf^ycmM9v8t(qxr48KuyGvWR`*)Xu4^(sI`p|^CK7?@h?=H3B?%!SN!d)LCxa&iY zu0FW;nq3ZEABG&Se^)DkyFQHIt`8~P^P#y!yNAVP{3Uu7Ic>fxa-3j z?(+b5eb~ZXAA)0R@&I>z2;r^|ZMf@07w-BH!CfDEbe9Ks=c4D?`T$>EXr92+3(QCG z;#cM=e4{#JcqpI1OVyvk1C7t%o1fd~&fw|A<~e+GiTNDf`K5UQpRCLm@Z~SeH}Lob zTi>?u^d$4(gVmfwpD}O1OL+_4k%#c|EUVLoyTAMEz&q#K_%3|;ee(z&YWx5mTxa7) z@aPQl6yCqqd<<`@&J>>h$i`>zj>ga6kvxaH_c`Zq_dR6+ckgp9;IZbvgm2^cFeO2Z^|QhN8W>{@;*Gfv(+EKH+M9T;lUluhw!Ln zp1>#i+z~w9#m1-bOyei;LOz8r;)Y4e%G`|<)F%NOvbK6eT4>~8f} z@ci!PB|KAqf@w8B$t`Sr1D^fM^3#L|SDUxso1WDP;hlS!x8cn{TAdy|e1eVd!#j^Q zAHe(aAw0Os>W|=QWOY(_=N~pcgS-CB;I2P8-1TP;cl{~gu0IQS(6)Il;qgPwSMYF8 z^AeuEz z5AKe;K0JJq)gQovr<%v`^ik$RxLe;6xLe;waJRmt@Idn!!`<;Xfp?y4^O?fkdYHl8 zaazF31Fg;i9z55432z=?zJj~`Qo`MSS;O6a*}&a;xP`m*F!*>iS8l&F;BLP(;ch)_ z!QFb;hP(cE=~@pXxa)Haj}NlG4dKa)%}4NDp2A%}$8dN4oxxona=6Rq9PaYDfV=bW z3hwe&!rl2dIKH~STpt>6*M}B7RUbmQ>q8sva@Bz^Ri_Jgxr*Q}S3S7vXCLnRIe@!< z4&g3WBY5WaJN>bilN=shZa#;{XP6i8q^0k7;G1J?{1RRc%}aRl2JiqkCOq2RKDPx=KVsuM@TT(Fg>SC1@ew@vnt2bt(dYKz`NwSh z5FTlJ6Z+Q1kKjpRp29n!ZSNS~{Dh6q;Dxq#22b?4Iehs|t22jp?rNV~z?b^m1zova z!Bh32gooGI=dR)Dcg;8O=G|;QTX^wF8{a&knybD(w*`-{wecZ5T$s1v!QJh1JMb{G z@dJ2rj`8=t}B6Ky^-c&PP!PS<`c;GMr)okfjr z;JLPI3vcSY)6A;-D?8olx8Z^2*?}+juuVyu#!=sN{oq3HH@ci{QzJwRb+ZvuJZyR{9`hkx=s^8x&{eavI{fp@ge9m1cthmB9* zXRFQ#erNS3g}+k!YYhLg-g}?GkN%H+?i7BUJcA#qKF{C}+uQn|!=G`v)t|!~x3TdB z{QKJ81^lP6jbFlVuR0re{29w-p#OB=JB0f0P53v}pDw)fg?PvJ79+U-T{U>Rvwl|% zex=^$pTUFOZTtd$y50v~!rkv6ZQ#4_Wc}H~i(~9}##*1P9;a{BaTLO{TiJa2@ZgK~ z|DV7gpd3!%k;donCnzTy_&asnb!OFh?yq$wf#2a%b{ysKw>`mp1AmF?bWW+(ze4*x zf#34Q$}>E4d4s>!)&JjW{ZkLuaSeZwj*A?ArTcpj_!qTabv{?Ef0FiN0)N+T_PIIy zPe-ah@T=vW&sXd3^Di5pz~7*CCWrq-=a&uq{n{^`FI4OQQ^!RDzixlcAAbIuG=KOL z_q6@hQtsUG?(!MJ-Fb5WclnIrZu|ruoNC*X!*7w=JeTlD<2Ue~UvAsm(*NDfKhyau zgu8WP06%vR>q87rZ)eAK3jZISf5&jQy#+jbmHocu68<@z2ZOx2f8F>d{I6Q)BY3I$ zefaIw&lK*)PvD=_`Ky4t`7GgQ=r{_#R5O40?wU^ock}7P-+nLKFDcxOpTOU;v*lq1 ze~&xv;Kfn4f9LT2lg$hGM&lRo;4wCS2~SjK1uq|E<4brFnXloY#&7678^47I8s9#x zx?j$8e-92%_Om(>Jd*d}P5A&`KGo{P@a!q(LwF=l;2ZUA1TW+>_?LAY&EX%?eqX?k z)Ai&EUZ~C*ew2>)E&L(Bu)H4S^{oegkJhCD{L|{^5dHz(r;Ol{@-v2iR^zAe z19TlYgMUlcIdk|x^%wAms}C#qD|CIehM%tO+QL7m(LrZ*FW}!V`^O z(=~nr&*bfSH4h7IZwKzSw+qjkHlGOYwzmh5ce3$)c(IH503PgY9>a6_5T4!A#wYNO z<~f7^TkCudciTIMyX`IDZhIGSx4lca+ujx2ZEp#8+q;Gb>e~kHwzqv|b^p5O#vQoZ z-Y$H(tMxO2yY2143ytr?gWGBU!aMR9UaHOveiyAjIo!>E4v+3=pIgA){1@=NW#gB0 z)hXe@?QQ%TUTC{E@V>lxR&~FmU*C1dI@zIr%e+rN*F2$r-+V&1UcR>1Ua5=wCH&eyuwHNZz5JZR7j&ubC(CSU#bjW8-spDPO_^ z<#|Kber%poo&S1e^*iwNBJ&s?J@lnJj+Y@kyt{b0dH0;OP&|7x3^3^AcX%!+Z_TZfCxMM@N}&;pxfd!Pl$%D>%oz z0ndJI-iDuXnywq+Zr$#}!xz2Gt{dTQ-R{v3wDEoT^2O!@c&_pPA6@qy?M_woe>_Mr zGzlOOdZan@NDU$yL?HCgLm#Pwv;YD@T2RDL#83^0Fo4L2@(_^{KqT~FBY;2vfl)+; z9swmvd)E4%&%SHTd)@r=`z>D2cIV7F`|LS0x!-$zcyV7BAHbXYJFmmXdpmEyyYepF z@4I;%!vCe`h%vmc_?-TKdyhT;GVZ-l5$@mT@>k(2j9h#Jev^Ig3Agv*A$;Y%T%HJS z@gw+Yr@8nTZtuf08n0c~0``43+`b3&;A>x~d4OAd6+YJ;t`2K(8-D}7o8D73;T9jl zm(aRIaEtH4<73?W{~o+4@575{xbY9+_VWfY+|GMr_|5v>EpvZ*U)#?o2w(eWZa%y4jkS(__;#wF zA>6)akKvo^bI0(-k92jLc_2Oi_VWWd_{ZuG1$asOx(MGx`=SiD@As>4`?&%izLm{C zeCFpR;9F=sZTQ|APYAc4ujs;e);Yfq|Ekty2wzI`8N*kQkKy)nAejf#^KU;-l7qL7 zaCK6E+s~O4;j8I$%kcA+rwU*5%le)XexLST9lnP0H{lC^?CPowpZ_g4{t*7wC#rw= zzUq5@_-D3s`N#0xwJ#>{SM(k}^H6%8o4Xt`=l-6BXLfg74N~j zRTp1`m$!9Zf_Igt3@<9a0uL2mh1Yj;`D^f@+=u(yxcC6xm)GHSeQpEZuDLudcvpGa z@V0yauWH_g@ZpXw{{$W?Pv+tDx@UH9@mY9bd*?ZLxSjJN-2N_D34VvZuPMW=-YRgb zw<_G~tp>Mx^Wj!+0o>}X4!3%1z^&ezaI3c#-0H0jw|eWqt=>Yo)msF&dh5ci-gnNpU$F0e;QqkH z58=1#`@u0hRQ`bwgtTc4Yv z%Tt7xpKzaBhR6EvD%|ok;N_pY`RPsZ$rLZ?I&AzW*mED;`iu{^J{G_&z6Jllem)s) z@m;v}y&l}+M{pZY47d1<=G(5<#*>9xya%`O6yX+MgWJ!g`|!5@zHk$6<8Q$&e+0Mj zci|R4gxmN>aEqV7tsXK@ru&1%7vM{8;QG7=&m8XRvkJfY4HsX7pP}b>A3lEDJ zx187EIe7y`xWOAyesd*>&nxE`|>_rc?R$}ai2Sc zx8);v|6eXXfj9r*d<^f7oloGt@@M{%u9K>~0QZ&0gO?Rwgl80AgO@cgS;j8KW$q?>8y70Nzb?3JsJht(}Khg6`Uh`pnHP$#ic=LIUAMPu@4*yv1f7SPEXe%}2Y)C6wxnNc0tyxDvf;7h*g=F@{0G@c5)v$Kn@ z!i$Qp!&gxL2He)G1Fz|NL%4nK(}!PgKW_}T_z8S|eb1HAzO?zV@f6@2tKK}g#aH0= zd|HLi)DQe4JwG<#GxYOvg`e!>LCla{Z)j|_XRhe65Qs~ zhrh4)Aptzrcsg*K&k%0&IfC!6_wzB_<}>qG*VpZO4^};7;TG?~*ZHIRC*0yI@C9FR z@iq95HO~QjDb-I4zN5ZR>A=6F@kH?NUFbe{0N-EzWCXXrFPXsOt(KVczGVWR=Z?OmQa{oupr(G`9z3kL_!8XW zD{y~n7hi?fJ8qt9@apAmoB`bbs>{=W*EMe~c)Xd5@4ziSf|nKFgEzn8#xsD2Uvc?I z@WPK=d;-rXegYr zE#9NA@8V1F@!oDc6?pt57hi*0d;l*LU3>%H?793cczGQc-+^0vL|@y*_uyUiy#c(x zmWv<3Ek1!~6hDDmeD?3@`S;g!`SbAXcB+4PxQ2@_!H4R56?nY5i?6{gK7bb#-+)_u z3+{U^e+OP((~UoZH^1oOd+>_(`v4xU=Hf?ii%;PFRbBi9Zt>Zd)AQe7#l`388*2XP zE4%m-Jo};QAKqNa#n<4$qb@#xm%rfR8}LB$*@DL_y7&&fuKgateZ}|SBddS7_45(j z`gsDk`_}|+_oM7T((~Wce$2ydzj$yvKbPQkey+gnJXwR=c`|^Pbxv!*vp1>#z{9U; z{^32{Un02OFM9Bq{tvhN#RzWk2|U*MVFFKde$Kv(}p*PFl#il4wO zKKsw~{Fj$@`Sb9}O6oswKkwp8aEq_N{iR%d4c^uLG=Td{y7&g%;#=^-5-z?2&#mv~ zCxXX|yZ9d5;s@~ZVlI9Juj;uefrmL4KY?3(_SN+K_ZM;TdH6*4QxD$X>d-mQO+|QN zYv(0+UtWgiwsG+l_)uPj7b`Bl1|M$g+=q7`b{@bp+c~ep%Nl0`9?F~WjK8K7hx&Iv>LOzVi`$ta*#!#hQyx;LSapkKz5joKN6Y)k!8v z*V}l17oVqV`~`S!Hy7{0i}E78t^8GZ@h2`%4PL&|c>wo+?7R-IU*x<2AD`>I4R6ou z-jj6Tg~gqR@UlFD*OztieRx&#Fo5@WaN`-mhkHAZ;iu{69}2If*Q>AV^58{XR}r3D z)Qz(QA1~s(46o*#SK$6K&a3dQ;sg3xF1`*Q${X<9+Ah8cugY8S+&V744e!40-fwj1 ziSv-Iz7)Z$Z@Ty{eEd)6J-Gj>^FBP358!2uX9(}V?edJ^yr_aamSn-+H({<9F z*TrYy{<|)J4nADQ#pmG}%|ih`T+qdP@aAWn7vb^eoR{E*obwud_$9Z#KD@Y|>Iyzw z*Lee8SDq%ktvoGwM)7U9^{Wot`c(wCe$|Crzv{uQUk%~buSRg|S25iBRRXtuHGx+% zZvHcGr0d83$kj;}-uyuI1Me>3@_6v_Ms8h-@S*lm3EtFxDZ~92T%HPD`Kxg212ww# zolm#(3EcWX9d3P~0k=NTgj*kI!L1Lp;noK_aO(phynMTxpFZ6BzyNN2U2 zc;;y5KD;S!!hPir;e{hzo<7{y=f?1|@@L-0_~jnlSN|!(XZjL+rZ2%~`VzdUepQ9f z^d-9WCA#$`_)K4d&-5kuOkaY}^dh8e?7SE-y+=hZwYSuw+y%aTY=mDt-@{p*5I~(eRz1V`+mO(xBc6K+x~6CZU1)Q zwtqvo?cWG)`?m|X{o8}v{_VquySwWe!2QFV58+kS!w7DDAck8X7{jd(cuaNDN?c;+On z7u@#gh^~Da)3r|%xb4$1-1g}NZu>OzZhC!fpJw5Zu>M3w|!cG+dlQ+woi+2+ovVC?b9-RyuG`w3cPrTo}=NR>Y)a= zed@z)pVr~FPup1q;I>bPaNDONxb4#zZu>NW+ddt`ZJ$oywofzvLH(TWt}6@oFL9oO zw=Z&@hui!40^Huu7vc7Pz67`T^JTcbpRd5}{d^T}`@IIY{T{$=zt`cm-y3k-?`^p4 z_YU0ldkDAv9>HzDcj5gL-29K=&7+(raC@&chTDC70&nVld**|5oebq!cwhTH2eklos^@ldx`a=h9 z{UL-~e~94LAG&bs4?Vc`hY`G}@B3nSPClmVJ$Y`Dt{>ZvdARLI4{rOh2)F%Mg4=$q z!fij+;IC2X1+~a9{ua zvm9(0@*zC5`h@%PG5j$7`@0GJV*R`6%qQt}w0g_Jt=@8QtG7Jd>dk{&y%phBZzXt9 z*HwmFy;a~=Z*{oUTMKUW)`nZXMR2RPE<9XU>keMDj?y(Ms~w=vx6Z34G? z%Y2$%U#qt)yt|a78m~R}T&NG5Yt>O}N!b3vPANhFhI<;8rIQ z-0GwYw>s&;txo!ItCIoT>SPSJI?2wJUU#dL9Ng-p2Ddu#;Z`RB-0Gwbw>oLStxlS7 ztCJSItU77Ktxh^{tCI+Rs(ycO7jD1bzDI8!F=yxW;r9FO2k`hT7e9m#m1hL^zw6>- zc=Jr>2|Obo!|VFo2|U*4=020IhxXYnf1ciQUV!%%UxClnbo;IfxB0BW!vl_-GoL=( z<}-k|_jK`fc>OTvO?dxc=Ph_ndD`%B4;SBo`|<(&p#ul zFD#JunfZrX{vzD+SK*f5Uof4&{kU7-fc}K@aG}}bBf8?_g=ddX=!!2aGJCv7SG=E_ zJwBk@_!pf$KBC+B7fZ(%A9M4NzzctHo?AQ}Ul=$qd_L{Xp>q#zd8%~f@s~*FvGD|O z%hRSSPq<_{kBujSTb?0ZdE%wgd2Boh-16k|>G+xXSvu`D9uIDLs&t#5Wss-u<~e{D zA93D>H-F(gTsED@zu$QTw>(3*<%yR|=V@v@3EcAJmPfqCQ&=JGHXaXdd8%+5kH2C% zPv$|*54?Dn^E!NZr}H+v{~PCFA)UYbkn;#``MYq-KZINU_zUU$HvR-|`Nwd}pIa%N z$MP3ePP>iYgIoS0-11l9mfv3`o!`bEz%73rZu#4A%O9?q&Tr$7;FiA&xBNr6<&RfG z{u|x;Ch+(c=LIhvU%$z@2e){C^>ln!`2)DG{NWnuc*`HbEk0f|9dG#)c(tqXubqy! z{2tum{dLmumOp?GZ+7{^b<^>dKZ09)TujGX{sitTe__3Jyyf@c7Vod0j<@^)eEfeJ z{|4!J%OAnx7hQb3VLIOOC-9usy|8gQ-tv3!g6hgIrQJvmOp`8y%jc3$6J06Zt?!t z)A5!+fLpzVTcqPHe+0Mq_#5eX%b&olJ_}o=<1N1jxBB$APRCpR0G?BQhLv=@<&WT2 zpYb;7c*~!_t=tv>yI((##nj+*mcD}ej^Id8(-iykv4z6FmLaUSkF zd;SQX+t=mq!!7>+Zu#T=X3w9%%et=2{^@wjpM_ig!U5@cn;#E8+{=x>47dChxaIf# zbpG($ntyozc<13aXOEBIWyQw_&K{q@i^sbBg@b30_u$>Si}w$iJwAY!6(1ftdwc{R z9^>-Ihs_?Jz>A7696o!z2eMYN6#Mb!EHYM zV`h&J;5MIOefIbWZu1!*J9~TrxA`m_KYP3fxB2wHJ$rlrxA_cDm_0s%+kD0+&K{q@ zZ9WT)+2cL9&8L6z?C}BI<}>_GI^I9m)p-Q(pYOa6w|+8!TR(|UnLU33ub=1gXHHGW zTmCHE@)u4^$J_Wlc&O_t!!3UWZu$MwXU`wNi|4rUH{q7Q1-Ja+8R`7}Nb?VG-sn7T zrsIqMb)L{aah^Fd9dF~w!fiY`c>PnCr|{i$9{XGm9)ING%W(VL3fw-o3b)Vozc>5m z2Josrw+Xk;ZNcqx+i?5b@T}QCH-cwAbl2O5+vg78_PIm2eQx~y**`ad*R}4Mv(xeR zxmmbM5`>KaB+&;Ggx6iG@?Q{KB`g6-W9qrD0@NUg{c+Twc5j?Yp ziyy+nJ)Otr&YmZMhr7A>+?HkTb}qwv*$_R-5oSP?R325DO?EG`g-u0`GH#=|DxIR1n`;pfm@#N;@R^= z@R|96Tb}rm+4CgunfbXC@v6hZWofUT?B>&h#|`IY_{_e8+rIOEJbV5C-ag6YZ_@2~ z3U2ws&g}Ukc>hF~zYn+Z58#$RzI^ul3A}xR%b&R-9dG%waLZr#NjkoKn#<$CbEi5l z!^=(Q6?pg^=T&%7?q50k=LT^5+$P*Uw*|M)ZNu$z!=KLnxe>g3h8uq$Zl61V+vg79 z_POy@vwv;^_fL19o4FeCn&&LsJ~s!q&n<+=W9tiV%gb=P-U{44w+gq<^{<)za|8Iy z`oisVTX6f_Hrzh9eQo-4GuOHQ?!x!9zw-t66+edmRX^{S*ZWQ z>Gu;>;P!V?8gPqm!Yw|8+jt_ljVFc|zVGTSfsfB}UbsFzpBC@IE#CimI=*|h%M-xI zE$874v&Tp9@CPnFj%JTf;6r_G;l|nHJ$O^|;Qulm@1Lvj!<*-8{J)w#K7wZyAKx^4 zd;)Ku=kgbBo;}`!#~P>KojpE)_s?>!L@Q3twvik6I^mFV(_@er`${7A%jdKh? zTYpC>^PBWMAE9~6!OydKhW}aXUW6~HIw`{!Qyo^}Bjxeo@9OVc)#1O?-zjUtPyC$f z9DcjvL->N%yZA1=t@-K08~S^8L-sB6_x`1|lPlxGNk zO#3BND_#zv$+n3_n`^rwac>^XbE1(C60S z1?{gU{B`}EwKhD|b%pSAG@o7gQ|ecJ_%D@b2tQN%E{4a-Glpk-Zr(Dtr{{lf)k6+` zx7Mow|B3c#5q`1#dms3-s*@^wXVsez59D?DYTBnw_>Xm;YQvXQp9$g1s&9AUmuOx3 z@VU-({bUGFR3|a~1Dk*NiZ=gur00KO?cW^ycI*G}*VOll@TT=2`0Doa|L{9@bo<4J z&%c$s-a7nP)kzcngzBUX-&X4$!s9pGc`1VD-ge%lzv+Ak?|*d6ocDVpc>IC$G2G%O zaEs6N((7XJdAP+F>GRj;jHd)I&*!`f_m??wPJ9hs$UCpYExrM__%__)J8+Bd!Y#fB zxA-C4;zw|cAHywv0=M|wo$2{6Xx{ShaBerBMYye332y6Eg^%3|bpEpby9mEr_k|k#w9^)uQ*S=po@blz7xj0UTX6fk zs}Xz;^|vnE;)n3n)K^Dvi=V)EQy<_qg~9JSVTh z$G>&)<=>^p*|$9Kw&j7><>hhybABj>+rGV?@!4OpUDrO$q%2&e_uL( z&c+X)$q%>u<@=}PfzRZD&*XVvN*?%39{5b22dCtL&*Xv6)99!=+IS{``S<_BK1 z`T2c1PtNkd%Xh;7vEfD&V8W)xBEpCZug52zQ8puPXxFAJb<6SpF4k!;QOuUo>LO|&2KoL!0q>4 zWdDro)$?^8ZvPJ5gU|dP1Gt@IEAV7DcfB?E?t1CK958gb*#V7E^R6i4V^DGzdJ)R!_;d) z34FdJH>b}`;LRg6{wLDo|JR{zJSBKR^BKUO`>Dnc4-eP);aQER2QMf-fgh&l^a(t3 zw8sBrdi?k3eMkx3Jj%rf@SkXZHQ>!-G=BJIdQR`btKW9<3H%W~?@!?2@f!bM(&OJo z`AhKeaT-5-<3}|A@Ur3~_@kPi9=v_5#t*+=@0}*_xUTU(l^*{Bx2b;MMa2j3-F3YU zc*f=*{(HSI>cN|;hXnplz0aAzn#UTU(+_*_jN%jcdp3S}`AnDJdp14(S9Pu{!JAEu zAO4z+AKpJh zRRFj6&J+*fmM4N+o@9zo;PoHqdY?~U?{1o(61;q+ix1#`RzGaOb2q#A2yXE`xWy;% zCv}eX{+b@Ac>upl@57@hp1^O?xpV^WMw*`&(w}SbCAh`c;ENyR>L-97{aVgF@4(|9 zy3g&vkJLFTf4v)b1I+{V*^FQ@x#1h?m@9^Cf(2>zBnH-TTPd7Hos zZLQ;y*VeZLxAm>TZG8i{tycqX>lMK*z6ZDX1a9l=y^uR{jHdVq z{)qNV0-xyTa3=8Tb*}!sf2PM{@g=y$*WmN)r28yxKVK9ul~%`vh)z@~@?@Yp#r|HxF*>ScC7Ub9Dfp z*RB_yQ$0s;d%rY-hk8y-;F~Ic{`K_uFVOwPgLgM_*Hwd$>^=y$`ES5&-a7DGp3TiU z_lEGx?R*Qj_!0d6^<179zL(Bj3EblIZ=~nJuFHelb(P?DT{XCUPvOJg)Hxx5TYLw; zaa;2PFKfRFU6&8PP49~W zxW#wiHg6%^<~f2}{0M%JJ~x5e``-Lp>3O*4b~k=+ir3)w9y^%g9r!m@x6u?&;P(4P zC-CMk-Tdd@PLJQ}qyV?N^5FJ8LIAgY(SX~&h~O6AgIjz8xAWTsUf$bXm-kNkx-7l~ zxA*{V@eR1eM{tYp!7aWIxA-CaiVI!+#PF`ZpBlqgKgzwg%#PF7n_1!5IsG#SuNIu= z;lpK|dvITQO7PmUR=s~_Fq%R51$!7d}jRcneoGC#!t8L!)L}1 zpBewV>G6l2yRIC(yN2^Tys3B(UjL$tFTpd)Q-Q~;x%e8qD(}NHtGM_9eRb#A_tMu@ z-^_Uq-j(O!x%FMV2ah*(UV=Bj;=BSMf7y8r-jw&?@-{azo@N0Emt-$NbQ-xRMHMr&X;h);iOTdfD(}d^bEx6@x z!+)juiQwbA-Su|iLwOHw`TOwS=s98p?9z8I{Yr3D_ZcJ;@j}C`a=gklt=KnE3SWb;p4Z|pW$u!5MGv# z;PIO-PYiF$6L?NOh8N|z57PC}UGca%=O_=pr`}T);kjKFn-gDwe_hYlRd_JZ;&b8y z_;6u2Z*}-!eV4xl-%8)Nw&9WTNAPPNc73A@Pxf*72k;g3ed`cj+|G?Zf#0j|o5t{o z##5N2=XvoL-SztL@-A-v19(nehmUu5@&13)`Nx(A-nTsPP~L{u<^KQD`RluCoba-| z4ll_457T+ZmIvOqJn+!+e1tr^X*}@0ybcfL{>SM&b;|=UTON49@_drc(?3w-ftSDO zya~78U(tfw@2?0yP3JG}bNrlr6u}F7Iv>(^a~@}|n)AQ2f7fq$61e5b&6SQXC{N)t zX}3Hc-11cE%Hz+S&ePq+jWdA9J2|hzo7*^V!~61Zp4sz9aLeC?TmB*3^2hVeo%rrSb3Z$Kd;qujaQ@ljBe=!K3(Ov$z{kEDPhp|i<2`sm z@&3ZI#|QA7t~dPL?C}viqxg7{+2a%Vcx#P+(b?lY_;@SL|6;Sp2k_kfF1`t$=>zbY zKCt-g`6GC&@$})Ae*m}q@#kmHpTMgJxbbI}NXJ|LEZp)JmQ2U@t)AiS{apSsUB9QO z0=NABQnTj|;Gyz2;Wqvj-13L{+4D#6q0K+s@(#M-rH2*TP@T`fKT&uhQr;a6MVhF@SmzYQ;{9xCvItk&07F}N8@S07x;?Xzb*LB zG@cH8jX$}48o_fHtIxpSR2>fBbMNE!?+9Me`?>_and)Z(KU@7j`^EJ9x9@c8n}_#w zT^{^atxE~Mf$paj_}jYg*Wk~qzXkA6<7~jURsI%yMXgH*Zs&>!{;0022S3L8Jp54o zew7h?d)_PYn~mECws@CQ{t6?mAq{55!0 zeKLUWth#Ez57GB=EqHlhH=YjsY|TRizgzpL2d`-#4dB5>nt%92_lpGnyw-67KgiBM zYo_OaE8REq@MCQL;XCRaQi7kN{1x~y>Q^=R`8NOXS5@Z?_;+po;XhHH4tz89u?T*w z=D7zisSXG5#q9nIe@XS0z;D($Y63q{{WiN+dj2Er_dNV6^%)QTBlVLK{MR=B@FhKW zZmGc!R-Fg%brs)&+w*1zUe@zS1h?nS9^9Tc2XH$#j^NLz|0nSEbl;!A?LL)VJ3Y@o z(tSA(pLw2w+w)NgZqGp#`1|U^HTbUDUjclezSMx9p>>Jir)xj<;5FTM2Jp7>jNqB? zy7OcL|NOxD1iqR)yH0vO*O%wvTWVcA_bDKJ)m00A zoc3b}9{k>YZUlcrb=ZS{tbR3s+jGhY{=W4M_yM{tbC3x<3m%jpEMP7q%q5crSzoYovOHS0g{ruN+ceyj3~;O}bP6ZkdOf8YnHPiEIo&;K8l zKM#M=>K{JTe3szHYF#Su+w8p={CT_o!q2kz^Kfro_x#d=f2eVG;OAKXfiHTo+ebb4 zGV%fZbnS}~{7<^B1pbnp+u>uK)3O_+=ii=#^6*PF4<3A|=lv4=I_<{_{3-R%8vHt) za{~C4dM;?dhkCwf!R`5|1HV&s7{TAx{Pf`Ks;>^<`>1b^;1_FM68OEkuIz^Cd45at zkcZ!|eeJ=Y()dg8vF4!yUq$s(gGZXr0RE}wp#i@`>)3*yYUdpIa@ObJMV)(l@E>TO z4&Zlv#J@(_}%ut3x2cuQU%`6yFONf+k1cj{*3CX0e@EW*@FL3pWA_-uR4j~&uIKT z_>XM<;mc`0NAL&jxfQ;a=5qpnUE|DtIX(ZYU+el+9{$<6T>tdon=5|_zKgs9KU(+w z8hm42R{*!~0UL08@7IEFuR7_#kFq`kKSJZ|!Qa%n58&sj4~*dU{bK^R?-?iXY}@U- z?564Yzh3X<^6*7%{^5Vu{kjA{Mb}$_|3`IOgMX@XQ~+Pu`V8EDUZn-MpI7O?zpUq@ z2>!n6um^8wT?X(^tk1*ky>0@x_qr4KKkfV0ucYUHdA(1|!_QXTdT{&su@cK{*s5^sP|MJ{4%Xe3BIH1tpdMZeYghSSMdS-zjn@n-=NQp;72P@ z4}Pik;{blX>U;!$RriGizO4Gd1U}HZWWSo8&y94x&BNRJ-q3?zrT$ie@1Xjrz(>33 zehS}SpBuo-_qlp&z%#q+JpjCVn2YbgedQm(d#c+Jd@nnnz#mck1iqs7WA-^t?Fa0Gq4+Hofc0PpnwBHl>Hun9|=IMD} zTJw{K&wZEX8UB>&qy)c3&-)elo2ru<{2}eH0RBy@bNFx6hgF3;9@RKwT9r&p_pG5G!zR&H!ef#+$_&;=i8Nu88yYo^4x1V>N zz!%!t?W63L>G{9L>K|^;cOHBt?Z*;4vG1wj-?R6M@a#+OJ`%wDTkCuXze4?|1%Jby zci_va&Lj91+SfgJQT=KF-$U^u_??=!1b(Z=If3`IUfHeE^S`X-ArCKUJRaP>$1K6^ z=VL2y`}x=!e4fo*Jp}O2UGMfq1Kv?Rx8Qf$c@n;#`eX!uQ~S3E|4{2VfG_ZltCJCY zQ{4v>_=38w34GDdtNyo6&;K&o7kRinUwiPO`alVOysozb-$LtHgWL0R0KdoXv+z|_ zCoT9dwJsg_3Yv!q{+#mn;2&vS2Jj8E-$(GPw67C*QS&*0fA&+Ib1Lcix1S@;!vD()R@wc<*G_PipWR^`0SsZ=Df9EqJ1S)qy{zeG$Puz4zp+=z6o;r04$+*8ky$XdWu?y1WMelg^U?{3p7PH{eg{_hGi+ z@xawd2i~%N0$)!1x(9z*=cNI>s`p(Zc&_5=B!SF@Lji$8t|X0-dga?_cZ_TCsaQXd~c1j2j5ovWdMIf z&ub&N{hW3Jx1U3pz=!sI^mgg_e^ul3;CWqF3BHNyrvm?h)j9l3tz!T`Q0vlw|4en; zg5M+Wz`tyL8~&u?d+@myb?ZBTe^Ki`g8xeIF%o#JJ}`mrr1508PtWs?dS1xG-&Yu1fGXRsR+E>$=_={78)_fN!V!R0IBr%|Cou&07clHO*TDU+{T1{vP}so&N{$ z<5dqM_|iJhB=8%xA1Cn3REOCe((^ypzHU5u_@VY548EQ|w*=o%=ZXqE(fi~Ye2Mkk z=LT@=dky$+?c4}IU-Q#}7qw3#_>;=hgFkBD6Tx@YxoZU9KG|JW`zQ}TRQ2G&&t1(uf0f|(E$8}41)iu5Yw+dOhXeQq@&>%Ab!ovb(S5uF-^Th6 z{1=Mv!JE1t4dA}@ANVI$|L`-_wnFs%#*1ZHz^n6r-&$X>P zSJdFSL-gJNUXVB7AL=~cg5PTWA3nD4RpAHQdrSDmTHgeIiOnZ`QC(Mdm-KwzsrAjn zSJHE<2j5)xg%W%(?e_|NC+(LSd}sBU0Dh>v0Wa$Q(t;nL{2ln8w7(+wX*Qp5UwwN3 zf5gr+@C~%?3H)^Rf$Xm7dA?2kJP(iT+yc++>*}xs-%g)ffp4t!s=?o}@9*G8YrPuq zebonA@Y24nPe$;cs}6hc8?8UX?fcLX{O_9Q>~86K>sP)#=igc9;pIb}d+?#+OYrvg zF1`YRMj8a%$`n{%!=plf~_@S(f~@5?*zt~`Q=@*cb` zAHbXP5xg!>;J$nUugbG~r02hX(ebYS;nho=dvO0^=OuXNQs)(TQ}H!;Rq+A5f1S(I zfHx!OE%;F0f&0I3@ew>!d=K8g*zJn}yuF9>5xlvZ^8{YD`G*&6{`XAJe?gw7f6L|f z;KRD}61=&s^9sBu_u((={aXwEKlRBj{4w3fGqv>icRa$~M{@A~>diTI<-sq~{i_5o zujS&a@D=p;2z+>VH5cE2-*$^T_qO2uwOxDy@95{FCh%|S+?(AieZAfW?mm@=7oTzN z!EgGy8&3)TqV8)I_>HbLjvc+4B*+pz$Pd`}YMC_)^Qey3OvB zp8t(B4|#az5*P2mW1Z_t@a^=xP=W7j&qweJbiD!m7}Y}q-qSp^;6KxIWe0A*KOur= zKjWUudhjK6ejdQj(E5(x*V;CpBnsZ&2s?%o#wLvzg~T*1z%J1)`35+JP|y*pX;kV_$&5)06x%sj^J0ReiHZz z+Fuj+4eFEG{nGQlw&pnxzf^s|g9qPn<1fLB+K&}@sP}9&_`(~j|HIdK)a|G{9zHFv#v_(<>f zJb2&U&%lFK7N2uIslXr5y4T>3D^CEwRQtUF|CQ>k1^3ifJMgb)9wPWd%F~1Y>(8zp z2Jo)-?+Cv5SJi*u|JFHV0uTS?>Na~odj5MKI?ux&RKNA$H>-Y1@D~+df#0RNs=+VN zJ`LaxD}Mw2nC|Z_c&vTVf&WVTH-ay|hWbDJ&#KP>{92831ixLLz_-Y~K&U%j&}w`0w<&HTdakyL}hH|7Pb;_`2!?E%-OouR8F5XuTr% zR=Q91;0Gwr0REDmQ%3Ni>MDUBtvnO>Ir8i`)ARpT-Iw$5-Q^y9Z|&<6d>fskD)3nM zuNwSD^_c*Egg&4cp zyFB=pm)CqY;E{e$MGKz!gWK;N_?CJeiQpe;o_p|j zG!Fy#Zpt%)k92NK;1}EZ2mXM~|DoymUr+0php(^t@!&PRuPea|n$HUSQmcRX4H{6&H6w5T9j*VvzoGNw1pY_$+w5WK`TvHl zD-Yj7>*B!=keA^1>pW9|@AHo9CpGvNbUzK?$0@!6?`j@e@PYP42j12FE`m?&`&{@7 z8vg)(>!a#F@UHq;0^dsYGl4&%JlP;U|B-&qHV;2b_hk=0RD21Z-_`Yj3OvxiC#u0m z`u)!VeDR;_{tNG{?Vhh&@I~tC|L_B?|G@WBefHp$Gu2!U+Nfly#x66THg`; zIGt}3c&zoBz{l#7*(1{PpWVZaKMy}ceb|E+_5QX5_tXa}@Q$vx2A@0Qt~Y?6uj^{S zBkhY8{0fb;0}r$xBY0+WcfCEhCm+D~Q$HWUSJe0u_-*$53-9YaaQ4Xb{GVv=f8giI zJ^1hJ{SUmVzEpv?tpCH?>U#matM~@IqkY$^^*ktcim?v@XeJ!dsKSdH8a24}P8Mvjn%_V_AW(tvogOrdI#(+wA-U ze?sftf+y<39r$s-ch?ocW7S~~{*cyj0JncHHi9>F4ou*6)!_twnmzv>ou2=Dtp4GP zp5@LJ9{ixk+;x@Udue?u@Y8f(sKJj_d;ou5^U#35Z1WF4M|nE%6Vx{%_(xi=9{lZn z-SrOOAKLj7zNPwY0)JEEpTK{ky3HPwp8xEjZa?PXL-jEaUQwSc!=GKn<*C9Kc*9+n z4}VePsl#*YyZ9#j%epVO;Y+RI;zRgrdj9Id&(pf};U8=MhwxwP93I2}qx@s|@|w>~ zJw4CIKjP{(2Y*NPUx06|zEOl{zvuFl;Ww*4SK$LaH~H|(wIA#7D>Xk&__uTp3E|It zsy+k%yw-6554B&0@H;gA7#`lg^qlYY#_+nvGl9Qsb$)Dm{(r7KdH55Wp8|Z|{ajrY z;WsHy8UB>&zXE^d6E{CK_-)D)z~8*a#n<5{=z5#*dz7aQ&&=)iV`qv-@Q0MA2fsx9 zvk$*gK7{{Sd1CmUc3y(-pgNzxpHZIdap`ruSNkyspI_@$fXB*Hgcpx-^IU>|PV-iQ zzotAj`1RT^KD?#(x^?)w%F~4Z{S;SkttsAtzo$GA{Du!*o-TZ4T~{CeZ{-=npVqz@ z!5`82B!N$qX97P^>zg?~y^aT{9&+#xm8Sq->1(c@J@~5f68sb8slY$n&8>SC{+RlY z51;D+*MI8pBQ^d8{5?A-z~@n(4*dN6+;xTU2k+B5!au7#efR+)qlqDhxKmGkaos9go)M=HVyn{7`@|@Q%B#GW5sTPb@;rOy6bJiPu4iw@ZalmJMhKSPkQhtbwBFEpHQ9{zKrrD@O5;5%$}5< z&(_ASKj+{#>b_rqpQ-CA!WY&&l;9)XXDjftm8S+jM)w^bzNMazn(%k@civm@=WL$g z=jn4J_$m6_F8pt*|33U;b3#DMSZ3TZ|ieI_)Q?(DI{(zCcoV+5^0eV=>73bt@1}Z);Oi+*55AJl1AX`-s<$D0W95nA|EKdn z0^dZ>rxSQtd9tUb*YPmbe-6I3##w-GqdZ0UQ(Bi2{6f9AufTUvo*Mk8+Alu*EcLNE zd>`d$!k5+ky#>EYeXIjNSa~A&>dMoFAFOrn!;ey)A^c+1{|LT`@+a^Um1hE9G;;ef zb6R>Gx72#&;AbdL0lw-YE{_NQm8}>2HhFc5`|y@Nw+`P#`=|lGP3zKvpQ}6__}v;$ z2!Brds0;t0^7P@`X}=8MJ$+v}g140?ffuwcV|Y(LSD86Iy+()unJ#K z=gAtpqIGP*f2a9r!Z%l4wc-D#>k8qU=yN0ZgW7jJ_$|safN!Py_z=F2>T?XgPv@Bl z{FKLBzsfh$^M9f0ssKMl=fEQTc8#+PA6nmo@2~Z$!S7U_0RD#hPko9v;lEX$HvAG@ zR|o#8?z0j6Ughb*chvinK76E~R~*70Rh}6Bfu8#k_`%9Qf&Wo?vS+5(>tel6%T4hD z{Bh+e!au)*drwlD;uZK`l&1zivgXdu{uHmnpHZGBeEmgSeYW5oTSxeF$`iqN(0=K{ zzo7H^5dMVv%m}`t?z0p4PU;((@21yf-d){%7T|}f{=F$)g1@Zms=(LO_^a?heb0x# zsXTS~=k+|&fFGpuPY2#V(ydDf|GxS|7yh0;w-0~hYL{mKe?a|q1fM8R0^j-|H_v1E zf$E2u@1@t}Q{^ea@6~;$4ByM{@9=pZa?jB|{M(xU0RDCL{|0;kcCw^h9r;CI-21NdgjQ-=RZ`=SE>Snoq>@GX@mfIq0ut;28B^Jx>lgYvZDH)!2E z@ND3It~-M7t~@>XZ8|6S;Uhg?4B-bTPYnOI_G1D+RegQ}KU{gTXQ$V3ku~)_1^f!t zPXT_s@)Y5}*8G&g`(Kt)+ ztCXh#-$VPo3jdbwUp_oio;v(Kdk%&B`h7|*_$|uQfxn=>5yD%_(}n+5dHV2cG|vP0 zKkS?ae^_}E`19|$``Q>j(7I<@>2(|`PY!;X?sxeq?!li^o)Y|Y^^NirufktZ9v}XO z<~f++4ft4jTJSSfC+#U7!ar1=E_?%>OM6p%0H5z+ca9ptLp|5TQ+y0xRCzMzq}TCr zohP$XJP%(^c|3Si{iis^%kWi|rwU&}eZDru1Nb`1(}2IA_ejkt-iDWyCxqXk{S{5| z9{lUdGk~wE>l#k+7{0yojNxCk?@gw7_T2RP?yfv}_#*cFHN}hY{gtN--%;o43j9#@ z+ZtVY0{95!M=MVoe$Dl+k9FXa<=u0455A_>r4N5r;~BzF)aS0>516z0CRP zbu`bxf1^AFcuV&eZ;F@TcPUQ={+P}uRrp4#b02=6^3>t;YrPs%yaj($c{=cybWRK5 zud1%P@W+*>4_{9GY5;#v_xBO}S>;LKnUbrYG5jjkL+*#^b@cSPdHAQQTMzy>eQpW9 z$Of+el;Nk?xfK3)>Z@Z0sA zSexPjd~xMz!0*s=YjcXX;ma#e2>+b+bu`6$@GmOQ0RFh%R}80k4F8hyjN$WWKTf82 z_DAXU-Bfw<@VQrT`>Qa;i|{R#rwo5U^IVzYHTX`-6Ttte_f+*M-h}V1JZ<=ARkxif z9>EV$o*w)H^_l(@AHwU(6T|agb?=dqDL#RpqCDAldL2jl{Svt;UVxviJVkg{&&#DL zUV&ezJT-Vj?|=L$UWZ?)JWcq$dT-X6;vM)6$`iq_)p~WOcprX?@(kh2YQK-Bcmlsi zc_#3e?LEMS>2);E!3WAyfZw3|lsCmo@F$h00>4`4uId!`;V&vr9losYgN-TPg1@Fb z9ry)0zlBr03x8jE`tV;W&tQs=;GZf_0?(^&jHh_!qVzg0FmU(59DJhlMt+KW@FkR| z1b;@)apfsqg%^~^hrg!tWH7}W@HLgE1%Fcev^~W`_(sapg9-Mo(4SguDkCv zr+6FQP@WKexB5>s#e4AYDbE1@f}MY+cnrTldB*S$)K@1{JbOuceJ@v@JiM*n2U3{g zMflH@rwkAD`)w*yyavBnc>?&ni@WoDeTp~XcPURBKG8gPrg#K@NO^kj%tx+%`cr%e zA1Y4_Z)tv#DL#QeuRPgH)9X0Y?|aEj@dEsx%2R|FG|#0eUV;Bhd1~;sey@c;#q02o zl&1;rs~@(ecnAL3N8NoVf=_fl>`w7Md@3O+5#Y6aI%F~5!s(S8C@d5lAz`uV_kijU#HQl3mFy^b~g z{;up4&%^If9uMBp^I&m`m*Mv-PZi$M@As=s@c{lOtULqwJF4d)yldY}!rxY&G5k<{-!Ylu*~`=G`yb`W!%x$BwJ^nt@Q;=3JlQMK>-e(1r^rq50{n~0Q-m+7_lKn^UV*QpJT>^Cnje3P*Wnu~PZK^@-QC|? zQ@jKJitJj(=zE#!6!+l=DNh|f*Kgf=HKuqAeuVOL;5XX$CR4l%KVEtI@HgIZ;~7lx z5&RV8N#L>0tK%u2xiYG`=BY_ zfd52!TJSsc{;)m8L-=*d(}gdj`sq#a0sNQBGlE~G_ayNYAH#p6Jei-S*YR;(S9Xf$ z;dd*K2j5ulMT_t^R99vA1Ikl{&wr=;UZyt11Na}5rvd+s>aYplQsZpHpH!X@?(4oB zP4OQ5dF2_v%j!SFDIUXLR-Q5ZQT6%B6wh9jUf(yACl7y5&x3_2UZg8e8UCEcQ<>s5 z_=n09!2h4F`wm~EI{ZD3B|652Wfij)>|@&y*Mc2u#&uORYJkPwJ=iEQ;eSF=?hndsQ8Tjsc_WZ};HTY~# zm~~VGp3(f?gnz4c*oM!ooGyF|-A@GHPTq$vq?{Ojh}zE(p3yikhEG(EcX_fNSJZQ* z;S2v=?=j)aDkld&T6TY5u+VFp>zjquS z!8cV-AO4zh1`Z#>w^Gg+9@+IzD_M`$)9~$;lZ7v$@z8g89=@w`0{C>b!=l4W@V%8& zf$ysEv+D3V{2=8t;d5VS)-5fEci=}TCxWl4^65Ez06#`KL-;}k{qD)(sVkE8c#?9` z@GrH`%{bhLpQfBV{2TSJg2RjObCpwqAEJFq+2K|A#mcF}Pt~~5aCi%Tm2x`pS!Xfz z-gS5nK0`SJ`09FJ89RIgzg0P@E0gt@o?^yN&*2&Py~^?7ll9&_=kNmj5#b>spCVW%nwBc*19d;ZZ!M9RQAHKZCpMk@N@a>f|hR-rG z{VR1%vL3Cc;kzm)3tvj@(06zqzPEA$_+nZo7ad-LAEcZLd}WPeRfpH%M<}NWpI7r> z%i$gPG0KVH+pAyn96o@bq?{rAS*=$`4o_X1tjE)olZKD9AIv!1ho7sQJp62}R|^g= z!Y@`%3BH%+ud>6d@T-(lhflNT1`cn*XDFuwpRD%Wb$Abct8xbLb<_@HhmYX*C@1yz zWIbjyj(HBxz#mqQ58qS!;+(?^@F$d0g|DLfsX4p>e_lB)_%yq2ad;R0nsR#Z6}2zu zJ3NNJtDF%$R{t71+-oQ6Io@^2dMw*@i^H?< zWtEeIPdMMKH}Vb-;HxMngwOtl)-CXjwO^>fCo880KSKSz4qsR6hbDYI<+S17s$X>A znpR=+*kPw;CJeK(L?xD<&5Dw>2p)pC+qQgowujqJ1Qp&e@LI}!xz!MBM;w0 zIRX44_0uAJV~tBC`2NbNz;pWCDtx-yXB}QqP7{8*=D`;HO5JA%ew1<|__n(L9{d=! zs{#B(b z{a4xHRrs~asl(^$o9Ajcyam5rIUV?N8V|ehuD%D@gWsf_0sId8-U|LZou7>0H!CM~ zL$V%sQ$O|K8>*dW;I}BphwrKOlY{T5`zgS0Q%(`Sk8(ozo%Z~VuAC}-VU5o<_%6Di z2K*l7wBVuk-EDYQ?XU}fKsi15#p>^U_#$doG5lfWjNp^ie#Y?AH2!!uChPYxV~#^%yT|?kDZ=9Q+)u+w<_3G@l0W z|LAi=_(bimOAfEV$I7X}H_>=fhhJ&etMKoY(}q82=SPP}@LxP_*2#VN@_McTd`b1k zA$(rtjNyA|{!QJKtS{?n_ypx-;n%5s`VP;-mrzasUt7;rgilfVm*83DRN$*=e5=Cu z)%aP5FRPp;yr_M83!a_B{ClY#_zKF2;I{qu96p2}s(Km0?^JtBb&~b9l0G*LKhv&f z9PYy>DJKu#>rS(NC^)&2ed{gCg;4}4HU5EGJ zTPbG%pP_&6FLw9{zP)l%Hz(_H+I;4@JcnoCyDGKSDVz_$2M`+79o+k5Nt!ew6xGAKuWuBZi--oDqDs$>zDn@TWA+ zd$%O(_cY~X;P2}90$F&^u4mxqDW?GchsNOmexT;@5Pqq0%J8N2UcLgqSMMom@N1RR zfZwhAX~IuX`M2RWDW?nXZ=v-Je4YzT`S;;n<;3t;R4+sLMw&0i@CTLS-I}b&eYLJm z!`IRLn}t8FoE&_!&CGM<;a6$B9l)PgP6(gf{(WHhhFb4c;IAvE2A`tq>+or6KTY`i z%4x&5Qh9dZi)mjI!T+tCKKvS;{}13hD}M<8Mmb~nRGpKjZcEl7vZZYrvyJr z>(8>otME0HQ-`mn@wwsf7JLKcbl{JxzPb+Y!M9M(0KTi%$+5#n@S<{3cO>g^H`SNt z@C+vQUV!hToFaS^?Z-ohm*IyhrwV^n=k171~53tp<2{@!+Y7k;90 zdhna}TP)-JZh{p4*!*lSKatiQ`bPf|ZJcM7boHBeJ zyZ&)_4St()8t}U`e>EN6hTpH8F8qD1TOx<|;XUQV@a1u~{_|vu?;omB!4L?@@K1j#m z5q$Q(&UxVX*!Lg~AHwHT&KQ2Io-1`%vL3Cc;Th#*;s3VlABX4R%P1#+udj39qQgt@ zRh3hLzpi?zI=l{FOF2#WGiuK*hj-uw<+93I1;RL%%KMeD<{!@YZx_4|@? zGVpyX=6%c%=3_X@_Uwiz_DwpQ`Wc<{ciuS5Qs}-&N-i zC5KnwIpx&g({vtEcX$)Nu5#M&mo=Yu93H_pQ%)bghvtic!-w!~lrx5xRL-gUll5pl z4G)!*g_pHI^&Osv|3Ntc{B5mUiViQq4^~bEzJ=CNRfpH%)0ESMAEfeWIlKd}DJOz2 zuX(WN@B#d<${E5BQoWBHo_ZizkLM{T4gah9X~y9`{4(X_;fLyb9R-IM;cexV;NNOK zEyI`8yjF$JP);4bna&Rz4sXFb%IUz5*SOkscn^Muat83Zo-pf{*x@7iy~;^N$$H#P z?b&m92L7;ee0Wy(lXG|h{zJ~6n4R0Q9{=Qrn-d9c!Ue|ou zhp(vi6T_cV&Ita3=D{)i8;wiegUNb%Q8^j-rdlUt9iD>^lv9B3p!Hbb@DTo*a?0>M zl~aLF)qU3BZz`t&UsL7Tba)&7wsN}gSF|3B9Nve&r<@qRlluG6;bZtvIo?Cbdi;&X z=d{DK@K2SKgIDbP4u=Quk#a)#Y)hGOqvY@k{43?u;2+xGPdU5^A1kK~KTPvZ$KetD zd*$@ubB@e&4IDm%r=BzG)iL}yyKZ?nS&!D!@Y$7OnJcs&4Trbjt171h-$DEC zuETrqoN@;6Pqj~p9X^7up`6qs$$Gp>?b&m92A)@r4?j!mv7EyT@b#5bgkP@q96G!V zFDR!9pGV_!&EXCBX3A;7_tpH>c6b*aD5nSi<=Z;9ad-@$s+G~J1D0BKT_orI6Q=h$|=Jy);M2rcn!XravJbcH4io&-iDWy(}f>XG4&NW zybs?;IWat|b~tqS7+zM6_gJzXAJ_Yow8OLTgO!tm-=uLY@9+R#QBDXyL*r`6;T8BF zl~aRnr1fgu;Z1l|Ic@lM%IP>ff*-4#KKw6g&jW`K;Wg!q;a6!qO!boWXgv)-Svgtw zKUH78!}IXEasv2;>K8?am*A%>rvl$w`;n@{>+pthn(!;tep(Liz|T`o1iw=6n|cl( zz?;e$!l&5vkHb^{O4j2g%1Oijs_)5U9PYzg%E`lb)BO}2UW8w*oD%#^jT>c$SK)2t z)ZtyN6B-V0!EaDb2Y!;yqq+|7!8^(sz>m{DE_V0`ew%Vqk0$k6*47{d&O4i{y_zTJ@z~8dpcXfCOA1J2`e^ULc;_w>$b>%eR zU#Y)09o~k=%IU&C*KkG& z9Uj0($_e2IX?!j@yaNA9IW_pJn&0aVZ^FmQX~W-8`{_75f`6}^KKu&1{&Dyao_b#A zKk&NBIrUVs9<8V0vnwYH|55u~-{E<=}pRlO;oqG$us&YE;^X&Quexbex*n{VkGk{;K z`80O;2)>4LQqLso@dcHS=kN?XuN)t~q54*;X*#?OFDa)BzeDq2NPs z9X^JamE%2|tj9;SFGxE)3qM#nIe4IY&pSMTSCkXNFVjA^^c^HvU0NU2Xz0w z!}IXEasv1}8t01+FTu}HP6hsue#c#PcpZL@a+>hF)P7nH@4zoqP6R)wZ|bY(@B#c1 zNz|E|Ce%n_*3@$$KeIKa*FVd*7Kpm%kXEFQ-y!3eM-&Y4fu=7X~ADme{Vay z3x7p9J@_Ts5B41%!{1QO2<~gWJ$AVFVzPeUR!#=~rs^vTpY?9jK6CI7lv98or2ZH< zJcR#SIc50GDxV7cL)~Ws{*1=YCj4gg>n?nb+4c93;WM;;>%+g%ea7&|bo~(C*E}_b zkCo%Sl&qI;)jrekf%3EPSzj>c3_1A6`rJJHYvqLSWmFC&cwX(Q1}|&;tizwuJl=*s zqjh5k{;IC;!=Kf-I)E>%adHg*P&uiWljS+vo2K1n;a}-`AO4uuO9A{dwYMVtR=sDb zz`xe@Rd`zW(}cfb-}}H{&^R2y-_`ijgTHRiso?XdoebgcD1YSe)F4@&^D8F}Pu*wM z8yScD@CB8VhtKwf$tl1;(RpAIzL;`K@TJvG%J8{0j#c4HE2j>>Q{ztqzJTtt1z$-y z9r#-sm%8vJl+%O%MmYocpR}%v;d83|NANY2lX@jtkN?thdGI&Y?=tZ9mE*&|*7Z5~ z>=&4RSAcJ>oFe>eJy!_-SnatC-$prA_%|B&YVeQMUmEb8mD7SBv9_5P+VCaSf4lIK za(eJN8m2w>;j?aK$|r^&pqvrBF|WxP!+))D+j})xzlSR)1Mh2m%fdI;IG=+bqnrXf zqka@PJcOUDoHG1*o&QuEUW1>aoCdt6^+wa-ZFpTdUHDvOtp^<5hyPVMF?^cV+e3$s z;b$nvdo5XyIhAwT;aT|k%E`fJ-N8Ip-r)iKGUbHubM#y#hgaZ#S56K7gZ@re-Qi7m zM>%c!AIx)g93H{D%IU+;*WWQ4ID80?lrx4u_bbz{Q?DoM(Rv!*Q%)9s*Jq}``wq{; z`^pL6^R8&hr|9q!e4v~P{LmlFb5$K)hsVlk!WU5gYB{_EA1Wt;FQoad=kNi1q?{rA z$IZ=ijU1kOBUz7Q<)q1$bULMfeOoSLpCEyr7&a`~>~I!J5Mx@IW~&_{ZuOZHIT^MdkG1PpEwQ4v*nG zDrW@0R^$BG;oe)x`rSo28Tcc&nSPOVcn-d&atiRj>|*LYaCivcM>%Eq0yUFUad-`W zfN~n}|E_Ds`KH6$@I#f;g`cXw>lit_4?jXVG5jF)uc5=o@TzjWI9ZRUsb8cWo`oN$ zoE-e=rA;~K9Uj0>R89zAMB{VG;T8Cwl~aQ+c(A#jy2G3B)0NYPS3foFx#RE%eztP@ z@VCx3IRl3e;TI@p4Bz4^laqQoS&!D!@Qam`g`a+~$?+YYhqsgyz!z6J7ad-LU!$A~ zyr=oS>hL=JdgV0X7wEZK4)4HkQceWlU_sO0dk!DKZ&S_?-qQVy9G-e7S&w%qCk?+| zIT?rh@cWgMhkx{_srQ1zi|~h)Q-Xh``K#>kD!iwhI()YEOgT3k-hw}+oDTd*jfY)_ z_u$VdX8fK~L{#NbBb9e^+x^jH@@p`VD!wc}Yl~aU2qj@=Wcp3hI za;orH>y4Vj8}Lt*(}H_lGd{N+-i42p(}VA#`szD8hW|%7Bltab{o`=&y=47QmT$?SK^@K;pt6^Ga0b1A0*|DD=%)8TFSe9Gy<%gTuy z-iI%woEW}>=AEI#$MB4Dy!Vs!c;T)-kXQNDG%VwC?|yfp!X&v z_((Yw_zKFY!RONXXB|H4s#?dwS5i(JzQ{GEpLXDL?rF-c51**@_5gl~&Y#EdeQ!58 zsSlF%GRsu+xoP;Sy3Z_p%{R^UKKx#NA0`i9TR8!IsK1+Cg#SwAS%Pn(oC4hbSixU(>$Nf-kJ^%@*NDDyIZrUe}l5^QoQJ;a90WH{dOO z52pj4s`LLYd=<5;0eo%UPYmBs?I$%%mh*#p|L(!JRE`hd!@iGzAF21wMfesf=MY}h z{gmOyshq3ull2~<29Ncgq5(feIW73@D*rb83*~g-XDFu!AFBQL;itp>kLIWc@M z)$b6#lFlv1@T-;MeVlyWSGBKC!xz_k%q;u{<>cT`sGRfgtomsHzfCzIeE!4Dyiq4)9w_^j)g`x(Mt zP|g@WTU+z;C&_wTUG<)ZzoDEg{5`c>-{E=q2g(WHyV~&_e!j+&68zuFsleaVd|GvQ z9sad)n(&?N_Y)l6fzR@?S)WJnb9OQ1+;jKYSW z%sAYKFR7e7{Lh+43Jx#AS5!_3K0)oa?C>gll5*~1^AB2DZ*D)eT5D$!*^Fs z6~2+i;hMu6@O_ojf`6m&r|s}A{1D~z;Q!UQ(RX+ZKTx&%sYsP657$asr2k@UxUthL<%yR~%l0pRb$-{QoqrHXYuEU!l9;V^{(&uL3744^d`1~rLJp38u1n}pzk1N6#*Y`R~@E4U+ffwxg1AHs3 z-|Fz!l+%P)7c={pmcu*nx0MsYJ4c&-*K_y)K2**SzLDD1$l<9klJ)qxa?)7EV_+rXQ%}mx~W_j(S9iD+_mE*(PYnz;$!wc{gl~aT_Ha0n-!^`kV z%BjMyvgaWVZ@|}7P79vf$=pxd;a&Lp%IU%5K=Y%+WB8`Z8Nt0RP0rZi-j~VxouZr! zyr6$KHtX;l{CCPJz*`!}0*8n2P&s9I_Ehs+6^Ga0dn%^^ukLPgnhtNn_ft+6K2Up( z9Nvc?qMR5WsXY%JK8F8MIo?;vdW^0z&y{v~7JiI!a&Ui7)1LDV58x*%CxrJ@?u8@faQF~@nR3SPZIqMxPqH4Zr{UKq zCkwwI{oB+O{_UT3VQ0=M&zg0OEct`8lDtslK6V~DPD5nWOQ0Jd5_#B6s zb#Dj$uyP`JpmC!IAAe-}%K-j_a)$6wY-{CQQF6E5i%WJ$EJKP&5>vtaI zWZ*Nk-^@BZ2cKU#1^60zj}SOKgfFO^GJGRFSH#ll5pl4WF!> zEc{^Y_kD-w;cF=;fN!jINYUXX_&Um|zzgc{RfpH%>no=TzgY8N%i$gPM#_ocUus_N zIeY-$L^(tFvN|^#IXv}UvK}{AP8zi=L|s zKTJ72_%ixlT;Jg_{AlHj;CE?1HHPo5`}BTD*5gUa$-oa%f6T(Cs9)sZrz@ubpZ^5Y z-U5e*@bi^ZhA*ymTY+z<^Ya?~GUYVjk7&K!gfF1)QMBQIS56ncRbZYga(Ex!QBDj$ zRO_xG{CAp9y&seH^{n>qX?W^cb3ZxwNm@tc;Z@E1A$$*&XUX9e_+5Ig8a&c@Y2D#X z_&=4?h99eaV#nbT{2Ar+;SJ>s;3umbhVWOFGlrk9ex3R$SucmH+|uwjm6L@Zp#JE? zZ`b^uhkvM?0Dipvz72f!!%TZ9!AHuez`xWwxe8xG{h|&ZE2jznNjWX}^XhjI`~f|0 z55Bh66+`&Ns;?3JH+t`uPFzY3pAId%AXn%5c*Z^6^b>A+_>!Q6k>;XU|b${E0izcM+o!$Y!wc{=lv9MytKT<;4llzuP)-$o#~bFkY7TF} zw@^+C{*iu%*migqzO8b4@S1+d(RX+Z50x{5ucY4#j2-UHnylZwl#_wqxs6$mWgVV_ zAE=xHd@g0!%tC87yd`h3lV&4jfZ{s znaYXbor}yl^U&dA_=U>xW=qy%Md#sZhiBm}<>cUHoqOjU9>A|vP6%&qW!^WH9A1In zpqv`Kq5G*jya~TWIc<3Ogem8a!y|ZCIeoaFH_tV2_z?b}a>nq!zQ2*0Jz0;|)9}ZX zlZChR-qUw@9{!Ya0{Bqhmnb^C1b<#R75GltcT^qTgkPe4T+87R{9~;Xdhp}bABXUp z?K%YB(Yhl2i)8tqrgd5d{@7AxKFz~_tMyC)ewAJC!Cz6imEfVqjWT>Ct?R1rca>9z zAEo_Z1AesjFD>|I%IU!0(Egjo|-Me;LE)(|NczXR=;aR!#;!&$Fh!vhYynt2y}U$|=A% zQTq?z8y;rzL-@MNDZ{6!oGb7fH2&1!n<%FN-$D1&grB7PZNsN1rwczo>P4^*H06xp zpJ^OR&6TW2>sk0NubTeiJ3N42q4B5a@DjYC`>eos*ZEl0;dS^0%4x#G`OSW$1+Uq4 z9sE+|MDTTPH|5ZSr;gG0M&Q>dX9zz~&oy#*>X*rSxluW3_<0&PGVrm!XXV3hQ%)Yf zvt5V4OWT|0D#GtoP6>XWJr8ks75-1<)Zu-tOB?X~hUR`+@F$ehfoIk<*LUIBUzv4y z5B|Jz2Jn4VKC#0`@Yj@+nmbvKWqp6rgD;`^E(3o@IX=9m@4w~X8|wE91^CCxDZ&ra zbA=8s!)Gd|3ZI~Jvzo&j@c$~O1^3mD+79o+Q?Hx#UJo8=|JZkU4EK~Xf-j|Y%h=)G zJjwb^D<=b=q4i{S55<7*Y!k)*ESuXW_q9P7Z#w?kDf? z0KScKLin!g*ClwQ@~OagQcey2g2v~%!<+CumD7fwrgd7!;Sqd)<@Dhz>wVwA;Y0Yr z${E8iR5_>SOV;CeTIZzUhbbouUnpzVdp`UFt&{WcY03%U%VJH_IKk zmtVoG54-TX%3%PXfk#{3LyD75;zPztrG0tsffj)0ESK->>Iw!wZ@(y6|(A(}TaL_lbS@k9w{c zez9^!@T#6`4BtrY*;^o4k5?%t17BC=oP`fG-sa#llv9AuGt=xZ0{EYG{t&`%RZbcH zo<6q%Urpmu4StVu8t}ZXZ^C=F9^nrwrwiXwIg!Kr@F$cL!ymHWqkvCQeU0JID#u$e zS&zHx`ZWAvm2(z8P)-hh%RHvO@(vH+Zz(5)U$L4QPf8B2z~50$4gN;M+)o|8uJ#vg z_!Nyx9e7dRhd-%tW&poS=T2kz%XU0mC|Uk*$g}W=l;guU()|bUzvz2+MfhLUuPg91 zG!Itc%V^$j!Y|VJ--7S2_7lOMSNrV2&)5A7;VWw2G=ev@zDh5gEVs7K*)s5*RbP2{ zN7onNuiNu6c=0gPe#-Ec%ApQ_TJ_a{|5xji4!orM?85)8@oE6?s6WQ=4ONe+3CZ%A zBKP1;m8TDXN%xgU|7X*>@Mc;3hllV5lv9SkpmC-G|AlATX9IqP>bD7> z>la$r!B!Svf$G;)`1=~)>hMF9(}eG<`f9;fP`~KFrzt0bKcnw)_23`teenQ(ymE%{i?r_; z!H?3onp!Mbk9Fmw;eS_72L6ri$A_P-oILzCc~UOHIo0f%?tH!G(H|5odtzQbeqZOR$J7g)>O z&lvuV#uIO1vcB$AP6j^Rt_R?6s9tjLyOmRb&(yjoaCiv6PdR0HYDd#j6Va=P&Mw10`<9rc$!{AuOH@V5Hh5I$4uiZT3U<#>xH>+xpg zq~Wv7Fzq}GkCl^yPu9994_{E@MgadvIU)Q-jY}o?9h$Ez@R`b~!9P)ZtHXb(=W4>g zQ%)N`S^vIR2mYq+GlI|lrdi+i;oqt~58z8`T{nc!tDG_XZq-+6iDW(QsQDrdUqm@s z_$78+g-_PJoQE%^oB%$r_BBQL`f3j)xUZZF{5!SVD*RN<%XRo~l+%Q7uJg1Od{vcm z2fnUyBKUkOn)cs=udkc|d{gBN;T@Ip2!4r|WZL_!PD05&T5uq?St7W9lCB{Q(cYyq-4$KTSD4e5k+YlY?)k^NIreJmnPO zL%r7y;rD6&D#I^TP8D9#d3%kn{Y3+Qt#VrMrR{kLd|kEYF8n6t^xz9?-O`6wwXclf zUFD46*Xf*U4F9d}$IB+`_d(@k;Gf&`N%-oj_Z<9jU(qn`~r=KA^dsel;JPg zc@uuG`g;xjx^f!uD-SmPwCV6JUH_hD7V@2PPhg8xT3eR!LPu;Y%o|3BN(l)q-zq&pqJFD<^{g!Omas|7agQfUl;UA$-nzO#2@> zJhg1H9&^e`!(UYWW*qLr*Hlg({x6L`1^7l9CyVg)lv9E)t?|DMe^=vP6~3u*>TqA{ zhX(vMTaWOql+%GvwC5!7$2HIP;5#U108ejX_NTGKNATU1lUgoWk6rza$)g``)+ZVG zzRL08{`cnk9K5E#V^)A4s+=PHOsx+?hnL~gl~aY!tM*)Tcmsa4a$4{+wccyP&)0o+ z;U_4k2R}sXpFVt9?IU9NY04SF4^V#}!@tsg)>}SVzZWPc1D~YzRTjRo+Gh@ag>nk; z1rIRiCjtB|jRPV42IZ9DPiy?Fz^7}Rufgw7P6NKN%CiZdbzQSQX~QGsbm3mcJXZu? zSnaA0e?mDid}z;M;L~kA!UxLnR!G+4hdRGa!+$Z=jN4iG`^w3|zfry9;gj@S0eq%% zLilp3_Yyp{wJGNc{3qqq;0x;h>+lbCe$s@`6PtBH8@{&2=MH>R%@+}TG3E5(J7_&W zfPZ1@5x#a2(BK#cf_e=1t zl~aK)rG8X(cpbira+>fBH2$>U9ewY&1K&+K5qygN-NPO{&^R`L@1>j}yr}cuk;7Ad zvK|jmP8vQ@?K$IcAAXo}^6+CcUlbf(gdeS(61<|{HIyA*g`cFHI=rcQu;K6){50is z;Je%XyTg0%^OQ4yPgVWK4j;iURZeQ9WIg7!j`AFyfnTj0A3o>(X57m;ya2yJIYoF; ze~&$Mco}}Xa;oqfRbMrSH{kavrv)W)$v+%c7&N=vcT36&99>70RP6(f_aiauZPV-R({)KXC@NZR* zb@)@-Z#LmyE2j+~XuaBjU#|Hyg8!tPK732<_XqF`bj~n__qE?lt(vT_m9)>z!hf%E z(ueOW58ylMev0r9v_CDuy|>MJtO8$C_fv(xsB*5u7gSCYUQkX8K1<28=Lr6V-ABU@ zv+Du);`-bn{EiEB9s-Y5@9EW&<$ui&=K2i$zq+41+|&IR;8&{NOYns?zm(x8YadaC zFQ@0K!~djmXuucJey0UrRXH7a!M;y{udMs*!PijE0RFn#a|}OL{e1*qUpc8s$?_lQ z@9=mI_u-%JqWRk4Mfm*ZnEDMJUWI?9_E2+p3%;$sC)Rd&5B_WY`+a?fkKm`MJjd_{ zv`)zUI$54utA4ZaS>92(!8cRA6yQ5*9~8i6Et#AUK2#NjnlJ&T_#^E%)shlkQBCRuh_+Rb&5%^`w3E=DMT%rh1 zYo02>uU1Y4UefxZ>hL=JdgV0X`>Fl39NvN7uAB%yug;@-4j;fH$lM1W%vZ;RN-rBoT)jy0naL@1^2Eq>!LP%bB(KA_$tcj!Dp%*`tY>! zWB6p{jNl7veKK~qw??vl*HcagzOu%>tiyBgEtFG$A7Ibb9Uj8BQBE1YvOQOKcn!Xj zavJcP)xVk!Z^QRcP8Yt9Jy&;lAHJV*V)#w!7ej}S;fE^6TQgaY({w*+hiB=^$-%GJ z{wweB0RAWCgz)K_2TKmG!2hhA8vF{4KXr#U;SJ@q;dR|l$KetDZ_4SzA5!}nID81d zS~+9*zqId2t(B}t>uLB+%E`i~Y8>+&o`-jp6Tr{VcwTgP34WJyD)6nej;cDm4!=h^ zP58GO4_glJz#mXf1b<8Q)pPg&{!ir$;TPF?)8VPLllAzxa?XUpX9WL5=V@d3PjYXaWc@C$oD4jz^O-FC4$Vh7 z_^Qe&z@OGWH*k0e&nu@4|H*z&)!_~J+B%W8@zaGLbP>#25vYZdF z@BQJ=+VX@Ss_XOc8+3jWz&BO7g>df%bIw+RXXF+5R?4Zt-&8%;;g4v&)P(P-oHqP; z?aMmw^f~7IErRc%oId>Tde1U|SM+zxhVcEBGls9CcAi=QEOo~WEO{7$WBGVq@Mew`0LMLBu+1DYQT z@Rr`27vXi~l;Edo9x20p{Z6C`KTSDx_?=omG~l;s+-SkiR89wehWcq2p3#212R~am z1Ng(*-^K7ye~7LmU2~=9ez~D&_RxKWRPOhqpAY#_(&E zGlEak{56Kh`d+cOVX}U&Q%(jx*J|c_m|3{@lsR|G!EaDb0e*+Zp8(!hKMmnGDW?p7 zN&US7Z|QqhHTW&cX~5sM^Cmn{y|>}FE2j&eWi~VKMDR~_pM7{&IWhb|?W2bdAH(la zj<->=9*@v`k%lk)mZ`5S{88oP;7_Z*^6>u4re6f`r3dK^_?yZZ!vl?bsY0^8(pQ`EOvB$%P8Pnq z#$g{`)I61kf1sQIzLMHQ5#CcjD#1TiP6hrq%~MtQK>vPC9sY0SG~w&(ytf4(XdT#r z&s0tX-&XsA9(<&A#Q^@ba)$7C)!s&MZ)fwnkJQG=di+*7X?SSgH^Cd4e|`9m%E`lb z(sLEy-o>W<6ydYJXZGDC_%Amx<9QjL+tTDz;d3ab4o~f2u5ZBmntxmHxs}s_x9mCx z{=QwW!WU4^0KSIyQ!zZ$zsoa%FRGl>Cdqm{TjP%hUrzH~2EK%HeE5!bodZ8uUVtyF zoFaT{Jy!^SRO`$#d?n>n;cM&uYw#I*f8BupS~)HFB3ci$;lF&&%!6I{n#$?H@6~>x z55HFBAH&yE&Itac=J7H75slm4rpfv(C?^9yNaJc2euAw>_~yzfz&F)67Qkma!pwsq ze2Q|)@Z)qp75JShpBj8yjSxe2V&e8U8now^jHZ%BjOk`rS$cUe$V| z1;0l*9r(XBK6K$(m46Q&DQ5sbL-SM&e?{dpfB8^VJ|%+hrF~f+KFj-N z{}sdU(fthJr|A4=44*?e-j>OFyg=8d;W>L=2cKIxIr#A!SM%^ib*>e_)5;0qO^tgc zcvoJ5Pf$(`KGyj|9Uf@>X~HKerwvaXYuZ}}UQj!X;7co~4za@9@X5*v;H#*9i}3$yd@I58%BjG2)%{oD^Dk}I zpLO^K%4x!PR(ZDIpX(f^1K&hB5&S<|Pxjy!tDO(vzg5lRO1%{*I%pQM~Byr^|o4c@iuSomL*(}G7D$J+3U z#?>zTEamjzd7XRr;od~^TrvE7<&5BGX`eNQ=al1Zovh!Bm6L%VqWa3hXaBPq$8zv1 zlv9BBw0;ZVP3_}C_}`UNhA;Jw*%w#fH)-Cl!EaPf1HOiGn((Le{AAXl|V)%lGo97zBKT&@l!yizNw@tDh%UTDf;Z2>xWZ{n}CkKB+<&cMOqkU@t ze?mDS{8Nn&CHO$==L-B;<<#IC>OFWJ-qG*$oA8&F(}s`rxgGdG>#+#_hI0DwY4-ae z@XV8DeKmx?tDG@>OU)OlZIks_vhTm(A1Nmb_jfR#>%;phpFI3?T3X>Q#nKU zURvjj;Hd-5bES&OdYo4|X}GtJ8P7BDrshE(zL0YA@Vo4L6Zlm79uvNpa!T+&+4CQG zsQID_UrIT3_{mz=HQ=$@PYb@haysy)?xzcnG>-M)t0-pxe_QLE7+%nRd<6fEa#Fub z*5e8qpFMadgn(+$D%~!?PQi=ZfJwDrW@ue=ygN;n|Yuciwi%`rTDI z8TfPRUs?D%T36@bdnu;?ze4>YfFG!S8p8KiP8q(6#?=b^L9Ih-@I#c-fEP7iG~t2T zXB&Qma=P$2zclNX2;NqE?!%8#P7E)q9S-4nwdXPXc;$H8C+o4L^>!LQ(taTeKSen? zctPzg53kAt_-V=s;bqM)C3sKwS%IIeoErQ?wZl5Rp!u{3zfd`C_)A)cci^AMBlxAt z>BGO*x^w{V>U)nv_*Kdo!?#yIO6`!W$H<=J!EaDb7JjhSr9S*Hoj>Q{w<{-rAFrGu z{1@w)c3y(tubc{eZ>{U9@Q&6Yb@*e-X~Ivm=LYa6R6ZSeUpW!{R?Vk9cuzinzoMKW ze09A)9l`gt^|)iQ9^X+;8va}5WZ-A%d42dN%E`m0>vIe6<5cfO_*cp)!RI_s-~WMs zt$tU9|Dc>Y{BG561HQQOTkttPH0#w4+-sWl)`jn_^>7b9zj6lfKWV)h!(Z2YF@k55 zliDd+kEg4gJ-GLPxz7xIY32Cv&-J-Ecxb=p3}0C}MfjDvpAbI3`e_+HSvghs!&-0D z;03Ms8u0a%(}GV_Ike&H$h+{(mD7X2r}NJ~{4BNS7`}~iM(`IkK8)elE63Y8S-(3g zCj+l*otcF%qIo|DFDa)0Z|fX2fKSvpX9zz)Ic0c7>yrxnRgGgc_~FWFz+>$rn($vN zV%l>XevERu@QUW&2!5N^dwuxH%8B7+t#gL(XEdIS;b$nv3zPMjS;4Gt)9{}5m09=& z%E`fFz4y$+>qnS%bpXFyIU#(k^M?|=sdB5p+sdiID_XDC;Wh2Qn(&*I(}rg|=KeeI zs=hxH!S7a1A70hIcmVhQZ1RWjhn3^~K3QK~jbj=3toNGpRUdwy#`6NaFf{W>0G}!^ z!q1b3@K9cYSL9{*KJp6u26+{Jth@$q$?NdGya8{2WS+MPe^1_m*Ok+TcjX=UKjmHc z>+%R*(&zTzIe8x*$p`T7NAduEu)GMb%0u|c@)EouFT=BX-U@tGc@wKvQk92(neuegH4S04R^LZV3 zMf>7DJks?e_{z5Y)n2@m`9IlxO@0o(zSjRmc%DQs_(<0W@a?oOE5hybR^V%?pH|`a`X>Ap?YmoW`@94A?z*2C-e1_X zpOnT+TMmcW_cicX&+EgF*Y!EL%@5&As=t)r_IYdYhqcbH!_#X2UHFo!-w1BUpBP?y z&b0p_d^C?KpNz(DTRxG-t1R5!PXWG;+J69#RGwA%rTYF!4PKjI?xzJ`MbF!Y+xs8D zchI>?4DaZEQkqZf^PaBq@!&OGpNHG=qyV?$NeO(Z5M9qYXGA`E~eCI)`u4?Kw7lQ{R+N7rws6=N|k>-Twd{Y5W<& z*H$@?;m4|7c?TxTzo^g6z%SSH`tUQfPRrBPUjq2wN&vm8A>A?5WIx~jboFUxijNtbAG5m@`QKOI`|180@S3jgz`xV@Gk_QV&*Tr`rHb+NA<6rXl%Ip&sD2c}Q-_)VeHq@8 zH|YA@4*YSA4}Ey7oDuvVng`RmUppU_4mbCcgTJqS5yEXbm*Ba5r~Q0h(S+M_Zo#t? z%=H7fo!4Txo!3&TAAA3{oIQA2`96H0ewTwsXCD9a{g>b$YQI*7H*PHbe0>AHs>Ycn zyfBM--UvQf>z^Lnmd^j(AHMqUL1+S}pw&8Ys z=)tF`zWVT3^*e-nvud3Qe^&br?}+61{G!I;41Ce0%>3xXKM9QI;U6eJfLFDz3E|6a zX>!W&vsAxTcth)iI{Yr}*P8H4b$uH?L*9jdrhR1(ex2511Nb587en}EI?oxyKh=EU z{V`eoV|fNX@lcgNeD0^!KH-I`$*sU&(!ADy*K~acKGgMnc%!=X^SM85VaJz14!tM1fxV?S=x8r;a zx8rwbd2e4VC`@ zZu4Wf%}=Sn+Va^_>pBl!Q@#(sL*sT1Zp*U>xAz~y?fqBb=WJ%inHt=l|Fqy^jgxKo z==|e(Z(9!b`Yhbmmk+n~6~MpIcwU6t z`l`U6(*0NAcD!xEr|W#R1-JPT{7B9FJ-BTTL-^`ihm7F%elnUrZMoU<%))JX7T|Wg z3gGts%WymXSKvAImj>L9S53GbuexwMUPW*_Ud3=bUJc=Pyvk_)x8-B^ty#DouL^Lx z9thxBJ#P*EiS{XVxE-%L@Rc>*cHsr($M8+IHtW(MyrS#VS_j$ZJ<^^J!&|z(0AEex zVE~VGeFeUa?xzax==vu7RNG(Rb|2k?+xL0{czOeUPZ)l&)>mWrDH^xE6O!Z1+b5X$ zGy{L|EK|-t{5PtvJbY)Z69RZqzoQJ{XKNfN!!Of)R^fMPe^-Y;u6O8y$ujzO61NaQh`$PBw3u|8wZ)tz+otP~DTlKsd_|tk`AHJ5_XC7|fV+L^h z{xO8x_m5@xO!eO?yshua*WokvG0)qCZ*JEW@DJ>JN%*5}n)@unU$*lp{2BY69sZ*BiB0%}_B}8B zMR^xKVJ&k%J^0~z-!y=~rhj*P2>(jw#;KE&<@UCH9|yPdZyNs2A51&R!1t(``^>^; z{9fY^{Oc{u^#OdD$ao09MdM)^zKb2V;S2xSa7Fzt)52 z^t+D%d@r@PA$(7*i^gz2HuHjaO0vGHx;_K{SoP?`|4-w29^O+jkP;IsVAw1**lVD~lfrhc#O zotiBFj(!K1fxoNy%ZGojeQO@Rxb7!_mo(mn@I^F!mf`nlysg3?Q-7($f1{ix{C;~* z4u44H+=XwadhEg5_V-Zm167Yh_zs${$MAtZ*ZXs_{6`vxbMW1Dex8Sau5u{Ai_cI0 z`P?9YH(oYgg!i8_9>U{SjF;doU0;TeUNqNN;H77bSK&o@4PKDf;W>E(uRU$@d+^rd z#{2Nn2gZl+)_cZB@N8^+On={as-CRJjy^XJPsBB$Kx_1OGG*k}y-`RcrlG~bomxt#*H057~m*ib|Lq2wRUgc^(_d2bk3UGT~ zRDy4*^+_3Sudlq0d7iDoU%k{^Ux(Z4yKuW7iQo<2oS(;Vdp|?C&G*hq_EUR5 zX}G;U2ls|*xA4>f=6OT-E!(Ml;P(0&d=BN;;r9AA{8N>G2X3$L!=HWG-2VV>uOGuN z{l?sXO8wZjD|>wwK1b7B@58g|ry=~lJIwu*;5NSox8+}l+w0r#o7EpXaC?0Z-qiYb z0H1EpE#dS2+KiuL`1V@oduJ!x+k|V)^Jd`ZX`SrDAJcf1hc7VGlyd-|?Rk?Q!vCs$ zXc>O3yb51X^;n0Wq;hD&54HO^_;q$42ftPI(u41(avQ*(*7Za9e>Lxn;s4ONv3E|g z{Kxk1^}%18sCEngLFZ9<_)|Lf3*f8kdm|xyDgC~q44>zBT9?A-{?Xh|9sZ&AYfbp; zYA0>F?z0PDa!&KPJ@^%`n$I1;=iJNq5Wdh6roD~fAE>^(bCc!&sXZ@+FRFYWK2_)2 zdH4$IcL98&)-xfzru}9azKZ%$74H4PJXamQy7miA`0mewnUsCnhg@1K|Y0o|Q_Ud;7cxF@cJEI{yRW~_f_~vRS z-ucP$Uq$UR1Fxw4_;CLh=5zD#CG@!ge4F2z`w8Lut31o_AJk8)@GWOC<3k<(jLrj_ z@Qu}v+VBN6A9djm+H)lM>vsNyfA=r*T;2uA@{F#o{=Cji!_#f!8F=eL<9T@FTH^(H z;Tq!syf(vl5pJ&!;c>@YAHkzbjrZW`rg85=$MeGf_q_1`JulooZveN?6~gWPm*LSr z%zZZDx$BI#;f3psNAUlZ1N?vG&`g%Yjo+K`Cj-As=iWYi_cKlV$-`gL`X_+zq5d1f z8@3<87hTrmSKwLiS3kGUi2mczKYI^8`oVY~-j}!jmMn+X#>$7c&9(0GE=`v6s#-s1 z;M=HO`S2aIe$Ksz`mMwD#Q5ezoGJ=X36h`!yEWh8~@As>(tDe{Oz5n34A5-_MKlNE^ zJ?Guq@TdB?ui$6E50ievaqt z!XM$++iUpm-{0o#9{d5mUjuyG@9%r-29Oc>Ce+_WXVLrG9@Gc)Qg8@lWk} zbp$`h&tG%+;q!L*+kO6I@MdXsW(xRk{JwGpS9^BhulISy^o|o|6w{PI5`}uJX{z|`Y>EWuUwBhYl`_K04iU^*2{iOtcO>gG{u6ekG z|MmB+A9A?1FX8X@d9nj9z5dlMJoD?x7Ow9p^zb|UyPr4Vh41go`&<3$s7^TmO3w|EWKJDB;1|tsM>ga+@}<_TY!}AFg_m8=j~AI{K3~A0oK+H-T3^ z9~N+}uO+#l^yukqtNymIg0%Grl2CwS+y{mR*dD<^|1X9-tM z1y{}*uAC08oY}jk?Nm+-SI#C}IXPT8J8z5l&~-_*}X z`|vOO^Cesm`-2huQomoA!*xBmfakBZ`BuOS_Z2*Uoo&B{D}RK?S9;#T`r3y# zueY26=pOXFoYkvd(_*d;b(!qld`ToLx?e{_9`=GQxe*Jse^SV8Fe5Q^2?ETaBU&Xf%;cvW_^pr|@0Bp4o!$_h{tovX{$_tZP{4oS*Q+b|WBq<@2mTSi zZ>``j@Oj?A-{<4L3;(VE+%^0nKkjw#AA7&eeEw>EMLv!Tc=G`p-xMC7W4;4_yRJ*& zy&pGP_~lNvabLrA{V>39@BKN#bvzG0IGu-yZ@&T0{P@2KuYH~*aBZK#@8;K^OSraQ z!9(xoH9Wb%`m=+lwfTl0KQvzI=LoKTPT+s)>u~{Bzb)a9^85N6uI)?s@BFyE1J^k2 z!ZnU9T=_lxZ+sjFxVGQ$pzo+o|&F%QG{r~U+uKTqbp8k`yzlY}^HXq=bZ$JOYw4KVy;L2ITl~co&)5DcB zz?C!q=>MZVaOEuF%BkV1Ti(Hok68Z%ADjN%YGwCjb9nT2t8<&fn~(eafvZ0J9=!7H zM|k*A%b9_jeOs zx+n1F6SiLqc;egV@KOCh_xgSvy!+yF4~`pq@ZLTCw(U#! zhy6KK122604*n89PmS>2w-3EtIxqa%kCQPx`HZ(8zV_#GOL+WQpI7u>nm6$7o96p) z^-tjKRXZck--KV{&uJ65?t?P;*VTS_==nSFd-(CTf@__&@YnnG>KYz+{yzNwdiw+K zZ|$$nn-Tm${#mPXUpM{ zZ(qV^m$!av;MM27{qV1<{qV@Q4}Cv0URU;YF^6Z@wRxMvbN5~N5Bz?ig{Qv#KKwj? zjuCjf)Skq*--O@#jn)qdT-Wm%{PljnvxIB=75s;O-(A9E?JxWyANLj>`u08i+AC}S z09SivKK|;5E8N(Qt06p6|G-l}9wu;ImuB#X`*W=&T-Sjs_{PipIT&2u`)lAY@%#E+ zxXufEa6NDA;p(5@3)6L{=Z!PC*83cOzQ3=G;cCwoyuYJ;pDu$}H@0=Lg!i|z?Mrxi z6WhLl>o~jzkA3?d9=XrIIPC|uGlmzw{U%)P%;0Kg2~YmjeqIAV-`Cd~UfkUFcjo_2 z^SQgFc?d6k`z`psA5SuPd=+~?TflGO=j#<*+t=_r`g&~O+P;H-%jeG?T-%TEth0U# zzcd}M5Bl|93~zn=6n?b_*t*N%$(Jp+gn!+~rGZCZvF$tfh2EY4Uf$ZqEB1D29IM-y zZ^P$)d??^rzZLuiew|#y3;(%$aOL-K5 z0k8acyQ2H&4Qlv(b>4^T_}sx`KVR&@TVF5x@O$|D4}4yz-*g|e2_O8vGJ&f-8T|D= zzDu~?W3J%$euJN1;QD+;1JAzd^BF$-sMocFw|DaS?Eg;t+qrMUl~cf@8`%5A2HyMM zJNRw=xU>&{fIqhnE}9-6^gK3#AHG+G>wLF>M|ZXTE#R^H3Lf3fw(sD@zghc6_!UyS zo(aD;ZGZN4`+E$(pU=+}-um`A{E0q4OL(+r`3?MWp5MU>-+qLD%-7@0_fPYoxx4j4 z3UA$a;1Bb0tl(M~E&RHEJYU1L?gsb|_pF~sxXwGF_n+E-(w42G4Y;=7r2F-M0atr?_Z~q#u>(T+P>&EaK({sr+FCrd1nsq)J}Nsz6)17TX^f+@58TmC3`Luc)Qe|#1^gNQd}9S~Uw-Pr^Y8|qeb@T4gP-chnGs(3_ThKz-)VnuQXOW~LL zy3XO5Z(qWH>+_+3x4wM`zmcCG2Y7Y7&HvcbCnjJ`}RHj zY`;$*;Dv9$;rpj{{_1&le2(CmZ=b;H3vBxZT-$HMm0!R$-zvEBYq+-GgR6dZ57+iV zKb=?lT<#36&*jGO%Kx6iOFu8<@ZkIQ^Gf(-e%{=Lm;Rimg|`p1dDX*T>FaTTYx@oV z`5NErUFzct*YP2NpXK=rxUNf=@Q0L^pTo8N3f}pCt>OI%w!a-bf3W%N;^{alX8~7E z3RlhwuADVoIUQU%vmc;6{(Hk?czTMpe-oa&r|{T)3!b>I;5sii@XEK}g}3e<}vU$?K|owt7%{v`joEnN9M{4_rv4sea*>=)B<>HX&};PKae z{=-M#zJyo5w%i7OCqFND@aR8%T;TWd?ZaPA+gbSbG5k_rzbQQXjs5!^e&Sti+)H@x z+c)qx`g7V2p6z@4;V1ieg}<7%zxVB9`0;;d^D2e6|JU0Of28+M36Fkj+c)s{`+Vr& zg>OH?FZAuh%ckuQerJD=;qUSON#M7?h4u3S{&_wBhmU^!xdlJL$18(h{a*e#DERT$ zHqYV5`tz=B_{N`G{}=Gob5`)Xp6c@le(jU&=kCCBpAQxMLhrX4{v+?72L5cHC%f?b zcGmtDe)k_*JA3%2{rYWyzsK+2NBGS9XCHpckK4};eBJB#c}pMn8Tj>DVq$NG3B@XXtj z!8bIY;k|Fa13%60<0^RJ+qdwO{J61(H@^JDx!} zi}d+JxVB%wzwhfeg=_m9{&c^e+Ji*@b~(0ehpvw{NICb`F;)X2mASSA3pl~@!9`Q`~P$Pb2s1*^ygZ0_=kKP zH{nnA_AKCU@b+)PAL7^HOZa1ae7E8IZ?Nl@75t}uyxoESx8Fb3@DKa-%r5+vew>#FZg`ehac~C*JnX>@Sa@j^n2=m_*cE3=kVKJ)qd_K{HMPC0{#Ra z$1V8Zc|R}VKl10#+wiCPb><5GTR*Puz@O#E`5OMxFIxL|;a9wk-Dj=gSGdf^eGmS2 zpH~C?=iZ=wqaToptKOU~(fAl~buRZwdy!`|GyPmTTFZ}1u zet+8kzw-IE0YBp@HtuuyZ#{n#{)acQ?HBN$-ND+w1%JMtx4@G>u=X|Z@AuUHHA8X^@z;(U72iJ4m9Rv{yALVbBW=JZ=b@|{w=uncN_ldZ`=MBaJ9dJe^Jk);OX2x=e&mN^JX1f z?=MEUzIU?^SO0JL{8fKeH?#If@c7JAgCl>o;6L$om%;Tp?E-!+Ul%L5-hb8bSNUwLa}E(ay?J(!lfd;khXq{QFX1~rKeyp$`?^@c zAEW2t@YmeP)r-ht-sZu@Ad1J z4fq%QzF-djf%_)>WbcOs{GNWk+k&61>uvbW{k*&lzqUWOT)~g^`;;B{fBA8;hQHL? zxeI@b--oW@|K#Jf2cN&%#&>}0_ucQqFMr}y4(8|ViqrnT;v3C3;K%ql&f#zJ_HV*J z=i|75zthjxTkz4xaS4Bq_ro^)wR%qkPyP3>@4)LP*mZjie~w?r?!tfHe}BgsexbK# z4}J%~4;|ol_4%_8f0O^**_EdKuX^|!@LlicIsBSFjtM-f?D`>tpZ-jnCmsC$Pcl#b z&$K-!oMPU<&+z_gy|o2ciA@93H*L+PMS& zhR?SOJ|1h=GcEkX{#-unn>-@6e?bY$^GoBy8yAN4=68QJL{R_Ch$G3$4 z+VgXG`_e}TNB(TXo73&*7Vy!xU%{)>Z2JC6^D6ZJ*LXeFuO~O*yM8=O;JR+f;7{}O<`S;Yv6t}nYSx|# zp13#gOZ+`-2TzW&oE~0y&Io_4A0I;h@9Kx_>XsA3&+y~V7QA|+_45wAdA0c-eE%1A z-00zzZy)%6s6Dz5ox!zE=Wwml7_N1?1=oFO2G@0R0atrgaJ8p~>$<&xtKNGD|E6E> z?ZI{3xDUVMqwRPY__(Rxw0#7BhR^dky!8HGz;&OP!gZgx4L`guhO0j-_@n&zU&Gb@ zHC*lK;A+nZ&;G>MyZ^uX=j~UzYH;LF46pp}Dg4LJv3a``%&!@%k_8Ru@Q~0C&IzNXOzI_S*pnuM!g-5=92j6&n zc%=J-5gu$Mo2T&hEb|@st*&Y9ui&L` zzXw0luN!-~>RxX6erta$jQzJMCBM9>Np%4S44s!Nd1k{ucZza~qcouH$n7zw0Tsu2*oKFBDe{ge6ML-_4{zHP$Wubdhj`Lhi#I`dul_x*Wz3(tM~9uybuA}?M=!PCj~T;%=+_Bb@Z#T2Ju)4F9r!2wI<|rr7uohLT;slm zYupF8#(jiq+&6sxw7(kn2(EEY;JU6@z_tAnuJ+_`wZDYxI&BB8d9@3FyFb@z;d-9m z!!>UQxbkP$v+-B|98=mn58;}(F6rUzdo76wfzEqWv@Gw!u5HZ9IoHvunpIB)DHYQr`d77 zf@{95;pI(>|9_PR!5%!niTMEU-1p&ydlXei;sVVd)!$gaweE8GkNr8@4*Y9A&x0FG z^H1^Lb2@{^Pqy(5;r$tBAG9xlKg)lQ-U9w0pC>6i`H|%m@WJnkSMW`LzFoqr%g#J# zPX$*_4d1)EX&5;Eg~39O04Y1UHygpBNr_P6AiX0Yox`jXrK%Sqtxxx~h60oQn?@aktif8fel!ZltwJo20ZuACKI z<5j||pZffPE2oC9&$a$(;F0IF@W*T>aJ46gN1ju_m9v7YJte&Qp|z)iKP|KVso`o*1CKnXg)3(bS9>~m_3zf69=?8t zwP%2d+fGa13 zR~K7*GWdUf+>T>QxN>rMR1_pLn@{KSi`JvCf84LtIk7XIx& z@$(m4IUT&}tvx+__6f@w;K~`{k>>N`Gv;96fbTsaLq@|+f~ z^|gj8r-N7D_W1+X`WoQM8R3!V1oP?q(fXRfl@r3NZ~6RzYkke(%8B8T=Ol2guLWE= zDZKio&mXwf*AlLr93FX20oVFk!Ie|Ot8e)Hfopx$aOE`c$a7k_*4G-YoDN>?`TT*O z@kl$a4sfm05gvI?@MqKcqnsIB?Fr%4*M0uLl{1HL`~6@Hk31)VD`x?3_v}6;g;)RP z^9TOO>)UZ`30ME*@W^utxN=r-^-l?}zUK1>uKlXvy3cLkiQnh8aOJGwy3g(4f#2u$ z@XP!8Vt}iEMtJ1=72JF}f13MQKhNOG3E|O2K7Zi<;@7KlxN>56^i|7A;M%VRT;r9( zD{oH**M2SG%E{rCx2J$>zgBSNlQr=`EP|VeB9xO&u!q!8R3EF z1h<@yyPmhq;K~W%)jNIu!1bJD4p&YLPdq1q>-ok4uACI!zr)&-!Sy_0312?Z=5r3u zynhO~o&&7lYEKC-yge0M_wO}aISoAWoECm~-wjtz2XB3S^>7`Z2e@)Zc=dMc=iun+ z{L%4w23Jl9Pdq1r>-ao}D<_8cwY4XK>waeeS568qJST(eerE|+P7aSer-18zX9ZVI z32)zK`&Gepzf;4N)4(&&Y2muxS;Ljn!2{3f;kw@$;K~`{)pl@r1f z&xzo=-x3Cx?Fr$y{Net~ZJn{X?;L2ITi--9254`ntTEMkVSMdJN?Y&G1kIu6Gso=_~ z;d}lbzkyet)50|m*KoC`gC}SE{DCWHfU7+ty!D*mHq-f|{hGl?e@+s@s~w*|aOKS5 z-Ft1kVtC*=30ye~ce!XwYA;L54t z8y8srH1OiJ)}9uw`_naC8KiQvka z!!=$pJn)9xN??ojaLqDUuii7T<7H#T;o;3BhRVe%BkTRuLfR} z)}9uwoHbnI)xrB$SWXXD&H&eVjqt>Cg4<2!k8);kjaNv2xwR*PD`yVZc*XF*a}v0& zTNZGQR|?Pm!P=9-m9vCvymEMZhUFA+<*eWuuM!@4P6by^4cB-z@Zxl9PYYMh8m{r` z;QeWq)5DcBz%^bYJn@|1_S5;J^WY4w@e1M9%d9;STsd>N#w&&go|C|pvw&;7Qh2tq z_GED7Ea4ij9NxavatgR|R&b4136DIdf-9$nYrGnG@e*rK3)l7P8m{r`;Qfm&r-v(N zfNQ))c;Y$19j5a~IWxG%D}+}svi3x9<;>w4uNWS9P6AiX0 zhqo`VoC2=v@D+UN_qioJ@|+5;oEpCL`-=u%Jm1>W!j-dz5Bl5}ye}-Lhbw1*H~QQc zJn@|1j??+0oEdz)k6qV=@aj}+PXt%a9G>0(sNl$-7#?^|0@riw1zhVZh4+7F?aAQE zS;Doxa(Lo71zb5RxYkz*ubye`so=_~;aXn}Jn)#KujC;R+?D`$XfeU0$; z8I}_qGo3$rUoeAfyh3>7IT2hrbGXJUh8It__9SrSEZ`ci6y870ax%DbmT-+%4o^I% zfGcMO*Laom+}cyYl~cntUJX3(oEEP4R%^J%tAl6Hv-b3G#XAReQb@1#IYfn%2&#Mn`jn@cow=F05^XdFiduDKrR|ta`2Gv7oDv>+P6a=F z{{>f0123Lz?P=kM@4w*6>EQiImea!z-+#fCGr|+k3GOtVKZozX;K~W%{o}1Y5&ZD| z7hE|pJn@_ae)#?iuACHJJR5-&%Vr_~H96xN;hJ z`&i3q;aXp7xQ=5Tyn2%5^l+`O0j``89(Yc0=jr^>`kKL&6T-76T6-e6*4G@aoEY9d z!EzF~*4F~AoD?2;P6pTdTEdl+!;7W0r+{mHt>DTj;gOGf1=sqj;mT>?#fjFQ7OwTR zhAXFo_m8oh9xN;hJ@hEFg3)lKu!4uQ^;fF+A~{1g`b9fGa13R}Z!JWN@vo zC0scaILR3T-UuFyn2M?^l+`O0j``8 z9(Yc0x9R-R`kKL&6T-8 z?TO%8Uvs!}VtC>?30&)I0as2+Us!uGxYpMauACemcuoP=`dY!2Q^K=*TYDjQz zP6KcM(sEk3*4G-Y=Oi7xx}W9raILQauAC7bcuw#a)A^(IHG?ZBglETFdm^~j*Bq{# z7~bC3auT@K*8;Ab6drj_2G{yp!j+T5i{q?41zhWE1y@c9k9^!KxYkzHN|9n!%M5!mE2&dm^~j*Bq{#7#?^|0@wE) z7H~Z$N#WVC)}9QmoF!cMgE_qY3(G0s%2~m6-CM#V&#BJ2 zb@2Y~mea$PGr%=oBRuh(;2zWYqwkf>;2N(GUfs>w6Ty`;hiklIc;Gn+TsaH4#w&$q zceVCpaOEuF8m}DQ-o1=o0$@W^v2xY|?0HC_$8xU;pVg&%%@2d?qz;QgH} zr-v(NfNQ))c;Y$1J*V?WIWxG%D}+~nZtaQS%9+D8UNJoIoCL0%1zh8m!m~|lPX<@c z60Y&e;q5V&Q^55-sTEw~Rl>7Bvz!X9oEon2YT)hMa$2}@)^Lqi2ai0bhbw1*YrIBy zaWiXAaIfk7QO*pm@e1MnO)V#aD`yVZc*XFR?1Wc;v^`9MtE^Y zYfo_R>fq;S{^)bdGkEIXqYvTz9V{n;D`yUmFS**m&x_%S=Ol1_E_VTsR+f{(tJ|M- zke|VovxM(^oxmI(cuoP==T2AfWXr~@glD%q>!3XqTsbv7IokHCfw#A{oEEOnRj%Q+ z|320Z9(hg=SIz)$zHjXr;l*vvI@qsZQ62oh=8xv#3|{;9q(XRgYs-n?%9+D^Z%+&l zJSTzcdlL(|+LOYwTUmQDxN??owI_$SM_Wz-*Sc82H!ik*F5!{qRB+|g@XeEb{=kb{ zT6EX&5;IrrY{DCK)6WnJye>4wg@Ze*X6T+*TTYDn7a^~>V z`#FXOp0k8ke^wmK?`?Q@GxHU^pPTQ{eft_--Ojde;i~hzhQHc>A58~Wo#)`VDmd~- z>rwM$2H*R%_a|I+o+G$&=I~CR2ZpQ8a{^b+0v;b{?MdOP^PItzvxMiKlfzZ#xqxfl zuHfpQ60SPW6aC)Rp+^dD`yQ?|8#KGdG6uL8Q_I~4|jyC&U0|z>HN`oY6e&T zgmBe)j^N6f!__}ATy>rkxN;V7^-l^{o#za$oF%;Q>zo{}I?n}MIV*VS-!CrVs`FgI zl~coKce3k>2Ch2KEnLUFHC*G>!BywEhbw1*YrICd>O2R>Pv?(vW^j#H2v?ow2(Fwt ze9NzsW4P)(Cvbg^cL7)bq;S=F&fv;f!qq=HTy>rcxIU-4f~!3xTy>r+xN>T^+S9;Q z=edRJdjxB^+S9>R=edU~XMn3cBV2W!gZoYAk3J_qgR4CuTy>r!xN_!jwI_zF&T|6S z_hJ_CJ-^;g;i~hT!IiUw2mfm4!5pqS&jnmLD|mjH<&<#Md9L7keqO`X&kbC4o?Ezb z)^PQ62Unfv9%DCaS55<0o#z&=_qJ=eayq!`Joj+D zw;kZh8R4q)96Vq;fArpV23Jl9SDohwuJ^WcxN>5+>O3cKy|-P!m6O6%=Q)Gxz3mdN zoE)w?&jnoXZC7yRlyKE~uHbraTf>#pz*XnDh3mcT8m^oUt~$>>THN|9n!%M5!d2%vf@^)v;mV2Os`H${wZ0Z`<)m=cdCuTkUrV@ha=7X|7jUhw6r+xYkzr^xSsDV;aaCTTy>rcxN=r-wWoxu&T|DTTmRp&W^Yrp1j-RH(|)p<_f z%2~j5pPRx}=Q)Gx{pJ#`{>kC0^IX97-faa}P6=0?=L&xKJ_xRy2Ch2KEnNGxhHJb! zxavIjaP8LsSI!7mo#)`e)A^(Qn!%M5!d2%vf~&6b9Il)gt~$>NTsaH)%Af0|aMgLv z;L2IT8_&t%s`FgIHJ@wv=ye+!xavH&aIModTsa+Fb)I{;o{J7}<&1FEc@F++I_`RY zID;!EgsaYT1lMz|Ib1n0Ty>rkxSszk;L1tis`H$|51-q>m6O9&=edCEdCLl}oD!}& z&lOzHNou%q8o25_w{Sh*Si_am!BywEhwFL50Pnos-3V8m=injJ`J?9mGq~Cl!d2%v zg6sZ$4p&YLSDohset6#vS5697o#za$sXxbAn>aOHGx)p_pWy5AY#${FFR^Bny3bpGgmX9ibJ2v?ow2(J5`Ib1n0Ty>rk zxbAlraOI?M)p^d~y5CvCm6O9&=edCEerE+&P6=0?=L)X-of@v32Ch2KEnN3IYq)Yc zxavIjaNX|=aOI3})p-scI-Nhd-y0&B?djmE^W4Lg zGr-lJ5w1GV!Pa#C=(=SFS9?OZ>O4nq<;>w~PYhR`=LCLu{R3BfQn>0oXK>{#;c8C~ zSDohquACKo(C?3itIl%;*Y!pXZ&Zg3t~$>xTsdoasn5~DRp+^fD`$ZB{`sX5t~$@b z!>02`>vRS$pLn$+%QOh#s`DJdl{1IO{$4nStIl%**F0Rn)t(ftI?owgIZL?OlfzZ# zxqxfGR`89_SpSr8)p@Sq%BkVQahB7-Rp+^dD`ySwG=Jc#^W4LgGr+^E9d$77BV2W! zgNIiK|9y7wzd@j!8NBf4NFiKxo+G$&=J4zS>z^2|I?oAQ_ooZE#w&%Z&T|G=&JwQi z%HgW>T)>sHf@{1=xavGtaOKo+jaLI#o#z&=oHbnI)xlNgxrZxffNQ))xavFye>0sw zIxo-Q8m|zpI?oYYIdi(NuNba6&k0;P3%JHBg{#hU23O7!uJOv@s`FgHm9v6tyh?cW za{HWN1y@cD*LXE>)p>5=x^7v+HC`QDb)I{;at658*9cdg=im|3`J@3DO`1)Gq`e=aE(_ESDohquJhmuuJJ12s`FgIl~cntUJYDz zo?Ezb)^Lqi2Unfv9NT-U1$ zxW+4mtIl%=edRJIrbW^_0_>u=edU~XMk&c zjd0a@4o;ZPALY#8T3;btb)F-*a^`TYuNba6&k0;P3%J%-3Rj)y46d9dTHP!d2%vf-7eZ*LcNn z)p<_f%2~iQUMXC4o-?}Fd0xUbUO8NKo(s6zvw~~9O1SDgS8(Ojbbr3lz*XnDg&)5E zf@{1wxavIj@Wc0CaOI3})p-scGo3$&@4w*63E`^q9KjFYf5DX#!&T=wfgisAf-5J5 ztIl%>a2>}|xavG-aILQ;Tsb*h zb)E~j*4GNIoD!}&&lOzjtA;D5fve7Q3)lKu!soj+P% zGq`d>xavGdaILR7TsbjZb)FNr*4F~AoD{A)&lz0nYYA6Q4p*J$0uU~I zP7GI_=LD|xwSX%pg{#hU2G{yp!j+T5Rp+^YYkjTY$|>Qh^IXBTzG}E~8o25_w{Wem zHC#CzTy>s%xYpMISI!7mo#)_jRdD2w-hXL*&EU!j;i~f-!L`2TaOK2s)p<_fT3-ve zu6t9s>O5y~t*<3qIXPT)o(s6v*9xwj60SPW6O4nqt*<#;IWb&yo)fs%*8;Ab6yAG%<_xa&wS+4t zhpWzW0oVFk!Ie|ORp+^aYkk#ldTs^Q9M;HvZ7!nMBEaOHIH%Ih=taILQauAC9BI?urqrt?SZYX(OA*wt*-&DoDr@%&%qO?^GEAz23Jl9SDohwuJtvCD<_7l&T|6S z`dYx1lfqT!IfH9`E#b<^;i~goz_q?saOIS6)p@SqT3ISpKOo?E!S@34mJIY|ds zo#!5|oB^);!4a-H&%u+X^G7)|xUPFcxavGdaOKS5I={zo)p<_f%2~j5982M<^PItz zvxIBBa=7X|7jS*AWChoFm2lO0uHee4;To?7t~$>xTsdpF#;b#?&T|h}&H&eVjd0a@ z4o;fRALY#88m|zpI?oYYIdiziD~7Aia{@p7{tjH@mBLl$IfE-_3D6_8m{r`;HvZ7!<93@HC`iJb)JJKPv?)mCpCj>yh6C@ zJV$Wl%;6fZ7_K_c30ye~xW+4mtIl%>TsZ?=<2Axn=Q()Fbp9x32G@9naMgK^;L4f9HC{1Xb)FNr zau#rnR|;31=M1i#C0yf`!&T?Gfa`mIE4aq1gsaYT1y@cD*LXE>)p>5=%2~rTUL9O@ zo_n}*2Drv+gsaYT@YL!2QO*pm@e1Lp^BlpIGly%uVz}x&CvbfZe*s_n=lN5(>O5y~ zzDB0G={R_D2JhyOtE_V$No@6;4 zTy>s%xN-(~;_VsXs`DJ=)A^&%ozCE!->~+CaMgK^;L4f9Gu6R{tIl%**XJr1@Y+A8 zm%>%&IfE-_3E$TIfve7Q0oOcS!MFW$j3r!ko-4R=YIx#xgB!T&JhyOtZ(`h%vX@*2R&ZF zH~!bwT@6=$18*N-`MdDvywUPoc##!HfG_{vLeeFRlN3_`=6!fGdB5S68t7 zefW7FxAq6mn9k47d%w-#$`9eeZ7hESe!IKbdWqn_xVFvzIb8WMyt=jJZ^BQziM2n0 zf9)dsxeK`RQ+RSK%ip5=Jjvic|DokC;mXh9{Vgqj8-AZ>S^Eok=0A4@SAGf4?rQlv z@X?Q-6+FDI&8r%&{01J~#qxLIh0pUAzUkMEYq;_|cz-9$--GXXKlJb`XEuKZxbjDM zbqCAehj06JU~uwu{(q;m@twhyAHtQt0pIny-w}M_{Xd5*KZYxR6P|lc0zdk>KL6p$ zPvP07_0JZ3<7R&Rhri0tk4w1nbGY)i;S0|%;Gem|RS%BaE4cDYxbk=4ssCP>3jTq6 zTmRH>Mb=;L*(IKm6mK)5AMIzYlQbkMQDNKL6qIeeFCL zJaan##}mwFaOH>a=$@9p0pIrVjo@4UbLVj7$ME)8%io0eew~oOALqx_1zh*uYc&jwx2t|l|RC(rRDF_{rDOD z-E{sJe%zSBl^?>h$6Njed?P;Upr0f7Y}495hbupZM~}1oO?c-0pTNWSS^fg9{1o0l z*7CRD+kW4j!D~NnF5$}0;nj(jzYTBvIYR+o`F+g_uKW_7J;w5P;H{4TbU$v_aOF4f z=+TzH3m^Ra-oh6??rXU6J9vMBK0Np9wBT9O`M>4$ zWM**Xhw$u?mcIdC_&kr`r9bzW!<8Syqeoc&CVbQHk21LK@0M`o=kWFyc7IyHbsw~X zE2o6_KeL<)uKS%DuABz0oEEP8zBODq9X$FEYfle9yncWyXM`7{!ydHonCx$C0fghgt;mS$jk&k-@KRmy~m6OAjQ@{_;<8bAaaOG6+!}B#A36qb_Q2Y2rsT~ISE|Pc@}Wxr1195b{xpyOFs@Q;mXP3 z!J90nfOk6Yz?Df`Qx*D#W243t~P7B}oi>n><{~E5G4xYT;a(ej2KU&TJ zSI!6zUS~PMv!~-;`t`;PuAC6wzQ%GQc<%c(hbt$B7q7OQ1U@^-_GPwbW!T0?9Si_am!22&+P7B}i{#nD7)4_``SWXYm zHGkmB8R5~tSWfVq>HO*ZdV2;}P6%&5XE_mk=e{=XbGUM1c(%5j1io?9Q3va50as26 z4=%Kv4Bq;DUc!}=!>i9)P5~eNdUXX?P6uN({H*m)4OdPB?>}WZEj;(<%xk!E zI(YF(%jw~}nm=&mjPR(noZ#=L^QZRvkr`Y$A-w&#`##Ib;QxL3@L(P;;mXP3)diMQ!2iRad#~WiDdE+7EvJI(`F0IgP6N*x%W2`? z^!H_JxNU31m4X2_ybo?3a{Q~IT?KL_AKGb$>G^~mQ%ntu4nC8!Ie|OqjN2%f-n5JO$}F0 z1MknaoR;p#`88ZQ9lScra(Z~__u~UxIU_tf({h66P3KST*9kMYazc1iSxyAk_46FA zoEV;5Y&i*B?}-+0<)rZ7qn4Aw^*(3`S56KOK4LiqT-RJoNuKX00!~5@A{x)3CR|~kFudd+AFX8=n zEPn^C=c^T5&sS@>@*8;nZOh+<>-lO6*YnjiT=^Zm|CZ(N!S#H#hwJ(309XD9@4spJ z`*1y94T|YJZ=dAnS-A2;c>fK{-+=4+Y6REw)j3@GF}&Zi{7tx?uO@IkUtPeJpThgE zTmBYY&sQ_Jp06(9%Fp5bzghk^T+devxSp@B;L0!I{nspi2d?LvLQyxN=H(@lk*N48QpkZNF-`avFH?3Cn5WdLF)pE2o18pZ4d^ za6Jzn;K~`{*{A&Z^9!cquFrwY;K~W%{bwvEg6s1hbGUM1c;Yz;T%YS$z?GB2EAO8I zuJ)|p$|>R5zuJCP@V(pGx~SpGY2fV_EvJQl@O3tS)^O!?@ZblQ)5D+X@8t)$az=RZ zb;}7}I34%9A7kyA!Icxjt8Z9N1W)eh>m9C~7#@7rauWDA|J-sGaOI@%>|)Ew;F`}% zxN>rM|L>Mlz#rkCJ6*w*Q^Jd{T22MO*~@(Xz?IX$gTZoIxYorQuAC0uf6H=u_&-0> z+B3kFGs3g4Sx)ex>HIn7RX%^<$_e3FXE_o4ihkai!<7@mlh0XB0)LdB2N!VVr0{BO zIT<|pt?kzmuACemcuoc1IM$yZ!j;p&+mr14)xuZ)yk!knP6zLwVmUor_e}#_IU_uH zn&kv9o{sx>^to2Jazc3jbjyk0x<8%6l@r7JlPxEKr|+|VUci-;!rN`j$>6=ems!G< zlfwhgDd4(aUcr@9!u#i1dn&l@mut9k8hHO~%jxOYu=zZ|l{3PVGtUf;{F%L^vj0E$ z-yrDydodwgIUDdQwwxHg@6YQt;mS$i#jP!83qE_Tje7=H&Jv#8%5n;LbOnE22UkuB zPmZ>n8lL%kkOr=tU3hd$%jw{mKR?`qE2oDCx3HXj_;+t%$NAu;({WVJ3?5y>aw7O+ z{5&{^D<_6W8#+1gDoY_qCiETsa}Ux}N3C;a@t=`ZgL8hCUq%UQ!mfA87Bm9q!09%(rvJn`$g zeYkRh)28EFJ;HJ};IF-}^>YMQ&KzDHXE_P{S;t%dEa1vX;njUCX9-{b!g6xBa<<{s z!g5OZeST>j^iKw zp|vN3D`x{<+|zPm`2YBGtxdRc5_oYB%h`fo!`qX=m9vBw$68JSPj&qRS566U?`AnQ zJUGp+#~QeDcH!;aEvJLm{<(rZxN>@Un^?|1JifD?mxD8==DO@>Q@Z_$Rlf##O{Mm*pr+~MAV>vtU9sgWY1y@cD?;mbCEj;({ z@2}y?>EMCq4DiZ7r#-@zvk#9RX6*_8VLHB>J`XqG%8B5~mgQ{1cP_E&j)k7?&fyY0v{n~{qr-iqFWjTBB%D!P6h9uWjVX>E$` z2ydThIkR#)jyv8zAzV2d@akmCiQ$Fs*Ct#!3A}iQj_~4)8+Jh^nhX+r!oPBuwP#gE)mD6!l&J5l^*>WQI zmYEOxIat8Q?CtT&oVKW%v%GrlUkGGugRnzhPhTo5Gz?BohgU4CUCj3|D z+j%5`D`x@kA8R=o{LQuP*AlLr9NwO2IV<>Ceji=Jm9qn{9%DHTJof9EUAS^uc=2e< z*@JhwzJe=ffM=QI1h1Zs*Pb88W^m<%@Zld6tvF@8a*T7jWgI@Z?m>S;Bwj?;~=!a<<_~VL2r{ zn%jN-4qQ1EJb0z$?7}Pm-fjz5&Klmo!g6}}%I`M^xN=5#`*O>fy>>c|TmF5M5U!jJ zc=ZpK6T{cOUz>2{B=F)4%h`hO`gt&eD`yGMPPd!_e!SmLt>DTj;mK*1Q^U{h!r;iC z2Ckf4c=R&M>EJiHy5;P_mD9t6mF4WiALaWMyly&<%9+9Ymsm~&|Ky9TJ#)BnVtD&v z%UQsW@%>8S%GrWfFS48*zH#rP4*Gc;uABm1ywGxX;K7sq`UkF@8lJtta$5Mt^DJi# zS55~{o^Lq={JeWz^$rX9-tM4zE6BIV<=#e$R4BxN>&j)dwu6f&b@gZNGNm%4y-%2Q6n0zVP#D z4_D3r?>}rg!OnENTEB0a!IcxjtM^;Z9R5`A=NPV>O?dS_%SquMInMfd3$C0DUR_{0 z+wl88&gOFgSI!Dvz1MOo_&fYMp@u7`fk)?C&KmwjuQ%1fm9q!$Ys(qom%F9)&puo^ z!5c8XZ?l{Y`0Q<0J6P`#Tsd=ib)MxU@Hd`l?ODK;lfsL0EoTYu{k=vGSI#y(JI8WL z_|o5N?7)>%!IQHsXBR%6Z2i;1m9vHi@3fpA{(G0$dLQ7*8R6BNENAw{={VlxrZ%5L zxN$Db8kIVC*uoC@Cf^QmO92wv#<4_rAhJn)(&1IVHURlI2wJ*@;IT9LH+7avFHzIW0WA zjpeN2%IVS*G2oF3bc=L4rJj?69&EU!j;n^3hJrVqdr`hpm4p&YL zZ@*wU3H)f!S-_Q(!XwYg;JL4hC0scvJmCxrJOv78A0+&9_z zeGXSn43EBSISIV*`}YN0IVn8*xaDNwOK6Zdn9J{_MfSTbK{< z%zYmoxkqoUj>H|lXH@$aaJ4^&tNlB0wLhq)`8T_v_YeH?@3j35;mI}5IcQ%5znOn7 zXbx9S43Dm9IT`$Zm$Uv~!j+T5qhFkT(4GR`>pTcoP6-c2%c2-l@r2)ODrdX-}aFUhJIQ^KSFv78FN>-TXr zTsaLq_;1T;;lK6Iv9ICE>EQkEET@ORz^{J>xN=5#f7Npi)>m-WbpGt>^D}Vegzz@B zoCrP~Z|93STsbkkx{Bo_@VQ^FF5t>Z;l-6LCxd@p^9Qb+9Nu5vatiq9&%;-6<&^OL z4=ksG|H8kYSi_am!28QtP78m8Uq7$m%IV(&1IVHR}%H~f6|ANjtaOE`c=<1f!!oRKSUbu2Pc=9Kf)5CRNFu;{F!gXITKX*Fr zyIfgYuB%t)R!8{IbzR+@TOHv;*LC&Yxz!Oq zbX`{`=S}@?|84U#g@4WG{}TSIhuZeraQ$A$68^J$+V&Ov%0IB<&o2DgXW8~^c(Jd6~W)>+h=f%R}TM-Uk|L{8m}F=elKJL z*Lbz?-}w1-53cbV;ElIGIDfjo8m|!ke&2o$*LZEhcYXU5uJOv?ANB3G;To?My!GuX zxW=o2f5x{D-Z9B_3ikO!Ii%a|II@!X9a)6 zKiKiGf{&lJ?HhRJ+ppmouRZu4;tSMxVDes8s7vyo^Ip2MfdSt z!Y}jf3%JI&gzx+IHC*Gn3;!?QzJqIgdw6h$wSOP3@twVU+HZg0+edJXZw#OL_BmYR zTfpD{Ae$#UaE)&bKhw|4EnMTI_eSK9eAT>G89V%lMC=R>&m8^N!# z^DDUayN0KBK8I_+1^j+?eh1fnYj|eoPjKz`4F9LC`}hrBIqjhRhH&k73DM``yB|-yK~0ZQ$B(3)g;+aP9X5*M3L1_8Yuv+D-diz_s5cT>DMn+HVTiek-{4 z+rV%4RQK_CfNQ@;xXur7?RSK0zw_&+9kkyC{6Y47#&GR7f#-HUgKNJV_(SY`3DGuz+V38& z{dREew})%LXSnt|d-b$~_8Y>r-w3Y#uHf458m|53aP7B%Yri|V_FKcX-xjX@c5v-C zc+Iqf_8Y>#>>=~nP5)cMwciz7=To@$o5Qu=EnNHE!MFB&HgN5?g+Ip5AK}{X30~Uy z5w86P?X=s~c76fZewXl_oloG}Z%ViG8@Tqng;#d|0M~wx@Q>g9)|d7>z_s5IuKmt` zXWBvgUBI>97_R*$aP2pPYrh+~_FKZW-wLk%?%~?+0j~Y_aP4=1YrnJKo%Ydw=XBdw z1lN9Jxb|DXwcir{BK!EQ;o9#WuJavS`|aVwRqp-&4A*{Vzc=mhNc;LfgloSMd~4@d zaP4;ue~g{a;o5HjFYWveuKm{VtL=OX*M2+r&d#6U+V2_ubUVL%?X;WryMn*y-?)$8 z6t4Z|aGl@6wcj0F`)%ObZws$%{v%xbJ;9%6=SR5q8@z7Xp|D+aBRikNwci4M zXFI=xYri#oY3EzG_S?blX6H|E?e`3i?R@b1X*caRgx}N7r*Q2zhd= z1=oHX_*HiP0M~wx@YK%F|8Uwt`(40a{a*L+8^g8V1g`TLT>IU?_4RWJ*M2Mb^X%)% zJzV=ez-v3-!?oW5evO@by~K7?z(5nTIS!L{EtytVmrxb|DXUu)-gaP7B-AMAV!*M2+r z^>+RQ*M86N&dvvKs%JO-FSzu7XEW_LgulhkFX7tn3VyWnTe$YSgFp1e?)|fYYridA z=Z|ph_XO8|N4WMIyt%$qKpoy;^Dp4q?-JhI`2?>0rtll={06T5Zs8|8U%|EC2L53? ze}HShNBCgp2e|e-!f&+maX0Oz{U-3wz0bbBg=@bXxZa;jxb|DYwckBl`#r!T`})6! zYrg~h&USwGN7MV&e&_I|osZz!Zw$YionOPX-wYnx`2w!}mhgMp`5LbM?%^vte}-$n zvp=48_@=wN&%YsD`;Fjwe_p}0-!)wO&EeW_0l&iL-@&!t8lKqs7Owqv@GI^739kK~ z;cGh|{K>SN_8Y>lvhz#0_Pc_oc0Pq`zd8JVcD{jYzb*XHw{`nH!nNNMT<^~#T>A~) zGVP%KF5uel5}w)o30(V4;SaL&8@Tqnh39s@f@{AG{2_M!0M~wx@Qs}x;M(s9f0&)0 zzjfM8`(3~bJD_IrTq`aN9x9pHt1{XhHD>HTWIbND0e zd<55iWBAt2ui@Hn27ip5FW}m52`}w@4cC76@T={72iJak_|DFUZ=3efek1s|*?*sC z1=oJpaP2pTYrh3t*Wbal-x~gOo4B0FY}!HR7jW%&3D@_Z6S(%9 z!mqRUpAB65-NIWtU%|EC2L4(*e}HShNBF_c4{+^wgkNvx=Wm~O(|#B5&d$eh?KgqH z#m<*-?YDwoYd=5Q!?oW7T<3eZ_B+6}-`Sr}?^pYs!;dz91lN9J_&ef)wcizdwDT!k`_18>wewrJ_Pc}6 z?ESWZYrif0=5~IBYrny}rX4P~kKYAc`(46yK7nh$DO_JaZ{XVR7Jjn7pI^bX-v<6+ zJAZ&{zeo6B=LfjCx1A7S5r z?%~?+0M~wJ{q%md-#J|Sjo{jE4A*|waP2pPYrh3t`z_(xZw=Re_i*jEgKNJ%T>Cx4 zwcpvhr`@#Q5U%}3aP2pTYrh4&v%g=rgKNJvT<2T3_S?a=-xFN>J;Oh1&u8$L(+=8i z2%kOv_OqM*w}flIEBMXrd~ho z0)8huAH%iZ1RmM>46gld;CHt3C0zTh;7dE-!?oW5ewls#oxOK@zuNB{uKh-E?Kg&N zziYVmo58i;0?0wU2+HVNgej~W{yMk-KYq<8i zgKNJv{F}e**0Y=b*TS{m4zBYjxb}O7Yrnz!ryaE45Pmm%K9_LqcLk5_do{ig8R-k&#c?RN{;`3kQ6 zHgN6t0M~wx@U_i9z_s5IewCe{e_+}{`(40OJ0HWf-voX?JD6!` z^Lx1Vdw}P5e)hrX{c68+_;1>NBe?b(!*zZQ*M2j&_FKTU-xB^1o4&Y$7h@9aa;o5Hmf25sX!L{Etd~4@(xb|DXA7kfRxc1w@A7y_&I>EKy zGhF)(K0NK9{f2PucL~>iS8(k&g=@b#T>IU^wcj0F`)%ObZwuFck8thx1lN8?xb_?T z)wG-TyMSxIOStyCfos28_($L5zJ9LY+HV8b`2$@0J;Jr$0j~Xy@Y0^o`A6#6P5%on z{onul-ygDn-@SleZRcaS_M5||?R*K>ek*uo=l5{!_W*yMo$uk=?*Omu zeDv4#r84TH{l@S&-fe#A+#0U^W^nDdfNQ@cT>Guz+V38&{dREew})%LXSnt|8>St! z-w>|-MsV$S1=oJpaP2pTYrh3t``y8{-x{v{p5WT=8UBfTxsTuAqtg!BZwS}l!nNNWys`5QT>EX|*V_3bT>Cx2_jZ1SYrnzYOuJoY=NEA8cL{Ip zd;-^gQ}}D`dCx1k9NL?Yrg~h9d>?pR2iJakxb}O7YrnID+awci}B{T6WTcL&#g zYq<8?!nNNHuKfmoKkcCXhVY;J4)^(Y3DFcxfos1h{A}kpaP4;s|Ad`Cz_s5a{M}Ev z)$FGK4RGyugloU^^R$EZyMSxIF+xZ<_`>o-Dop0gVZwJ53&Y$4g?-@R~ z^UIGD+ZwciA;{ibm3cLUdcw{Y#Zf@{AGT>Bm1+V2Se4*U9Q{>fFjS+V2Xk{jTBKZw}Xf3%K^X zgKNJvT>EX|+HVKfeot`i_YBv5gK^qT`wijRZwl9bbNHj|>*p<8``y8HzJY7MEnNFO z!nNNMd}+_;2-kjt&rCbq&CW02+V2t`+xY~p{ig7H+W8G!``yACx4?`P+Of1Y;JenWU> z=a+EpcLjfto!`Q>-yOXBn)&Re|21&!w}orJN4WNTf@{AcT>B0FW!gdeUBI>9C0zSW z;M#8r*M2u}?RN{;ek-{4+rYKo16=z(!nNN4uKkX1?Kl41w43&uz#spEZoe5^``y5G zzJzPP6!?oW7Jh$hwhiktB{2_LJHhbYskE#E8qV_w7Z|r;o*M4L8!|ePTuKi~4 z!p;|P?YD$K($3d#?RO8~+W9kF`<;E>w8O2pZoeU1`;Fi_zk+MOYq<8C!?oW6{urBo z2iJaUcxmTbxc1w@ueS3ixb}O7@9cc=`O|LNZwP<7onO-J_hzr)m7P!F+HVejo}F*t z+HVX0jQxJXBV7AE!F7IwYrnzGrX9531zh`G!fTs9fos1h{2DvIfos28cw^@)xc1w? zueI|Bxb}O5@9q2m*T?S&zs}CjZ$9m&{Vw3GozLLf?*{(3x44hr60ZGLaGl@7wci6= z`|aV{?*MHTWIbNIo|M{w;ohF@>z*KqAOgLihmfNQ@c{4I9AhHJlj_|eXH zaP7B;zr)Ulx0v?Pek1tJ?(V*RUct5BHN3a4$8xy#Tfnv79bEgZ;l0h@!nNNHeuJGq z!L{Er{AA~YFP!$#ena?&?feq1{jT7HoloJ~Zw|lF&Trw`?+$*p^GCS$dxAgMzP~ZT zwcj9^cF=woaP4;q*M1YY_M5`B-wj;*-NLos3aq~+HVXW z?fe?9{bumb+W7*m{g&{V{XU`^uKn)eH@EX0T>I_eft^3YwcptnPrF@a=T~s;cMX4{ zeg7(lYrh3t=XY@Jw}xxKEnNHU;B%Y*1lNAg@Y~q=;Ie54?Kgync76%hepm3z?R*N? zeslQ3&Trw`?+$(^JKw;y-xeO(`4O)D246DmkpHv${JVf_ze~9Go4~c-6t4Yl;M(sN zuKiYU?YDtzzX!PXdxUGh16=zZ;o9%~OQ+qm-vwOzjp5pF0@r>sxc0k&YrlKA_IrT; zseQfF!?oW5uJf~7P48Fxox`=?2(JCc@H^Y{xrS@M8GLEy3%K@M!tZA1Yq<8ihsSol zgKNJ%{GN9H4A*{V^J%x0oe$yKZv?->&X@4{_iZnIf2V?H<_-L?cIR98`YPuge131| zJ$!$q^8vp7Zs#L>^_|XxTTeS2uW%m1&*l;QWWItwJ9O_?Is8@kcD{p;pL2hHY~lC4 zgFAnM->q~WeA#sV57_q!m+;rV$6Y^#Kj~i1xA5qHRl$t zIUBg@n($NM^O z;X2>JXLg+)UfXpB`0{@4`Xk-W2e+N}Ii&7<2tS!e@T2((uIC|#-*JBH*-ii3!NYgk za|PFR*0-C^xwZd)1OF2H^LPcHebQaOhM)5XUz+Ct|KoePIXk${5AcsY&|UuwKVSBM zOV^)&#dQ9sKHQxT;W{6|7eBwfbe$M}c)0TfzA;bXvtM!NbNJr8fbZUV^`+M>;j6bh zui)9!o^k1X17F)bEj)XyJKw?gk9KqR@P+vRpZ}aYKf)L0Q8?|te}p?9!+lSkA5-1mh0o^apu_S2sGtv#P`-xKb8!n5bPkFOkFKhJpq&z|DEgrA@4yn_3l z@bmw0^SAKb)7^DC`1zU6d${@!^wOOl;T!Yd4%42eUw7w2_~JRv6Zp#dr*QSp;p$(& z)xU(Re+5_n2Cn`sT>U%v(fapr^&jBsKf={NxP00(v(6!0{Uf;g$8hz};m1e0=cjV?P`gd^k@8Rk{!1vaFgsXpW$7xUX58>(`(XD?BSN{aA{wZAjOL%7e zE4cbMaP@ED>fgcDzlW>;09XGJuKvMSO?#ex**!lYT>T@s`p0nfPw3V^g{yxKSN{U8 z{tf*6OZNT=SN{&K{ykj%2e|r=aP<$qdfHR{L%8}!@Y?#vaP?2%>Yu{ZKc`#&0UG!`gicH_3z>8Kfu+0gsXqBnD$iv5U&0aT>WFX`X_YjpTgBYhpT@9SO1c3{VTZo zH*ocD;p#uY=hlCOtAFq{)1K-d!qq>5tA7kv{{*i7DO~+?_`&)YaP=?Y>R-XtzoA?I z7OwssT>X2v`UhV-?OFe#y??^hKZ2`&3|IdIuKp=p{d2hb7jX42;alrp!PUQktA7hu z|Bi0`d${@!aP=SI>K}dGwExoj$8hye;Od{k)jx-;e*stj60ZIgT>TsP%KEo(_3z;7 z-^0~^pj-bDuKvNDrajd^gsXo7KRnVs|0&)6oS4JazksWM30MCLuKo>N{ad*DckrFQ z{-@iYzXrJak8t%5{?)Xn|N0-U{t;aLW4QX~@U`_X;ClW`xcXOc^>5(n-@?_ugR6fJ zSN{RN(bxZQJ^#VKp7vD#5U&0a-Jbs#uKo#J{ZqL5m+;dsxaYrutA7Jm{}!(P9bEl; zxcU!p^&jEtAN-qX&$aar;p!j3)jx)-e?qtZDO~+?xcV1x^>5%C>)*oFzk{oP4_E&I zuKpuj{ex)QQ~g7@`bY4k^^f7|pTN~Wg{yx~xBdlO{Y$v|S8(<3;4|yr!_|L)tN#dB z|KR_d_Ei56uKp2R{bRWLC-AxTPvPpH!_~iltA9zi{uNyP8@T$naP=SHJNtRZ2v`5$ z>!&@{KZL7)1XuqUuKo#J{ZqL5=kT-r+@XN0e+gIr3aVS<(fU_#^>5(n-@?_uqg($TuKojD z{YSX^M|Ym~_dlP4tA7Gl{}itNIb8hUG!`ZsX(Z{h0S!FSfbr|au~xcZN9^$+ec z?diY%hpT@CSN|BU{yF?uxUWA8xcZlH^{?RS-@w(sg{yxDSN|Ta{sVkt{YSW-|KP6E zp6VaM)jy)!^B=?2KY^=%3RnLUo>~72uKo>N{ad*DcX0LZ;p#uY)qjMmf3TePTwDJT zuKp2R{bRWLCv@wd!qq>AtA7Dk{|0{6&!ge$-@(N{=qj+d#Zm3SN{mU zwEi(%{S&zQr*QSp>DIr1tA7bs{|c`D2l&eV{@Vb5r~N*$`M;a?`RQ+Qe}624Ut|Bi zpoITN`}<>ixL&u1>vd=Ue)_sEx9dmnFMPB6`$cQG=4{~0UvuxbE&P17^A5f=@8Rbs zy7L2kZ$85H^>%Q#>3!+z?GWytH~9KV?sa3ho}UE1Dc$*${ut*ud~067GxG+1ws~5* zdcu8AxbF$~J>kCR|9?SGxbF#Hswdp{g!`U!^@RJLaNiTY*YinNPxwa9C*1dh`<`&$ z^FLhB6YhJ$clP|paNiT|d(zbt?t8+0Pxwa9Cw#A-aNiT|d%}HBxbOK*7xaYtp74!& z!hKJ;?@3orxbF#9&l>(A`*#W*{ML`Y)$FGKo#Efqy3ZG3Jnir)yUq&!di#6eIb5G# zc5r=uY2o^Oaf0jf#p*v!=XsO<{S^FL?eo_Te!kA#Zwvp7{T}-hTz!JOPha=j?fOgj zEA8J?r*L&Rz?ZMwUh3b$4=;7z!?Tw-Kf#x;az4Pb>ztqA`)iz!@ZF1@&+ak3-~D@> z2lS)!5Waq!^9B5PgYyVJf1mRuynd_m7`}ar^8`MBzw;D+w(IBc%+43^<;&dnb4vK? zH=S4T^~;?%^#AF+g`dnj_|fL<;j@>x>kRPhMb1aM{k`Sjp3^<-1mh0o^;vxOrG#sq9bEHNaLrT0HBSTAJRN-ZK{rni-O=j z?>vGp-rzijZ~xGF0$tSX*ZW}w*YnoFHy^g1boGRv%}4lJ zJy#d>g!`Uw-xKb8!k6j^_dVghC*1dh`<`&$6Fyf@xPLz3dp)0U-}Bop=n3~d;l3x_ z_k_>Y6YhJ$eNVXW3HLqW>Un^l|JFU99eitkgr5d`p5Zg|6MS={J3qjew|nO7(*OR` zw155A?tB1W-`1UIW)^N>}!e=&52G=|}T=SIh z?Ngq3DO&|UKh=2yuXoN{`0mNhJNWYH&U^UEu0O!fHqQvx`QSfK_q(yz4dHs8Blzq| zZk`yvyxMsJUz?}!m3aw2Jk4FFg8QCu-xKb8!hKJ;`V4U26Rz{Y71N$;^@RJLaNiT| zd%}HBxbF#Ht0&y|g!`Uw-xKb8!qsPh`<`%}5AHSXxl~WM?+N!k;l3x__k^qG7Ow9D zH1Lnx_aBb%KYD`uKFs3Vr}w4nB=ASue{W&~*L4o?>>2LkrGw8Z=STSNS_CucVQmDb)7j}*IB?dPXu3wZk{Dv*IB_ePXgC<)^J@X zgKM4~UfVnyxURE>Yn~FW>+ImVP7T*Q4SZ(v?CG|b16=cTa9!s}x9gnXnrDFTzrvm$ zxbAC~T=4wBb)7j}*IB@IUlHBrS;BRl6ulk= zP6^-J$L|iV>ooAwtKI9i@Z~F=cksjSI`858S2-Wxi{EiR!q=~H9(?C?@0ndEgwI~# z&PVXm-gykKf6I9SU%cFT3fJeC96q!21$=Ja!1t}Yehc?K;l3x__k{bNaNqO0F6asO zJ>duSg!`Uw-xKb8!hKJ;?+IV2C*1dh`<`&$6YhJ$eb4W{peNk-gxBgx*YgSYJ>kA5 z-1mg5XARfaAst*l-#Nqeb;#<~ROjd=$@z22Sg;fp_XKEMy=BYa`k3GOq!uj9d8Cxq*K1mD~F7_R3e zfv^6+T|b2%UgtcApUeyR(Y&Ew@2=CreNVXW3HLqWz9(FLg73MYCtT+v_)b0Hz9-!G zg!`Uw-xKb8!ZY=R`<`&$6YhJ$eNVXh1nUcW!gW4^Z`2d+d%}HBxbF$~J>lwE!}WgE z!S(03GhFX8tM8q5&~vPc-{m}q@BiF+0pHm5OZd^wSMZ&A1J`ra!u9t9J9zeIZl0cQ zKUW>#8}s1%rk$7XbJq#s>K4J(ErzRG0#~;bu5LM8-3s`|x|MKstKjO^z}2m#Tb~ZD zZUg-AUe|4et6Ol@w6nT}aCM8|>K4P*ErF|B3SV2d9IkE!T-{2zx>a=R*1*-RgJ<^f z)x*_ofUDaGSGVB%r=8U;gsWQwSGO3xv~CGp-BP%^<#2T?=+>=-t6KwK+w<1K)vbf8 zTMt*a0j_Q%T-|~nn08jT5I(nV5nSD3xVj~9bxY~iEr+XH2|wN7K29sRx;1chYvJnF z!PTvYtJ?rqw-J7RyPGrkuhY)z7Q)pnf~#9hw{8hs-Ez8hE8yx@!qu&Ut6KwCw-&B$ z9bDadx^)}i>NdjFElAPXKA(nk>lVS)ErHLhTMAdV9IkE!T-{2zx>ay>YvAhE!uQs# zgR5H)SGNJK=WV20x8T0h&gvGyckgk}e+*Z*1g>r=T-|cGx)pGBE8*%^!FSfJfvZ~! zSGNwXZav+)4RCb}esJ1zVckNwxK5E@+F9K~xVlAfb&KIk>z2UPErqLF4p+B=Zrw__x;60a2i)`4 z!p|Ra-odjEI`83|zj8jnckg#T!Z#=9!TqP5SLPvnZ`X<78}k^ho(Wt%Q+Q_Ga`@i< z99qC@^9FuaPr7=-eNVXW3HLqWzUL2L&=c-^!q@5v_dVghC*1dh`<`(1tl|2;&>6lQ z-19U0k?H-OKjM52U;MT61zhJ7czw0|z1b;z|0~XOcxGPE?f3eYaQ(Z^3a)>5)4=ub z>{__~-AxBy**ra5`x@Z-cby|#dk?Z{XYDtH>wPAI>)&<8aQ(Z^9KN*v1zi10xcXOg z>)*iDzlE!R2Uq_duKojjVf{zA`Uek~_Ei56uKp3--mhY~`X_MpPvPoc!Vgb$&v^w` z{|2u9E#3NeaP{xu>Oa8Me}t=l@T1e7GwUD1)jxu(e+*augl_#)xccXC^)KM+-@w<_ zzlE!R2Uq`|Zv6+i`j2q+4<0z}ss15c{UiAP*WB|H!__~5tA7et|D1093%L51aP_a? z>fganPjK`1aP=SH>Oa!0fAFAbPxTMs>L0T5U`j>R;U%}PC zfvbNDSN{RNvHl}m{euTjd#Zm(xBd}a{bRWLCvf#o;p(5mm)5_4tA7bs{|c`D4c+>; zaP{xt>fgiFKlrg}&zbcP;p!j3)jy_N{{*i7DO~+?xcV1x^)KN&>tE6B_v$oo^>5+o z-_fmq4_E&IuKpuj{i7eB_TN3;-ap~$pTN~WrCa|TuKopF{Y$v|S8(-j;A`vO!u9-j zaP{xu>Oat}{|HzAAfNVB{}8VJ3EldqaP`mO>R-^Ue+gIr3aV?P`gicT_3z>8 zKfu+0gsXq>6Vsml>wmcVM{xCz;p(5m_oaLO3%Y$>SHji5qFet4uKq1t{X4k&_i*(e z;HO`9^N(=#4}NmmQ~g7@`bTto{$sfMCvf#o;p$()SJuCR>-lfs>fh3>e+O6p9VG5`UgKX?Rl{NAzb|tDdtzl5uQ1y}zLo>~7MuKojD{YSd> z5B}SR-XtzoA?I7OwssT>X2v`Un4g+H-6D zL%8}!aP^Pr)<1!(e+pOs9IpNaT>VS<%KBGu^>5(n-@?_uqg($TuKojD{YSX^N1JK? zx%H3X>Yu>XKc!p$9IpNaT)$VagzNVTR&e!i;0x>D!qvZntA7ty|AB7(N4WY251sZ@ z{}8VJ3A}!+d;dw{>Yu~azo1+H60ZIgT>Trk`nPcP@8C1*-^0~^fUExqSO4H=rak@F z|8Vt>;OZa4)jx+Xt$zVm{}QhL72WzbaP@ED>fgcDzlW>;06#t2K7Ya0Kls^cPxTMs z>L1bV`H$i1pTN~Wg{yxFKRm|GU%}PCfvbN@xBeYm{d>6j4{-G#;p!heY})f+{X@9= zM{xCz;p(5zt$zwv{~WIV1zi0b_}conaP{xt>fh6?{{UD25w8Bh&rN%(e+XCq2wq$N z7_R;aT>VqH`sZ}(U%=JBgsXoASN{%v($7!f>Oa8Mf23Rg;D4Z}{dZkMxcWzM^^f7| zpTM`)KZUD*4p;vIuKp$6`d4uEZ{X_R!qtC(ub*V^pYWx5@No1r58?X#U=duuA1sFJ z_k$&L`~6@kT)!VIhtF-E0JlB!794_ey|3go%MwKp2f6h_GEWH zg!`Uw-xKb8($y30d&1B9c?#V3g!`U!^@RJLaNiStus$Q)_k6^(=S)4}z9-!Gg!`U! z^@RJL@S}RdeNVXWNmoy}?+I7W6Fjr$bAapj#hu~$eQ_gPzb|g~^V9zNeQ^O?zb`I= zub<+c{}{eBPvCp=6t3ULmBaP>;tIHaA6E(2@8hcA`h8ptd~Wl!aQ!~64zAzF)x-7v zKftx$5w874zcB5;e46#7t0#Q(RChjw`<`&$6YhJ$eNVXW2|wHO*}{EKxbF$~J>kA5 z-1mIswCBkA5-1mg5=i(QqJ$Lqe zMsWQ;v?W}>4=sl8?Dw#(;QD=N30%JqZ4F;M-JXBAe$P(^pV|2hT-Pb!^&Q;rjoHF= zogG})so?s(IyGF^*~4|67Cyh+&2xb3I!Cy!)5EuRofBNwIm30Gk#4`oX7)?d=S0_; z!*!hyez4!~w1De634HY&+dKU9Eay3VXI{V;FLvik_|d$A@80UpH}KWlowsoPxub(` zY@QzOKThGt7rN_@@RfP+sA>P@Gu-(QzA{hX$7j3qDctvj`<`&$6YhJ$eNVXW3HLqW zYxRWto^an2?t5-8=n3~d;hB2EeNVXW3HLqWz9-!Gg!`Uw-xI!6Pq^<1_dVgh=c6y^ z3HLqW$J(AxxbF$~J>mNA2bFMrpQnQB=PV6eKWAy-z9)RHo^XAiVSwxV3?p3qgI}KZ z%S_5`I+|q30ME% zSEfDHKZL7)M7Pc{T>TTc`loR9FX87GxcMu%`ZsX(Z{h0S!PUQqtN#F3{}HbK!DFU9 zkJdkgtA7Mn{}`_R3EldqaP`mO>R-UszkzS9e+yUt4zB(^T>S^Q`j2q+4<0-1ss15c z{Ui9yzMhHU>Yu>XKZUD*PPhIAT>VS9`d4uE@8EOm-^0~^fUExqSO4H~)1K-d!qq>5 ztA7kv{{((`k$wJxtA7qx{{pW5CEfa0aP@EC>fgfEe}LD|xA#xD`Uk%{?Wz7DT>T@s z`p0nfPvGjG!qq>AZ>@g;SN{^O{uNyP8@lyx;p*SP)xU?Ue^5?)F0FqESN{mE{xMwr z6S(@PaP`mO>R-Uszl5Kxe+5_n2Cn`sT>U$`_3z>8Kfu+0gsXq__-X&cue;|zhO2)9 zSN{~Q{yALz3%L51aP_a?>fgX?>)*oFzk{oP4_E(zZv98N`Ug*#_Ei56uKo#pZT(ZY z`sZ-OaEOKX~G_r~mpNuKp2R{bRWL=kU|> z-1A@1?awtOT>UG!`ZsX(Z{h0S!PUQqtN#Gs>+65G`Uh7}d#Zm3SO17^&wmV8{{*i7 zDO~+a_{REIa6SJGT>V?P`gd^k@8Rk{z}0_*tAFro)1Eth{ZF@lXB5HJKZdJ+Lbv`Y zT>W#n`WJBZZ{RcQ-@?_ugR6fJSN{R7{v%xdgC|XUs(%Pq{|LUZ{xMw7e*#zk6t4a` z-TD`B^)KP-U%}PCgYTZ}-hXfgfEf1q3c5w8BhZrW4*L%8}!aP^Pj>Yu>XKZUD*4qsaT0UG!`Zsjz-@?_ugR6fJSO4HC)1G_#c}ECW{|K)BFfgZ6_H&;WuKpcd{d>6j4|MB4!qq=`+O((ohj8^z;Qr@RaP`mO>R-Uszl5uQ1y}zD zuKq1t{X6*4`uA}4AK>ag!qq=``n0G2`X8?T5nTOaxccXC{XDCHtA7bs{|c`D4P58Kfw3ae}t=l@Qi6s^$+3dAJOgkkKyW{z|}v6tA7bUSMKYd3aV?P z`gd^k@8Rk{z}0_*tAFs!Y0sVY59#{)AFlo}T>TTe^-tmIpTpI^fUAE4-&+3`uKpcd z{d>6j4{-G#;p!heYuZ!&L%8}!@QwA4;d=fPxcaAX_0Q?nzksWM30MCLuKpc-ZvA_> z`VVmRAK~gBROqR{XAW2Y2(JDyT>TUH+WMz(_0QqzU%=JBq+9N{ad*DpWv%| zx&N+Q@a$=~cRuA-m;QT{OZZQJi#xxC>-W?(aQ$~%j&Qy12-oW_o->_C|2>xkuK%9P z2Cg{|@cJ6}e%rzI_sWj&t(`x?b)5mO|L)rvuItR6JH0PmC!pJZXKfDGbrx`4CxYw0 zv$llmIxD!Ylfd=gM_a>noeZw)ooBBZ@Rs=@ZHPo zd4SK%d-&$1?)(5hnvZb(IV*VHbnp6eRtVSoOawnQ?sa3h-Zv8X($1&w({H%zzB3=-+t!^Q z;S2NN`P2J4yvCgm;ip$SkKh~g7_RdPd~N4bxb~jI7uUJhE#TSSc?sW|SMZJb0j@m` zaP4vaf@vT9cWPqzw{G3%kqmyvd))fc=bZ!Gzb@RrZasZn{daR>xaP^=um7Bz=K!C* z*>&sTi{Ep8f^UD<`2auJ^LBA~KnfCGD4}t6J;Rvp;hhwVS<#`;%q z^>5(n-@?_ugR6fJSN{R7{v%xdgO^Nu?)82GSN{mE{xMwr6S}@10$2YWuKopF{Tukq z`nPcP@8Ig+!_|L)tN#espT~ojPJ8Ol;~`xABlynx$8`ICR03E36t4a`UEdFZtA7bs z{|c`D9eii+=RI8g2e|r=aP8Y0r~=z7FC3-!;SiziWp3f7eXcziWp3f7c8@*gOT? z|GQ?m|98!F{kvxP&ic3T+WZ9HTeku3|6McO|GQ?m|98#5IqmQNT{GPOyJqV#E|8A6igPSLX>-&2dd~WAA@TGYH*Z0%5a9w8y z*L5nmzModZb)7w2*Jm1>_P7l}j(@t<*C%AUH_vHs%=MbKq?0JCi?0gK* zKIqOT@a6k#kMQ~Xo#*hAoiE^P^AbKcui*N)XyE$%)x!1Xkq&;g=ck9C%xAwf?fLna zyFb6L;p@M5_nW~N<|Taoad*CgpZ>vl1J~#M7Ov0x9bBLHdwBgZcl`mLot=;Hy?O9I zryW*yoe-|QMDVj+Cx)NQ6Zp|Or0|1z3HLqWz9-!Gg!`Uw-;=JMboGS$p8spwbD^Ga z-xKb8!hKJ;?+I7WEnGkMY2f;~&k?TkBV6aR{q%nIeV7ui@5Aijx_%GW^=Ge`USB_l zis1S=)Ea)*)_tF+f$O$ytcdahEqo~sln1+4Fhb1wG-uCw#4*aNiT|d%}HBxbF$~ zJ>kA5-1mh0o^an2?t8-b>iOFj^o0AK@TGdfeNVXW3HLqWz9-!Gg!`Uw-xKaX-r@e^ z9qxO=H|qK73wpwRPx#T^H)6Q&3HLqWz9-!Gg!`Uw-xKb8!hKJ;?+N!k;Y;;=%>_N- zz9(Hh;l3x__k{bNaNiT|d%}HBxbF$~J>kA5-1mf^?c+3PFX##PJ>heGyu*D@xbF$~ zJ>kA5-1mh0o^an2?t8+0Pq^<1->c{ET+kEld&1A3u&b1{Tb&q{O~W%_i$aOg`e%?@c`F#j&NP4hp#^8UiSpobG70iBj zx<_4S4nNubhVc1k-8>7puCs*eIx+np-E~%QU1tr~byB$YmBDqL4P4hL;M&&~uIudJ zx=sbxzG}Fxvxnku9Lv^ zK9j z>EH|V9zMU9yUqaLT89z7G7nxi?VMSM5Wckgir@=7AH&rxp$FC(zOd`(@V#{_;0JZ4 zThAK4{}1l_rL*6k-mg4|pTEoY3qQT!VV6EHl<=LMuizW=20k-y;hXPtuiL>-<~>}U z2fCdP{$P5)yL-Fqhw#m{?!F@U($2^5xp@L#UupY=ufE%P4qw{&06{u-{-uC>%Io~JagxRH%xmTf5>?V*L_8FyRR6& zxBE)q%m3=GpTe^TIM3l5yRQPS`zqllo2P;A?7mvK?yG|ze%Q^^!*_OH1AP4h?)(Tp zsPi9AJFo4&Lb&cLg70je1irTWO6kAlp2HlzwCfb`jonvC|9*F06@34_&KvmB?yH6C zzB>5K<{98~yRQ+xdzQPe;QDFL&HddxA$)E36~SkAUom`Z`%2(*yRQ_k`^w=*o2R7z zp!J07z8d)4uG7Moc3&NQca^(-4`11R4e;}Sapy<4?kjlXwDZZ{_agYt?kk38&vyGt z;9I*+3ZL73|f@lBDJ)Z-7^Apa`@Y6$_&${V6x=sMsbt1Z5C#FBxT|a>zALKlR@6B`g#=L+p z9_X%9!q;}bg8Szgezy5r`245c^*ea>lg@ki%H|p1TkAikA5-1mgf z)f4V}!hKJ;?+N!k;l3x__k{bNe=_a4P*1q;3HLqWz9-!Gg!`WGvwa*@aNiT|d%}HB zxbF$~J>kA5-1mITwCCL3A7Z%g3HLqWz9-!Gg!`WGvwa?^;Jzn(ZT&m=KDYNtxbAC! z>%K;~?kjlfw43fLgzLT{_|fhwhU>l(xb7>b+kF*q-B$_MeN}MXR|D65wQ${62jAO$ z^>q6>XMpRzf6xb7>0>%J2B((WsT>%MZh?yG?7zDl_6tAgvk z8u;GstEJm>*uiyQ1N``7?l~Ocy074fp7!}PgzLT{xb7>4>%J2B&h9IPYhO8B_f^6- zc3&0UzOHNFN4u{UuKViXy00Ft`x@XIyRQ+h`wISS+FAD%!LyBheFa}czi{c#eF=PK z=TrFUzq{+?@Qrx^KiSvkC46n?E4c2ffiLX*5uV-ZMVID3!*6@7`*YmcICnqqXyB*Pb!g$|pK;#7PfvE_Z+S{3%KSi;l3yQ^sDZ5Te#-z;KvtOPq^<1*PJ66C*PJEX_k?Ha3D=w*d}nj^aLqZu zHRlM|oWc7p=m}q_CtPzT@U?o<^?brLX93roCEWLfpMKe%Pq^mn;A{Ijq^IlaCAj7s z;hHme{{=nawappBHD>~!>+2=B_MXEvX93roCEWLfXX**poE`l5EZ4t>Yt8|#IY+qW z3{DsHgfG++t~nF<&gM+vnlp!M&H}DEOSta|KRw!>Pq^mn;A{1y>-mIh&JnITgAZKL z6JFb#FY0oEIa}IFLIl?t(@WBgu!WZfZ z*PID_XLF`-&6&eBX93roCEWLfpSJdV!Zl|HU#llw&nH}Sj&RKxeCUFn@Y?2#;hHmn z&(#y|d%`tm0oR-*-1mfM>Iv7J9sKwVdp_ZsbAW5k5w1Cd4`0v|zEDrN=1kx_n=^%L z&K#~e3%KSi;l3yQ^eB5i;hM99&-L{ZTyqX^%{js~XYf}S^n}+oXAIYz34E=dbbY-9 z*PI1hbCz)56P~FjTyu8t<8$r#g!`Uw%{js~XYi2=dcqg#3D=wne6F5w&6&eBX93ro zCEWLfpMJ@nPq^mn;5+q%Yt8|#IY+qW4F39pp77e{jNzIyfghjl?kk0B&K#~e3%KSi z;l3w4Q%|_&?BGXzKN+q$2e{@O;hHlTF6aqgs3%-=Ch)cGJ*Dg89j-YGxaKV3z9;Iv7J3HcJSlVT>l=f zIS07r9O0TXxbcFX@P&H9HD>}}t0!IWpK#4tz%^$H_dVgKU$EyBt~opSPCeniCtP!m zaLpO~-32}2wappBHD?0f+2_p^t~qnK<}BcvvxNJe@Jv17nzMuN?dPyPTyqX^%{js~ zXYltI^n@?e6RtTE_*~B?Tyy4d%~`-TX9@Q`;isRs=M%0uJNR19C*3}d2Ds)N;hHn} z*abb|wappBHD>}}==p^Eo^Z`sz%^$H_dVg6dcrkl2jA-XgloRi&JI4;^9k3S16*^CaLpO~!v#IzwappB zHD?0fJ=NV;3fG)DTyqw1%~`^IPk5%DaLw7l*EVNQ*T*|tbB=J$8T{`Hdcqg#3D=wn zeD`eY3HLqWnzMjw&Jyl>!cT=gpK#6D!H?<**PH`fbB=J$8GQVLp77e{jNzIyfzS1P z!Zl|O*PI1hbCz)56P~FjTyu8tmEJ$$nsb0_&JnITgHK%06TVPSxaLgYGn+GoYt9_5 zISaVvEaAQ<{Pb{pKH-|PgCFeg758w>IlwjN2-lp!C;#6)7w|s`-QTZ{;HSI4_|o6& zUc$faUheO8XYktoesuxgz0Y;n!u7f(T(7%>|Lhg+bz69*zt;`d>z?5Id%M49KEN0E zboYCP>wXuXn)cNF#&Esv3a-~p;CkIPT=!eRb-xu{uUo^v;2!pSnBmzsyZhb4b-yRL z?stUib!VTR_R;GGaJ}vvuKSJQy5AJ8*UjMf|7v%?IedE`cfT9B?ze`o?YU~;$0xbx zc@N*4xA6Mk7MDJb4sgxc!8PX*u0A7t{bDyyFi!hx&N*CjhH%ZffM0!odw+l*zQ^7l z;5xs8*B^DipC^IO{>FI@*Zdo}<}cuye+$<oeIE2YM{v!#gloj%2mJ;U|7i_iYQJI8Rn?h5{?-*@+$z)ufyue*lpb+>TcZw1%u*6?4<-1FSP7eD4+ zcMsR=p5S`j5w6#r{qwZXli%-NH-Kk9?p}8e*Xyp}dfgPR*UjJ${u=xEh1a=z-3?r? zTf_CbEnKgAfOkLZUblmve!{)(5w6#r{mZnQUN?m6br*2GKSyxAKQH0>Jd(n1NG z>!xtMZU)!;a}L-0^9HWht>Ajy7OvMl!1eyz!S()pgzI%jxL!B>ylGFp?gFm&=LoL% z=OtXPo5JG-`>mJ?-H*2&EUG<0>wa6f?ze~Qbx-i`y3XD2 z0AB>|e$Q}ye_-|n)1Ld={@A7Gb`G!a;5>rQ?dLd4_~!BM>y{Y4ew@3`3aI_enf-o@0j@dEaLqZwHRtRW(>-PnanC~l zKi%0q4|BMBuHa|uxrW!~DSUC?pStw?WN^)s!!^$au5J~4_agUP?ctiIg=?Mz{KxNR zf3AnG?&A6!;p#K{!fEG|b(q67PYBmM3%KTq;F@O%SDzHFJ{!2^Dd3uC3xDA^xaX&Y z*LQV&c5wAMz>n7F2-iG4T=SgZnrDD(o-=Z+?WYY%e{$-n;9c;F@QEYyLA_&-3hy z@jTc(0bKLX;hKL5*ZeVD^RM8VKY?rhHC)g07M|(-7Or_JxaO(hnx}zlo;_U8Z4aN@ zb9;tso)NBjW|vL(@}*1rdJlg1q&qi<>--YFd60X4*6@Sc&a;}!FBx{u6Z_a zJ#Ra>=GntFPYc&P2e{_x;F{+M*Yh*`l4<9qJwJ1}<_Y1NX93qd5nS^u;d*{j__}uQ zdmFgsDd3uC3m>ksulL}qPrLiy!F7HQKR?ht4@bD>>EW8^1lRQkxaK*-_594gbhov-2gzTye4@1HN` z)8|Cr|IFa}K7S3@_i0aX{XAlE>*@9N{p1X;pPSThec$^8*UxtrUpBqIzCWMA^>e5b zeE&xGzA?a$=4bfMe1vb!XJ0;@XLr53egNOt`S}GN!ZSO+xWFU$!p<+@N1G>x*XAqu z!LF0QXXb18+B}8t?fMyfW#{t?d;?$F`QifK!q4`)CH!Ds!xw+-_SL|bZ+E_jul~q+ z3*Y{k^8@^B*YDuRqdR|upWp1fhtJ;X{6v3~^8tSN6X$1m_BQ7ueEFx&XSbO?&-#0S zDO`Uaau3(v3(amjy^g*=+`{#J^7-wi=k@b~EnL4(cz|zSs9>EuOodmx8Eq6YJ*DrOR!x!cS{9sw?xc;742wxmrhs6aR!85zBC0u_WEP?CKBWt++Jd(m^uXFQc7x)IQKX+{5kFVV4 z&zCeuTKu}^$)ne7u3V`_0U9H5w7dZ zZa;l~p8pT-IiJJzz7fK8odx_6w{Y_;;kr%?*L7C#@A|mwlfwV;tDI->7ufS(z;%8L z-#x%xr-JKz4NvUvk+$%gJ;-%C!2Rbt_&x0Bp2;1i{WpJMpO4^c^Bi8A7x2xy+;vL$ z!MuiR&fxOtJgbwtP6$7}-+2UI-QYZi&)@4jf!B6Eg)hx>_}aXL&uq>Lt~ndH=4|1b zvx95S99A)n}cD^zV7{rSBU=@WVZv$MDs^cb>yFe*xG0C0z4YaLwPqmoIa# z+rk$%e+S>&{5}2Ox$6XrX&=oW!Zm*c*ZeVD^C$4F^-tk5n?HxwHh%$M*!&G#^S5x# z-@!G157+zyeED40ZG@lhV?DoS+H+^~hxBiB=M%W*PvM$Bhim=z7~D#<2QtB{s_Le`D40$yeII*-?)$W6uw!y4kcXkS8&bW zz}3HnYyJ*?Zrtnk@Y?zh@Qw8!;itR0>qK8S?Wy@=xaLpbnm>hW{v5uy`3v~g<}cxy z&0oRSHh%}#{5@Rr4{*&t!Zm+zr)i&!JwG8lv-uaLr%BHGc)y z{0)3*^SAJo&EL^&{vN)x`GbEo?W6faxaN=Gnm>kX{sex0w(FL{7dC$mU)uZyy#5Av zod&M?Te#-$;F`aOYyJVgxA{l-PG4{QYxK1DpO9|zCv^MzCxvVN9Ip8bxaKe68~gaJ z{tsPu9`!t1mixal8Bw8tNTXoL-2=M$6p+9S8xd1sft4!*=s%LdE9GV-{t$ycE2Aluj|NhCT;IN6MW+R zH}IMF-@-RHv;GIT`XAxSAKfJENBLv8@+a`Q=TG6Mds?0hKK1-L{QS+fzJe=%4OjjK zuKX=r`8)X9@1Gui@caXO;`vAT%JU~l*r)QRaOKb7%AdoPzkts@e+l1t{tAA+jrCl^ zkKbh8!Ii&SH(M`jC&b6Hz!#AEkfuB5o3SW5s0~rDyWBB|7woe9E{v59S1zh<{xbj!<$$#7D z;TpbOd7tpz!n}pg?_)l|m4AdQe{{33ALWnX%AdgZ&#`k;_}cSl@U7?1;q&jceJZ%} z*Kp-;;L6{^mA`|pJ%10MKh*n#pYLEk!uOs(`IfLx0dxGr~eQVf{^2c!HPvFX*!j(UR?>v7FKR(#|gfIO5 zDdDHb+xiBs{4HGhJGk=qaOEH1E6+c|_ntqRhkedHe+-{_{tT}CIb8V*xbl~9<*(p7 zfB&lC>j!zC@a^r*Tlney<^x>$N4WAw-xl_x{4rel6Zp#Wr|_lc&)^%+pTigLv-}lY z`D?iHH*n=|;mY5^XP&=@@BQ<`0H6EkhY^0>TmIx0VV}yM!j(URD}N4G{sMj~?c5T+ z_52ll=J{**@;$as2Uq?cuKWXB`A4|&N8cXyvw5nW8^f0m^giJezkgErF0u6mT=`45 z@>g)>ui?tyz?YuCh0i^I2S4leAHKbb<&SO|_M`kUT=^5Y@~3d+&*0~0+qpS>>7U;U z_{KlKmGIqDY@Y_M{4HGhJGk=qaOEH1d(S_@=bk^hRoLg+^T+U+=g;8EpTm{EfGd9q zSN;mV_WU*c{1ERGe)RXR7QTD3tsmgZKf;wi`i`(4<&WXYpTOsyKZPGXe+EBz{v1B@ z{1sgJYq;_^aOH2|%HP3f{`sMYZy)S^!e^d;gs&cF>yyjEK9xU(D}M%8{v59S1^o0h zJGX?dJ%0tCdj1-|d#vr#!Ii&SHQ5yDh{wX^*hOhMf5B#X_f8Y~;{Vd?h zU&58Yf-8RwSN;aR_xvq<;rToG!Sna<^^L8E=+i z7x2C3FX5+ewEPWR`CGX1cW~wJ;mSY2=bnFrPdtBgo3PKF=a1n_&!54SKZh%S0ayMK zuKX4J{A1Qz4L{w(`-E>je+xf+gRLLn%0I%DKe}z$kMhTGS8(O8;mY5@=bpcXuRMPTUwZx?e*QYkAKgCeNBLv8@+WZRPvOd+!OyR^b94B@ z^A~i_U&2?Ozkw@%3s?RQuKYb*`3Lyk^N;Yke*O0jVV@^|{fXhnne~vtl|P3oe*sti z60ZCe{QOQkw}#KW{{}wy{#*FM^AB+4AK}U$Ey8}3KZYxR0^fW76h86%8GPpXbNK#- z)npUR)Yl|O?ke-2mv0zUWr zCH&y|EBM6o*YNEP?0P%6^7nA%AK=PA!j(U|W7yC6b#`tH-+BH7e!jJ>PvH~KU%-{W zge!jqSN-l5&((`9<<aS90gDPvuYH%AdiNKZh%S0iS#R z628hTPX%9k{u(~@{2g7N|KZ9%z?FZ5D}QvCu%Gi!TFw~0((6C`sMmk^=6beI0ayPe zT=^@w^4Dr{^)LDKgu7&l|O;+J%0*cc>av;`E&UGtE`6# zuKYDz`5UiK*4`YUXGbkDFK<&WXYpTLzrg)4ssUwi%>zVQ47{O}!? zvxJ|nW8T1(zlAG*2Uq?cuKWXh?)gXf?t8q?dxd?jJ%0>edj1Tq{5f3t3%K%^aOJPy z=eJqT8ou-Aw}GGi{%PTdYui2pT=_@1@<;a$`%(TFuKWpn@A*^s#PetHo#)TtbI)JF zmA{57e*;(k7OwmqeC_#r_{v{@2KdtRkMP~Ktp8*g_Nn|ST=_G&^5<~nFW_^}U&0Um z{8sRZ=da;Y&)?DY`5&(Q16=t>xbjEe8}@VFS#L3X=J^x&-k;wTzM0xS1zi1?aOJPy z%3s5kzk%;Pe+%FE>rV$?dHx=LzNY1m?i2Q-{4rel6S(rHaOKb7YybW#hcEQ~5B#9d z|L~RPZ{W(`!j->+D}N7H{sBJs{3Cp)?|;58>~rn;WBBnJ)_(?9{v59S1zh<{xbj!< z^N-rOHGHD)f8aCE-@+H3e}F6h2v`2-zF|MgAH$VDf$u$k3Sa5_ANWz9|Ka;Dw;n3E z^4D+uRVVcKlslt1AL>;|L~dTPrg6wQ~6W4@@H`6&*92nz~`R7gwOQ- z4}9+VYxwrdtp5(K{5@Rx2e|T&aOIEg7xr_0t(_agXZrpJzW4h-g-<+x0ayMKuKX2T z`D?iHH}JjZZ{Zt#{{vrn{vN*mQtKi5fv_LtkKxLnz?DCRD}M%Gd;T1L^5?gJPd$GL zKV9AOH*n=|;mY5^mA{88{{WwR{t>>=_dj{q=fUs)7{2uU8C>~uxbhcp zvEFLz$ofwn5caA3DO~w8xbo+4AF?^x#f9Re+g>Syt_9@`%zl1A)1y}wW zuKW#r@A+H!PT&8)&-(mNznbNb9u)SY{4rel6S(rHaOKb7YtNsN5B7D_`>rKaOEH2${#%>>__=yxbi3Pz2{Hi2Y-Gu_{Q_+@cmV+hYGIzHC*`{ zxbnAfsmo_~PPJ^u)wdH&>~VV}yM!j(URD}N4G{sKPt{3U$j&u;}k`TbwR zw^z3QJGk=qaOEH1%0I%DKU#(ToL^<<#_*FrzX^Qn`BV7B^A~XCFX75x!Ii&;D}Mvu zd;S)_@cbR!^Y`%em8^&8VPQYYAH$VDfh&IsSN;sX_WU_~qVIp;JAM9#pT5ZQH*n=| z;mY5^mA{88{{WwR{t>?NpTD9X4EtPq{+RChGr02SaOE%H%3s2jzk;7%X}#6(ga7=} zz$c!+g&!ui&j45c5w85vxbjDj2>Us|!tUFc{* zD}N1F{szAH{4MV^`D3{9CvfFY;mV)E*PcIz?>&D3-+BHL zzQ4NVZ{W(`!j->+D}N7H{sBJs{3Cqp`J+dLeQrH}4Bvf;<CpTm{EfGd9qSN;lq ze!0K?!`Gg_fp0v23*SbTe}F6h2v`27KtKBZpK#?*;Cs)X!k3;ugReb*4&QvS<*(q% zU&EEZfvf)(uKXQ*?fHB7Lf`+u5BmHMUti7gCyx&MRQ?pM{25&NbGY&s@VVzN;XD8N zrGl?Le+^$<)$(_6=da^FHQ_tVS5C38LqjlJi^2c!HPvFX*!j(URul@HgZD8~DWYxA6JDTK)m9{3BfXqbG;`D1QuB{scbv{3(3r`7`+WR+ck| z&;G@{f-8RwSN;aB{4HGhJNUV>b9?y4^AGTo=O5wIf3|&+r-Xefe+pOr46gh+T=@(5 z-t(96wO;?>6TSY^KX3UvxbpXKB54 zU%>aCzl5*<-tsqaxbjC&5BpL67_R&YeDC>F_|jj0GWdD$ zzyAlm_#4Y#!Ii&;D}Mu5{uZwM9enN2Zx26s{{wvE{g3p|S^lI9`&9lEuKXEX`E$7P z7x1~~FX21SU%}U&zlIrSbkASHw|`;#G;rl_;mY5^mA{88{{Y{6{t-U+*PrN_VV@^|{fXh5&szQruKYP% z`3t!6mvH5;;ODp4xix&|{WtKr_us+~e{TB>aOEH2${#%|>__=yxbi3Pz2{Hi6VIQ) zXP!TYPfnJrW3q{E6j{o*VX~{4rel6S(rHaOKb7 zYkz)o`20cMCwzT-^Af)NBl8BX{4HGhJGk=qaOEH1bI(7*r=CCBgnh0&e+)nWq28m{~eT=`qL@^|p_3+&t;zW4kCeD3*2`096TpXB*rpXxt_ zD}M%8{v59S1$^)MOZe9FSMZtVui^XOw)`Dj`FptX4{+rl;mRNVNZ8N$&30}KUq8(I zgirl_A%!n~)7BSo~rh+WB9DK z{25&NbGY&saOE%I%3s0HZ?bc1_*Ad|@ReTw;iug88Q{u4!j(UI8T!%h|AZ@l0^fW7 z6n=iF_X%I>^`GwfE4cF4aOH2{>c536e+OUt{nNvbo_~NZJpTwk{D56=^761xq=p1*@nJ%3O4{Lw4Jew06kD}Mr4{uHkK8GP-} zZw}u-#QUV*!MucTzTdooD}M`D{tmAEJzV(*_}uf4@U7>MUKRGa^ZYUVd|%6-!IeLU zD}Mo3{t~YI6@2aYPfhpy4SehQTlmWJ4{+rl;mRLv!+w-MhAV#ppL_lkzV!SVeB=3Z z`0@L!{|c`BHC*`{xbnAfiH}9%JbLo{e7&54zBz?T=@sM@{e%kk6sh@bAF?p8`JM^p1_y>`7MP{A8YFi zx_^II!j->*D}N1F{szAH{4MT$5{U8wP8Q%KZYxR0$2VNuKXE%?e|X( z-+TT7KG)}e`1#S6zkw@%3s?RQuKYb*`3Lyi^N;YY=Z}6g>~p5i|L~RP&)~|R!EK7t-@_-KKdQrils|?me*#zj6t4Uk{QMlt znZu8szknY+e+ged!uDz4%HP73zk@4(4_E#HzV-Wmgzr6n^oFp{z2}eNr-xhq46gh+ zT=@&Q@|SSsui(4V&aL6=2YR3IspoIulb^Ho16=t>xbjCo9`>XBF}T)!WB6IG|L~>1 z|EBPn=P%&OU&58Yf-8RwSN;aRdz$su!ngkV)4_NC{Pysfzy3sT4*OC57_R&YT=`SD z@@MdwKfgKr=%3#T_})LimGJ4$SPu=|fBtIW%HP42zlSUT0AK3$AHMhe(Obekcl!OG z@b$Yae+F0oIb8V*xbl~9<*(o~&tJp0p1+}c{uaLbAA9{7;L1P3l|OoG*pKqZaOF?n zYkz)Ix<3EIH~Rb!->t3x3axYEdksIjAK=%1`1I1>Ta~;$yspDnSPvz=_+*Rl0E z{Cr*W0)B8W>0f2*8@iv{!j-3kA3aYGU-~`+T=_@%+}B4x5%x22kKqf?pTX5<4p;sH zt~@3D=)G0&y?YIx#@1&CSDqfOJOf;Pj&SuE{bbmW^2hM0_m;rVKCcvh_)5Qj;FIf_ zm++~31z&!ht*_ySuQhMrr(2kJaGl%3b?yM4`?({0@8?GEKyTk>=O%ESo5FQ&M)z}b z_|DHQ;Hz8PxfNXJ)^MHMz|S+=r-g6*+zx(9ZT$e(xg%WXM(+%JJNmgXeBdeC6j3bU!!xsjxSl8^d*O0$=;N zDSYYYX7JN@*!320om;|nZUtZZxix&@=Qi+_pWDH8ZV%VF1AOl1j&wgaYQjEGx3cR^ z;5s*j>)ed)=jQO4pIg9Jer^TVxiwtpHt_QeEq@E2`netabW2-5z;*5j*SXQV!rqR4 zZVaFJxe0vr?RIVk*SR@d=N9n2pIgGuUt{}M@Rh$lH*lTX!gX#3-}<>d{N(2j@Rj!* z{dCxy&W+(ZH-WGH+!TKFb2IqK-xmtF&Mo0Ow}LPI+!}uHa~t?+ZvA&~o!i58?f{?r zxg&h<=SDvh_PO%+{RFOaQ@GB}=zeYv-}$)(eC5|$!F6s8*SQV+d;{yPg>U`b4u10I zXn^b75w3HicZaNfuT!gX#A*SQ6J@8_2AwVzwTPYXM@f$Q8Bu5&y1 z*3a$XD?fLj`?=B2hP~3NxIeg~l7Vy<=t>+4^b8EQHZQy5r zziZ)BKevOgZg1xfaGg8Cb#C;Yu(zY18^b4lZUR5~xeNI2)7QWBeL@C5yx-1S!Z*G? zhwt8N>sRoVuP@*m|8M=z=u(Qwq`uko(*Li=`WsyRT949|-qRo)WG+C-~vd?EV?xs}I}0XZX(7kMKon>nFbu=GplA2tM=w*8gNbCDyB- zBV7F?9}Le`KO4CE>EY@}*TFosU!Pog&T!?)KJ>rm*};`(ge#BcpmTNqv_2oX@=Sj* zJXd)NxcWK3l_&nCa3AHV;G4(T>tPK)Jj%R*FCJ&!!ncKa2cNn3@S~qQz!wj|w4&Af%Lo?_m?x4usg zKl!->{P;xMXM``GU>+U9>s`CY@Rj=le)%<~m*!r;FXjTjm^;yDC&oZyz8}}N1ex|K&;0N~>zI%qP@8Dba9=>sp zJ`rBm-t))svwH$p{uHkK8C>~uxbhcp!F2Dp6C6*ch5EN;cNE+zI%?X zAK_c~=vTr%H|{Zf?|BmV(mjLEUts6va9vjc*L9U}T~`Iyb=7cPR|D5|web0mc+c?l z^UVkN*4K}4U03w0VV}CL7_RF|;JU69uItL+x~?34^!x>U>b`-0(X*zPUJo1iv!8A6 zJ4g8Y{>avk@LzkS`Rv!i9`@g1?}Hiq>Tk3C*YGR3*YJP8pY4BuKcO%m;6Ly?w*U0k z!#pp&xvfv(Upuv&JGk;kUAWKmHQP(Q#qiau%oF(XmF6jY`yTTQe$sOU-~W`YFW_fi zU&1FZwDk>q@oMuHuKXQb`FptX4{+rl;mRL*9-Jd!94YA$l8~A10sXf>5i{~2tp}(>9BmDip zVLto+!kqu`ALbjlo|gvxtgp75lTU^F=z5bY@FiS5lyLR1gR6%Qt{%>CiA)PD~@|C;##Ke&(Z*~e^s^jl$`-6zar`iIOD`1T{_DSYqiGx)5t^#xql zRl;>$6nh<#_X@uLeOq6{kH2f)z^CpleD&M5zJpJX<~@Ar z>j(JSeeyfu_3C*^;CddHa6P{z{NuNnUV6TEaP`^2fAzgK$1_}WiGMfDsn?|iT=Om9 ze|LYI?-suOtexA!Kk^HffA)Lfxq6+c;M+g8{%iR3v*rza@fYSTeEAvk4u10ed-&!L zZT$d0xsULzd-VI^b?w||aP^tNHLo>X_d^ZO|8;ulewh40c&_>^;IqH7>nh>X!MuX6 z|JuBU@BY%ffzLl@-oj_TzJsqkPY<8_`T@RhpZsBXz3MZ8>$zCM_4&Vq>v`P4^|`%+ zU;diurT%CCf0#%8SMcROd7tq4KYE|=<>$Rm_|d(C&qiC{!;fe40e<>t^O5fBqdvT@ zv-=FL{xi7xU&GaZ4OjmMxcVR9H@V~VQvZuT3UjLe2EO}myWSSQ`XBQSzWIWA4?p=n z1AKC&S6|9A!WX_i`r|O?WMb=M_|n%W@Rj=lu09L6`rN|*@sa-e4A<-P3I4wO*!t*C z!u$_=hxI>)>weh4HJ1T?{&MdPzPN^Y^rzvuhiiIo@Kt1R-V z;insWpYX#C%`^Dzu8}}Vt-`jL>^?Ziwb6Wg=!hSTz1zdA1 z;QD;Eh3k22;di~UJzuj^c&_HPf$O>&xUTC6*L96>UDxc-!*g|A8C=)3hU>a&xUOsR znQ(tyR{@{i%$i>&oCqzup{vN-R$SKi(3hg`ER?{rOz`p{Of%E0e<(F+CBsPTYUZW zufsgA^4~v`!u9L6JGkzLXbAUN-QDID!}s^{`NB8uDSUfRTc5#q_chPycQY^Gv!!_n z-~0LsesJHxldE6rQvVHnGWqIDet^H>B{tsg?z|Wq)g|D7s z>re2f-{e}C<`Vtiu(#Vi+*gjkMeePji!++#@ z<~#VUbicvhxv_Iwc=dYo1N=8{X8U*W+dSO-2>-G>n4jQ}_g~K%;J5YHlQaBV?qmCm z@H=|{(cgq~x#b_&`YBxf$8hyOgRB2JJpP33pTgDu0*q^WI6?hE4j?XcHzwKMB=Q;e&em|#I;0yTO_4)(9 z!Jpaw8~By(?(>Cz>s9Rat%K`z>j-=FvZd`8TgMkKt!u zpTIY-vh^u^>*r?h-HUB~4&S;L^jF&Y627aqq$7J^9D*x~A{4^(lPu6XqHG;GWapZtDy9^sVM4 z{QMU43Vw30;YarlzWQm~r-#qpV?Mx_?=~OddtV>@Q`pbm_mAOo_XNIGpYWA?24B19 z@Wanp&H}#i^&7bE=M!At<3*njuj{sV^7jS!Egol{!+-nL{yGnT(+^(De!hTT{JaU* z&!;2&pZ#;f?4QG&`nf)XFa6h@*YMjvz;Yho>S2JZhv~nB=c!+Y@WjRzE1`}`93-P`17_;0blt( zC4A%SEBM;i*YNZEZT|+o^L|?R+OMmFpWbWx^zenBJHThYeuN)BYWqb07WTjMePa08 zJ%jH*Wc%ds`6tW^xbBA%e)2pOe4{?$x*r<2?uQnx`=NvDe(2%49|pMYhY_y(AsWLz zbw9*#-46*|_d^QT{gA*Zw=We%-BuUv02FXZTz1daX;Z=kb4pIX`_*^95Y5+XY;&&s(@&pIf+I zZ%=T&{zv~A=F#i+96o!$^_jyTq1R{l>c4E?BmCt5-NR@9W9#+5*Plz$xsmTD*SR`J zuDMiLuet2unoAGYTqge=_M^EZaLr{2*IY`t=CXrpE*)HRQBS_i)`0JzV!gHu(wrp6}BCJDHq*+us-9)1$vH zzz@G-Uc&dEGOyq>Uth!L?hSn5-onqHwEa8y{CCWI_|o?o;3wZ_gztQx=!?RBroK-M zU-~`?e9~E-6u$p8^9;Ul&*5jiFTwgE=>;D<9*Z=rRVLz|e zpQnTCb*6ypx!c0^+_i8$cPF@>yXeYc9zAz+xSqQluIFn5*K^ds^&CZ43D4d6e^22v z|L>T7HT%EU|6Z?4Iyb|5ovU-SUOjhMub$6v^&DR{%&(poaP?fk)$Er!# z8vOJ*f1QDE|IJ@#;IqFr&*7`jm>2NfADfr(#plf{_{_bAZ~xiWH}J*DyoJyI$-IMa zJWmf_{2yCCz_-4Bgirp&)<<6w_I&)bc?{nU<_UZ~ny2uEpPSMD-PY&uwa=@7&(uHs z=-$8&KHnC8cJJW2A9}d%hXJnpVT2z%PjvOL&%JvLU;m5u3D^CT!Y95ygX{ju;WNK~ z3iwKW!gc>t@U^e6;kthsxbB}8zWh_W-VVO;`>=;E{M>==_s0z%M>0d|8<1;&TFA=N9n)x#zVmeL~&B^|`l&zukY%I>9gdl)bJ- zUmoVU!MED$>Kv~3(;WUKzW)Y(+0WZP4gAMnZRZ~0`7O;y_&eTi`^>Hp=G6O623J38 zxZaOy__gP@{{jAJ|9#*CT<>3tYleAV>p2U!=D3AxE-hShIl*VW&j8nbJH2+8NB3%Ohvx^MSz-M2kl_wD35VIIvffvcY-{MP;)mGIy3-;c3_zwPn%`q052@#&hUr- zn%)2LSA;ol?ynCExSpc|uIFeA*K^du^&FkxdXA#64D;wdFW{S-*}64+=3c^g-)!qQ z@XbxlEBN9j=3DsW8_jF@?ndT2_{_b5Z@$jf@8PGJc?+MoAK<&Mwe=l*_SNP`_%1f@ z;V1uZ{ZIWoqIpGMW&d|_-4AoPp6eX0=XwLzbKSu8Tp!_ju1C0@>)Ca~oO-S^xSs1Z zT+ek4*K>V<>$x7_dakG5w|dikp2BsXYd%`9o;$2p&u6%Lj<1Iv^jyQ$a{*V+Tex~| z;p+JWSI^P)!#wJF4p+}PTs?2#>bZfd=ObJ_>-kX6y3aFzZsh8D4Oh=KT=(+SI-q(J@4V_xreLgiNCI>2lbr5)$ z!hY1}01dsXnp4It8%T^`>;5d@x<9vY-JdO7_vZ<&`!o86FpuufIb8Q=4%hv;f$RQk;JQEc zc}IP!x5PgO$<^BuuHH(xdfUO(TL)KfXSjNcZyffc-WG86R>0NU7Ovh}xOzLm)tf#) zsvq5lg@3M;tG6v&y|r-lc7m(7C<%K|Z*#bM%i-#616OYiT)iFP>TQIpx0!$LRuAe; zpU36ur@?ylbA+p(5w3n_-}Jxtlfl)`8m@k7xcWK3)z1J|KU4p?MAxf+Qn>oj&oNrB z`>MlwJ*WD4NbBYL`AM#Q2LJg9Q=gwO8(So?L;ZwdQ6e~GP+;p?lIC-9Yf z3SYQq@aY%q`@FaT2e{@n!ZqLMTf;uJK89~~Kf^WO6t4MZ@a0u4e-77t3;5A{E8&`N17G=k zTe#-i(XZ`&!Z&`s1AHCX`VqeL_0c@+Q}d1Cnr{MMT+{YX;d*{ExaO6^HQxfR^(FlH zWp-`_*L-WZ=G(ycvF+2sHQx@d`Sx(lH~O})&$-VxhHJhF{Or$53SawumBE)^Z25Ee z&es=k&9{VWz7>4?<+gtf*L)ke=GDSA-wv+zJ$&l(9pIYp2-ke0TZH}ZzrymzaLqS? zYrZL5^IgI9y?O=L@83Sb^*w*|?O{%R&p(Ijd;T2$RR8t&4P2ie8n`|`Ol}#Tt2_x@ zd6sbHDdFm22UngBt~|3_g?Y3-gKK>QpMJGJzwniN2j5@c)}P?oKl+X^kN%#hIXwO& z`+j}{*FL8!@a(d1|M@pso*cfoiFpB^eZ6@JKl$}m@cqoz*YLBiZ{Rau-@?~7w0%0d zukYb|-+zD~zsB|%;aVT1VL$7yv-L6j=shIxsqde{Pu_C|pZfj<-Pf0J&832CE;an9 zp5dBH3)fsaxaQKsHJ5?za~a`V&lBA`>{)Y(;aZ=-*Eh1cr0|*dpTQ^YIb3ro;F`+@ zuIH

p4Bb^_-4yy*{sQ6ZW9}E4bDV@a1>-{S4nH=Fx4#{m-}X`x(A>Pv|%Ip5beM zeaPUuZ?^S0TV#Y&8voMeFN9LTDa!b!8NZQu6Ye`&1;0u zF0*+>w+s8!ykfZKmB2Nx6s~y{@VU>cglk?ET=S~onpZ>jd9`r$-@!Gn9? znpbrDuush^hHG94T=PodEAK6XYhF2A^D5w)R|(g=c5r>3?BM!5d4}urWPFFP2YtR> z!1euG0oUioEnKhXC%E>B7U8+tXAajs8@R5wf$MsYa9!^RSDx8-g?V&t23O8CT%W@a zSKzZdhWqQ>46bw6aGl%1H{WNk4?TSKyjNcO9&&(BzuVT2@JZ^gGv6KNT;I+-hEIKc z0-xQ<)~E2(UClH2>~7{ce0?wT0)F}~^AbMuJQaL*A6s9;H@;5;-+P`GzVP)OeCyZS z!%zOYJ;3LlbA)Ss@;&I^=bOSc-wdw#=5WoofNQ=bT=T8qnr{u)d>gpt+rrQHu(@<_ z&9{eZz5`tI9pRd9bf>US%{PW?z6o6OP2rkX2G@LZxYk$jmCv`P`}5ntHQyGl`F3#4 zw})%K16=bR;hJxB=de%BH-?|@ZSzgwnr{l%d^5P_o5MBV0wPMR>-}W|*Zai@uJwy7JXh}{1zh`d@W~@>jy-(#5c2`P zxu5w6-}`+Y-8Ia!d6=z_;Rj!zz*i5j^(p-P{pJ~bbGdmAU-|k1e)Mxox}RIoA8h;A z@b$yZ8~C9xZ{b@%w}WrI=N_*0(cQv6r@ns-*Sr$A=9R)VuMDnv<#5fbfNNeQT=S~n z)3x^r*Ss3I=GD@DULD=%)x$Nf0j_zC@QeQM9`>(!#c-|9;HyX3_2zKRtAJ}>C0z5W z;F?zr*Ss3I=GDSAuMR$YqUG=5n%4l=yhgguE4oM6=h5dC!!@r2u6d>Ki~ix7R}Rs{^6Qe4cGbuTz|h=2iM=Xc7|*H2-n}MHoI5Y=f&T92G`$jR>3zv?5}U| z{jV4MmrLS+`EB6jQ_xwG4`)u!-?&ps1x$hq>!=5$A z7_K=c@VW1w!ZpVXt~us#&9Q)MjwM`ktl*ks4c8nSxaQcxHOCIFIrebPYx2EepZXl0 z!1XzN3D@WF60SezwS(*5o9N(w{AT<0$}>FjzuzXlPnh#jx3xd7w19ua|NL43f8(`n z{T6<^JKMP}{MYYg>re2z`ugbm!aSGx-}5tvf70{h@Q?eSr`W)+?thO^1OI+M_Xz(D z|NDqW_+Ne6{@m8=zG2R%cyAf}r@Wsv{CU2YC-)2U{Po}3{gA*v=ld_=*Y$ao@bC72cl!j_ z{U7~6c&_gMIb8RD4%hv^f$RQn;JW{haNYkST=)Mh4|D4N&)~ZM*KpncHC*@q0j~Rh zfb0IB-apKv`#**2{$Ig$|5tF`|9iOZ{~oUUfAWAZkM92juKRxp*Zp6@b^q_+y8k=4 z?*B7f_kaArFsJVS1zh)k0oVP%h3o!r;ky5m2ZiUZH}<}t!dLDYeDVVSoCBY|(7b@3 ze0>Sux>xY^b8Md)et5ol1K0W%zJ0E(@8I+2nfLImpF6bZO&1-;b{Rr2*qKAZiYF;s1 z^Ge{FR|?m>GWh(J)@M%lc@=QYtAuM_4SeeJYT=q!2iLrMxaKv$HLnq_c|{Km`&9oi zT=PocTA#u-uMDnv<#5fbfNNeQT=S~nyI0t}YPg=S2CjLvaLsFgA75d-@o9RR{__&O1S3Lz^6X17Or`9aLucSYhD9f^BUor zSM>0(PxT+eHLnD&^(kEQ%HWz;4%fU2xaL*DHLnW3@_E&8&8vZHUM*bn8sNtl`TG}K z^NJo3_NjTraLp@$YhEc_^UC1rKZk2x1zhV(xaL*CHLn`3c{Om&tA%S`9sKxG>$8Vz zUISe78sVB(^2o6Nt#^UC3xR{__&O1S1#!PS2a*Ss3I*0*rYtAlG^JzVn| z;F{M6*Sw-fg?%o3UNKzrO5mDT3fH^}_|oT9!Zoi7u6fmP&8vZHUM*bn>fq|XhihH~ zTe4%`1UxUMXDj%HZlhhihI1Tr-pEetoKj>-TRT;QD=E16;rFYw@@+kJcA(t?%H6 zSNZ!peB(aAr?2(TSMa5K^!PB(%J+%k$Jf|C3H;#SN2TzSdj>!1`z!clYx{5D`gd9z zxc*(*Bm9w9vtO?n;re%_S5FA9SNm7+D_?HEemB5(ulGLTr`MTBPYm}zzrj3)&wt!J zfggOI6u$R;GWg8b=kSGl0iU~<@RMKH4z7MWxcWcC)qlJWdrOXo?xX~qiI`^NSu;FF&+FX_I12iLy`*TFA(hF|pjw6KS>|NGPn_#OP;1uo#1 z-`HNy5Ach*!1Y`#o*tg7{7d-N{ok?O!L@!5f13Y$#8DaUKl`xt8N*K>G*93g_Y{8k zd0U^scRy#I!}sn5eBxfhXYLhz>R!Y5@3V6|`20iWJzUp2z;(SNT-O`@aM-7=H-_ta z6S%H7h3k4VxUM&c>v}ivx9i_YgzG*$!gc?TaJ|p2o)KQJ_Nm~yp9lEjm#qI0K5>tp z8Sa1jMOz=kCm%6S;Co-6!q@H@eCnRV=k5i3=3c@#o__~dpOa^W*QMT8SKt-=^Y^#c zlRf1xZcOl@c+KD{ag?~H|*h2pEX~=zwHg?JGl1m z;M)HT@84(lL%a#kz2A+@7x4Gq*3K>9Z-0;Z7Jm7SZJ!qYG`|l|@IUpxzdd?hnCC_Q zel&+a>|gEN9A5gr1HOSj-q$y9^?Zb@=j8cep8a3ieU-u&?iu{_H?}^9PyWulfFJ(C zyoB%FEBN`3ZG8pIJ|q0>>!TkD`<#0I7(V%= z?X!UE`6}T0JhO#szAaqyoxLE;qkS^Co|iRT&r1#0^KyXec^Tk(UZyV$^XPd=;d)+H za6K;-T+hoMuIHtP>v@^HD9oci6S(@U;OpsYFa0_68a{Pz;Ir%4`WC*po_Pn~U(>vY z@7xEto|h4>=Oub^c)faFV)*gP?c4-@y0&==Klu6#zPpC4&*3LuU%>UelyE&SJGh>g z4zBzB48Pm;?DIohg*|BQ3%KUKgKM7-esL~b&sY4C@LWA#3%H)I0G3-y?`%$ zpAx=sui$#VYPg=S2CnC;rGJg(?BEm6*~3r1et=JIX#0%t^$pCUmxq1o`HJCsz7}xZ zw*_4H?G~>4c7QK#?m6Kz_vjU2&cip^`WSw6Pv|$Z^(lPs`)Bakx7zv~K6NkPlW(^5 zCH&-hD)`Lv)bO*fZ{Ty^zlBfTPw;zvjlGUVuMB(pFaP;y4%fVLxaPHiU+d1c{|T=9 zA$nDKuJ)h9wSNxR{vCXA3+uUuuWo5Rz>n@DeBpD9wqef0x7$83eC6vC_{7(z@Qvrp z;4}9eK5;ML8$Y*%Z|9b?g0Fpj4L`Uy@U43b-?^XQ_x>yUxnqD|-|vSreDMdieuO_z z_vfp_{ukfv{li!HGf&{#`7Kh4&6biaRkxaKv$7e8eCjBw2>`q8k@=~Hce4A;C8 zxaO6@HLnb=dF61;tAJ}>C0z5W;F?zr*StEo=GDVbPqrQgxaKv&_fN9*(d)uK)mseL zyb}0kZTqBf%`1a1pJ?lIxXvx$npX+eyehcnRl_x}2CjLvaLucOYhFEE^NL;{_NjTr z@YxfrhXk&9rSS9PY<&h-Z#i7^D&U95+CC**^Qz$6$JqKBu5%l>=GDSAuMVzx^>EE= zfNNeOT=R;4EbL$Nis7192G_iD`0CNtLjl*kO8C66^%Y#b)o{(LflnS~`?PS)tAigO zVe5Oi&K=;I*9h0VqB`tT^NQh`R|40(Qn==o!8NZOu6b2(&8vp*9&SA}aLucQuP?Xt z9bNBVaLsFgFMiPW8R42&^oFp{>BDS&4A;C8xaO6@HLnb=dF61;tAJ}>C0z5W;F?zr z*StEo=GDVb549c!xaKv&_Ybl4(T|6Hs<#-fc_r}8gKeJ_u6bqf<%4W}4%fK_T=Od7 znpXwaylS}S)xb5c7Or`9aLucSYhKYC!#*{y7(RQT^^m|duM~d1zpc;U>Me(BUIqM+ z+dd^+^Qz$6AF%Z`T<11$&8vlLUL9QX>fxH#0N1=mxaJkTDePbKis72q0{)x+>wN|M zHP^OZf9&9zZx7$y!+IOwn(qid-`&ofTBp5{4R z`xNl=y={F7*L*9u=3B!x#|ExBw(#R!?A#8%^Pi)8_|kt)AK-KS{0^VGM{f!HKl}bO zxPILsgX`Bv)^OcF2l!R}-whw&+JE}iFpu^r;6M9c_PtOEf6HZd-&XJkztX&h|KZ8J zfj{IbwtoxX{+2%%@aulPc@J+s;@@|{-|IfYzkO!=M7ywuKX|Bl0^hvA?voV0tIad` z{B`CzeE%Br0zP}0c?my1-@JlPK4xCS7q2jH;Kz@ew{V@?(O+omd-%%p4Dk7@ZT$$} zZOo&$g*`8yXCA{hzCMAky`L1m_w@x_^D5!HU$%2AxaL*E*B`O<4P3poaLucOFMi4P z>FGYN0Y3djTR*~eZuIuB&za9FhHG94T=PodnpXzbymGkaRlqf`60UhQaLucQpFU(g zba2h9hwockKfu-72-m!#p9uThe9-oZ;d;Ij`0^KQeG1pP8QtfV!!@r0u6dPk&8vcI zUNv0vYT%kz3)j2`xaKv&XCJU0qMr==)VyN&`Te#&fvdL^u6bqf!~1NX9Ikm4@a=nT zeF@jO72W4m!!@r4u6ea^&8vfJUOim%8sM7O2-m!lcZB_GUMYOFw;nRM=9SamW9tjJ zdMn|YR|TK^ob6M?HLnJKe7CJ{;X1dY>-`I^c@1#QYlLfF(L2LFHLn=1c_nboD}`%b z1zhtg;k%!)9xAxzRm0amZR;DjdTZgDR|j9b%l7H%djEn?8(TlZb#C-iVV@W8UvSMU zfoonVT=UA{npY0jyb8GHRl+r|2CjLv@Y6f3hYqfJ_3-^WZ2bUNZzEjuikh&`%}?4s zF2zQ3$A$;aLucPYhD#x^Qz&RR|D6)TDaylz%{QCK6|_M5WOqx zQ}c@9=bf!j;OZ@fYhD@r@K)O=hihI1eESw#U&3{6Mc4ZmT=Qz+npX?gygIn%)x$Nf z0j_zCaLp_E>9BvzD}}G#Y&~Rf%`2zB$<`Ne^;W_)uL?eSqwQ0}HLnJKe1olT;X1dY z>-`I^c@1#QYlLfF(a(f^YF;s1^Ge{FR|?m>R&agaRly&-w4bl{aDD#}y*tdQxySJN ztE|t2?mu^@@Xaf2eFoROa`@@Bw!VNb^m97=^mW*%rTfp_9b9wo z;hOIN*L+9#>?L+?^s{0ATmShwhR^-y_XIw5PvK|ZCxai|S8#n#Rl)CYb^miiaD6}4 z!*#z+elEN&-ES+nzBjAj7w5v2vxjT{>^EEBNwvZJ!!G z>C7AW?zhcb_~PT{9ejE+@2|iIxN?qH;L$$pXY#AIe+*xGo&>&ePvL9#0c4}l{~oUX2l(<&Ea!Ly9=$j0bAR?e;gdf!PvBag!q-PzpTRY+ z9Ikm4aLucPuY6t&T=Qz-%fGig9enZ|<~>~N2l(8dixIAQMehsy)VyN&T=yqj=cZTS z8T_J8_(h-ai$3AH{~P#4pYZeFc%Sf#KH*wFz%TlQU-bF@E9et`(IQ>c4`k{~E6TJGlDq;q$+?>l)zde}rp&^z&h#>OY37{{*i4IfbkL41W9z z%b8z+7x1OOo|o`_Z~Ihmt*_zp-?#M*T=Qz-npX$cyn47^eZJ;N`0hO6hvN5Y=HZS4FZ#1vqo12=~@Tu?L!8P9=zImzbGr%?9 z5x#wit&ct$_Nks@xaOO{ca`mv!ZqIvzJIZ;&*3_^fNQ=b{O}^%r-Ey~HC*#;;F@m> z*L*v;=G((H-vO@qj&RL4IfVUdzA60pLc87!uKDKh(+g~U0awo@T=T8q=O3|sYPjax zz$d=Gh3ni7uKD)x>GSQ}0j~LuaLqURSlFlL8^bl<1g`m}aLqS^YrZ*L^R3{TZw;S4 z&#t$DYrZXfzOnTk-Cv)3xaK>+7tghQM!4o1eLU=Q`5apx!!_RouKA|$)w6A%46ga+ zaLu=XYrZ91^R3{TZw=Rc8@T4%!ZqIkuKAAe^|S1Hqfdl=YQ8ai^GsWxz}0gK*L*Yh z_8GQM4%d7O`0j^oeF@jO6Bt?%JFcYtfYBYfif zM86vLsrklm%{PH-zA0Su&ET4E4%d7OxaM2JHQxrV`L^)sQ>?cRuKD)x*^_Pk09Vf= zT=R{7E$nmtB-{IiN;j1Uu^(Ju5H-)bsZ|gI-dd}gRZvo#t&h{zcnr{W)KGxRPaGl%0 zHQyG#dyMVV!8P9=uK5md&3A-rzEKzUuldGs%{PH-zA0SuE#R7O3Ew~3uD60~zBT+% z*!l*po?E!)+rf{IvVD5E<~zVokF@n8T<1ogM4$Tk7k++(?UT^;^DkWU&ET4E4%dAD zA6@qy{XSX#e>@6G#X%6nB96F=q6TDCKnP39Py;9wREPpvcMyTP1FnjS6%~v6#i)n{ z2f$d7O(YcV73M(WLKwMsSO!^SgrE{I20PzZ+`EQJb8lDFW|P_CEVtB1)n}%`mEtLzZqNXEBueF5I@;gWLS};pIuvX8^bP9l~vXM{t|pG2G^N0=M~{!EJu$aGT!+ z+~#);xB1<`s}p5^JKt#LY4h8qYkd!HIrrfl!JRkC_y=(RDDfdY(LN)%d%V<-;WqCR zxXt?vZu2{b+x#xz-a(o_ywvv*EBI93JFMZc`UW1VcfQrk-&gnGoBzst@B#ef-Q@e* zF?{cd_zZsjBgCC=H@9owo9)5vd%Pjs#xsW7cv85HX9>6Qc;9J`$KKNo;I`cuZsVW9 zZ9F;Lw%hw|bGwhZzkENT55L#tnm_!#3-KZR9zT$rC-Cd-``lny?4v;wSnjF6z_bm zIiBpT;$3+74)Gq`dAoQY?){(m03K@n5N`D&c=0yrGlqvc&IvqDrG5r?-XcDSPcIc; zz%%tFJXK%A{mZ4#243g<{g#~JbC zc%3ucavQ+woZ(hKg4a32>zv_r&hR>Cc%3u6&KX|k49~C9oauJI@#B`9;dRdNI%l}$ zHh|YT!>xVxVzv_r&hR>Cc%3u6&KX|k47Z$1 zc>Vn97tK85YbF07JYR~B;GX&zZuJv*{8i~QgQx0qc<@cBU%;b6d93<)Q{km){o(Z`UIY-r*Qkd zf+gIZTUPMz+(Dl21;1?OW9w=JxBgSO^`oAT&1w2t-!l(a|`V~Cbh_B(HdPn!8v-MYlj+1KtF5I@;gBM!ghud}s zaNF((ZrdHhZMzeAakH)~xNUb1x9u+J-8XIR`3hd_BEE)C)i?0yty16lZF7C5Zxipr zqt}b~;MK+AeR%W+@c}&6@eJY9H%k2oUd+VD@aW~@6Z%Aa22a%I@bdqpegXI1BEE)~ zcNX8kE&tB%nt59OUAX1ngIoT6xaB{9TmD11yaOYJr?<076k@y&H`A^`!=0Ag5{&TqH zzkpl*OS8sG!7cwW-148mE&mzZ@}I+9 z&3^&6{FiXce+9Sv*L2N)1GoG;e{AMy`FG)#zYi~VmG#z#XS<1qaH}7}lebF2e(gWLL?9z%BpIpPPAF{$04`--BEJeYoX6 zfLs1UxaB{BS9g_lGKO3J6S(C+gIoS{x?R8Emj4oN`LE!Xf2V5Z>1zI6xaHr2TmF5x z8sG!7cwW-148mE&mzZ@}I*q&3^&6{FiXce+9Sv*L1sn!7cyJUz&MZ z{$04`@55tHj^92!yq9x*29Q?Z>b-{L-h%~xF|JITxJkj~;!RtKXb)N9Z@}%qM(-GbBgx7h(>pbCgp71(Pc%3J_ z&J$ke`S+GQ;jZNguk(c0dBP)Iw?n$+Nw+-Vb)N7#Pk5atyv`F|=LxU#gx7igqa{yx zs_Uu;uk(c0dBOwB6J8(hbjuT7=LxU#gx7h(>pbCgo^ZQvZs2y^?EJGOPk3VIPk5at zyv`HuS)TAZPrBs^uk(c0dBW>F;dP$yI!}0=C%n#c(~>8=vOM8+p71(PxMO+3>pba} zC%n!RUgrt7JahQvN6Pz%HT+?TxO-zWpWq1bKK%OE%k%RH{$A}rfp7N}sn6gK(eI@@ z|7vbGeSlnNJMi!!;x63LdJk@WdT{5#(#NN3p8#%s2JqlP(kF!5cp|v<8NuB>q)!aD zJ_+3VOyGr%e+sugDct(Z;hy%%;MQjecmMhtd2SCc|DX68ULU9M`Z&F*xgP5KMtJ2* zZasKZ$#(njOnm?^w9gP;AE)q2`;6hG`UGBR4l{VJp24%dWWN^ha8L0Z?yIli!9G&I zf#(ku@BF)&bE4jb+vmX^+&&NX;dY-efZKh-5N`83qU(6ZaQi$sf!F6lxXt67uJ`Q= zxSc6-rvZuzg_mj4EB`S)&a<{xSPeYoX6fLs1UxaB{BTmECXo!=&KJHO4~ zmj4{?Y5ohi<-dem{wuiUzou*c8@T1)`EN5%%fAb^{0Hz#$3KKy{v){MKZaZW6S(C+ zgIoS{xaGfqTmDP9qvKz}E&ny#^54KM|BiF{)^*a}??;+{7jF6Y;FfZfq4pTYh8q&|aN{Q{opb!rVS50yR}coK+rZqdv$Q18OS!=%0k zPmU1p!|nVzfZO?V2)Fe!f_pliG2GU}1nwOuuk(bL2g`aJ!|OcZb)N7#Pk5atyv`FoJw(Q{f!BF%+ma`|&J$ke39s{n*LlM0 zJmI>TK7{&7Lp$aC?3=gm1TxJf}+Fy#wU?s3qL`bUMxL+H)`;ZsQ!nZJY_*o`cQd z_8hFB>-aZt8-IA4<~Z|#oF|9y^l0%IZuMh$e3aBr;Z{F`SGwH{ZuJXzcBJ%Q!~I8! zZ{X>%;+^fA`x~iu;huUAULGTT`tbTb1YX~V!0Y1(o@@Ux+&&jf;P#$+2DjsGPS?)` z3%I?fUc(E`VFR!8ylqRK@H$U;ohQ7`6JF;Duk(bbmM6T<6JF;Duk)l^p71(Pcyzq3 zPq?q%xm`0)N4*QrkCQ$wCrtJ(O|I;8Q(L=kQE@0Z-LS zczwRTeKWWEd<#EV-$x{H>obR2p920l{XHV@4$bWbC+obxy~l|6;qEEo0X)}v58=+^ zq<#o5w9f>dJVEMbaOd&jb9k=(7jSz{vV_}nk`>(6+Zt}`Z3DOU*4d$%XR71r!tMC& z!R8@T1)*|C|Y z<==(deRU6R_tky4307BxBQoI%YOy8{42O~ znw;l1@FEg-cWUNu^<8+XeSEmp_u-z_hj6PO!Ye&bPT=9`di{c@Z+q_6^X@skdXm&H z;D!1U9;vV3#S^8^8Xjo<2Aw9qTOzGc;JJ-m54dD41Qa^;J>LYlh zK8B~7=L8;T{S0pVHHSw!{snxh{g?1uy@X%?clrLt;7-VGr27kxw|U`K&LepC6saG> zr|J`U`DCe|!Cmz^JXc@9EuSTPs`Vw@{?50vOLKqi@05M`EnX1L zyo6`_>fZ(5xw+lUa)w7wm3&6<KE`x>zD9Yy@b~} zcbofL=M1lNhFi`#-16-0+U#FGN5h@TY!3w%dn) z=@h9Sz;Ah>9!KyU_1|M1!AIUsTj!ZE{7TJX0zYPZIlgA_(Sg!u4)?YfU%*ehmyCZ2 zAFHq6znf|P@VWlI{09E){WSmGn)&Z_y!7e9&%U*I5B}vJNuNIaahk&be$4fnKm0=N zKZ4&||J~a$eD%XSZq3UCe&QL@e+K{9g)+`Le4EFKFW{SFWnPx>-|iv(SMWsF;TnFR zu9FS?ZTjzYckbHE|M9<;{$2P|f0v*KKScBC!}oKg&j9`>`<-6+Q+2x|_>c5=mB;Y^ zJV*LZ;CIpEYX+a_aWsdYt@E{j-&>EzB|QCz%-0Hj-PJOlHT>wyrG5jy$ANO3cJ9{9 z|EGE%(uMD#|K55J{$o8J`|#0S^*RfG_n%~(L-@TckTR4m|U>+!pUpQ6X_3cmZnnm_zxU7s8H?vK#?@7~Nmd9IAJ3%~CxrGF28 z>K~=P58rEBsUN`SdfW}+-_!Log5T;v(q{}mU-Oy3A2^or%;1OXd36r|ww{+3@B=lU zC48#eUBPeuy5>PKK7W#)f8e7t<@z{* z-{Mjk{|vr*u;vecnI6{*`0Q)4-6j0JdY`$1@3OmWcMbosUN<-JPah!loqIO(FE5tu zcH!$^iud3j*YimqzR-0$fPYlyaR@&^kCzerlX~7B!;ko^%=-lXG`-)L!Jqh6sh`8I z)b+f8A7j^F_+#|^yn>&v*O4{+NZqdu{H1!lckb29|BiY;)`ef7>%0fQTHkB;;g8pR z2JnHNSBLPuz9Z{l1b?E|kKq^V{!ZY#^kkjS;OFT5z#Lxa`C$P+L+=xo@P}ys5^nFO zI`?kod9CK}!|nao5PmoPK0^Y(`XRD@O1Ql*>)fZgT^o-NKmT3QX9&0NGbC{PKEoVt z`&Gd0ecT4Vxr=PqyKi%xzt`(y0=MsD%;ENZi~?>sc=v1ew>|^7^@-tK{dYHJ@U!kG z>nexu>dCtG?%&+5jb{M2d5PgR&KcasnZs?q)^M9Ix7Qrc!GDl(M)23{C;K&l+xRoM zjeiCI%sr*QvwL&9dw)>82fyiLSq~xnffq~t7=EmNZc5=-oub=)Ky$k`o*vwu7lrV5 zK1p&I!~gqq>A!^E_8&6-4ZOUMJb!i`*c{KkFOd3fi~B7;fKTqf+t%mqA$+dCzZb(l zr}vE$_$AtB2LH$jGR~~UmvH}J+20bLq;K9D=Neu-T=UtZnNN9>)O+yhX|t_90o=W> z^oi)2{|Nq;9c8}~_}}&VJ8SU_{u{loSi-lxr>vh6UaylDcOTTu!RmW09<=zd#p4#A zw0PR$3;5o;{tLK`e+~bHUdOu+Ztib*KbglqJkog_!UOdf{=S|Z7fFjx;hC<(Io!RC ztiudmZYREgXAhL|=WuUN@fAFCWj&X0uP60uc%uC)xb^Qmq?u=={atvxyY%nEbM5cJ zt$!aL?x@EjJbr-mAHb*DKZINV5j@xaF+9eV$gqZ@ask zhn+nvH6r9OwBrM`lDdS2SV z(^KU<>FnLi!LB=9c&^u%K0MU>oFP0=kKqSASg(WdN2pKXN2<@^-`CH}Is8dlU%+3X z_md^u`fT8r>-!FOpJqPhJ@^ZByM4IThb=yWe@pv};nrsg-)Mabzx8%{{)AhfqQ%$n z-5(AL%N=$ z79Yd^Pd_)!;nhRrJ|}}md&}{@fLoseezu;M*6`=+dT{#99P%Ud{tX`LcszJg@WXvspAq~d^%(vH^#p!`?pF$bw$^9xm#OD)t1sXeYkdj#GdWH-@V9Gy z=V8s9f27`pCkIJxK0LgIH*x_M(PLfa$E5b?rZ%Jo~lRi@J`Yvfjci3pTI-) zDLhr5!87#~p5IaW&*8~V;u(Dx@df-Id&+uS!mro&DJA?|t*_uOQFr!l&hPzo9lG$> zYP|=y>vbPq-CNef5bo&b(=og{PWCr}C+ZV;p+1F|>NB{VA2PV7^$U3LXc~925)kpAL zJ%(F8Q+TQCWCq`9FInev_&~jY2YQ}g(H}13FX8Sl<-WIbU^8dCPwT-ay4^n9o~sPt z@7!C)KZIYW?`7f^pR{-i|FHI7z<;4$z#pRbW9t@o9^T9$*Xv*hUa7nA;&jQ`hi6*f zr$1ZjgBFkArOxjNo@<}D#mDf!>V3|%#pm$%>?8BIfPYYZ34evYr!HH31Fy7C=b&c( z*2in{K79LqWt;=J^@&=14BuP(OyH-g&)|>K&zo6`FX6w`=bR<{3hiIPt-f<`GoPEZ zz6&4hCpq-s=c)JMN9p}f2*37Qa()=WuhjRpNsG@~JZte~il-e9>71V&+CTpKic^U?r*2h4dAcU=Ku-(GW7|(x|Q^q!h??Z44!G96#fPEIsAI{ z4E_uC1-w$v;kVjD*3}Zeqj~|qtNIGQr+Nv0g!&r(SoI2iy7~rwuDWwbb3MFGy#xQQ zx(olKdKbR!gCqwJ?yC3TyQ=$e|MoJ!efYh#K7jA9K7bF@L->j6L-^_H5j=UmJkK1# z&(r!CezE!(Ug^3`;HlP6;2%|=!oR9MgMUvwh5tc)4!==7gKw+PZ5Hqy)N{DKzgxlW zy+8%G=lPvOo9pmIy$|u=N9g@nzs18AAGLVW;BFAGY`eK0EQ!t@pxH_-+0vpZDi*dykX1_^QP_hd1}@%=gN6d+;kx5g)+6q~jdH zKdJQ-_$gXHhdWnE{|tWQN#YCmEr#Mb+;Uj8cm@BQes8UFL^B6-uf_W<9=7|y%rBzeAwb~i%(iSZSh5m7jXa8a$K)l+&QwjzgFLEalgd} zEgrS_xW%U}K8N4=V7ZPj;NiJ)9bD42eg%Jy`WkLIID?jaTHJ5(L5oK%K5p@8i_hV= zeW>J+xA>~XEBGrkpAGzS&DlAsnNOwOfnTY8T=+}XyYMU2d+ z58-cBAHw7FB+m%`M%~{L{QcS|flt&Y@R|A)zV|`0&S&rsX#E_1k$MKdOnm`=pL!0@ z4w3B^@T=^5`0(&hso%h_*LwHp<~q4l-+%R5JZSM@i^nZKY4Nnh7cE}2_`1cNWB&L4 zc3a$U@j;76Ek17XX^YQWJa6$;i&rh)Ire|&;I(+a#Y6aYhsk=2;I^*DEk14Wd5h;Q zzH0Fbe*078ywQ1NGY4}IZsYH_c-Z2j7EfAy2DkBKa2wCE#mg3VAJyF7_KI{N1pbn;*Po>+@s3#RIr=YsoW&KUMoj@I*a^Tb~4;>+_;1{8ic~ zgvr1WbNI)! zK5y|A{1wN_I$6W-csE&B&hgD0zOD5xe5Kp%wRq6t!xoQQd;%Zpc_xM5{7Bia3~u#H z_&$%4`W3v;``9(y)#G9VKTP{{PH5(KxOx}eNbw|T7W*AV_mJ)e)@@pgM`oo{1!b&k9z9m6xLKe4%A?q`nJ>NAFW>IvLepTGn4 zDLho4!DICl9;wgam3~hkgJ+MB{awI4`#uIdIa2DE@Ms@7KNoOEy@b2vF1Lv$f1u4FA>d#1nY_Vj1Uze$7!^ zS(!u{POHxKSSU%UrT zpD6CbEB&0(hkLt7eE{G6_cHGTxc^YuuMnQ;dKki|_mln++`Xwv#;WB56`&d2cT z;WC~C?(Zi)foJM7c=7=`?oxR47a3;;4?isRIXw5p*Kp^L(x-w);fY)8c>{OvDt(-j zo9imj^F{|=y;AC3_)i`s=l?FexJK$d__s9Y9z523e7N&S>C=Y?>I1m*Tgf4W`&vJQ zyT6h82<|wt-4T3x2k{sl>-k{}zgEwC3A}ijr&mdz1>F6l?C%nu{#LwzPv_ES1^50e^(8!bg4D0!>EpyJ`qknac=8)k_Q+RR<@fqCxoAgiNiT0nvol|AI8N58<#arue0Z*QC z?w059K<9l4ubw6M8wK3&%lxk3c`oB$!)<+5@M59s4PI&==W)&T=6p{2ci`zCWF5M6 zTc2?E7|G3p`^Sp+;Q8C+`tHM{-^h0R@alWAUjcl2lXwKLJ|+7#f~W71`WRm5{p1)P z{!Z!>c%tWx3B1&KpTZNp51hfP=Scq)9{fVaKZjSZm-+>~D8!d=M~{mF9==rWhgb0U z*YbIxgu6cyU&G@&p0Kt4D|oiO_y+ENPWm{HZ>~e{}`buk(cFIw`J~`VPEO zcjz?fQNt7bqII$yfK7(drO}Pp1x9i z1kYYB9>XhFd<>7b6HnlNCF7jX$Kq3X`Bw26-1(C9PvPE|#pm$w1=1&jd!LZ{1w4AE z)aUT@O7SH;xk|i%S9jLyFWk{}Si;lGrOz7fr{Wbnw);T1tH+&lYIB{3XUqO};I7V# z2T!!V2T%3+j1RBgB>nqvN3RP3+*KdIJ@pXos}JFUdIXQuNAOrZh9~M{c&69o1Rm;j zZ~}KPkn7-#ZtE5vy-?OAp8-6+g?ug>!0oyd!i$efK0|nVhOU3Of2{Zjp4?gb z#PI13a$O$7^PkG~D}lQ^N&SSrkJL};`hH{v&)y*QDLl~U(sOvWk=!zPr0@N6xc3ct zu2sMj{XYB(UZ_`aSMN_Y@Z=cD*?D4feO7^Z2OeD``|H9heLm2I2RgqV+_m#F+}HDo z53kO8!PfEKhda*^58&lrWSxX?NAL58@bGAS3QFlhe-Vb?r41uFAkOZB|JPryns)&enr>qmhj|A z>9dCW1MvzT>GPZoe0rSJJ5Oq^XXg>(9e8?}xC_q@7w^J7{e0@dvqwsO4_-b>+=u6n z7VpCY?GwQLs)fh5LFu zrts`~IlkubXg}$n!QH<20-mbp@KXCM;jz{iaOYvte+AFAPYDmT&l+B;SMaI!*}y%m zcTR7v+f2Pf*FG*h(E2XCQ1{@e_UXZWt@q)%dLJHYp8)P?{Qy2y58<))8Nw6wh_3TB zg2(DHe5yW%r|JnjQ=h;q^(oxnU)IkI9;>JDQv1x|p4MmZNPPi!)N^>CzJw?01-#Jl ztl+NJm+(-14Nne`94h!!eFIO`oinih)jRN5-G!IxU3mB{{heF5tMxs&r#blWK)nwS z)dRS%KA`J%LwKM*gh%QTJX9aSGo6pA?rcn9w5 z^IjL8e_ral@bc5*9z6Y`cn_X^LEMMuH_G_?@Zxgu0G?hcK7a@NK6mT>JcMV5oU!FY zxOefHTOPsFOnd}S^u2rxFOHY}8pETn9=Fv$fxDT0zYAVnDfLshtDgsF@Zx9k{xOAz z`Z;tCchoa@_&4dZfX9Cq&*A>Qa{so3XX*vq-&^We@Jzjgm$#JqHQc@zRKe|gK^wSp zu=H`B++6?GrvtY>E@3Gu3U}Ww{e zzvtsTrMb>yeUH$AM+Zs{EE*@wHDe*mBAIvK#@ zn$^dG~6!^d)-hr7>^`_BnHK3M9f z@cd#K=M3&^pA;UwLF(u5@;1^xgXjB-FW}j>GR_>HZ!bA4;pqdVPXV7EEqzw-RK0{} z>T7teUcn3X4cyW1^EjjC`i~wU_51(rO zeR!_<2XODP@_u0eFOC!s;i2{!!b^Q$5W%DUB!>~)(e1|Y@Ce!N7#{0!k-&qE7-b=dKytd6xJBp6T@^hZny+PtNmj@AKzuc>(u-C-p0M zuJt86)Z=#zk6$TyR`C2A&)(YZhW>V`cb?i@=k7P9z5_2pd4BG~9ea-hPj&rxaQ9ZS z{(JC3-G}GezfafqfC0Sxvpi=Wz$-o8LwK-{jAsbX9x5Ke^E;ipmFEav{!OlHF}%?0 z;~1Xk`;>(KMCmhuI~R&i;l+dGxR}A6dyA*=OrKlM;f~%PX7Fet*T)5Xs^7QC;g#MO zE#cl{W&8y^I97ZGuO2AlFX8TcWIStlu%Gm);FW&f*}zNv+~hp1x&AA?Z|T4@br)Xf zdAkdD^mDfdFYP=Jj~^oI&4;`Cp1luG{vywR25|3s@euBQQqE&Tc&I*t2Q$ethFALc zP-A$g-+NEsj?UKv9y~_+PvQPY^gR*0>`Q$L4|RRc;fa1;$l&gOKGpBT73EWTgJt^GzuC9N0dbM~84{j$uhnG|F z3?A$(_md0wbO))=;nn-am+G8XP$0tg? z^Ni;DkB`##{_s@qD_nSK_cQRRem}&6CwgDegL}7;@%Zp;8#(U!@ancwAJDtv19-Bl zcnEjYhw$IUm!k%JI@nO z;Zxo29G+?a3?69z1w6e%j?*0OeNpb)m+)A>zfr&={a(rn9_#lIN_eE-H(0|xeg0p; zD}B$nfk*1jGn?zb(D#fTxPQ2;9~bWG`-m<)(f%I1(*8Yoa69pJgd3>lbgjm@W|2iPrpg(yYO6}dwB3jy$4U!eYpE@S#Kdc zI9~qFZU|2z@d%ziSf97RU45Pw!{c3_v-P=k3@_9Zcs4y}t9}BnUMW6>C;yQ9r5QZ? zyLbwBZhZPy|2aI`h-dIv*TVuHyid>D@a+BKOL#Gr?=u&0?-k-J`U{@8HO>-V?IiVU zxVy7>1$WMrJ{x!$oUzs4d3JN%`bUU&;DNdekB^l4F1$KK+=Dy+k?&#l;K|M6KD^50 zd37J2UL_vTKOjDU=jtImxJK%S@ZSt}+sY?`hr7uA%n0tEE5}z1cke0nV|e@-sZZcT z{XL2ayilLQ2l_h|GkE$zx!+6S?l#BD`iEyb$$Oj(Ug-0*1w47IoX2u_sP~^sc%}EZ z1-wvS!F}yh!n5sUzt(V9>npgUzJX`DT_=Fame2cBc)pkT3|?L)<4ocHd&KAPP(6bO`n+NR&-D1p;g$Llp5IpX zw}4N7BjZ`YQ~kZ85^nFo*DYSblfO#;4ZJu~a&yjVu77VR-htoCL51*bT{R4P>%j34TJAfDZceNoreyD7B2oHZC{Uf+{k@yH+ zrs6R?@}>V6Ug`Vj1fFaw=iv!m-xp8eo+JA^gS+~kI;Ec}^>cWkp271=WWN@0|MlWI zJUvnNcM11jDD?$AyHtDy4|E-t@TvYi`{kHypCdki$Hz(k5bmBPK7?n_5Rc&D z^TkK->XqU#eEKHwG2DNbcmgjn@dHv!@6lf) z?$h5U-iK$GiU;ug`|_N20MEWH9>Sf;Gq%>%5FY(ZJc0-6Bl<6-K88D`_!ypQp9Eg2 zPv}3FK2vz2+nv$1PYMrikUn#|jx&RM>I-Bd* z#Y4EGK7_mK5!}0lJXaslA1@xmL-jG-S5M%v`UD=RPvOzaWxF$Yc8=_C3eVN&@IpO< zm+A|+cdqo$;lBD39;g@aP<;iTs+aIoeGSjlD|oKHfrqb^@jK6NuKz^61CP~Rc%%#`x?0SeDOZqRS)2f`T(B1O8SKGsrnF}sYmcseFTqREB#}5q&|kH z>Ir3fhI9?WICOL%#E=~KY7 zrPQzB(Pza=c={RfH9Y&cctyWKd;`zbofkCMfAJF;X9phMRo~aZvt7iyaPQ`)Z=Hud zc&eXAdT{3rvR$A4YVkfi{>j-}{R4RU4ee|dPxUxj!V_J$1w7E)R&e)cl4l8zJ}vXIhP$5^ui&2g2JWjnFKn*=NWBA( z)m?bCt8BLm5AGuF!9A_-!Q+{%2OpkaDBgz$uM!X7$!o+1@Zg=|A-uY!d@dWp{m+X> z@It>&JA!BWz0eq5UMSz+7{iMnnKiajDPG1^ho?J=XYfj&>n`A>KDW%_(f#B(=kV-Kx^ChAoy8aMN-mlQi+AAR-m=bn@KXPMhX5XaSH?ep7q6B+A>7s9Wg5aW z^#~q*NBYO`=uqiDrtdDEz++#00%rA=~KW9 z{hiVkeEK)(Q^Lc4h_B(XdIg_8K+cC7c%Z*mx19+w558-EO4nz3+)Fb#CPLcj2_{&cekKvzEAHzSb*R=%xL#>~{ z9X%eW@EwP;-5LD)lf_f`i%%7w!;gBZcm}`6W#S8X=;`?ip4>&xS8zwqZv}jV3F(sMH7WsrmqJzdIMgef?eH^wMSycfVlAt%%S206x+@Be;zxhWEAq6mIn? zyr=a!{IZwG`YGU@r^xs#xYawCHFM}{y$Aov%cZ{$pFd0bhj6Qp;4`gH;Gfj-PvJuy zPX@RCIeel0OSsin@RioPZ*S&c^&Whq^#R=GD}=9X{ll$3fp2X6!!4f--qU;vxYd{N zzScWwbAN3-E_|rt@!?h0=N1pyr<*I;8vf*`&wVZt-gYHwcdSaGY6~p;9Z@s0B-dm ze52>97;g0me695<-0Cyt$zTYXnh2?`WQae`YGJ% zQ}{^hbGX$P@PXD>aI1GNZ|2a``Ssv-eEIN+uAdNY{Udls`zLU#pTd_q{tRyQIeez| zCEV&O_)zQJcQSOgJG@G+rwM#>mRwI$xYcLy-gBhBfLnbD zA85UEMRR{2qW7OJe5Lc{!+Xz{@dxnrlVv;+-0EZaO6#X^8&3-F>HSp>xB3D;(E18) z_0D^mIdrw&gRe9npRV;GUF#!wCzgB?xb>gH*V;dW-zt&(bNEKrTM4)R6@0Gaap%n( ztlon!v_61aeF$G_eGIqy1U}LF6mInye5CaS-0DlZ);m}J@BMY*J+1fQ)<1v`v_69G z@@ko{7(PE+*25HT^(lOz^*P+?3;0s&E4bA=S0M+j_u!v@rHtQ)cl3M}!oPZ<)JO2O zo_`X!)lcCYtYevDbLeWl2e*13-qZRJZuJqouk{Js>ZkC5)@N|5&*4L@FX30{`KN-9wBG$d zGl%;A2j0>9r2uaAA$+Z$cVf8JC-9Bdr|{)O&L;9(jrS5MIxA7P7zV@%+mZy_7b69JC4{mw- z@VWL6;WnNK-qrd9Zh21OBdyQimS+y1XnhH{>z8{?bANw-zN{+`KGx^q0o>MY2w!S_ z47d6OKC^WWxB3h|*ZKl(^(B0z<8eON++VAA;cKn;;Z`5OH(DRTtv-f#b^KGf)u-^D z*5`1mFW?=mui#eie5jejNb5bg)%)EXO_*%!~EdKZYy6}zG`*7t^GZ?)%)%O{3UbiStWd+K^l;a$xqhg*FC?`wVdspkIL{Z#~?Xng{=e5UZOouA=0o*cf` z>q`l@=hzi|Z0|un-5kH=>A^>uX8^bQ5I)xR9K)?XfiJW^h1>l`2485N1>EXO_+0Cq z&;0NGb>U+@zI?d#58yL>ZXCg_K8DY=ehNQXKgXr;g&toy+&&i<@Ua%o*Dcw8$bML8$bLw z^$q+~8~^8<! zKjRV||CgHMf1Y|D9_s!M;V*x)u7CJz)Ms#;-v#_{TEBw-M|}g|Zl>e^a&!DUtM}oa z`mn{v@N)Ydw!Wt~gYTt%7A?MlAEfmg_|fX!uQbR1X!Sna=4A*!S?k9wK7*fb{jY6q z_ebxPJcsa~tB>Iazf0<8@ai4n3;5Amzk(0dH}EsmyVo_xd6s$~9=bALL-=Ye;~B#* z&^|NxD{Z@9ZEm-Bp7iO%?fZ~J_-E(3UHFbyiqGKIe*w4tE4cOFz^zaBYc1o4TmNB; zkKxvT2Dd&7xYe)V^Q$BWzi5ur`Oscl$6X)(ln+Y%5N_KY!=It`Gx&Mx3;6l!EBFN; zmhEof)~EZe=J;Qw^?i6fet7W$=|6_Q@T1~0xaGNM@l}g&;KzJg`ggzG9Dk(Vho7lF zZ1FMtX<9#n@A6sM?xMw4@Ljcj1Al~i_dCt;pQ7G}+jfU=>obO1pBcQ)AO2e1?yAK% zE#CcZbNtq)-{Qj-AH&mg_Srg)=I|TNbLIQz@anB{{#>q_;|boi_g4J|e%7y~-uXeZ z-uevT$>q{#0{`jpGM*{i`mE_sll|)cu({o{uaQ0;-1>~+#nUw(__v-X`<211Pv=L? z?PkxAK7IJDIx?OBZhZ>4`(^2~f?xGLIbPQABQ+#HY9cj4|1vR{3;)eqp`)czy5 z)sNvn*7_OT>gVv_*1F!{R=0Rg zRzHL9tMv=G)i2?p*015w{`+kmkKLa(_xEGRNuD0u*4r2!9w2?@@QZr7{^8cA^Rwo5 z?R?mSpQ_^@z@Mf*g1_%v$$0`lN9*VCJNgc`xDCr~jK~A7>?f zM(}Uzcw)HqS;FJ@X+H1|AFu0w-Q2GA>HfCq_xZbwzYjlDeF#tOb0Xa8XK<@uz|Z=V zY@oeB$-~C;4{7&I~aA2Oa9-1;xz`)mCQ{z&x={3P}6@0;Vd zarRq$2)E;X3{U>4{K8F8E zeFoqDCh4<)@2tLp-%Wi3e}H=TPt9>2rrw7ip+1C%>SOp5)o1Xj-cK&zXKVcm{xbCq z{PpVHKR3s}dV%EAhg+W^{4(t`hQC*R24AQz;N|V)JhOsdtMwcB_tm>qbNn}`_u-ZL z5Ppk)%l?jAdLo=Zikv)91QF_}SWj48K5q27ifOIJ$G^9FAAXSf5Pq2Y82%{r8T@hT z3;0NV1wTuD1Al>f_wUW|d;1=|bzd}q@9`a(uMlqcA(MYL`y6?PJ8t!v!@qEQ@g@B9 zoy6DhXQ_8K&Hm3*AN{N8?n@8Z+U^X#_Xp)ZGlkpuH*l|e=vJTJP0jw-K3>+354S!O zc(|+dS-@X?g5;UQtxxyg&Fuzvkv;?X*LIWr3gOmgPS-vw_}zDx@sx1uv-wYRJlF3k z^VPk%>F>XXcpv^j^&#B7=iys9PvFO2E#sNOZ9L0usuM}>5HgNB38BcHfX8$jKPWt$8 z>ob9SGwHK{zvC!b&pF)sg!=EkTF&l7{@vImyu4IA*rz$p{I%i>`fJ1s`bFX^c=fBD zw&rC6&z~pbAMD%QZlpefzvVB|X99QheeoQ=P+!8|rhPj5HMhGN%KCR(dw|U%p7z zZ3UlxRL>g^YmW0phe&+@_m0mCxPd0mii_9Sz2Gf&)4yH4``0(F>4vW2k(DJ`j6muy0g^B@aWM}zkokU z`{(fSRZ`zMusNQw*1Pbbj%Nrz>R&RR2tNIh^q<4uuIn&^FSLFGfAU4r-+6d*oU><3 z{{j5%I=>-2(ecmV*WN+aRSNIxdRW6hqU*DQ_jZ@@^bcx|^V+A%_yc(70I8qAZ~Hx| zpTd(HrG5qfryh?be6IW3JGeQXLywXD_2HY(NdGbX=DW#xCV`hnNc|FigYItu&t5C_ z-Jm(1-Ziqn9(=6xK7wDQ>obO5qw~Ii@A+>Te-6K7Pw~zn&GB4ut+)&S;bG!K_-kG# z9>M>6qWB#CT|587AFuPWfuE+wmvd-yoSjEVo&)$>^gI*7JHM9t8T_G|e+qxS=D&uY zt>dZS2i;cow|`i3oIBrLJb;&)!vubv&f^rm(K(9>-|6u zU+MAKc|>zO=jl3h;ju5{AHrX!^%4AX^*Q`*FO+;Tcu&{!27Z;D|Bq~rbD-Dv0enAQ z4HK=|fsSVc z|FPyD!#9tU`^g3T2iiY}5A^=Cb4+tQ57zUH3s3a^Y6w3{*G~i=>ixqUev+OiGx+72 z+XlYFJ7hgL$2Q0Lc|E=c@E@y(@RgniX7G>e^)7|~Sc{X;=)5HGSl8zg zev;->z>70vf4h%vj_04Y{^0}N-x2(eI=?Y|c28aZ@Q>L2KRnX&LnmyG=WBNV1CRB1 z8Nv_O`>P0^>gS6&{4cr=Gx+Qv8UF_UFFoF!z&XX&+qiQmQ!$=f}=to8#GbFWD~_K08X*=MY}#`5}V;Q$H`v;rG#b%;2HkPj2A< z(fefQ#O65HI$s0$j<1vBB7{%>Bzex@XWIP_JlFHd8ot!~hYFtS@!mhFIZjWnUjclf z-$FVgXs@PVEGht2Vvt?S2!_wD=-f4)8cfe&>&OSpTI911^ha_f6L)ByZ9 z@KV=L2KV)RwSix)*LUY}&2fhI`4>Lc^JfU3>;2mdzSH4yyr=MqULV)+kLdHO3htdL z^VNTRbDaC>c`|_eI=>V6wfcEs3NQ6|S;60A>mMH5`hP-mJipiTp${ME^Q$rZ5?lZ9 zNXNf~@2$ss0S`5w?y1f3^!0f6;LZc&d^>_~bDhjr3}5N|F5t&&{yBWA_ivrkn&Y`n z*P9FP>GP8ze4;r-@ZL*hJ*z%SG5YzUv}dYHlY z)#E*dFSULRzpq|jD!6lzuKy=C$64CvUwBXJC-8ggeccp3)BRn+U#G`=2_Ng{i{6u( zCN#RsCjzuwO&t0@T2wlMhwsO z{$v4P=z8m%(cErm>lyx9y*|$2Ywf>*AFTJogEO1`xB0E!hrmzK&kHknq36{Uewyy@ z8otxhq<;k;==r4o~~b{Joqf3wW&O`R=GWo`dwb^Wbwmjz;jO>3KDV7y8~|0Uzu6 zKZiSe%Xz-@)aH1mdOW)Dk?!vhezJ}~f-m%Q?aReS*VzAhfZqi={0;lX#r zBe?fU8RrOY|9)%y|Ji#F=qQe?@%L7z>6xCM>4_Ri2nGaLfU!ju!C2rV$Cb03cD1(G z%X)1u_S$PUfJGKrWPu1Gi!2dE7FlGGg-IfdEV4|}|MqkbDwVCa_&$J)OQ@qC6uoWTni zUKDHaLWU>THFy!j<4yg=EI0L+F+BS*Lr*!wi%brGs@hIU%=E|%&o<-L7+z+|2N<4e zrYDZ!+0Bjg#526W%)WbVMV}eG6T>r1p26^r zrv6NZhvUs*c&;g*%kXf#`3w)oTfp!V^LO~~upiy2_l$O4%E%Y=GxAl&@RFVeFK2js zAA`f!Q$pn$)?Z-C%M8~{`9y}Nn!m$;hxG^_8}{1{to&Ld-i{29UuE!43@=z{@C=5h znLLx>*(NVwct&G$-Nf*+V}|}Bh9{c5nBgTy4f#@rXB;tj8N-tg8(jWoN|ka>J7I8* z;hHHQV0cNXF}?&Do^~rDq&JS`&OnGKF?{VGjrNnm@E%PK-htt3i;aG!6T?6I!r$QLtwcAD8AGQ6LeuX2Vry=TbFf38|D z-75_J0fzsnrorPF{+*fM1ct90Z0Jv7IB^(yQW(C-On(Q4|N5dK--+QJOrFm0T9b@; zGa23~VDKD<&)8t_e1@0go8Jq=GsET2@HM7ArcsHuRz~|wXZW|zndQ&$r_J`3 z!|>Uro2sVRW0Yf;dajO@5Ak!;g7vwlz#%l&zSX+ z#PGqUo)m^p4)-$*&oIla6T{!XV3cP%!vki$WHS6~v){;JcvrKX-qh4z z%<%hWJ1J#&Uby@jzTNC^<-b%d{|#on2N=G@{2t>NzTcEjVEAEEe-gt-nfXm&_ztr@ zbYS@R;eLkUGt7EPXE-;+Xb+hTKWggFVR${a@xA0TyuDe@g$!S0##_wro=+O>p_Ji2 znBPS?!{IR_Uitf~_cY5hh2gW!csnqBpqc(` zh8HdQGBl3oFg$mm!E+g&VagXVJb8{GU(l&)IV8{T6w+VF@|s_VcoD-B8yLKp;kj)M zUc&HHQ-3MTP5osI@7VnFP`u>~Pcu3EwQBk^OfEA#+vIT!*Pj0-q(AWyJc;3D&l&P* z3{U>r;OPw4zA$($!*l;&@PfZpO@HDDgBLQqsGq@07@pz!Qz-qV3@>pSyo}+&-i99d z$HU{586J)|$nbEyaSRW~8_)1?yosHw#tRijdXgBPdfniu3=hZKf#KnJJ2E`?vY{uf z%fsVMXLvZ?Y=(#9&0%;r-du)<0Lk#%>hHGixhx8OO zyyypm7c)G~v_n@#;48Gib(k^W8$|Fc;RX$+rc zj(6z{?`q0tF#HoUJ(&!5yl>Ih~Zgg`imL< zl$p*FhHo_EEoJzNrhFO0TWmDaU(WDNW_qA&)podMtC3Eb;Wo400}KzEzr%lr?Go2p z8+zgx`HbHf<6u0)wGRxQ!0^nUe=s;LLMRc$|y{nlu2GQ+dYd}$0%GxY=*o;TabSCHXhJ#j2I^~5v0 z{jUr?2@DVGNo06|sV9x$+2-%?-{E#%9Bu6PxkLJ8hC{?ZLR@2bf#2Y94DT3a@OXx&n)1mE4{C;dD#Ndu^_9+WsBOsS zvpm+|1q@GJVYHtjmd6|Nr3~-b+~8#lPitiGK#!{BmfO_eL53&(#^7-bk2iTD!-FPI zVt84Kp(mB$B{R(ZGKQzlG^p`$^s3taOLiDsX8A6IYYY#b zGkAdEiF*tlWO&*!gU2yEc*EfF42OLNPhfcVU4thwJn^!@lNcThw||CbFE!*-7+z9r z@KlC_**-h4e4!!Vk>RNa4Bm<1iDo~X#_$qTKAqvggNB|AhL;>RcqYRk-2Pc^w&y~I z&y6+5Ylg>uXYdk+uQugN8UBwbWBysraDRfK2YOd+Zx!{7d7Z}ae(xH30u2B7HA7Dv z!w-)#^u#lKra6yIWcZ&=JxL7TY33`1;qx<%cvBg^+~ge@-gLE*o=yy3XUeBD{MnO+ zd?%c&Hf>Q;mbZY>yhEz{%GVknc*I@-cuMp++0U=VEFuF zM)`MS_-!+tX$;>J{_Yrl#w_O|hL?=)99n-BGko1BBi<5*xBJ-O(6?$iXJ;9DWQLzL z%SU7Q4pVXoYo-~G+j56|-&hXZK4EYR(w@ER| zKbPUz=I=s=2mjI~)Xs|-zVwEX-!g`0bTZ`286F;w0{yF&b67se@bGw)$nday62t$r z$4E~HhKJ=lGCb)yqZ~3Ao@S;$li|%r8|9hL@UVOV!@GQEq^E@8;q;U;yxu2 zJ|$-P2N|Ad{!U?d@~|I5^_9wSFnJ-vZ_YIGRm|{t*9~6E@H<}`=`3e>*Oi96Jg{o| zo4#k1bAaK+%MH6$9K+W}8}bPZPx#)@pTzJ@4UF`pFno`xrvt;gtTE&}F+94h!P6PO zuB8!g4#VTijdCt{1TSQG(3CG>_*Z9*c;!J=%Wa40?-bAQG3LH@3d2X4^RzUE$C&fI z9EM*v{WOXgzQ#OvQ_k?@Um5ih%&3~qw&s3H8pB(g{suV=A3D(}&mx9Te9z$J3~yoX zQv?TBjkmh#w~)l}dFDOs9T{#l^=C4?h3VH(!0^$gA5JO5Q%t`UZAjJhOfmD7!0>Q+ zrZRj-AEVw27#=RSQig}?Q5#w{-msojhX2mYZ#u)*htE?mJS?9$tg8NSyd4-G&R4-B zcyRc`^`tReH20fw7~b0CMGXIOtl3T&9&Z1^5f6_yiQzMr8+tl2{Jm&{XEMC2x$g!e ztLhJ@KaSzy^d~bsoc?Tvhs(K;;o)))W>$@N<9MU}#4~*Ed4nf1Jk|8KNoM%(&Gwwi z@cthe-+LOvvwv;;JL4G)&mE9y%!embO=o<ay0b zF#erGaT~?+DXvhwkm7cVmr&e6@x=Ek(`mGD<6!~CtJKZ=mGVYQFyv*58zZ>E6DV%% zlo>pc;$8!V{+~>7<3x|~u!Q1%N%Jdi>+Q!3ViU%n96pBYuJeT586fdB7G{u7- zR>oV6;&Bv@p?EySt5ZCI;x#CqMDZZS(QG$! zbtSJ$@c_jiqj(0z<0zh=TB)ZV#S1B3pW-DHZ$R-Aq~BKRZ%FY}ia$Z~k1OS$ zq`M2fehcoM~pe=)~+829H&JfMl;RyJ{yU0yqWEVNPpA0rDV{;`4iwL! z_#Y^qOL4;^*LYY+@jp`Xr4;{y;^h=KJdn+Y-&NM*SCqU)@jp>KNb!yokE8h46pyF) zHx%zk@jp|%6UD!!crnGlqj(9$|3dLniW{Dp#=|m-ccSFWDgIZA%YUgXpTAK&Kykw} z$9R}Tal_NY;K>v>EN=!+p}1iIGk7Y+4U2)nJ5W5$K%xJ4qJfGsdDPBPFbcz>Jybr~TDBhRi#T4&H@luNSr+68~2T;76;sYrT z-&fZAAd1Tr&!D(Q@xc@iP<#l*<0(Fr;>n#W;~hrv6pCk3yd%ZOQ@j(!Cr~_%;u9%e zK=EZ1FQoWpiWgCQE5%DGzK7yv6yHbja*7vI9J*AN!;ch~DSnXR8pRJ$JV5co6c19o zgyL}&KTh#@ikDJ6k>cePPons3iYHV24#hiCTp^VY(kNbw;^h>tO>y|4vfS!WT&8$k zifd_=@{dux1I6PgoY?4#amE3k>UvyPoj8Bil$$wPOobUDBg;aFQj;DiWgD54aJKo{uISaDBhOhr4)af;$;+1qIdHRqi?WO7RqmFQa%W#g|jO1I1TRyd%X|QoIwzS5Z8T;sq2>r}%1$XHa|%#WN|s zmg3nIUq|sAim#`5F2y%cJfGqlDPBPFLW&nsd=tfsC{E9Ziz&W^k}sinm3cD7w^8zC z6yHwqa*FSuIP|V;|3ws+DZZ298pU@}JV5c?6c18-FU8|1PS5A#DZZbQPoQ`)#SR!6hBDu6pGXH|5S?8^ZyPMKSJs0Nb#c-??mwuil}D1L&H z&!qTCif2>&6vcBWewyOB6hA}pe2UZSmja5PrQ{1KevaZr6hBY#Vv1j&cnQTXQoNMn zmndFF@yir1r+68~A-%HwU!k~6@v9WqD1MFN0g7Lzc#z^ZC>}@gn-q_y_$`VjP`sSt zi4^~d;z<<0P4Q%k-=TO4#qUx)mE!j(-htxxDc+Id6%_A8aeAXPjpBqNt5H0K;xQCYrFeCUcc6F;ig%=Vkm8*vUX$W!6sPSo=@gHpvi%sQ}Qt;$1IhKN4|r)YB*a!EA0*P60HmQ6ZYpINlPUu{{*ifu4ZxK!m+q zopcc<@pZb3aD}gPUw{$90Ic{)V)7l4ToWHCsnE;MuRa5@j{&@-{)W8!;1Q;!9;p?f z&LR+}P9xB)0YIwQi@@(*1DH=@j}WqtN=>N#yovGv9)2ax<>4cFBoDv4ijAfsD~3cU zatEj{zXXkw0lE=+h+ZU>QR#Ir%W{3turY?xWK&y0#FGHeTi+$WsuZlqdXBVvMjkG} z8{%F8Qsor_bST4|6?5Wk0T%IcKLJ+q*qqMr@^}F*^IZTg3gUHv3=rk9A{kEQy@I$C zyZ1_apH8PzCDg4K#H3C-9v7Exh_7zz8BwC1f0xU`(&8k^DDkiLa)}JqV%JL@e?neMpsjq2U?Hr=nv`=0q!Dovfw@FnM#uv462N^T_Txx*>MIVFw?$k^;2A6* zc)1QhM|li^POkv0Bk~?Xwo)lD%gLfP0B;oh?7P77tfsyU^%70FXKRip_$k}Z60(|V zaC*60NHF^#I}L6J;I;D@ioK0b-rSkyFHlU?CS>%#k9aEU2DP zPdmOJl$LSO-nNVIbBHpN!x(bj(4xwBRK^`cO{sP_a;JDJrhUpzoY~wkYPCf+~ zz-fCq7|XTRKOwo4BPB*ELYhNyRjaPevOvCIn_+=9!gf@hVeuiEV!>voe=C02E&~41 zZi{eFlm|$pC)MNYG7U*wP(C8U0bX4r!fAdU)^Vn&A=xCV#Ud#e#hwzmSNUn0dZ!Bj z(*+Gb^n-#}Dv%PPvM12>wj)mgHq2JqOdfvF`tvY|XcKstOtf1ZoF&?E4t@%eJWiX+ z!)mTJz$tD3xy_TS`~y{3o({l%wvGQ72XEvUWvurz4NJ&Y9Go~U#|9Gx1;eui-y$32 zi?%CP$hNBeY%tHNA~|Sv;nVw8v8Rm;wW$+rB-{3K_=`dPfw!kiD;4Nv)s`!8&RRt9 z$5JH_D&HhX1W2?V5aGp@ST4Oe*M98GIp;bN3b`aKZN46YBfRaP2&FuBS8!Ia-W6et z7=dJ=sA71H_^XhvYJYv~9*?hSm}v6^xJde8Hp_W+ ztN=ZQngCOU$c+M7RkeI8Nc89Sl>+?5KS6;0q&vt3MzUdAGE#-qQOBd>w}zjk%RLbevYBMzhnDd zW!^9iRes~R3wJGmf84|EFhW*uDlkdDfjQ2!tF!H7iv2<34V7hQ(y9G&Zg2pO^T8t# zP%1EfIiMwFnrtj%(4g==CUn{fZeW|6C+@q+cr7^w!7u7 z5wP4V9S=adPdya@bNsK52tb7&hXmLcux*VbcLUOfNHQr>#c*z9t#A{6NS<*1h#w;0 zA7zz_eM^6`LWPN9wJ9pBl^pBraKQ3OFBNuJ)$4XRWL2-);j9(M0?4vQ;R_4x?E!At z+b&kgLKR2C2kqn|lJbWCqy;iLbrW_%oO0BHtpUGo*e80{S>Tu?Bk5yN=gN?235=0p zo<+N6fvpzhfQ6i~*otM+UzSJ6WV|d-m&rU?L$XG$M#aI_2lE@}urMD}I-jeZWrK5k zbRQdjMRRfTjpcy-;a4iQ@=3(Kn7~p};}{_a=ppeTWyR>%zl|#G;UT}-Z-@O&e@hjl zT@T_PY=_b0EY?VOJ{iN=LdAf@xMORI;knA+ zLmz2HRvIDyz|jjA6Qprh7p&zPt<&H-SAefAklYv^Vtr+n25C06%!yNb>tZL|w7HRN zR@8wSoKmbPbItBP;)IQ=if;19RbA%1dK`6bb6Sg?BtgLD-+VU;&o@0?s;B#KE&K#;=!s1%5Vq7rK(zrdVJPSL2KX*SOW8)J5EpV2kus zSniKc{UqT)IRmxq;#CYE<@aHDp%jPV!xAncLi!@U%pfZyxJT}ylApvl3{Q}n>CbR| z^fFAwac{CHXQ?ntRPt0FXeuRkeqM+*Q5doQ2|S1}88NCy0t;Oc@!6sTwF~m#r{PSg&(2roajlC2^D$iX;)k zd!;32{=BH-$D8~tfdYz#Noo1FF6z>KLF{hmyq#aXucjN zwuOe6k#@>knp*KNvMYL9kBtw!eN@RrO z!pGMn{~!yS2Yn8Jt>Y`}F&@6ZkA-g5e?O8h;V7Wj|8+4A!(+_)pUji7JdDBNZ;ap{ zn*cpUe_0F25^-7#-7K!m1UO^y4^4o3mQ;YlvcF#f47B=l65yiMwYLSVvPl?TZ^Jp% zQCm-f;coU?a>RQ_Z)~Q~6^|tE8w{jg`e7er@H8xMD=U#J|@A8*7hwHw&GZJ98 z-*d1TT!`=#HiLtKz%pz+kx^OAU~iO$;Zf1PTTS6Wv~PD)I2faoLDeHLt&3{t;j$WD z4EG4`z})VxC1BAFEzZfc~{TW17Of+A6*@tWJ#|o4}O1 zYEcuo5$9Xq1p3zd1c%6a^;R^25%qCe2@4ccnrTmZF(*Y&#$`2u!SOmD7vB;G^mrF0sWjepxiO4tn+L97SG|twS{`F1zD6}zmz~0v`j#Jp=D(g{CR&{L6p|pNM8=p zIlo@dxCVB;seTQq*nYoNdK2=)gSRWPYLciArEvs4eji{tk-Bl%hbngoxlX9hHl#yq zC_V#?kv^}yM_zxR!gy9!eHNPFvlo>2$s5eGM}9lFHvgsf9{H>uiCsnhS|~yD65y=+OdqyNjtIS#cU7O4=y{Fq10LSe*&Zi(zOCia0o`1p4@+iB^L%C`D zX>NbG?dMUpoQLUpq%8;Qzi|M~AIb6{0^f)@zT^=xpO8hAMaO7En%&bJYTyUmQhS}e zNay!|$xaiiwu5+VL(eLVO$5u~|Ms(Z@p)*5X?aokki13b71L5*OoS)#*)z&JTh3(MUQ2YjUsVfK> zLK;;WYaeO<`Pb}KjYtEpJd1-j<(?dTEKcL#Z}K1x3W$h(>mtsz2@M^bmd%qJT-ErU zfaa+#G8%Y$5i}s`dH<(uPqKnVtUZJBkF-O5MBe>UKF#AiR4(Ju@*__X(268x3ve_< zE)sbw59>JjBoEs;UGfkoquuUwh+OC7**x?W0#?J`^ZF~>r_SkkFZKqNjx-)c> zTqk(-w^&koJR#fAzi(T?xk;@$6589I6kp<-;!yCCbuuAuzA%HpY!Y2WNTD%rC!y%f zIB_msWiImH-~TNS#*Xpd_EFWY^WXCL|8{xUoY7TmRsa3{-|~1cX5;wx-}dm|_VE9g z_E15bfa{IMJ8)|j4OJogfNsOb&0GAVpwVCs>7>s+aa{=S0=)Ys&Oc`m{qZ(Vsocdg zr;MTfeE0(3i+ApE=tQ9}#E)~47*6Arp*-nVxebLnpCZj;r6UBMl5j=v0`3pPn_@2x z<5kxZ$i3Cb;g30*tw>>kRrk3`g;kM8)70-K>QFRb(~8 zUG|a4M-q32fP1a8F}#m+b{B9%5nT(=Eki@zONf{vkg@E(Tl){Z$L(lk_Z+sPeOoHF zLoeR58@GZ4$1OW-6^4+zb{H(Va2sX5?AwW=atT@}bL{$S%k4{0Kc=CAe1j${-E5_G z^}#?+`^gKlcn5|L@u#>mUf3snc*+YWEyX9uwKt91E4GY3`PweO#Fw(mY3+$l3ki!Q9qHNo$!;&c5i0W`G%62XWu2*y4uMQ() zUdN}UF?})StJQ52YLOW=?8|D9BQ?AjzFOlcY>Yu^agZDe>JM)P?aOMC?ls>=+h$E^ zS}oG8mX7<^s!8Rs0i>csPA%LF9YvfQL^Q2qK6j9qp(1n_Ji|rkA*$1{F^jlyqPK;K zB-F8Gk|G~0=3|a|p@O&N`k;>xInjsv+lkmS37!HUOcf(`cyTwVF@{e{5j(wbN5ZY@ zp_Y~iZdjyYKIkh4dih|J9DNj9gEi(n?*3Y9<2PV+o$$g9Ykl+-vpG?2x6O;H`Y2vh zGG7Uf^1^OqJ?@BPy0md#DEDZ4QI}Vp=fz??g=K^Fl*5sU`aS`+W)j?2A9DB?E;c}K z0snypFh@L!e1OHjzX9Z1)CG^jIZJSBeHdr;??o9~a8G^MZ4b_?54%)fW&`Nz^bBhN zlQqw|`mk8jyP?T$&k_u~=V4u*^~Elz4`=-^jBWsV0Z&eSSQ{yBuLp&ZH&Aj#bhV0l zXgj}+wY$5ze_lPfUR^~pv4*#MJs45bgW>5l(UIp`&A^Q~xDo5U7zcf7e~Py7+Mbd) zNUIZSf^~hE%CmJ{nEDZqxiH;pA9G<^e|pS|@ePU7x;_q*L8%#z$bzTFqx!xg6($oev4Cgk`yA`v?$9k;^*mwSA068t-mWs1bfQj5y z6c{EnE)`&d&;m*xYUwja_YPq`mTCC_X>43j-G{m|9wL5IjGHqU533{gD& zuy3(@`uO1|)pOeiy_{au^P|&K?t@dB7xnaV1#bFaoC|%buy=~s?}KCRddvOL*Q0yc zjr4j^f3DYynm2j9sPnkji`woW_rV}vES9w|7RC4a^qRu7)=G@|k%!&HeTj$BoLtOf zC8pt{iM)3ik6vx)0Tz-ENo(9P0dh{aO z?p05C$w4pn?LT?#eSP88GCN;y_YldX4U*eQE4d`{L@TH&_bF_dPb#g%fstHVL@O@KL)Z)gncmHi0L%Q)SHO*YTX zYOq|Xv8WpCw|kJEv!6r0$5Cq~ezy+20;Xy)lVf15R)*TC-13I3D+@1{)*PebKNd;*S8U0+DB<;Z8sY10p>ro*k*7cy44Jbmxh*ZH$Ji zkt!;$h{U1l$Eax3Ju=#hDViVc#_+gmUyiFm`o**Z*cxN+TAd85{vCooHKM700q1zn zzu@m>(d)QOuVZvs!tH!@nFZEKfgB4Qk+h)}xF#uS7ShKe@3W8*7TZJ%nQ4(1TF6R^ zhGe^iD&~iL4``dW$-hNcz*nISwzFjG2jo-vTk=KaTR(3by5G_u?BxbYD#kxfdI!@o z#uBm2LgrJkVV%0?68l66mXT^bCD>1nV){ehcidNr{qegcgYZjRAymikI#E4`AAz_Q zt74ek3dwdEmm>N+_xaQ0Ep$X!${j)JOv#TE#5vM1td%vEFYlu(hr9;)6-7gt?sg5y zaJzQG4pZ#k0*q2^=$bG|tzB8HMqAsC?`-F-XGGY~=b3Fy_qEWcoF#mng;vNCoYSl@ zL)e6gz9##&Ss~qu8~u8kbYG@{hzAPtam>FUZnj`oq$lH)MZIkySE*76<<|xGE$AL= z5l7pgyFB+nd=KX#{l+f5?}7!E2;v?KtQ7K4|7DBXLne2t>JQ2H#PswO@DKnAeOOfkpiov(-@v2 zt2qj+mBsA}PRsS>z%E-W{Ut>$RLBMeo3SyP8D%pB(=tSmFI!->AoiAV#GZxmT(ziO zWl~`YhJ_!LFO0dDApdB=g^9Svg3Um$ z*TWX|s)d~Ue|b6X#l_*8O1m-KO?M}QAu@Uk{JbwXB#=D?(m3n|b&E*8nuIK9Uo(ZHMj9^7r<#Z;_)To0EvRQJ3G zHyWy|-a{`BEU$@AsFyML()ry`z{P=bOH6=Z>*-LK)+_L)9=E$ zW@^#9Ftxe5I|cSMS68IKwdQpuy$knRsJ-8T83|rY^2G#S#=Fq1rM@Jc+1g+6HcV&} zkNi*@2lDYxMPPWq)4mID!^Ee*#4a|m(Z07~Si4BX^V)f_EXK5VZ+RQ;wfACf_dfIO zjJILSbL!f+p~v&;$+uzj^Xjd)Vd?YLF~y5taG_*Yl9u;A%ufv$4YRf4 z4IdWN-Zy+$Q0LyjA#c!|8Wz;}H?fG)-_kWsc*~0^TM-KHdrL*_>2F`+W`9I(zMF-m zHu$}C{l};eYT?5C0~LdXALt+JxR3Pk%#UKL^bx;g|9O!-U0>QNkWT{J1^(|o^eraV zg#v$wc<}dX&M{vkJ2_>8Kt}N038I~XG+QM51s6V;FGlVXt9VUSWOXJT>q^6A@=0`| z%x@)HH<=&9VK>iD<{bAdd=K7%d=_xcV!NyyI*Y~c7B`^{mpM1~z)Z){Eb1a+hgCj`B1@3zDtzhl86R3GnRznMu!$mkM( z1t)!*WuT7Zf;tIJ9U*;3EpfqD}x@83M{g!TAK z=b9eo!=l^%?CPh+S*V!r(c1B#WrWT`J@lP_*1zR{(eDC%9R5fD3Oz56JOhN!EMhIt zN4v-6Hl!(?&ws*y0&Ta^9udz$1WK@q%ZZ3?$2&L?4?pbT(0zwmYd-vp5BjP!l>Y?H z&lfbhw&Jo_w{fFMi>9F1=WKC`dfsn7uf9S)Y`z>PE_oam9%|CC# zR;s5-_r2Cz>~KD5G%g{emu{-C5x6u{Vrk1NP)26Qg`q&-URXAbq zM)1KY6$`efLmj4jeO5ZGRAl{ue2gcmaAw8(ZaZMKl!ObE`8bPnK!F8|6VLQT?{~mf zn|jv)2k^WNz!JM-w*v;MPat2eHphvLsz0nyo%n4z^x#-WQ+#&Hp#jlss z|IKqQ8ce~gP2si0=q|(SHp2?yf4BW$9_?!dn3V%u9Sq;+@QGf=jYz{^$4nG(rrv&< z0HZkF@`1RJ)#v+hMutswq3p>=8-!f_tRF^M(X@EU>e(LwU2SoA$j0V6 z76D6btXDs#`7?os9n*TL574L>G^R0&W+yJ(B1m;9%1=bI1=fj(Eu_; z#h&*=vA?P!3OCQU7y}I z0G)&JkNdI&i-eeM63#XMitAU=hi7z;iTWh#s-*R`kZzUJWGtK4;0Zj+rswq7|IJ7^ z2uB6fH*Y>QM89Ewyid^WOAxcwa9aAl^i&iqHazd7prAh0Pe*)cXolS+MXR4ekQjAIdqMVZcYtZgz(IA8FS+!;ioAU+4^Fzea05^!(I$t}{&f)Kl6S7JYgR zlR3SE^K@s}`IYBnXV}nD+ua$4d_98O-Whs*t8MBGJ-_p;>kJpZbLMr1^1nDSM>(DR zGdjcCPEL$wS0|i*F8ix&8H~-|$FyU{%#pTQ2weg){@87k%|A13}ABd6Y?fFIW z><7|r9-E`GoQExF(SS2Vp3cK%Jp9SSUE;)t{W#pkDCE?YJe=VY5zOM{MLb!}*C^#l zNtJ!h=SW+40eztx;D=Tqv|B7eFH!9(!8p;1pK50>r^&R=+lhQdG`6BXyjn5|9 zP8**~@RSi2xPoLl?_X=>WB@ zi-a_%=Y9b8Ywo)NIIFG3Z+eE$dN=^{eYgn?=>a#&j0tE*B4JKITNVkEBh?{Mg|joo1&;WA`#_Rm=66M#|<$K!()we9KZAo&zH8s9un;{yu4e1 z(LC-uz+NF1!6&!d~!3j}3>EstmPv&X-7|Q_;e_XXiqEMdl9insg7<_Gt zsv^m8IPmEWr>(0-#%hk4F0x3o4tJ4NnhOs*RVw#arz4qVT%^%|1{im`MW+1Lp=UVZK01> zU6u$(y#A85knZ>IY72)Vw9Rc{Mx=j5TbLE)MQs&P{@k|EuUf?Twy>buW-|6^xKur6 z+EZ}0hKk`kHN2>LZP3^ADd=0%ccKjpt`)Po4UCOlu8SV2?Zw!J)zw8;)KwR@h0S$U zjA4IW-?v5Ev+{WE2+4?e_v}@-9Vhy z8cG`IPp>xcVrqvzUgvNtnAlLvYXz$tsc_a#vGr`BQMb=?V;wZ>}A02|JprKemLU%~h1lXrbb(^IF8+Y6;g` z=ww`ip7=Qldg50m=!xH*fTq{ME%g$d)KX8=yp~=}<(8HzDn8ZnzPO+rIq~!-IE_eD zF}OPsx6a15(}T0xJ!n08UE><^k>^wNXH5Z`DlfsS+V99ml`lSe9sRG~DS~nQJL`Lh z0f@0Sf~MLlBIj;`vtqhM5M2mnbJ0Z{DSX%+760)$49x$3 zaz}{1ru+=xGYMVPz8H*65X-!R1Y0P0ZAW|TF4Bl+D2In%92Epl)T($q=N>_uB+5iU z8j7cJF1$b@k5h3*yOPtVE&4NbPrzpbI1gSwv5Rx!e!&FZgN|(r_=UQJDU*&e>6{DK z>qj^jdc4i!UE2j*CZ2d8BfF#q5P^$q-G1_Ey_jnr+)GmScwh{tVfeh@N%z1lo98Dt zOjK-J-TL+%l0j-+d|Ie#D0xd&@aZ^*cEycnK(&oHS~~Ru=;f{mow&6j9$4scZ}*Um zp7sxB$D#b`7KVYuUVwfD#6OA0b>(DyQO{r9ko%Q-UW9aFABJ0|WIlEl8$}Jn2Slwx zgtKCjnNJ_Q2Jo7)k;e($I_@A3>v^=)7TLtGwC;?DD+YGW6Q;UPhgIKG^vY`&(}h^H6pkQFqGdsnKYy3={Aivy3L0 z<@&7Y7xKvF`{%k}04x;zqvkr`9OoYFz=@WlJDSXR?V5@!{Z~p<*n(GYU|3L#RJ4VZ zW4T?jx{=Scxsk81^+xjZd{mGZOxucbNr3{+eL=w^UfLN2`tvpL0)X{=qdnLO@;5O4 z^O9|W0ym`l*a=>!+X47MnUk6CR$y0AR-@FJVOGdIDm zpx|WHw$ueh4xJx#=pK(J7E9=+?Q7Xy`0BhCO59ok8(DaU<`h$G*Y^TM=v} zb#~#MX5tM|EMb&pE0NosD&phN%HU{9fL){vH-cEh;bVzet3qY33aU}rLU3jw) zIyyGOr)~;+}v+(Rb!c9CeOpFx}}s z>qIMq?w=Soq=d>>?`xNm$CiqCIn_m~e4n?yjmt@+ydTz&v;CR=o4y0*XLX{_;f7#j zLx?<2#DVELMmA84!tg>-+a{9rm5$bW9arEjc)DlBX=2N8<7n$nb7QaTFLU9wGFl1x zg>c#~7aC~i5nP*|5>}v%dZOcx7#`ppgPKGA7M+KGIlV8EHgQr93wrOndRh3Roaem6 zkK$j!@HWA5(LxRj%6*Asi?ax#J{IYWg$%N|@WDk(WPh1iieq|o-)G$it(^SfyaLC# zPH48}gTwF!96{-2hwH*UY+YBZ?$bD7wQ0w2!fMmq@Kz`q%Ir`yl)0p6X?8Nw-gu{- zY^uBt2+Jx0YfrykOg(0UZd|k7HXL(tunLu94B%x^_{Wo`phJ@005)1Y_igZ_W$7d8 z`)75>u8Hw%JKn{E&PJSu4&HbM0&md;Vfkpq|61Dw7YPBM{p-_zT(6TSiX#)Wr&btkv5u62gC5sYOsv2GA>_#0-{ z$Nyvf-gl%Uo=4EnB=jMDHCQDmg-+Ne+Do12H|81Tgzb`o;X9J!ssk2SlrlZ_TW?S{ASF8^FN4{s+l<7`1_@BX?jBzSGG&0TkEKVn!5f~hx*~aVE%m>x|%X$50 z`k;TNE&O8Lv;C9aAL&j#yE$#Fg#Mb!J=`SWv#|>1Nb*XFEUI+=)awfEf~~RQaN~sB zBWGni%A(UKnCBw2ry$Sx|! zp>L1=)+)%yUr84g_^Z3C9S02QC{8R%?$M^cr9Td}!QT8A zlLWZIN8;AeKmkqUCdXMfdgb!s6#-WB#&S}ZuX<+;uJ0{U4Cv01_$&e*M^^+1?>lS! z48V6PPNBLH?CUTc^++9Psox2*3-5qjgBk0`X)E*_7gg*R3pm?Wj%?;0n2YsuW!0)% zF`~e~@KC(T(@4)R-Lczn zfMu->_F1*nHn?tm8N;jeJ>XCt8%-uz9Nw{qp1u0-dZ{tp&_|Sbdf0L5S3S)Rqxd2b ze{@x}`wEO#KEm)_1v78RM>O3e;Xdqmt9uY?wZ4Yo0mj|F`dz#ay^rO8)7I9A)Ynv; zDYUbqrT!&6n=y>2lL&4LqtR?7(Mkx}PGWx|?1? zLlD;qWUf%@gstCQ@<00ZVEhm6`NjJs!_nQ=&o|b^(TK>nvOhv__%QPJuiS_GpWNrG zf2VluE|2#L<3OG&*X2in@dNKlX>R13Fp# zQT-cqLT3W3CvOe?G;O@J1-k?*I@7$VpJp)1&-o(6VvqTX{PR1Ey#L-ahu8UcywGPL zA-$^hG5y1}&idug=T)>YTjb}C+-U7MQrY{t(Dr#3d8Dwv;#!i-2E;x*SUy0j-hmz5C28$fa z7SHIykNEzNf(;KEoD}q_ai(nBfER$u({KT@NwpnR$!?Wyv(!5a?D$R(e5cf6+hj*y zcwN_4yX}ab?4x4-_u@et?8j;kE1r}@&s8`~#0(j-Idy@I{tCJYv#X$9lyN?wPwn(Lq@`6R1C*u(XZ7jYk+h)n+M_D-|lc`pDk(JD;oN{4V;5y@F zZJPtn0eeX2DVlVg>P#n@#I7@9>kcF6@Us-hJzRtF zNe|>mG)~1bte#R!}!8xWEKR_8fvMdt+H))tT>c^9<6-D+?57BF3Q3~qtOo!OY) zlQx|XRJ>hVz%9jv;X$fvU30jrM&&h!bB;evY7WCRUq*8@9pbrsnCo_TYYu1J-phF7 zqBrVjGq~!D-P#O#Mfj&RgYJ>OQO)39q!%@ukMfRf3R|MJ`%U0%jC!;wtgT*WXH)1^ z!@ssEjH&Sl^zR9Jdo_g#HGLED%Ens0)lH#WtQQ5dVk1y+aqKYRRujmrZ#&rpme$8! z>qLFut|oXU)VsI|WIe9p!<@&}pPHb1zM9!ocg#n==833KvEG3`1G*Vy(S)EXczkZ8BMKE?b=dGm(z}jC zoU=P44?D?T`Xl&RThQ&{#*v%P_Bx?ln1Y(eN;%|)6BD7YFV@;UyPa^_9y!|y6?WZ9 zbIYOO(>_k^v=g$N+I}a@ban{kxris5`NosUxTmm>buDcJxxD>q8(cf!hS{EkMu%r< zYuM-f8-|CvqK37G*)FscO>uiLzI^xVxJiOW)2CpZ$A-@;JQ~I~$U6s9yu#=0-3F%n zJ>y!#a{p)eAx1cFwSv5e(fDvnK-FK0^klb&yht1Z?nb(QY6SzMKE#Nl4)HmyVPMc! z*b1%(#e!CFCm4zGkE&_Ma9%C-NNc!N%ZJ(r#%fnv{~z|g0!)f4UHdy#UDef9eX6Ug zx_jIOXCQ&#k`Tf`HUwfDmz!iQxx1UYlFeps7PrA226tv~3-0c2!C`{COPK#XJ!FIc zNj7``fA9Y+&olH_$LrM5Pu`D4rdSA>nPMT=suXK-O}d==;^>+*Ha*m~CUg&AlS{+O z1V-1Ob7dm8)Sy9S1IudA%ChMbYtY@Ye?a)z@{uEJ(6$PJ;WcPx#q^;y=&OqT(9BC2 z&cGTpxsoRzD5sV9!RmCRlBm6F<-qppbfvO>ygC#NgzR?H<0AI>;~Z_c`FIxz(OsX2 zU0j_yRr61%PPeP607`9HT`WQeYa~pr&FG1w^L;yvsXuJs`M3OG2Tx@6ggv^L}a3~T9Il$UXa4S$=qRKAI%Yafry zdW+Uq4Q_aoMpO^3ev|U5ry<+G8r|5Yw`piSKK2coUym<;gL>DWsUWETGha-8gT86R zL3hd&hpoAd^&W4~^2S)S&NjC1yiOCE`1id|BcByX4n509ze%^A<#>_yKjVYZ)SvM_ zZ_?!F0(j*k&*?}xx@q*@*J)8xk^W9ok-qQqBK^qcMfxevi}VYg?<{(@c>tYrt$6^s z2EGtI>vg*Rg1_tQl>cJXkay|gOTiYeQ{Kx~-aB;lWiVY-h#%v;r^JfUUXUZRWGj36`&K)a??0I=R220}Wm8IUD%m?{07i zT78FX=w<~W8lLWIegUS`$`uT;8@koqp$-NvxRmP+t#%;W;zE3ES+LA*=eLFjAbyBP znvMPdO1|h%L*D*&4CtA5Fw3E}wvbFdVE-0(^0Xg`-74~+8y~1M^F8G~=pHTZ3lD9> zqv9TNFMre>{~yxBd0795wt?O7ARQgty$m&p{Hft@UV<*v6%lE8HHw6iYZyyj=Rc=J z{sL71H|hP9@7^oI_c8upA21^BVRuB-Q^G$?GH*l~xJx$W@3S|Goy+q9f(aE`p+@UJ z%b`SpfjU$&Pje`Qh*flw>_5qYCnG{m$@QVH=@R5@7x-Ye!(>MV6yYh92%bdcM_Km!(;uY>e^IgWfN7fE6TciGx_(%DMp_|Q>Hibz}S8;^W*s}i|H=G zOINrT3#u(%_u7Bh7mU!e`RD7&JV|s(`x<*8J#LsmOPDd*pgxkIvt7mz1BaY$5*|jl zIi!OfJiLVgjS6czEZTJoN%!g&V$bLnlHSpqVSXFhK7(yHidK&Bck@4bo($ch5rDMvMCdjTI~0)L=~$AEX5*&gd_FCFlh*!Y+n;0{esKQ$ae-7#>l?}RIR&{^Bf8TR)+17WyWAX3wl|a-HhDH$FdP&_^p&^?(P;@iszEY34VuJ@cshJhawhfo`Ge z6Li*JSI6jVNYQHuoWB>60?1NzCF;M;ILOsf6!P7Y_%;t%TpYH7Q)E8TgZDFFv^G`I z5!*rQ!H_iDVZu!|BG`f)rl_W0pZ$m-&! z?kb-GZ7=nSL2!Ab@gaUFx^kr4r-?1Cr4c%2(H=uTXaNDn+HApsThO<>PJauF!kfJ; z$~7UCrcJ&8N;~1RQ1UHb04cLAy{*k=TYRm>wpsC@FIqVNclV3n@qRuVMn!(uXXg1i z0xtP+$h~)%`0m~ZY(+@6g;Bs*7Ch-dBQ5cmLoHlJK6IB|7U*q?z0{$pZob^XF^eP3 zHn-q}T=xVQJJ=xnPz@Yu=%71!tw|28^Kzs=?G0VF;S7i4GMvXn?3bps50_z6g!J?| zOKiN;3-fK7YY9f)L4N>s-SAtex04+}IV0@=(l58`(2di`$MRf3m!{0bGCbEujJY3p|-MT zln1KI0JEU2E>ABHocBc|_OS9Ntb%vcK@5ooY8-pYcr6WyHftQ{ZT&skMh_e2!F_Rg zm|X8El0g3p)XluULcKuI5BEQp*ms4VSS$2PE9QeWYYT}VhV?Nvc3`7Q93iu$t%&X5 zf}tdJae)_k(v{jxf!EezeEt7qzpNUELj>Gt0upsKJA)B4!zGRtdtBBkp*{znvjQXT zOD}Z<&@Eli0yDknM^CPoW_j*1q?}CXX^=6E_cp`@!pmE8cDtB} z=>gvt?|J`PfB$m{-N)j(LPvzIkU*YYt(eC(+<}eN8UPe*gwN6}gq+g!z8==fqjvYO z4nIv-NZ7p;+}l6dqQX8-%#Ss)7rN@#WD6nfT%FL6?y9vDnl)0WlsfF4k1Zvx2N zqFEqxl44TS1uiPn3Yl|V7RZe*|8W;U>Wa2sd>`Qx?;O7AIo9NY2RA+rkjbI4nWFY@4K90=9w4{);9H5en$EPfdL?z`T<=Hj`;m=otK zafRE=LNJXuA%)<2vV|)I_z2+0_TuPSft2u-9)Z}|Mg(H}cq0&d$s2*#zWn*KoaOOi zuZDLMc+Lg7cb8a}N|&TvVnVqhK_7Ni0oIDbK@L*Y9F>hI`cUCL;zRZhRQu4i>@1sa z;!~f+!`H6f;_!b|H9MGe!5tiJQXegOi3wRGc#Hcq;||ASW!&Y$VEjwTZkRyejE^FZVj5w2a6Ca9<(Pt z;9K3le%$|D;#-QogZ>8ooX#*AmYnN2{Xjwuby=6Q!B6{LCorZ~Xup{ab#VPRUH#Bh zu&!Bvvli!zF=jM!b@N3d*JWQca_zFBk?W>4hK;q^P`gAw{BQZj4O!7TxC4HN!((xW zD-v`|C3clggO%73Ko3zvxWS!MJx6fV&}_tht*cjb*!&m1HSm@h)Y=Jf@Axz4q=3C* zfL%65`Tfmgpg$X6j_q;B=BCgsk99GbM(GAPPm}c-m_J8-v8_{q>l%$*(;W-+HD{%? zC54toRG$Y2wvjLPO{Tliai@}KQA{bYzgoun5V9^o2R$cI(0h|iq;H$dzfNU$lJ#{d ztX&Ei-Sblfxga$O!3R`Yl__JV4w5v+0g23Xy%3 z7I>jP?#>b(MtUq5w|Cd8ZPMAQqF2Y9hTpC*bFsoW7c?_?OBaBDco*R{-a<&e486u& zmp0D@%eZ2V2=kSuFnysL2Ro-HCWhQ7A5-7OkEp=cHP^Pw! z{FDk;qb$puacdyg6wRO?wAMXxzKDHam^jU6&Qu**E^W{e+vN8KL8C)? z?~;d3s@8rF-Bbm5=zLEE(j4-9uwG}&i}j3{$Kt%U0_Ch=#uPVJQgJ1lBL_flkg?oB zO$KCF*Fh9>R*eQd-R)WKX7h``%m0@7RF!2sYi-0QWX>=ZDB9K}l}1WC@Wwaf-V!3Z zs@8NB(;>O58zvql#=?BYX261oPl*Hr)w~cvmt`k6LIA=|kAR$I1k*R;<|?Y-7os8@TT<3y9Z9}MJx!YcYo1$yLAsH|YGm#E%ybbf0|h;IRZ0T_?D zlD<-cWp3eNS?H(Uo4yJd%WL5c7^|n4*N_RCT4f4hf%*=Hz(ZuG`HWLNqIxQf0~@|_ zubhXZ73B+g>H~dpBJN=_-G{ap^*m5-{2}#2rbto;PCk^`vq}Wo6{2pDfCeq zbOh(HG+3Xvm(rkjvO`MipwLJ;tu<^UyK+(MYA)ZG~MfI`#b{dgE@j6!Ge! zZ9hQITkvmxobL8R^r_*;@-uCR&_>q|!c!&Fz&C)_Cin(7m~bZ3PSSe2;8R5d;uO4A zb^`LAtigJ*v#gzl(Yvgjl!2+N?Q{Xq6mt2~E+tE07hFlj`ZJ$B7^e|q`QiG^KT#Ho z`@~O_BmY0dYY_K^72?z_n|<84v+B#-IEVXYx^Z*$4Rq6bRXHf`3qQkk)NM_6vrTS* zZ3Bv18K<$9T5-Mbd@P^$ifRG49$|nt%Vkaump43I9+38WDs!-bVofWJ!v}P7Wb>LE z$cKLfU(@9uqd||=*I%Rgim#(a>y+yvZTL>}|D=r;R%7TqNipYONF&u1Z2|trt3e=T z{pSl%bYPJO8QWD%J3Ji!d~gh-4-h|#MeY=KD#h1+_@}O8|B9Z60@YvCc8q;d82N+B zZftjC^ahTbomnhc&f`jy9mSky>`&-bl--i4-2~E8Vd+1x?ceuqKPmpFy}R8o_-A?@ zeBaOXEXGHrU0$i&C_zHD0oOMXf@(^y$BV?S~#<|_n8>CFJypg*SQLCYIVq`|@LGV2pAlmJY;N{o?6D z3?CRv-^2(m)4+IrLOdH4U)XT5XFYTepTHP|5aPzMOj4)E!{#=$4&}kZa%TdpXveeF z2{;S+cEHPwH?SrS4n>~Et9auP+=@5AI>Vjr3A9^mKHbguAqjK_s<8=_Z{oa@?F&pu zpvk_r*yd(fp`r1>+Dbv`{e#YF_?Zduy>Zk&(z=sC10wl_INB8x92ifn;*`zt)ILtQ zO36>)y%SmI#QWZ**na*pfH|LsUl9!pN(*Lea)JHthd<@5jDsF1DZm0BDyI5=Nx=d& zSvD5QY=`U}>SBlGM(||h($~1ym#&O+F1YC_QBT-D@Eu@nCIVvzj@~dTF0nKW$$nB< zd_ze;EU|SZ&UKugB6>=NKqB+ov)I4jIL^Mo*k$NO5q+LG_ay+2CQf*X+RKS8UjlbO zasP`@0#Drh0!>#FJG_9ak$=bwuwL{ZYfhIm|KjGf#p55;9QG&v8_lSj;osg22JikU z&1i$y-?89Vmv?(33{l}l9 zgHGtkbJR9)C-LfY)TioWUp+^ws-k-@R(&1;-K&LGKSyJ$pZDOQbpyU1K@G(09N$ps z_Z(e)MufC#1anZj{H${21-kL9aPHEtDc|}M8`X3G7}^V767lG-S;Z!Lsl1dH;r1@z6q%`*5)~>G{deB z6IweSu{|AV9em|j6VmClgBR)(h`*LbCj!=xbh;4;!M-;b=$=j^f}dfcgq)UXv@;?R z)h&&2wx-gkI6gI%4kq}PrqZoMWm+2iS6S!M0gK9arP8=mfk|^QU2k2A-A*qyXv6z3 zv;rZ3QO}7Znbq0_lRaoG_J>ic3>*!?<~=V7>*V}wyzeZAfh-2I+AbA9+o2(;nEONJ zoHPh9(*~u%@r*SNUVhB+3=fxmzQNF!vK;6$=D;Sj-0Rz(Nf*75%QI=5-$2M#zwgUTy6z87%cO3h#}INb(!Rk^^>CUmYGxUs{_ixMZ4{}A|i6|8R>(fSI$^NnaqMdwr_x|$Ih z&=@M+DQNeoCzQ2~0kdbG%A~$E_?}FfQp37|dTQ|VnY5_}%(SRaqhMYm%4xI($F18< zc=u;nhi8j=M0{7+ITDnK>Npn^YKF5#OU4g?z078#msZNc(c(IJ9O%o6(N1M|i>@BX zi#u8Ezzg&?{{#D|sMP#y*o=HWiW%L&@|Ke(avG)>gT2uAa6tEU8*{yIJZJ3nLagVE z_d=0c(5F4lSg06z1g~nDVJ(HSr(q%eal=A6Hx28Gm$JOpK`*psuoNHh>gT-djM!kN zaD6^!Uvd3DZa>DiW?Ho=9veUC7ZT%6LX5$Td=Efy1l`4DfUkPPCFm(|mj-5}+Yfq| z+sZ>4P0&*`3%HsmG#&IJkA=Kj!um9aJ+-h^q7NFf`V|vr=+qxbJ5aHcEYM3`A)rz( za9hxj+2z*3r`x3ooa&LDbi}UnSV(!>V|CG4mX00%@1i787F197v5K{}r_!%s;0W9M zM39qY^FS(G4ZQ_=vB%kz0`vL2M2)e9?|Sb3Z0E`@{*}VLJMxOS3r84@h)SCnQXpyFW>*n*vJRWgK##~T2>)`>?lV;7CAx|3)>i% zF$|hiu7Oy()@jyKFu*knA!mzxxPdp&?DHJ3W+ewu<8!3HLcW{h(h)MlB|w*^sTSzv zs&z}H?E*oozgr*WW+U9-Toeo_G3H5(qlqjr3qmo;Sj&Owb{H)>pqgDcolyblPG>#- zjvPuGW_u`h8~(O}`DM1|v>A*nj(KLmi0_J*_uQDDXBoCBnvq=Vid)c`A1w!mNM3!#HT zV`RYyUFC{6Ss;H}=@j{Begr`mOYJ>U0yzYOM) z&+t)m$K{3}t=0u`@CUc~|DWTr8{D zC&XC#F=++AMj((Kmh|x)GSpe1hbtV@caqW_GjX9e8sYoB79`<4xHXcq;XDD09=CRL zwz(J^8uk7Y%MyI$*N9$ophEibZ^aUU^6wiX(Dje@K+iv=0RTQ7Sfu4JGmil$f_D)f zs^1oQ;HTqf4#45MGjlD213eD&)zu8TUE#QBLZY{WxQvWq=0OHg7Ki4`eyA!G#K%_? zHhJ}ZeI7u$EMo-j$`XbIe6OgbsEy*H6zmRLeP-SfCL{u-^j2Z{ ziRqp_5@le2>(7GdjRVZY1*Mb3my3(yyW#hYy{E1n#QhxXqmCj!hewX~(o^C1vH0@ggcPN~WbE_p>OL+fIAEB!Y z!hUF8J6xs%`@G+q@M!pjC{on@u<##JmsZYxnd+bp(_C@%rQ~I}QOFoxO`{;7-uh*hP zqD0SsQ<>nqR2Sbu@Z=+d-foQQftlC5ITRh4HCMn@7Hxdt?}UrOt;ao_zmBZx%ckZ=)0Nu49yFeaYyTHVlbB!ypRh@q0g^xZq3l7{M#j6 z!_kVI1p>bzsJG9QXh!3WrBSe8?}X#+3#M5o+G?b zF?Ng@*BLusY)iqu1H3w0?aC+;xBd6{@9DRtz&&C-M+mKp?L802OY;);qH-{Cu8yN` zSe`}LKuh!HR23WZd+P7lFN>E0*?dLib$T2d)LX{y*{_PnLC#i?w;@$^h%!B|vF63& z!!rLm6oqmdT5qwJ?~CJFT?$qe$^-APpWhef<&`K3oBiX~v#h~=agWOPsJMVtmr@~< ze$x7GJGoYYf;fX$;f>jo_tjS#m~>T>iGI#MW*-!fi()|^f0feti}X0&@tyd#jQw|E zg0SvKs{f^eyw-R7^-*noXrH4`AKD(s&+8~(h~cnC42KHeau^D}b5O@ekKxZzX|NAp zOKHQ{--_B=!VVsFJk%Ft91Hyr8+n75rbvv5a-RGAMWSr?Bkbqh5IP0Wm-VezS+m0C zVVsJ5N@en*?REGItV!`Ww8_Wcq%_#>KlTLCuTpw3mQ`#vi1$Z+k5!$b@EvPeFS26X z)$c9a(q5z_{#&Yuy5A{%zsUA`+J<_)&J&b?v0TGy&KehQcle!B$%}DUj@M_^i^pMX zJ?eW2pLaS3Ze+{{KZ^ZFSBbSN0yPc4>%*`IzSnOC zF#CcU6szkfIFCMsLvJspTwrW8gOefl72}{!U`hCvul2}phIfBxJD~p_&Hn>^@)lJ` zpZ}T+*FQg9>}wwnlA&iE>?lKn zUoc09%GzX^jVbpKJNzhaR-?$NLDMEWy!`686KGnU-F07UA#~CFy(8;z&QA}%YQ^)rLn}i zHZ*;k{Z8nwd~!vClP&$61P_~9dzs}IbqmVGI`Hbpv%=#D?nY)wyuA$GDHtVPWjvYeLS`LhBm6?fG@0cTW&2U%BIyHr4En1F#%z1(lX)`Giu9Q> zTPSNAWwx@YP{FTEYW6W0(i>Rt0LG6n96T&(rzHlZy*4ttQ}ii*`1t;zYv4cH4`_3F z(b^~5;r&)I(fo(D8TyW&26sX4P?%Ey`1-GBWZEn1U(4*gtmVt>dQoQx9!QBX^Pq2z zx|@Ft__R$->;}gerrtJ5+b^-NCGDET&izmJSMl-sptfN=HWPCk-x6~?Cp^c$lz#rb zbG&%D51J=G^n3o8wGwUphxVf%+LnKG&A`3sjgMh0i2ZDX*w4UKhSxUjvdm5w8!6%S zw7I=lhCQ)9M5fUUx3PTo2^3;;WjI3a5{WOkuM8;XCo2aSjCix+Dz_}TdTWQhzbRO_(J_7tn(hs+1G_4SXhLJNZh z_esFM7xr{FBqK{^t&5fP5BC>vyDJ3O;1qd}M=A8OV(j)3eaK-4@@Kx8Vf6*GbRSD; zDX~tHHc*03>%#3r=u@XgSb&RsBYbD(OBnqP2ht5J%^ZB*ykEv;ATjt9g3(-dnr^PFJ-v(?&4?3<#*;dL$29s+zU9GiwSZ7PE^>EdN!tT^^iMrr>o zc+`Nj1_Z+W@j-mt(!a#M&#bYG4ZS};%7zf2+;0hv*|qVE4KERoel2A~%=3}89O`Fy z?N!X$!`KmKTxINRv7`m>ooY`)$KgObm07r?Li|#Ax&U8FPq1*C$q;ty1!FW=&c?yG zjxeZM%+!sHtt`qQzG-3=8x#3&d^-aW1*Ymzrk-Z(ia<4IcZ!mt?l=||Z-JryK1YGS zhlmQQ?FSg!S(NDB7{Q=?(;AQaQ^Rm0moc`U8TY9W3mzH|IJk7ZYW|&m0r|CPuaL_; z54A=9HoXb?LiqVrqF4DZ>BE9&m`UPIS~1>(p|cb3rTG=Eto&2@Q^B(ntBz)rjI;Tl zIg~707x*=Ru4h2QXN*O7*i8ZMx%h`Vf|XPV=$^Iu2fk`Vc$Qq?R8d?ESmLpe?1NRXExyrQ%RoL&Y(=p?XB3H`H8-ex+i*{y~LQ@G}8&Rj__zn8UAy zaB0|E(nd*aP_Y%{ho-^)*VKkSUKgg1kby$|J{)YZPq5sNmMxqY7t8v3p{uIp$!veo zLRwHiz7po>C(w4xm6X{MoAQAA|5<6i=Us)YxF+OC7FY~Turw6(XGz>~%vamS)J(;k zErjZ z@QYRDw2EtSKBV$zl~S$TG*LAm%-^Is@Sk=>eJ@;2^1ZZ=!HxNuaN5&KsiQ!!Qp>GX zfwYA6ReU$-vb%$!FbgI)^8{kbMRie-%tvKa=*viyPuawRlpzo zXZWZUJR#U@RWqKa7pxE1e-xpNgmv{Eiq8qQ#e;Azv;SE>R|R&4z>c3G`+n9;%q&^u*w{m`%vx7xQZK5BAf1g%}{Gq;akv@WBLoLmL zX;T%e*SiXC03YIWO=l@37isZ5@y!bHJHtGthw&4CD)wa9=4cfZ0k93rbD07AzZJqy z>jCDODzQ_{j{q2+;F7STV5XvXiv9_m&HueNM?cZtO6)VjXW&(tw}FY+Jzt|9uXffcj`+cL&yN;uAdSwRgff}c82fSJe4YmAOFK12e84(E@8bXX6o zNlTFKNdPxG(6L#_OiZ#<;hpR{d$%B60-;rpsko3-$41%*r>`{{q1DEDeX$ed4%*`meC}4d{RWHdnzxQ8fmoQfs#b1@vC- z&RGA4ntrH=&+|F^Qs|;jp9k$&%ikfDmRdNq4f0z}?xut7Qruu!VBSjev3zBH^HD zaKg7oTWH*|=s!b;JH|reuEbb~YZHr;9!-qPl*cU)}}9`1-&RH)T1`tj?vH8qSdhmLbkn8VC2(v^-G+cS{QHs|BD|1K~qb%u}^!acXc)EjpQIqA=K8jHpGo)5W=C zW@%A-hcbSIk1rDhX8-uIIzn2Ov!(;Zzg)0GEt*~a1H{g*80u1s#%9=OYto#Ir=Yi= zQ3b&pD*Xk?dp;%#nEqJsbWOVOm=5}M6$?GkqN*rtX;o);O-c$#o6OZQ-^qaWN8>M8beCc==fJKPvSY=Z(xEwtu)MUf-_4| z&qRAlDH@e%=a!;biT0RMv^voqUW)c68fVifFAgp< zATx2S5QwfvJZx_ja2=7sG zzc=_wgDor$8l9gFMhVOmve8-D@^ct3C*;*=`V_@jTY+Y(euS)4J7Y`VY8Xo^!0|x~ zhM;*oG#-P~dIR)HOR&Md@plsuEdrsT6=+UCzgV8S1dX{BXluwnxB?vwEkc_{MCn_~ z(}buC$S^3z!3drl(^AwHJ6S^J!3oZi^6<-Jq3RKd_N4MOBk?z2KO}_^xi!fiQl5Gx zUli4}O?S|k8KqKD!TwUOA!J@@D;IQWyK8ycQ6_+p9%UnMmZMo^b%g9L8$ih|%L%$q zxrT_nQ%>(tp0z74E;I$xUCj5Y5OE4Ir*R3sA7rrh7&F$6}T=`meebmLYZu)4jXyPs52_DyB;n0#xnk{8 z*!E(EFzBz+)D>s&uI`B2COkkbM3$o(KMoi?Z59UF7&EP#kJg!Bw?FXR9*M_;cP}3Q zUB9gnkMfQB+E?xs25r;rWd>c=n}S|qlnM9oL-1yVUR#8x996WQVZ}~459gaa43Fkv z{?(RYx$ygyJ{E{?)Y zzzCPMT{7EL#N-RVmq>G78USN<8EFQ&fT_Yp6*n~zYl$DYrQo5;{$3jOko)2rh4X@M z^t956!B9-uC3MYk@%na603YPx_%)CLR8IYz-c)cQY|9jwuXkeUMR~#NtKtPmy0P*Z zHN{L3b%Dp?R%((L{Occ$T_bekE7{PEe^&XFn&DRZ0J%X49?p-(uF(vo0a+i4w&6R* zE9I!VmdWZDE)k;rUTQ$pK=}=2)-QOU;(lI!l;2drV|tiA+{1i`iaw}dL$1O*|xqAwn*hljXF_`ivcdYT@`uoHY%_)Gnh@Rzz+_)CR~ z*S%pJ9(RR)a?rO=Yi(i20D;8&8phK{PZf?$tqj4`L!^(+&>*$=LIeM>oe*6NX4)(U z!EKFuY5jGyFQ_3R-qdiI{~%mMxDA#LZnTZc8}O34hFHUfNy)g;E|u=_X^d-9Y3LUW zk>5q3s1tG=Y}u_`F_To6?X6Rd(JdqiI&zLRh z-@;(d#r88l0wzi^aD2M@Vf81fYyWXyJYsD5novqv7|dwj)g^vd-2Y8Kuwq<{#NIlR z8Mquwf>Ta>_aqp1{T#Z(FM=VI6V_E(D;Y%`V=+kaFFd9mnDsJ;T2HJUI4Mh> zB@&x+pIk`P@eXuTU)&^Y;e{c2S1FkeYhow12l``lR5*u0okyjS<9b_z91#L?SbdZiJv|F;4E0EFoKo4=5z*64q`cKdcl-dR9%9dKq zmb-yA5z*022V9ZYRBEeuU>Dt05$;9Ss1{=PsFH4g@#@Fp6+#mK=y~ z2D*%yDvfsa!oE9O)t9SmX>qZiXnSJV2JRPNgwAK;ytY{Khnb>&m~!70Ows)88xl-% zKQcCCKm=#3%Ya?B^<@U|vzB0@-q!r!0}S%mSs8TP^Azau`a0Bh#Vf+w3N>2lYT6w$ zsFlw|$Y`I{K7(fZgsf|WRUaW;{Lp92_uCgMQeWpo1Y`y5wi$FaP!sgzU@3Ul4#tA) z7_v5G(Dcw62@eCJ>L0C0d!lBbm@Y9E8Z|V=npKfD#nc~%@K_ybzKQj$u1MK&wLtfe z=Y1>E%=r2pD$=opDhOGZ=xJAxS|@o9SD*_?i70Jua!8b%l86!xq;P}`NcAkLK$jqF zuK<7z1tC+@6H&sobdEGrOL@BC-d4(PS%Hq1RuD3$jL3DUjAws&IF95-!8)29{@SG;Ogy zLX!D@am?-Qc-BW#o}(biDF=-3RRNC3a{*7wXgF@f)-pI~e-#Dj1Oq8@L!sPg>KNhq zI*OJ=SZK!12$6hXq`e`E+C_QRMbVrn3k_Qn^)*Vzc=?R|5o1w|NB=w%VhLlJNhjD) zjF$GQJ;DTAJJcI^1#Sm-f=-^$HylnaeCIikv{PU^?D1@ZGhxp<6tLLf+u`HL!20;L zp&;jJXqkZf#x0b1fO}4I*22^~o2-)wS>wG96ZQY;S!=!t?`F;<_$Y>ktT=}{-F>vh zb&8EQA^rT|lu4`Ho_!`<_+CK676ZZ51WZpgfR^(B@($(}l1%1NNV1l5Zv>3BwIA*RT-H1nxP^R|i>-6% zofLM+rCoQi6Rt$iy%c@4!Uh++ZlE7KFxHBF8aLO$n?Su7%T2vS4lQt%8s$(&C9bPY zR~6&9Lz~sOWj5F(W=jXyURGZl4#1xI%En8@;Z6zEA>1SH@VGob-8N&t@zZE4{wQ#z zt@s0en&h`o!eT$)VACc)&$elwzaPfYWrueNuogwvMX^>G^>SRNUGP^>G5nq1V{g*C zMDGU1TeO!2M&VW}@dLQ0D%Ne>Q`KeY*eyC=Y0&|_HOf5fO_^k&f4gGL_Oz^{7K9gk zvBlO{e7D8Ew)j**B(kO@z#7=iGOkW()I z{%CmFxhvt}j^^7Ejn442h@ovB@#)tZK7<3JbQ_A`Cg=m)+!T!)Zy$z-R@O9WM>KVI zEEIdiF(*gU!T=v0P3r~i?mSBxyZ7h2S@o) z&h)4Vq~9791^R4M0CdY}p%sGfIYB4`Llsk~kk(rL3Qbeqx$+{!>%j#tP!}zDra4X1 z9iT`Z*F!*&+UpJ61b&pa71CcYYvsK}IX2uHzCuHTK_uE444rC5c@ZLFV?_S^PuamT z3cOvh3DTa(i0<+{W_2BO z#~Ps}O=)Ni!Hnuwt2;x`gxaAmo6^ZTi6~=iU2FdHG`61AuPGg>XI_4e&eemK5iNbv z+V>pYe3EZ`mL@;NS3OHz8t@~TG_V2Rok`uFE`_G9f7){^lk%SCmoq85AwQEzHyiSe znbhtX4!EKbjS`S%S)(*mf3^_^eWy`5yutX)DAbsrIf>nUg-vWCzSW&){{s5T&;AoV z|J-B=^yX&#STlCF8SmSiWi`Kv0omr|3nIgnSFFO7M0_*&K~EMQtX?w?arz+a5#D8j z9OJ?v4i5PAAwcJMH#`L#0{0<=EYSH_PG@xvM4zFCh|M?nKsb2x@a@okW5_5v93_oY zZG`Vvqd<3d`$3Oz`-B4}cLM>qVh_?-JFOU#AdF>x&mnewc)7Ua;&7lbU$H@VR{0*` z_uihY(K$EotZ2BYe3fV^<_zroBHC)4TEp)oBx_KLoT4_&+Z+t(`3u``D zxln$`-+v4Y!s8Ba9TfhQ?grq3v?sDp*2--N!u{XhCI#uRt|EM+VS{e%6=}MAARW#0w2NcL@?rfkR1;e_QZqQ z*PSsO>2RCGpPgkvGb`$h56X)6F&_<(gKOZL$`zdC6J9{Z`60TowpijTAohfZBmGs6 zkctm8M96HT%w718^R{QZ{j`*)A;U>-^};sA(~xb1Y0bB2hG`AAXr&o(6GsViEMBgS z|F1o4cDI;oC$Tq$V&eb_u@rYFitTR`7aW$Z2S8*qR~!hLPJ^MV|j$yu`%_EjNICYwny^Cjp%SBpWX=GRRa^Ap<7XbNe!ucjB>a!P(I^sHKakY zPTPibK2Ef+Z@k#R@)FXnJWb;gL&u+{`ALxoAD3+HeVX!8Y=q~hsw1AJVQG;oo~GGp zP&d4k7KJ3!(naLg>7kxaQA2v@TE6o${G|8q(;BO7Bd%lA-K;miAYQL(`U2 zjziP#R*pl{7C)w}dX73hF1Fs0RU%N%zAB-w8_>zBK~%M;+IEJZb2S6#$7{7_iHF5? z*RjP&@Kg{F-5NyXHlSq zJE5_@EeiSjVuC;@@}ISy(}KgN`r0{YI%b8yE+-7v}D0cvwxo7E8Mj)Lb{b!s&H+L)taXrJNjh-;Yl=VM|3N*8q-Cp-@8E9zwVcSixt)weSWx2~Sp zFm^=p2~l)Dl8=a@`B8jx6k8MZ4O+J{hF^$f+hW9tYH%E%7RPep3Mbrm+q#}Hs1>b5 zTUScmSj%Ku?=tfepz|5MD~Xo5`KkmO?J@Vn(>_nIcRcOXjkWPO_4*Gb0HogwnAw3| zUrquY^d@vj#FgCcoIqc4yHf(~;ZZl^X{_m=6_1Ofbu5lL`Jk)}C^PTPICy0DU5}$# z{&-;S-tY&v#nG~$Jvff~hbp43m7%LR-p`A%+Q-r6Si5r^jgQM`x0Beog!dtCN^Agf zW1=`gw@Ky$l39=B!Z*bC0G8Pkn_c}N;&Xzu z3c5>S+#}oF&wWq_#GJifTcQl5f`Q@VZ9piahH zppP5Sm-@C39$uDF{wukoi`u)u9KqOrhzv&X(F8}Q4bv7dY*5e;Lw`XYQG>it1qkzx zD=5FkM$YFj){~*?Zzt9x<4VXJz)!5Nv}OSOR{;1wTtGt=-op|1bP|;9XEN_eVWUv7 zSlmB>5Brn&pkY2Pw52lm9wtv`#x$Wa7$Xc6Jrg9B$NUJGDaGuT;A1U3aM6)P|Im;B zY+vJAKzoW}u>qm%xQ2cpDBhNwWx(i^Bc}@&WcqLqO;@I1&f#Bv_ArSJlm!;>X(OFAvlS(7~>V{I(+2$wH>8i~Ua>GdneLm2NK>_h%P(PJQgF`w1e@}ocC3j1U06i}~a(6oGRH`EA z*`*?J$|_X{WS7!U7aM2zn4_gu%sgHdFu&@+YH;u7bgPC_oHO(ZcvW!PkZOUZ^5mK~Jkfr@Wz@D%8U??p6apdEDu0G{*{n-e65ebME*9 zC~~G9K#}L{0E!&z1W@EWr!6>ji=(2BRHgl~O50krBu<@BlSaj-Y_0(X8)rl{v1|9K zN?X%{ptq!}hn|2sM#`!xG`zGj?FpJ$W}OQWrz`RkkJGRWKKpUnlEK?PPTy3vM^~X? zkG+rB){l!m=~acFt;P0K@t&%});!_e`vhxQP3>5XEvnX8LPTB-@0gnGVhz0HhMH=A zP1dKD_joO~qE<8_57r74c9|G|^&$7cQIa`xZAd2sTd{}hPqS^>0uN9dZ943;X4z0b z6};VBRx%O|@;3r|%HJH3GwizIG5je3+yH+Lm`oEHl#Zds?(FkZ9~r8J?Oe`YKTgQF zN%d45oc>2E&^jKVIy=FyQbB?_xZMxmOd!W<&Q>UDK>kOQJkDl6E%68?m=<1Vqn~@0u+p^LAmL#q`3 zqI$GMb=KDdI;fLXmoB=UnRPH{LN{vDWzD~{9$c7OTk1heKd_=MwKwV_1Le#CzQ8aj8CuT7IyAulO1ru=$_^}pwxh5|qntnhxef&a zi0vC}f?T{>J|U7cH>+LTK9sveCk1=$uIDdU{2OT#K^muu7dijkmuXYj1rG(3Y}u0_Wy zc@Q$8wCuvK~ zcad^xEwGKd*5+Fpu#vT`*|piq+SXUKS?fC1h&pU_U4F1G>s~J!u{rhXV0o$Mol&1% zu7^CE>#J>^WFs1gxcLpR-hRs)2m>;7VE$8SP}+8OrNIZcp!dmk&ommL_$Q}9b;bdr z_GY)bFC9*WQ}Wa3D~||ouO|Zue6}Iz6}WT9+nBr@a0xqb}Egq z1E6=?0hD}3So1;FU`|TK_1C(VLfu2=`4qYovQ_|cJJMX1Liv$Gp?Y+zIVc5kgaFE4 z9Vc3KG)^d2Uyc)fJt@&XlS~H^>+VXXK}j|OlFB0C{-gj3zLq2!(m6SRf=4F@P~^ho z01DfiJWO6viuFnN?o4OH)1gs+CtY1ticKiR5j>|<;M82bzKP!l-OdrS zA7%aeo{wQ~Hpd~LCjuu)<$$(3Qf|^M428XmQ?BwdCami3jhmc$6-nA@Bfybw3h)rPoBnK*O3~upFaV@xIO8#~9d=;+P5#CR^)3 zCDpu&|6N<;wRLdzcg8@k*-(bmhR1rRZ*A(tgD0W&Y&jjnv-?^tI_I}f*8ywR`KAt? zw0)DHX6$g#a{|tgT9gxXpy_-fw2iHY#&(p`x)$X{ZDwO?(UF+XyVt_D0PlSmJ^W-% zI-NKIU%5+40QD?O3803XDFKwxGc|y0xv2rnZI?t~|yQ(Y4YtqJ= z0kn5&ZEIz1wxo7jtb^Yk<**)hS6G&U`?$E1J7Y&NIC{0a;irvm&c-C@sSkmn$CLzf zIvy4#+(5cnsb&`>Se^=Br*y7j;yExWw`ACh@N+kV=Rq`@Rf!+PPyb5L<)Lmh%}K~R zxaM6i)X5qp4io7b*)8#to5>I0FfcolufflX%(Xb0cl)p8Em$z8{+Bq-9R9O84G%{? z^^d~OkiVq$z|XS3;BrP=KeM~xVcqAvJ$@$q&1{9AxqlPPvBiJ4FQdGxf7kQTiY_e} zzlGmf_!YG+!>_1ra|;H();wUmFUQkS{LaVkg_aEa&dFA+@&Gh?54@}Nz;6c}gJ&SN zPg{Xm(54-;&qGpt69@Lm2yFw<(~*U1oY=9T#yeosQ-TrRO6jg8P&g^YS zv!n-BMLciq!C>=CEqbxaJMcKQ7Zbdj)_s`06sc~&erGX$yYvNQ6Yy61v4HrtQ}HW4 z>xzC1OxvS)63x2aPber-&jE1UfyYq;SU_~a>;VvKW3SI!2Vgb>dse@ojgx`gO#6gsH4`ExS;iF&{J)A*^c6d0f$Hn8mk;01T;z(9eJPjQM zmesdwem>0P3hZUgQ?Rg=K09R59M=r@T?;2I3v#6KrXTcNa~c|T#^*<(EUP&}_F2CW z>lo~olb$lL2E!T%*eE@v1n}pkO1Q=xkTk%&d|hyGzqjUDv>eS`E_wUQv|0K<6Pd%#;HdmZ=sfRofd$x2 z(S|ClU-5k4t6q>jmt5GE_JL6GXBD<#M$6QoWJ3=n?(#V0bP`^Unptc!MpENqgtCZ&269N;I+j- zVf$d14SU2RLaumXW^n5Ef7p8uC_9R4UAT6q)8TZVI&o$+L18oq0TPHLM6$544G!P{ zzWCb4U}J1-d~Iw$M{JKqIZG%flylBG=NwVa3FVyAyl?lJaAuehlEL@B_rG6jjn+QZ z)zy`2*ACydH{;zyj-Ky|&B1$7!mS`5(_C(F6`8wKpaQYX*|*=#bbku;w%0`i*rEN> z1rh{KfG$LBftFQ#5;Dd^+yTa5miv;ZjeP%^`$^wq2e^6Zkg9yaeTBY}(iXN|^bH>& zV}9OxmA;ws4Dt~FwWql*$oGK$qNoSf_8U$)JVw~8O7};=Iebk#@;LC=a(yVa(vm*y zeUvTTXGAvY_qcCE2K}jhRcT!?PH}L?D-j1wLD{TqSfiKguwW_Yt#k+Y+b$BS`!9c8qk~f<}E#ytp#UM3rq7FtiZ;USH zX?eqSaY*|wz%1$CoN7?NQc%94wc=ydXZ%6@t|rPZ1PlhEM&R#@&GW!9BM1V*uH}I4 z=RsyEZls{mAQ~yw5Wbv#goQ)$vv6ni9L|Nhp8`wg4O(zU*3;#@Pd_4hAX2U zM>LA*-~cbkOwjGa9Z*K!G^S^y&BcpXt1hPzkBbpCY$Q#pG0Z_d>STbvSf>>p7e3~K zZu58uhr#1a4ttzGT&aAsGPx()3O<|;7x-_nvFq>jIbc>upT+^5?kU*~{JMKj1!0Hw zEj^#at8d~{$@MGU$3%8jA)a(wocKPDAY%Ju(Td* z`~6iRzN-IGeB%YK^Bu%bMH@}?J^_SKZ&8*j8%kZl0{qr`m?|-mEti5+6lhR1&Kd zdrqac*f=w!4q0#frvE%9|=Wc=3skfyOl0cSS3XW3KT1vt=AL>?$@2kzz13$Wk#i(Uyp$ogY&k81RI z03qU-lf0=#H^G-$x0fPXsvemZfPBFo89*E=TAd(9O-vzqYU_ zztlv7`^kDX48_RH-{vKs?6)J>6OU+7SnFNaxZl7lL>uaV6JLh3088{EUZS|xl#Cni zJ&zeLiC-Ikr{Bwx2mW65wEi9OuKqWAuUz^=`d7rOq4(&mls$oM_@B@HJ?2Iblc!_K zc7ZzJ8x_8T^o9n$VZ2YjyOVDqe;qh_yc+y3db8}e<+J7$SaT?${t9(gQlC}+PUZE* zTzRPBT;8#C%)>SiTZxY-be0jgON-|IHWT`nMJBqI>6-d~h}xLn{#?TZ8_3Vxe3lO~llWP6zTn^vUn5{lTG31-CWUo}kP&GPB z6?0YlqDpI2d%H>peEOtXI_v!Uz*rH}Znsh&45lxu#`h$2F)-^;9>1cB@hYzi)-$tA z`y+Z3UZO1(X77vVQc^r6q1+wHa8Afu9{(ZjXS>Z!L9yS7YzT^i;7g#_1xs|6x6?~j z_KbO>yT-!77*~jqgY*hxm;Wo@z&j#Oh`i7u5`Z{wq-f9cWydd=qmIx+z9DVGaR(RS<4X-hA z1J2lQB7ojuY!l~Av#~|jQ+BK3`~}E=r&v9oSKIH9*Wvk5sV?>|af7(5fL=ocs|oRd zSr(TZ>$wzD=nnXWJMr(j?YUhEW)b6V{TX4WbqJXL{!?C>7*m|(x5ENQ-AjC?Zr5Lx zo!Ot+x9I<2oFnwN7YqFj{%7sjn5^8M3?A+af)Q@8mzwt~|0V7#qD#_w9*H-Ec*DW& z`ztW9J;@o(km{u+;oa)ud0d@C=MaTmahow)aSr?XcD<_t*5OP5n>Ei9U;+Ab#~T3; z7;@&Q*x$F5?C;-)*aIpG%4qN5Uf2llk5SW`dO$J&zPH$Fq+fBx8RG=<>@-6|J<-L= z-s_45R%k9F5L$W*S6s6rNNM97L!L`Pi9F3*04EiFyQzI=)dr?fGE(v36DEHdeaog^yn&6G&Q2Q=q)tzV5jZ5rytw0rz0-gU zO_g22RtSjbjEY`!wK>V03G~=37W*Y<8s@+~0?M1exTh?bkvr=x+(y0%dZ2O=!iEl3UV#lLg`X6yr7FIt z(mi1y{5gUb0EHqqKLBIgFBLrx1Kk~ZY&EZ!37m=>=urH_H>__4hvQoPR`PfGxm{Y_xqtsfAn1K=ndNJsvFrxN(|WFnIGenxe6?9-XmCb+($20A(Y+y~b7n zADDSSP?^f6>4m+zvo%-oI3Gv{o~Jz~9Y)bh&{$l-CZ@v=%kGyh3Ig7xG|?e209`l1 zwKu1Ud7ebd0)6*o=KyPiN_#9N_!jRsWd2xiZ=^?otC$IF29z_|4v<79PvM%u;^gN z8-+z{#~T?&cwGq%(>5nQ1b7<`qL#uG>KA9j^idf1zCvJg?bR*x*vEDcv~ zF(xB21#e_P-3nYaiIP6ZH1P6}%vX^AS|(p)D&E`5=%&EK!M7C?0ocSkPQMHIW;?wK z=*hZVt<&NZ&5J+Ba|KIU_L7Yd#07vt4`L04uR7RRAHD2gE>5tDzgvE+QpbYl{%5O4 zHqZzm5hDA7jj)d4!#3hT*FR_@WGz6Sl4FT)+*KX^7rlodli=NzcQN*t6z2HHXz#+z zXoW7Pg#m%Xno}2)=_F4E!k!5KGXPGMwn(jnTbho?}E+Tt7M_t$q0}Edi2CE?F zbl1M((L#Vm!lWt<=oq(T;UQzUlROKrA%96%UAER?hr7qQ4VwUstT~yj2f~mLc!d16WRw z5@HvcMJMV2k!B*sc0sHPGEIzo-5(I0(>AMkFfPkL()Fw=D0OD`A3^WQ*-gjq7n7>L zu;hL*yXIPcea1cU-F4s#=XHKSoU7$^eL(cRFM{;(_dzsNaKFUE3HNitvsDD?mzLHo8Tq0yE;A;)CZV3jpWDQMO4d0DU8>R_-QC5ohjIX&l-Da* zb>K9e4mYrn{qokZcD^D9Tz)ek#2EuJ|^*c)41%O5MAPI z*0?BPZ%)vfL`o$;sXz2FcnS=9cd63VQ2T4%bpv~?b3>=2+Mke8V0f(q)YY&qa(lyg zdfjl4^3QS@JmvI|h4h4|Aw&%adeJ%vV-5I+_-@3K*Awe(7V<5{4c}k^OgA$+)DdIM zD7KIJ=5U_M6`jXr#^pJxU(>h-Odz_Zv<|3Eb?0P&I_S;?gFb>SGm@?u&b0st>*D}* z4utXeWPnprYwfRf?x(S2_17S@VsQblbzU2-vF=+NX>$xQz<>oD(tcHBCpCz=Nigj% zc9CF%GlAGNLW{KptwEf+Lkl;R;)KRK^D3j-bP1=av>s9vTE{U7js@k0km%{UaJL-_ zvt@`hLN$CC^6rhFGJSNNHxcg$7oH+-zWEoms$ef+#mYrw#L}K?MN``h!5JbjGh! zY8`r=PzXXeW+c0-xfAPS^UEDmALh?h`_&gi0^YRxqMey&Q6HC}p_oZ4gNas9Ke_j= z0!&%R&3{}h2)XAU6B}i8>Z9OgFh+lYAY)gcjJq9!9$fZX` zuk<<8`Z2io>Kz^d)Za>!Iy)yk_7TyxDwlDnYPCL(h&8$PfJelI+&I3rx@PR=!=h83 zyXRq8{JsgV;(OdKkBFuBq^*Bg?7oL@l;>*27d|XT-YZevnfEq;7VX};GanXR?n}e_ zqwa$u=KOtf(j%hr{j-sK-UD*T!{XEf?u~k)aUB~Or`B=t(Zh8znmjC8*L7zz)((k(EZ>cm~+)ZRU1F#qRb8teFaMShq}=9`gFV=SnuHv z@6tdwtN#Y>8}(g~=j*3z0~PF5e6L)KimjzLc3NVrQVk?vE-X=~xaV;TMJ#X&?q)B8 zM^t+dvb5AMV!&>hZd;4STJ9W+mRjy+i#Azh^a{XI>p=jG1UEynFZ>>9E_!>Hp1mdx zOJQerT%0o6(A+o#{cd3lE+h?cIGA%eWvcBSi-|=LAcMCKx~pQMrP~$jpl_t=jF_0i zs6t{zR5nY9ol%KB@kI0?05HVTCc{B8<{ppJ+L$~Tqdl>|<1QcPgbQ&yKS3=McCQ3= zD!VTtenVXbP5vUs2zVJ?*cP$2i9Vr`^VeoW(E*L zws;FXe`}Hh8Q!jRHr%~_mg|8*t`LJA`jDrMf5MW~fIG>66qgaSIghG6X!awZQ)6pu zL^uFvlev^=3j<$6$&gwne50~>fsi4U(ZeR(FNs_vHi@68$rz4sva2p_ZPvtkbY-{I>L6_66u=4cQvgs0;I zU8HZue2j&@F21M#lzxyhMtn{VL`MSW2i*D?g1j~b=Vt}u{P5$|inCXtt))s=|7^ir z5bp}{?)Lzfyuiom*{@`P&R3mI9DJ_Kcj5xOLc=E^pleH6=M~(lSs{Rbj1}^`BNQC~ zZyS0BnkOY^nI%praX8*=Q?ut=;*$CRcs|V;YQgI+(aaXjb?25T_UTRmGV1-YYTKGl zKD&i~5u!v>BFhO=u7+sIguZp1W%sgyT?&b0OPk3~c4^J{`J90aV0hqxS)j!%UQ>2 z6Ak>h6pRd&qJ#Tq(EYt<+DLf8{}S|i=^T`_QrmpAe@JsZar!%l{|UrGl|2KQ`rmmyu(z z{XqwGNe2oyw_(u6n4qJyhuT0qf$IWT866fC;)vmZ;k_ELR$5}b8ON$$V*Va>IF>}l zVa^R-sZO#!#J#SNvxa=(gBRDe}Ihie{ z#hm5YK;imOnVBs%r8R&!enh%=EelZn-iO(uFvIJZE!I@=j%SN@ncm@SKtHo#{F*EY z|L?WgbqjK6agIH|Dy_|dg;|fP_kdhcwdSR&bgF9Ey$@)S*xZZjeJY3RJvLeI4R8bx zcq_BH-l)wo^8?gxd(dl<4LFX-#ca_x04s;7G;USan>K4ihma=qtd*sS>k${w=zqtNcSM*Y?k3I&K8|BE~A9jS+a3eF(%s` zoQ*n9)#ry!{SRb|H@Z7#-Lxi%+@sRPj^IhQn2kmu1T2?wE829T*0i7ZK zelP%Nyqc5m0KE^!Q(}aXJ{2l0!zplp8MGLEI@qztJ2bU_IB?|-;1pLL8<=kPS1 z!_ihju~c(f1R?izx(CG^e-0nE#uUdD=J&8g!ML(OcfgcyG@Q+*m>Y=T=>k(C{fcQ1 zvZ#Y)d}vWuD^^?>-xKc6m#F~)0_5X!`Sk876Iy3Jwmwu{&@nqG9}n6OO7+Dh2Go6v(dO%_1l?NW-sx#Dz1*<28?+%sqRwq@7;8eXRi8v5 z7&{=W;h_M+8m`6myT))Y1;p5Z#MAi!ISK6#NN5lb1khz{3faDOF?soL zRw4&_)F#Tk94*;_eIdqf5faq8P`;>gpoWM+&%xJ6GrMWjTC@9TG(0oKYA$tgkdP3CeuWVxZM8d!4Rxp3d@BQU}f7<*mGoKlYY9u!9k!tz{ z_?oKIF)}xFtF1vzORMIeZ3z5>XVbtjbp`{bdGjH@*W)n9>tWPC2*4-Pn*?Ue+>XL7 zIO*+z)Gg?a3eup`U5f9`KSS)VMJQ*H(uMYi#9YnmhfoK)w=jfb)>{Z2SHPR^0Uama z0$^n3GiN-}*Y+mCX2;%#lG}M{$hq5duZ1W-l-@H$-9s3_C7}n9aIO^0)9<@fzrRif zj851ZXt|aSdY=XW(g=)nHk@{EX8c}m{U{XAYtP4b=DU6hBl-^w_tHbz& ze(v8rPxy}i8zFuZKS@wRK!S6I>;eTgDug{g8x2gS3!D5NA7aiW@d{+d!1@6 zf|Q>+wUTpd6}byM=x^Dk>$vvRQcn!g$D_C{fpnyw4t$J(*=$7y0oc~^kaEe|gPb3^ z?hXVcaU+FrXjlNm29N`+=5NcB;fs_=w`|R+LSGh`b%ek z;pOMx1dk%+NFcExTWmFBpa^Xhr2_h zP{CDUc$~Flw-OQ$+ND9TB9^6drVZ)Lc`whDD6UZ!7u_>U;*+DY+#T6sX4d_9_lTd~ zC|lw)yR)lY%ck}@brR#s1=~8ABNo_Rw;b3|RGFPEx&%WTfCwLSM`wwHLAO27Eragr zEa<=7f*i5e)o0}(;zo$CB;GiDuvOTFNmJi2=NuJww`7a`Vb0kmVvMgUK8Q@g-oGsI z3QF#s_95sQnRW54X<6>lENY$Y4#=kdIdV!4?ak3Y&Y|l$k1nc4tEw7}s?i74?gKrm zT1nGCdH;YA8uOw6)hJM^j!Op=IE$y+!mXeRq)I!{?i+!;rbstg4Pr`=3oHX>H&gAL z9qHnr%nx4OlQnHi!_Y%3~tF)mvrXk@~j%^F^J zZ-Ta^xl=Q#d%7HvP7~ARvUEC}{w<^&$S?}3(AX-*x_NgPq#-gN}+p7r=_~RQKy|cq7>8N)IE*QvFBm0 zxtcn02;}5B#Q(Ac)y+tjvP924G;x*~s9HM|d2=m3CrL?=HE>>)io+7XxZZRnS^fwz%9 z+3bd#s~mTSL))BEZD;YmR#eUuznl&!<={qnNoS+5r2!l1>jUdhPJhQ8=OAuX*>XNZ z{r_9Pd$;vO{(no{TlmY`E*w?dhT`6u@aN6>9sM$O4t+)pvHzFt#etvJ(18T?#||v{ ze)%4b5w?-2ByAz*8-jelzD+&}b_vKw#DEYd8NvhQRh(9#&gnV$JbxP}$Oi;JU~m!E zB86rtrK8R3kmEx@r}GNOpcv}wrYej<;pc-1)qi~VPIXvNDK7A(mHU-E&}~$wuS(rY zRW0~-9^Hk$E5nZyFQ>wM9J=dcBqzf+iq>Oez(4=o`ZQa!@^^vqzsuhZKJE8y-~Tm0 zgs$PtxTb`T!Zt>A<^n@rb#TvZsj*G;O5=-&c-A)XeHbGIoR%<|G3^<+?7|RTLe0kG zzT0*dNl5D0c6L{YgQcAev7O6VDYu1bY1rNqruE?x)(dmv(_&ISRUDJ@gvBu_*FwXm zSVJsasH_hx+yOE=uswr`r^8k7j_ex?~0&fHFHwV0>VqFaY9Vv#C z1q#FL%n0O8GXWg_U&(Qq#Eg2e-7XIJqhue?z)i^ptmsW8v@8RLzxK2YQK&|SWdM>5 z_d&7RjC?>7rFou1g2xC#P%+M&_h5vjlpE8yS`^T6p1s>7s|n!kaGP zNc(hgJRDq^CN75=2lrYuuXh#EKNcRJ21#_hRhnoVXSR1zT6_S&OVeJ2PBOh6f$o>l z5e@w(R~-M)pT%~Mc^h=tak6a(r&n~p_)K%fkBNZZfTj~S$hI(q)0}y6Af2#9@E{|y zHxBD1?`90P6kb7GtO;yDP5L<&=;6-WIJ<-1^_W-|bgsr=^vGG-cx)On&9k95Tj0T0 z8gPi-z&N5LIQ`>doScKfJrz%Do}dm1dq9GErWk(Q!94mG<^f&4UE_%TBk}Ey2$&RdplZ_*%AS9n7$9rP3(*(_#?!7!JL@h$^lvKXLxmbpGWxnIC zY^Yx;ax=YuY8(oCSa*uTz&XN?wzl0pE=Jl6w!X@CPsBu1$AxlljPuC6n7HcL$kRAD z6_?x@Q3?81G;dg342-d*vR}`;vUkRvy-Z))qA##WLy+k=d^5#CC!{mxjBofY{Z&?yvVk^ON*y*^Vrprc2O zcig4vH5e1@R9`z4z-3%+3&2TxA3nG<@U<}}4M~;L6~bbO?>Aei_DUD_`Sxs=&2I<8 z&RIzt=mG=sH0r-Un77Uq&0UBeD(UYs{aIcn@(hBab;tL+D{_{}_9?xw#Vc2lvR-$3 zqNaW@=oY4gWkh#|`Cnt&drjI}TG3C;MdnqeVQNn^B*Hc=GhmhRi98j_ly6(l^78_* zEW~=Qr4qXAL827B;o%7TDXc!V>WxCcX>yQ!QFA`>0NW17Nip8=kY#Sb#nV**NE1ar zoAb=Eoh_bNZgV({n{F*U9pXvkoZ^A)X&Z`<2+@GDGBm!+{Z5GAg>eOJOqX%?CFjiw zd}Re$@JQQ8or~tpXE{r5%V)etzXXH|1UE`cY9b*sbQXjVdpHRBVRs|iDFj?12Xu>o z*D(aCu!CrxtNbXRtt?K5%gEpm&?cRMA#Arzu-dzZoLeF4A9@}d;7}UK=F;vV36PT| zyUwSy^G^5D^8DIu$DMUTNl+HKz!Kn5`&htHU}J&7T6DH0rfEIV3mXg$y1dIk)CAGe zl1nYo!vc4E(y|LJx|}M1FE{`HTjna;lP3M)YPW&LRY4bzRTJaj?548u-DKVA9fXOm z4ORXkV>aefBc~>w4s~RIUx|;W?SoIO4bsw7;U3QG&u1Rqw*SkmJD$&#&GY2=*951& zn@-+l-~9i_|Nr6fuS8Z=NOpBuNTMEJfc$;N6}U;i=S(K?K0JDh(_RPu3seE(9dPf- zG*A3Ph=06u6p)h;t0&W3A19`4zVv?N?N?z>lLMjcI3)^g*FuFoZhU^9{SG12`dEih z>xy3mPPa3nLrFZqpf7&D`-+Yn_AWlC@O=MJiybyaH@y$7Gr_FKXR?#=jpF>S0L%7{ z(*tI{CH1}UH?cvm7+0!Hg^z*qKB9*oR{3^!OlybeJK~TrS;3Q@)*p(#>G}GvY)Hjk z>RMcG$X6l8Af0VN#Xb^%n1qe>aI^M4Q*1CF_3In*eZSi)xQ91abCYeT1$-6`c=ITD z=>-%9*2G4(7VV(aMZz{EFP}pt!sgp=|8M02f~pgj)#UF#JBtWs9uQ9a-%f8m0jQD* zI$!$y`$Gq8z#SB4iweN`Y5*x|rbbb04;4y3JP&pw2d01ni2Ww`cLxf=-l8wDb(*i2 z6fmL8i4~eiiyeRhRfz#?tG_Y?!?V4`QGi~IisC-72o)?#4yGgQP2FVXiyb6PbQ}J z8(-w><{6p0nzqrUd6 zi4fV}HQ_Vy^B+Pry^eH{7*(XsQcR?*S2*Rc!YQ+1;>!WGIpt%OQ}$~5IgJi!(Nun> z*CC@4y_SB?qC-}hI>R16 zP#Wvly5DR~;*mcV^)YnUkGP#R_?Fm>G(<^abJ`}F*-oQ2+C3#LXKd7a>e*9y?b&_V zi2N-uy9(RD^--R}l|wO)D6}_a1pM_12UMKvm((6gz7*|^mUePn?-aM?F6SWT>>XgD zRXo=!#Wl&JYT~!Bxpn|L)|B2Uyit%IzlQlojROMD}5#-DUEAj(zZN zX*chM%P@G$)C7Q^uB&EijT)y|aTM=`?7r2RoLLOSW^W@}pVG=Z&4V-k8U3rD#OV6G z(m%((##$=H`1?1^H;%1RAMl?#9NnH~#+m!@bFBZrW3J#_23q4a#y(@H1Dw;IfcNc_ z4B+^M;x_nuIo8m#Ce*|~g69(UatOg1lMdy^WYXso&EUPfiK2H@sAbAdg7Q-LFX%~d zBz(F~H(uZ{!O0Tx+hxN5hs$3AZ=IE+x?jZk;gg(ji`8cV~=W($3*1vL02e z@maupma7nMQUh;&1;xUWQ?0Mnxb<3R5+Ip<*${FE4Ghx=q9v{m>>CSoPk8w#Wm z2P{_SAZH&GWCy_suG11=ByMbFrs(F?MMUDo9=7P=p>XpoctFD_w3Vzk880$}CT@nq zfH4^v2?NGtR^%Hn_m0-Jd@uM?!kg?0y7r1oP1FmrbT;lcV6@Ep3>58~bZwtE&iooDgx>|hlBGUtOH zVqq+E9i;4cqwt++;iXTDiiKW!uc+AJ?S|xMddxi>qa_?HJ4H5L}4 zoTOS<1n1SXow{hH4M4iTH>4H0%DxC`*lwjJGz0)~D7~%Ou@1-W`Vsj|3H#9}k=$0Xt$qb|)30FCtF1kd_{xJE7 z;7Zjj`g1&N6SMJfNUYZCbTK(@?o1O~;x5WR5qIzu9{+f{F~KSO6Zhgj zoN_L$ADz#n4>I^N)UC>|K{v_7CFP^cEReX7%pMHb}Ws93t;%Bl&x6E`TEy=tW=2GV~GhlnvF)N5dr)II8)|RX|K65L}KuWW0 z7dg9RyPPw-`otXSoYNRpN$tY~7)oX;BX9xQqk3mmaZ;`A_Xq6Uo)WC58cf#Y0Q?1q z(F}z3R9W-58}45LaY4&O$}+>57!ZvEb!P=2!*xysXhi^4tHmEl+63d02c`Ls5Up^o zvIKNf%>saGQ~j}aaNjeSo?~<*Jl+(DBSc?g(*oVo%$RA?#8i3q|KaCzFX+^8>xWbU zfA*|g(ORiLG8cdaEfoB?W;DQ$iGi`)8KwdHqSX-T9i4`tM+dJEezcczID-DjNrbea z5k}E&oF<3nicV=Wz|^mrn2EVEjyNG!L+^JKYSB7hS|f6t}`zlWU8f5hNdq zWPrRCS&7`s)8k!hi{0rE#Z1ZAtb=Y-^+!0Xt7d>KsD^mBVo$9Psbg)?zjnl zImc?#`Pwe%{QF8O!+Vn7)^TX-IA~vEVyhMD9TUea))fO&qA&{F6>jS~nZVP-ep`n| z638<C=)HhaZ4WA?>#V5<2hqC8ckqvNau_DuO#91p)_M(v6D<;A=$3LCCr<9iGJ#Gu#Ck zG%urC%3fCpmB;}Ue?Wh-Ulsys_eYcF1T#Tz3(iA&kH}-7*F<1xDE7q?pj%|>Co@G` zKHzp|x=1*lStL_spKbBB5N}5ScK>I@9T!uqFvz9WMZ7&LXs!y%0S9`i$#F@oXZLxZ1sK*i#Q8N5a8K2FOKe z`qr9adD>n~j^WjFkmYi&zPYBjk&6q27?9WCKpySLE160Dxf_OCGjP5X_c{WTDu9Aa zjwQDNR;Vw>F`#d)LT8WD!yxDDeK4H6O%svP52x<$tdnO6WG9NRfufJ%(6?XIT&RZ& z^rm>dxs^bAA8Q~!HqXh#)7?QA=Jv;fxE8|>S|8)lbkAMp(Gst8U~sR&B*a)OGW3}N zIB~F06aSE2MF8XTKN0y|yvrbKBeW>U+1h2$JQunCxGH@uem)?6ybu)_pl5)bsWafx zrGVMYq+5ZKo+#|KiU?PY{SG#GC$jJvxEAncKhVtp-7D1aqi4j9&`fkr*Yx>>A6qh- z^0dy%06j4$vioVVI0tuxj#V>2j;K18XJ>At)ia_`o;wyPd4EA+_qfPC?jCmKUU%{JQPsK=Df-*0&)*-@_v?6E4+f`g(o-Z2nVv{?nrA zQ&3NzeTvKM^Ylk_?HM}vOi6?MKHxF&)wC2D1Vlz?%)ksJKn_x%BNsQVZQ7+waV(^t z%@n6Y4E1w7Dv@$M3U3$$Aag-C%F;i~qGnn3N*0UHgF=PS6SeJ0k-pW%L5j4g4#>Mc zXmuwe11X~n)}t0!38W9QBOg{1Q*0LPpK&rk_wXW%tBH{w2C!*pDuM1EHXBtFQ^We2 zs$y0cd%}fq0?C)t%x2Zl<@%zkz|>(;%YjUHNmbD*i_=eJxjn0jPT6J`Jk9Qn4^FLW z_NY#CtG*9+m}*ahyj(3ECOy?TwOjRSB~2(g%aV9#5s2ItDd@{_Y69dEbv3%Xlck@9 zMVEz=I@@}Gn|hS>CE$5E2Vb0{xSIhxr3@@yH|z_7I7;|)*QAM2<|6dunUFgrP23DI zJwHufmPYH-+{0XGwR;9MCq8k)jEoNfA?Fgh z{eqhS-O2;HI{#zd?F%q@hc}=1?GqVdWav%o=`sW4V7U=_u7oENr$>JV-9n7hhsTzn z-KR6`Mpfu)MoPt!W%2c+P|1Ur>L8Uta%Pw&7Rv$?P!w!elMhEiCu^re+nw6rdxF8S zLAdX@!-Ld67)$MUUYF0qXgjh`7vJOkaHX06xld*DvV*#PNvBh#jV>$?~OGUa=f?OBkwe-l>WP(^F4X=y^V z(QyL=B4h^WAr4;(3tgtWdr(Y4Lcnx^WHrsO7}N7(9J6afLf@01EvaYYbM&`!^>!|lCpWLhGquzUM^NdYLQfBoX%g`We3Iog}14k+2 z422r%e}e8S1h4VVDPc-@kG7>g8lf@fq1v1mcK}~`rk^a1DgsH?hb+lLG@s&Y2fyb& zrK8JV(*G{Li;wv4-ld$I_4usAG+{yCj9Q>S@%=lJMJD5cd?{Jq%qRyMDULaU{bDVH z`p_n&N@<1pjH*~SlSkD&9c*3|9a_dWIL^#q3Qr>hyOkX{hIGoFS`i+3W%Bkym_6}k zI)fesa_uQ9#DJgFYc&o4zt%Zsh_y!Sh#?LbZx;3WoyEE-)9&))l&|PL6l$8?Bk;-DYT;*^t96aT$lCoXg{g_oY7M1lS&xumSHV&Tt92^CK6jRnS=4}?_w%}pF zBEYwErGlBYTy=M=w7HB8Hpk^DGFrq8p91d=*#Egr6`%=~7U!=6U?ZTs56Bsy!i=~D z*2iGgo~qK=)be!p7>cOh~M(nyFF8SkJNVQ>KhpkCD zNLwv&MLmGbJIq>VEXIi041Jmv-eifj7A6I+g}a$UrS*99oB?Ayo^R*%S}g+r%y7;a zP{74b0lu=R9(O)B|6O&!JgZgQzd+FKPbRqbb!1}q+=^R-7zwLCL?25LpL2gmsO@lU z`&d&Wfa2?qQ+AP&_Z&n60VX_@g0L)bud8&vbf8%8_b+_U>8I2HmeK;{_2hU+T;Rbn zX_;d*gs6Bh`TeY-%a{ox>(0Ihz$C?9qR^a_$|rSd7}q!Rz>y&SD4f1KVFrWOQ0$Eg ztt^w5{VRVV#4pTzMf{c-_Qs0cMWME(nS4Daf-8YRq-RE}K)-mEU7B2Y@Al>ZOXF0t zESMSB-{0Hc#+@e*W{$1tEZ)AM*zHtmR@za1K3;EcqOMuH5qRM(+-k_ZM06@;fnY2` z;%`Fy&4evRV@4$B^79a%l;1PKJ-;K*koe08JQ%3hlNB0WT6sS&^!BgW9ZCG;VJrx; zhY)lwr3=v4{r4aaY}22>f?g-HoMt@P9$=E=3z$6{2)f({IF^ffh-g(bUTd^4YCy}$?e zGUW_Yj5H$H-p?zi1(#*s&{L+AQ?74-K{Lp=GCe4AcR z-J|Z_XVDAQ6WRABzj5zMx=3)FVB-!81#fAlGa5E{%3*?-g^p7-usp@=a0q5&s)zZSRMoeuE@kH~O}Cu87Wv zd`;Y+%;O29HHc3KFW(kl_48Ku;R|+i#PL0fwGUQBngqR8lc4u#4LKX??8n5#9Br&R zyMm%nZ>tYN=E05`HP=92505OrxV*%PYw zH271^SHuuvvFrrJ1wA+E>&*8|%q0AM1qOyY7_+OW%pXIEjx9rp&JQ85nbS_;}=Lei6$cs?g$Th>m<^6ycMxLvlL_+J31l=bj@$%S^#9MQL z^NM=o49f)kB116do+E?_0Kof2GC#@dev`gBjH3N)MC0HouuO550F_c(pf`z|BsUseeFHpnObx?j|lU!iC3u>8Btf7ks}N&PG9&%3TqCFNJvKX+As$W4Cc{sB;*axhV!vOMMO z=0qiRs_+a!IZp&%7T=M-q@R=YFn2cxOfpXe>2lC%?otQW?Bmi9*PQ6mEZ1D_(gxSud`#UT;b71&-6oOm}fk?>Y0s0)Fxzh4N>2aIXpxYLgs=H%}8~MLjMK@MD|~I z|5Ln%gPix=?5>K$UO!*S1Ulmx#k>ZSUe)fRQrpsN7RRxRiJuAavzoAa>PTjPhDc8x zf0n7@ZiPR4805@KPFq<1D(~&k#3@w*0p*qo@m6=u9H3D@4IJBU%|4^ik(6DO$KH+A z6V+>Sy)q~wekjBb)BczEv*{~hOTWg?aW8rDHQY@iiFX6F9qYcOEFJE z8djEHEyR_Y&Ei&2#!3Zd!x^&`Fu&QXd$y1;O0keISpm1=_e&-?8s=&;VVXNf!6Ejs zVqRA0bZVi=GmCAqMktvOTQBB(rxcumbg67U_K)PCV_j4US;ssz^PnnDtL9b28P@F1 zZ1r2Veca!OuKa_VP>BpBb1DJ!xHJdb-~&Khh}`VO0rB2{tq7p{iwR~JE3^#!IHJ`; zdN;ia=ym#i9Rm=hWZ-E*;Cry|2spe_;f<-AT@N6K#sZRr~`r z+?hi}O~6x}eMq06JIM2~5xp1?tpoKCAa_wfB7Ji}BKPP3GiyV zl*-2gFD%3i0A3T?ai|ccCf0u1nBu4R@IVw6)*BT`W*#WPk>i z)|%zS;hrR68a$SOzK>gdNeB7QhLfC0Xpp&uXbF6Oi`X{Iv&aYvLkh7Pw!y1ZSOz`j zpQqq`UL42A?{$)Gc{)AK$-F03mTvz;LV4H@^D3Fo{-=b9puNwA^LtJUk{G}4pD$m| z^6_6q{)y|p`2kU@(pLL*wZaaJ7P9`#RpL6hK4iHE(a2v*(yBca9jS;feF5V{9;gmJ zBiLJUK@Vp}FzL&%7V{bb72x)IP%$qkbRu<1`+N0k?$5=~a{TW&PpzdM3gRF6cM!C_ z+;4!e`fKm7(nALX8=N+q>k?!)-T$7yK9HdcS%?ENUCBM8z#2q?KChTJ6}qlqR;BXY zmGi^gKgn~@0vK7>GX29mlYg#R<*W1cp9n4(yu=Qgp)%i00vG>zLgqMqNs+FnCO{UcMp!AbtqV$e+yS zME^{wH}l?WQR}s8-XIOW{4n}COe?h=FfyOvBRxwT`h4TDk zdD9q@FxS0EvMW!II&&48nwlv&*P5ZsW|TFEpk1~Wuu*cEa#)ti1`8b&i3QqE!HP>_ zG)_k%X3IxxJ7kT6kbw0*1*!qEg$ncAt*UuMrM;y`8Qz23q65WXLo$e1w7yo!Tc9FH z(&O00RXIzg#j3qUrL|?=fqd-?78FkhC>KJ97K#MjM=^&gG&p5uCeKOWpZq-!Eg4Go zbOJL`+7hhC8gQ#(kOdbGRpZIMMv%oLlmx6ZU98ca^m5U<1>P9)4J8Ybk8$)1_WWK? zT{K{|HT2ipot9HWVCLdao>C$3abV+efsxWM&=T|>E-g7Xq;LEn-xa?x|4DyJsdLGi zDKAgB&3&Rm-tq2vxKjQPc3$5P0VeeQ&~X#O;KLa9vugM#oZvMbDIaS(9$wR&#&FNk z8DVs_&Uq%9638iwO^Ng^KEh}-tIi?|9(<|iffSRFcaq{RRKN%Ee#G z3)DOtfJLN>LSPX&fKOMmw@IDN6y=t$H~6}Qx^_P4Fh|W-@<0z&+!G3#hf{Q*s*h7? zSjyDqc6h!IC$kz|Aj(g+?SCpQ{Cs0L|B2<~0#ji#w9rNMkuSb~oSj|V%_KH)GLKP3 zY0tlZnBXz#LgBr(I9~;6;TJnm0nQk5@wMZKgj)2S@QWP?4z4@MJx1aP>vr&uzxDi| z_Q4pC+*O2=>^9&3M4d{{ql)ik6|R+%GpvGl?s^?r&xMDR_)gLJ->U<$_BttPiEi+q z$Kt8JLicWZFpBaJ*lS0i3L=KBHlxEs;)tmaVv`WJZ%7Qc^n#E$W0_YxamcQ6-V@Ut z3-mT8cZ?_6xOrEknCNDlmyrGDt&uQ|%mZjrZ%=+G#ca=B<2t&Wne%O_#sFqu!Y z(led!BCSXcQz49!@ON#lN-$}?)rU8$w5D{%`gfMbBw^`2N%0UP;VSrk70?n7Em3Js zO1?sZ-wUJlwpTh+rzqzBS0Rs6qabfGxkzJjiw2Xf{yLMBbda}vvZDcV2LKwPi1h?= zT7b!w0gzoxCWkSOe~RG@306L`Bvo2lVZI+ z+&%ZCxRwS*lsJ_U?+c5n%y{#s#Kx@n-uhxFTnq4HPPMEXPl$uno?iQeXj3CHq`ugb zyPww77bEW}H0C`i4%YFO*B4zMbU+WU7u?=J%&Di(Xdn*MOPgO`tbEv6{G{0Y@MTQj z)sN+YzWi7Qa(?i*9QmXe^tkN$q?q!!MEbJFG-9&cM;v}$1YXg~uR zxRV;t{ss^CeTptVX*YU`T0P~0?)FqEdxO3Jb_T`LioHn+q1$-$jUetEf3Wu`h;?M2 zL99R0k#Lq?01a#(&?^*on?g`GKrwbkNpGd%eFEoK^3N~l?I40F{nc%x!fD8bOr@Ek zBcYS>0_a_e3;G1CWEB`#As`cVQPam(T+ZiL9|TnTt5=|^i^%P&QgcN|LTBX#(7P2E z^hw3Np-_Qpbx^6RnhtK^6YVO#Lsh^JRy6+$=@kL*fM16@yW$^BF_?|j@a3S`pjk-R zp?gPzVrsxb%De!FVHo9vkUrDFHniIbA^Dsmkx&o}VP6YMB=irm|KW z5uMsA=@Nly1`Ei0hErA##`mTfsLc$@JxyX4>nzR@tPE1orTzC1R}6^ z3-{0BkHx>i?)}F7hj>5vTSDCf9Td4RvznFOb{}k_xG+oWggMFgD|{Pu z$ST4bb0G7$DsbR&YMKxTdu$dH?p$YanPNFjl~Ks}QkC z+{o4`vY85w+C8g?)5Tb4sEtPr32IhlX8oi*TfJvR2(I1v<##k z)iO51HBJX-GETQ|G30p=p{zIS@`z4n5r<7D1TyboP{&lz^-9kK=;o@ru=#iZ$0)aj z_g&k4P^48A;&J!u^rg~`$d@xn7sk5P-F_tM-Vb*+{h#9Xm#`!#7c#81r3VK3#Lktl zpM7L6I(2C}gNEf<#i5ud=lO>>}n^L4tC+R)^8amNsc$=aoXd14XHY|R6` zQiGKHkS1?xbg}F^zWf047hPl|O#Lp{;CCG9^=A~YiZ;H3fKhV1=a~8afqc#v8m=%`u)B%Jk+}IS^NQbyK z2TJzk>K75jNqYffcT4$>*Lgo2>$`kY)(|#&eqGwX9~T0^!d; zvGO_1x9#eKaqUABl2{F_K z6~|3-{3<+WKezegd=+6A712|{GUonqo?B1-q4!DtX4$M@bH1r$V=J7`MwXM5n#UD* z5k|VH)IQ}t=-U_E#DLvYYC=BKUxlP_mTIn2X;En|{~LCm2NA#{dr>a8k=GlR9{b~Y>|5uP86z7`=aw5Hg zKn~4I^7-HU3*vF);TRZ5HZC}$Q@;n9DxBKzViU@P{BjK0Fq5B_lEZHU3@wnQHM#JG z>JGz{+lY^sw>eRG!x8eR}3`B^1@n>x{SghN@z$CEt z!f>9}W8O{DOlY=d0YHqUEqNDUfUQeBZDjmWh|7lEGC++|^;>OJ0<3J3MT)M;L5x^u zG(4KLC<0KN)*=%SMMH0kvf3F=^J+jQjke1XolSWw8v)HCH?qZ0E3zm@%(t8^Re{VK zZIdk)IgxWfv~c7}U|cwnBltfkyXSBm)2=z9t?R(;X|0(8~9h@$9B;0=K2(ls3OJmX` z`ea_3MB6u{Nwn)=n!7GXoKJI?=1(2w+Q_syh^8Q6gLWvtSMR-@55 z*a7=jZ9p8TWETxz2LWq-xN(xZ4Tla{i-Go|bt~5&ZY8$8q?JuYeaW`u#)%{OZ?mdEno-y<`11+`q71KKI<9@jM;&zkBI$vt%!^l;s3X3zxvJIK<;NFQSG_0?~S-yZHmaM<`8LpKy4 zlu85+Ipk}43wymszivri@prWN zS>`WfdsY0I&!+iG9>^n#1QUIw`1$SLwZCrRX7);BFflwATr$b9gr&<8Sqb>Gy4J5m z{p5Y{6=+0RE9z_pnlEs9Lhx%DqHGL_-g@=p9yI$ug&@)>Afzk~RL>8=RsgpW(aUm> zGQoK#x`$`sHSU?_l1;LBNR9l!rT2S0w}V*rMkZ)mfr$OZ%$ ztPv#gz&Ry<7mYQHLfTSoTqC9swoAO{+&50?r$U|pmk<7(DgFf2x&@s?CrSgD=X83r zuL{y!e2Kgg1nE4kxU@EE^K zmUkz4{?)Q8dat6ipui6LAON+VdCG62D}ExxPpp0LbCR&kcu_Kh+a~1`)UY7?;?G+n%fA_ zl`2c$Kly%4fD?V+!eKFya-nb8Tr@V7r+)>mw-x1Q+xKr&P)^0^32b#7?lZiBFHCu` zm6+;p`#k3=Uf+Dm<|`7{+73$9qIvb05RbjQh5k2t?;YP(b^rgLD_OGT6+3p~I154I z5{5jp3kBI$5|emfJ0YP3MV4e+#I}SaCoy~qVU|_)-ca_YKpAD0O_^o1lnrI?QlQLy zpYL<;m1UE*pUe)=&14;!vKS(bjbRVqF znD}>t@O`Z8)Rk8>XHPYcHga9A{g{9F+&@a^*~~l?sZ~m?@|?gqbPSL=&XZ@agQ^{8 z{D=d(jVVy{#|)9HbX}!eg&&jG=6E@8{6RnvNtQND=q#X-se1n3El|P^@ouv|7*ptNXTU z>Uq_GzRmi|U}t6a)Q+C4bs%fD^9S^*NRfM&3CwXD(gJ^aZW@(poPfD%_e|PU1^MnM zcuijEIO_z5x?OYOS5U#sXa3dwA8CAj22LVJ!c`sWQDfF`Au#6ntyOAm0nBzC5~!JvGXcnVy5WHvy=2USKW@s< zzJGQvZxQyS#~`CyZ+$d*tHw- zD@l4Pzl`gT^NYA~SiwwEZYuDR@_GR)M?b$4Vtn~oh3aql zl_Z^5P{#Fj1x4I=pkO8`UljOA`Bh=Fe!lcX!_8v8!YE|N{$|u)q=H}()Om*o2>KI; z2QRCy93sd|o7eK@CQesyxNj)sbpplbmJ$@?zP=Q-Wx|=IoE_-CmUMT~>7?hmuO>aO z=v1!r-Dh*1UvzS*y1n2NaF4rDVjRARr@HlPwDB% zg--YNE_Dm~oeQwO>RRB1oGRWFc&eNdpz}7Ul}fEF z$f@GpFbBD+4$4)xyQ&^{tJhrLSkG0c*SUJ#a3P_5WfcC|p$>D{y6r!^Hyy8JARdPs zQT2XpMBLLc&Z%kR|P4jxojR(P<=(t+c{wEvXCgdpyB)C zJ13~?C%|HLT}>qr;jRo%^Nj!9Tyh3xn$i2a;W(o99Q{51zQ2SuI?5wG|LXUm62_oq zw7h@u+w=)60dzh{4t~;on1Q~53$9VX%V|C}3b4ey?D!F0l7~7^VV|0L3TnTXc*AQP zxclgFnE#3UmRtfNt>3(Ko-$4}N{}WmG)$TMKb=-Sz3d}H)zDY!VQXDztkrF4v~1kf z9H{tPhx>buba%XL@Z+1Dg0nd=)U^%QC%Fr_@rnCK-*QN3uGssZ%q!;l<-AY1*5#C< zor47#1xOCx6MZGg8b2%1;6=&LR4^}Y^krad8HZB!IQbsu?d}eCx-3U|hBdgL07aq^ z<ZTpo`JWNo|KZ&dscaE$#6w(SjZH@$Yl7 zU7hYI2JgJYu|J@!vxLhRos}ei>72s#aXBJf%9u43Kmgj-+T-E*3DFm-MUxD(ohIJl zfymu%>|u>hTB)?>A&!j*+Rsf@f)|tmvOR>Z=fLtOQr@dtEjGs#%C~m`aUU_1QvRsB ze4Ymx?kCVt{Iy>YqpROc-?@NAu?+Ten^C|@x!-8i>027(^11?K;hi8{mly?z7}r~6 zO!Ld?ILash&N{`wP;j)P;CBMnAeNZ@GRbl_X7sQ1U$G$_WaQG;BaD!o1W+)}N<-P$ zU3Ul;;c7E5QxjHgBSsl|-f*AD`LM?CSQ8gGC*0yRuFEFwra%8NIpW(~bQW(o$jQGh z$G9xZ(rC5YJZm-&Qu?X`f~eQhmeRmEh=|R*PR!Rq&bRu9X?Z`+ zi|a5Ko+;8iJnwu%ZP09;{)rtc53U~oH9Uk9T@2&sadxQkGS7VFbv3K1DN5~J@iU`4 zYyZmgGu{8CW(xs)$;kWA0Bg^>kKQ}eJy*>}V$gmc9WIobi;W4ma@@$#IvHGF`{KDl zG5^86S?-UsbW6Pi7TBc^e?dji`x+c`R(wv`Ff?@EKtRtb!cI@s3?7GRA z@Ua|E$biDGWF1@9Dwc<8k46o*msDgUGd)7<1&dHHPd)N7!I#ovspKm0h+}UE+EHUGSh8E1KZu!wm)M4|=FIl4An!oj9OVn=`lwZF@J+eTy^D&Diy&q8b>@?}afO>8x zJSEhd&5N#BqJ9;abX!2(5`ec!J9a+8^=`r6W~d`4mftc%y)v-)>fFP*`0u)y=2 z;63TJ8S1<#Q*T2$n1Wx7I(0_=#WU3TGlY+reJQvr-~C`d=e<^$zwP**VjQ2(wfx6Q z@H(SHW8w|6_t~Y?z2!9FMyER_J}R=Zi8F0E-;-sq?lSi~xL=o5Tjjl7PHbnndvm$^ zu-s>*-AKM0%iK?t@v=d$j$zTtC;R<=w=nJX)~ukm>5s!uuJIhfB)1ezD|W=KtlXQx2P<{yw$x57X62 z(~8cUt}dKb!s`QWoL0%(0*;zqbjEb!wCQ5C8eMZz&x^XAk99rI>w3=A^*m9q@MsPf zEBu{V57(J`m;>s;>`OfucB$t$UC%G^WSL%c!F1!i>GzMVN5_TbLTq!3-p|FxJP~)W z-26>>#@|OR)zWXtcNh71apMcQyuy%tFX!fel54#4!+cNt>+)ot-(*hTbTpjl`hsI(dG{b<5NT^GnWeQ7i?m_-?n^2nfsbu3v6kz8n$a!R1BoEH|E6j*FbV zkZJ!c1{40CQ*>b-KAc5IHtpZps3iu1Gmzbz93K|DUh$OPTSAiVrXau5!YhcM6NLI?it$UO%X6K}xXcCBv4@bcS!uK{+2(zx+CQJY!r^4^ z3QCj59yv(7Dz9*GEIX&XV8XbH_vzwy?(|%YXQR_|WsY%pj_14_P65m#<+Pkx2&y@r zhjVQ6E@k7>X@N9yblSlV_fZb(u9ow5&xc(96ki`aBJ%DPgSz`AJA=#{d~erM25bFn zP??B;m7Zu1D(Bebaw> z_B?go435H5_ij~o(p+_x*L8Zmdf1!K^*i2|j7R6HueT{ZWv+T;mg~(1^~5aE!d{wv zaUM5r_qo2UQx{d2TsB|bRFmR~TWia?eyoh!vbGaA(Obrr`q zsE6tD(Y|iNhuNVGB?zXRZ2r$OZbVZ))a*w(; zPgKkAJf36ojl;8cg)Xb&L}MDZzN^LQ@H=DDRZa#RB}mE*7`wjeC;)wX-ywGACv!?c z5I@K%y&E?rSIK#xg)Zjq7FP)g54qUNue-`X?>={7vXxY1^Q6OdFz16g!aA)2rwtnCD18dY7iY#$i&#T5-eia4UMv+<%}OFEA7Je?Lurh&XJOKYAgnCOos*Z0;1^hIPS~_V!01-xDL%B{231m zbwf_!gE_`s*@~U^=WQ(MR(q5tjQ*_kjeIa2fFB{qD8V-HvLVMUer8NKlu(mV*Khid z-{{hkHR@*tKg3E*-aiLltDBuDgSvk*7V_Ga-#GBu#yRF{D_wZulzeb_fBx0N3wh6z zac9;TioCMT?)2hb!-ez4Lt@as$&q)z!?+`BTk83kys`)w;27ahi*9kcDp zkTJ#=e}U_1boXoYM9A--EGt$J(FYH zo0Hi+x{PhMf7#$fy(1i=h@I}7!1blh4R|i)Y{TWdn6P`U>#n zUbu#UB%^_=`wUrwUpo_Azn6okqkYz&H;RwM2IF+`7L6~QdkQgKbGchx$*~u1UK)VZ zaJ}2}pxe03jbf46+r;UxT`zGKp)%YcVGPt=qF@Moity?_MUErWX{S-=X^x^x9Gtyx zri~pNeBE&Gc}u)RK#|oSC2S4sTLxXnF#ONQEknOhw~lmdrQ4A=#kE?^VA1F{p)G?| zm9TQp6zd6T`ANaJ59S>pQm^>mT}Phl3|@5!BXEn)yaUKm-z(C#ED2+bL(nBn>+gcM z-e!~{WjrZnO@o282P~84a`IemltK&dGCX60TqKW-;Vopj#gO;l-7RN|lUAsZkG9JT zs5-MRMJlL(X<2D~U7yae8%s-s=KKfq(f-4oE|jUG zonNs$=+BJHa;9yP6_$UKTfO3vH;%mRs$da*@9H!ABYf*Kr;C@fALS~2*@FXe@1OwP>$`o=mRVFt(K$U(QR3-Yl2KFyka+U4Rc z1%Gl0&$P!5#EU&rd6f(cMN(ENvMGAB;X?fV-k?A$@Bgkm!6>!UU->D-@fs7r4{tTr z;ezcb!Ym6{Ks-I%xiwLhmyS|1-44`M+HsdL{VxuJ{iA4ej;UP!*#QJ#t``y24lzpc zP(0aaw$jMK7HS9NxIs>Dpg%Q{3yk|cys7gX<6hqG;DRP{miDe(zn)tuH*&jx`14X+ z-s3@Zl4pt)I!L$cN<*zVg6#i;G<}Ap$ww!1`sVw_Y~J;DuA>x1_ijfqlIJUU`nuHf zIkW%ZQir%^{}x9Rm*-KJ@vO`9q09Kf<$1?q{!2|2UxCD0_t^OO#l`Y6ZvGRO103!R0H zWYwV8&k>B<5sq>g?%Bfb^*J)EUxd)39j7q_7dngH#MPaUAA)Q=hvgWb%6VbgZ7c;< z!-dr-xXp7Ujq8g3Pr-b){S(1{Iotl(h3q<@^K1E{Vyy~$#>X2KDb(tQ zQfO5(9Lg?Rr(p|jw#G$pWHgp)@fTc_l_vR$PeI(sdX~N{D!@$MoUuVn)?o$ivtdrg z`Hlx*7Ea)Gv#t`$4mF#T%uaTg^67NAp>V{KBU}Xhh;P>QIWxI_BBw>hP~t#%JrXS&c)iXMBtbK2wb0x(vNHRkla z;|a7UKIFP;-)z8+3<+|4!PI>w33Y!o{#M+T)V*wo^qDG#aTm6&(}`lucOOR z#?Hb}Dv?~zxA?(yYhQO^(mUC4H|=`HxzjB<06nNM;*-CR!oJR@_p_IdbIaxN zx#dscpZz%YTyz*x!sVhB?IuDtwE-EfNXtH{8!V<2ZE17v^xq7qIbyKNiE@dxGDtv#E@$Mvcm)#xeMV9*U>}w4*JR7sjxrT?Jyk8q0 zUJ(A+@!i=e4}4-*NV^ zr;#! zj%OXk_&vVi&<&vesaghh;kg%q$Ehz3*U3&|C7!g~S8U$@mh)O3|7U5uXM{TLhUar? zmE$wAKA5vB*S~O~+HxG_^vgLXD>uW(1l79KDE-(Fwsi{TOXvZrz?Hlr4~Jh!`yb6pInJ;$4YX2mCd;v1M3(FN}^w)wlEUgO1;GS0=C z-%muh2xMqyu@)sKvaC8bQJ0ku-Dc^;caYUYagnxwQOqpuQmYDLMrgE^o6pi=m_IA} zdO9xumA{_~@qB{z9qhU{=Ygr}evimGFXqqWm4RR9f64Wyg%zY9AuqvDHQ3WlZ|t{#wp&cxz@4| z^Y)a}^E!cMF6Up|>Npo5jjRvhlg}~;&pNg_!wI^dcZ1Woa+DG3JVJB7V9>tED}5xN zmqX8nI{nTwlj|=$v++ARFW+-TzHvjo=e~U7_WW(e&QGazmdJ#|af31LqAFb`G_A

gZ{=JN~#< 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�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� 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

Agqfpyi*$TFG4BXE)# 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

7_ya5%Dsiia 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 z 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≧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

_-cOwWS9DDxL#M!@Ino>@joA}7Bis8F5 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

qN^nkxg#tet~sn%mC{I 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

Bo?DSXYeA8Le6 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≦%DYc_|uWhvVyT&Pe9*>e%7TQv3=hd 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 h5c`;)gQ&!GgR9C!3(+R}`gLL8u(TCvGU6!*B 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

QOR?wfWK>q;!>S+1?TOLdLSD@dE{&EHS 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

46S`+vM%dHMuTv3=Ki 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 z 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