aboutsummaryrefslogtreecommitdiff
path: root/src/pki
diff options
context:
space:
mode:
Diffstat (limited to 'src/pki')
-rwxr-xr-xsrc/pki/IMPORT30
-rw-r--r--src/pki/README.md31
-rw-r--r--src/pki/asn1_util.cc331
-rw-r--r--src/pki/asn1_util.h75
-rw-r--r--src/pki/cert_error_id.cc6
-rw-r--r--src/pki/cert_error_id.h9
-rw-r--r--src/pki/cert_error_params.cc81
-rw-r--r--src/pki/cert_error_params.h25
-rw-r--r--src/pki/cert_errors.cc94
-rw-r--r--src/pki/cert_errors.h39
-rw-r--r--src/pki/cert_issuer_source.h18
-rw-r--r--src/pki/cert_issuer_source_static.cc20
-rw-r--r--src/pki/cert_issuer_source_static.h16
-rw-r--r--src/pki/cert_issuer_source_static_unittest.cc6
-rw-r--r--src/pki/cert_issuer_source_sync_unittest.h40
-rw-r--r--src/pki/cert_status_flags.h49
-rw-r--r--src/pki/cert_status_flags_list.h47
-rw-r--r--src/pki/cert_verify_proc_blocklist.inc427
-rw-r--r--src/pki/certificate.cc117
-rw-r--r--src/pki/certificate_policies.cc107
-rw-r--r--src/pki/certificate_policies.h29
-rw-r--r--src/pki/certificate_policies_unittest.cc29
-rw-r--r--src/pki/certificate_unittest.cc76
-rw-r--r--src/pki/common_cert_errors.cc3
-rw-r--r--src/pki/common_cert_errors.h6
-rw-r--r--src/pki/crl.cc196
-rw-r--r--src/pki/crl.h43
-rw-r--r--src/pki/crl_unittest.cc23
-rw-r--r--src/pki/encode_values.cc24
-rw-r--r--src/pki/encode_values.h17
-rw-r--r--src/pki/encode_values_unittest.cc4
-rw-r--r--src/pki/extended_key_usage.cc21
-rw-r--r--src/pki/extended_key_usage.h14
-rw-r--r--src/pki/extended_key_usage_unittest.cc13
-rw-r--r--src/pki/fillins/file_util.cc35
-rw-r--r--src/pki/fillins/file_util.h24
-rw-r--r--src/pki/fillins/fillins_base64.cc48
-rw-r--r--src/pki/fillins/fillins_base64.h27
-rw-r--r--src/pki/fillins/fillins_string_util.cc89
-rw-r--r--src/pki/fillins/fillins_string_util.h41
-rw-r--r--src/pki/fillins/log.h26
-rw-r--r--src/pki/fillins/net_errors.h18
-rw-r--r--src/pki/fillins/openssl_util.cc19
-rw-r--r--src/pki/fillins/openssl_util.h28
-rw-r--r--src/pki/fillins/path_service.cc40
-rw-r--r--src/pki/fillins/path_service.h42
-rw-r--r--src/pki/general_names.cc69
-rw-r--r--src/pki/general_names.h18
-rw-r--r--src/pki/general_names_unittest.cc16
-rw-r--r--src/pki/import_spec.json349
-rw-r--r--src/pki/import_tool.go187
-rw-r--r--src/pki/input.cc52
-rw-r--r--src/pki/input.h88
-rw-r--r--src/pki/input_unittest.cc16
-rw-r--r--src/pki/ip_util.cc15
-rw-r--r--src/pki/ip_util.h8
-rw-r--r--src/pki/ip_util_unittest.cc4
-rw-r--r--src/pki/mock_signature_verify_cache.cc6
-rw-r--r--src/pki/mock_signature_verify_cache.h9
-rw-r--r--src/pki/name_constraints.cc161
-rw-r--r--src/pki/name_constraints.h35
-rw-r--r--src/pki/name_constraints_unittest.cc64
-rw-r--r--src/pki/nist_pkits_unittest.cc12
-rw-r--r--src/pki/nist_pkits_unittest.h24
-rw-r--r--src/pki/ocsp.cc446
-rw-r--r--src/pki/ocsp.h57
-rw-r--r--src/pki/ocsp_revocation_status.h2
-rw-r--r--src/pki/ocsp_unittest.cc30
-rw-r--r--src/pki/ocsp_verify_result.cc9
-rw-r--r--src/pki/ocsp_verify_result.h8
-rw-r--r--src/pki/parse_certificate.cc338
-rw-r--r--src/pki/parse_certificate.h95
-rw-r--r--src/pki/parse_certificate_unittest.cc78
-rw-r--r--src/pki/parse_name.cc117
-rw-r--r--src/pki/parse_name.h35
-rw-r--r--src/pki/parse_name_unittest.cc45
-rw-r--r--src/pki/parse_values.cc169
-rw-r--r--src/pki/parse_values.h60
-rw-r--r--src/pki/parse_values_unittest.cc19
-rw-r--r--src/pki/parsed_certificate.cc36
-rw-r--r--src/pki/parsed_certificate.h74
-rw-r--r--src/pki/parsed_certificate_unittest.cc27
-rw-r--r--src/pki/parser.cc78
-rw-r--r--src/pki/parser.h42
-rw-r--r--src/pki/parser_unittest.cc80
-rw-r--r--src/pki/patches/0001-Simplify-the-name-constraint-limit-to-resemble-Borin.patch41108
-rw-r--r--src/pki/path_builder.cc277
-rw-r--r--src/pki/path_builder.h79
-rw-r--r--src/pki/path_builder_pkits_unittest.cc95
-rw-r--r--src/pki/path_builder_unittest.cc392
-rw-r--r--src/pki/path_builder_verify_certificate_chain_unittest.cc9
-rw-r--r--src/pki/pem.cc34
-rw-r--r--src/pki/pem.h22
-rw-r--r--src/pki/pem_unittest.cc2
-rw-r--r--src/pki/revocation_util.cc6
-rw-r--r--src/pki/revocation_util.h12
-rw-r--r--src/pki/signature_algorithm.cc77
-rw-r--r--src/pki/signature_algorithm.h20
-rw-r--r--src/pki/signature_algorithm_unittest.cc9
-rw-r--r--src/pki/signature_verify_cache.h41
-rw-r--r--src/pki/simple_path_builder_delegate.cc48
-rw-r--r--src/pki/simple_path_builder_delegate.h28
-rw-r--r--src/pki/simple_path_builder_delegate_unittest.cc32
-rw-r--r--src/pki/string_util.cc86
-rw-r--r--src/pki/string_util.h45
-rw-r--r--src/pki/string_util_unittest.cc24
-rw-r--r--src/pki/tag.cc25
-rw-r--r--src/pki/tag.h78
-rw-r--r--src/pki/test_helpers.cc156
-rw-r--r--src/pki/test_helpers.h50
-rwxr-xr-xsrc/pki/testdata/parse_certificate_unittest/rebase-errors.py38
-rw-r--r--src/pki/testdata/path_builder_unittest/multi-root-A-by-B.pem (renamed from src/pki/testdata/ssl/certificates/multi-root-A-by-B.pem)0
-rw-r--r--src/pki/testdata/path_builder_unittest/multi-root-B-by-C.pem (renamed from src/pki/testdata/ssl/certificates/multi-root-B-by-C.pem)0
-rw-r--r--src/pki/testdata/path_builder_unittest/multi-root-B-by-F.pem (renamed from src/pki/testdata/ssl/certificates/multi-root-B-by-F.pem)0
-rw-r--r--src/pki/testdata/path_builder_unittest/multi-root-C-by-D.pem (renamed from src/pki/testdata/ssl/certificates/multi-root-C-by-D.pem)0
-rw-r--r--src/pki/testdata/path_builder_unittest/multi-root-C-by-E.pem (renamed from src/pki/testdata/ssl/certificates/multi-root-C-by-E.pem)0
-rw-r--r--src/pki/testdata/path_builder_unittest/multi-root-D-by-D.pem (renamed from src/pki/testdata/ssl/certificates/multi-root-D-by-D.pem)0
-rw-r--r--src/pki/testdata/path_builder_unittest/multi-root-E-by-E.pem (renamed from src/pki/testdata/ssl/certificates/multi-root-E-by-E.pem)0
-rw-r--r--src/pki/testdata/path_builder_unittest/multi-root-F-by-E.pem (renamed from src/pki/testdata/ssl/certificates/multi-root-F-by-E.pem)0
-rw-r--r--src/pki/testdata/path_builder_unittest/precertificate/precertificate.pem27
-rw-r--r--src/pki/testdata/path_builder_unittest/precertificate/root.pem32
-rw-r--r--src/pki/testdata/ssl/certificates/1024-rsa-ee-by-1024-rsa-intermediate.pem61
-rw-r--r--src/pki/testdata/ssl/certificates/1024-rsa-ee-by-2048-rsa-intermediate.pem71
-rw-r--r--src/pki/testdata/ssl/certificates/1024-rsa-ee-by-768-rsa-intermediate.pem58
-rw-r--r--src/pki/testdata/ssl/certificates/1024-rsa-ee-by-prime256v1-ecdsa-intermediate.pem56
-rw-r--r--src/pki/testdata/ssl/certificates/1024-rsa-intermediate.pem63
-rw-r--r--src/pki/testdata/ssl/certificates/10_year_validity.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/11_year_validity.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/2029_globalsign_com_cert.pem31
-rw-r--r--src/pki/testdata/ssl/certificates/2048-rsa-ee-by-1024-rsa-intermediate.pem73
-rw-r--r--src/pki/testdata/ssl/certificates/2048-rsa-ee-by-2048-rsa-intermediate.pem82
-rw-r--r--src/pki/testdata/ssl/certificates/2048-rsa-ee-by-768-rsa-intermediate.pem70
-rw-r--r--src/pki/testdata/ssl/certificates/2048-rsa-ee-by-prime256v1-ecdsa-intermediate.pem67
-rw-r--r--src/pki/testdata/ssl/certificates/2048-rsa-intermediate.pem75
-rw-r--r--src/pki/testdata/ssl/certificates/2048-rsa-root.pem75
-rw-r--r--src/pki/testdata/ssl/certificates/398_days_1_second_after_2020_09_01.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/398_days_after_2020_09_01.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/399_days_after_2020_09_01.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/39_months_after_2015_04.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/39_months_based_on_last_day.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/40_months_after_2015_04.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/60_months_after_2012_07.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/61_months_after_2012_07.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/768-rsa-ee-by-1024-rsa-intermediate.pem58
-rw-r--r--src/pki/testdata/ssl/certificates/768-rsa-ee-by-2048-rsa-intermediate.pem68
-rw-r--r--src/pki/testdata/ssl/certificates/768-rsa-ee-by-768-rsa-intermediate.pem55
-rw-r--r--src/pki/testdata/ssl/certificates/768-rsa-ee-by-prime256v1-ecdsa-intermediate.pem53
-rw-r--r--src/pki/testdata/ssl/certificates/768-rsa-intermediate.pem60
-rw-r--r--src/pki/testdata/ssl/certificates/825_days_1_second_after_2018_03_01.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/825_days_after_2018_03_01.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/826_days_after_2018_03_01.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/900_days_after_2019_07_01.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/BUILD.gn13
-rw-r--r--src/pki/testdata/ssl/certificates/README310
-rw-r--r--src/pki/testdata/ssl/certificates/bad_validity.pem112
-rw-r--r--src/pki/testdata/ssl/certificates/can_sign_http_exchanges_draft_extension.pem22
-rw-r--r--src/pki/testdata/ssl/certificates/can_sign_http_exchanges_draft_extension_invalid.pem22
-rw-r--r--src/pki/testdata/ssl/certificates/client-empty-password.p12bin2367 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/client-nokey.p12bin895 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/client-null-password.p12bin2364 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/client.p12bin1701 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/client_1.key28
-rw-r--r--src/pki/testdata/ssl/certificates/client_1.pem78
-rw-r--r--src/pki/testdata/ssl/certificates/client_1.pk8bin1218 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/client_1_ca.pem78
-rw-r--r--src/pki/testdata/ssl/certificates/client_2.key28
-rw-r--r--src/pki/testdata/ssl/certificates/client_2.pem78
-rw-r--r--src/pki/testdata/ssl/certificates/client_2.pk8bin1216 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/client_2_ca.pem78
-rw-r--r--src/pki/testdata/ssl/certificates/client_3.key28
-rw-r--r--src/pki/testdata/ssl/certificates/client_3.pem77
-rw-r--r--src/pki/testdata/ssl/certificates/client_3.pk8bin1218 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/client_3_ca.pem78
-rw-r--r--src/pki/testdata/ssl/certificates/client_4.key5
-rw-r--r--src/pki/testdata/ssl/certificates/client_4.pem62
-rw-r--r--src/pki/testdata/ssl/certificates/client_4.pk8bin138 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/client_4_ca.pem78
-rw-r--r--src/pki/testdata/ssl/certificates/client_5.key6
-rw-r--r--src/pki/testdata/ssl/certificates/client_5.pem64
-rw-r--r--src/pki/testdata/ssl/certificates/client_5.pk8bin185 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/client_5_ca.pem78
-rw-r--r--src/pki/testdata/ssl/certificates/client_6.key7
-rw-r--r--src/pki/testdata/ssl/certificates/client_6.pem67
-rw-r--r--src/pki/testdata/ssl/certificates/client_6.pk8bin241 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/client_6_ca.pem78
-rw-r--r--src/pki/testdata/ssl/certificates/client_7.key16
-rw-r--r--src/pki/testdata/ssl/certificates/client_7.pem66
-rw-r--r--src/pki/testdata/ssl/certificates/client_7.pk8bin636 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/client_7_ca.pem78
-rw-r--r--src/pki/testdata/ssl/certificates/client_root_ca.pem18
-rw-r--r--src/pki/testdata/ssl/certificates/common_name_only.pem111
-rw-r--r--src/pki/testdata/ssl/certificates/crit-codeSigning-chain.pem110
-rw-r--r--src/pki/testdata/ssl/certificates/crlset_blocked_interception_by_intermediate.rawbin224 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/crlset_blocked_interception_by_root.rawbin224 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/crlset_by_intermediate_serial.rawbin231 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/crlset_by_leaf_spki.rawbin224 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/crlset_by_leaf_subject_no_spki.rawbin228 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/crlset_by_root_serial.rawbin231 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/crlset_by_root_spki.rawbin224 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/crlset_by_root_subject.raw1
-rw-r--r--src/pki/testdata/ssl/certificates/crlset_by_root_subject_no_spki.rawbin228 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/crlset_known_interception_by_root.rawbin224 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/cronet-quic-chain.pem159
-rw-r--r--src/pki/testdata/ssl/certificates/cronet-quic-leaf-cert.keybin1219 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/cronet-quic-leaf-cert.key.pkcs8.pem28
-rw-r--r--src/pki/testdata/ssl/certificates/cronet-quic-root.pem19
-rw-r--r--src/pki/testdata/ssl/certificates/cross-signed-leaf.pem82
-rw-r--r--src/pki/testdata/ssl/certificates/cross-signed-root-md5.pem75
-rw-r--r--src/pki/testdata/ssl/certificates/cross-signed-root-sha256.pem75
-rw-r--r--src/pki/testdata/ssl/certificates/ct-test-embedded-cert.pem126
-rw-r--r--src/pki/testdata/ssl/certificates/ct-test-embedded-with-intermediate-chain.pem188
-rw-r--r--src/pki/testdata/ssl/certificates/ct-test-embedded-with-intermediate-preca-chain.pem188
-rw-r--r--src/pki/testdata/ssl/certificates/ct-test-embedded-with-preca-chain.pem126
-rw-r--r--src/pki/testdata/ssl/certificates/ct-test-embedded-with-uids.pem81
-rw-r--r--src/pki/testdata/ssl/certificates/dec_2017.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/diginotar_cyber_ca.pem32
-rw-r--r--src/pki/testdata/ssl/certificates/diginotar_pkioverheid.pem28
-rw-r--r--src/pki/testdata/ssl/certificates/diginotar_pkioverheid_g2.pem38
-rw-r--r--src/pki/testdata/ssl/certificates/diginotar_public_ca_2025.pem35
-rw-r--r--src/pki/testdata/ssl/certificates/diginotar_root_ca.pem32
-rw-r--r--src/pki/testdata/ssl/certificates/diginotar_services_1024_ca.pem23
-rw-r--r--src/pki/testdata/ssl/certificates/duplicate_cn_1.p12bin2405 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/duplicate_cn_1.pem78
-rw-r--r--src/pki/testdata/ssl/certificates/duplicate_cn_2.p12bin2405 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/duplicate_cn_2.pem78
-rw-r--r--src/pki/testdata/ssl/certificates/ec-prime256v1-1.key5
-rw-r--r--src/pki/testdata/ssl/certificates/ec-prime256v1-2.key5
-rw-r--r--src/pki/testdata/ssl/certificates/ec-prime256v1-3.key5
-rw-r--r--src/pki/testdata/ssl/certificates/eku-test-root.pem77
-rw-r--r--src/pki/testdata/ssl/certificates/ev_test.pem70
-rw-r--r--src/pki/testdata/ssl/certificates/ev_test_state_only.pem69
-rw-r--r--src/pki/testdata/ssl/certificates/expired_cert.pem113
-rw-r--r--src/pki/testdata/ssl/certificates/foaf.me.chromium-test-cert.derbin990 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/google.binary.p7bbin1661 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/google.chain.pem38
-rw-r--r--src/pki/testdata/ssl/certificates/google.pem_cert.p7b37
-rw-r--r--src/pki/testdata/ssl/certificates/google.pem_pkcs7.p7b37
-rw-r--r--src/pki/testdata/ssl/certificates/google.single.derbin805 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/google.single.pem19
-rw-r--r--src/pki/testdata/ssl/certificates/google_diginotar.pem30
-rw-r--r--src/pki/testdata/ssl/certificates/intermediate_ca_cert.pem110
-rw-r--r--src/pki/testdata/ssl/certificates/invalid_key_usage_cert.derbin940 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/key_usage_p256.key5
-rw-r--r--src/pki/testdata/ssl/certificates/key_usage_p256_both.pem45
-rw-r--r--src/pki/testdata/ssl/certificates/key_usage_p256_digitalsignature.pem45
-rw-r--r--src/pki/testdata/ssl/certificates/key_usage_p256_keyagreement.pem45
-rw-r--r--src/pki/testdata/ssl/certificates/key_usage_p256_no_extension.pem41
-rw-r--r--src/pki/testdata/ssl/certificates/key_usage_rsa.key28
-rw-r--r--src/pki/testdata/ssl/certificates/key_usage_rsa_both.pem100
-rw-r--r--src/pki/testdata/ssl/certificates/key_usage_rsa_digitalsignature.pem99
-rw-r--r--src/pki/testdata/ssl/certificates/key_usage_rsa_keyencipherment.pem99
-rw-r--r--src/pki/testdata/ssl/certificates/key_usage_rsa_no_extension.pem96
-rw-r--r--src/pki/testdata/ssl/certificates/large_key.pem196
-rw-r--r--src/pki/testdata/ssl/certificates/leaf_from_known_root.pem666
-rw-r--r--src/pki/testdata/ssl/certificates/lets-encrypt-dst-x3-root.pem464
-rw-r--r--src/pki/testdata/ssl/certificates/lets-encrypt-isrg-x1-root.pem380
-rw-r--r--src/pki/testdata/ssl/certificates/localhost_cert.pem113
-rw-r--r--src/pki/testdata/ssl/certificates/may_2018.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/mit.davidben.derbin965 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/multi-root-chain1.pem305
-rw-r--r--src/pki/testdata/ssl/certificates/multi-root-chain2.pem305
-rw-r--r--src/pki/testdata/ssl/certificates/multi-root-crlset-C.rawbin155 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/multi-root-crlset-CD-and-FE.rawbin187 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/multi-root-crlset-D-and-E.rawbin203 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/multi-root-crlset-E.rawbin155 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/multi-root-crlset-unrelated.rawbin148 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/multi-root.keychainbin33112 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/multivalue_rdn.pem59
-rw-r--r--src/pki/testdata/ssl/certificates/name_constrained_key.pem28
-rw-r--r--src/pki/testdata/ssl/certificates/ndn.ca.crt35
-rw-r--r--src/pki/testdata/ssl/certificates/nist.derbin1322 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/no_subject_common_name_cert.pem109
-rw-r--r--src/pki/testdata/ssl/certificates/non-crit-codeSigning-chain.pem110
-rw-r--r--src/pki/testdata/ssl/certificates/ok_cert.pem113
-rw-r--r--src/pki/testdata/ssl/certificates/ok_cert_by_intermediate.pem195
-rw-r--r--src/pki/testdata/ssl/certificates/policies_sanity_check.pem93
-rw-r--r--src/pki/testdata/ssl/certificates/post_june_2016.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/pre_br_validity_bad_121.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/pre_br_validity_bad_2020.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/pre_br_validity_ok.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/pre_june_2016.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/prime256v1-ecdsa-ee-by-1024-rsa-intermediate.pem55
-rw-r--r--src/pki/testdata/ssl/certificates/prime256v1-ecdsa-ee-by-2048-rsa-intermediate.pem65
-rw-r--r--src/pki/testdata/ssl/certificates/prime256v1-ecdsa-ee-by-768-rsa-intermediate.pem53
-rw-r--r--src/pki/testdata/ssl/certificates/prime256v1-ecdsa-ee-by-prime256v1-ecdsa-intermediate.pem50
-rw-r--r--src/pki/testdata/ssl/certificates/prime256v1-ecdsa-intermediate.pem58
-rw-r--r--src/pki/testdata/ssl/certificates/punycodetest.pem78
-rw-r--r--src/pki/testdata/ssl/certificates/quic-chain.pem147
-rw-r--r--src/pki/testdata/ssl/certificates/quic-ecdsa-leaf.keybin138 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/quic-leaf-cert.keybin1219 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/quic-leaf-cert.key.pkcs8.pem28
-rw-r--r--src/pki/testdata/ssl/certificates/quic-leaf-cert.key.sctbin33 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/quic-root.pem18
-rw-r--r--src/pki/testdata/ssl/certificates/quic-short-lived.pem42
-rw-r--r--src/pki/testdata/ssl/certificates/redundant-server-chain.pem333
-rw-r--r--src/pki/testdata/ssl/certificates/redundant-validated-chain-root.pem75
-rw-r--r--src/pki/testdata/ssl/certificates/redundant-validated-chain.pem259
-rw-r--r--src/pki/testdata/ssl/certificates/root_ca_cert.pem108
-rw-r--r--src/pki/testdata/ssl/certificates/rsa-1024-1.key16
-rw-r--r--src/pki/testdata/ssl/certificates/rsa-1024-2.key16
-rw-r--r--src/pki/testdata/ssl/certificates/rsa-1024-3.key16
-rw-r--r--src/pki/testdata/ssl/certificates/rsa-2048-1.key28
-rw-r--r--src/pki/testdata/ssl/certificates/rsa-2048-2.key28
-rw-r--r--src/pki/testdata/ssl/certificates/rsa-2048-3.key28
-rw-r--r--src/pki/testdata/ssl/certificates/rsa-768-1.key13
-rw-r--r--src/pki/testdata/ssl/certificates/rsa-768-2.key13
-rw-r--r--src/pki/testdata/ssl/certificates/rsa-768-3.key13
-rw-r--r--src/pki/testdata/ssl/certificates/rsa-8200-1.key100
-rw-r--r--src/pki/testdata/ssl/certificates/salesforce_com_test.pem81
-rw-r--r--src/pki/testdata/ssl/certificates/self-signed-invalid-name.pem69
-rw-r--r--src/pki/testdata/ssl/certificates/self-signed-invalid-sig.pem69
-rw-r--r--src/pki/testdata/ssl/certificates/sha1_2016.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/sha1_leaf.pem113
-rw-r--r--src/pki/testdata/ssl/certificates/spdy_pooling.pem79
-rw-r--r--src/pki/testdata/ssl/certificates/start_after_expiry.pem85
-rw-r--r--src/pki/testdata/ssl/certificates/subjectAltName_sanity_check.pem82
-rw-r--r--src/pki/testdata/ssl/certificates/subjectAltName_www_example_com.pem80
-rw-r--r--src/pki/testdata/ssl/certificates/test_names.pem114
-rw-r--r--src/pki/testdata/ssl/certificates/treadclimber.pem227
-rw-r--r--src/pki/testdata/ssl/certificates/treadclimber.sctlistbin484 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/unescaped.pem62
-rw-r--r--src/pki/testdata/ssl/certificates/unittest.key.binbin635 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/unittest.selfsigned.derbin414 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/verisign_intermediate_ca_2011.pem71
-rw-r--r--src/pki/testdata/ssl/certificates/verisign_intermediate_ca_2016.pem71
-rw-r--r--src/pki/testdata/ssl/certificates/weak_digest_md2_ee.pem61
-rw-r--r--src/pki/testdata/ssl/certificates/weak_digest_md2_intermediate.pem57
-rw-r--r--src/pki/testdata/ssl/certificates/weak_digest_md2_root.pem14
-rw-r--r--src/pki/testdata/ssl/certificates/weak_digest_md4_ee.pem61
-rw-r--r--src/pki/testdata/ssl/certificates/weak_digest_md4_intermediate.pem57
-rw-r--r--src/pki/testdata/ssl/certificates/weak_digest_md4_root.pem14
-rw-r--r--src/pki/testdata/ssl/certificates/weak_digest_md5_ee.pem61
-rw-r--r--src/pki/testdata/ssl/certificates/weak_digest_md5_intermediate.pem57
-rw-r--r--src/pki/testdata/ssl/certificates/weak_digest_md5_root.pem14
-rw-r--r--src/pki/testdata/ssl/certificates/weak_digest_sha1_ee.pem61
-rw-r--r--src/pki/testdata/ssl/certificates/weak_digest_sha1_intermediate.pem57
-rw-r--r--src/pki/testdata/ssl/certificates/weak_digest_sha1_root.pem14
-rw-r--r--src/pki/testdata/ssl/certificates/websocket_cacert.pem61
-rw-r--r--src/pki/testdata/ssl/certificates/websocket_client_cert.p12bin2550 -> 0 bytes
-rw-r--r--src/pki/testdata/ssl/certificates/wildcard.pem113
-rw-r--r--src/pki/testdata/ssl/certificates/x509_verify_results.chain.pem247
-rw-r--r--src/pki/testdata/test_certificate_data.h619
-rw-r--r--src/pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-serverAuth-strict.test1
-rw-r--r--src/pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-serverAuth.test2
-rw-r--r--src/pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-serverAuth-strict.test1
-rw-r--r--src/pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-serverAuth.test1
-rwxr-xr-xsrc/pki/testdata/verify_certificate_chain_unittest/rebase-errors.py20
-rw-r--r--src/pki/testdata/verify_unittest/google-leaf.derbin0 -> 1156 bytes
-rw-r--r--src/pki/testdata/verify_unittest/self-issued.pem22
-rw-r--r--src/pki/trust_store.cc8
-rw-r--r--src/pki/trust_store.h19
-rw-r--r--src/pki/trust_store_collection.cc17
-rw-r--r--src/pki/trust_store_collection.h18
-rw-r--r--src/pki/trust_store_collection_unittest.cc4
-rw-r--r--src/pki/trust_store_in_memory.cc50
-rw-r--r--src/pki/trust_store_in_memory.h32
-rw-r--r--src/pki/trust_store_in_memory_unittest.cc112
-rw-r--r--src/pki/verify_certificate_chain.cc353
-rw-r--r--src/pki/verify_certificate_chain.h43
-rw-r--r--src/pki/verify_certificate_chain_pkits_unittest.cc16
-rw-r--r--src/pki/verify_certificate_chain_typed_unittest.h40
-rw-r--r--src/pki/verify_certificate_chain_unittest.cc6
-rw-r--r--src/pki/verify_name_match.cc152
-rw-r--r--src/pki/verify_name_match.h23
-rw-r--r--src/pki/verify_name_match_unittest.cc61
-rw-r--r--src/pki/verify_signed_data.cc107
-rw-r--r--src/pki/verify_signed_data.h28
-rw-r--r--src/pki/verify_signed_data_unittest.cc19
368 files changed, 3598 insertions, 61002 deletions
diff --git a/src/pki/IMPORT b/src/pki/IMPORT
deleted file mode 100755
index 986b1d4..0000000
--- a/src/pki/IMPORT
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh
-
-# Set this to be the location of a chromium checkout, and
-# apply the patches in ./patches with "git am" first
-# before running this script.
-CHROMIUM_SRC=~/chromium/src
-
-mkdir -p ./testdata
-cp $CHROMIUM_SRC/net/test/test_certificate_data.h ./testdata
-
-tar -C $CHROMIUM_SRC/net/third_party -cf - nist-pkits | tar -C ./testdata -xf -
-tar -C $CHROMIUM_SRC/net/data -cf - cert_issuer_source_static_unittest \
- ssl/certificates \
- certificate_policies_unittest \
- name_constraints_unittest \
- ocsp_unittest \
- crl_unittest \
- parse_certificate_unittest \
- path_builder_unittest \
- verify_certificate_chain_unittest \
- verify_name_match_unittest \
- verify_signed_data_unittest | tar -C ./testdata -xf -
-
-go run ./import_tool.go -spec import_spec.json --source-base $CHROMIUM_SRC -dest-base .
-
-sed -i "s/#include \"/#include \"..\/pki\//g" *fuzzer.cc
-mv *fuzzer.cc ../fuzz
-
-
-
diff --git a/src/pki/README.md b/src/pki/README.md
index e7eaec4..7fc7432 100644
--- a/src/pki/README.md
+++ b/src/pki/README.md
@@ -3,30 +3,11 @@
This directory and library should be considered experimental and should not be
depended upon not to change without notice. You should not use this.
-It contains an extracted and modified copy of chrome's certificate
-verifier core logic.
-
-It is for the moment, intended to be synchronized from a checkout of chrome's
-head with the IMPORT script run in this directory. The eventual goal is to
-make both chrome and google3 consume this.
+It contains chrome's certificate verifier core logic as used by chrome.
## Current status:
- * Some of the Path Builder tests depending on chrome testing classes and
- SavedUserData are disabled. These probably need either a mimicing
- SaveUserData class here, or be pulled out into chrome only.
- * This contains a copy of der as bssl:der - a consideration for
- re-integrating with chromium. the encode_values part of der does not include
- the base::time or absl::time based stuff as they are not used within the
- library, this should probably be split out for chrome, or chrome's der could
- be modified (along with this one and eventually merged together) to not use
- base::time for encoding GeneralizedTimes, but rather use boringssl posix
- times as does the rest of this library.
- * The Name Constraint limitation code is modified to remove clamped_math
- and mimic BoringSSL's overall limits - Some of the tests that test
- for specific edge cases for chrome's limits have been disabled. The
- tests need to be changed to reflect the overall limit, or ignored
- and we make name constraints subquadratic and stop caring about this.
- * Fuzzer targets are not yet hooked up.
-
-
-
+ * Currently chrome uses this code via private API from within this directory.
+ * At the moment there is no public API for these functions, as mentioned above
+ if you make use of this you do so at your own risk and your code may be broken
+ by API change at any time.
+ * Public API will be forthcoming.
diff --git a/src/pki/asn1_util.cc b/src/pki/asn1_util.cc
deleted file mode 100644
index 148c39d..0000000
--- a/src/pki/asn1_util.cc
+++ /dev/null
@@ -1,331 +0,0 @@
-// Copyright 2012 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "asn1_util.h"
-
-#include "parse_certificate.h"
-#include "input.h"
-#include "parser.h"
-#include <optional>
-
-namespace bssl::asn1 {
-
-namespace {
-
-// Parses input |in| which should point to the beginning of a Certificate, and
-// sets |*tbs_certificate| ready to parse the Subject. If parsing
-// fails, this function returns false and |*tbs_certificate| is left in an
-// undefined state.
-bool SeekToSubject(der::Input in, der::Parser* tbs_certificate) {
- // From RFC 5280, section 4.1
- // Certificate ::= SEQUENCE {
- // tbsCertificate TBSCertificate,
- // signatureAlgorithm AlgorithmIdentifier,
- // signatureValue BIT STRING }
-
- // TBSCertificate ::= SEQUENCE {
- // version [0] EXPLICIT Version DEFAULT v1,
- // serialNumber CertificateSerialNumber,
- // signature AlgorithmIdentifier,
- // issuer Name,
- // validity Validity,
- // subject Name,
- // subjectPublicKeyInfo SubjectPublicKeyInfo,
- // ... }
-
- der::Parser parser(in);
- der::Parser certificate;
- if (!parser.ReadSequence(&certificate))
- return false;
-
- // We don't allow junk after the certificate.
- if (parser.HasMore())
- return false;
-
- if (!certificate.ReadSequence(tbs_certificate))
- return false;
-
- bool unused;
- if (!tbs_certificate->SkipOptionalTag(
- der::kTagConstructed | der::kTagContextSpecific | 0, &unused)) {
- return false;
- }
-
- // serialNumber
- if (!tbs_certificate->SkipTag(der::kInteger))
- return false;
- // signature
- if (!tbs_certificate->SkipTag(der::kSequence))
- return false;
- // issuer
- if (!tbs_certificate->SkipTag(der::kSequence))
- return false;
- // validity
- if (!tbs_certificate->SkipTag(der::kSequence))
- return false;
- return true;
-}
-
-// Parses input |in| which should point to the beginning of a Certificate, and
-// sets |*tbs_certificate| ready to parse the SubjectPublicKeyInfo. If parsing
-// fails, this function returns false and |*tbs_certificate| is left in an
-// undefined state.
-bool SeekToSPKI(der::Input in, der::Parser* tbs_certificate) {
- return SeekToSubject(in, tbs_certificate) &&
- // Skip over Subject.
- tbs_certificate->SkipTag(der::kSequence);
-}
-
-// Parses input |in| which should point to the beginning of a
-// Certificate. If parsing fails, this function returns false, with
-// |*extensions_present| and |*extensions_parser| left in an undefined
-// state. If parsing succeeds and extensions are present, this function
-// sets |*extensions_present| to true and sets |*extensions_parser|
-// ready to parse the Extensions. If extensions are not present, it sets
-// |*extensions_present| to false and |*extensions_parser| is left in an
-// undefined state.
-bool SeekToExtensions(der::Input in,
- bool* extensions_present,
- der::Parser* extensions_parser) {
- bool present;
- der::Parser tbs_cert_parser;
- if (!SeekToSPKI(in, &tbs_cert_parser))
- return false;
-
- // From RFC 5280, section 4.1
- // TBSCertificate ::= SEQUENCE {
- // ...
- // subjectPublicKeyInfo SubjectPublicKeyInfo,
- // issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
- // subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
- // extensions [3] EXPLICIT Extensions OPTIONAL }
-
- // subjectPublicKeyInfo
- if (!tbs_cert_parser.SkipTag(der::kSequence))
- return false;
- // issuerUniqueID
- if (!tbs_cert_parser.SkipOptionalTag(der::kTagContextSpecific | 1,
- &present)) {
- return false;
- }
- // subjectUniqueID
- if (!tbs_cert_parser.SkipOptionalTag(der::kTagContextSpecific | 2,
- &present)) {
- return false;
- }
-
- std::optional<der::Input> extensions;
- if (!tbs_cert_parser.ReadOptionalTag(
- der::kTagConstructed | der::kTagContextSpecific | 3, &extensions)) {
- return false;
- }
-
- if (!extensions) {
- *extensions_present = false;
- return true;
- }
-
- // Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
- // Extension ::= SEQUENCE {
- // extnID OBJECT IDENTIFIER,
- // critical BOOLEAN DEFAULT FALSE,
- // extnValue OCTET STRING }
-
- // |extensions| was EXPLICITly tagged, so we still need to remove the
- // ASN.1 SEQUENCE header.
- der::Parser explicit_extensions_parser(extensions.value());
- if (!explicit_extensions_parser.ReadSequence(extensions_parser))
- return false;
-
- if (explicit_extensions_parser.HasMore())
- return false;
-
- *extensions_present = true;
- return true;
-}
-
-// Parse a DER-encoded, X.509 certificate in |cert| and find an extension with
-// the given OID. Returns false on parse error or true if the parse was
-// successful. |*out_extension_present| will be true iff the extension was
-// found. In the case where it was found, |*out_extension| will describe the
-// extension, or is undefined on parse error or if the extension is missing.
-bool ExtractExtensionWithOID(std::string_view cert,
- der::Input extension_oid,
- bool* out_extension_present,
- ParsedExtension* out_extension) {
- der::Parser extensions;
- bool extensions_present;
- if (!SeekToExtensions(der::Input(cert), &extensions_present, &extensions))
- return false;
- if (!extensions_present) {
- *out_extension_present = false;
- return true;
- }
-
- while (extensions.HasMore()) {
- der::Input extension_tlv;
- if (!extensions.ReadRawTLV(&extension_tlv) ||
- !ParseExtension(extension_tlv, out_extension)) {
- return false;
- }
-
- if (out_extension->oid == extension_oid) {
- *out_extension_present = true;
- return true;
- }
- }
-
- *out_extension_present = false;
- return true;
-}
-
-} // namespace
-
-bool ExtractSubjectFromDERCert(std::string_view cert,
- std::string_view* subject_out) {
- der::Parser parser;
- if (!SeekToSubject(der::Input(cert), &parser))
- return false;
- der::Input subject;
- if (!parser.ReadRawTLV(&subject))
- return false;
- *subject_out = subject.AsStringView();
- return true;
-}
-
-bool ExtractSPKIFromDERCert(std::string_view cert,
- std::string_view* spki_out) {
- der::Parser parser;
- if (!SeekToSPKI(der::Input(cert), &parser))
- return false;
- der::Input spki;
- if (!parser.ReadRawTLV(&spki))
- return false;
- *spki_out = spki.AsStringView();
- return true;
-}
-
-bool ExtractSubjectPublicKeyFromSPKI(std::string_view spki,
- std::string_view* spk_out) {
- // From RFC 5280, Section 4.1
- // SubjectPublicKeyInfo ::= SEQUENCE {
- // algorithm AlgorithmIdentifier,
- // subjectPublicKey BIT STRING }
- //
- // AlgorithmIdentifier ::= SEQUENCE {
- // algorithm OBJECT IDENTIFIER,
- // parameters ANY DEFINED BY algorithm OPTIONAL }
-
- // Step into SubjectPublicKeyInfo sequence.
- der::Parser parser((der::Input(spki)));
- der::Parser spki_parser;
- if (!parser.ReadSequence(&spki_parser))
- return false;
-
- // Step over algorithm field (a SEQUENCE).
- if (!spki_parser.SkipTag(der::kSequence))
- return false;
-
- // Extract the subjectPublicKey field.
- der::Input spk;
- if (!spki_parser.ReadTag(der::kBitString, &spk))
- return false;
- *spk_out = spk.AsStringView();
- return true;
-}
-
-bool HasCanSignHttpExchangesDraftExtension(std::string_view cert) {
- // kCanSignHttpExchangesDraftOid is the DER encoding of the OID for
- // canSignHttpExchangesDraft defined in:
- // https://wicg.github.io/webpackage/draft-yasskin-http-origin-signed-responses.html
- static const uint8_t kCanSignHttpExchangesDraftOid[] = {
- 0x2B, 0x06, 0x01, 0x04, 0x01, 0xd6, 0x79, 0x02, 0x01, 0x16};
-
- bool extension_present;
- ParsedExtension extension;
- if (!ExtractExtensionWithOID(cert, der::Input(kCanSignHttpExchangesDraftOid),
- &extension_present, &extension) ||
- !extension_present) {
- return false;
- }
-
- // The extension should have contents NULL.
- static const uint8_t kNull[] = {0x05, 0x00};
- return extension.value == der::Input(kNull);
-}
-
-bool ExtractSignatureAlgorithmsFromDERCert(
- std::string_view cert,
- std::string_view* cert_signature_algorithm_sequence,
- std::string_view* tbs_signature_algorithm_sequence) {
- // From RFC 5280, section 4.1
- // Certificate ::= SEQUENCE {
- // tbsCertificate TBSCertificate,
- // signatureAlgorithm AlgorithmIdentifier,
- // signatureValue BIT STRING }
-
- // TBSCertificate ::= SEQUENCE {
- // version [0] EXPLICIT Version DEFAULT v1,
- // serialNumber CertificateSerialNumber,
- // signature AlgorithmIdentifier,
- // issuer Name,
- // validity Validity,
- // subject Name,
- // subjectPublicKeyInfo SubjectPublicKeyInfo,
- // ... }
-
- der::Parser parser((der::Input(cert)));
- der::Parser certificate;
- if (!parser.ReadSequence(&certificate))
- return false;
-
- der::Parser tbs_certificate;
- if (!certificate.ReadSequence(&tbs_certificate))
- return false;
-
- bool unused;
- if (!tbs_certificate.SkipOptionalTag(
- der::kTagConstructed | der::kTagContextSpecific | 0, &unused)) {
- return false;
- }
-
- // serialNumber
- if (!tbs_certificate.SkipTag(der::kInteger))
- return false;
- // signature
- der::Input tbs_algorithm;
- if (!tbs_certificate.ReadRawTLV(&tbs_algorithm))
- return false;
-
- der::Input cert_algorithm;
- if (!certificate.ReadRawTLV(&cert_algorithm))
- return false;
-
- *cert_signature_algorithm_sequence = cert_algorithm.AsStringView();
- *tbs_signature_algorithm_sequence = tbs_algorithm.AsStringView();
- return true;
-}
-
-bool ExtractExtensionFromDERCert(std::string_view cert,
- std::string_view extension_oid,
- bool* out_extension_present,
- bool* out_extension_critical,
- std::string_view* out_contents) {
- *out_extension_present = false;
- *out_extension_critical = false;
- *out_contents = std::string_view();
-
- ParsedExtension extension;
- if (!ExtractExtensionWithOID(cert, der::Input(extension_oid),
- out_extension_present, &extension))
- return false;
- if (!*out_extension_present)
- return true;
-
- *out_extension_critical = extension.critical;
- *out_contents = extension.value.AsStringView();
- return true;
-}
-
-} // namespace bssl::asn1
diff --git a/src/pki/asn1_util.h b/src/pki/asn1_util.h
deleted file mode 100644
index af0b176..0000000
--- a/src/pki/asn1_util.h
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2012 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BSSL_PKI_ASN1_UTIL_H_
-#define BSSL_PKI_ASN1_UTIL_H_
-
-#include "fillins/openssl_util.h"
-#include <string_view>
-
-
-
-namespace bssl::asn1 {
-
-// ExtractSubjectFromDERCert parses the DER encoded certificate in |cert| and
-// extracts the bytes of the X.501 Subject. On successful return, |subject_out|
-// is set to contain the Subject, pointing into |cert|.
-OPENSSL_EXPORT bool ExtractSubjectFromDERCert(
- std::string_view cert,
- std::string_view* subject_out);
-
-// ExtractSPKIFromDERCert parses the DER encoded certificate in |cert| and
-// extracts the bytes of the SubjectPublicKeyInfo. On successful return,
-// |spki_out| is set to contain the SPKI, pointing into |cert|.
-OPENSSL_EXPORT bool ExtractSPKIFromDERCert(std::string_view cert,
- std::string_view* spki_out);
-
-// ExtractSubjectPublicKeyFromSPKI parses the DER encoded SubjectPublicKeyInfo
-// in |spki| and extracts the bytes of the SubjectPublicKey. On successful
-// return, |spk_out| is set to contain the public key, pointing into |spki|.
-OPENSSL_EXPORT bool ExtractSubjectPublicKeyFromSPKI(
- std::string_view spki,
- std::string_view* spk_out);
-
-// HasCanSignHttpExchangesDraftExtension parses the DER encoded certificate
-// in |cert| and extracts the canSignHttpExchangesDraft extension
-// (https://wicg.github.io/webpackage/draft-yasskin-http-origin-signed-responses.html)
-// if present. Returns true if the extension was present, and false if
-// the extension was not present or if there was a parsing failure.
-OPENSSL_EXPORT bool HasCanSignHttpExchangesDraftExtension(std::string_view cert);
-
-// Extracts the two (SEQUENCE) tag-length-values for the signature
-// AlgorithmIdentifiers in a DER encoded certificate. Does not use strict
-// parsing or validate the resulting AlgorithmIdentifiers.
-//
-// On success returns true, and assigns |cert_signature_algorithm_sequence| and
-// |tbs_signature_algorithm_sequence| to point into |cert|:
-//
-// * |cert_signature_algorithm_sequence| points at the TLV for
-// Certificate.signatureAlgorithm.
-//
-// * |tbs_signature_algorithm_sequence| points at the TLV for
-// TBSCertificate.algorithm.
-OPENSSL_EXPORT bool ExtractSignatureAlgorithmsFromDERCert(
- std::string_view cert,
- std::string_view* cert_signature_algorithm_sequence,
- std::string_view* tbs_signature_algorithm_sequence);
-
-// Extracts the contents of the extension (if any) with OID |extension_oid| from
-// the DER-encoded, X.509 certificate in |cert|.
-//
-// Returns false on parse error or true if the parse was successful. Sets
-// |*out_extension_present| to whether or not the extension was found. If found,
-// sets |*out_extension_critical| to match the extension's "critical" flag, and
-// sets |*out_contents| to the contents of the extension (after unwrapping the
-// OCTET STRING).
-OPENSSL_EXPORT bool ExtractExtensionFromDERCert(std::string_view cert,
- std::string_view extension_oid,
- bool* out_extension_present,
- bool* out_extension_critical,
- std::string_view* out_contents);
-
-} // namespace bssl::asn1
-
-#endif // BSSL_PKI_ASN1_UTIL_H_
diff --git a/src/pki/cert_error_id.cc b/src/pki/cert_error_id.cc
index 9d83ed2..81add1d 100644
--- a/src/pki/cert_error_id.cc
+++ b/src/pki/cert_error_id.cc
@@ -6,9 +6,9 @@
namespace bssl {
-const char* CertErrorIdToDebugString(CertErrorId id) {
+const char *CertErrorIdToDebugString(CertErrorId id) {
// The CertErrorId is simply a pointer for a C-string literal.
- return reinterpret_cast<const char*>(id);
+ return reinterpret_cast<const char *>(id);
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/cert_error_id.h b/src/pki/cert_error_id.h
index e77154b..d325b1b 100644
--- a/src/pki/cert_error_id.h
+++ b/src/pki/cert_error_id.h
@@ -5,8 +5,7 @@
#ifndef BSSL_PKI_CERT_ERROR_ID_H_
#define BSSL_PKI_CERT_ERROR_ID_H_
-#include "fillins/openssl_util.h"
-
+#include <openssl/base.h>
namespace bssl {
@@ -18,7 +17,7 @@ namespace bssl {
// Equality of CertErrorId can be done using the == operator.
//
// To define new error IDs use the macro DEFINE_CERT_ERROR_ID().
-using CertErrorId = const void*;
+using CertErrorId = const void *;
// DEFINE_CERT_ERROR_ID() creates a CertErrorId given a non-null C-string
// literal. The string should be a textual name for the error which will appear
@@ -31,8 +30,8 @@ using CertErrorId = const void*;
// Returns a debug string for a CertErrorId. In practice this returns the
// string literal given to DEFINE_CERT_ERROR_ID(), which is human-readable.
-OPENSSL_EXPORT const char* CertErrorIdToDebugString(CertErrorId id);
+OPENSSL_EXPORT const char *CertErrorIdToDebugString(CertErrorId id);
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_CERT_ERROR_ID_H_
diff --git a/src/pki/cert_error_params.cc b/src/pki/cert_error_params.cc
index a454cd7..075d7ef 100644
--- a/src/pki/cert_error_params.cc
+++ b/src/pki/cert_error_params.cc
@@ -2,15 +2,15 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "fillins/openssl_util.h"
#include "cert_error_params.h"
#include <memory>
-#include "string_util.h"
-#include "input.h"
#include <openssl/base.h>
+#include "input.h"
+#include "string_util.h"
+
namespace bssl {
namespace {
@@ -19,17 +19,15 @@ namespace {
// blobs. It makes a copy of the der::Inputs.
class CertErrorParams2Der : public CertErrorParams {
public:
- CertErrorParams2Der(const char* name1,
- const der::Input& der1,
- const char* name2,
- const der::Input& der2)
+ CertErrorParams2Der(const char *name1, der::Input der1, const char *name2,
+ der::Input der2)
: name1_(name1),
- der1_(der1.AsString()),
+ der1_(BytesAsStringView(der1)),
name2_(name2),
- der2_(der2.AsString()) {}
+ der2_(BytesAsStringView(der2)) {}
- CertErrorParams2Der(const CertErrorParams2Der&) = delete;
- CertErrorParams2Der& operator=(const CertErrorParams2Der&) = delete;
+ CertErrorParams2Der(const CertErrorParams2Der &) = delete;
+ CertErrorParams2Der &operator=(const CertErrorParams2Der &) = delete;
std::string ToDebugString() const override {
std::string result;
@@ -42,30 +40,31 @@ class CertErrorParams2Der : public CertErrorParams {
}
private:
- static void AppendDer(const char* name,
- const std::string& der,
- std::string* out) {
+ static void AppendDer(const char *name, const std::string &der,
+ std::string *out) {
*out += name;
+ // TODO(crbug.com/boringssl/661): Introduce a convenience function to go
+ // from a Span<const char> to a Span<const uint8_t>.
*out +=
- ": " + bssl::string_util::HexEncode(
- reinterpret_cast<const uint8_t*>(der.data()), der.size());
+ ": " + bssl::string_util::HexEncode(MakeConstSpan(
+ reinterpret_cast<const uint8_t *>(der.data()), der.size()));
}
- const char* name1_;
+ const char *name1_;
std::string der1_;
- const char* name2_;
+ const char *name2_;
std::string der2_;
};
// Parameters subclass for describing (and pretty-printing) a single size_t.
class CertErrorParams1SizeT : public CertErrorParams {
public:
- CertErrorParams1SizeT(const char* name, size_t value)
+ CertErrorParams1SizeT(const char *name, size_t value)
: name_(name), value_(value) {}
- CertErrorParams1SizeT(const CertErrorParams1SizeT&) = delete;
- CertErrorParams1SizeT& operator=(const CertErrorParams1SizeT&) = delete;
+ CertErrorParams1SizeT(const CertErrorParams1SizeT &) = delete;
+ CertErrorParams1SizeT &operator=(const CertErrorParams1SizeT &) = delete;
std::string ToDebugString() const override {
return name_ + std::string(": ") +
@@ -73,7 +72,7 @@ class CertErrorParams1SizeT : public CertErrorParams {
}
private:
- const char* name_;
+ const char *name_;
size_t value_;
};
@@ -81,25 +80,24 @@ class CertErrorParams1SizeT : public CertErrorParams {
// values.
class CertErrorParams2SizeT : public CertErrorParams {
public:
- CertErrorParams2SizeT(const char* name1,
- size_t value1,
- const char* name2,
+ CertErrorParams2SizeT(const char *name1, size_t value1, const char *name2,
size_t value2)
: name1_(name1), value1_(value1), name2_(name2), value2_(value2) {}
- CertErrorParams2SizeT(const CertErrorParams2SizeT&) = delete;
- CertErrorParams2SizeT& operator=(const CertErrorParams2SizeT&) = delete;
+ CertErrorParams2SizeT(const CertErrorParams2SizeT &) = delete;
+ CertErrorParams2SizeT &operator=(const CertErrorParams2SizeT &) = delete;
std::string ToDebugString() const override {
return name1_ + std::string(": ") +
bssl::string_util::NumberToDecimalString(value1_) + "\n" + name2_ +
- std::string(": ") + bssl::string_util::NumberToDecimalString(value2_);
+ std::string(": ") +
+ bssl::string_util::NumberToDecimalString(value2_);
}
private:
- const char* name1_;
+ const char *name1_;
size_t value1_;
- const char* name2_;
+ const char *name2_;
size_t value2_;
};
@@ -108,38 +106,33 @@ class CertErrorParams2SizeT : public CertErrorParams {
CertErrorParams::CertErrorParams() = default;
CertErrorParams::~CertErrorParams() = default;
-std::unique_ptr<CertErrorParams> CreateCertErrorParams1Der(
- const char* name,
- const der::Input& der) {
+std::unique_ptr<CertErrorParams> CreateCertErrorParams1Der(const char *name,
+ der::Input der) {
BSSL_CHECK(name);
return std::make_unique<CertErrorParams2Der>(name, der, nullptr,
der::Input());
}
-std::unique_ptr<CertErrorParams> CreateCertErrorParams2Der(
- const char* name1,
- const der::Input& der1,
- const char* name2,
- const der::Input& der2) {
+std::unique_ptr<CertErrorParams> CreateCertErrorParams2Der(const char *name1,
+ der::Input der1,
+ const char *name2,
+ der::Input der2) {
BSSL_CHECK(name1);
BSSL_CHECK(name2);
return std::make_unique<CertErrorParams2Der>(name1, der1, name2, der2);
}
-std::unique_ptr<CertErrorParams> CreateCertErrorParams1SizeT(const char* name,
+std::unique_ptr<CertErrorParams> CreateCertErrorParams1SizeT(const char *name,
size_t value) {
BSSL_CHECK(name);
return std::make_unique<CertErrorParams1SizeT>(name, value);
}
OPENSSL_EXPORT std::unique_ptr<CertErrorParams> CreateCertErrorParams2SizeT(
- const char* name1,
- size_t value1,
- const char* name2,
- size_t value2) {
+ const char *name1, size_t value1, const char *name2, size_t value2) {
BSSL_CHECK(name1);
BSSL_CHECK(name2);
return std::make_unique<CertErrorParams2SizeT>(name1, value1, name2, value2);
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/cert_error_params.h b/src/pki/cert_error_params.h
index f13c943..c407782 100644
--- a/src/pki/cert_error_params.h
+++ b/src/pki/cert_error_params.h
@@ -5,11 +5,10 @@
#ifndef BSSL_PKI_CERT_ERROR_PARAMS_H_
#define BSSL_PKI_CERT_ERROR_PARAMS_H_
-#include "fillins/openssl_util.h"
#include <memory>
#include <string>
-
+#include <openssl/base.h>
namespace bssl {
@@ -27,8 +26,8 @@ class OPENSSL_EXPORT CertErrorParams {
public:
CertErrorParams();
- CertErrorParams(const CertErrorParams&) = delete;
- CertErrorParams& operator=(const CertErrorParams&) = delete;
+ CertErrorParams(const CertErrorParams &) = delete;
+ CertErrorParams &operator=(const CertErrorParams &) = delete;
virtual ~CertErrorParams();
@@ -40,29 +39,21 @@ class OPENSSL_EXPORT CertErrorParams {
// Creates a parameter object that holds a copy of |der|, and names it |name|
// in debug string outputs.
OPENSSL_EXPORT std::unique_ptr<CertErrorParams> CreateCertErrorParams1Der(
- const char* name,
- const der::Input& der);
+ const char *name, der::Input der);
// Same as CreateCertErrorParams1Der() but has a second DER blob.
OPENSSL_EXPORT std::unique_ptr<CertErrorParams> CreateCertErrorParams2Der(
- const char* name1,
- const der::Input& der1,
- const char* name2,
- const der::Input& der2);
+ const char *name1, der::Input der1, const char *name2, der::Input der2);
// Creates a parameter object that holds a single size_t value. |name| is used
// when pretty-printing the parameters.
OPENSSL_EXPORT std::unique_ptr<CertErrorParams> CreateCertErrorParams1SizeT(
- const char* name,
- size_t value);
+ const char *name, size_t value);
// Same as CreateCertErrorParams1SizeT() but has a second size_t.
OPENSSL_EXPORT std::unique_ptr<CertErrorParams> CreateCertErrorParams2SizeT(
- const char* name1,
- size_t value1,
- const char* name2,
- size_t value2);
+ const char *name1, size_t value1, const char *name2, size_t value2);
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_CERT_ERROR_PARAMS_H_
diff --git a/src/pki/cert_errors.cc b/src/pki/cert_errors.cc
index 12376b9..3f5a77f 100644
--- a/src/pki/cert_errors.cc
+++ b/src/pki/cert_errors.cc
@@ -14,9 +14,9 @@ namespace bssl {
namespace {
-void AppendLinesWithIndentation(const std::string& text,
- const std::string& indentation,
- std::string* out) {
+void AppendLinesWithIndentation(const std::string &text,
+ const std::string &indentation,
+ std::string *out) {
std::istringstream stream(text);
for (std::string line; std::getline(stream, line, '\n');) {
out->append(indentation);
@@ -29,14 +29,13 @@ void AppendLinesWithIndentation(const std::string& text,
CertError::CertError() = default;
-CertError::CertError(Severity in_severity,
- CertErrorId in_id,
+CertError::CertError(Severity in_severity, CertErrorId in_id,
std::unique_ptr<CertErrorParams> in_params)
: severity(in_severity), id(in_id), params(std::move(in_params)) {}
-CertError::CertError(CertError&& other) = default;
+CertError::CertError(CertError &&other) = default;
-CertError& CertError::operator=(CertError&&) = default;
+CertError &CertError::operator=(CertError &&) = default;
CertError::~CertError() = default;
@@ -53,19 +52,19 @@ std::string CertError::ToDebugString() const {
result += CertErrorIdToDebugString(id);
result += +"\n";
- if (params)
+ if (params) {
AppendLinesWithIndentation(params->ToDebugString(), " ", &result);
+ }
return result;
}
CertErrors::CertErrors() = default;
-CertErrors::CertErrors(CertErrors&& other) = default;
-CertErrors& CertErrors::operator=(CertErrors&&) = default;
+CertErrors::CertErrors(CertErrors &&other) = default;
+CertErrors &CertErrors::operator=(CertErrors &&) = default;
CertErrors::~CertErrors() = default;
-void CertErrors::Add(CertError::Severity severity,
- CertErrorId id,
+void CertErrors::Add(CertError::Severity severity, CertErrorId id,
std::unique_ptr<CertErrorParams> params) {
nodes_.emplace_back(severity, id, std::move(params));
}
@@ -75,103 +74,112 @@ void CertErrors::AddError(CertErrorId id,
Add(CertError::SEVERITY_HIGH, id, std::move(params));
}
-void CertErrors::AddError(CertErrorId id) {
- AddError(id, nullptr);
-}
+void CertErrors::AddError(CertErrorId id) { AddError(id, nullptr); }
void CertErrors::AddWarning(CertErrorId id,
std::unique_ptr<CertErrorParams> params) {
Add(CertError::SEVERITY_WARNING, id, std::move(params));
}
-void CertErrors::AddWarning(CertErrorId id) {
- AddWarning(id, nullptr);
-}
+void CertErrors::AddWarning(CertErrorId id) { AddWarning(id, nullptr); }
std::string CertErrors::ToDebugString() const {
std::string result;
- for (const CertError& node : nodes_)
+ for (const CertError &node : nodes_) {
result += node.ToDebugString();
+ }
return result;
}
-bool CertErrors::ContainsError(CertErrorId id) const {
- for (const CertError& node : nodes_) {
- if (node.id == id)
+bool CertErrors::ContainsErrorWithSeverity(CertErrorId id,
+ CertError::Severity severity) const {
+ for (const CertError &node : nodes_) {
+ if (node.id == id && node.severity == severity) {
return true;
+ }
}
return false;
}
+bool CertErrors::ContainsError(CertErrorId id) const {
+ return ContainsErrorWithSeverity(id, CertError::SEVERITY_HIGH);
+}
+
bool CertErrors::ContainsAnyErrorWithSeverity(
CertError::Severity severity) const {
- for (const CertError& node : nodes_) {
- if (node.severity == severity)
+ for (const CertError &node : nodes_) {
+ if (node.severity == severity) {
return true;
+ }
}
return false;
}
CertPathErrors::CertPathErrors() = default;
-CertPathErrors::CertPathErrors(CertPathErrors&& other) = default;
-CertPathErrors& CertPathErrors::operator=(CertPathErrors&&) = default;
+CertPathErrors::CertPathErrors(CertPathErrors &&other) = default;
+CertPathErrors &CertPathErrors::operator=(CertPathErrors &&) = default;
CertPathErrors::~CertPathErrors() = default;
-CertErrors* CertPathErrors::GetErrorsForCert(size_t cert_index) {
- if (cert_index >= cert_errors_.size())
+CertErrors *CertPathErrors::GetErrorsForCert(size_t cert_index) {
+ if (cert_index >= cert_errors_.size()) {
cert_errors_.resize(cert_index + 1);
+ }
return &cert_errors_[cert_index];
}
-const CertErrors* CertPathErrors::GetErrorsForCert(size_t cert_index) const {
- if (cert_index >= cert_errors_.size())
+const CertErrors *CertPathErrors::GetErrorsForCert(size_t cert_index) const {
+ if (cert_index >= cert_errors_.size()) {
return nullptr;
+ }
return &cert_errors_[cert_index];
}
-CertErrors* CertPathErrors::GetOtherErrors() {
- return &other_errors_;
-}
+CertErrors *CertPathErrors::GetOtherErrors() { return &other_errors_; }
bool CertPathErrors::ContainsError(CertErrorId id) const {
- for (const CertErrors& errors : cert_errors_) {
- if (errors.ContainsError(id))
+ for (const CertErrors &errors : cert_errors_) {
+ if (errors.ContainsError(id)) {
return true;
+ }
}
- if (other_errors_.ContainsError(id))
+ if (other_errors_.ContainsError(id)) {
return true;
+ }
return false;
}
bool CertPathErrors::ContainsAnyErrorWithSeverity(
CertError::Severity severity) const {
- for (const CertErrors& errors : cert_errors_) {
- if (errors.ContainsAnyErrorWithSeverity(severity))
+ for (const CertErrors &errors : cert_errors_) {
+ if (errors.ContainsAnyErrorWithSeverity(severity)) {
return true;
+ }
}
- if (other_errors_.ContainsAnyErrorWithSeverity(severity))
+ if (other_errors_.ContainsAnyErrorWithSeverity(severity)) {
return true;
+ }
return false;
}
std::string CertPathErrors::ToDebugString(
- const ParsedCertificateList& certs) const {
+ const ParsedCertificateList &certs) const {
std::ostringstream result;
for (size_t i = 0; i < cert_errors_.size(); ++i) {
// Pretty print the current CertErrors. If there were no errors/warnings,
// then continue.
- const CertErrors& errors = cert_errors_[i];
+ const CertErrors &errors = cert_errors_[i];
std::string cert_errors_string = errors.ToDebugString();
- if (cert_errors_string.empty())
+ if (cert_errors_string.empty()) {
continue;
+ }
// Add a header that identifies which certificate this CertErrors pertains
// to.
@@ -198,4 +206,4 @@ std::string CertPathErrors::ToDebugString(
return result.str();
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/cert_errors.h b/src/pki/cert_errors.h
index 68977f8..da35060 100644
--- a/src/pki/cert_errors.h
+++ b/src/pki/cert_errors.h
@@ -5,7 +5,6 @@
// ----------------------------
// Overview of error design
// ----------------------------
-#include "fillins/openssl_util.h"
//
// Certificate path building/validation/parsing may emit a sequence of errors
// and warnings.
@@ -50,6 +49,7 @@
#include <memory>
#include <vector>
+#include <openssl/base.h>
#include "cert_error_id.h"
#include "parsed_certificate.h"
@@ -66,11 +66,10 @@ struct OPENSSL_EXPORT CertError {
};
CertError();
- CertError(Severity severity,
- CertErrorId id,
+ CertError(Severity severity, CertErrorId id,
std::unique_ptr<CertErrorParams> params);
- CertError(CertError&& other);
- CertError& operator=(CertError&&);
+ CertError(CertError &&other);
+ CertError &operator=(CertError &&);
~CertError();
// Pretty-prints the error and its parameters.
@@ -86,13 +85,12 @@ struct OPENSSL_EXPORT CertError {
class OPENSSL_EXPORT CertErrors {
public:
CertErrors();
- CertErrors(CertErrors&& other);
- CertErrors& operator=(CertErrors&&);
+ CertErrors(CertErrors &&other);
+ CertErrors &operator=(CertErrors &&);
~CertErrors();
// Adds an error/warning. |params| may be null.
- void Add(CertError::Severity severity,
- CertErrorId id,
+ void Add(CertError::Severity severity, CertErrorId id,
std::unique_ptr<CertErrorParams> params);
// Adds a high severity error.
@@ -106,8 +104,13 @@ class OPENSSL_EXPORT CertErrors {
// Dumps a textual representation of the errors for debugging purposes.
std::string ToDebugString() const;
- // Returns true if the error |id| was added to this CertErrors (of any
- // severity).
+ // Returns true if the error |id| was added to this CertErrors at
+ // severity |severity|
+ bool ContainsErrorWithSeverity(CertErrorId id,
+ CertError::Severity severity) const;
+
+ // Returns true if the error |id| was added to this CertErrors at
+ // high serverity.
bool ContainsError(CertErrorId id) const;
// Returns true if this contains any errors of the given severity level.
@@ -123,24 +126,24 @@ class OPENSSL_EXPORT CertErrors {
class OPENSSL_EXPORT CertPathErrors {
public:
CertPathErrors();
- CertPathErrors(CertPathErrors&& other);
- CertPathErrors& operator=(CertPathErrors&&);
+ CertPathErrors(CertPathErrors &&other);
+ CertPathErrors &operator=(CertPathErrors &&);
~CertPathErrors();
// Gets a bucket to put errors in for |cert_index|. This will lookup and
// return the existing error bucket if one exists, or create a new one for the
// specified index. It is expected that |cert_index| is the corresponding
// index in a certificate chain (with 0 being the target).
- CertErrors* GetErrorsForCert(size_t cert_index);
+ CertErrors *GetErrorsForCert(size_t cert_index);
// Const version of the above, with the difference that if there is no
// existing bucket for |cert_index| returns nullptr rather than lazyily
// creating one.
- const CertErrors* GetErrorsForCert(size_t cert_index) const;
+ const CertErrors *GetErrorsForCert(size_t cert_index) const;
// Returns a bucket to put errors that are not associated with a particular
// certificate.
- CertErrors* GetOtherErrors();
+ CertErrors *GetOtherErrors();
// Returns true if CertPathErrors contains the specified error (of any
// severity).
@@ -156,13 +159,13 @@ class OPENSSL_EXPORT CertPathErrors {
// Pretty-prints all the errors in the CertPathErrors. If there were no
// errors/warnings, returns an empty string.
- std::string ToDebugString(const ParsedCertificateList& certs) const;
+ std::string ToDebugString(const ParsedCertificateList &certs) const;
private:
std::vector<CertErrors> cert_errors_;
CertErrors other_errors_;
};
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_CERT_ERRORS_H_
diff --git a/src/pki/cert_issuer_source.h b/src/pki/cert_issuer_source.h
index ba37d45..7de0fa4 100644
--- a/src/pki/cert_issuer_source.h
+++ b/src/pki/cert_issuer_source.h
@@ -5,10 +5,10 @@
#ifndef BSSL_PKI_CERT_ISSUER_SOURCE_H_
#define BSSL_PKI_CERT_ISSUER_SOURCE_H_
-#include "fillins/openssl_util.h"
#include <memory>
#include <vector>
+#include <openssl/base.h>
#include "parsed_certificate.h"
@@ -27,8 +27,8 @@ class OPENSSL_EXPORT CertIssuerSource {
public:
Request() = default;
- Request(const Request&) = delete;
- Request& operator=(const Request&) = delete;
+ Request(const Request &) = delete;
+ Request &operator=(const Request &) = delete;
// Destruction of the Request cancels it.
virtual ~Request() = default;
@@ -40,7 +40,7 @@ class OPENSSL_EXPORT CertIssuerSource {
// If no issuers are left then |issuers| will not be modified. This
// indicates that the issuers have been exhausted and GetNext() should
// not be called again.
- virtual void GetNext(ParsedCertificateList* issuers) = 0;
+ virtual void GetNext(ParsedCertificateList *issuers) = 0;
};
virtual ~CertIssuerSource() = default;
@@ -49,8 +49,8 @@ class OPENSSL_EXPORT CertIssuerSource {
// Matches are appended to |issuers|. Any existing contents of |issuers| will
// not be modified. If the implementation does not support synchronous
// lookups, or if there are no matches, |issuers| is not modified.
- virtual void SyncGetIssuersOf(const ParsedCertificate* cert,
- ParsedCertificateList* issuers) = 0;
+ virtual void SyncGetIssuersOf(const ParsedCertificate *cert,
+ ParsedCertificateList *issuers) = 0;
// Finds certificates whose Subject matches |cert|'s Issuer.
// If the implementation does not support asynchronous lookups or can
@@ -59,10 +59,10 @@ class OPENSSL_EXPORT CertIssuerSource {
//
// Otherwise a request is started and saved to |out_req|. The results can be
// read through the Request interface.
- virtual void AsyncGetIssuersOf(const ParsedCertificate* cert,
- std::unique_ptr<Request>* out_req) = 0;
+ virtual void AsyncGetIssuersOf(const ParsedCertificate *cert,
+ std::unique_ptr<Request> *out_req) = 0;
};
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_CERT_ISSUER_SOURCE_H_
diff --git a/src/pki/cert_issuer_source_static.cc b/src/pki/cert_issuer_source_static.cc
index ea4be67..fc20eb9 100644
--- a/src/pki/cert_issuer_source_static.cc
+++ b/src/pki/cert_issuer_source_static.cc
@@ -12,26 +12,24 @@ CertIssuerSourceStatic::~CertIssuerSourceStatic() = default;
void CertIssuerSourceStatic::AddCert(
std::shared_ptr<const ParsedCertificate> cert) {
intermediates_.insert(std::make_pair(
- cert->normalized_subject().AsStringView(), std::move(cert)));
+ BytesAsStringView(cert->normalized_subject()), std::move(cert)));
}
-void CertIssuerSourceStatic::Clear() {
- intermediates_.clear();
-}
+void CertIssuerSourceStatic::Clear() { intermediates_.clear(); }
-void CertIssuerSourceStatic::SyncGetIssuersOf(const ParsedCertificate* cert,
- ParsedCertificateList* issuers) {
+void CertIssuerSourceStatic::SyncGetIssuersOf(const ParsedCertificate *cert,
+ ParsedCertificateList *issuers) {
auto range =
- intermediates_.equal_range(cert->normalized_issuer().AsStringView());
- for (auto it = range.first; it != range.second; ++it)
+ intermediates_.equal_range(BytesAsStringView(cert->normalized_issuer()));
+ for (auto it = range.first; it != range.second; ++it) {
issuers->push_back(it->second);
+ }
}
void CertIssuerSourceStatic::AsyncGetIssuersOf(
- const ParsedCertificate* cert,
- std::unique_ptr<Request>* out_req) {
+ const ParsedCertificate *cert, std::unique_ptr<Request> *out_req) {
// CertIssuerSourceStatic never returns asynchronous results.
out_req->reset();
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/cert_issuer_source_static.h b/src/pki/cert_issuer_source_static.h
index 11be846..1e60934 100644
--- a/src/pki/cert_issuer_source_static.h
+++ b/src/pki/cert_issuer_source_static.h
@@ -5,9 +5,9 @@
#ifndef BSSL_PKI_CERT_ISSUER_SOURCE_STATIC_H_
#define BSSL_PKI_CERT_ISSUER_SOURCE_STATIC_H_
-#include "fillins/openssl_util.h"
#include <unordered_map>
+#include <openssl/base.h>
#include "cert_issuer_source.h"
@@ -18,8 +18,8 @@ class OPENSSL_EXPORT CertIssuerSourceStatic : public CertIssuerSource {
public:
CertIssuerSourceStatic();
- CertIssuerSourceStatic(const CertIssuerSourceStatic&) = delete;
- CertIssuerSourceStatic& operator=(const CertIssuerSourceStatic&) = delete;
+ CertIssuerSourceStatic(const CertIssuerSourceStatic &) = delete;
+ CertIssuerSourceStatic &operator=(const CertIssuerSourceStatic &) = delete;
~CertIssuerSourceStatic() override;
@@ -33,10 +33,10 @@ class OPENSSL_EXPORT CertIssuerSourceStatic : public CertIssuerSource {
size_t size() const { return intermediates_.size(); }
// CertIssuerSource implementation:
- void SyncGetIssuersOf(const ParsedCertificate* cert,
- ParsedCertificateList* issuers) override;
- void AsyncGetIssuersOf(const ParsedCertificate* cert,
- std::unique_ptr<Request>* out_req) override;
+ void SyncGetIssuersOf(const ParsedCertificate *cert,
+ ParsedCertificateList *issuers) override;
+ void AsyncGetIssuersOf(const ParsedCertificate *cert,
+ std::unique_ptr<Request> *out_req) override;
private:
// The certificates that the CertIssuerSourceStatic can return, keyed on the
@@ -46,6 +46,6 @@ class OPENSSL_EXPORT CertIssuerSourceStatic : public CertIssuerSource {
intermediates_;
};
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_CERT_ISSUER_SOURCE_STATIC_H_
diff --git a/src/pki/cert_issuer_source_static_unittest.cc b/src/pki/cert_issuer_source_static_unittest.cc
index b745968..36f809a 100644
--- a/src/pki/cert_issuer_source_static_unittest.cc
+++ b/src/pki/cert_issuer_source_static_unittest.cc
@@ -4,9 +4,9 @@
#include "cert_issuer_source_static.h"
+#include <gtest/gtest.h>
#include "cert_issuer_source_sync_unittest.h"
#include "parsed_certificate.h"
-#include <gtest/gtest.h>
namespace bssl {
@@ -18,7 +18,7 @@ class CertIssuerSourceStaticTestDelegate {
source_.AddCert(std::move(cert));
}
- CertIssuerSource& source() { return source_; }
+ CertIssuerSource &source() { return source_; }
protected:
CertIssuerSourceStatic source_;
@@ -37,4 +37,4 @@ GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(
} // namespace
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/cert_issuer_source_sync_unittest.h b/src/pki/cert_issuer_source_sync_unittest.h
index ef5ef0b..c9e25c1 100644
--- a/src/pki/cert_issuer_source_sync_unittest.h
+++ b/src/pki/cert_issuer_source_sync_unittest.h
@@ -7,19 +7,19 @@
#include <algorithm>
+#include <gtest/gtest.h>
+#include <openssl/pool.h>
#include "cert_errors.h"
#include "cert_issuer_source.h"
#include "test_helpers.h"
-#include <gtest/gtest.h>
-#include <openssl/pool.h>
namespace bssl {
namespace {
-::testing::AssertionResult ReadTestPem(const std::string& file_name,
- const std::string& block_name,
- std::string* result) {
+::testing::AssertionResult ReadTestPem(const std::string &file_name,
+ const std::string &block_name,
+ std::string *result) {
const PemBlockMapping mappings[] = {
{block_name.c_str(), result},
};
@@ -28,18 +28,19 @@ namespace {
}
::testing::AssertionResult ReadTestCert(
- const std::string& file_name,
- std::shared_ptr<const ParsedCertificate>* result) {
+ const std::string &file_name,
+ std::shared_ptr<const ParsedCertificate> *result) {
std::string der;
::testing::AssertionResult r =
ReadTestPem("testdata/cert_issuer_source_static_unittest/" + file_name,
"CERTIFICATE", &der);
- if (!r)
+ if (!r) {
return r;
+ }
CertErrors errors;
*result = ParsedCertificate::Create(
bssl::UniquePtr<CRYPTO_BUFFER>(CRYPTO_BUFFER_new(
- reinterpret_cast<const uint8_t*>(der.data()), der.size(), nullptr)),
+ reinterpret_cast<const uint8_t *>(der.data()), der.size(), nullptr)),
{}, &errors);
if (!*result) {
return ::testing::AssertionFailure()
@@ -86,7 +87,7 @@ class CertIssuerSourceSyncTest : public ::testing::Test {
AddCert(e2_);
}
- CertIssuerSource& source() { return delegate_.source(); }
+ CertIssuerSource &source() { return delegate_.source(); }
protected:
bool IssuersMatch(std::shared_ptr<const ParsedCertificate> cert,
@@ -95,17 +96,20 @@ class CertIssuerSourceSyncTest : public ::testing::Test {
source().SyncGetIssuersOf(cert.get(), &matches);
std::vector<der::Input> der_result_matches;
- for (const auto& it : matches)
+ for (const auto &it : matches) {
der_result_matches.push_back(it->der_cert());
+ }
std::sort(der_result_matches.begin(), der_result_matches.end());
std::vector<der::Input> der_expected_matches;
- for (const auto& it : expected_matches)
+ for (const auto &it : expected_matches) {
der_expected_matches.push_back(it->der_cert());
+ }
std::sort(der_expected_matches.begin(), der_expected_matches.end());
- if (der_expected_matches == der_result_matches)
+ if (der_expected_matches == der_result_matches) {
return true;
+ }
// Print some extra information for debugging.
EXPECT_EQ(der_expected_matches, der_result_matches);
@@ -168,12 +172,8 @@ TYPED_TEST_P(CertIssuerSourceSyncTest, IsNotAsync) {
// These are all the tests that should have the same result with or without
// normalization.
-REGISTER_TYPED_TEST_SUITE_P(CertIssuerSourceSyncTest,
- NoMatch,
- OneMatch,
- MultipleMatches,
- SelfIssued,
- IsNotAsync);
+REGISTER_TYPED_TEST_SUITE_P(CertIssuerSourceSyncTest, NoMatch, OneMatch,
+ MultipleMatches, SelfIssued, IsNotAsync);
template <typename TestDelegate>
class CertIssuerSourceSyncNormalizationTest
@@ -211,6 +211,6 @@ TYPED_TEST_P(CertIssuerSourceSyncNotNormalizedTest,
REGISTER_TYPED_TEST_SUITE_P(CertIssuerSourceSyncNotNormalizedTest,
OneMatchWithoutNormalization);
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_CERT_ISSUER_SOURCE_SYNC_UNITTEST_H_
diff --git a/src/pki/cert_status_flags.h b/src/pki/cert_status_flags.h
deleted file mode 100644
index 9f7d979..0000000
--- a/src/pki/cert_status_flags.h
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2012 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BSSL_PKI_CERT_STATUS_FLAGS_H_
-#define BSSL_PKI_CERT_STATUS_FLAGS_H_
-
-#include "fillins/openssl_util.h"
-#include <stdint.h>
-
-
-
-namespace bssl {
-
-// Bitmask of status flags of a certificate, representing any errors, as well as
-// other non-error status information such as whether the certificate is EV.
-typedef uint32_t CertStatus;
-
-// NOTE: Because these names have appeared in bug reports, we preserve them as
-// MACRO_STYLE for continuity, instead of renaming them to kConstantStyle as
-// befits most static consts.
-#define CERT_STATUS_FLAG(label, value) \
- CertStatus static const CERT_STATUS_##label = value;
-#include "cert_status_flags_list.h"
-#undef CERT_STATUS_FLAG
-
-static const CertStatus CERT_STATUS_ALL_ERRORS = 0xFF00FFFF;
-
-// Returns true if the specified cert status has an error set.
-inline bool IsCertStatusError(CertStatus status) {
- return (CERT_STATUS_ALL_ERRORS & status) != 0;
-}
-
-// Maps a network error code to the equivalent certificate status flag. If
-// the error code is not a certificate error, it is mapped to 0.
-// Note: It is not safe to go bssl::CertStatus -> bssl::Error -> bssl::CertStatus,
-// as the CertStatus contains more information. Conversely, going from
-// bssl::Error -> bssl::CertStatus -> bssl::Error is not a lossy function, for the
-// same reason.
-// To avoid incorrect use, this is only exported for unittest helpers.
-OPENSSL_EXPORT CertStatus MapNetErrorToCertStatus(int error);
-
-// Maps the most serious certificate error in the certificate status flags
-// to the equivalent network error code.
-OPENSSL_EXPORT int MapCertStatusToNetError(CertStatus cert_status);
-
-} // namespace net
-
-#endif // BSSL_PKI_CERT_STATUS_FLAGS_H_
diff --git a/src/pki/cert_status_flags_list.h b/src/pki/cert_status_flags_list.h
deleted file mode 100644
index d5ab73c..0000000
--- a/src/pki/cert_status_flags_list.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2014 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This file intentionally does not have header guards, it's included
-// inside a macro to generate enum values. The following line silences a
-// presubmit warning that would otherwise be triggered by this:
-// no-include-guard-because-multiply-included
-// NOLINT(build/header_guard)
-
-// This is the list of CertStatus flags and their values.
-//
-// Defines the values using a macro CERT_STATUS_FLAG,
-// so it can be expanded differently in some places
-
-// The possible status bits for CertStatus.
-// Bits 0 to 15 are for errors.
-CERT_STATUS_FLAG(COMMON_NAME_INVALID, 1 << 0)
-CERT_STATUS_FLAG(DATE_INVALID, 1 << 1)
-CERT_STATUS_FLAG(AUTHORITY_INVALID, 1 << 2)
-// 1 << 3 is reserved for ERR_CERT_CONTAINS_ERRORS (not useful with WinHTTP).
-CERT_STATUS_FLAG(NO_REVOCATION_MECHANISM, 1 << 4)
-CERT_STATUS_FLAG(UNABLE_TO_CHECK_REVOCATION, 1 << 5)
-CERT_STATUS_FLAG(REVOKED, 1 << 6)
-CERT_STATUS_FLAG(INVALID, 1 << 7)
-CERT_STATUS_FLAG(WEAK_SIGNATURE_ALGORITHM, 1 << 8)
-// 1 << 9 was used for CERT_STATUS_NOT_IN_DNS
-CERT_STATUS_FLAG(NON_UNIQUE_NAME, 1 << 10)
-CERT_STATUS_FLAG(WEAK_KEY, 1 << 11)
-// 1 << 12 was used for CERT_STATUS_WEAK_DH_KEY
-CERT_STATUS_FLAG(PINNED_KEY_MISSING, 1 << 13)
-CERT_STATUS_FLAG(NAME_CONSTRAINT_VIOLATION, 1 << 14)
-CERT_STATUS_FLAG(VALIDITY_TOO_LONG, 1 << 15)
-
-// Bits 16 to 23 are for non-error statuses.
-CERT_STATUS_FLAG(IS_EV, 1 << 16)
-CERT_STATUS_FLAG(REV_CHECKING_ENABLED, 1 << 17)
-// Bit 18 was CERT_STATUS_IS_DNSSEC
-CERT_STATUS_FLAG(SHA1_SIGNATURE_PRESENT, 1 << 19)
-CERT_STATUS_FLAG(CT_COMPLIANCE_FAILED, 1 << 20)
-CERT_STATUS_FLAG(KNOWN_INTERCEPTION_DETECTED, 1 << 21)
-
-// Bits 24 - 31 are for errors.
-CERT_STATUS_FLAG(CERTIFICATE_TRANSPARENCY_REQUIRED, 1 << 24)
-CERT_STATUS_FLAG(SYMANTEC_LEGACY, 1 << 25)
-CERT_STATUS_FLAG(KNOWN_INTERCEPTION_BLOCKED, 1 << 26)
-// Bit 27 was CERT_STATUS_LEGACY_TLS.
diff --git a/src/pki/cert_verify_proc_blocklist.inc b/src/pki/cert_verify_proc_blocklist.inc
deleted file mode 100644
index dfc238a..0000000
--- a/src/pki/cert_verify_proc_blocklist.inc
+++ /dev/null
@@ -1,427 +0,0 @@
-// Copyright 2016 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// The certificate(s) that were misissued, and which represent these SPKIs,
-// are stored within net/data/ssl/blocklist. Further details about the
-// rationale is documented in net/data/ssl/blocklist/README.md
-static constexpr uint8_t
- kSPKIBlockList[][SHA256_DIGEST_LENGTH] = {
- // 2740d956b1127b791aa1b3cc644a4dbedba76186a23638b95102351a834ea861.pem
- {0x04, 0xdd, 0xe9, 0xaa, 0x9a, 0x79, 0xf6, 0x14, 0x98, 0x68, 0x23,
- 0x25, 0xfa, 0x08, 0x70, 0x27, 0x67, 0x07, 0xfb, 0x9c, 0xa9, 0x53,
- 0x84, 0x12, 0x0b, 0x46, 0x89, 0x32, 0x68, 0x49, 0x4f, 0xc9},
- // 91e5cc32910686c5cac25c18cc805696c7b33868c280caf0c72844a2a8eb91e2.pem
- {0x0c, 0x43, 0xea, 0x8b, 0xcd, 0xe9, 0xfc, 0x3b, 0xca, 0x16, 0x56,
- 0x64, 0xac, 0x82, 0x15, 0x56, 0x7e, 0x34, 0x89, 0xd5, 0x39, 0x3a,
- 0x0c, 0x81, 0xe1, 0xa7, 0x91, 0x41, 0x99, 0x2e, 0x19, 0x53},
- // ead610e6e90b439f2ecb51628b0932620f6ef340bd843fca38d3181b8f4ba197.pem
- {0x12, 0x13, 0x23, 0x60, 0xa3, 0x3b, 0xfd, 0xc6, 0xc3, 0xbf, 0x7b,
- 0x7f, 0xab, 0x26, 0xa1, 0x68, 0x48, 0x74, 0xe7, 0x2c, 0x12, 0x63,
- 0xc1, 0xf5, 0xde, 0x56, 0x5b, 0xb4, 0x9e, 0xf0, 0x37, 0x53},
- // 4bf6bb839b03b72839329b4ea70bb1b2f0d07e014d9d24aa9cc596114702bee3.pem
- {0x12, 0x7d, 0xa2, 0x7a, 0x9e, 0x45, 0xf0, 0x82, 0x28, 0x0b, 0x31,
- 0xbf, 0x1e, 0x56, 0x15, 0x20, 0x38, 0x9f, 0x96, 0x65, 0x90, 0x93,
- 0xb2, 0x69, 0x7c, 0x40, 0xfe, 0x86, 0x00, 0x23, 0x6c, 0x8c},
- // 0f912fd7be760be25afbc56bdc09cd9e5dcc9c6f6a55a778aefcb6aa30e31554.pem
- {0x13, 0x0a, 0xd4, 0xe0, 0x63, 0x35, 0x21, 0x29, 0x05, 0x31, 0xb6,
- 0x65, 0x1f, 0x57, 0x59, 0xb0, 0xbc, 0x7b, 0xc6, 0x56, 0x70, 0x9f,
- 0xf8, 0xf3, 0x65, 0xc2, 0x14, 0x3b, 0x03, 0x89, 0xb6, 0xf6},
- // 91018fcd3e0dc73f48d011a123f604d846d66821c58304474f949d7449dd600a.pem
- {0x15, 0xe7, 0xae, 0x40, 0xcc, 0x4b, 0x3f, 0x72, 0x22, 0xa5, 0xa6,
- 0xfe, 0x3e, 0x7d, 0xc4, 0x7f, 0x6e, 0x46, 0xee, 0x9a, 0x22, 0x51,
- 0x83, 0x9d, 0xb2, 0x96, 0xd6, 0x2a, 0xda, 0x2a, 0x0d, 0xf7},
- // c7ba6567de93a798ae1faa791e712d378fae1f93c4397fea441bb7cbe6fd5995.pem
- {0x15, 0x28, 0x39, 0x7d, 0xa2, 0x12, 0x89, 0x0a, 0x83, 0x0b, 0x0b,
- 0x95, 0xa5, 0x99, 0x68, 0xce, 0xf2, 0x34, 0x77, 0x37, 0x79, 0xdf,
- 0x51, 0x81, 0xcf, 0x10, 0xfa, 0x64, 0x75, 0x34, 0xbb, 0x65},
- // 1af56c98ff043ef92bebff54cebb4dd67a25ba956c817f3e6dd3c1e52eb584c1.key
- {0x1a, 0xf5, 0x6c, 0x98, 0xff, 0x04, 0x3e, 0xf9, 0x2b, 0xeb, 0xff,
- 0x54, 0xce, 0xbb, 0x4d, 0xd6, 0x7a, 0x25, 0xba, 0x95, 0x6c, 0x81,
- 0x7f, 0x3e, 0x6d, 0xd3, 0xc1, 0xe5, 0x2e, 0xb5, 0x84, 0xc1},
- // e28393773da845a679f2080cc7fb44a3b7a1c3792cb7eb7729fdcb6a8d99aea7.pem
- {0x1f, 0x42, 0x24, 0xce, 0xc8, 0x4f, 0xc9, 0x9c, 0xed, 0x88, 0x1f,
- 0xf6, 0xfc, 0xfd, 0x3e, 0x21, 0xf8, 0xc5, 0x19, 0xc5, 0x47, 0xaa,
- 0x6a, 0x5d, 0xd3, 0xde, 0x24, 0x73, 0x02, 0xce, 0x50, 0xd1},
- // e54e9fc27e7350ff63a77764a40267b7e95ae5df3ed7df5336e8f8541356c845.pem
- {0x25, 0xda, 0x1a, 0xd5, 0x8b, 0xbf, 0xcf, 0xb2, 0x27, 0xd8, 0x72,
- 0x3b, 0x18, 0x57, 0xd4, 0xc1, 0x8e, 0x7b, 0xaa, 0x74, 0x17, 0xb4,
- 0xf9, 0xef, 0xf9, 0x36, 0x6b, 0x5e, 0x86, 0x9f, 0x8b, 0x39},
- // 159ca03a88897c8f13817a212629df84ce824709492b8c9adb8e5437d2fc72be.pem
- {0x2c, 0x99, 0x8e, 0x76, 0x11, 0x60, 0xc3, 0xb0, 0x6d, 0x82, 0xfa,
- 0xa9, 0xfd, 0xc7, 0x54, 0x5d, 0x9b, 0xda, 0x9e, 0xb6, 0x03, 0x10,
- 0xf9, 0x92, 0xaa, 0x51, 0x0a, 0x62, 0x80, 0xb7, 0x42, 0x45},
- // 82a4cedbc7f61ce5cb04482aa27ea3145bb0cea58ab63ba1931a1654bfbdbb4f.pem
- {0x2d, 0xc4, 0xcb, 0x59, 0x1f, 0x7e, 0xf0, 0x66, 0x34, 0x41, 0x64,
- 0x6b, 0xcf, 0x5c, 0x0e, 0x9d, 0xbc, 0xde, 0xd7, 0x7c, 0xa0, 0x29,
- 0x45, 0x19, 0x3c, 0xef, 0xc6, 0xed, 0xb1, 0x74, 0x06, 0x14},
- // d0d672c2547d574ae055d9e78a993ddbcc74044c4253fbfaca573a67d368e1db.pem
- {0x30, 0xef, 0xe4, 0x13, 0x82, 0x47, 0x6c, 0x33, 0x80, 0xf0, 0x2f,
- 0x7e, 0x23, 0xe6, 0x6b, 0xa2, 0xf8, 0x67, 0xb0, 0x59, 0xee, 0x1e,
- 0xa6, 0x87, 0x96, 0xb4, 0x41, 0xb8, 0x5b, 0x5d, 0x12, 0x56},
- // 32ecc96f912f96d889e73088cd031c7ded2c651c805016157a23b6f32f798a3b.key
- {0x32, 0xec, 0xc9, 0x6f, 0x91, 0x2f, 0x96, 0xd8, 0x89, 0xe7, 0x30,
- 0x88, 0xcd, 0x03, 0x1c, 0x7d, 0xed, 0x2c, 0x65, 0x1c, 0x80, 0x50,
- 0x16, 0x15, 0x7a, 0x23, 0xb6, 0xf3, 0x2f, 0x79, 0x8a, 0x3b},
- // 4aefc3d39ef59e4d4b0304b20f53a8af2efb69edece66def74494abfc10a2d66.pem
- {0x36, 0xea, 0x96, 0x12, 0x8c, 0x89, 0x83, 0x9f, 0xb6, 0x21, 0xf8,
- 0xad, 0x0e, 0x1e, 0xe0, 0xb9, 0xc2, 0x20, 0x6f, 0x62, 0xab, 0x7b,
- 0x4d, 0xa2, 0xc6, 0x76, 0x58, 0x93, 0xc9, 0xb7, 0xce, 0xd2},
- // d487a56f83b07482e85e963394c1ecc2c9e51d0903ee946b02c301581ed99e16.pem
- {0x38, 0x1a, 0x3f, 0xc7, 0xa8, 0xb0, 0x82, 0xfa, 0x28, 0x61, 0x3a,
- 0x4d, 0x07, 0xf2, 0xc7, 0x55, 0x3f, 0x4e, 0x19, 0x18, 0xee, 0x07,
- 0xca, 0xa9, 0xe8, 0xb7, 0xce, 0xde, 0x5a, 0x9c, 0xa0, 0x6a},
- // 0ef7c54a3af101a2cfedb0c9f36fe8214d51a504fdc2ad1e243019cefd7d03c2.pem
- {0x38, 0x3e, 0x0e, 0x13, 0x7c, 0x37, 0xbf, 0xb9, 0xdb, 0x29, 0xf9,
- 0xa8, 0xe4, 0x5e, 0x9f, 0xf8, 0xdd, 0x4c, 0x30, 0xe4, 0x40, 0xfe,
- 0xc2, 0xac, 0xd3, 0xdb, 0xa7, 0xb6, 0xc7, 0x20, 0xb9, 0x93},
- // cb954e9d80a3e520ac71f1a84511657f2f309d172d0bb55e0ec2c236e74ff4b4.pem
- {0x39, 0x4c, 0xff, 0x58, 0x9e, 0x68, 0x93, 0x12, 0xcf, 0xc0, 0x71,
- 0xee, 0x0b, 0xc1, 0x9f, 0xe4, 0xc6, 0x06, 0x21, 0x6c, 0xe5, 0x43,
- 0x42, 0x9d, 0xe6, 0xdb, 0x62, 0xe4, 0x2d, 0xbb, 0x3b, 0xc1},
- // 42187727be39faf667aeb92bf0cc4e268f6e2ead2cefbec575bdc90430024f69.pem
- {0x3e, 0xdb, 0xd9, 0xac, 0xe6, 0x39, 0xba, 0x1a, 0x2d, 0x4a, 0xd0,
- 0x47, 0x18, 0x71, 0x1f, 0xda, 0x23, 0xe8, 0x59, 0xb2, 0xfb, 0xf5,
- 0xd1, 0x37, 0xd4, 0x24, 0x04, 0x5e, 0x79, 0x19, 0xdf, 0xb9},
- // 294f55ef3bd7244c6ff8a68ab797e9186ec27582751a791515e3292e48372d61.pem
- {0x45, 0x5b, 0x87, 0xe9, 0x6f, 0x1c, 0xea, 0x2f, 0x8b, 0x6d, 0xae,
- 0x08, 0x08, 0xec, 0x24, 0x73, 0x8f, 0xd9, 0x2b, 0x7f, 0xd3, 0x06,
- 0x75, 0x71, 0x98, 0xbf, 0x38, 0x9d, 0x75, 0x5c, 0x0b, 0x6c},
- // 3ab0fcc7287454c405863e3aa204fea8eb0c50a524d2a7e15524a830cd4ab0fe.pem
- {0x49, 0x0b, 0x6e, 0xc6, 0xbe, 0xb2, 0xd6, 0x03, 0x47, 0x20, 0xb5,
- 0x14, 0x9b, 0x6b, 0x29, 0xcd, 0x35, 0x51, 0x59, 0x88, 0xcc, 0x16,
- 0xaf, 0x85, 0x41, 0x48, 0xb0, 0x7b, 0x9b, 0x1f, 0x8a, 0x11},
- // b6fe9151402bad1c06d7e66db67a26aa7356f2e6c644dbcf9f98968ff632e1b7.pem
- {0x4b, 0xb8, 0xf3, 0x5b, 0xa1, 0xe1, 0x26, 0xf8, 0xdd, 0xe1, 0xb0,
- 0xc4, 0x20, 0x62, 0x5e, 0xd8, 0x6d, 0xce, 0x61, 0xa7, 0xbd, 0xda,
- 0xdb, 0xde, 0xa9, 0xab, 0xa5, 0x78, 0xff, 0x13, 0x14, 0x5e},
- // fa5a828c9a7e732692682e60b14c634309cbb2bb79eb12aef44318d853ee97e3.pem
- {0x4c, 0xdb, 0x06, 0x0f, 0x3c, 0xfe, 0x4c, 0x3d, 0x3f, 0x5e, 0x31,
- 0xc3, 0x00, 0xfd, 0x68, 0xa9, 0x1e, 0x0d, 0x1e, 0x5f, 0x46, 0xb6,
- 0x4e, 0x48, 0x95, 0xf2, 0x0e, 0x1b, 0x5c, 0xf8, 0x26, 0x9f},
- // ef3cb417fc8ebf6f97876c9e4ece39de1ea5fe649141d1028b7d11c0b2298ced.pem
- {0x4e, 0xad, 0xa9, 0xb5, 0x31, 0x1e, 0x71, 0x81, 0x99, 0xd9, 0x8e,
- 0xa8, 0x2b, 0x95, 0x00, 0x5c, 0xba, 0x93, 0x19, 0x8a, 0xb1, 0xf9,
- 0x7e, 0xfc, 0xbe, 0x8d, 0xc6, 0x20, 0x16, 0x28, 0xf8, 0xaf},
- // c1d80ce474a51128b77e794a98aa2d62a0225da3f419e5c7ed73dfbf660e7109.pem
- {0x4f, 0x71, 0x62, 0xb9, 0x74, 0x49, 0x1c, 0x98, 0x58, 0x5e, 0xc2,
- 0x8f, 0xe7, 0x59, 0xaa, 0x00, 0xc3, 0x30, 0xd0, 0xb4, 0x65, 0x19,
- 0x0a, 0x89, 0x6c, 0xc4, 0xb6, 0x16, 0x23, 0x18, 0x31, 0xfc},
- // 7abd72a323c9d179c722564f4e27a51dd4afd24006b38a40ce918b94960bcf18.pem
- {0x57, 0x80, 0x94, 0x46, 0xea, 0xf1, 0x14, 0x84, 0x38, 0x54, 0xfe,
- 0x63, 0x6e, 0xd9, 0xbc, 0xb5, 0x52, 0xe3, 0xc6, 0x16, 0x66, 0x3b,
- 0xc4, 0x4c, 0xc9, 0x5a, 0xcf, 0x56, 0x50, 0x01, 0x6d, 0x3e},
- // 817d4e05063d5942869c47d8504dc56a5208f7569c3d6d67f3457cfe921b3e29.pem
- {0x5c, 0x72, 0x2c, 0xb7, 0x0f, 0xb3, 0x11, 0xf2, 0x1e, 0x0d, 0xa0,
- 0xe7, 0xd1, 0x2e, 0xbc, 0x8e, 0x05, 0xf6, 0x07, 0x96, 0xbc, 0x49,
- 0xcf, 0x51, 0x18, 0x49, 0xd5, 0xbc, 0x62, 0x03, 0x03, 0x82},
- // 79f69a47cfd6c4b4ceae8030d04b49f6171d3b5d6c812f58d040e586f1cb3f14.pem
- // 933f7d8cda9f0d7c8bfd3c22bf4653f4161fd38ccdcf66b22e95a2f49c2650f8.pem
- // f8a5ff189fedbfe34e21103389a68340174439ad12974a4e8d4d784d1f3a0faa.pem
- {0x5e, 0x53, 0xf2, 0x64, 0x67, 0xf8, 0x94, 0xfd, 0xe5, 0x3b, 0x3f,
- 0xa4, 0x06, 0xa4, 0x40, 0xcb, 0xb3, 0xb0, 0x76, 0xbb, 0x5b, 0x75,
- 0x8f, 0xe4, 0x83, 0x4a, 0xd6, 0x65, 0x00, 0x20, 0x89, 0x07},
- // 2d11e736f0427fd6ba4b372755d34a0edd8d83f7e9e7f6c01b388c9b7afa850d.pem
- {0x6a, 0xdb, 0x8e, 0x3e, 0x05, 0x54, 0x60, 0x92, 0x2d, 0x15, 0x01,
- 0xcb, 0x97, 0xf9, 0x4c, 0x6a, 0x02, 0xe3, 0x9c, 0x8f, 0x27, 0x74,
- 0xca, 0x40, 0x88, 0x25, 0xb7, 0xb5, 0x83, 0x79, 0xdc, 0x14},
- // 2a33f5b48176523fd3c0d854f20093417175bfd498ef354cc7f38b54adabaf1a.pem
- {0x70, 0x7d, 0x36, 0x4e, 0x72, 0xae, 0x52, 0x14, 0x31, 0xdd, 0x95,
- 0x38, 0x97, 0xf9, 0xc4, 0x84, 0x6d, 0x5b, 0x8c, 0x32, 0x42, 0x98,
- 0xfe, 0x53, 0xfb, 0xd4, 0xad, 0xa1, 0xf2, 0xd1, 0x15, 0x7f},
- // f4a5984324de98bd979ef181a100cf940f2166173319a86a0d9d7c8fac3b0a8f.pem
- {0x71, 0x65, 0xe9, 0x91, 0xad, 0xe7, 0x91, 0x6d, 0x86, 0xb4, 0x66,
- 0xab, 0xeb, 0xb6, 0xe4, 0x57, 0xca, 0x93, 0x1c, 0x80, 0x4e, 0x58,
- 0xce, 0x1f, 0xba, 0xba, 0xe5, 0x09, 0x15, 0x6f, 0xfb, 0x43},
- // 3ae699d94e8febdacb86d4f90d40903333478e65e0655c432451197e33fa07f2.pem
- {0x78, 0x1a, 0x4c, 0xf2, 0xe9, 0x24, 0x52, 0xf3, 0xee, 0x01, 0xd0,
- 0xc3, 0x81, 0xa4, 0x21, 0x4f, 0x39, 0x04, 0x16, 0x5c, 0x39, 0x0a,
- 0xdb, 0xd6, 0x1f, 0xcd, 0x11, 0x24, 0x4e, 0x09, 0xb2, 0xdc},
- // 8b45da1c06f791eb0cabf26be588f5fb23165c2e614bf885562d0dce50b29b02.pem
- {0x7a, 0xed, 0xdd, 0xf3, 0x6b, 0x18, 0xf8, 0xac, 0xb7, 0x37, 0x9f,
- 0xe1, 0xce, 0x18, 0x32, 0x12, 0xb2, 0x35, 0x0d, 0x07, 0x88, 0xab,
- 0xe0, 0xe8, 0x24, 0x57, 0xbe, 0x9b, 0xad, 0xad, 0x6d, 0x54},
- // 5a885db19c01d912c5759388938cafbbdf031ab2d48e91ee15589b42971d039c.pem
- {0x7a, 0xfe, 0x4b, 0x07, 0x1a, 0x2f, 0x1f, 0x46, 0xf8, 0xba, 0x94,
- 0x4a, 0x26, 0xd5, 0x84, 0xd5, 0x96, 0x0b, 0x92, 0xfb, 0x48, 0xc3,
- 0xba, 0x1b, 0x7c, 0xab, 0x84, 0x90, 0x5f, 0x32, 0xaa, 0xcd},
- // c43807a64c51a3fbde5421011698013d8b46f4e315c46186dc23aea2670cd34f.pem
- {0x7c, 0xd2, 0x95, 0xb7, 0x55, 0x44, 0x80, 0x8a, 0xbd, 0x94, 0x09,
- 0x46, 0x6f, 0x08, 0x37, 0xc5, 0xaa, 0xdc, 0x02, 0xe3, 0x3b, 0x61,
- 0x50, 0xc6, 0x64, 0x4d, 0xe0, 0xa0, 0x96, 0x59, 0xf2, 0x3c},
- // f3bae5e9c0adbfbfb6dbf7e04e74be6ead3ca98a5604ffe591cea86c241848ec.pem
- {0x7d, 0x5e, 0x3f, 0x50, 0x50, 0x81, 0x97, 0xb9, 0xa4, 0x78, 0xb1,
- 0x13, 0x40, 0xb7, 0xdc, 0xe2, 0x0a, 0x3c, 0x4d, 0xe4, 0x9c, 0x48,
- 0xc9, 0xa2, 0x94, 0x15, 0x8a, 0x89, 0x5c, 0x44, 0xa2, 0x1b},
- // b8686723e415534bc0dbd16326f9486f85b0b0799bf6639334e61daae67f36cd.pem
- {0x7e, 0x70, 0x58, 0xea, 0x35, 0xad, 0x43, 0x59, 0x65, 0x41, 0x59,
- 0x97, 0x3f, 0x56, 0x01, 0x87, 0xf1, 0x6d, 0x19, 0xc5, 0x14, 0xb9,
- 0x39, 0xc5, 0x05, 0x56, 0x72, 0xd1, 0xd2, 0xa5, 0x18, 0xac},
- // 5e8e77aafdda2ba5ce442f27d8246650bbd6508befbeda35966a4dc7e6174edc.pem
- {0x87, 0xbf, 0xd8, 0xaf, 0xa3, 0xaf, 0x5b, 0x42, 0x9d, 0x09, 0xa9,
- 0xaa, 0x54, 0xee, 0x61, 0x36, 0x4f, 0x5a, 0xe1, 0x11, 0x31, 0xe4,
- 0x38, 0xfc, 0x41, 0x09, 0x53, 0x43, 0xcd, 0x16, 0xb1, 0x35},
- // 0c258a12a5674aef25f28ba7dcfaeceea348e541e6f5cc4ee63b71b361606ac3.pem
- {0x8a, 0x2a, 0xff, 0xbd, 0x1a, 0x1c, 0x5d, 0x1b, 0xdc, 0xcb, 0xb7,
- 0xf5, 0x48, 0xba, 0x99, 0x5f, 0x96, 0x68, 0x06, 0xb3, 0xfd, 0x0c,
- 0x3a, 0x00, 0xfa, 0xe2, 0xe5, 0x2f, 0x3c, 0x85, 0x39, 0x89},
- // 61c0fc2e38b5b6f9071b42cee54a9013d858b6697c68b460948551b3249576a1.pem
- {0x8e, 0x12, 0xd0, 0xcb, 0x3b, 0x7d, 0xf3, 0xea, 0x22, 0x57, 0x57,
- 0x94, 0x89, 0xfd, 0x86, 0x58, 0xc9, 0x56, 0x03, 0xea, 0x6c, 0xf4,
- 0xb7, 0x31, 0x63, 0xa4, 0x1e, 0xb7, 0xb7, 0xe9, 0x3f, 0xee},
- // ddd8ab9178c99cbd9685ea4ae66dc28bfdc9a5a8a166f7f69ad0b5042ad6eb28.pem
- {0x8f, 0x59, 0x1f, 0x7a, 0xa4, 0xdc, 0x3e, 0xfe, 0x94, 0x90, 0xc3,
- 0x8a, 0x46, 0x92, 0xc9, 0x01, 0x1e, 0xd1, 0x28, 0xf1, 0xde, 0x59,
- 0x55, 0x69, 0x40, 0x6d, 0x77, 0xb6, 0xfa, 0x1f, 0x6b, 0x4c},
- // 136335439334a7698016a0d324de72284e079d7b5220bb8fbd747816eebebaca.pem
- {0x92, 0x7a, 0x1b, 0x85, 0x62, 0x28, 0x05, 0x76, 0xd0, 0x48, 0xc5,
- 0x03, 0x21, 0xad, 0xa4, 0x3d, 0x87, 0x03, 0xd2, 0xd9, 0x52, 0x1a,
- 0x18, 0xc2, 0x8b, 0x8c, 0x46, 0xcc, 0x6a, 0xae, 0x4e, 0xfd},
- // 450f1b421bb05c8609854884559c323319619e8b06b001ea2dcbb74a23aa3be2.pem
- {0x93, 0xca, 0x2d, 0x43, 0x6c, 0xae, 0x7f, 0x68, 0xd2, 0xb4, 0x25,
- 0x6c, 0xa1, 0x75, 0xc9, 0x85, 0xce, 0x39, 0x92, 0x6d, 0xc9, 0xf7,
- 0xee, 0xae, 0xec, 0xf2, 0xf8, 0x97, 0x0f, 0xb9, 0x78, 0x02},
- // e757fd60d8dd4c26f77aca6a87f63ea4d38d0b736c7f79b56cad932d4c400fb5.pem
- {0x96, 0x2e, 0x4b, 0x54, 0xbb, 0x98, 0xa7, 0xee, 0x5d, 0x5f, 0xeb,
- 0x96, 0x33, 0xf9, 0x91, 0xd3, 0xc3, 0x30, 0x0e, 0x95, 0x14, 0xda,
- 0xde, 0x7b, 0x0d, 0x4f, 0x82, 0x8c, 0x79, 0x4f, 0x8e, 0x87},
- // 3d3d823fad13dfeef32da580166d4a4992bed5a22d695d12c8b08cc3463c67a2.pem
- {0x96, 0x8d, 0xba, 0x69, 0xfb, 0xff, 0x15, 0xbf, 0x37, 0x62, 0x08,
- 0x94, 0x31, 0xad, 0xe5, 0xa7, 0xea, 0xd4, 0xb7, 0xea, 0xf1, 0xbe,
- 0x70, 0x02, 0x68, 0x10, 0xbc, 0x57, 0xd1, 0xc6, 0x4f, 0x6e},
- // 1f17f2cbb109f01c885c94d9e74a48625ae9659665d6d7e7bc5a10332976370f.pem
- {0x99, 0xba, 0x47, 0x84, 0xf9, 0xb0, 0x85, 0x12, 0x90, 0x2e, 0xb0,
- 0xc3, 0xc8, 0x6d, 0xf0, 0xec, 0x04, 0x9e, 0xac, 0x9b, 0x65, 0xf7,
- 0x7a, 0x9b, 0xa4, 0x2b, 0xe9, 0xd6, 0xeb, 0xce, 0x32, 0x0f},
- // a8e1dfd9cd8e470aa2f443914f931cfd61c323e94d75827affee985241c35ce5.pem
- {0x9b, 0x8a, 0x93, 0xde, 0xcc, 0xcf, 0xba, 0xfc, 0xf4, 0xd0, 0x4d,
- 0x34, 0x42, 0x12, 0x8f, 0xb3, 0x52, 0x18, 0xcf, 0xe4, 0x37, 0xa3,
- 0xd8, 0xd0, 0x32, 0x8c, 0x99, 0xf8, 0x90, 0x89, 0xe4, 0x50},
- // 8253da6738b60c5c0bb139c78e045428a0c841272abdcb952f95ff05ed1ab476.pem
- {0x9c, 0x59, 0xa3, 0xcc, 0xae, 0xa4, 0x69, 0x98, 0x42, 0xb0, 0x68,
- 0xcf, 0xc5, 0x2c, 0xf9, 0x45, 0xdb, 0x51, 0x98, 0x69, 0x57, 0xc8,
- 0x32, 0xcd, 0xb1, 0x8c, 0xa7, 0x38, 0x49, 0xfb, 0xb9, 0xee},
- // 7d8ce822222b90c0b14342c7a8145d1f24351f4d1a1fe0edfd312ee73fb00149.pem
- {0x9d, 0x98, 0xa1, 0xfb, 0x60, 0x53, 0x8c, 0x4c, 0xc4, 0x85, 0x7f,
- 0xf1, 0xa8, 0xc8, 0x03, 0x4f, 0xaf, 0x6f, 0xc5, 0x92, 0x09, 0x3f,
- 0x61, 0x99, 0x94, 0xb2, 0xc8, 0x13, 0xd2, 0x50, 0xb8, 0x64},
- // 1c01c6f4dbb2fefc22558b2bca32563f49844acfc32b7be4b0ff599f9e8c7af7.pem
- {0x9d, 0xd5, 0x5f, 0xc5, 0x73, 0xf5, 0x46, 0xcb, 0x6a, 0x38, 0x31,
- 0xd1, 0x11, 0x2d, 0x87, 0x10, 0xa6, 0xf4, 0xf8, 0x2d, 0xc8, 0x7f,
- 0x5f, 0xae, 0x9d, 0x3a, 0x1a, 0x02, 0x8d, 0xd3, 0x6e, 0x4b},
- // 487afc8d0d411b2a05561a2a6f35918f4040e5570c4c73ee323cc50583bcfbb7.pem
- {0xa0, 0xcf, 0x53, 0xf4, 0x22, 0x65, 0x1e, 0x39, 0x31, 0x7a, 0xe3,
- 0x1a, 0xf6, 0x45, 0x77, 0xbe, 0x45, 0x0f, 0xa3, 0x76, 0xe2, 0x89,
- 0xed, 0x83, 0x42, 0xb7, 0xfc, 0x13, 0x3c, 0x69, 0x74, 0x19},
- // 0d136e439f0ab6e97f3a02a540da9f0641aa554e1d66ea51ae2920d51b2f7217.pem
- // 4fee0163686ecbd65db968e7494f55d84b25486d438e9de558d629d28cd4d176.pem
- // 8a1bd21661c60015065212cc98b1abb50dfd14c872a208e66bae890f25c448af.pem
- {0xa9, 0x03, 0xaf, 0x8c, 0x07, 0xbb, 0x91, 0xb0, 0xd9, 0xe3, 0xf3,
- 0xa3, 0x0c, 0x6d, 0x53, 0x33, 0x9f, 0xc5, 0xbd, 0x47, 0xe5, 0xd6,
- 0xbd, 0xb4, 0x76, 0x59, 0x88, 0x60, 0xc0, 0x68, 0xa0, 0x24},
- // a2e3bdaacaaf2d2e8204b3bc7eddc805d54d3ab8bdfe7bf102c035f67d8f898a.pem
- {0xa9, 0xb5, 0x5a, 0x9b, 0x55, 0x31, 0xbb, 0xf7, 0xc7, 0x1a, 0x1e,
- 0x49, 0x20, 0xef, 0xe7, 0x96, 0xc2, 0xb6, 0x79, 0x68, 0xf5, 0x5a,
- 0x6c, 0xe5, 0xcb, 0x62, 0x17, 0x2e, 0xd9, 0x94, 0x5b, 0xca},
- // 5472692abe5d02cd22eae3e0a0077f17802721d6576cde1cba2263ee803410c5.pem
- {0xaf, 0x59, 0x15, 0x18, 0xe2, 0xe6, 0xc6, 0x0e, 0xbb, 0xfc, 0x09,
- 0x07, 0xaf, 0xaa, 0x49, 0xbc, 0x40, 0x51, 0xd4, 0x5e, 0x7f, 0x21,
- 0x4a, 0xbf, 0xee, 0x75, 0x12, 0xee, 0x00, 0xf6, 0x61, 0xed},
- // 1df696f021ab1c3ace9a376b07ed7256a40214cd3396d7934087614924e2d7ef.pem
- {0xb1, 0x3f, 0xa2, 0xe6, 0x13, 0x1a, 0x88, 0x8a, 0x01, 0xf3, 0xd6,
- 0x20, 0x56, 0xfb, 0x0e, 0xfb, 0xe9, 0x99, 0xeb, 0x6b, 0x6e, 0x14,
- 0x92, 0x76, 0x13, 0xe0, 0x2b, 0xa8, 0xb8, 0xfb, 0x04, 0x6e},
- // b8c1b957c077ea76e00b0f45bff5ae3acb696f221d2e062164fe37125e5a8d25.pem
- {0xb3, 0x18, 0x2e, 0x28, 0x9a, 0xe3, 0x4d, 0xdf, 0x2b, 0xe6, 0x43,
- 0xab, 0x79, 0xc2, 0x44, 0x30, 0x16, 0x05, 0xfa, 0x0f, 0x1e, 0xaa,
- 0xe6, 0xd1, 0x0f, 0xb9, 0x29, 0x60, 0x0a, 0xf8, 0x4d, 0xf0},
- // be144b56fb1163c49c9a0e6b5a458df6b29f7e6449985960c178a4744624b7bc.pem
- {0xb4, 0xd5, 0xc9, 0x20, 0x41, 0x5e, 0xd0, 0xcc, 0x4f, 0x5d, 0xbc,
- 0x7f, 0x54, 0x26, 0x36, 0x76, 0x2e, 0x80, 0xda, 0x66, 0x25, 0xf3,
- 0x3f, 0x2b, 0x6a, 0xd6, 0xdb, 0x68, 0xbd, 0xba, 0xb2, 0x9a},
- // 00309c736dd661da6f1eb24173aa849944c168a43a15bffd192eecfdb6f8dbd2.pem
- {0xb5, 0xba, 0x8d, 0xd7, 0xf8, 0x95, 0x64, 0xc2, 0x88, 0x9d, 0x3d,
- 0x64, 0x53, 0xc8, 0x49, 0x98, 0xc7, 0x78, 0x24, 0x91, 0x9b, 0x64,
- 0xea, 0x08, 0x35, 0xaa, 0x62, 0x98, 0x65, 0x91, 0xbe, 0x50},
- // 04f1bec36951bc1454a904ce32890c5da3cde1356b7900f6e62dfa2041ebad51.pem
- {0xb8, 0x9b, 0xcb, 0xb8, 0xac, 0xd4, 0x74, 0xc1, 0xbe, 0xa7, 0xda,
- 0xd6, 0x50, 0x37, 0xf4, 0x8d, 0xce, 0xcc, 0x9d, 0xfa, 0xa0, 0x61,
- 0x2c, 0x3c, 0x24, 0x45, 0x95, 0x64, 0x19, 0xdf, 0x32, 0xfe},
- // d8888f4a84f74c974dffb573a1bf5bbbacd1713b905096f8eb015062bf396c4d.pem
- {0xc0, 0xed, 0x20, 0x53, 0x46, 0xbb, 0xbd, 0xe0, 0x6e, 0xb5, 0x60,
- 0xf5, 0xce, 0xe0, 0x2a, 0x36, 0x34, 0xe2, 0x47, 0x4a, 0x7e, 0x76,
- 0xcf, 0x8f, 0xbe, 0xf5, 0x63, 0xbb, 0x11, 0x7d, 0xd0, 0xe3},
- // 372447c43185c38edd2ce0e9c853f9ac1576ddd1704c2f54d96076c089cb4227.pem
- {0xc1, 0x73, 0xf0, 0x62, 0x64, 0x56, 0xca, 0x85, 0x4f, 0xf2, 0xa7,
- 0xf0, 0xb1, 0x33, 0xa7, 0xcf, 0x4d, 0x02, 0x11, 0xe5, 0x52, 0xf2,
- 0x4b, 0x3e, 0x33, 0xad, 0xe8, 0xc5, 0x9f, 0x0a, 0x42, 0x4c},
- // c4387d45364a313fbfe79812b35b815d42852ab03b06f11589638021c8f2cb44.key
- {0xc4, 0x38, 0x7d, 0x45, 0x36, 0x4a, 0x31, 0x3f, 0xbf, 0xe7, 0x98,
- 0x12, 0xb3, 0x5b, 0x81, 0x5d, 0x42, 0x85, 0x2a, 0xb0, 0x3b, 0x06,
- 0xf1, 0x15, 0x89, 0x63, 0x80, 0x21, 0xc8, 0xf2, 0xcb, 0x44},
- // 8290cc3fc1c3aac3239782c141ace8f88aeef4e9576a43d01867cf19d025be66.pem
- // 9532e8b504964331c271f3f5f10070131a08bf8ba438978ce394c34feeae246f.pem
- {0xc6, 0x01, 0x23, 0x4e, 0x2b, 0x93, 0x25, 0xdc, 0x92, 0xe3, 0xea,
- 0xba, 0xc1, 0x96, 0x00, 0xb0, 0xb4, 0x99, 0x47, 0xd4, 0xd0, 0x4d,
- 0x8c, 0x99, 0xd3, 0x21, 0x27, 0x49, 0x3e, 0xa0, 0x28, 0xf8},
- // 0753e940378c1bd5e3836e395daea5cb839e5046f1bd0eae1951cf10fec7c965.pem
- {0xc6, 0x3d, 0x68, 0xc6, 0x48, 0xa1, 0x8b, 0x77, 0x64, 0x1c, 0x42,
- 0x7a, 0x66, 0x9d, 0x61, 0xc9, 0x76, 0x8a, 0x55, 0xf4, 0xfc, 0xd0,
- 0x32, 0x2e, 0xac, 0x96, 0xc5, 0x77, 0x00, 0x29, 0x9c, 0xf1},
- // 53d48e7b8869a3314f213fd2e0178219ca09022dbe50053bf6f76fccd61e8112.pem
- {0xc8, 0xfd, 0xdc, 0x75, 0xcb, 0x1b, 0xdb, 0xb5, 0x8c, 0x07, 0xb4,
- 0xea, 0x84, 0x72, 0x87, 0xf6, 0x26, 0x65, 0x9d, 0xd6, 0x6b, 0xc1,
- 0x0a, 0x26, 0xad, 0xd9, 0xb5, 0x75, 0xb3, 0xa0, 0xa3, 0x8d},
- // ec30c9c3065a06bb07dc5b1c6b497f370c1ca65c0f30c08e042ba6bcecc78f2c.pem
- {0xcd, 0xee, 0x9f, 0x33, 0x05, 0x57, 0x2a, 0x67, 0x7e, 0x1a, 0x6c,
- 0x82, 0xdc, 0x1e, 0x02, 0xa3, 0x5b, 0x11, 0xca, 0xe6, 0xa6, 0x84,
- 0x33, 0x8c, 0x9f, 0x37, 0xfe, 0x1a, 0xc8, 0xda, 0xec, 0x23},
- // 063e4afac491dfd332f3089b8542e94617d893d7fe944e10a7937ee29d9693c0.pem
- {0xce, 0xd4, 0x39, 0x02, 0xab, 0x5f, 0xb5, 0x7b, 0x44, 0x23, 0x22,
- 0xdc, 0x0e, 0x17, 0x2a, 0x4f, 0xb5, 0x5f, 0x71, 0x78, 0xb8, 0x08,
- 0xf9, 0x4e, 0x78, 0x0a, 0x6f, 0xd6, 0xcc, 0x6b, 0xd8, 0x18},
- // c71f33c36d8efeefbed9d44e85e21cfe96b36fb0e132c52dca2415868492bf8a.pem
- {0xd3, 0x1e, 0xc3, 0x92, 0x85, 0xb7, 0xa5, 0x31, 0x9d, 0x01, 0x57,
- 0xdb, 0x42, 0x0e, 0xd8, 0x7c, 0x74, 0x3e, 0x33, 0x3b, 0xbc, 0x77,
- 0xf8, 0x77, 0x1f, 0x70, 0x46, 0x4f, 0x43, 0x6a, 0x60, 0x49},
- // 9ed8f9b0e8e42a1656b8e1dd18f42ba42dc06fe52686173ba2fc70e756f207dc.pem
- // a686fee577c88ab664d0787ecdfff035f4806f3de418dc9e4d516324fff02083.pem
- // fdedb5bdfcb67411513a61aee5cb5b5d7c52af06028efc996cc1b05b1d6cea2b.pem
- {0xd3, 0x4b, 0x25, 0x5b, 0x2f, 0xe7, 0xd1, 0xa0, 0x96, 0x56, 0xcb,
- 0xab, 0x64, 0x09, 0xf7, 0x3c, 0x79, 0x6e, 0xc7, 0xd6, 0x6a, 0xf7,
- 0x36, 0x53, 0xec, 0xc3, 0x9a, 0xf9, 0x78, 0x29, 0x73, 0x10},
- // 4b22d5a6aec99f3cdb79aa5ec06838479cd5ecba7164f7f22dc1d65f63d85708.pem
- {0xd6, 0xa1, 0x84, 0x43, 0xd3, 0x48, 0xdb, 0x99, 0x4f, 0x93, 0x4c,
- 0xcd, 0x8e, 0x63, 0x5d, 0x83, 0x3a, 0x27, 0xac, 0x1e, 0x56, 0xf8,
- 0xaf, 0xaf, 0x7c, 0x97, 0xcb, 0x4f, 0x43, 0xea, 0xb6, 0x8b},
- // d6f034bd94aa233f0297eca4245b283973e447aa590f310c77f48fdf83112254.pem
- {0xdb, 0x15, 0xc0, 0x06, 0x2b, 0x52, 0x0f, 0x31, 0x8a, 0x19, 0xda,
- 0xcf, 0xec, 0xd6, 0x4f, 0x9e, 0x7a, 0x3f, 0xbe, 0x60, 0x9f, 0xd5,
- 0x86, 0x79, 0x6f, 0x20, 0xae, 0x02, 0x8e, 0x8e, 0x30, 0x58},
- // 2a4397aafa6227fa11f9f9d76ecbb022b0a4494852c2b93fb2085c8afb19b62a.pem
- {0xdb, 0x1d, 0x13, 0xec, 0x42, 0xa2, 0xcb, 0xa3, 0x67, 0x3b, 0xa6,
- 0x7a, 0xf2, 0xde, 0xf8, 0x12, 0xe9, 0xc3, 0x55, 0x66, 0x61, 0x75,
- 0x76, 0xd9, 0x5b, 0x4d, 0x6f, 0xac, 0xe3, 0xef, 0x0a, 0xe8},
- // 3946901f46b0071e90d78279e82fababca177231a704be72c5b0e8918566ea66.pem
- {0xdd, 0x3e, 0xeb, 0x77, 0x9b, 0xee, 0x07, 0xf9, 0xef, 0xda, 0xc3,
- 0x82, 0x40, 0x8b, 0x28, 0xd1, 0x42, 0xfa, 0x84, 0x2c, 0x78, 0xe8,
- 0xbc, 0x0e, 0x33, 0x34, 0x8d, 0x57, 0xb9, 0x2f, 0x05, 0x83},
- // c67d722c1495be02cbf9ef1159f5ca4aa782dc832dc6aa60c9aa076a0ad1e69d.pem
- {0xde, 0x8f, 0x05, 0x07, 0x4e, 0xc0, 0x31, 0x8e, 0x7e, 0x7e, 0x8d,
- 0x31, 0x90, 0xda, 0xe8, 0xb0, 0x08, 0x94, 0xf0, 0xe8, 0xdd, 0xdf,
- 0xd3, 0x91, 0x3d, 0x01, 0x75, 0x9b, 0x4f, 0x79, 0xb0, 0x5d},
- // c766a9bef2d4071c863a31aa4920e813b2d198608cb7b7cfe21143b836df09ea.pem
- // e17890ee09a3fbf4f48b9c414a17d637b7a50647e9bc752322727fcc1742a911.pem
- {0xe4, 0x2f, 0x24, 0xbd, 0x4d, 0x37, 0xf4, 0xaa, 0x2e, 0x56, 0xb9,
- 0x79, 0xd8, 0x3d, 0x1e, 0x65, 0x21, 0x9f, 0xe0, 0xe9, 0xe3, 0xa3,
- 0x82, 0xa1, 0xb3, 0xcb, 0x66, 0xc9, 0x39, 0x55, 0xde, 0x75},
- // e4f9a3235df7330255f36412bc849fb630f8519961ec3538301deb896c953da5.pem
- {0xe6, 0xe1, 0x36, 0xc8, 0x61, 0x54, 0xf3, 0x2c, 0x3e, 0x49, 0xf4,
- 0x7c, 0xfc, 0x6b, 0x33, 0x8f, 0xf2, 0xdc, 0x61, 0xce, 0x14, 0xfc,
- 0x75, 0x89, 0xb3, 0xb5, 0x6a, 0x14, 0x50, 0x13, 0x27, 0x01},
- // 3e26492e20b52de79e15766e6cb4251a1d566b0dbfb225aa7d08dda1dcebbf0a.pem
- {0xe7, 0xb9, 0x32, 0xae, 0x7e, 0x9b, 0xdc, 0x70, 0x1d, 0x77, 0x1d,
- 0x6f, 0x39, 0xe8, 0xa6, 0x53, 0x44, 0x9e, 0xea, 0x43, 0xbd, 0xb4,
- 0x7b, 0xd9, 0x10, 0x22, 0x95, 0x0d, 0x91, 0x79, 0xd8, 0x7e},
- // 5ccaf9f8f2bb3a0d215922eca383354b6ee3c62407ed32e30f6fb2618edeea10.pem
- {0xe8, 0x49, 0xc7, 0x17, 0x6c, 0x93, 0xdf, 0x65, 0xf6, 0x4b, 0x61,
- 0x69, 0x82, 0x36, 0x6e, 0x56, 0x63, 0x11, 0x78, 0x12, 0xb6, 0xfa,
- 0x2b, 0xc0, 0xc8, 0xfa, 0x8a, 0xea, 0xee, 0x41, 0x81, 0xcc},
- // ea08c8d45d52ca593de524f0513ca6418da9859f7b08ef13ff9dd7bf612d6a37.key
- {0xea, 0x08, 0xc8, 0xd4, 0x5d, 0x52, 0xca, 0x59, 0x3d, 0xe5, 0x24,
- 0xf0, 0x51, 0x3c, 0xa6, 0x41, 0x8d, 0xa9, 0x85, 0x9f, 0x7b, 0x08,
- 0xef, 0x13, 0xff, 0x9d, 0xd7, 0xbf, 0x61, 0x2d, 0x6a, 0x37},
- // d40e9c86cd8fe468c1776959f49ea774fa548684b6c406f3909261f4dce2575c.pem
- {0xea, 0x87, 0xf4, 0x62, 0xde, 0xef, 0xff, 0xbd, 0x77, 0x75, 0xaa,
- 0x2a, 0x4b, 0x7e, 0x0f, 0xcb, 0x91, 0xc2, 0x2e, 0xee, 0x6d, 0xf6,
- 0x9e, 0xd9, 0x01, 0x00, 0xcc, 0xc7, 0x3b, 0x31, 0x14, 0x76},
- // 60911c79835c3739432d08c45df64311e06985c5889dc5420ce3d142c8c7ef58.pem
- {0xef, 0x55, 0x12, 0x84, 0x71, 0x52, 0x32, 0xde, 0x92, 0xe2, 0x46,
- 0xc3, 0x23, 0x32, 0x93, 0x62, 0xb1, 0x32, 0x49, 0x3b, 0xb1, 0x6b,
- 0x58, 0x9e, 0x47, 0x75, 0x52, 0x0b, 0xeb, 0x87, 0x1a, 0x56},
- // 31c8fd37db9b56e708b03d1f01848b068c6da66f36fb5d82c008c6040fa3e133.pem
- {0xf0, 0x34, 0xf6, 0x42, 0xca, 0x1d, 0x9e, 0x88, 0xe9, 0xef, 0xea,
- 0xfc, 0xb1, 0x5c, 0x7c, 0x93, 0x7a, 0xa1, 0x9e, 0x04, 0xb0, 0x80,
- 0xf2, 0x73, 0x35, 0xe1, 0xda, 0x70, 0xd1, 0xca, 0x12, 0x01},
- // 83618f932d6947744d5ecca299d4b2820c01483947bd16be814e683f7436be24.pem
- {0xf2, 0xbb, 0xe0, 0x4c, 0x5d, 0xc7, 0x0d, 0x76, 0x3e, 0x89, 0xc5,
- 0xa0, 0x52, 0x70, 0x48, 0xcd, 0x9e, 0xcd, 0x39, 0xeb, 0x62, 0x1e,
- 0x20, 0x72, 0xff, 0x9a, 0x5f, 0x84, 0x32, 0x57, 0x1a, 0xa0},
- // 2a3699deca1e9fd099ba45de8489e205977c9f2a5e29d5dd747381eec0744d71.pem
- {0xf3, 0x0e, 0x8f, 0x61, 0x01, 0x1d, 0x65, 0x87, 0x3c, 0xcb, 0x81,
- 0xb4, 0x0f, 0xa6, 0x21, 0x97, 0x49, 0xb9, 0x94, 0xf0, 0x1f, 0xa2,
- 0x4d, 0x02, 0x01, 0xd5, 0x21, 0xc2, 0x43, 0x56, 0x03, 0xca},
- // 0d90cd8e35209b4cefebdd62b644bed8eb55c74dddff26e75caf8ae70491f0bd.pem
- {0xf5, 0x29, 0x3d, 0x47, 0xed, 0x38, 0xd4, 0xc3, 0x1b, 0x2d, 0x42,
- 0xde, 0xe3, 0xb5, 0xb3, 0xac, 0xe9, 0x7c, 0xa2, 0x6c, 0xa2, 0xac,
- 0x03, 0x65, 0xe3, 0x62, 0x2e, 0xe8, 0x02, 0x13, 0x1f, 0xbb},
- // 67ed4b703d15dc555f8c444b3a05a32579cb7599bd19c9babe10c584ea327ae0.pem
- {0xfa, 0x00, 0xbe, 0xc7, 0x3d, 0xd9, 0x97, 0x95, 0xdf, 0x11, 0x62,
- 0xc7, 0x89, 0x98, 0x70, 0x04, 0xc2, 0x6c, 0xbf, 0x90, 0xaf, 0x4d,
- 0xb4, 0x42, 0xf6, 0x62, 0x20, 0xde, 0x41, 0x35, 0x4a, 0xc9},
- // a25a19546819d048000ef9c6577c4bcd8d2155b1e4346a4599d6c8b79799d4a1.pem
- {0xfc, 0xd7, 0x6c, 0xca, 0x23, 0x47, 0xe5, 0xcd, 0x5b, 0x39, 0x34,
- 0x7f, 0x51, 0xcf, 0x43, 0x65, 0x4b, 0x69, 0xa2, 0xbf, 0xc9, 0x07,
- 0x36, 0x70, 0xa6, 0xbe, 0x47, 0xd8, 0x70, 0x1e, 0x6e, 0x0e},
- // 44a244105569a730791f509b24c3d7838a462216bb0f560ef87fbe76c2e6005a.pem
- {0xb0, 0xfc, 0xce, 0x78, 0xc1, 0x66, 0x4e, 0x29, 0x35, 0x44, 0xc1,
- 0x43, 0xe3, 0xd2, 0x68, 0x9f, 0x72, 0x3f, 0x5b, 0x6e, 0x63, 0x17,
- 0x10, 0x7e, 0x16, 0x3d, 0x22, 0xba, 0x80, 0x69, 0x79, 0x4a},
- // 0230a604d99220e5612ee7862ab9f7a6e18e4f1ac4c9e27075788cc5220169ab.pem
- {0xc5, 0x62, 0x17, 0xb7, 0xa8, 0x28, 0xc7, 0x34, 0x1c, 0x0a, 0xe7,
- 0xa5, 0x90, 0xd8, 0x79, 0x0d, 0x4d, 0xef, 0x53, 0x66, 0x52, 0xe6,
- 0x0a, 0xe5, 0xb8, 0xbd, 0xfa, 0x26, 0x97, 0x8f, 0xe0, 0x9c},
- // 06fd20629c143b9eab28d2799caefc5d23fde267d16c631e3f5b8b4bab3f68e6.pem
- {0xe4, 0x7c, 0x5c, 0xd2, 0xdc, 0x8b, 0xab, 0xb4, 0xe5, 0x3f, 0x8a,
- 0x49, 0x83, 0x92, 0x02, 0x75, 0xef, 0x6f, 0xfa, 0xac, 0xb0, 0x89,
- 0xe8, 0x7a, 0x2c, 0x1f, 0xbe, 0x5a, 0x58, 0x5f, 0x05, 0xed},
- // 0bd39de4793cdc117138f47708aa4d583acf67adb059a0d91f668d1803bf6489.pem
- {0x39, 0x73, 0x65, 0x88, 0xb9, 0x4a, 0x4c, 0xe7, 0x67, 0xf7, 0x31,
- 0xca, 0xd5, 0x3f, 0x4c, 0xbe, 0x44, 0x13, 0x7e, 0x32, 0x1e, 0xad,
- 0xca, 0xef, 0x8c, 0xe7, 0x9a, 0x22, 0x9b, 0xbc, 0xa9, 0x89},
- // c95c133b68319ee516b5f41e377f589878af1556567cc2834ef03b1d10830fd3.pem
- {0xea, 0x12, 0x70, 0x5d, 0xe7, 0xc4, 0x8f, 0x6f, 0xcc, 0xe2, 0xcb,
- 0x8d, 0xbc, 0x54, 0x2e, 0x0f, 0xc3, 0x8a, 0xc3, 0x8e, 0x08, 0x88,
- 0x0d, 0xd0, 0x4a, 0x02, 0xef, 0x67, 0xc9, 0x3a, 0xe1, 0x35},
- // 29abf614b2870ed70df11225e9ae2068e3074eb9845ae252c2064e31ce9fe8a1.pem
- {0xa6, 0xac, 0xa1, 0xec, 0x98, 0x09, 0xcc, 0x5b, 0x48, 0x21, 0xff,
- 0x9d, 0x29, 0xc5, 0xeb, 0xe6, 0x51, 0x96, 0x0b, 0x91, 0xb1, 0xf1,
- 0x9c, 0xc8, 0x9b, 0x55, 0xef, 0x87, 0x81, 0x8a, 0x95, 0x09},
-};
-
-// Hashes of SubjectPublicKeyInfos known to be used for interception by a
-// party other than the device or machine owner.
-static constexpr uint8_t kKnownInterceptionList[][SHA256_DIGEST_LENGTH] = {
- // 1df696f021ab1c3ace9a376b07ed7256a40214cd3396d7934087614924e2d7ef.pem
- {0xb1, 0x3f, 0xa2, 0xe6, 0x13, 0x1a, 0x88, 0x8a, 0x01, 0xf3, 0xd6, 0x20,
- 0x56, 0xfb, 0x0e, 0xfb, 0xe9, 0x99, 0xeb, 0x6b, 0x6e, 0x14, 0x92, 0x76,
- 0x13, 0xe0, 0x2b, 0xa8, 0xb8, 0xfb, 0x04, 0x6e},
- // 61c0fc2e38b5b6f9071b42cee54a9013d858b6697c68b460948551b3249576a1.pem
- {0x8e, 0x12, 0xd0, 0xcb, 0x3b, 0x7d, 0xf3, 0xea, 0x22, 0x57, 0x57, 0x94,
- 0x89, 0xfd, 0x86, 0x58, 0xc9, 0x56, 0x03, 0xea, 0x6c, 0xf4, 0xb7, 0x31,
- 0x63, 0xa4, 0x1e, 0xb7, 0xb7, 0xe9, 0x3f, 0xee},
- // 143315c857a9386973ed16840899c3f96b894a7a612c444efb691f14b0dedd87.pem
- {0xa4, 0xe9, 0xaf, 0x01, 0x41, 0x6e, 0x3a, 0x02, 0x9b, 0x5d, 0x35, 0xe5,
- 0xb1, 0x19, 0xde, 0x00, 0xcf, 0xe1, 0x56, 0xc5, 0xcf, 0x95, 0xfc, 0x82,
- 0x3c, 0xf6, 0xd0, 0x5e, 0x3c, 0x1a, 0x82, 0x37},
- // 44a244105569a730791f509b24c3d7838a462216bb0f560ef87fbe76c2e6005a.pem
- {0xb0, 0xfc, 0xce, 0x78, 0xc1, 0x66, 0x4e, 0x29, 0x35, 0x44, 0xc1, 0x43,
- 0xe3, 0xd2, 0x68, 0x9f, 0x72, 0x3f, 0x5b, 0x6e, 0x63, 0x17, 0x10, 0x7e,
- 0x16, 0x3d, 0x22, 0xba, 0x80, 0x69, 0x79, 0x4a},
- // 0230a604d99220e5612ee7862ab9f7a6e18e4f1ac4c9e27075788cc5220169ab.pem
- {0xc5, 0x62, 0x17, 0xb7, 0xa8, 0x28, 0xc7, 0x34, 0x1c, 0x0a, 0xe7, 0xa5,
- 0x90, 0xd8, 0x79, 0x0d, 0x4d, 0xef, 0x53, 0x66, 0x52, 0xe6, 0x0a, 0xe5,
- 0xb8, 0xbd, 0xfa, 0x26, 0x97, 0x8f, 0xe0, 0x9c},
- // 06fd20629c143b9eab28d2799caefc5d23fde267d16c631e3f5b8b4bab3f68e6.pem
- {0xe4, 0x7c, 0x5c, 0xd2, 0xdc, 0x8b, 0xab, 0xb4, 0xe5, 0x3f, 0x8a, 0x49,
- 0x83, 0x92, 0x02, 0x75, 0xef, 0x6f, 0xfa, 0xac, 0xb0, 0x89, 0xe8, 0x7a,
- 0x2c, 0x1f, 0xbe, 0x5a, 0x58, 0x5f, 0x05, 0xed},
- // 0bd39de4793cdc117138f47708aa4d583acf67adb059a0d91f668d1803bf6489.pem
- {0x39, 0x73, 0x65, 0x88, 0xb9, 0x4a, 0x4c, 0xe7, 0x67, 0xf7, 0x31,
- 0xca, 0xd5, 0x3f, 0x4c, 0xbe, 0x44, 0x13, 0x7e, 0x32, 0x1e, 0xad,
- 0xca, 0xef, 0x8c, 0xe7, 0x9a, 0x22, 0x9b, 0xbc, 0xa9, 0x89},
- // c95c133b68319ee516b5f41e377f589878af1556567cc2834ef03b1d10830fd3.pem
- {0xea, 0x12, 0x70, 0x5d, 0xe7, 0xc4, 0x8f, 0x6f, 0xcc, 0xe2, 0xcb, 0x8d,
- 0xbc, 0x54, 0x2e, 0x0f, 0xc3, 0x8a, 0xc3, 0x8e, 0x08, 0x88, 0x0d, 0xd0,
- 0x4a, 0x02, 0xef, 0x67, 0xc9, 0x3a, 0xe1, 0x35},
-};
diff --git a/src/pki/certificate.cc b/src/pki/certificate.cc
new file mode 100644
index 0000000..db1c627
--- /dev/null
+++ b/src/pki/certificate.cc
@@ -0,0 +1,117 @@
+/* Copyright (c) 2023, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+#include <optional>
+#include <string_view>
+
+#include <openssl/pki/certificate.h>
+#include <openssl/pool.h>
+
+#include "cert_errors.h"
+#include "encode_values.h"
+#include "parsed_certificate.h"
+#include "pem.h"
+#include "parse_values.h"
+
+namespace bssl {
+
+namespace {
+
+std::shared_ptr<const bssl::ParsedCertificate> ParseCertificateFromDer(
+ bssl::Span<const uint8_t>cert, std::string *out_diagnostic) {
+ bssl::ParseCertificateOptions default_options{};
+ // We follow Chromium in setting |allow_invalid_serial_numbers| in order to
+ // not choke on 21-byte serial numbers, which are common. davidben explains
+ // why:
+ //
+ // The reason for the discrepancy is that unsigned numbers with the high bit
+ // otherwise set get an extra 0 byte in front to keep them positive. So if you
+ // do:
+ // var num [20]byte
+ // fillWithRandom(num[:])
+ // serialNumber := new(big.Int).SetBytes(num[:])
+ // encodeASN1Integer(serialNumber)
+ //
+ // Then half of your serial numbers will be encoded with 21 bytes. (And
+ // 1/512th will have 19 bytes instead of 20.)
+ default_options.allow_invalid_serial_numbers = true;
+
+ bssl::UniquePtr<CRYPTO_BUFFER> buffer(
+ CRYPTO_BUFFER_new(cert.data(), cert.size(), nullptr));
+ bssl::CertErrors errors;
+ std::shared_ptr<const bssl::ParsedCertificate> parsed_cert(
+ bssl::ParsedCertificate::Create(std::move(buffer), default_options, &errors));
+ if (!parsed_cert) {
+ *out_diagnostic = errors.ToDebugString();
+ return nullptr;
+ }
+ return parsed_cert;
+}
+
+} // namespace
+
+struct CertificateInternals {
+ std::shared_ptr<const bssl::ParsedCertificate> cert;
+};
+
+Certificate::Certificate(std::unique_ptr<CertificateInternals> internals)
+ : internals_(std::move(internals)) {}
+Certificate::~Certificate() = default;
+Certificate::Certificate(Certificate&& other) = default;
+
+std::unique_ptr<Certificate> Certificate::FromDER(bssl::Span<const uint8_t> der,
+ std::string *out_diagnostic) {
+ std::shared_ptr<const bssl::ParsedCertificate> result =
+ ParseCertificateFromDer(der, out_diagnostic);
+ if (result == nullptr) {
+ return nullptr;
+ }
+
+ auto internals = std::make_unique<CertificateInternals>();
+ internals->cert = std::move(result);
+ std::unique_ptr<Certificate> ret(new Certificate(std::move(internals)));
+ return ret;
+}
+
+std::unique_ptr<Certificate> Certificate::FromPEM(std::string_view pem,
+ std::string *out_diagnostic) {
+ bssl::PEMTokenizer tokenizer(pem, {"CERTIFICATE"});
+ if (!tokenizer.GetNext()) {
+ return nullptr;
+ }
+ return FromDER(StringAsBytes(tokenizer.data()), out_diagnostic);
+}
+
+bool Certificate::IsSelfIssued() const {
+ return internals_->cert->normalized_subject() ==
+ internals_->cert->normalized_issuer();
+}
+
+Certificate::Validity Certificate::GetValidity() const {
+ Certificate::Validity validity;
+
+ // As this is a previously parsed certificate, we know the not_before
+ // and not after are valid, so these conversions can not fail.
+ (void) GeneralizedTimeToPosixTime(
+ internals_->cert->tbs().validity_not_before, &validity.not_before);
+ (void) GeneralizedTimeToPosixTime(
+ internals_->cert->tbs().validity_not_after, &validity.not_after);
+ return validity;
+}
+
+bssl::Span<const uint8_t> Certificate::GetSerialNumber() const {
+ return internals_->cert->tbs().serial_number;
+}
+
+} // namespace boringssl
diff --git a/src/pki/certificate_policies.cc b/src/pki/certificate_policies.cc
index 3716a4b..198e348 100644
--- a/src/pki/certificate_policies.cc
+++ b/src/pki/certificate_policies.cc
@@ -6,13 +6,12 @@
#include "certificate_policies.h"
+#include <openssl/base.h>
#include "cert_error_params.h"
#include "cert_errors.h"
#include "input.h"
#include "parse_values.h"
#include "parser.h"
-#include "tag.h"
-#include <openssl/base.h>
namespace bssl {
@@ -41,9 +40,9 @@ DEFINE_CERT_ERROR_ID(kPolicyQualifierInfoTrailingData,
// If a policy qualifier other than User Notice/CPS is present, parsing
// will fail if |restrict_to_known_qualifiers| was set to true.
bool ParsePolicyQualifiers(bool restrict_to_known_qualifiers,
- der::Parser* policy_qualifiers_sequence_parser,
- std::vector<PolicyQualifierInfo>* policy_qualifiers,
- CertErrors* errors) {
+ der::Parser *policy_qualifiers_sequence_parser,
+ std::vector<PolicyQualifierInfo> *policy_qualifiers,
+ CertErrors *errors) {
BSSL_CHECK(errors);
// If it is present, the policyQualifiers sequence should have at least 1
@@ -64,8 +63,9 @@ bool ParsePolicyQualifiers(bool restrict_to_known_qualifiers,
}
// policyQualifierId PolicyQualifierId,
der::Input qualifier_oid;
- if (!policy_information_parser.ReadTag(der::kOid, &qualifier_oid))
+ if (!policy_information_parser.ReadTag(CBS_ASN1_OBJECT, &qualifier_oid)) {
return false;
+ }
if (restrict_to_known_qualifiers &&
qualifier_oid != der::Input(kCpsPointerId) &&
qualifier_oid != der::Input(kUserNoticeId)) {
@@ -85,8 +85,9 @@ bool ParsePolicyQualifiers(bool restrict_to_known_qualifiers,
return false;
}
- if (policy_qualifiers)
+ if (policy_qualifiers) {
policy_qualifiers->push_back({qualifier_oid, qualifier_tlv});
+ }
}
return true;
}
@@ -128,21 +129,21 @@ bool ParsePolicyQualifiers(bool restrict_to_known_qualifiers,
// bmpString BMPString (SIZE (1..200)),
// utf8String UTF8String (SIZE (1..200)) }
bool ParseCertificatePoliciesExtensionImpl(
- const der::Input& extension_value,
- bool fail_parsing_unknown_qualifier_oids,
- std::vector<der::Input>* policy_oids,
- std::vector<PolicyInformation>* policy_informations,
- CertErrors* errors) {
+ der::Input extension_value, bool fail_parsing_unknown_qualifier_oids,
+ std::vector<der::Input> *policy_oids,
+ std::vector<PolicyInformation> *policy_informations, CertErrors *errors) {
BSSL_CHECK(policy_oids);
BSSL_CHECK(errors);
// certificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation
der::Parser extension_parser(extension_value);
der::Parser policies_sequence_parser;
- if (!extension_parser.ReadSequence(&policies_sequence_parser))
+ if (!extension_parser.ReadSequence(&policies_sequence_parser)) {
return false;
+ }
// Should not have trailing data after certificatePolicies sequence.
- if (extension_parser.HasMore())
+ if (extension_parser.HasMore()) {
return false;
+ }
// The certificatePolicies sequence should have at least 1 element.
if (!policies_sequence_parser.HasMore()) {
errors->AddError(kPoliciesEmptySequence);
@@ -150,30 +151,34 @@ bool ParseCertificatePoliciesExtensionImpl(
}
policy_oids->clear();
- if (policy_informations)
+ if (policy_informations) {
policy_informations->clear();
+ }
while (policies_sequence_parser.HasMore()) {
// PolicyInformation ::= SEQUENCE {
der::Parser policy_information_parser;
- if (!policies_sequence_parser.ReadSequence(&policy_information_parser))
+ if (!policies_sequence_parser.ReadSequence(&policy_information_parser)) {
return false;
+ }
// policyIdentifier CertPolicyId,
der::Input policy_oid;
- if (!policy_information_parser.ReadTag(der::kOid, &policy_oid))
+ if (!policy_information_parser.ReadTag(CBS_ASN1_OBJECT, &policy_oid)) {
return false;
+ }
policy_oids->push_back(policy_oid);
- std::vector<PolicyQualifierInfo>* policy_qualifiers = nullptr;
+ std::vector<PolicyQualifierInfo> *policy_qualifiers = nullptr;
if (policy_informations) {
policy_informations->emplace_back();
policy_informations->back().policy_oid = policy_oid;
policy_qualifiers = &policy_informations->back().policy_qualifiers;
}
- if (!policy_information_parser.HasMore())
+ if (!policy_information_parser.HasMore()) {
continue;
+ }
// policyQualifiers SEQUENCE SIZE (1..MAX) OF
// PolicyQualifierInfo OPTIONAL }
@@ -218,12 +223,12 @@ bool ParseCertificatePoliciesExtensionImpl(
PolicyInformation::PolicyInformation() = default;
PolicyInformation::~PolicyInformation() = default;
-PolicyInformation::PolicyInformation(const PolicyInformation&) = default;
-PolicyInformation::PolicyInformation(PolicyInformation&&) = default;
+PolicyInformation::PolicyInformation(const PolicyInformation &) = default;
+PolicyInformation::PolicyInformation(PolicyInformation &&) = default;
-bool ParseCertificatePoliciesExtension(const der::Input& extension_value,
- std::vector<PolicyInformation>* policies,
- CertErrors* errors) {
+bool ParseCertificatePoliciesExtension(der::Input extension_value,
+ std::vector<PolicyInformation> *policies,
+ CertErrors *errors) {
std::vector<der::Input> unused_policy_oids;
return ParseCertificatePoliciesExtensionImpl(
extension_value, /*fail_parsing_unknown_qualifier_oids=*/false,
@@ -231,10 +236,8 @@ bool ParseCertificatePoliciesExtension(const der::Input& extension_value,
}
bool ParseCertificatePoliciesExtensionOids(
- const der::Input& extension_value,
- bool fail_parsing_unknown_qualifier_oids,
- std::vector<der::Input>* policy_oids,
- CertErrors* errors) {
+ der::Input extension_value, bool fail_parsing_unknown_qualifier_oids,
+ std::vector<der::Input> *policy_oids, CertErrors *errors) {
return ParseCertificatePoliciesExtensionImpl(
extension_value, fail_parsing_unknown_qualifier_oids, policy_oids,
nullptr, errors);
@@ -247,14 +250,15 @@ bool ParseCertificatePoliciesExtensionOids(
// inhibitPolicyMapping [1] SkipCerts OPTIONAL }
//
// SkipCerts ::= INTEGER (0..MAX)
-bool ParsePolicyConstraints(const der::Input& policy_constraints_tlv,
- ParsedPolicyConstraints* out) {
+bool ParsePolicyConstraints(der::Input policy_constraints_tlv,
+ ParsedPolicyConstraints *out) {
der::Parser parser(policy_constraints_tlv);
// PolicyConstraints ::= SEQUENCE {
der::Parser sequence_parser;
- if (!parser.ReadSequence(&sequence_parser))
+ if (!parser.ReadSequence(&sequence_parser)) {
return false;
+ }
// RFC 5280 prohibits CAs from issuing PolicyConstraints as an empty sequence:
//
@@ -263,11 +267,12 @@ bool ParsePolicyConstraints(const der::Input& policy_constraints_tlv,
// or the requireExplicitPolicy field MUST be present. The behavior of
// clients that encounter an empty policy constraints field is not
// addressed in this profile.
- if (!sequence_parser.HasMore())
+ if (!sequence_parser.HasMore()) {
return false;
+ }
std::optional<der::Input> require_value;
- if (!sequence_parser.ReadOptionalTag(der::ContextSpecificPrimitive(0),
+ if (!sequence_parser.ReadOptionalTag(CBS_ASN1_CONTEXT_SPECIFIC | 0,
&require_value)) {
return false;
}
@@ -283,7 +288,7 @@ bool ParsePolicyConstraints(const der::Input& policy_constraints_tlv,
}
std::optional<der::Input> inhibit_value;
- if (!sequence_parser.ReadOptionalTag(der::ContextSpecificPrimitive(1),
+ if (!sequence_parser.ReadOptionalTag(CBS_ASN1_CONTEXT_SPECIFIC | 1,
&inhibit_value)) {
return false;
}
@@ -299,8 +304,9 @@ bool ParsePolicyConstraints(const der::Input& policy_constraints_tlv,
}
// There should be no remaining data.
- if (sequence_parser.HasMore() || parser.HasMore())
+ if (sequence_parser.HasMore() || parser.HasMore()) {
return false;
+ }
return true;
}
@@ -311,7 +317,7 @@ bool ParsePolicyConstraints(const der::Input& policy_constraints_tlv,
//
// SkipCerts ::= INTEGER (0..MAX)
std::optional<uint8_t> ParseInhibitAnyPolicy(
- const der::Input& inhibit_any_policy_tlv) {
+ der::Input inhibit_any_policy_tlv) {
der::Parser parser(inhibit_any_policy_tlv);
std::optional<uint8_t> num_certs = std::make_optional<uint8_t>();
@@ -333,44 +339,53 @@ std::optional<uint8_t> ParseInhibitAnyPolicy(
// PolicyMappings ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE {
// issuerDomainPolicy CertPolicyId,
// subjectDomainPolicy CertPolicyId }
-bool ParsePolicyMappings(const der::Input& policy_mappings_tlv,
- std::vector<ParsedPolicyMapping>* mappings) {
+bool ParsePolicyMappings(der::Input policy_mappings_tlv,
+ std::vector<ParsedPolicyMapping> *mappings) {
mappings->clear();
der::Parser parser(policy_mappings_tlv);
// PolicyMappings ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE {
der::Parser sequence_parser;
- if (!parser.ReadSequence(&sequence_parser))
+ if (!parser.ReadSequence(&sequence_parser)) {
return false;
+ }
// Must be at least 1 mapping.
- if (!sequence_parser.HasMore())
+ if (!sequence_parser.HasMore()) {
return false;
+ }
while (sequence_parser.HasMore()) {
der::Parser mapping_parser;
- if (!sequence_parser.ReadSequence(&mapping_parser))
+ if (!sequence_parser.ReadSequence(&mapping_parser)) {
return false;
+ }
ParsedPolicyMapping mapping;
- if (!mapping_parser.ReadTag(der::kOid, &mapping.issuer_domain_policy))
+ if (!mapping_parser.ReadTag(CBS_ASN1_OBJECT,
+ &mapping.issuer_domain_policy)) {
return false;
- if (!mapping_parser.ReadTag(der::kOid, &mapping.subject_domain_policy))
+ }
+ if (!mapping_parser.ReadTag(CBS_ASN1_OBJECT,
+ &mapping.subject_domain_policy)) {
return false;
+ }
// There shouldn't be extra unconsumed data.
- if (mapping_parser.HasMore())
+ if (mapping_parser.HasMore()) {
return false;
+ }
mappings->push_back(mapping);
}
// There shouldn't be extra unconsumed data.
- if (parser.HasMore())
+ if (parser.HasMore()) {
return false;
+ }
return true;
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/certificate_policies.h b/src/pki/certificate_policies.h
index 73f39b7..ccba1e9 100644
--- a/src/pki/certificate_policies.h
+++ b/src/pki/certificate_policies.h
@@ -5,14 +5,12 @@
#ifndef BSSL_PKI_CERTIFICATE_POLICIES_H_
#define BSSL_PKI_CERTIFICATE_POLICIES_H_
-#include "fillins/openssl_util.h"
#include <stdint.h>
-
#include <vector>
-#include "input.h"
#include <optional>
+#include "input.h"
namespace bssl {
@@ -59,8 +57,8 @@ struct PolicyQualifierInfo {
struct OPENSSL_EXPORT PolicyInformation {
PolicyInformation();
~PolicyInformation();
- PolicyInformation(const PolicyInformation&);
- PolicyInformation(PolicyInformation&&);
+ PolicyInformation(const PolicyInformation &);
+ PolicyInformation(PolicyInformation &&);
der::Input policy_oid;
std::vector<PolicyQualifierInfo> policy_qualifiers;
@@ -75,9 +73,8 @@ struct OPENSSL_EXPORT PolicyInformation {
// The values in |policies| are only valid as long as |extension_value| is (as
// it references data).
OPENSSL_EXPORT bool ParseCertificatePoliciesExtension(
- const der::Input& extension_value,
- std::vector<PolicyInformation>* policies,
- CertErrors* errors);
+ der::Input extension_value, std::vector<PolicyInformation> *policies,
+ CertErrors *errors);
// Parses a certificatePolicies extension and stores the policy OIDs in
// |*policy_oids|, in sorted order.
@@ -97,10 +94,8 @@ OPENSSL_EXPORT bool ParseCertificatePoliciesExtension(
// The values in |policy_oids| are only valid as long as |extension_value| is
// (as it references data).
OPENSSL_EXPORT bool ParseCertificatePoliciesExtensionOids(
- const der::Input& extension_value,
- bool fail_parsing_unknown_qualifier_oids,
- std::vector<der::Input>* policy_oids,
- CertErrors* errors);
+ der::Input extension_value, bool fail_parsing_unknown_qualifier_oids,
+ std::vector<der::Input> *policy_oids, CertErrors *errors);
struct ParsedPolicyConstraints {
std::optional<uint8_t> require_explicit_policy;
@@ -111,13 +106,12 @@ struct ParsedPolicyConstraints {
// Parses a PolicyConstraints SEQUENCE as defined by RFC 5280. Returns true on
// success, and sets |out|.
[[nodiscard]] OPENSSL_EXPORT bool ParsePolicyConstraints(
- const der::Input& policy_constraints_tlv,
- ParsedPolicyConstraints* out);
+ der::Input policy_constraints_tlv, ParsedPolicyConstraints *out);
// Parses an InhibitAnyPolicy as defined by RFC 5280. Returns num certs on
// success, or empty if parser fails.
[[nodiscard]] OPENSSL_EXPORT std::optional<uint8_t> ParseInhibitAnyPolicy(
- const der::Input& inhibit_any_policy_tlv);
+ der::Input inhibit_any_policy_tlv);
struct ParsedPolicyMapping {
der::Input issuer_domain_policy;
@@ -127,9 +121,8 @@ struct ParsedPolicyMapping {
// Parses a PolicyMappings SEQUENCE as defined by RFC 5280. Returns true on
// success, and sets |mappings|.
[[nodiscard]] OPENSSL_EXPORT bool ParsePolicyMappings(
- const der::Input& policy_mappings_tlv,
- std::vector<ParsedPolicyMapping>* mappings);
+ der::Input policy_mappings_tlv, std::vector<ParsedPolicyMapping> *mappings);
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_CERTIFICATE_POLICIES_H_
diff --git a/src/pki/certificate_policies_unittest.cc b/src/pki/certificate_policies_unittest.cc
index fcf10b8..9458659 100644
--- a/src/pki/certificate_policies_unittest.cc
+++ b/src/pki/certificate_policies_unittest.cc
@@ -4,16 +4,16 @@
#include "certificate_policies.h"
-#include "test_helpers.h"
+#include <gtest/gtest.h>
#include "input.h"
#include "parser.h"
-#include <gtest/gtest.h>
+#include "test_helpers.h"
namespace bssl {
namespace {
-::testing::AssertionResult LoadTestData(const std::string& name,
- std::string* result) {
+::testing::AssertionResult LoadTestData(const std::string &name,
+ std::string *result) {
std::string path = "testdata/certificate_policies_unittest/" + name;
const PemBlockMapping mappings[] = {
@@ -34,8 +34,7 @@ class ParseCertificatePoliciesExtensionOidsTest
// Run the tests with all possible values for
// |fail_parsing_unknown_qualifier_oids|.
-INSTANTIATE_TEST_SUITE_P(All,
- ParseCertificatePoliciesExtensionOidsTest,
+INSTANTIATE_TEST_SUITE_P(All, ParseCertificatePoliciesExtensionOidsTest,
testing::Bool());
TEST_P(ParseCertificatePoliciesExtensionOidsTest, InvalidEmpty) {
@@ -237,11 +236,11 @@ TEST(ParseCertificatePoliciesExtensionTest, OnePolicyWithCustomQualifier) {
EXPECT_TRUE(
ParseCertificatePoliciesExtension(der::Input(der), &policies, &errors));
ASSERT_EQ(1U, policies.size());
- PolicyInformation& policy = policies[0];
+ PolicyInformation &policy = policies[0];
EXPECT_EQ(der::Input(policy_1_2_3_der), policy.policy_oid);
ASSERT_EQ(1U, policy.policy_qualifiers.size());
- PolicyQualifierInfo& qualifier = policy.policy_qualifiers[0];
+ PolicyQualifierInfo &qualifier = policy.policy_qualifiers[0];
// 1.2.3.4
const uint8_t kExpectedQualifierOid[] = {0x2a, 0x03, 0x04};
EXPECT_EQ(der::Input(kExpectedQualifierOid), qualifier.qualifier_oid);
@@ -259,12 +258,12 @@ TEST(ParseCertificatePoliciesExtensionTest, TwoPolicies) {
ParseCertificatePoliciesExtension(der::Input(der), &policies, &errors));
ASSERT_EQ(2U, policies.size());
{
- PolicyInformation& policy = policies[0];
+ PolicyInformation &policy = policies[0];
EXPECT_EQ(der::Input(policy_1_2_3_der), policy.policy_oid);
EXPECT_EQ(0U, policy.policy_qualifiers.size());
}
{
- PolicyInformation& policy = policies[1];
+ PolicyInformation &policy = policies[1];
EXPECT_EQ(der::Input(policy_1_2_4_der), policy.policy_oid);
EXPECT_EQ(0U, policy.policy_qualifiers.size());
}
@@ -279,10 +278,10 @@ TEST(ParseCertificatePoliciesExtensionTest, TwoPoliciesWithQualifiers) {
ParseCertificatePoliciesExtension(der::Input(der), &policies, &errors));
ASSERT_EQ(2U, policies.size());
{
- PolicyInformation& policy = policies[0];
+ PolicyInformation &policy = policies[0];
EXPECT_EQ(der::Input(policy_1_2_3_der), policy.policy_oid);
ASSERT_EQ(1U, policy.policy_qualifiers.size());
- PolicyQualifierInfo& qualifier = policy.policy_qualifiers[0];
+ PolicyQualifierInfo &qualifier = policy.policy_qualifiers[0];
EXPECT_EQ(der::Input(kCpsPointerId), qualifier.qualifier_oid);
// IA5String { "https://example.com/1_2_3" }
const uint8_t kExpectedQualifier[] = {
@@ -292,10 +291,10 @@ TEST(ParseCertificatePoliciesExtensionTest, TwoPoliciesWithQualifiers) {
EXPECT_EQ(der::Input(kExpectedQualifier), qualifier.qualifier);
}
{
- PolicyInformation& policy = policies[1];
+ PolicyInformation &policy = policies[1];
EXPECT_EQ(der::Input(policy_1_2_4_der), policy.policy_oid);
ASSERT_EQ(1U, policy.policy_qualifiers.size());
- PolicyQualifierInfo& qualifier = policy.policy_qualifiers[0];
+ PolicyQualifierInfo &qualifier = policy.policy_qualifiers[0];
EXPECT_EQ(der::Input(kCpsPointerId), qualifier.qualifier_oid);
// IA5String { "http://example.com/1_2_4" }
const uint8_t kExpectedQualifier[] = {
@@ -310,4 +309,4 @@ TEST(ParseCertificatePoliciesExtensionTest, TwoPoliciesWithQualifiers) {
// parsed_certificate_unittest.cc
} // namespace
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/certificate_unittest.cc b/src/pki/certificate_unittest.cc
new file mode 100644
index 0000000..57a51fa
--- /dev/null
+++ b/src/pki/certificate_unittest.cc
@@ -0,0 +1,76 @@
+/* Copyright (c) 2023, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+#include <optional>
+#include <string>
+#include <string_view>
+
+#include <openssl/pki/certificate.h>
+#include <gmock/gmock.h>
+
+#include "string_util.h"
+#include "test_helpers.h"
+
+TEST(CertificateTest, FromPEM) {
+ std::string diagnostic;
+ std::unique_ptr<bssl::Certificate> cert(
+ bssl::Certificate::FromPEM("nonsense", &diagnostic));
+ EXPECT_FALSE(cert);
+
+ cert = bssl::Certificate::FromPEM(bssl::ReadTestFileToString(
+ "testdata/verify_unittest/self-issued.pem"), &diagnostic);
+ EXPECT_TRUE(cert);
+}
+
+TEST(CertificateTest, IsSelfIssued) {
+ std::string diagnostic;
+ const std::string leaf =
+ bssl::ReadTestFileToString("testdata/verify_unittest/google-leaf.der");
+ std::unique_ptr<bssl::Certificate> leaf_cert(
+ bssl::Certificate::FromDER(bssl::StringAsBytes(leaf), &diagnostic));
+ EXPECT_TRUE(leaf_cert);
+ EXPECT_FALSE(leaf_cert->IsSelfIssued());
+
+ const std::string self_issued =
+ bssl::ReadTestFileToString("testdata/verify_unittest/self-issued.pem");
+ std::unique_ptr<bssl::Certificate> self_issued_cert(
+ bssl::Certificate::FromPEM(self_issued, &diagnostic));
+ EXPECT_TRUE(self_issued_cert);
+ EXPECT_TRUE(self_issued_cert->IsSelfIssued());
+}
+
+TEST(CertificateTest, Validity) {
+ std::string diagnostic;
+ const std::string leaf =
+ bssl::ReadTestFileToString("testdata/verify_unittest/google-leaf.der");
+ std::unique_ptr<bssl::Certificate> cert(
+ bssl::Certificate::FromDER(bssl::StringAsBytes(leaf), &diagnostic));
+ EXPECT_TRUE(cert);
+
+ bssl::Certificate::Validity validity = cert->GetValidity();
+ EXPECT_EQ(validity.not_before, 1498644466);
+ EXPECT_EQ(validity.not_after, 1505899620);
+}
+
+TEST(CertificateTest, SerialNumber) {
+ std::string diagnostic;
+ const std::string leaf =
+ bssl::ReadTestFileToString("testdata/verify_unittest/google-leaf.der");
+ std::unique_ptr<bssl::Certificate> cert(
+ bssl::Certificate::FromDER(bssl::StringAsBytes(leaf), &diagnostic));
+ EXPECT_TRUE(cert);
+
+ EXPECT_EQ(bssl::string_util::HexEncode(cert->GetSerialNumber()),
+ "0118F044A8F31892");
+}
diff --git a/src/pki/common_cert_errors.cc b/src/pki/common_cert_errors.cc
index b13bc94..00f5743 100644
--- a/src/pki/common_cert_errors.cc
+++ b/src/pki/common_cert_errors.cc
@@ -39,9 +39,6 @@ DEFINE_CERT_ERROR_ID(kSignatureAlgorithmsDifferentEncoding,
"than TBSCertificate.signature");
DEFINE_CERT_ERROR_ID(kEkuLacksServerAuth,
"The extended key usage does not include server auth");
-DEFINE_CERT_ERROR_ID(kEkuLacksServerAuthButHasGatedCrypto,
- "The extended key usage does not include server auth but "
- "instead includes Netscape Server Gated Crypto");
DEFINE_CERT_ERROR_ID(kEkuLacksServerAuthButHasAnyEKU,
"The extended key usage does not include server auth but "
"instead includes anyExtendeKeyUsage");
diff --git a/src/pki/common_cert_errors.h b/src/pki/common_cert_errors.h
index 5e3f1b9..d2b37ba 100644
--- a/src/pki/common_cert_errors.h
+++ b/src/pki/common_cert_errors.h
@@ -5,7 +5,7 @@
#ifndef BSSL_PKI_COMMON_CERT_ERRORS_H_
#define BSSL_PKI_COMMON_CERT_ERRORS_H_
-#include "fillins/openssl_util.h"
+#include <openssl/base.h>
#include "cert_errors.h"
@@ -108,10 +108,6 @@ OPENSSL_EXPORT extern const CertErrorId kUnacceptableSignatureAlgorithm;
// What constitutes as "acceptable" is determined by the verification delegate.
OPENSSL_EXPORT extern const CertErrorId kUnacceptablePublicKey;
-// The certificate's EKU is missing serverAuth. However Netscape Server Gated
-// Crypto is present instead.
-OPENSSL_EXPORT extern const CertErrorId kEkuLacksServerAuthButHasGatedCrypto;
-
// The certificate's EKU is missing serverAuth. However EKU ANY is present
// instead.
OPENSSL_EXPORT extern const CertErrorId kEkuLacksServerAuthButHasAnyEKU;
diff --git a/src/pki/crl.cc b/src/pki/crl.cc
index dbd1ca1..63e1cc6 100644
--- a/src/pki/crl.cc
+++ b/src/pki/crl.cc
@@ -6,17 +6,17 @@
#include <iterator>
#include <openssl/base.h>
+#include <openssl/bytestring.h>
#include "cert_errors.h"
#include "crl.h"
+#include "input.h"
+#include "parse_values.h"
+#include "parser.h"
#include "revocation_util.h"
#include "signature_algorithm.h"
#include "verify_name_match.h"
#include "verify_signed_data.h"
-#include "input.h"
-#include "parse_values.h"
-#include "parser.h"
-#include "tag.h"
namespace bssl {
@@ -26,12 +26,12 @@ namespace {
// In dotted notation: 2.5.29.28
inline constexpr uint8_t kIssuingDistributionPointOid[] = {0x55, 0x1d, 0x1c};
-[[nodiscard]] bool NormalizeNameTLV(const der::Input& name_tlv,
- std::string* out_normalized_name) {
+[[nodiscard]] bool NormalizeNameTLV(der::Input name_tlv,
+ std::string *out_normalized_name) {
der::Parser parser(name_tlv);
der::Input name_rdn;
bssl::CertErrors unused_errors;
- return parser.ReadTag(der::kSequence, &name_rdn) &&
+ return parser.ReadTag(CBS_ASN1_SEQUENCE, &name_rdn) &&
NormalizeName(name_rdn, out_normalized_name, &unused_errors) &&
!parser.HasMore();
}
@@ -48,64 +48,74 @@ bool ContainsExactMatchingName(std::vector<std::string_view> a,
} // namespace
-bool ParseCrlCertificateList(const der::Input& crl_tlv,
- der::Input* out_tbs_cert_list_tlv,
- der::Input* out_signature_algorithm_tlv,
- der::BitString* out_signature_value) {
+bool ParseCrlCertificateList(der::Input crl_tlv,
+ der::Input *out_tbs_cert_list_tlv,
+ der::Input *out_signature_algorithm_tlv,
+ der::BitString *out_signature_value) {
der::Parser parser(crl_tlv);
// CertificateList ::= SEQUENCE {
der::Parser certificate_list_parser;
- if (!parser.ReadSequence(&certificate_list_parser))
+ if (!parser.ReadSequence(&certificate_list_parser)) {
return false;
+ }
// tbsCertList TBSCertList
- if (!certificate_list_parser.ReadRawTLV(out_tbs_cert_list_tlv))
+ if (!certificate_list_parser.ReadRawTLV(out_tbs_cert_list_tlv)) {
return false;
+ }
// signatureAlgorithm AlgorithmIdentifier,
- if (!certificate_list_parser.ReadRawTLV(out_signature_algorithm_tlv))
+ if (!certificate_list_parser.ReadRawTLV(out_signature_algorithm_tlv)) {
return false;
+ }
// signatureValue BIT STRING }
std::optional<der::BitString> signature_value =
certificate_list_parser.ReadBitString();
- if (!signature_value)
+ if (!signature_value) {
return false;
+ }
*out_signature_value = signature_value.value();
// There isn't an extension point at the end of CertificateList.
- if (certificate_list_parser.HasMore())
+ if (certificate_list_parser.HasMore()) {
return false;
+ }
// By definition the input was a single CertificateList, so there shouldn't be
// unconsumed data.
- if (parser.HasMore())
+ if (parser.HasMore()) {
return false;
+ }
return true;
}
-bool ParseCrlTbsCertList(const der::Input& tbs_tlv, ParsedCrlTbsCertList* out) {
+bool ParseCrlTbsCertList(der::Input tbs_tlv, ParsedCrlTbsCertList *out) {
der::Parser parser(tbs_tlv);
// TBSCertList ::= SEQUENCE {
der::Parser tbs_parser;
- if (!parser.ReadSequence(&tbs_parser))
+ if (!parser.ReadSequence(&tbs_parser)) {
return false;
+ }
// version Version OPTIONAL,
// -- if present, MUST be v2
std::optional<der::Input> version_der;
- if (!tbs_parser.ReadOptionalTag(der::kInteger, &version_der))
+ if (!tbs_parser.ReadOptionalTag(CBS_ASN1_INTEGER, &version_der)) {
return false;
+ }
if (version_der.has_value()) {
uint64_t version64;
- if (!der::ParseUint64(*version_der, &version64))
+ if (!der::ParseUint64(*version_der, &version64)) {
return false;
+ }
// If version is present, it MUST be v2(1).
- if (version64 != 1)
+ if (version64 != 1) {
return false;
+ }
out->version = CrlVersion::V2;
} else {
// Uh, RFC 5280 doesn't actually say it anywhere, but presumably if version
@@ -114,27 +124,31 @@ bool ParseCrlTbsCertList(const der::Input& tbs_tlv, ParsedCrlTbsCertList* out) {
}
// signature AlgorithmIdentifier,
- if (!tbs_parser.ReadRawTLV(&out->signature_algorithm_tlv))
+ if (!tbs_parser.ReadRawTLV(&out->signature_algorithm_tlv)) {
return false;
+ }
// issuer Name,
- if (!tbs_parser.ReadRawTLV(&out->issuer_tlv))
+ if (!tbs_parser.ReadRawTLV(&out->issuer_tlv)) {
return false;
+ }
// thisUpdate Time,
- if (!ReadUTCOrGeneralizedTime(&tbs_parser, &out->this_update))
+ if (!ReadUTCOrGeneralizedTime(&tbs_parser, &out->this_update)) {
return false;
+ }
// nextUpdate Time OPTIONAL,
- der::Tag maybe_next_update_tag;
+ CBS_ASN1_TAG maybe_next_update_tag;
der::Input unused_next_update_input;
if (tbs_parser.PeekTagAndValue(&maybe_next_update_tag,
&unused_next_update_input) &&
- (maybe_next_update_tag == der::kUtcTime ||
- maybe_next_update_tag == der::kGeneralizedTime)) {
+ (maybe_next_update_tag == CBS_ASN1_UTCTIME ||
+ maybe_next_update_tag == CBS_ASN1_GENERALIZEDTIME)) {
der::GeneralizedTime next_update_time;
- if (!ReadUTCOrGeneralizedTime(&tbs_parser, &next_update_time))
+ if (!ReadUTCOrGeneralizedTime(&tbs_parser, &next_update_time)) {
return false;
+ }
out->next_update = next_update_time;
} else {
out->next_update = std::nullopt;
@@ -142,13 +156,14 @@ bool ParseCrlTbsCertList(const der::Input& tbs_tlv, ParsedCrlTbsCertList* out) {
// revokedCertificates SEQUENCE OF SEQUENCE { ... } OPTIONAL,
der::Input unused_revoked_certificates;
- der::Tag maybe_revoked_certifigates_tag;
+ CBS_ASN1_TAG maybe_revoked_certifigates_tag;
if (tbs_parser.PeekTagAndValue(&maybe_revoked_certifigates_tag,
&unused_revoked_certificates) &&
- maybe_revoked_certifigates_tag == der::kSequence) {
+ maybe_revoked_certifigates_tag == CBS_ASN1_SEQUENCE) {
der::Input revoked_certificates_tlv;
- if (!tbs_parser.ReadRawTLV(&revoked_certificates_tlv))
+ if (!tbs_parser.ReadRawTLV(&revoked_certificates_tlv)) {
return false;
+ }
out->revoked_certificates_tlv = revoked_certificates_tlv;
} else {
out->revoked_certificates_tlv = std::nullopt;
@@ -156,13 +171,15 @@ bool ParseCrlTbsCertList(const der::Input& tbs_tlv, ParsedCrlTbsCertList* out) {
// crlExtensions [0] EXPLICIT Extensions OPTIONAL
// -- if present, version MUST be v2
- if (!tbs_parser.ReadOptionalTag(der::ContextSpecificConstructed(0),
- &out->crl_extensions_tlv)) {
+ if (!tbs_parser.ReadOptionalTag(
+ CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 0,
+ &out->crl_extensions_tlv)) {
return false;
}
if (out->crl_extensions_tlv.has_value()) {
- if (out->version != CrlVersion::V2)
+ if (out->version != CrlVersion::V2) {
return false;
+ }
}
if (tbs_parser.HasMore()) {
@@ -172,32 +189,35 @@ bool ParseCrlTbsCertList(const der::Input& tbs_tlv, ParsedCrlTbsCertList* out) {
// By definition the input was a single sequence, so there shouldn't be
// unconsumed data.
- if (parser.HasMore())
+ if (parser.HasMore()) {
return false;
+ }
return true;
}
bool ParseIssuingDistributionPoint(
- const der::Input& extension_value,
- std::unique_ptr<GeneralNames>* out_distribution_point_names,
- ContainedCertsType* out_only_contains_cert_type) {
+ der::Input extension_value,
+ std::unique_ptr<GeneralNames> *out_distribution_point_names,
+ ContainedCertsType *out_only_contains_cert_type) {
der::Parser idp_extension_value_parser(extension_value);
// IssuingDistributionPoint ::= SEQUENCE {
der::Parser idp_parser;
- if (!idp_extension_value_parser.ReadSequence(&idp_parser))
+ if (!idp_extension_value_parser.ReadSequence(&idp_parser)) {
return false;
+ }
// 5.2.5. Conforming CRLs issuers MUST NOT issue CRLs where the DER
// encoding of the issuing distribution point extension is an empty
// sequence.
- if (!idp_parser.HasMore())
+ if (!idp_parser.HasMore()) {
return false;
+ }
// distributionPoint [0] DistributionPointName OPTIONAL,
std::optional<der::Input> distribution_point;
if (!idp_parser.ReadOptionalTag(
- der::kTagContextSpecific | der::kTagConstructed | 0,
+ CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 0,
&distribution_point)) {
return false;
}
@@ -209,7 +229,7 @@ bool ParseIssuingDistributionPoint(
// nameRelativeToCRLIssuer [1] RelativeDistinguishedName }
std::optional<der::Input> der_full_name;
if (!dp_name_parser.ReadOptionalTag(
- der::kTagContextSpecific | der::kTagConstructed | 0,
+ CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 0,
&der_full_name)) {
return false;
}
@@ -220,8 +240,9 @@ bool ParseIssuingDistributionPoint(
CertErrors errors;
*out_distribution_point_names =
GeneralNames::CreateFromValue(*der_full_name, &errors);
- if (!*out_distribution_point_names)
+ if (!*out_distribution_point_names) {
return false;
+ }
if (dp_name_parser.HasMore()) {
// CHOICE represents a single value.
@@ -233,31 +254,35 @@ bool ParseIssuingDistributionPoint(
// onlyContainsUserCerts [1] BOOLEAN DEFAULT FALSE,
std::optional<der::Input> only_contains_user_certs;
- if (!idp_parser.ReadOptionalTag(der::kTagContextSpecific | 1,
+ if (!idp_parser.ReadOptionalTag(CBS_ASN1_CONTEXT_SPECIFIC | 1,
&only_contains_user_certs)) {
return false;
}
if (only_contains_user_certs.has_value()) {
bool bool_value;
- if (!der::ParseBool(*only_contains_user_certs, &bool_value))
+ if (!der::ParseBool(*only_contains_user_certs, &bool_value)) {
return false;
- if (!bool_value)
+ }
+ if (!bool_value) {
return false; // DER-encoding requires DEFAULT values be omitted.
+ }
*out_only_contains_cert_type = ContainedCertsType::USER_CERTS;
}
// onlyContainsCACerts [2] BOOLEAN DEFAULT FALSE,
std::optional<der::Input> only_contains_ca_certs;
- if (!idp_parser.ReadOptionalTag(der::kTagContextSpecific | 2,
+ if (!idp_parser.ReadOptionalTag(CBS_ASN1_CONTEXT_SPECIFIC | 2,
&only_contains_ca_certs)) {
return false;
}
if (only_contains_ca_certs.has_value()) {
bool bool_value;
- if (!der::ParseBool(*only_contains_ca_certs, &bool_value))
+ if (!der::ParseBool(*only_contains_ca_certs, &bool_value)) {
return false;
- if (!bool_value)
+ }
+ if (!bool_value) {
return false; // DER-encoding requires DEFAULT values be omitted.
+ }
if (*out_only_contains_cert_type != ContainedCertsType::ANY_CERTS) {
// 5.2.5. at most one of onlyContainsUserCerts, onlyContainsCACerts,
// and onlyContainsAttributeCerts may be set to TRUE.
@@ -271,16 +296,16 @@ bool ParseIssuingDistributionPoint(
// onlyContainsAttributeCerts [5] BOOLEAN DEFAULT FALSE }
// onlySomeReasons, indirectCRL, and onlyContainsAttributeCerts are not
// supported, fail parsing if they are present.
- if (idp_parser.HasMore())
+ if (idp_parser.HasMore()) {
return false;
+ }
return true;
}
CRLRevocationStatus GetCRLStatusForCert(
- const der::Input& cert_serial,
- CrlVersion crl_version,
- const std::optional<der::Input>& revoked_certificates_tlv) {
+ der::Input cert_serial, CrlVersion crl_version,
+ const std::optional<der::Input> &revoked_certificates_tlv) {
if (!revoked_certificates_tlv.has_value()) {
// RFC 5280 Section 5.1.2.6: "When there are no revoked certificates, the
// revoked certificates list MUST be absent."
@@ -292,62 +317,74 @@ CRLRevocationStatus GetCRLStatusForCert(
// revokedCertificates SEQUENCE OF SEQUENCE {
der::Parser revoked_certificates_parser;
- if (!parser.ReadSequence(&revoked_certificates_parser))
+ if (!parser.ReadSequence(&revoked_certificates_parser)) {
return CRLRevocationStatus::UNKNOWN;
+ }
// RFC 5280 Section 5.1.2.6: "When there are no revoked certificates, the
// revoked certificates list MUST be absent."
- if (!revoked_certificates_parser.HasMore())
+ if (!revoked_certificates_parser.HasMore()) {
return CRLRevocationStatus::UNKNOWN;
+ }
// By definition the input was a single Extensions sequence, so there
// shouldn't be unconsumed data.
- if (parser.HasMore())
+ if (parser.HasMore()) {
return CRLRevocationStatus::UNKNOWN;
+ }
bool found_matching_serial = false;
while (revoked_certificates_parser.HasMore()) {
// revokedCertificates SEQUENCE OF SEQUENCE {
der::Parser crl_entry_parser;
- if (!revoked_certificates_parser.ReadSequence(&crl_entry_parser))
+ if (!revoked_certificates_parser.ReadSequence(&crl_entry_parser)) {
return CRLRevocationStatus::UNKNOWN;
+ }
der::Input revoked_cert_serial_number;
// userCertificate CertificateSerialNumber,
- if (!crl_entry_parser.ReadTag(der::kInteger, &revoked_cert_serial_number))
+ if (!crl_entry_parser.ReadTag(CBS_ASN1_INTEGER,
+ &revoked_cert_serial_number)) {
return CRLRevocationStatus::UNKNOWN;
+ }
// revocationDate Time,
der::GeneralizedTime unused_revocation_date;
- if (!ReadUTCOrGeneralizedTime(&crl_entry_parser, &unused_revocation_date))
+ if (!ReadUTCOrGeneralizedTime(&crl_entry_parser, &unused_revocation_date)) {
return CRLRevocationStatus::UNKNOWN;
+ }
// crlEntryExtensions Extensions OPTIONAL
if (crl_entry_parser.HasMore()) {
// -- if present, version MUST be v2
- if (crl_version != CrlVersion::V2)
+ if (crl_version != CrlVersion::V2) {
return CRLRevocationStatus::UNKNOWN;
+ }
der::Input crl_entry_extensions_tlv;
- if (!crl_entry_parser.ReadRawTLV(&crl_entry_extensions_tlv))
+ if (!crl_entry_parser.ReadRawTLV(&crl_entry_extensions_tlv)) {
return CRLRevocationStatus::UNKNOWN;
+ }
std::map<der::Input, ParsedExtension> extensions;
- if (!ParseExtensions(crl_entry_extensions_tlv, &extensions))
+ if (!ParseExtensions(crl_entry_extensions_tlv, &extensions)) {
return CRLRevocationStatus::UNKNOWN;
+ }
// RFC 5280 Section 5.3: "If a CRL contains a critical CRL entry
// extension that the application cannot process, then the application
// MUST NOT use that CRL to determine the status of any certificates."
- for (const auto& ext : extensions) {
- if (ext.second.critical)
+ for (const auto &ext : extensions) {
+ if (ext.second.critical) {
return CRLRevocationStatus::UNKNOWN;
+ }
}
}
- if (crl_entry_parser.HasMore())
+ if (crl_entry_parser.HasMore()) {
return CRLRevocationStatus::UNKNOWN;
+ }
if (revoked_cert_serial_number == cert_serial) {
// Cert is revoked, but can't return yet since there might be critical
@@ -356,8 +393,9 @@ CRLRevocationStatus GetCRLStatusForCert(
}
}
- if (found_matching_serial)
+ if (found_matching_serial) {
return CRLRevocationStatus::REVOKED;
+ }
// |cert| is not present in the revokedCertificates list.
return CRLRevocationStatus::GOOD;
@@ -367,9 +405,9 @@ ParsedCrlTbsCertList::ParsedCrlTbsCertList() = default;
ParsedCrlTbsCertList::~ParsedCrlTbsCertList() = default;
CRLRevocationStatus CheckCRL(std::string_view raw_crl,
- const ParsedCertificateList& valid_chain,
+ const ParsedCertificateList &valid_chain,
size_t target_cert_index,
- const ParsedDistributionPoint& cert_dp,
+ const ParsedDistributionPoint &cert_dp,
int64_t verify_time_epoch_seconds,
std::optional<int64_t> max_age_seconds) {
BSSL_CHECK(target_cert_index < valid_chain.size());
@@ -385,7 +423,7 @@ CRLRevocationStatus CheckCRL(std::string_view raw_crl,
return CRLRevocationStatus::UNKNOWN;
}
- const ParsedCertificate* target_cert = valid_chain[target_cert_index].get();
+ const ParsedCertificate *target_cert = valid_chain[target_cert_index].get();
// 6.3.3 (a) Update the local CRL cache by obtaining a complete CRL, a
// delta CRL, or both, as required.
@@ -402,8 +440,9 @@ CRLRevocationStatus CheckCRL(std::string_view raw_crl,
}
ParsedCrlTbsCertList tbs_cert_list;
- if (!ParseCrlTbsCertList(tbs_cert_list_tlv, &tbs_cert_list))
+ if (!ParseCrlTbsCertList(tbs_cert_list_tlv, &tbs_cert_list)) {
return CRLRevocationStatus::UNKNOWN;
+ }
// 5.1.1.2 signatureAlgorithm
//
@@ -467,16 +506,18 @@ CRLRevocationStatus CheckCRL(std::string_view raw_crl,
// TODO(https://crbug.com/749276): could do exact comparison first and only
// fall back to normalizing if that fails.
std::string normalized_crl_issuer;
- if (!NormalizeNameTLV(tbs_cert_list.issuer_tlv, &normalized_crl_issuer))
+ if (!NormalizeNameTLV(tbs_cert_list.issuer_tlv, &normalized_crl_issuer)) {
return CRLRevocationStatus::UNKNOWN;
+ }
if (der::Input(normalized_crl_issuer) != target_cert->normalized_issuer()) {
return CRLRevocationStatus::UNKNOWN;
}
if (tbs_cert_list.crl_extensions_tlv.has_value()) {
std::map<der::Input, ParsedExtension> extensions;
- if (!ParseExtensions(*tbs_cert_list.crl_extensions_tlv, &extensions))
+ if (!ParseExtensions(*tbs_cert_list.crl_extensions_tlv, &extensions)) {
return CRLRevocationStatus::UNKNOWN;
+ }
// 6.3.3 (b) (2) If the complete CRL includes an issuing distribution point
// (IDP) CRL extension, check the following:
@@ -558,10 +599,11 @@ CRLRevocationStatus CheckCRL(std::string_view raw_crl,
}
}
- for (const auto& ext : extensions) {
+ for (const auto &ext : extensions) {
// Fail if any unhandled critical CRL extensions are present.
- if (ext.second.critical)
+ if (ext.second.critical) {
return CRLRevocationStatus::UNKNOWN;
+ }
}
}
@@ -578,7 +620,7 @@ CRLRevocationStatus CheckCRL(std::string_view raw_crl,
// PKITS 4.5.3 to pass when it seems like it would not be intended to (since
// issuingDistributionPoint CRL extension is not handled).
for (size_t i = target_cert_index + 1; i < valid_chain.size(); ++i) {
- const ParsedCertificate* issuer_cert = valid_chain[i].get();
+ const ParsedCertificate *issuer_cert = valid_chain[i].get();
// 6.3.3 (f) Obtain and validate the certification path for the issuer of
// the complete CRL. The trust anchor for the certification
@@ -628,4 +670,4 @@ CRLRevocationStatus CheckCRL(std::string_view raw_crl,
return CRLRevocationStatus::UNKNOWN;
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/crl.h b/src/pki/crl.h
index f58eeae..d527de9 100644
--- a/src/pki/crl.h
+++ b/src/pki/crl.h
@@ -5,13 +5,14 @@
#ifndef BSSL_PKI_CRL_H_
#define BSSL_PKI_CRL_H_
-#include "fillins/openssl_util.h"
+#include <optional>
+
+#include <openssl/base.h>
#include "general_names.h"
-#include "parsed_certificate.h"
#include "input.h"
#include "parse_values.h"
-#include <optional>
+#include "parsed_certificate.h"
namespace bssl {
@@ -42,10 +43,9 @@ enum class CRLRevocationStatus {
// signatureAlgorithm AlgorithmIdentifier,
// signatureValue BIT STRING }
[[nodiscard]] OPENSSL_EXPORT bool ParseCrlCertificateList(
- const der::Input& crl_tlv,
- der::Input* out_tbs_cert_list_tlv,
- der::Input* out_signature_algorithm_tlv,
- der::BitString* out_signature_value);
+ der::Input crl_tlv, der::Input *out_tbs_cert_list_tlv,
+ der::Input *out_signature_algorithm_tlv,
+ der::BitString *out_signature_value);
// Parses a DER-encoded "TBSCertList" as specified by RFC 5280 Section 5.1.
// Returns true on success and sets the results in |out|.
@@ -77,8 +77,7 @@ enum class CRLRevocationStatus {
// -- if present, version MUST be v2
// }
[[nodiscard]] OPENSSL_EXPORT bool ParseCrlTbsCertList(
- const der::Input& tbs_tlv,
- ParsedCrlTbsCertList* out);
+ der::Input tbs_tlv, ParsedCrlTbsCertList *out);
// Represents a CRL "Version" from RFC 5280. TBSCertList reuses the same
// Version definition from TBSCertificate, however only v1(not present) and
@@ -181,14 +180,13 @@ enum class ContainedCertsType {
// indirectCRL [4] BOOLEAN DEFAULT FALSE,
// onlyContainsAttributeCerts [5] BOOLEAN DEFAULT FALSE }
[[nodiscard]] OPENSSL_EXPORT bool ParseIssuingDistributionPoint(
- const der::Input& extension_value,
- std::unique_ptr<GeneralNames>* out_distribution_point_names,
- ContainedCertsType* out_only_contains_cert_type);
+ der::Input extension_value,
+ std::unique_ptr<GeneralNames> *out_distribution_point_names,
+ ContainedCertsType *out_only_contains_cert_type);
OPENSSL_EXPORT CRLRevocationStatus
-GetCRLStatusForCert(const der::Input& cert_serial,
- CrlVersion crl_version,
- const std::optional<der::Input>& revoked_certificates_tlv);
+GetCRLStatusForCert(der::Input cert_serial, CrlVersion crl_version,
+ const std::optional<der::Input> &revoked_certificates_tlv);
// Checks the revocation status of the certificate |cert| by using the
// DER-encoded |raw_crl|. |cert| must already have passed certificate path
@@ -212,14 +210,11 @@ GetCRLStatusForCert(const der::Input& cert_serial,
// implemented as time since the |thisUpdate| field in the CRL
// TBSCertList. Responses older than |max_age_seconds| will be
// considered invalid.
-[[nodiscard]] OPENSSL_EXPORT CRLRevocationStatus
-CheckCRL(std::string_view raw_crl,
- const ParsedCertificateList& valid_chain,
- size_t target_cert_index,
- const ParsedDistributionPoint& cert_dp,
- int64_t verify_time_epoch_seconds,
- std::optional<int64_t> max_age_seconds);
-
-} // namespace net
+[[nodiscard]] OPENSSL_EXPORT CRLRevocationStatus CheckCRL(
+ std::string_view raw_crl, const ParsedCertificateList &valid_chain,
+ size_t target_cert_index, const ParsedDistributionPoint &cert_dp,
+ int64_t verify_time_epoch_seconds, std::optional<int64_t> max_age_seconds);
+
+} // namespace bssl
#endif // BSSL_PKI_CRL_H_
diff --git a/src/pki/crl_unittest.cc b/src/pki/crl_unittest.cc
index a2479d4..b9be70f 100644
--- a/src/pki/crl_unittest.cc
+++ b/src/pki/crl_unittest.cc
@@ -6,12 +6,12 @@
#include <string_view>
+#include <gtest/gtest.h>
+#include <openssl/pool.h>
#include "cert_errors.h"
#include "parsed_certificate.h"
#include "string_util.h"
#include "test_helpers.h"
-#include <gtest/gtest.h>
-#include <openssl/pool.h>
namespace bssl {
@@ -27,12 +27,13 @@ std::shared_ptr<const ParsedCertificate> ParseCertificate(
std::string_view data) {
CertErrors errors;
return ParsedCertificate::Create(
- bssl::UniquePtr<CRYPTO_BUFFER>(CRYPTO_BUFFER_new(
- reinterpret_cast<const uint8_t*>(data.data()), data.size(), nullptr)),
+ bssl::UniquePtr<CRYPTO_BUFFER>(
+ CRYPTO_BUFFER_new(reinterpret_cast<const uint8_t *>(data.data()),
+ data.size(), nullptr)),
{}, &errors);
}
-class CheckCRLTest : public ::testing::TestWithParam<const char*> {};
+class CheckCRLTest : public ::testing::TestWithParam<const char *> {};
// Test prefix naming scheme:
// good = valid CRL, cert affirmatively not revoked
@@ -40,7 +41,7 @@ class CheckCRLTest : public ::testing::TestWithParam<const char*> {};
// bad = valid CRL, but cert status is unknown (cases like unhandled features,
// mismatching issuer or signature, etc)
// invalid = corrupt or violates some spec requirement
-constexpr char const* kTestParams[] = {
+constexpr char const *kTestParams[] = {
"good.pem",
"good_issuer_name_normalization.pem",
"good_issuer_no_keyusage.pem",
@@ -111,7 +112,7 @@ constexpr char const* kTestParams[] = {
struct PrintTestName {
std::string operator()(
- const testing::TestParamInfo<const char*>& info) const {
+ const testing::TestParamInfo<const char *> &info) const {
std::string_view name(info.param);
// Strip ".pem" from the end as GTest names cannot contain period.
name.remove_suffix(4);
@@ -119,9 +120,7 @@ struct PrintTestName {
}
};
-INSTANTIATE_TEST_SUITE_P(All,
- CheckCRLTest,
- ::testing::ValuesIn(kTestParams),
+INSTANTIATE_TEST_SUITE_P(All, CheckCRLTest, ::testing::ValuesIn(kTestParams),
PrintTestName());
TEST_P(CheckCRLTest, FromFile) {
@@ -162,7 +161,7 @@ TEST_P(CheckCRLTest, FromFile) {
// TODO(https://crbug.com/749276): This seems slightly hacky. Maybe the
// distribution point to use should be specified separately in the test PEM?
ParsedDistributionPoint fake_cert_dp;
- ParsedDistributionPoint* cert_dp = &fake_cert_dp;
+ ParsedDistributionPoint *cert_dp = &fake_cert_dp;
std::vector<ParsedDistributionPoint> distribution_points;
ParsedExtension crl_dp_extension;
if (cert->GetExtension(der::Input(kCrlDistributionPointsOid),
@@ -206,4 +205,4 @@ TEST_P(CheckCRLTest, FromFile) {
} // namespace
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/encode_values.cc b/src/pki/encode_values.cc
index ac20039..0054fa2 100644
--- a/src/pki/encode_values.cc
+++ b/src/pki/encode_values.cc
@@ -6,15 +6,16 @@
#include "parse_values.h"
-#include <openssl/time.h>
+#include <openssl/posix_time.h>
namespace bssl::der {
namespace {
bool WriteFourDigit(uint16_t value, uint8_t out[4]) {
- if (value >= 10000)
+ if (value >= 10000) {
return false;
+ }
out[3] = '0' + (value % 10);
value /= 10;
out[2] = '0' + (value % 10);
@@ -26,8 +27,9 @@ bool WriteFourDigit(uint16_t value, uint8_t out[4]) {
}
bool WriteTwoDigit(uint8_t value, uint8_t out[2]) {
- if (value >= 100)
+ if (value >= 100) {
return false;
+ }
out[0] = '0' + (value / 10);
out[1] = '0' + (value % 10);
return true;
@@ -36,7 +38,7 @@ bool WriteTwoDigit(uint8_t value, uint8_t out[2]) {
} // namespace
bool EncodePosixTimeAsGeneralizedTime(int64_t posix_time,
- GeneralizedTime* generalized_time) {
+ GeneralizedTime *generalized_time) {
struct tm tmp_tm;
if (!OPENSSL_posix_to_tm(posix_time, &tmp_tm)) {
return false;
@@ -51,8 +53,8 @@ bool EncodePosixTimeAsGeneralizedTime(int64_t posix_time,
return true;
}
-bool GeneralizedTimeToPosixTime(const der::GeneralizedTime& generalized,
- int64_t* result) {
+bool GeneralizedTimeToPosixTime(const der::GeneralizedTime &generalized,
+ int64_t *result) {
struct tm tmp_tm;
tmp_tm.tm_year = generalized.year - 1900;
tmp_tm.tm_mon = generalized.month - 1;
@@ -68,7 +70,7 @@ bool GeneralizedTimeToPosixTime(const der::GeneralizedTime& generalized,
return OPENSSL_tm_to_posix(&tmp_tm, result);
}
-bool EncodeGeneralizedTime(const GeneralizedTime& time,
+bool EncodeGeneralizedTime(const GeneralizedTime &time,
uint8_t out[kGeneralizedTimeLength]) {
if (!WriteFourDigit(time.year, out) || !WriteTwoDigit(time.month, out + 4) ||
!WriteTwoDigit(time.day, out + 6) ||
@@ -81,13 +83,15 @@ bool EncodeGeneralizedTime(const GeneralizedTime& time,
return true;
}
-bool EncodeUTCTime(const GeneralizedTime& time, uint8_t out[kUTCTimeLength]) {
- if (!time.InUTCTimeRange())
+bool EncodeUTCTime(const GeneralizedTime &time, uint8_t out[kUTCTimeLength]) {
+ if (!time.InUTCTimeRange()) {
return false;
+ }
uint16_t year = time.year - 1900;
- if (year >= 100)
+ if (year >= 100) {
year -= 100;
+ }
if (!WriteTwoDigit(year, out) || !WriteTwoDigit(time.month, out + 2) ||
!WriteTwoDigit(time.day, out + 4) ||
diff --git a/src/pki/encode_values.h b/src/pki/encode_values.h
index 79216cc..030c864 100644
--- a/src/pki/encode_values.h
+++ b/src/pki/encode_values.h
@@ -5,11 +5,10 @@
#ifndef BSSL_DER_ENCODE_VALUES_H_
#define BSSL_DER_ENCODE_VALUES_H_
-#include "fillins/openssl_util.h"
#include <stddef.h>
#include <stdint.h>
-
+#include <openssl/base.h>
namespace bssl::der {
@@ -19,29 +18,27 @@ struct GeneralizedTime;
// comparing against other GeneralizedTime objects, returning true on success or
// false if |posix_time| is outside of the range from year 0000 to 9999.
OPENSSL_EXPORT bool EncodePosixTimeAsGeneralizedTime(
- int64_t posix_time,
- GeneralizedTime* generalized_time);
+ int64_t posix_time, GeneralizedTime *generalized_time);
// Converts a GeneralizedTime struct to a posix time in seconds in |result|,
// returning true on success or false if |generalized| was invalid or cannot be
// represented as a posix time in the range from the year 0000 to 9999.
OPENSSL_EXPORT bool GeneralizedTimeToPosixTime(
- const der::GeneralizedTime& generalized,
- int64_t* result);
+ const der::GeneralizedTime &generalized, int64_t *result);
static const size_t kGeneralizedTimeLength = 15;
// Encodes |time| to |out| as a DER GeneralizedTime value. Returns true on
// success and false on error.
-OPENSSL_EXPORT bool EncodeGeneralizedTime(const GeneralizedTime& time,
- uint8_t out[kGeneralizedTimeLength]);
+OPENSSL_EXPORT bool EncodeGeneralizedTime(const GeneralizedTime &time,
+ uint8_t out[kGeneralizedTimeLength]);
static const size_t kUTCTimeLength = 13;
// Encodes |time| to |out| as a DER UTCTime value. Returns true on success and
// false on error.
-OPENSSL_EXPORT bool EncodeUTCTime(const GeneralizedTime& time,
- uint8_t out[kUTCTimeLength]);
+OPENSSL_EXPORT bool EncodeUTCTime(const GeneralizedTime &time,
+ uint8_t out[kUTCTimeLength]);
} // namespace bssl::der
diff --git a/src/pki/encode_values_unittest.cc b/src/pki/encode_values_unittest.cc
index ab42418..e0a7820 100644
--- a/src/pki/encode_values_unittest.cc
+++ b/src/pki/encode_values_unittest.cc
@@ -6,8 +6,8 @@
#include <string_view>
-#include "parse_values.h"
#include <gtest/gtest.h>
+#include "parse_values.h"
namespace bssl::der::test {
@@ -15,7 +15,7 @@ namespace {
template <size_t N>
std::string_view ToStringView(const uint8_t (&data)[N]) {
- return std::string_view(reinterpret_cast<const char*>(data), N);
+ return std::string_view(reinterpret_cast<const char *>(data), N);
}
} // namespace
diff --git a/src/pki/extended_key_usage.cc b/src/pki/extended_key_usage.cc
index 34345f1..1aeeb6a 100644
--- a/src/pki/extended_key_usage.cc
+++ b/src/pki/extended_key_usage.cc
@@ -4,37 +4,42 @@
#include "extended_key_usage.h"
+#include <openssl/bytestring.h>
+
#include "input.h"
#include "parser.h"
-#include "tag.h"
namespace bssl {
-bool ParseEKUExtension(const der::Input& extension_value,
- std::vector<der::Input>* eku_oids) {
+bool ParseEKUExtension(der::Input extension_value,
+ std::vector<der::Input> *eku_oids) {
der::Parser extension_parser(extension_value);
der::Parser sequence_parser;
- if (!extension_parser.ReadSequence(&sequence_parser))
+ if (!extension_parser.ReadSequence(&sequence_parser)) {
return false;
+ }
// Section 4.2.1.12 of RFC 5280 defines ExtKeyUsageSyntax as:
// ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId
//
// Therefore, the sequence must contain at least one KeyPurposeId.
- if (!sequence_parser.HasMore())
+ if (!sequence_parser.HasMore()) {
return false;
+ }
while (sequence_parser.HasMore()) {
der::Input eku_oid;
- if (!sequence_parser.ReadTag(der::kOid, &eku_oid))
+ if (!sequence_parser.ReadTag(CBS_ASN1_OBJECT, &eku_oid)) {
// The SEQUENCE OF must contain only KeyPurposeIds (OIDs).
return false;
+ }
eku_oids->push_back(eku_oid);
}
- if (extension_parser.HasMore())
+ if (extension_parser.HasMore()) {
// The extension value must follow ExtKeyUsageSyntax - there is no way that
// it could be extended to allow for something after the SEQUENCE OF.
return false;
+ }
return true;
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/extended_key_usage.h b/src/pki/extended_key_usage.h
index 89b5030..c78f157 100644
--- a/src/pki/extended_key_usage.h
+++ b/src/pki/extended_key_usage.h
@@ -5,9 +5,9 @@
#ifndef BSSL_PKI_EXTENDED_KEY_USAGE_H_
#define BSSL_PKI_EXTENDED_KEY_USAGE_H_
-#include "fillins/openssl_util.h"
#include <vector>
+#include <openssl/base.h>
#include "input.h"
@@ -68,12 +68,6 @@ inline constexpr uint8_t kTimeStamping[] = {0x2b, 0x06, 0x01, 0x05,
inline constexpr uint8_t kOCSPSigning[] = {0x2b, 0x06, 0x01, 0x05,
0x05, 0x07, 0x03, 0x09};
-// Netscape Server Gated Crypto (2.16.840.1.113730.4.1) is a deprecated OID
-// which in some situations is considered equivalent to the serverAuth key
-// purpose.
-inline constexpr uint8_t kNetscapeServerGatedCrypto[] = {
- 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x04, 0x01};
-
// Parses |extension_value|, which contains the extnValue field of an X.509v3
// Extended Key Usage extension, and populates |eku_oids| with the list of
// DER-encoded OID values (that is, without tag and length). Returns false if
@@ -81,9 +75,9 @@ inline constexpr uint8_t kNetscapeServerGatedCrypto[] = {
//
// Note: The returned OIDs are only as valid as long as the data pointed to by
// |extension_value| is valid.
-OPENSSL_EXPORT bool ParseEKUExtension(const der::Input& extension_value,
- std::vector<der::Input>* eku_oids);
+OPENSSL_EXPORT bool ParseEKUExtension(der::Input extension_value,
+ std::vector<der::Input> *eku_oids);
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_EXTENDED_KEY_USAGE_H_
diff --git a/src/pki/extended_key_usage_unittest.cc b/src/pki/extended_key_usage_unittest.cc
index 2f190cf..b5229a1 100644
--- a/src/pki/extended_key_usage_unittest.cc
+++ b/src/pki/extended_key_usage_unittest.cc
@@ -4,19 +4,20 @@
#include <algorithm>
+#include <gtest/gtest.h>
#include "extended_key_usage.h"
#include "input.h"
-#include <gtest/gtest.h>
namespace bssl {
namespace {
// Helper method to check if an EKU is present in a std::vector of EKUs.
-bool HasEKU(const std::vector<der::Input>& list, const der::Input& eku) {
- for (const auto& oid : list) {
- if (oid == eku)
+bool HasEKU(const std::vector<der::Input> &list, der::Input eku) {
+ for (const auto &oid : list) {
+ if (oid == eku) {
return true;
+ }
}
return false;
}
@@ -60,7 +61,7 @@ TEST(ExtendedKeyUsageTest, RepeatedOid) {
std::vector<der::Input> ekus;
EXPECT_TRUE(ParseEKUExtension(extension, &ekus));
EXPECT_EQ(2u, ekus.size());
- for (const auto& eku : ekus) {
+ for (const auto &eku : ekus) {
EXPECT_EQ(der::Input(kServerAuth), eku);
}
}
@@ -163,4 +164,4 @@ TEST(ExtendedKeyUsageTest, EmptyExtension) {
} // namespace
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/fillins/file_util.cc b/src/pki/fillins/file_util.cc
deleted file mode 100644
index e2d28fd..0000000
--- a/src/pki/fillins/file_util.cc
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "file_util.h"
-
-#include <fstream>
-#include <iostream>
-#include <streambuf>
-#include <string>
-
-namespace bssl {
-
-namespace fillins {
-
-bool ReadFileToString(const FilePath &path, std::string *out) {
- std::ifstream file(path.value(), std::ios::binary);
- file.unsetf(std::ios::skipws);
-
- file.seekg(0, std::ios::end);
- if (file.tellg() <= 0) {
- return false;
- }
- out->reserve(file.tellg());
- file.seekg(0, std::ios::beg);
-
- out->assign(std::istreambuf_iterator<char>(file),
- std::istreambuf_iterator<char>());
-
- return true;
-}
-
-} // namespace fillins
-
-} // namespace bssl
diff --git a/src/pki/fillins/file_util.h b/src/pki/fillins/file_util.h
deleted file mode 100644
index 23e9b1a..0000000
--- a/src/pki/fillins/file_util.h
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BSSL_FILLINS_FILE_UTIL_H
-#define BSSL_FILLINS_FILE_UTIL_H
-
-#include <openssl/base.h>
-
-#include "path_service.h"
-
-#include <string>
-
-namespace bssl {
-
-namespace fillins {
-
-bool ReadFileToString(const FilePath &path, std::string *out);
-
-} // namespace fillins
-
-} // namespace bssl
-
-#endif // BSSL_FILLINS_FILE_UTIL_H
diff --git a/src/pki/fillins/fillins_base64.cc b/src/pki/fillins/fillins_base64.cc
deleted file mode 100644
index a692cb0..0000000
--- a/src/pki/fillins/fillins_base64.cc
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <openssl/base64.h>
-
-#include "fillins_base64.h"
-
-#include <vector>
-
-namespace bssl {
-
-namespace fillins {
-
-bool Base64Encode(const std::string_view &input, std::string *output) {
- size_t len;
- if (!EVP_EncodedLength(&len, input.size())) {
- return false;
- }
- std::vector<char> encoded(len);
- len = EVP_EncodeBlock(reinterpret_cast<uint8_t *>(encoded.data()),
- reinterpret_cast<const uint8_t *>(input.data()),
- input.size());
- if (!len) {
- return false;
- }
- output->assign(encoded.data(), len);
- return true;
-}
-
-bool Base64Decode(const std::string_view &input, std::string *output) {
- size_t len;
- if (!EVP_DecodedLength(&len, input.size())) {
- return false;
- }
- std::vector<char> decoded(len);
- if (!EVP_DecodeBase64(reinterpret_cast<uint8_t *>(decoded.data()), &len, len,
- reinterpret_cast<const uint8_t *>(input.data()),
- input.size())) {
- return false;
- }
- output->assign(decoded.data(), len);
- return true;
-}
-
-} // namespace fillins
-
-} // namespace bssl
diff --git a/src/pki/fillins/fillins_base64.h b/src/pki/fillins/fillins_base64.h
deleted file mode 100644
index 440138f..0000000
--- a/src/pki/fillins/fillins_base64.h
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BSSL_FILLINS_BASE64_H
-#define BSSL_FILLINS_BASE64_H
-
-#include <openssl/base.h>
-
-#include <string>
-#include <string_view>
-
-namespace bssl {
-
-namespace fillins {
-
-OPENSSL_EXPORT bool Base64Encode(const std::string_view &input,
- std::string *output);
-
-OPENSSL_EXPORT bool Base64Decode(const std::string_view &input,
- std::string *output);
-
-} // namespace fillins
-
-} // namespace bssl
-
-#endif // BSSL_FILLINS_BASE64_H
diff --git a/src/pki/fillins/fillins_string_util.cc b/src/pki/fillins/fillins_string_util.cc
deleted file mode 100644
index cdafcc5..0000000
--- a/src/pki/fillins/fillins_string_util.cc
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "../string_util.h"
-#include <string>
-#include <string_view>
-#include "fillins_string_util.h"
-
-
-namespace bssl {
-
-namespace fillins {
-
-
-// TODO(bbe): get rid of this
-std::string HexEncode(const void *bytes, size_t size) {
- return bssl::string_util::HexEncode((const uint8_t *)bytes, size);
-}
-
-static bool IsUnicodeWhitespace(char c) {
- return c == 9 || c == 10 || c == 11 || c == 12 || c == 13 || c == ' ';
-}
-
-std::string CollapseWhitespaceASCII(std::string_view text,
- bool trim_sequences_with_line_breaks) {
- std::string result;
- result.resize(text.size());
-
- // Set flags to pretend we're already in a trimmed whitespace sequence, so we
- // will trim any leading whitespace.
- bool in_whitespace = true;
- bool already_trimmed = true;
-
- int chars_written = 0;
- for (auto i = text.begin(); i != text.end(); ++i) {
- if (IsUnicodeWhitespace(*i)) {
- if (!in_whitespace) {
- // Reduce all whitespace sequences to a single space.
- in_whitespace = true;
- result[chars_written++] = L' ';
- }
- if (trim_sequences_with_line_breaks && !already_trimmed &&
- ((*i == '\n') || (*i == '\r'))) {
- // Whitespace sequences containing CR or LF are eliminated entirely.
- already_trimmed = true;
- --chars_written;
- }
- } else {
- // Non-whitespace chracters are copied straight across.
- in_whitespace = false;
- already_trimmed = false;
- result[chars_written++] = *i;
- }
- }
-
- if (in_whitespace && !already_trimmed) {
- // Any trailing whitespace is eliminated.
- --chars_written;
- }
-
- result.resize(chars_written);
- return result;
-}
-
-// TODO(bbe): get rid of this (used to be strcasecmp in google3, which
-// causes windows pain because msvc and strings.h)
-bool EqualsCaseInsensitiveASCII(std::string_view a, std::string_view b) {
- return bssl::string_util::IsEqualNoCase(a, b);
-}
-
-bool IsAsciiAlpha(char c) {
- return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z');
-}
-
-bool IsAsciiDigit(char c) { return c >= '0' && c <= '9'; }
-
-void ReplaceSubstringsAfterOffset(std::string *s, size_t offset,
- std::string_view find,
- std::string_view replace) {
- std::string_view prefix(s->data(), offset);
- std::string suffix =
- bssl::string_util::FindAndReplace(s->substr(offset), find, replace);
- *s = std::string(prefix) + suffix;
-};
-
-} // namespace fillins
-
-} // namespace bssl
diff --git a/src/pki/fillins/fillins_string_util.h b/src/pki/fillins/fillins_string_util.h
deleted file mode 100644
index bf1f2e0..0000000
--- a/src/pki/fillins/fillins_string_util.h
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BSSL_FILLINS_STRING_UTIL_H
-#define BSSL_FILLINS_STRING_UTIL_H
-
-#include <openssl/base.h>
-
-#include <string.h>
-#include <cassert>
-#include <string>
-#include <string_view>
-
-namespace bssl {
-
-namespace fillins {
-
-OPENSSL_EXPORT std::string HexEncode(const void *bytes, size_t size);
-
-OPENSSL_EXPORT std::string CollapseWhitespaceASCII(
- std::string_view text, bool trim_sequences_with_line_breaks);
-
-OPENSSL_EXPORT bool EqualsCaseInsensitiveASCII(std::string_view a,
- std::string_view b);
-
-OPENSSL_EXPORT bool IsAsciiAlpha(char c);
-
-OPENSSL_EXPORT bool IsAsciiDigit(char c);
-
-OPENSSL_EXPORT void ReplaceSubstringsAfterOffset(std::string *s, size_t offset,
- std::string_view find,
- std::string_view replace);
-
-OPENSSL_EXPORT std::string HexDecode(std::string_view hex);
-
-} // namespace fillins
-
-} // namespace bssl
-
-#endif // BSSL_FILLINS_STRING_UTIL_H
diff --git a/src/pki/fillins/log.h b/src/pki/fillins/log.h
deleted file mode 100644
index f0bbe61..0000000
--- a/src/pki/fillins/log.h
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BSSL_FILLINS_LOG_H_
-#define BSSL_FILLINS_LOG_H_
-
-#include <iostream>
-
-// This header defines the logging macros, inherited from chrome.
-
-// This file is not used in chrome, so check here to make sure we are
-// only compiling inside boringssl.
-#if !defined(_BORINGSSL_LIBPKI_)
-#error "_BORINGSSL_LIBPKI_ is not defined when compiling BoringSSL libpki"
-#endif
-
-#if defined(_BORINGSSL_LIBPKI_VERBOSE_)
-#define DVLOG(l) std::cerr
-#define LOG(l) std::cerr
-#else
-#define DVLOG(l) 0 && std::cerr
-#define LOG(l) 0 && std::cerr
-#endif // _BORINGSSL_LIBPKI_VERBOSE_
-
-#endif // BSSL_FILLINS_LOG_H_
diff --git a/src/pki/fillins/net_errors.h b/src/pki/fillins/net_errors.h
deleted file mode 100644
index 2955888..0000000
--- a/src/pki/fillins/net_errors.h
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BSSL_FILLINS_NET_ERRORS_H
-#define BSSL_FILLINS_NET_ERRORS_H
-
-#include <openssl/base.h>
-
-namespace bssl {
-
-enum Error {
- OK = 0,
-};
-
-} // namespace bssl
-
-#endif // BSSL_FILLINS_NET_ERRORS_H
diff --git a/src/pki/fillins/openssl_util.cc b/src/pki/fillins/openssl_util.cc
deleted file mode 100644
index 6c58169..0000000
--- a/src/pki/fillins/openssl_util.cc
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "openssl_util.h"
-
-#include <openssl/err.h>
-
-namespace bssl {
-
-namespace fillins {
-
-OpenSSLErrStackTracer::OpenSSLErrStackTracer() {}
-
-OpenSSLErrStackTracer::~OpenSSLErrStackTracer() { ERR_clear_error(); }
-
-} // namespace fillins
-
-} // namespace bssl
diff --git a/src/pki/fillins/openssl_util.h b/src/pki/fillins/openssl_util.h
deleted file mode 100644
index f193a51..0000000
--- a/src/pki/fillins/openssl_util.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BSSL_FILLINS_OPENSSL_UTIL_H
-#define BSSL_FILLINS_OPENSSL_UTIL_H
-
-#include <openssl/base.h>
-
-#include <string>
-
-namespace bssl {
-
-namespace fillins {
-
-// Place an instance of this class on the call stack to automatically clear
-// the OpenSSL error stack on function exit.
-class OPENSSL_EXPORT OpenSSLErrStackTracer {
- public:
- OpenSSLErrStackTracer();
- ~OpenSSLErrStackTracer();
-};
-
-} // namespace fillins
-
-} // namespace bssl
-
-#endif // BSSL_FILLINS_OPENSSL_UTIL_H
diff --git a/src/pki/fillins/path_service.cc b/src/pki/fillins/path_service.cc
deleted file mode 100644
index a915cb1..0000000
--- a/src/pki/fillins/path_service.cc
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "path_service.h"
-
-#include <stdlib.h>
-#include <iostream>
-
-namespace bssl {
-
-namespace fillins {
-
-FilePath::FilePath() {}
-
-FilePath::FilePath(const std::string &path) : path_(path) {}
-
-const std::string &FilePath::value() const { return path_; }
-
-FilePath FilePath::AppendASCII(const std::string &ascii_path_element) const {
- // Append a path element to a path. Use the \ separator if this appears to
- // be a Windows path, otherwise the Unix one.
- if (path_.find(":\\") != std::string::npos) {
- return FilePath(path_ + "\\" + ascii_path_element);
- }
- return FilePath(path_ + "/" + ascii_path_element);
-}
-
-// static
-void PathService::Get(PathKey key, FilePath *out) {
- // We expect our test data to live in "pki" underneath a
- // test root directory, or in the current directry.
- char *root_from_env = getenv("BORINGSSL_TEST_DATA_ROOT");
- std::string root = root_from_env ? root_from_env : ".";
- *out = FilePath(root + "/pki");
-}
-
-} // namespace fillins
-
-} // namespace bssl
diff --git a/src/pki/fillins/path_service.h b/src/pki/fillins/path_service.h
deleted file mode 100644
index ccc5014..0000000
--- a/src/pki/fillins/path_service.h
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BSSL_FILLINS_PATH_SERVICE_H
-#define BSSL_FILLINS_PATH_SERVICE_H
-
-#include <openssl/base.h>
-
-#include <string>
-
-namespace bssl {
-
-namespace fillins {
-
-class FilePath {
- public:
- FilePath();
- FilePath(const std::string &path);
-
- const std::string &value() const;
-
- FilePath AppendASCII(const std::string &ascii_path_element) const;
-
- private:
- std::string path_;
-};
-
-enum PathKey {
- BSSL_TEST_DATA_ROOT = 0,
-};
-
-class PathService {
- public:
- static void Get(PathKey key, FilePath *out);
-};
-
-} // namespace fillins
-
-} // namespace bssl
-
-#endif // BSSL_FILLINS_PATH_SERVICE_H
diff --git a/src/pki/general_names.cc b/src/pki/general_names.cc
index 2ffb24b..c446287 100644
--- a/src/pki/general_names.cc
+++ b/src/pki/general_names.cc
@@ -5,17 +5,17 @@
#include "general_names.h"
#include <openssl/base.h>
+#include <openssl/bytestring.h>
#include <climits>
#include <cstring>
#include "cert_error_params.h"
#include "cert_errors.h"
-#include "ip_util.h"
-#include "string_util.h"
#include "input.h"
+#include "ip_util.h"
#include "parser.h"
-#include "tag.h"
+#include "string_util.h"
namespace bssl {
@@ -44,16 +44,15 @@ GeneralNames::GeneralNames() = default;
GeneralNames::~GeneralNames() = default;
// static
-std::unique_ptr<GeneralNames> GeneralNames::Create(
- const der::Input& general_names_tlv,
- CertErrors* errors) {
+std::unique_ptr<GeneralNames> GeneralNames::Create(der::Input general_names_tlv,
+ CertErrors *errors) {
BSSL_CHECK(errors);
// RFC 5280 section 4.2.1.6:
// GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName
der::Parser parser(general_names_tlv);
der::Input sequence_value;
- if (!parser.ReadTag(der::kSequence, &sequence_value)) {
+ if (!parser.ReadTag(CBS_ASN1_SEQUENCE, &sequence_value)) {
errors->AddError(kFailedReadingGeneralNames);
return nullptr;
}
@@ -67,8 +66,7 @@ std::unique_ptr<GeneralNames> GeneralNames::Create(
// static
std::unique_ptr<GeneralNames> GeneralNames::CreateFromValue(
- const der::Input& general_names_value,
- CertErrors* errors) {
+ der::Input general_names_value, CertErrors *errors) {
BSSL_CHECK(errors);
auto general_names = std::make_unique<GeneralNames>();
@@ -98,44 +96,44 @@ std::unique_ptr<GeneralNames> GeneralNames::CreateFromValue(
}
[[nodiscard]] bool ParseGeneralName(
- const der::Input& input,
+ der::Input input,
GeneralNames::ParseGeneralNameIPAddressType ip_address_type,
- GeneralNames* subtrees,
- CertErrors* errors) {
+ GeneralNames *subtrees, CertErrors *errors) {
BSSL_CHECK(errors);
der::Parser parser(input);
- der::Tag tag;
+ CBS_ASN1_TAG tag;
der::Input value;
- if (!parser.ReadTagAndValue(&tag, &value))
+ if (!parser.ReadTagAndValue(&tag, &value)) {
return false;
+ }
GeneralNameTypes name_type = GENERAL_NAME_NONE;
- if (tag == der::ContextSpecificConstructed(0)) {
+ if (tag == (CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 0)) {
// otherName [0] OtherName,
name_type = GENERAL_NAME_OTHER_NAME;
subtrees->other_names.push_back(value);
- } else if (tag == der::ContextSpecificPrimitive(1)) {
+ } else if (tag == (CBS_ASN1_CONTEXT_SPECIFIC | 1)) {
// rfc822Name [1] IA5String,
name_type = GENERAL_NAME_RFC822_NAME;
- const std::string_view s = value.AsStringView();
+ const std::string_view s = BytesAsStringView(value);
if (!bssl::string_util::IsAscii(s)) {
errors->AddError(kRFC822NameNotAscii);
return false;
}
subtrees->rfc822_names.push_back(s);
- } else if (tag == der::ContextSpecificPrimitive(2)) {
+ } else if (tag == (CBS_ASN1_CONTEXT_SPECIFIC | 2)) {
// dNSName [2] IA5String,
name_type = GENERAL_NAME_DNS_NAME;
- const std::string_view s = value.AsStringView();
+ const std::string_view s = BytesAsStringView(value);
if (!bssl::string_util::IsAscii(s)) {
errors->AddError(kDnsNameNotAscii);
return false;
}
subtrees->dns_names.push_back(s);
- } else if (tag == der::ContextSpecificConstructed(3)) {
+ } else if (tag == (CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 3)) {
// x400Address [3] ORAddress,
name_type = GENERAL_NAME_X400_ADDRESS;
subtrees->x400_addresses.push_back(value);
- } else if (tag == der::ContextSpecificConstructed(4)) {
+ } else if (tag == (CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 4)) {
// directoryName [4] Name,
name_type = GENERAL_NAME_DIRECTORY_NAME;
// Name is a CHOICE { rdnSequence RDNSequence }, therefore the SEQUENCE
@@ -143,23 +141,25 @@ std::unique_ptr<GeneralNames> GeneralNames::CreateFromValue(
// only the value portion.
der::Parser name_parser(value);
der::Input name_value;
- if (!name_parser.ReadTag(der::kSequence, &name_value) || parser.HasMore())
+ if (!name_parser.ReadTag(CBS_ASN1_SEQUENCE, &name_value) ||
+ parser.HasMore()) {
return false;
+ }
subtrees->directory_names.push_back(name_value);
- } else if (tag == der::ContextSpecificConstructed(5)) {
+ } else if (tag == (CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 5)) {
// ediPartyName [5] EDIPartyName,
name_type = GENERAL_NAME_EDI_PARTY_NAME;
subtrees->edi_party_names.push_back(value);
- } else if (tag == der::ContextSpecificPrimitive(6)) {
+ } else if (tag == (CBS_ASN1_CONTEXT_SPECIFIC | 6)) {
// uniformResourceIdentifier [6] IA5String,
name_type = GENERAL_NAME_UNIFORM_RESOURCE_IDENTIFIER;
- const std::string_view s = value.AsStringView();
+ const std::string_view s = BytesAsStringView(value);
if (!bssl::string_util::IsAscii(s)) {
errors->AddError(kURINotAscii);
return false;
}
subtrees->uniform_resource_identifiers.push_back(s);
- } else if (tag == der::ContextSpecificPrimitive(7)) {
+ } else if (tag == (CBS_ASN1_CONTEXT_SPECIFIC | 7)) {
// iPAddress [7] OCTET STRING,
name_type = GENERAL_NAME_IP_ADDRESS;
if (ip_address_type == GeneralNames::IP_ADDRESS_ONLY) {
@@ -171,8 +171,8 @@ std::unique_ptr<GeneralNames> GeneralNames::CreateFromValue(
// version 4, as specified in [RFC791], the octet string MUST contain
// exactly four octets. For IP version 6, as specified in [RFC2460],
// the octet string MUST contain exactly sixteen octets.
- if ((value.Length() != kIPv4AddressSize &&
- value.Length() != kIPv6AddressSize)) {
+ if ((value.size() != kIPv4AddressSize &&
+ value.size() != kIPv6AddressSize)) {
errors->AddError(kFailedParsingIp);
return false;
}
@@ -189,21 +189,20 @@ std::unique_ptr<GeneralNames> GeneralNames::CreateFromValue(
// constraint for "class C" subnet 192.0.2.0 is represented as the
// octets C0 00 02 00 FF FF FF 00, representing the CIDR notation
// 192.0.2.0/24 (mask 255.255.255.0).
- if (value.Length() != kIPv4AddressSize * 2 &&
- value.Length() != kIPv6AddressSize * 2) {
+ if (value.size() != kIPv4AddressSize * 2 &&
+ value.size() != kIPv6AddressSize * 2) {
errors->AddError(kFailedParsingIp);
return false;
}
- der::Input addr(value.UnsafeData(), value.Length() / 2);
- der::Input mask(value.UnsafeData() + value.Length() / 2,
- value.Length() / 2);
+ der::Input addr = value.first(value.size() / 2);
+ der::Input mask = value.subspan(value.size() / 2);
if (!IsValidNetmask(mask)) {
errors->AddError(kFailedParsingIp);
return false;
}
subtrees->ip_address_ranges.emplace_back(addr, mask);
}
- } else if (tag == der::ContextSpecificPrimitive(8)) {
+ } else if (tag == (CBS_ASN1_CONTEXT_SPECIFIC | 8)) {
// registeredID [8] OBJECT IDENTIFIER }
name_type = GENERAL_NAME_REGISTERED_ID;
subtrees->registered_ids.push_back(value);
@@ -217,4 +216,4 @@ std::unique_ptr<GeneralNames> GeneralNames::CreateFromValue(
return true;
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/general_names.h b/src/pki/general_names.h
index 38643d1..838a2d7 100644
--- a/src/pki/general_names.h
+++ b/src/pki/general_names.h
@@ -5,11 +5,12 @@
#ifndef BSSL_PKI_GENERAL_NAMES_H_
#define BSSL_PKI_GENERAL_NAMES_H_
-#include "fillins/openssl_util.h"
#include <memory>
#include <string_view>
#include <vector>
+#include <openssl/base.h>
+
#include "cert_error_id.h"
@@ -62,15 +63,13 @@ struct OPENSSL_EXPORT GeneralNames {
// |general_names_tlv|, so is only valid as long as |general_names_tlv| is.
// Returns nullptr on failure, and may fill |errors| with
// additional information. |errors| must be non-null.
- static std::unique_ptr<GeneralNames> Create(
- const der::Input& general_names_tlv,
- CertErrors* errors);
+ static std::unique_ptr<GeneralNames> Create(der::Input general_names_tlv,
+ CertErrors *errors);
// As above, but takes the GeneralNames sequence value, without the tag and
// length.
static std::unique_ptr<GeneralNames> CreateFromValue(
- const der::Input& general_names_value,
- CertErrors* errors);
+ der::Input general_names_value, CertErrors *errors);
// DER-encoded OtherName values.
std::vector<der::Input> other_names;
@@ -123,11 +122,10 @@ struct OPENSSL_EXPORT GeneralNames {
// |errors| must be non-null.
// TODO(mattm): should this be a method on GeneralNames?
[[nodiscard]] OPENSSL_EXPORT bool ParseGeneralName(
- const der::Input& input,
+ der::Input input,
GeneralNames::ParseGeneralNameIPAddressType ip_address_type,
- GeneralNames* subtrees,
- CertErrors* errors);
+ GeneralNames *subtrees, CertErrors *errors);
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_GENERAL_NAMES_H_
diff --git a/src/pki/general_names_unittest.cc b/src/pki/general_names_unittest.cc
index a3e5368..be508a2 100644
--- a/src/pki/general_names_unittest.cc
+++ b/src/pki/general_names_unittest.cc
@@ -4,15 +4,15 @@
#include "general_names.h"
-#include "test_helpers.h"
#include <gtest/gtest.h>
+#include "test_helpers.h"
namespace bssl {
namespace {
-::testing::AssertionResult LoadTestData(const char* token,
- const std::string& basename,
- std::string* result) {
+::testing::AssertionResult LoadTestData(const char *token,
+ const std::string &basename,
+ std::string *result) {
std::string path = "testdata/name_constraints_unittest/" + basename;
const PemBlockMapping mappings[] = {
@@ -23,13 +23,11 @@ namespace {
}
::testing::AssertionResult LoadTestSubjectAltNameData(
- const std::string& basename,
- std::string* result) {
+ const std::string &basename, std::string *result) {
return LoadTestData("SUBJECT ALTERNATIVE NAME", basename, result);
}
-void ReplaceFirstSubstring(std::string* str,
- std::string_view substr,
+void ReplaceFirstSubstring(std::string *str, std::string_view substr,
std::string_view replacement) {
size_t idx = str->find(substr);
if (idx != std::string::npos) {
@@ -225,4 +223,4 @@ TEST(GeneralNames, RegisteredIDs) {
EXPECT_EQ(der::Input(expected_der), general_names->registered_ids[0]);
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/import_spec.json b/src/pki/import_spec.json
deleted file mode 100644
index 9420713..0000000
--- a/src/pki/import_spec.json
+++ /dev/null
@@ -1,349 +0,0 @@
-{
- "replacements": [
- {"match": "^#include \"base/supports_user_data.h\"",
- "replace": ""},
- {"match": ": public base::SupportsUserData",
- "replace": ""},
- {"match": "~Result\\(\\) override;",
- "replace": "~Result();"},
- {"match": "base::SupportsUserData",
- "replace": "void"},
- {"match": "^#include \"net/dns/dns_util.h\"",
- "replace": ""},
- {"match": "^#include \"base/gtest_prod_util.h\"",
- "replace": ""},
- {"match": "^#include \"base/pickle.h\"",
- "replace": ""},
- {"match": "^#include \"base/check.h\"",
- "replace": "#include \"fillins/check.h\""},
- {"match": "^#include \"base/notreached.h\"",
- "replace": ""},
- {"match": "^#include \"base/check_op.h\"",
- "replace": "#include \"fillins/check.h\""},
- {"match": "^#include \"net/base/hash_value.h\"",
- "replace": "#include \"fillins/hash_value.h\""},
- {"match": "^#include \"net/cert/x509_util.h\"",
- "replace": "#include \"fillins/x509_util.h\""},
- {"match": "^#include \"url/gurl.h\"",
- "replace": "#include \"webutil/url/url.h\""},
- {"match": "^#include \"build/build_config.h\"",
- "replace": ""},
- {"match": "^#include \"base/numerics/clamped_math.h\"",
- "replace": "#include \"fillins/clamped_math.h\""},
- {"match": "^#include \"base/numerics/safe_conversions.h\"",
- "replace": ""},
- {"match": "^#include \"net/base/net_export.h\"",
- "replace": ""},
- {"match": "^#include \"base/strings/string_util.h\"",
- "replace": "#include \"fillins/fillins_string_util.h\""},
- {"match": "^#include \"base/base_paths.h\"",
- "replace": "#include \"fillins/path_service.h\"",
- "using": ["bssl::fillins::PathService"]},
- {"match": "base::PathService",
- "replace": "bssl::fillins::PathService"},
- {"match": "base::ClampAdd",
- "replace": "bssl::fillins::ClampAdd"},
- {"match": "base::ClampMul",
- "replace": "bssl::fillins::ClampAdd"},
- {"match": "^#include \"base/files/file_util.h\"",
- "replace": "#include \"fillins/file_util.h\""},
- {"match": "^#include \"base/path_service.h\"",
- "replace": ""},
- {"match": "^#include \"crypto/openssl_util.h\"",
- "replace": "#include \"fillins/openssl_util.h\""},
- {"match": "\"net/data/",
- "replace": "\"testdata/"},
- {"match": "\"net/third_party/nist-pkits",
- "replace": "\"testdata/nist-pkits"},
- {"match": "^#include \"net/base/net_errors.h\"",
- "replace": "#include \"fillins/log.h\"\n#include \"fillins/net_errors.h\"\n"},
- {"match": "^#include \"net/test/test_certificate_data.h\"",
- "replace": "#include \"testdata/test_certificate_data.h\""},
- {"match": "^#include \"net/third_party/nist-pkits/pkits_testcases-inl.h\"",
- "replace": "#include \"testdata/nist-pkits/pkits_testcases-inl.h\""},
- {"match": "^#include \"base/sys_byteorder.h\"",
- "replace": "#include \"fillins/inet.h\""},
- {"match": "^#include \"base/third_party/icu/icu_utf.h\"",
- "replace": "#include \"fillins/utf_string_conversions.h\""},
- {"match": "^#include \"base/strings/utf_string_conversions.h\"",
- "replace": "#include \"fillins/utf_string_conversions.h\""},
- {"match": "^#include \"base/strings/utf_string_conversion_utils.h\"",
- "replace": ""},
- {"match": "^#include \"base/memory/ref_counted.h\"",
- "replace": "#include <memory>"},
- {"match": "^#include \"base/base64.h\"",
- "replace": "#include \"fillins/fillins_base64.h\""},
- {"match": "^#include \"base/strings/stringprintf.h\"",
- "replace": ""},
- {"match": "^#include \"third_party/boringssl/src/include/openssl/(.*).h\"",
- "replace": "#include <openssl/$1.h>"},
- {"match": "^#include \"net/cert/pki/",
- "replace": "#include \""},
- {"match": "^#include \"net/cert/",
- "replace": "#include \""},
- {"match": "^#include \"net/der/",
- "replace": "#include \""},
- {"match": "^#include \"net/",
- "replace": "#include \""},
- {"match": "^#include \"net_buildflags.h\"",
- "replace": ""},
- {"match": "^#include \"base/time/time.h\"",
- "replace": ""},
- {"match": "^#include \"base/strings/string_piece.h\"",
- "replace": "#include <string_view>\n"},
- {"match": "^#include \"testing/gtest/include/gtest/gtest.h\"",
- "replace": "#include <gtest/gtest.h>"},
- {"match": "^#include \"testing/gmock/include/gmock/gmock.h\"",
- "replace": "#include <gmock/gmock.h>"},
- {"match": "^#include \"base/containers/span.h\"",
- "replace": "#include <openssl/span.h>"},
- {"match": "^#include \"third_party/abseil-cpp/absl/types/optional.h\"",
- "replace": "#include <optional>"},
- {"match": "^#include \"base/containers/contains.h\"",
- "replace": ""},
- {"match": "LOG(ERROR)",
- "replace": "std::cerr"},
- {"match": "GURL",
- "replace": "URL",
- "include": "webutil/url/url.h"},
- {"match": "absl::nullopt",
- "replace": "std::nullopt" },
- {"match": "absl::optional",
- "replace": "std::optional" },
- {"match": "absl::make_optional",
- "replace": "std::make_optional" },
- {"match": "base::span",
- "replace": "bssl::Span" },
- {"match": "base::make_span",
- "replace": "bssl::MakeSpan" },
- {"match": "base::as_bytes",
- "replace": "fillins::as_bytes",
- "include": "fillins/bits.h"},
- {"match": "^namespace net {",
- "replace": "namespace bssl {"},
- {"match": "namespace net::([^ ]+) {",
- "replace": "namespace bssl::$1 {"},
- {"match": "NET_EXPORT_PRIVATE ",
- "replace": "OPENSSL_EXPORT ",
- "include": "fillins/openssl_util.h"},
- {"match": "NET_EXPORT ",
- "replace": "OPENSSL_EXPORT ",
- "include": "fillins/openssl_util.h"},
- {"match": "NOTREACHED\\(\\)",
- "replace": "abort(); //NOTREACHED" },
- {"match": "NOTREACHED_NORETURN\\(\\)",
- "replace": "abort(); //NOTREACHED_NORETURN" },
- {"match": "FRIEND_TEST_ALL_PREFIXES\\(.+;",
- "replace": ""},
- {"match": " NET_DER",
- "replace": " BSSL_DER"},
- {"match": " NET_CERT_PKI",
- "replace": " BSSL_PKI"},
- {"match": " NET_CERT",
- "replace": " BSSL_PKI"},
- {"match": "^using base::StringPiece;",
- "replace": ""},
- {"match": "base::StringPiece",
- "replace": "std::string_view"},
- {"match": "base::StartsWith\\(",
- "replace": "bssl::string_util::StartsWith(",
- "include": "string_util.h"},
- {"match": "base::StringPrintf",
- "replace": "absl::StrFormat",
- "include": "third_party/absl/strings/str_format.h"},
- {"match": "base::Base64Encode",
- "replace": "fillins::Base64Encode"},
- {"match": "base::Base64Decode",
- "replace": "fillins::Base64Decode"},
- {"match": "base::ReadFileToString",
- "replace": "fillins::ReadFileToString"},
- {"match": "base::CollapseWhitespaceASCII",
- "replace": "fillins::CollapseWhitespaceASCII"},
- {"match": "base::FilePath",
- "replace": "fillins::FilePath"},
- {"match": "base::DIR_SRC_TEST_DATA_ROOT",
- "replace": "fillins::BSSL_TEST_DATA_ROOT"},
- {"match": "base::NetToHost16\\(",
- "replace": "ntohs("},
- {"match": "base::NetToHost32\\(",
- "replace": "ntohl("},
- { "match": "base_icu::UChar32",
- "replace": "uint32_t"},
- {"match": "base::WriteUnicodeCharacter\\(",
- "replace": "fillins::WriteUnicodeCharacter("},
- {"match": "base::IsAsciiAlpha\\(",
- "replace": "fillins::IsAsciiAlpha("},
- {"match": "scoped_refptr<",
- "replace": "std::shared_ptr<"},
- {"match": ": public base::RefCountedThreadSafe<.+>",
- "replace": ""},
- {"match": "friend class base::RefCountedThreadSafe<.+>;",
- "replace": ""},
- {"match": "\\bnet::",
- "replace": "bssl::"},
- {"match": "base::Time::Exploded",
- "replace": "fillins::Exploded",
- "include": "fillins/time.h"},
- {"match": "([a-zA-Z_0-9]+)\\.UTCExplode\\(&([^)]*)\\)",
- "replace": "fillins::UTCExplode($1, &$2)"},
- {"match": "net::ReadTestFileToString\\(",
- "replace": "ReadTestFileToString("},
- {"match": "base::Seconds\\(",
- "replace": "absl::Seconds("},
- {"match": "base::Time::UnixEpoch\\(",
- "replace": "absl::UnixEpoch("},
- {"match": "base::Time::FromUTCExploded\\(",
- "replace": "fillins::FromUTCExploded(",
- "include": "fillins/time.h"},
- {"match": "base::Time::Now\\(\\)",
- "replace": "absl::Now()"},
- {"match": "base::Time::Min\\(\\)",
- "replace": "absl::InfinitePast()"},
- {"match": "base::Time::Max\\(\\)",
- "replace": "absl::InfiniteFuture()"},
- {"match": "base::Time",
- "replace": "absl::Time",
- "include": "fillins/time.h"},
- {"match": "constexpr absl::Time",
- "replace": "const absl::Time"},
- {"match": "^ // Map from OID to ParsedExtension.$",
- "replace": "~ParsedCertificate();\n$0"},
- {"match": "^ ~ParsedCertificate\\(\\);$",
- "replace": " "},
- {"match": "crypto::OpenSSLErrStackTracer",
- "replace": "fillins::OpenSSLErrStackTracer"},
- {"match": "\\(FROM_HERE\\)",
- "replace": ""},
- {"match": "([^a-zA-Z])StringPiece([^a-zA-Z])",
- "replace": "${1}std::string_view$2"},
- {"match": "crypto::kSHA256Length",
- "replace": "SHA256_DIGEST_LENGTH"},
- {"match": "raw_ptr<([^>]*)>",
- "replace": "$1 *"}
- ],
- "files": [
- "net/cert/asn1_util.h",
- "net/cert/asn1_util.cc",
- "net/cert/cert_status_flags.h",
- "net/cert/cert_status_flags_list.h",
- "net/cert/cert_verify_proc_blocklist.inc",
- "net/cert/pki/cert_error_id.cc",
- "net/cert/pki/cert_error_id.h",
- "net/cert/pki/cert_error_params.cc",
- "net/cert/pki/cert_error_params.h",
- "net/cert/pki/cert_errors.cc",
- "net/cert/pki/cert_errors.h",
- "net/cert/pki/certificate_policies.cc",
- "net/cert/pki/certificate_policies.h",
- "net/cert/pki/certificate_policies_unittest.cc",
- "net/cert/pki/cert_issuer_source.h",
- "net/cert/pki/cert_issuer_source_static.cc",
- "net/cert/pki/cert_issuer_source_static.h",
- "net/cert/pki/cert_issuer_source_static_unittest.cc",
- "net/cert/pki/cert_issuer_source_sync_unittest.h",
- "net/cert/pki/common_cert_errors.cc",
- "net/cert/pki/common_cert_errors.h",
- "net/cert/pki/crl.h",
- "net/cert/pki/crl.cc",
- "net/cert/pki/crl_unittest.cc",
- "net/cert/pki/crl_parse_crl_certificatelist_fuzzer.cc",
- "net/cert/pki/crl_parse_crl_tbscertlist_fuzzer.cc",
- "net/cert/pki/crl_parse_issuing_distribution_point_fuzzer.cc",
- "net/cert/pki/crl_getcrlstatusforcert_fuzzer.cc",
- "net/cert/pki/extended_key_usage.cc",
- "net/cert/pki/extended_key_usage.h",
- "net/cert/pki/extended_key_usage_unittest.cc",
- "net/cert/pki/general_names.h",
- "net/cert/pki/general_names.cc",
- "net/cert/pki/general_names_unittest.cc",
- "net/cert/pki/ip_util.h",
- "net/cert/pki/ip_util.cc",
- "net/cert/pki/ip_util_unittest.cc",
- "net/cert/pki/mock_signature_verify_cache.h",
- "net/cert/pki/mock_signature_verify_cache.cc",
- "net/cert/pki/name_constraints.cc",
- "net/cert/pki/name_constraints.h",
- "net/cert/pki/name_constraints_unittest.cc",
- "net/cert/pki/nist_pkits_unittest.cc",
- "net/cert/pki/nist_pkits_unittest.h",
- "net/cert/pki/ocsp.cc",
- "net/cert/pki/ocsp.h",
- "net/cert/pki/ocsp_parse_ocsp_cert_id_fuzzer.cc",
- "net/cert/pki/ocsp_parse_ocsp_response_data_fuzzer.cc",
- "net/cert/pki/ocsp_parse_ocsp_response_fuzzer.cc",
- "net/cert/pki/ocsp_parse_ocsp_single_response_fuzzer.cc",
- "net/cert/pki/ocsp_unittest.cc",
- "net/cert/pki/parse_authority_key_identifier_fuzzer.cc",
- "net/cert/pki/parse_certificate.cc",
- "net/cert/pki/parse_certificate.h",
- "net/cert/pki/parse_certificate_unittest.cc",
- "net/cert/pki/parsed_certificate.cc",
- "net/cert/pki/parsed_certificate.h",
- "net/cert/pki/parse_certificate_fuzzer.cc",
- "net/cert/pki/parsed_certificate_unittest.cc",
- "net/cert/pki/parse_crldp_fuzzer.cc",
- "net/cert/pki/parse_name.cc",
- "net/cert/pki/parse_name.h",
- "net/cert/pki/parse_name_unittest.cc",
- "net/cert/pki/path_builder.cc",
- "net/cert/pki/path_builder.h",
- "net/cert/pki/path_builder_pkits_unittest.cc",
- "net/cert/pki/path_builder_unittest.cc",
- "net/cert/pki/path_builder_verify_certificate_chain_unittest.cc",
- "net/cert/pki/revocation_util.h",
- "net/cert/pki/revocation_util.cc",
- "net/cert/pki/signature_algorithm.cc",
- "net/cert/pki/signature_algorithm.h",
- "net/cert/pki/signature_algorithm_unittest.cc",
- "net/cert/pki/simple_path_builder_delegate.cc",
- "net/cert/pki/simple_path_builder_delegate.h",
- "net/cert/pki/simple_path_builder_delegate_unittest.cc",
- "net/cert/pki/string_util.cc",
- "net/cert/pki/string_util_unittest.cc",
- "net/cert/pki/string_util.h",
- "net/cert/pki/signature_verify_cache.h",
- "net/cert/pki/test_helpers.cc",
- "net/cert/pki/test_helpers.h",
- "net/cert/pki/trust_store.cc",
- "net/cert/pki/trust_store_collection.cc",
- "net/cert/pki/trust_store_collection.h",
- "net/cert/pki/trust_store_collection_unittest.cc",
- "net/cert/pki/trust_store.h",
- "net/cert/pki/trust_store_in_memory.cc",
- "net/cert/pki/trust_store_in_memory.h",
- "net/cert/pki/verify_certificate_chain.cc",
- "net/cert/pki/verify_certificate_chain.h",
- "net/cert/pki/verify_certificate_chain_pkits_unittest.cc",
- "net/cert/pki/verify_certificate_chain_typed_unittest.h",
- "net/cert/pki/verify_certificate_chain_unittest.cc",
- "net/cert/pki/verify_name_match.cc",
- "net/cert/pki/verify_name_match.h",
- "net/cert/pki/verify_name_match_unittest.cc",
- "net/cert/pki/verify_name_match_fuzzer.cc",
- "net/cert/pki/verify_name_match_normalizename_fuzzer.cc",
- "net/cert/pki/verify_name_match_verifynameinsubtree_fuzzer.cc",
- "net/cert/pki/verify_signed_data.cc",
- "net/cert/pki/verify_signed_data.h",
- "net/cert/pki/verify_signed_data_unittest.cc",
- "net/cert/ocsp_revocation_status.h",
- "net/cert/ocsp_verify_result.h",
- "net/cert/ocsp_verify_result.cc",
- "net/cert/pem.cc",
- "net/cert/pem.h",
- "net/cert/pem_unittest.cc",
- "net/der/encode_values.cc",
- "net/der/encode_values.h",
- "net/der/encode_values_unittest.cc",
- "net/der/input.cc",
- "net/der/input.h",
- "net/der/input_unittest.cc",
- "net/der/parser.cc",
- "net/der/parser.h",
- "net/der/parser_unittest.cc",
- "net/der/parse_values.cc",
- "net/der/parse_values.h",
- "net/der/parse_values_unittest.cc",
- "net/der/tag.cc",
- "net/der/tag.h"
- ]
-}
diff --git a/src/pki/import_tool.go b/src/pki/import_tool.go
deleted file mode 100644
index b1915f6..0000000
--- a/src/pki/import_tool.go
+++ /dev/null
@@ -1,187 +0,0 @@
-// import_tool is a quick tool for importing Chromium's certificate verifier
-// code into google3. In time it might be replaced by Copybara, but this is a
-// lighter-weight solution while we're quickly iterating and only going in one
-// direction.
-//
-// Usage: ./import_tool -spec import_spec.json\
-// -source-base ~/src/chromium/src/net\
-// -dest-base .
-package main
-
-import (
- "bufio"
- "encoding/json"
- "errors"
- "flag"
- "fmt"
- "io/ioutil"
- "os"
- "path/filepath"
- "regexp"
- "strings"
- "sync"
- "sync/atomic"
-)
-
-type specification struct {
- Replacements []replacement `json:"replacements"`
- Files []string `json:"files"`
-}
-
-type replacement struct {
- Match string `json:"match"`
- matchRE *regexp.Regexp `json:"-"`
- Replace string `json:"replace"`
- Include string `json:"include"`
- Using []string `json:"using"`
- used uint32
-}
-
-var (
- specFile *string = flag.String("spec", "", "Location of spec JSON")
- sourceBase *string = flag.String("source-base", "", "Path of the source files")
- destBase *string = flag.String("dest-base", "", "Path of the destination files")
-)
-
-func transformFile(spec *specification, filename string) error {
- const newLine = "\n"
-
- sourcePath := filepath.Join(*sourceBase, filename)
- destPath := filename
- destPath = strings.TrimPrefix(destPath, "net/")
- destPath = strings.TrimPrefix(destPath, "cert/")
- destPath = strings.TrimPrefix(destPath, "der/")
- destPath = strings.TrimPrefix(destPath, "pki/")
- destPath = filepath.Join(*destBase, destPath)
- destDir := filepath.Dir(destPath)
- if err := os.MkdirAll(destDir, 0755); err != nil {
- return err
- }
-
- source, err := os.Open(sourcePath)
- if err != nil {
- return err
- }
- defer source.Close()
-
- dest, err := os.OpenFile(destPath, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0644)
- if err != nil {
- return err
- }
- defer dest.Close()
-
- var using []string
- var includeInsertionPoint int
- includes := make(map[string]struct{})
- scanner := bufio.NewScanner(source)
- out := ""
- for scanner.Scan() {
- line := scanner.Text()
-
- if includeInsertionPoint == 0 && len(line) > 0 &&
- !strings.HasPrefix(line, "// ") &&
- !strings.HasPrefix(line, "#if") &&
- !strings.HasPrefix(line, "#define ") {
- includeInsertionPoint = len(out)
- }
-
- for i, repl := range spec.Replacements {
- if !repl.matchRE.MatchString(line) {
- continue
- }
- line = repl.matchRE.ReplaceAllString(line, repl.Replace)
- atomic.StoreUint32(&spec.Replacements[i].used, 1)
- using = append(using, repl.Using...)
- if repl.Include != "" {
- includes[repl.Include] = struct{}{}
- }
- }
-
- for _, u := range using {
- line = strings.Replace(
- line, "namespace chromium_certificate_verifier {",
- "namespace chromium_certificate_verifier {\nusing "+u+";", 1)
- }
-
- out += line
- out += newLine
- }
-
- if len(includes) > 0 {
- if includeInsertionPoint == 0 {
- panic("failed to find include insertion point for " + filename)
- }
-
- var s string
- for include := range includes {
- s = s + "#include \"" + include + "\"\n"
- }
-
- out = out[:includeInsertionPoint] + s + out[includeInsertionPoint:]
- }
-
- dest.WriteString(out)
- fmt.Printf("%s\n", filename)
-
- return nil
-}
-
-func do() error {
- flag.Parse()
-
- specBytes, err := ioutil.ReadFile(*specFile)
- if err != nil {
- return err
- }
-
- var spec specification
- if err := json.Unmarshal(specBytes, &spec); err != nil {
- if jsonError, ok := err.(*json.SyntaxError); ok {
- return fmt.Errorf("JSON parse error at offset %v: %v", jsonError.Offset, err.Error())
- }
- return errors.New("JSON parse error: " + err.Error())
- }
-
- for i, repl := range spec.Replacements {
- var err error
- spec.Replacements[i].matchRE, err = regexp.Compile(repl.Match)
- if err != nil {
- return fmt.Errorf("Failed to parse %q: %s", repl.Match, err)
- }
- }
-
- errors := make(chan error, len(spec.Files))
- var wg sync.WaitGroup
-
- for _, filename := range spec.Files {
- wg.Add(1)
-
- go func(filename string) {
- if err := transformFile(&spec, filename); err != nil {
- errors <- err
- }
- wg.Done()
- }(filename)
- }
-
- wg.Wait()
- select {
- case err := <-errors:
- return err
- default:
- break
- }
- for _, repl := range spec.Replacements {
- if repl.used == 0 {
- fmt.Fprintf(os.Stderr, "replacement for \"%s\" not used\n", repl.Match)
- }
- }
- return nil
-}
-
-func main() {
- if err := do(); err != nil {
- fmt.Fprintf(os.Stderr, "%s\n", err)
- os.Exit(1)
- }
-}
diff --git a/src/pki/input.cc b/src/pki/input.cc
index 884c6bc..156d248 100644
--- a/src/pki/input.cc
+++ b/src/pki/input.cc
@@ -4,64 +4,44 @@
#include "input.h"
-#include <algorithm>
-
#include <openssl/base.h>
namespace bssl::der {
-std::string Input::AsString() const {
- return std::string(reinterpret_cast<const char*>(data_.data()), data_.size());
-}
+std::string Input::AsString() const { return std::string(AsStringView()); }
-std::string_view Input::AsStringView() const {
- return std::string_view(reinterpret_cast<const char*>(data_.data()),
- data_.size());
+bool operator==(Input lhs, Input rhs) {
+ return MakeConstSpan(lhs) == MakeConstSpan(rhs);
}
-bssl::Span<const uint8_t> Input::AsSpan() const {
- return data_;
-}
+bool operator!=(Input lhs, Input rhs) { return !(lhs == rhs); }
-bool operator==(const Input& lhs, const Input& rhs) {
- return lhs.Length() == rhs.Length() &&
- std::equal(lhs.UnsafeData(), lhs.UnsafeData() + lhs.Length(),
- rhs.UnsafeData());
-}
+ByteReader::ByteReader(Input in) : data_(in) {}
-bool operator!=(const Input& lhs, const Input& rhs) {
- return !(lhs == rhs);
-}
-
-ByteReader::ByteReader(const Input& in)
- : data_(in.UnsafeData()), len_(in.Length()) {
-}
-
-bool ByteReader::ReadByte(uint8_t* byte_p) {
- if (!HasMore())
+bool ByteReader::ReadByte(uint8_t *byte_p) {
+ if (!HasMore()) {
return false;
- *byte_p = *data_;
+ }
+ *byte_p = data_[0];
Advance(1);
return true;
}
-bool ByteReader::ReadBytes(size_t len, Input* out) {
- if (len > len_)
+bool ByteReader::ReadBytes(size_t len, Input *out) {
+ if (len > data_.size()) {
return false;
- *out = Input(data_, len);
+ }
+ *out = Input(data_.first(len));
Advance(len);
return true;
}
// Returns whether there is any more data to be read.
-bool ByteReader::HasMore() {
- return len_ > 0;
-}
+bool ByteReader::HasMore() { return !data_.empty(); }
void ByteReader::Advance(size_t len) {
- BSSL_CHECK(len <= len_);
- data_ += len;
- len_ -= len;
+ BSSL_CHECK(len <= data_.size());
+ data_ = data_.subspan(len);
}
} // namespace bssl::der
diff --git a/src/pki/input.h b/src/pki/input.h
index b3b13b7..30ce5d4 100644
--- a/src/pki/input.h
+++ b/src/pki/input.h
@@ -5,14 +5,13 @@
#ifndef BSSL_DER_INPUT_H_
#define BSSL_DER_INPUT_H_
-#include "fillins/openssl_util.h"
#include <stddef.h>
#include <stdint.h>
#include <string>
#include <string_view>
-
+#include <openssl/base.h>
#include <openssl/span.h>
namespace bssl::der {
@@ -27,6 +26,10 @@ namespace bssl::der {
// difficult to read memory outside of an Input. ByteReader provides a simple
// API for reading through the Input sequentially. For more complicated uses,
// multiple instances of a ByteReader for a particular Input can be created.
+//
+// TODO(crbug.com/boringssl/661): This class will gradually be replaced with
+// bssl::Span<const uint8_t>. Avoid relying on APIs that are not part of
+// bssl::Span.
class OPENSSL_EXPORT Input {
public:
// Creates an empty Input, one from which no data can be read.
@@ -35,62 +38,82 @@ class OPENSSL_EXPORT Input {
// Creates an Input from a span. The constructed Input is only valid as long
// as |data| points to live memory. If constructed from, say, a
// |std::vector<uint8_t>|, mutating the vector will invalidate the Input.
- constexpr explicit Input(bssl::Span<const uint8_t> data) : data_(data) {}
+ constexpr Input(bssl::Span<const uint8_t> data) : data_(data) {}
// Creates an Input from the given |data| and |len|.
- constexpr explicit Input(const uint8_t* data, size_t len)
- : data_(bssl::MakeConstSpan(data, len)) {}
+ constexpr explicit Input(const uint8_t *data, size_t len)
+ : data_(MakeConstSpan(data, len)) {}
+ // Deprecated: Use StringAsBytes.
+ //
// Creates an Input from a std::string_view. The constructed Input is only
// valid as long as |data| points to live memory. If constructed from, say, a
// |std::string|, mutating the vector will invalidate the Input.
explicit Input(std::string_view str)
- : data_(bssl::MakeConstSpan(reinterpret_cast<const uint8_t*>(str.data()),
- str.size())) {}
-
- // Returns the length in bytes of an Input's data.
- constexpr size_t Length() const { return data_.size(); }
-
- // Returns a pointer to the Input's data. This method is marked as "unsafe"
- // because access to the Input's data should be done through ByteReader
- // instead. This method should only be used where using a ByteReader truly
- // is not an option.
- constexpr const uint8_t* UnsafeData() const { return data_.data(); }
+ : data_(MakeConstSpan(reinterpret_cast<const uint8_t *>(str.data()),
+ str.size())) {}
+ // The following APIs have the same semantics as in |bssl::Span|.
+ constexpr Span<const uint8_t>::iterator begin() const {
+ return data_.begin();
+ }
+ constexpr Span<const uint8_t>::iterator end() const { return data_.end(); }
+ constexpr const uint8_t *data() const { return data_.data(); }
+ constexpr size_t size() const { return data_.size(); }
+ constexpr bool empty() const { return data_.empty(); }
constexpr uint8_t operator[](size_t idx) const { return data_[idx]; }
+ constexpr uint8_t front() const { return data_.front(); }
+ constexpr uint8_t back() const { return data_.back(); }
+ constexpr Input subspan(size_t pos = 0,
+ size_t len = Span<const uint8_t>::npos) const {
+ return Input(data_.subspan(pos, len));
+ }
+ constexpr Input first(size_t len) const { return Input(data_.first(len)); }
+ constexpr Input last(size_t len) const { return Input(data_.last(len)); }
+ // Deprecated: use BytesAsStringView and convert to std::string.
+ //
// Returns a copy of the data represented by this object as a std::string.
std::string AsString() const;
+ // Deprecated: Use ByteAsString.
+ //
// Returns a std::string_view pointing to the same data as the Input. The
// resulting string_view must not outlive the data that was used to construct
// this Input.
- std::string_view AsStringView() const;
+ std::string_view AsStringView() const { return BytesAsStringView(data_); }
+ // Deprecated: This class implicitly converts to bssl::Span<const uint8_t>.
+ //
// Returns a span pointing to the same data as the Input. The resulting span
// must not outlive the data that was used to construct this Input.
- bssl::Span<const uint8_t> AsSpan() const;
+ Span<const uint8_t> AsSpan() const { return *this; }
+
+ // Deprecated: Use size() instead.
+ constexpr size_t Length() const { return size(); }
+
+ // Deprecated: Use data() instead.
+ constexpr const uint8_t *UnsafeData() const { return data(); }
private:
// TODO(crbug.com/770501): Replace this type with span altogether.
- bssl::Span<const uint8_t> data_;
+ Span<const uint8_t> data_;
};
// Return true if |lhs|'s data and |rhs|'s data are byte-wise equal.
-OPENSSL_EXPORT bool operator==(const Input& lhs, const Input& rhs);
+OPENSSL_EXPORT bool operator==(Input lhs, Input rhs);
// Return true if |lhs|'s data and |rhs|'s data are not byte-wise equal.
-OPENSSL_EXPORT bool operator!=(const Input& lhs, const Input& rhs);
+OPENSSL_EXPORT bool operator!=(Input lhs, Input rhs);
// Returns true if |lhs|'s data is lexicographically less than |rhs|'s data.
-OPENSSL_EXPORT constexpr bool operator<(const Input& lhs,
- const Input& rhs) {
+OPENSSL_EXPORT constexpr bool operator<(Input lhs, Input rhs) {
// This is `std::lexicographical_compare`, but that's not `constexpr` until
// C++-20.
- auto* it1 = lhs.UnsafeData();
- auto* it2 = rhs.UnsafeData();
- const auto* end1 = lhs.UnsafeData() + lhs.Length();
- const auto* end2 = rhs.UnsafeData() + rhs.Length();
+ auto *it1 = lhs.data();
+ auto *it2 = rhs.data();
+ const auto *end1 = lhs.data() + lhs.size();
+ const auto *end2 = rhs.data() + rhs.size();
for (; it1 != end1 && it2 != end2; ++it1, ++it2) {
if (*it1 < *it2) {
return true;
@@ -121,20 +144,20 @@ OPENSSL_EXPORT constexpr bool operator<(const Input& lhs,
class OPENSSL_EXPORT ByteReader {
public:
// Creates a ByteReader to read the data represented by an Input.
- explicit ByteReader(const Input& in);
+ explicit ByteReader(Input in);
// Reads a single byte from the input source, putting the byte read in
// |*byte_p|. If a byte cannot be read from the input (because there is
// no input left), then this method returns false.
- [[nodiscard]] bool ReadByte(uint8_t* out);
+ [[nodiscard]] bool ReadByte(uint8_t *out);
// Reads |len| bytes from the input source, and initializes an Input to
// point to that data. If there aren't enough bytes left in the input source,
// then this method returns false.
- [[nodiscard]] bool ReadBytes(size_t len, Input* out);
+ [[nodiscard]] bool ReadBytes(size_t len, Input *out);
// Returns how many bytes are left to read.
- size_t BytesLeft() const { return len_; }
+ size_t BytesLeft() const { return data_.size(); }
// Returns whether there is any more data to be read.
bool HasMore();
@@ -142,8 +165,7 @@ class OPENSSL_EXPORT ByteReader {
private:
void Advance(size_t len);
- const uint8_t* data_;
- size_t len_;
+ bssl::Span<const uint8_t> data_;
};
} // namespace bssl::der
diff --git a/src/pki/input_unittest.cc b/src/pki/input_unittest.cc
index 6c3f757..655a808 100644
--- a/src/pki/input_unittest.cc
+++ b/src/pki/input_unittest.cc
@@ -41,14 +41,14 @@ TEST(InputTest, LessThan) {
TEST(InputTest, AsString) {
Input input(kInput);
- std::string expected_string(reinterpret_cast<const char*>(kInput),
+ std::string expected_string(reinterpret_cast<const char *>(kInput),
std::size(kInput));
EXPECT_EQ(expected_string, input.AsString());
}
TEST(InputTest, StaticArray) {
Input input(kInput);
- EXPECT_EQ(std::size(kInput), input.Length());
+ EXPECT_EQ(std::size(kInput), input.size());
Input input2(kInput);
EXPECT_EQ(input, input2);
@@ -56,17 +56,17 @@ TEST(InputTest, StaticArray) {
TEST(InputTest, ConstExpr) {
constexpr Input default_input;
- static_assert(default_input.Length() == 0);
- static_assert(default_input.UnsafeData() == nullptr);
+ static_assert(default_input.size() == 0);
+ static_assert(default_input.data() == nullptr);
constexpr Input const_array_input(kInput);
- static_assert(const_array_input.Length() == 4);
- static_assert(const_array_input.UnsafeData() == kInput);
+ static_assert(const_array_input.size() == 4);
+ static_assert(const_array_input.data() == kInput);
static_assert(default_input < const_array_input);
constexpr Input ptr_len_input(kInput, 2);
- static_assert(ptr_len_input.Length() == 2);
- static_assert(ptr_len_input.UnsafeData() == kInput);
+ static_assert(ptr_len_input.size() == 2);
+ static_assert(ptr_len_input.data() == kInput);
static_assert(ptr_len_input < const_array_input);
Input runtime_input(kInput2, 2);
diff --git a/src/pki/ip_util.cc b/src/pki/ip_util.cc
index 75b77ca..663669e 100644
--- a/src/pki/ip_util.cc
+++ b/src/pki/ip_util.cc
@@ -7,11 +7,11 @@
namespace bssl {
bool IsValidNetmask(der::Input mask) {
- if (mask.Length() != kIPv4AddressSize && mask.Length() != kIPv6AddressSize) {
+ if (mask.size() != kIPv4AddressSize && mask.size() != kIPv6AddressSize) {
return false;
}
- for (size_t i = 0; i < mask.Length(); i++) {
+ for (size_t i = 0; i < mask.size(); i++) {
uint8_t b = mask[i];
if (b != 0xff) {
// b must be all ones followed by all zeros, so ~b must be all zeros
@@ -21,7 +21,7 @@ bool IsValidNetmask(der::Input mask) {
return false;
}
// The remaining bytes must be all zeros.
- for (size_t j = i + 1; j < mask.Length(); j++) {
+ for (size_t j = i + 1; j < mask.size(); j++) {
if (mask[j] != 0) {
return false;
}
@@ -33,13 +33,12 @@ bool IsValidNetmask(der::Input mask) {
return true;
}
-bool IPAddressMatchesWithNetmask(der::Input addr1,
- der::Input addr2,
+bool IPAddressMatchesWithNetmask(der::Input addr1, der::Input addr2,
der::Input mask) {
- if (addr1.Length() != addr2.Length() || addr1.Length() != mask.Length()) {
+ if (addr1.size() != addr2.size() || addr1.size() != mask.size()) {
return false;
}
- for (size_t i = 0; i < addr1.Length(); i++) {
+ for (size_t i = 0; i < addr1.size(); i++) {
if ((addr1[i] & mask[i]) != (addr2[i] & mask[i])) {
return false;
}
@@ -47,4 +46,4 @@ bool IPAddressMatchesWithNetmask(der::Input addr1,
return true;
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/ip_util.h b/src/pki/ip_util.h
index e78b9e6..3bcc7df 100644
--- a/src/pki/ip_util.h
+++ b/src/pki/ip_util.h
@@ -5,7 +5,7 @@
#ifndef BSSL_PKI_IP_UTIL_H_
#define BSSL_PKI_IP_UTIL_H_
-#include "fillins/openssl_util.h"
+#include <openssl/base.h>
#include "input.h"
@@ -21,9 +21,9 @@ OPENSSL_EXPORT bool IsValidNetmask(der::Input mask);
// Returns whether `addr1` and `addr2` are equal under the netmask `mask`.
OPENSSL_EXPORT bool IPAddressMatchesWithNetmask(der::Input addr1,
- der::Input addr2,
- der::Input mask);
+ der::Input addr2,
+ der::Input mask);
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_IP_UTIL_H_
diff --git a/src/pki/ip_util_unittest.cc b/src/pki/ip_util_unittest.cc
index 8ec7452..268a924 100644
--- a/src/pki/ip_util_unittest.cc
+++ b/src/pki/ip_util_unittest.cc
@@ -6,8 +6,8 @@
#include <string.h>
-#include "input.h"
#include <gtest/gtest.h>
+#include "input.h"
namespace bssl {
@@ -104,4 +104,4 @@ TEST(IPUtilTest, IPAddressMatchesWithNetmask) {
}
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/mock_signature_verify_cache.cc b/src/pki/mock_signature_verify_cache.cc
index 786fd44..d99f690 100644
--- a/src/pki/mock_signature_verify_cache.cc
+++ b/src/pki/mock_signature_verify_cache.cc
@@ -12,14 +12,14 @@ MockSignatureVerifyCache::MockSignatureVerifyCache() = default;
MockSignatureVerifyCache::~MockSignatureVerifyCache() = default;
-void MockSignatureVerifyCache::Store(const std::string& key,
+void MockSignatureVerifyCache::Store(const std::string &key,
SignatureVerifyCache::Value value) {
cache_.insert_or_assign(key, value);
stores_++;
}
SignatureVerifyCache::Value MockSignatureVerifyCache::Check(
- const std::string& key) {
+ const std::string &key) {
auto iter = cache_.find(key);
if (iter == cache_.end()) {
misses_++;
@@ -29,4 +29,4 @@ SignatureVerifyCache::Value MockSignatureVerifyCache::Check(
return iter->second;
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/mock_signature_verify_cache.h b/src/pki/mock_signature_verify_cache.h
index ed7f1b1..f380f61 100644
--- a/src/pki/mock_signature_verify_cache.h
+++ b/src/pki/mock_signature_verify_cache.h
@@ -11,8 +11,7 @@
#include <string_view>
#include <unordered_map>
-
-#include "signature_verify_cache.h"
+#include <openssl/pki/signature_verify_cache.h>
namespace bssl {
@@ -25,10 +24,10 @@ class MockSignatureVerifyCache : public SignatureVerifyCache {
~MockSignatureVerifyCache() override;
- void Store(const std::string& key,
+ void Store(const std::string &key,
SignatureVerifyCache::Value value) override;
- SignatureVerifyCache::Value Check(const std::string& key) override;
+ SignatureVerifyCache::Value Check(const std::string &key) override;
size_t CacheHits() { return hits_; }
@@ -43,6 +42,6 @@ class MockSignatureVerifyCache : public SignatureVerifyCache {
size_t stores_ = 0;
};
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_MOCK_PATH_BUILDER_DELEGATE_H_
diff --git a/src/pki/name_constraints.cc b/src/pki/name_constraints.cc
index aa03a96..1ce9a8f 100644
--- a/src/pki/name_constraints.cc
+++ b/src/pki/name_constraints.cc
@@ -7,18 +7,19 @@
#include <limits.h>
#include <memory>
+#include <optional>
+
+#include <openssl/base.h>
+#include <openssl/bytestring.h>
#include "cert_errors.h"
#include "common_cert_errors.h"
#include "general_names.h"
+#include "input.h"
#include "ip_util.h"
+#include "parser.h"
#include "string_util.h"
#include "verify_name_match.h"
-#include "input.h"
-#include "parser.h"
-#include "tag.h"
-#include <optional>
-#include <openssl/base.h>
namespace bssl {
@@ -53,18 +54,20 @@ enum WildcardMatchType { WILDCARD_PARTIAL_MATCH, WILDCARD_FULL_MATCH };
// |wildcard_matching| controls handling of wildcard names (|name| starts with
// "*."). Wildcard handling is not specified by RFC 5280, but certificate
// verification allows it, name constraints must check it similarly.
-bool DNSNameMatches(std::string_view name,
- std::string_view dns_constraint,
+bool DNSNameMatches(std::string_view name, std::string_view dns_constraint,
WildcardMatchType wildcard_matching) {
// Everything matches the empty DNS name constraint.
- if (dns_constraint.empty())
+ if (dns_constraint.empty()) {
return true;
+ }
// Normalize absolute DNS names by removing the trailing dot, if any.
- if (!name.empty() && *name.rbegin() == '.')
+ if (!name.empty() && *name.rbegin() == '.') {
name.remove_suffix(1);
- if (!dns_constraint.empty() && *dns_constraint.rbegin() == '.')
+ }
+ if (!dns_constraint.empty() && *dns_constraint.rbegin() == '.') {
dns_constraint.remove_suffix(1);
+ }
// Wildcard partial-match handling ("*.bar.com" matching name constraint
// "foo.bar.com"). This only handles the case where the the dnsname and the
@@ -79,7 +82,7 @@ bool DNSNameMatches(std::string_view name,
dns_constraint.substr(dns_constraint_dot_pos + 1);
std::string_view wildcard_domain = name.substr(2);
if (bssl::string_util::IsEqualNoCase(wildcard_domain,
- dns_constraint_domain)) {
+ dns_constraint_domain)) {
return true;
}
}
@@ -90,13 +93,15 @@ bool DNSNameMatches(std::string_view name,
}
// Exact match.
- if (name.size() == dns_constraint.size())
+ if (name.size() == dns_constraint.size()) {
return true;
+ }
// If dNSName constraint starts with a dot, only subdomains should match.
// (e.g., "foo.bar.com" matches constraint ".bar.com", but "bar.com" doesn't.)
// RFC 5280 is ambiguous, but this matches the behavior of other platforms.
- if (!dns_constraint.empty() && dns_constraint[0] == '.')
+ if (!dns_constraint.empty() && dns_constraint[0] == '.') {
dns_constraint.remove_prefix(1);
+ }
// Subtree match.
if (name.size() > dns_constraint.size() &&
name[name.size() - dns_constraint.size() - 1] == '.') {
@@ -113,9 +118,9 @@ bool DNSNameMatches(std::string_view name,
// NOTE: |subtrees| is not pre-initialized by the function(it is expected to be
// a default initialized object), and it will be modified regardless of the
// return value.
-[[nodiscard]] bool ParseGeneralSubtrees(const der::Input& value,
- GeneralNames* subtrees,
- CertErrors* errors) {
+[[nodiscard]] bool ParseGeneralSubtrees(der::Input value,
+ GeneralNames *subtrees,
+ CertErrors *errors) {
BSSL_CHECK(errors);
// GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
@@ -128,16 +133,19 @@ bool DNSNameMatches(std::string_view name,
// BaseDistance ::= INTEGER (0..MAX)
der::Parser sequence_parser(value);
// The GeneralSubtrees sequence should have at least 1 element.
- if (!sequence_parser.HasMore())
+ if (!sequence_parser.HasMore()) {
return false;
+ }
while (sequence_parser.HasMore()) {
der::Parser subtree_sequence;
- if (!sequence_parser.ReadSequence(&subtree_sequence))
+ if (!sequence_parser.ReadSequence(&subtree_sequence)) {
return false;
+ }
der::Input raw_general_name;
- if (!subtree_sequence.ReadRawTLV(&raw_general_name))
+ if (!subtree_sequence.ReadRawTLV(&raw_general_name)) {
return false;
+ }
if (!ParseGeneralName(raw_general_name,
GeneralNames::IP_ADDRESS_AND_NETMASK, subtrees,
@@ -158,8 +166,9 @@ bool DNSNameMatches(std::string_view name,
// fail if a name of this type actually appears in a subsequent cert and
// this extension was marked critical. However the minimum and maximum
// fields appear uncommon enough that implementing that isn't useful.
- if (subtree_sequence.HasMore())
+ if (subtree_sequence.HasMore()) {
return false;
+ }
}
return true;
}
@@ -206,8 +215,7 @@ bool IsAllowedRfc822Domain(std::string_view domain) {
}
enum class Rfc822NameMatchType { kPermitted, kExcluded };
-bool Rfc822NameMatches(std::string_view local_part,
- std::string_view domain,
+bool Rfc822NameMatches(std::string_view local_part, std::string_view domain,
std::string_view rfc822_constraint,
Rfc822NameMatchType match_type,
bool case_insensitive_local_part) {
@@ -271,20 +279,29 @@ NameConstraints::~NameConstraints() = default;
// static
std::unique_ptr<NameConstraints> NameConstraints::Create(
- const der::Input& extension_value,
- bool is_critical,
- CertErrors* errors) {
+ der::Input extension_value, bool is_critical, CertErrors *errors) {
BSSL_CHECK(errors);
auto name_constraints = std::make_unique<NameConstraints>();
- if (!name_constraints->Parse(extension_value, is_critical, errors))
+ if (!name_constraints->Parse(extension_value, is_critical, errors)) {
return nullptr;
+ }
return name_constraints;
}
-bool NameConstraints::Parse(const der::Input& extension_value,
- bool is_critical,
- CertErrors* errors) {
+std::unique_ptr<NameConstraints> NameConstraints::CreateFromPermittedSubtrees(
+ GeneralNames permitted_subtrees) {
+ auto name_constraints = std::make_unique<NameConstraints>();
+
+ name_constraints->constrained_name_types_ =
+ permitted_subtrees.present_name_types;
+ name_constraints->permitted_subtrees_ = std::move(permitted_subtrees);
+
+ return name_constraints;
+}
+
+bool NameConstraints::Parse(der::Input extension_value, bool is_critical,
+ CertErrors *errors) {
BSSL_CHECK(errors);
der::Parser extension_parser(extension_value);
@@ -293,14 +310,17 @@ bool NameConstraints::Parse(const der::Input& extension_value,
// NameConstraints ::= SEQUENCE {
// permittedSubtrees [0] GeneralSubtrees OPTIONAL,
// excludedSubtrees [1] GeneralSubtrees OPTIONAL }
- if (!extension_parser.ReadSequence(&sequence_parser))
+ if (!extension_parser.ReadSequence(&sequence_parser)) {
return false;
- if (extension_parser.HasMore())
+ }
+ if (extension_parser.HasMore()) {
return false;
+ }
std::optional<der::Input> permitted_subtrees_value;
- if (!sequence_parser.ReadOptionalTag(der::ContextSpecificConstructed(0),
- &permitted_subtrees_value)) {
+ if (!sequence_parser.ReadOptionalTag(
+ CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 0,
+ &permitted_subtrees_value)) {
return false;
}
if (permitted_subtrees_value &&
@@ -313,8 +333,9 @@ bool NameConstraints::Parse(const der::Input& extension_value,
(is_critical ? GENERAL_NAME_ALL_TYPES : kSupportedNameTypes);
std::optional<der::Input> excluded_subtrees_value;
- if (!sequence_parser.ReadOptionalTag(der::ContextSpecificConstructed(1),
- &excluded_subtrees_value)) {
+ if (!sequence_parser.ReadOptionalTag(
+ CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 1,
+ &excluded_subtrees_value)) {
return false;
}
if (excluded_subtrees_value &&
@@ -330,18 +351,20 @@ bool NameConstraints::Parse(const der::Input& extension_value,
// Conforming CAs MUST NOT issue certificates where name constraints is an
// empty sequence. That is, either the permittedSubtrees field or the
// excludedSubtrees MUST be present.
- if (!permitted_subtrees_value && !excluded_subtrees_value)
+ if (!permitted_subtrees_value && !excluded_subtrees_value) {
return false;
+ }
- if (sequence_parser.HasMore())
+ if (sequence_parser.HasMore()) {
return false;
+ }
return true;
}
-void NameConstraints::IsPermittedCert(const der::Input& subject_rdn_sequence,
- const GeneralNames* subject_alt_names,
- CertErrors* errors) const {
+void NameConstraints::IsPermittedCert(der::Input subject_rdn_sequence,
+ const GeneralNames *subject_alt_names,
+ CertErrors *errors) const {
// Checking NameConstraints is O(number_of_names * number_of_constraints).
// Impose a hard limit to mitigate the use of name constraints as a DoS
// mechanism. This mimics the similar check in BoringSSL x509/v_ncons.c
@@ -372,7 +395,7 @@ void NameConstraints::IsPermittedCert(const der::Input& subject_rdn_sequence,
} else {
constraint_count += excluded_subtrees_.directory_names.size() +
permitted_subtrees_.directory_names.size();
- name_count = subject_rdn_sequence.Length();
+ name_count = subject_rdn_sequence.size();
}
// Upper bound the number of possible checks, checking for overflow.
size_t check_count = constraint_count * name_count;
@@ -426,7 +449,7 @@ void NameConstraints::IsPermittedCert(const der::Input& subject_rdn_sequence,
// might fail if there are email addresses we don't know how to parse but
// are technically correct.
if (constrained_name_types() & GENERAL_NAME_RFC822_NAME) {
- for (const auto& rfc822_name : subject_alt_names->rfc822_names) {
+ for (const auto &rfc822_name : subject_alt_names->rfc822_names) {
if (!IsPermittedRfc822Name(
rfc822_name, /*case_insensitive_exclude_localpart=*/false)) {
errors->AddError(cert_errors::kNotPermittedByNameConstraints);
@@ -435,21 +458,21 @@ void NameConstraints::IsPermittedCert(const der::Input& subject_rdn_sequence,
}
}
- for (const auto& dns_name : subject_alt_names->dns_names) {
+ for (const auto &dns_name : subject_alt_names->dns_names) {
if (!IsPermittedDNSName(dns_name)) {
errors->AddError(cert_errors::kNotPermittedByNameConstraints);
return;
}
}
- for (const auto& directory_name : subject_alt_names->directory_names) {
+ for (const auto &directory_name : subject_alt_names->directory_names) {
if (!IsPermittedDirectoryName(directory_name)) {
errors->AddError(cert_errors::kNotPermittedByNameConstraints);
return;
}
}
- for (const auto& ip_address : subject_alt_names->ip_addresses) {
+ for (const auto &ip_address : subject_alt_names->ip_addresses) {
if (!IsPermittedIP(ip_address)) {
errors->AddError(cert_errors::kNotPermittedByNameConstraints);
return;
@@ -466,7 +489,7 @@ void NameConstraints::IsPermittedCert(const der::Input& subject_rdn_sequence,
// form, but the certificate does not include a subject alternative name, the
// rfc822Name constraint MUST be applied to the attribute of type emailAddress
// in the subject distinguished name.
- for (const auto& rfc822_name : subject_email_addresses_to_check) {
+ for (const auto &rfc822_name : subject_email_addresses_to_check) {
// Whether local_part should be matched case-sensitive or not is somewhat
// unclear. RFC 2821 says that it should be case-sensitive. RFC 2985 says
// that emailAddress attributes in a Name are fully case-insensitive.
@@ -493,8 +516,9 @@ void NameConstraints::IsPermittedCert(const der::Input& subject_rdn_sequence,
// This code assumes that criticality condition is checked by the caller, and
// therefore only needs to avoid the IsPermittedDirectoryName check against an
// empty subject in such a case.
- if (subject_alt_names && subject_rdn_sequence.Length() == 0)
+ if (subject_alt_names && subject_rdn_sequence.empty()) {
return;
+ }
if (!IsPermittedDirectoryName(subject_rdn_sequence)) {
errors->AddError(cert_errors::kNotPermittedByNameConstraints);
@@ -503,8 +527,7 @@ void NameConstraints::IsPermittedCert(const der::Input& subject_rdn_sequence,
}
bool NameConstraints::IsPermittedRfc822Name(
- std::string_view name,
- bool case_insensitive_exclude_localpart) const {
+ std::string_view name, bool case_insensitive_exclude_localpart) const {
// RFC 5280 4.2.1.6. Subject Alternative Name
//
// When the subjectAltName extension contains an Internet mail address,
@@ -584,7 +607,7 @@ bool NameConstraints::IsPermittedRfc822Name(
return false;
}
- for (const auto& excluded_name : excluded_subtrees_.rfc822_names) {
+ for (const auto &excluded_name : excluded_subtrees_.rfc822_names) {
if (Rfc822NameMatches(name_components[0], name_components[1], excluded_name,
Rfc822NameMatchType::kExcluded,
case_insensitive_exclude_localpart)) {
@@ -598,7 +621,7 @@ bool NameConstraints::IsPermittedRfc822Name(
return true;
}
- for (const auto& permitted_name : permitted_subtrees_.rfc822_names) {
+ for (const auto &permitted_name : permitted_subtrees_.rfc822_names) {
if (Rfc822NameMatches(name_components[0], name_components[1],
permitted_name, Rfc822NameMatchType::kPermitted,
/*case_insenitive_local_part=*/false)) {
@@ -610,52 +633,58 @@ bool NameConstraints::IsPermittedRfc822Name(
}
bool NameConstraints::IsPermittedDNSName(std::string_view name) const {
- for (const auto& excluded_name : excluded_subtrees_.dns_names) {
+ for (const auto &excluded_name : excluded_subtrees_.dns_names) {
// When matching wildcard hosts against excluded subtrees, consider it a
// match if the constraint would match any expansion of the wildcard. Eg,
// *.bar.com should match a constraint of foo.bar.com.
- if (DNSNameMatches(name, excluded_name, WILDCARD_PARTIAL_MATCH))
+ if (DNSNameMatches(name, excluded_name, WILDCARD_PARTIAL_MATCH)) {
return false;
+ }
}
// If permitted subtrees are not constrained, any name that is not excluded is
// allowed.
- if (!(permitted_subtrees_.present_name_types & GENERAL_NAME_DNS_NAME))
+ if (!(permitted_subtrees_.present_name_types & GENERAL_NAME_DNS_NAME)) {
return true;
+ }
- for (const auto& permitted_name : permitted_subtrees_.dns_names) {
+ for (const auto &permitted_name : permitted_subtrees_.dns_names) {
// When matching wildcard hosts against permitted subtrees, consider it a
// match only if the constraint would match all expansions of the wildcard.
// Eg, *.bar.com should match a constraint of bar.com, but not foo.bar.com.
- if (DNSNameMatches(name, permitted_name, WILDCARD_FULL_MATCH))
+ if (DNSNameMatches(name, permitted_name, WILDCARD_FULL_MATCH)) {
return true;
+ }
}
return false;
}
bool NameConstraints::IsPermittedDirectoryName(
- const der::Input& name_rdn_sequence) const {
- for (const auto& excluded_name : excluded_subtrees_.directory_names) {
- if (VerifyNameInSubtree(name_rdn_sequence, excluded_name))
+ der::Input name_rdn_sequence) const {
+ for (const auto &excluded_name : excluded_subtrees_.directory_names) {
+ if (VerifyNameInSubtree(name_rdn_sequence, excluded_name)) {
return false;
+ }
}
// If permitted subtrees are not constrained, any name that is not excluded is
// allowed.
- if (!(permitted_subtrees_.present_name_types & GENERAL_NAME_DIRECTORY_NAME))
+ if (!(permitted_subtrees_.present_name_types & GENERAL_NAME_DIRECTORY_NAME)) {
return true;
+ }
- for (const auto& permitted_name : permitted_subtrees_.directory_names) {
- if (VerifyNameInSubtree(name_rdn_sequence, permitted_name))
+ for (const auto &permitted_name : permitted_subtrees_.directory_names) {
+ if (VerifyNameInSubtree(name_rdn_sequence, permitted_name)) {
return true;
+ }
}
return false;
}
-bool NameConstraints::IsPermittedIP(const der::Input& ip) const {
- for (const auto& excluded_ip : excluded_subtrees_.ip_address_ranges) {
+bool NameConstraints::IsPermittedIP(der::Input ip) const {
+ for (const auto &excluded_ip : excluded_subtrees_.ip_address_ranges) {
if (IPAddressMatchesWithNetmask(ip, excluded_ip.first,
excluded_ip.second)) {
return false;
@@ -668,7 +697,7 @@ bool NameConstraints::IsPermittedIP(const der::Input& ip) const {
return true;
}
- for (const auto& permitted_ip : permitted_subtrees_.ip_address_ranges) {
+ for (const auto &permitted_ip : permitted_subtrees_.ip_address_ranges) {
if (IPAddressMatchesWithNetmask(ip, permitted_ip.first,
permitted_ip.second)) {
return true;
@@ -678,4 +707,4 @@ bool NameConstraints::IsPermittedIP(const der::Input& ip) const {
return false;
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/name_constraints.h b/src/pki/name_constraints.h
index 6bf780c..a025985 100644
--- a/src/pki/name_constraints.h
+++ b/src/pki/name_constraints.h
@@ -5,9 +5,9 @@
#ifndef BSSL_PKI_NAME_CONSTRAINTS_H_
#define BSSL_PKI_NAME_CONSTRAINTS_H_
-#include "fillins/openssl_util.h"
#include <memory>
+#include <openssl/base.h>
#include "general_names.h"
@@ -31,10 +31,14 @@ class OPENSSL_EXPORT NameConstraints {
// marked critical. Returns nullptr if parsing the the extension failed.
// The object may reference data from |extension_value|, so is only valid as
// long as |extension_value| is.
- static std::unique_ptr<NameConstraints> Create(
- const der::Input& extension_value,
- bool is_critical,
- CertErrors* errors);
+ static std::unique_ptr<NameConstraints> Create(der::Input extension_value,
+ bool is_critical,
+ CertErrors *errors);
+
+ // Create a NameConstraints object with only permitted names from the passed
+ // in |permitted_subtrees|. Should never return nullptr.
+ static std::unique_ptr<NameConstraints> CreateFromPermittedSubtrees(
+ GeneralNames permitted_subtrees);
// Tests if a certificate is allowed by the name constraints.
// |subject_rdn_sequence| should be the DER-encoded value of the subject's
@@ -44,9 +48,9 @@ class OPENSSL_EXPORT NameConstraints {
// If the certificate is not allowed, an error will be added to |errors|.
// Note that this method does not check hostname or IP address in commonName,
// which is deprecated (crbug.com/308330).
- void IsPermittedCert(const der::Input& subject_rdn_sequence,
- const GeneralNames* subject_alt_names,
- CertErrors* errors) const;
+ void IsPermittedCert(der::Input subject_rdn_sequence,
+ const GeneralNames *subject_alt_names,
+ CertErrors *errors) const;
// Returns true if the ASCII email address |name| is permitted. |name| should
// be a "mailbox" as specified by RFC 2821, with the additional restriction
@@ -64,10 +68,10 @@ class OPENSSL_EXPORT NameConstraints {
// Returns true if the directoryName |name_rdn_sequence| is permitted.
// |name_rdn_sequence| should be the DER-encoded RDNSequence value (not
// including the Sequence tag.)
- bool IsPermittedDirectoryName(const der::Input& name_rdn_sequence) const;
+ bool IsPermittedDirectoryName(der::Input name_rdn_sequence) const;
// Returns true if the iPAddress |ip| is permitted.
- bool IsPermittedIP(const der::Input& ip) const;
+ bool IsPermittedIP(der::Input ip) const;
// Returns a bitfield of GeneralNameTypes of all the types constrained by this
// NameConstraints. Name types that aren't supported will only be present if
@@ -85,19 +89,18 @@ class OPENSSL_EXPORT NameConstraints {
// either process the constraint or reject the certificate.
int constrained_name_types() const { return constrained_name_types_; }
- const GeneralNames& permitted_subtrees() const { return permitted_subtrees_; }
- const GeneralNames& excluded_subtrees() const { return excluded_subtrees_; }
+ const GeneralNames &permitted_subtrees() const { return permitted_subtrees_; }
+ const GeneralNames &excluded_subtrees() const { return excluded_subtrees_; }
private:
- [[nodiscard]] bool Parse(const der::Input& extension_value,
- bool is_critical,
- CertErrors* errors);
+ [[nodiscard]] bool Parse(der::Input extension_value, bool is_critical,
+ CertErrors *errors);
GeneralNames permitted_subtrees_;
GeneralNames excluded_subtrees_;
int constrained_name_types_ = GENERAL_NAME_NONE;
};
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_NAME_CONSTRAINTS_H_
diff --git a/src/pki/name_constraints_unittest.cc b/src/pki/name_constraints_unittest.cc
index 5de90e5..a715062 100644
--- a/src/pki/name_constraints_unittest.cc
+++ b/src/pki/name_constraints_unittest.cc
@@ -7,16 +7,16 @@
#include <array>
#include <memory>
+#include <gtest/gtest.h>
#include "common_cert_errors.h"
#include "test_helpers.h"
-#include <gtest/gtest.h>
namespace bssl {
namespace {
-::testing::AssertionResult LoadTestData(const char* token,
- const std::string& basename,
- std::string* result) {
+::testing::AssertionResult LoadTestData(const char *token,
+ const std::string &basename,
+ std::string *result) {
std::string path = "testdata/name_constraints_unittest/" + basename;
const PemBlockMapping mappings[] = {
@@ -26,26 +26,24 @@ namespace {
return ReadTestDataFromPemFile(path, mappings);
}
-::testing::AssertionResult LoadTestName(const std::string& basename,
- std::string* result) {
+::testing::AssertionResult LoadTestName(const std::string &basename,
+ std::string *result) {
return LoadTestData("NAME", basename, result);
}
-::testing::AssertionResult LoadTestNameConstraint(const std::string& basename,
- std::string* result) {
+::testing::AssertionResult LoadTestNameConstraint(const std::string &basename,
+ std::string *result) {
return LoadTestData("NAME CONSTRAINTS", basename, result);
}
::testing::AssertionResult LoadTestSubjectAltNameData(
- const std::string& basename,
- std::string* result) {
+ const std::string &basename, std::string *result) {
return LoadTestData("SUBJECT ALTERNATIVE NAME", basename, result);
}
::testing::AssertionResult LoadTestSubjectAltName(
- const std::string& basename,
- std::unique_ptr<GeneralNames>* result,
- std::string* result_der) {
+ const std::string &basename, std::unique_ptr<GeneralNames> *result,
+ std::string *result_der) {
::testing::AssertionResult load_result =
LoadTestSubjectAltNameData(basename, result_der);
if (!load_result) {
@@ -60,40 +58,29 @@ namespace {
}
::testing::AssertionResult IsPermittedCert(
- const NameConstraints* name_constraints,
- const der::Input& subject_rdn_sequence,
- const GeneralNames* subject_alt_names) {
+ const NameConstraints *name_constraints, der::Input subject_rdn_sequence,
+ const GeneralNames *subject_alt_names) {
CertErrors errors;
name_constraints->IsPermittedCert(subject_rdn_sequence, subject_alt_names,
&errors);
- if (!errors.ContainsAnyErrorWithSeverity(CertError::SEVERITY_HIGH))
+ if (!errors.ContainsAnyErrorWithSeverity(CertError::SEVERITY_HIGH)) {
return ::testing::AssertionSuccess();
- if (!errors.ContainsError(cert_errors::kNotPermittedByNameConstraints))
+ }
+ if (!errors.ContainsError(cert_errors::kNotPermittedByNameConstraints)) {
ADD_FAILURE() << "unexpected error " << errors.ToDebugString();
+ }
return ::testing::AssertionFailure();
}
-std::array<uint8_t, 4> IPAddress(uint8_t b0,
- uint8_t b1,
- uint8_t b2,
+std::array<uint8_t, 4> IPAddress(uint8_t b0, uint8_t b1, uint8_t b2,
uint8_t b3) {
return {b0, b1, b2, b3};
}
-std::array<uint8_t, 16> IPAddress(uint8_t b0,
- uint8_t b1,
- uint8_t b2,
- uint8_t b3,
- uint8_t b4,
- uint8_t b5,
- uint8_t b6,
- uint8_t b7,
- uint8_t b8,
- uint8_t b9,
- uint8_t b10,
- uint8_t b11,
- uint8_t b12,
- uint8_t b13,
- uint8_t b14,
+std::array<uint8_t, 16> IPAddress(uint8_t b0, uint8_t b1, uint8_t b2,
+ uint8_t b3, uint8_t b4, uint8_t b5,
+ uint8_t b6, uint8_t b7, uint8_t b8,
+ uint8_t b9, uint8_t b10, uint8_t b11,
+ uint8_t b12, uint8_t b13, uint8_t b14,
uint8_t b15) {
return {b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15};
}
@@ -108,8 +95,7 @@ class ParseNameConstraints
// Run the tests with the name constraints marked critical and non-critical. For
// supported name types, the results should be the same for both.
-INSTANTIATE_TEST_SUITE_P(InstantiationName,
- ParseNameConstraints,
+INSTANTIATE_TEST_SUITE_P(InstantiationName, ParseNameConstraints,
::testing::Values(true, false));
TEST_P(ParseNameConstraints, DNSNames) {
@@ -1915,4 +1901,4 @@ TEST_P(ParseNameConstraints, IsPermittedCertSubjectIpAddresses) {
nullptr /* subject_alt_names */));
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/nist_pkits_unittest.cc b/src/pki/nist_pkits_unittest.cc
index d062de8..309cb64 100644
--- a/src/pki/nist_pkits_unittest.cc
+++ b/src/pki/nist_pkits_unittest.cc
@@ -28,8 +28,8 @@ const uint8_t kTestPolicy3[] = {0x60, 0x86, 0x48, 0x01, 0x65,
const uint8_t kTestPolicy6[] = {0x60, 0x86, 0x48, 0x01, 0x65,
0x03, 0x02, 0x01, 0x30, 0x06};
-void SetPolicySetFromString(const char* const policy_names,
- std::set<der::Input>* out) {
+void SetPolicySetFromString(const char *const policy_names,
+ std::set<der::Input> *out) {
out->clear();
std::istringstream stream(policy_names);
for (std::string line; std::getline(stream, line, ',');) {
@@ -69,7 +69,7 @@ PkitsTestInfo::PkitsTestInfo() {
SetUserConstrainedPolicySet("NIST-test-policy-1");
}
-PkitsTestInfo::PkitsTestInfo(const PkitsTestInfo& other) = default;
+PkitsTestInfo::PkitsTestInfo(const PkitsTestInfo &other) = default;
PkitsTestInfo::~PkitsTestInfo() = default;
@@ -88,13 +88,13 @@ void PkitsTestInfo::SetInitialInhibitAnyPolicy(bool b) {
b ? InitialAnyPolicyInhibit::kTrue : InitialAnyPolicyInhibit::kFalse;
}
-void PkitsTestInfo::SetInitialPolicySet(const char* const policy_names) {
+void PkitsTestInfo::SetInitialPolicySet(const char *const policy_names) {
SetPolicySetFromString(policy_names, &initial_policy_set);
}
void PkitsTestInfo::SetUserConstrainedPolicySet(
- const char* const policy_names) {
+ const char *const policy_names) {
SetPolicySetFromString(policy_names, &user_constrained_policy_set);
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/nist_pkits_unittest.h b/src/pki/nist_pkits_unittest.h
index 279fb29..5f9219c 100644
--- a/src/pki/nist_pkits_unittest.h
+++ b/src/pki/nist_pkits_unittest.h
@@ -7,9 +7,9 @@
#include <set>
-#include "test_helpers.h"
-#include "parse_values.h"
#include <gtest/gtest.h>
+#include "parse_values.h"
+#include "test_helpers.h"
namespace bssl {
@@ -18,7 +18,7 @@ namespace bssl {
struct PkitsTestInfo {
// Default construction results in the "default settings".
PkitsTestInfo();
- PkitsTestInfo(const PkitsTestInfo& other);
+ PkitsTestInfo(const PkitsTestInfo &other);
~PkitsTestInfo();
// Sets |initial_policy_set| to the specified policies. The
@@ -26,14 +26,14 @@ struct PkitsTestInfo {
// "anyPolicy" and "NIST-test-policy-1".
//
// If this isn't called, the default is "anyPolicy".
- void SetInitialPolicySet(const char* const policy_names);
+ void SetInitialPolicySet(const char *const policy_names);
// Sets |user_constrained_policy_set| to the specified policies. The
// policies are described as comma-separated symbolic strings like
// "anyPolicy" and "NIST-test-policy-1".
//
// If this isn't called, the default is "NIST-test-policy-1".
- void SetUserConstrainedPolicySet(const char* const policy_names);
+ void SetUserConstrainedPolicySet(const char *const policy_names);
void SetInitialExplicitPolicy(bool b);
void SetInitialPolicyMappingInhibit(bool b);
@@ -44,7 +44,7 @@ struct PkitsTestInfo {
// ----------------
// The PKITS test number. For example, "4.1.1".
- const char* test_number = nullptr;
+ const char *test_number = nullptr;
// ----------------
// Inputs
@@ -85,9 +85,9 @@ template <typename PkitsTestDelegate>
class PkitsTest : public ::testing::Test {
public:
template <size_t num_certs, size_t num_crls>
- void RunTest(const char* const (&cert_names)[num_certs],
- const char* const (&crl_names)[num_crls],
- const PkitsTestInfo& info) {
+ void RunTest(const char *const (&cert_names)[num_certs],
+ const char *const (&crl_names)[num_crls],
+ const PkitsTestInfo &info) {
std::vector<std::string> cert_ders;
for (const std::string s : cert_names) {
cert_ders.push_back(bssl::ReadTestFileToString(
@@ -95,8 +95,8 @@ class PkitsTest : public ::testing::Test {
}
std::vector<std::string> crl_ders;
for (const std::string s : crl_names) {
- crl_ders.push_back(bssl::ReadTestFileToString(
- "testdata/nist-pkits/crls/" + s + ".crl"));
+ crl_ders.push_back(
+ bssl::ReadTestFileToString("testdata/nist-pkits/crls/" + s + ".crl"));
}
std::string_view test_number = info.test_number;
@@ -144,6 +144,6 @@ class PkitsTest : public ::testing::Test {
// Inline the generated test code:
#include "testdata/nist-pkits/pkits_testcases-inl.h"
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_NIST_PKITS_UNITTEST_H_
diff --git a/src/pki/ocsp.cc b/src/pki/ocsp.cc
index 5ccf2e2..03d6c21 100644
--- a/src/pki/ocsp.cc
+++ b/src/pki/ocsp.cc
@@ -4,6 +4,11 @@
#include "ocsp.h"
+#include <openssl/bytestring.h>
+#include <openssl/digest.h>
+#include <openssl/mem.h>
+#include <openssl/pool.h>
+#include <openssl/sha.h>
#include "cert_errors.h"
#include "extended_key_usage.h"
#include "parsed_certificate.h"
@@ -11,11 +16,6 @@
#include "string_util.h"
#include "verify_name_match.h"
#include "verify_signed_data.h"
-#include <openssl/bytestring.h>
-#include <openssl/digest.h>
-#include <openssl/mem.h>
-#include <openssl/pool.h>
-#include <openssl/sha.h>
namespace bssl {
@@ -37,28 +37,37 @@ OCSPResponse::~OCSPResponse() = default;
// issuerKeyHash OCTET STRING, -- Hash of issuer's public key
// serialNumber CertificateSerialNumber
// }
-bool ParseOCSPCertID(const der::Input& raw_tlv, OCSPCertID* out) {
+bool ParseOCSPCertID(der::Input raw_tlv, OCSPCertID *out) {
der::Parser outer_parser(raw_tlv);
der::Parser parser;
- if (!outer_parser.ReadSequence(&parser))
+ if (!outer_parser.ReadSequence(&parser)) {
return false;
- if (outer_parser.HasMore())
+ }
+ if (outer_parser.HasMore()) {
return false;
+ }
der::Input sigalg_tlv;
- if (!parser.ReadRawTLV(&sigalg_tlv))
+ if (!parser.ReadRawTLV(&sigalg_tlv)) {
return false;
- if (!ParseHashAlgorithm(sigalg_tlv, &(out->hash_algorithm)))
+ }
+ if (!ParseHashAlgorithm(sigalg_tlv, &out->hash_algorithm)) {
return false;
- if (!parser.ReadTag(der::kOctetString, &(out->issuer_name_hash)))
+ }
+ if (!parser.ReadTag(CBS_ASN1_OCTETSTRING, &out->issuer_name_hash)) {
return false;
- if (!parser.ReadTag(der::kOctetString, &(out->issuer_key_hash)))
+ }
+ if (!parser.ReadTag(CBS_ASN1_OCTETSTRING, &out->issuer_key_hash)) {
return false;
- if (!parser.ReadTag(der::kInteger, &(out->serial_number)))
+ }
+ if (!parser.ReadTag(CBS_ASN1_INTEGER, &out->serial_number)) {
return false;
+ }
CertErrors errors;
- if (!VerifySerialNumber(out->serial_number, false /*warnings_only*/, &errors))
+ if (!VerifySerialNumber(out->serial_number, false /*warnings_only*/,
+ &errors)) {
return false;
+ }
return !parser.HasMore();
}
@@ -73,34 +82,40 @@ namespace {
// revocationTime GeneralizedTime,
// revocationReason [0] EXPLICIT CRLReason OPTIONAL
// }
-bool ParseRevokedInfo(const der::Input& raw_tlv, OCSPCertStatus* out) {
+bool ParseRevokedInfo(der::Input raw_tlv, OCSPCertStatus *out) {
der::Parser parser(raw_tlv);
- if (!parser.ReadGeneralizedTime(&(out->revocation_time)))
+ if (!parser.ReadGeneralizedTime(&(out->revocation_time))) {
return false;
+ }
der::Input reason_input;
- if (!parser.ReadOptionalTag(der::ContextSpecificConstructed(0), &reason_input,
- &(out->has_reason))) {
+ if (!parser.ReadOptionalTag(
+ CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 0, &reason_input,
+ &(out->has_reason))) {
return false;
}
if (out->has_reason) {
der::Parser reason_parser(reason_input);
der::Input reason_value_input;
uint8_t reason_value;
- if (!reason_parser.ReadTag(der::kEnumerated, &reason_value_input))
+ if (!reason_parser.ReadTag(CBS_ASN1_ENUMERATED, &reason_value_input)) {
return false;
- if (!der::ParseUint8(reason_value_input, &reason_value))
+ }
+ if (!der::ParseUint8(reason_value_input, &reason_value)) {
return false;
+ }
if (reason_value >
static_cast<uint8_t>(OCSPCertStatus::RevocationReason::LAST)) {
return false;
}
out->revocation_reason =
static_cast<OCSPCertStatus::RevocationReason>(reason_value);
- if (out->revocation_reason == OCSPCertStatus::RevocationReason::UNUSED)
+ if (out->revocation_reason == OCSPCertStatus::RevocationReason::UNUSED) {
return false;
- if (reason_parser.HasMore())
+ }
+ if (reason_parser.HasMore()) {
return false;
+ }
}
return !parser.HasMore();
}
@@ -116,21 +131,24 @@ bool ParseRevokedInfo(const der::Input& raw_tlv, OCSPCertStatus* out) {
// }
//
// UnknownInfo ::= NULL
-bool ParseCertStatus(const der::Input& raw_tlv, OCSPCertStatus* out) {
+bool ParseCertStatus(der::Input raw_tlv, OCSPCertStatus *out) {
der::Parser parser(raw_tlv);
- der::Tag status_tag;
+ CBS_ASN1_TAG status_tag;
der::Input status;
- if (!parser.ReadTagAndValue(&status_tag, &status))
+ if (!parser.ReadTagAndValue(&status_tag, &status)) {
return false;
+ }
out->has_reason = false;
- if (status_tag == der::ContextSpecificPrimitive(0)) {
+ if (status_tag == (CBS_ASN1_CONTEXT_SPECIFIC | 0)) {
out->status = OCSPRevocationStatus::GOOD;
- } else if (status_tag == der::ContextSpecificConstructed(1)) {
+ } else if (status_tag ==
+ (CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 1)) {
out->status = OCSPRevocationStatus::REVOKED;
- if (!ParseRevokedInfo(status, out))
+ if (!ParseRevokedInfo(status, out)) {
return false;
- } else if (status_tag == der::ContextSpecificPrimitive(2)) {
+ }
+ } else if (status_tag == (CBS_ASN1_CONTEXT_SPECIFIC | 2)) {
out->status = OCSPRevocationStatus::UNKNOWN;
} else {
return false;
@@ -141,15 +159,14 @@ bool ParseCertStatus(const der::Input& raw_tlv, OCSPCertStatus* out) {
// Writes the hash of |value| as an OCTET STRING to |cbb|, using |hash_type| as
// the algorithm. Returns true on success.
-bool AppendHashAsOctetString(const EVP_MD* hash_type,
- CBB* cbb,
- const der::Input& value) {
+bool AppendHashAsOctetString(const EVP_MD *hash_type, CBB *cbb,
+ der::Input value) {
CBB octet_string;
unsigned hash_len;
uint8_t hash_buffer[EVP_MAX_MD_SIZE];
return CBB_add_asn1(cbb, &octet_string, CBS_ASN1_OCTETSTRING) &&
- EVP_Digest(value.UnsafeData(), value.Length(), hash_buffer, &hash_len,
+ EVP_Digest(value.data(), value.size(), hash_buffer, &hash_len,
hash_type, nullptr) &&
CBB_add_bytes(&octet_string, hash_buffer, hash_len) && CBB_flush(cbb);
}
@@ -163,40 +180,49 @@ bool AppendHashAsOctetString(const EVP_MD* hash_type,
// nextUpdate [0] EXPLICIT GeneralizedTime OPTIONAL,
// singleExtensions [1] EXPLICIT Extensions OPTIONAL
// }
-bool ParseOCSPSingleResponse(const der::Input& raw_tlv,
- OCSPSingleResponse* out) {
+bool ParseOCSPSingleResponse(der::Input raw_tlv, OCSPSingleResponse *out) {
der::Parser outer_parser(raw_tlv);
der::Parser parser;
- if (!outer_parser.ReadSequence(&parser))
+ if (!outer_parser.ReadSequence(&parser)) {
return false;
- if (outer_parser.HasMore())
+ }
+ if (outer_parser.HasMore()) {
return false;
+ }
- if (!parser.ReadRawTLV(&(out->cert_id_tlv)))
+ if (!parser.ReadRawTLV(&(out->cert_id_tlv))) {
return false;
+ }
der::Input status_tlv;
- if (!parser.ReadRawTLV(&status_tlv))
+ if (!parser.ReadRawTLV(&status_tlv)) {
return false;
- if (!ParseCertStatus(status_tlv, &(out->cert_status)))
+ }
+ if (!ParseCertStatus(status_tlv, &(out->cert_status))) {
return false;
- if (!parser.ReadGeneralizedTime(&(out->this_update)))
+ }
+ if (!parser.ReadGeneralizedTime(&(out->this_update))) {
return false;
+ }
der::Input next_update_input;
- if (!parser.ReadOptionalTag(der::ContextSpecificConstructed(0),
- &next_update_input, &(out->has_next_update))) {
+ if (!parser.ReadOptionalTag(
+ CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 0,
+ &next_update_input, &(out->has_next_update))) {
return false;
}
if (out->has_next_update) {
der::Parser next_update_parser(next_update_input);
- if (!next_update_parser.ReadGeneralizedTime(&(out->next_update)))
+ if (!next_update_parser.ReadGeneralizedTime(&(out->next_update))) {
return false;
- if (next_update_parser.HasMore())
+ }
+ if (next_update_parser.HasMore()) {
return false;
+ }
}
- if (!parser.ReadOptionalTag(der::ContextSpecificConstructed(1),
- &(out->extensions), &(out->has_extensions))) {
+ if (!parser.ReadOptionalTag(
+ CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 1,
+ &(out->extensions), &(out->has_extensions))) {
return false;
}
@@ -212,26 +238,29 @@ namespace {
// byName [1] Name,
// byKey [2] KeyHash
// }
-bool ParseResponderID(const der::Input& raw_tlv,
- OCSPResponseData::ResponderID* out) {
+bool ParseResponderID(der::Input raw_tlv, OCSPResponseData::ResponderID *out) {
der::Parser parser(raw_tlv);
- der::Tag id_tag;
+ CBS_ASN1_TAG id_tag;
der::Input id_input;
- if (!parser.ReadTagAndValue(&id_tag, &id_input))
+ if (!parser.ReadTagAndValue(&id_tag, &id_input)) {
return false;
+ }
- if (id_tag == der::ContextSpecificConstructed(1)) {
+ if (id_tag == (CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 1)) {
out->type = OCSPResponseData::ResponderType::NAME;
out->name = id_input;
- } else if (id_tag == der::ContextSpecificConstructed(2)) {
+ } else if (id_tag == (CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 2)) {
der::Parser key_parser(id_input);
der::Input key_hash;
- if (!key_parser.ReadTag(der::kOctetString, &key_hash))
+ if (!key_parser.ReadTag(CBS_ASN1_OCTETSTRING, &key_hash)) {
return false;
- if (key_parser.HasMore())
+ }
+ if (key_parser.HasMore()) {
return false;
- if (key_hash.Length() != SHA_DIGEST_LENGTH)
+ }
+ if (key_hash.size() != SHA_DIGEST_LENGTH) {
return false;
+ }
out->type = OCSPResponseData::ResponderType::KEY_HASH;
out->key_hash = key_hash;
@@ -250,18 +279,21 @@ bool ParseResponderID(const der::Input& raw_tlv,
// responses SEQUENCE OF SingleResponse,
// responseExtensions [1] EXPLICIT Extensions OPTIONAL
// }
-bool ParseOCSPResponseData(const der::Input& raw_tlv, OCSPResponseData* out) {
+bool ParseOCSPResponseData(der::Input raw_tlv, OCSPResponseData *out) {
der::Parser outer_parser(raw_tlv);
der::Parser parser;
- if (!outer_parser.ReadSequence(&parser))
+ if (!outer_parser.ReadSequence(&parser)) {
return false;
- if (outer_parser.HasMore())
+ }
+ if (outer_parser.HasMore()) {
return false;
+ }
der::Input version_input;
bool version_present;
- if (!parser.ReadOptionalTag(der::ContextSpecificConstructed(0),
- &version_input, &version_present)) {
+ if (!parser.ReadOptionalTag(
+ CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 0, &version_input,
+ &version_present)) {
return false;
}
@@ -270,38 +302,47 @@ bool ParseOCSPResponseData(const der::Input& raw_tlv, OCSPResponseData* out) {
// TODO: Add warning about non-strict parsing.
if (version_present) {
der::Parser version_parser(version_input);
- if (!version_parser.ReadUint8(&(out->version)))
+ if (!version_parser.ReadUint8(&(out->version))) {
return false;
- if (version_parser.HasMore())
+ }
+ if (version_parser.HasMore()) {
return false;
+ }
} else {
out->version = 0;
}
- if (out->version != 0)
+ if (out->version != 0) {
return false;
+ }
der::Input responder_input;
- if (!parser.ReadRawTLV(&responder_input))
+ if (!parser.ReadRawTLV(&responder_input)) {
return false;
- if (!ParseResponderID(responder_input, &(out->responder_id)))
+ }
+ if (!ParseResponderID(responder_input, &(out->responder_id))) {
return false;
- if (!parser.ReadGeneralizedTime(&(out->produced_at)))
+ }
+ if (!parser.ReadGeneralizedTime(&(out->produced_at))) {
return false;
+ }
der::Parser responses_parser;
- if (!parser.ReadSequence(&responses_parser))
+ if (!parser.ReadSequence(&responses_parser)) {
return false;
+ }
out->responses.clear();
while (responses_parser.HasMore()) {
der::Input single_response;
- if (!responses_parser.ReadRawTLV(&single_response))
+ if (!responses_parser.ReadRawTLV(&single_response)) {
return false;
+ }
out->responses.push_back(single_response);
}
- if (!parser.ReadOptionalTag(der::ContextSpecificConstructed(1),
- &(out->extensions), &(out->has_extensions))) {
+ if (!parser.ReadOptionalTag(
+ CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 1,
+ &(out->extensions), &(out->has_extensions))) {
return false;
}
@@ -320,32 +361,39 @@ namespace {
// signature BIT STRING,
// certs [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL
// }
-bool ParseBasicOCSPResponse(const der::Input& raw_tlv, OCSPResponse* out) {
+bool ParseBasicOCSPResponse(der::Input raw_tlv, OCSPResponse *out) {
der::Parser outer_parser(raw_tlv);
der::Parser parser;
- if (!outer_parser.ReadSequence(&parser))
+ if (!outer_parser.ReadSequence(&parser)) {
return false;
- if (outer_parser.HasMore())
+ }
+ if (outer_parser.HasMore()) {
return false;
+ }
- if (!parser.ReadRawTLV(&(out->data)))
+ if (!parser.ReadRawTLV(&(out->data))) {
return false;
+ }
der::Input sigalg_tlv;
- if (!parser.ReadRawTLV(&sigalg_tlv))
+ if (!parser.ReadRawTLV(&sigalg_tlv)) {
return false;
+ }
// TODO(crbug.com/634443): Propagate the errors.
std::optional<SignatureAlgorithm> sigalg =
ParseSignatureAlgorithm(sigalg_tlv);
- if (!sigalg)
+ if (!sigalg) {
return false;
+ }
out->signature_algorithm = sigalg.value();
std::optional<der::BitString> signature = parser.ReadBitString();
- if (!signature)
+ if (!signature) {
return false;
+ }
out->signature = signature.value();
der::Input certs_input;
- if (!parser.ReadOptionalTag(der::ContextSpecificConstructed(0), &certs_input,
- &(out->has_certs))) {
+ if (!parser.ReadOptionalTag(
+ CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 0, &certs_input,
+ &(out->has_certs))) {
return false;
}
@@ -353,14 +401,17 @@ bool ParseBasicOCSPResponse(const der::Input& raw_tlv, OCSPResponse* out) {
if (out->has_certs) {
der::Parser certs_seq_parser(certs_input);
der::Parser certs_parser;
- if (!certs_seq_parser.ReadSequence(&certs_parser))
+ if (!certs_seq_parser.ReadSequence(&certs_parser)) {
return false;
- if (certs_seq_parser.HasMore())
+ }
+ if (certs_seq_parser.HasMore()) {
return false;
+ }
while (certs_parser.HasMore()) {
der::Input cert_tlv;
- if (!certs_parser.ReadRawTLV(&cert_tlv))
+ if (!certs_parser.ReadRawTLV(&cert_tlv)) {
return false;
+ }
out->certs.push_back(cert_tlv);
}
}
@@ -379,55 +430,68 @@ bool ParseBasicOCSPResponse(const der::Input& raw_tlv, OCSPResponse* out) {
// responseType OBJECT IDENTIFIER,
// response OCTET STRING
// }
-bool ParseOCSPResponse(const der::Input& raw_tlv, OCSPResponse* out) {
+bool ParseOCSPResponse(der::Input raw_tlv, OCSPResponse *out) {
der::Parser outer_parser(raw_tlv);
der::Parser parser;
- if (!outer_parser.ReadSequence(&parser))
+ if (!outer_parser.ReadSequence(&parser)) {
return false;
- if (outer_parser.HasMore())
+ }
+ if (outer_parser.HasMore()) {
return false;
+ }
der::Input response_status_input;
uint8_t response_status;
- if (!parser.ReadTag(der::kEnumerated, &response_status_input))
+ if (!parser.ReadTag(CBS_ASN1_ENUMERATED, &response_status_input)) {
return false;
- if (!der::ParseUint8(response_status_input, &response_status))
+ }
+ if (!der::ParseUint8(response_status_input, &response_status)) {
return false;
+ }
if (response_status >
static_cast<uint8_t>(OCSPResponse::ResponseStatus::LAST)) {
return false;
}
out->status = static_cast<OCSPResponse::ResponseStatus>(response_status);
- if (out->status == OCSPResponse::ResponseStatus::UNUSED)
+ if (out->status == OCSPResponse::ResponseStatus::UNUSED) {
return false;
+ }
if (out->status == OCSPResponse::ResponseStatus::SUCCESSFUL) {
der::Parser outer_bytes_parser;
der::Parser bytes_parser;
- if (!parser.ReadConstructed(der::ContextSpecificConstructed(0),
- &outer_bytes_parser)) {
+ if (!parser.ReadConstructed(
+ CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 0,
+ &outer_bytes_parser)) {
return false;
}
- if (!outer_bytes_parser.ReadSequence(&bytes_parser))
+ if (!outer_bytes_parser.ReadSequence(&bytes_parser)) {
return false;
- if (outer_bytes_parser.HasMore())
+ }
+ if (outer_bytes_parser.HasMore()) {
return false;
+ }
der::Input type_oid;
- if (!bytes_parser.ReadTag(der::kOid, &type_oid))
+ if (!bytes_parser.ReadTag(CBS_ASN1_OBJECT, &type_oid)) {
return false;
- if (type_oid != der::Input(kBasicOCSPResponseOid))
+ }
+ if (type_oid != der::Input(kBasicOCSPResponseOid)) {
return false;
+ }
// As per RFC 6960 Section 4.2.1, the value of |response| SHALL be the DER
// encoding of BasicOCSPResponse.
der::Input response;
- if (!bytes_parser.ReadTag(der::kOctetString, &response))
+ if (!bytes_parser.ReadTag(CBS_ASN1_OCTETSTRING, &response)) {
return false;
- if (!ParseBasicOCSPResponse(response, out))
+ }
+ if (!ParseBasicOCSPResponse(response, out)) {
return false;
- if (bytes_parser.HasMore())
+ }
+ if (bytes_parser.HasMore()) {
return false;
+ }
}
return !parser.HasMore();
@@ -436,13 +500,11 @@ bool ParseOCSPResponse(const der::Input& raw_tlv, OCSPResponse* out) {
namespace {
// Checks that the |type| hash of |value| is equal to |hash|
-bool VerifyHash(const EVP_MD* type,
- const der::Input& hash,
- const der::Input& value) {
+bool VerifyHash(const EVP_MD *type, der::Input hash, der::Input value) {
unsigned value_hash_len;
uint8_t value_hash[EVP_MAX_MD_SIZE];
- if (!EVP_Digest(value.UnsafeData(), value.Length(), value_hash,
- &value_hash_len, type, nullptr)) {
+ if (!EVP_Digest(value.data(), value.size(), value_hash, &value_hash_len, type,
+ nullptr)) {
return false;
}
@@ -464,10 +526,10 @@ bool VerifyHash(const EVP_MD* type,
// algorithm OBJECT IDENTIFIER,
// parameters ANY DEFINED BY algorithm OPTIONAL }
//
-bool GetSubjectPublicKeyBytes(const der::Input& spki_tlv, der::Input* spk_tlv) {
+bool GetSubjectPublicKeyBytes(der::Input spki_tlv, der::Input *spk_tlv) {
CBS outer, inner, alg, spk;
uint8_t unused_bit_count;
- CBS_init(&outer, spki_tlv.UnsafeData(), spki_tlv.Length());
+ CBS_init(&outer, spki_tlv.data(), spki_tlv.size());
// The subjectPublicKey field includes the unused bit count. For this
// application, the unused bit count must be zero, and is not included in
// the result. We extract the subjectPubicKey bit string, verify the first
@@ -484,10 +546,9 @@ bool GetSubjectPublicKeyBytes(const der::Input& spki_tlv, der::Input* spk_tlv) {
// Checks the OCSPCertID |id| identifies |certificate|.
bool CheckCertIDMatchesCertificate(
- const OCSPCertID& id,
- const ParsedCertificate* certificate,
- const ParsedCertificate* issuer_certificate) {
- const EVP_MD* type = nullptr;
+ const OCSPCertID &id, const ParsedCertificate *certificate,
+ const ParsedCertificate *issuer_certificate) {
+ const EVP_MD *type = nullptr;
switch (id.hash_algorithm) {
case DigestAlgorithm::Md2:
case DigestAlgorithm::Md4:
@@ -508,15 +569,18 @@ bool CheckCertIDMatchesCertificate(
break;
}
- if (!VerifyHash(type, id.issuer_name_hash, certificate->tbs().issuer_tlv))
+ if (!VerifyHash(type, id.issuer_name_hash, certificate->tbs().issuer_tlv)) {
return false;
+ }
der::Input key_tlv;
- if (!GetSubjectPublicKeyBytes(issuer_certificate->tbs().spki_tlv, &key_tlv))
+ if (!GetSubjectPublicKeyBytes(issuer_certificate->tbs().spki_tlv, &key_tlv)) {
return false;
+ }
- if (!VerifyHash(type, id.issuer_key_hash, key_tlv))
+ if (!VerifyHash(type, id.issuer_key_hash, key_tlv)) {
return false;
+ }
return id.serial_number == certificate->tbs().serial_number;
}
@@ -538,7 +602,7 @@ std::shared_ptr<const ParsedCertificate> OCSPParseCertificate(
CertErrors errors;
return ParsedCertificate::Create(
bssl::UniquePtr<CRYPTO_BUFFER>(CRYPTO_BUFFER_new(
- reinterpret_cast<const uint8_t*>(der.data()), der.size(), nullptr)),
+ reinterpret_cast<const uint8_t *>(der.data()), der.size(), nullptr)),
{}, &errors);
}
@@ -546,22 +610,23 @@ std::shared_ptr<const ParsedCertificate> OCSPParseCertificate(
// by verifying the name matches that of the certificate or that the hash
// matches the certificate's public key hash (RFC 6960, 4.2.2.3).
[[nodiscard]] bool CheckResponderIDMatchesCertificate(
- const OCSPResponseData::ResponderID& id,
- const ParsedCertificate* cert) {
+ const OCSPResponseData::ResponderID &id, const ParsedCertificate *cert) {
switch (id.type) {
case OCSPResponseData::ResponderType::NAME: {
der::Input name_rdn;
der::Input cert_rdn;
- if (!der::Parser(id.name).ReadTag(der::kSequence, &name_rdn) ||
+ if (!der::Parser(id.name).ReadTag(CBS_ASN1_SEQUENCE, &name_rdn) ||
!der::Parser(cert->tbs().subject_tlv)
- .ReadTag(der::kSequence, &cert_rdn))
+ .ReadTag(CBS_ASN1_SEQUENCE, &cert_rdn)) {
return false;
+ }
return VerifyNameMatch(name_rdn, cert_rdn);
}
case OCSPResponseData::ResponderType::KEY_HASH: {
der::Input key;
- if (!GetSubjectPublicKeyBytes(cert->tbs().spki_tlv, &key))
+ if (!GetSubjectPublicKeyBytes(cert->tbs().spki_tlv, &key)) {
return false;
+ }
return VerifyHash(EVP_sha1(), id.key_hash, key);
}
}
@@ -579,8 +644,8 @@ std::shared_ptr<const ParsedCertificate> OCSPParseCertificate(
// signature and EKU. Can full RFC 5280 validation be used, or are there
// compatibility concerns?
[[nodiscard]] bool VerifyAuthorizedResponderCert(
- const ParsedCertificate* responder_certificate,
- const ParsedCertificate* issuer_certificate) {
+ const ParsedCertificate *responder_certificate,
+ const ParsedCertificate *issuer_certificate) {
// The Authorized Responder must be directly signed by the issuer of the
// certificate being checked.
// TODO(eroman): Must check the signature algorithm against policy.
@@ -595,20 +660,21 @@ std::shared_ptr<const ParsedCertificate> OCSPParseCertificate(
// The Authorized Responder must include the value id-kp-OCSPSigning as
// part of the extended key usage extension.
- if (!responder_certificate->has_extended_key_usage())
+ if (!responder_certificate->has_extended_key_usage()) {
return false;
+ }
- for (const auto& key_purpose_oid :
+ for (const auto &key_purpose_oid :
responder_certificate->extended_key_usage()) {
- if (key_purpose_oid == der::Input(kOCSPSigning))
+ if (key_purpose_oid == der::Input(kOCSPSigning)) {
return true;
+ }
}
return false;
}
[[nodiscard]] bool VerifyOCSPResponseSignatureGivenCert(
- const OCSPResponse& response,
- const ParsedCertificate* cert) {
+ const OCSPResponse &response, const ParsedCertificate *cert) {
// TODO(eroman): Must check the signature algorithm against policy.
return VerifySignedData(response.signature_algorithm, response.data,
response.signature, cert->tbs().spki_tlv,
@@ -619,9 +685,8 @@ std::shared_ptr<const ParsedCertificate> OCSPParseCertificate(
// |issuer_certificate|, or an authorized responder issued by
// |issuer_certificate| for OCSP signing.
[[nodiscard]] bool VerifyOCSPResponseSignature(
- const OCSPResponse& response,
- const OCSPResponseData& response_data,
- const ParsedCertificate* issuer_certificate) {
+ const OCSPResponse &response, const OCSPResponseData &response_data,
+ const ParsedCertificate *issuer_certificate) {
// In order to verify the OCSP signature, a valid responder matching the OCSP
// Responder ID must be located (RFC 6960, 4.2.2.2). The responder is allowed
// to be either the certificate issuer or a delegated authority directly
@@ -637,13 +702,14 @@ std::shared_ptr<const ParsedCertificate> OCSPParseCertificate(
// (1) Matches the OCSP Responder ID.
// (2) Has been given authority for OCSP signing by |issuer_certificate|.
// (3) Has signed the OCSP response using its public key.
- for (const auto& responder_cert_tlv : response.certs) {
+ for (const auto &responder_cert_tlv : response.certs) {
std::shared_ptr<const ParsedCertificate> cur_responder_certificate =
- OCSPParseCertificate(responder_cert_tlv.AsStringView());
+ OCSPParseCertificate(BytesAsStringView(responder_cert_tlv));
// If failed parsing the certificate, keep looking.
- if (!cur_responder_certificate)
+ if (!cur_responder_certificate) {
continue;
+ }
// If the certificate doesn't match the OCSP's responder ID, keep looking.
if (!CheckResponderIDMatchesCertificate(response_data.responder_id,
@@ -674,15 +740,15 @@ std::shared_ptr<const ParsedCertificate> OCSPParseCertificate(
// Parse ResponseData and return false if any unhandled critical extensions are
// found. No known critical ResponseData extensions exist.
bool ParseOCSPResponseDataExtensions(
- const der::Input& response_extensions,
- OCSPVerifyResult::ResponseStatus* response_details) {
+ der::Input response_extensions,
+ OCSPVerifyResult::ResponseStatus *response_details) {
std::map<der::Input, ParsedExtension> extensions;
if (!ParseExtensions(response_extensions, &extensions)) {
*response_details = OCSPVerifyResult::PARSE_RESPONSE_DATA_ERROR;
return false;
}
- for (const auto& ext : extensions) {
+ for (const auto &ext : extensions) {
// TODO: handle ResponseData extensions
if (ext.second.critical) {
@@ -699,8 +765,8 @@ bool ParseOCSPResponseDataExtensions(
// to be marked critical, but since it is handled by Chrome, we will overlook
// the flag setting.
bool ParseOCSPSingleResponseExtensions(
- const der::Input& single_extensions,
- OCSPVerifyResult::ResponseStatus* response_details) {
+ der::Input single_extensions,
+ OCSPVerifyResult::ResponseStatus *response_details) {
std::map<der::Input, ParsedExtension> extensions;
if (!ParseExtensions(single_extensions, &extensions)) {
*response_details = OCSPVerifyResult::PARSE_RESPONSE_DATA_ERROR;
@@ -714,10 +780,11 @@ bool ParseOCSPSingleResponseExtensions(
0xD6, 0x79, 0x02, 0x04, 0x05};
der::Input ct_ext_oid(ct_ocsp_ext_oid);
- for (const auto& ext : extensions) {
+ for (const auto &ext : extensions) {
// The CT OCSP extension is handled in ct::ExtractSCTListFromOCSPResponse
- if (ext.second.oid == ct_ext_oid)
+ if (ext.second.oid == ct_ext_oid) {
continue;
+ }
// TODO: handle SingleResponse extensions
@@ -732,16 +799,14 @@ bool ParseOCSPSingleResponseExtensions(
// Loops through the OCSPSingleResponses to find the best match for |cert|.
OCSPRevocationStatus GetRevocationStatusForCert(
- const OCSPResponseData& response_data,
- const ParsedCertificate* cert,
- const ParsedCertificate* issuer_certificate,
- int64_t verify_time_epoch_seconds,
- std::optional<int64_t> max_age_seconds,
- OCSPVerifyResult::ResponseStatus* response_details) {
+ const OCSPResponseData &response_data, const ParsedCertificate *cert,
+ const ParsedCertificate *issuer_certificate,
+ int64_t verify_time_epoch_seconds, std::optional<int64_t> max_age_seconds,
+ OCSPVerifyResult::ResponseStatus *response_details) {
OCSPRevocationStatus result = OCSPRevocationStatus::UNKNOWN;
*response_details = OCSPVerifyResult::NO_MATCHING_RESPONSE;
- for (const auto& single_response_der : response_data.responses) {
+ for (const auto &single_response_der : response_data.responses) {
// In the common case, there should only be one SingleResponse in the
// ResponseData (matching the certificate requested and used on this
// connection). However, it is possible for the OCSP responder to provide
@@ -750,8 +815,9 @@ OCSPRevocationStatus GetRevocationStatusForCert(
// certificate. A SingleResponse matches a certificate if it has the same
// serial number, issuer name (hash), and issuer public key (hash).
OCSPSingleResponse single_response;
- if (!ParseOCSPSingleResponse(single_response_der, &single_response))
+ if (!ParseOCSPSingleResponse(single_response_der, &single_response)) {
return OCSPRevocationStatus::UNKNOWN;
+ }
// Reject unhandled critical extensions in SingleResponse
if (single_response.has_extensions &&
@@ -761,10 +827,12 @@ OCSPRevocationStatus GetRevocationStatusForCert(
}
OCSPCertID cert_id;
- if (!ParseOCSPCertID(single_response.cert_id_tlv, &cert_id))
+ if (!ParseOCSPCertID(single_response.cert_id_tlv, &cert_id)) {
return OCSPRevocationStatus::UNKNOWN;
- if (!CheckCertIDMatchesCertificate(cert_id, cert, issuer_certificate))
+ }
+ if (!CheckCertIDMatchesCertificate(cert_id, cert, issuer_certificate)) {
continue;
+ }
// The SingleResponse matches the certificate, but may be out of date. Out
// of date responses are noted seperate from responses with mismatched
@@ -776,8 +844,9 @@ OCSPRevocationStatus GetRevocationStatusForCert(
? &single_response.next_update
: nullptr,
verify_time_epoch_seconds, max_age_seconds)) {
- if (*response_details != OCSPVerifyResult::PROVIDED)
+ if (*response_details != OCSPVerifyResult::PROVIDED) {
*response_details = OCSPVerifyResult::INVALID_DATE;
+ }
continue;
}
@@ -795,14 +864,12 @@ OCSPRevocationStatus GetRevocationStatusForCert(
}
OCSPRevocationStatus CheckOCSP(
- std::string_view raw_response,
- std::string_view certificate_der,
- const ParsedCertificate* certificate,
+ std::string_view raw_response, std::string_view certificate_der,
+ const ParsedCertificate *certificate,
std::string_view issuer_certificate_der,
- const ParsedCertificate* issuer_certificate,
- int64_t verify_time_epoch_seconds,
- std::optional<int64_t> max_age_seconds,
- OCSPVerifyResult::ResponseStatus* response_details) {
+ const ParsedCertificate *issuer_certificate,
+ int64_t verify_time_epoch_seconds, std::optional<int64_t> max_age_seconds,
+ OCSPVerifyResult::ResponseStatus *response_details) {
*response_details = OCSPVerifyResult::NOT_CHECKED;
if (raw_response.empty()) {
@@ -899,33 +966,29 @@ OCSPRevocationStatus CheckOCSP(
} // namespace
OCSPRevocationStatus CheckOCSP(
- std::string_view raw_response,
- std::string_view certificate_der,
- std::string_view issuer_certificate_der,
- int64_t verify_time_epoch_seconds,
+ std::string_view raw_response, std::string_view certificate_der,
+ std::string_view issuer_certificate_der, int64_t verify_time_epoch_seconds,
std::optional<int64_t> max_age_seconds,
- OCSPVerifyResult::ResponseStatus* response_details) {
+ OCSPVerifyResult::ResponseStatus *response_details) {
return CheckOCSP(raw_response, certificate_der, nullptr,
issuer_certificate_der, nullptr, verify_time_epoch_seconds,
max_age_seconds, response_details);
}
OCSPRevocationStatus CheckOCSP(
- std::string_view raw_response,
- const ParsedCertificate* certificate,
- const ParsedCertificate* issuer_certificate,
- int64_t verify_time_epoch_seconds,
- std::optional<int64_t> max_age_seconds,
- OCSPVerifyResult::ResponseStatus* response_details) {
+ std::string_view raw_response, const ParsedCertificate *certificate,
+ const ParsedCertificate *issuer_certificate,
+ int64_t verify_time_epoch_seconds, std::optional<int64_t> max_age_seconds,
+ OCSPVerifyResult::ResponseStatus *response_details) {
return CheckOCSP(raw_response, std::string_view(), certificate,
std::string_view(), issuer_certificate,
verify_time_epoch_seconds, max_age_seconds,
response_details);
}
-bool CreateOCSPRequest(const ParsedCertificate* cert,
- const ParsedCertificate* issuer,
- std::vector<uint8_t>* request_der) {
+bool CreateOCSPRequest(const ParsedCertificate *cert,
+ const ParsedCertificate *issuer,
+ std::vector<uint8_t> *request_der) {
request_der->clear();
bssl::ScopedCBB cbb;
@@ -935,8 +998,9 @@ bool CreateOCSPRequest(const ParsedCertificate* cert,
// number doesn't matter for correctness.
const size_t kInitialBufferSize = 100;
- if (!CBB_init(cbb.get(), kInitialBufferSize))
+ if (!CBB_init(cbb.get(), kInitialBufferSize)) {
return false;
+ }
// OCSPRequest ::= SEQUENCE {
// tbsRequest TBSRequest,
@@ -948,29 +1012,34 @@ bool CreateOCSPRequest(const ParsedCertificate* cert,
// requestList SEQUENCE OF Request,
// requestExtensions [2] EXPLICIT Extensions OPTIONAL }
CBB ocsp_request;
- if (!CBB_add_asn1(cbb.get(), &ocsp_request, CBS_ASN1_SEQUENCE))
+ if (!CBB_add_asn1(cbb.get(), &ocsp_request, CBS_ASN1_SEQUENCE)) {
return false;
+ }
CBB tbs_request;
- if (!CBB_add_asn1(&ocsp_request, &tbs_request, CBS_ASN1_SEQUENCE))
+ if (!CBB_add_asn1(&ocsp_request, &tbs_request, CBS_ASN1_SEQUENCE)) {
return false;
+ }
// "version", "requestorName", and "requestExtensions" are omitted.
CBB request_list;
- if (!CBB_add_asn1(&tbs_request, &request_list, CBS_ASN1_SEQUENCE))
+ if (!CBB_add_asn1(&tbs_request, &request_list, CBS_ASN1_SEQUENCE)) {
return false;
+ }
CBB request;
- if (!CBB_add_asn1(&request_list, &request, CBS_ASN1_SEQUENCE))
+ if (!CBB_add_asn1(&request_list, &request, CBS_ASN1_SEQUENCE)) {
return false;
+ }
// Request ::= SEQUENCE {
// reqCert CertID,
// singleRequestExtensions [0] EXPLICIT Extensions OPTIONAL }
CBB req_cert;
- if (!CBB_add_asn1(&request, &req_cert, CBS_ASN1_SEQUENCE))
+ if (!CBB_add_asn1(&request, &req_cert, CBS_ASN1_SEQUENCE)) {
return false;
+ }
// CertID ::= SEQUENCE {
// hashAlgorithm AlgorithmIdentifier,
@@ -979,29 +1048,33 @@ bool CreateOCSPRequest(const ParsedCertificate* cert,
// serialNumber CertificateSerialNumber }
// TODO(eroman): Don't use SHA1.
- const EVP_MD* md = EVP_sha1();
- if (!EVP_marshal_digest_algorithm(&req_cert, md))
+ const EVP_MD *md = EVP_sha1();
+ if (!EVP_marshal_digest_algorithm(&req_cert, md)) {
return false;
+ }
AppendHashAsOctetString(md, &req_cert, issuer->tbs().subject_tlv);
der::Input key_tlv;
- if (!GetSubjectPublicKeyBytes(issuer->tbs().spki_tlv, &key_tlv))
+ if (!GetSubjectPublicKeyBytes(issuer->tbs().spki_tlv, &key_tlv)) {
return false;
+ }
AppendHashAsOctetString(md, &req_cert, key_tlv);
CBB serial_number;
- if (!CBB_add_asn1(&req_cert, &serial_number, CBS_ASN1_INTEGER))
+ if (!CBB_add_asn1(&req_cert, &serial_number, CBS_ASN1_INTEGER)) {
return false;
- if (!CBB_add_bytes(&serial_number, cert->tbs().serial_number.UnsafeData(),
- cert->tbs().serial_number.Length())) {
+ }
+ if (!CBB_add_bytes(&serial_number, cert->tbs().serial_number.data(),
+ cert->tbs().serial_number.size())) {
return false;
}
- uint8_t* result_bytes;
+ uint8_t *result_bytes;
size_t result_bytes_length;
- if (!CBB_finish(cbb.get(), &result_bytes, &result_bytes_length))
+ if (!CBB_finish(cbb.get(), &result_bytes, &result_bytes_length)) {
return false;
+ }
bssl::UniquePtr<uint8_t> delete_tbs_cert_bytes(result_bytes);
request_der->assign(result_bytes, result_bytes + result_bytes_length);
@@ -1015,8 +1088,7 @@ bool CreateOCSPRequest(const ParsedCertificate* cert,
// GET {url}/{url-encoding of base-64 encoding of the DER encoding of
// the OCSPRequest}
std::optional<std::string> CreateOCSPGetURL(
- const ParsedCertificate* cert,
- const ParsedCertificate* issuer,
+ const ParsedCertificate *cert, const ParsedCertificate *issuer,
std::string_view ocsp_responder_url) {
std::vector<uint8_t> ocsp_request_der;
if (!CreateOCSPRequest(cert, issuer, &ocsp_request_der)) {
@@ -1048,4 +1120,4 @@ std::optional<std::string> CreateOCSPGetURL(
return std::string(ocsp_responder_url) + "/" + b64_encoded;
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/ocsp.h b/src/pki/ocsp.h
index 69c41c8..5b076dc 100644
--- a/src/pki/ocsp.h
+++ b/src/pki/ocsp.h
@@ -5,19 +5,19 @@
#ifndef BSSL_PKI_OCSP_H_
#define BSSL_PKI_OCSP_H_
-#include "fillins/openssl_util.h"
#include <memory>
+#include <optional>
#include <string>
#include <vector>
+#include <openssl/base.h>
+#include "input.h"
#include "ocsp_revocation_status.h"
#include "ocsp_verify_result.h"
-#include "signature_algorithm.h"
-#include "input.h"
#include "parse_values.h"
#include "parser.h"
-#include <optional>
+#include "signature_algorithm.h"
namespace bssl {
@@ -230,8 +230,7 @@ inline constexpr uint8_t kBasicOCSPResponseOid[] = {
//
// On failure |out| has an undefined state. Some of its fields may have been
// updated during parsing, whereas others may not have been changed.
-OPENSSL_EXPORT bool ParseOCSPCertID(const der::Input& raw_tlv,
- OCSPCertID* out);
+OPENSSL_EXPORT bool ParseOCSPCertID(der::Input raw_tlv, OCSPCertID *out);
// Parses a DER-encoded OCSP "SingleResponse" as specified by RFC 6960. Returns
// true on success and sets the results in |out|. The resulting |out|
@@ -240,8 +239,8 @@ OPENSSL_EXPORT bool ParseOCSPCertID(const der::Input& raw_tlv,
//
// On failure |out| has an undefined state. Some of its fields may have been
// updated during parsing, whereas others may not have been changed.
-OPENSSL_EXPORT bool ParseOCSPSingleResponse(const der::Input& raw_tlv,
- OCSPSingleResponse* out);
+OPENSSL_EXPORT bool ParseOCSPSingleResponse(der::Input raw_tlv,
+ OCSPSingleResponse *out);
// Parses a DER-encoded OCSP "ResponseData" as specified by RFC 6960. Returns
// true on success and sets the results in |out|. The resulting |out|
@@ -250,8 +249,8 @@ OPENSSL_EXPORT bool ParseOCSPSingleResponse(const der::Input& raw_tlv,
//
// On failure |out| has an undefined state. Some of its fields may have been
// updated during parsing, whereas others may not have been changed.
-OPENSSL_EXPORT bool ParseOCSPResponseData(const der::Input& raw_tlv,
- OCSPResponseData* out);
+OPENSSL_EXPORT bool ParseOCSPResponseData(der::Input raw_tlv,
+ OCSPResponseData *out);
// Parses a DER-encoded "OCSPResponse" as specified by RFC 6960. Returns true
// on success and sets the results in |out|. The resulting |out|
@@ -260,8 +259,7 @@ OPENSSL_EXPORT bool ParseOCSPResponseData(const der::Input& raw_tlv,
//
// On failure |out| has an undefined state. Some of its fields may have been
// updated during parsing, whereas others may not have been changed.
-OPENSSL_EXPORT bool ParseOCSPResponse(const der::Input& raw_tlv,
- OCSPResponse* out);
+OPENSSL_EXPORT bool ParseOCSPResponse(der::Input raw_tlv, OCSPResponse *out);
// Checks the revocation status of the certificate |certificate_der| by using
// the DER-encoded |raw_response|.
@@ -279,26 +277,22 @@ OPENSSL_EXPORT bool ParseOCSPResponse(const der::Input& raw_tlv,
// time since the |thisUpdate| field in the CRL TBSCertList. Responses
// older than |max_age_seconds| will be considered invalid.
// * |response_details|: Additional details about failures.
-[[nodiscard]] OPENSSL_EXPORT OCSPRevocationStatus
-CheckOCSP(std::string_view raw_response,
- std::string_view certificate_der,
- std::string_view issuer_certificate_der,
- int64_t verify_time_epoch_seconds,
- std::optional<int64_t> max_age_seconds,
- OCSPVerifyResult::ResponseStatus* response_details);
+[[nodiscard]] OPENSSL_EXPORT OCSPRevocationStatus CheckOCSP(
+ std::string_view raw_response, std::string_view certificate_der,
+ std::string_view issuer_certificate_der, int64_t verify_time_epoch_seconds,
+ std::optional<int64_t> max_age_seconds,
+ OCSPVerifyResult::ResponseStatus *response_details);
// Checks the revocation status of |certificate| by using the DER-encoded
// |raw_response|.
//
// Arguments are the same as above, except that it takes already parsed
// instances of the certificate and issuer certificate.
-[[nodiscard]] OPENSSL_EXPORT OCSPRevocationStatus
-CheckOCSP(std::string_view raw_response,
- const ParsedCertificate* certificate,
- const ParsedCertificate* issuer_certificate,
- int64_t verify_time_epoch_seconds,
- std::optional<int64_t> max_age_seconds,
- OCSPVerifyResult::ResponseStatus* response_details);
+[[nodiscard]] OPENSSL_EXPORT OCSPRevocationStatus CheckOCSP(
+ std::string_view raw_response, const ParsedCertificate *certificate,
+ const ParsedCertificate *issuer_certificate,
+ int64_t verify_time_epoch_seconds, std::optional<int64_t> max_age_seconds,
+ OCSPVerifyResult::ResponseStatus *response_details);
// Creates a DER-encoded OCSPRequest for |cert|. The request is fairly basic:
// * No signature
@@ -307,16 +301,15 @@ CheckOCSP(std::string_view raw_response,
// * Uses SHA1 for all hashes.
//
// Returns true on success and fills |request_der| with the resulting bytes.
-OPENSSL_EXPORT bool CreateOCSPRequest(const ParsedCertificate* cert,
- const ParsedCertificate* issuer,
- std::vector<uint8_t>* request_der);
+OPENSSL_EXPORT bool CreateOCSPRequest(const ParsedCertificate *cert,
+ const ParsedCertificate *issuer,
+ std::vector<uint8_t> *request_der);
// Creates a URL to issue a GET request for OCSP information for |cert|.
OPENSSL_EXPORT std::optional<std::string> CreateOCSPGetURL(
- const ParsedCertificate* cert,
- const ParsedCertificate* issuer,
+ const ParsedCertificate *cert, const ParsedCertificate *issuer,
std::string_view ocsp_responder_url);
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_OCSP_H_
diff --git a/src/pki/ocsp_revocation_status.h b/src/pki/ocsp_revocation_status.h
index b4d30ca..2816aad 100644
--- a/src/pki/ocsp_revocation_status.h
+++ b/src/pki/ocsp_revocation_status.h
@@ -16,6 +16,6 @@ enum class OCSPRevocationStatus {
MAX_VALUE = UNKNOWN
};
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_OCSP_REVOCATION_STATUS_H_
diff --git a/src/pki/ocsp_unittest.cc b/src/pki/ocsp_unittest.cc
index 06a012b..98ae8dd 100644
--- a/src/pki/ocsp_unittest.cc
+++ b/src/pki/ocsp_unittest.cc
@@ -4,12 +4,12 @@
#include "ocsp.h"
-#include "string_util.h"
-#include "test_helpers.h"
-#include "encode_values.h"
#include <gtest/gtest.h>
#include <openssl/base64.h>
#include <openssl/pool.h>
+#include "encode_values.h"
+#include "string_util.h"
+#include "test_helpers.h"
namespace bssl {
@@ -17,7 +17,7 @@ namespace {
constexpr int64_t kOCSPAgeOneWeek = 7 * 24 * 60 * 60;
-std::string GetFilePath(const std::string& file_name) {
+std::string GetFilePath(const std::string &file_name) {
return std::string("testdata/ocsp_unittest/") + file_name;
}
@@ -25,13 +25,14 @@ std::shared_ptr<const ParsedCertificate> ParseCertificate(
std::string_view data) {
CertErrors errors;
return ParsedCertificate::Create(
- bssl::UniquePtr<CRYPTO_BUFFER>(CRYPTO_BUFFER_new(
- reinterpret_cast<const uint8_t*>(data.data()), data.size(), nullptr)),
+ bssl::UniquePtr<CRYPTO_BUFFER>(
+ CRYPTO_BUFFER_new(reinterpret_cast<const uint8_t *>(data.data()),
+ data.size(), nullptr)),
{}, &errors);
}
struct TestParams {
- const char* file_name;
+ const char *file_name;
OCSPRevocationStatus expected_revocation_status;
OCSPVerifyResult::ResponseStatus expected_response_status;
};
@@ -122,7 +123,7 @@ const TestParams kTestParams[] = {
// Parameterised test name generator for tests depending on RenderTextBackend.
struct PrintTestName {
- std::string operator()(const testing::TestParamInfo<TestParams>& info) const {
+ std::string operator()(const testing::TestParamInfo<TestParams> &info) const {
std::string_view name(info.param.file_name);
// Strip ".pem" from the end as GTest names cannot contain period.
name.remove_suffix(4);
@@ -130,13 +131,11 @@ struct PrintTestName {
}
};
-INSTANTIATE_TEST_SUITE_P(All,
- CheckOCSPTest,
- ::testing::ValuesIn(kTestParams),
+INSTANTIATE_TEST_SUITE_P(All, CheckOCSPTest, ::testing::ValuesIn(kTestParams),
PrintTestName());
TEST_P(CheckOCSPTest, FromFile) {
- const TestParams& params = GetParam();
+ const TestParams &params = GetParam();
std::string ocsp_data;
std::string ca_data;
@@ -187,8 +186,7 @@ std::string_view kGetURLTestParams[] = {
class CreateOCSPGetURLTest : public ::testing::TestWithParam<std::string_view> {
};
-INSTANTIATE_TEST_SUITE_P(All,
- CreateOCSPGetURLTest,
+INSTANTIATE_TEST_SUITE_P(All, CreateOCSPGetURLTest,
::testing::ValuesIn(kGetURLTestParams));
TEST_P(CreateOCSPGetURLTest, Basic) {
@@ -232,7 +230,7 @@ TEST_P(CreateOCSPGetURLTest, Basic) {
EXPECT_TRUE(EVP_DecodedLength(&len, b64.size()));
std::vector<uint8_t> decoded(len);
EXPECT_TRUE(EVP_DecodeBase64(decoded.data(), &len, len,
- reinterpret_cast<const uint8_t*>(b64.data()),
+ reinterpret_cast<const uint8_t *>(b64.data()),
b64.size()));
std::string decoded_string(decoded.begin(), decoded.begin() + len);
@@ -241,4 +239,4 @@ TEST_P(CreateOCSPGetURLTest, Basic) {
} // namespace
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/ocsp_verify_result.cc b/src/pki/ocsp_verify_result.cc
index b68bfdc..f343f8e 100644
--- a/src/pki/ocsp_verify_result.cc
+++ b/src/pki/ocsp_verify_result.cc
@@ -7,12 +7,13 @@
namespace bssl {
OCSPVerifyResult::OCSPVerifyResult() = default;
-OCSPVerifyResult::OCSPVerifyResult(const OCSPVerifyResult&) = default;
+OCSPVerifyResult::OCSPVerifyResult(const OCSPVerifyResult &) = default;
OCSPVerifyResult::~OCSPVerifyResult() = default;
-bool OCSPVerifyResult::operator==(const OCSPVerifyResult& other) const {
- if (response_status != other.response_status)
+bool OCSPVerifyResult::operator==(const OCSPVerifyResult &other) const {
+ if (response_status != other.response_status) {
return false;
+ }
if (response_status == PROVIDED) {
// |revocation_status| is only defined when |response_status| is PROVIDED.
@@ -21,4 +22,4 @@ bool OCSPVerifyResult::operator==(const OCSPVerifyResult& other) const {
return true;
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/ocsp_verify_result.h b/src/pki/ocsp_verify_result.h
index 32998fa..1e07f1a 100644
--- a/src/pki/ocsp_verify_result.h
+++ b/src/pki/ocsp_verify_result.h
@@ -5,7 +5,7 @@
#ifndef BSSL_PKI_OCSP_VERIFY_RESULT_H_
#define BSSL_PKI_OCSP_VERIFY_RESULT_H_
-#include "fillins/openssl_util.h"
+#include <openssl/base.h>
#include "ocsp_revocation_status.h"
@@ -20,10 +20,10 @@ namespace bssl {
// verification process, and should not be modified at other layers.
struct OPENSSL_EXPORT OCSPVerifyResult {
OCSPVerifyResult();
- OCSPVerifyResult(const OCSPVerifyResult&);
+ OCSPVerifyResult(const OCSPVerifyResult &);
~OCSPVerifyResult();
- bool operator==(const OCSPVerifyResult& other) const;
+ bool operator==(const OCSPVerifyResult &other) const;
// This value is histogrammed, so do not re-order or change values, and add
// new values at the end.
@@ -71,6 +71,6 @@ struct OPENSSL_EXPORT OCSPVerifyResult {
OCSPRevocationStatus revocation_status = OCSPRevocationStatus::UNKNOWN;
};
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_OCSP_VERIFY_RESULT_H_
diff --git a/src/pki/parse_certificate.cc b/src/pki/parse_certificate.cc
index c201736..5e2ff88 100644
--- a/src/pki/parse_certificate.cc
+++ b/src/pki/parse_certificate.cc
@@ -2,19 +2,21 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "fillins/openssl_util.h"
#include "parse_certificate.h"
+#include <optional>
#include <utility>
+#include <openssl/base.h>
+#include <openssl/bytestring.h>
+
#include "cert_error_params.h"
#include "cert_errors.h"
#include "general_names.h"
-#include "string_util.h"
#include "input.h"
#include "parse_values.h"
#include "parser.h"
-#include <optional>
+#include "string_util.h"
namespace bssl {
@@ -73,18 +75,19 @@ DEFINE_CERT_ERROR_ID(kSerialNumberNotValidInteger,
"Serial number is not a valid INTEGER");
// Returns true if |input| is a SEQUENCE and nothing else.
-[[nodiscard]] bool IsSequenceTLV(const der::Input& input) {
+[[nodiscard]] bool IsSequenceTLV(der::Input input) {
der::Parser parser(input);
der::Parser unused_sequence_parser;
- if (!parser.ReadSequence(&unused_sequence_parser))
+ if (!parser.ReadSequence(&unused_sequence_parser)) {
return false;
+ }
// Should by a single SEQUENCE by definition of the function.
return !parser.HasMore();
}
// Reads a SEQUENCE from |parser| and writes the full tag-length-value into
// |out|. On failure |parser| may or may not have been advanced.
-[[nodiscard]] bool ReadSequenceTLV(der::Parser* parser, der::Input* out) {
+[[nodiscard]] bool ReadSequenceTLV(der::Parser *parser, der::Input *out) {
return parser->ReadRawTLV(out) && IsSequenceTLV(*out);
}
@@ -99,12 +102,12 @@ DEFINE_CERT_ERROR_ID(kSerialNumberNotValidInteger,
// Implementations SHOULD be prepared to accept any version certificate.
// At a minimum, conforming implementations MUST recognize version 3
// certificates.
-[[nodiscard]] bool ParseVersion(const der::Input& in,
- CertificateVersion* version) {
+[[nodiscard]] bool ParseVersion(der::Input in, CertificateVersion *version) {
der::Parser parser(in);
uint64_t version64;
- if (!parser.ReadUint64(&version64))
+ if (!parser.ReadUint64(&version64)) {
return false;
+ }
switch (version64) {
case 0:
@@ -127,11 +130,11 @@ DEFINE_CERT_ERROR_ID(kSerialNumberNotValidInteger,
}
// Returns true if every bit in |bits| is zero (including empty).
-[[nodiscard]] bool BitStringIsAllZeros(const der::BitString& bits) {
+[[nodiscard]] bool BitStringIsAllZeros(const der::BitString &bits) {
// Note that it is OK to read from the unused bits, since BitString parsing
// guarantees they are all zero.
- for (size_t i = 0; i < bits.bytes().Length(); ++i) {
- if (bits.bytes()[i] != 0) {
+ for (uint8_t b : bits.bytes()) {
+ if (b != 0) {
return false;
}
}
@@ -145,12 +148,12 @@ DEFINE_CERT_ERROR_ID(kSerialNumberNotValidInteger,
// DistributionPointName ::= CHOICE {
// fullName [0] GeneralNames,
// nameRelativeToCRLIssuer [1] RelativeDistinguishedName }
-bool ParseDistributionPointName(const der::Input& dp_name,
- ParsedDistributionPoint* distribution_point) {
+bool ParseDistributionPointName(der::Input dp_name,
+ ParsedDistributionPoint *distribution_point) {
der::Parser parser(dp_name);
std::optional<der::Input> der_full_name;
if (!parser.ReadOptionalTag(
- der::kTagContextSpecific | der::kTagConstructed | 0,
+ CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 0,
&der_full_name)) {
return false;
}
@@ -159,13 +162,14 @@ bool ParseDistributionPointName(const der::Input& dp_name,
CertErrors errors;
distribution_point->distribution_point_fullname =
GeneralNames::CreateFromValue(*der_full_name, &errors);
- if (!distribution_point->distribution_point_fullname)
+ if (!distribution_point->distribution_point_fullname) {
return false;
+ }
return !parser.HasMore();
}
if (!parser.ReadOptionalTag(
- der::kTagContextSpecific | der::kTagConstructed | 1,
+ CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 1,
&distribution_point
->distribution_point_name_relative_to_crl_issuer)) {
return false;
@@ -185,19 +189,20 @@ bool ParseDistributionPointName(const der::Input& dp_name,
// reasons [1] ReasonFlags OPTIONAL,
// cRLIssuer [2] GeneralNames OPTIONAL }
bool ParseAndAddDistributionPoint(
- der::Parser* parser,
- std::vector<ParsedDistributionPoint>* distribution_points) {
+ der::Parser *parser,
+ std::vector<ParsedDistributionPoint> *distribution_points) {
ParsedDistributionPoint distribution_point;
// DistributionPoint ::= SEQUENCE {
der::Parser distrib_point_parser;
- if (!parser->ReadSequence(&distrib_point_parser))
+ if (!parser->ReadSequence(&distrib_point_parser)) {
return false;
+ }
// distributionPoint [0] DistributionPointName OPTIONAL,
std::optional<der::Input> distribution_point_name;
if (!distrib_point_parser.ReadOptionalTag(
- der::kTagContextSpecific | der::kTagConstructed | 0,
+ CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 0,
&distribution_point_name)) {
return false;
}
@@ -209,14 +214,14 @@ bool ParseAndAddDistributionPoint(
}
// reasons [1] ReasonFlags OPTIONAL,
- if (!distrib_point_parser.ReadOptionalTag(der::kTagContextSpecific | 1,
+ if (!distrib_point_parser.ReadOptionalTag(CBS_ASN1_CONTEXT_SPECIFIC | 1,
&distribution_point.reasons)) {
return false;
}
// cRLIssuer [2] GeneralNames OPTIONAL }
if (!distrib_point_parser.ReadOptionalTag(
- der::kTagContextSpecific | der::kTagConstructed | 2,
+ CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 2,
&distribution_point.crl_issuer)) {
return false;
}
@@ -224,11 +229,13 @@ bool ParseAndAddDistributionPoint(
// RFC 5280, section 4.2.1.13:
// either distributionPoint or cRLIssuer MUST be present.
- if (!distribution_point_name && !distribution_point.crl_issuer)
+ if (!distribution_point_name && !distribution_point.crl_issuer) {
return false;
+ }
- if (distrib_point_parser.HasMore())
+ if (distrib_point_parser.HasMore()) {
return false;
+ }
distribution_points->push_back(std::move(distribution_point));
return true;
@@ -238,14 +245,13 @@ bool ParseAndAddDistributionPoint(
ParsedTbsCertificate::ParsedTbsCertificate() = default;
-ParsedTbsCertificate::ParsedTbsCertificate(ParsedTbsCertificate&& other) =
+ParsedTbsCertificate::ParsedTbsCertificate(ParsedTbsCertificate &&other) =
default;
ParsedTbsCertificate::~ParsedTbsCertificate() = default;
-bool VerifySerialNumber(const der::Input& value,
- bool warnings_only,
- CertErrors* errors) {
+bool VerifySerialNumber(der::Input value, bool warnings_only,
+ CertErrors *errors) {
// If |warnings_only| was set to true, the exact same errors will be logged,
// only they will be logged with a lower severity (warning rather than error).
CertError::Severity error_severity =
@@ -262,9 +268,10 @@ bool VerifySerialNumber(const der::Input& value,
// Note: Non-conforming CAs may issue certificates with serial numbers
// that are negative or zero. Certificate users SHOULD be prepared to
// gracefully handle such certificates.
- if (negative)
+ if (negative) {
errors->AddWarning(kSerialNumberIsNegative);
- if (value.Length() == 1 && value[0] == 0) {
+ }
+ if (value.size() == 1 && value[0] == 0) {
errors->AddWarning(kSerialNumberIsZero);
}
@@ -273,58 +280,65 @@ bool VerifySerialNumber(const der::Input& value,
// Certificate users MUST be able to handle serialNumber values up to 20
// octets. Conforming CAs MUST NOT use serialNumber values longer than 20
// octets.
- if (value.Length() > 20) {
+ if (value.size() > 20) {
errors->Add(error_severity, kSerialNumberLengthOver20,
- CreateCertErrorParams1SizeT("length", value.Length()));
+ CreateCertErrorParams1SizeT("length", value.size()));
return false;
}
return true;
}
-bool ReadUTCOrGeneralizedTime(der::Parser* parser, der::GeneralizedTime* out) {
+bool ReadUTCOrGeneralizedTime(der::Parser *parser, der::GeneralizedTime *out) {
der::Input value;
- der::Tag tag;
+ CBS_ASN1_TAG tag;
- if (!parser->ReadTagAndValue(&tag, &value))
+ if (!parser->ReadTagAndValue(&tag, &value)) {
return false;
+ }
- if (tag == der::kUtcTime)
+ if (tag == CBS_ASN1_UTCTIME) {
return der::ParseUTCTime(value, out);
+ }
- if (tag == der::kGeneralizedTime)
+ if (tag == CBS_ASN1_GENERALIZEDTIME) {
return der::ParseGeneralizedTime(value, out);
+ }
// Unrecognized tag.
return false;
}
-bool ParseValidity(const der::Input& validity_tlv,
- der::GeneralizedTime* not_before,
- der::GeneralizedTime* not_after) {
+bool ParseValidity(der::Input validity_tlv, der::GeneralizedTime *not_before,
+ der::GeneralizedTime *not_after) {
der::Parser parser(validity_tlv);
// Validity ::= SEQUENCE {
der::Parser validity_parser;
- if (!parser.ReadSequence(&validity_parser))
+ if (!parser.ReadSequence(&validity_parser)) {
return false;
+ }
// notBefore Time,
- if (!ReadUTCOrGeneralizedTime(&validity_parser, not_before))
+ if (!ReadUTCOrGeneralizedTime(&validity_parser, not_before)) {
return false;
+ }
// notAfter Time }
- if (!ReadUTCOrGeneralizedTime(&validity_parser, not_after))
+ if (!ReadUTCOrGeneralizedTime(&validity_parser, not_after)) {
return false;
+ }
// By definition the input was a single Validity sequence, so there shouldn't
// be unconsumed data.
- if (parser.HasMore())
+ if (parser.HasMore()) {
return false;
+ }
// The Validity type does not have an extension point.
- if (validity_parser.HasMore())
+ if (validity_parser.HasMore()) {
return false;
+ }
// Note that RFC 5280 doesn't require notBefore to be <=
// notAfter, so that will not be considered a "parsing" error here. Instead it
@@ -333,16 +347,17 @@ bool ParseValidity(const der::Input& validity_tlv,
return true;
}
-bool ParseCertificate(const der::Input& certificate_tlv,
- der::Input* out_tbs_certificate_tlv,
- der::Input* out_signature_algorithm_tlv,
- der::BitString* out_signature_value,
- CertErrors* out_errors) {
+bool ParseCertificate(der::Input certificate_tlv,
+ der::Input *out_tbs_certificate_tlv,
+ der::Input *out_signature_algorithm_tlv,
+ der::BitString *out_signature_value,
+ CertErrors *out_errors) {
// |out_errors| is optional. But ensure it is non-null for the remainder of
// this function.
CertErrors unused_errors;
- if (!out_errors)
+ if (!out_errors) {
out_errors = &unused_errors;
+ }
der::Parser parser(certificate_tlv);
@@ -407,14 +422,14 @@ bool ParseCertificate(const der::Input& certificate_tlv,
// extensions [3] EXPLICIT Extensions OPTIONAL
// -- If present, version MUST be v3
// }
-bool ParseTbsCertificate(const der::Input& tbs_tlv,
- const ParseCertificateOptions& options,
- ParsedTbsCertificate* out,
- CertErrors* errors) {
+bool ParseTbsCertificate(der::Input tbs_tlv,
+ const ParseCertificateOptions &options,
+ ParsedTbsCertificate *out, CertErrors *errors) {
// The rest of this function assumes that |errors| is non-null.
CertErrors unused_errors;
- if (!errors)
+ if (!errors) {
errors = &unused_errors;
+ }
// TODO(crbug.com/634443): Add useful error information to |errors|.
@@ -429,8 +444,8 @@ bool ParseTbsCertificate(const der::Input& tbs_tlv,
// version [0] EXPLICIT Version DEFAULT v1,
std::optional<der::Input> version;
- if (!tbs_parser.ReadOptionalTag(der::ContextSpecificConstructed(0),
- &version)) {
+ if (!tbs_parser.ReadOptionalTag(
+ CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 0, &version)) {
errors->AddError(kFailedReadingVersion);
return false;
}
@@ -450,7 +465,7 @@ bool ParseTbsCertificate(const der::Input& tbs_tlv,
}
// serialNumber CertificateSerialNumber,
- if (!tbs_parser.ReadTag(der::kInteger, &out->serial_number)) {
+ if (!tbs_parser.ReadTag(CBS_ASN1_INTEGER, &out->serial_number)) {
errors->AddError(kFailedReadingSerialNumber);
return false;
}
@@ -458,8 +473,9 @@ bool ParseTbsCertificate(const der::Input& tbs_tlv,
options.allow_invalid_serial_numbers, errors)) {
// Invalid serial numbers are only considered fatal failures if
// |!allow_invalid_serial_numbers|.
- if (!options.allow_invalid_serial_numbers)
+ if (!options.allow_invalid_serial_numbers) {
return false;
+ }
}
// signature AlgorithmIdentifier,
@@ -501,7 +517,7 @@ bool ParseTbsCertificate(const der::Input& tbs_tlv,
// issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
// -- If present, version MUST be v2 or v3
std::optional<der::Input> issuer_unique_id;
- if (!tbs_parser.ReadOptionalTag(der::ContextSpecificPrimitive(1),
+ if (!tbs_parser.ReadOptionalTag(CBS_ASN1_CONTEXT_SPECIFIC | 1,
&issuer_unique_id)) {
errors->AddError(kFailedReadingIssuerUniqueId);
return false;
@@ -522,7 +538,7 @@ bool ParseTbsCertificate(const der::Input& tbs_tlv,
// subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
// -- If present, version MUST be v2 or v3
std::optional<der::Input> subject_unique_id;
- if (!tbs_parser.ReadOptionalTag(der::ContextSpecificPrimitive(2),
+ if (!tbs_parser.ReadOptionalTag(CBS_ASN1_CONTEXT_SPECIFIC | 2,
&subject_unique_id)) {
errors->AddError(kFailedReadingSubjectUniqueId);
return false;
@@ -542,8 +558,9 @@ bool ParseTbsCertificate(const der::Input& tbs_tlv,
// extensions [3] EXPLICIT Extensions OPTIONAL
// -- If present, version MUST be v3
- if (!tbs_parser.ReadOptionalTag(der::ContextSpecificConstructed(3),
- &out->extensions_tlv)) {
+ if (!tbs_parser.ReadOptionalTag(
+ CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 3,
+ &out->extensions_tlv)) {
errors->AddError(kFailedReadingExtensions);
return false;
}
@@ -574,8 +591,9 @@ bool ParseTbsCertificate(const der::Input& tbs_tlv,
// By definition the input was a single TBSCertificate, so there shouldn't be
// unconsumed data.
- if (parser.HasMore())
+ if (parser.HasMore()) {
return false;
+ }
return true;
}
@@ -590,62 +608,73 @@ bool ParseTbsCertificate(const der::Input& tbs_tlv,
// -- corresponding to the extension type identified
// -- by extnID
// }
-bool ParseExtension(const der::Input& extension_tlv, ParsedExtension* out) {
+bool ParseExtension(der::Input extension_tlv, ParsedExtension *out) {
der::Parser parser(extension_tlv);
// Extension ::= SEQUENCE {
der::Parser extension_parser;
- if (!parser.ReadSequence(&extension_parser))
+ if (!parser.ReadSequence(&extension_parser)) {
return false;
+ }
// extnID OBJECT IDENTIFIER,
- if (!extension_parser.ReadTag(der::kOid, &out->oid))
+ if (!extension_parser.ReadTag(CBS_ASN1_OBJECT, &out->oid)) {
return false;
+ }
// critical BOOLEAN DEFAULT FALSE,
out->critical = false;
bool has_critical;
der::Input critical;
- if (!extension_parser.ReadOptionalTag(der::kBool, &critical, &has_critical))
+ if (!extension_parser.ReadOptionalTag(CBS_ASN1_BOOLEAN, &critical,
+ &has_critical)) {
return false;
+ }
if (has_critical) {
- if (!der::ParseBool(critical, &out->critical))
+ if (!der::ParseBool(critical, &out->critical)) {
return false;
- if (!out->critical)
+ }
+ if (!out->critical) {
return false; // DER-encoding requires DEFAULT values be omitted.
+ }
}
// extnValue OCTET STRING
- if (!extension_parser.ReadTag(der::kOctetString, &out->value))
+ if (!extension_parser.ReadTag(CBS_ASN1_OCTETSTRING, &out->value)) {
return false;
+ }
// The Extension type does not have an extension point (everything goes in
// extnValue).
- if (extension_parser.HasMore())
+ if (extension_parser.HasMore()) {
return false;
+ }
// By definition the input was a single Extension sequence, so there shouldn't
// be unconsumed data.
- if (parser.HasMore())
+ if (parser.HasMore()) {
return false;
+ }
return true;
}
OPENSSL_EXPORT bool ParseExtensions(
- const der::Input& extensions_tlv,
- std::map<der::Input, ParsedExtension>* extensions) {
+ der::Input extensions_tlv,
+ std::map<der::Input, ParsedExtension> *extensions) {
der::Parser parser(extensions_tlv);
// Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
der::Parser extensions_parser;
- if (!parser.ReadSequence(&extensions_parser))
+ if (!parser.ReadSequence(&extensions_parser)) {
return false;
+ }
// The Extensions SEQUENCE must contains at least 1 element (otherwise it
// should have been omitted).
- if (!extensions_parser.HasMore())
+ if (!extensions_parser.HasMore()) {
return false;
+ }
extensions->clear();
@@ -653,59 +682,67 @@ OPENSSL_EXPORT bool ParseExtensions(
ParsedExtension extension;
der::Input extension_tlv;
- if (!extensions_parser.ReadRawTLV(&extension_tlv))
+ if (!extensions_parser.ReadRawTLV(&extension_tlv)) {
return false;
+ }
- if (!ParseExtension(extension_tlv, &extension))
+ if (!ParseExtension(extension_tlv, &extension)) {
return false;
+ }
bool is_duplicate =
!extensions->insert(std::make_pair(extension.oid, extension)).second;
// RFC 5280 says that an extension should not appear more than once.
- if (is_duplicate)
+ if (is_duplicate) {
return false;
+ }
}
// By definition the input was a single Extensions sequence, so there
// shouldn't be unconsumed data.
- if (parser.HasMore())
+ if (parser.HasMore()) {
return false;
+ }
return true;
}
OPENSSL_EXPORT bool ConsumeExtension(
- const der::Input& oid,
- std::map<der::Input, ParsedExtension>* unconsumed_extensions,
- ParsedExtension* extension) {
+ der::Input oid,
+ std::map<der::Input, ParsedExtension> *unconsumed_extensions,
+ ParsedExtension *extension) {
auto it = unconsumed_extensions->find(oid);
- if (it == unconsumed_extensions->end())
+ if (it == unconsumed_extensions->end()) {
return false;
+ }
*extension = it->second;
unconsumed_extensions->erase(it);
return true;
}
-bool ParseBasicConstraints(const der::Input& basic_constraints_tlv,
- ParsedBasicConstraints* out) {
+bool ParseBasicConstraints(der::Input basic_constraints_tlv,
+ ParsedBasicConstraints *out) {
der::Parser parser(basic_constraints_tlv);
// BasicConstraints ::= SEQUENCE {
der::Parser sequence_parser;
- if (!parser.ReadSequence(&sequence_parser))
+ if (!parser.ReadSequence(&sequence_parser)) {
return false;
+ }
// cA BOOLEAN DEFAULT FALSE,
out->is_ca = false;
bool has_ca;
der::Input ca;
- if (!sequence_parser.ReadOptionalTag(der::kBool, &ca, &has_ca))
+ if (!sequence_parser.ReadOptionalTag(CBS_ASN1_BOOLEAN, &ca, &has_ca)) {
return false;
+ }
if (has_ca) {
- if (!der::ParseBool(ca, &out->is_ca))
+ if (!der::ParseBool(ca, &out->is_ca)) {
return false;
+ }
// TODO(eroman): Should reject if CA was set to false, since
// DER-encoding requires DEFAULT values be omitted. In
// practice however there are a lot of certificates that use
@@ -714,57 +751,63 @@ bool ParseBasicConstraints(const der::Input& basic_constraints_tlv,
// pathLenConstraint INTEGER (0..MAX) OPTIONAL }
der::Input encoded_path_len;
- if (!sequence_parser.ReadOptionalTag(der::kInteger, &encoded_path_len,
+ if (!sequence_parser.ReadOptionalTag(CBS_ASN1_INTEGER, &encoded_path_len,
&out->has_path_len)) {
return false;
}
if (out->has_path_len) {
// TODO(eroman): Surface reason for failure if length was longer than uint8.
- if (!der::ParseUint8(encoded_path_len, &out->path_len))
+ if (!der::ParseUint8(encoded_path_len, &out->path_len)) {
return false;
+ }
} else {
// Default initialize to 0 as a precaution.
out->path_len = 0;
}
// There shouldn't be any unconsumed data in the extension.
- if (sequence_parser.HasMore())
+ if (sequence_parser.HasMore()) {
return false;
+ }
// By definition the input was a single BasicConstraints sequence, so there
// shouldn't be unconsumed data.
- if (parser.HasMore())
+ if (parser.HasMore()) {
return false;
+ }
return true;
}
// TODO(crbug.com/1314019): return std::optional<BitString> when converting
// has_key_usage_ and key_usage_ into single std::optional field.
-bool ParseKeyUsage(const der::Input& key_usage_tlv, der::BitString* key_usage) {
+bool ParseKeyUsage(der::Input key_usage_tlv, der::BitString *key_usage) {
der::Parser parser(key_usage_tlv);
std::optional<der::BitString> key_usage_internal = parser.ReadBitString();
- if (!key_usage_internal)
+ if (!key_usage_internal) {
return false;
+ }
// By definition the input was a single BIT STRING.
- if (parser.HasMore())
+ if (parser.HasMore()) {
return false;
+ }
// RFC 5280 section 4.2.1.3:
//
// When the keyUsage extension appears in a certificate, at least
// one of the bits MUST be set to 1.
- if (BitStringIsAllZeros(key_usage_internal.value()))
+ if (BitStringIsAllZeros(key_usage_internal.value())) {
return false;
+ }
*key_usage = key_usage_internal.value();
return true;
}
bool ParseAuthorityInfoAccess(
- const der::Input& authority_info_access_tlv,
- std::vector<AuthorityInfoAccessDescription>* out_access_descriptions) {
+ der::Input authority_info_access_tlv,
+ std::vector<AuthorityInfoAccessDescription> *out_access_descriptions) {
der::Parser parser(authority_info_access_tlv);
out_access_descriptions->clear();
@@ -772,22 +815,25 @@ bool ParseAuthorityInfoAccess(
// AuthorityInfoAccessSyntax ::=
// SEQUENCE SIZE (1..MAX) OF AccessDescription
der::Parser sequence_parser;
- if (!parser.ReadSequence(&sequence_parser))
+ if (!parser.ReadSequence(&sequence_parser)) {
return false;
- if (!sequence_parser.HasMore())
+ }
+ if (!sequence_parser.HasMore()) {
return false;
+ }
while (sequence_parser.HasMore()) {
AuthorityInfoAccessDescription access_description;
// AccessDescription ::= SEQUENCE {
der::Parser access_description_sequence_parser;
- if (!sequence_parser.ReadSequence(&access_description_sequence_parser))
+ if (!sequence_parser.ReadSequence(&access_description_sequence_parser)) {
return false;
+ }
// accessMethod OBJECT IDENTIFIER,
if (!access_description_sequence_parser.ReadTag(
- der::kOid, &access_description.access_method_oid)) {
+ CBS_ASN1_OBJECT, &access_description.access_method_oid)) {
return false;
}
@@ -797,8 +843,9 @@ bool ParseAuthorityInfoAccess(
return false;
}
- if (access_description_sequence_parser.HasMore())
+ if (access_description_sequence_parser.HasMore()) {
return false;
+ }
out_access_descriptions->push_back(access_description);
}
@@ -807,18 +854,18 @@ bool ParseAuthorityInfoAccess(
}
bool ParseAuthorityInfoAccessURIs(
- const der::Input& authority_info_access_tlv,
- std::vector<std::string_view>* out_ca_issuers_uris,
- std::vector<std::string_view>* out_ocsp_uris) {
+ der::Input authority_info_access_tlv,
+ std::vector<std::string_view> *out_ca_issuers_uris,
+ std::vector<std::string_view> *out_ocsp_uris) {
std::vector<AuthorityInfoAccessDescription> access_descriptions;
if (!ParseAuthorityInfoAccess(authority_info_access_tlv,
&access_descriptions)) {
return false;
}
- for (const auto& access_description : access_descriptions) {
+ for (const auto &access_description : access_descriptions) {
der::Parser access_location_parser(access_description.access_location);
- der::Tag access_location_tag;
+ CBS_ASN1_TAG access_location_tag;
der::Input access_location_value;
if (!access_location_parser.ReadTagAndValue(&access_location_tag,
&access_location_value)) {
@@ -826,16 +873,19 @@ bool ParseAuthorityInfoAccessURIs(
}
// GeneralName ::= CHOICE {
- if (access_location_tag == der::ContextSpecificPrimitive(6)) {
+ if (access_location_tag == (CBS_ASN1_CONTEXT_SPECIFIC | 6)) {
// uniformResourceIdentifier [6] IA5String,
- std::string_view uri = access_location_value.AsStringView();
- if (!bssl::string_util::IsAscii(uri))
+ std::string_view uri = BytesAsStringView(access_location_value);
+ if (!bssl::string_util::IsAscii(uri)) {
return false;
+ }
- if (access_description.access_method_oid == der::Input(kAdCaIssuersOid))
+ if (access_description.access_method_oid == der::Input(kAdCaIssuersOid)) {
out_ca_issuers_uris->push_back(uri);
- else if (access_description.access_method_oid == der::Input(kAdOcspOid))
+ } else if (access_description.access_method_oid ==
+ der::Input(kAdOcspOid)) {
out_ocsp_uris->push_back(uri);
+ }
}
}
return true;
@@ -843,12 +893,12 @@ bool ParseAuthorityInfoAccessURIs(
ParsedDistributionPoint::ParsedDistributionPoint() = default;
ParsedDistributionPoint::ParsedDistributionPoint(
- ParsedDistributionPoint&& other) = default;
+ ParsedDistributionPoint &&other) = default;
ParsedDistributionPoint::~ParsedDistributionPoint() = default;
bool ParseCrlDistributionPoints(
- const der::Input& extension_value,
- std::vector<ParsedDistributionPoint>* distribution_points) {
+ der::Input extension_value,
+ std::vector<ParsedDistributionPoint> *distribution_points) {
distribution_points->clear();
// RFC 5280, section 4.2.1.13.
@@ -856,19 +906,23 @@ bool ParseCrlDistributionPoints(
// CRLDistributionPoints ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint
der::Parser extension_value_parser(extension_value);
der::Parser distribution_points_parser;
- if (!extension_value_parser.ReadSequence(&distribution_points_parser))
+ if (!extension_value_parser.ReadSequence(&distribution_points_parser)) {
return false;
- if (extension_value_parser.HasMore())
+ }
+ if (extension_value_parser.HasMore()) {
return false;
+ }
// Sequence must have a minimum of 1 item.
- if (!distribution_points_parser.HasMore())
+ if (!distribution_points_parser.HasMore()) {
return false;
+ }
while (distribution_points_parser.HasMore()) {
if (!ParseAndAddDistributionPoint(&distribution_points_parser,
- distribution_points))
+ distribution_points)) {
return false;
+ }
}
return true;
@@ -877,13 +931,13 @@ bool ParseCrlDistributionPoints(
ParsedAuthorityKeyIdentifier::ParsedAuthorityKeyIdentifier() = default;
ParsedAuthorityKeyIdentifier::~ParsedAuthorityKeyIdentifier() = default;
ParsedAuthorityKeyIdentifier::ParsedAuthorityKeyIdentifier(
- ParsedAuthorityKeyIdentifier&& other) = default;
-ParsedAuthorityKeyIdentifier& ParsedAuthorityKeyIdentifier::operator=(
- ParsedAuthorityKeyIdentifier&& other) = default;
+ ParsedAuthorityKeyIdentifier &&other) = default;
+ParsedAuthorityKeyIdentifier &ParsedAuthorityKeyIdentifier::operator=(
+ ParsedAuthorityKeyIdentifier &&other) = default;
bool ParseAuthorityKeyIdentifier(
- const der::Input& extension_value,
- ParsedAuthorityKeyIdentifier* authority_key_identifier) {
+ der::Input extension_value,
+ ParsedAuthorityKeyIdentifier *authority_key_identifier) {
// RFC 5280, section 4.2.1.1.
// AuthorityKeyIdentifier ::= SEQUENCE {
// keyIdentifier [0] KeyIdentifier OPTIONAL,
@@ -894,30 +948,32 @@ bool ParseAuthorityKeyIdentifier(
der::Parser extension_value_parser(extension_value);
der::Parser aki_parser;
- if (!extension_value_parser.ReadSequence(&aki_parser))
+ if (!extension_value_parser.ReadSequence(&aki_parser)) {
return false;
- if (extension_value_parser.HasMore())
+ }
+ if (extension_value_parser.HasMore()) {
return false;
+ }
// TODO(mattm): Should having an empty AuthorityKeyIdentifier SEQUENCE be an
// error? RFC 5280 doesn't explicitly say it.
// keyIdentifier [0] KeyIdentifier OPTIONAL,
- if (!aki_parser.ReadOptionalTag(der::ContextSpecificPrimitive(0),
+ if (!aki_parser.ReadOptionalTag(CBS_ASN1_CONTEXT_SPECIFIC | 0,
&authority_key_identifier->key_identifier)) {
return false;
}
// authorityCertIssuer [1] GeneralNames OPTIONAL,
if (!aki_parser.ReadOptionalTag(
- der::ContextSpecificConstructed(1),
+ CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 1,
&authority_key_identifier->authority_cert_issuer)) {
return false;
}
// authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL }
if (!aki_parser.ReadOptionalTag(
- der::ContextSpecificPrimitive(2),
+ CBS_ASN1_CONTEXT_SPECIFIC | 2,
&authority_key_identifier->authority_cert_serial_number)) {
return false;
}
@@ -931,28 +987,30 @@ bool ParseAuthorityKeyIdentifier(
// There shouldn't be any unconsumed data in the AuthorityKeyIdentifier
// SEQUENCE.
- if (aki_parser.HasMore())
+ if (aki_parser.HasMore()) {
return false;
+ }
return true;
}
-bool ParseSubjectKeyIdentifier(const der::Input& extension_value,
- der::Input* subject_key_identifier) {
+bool ParseSubjectKeyIdentifier(der::Input extension_value,
+ der::Input *subject_key_identifier) {
// SubjectKeyIdentifier ::= KeyIdentifier
//
// KeyIdentifier ::= OCTET STRING
der::Parser extension_value_parser(extension_value);
- if (!extension_value_parser.ReadTag(der::kOctetString,
+ if (!extension_value_parser.ReadTag(CBS_ASN1_OCTETSTRING,
subject_key_identifier)) {
return false;
}
// There shouldn't be any unconsumed data in the extension SEQUENCE.
- if (extension_value_parser.HasMore())
+ if (extension_value_parser.HasMore()) {
return false;
+ }
return true;
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/parse_certificate.h b/src/pki/parse_certificate.h
index 956c44e..81e267f 100644
--- a/src/pki/parse_certificate.h
+++ b/src/pki/parse_certificate.h
@@ -5,18 +5,18 @@
#ifndef BSSL_PKI_PARSE_CERTIFICATE_H_
#define BSSL_PKI_PARSE_CERTIFICATE_H_
-#include "fillins/openssl_util.h"
#include <stdint.h>
#include <map>
#include <memory>
+#include <optional>
#include <vector>
+#include <openssl/base.h>
#include "general_names.h"
#include "input.h"
#include "parse_values.h"
-#include <optional>
namespace bssl {
@@ -56,9 +56,9 @@ struct ParsedTbsCertificate;
// |errors| must be a non-null destination for any errors/warnings. If
// |warnings_only| is set to true, then what would ordinarily be errors are
// instead added as warnings.
-[[nodiscard]] OPENSSL_EXPORT bool VerifySerialNumber(const der::Input& value,
- bool warnings_only,
- CertErrors* errors);
+[[nodiscard]] OPENSSL_EXPORT bool VerifySerialNumber(der::Input value,
+ bool warnings_only,
+ CertErrors *errors);
// Consumes a "Time" value (as defined by RFC 5280) from |parser|. On success
// writes the result to |*out| and returns true. On failure no guarantees are
@@ -70,8 +70,7 @@ struct ParsedTbsCertificate;
// utcTime UTCTime,
// generalTime GeneralizedTime }
[[nodiscard]] OPENSSL_EXPORT bool ReadUTCOrGeneralizedTime(
- der::Parser* parser,
- der::GeneralizedTime* out);
+ der::Parser *parser, der::GeneralizedTime *out);
// Parses a DER-encoded "Validity" as specified by RFC 5280. Returns true on
// success and sets the results in |not_before| and |not_after|:
@@ -81,9 +80,9 @@ struct ParsedTbsCertificate;
// notAfter Time }
//
// Note that upon success it is NOT guaranteed that |*not_before <= *not_after|.
-[[nodiscard]] OPENSSL_EXPORT bool ParseValidity(const der::Input& validity_tlv,
- der::GeneralizedTime* not_before,
- der::GeneralizedTime* not_after);
+[[nodiscard]] OPENSSL_EXPORT bool ParseValidity(
+ der::Input validity_tlv, der::GeneralizedTime *not_before,
+ der::GeneralizedTime *not_after);
struct OPENSSL_EXPORT ParseCertificateOptions {
// If set to true, then parsing will skip checks on the certificate's serial
@@ -131,11 +130,9 @@ struct OPENSSL_EXPORT ParseCertificateOptions {
//
// Parsing guarantees that this is a valid BIT STRING.
[[nodiscard]] OPENSSL_EXPORT bool ParseCertificate(
- const der::Input& certificate_tlv,
- der::Input* out_tbs_certificate_tlv,
- der::Input* out_signature_algorithm_tlv,
- der::BitString* out_signature_value,
- CertErrors* out_errors);
+ der::Input certificate_tlv, der::Input *out_tbs_certificate_tlv,
+ der::Input *out_signature_algorithm_tlv,
+ der::BitString *out_signature_value, CertErrors *out_errors);
// Parses a DER-encoded "TBSCertificate" as specified by RFC 5280. Returns true
// on success and sets the results in |out|. Certain invalid inputs may
@@ -170,10 +167,8 @@ struct OPENSSL_EXPORT ParseCertificateOptions {
// -- If present, version MUST be v3
// }
[[nodiscard]] OPENSSL_EXPORT bool ParseTbsCertificate(
- const der::Input& tbs_tlv,
- const ParseCertificateOptions& options,
- ParsedTbsCertificate* out,
- CertErrors* errors);
+ der::Input tbs_tlv, const ParseCertificateOptions &options,
+ ParsedTbsCertificate *out, CertErrors *errors);
// Represents a "Version" from RFC 5280:
// Version ::= INTEGER { v1(0), v2(1), v3(2) }
@@ -191,8 +186,8 @@ enum class CertificateVersion {
// sets.
struct OPENSSL_EXPORT ParsedTbsCertificate {
ParsedTbsCertificate();
- ParsedTbsCertificate(ParsedTbsCertificate&& other);
- ParsedTbsCertificate& operator=(ParsedTbsCertificate&& other) = default;
+ ParsedTbsCertificate(ParsedTbsCertificate &&other);
+ ParsedTbsCertificate &operator=(ParsedTbsCertificate &&other) = default;
~ParsedTbsCertificate();
// Corresponds with "version" from RFC 5280:
@@ -323,8 +318,8 @@ struct OPENSSL_EXPORT ParsedExtension {
//
// On failure |out| has an undefined state. Some of its fields may have been
// updated during parsing, whereas others may not have been changed.
-[[nodiscard]] OPENSSL_EXPORT bool ParseExtension(const der::Input& extension_tlv,
- ParsedExtension* out);
+[[nodiscard]] OPENSSL_EXPORT bool ParseExtension(der::Input extension_tlv,
+ ParsedExtension *out);
// From RFC 5280:
//
@@ -420,6 +415,14 @@ inline constexpr uint8_t kAdOcspOid[] = {0x2B, 0x06, 0x01, 0x05,
// In dotted notation: 2.5.29.31
inline constexpr uint8_t kCrlDistributionPointsOid[] = {0x55, 0x1d, 0x1f};
+// From RFC 6962:
+//
+// critical poison extension.
+//
+// In dotted notation 1.3.6.1.4.1.11129.2.4.3
+inline constexpr uint8_t kCtPoisonOid[] = {0x2B, 0x06, 0x01, 0x04, 0x01,
+ 0xD6, 0x79, 0x02, 0x04, 0x03};
+
// From
// https://learn.microsoft.com/en-us/windows/win32/seccertenroll/supported-extensions#msapplicationpolicies
//
@@ -436,16 +439,16 @@ inline constexpr uint8_t kMSApplicationPoliciesOid[] = {
// bytes in |extensions_tlv|, so that data must be kept alive.
// On failure |extensions| may be partially written to and should not be used.
[[nodiscard]] OPENSSL_EXPORT bool ParseExtensions(
- const der::Input& extensions_tlv,
- std::map<der::Input, ParsedExtension>* extensions);
+ der::Input extensions_tlv,
+ std::map<der::Input, ParsedExtension> *extensions);
// Removes the extension with OID |oid| from |unconsumed_extensions| and fills
// |extension| with the matching extension value. If there was no extension
// matching |oid| then returns |false|.
[[nodiscard]] OPENSSL_EXPORT bool ConsumeExtension(
- const der::Input& oid,
- std::map<der::Input, ParsedExtension>* unconsumed_extensions,
- ParsedExtension* extension);
+ der::Input oid,
+ std::map<der::Input, ParsedExtension> *unconsumed_extensions,
+ ParsedExtension *extension);
struct ParsedBasicConstraints {
bool is_ca = false;
@@ -462,8 +465,7 @@ struct ParsedBasicConstraints {
// The maximum allowed value of pathLenConstraints will be whatever can fit
// into a uint8_t.
[[nodiscard]] OPENSSL_EXPORT bool ParseBasicConstraints(
- const der::Input& basic_constraints_tlv,
- ParsedBasicConstraints* out);
+ der::Input basic_constraints_tlv, ParsedBasicConstraints *out);
// KeyUsageBit contains the index for a particular key usage. The index is
// measured from the most significant bit of a bit string.
@@ -503,8 +505,8 @@ enum KeyUsageBit {
//
// To test if a particular key usage is set, call, e.g.:
// key_usage->AssertsBit(KEY_USAGE_BIT_DIGITAL_SIGNATURE);
-[[nodiscard]] OPENSSL_EXPORT bool ParseKeyUsage(const der::Input& key_usage_tlv,
- der::BitString* key_usage);
+[[nodiscard]] OPENSSL_EXPORT bool ParseKeyUsage(der::Input key_usage_tlv,
+ der::BitString *key_usage);
struct AuthorityInfoAccessDescription {
// The accessMethod DER OID value.
@@ -520,8 +522,8 @@ struct AuthorityInfoAccessDescription {
// No validation is performed on the contents of the
// AuthorityInfoAccessDescription fields.
[[nodiscard]] OPENSSL_EXPORT bool ParseAuthorityInfoAccess(
- const der::Input& authority_info_access_tlv,
- std::vector<AuthorityInfoAccessDescription>* out_access_descriptions);
+ der::Input authority_info_access_tlv,
+ std::vector<AuthorityInfoAccessDescription> *out_access_descriptions);
// Parses the Authority Information Access extension defined by RFC 5280,
// extracting the caIssuers URIs and OCSP URIs.
@@ -542,9 +544,9 @@ struct AuthorityInfoAccessDescription {
// accessLocation types other than uniformResourceIdentifier are silently
// ignored.
[[nodiscard]] OPENSSL_EXPORT bool ParseAuthorityInfoAccessURIs(
- const der::Input& authority_info_access_tlv,
- std::vector<std::string_view>* out_ca_issuers_uris,
- std::vector<std::string_view>* out_ocsp_uris);
+ der::Input authority_info_access_tlv,
+ std::vector<std::string_view> *out_ca_issuers_uris,
+ std::vector<std::string_view> *out_ocsp_uris);
// ParsedDistributionPoint represents a parsed DistributionPoint from RFC 5280.
//
@@ -554,7 +556,7 @@ struct AuthorityInfoAccessDescription {
// cRLIssuer [2] GeneralNames OPTIONAL }
struct OPENSSL_EXPORT ParsedDistributionPoint {
ParsedDistributionPoint();
- ParsedDistributionPoint(ParsedDistributionPoint&& other);
+ ParsedDistributionPoint(ParsedDistributionPoint &&other);
~ParsedDistributionPoint();
// The parsed fullName, if distributionPoint was present and was a fullName.
@@ -578,8 +580,8 @@ struct OPENSSL_EXPORT ParsedDistributionPoint {
// DistributionPoint). Return true on success, and fills |distribution_points|
// with values that reference data in |distribution_points_tlv|.
[[nodiscard]] OPENSSL_EXPORT bool ParseCrlDistributionPoints(
- const der::Input& distribution_points_tlv,
- std::vector<ParsedDistributionPoint>* distribution_points);
+ der::Input distribution_points_tlv,
+ std::vector<ParsedDistributionPoint> *distribution_points);
// Represents the AuthorityKeyIdentifier extension defined by RFC 5280 section
// 4.2.1.1.
@@ -593,8 +595,8 @@ struct OPENSSL_EXPORT ParsedDistributionPoint {
struct OPENSSL_EXPORT ParsedAuthorityKeyIdentifier {
ParsedAuthorityKeyIdentifier();
~ParsedAuthorityKeyIdentifier();
- ParsedAuthorityKeyIdentifier(ParsedAuthorityKeyIdentifier&& other);
- ParsedAuthorityKeyIdentifier& operator=(ParsedAuthorityKeyIdentifier&& other);
+ ParsedAuthorityKeyIdentifier(ParsedAuthorityKeyIdentifier &&other);
+ ParsedAuthorityKeyIdentifier &operator=(ParsedAuthorityKeyIdentifier &&other);
// The keyIdentifier, which is an OCTET STRING.
std::optional<der::Input> key_identifier;
@@ -614,16 +616,15 @@ struct OPENSSL_EXPORT ParsedAuthorityKeyIdentifier {
// in |extension_value|. On failure the state of |authority_key_identifier| is
// not guaranteed.
[[nodiscard]] OPENSSL_EXPORT bool ParseAuthorityKeyIdentifier(
- const der::Input& extension_value,
- ParsedAuthorityKeyIdentifier* authority_key_identifier);
+ der::Input extension_value,
+ ParsedAuthorityKeyIdentifier *authority_key_identifier);
// Parses the value of a subjectKeyIdentifier extension. Returns true on
// success and |subject_key_identifier| references data in |extension_value|.
// On failure the state of |subject_key_identifier| is not guaranteed.
[[nodiscard]] OPENSSL_EXPORT bool ParseSubjectKeyIdentifier(
- const der::Input& extension_value,
- der::Input* subject_key_identifier);
+ der::Input extension_value, der::Input *subject_key_identifier);
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_PARSE_CERTIFICATE_H_
diff --git a/src/pki/parse_certificate_unittest.cc b/src/pki/parse_certificate_unittest.cc
index fc79ca3..ec3c642 100644
--- a/src/pki/parse_certificate_unittest.cc
+++ b/src/pki/parse_certificate_unittest.cc
@@ -4,13 +4,13 @@
#include "parse_certificate.h"
+#include <gtest/gtest.h>
+#include <openssl/pool.h>
#include "cert_errors.h"
#include "general_names.h"
+#include "input.h"
#include "parsed_certificate.h"
#include "test_helpers.h"
-#include "input.h"
-#include <gtest/gtest.h>
-#include <openssl/pool.h>
namespace bssl {
@@ -19,7 +19,7 @@ namespace {
// Pretty-prints a GeneralizedTime as a human-readable string for use in test
// expectations (it is more readable to specify the expected results as a
// string).
-std::string ToString(const der::GeneralizedTime& time) {
+std::string ToString(const der::GeneralizedTime &time) {
std::ostringstream pretty_time;
pretty_time << "year=" << int{time.year} << ", month=" << int{time.month}
<< ", day=" << int{time.day} << ", hours=" << int{time.hours}
@@ -28,7 +28,7 @@ std::string ToString(const der::GeneralizedTime& time) {
return pretty_time.str();
}
-std::string GetFilePath(const std::string& file_name) {
+std::string GetFilePath(const std::string &file_name) {
return std::string("testdata/parse_certificate_unittest/") + file_name;
}
@@ -36,7 +36,7 @@ std::string GetFilePath(const std::string& file_name) {
// Verifies that parsing the Certificate matches expectations:
// * If expected to fail, emits the expected errors
// * If expected to succeeds, the parsed fields match expectations
-void RunCertificateTest(const std::string& file_name) {
+void RunCertificateTest(const std::string &file_name) {
std::string data;
std::string expected_errors;
std::string expected_tbs_certificate;
@@ -129,7 +129,7 @@ TEST(ParseCertificateTest, AlgorithmNotSequence) {
//
// TODO(eroman): Get rid of the |expected_version| parameter -- this should be
// encoded in the test expectations file.
-void RunTbsCertificateTestGivenVersion(const std::string& file_name,
+void RunTbsCertificateTestGivenVersion(const std::string &file_name,
CertificateVersion expected_version) {
std::string data;
std::string expected_serial_number;
@@ -172,8 +172,9 @@ void RunTbsCertificateTestGivenVersion(const std::string& file_name,
EXPECT_EQ(expected_result, actual_result);
VerifyCertErrors(expected_errors, errors, test_file_path);
- if (!expected_result || !actual_result)
+ if (!expected_result || !actual_result) {
return;
+ }
// Ensure that the ParsedTbsCertificate matches expectations.
EXPECT_EQ(expected_version, parsed.version);
@@ -211,7 +212,7 @@ void RunTbsCertificateTestGivenVersion(const std::string& file_name,
}
}
-void RunTbsCertificateTest(const std::string& file_name) {
+void RunTbsCertificateTest(const std::string &file_name) {
RunTbsCertificateTestGivenVersion(file_name, CertificateVersion::V3);
}
@@ -271,9 +272,7 @@ TEST(ParseTbsCertificateTest, Version3AllOptionals) {
}
// The version was set to v4, which is unrecognized.
-TEST(ParseTbsCertificateTest, Version4) {
- RunTbsCertificateTest("tbs_v4.pem");
-}
+TEST(ParseTbsCertificateTest, Version4) { RunTbsCertificateTest("tbs_v4.pem"); }
// Tests that extraneous data after extensions in a v3 is rejected.
TEST(ParseTbsCertificateTest, Version3DataAfterExtensions) {
@@ -491,7 +490,7 @@ TEST(ParseAuthorityInfoAccess, BasicTests) {
ASSERT_TRUE(ParseAuthorityInfoAccess(der::Input(der), &access_descriptions));
ASSERT_EQ(5u, access_descriptions.size());
{
- const auto& desc = access_descriptions[0];
+ const auto &desc = access_descriptions[0];
EXPECT_EQ(der::Input(kAdOcspOid), desc.access_method_oid);
const uint8_t location_der[] = {0xa4, 0x11, 0x30, 0x0f, 0x31, 0x0d, 0x30,
0x0b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
@@ -499,7 +498,7 @@ TEST(ParseAuthorityInfoAccess, BasicTests) {
EXPECT_EQ(der::Input(location_der), desc.access_location);
}
{
- const auto& desc = access_descriptions[1];
+ const auto &desc = access_descriptions[1];
EXPECT_EQ(der::Input(kAdCaIssuersOid), desc.access_method_oid);
const uint8_t location_der[] = {
0xa4, 0x16, 0x30, 0x14, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04,
@@ -507,7 +506,7 @@ TEST(ParseAuthorityInfoAccess, BasicTests) {
EXPECT_EQ(der::Input(location_der), desc.access_location);
}
{
- const auto& desc = access_descriptions[2];
+ const auto &desc = access_descriptions[2];
const uint8_t method_oid[] = {0x2b, 0x06, 0x01, 0x05,
0x05, 0x07, 0x30, 0x03};
EXPECT_EQ(der::Input(method_oid), desc.access_method_oid);
@@ -518,7 +517,7 @@ TEST(ParseAuthorityInfoAccess, BasicTests) {
EXPECT_EQ(der::Input(location_der), desc.access_location);
}
{
- const auto& desc = access_descriptions[3];
+ const auto &desc = access_descriptions[3];
EXPECT_EQ(der::Input(kAdOcspOid), desc.access_method_oid);
const uint8_t location_der[] = {0x86, 0x17, 0x68, 0x74, 0x74, 0x70, 0x3a,
0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e,
@@ -527,7 +526,7 @@ TEST(ParseAuthorityInfoAccess, BasicTests) {
EXPECT_EQ(der::Input(location_der), desc.access_location);
}
{
- const auto& desc = access_descriptions[4];
+ const auto &desc = access_descriptions[4];
EXPECT_EQ(der::Input(kAdCaIssuersOid), desc.access_method_oid);
const uint8_t location_der[] = {
0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77,
@@ -570,7 +569,7 @@ TEST(ParseAuthorityInfoAccess, NoOcspOrCaIssuersURIs) {
std::vector<AuthorityInfoAccessDescription> access_descriptions;
ASSERT_TRUE(ParseAuthorityInfoAccess(der::Input(der), &access_descriptions));
ASSERT_EQ(1u, access_descriptions.size());
- const auto& desc = access_descriptions[0];
+ const auto &desc = access_descriptions[0];
const uint8_t method_oid[] = {0x2a, 0x03};
EXPECT_EQ(der::Input(method_oid), desc.access_method_oid);
const uint8_t location_der[] = {0xa4, 0x10, 0x30, 0x0e, 0x31, 0x0c,
@@ -657,8 +656,8 @@ TEST(ParseAuthorityInfoAccess, EmptySequence) {
class ParseCrlDistributionPointsTest : public ::testing::Test {
public:
protected:
- bool GetCrlDps(const char* file_name,
- std::vector<ParsedDistributionPoint>* dps) {
+ bool GetCrlDps(const char *file_name,
+ std::vector<ParsedDistributionPoint> *dps) {
std::string cert_bytes;
// Read the test certificate file.
const PemBlockMapping mappings[] = {
@@ -671,16 +670,18 @@ class ParseCrlDistributionPointsTest : public ::testing::Test {
CertErrors errors;
std::shared_ptr<const ParsedCertificate> cert = ParsedCertificate::Create(
bssl::UniquePtr<CRYPTO_BUFFER>(CRYPTO_BUFFER_new(
- reinterpret_cast<const uint8_t*>(cert_bytes.data()),
+ reinterpret_cast<const uint8_t *>(cert_bytes.data()),
cert_bytes.size(), nullptr)),
{}, &errors);
- if (!cert)
+ if (!cert) {
return false;
+ }
auto it = cert->extensions().find(der::Input(kCrlDistributionPointsOid));
- if (it == cert->extensions().end())
+ if (it == cert->extensions().end()) {
return false;
+ }
der::Input crl_dp_tlv = it->second.value;
@@ -703,10 +704,10 @@ TEST_F(ParseCrlDistributionPointsTest, OneUriNoIssuer) {
ASSERT_TRUE(GetCrlDps("crldp_1uri_noissuer.pem", &dps));
ASSERT_EQ(1u, dps.size());
- const ParsedDistributionPoint& dp1 = dps.front();
+ const ParsedDistributionPoint &dp1 = dps.front();
ASSERT_TRUE(dp1.distribution_point_fullname);
- const GeneralNames& fullname = *dp1.distribution_point_fullname;
+ const GeneralNames &fullname = *dp1.distribution_point_fullname;
EXPECT_EQ(GENERAL_NAME_UNIFORM_RESOURCE_IDENTIFIER,
fullname.present_name_types);
ASSERT_EQ(1u, fullname.uniform_resource_identifiers.size());
@@ -723,10 +724,10 @@ TEST_F(ParseCrlDistributionPointsTest, ThreeUrisNoIssuer) {
ASSERT_TRUE(GetCrlDps("crldp_3uri_noissuer.pem", &dps));
ASSERT_EQ(1u, dps.size());
- const ParsedDistributionPoint& dp1 = dps.front();
+ const ParsedDistributionPoint &dp1 = dps.front();
ASSERT_TRUE(dp1.distribution_point_fullname);
- const GeneralNames& fullname = *dp1.distribution_point_fullname;
+ const GeneralNames &fullname = *dp1.distribution_point_fullname;
EXPECT_EQ(GENERAL_NAME_UNIFORM_RESOURCE_IDENTIFIER,
fullname.present_name_types);
ASSERT_EQ(3u, fullname.uniform_resource_identifiers.size());
@@ -747,9 +748,9 @@ TEST_F(ParseCrlDistributionPointsTest, CrlIssuerAsDirname) {
ASSERT_TRUE(GetCrlDps("crldp_issuer_as_dirname.pem", &dps));
ASSERT_EQ(1u, dps.size());
- const ParsedDistributionPoint& dp1 = dps.front();
+ const ParsedDistributionPoint &dp1 = dps.front();
ASSERT_TRUE(dp1.distribution_point_fullname);
- const GeneralNames& fullname = *dp1.distribution_point_fullname;
+ const GeneralNames &fullname = *dp1.distribution_point_fullname;
EXPECT_EQ(GENERAL_NAME_DIRECTORY_NAME, fullname.present_name_types);
// Generated by `ascii2der | xxd -i` from the Name value in
// crldp_issuer_as_dirname.pem.
@@ -791,10 +792,10 @@ TEST_F(ParseCrlDistributionPointsTest, FullnameAsDirname) {
ASSERT_TRUE(GetCrlDps("crldp_full_name_as_dirname.pem", &dps));
ASSERT_EQ(1u, dps.size());
- const ParsedDistributionPoint& dp1 = dps.front();
+ const ParsedDistributionPoint &dp1 = dps.front();
ASSERT_TRUE(dp1.distribution_point_fullname);
- const GeneralNames& fullname = *dp1.distribution_point_fullname;
+ const GeneralNames &fullname = *dp1.distribution_point_fullname;
EXPECT_EQ(GENERAL_NAME_DIRECTORY_NAME, fullname.present_name_types);
// Generated by `ascii2der | xxd -i` from the Name value in
// crldp_full_name_as_dirname.pem.
@@ -869,7 +870,7 @@ TEST_F(ParseCrlDistributionPointsTest, RelativeNameAndReasonsAndMultipleDPs) {
ASSERT_TRUE(ParseCrlDistributionPoints(der::Input(kInputDer), &dps));
ASSERT_EQ(2u, dps.size());
{
- const ParsedDistributionPoint& dp = dps[0];
+ const ParsedDistributionPoint &dp = dps[0];
EXPECT_FALSE(dp.distribution_point_fullname);
ASSERT_TRUE(dp.distribution_point_name_relative_to_crl_issuer);
@@ -893,9 +894,9 @@ TEST_F(ParseCrlDistributionPointsTest, RelativeNameAndReasonsAndMultipleDPs) {
EXPECT_FALSE(dp.crl_issuer);
}
{
- const ParsedDistributionPoint& dp = dps[1];
+ const ParsedDistributionPoint &dp = dps[1];
ASSERT_TRUE(dp.distribution_point_fullname);
- const GeneralNames& fullname = *dp.distribution_point_fullname;
+ const GeneralNames &fullname = *dp.distribution_point_fullname;
EXPECT_EQ(GENERAL_NAME_DIRECTORY_NAME, fullname.present_name_types);
// SET {
// SEQUENCE {
@@ -947,7 +948,7 @@ TEST_F(ParseCrlDistributionPointsTest, NoDistributionPointName) {
std::vector<ParsedDistributionPoint> dps;
ASSERT_TRUE(ParseCrlDistributionPoints(der::Input(kInputDer), &dps));
ASSERT_EQ(1u, dps.size());
- const ParsedDistributionPoint& dp = dps[0];
+ const ParsedDistributionPoint &dp = dps[0];
EXPECT_FALSE(dp.distribution_point_fullname);
EXPECT_FALSE(dp.distribution_point_name_relative_to_crl_issuer);
@@ -995,9 +996,8 @@ TEST_F(ParseCrlDistributionPointsTest, EmptyDistributionPoints) {
}
bool ParseAuthorityKeyIdentifierTestData(
- const char* file_name,
- std::string* backing_bytes,
- ParsedAuthorityKeyIdentifier* authority_key_identifier) {
+ const char *file_name, std::string *backing_bytes,
+ ParsedAuthorityKeyIdentifier *authority_key_identifier) {
// Read the test file.
const PemBlockMapping mappings[] = {
{"AUTHORITY_KEY_IDENTIFIER", backing_bytes},
@@ -1173,4 +1173,4 @@ TEST(ParseSubjectKeyIdentifierTest, ExtraData) {
} // namespace
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/parse_name.cc b/src/pki/parse_name.cc
index db116f8..f1b3a91 100644
--- a/src/pki/parse_name.cc
+++ b/src/pki/parse_name.cc
@@ -6,11 +6,12 @@
#include <cassert>
-#include "string_util.h"
-#include "parse_values.h"
#include <openssl/bytestring.h>
#include <openssl/mem.h>
+#include "parse_values.h"
+#include "string_util.h"
+
namespace bssl {
namespace {
@@ -19,29 +20,30 @@ namespace {
// string on error.
std::string OidToString(der::Input oid) {
CBS cbs;
- CBS_init(&cbs, oid.UnsafeData(), oid.Length());
+ CBS_init(&cbs, oid.data(), oid.size());
bssl::UniquePtr<char> text(CBS_asn1_oid_to_text(&cbs));
- if (!text)
+ if (!text) {
return std::string();
+ }
return text.get();
}
} // namespace
-bool X509NameAttribute::ValueAsString(std::string* out) const {
+bool X509NameAttribute::ValueAsString(std::string *out) const {
switch (value_tag) {
- case der::kTeletexString:
+ case CBS_ASN1_T61STRING:
return der::ParseTeletexStringAsLatin1(value, out);
- case der::kIA5String:
+ case CBS_ASN1_IA5STRING:
return der::ParseIA5String(value, out);
- case der::kPrintableString:
+ case CBS_ASN1_PRINTABLESTRING:
return der::ParsePrintableString(value, out);
- case der::kUtf8String:
- *out = value.AsString();
+ case CBS_ASN1_UTF8STRING:
+ *out = BytesAsStringView(value);
return true;
- case der::kUniversalString:
+ case CBS_ASN1_UNIVERSALSTRING:
return der::ParseUniversalString(value, out);
- case der::kBmpString:
+ case CBS_ASN1_BMPSTRING:
return der::ParseBmpString(value, out);
default:
return false;
@@ -49,27 +51,26 @@ bool X509NameAttribute::ValueAsString(std::string* out) const {
}
bool X509NameAttribute::ValueAsStringWithUnsafeOptions(
- PrintableStringHandling printable_string_handling,
- std::string* out) const {
+ PrintableStringHandling printable_string_handling, std::string *out) const {
if (printable_string_handling == PrintableStringHandling::kAsUTF8Hack &&
- value_tag == der::kPrintableString) {
- *out = value.AsString();
+ value_tag == CBS_ASN1_PRINTABLESTRING) {
+ *out = BytesAsStringView(value);
return true;
}
return ValueAsString(out);
}
-bool X509NameAttribute::ValueAsStringUnsafe(std::string* out) const {
+bool X509NameAttribute::ValueAsStringUnsafe(std::string *out) const {
switch (value_tag) {
- case der::kIA5String:
- case der::kPrintableString:
- case der::kTeletexString:
- case der::kUtf8String:
- *out = value.AsString();
+ case CBS_ASN1_IA5STRING:
+ case CBS_ASN1_PRINTABLESTRING:
+ case CBS_ASN1_T61STRING:
+ case CBS_ASN1_UTF8STRING:
+ *out = BytesAsStringView(value);
return true;
- case der::kUniversalString:
+ case CBS_ASN1_UNIVERSALSTRING:
return der::ParseUniversalString(value, out);
- case der::kBmpString:
+ case CBS_ASN1_BMPSTRING:
return der::ParseBmpString(value, out);
default:
assert(0); // NOTREACHED
@@ -77,7 +78,7 @@ bool X509NameAttribute::ValueAsStringUnsafe(std::string* out) const {
}
}
-bool X509NameAttribute::AsRFC2253String(std::string* out) const {
+bool X509NameAttribute::AsRFC2253String(std::string *out) const {
std::string type_string;
std::string value_string;
// TODO(mattm): Add streetAddress and domainComponent here?
@@ -101,20 +102,21 @@ bool X509NameAttribute::AsRFC2253String(std::string* out) const {
type_string = "emailAddress";
} else {
type_string = OidToString(type);
- if (type_string.empty())
+ if (type_string.empty()) {
return false;
- value_string =
- "#" + bssl::string_util::HexEncode(value.UnsafeData(), value.Length());
+ }
+ value_string = "#" + bssl::string_util::HexEncode(value);
}
if (value_string.empty()) {
std::string unescaped;
- if (!ValueAsStringUnsafe(&unescaped))
+ if (!ValueAsStringUnsafe(&unescaped)) {
return false;
+ }
bool nonprintable = false;
for (unsigned int i = 0; i < unescaped.length(); ++i) {
- unsigned char c = static_cast<unsigned char>(unescaped[i]);
+ uint8_t c = static_cast<uint8_t>(unescaped[i]);
if (i == 0 && c == '#') {
value_string += "\\#";
} else if (i == 0 && c == ' ') {
@@ -127,11 +129,8 @@ bool X509NameAttribute::AsRFC2253String(std::string* out) const {
value_string += c;
} else if (c < 32 || c > 126) {
nonprintable = true;
- std::string h;
- h += c;
value_string +=
- "\\" + bssl::string_util::HexEncode(
- reinterpret_cast<const uint8_t*>(h.data()), h.length());
+ "\\" + bssl::string_util::HexEncode(MakeConstSpan(&c, 1));
} else {
value_string += c;
}
@@ -139,35 +138,39 @@ bool X509NameAttribute::AsRFC2253String(std::string* out) const {
// If we have non-printable characters in a TeletexString, we hex encode
// since we don't handle Teletex control codes.
- if (nonprintable && value_tag == der::kTeletexString)
- value_string =
- "#" + bssl::string_util::HexEncode(value.UnsafeData(), value.Length());
+ if (nonprintable && value_tag == CBS_ASN1_T61STRING) {
+ value_string = "#" + bssl::string_util::HexEncode(value);
+ }
}
*out = type_string + "=" + value_string;
return true;
}
-bool ReadRdn(der::Parser* parser, RelativeDistinguishedName* out) {
+bool ReadRdn(der::Parser *parser, RelativeDistinguishedName *out) {
while (parser->HasMore()) {
der::Parser attr_type_and_value;
- if (!parser->ReadSequence(&attr_type_and_value))
+ if (!parser->ReadSequence(&attr_type_and_value)) {
return false;
+ }
// Read the attribute type, which must be an OBJECT IDENTIFIER.
der::Input type;
- if (!attr_type_and_value.ReadTag(der::kOid, &type))
+ if (!attr_type_and_value.ReadTag(CBS_ASN1_OBJECT, &type)) {
return false;
+ }
// Read the attribute value.
- der::Tag tag;
+ CBS_ASN1_TAG tag;
der::Input value;
- if (!attr_type_and_value.ReadTagAndValue(&tag, &value))
+ if (!attr_type_and_value.ReadTagAndValue(&tag, &value)) {
return false;
+ }
// There should be no more elements in the sequence after reading the
// attribute type and value.
- if (attr_type_and_value.HasMore())
+ if (attr_type_and_value.HasMore()) {
return false;
+ }
out->push_back(X509NameAttribute(type, tag, value));
}
@@ -177,45 +180,51 @@ bool ReadRdn(der::Parser* parser, RelativeDistinguishedName* out) {
return out->size() != 0;
}
-bool ParseName(const der::Input& name_tlv, RDNSequence* out) {
+bool ParseName(der::Input name_tlv, RDNSequence *out) {
der::Parser name_parser(name_tlv);
der::Input name_value;
- if (!name_parser.ReadTag(der::kSequence, &name_value))
+ if (!name_parser.ReadTag(CBS_ASN1_SEQUENCE, &name_value)) {
return false;
+ }
return ParseNameValue(name_value, out);
}
-bool ParseNameValue(const der::Input& name_value, RDNSequence* out) {
+bool ParseNameValue(der::Input name_value, RDNSequence *out) {
der::Parser rdn_sequence_parser(name_value);
while (rdn_sequence_parser.HasMore()) {
der::Parser rdn_parser;
- if (!rdn_sequence_parser.ReadConstructed(der::kSet, &rdn_parser))
+ if (!rdn_sequence_parser.ReadConstructed(CBS_ASN1_SET, &rdn_parser)) {
return false;
+ }
RelativeDistinguishedName type_and_values;
- if (!ReadRdn(&rdn_parser, &type_and_values))
+ if (!ReadRdn(&rdn_parser, &type_and_values)) {
return false;
+ }
out->push_back(type_and_values);
}
return true;
}
-bool ConvertToRFC2253(const RDNSequence& rdn_sequence, std::string* out) {
+bool ConvertToRFC2253(const RDNSequence &rdn_sequence, std::string *out) {
std::string rdns_string;
size_t size = rdn_sequence.size();
for (size_t i = 0; i < size; ++i) {
RelativeDistinguishedName rdn = rdn_sequence[size - i - 1];
std::string rdn_string;
- for (const auto& atv : rdn) {
- if (!rdn_string.empty())
+ for (const auto &atv : rdn) {
+ if (!rdn_string.empty()) {
rdn_string += "+";
+ }
std::string atv_string;
- if (!atv.AsRFC2253String(&atv_string))
+ if (!atv.AsRFC2253String(&atv_string)) {
return false;
+ }
rdn_string += atv_string;
}
- if (!rdns_string.empty())
+ if (!rdns_string.empty()) {
rdns_string += ",";
+ }
rdns_string += rdn_string;
}
@@ -223,4 +232,4 @@ bool ConvertToRFC2253(const RDNSequence& rdn_sequence, std::string* out) {
return true;
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/parse_name.h b/src/pki/parse_name.h
index 2a37c05..be5c53e 100644
--- a/src/pki/parse_name.h
+++ b/src/pki/parse_name.h
@@ -5,13 +5,13 @@
#ifndef BSSL_PKI_PARSE_NAME_H_
#define BSSL_PKI_PARSE_NAME_H_
-#include "fillins/openssl_util.h"
#include <vector>
+#include <openssl/base.h>
+#include <openssl/bytestring.h>
#include "input.h"
#include "parser.h"
-#include "tag.h"
namespace bssl {
@@ -65,8 +65,7 @@ inline constexpr uint8_t kTypeEmailAddressOid[] = {0x2A, 0x86, 0x48, 0x86, 0xF7,
// value AttributeValue
// }
struct OPENSSL_EXPORT X509NameAttribute {
- X509NameAttribute(der::Input in_type,
- der::Tag in_value_tag,
+ X509NameAttribute(der::Input in_type, CBS_ASN1_TAG in_value_tag,
der::Input in_value)
: type(in_type), value_tag(in_value_tag), value(in_value) {}
@@ -78,7 +77,7 @@ struct OPENSSL_EXPORT X509NameAttribute {
// Attempts to convert the value represented by this struct into a
// UTF-8 string and store it in |out|, returning whether the conversion
// was successful.
- [[nodiscard]] bool ValueAsString(std::string* out) const;
+ [[nodiscard]] bool ValueAsString(std::string *out) const;
// Attempts to convert the value represented by this struct into a
// UTF-8 string and store it in |out|, returning whether the conversion
@@ -88,7 +87,7 @@ struct OPENSSL_EXPORT X509NameAttribute {
// Do not use without consulting //net owners.
[[nodiscard]] bool ValueAsStringWithUnsafeOptions(
PrintableStringHandling printable_string_handling,
- std::string* out) const;
+ std::string *out) const;
// Attempts to convert the value represented by this struct into a
// std::string and store it in |out|, returning whether the conversion was
@@ -100,14 +99,14 @@ struct OPENSSL_EXPORT X509NameAttribute {
//
// Note: The conversion doesn't verify that the value corresponds to the
// ASN.1 definition of the value type.
- [[nodiscard]] bool ValueAsStringUnsafe(std::string* out) const;
+ [[nodiscard]] bool ValueAsStringUnsafe(std::string *out) const;
// Formats the NameAttribute per RFC2253 into an ASCII string and stores
// the result in |out|, returning whether the conversion was successful.
- [[nodiscard]] bool AsRFC2253String(std::string* out) const;
+ [[nodiscard]] bool AsRFC2253String(std::string *out) const;
der::Input type;
- der::Tag value_tag;
+ CBS_ASN1_TAG value_tag;
der::Input value;
};
@@ -136,23 +135,23 @@ typedef std::vector<RelativeDistinguishedName> RDNSequence;
//
// The type of the component AttributeValue is determined by the AttributeType;
// in general it will be a DirectoryString.
-[[nodiscard]] OPENSSL_EXPORT bool ReadRdn(der::Parser* parser,
- RelativeDistinguishedName* out);
+[[nodiscard]] OPENSSL_EXPORT bool ReadRdn(der::Parser *parser,
+ RelativeDistinguishedName *out);
// Parses a DER-encoded "Name" as specified by 5280. Returns true on success
// and sets the results in |out|.
-[[nodiscard]] OPENSSL_EXPORT bool ParseName(const der::Input& name_tlv,
- RDNSequence* out);
+[[nodiscard]] OPENSSL_EXPORT bool ParseName(der::Input name_tlv,
+ RDNSequence *out);
// Parses a DER-encoded "Name" value (without the sequence tag & length) as
// specified by 5280. Returns true on success and sets the results in |out|.
-[[nodiscard]] OPENSSL_EXPORT bool ParseNameValue(const der::Input& name_value,
- RDNSequence* out);
+[[nodiscard]] OPENSSL_EXPORT bool ParseNameValue(der::Input name_value,
+ RDNSequence *out);
// Formats a RDNSequence |rdn_sequence| per RFC2253 as an ASCII string and
// stores the result into |out|, and returns whether the conversion was
// successful.
-[[nodiscard]] OPENSSL_EXPORT bool ConvertToRFC2253(const RDNSequence& rdn_sequence,
- std::string* out);
-} // namespace net
+[[nodiscard]] OPENSSL_EXPORT bool ConvertToRFC2253(
+ const RDNSequence &rdn_sequence, std::string *out);
+} // namespace bssl
#endif // BSSL_PKI_PARSE_NAME_H_
diff --git a/src/pki/parse_name_unittest.cc b/src/pki/parse_name_unittest.cc
index fec2e07..ceef9c2 100644
--- a/src/pki/parse_name_unittest.cc
+++ b/src/pki/parse_name_unittest.cc
@@ -4,8 +4,8 @@
#include "parse_name.h"
-#include "test_helpers.h"
#include <gtest/gtest.h>
+#include "test_helpers.h"
namespace bssl {
@@ -16,10 +16,10 @@ namespace {
// |value_type| indicates what ASN.1 type is used to encode the data.
// |suffix| indicates any additional modifications, such as caseswapping,
// whitespace adding, etc.
-::testing::AssertionResult LoadTestData(const std::string& prefix,
- const std::string& value_type,
- const std::string& suffix,
- std::string* result) {
+::testing::AssertionResult LoadTestData(const std::string &prefix,
+ const std::string &value_type,
+ const std::string &suffix,
+ std::string *result) {
std::string path = "testdata/verify_name_match_unittest/names/" + prefix +
"-" + value_type + "-" + suffix + ".pem";
@@ -36,7 +36,7 @@ TEST(ParseNameTest, IA5SafeStringValue) {
const uint8_t der[] = {
0x46, 0x6f, 0x6f, 0x20, 0x62, 0x61, 0x72,
};
- X509NameAttribute value(der::Input(), der::kIA5String, der::Input(der));
+ X509NameAttribute value(der::Input(), CBS_ASN1_IA5STRING, der::Input(der));
std::string result_unsafe;
ASSERT_TRUE(value.ValueAsStringUnsafe(&result_unsafe));
ASSERT_EQ("Foo bar", result_unsafe);
@@ -49,7 +49,7 @@ TEST(ParseNameTest, IA5UnsafeStringValue) {
const uint8_t der[] = {
0x46, 0x6f, 0xFF, 0x20, 0x62, 0x61, 0x72,
};
- X509NameAttribute value(der::Input(), der::kIA5String, der::Input(der));
+ X509NameAttribute value(der::Input(), CBS_ASN1_IA5STRING, der::Input(der));
std::string result_unsafe;
ASSERT_TRUE(value.ValueAsStringUnsafe(&result_unsafe));
ASSERT_EQ("Fo\377 bar", result_unsafe);
@@ -61,7 +61,8 @@ TEST(ParseNameTest, PrintableSafeStringValue) {
const uint8_t der[] = {
0x46, 0x6f, 0x6f, 0x20, 0x62, 0x61, 0x72,
};
- X509NameAttribute value(der::Input(), der::kPrintableString, der::Input(der));
+ X509NameAttribute value(der::Input(), CBS_ASN1_PRINTABLESTRING,
+ der::Input(der));
std::string result_unsafe;
ASSERT_TRUE(value.ValueAsStringUnsafe(&result_unsafe));
ASSERT_EQ("Foo bar", result_unsafe);
@@ -74,7 +75,8 @@ TEST(ParseNameTest, PrintableUnsafeStringValue) {
const uint8_t der[] = {
0x46, 0x6f, 0x5f, 0x20, 0x62, 0x61, 0x72,
};
- X509NameAttribute value(der::Input(), der::kPrintableString, der::Input(der));
+ X509NameAttribute value(der::Input(), CBS_ASN1_PRINTABLESTRING,
+ der::Input(der));
std::string result_unsafe;
ASSERT_TRUE(value.ValueAsStringUnsafe(&result_unsafe));
ASSERT_EQ("Fo_ bar", result_unsafe);
@@ -86,7 +88,8 @@ TEST(ParseNameTest, PrintableStringUnsafeOptions) {
const uint8_t der[] = {
0x46, 0x6f, 0x5f, 0x20, 0x62, 0x61, 0x72,
};
- X509NameAttribute value(der::Input(), der::kPrintableString, der::Input(der));
+ X509NameAttribute value(der::Input(), CBS_ASN1_PRINTABLESTRING,
+ der::Input(der));
std::string result;
ASSERT_FALSE(value.ValueAsStringWithUnsafeOptions(
X509NameAttribute::PrintableStringHandling::kDefault, &result));
@@ -99,7 +102,7 @@ TEST(ParseNameTest, TeletexSafeStringValue) {
const uint8_t der[] = {
0x46, 0x6f, 0x6f, 0x20, 0x62, 0x61, 0x72,
};
- X509NameAttribute value(der::Input(), der::kTeletexString, der::Input(der));
+ X509NameAttribute value(der::Input(), CBS_ASN1_T61STRING, der::Input(der));
std::string result_unsafe;
ASSERT_TRUE(value.ValueAsStringUnsafe(&result_unsafe));
ASSERT_EQ("Foo bar", result_unsafe);
@@ -112,7 +115,7 @@ TEST(ParseNameTest, TeletexLatin1StringValue) {
const uint8_t der[] = {
0x46, 0x6f, 0xd6, 0x20, 0x62, 0x61, 0x72,
};
- X509NameAttribute value(der::Input(), der::kTeletexString, der::Input(der));
+ X509NameAttribute value(der::Input(), CBS_ASN1_T61STRING, der::Input(der));
std::string result_unsafe;
ASSERT_TRUE(value.ValueAsStringUnsafe(&result_unsafe));
ASSERT_EQ("Fo\xd6 bar", result_unsafe);
@@ -125,7 +128,7 @@ TEST(ParseNameTest, ConvertBmpString) {
const uint8_t der[] = {
0x00, 0x66, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x61, 0x00, 0x72,
};
- X509NameAttribute value(der::Input(), der::kBmpString, der::Input(der));
+ X509NameAttribute value(der::Input(), CBS_ASN1_BMPSTRING, der::Input(der));
std::string result_unsafe;
ASSERT_TRUE(value.ValueAsStringUnsafe(&result_unsafe));
ASSERT_EQ("foobar", result_unsafe);
@@ -137,7 +140,7 @@ TEST(ParseNameTest, ConvertBmpString) {
// BmpString must encode characters in pairs of 2 bytes.
TEST(ParseNameTest, ConvertInvalidBmpString) {
const uint8_t der[] = {0x66, 0x6f, 0x6f, 0x62, 0x61, 0x72, 0x72};
- X509NameAttribute value(der::Input(), der::kBmpString, der::Input(der));
+ X509NameAttribute value(der::Input(), CBS_ASN1_BMPSTRING, der::Input(der));
std::string result;
ASSERT_FALSE(value.ValueAsStringUnsafe(&result));
ASSERT_FALSE(value.ValueAsString(&result));
@@ -147,7 +150,8 @@ TEST(ParseNameTest, ConvertUniversalString) {
const uint8_t der[] = {0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x6f,
0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x62,
0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x72};
- X509NameAttribute value(der::Input(), der::kUniversalString, der::Input(der));
+ X509NameAttribute value(der::Input(), CBS_ASN1_UNIVERSALSTRING,
+ der::Input(der));
std::string result_unsafe;
ASSERT_TRUE(value.ValueAsStringUnsafe(&result_unsafe));
ASSERT_EQ("foobar", result_unsafe);
@@ -159,7 +163,8 @@ TEST(ParseNameTest, ConvertUniversalString) {
// UniversalString must encode characters in pairs of 4 bytes.
TEST(ParseNameTest, ConvertInvalidUniversalString) {
const uint8_t der[] = {0x66, 0x6f, 0x6f, 0x62, 0x61, 0x72};
- X509NameAttribute value(der::Input(), der::kUniversalString, der::Input(der));
+ X509NameAttribute value(der::Input(), CBS_ASN1_UNIVERSALSTRING,
+ der::Input(der));
std::string result;
ASSERT_FALSE(value.ValueAsStringUnsafe(&result));
ASSERT_FALSE(value.ValueAsString(&result));
@@ -187,13 +192,13 @@ TEST(ParseNameTest, ValidName) {
ASSERT_EQ(3u, atv.size());
ASSERT_EQ(1u, atv[0].size());
ASSERT_EQ(der::Input(kTypeCountryNameOid), atv[0][0].type);
- ASSERT_EQ("US", atv[0][0].value.AsString());
+ ASSERT_EQ("US", BytesAsStringView(atv[0][0].value));
ASSERT_EQ(1u, atv[1].size());
ASSERT_EQ(der::Input(kTypeOrganizationNameOid), atv[1][0].type);
- ASSERT_EQ("Google Inc.", atv[1][0].value.AsString());
+ ASSERT_EQ("Google Inc.", BytesAsStringView(atv[1][0].value));
ASSERT_EQ(1u, atv[2].size());
ASSERT_EQ(der::Input(kTypeCommonNameOid), atv[2][0].type);
- ASSERT_EQ("Google Test CA", atv[2][0].value.AsString());
+ ASSERT_EQ("Google Test CA", BytesAsStringView(atv[2][0].value));
}
TEST(ParseNameTest, InvalidNameExtraData) {
@@ -358,4 +363,4 @@ TEST(ParseNameTest, RFC2253FormatUTF8) {
ASSERT_EQ("SN=Lu\\C4\\8Di\\C4\\87", output);
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/parse_values.cc b/src/pki/parse_values.cc
index 505a10c..8d07b3d 100644
--- a/src/pki/parse_values.cc
+++ b/src/pki/parse_values.cc
@@ -16,16 +16,18 @@ namespace bssl::der {
namespace {
-bool ParseBoolInternal(const Input& in, bool* out, bool relaxed) {
+bool ParseBoolInternal(Input in, bool *out, bool relaxed) {
// According to ITU-T X.690 section 8.2, a bool is encoded as a single octet
// where the octet of all zeroes is FALSE and a non-zero value for the octet
// is TRUE.
- if (in.Length() != 1)
+ if (in.size() != 1) {
return false;
+ }
ByteReader data(in);
uint8_t byte;
- if (!data.ReadByte(&byte))
+ if (!data.ReadByte(&byte)) {
return false;
+ }
if (byte == 0) {
*out = false;
return true;
@@ -44,7 +46,7 @@ bool ParseBoolInternal(const Input& in, bool* out, bool relaxed) {
// enough to hold 10^digits - 1; the caller must choose an appropriate type
// based on the number of digits they wish to parse.
template <typename UINT>
-bool DecimalStringToUint(ByteReader& in, size_t digits, UINT* out) {
+bool DecimalStringToUint(ByteReader &in, size_t digits, UINT *out) {
UINT value = 0;
for (size_t i = 0; i < digits; ++i) {
uint8_t digit;
@@ -66,11 +68,13 @@ bool DecimalStringToUint(ByteReader& in, size_t digits, UINT* out) {
// hours are between 0 and 23, minutes between 0 and 59, and seconds between
// 0 and 60 (to allow for leap seconds; no validation is done that a leap
// second is on a day that could be a leap second).
-bool ValidateGeneralizedTime(const GeneralizedTime& time) {
- if (time.month < 1 || time.month > 12)
+bool ValidateGeneralizedTime(const GeneralizedTime &time) {
+ if (time.month < 1 || time.month > 12) {
return false;
- if (time.day < 1)
+ }
+ if (time.day < 1) {
return false;
+ }
if (time.hours > 23) {
return false;
}
@@ -88,8 +92,9 @@ bool ValidateGeneralizedTime(const GeneralizedTime& time) {
case 6:
case 9:
case 11:
- if (time.day > 30)
+ if (time.day > 30) {
return false;
+ }
break;
case 1:
case 3:
@@ -98,17 +103,20 @@ bool ValidateGeneralizedTime(const GeneralizedTime& time) {
case 8:
case 10:
case 12:
- if (time.day > 31)
+ if (time.day > 31) {
return false;
+ }
break;
case 2:
if (time.year % 4 == 0 &&
(time.year % 100 != 0 || time.year % 400 == 0)) {
- if (time.day > 29)
+ if (time.day > 29) {
return false;
+ }
} else {
- if (time.day > 28)
+ if (time.day > 28) {
return false;
+ }
}
break;
default:
@@ -120,26 +128,28 @@ bool ValidateGeneralizedTime(const GeneralizedTime& time) {
// Returns the number of bytes of numeric precision in a DER encoded INTEGER
// value. |in| must be a valid DER encoding of an INTEGER for this to work.
//
-// Normally the precision of the number is exactly in.Length(). However when
+// Normally the precision of the number is exactly in.size(). However when
// encoding positive numbers using DER it is possible to have a leading zero
// (to prevent number from being interpreted as negative).
//
// For instance a 160-bit positive number might take 21 bytes to encode. This
// function will return 20 in such a case.
-size_t GetUnsignedIntegerLength(const Input& in) {
+size_t GetUnsignedIntegerLength(Input in) {
der::ByteReader reader(in);
uint8_t first_byte;
- if (!reader.ReadByte(&first_byte))
+ if (!reader.ReadByte(&first_byte)) {
return 0; // Not valid DER as |in| was empty.
+ }
- if (first_byte == 0 && in.Length() > 1)
- return in.Length() - 1;
- return in.Length();
+ if (first_byte == 0 && in.size() > 1) {
+ return in.size() - 1;
+ }
+ return in.size();
}
} // namespace
-bool ParseBool(const Input& in, bool* out) {
+bool ParseBool(Input in, bool *out) {
return ParseBoolInternal(in, out, false /* relaxed */);
}
@@ -147,7 +157,7 @@ bool ParseBool(const Input& in, bool* out) {
// have either all bits zero (false) or all bits one (true). To support
// malformed certs, we recognized the BER encoding instead of failing to
// parse.
-bool ParseBoolRelaxed(const Input& in, bool* out) {
+bool ParseBoolRelaxed(Input in, bool *out) {
return ParseBoolInternal(in, out, true /* relaxed */);
}
@@ -155,9 +165,9 @@ bool ParseBoolRelaxed(const Input& in, bool* out) {
// in the smallest number of octets. If the encoding consists of more than
// one octet, then the bits of the first octet and the most significant bit
// of the second octet must not be all zeroes or all ones.
-bool IsValidInteger(const Input& in, bool* negative) {
+bool IsValidInteger(Input in, bool *negative) {
CBS cbs;
- CBS_init(&cbs, in.UnsafeData(), in.Length());
+ CBS_init(&cbs, in.data(), in.size());
int negative_int;
if (!CBS_is_valid_asn1_integer(&cbs, &negative_int)) {
return false;
@@ -167,15 +177,17 @@ bool IsValidInteger(const Input& in, bool* negative) {
return true;
}
-bool ParseUint64(const Input& in, uint64_t* out) {
+bool ParseUint64(Input in, uint64_t *out) {
// Reject non-minimally encoded numbers and negative numbers.
bool negative;
- if (!IsValidInteger(in, &negative) || negative)
+ if (!IsValidInteger(in, &negative) || negative) {
return false;
+ }
// Reject (non-negative) integers whose value would overflow the output type.
- if (GetUnsignedIntegerLength(in) > sizeof(*out))
+ if (GetUnsignedIntegerLength(in) > sizeof(*out)) {
return false;
+ }
ByteReader reader(in);
uint8_t data;
@@ -189,26 +201,27 @@ bool ParseUint64(const Input& in, uint64_t* out) {
return true;
}
-bool ParseUint8(const Input& in, uint8_t* out) {
+bool ParseUint8(Input in, uint8_t *out) {
// TODO(eroman): Implement this more directly.
uint64_t value;
- if (!ParseUint64(in, &value))
+ if (!ParseUint64(in, &value)) {
return false;
+ }
- if (value > 0xFF)
+ if (value > 0xFF) {
return false;
+ }
*out = static_cast<uint8_t>(value);
return true;
}
-BitString::BitString(const Input& bytes, uint8_t unused_bits)
+BitString::BitString(Input bytes, uint8_t unused_bits)
: bytes_(bytes), unused_bits_(unused_bits) {
BSSL_CHECK(unused_bits < 8);
- BSSL_CHECK(unused_bits == 0 || bytes.Length() != 0);
+ BSSL_CHECK(unused_bits == 0 || !bytes.empty());
// The unused bits must be zero.
- BSSL_CHECK(bytes.Length() == 0 ||
- (bytes[bytes.Length() - 1] & ((1u << unused_bits) - 1)) == 0);
+ BSSL_CHECK(bytes.empty() || (bytes.back() & ((1u << unused_bits) - 1)) == 0);
}
bool BitString::AssertsBit(size_t bit_index) const {
@@ -217,8 +230,9 @@ bool BitString::AssertsBit(size_t bit_index) const {
// If the bit is outside of the bitstring, by definition it is not
// asserted.
- if (byte_index >= bytes_.Length())
+ if (byte_index >= bytes_.size()) {
return false;
+ }
// Within a byte, bits are ordered from most significant to least significant.
// Convert |bit_index| to an index within the |byte_index| byte, measured from
@@ -232,7 +246,7 @@ bool BitString::AssertsBit(size_t bit_index) const {
return 0 != (byte & (1 << bit_index_in_byte));
}
-std::optional<BitString> ParseBitString(const Input& in) {
+std::optional<BitString> ParseBitString(Input in) {
ByteReader reader(in);
// From ITU-T X.690, section 8.6.2.2 (applies to BER, CER, DER):
@@ -241,14 +255,17 @@ std::optional<BitString> ParseBitString(const Input& in) {
// bit 1 as the least significant bit, the number of unused bits in the final
// subsequent octet. The number shall be in the range zero to seven.
uint8_t unused_bits;
- if (!reader.ReadByte(&unused_bits))
+ if (!reader.ReadByte(&unused_bits)) {
return std::nullopt;
- if (unused_bits > 7)
+ }
+ if (unused_bits > 7) {
return std::nullopt;
+ }
Input bytes;
- if (!reader.ReadBytes(reader.BytesLeft(), &bytes))
+ if (!reader.ReadBytes(reader.BytesLeft(), &bytes)) {
return std::nullopt; // Not reachable.
+ }
// Ensure that unused bits in the last byte are set to 0.
if (unused_bits > 0) {
@@ -256,17 +273,19 @@ std::optional<BitString> ParseBitString(const Input& in) {
//
// If the bitstring is empty, there shall be no subsequent octets,
// and the initial octet shall be zero.
- if (bytes.Length() == 0)
+ if (bytes.empty()) {
return std::nullopt;
- uint8_t last_byte = bytes[bytes.Length() - 1];
+ }
+ uint8_t last_byte = bytes.back();
// From ITU-T X.690, section 11.2.1 (applies to CER and DER, but not BER):
//
// Each unused bit in the final octet of the encoding of a bit string value
// shall be set to zero.
uint8_t mask = 0xFF >> (8 - unused_bits);
- if ((mask & last_byte) != 0)
+ if ((mask & last_byte) != 0) {
return std::nullopt;
+ }
}
return BitString(bytes, unused_bits);
@@ -276,25 +295,25 @@ bool GeneralizedTime::InUTCTimeRange() const {
return 1950 <= year && year < 2050;
}
-bool operator<(const GeneralizedTime& lhs, const GeneralizedTime& rhs) {
+bool operator<(const GeneralizedTime &lhs, const GeneralizedTime &rhs) {
return std::tie(lhs.year, lhs.month, lhs.day, lhs.hours, lhs.minutes,
lhs.seconds) < std::tie(rhs.year, rhs.month, rhs.day,
rhs.hours, rhs.minutes, rhs.seconds);
}
-bool operator>(const GeneralizedTime& lhs, const GeneralizedTime& rhs) {
+bool operator>(const GeneralizedTime &lhs, const GeneralizedTime &rhs) {
return rhs < lhs;
}
-bool operator<=(const GeneralizedTime& lhs, const GeneralizedTime& rhs) {
+bool operator<=(const GeneralizedTime &lhs, const GeneralizedTime &rhs) {
return !(lhs > rhs);
}
-bool operator>=(const GeneralizedTime& lhs, const GeneralizedTime& rhs) {
+bool operator>=(const GeneralizedTime &lhs, const GeneralizedTime &rhs) {
return !(lhs < rhs);
}
-bool ParseUTCTime(const Input& in, GeneralizedTime* value) {
+bool ParseUTCTime(Input in, GeneralizedTime *value) {
ByteReader reader(in);
GeneralizedTime time;
if (!DecimalStringToUint(reader, 2, &time.year) ||
@@ -306,20 +325,22 @@ bool ParseUTCTime(const Input& in, GeneralizedTime* value) {
return false;
}
uint8_t zulu;
- if (!reader.ReadByte(&zulu) || zulu != 'Z' || reader.HasMore())
+ if (!reader.ReadByte(&zulu) || zulu != 'Z' || reader.HasMore()) {
return false;
+ }
if (time.year < 50) {
time.year += 2000;
} else {
time.year += 1900;
}
- if (!ValidateGeneralizedTime(time))
+ if (!ValidateGeneralizedTime(time)) {
return false;
+ }
*value = time;
return true;
}
-bool ParseGeneralizedTime(const Input& in, GeneralizedTime* value) {
+bool ParseGeneralizedTime(Input in, GeneralizedTime *value) {
ByteReader reader(in);
GeneralizedTime time;
if (!DecimalStringToUint(reader, 4, &time.year) ||
@@ -331,60 +352,64 @@ bool ParseGeneralizedTime(const Input& in, GeneralizedTime* value) {
return false;
}
uint8_t zulu;
- if (!reader.ReadByte(&zulu) || zulu != 'Z' || reader.HasMore())
+ if (!reader.ReadByte(&zulu) || zulu != 'Z' || reader.HasMore()) {
return false;
- if (!ValidateGeneralizedTime(time))
+ }
+ if (!ValidateGeneralizedTime(time)) {
return false;
+ }
*value = time;
return true;
}
-bool ParseIA5String(Input in, std::string* out) {
- for (char c : in.AsStringView()) {
- if (static_cast<uint8_t>(c) > 127)
+bool ParseIA5String(Input in, std::string *out) {
+ for (uint8_t c : in) {
+ if (c > 127) {
return false;
+ }
}
- *out = in.AsString();
+ *out = BytesAsStringView(in);
return true;
}
-bool ParseVisibleString(Input in, std::string* out) {
+bool ParseVisibleString(Input in, std::string *out) {
// ITU-T X.680:
// VisibleString : "Defining registration number 6" + SPACE
// 6 includes all the characters from '!' .. '~' (33 .. 126), space is 32.
// Also ITU-T X.691 says it much more clearly:
// "for VisibleString [the range] is 32 to 126 ... For VisibleString .. all
// the values in the range are present."
- for (char c : in.AsStringView()) {
- if (static_cast<uint8_t>(c) < 32 || static_cast<uint8_t>(c) > 126)
+ for (uint8_t c : in) {
+ if (c < 32 || c > 126) {
return false;
+ }
}
- *out = in.AsString();
+ *out = BytesAsStringView(in);
return true;
}
-bool ParsePrintableString(Input in, std::string* out) {
- for (char c : in.AsStringView()) {
+bool ParsePrintableString(Input in, std::string *out) {
+ for (uint8_t c : in) {
if (!(OPENSSL_isalpha(c) || c == ' ' || (c >= '\'' && c <= ':') ||
c == '=' || c == '?')) {
return false;
}
}
- *out = in.AsString();
+ *out = BytesAsStringView(in);
return true;
}
-bool ParseTeletexStringAsLatin1(Input in, std::string* out) {
+bool ParseTeletexStringAsLatin1(Input in, std::string *out) {
out->clear();
// Convert from Latin-1 to UTF-8.
- size_t utf8_length = in.Length();
- for (size_t i = 0; i < in.Length(); i++) {
+ size_t utf8_length = in.size();
+ for (size_t i = 0; i < in.size(); i++) {
if (in[i] > 0x7f) {
utf8_length++;
}
}
out->reserve(utf8_length);
- for (size_t i = 0; i < in.Length(); i++) {
+ for (size_t i = 0; i < in.size(); i++) {
uint8_t u = in[i];
if (u <= 0x7f) {
out->push_back(u);
@@ -397,15 +422,15 @@ bool ParseTeletexStringAsLatin1(Input in, std::string* out) {
return true;
}
-bool ParseUniversalString(Input in, std::string* out) {
- if (in.Length() % 4 != 0) {
+bool ParseUniversalString(Input in, std::string *out) {
+ if (in.size() % 4 != 0) {
return false;
}
CBS cbs;
- CBS_init(&cbs, in.UnsafeData(), in.Length());
+ CBS_init(&cbs, in.data(), in.size());
bssl::ScopedCBB cbb;
- if (!CBB_init(cbb.get(), in.Length())) {
+ if (!CBB_init(cbb.get(), in.size())) {
return false;
}
@@ -421,15 +446,15 @@ bool ParseUniversalString(Input in, std::string* out) {
return true;
}
-bool ParseBmpString(Input in, std::string* out) {
- if (in.Length() % 2 != 0) {
+bool ParseBmpString(Input in, std::string *out) {
+ if (in.size() % 2 != 0) {
return false;
}
CBS cbs;
- CBS_init(&cbs, in.UnsafeData(), in.Length());
+ CBS_init(&cbs, in.data(), in.size());
bssl::ScopedCBB cbb;
- if (!CBB_init(cbb.get(), in.Length())) {
+ if (!CBB_init(cbb.get(), in.size())) {
return false;
}
diff --git a/src/pki/parse_values.h b/src/pki/parse_values.h
index ca65873..1b7ed12 100644
--- a/src/pki/parse_values.h
+++ b/src/pki/parse_values.h
@@ -5,23 +5,24 @@
#ifndef BSSL_DER_PARSE_VALUES_H_
#define BSSL_DER_PARSE_VALUES_H_
-#include "fillins/openssl_util.h"
#include <stdint.h>
+#include <optional>
+
+#include <openssl/base.h>
#include "input.h"
-#include <optional>
namespace bssl::der {
// Reads a DER-encoded ASN.1 BOOLEAN value from |in| and puts the resulting
// value in |out|. Returns whether the encoded value could successfully be
// read.
-[[nodiscard]] OPENSSL_EXPORT bool ParseBool(const Input& in, bool* out);
+[[nodiscard]] OPENSSL_EXPORT bool ParseBool(Input in, bool *out);
// Like ParseBool, except it is more relaxed in what inputs it accepts: Any
// value that is a valid BER encoding will be parsed successfully.
-[[nodiscard]] OPENSSL_EXPORT bool ParseBoolRelaxed(const Input& in, bool* out);
+[[nodiscard]] OPENSSL_EXPORT bool ParseBoolRelaxed(Input in, bool *out);
// Checks the validity of a DER-encoded ASN.1 INTEGER value from |in|, and
// determines the sign of the number. Returns true on success and
@@ -31,7 +32,7 @@ namespace bssl::der {
// in: The value portion of an INTEGER.
// negative: Out parameter that is set to true if the number is negative
// and false otherwise (zero is non-negative).
-[[nodiscard]] OPENSSL_EXPORT bool IsValidInteger(const Input& in, bool* negative);
+[[nodiscard]] OPENSSL_EXPORT bool IsValidInteger(Input in, bool *negative);
// Reads a DER-encoded ASN.1 INTEGER value from |in| and puts the resulting
// value in |out|. ASN.1 INTEGERs are arbitrary precision; this function is
@@ -39,10 +40,10 @@ namespace bssl::der {
// and is between 0 and 2^64-1. This function returns false if the value is too
// big to fit in a uint64_t, is negative, or if there is an error reading the
// integer.
-[[nodiscard]] OPENSSL_EXPORT bool ParseUint64(const Input& in, uint64_t* out);
+[[nodiscard]] OPENSSL_EXPORT bool ParseUint64(Input in, uint64_t *out);
// Same as ParseUint64() but for a uint8_t.
-[[nodiscard]] OPENSSL_EXPORT bool ParseUint8(const Input& in, uint8_t* out);
+[[nodiscard]] OPENSSL_EXPORT bool ParseUint8(Input in, uint8_t *out);
// The BitString class is a helper for representing a valid parsed BIT STRING.
//
@@ -57,9 +58,9 @@ class OPENSSL_EXPORT BitString {
// |unused_bits| represents the number of bits in the last octet of |bytes|,
// starting from the least significant bit, that are unused. It MUST be < 8.
// And if bytes is empty, then it MUST be 0.
- BitString(const Input& bytes, uint8_t unused_bits);
+ BitString(Input bytes, uint8_t unused_bits);
- const Input& bytes() const { return bytes_; }
+ Input bytes() const { return bytes_; }
uint8_t unused_bits() const { return unused_bits_; }
// Returns true if the bit string contains 1 at the specified position.
@@ -81,8 +82,7 @@ class OPENSSL_EXPORT BitString {
// resulting octet string and number of unused bits.
//
// On failure, returns std::nullopt.
-[[nodiscard]] OPENSSL_EXPORT std::optional<BitString> ParseBitString(
- const Input& in);
+[[nodiscard]] OPENSSL_EXPORT std::optional<BitString> ParseBitString(Input in);
struct OPENSSL_EXPORT GeneralizedTime {
uint16_t year;
@@ -96,39 +96,40 @@ struct OPENSSL_EXPORT GeneralizedTime {
bool InUTCTimeRange() const;
};
-OPENSSL_EXPORT bool operator<(const GeneralizedTime& lhs,
- const GeneralizedTime& rhs);
-OPENSSL_EXPORT bool operator<=(const GeneralizedTime& lhs,
- const GeneralizedTime& rhs);
-OPENSSL_EXPORT bool operator>(const GeneralizedTime& lhs,
- const GeneralizedTime& rhs);
-OPENSSL_EXPORT bool operator>=(const GeneralizedTime& lhs,
- const GeneralizedTime& rhs);
+OPENSSL_EXPORT bool operator<(const GeneralizedTime &lhs,
+ const GeneralizedTime &rhs);
+OPENSSL_EXPORT bool operator<=(const GeneralizedTime &lhs,
+ const GeneralizedTime &rhs);
+OPENSSL_EXPORT bool operator>(const GeneralizedTime &lhs,
+ const GeneralizedTime &rhs);
+OPENSSL_EXPORT bool operator>=(const GeneralizedTime &lhs,
+ const GeneralizedTime &rhs);
// Reads a DER-encoded ASN.1 UTCTime value from |in| and puts the resulting
// value in |out|, returning true if the UTCTime could be parsed successfully.
-[[nodiscard]] OPENSSL_EXPORT bool ParseUTCTime(const Input& in,
- GeneralizedTime* out);
+[[nodiscard]] OPENSSL_EXPORT bool ParseUTCTime(Input in, GeneralizedTime *out);
// Reads a DER-encoded ASN.1 GeneralizedTime value from |in| and puts the
// resulting value in |out|, returning true if the GeneralizedTime could
// be parsed successfully. This function is even more restrictive than the
// DER rules - it follows the rules from RFC5280, which does not allow for
// fractional seconds.
-[[nodiscard]] OPENSSL_EXPORT bool ParseGeneralizedTime(const Input& in,
- GeneralizedTime* out);
+[[nodiscard]] OPENSSL_EXPORT bool ParseGeneralizedTime(Input in,
+ GeneralizedTime *out);
// Reads a DER-encoded ASN.1 IA5String value from |in| and stores the result in
// |out| as ASCII, returning true if successful.
-[[nodiscard]] OPENSSL_EXPORT bool ParseIA5String(Input in, std::string* out);
+[[nodiscard]] OPENSSL_EXPORT bool ParseIA5String(Input in, std::string *out);
// Reads a DER-encoded ASN.1 VisibleString value from |in| and stores the result
// in |out| as ASCII, returning true if successful.
-[[nodiscard]] OPENSSL_EXPORT bool ParseVisibleString(Input in, std::string* out);
+[[nodiscard]] OPENSSL_EXPORT bool ParseVisibleString(Input in,
+ std::string *out);
// Reads a DER-encoded ASN.1 PrintableString value from |in| and stores the
// result in |out| as ASCII, returning true if successful.
-[[nodiscard]] OPENSSL_EXPORT bool ParsePrintableString(Input in, std::string* out);
+[[nodiscard]] OPENSSL_EXPORT bool ParsePrintableString(Input in,
+ std::string *out);
// Reads a DER-encoded ASN.1 TeletexString value from |in|, treating it as
// Latin-1, and stores the result in |out| as UTF-8, returning true if
@@ -137,15 +138,16 @@ OPENSSL_EXPORT bool operator>=(const GeneralizedTime& lhs,
// This is for compatibility with legacy implementations that would use Latin-1
// encoding but tag it as TeletexString.
[[nodiscard]] OPENSSL_EXPORT bool ParseTeletexStringAsLatin1(Input in,
- std::string* out);
+ std::string *out);
// Reads a DER-encoded ASN.1 UniversalString value from |in| and stores the
// result in |out| as UTF-8, returning true if successful.
-[[nodiscard]] OPENSSL_EXPORT bool ParseUniversalString(Input in, std::string* out);
+[[nodiscard]] OPENSSL_EXPORT bool ParseUniversalString(Input in,
+ std::string *out);
// Reads a DER-encoded ASN.1 BMPString value from |in| and stores the
// result in |out| as UTF-8, returning true if successful.
-[[nodiscard]] OPENSSL_EXPORT bool ParseBmpString(Input in, std::string* out);
+[[nodiscard]] OPENSSL_EXPORT bool ParseBmpString(Input in, std::string *out);
} // namespace bssl::der
diff --git a/src/pki/parse_values_unittest.cc b/src/pki/parse_values_unittest.cc
index 7eab66a..e29b4b9 100644
--- a/src/pki/parse_values_unittest.cc
+++ b/src/pki/parse_values_unittest.cc
@@ -13,10 +13,10 @@ namespace bssl::der::test {
namespace {
template <size_t N>
-Input FromStringLiteral(const char(&data)[N]) {
+Input FromStringLiteral(const char (&data)[N]) {
// Strings are null-terminated. The null terminating byte shouldn't be
// included in the Input, so the size is N - 1 instead of N.
- return Input(reinterpret_cast<const uint8_t*>(data), N - 1);
+ return Input(reinterpret_cast<const uint8_t *>(data), N - 1);
}
} // namespace
@@ -127,9 +127,8 @@ TEST(ParseValuesTest, ParseTimes) {
ParseGeneralizedTime(FromStringLiteral("20001231010203Z\0"), &out));
// Check what happens when a null byte is in the middle of the input.
- EXPECT_FALSE(ParseGeneralizedTime(FromStringLiteral(
- "200\0"
- "1231010203Z"),
+ EXPECT_FALSE(ParseGeneralizedTime(FromStringLiteral("200\0"
+ "1231010203Z"),
&out));
// The year can't be in hex.
@@ -214,7 +213,7 @@ const Uint64TestData kUint64TestData[] = {
TEST(ParseValuesTest, ParseUint64) {
for (size_t i = 0; i < std::size(kUint64TestData); i++) {
- const Uint64TestData& test_case = kUint64TestData[i];
+ const Uint64TestData &test_case = kUint64TestData[i];
SCOPED_TRACE(i);
uint64_t result;
@@ -251,7 +250,7 @@ const Uint8TestData kUint8TestData[] = {
TEST(ParseValuesTest, ParseUint8) {
for (size_t i = 0; i < std::size(kUint8TestData); i++) {
- const Uint8TestData& test_case = kUint8TestData[i];
+ const Uint8TestData &test_case = kUint8TestData[i];
SCOPED_TRACE(i);
uint8_t result;
@@ -297,7 +296,7 @@ const IsValidIntegerTestData kIsValidIntegerTestData[] = {
TEST(ParseValuesTest, IsValidInteger) {
for (size_t i = 0; i < std::size(kIsValidIntegerTestData); i++) {
- const auto& test_case = kIsValidIntegerTestData[i];
+ const auto &test_case = kIsValidIntegerTestData[i];
SCOPED_TRACE(i);
bool negative;
@@ -318,7 +317,7 @@ TEST(ParseValuesTest, ParseBitStringEmptyNoUnusedBits) {
ASSERT_TRUE(bit_string.has_value());
EXPECT_EQ(0u, bit_string->unused_bits());
- EXPECT_EQ(0u, bit_string->bytes().Length());
+ EXPECT_EQ(0u, bit_string->bytes().size());
EXPECT_FALSE(bit_string->AssertsBit(0));
EXPECT_FALSE(bit_string->AssertsBit(1));
@@ -350,7 +349,7 @@ TEST(ParseValuesTest, ParseBitStringSevenOneBits) {
ASSERT_TRUE(bit_string.has_value());
EXPECT_EQ(1u, bit_string->unused_bits());
- EXPECT_EQ(1u, bit_string->bytes().Length());
+ EXPECT_EQ(1u, bit_string->bytes().size());
EXPECT_EQ(0xFE, bit_string->bytes()[0]);
EXPECT_TRUE(bit_string->AssertsBit(0));
diff --git a/src/pki/parsed_certificate.cc b/src/pki/parsed_certificate.cc
index 1c94830..9e23d30 100644
--- a/src/pki/parsed_certificate.cc
+++ b/src/pki/parsed_certificate.cc
@@ -4,14 +4,16 @@
#include "parsed_certificate.h"
+#include <openssl/bytestring.h>
+#include <openssl/pool.h>
+
#include "cert_errors.h"
#include "certificate_policies.h"
#include "extended_key_usage.h"
#include "name_constraints.h"
+#include "parser.h"
#include "signature_algorithm.h"
#include "verify_name_match.h"
-#include "parser.h"
-#include <openssl/pool.h>
namespace bssl {
@@ -49,17 +51,18 @@ DEFINE_CERT_ERROR_ID(kFailedParsingAuthorityKeyIdentifier,
DEFINE_CERT_ERROR_ID(kFailedParsingSubjectKeyIdentifier,
"Failed parsing subject key identifier");
-[[nodiscard]] bool GetSequenceValue(const der::Input& tlv, der::Input* value) {
+[[nodiscard]] bool GetSequenceValue(der::Input tlv, der::Input *value) {
der::Parser parser(tlv);
- return parser.ReadTag(der::kSequence, value) && !parser.HasMore();
+ return parser.ReadTag(CBS_ASN1_SEQUENCE, value) && !parser.HasMore();
}
} // namespace
-bool ParsedCertificate::GetExtension(const der::Input& extension_oid,
- ParsedExtension* parsed_extension) const {
- if (!tbs_.extensions_tlv)
+bool ParsedCertificate::GetExtension(der::Input extension_oid,
+ ParsedExtension *parsed_extension) const {
+ if (!tbs_.extensions_tlv) {
return false;
+ }
auto it = extensions_.find(extension_oid);
if (it == extensions_.end()) {
@@ -77,13 +80,13 @@ ParsedCertificate::~ParsedCertificate() = default;
// static
std::shared_ptr<const ParsedCertificate> ParsedCertificate::Create(
bssl::UniquePtr<CRYPTO_BUFFER> backing_data,
- const ParseCertificateOptions& options,
- CertErrors* errors) {
+ const ParseCertificateOptions &options, CertErrors *errors) {
// |errors| is an optional parameter, but to keep the code simpler, use a
// dummy object when one wasn't provided.
CertErrors unused_errors;
- if (!errors)
+ if (!errors) {
errors = &unused_errors;
+ }
auto result = std::make_shared<ParsedCertificate>(PrivateConstructor{});
result->cert_data_ = std::move(backing_data);
@@ -182,7 +185,7 @@ std::shared_ptr<const ParsedCertificate> ParsedCertificate::Create(
// extension (e.g., a key bound only to an email address or URI), then the
// subject name MUST be an empty sequence and the subjectAltName extension
// MUST be critical.
- if (subject_value.Length() == 0 &&
+ if (subject_value.empty() &&
!result->subject_alt_names_extension_.critical) {
errors->AddError(kSubjectAltNameNotCritical);
return nullptr;
@@ -280,15 +283,16 @@ std::shared_ptr<const ParsedCertificate> ParsedCertificate::Create(
// static
bool ParsedCertificate::CreateAndAddToVector(
bssl::UniquePtr<CRYPTO_BUFFER> cert_data,
- const ParseCertificateOptions& options,
- std::vector<std::shared_ptr<const bssl::ParsedCertificate>>* chain,
- CertErrors* errors) {
+ const ParseCertificateOptions &options,
+ std::vector<std::shared_ptr<const bssl::ParsedCertificate>> *chain,
+ CertErrors *errors) {
std::shared_ptr<const ParsedCertificate> cert(
Create(std::move(cert_data), options, errors));
- if (!cert)
+ if (!cert) {
return false;
+ }
chain->push_back(std::move(cert));
return true;
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/parsed_certificate.h b/src/pki/parsed_certificate.h
index 3f872f0..a4043cb 100644
--- a/src/pki/parsed_certificate.h
+++ b/src/pki/parsed_certificate.h
@@ -5,18 +5,17 @@
#ifndef BSSL_PKI_PARSED_CERTIFICATE_H_
#define BSSL_PKI_PARSED_CERTIFICATE_H_
-#include "fillins/openssl_util.h"
#include <map>
#include <memory>
+#include <optional>
#include <vector>
+#include <openssl/base.h>
#include "certificate_policies.h"
+#include "input.h"
#include "parse_certificate.h"
#include "signature_algorithm.h"
-#include "input.h"
-#include <optional>
-#include <openssl/base.h>
namespace bssl {
@@ -46,7 +45,7 @@ class OPENSSL_EXPORT ParsedCertificate {
};
public:
-~ParsedCertificate();
+ ~ParsedCertificate();
// Map from OID to ParsedExtension.
using ExtensionsMap = std::map<der::Input, ParsedExtension>;
@@ -57,8 +56,7 @@ class OPENSSL_EXPORT ParsedCertificate {
// information added to it.
static std::shared_ptr<const ParsedCertificate> Create(
bssl::UniquePtr<CRYPTO_BUFFER> cert_data,
- const ParseCertificateOptions& options,
- CertErrors* errors);
+ const ParseCertificateOptions &options, CertErrors *errors);
// Creates a ParsedCertificate by copying the provided |data|, and appends it
// to |chain|. Returns true if the certificate was successfully parsed and
@@ -68,32 +66,32 @@ class OPENSSL_EXPORT ParsedCertificate {
// information added to it.
static bool CreateAndAddToVector(
bssl::UniquePtr<CRYPTO_BUFFER> cert_data,
- const ParseCertificateOptions& options,
- std::vector<std::shared_ptr<const bssl::ParsedCertificate>>* chain,
- CertErrors* errors);
+ const ParseCertificateOptions &options,
+ std::vector<std::shared_ptr<const bssl::ParsedCertificate>> *chain,
+ CertErrors *errors);
explicit ParsedCertificate(PrivateConstructor);
-
- ParsedCertificate(const ParsedCertificate&) = delete;
- ParsedCertificate& operator=(const ParsedCertificate&) = delete;
+
+ ParsedCertificate(const ParsedCertificate &) = delete;
+ ParsedCertificate &operator=(const ParsedCertificate &) = delete;
// Returns the DER-encoded certificate data for this cert.
- const der::Input& der_cert() const { return cert_; }
+ der::Input der_cert() const { return cert_; }
// Returns the CRYPTO_BUFFER backing this object.
- CRYPTO_BUFFER* cert_buffer() const { return cert_data_.get(); }
+ CRYPTO_BUFFER *cert_buffer() const { return cert_data_.get(); }
// Accessors for raw fields of the Certificate.
- const der::Input& tbs_certificate_tlv() const { return tbs_certificate_tlv_; }
+ der::Input tbs_certificate_tlv() const { return tbs_certificate_tlv_; }
- const der::Input& signature_algorithm_tlv() const {
+ der::Input signature_algorithm_tlv() const {
return signature_algorithm_tlv_;
}
- const der::BitString& signature_value() const { return signature_value_; }
+ const der::BitString &signature_value() const { return signature_value_; }
// Accessor for struct containing raw fields of the TbsCertificate.
- const ParsedTbsCertificate& tbs() const { return tbs_; }
+ const ParsedTbsCertificate &tbs() const { return tbs_; }
// Returns the signatureAlgorithm of the Certificate (not the tbsCertificate).
// If the signature algorithm is unknown/unsupported, this returns nullopt.
@@ -127,7 +125,7 @@ class OPENSSL_EXPORT ParsedCertificate {
// Returns the ParsedBasicConstraints struct. Caller must check
// has_basic_constraints() before accessing this.
- const ParsedBasicConstraints& basic_constraints() const {
+ const ParsedBasicConstraints &basic_constraints() const {
BSSL_CHECK(has_basic_constraints_);
return basic_constraints_;
}
@@ -137,7 +135,7 @@ class OPENSSL_EXPORT ParsedCertificate {
// Returns the KeyUsage BitString. Caller must check
// has_key_usage() before accessing this.
- const der::BitString& key_usage() const {
+ const der::BitString &key_usage() const {
BSSL_CHECK(has_key_usage_);
return key_usage_;
}
@@ -147,7 +145,7 @@ class OPENSSL_EXPORT ParsedCertificate {
// Returns the ExtendedKeyUsage key purpose OIDs. Caller must check
// has_extended_key_usage() before accessing this.
- const std::vector<der::Input>& extended_key_usage() const {
+ const std::vector<der::Input> &extended_key_usage() const {
BSSL_CHECK(has_extended_key_usage_);
return extended_key_usage_;
}
@@ -158,13 +156,13 @@ class OPENSSL_EXPORT ParsedCertificate {
// Returns the ParsedExtension struct for the SubjectAltName extension.
// If the cert did not have a SubjectAltName extension, this will be a
// default-initialized ParsedExtension struct.
- const ParsedExtension& subject_alt_names_extension() const {
+ const ParsedExtension &subject_alt_names_extension() const {
return subject_alt_names_extension_;
}
// Returns the GeneralNames class parsed from SubjectAltName extension, or
// nullptr if no SubjectAltName extension was present.
- const GeneralNames* subject_alt_names() const {
+ const GeneralNames *subject_alt_names() const {
return subject_alt_names_.get();
}
@@ -173,7 +171,7 @@ class OPENSSL_EXPORT ParsedCertificate {
// Returns the parsed NameConstraints extension. Must not be called if
// has_name_constraints() is false.
- const NameConstraints& name_constraints() const {
+ const NameConstraints &name_constraints() const {
BSSL_CHECK(name_constraints_);
return *name_constraints_;
}
@@ -182,24 +180,24 @@ class OPENSSL_EXPORT ParsedCertificate {
bool has_authority_info_access() const { return has_authority_info_access_; }
// Returns the ParsedExtension struct for the AuthorityInfoAccess extension.
- const ParsedExtension& authority_info_access_extension() const {
+ const ParsedExtension &authority_info_access_extension() const {
return authority_info_access_extension_;
}
// Returns any caIssuers URIs from the AuthorityInfoAccess extension.
- const std::vector<std::string_view>& ca_issuers_uris() const {
+ const std::vector<std::string_view> &ca_issuers_uris() const {
return ca_issuers_uris_;
}
// Returns any OCSP URIs from the AuthorityInfoAccess extension.
- const std::vector<std::string_view>& ocsp_uris() const { return ocsp_uris_; }
+ const std::vector<std::string_view> &ocsp_uris() const { return ocsp_uris_; }
// Returns true if the certificate has a Policies extension.
bool has_policy_oids() const { return has_policy_oids_; }
// Returns the policy OIDs. Caller must check has_policy_oids() before
// accessing this.
- const std::vector<der::Input>& policy_oids() const {
+ const std::vector<der::Input> &policy_oids() const {
BSSL_CHECK(has_policy_oids());
return policy_oids_;
}
@@ -209,7 +207,7 @@ class OPENSSL_EXPORT ParsedCertificate {
// Returns the ParsedPolicyConstraints struct. Caller must check
// has_policy_constraints() before accessing this.
- const ParsedPolicyConstraints& policy_constraints() const {
+ const ParsedPolicyConstraints &policy_constraints() const {
BSSL_CHECK(has_policy_constraints_);
return policy_constraints_;
}
@@ -219,36 +217,36 @@ class OPENSSL_EXPORT ParsedCertificate {
// Returns the PolicyMappings extension. Caller must check
// has_policy_mappings() before accessing this.
- const std::vector<ParsedPolicyMapping>& policy_mappings() const {
+ const std::vector<ParsedPolicyMapping> &policy_mappings() const {
BSSL_CHECK(has_policy_mappings_);
return policy_mappings_;
}
// Returns the Inhibit Any Policy extension.
- const std::optional<uint8_t>& inhibit_any_policy() const {
+ const std::optional<uint8_t> &inhibit_any_policy() const {
return inhibit_any_policy_;
}
// Returns the AuthorityKeyIdentifier extension, or nullopt if there wasn't
// one.
- const std::optional<ParsedAuthorityKeyIdentifier>& authority_key_identifier()
+ const std::optional<ParsedAuthorityKeyIdentifier> &authority_key_identifier()
const {
return authority_key_identifier_;
}
// Returns the SubjectKeyIdentifier extension, or nullopt if there wasn't
// one.
- const std::optional<der::Input>& subject_key_identifier() const {
+ const std::optional<der::Input> &subject_key_identifier() const {
return subject_key_identifier_;
}
// Returns a map of all the extensions in the certificate.
- const ExtensionsMap& extensions() const { return extensions_; }
+ const ExtensionsMap &extensions() const { return extensions_; }
// Gets the value for extension matching |extension_oid|. Returns false if the
// extension is not present.
- bool GetExtension(const der::Input& extension_oid,
- ParsedExtension* parsed_extension) const;
+ bool GetExtension(der::Input extension_oid,
+ ParsedExtension *parsed_extension) const;
private:
// The backing store for the certificate data.
@@ -325,6 +323,6 @@ class OPENSSL_EXPORT ParsedCertificate {
ExtensionsMap extensions_;
};
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_PARSED_CERTIFICATE_H_
diff --git a/src/pki/parsed_certificate_unittest.cc b/src/pki/parsed_certificate_unittest.cc
index b3ee6a0..2b4d352 100644
--- a/src/pki/parsed_certificate_unittest.cc
+++ b/src/pki/parsed_certificate_unittest.cc
@@ -4,12 +4,12 @@
#include "parsed_certificate.h"
+#include <gtest/gtest.h>
+#include <openssl/pool.h>
#include "cert_errors.h"
+#include "input.h"
#include "parse_certificate.h"
#include "test_helpers.h"
-#include "input.h"
-#include <gtest/gtest.h>
-#include <openssl/pool.h>
// TODO(eroman): Add tests for parsing of policy mappings.
@@ -17,7 +17,7 @@ namespace bssl {
namespace {
-std::string GetFilePath(const std::string& file_name) {
+std::string GetFilePath(const std::string &file_name) {
return std::string("testdata/parse_certificate_unittest/") + file_name;
}
@@ -26,8 +26,7 @@ std::string GetFilePath(const std::string& file_name) {
// Returns nullptr if the certificate parsing failed, and verifies that any
// errors match the ERRORS block in the .pem file.
std::shared_ptr<const ParsedCertificate> ParseCertificateFromFile(
- const std::string& file_name,
- const ParseCertificateOptions& options) {
+ const std::string &file_name, const ParseCertificateOptions &options) {
std::string data;
std::string expected_errors;
@@ -41,15 +40,17 @@ std::shared_ptr<const ParsedCertificate> ParseCertificateFromFile(
CertErrors errors;
std::shared_ptr<const ParsedCertificate> cert = ParsedCertificate::Create(
- bssl::UniquePtr<CRYPTO_BUFFER>(CRYPTO_BUFFER_new(
- reinterpret_cast<const uint8_t*>(data.data()), data.size(), nullptr)),
+ bssl::UniquePtr<CRYPTO_BUFFER>(
+ CRYPTO_BUFFER_new(reinterpret_cast<const uint8_t *>(data.data()),
+ data.size(), nullptr)),
options, &errors);
// The errors are baselined for |!allow_invalid_serial_numbers|. So if
// requesting a non-default option skip the error checks.
// TODO(eroman): This is ugly.
- if (!options.allow_invalid_serial_numbers)
+ if (!options.allow_invalid_serial_numbers) {
VerifyCertErrors(expected_errors, errors, test_file_path);
+ }
// Every parse failure being tested should emit error information.
if (!cert) {
@@ -231,7 +232,7 @@ TEST(ParsedCertificateTest, ExtendedKeyUsage) {
ASSERT_TRUE(cert->GetExtension(der::Input(kExtKeyUsageOid), &extension));
EXPECT_FALSE(extension.critical);
- EXPECT_EQ(45u, extension.value.Length());
+ EXPECT_EQ(45u, extension.value.size());
EXPECT_TRUE(cert->has_extended_key_usage());
EXPECT_EQ(4u, cert->extended_key_usage().size());
@@ -267,7 +268,7 @@ TEST(ParsedCertificateTest, Policies) {
cert->GetExtension(der::Input(kCertificatePoliciesOid), &extension));
EXPECT_FALSE(extension.critical);
- EXPECT_EQ(95u, extension.value.Length());
+ EXPECT_EQ(95u, extension.value.size());
EXPECT_TRUE(cert->has_policy_oids());
EXPECT_EQ(2u, cert->policy_oids().size());
@@ -319,7 +320,7 @@ TEST(ParsedCertificateTest, ExtensionsReal) {
cert->GetExtension(der::Input(kCertificatePoliciesOid), &extension));
EXPECT_FALSE(extension.critical);
- EXPECT_EQ(16u, extension.value.Length());
+ EXPECT_EQ(16u, extension.value.size());
// TODO(eroman): Verify the other extensions' values.
}
@@ -590,4 +591,4 @@ TEST(ParsedCertificateTest, AuthourityKeyIdentifierNotSequence) {
} // namespace
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/parser.cc b/src/pki/parser.cc
index 623da92..51f2661 100644
--- a/src/pki/parser.cc
+++ b/src/pki/parser.cc
@@ -4,24 +4,20 @@
#include "parser.h"
-#include "parse_values.h"
#include <openssl/base.h>
+#include "parse_values.h"
namespace bssl::der {
-Parser::Parser() {
- CBS_init(&cbs_, nullptr, 0);
-}
+Parser::Parser() { CBS_init(&cbs_, nullptr, 0); }
-Parser::Parser(const Input& input) {
- CBS_init(&cbs_, input.UnsafeData(), input.Length());
-}
+Parser::Parser(Input input) { CBS_init(&cbs_, input.data(), input.size()); }
-bool Parser::PeekTagAndValue(Tag* tag, Input* out) {
+bool Parser::PeekTagAndValue(CBS_ASN1_TAG *tag, Input *out) {
CBS peeker = cbs_;
CBS tmp_out;
size_t header_len;
- unsigned tag_value;
+ CBS_ASN1_TAG tag_value;
if (!CBS_get_any_asn1_element(&peeker, &tmp_out, &tag_value, &header_len) ||
!CBS_skip(&tmp_out, header_len)) {
return false;
@@ -33,38 +29,39 @@ bool Parser::PeekTagAndValue(Tag* tag, Input* out) {
}
bool Parser::Advance() {
- if (advance_len_ == 0)
+ if (advance_len_ == 0) {
return false;
+ }
bool ret = !!CBS_skip(&cbs_, advance_len_);
advance_len_ = 0;
return ret;
}
-bool Parser::HasMore() {
- return CBS_len(&cbs_) > 0;
-}
+bool Parser::HasMore() { return CBS_len(&cbs_) > 0; }
-bool Parser::ReadRawTLV(Input* out) {
+bool Parser::ReadRawTLV(Input *out) {
CBS tmp_out;
- if (!CBS_get_any_asn1_element(&cbs_, &tmp_out, nullptr, nullptr))
+ if (!CBS_get_any_asn1_element(&cbs_, &tmp_out, nullptr, nullptr)) {
return false;
+ }
*out = Input(CBS_data(&tmp_out), CBS_len(&tmp_out));
return true;
}
-bool Parser::ReadTagAndValue(Tag* tag, Input* out) {
- if (!PeekTagAndValue(tag, out))
+bool Parser::ReadTagAndValue(CBS_ASN1_TAG *tag, Input *out) {
+ if (!PeekTagAndValue(tag, out)) {
return false;
+ }
BSSL_CHECK(Advance());
return true;
}
-bool Parser::ReadOptionalTag(Tag tag, std::optional<Input>* out) {
+bool Parser::ReadOptionalTag(CBS_ASN1_TAG tag, std::optional<Input> *out) {
if (!HasMore()) {
*out = std::nullopt;
return true;
}
- Tag actual_tag;
+ CBS_ASN1_TAG actual_tag;
Input value;
if (!PeekTagAndValue(&actual_tag, &value)) {
return false;
@@ -79,22 +76,23 @@ bool Parser::ReadOptionalTag(Tag tag, std::optional<Input>* out) {
return true;
}
-bool Parser::ReadOptionalTag(Tag tag, Input* out, bool* present) {
+bool Parser::ReadOptionalTag(CBS_ASN1_TAG tag, Input *out, bool *present) {
std::optional<Input> tmp_out;
- if (!ReadOptionalTag(tag, &tmp_out))
+ if (!ReadOptionalTag(tag, &tmp_out)) {
return false;
+ }
*present = tmp_out.has_value();
*out = tmp_out.value_or(der::Input());
return true;
}
-bool Parser::SkipOptionalTag(Tag tag, bool* present) {
+bool Parser::SkipOptionalTag(CBS_ASN1_TAG tag, bool *present) {
Input out;
return ReadOptionalTag(tag, &out, present);
}
-bool Parser::ReadTag(Tag tag, Input* out) {
- Tag actual_tag;
+bool Parser::ReadTag(CBS_ASN1_TAG tag, Input *out) {
+ CBS_ASN1_TAG actual_tag;
Input value;
if (!PeekTagAndValue(&actual_tag, &value) || actual_tag != tag) {
return false;
@@ -104,52 +102,58 @@ bool Parser::ReadTag(Tag tag, Input* out) {
return true;
}
-bool Parser::SkipTag(Tag tag) {
+bool Parser::SkipTag(CBS_ASN1_TAG tag) {
Input out;
return ReadTag(tag, &out);
}
// Type-specific variants of ReadTag
-bool Parser::ReadConstructed(Tag tag, Parser* out) {
- if (!IsConstructed(tag))
+bool Parser::ReadConstructed(CBS_ASN1_TAG tag, Parser *out) {
+ if (!(tag & CBS_ASN1_CONSTRUCTED)) {
return false;
+ }
Input data;
- if (!ReadTag(tag, &data))
+ if (!ReadTag(tag, &data)) {
return false;
+ }
*out = Parser(data);
return true;
}
-bool Parser::ReadSequence(Parser* out) {
- return ReadConstructed(kSequence, out);
+bool Parser::ReadSequence(Parser *out) {
+ return ReadConstructed(CBS_ASN1_SEQUENCE, out);
}
-bool Parser::ReadUint8(uint8_t* out) {
+bool Parser::ReadUint8(uint8_t *out) {
Input encoded_int;
- if (!ReadTag(kInteger, &encoded_int))
+ if (!ReadTag(CBS_ASN1_INTEGER, &encoded_int)) {
return false;
+ }
return ParseUint8(encoded_int, out);
}
-bool Parser::ReadUint64(uint64_t* out) {
+bool Parser::ReadUint64(uint64_t *out) {
Input encoded_int;
- if (!ReadTag(kInteger, &encoded_int))
+ if (!ReadTag(CBS_ASN1_INTEGER, &encoded_int)) {
return false;
+ }
return ParseUint64(encoded_int, out);
}
std::optional<BitString> Parser::ReadBitString() {
Input value;
- if (!ReadTag(kBitString, &value))
+ if (!ReadTag(CBS_ASN1_BITSTRING, &value)) {
return std::nullopt;
+ }
return ParseBitString(value);
}
-bool Parser::ReadGeneralizedTime(GeneralizedTime* out) {
+bool Parser::ReadGeneralizedTime(GeneralizedTime *out) {
Input value;
- if (!ReadTag(kGeneralizedTime, &value))
+ if (!ReadTag(CBS_ASN1_GENERALIZEDTIME, &value)) {
return false;
+ }
return ParseGeneralizedTime(value, out);
}
diff --git a/src/pki/parser.h b/src/pki/parser.h
index 6716968..64599b5 100644
--- a/src/pki/parser.h
+++ b/src/pki/parser.h
@@ -5,15 +5,15 @@
#ifndef BSSL_DER_PARSER_H_
#define BSSL_DER_PARSER_H_
-#include "fillins/openssl_util.h"
#include <stdint.h>
-
-#include "input.h"
-#include "tag.h"
#include <optional>
+
+#include <openssl/base.h>
#include <openssl/bytestring.h>
+#include "input.h"
+
namespace bssl::der {
class BitString;
@@ -71,7 +71,7 @@ struct GeneralizedTime;
// following code shows an example of how to parse the quux field from the
// encoded data.
//
-// bool ReadQuux(const Input& encoded_value, Input* quux_out) {
+// bool ReadQuux(Input encoded_value, Input* quux_out) {
// Parser parser(encoded_value);
// Parser foo_parser;
// if (!parser.ReadSequence(&foo_parser))
@@ -92,10 +92,10 @@ class OPENSSL_EXPORT Parser {
// Creates a parser to parse over the data represented by input. This class
// assumes that the underlying data will not change over the lifetime of
// the Parser object.
- explicit Parser(const Input& input);
+ explicit Parser(Input input);
- Parser(const Parser&) = default;
- Parser& operator=(const Parser&) = default;
+ Parser(const Parser &) = default;
+ Parser &operator=(const Parser &) = default;
// Returns whether there is any more data left in the input to parse. This
// does not guarantee that the data is parseable.
@@ -105,12 +105,12 @@ class OPENSSL_EXPORT Parser {
// encoding for the current value is invalid, this method returns false and
// does not advance the input. Otherwise, it returns true, putting the
// read tag in |tag| and the value in |out|.
- [[nodiscard]] bool ReadTagAndValue(Tag* tag, Input* out);
+ [[nodiscard]] bool ReadTagAndValue(CBS_ASN1_TAG *tag, Input *out);
// Reads the current TLV from the input and advances. Unlike ReadTagAndValue
// where only the value is put in |out|, this puts the raw bytes from the
// tag, length, and value in |out|.
- [[nodiscard]] bool ReadRawTLV(Input* out);
+ [[nodiscard]] bool ReadRawTLV(Input *out);
// Basic methods for reading or skipping the current TLV, with an
// expectation of what the current tag should be. It should be possible
@@ -122,7 +122,7 @@ class OPENSSL_EXPORT Parser {
// something else, then |out| is set to nullopt and the input is not
// advanced. Like ReadTagAndValue, it returns false if the encoding is
// invalid and does not advance the input.
- [[nodiscard]] bool ReadOptionalTag(Tag tag, std::optional<Input>* out);
+ [[nodiscard]] bool ReadOptionalTag(CBS_ASN1_TAG tag, std::optional<Input> *out);
// If the current tag in the input is |tag|, it puts the corresponding value
// in |out|, sets |was_present| to true, and advances the input to the next
@@ -131,29 +131,29 @@ class OPENSSL_EXPORT Parser {
// false if the encoding is invalid and does not advance the input.
// DEPRECATED: use the std::optional version above in new code.
// TODO(mattm): convert the existing callers and remove this override.
- [[nodiscard]] bool ReadOptionalTag(Tag tag, Input* out, bool* was_present);
+ [[nodiscard]] bool ReadOptionalTag(CBS_ASN1_TAG tag, Input *out, bool *was_present);
// Like ReadOptionalTag, but the value is discarded.
- [[nodiscard]] bool SkipOptionalTag(Tag tag, bool* was_present);
+ [[nodiscard]] bool SkipOptionalTag(CBS_ASN1_TAG tag, bool *was_present);
// If the current tag matches |tag|, it puts the current value in |out|,
// advances the input, and returns true. Otherwise, it returns false.
- [[nodiscard]] bool ReadTag(Tag tag, Input* out);
+ [[nodiscard]] bool ReadTag(CBS_ASN1_TAG tag, Input *out);
// Advances the input and returns true if the current tag matches |tag|;
// otherwise it returns false.
- [[nodiscard]] bool SkipTag(Tag tag);
+ [[nodiscard]] bool SkipTag(CBS_ASN1_TAG tag);
// Convenience methods to combine parsing the TLV with parsing the DER
// encoding for a specific type.
// Reads the current TLV from the input, checks that the tag matches |tag|
// and is a constructed tag, and creates a new Parser from the value.
- [[nodiscard]] bool ReadConstructed(Tag tag, Parser* out);
+ [[nodiscard]] bool ReadConstructed(CBS_ASN1_TAG tag, Parser *out);
// A more specific form of ReadConstructed that expects the current tag
// to be 0x30 (SEQUENCE).
- [[nodiscard]] bool ReadSequence(Parser* out);
+ [[nodiscard]] bool ReadSequence(Parser *out);
// Expects the current tag to be kInteger, and calls ParseUint8 on the
// current value. Note that DER-encoded integers are arbitrary precision,
@@ -162,7 +162,7 @@ class OPENSSL_EXPORT Parser {
//
// Note that on failure the Parser is left in an undefined state (the
// input may or may not have been advanced).
- [[nodiscard]] bool ReadUint8(uint8_t* out);
+ [[nodiscard]] bool ReadUint8(uint8_t *out);
// Expects the current tag to be kInteger, and calls ParseUint64 on the
// current value. Note that DER-encoded integers are arbitrary precision,
@@ -171,7 +171,7 @@ class OPENSSL_EXPORT Parser {
//
// Note that on failure the Parser is left in an undefined state (the
// input may or may not have been advanced).
- [[nodiscard]] bool ReadUint64(uint64_t* out);
+ [[nodiscard]] bool ReadUint64(uint64_t *out);
// Reads a BIT STRING. On success returns BitString. On failure, returns
// std::nullopt.
@@ -184,7 +184,7 @@ class OPENSSL_EXPORT Parser {
//
// Note that on failure the Parser is left in an undefined state (the
// input may or may not have been advanced).
- [[nodiscard]] bool ReadGeneralizedTime(GeneralizedTime* out);
+ [[nodiscard]] bool ReadGeneralizedTime(GeneralizedTime *out);
// Lower level methods. The previous methods couple reading data from the
// input with advancing the Parser's internal pointer to the next TLV; these
@@ -195,7 +195,7 @@ class OPENSSL_EXPORT Parser {
// Reads the current TLV from the input, putting the tag in |tag| and the raw
// value in |out|, but does not advance the input. Returns true if the tag
// and length are successfully read and the output exists.
- [[nodiscard]] bool PeekTagAndValue(Tag* tag, Input* out);
+ [[nodiscard]] bool PeekTagAndValue(CBS_ASN1_TAG *tag, Input *out);
// Advances the input to the next TLV. This method only needs to be called
// after PeekTagAndValue; all other methods will advance the input if they
diff --git a/src/pki/parser_unittest.cc b/src/pki/parser_unittest.cc
index 94d24d0..2deb1cd 100644
--- a/src/pki/parser_unittest.cc
+++ b/src/pki/parser_unittest.cc
@@ -4,19 +4,19 @@
#include "parser.h"
+#include <gtest/gtest.h>
#include "input.h"
#include "parse_values.h"
-#include <gtest/gtest.h>
namespace bssl::der::test {
TEST(ParserTest, ConsumesAllBytesOfTLV) {
const uint8_t der[] = {0x04 /* OCTET STRING */, 0x00};
Parser parser((Input(der)));
- Tag tag;
+ CBS_ASN1_TAG tag;
Input value;
ASSERT_TRUE(parser.ReadTagAndValue(&tag, &value));
- ASSERT_EQ(kOctetString, tag);
+ ASSERT_EQ(CBS_ASN1_OCTETSTRING, tag);
ASSERT_FALSE(parser.HasMore());
}
@@ -38,7 +38,7 @@ TEST(ParserTest, IgnoresContentsOfInnerValues) {
// with an invalid encoding - its length is too long.
const uint8_t der[] = {0x30, 0x02, 0x30, 0x7e};
Parser parser((Input(der)));
- Tag tag;
+ CBS_ASN1_TAG tag;
Input value;
ASSERT_TRUE(parser.ReadTagAndValue(&tag, &value));
}
@@ -58,7 +58,7 @@ TEST(ParserTest, FailsIfLengthOverlapsAnotherTLV) {
ASSERT_FALSE(parser.HasMore());
// Try to read the INTEGER from the SEQUENCE, which should fail.
- Tag tag;
+ CBS_ASN1_TAG tag;
Input value;
ASSERT_FALSE(inner_sequence.ReadTagAndValue(&tag, &value));
}
@@ -72,14 +72,14 @@ TEST(ParserTest, ReadOptionalTagPresent) {
Input value;
bool present;
- ASSERT_TRUE(parser.ReadOptionalTag(kInteger, &value, &present));
+ ASSERT_TRUE(parser.ReadOptionalTag(CBS_ASN1_INTEGER, &value, &present));
ASSERT_TRUE(present);
const uint8_t expected_int_value[] = {0x01};
ASSERT_EQ(Input(expected_int_value), value);
- Tag tag;
+ CBS_ASN1_TAG tag;
ASSERT_TRUE(parser.ReadTagAndValue(&tag, &value));
- ASSERT_EQ(kOctetString, tag);
+ ASSERT_EQ(CBS_ASN1_OCTETSTRING, tag);
const uint8_t expected_octet_string_value[] = {0x02};
ASSERT_EQ(Input(expected_octet_string_value), value);
@@ -94,15 +94,15 @@ TEST(ParserTest, ReadOptionalTag2Present) {
Parser parser((Input(der)));
std::optional<Input> optional_value;
- ASSERT_TRUE(parser.ReadOptionalTag(kInteger, &optional_value));
+ ASSERT_TRUE(parser.ReadOptionalTag(CBS_ASN1_INTEGER, &optional_value));
ASSERT_TRUE(optional_value.has_value());
const uint8_t expected_int_value[] = {0x01};
ASSERT_EQ(Input(expected_int_value), *optional_value);
- Tag tag;
+ CBS_ASN1_TAG tag;
Input value;
ASSERT_TRUE(parser.ReadTagAndValue(&tag, &value));
- ASSERT_EQ(kOctetString, tag);
+ ASSERT_EQ(CBS_ASN1_OCTETSTRING, tag);
const uint8_t expected_octet_string_value[] = {0x02};
ASSERT_EQ(Input(expected_octet_string_value), value);
@@ -117,12 +117,12 @@ TEST(ParserTest, ReadOptionalTagNotPresent) {
Input value;
bool present;
- ASSERT_TRUE(parser.ReadOptionalTag(kInteger, &value, &present));
+ ASSERT_TRUE(parser.ReadOptionalTag(CBS_ASN1_INTEGER, &value, &present));
ASSERT_FALSE(present);
- Tag tag;
+ CBS_ASN1_TAG tag;
ASSERT_TRUE(parser.ReadTagAndValue(&tag, &value));
- ASSERT_EQ(kOctetString, tag);
+ ASSERT_EQ(CBS_ASN1_OCTETSTRING, tag);
const uint8_t expected_octet_string_value[] = {0x02};
ASSERT_EQ(Input(expected_octet_string_value), value);
@@ -136,13 +136,13 @@ TEST(ParserTest, ReadOptionalTag2NotPresent) {
Parser parser((Input(der)));
std::optional<Input> optional_value;
- ASSERT_TRUE(parser.ReadOptionalTag(kInteger, &optional_value));
+ ASSERT_TRUE(parser.ReadOptionalTag(CBS_ASN1_INTEGER, &optional_value));
ASSERT_FALSE(optional_value.has_value());
- Tag tag;
+ CBS_ASN1_TAG tag;
Input value;
ASSERT_TRUE(parser.ReadTagAndValue(&tag, &value));
- ASSERT_EQ(kOctetString, tag);
+ ASSERT_EQ(CBS_ASN1_OCTETSTRING, tag);
const uint8_t expected_octet_string_value[] = {0x02};
ASSERT_EQ(Input(expected_octet_string_value), value);
@@ -153,11 +153,11 @@ TEST(ParserTest, CanSkipOptionalTagAtEndOfInput) {
const uint8_t der[] = {0x02 /* INTEGER */, 0x01, 0x01};
Parser parser((Input(der)));
- Tag tag;
+ CBS_ASN1_TAG tag;
Input value;
ASSERT_TRUE(parser.ReadTagAndValue(&tag, &value));
bool present;
- ASSERT_TRUE(parser.ReadOptionalTag(kInteger, &value, &present));
+ ASSERT_TRUE(parser.ReadOptionalTag(CBS_ASN1_INTEGER, &value, &present));
ASSERT_FALSE(present);
ASSERT_FALSE(parser.HasMore());
}
@@ -167,9 +167,9 @@ TEST(ParserTest, SkipOptionalTagDoesntConsumePresentNonMatchingTLVs) {
Parser parser((Input(der)));
bool present;
- ASSERT_TRUE(parser.SkipOptionalTag(kOctetString, &present));
+ ASSERT_TRUE(parser.SkipOptionalTag(CBS_ASN1_OCTETSTRING, &present));
ASSERT_FALSE(present);
- ASSERT_TRUE(parser.SkipOptionalTag(kInteger, &present));
+ ASSERT_TRUE(parser.SkipOptionalTag(CBS_ASN1_INTEGER, &present));
ASSERT_TRUE(present);
ASSERT_FALSE(parser.HasMore());
}
@@ -179,10 +179,10 @@ TEST(ParserTest, TagNumbersAboveThirtySupported) {
const uint8_t der[] = {0x9f, 0x1f, 0x00};
Parser parser((Input(der)));
- Tag tag;
+ CBS_ASN1_TAG tag;
Input value;
ASSERT_TRUE(parser.ReadTagAndValue(&tag, &value));
- EXPECT_EQ(kTagContextSpecific | 31u, tag);
+ EXPECT_EQ(CBS_ASN1_CONTEXT_SPECIFIC | 31u, tag);
ASSERT_FALSE(parser.HasMore());
}
@@ -192,10 +192,10 @@ TEST(ParserTest, ParseTags) {
const uint8_t der[] = {0x04, 0x00};
Parser parser((Input(der)));
- Tag tag;
+ CBS_ASN1_TAG tag;
Input value;
ASSERT_TRUE(parser.ReadTagAndValue(&tag, &value));
- EXPECT_EQ(kOctetString, tag);
+ EXPECT_EQ(CBS_ASN1_OCTETSTRING, tag);
}
{
@@ -203,10 +203,10 @@ TEST(ParserTest, ParseTags) {
const uint8_t der[] = {0x30, 0x00};
Parser parser((Input(der)));
- Tag tag;
+ CBS_ASN1_TAG tag;
Input value;
ASSERT_TRUE(parser.ReadTagAndValue(&tag, &value));
- EXPECT_EQ(kSequence, tag);
+ EXPECT_EQ(CBS_ASN1_SEQUENCE, tag);
}
{
@@ -214,10 +214,10 @@ TEST(ParserTest, ParseTags) {
const uint8_t der[] = {0x41, 0x00};
Parser parser((Input(der)));
- Tag tag;
+ CBS_ASN1_TAG tag;
Input value;
ASSERT_TRUE(parser.ReadTagAndValue(&tag, &value));
- EXPECT_EQ(kTagApplication | 1, tag);
+ EXPECT_EQ(CBS_ASN1_APPLICATION | 1, tag);
}
{
@@ -225,10 +225,10 @@ TEST(ParserTest, ParseTags) {
const uint8_t der[] = {0xbe, 0x00};
Parser parser((Input(der)));
- Tag tag;
+ CBS_ASN1_TAG tag;
Input value;
ASSERT_TRUE(parser.ReadTagAndValue(&tag, &value));
- EXPECT_EQ(kTagContextSpecific | kTagConstructed | 30, tag);
+ EXPECT_EQ(CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 30, tag);
}
{
@@ -236,10 +236,10 @@ TEST(ParserTest, ParseTags) {
const uint8_t der[] = {0xcf, 0x00};
Parser parser((Input(der)));
- Tag tag;
+ CBS_ASN1_TAG tag;
Input value;
ASSERT_TRUE(parser.ReadTagAndValue(&tag, &value));
- EXPECT_EQ(kTagPrivate | 15, tag);
+ EXPECT_EQ(CBS_ASN1_PRIVATE | 15, tag);
}
}
@@ -247,7 +247,7 @@ TEST(ParserTest, IncompleteEncodingTagOnly) {
const uint8_t der[] = {0x01};
Parser parser((Input(der)));
- Tag tag;
+ CBS_ASN1_TAG tag;
Input value;
ASSERT_FALSE(parser.ReadTagAndValue(&tag, &value));
ASSERT_TRUE(parser.HasMore());
@@ -259,7 +259,7 @@ TEST(ParserTest, IncompleteEncodingLengthTruncated) {
const uint8_t der[] = {0x04, 0x81};
Parser parser((Input(der)));
- Tag tag;
+ CBS_ASN1_TAG tag;
Input value;
ASSERT_FALSE(parser.ReadTagAndValue(&tag, &value));
ASSERT_TRUE(parser.HasMore());
@@ -270,7 +270,7 @@ TEST(ParserTest, IncompleteEncodingValueShorterThanLength) {
const uint8_t der[] = {0x04, 0x02, 0x84};
Parser parser((Input(der)));
- Tag tag;
+ CBS_ASN1_TAG tag;
Input value;
ASSERT_FALSE(parser.ReadTagAndValue(&tag, &value));
ASSERT_TRUE(parser.HasMore());
@@ -280,7 +280,7 @@ TEST(ParserTest, LengthMustBeEncodedWithMinimumNumberOfOctets) {
const uint8_t der[] = {0x01, 0x81, 0x01, 0x00};
Parser parser((Input(der)));
- Tag tag;
+ CBS_ASN1_TAG tag;
Input value;
ASSERT_FALSE(parser.ReadTagAndValue(&tag, &value));
ASSERT_TRUE(parser.HasMore());
@@ -304,7 +304,7 @@ TEST(ParserTest, LengthMustNotHaveLeadingZeroes) {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
Parser parser((Input(der)));
- Tag tag;
+ CBS_ASN1_TAG tag;
Input value;
ASSERT_FALSE(parser.ReadTagAndValue(&tag, &value));
ASSERT_TRUE(parser.HasMore());
@@ -315,7 +315,7 @@ TEST(ParserTest, ReadConstructedFailsForNonConstructedTags) {
const uint8_t der[] = {0x10, 0x00};
Parser parser((Input(der)));
- Tag expected_tag = 0x10;
+ CBS_ASN1_TAG expected_tag = 0x10;
Parser sequence_parser;
ASSERT_FALSE(parser.ReadConstructed(expected_tag, &sequence_parser));
@@ -347,7 +347,7 @@ TEST(ParserTest, ReadBitString) {
EXPECT_FALSE(parser.HasMore());
EXPECT_EQ(1u, bit_string->unused_bits());
- ASSERT_EQ(2u, bit_string->bytes().Length());
+ ASSERT_EQ(2u, bit_string->bytes().size());
EXPECT_EQ(0xAA, bit_string->bytes()[0]);
EXPECT_EQ(0xBE, bit_string->bytes()[1]);
}
diff --git a/src/pki/patches/0001-Simplify-the-name-constraint-limit-to-resemble-Borin.patch b/src/pki/patches/0001-Simplify-the-name-constraint-limit-to-resemble-Borin.patch
deleted file mode 100644
index f823b54..0000000
--- a/src/pki/patches/0001-Simplify-the-name-constraint-limit-to-resemble-Borin.patch
+++ /dev/null
@@ -1,41108 +0,0 @@
-From be12ef3a1c4d74dfba98641b1d565451424c6aa2 Mon Sep 17 00:00:00 2001
-From: Bob Beck <bbe@google.com>
-Date: Wed, 17 May 2023 10:37:22 -0600
-Subject: [PATCH] Simplify the name constraint limit to resemble BoringSSL's
- Disable the name constraint manynames check for now
-
----
- net/cert/pki/DEPS | 1 -
- net/cert/pki/name_constraints.cc | 66 +-
- .../verify_certificate_chain_typed_unittest.h | 6 +-
- net/data/test_bundle_data.filelist | 6 -
- .../many-names/generate-chains.py | 56 +-
- .../many-names/ok-all-types.pem | 6155 ++++--------
- .../ok-different-types-dirnames.pem | 8708 ----------------
- .../ok-different-types-dirnames.test | 5 -
- .../many-names/ok-different-types-dns.pem | 8879 -----------------
- .../many-names/ok-different-types-dns.test | 5 -
- .../many-names/ok-different-types-ips.pem | 8813 ----------------
- .../many-names/ok-different-types-ips.test | 5 -
- .../many-names/toomany-all-types.pem | 3714 ++-----
- .../many-names/toomany-dirnames-excluded.pem | 2058 ++--
- .../many-names/toomany-dirnames-permitted.pem | 2058 ++--
- .../many-names/toomany-dns-excluded.pem | 8 +-
- .../many-names/toomany-dns-permitted.pem | 8 +-
- .../many-names/toomany-ips-excluded.pem | 8 +-
- .../many-names/toomany-ips-permitted.pem | 8 +-
- 19 files changed, 5045 insertions(+), 35522 deletions(-)
- delete mode 100644 net/data/verify_certificate_chain_unittest/many-names/ok-different-types-dirnames.pem
- delete mode 100644 net/data/verify_certificate_chain_unittest/many-names/ok-different-types-dirnames.test
- delete mode 100644 net/data/verify_certificate_chain_unittest/many-names/ok-different-types-dns.pem
- delete mode 100644 net/data/verify_certificate_chain_unittest/many-names/ok-different-types-dns.test
- delete mode 100644 net/data/verify_certificate_chain_unittest/many-names/ok-different-types-ips.pem
- delete mode 100644 net/data/verify_certificate_chain_unittest/many-names/ok-different-types-ips.test
-
-diff --git a/net/cert/pki/DEPS b/net/cert/pki/DEPS
-index cac7a02e057dc..e0bfd7b2c2045 100644
---- a/net/cert/pki/DEPS
-+++ b/net/cert/pki/DEPS
-@@ -5,6 +5,5 @@ include_rules = [
- "-base",
- "+base/base_paths.h",
- "+base/files/file_util.h",
-- "+base/numerics/clamped_math.h",
- "+base/path_service.h",
- ]
-diff --git a/net/cert/pki/name_constraints.cc b/net/cert/pki/name_constraints.cc
-index 123996d7c5d61..e09f4a6da74a9 100644
---- a/net/cert/pki/name_constraints.cc
-+++ b/net/cert/pki/name_constraints.cc
-@@ -8,7 +8,6 @@
-
- #include <memory>
-
--#include "base/numerics/clamped_math.h"
- #include "net/cert/pki/cert_errors.h"
- #include "net/cert/pki/common_cert_errors.h"
- #include "net/cert/pki/general_names.h"
-@@ -345,32 +344,42 @@ void NameConstraints::IsPermittedCert(const der::Input& subject_rdn_sequence,
- CertErrors* errors) const {
- // Checking NameConstraints is O(number_of_names * number_of_constraints).
- // Impose a hard limit to mitigate the use of name constraints as a DoS
-- // mechanism.
-+ // mechanism. This mimics the similar check in BoringSSL x509/v_ncons.c
-+ // TODO(bbe): make both name constraint mechanisms subquadratic and remove
-+ // this check.
-+
- const size_t kMaxChecks = 1048576; // 1 << 20
-- base::ClampedNumeric<size_t> check_count = 0;
-
-+ // Names all come from a certificate, which is bound by size_t, so adding them
-+ // up can not overflow a size_t.
-+ size_t name_count = 0;
-+ // Constraints all come from a certificate, which is bound by a size_t, so
-+ // adding them up can not overflow a size_t.
-+ size_t constraint_count = 0;
- if (subject_alt_names) {
-- check_count +=
-- base::ClampMul(subject_alt_names->rfc822_names.size(),
-- base::ClampAdd(excluded_subtrees_.rfc822_names.size(),
-- permitted_subtrees_.rfc822_names.size()));
-- check_count +=
-- base::ClampMul(subject_alt_names->dns_names.size(),
-- base::ClampAdd(excluded_subtrees_.dns_names.size(),
-- permitted_subtrees_.dns_names.size()));
-- check_count += base::ClampMul(
-- subject_alt_names->directory_names.size(),
-- base::ClampAdd(excluded_subtrees_.directory_names.size(),
-- permitted_subtrees_.directory_names.size()));
-- check_count += base::ClampMul(
-- subject_alt_names->ip_addresses.size(),
-- base::ClampAdd(excluded_subtrees_.ip_address_ranges.size(),
-- permitted_subtrees_.ip_address_ranges.size()));
-- }
--
-- if (!(subject_alt_names && subject_rdn_sequence.Length() == 0)) {
-- check_count += base::ClampAdd(excluded_subtrees_.directory_names.size(),
-- permitted_subtrees_.directory_names.size());
-+ name_count = subject_alt_names->rfc822_names.size() +
-+ subject_alt_names->dns_names.size() +
-+ subject_alt_names->directory_names.size() +
-+ subject_alt_names->ip_addresses.size();
-+ constraint_count = excluded_subtrees_.rfc822_names.size() +
-+ permitted_subtrees_.rfc822_names.size() +
-+ excluded_subtrees_.dns_names.size() +
-+ permitted_subtrees_.dns_names.size() +
-+ excluded_subtrees_.directory_names.size() +
-+ permitted_subtrees_.directory_names.size() +
-+ excluded_subtrees_.ip_address_ranges.size() +
-+ permitted_subtrees_.ip_address_ranges.size();
-+ } else {
-+ constraint_count += excluded_subtrees_.directory_names.size() +
-+ permitted_subtrees_.directory_names.size();
-+ name_count = subject_rdn_sequence.Length();
-+ }
-+ // Upper bound the number of possible checks, checking for overflow.
-+ size_t check_count = constraint_count * name_count;
-+ if ((constraint_count > 0 && check_count / constraint_count != name_count) ||
-+ check_count > kMaxChecks) {
-+ errors->AddError(cert_errors::kTooManyNameConstraintChecks);
-+ return;
- }
-
- std::vector<std::string> subject_email_addresses_to_check;
-@@ -382,15 +391,6 @@ void NameConstraints::IsPermittedCert(const der::Input& subject_rdn_sequence,
- errors->AddError(cert_errors::kNotPermittedByNameConstraints);
- return;
- }
-- check_count +=
-- base::ClampMul(subject_email_addresses_to_check.size(),
-- base::ClampAdd(excluded_subtrees_.rfc822_names.size(),
-- permitted_subtrees_.rfc822_names.size()));
-- }
--
-- if (check_count > kMaxChecks) {
-- errors->AddError(cert_errors::kTooManyNameConstraintChecks);
-- return;
- }
-
- // Subject Alternative Name handling:
-diff --git a/net/cert/pki/verify_certificate_chain_typed_unittest.h b/net/cert/pki/verify_certificate_chain_typed_unittest.h
-index a1af7849ebcc1..32a5be319d00d 100644
---- a/net/cert/pki/verify_certificate_chain_typed_unittest.h
-+++ b/net/cert/pki/verify_certificate_chain_typed_unittest.h
-@@ -275,10 +275,9 @@ TYPED_TEST_P(VerifyCertificateChainSingleRootTest, Policies) {
- }
-
- TYPED_TEST_P(VerifyCertificateChainSingleRootTest, ManyNames) {
-+ // TODO(bbe) fix this to run these with correct numbers.
-+#if 0
- this->RunTest("many-names/ok-all-types.test");
-- this->RunTest("many-names/ok-different-types-dns.test");
-- this->RunTest("many-names/ok-different-types-ips.test");
-- this->RunTest("many-names/ok-different-types-dirnames.test");
- this->RunTest("many-names/toomany-all-types.test");
- this->RunTest("many-names/toomany-dns-excluded.test");
- this->RunTest("many-names/toomany-dns-permitted.test");
-@@ -286,6 +285,7 @@ TYPED_TEST_P(VerifyCertificateChainSingleRootTest, ManyNames) {
- this->RunTest("many-names/toomany-ips-permitted.test");
- this->RunTest("many-names/toomany-dirnames-excluded.test");
- this->RunTest("many-names/toomany-dirnames-permitted.test");
-+#endif
- }
-
- TYPED_TEST_P(VerifyCertificateChainSingleRootTest, TargetOnly) {
-diff --git a/net/data/test_bundle_data.filelist b/net/data/test_bundle_data.filelist
-index 88fe51f7db6b5..849e421233ef8 100644
---- a/net/data/test_bundle_data.filelist
-+++ b/net/data/test_bundle_data.filelist
-@@ -753,12 +753,6 @@ data/verify_certificate_chain_unittest/key-rollover/rolloverchain.pem
- data/verify_certificate_chain_unittest/key-rollover/rolloverchain.test
- data/verify_certificate_chain_unittest/many-names/ok-all-types.pem
- data/verify_certificate_chain_unittest/many-names/ok-all-types.test
--data/verify_certificate_chain_unittest/many-names/ok-different-types-dirnames.pem
--data/verify_certificate_chain_unittest/many-names/ok-different-types-dirnames.test
--data/verify_certificate_chain_unittest/many-names/ok-different-types-dns.pem
--data/verify_certificate_chain_unittest/many-names/ok-different-types-dns.test
--data/verify_certificate_chain_unittest/many-names/ok-different-types-ips.pem
--data/verify_certificate_chain_unittest/many-names/ok-different-types-ips.test
- data/verify_certificate_chain_unittest/many-names/toomany-all-types.pem
- data/verify_certificate_chain_unittest/many-names/toomany-all-types.test
- data/verify_certificate_chain_unittest/many-names/toomany-dirnames-excluded.pem
-diff --git a/net/data/verify_certificate_chain_unittest/many-names/generate-chains.py b/net/data/verify_certificate_chain_unittest/many-names/generate-chains.py
-index 30a284056c846..70e37b10e1681 100755
---- a/net/data/verify_certificate_chain_unittest/many-names/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/many-names/generate-chains.py
-@@ -92,21 +92,25 @@ def make_chain(name, doc, excluded, permitted, sans):
- gencerts.write_chain(doc, chain, '%s.pem' % name)
-
-
--make_chain(
-- 'ok-all-types',
-- "A chain containing a large number of name constraints and names,\n"
-- "but below the limit.",
-- excluded=dict(num_dns=418, num_ip=418, num_dirnames=418, num_uri=1025),
-- permitted=dict(num_dns=418, num_ip=418, num_dirnames=418, num_uri=1025),
-- sans=dict(num_dns=418, num_ip=418, num_dirnames=417, num_uri=1025))
--
--make_chain(
-- 'toomany-all-types',
-- "A chain containing a large number of different types of name\n"
-- "constraints and names, above the limit.",
-- excluded=dict(num_dns=419, num_ip=419, num_dirnames=419, num_uri=0),
-- permitted=dict(num_dns=419, num_ip=419, num_dirnames=419, num_uri=0),
-- sans=dict(num_dns=419, num_ip=419, num_dirnames=418, num_uri=0))
-+make_chain('ok-all-types',
-+ "A chain containing a large number of name constraints and names,\n"
-+ "but below the limit.",
-+ excluded=dict(num_dns=170,
-+ num_ip=170,
-+ num_dirnames=170,
-+ num_uri=1025),
-+ permitted=dict(num_dns=171,
-+ num_ip=171,
-+ num_dirnames=172,
-+ num_uri=1025),
-+ sans=dict(num_dns=341, num_ip=341, num_dirnames=342, num_uri=1025))
-+
-+make_chain('toomany-all-types',
-+ "A chain containing a large number of different types of name\n"
-+ "constraints and names, above the limit.",
-+ excluded=dict(num_dns=170, num_ip=170, num_dirnames=170, num_uri=0),
-+ permitted=dict(num_dns=172, num_ip=171, num_dirnames=172, num_uri=0),
-+ sans=dict(num_dns=342, num_ip=341, num_dirnames=341, num_uri=0))
-
- make_chain(
- 'toomany-dns-excluded',
-@@ -151,25 +155,3 @@ make_chain(
- excluded=dict(num_dns=0, num_ip=0, num_dirnames=0, num_uri=0),
- permitted=dict(num_dns=0, num_ip=0, num_dirnames=1025, num_uri=0),
- sans=dict(num_dns=0, num_ip=0, num_dirnames=1024, num_uri=0))
--
--make_chain(
-- 'ok-different-types-dns',
-- "A chain containing a large number of name constraints and names,\n"
-- "but of different types, thus not triggering the limit.",
-- excluded=dict(num_dns=0, num_ip=1025, num_dirnames=1025, num_uri=1025),
-- permitted=dict(num_dns=0, num_ip=1025, num_dirnames=1025, num_uri=1025),
-- sans=dict(num_dns=1025, num_ip=0, num_dirnames=0, num_uri=0))
--make_chain(
-- 'ok-different-types-ips',
-- "A chain containing a large number of name constraints and names,\n"
-- "but of different types, thus not triggering the limit.",
-- excluded=dict(num_dns=1025, num_ip=0, num_dirnames=1025, num_uri=1025),
-- permitted=dict(num_dns=1025, num_ip=0, num_dirnames=1025, num_uri=1025),
-- sans=dict(num_dns=0, num_ip=1025, num_dirnames=0, num_uri=0))
--make_chain(
-- 'ok-different-types-dirnames',
-- "A chain containing a large number of name constraints and names,\n"
-- "but of different types, thus not triggering the limit.",
-- excluded=dict(num_dns=1025, num_ip=1025, num_dirnames=0, num_uri=1025),
-- permitted=dict(num_dns=1025, num_ip=1025, num_dirnames=0, num_uri=1025),
-- sans=dict(num_dns=0, num_ip=0, num_dirnames=1025, num_uri=0))
-diff --git a/net/data/verify_certificate_chain_unittest/many-names/ok-all-types.pem b/net/data/verify_certificate_chain_unittest/many-names/ok-all-types.pem
-index 1f8810a31f6cf..e97cc1162cb16 100644
---- a/net/data/verify_certificate_chain_unittest/many-names/ok-all-types.pem
-+++ b/net/data/verify_certificate_chain_unittest/many-names/ok-all-types.pem
-@@ -1,4 +1,4 @@
--[Created by: generate-chains.py]
-+[Created by: ./generate-chains.py]
-
- A chain containing a large number of name constraints and names,
- but below the limit.
-@@ -8,7 +8,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 2f:ab:b4:3d:dc:c0:77:80:2a:03:09:ad:43:74:02:bf:98:d8:d4
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Intermediate
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-@@ -56,25 +56,25 @@ Certificate:
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
-- DNS:t0.test, DNS:t1.test, DNS:t2.test, DNS:t3.test, DNS:t4.test, DNS:t5.test, DNS:t6.test, DNS:t7.test, DNS:t8.test, DNS:t9.test, DNS:t10.test, DNS:t11.test, DNS:t12.test, DNS:t13.test, DNS:t14.test, DNS:t15.test, DNS:t16.test, DNS:t17.test, DNS:t18.test, DNS:t19.test, DNS:t20.test, DNS:t21.test, DNS:t22.test, DNS:t23.test, DNS:t24.test, DNS:t25.test, DNS:t26.test, DNS:t27.test, DNS:t28.test, DNS:t29.test, DNS:t30.test, DNS:t31.test, DNS:t32.test, DNS:t33.test, DNS:t34.test, DNS:t35.test, DNS:t36.test, DNS:t37.test, DNS:t38.test, DNS:t39.test, DNS:t40.test, DNS:t41.test, DNS:t42.test, DNS:t43.test, DNS:t44.test, DNS:t45.test, DNS:t46.test, DNS:t47.test, DNS:t48.test, DNS:t49.test, DNS:t50.test, DNS:t51.test, DNS:t52.test, DNS:t53.test, DNS:t54.test, DNS:t55.test, DNS:t56.test, DNS:t57.test, DNS:t58.test, DNS:t59.test, DNS:t60.test, DNS:t61.test, DNS:t62.test, DNS:t63.test, DNS:t64.test, DNS:t65.test, DNS:t66.test, DNS:t67.test, DNS:t68.test, DNS:t69.test, DNS:t70.test, DNS:t71.test, DNS:t72.test, DNS:t73.test, DNS:t74.test, DNS:t75.test, DNS:t76.test, DNS:t77.test, DNS:t78.test, DNS:t79.test, DNS:t80.test, DNS:t81.test, DNS:t82.test, DNS:t83.test, DNS:t84.test, DNS:t85.test, DNS:t86.test, DNS:t87.test, DNS:t88.test, DNS:t89.test, DNS:t90.test, DNS:t91.test, DNS:t92.test, DNS:t93.test, DNS:t94.test, DNS:t95.test, DNS:t96.test, DNS:t97.test, DNS:t98.test, DNS:t99.test, DNS:t100.test, DNS:t101.test, DNS:t102.test, DNS:t103.test, DNS:t104.test, DNS:t105.test, DNS:t106.test, DNS:t107.test, DNS:t108.test, DNS:t109.test, DNS:t110.test, DNS:t111.test, DNS:t112.test, DNS:t113.test, DNS:t114.test, DNS:t115.test, DNS:t116.test, DNS:t117.test, DNS:t118.test, DNS:t119.test, DNS:t120.test, DNS:t121.test, DNS:t122.test, DNS:t123.test, DNS:t124.test, DNS:t125.test, DNS:t126.test, DNS:t127.test, DNS:t128.test, DNS:t129.test, DNS:t130.test, DNS:t131.test, DNS:t132.test, DNS:t133.test, DNS:t134.test, DNS:t135.test, DNS:t136.test, DNS:t137.test, DNS:t138.test, DNS:t139.test, DNS:t140.test, DNS:t141.test, DNS:t142.test, DNS:t143.test, DNS:t144.test, DNS:t145.test, DNS:t146.test, DNS:t147.test, DNS:t148.test, DNS:t149.test, DNS:t150.test, DNS:t151.test, DNS:t152.test, DNS:t153.test, DNS:t154.test, DNS:t155.test, DNS:t156.test, DNS:t157.test, DNS:t158.test, DNS:t159.test, DNS:t160.test, DNS:t161.test, DNS:t162.test, DNS:t163.test, DNS:t164.test, DNS:t165.test, DNS:t166.test, DNS:t167.test, DNS:t168.test, DNS:t169.test, DNS:t170.test, DNS:t171.test, DNS:t172.test, DNS:t173.test, DNS:t174.test, DNS:t175.test, DNS:t176.test, DNS:t177.test, DNS:t178.test, DNS:t179.test, DNS:t180.test, DNS:t181.test, DNS:t182.test, DNS:t183.test, DNS:t184.test, DNS:t185.test, DNS:t186.test, DNS:t187.test, DNS:t188.test, DNS:t189.test, DNS:t190.test, DNS:t191.test, DNS:t192.test, DNS:t193.test, DNS:t194.test, DNS:t195.test, DNS:t196.test, DNS:t197.test, DNS:t198.test, DNS:t199.test, DNS:t200.test, DNS:t201.test, DNS:t202.test, DNS:t203.test, DNS:t204.test, DNS:t205.test, DNS:t206.test, DNS:t207.test, DNS:t208.test, DNS:t209.test, DNS:t210.test, DNS:t211.test, DNS:t212.test, DNS:t213.test, DNS:t214.test, DNS:t215.test, DNS:t216.test, DNS:t217.test, DNS:t218.test, DNS:t219.test, DNS:t220.test, DNS:t221.test, DNS:t222.test, DNS:t223.test, DNS:t224.test, DNS:t225.test, DNS:t226.test, DNS:t227.test, DNS:t228.test, DNS:t229.test, DNS:t230.test, DNS:t231.test, DNS:t232.test, DNS:t233.test, DNS:t234.test, DNS:t235.test, DNS:t236.test, DNS:t237.test, DNS:t238.test, DNS:t239.test, DNS:t240.test, DNS:t241.test, DNS:t242.test, DNS:t243.test, DNS:t244.test, DNS:t245.test, DNS:t246.test, DNS:t247.test, DNS:t248.test, DNS:t249.test, DNS:t250.test, DNS:t251.test, DNS:t252.test, DNS:t253.test, DNS:t254.test, DNS:t255.test, DNS:t256.test, DNS:t257.test, DNS:t258.test, DNS:t259.test, DNS:t260.test, DNS:t261.test, DNS:t262.test, DNS:t263.test, DNS:t264.test, DNS:t265.test, DNS:t266.test, DNS:t267.test, DNS:t268.test, DNS:t269.test, DNS:t270.test, DNS:t271.test, DNS:t272.test, DNS:t273.test, DNS:t274.test, DNS:t275.test, DNS:t276.test, DNS:t277.test, DNS:t278.test, DNS:t279.test, DNS:t280.test, DNS:t281.test, DNS:t282.test, DNS:t283.test, DNS:t284.test, DNS:t285.test, DNS:t286.test, DNS:t287.test, DNS:t288.test, DNS:t289.test, DNS:t290.test, DNS:t291.test, DNS:t292.test, DNS:t293.test, DNS:t294.test, DNS:t295.test, DNS:t296.test, DNS:t297.test, DNS:t298.test, DNS:t299.test, DNS:t300.test, DNS:t301.test, DNS:t302.test, DNS:t303.test, DNS:t304.test, DNS:t305.test, DNS:t306.test, DNS:t307.test, DNS:t308.test, DNS:t309.test, DNS:t310.test, DNS:t311.test, DNS:t312.test, DNS:t313.test, DNS:t314.test, DNS:t315.test, DNS:t316.test, DNS:t317.test, DNS:t318.test, DNS:t319.test, DNS:t320.test, DNS:t321.test, DNS:t322.test, DNS:t323.test, DNS:t324.test, DNS:t325.test, DNS:t326.test, DNS:t327.test, DNS:t328.test, DNS:t329.test, DNS:t330.test, DNS:t331.test, DNS:t332.test, DNS:t333.test, DNS:t334.test, DNS:t335.test, DNS:t336.test, DNS:t337.test, DNS:t338.test, DNS:t339.test, DNS:t340.test, DNS:t341.test, DNS:t342.test, DNS:t343.test, DNS:t344.test, DNS:t345.test, DNS:t346.test, DNS:t347.test, DNS:t348.test, DNS:t349.test, DNS:t350.test, DNS:t351.test, DNS:t352.test, DNS:t353.test, DNS:t354.test, DNS:t355.test, DNS:t356.test, DNS:t357.test, DNS:t358.test, DNS:t359.test, DNS:t360.test, DNS:t361.test, DNS:t362.test, DNS:t363.test, DNS:t364.test, DNS:t365.test, DNS:t366.test, DNS:t367.test, DNS:t368.test, DNS:t369.test, DNS:t370.test, DNS:t371.test, DNS:t372.test, DNS:t373.test, DNS:t374.test, DNS:t375.test, DNS:t376.test, DNS:t377.test, DNS:t378.test, DNS:t379.test, DNS:t380.test, DNS:t381.test, DNS:t382.test, DNS:t383.test, DNS:t384.test, DNS:t385.test, DNS:t386.test, DNS:t387.test, DNS:t388.test, DNS:t389.test, DNS:t390.test, DNS:t391.test, DNS:t392.test, DNS:t393.test, DNS:t394.test, DNS:t395.test, DNS:t396.test, DNS:t397.test, DNS:t398.test, DNS:t399.test, DNS:t400.test, DNS:t401.test, DNS:t402.test, DNS:t403.test, DNS:t404.test, DNS:t405.test, DNS:t406.test, DNS:t407.test, DNS:t408.test, DNS:t409.test, DNS:t410.test, DNS:t411.test, DNS:t412.test, DNS:t413.test, DNS:t414.test, DNS:t415.test, DNS:t416.test, DNS:t417.test, IP Address:10.0.0.0, IP Address:10.0.0.1, IP Address:10.0.0.2, IP Address:10.0.0.3, IP Address:10.0.0.4, IP Address:10.0.0.5, IP Address:10.0.0.6, IP Address:10.0.0.7, IP Address:10.0.0.8, IP Address:10.0.0.9, IP Address:10.0.0.10, IP Address:10.0.0.11, IP Address:10.0.0.12, IP Address:10.0.0.13, IP Address:10.0.0.14, IP Address:10.0.0.15, IP Address:10.0.0.16, IP Address:10.0.0.17, IP Address:10.0.0.18, IP Address:10.0.0.19, IP Address:10.0.0.20, IP Address:10.0.0.21, IP Address:10.0.0.22, IP Address:10.0.0.23, IP Address:10.0.0.24, IP Address:10.0.0.25, IP Address:10.0.0.26, IP Address:10.0.0.27, IP Address:10.0.0.28, IP Address:10.0.0.29, IP Address:10.0.0.30, IP Address:10.0.0.31, IP Address:10.0.0.32, IP Address:10.0.0.33, IP Address:10.0.0.34, IP Address:10.0.0.35, IP Address:10.0.0.36, IP Address:10.0.0.37, IP Address:10.0.0.38, IP Address:10.0.0.39, IP Address:10.0.0.40, IP Address:10.0.0.41, IP Address:10.0.0.42, IP Address:10.0.0.43, IP Address:10.0.0.44, IP Address:10.0.0.45, IP Address:10.0.0.46, IP Address:10.0.0.47, IP Address:10.0.0.48, IP Address:10.0.0.49, IP Address:10.0.0.50, IP Address:10.0.0.51, IP Address:10.0.0.52, IP Address:10.0.0.53, IP Address:10.0.0.54, IP Address:10.0.0.55, IP Address:10.0.0.56, IP Address:10.0.0.57, IP Address:10.0.0.58, IP Address:10.0.0.59, IP Address:10.0.0.60, IP Address:10.0.0.61, IP Address:10.0.0.62, IP Address:10.0.0.63, IP Address:10.0.0.64, IP Address:10.0.0.65, IP Address:10.0.0.66, IP Address:10.0.0.67, IP Address:10.0.0.68, IP Address:10.0.0.69, IP Address:10.0.0.70, IP Address:10.0.0.71, IP Address:10.0.0.72, IP Address:10.0.0.73, IP Address:10.0.0.74, IP Address:10.0.0.75, IP Address:10.0.0.76, IP Address:10.0.0.77, IP Address:10.0.0.78, IP Address:10.0.0.79, IP Address:10.0.0.80, IP Address:10.0.0.81, IP Address:10.0.0.82, IP Address:10.0.0.83, IP Address:10.0.0.84, IP Address:10.0.0.85, IP Address:10.0.0.86, IP Address:10.0.0.87, IP Address:10.0.0.88, IP Address:10.0.0.89, IP Address:10.0.0.90, IP Address:10.0.0.91, IP Address:10.0.0.92, IP Address:10.0.0.93, IP Address:10.0.0.94, IP Address:10.0.0.95, IP Address:10.0.0.96, IP Address:10.0.0.97, IP Address:10.0.0.98, IP Address:10.0.0.99, IP Address:10.0.0.100, IP Address:10.0.0.101, IP Address:10.0.0.102, IP Address:10.0.0.103, IP Address:10.0.0.104, IP Address:10.0.0.105, IP Address:10.0.0.106, IP Address:10.0.0.107, IP Address:10.0.0.108, IP Address:10.0.0.109, IP Address:10.0.0.110, IP Address:10.0.0.111, IP Address:10.0.0.112, IP Address:10.0.0.113, IP Address:10.0.0.114, IP Address:10.0.0.115, IP Address:10.0.0.116, IP Address:10.0.0.117, IP Address:10.0.0.118, IP Address:10.0.0.119, IP Address:10.0.0.120, IP Address:10.0.0.121, IP Address:10.0.0.122, IP Address:10.0.0.123, IP Address:10.0.0.124, IP Address:10.0.0.125, IP Address:10.0.0.126, IP Address:10.0.0.127, IP Address:10.0.0.128, IP Address:10.0.0.129, IP Address:10.0.0.130, IP Address:10.0.0.131, IP Address:10.0.0.132, IP Address:10.0.0.133, IP Address:10.0.0.134, IP Address:10.0.0.135, IP Address:10.0.0.136, IP Address:10.0.0.137, IP Address:10.0.0.138, IP Address:10.0.0.139, IP Address:10.0.0.140, IP Address:10.0.0.141, IP Address:10.0.0.142, IP Address:10.0.0.143, IP Address:10.0.0.144, IP Address:10.0.0.145, IP Address:10.0.0.146, IP Address:10.0.0.147, IP Address:10.0.0.148, IP Address:10.0.0.149, IP Address:10.0.0.150, IP Address:10.0.0.151, IP Address:10.0.0.152, IP Address:10.0.0.153, IP Address:10.0.0.154, IP Address:10.0.0.155, IP Address:10.0.0.156, IP Address:10.0.0.157, IP Address:10.0.0.158, IP Address:10.0.0.159, IP Address:10.0.0.160, IP Address:10.0.0.161, IP Address:10.0.0.162, IP Address:10.0.0.163, IP Address:10.0.0.164, IP Address:10.0.0.165, IP Address:10.0.0.166, IP Address:10.0.0.167, IP Address:10.0.0.168, IP Address:10.0.0.169, IP Address:10.0.0.170, IP Address:10.0.0.171, IP Address:10.0.0.172, IP Address:10.0.0.173, IP Address:10.0.0.174, IP Address:10.0.0.175, IP Address:10.0.0.176, IP Address:10.0.0.177, IP Address:10.0.0.178, IP Address:10.0.0.179, IP Address:10.0.0.180, IP Address:10.0.0.181, IP Address:10.0.0.182, IP Address:10.0.0.183, IP Address:10.0.0.184, IP Address:10.0.0.185, IP Address:10.0.0.186, IP Address:10.0.0.187, IP Address:10.0.0.188, IP Address:10.0.0.189, IP Address:10.0.0.190, IP Address:10.0.0.191, IP Address:10.0.0.192, IP Address:10.0.0.193, IP Address:10.0.0.194, IP Address:10.0.0.195, IP Address:10.0.0.196, IP Address:10.0.0.197, IP Address:10.0.0.198, IP Address:10.0.0.199, IP Address:10.0.0.200, IP Address:10.0.0.201, IP Address:10.0.0.202, IP Address:10.0.0.203, IP Address:10.0.0.204, IP Address:10.0.0.205, IP Address:10.0.0.206, IP Address:10.0.0.207, IP Address:10.0.0.208, IP Address:10.0.0.209, IP Address:10.0.0.210, IP Address:10.0.0.211, IP Address:10.0.0.212, IP Address:10.0.0.213, IP Address:10.0.0.214, IP Address:10.0.0.215, IP Address:10.0.0.216, IP Address:10.0.0.217, IP Address:10.0.0.218, IP Address:10.0.0.219, IP Address:10.0.0.220, IP Address:10.0.0.221, IP Address:10.0.0.222, IP Address:10.0.0.223, IP Address:10.0.0.224, IP Address:10.0.0.225, IP Address:10.0.0.226, IP Address:10.0.0.227, IP Address:10.0.0.228, IP Address:10.0.0.229, IP Address:10.0.0.230, IP Address:10.0.0.231, IP Address:10.0.0.232, IP Address:10.0.0.233, IP Address:10.0.0.234, IP Address:10.0.0.235, IP Address:10.0.0.236, IP Address:10.0.0.237, IP Address:10.0.0.238, IP Address:10.0.0.239, IP Address:10.0.0.240, IP Address:10.0.0.241, IP Address:10.0.0.242, IP Address:10.0.0.243, IP Address:10.0.0.244, IP Address:10.0.0.245, IP Address:10.0.0.246, IP Address:10.0.0.247, IP Address:10.0.0.248, IP Address:10.0.0.249, IP Address:10.0.0.250, IP Address:10.0.0.251, IP Address:10.0.0.252, IP Address:10.0.0.253, IP Address:10.0.0.254, IP Address:10.0.0.255, IP Address:10.0.1.0, IP Address:10.0.1.1, IP Address:10.0.1.2, IP Address:10.0.1.3, IP Address:10.0.1.4, IP Address:10.0.1.5, IP Address:10.0.1.6, IP Address:10.0.1.7, IP Address:10.0.1.8, IP Address:10.0.1.9, IP Address:10.0.1.10, IP Address:10.0.1.11, IP Address:10.0.1.12, IP Address:10.0.1.13, IP Address:10.0.1.14, IP Address:10.0.1.15, IP Address:10.0.1.16, IP Address:10.0.1.17, IP Address:10.0.1.18, IP Address:10.0.1.19, IP Address:10.0.1.20, IP Address:10.0.1.21, IP Address:10.0.1.22, IP Address:10.0.1.23, IP Address:10.0.1.24, IP Address:10.0.1.25, IP Address:10.0.1.26, IP Address:10.0.1.27, IP Address:10.0.1.28, IP Address:10.0.1.29, IP Address:10.0.1.30, IP Address:10.0.1.31, IP Address:10.0.1.32, IP Address:10.0.1.33, IP Address:10.0.1.34, IP Address:10.0.1.35, IP Address:10.0.1.36, IP Address:10.0.1.37, IP Address:10.0.1.38, IP Address:10.0.1.39, IP Address:10.0.1.40, IP Address:10.0.1.41, IP Address:10.0.1.42, IP Address:10.0.1.43, IP Address:10.0.1.44, IP Address:10.0.1.45, IP Address:10.0.1.46, IP Address:10.0.1.47, IP Address:10.0.1.48, IP Address:10.0.1.49, IP Address:10.0.1.50, IP Address:10.0.1.51, IP Address:10.0.1.52, IP Address:10.0.1.53, IP Address:10.0.1.54, IP Address:10.0.1.55, IP Address:10.0.1.56, IP Address:10.0.1.57, IP Address:10.0.1.58, IP Address:10.0.1.59, IP Address:10.0.1.60, IP Address:10.0.1.61, IP Address:10.0.1.62, IP Address:10.0.1.63, IP Address:10.0.1.64, IP Address:10.0.1.65, IP Address:10.0.1.66, IP Address:10.0.1.67, IP Address:10.0.1.68, IP Address:10.0.1.69, IP Address:10.0.1.70, IP Address:10.0.1.71, IP Address:10.0.1.72, IP Address:10.0.1.73, IP Address:10.0.1.74, IP Address:10.0.1.75, IP Address:10.0.1.76, IP Address:10.0.1.77, IP Address:10.0.1.78, IP Address:10.0.1.79, IP Address:10.0.1.80, IP Address:10.0.1.81, IP Address:10.0.1.82, IP Address:10.0.1.83, IP Address:10.0.1.84, IP Address:10.0.1.85, IP Address:10.0.1.86, IP Address:10.0.1.87, IP Address:10.0.1.88, IP Address:10.0.1.89, IP Address:10.0.1.90, IP Address:10.0.1.91, IP Address:10.0.1.92, IP Address:10.0.1.93, IP Address:10.0.1.94, IP Address:10.0.1.95, IP Address:10.0.1.96, IP Address:10.0.1.97, IP Address:10.0.1.98, IP Address:10.0.1.99, IP Address:10.0.1.100, IP Address:10.0.1.101, IP Address:10.0.1.102, IP Address:10.0.1.103, IP Address:10.0.1.104, IP Address:10.0.1.105, IP Address:10.0.1.106, IP Address:10.0.1.107, IP Address:10.0.1.108, IP Address:10.0.1.109, IP Address:10.0.1.110, IP Address:10.0.1.111, IP Address:10.0.1.112, IP Address:10.0.1.113, IP Address:10.0.1.114, IP Address:10.0.1.115, IP Address:10.0.1.116, IP Address:10.0.1.117, IP Address:10.0.1.118, IP Address:10.0.1.119, IP Address:10.0.1.120, IP Address:10.0.1.121, IP Address:10.0.1.122, IP Address:10.0.1.123, IP Address:10.0.1.124, IP Address:10.0.1.125, IP Address:10.0.1.126, IP Address:10.0.1.127, IP Address:10.0.1.128, IP Address:10.0.1.129, IP Address:10.0.1.130, IP Address:10.0.1.131, IP Address:10.0.1.132, IP Address:10.0.1.133, IP Address:10.0.1.134, IP Address:10.0.1.135, IP Address:10.0.1.136, IP Address:10.0.1.137, IP Address:10.0.1.138, IP Address:10.0.1.139, IP Address:10.0.1.140, IP Address:10.0.1.141, IP Address:10.0.1.142, IP Address:10.0.1.143, IP Address:10.0.1.144, IP Address:10.0.1.145, IP Address:10.0.1.146, IP Address:10.0.1.147, IP Address:10.0.1.148, IP Address:10.0.1.149, IP Address:10.0.1.150, IP Address:10.0.1.151, IP Address:10.0.1.152, IP Address:10.0.1.153, IP Address:10.0.1.154, IP Address:10.0.1.155, IP Address:10.0.1.156, IP Address:10.0.1.157, IP Address:10.0.1.158, IP Address:10.0.1.159, IP Address:10.0.1.160, IP Address:10.0.1.161, DirName:/CN=t0, DirName:/CN=t1, DirName:/CN=t2, DirName:/CN=t3, DirName:/CN=t4, DirName:/CN=t5, DirName:/CN=t6, DirName:/CN=t7, DirName:/CN=t8, DirName:/CN=t9, DirName:/CN=t10, DirName:/CN=t11, DirName:/CN=t12, DirName:/CN=t13, DirName:/CN=t14, DirName:/CN=t15, DirName:/CN=t16, DirName:/CN=t17, DirName:/CN=t18, DirName:/CN=t19, DirName:/CN=t20, DirName:/CN=t21, DirName:/CN=t22, DirName:/CN=t23, DirName:/CN=t24, DirName:/CN=t25, DirName:/CN=t26, DirName:/CN=t27, DirName:/CN=t28, DirName:/CN=t29, DirName:/CN=t30, DirName:/CN=t31, DirName:/CN=t32, DirName:/CN=t33, DirName:/CN=t34, DirName:/CN=t35, DirName:/CN=t36, DirName:/CN=t37, DirName:/CN=t38, DirName:/CN=t39, DirName:/CN=t40, DirName:/CN=t41, DirName:/CN=t42, DirName:/CN=t43, DirName:/CN=t44, DirName:/CN=t45, DirName:/CN=t46, DirName:/CN=t47, DirName:/CN=t48, DirName:/CN=t49, DirName:/CN=t50, DirName:/CN=t51, DirName:/CN=t52, DirName:/CN=t53, DirName:/CN=t54, DirName:/CN=t55, DirName:/CN=t56, DirName:/CN=t57, DirName:/CN=t58, DirName:/CN=t59, DirName:/CN=t60, DirName:/CN=t61, DirName:/CN=t62, DirName:/CN=t63, DirName:/CN=t64, DirName:/CN=t65, DirName:/CN=t66, DirName:/CN=t67, DirName:/CN=t68, DirName:/CN=t69, DirName:/CN=t70, DirName:/CN=t71, DirName:/CN=t72, DirName:/CN=t73, DirName:/CN=t74, DirName:/CN=t75, DirName:/CN=t76, DirName:/CN=t77, DirName:/CN=t78, DirName:/CN=t79, DirName:/CN=t80, DirName:/CN=t81, DirName:/CN=t82, DirName:/CN=t83, DirName:/CN=t84, DirName:/CN=t85, DirName:/CN=t86, DirName:/CN=t87, DirName:/CN=t88, DirName:/CN=t89, DirName:/CN=t90, DirName:/CN=t91, DirName:/CN=t92, DirName:/CN=t93, DirName:/CN=t94, DirName:/CN=t95, DirName:/CN=t96, DirName:/CN=t97, DirName:/CN=t98, DirName:/CN=t99, DirName:/CN=t100, DirName:/CN=t101, DirName:/CN=t102, DirName:/CN=t103, DirName:/CN=t104, DirName:/CN=t105, DirName:/CN=t106, DirName:/CN=t107, DirName:/CN=t108, DirName:/CN=t109, DirName:/CN=t110, DirName:/CN=t111, DirName:/CN=t112, DirName:/CN=t113, DirName:/CN=t114, DirName:/CN=t115, DirName:/CN=t116, DirName:/CN=t117, DirName:/CN=t118, DirName:/CN=t119, DirName:/CN=t120, DirName:/CN=t121, DirName:/CN=t122, DirName:/CN=t123, DirName:/CN=t124, DirName:/CN=t125, DirName:/CN=t126, DirName:/CN=t127, DirName:/CN=t128, DirName:/CN=t129, DirName:/CN=t130, DirName:/CN=t131, DirName:/CN=t132, DirName:/CN=t133, DirName:/CN=t134, DirName:/CN=t135, DirName:/CN=t136, DirName:/CN=t137, DirName:/CN=t138, DirName:/CN=t139, DirName:/CN=t140, DirName:/CN=t141, DirName:/CN=t142, DirName:/CN=t143, DirName:/CN=t144, DirName:/CN=t145, DirName:/CN=t146, DirName:/CN=t147, DirName:/CN=t148, DirName:/CN=t149, DirName:/CN=t150, DirName:/CN=t151, DirName:/CN=t152, DirName:/CN=t153, DirName:/CN=t154, DirName:/CN=t155, DirName:/CN=t156, DirName:/CN=t157, DirName:/CN=t158, DirName:/CN=t159, DirName:/CN=t160, DirName:/CN=t161, DirName:/CN=t162, DirName:/CN=t163, DirName:/CN=t164, DirName:/CN=t165, DirName:/CN=t166, DirName:/CN=t167, DirName:/CN=t168, DirName:/CN=t169, DirName:/CN=t170, DirName:/CN=t171, DirName:/CN=t172, DirName:/CN=t173, DirName:/CN=t174, DirName:/CN=t175, DirName:/CN=t176, DirName:/CN=t177, DirName:/CN=t178, DirName:/CN=t179, DirName:/CN=t180, DirName:/CN=t181, DirName:/CN=t182, DirName:/CN=t183, DirName:/CN=t184, DirName:/CN=t185, DirName:/CN=t186, DirName:/CN=t187, DirName:/CN=t188, DirName:/CN=t189, DirName:/CN=t190, DirName:/CN=t191, DirName:/CN=t192, DirName:/CN=t193, DirName:/CN=t194, DirName:/CN=t195, DirName:/CN=t196, DirName:/CN=t197, DirName:/CN=t198, DirName:/CN=t199, DirName:/CN=t200, DirName:/CN=t201, DirName:/CN=t202, DirName:/CN=t203, DirName:/CN=t204, DirName:/CN=t205, DirName:/CN=t206, DirName:/CN=t207, DirName:/CN=t208, DirName:/CN=t209, DirName:/CN=t210, DirName:/CN=t211, DirName:/CN=t212, DirName:/CN=t213, DirName:/CN=t214, DirName:/CN=t215, DirName:/CN=t216, DirName:/CN=t217, DirName:/CN=t218, DirName:/CN=t219, DirName:/CN=t220, DirName:/CN=t221, DirName:/CN=t222, DirName:/CN=t223, DirName:/CN=t224, DirName:/CN=t225, DirName:/CN=t226, DirName:/CN=t227, DirName:/CN=t228, DirName:/CN=t229, DirName:/CN=t230, DirName:/CN=t231, DirName:/CN=t232, DirName:/CN=t233, DirName:/CN=t234, DirName:/CN=t235, DirName:/CN=t236, DirName:/CN=t237, DirName:/CN=t238, DirName:/CN=t239, DirName:/CN=t240, DirName:/CN=t241, DirName:/CN=t242, DirName:/CN=t243, DirName:/CN=t244, DirName:/CN=t245, DirName:/CN=t246, DirName:/CN=t247, DirName:/CN=t248, DirName:/CN=t249, DirName:/CN=t250, DirName:/CN=t251, DirName:/CN=t252, DirName:/CN=t253, DirName:/CN=t254, DirName:/CN=t255, DirName:/CN=t256, DirName:/CN=t257, DirName:/CN=t258, DirName:/CN=t259, DirName:/CN=t260, DirName:/CN=t261, DirName:/CN=t262, DirName:/CN=t263, DirName:/CN=t264, DirName:/CN=t265, DirName:/CN=t266, DirName:/CN=t267, DirName:/CN=t268, DirName:/CN=t269, DirName:/CN=t270, DirName:/CN=t271, DirName:/CN=t272, DirName:/CN=t273, DirName:/CN=t274, DirName:/CN=t275, DirName:/CN=t276, DirName:/CN=t277, DirName:/CN=t278, DirName:/CN=t279, DirName:/CN=t280, DirName:/CN=t281, DirName:/CN=t282, DirName:/CN=t283, DirName:/CN=t284, DirName:/CN=t285, DirName:/CN=t286, DirName:/CN=t287, DirName:/CN=t288, DirName:/CN=t289, DirName:/CN=t290, DirName:/CN=t291, DirName:/CN=t292, DirName:/CN=t293, DirName:/CN=t294, DirName:/CN=t295, DirName:/CN=t296, DirName:/CN=t297, DirName:/CN=t298, DirName:/CN=t299, DirName:/CN=t300, DirName:/CN=t301, DirName:/CN=t302, DirName:/CN=t303, DirName:/CN=t304, DirName:/CN=t305, DirName:/CN=t306, DirName:/CN=t307, DirName:/CN=t308, DirName:/CN=t309, DirName:/CN=t310, DirName:/CN=t311, DirName:/CN=t312, DirName:/CN=t313, DirName:/CN=t314, DirName:/CN=t315, DirName:/CN=t316, DirName:/CN=t317, DirName:/CN=t318, DirName:/CN=t319, DirName:/CN=t320, DirName:/CN=t321, DirName:/CN=t322, DirName:/CN=t323, DirName:/CN=t324, DirName:/CN=t325, DirName:/CN=t326, DirName:/CN=t327, DirName:/CN=t328, DirName:/CN=t329, DirName:/CN=t330, DirName:/CN=t331, DirName:/CN=t332, DirName:/CN=t333, DirName:/CN=t334, DirName:/CN=t335, DirName:/CN=t336, DirName:/CN=t337, DirName:/CN=t338, DirName:/CN=t339, DirName:/CN=t340, DirName:/CN=t341, DirName:/CN=t342, DirName:/CN=t343, DirName:/CN=t344, DirName:/CN=t345, DirName:/CN=t346, DirName:/CN=t347, DirName:/CN=t348, DirName:/CN=t349, DirName:/CN=t350, DirName:/CN=t351, DirName:/CN=t352, DirName:/CN=t353, DirName:/CN=t354, DirName:/CN=t355, DirName:/CN=t356, DirName:/CN=t357, DirName:/CN=t358, DirName:/CN=t359, DirName:/CN=t360, DirName:/CN=t361, DirName:/CN=t362, DirName:/CN=t363, DirName:/CN=t364, DirName:/CN=t365, DirName:/CN=t366, DirName:/CN=t367, DirName:/CN=t368, DirName:/CN=t369, DirName:/CN=t370, DirName:/CN=t371, DirName:/CN=t372, DirName:/CN=t373, DirName:/CN=t374, DirName:/CN=t375, DirName:/CN=t376, DirName:/CN=t377, DirName:/CN=t378, DirName:/CN=t379, DirName:/CN=t380, DirName:/CN=t381, DirName:/CN=t382, DirName:/CN=t383, DirName:/CN=t384, DirName:/CN=t385, DirName:/CN=t386, DirName:/CN=t387, DirName:/CN=t388, DirName:/CN=t389, DirName:/CN=t390, DirName:/CN=t391, DirName:/CN=t392, DirName:/CN=t393, DirName:/CN=t394, DirName:/CN=t395, DirName:/CN=t396, DirName:/CN=t397, DirName:/CN=t398, DirName:/CN=t399, DirName:/CN=t400, DirName:/CN=t401, DirName:/CN=t402, DirName:/CN=t403, DirName:/CN=t404, DirName:/CN=t405, DirName:/CN=t406, DirName:/CN=t407, DirName:/CN=t408, DirName:/CN=t409, DirName:/CN=t410, DirName:/CN=t411, DirName:/CN=t412, DirName:/CN=t413, DirName:/CN=t414, DirName:/CN=t415, DirName:/CN=t416, URI:http://test/0, URI:http://test/1, URI:http://test/2, URI:http://test/3, URI:http://test/4, URI:http://test/5, URI:http://test/6, URI:http://test/7, URI:http://test/8, URI:http://test/9, URI:http://test/10, URI:http://test/11, URI:http://test/12, URI:http://test/13, URI:http://test/14, URI:http://test/15, URI:http://test/16, URI:http://test/17, URI:http://test/18, URI:http://test/19, URI:http://test/20, URI:http://test/21, URI:http://test/22, URI:http://test/23, URI:http://test/24, URI:http://test/25, URI:http://test/26, URI:http://test/27, URI:http://test/28, URI:http://test/29, URI:http://test/30, URI:http://test/31, URI:http://test/32, URI:http://test/33, URI:http://test/34, URI:http://test/35, URI:http://test/36, URI:http://test/37, URI:http://test/38, URI:http://test/39, URI:http://test/40, URI:http://test/41, URI:http://test/42, URI:http://test/43, URI:http://test/44, URI:http://test/45, URI:http://test/46, URI:http://test/47, URI:http://test/48, URI:http://test/49, URI:http://test/50, URI:http://test/51, URI:http://test/52, URI:http://test/53, URI:http://test/54, URI:http://test/55, URI:http://test/56, URI:http://test/57, URI:http://test/58, URI:http://test/59, URI:http://test/60, URI:http://test/61, URI:http://test/62, URI:http://test/63, URI:http://test/64, URI:http://test/65, URI:http://test/66, URI:http://test/67, URI:http://test/68, URI:http://test/69, URI:http://test/70, URI:http://test/71, URI:http://test/72, URI:http://test/73, URI:http://test/74, URI:http://test/75, URI:http://test/76, URI:http://test/77, URI:http://test/78, URI:http://test/79, URI:http://test/80, URI:http://test/81, URI:http://test/82, URI:http://test/83, URI:http://test/84, URI:http://test/85, URI:http://test/86, URI:http://test/87, URI:http://test/88, URI:http://test/89, URI:http://test/90, URI:http://test/91, URI:http://test/92, URI:http://test/93, URI:http://test/94, URI:http://test/95, URI:http://test/96, URI:http://test/97, URI:http://test/98, URI:http://test/99, URI:http://test/100, URI:http://test/101, URI:http://test/102, URI:http://test/103, URI:http://test/104, URI:http://test/105, URI:http://test/106, URI:http://test/107, URI:http://test/108, URI:http://test/109, URI:http://test/110, URI:http://test/111, URI:http://test/112, URI:http://test/113, URI:http://test/114, URI:http://test/115, URI:http://test/116, URI:http://test/117, URI:http://test/118, URI:http://test/119, URI:http://test/120, URI:http://test/121, URI:http://test/122, URI:http://test/123, URI:http://test/124, URI:http://test/125, URI:http://test/126, URI:http://test/127, URI:http://test/128, URI:http://test/129, URI:http://test/130, URI:http://test/131, URI:http://test/132, URI:http://test/133, URI:http://test/134, URI:http://test/135, URI:http://test/136, URI:http://test/137, URI:http://test/138, URI:http://test/139, URI:http://test/140, URI:http://test/141, URI:http://test/142, URI:http://test/143, URI:http://test/144, URI:http://test/145, URI:http://test/146, URI:http://test/147, URI:http://test/148, URI:http://test/149, URI:http://test/150, URI:http://test/151, URI:http://test/152, URI:http://test/153, URI:http://test/154, URI:http://test/155, URI:http://test/156, URI:http://test/157, URI:http://test/158, URI:http://test/159, URI:http://test/160, URI:http://test/161, URI:http://test/162, URI:http://test/163, URI:http://test/164, URI:http://test/165, URI:http://test/166, URI:http://test/167, URI:http://test/168, URI:http://test/169, URI:http://test/170, URI:http://test/171, URI:http://test/172, URI:http://test/173, URI:http://test/174, URI:http://test/175, URI:http://test/176, URI:http://test/177, URI:http://test/178, URI:http://test/179, URI:http://test/180, URI:http://test/181, URI:http://test/182, URI:http://test/183, URI:http://test/184, URI:http://test/185, URI:http://test/186, URI:http://test/187, URI:http://test/188, URI:http://test/189, URI:http://test/190, URI:http://test/191, URI:http://test/192, URI:http://test/193, URI:http://test/194, URI:http://test/195, URI:http://test/196, URI:http://test/197, URI:http://test/198, URI:http://test/199, URI:http://test/200, URI:http://test/201, URI:http://test/202, URI:http://test/203, URI:http://test/204, URI:http://test/205, URI:http://test/206, URI:http://test/207, URI:http://test/208, URI:http://test/209, URI:http://test/210, URI:http://test/211, URI:http://test/212, URI:http://test/213, URI:http://test/214, URI:http://test/215, URI:http://test/216, URI:http://test/217, URI:http://test/218, URI:http://test/219, URI:http://test/220, URI:http://test/221, URI:http://test/222, URI:http://test/223, URI:http://test/224, URI:http://test/225, URI:http://test/226, URI:http://test/227, URI:http://test/228, URI:http://test/229, URI:http://test/230, URI:http://test/231, URI:http://test/232, URI:http://test/233, URI:http://test/234, URI:http://test/235, URI:http://test/236, URI:http://test/237, URI:http://test/238, URI:http://test/239, URI:http://test/240, URI:http://test/241, URI:http://test/242, URI:http://test/243, URI:http://test/244, URI:http://test/245, URI:http://test/246, URI:http://test/247, URI:http://test/248, URI:http://test/249, URI:http://test/250, URI:http://test/251, URI:http://test/252, URI:http://test/253, URI:http://test/254, URI:http://test/255, URI:http://test/256, URI:http://test/257, URI:http://test/258, URI:http://test/259, URI:http://test/260, URI:http://test/261, URI:http://test/262, URI:http://test/263, URI:http://test/264, URI:http://test/265, URI:http://test/266, URI:http://test/267, URI:http://test/268, URI:http://test/269, URI:http://test/270, URI:http://test/271, URI:http://test/272, URI:http://test/273, URI:http://test/274, URI:http://test/275, URI:http://test/276, URI:http://test/277, URI:http://test/278, URI:http://test/279, URI:http://test/280, URI:http://test/281, URI:http://test/282, URI:http://test/283, URI:http://test/284, URI:http://test/285, URI:http://test/286, URI:http://test/287, URI:http://test/288, URI:http://test/289, URI:http://test/290, URI:http://test/291, URI:http://test/292, URI:http://test/293, URI:http://test/294, URI:http://test/295, URI:http://test/296, URI:http://test/297, URI:http://test/298, URI:http://test/299, URI:http://test/300, URI:http://test/301, URI:http://test/302, URI:http://test/303, URI:http://test/304, URI:http://test/305, URI:http://test/306, URI:http://test/307, URI:http://test/308, URI:http://test/309, URI:http://test/310, URI:http://test/311, URI:http://test/312, URI:http://test/313, URI:http://test/314, URI:http://test/315, URI:http://test/316, URI:http://test/317, URI:http://test/318, URI:http://test/319, URI:http://test/320, URI:http://test/321, URI:http://test/322, URI:http://test/323, URI:http://test/324, URI:http://test/325, URI:http://test/326, URI:http://test/327, URI:http://test/328, URI:http://test/329, URI:http://test/330, URI:http://test/331, URI:http://test/332, URI:http://test/333, URI:http://test/334, URI:http://test/335, URI:http://test/336, URI:http://test/337, URI:http://test/338, URI:http://test/339, URI:http://test/340, URI:http://test/341, URI:http://test/342, URI:http://test/343, URI:http://test/344, URI:http://test/345, URI:http://test/346, URI:http://test/347, URI:http://test/348, URI:http://test/349, URI:http://test/350, URI:http://test/351, URI:http://test/352, URI:http://test/353, URI:http://test/354, URI:http://test/355, URI:http://test/356, URI:http://test/357, URI:http://test/358, URI:http://test/359, URI:http://test/360, URI:http://test/361, URI:http://test/362, URI:http://test/363, URI:http://test/364, URI:http://test/365, URI:http://test/366, URI:http://test/367, URI:http://test/368, URI:http://test/369, URI:http://test/370, URI:http://test/371, URI:http://test/372, URI:http://test/373, URI:http://test/374, URI:http://test/375, URI:http://test/376, URI:http://test/377, URI:http://test/378, URI:http://test/379, URI:http://test/380, URI:http://test/381, URI:http://test/382, URI:http://test/383, URI:http://test/384, URI:http://test/385, URI:http://test/386, URI:http://test/387, URI:http://test/388, URI:http://test/389, URI:http://test/390, URI:http://test/391, URI:http://test/392, URI:http://test/393, URI:http://test/394, URI:http://test/395, URI:http://test/396, URI:http://test/397, URI:http://test/398, URI:http://test/399, URI:http://test/400, URI:http://test/401, URI:http://test/402, URI:http://test/403, URI:http://test/404, URI:http://test/405, URI:http://test/406, URI:http://test/407, URI:http://test/408, URI:http://test/409, URI:http://test/410, URI:http://test/411, URI:http://test/412, URI:http://test/413, URI:http://test/414, URI:http://test/415, URI:http://test/416, URI:http://test/417, URI:http://test/418, URI:http://test/419, URI:http://test/420, URI:http://test/421, URI:http://test/422, URI:http://test/423, URI:http://test/424, URI:http://test/425, URI:http://test/426, URI:http://test/427, URI:http://test/428, URI:http://test/429, URI:http://test/430, URI:http://test/431, URI:http://test/432, URI:http://test/433, URI:http://test/434, URI:http://test/435, URI:http://test/436, URI:http://test/437, URI:http://test/438, URI:http://test/439, URI:http://test/440, URI:http://test/441, URI:http://test/442, URI:http://test/443, URI:http://test/444, URI:http://test/445, URI:http://test/446, URI:http://test/447, URI:http://test/448, URI:http://test/449, URI:http://test/450, URI:http://test/451, URI:http://test/452, URI:http://test/453, URI:http://test/454, URI:http://test/455, URI:http://test/456, URI:http://test/457, URI:http://test/458, URI:http://test/459, URI:http://test/460, URI:http://test/461, URI:http://test/462, URI:http://test/463, URI:http://test/464, URI:http://test/465, URI:http://test/466, URI:http://test/467, URI:http://test/468, URI:http://test/469, URI:http://test/470, URI:http://test/471, URI:http://test/472, URI:http://test/473, URI:http://test/474, URI:http://test/475, URI:http://test/476, URI:http://test/477, URI:http://test/478, URI:http://test/479, URI:http://test/480, URI:http://test/481, URI:http://test/482, URI:http://test/483, URI:http://test/484, URI:http://test/485, URI:http://test/486, URI:http://test/487, URI:http://test/488, URI:http://test/489, URI:http://test/490, URI:http://test/491, URI:http://test/492, URI:http://test/493, URI:http://test/494, URI:http://test/495, URI:http://test/496, URI:http://test/497, URI:http://test/498, URI:http://test/499, URI:http://test/500, URI:http://test/501, URI:http://test/502, URI:http://test/503, URI:http://test/504, URI:http://test/505, URI:http://test/506, URI:http://test/507, URI:http://test/508, URI:http://test/509, URI:http://test/510, URI:http://test/511, URI:http://test/512, URI:http://test/513, URI:http://test/514, URI:http://test/515, URI:http://test/516, URI:http://test/517, URI:http://test/518, URI:http://test/519, URI:http://test/520, URI:http://test/521, URI:http://test/522, URI:http://test/523, URI:http://test/524, URI:http://test/525, URI:http://test/526, URI:http://test/527, URI:http://test/528, URI:http://test/529, URI:http://test/530, URI:http://test/531, URI:http://test/532, URI:http://test/533, URI:http://test/534, URI:http://test/535, URI:http://test/536, URI:http://test/537, URI:http://test/538, URI:http://test/539, URI:http://test/540, URI:http://test/541, URI:http://test/542, URI:http://test/543, URI:http://test/544, URI:http://test/545, URI:http://test/546, URI:http://test/547, URI:http://test/548, URI:http://test/549, URI:http://test/550, URI:http://test/551, URI:http://test/552, URI:http://test/553, URI:http://test/554, URI:http://test/555, URI:http://test/556, URI:http://test/557, URI:http://test/558, URI:http://test/559, URI:http://test/560, URI:http://test/561, URI:http://test/562, URI:http://test/563, URI:http://test/564, URI:http://test/565, URI:http://test/566, URI:http://test/567, URI:http://test/568, URI:http://test/569, URI:http://test/570, URI:http://test/571, URI:http://test/572, URI:http://test/573, URI:http://test/574, URI:http://test/575, URI:http://test/576, URI:http://test/577, URI:http://test/578, URI:http://test/579, URI:http://test/580, URI:http://test/581, URI:http://test/582, URI:http://test/583, URI:http://test/584, URI:http://test/585, URI:http://test/586, URI:http://test/587, URI:http://test/588, URI:http://test/589, URI:http://test/590, URI:http://test/591, URI:http://test/592, URI:http://test/593, URI:http://test/594, URI:http://test/595, URI:http://test/596, URI:http://test/597, URI:http://test/598, URI:http://test/599, URI:http://test/600, URI:http://test/601, URI:http://test/602, URI:http://test/603, URI:http://test/604, URI:http://test/605, URI:http://test/606, URI:http://test/607, URI:http://test/608, URI:http://test/609, URI:http://test/610, URI:http://test/611, URI:http://test/612, URI:http://test/613, URI:http://test/614, URI:http://test/615, URI:http://test/616, URI:http://test/617, URI:http://test/618, URI:http://test/619, URI:http://test/620, URI:http://test/621, URI:http://test/622, URI:http://test/623, URI:http://test/624, URI:http://test/625, URI:http://test/626, URI:http://test/627, URI:http://test/628, URI:http://test/629, URI:http://test/630, URI:http://test/631, URI:http://test/632, URI:http://test/633, URI:http://test/634, URI:http://test/635, URI:http://test/636, URI:http://test/637, URI:http://test/638, URI:http://test/639, URI:http://test/640, URI:http://test/641, URI:http://test/642, URI:http://test/643, URI:http://test/644, URI:http://test/645, URI:http://test/646, URI:http://test/647, URI:http://test/648, URI:http://test/649, URI:http://test/650, URI:http://test/651, URI:http://test/652, URI:http://test/653, URI:http://test/654, URI:http://test/655, URI:http://test/656, URI:http://test/657, URI:http://test/658, URI:http://test/659, URI:http://test/660, URI:http://test/661, URI:http://test/662, URI:http://test/663, URI:http://test/664, URI:http://test/665, URI:http://test/666, URI:http://test/667, URI:http://test/668, URI:http://test/669, URI:http://test/670, URI:http://test/671, URI:http://test/672, URI:http://test/673, URI:http://test/674, URI:http://test/675, URI:http://test/676, URI:http://test/677, URI:http://test/678, URI:http://test/679, URI:http://test/680, URI:http://test/681, URI:http://test/682, URI:http://test/683, URI:http://test/684, URI:http://test/685, URI:http://test/686, URI:http://test/687, URI:http://test/688, URI:http://test/689, URI:http://test/690, URI:http://test/691, URI:http://test/692, URI:http://test/693, URI:http://test/694, URI:http://test/695, URI:http://test/696, URI:http://test/697, URI:http://test/698, URI:http://test/699, URI:http://test/700, URI:http://test/701, URI:http://test/702, URI:http://test/703, URI:http://test/704, URI:http://test/705, URI:http://test/706, URI:http://test/707, URI:http://test/708, URI:http://test/709, URI:http://test/710, URI:http://test/711, URI:http://test/712, URI:http://test/713, URI:http://test/714, URI:http://test/715, URI:http://test/716, URI:http://test/717, URI:http://test/718, URI:http://test/719, URI:http://test/720, URI:http://test/721, URI:http://test/722, URI:http://test/723, URI:http://test/724, URI:http://test/725, URI:http://test/726, URI:http://test/727, URI:http://test/728, URI:http://test/729, URI:http://test/730, URI:http://test/731, URI:http://test/732, URI:http://test/733, URI:http://test/734, URI:http://test/735, URI:http://test/736, URI:http://test/737, URI:http://test/738, URI:http://test/739, URI:http://test/740, URI:http://test/741, URI:http://test/742, URI:http://test/743, URI:http://test/744, URI:http://test/745, URI:http://test/746, URI:http://test/747, URI:http://test/748, URI:http://test/749, URI:http://test/750, URI:http://test/751, URI:http://test/752, URI:http://test/753, URI:http://test/754, URI:http://test/755, URI:http://test/756, URI:http://test/757, URI:http://test/758, URI:http://test/759, URI:http://test/760, URI:http://test/761, URI:http://test/762, URI:http://test/763, URI:http://test/764, URI:http://test/765, URI:http://test/766, URI:http://test/767, URI:http://test/768, URI:http://test/769, URI:http://test/770, URI:http://test/771, URI:http://test/772, URI:http://test/773, URI:http://test/774, URI:http://test/775, URI:http://test/776, URI:http://test/777, URI:http://test/778, URI:http://test/779, URI:http://test/780, URI:http://test/781, URI:http://test/782, URI:http://test/783, URI:http://test/784, URI:http://test/785, URI:http://test/786, URI:http://test/787, URI:http://test/788, URI:http://test/789, URI:http://test/790, URI:http://test/791, URI:http://test/792, URI:http://test/793, URI:http://test/794, URI:http://test/795, URI:http://test/796, URI:http://test/797, URI:http://test/798, URI:http://test/799, URI:http://test/800, URI:http://test/801, URI:http://test/802, URI:http://test/803, URI:http://test/804, URI:http://test/805, URI:http://test/806, URI:http://test/807, URI:http://test/808, URI:http://test/809, URI:http://test/810, URI:http://test/811, URI:http://test/812, URI:http://test/813, URI:http://test/814, URI:http://test/815, URI:http://test/816, URI:http://test/817, URI:http://test/818, URI:http://test/819, URI:http://test/820, URI:http://test/821, URI:http://test/822, URI:http://test/823, URI:http://test/824, URI:http://test/825, URI:http://test/826, URI:http://test/827, URI:http://test/828, URI:http://test/829, URI:http://test/830, URI:http://test/831, URI:http://test/832, URI:http://test/833, URI:http://test/834, URI:http://test/835, URI:http://test/836, URI:http://test/837, URI:http://test/838, URI:http://test/839, URI:http://test/840, URI:http://test/841, URI:http://test/842, URI:http://test/843, URI:http://test/844, URI:http://test/845, URI:http://test/846, URI:http://test/847, URI:http://test/848, URI:http://test/849, URI:http://test/850, URI:http://test/851, URI:http://test/852, URI:http://test/853, URI:http://test/854, URI:http://test/855, URI:http://test/856, URI:http://test/857, URI:http://test/858, URI:http://test/859, URI:http://test/860, URI:http://test/861, URI:http://test/862, URI:http://test/863, URI:http://test/864, URI:http://test/865, URI:http://test/866, URI:http://test/867, URI:http://test/868, URI:http://test/869, URI:http://test/870, URI:http://test/871, URI:http://test/872, URI:http://test/873, URI:http://test/874, URI:http://test/875, URI:http://test/876, URI:http://test/877, URI:http://test/878, URI:http://test/879, URI:http://test/880, URI:http://test/881, URI:http://test/882, URI:http://test/883, URI:http://test/884, URI:http://test/885, URI:http://test/886, URI:http://test/887, URI:http://test/888, URI:http://test/889, URI:http://test/890, URI:http://test/891, URI:http://test/892, URI:http://test/893, URI:http://test/894, URI:http://test/895, URI:http://test/896, URI:http://test/897, URI:http://test/898, URI:http://test/899, URI:http://test/900, URI:http://test/901, URI:http://test/902, URI:http://test/903, URI:http://test/904, URI:http://test/905, URI:http://test/906, URI:http://test/907, URI:http://test/908, URI:http://test/909, URI:http://test/910, URI:http://test/911, URI:http://test/912, URI:http://test/913, URI:http://test/914, URI:http://test/915, URI:http://test/916, URI:http://test/917, URI:http://test/918, URI:http://test/919, URI:http://test/920, URI:http://test/921, URI:http://test/922, URI:http://test/923, URI:http://test/924, URI:http://test/925, URI:http://test/926, URI:http://test/927, URI:http://test/928, URI:http://test/929, URI:http://test/930, URI:http://test/931, URI:http://test/932, URI:http://test/933, URI:http://test/934, URI:http://test/935, URI:http://test/936, URI:http://test/937, URI:http://test/938, URI:http://test/939, URI:http://test/940, URI:http://test/941, URI:http://test/942, URI:http://test/943, URI:http://test/944, URI:http://test/945, URI:http://test/946, URI:http://test/947, URI:http://test/948, URI:http://test/949, URI:http://test/950, URI:http://test/951, URI:http://test/952, URI:http://test/953, URI:http://test/954, URI:http://test/955, URI:http://test/956, URI:http://test/957, URI:http://test/958, URI:http://test/959, URI:http://test/960, URI:http://test/961, URI:http://test/962, URI:http://test/963, URI:http://test/964, URI:http://test/965, URI:http://test/966, URI:http://test/967, URI:http://test/968, URI:http://test/969, URI:http://test/970, URI:http://test/971, URI:http://test/972, URI:http://test/973, URI:http://test/974, URI:http://test/975, URI:http://test/976, URI:http://test/977, URI:http://test/978, URI:http://test/979, URI:http://test/980, URI:http://test/981, URI:http://test/982, URI:http://test/983, URI:http://test/984, URI:http://test/985, URI:http://test/986, URI:http://test/987, URI:http://test/988, URI:http://test/989, URI:http://test/990, URI:http://test/991, URI:http://test/992, URI:http://test/993, URI:http://test/994, URI:http://test/995, URI:http://test/996, URI:http://test/997, URI:http://test/998, URI:http://test/999, URI:http://test/1000, URI:http://test/1001, URI:http://test/1002, URI:http://test/1003, URI:http://test/1004, URI:http://test/1005, URI:http://test/1006, URI:http://test/1007, URI:http://test/1008, URI:http://test/1009, URI:http://test/1010, URI:http://test/1011, URI:http://test/1012, URI:http://test/1013, URI:http://test/1014, URI:http://test/1015, URI:http://test/1016, URI:http://test/1017, URI:http://test/1018, URI:http://test/1019, URI:http://test/1020, URI:http://test/1021, URI:http://test/1022, URI:http://test/1023, URI:http://test/1024
-+ DNS:t0.test, DNS:t1.test, DNS:t2.test, DNS:t3.test, DNS:t4.test, DNS:t5.test, DNS:t6.test, DNS:t7.test, DNS:t8.test, DNS:t9.test, DNS:t10.test, DNS:t11.test, DNS:t12.test, DNS:t13.test, DNS:t14.test, DNS:t15.test, DNS:t16.test, DNS:t17.test, DNS:t18.test, DNS:t19.test, DNS:t20.test, DNS:t21.test, DNS:t22.test, DNS:t23.test, DNS:t24.test, DNS:t25.test, DNS:t26.test, DNS:t27.test, DNS:t28.test, DNS:t29.test, DNS:t30.test, DNS:t31.test, DNS:t32.test, DNS:t33.test, DNS:t34.test, DNS:t35.test, DNS:t36.test, DNS:t37.test, DNS:t38.test, DNS:t39.test, DNS:t40.test, DNS:t41.test, DNS:t42.test, DNS:t43.test, DNS:t44.test, DNS:t45.test, DNS:t46.test, DNS:t47.test, DNS:t48.test, DNS:t49.test, DNS:t50.test, DNS:t51.test, DNS:t52.test, DNS:t53.test, DNS:t54.test, DNS:t55.test, DNS:t56.test, DNS:t57.test, DNS:t58.test, DNS:t59.test, DNS:t60.test, DNS:t61.test, DNS:t62.test, DNS:t63.test, DNS:t64.test, DNS:t65.test, DNS:t66.test, DNS:t67.test, DNS:t68.test, DNS:t69.test, DNS:t70.test, DNS:t71.test, DNS:t72.test, DNS:t73.test, DNS:t74.test, DNS:t75.test, DNS:t76.test, DNS:t77.test, DNS:t78.test, DNS:t79.test, DNS:t80.test, DNS:t81.test, DNS:t82.test, DNS:t83.test, DNS:t84.test, DNS:t85.test, DNS:t86.test, DNS:t87.test, DNS:t88.test, DNS:t89.test, DNS:t90.test, DNS:t91.test, DNS:t92.test, DNS:t93.test, DNS:t94.test, DNS:t95.test, DNS:t96.test, DNS:t97.test, DNS:t98.test, DNS:t99.test, DNS:t100.test, DNS:t101.test, DNS:t102.test, DNS:t103.test, DNS:t104.test, DNS:t105.test, DNS:t106.test, DNS:t107.test, DNS:t108.test, DNS:t109.test, DNS:t110.test, DNS:t111.test, DNS:t112.test, DNS:t113.test, DNS:t114.test, DNS:t115.test, DNS:t116.test, DNS:t117.test, DNS:t118.test, DNS:t119.test, DNS:t120.test, DNS:t121.test, DNS:t122.test, DNS:t123.test, DNS:t124.test, DNS:t125.test, DNS:t126.test, DNS:t127.test, DNS:t128.test, DNS:t129.test, DNS:t130.test, DNS:t131.test, DNS:t132.test, DNS:t133.test, DNS:t134.test, DNS:t135.test, DNS:t136.test, DNS:t137.test, DNS:t138.test, DNS:t139.test, DNS:t140.test, DNS:t141.test, DNS:t142.test, DNS:t143.test, DNS:t144.test, DNS:t145.test, DNS:t146.test, DNS:t147.test, DNS:t148.test, DNS:t149.test, DNS:t150.test, DNS:t151.test, DNS:t152.test, DNS:t153.test, DNS:t154.test, DNS:t155.test, DNS:t156.test, DNS:t157.test, DNS:t158.test, DNS:t159.test, DNS:t160.test, DNS:t161.test, DNS:t162.test, DNS:t163.test, DNS:t164.test, DNS:t165.test, DNS:t166.test, DNS:t167.test, DNS:t168.test, DNS:t169.test, DNS:t170.test, DNS:t171.test, DNS:t172.test, DNS:t173.test, DNS:t174.test, DNS:t175.test, DNS:t176.test, DNS:t177.test, DNS:t178.test, DNS:t179.test, DNS:t180.test, DNS:t181.test, DNS:t182.test, DNS:t183.test, DNS:t184.test, DNS:t185.test, DNS:t186.test, DNS:t187.test, DNS:t188.test, DNS:t189.test, DNS:t190.test, DNS:t191.test, DNS:t192.test, DNS:t193.test, DNS:t194.test, DNS:t195.test, DNS:t196.test, DNS:t197.test, DNS:t198.test, DNS:t199.test, DNS:t200.test, DNS:t201.test, DNS:t202.test, DNS:t203.test, DNS:t204.test, DNS:t205.test, DNS:t206.test, DNS:t207.test, DNS:t208.test, DNS:t209.test, DNS:t210.test, DNS:t211.test, DNS:t212.test, DNS:t213.test, DNS:t214.test, DNS:t215.test, DNS:t216.test, DNS:t217.test, DNS:t218.test, DNS:t219.test, DNS:t220.test, DNS:t221.test, DNS:t222.test, DNS:t223.test, DNS:t224.test, DNS:t225.test, DNS:t226.test, DNS:t227.test, DNS:t228.test, DNS:t229.test, DNS:t230.test, DNS:t231.test, DNS:t232.test, DNS:t233.test, DNS:t234.test, DNS:t235.test, DNS:t236.test, DNS:t237.test, DNS:t238.test, DNS:t239.test, DNS:t240.test, DNS:t241.test, DNS:t242.test, DNS:t243.test, DNS:t244.test, DNS:t245.test, DNS:t246.test, DNS:t247.test, DNS:t248.test, DNS:t249.test, DNS:t250.test, DNS:t251.test, DNS:t252.test, DNS:t253.test, DNS:t254.test, DNS:t255.test, DNS:t256.test, DNS:t257.test, DNS:t258.test, DNS:t259.test, DNS:t260.test, DNS:t261.test, DNS:t262.test, DNS:t263.test, DNS:t264.test, DNS:t265.test, DNS:t266.test, DNS:t267.test, DNS:t268.test, DNS:t269.test, DNS:t270.test, DNS:t271.test, DNS:t272.test, DNS:t273.test, DNS:t274.test, DNS:t275.test, DNS:t276.test, DNS:t277.test, DNS:t278.test, DNS:t279.test, DNS:t280.test, DNS:t281.test, DNS:t282.test, DNS:t283.test, DNS:t284.test, DNS:t285.test, DNS:t286.test, DNS:t287.test, DNS:t288.test, DNS:t289.test, DNS:t290.test, DNS:t291.test, DNS:t292.test, DNS:t293.test, DNS:t294.test, DNS:t295.test, DNS:t296.test, DNS:t297.test, DNS:t298.test, DNS:t299.test, DNS:t300.test, DNS:t301.test, DNS:t302.test, DNS:t303.test, DNS:t304.test, DNS:t305.test, DNS:t306.test, DNS:t307.test, DNS:t308.test, DNS:t309.test, DNS:t310.test, DNS:t311.test, DNS:t312.test, DNS:t313.test, DNS:t314.test, DNS:t315.test, DNS:t316.test, DNS:t317.test, DNS:t318.test, DNS:t319.test, DNS:t320.test, DNS:t321.test, DNS:t322.test, DNS:t323.test, DNS:t324.test, DNS:t325.test, DNS:t326.test, DNS:t327.test, DNS:t328.test, DNS:t329.test, DNS:t330.test, DNS:t331.test, DNS:t332.test, DNS:t333.test, DNS:t334.test, DNS:t335.test, DNS:t336.test, DNS:t337.test, DNS:t338.test, DNS:t339.test, DNS:t340.test, IP Address:10.0.0.0, IP Address:10.0.0.1, IP Address:10.0.0.2, IP Address:10.0.0.3, IP Address:10.0.0.4, IP Address:10.0.0.5, IP Address:10.0.0.6, IP Address:10.0.0.7, IP Address:10.0.0.8, IP Address:10.0.0.9, IP Address:10.0.0.10, IP Address:10.0.0.11, IP Address:10.0.0.12, IP Address:10.0.0.13, IP Address:10.0.0.14, IP Address:10.0.0.15, IP Address:10.0.0.16, IP Address:10.0.0.17, IP Address:10.0.0.18, IP Address:10.0.0.19, IP Address:10.0.0.20, IP Address:10.0.0.21, IP Address:10.0.0.22, IP Address:10.0.0.23, IP Address:10.0.0.24, IP Address:10.0.0.25, IP Address:10.0.0.26, IP Address:10.0.0.27, IP Address:10.0.0.28, IP Address:10.0.0.29, IP Address:10.0.0.30, IP Address:10.0.0.31, IP Address:10.0.0.32, IP Address:10.0.0.33, IP Address:10.0.0.34, IP Address:10.0.0.35, IP Address:10.0.0.36, IP Address:10.0.0.37, IP Address:10.0.0.38, IP Address:10.0.0.39, IP Address:10.0.0.40, IP Address:10.0.0.41, IP Address:10.0.0.42, IP Address:10.0.0.43, IP Address:10.0.0.44, IP Address:10.0.0.45, IP Address:10.0.0.46, IP Address:10.0.0.47, IP Address:10.0.0.48, IP Address:10.0.0.49, IP Address:10.0.0.50, IP Address:10.0.0.51, IP Address:10.0.0.52, IP Address:10.0.0.53, IP Address:10.0.0.54, IP Address:10.0.0.55, IP Address:10.0.0.56, IP Address:10.0.0.57, IP Address:10.0.0.58, IP Address:10.0.0.59, IP Address:10.0.0.60, IP Address:10.0.0.61, IP Address:10.0.0.62, IP Address:10.0.0.63, IP Address:10.0.0.64, IP Address:10.0.0.65, IP Address:10.0.0.66, IP Address:10.0.0.67, IP Address:10.0.0.68, IP Address:10.0.0.69, IP Address:10.0.0.70, IP Address:10.0.0.71, IP Address:10.0.0.72, IP Address:10.0.0.73, IP Address:10.0.0.74, IP Address:10.0.0.75, IP Address:10.0.0.76, IP Address:10.0.0.77, IP Address:10.0.0.78, IP Address:10.0.0.79, IP Address:10.0.0.80, IP Address:10.0.0.81, IP Address:10.0.0.82, IP Address:10.0.0.83, IP Address:10.0.0.84, IP Address:10.0.0.85, IP Address:10.0.0.86, IP Address:10.0.0.87, IP Address:10.0.0.88, IP Address:10.0.0.89, IP Address:10.0.0.90, IP Address:10.0.0.91, IP Address:10.0.0.92, IP Address:10.0.0.93, IP Address:10.0.0.94, IP Address:10.0.0.95, IP Address:10.0.0.96, IP Address:10.0.0.97, IP Address:10.0.0.98, IP Address:10.0.0.99, IP Address:10.0.0.100, IP Address:10.0.0.101, IP Address:10.0.0.102, IP Address:10.0.0.103, IP Address:10.0.0.104, IP Address:10.0.0.105, IP Address:10.0.0.106, IP Address:10.0.0.107, IP Address:10.0.0.108, IP Address:10.0.0.109, IP Address:10.0.0.110, IP Address:10.0.0.111, IP Address:10.0.0.112, IP Address:10.0.0.113, IP Address:10.0.0.114, IP Address:10.0.0.115, IP Address:10.0.0.116, IP Address:10.0.0.117, IP Address:10.0.0.118, IP Address:10.0.0.119, IP Address:10.0.0.120, IP Address:10.0.0.121, IP Address:10.0.0.122, IP Address:10.0.0.123, IP Address:10.0.0.124, IP Address:10.0.0.125, IP Address:10.0.0.126, IP Address:10.0.0.127, IP Address:10.0.0.128, IP Address:10.0.0.129, IP Address:10.0.0.130, IP Address:10.0.0.131, IP Address:10.0.0.132, IP Address:10.0.0.133, IP Address:10.0.0.134, IP Address:10.0.0.135, IP Address:10.0.0.136, IP Address:10.0.0.137, IP Address:10.0.0.138, IP Address:10.0.0.139, IP Address:10.0.0.140, IP Address:10.0.0.141, IP Address:10.0.0.142, IP Address:10.0.0.143, IP Address:10.0.0.144, IP Address:10.0.0.145, IP Address:10.0.0.146, IP Address:10.0.0.147, IP Address:10.0.0.148, IP Address:10.0.0.149, IP Address:10.0.0.150, IP Address:10.0.0.151, IP Address:10.0.0.152, IP Address:10.0.0.153, IP Address:10.0.0.154, IP Address:10.0.0.155, IP Address:10.0.0.156, IP Address:10.0.0.157, IP Address:10.0.0.158, IP Address:10.0.0.159, IP Address:10.0.0.160, IP Address:10.0.0.161, IP Address:10.0.0.162, IP Address:10.0.0.163, IP Address:10.0.0.164, IP Address:10.0.0.165, IP Address:10.0.0.166, IP Address:10.0.0.167, IP Address:10.0.0.168, IP Address:10.0.0.169, IP Address:10.0.0.170, IP Address:10.0.0.171, IP Address:10.0.0.172, IP Address:10.0.0.173, IP Address:10.0.0.174, IP Address:10.0.0.175, IP Address:10.0.0.176, IP Address:10.0.0.177, IP Address:10.0.0.178, IP Address:10.0.0.179, IP Address:10.0.0.180, IP Address:10.0.0.181, IP Address:10.0.0.182, IP Address:10.0.0.183, IP Address:10.0.0.184, IP Address:10.0.0.185, IP Address:10.0.0.186, IP Address:10.0.0.187, IP Address:10.0.0.188, IP Address:10.0.0.189, IP Address:10.0.0.190, IP Address:10.0.0.191, IP Address:10.0.0.192, IP Address:10.0.0.193, IP Address:10.0.0.194, IP Address:10.0.0.195, IP Address:10.0.0.196, IP Address:10.0.0.197, IP Address:10.0.0.198, IP Address:10.0.0.199, IP Address:10.0.0.200, IP Address:10.0.0.201, IP Address:10.0.0.202, IP Address:10.0.0.203, IP Address:10.0.0.204, IP Address:10.0.0.205, IP Address:10.0.0.206, IP Address:10.0.0.207, IP Address:10.0.0.208, IP Address:10.0.0.209, IP Address:10.0.0.210, IP Address:10.0.0.211, IP Address:10.0.0.212, IP Address:10.0.0.213, IP Address:10.0.0.214, IP Address:10.0.0.215, IP Address:10.0.0.216, IP Address:10.0.0.217, IP Address:10.0.0.218, IP Address:10.0.0.219, IP Address:10.0.0.220, IP Address:10.0.0.221, IP Address:10.0.0.222, IP Address:10.0.0.223, IP Address:10.0.0.224, IP Address:10.0.0.225, IP Address:10.0.0.226, IP Address:10.0.0.227, IP Address:10.0.0.228, IP Address:10.0.0.229, IP Address:10.0.0.230, IP Address:10.0.0.231, IP Address:10.0.0.232, IP Address:10.0.0.233, IP Address:10.0.0.234, IP Address:10.0.0.235, IP Address:10.0.0.236, IP Address:10.0.0.237, IP Address:10.0.0.238, IP Address:10.0.0.239, IP Address:10.0.0.240, IP Address:10.0.0.241, IP Address:10.0.0.242, IP Address:10.0.0.243, IP Address:10.0.0.244, IP Address:10.0.0.245, IP Address:10.0.0.246, IP Address:10.0.0.247, IP Address:10.0.0.248, IP Address:10.0.0.249, IP Address:10.0.0.250, IP Address:10.0.0.251, IP Address:10.0.0.252, IP Address:10.0.0.253, IP Address:10.0.0.254, IP Address:10.0.0.255, IP Address:10.0.1.0, IP Address:10.0.1.1, IP Address:10.0.1.2, IP Address:10.0.1.3, IP Address:10.0.1.4, IP Address:10.0.1.5, IP Address:10.0.1.6, IP Address:10.0.1.7, IP Address:10.0.1.8, IP Address:10.0.1.9, IP Address:10.0.1.10, IP Address:10.0.1.11, IP Address:10.0.1.12, IP Address:10.0.1.13, IP Address:10.0.1.14, IP Address:10.0.1.15, IP Address:10.0.1.16, IP Address:10.0.1.17, IP Address:10.0.1.18, IP Address:10.0.1.19, IP Address:10.0.1.20, IP Address:10.0.1.21, IP Address:10.0.1.22, IP Address:10.0.1.23, IP Address:10.0.1.24, IP Address:10.0.1.25, IP Address:10.0.1.26, IP Address:10.0.1.27, IP Address:10.0.1.28, IP Address:10.0.1.29, IP Address:10.0.1.30, IP Address:10.0.1.31, IP Address:10.0.1.32, IP Address:10.0.1.33, IP Address:10.0.1.34, IP Address:10.0.1.35, IP Address:10.0.1.36, IP Address:10.0.1.37, IP Address:10.0.1.38, IP Address:10.0.1.39, IP Address:10.0.1.40, IP Address:10.0.1.41, IP Address:10.0.1.42, IP Address:10.0.1.43, IP Address:10.0.1.44, IP Address:10.0.1.45, IP Address:10.0.1.46, IP Address:10.0.1.47, IP Address:10.0.1.48, IP Address:10.0.1.49, IP Address:10.0.1.50, IP Address:10.0.1.51, IP Address:10.0.1.52, IP Address:10.0.1.53, IP Address:10.0.1.54, IP Address:10.0.1.55, IP Address:10.0.1.56, IP Address:10.0.1.57, IP Address:10.0.1.58, IP Address:10.0.1.59, IP Address:10.0.1.60, IP Address:10.0.1.61, IP Address:10.0.1.62, IP Address:10.0.1.63, IP Address:10.0.1.64, IP Address:10.0.1.65, IP Address:10.0.1.66, IP Address:10.0.1.67, IP Address:10.0.1.68, IP Address:10.0.1.69, IP Address:10.0.1.70, IP Address:10.0.1.71, IP Address:10.0.1.72, IP Address:10.0.1.73, IP Address:10.0.1.74, IP Address:10.0.1.75, IP Address:10.0.1.76, IP Address:10.0.1.77, IP Address:10.0.1.78, IP Address:10.0.1.79, IP Address:10.0.1.80, IP Address:10.0.1.81, IP Address:10.0.1.82, IP Address:10.0.1.83, IP Address:10.0.1.84, DirName:/CN=t0, DirName:/CN=t1, DirName:/CN=t2, DirName:/CN=t3, DirName:/CN=t4, DirName:/CN=t5, DirName:/CN=t6, DirName:/CN=t7, DirName:/CN=t8, DirName:/CN=t9, DirName:/CN=t10, DirName:/CN=t11, DirName:/CN=t12, DirName:/CN=t13, DirName:/CN=t14, DirName:/CN=t15, DirName:/CN=t16, DirName:/CN=t17, DirName:/CN=t18, DirName:/CN=t19, DirName:/CN=t20, DirName:/CN=t21, DirName:/CN=t22, DirName:/CN=t23, DirName:/CN=t24, DirName:/CN=t25, DirName:/CN=t26, DirName:/CN=t27, DirName:/CN=t28, DirName:/CN=t29, DirName:/CN=t30, DirName:/CN=t31, DirName:/CN=t32, DirName:/CN=t33, DirName:/CN=t34, DirName:/CN=t35, DirName:/CN=t36, DirName:/CN=t37, DirName:/CN=t38, DirName:/CN=t39, DirName:/CN=t40, DirName:/CN=t41, DirName:/CN=t42, DirName:/CN=t43, DirName:/CN=t44, DirName:/CN=t45, DirName:/CN=t46, DirName:/CN=t47, DirName:/CN=t48, DirName:/CN=t49, DirName:/CN=t50, DirName:/CN=t51, DirName:/CN=t52, DirName:/CN=t53, DirName:/CN=t54, DirName:/CN=t55, DirName:/CN=t56, DirName:/CN=t57, DirName:/CN=t58, DirName:/CN=t59, DirName:/CN=t60, DirName:/CN=t61, DirName:/CN=t62, DirName:/CN=t63, DirName:/CN=t64, DirName:/CN=t65, DirName:/CN=t66, DirName:/CN=t67, DirName:/CN=t68, DirName:/CN=t69, DirName:/CN=t70, DirName:/CN=t71, DirName:/CN=t72, DirName:/CN=t73, DirName:/CN=t74, DirName:/CN=t75, DirName:/CN=t76, DirName:/CN=t77, DirName:/CN=t78, DirName:/CN=t79, DirName:/CN=t80, DirName:/CN=t81, DirName:/CN=t82, DirName:/CN=t83, DirName:/CN=t84, DirName:/CN=t85, DirName:/CN=t86, DirName:/CN=t87, DirName:/CN=t88, DirName:/CN=t89, DirName:/CN=t90, DirName:/CN=t91, DirName:/CN=t92, DirName:/CN=t93, DirName:/CN=t94, DirName:/CN=t95, DirName:/CN=t96, DirName:/CN=t97, DirName:/CN=t98, DirName:/CN=t99, DirName:/CN=t100, DirName:/CN=t101, DirName:/CN=t102, DirName:/CN=t103, DirName:/CN=t104, DirName:/CN=t105, DirName:/CN=t106, DirName:/CN=t107, DirName:/CN=t108, DirName:/CN=t109, DirName:/CN=t110, DirName:/CN=t111, DirName:/CN=t112, DirName:/CN=t113, DirName:/CN=t114, DirName:/CN=t115, DirName:/CN=t116, DirName:/CN=t117, DirName:/CN=t118, DirName:/CN=t119, DirName:/CN=t120, DirName:/CN=t121, DirName:/CN=t122, DirName:/CN=t123, DirName:/CN=t124, DirName:/CN=t125, DirName:/CN=t126, DirName:/CN=t127, DirName:/CN=t128, DirName:/CN=t129, DirName:/CN=t130, DirName:/CN=t131, DirName:/CN=t132, DirName:/CN=t133, DirName:/CN=t134, DirName:/CN=t135, DirName:/CN=t136, DirName:/CN=t137, DirName:/CN=t138, DirName:/CN=t139, DirName:/CN=t140, DirName:/CN=t141, DirName:/CN=t142, DirName:/CN=t143, DirName:/CN=t144, DirName:/CN=t145, DirName:/CN=t146, DirName:/CN=t147, DirName:/CN=t148, DirName:/CN=t149, DirName:/CN=t150, DirName:/CN=t151, DirName:/CN=t152, DirName:/CN=t153, DirName:/CN=t154, DirName:/CN=t155, DirName:/CN=t156, DirName:/CN=t157, DirName:/CN=t158, DirName:/CN=t159, DirName:/CN=t160, DirName:/CN=t161, DirName:/CN=t162, DirName:/CN=t163, DirName:/CN=t164, DirName:/CN=t165, DirName:/CN=t166, DirName:/CN=t167, DirName:/CN=t168, DirName:/CN=t169, DirName:/CN=t170, DirName:/CN=t171, DirName:/CN=t172, DirName:/CN=t173, DirName:/CN=t174, DirName:/CN=t175, DirName:/CN=t176, DirName:/CN=t177, DirName:/CN=t178, DirName:/CN=t179, DirName:/CN=t180, DirName:/CN=t181, DirName:/CN=t182, DirName:/CN=t183, DirName:/CN=t184, DirName:/CN=t185, DirName:/CN=t186, DirName:/CN=t187, DirName:/CN=t188, DirName:/CN=t189, DirName:/CN=t190, DirName:/CN=t191, DirName:/CN=t192, DirName:/CN=t193, DirName:/CN=t194, DirName:/CN=t195, DirName:/CN=t196, DirName:/CN=t197, DirName:/CN=t198, DirName:/CN=t199, DirName:/CN=t200, DirName:/CN=t201, DirName:/CN=t202, DirName:/CN=t203, DirName:/CN=t204, DirName:/CN=t205, DirName:/CN=t206, DirName:/CN=t207, DirName:/CN=t208, DirName:/CN=t209, DirName:/CN=t210, DirName:/CN=t211, DirName:/CN=t212, DirName:/CN=t213, DirName:/CN=t214, DirName:/CN=t215, DirName:/CN=t216, DirName:/CN=t217, DirName:/CN=t218, DirName:/CN=t219, DirName:/CN=t220, DirName:/CN=t221, DirName:/CN=t222, DirName:/CN=t223, DirName:/CN=t224, DirName:/CN=t225, DirName:/CN=t226, DirName:/CN=t227, DirName:/CN=t228, DirName:/CN=t229, DirName:/CN=t230, DirName:/CN=t231, DirName:/CN=t232, DirName:/CN=t233, DirName:/CN=t234, DirName:/CN=t235, DirName:/CN=t236, DirName:/CN=t237, DirName:/CN=t238, DirName:/CN=t239, DirName:/CN=t240, DirName:/CN=t241, DirName:/CN=t242, DirName:/CN=t243, DirName:/CN=t244, DirName:/CN=t245, DirName:/CN=t246, DirName:/CN=t247, DirName:/CN=t248, DirName:/CN=t249, DirName:/CN=t250, DirName:/CN=t251, DirName:/CN=t252, DirName:/CN=t253, DirName:/CN=t254, DirName:/CN=t255, DirName:/CN=t256, DirName:/CN=t257, DirName:/CN=t258, DirName:/CN=t259, DirName:/CN=t260, DirName:/CN=t261, DirName:/CN=t262, DirName:/CN=t263, DirName:/CN=t264, DirName:/CN=t265, DirName:/CN=t266, DirName:/CN=t267, DirName:/CN=t268, DirName:/CN=t269, DirName:/CN=t270, DirName:/CN=t271, DirName:/CN=t272, DirName:/CN=t273, DirName:/CN=t274, DirName:/CN=t275, DirName:/CN=t276, DirName:/CN=t277, DirName:/CN=t278, DirName:/CN=t279, DirName:/CN=t280, DirName:/CN=t281, DirName:/CN=t282, DirName:/CN=t283, DirName:/CN=t284, DirName:/CN=t285, DirName:/CN=t286, DirName:/CN=t287, DirName:/CN=t288, DirName:/CN=t289, DirName:/CN=t290, DirName:/CN=t291, DirName:/CN=t292, DirName:/CN=t293, DirName:/CN=t294, DirName:/CN=t295, DirName:/CN=t296, DirName:/CN=t297, DirName:/CN=t298, DirName:/CN=t299, DirName:/CN=t300, DirName:/CN=t301, DirName:/CN=t302, DirName:/CN=t303, DirName:/CN=t304, DirName:/CN=t305, DirName:/CN=t306, DirName:/CN=t307, DirName:/CN=t308, DirName:/CN=t309, DirName:/CN=t310, DirName:/CN=t311, DirName:/CN=t312, DirName:/CN=t313, DirName:/CN=t314, DirName:/CN=t315, DirName:/CN=t316, DirName:/CN=t317, DirName:/CN=t318, DirName:/CN=t319, DirName:/CN=t320, DirName:/CN=t321, DirName:/CN=t322, DirName:/CN=t323, DirName:/CN=t324, DirName:/CN=t325, DirName:/CN=t326, DirName:/CN=t327, DirName:/CN=t328, DirName:/CN=t329, DirName:/CN=t330, DirName:/CN=t331, DirName:/CN=t332, DirName:/CN=t333, DirName:/CN=t334, DirName:/CN=t335, DirName:/CN=t336, DirName:/CN=t337, DirName:/CN=t338, DirName:/CN=t339, DirName:/CN=t340, DirName:/CN=t341, URI:http://test/0, URI:http://test/1, URI:http://test/2, URI:http://test/3, URI:http://test/4, URI:http://test/5, URI:http://test/6, URI:http://test/7, URI:http://test/8, URI:http://test/9, URI:http://test/10, URI:http://test/11, URI:http://test/12, URI:http://test/13, URI:http://test/14, URI:http://test/15, URI:http://test/16, URI:http://test/17, URI:http://test/18, URI:http://test/19, URI:http://test/20, URI:http://test/21, URI:http://test/22, URI:http://test/23, URI:http://test/24, URI:http://test/25, URI:http://test/26, URI:http://test/27, URI:http://test/28, URI:http://test/29, URI:http://test/30, URI:http://test/31, URI:http://test/32, URI:http://test/33, URI:http://test/34, URI:http://test/35, URI:http://test/36, URI:http://test/37, URI:http://test/38, URI:http://test/39, URI:http://test/40, URI:http://test/41, URI:http://test/42, URI:http://test/43, URI:http://test/44, URI:http://test/45, URI:http://test/46, URI:http://test/47, URI:http://test/48, URI:http://test/49, URI:http://test/50, URI:http://test/51, URI:http://test/52, URI:http://test/53, URI:http://test/54, URI:http://test/55, URI:http://test/56, URI:http://test/57, URI:http://test/58, URI:http://test/59, URI:http://test/60, URI:http://test/61, URI:http://test/62, URI:http://test/63, URI:http://test/64, URI:http://test/65, URI:http://test/66, URI:http://test/67, URI:http://test/68, URI:http://test/69, URI:http://test/70, URI:http://test/71, URI:http://test/72, URI:http://test/73, URI:http://test/74, URI:http://test/75, URI:http://test/76, URI:http://test/77, URI:http://test/78, URI:http://test/79, URI:http://test/80, URI:http://test/81, URI:http://test/82, URI:http://test/83, URI:http://test/84, URI:http://test/85, URI:http://test/86, URI:http://test/87, URI:http://test/88, URI:http://test/89, URI:http://test/90, URI:http://test/91, URI:http://test/92, URI:http://test/93, URI:http://test/94, URI:http://test/95, URI:http://test/96, URI:http://test/97, URI:http://test/98, URI:http://test/99, URI:http://test/100, URI:http://test/101, URI:http://test/102, URI:http://test/103, URI:http://test/104, URI:http://test/105, URI:http://test/106, URI:http://test/107, URI:http://test/108, URI:http://test/109, URI:http://test/110, URI:http://test/111, URI:http://test/112, URI:http://test/113, URI:http://test/114, URI:http://test/115, URI:http://test/116, URI:http://test/117, URI:http://test/118, URI:http://test/119, URI:http://test/120, URI:http://test/121, URI:http://test/122, URI:http://test/123, URI:http://test/124, URI:http://test/125, URI:http://test/126, URI:http://test/127, URI:http://test/128, URI:http://test/129, URI:http://test/130, URI:http://test/131, URI:http://test/132, URI:http://test/133, URI:http://test/134, URI:http://test/135, URI:http://test/136, URI:http://test/137, URI:http://test/138, URI:http://test/139, URI:http://test/140, URI:http://test/141, URI:http://test/142, URI:http://test/143, URI:http://test/144, URI:http://test/145, URI:http://test/146, URI:http://test/147, URI:http://test/148, URI:http://test/149, URI:http://test/150, URI:http://test/151, URI:http://test/152, URI:http://test/153, URI:http://test/154, URI:http://test/155, URI:http://test/156, URI:http://test/157, URI:http://test/158, URI:http://test/159, URI:http://test/160, URI:http://test/161, URI:http://test/162, URI:http://test/163, URI:http://test/164, URI:http://test/165, URI:http://test/166, URI:http://test/167, URI:http://test/168, URI:http://test/169, URI:http://test/170, URI:http://test/171, URI:http://test/172, URI:http://test/173, URI:http://test/174, URI:http://test/175, URI:http://test/176, URI:http://test/177, URI:http://test/178, URI:http://test/179, URI:http://test/180, URI:http://test/181, URI:http://test/182, URI:http://test/183, URI:http://test/184, URI:http://test/185, URI:http://test/186, URI:http://test/187, URI:http://test/188, URI:http://test/189, URI:http://test/190, URI:http://test/191, URI:http://test/192, URI:http://test/193, URI:http://test/194, URI:http://test/195, URI:http://test/196, URI:http://test/197, URI:http://test/198, URI:http://test/199, URI:http://test/200, URI:http://test/201, URI:http://test/202, URI:http://test/203, URI:http://test/204, URI:http://test/205, URI:http://test/206, URI:http://test/207, URI:http://test/208, URI:http://test/209, URI:http://test/210, URI:http://test/211, URI:http://test/212, URI:http://test/213, URI:http://test/214, URI:http://test/215, URI:http://test/216, URI:http://test/217, URI:http://test/218, URI:http://test/219, URI:http://test/220, URI:http://test/221, URI:http://test/222, URI:http://test/223, URI:http://test/224, URI:http://test/225, URI:http://test/226, URI:http://test/227, URI:http://test/228, URI:http://test/229, URI:http://test/230, URI:http://test/231, URI:http://test/232, URI:http://test/233, URI:http://test/234, URI:http://test/235, URI:http://test/236, URI:http://test/237, URI:http://test/238, URI:http://test/239, URI:http://test/240, URI:http://test/241, URI:http://test/242, URI:http://test/243, URI:http://test/244, URI:http://test/245, URI:http://test/246, URI:http://test/247, URI:http://test/248, URI:http://test/249, URI:http://test/250, URI:http://test/251, URI:http://test/252, URI:http://test/253, URI:http://test/254, URI:http://test/255, URI:http://test/256, URI:http://test/257, URI:http://test/258, URI:http://test/259, URI:http://test/260, URI:http://test/261, URI:http://test/262, URI:http://test/263, URI:http://test/264, URI:http://test/265, URI:http://test/266, URI:http://test/267, URI:http://test/268, URI:http://test/269, URI:http://test/270, URI:http://test/271, URI:http://test/272, URI:http://test/273, URI:http://test/274, URI:http://test/275, URI:http://test/276, URI:http://test/277, URI:http://test/278, URI:http://test/279, URI:http://test/280, URI:http://test/281, URI:http://test/282, URI:http://test/283, URI:http://test/284, URI:http://test/285, URI:http://test/286, URI:http://test/287, URI:http://test/288, URI:http://test/289, URI:http://test/290, URI:http://test/291, URI:http://test/292, URI:http://test/293, URI:http://test/294, URI:http://test/295, URI:http://test/296, URI:http://test/297, URI:http://test/298, URI:http://test/299, URI:http://test/300, URI:http://test/301, URI:http://test/302, URI:http://test/303, URI:http://test/304, URI:http://test/305, URI:http://test/306, URI:http://test/307, URI:http://test/308, URI:http://test/309, URI:http://test/310, URI:http://test/311, URI:http://test/312, URI:http://test/313, URI:http://test/314, URI:http://test/315, URI:http://test/316, URI:http://test/317, URI:http://test/318, URI:http://test/319, URI:http://test/320, URI:http://test/321, URI:http://test/322, URI:http://test/323, URI:http://test/324, URI:http://test/325, URI:http://test/326, URI:http://test/327, URI:http://test/328, URI:http://test/329, URI:http://test/330, URI:http://test/331, URI:http://test/332, URI:http://test/333, URI:http://test/334, URI:http://test/335, URI:http://test/336, URI:http://test/337, URI:http://test/338, URI:http://test/339, URI:http://test/340, URI:http://test/341, URI:http://test/342, URI:http://test/343, URI:http://test/344, URI:http://test/345, URI:http://test/346, URI:http://test/347, URI:http://test/348, URI:http://test/349, URI:http://test/350, URI:http://test/351, URI:http://test/352, URI:http://test/353, URI:http://test/354, URI:http://test/355, URI:http://test/356, URI:http://test/357, URI:http://test/358, URI:http://test/359, URI:http://test/360, URI:http://test/361, URI:http://test/362, URI:http://test/363, URI:http://test/364, URI:http://test/365, URI:http://test/366, URI:http://test/367, URI:http://test/368, URI:http://test/369, URI:http://test/370, URI:http://test/371, URI:http://test/372, URI:http://test/373, URI:http://test/374, URI:http://test/375, URI:http://test/376, URI:http://test/377, URI:http://test/378, URI:http://test/379, URI:http://test/380, URI:http://test/381, URI:http://test/382, URI:http://test/383, URI:http://test/384, URI:http://test/385, URI:http://test/386, URI:http://test/387, URI:http://test/388, URI:http://test/389, URI:http://test/390, URI:http://test/391, URI:http://test/392, URI:http://test/393, URI:http://test/394, URI:http://test/395, URI:http://test/396, URI:http://test/397, URI:http://test/398, URI:http://test/399, URI:http://test/400, URI:http://test/401, URI:http://test/402, URI:http://test/403, URI:http://test/404, URI:http://test/405, URI:http://test/406, URI:http://test/407, URI:http://test/408, URI:http://test/409, URI:http://test/410, URI:http://test/411, URI:http://test/412, URI:http://test/413, URI:http://test/414, URI:http://test/415, URI:http://test/416, URI:http://test/417, URI:http://test/418, URI:http://test/419, URI:http://test/420, URI:http://test/421, URI:http://test/422, URI:http://test/423, URI:http://test/424, URI:http://test/425, URI:http://test/426, URI:http://test/427, URI:http://test/428, URI:http://test/429, URI:http://test/430, URI:http://test/431, URI:http://test/432, URI:http://test/433, URI:http://test/434, URI:http://test/435, URI:http://test/436, URI:http://test/437, URI:http://test/438, URI:http://test/439, URI:http://test/440, URI:http://test/441, URI:http://test/442, URI:http://test/443, URI:http://test/444, URI:http://test/445, URI:http://test/446, URI:http://test/447, URI:http://test/448, URI:http://test/449, URI:http://test/450, URI:http://test/451, URI:http://test/452, URI:http://test/453, URI:http://test/454, URI:http://test/455, URI:http://test/456, URI:http://test/457, URI:http://test/458, URI:http://test/459, URI:http://test/460, URI:http://test/461, URI:http://test/462, URI:http://test/463, URI:http://test/464, URI:http://test/465, URI:http://test/466, URI:http://test/467, URI:http://test/468, URI:http://test/469, URI:http://test/470, URI:http://test/471, URI:http://test/472, URI:http://test/473, URI:http://test/474, URI:http://test/475, URI:http://test/476, URI:http://test/477, URI:http://test/478, URI:http://test/479, URI:http://test/480, URI:http://test/481, URI:http://test/482, URI:http://test/483, URI:http://test/484, URI:http://test/485, URI:http://test/486, URI:http://test/487, URI:http://test/488, URI:http://test/489, URI:http://test/490, URI:http://test/491, URI:http://test/492, URI:http://test/493, URI:http://test/494, URI:http://test/495, URI:http://test/496, URI:http://test/497, URI:http://test/498, URI:http://test/499, URI:http://test/500, URI:http://test/501, URI:http://test/502, URI:http://test/503, URI:http://test/504, URI:http://test/505, URI:http://test/506, URI:http://test/507, URI:http://test/508, URI:http://test/509, URI:http://test/510, URI:http://test/511, URI:http://test/512, URI:http://test/513, URI:http://test/514, URI:http://test/515, URI:http://test/516, URI:http://test/517, URI:http://test/518, URI:http://test/519, URI:http://test/520, URI:http://test/521, URI:http://test/522, URI:http://test/523, URI:http://test/524, URI:http://test/525, URI:http://test/526, URI:http://test/527, URI:http://test/528, URI:http://test/529, URI:http://test/530, URI:http://test/531, URI:http://test/532, URI:http://test/533, URI:http://test/534, URI:http://test/535, URI:http://test/536, URI:http://test/537, URI:http://test/538, URI:http://test/539, URI:http://test/540, URI:http://test/541, URI:http://test/542, URI:http://test/543, URI:http://test/544, URI:http://test/545, URI:http://test/546, URI:http://test/547, URI:http://test/548, URI:http://test/549, URI:http://test/550, URI:http://test/551, URI:http://test/552, URI:http://test/553, URI:http://test/554, URI:http://test/555, URI:http://test/556, URI:http://test/557, URI:http://test/558, URI:http://test/559, URI:http://test/560, URI:http://test/561, URI:http://test/562, URI:http://test/563, URI:http://test/564, URI:http://test/565, URI:http://test/566, URI:http://test/567, URI:http://test/568, URI:http://test/569, URI:http://test/570, URI:http://test/571, URI:http://test/572, URI:http://test/573, URI:http://test/574, URI:http://test/575, URI:http://test/576, URI:http://test/577, URI:http://test/578, URI:http://test/579, URI:http://test/580, URI:http://test/581, URI:http://test/582, URI:http://test/583, URI:http://test/584, URI:http://test/585, URI:http://test/586, URI:http://test/587, URI:http://test/588, URI:http://test/589, URI:http://test/590, URI:http://test/591, URI:http://test/592, URI:http://test/593, URI:http://test/594, URI:http://test/595, URI:http://test/596, URI:http://test/597, URI:http://test/598, URI:http://test/599, URI:http://test/600, URI:http://test/601, URI:http://test/602, URI:http://test/603, URI:http://test/604, URI:http://test/605, URI:http://test/606, URI:http://test/607, URI:http://test/608, URI:http://test/609, URI:http://test/610, URI:http://test/611, URI:http://test/612, URI:http://test/613, URI:http://test/614, URI:http://test/615, URI:http://test/616, URI:http://test/617, URI:http://test/618, URI:http://test/619, URI:http://test/620, URI:http://test/621, URI:http://test/622, URI:http://test/623, URI:http://test/624, URI:http://test/625, URI:http://test/626, URI:http://test/627, URI:http://test/628, URI:http://test/629, URI:http://test/630, URI:http://test/631, URI:http://test/632, URI:http://test/633, URI:http://test/634, URI:http://test/635, URI:http://test/636, URI:http://test/637, URI:http://test/638, URI:http://test/639, URI:http://test/640, URI:http://test/641, URI:http://test/642, URI:http://test/643, URI:http://test/644, URI:http://test/645, URI:http://test/646, URI:http://test/647, URI:http://test/648, URI:http://test/649, URI:http://test/650, URI:http://test/651, URI:http://test/652, URI:http://test/653, URI:http://test/654, URI:http://test/655, URI:http://test/656, URI:http://test/657, URI:http://test/658, URI:http://test/659, URI:http://test/660, URI:http://test/661, URI:http://test/662, URI:http://test/663, URI:http://test/664, URI:http://test/665, URI:http://test/666, URI:http://test/667, URI:http://test/668, URI:http://test/669, URI:http://test/670, URI:http://test/671, URI:http://test/672, URI:http://test/673, URI:http://test/674, URI:http://test/675, URI:http://test/676, URI:http://test/677, URI:http://test/678, URI:http://test/679, URI:http://test/680, URI:http://test/681, URI:http://test/682, URI:http://test/683, URI:http://test/684, URI:http://test/685, URI:http://test/686, URI:http://test/687, URI:http://test/688, URI:http://test/689, URI:http://test/690, URI:http://test/691, URI:http://test/692, URI:http://test/693, URI:http://test/694, URI:http://test/695, URI:http://test/696, URI:http://test/697, URI:http://test/698, URI:http://test/699, URI:http://test/700, URI:http://test/701, URI:http://test/702, URI:http://test/703, URI:http://test/704, URI:http://test/705, URI:http://test/706, URI:http://test/707, URI:http://test/708, URI:http://test/709, URI:http://test/710, URI:http://test/711, URI:http://test/712, URI:http://test/713, URI:http://test/714, URI:http://test/715, URI:http://test/716, URI:http://test/717, URI:http://test/718, URI:http://test/719, URI:http://test/720, URI:http://test/721, URI:http://test/722, URI:http://test/723, URI:http://test/724, URI:http://test/725, URI:http://test/726, URI:http://test/727, URI:http://test/728, URI:http://test/729, URI:http://test/730, URI:http://test/731, URI:http://test/732, URI:http://test/733, URI:http://test/734, URI:http://test/735, URI:http://test/736, URI:http://test/737, URI:http://test/738, URI:http://test/739, URI:http://test/740, URI:http://test/741, URI:http://test/742, URI:http://test/743, URI:http://test/744, URI:http://test/745, URI:http://test/746, URI:http://test/747, URI:http://test/748, URI:http://test/749, URI:http://test/750, URI:http://test/751, URI:http://test/752, URI:http://test/753, URI:http://test/754, URI:http://test/755, URI:http://test/756, URI:http://test/757, URI:http://test/758, URI:http://test/759, URI:http://test/760, URI:http://test/761, URI:http://test/762, URI:http://test/763, URI:http://test/764, URI:http://test/765, URI:http://test/766, URI:http://test/767, URI:http://test/768, URI:http://test/769, URI:http://test/770, URI:http://test/771, URI:http://test/772, URI:http://test/773, URI:http://test/774, URI:http://test/775, URI:http://test/776, URI:http://test/777, URI:http://test/778, URI:http://test/779, URI:http://test/780, URI:http://test/781, URI:http://test/782, URI:http://test/783, URI:http://test/784, URI:http://test/785, URI:http://test/786, URI:http://test/787, URI:http://test/788, URI:http://test/789, URI:http://test/790, URI:http://test/791, URI:http://test/792, URI:http://test/793, URI:http://test/794, URI:http://test/795, URI:http://test/796, URI:http://test/797, URI:http://test/798, URI:http://test/799, URI:http://test/800, URI:http://test/801, URI:http://test/802, URI:http://test/803, URI:http://test/804, URI:http://test/805, URI:http://test/806, URI:http://test/807, URI:http://test/808, URI:http://test/809, URI:http://test/810, URI:http://test/811, URI:http://test/812, URI:http://test/813, URI:http://test/814, URI:http://test/815, URI:http://test/816, URI:http://test/817, URI:http://test/818, URI:http://test/819, URI:http://test/820, URI:http://test/821, URI:http://test/822, URI:http://test/823, URI:http://test/824, URI:http://test/825, URI:http://test/826, URI:http://test/827, URI:http://test/828, URI:http://test/829, URI:http://test/830, URI:http://test/831, URI:http://test/832, URI:http://test/833, URI:http://test/834, URI:http://test/835, URI:http://test/836, URI:http://test/837, URI:http://test/838, URI:http://test/839, URI:http://test/840, URI:http://test/841, URI:http://test/842, URI:http://test/843, URI:http://test/844, URI:http://test/845, URI:http://test/846, URI:http://test/847, URI:http://test/848, URI:http://test/849, URI:http://test/850, URI:http://test/851, URI:http://test/852, URI:http://test/853, URI:http://test/854, URI:http://test/855, URI:http://test/856, URI:http://test/857, URI:http://test/858, URI:http://test/859, URI:http://test/860, URI:http://test/861, URI:http://test/862, URI:http://test/863, URI:http://test/864, URI:http://test/865, URI:http://test/866, URI:http://test/867, URI:http://test/868, URI:http://test/869, URI:http://test/870, URI:http://test/871, URI:http://test/872, URI:http://test/873, URI:http://test/874, URI:http://test/875, URI:http://test/876, URI:http://test/877, URI:http://test/878, URI:http://test/879, URI:http://test/880, URI:http://test/881, URI:http://test/882, URI:http://test/883, URI:http://test/884, URI:http://test/885, URI:http://test/886, URI:http://test/887, URI:http://test/888, URI:http://test/889, URI:http://test/890, URI:http://test/891, URI:http://test/892, URI:http://test/893, URI:http://test/894, URI:http://test/895, URI:http://test/896, URI:http://test/897, URI:http://test/898, URI:http://test/899, URI:http://test/900, URI:http://test/901, URI:http://test/902, URI:http://test/903, URI:http://test/904, URI:http://test/905, URI:http://test/906, URI:http://test/907, URI:http://test/908, URI:http://test/909, URI:http://test/910, URI:http://test/911, URI:http://test/912, URI:http://test/913, URI:http://test/914, URI:http://test/915, URI:http://test/916, URI:http://test/917, URI:http://test/918, URI:http://test/919, URI:http://test/920, URI:http://test/921, URI:http://test/922, URI:http://test/923, URI:http://test/924, URI:http://test/925, URI:http://test/926, URI:http://test/927, URI:http://test/928, URI:http://test/929, URI:http://test/930, URI:http://test/931, URI:http://test/932, URI:http://test/933, URI:http://test/934, URI:http://test/935, URI:http://test/936, URI:http://test/937, URI:http://test/938, URI:http://test/939, URI:http://test/940, URI:http://test/941, URI:http://test/942, URI:http://test/943, URI:http://test/944, URI:http://test/945, URI:http://test/946, URI:http://test/947, URI:http://test/948, URI:http://test/949, URI:http://test/950, URI:http://test/951, URI:http://test/952, URI:http://test/953, URI:http://test/954, URI:http://test/955, URI:http://test/956, URI:http://test/957, URI:http://test/958, URI:http://test/959, URI:http://test/960, URI:http://test/961, URI:http://test/962, URI:http://test/963, URI:http://test/964, URI:http://test/965, URI:http://test/966, URI:http://test/967, URI:http://test/968, URI:http://test/969, URI:http://test/970, URI:http://test/971, URI:http://test/972, URI:http://test/973, URI:http://test/974, URI:http://test/975, URI:http://test/976, URI:http://test/977, URI:http://test/978, URI:http://test/979, URI:http://test/980, URI:http://test/981, URI:http://test/982, URI:http://test/983, URI:http://test/984, URI:http://test/985, URI:http://test/986, URI:http://test/987, URI:http://test/988, URI:http://test/989, URI:http://test/990, URI:http://test/991, URI:http://test/992, URI:http://test/993, URI:http://test/994, URI:http://test/995, URI:http://test/996, URI:http://test/997, URI:http://test/998, URI:http://test/999, URI:http://test/1000, URI:http://test/1001, URI:http://test/1002, URI:http://test/1003, URI:http://test/1004, URI:http://test/1005, URI:http://test/1006, URI:http://test/1007, URI:http://test/1008, URI:http://test/1009, URI:http://test/1010, URI:http://test/1011, URI:http://test/1012, URI:http://test/1013, URI:http://test/1014, URI:http://test/1015, URI:http://test/1016, URI:http://test/1017, URI:http://test/1018, URI:http://test/1019, URI:http://test/1020, URI:http://test/1021, URI:http://test/1022, URI:http://test/1023, URI:http://test/1024
- Signature Algorithm: sha256WithRSAEncryption
-- 1e:90:d6:4a:8f:24:06:8a:de:41:4f:3b:39:1c:5d:81:24:48:
-- 2f:66:9e:6c:fe:c0:b3:cf:a3:8a:a0:4a:02:e2:d3:04:7e:87:
-- 42:87:31:5e:75:25:b9:7c:93:ac:0e:3d:a7:0e:09:ef:0f:6c:
-- 67:3d:96:fe:4d:7b:86:cd:94:5e:1c:74:d4:b9:fe:da:7a:07:
-- 3e:14:ac:e6:8e:4c:de:47:bc:9a:fd:8c:8d:33:31:23:72:f3:
-- 6b:b9:45:d4:9b:0e:87:d9:2f:38:9d:fb:67:f4:10:53:a6:58:
-- 47:a3:c3:66:38:90:96:e7:23:5f:5e:41:0b:85:42:80:29:1b:
-- 83:d3:00:e0:37:d1:66:3a:1e:5b:a0:d9:91:b1:96:70:2d:9f:
-- 6c:82:84:9d:b5:21:90:b9:64:2b:70:87:f3:dd:06:9f:71:22:
-- e9:66:35:32:04:23:c5:08:9b:f3:e6:82:65:6d:f4:0c:19:74:
-- 8d:eb:56:9b:41:77:56:1e:53:13:de:57:15:e5:76:e2:de:d4:
-- 51:7c:24:49:33:6d:5d:c7:50:bc:55:18:35:3e:b5:3f:0e:46:
-- 58:2c:55:7d:fa:ff:91:fa:ea:94:91:e6:bf:af:06:2d:51:ad:
-- e5:2a:3d:06:ec:7e:17:8c:f6:2c:ab:05:ef:91:f1:cd:21:cb:
-- 01:23:80:e0
-+ 08:00:7f:e0:40:75:d2:43:36:3f:e3:6c:cf:c1:4a:69:b2:0c:
-+ 1b:a8:a8:6b:7a:ee:ed:d0:2d:ee:e2:52:d9:2a:1f:5d:ac:29:
-+ f5:12:e2:af:3b:db:a0:6d:3a:b4:09:ef:76:fa:52:68:5f:07:
-+ 5f:9f:a4:52:8f:1d:da:da:b6:93:54:87:47:d0:3c:66:7e:ff:
-+ 1b:e3:1e:da:52:4c:00:46:5b:0c:eb:9e:b8:5e:1e:db:f7:ce:
-+ dd:2c:0f:4e:23:1d:63:98:ed:e5:18:e8:04:9c:a1:1e:cd:58:
-+ de:09:43:4d:bf:8d:4b:6d:8e:32:e9:a6:53:40:17:0c:e2:59:
-+ 43:55:2d:3f:ab:af:aa:13:48:ac:00:ac:5b:df:16:c7:20:2a:
-+ ea:50:ef:79:78:c9:34:d5:c5:7f:8f:27:d0:5a:42:3a:e8:13:
-+ 01:51:bc:a3:b9:53:6f:1d:e4:73:52:8d:f0:c7:9c:d1:46:19:
-+ aa:28:63:3e:cc:4a:5f:63:0d:1d:28:4b:e0:b4:37:83:db:85:
-+ 8c:84:86:7e:37:15:a8:ed:a8:00:da:14:97:fd:f1:c8:ea:6e:
-+ 3a:b7:19:c1:6f:53:6b:0b:ff:29:60:30:7d:b6:35:d6:b8:58:
-+ 6f:55:32:18:c6:44:c3:08:d8:c4:95:25:7b:ba:13:04:26:34:
-+ 7c:d4:0e:a1
- -----BEGIN CERTIFICATE-----
--MIKBQzCCgCugAwIBAgITL6u0PdzAd4AqAwmtQ3QCv5jY1DANBgkqhkiG9w0BAQsF
-+MIJ2lTCCdX2gAwIBAgITL6u0PdzAd4AqAwmtQ3QCv5jY1DANBgkqhkiG9w0BAQsF
- ADAXMRUwEwYDVQQDDAxJbnRlcm1lZGlhdGUwHhcNMjExMDA1MTIwMDAwWhcNMjIx
- MDA1MTIwMDAwWjANMQswCQYDVQQDDAJ0MDCCASIwDQYJKoZIhvcNAQEBBQADggEP
- ADCCAQoCggEBANssUwHO+RqDNlJRKltCY94ydRFqfbCh5HdHm3Hlpi1k165bBO16
-@@ -82,12 +82,12 @@ P8f2yisrrc1siKWONvvnoiK1fVR56dV6W8orKWwNhAoQxCG2WJi7DbYMjVZbLIVZ
- B8oGRjYlGimOxDm3wzHObknCAc+wOydDiuPVBh8tk53dekVlbf20scAQWULyHo/O
- Q6yXJcF84lHhRDVblKoDbtpxLyV/WDAB4RIXHvKqbCKAscll6neVswfE93I4NP6g
- QzNMZm2h6KEEvG8UOTlELjg3dMkKIYWRIbdOurCZSnaYe1jKHNOwQMPZKnX76xnq
--4xqYMVKX6X+keyF/L9xiho/9/aiI6EtEUr0CAwEAAaOCfpAwgn6MMB0GA1UdDgQW
-+4xqYMVKX6X+keyF/L9xiho/9/aiI6EtEUr0CAwEAAaOCc+IwgnPeMB0GA1UdDgQW
- BBQ7tAXMqrpRPfzy+R4lU3LhOvKa3zAfBgNVHSMEGDAWgBSSET+sEZbHZjfPg1ok
- 8Dp3rzONfzA/BggrBgEFBQcBAQQzMDEwLwYIKwYBBQUHMAKGI2h0dHA6Ly91cmwt
- Zm9yLWFpYS9JbnRlcm1lZGlhdGUuY2VyMDQGA1UdHwQtMCswKaAnoCWGI2h0dHA6
- Ly91cmwtZm9yLWNybC9JbnRlcm1lZGlhdGUuY3JsMA4GA1UdDwEB/wQEAwIFoDAd
--BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwgn2iBgNVHREEgn2ZMIJ9lYIH
-+BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwgnL0BgNVHREEgnLrMIJy54IH
- dDAudGVzdIIHdDEudGVzdIIHdDIudGVzdIIHdDMudGVzdIIHdDQudGVzdIIHdDUu
- dGVzdIIHdDYudGVzdIIHdDcudGVzdIIHdDgudGVzdIIHdDkudGVzdIIIdDEwLnRl
- c3SCCHQxMS50ZXN0ggh0MTIudGVzdIIIdDEzLnRlc3SCCHQxNC50ZXN0ggh0MTUu
-@@ -163,607 +163,550 @@ ggl0MzIwLnRlc3SCCXQzMjEudGVzdIIJdDMyMi50ZXN0ggl0MzIzLnRlc3SCCXQz
- MjQudGVzdIIJdDMyNS50ZXN0ggl0MzI2LnRlc3SCCXQzMjcudGVzdIIJdDMyOC50
- ZXN0ggl0MzI5LnRlc3SCCXQzMzAudGVzdIIJdDMzMS50ZXN0ggl0MzMyLnRlc3SC
- CXQzMzMudGVzdIIJdDMzNC50ZXN0ggl0MzM1LnRlc3SCCXQzMzYudGVzdIIJdDMz
--Ny50ZXN0ggl0MzM4LnRlc3SCCXQzMzkudGVzdIIJdDM0MC50ZXN0ggl0MzQxLnRl
--c3SCCXQzNDIudGVzdIIJdDM0My50ZXN0ggl0MzQ0LnRlc3SCCXQzNDUudGVzdIIJ
--dDM0Ni50ZXN0ggl0MzQ3LnRlc3SCCXQzNDgudGVzdIIJdDM0OS50ZXN0ggl0MzUw
--LnRlc3SCCXQzNTEudGVzdIIJdDM1Mi50ZXN0ggl0MzUzLnRlc3SCCXQzNTQudGVz
--dIIJdDM1NS50ZXN0ggl0MzU2LnRlc3SCCXQzNTcudGVzdIIJdDM1OC50ZXN0ggl0
--MzU5LnRlc3SCCXQzNjAudGVzdIIJdDM2MS50ZXN0ggl0MzYyLnRlc3SCCXQzNjMu
--dGVzdIIJdDM2NC50ZXN0ggl0MzY1LnRlc3SCCXQzNjYudGVzdIIJdDM2Ny50ZXN0
--ggl0MzY4LnRlc3SCCXQzNjkudGVzdIIJdDM3MC50ZXN0ggl0MzcxLnRlc3SCCXQz
--NzIudGVzdIIJdDM3My50ZXN0ggl0Mzc0LnRlc3SCCXQzNzUudGVzdIIJdDM3Ni50
--ZXN0ggl0Mzc3LnRlc3SCCXQzNzgudGVzdIIJdDM3OS50ZXN0ggl0MzgwLnRlc3SC
--CXQzODEudGVzdIIJdDM4Mi50ZXN0ggl0MzgzLnRlc3SCCXQzODQudGVzdIIJdDM4
--NS50ZXN0ggl0Mzg2LnRlc3SCCXQzODcudGVzdIIJdDM4OC50ZXN0ggl0Mzg5LnRl
--c3SCCXQzOTAudGVzdIIJdDM5MS50ZXN0ggl0MzkyLnRlc3SCCXQzOTMudGVzdIIJ
--dDM5NC50ZXN0ggl0Mzk1LnRlc3SCCXQzOTYudGVzdIIJdDM5Ny50ZXN0ggl0Mzk4
--LnRlc3SCCXQzOTkudGVzdIIJdDQwMC50ZXN0ggl0NDAxLnRlc3SCCXQ0MDIudGVz
--dIIJdDQwMy50ZXN0ggl0NDA0LnRlc3SCCXQ0MDUudGVzdIIJdDQwNi50ZXN0ggl0
--NDA3LnRlc3SCCXQ0MDgudGVzdIIJdDQwOS50ZXN0ggl0NDEwLnRlc3SCCXQ0MTEu
--dGVzdIIJdDQxMi50ZXN0ggl0NDEzLnRlc3SCCXQ0MTQudGVzdIIJdDQxNS50ZXN0
--ggl0NDE2LnRlc3SCCXQ0MTcudGVzdIcECgAAAIcECgAAAYcECgAAAocECgAAA4cE
--CgAABIcECgAABYcECgAABocECgAAB4cECgAACIcECgAACYcECgAACocECgAAC4cE
--CgAADIcECgAADYcECgAADocECgAAD4cECgAAEIcECgAAEYcECgAAEocECgAAE4cE
--CgAAFIcECgAAFYcECgAAFocECgAAF4cECgAAGIcECgAAGYcECgAAGocECgAAG4cE
--CgAAHIcECgAAHYcECgAAHocECgAAH4cECgAAIIcECgAAIYcECgAAIocECgAAI4cE
--CgAAJIcECgAAJYcECgAAJocECgAAJ4cECgAAKIcECgAAKYcECgAAKocECgAAK4cE
--CgAALIcECgAALYcECgAALocECgAAL4cECgAAMIcECgAAMYcECgAAMocECgAAM4cE
--CgAANIcECgAANYcECgAANocECgAAN4cECgAAOIcECgAAOYcECgAAOocECgAAO4cE
--CgAAPIcECgAAPYcECgAAPocECgAAP4cECgAAQIcECgAAQYcECgAAQocECgAAQ4cE
--CgAARIcECgAARYcECgAARocECgAAR4cECgAASIcECgAASYcECgAASocECgAAS4cE
--CgAATIcECgAATYcECgAATocECgAAT4cECgAAUIcECgAAUYcECgAAUocECgAAU4cE
--CgAAVIcECgAAVYcECgAAVocECgAAV4cECgAAWIcECgAAWYcECgAAWocECgAAW4cE
--CgAAXIcECgAAXYcECgAAXocECgAAX4cECgAAYIcECgAAYYcECgAAYocECgAAY4cE
--CgAAZIcECgAAZYcECgAAZocECgAAZ4cECgAAaIcECgAAaYcECgAAaocECgAAa4cE
--CgAAbIcECgAAbYcECgAAbocECgAAb4cECgAAcIcECgAAcYcECgAAcocECgAAc4cE
--CgAAdIcECgAAdYcECgAAdocECgAAd4cECgAAeIcECgAAeYcECgAAeocECgAAe4cE
--CgAAfIcECgAAfYcECgAAfocECgAAf4cECgAAgIcECgAAgYcECgAAgocECgAAg4cE
--CgAAhIcECgAAhYcECgAAhocECgAAh4cECgAAiIcECgAAiYcECgAAiocECgAAi4cE
--CgAAjIcECgAAjYcECgAAjocECgAAj4cECgAAkIcECgAAkYcECgAAkocECgAAk4cE
--CgAAlIcECgAAlYcECgAAlocECgAAl4cECgAAmIcECgAAmYcECgAAmocECgAAm4cE
--CgAAnIcECgAAnYcECgAAnocECgAAn4cECgAAoIcECgAAoYcECgAAoocECgAAo4cE
--CgAApIcECgAApYcECgAApocECgAAp4cECgAAqIcECgAAqYcECgAAqocECgAAq4cE
--CgAArIcECgAArYcECgAArocECgAAr4cECgAAsIcECgAAsYcECgAAsocECgAAs4cE
--CgAAtIcECgAAtYcECgAAtocECgAAt4cECgAAuIcECgAAuYcECgAAuocECgAAu4cE
--CgAAvIcECgAAvYcECgAAvocECgAAv4cECgAAwIcECgAAwYcECgAAwocECgAAw4cE
--CgAAxIcECgAAxYcECgAAxocECgAAx4cECgAAyIcECgAAyYcECgAAyocECgAAy4cE
--CgAAzIcECgAAzYcECgAAzocECgAAz4cECgAA0IcECgAA0YcECgAA0ocECgAA04cE
--CgAA1IcECgAA1YcECgAA1ocECgAA14cECgAA2IcECgAA2YcECgAA2ocECgAA24cE
--CgAA3IcECgAA3YcECgAA3ocECgAA34cECgAA4IcECgAA4YcECgAA4ocECgAA44cE
--CgAA5IcECgAA5YcECgAA5ocECgAA54cECgAA6IcECgAA6YcECgAA6ocECgAA64cE
--CgAA7IcECgAA7YcECgAA7ocECgAA74cECgAA8IcECgAA8YcECgAA8ocECgAA84cE
--CgAA9IcECgAA9YcECgAA9ocECgAA94cECgAA+IcECgAA+YcECgAA+ocECgAA+4cE
--CgAA/IcECgAA/YcECgAA/ocECgAA/4cECgABAIcECgABAYcECgABAocECgABA4cE
--CgABBIcECgABBYcECgABBocECgABB4cECgABCIcECgABCYcECgABCocECgABC4cE
--CgABDIcECgABDYcECgABDocECgABD4cECgABEIcECgABEYcECgABEocECgABE4cE
--CgABFIcECgABFYcECgABFocECgABF4cECgABGIcECgABGYcECgABGocECgABG4cE
--CgABHIcECgABHYcECgABHocECgABH4cECgABIIcECgABIYcECgABIocECgABI4cE
--CgABJIcECgABJYcECgABJocECgABJ4cECgABKIcECgABKYcECgABKocECgABK4cE
--CgABLIcECgABLYcECgABLocECgABL4cECgABMIcECgABMYcECgABMocECgABM4cE
--CgABNIcECgABNYcECgABNocECgABN4cECgABOIcECgABOYcECgABOocECgABO4cE
--CgABPIcECgABPYcECgABPocECgABP4cECgABQIcECgABQYcECgABQocECgABQ4cE
--CgABRIcECgABRYcECgABRocECgABR4cECgABSIcECgABSYcECgABSocECgABS4cE
--CgABTIcECgABTYcECgABTocECgABT4cECgABUIcECgABUYcECgABUocECgABU4cE
--CgABVIcECgABVYcECgABVocECgABV4cECgABWIcECgABWYcECgABWocECgABW4cE
--CgABXIcECgABXYcECgABXocECgABX4cECgABYIcECgABYYcECgABYocECgABY4cE
--CgABZIcECgABZYcECgABZocECgABZ4cECgABaIcECgABaYcECgABaocECgABa4cE
--CgABbIcECgABbYcECgABbocECgABb4cECgABcIcECgABcYcECgABcocECgABc4cE
--CgABdIcECgABdYcECgABdocECgABd4cECgABeIcECgABeYcECgABeocECgABe4cE
--CgABfIcECgABfYcECgABfocECgABf4cECgABgIcECgABgYcECgABgocECgABg4cE
--CgABhIcECgABhYcECgABhocECgABh4cECgABiIcECgABiYcECgABiocECgABi4cE
--CgABjIcECgABjYcECgABjocECgABj4cECgABkIcECgABkYcECgABkocECgABk4cE
--CgABlIcECgABlYcECgABlocECgABl4cECgABmIcECgABmYcECgABmocECgABm4cE
--CgABnIcECgABnYcECgABnocECgABn4cECgABoIcECgABoaQPMA0xCzAJBgNVBAMM
--AnQwpA8wDTELMAkGA1UEAwwCdDGkDzANMQswCQYDVQQDDAJ0MqQPMA0xCzAJBgNV
--BAMMAnQzpA8wDTELMAkGA1UEAwwCdDSkDzANMQswCQYDVQQDDAJ0NaQPMA0xCzAJ
--BgNVBAMMAnQ2pA8wDTELMAkGA1UEAwwCdDekDzANMQswCQYDVQQDDAJ0OKQPMA0x
--CzAJBgNVBAMMAnQ5pBAwDjEMMAoGA1UEAwwDdDEwpBAwDjEMMAoGA1UEAwwDdDEx
--pBAwDjEMMAoGA1UEAwwDdDEypBAwDjEMMAoGA1UEAwwDdDEzpBAwDjEMMAoGA1UE
--AwwDdDE0pBAwDjEMMAoGA1UEAwwDdDE1pBAwDjEMMAoGA1UEAwwDdDE2pBAwDjEM
--MAoGA1UEAwwDdDE3pBAwDjEMMAoGA1UEAwwDdDE4pBAwDjEMMAoGA1UEAwwDdDE5
--pBAwDjEMMAoGA1UEAwwDdDIwpBAwDjEMMAoGA1UEAwwDdDIxpBAwDjEMMAoGA1UE
--AwwDdDIypBAwDjEMMAoGA1UEAwwDdDIzpBAwDjEMMAoGA1UEAwwDdDI0pBAwDjEM
--MAoGA1UEAwwDdDI1pBAwDjEMMAoGA1UEAwwDdDI2pBAwDjEMMAoGA1UEAwwDdDI3
--pBAwDjEMMAoGA1UEAwwDdDI4pBAwDjEMMAoGA1UEAwwDdDI5pBAwDjEMMAoGA1UE
--AwwDdDMwpBAwDjEMMAoGA1UEAwwDdDMxpBAwDjEMMAoGA1UEAwwDdDMypBAwDjEM
--MAoGA1UEAwwDdDMzpBAwDjEMMAoGA1UEAwwDdDM0pBAwDjEMMAoGA1UEAwwDdDM1
--pBAwDjEMMAoGA1UEAwwDdDM2pBAwDjEMMAoGA1UEAwwDdDM3pBAwDjEMMAoGA1UE
--AwwDdDM4pBAwDjEMMAoGA1UEAwwDdDM5pBAwDjEMMAoGA1UEAwwDdDQwpBAwDjEM
--MAoGA1UEAwwDdDQxpBAwDjEMMAoGA1UEAwwDdDQypBAwDjEMMAoGA1UEAwwDdDQz
--pBAwDjEMMAoGA1UEAwwDdDQ0pBAwDjEMMAoGA1UEAwwDdDQ1pBAwDjEMMAoGA1UE
--AwwDdDQ2pBAwDjEMMAoGA1UEAwwDdDQ3pBAwDjEMMAoGA1UEAwwDdDQ4pBAwDjEM
--MAoGA1UEAwwDdDQ5pBAwDjEMMAoGA1UEAwwDdDUwpBAwDjEMMAoGA1UEAwwDdDUx
--pBAwDjEMMAoGA1UEAwwDdDUypBAwDjEMMAoGA1UEAwwDdDUzpBAwDjEMMAoGA1UE
--AwwDdDU0pBAwDjEMMAoGA1UEAwwDdDU1pBAwDjEMMAoGA1UEAwwDdDU2pBAwDjEM
--MAoGA1UEAwwDdDU3pBAwDjEMMAoGA1UEAwwDdDU4pBAwDjEMMAoGA1UEAwwDdDU5
--pBAwDjEMMAoGA1UEAwwDdDYwpBAwDjEMMAoGA1UEAwwDdDYxpBAwDjEMMAoGA1UE
--AwwDdDYypBAwDjEMMAoGA1UEAwwDdDYzpBAwDjEMMAoGA1UEAwwDdDY0pBAwDjEM
--MAoGA1UEAwwDdDY1pBAwDjEMMAoGA1UEAwwDdDY2pBAwDjEMMAoGA1UEAwwDdDY3
--pBAwDjEMMAoGA1UEAwwDdDY4pBAwDjEMMAoGA1UEAwwDdDY5pBAwDjEMMAoGA1UE
--AwwDdDcwpBAwDjEMMAoGA1UEAwwDdDcxpBAwDjEMMAoGA1UEAwwDdDcypBAwDjEM
--MAoGA1UEAwwDdDczpBAwDjEMMAoGA1UEAwwDdDc0pBAwDjEMMAoGA1UEAwwDdDc1
--pBAwDjEMMAoGA1UEAwwDdDc2pBAwDjEMMAoGA1UEAwwDdDc3pBAwDjEMMAoGA1UE
--AwwDdDc4pBAwDjEMMAoGA1UEAwwDdDc5pBAwDjEMMAoGA1UEAwwDdDgwpBAwDjEM
--MAoGA1UEAwwDdDgxpBAwDjEMMAoGA1UEAwwDdDgypBAwDjEMMAoGA1UEAwwDdDgz
--pBAwDjEMMAoGA1UEAwwDdDg0pBAwDjEMMAoGA1UEAwwDdDg1pBAwDjEMMAoGA1UE
--AwwDdDg2pBAwDjEMMAoGA1UEAwwDdDg3pBAwDjEMMAoGA1UEAwwDdDg4pBAwDjEM
--MAoGA1UEAwwDdDg5pBAwDjEMMAoGA1UEAwwDdDkwpBAwDjEMMAoGA1UEAwwDdDkx
--pBAwDjEMMAoGA1UEAwwDdDkypBAwDjEMMAoGA1UEAwwDdDkzpBAwDjEMMAoGA1UE
--AwwDdDk0pBAwDjEMMAoGA1UEAwwDdDk1pBAwDjEMMAoGA1UEAwwDdDk2pBAwDjEM
--MAoGA1UEAwwDdDk3pBAwDjEMMAoGA1UEAwwDdDk4pBAwDjEMMAoGA1UEAwwDdDk5
--pBEwDzENMAsGA1UEAwwEdDEwMKQRMA8xDTALBgNVBAMMBHQxMDGkETAPMQ0wCwYD
--VQQDDAR0MTAypBEwDzENMAsGA1UEAwwEdDEwM6QRMA8xDTALBgNVBAMMBHQxMDSk
--ETAPMQ0wCwYDVQQDDAR0MTA1pBEwDzENMAsGA1UEAwwEdDEwNqQRMA8xDTALBgNV
--BAMMBHQxMDekETAPMQ0wCwYDVQQDDAR0MTA4pBEwDzENMAsGA1UEAwwEdDEwOaQR
--MA8xDTALBgNVBAMMBHQxMTCkETAPMQ0wCwYDVQQDDAR0MTExpBEwDzENMAsGA1UE
--AwwEdDExMqQRMA8xDTALBgNVBAMMBHQxMTOkETAPMQ0wCwYDVQQDDAR0MTE0pBEw
--DzENMAsGA1UEAwwEdDExNaQRMA8xDTALBgNVBAMMBHQxMTakETAPMQ0wCwYDVQQD
--DAR0MTE3pBEwDzENMAsGA1UEAwwEdDExOKQRMA8xDTALBgNVBAMMBHQxMTmkETAP
--MQ0wCwYDVQQDDAR0MTIwpBEwDzENMAsGA1UEAwwEdDEyMaQRMA8xDTALBgNVBAMM
--BHQxMjKkETAPMQ0wCwYDVQQDDAR0MTIzpBEwDzENMAsGA1UEAwwEdDEyNKQRMA8x
--DTALBgNVBAMMBHQxMjWkETAPMQ0wCwYDVQQDDAR0MTI2pBEwDzENMAsGA1UEAwwE
--dDEyN6QRMA8xDTALBgNVBAMMBHQxMjikETAPMQ0wCwYDVQQDDAR0MTI5pBEwDzEN
--MAsGA1UEAwwEdDEzMKQRMA8xDTALBgNVBAMMBHQxMzGkETAPMQ0wCwYDVQQDDAR0
--MTMypBEwDzENMAsGA1UEAwwEdDEzM6QRMA8xDTALBgNVBAMMBHQxMzSkETAPMQ0w
--CwYDVQQDDAR0MTM1pBEwDzENMAsGA1UEAwwEdDEzNqQRMA8xDTALBgNVBAMMBHQx
--MzekETAPMQ0wCwYDVQQDDAR0MTM4pBEwDzENMAsGA1UEAwwEdDEzOaQRMA8xDTAL
--BgNVBAMMBHQxNDCkETAPMQ0wCwYDVQQDDAR0MTQxpBEwDzENMAsGA1UEAwwEdDE0
--MqQRMA8xDTALBgNVBAMMBHQxNDOkETAPMQ0wCwYDVQQDDAR0MTQ0pBEwDzENMAsG
--A1UEAwwEdDE0NaQRMA8xDTALBgNVBAMMBHQxNDakETAPMQ0wCwYDVQQDDAR0MTQ3
--pBEwDzENMAsGA1UEAwwEdDE0OKQRMA8xDTALBgNVBAMMBHQxNDmkETAPMQ0wCwYD
--VQQDDAR0MTUwpBEwDzENMAsGA1UEAwwEdDE1MaQRMA8xDTALBgNVBAMMBHQxNTKk
--ETAPMQ0wCwYDVQQDDAR0MTUzpBEwDzENMAsGA1UEAwwEdDE1NKQRMA8xDTALBgNV
--BAMMBHQxNTWkETAPMQ0wCwYDVQQDDAR0MTU2pBEwDzENMAsGA1UEAwwEdDE1N6QR
--MA8xDTALBgNVBAMMBHQxNTikETAPMQ0wCwYDVQQDDAR0MTU5pBEwDzENMAsGA1UE
--AwwEdDE2MKQRMA8xDTALBgNVBAMMBHQxNjGkETAPMQ0wCwYDVQQDDAR0MTYypBEw
--DzENMAsGA1UEAwwEdDE2M6QRMA8xDTALBgNVBAMMBHQxNjSkETAPMQ0wCwYDVQQD
--DAR0MTY1pBEwDzENMAsGA1UEAwwEdDE2NqQRMA8xDTALBgNVBAMMBHQxNjekETAP
--MQ0wCwYDVQQDDAR0MTY4pBEwDzENMAsGA1UEAwwEdDE2OaQRMA8xDTALBgNVBAMM
--BHQxNzCkETAPMQ0wCwYDVQQDDAR0MTcxpBEwDzENMAsGA1UEAwwEdDE3MqQRMA8x
--DTALBgNVBAMMBHQxNzOkETAPMQ0wCwYDVQQDDAR0MTc0pBEwDzENMAsGA1UEAwwE
--dDE3NaQRMA8xDTALBgNVBAMMBHQxNzakETAPMQ0wCwYDVQQDDAR0MTc3pBEwDzEN
--MAsGA1UEAwwEdDE3OKQRMA8xDTALBgNVBAMMBHQxNzmkETAPMQ0wCwYDVQQDDAR0
--MTgwpBEwDzENMAsGA1UEAwwEdDE4MaQRMA8xDTALBgNVBAMMBHQxODKkETAPMQ0w
--CwYDVQQDDAR0MTgzpBEwDzENMAsGA1UEAwwEdDE4NKQRMA8xDTALBgNVBAMMBHQx
--ODWkETAPMQ0wCwYDVQQDDAR0MTg2pBEwDzENMAsGA1UEAwwEdDE4N6QRMA8xDTAL
--BgNVBAMMBHQxODikETAPMQ0wCwYDVQQDDAR0MTg5pBEwDzENMAsGA1UEAwwEdDE5
--MKQRMA8xDTALBgNVBAMMBHQxOTGkETAPMQ0wCwYDVQQDDAR0MTkypBEwDzENMAsG
--A1UEAwwEdDE5M6QRMA8xDTALBgNVBAMMBHQxOTSkETAPMQ0wCwYDVQQDDAR0MTk1
--pBEwDzENMAsGA1UEAwwEdDE5NqQRMA8xDTALBgNVBAMMBHQxOTekETAPMQ0wCwYD
--VQQDDAR0MTk4pBEwDzENMAsGA1UEAwwEdDE5OaQRMA8xDTALBgNVBAMMBHQyMDCk
--ETAPMQ0wCwYDVQQDDAR0MjAxpBEwDzENMAsGA1UEAwwEdDIwMqQRMA8xDTALBgNV
--BAMMBHQyMDOkETAPMQ0wCwYDVQQDDAR0MjA0pBEwDzENMAsGA1UEAwwEdDIwNaQR
--MA8xDTALBgNVBAMMBHQyMDakETAPMQ0wCwYDVQQDDAR0MjA3pBEwDzENMAsGA1UE
--AwwEdDIwOKQRMA8xDTALBgNVBAMMBHQyMDmkETAPMQ0wCwYDVQQDDAR0MjEwpBEw
--DzENMAsGA1UEAwwEdDIxMaQRMA8xDTALBgNVBAMMBHQyMTKkETAPMQ0wCwYDVQQD
--DAR0MjEzpBEwDzENMAsGA1UEAwwEdDIxNKQRMA8xDTALBgNVBAMMBHQyMTWkETAP
--MQ0wCwYDVQQDDAR0MjE2pBEwDzENMAsGA1UEAwwEdDIxN6QRMA8xDTALBgNVBAMM
--BHQyMTikETAPMQ0wCwYDVQQDDAR0MjE5pBEwDzENMAsGA1UEAwwEdDIyMKQRMA8x
--DTALBgNVBAMMBHQyMjGkETAPMQ0wCwYDVQQDDAR0MjIypBEwDzENMAsGA1UEAwwE
--dDIyM6QRMA8xDTALBgNVBAMMBHQyMjSkETAPMQ0wCwYDVQQDDAR0MjI1pBEwDzEN
--MAsGA1UEAwwEdDIyNqQRMA8xDTALBgNVBAMMBHQyMjekETAPMQ0wCwYDVQQDDAR0
--MjI4pBEwDzENMAsGA1UEAwwEdDIyOaQRMA8xDTALBgNVBAMMBHQyMzCkETAPMQ0w
--CwYDVQQDDAR0MjMxpBEwDzENMAsGA1UEAwwEdDIzMqQRMA8xDTALBgNVBAMMBHQy
--MzOkETAPMQ0wCwYDVQQDDAR0MjM0pBEwDzENMAsGA1UEAwwEdDIzNaQRMA8xDTAL
--BgNVBAMMBHQyMzakETAPMQ0wCwYDVQQDDAR0MjM3pBEwDzENMAsGA1UEAwwEdDIz
--OKQRMA8xDTALBgNVBAMMBHQyMzmkETAPMQ0wCwYDVQQDDAR0MjQwpBEwDzENMAsG
--A1UEAwwEdDI0MaQRMA8xDTALBgNVBAMMBHQyNDKkETAPMQ0wCwYDVQQDDAR0MjQz
--pBEwDzENMAsGA1UEAwwEdDI0NKQRMA8xDTALBgNVBAMMBHQyNDWkETAPMQ0wCwYD
--VQQDDAR0MjQ2pBEwDzENMAsGA1UEAwwEdDI0N6QRMA8xDTALBgNVBAMMBHQyNDik
--ETAPMQ0wCwYDVQQDDAR0MjQ5pBEwDzENMAsGA1UEAwwEdDI1MKQRMA8xDTALBgNV
--BAMMBHQyNTGkETAPMQ0wCwYDVQQDDAR0MjUypBEwDzENMAsGA1UEAwwEdDI1M6QR
--MA8xDTALBgNVBAMMBHQyNTSkETAPMQ0wCwYDVQQDDAR0MjU1pBEwDzENMAsGA1UE
--AwwEdDI1NqQRMA8xDTALBgNVBAMMBHQyNTekETAPMQ0wCwYDVQQDDAR0MjU4pBEw
--DzENMAsGA1UEAwwEdDI1OaQRMA8xDTALBgNVBAMMBHQyNjCkETAPMQ0wCwYDVQQD
--DAR0MjYxpBEwDzENMAsGA1UEAwwEdDI2MqQRMA8xDTALBgNVBAMMBHQyNjOkETAP
--MQ0wCwYDVQQDDAR0MjY0pBEwDzENMAsGA1UEAwwEdDI2NaQRMA8xDTALBgNVBAMM
--BHQyNjakETAPMQ0wCwYDVQQDDAR0MjY3pBEwDzENMAsGA1UEAwwEdDI2OKQRMA8x
--DTALBgNVBAMMBHQyNjmkETAPMQ0wCwYDVQQDDAR0MjcwpBEwDzENMAsGA1UEAwwE
--dDI3MaQRMA8xDTALBgNVBAMMBHQyNzKkETAPMQ0wCwYDVQQDDAR0MjczpBEwDzEN
--MAsGA1UEAwwEdDI3NKQRMA8xDTALBgNVBAMMBHQyNzWkETAPMQ0wCwYDVQQDDAR0
--Mjc2pBEwDzENMAsGA1UEAwwEdDI3N6QRMA8xDTALBgNVBAMMBHQyNzikETAPMQ0w
--CwYDVQQDDAR0Mjc5pBEwDzENMAsGA1UEAwwEdDI4MKQRMA8xDTALBgNVBAMMBHQy
--ODGkETAPMQ0wCwYDVQQDDAR0MjgypBEwDzENMAsGA1UEAwwEdDI4M6QRMA8xDTAL
--BgNVBAMMBHQyODSkETAPMQ0wCwYDVQQDDAR0Mjg1pBEwDzENMAsGA1UEAwwEdDI4
--NqQRMA8xDTALBgNVBAMMBHQyODekETAPMQ0wCwYDVQQDDAR0Mjg4pBEwDzENMAsG
--A1UEAwwEdDI4OaQRMA8xDTALBgNVBAMMBHQyOTCkETAPMQ0wCwYDVQQDDAR0Mjkx
--pBEwDzENMAsGA1UEAwwEdDI5MqQRMA8xDTALBgNVBAMMBHQyOTOkETAPMQ0wCwYD
--VQQDDAR0Mjk0pBEwDzENMAsGA1UEAwwEdDI5NaQRMA8xDTALBgNVBAMMBHQyOTak
--ETAPMQ0wCwYDVQQDDAR0Mjk3pBEwDzENMAsGA1UEAwwEdDI5OKQRMA8xDTALBgNV
--BAMMBHQyOTmkETAPMQ0wCwYDVQQDDAR0MzAwpBEwDzENMAsGA1UEAwwEdDMwMaQR
--MA8xDTALBgNVBAMMBHQzMDKkETAPMQ0wCwYDVQQDDAR0MzAzpBEwDzENMAsGA1UE
--AwwEdDMwNKQRMA8xDTALBgNVBAMMBHQzMDWkETAPMQ0wCwYDVQQDDAR0MzA2pBEw
--DzENMAsGA1UEAwwEdDMwN6QRMA8xDTALBgNVBAMMBHQzMDikETAPMQ0wCwYDVQQD
--DAR0MzA5pBEwDzENMAsGA1UEAwwEdDMxMKQRMA8xDTALBgNVBAMMBHQzMTGkETAP
--MQ0wCwYDVQQDDAR0MzEypBEwDzENMAsGA1UEAwwEdDMxM6QRMA8xDTALBgNVBAMM
--BHQzMTSkETAPMQ0wCwYDVQQDDAR0MzE1pBEwDzENMAsGA1UEAwwEdDMxNqQRMA8x
--DTALBgNVBAMMBHQzMTekETAPMQ0wCwYDVQQDDAR0MzE4pBEwDzENMAsGA1UEAwwE
--dDMxOaQRMA8xDTALBgNVBAMMBHQzMjCkETAPMQ0wCwYDVQQDDAR0MzIxpBEwDzEN
--MAsGA1UEAwwEdDMyMqQRMA8xDTALBgNVBAMMBHQzMjOkETAPMQ0wCwYDVQQDDAR0
--MzI0pBEwDzENMAsGA1UEAwwEdDMyNaQRMA8xDTALBgNVBAMMBHQzMjakETAPMQ0w
--CwYDVQQDDAR0MzI3pBEwDzENMAsGA1UEAwwEdDMyOKQRMA8xDTALBgNVBAMMBHQz
--MjmkETAPMQ0wCwYDVQQDDAR0MzMwpBEwDzENMAsGA1UEAwwEdDMzMaQRMA8xDTAL
--BgNVBAMMBHQzMzKkETAPMQ0wCwYDVQQDDAR0MzMzpBEwDzENMAsGA1UEAwwEdDMz
--NKQRMA8xDTALBgNVBAMMBHQzMzWkETAPMQ0wCwYDVQQDDAR0MzM2pBEwDzENMAsG
--A1UEAwwEdDMzN6QRMA8xDTALBgNVBAMMBHQzMzikETAPMQ0wCwYDVQQDDAR0MzM5
--pBEwDzENMAsGA1UEAwwEdDM0MKQRMA8xDTALBgNVBAMMBHQzNDGkETAPMQ0wCwYD
--VQQDDAR0MzQypBEwDzENMAsGA1UEAwwEdDM0M6QRMA8xDTALBgNVBAMMBHQzNDSk
--ETAPMQ0wCwYDVQQDDAR0MzQ1pBEwDzENMAsGA1UEAwwEdDM0NqQRMA8xDTALBgNV
--BAMMBHQzNDekETAPMQ0wCwYDVQQDDAR0MzQ4pBEwDzENMAsGA1UEAwwEdDM0OaQR
--MA8xDTALBgNVBAMMBHQzNTCkETAPMQ0wCwYDVQQDDAR0MzUxpBEwDzENMAsGA1UE
--AwwEdDM1MqQRMA8xDTALBgNVBAMMBHQzNTOkETAPMQ0wCwYDVQQDDAR0MzU0pBEw
--DzENMAsGA1UEAwwEdDM1NaQRMA8xDTALBgNVBAMMBHQzNTakETAPMQ0wCwYDVQQD
--DAR0MzU3pBEwDzENMAsGA1UEAwwEdDM1OKQRMA8xDTALBgNVBAMMBHQzNTmkETAP
--MQ0wCwYDVQQDDAR0MzYwpBEwDzENMAsGA1UEAwwEdDM2MaQRMA8xDTALBgNVBAMM
--BHQzNjKkETAPMQ0wCwYDVQQDDAR0MzYzpBEwDzENMAsGA1UEAwwEdDM2NKQRMA8x
--DTALBgNVBAMMBHQzNjWkETAPMQ0wCwYDVQQDDAR0MzY2pBEwDzENMAsGA1UEAwwE
--dDM2N6QRMA8xDTALBgNVBAMMBHQzNjikETAPMQ0wCwYDVQQDDAR0MzY5pBEwDzEN
--MAsGA1UEAwwEdDM3MKQRMA8xDTALBgNVBAMMBHQzNzGkETAPMQ0wCwYDVQQDDAR0
--MzcypBEwDzENMAsGA1UEAwwEdDM3M6QRMA8xDTALBgNVBAMMBHQzNzSkETAPMQ0w
--CwYDVQQDDAR0Mzc1pBEwDzENMAsGA1UEAwwEdDM3NqQRMA8xDTALBgNVBAMMBHQz
--NzekETAPMQ0wCwYDVQQDDAR0Mzc4pBEwDzENMAsGA1UEAwwEdDM3OaQRMA8xDTAL
--BgNVBAMMBHQzODCkETAPMQ0wCwYDVQQDDAR0MzgxpBEwDzENMAsGA1UEAwwEdDM4
--MqQRMA8xDTALBgNVBAMMBHQzODOkETAPMQ0wCwYDVQQDDAR0Mzg0pBEwDzENMAsG
--A1UEAwwEdDM4NaQRMA8xDTALBgNVBAMMBHQzODakETAPMQ0wCwYDVQQDDAR0Mzg3
--pBEwDzENMAsGA1UEAwwEdDM4OKQRMA8xDTALBgNVBAMMBHQzODmkETAPMQ0wCwYD
--VQQDDAR0MzkwpBEwDzENMAsGA1UEAwwEdDM5MaQRMA8xDTALBgNVBAMMBHQzOTKk
--ETAPMQ0wCwYDVQQDDAR0MzkzpBEwDzENMAsGA1UEAwwEdDM5NKQRMA8xDTALBgNV
--BAMMBHQzOTWkETAPMQ0wCwYDVQQDDAR0Mzk2pBEwDzENMAsGA1UEAwwEdDM5N6QR
--MA8xDTALBgNVBAMMBHQzOTikETAPMQ0wCwYDVQQDDAR0Mzk5pBEwDzENMAsGA1UE
--AwwEdDQwMKQRMA8xDTALBgNVBAMMBHQ0MDGkETAPMQ0wCwYDVQQDDAR0NDAypBEw
--DzENMAsGA1UEAwwEdDQwM6QRMA8xDTALBgNVBAMMBHQ0MDSkETAPMQ0wCwYDVQQD
--DAR0NDA1pBEwDzENMAsGA1UEAwwEdDQwNqQRMA8xDTALBgNVBAMMBHQ0MDekETAP
--MQ0wCwYDVQQDDAR0NDA4pBEwDzENMAsGA1UEAwwEdDQwOaQRMA8xDTALBgNVBAMM
--BHQ0MTCkETAPMQ0wCwYDVQQDDAR0NDExpBEwDzENMAsGA1UEAwwEdDQxMqQRMA8x
--DTALBgNVBAMMBHQ0MTOkETAPMQ0wCwYDVQQDDAR0NDE0pBEwDzENMAsGA1UEAwwE
--dDQxNaQRMA8xDTALBgNVBAMMBHQ0MTaGDWh0dHA6Ly90ZXN0LzCGDWh0dHA6Ly90
--ZXN0LzGGDWh0dHA6Ly90ZXN0LzKGDWh0dHA6Ly90ZXN0LzOGDWh0dHA6Ly90ZXN0
--LzSGDWh0dHA6Ly90ZXN0LzWGDWh0dHA6Ly90ZXN0LzaGDWh0dHA6Ly90ZXN0LzeG
--DWh0dHA6Ly90ZXN0LziGDWh0dHA6Ly90ZXN0LzmGDmh0dHA6Ly90ZXN0LzEwhg5o
--dHRwOi8vdGVzdC8xMYYOaHR0cDovL3Rlc3QvMTKGDmh0dHA6Ly90ZXN0LzEzhg5o
--dHRwOi8vdGVzdC8xNIYOaHR0cDovL3Rlc3QvMTWGDmh0dHA6Ly90ZXN0LzE2hg5o
--dHRwOi8vdGVzdC8xN4YOaHR0cDovL3Rlc3QvMTiGDmh0dHA6Ly90ZXN0LzE5hg5o
--dHRwOi8vdGVzdC8yMIYOaHR0cDovL3Rlc3QvMjGGDmh0dHA6Ly90ZXN0LzIyhg5o
--dHRwOi8vdGVzdC8yM4YOaHR0cDovL3Rlc3QvMjSGDmh0dHA6Ly90ZXN0LzI1hg5o
--dHRwOi8vdGVzdC8yNoYOaHR0cDovL3Rlc3QvMjeGDmh0dHA6Ly90ZXN0LzI4hg5o
--dHRwOi8vdGVzdC8yOYYOaHR0cDovL3Rlc3QvMzCGDmh0dHA6Ly90ZXN0LzMxhg5o
--dHRwOi8vdGVzdC8zMoYOaHR0cDovL3Rlc3QvMzOGDmh0dHA6Ly90ZXN0LzM0hg5o
--dHRwOi8vdGVzdC8zNYYOaHR0cDovL3Rlc3QvMzaGDmh0dHA6Ly90ZXN0LzM3hg5o
--dHRwOi8vdGVzdC8zOIYOaHR0cDovL3Rlc3QvMzmGDmh0dHA6Ly90ZXN0LzQwhg5o
--dHRwOi8vdGVzdC80MYYOaHR0cDovL3Rlc3QvNDKGDmh0dHA6Ly90ZXN0LzQzhg5o
--dHRwOi8vdGVzdC80NIYOaHR0cDovL3Rlc3QvNDWGDmh0dHA6Ly90ZXN0LzQ2hg5o
--dHRwOi8vdGVzdC80N4YOaHR0cDovL3Rlc3QvNDiGDmh0dHA6Ly90ZXN0LzQ5hg5o
--dHRwOi8vdGVzdC81MIYOaHR0cDovL3Rlc3QvNTGGDmh0dHA6Ly90ZXN0LzUyhg5o
--dHRwOi8vdGVzdC81M4YOaHR0cDovL3Rlc3QvNTSGDmh0dHA6Ly90ZXN0LzU1hg5o
--dHRwOi8vdGVzdC81NoYOaHR0cDovL3Rlc3QvNTeGDmh0dHA6Ly90ZXN0LzU4hg5o
--dHRwOi8vdGVzdC81OYYOaHR0cDovL3Rlc3QvNjCGDmh0dHA6Ly90ZXN0LzYxhg5o
--dHRwOi8vdGVzdC82MoYOaHR0cDovL3Rlc3QvNjOGDmh0dHA6Ly90ZXN0LzY0hg5o
--dHRwOi8vdGVzdC82NYYOaHR0cDovL3Rlc3QvNjaGDmh0dHA6Ly90ZXN0LzY3hg5o
--dHRwOi8vdGVzdC82OIYOaHR0cDovL3Rlc3QvNjmGDmh0dHA6Ly90ZXN0Lzcwhg5o
--dHRwOi8vdGVzdC83MYYOaHR0cDovL3Rlc3QvNzKGDmh0dHA6Ly90ZXN0Lzczhg5o
--dHRwOi8vdGVzdC83NIYOaHR0cDovL3Rlc3QvNzWGDmh0dHA6Ly90ZXN0Lzc2hg5o
--dHRwOi8vdGVzdC83N4YOaHR0cDovL3Rlc3QvNziGDmh0dHA6Ly90ZXN0Lzc5hg5o
--dHRwOi8vdGVzdC84MIYOaHR0cDovL3Rlc3QvODGGDmh0dHA6Ly90ZXN0Lzgyhg5o
--dHRwOi8vdGVzdC84M4YOaHR0cDovL3Rlc3QvODSGDmh0dHA6Ly90ZXN0Lzg1hg5o
--dHRwOi8vdGVzdC84NoYOaHR0cDovL3Rlc3QvODeGDmh0dHA6Ly90ZXN0Lzg4hg5o
--dHRwOi8vdGVzdC84OYYOaHR0cDovL3Rlc3QvOTCGDmh0dHA6Ly90ZXN0Lzkxhg5o
--dHRwOi8vdGVzdC85MoYOaHR0cDovL3Rlc3QvOTOGDmh0dHA6Ly90ZXN0Lzk0hg5o
--dHRwOi8vdGVzdC85NYYOaHR0cDovL3Rlc3QvOTaGDmh0dHA6Ly90ZXN0Lzk3hg5o
--dHRwOi8vdGVzdC85OIYOaHR0cDovL3Rlc3QvOTmGD2h0dHA6Ly90ZXN0LzEwMIYP
--aHR0cDovL3Rlc3QvMTAxhg9odHRwOi8vdGVzdC8xMDKGD2h0dHA6Ly90ZXN0LzEw
--M4YPaHR0cDovL3Rlc3QvMTA0hg9odHRwOi8vdGVzdC8xMDWGD2h0dHA6Ly90ZXN0
--LzEwNoYPaHR0cDovL3Rlc3QvMTA3hg9odHRwOi8vdGVzdC8xMDiGD2h0dHA6Ly90
--ZXN0LzEwOYYPaHR0cDovL3Rlc3QvMTEwhg9odHRwOi8vdGVzdC8xMTGGD2h0dHA6
--Ly90ZXN0LzExMoYPaHR0cDovL3Rlc3QvMTEzhg9odHRwOi8vdGVzdC8xMTSGD2h0
--dHA6Ly90ZXN0LzExNYYPaHR0cDovL3Rlc3QvMTE2hg9odHRwOi8vdGVzdC8xMTeG
--D2h0dHA6Ly90ZXN0LzExOIYPaHR0cDovL3Rlc3QvMTE5hg9odHRwOi8vdGVzdC8x
--MjCGD2h0dHA6Ly90ZXN0LzEyMYYPaHR0cDovL3Rlc3QvMTIyhg9odHRwOi8vdGVz
--dC8xMjOGD2h0dHA6Ly90ZXN0LzEyNIYPaHR0cDovL3Rlc3QvMTI1hg9odHRwOi8v
--dGVzdC8xMjaGD2h0dHA6Ly90ZXN0LzEyN4YPaHR0cDovL3Rlc3QvMTI4hg9odHRw
--Oi8vdGVzdC8xMjmGD2h0dHA6Ly90ZXN0LzEzMIYPaHR0cDovL3Rlc3QvMTMxhg9o
--dHRwOi8vdGVzdC8xMzKGD2h0dHA6Ly90ZXN0LzEzM4YPaHR0cDovL3Rlc3QvMTM0
--hg9odHRwOi8vdGVzdC8xMzWGD2h0dHA6Ly90ZXN0LzEzNoYPaHR0cDovL3Rlc3Qv
--MTM3hg9odHRwOi8vdGVzdC8xMziGD2h0dHA6Ly90ZXN0LzEzOYYPaHR0cDovL3Rl
--c3QvMTQwhg9odHRwOi8vdGVzdC8xNDGGD2h0dHA6Ly90ZXN0LzE0MoYPaHR0cDov
--L3Rlc3QvMTQzhg9odHRwOi8vdGVzdC8xNDSGD2h0dHA6Ly90ZXN0LzE0NYYPaHR0
--cDovL3Rlc3QvMTQ2hg9odHRwOi8vdGVzdC8xNDeGD2h0dHA6Ly90ZXN0LzE0OIYP
--aHR0cDovL3Rlc3QvMTQ5hg9odHRwOi8vdGVzdC8xNTCGD2h0dHA6Ly90ZXN0LzE1
--MYYPaHR0cDovL3Rlc3QvMTUyhg9odHRwOi8vdGVzdC8xNTOGD2h0dHA6Ly90ZXN0
--LzE1NIYPaHR0cDovL3Rlc3QvMTU1hg9odHRwOi8vdGVzdC8xNTaGD2h0dHA6Ly90
--ZXN0LzE1N4YPaHR0cDovL3Rlc3QvMTU4hg9odHRwOi8vdGVzdC8xNTmGD2h0dHA6
--Ly90ZXN0LzE2MIYPaHR0cDovL3Rlc3QvMTYxhg9odHRwOi8vdGVzdC8xNjKGD2h0
--dHA6Ly90ZXN0LzE2M4YPaHR0cDovL3Rlc3QvMTY0hg9odHRwOi8vdGVzdC8xNjWG
--D2h0dHA6Ly90ZXN0LzE2NoYPaHR0cDovL3Rlc3QvMTY3hg9odHRwOi8vdGVzdC8x
--NjiGD2h0dHA6Ly90ZXN0LzE2OYYPaHR0cDovL3Rlc3QvMTcwhg9odHRwOi8vdGVz
--dC8xNzGGD2h0dHA6Ly90ZXN0LzE3MoYPaHR0cDovL3Rlc3QvMTczhg9odHRwOi8v
--dGVzdC8xNzSGD2h0dHA6Ly90ZXN0LzE3NYYPaHR0cDovL3Rlc3QvMTc2hg9odHRw
--Oi8vdGVzdC8xNzeGD2h0dHA6Ly90ZXN0LzE3OIYPaHR0cDovL3Rlc3QvMTc5hg9o
--dHRwOi8vdGVzdC8xODCGD2h0dHA6Ly90ZXN0LzE4MYYPaHR0cDovL3Rlc3QvMTgy
--hg9odHRwOi8vdGVzdC8xODOGD2h0dHA6Ly90ZXN0LzE4NIYPaHR0cDovL3Rlc3Qv
--MTg1hg9odHRwOi8vdGVzdC8xODaGD2h0dHA6Ly90ZXN0LzE4N4YPaHR0cDovL3Rl
--c3QvMTg4hg9odHRwOi8vdGVzdC8xODmGD2h0dHA6Ly90ZXN0LzE5MIYPaHR0cDov
--L3Rlc3QvMTkxhg9odHRwOi8vdGVzdC8xOTKGD2h0dHA6Ly90ZXN0LzE5M4YPaHR0
--cDovL3Rlc3QvMTk0hg9odHRwOi8vdGVzdC8xOTWGD2h0dHA6Ly90ZXN0LzE5NoYP
--aHR0cDovL3Rlc3QvMTk3hg9odHRwOi8vdGVzdC8xOTiGD2h0dHA6Ly90ZXN0LzE5
--OYYPaHR0cDovL3Rlc3QvMjAwhg9odHRwOi8vdGVzdC8yMDGGD2h0dHA6Ly90ZXN0
--LzIwMoYPaHR0cDovL3Rlc3QvMjAzhg9odHRwOi8vdGVzdC8yMDSGD2h0dHA6Ly90
--ZXN0LzIwNYYPaHR0cDovL3Rlc3QvMjA2hg9odHRwOi8vdGVzdC8yMDeGD2h0dHA6
--Ly90ZXN0LzIwOIYPaHR0cDovL3Rlc3QvMjA5hg9odHRwOi8vdGVzdC8yMTCGD2h0
--dHA6Ly90ZXN0LzIxMYYPaHR0cDovL3Rlc3QvMjEyhg9odHRwOi8vdGVzdC8yMTOG
--D2h0dHA6Ly90ZXN0LzIxNIYPaHR0cDovL3Rlc3QvMjE1hg9odHRwOi8vdGVzdC8y
--MTaGD2h0dHA6Ly90ZXN0LzIxN4YPaHR0cDovL3Rlc3QvMjE4hg9odHRwOi8vdGVz
--dC8yMTmGD2h0dHA6Ly90ZXN0LzIyMIYPaHR0cDovL3Rlc3QvMjIxhg9odHRwOi8v
--dGVzdC8yMjKGD2h0dHA6Ly90ZXN0LzIyM4YPaHR0cDovL3Rlc3QvMjI0hg9odHRw
--Oi8vdGVzdC8yMjWGD2h0dHA6Ly90ZXN0LzIyNoYPaHR0cDovL3Rlc3QvMjI3hg9o
--dHRwOi8vdGVzdC8yMjiGD2h0dHA6Ly90ZXN0LzIyOYYPaHR0cDovL3Rlc3QvMjMw
--hg9odHRwOi8vdGVzdC8yMzGGD2h0dHA6Ly90ZXN0LzIzMoYPaHR0cDovL3Rlc3Qv
--MjMzhg9odHRwOi8vdGVzdC8yMzSGD2h0dHA6Ly90ZXN0LzIzNYYPaHR0cDovL3Rl
--c3QvMjM2hg9odHRwOi8vdGVzdC8yMzeGD2h0dHA6Ly90ZXN0LzIzOIYPaHR0cDov
--L3Rlc3QvMjM5hg9odHRwOi8vdGVzdC8yNDCGD2h0dHA6Ly90ZXN0LzI0MYYPaHR0
--cDovL3Rlc3QvMjQyhg9odHRwOi8vdGVzdC8yNDOGD2h0dHA6Ly90ZXN0LzI0NIYP
--aHR0cDovL3Rlc3QvMjQ1hg9odHRwOi8vdGVzdC8yNDaGD2h0dHA6Ly90ZXN0LzI0
--N4YPaHR0cDovL3Rlc3QvMjQ4hg9odHRwOi8vdGVzdC8yNDmGD2h0dHA6Ly90ZXN0
--LzI1MIYPaHR0cDovL3Rlc3QvMjUxhg9odHRwOi8vdGVzdC8yNTKGD2h0dHA6Ly90
--ZXN0LzI1M4YPaHR0cDovL3Rlc3QvMjU0hg9odHRwOi8vdGVzdC8yNTWGD2h0dHA6
--Ly90ZXN0LzI1NoYPaHR0cDovL3Rlc3QvMjU3hg9odHRwOi8vdGVzdC8yNTiGD2h0
--dHA6Ly90ZXN0LzI1OYYPaHR0cDovL3Rlc3QvMjYwhg9odHRwOi8vdGVzdC8yNjGG
--D2h0dHA6Ly90ZXN0LzI2MoYPaHR0cDovL3Rlc3QvMjYzhg9odHRwOi8vdGVzdC8y
--NjSGD2h0dHA6Ly90ZXN0LzI2NYYPaHR0cDovL3Rlc3QvMjY2hg9odHRwOi8vdGVz
--dC8yNjeGD2h0dHA6Ly90ZXN0LzI2OIYPaHR0cDovL3Rlc3QvMjY5hg9odHRwOi8v
--dGVzdC8yNzCGD2h0dHA6Ly90ZXN0LzI3MYYPaHR0cDovL3Rlc3QvMjcyhg9odHRw
--Oi8vdGVzdC8yNzOGD2h0dHA6Ly90ZXN0LzI3NIYPaHR0cDovL3Rlc3QvMjc1hg9o
--dHRwOi8vdGVzdC8yNzaGD2h0dHA6Ly90ZXN0LzI3N4YPaHR0cDovL3Rlc3QvMjc4
--hg9odHRwOi8vdGVzdC8yNzmGD2h0dHA6Ly90ZXN0LzI4MIYPaHR0cDovL3Rlc3Qv
--Mjgxhg9odHRwOi8vdGVzdC8yODKGD2h0dHA6Ly90ZXN0LzI4M4YPaHR0cDovL3Rl
--c3QvMjg0hg9odHRwOi8vdGVzdC8yODWGD2h0dHA6Ly90ZXN0LzI4NoYPaHR0cDov
--L3Rlc3QvMjg3hg9odHRwOi8vdGVzdC8yODiGD2h0dHA6Ly90ZXN0LzI4OYYPaHR0
--cDovL3Rlc3QvMjkwhg9odHRwOi8vdGVzdC8yOTGGD2h0dHA6Ly90ZXN0LzI5MoYP
--aHR0cDovL3Rlc3QvMjkzhg9odHRwOi8vdGVzdC8yOTSGD2h0dHA6Ly90ZXN0LzI5
--NYYPaHR0cDovL3Rlc3QvMjk2hg9odHRwOi8vdGVzdC8yOTeGD2h0dHA6Ly90ZXN0
--LzI5OIYPaHR0cDovL3Rlc3QvMjk5hg9odHRwOi8vdGVzdC8zMDCGD2h0dHA6Ly90
--ZXN0LzMwMYYPaHR0cDovL3Rlc3QvMzAyhg9odHRwOi8vdGVzdC8zMDOGD2h0dHA6
--Ly90ZXN0LzMwNIYPaHR0cDovL3Rlc3QvMzA1hg9odHRwOi8vdGVzdC8zMDaGD2h0
--dHA6Ly90ZXN0LzMwN4YPaHR0cDovL3Rlc3QvMzA4hg9odHRwOi8vdGVzdC8zMDmG
--D2h0dHA6Ly90ZXN0LzMxMIYPaHR0cDovL3Rlc3QvMzExhg9odHRwOi8vdGVzdC8z
--MTKGD2h0dHA6Ly90ZXN0LzMxM4YPaHR0cDovL3Rlc3QvMzE0hg9odHRwOi8vdGVz
--dC8zMTWGD2h0dHA6Ly90ZXN0LzMxNoYPaHR0cDovL3Rlc3QvMzE3hg9odHRwOi8v
--dGVzdC8zMTiGD2h0dHA6Ly90ZXN0LzMxOYYPaHR0cDovL3Rlc3QvMzIwhg9odHRw
--Oi8vdGVzdC8zMjGGD2h0dHA6Ly90ZXN0LzMyMoYPaHR0cDovL3Rlc3QvMzIzhg9o
--dHRwOi8vdGVzdC8zMjSGD2h0dHA6Ly90ZXN0LzMyNYYPaHR0cDovL3Rlc3QvMzI2
--hg9odHRwOi8vdGVzdC8zMjeGD2h0dHA6Ly90ZXN0LzMyOIYPaHR0cDovL3Rlc3Qv
--MzI5hg9odHRwOi8vdGVzdC8zMzCGD2h0dHA6Ly90ZXN0LzMzMYYPaHR0cDovL3Rl
--c3QvMzMyhg9odHRwOi8vdGVzdC8zMzOGD2h0dHA6Ly90ZXN0LzMzNIYPaHR0cDov
--L3Rlc3QvMzM1hg9odHRwOi8vdGVzdC8zMzaGD2h0dHA6Ly90ZXN0LzMzN4YPaHR0
--cDovL3Rlc3QvMzM4hg9odHRwOi8vdGVzdC8zMzmGD2h0dHA6Ly90ZXN0LzM0MIYP
--aHR0cDovL3Rlc3QvMzQxhg9odHRwOi8vdGVzdC8zNDKGD2h0dHA6Ly90ZXN0LzM0
--M4YPaHR0cDovL3Rlc3QvMzQ0hg9odHRwOi8vdGVzdC8zNDWGD2h0dHA6Ly90ZXN0
--LzM0NoYPaHR0cDovL3Rlc3QvMzQ3hg9odHRwOi8vdGVzdC8zNDiGD2h0dHA6Ly90
--ZXN0LzM0OYYPaHR0cDovL3Rlc3QvMzUwhg9odHRwOi8vdGVzdC8zNTGGD2h0dHA6
--Ly90ZXN0LzM1MoYPaHR0cDovL3Rlc3QvMzUzhg9odHRwOi8vdGVzdC8zNTSGD2h0
--dHA6Ly90ZXN0LzM1NYYPaHR0cDovL3Rlc3QvMzU2hg9odHRwOi8vdGVzdC8zNTeG
--D2h0dHA6Ly90ZXN0LzM1OIYPaHR0cDovL3Rlc3QvMzU5hg9odHRwOi8vdGVzdC8z
--NjCGD2h0dHA6Ly90ZXN0LzM2MYYPaHR0cDovL3Rlc3QvMzYyhg9odHRwOi8vdGVz
--dC8zNjOGD2h0dHA6Ly90ZXN0LzM2NIYPaHR0cDovL3Rlc3QvMzY1hg9odHRwOi8v
--dGVzdC8zNjaGD2h0dHA6Ly90ZXN0LzM2N4YPaHR0cDovL3Rlc3QvMzY4hg9odHRw
--Oi8vdGVzdC8zNjmGD2h0dHA6Ly90ZXN0LzM3MIYPaHR0cDovL3Rlc3QvMzcxhg9o
--dHRwOi8vdGVzdC8zNzKGD2h0dHA6Ly90ZXN0LzM3M4YPaHR0cDovL3Rlc3QvMzc0
--hg9odHRwOi8vdGVzdC8zNzWGD2h0dHA6Ly90ZXN0LzM3NoYPaHR0cDovL3Rlc3Qv
--Mzc3hg9odHRwOi8vdGVzdC8zNziGD2h0dHA6Ly90ZXN0LzM3OYYPaHR0cDovL3Rl
--c3QvMzgwhg9odHRwOi8vdGVzdC8zODGGD2h0dHA6Ly90ZXN0LzM4MoYPaHR0cDov
--L3Rlc3QvMzgzhg9odHRwOi8vdGVzdC8zODSGD2h0dHA6Ly90ZXN0LzM4NYYPaHR0
--cDovL3Rlc3QvMzg2hg9odHRwOi8vdGVzdC8zODeGD2h0dHA6Ly90ZXN0LzM4OIYP
--aHR0cDovL3Rlc3QvMzg5hg9odHRwOi8vdGVzdC8zOTCGD2h0dHA6Ly90ZXN0LzM5
--MYYPaHR0cDovL3Rlc3QvMzkyhg9odHRwOi8vdGVzdC8zOTOGD2h0dHA6Ly90ZXN0
--LzM5NIYPaHR0cDovL3Rlc3QvMzk1hg9odHRwOi8vdGVzdC8zOTaGD2h0dHA6Ly90
--ZXN0LzM5N4YPaHR0cDovL3Rlc3QvMzk4hg9odHRwOi8vdGVzdC8zOTmGD2h0dHA6
--Ly90ZXN0LzQwMIYPaHR0cDovL3Rlc3QvNDAxhg9odHRwOi8vdGVzdC80MDKGD2h0
--dHA6Ly90ZXN0LzQwM4YPaHR0cDovL3Rlc3QvNDA0hg9odHRwOi8vdGVzdC80MDWG
--D2h0dHA6Ly90ZXN0LzQwNoYPaHR0cDovL3Rlc3QvNDA3hg9odHRwOi8vdGVzdC80
--MDiGD2h0dHA6Ly90ZXN0LzQwOYYPaHR0cDovL3Rlc3QvNDEwhg9odHRwOi8vdGVz
--dC80MTGGD2h0dHA6Ly90ZXN0LzQxMoYPaHR0cDovL3Rlc3QvNDEzhg9odHRwOi8v
--dGVzdC80MTSGD2h0dHA6Ly90ZXN0LzQxNYYPaHR0cDovL3Rlc3QvNDE2hg9odHRw
--Oi8vdGVzdC80MTeGD2h0dHA6Ly90ZXN0LzQxOIYPaHR0cDovL3Rlc3QvNDE5hg9o
--dHRwOi8vdGVzdC80MjCGD2h0dHA6Ly90ZXN0LzQyMYYPaHR0cDovL3Rlc3QvNDIy
--hg9odHRwOi8vdGVzdC80MjOGD2h0dHA6Ly90ZXN0LzQyNIYPaHR0cDovL3Rlc3Qv
--NDI1hg9odHRwOi8vdGVzdC80MjaGD2h0dHA6Ly90ZXN0LzQyN4YPaHR0cDovL3Rl
--c3QvNDI4hg9odHRwOi8vdGVzdC80MjmGD2h0dHA6Ly90ZXN0LzQzMIYPaHR0cDov
--L3Rlc3QvNDMxhg9odHRwOi8vdGVzdC80MzKGD2h0dHA6Ly90ZXN0LzQzM4YPaHR0
--cDovL3Rlc3QvNDM0hg9odHRwOi8vdGVzdC80MzWGD2h0dHA6Ly90ZXN0LzQzNoYP
--aHR0cDovL3Rlc3QvNDM3hg9odHRwOi8vdGVzdC80MziGD2h0dHA6Ly90ZXN0LzQz
--OYYPaHR0cDovL3Rlc3QvNDQwhg9odHRwOi8vdGVzdC80NDGGD2h0dHA6Ly90ZXN0
--LzQ0MoYPaHR0cDovL3Rlc3QvNDQzhg9odHRwOi8vdGVzdC80NDSGD2h0dHA6Ly90
--ZXN0LzQ0NYYPaHR0cDovL3Rlc3QvNDQ2hg9odHRwOi8vdGVzdC80NDeGD2h0dHA6
--Ly90ZXN0LzQ0OIYPaHR0cDovL3Rlc3QvNDQ5hg9odHRwOi8vdGVzdC80NTCGD2h0
--dHA6Ly90ZXN0LzQ1MYYPaHR0cDovL3Rlc3QvNDUyhg9odHRwOi8vdGVzdC80NTOG
--D2h0dHA6Ly90ZXN0LzQ1NIYPaHR0cDovL3Rlc3QvNDU1hg9odHRwOi8vdGVzdC80
--NTaGD2h0dHA6Ly90ZXN0LzQ1N4YPaHR0cDovL3Rlc3QvNDU4hg9odHRwOi8vdGVz
--dC80NTmGD2h0dHA6Ly90ZXN0LzQ2MIYPaHR0cDovL3Rlc3QvNDYxhg9odHRwOi8v
--dGVzdC80NjKGD2h0dHA6Ly90ZXN0LzQ2M4YPaHR0cDovL3Rlc3QvNDY0hg9odHRw
--Oi8vdGVzdC80NjWGD2h0dHA6Ly90ZXN0LzQ2NoYPaHR0cDovL3Rlc3QvNDY3hg9o
--dHRwOi8vdGVzdC80NjiGD2h0dHA6Ly90ZXN0LzQ2OYYPaHR0cDovL3Rlc3QvNDcw
--hg9odHRwOi8vdGVzdC80NzGGD2h0dHA6Ly90ZXN0LzQ3MoYPaHR0cDovL3Rlc3Qv
--NDczhg9odHRwOi8vdGVzdC80NzSGD2h0dHA6Ly90ZXN0LzQ3NYYPaHR0cDovL3Rl
--c3QvNDc2hg9odHRwOi8vdGVzdC80NzeGD2h0dHA6Ly90ZXN0LzQ3OIYPaHR0cDov
--L3Rlc3QvNDc5hg9odHRwOi8vdGVzdC80ODCGD2h0dHA6Ly90ZXN0LzQ4MYYPaHR0
--cDovL3Rlc3QvNDgyhg9odHRwOi8vdGVzdC80ODOGD2h0dHA6Ly90ZXN0LzQ4NIYP
--aHR0cDovL3Rlc3QvNDg1hg9odHRwOi8vdGVzdC80ODaGD2h0dHA6Ly90ZXN0LzQ4
--N4YPaHR0cDovL3Rlc3QvNDg4hg9odHRwOi8vdGVzdC80ODmGD2h0dHA6Ly90ZXN0
--LzQ5MIYPaHR0cDovL3Rlc3QvNDkxhg9odHRwOi8vdGVzdC80OTKGD2h0dHA6Ly90
--ZXN0LzQ5M4YPaHR0cDovL3Rlc3QvNDk0hg9odHRwOi8vdGVzdC80OTWGD2h0dHA6
--Ly90ZXN0LzQ5NoYPaHR0cDovL3Rlc3QvNDk3hg9odHRwOi8vdGVzdC80OTiGD2h0
--dHA6Ly90ZXN0LzQ5OYYPaHR0cDovL3Rlc3QvNTAwhg9odHRwOi8vdGVzdC81MDGG
--D2h0dHA6Ly90ZXN0LzUwMoYPaHR0cDovL3Rlc3QvNTAzhg9odHRwOi8vdGVzdC81
--MDSGD2h0dHA6Ly90ZXN0LzUwNYYPaHR0cDovL3Rlc3QvNTA2hg9odHRwOi8vdGVz
--dC81MDeGD2h0dHA6Ly90ZXN0LzUwOIYPaHR0cDovL3Rlc3QvNTA5hg9odHRwOi8v
--dGVzdC81MTCGD2h0dHA6Ly90ZXN0LzUxMYYPaHR0cDovL3Rlc3QvNTEyhg9odHRw
--Oi8vdGVzdC81MTOGD2h0dHA6Ly90ZXN0LzUxNIYPaHR0cDovL3Rlc3QvNTE1hg9o
--dHRwOi8vdGVzdC81MTaGD2h0dHA6Ly90ZXN0LzUxN4YPaHR0cDovL3Rlc3QvNTE4
--hg9odHRwOi8vdGVzdC81MTmGD2h0dHA6Ly90ZXN0LzUyMIYPaHR0cDovL3Rlc3Qv
--NTIxhg9odHRwOi8vdGVzdC81MjKGD2h0dHA6Ly90ZXN0LzUyM4YPaHR0cDovL3Rl
--c3QvNTI0hg9odHRwOi8vdGVzdC81MjWGD2h0dHA6Ly90ZXN0LzUyNoYPaHR0cDov
--L3Rlc3QvNTI3hg9odHRwOi8vdGVzdC81MjiGD2h0dHA6Ly90ZXN0LzUyOYYPaHR0
--cDovL3Rlc3QvNTMwhg9odHRwOi8vdGVzdC81MzGGD2h0dHA6Ly90ZXN0LzUzMoYP
--aHR0cDovL3Rlc3QvNTMzhg9odHRwOi8vdGVzdC81MzSGD2h0dHA6Ly90ZXN0LzUz
--NYYPaHR0cDovL3Rlc3QvNTM2hg9odHRwOi8vdGVzdC81MzeGD2h0dHA6Ly90ZXN0
--LzUzOIYPaHR0cDovL3Rlc3QvNTM5hg9odHRwOi8vdGVzdC81NDCGD2h0dHA6Ly90
--ZXN0LzU0MYYPaHR0cDovL3Rlc3QvNTQyhg9odHRwOi8vdGVzdC81NDOGD2h0dHA6
--Ly90ZXN0LzU0NIYPaHR0cDovL3Rlc3QvNTQ1hg9odHRwOi8vdGVzdC81NDaGD2h0
--dHA6Ly90ZXN0LzU0N4YPaHR0cDovL3Rlc3QvNTQ4hg9odHRwOi8vdGVzdC81NDmG
--D2h0dHA6Ly90ZXN0LzU1MIYPaHR0cDovL3Rlc3QvNTUxhg9odHRwOi8vdGVzdC81
--NTKGD2h0dHA6Ly90ZXN0LzU1M4YPaHR0cDovL3Rlc3QvNTU0hg9odHRwOi8vdGVz
--dC81NTWGD2h0dHA6Ly90ZXN0LzU1NoYPaHR0cDovL3Rlc3QvNTU3hg9odHRwOi8v
--dGVzdC81NTiGD2h0dHA6Ly90ZXN0LzU1OYYPaHR0cDovL3Rlc3QvNTYwhg9odHRw
--Oi8vdGVzdC81NjGGD2h0dHA6Ly90ZXN0LzU2MoYPaHR0cDovL3Rlc3QvNTYzhg9o
--dHRwOi8vdGVzdC81NjSGD2h0dHA6Ly90ZXN0LzU2NYYPaHR0cDovL3Rlc3QvNTY2
--hg9odHRwOi8vdGVzdC81NjeGD2h0dHA6Ly90ZXN0LzU2OIYPaHR0cDovL3Rlc3Qv
--NTY5hg9odHRwOi8vdGVzdC81NzCGD2h0dHA6Ly90ZXN0LzU3MYYPaHR0cDovL3Rl
--c3QvNTcyhg9odHRwOi8vdGVzdC81NzOGD2h0dHA6Ly90ZXN0LzU3NIYPaHR0cDov
--L3Rlc3QvNTc1hg9odHRwOi8vdGVzdC81NzaGD2h0dHA6Ly90ZXN0LzU3N4YPaHR0
--cDovL3Rlc3QvNTc4hg9odHRwOi8vdGVzdC81NzmGD2h0dHA6Ly90ZXN0LzU4MIYP
--aHR0cDovL3Rlc3QvNTgxhg9odHRwOi8vdGVzdC81ODKGD2h0dHA6Ly90ZXN0LzU4
--M4YPaHR0cDovL3Rlc3QvNTg0hg9odHRwOi8vdGVzdC81ODWGD2h0dHA6Ly90ZXN0
--LzU4NoYPaHR0cDovL3Rlc3QvNTg3hg9odHRwOi8vdGVzdC81ODiGD2h0dHA6Ly90
--ZXN0LzU4OYYPaHR0cDovL3Rlc3QvNTkwhg9odHRwOi8vdGVzdC81OTGGD2h0dHA6
--Ly90ZXN0LzU5MoYPaHR0cDovL3Rlc3QvNTkzhg9odHRwOi8vdGVzdC81OTSGD2h0
--dHA6Ly90ZXN0LzU5NYYPaHR0cDovL3Rlc3QvNTk2hg9odHRwOi8vdGVzdC81OTeG
--D2h0dHA6Ly90ZXN0LzU5OIYPaHR0cDovL3Rlc3QvNTk5hg9odHRwOi8vdGVzdC82
--MDCGD2h0dHA6Ly90ZXN0LzYwMYYPaHR0cDovL3Rlc3QvNjAyhg9odHRwOi8vdGVz
--dC82MDOGD2h0dHA6Ly90ZXN0LzYwNIYPaHR0cDovL3Rlc3QvNjA1hg9odHRwOi8v
--dGVzdC82MDaGD2h0dHA6Ly90ZXN0LzYwN4YPaHR0cDovL3Rlc3QvNjA4hg9odHRw
--Oi8vdGVzdC82MDmGD2h0dHA6Ly90ZXN0LzYxMIYPaHR0cDovL3Rlc3QvNjExhg9o
--dHRwOi8vdGVzdC82MTKGD2h0dHA6Ly90ZXN0LzYxM4YPaHR0cDovL3Rlc3QvNjE0
--hg9odHRwOi8vdGVzdC82MTWGD2h0dHA6Ly90ZXN0LzYxNoYPaHR0cDovL3Rlc3Qv
--NjE3hg9odHRwOi8vdGVzdC82MTiGD2h0dHA6Ly90ZXN0LzYxOYYPaHR0cDovL3Rl
--c3QvNjIwhg9odHRwOi8vdGVzdC82MjGGD2h0dHA6Ly90ZXN0LzYyMoYPaHR0cDov
--L3Rlc3QvNjIzhg9odHRwOi8vdGVzdC82MjSGD2h0dHA6Ly90ZXN0LzYyNYYPaHR0
--cDovL3Rlc3QvNjI2hg9odHRwOi8vdGVzdC82MjeGD2h0dHA6Ly90ZXN0LzYyOIYP
--aHR0cDovL3Rlc3QvNjI5hg9odHRwOi8vdGVzdC82MzCGD2h0dHA6Ly90ZXN0LzYz
--MYYPaHR0cDovL3Rlc3QvNjMyhg9odHRwOi8vdGVzdC82MzOGD2h0dHA6Ly90ZXN0
--LzYzNIYPaHR0cDovL3Rlc3QvNjM1hg9odHRwOi8vdGVzdC82MzaGD2h0dHA6Ly90
--ZXN0LzYzN4YPaHR0cDovL3Rlc3QvNjM4hg9odHRwOi8vdGVzdC82MzmGD2h0dHA6
--Ly90ZXN0LzY0MIYPaHR0cDovL3Rlc3QvNjQxhg9odHRwOi8vdGVzdC82NDKGD2h0
--dHA6Ly90ZXN0LzY0M4YPaHR0cDovL3Rlc3QvNjQ0hg9odHRwOi8vdGVzdC82NDWG
--D2h0dHA6Ly90ZXN0LzY0NoYPaHR0cDovL3Rlc3QvNjQ3hg9odHRwOi8vdGVzdC82
--NDiGD2h0dHA6Ly90ZXN0LzY0OYYPaHR0cDovL3Rlc3QvNjUwhg9odHRwOi8vdGVz
--dC82NTGGD2h0dHA6Ly90ZXN0LzY1MoYPaHR0cDovL3Rlc3QvNjUzhg9odHRwOi8v
--dGVzdC82NTSGD2h0dHA6Ly90ZXN0LzY1NYYPaHR0cDovL3Rlc3QvNjU2hg9odHRw
--Oi8vdGVzdC82NTeGD2h0dHA6Ly90ZXN0LzY1OIYPaHR0cDovL3Rlc3QvNjU5hg9o
--dHRwOi8vdGVzdC82NjCGD2h0dHA6Ly90ZXN0LzY2MYYPaHR0cDovL3Rlc3QvNjYy
--hg9odHRwOi8vdGVzdC82NjOGD2h0dHA6Ly90ZXN0LzY2NIYPaHR0cDovL3Rlc3Qv
--NjY1hg9odHRwOi8vdGVzdC82NjaGD2h0dHA6Ly90ZXN0LzY2N4YPaHR0cDovL3Rl
--c3QvNjY4hg9odHRwOi8vdGVzdC82NjmGD2h0dHA6Ly90ZXN0LzY3MIYPaHR0cDov
--L3Rlc3QvNjcxhg9odHRwOi8vdGVzdC82NzKGD2h0dHA6Ly90ZXN0LzY3M4YPaHR0
--cDovL3Rlc3QvNjc0hg9odHRwOi8vdGVzdC82NzWGD2h0dHA6Ly90ZXN0LzY3NoYP
--aHR0cDovL3Rlc3QvNjc3hg9odHRwOi8vdGVzdC82NziGD2h0dHA6Ly90ZXN0LzY3
--OYYPaHR0cDovL3Rlc3QvNjgwhg9odHRwOi8vdGVzdC82ODGGD2h0dHA6Ly90ZXN0
--LzY4MoYPaHR0cDovL3Rlc3QvNjgzhg9odHRwOi8vdGVzdC82ODSGD2h0dHA6Ly90
--ZXN0LzY4NYYPaHR0cDovL3Rlc3QvNjg2hg9odHRwOi8vdGVzdC82ODeGD2h0dHA6
--Ly90ZXN0LzY4OIYPaHR0cDovL3Rlc3QvNjg5hg9odHRwOi8vdGVzdC82OTCGD2h0
--dHA6Ly90ZXN0LzY5MYYPaHR0cDovL3Rlc3QvNjkyhg9odHRwOi8vdGVzdC82OTOG
--D2h0dHA6Ly90ZXN0LzY5NIYPaHR0cDovL3Rlc3QvNjk1hg9odHRwOi8vdGVzdC82
--OTaGD2h0dHA6Ly90ZXN0LzY5N4YPaHR0cDovL3Rlc3QvNjk4hg9odHRwOi8vdGVz
--dC82OTmGD2h0dHA6Ly90ZXN0LzcwMIYPaHR0cDovL3Rlc3QvNzAxhg9odHRwOi8v
--dGVzdC83MDKGD2h0dHA6Ly90ZXN0LzcwM4YPaHR0cDovL3Rlc3QvNzA0hg9odHRw
--Oi8vdGVzdC83MDWGD2h0dHA6Ly90ZXN0LzcwNoYPaHR0cDovL3Rlc3QvNzA3hg9o
--dHRwOi8vdGVzdC83MDiGD2h0dHA6Ly90ZXN0LzcwOYYPaHR0cDovL3Rlc3QvNzEw
--hg9odHRwOi8vdGVzdC83MTGGD2h0dHA6Ly90ZXN0LzcxMoYPaHR0cDovL3Rlc3Qv
--NzEzhg9odHRwOi8vdGVzdC83MTSGD2h0dHA6Ly90ZXN0LzcxNYYPaHR0cDovL3Rl
--c3QvNzE2hg9odHRwOi8vdGVzdC83MTeGD2h0dHA6Ly90ZXN0LzcxOIYPaHR0cDov
--L3Rlc3QvNzE5hg9odHRwOi8vdGVzdC83MjCGD2h0dHA6Ly90ZXN0LzcyMYYPaHR0
--cDovL3Rlc3QvNzIyhg9odHRwOi8vdGVzdC83MjOGD2h0dHA6Ly90ZXN0LzcyNIYP
--aHR0cDovL3Rlc3QvNzI1hg9odHRwOi8vdGVzdC83MjaGD2h0dHA6Ly90ZXN0Lzcy
--N4YPaHR0cDovL3Rlc3QvNzI4hg9odHRwOi8vdGVzdC83MjmGD2h0dHA6Ly90ZXN0
--LzczMIYPaHR0cDovL3Rlc3QvNzMxhg9odHRwOi8vdGVzdC83MzKGD2h0dHA6Ly90
--ZXN0LzczM4YPaHR0cDovL3Rlc3QvNzM0hg9odHRwOi8vdGVzdC83MzWGD2h0dHA6
--Ly90ZXN0LzczNoYPaHR0cDovL3Rlc3QvNzM3hg9odHRwOi8vdGVzdC83MziGD2h0
--dHA6Ly90ZXN0LzczOYYPaHR0cDovL3Rlc3QvNzQwhg9odHRwOi8vdGVzdC83NDGG
--D2h0dHA6Ly90ZXN0Lzc0MoYPaHR0cDovL3Rlc3QvNzQzhg9odHRwOi8vdGVzdC83
--NDSGD2h0dHA6Ly90ZXN0Lzc0NYYPaHR0cDovL3Rlc3QvNzQ2hg9odHRwOi8vdGVz
--dC83NDeGD2h0dHA6Ly90ZXN0Lzc0OIYPaHR0cDovL3Rlc3QvNzQ5hg9odHRwOi8v
--dGVzdC83NTCGD2h0dHA6Ly90ZXN0Lzc1MYYPaHR0cDovL3Rlc3QvNzUyhg9odHRw
--Oi8vdGVzdC83NTOGD2h0dHA6Ly90ZXN0Lzc1NIYPaHR0cDovL3Rlc3QvNzU1hg9o
--dHRwOi8vdGVzdC83NTaGD2h0dHA6Ly90ZXN0Lzc1N4YPaHR0cDovL3Rlc3QvNzU4
--hg9odHRwOi8vdGVzdC83NTmGD2h0dHA6Ly90ZXN0Lzc2MIYPaHR0cDovL3Rlc3Qv
--NzYxhg9odHRwOi8vdGVzdC83NjKGD2h0dHA6Ly90ZXN0Lzc2M4YPaHR0cDovL3Rl
--c3QvNzY0hg9odHRwOi8vdGVzdC83NjWGD2h0dHA6Ly90ZXN0Lzc2NoYPaHR0cDov
--L3Rlc3QvNzY3hg9odHRwOi8vdGVzdC83NjiGD2h0dHA6Ly90ZXN0Lzc2OYYPaHR0
--cDovL3Rlc3QvNzcwhg9odHRwOi8vdGVzdC83NzGGD2h0dHA6Ly90ZXN0Lzc3MoYP
--aHR0cDovL3Rlc3QvNzczhg9odHRwOi8vdGVzdC83NzSGD2h0dHA6Ly90ZXN0Lzc3
--NYYPaHR0cDovL3Rlc3QvNzc2hg9odHRwOi8vdGVzdC83NzeGD2h0dHA6Ly90ZXN0
--Lzc3OIYPaHR0cDovL3Rlc3QvNzc5hg9odHRwOi8vdGVzdC83ODCGD2h0dHA6Ly90
--ZXN0Lzc4MYYPaHR0cDovL3Rlc3QvNzgyhg9odHRwOi8vdGVzdC83ODOGD2h0dHA6
--Ly90ZXN0Lzc4NIYPaHR0cDovL3Rlc3QvNzg1hg9odHRwOi8vdGVzdC83ODaGD2h0
--dHA6Ly90ZXN0Lzc4N4YPaHR0cDovL3Rlc3QvNzg4hg9odHRwOi8vdGVzdC83ODmG
--D2h0dHA6Ly90ZXN0Lzc5MIYPaHR0cDovL3Rlc3QvNzkxhg9odHRwOi8vdGVzdC83
--OTKGD2h0dHA6Ly90ZXN0Lzc5M4YPaHR0cDovL3Rlc3QvNzk0hg9odHRwOi8vdGVz
--dC83OTWGD2h0dHA6Ly90ZXN0Lzc5NoYPaHR0cDovL3Rlc3QvNzk3hg9odHRwOi8v
--dGVzdC83OTiGD2h0dHA6Ly90ZXN0Lzc5OYYPaHR0cDovL3Rlc3QvODAwhg9odHRw
--Oi8vdGVzdC84MDGGD2h0dHA6Ly90ZXN0LzgwMoYPaHR0cDovL3Rlc3QvODAzhg9o
--dHRwOi8vdGVzdC84MDSGD2h0dHA6Ly90ZXN0LzgwNYYPaHR0cDovL3Rlc3QvODA2
--hg9odHRwOi8vdGVzdC84MDeGD2h0dHA6Ly90ZXN0LzgwOIYPaHR0cDovL3Rlc3Qv
--ODA5hg9odHRwOi8vdGVzdC84MTCGD2h0dHA6Ly90ZXN0LzgxMYYPaHR0cDovL3Rl
--c3QvODEyhg9odHRwOi8vdGVzdC84MTOGD2h0dHA6Ly90ZXN0LzgxNIYPaHR0cDov
--L3Rlc3QvODE1hg9odHRwOi8vdGVzdC84MTaGD2h0dHA6Ly90ZXN0LzgxN4YPaHR0
--cDovL3Rlc3QvODE4hg9odHRwOi8vdGVzdC84MTmGD2h0dHA6Ly90ZXN0LzgyMIYP
--aHR0cDovL3Rlc3QvODIxhg9odHRwOi8vdGVzdC84MjKGD2h0dHA6Ly90ZXN0Lzgy
--M4YPaHR0cDovL3Rlc3QvODI0hg9odHRwOi8vdGVzdC84MjWGD2h0dHA6Ly90ZXN0
--LzgyNoYPaHR0cDovL3Rlc3QvODI3hg9odHRwOi8vdGVzdC84MjiGD2h0dHA6Ly90
--ZXN0LzgyOYYPaHR0cDovL3Rlc3QvODMwhg9odHRwOi8vdGVzdC84MzGGD2h0dHA6
--Ly90ZXN0LzgzMoYPaHR0cDovL3Rlc3QvODMzhg9odHRwOi8vdGVzdC84MzSGD2h0
--dHA6Ly90ZXN0LzgzNYYPaHR0cDovL3Rlc3QvODM2hg9odHRwOi8vdGVzdC84MzeG
--D2h0dHA6Ly90ZXN0LzgzOIYPaHR0cDovL3Rlc3QvODM5hg9odHRwOi8vdGVzdC84
--NDCGD2h0dHA6Ly90ZXN0Lzg0MYYPaHR0cDovL3Rlc3QvODQyhg9odHRwOi8vdGVz
--dC84NDOGD2h0dHA6Ly90ZXN0Lzg0NIYPaHR0cDovL3Rlc3QvODQ1hg9odHRwOi8v
--dGVzdC84NDaGD2h0dHA6Ly90ZXN0Lzg0N4YPaHR0cDovL3Rlc3QvODQ4hg9odHRw
--Oi8vdGVzdC84NDmGD2h0dHA6Ly90ZXN0Lzg1MIYPaHR0cDovL3Rlc3QvODUxhg9o
--dHRwOi8vdGVzdC84NTKGD2h0dHA6Ly90ZXN0Lzg1M4YPaHR0cDovL3Rlc3QvODU0
--hg9odHRwOi8vdGVzdC84NTWGD2h0dHA6Ly90ZXN0Lzg1NoYPaHR0cDovL3Rlc3Qv
--ODU3hg9odHRwOi8vdGVzdC84NTiGD2h0dHA6Ly90ZXN0Lzg1OYYPaHR0cDovL3Rl
--c3QvODYwhg9odHRwOi8vdGVzdC84NjGGD2h0dHA6Ly90ZXN0Lzg2MoYPaHR0cDov
--L3Rlc3QvODYzhg9odHRwOi8vdGVzdC84NjSGD2h0dHA6Ly90ZXN0Lzg2NYYPaHR0
--cDovL3Rlc3QvODY2hg9odHRwOi8vdGVzdC84NjeGD2h0dHA6Ly90ZXN0Lzg2OIYP
--aHR0cDovL3Rlc3QvODY5hg9odHRwOi8vdGVzdC84NzCGD2h0dHA6Ly90ZXN0Lzg3
--MYYPaHR0cDovL3Rlc3QvODcyhg9odHRwOi8vdGVzdC84NzOGD2h0dHA6Ly90ZXN0
--Lzg3NIYPaHR0cDovL3Rlc3QvODc1hg9odHRwOi8vdGVzdC84NzaGD2h0dHA6Ly90
--ZXN0Lzg3N4YPaHR0cDovL3Rlc3QvODc4hg9odHRwOi8vdGVzdC84NzmGD2h0dHA6
--Ly90ZXN0Lzg4MIYPaHR0cDovL3Rlc3QvODgxhg9odHRwOi8vdGVzdC84ODKGD2h0
--dHA6Ly90ZXN0Lzg4M4YPaHR0cDovL3Rlc3QvODg0hg9odHRwOi8vdGVzdC84ODWG
--D2h0dHA6Ly90ZXN0Lzg4NoYPaHR0cDovL3Rlc3QvODg3hg9odHRwOi8vdGVzdC84
--ODiGD2h0dHA6Ly90ZXN0Lzg4OYYPaHR0cDovL3Rlc3QvODkwhg9odHRwOi8vdGVz
--dC84OTGGD2h0dHA6Ly90ZXN0Lzg5MoYPaHR0cDovL3Rlc3QvODkzhg9odHRwOi8v
--dGVzdC84OTSGD2h0dHA6Ly90ZXN0Lzg5NYYPaHR0cDovL3Rlc3QvODk2hg9odHRw
--Oi8vdGVzdC84OTeGD2h0dHA6Ly90ZXN0Lzg5OIYPaHR0cDovL3Rlc3QvODk5hg9o
--dHRwOi8vdGVzdC85MDCGD2h0dHA6Ly90ZXN0LzkwMYYPaHR0cDovL3Rlc3QvOTAy
--hg9odHRwOi8vdGVzdC85MDOGD2h0dHA6Ly90ZXN0LzkwNIYPaHR0cDovL3Rlc3Qv
--OTA1hg9odHRwOi8vdGVzdC85MDaGD2h0dHA6Ly90ZXN0LzkwN4YPaHR0cDovL3Rl
--c3QvOTA4hg9odHRwOi8vdGVzdC85MDmGD2h0dHA6Ly90ZXN0LzkxMIYPaHR0cDov
--L3Rlc3QvOTExhg9odHRwOi8vdGVzdC85MTKGD2h0dHA6Ly90ZXN0LzkxM4YPaHR0
--cDovL3Rlc3QvOTE0hg9odHRwOi8vdGVzdC85MTWGD2h0dHA6Ly90ZXN0LzkxNoYP
--aHR0cDovL3Rlc3QvOTE3hg9odHRwOi8vdGVzdC85MTiGD2h0dHA6Ly90ZXN0Lzkx
--OYYPaHR0cDovL3Rlc3QvOTIwhg9odHRwOi8vdGVzdC85MjGGD2h0dHA6Ly90ZXN0
--LzkyMoYPaHR0cDovL3Rlc3QvOTIzhg9odHRwOi8vdGVzdC85MjSGD2h0dHA6Ly90
--ZXN0LzkyNYYPaHR0cDovL3Rlc3QvOTI2hg9odHRwOi8vdGVzdC85MjeGD2h0dHA6
--Ly90ZXN0LzkyOIYPaHR0cDovL3Rlc3QvOTI5hg9odHRwOi8vdGVzdC85MzCGD2h0
--dHA6Ly90ZXN0LzkzMYYPaHR0cDovL3Rlc3QvOTMyhg9odHRwOi8vdGVzdC85MzOG
--D2h0dHA6Ly90ZXN0LzkzNIYPaHR0cDovL3Rlc3QvOTM1hg9odHRwOi8vdGVzdC85
--MzaGD2h0dHA6Ly90ZXN0LzkzN4YPaHR0cDovL3Rlc3QvOTM4hg9odHRwOi8vdGVz
--dC85MzmGD2h0dHA6Ly90ZXN0Lzk0MIYPaHR0cDovL3Rlc3QvOTQxhg9odHRwOi8v
--dGVzdC85NDKGD2h0dHA6Ly90ZXN0Lzk0M4YPaHR0cDovL3Rlc3QvOTQ0hg9odHRw
--Oi8vdGVzdC85NDWGD2h0dHA6Ly90ZXN0Lzk0NoYPaHR0cDovL3Rlc3QvOTQ3hg9o
--dHRwOi8vdGVzdC85NDiGD2h0dHA6Ly90ZXN0Lzk0OYYPaHR0cDovL3Rlc3QvOTUw
--hg9odHRwOi8vdGVzdC85NTGGD2h0dHA6Ly90ZXN0Lzk1MoYPaHR0cDovL3Rlc3Qv
--OTUzhg9odHRwOi8vdGVzdC85NTSGD2h0dHA6Ly90ZXN0Lzk1NYYPaHR0cDovL3Rl
--c3QvOTU2hg9odHRwOi8vdGVzdC85NTeGD2h0dHA6Ly90ZXN0Lzk1OIYPaHR0cDov
--L3Rlc3QvOTU5hg9odHRwOi8vdGVzdC85NjCGD2h0dHA6Ly90ZXN0Lzk2MYYPaHR0
--cDovL3Rlc3QvOTYyhg9odHRwOi8vdGVzdC85NjOGD2h0dHA6Ly90ZXN0Lzk2NIYP
--aHR0cDovL3Rlc3QvOTY1hg9odHRwOi8vdGVzdC85NjaGD2h0dHA6Ly90ZXN0Lzk2
--N4YPaHR0cDovL3Rlc3QvOTY4hg9odHRwOi8vdGVzdC85NjmGD2h0dHA6Ly90ZXN0
--Lzk3MIYPaHR0cDovL3Rlc3QvOTcxhg9odHRwOi8vdGVzdC85NzKGD2h0dHA6Ly90
--ZXN0Lzk3M4YPaHR0cDovL3Rlc3QvOTc0hg9odHRwOi8vdGVzdC85NzWGD2h0dHA6
--Ly90ZXN0Lzk3NoYPaHR0cDovL3Rlc3QvOTc3hg9odHRwOi8vdGVzdC85NziGD2h0
--dHA6Ly90ZXN0Lzk3OYYPaHR0cDovL3Rlc3QvOTgwhg9odHRwOi8vdGVzdC85ODGG
--D2h0dHA6Ly90ZXN0Lzk4MoYPaHR0cDovL3Rlc3QvOTgzhg9odHRwOi8vdGVzdC85
--ODSGD2h0dHA6Ly90ZXN0Lzk4NYYPaHR0cDovL3Rlc3QvOTg2hg9odHRwOi8vdGVz
--dC85ODeGD2h0dHA6Ly90ZXN0Lzk4OIYPaHR0cDovL3Rlc3QvOTg5hg9odHRwOi8v
--dGVzdC85OTCGD2h0dHA6Ly90ZXN0Lzk5MYYPaHR0cDovL3Rlc3QvOTkyhg9odHRw
--Oi8vdGVzdC85OTOGD2h0dHA6Ly90ZXN0Lzk5NIYPaHR0cDovL3Rlc3QvOTk1hg9o
--dHRwOi8vdGVzdC85OTaGD2h0dHA6Ly90ZXN0Lzk5N4YPaHR0cDovL3Rlc3QvOTk4
--hg9odHRwOi8vdGVzdC85OTmGEGh0dHA6Ly90ZXN0LzEwMDCGEGh0dHA6Ly90ZXN0
--LzEwMDGGEGh0dHA6Ly90ZXN0LzEwMDKGEGh0dHA6Ly90ZXN0LzEwMDOGEGh0dHA6
--Ly90ZXN0LzEwMDSGEGh0dHA6Ly90ZXN0LzEwMDWGEGh0dHA6Ly90ZXN0LzEwMDaG
--EGh0dHA6Ly90ZXN0LzEwMDeGEGh0dHA6Ly90ZXN0LzEwMDiGEGh0dHA6Ly90ZXN0
--LzEwMDmGEGh0dHA6Ly90ZXN0LzEwMTCGEGh0dHA6Ly90ZXN0LzEwMTGGEGh0dHA6
--Ly90ZXN0LzEwMTKGEGh0dHA6Ly90ZXN0LzEwMTOGEGh0dHA6Ly90ZXN0LzEwMTSG
--EGh0dHA6Ly90ZXN0LzEwMTWGEGh0dHA6Ly90ZXN0LzEwMTaGEGh0dHA6Ly90ZXN0
--LzEwMTeGEGh0dHA6Ly90ZXN0LzEwMTiGEGh0dHA6Ly90ZXN0LzEwMTmGEGh0dHA6
--Ly90ZXN0LzEwMjCGEGh0dHA6Ly90ZXN0LzEwMjGGEGh0dHA6Ly90ZXN0LzEwMjKG
--EGh0dHA6Ly90ZXN0LzEwMjOGEGh0dHA6Ly90ZXN0LzEwMjQwDQYJKoZIhvcNAQEL
--BQADggEBAB6Q1kqPJAaK3kFPOzkcXYEkSC9mnmz+wLPPo4qgSgLi0wR+h0KHMV51
--Jbl8k6wOPacOCe8PbGc9lv5Ne4bNlF4cdNS5/tp6Bz4UrOaOTN5HvJr9jI0zMSNy
--82u5RdSbDofZLzid+2f0EFOmWEejw2Y4kJbnI19eQQuFQoApG4PTAOA30WY6Hlug
--2ZGxlnAtn2yChJ21IZC5ZCtwh/PdBp9xIulmNTIEI8UIm/PmgmVt9AwZdI3rVptB
--d1YeUxPeVxXlduLe1FF8JEkzbV3HULxVGDU+tT8ORlgsVX36/5H66pSR5r+vBi1R
--reUqPQbsfheM9iyrBe+R8c0hywEjgOA=
-+Ny50ZXN0ggl0MzM4LnRlc3SCCXQzMzkudGVzdIIJdDM0MC50ZXN0hwQKAAAAhwQK
-+AAABhwQKAAAChwQKAAADhwQKAAAEhwQKAAAFhwQKAAAGhwQKAAAHhwQKAAAIhwQK
-+AAAJhwQKAAAKhwQKAAALhwQKAAAMhwQKAAANhwQKAAAOhwQKAAAPhwQKAAAQhwQK
-+AAARhwQKAAAShwQKAAAThwQKAAAUhwQKAAAVhwQKAAAWhwQKAAAXhwQKAAAYhwQK
-+AAAZhwQKAAAahwQKAAAbhwQKAAAchwQKAAAdhwQKAAAehwQKAAAfhwQKAAAghwQK
-+AAAhhwQKAAAihwQKAAAjhwQKAAAkhwQKAAAlhwQKAAAmhwQKAAAnhwQKAAAohwQK
-+AAAphwQKAAAqhwQKAAArhwQKAAAshwQKAAAthwQKAAAuhwQKAAAvhwQKAAAwhwQK
-+AAAxhwQKAAAyhwQKAAAzhwQKAAA0hwQKAAA1hwQKAAA2hwQKAAA3hwQKAAA4hwQK
-+AAA5hwQKAAA6hwQKAAA7hwQKAAA8hwQKAAA9hwQKAAA+hwQKAAA/hwQKAABAhwQK
-+AABBhwQKAABChwQKAABDhwQKAABEhwQKAABFhwQKAABGhwQKAABHhwQKAABIhwQK
-+AABJhwQKAABKhwQKAABLhwQKAABMhwQKAABNhwQKAABOhwQKAABPhwQKAABQhwQK
-+AABRhwQKAABShwQKAABThwQKAABUhwQKAABVhwQKAABWhwQKAABXhwQKAABYhwQK
-+AABZhwQKAABahwQKAABbhwQKAABchwQKAABdhwQKAABehwQKAABfhwQKAABghwQK
-+AABhhwQKAABihwQKAABjhwQKAABkhwQKAABlhwQKAABmhwQKAABnhwQKAABohwQK
-+AABphwQKAABqhwQKAABrhwQKAABshwQKAABthwQKAABuhwQKAABvhwQKAABwhwQK
-+AABxhwQKAAByhwQKAABzhwQKAAB0hwQKAAB1hwQKAAB2hwQKAAB3hwQKAAB4hwQK
-+AAB5hwQKAAB6hwQKAAB7hwQKAAB8hwQKAAB9hwQKAAB+hwQKAAB/hwQKAACAhwQK
-+AACBhwQKAACChwQKAACDhwQKAACEhwQKAACFhwQKAACGhwQKAACHhwQKAACIhwQK
-+AACJhwQKAACKhwQKAACLhwQKAACMhwQKAACNhwQKAACOhwQKAACPhwQKAACQhwQK
-+AACRhwQKAACShwQKAACThwQKAACUhwQKAACVhwQKAACWhwQKAACXhwQKAACYhwQK
-+AACZhwQKAACahwQKAACbhwQKAACchwQKAACdhwQKAACehwQKAACfhwQKAACghwQK
-+AAChhwQKAACihwQKAACjhwQKAACkhwQKAAClhwQKAACmhwQKAACnhwQKAACohwQK
-+AACphwQKAACqhwQKAACrhwQKAACshwQKAACthwQKAACuhwQKAACvhwQKAACwhwQK
-+AACxhwQKAACyhwQKAACzhwQKAAC0hwQKAAC1hwQKAAC2hwQKAAC3hwQKAAC4hwQK
-+AAC5hwQKAAC6hwQKAAC7hwQKAAC8hwQKAAC9hwQKAAC+hwQKAAC/hwQKAADAhwQK
-+AADBhwQKAADChwQKAADDhwQKAADEhwQKAADFhwQKAADGhwQKAADHhwQKAADIhwQK
-+AADJhwQKAADKhwQKAADLhwQKAADMhwQKAADNhwQKAADOhwQKAADPhwQKAADQhwQK
-+AADRhwQKAADShwQKAADThwQKAADUhwQKAADVhwQKAADWhwQKAADXhwQKAADYhwQK
-+AADZhwQKAADahwQKAADbhwQKAADchwQKAADdhwQKAADehwQKAADfhwQKAADghwQK
-+AADhhwQKAADihwQKAADjhwQKAADkhwQKAADlhwQKAADmhwQKAADnhwQKAADohwQK
-+AADphwQKAADqhwQKAADrhwQKAADshwQKAADthwQKAADuhwQKAADvhwQKAADwhwQK
-+AADxhwQKAADyhwQKAADzhwQKAAD0hwQKAAD1hwQKAAD2hwQKAAD3hwQKAAD4hwQK
-+AAD5hwQKAAD6hwQKAAD7hwQKAAD8hwQKAAD9hwQKAAD+hwQKAAD/hwQKAAEAhwQK
-+AAEBhwQKAAEChwQKAAEDhwQKAAEEhwQKAAEFhwQKAAEGhwQKAAEHhwQKAAEIhwQK
-+AAEJhwQKAAEKhwQKAAELhwQKAAEMhwQKAAENhwQKAAEOhwQKAAEPhwQKAAEQhwQK
-+AAERhwQKAAEShwQKAAEThwQKAAEUhwQKAAEVhwQKAAEWhwQKAAEXhwQKAAEYhwQK
-+AAEZhwQKAAEahwQKAAEbhwQKAAEchwQKAAEdhwQKAAEehwQKAAEfhwQKAAEghwQK
-+AAEhhwQKAAEihwQKAAEjhwQKAAEkhwQKAAElhwQKAAEmhwQKAAEnhwQKAAEohwQK
-+AAEphwQKAAEqhwQKAAErhwQKAAEshwQKAAEthwQKAAEuhwQKAAEvhwQKAAEwhwQK
-+AAExhwQKAAEyhwQKAAEzhwQKAAE0hwQKAAE1hwQKAAE2hwQKAAE3hwQKAAE4hwQK
-+AAE5hwQKAAE6hwQKAAE7hwQKAAE8hwQKAAE9hwQKAAE+hwQKAAE/hwQKAAFAhwQK
-+AAFBhwQKAAFChwQKAAFDhwQKAAFEhwQKAAFFhwQKAAFGhwQKAAFHhwQKAAFIhwQK
-+AAFJhwQKAAFKhwQKAAFLhwQKAAFMhwQKAAFNhwQKAAFOhwQKAAFPhwQKAAFQhwQK
-+AAFRhwQKAAFShwQKAAFThwQKAAFUpA8wDTELMAkGA1UEAwwCdDCkDzANMQswCQYD
-+VQQDDAJ0MaQPMA0xCzAJBgNVBAMMAnQypA8wDTELMAkGA1UEAwwCdDOkDzANMQsw
-+CQYDVQQDDAJ0NKQPMA0xCzAJBgNVBAMMAnQ1pA8wDTELMAkGA1UEAwwCdDakDzAN
-+MQswCQYDVQQDDAJ0N6QPMA0xCzAJBgNVBAMMAnQ4pA8wDTELMAkGA1UEAwwCdDmk
-+EDAOMQwwCgYDVQQDDAN0MTCkEDAOMQwwCgYDVQQDDAN0MTGkEDAOMQwwCgYDVQQD
-+DAN0MTKkEDAOMQwwCgYDVQQDDAN0MTOkEDAOMQwwCgYDVQQDDAN0MTSkEDAOMQww
-+CgYDVQQDDAN0MTWkEDAOMQwwCgYDVQQDDAN0MTakEDAOMQwwCgYDVQQDDAN0MTek
-+EDAOMQwwCgYDVQQDDAN0MTikEDAOMQwwCgYDVQQDDAN0MTmkEDAOMQwwCgYDVQQD
-+DAN0MjCkEDAOMQwwCgYDVQQDDAN0MjGkEDAOMQwwCgYDVQQDDAN0MjKkEDAOMQww
-+CgYDVQQDDAN0MjOkEDAOMQwwCgYDVQQDDAN0MjSkEDAOMQwwCgYDVQQDDAN0MjWk
-+EDAOMQwwCgYDVQQDDAN0MjakEDAOMQwwCgYDVQQDDAN0MjekEDAOMQwwCgYDVQQD
-+DAN0MjikEDAOMQwwCgYDVQQDDAN0MjmkEDAOMQwwCgYDVQQDDAN0MzCkEDAOMQww
-+CgYDVQQDDAN0MzGkEDAOMQwwCgYDVQQDDAN0MzKkEDAOMQwwCgYDVQQDDAN0MzOk
-+EDAOMQwwCgYDVQQDDAN0MzSkEDAOMQwwCgYDVQQDDAN0MzWkEDAOMQwwCgYDVQQD
-+DAN0MzakEDAOMQwwCgYDVQQDDAN0MzekEDAOMQwwCgYDVQQDDAN0MzikEDAOMQww
-+CgYDVQQDDAN0MzmkEDAOMQwwCgYDVQQDDAN0NDCkEDAOMQwwCgYDVQQDDAN0NDGk
-+EDAOMQwwCgYDVQQDDAN0NDKkEDAOMQwwCgYDVQQDDAN0NDOkEDAOMQwwCgYDVQQD
-+DAN0NDSkEDAOMQwwCgYDVQQDDAN0NDWkEDAOMQwwCgYDVQQDDAN0NDakEDAOMQww
-+CgYDVQQDDAN0NDekEDAOMQwwCgYDVQQDDAN0NDikEDAOMQwwCgYDVQQDDAN0NDmk
-+EDAOMQwwCgYDVQQDDAN0NTCkEDAOMQwwCgYDVQQDDAN0NTGkEDAOMQwwCgYDVQQD
-+DAN0NTKkEDAOMQwwCgYDVQQDDAN0NTOkEDAOMQwwCgYDVQQDDAN0NTSkEDAOMQww
-+CgYDVQQDDAN0NTWkEDAOMQwwCgYDVQQDDAN0NTakEDAOMQwwCgYDVQQDDAN0NTek
-+EDAOMQwwCgYDVQQDDAN0NTikEDAOMQwwCgYDVQQDDAN0NTmkEDAOMQwwCgYDVQQD
-+DAN0NjCkEDAOMQwwCgYDVQQDDAN0NjGkEDAOMQwwCgYDVQQDDAN0NjKkEDAOMQww
-+CgYDVQQDDAN0NjOkEDAOMQwwCgYDVQQDDAN0NjSkEDAOMQwwCgYDVQQDDAN0NjWk
-+EDAOMQwwCgYDVQQDDAN0NjakEDAOMQwwCgYDVQQDDAN0NjekEDAOMQwwCgYDVQQD
-+DAN0NjikEDAOMQwwCgYDVQQDDAN0NjmkEDAOMQwwCgYDVQQDDAN0NzCkEDAOMQww
-+CgYDVQQDDAN0NzGkEDAOMQwwCgYDVQQDDAN0NzKkEDAOMQwwCgYDVQQDDAN0NzOk
-+EDAOMQwwCgYDVQQDDAN0NzSkEDAOMQwwCgYDVQQDDAN0NzWkEDAOMQwwCgYDVQQD
-+DAN0NzakEDAOMQwwCgYDVQQDDAN0NzekEDAOMQwwCgYDVQQDDAN0NzikEDAOMQww
-+CgYDVQQDDAN0NzmkEDAOMQwwCgYDVQQDDAN0ODCkEDAOMQwwCgYDVQQDDAN0ODGk
-+EDAOMQwwCgYDVQQDDAN0ODKkEDAOMQwwCgYDVQQDDAN0ODOkEDAOMQwwCgYDVQQD
-+DAN0ODSkEDAOMQwwCgYDVQQDDAN0ODWkEDAOMQwwCgYDVQQDDAN0ODakEDAOMQww
-+CgYDVQQDDAN0ODekEDAOMQwwCgYDVQQDDAN0ODikEDAOMQwwCgYDVQQDDAN0ODmk
-+EDAOMQwwCgYDVQQDDAN0OTCkEDAOMQwwCgYDVQQDDAN0OTGkEDAOMQwwCgYDVQQD
-+DAN0OTKkEDAOMQwwCgYDVQQDDAN0OTOkEDAOMQwwCgYDVQQDDAN0OTSkEDAOMQww
-+CgYDVQQDDAN0OTWkEDAOMQwwCgYDVQQDDAN0OTakEDAOMQwwCgYDVQQDDAN0OTek
-+EDAOMQwwCgYDVQQDDAN0OTikEDAOMQwwCgYDVQQDDAN0OTmkETAPMQ0wCwYDVQQD
-+DAR0MTAwpBEwDzENMAsGA1UEAwwEdDEwMaQRMA8xDTALBgNVBAMMBHQxMDKkETAP
-+MQ0wCwYDVQQDDAR0MTAzpBEwDzENMAsGA1UEAwwEdDEwNKQRMA8xDTALBgNVBAMM
-+BHQxMDWkETAPMQ0wCwYDVQQDDAR0MTA2pBEwDzENMAsGA1UEAwwEdDEwN6QRMA8x
-+DTALBgNVBAMMBHQxMDikETAPMQ0wCwYDVQQDDAR0MTA5pBEwDzENMAsGA1UEAwwE
-+dDExMKQRMA8xDTALBgNVBAMMBHQxMTGkETAPMQ0wCwYDVQQDDAR0MTEypBEwDzEN
-+MAsGA1UEAwwEdDExM6QRMA8xDTALBgNVBAMMBHQxMTSkETAPMQ0wCwYDVQQDDAR0
-+MTE1pBEwDzENMAsGA1UEAwwEdDExNqQRMA8xDTALBgNVBAMMBHQxMTekETAPMQ0w
-+CwYDVQQDDAR0MTE4pBEwDzENMAsGA1UEAwwEdDExOaQRMA8xDTALBgNVBAMMBHQx
-+MjCkETAPMQ0wCwYDVQQDDAR0MTIxpBEwDzENMAsGA1UEAwwEdDEyMqQRMA8xDTAL
-+BgNVBAMMBHQxMjOkETAPMQ0wCwYDVQQDDAR0MTI0pBEwDzENMAsGA1UEAwwEdDEy
-+NaQRMA8xDTALBgNVBAMMBHQxMjakETAPMQ0wCwYDVQQDDAR0MTI3pBEwDzENMAsG
-+A1UEAwwEdDEyOKQRMA8xDTALBgNVBAMMBHQxMjmkETAPMQ0wCwYDVQQDDAR0MTMw
-+pBEwDzENMAsGA1UEAwwEdDEzMaQRMA8xDTALBgNVBAMMBHQxMzKkETAPMQ0wCwYD
-+VQQDDAR0MTMzpBEwDzENMAsGA1UEAwwEdDEzNKQRMA8xDTALBgNVBAMMBHQxMzWk
-+ETAPMQ0wCwYDVQQDDAR0MTM2pBEwDzENMAsGA1UEAwwEdDEzN6QRMA8xDTALBgNV
-+BAMMBHQxMzikETAPMQ0wCwYDVQQDDAR0MTM5pBEwDzENMAsGA1UEAwwEdDE0MKQR
-+MA8xDTALBgNVBAMMBHQxNDGkETAPMQ0wCwYDVQQDDAR0MTQypBEwDzENMAsGA1UE
-+AwwEdDE0M6QRMA8xDTALBgNVBAMMBHQxNDSkETAPMQ0wCwYDVQQDDAR0MTQ1pBEw
-+DzENMAsGA1UEAwwEdDE0NqQRMA8xDTALBgNVBAMMBHQxNDekETAPMQ0wCwYDVQQD
-+DAR0MTQ4pBEwDzENMAsGA1UEAwwEdDE0OaQRMA8xDTALBgNVBAMMBHQxNTCkETAP
-+MQ0wCwYDVQQDDAR0MTUxpBEwDzENMAsGA1UEAwwEdDE1MqQRMA8xDTALBgNVBAMM
-+BHQxNTOkETAPMQ0wCwYDVQQDDAR0MTU0pBEwDzENMAsGA1UEAwwEdDE1NaQRMA8x
-+DTALBgNVBAMMBHQxNTakETAPMQ0wCwYDVQQDDAR0MTU3pBEwDzENMAsGA1UEAwwE
-+dDE1OKQRMA8xDTALBgNVBAMMBHQxNTmkETAPMQ0wCwYDVQQDDAR0MTYwpBEwDzEN
-+MAsGA1UEAwwEdDE2MaQRMA8xDTALBgNVBAMMBHQxNjKkETAPMQ0wCwYDVQQDDAR0
-+MTYzpBEwDzENMAsGA1UEAwwEdDE2NKQRMA8xDTALBgNVBAMMBHQxNjWkETAPMQ0w
-+CwYDVQQDDAR0MTY2pBEwDzENMAsGA1UEAwwEdDE2N6QRMA8xDTALBgNVBAMMBHQx
-+NjikETAPMQ0wCwYDVQQDDAR0MTY5pBEwDzENMAsGA1UEAwwEdDE3MKQRMA8xDTAL
-+BgNVBAMMBHQxNzGkETAPMQ0wCwYDVQQDDAR0MTcypBEwDzENMAsGA1UEAwwEdDE3
-+M6QRMA8xDTALBgNVBAMMBHQxNzSkETAPMQ0wCwYDVQQDDAR0MTc1pBEwDzENMAsG
-+A1UEAwwEdDE3NqQRMA8xDTALBgNVBAMMBHQxNzekETAPMQ0wCwYDVQQDDAR0MTc4
-+pBEwDzENMAsGA1UEAwwEdDE3OaQRMA8xDTALBgNVBAMMBHQxODCkETAPMQ0wCwYD
-+VQQDDAR0MTgxpBEwDzENMAsGA1UEAwwEdDE4MqQRMA8xDTALBgNVBAMMBHQxODOk
-+ETAPMQ0wCwYDVQQDDAR0MTg0pBEwDzENMAsGA1UEAwwEdDE4NaQRMA8xDTALBgNV
-+BAMMBHQxODakETAPMQ0wCwYDVQQDDAR0MTg3pBEwDzENMAsGA1UEAwwEdDE4OKQR
-+MA8xDTALBgNVBAMMBHQxODmkETAPMQ0wCwYDVQQDDAR0MTkwpBEwDzENMAsGA1UE
-+AwwEdDE5MaQRMA8xDTALBgNVBAMMBHQxOTKkETAPMQ0wCwYDVQQDDAR0MTkzpBEw
-+DzENMAsGA1UEAwwEdDE5NKQRMA8xDTALBgNVBAMMBHQxOTWkETAPMQ0wCwYDVQQD
-+DAR0MTk2pBEwDzENMAsGA1UEAwwEdDE5N6QRMA8xDTALBgNVBAMMBHQxOTikETAP
-+MQ0wCwYDVQQDDAR0MTk5pBEwDzENMAsGA1UEAwwEdDIwMKQRMA8xDTALBgNVBAMM
-+BHQyMDGkETAPMQ0wCwYDVQQDDAR0MjAypBEwDzENMAsGA1UEAwwEdDIwM6QRMA8x
-+DTALBgNVBAMMBHQyMDSkETAPMQ0wCwYDVQQDDAR0MjA1pBEwDzENMAsGA1UEAwwE
-+dDIwNqQRMA8xDTALBgNVBAMMBHQyMDekETAPMQ0wCwYDVQQDDAR0MjA4pBEwDzEN
-+MAsGA1UEAwwEdDIwOaQRMA8xDTALBgNVBAMMBHQyMTCkETAPMQ0wCwYDVQQDDAR0
-+MjExpBEwDzENMAsGA1UEAwwEdDIxMqQRMA8xDTALBgNVBAMMBHQyMTOkETAPMQ0w
-+CwYDVQQDDAR0MjE0pBEwDzENMAsGA1UEAwwEdDIxNaQRMA8xDTALBgNVBAMMBHQy
-+MTakETAPMQ0wCwYDVQQDDAR0MjE3pBEwDzENMAsGA1UEAwwEdDIxOKQRMA8xDTAL
-+BgNVBAMMBHQyMTmkETAPMQ0wCwYDVQQDDAR0MjIwpBEwDzENMAsGA1UEAwwEdDIy
-+MaQRMA8xDTALBgNVBAMMBHQyMjKkETAPMQ0wCwYDVQQDDAR0MjIzpBEwDzENMAsG
-+A1UEAwwEdDIyNKQRMA8xDTALBgNVBAMMBHQyMjWkETAPMQ0wCwYDVQQDDAR0MjI2
-+pBEwDzENMAsGA1UEAwwEdDIyN6QRMA8xDTALBgNVBAMMBHQyMjikETAPMQ0wCwYD
-+VQQDDAR0MjI5pBEwDzENMAsGA1UEAwwEdDIzMKQRMA8xDTALBgNVBAMMBHQyMzGk
-+ETAPMQ0wCwYDVQQDDAR0MjMypBEwDzENMAsGA1UEAwwEdDIzM6QRMA8xDTALBgNV
-+BAMMBHQyMzSkETAPMQ0wCwYDVQQDDAR0MjM1pBEwDzENMAsGA1UEAwwEdDIzNqQR
-+MA8xDTALBgNVBAMMBHQyMzekETAPMQ0wCwYDVQQDDAR0MjM4pBEwDzENMAsGA1UE
-+AwwEdDIzOaQRMA8xDTALBgNVBAMMBHQyNDCkETAPMQ0wCwYDVQQDDAR0MjQxpBEw
-+DzENMAsGA1UEAwwEdDI0MqQRMA8xDTALBgNVBAMMBHQyNDOkETAPMQ0wCwYDVQQD
-+DAR0MjQ0pBEwDzENMAsGA1UEAwwEdDI0NaQRMA8xDTALBgNVBAMMBHQyNDakETAP
-+MQ0wCwYDVQQDDAR0MjQ3pBEwDzENMAsGA1UEAwwEdDI0OKQRMA8xDTALBgNVBAMM
-+BHQyNDmkETAPMQ0wCwYDVQQDDAR0MjUwpBEwDzENMAsGA1UEAwwEdDI1MaQRMA8x
-+DTALBgNVBAMMBHQyNTKkETAPMQ0wCwYDVQQDDAR0MjUzpBEwDzENMAsGA1UEAwwE
-+dDI1NKQRMA8xDTALBgNVBAMMBHQyNTWkETAPMQ0wCwYDVQQDDAR0MjU2pBEwDzEN
-+MAsGA1UEAwwEdDI1N6QRMA8xDTALBgNVBAMMBHQyNTikETAPMQ0wCwYDVQQDDAR0
-+MjU5pBEwDzENMAsGA1UEAwwEdDI2MKQRMA8xDTALBgNVBAMMBHQyNjGkETAPMQ0w
-+CwYDVQQDDAR0MjYypBEwDzENMAsGA1UEAwwEdDI2M6QRMA8xDTALBgNVBAMMBHQy
-+NjSkETAPMQ0wCwYDVQQDDAR0MjY1pBEwDzENMAsGA1UEAwwEdDI2NqQRMA8xDTAL
-+BgNVBAMMBHQyNjekETAPMQ0wCwYDVQQDDAR0MjY4pBEwDzENMAsGA1UEAwwEdDI2
-+OaQRMA8xDTALBgNVBAMMBHQyNzCkETAPMQ0wCwYDVQQDDAR0MjcxpBEwDzENMAsG
-+A1UEAwwEdDI3MqQRMA8xDTALBgNVBAMMBHQyNzOkETAPMQ0wCwYDVQQDDAR0Mjc0
-+pBEwDzENMAsGA1UEAwwEdDI3NaQRMA8xDTALBgNVBAMMBHQyNzakETAPMQ0wCwYD
-+VQQDDAR0Mjc3pBEwDzENMAsGA1UEAwwEdDI3OKQRMA8xDTALBgNVBAMMBHQyNzmk
-+ETAPMQ0wCwYDVQQDDAR0MjgwpBEwDzENMAsGA1UEAwwEdDI4MaQRMA8xDTALBgNV
-+BAMMBHQyODKkETAPMQ0wCwYDVQQDDAR0MjgzpBEwDzENMAsGA1UEAwwEdDI4NKQR
-+MA8xDTALBgNVBAMMBHQyODWkETAPMQ0wCwYDVQQDDAR0Mjg2pBEwDzENMAsGA1UE
-+AwwEdDI4N6QRMA8xDTALBgNVBAMMBHQyODikETAPMQ0wCwYDVQQDDAR0Mjg5pBEw
-+DzENMAsGA1UEAwwEdDI5MKQRMA8xDTALBgNVBAMMBHQyOTGkETAPMQ0wCwYDVQQD
-+DAR0MjkypBEwDzENMAsGA1UEAwwEdDI5M6QRMA8xDTALBgNVBAMMBHQyOTSkETAP
-+MQ0wCwYDVQQDDAR0Mjk1pBEwDzENMAsGA1UEAwwEdDI5NqQRMA8xDTALBgNVBAMM
-+BHQyOTekETAPMQ0wCwYDVQQDDAR0Mjk4pBEwDzENMAsGA1UEAwwEdDI5OaQRMA8x
-+DTALBgNVBAMMBHQzMDCkETAPMQ0wCwYDVQQDDAR0MzAxpBEwDzENMAsGA1UEAwwE
-+dDMwMqQRMA8xDTALBgNVBAMMBHQzMDOkETAPMQ0wCwYDVQQDDAR0MzA0pBEwDzEN
-+MAsGA1UEAwwEdDMwNaQRMA8xDTALBgNVBAMMBHQzMDakETAPMQ0wCwYDVQQDDAR0
-+MzA3pBEwDzENMAsGA1UEAwwEdDMwOKQRMA8xDTALBgNVBAMMBHQzMDmkETAPMQ0w
-+CwYDVQQDDAR0MzEwpBEwDzENMAsGA1UEAwwEdDMxMaQRMA8xDTALBgNVBAMMBHQz
-+MTKkETAPMQ0wCwYDVQQDDAR0MzEzpBEwDzENMAsGA1UEAwwEdDMxNKQRMA8xDTAL
-+BgNVBAMMBHQzMTWkETAPMQ0wCwYDVQQDDAR0MzE2pBEwDzENMAsGA1UEAwwEdDMx
-+N6QRMA8xDTALBgNVBAMMBHQzMTikETAPMQ0wCwYDVQQDDAR0MzE5pBEwDzENMAsG
-+A1UEAwwEdDMyMKQRMA8xDTALBgNVBAMMBHQzMjGkETAPMQ0wCwYDVQQDDAR0MzIy
-+pBEwDzENMAsGA1UEAwwEdDMyM6QRMA8xDTALBgNVBAMMBHQzMjSkETAPMQ0wCwYD
-+VQQDDAR0MzI1pBEwDzENMAsGA1UEAwwEdDMyNqQRMA8xDTALBgNVBAMMBHQzMjek
-+ETAPMQ0wCwYDVQQDDAR0MzI4pBEwDzENMAsGA1UEAwwEdDMyOaQRMA8xDTALBgNV
-+BAMMBHQzMzCkETAPMQ0wCwYDVQQDDAR0MzMxpBEwDzENMAsGA1UEAwwEdDMzMqQR
-+MA8xDTALBgNVBAMMBHQzMzOkETAPMQ0wCwYDVQQDDAR0MzM0pBEwDzENMAsGA1UE
-+AwwEdDMzNaQRMA8xDTALBgNVBAMMBHQzMzakETAPMQ0wCwYDVQQDDAR0MzM3pBEw
-+DzENMAsGA1UEAwwEdDMzOKQRMA8xDTALBgNVBAMMBHQzMzmkETAPMQ0wCwYDVQQD
-+DAR0MzQwpBEwDzENMAsGA1UEAwwEdDM0MYYNaHR0cDovL3Rlc3QvMIYNaHR0cDov
-+L3Rlc3QvMYYNaHR0cDovL3Rlc3QvMoYNaHR0cDovL3Rlc3QvM4YNaHR0cDovL3Rl
-+c3QvNIYNaHR0cDovL3Rlc3QvNYYNaHR0cDovL3Rlc3QvNoYNaHR0cDovL3Rlc3Qv
-+N4YNaHR0cDovL3Rlc3QvOIYNaHR0cDovL3Rlc3QvOYYOaHR0cDovL3Rlc3QvMTCG
-+Dmh0dHA6Ly90ZXN0LzExhg5odHRwOi8vdGVzdC8xMoYOaHR0cDovL3Rlc3QvMTOG
-+Dmh0dHA6Ly90ZXN0LzE0hg5odHRwOi8vdGVzdC8xNYYOaHR0cDovL3Rlc3QvMTaG
-+Dmh0dHA6Ly90ZXN0LzE3hg5odHRwOi8vdGVzdC8xOIYOaHR0cDovL3Rlc3QvMTmG
-+Dmh0dHA6Ly90ZXN0LzIwhg5odHRwOi8vdGVzdC8yMYYOaHR0cDovL3Rlc3QvMjKG
-+Dmh0dHA6Ly90ZXN0LzIzhg5odHRwOi8vdGVzdC8yNIYOaHR0cDovL3Rlc3QvMjWG
-+Dmh0dHA6Ly90ZXN0LzI2hg5odHRwOi8vdGVzdC8yN4YOaHR0cDovL3Rlc3QvMjiG
-+Dmh0dHA6Ly90ZXN0LzI5hg5odHRwOi8vdGVzdC8zMIYOaHR0cDovL3Rlc3QvMzGG
-+Dmh0dHA6Ly90ZXN0LzMyhg5odHRwOi8vdGVzdC8zM4YOaHR0cDovL3Rlc3QvMzSG
-+Dmh0dHA6Ly90ZXN0LzM1hg5odHRwOi8vdGVzdC8zNoYOaHR0cDovL3Rlc3QvMzeG
-+Dmh0dHA6Ly90ZXN0LzM4hg5odHRwOi8vdGVzdC8zOYYOaHR0cDovL3Rlc3QvNDCG
-+Dmh0dHA6Ly90ZXN0LzQxhg5odHRwOi8vdGVzdC80MoYOaHR0cDovL3Rlc3QvNDOG
-+Dmh0dHA6Ly90ZXN0LzQ0hg5odHRwOi8vdGVzdC80NYYOaHR0cDovL3Rlc3QvNDaG
-+Dmh0dHA6Ly90ZXN0LzQ3hg5odHRwOi8vdGVzdC80OIYOaHR0cDovL3Rlc3QvNDmG
-+Dmh0dHA6Ly90ZXN0LzUwhg5odHRwOi8vdGVzdC81MYYOaHR0cDovL3Rlc3QvNTKG
-+Dmh0dHA6Ly90ZXN0LzUzhg5odHRwOi8vdGVzdC81NIYOaHR0cDovL3Rlc3QvNTWG
-+Dmh0dHA6Ly90ZXN0LzU2hg5odHRwOi8vdGVzdC81N4YOaHR0cDovL3Rlc3QvNTiG
-+Dmh0dHA6Ly90ZXN0LzU5hg5odHRwOi8vdGVzdC82MIYOaHR0cDovL3Rlc3QvNjGG
-+Dmh0dHA6Ly90ZXN0LzYyhg5odHRwOi8vdGVzdC82M4YOaHR0cDovL3Rlc3QvNjSG
-+Dmh0dHA6Ly90ZXN0LzY1hg5odHRwOi8vdGVzdC82NoYOaHR0cDovL3Rlc3QvNjeG
-+Dmh0dHA6Ly90ZXN0LzY4hg5odHRwOi8vdGVzdC82OYYOaHR0cDovL3Rlc3QvNzCG
-+Dmh0dHA6Ly90ZXN0Lzcxhg5odHRwOi8vdGVzdC83MoYOaHR0cDovL3Rlc3QvNzOG
-+Dmh0dHA6Ly90ZXN0Lzc0hg5odHRwOi8vdGVzdC83NYYOaHR0cDovL3Rlc3QvNzaG
-+Dmh0dHA6Ly90ZXN0Lzc3hg5odHRwOi8vdGVzdC83OIYOaHR0cDovL3Rlc3QvNzmG
-+Dmh0dHA6Ly90ZXN0Lzgwhg5odHRwOi8vdGVzdC84MYYOaHR0cDovL3Rlc3QvODKG
-+Dmh0dHA6Ly90ZXN0Lzgzhg5odHRwOi8vdGVzdC84NIYOaHR0cDovL3Rlc3QvODWG
-+Dmh0dHA6Ly90ZXN0Lzg2hg5odHRwOi8vdGVzdC84N4YOaHR0cDovL3Rlc3QvODiG
-+Dmh0dHA6Ly90ZXN0Lzg5hg5odHRwOi8vdGVzdC85MIYOaHR0cDovL3Rlc3QvOTGG
-+Dmh0dHA6Ly90ZXN0Lzkyhg5odHRwOi8vdGVzdC85M4YOaHR0cDovL3Rlc3QvOTSG
-+Dmh0dHA6Ly90ZXN0Lzk1hg5odHRwOi8vdGVzdC85NoYOaHR0cDovL3Rlc3QvOTeG
-+Dmh0dHA6Ly90ZXN0Lzk4hg5odHRwOi8vdGVzdC85OYYPaHR0cDovL3Rlc3QvMTAw
-+hg9odHRwOi8vdGVzdC8xMDGGD2h0dHA6Ly90ZXN0LzEwMoYPaHR0cDovL3Rlc3Qv
-+MTAzhg9odHRwOi8vdGVzdC8xMDSGD2h0dHA6Ly90ZXN0LzEwNYYPaHR0cDovL3Rl
-+c3QvMTA2hg9odHRwOi8vdGVzdC8xMDeGD2h0dHA6Ly90ZXN0LzEwOIYPaHR0cDov
-+L3Rlc3QvMTA5hg9odHRwOi8vdGVzdC8xMTCGD2h0dHA6Ly90ZXN0LzExMYYPaHR0
-+cDovL3Rlc3QvMTEyhg9odHRwOi8vdGVzdC8xMTOGD2h0dHA6Ly90ZXN0LzExNIYP
-+aHR0cDovL3Rlc3QvMTE1hg9odHRwOi8vdGVzdC8xMTaGD2h0dHA6Ly90ZXN0LzEx
-+N4YPaHR0cDovL3Rlc3QvMTE4hg9odHRwOi8vdGVzdC8xMTmGD2h0dHA6Ly90ZXN0
-+LzEyMIYPaHR0cDovL3Rlc3QvMTIxhg9odHRwOi8vdGVzdC8xMjKGD2h0dHA6Ly90
-+ZXN0LzEyM4YPaHR0cDovL3Rlc3QvMTI0hg9odHRwOi8vdGVzdC8xMjWGD2h0dHA6
-+Ly90ZXN0LzEyNoYPaHR0cDovL3Rlc3QvMTI3hg9odHRwOi8vdGVzdC8xMjiGD2h0
-+dHA6Ly90ZXN0LzEyOYYPaHR0cDovL3Rlc3QvMTMwhg9odHRwOi8vdGVzdC8xMzGG
-+D2h0dHA6Ly90ZXN0LzEzMoYPaHR0cDovL3Rlc3QvMTMzhg9odHRwOi8vdGVzdC8x
-+MzSGD2h0dHA6Ly90ZXN0LzEzNYYPaHR0cDovL3Rlc3QvMTM2hg9odHRwOi8vdGVz
-+dC8xMzeGD2h0dHA6Ly90ZXN0LzEzOIYPaHR0cDovL3Rlc3QvMTM5hg9odHRwOi8v
-+dGVzdC8xNDCGD2h0dHA6Ly90ZXN0LzE0MYYPaHR0cDovL3Rlc3QvMTQyhg9odHRw
-+Oi8vdGVzdC8xNDOGD2h0dHA6Ly90ZXN0LzE0NIYPaHR0cDovL3Rlc3QvMTQ1hg9o
-+dHRwOi8vdGVzdC8xNDaGD2h0dHA6Ly90ZXN0LzE0N4YPaHR0cDovL3Rlc3QvMTQ4
-+hg9odHRwOi8vdGVzdC8xNDmGD2h0dHA6Ly90ZXN0LzE1MIYPaHR0cDovL3Rlc3Qv
-+MTUxhg9odHRwOi8vdGVzdC8xNTKGD2h0dHA6Ly90ZXN0LzE1M4YPaHR0cDovL3Rl
-+c3QvMTU0hg9odHRwOi8vdGVzdC8xNTWGD2h0dHA6Ly90ZXN0LzE1NoYPaHR0cDov
-+L3Rlc3QvMTU3hg9odHRwOi8vdGVzdC8xNTiGD2h0dHA6Ly90ZXN0LzE1OYYPaHR0
-+cDovL3Rlc3QvMTYwhg9odHRwOi8vdGVzdC8xNjGGD2h0dHA6Ly90ZXN0LzE2MoYP
-+aHR0cDovL3Rlc3QvMTYzhg9odHRwOi8vdGVzdC8xNjSGD2h0dHA6Ly90ZXN0LzE2
-+NYYPaHR0cDovL3Rlc3QvMTY2hg9odHRwOi8vdGVzdC8xNjeGD2h0dHA6Ly90ZXN0
-+LzE2OIYPaHR0cDovL3Rlc3QvMTY5hg9odHRwOi8vdGVzdC8xNzCGD2h0dHA6Ly90
-+ZXN0LzE3MYYPaHR0cDovL3Rlc3QvMTcyhg9odHRwOi8vdGVzdC8xNzOGD2h0dHA6
-+Ly90ZXN0LzE3NIYPaHR0cDovL3Rlc3QvMTc1hg9odHRwOi8vdGVzdC8xNzaGD2h0
-+dHA6Ly90ZXN0LzE3N4YPaHR0cDovL3Rlc3QvMTc4hg9odHRwOi8vdGVzdC8xNzmG
-+D2h0dHA6Ly90ZXN0LzE4MIYPaHR0cDovL3Rlc3QvMTgxhg9odHRwOi8vdGVzdC8x
-+ODKGD2h0dHA6Ly90ZXN0LzE4M4YPaHR0cDovL3Rlc3QvMTg0hg9odHRwOi8vdGVz
-+dC8xODWGD2h0dHA6Ly90ZXN0LzE4NoYPaHR0cDovL3Rlc3QvMTg3hg9odHRwOi8v
-+dGVzdC8xODiGD2h0dHA6Ly90ZXN0LzE4OYYPaHR0cDovL3Rlc3QvMTkwhg9odHRw
-+Oi8vdGVzdC8xOTGGD2h0dHA6Ly90ZXN0LzE5MoYPaHR0cDovL3Rlc3QvMTkzhg9o
-+dHRwOi8vdGVzdC8xOTSGD2h0dHA6Ly90ZXN0LzE5NYYPaHR0cDovL3Rlc3QvMTk2
-+hg9odHRwOi8vdGVzdC8xOTeGD2h0dHA6Ly90ZXN0LzE5OIYPaHR0cDovL3Rlc3Qv
-+MTk5hg9odHRwOi8vdGVzdC8yMDCGD2h0dHA6Ly90ZXN0LzIwMYYPaHR0cDovL3Rl
-+c3QvMjAyhg9odHRwOi8vdGVzdC8yMDOGD2h0dHA6Ly90ZXN0LzIwNIYPaHR0cDov
-+L3Rlc3QvMjA1hg9odHRwOi8vdGVzdC8yMDaGD2h0dHA6Ly90ZXN0LzIwN4YPaHR0
-+cDovL3Rlc3QvMjA4hg9odHRwOi8vdGVzdC8yMDmGD2h0dHA6Ly90ZXN0LzIxMIYP
-+aHR0cDovL3Rlc3QvMjExhg9odHRwOi8vdGVzdC8yMTKGD2h0dHA6Ly90ZXN0LzIx
-+M4YPaHR0cDovL3Rlc3QvMjE0hg9odHRwOi8vdGVzdC8yMTWGD2h0dHA6Ly90ZXN0
-+LzIxNoYPaHR0cDovL3Rlc3QvMjE3hg9odHRwOi8vdGVzdC8yMTiGD2h0dHA6Ly90
-+ZXN0LzIxOYYPaHR0cDovL3Rlc3QvMjIwhg9odHRwOi8vdGVzdC8yMjGGD2h0dHA6
-+Ly90ZXN0LzIyMoYPaHR0cDovL3Rlc3QvMjIzhg9odHRwOi8vdGVzdC8yMjSGD2h0
-+dHA6Ly90ZXN0LzIyNYYPaHR0cDovL3Rlc3QvMjI2hg9odHRwOi8vdGVzdC8yMjeG
-+D2h0dHA6Ly90ZXN0LzIyOIYPaHR0cDovL3Rlc3QvMjI5hg9odHRwOi8vdGVzdC8y
-+MzCGD2h0dHA6Ly90ZXN0LzIzMYYPaHR0cDovL3Rlc3QvMjMyhg9odHRwOi8vdGVz
-+dC8yMzOGD2h0dHA6Ly90ZXN0LzIzNIYPaHR0cDovL3Rlc3QvMjM1hg9odHRwOi8v
-+dGVzdC8yMzaGD2h0dHA6Ly90ZXN0LzIzN4YPaHR0cDovL3Rlc3QvMjM4hg9odHRw
-+Oi8vdGVzdC8yMzmGD2h0dHA6Ly90ZXN0LzI0MIYPaHR0cDovL3Rlc3QvMjQxhg9o
-+dHRwOi8vdGVzdC8yNDKGD2h0dHA6Ly90ZXN0LzI0M4YPaHR0cDovL3Rlc3QvMjQ0
-+hg9odHRwOi8vdGVzdC8yNDWGD2h0dHA6Ly90ZXN0LzI0NoYPaHR0cDovL3Rlc3Qv
-+MjQ3hg9odHRwOi8vdGVzdC8yNDiGD2h0dHA6Ly90ZXN0LzI0OYYPaHR0cDovL3Rl
-+c3QvMjUwhg9odHRwOi8vdGVzdC8yNTGGD2h0dHA6Ly90ZXN0LzI1MoYPaHR0cDov
-+L3Rlc3QvMjUzhg9odHRwOi8vdGVzdC8yNTSGD2h0dHA6Ly90ZXN0LzI1NYYPaHR0
-+cDovL3Rlc3QvMjU2hg9odHRwOi8vdGVzdC8yNTeGD2h0dHA6Ly90ZXN0LzI1OIYP
-+aHR0cDovL3Rlc3QvMjU5hg9odHRwOi8vdGVzdC8yNjCGD2h0dHA6Ly90ZXN0LzI2
-+MYYPaHR0cDovL3Rlc3QvMjYyhg9odHRwOi8vdGVzdC8yNjOGD2h0dHA6Ly90ZXN0
-+LzI2NIYPaHR0cDovL3Rlc3QvMjY1hg9odHRwOi8vdGVzdC8yNjaGD2h0dHA6Ly90
-+ZXN0LzI2N4YPaHR0cDovL3Rlc3QvMjY4hg9odHRwOi8vdGVzdC8yNjmGD2h0dHA6
-+Ly90ZXN0LzI3MIYPaHR0cDovL3Rlc3QvMjcxhg9odHRwOi8vdGVzdC8yNzKGD2h0
-+dHA6Ly90ZXN0LzI3M4YPaHR0cDovL3Rlc3QvMjc0hg9odHRwOi8vdGVzdC8yNzWG
-+D2h0dHA6Ly90ZXN0LzI3NoYPaHR0cDovL3Rlc3QvMjc3hg9odHRwOi8vdGVzdC8y
-+NziGD2h0dHA6Ly90ZXN0LzI3OYYPaHR0cDovL3Rlc3QvMjgwhg9odHRwOi8vdGVz
-+dC8yODGGD2h0dHA6Ly90ZXN0LzI4MoYPaHR0cDovL3Rlc3QvMjgzhg9odHRwOi8v
-+dGVzdC8yODSGD2h0dHA6Ly90ZXN0LzI4NYYPaHR0cDovL3Rlc3QvMjg2hg9odHRw
-+Oi8vdGVzdC8yODeGD2h0dHA6Ly90ZXN0LzI4OIYPaHR0cDovL3Rlc3QvMjg5hg9o
-+dHRwOi8vdGVzdC8yOTCGD2h0dHA6Ly90ZXN0LzI5MYYPaHR0cDovL3Rlc3QvMjky
-+hg9odHRwOi8vdGVzdC8yOTOGD2h0dHA6Ly90ZXN0LzI5NIYPaHR0cDovL3Rlc3Qv
-+Mjk1hg9odHRwOi8vdGVzdC8yOTaGD2h0dHA6Ly90ZXN0LzI5N4YPaHR0cDovL3Rl
-+c3QvMjk4hg9odHRwOi8vdGVzdC8yOTmGD2h0dHA6Ly90ZXN0LzMwMIYPaHR0cDov
-+L3Rlc3QvMzAxhg9odHRwOi8vdGVzdC8zMDKGD2h0dHA6Ly90ZXN0LzMwM4YPaHR0
-+cDovL3Rlc3QvMzA0hg9odHRwOi8vdGVzdC8zMDWGD2h0dHA6Ly90ZXN0LzMwNoYP
-+aHR0cDovL3Rlc3QvMzA3hg9odHRwOi8vdGVzdC8zMDiGD2h0dHA6Ly90ZXN0LzMw
-+OYYPaHR0cDovL3Rlc3QvMzEwhg9odHRwOi8vdGVzdC8zMTGGD2h0dHA6Ly90ZXN0
-+LzMxMoYPaHR0cDovL3Rlc3QvMzEzhg9odHRwOi8vdGVzdC8zMTSGD2h0dHA6Ly90
-+ZXN0LzMxNYYPaHR0cDovL3Rlc3QvMzE2hg9odHRwOi8vdGVzdC8zMTeGD2h0dHA6
-+Ly90ZXN0LzMxOIYPaHR0cDovL3Rlc3QvMzE5hg9odHRwOi8vdGVzdC8zMjCGD2h0
-+dHA6Ly90ZXN0LzMyMYYPaHR0cDovL3Rlc3QvMzIyhg9odHRwOi8vdGVzdC8zMjOG
-+D2h0dHA6Ly90ZXN0LzMyNIYPaHR0cDovL3Rlc3QvMzI1hg9odHRwOi8vdGVzdC8z
-+MjaGD2h0dHA6Ly90ZXN0LzMyN4YPaHR0cDovL3Rlc3QvMzI4hg9odHRwOi8vdGVz
-+dC8zMjmGD2h0dHA6Ly90ZXN0LzMzMIYPaHR0cDovL3Rlc3QvMzMxhg9odHRwOi8v
-+dGVzdC8zMzKGD2h0dHA6Ly90ZXN0LzMzM4YPaHR0cDovL3Rlc3QvMzM0hg9odHRw
-+Oi8vdGVzdC8zMzWGD2h0dHA6Ly90ZXN0LzMzNoYPaHR0cDovL3Rlc3QvMzM3hg9o
-+dHRwOi8vdGVzdC8zMziGD2h0dHA6Ly90ZXN0LzMzOYYPaHR0cDovL3Rlc3QvMzQw
-+hg9odHRwOi8vdGVzdC8zNDGGD2h0dHA6Ly90ZXN0LzM0MoYPaHR0cDovL3Rlc3Qv
-+MzQzhg9odHRwOi8vdGVzdC8zNDSGD2h0dHA6Ly90ZXN0LzM0NYYPaHR0cDovL3Rl
-+c3QvMzQ2hg9odHRwOi8vdGVzdC8zNDeGD2h0dHA6Ly90ZXN0LzM0OIYPaHR0cDov
-+L3Rlc3QvMzQ5hg9odHRwOi8vdGVzdC8zNTCGD2h0dHA6Ly90ZXN0LzM1MYYPaHR0
-+cDovL3Rlc3QvMzUyhg9odHRwOi8vdGVzdC8zNTOGD2h0dHA6Ly90ZXN0LzM1NIYP
-+aHR0cDovL3Rlc3QvMzU1hg9odHRwOi8vdGVzdC8zNTaGD2h0dHA6Ly90ZXN0LzM1
-+N4YPaHR0cDovL3Rlc3QvMzU4hg9odHRwOi8vdGVzdC8zNTmGD2h0dHA6Ly90ZXN0
-+LzM2MIYPaHR0cDovL3Rlc3QvMzYxhg9odHRwOi8vdGVzdC8zNjKGD2h0dHA6Ly90
-+ZXN0LzM2M4YPaHR0cDovL3Rlc3QvMzY0hg9odHRwOi8vdGVzdC8zNjWGD2h0dHA6
-+Ly90ZXN0LzM2NoYPaHR0cDovL3Rlc3QvMzY3hg9odHRwOi8vdGVzdC8zNjiGD2h0
-+dHA6Ly90ZXN0LzM2OYYPaHR0cDovL3Rlc3QvMzcwhg9odHRwOi8vdGVzdC8zNzGG
-+D2h0dHA6Ly90ZXN0LzM3MoYPaHR0cDovL3Rlc3QvMzczhg9odHRwOi8vdGVzdC8z
-+NzSGD2h0dHA6Ly90ZXN0LzM3NYYPaHR0cDovL3Rlc3QvMzc2hg9odHRwOi8vdGVz
-+dC8zNzeGD2h0dHA6Ly90ZXN0LzM3OIYPaHR0cDovL3Rlc3QvMzc5hg9odHRwOi8v
-+dGVzdC8zODCGD2h0dHA6Ly90ZXN0LzM4MYYPaHR0cDovL3Rlc3QvMzgyhg9odHRw
-+Oi8vdGVzdC8zODOGD2h0dHA6Ly90ZXN0LzM4NIYPaHR0cDovL3Rlc3QvMzg1hg9o
-+dHRwOi8vdGVzdC8zODaGD2h0dHA6Ly90ZXN0LzM4N4YPaHR0cDovL3Rlc3QvMzg4
-+hg9odHRwOi8vdGVzdC8zODmGD2h0dHA6Ly90ZXN0LzM5MIYPaHR0cDovL3Rlc3Qv
-+Mzkxhg9odHRwOi8vdGVzdC8zOTKGD2h0dHA6Ly90ZXN0LzM5M4YPaHR0cDovL3Rl
-+c3QvMzk0hg9odHRwOi8vdGVzdC8zOTWGD2h0dHA6Ly90ZXN0LzM5NoYPaHR0cDov
-+L3Rlc3QvMzk3hg9odHRwOi8vdGVzdC8zOTiGD2h0dHA6Ly90ZXN0LzM5OYYPaHR0
-+cDovL3Rlc3QvNDAwhg9odHRwOi8vdGVzdC80MDGGD2h0dHA6Ly90ZXN0LzQwMoYP
-+aHR0cDovL3Rlc3QvNDAzhg9odHRwOi8vdGVzdC80MDSGD2h0dHA6Ly90ZXN0LzQw
-+NYYPaHR0cDovL3Rlc3QvNDA2hg9odHRwOi8vdGVzdC80MDeGD2h0dHA6Ly90ZXN0
-+LzQwOIYPaHR0cDovL3Rlc3QvNDA5hg9odHRwOi8vdGVzdC80MTCGD2h0dHA6Ly90
-+ZXN0LzQxMYYPaHR0cDovL3Rlc3QvNDEyhg9odHRwOi8vdGVzdC80MTOGD2h0dHA6
-+Ly90ZXN0LzQxNIYPaHR0cDovL3Rlc3QvNDE1hg9odHRwOi8vdGVzdC80MTaGD2h0
-+dHA6Ly90ZXN0LzQxN4YPaHR0cDovL3Rlc3QvNDE4hg9odHRwOi8vdGVzdC80MTmG
-+D2h0dHA6Ly90ZXN0LzQyMIYPaHR0cDovL3Rlc3QvNDIxhg9odHRwOi8vdGVzdC80
-+MjKGD2h0dHA6Ly90ZXN0LzQyM4YPaHR0cDovL3Rlc3QvNDI0hg9odHRwOi8vdGVz
-+dC80MjWGD2h0dHA6Ly90ZXN0LzQyNoYPaHR0cDovL3Rlc3QvNDI3hg9odHRwOi8v
-+dGVzdC80MjiGD2h0dHA6Ly90ZXN0LzQyOYYPaHR0cDovL3Rlc3QvNDMwhg9odHRw
-+Oi8vdGVzdC80MzGGD2h0dHA6Ly90ZXN0LzQzMoYPaHR0cDovL3Rlc3QvNDMzhg9o
-+dHRwOi8vdGVzdC80MzSGD2h0dHA6Ly90ZXN0LzQzNYYPaHR0cDovL3Rlc3QvNDM2
-+hg9odHRwOi8vdGVzdC80MzeGD2h0dHA6Ly90ZXN0LzQzOIYPaHR0cDovL3Rlc3Qv
-+NDM5hg9odHRwOi8vdGVzdC80NDCGD2h0dHA6Ly90ZXN0LzQ0MYYPaHR0cDovL3Rl
-+c3QvNDQyhg9odHRwOi8vdGVzdC80NDOGD2h0dHA6Ly90ZXN0LzQ0NIYPaHR0cDov
-+L3Rlc3QvNDQ1hg9odHRwOi8vdGVzdC80NDaGD2h0dHA6Ly90ZXN0LzQ0N4YPaHR0
-+cDovL3Rlc3QvNDQ4hg9odHRwOi8vdGVzdC80NDmGD2h0dHA6Ly90ZXN0LzQ1MIYP
-+aHR0cDovL3Rlc3QvNDUxhg9odHRwOi8vdGVzdC80NTKGD2h0dHA6Ly90ZXN0LzQ1
-+M4YPaHR0cDovL3Rlc3QvNDU0hg9odHRwOi8vdGVzdC80NTWGD2h0dHA6Ly90ZXN0
-+LzQ1NoYPaHR0cDovL3Rlc3QvNDU3hg9odHRwOi8vdGVzdC80NTiGD2h0dHA6Ly90
-+ZXN0LzQ1OYYPaHR0cDovL3Rlc3QvNDYwhg9odHRwOi8vdGVzdC80NjGGD2h0dHA6
-+Ly90ZXN0LzQ2MoYPaHR0cDovL3Rlc3QvNDYzhg9odHRwOi8vdGVzdC80NjSGD2h0
-+dHA6Ly90ZXN0LzQ2NYYPaHR0cDovL3Rlc3QvNDY2hg9odHRwOi8vdGVzdC80NjeG
-+D2h0dHA6Ly90ZXN0LzQ2OIYPaHR0cDovL3Rlc3QvNDY5hg9odHRwOi8vdGVzdC80
-+NzCGD2h0dHA6Ly90ZXN0LzQ3MYYPaHR0cDovL3Rlc3QvNDcyhg9odHRwOi8vdGVz
-+dC80NzOGD2h0dHA6Ly90ZXN0LzQ3NIYPaHR0cDovL3Rlc3QvNDc1hg9odHRwOi8v
-+dGVzdC80NzaGD2h0dHA6Ly90ZXN0LzQ3N4YPaHR0cDovL3Rlc3QvNDc4hg9odHRw
-+Oi8vdGVzdC80NzmGD2h0dHA6Ly90ZXN0LzQ4MIYPaHR0cDovL3Rlc3QvNDgxhg9o
-+dHRwOi8vdGVzdC80ODKGD2h0dHA6Ly90ZXN0LzQ4M4YPaHR0cDovL3Rlc3QvNDg0
-+hg9odHRwOi8vdGVzdC80ODWGD2h0dHA6Ly90ZXN0LzQ4NoYPaHR0cDovL3Rlc3Qv
-+NDg3hg9odHRwOi8vdGVzdC80ODiGD2h0dHA6Ly90ZXN0LzQ4OYYPaHR0cDovL3Rl
-+c3QvNDkwhg9odHRwOi8vdGVzdC80OTGGD2h0dHA6Ly90ZXN0LzQ5MoYPaHR0cDov
-+L3Rlc3QvNDkzhg9odHRwOi8vdGVzdC80OTSGD2h0dHA6Ly90ZXN0LzQ5NYYPaHR0
-+cDovL3Rlc3QvNDk2hg9odHRwOi8vdGVzdC80OTeGD2h0dHA6Ly90ZXN0LzQ5OIYP
-+aHR0cDovL3Rlc3QvNDk5hg9odHRwOi8vdGVzdC81MDCGD2h0dHA6Ly90ZXN0LzUw
-+MYYPaHR0cDovL3Rlc3QvNTAyhg9odHRwOi8vdGVzdC81MDOGD2h0dHA6Ly90ZXN0
-+LzUwNIYPaHR0cDovL3Rlc3QvNTA1hg9odHRwOi8vdGVzdC81MDaGD2h0dHA6Ly90
-+ZXN0LzUwN4YPaHR0cDovL3Rlc3QvNTA4hg9odHRwOi8vdGVzdC81MDmGD2h0dHA6
-+Ly90ZXN0LzUxMIYPaHR0cDovL3Rlc3QvNTExhg9odHRwOi8vdGVzdC81MTKGD2h0
-+dHA6Ly90ZXN0LzUxM4YPaHR0cDovL3Rlc3QvNTE0hg9odHRwOi8vdGVzdC81MTWG
-+D2h0dHA6Ly90ZXN0LzUxNoYPaHR0cDovL3Rlc3QvNTE3hg9odHRwOi8vdGVzdC81
-+MTiGD2h0dHA6Ly90ZXN0LzUxOYYPaHR0cDovL3Rlc3QvNTIwhg9odHRwOi8vdGVz
-+dC81MjGGD2h0dHA6Ly90ZXN0LzUyMoYPaHR0cDovL3Rlc3QvNTIzhg9odHRwOi8v
-+dGVzdC81MjSGD2h0dHA6Ly90ZXN0LzUyNYYPaHR0cDovL3Rlc3QvNTI2hg9odHRw
-+Oi8vdGVzdC81MjeGD2h0dHA6Ly90ZXN0LzUyOIYPaHR0cDovL3Rlc3QvNTI5hg9o
-+dHRwOi8vdGVzdC81MzCGD2h0dHA6Ly90ZXN0LzUzMYYPaHR0cDovL3Rlc3QvNTMy
-+hg9odHRwOi8vdGVzdC81MzOGD2h0dHA6Ly90ZXN0LzUzNIYPaHR0cDovL3Rlc3Qv
-+NTM1hg9odHRwOi8vdGVzdC81MzaGD2h0dHA6Ly90ZXN0LzUzN4YPaHR0cDovL3Rl
-+c3QvNTM4hg9odHRwOi8vdGVzdC81MzmGD2h0dHA6Ly90ZXN0LzU0MIYPaHR0cDov
-+L3Rlc3QvNTQxhg9odHRwOi8vdGVzdC81NDKGD2h0dHA6Ly90ZXN0LzU0M4YPaHR0
-+cDovL3Rlc3QvNTQ0hg9odHRwOi8vdGVzdC81NDWGD2h0dHA6Ly90ZXN0LzU0NoYP
-+aHR0cDovL3Rlc3QvNTQ3hg9odHRwOi8vdGVzdC81NDiGD2h0dHA6Ly90ZXN0LzU0
-+OYYPaHR0cDovL3Rlc3QvNTUwhg9odHRwOi8vdGVzdC81NTGGD2h0dHA6Ly90ZXN0
-+LzU1MoYPaHR0cDovL3Rlc3QvNTUzhg9odHRwOi8vdGVzdC81NTSGD2h0dHA6Ly90
-+ZXN0LzU1NYYPaHR0cDovL3Rlc3QvNTU2hg9odHRwOi8vdGVzdC81NTeGD2h0dHA6
-+Ly90ZXN0LzU1OIYPaHR0cDovL3Rlc3QvNTU5hg9odHRwOi8vdGVzdC81NjCGD2h0
-+dHA6Ly90ZXN0LzU2MYYPaHR0cDovL3Rlc3QvNTYyhg9odHRwOi8vdGVzdC81NjOG
-+D2h0dHA6Ly90ZXN0LzU2NIYPaHR0cDovL3Rlc3QvNTY1hg9odHRwOi8vdGVzdC81
-+NjaGD2h0dHA6Ly90ZXN0LzU2N4YPaHR0cDovL3Rlc3QvNTY4hg9odHRwOi8vdGVz
-+dC81NjmGD2h0dHA6Ly90ZXN0LzU3MIYPaHR0cDovL3Rlc3QvNTcxhg9odHRwOi8v
-+dGVzdC81NzKGD2h0dHA6Ly90ZXN0LzU3M4YPaHR0cDovL3Rlc3QvNTc0hg9odHRw
-+Oi8vdGVzdC81NzWGD2h0dHA6Ly90ZXN0LzU3NoYPaHR0cDovL3Rlc3QvNTc3hg9o
-+dHRwOi8vdGVzdC81NziGD2h0dHA6Ly90ZXN0LzU3OYYPaHR0cDovL3Rlc3QvNTgw
-+hg9odHRwOi8vdGVzdC81ODGGD2h0dHA6Ly90ZXN0LzU4MoYPaHR0cDovL3Rlc3Qv
-+NTgzhg9odHRwOi8vdGVzdC81ODSGD2h0dHA6Ly90ZXN0LzU4NYYPaHR0cDovL3Rl
-+c3QvNTg2hg9odHRwOi8vdGVzdC81ODeGD2h0dHA6Ly90ZXN0LzU4OIYPaHR0cDov
-+L3Rlc3QvNTg5hg9odHRwOi8vdGVzdC81OTCGD2h0dHA6Ly90ZXN0LzU5MYYPaHR0
-+cDovL3Rlc3QvNTkyhg9odHRwOi8vdGVzdC81OTOGD2h0dHA6Ly90ZXN0LzU5NIYP
-+aHR0cDovL3Rlc3QvNTk1hg9odHRwOi8vdGVzdC81OTaGD2h0dHA6Ly90ZXN0LzU5
-+N4YPaHR0cDovL3Rlc3QvNTk4hg9odHRwOi8vdGVzdC81OTmGD2h0dHA6Ly90ZXN0
-+LzYwMIYPaHR0cDovL3Rlc3QvNjAxhg9odHRwOi8vdGVzdC82MDKGD2h0dHA6Ly90
-+ZXN0LzYwM4YPaHR0cDovL3Rlc3QvNjA0hg9odHRwOi8vdGVzdC82MDWGD2h0dHA6
-+Ly90ZXN0LzYwNoYPaHR0cDovL3Rlc3QvNjA3hg9odHRwOi8vdGVzdC82MDiGD2h0
-+dHA6Ly90ZXN0LzYwOYYPaHR0cDovL3Rlc3QvNjEwhg9odHRwOi8vdGVzdC82MTGG
-+D2h0dHA6Ly90ZXN0LzYxMoYPaHR0cDovL3Rlc3QvNjEzhg9odHRwOi8vdGVzdC82
-+MTSGD2h0dHA6Ly90ZXN0LzYxNYYPaHR0cDovL3Rlc3QvNjE2hg9odHRwOi8vdGVz
-+dC82MTeGD2h0dHA6Ly90ZXN0LzYxOIYPaHR0cDovL3Rlc3QvNjE5hg9odHRwOi8v
-+dGVzdC82MjCGD2h0dHA6Ly90ZXN0LzYyMYYPaHR0cDovL3Rlc3QvNjIyhg9odHRw
-+Oi8vdGVzdC82MjOGD2h0dHA6Ly90ZXN0LzYyNIYPaHR0cDovL3Rlc3QvNjI1hg9o
-+dHRwOi8vdGVzdC82MjaGD2h0dHA6Ly90ZXN0LzYyN4YPaHR0cDovL3Rlc3QvNjI4
-+hg9odHRwOi8vdGVzdC82MjmGD2h0dHA6Ly90ZXN0LzYzMIYPaHR0cDovL3Rlc3Qv
-+NjMxhg9odHRwOi8vdGVzdC82MzKGD2h0dHA6Ly90ZXN0LzYzM4YPaHR0cDovL3Rl
-+c3QvNjM0hg9odHRwOi8vdGVzdC82MzWGD2h0dHA6Ly90ZXN0LzYzNoYPaHR0cDov
-+L3Rlc3QvNjM3hg9odHRwOi8vdGVzdC82MziGD2h0dHA6Ly90ZXN0LzYzOYYPaHR0
-+cDovL3Rlc3QvNjQwhg9odHRwOi8vdGVzdC82NDGGD2h0dHA6Ly90ZXN0LzY0MoYP
-+aHR0cDovL3Rlc3QvNjQzhg9odHRwOi8vdGVzdC82NDSGD2h0dHA6Ly90ZXN0LzY0
-+NYYPaHR0cDovL3Rlc3QvNjQ2hg9odHRwOi8vdGVzdC82NDeGD2h0dHA6Ly90ZXN0
-+LzY0OIYPaHR0cDovL3Rlc3QvNjQ5hg9odHRwOi8vdGVzdC82NTCGD2h0dHA6Ly90
-+ZXN0LzY1MYYPaHR0cDovL3Rlc3QvNjUyhg9odHRwOi8vdGVzdC82NTOGD2h0dHA6
-+Ly90ZXN0LzY1NIYPaHR0cDovL3Rlc3QvNjU1hg9odHRwOi8vdGVzdC82NTaGD2h0
-+dHA6Ly90ZXN0LzY1N4YPaHR0cDovL3Rlc3QvNjU4hg9odHRwOi8vdGVzdC82NTmG
-+D2h0dHA6Ly90ZXN0LzY2MIYPaHR0cDovL3Rlc3QvNjYxhg9odHRwOi8vdGVzdC82
-+NjKGD2h0dHA6Ly90ZXN0LzY2M4YPaHR0cDovL3Rlc3QvNjY0hg9odHRwOi8vdGVz
-+dC82NjWGD2h0dHA6Ly90ZXN0LzY2NoYPaHR0cDovL3Rlc3QvNjY3hg9odHRwOi8v
-+dGVzdC82NjiGD2h0dHA6Ly90ZXN0LzY2OYYPaHR0cDovL3Rlc3QvNjcwhg9odHRw
-+Oi8vdGVzdC82NzGGD2h0dHA6Ly90ZXN0LzY3MoYPaHR0cDovL3Rlc3QvNjczhg9o
-+dHRwOi8vdGVzdC82NzSGD2h0dHA6Ly90ZXN0LzY3NYYPaHR0cDovL3Rlc3QvNjc2
-+hg9odHRwOi8vdGVzdC82NzeGD2h0dHA6Ly90ZXN0LzY3OIYPaHR0cDovL3Rlc3Qv
-+Njc5hg9odHRwOi8vdGVzdC82ODCGD2h0dHA6Ly90ZXN0LzY4MYYPaHR0cDovL3Rl
-+c3QvNjgyhg9odHRwOi8vdGVzdC82ODOGD2h0dHA6Ly90ZXN0LzY4NIYPaHR0cDov
-+L3Rlc3QvNjg1hg9odHRwOi8vdGVzdC82ODaGD2h0dHA6Ly90ZXN0LzY4N4YPaHR0
-+cDovL3Rlc3QvNjg4hg9odHRwOi8vdGVzdC82ODmGD2h0dHA6Ly90ZXN0LzY5MIYP
-+aHR0cDovL3Rlc3QvNjkxhg9odHRwOi8vdGVzdC82OTKGD2h0dHA6Ly90ZXN0LzY5
-+M4YPaHR0cDovL3Rlc3QvNjk0hg9odHRwOi8vdGVzdC82OTWGD2h0dHA6Ly90ZXN0
-+LzY5NoYPaHR0cDovL3Rlc3QvNjk3hg9odHRwOi8vdGVzdC82OTiGD2h0dHA6Ly90
-+ZXN0LzY5OYYPaHR0cDovL3Rlc3QvNzAwhg9odHRwOi8vdGVzdC83MDGGD2h0dHA6
-+Ly90ZXN0LzcwMoYPaHR0cDovL3Rlc3QvNzAzhg9odHRwOi8vdGVzdC83MDSGD2h0
-+dHA6Ly90ZXN0LzcwNYYPaHR0cDovL3Rlc3QvNzA2hg9odHRwOi8vdGVzdC83MDeG
-+D2h0dHA6Ly90ZXN0LzcwOIYPaHR0cDovL3Rlc3QvNzA5hg9odHRwOi8vdGVzdC83
-+MTCGD2h0dHA6Ly90ZXN0LzcxMYYPaHR0cDovL3Rlc3QvNzEyhg9odHRwOi8vdGVz
-+dC83MTOGD2h0dHA6Ly90ZXN0LzcxNIYPaHR0cDovL3Rlc3QvNzE1hg9odHRwOi8v
-+dGVzdC83MTaGD2h0dHA6Ly90ZXN0LzcxN4YPaHR0cDovL3Rlc3QvNzE4hg9odHRw
-+Oi8vdGVzdC83MTmGD2h0dHA6Ly90ZXN0LzcyMIYPaHR0cDovL3Rlc3QvNzIxhg9o
-+dHRwOi8vdGVzdC83MjKGD2h0dHA6Ly90ZXN0LzcyM4YPaHR0cDovL3Rlc3QvNzI0
-+hg9odHRwOi8vdGVzdC83MjWGD2h0dHA6Ly90ZXN0LzcyNoYPaHR0cDovL3Rlc3Qv
-+NzI3hg9odHRwOi8vdGVzdC83MjiGD2h0dHA6Ly90ZXN0LzcyOYYPaHR0cDovL3Rl
-+c3QvNzMwhg9odHRwOi8vdGVzdC83MzGGD2h0dHA6Ly90ZXN0LzczMoYPaHR0cDov
-+L3Rlc3QvNzMzhg9odHRwOi8vdGVzdC83MzSGD2h0dHA6Ly90ZXN0LzczNYYPaHR0
-+cDovL3Rlc3QvNzM2hg9odHRwOi8vdGVzdC83MzeGD2h0dHA6Ly90ZXN0LzczOIYP
-+aHR0cDovL3Rlc3QvNzM5hg9odHRwOi8vdGVzdC83NDCGD2h0dHA6Ly90ZXN0Lzc0
-+MYYPaHR0cDovL3Rlc3QvNzQyhg9odHRwOi8vdGVzdC83NDOGD2h0dHA6Ly90ZXN0
-+Lzc0NIYPaHR0cDovL3Rlc3QvNzQ1hg9odHRwOi8vdGVzdC83NDaGD2h0dHA6Ly90
-+ZXN0Lzc0N4YPaHR0cDovL3Rlc3QvNzQ4hg9odHRwOi8vdGVzdC83NDmGD2h0dHA6
-+Ly90ZXN0Lzc1MIYPaHR0cDovL3Rlc3QvNzUxhg9odHRwOi8vdGVzdC83NTKGD2h0
-+dHA6Ly90ZXN0Lzc1M4YPaHR0cDovL3Rlc3QvNzU0hg9odHRwOi8vdGVzdC83NTWG
-+D2h0dHA6Ly90ZXN0Lzc1NoYPaHR0cDovL3Rlc3QvNzU3hg9odHRwOi8vdGVzdC83
-+NTiGD2h0dHA6Ly90ZXN0Lzc1OYYPaHR0cDovL3Rlc3QvNzYwhg9odHRwOi8vdGVz
-+dC83NjGGD2h0dHA6Ly90ZXN0Lzc2MoYPaHR0cDovL3Rlc3QvNzYzhg9odHRwOi8v
-+dGVzdC83NjSGD2h0dHA6Ly90ZXN0Lzc2NYYPaHR0cDovL3Rlc3QvNzY2hg9odHRw
-+Oi8vdGVzdC83NjeGD2h0dHA6Ly90ZXN0Lzc2OIYPaHR0cDovL3Rlc3QvNzY5hg9o
-+dHRwOi8vdGVzdC83NzCGD2h0dHA6Ly90ZXN0Lzc3MYYPaHR0cDovL3Rlc3QvNzcy
-+hg9odHRwOi8vdGVzdC83NzOGD2h0dHA6Ly90ZXN0Lzc3NIYPaHR0cDovL3Rlc3Qv
-+Nzc1hg9odHRwOi8vdGVzdC83NzaGD2h0dHA6Ly90ZXN0Lzc3N4YPaHR0cDovL3Rl
-+c3QvNzc4hg9odHRwOi8vdGVzdC83NzmGD2h0dHA6Ly90ZXN0Lzc4MIYPaHR0cDov
-+L3Rlc3QvNzgxhg9odHRwOi8vdGVzdC83ODKGD2h0dHA6Ly90ZXN0Lzc4M4YPaHR0
-+cDovL3Rlc3QvNzg0hg9odHRwOi8vdGVzdC83ODWGD2h0dHA6Ly90ZXN0Lzc4NoYP
-+aHR0cDovL3Rlc3QvNzg3hg9odHRwOi8vdGVzdC83ODiGD2h0dHA6Ly90ZXN0Lzc4
-+OYYPaHR0cDovL3Rlc3QvNzkwhg9odHRwOi8vdGVzdC83OTGGD2h0dHA6Ly90ZXN0
-+Lzc5MoYPaHR0cDovL3Rlc3QvNzkzhg9odHRwOi8vdGVzdC83OTSGD2h0dHA6Ly90
-+ZXN0Lzc5NYYPaHR0cDovL3Rlc3QvNzk2hg9odHRwOi8vdGVzdC83OTeGD2h0dHA6
-+Ly90ZXN0Lzc5OIYPaHR0cDovL3Rlc3QvNzk5hg9odHRwOi8vdGVzdC84MDCGD2h0
-+dHA6Ly90ZXN0LzgwMYYPaHR0cDovL3Rlc3QvODAyhg9odHRwOi8vdGVzdC84MDOG
-+D2h0dHA6Ly90ZXN0LzgwNIYPaHR0cDovL3Rlc3QvODA1hg9odHRwOi8vdGVzdC84
-+MDaGD2h0dHA6Ly90ZXN0LzgwN4YPaHR0cDovL3Rlc3QvODA4hg9odHRwOi8vdGVz
-+dC84MDmGD2h0dHA6Ly90ZXN0LzgxMIYPaHR0cDovL3Rlc3QvODExhg9odHRwOi8v
-+dGVzdC84MTKGD2h0dHA6Ly90ZXN0LzgxM4YPaHR0cDovL3Rlc3QvODE0hg9odHRw
-+Oi8vdGVzdC84MTWGD2h0dHA6Ly90ZXN0LzgxNoYPaHR0cDovL3Rlc3QvODE3hg9o
-+dHRwOi8vdGVzdC84MTiGD2h0dHA6Ly90ZXN0LzgxOYYPaHR0cDovL3Rlc3QvODIw
-+hg9odHRwOi8vdGVzdC84MjGGD2h0dHA6Ly90ZXN0LzgyMoYPaHR0cDovL3Rlc3Qv
-+ODIzhg9odHRwOi8vdGVzdC84MjSGD2h0dHA6Ly90ZXN0LzgyNYYPaHR0cDovL3Rl
-+c3QvODI2hg9odHRwOi8vdGVzdC84MjeGD2h0dHA6Ly90ZXN0LzgyOIYPaHR0cDov
-+L3Rlc3QvODI5hg9odHRwOi8vdGVzdC84MzCGD2h0dHA6Ly90ZXN0LzgzMYYPaHR0
-+cDovL3Rlc3QvODMyhg9odHRwOi8vdGVzdC84MzOGD2h0dHA6Ly90ZXN0LzgzNIYP
-+aHR0cDovL3Rlc3QvODM1hg9odHRwOi8vdGVzdC84MzaGD2h0dHA6Ly90ZXN0Lzgz
-+N4YPaHR0cDovL3Rlc3QvODM4hg9odHRwOi8vdGVzdC84MzmGD2h0dHA6Ly90ZXN0
-+Lzg0MIYPaHR0cDovL3Rlc3QvODQxhg9odHRwOi8vdGVzdC84NDKGD2h0dHA6Ly90
-+ZXN0Lzg0M4YPaHR0cDovL3Rlc3QvODQ0hg9odHRwOi8vdGVzdC84NDWGD2h0dHA6
-+Ly90ZXN0Lzg0NoYPaHR0cDovL3Rlc3QvODQ3hg9odHRwOi8vdGVzdC84NDiGD2h0
-+dHA6Ly90ZXN0Lzg0OYYPaHR0cDovL3Rlc3QvODUwhg9odHRwOi8vdGVzdC84NTGG
-+D2h0dHA6Ly90ZXN0Lzg1MoYPaHR0cDovL3Rlc3QvODUzhg9odHRwOi8vdGVzdC84
-+NTSGD2h0dHA6Ly90ZXN0Lzg1NYYPaHR0cDovL3Rlc3QvODU2hg9odHRwOi8vdGVz
-+dC84NTeGD2h0dHA6Ly90ZXN0Lzg1OIYPaHR0cDovL3Rlc3QvODU5hg9odHRwOi8v
-+dGVzdC84NjCGD2h0dHA6Ly90ZXN0Lzg2MYYPaHR0cDovL3Rlc3QvODYyhg9odHRw
-+Oi8vdGVzdC84NjOGD2h0dHA6Ly90ZXN0Lzg2NIYPaHR0cDovL3Rlc3QvODY1hg9o
-+dHRwOi8vdGVzdC84NjaGD2h0dHA6Ly90ZXN0Lzg2N4YPaHR0cDovL3Rlc3QvODY4
-+hg9odHRwOi8vdGVzdC84NjmGD2h0dHA6Ly90ZXN0Lzg3MIYPaHR0cDovL3Rlc3Qv
-+ODcxhg9odHRwOi8vdGVzdC84NzKGD2h0dHA6Ly90ZXN0Lzg3M4YPaHR0cDovL3Rl
-+c3QvODc0hg9odHRwOi8vdGVzdC84NzWGD2h0dHA6Ly90ZXN0Lzg3NoYPaHR0cDov
-+L3Rlc3QvODc3hg9odHRwOi8vdGVzdC84NziGD2h0dHA6Ly90ZXN0Lzg3OYYPaHR0
-+cDovL3Rlc3QvODgwhg9odHRwOi8vdGVzdC84ODGGD2h0dHA6Ly90ZXN0Lzg4MoYP
-+aHR0cDovL3Rlc3QvODgzhg9odHRwOi8vdGVzdC84ODSGD2h0dHA6Ly90ZXN0Lzg4
-+NYYPaHR0cDovL3Rlc3QvODg2hg9odHRwOi8vdGVzdC84ODeGD2h0dHA6Ly90ZXN0
-+Lzg4OIYPaHR0cDovL3Rlc3QvODg5hg9odHRwOi8vdGVzdC84OTCGD2h0dHA6Ly90
-+ZXN0Lzg5MYYPaHR0cDovL3Rlc3QvODkyhg9odHRwOi8vdGVzdC84OTOGD2h0dHA6
-+Ly90ZXN0Lzg5NIYPaHR0cDovL3Rlc3QvODk1hg9odHRwOi8vdGVzdC84OTaGD2h0
-+dHA6Ly90ZXN0Lzg5N4YPaHR0cDovL3Rlc3QvODk4hg9odHRwOi8vdGVzdC84OTmG
-+D2h0dHA6Ly90ZXN0LzkwMIYPaHR0cDovL3Rlc3QvOTAxhg9odHRwOi8vdGVzdC85
-+MDKGD2h0dHA6Ly90ZXN0LzkwM4YPaHR0cDovL3Rlc3QvOTA0hg9odHRwOi8vdGVz
-+dC85MDWGD2h0dHA6Ly90ZXN0LzkwNoYPaHR0cDovL3Rlc3QvOTA3hg9odHRwOi8v
-+dGVzdC85MDiGD2h0dHA6Ly90ZXN0LzkwOYYPaHR0cDovL3Rlc3QvOTEwhg9odHRw
-+Oi8vdGVzdC85MTGGD2h0dHA6Ly90ZXN0LzkxMoYPaHR0cDovL3Rlc3QvOTEzhg9o
-+dHRwOi8vdGVzdC85MTSGD2h0dHA6Ly90ZXN0LzkxNYYPaHR0cDovL3Rlc3QvOTE2
-+hg9odHRwOi8vdGVzdC85MTeGD2h0dHA6Ly90ZXN0LzkxOIYPaHR0cDovL3Rlc3Qv
-+OTE5hg9odHRwOi8vdGVzdC85MjCGD2h0dHA6Ly90ZXN0LzkyMYYPaHR0cDovL3Rl
-+c3QvOTIyhg9odHRwOi8vdGVzdC85MjOGD2h0dHA6Ly90ZXN0LzkyNIYPaHR0cDov
-+L3Rlc3QvOTI1hg9odHRwOi8vdGVzdC85MjaGD2h0dHA6Ly90ZXN0LzkyN4YPaHR0
-+cDovL3Rlc3QvOTI4hg9odHRwOi8vdGVzdC85MjmGD2h0dHA6Ly90ZXN0LzkzMIYP
-+aHR0cDovL3Rlc3QvOTMxhg9odHRwOi8vdGVzdC85MzKGD2h0dHA6Ly90ZXN0Lzkz
-+M4YPaHR0cDovL3Rlc3QvOTM0hg9odHRwOi8vdGVzdC85MzWGD2h0dHA6Ly90ZXN0
-+LzkzNoYPaHR0cDovL3Rlc3QvOTM3hg9odHRwOi8vdGVzdC85MziGD2h0dHA6Ly90
-+ZXN0LzkzOYYPaHR0cDovL3Rlc3QvOTQwhg9odHRwOi8vdGVzdC85NDGGD2h0dHA6
-+Ly90ZXN0Lzk0MoYPaHR0cDovL3Rlc3QvOTQzhg9odHRwOi8vdGVzdC85NDSGD2h0
-+dHA6Ly90ZXN0Lzk0NYYPaHR0cDovL3Rlc3QvOTQ2hg9odHRwOi8vdGVzdC85NDeG
-+D2h0dHA6Ly90ZXN0Lzk0OIYPaHR0cDovL3Rlc3QvOTQ5hg9odHRwOi8vdGVzdC85
-+NTCGD2h0dHA6Ly90ZXN0Lzk1MYYPaHR0cDovL3Rlc3QvOTUyhg9odHRwOi8vdGVz
-+dC85NTOGD2h0dHA6Ly90ZXN0Lzk1NIYPaHR0cDovL3Rlc3QvOTU1hg9odHRwOi8v
-+dGVzdC85NTaGD2h0dHA6Ly90ZXN0Lzk1N4YPaHR0cDovL3Rlc3QvOTU4hg9odHRw
-+Oi8vdGVzdC85NTmGD2h0dHA6Ly90ZXN0Lzk2MIYPaHR0cDovL3Rlc3QvOTYxhg9o
-+dHRwOi8vdGVzdC85NjKGD2h0dHA6Ly90ZXN0Lzk2M4YPaHR0cDovL3Rlc3QvOTY0
-+hg9odHRwOi8vdGVzdC85NjWGD2h0dHA6Ly90ZXN0Lzk2NoYPaHR0cDovL3Rlc3Qv
-+OTY3hg9odHRwOi8vdGVzdC85NjiGD2h0dHA6Ly90ZXN0Lzk2OYYPaHR0cDovL3Rl
-+c3QvOTcwhg9odHRwOi8vdGVzdC85NzGGD2h0dHA6Ly90ZXN0Lzk3MoYPaHR0cDov
-+L3Rlc3QvOTczhg9odHRwOi8vdGVzdC85NzSGD2h0dHA6Ly90ZXN0Lzk3NYYPaHR0
-+cDovL3Rlc3QvOTc2hg9odHRwOi8vdGVzdC85NzeGD2h0dHA6Ly90ZXN0Lzk3OIYP
-+aHR0cDovL3Rlc3QvOTc5hg9odHRwOi8vdGVzdC85ODCGD2h0dHA6Ly90ZXN0Lzk4
-+MYYPaHR0cDovL3Rlc3QvOTgyhg9odHRwOi8vdGVzdC85ODOGD2h0dHA6Ly90ZXN0
-+Lzk4NIYPaHR0cDovL3Rlc3QvOTg1hg9odHRwOi8vdGVzdC85ODaGD2h0dHA6Ly90
-+ZXN0Lzk4N4YPaHR0cDovL3Rlc3QvOTg4hg9odHRwOi8vdGVzdC85ODmGD2h0dHA6
-+Ly90ZXN0Lzk5MIYPaHR0cDovL3Rlc3QvOTkxhg9odHRwOi8vdGVzdC85OTKGD2h0
-+dHA6Ly90ZXN0Lzk5M4YPaHR0cDovL3Rlc3QvOTk0hg9odHRwOi8vdGVzdC85OTWG
-+D2h0dHA6Ly90ZXN0Lzk5NoYPaHR0cDovL3Rlc3QvOTk3hg9odHRwOi8vdGVzdC85
-+OTiGD2h0dHA6Ly90ZXN0Lzk5OYYQaHR0cDovL3Rlc3QvMTAwMIYQaHR0cDovL3Rl
-+c3QvMTAwMYYQaHR0cDovL3Rlc3QvMTAwMoYQaHR0cDovL3Rlc3QvMTAwM4YQaHR0
-+cDovL3Rlc3QvMTAwNIYQaHR0cDovL3Rlc3QvMTAwNYYQaHR0cDovL3Rlc3QvMTAw
-+NoYQaHR0cDovL3Rlc3QvMTAwN4YQaHR0cDovL3Rlc3QvMTAwOIYQaHR0cDovL3Rl
-+c3QvMTAwOYYQaHR0cDovL3Rlc3QvMTAxMIYQaHR0cDovL3Rlc3QvMTAxMYYQaHR0
-+cDovL3Rlc3QvMTAxMoYQaHR0cDovL3Rlc3QvMTAxM4YQaHR0cDovL3Rlc3QvMTAx
-+NIYQaHR0cDovL3Rlc3QvMTAxNYYQaHR0cDovL3Rlc3QvMTAxNoYQaHR0cDovL3Rl
-+c3QvMTAxN4YQaHR0cDovL3Rlc3QvMTAxOIYQaHR0cDovL3Rlc3QvMTAxOYYQaHR0
-+cDovL3Rlc3QvMTAyMIYQaHR0cDovL3Rlc3QvMTAyMYYQaHR0cDovL3Rlc3QvMTAy
-+MoYQaHR0cDovL3Rlc3QvMTAyM4YQaHR0cDovL3Rlc3QvMTAyNDANBgkqhkiG9w0B
-+AQsFAAOCAQEACAB/4EB10kM2P+Nsz8FKabIMG6ioa3ru7dAt7uJS2SofXawp9RLi
-+rzvboG06tAnvdvpSaF8HX5+kUo8d2tq2k1SHR9A8Zn7/G+Me2lJMAEZbDOueuF4e
-+2/fO3SwPTiMdY5jt5RjoBJyhHs1Y3glDTb+NS22OMummU0AXDOJZQ1UtP6uvqhNI
-+rACsW98WxyAq6lDveXjJNNXFf48n0FpCOugTAVG8o7lTbx3kc1KN8Mec0UYZqihj
-+PsxKX2MNHShL4LQ3g9uFjISGfjcVqO2oANoUl/3xyOpuOrcZwW9Tawv/KWAwfbY1
-+1rhYb1UyGMZEwwjYxJUle7oTBCY0fNQOoQ==
- -----END CERTIFICATE-----
-
- Certificate:
-@@ -771,7 +714,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 3c:e5:fc:81:88:59:a8:50:16:c1:7f:d7:e5:2a:e5:96:7f:c2:f6:f6
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Root
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-@@ -991,253 +934,6 @@ Certificate:
- DNS:t168.test
- DNS:t169.test
- DNS:t170.test
-- DNS:t171.test
-- DNS:t172.test
-- DNS:t173.test
-- DNS:t174.test
-- DNS:t175.test
-- DNS:t176.test
-- DNS:t177.test
-- DNS:t178.test
-- DNS:t179.test
-- DNS:t180.test
-- DNS:t181.test
-- DNS:t182.test
-- DNS:t183.test
-- DNS:t184.test
-- DNS:t185.test
-- DNS:t186.test
-- DNS:t187.test
-- DNS:t188.test
-- DNS:t189.test
-- DNS:t190.test
-- DNS:t191.test
-- DNS:t192.test
-- DNS:t193.test
-- DNS:t194.test
-- DNS:t195.test
-- DNS:t196.test
-- DNS:t197.test
-- DNS:t198.test
-- DNS:t199.test
-- DNS:t200.test
-- DNS:t201.test
-- DNS:t202.test
-- DNS:t203.test
-- DNS:t204.test
-- DNS:t205.test
-- DNS:t206.test
-- DNS:t207.test
-- DNS:t208.test
-- DNS:t209.test
-- DNS:t210.test
-- DNS:t211.test
-- DNS:t212.test
-- DNS:t213.test
-- DNS:t214.test
-- DNS:t215.test
-- DNS:t216.test
-- DNS:t217.test
-- DNS:t218.test
-- DNS:t219.test
-- DNS:t220.test
-- DNS:t221.test
-- DNS:t222.test
-- DNS:t223.test
-- DNS:t224.test
-- DNS:t225.test
-- DNS:t226.test
-- DNS:t227.test
-- DNS:t228.test
-- DNS:t229.test
-- DNS:t230.test
-- DNS:t231.test
-- DNS:t232.test
-- DNS:t233.test
-- DNS:t234.test
-- DNS:t235.test
-- DNS:t236.test
-- DNS:t237.test
-- DNS:t238.test
-- DNS:t239.test
-- DNS:t240.test
-- DNS:t241.test
-- DNS:t242.test
-- DNS:t243.test
-- DNS:t244.test
-- DNS:t245.test
-- DNS:t246.test
-- DNS:t247.test
-- DNS:t248.test
-- DNS:t249.test
-- DNS:t250.test
-- DNS:t251.test
-- DNS:t252.test
-- DNS:t253.test
-- DNS:t254.test
-- DNS:t255.test
-- DNS:t256.test
-- DNS:t257.test
-- DNS:t258.test
-- DNS:t259.test
-- DNS:t260.test
-- DNS:t261.test
-- DNS:t262.test
-- DNS:t263.test
-- DNS:t264.test
-- DNS:t265.test
-- DNS:t266.test
-- DNS:t267.test
-- DNS:t268.test
-- DNS:t269.test
-- DNS:t270.test
-- DNS:t271.test
-- DNS:t272.test
-- DNS:t273.test
-- DNS:t274.test
-- DNS:t275.test
-- DNS:t276.test
-- DNS:t277.test
-- DNS:t278.test
-- DNS:t279.test
-- DNS:t280.test
-- DNS:t281.test
-- DNS:t282.test
-- DNS:t283.test
-- DNS:t284.test
-- DNS:t285.test
-- DNS:t286.test
-- DNS:t287.test
-- DNS:t288.test
-- DNS:t289.test
-- DNS:t290.test
-- DNS:t291.test
-- DNS:t292.test
-- DNS:t293.test
-- DNS:t294.test
-- DNS:t295.test
-- DNS:t296.test
-- DNS:t297.test
-- DNS:t298.test
-- DNS:t299.test
-- DNS:t300.test
-- DNS:t301.test
-- DNS:t302.test
-- DNS:t303.test
-- DNS:t304.test
-- DNS:t305.test
-- DNS:t306.test
-- DNS:t307.test
-- DNS:t308.test
-- DNS:t309.test
-- DNS:t310.test
-- DNS:t311.test
-- DNS:t312.test
-- DNS:t313.test
-- DNS:t314.test
-- DNS:t315.test
-- DNS:t316.test
-- DNS:t317.test
-- DNS:t318.test
-- DNS:t319.test
-- DNS:t320.test
-- DNS:t321.test
-- DNS:t322.test
-- DNS:t323.test
-- DNS:t324.test
-- DNS:t325.test
-- DNS:t326.test
-- DNS:t327.test
-- DNS:t328.test
-- DNS:t329.test
-- DNS:t330.test
-- DNS:t331.test
-- DNS:t332.test
-- DNS:t333.test
-- DNS:t334.test
-- DNS:t335.test
-- DNS:t336.test
-- DNS:t337.test
-- DNS:t338.test
-- DNS:t339.test
-- DNS:t340.test
-- DNS:t341.test
-- DNS:t342.test
-- DNS:t343.test
-- DNS:t344.test
-- DNS:t345.test
-- DNS:t346.test
-- DNS:t347.test
-- DNS:t348.test
-- DNS:t349.test
-- DNS:t350.test
-- DNS:t351.test
-- DNS:t352.test
-- DNS:t353.test
-- DNS:t354.test
-- DNS:t355.test
-- DNS:t356.test
-- DNS:t357.test
-- DNS:t358.test
-- DNS:t359.test
-- DNS:t360.test
-- DNS:t361.test
-- DNS:t362.test
-- DNS:t363.test
-- DNS:t364.test
-- DNS:t365.test
-- DNS:t366.test
-- DNS:t367.test
-- DNS:t368.test
-- DNS:t369.test
-- DNS:t370.test
-- DNS:t371.test
-- DNS:t372.test
-- DNS:t373.test
-- DNS:t374.test
-- DNS:t375.test
-- DNS:t376.test
-- DNS:t377.test
-- DNS:t378.test
-- DNS:t379.test
-- DNS:t380.test
-- DNS:t381.test
-- DNS:t382.test
-- DNS:t383.test
-- DNS:t384.test
-- DNS:t385.test
-- DNS:t386.test
-- DNS:t387.test
-- DNS:t388.test
-- DNS:t389.test
-- DNS:t390.test
-- DNS:t391.test
-- DNS:t392.test
-- DNS:t393.test
-- DNS:t394.test
-- DNS:t395.test
-- DNS:t396.test
-- DNS:t397.test
-- DNS:t398.test
-- DNS:t399.test
-- DNS:t400.test
-- DNS:t401.test
-- DNS:t402.test
-- DNS:t403.test
-- DNS:t404.test
-- DNS:t405.test
-- DNS:t406.test
-- DNS:t407.test
-- DNS:t408.test
-- DNS:t409.test
-- DNS:t410.test
-- DNS:t411.test
-- DNS:t412.test
-- DNS:t413.test
-- DNS:t414.test
-- DNS:t415.test
-- DNS:t416.test
-- DNS:t417.test
- IP:10.0.0.0/255.255.255.255
- IP:10.0.0.1/255.255.255.255
- IP:10.0.0.2/255.255.255.255
-@@ -1409,671 +1105,178 @@ Certificate:
- IP:10.0.0.168/255.255.255.255
- IP:10.0.0.169/255.255.255.255
- IP:10.0.0.170/255.255.255.255
-- IP:10.0.0.171/255.255.255.255
-- IP:10.0.0.172/255.255.255.255
-- IP:10.0.0.173/255.255.255.255
-- IP:10.0.0.174/255.255.255.255
-- IP:10.0.0.175/255.255.255.255
-- IP:10.0.0.176/255.255.255.255
-- IP:10.0.0.177/255.255.255.255
-- IP:10.0.0.178/255.255.255.255
-- IP:10.0.0.179/255.255.255.255
-- IP:10.0.0.180/255.255.255.255
-- IP:10.0.0.181/255.255.255.255
-- IP:10.0.0.182/255.255.255.255
-- IP:10.0.0.183/255.255.255.255
-- IP:10.0.0.184/255.255.255.255
-- IP:10.0.0.185/255.255.255.255
-- IP:10.0.0.186/255.255.255.255
-- IP:10.0.0.187/255.255.255.255
-- IP:10.0.0.188/255.255.255.255
-- IP:10.0.0.189/255.255.255.255
-- IP:10.0.0.190/255.255.255.255
-- IP:10.0.0.191/255.255.255.255
-- IP:10.0.0.192/255.255.255.255
-- IP:10.0.0.193/255.255.255.255
-- IP:10.0.0.194/255.255.255.255
-- IP:10.0.0.195/255.255.255.255
-- IP:10.0.0.196/255.255.255.255
-- IP:10.0.0.197/255.255.255.255
-- IP:10.0.0.198/255.255.255.255
-- IP:10.0.0.199/255.255.255.255
-- IP:10.0.0.200/255.255.255.255
-- IP:10.0.0.201/255.255.255.255
-- IP:10.0.0.202/255.255.255.255
-- IP:10.0.0.203/255.255.255.255
-- IP:10.0.0.204/255.255.255.255
-- IP:10.0.0.205/255.255.255.255
-- IP:10.0.0.206/255.255.255.255
-- IP:10.0.0.207/255.255.255.255
-- IP:10.0.0.208/255.255.255.255
-- IP:10.0.0.209/255.255.255.255
-- IP:10.0.0.210/255.255.255.255
-- IP:10.0.0.211/255.255.255.255
-- IP:10.0.0.212/255.255.255.255
-- IP:10.0.0.213/255.255.255.255
-- IP:10.0.0.214/255.255.255.255
-- IP:10.0.0.215/255.255.255.255
-- IP:10.0.0.216/255.255.255.255
-- IP:10.0.0.217/255.255.255.255
-- IP:10.0.0.218/255.255.255.255
-- IP:10.0.0.219/255.255.255.255
-- IP:10.0.0.220/255.255.255.255
-- IP:10.0.0.221/255.255.255.255
-- IP:10.0.0.222/255.255.255.255
-- IP:10.0.0.223/255.255.255.255
-- IP:10.0.0.224/255.255.255.255
-- IP:10.0.0.225/255.255.255.255
-- IP:10.0.0.226/255.255.255.255
-- IP:10.0.0.227/255.255.255.255
-- IP:10.0.0.228/255.255.255.255
-- IP:10.0.0.229/255.255.255.255
-- IP:10.0.0.230/255.255.255.255
-- IP:10.0.0.231/255.255.255.255
-- IP:10.0.0.232/255.255.255.255
-- IP:10.0.0.233/255.255.255.255
-- IP:10.0.0.234/255.255.255.255
-- IP:10.0.0.235/255.255.255.255
-- IP:10.0.0.236/255.255.255.255
-- IP:10.0.0.237/255.255.255.255
-- IP:10.0.0.238/255.255.255.255
-- IP:10.0.0.239/255.255.255.255
-- IP:10.0.0.240/255.255.255.255
-- IP:10.0.0.241/255.255.255.255
-- IP:10.0.0.242/255.255.255.255
-- IP:10.0.0.243/255.255.255.255
-- IP:10.0.0.244/255.255.255.255
-- IP:10.0.0.245/255.255.255.255
-- IP:10.0.0.246/255.255.255.255
-- IP:10.0.0.247/255.255.255.255
-- IP:10.0.0.248/255.255.255.255
-- IP:10.0.0.249/255.255.255.255
-- IP:10.0.0.250/255.255.255.255
-- IP:10.0.0.251/255.255.255.255
-- IP:10.0.0.252/255.255.255.255
-- IP:10.0.0.253/255.255.255.255
-- IP:10.0.0.254/255.255.255.255
-- IP:10.0.0.255/255.255.255.255
-- IP:10.0.1.0/255.255.255.255
-- IP:10.0.1.1/255.255.255.255
-- IP:10.0.1.2/255.255.255.255
-- IP:10.0.1.3/255.255.255.255
-- IP:10.0.1.4/255.255.255.255
-- IP:10.0.1.5/255.255.255.255
-- IP:10.0.1.6/255.255.255.255
-- IP:10.0.1.7/255.255.255.255
-- IP:10.0.1.8/255.255.255.255
-- IP:10.0.1.9/255.255.255.255
-- IP:10.0.1.10/255.255.255.255
-- IP:10.0.1.11/255.255.255.255
-- IP:10.0.1.12/255.255.255.255
-- IP:10.0.1.13/255.255.255.255
-- IP:10.0.1.14/255.255.255.255
-- IP:10.0.1.15/255.255.255.255
-- IP:10.0.1.16/255.255.255.255
-- IP:10.0.1.17/255.255.255.255
-- IP:10.0.1.18/255.255.255.255
-- IP:10.0.1.19/255.255.255.255
-- IP:10.0.1.20/255.255.255.255
-- IP:10.0.1.21/255.255.255.255
-- IP:10.0.1.22/255.255.255.255
-- IP:10.0.1.23/255.255.255.255
-- IP:10.0.1.24/255.255.255.255
-- IP:10.0.1.25/255.255.255.255
-- IP:10.0.1.26/255.255.255.255
-- IP:10.0.1.27/255.255.255.255
-- IP:10.0.1.28/255.255.255.255
-- IP:10.0.1.29/255.255.255.255
-- IP:10.0.1.30/255.255.255.255
-- IP:10.0.1.31/255.255.255.255
-- IP:10.0.1.32/255.255.255.255
-- IP:10.0.1.33/255.255.255.255
-- IP:10.0.1.34/255.255.255.255
-- IP:10.0.1.35/255.255.255.255
-- IP:10.0.1.36/255.255.255.255
-- IP:10.0.1.37/255.255.255.255
-- IP:10.0.1.38/255.255.255.255
-- IP:10.0.1.39/255.255.255.255
-- IP:10.0.1.40/255.255.255.255
-- IP:10.0.1.41/255.255.255.255
-- IP:10.0.1.42/255.255.255.255
-- IP:10.0.1.43/255.255.255.255
-- IP:10.0.1.44/255.255.255.255
-- IP:10.0.1.45/255.255.255.255
-- IP:10.0.1.46/255.255.255.255
-- IP:10.0.1.47/255.255.255.255
-- IP:10.0.1.48/255.255.255.255
-- IP:10.0.1.49/255.255.255.255
-- IP:10.0.1.50/255.255.255.255
-- IP:10.0.1.51/255.255.255.255
-- IP:10.0.1.52/255.255.255.255
-- IP:10.0.1.53/255.255.255.255
-- IP:10.0.1.54/255.255.255.255
-- IP:10.0.1.55/255.255.255.255
-- IP:10.0.1.56/255.255.255.255
-- IP:10.0.1.57/255.255.255.255
-- IP:10.0.1.58/255.255.255.255
-- IP:10.0.1.59/255.255.255.255
-- IP:10.0.1.60/255.255.255.255
-- IP:10.0.1.61/255.255.255.255
-- IP:10.0.1.62/255.255.255.255
-- IP:10.0.1.63/255.255.255.255
-- IP:10.0.1.64/255.255.255.255
-- IP:10.0.1.65/255.255.255.255
-- IP:10.0.1.66/255.255.255.255
-- IP:10.0.1.67/255.255.255.255
-- IP:10.0.1.68/255.255.255.255
-- IP:10.0.1.69/255.255.255.255
-- IP:10.0.1.70/255.255.255.255
-- IP:10.0.1.71/255.255.255.255
-- IP:10.0.1.72/255.255.255.255
-- IP:10.0.1.73/255.255.255.255
-- IP:10.0.1.74/255.255.255.255
-- IP:10.0.1.75/255.255.255.255
-- IP:10.0.1.76/255.255.255.255
-- IP:10.0.1.77/255.255.255.255
-- IP:10.0.1.78/255.255.255.255
-- IP:10.0.1.79/255.255.255.255
-- IP:10.0.1.80/255.255.255.255
-- IP:10.0.1.81/255.255.255.255
-- IP:10.0.1.82/255.255.255.255
-- IP:10.0.1.83/255.255.255.255
-- IP:10.0.1.84/255.255.255.255
-- IP:10.0.1.85/255.255.255.255
-- IP:10.0.1.86/255.255.255.255
-- IP:10.0.1.87/255.255.255.255
-- IP:10.0.1.88/255.255.255.255
-- IP:10.0.1.89/255.255.255.255
-- IP:10.0.1.90/255.255.255.255
-- IP:10.0.1.91/255.255.255.255
-- IP:10.0.1.92/255.255.255.255
-- IP:10.0.1.93/255.255.255.255
-- IP:10.0.1.94/255.255.255.255
-- IP:10.0.1.95/255.255.255.255
-- IP:10.0.1.96/255.255.255.255
-- IP:10.0.1.97/255.255.255.255
-- IP:10.0.1.98/255.255.255.255
-- IP:10.0.1.99/255.255.255.255
-- IP:10.0.1.100/255.255.255.255
-- IP:10.0.1.101/255.255.255.255
-- IP:10.0.1.102/255.255.255.255
-- IP:10.0.1.103/255.255.255.255
-- IP:10.0.1.104/255.255.255.255
-- IP:10.0.1.105/255.255.255.255
-- IP:10.0.1.106/255.255.255.255
-- IP:10.0.1.107/255.255.255.255
-- IP:10.0.1.108/255.255.255.255
-- IP:10.0.1.109/255.255.255.255
-- IP:10.0.1.110/255.255.255.255
-- IP:10.0.1.111/255.255.255.255
-- IP:10.0.1.112/255.255.255.255
-- IP:10.0.1.113/255.255.255.255
-- IP:10.0.1.114/255.255.255.255
-- IP:10.0.1.115/255.255.255.255
-- IP:10.0.1.116/255.255.255.255
-- IP:10.0.1.117/255.255.255.255
-- IP:10.0.1.118/255.255.255.255
-- IP:10.0.1.119/255.255.255.255
-- IP:10.0.1.120/255.255.255.255
-- IP:10.0.1.121/255.255.255.255
-- IP:10.0.1.122/255.255.255.255
-- IP:10.0.1.123/255.255.255.255
-- IP:10.0.1.124/255.255.255.255
-- IP:10.0.1.125/255.255.255.255
-- IP:10.0.1.126/255.255.255.255
-- IP:10.0.1.127/255.255.255.255
-- IP:10.0.1.128/255.255.255.255
-- IP:10.0.1.129/255.255.255.255
-- IP:10.0.1.130/255.255.255.255
-- IP:10.0.1.131/255.255.255.255
-- IP:10.0.1.132/255.255.255.255
-- IP:10.0.1.133/255.255.255.255
-- IP:10.0.1.134/255.255.255.255
-- IP:10.0.1.135/255.255.255.255
-- IP:10.0.1.136/255.255.255.255
-- IP:10.0.1.137/255.255.255.255
-- IP:10.0.1.138/255.255.255.255
-- IP:10.0.1.139/255.255.255.255
-- IP:10.0.1.140/255.255.255.255
-- IP:10.0.1.141/255.255.255.255
-- IP:10.0.1.142/255.255.255.255
-- IP:10.0.1.143/255.255.255.255
-- IP:10.0.1.144/255.255.255.255
-- IP:10.0.1.145/255.255.255.255
-- IP:10.0.1.146/255.255.255.255
-- IP:10.0.1.147/255.255.255.255
-- IP:10.0.1.148/255.255.255.255
-- IP:10.0.1.149/255.255.255.255
-- IP:10.0.1.150/255.255.255.255
-- IP:10.0.1.151/255.255.255.255
-- IP:10.0.1.152/255.255.255.255
-- IP:10.0.1.153/255.255.255.255
-- IP:10.0.1.154/255.255.255.255
-- IP:10.0.1.155/255.255.255.255
-- IP:10.0.1.156/255.255.255.255
-- IP:10.0.1.157/255.255.255.255
-- IP:10.0.1.158/255.255.255.255
-- IP:10.0.1.159/255.255.255.255
-- IP:10.0.1.160/255.255.255.255
-- IP:10.0.1.161/255.255.255.255
-- DirName:CN = t0
-- DirName:CN = t1
-- DirName:CN = t2
-- DirName:CN = t3
-- DirName:CN = t4
-- DirName:CN = t5
-- DirName:CN = t6
-- DirName:CN = t7
-- DirName:CN = t8
-- DirName:CN = t9
-- DirName:CN = t10
-- DirName:CN = t11
-- DirName:CN = t12
-- DirName:CN = t13
-- DirName:CN = t14
-- DirName:CN = t15
-- DirName:CN = t16
-- DirName:CN = t17
-- DirName:CN = t18
-- DirName:CN = t19
-- DirName:CN = t20
-- DirName:CN = t21
-- DirName:CN = t22
-- DirName:CN = t23
-- DirName:CN = t24
-- DirName:CN = t25
-- DirName:CN = t26
-- DirName:CN = t27
-- DirName:CN = t28
-- DirName:CN = t29
-- DirName:CN = t30
-- DirName:CN = t31
-- DirName:CN = t32
-- DirName:CN = t33
-- DirName:CN = t34
-- DirName:CN = t35
-- DirName:CN = t36
-- DirName:CN = t37
-- DirName:CN = t38
-- DirName:CN = t39
-- DirName:CN = t40
-- DirName:CN = t41
-- DirName:CN = t42
-- DirName:CN = t43
-- DirName:CN = t44
-- DirName:CN = t45
-- DirName:CN = t46
-- DirName:CN = t47
-- DirName:CN = t48
-- DirName:CN = t49
-- DirName:CN = t50
-- DirName:CN = t51
-- DirName:CN = t52
-- DirName:CN = t53
-- DirName:CN = t54
-- DirName:CN = t55
-- DirName:CN = t56
-- DirName:CN = t57
-- DirName:CN = t58
-- DirName:CN = t59
-- DirName:CN = t60
-- DirName:CN = t61
-- DirName:CN = t62
-- DirName:CN = t63
-- DirName:CN = t64
-- DirName:CN = t65
-- DirName:CN = t66
-- DirName:CN = t67
-- DirName:CN = t68
-- DirName:CN = t69
-- DirName:CN = t70
-- DirName:CN = t71
-- DirName:CN = t72
-- DirName:CN = t73
-- DirName:CN = t74
-- DirName:CN = t75
-- DirName:CN = t76
-- DirName:CN = t77
-- DirName:CN = t78
-- DirName:CN = t79
-- DirName:CN = t80
-- DirName:CN = t81
-- DirName:CN = t82
-- DirName:CN = t83
-- DirName:CN = t84
-- DirName:CN = t85
-- DirName:CN = t86
-- DirName:CN = t87
-- DirName:CN = t88
-- DirName:CN = t89
-- DirName:CN = t90
-- DirName:CN = t91
-- DirName:CN = t92
-- DirName:CN = t93
-- DirName:CN = t94
-- DirName:CN = t95
-- DirName:CN = t96
-- DirName:CN = t97
-- DirName:CN = t98
-- DirName:CN = t99
-- DirName:CN = t100
-- DirName:CN = t101
-- DirName:CN = t102
-- DirName:CN = t103
-- DirName:CN = t104
-- DirName:CN = t105
-- DirName:CN = t106
-- DirName:CN = t107
-- DirName:CN = t108
-- DirName:CN = t109
-- DirName:CN = t110
-- DirName:CN = t111
-- DirName:CN = t112
-- DirName:CN = t113
-- DirName:CN = t114
-- DirName:CN = t115
-- DirName:CN = t116
-- DirName:CN = t117
-- DirName:CN = t118
-- DirName:CN = t119
-- DirName:CN = t120
-- DirName:CN = t121
-- DirName:CN = t122
-- DirName:CN = t123
-- DirName:CN = t124
-- DirName:CN = t125
-- DirName:CN = t126
-- DirName:CN = t127
-- DirName:CN = t128
-- DirName:CN = t129
-- DirName:CN = t130
-- DirName:CN = t131
-- DirName:CN = t132
-- DirName:CN = t133
-- DirName:CN = t134
-- DirName:CN = t135
-- DirName:CN = t136
-- DirName:CN = t137
-- DirName:CN = t138
-- DirName:CN = t139
-- DirName:CN = t140
-- DirName:CN = t141
-- DirName:CN = t142
-- DirName:CN = t143
-- DirName:CN = t144
-- DirName:CN = t145
-- DirName:CN = t146
-- DirName:CN = t147
-- DirName:CN = t148
-- DirName:CN = t149
-- DirName:CN = t150
-- DirName:CN = t151
-- DirName:CN = t152
-- DirName:CN = t153
-- DirName:CN = t154
-- DirName:CN = t155
-- DirName:CN = t156
-- DirName:CN = t157
-- DirName:CN = t158
-- DirName:CN = t159
-- DirName:CN = t160
-- DirName:CN = t161
-- DirName:CN = t162
-- DirName:CN = t163
-- DirName:CN = t164
-- DirName:CN = t165
-- DirName:CN = t166
-- DirName:CN = t167
-- DirName:CN = t168
-- DirName:CN = t169
-- DirName:CN = t170
-- DirName:CN = t171
-- DirName:CN = t172
-- DirName:CN = t173
-- DirName:CN = t174
-- DirName:CN = t175
-- DirName:CN = t176
-- DirName:CN = t177
-- DirName:CN = t178
-- DirName:CN = t179
-- DirName:CN = t180
-- DirName:CN = t181
-- DirName:CN = t182
-- DirName:CN = t183
-- DirName:CN = t184
-- DirName:CN = t185
-- DirName:CN = t186
-- DirName:CN = t187
-- DirName:CN = t188
-- DirName:CN = t189
-- DirName:CN = t190
-- DirName:CN = t191
-- DirName:CN = t192
-- DirName:CN = t193
-- DirName:CN = t194
-- DirName:CN = t195
-- DirName:CN = t196
-- DirName:CN = t197
-- DirName:CN = t198
-- DirName:CN = t199
-- DirName:CN = t200
-- DirName:CN = t201
-- DirName:CN = t202
-- DirName:CN = t203
-- DirName:CN = t204
-- DirName:CN = t205
-- DirName:CN = t206
-- DirName:CN = t207
-- DirName:CN = t208
-- DirName:CN = t209
-- DirName:CN = t210
-- DirName:CN = t211
-- DirName:CN = t212
-- DirName:CN = t213
-- DirName:CN = t214
-- DirName:CN = t215
-- DirName:CN = t216
-- DirName:CN = t217
-- DirName:CN = t218
-- DirName:CN = t219
-- DirName:CN = t220
-- DirName:CN = t221
-- DirName:CN = t222
-- DirName:CN = t223
-- DirName:CN = t224
-- DirName:CN = t225
-- DirName:CN = t226
-- DirName:CN = t227
-- DirName:CN = t228
-- DirName:CN = t229
-- DirName:CN = t230
-- DirName:CN = t231
-- DirName:CN = t232
-- DirName:CN = t233
-- DirName:CN = t234
-- DirName:CN = t235
-- DirName:CN = t236
-- DirName:CN = t237
-- DirName:CN = t238
-- DirName:CN = t239
-- DirName:CN = t240
-- DirName:CN = t241
-- DirName:CN = t242
-- DirName:CN = t243
-- DirName:CN = t244
-- DirName:CN = t245
-- DirName:CN = t246
-- DirName:CN = t247
-- DirName:CN = t248
-- DirName:CN = t249
-- DirName:CN = t250
-- DirName:CN = t251
-- DirName:CN = t252
-- DirName:CN = t253
-- DirName:CN = t254
-- DirName:CN = t255
-- DirName:CN = t256
-- DirName:CN = t257
-- DirName:CN = t258
-- DirName:CN = t259
-- DirName:CN = t260
-- DirName:CN = t261
-- DirName:CN = t262
-- DirName:CN = t263
-- DirName:CN = t264
-- DirName:CN = t265
-- DirName:CN = t266
-- DirName:CN = t267
-- DirName:CN = t268
-- DirName:CN = t269
-- DirName:CN = t270
-- DirName:CN = t271
-- DirName:CN = t272
-- DirName:CN = t273
-- DirName:CN = t274
-- DirName:CN = t275
-- DirName:CN = t276
-- DirName:CN = t277
-- DirName:CN = t278
-- DirName:CN = t279
-- DirName:CN = t280
-- DirName:CN = t281
-- DirName:CN = t282
-- DirName:CN = t283
-- DirName:CN = t284
-- DirName:CN = t285
-- DirName:CN = t286
-- DirName:CN = t287
-- DirName:CN = t288
-- DirName:CN = t289
-- DirName:CN = t290
-- DirName:CN = t291
-- DirName:CN = t292
-- DirName:CN = t293
-- DirName:CN = t294
-- DirName:CN = t295
-- DirName:CN = t296
-- DirName:CN = t297
-- DirName:CN = t298
-- DirName:CN = t299
-- DirName:CN = t300
-- DirName:CN = t301
-- DirName:CN = t302
-- DirName:CN = t303
-- DirName:CN = t304
-- DirName:CN = t305
-- DirName:CN = t306
-- DirName:CN = t307
-- DirName:CN = t308
-- DirName:CN = t309
-- DirName:CN = t310
-- DirName:CN = t311
-- DirName:CN = t312
-- DirName:CN = t313
-- DirName:CN = t314
-- DirName:CN = t315
-- DirName:CN = t316
-- DirName:CN = t317
-- DirName:CN = t318
-- DirName:CN = t319
-- DirName:CN = t320
-- DirName:CN = t321
-- DirName:CN = t322
-- DirName:CN = t323
-- DirName:CN = t324
-- DirName:CN = t325
-- DirName:CN = t326
-- DirName:CN = t327
-- DirName:CN = t328
-- DirName:CN = t329
-- DirName:CN = t330
-- DirName:CN = t331
-- DirName:CN = t332
-- DirName:CN = t333
-- DirName:CN = t334
-- DirName:CN = t335
-- DirName:CN = t336
-- DirName:CN = t337
-- DirName:CN = t338
-- DirName:CN = t339
-- DirName:CN = t340
-- DirName:CN = t341
-- DirName:CN = t342
-- DirName:CN = t343
-- DirName:CN = t344
-- DirName:CN = t345
-- DirName:CN = t346
-- DirName:CN = t347
-- DirName:CN = t348
-- DirName:CN = t349
-- DirName:CN = t350
-- DirName:CN = t351
-- DirName:CN = t352
-- DirName:CN = t353
-- DirName:CN = t354
-- DirName:CN = t355
-- DirName:CN = t356
-- DirName:CN = t357
-- DirName:CN = t358
-- DirName:CN = t359
-- DirName:CN = t360
-- DirName:CN = t361
-- DirName:CN = t362
-- DirName:CN = t363
-- DirName:CN = t364
-- DirName:CN = t365
-- DirName:CN = t366
-- DirName:CN = t367
-- DirName:CN = t368
-- DirName:CN = t369
-- DirName:CN = t370
-- DirName:CN = t371
-- DirName:CN = t372
-- DirName:CN = t373
-- DirName:CN = t374
-- DirName:CN = t375
-- DirName:CN = t376
-- DirName:CN = t377
-- DirName:CN = t378
-- DirName:CN = t379
-- DirName:CN = t380
-- DirName:CN = t381
-- DirName:CN = t382
-- DirName:CN = t383
-- DirName:CN = t384
-- DirName:CN = t385
-- DirName:CN = t386
-- DirName:CN = t387
-- DirName:CN = t388
-- DirName:CN = t389
-- DirName:CN = t390
-- DirName:CN = t391
-- DirName:CN = t392
-- DirName:CN = t393
-- DirName:CN = t394
-- DirName:CN = t395
-- DirName:CN = t396
-- DirName:CN = t397
-- DirName:CN = t398
-- DirName:CN = t399
-- DirName:CN = t400
-- DirName:CN = t401
-- DirName:CN = t402
-- DirName:CN = t403
-- DirName:CN = t404
-- DirName:CN = t405
-- DirName:CN = t406
-- DirName:CN = t407
-- DirName:CN = t408
-- DirName:CN = t409
-- DirName:CN = t410
-- DirName:CN = t411
-- DirName:CN = t412
-- DirName:CN = t413
-- DirName:CN = t414
-- DirName:CN = t415
-- DirName:CN = t416
-- DirName:CN = t417
-+ DirName: CN = t0
-+ DirName: CN = t1
-+ DirName: CN = t2
-+ DirName: CN = t3
-+ DirName: CN = t4
-+ DirName: CN = t5
-+ DirName: CN = t6
-+ DirName: CN = t7
-+ DirName: CN = t8
-+ DirName: CN = t9
-+ DirName: CN = t10
-+ DirName: CN = t11
-+ DirName: CN = t12
-+ DirName: CN = t13
-+ DirName: CN = t14
-+ DirName: CN = t15
-+ DirName: CN = t16
-+ DirName: CN = t17
-+ DirName: CN = t18
-+ DirName: CN = t19
-+ DirName: CN = t20
-+ DirName: CN = t21
-+ DirName: CN = t22
-+ DirName: CN = t23
-+ DirName: CN = t24
-+ DirName: CN = t25
-+ DirName: CN = t26
-+ DirName: CN = t27
-+ DirName: CN = t28
-+ DirName: CN = t29
-+ DirName: CN = t30
-+ DirName: CN = t31
-+ DirName: CN = t32
-+ DirName: CN = t33
-+ DirName: CN = t34
-+ DirName: CN = t35
-+ DirName: CN = t36
-+ DirName: CN = t37
-+ DirName: CN = t38
-+ DirName: CN = t39
-+ DirName: CN = t40
-+ DirName: CN = t41
-+ DirName: CN = t42
-+ DirName: CN = t43
-+ DirName: CN = t44
-+ DirName: CN = t45
-+ DirName: CN = t46
-+ DirName: CN = t47
-+ DirName: CN = t48
-+ DirName: CN = t49
-+ DirName: CN = t50
-+ DirName: CN = t51
-+ DirName: CN = t52
-+ DirName: CN = t53
-+ DirName: CN = t54
-+ DirName: CN = t55
-+ DirName: CN = t56
-+ DirName: CN = t57
-+ DirName: CN = t58
-+ DirName: CN = t59
-+ DirName: CN = t60
-+ DirName: CN = t61
-+ DirName: CN = t62
-+ DirName: CN = t63
-+ DirName: CN = t64
-+ DirName: CN = t65
-+ DirName: CN = t66
-+ DirName: CN = t67
-+ DirName: CN = t68
-+ DirName: CN = t69
-+ DirName: CN = t70
-+ DirName: CN = t71
-+ DirName: CN = t72
-+ DirName: CN = t73
-+ DirName: CN = t74
-+ DirName: CN = t75
-+ DirName: CN = t76
-+ DirName: CN = t77
-+ DirName: CN = t78
-+ DirName: CN = t79
-+ DirName: CN = t80
-+ DirName: CN = t81
-+ DirName: CN = t82
-+ DirName: CN = t83
-+ DirName: CN = t84
-+ DirName: CN = t85
-+ DirName: CN = t86
-+ DirName: CN = t87
-+ DirName: CN = t88
-+ DirName: CN = t89
-+ DirName: CN = t90
-+ DirName: CN = t91
-+ DirName: CN = t92
-+ DirName: CN = t93
-+ DirName: CN = t94
-+ DirName: CN = t95
-+ DirName: CN = t96
-+ DirName: CN = t97
-+ DirName: CN = t98
-+ DirName: CN = t99
-+ DirName: CN = t100
-+ DirName: CN = t101
-+ DirName: CN = t102
-+ DirName: CN = t103
-+ DirName: CN = t104
-+ DirName: CN = t105
-+ DirName: CN = t106
-+ DirName: CN = t107
-+ DirName: CN = t108
-+ DirName: CN = t109
-+ DirName: CN = t110
-+ DirName: CN = t111
-+ DirName: CN = t112
-+ DirName: CN = t113
-+ DirName: CN = t114
-+ DirName: CN = t115
-+ DirName: CN = t116
-+ DirName: CN = t117
-+ DirName: CN = t118
-+ DirName: CN = t119
-+ DirName: CN = t120
-+ DirName: CN = t121
-+ DirName: CN = t122
-+ DirName: CN = t123
-+ DirName: CN = t124
-+ DirName: CN = t125
-+ DirName: CN = t126
-+ DirName: CN = t127
-+ DirName: CN = t128
-+ DirName: CN = t129
-+ DirName: CN = t130
-+ DirName: CN = t131
-+ DirName: CN = t132
-+ DirName: CN = t133
-+ DirName: CN = t134
-+ DirName: CN = t135
-+ DirName: CN = t136
-+ DirName: CN = t137
-+ DirName: CN = t138
-+ DirName: CN = t139
-+ DirName: CN = t140
-+ DirName: CN = t141
-+ DirName: CN = t142
-+ DirName: CN = t143
-+ DirName: CN = t144
-+ DirName: CN = t145
-+ DirName: CN = t146
-+ DirName: CN = t147
-+ DirName: CN = t148
-+ DirName: CN = t149
-+ DirName: CN = t150
-+ DirName: CN = t151
-+ DirName: CN = t152
-+ DirName: CN = t153
-+ DirName: CN = t154
-+ DirName: CN = t155
-+ DirName: CN = t156
-+ DirName: CN = t157
-+ DirName: CN = t158
-+ DirName: CN = t159
-+ DirName: CN = t160
-+ DirName: CN = t161
-+ DirName: CN = t162
-+ DirName: CN = t163
-+ DirName: CN = t164
-+ DirName: CN = t165
-+ DirName: CN = t166
-+ DirName: CN = t167
-+ DirName: CN = t168
-+ DirName: CN = t169
-+ DirName: CN = t170
-+ DirName: CN = t171
- URI:http://test/0
- URI:http://test/1
- URI:http://test/2
-@@ -3270,254 +2473,6 @@ Certificate:
- DNS:x167.test
- DNS:x168.test
- DNS:x169.test
-- DNS:x170.test
-- DNS:x171.test
-- DNS:x172.test
-- DNS:x173.test
-- DNS:x174.test
-- DNS:x175.test
-- DNS:x176.test
-- DNS:x177.test
-- DNS:x178.test
-- DNS:x179.test
-- DNS:x180.test
-- DNS:x181.test
-- DNS:x182.test
-- DNS:x183.test
-- DNS:x184.test
-- DNS:x185.test
-- DNS:x186.test
-- DNS:x187.test
-- DNS:x188.test
-- DNS:x189.test
-- DNS:x190.test
-- DNS:x191.test
-- DNS:x192.test
-- DNS:x193.test
-- DNS:x194.test
-- DNS:x195.test
-- DNS:x196.test
-- DNS:x197.test
-- DNS:x198.test
-- DNS:x199.test
-- DNS:x200.test
-- DNS:x201.test
-- DNS:x202.test
-- DNS:x203.test
-- DNS:x204.test
-- DNS:x205.test
-- DNS:x206.test
-- DNS:x207.test
-- DNS:x208.test
-- DNS:x209.test
-- DNS:x210.test
-- DNS:x211.test
-- DNS:x212.test
-- DNS:x213.test
-- DNS:x214.test
-- DNS:x215.test
-- DNS:x216.test
-- DNS:x217.test
-- DNS:x218.test
-- DNS:x219.test
-- DNS:x220.test
-- DNS:x221.test
-- DNS:x222.test
-- DNS:x223.test
-- DNS:x224.test
-- DNS:x225.test
-- DNS:x226.test
-- DNS:x227.test
-- DNS:x228.test
-- DNS:x229.test
-- DNS:x230.test
-- DNS:x231.test
-- DNS:x232.test
-- DNS:x233.test
-- DNS:x234.test
-- DNS:x235.test
-- DNS:x236.test
-- DNS:x237.test
-- DNS:x238.test
-- DNS:x239.test
-- DNS:x240.test
-- DNS:x241.test
-- DNS:x242.test
-- DNS:x243.test
-- DNS:x244.test
-- DNS:x245.test
-- DNS:x246.test
-- DNS:x247.test
-- DNS:x248.test
-- DNS:x249.test
-- DNS:x250.test
-- DNS:x251.test
-- DNS:x252.test
-- DNS:x253.test
-- DNS:x254.test
-- DNS:x255.test
-- DNS:x256.test
-- DNS:x257.test
-- DNS:x258.test
-- DNS:x259.test
-- DNS:x260.test
-- DNS:x261.test
-- DNS:x262.test
-- DNS:x263.test
-- DNS:x264.test
-- DNS:x265.test
-- DNS:x266.test
-- DNS:x267.test
-- DNS:x268.test
-- DNS:x269.test
-- DNS:x270.test
-- DNS:x271.test
-- DNS:x272.test
-- DNS:x273.test
-- DNS:x274.test
-- DNS:x275.test
-- DNS:x276.test
-- DNS:x277.test
-- DNS:x278.test
-- DNS:x279.test
-- DNS:x280.test
-- DNS:x281.test
-- DNS:x282.test
-- DNS:x283.test
-- DNS:x284.test
-- DNS:x285.test
-- DNS:x286.test
-- DNS:x287.test
-- DNS:x288.test
-- DNS:x289.test
-- DNS:x290.test
-- DNS:x291.test
-- DNS:x292.test
-- DNS:x293.test
-- DNS:x294.test
-- DNS:x295.test
-- DNS:x296.test
-- DNS:x297.test
-- DNS:x298.test
-- DNS:x299.test
-- DNS:x300.test
-- DNS:x301.test
-- DNS:x302.test
-- DNS:x303.test
-- DNS:x304.test
-- DNS:x305.test
-- DNS:x306.test
-- DNS:x307.test
-- DNS:x308.test
-- DNS:x309.test
-- DNS:x310.test
-- DNS:x311.test
-- DNS:x312.test
-- DNS:x313.test
-- DNS:x314.test
-- DNS:x315.test
-- DNS:x316.test
-- DNS:x317.test
-- DNS:x318.test
-- DNS:x319.test
-- DNS:x320.test
-- DNS:x321.test
-- DNS:x322.test
-- DNS:x323.test
-- DNS:x324.test
-- DNS:x325.test
-- DNS:x326.test
-- DNS:x327.test
-- DNS:x328.test
-- DNS:x329.test
-- DNS:x330.test
-- DNS:x331.test
-- DNS:x332.test
-- DNS:x333.test
-- DNS:x334.test
-- DNS:x335.test
-- DNS:x336.test
-- DNS:x337.test
-- DNS:x338.test
-- DNS:x339.test
-- DNS:x340.test
-- DNS:x341.test
-- DNS:x342.test
-- DNS:x343.test
-- DNS:x344.test
-- DNS:x345.test
-- DNS:x346.test
-- DNS:x347.test
-- DNS:x348.test
-- DNS:x349.test
-- DNS:x350.test
-- DNS:x351.test
-- DNS:x352.test
-- DNS:x353.test
-- DNS:x354.test
-- DNS:x355.test
-- DNS:x356.test
-- DNS:x357.test
-- DNS:x358.test
-- DNS:x359.test
-- DNS:x360.test
-- DNS:x361.test
-- DNS:x362.test
-- DNS:x363.test
-- DNS:x364.test
-- DNS:x365.test
-- DNS:x366.test
-- DNS:x367.test
-- DNS:x368.test
-- DNS:x369.test
-- DNS:x370.test
-- DNS:x371.test
-- DNS:x372.test
-- DNS:x373.test
-- DNS:x374.test
-- DNS:x375.test
-- DNS:x376.test
-- DNS:x377.test
-- DNS:x378.test
-- DNS:x379.test
-- DNS:x380.test
-- DNS:x381.test
-- DNS:x382.test
-- DNS:x383.test
-- DNS:x384.test
-- DNS:x385.test
-- DNS:x386.test
-- DNS:x387.test
-- DNS:x388.test
-- DNS:x389.test
-- DNS:x390.test
-- DNS:x391.test
-- DNS:x392.test
-- DNS:x393.test
-- DNS:x394.test
-- DNS:x395.test
-- DNS:x396.test
-- DNS:x397.test
-- DNS:x398.test
-- DNS:x399.test
-- DNS:x400.test
-- DNS:x401.test
-- DNS:x402.test
-- DNS:x403.test
-- DNS:x404.test
-- DNS:x405.test
-- DNS:x406.test
-- DNS:x407.test
-- DNS:x408.test
-- DNS:x409.test
-- DNS:x410.test
-- DNS:x411.test
-- DNS:x412.test
-- DNS:x413.test
-- DNS:x414.test
-- DNS:x415.test
-- DNS:x416.test
-- DNS:x417.test
- IP:11.0.0.0/255.255.255.255
- IP:11.0.0.1/255.255.255.255
- IP:11.0.0.2/255.255.255.255
-@@ -3688,672 +2643,176 @@ Certificate:
- IP:11.0.0.167/255.255.255.255
- IP:11.0.0.168/255.255.255.255
- IP:11.0.0.169/255.255.255.255
-- IP:11.0.0.170/255.255.255.255
-- IP:11.0.0.171/255.255.255.255
-- IP:11.0.0.172/255.255.255.255
-- IP:11.0.0.173/255.255.255.255
-- IP:11.0.0.174/255.255.255.255
-- IP:11.0.0.175/255.255.255.255
-- IP:11.0.0.176/255.255.255.255
-- IP:11.0.0.177/255.255.255.255
-- IP:11.0.0.178/255.255.255.255
-- IP:11.0.0.179/255.255.255.255
-- IP:11.0.0.180/255.255.255.255
-- IP:11.0.0.181/255.255.255.255
-- IP:11.0.0.182/255.255.255.255
-- IP:11.0.0.183/255.255.255.255
-- IP:11.0.0.184/255.255.255.255
-- IP:11.0.0.185/255.255.255.255
-- IP:11.0.0.186/255.255.255.255
-- IP:11.0.0.187/255.255.255.255
-- IP:11.0.0.188/255.255.255.255
-- IP:11.0.0.189/255.255.255.255
-- IP:11.0.0.190/255.255.255.255
-- IP:11.0.0.191/255.255.255.255
-- IP:11.0.0.192/255.255.255.255
-- IP:11.0.0.193/255.255.255.255
-- IP:11.0.0.194/255.255.255.255
-- IP:11.0.0.195/255.255.255.255
-- IP:11.0.0.196/255.255.255.255
-- IP:11.0.0.197/255.255.255.255
-- IP:11.0.0.198/255.255.255.255
-- IP:11.0.0.199/255.255.255.255
-- IP:11.0.0.200/255.255.255.255
-- IP:11.0.0.201/255.255.255.255
-- IP:11.0.0.202/255.255.255.255
-- IP:11.0.0.203/255.255.255.255
-- IP:11.0.0.204/255.255.255.255
-- IP:11.0.0.205/255.255.255.255
-- IP:11.0.0.206/255.255.255.255
-- IP:11.0.0.207/255.255.255.255
-- IP:11.0.0.208/255.255.255.255
-- IP:11.0.0.209/255.255.255.255
-- IP:11.0.0.210/255.255.255.255
-- IP:11.0.0.211/255.255.255.255
-- IP:11.0.0.212/255.255.255.255
-- IP:11.0.0.213/255.255.255.255
-- IP:11.0.0.214/255.255.255.255
-- IP:11.0.0.215/255.255.255.255
-- IP:11.0.0.216/255.255.255.255
-- IP:11.0.0.217/255.255.255.255
-- IP:11.0.0.218/255.255.255.255
-- IP:11.0.0.219/255.255.255.255
-- IP:11.0.0.220/255.255.255.255
-- IP:11.0.0.221/255.255.255.255
-- IP:11.0.0.222/255.255.255.255
-- IP:11.0.0.223/255.255.255.255
-- IP:11.0.0.224/255.255.255.255
-- IP:11.0.0.225/255.255.255.255
-- IP:11.0.0.226/255.255.255.255
-- IP:11.0.0.227/255.255.255.255
-- IP:11.0.0.228/255.255.255.255
-- IP:11.0.0.229/255.255.255.255
-- IP:11.0.0.230/255.255.255.255
-- IP:11.0.0.231/255.255.255.255
-- IP:11.0.0.232/255.255.255.255
-- IP:11.0.0.233/255.255.255.255
-- IP:11.0.0.234/255.255.255.255
-- IP:11.0.0.235/255.255.255.255
-- IP:11.0.0.236/255.255.255.255
-- IP:11.0.0.237/255.255.255.255
-- IP:11.0.0.238/255.255.255.255
-- IP:11.0.0.239/255.255.255.255
-- IP:11.0.0.240/255.255.255.255
-- IP:11.0.0.241/255.255.255.255
-- IP:11.0.0.242/255.255.255.255
-- IP:11.0.0.243/255.255.255.255
-- IP:11.0.0.244/255.255.255.255
-- IP:11.0.0.245/255.255.255.255
-- IP:11.0.0.246/255.255.255.255
-- IP:11.0.0.247/255.255.255.255
-- IP:11.0.0.248/255.255.255.255
-- IP:11.0.0.249/255.255.255.255
-- IP:11.0.0.250/255.255.255.255
-- IP:11.0.0.251/255.255.255.255
-- IP:11.0.0.252/255.255.255.255
-- IP:11.0.0.253/255.255.255.255
-- IP:11.0.0.254/255.255.255.255
-- IP:11.0.0.255/255.255.255.255
-- IP:11.0.1.0/255.255.255.255
-- IP:11.0.1.1/255.255.255.255
-- IP:11.0.1.2/255.255.255.255
-- IP:11.0.1.3/255.255.255.255
-- IP:11.0.1.4/255.255.255.255
-- IP:11.0.1.5/255.255.255.255
-- IP:11.0.1.6/255.255.255.255
-- IP:11.0.1.7/255.255.255.255
-- IP:11.0.1.8/255.255.255.255
-- IP:11.0.1.9/255.255.255.255
-- IP:11.0.1.10/255.255.255.255
-- IP:11.0.1.11/255.255.255.255
-- IP:11.0.1.12/255.255.255.255
-- IP:11.0.1.13/255.255.255.255
-- IP:11.0.1.14/255.255.255.255
-- IP:11.0.1.15/255.255.255.255
-- IP:11.0.1.16/255.255.255.255
-- IP:11.0.1.17/255.255.255.255
-- IP:11.0.1.18/255.255.255.255
-- IP:11.0.1.19/255.255.255.255
-- IP:11.0.1.20/255.255.255.255
-- IP:11.0.1.21/255.255.255.255
-- IP:11.0.1.22/255.255.255.255
-- IP:11.0.1.23/255.255.255.255
-- IP:11.0.1.24/255.255.255.255
-- IP:11.0.1.25/255.255.255.255
-- IP:11.0.1.26/255.255.255.255
-- IP:11.0.1.27/255.255.255.255
-- IP:11.0.1.28/255.255.255.255
-- IP:11.0.1.29/255.255.255.255
-- IP:11.0.1.30/255.255.255.255
-- IP:11.0.1.31/255.255.255.255
-- IP:11.0.1.32/255.255.255.255
-- IP:11.0.1.33/255.255.255.255
-- IP:11.0.1.34/255.255.255.255
-- IP:11.0.1.35/255.255.255.255
-- IP:11.0.1.36/255.255.255.255
-- IP:11.0.1.37/255.255.255.255
-- IP:11.0.1.38/255.255.255.255
-- IP:11.0.1.39/255.255.255.255
-- IP:11.0.1.40/255.255.255.255
-- IP:11.0.1.41/255.255.255.255
-- IP:11.0.1.42/255.255.255.255
-- IP:11.0.1.43/255.255.255.255
-- IP:11.0.1.44/255.255.255.255
-- IP:11.0.1.45/255.255.255.255
-- IP:11.0.1.46/255.255.255.255
-- IP:11.0.1.47/255.255.255.255
-- IP:11.0.1.48/255.255.255.255
-- IP:11.0.1.49/255.255.255.255
-- IP:11.0.1.50/255.255.255.255
-- IP:11.0.1.51/255.255.255.255
-- IP:11.0.1.52/255.255.255.255
-- IP:11.0.1.53/255.255.255.255
-- IP:11.0.1.54/255.255.255.255
-- IP:11.0.1.55/255.255.255.255
-- IP:11.0.1.56/255.255.255.255
-- IP:11.0.1.57/255.255.255.255
-- IP:11.0.1.58/255.255.255.255
-- IP:11.0.1.59/255.255.255.255
-- IP:11.0.1.60/255.255.255.255
-- IP:11.0.1.61/255.255.255.255
-- IP:11.0.1.62/255.255.255.255
-- IP:11.0.1.63/255.255.255.255
-- IP:11.0.1.64/255.255.255.255
-- IP:11.0.1.65/255.255.255.255
-- IP:11.0.1.66/255.255.255.255
-- IP:11.0.1.67/255.255.255.255
-- IP:11.0.1.68/255.255.255.255
-- IP:11.0.1.69/255.255.255.255
-- IP:11.0.1.70/255.255.255.255
-- IP:11.0.1.71/255.255.255.255
-- IP:11.0.1.72/255.255.255.255
-- IP:11.0.1.73/255.255.255.255
-- IP:11.0.1.74/255.255.255.255
-- IP:11.0.1.75/255.255.255.255
-- IP:11.0.1.76/255.255.255.255
-- IP:11.0.1.77/255.255.255.255
-- IP:11.0.1.78/255.255.255.255
-- IP:11.0.1.79/255.255.255.255
-- IP:11.0.1.80/255.255.255.255
-- IP:11.0.1.81/255.255.255.255
-- IP:11.0.1.82/255.255.255.255
-- IP:11.0.1.83/255.255.255.255
-- IP:11.0.1.84/255.255.255.255
-- IP:11.0.1.85/255.255.255.255
-- IP:11.0.1.86/255.255.255.255
-- IP:11.0.1.87/255.255.255.255
-- IP:11.0.1.88/255.255.255.255
-- IP:11.0.1.89/255.255.255.255
-- IP:11.0.1.90/255.255.255.255
-- IP:11.0.1.91/255.255.255.255
-- IP:11.0.1.92/255.255.255.255
-- IP:11.0.1.93/255.255.255.255
-- IP:11.0.1.94/255.255.255.255
-- IP:11.0.1.95/255.255.255.255
-- IP:11.0.1.96/255.255.255.255
-- IP:11.0.1.97/255.255.255.255
-- IP:11.0.1.98/255.255.255.255
-- IP:11.0.1.99/255.255.255.255
-- IP:11.0.1.100/255.255.255.255
-- IP:11.0.1.101/255.255.255.255
-- IP:11.0.1.102/255.255.255.255
-- IP:11.0.1.103/255.255.255.255
-- IP:11.0.1.104/255.255.255.255
-- IP:11.0.1.105/255.255.255.255
-- IP:11.0.1.106/255.255.255.255
-- IP:11.0.1.107/255.255.255.255
-- IP:11.0.1.108/255.255.255.255
-- IP:11.0.1.109/255.255.255.255
-- IP:11.0.1.110/255.255.255.255
-- IP:11.0.1.111/255.255.255.255
-- IP:11.0.1.112/255.255.255.255
-- IP:11.0.1.113/255.255.255.255
-- IP:11.0.1.114/255.255.255.255
-- IP:11.0.1.115/255.255.255.255
-- IP:11.0.1.116/255.255.255.255
-- IP:11.0.1.117/255.255.255.255
-- IP:11.0.1.118/255.255.255.255
-- IP:11.0.1.119/255.255.255.255
-- IP:11.0.1.120/255.255.255.255
-- IP:11.0.1.121/255.255.255.255
-- IP:11.0.1.122/255.255.255.255
-- IP:11.0.1.123/255.255.255.255
-- IP:11.0.1.124/255.255.255.255
-- IP:11.0.1.125/255.255.255.255
-- IP:11.0.1.126/255.255.255.255
-- IP:11.0.1.127/255.255.255.255
-- IP:11.0.1.128/255.255.255.255
-- IP:11.0.1.129/255.255.255.255
-- IP:11.0.1.130/255.255.255.255
-- IP:11.0.1.131/255.255.255.255
-- IP:11.0.1.132/255.255.255.255
-- IP:11.0.1.133/255.255.255.255
-- IP:11.0.1.134/255.255.255.255
-- IP:11.0.1.135/255.255.255.255
-- IP:11.0.1.136/255.255.255.255
-- IP:11.0.1.137/255.255.255.255
-- IP:11.0.1.138/255.255.255.255
-- IP:11.0.1.139/255.255.255.255
-- IP:11.0.1.140/255.255.255.255
-- IP:11.0.1.141/255.255.255.255
-- IP:11.0.1.142/255.255.255.255
-- IP:11.0.1.143/255.255.255.255
-- IP:11.0.1.144/255.255.255.255
-- IP:11.0.1.145/255.255.255.255
-- IP:11.0.1.146/255.255.255.255
-- IP:11.0.1.147/255.255.255.255
-- IP:11.0.1.148/255.255.255.255
-- IP:11.0.1.149/255.255.255.255
-- IP:11.0.1.150/255.255.255.255
-- IP:11.0.1.151/255.255.255.255
-- IP:11.0.1.152/255.255.255.255
-- IP:11.0.1.153/255.255.255.255
-- IP:11.0.1.154/255.255.255.255
-- IP:11.0.1.155/255.255.255.255
-- IP:11.0.1.156/255.255.255.255
-- IP:11.0.1.157/255.255.255.255
-- IP:11.0.1.158/255.255.255.255
-- IP:11.0.1.159/255.255.255.255
-- IP:11.0.1.160/255.255.255.255
-- IP:11.0.1.161/255.255.255.255
-- DirName:CN = x0
-- DirName:CN = x1
-- DirName:CN = x2
-- DirName:CN = x3
-- DirName:CN = x4
-- DirName:CN = x5
-- DirName:CN = x6
-- DirName:CN = x7
-- DirName:CN = x8
-- DirName:CN = x9
-- DirName:CN = x10
-- DirName:CN = x11
-- DirName:CN = x12
-- DirName:CN = x13
-- DirName:CN = x14
-- DirName:CN = x15
-- DirName:CN = x16
-- DirName:CN = x17
-- DirName:CN = x18
-- DirName:CN = x19
-- DirName:CN = x20
-- DirName:CN = x21
-- DirName:CN = x22
-- DirName:CN = x23
-- DirName:CN = x24
-- DirName:CN = x25
-- DirName:CN = x26
-- DirName:CN = x27
-- DirName:CN = x28
-- DirName:CN = x29
-- DirName:CN = x30
-- DirName:CN = x31
-- DirName:CN = x32
-- DirName:CN = x33
-- DirName:CN = x34
-- DirName:CN = x35
-- DirName:CN = x36
-- DirName:CN = x37
-- DirName:CN = x38
-- DirName:CN = x39
-- DirName:CN = x40
-- DirName:CN = x41
-- DirName:CN = x42
-- DirName:CN = x43
-- DirName:CN = x44
-- DirName:CN = x45
-- DirName:CN = x46
-- DirName:CN = x47
-- DirName:CN = x48
-- DirName:CN = x49
-- DirName:CN = x50
-- DirName:CN = x51
-- DirName:CN = x52
-- DirName:CN = x53
-- DirName:CN = x54
-- DirName:CN = x55
-- DirName:CN = x56
-- DirName:CN = x57
-- DirName:CN = x58
-- DirName:CN = x59
-- DirName:CN = x60
-- DirName:CN = x61
-- DirName:CN = x62
-- DirName:CN = x63
-- DirName:CN = x64
-- DirName:CN = x65
-- DirName:CN = x66
-- DirName:CN = x67
-- DirName:CN = x68
-- DirName:CN = x69
-- DirName:CN = x70
-- DirName:CN = x71
-- DirName:CN = x72
-- DirName:CN = x73
-- DirName:CN = x74
-- DirName:CN = x75
-- DirName:CN = x76
-- DirName:CN = x77
-- DirName:CN = x78
-- DirName:CN = x79
-- DirName:CN = x80
-- DirName:CN = x81
-- DirName:CN = x82
-- DirName:CN = x83
-- DirName:CN = x84
-- DirName:CN = x85
-- DirName:CN = x86
-- DirName:CN = x87
-- DirName:CN = x88
-- DirName:CN = x89
-- DirName:CN = x90
-- DirName:CN = x91
-- DirName:CN = x92
-- DirName:CN = x93
-- DirName:CN = x94
-- DirName:CN = x95
-- DirName:CN = x96
-- DirName:CN = x97
-- DirName:CN = x98
-- DirName:CN = x99
-- DirName:CN = x100
-- DirName:CN = x101
-- DirName:CN = x102
-- DirName:CN = x103
-- DirName:CN = x104
-- DirName:CN = x105
-- DirName:CN = x106
-- DirName:CN = x107
-- DirName:CN = x108
-- DirName:CN = x109
-- DirName:CN = x110
-- DirName:CN = x111
-- DirName:CN = x112
-- DirName:CN = x113
-- DirName:CN = x114
-- DirName:CN = x115
-- DirName:CN = x116
-- DirName:CN = x117
-- DirName:CN = x118
-- DirName:CN = x119
-- DirName:CN = x120
-- DirName:CN = x121
-- DirName:CN = x122
-- DirName:CN = x123
-- DirName:CN = x124
-- DirName:CN = x125
-- DirName:CN = x126
-- DirName:CN = x127
-- DirName:CN = x128
-- DirName:CN = x129
-- DirName:CN = x130
-- DirName:CN = x131
-- DirName:CN = x132
-- DirName:CN = x133
-- DirName:CN = x134
-- DirName:CN = x135
-- DirName:CN = x136
-- DirName:CN = x137
-- DirName:CN = x138
-- DirName:CN = x139
-- DirName:CN = x140
-- DirName:CN = x141
-- DirName:CN = x142
-- DirName:CN = x143
-- DirName:CN = x144
-- DirName:CN = x145
-- DirName:CN = x146
-- DirName:CN = x147
-- DirName:CN = x148
-- DirName:CN = x149
-- DirName:CN = x150
-- DirName:CN = x151
-- DirName:CN = x152
-- DirName:CN = x153
-- DirName:CN = x154
-- DirName:CN = x155
-- DirName:CN = x156
-- DirName:CN = x157
-- DirName:CN = x158
-- DirName:CN = x159
-- DirName:CN = x160
-- DirName:CN = x161
-- DirName:CN = x162
-- DirName:CN = x163
-- DirName:CN = x164
-- DirName:CN = x165
-- DirName:CN = x166
-- DirName:CN = x167
-- DirName:CN = x168
-- DirName:CN = x169
-- DirName:CN = x170
-- DirName:CN = x171
-- DirName:CN = x172
-- DirName:CN = x173
-- DirName:CN = x174
-- DirName:CN = x175
-- DirName:CN = x176
-- DirName:CN = x177
-- DirName:CN = x178
-- DirName:CN = x179
-- DirName:CN = x180
-- DirName:CN = x181
-- DirName:CN = x182
-- DirName:CN = x183
-- DirName:CN = x184
-- DirName:CN = x185
-- DirName:CN = x186
-- DirName:CN = x187
-- DirName:CN = x188
-- DirName:CN = x189
-- DirName:CN = x190
-- DirName:CN = x191
-- DirName:CN = x192
-- DirName:CN = x193
-- DirName:CN = x194
-- DirName:CN = x195
-- DirName:CN = x196
-- DirName:CN = x197
-- DirName:CN = x198
-- DirName:CN = x199
-- DirName:CN = x200
-- DirName:CN = x201
-- DirName:CN = x202
-- DirName:CN = x203
-- DirName:CN = x204
-- DirName:CN = x205
-- DirName:CN = x206
-- DirName:CN = x207
-- DirName:CN = x208
-- DirName:CN = x209
-- DirName:CN = x210
-- DirName:CN = x211
-- DirName:CN = x212
-- DirName:CN = x213
-- DirName:CN = x214
-- DirName:CN = x215
-- DirName:CN = x216
-- DirName:CN = x217
-- DirName:CN = x218
-- DirName:CN = x219
-- DirName:CN = x220
-- DirName:CN = x221
-- DirName:CN = x222
-- DirName:CN = x223
-- DirName:CN = x224
-- DirName:CN = x225
-- DirName:CN = x226
-- DirName:CN = x227
-- DirName:CN = x228
-- DirName:CN = x229
-- DirName:CN = x230
-- DirName:CN = x231
-- DirName:CN = x232
-- DirName:CN = x233
-- DirName:CN = x234
-- DirName:CN = x235
-- DirName:CN = x236
-- DirName:CN = x237
-- DirName:CN = x238
-- DirName:CN = x239
-- DirName:CN = x240
-- DirName:CN = x241
-- DirName:CN = x242
-- DirName:CN = x243
-- DirName:CN = x244
-- DirName:CN = x245
-- DirName:CN = x246
-- DirName:CN = x247
-- DirName:CN = x248
-- DirName:CN = x249
-- DirName:CN = x250
-- DirName:CN = x251
-- DirName:CN = x252
-- DirName:CN = x253
-- DirName:CN = x254
-- DirName:CN = x255
-- DirName:CN = x256
-- DirName:CN = x257
-- DirName:CN = x258
-- DirName:CN = x259
-- DirName:CN = x260
-- DirName:CN = x261
-- DirName:CN = x262
-- DirName:CN = x263
-- DirName:CN = x264
-- DirName:CN = x265
-- DirName:CN = x266
-- DirName:CN = x267
-- DirName:CN = x268
-- DirName:CN = x269
-- DirName:CN = x270
-- DirName:CN = x271
-- DirName:CN = x272
-- DirName:CN = x273
-- DirName:CN = x274
-- DirName:CN = x275
-- DirName:CN = x276
-- DirName:CN = x277
-- DirName:CN = x278
-- DirName:CN = x279
-- DirName:CN = x280
-- DirName:CN = x281
-- DirName:CN = x282
-- DirName:CN = x283
-- DirName:CN = x284
-- DirName:CN = x285
-- DirName:CN = x286
-- DirName:CN = x287
-- DirName:CN = x288
-- DirName:CN = x289
-- DirName:CN = x290
-- DirName:CN = x291
-- DirName:CN = x292
-- DirName:CN = x293
-- DirName:CN = x294
-- DirName:CN = x295
-- DirName:CN = x296
-- DirName:CN = x297
-- DirName:CN = x298
-- DirName:CN = x299
-- DirName:CN = x300
-- DirName:CN = x301
-- DirName:CN = x302
-- DirName:CN = x303
-- DirName:CN = x304
-- DirName:CN = x305
-- DirName:CN = x306
-- DirName:CN = x307
-- DirName:CN = x308
-- DirName:CN = x309
-- DirName:CN = x310
-- DirName:CN = x311
-- DirName:CN = x312
-- DirName:CN = x313
-- DirName:CN = x314
-- DirName:CN = x315
-- DirName:CN = x316
-- DirName:CN = x317
-- DirName:CN = x318
-- DirName:CN = x319
-- DirName:CN = x320
-- DirName:CN = x321
-- DirName:CN = x322
-- DirName:CN = x323
-- DirName:CN = x324
-- DirName:CN = x325
-- DirName:CN = x326
-- DirName:CN = x327
-- DirName:CN = x328
-- DirName:CN = x329
-- DirName:CN = x330
-- DirName:CN = x331
-- DirName:CN = x332
-- DirName:CN = x333
-- DirName:CN = x334
-- DirName:CN = x335
-- DirName:CN = x336
-- DirName:CN = x337
-- DirName:CN = x338
-- DirName:CN = x339
-- DirName:CN = x340
-- DirName:CN = x341
-- DirName:CN = x342
-- DirName:CN = x343
-- DirName:CN = x344
-- DirName:CN = x345
-- DirName:CN = x346
-- DirName:CN = x347
-- DirName:CN = x348
-- DirName:CN = x349
-- DirName:CN = x350
-- DirName:CN = x351
-- DirName:CN = x352
-- DirName:CN = x353
-- DirName:CN = x354
-- DirName:CN = x355
-- DirName:CN = x356
-- DirName:CN = x357
-- DirName:CN = x358
-- DirName:CN = x359
-- DirName:CN = x360
-- DirName:CN = x361
-- DirName:CN = x362
-- DirName:CN = x363
-- DirName:CN = x364
-- DirName:CN = x365
-- DirName:CN = x366
-- DirName:CN = x367
-- DirName:CN = x368
-- DirName:CN = x369
-- DirName:CN = x370
-- DirName:CN = x371
-- DirName:CN = x372
-- DirName:CN = x373
-- DirName:CN = x374
-- DirName:CN = x375
-- DirName:CN = x376
-- DirName:CN = x377
-- DirName:CN = x378
-- DirName:CN = x379
-- DirName:CN = x380
-- DirName:CN = x381
-- DirName:CN = x382
-- DirName:CN = x383
-- DirName:CN = x384
-- DirName:CN = x385
-- DirName:CN = x386
-- DirName:CN = x387
-- DirName:CN = x388
-- DirName:CN = x389
-- DirName:CN = x390
-- DirName:CN = x391
-- DirName:CN = x392
-- DirName:CN = x393
-- DirName:CN = x394
-- DirName:CN = x395
-- DirName:CN = x396
-- DirName:CN = x397
-- DirName:CN = x398
-- DirName:CN = x399
-- DirName:CN = x400
-- DirName:CN = x401
-- DirName:CN = x402
-- DirName:CN = x403
-- DirName:CN = x404
-- DirName:CN = x405
-- DirName:CN = x406
-- DirName:CN = x407
-- DirName:CN = x408
-- DirName:CN = x409
-- DirName:CN = x410
-- DirName:CN = x411
-- DirName:CN = x412
-- DirName:CN = x413
-- DirName:CN = x414
-- DirName:CN = x415
-- DirName:CN = x416
-- DirName:CN = x417
-+ DirName: CN = x0
-+ DirName: CN = x1
-+ DirName: CN = x2
-+ DirName: CN = x3
-+ DirName: CN = x4
-+ DirName: CN = x5
-+ DirName: CN = x6
-+ DirName: CN = x7
-+ DirName: CN = x8
-+ DirName: CN = x9
-+ DirName: CN = x10
-+ DirName: CN = x11
-+ DirName: CN = x12
-+ DirName: CN = x13
-+ DirName: CN = x14
-+ DirName: CN = x15
-+ DirName: CN = x16
-+ DirName: CN = x17
-+ DirName: CN = x18
-+ DirName: CN = x19
-+ DirName: CN = x20
-+ DirName: CN = x21
-+ DirName: CN = x22
-+ DirName: CN = x23
-+ DirName: CN = x24
-+ DirName: CN = x25
-+ DirName: CN = x26
-+ DirName: CN = x27
-+ DirName: CN = x28
-+ DirName: CN = x29
-+ DirName: CN = x30
-+ DirName: CN = x31
-+ DirName: CN = x32
-+ DirName: CN = x33
-+ DirName: CN = x34
-+ DirName: CN = x35
-+ DirName: CN = x36
-+ DirName: CN = x37
-+ DirName: CN = x38
-+ DirName: CN = x39
-+ DirName: CN = x40
-+ DirName: CN = x41
-+ DirName: CN = x42
-+ DirName: CN = x43
-+ DirName: CN = x44
-+ DirName: CN = x45
-+ DirName: CN = x46
-+ DirName: CN = x47
-+ DirName: CN = x48
-+ DirName: CN = x49
-+ DirName: CN = x50
-+ DirName: CN = x51
-+ DirName: CN = x52
-+ DirName: CN = x53
-+ DirName: CN = x54
-+ DirName: CN = x55
-+ DirName: CN = x56
-+ DirName: CN = x57
-+ DirName: CN = x58
-+ DirName: CN = x59
-+ DirName: CN = x60
-+ DirName: CN = x61
-+ DirName: CN = x62
-+ DirName: CN = x63
-+ DirName: CN = x64
-+ DirName: CN = x65
-+ DirName: CN = x66
-+ DirName: CN = x67
-+ DirName: CN = x68
-+ DirName: CN = x69
-+ DirName: CN = x70
-+ DirName: CN = x71
-+ DirName: CN = x72
-+ DirName: CN = x73
-+ DirName: CN = x74
-+ DirName: CN = x75
-+ DirName: CN = x76
-+ DirName: CN = x77
-+ DirName: CN = x78
-+ DirName: CN = x79
-+ DirName: CN = x80
-+ DirName: CN = x81
-+ DirName: CN = x82
-+ DirName: CN = x83
-+ DirName: CN = x84
-+ DirName: CN = x85
-+ DirName: CN = x86
-+ DirName: CN = x87
-+ DirName: CN = x88
-+ DirName: CN = x89
-+ DirName: CN = x90
-+ DirName: CN = x91
-+ DirName: CN = x92
-+ DirName: CN = x93
-+ DirName: CN = x94
-+ DirName: CN = x95
-+ DirName: CN = x96
-+ DirName: CN = x97
-+ DirName: CN = x98
-+ DirName: CN = x99
-+ DirName: CN = x100
-+ DirName: CN = x101
-+ DirName: CN = x102
-+ DirName: CN = x103
-+ DirName: CN = x104
-+ DirName: CN = x105
-+ DirName: CN = x106
-+ DirName: CN = x107
-+ DirName: CN = x108
-+ DirName: CN = x109
-+ DirName: CN = x110
-+ DirName: CN = x111
-+ DirName: CN = x112
-+ DirName: CN = x113
-+ DirName: CN = x114
-+ DirName: CN = x115
-+ DirName: CN = x116
-+ DirName: CN = x117
-+ DirName: CN = x118
-+ DirName: CN = x119
-+ DirName: CN = x120
-+ DirName: CN = x121
-+ DirName: CN = x122
-+ DirName: CN = x123
-+ DirName: CN = x124
-+ DirName: CN = x125
-+ DirName: CN = x126
-+ DirName: CN = x127
-+ DirName: CN = x128
-+ DirName: CN = x129
-+ DirName: CN = x130
-+ DirName: CN = x131
-+ DirName: CN = x132
-+ DirName: CN = x133
-+ DirName: CN = x134
-+ DirName: CN = x135
-+ DirName: CN = x136
-+ DirName: CN = x137
-+ DirName: CN = x138
-+ DirName: CN = x139
-+ DirName: CN = x140
-+ DirName: CN = x141
-+ DirName: CN = x142
-+ DirName: CN = x143
-+ DirName: CN = x144
-+ DirName: CN = x145
-+ DirName: CN = x146
-+ DirName: CN = x147
-+ DirName: CN = x148
-+ DirName: CN = x149
-+ DirName: CN = x150
-+ DirName: CN = x151
-+ DirName: CN = x152
-+ DirName: CN = x153
-+ DirName: CN = x154
-+ DirName: CN = x155
-+ DirName: CN = x156
-+ DirName: CN = x157
-+ DirName: CN = x158
-+ DirName: CN = x159
-+ DirName: CN = x160
-+ DirName: CN = x161
-+ DirName: CN = x162
-+ DirName: CN = x163
-+ DirName: CN = x164
-+ DirName: CN = x165
-+ DirName: CN = x166
-+ DirName: CN = x167
-+ DirName: CN = x168
-+ DirName: CN = x169
- URI:http://xest/0
- URI:http://xest/1
- URI:http://xest/2
-@@ -5381,1642 +3840,1168 @@ Certificate:
- URI:http://xest/1024
-
- Signature Algorithm: sha256WithRSAEncryption
-- 1c:1e:3f:63:2c:1d:06:01:13:12:d5:cf:ba:25:49:c7:fb:36:
-- bd:cb:32:ed:b7:35:ab:f8:e5:dc:1a:b8:1b:37:bb:ea:f5:c2:
-- 1d:40:96:fb:a9:56:94:e9:42:d9:10:a3:8e:e1:02:9e:95:03:
-- b7:3e:64:4c:a7:82:1f:91:15:27:46:0b:1e:b5:49:10:b2:42:
-- 8d:c1:a8:bd:ae:94:7e:51:2e:f4:26:1a:f4:0d:8a:03:cd:3b:
-- 3a:8a:df:94:c2:f1:58:e8:66:a5:89:f0:90:6c:ca:d4:fd:0e:
-- c8:a7:ee:dd:ba:9f:b9:88:0e:c0:b5:06:4b:1c:a1:f9:bb:ba:
-- fb:0c:8f:d4:43:b6:d8:95:10:c5:63:c3:cc:a0:81:68:ae:8f:
-- 2e:24:48:60:d8:c4:9d:43:4e:25:f4:94:87:5a:ed:b9:ed:8f:
-- dd:ef:1e:48:38:3d:13:d6:4b:ef:79:8c:0d:68:f8:3a:51:8c:
-- a3:11:9c:86:c0:a6:9b:9e:bf:a5:e8:c9:2e:db:b6:8b:d6:4d:
-- 27:ee:b3:5a:1d:61:f6:13:ae:b9:52:bc:ae:70:38:8a:d8:f9:
-- a2:ee:e9:32:b0:41:78:9d:96:4c:94:aa:af:f5:de:86:16:04:
-- ad:50:d6:a9:13:82:b4:08:9b:d9:67:75:ed:a0:b9:16:b3:97:
-- b3:88:9e:5c
-+ 37:a8:be:e4:03:62:63:15:b0:fe:be:49:7f:22:5e:7a:f8:b4:
-+ 33:0c:fe:3b:41:0c:99:dc:bd:b0:a3:0c:3a:54:42:27:62:18:
-+ 15:af:e6:d5:91:63:17:1d:1b:3f:ca:f6:2e:2f:6e:71:5e:66:
-+ 86:27:69:91:31:5d:35:85:d4:46:77:69:45:50:05:9c:bc:39:
-+ b8:0f:d0:96:a6:65:02:d3:80:53:ac:58:9c:f3:ec:27:27:b2:
-+ 33:44:51:17:79:90:ea:b1:57:32:f7:e0:58:a4:99:64:78:55:
-+ 61:16:d3:51:62:cf:26:02:8d:7d:df:2d:d8:c3:d2:00:5e:03:
-+ 49:78:20:b7:78:9e:9e:b6:56:e9:48:4d:c5:5a:ea:28:e8:16:
-+ 70:4a:39:bb:1d:88:40:5a:fd:67:82:73:f3:c6:f2:e9:ed:70:
-+ 83:de:72:3f:7d:08:2f:1a:43:4d:c9:b2:e9:ce:e6:43:a9:74:
-+ 25:cd:ba:95:cd:51:97:cb:56:d4:e6:e6:d9:69:0a:5f:48:17:
-+ 2a:3b:41:ac:a5:ec:1f:30:c9:b2:f1:68:8f:a1:0f:1e:7d:9e:
-+ e3:be:bb:8d:cb:6e:41:6a:16:7a:48:f5:ac:14:69:f7:de:63:
-+ fc:94:80:e7:62:da:e6:99:12:ad:f1:d2:5d:76:6b:c3:11:6e:
-+ 55:5d:7e:ec
- -----BEGIN CERTIFICATE-----
--MIMBL50wgwEuhKADAgECAhQ85fyBiFmoUBbBf9flKuWWf8L29jANBgkqhkiG9w0B
--AQsFADAPMQ0wCwYDVQQDDARSb290MB4XDTIxMTAwNTEyMDAwMFoXDTIyMTAwNTEy
--MDAwMFowFzEVMBMGA1UEAwwMSW50ZXJtZWRpYXRlMIIBIjANBgkqhkiG9w0BAQEF
--AAOCAQ8AMIIBCgKCAQEAuzvbBG4X4FRSuiN3JLw043DZmZ5TXTMLqcxLHa4GJxiO
--VbqtEscdMlltwxYg22Kmd4AS4IdYUVXjZn/R4DoiZeVwJqIEBPBd+V9WyNroD1co
--d26aoEpTNBpjN6JDqw5KzQcj3VWDRAAMcEHfNWTQxQ5qh9vK/DXV4luvC6DmdaXS
--4XJOImMBQXO4lVAs/e3DYbY21IOVYcPgYf/0noroutzR9ontnTBElSf00YvmLxRm
--VvHa8cwEG3eSpZ9YQAyfDDLWBcJMwMWf5aQwPUzpnQNsTAa25ZW9IbjmK6igvwa7
--QzMZPXsXWfFkTSRnsVEPNa7wcXV5rlsCNAQx42aGZQIDAQABo4MBLOUwgwEs4DAd
--BgNVHQ4EFgQUkhE/rBGWx2Y3z4NaJPA6d68zjX8wHwYDVR0jBBgwFoAUtsLvn9Ep
--yw+JjExS1L1AtxG3cd0wNwYIKwYBBQUHAQEEKzApMCcGCCsGAQUFBzAChhtodHRw
--Oi8vdXJsLWZvci1haWEvUm9vdC5jZXIwLAYDVR0fBCUwIzAhoB+gHYYbaHR0cDov
--L3VybC1mb3ItY3JsL1Jvb3QuY3JsMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E
--BTADAQH/MIMBLBMGA1UdHgSDASwJMIMBLASggpX+MAmCB3QwLnRlc3QwCYIHdDEu
--dGVzdDAJggd0Mi50ZXN0MAmCB3QzLnRlc3QwCYIHdDQudGVzdDAJggd0NS50ZXN0
--MAmCB3Q2LnRlc3QwCYIHdDcudGVzdDAJggd0OC50ZXN0MAmCB3Q5LnRlc3QwCoII
--dDEwLnRlc3QwCoIIdDExLnRlc3QwCoIIdDEyLnRlc3QwCoIIdDEzLnRlc3QwCoII
--dDE0LnRlc3QwCoIIdDE1LnRlc3QwCoIIdDE2LnRlc3QwCoIIdDE3LnRlc3QwCoII
--dDE4LnRlc3QwCoIIdDE5LnRlc3QwCoIIdDIwLnRlc3QwCoIIdDIxLnRlc3QwCoII
--dDIyLnRlc3QwCoIIdDIzLnRlc3QwCoIIdDI0LnRlc3QwCoIIdDI1LnRlc3QwCoII
--dDI2LnRlc3QwCoIIdDI3LnRlc3QwCoIIdDI4LnRlc3QwCoIIdDI5LnRlc3QwCoII
--dDMwLnRlc3QwCoIIdDMxLnRlc3QwCoIIdDMyLnRlc3QwCoIIdDMzLnRlc3QwCoII
--dDM0LnRlc3QwCoIIdDM1LnRlc3QwCoIIdDM2LnRlc3QwCoIIdDM3LnRlc3QwCoII
--dDM4LnRlc3QwCoIIdDM5LnRlc3QwCoIIdDQwLnRlc3QwCoIIdDQxLnRlc3QwCoII
--dDQyLnRlc3QwCoIIdDQzLnRlc3QwCoIIdDQ0LnRlc3QwCoIIdDQ1LnRlc3QwCoII
--dDQ2LnRlc3QwCoIIdDQ3LnRlc3QwCoIIdDQ4LnRlc3QwCoIIdDQ5LnRlc3QwCoII
--dDUwLnRlc3QwCoIIdDUxLnRlc3QwCoIIdDUyLnRlc3QwCoIIdDUzLnRlc3QwCoII
--dDU0LnRlc3QwCoIIdDU1LnRlc3QwCoIIdDU2LnRlc3QwCoIIdDU3LnRlc3QwCoII
--dDU4LnRlc3QwCoIIdDU5LnRlc3QwCoIIdDYwLnRlc3QwCoIIdDYxLnRlc3QwCoII
--dDYyLnRlc3QwCoIIdDYzLnRlc3QwCoIIdDY0LnRlc3QwCoIIdDY1LnRlc3QwCoII
--dDY2LnRlc3QwCoIIdDY3LnRlc3QwCoIIdDY4LnRlc3QwCoIIdDY5LnRlc3QwCoII
--dDcwLnRlc3QwCoIIdDcxLnRlc3QwCoIIdDcyLnRlc3QwCoIIdDczLnRlc3QwCoII
--dDc0LnRlc3QwCoIIdDc1LnRlc3QwCoIIdDc2LnRlc3QwCoIIdDc3LnRlc3QwCoII
--dDc4LnRlc3QwCoIIdDc5LnRlc3QwCoIIdDgwLnRlc3QwCoIIdDgxLnRlc3QwCoII
--dDgyLnRlc3QwCoIIdDgzLnRlc3QwCoIIdDg0LnRlc3QwCoIIdDg1LnRlc3QwCoII
--dDg2LnRlc3QwCoIIdDg3LnRlc3QwCoIIdDg4LnRlc3QwCoIIdDg5LnRlc3QwCoII
--dDkwLnRlc3QwCoIIdDkxLnRlc3QwCoIIdDkyLnRlc3QwCoIIdDkzLnRlc3QwCoII
--dDk0LnRlc3QwCoIIdDk1LnRlc3QwCoIIdDk2LnRlc3QwCoIIdDk3LnRlc3QwCoII
--dDk4LnRlc3QwCoIIdDk5LnRlc3QwC4IJdDEwMC50ZXN0MAuCCXQxMDEudGVzdDAL
--ggl0MTAyLnRlc3QwC4IJdDEwMy50ZXN0MAuCCXQxMDQudGVzdDALggl0MTA1LnRl
--c3QwC4IJdDEwNi50ZXN0MAuCCXQxMDcudGVzdDALggl0MTA4LnRlc3QwC4IJdDEw
--OS50ZXN0MAuCCXQxMTAudGVzdDALggl0MTExLnRlc3QwC4IJdDExMi50ZXN0MAuC
--CXQxMTMudGVzdDALggl0MTE0LnRlc3QwC4IJdDExNS50ZXN0MAuCCXQxMTYudGVz
--dDALggl0MTE3LnRlc3QwC4IJdDExOC50ZXN0MAuCCXQxMTkudGVzdDALggl0MTIw
--LnRlc3QwC4IJdDEyMS50ZXN0MAuCCXQxMjIudGVzdDALggl0MTIzLnRlc3QwC4IJ
--dDEyNC50ZXN0MAuCCXQxMjUudGVzdDALggl0MTI2LnRlc3QwC4IJdDEyNy50ZXN0
--MAuCCXQxMjgudGVzdDALggl0MTI5LnRlc3QwC4IJdDEzMC50ZXN0MAuCCXQxMzEu
--dGVzdDALggl0MTMyLnRlc3QwC4IJdDEzMy50ZXN0MAuCCXQxMzQudGVzdDALggl0
--MTM1LnRlc3QwC4IJdDEzNi50ZXN0MAuCCXQxMzcudGVzdDALggl0MTM4LnRlc3Qw
--C4IJdDEzOS50ZXN0MAuCCXQxNDAudGVzdDALggl0MTQxLnRlc3QwC4IJdDE0Mi50
--ZXN0MAuCCXQxNDMudGVzdDALggl0MTQ0LnRlc3QwC4IJdDE0NS50ZXN0MAuCCXQx
--NDYudGVzdDALggl0MTQ3LnRlc3QwC4IJdDE0OC50ZXN0MAuCCXQxNDkudGVzdDAL
--ggl0MTUwLnRlc3QwC4IJdDE1MS50ZXN0MAuCCXQxNTIudGVzdDALggl0MTUzLnRl
--c3QwC4IJdDE1NC50ZXN0MAuCCXQxNTUudGVzdDALggl0MTU2LnRlc3QwC4IJdDE1
--Ny50ZXN0MAuCCXQxNTgudGVzdDALggl0MTU5LnRlc3QwC4IJdDE2MC50ZXN0MAuC
--CXQxNjEudGVzdDALggl0MTYyLnRlc3QwC4IJdDE2My50ZXN0MAuCCXQxNjQudGVz
--dDALggl0MTY1LnRlc3QwC4IJdDE2Ni50ZXN0MAuCCXQxNjcudGVzdDALggl0MTY4
--LnRlc3QwC4IJdDE2OS50ZXN0MAuCCXQxNzAudGVzdDALggl0MTcxLnRlc3QwC4IJ
--dDE3Mi50ZXN0MAuCCXQxNzMudGVzdDALggl0MTc0LnRlc3QwC4IJdDE3NS50ZXN0
--MAuCCXQxNzYudGVzdDALggl0MTc3LnRlc3QwC4IJdDE3OC50ZXN0MAuCCXQxNzku
--dGVzdDALggl0MTgwLnRlc3QwC4IJdDE4MS50ZXN0MAuCCXQxODIudGVzdDALggl0
--MTgzLnRlc3QwC4IJdDE4NC50ZXN0MAuCCXQxODUudGVzdDALggl0MTg2LnRlc3Qw
--C4IJdDE4Ny50ZXN0MAuCCXQxODgudGVzdDALggl0MTg5LnRlc3QwC4IJdDE5MC50
--ZXN0MAuCCXQxOTEudGVzdDALggl0MTkyLnRlc3QwC4IJdDE5My50ZXN0MAuCCXQx
--OTQudGVzdDALggl0MTk1LnRlc3QwC4IJdDE5Ni50ZXN0MAuCCXQxOTcudGVzdDAL
--ggl0MTk4LnRlc3QwC4IJdDE5OS50ZXN0MAuCCXQyMDAudGVzdDALggl0MjAxLnRl
--c3QwC4IJdDIwMi50ZXN0MAuCCXQyMDMudGVzdDALggl0MjA0LnRlc3QwC4IJdDIw
--NS50ZXN0MAuCCXQyMDYudGVzdDALggl0MjA3LnRlc3QwC4IJdDIwOC50ZXN0MAuC
--CXQyMDkudGVzdDALggl0MjEwLnRlc3QwC4IJdDIxMS50ZXN0MAuCCXQyMTIudGVz
--dDALggl0MjEzLnRlc3QwC4IJdDIxNC50ZXN0MAuCCXQyMTUudGVzdDALggl0MjE2
--LnRlc3QwC4IJdDIxNy50ZXN0MAuCCXQyMTgudGVzdDALggl0MjE5LnRlc3QwC4IJ
--dDIyMC50ZXN0MAuCCXQyMjEudGVzdDALggl0MjIyLnRlc3QwC4IJdDIyMy50ZXN0
--MAuCCXQyMjQudGVzdDALggl0MjI1LnRlc3QwC4IJdDIyNi50ZXN0MAuCCXQyMjcu
--dGVzdDALggl0MjI4LnRlc3QwC4IJdDIyOS50ZXN0MAuCCXQyMzAudGVzdDALggl0
--MjMxLnRlc3QwC4IJdDIzMi50ZXN0MAuCCXQyMzMudGVzdDALggl0MjM0LnRlc3Qw
--C4IJdDIzNS50ZXN0MAuCCXQyMzYudGVzdDALggl0MjM3LnRlc3QwC4IJdDIzOC50
--ZXN0MAuCCXQyMzkudGVzdDALggl0MjQwLnRlc3QwC4IJdDI0MS50ZXN0MAuCCXQy
--NDIudGVzdDALggl0MjQzLnRlc3QwC4IJdDI0NC50ZXN0MAuCCXQyNDUudGVzdDAL
--ggl0MjQ2LnRlc3QwC4IJdDI0Ny50ZXN0MAuCCXQyNDgudGVzdDALggl0MjQ5LnRl
--c3QwC4IJdDI1MC50ZXN0MAuCCXQyNTEudGVzdDALggl0MjUyLnRlc3QwC4IJdDI1
--My50ZXN0MAuCCXQyNTQudGVzdDALggl0MjU1LnRlc3QwC4IJdDI1Ni50ZXN0MAuC
--CXQyNTcudGVzdDALggl0MjU4LnRlc3QwC4IJdDI1OS50ZXN0MAuCCXQyNjAudGVz
--dDALggl0MjYxLnRlc3QwC4IJdDI2Mi50ZXN0MAuCCXQyNjMudGVzdDALggl0MjY0
--LnRlc3QwC4IJdDI2NS50ZXN0MAuCCXQyNjYudGVzdDALggl0MjY3LnRlc3QwC4IJ
--dDI2OC50ZXN0MAuCCXQyNjkudGVzdDALggl0MjcwLnRlc3QwC4IJdDI3MS50ZXN0
--MAuCCXQyNzIudGVzdDALggl0MjczLnRlc3QwC4IJdDI3NC50ZXN0MAuCCXQyNzUu
--dGVzdDALggl0Mjc2LnRlc3QwC4IJdDI3Ny50ZXN0MAuCCXQyNzgudGVzdDALggl0
--Mjc5LnRlc3QwC4IJdDI4MC50ZXN0MAuCCXQyODEudGVzdDALggl0MjgyLnRlc3Qw
--C4IJdDI4My50ZXN0MAuCCXQyODQudGVzdDALggl0Mjg1LnRlc3QwC4IJdDI4Ni50
--ZXN0MAuCCXQyODcudGVzdDALggl0Mjg4LnRlc3QwC4IJdDI4OS50ZXN0MAuCCXQy
--OTAudGVzdDALggl0MjkxLnRlc3QwC4IJdDI5Mi50ZXN0MAuCCXQyOTMudGVzdDAL
--ggl0Mjk0LnRlc3QwC4IJdDI5NS50ZXN0MAuCCXQyOTYudGVzdDALggl0Mjk3LnRl
--c3QwC4IJdDI5OC50ZXN0MAuCCXQyOTkudGVzdDALggl0MzAwLnRlc3QwC4IJdDMw
--MS50ZXN0MAuCCXQzMDIudGVzdDALggl0MzAzLnRlc3QwC4IJdDMwNC50ZXN0MAuC
--CXQzMDUudGVzdDALggl0MzA2LnRlc3QwC4IJdDMwNy50ZXN0MAuCCXQzMDgudGVz
--dDALggl0MzA5LnRlc3QwC4IJdDMxMC50ZXN0MAuCCXQzMTEudGVzdDALggl0MzEy
--LnRlc3QwC4IJdDMxMy50ZXN0MAuCCXQzMTQudGVzdDALggl0MzE1LnRlc3QwC4IJ
--dDMxNi50ZXN0MAuCCXQzMTcudGVzdDALggl0MzE4LnRlc3QwC4IJdDMxOS50ZXN0
--MAuCCXQzMjAudGVzdDALggl0MzIxLnRlc3QwC4IJdDMyMi50ZXN0MAuCCXQzMjMu
--dGVzdDALggl0MzI0LnRlc3QwC4IJdDMyNS50ZXN0MAuCCXQzMjYudGVzdDALggl0
--MzI3LnRlc3QwC4IJdDMyOC50ZXN0MAuCCXQzMjkudGVzdDALggl0MzMwLnRlc3Qw
--C4IJdDMzMS50ZXN0MAuCCXQzMzIudGVzdDALggl0MzMzLnRlc3QwC4IJdDMzNC50
--ZXN0MAuCCXQzMzUudGVzdDALggl0MzM2LnRlc3QwC4IJdDMzNy50ZXN0MAuCCXQz
--MzgudGVzdDALggl0MzM5LnRlc3QwC4IJdDM0MC50ZXN0MAuCCXQzNDEudGVzdDAL
--ggl0MzQyLnRlc3QwC4IJdDM0My50ZXN0MAuCCXQzNDQudGVzdDALggl0MzQ1LnRl
--c3QwC4IJdDM0Ni50ZXN0MAuCCXQzNDcudGVzdDALggl0MzQ4LnRlc3QwC4IJdDM0
--OS50ZXN0MAuCCXQzNTAudGVzdDALggl0MzUxLnRlc3QwC4IJdDM1Mi50ZXN0MAuC
--CXQzNTMudGVzdDALggl0MzU0LnRlc3QwC4IJdDM1NS50ZXN0MAuCCXQzNTYudGVz
--dDALggl0MzU3LnRlc3QwC4IJdDM1OC50ZXN0MAuCCXQzNTkudGVzdDALggl0MzYw
--LnRlc3QwC4IJdDM2MS50ZXN0MAuCCXQzNjIudGVzdDALggl0MzYzLnRlc3QwC4IJ
--dDM2NC50ZXN0MAuCCXQzNjUudGVzdDALggl0MzY2LnRlc3QwC4IJdDM2Ny50ZXN0
--MAuCCXQzNjgudGVzdDALggl0MzY5LnRlc3QwC4IJdDM3MC50ZXN0MAuCCXQzNzEu
--dGVzdDALggl0MzcyLnRlc3QwC4IJdDM3My50ZXN0MAuCCXQzNzQudGVzdDALggl0
--Mzc1LnRlc3QwC4IJdDM3Ni50ZXN0MAuCCXQzNzcudGVzdDALggl0Mzc4LnRlc3Qw
--C4IJdDM3OS50ZXN0MAuCCXQzODAudGVzdDALggl0MzgxLnRlc3QwC4IJdDM4Mi50
--ZXN0MAuCCXQzODMudGVzdDALggl0Mzg0LnRlc3QwC4IJdDM4NS50ZXN0MAuCCXQz
--ODYudGVzdDALggl0Mzg3LnRlc3QwC4IJdDM4OC50ZXN0MAuCCXQzODkudGVzdDAL
--ggl0MzkwLnRlc3QwC4IJdDM5MS50ZXN0MAuCCXQzOTIudGVzdDALggl0MzkzLnRl
--c3QwC4IJdDM5NC50ZXN0MAuCCXQzOTUudGVzdDALggl0Mzk2LnRlc3QwC4IJdDM5
--Ny50ZXN0MAuCCXQzOTgudGVzdDALggl0Mzk5LnRlc3QwC4IJdDQwMC50ZXN0MAuC
--CXQ0MDEudGVzdDALggl0NDAyLnRlc3QwC4IJdDQwMy50ZXN0MAuCCXQ0MDQudGVz
--dDALggl0NDA1LnRlc3QwC4IJdDQwNi50ZXN0MAuCCXQ0MDcudGVzdDALggl0NDA4
--LnRlc3QwC4IJdDQwOS50ZXN0MAuCCXQ0MTAudGVzdDALggl0NDExLnRlc3QwC4IJ
--dDQxMi50ZXN0MAuCCXQ0MTMudGVzdDALggl0NDE0LnRlc3QwC4IJdDQxNS50ZXN0
--MAuCCXQ0MTYudGVzdDALggl0NDE3LnRlc3QwCocICgAAAP////8wCocICgAAAf//
--//8wCocICgAAAv////8wCocICgAAA/////8wCocICgAABP////8wCocICgAABf//
--//8wCocICgAABv////8wCocICgAAB/////8wCocICgAACP////8wCocICgAACf//
--//8wCocICgAACv////8wCocICgAAC/////8wCocICgAADP////8wCocICgAADf//
--//8wCocICgAADv////8wCocICgAAD/////8wCocICgAAEP////8wCocICgAAEf//
--//8wCocICgAAEv////8wCocICgAAE/////8wCocICgAAFP////8wCocICgAAFf//
--//8wCocICgAAFv////8wCocICgAAF/////8wCocICgAAGP////8wCocICgAAGf//
--//8wCocICgAAGv////8wCocICgAAG/////8wCocICgAAHP////8wCocICgAAHf//
--//8wCocICgAAHv////8wCocICgAAH/////8wCocICgAAIP////8wCocICgAAIf//
--//8wCocICgAAIv////8wCocICgAAI/////8wCocICgAAJP////8wCocICgAAJf//
--//8wCocICgAAJv////8wCocICgAAJ/////8wCocICgAAKP////8wCocICgAAKf//
--//8wCocICgAAKv////8wCocICgAAK/////8wCocICgAALP////8wCocICgAALf//
--//8wCocICgAALv////8wCocICgAAL/////8wCocICgAAMP////8wCocICgAAMf//
--//8wCocICgAAMv////8wCocICgAAM/////8wCocICgAANP////8wCocICgAANf//
--//8wCocICgAANv////8wCocICgAAN/////8wCocICgAAOP////8wCocICgAAOf//
--//8wCocICgAAOv////8wCocICgAAO/////8wCocICgAAPP////8wCocICgAAPf//
--//8wCocICgAAPv////8wCocICgAAP/////8wCocICgAAQP////8wCocICgAAQf//
--//8wCocICgAAQv////8wCocICgAAQ/////8wCocICgAARP////8wCocICgAARf//
--//8wCocICgAARv////8wCocICgAAR/////8wCocICgAASP////8wCocICgAASf//
--//8wCocICgAASv////8wCocICgAAS/////8wCocICgAATP////8wCocICgAATf//
--//8wCocICgAATv////8wCocICgAAT/////8wCocICgAAUP////8wCocICgAAUf//
--//8wCocICgAAUv////8wCocICgAAU/////8wCocICgAAVP////8wCocICgAAVf//
--//8wCocICgAAVv////8wCocICgAAV/////8wCocICgAAWP////8wCocICgAAWf//
--//8wCocICgAAWv////8wCocICgAAW/////8wCocICgAAXP////8wCocICgAAXf//
--//8wCocICgAAXv////8wCocICgAAX/////8wCocICgAAYP////8wCocICgAAYf//
--//8wCocICgAAYv////8wCocICgAAY/////8wCocICgAAZP////8wCocICgAAZf//
--//8wCocICgAAZv////8wCocICgAAZ/////8wCocICgAAaP////8wCocICgAAaf//
--//8wCocICgAAav////8wCocICgAAa/////8wCocICgAAbP////8wCocICgAAbf//
--//8wCocICgAAbv////8wCocICgAAb/////8wCocICgAAcP////8wCocICgAAcf//
--//8wCocICgAAcv////8wCocICgAAc/////8wCocICgAAdP////8wCocICgAAdf//
--//8wCocICgAAdv////8wCocICgAAd/////8wCocICgAAeP////8wCocICgAAef//
--//8wCocICgAAev////8wCocICgAAe/////8wCocICgAAfP////8wCocICgAAff//
--//8wCocICgAAfv////8wCocICgAAf/////8wCocICgAAgP////8wCocICgAAgf//
--//8wCocICgAAgv////8wCocICgAAg/////8wCocICgAAhP////8wCocICgAAhf//
--//8wCocICgAAhv////8wCocICgAAh/////8wCocICgAAiP////8wCocICgAAif//
--//8wCocICgAAiv////8wCocICgAAi/////8wCocICgAAjP////8wCocICgAAjf//
--//8wCocICgAAjv////8wCocICgAAj/////8wCocICgAAkP////8wCocICgAAkf//
--//8wCocICgAAkv////8wCocICgAAk/////8wCocICgAAlP////8wCocICgAAlf//
--//8wCocICgAAlv////8wCocICgAAl/////8wCocICgAAmP////8wCocICgAAmf//
--//8wCocICgAAmv////8wCocICgAAm/////8wCocICgAAnP////8wCocICgAAnf//
--//8wCocICgAAnv////8wCocICgAAn/////8wCocICgAAoP////8wCocICgAAof//
--//8wCocICgAAov////8wCocICgAAo/////8wCocICgAApP////8wCocICgAApf//
--//8wCocICgAApv////8wCocICgAAp/////8wCocICgAAqP////8wCocICgAAqf//
--//8wCocICgAAqv////8wCocICgAAq/////8wCocICgAArP////8wCocICgAArf//
--//8wCocICgAArv////8wCocICgAAr/////8wCocICgAAsP////8wCocICgAAsf//
--//8wCocICgAAsv////8wCocICgAAs/////8wCocICgAAtP////8wCocICgAAtf//
--//8wCocICgAAtv////8wCocICgAAt/////8wCocICgAAuP////8wCocICgAAuf//
--//8wCocICgAAuv////8wCocICgAAu/////8wCocICgAAvP////8wCocICgAAvf//
--//8wCocICgAAvv////8wCocICgAAv/////8wCocICgAAwP////8wCocICgAAwf//
--//8wCocICgAAwv////8wCocICgAAw/////8wCocICgAAxP////8wCocICgAAxf//
--//8wCocICgAAxv////8wCocICgAAx/////8wCocICgAAyP////8wCocICgAAyf//
--//8wCocICgAAyv////8wCocICgAAy/////8wCocICgAAzP////8wCocICgAAzf//
--//8wCocICgAAzv////8wCocICgAAz/////8wCocICgAA0P////8wCocICgAA0f//
--//8wCocICgAA0v////8wCocICgAA0/////8wCocICgAA1P////8wCocICgAA1f//
--//8wCocICgAA1v////8wCocICgAA1/////8wCocICgAA2P////8wCocICgAA2f//
--//8wCocICgAA2v////8wCocICgAA2/////8wCocICgAA3P////8wCocICgAA3f//
--//8wCocICgAA3v////8wCocICgAA3/////8wCocICgAA4P////8wCocICgAA4f//
--//8wCocICgAA4v////8wCocICgAA4/////8wCocICgAA5P////8wCocICgAA5f//
--//8wCocICgAA5v////8wCocICgAA5/////8wCocICgAA6P////8wCocICgAA6f//
--//8wCocICgAA6v////8wCocICgAA6/////8wCocICgAA7P////8wCocICgAA7f//
--//8wCocICgAA7v////8wCocICgAA7/////8wCocICgAA8P////8wCocICgAA8f//
--//8wCocICgAA8v////8wCocICgAA8/////8wCocICgAA9P////8wCocICgAA9f//
--//8wCocICgAA9v////8wCocICgAA9/////8wCocICgAA+P////8wCocICgAA+f//
--//8wCocICgAA+v////8wCocICgAA+/////8wCocICgAA/P////8wCocICgAA/f//
--//8wCocICgAA/v////8wCocICgAA//////8wCocICgABAP////8wCocICgABAf//
--//8wCocICgABAv////8wCocICgABA/////8wCocICgABBP////8wCocICgABBf//
--//8wCocICgABBv////8wCocICgABB/////8wCocICgABCP////8wCocICgABCf//
--//8wCocICgABCv////8wCocICgABC/////8wCocICgABDP////8wCocICgABDf//
--//8wCocICgABDv////8wCocICgABD/////8wCocICgABEP////8wCocICgABEf//
--//8wCocICgABEv////8wCocICgABE/////8wCocICgABFP////8wCocICgABFf//
--//8wCocICgABFv////8wCocICgABF/////8wCocICgABGP////8wCocICgABGf//
--//8wCocICgABGv////8wCocICgABG/////8wCocICgABHP////8wCocICgABHf//
--//8wCocICgABHv////8wCocICgABH/////8wCocICgABIP////8wCocICgABIf//
--//8wCocICgABIv////8wCocICgABI/////8wCocICgABJP////8wCocICgABJf//
--//8wCocICgABJv////8wCocICgABJ/////8wCocICgABKP////8wCocICgABKf//
--//8wCocICgABKv////8wCocICgABK/////8wCocICgABLP////8wCocICgABLf//
--//8wCocICgABLv////8wCocICgABL/////8wCocICgABMP////8wCocICgABMf//
--//8wCocICgABMv////8wCocICgABM/////8wCocICgABNP////8wCocICgABNf//
--//8wCocICgABNv////8wCocICgABN/////8wCocICgABOP////8wCocICgABOf//
--//8wCocICgABOv////8wCocICgABO/////8wCocICgABPP////8wCocICgABPf//
--//8wCocICgABPv////8wCocICgABP/////8wCocICgABQP////8wCocICgABQf//
--//8wCocICgABQv////8wCocICgABQ/////8wCocICgABRP////8wCocICgABRf//
--//8wCocICgABRv////8wCocICgABR/////8wCocICgABSP////8wCocICgABSf//
--//8wCocICgABSv////8wCocICgABS/////8wCocICgABTP////8wCocICgABTf//
--//8wCocICgABTv////8wCocICgABT/////8wCocICgABUP////8wCocICgABUf//
--//8wCocICgABUv////8wCocICgABU/////8wCocICgABVP////8wCocICgABVf//
--//8wCocICgABVv////8wCocICgABV/////8wCocICgABWP////8wCocICgABWf//
--//8wCocICgABWv////8wCocICgABW/////8wCocICgABXP////8wCocICgABXf//
--//8wCocICgABXv////8wCocICgABX/////8wCocICgABYP////8wCocICgABYf//
--//8wCocICgABYv////8wCocICgABY/////8wCocICgABZP////8wCocICgABZf//
--//8wCocICgABZv////8wCocICgABZ/////8wCocICgABaP////8wCocICgABaf//
--//8wCocICgABav////8wCocICgABa/////8wCocICgABbP////8wCocICgABbf//
--//8wCocICgABbv////8wCocICgABb/////8wCocICgABcP////8wCocICgABcf//
--//8wCocICgABcv////8wCocICgABc/////8wCocICgABdP////8wCocICgABdf//
--//8wCocICgABdv////8wCocICgABd/////8wCocICgABeP////8wCocICgABef//
--//8wCocICgABev////8wCocICgABe/////8wCocICgABfP////8wCocICgABff//
--//8wCocICgABfv////8wCocICgABf/////8wCocICgABgP////8wCocICgABgf//
--//8wCocICgABgv////8wCocICgABg/////8wCocICgABhP////8wCocICgABhf//
--//8wCocICgABhv////8wCocICgABh/////8wCocICgABiP////8wCocICgABif//
--//8wCocICgABiv////8wCocICgABi/////8wCocICgABjP////8wCocICgABjf//
--//8wCocICgABjv////8wCocICgABj/////8wCocICgABkP////8wCocICgABkf//
--//8wCocICgABkv////8wCocICgABk/////8wCocICgABlP////8wCocICgABlf//
--//8wCocICgABlv////8wCocICgABl/////8wCocICgABmP////8wCocICgABmf//
--//8wCocICgABmv////8wCocICgABm/////8wCocICgABnP////8wCocICgABnf//
--//8wCocICgABnv////8wCocICgABn/////8wCocICgABoP////8wCocICgABof//
--//8wEaQPMA0xCzAJBgNVBAMMAnQwMBGkDzANMQswCQYDVQQDDAJ0MTARpA8wDTEL
--MAkGA1UEAwwCdDIwEaQPMA0xCzAJBgNVBAMMAnQzMBGkDzANMQswCQYDVQQDDAJ0
--NDARpA8wDTELMAkGA1UEAwwCdDUwEaQPMA0xCzAJBgNVBAMMAnQ2MBGkDzANMQsw
--CQYDVQQDDAJ0NzARpA8wDTELMAkGA1UEAwwCdDgwEaQPMA0xCzAJBgNVBAMMAnQ5
--MBKkEDAOMQwwCgYDVQQDDAN0MTAwEqQQMA4xDDAKBgNVBAMMA3QxMTASpBAwDjEM
--MAoGA1UEAwwDdDEyMBKkEDAOMQwwCgYDVQQDDAN0MTMwEqQQMA4xDDAKBgNVBAMM
--A3QxNDASpBAwDjEMMAoGA1UEAwwDdDE1MBKkEDAOMQwwCgYDVQQDDAN0MTYwEqQQ
--MA4xDDAKBgNVBAMMA3QxNzASpBAwDjEMMAoGA1UEAwwDdDE4MBKkEDAOMQwwCgYD
--VQQDDAN0MTkwEqQQMA4xDDAKBgNVBAMMA3QyMDASpBAwDjEMMAoGA1UEAwwDdDIx
--MBKkEDAOMQwwCgYDVQQDDAN0MjIwEqQQMA4xDDAKBgNVBAMMA3QyMzASpBAwDjEM
--MAoGA1UEAwwDdDI0MBKkEDAOMQwwCgYDVQQDDAN0MjUwEqQQMA4xDDAKBgNVBAMM
--A3QyNjASpBAwDjEMMAoGA1UEAwwDdDI3MBKkEDAOMQwwCgYDVQQDDAN0MjgwEqQQ
--MA4xDDAKBgNVBAMMA3QyOTASpBAwDjEMMAoGA1UEAwwDdDMwMBKkEDAOMQwwCgYD
--VQQDDAN0MzEwEqQQMA4xDDAKBgNVBAMMA3QzMjASpBAwDjEMMAoGA1UEAwwDdDMz
--MBKkEDAOMQwwCgYDVQQDDAN0MzQwEqQQMA4xDDAKBgNVBAMMA3QzNTASpBAwDjEM
--MAoGA1UEAwwDdDM2MBKkEDAOMQwwCgYDVQQDDAN0MzcwEqQQMA4xDDAKBgNVBAMM
--A3QzODASpBAwDjEMMAoGA1UEAwwDdDM5MBKkEDAOMQwwCgYDVQQDDAN0NDAwEqQQ
--MA4xDDAKBgNVBAMMA3Q0MTASpBAwDjEMMAoGA1UEAwwDdDQyMBKkEDAOMQwwCgYD
--VQQDDAN0NDMwEqQQMA4xDDAKBgNVBAMMA3Q0NDASpBAwDjEMMAoGA1UEAwwDdDQ1
--MBKkEDAOMQwwCgYDVQQDDAN0NDYwEqQQMA4xDDAKBgNVBAMMA3Q0NzASpBAwDjEM
--MAoGA1UEAwwDdDQ4MBKkEDAOMQwwCgYDVQQDDAN0NDkwEqQQMA4xDDAKBgNVBAMM
--A3Q1MDASpBAwDjEMMAoGA1UEAwwDdDUxMBKkEDAOMQwwCgYDVQQDDAN0NTIwEqQQ
--MA4xDDAKBgNVBAMMA3Q1MzASpBAwDjEMMAoGA1UEAwwDdDU0MBKkEDAOMQwwCgYD
--VQQDDAN0NTUwEqQQMA4xDDAKBgNVBAMMA3Q1NjASpBAwDjEMMAoGA1UEAwwDdDU3
--MBKkEDAOMQwwCgYDVQQDDAN0NTgwEqQQMA4xDDAKBgNVBAMMA3Q1OTASpBAwDjEM
--MAoGA1UEAwwDdDYwMBKkEDAOMQwwCgYDVQQDDAN0NjEwEqQQMA4xDDAKBgNVBAMM
--A3Q2MjASpBAwDjEMMAoGA1UEAwwDdDYzMBKkEDAOMQwwCgYDVQQDDAN0NjQwEqQQ
--MA4xDDAKBgNVBAMMA3Q2NTASpBAwDjEMMAoGA1UEAwwDdDY2MBKkEDAOMQwwCgYD
--VQQDDAN0NjcwEqQQMA4xDDAKBgNVBAMMA3Q2ODASpBAwDjEMMAoGA1UEAwwDdDY5
--MBKkEDAOMQwwCgYDVQQDDAN0NzAwEqQQMA4xDDAKBgNVBAMMA3Q3MTASpBAwDjEM
--MAoGA1UEAwwDdDcyMBKkEDAOMQwwCgYDVQQDDAN0NzMwEqQQMA4xDDAKBgNVBAMM
--A3Q3NDASpBAwDjEMMAoGA1UEAwwDdDc1MBKkEDAOMQwwCgYDVQQDDAN0NzYwEqQQ
--MA4xDDAKBgNVBAMMA3Q3NzASpBAwDjEMMAoGA1UEAwwDdDc4MBKkEDAOMQwwCgYD
--VQQDDAN0NzkwEqQQMA4xDDAKBgNVBAMMA3Q4MDASpBAwDjEMMAoGA1UEAwwDdDgx
--MBKkEDAOMQwwCgYDVQQDDAN0ODIwEqQQMA4xDDAKBgNVBAMMA3Q4MzASpBAwDjEM
--MAoGA1UEAwwDdDg0MBKkEDAOMQwwCgYDVQQDDAN0ODUwEqQQMA4xDDAKBgNVBAMM
--A3Q4NjASpBAwDjEMMAoGA1UEAwwDdDg3MBKkEDAOMQwwCgYDVQQDDAN0ODgwEqQQ
--MA4xDDAKBgNVBAMMA3Q4OTASpBAwDjEMMAoGA1UEAwwDdDkwMBKkEDAOMQwwCgYD
--VQQDDAN0OTEwEqQQMA4xDDAKBgNVBAMMA3Q5MjASpBAwDjEMMAoGA1UEAwwDdDkz
--MBKkEDAOMQwwCgYDVQQDDAN0OTQwEqQQMA4xDDAKBgNVBAMMA3Q5NTASpBAwDjEM
--MAoGA1UEAwwDdDk2MBKkEDAOMQwwCgYDVQQDDAN0OTcwEqQQMA4xDDAKBgNVBAMM
--A3Q5ODASpBAwDjEMMAoGA1UEAwwDdDk5MBOkETAPMQ0wCwYDVQQDDAR0MTAwMBOk
--ETAPMQ0wCwYDVQQDDAR0MTAxMBOkETAPMQ0wCwYDVQQDDAR0MTAyMBOkETAPMQ0w
--CwYDVQQDDAR0MTAzMBOkETAPMQ0wCwYDVQQDDAR0MTA0MBOkETAPMQ0wCwYDVQQD
--DAR0MTA1MBOkETAPMQ0wCwYDVQQDDAR0MTA2MBOkETAPMQ0wCwYDVQQDDAR0MTA3
--MBOkETAPMQ0wCwYDVQQDDAR0MTA4MBOkETAPMQ0wCwYDVQQDDAR0MTA5MBOkETAP
--MQ0wCwYDVQQDDAR0MTEwMBOkETAPMQ0wCwYDVQQDDAR0MTExMBOkETAPMQ0wCwYD
--VQQDDAR0MTEyMBOkETAPMQ0wCwYDVQQDDAR0MTEzMBOkETAPMQ0wCwYDVQQDDAR0
--MTE0MBOkETAPMQ0wCwYDVQQDDAR0MTE1MBOkETAPMQ0wCwYDVQQDDAR0MTE2MBOk
--ETAPMQ0wCwYDVQQDDAR0MTE3MBOkETAPMQ0wCwYDVQQDDAR0MTE4MBOkETAPMQ0w
--CwYDVQQDDAR0MTE5MBOkETAPMQ0wCwYDVQQDDAR0MTIwMBOkETAPMQ0wCwYDVQQD
--DAR0MTIxMBOkETAPMQ0wCwYDVQQDDAR0MTIyMBOkETAPMQ0wCwYDVQQDDAR0MTIz
--MBOkETAPMQ0wCwYDVQQDDAR0MTI0MBOkETAPMQ0wCwYDVQQDDAR0MTI1MBOkETAP
--MQ0wCwYDVQQDDAR0MTI2MBOkETAPMQ0wCwYDVQQDDAR0MTI3MBOkETAPMQ0wCwYD
--VQQDDAR0MTI4MBOkETAPMQ0wCwYDVQQDDAR0MTI5MBOkETAPMQ0wCwYDVQQDDAR0
--MTMwMBOkETAPMQ0wCwYDVQQDDAR0MTMxMBOkETAPMQ0wCwYDVQQDDAR0MTMyMBOk
--ETAPMQ0wCwYDVQQDDAR0MTMzMBOkETAPMQ0wCwYDVQQDDAR0MTM0MBOkETAPMQ0w
--CwYDVQQDDAR0MTM1MBOkETAPMQ0wCwYDVQQDDAR0MTM2MBOkETAPMQ0wCwYDVQQD
--DAR0MTM3MBOkETAPMQ0wCwYDVQQDDAR0MTM4MBOkETAPMQ0wCwYDVQQDDAR0MTM5
--MBOkETAPMQ0wCwYDVQQDDAR0MTQwMBOkETAPMQ0wCwYDVQQDDAR0MTQxMBOkETAP
--MQ0wCwYDVQQDDAR0MTQyMBOkETAPMQ0wCwYDVQQDDAR0MTQzMBOkETAPMQ0wCwYD
--VQQDDAR0MTQ0MBOkETAPMQ0wCwYDVQQDDAR0MTQ1MBOkETAPMQ0wCwYDVQQDDAR0
--MTQ2MBOkETAPMQ0wCwYDVQQDDAR0MTQ3MBOkETAPMQ0wCwYDVQQDDAR0MTQ4MBOk
--ETAPMQ0wCwYDVQQDDAR0MTQ5MBOkETAPMQ0wCwYDVQQDDAR0MTUwMBOkETAPMQ0w
--CwYDVQQDDAR0MTUxMBOkETAPMQ0wCwYDVQQDDAR0MTUyMBOkETAPMQ0wCwYDVQQD
--DAR0MTUzMBOkETAPMQ0wCwYDVQQDDAR0MTU0MBOkETAPMQ0wCwYDVQQDDAR0MTU1
--MBOkETAPMQ0wCwYDVQQDDAR0MTU2MBOkETAPMQ0wCwYDVQQDDAR0MTU3MBOkETAP
--MQ0wCwYDVQQDDAR0MTU4MBOkETAPMQ0wCwYDVQQDDAR0MTU5MBOkETAPMQ0wCwYD
--VQQDDAR0MTYwMBOkETAPMQ0wCwYDVQQDDAR0MTYxMBOkETAPMQ0wCwYDVQQDDAR0
--MTYyMBOkETAPMQ0wCwYDVQQDDAR0MTYzMBOkETAPMQ0wCwYDVQQDDAR0MTY0MBOk
--ETAPMQ0wCwYDVQQDDAR0MTY1MBOkETAPMQ0wCwYDVQQDDAR0MTY2MBOkETAPMQ0w
--CwYDVQQDDAR0MTY3MBOkETAPMQ0wCwYDVQQDDAR0MTY4MBOkETAPMQ0wCwYDVQQD
--DAR0MTY5MBOkETAPMQ0wCwYDVQQDDAR0MTcwMBOkETAPMQ0wCwYDVQQDDAR0MTcx
--MBOkETAPMQ0wCwYDVQQDDAR0MTcyMBOkETAPMQ0wCwYDVQQDDAR0MTczMBOkETAP
--MQ0wCwYDVQQDDAR0MTc0MBOkETAPMQ0wCwYDVQQDDAR0MTc1MBOkETAPMQ0wCwYD
--VQQDDAR0MTc2MBOkETAPMQ0wCwYDVQQDDAR0MTc3MBOkETAPMQ0wCwYDVQQDDAR0
--MTc4MBOkETAPMQ0wCwYDVQQDDAR0MTc5MBOkETAPMQ0wCwYDVQQDDAR0MTgwMBOk
--ETAPMQ0wCwYDVQQDDAR0MTgxMBOkETAPMQ0wCwYDVQQDDAR0MTgyMBOkETAPMQ0w
--CwYDVQQDDAR0MTgzMBOkETAPMQ0wCwYDVQQDDAR0MTg0MBOkETAPMQ0wCwYDVQQD
--DAR0MTg1MBOkETAPMQ0wCwYDVQQDDAR0MTg2MBOkETAPMQ0wCwYDVQQDDAR0MTg3
--MBOkETAPMQ0wCwYDVQQDDAR0MTg4MBOkETAPMQ0wCwYDVQQDDAR0MTg5MBOkETAP
--MQ0wCwYDVQQDDAR0MTkwMBOkETAPMQ0wCwYDVQQDDAR0MTkxMBOkETAPMQ0wCwYD
--VQQDDAR0MTkyMBOkETAPMQ0wCwYDVQQDDAR0MTkzMBOkETAPMQ0wCwYDVQQDDAR0
--MTk0MBOkETAPMQ0wCwYDVQQDDAR0MTk1MBOkETAPMQ0wCwYDVQQDDAR0MTk2MBOk
--ETAPMQ0wCwYDVQQDDAR0MTk3MBOkETAPMQ0wCwYDVQQDDAR0MTk4MBOkETAPMQ0w
--CwYDVQQDDAR0MTk5MBOkETAPMQ0wCwYDVQQDDAR0MjAwMBOkETAPMQ0wCwYDVQQD
--DAR0MjAxMBOkETAPMQ0wCwYDVQQDDAR0MjAyMBOkETAPMQ0wCwYDVQQDDAR0MjAz
--MBOkETAPMQ0wCwYDVQQDDAR0MjA0MBOkETAPMQ0wCwYDVQQDDAR0MjA1MBOkETAP
--MQ0wCwYDVQQDDAR0MjA2MBOkETAPMQ0wCwYDVQQDDAR0MjA3MBOkETAPMQ0wCwYD
--VQQDDAR0MjA4MBOkETAPMQ0wCwYDVQQDDAR0MjA5MBOkETAPMQ0wCwYDVQQDDAR0
--MjEwMBOkETAPMQ0wCwYDVQQDDAR0MjExMBOkETAPMQ0wCwYDVQQDDAR0MjEyMBOk
--ETAPMQ0wCwYDVQQDDAR0MjEzMBOkETAPMQ0wCwYDVQQDDAR0MjE0MBOkETAPMQ0w
--CwYDVQQDDAR0MjE1MBOkETAPMQ0wCwYDVQQDDAR0MjE2MBOkETAPMQ0wCwYDVQQD
--DAR0MjE3MBOkETAPMQ0wCwYDVQQDDAR0MjE4MBOkETAPMQ0wCwYDVQQDDAR0MjE5
--MBOkETAPMQ0wCwYDVQQDDAR0MjIwMBOkETAPMQ0wCwYDVQQDDAR0MjIxMBOkETAP
--MQ0wCwYDVQQDDAR0MjIyMBOkETAPMQ0wCwYDVQQDDAR0MjIzMBOkETAPMQ0wCwYD
--VQQDDAR0MjI0MBOkETAPMQ0wCwYDVQQDDAR0MjI1MBOkETAPMQ0wCwYDVQQDDAR0
--MjI2MBOkETAPMQ0wCwYDVQQDDAR0MjI3MBOkETAPMQ0wCwYDVQQDDAR0MjI4MBOk
--ETAPMQ0wCwYDVQQDDAR0MjI5MBOkETAPMQ0wCwYDVQQDDAR0MjMwMBOkETAPMQ0w
--CwYDVQQDDAR0MjMxMBOkETAPMQ0wCwYDVQQDDAR0MjMyMBOkETAPMQ0wCwYDVQQD
--DAR0MjMzMBOkETAPMQ0wCwYDVQQDDAR0MjM0MBOkETAPMQ0wCwYDVQQDDAR0MjM1
--MBOkETAPMQ0wCwYDVQQDDAR0MjM2MBOkETAPMQ0wCwYDVQQDDAR0MjM3MBOkETAP
--MQ0wCwYDVQQDDAR0MjM4MBOkETAPMQ0wCwYDVQQDDAR0MjM5MBOkETAPMQ0wCwYD
--VQQDDAR0MjQwMBOkETAPMQ0wCwYDVQQDDAR0MjQxMBOkETAPMQ0wCwYDVQQDDAR0
--MjQyMBOkETAPMQ0wCwYDVQQDDAR0MjQzMBOkETAPMQ0wCwYDVQQDDAR0MjQ0MBOk
--ETAPMQ0wCwYDVQQDDAR0MjQ1MBOkETAPMQ0wCwYDVQQDDAR0MjQ2MBOkETAPMQ0w
--CwYDVQQDDAR0MjQ3MBOkETAPMQ0wCwYDVQQDDAR0MjQ4MBOkETAPMQ0wCwYDVQQD
--DAR0MjQ5MBOkETAPMQ0wCwYDVQQDDAR0MjUwMBOkETAPMQ0wCwYDVQQDDAR0MjUx
--MBOkETAPMQ0wCwYDVQQDDAR0MjUyMBOkETAPMQ0wCwYDVQQDDAR0MjUzMBOkETAP
--MQ0wCwYDVQQDDAR0MjU0MBOkETAPMQ0wCwYDVQQDDAR0MjU1MBOkETAPMQ0wCwYD
--VQQDDAR0MjU2MBOkETAPMQ0wCwYDVQQDDAR0MjU3MBOkETAPMQ0wCwYDVQQDDAR0
--MjU4MBOkETAPMQ0wCwYDVQQDDAR0MjU5MBOkETAPMQ0wCwYDVQQDDAR0MjYwMBOk
--ETAPMQ0wCwYDVQQDDAR0MjYxMBOkETAPMQ0wCwYDVQQDDAR0MjYyMBOkETAPMQ0w
--CwYDVQQDDAR0MjYzMBOkETAPMQ0wCwYDVQQDDAR0MjY0MBOkETAPMQ0wCwYDVQQD
--DAR0MjY1MBOkETAPMQ0wCwYDVQQDDAR0MjY2MBOkETAPMQ0wCwYDVQQDDAR0MjY3
--MBOkETAPMQ0wCwYDVQQDDAR0MjY4MBOkETAPMQ0wCwYDVQQDDAR0MjY5MBOkETAP
--MQ0wCwYDVQQDDAR0MjcwMBOkETAPMQ0wCwYDVQQDDAR0MjcxMBOkETAPMQ0wCwYD
--VQQDDAR0MjcyMBOkETAPMQ0wCwYDVQQDDAR0MjczMBOkETAPMQ0wCwYDVQQDDAR0
--Mjc0MBOkETAPMQ0wCwYDVQQDDAR0Mjc1MBOkETAPMQ0wCwYDVQQDDAR0Mjc2MBOk
--ETAPMQ0wCwYDVQQDDAR0Mjc3MBOkETAPMQ0wCwYDVQQDDAR0Mjc4MBOkETAPMQ0w
--CwYDVQQDDAR0Mjc5MBOkETAPMQ0wCwYDVQQDDAR0MjgwMBOkETAPMQ0wCwYDVQQD
--DAR0MjgxMBOkETAPMQ0wCwYDVQQDDAR0MjgyMBOkETAPMQ0wCwYDVQQDDAR0Mjgz
--MBOkETAPMQ0wCwYDVQQDDAR0Mjg0MBOkETAPMQ0wCwYDVQQDDAR0Mjg1MBOkETAP
--MQ0wCwYDVQQDDAR0Mjg2MBOkETAPMQ0wCwYDVQQDDAR0Mjg3MBOkETAPMQ0wCwYD
--VQQDDAR0Mjg4MBOkETAPMQ0wCwYDVQQDDAR0Mjg5MBOkETAPMQ0wCwYDVQQDDAR0
--MjkwMBOkETAPMQ0wCwYDVQQDDAR0MjkxMBOkETAPMQ0wCwYDVQQDDAR0MjkyMBOk
--ETAPMQ0wCwYDVQQDDAR0MjkzMBOkETAPMQ0wCwYDVQQDDAR0Mjk0MBOkETAPMQ0w
--CwYDVQQDDAR0Mjk1MBOkETAPMQ0wCwYDVQQDDAR0Mjk2MBOkETAPMQ0wCwYDVQQD
--DAR0Mjk3MBOkETAPMQ0wCwYDVQQDDAR0Mjk4MBOkETAPMQ0wCwYDVQQDDAR0Mjk5
--MBOkETAPMQ0wCwYDVQQDDAR0MzAwMBOkETAPMQ0wCwYDVQQDDAR0MzAxMBOkETAP
--MQ0wCwYDVQQDDAR0MzAyMBOkETAPMQ0wCwYDVQQDDAR0MzAzMBOkETAPMQ0wCwYD
--VQQDDAR0MzA0MBOkETAPMQ0wCwYDVQQDDAR0MzA1MBOkETAPMQ0wCwYDVQQDDAR0
--MzA2MBOkETAPMQ0wCwYDVQQDDAR0MzA3MBOkETAPMQ0wCwYDVQQDDAR0MzA4MBOk
--ETAPMQ0wCwYDVQQDDAR0MzA5MBOkETAPMQ0wCwYDVQQDDAR0MzEwMBOkETAPMQ0w
--CwYDVQQDDAR0MzExMBOkETAPMQ0wCwYDVQQDDAR0MzEyMBOkETAPMQ0wCwYDVQQD
--DAR0MzEzMBOkETAPMQ0wCwYDVQQDDAR0MzE0MBOkETAPMQ0wCwYDVQQDDAR0MzE1
--MBOkETAPMQ0wCwYDVQQDDAR0MzE2MBOkETAPMQ0wCwYDVQQDDAR0MzE3MBOkETAP
--MQ0wCwYDVQQDDAR0MzE4MBOkETAPMQ0wCwYDVQQDDAR0MzE5MBOkETAPMQ0wCwYD
--VQQDDAR0MzIwMBOkETAPMQ0wCwYDVQQDDAR0MzIxMBOkETAPMQ0wCwYDVQQDDAR0
--MzIyMBOkETAPMQ0wCwYDVQQDDAR0MzIzMBOkETAPMQ0wCwYDVQQDDAR0MzI0MBOk
--ETAPMQ0wCwYDVQQDDAR0MzI1MBOkETAPMQ0wCwYDVQQDDAR0MzI2MBOkETAPMQ0w
--CwYDVQQDDAR0MzI3MBOkETAPMQ0wCwYDVQQDDAR0MzI4MBOkETAPMQ0wCwYDVQQD
--DAR0MzI5MBOkETAPMQ0wCwYDVQQDDAR0MzMwMBOkETAPMQ0wCwYDVQQDDAR0MzMx
--MBOkETAPMQ0wCwYDVQQDDAR0MzMyMBOkETAPMQ0wCwYDVQQDDAR0MzMzMBOkETAP
--MQ0wCwYDVQQDDAR0MzM0MBOkETAPMQ0wCwYDVQQDDAR0MzM1MBOkETAPMQ0wCwYD
--VQQDDAR0MzM2MBOkETAPMQ0wCwYDVQQDDAR0MzM3MBOkETAPMQ0wCwYDVQQDDAR0
--MzM4MBOkETAPMQ0wCwYDVQQDDAR0MzM5MBOkETAPMQ0wCwYDVQQDDAR0MzQwMBOk
--ETAPMQ0wCwYDVQQDDAR0MzQxMBOkETAPMQ0wCwYDVQQDDAR0MzQyMBOkETAPMQ0w
--CwYDVQQDDAR0MzQzMBOkETAPMQ0wCwYDVQQDDAR0MzQ0MBOkETAPMQ0wCwYDVQQD
--DAR0MzQ1MBOkETAPMQ0wCwYDVQQDDAR0MzQ2MBOkETAPMQ0wCwYDVQQDDAR0MzQ3
--MBOkETAPMQ0wCwYDVQQDDAR0MzQ4MBOkETAPMQ0wCwYDVQQDDAR0MzQ5MBOkETAP
--MQ0wCwYDVQQDDAR0MzUwMBOkETAPMQ0wCwYDVQQDDAR0MzUxMBOkETAPMQ0wCwYD
--VQQDDAR0MzUyMBOkETAPMQ0wCwYDVQQDDAR0MzUzMBOkETAPMQ0wCwYDVQQDDAR0
--MzU0MBOkETAPMQ0wCwYDVQQDDAR0MzU1MBOkETAPMQ0wCwYDVQQDDAR0MzU2MBOk
--ETAPMQ0wCwYDVQQDDAR0MzU3MBOkETAPMQ0wCwYDVQQDDAR0MzU4MBOkETAPMQ0w
--CwYDVQQDDAR0MzU5MBOkETAPMQ0wCwYDVQQDDAR0MzYwMBOkETAPMQ0wCwYDVQQD
--DAR0MzYxMBOkETAPMQ0wCwYDVQQDDAR0MzYyMBOkETAPMQ0wCwYDVQQDDAR0MzYz
--MBOkETAPMQ0wCwYDVQQDDAR0MzY0MBOkETAPMQ0wCwYDVQQDDAR0MzY1MBOkETAP
--MQ0wCwYDVQQDDAR0MzY2MBOkETAPMQ0wCwYDVQQDDAR0MzY3MBOkETAPMQ0wCwYD
--VQQDDAR0MzY4MBOkETAPMQ0wCwYDVQQDDAR0MzY5MBOkETAPMQ0wCwYDVQQDDAR0
--MzcwMBOkETAPMQ0wCwYDVQQDDAR0MzcxMBOkETAPMQ0wCwYDVQQDDAR0MzcyMBOk
--ETAPMQ0wCwYDVQQDDAR0MzczMBOkETAPMQ0wCwYDVQQDDAR0Mzc0MBOkETAPMQ0w
--CwYDVQQDDAR0Mzc1MBOkETAPMQ0wCwYDVQQDDAR0Mzc2MBOkETAPMQ0wCwYDVQQD
--DAR0Mzc3MBOkETAPMQ0wCwYDVQQDDAR0Mzc4MBOkETAPMQ0wCwYDVQQDDAR0Mzc5
--MBOkETAPMQ0wCwYDVQQDDAR0MzgwMBOkETAPMQ0wCwYDVQQDDAR0MzgxMBOkETAP
--MQ0wCwYDVQQDDAR0MzgyMBOkETAPMQ0wCwYDVQQDDAR0MzgzMBOkETAPMQ0wCwYD
--VQQDDAR0Mzg0MBOkETAPMQ0wCwYDVQQDDAR0Mzg1MBOkETAPMQ0wCwYDVQQDDAR0
--Mzg2MBOkETAPMQ0wCwYDVQQDDAR0Mzg3MBOkETAPMQ0wCwYDVQQDDAR0Mzg4MBOk
--ETAPMQ0wCwYDVQQDDAR0Mzg5MBOkETAPMQ0wCwYDVQQDDAR0MzkwMBOkETAPMQ0w
--CwYDVQQDDAR0MzkxMBOkETAPMQ0wCwYDVQQDDAR0MzkyMBOkETAPMQ0wCwYDVQQD
--DAR0MzkzMBOkETAPMQ0wCwYDVQQDDAR0Mzk0MBOkETAPMQ0wCwYDVQQDDAR0Mzk1
--MBOkETAPMQ0wCwYDVQQDDAR0Mzk2MBOkETAPMQ0wCwYDVQQDDAR0Mzk3MBOkETAP
--MQ0wCwYDVQQDDAR0Mzk4MBOkETAPMQ0wCwYDVQQDDAR0Mzk5MBOkETAPMQ0wCwYD
--VQQDDAR0NDAwMBOkETAPMQ0wCwYDVQQDDAR0NDAxMBOkETAPMQ0wCwYDVQQDDAR0
--NDAyMBOkETAPMQ0wCwYDVQQDDAR0NDAzMBOkETAPMQ0wCwYDVQQDDAR0NDA0MBOk
--ETAPMQ0wCwYDVQQDDAR0NDA1MBOkETAPMQ0wCwYDVQQDDAR0NDA2MBOkETAPMQ0w
--CwYDVQQDDAR0NDA3MBOkETAPMQ0wCwYDVQQDDAR0NDA4MBOkETAPMQ0wCwYDVQQD
--DAR0NDA5MBOkETAPMQ0wCwYDVQQDDAR0NDEwMBOkETAPMQ0wCwYDVQQDDAR0NDEx
--MBOkETAPMQ0wCwYDVQQDDAR0NDEyMBOkETAPMQ0wCwYDVQQDDAR0NDEzMBOkETAP
--MQ0wCwYDVQQDDAR0NDE0MBOkETAPMQ0wCwYDVQQDDAR0NDE1MBOkETAPMQ0wCwYD
--VQQDDAR0NDE2MBOkETAPMQ0wCwYDVQQDDAR0NDE3MA+GDWh0dHA6Ly90ZXN0LzAw
--D4YNaHR0cDovL3Rlc3QvMTAPhg1odHRwOi8vdGVzdC8yMA+GDWh0dHA6Ly90ZXN0
--LzMwD4YNaHR0cDovL3Rlc3QvNDAPhg1odHRwOi8vdGVzdC81MA+GDWh0dHA6Ly90
--ZXN0LzYwD4YNaHR0cDovL3Rlc3QvNzAPhg1odHRwOi8vdGVzdC84MA+GDWh0dHA6
--Ly90ZXN0LzkwEIYOaHR0cDovL3Rlc3QvMTAwEIYOaHR0cDovL3Rlc3QvMTEwEIYO
--aHR0cDovL3Rlc3QvMTIwEIYOaHR0cDovL3Rlc3QvMTMwEIYOaHR0cDovL3Rlc3Qv
--MTQwEIYOaHR0cDovL3Rlc3QvMTUwEIYOaHR0cDovL3Rlc3QvMTYwEIYOaHR0cDov
--L3Rlc3QvMTcwEIYOaHR0cDovL3Rlc3QvMTgwEIYOaHR0cDovL3Rlc3QvMTkwEIYO
--aHR0cDovL3Rlc3QvMjAwEIYOaHR0cDovL3Rlc3QvMjEwEIYOaHR0cDovL3Rlc3Qv
--MjIwEIYOaHR0cDovL3Rlc3QvMjMwEIYOaHR0cDovL3Rlc3QvMjQwEIYOaHR0cDov
--L3Rlc3QvMjUwEIYOaHR0cDovL3Rlc3QvMjYwEIYOaHR0cDovL3Rlc3QvMjcwEIYO
--aHR0cDovL3Rlc3QvMjgwEIYOaHR0cDovL3Rlc3QvMjkwEIYOaHR0cDovL3Rlc3Qv
--MzAwEIYOaHR0cDovL3Rlc3QvMzEwEIYOaHR0cDovL3Rlc3QvMzIwEIYOaHR0cDov
--L3Rlc3QvMzMwEIYOaHR0cDovL3Rlc3QvMzQwEIYOaHR0cDovL3Rlc3QvMzUwEIYO
--aHR0cDovL3Rlc3QvMzYwEIYOaHR0cDovL3Rlc3QvMzcwEIYOaHR0cDovL3Rlc3Qv
--MzgwEIYOaHR0cDovL3Rlc3QvMzkwEIYOaHR0cDovL3Rlc3QvNDAwEIYOaHR0cDov
--L3Rlc3QvNDEwEIYOaHR0cDovL3Rlc3QvNDIwEIYOaHR0cDovL3Rlc3QvNDMwEIYO
--aHR0cDovL3Rlc3QvNDQwEIYOaHR0cDovL3Rlc3QvNDUwEIYOaHR0cDovL3Rlc3Qv
--NDYwEIYOaHR0cDovL3Rlc3QvNDcwEIYOaHR0cDovL3Rlc3QvNDgwEIYOaHR0cDov
--L3Rlc3QvNDkwEIYOaHR0cDovL3Rlc3QvNTAwEIYOaHR0cDovL3Rlc3QvNTEwEIYO
--aHR0cDovL3Rlc3QvNTIwEIYOaHR0cDovL3Rlc3QvNTMwEIYOaHR0cDovL3Rlc3Qv
--NTQwEIYOaHR0cDovL3Rlc3QvNTUwEIYOaHR0cDovL3Rlc3QvNTYwEIYOaHR0cDov
--L3Rlc3QvNTcwEIYOaHR0cDovL3Rlc3QvNTgwEIYOaHR0cDovL3Rlc3QvNTkwEIYO
--aHR0cDovL3Rlc3QvNjAwEIYOaHR0cDovL3Rlc3QvNjEwEIYOaHR0cDovL3Rlc3Qv
--NjIwEIYOaHR0cDovL3Rlc3QvNjMwEIYOaHR0cDovL3Rlc3QvNjQwEIYOaHR0cDov
--L3Rlc3QvNjUwEIYOaHR0cDovL3Rlc3QvNjYwEIYOaHR0cDovL3Rlc3QvNjcwEIYO
--aHR0cDovL3Rlc3QvNjgwEIYOaHR0cDovL3Rlc3QvNjkwEIYOaHR0cDovL3Rlc3Qv
--NzAwEIYOaHR0cDovL3Rlc3QvNzEwEIYOaHR0cDovL3Rlc3QvNzIwEIYOaHR0cDov
--L3Rlc3QvNzMwEIYOaHR0cDovL3Rlc3QvNzQwEIYOaHR0cDovL3Rlc3QvNzUwEIYO
--aHR0cDovL3Rlc3QvNzYwEIYOaHR0cDovL3Rlc3QvNzcwEIYOaHR0cDovL3Rlc3Qv
--NzgwEIYOaHR0cDovL3Rlc3QvNzkwEIYOaHR0cDovL3Rlc3QvODAwEIYOaHR0cDov
--L3Rlc3QvODEwEIYOaHR0cDovL3Rlc3QvODIwEIYOaHR0cDovL3Rlc3QvODMwEIYO
--aHR0cDovL3Rlc3QvODQwEIYOaHR0cDovL3Rlc3QvODUwEIYOaHR0cDovL3Rlc3Qv
--ODYwEIYOaHR0cDovL3Rlc3QvODcwEIYOaHR0cDovL3Rlc3QvODgwEIYOaHR0cDov
--L3Rlc3QvODkwEIYOaHR0cDovL3Rlc3QvOTAwEIYOaHR0cDovL3Rlc3QvOTEwEIYO
--aHR0cDovL3Rlc3QvOTIwEIYOaHR0cDovL3Rlc3QvOTMwEIYOaHR0cDovL3Rlc3Qv
--OTQwEIYOaHR0cDovL3Rlc3QvOTUwEIYOaHR0cDovL3Rlc3QvOTYwEIYOaHR0cDov
--L3Rlc3QvOTcwEIYOaHR0cDovL3Rlc3QvOTgwEIYOaHR0cDovL3Rlc3QvOTkwEYYP
--aHR0cDovL3Rlc3QvMTAwMBGGD2h0dHA6Ly90ZXN0LzEwMTARhg9odHRwOi8vdGVz
--dC8xMDIwEYYPaHR0cDovL3Rlc3QvMTAzMBGGD2h0dHA6Ly90ZXN0LzEwNDARhg9o
--dHRwOi8vdGVzdC8xMDUwEYYPaHR0cDovL3Rlc3QvMTA2MBGGD2h0dHA6Ly90ZXN0
--LzEwNzARhg9odHRwOi8vdGVzdC8xMDgwEYYPaHR0cDovL3Rlc3QvMTA5MBGGD2h0
--dHA6Ly90ZXN0LzExMDARhg9odHRwOi8vdGVzdC8xMTEwEYYPaHR0cDovL3Rlc3Qv
--MTEyMBGGD2h0dHA6Ly90ZXN0LzExMzARhg9odHRwOi8vdGVzdC8xMTQwEYYPaHR0
--cDovL3Rlc3QvMTE1MBGGD2h0dHA6Ly90ZXN0LzExNjARhg9odHRwOi8vdGVzdC8x
--MTcwEYYPaHR0cDovL3Rlc3QvMTE4MBGGD2h0dHA6Ly90ZXN0LzExOTARhg9odHRw
--Oi8vdGVzdC8xMjAwEYYPaHR0cDovL3Rlc3QvMTIxMBGGD2h0dHA6Ly90ZXN0LzEy
--MjARhg9odHRwOi8vdGVzdC8xMjMwEYYPaHR0cDovL3Rlc3QvMTI0MBGGD2h0dHA6
--Ly90ZXN0LzEyNTARhg9odHRwOi8vdGVzdC8xMjYwEYYPaHR0cDovL3Rlc3QvMTI3
--MBGGD2h0dHA6Ly90ZXN0LzEyODARhg9odHRwOi8vdGVzdC8xMjkwEYYPaHR0cDov
--L3Rlc3QvMTMwMBGGD2h0dHA6Ly90ZXN0LzEzMTARhg9odHRwOi8vdGVzdC8xMzIw
--EYYPaHR0cDovL3Rlc3QvMTMzMBGGD2h0dHA6Ly90ZXN0LzEzNDARhg9odHRwOi8v
--dGVzdC8xMzUwEYYPaHR0cDovL3Rlc3QvMTM2MBGGD2h0dHA6Ly90ZXN0LzEzNzAR
--hg9odHRwOi8vdGVzdC8xMzgwEYYPaHR0cDovL3Rlc3QvMTM5MBGGD2h0dHA6Ly90
--ZXN0LzE0MDARhg9odHRwOi8vdGVzdC8xNDEwEYYPaHR0cDovL3Rlc3QvMTQyMBGG
--D2h0dHA6Ly90ZXN0LzE0MzARhg9odHRwOi8vdGVzdC8xNDQwEYYPaHR0cDovL3Rl
--c3QvMTQ1MBGGD2h0dHA6Ly90ZXN0LzE0NjARhg9odHRwOi8vdGVzdC8xNDcwEYYP
--aHR0cDovL3Rlc3QvMTQ4MBGGD2h0dHA6Ly90ZXN0LzE0OTARhg9odHRwOi8vdGVz
--dC8xNTAwEYYPaHR0cDovL3Rlc3QvMTUxMBGGD2h0dHA6Ly90ZXN0LzE1MjARhg9o
--dHRwOi8vdGVzdC8xNTMwEYYPaHR0cDovL3Rlc3QvMTU0MBGGD2h0dHA6Ly90ZXN0
--LzE1NTARhg9odHRwOi8vdGVzdC8xNTYwEYYPaHR0cDovL3Rlc3QvMTU3MBGGD2h0
--dHA6Ly90ZXN0LzE1ODARhg9odHRwOi8vdGVzdC8xNTkwEYYPaHR0cDovL3Rlc3Qv
--MTYwMBGGD2h0dHA6Ly90ZXN0LzE2MTARhg9odHRwOi8vdGVzdC8xNjIwEYYPaHR0
--cDovL3Rlc3QvMTYzMBGGD2h0dHA6Ly90ZXN0LzE2NDARhg9odHRwOi8vdGVzdC8x
--NjUwEYYPaHR0cDovL3Rlc3QvMTY2MBGGD2h0dHA6Ly90ZXN0LzE2NzARhg9odHRw
--Oi8vdGVzdC8xNjgwEYYPaHR0cDovL3Rlc3QvMTY5MBGGD2h0dHA6Ly90ZXN0LzE3
--MDARhg9odHRwOi8vdGVzdC8xNzEwEYYPaHR0cDovL3Rlc3QvMTcyMBGGD2h0dHA6
--Ly90ZXN0LzE3MzARhg9odHRwOi8vdGVzdC8xNzQwEYYPaHR0cDovL3Rlc3QvMTc1
--MBGGD2h0dHA6Ly90ZXN0LzE3NjARhg9odHRwOi8vdGVzdC8xNzcwEYYPaHR0cDov
--L3Rlc3QvMTc4MBGGD2h0dHA6Ly90ZXN0LzE3OTARhg9odHRwOi8vdGVzdC8xODAw
--EYYPaHR0cDovL3Rlc3QvMTgxMBGGD2h0dHA6Ly90ZXN0LzE4MjARhg9odHRwOi8v
--dGVzdC8xODMwEYYPaHR0cDovL3Rlc3QvMTg0MBGGD2h0dHA6Ly90ZXN0LzE4NTAR
--hg9odHRwOi8vdGVzdC8xODYwEYYPaHR0cDovL3Rlc3QvMTg3MBGGD2h0dHA6Ly90
--ZXN0LzE4ODARhg9odHRwOi8vdGVzdC8xODkwEYYPaHR0cDovL3Rlc3QvMTkwMBGG
--D2h0dHA6Ly90ZXN0LzE5MTARhg9odHRwOi8vdGVzdC8xOTIwEYYPaHR0cDovL3Rl
--c3QvMTkzMBGGD2h0dHA6Ly90ZXN0LzE5NDARhg9odHRwOi8vdGVzdC8xOTUwEYYP
--aHR0cDovL3Rlc3QvMTk2MBGGD2h0dHA6Ly90ZXN0LzE5NzARhg9odHRwOi8vdGVz
--dC8xOTgwEYYPaHR0cDovL3Rlc3QvMTk5MBGGD2h0dHA6Ly90ZXN0LzIwMDARhg9o
--dHRwOi8vdGVzdC8yMDEwEYYPaHR0cDovL3Rlc3QvMjAyMBGGD2h0dHA6Ly90ZXN0
--LzIwMzARhg9odHRwOi8vdGVzdC8yMDQwEYYPaHR0cDovL3Rlc3QvMjA1MBGGD2h0
--dHA6Ly90ZXN0LzIwNjARhg9odHRwOi8vdGVzdC8yMDcwEYYPaHR0cDovL3Rlc3Qv
--MjA4MBGGD2h0dHA6Ly90ZXN0LzIwOTARhg9odHRwOi8vdGVzdC8yMTAwEYYPaHR0
--cDovL3Rlc3QvMjExMBGGD2h0dHA6Ly90ZXN0LzIxMjARhg9odHRwOi8vdGVzdC8y
--MTMwEYYPaHR0cDovL3Rlc3QvMjE0MBGGD2h0dHA6Ly90ZXN0LzIxNTARhg9odHRw
--Oi8vdGVzdC8yMTYwEYYPaHR0cDovL3Rlc3QvMjE3MBGGD2h0dHA6Ly90ZXN0LzIx
--ODARhg9odHRwOi8vdGVzdC8yMTkwEYYPaHR0cDovL3Rlc3QvMjIwMBGGD2h0dHA6
--Ly90ZXN0LzIyMTARhg9odHRwOi8vdGVzdC8yMjIwEYYPaHR0cDovL3Rlc3QvMjIz
--MBGGD2h0dHA6Ly90ZXN0LzIyNDARhg9odHRwOi8vdGVzdC8yMjUwEYYPaHR0cDov
--L3Rlc3QvMjI2MBGGD2h0dHA6Ly90ZXN0LzIyNzARhg9odHRwOi8vdGVzdC8yMjgw
--EYYPaHR0cDovL3Rlc3QvMjI5MBGGD2h0dHA6Ly90ZXN0LzIzMDARhg9odHRwOi8v
--dGVzdC8yMzEwEYYPaHR0cDovL3Rlc3QvMjMyMBGGD2h0dHA6Ly90ZXN0LzIzMzAR
--hg9odHRwOi8vdGVzdC8yMzQwEYYPaHR0cDovL3Rlc3QvMjM1MBGGD2h0dHA6Ly90
--ZXN0LzIzNjARhg9odHRwOi8vdGVzdC8yMzcwEYYPaHR0cDovL3Rlc3QvMjM4MBGG
--D2h0dHA6Ly90ZXN0LzIzOTARhg9odHRwOi8vdGVzdC8yNDAwEYYPaHR0cDovL3Rl
--c3QvMjQxMBGGD2h0dHA6Ly90ZXN0LzI0MjARhg9odHRwOi8vdGVzdC8yNDMwEYYP
--aHR0cDovL3Rlc3QvMjQ0MBGGD2h0dHA6Ly90ZXN0LzI0NTARhg9odHRwOi8vdGVz
--dC8yNDYwEYYPaHR0cDovL3Rlc3QvMjQ3MBGGD2h0dHA6Ly90ZXN0LzI0ODARhg9o
--dHRwOi8vdGVzdC8yNDkwEYYPaHR0cDovL3Rlc3QvMjUwMBGGD2h0dHA6Ly90ZXN0
--LzI1MTARhg9odHRwOi8vdGVzdC8yNTIwEYYPaHR0cDovL3Rlc3QvMjUzMBGGD2h0
--dHA6Ly90ZXN0LzI1NDARhg9odHRwOi8vdGVzdC8yNTUwEYYPaHR0cDovL3Rlc3Qv
--MjU2MBGGD2h0dHA6Ly90ZXN0LzI1NzARhg9odHRwOi8vdGVzdC8yNTgwEYYPaHR0
--cDovL3Rlc3QvMjU5MBGGD2h0dHA6Ly90ZXN0LzI2MDARhg9odHRwOi8vdGVzdC8y
--NjEwEYYPaHR0cDovL3Rlc3QvMjYyMBGGD2h0dHA6Ly90ZXN0LzI2MzARhg9odHRw
--Oi8vdGVzdC8yNjQwEYYPaHR0cDovL3Rlc3QvMjY1MBGGD2h0dHA6Ly90ZXN0LzI2
--NjARhg9odHRwOi8vdGVzdC8yNjcwEYYPaHR0cDovL3Rlc3QvMjY4MBGGD2h0dHA6
--Ly90ZXN0LzI2OTARhg9odHRwOi8vdGVzdC8yNzAwEYYPaHR0cDovL3Rlc3QvMjcx
--MBGGD2h0dHA6Ly90ZXN0LzI3MjARhg9odHRwOi8vdGVzdC8yNzMwEYYPaHR0cDov
--L3Rlc3QvMjc0MBGGD2h0dHA6Ly90ZXN0LzI3NTARhg9odHRwOi8vdGVzdC8yNzYw
--EYYPaHR0cDovL3Rlc3QvMjc3MBGGD2h0dHA6Ly90ZXN0LzI3ODARhg9odHRwOi8v
--dGVzdC8yNzkwEYYPaHR0cDovL3Rlc3QvMjgwMBGGD2h0dHA6Ly90ZXN0LzI4MTAR
--hg9odHRwOi8vdGVzdC8yODIwEYYPaHR0cDovL3Rlc3QvMjgzMBGGD2h0dHA6Ly90
--ZXN0LzI4NDARhg9odHRwOi8vdGVzdC8yODUwEYYPaHR0cDovL3Rlc3QvMjg2MBGG
--D2h0dHA6Ly90ZXN0LzI4NzARhg9odHRwOi8vdGVzdC8yODgwEYYPaHR0cDovL3Rl
--c3QvMjg5MBGGD2h0dHA6Ly90ZXN0LzI5MDARhg9odHRwOi8vdGVzdC8yOTEwEYYP
--aHR0cDovL3Rlc3QvMjkyMBGGD2h0dHA6Ly90ZXN0LzI5MzARhg9odHRwOi8vdGVz
--dC8yOTQwEYYPaHR0cDovL3Rlc3QvMjk1MBGGD2h0dHA6Ly90ZXN0LzI5NjARhg9o
--dHRwOi8vdGVzdC8yOTcwEYYPaHR0cDovL3Rlc3QvMjk4MBGGD2h0dHA6Ly90ZXN0
--LzI5OTARhg9odHRwOi8vdGVzdC8zMDAwEYYPaHR0cDovL3Rlc3QvMzAxMBGGD2h0
--dHA6Ly90ZXN0LzMwMjARhg9odHRwOi8vdGVzdC8zMDMwEYYPaHR0cDovL3Rlc3Qv
--MzA0MBGGD2h0dHA6Ly90ZXN0LzMwNTARhg9odHRwOi8vdGVzdC8zMDYwEYYPaHR0
--cDovL3Rlc3QvMzA3MBGGD2h0dHA6Ly90ZXN0LzMwODARhg9odHRwOi8vdGVzdC8z
--MDkwEYYPaHR0cDovL3Rlc3QvMzEwMBGGD2h0dHA6Ly90ZXN0LzMxMTARhg9odHRw
--Oi8vdGVzdC8zMTIwEYYPaHR0cDovL3Rlc3QvMzEzMBGGD2h0dHA6Ly90ZXN0LzMx
--NDARhg9odHRwOi8vdGVzdC8zMTUwEYYPaHR0cDovL3Rlc3QvMzE2MBGGD2h0dHA6
--Ly90ZXN0LzMxNzARhg9odHRwOi8vdGVzdC8zMTgwEYYPaHR0cDovL3Rlc3QvMzE5
--MBGGD2h0dHA6Ly90ZXN0LzMyMDARhg9odHRwOi8vdGVzdC8zMjEwEYYPaHR0cDov
--L3Rlc3QvMzIyMBGGD2h0dHA6Ly90ZXN0LzMyMzARhg9odHRwOi8vdGVzdC8zMjQw
--EYYPaHR0cDovL3Rlc3QvMzI1MBGGD2h0dHA6Ly90ZXN0LzMyNjARhg9odHRwOi8v
--dGVzdC8zMjcwEYYPaHR0cDovL3Rlc3QvMzI4MBGGD2h0dHA6Ly90ZXN0LzMyOTAR
--hg9odHRwOi8vdGVzdC8zMzAwEYYPaHR0cDovL3Rlc3QvMzMxMBGGD2h0dHA6Ly90
--ZXN0LzMzMjARhg9odHRwOi8vdGVzdC8zMzMwEYYPaHR0cDovL3Rlc3QvMzM0MBGG
--D2h0dHA6Ly90ZXN0LzMzNTARhg9odHRwOi8vdGVzdC8zMzYwEYYPaHR0cDovL3Rl
--c3QvMzM3MBGGD2h0dHA6Ly90ZXN0LzMzODARhg9odHRwOi8vdGVzdC8zMzkwEYYP
--aHR0cDovL3Rlc3QvMzQwMBGGD2h0dHA6Ly90ZXN0LzM0MTARhg9odHRwOi8vdGVz
--dC8zNDIwEYYPaHR0cDovL3Rlc3QvMzQzMBGGD2h0dHA6Ly90ZXN0LzM0NDARhg9o
--dHRwOi8vdGVzdC8zNDUwEYYPaHR0cDovL3Rlc3QvMzQ2MBGGD2h0dHA6Ly90ZXN0
--LzM0NzARhg9odHRwOi8vdGVzdC8zNDgwEYYPaHR0cDovL3Rlc3QvMzQ5MBGGD2h0
--dHA6Ly90ZXN0LzM1MDARhg9odHRwOi8vdGVzdC8zNTEwEYYPaHR0cDovL3Rlc3Qv
--MzUyMBGGD2h0dHA6Ly90ZXN0LzM1MzARhg9odHRwOi8vdGVzdC8zNTQwEYYPaHR0
--cDovL3Rlc3QvMzU1MBGGD2h0dHA6Ly90ZXN0LzM1NjARhg9odHRwOi8vdGVzdC8z
--NTcwEYYPaHR0cDovL3Rlc3QvMzU4MBGGD2h0dHA6Ly90ZXN0LzM1OTARhg9odHRw
--Oi8vdGVzdC8zNjAwEYYPaHR0cDovL3Rlc3QvMzYxMBGGD2h0dHA6Ly90ZXN0LzM2
--MjARhg9odHRwOi8vdGVzdC8zNjMwEYYPaHR0cDovL3Rlc3QvMzY0MBGGD2h0dHA6
--Ly90ZXN0LzM2NTARhg9odHRwOi8vdGVzdC8zNjYwEYYPaHR0cDovL3Rlc3QvMzY3
--MBGGD2h0dHA6Ly90ZXN0LzM2ODARhg9odHRwOi8vdGVzdC8zNjkwEYYPaHR0cDov
--L3Rlc3QvMzcwMBGGD2h0dHA6Ly90ZXN0LzM3MTARhg9odHRwOi8vdGVzdC8zNzIw
--EYYPaHR0cDovL3Rlc3QvMzczMBGGD2h0dHA6Ly90ZXN0LzM3NDARhg9odHRwOi8v
--dGVzdC8zNzUwEYYPaHR0cDovL3Rlc3QvMzc2MBGGD2h0dHA6Ly90ZXN0LzM3NzAR
--hg9odHRwOi8vdGVzdC8zNzgwEYYPaHR0cDovL3Rlc3QvMzc5MBGGD2h0dHA6Ly90
--ZXN0LzM4MDARhg9odHRwOi8vdGVzdC8zODEwEYYPaHR0cDovL3Rlc3QvMzgyMBGG
--D2h0dHA6Ly90ZXN0LzM4MzARhg9odHRwOi8vdGVzdC8zODQwEYYPaHR0cDovL3Rl
--c3QvMzg1MBGGD2h0dHA6Ly90ZXN0LzM4NjARhg9odHRwOi8vdGVzdC8zODcwEYYP
--aHR0cDovL3Rlc3QvMzg4MBGGD2h0dHA6Ly90ZXN0LzM4OTARhg9odHRwOi8vdGVz
--dC8zOTAwEYYPaHR0cDovL3Rlc3QvMzkxMBGGD2h0dHA6Ly90ZXN0LzM5MjARhg9o
--dHRwOi8vdGVzdC8zOTMwEYYPaHR0cDovL3Rlc3QvMzk0MBGGD2h0dHA6Ly90ZXN0
--LzM5NTARhg9odHRwOi8vdGVzdC8zOTYwEYYPaHR0cDovL3Rlc3QvMzk3MBGGD2h0
--dHA6Ly90ZXN0LzM5ODARhg9odHRwOi8vdGVzdC8zOTkwEYYPaHR0cDovL3Rlc3Qv
--NDAwMBGGD2h0dHA6Ly90ZXN0LzQwMTARhg9odHRwOi8vdGVzdC80MDIwEYYPaHR0
--cDovL3Rlc3QvNDAzMBGGD2h0dHA6Ly90ZXN0LzQwNDARhg9odHRwOi8vdGVzdC80
--MDUwEYYPaHR0cDovL3Rlc3QvNDA2MBGGD2h0dHA6Ly90ZXN0LzQwNzARhg9odHRw
--Oi8vdGVzdC80MDgwEYYPaHR0cDovL3Rlc3QvNDA5MBGGD2h0dHA6Ly90ZXN0LzQx
--MDARhg9odHRwOi8vdGVzdC80MTEwEYYPaHR0cDovL3Rlc3QvNDEyMBGGD2h0dHA6
--Ly90ZXN0LzQxMzARhg9odHRwOi8vdGVzdC80MTQwEYYPaHR0cDovL3Rlc3QvNDE1
--MBGGD2h0dHA6Ly90ZXN0LzQxNjARhg9odHRwOi8vdGVzdC80MTcwEYYPaHR0cDov
--L3Rlc3QvNDE4MBGGD2h0dHA6Ly90ZXN0LzQxOTARhg9odHRwOi8vdGVzdC80MjAw
--EYYPaHR0cDovL3Rlc3QvNDIxMBGGD2h0dHA6Ly90ZXN0LzQyMjARhg9odHRwOi8v
--dGVzdC80MjMwEYYPaHR0cDovL3Rlc3QvNDI0MBGGD2h0dHA6Ly90ZXN0LzQyNTAR
--hg9odHRwOi8vdGVzdC80MjYwEYYPaHR0cDovL3Rlc3QvNDI3MBGGD2h0dHA6Ly90
--ZXN0LzQyODARhg9odHRwOi8vdGVzdC80MjkwEYYPaHR0cDovL3Rlc3QvNDMwMBGG
--D2h0dHA6Ly90ZXN0LzQzMTARhg9odHRwOi8vdGVzdC80MzIwEYYPaHR0cDovL3Rl
--c3QvNDMzMBGGD2h0dHA6Ly90ZXN0LzQzNDARhg9odHRwOi8vdGVzdC80MzUwEYYP
--aHR0cDovL3Rlc3QvNDM2MBGGD2h0dHA6Ly90ZXN0LzQzNzARhg9odHRwOi8vdGVz
--dC80MzgwEYYPaHR0cDovL3Rlc3QvNDM5MBGGD2h0dHA6Ly90ZXN0LzQ0MDARhg9o
--dHRwOi8vdGVzdC80NDEwEYYPaHR0cDovL3Rlc3QvNDQyMBGGD2h0dHA6Ly90ZXN0
--LzQ0MzARhg9odHRwOi8vdGVzdC80NDQwEYYPaHR0cDovL3Rlc3QvNDQ1MBGGD2h0
--dHA6Ly90ZXN0LzQ0NjARhg9odHRwOi8vdGVzdC80NDcwEYYPaHR0cDovL3Rlc3Qv
--NDQ4MBGGD2h0dHA6Ly90ZXN0LzQ0OTARhg9odHRwOi8vdGVzdC80NTAwEYYPaHR0
--cDovL3Rlc3QvNDUxMBGGD2h0dHA6Ly90ZXN0LzQ1MjARhg9odHRwOi8vdGVzdC80
--NTMwEYYPaHR0cDovL3Rlc3QvNDU0MBGGD2h0dHA6Ly90ZXN0LzQ1NTARhg9odHRw
--Oi8vdGVzdC80NTYwEYYPaHR0cDovL3Rlc3QvNDU3MBGGD2h0dHA6Ly90ZXN0LzQ1
--ODARhg9odHRwOi8vdGVzdC80NTkwEYYPaHR0cDovL3Rlc3QvNDYwMBGGD2h0dHA6
--Ly90ZXN0LzQ2MTARhg9odHRwOi8vdGVzdC80NjIwEYYPaHR0cDovL3Rlc3QvNDYz
--MBGGD2h0dHA6Ly90ZXN0LzQ2NDARhg9odHRwOi8vdGVzdC80NjUwEYYPaHR0cDov
--L3Rlc3QvNDY2MBGGD2h0dHA6Ly90ZXN0LzQ2NzARhg9odHRwOi8vdGVzdC80Njgw
--EYYPaHR0cDovL3Rlc3QvNDY5MBGGD2h0dHA6Ly90ZXN0LzQ3MDARhg9odHRwOi8v
--dGVzdC80NzEwEYYPaHR0cDovL3Rlc3QvNDcyMBGGD2h0dHA6Ly90ZXN0LzQ3MzAR
--hg9odHRwOi8vdGVzdC80NzQwEYYPaHR0cDovL3Rlc3QvNDc1MBGGD2h0dHA6Ly90
--ZXN0LzQ3NjARhg9odHRwOi8vdGVzdC80NzcwEYYPaHR0cDovL3Rlc3QvNDc4MBGG
--D2h0dHA6Ly90ZXN0LzQ3OTARhg9odHRwOi8vdGVzdC80ODAwEYYPaHR0cDovL3Rl
--c3QvNDgxMBGGD2h0dHA6Ly90ZXN0LzQ4MjARhg9odHRwOi8vdGVzdC80ODMwEYYP
--aHR0cDovL3Rlc3QvNDg0MBGGD2h0dHA6Ly90ZXN0LzQ4NTARhg9odHRwOi8vdGVz
--dC80ODYwEYYPaHR0cDovL3Rlc3QvNDg3MBGGD2h0dHA6Ly90ZXN0LzQ4ODARhg9o
--dHRwOi8vdGVzdC80ODkwEYYPaHR0cDovL3Rlc3QvNDkwMBGGD2h0dHA6Ly90ZXN0
--LzQ5MTARhg9odHRwOi8vdGVzdC80OTIwEYYPaHR0cDovL3Rlc3QvNDkzMBGGD2h0
--dHA6Ly90ZXN0LzQ5NDARhg9odHRwOi8vdGVzdC80OTUwEYYPaHR0cDovL3Rlc3Qv
--NDk2MBGGD2h0dHA6Ly90ZXN0LzQ5NzARhg9odHRwOi8vdGVzdC80OTgwEYYPaHR0
--cDovL3Rlc3QvNDk5MBGGD2h0dHA6Ly90ZXN0LzUwMDARhg9odHRwOi8vdGVzdC81
--MDEwEYYPaHR0cDovL3Rlc3QvNTAyMBGGD2h0dHA6Ly90ZXN0LzUwMzARhg9odHRw
--Oi8vdGVzdC81MDQwEYYPaHR0cDovL3Rlc3QvNTA1MBGGD2h0dHA6Ly90ZXN0LzUw
--NjARhg9odHRwOi8vdGVzdC81MDcwEYYPaHR0cDovL3Rlc3QvNTA4MBGGD2h0dHA6
--Ly90ZXN0LzUwOTARhg9odHRwOi8vdGVzdC81MTAwEYYPaHR0cDovL3Rlc3QvNTEx
--MBGGD2h0dHA6Ly90ZXN0LzUxMjARhg9odHRwOi8vdGVzdC81MTMwEYYPaHR0cDov
--L3Rlc3QvNTE0MBGGD2h0dHA6Ly90ZXN0LzUxNTARhg9odHRwOi8vdGVzdC81MTYw
--EYYPaHR0cDovL3Rlc3QvNTE3MBGGD2h0dHA6Ly90ZXN0LzUxODARhg9odHRwOi8v
--dGVzdC81MTkwEYYPaHR0cDovL3Rlc3QvNTIwMBGGD2h0dHA6Ly90ZXN0LzUyMTAR
--hg9odHRwOi8vdGVzdC81MjIwEYYPaHR0cDovL3Rlc3QvNTIzMBGGD2h0dHA6Ly90
--ZXN0LzUyNDARhg9odHRwOi8vdGVzdC81MjUwEYYPaHR0cDovL3Rlc3QvNTI2MBGG
--D2h0dHA6Ly90ZXN0LzUyNzARhg9odHRwOi8vdGVzdC81MjgwEYYPaHR0cDovL3Rl
--c3QvNTI5MBGGD2h0dHA6Ly90ZXN0LzUzMDARhg9odHRwOi8vdGVzdC81MzEwEYYP
--aHR0cDovL3Rlc3QvNTMyMBGGD2h0dHA6Ly90ZXN0LzUzMzARhg9odHRwOi8vdGVz
--dC81MzQwEYYPaHR0cDovL3Rlc3QvNTM1MBGGD2h0dHA6Ly90ZXN0LzUzNjARhg9o
--dHRwOi8vdGVzdC81MzcwEYYPaHR0cDovL3Rlc3QvNTM4MBGGD2h0dHA6Ly90ZXN0
--LzUzOTARhg9odHRwOi8vdGVzdC81NDAwEYYPaHR0cDovL3Rlc3QvNTQxMBGGD2h0
--dHA6Ly90ZXN0LzU0MjARhg9odHRwOi8vdGVzdC81NDMwEYYPaHR0cDovL3Rlc3Qv
--NTQ0MBGGD2h0dHA6Ly90ZXN0LzU0NTARhg9odHRwOi8vdGVzdC81NDYwEYYPaHR0
--cDovL3Rlc3QvNTQ3MBGGD2h0dHA6Ly90ZXN0LzU0ODARhg9odHRwOi8vdGVzdC81
--NDkwEYYPaHR0cDovL3Rlc3QvNTUwMBGGD2h0dHA6Ly90ZXN0LzU1MTARhg9odHRw
--Oi8vdGVzdC81NTIwEYYPaHR0cDovL3Rlc3QvNTUzMBGGD2h0dHA6Ly90ZXN0LzU1
--NDARhg9odHRwOi8vdGVzdC81NTUwEYYPaHR0cDovL3Rlc3QvNTU2MBGGD2h0dHA6
--Ly90ZXN0LzU1NzARhg9odHRwOi8vdGVzdC81NTgwEYYPaHR0cDovL3Rlc3QvNTU5
--MBGGD2h0dHA6Ly90ZXN0LzU2MDARhg9odHRwOi8vdGVzdC81NjEwEYYPaHR0cDov
--L3Rlc3QvNTYyMBGGD2h0dHA6Ly90ZXN0LzU2MzARhg9odHRwOi8vdGVzdC81NjQw
--EYYPaHR0cDovL3Rlc3QvNTY1MBGGD2h0dHA6Ly90ZXN0LzU2NjARhg9odHRwOi8v
--dGVzdC81NjcwEYYPaHR0cDovL3Rlc3QvNTY4MBGGD2h0dHA6Ly90ZXN0LzU2OTAR
--hg9odHRwOi8vdGVzdC81NzAwEYYPaHR0cDovL3Rlc3QvNTcxMBGGD2h0dHA6Ly90
--ZXN0LzU3MjARhg9odHRwOi8vdGVzdC81NzMwEYYPaHR0cDovL3Rlc3QvNTc0MBGG
--D2h0dHA6Ly90ZXN0LzU3NTARhg9odHRwOi8vdGVzdC81NzYwEYYPaHR0cDovL3Rl
--c3QvNTc3MBGGD2h0dHA6Ly90ZXN0LzU3ODARhg9odHRwOi8vdGVzdC81NzkwEYYP
--aHR0cDovL3Rlc3QvNTgwMBGGD2h0dHA6Ly90ZXN0LzU4MTARhg9odHRwOi8vdGVz
--dC81ODIwEYYPaHR0cDovL3Rlc3QvNTgzMBGGD2h0dHA6Ly90ZXN0LzU4NDARhg9o
--dHRwOi8vdGVzdC81ODUwEYYPaHR0cDovL3Rlc3QvNTg2MBGGD2h0dHA6Ly90ZXN0
--LzU4NzARhg9odHRwOi8vdGVzdC81ODgwEYYPaHR0cDovL3Rlc3QvNTg5MBGGD2h0
--dHA6Ly90ZXN0LzU5MDARhg9odHRwOi8vdGVzdC81OTEwEYYPaHR0cDovL3Rlc3Qv
--NTkyMBGGD2h0dHA6Ly90ZXN0LzU5MzARhg9odHRwOi8vdGVzdC81OTQwEYYPaHR0
--cDovL3Rlc3QvNTk1MBGGD2h0dHA6Ly90ZXN0LzU5NjARhg9odHRwOi8vdGVzdC81
--OTcwEYYPaHR0cDovL3Rlc3QvNTk4MBGGD2h0dHA6Ly90ZXN0LzU5OTARhg9odHRw
--Oi8vdGVzdC82MDAwEYYPaHR0cDovL3Rlc3QvNjAxMBGGD2h0dHA6Ly90ZXN0LzYw
--MjARhg9odHRwOi8vdGVzdC82MDMwEYYPaHR0cDovL3Rlc3QvNjA0MBGGD2h0dHA6
--Ly90ZXN0LzYwNTARhg9odHRwOi8vdGVzdC82MDYwEYYPaHR0cDovL3Rlc3QvNjA3
--MBGGD2h0dHA6Ly90ZXN0LzYwODARhg9odHRwOi8vdGVzdC82MDkwEYYPaHR0cDov
--L3Rlc3QvNjEwMBGGD2h0dHA6Ly90ZXN0LzYxMTARhg9odHRwOi8vdGVzdC82MTIw
--EYYPaHR0cDovL3Rlc3QvNjEzMBGGD2h0dHA6Ly90ZXN0LzYxNDARhg9odHRwOi8v
--dGVzdC82MTUwEYYPaHR0cDovL3Rlc3QvNjE2MBGGD2h0dHA6Ly90ZXN0LzYxNzAR
--hg9odHRwOi8vdGVzdC82MTgwEYYPaHR0cDovL3Rlc3QvNjE5MBGGD2h0dHA6Ly90
--ZXN0LzYyMDARhg9odHRwOi8vdGVzdC82MjEwEYYPaHR0cDovL3Rlc3QvNjIyMBGG
--D2h0dHA6Ly90ZXN0LzYyMzARhg9odHRwOi8vdGVzdC82MjQwEYYPaHR0cDovL3Rl
--c3QvNjI1MBGGD2h0dHA6Ly90ZXN0LzYyNjARhg9odHRwOi8vdGVzdC82MjcwEYYP
--aHR0cDovL3Rlc3QvNjI4MBGGD2h0dHA6Ly90ZXN0LzYyOTARhg9odHRwOi8vdGVz
--dC82MzAwEYYPaHR0cDovL3Rlc3QvNjMxMBGGD2h0dHA6Ly90ZXN0LzYzMjARhg9o
--dHRwOi8vdGVzdC82MzMwEYYPaHR0cDovL3Rlc3QvNjM0MBGGD2h0dHA6Ly90ZXN0
--LzYzNTARhg9odHRwOi8vdGVzdC82MzYwEYYPaHR0cDovL3Rlc3QvNjM3MBGGD2h0
--dHA6Ly90ZXN0LzYzODARhg9odHRwOi8vdGVzdC82MzkwEYYPaHR0cDovL3Rlc3Qv
--NjQwMBGGD2h0dHA6Ly90ZXN0LzY0MTARhg9odHRwOi8vdGVzdC82NDIwEYYPaHR0
--cDovL3Rlc3QvNjQzMBGGD2h0dHA6Ly90ZXN0LzY0NDARhg9odHRwOi8vdGVzdC82
--NDUwEYYPaHR0cDovL3Rlc3QvNjQ2MBGGD2h0dHA6Ly90ZXN0LzY0NzARhg9odHRw
--Oi8vdGVzdC82NDgwEYYPaHR0cDovL3Rlc3QvNjQ5MBGGD2h0dHA6Ly90ZXN0LzY1
--MDARhg9odHRwOi8vdGVzdC82NTEwEYYPaHR0cDovL3Rlc3QvNjUyMBGGD2h0dHA6
--Ly90ZXN0LzY1MzARhg9odHRwOi8vdGVzdC82NTQwEYYPaHR0cDovL3Rlc3QvNjU1
--MBGGD2h0dHA6Ly90ZXN0LzY1NjARhg9odHRwOi8vdGVzdC82NTcwEYYPaHR0cDov
--L3Rlc3QvNjU4MBGGD2h0dHA6Ly90ZXN0LzY1OTARhg9odHRwOi8vdGVzdC82NjAw
--EYYPaHR0cDovL3Rlc3QvNjYxMBGGD2h0dHA6Ly90ZXN0LzY2MjARhg9odHRwOi8v
--dGVzdC82NjMwEYYPaHR0cDovL3Rlc3QvNjY0MBGGD2h0dHA6Ly90ZXN0LzY2NTAR
--hg9odHRwOi8vdGVzdC82NjYwEYYPaHR0cDovL3Rlc3QvNjY3MBGGD2h0dHA6Ly90
--ZXN0LzY2ODARhg9odHRwOi8vdGVzdC82NjkwEYYPaHR0cDovL3Rlc3QvNjcwMBGG
--D2h0dHA6Ly90ZXN0LzY3MTARhg9odHRwOi8vdGVzdC82NzIwEYYPaHR0cDovL3Rl
--c3QvNjczMBGGD2h0dHA6Ly90ZXN0LzY3NDARhg9odHRwOi8vdGVzdC82NzUwEYYP
--aHR0cDovL3Rlc3QvNjc2MBGGD2h0dHA6Ly90ZXN0LzY3NzARhg9odHRwOi8vdGVz
--dC82NzgwEYYPaHR0cDovL3Rlc3QvNjc5MBGGD2h0dHA6Ly90ZXN0LzY4MDARhg9o
--dHRwOi8vdGVzdC82ODEwEYYPaHR0cDovL3Rlc3QvNjgyMBGGD2h0dHA6Ly90ZXN0
--LzY4MzARhg9odHRwOi8vdGVzdC82ODQwEYYPaHR0cDovL3Rlc3QvNjg1MBGGD2h0
--dHA6Ly90ZXN0LzY4NjARhg9odHRwOi8vdGVzdC82ODcwEYYPaHR0cDovL3Rlc3Qv
--Njg4MBGGD2h0dHA6Ly90ZXN0LzY4OTARhg9odHRwOi8vdGVzdC82OTAwEYYPaHR0
--cDovL3Rlc3QvNjkxMBGGD2h0dHA6Ly90ZXN0LzY5MjARhg9odHRwOi8vdGVzdC82
--OTMwEYYPaHR0cDovL3Rlc3QvNjk0MBGGD2h0dHA6Ly90ZXN0LzY5NTARhg9odHRw
--Oi8vdGVzdC82OTYwEYYPaHR0cDovL3Rlc3QvNjk3MBGGD2h0dHA6Ly90ZXN0LzY5
--ODARhg9odHRwOi8vdGVzdC82OTkwEYYPaHR0cDovL3Rlc3QvNzAwMBGGD2h0dHA6
--Ly90ZXN0LzcwMTARhg9odHRwOi8vdGVzdC83MDIwEYYPaHR0cDovL3Rlc3QvNzAz
--MBGGD2h0dHA6Ly90ZXN0LzcwNDARhg9odHRwOi8vdGVzdC83MDUwEYYPaHR0cDov
--L3Rlc3QvNzA2MBGGD2h0dHA6Ly90ZXN0LzcwNzARhg9odHRwOi8vdGVzdC83MDgw
--EYYPaHR0cDovL3Rlc3QvNzA5MBGGD2h0dHA6Ly90ZXN0LzcxMDARhg9odHRwOi8v
--dGVzdC83MTEwEYYPaHR0cDovL3Rlc3QvNzEyMBGGD2h0dHA6Ly90ZXN0LzcxMzAR
--hg9odHRwOi8vdGVzdC83MTQwEYYPaHR0cDovL3Rlc3QvNzE1MBGGD2h0dHA6Ly90
--ZXN0LzcxNjARhg9odHRwOi8vdGVzdC83MTcwEYYPaHR0cDovL3Rlc3QvNzE4MBGG
--D2h0dHA6Ly90ZXN0LzcxOTARhg9odHRwOi8vdGVzdC83MjAwEYYPaHR0cDovL3Rl
--c3QvNzIxMBGGD2h0dHA6Ly90ZXN0LzcyMjARhg9odHRwOi8vdGVzdC83MjMwEYYP
--aHR0cDovL3Rlc3QvNzI0MBGGD2h0dHA6Ly90ZXN0LzcyNTARhg9odHRwOi8vdGVz
--dC83MjYwEYYPaHR0cDovL3Rlc3QvNzI3MBGGD2h0dHA6Ly90ZXN0LzcyODARhg9o
--dHRwOi8vdGVzdC83MjkwEYYPaHR0cDovL3Rlc3QvNzMwMBGGD2h0dHA6Ly90ZXN0
--LzczMTARhg9odHRwOi8vdGVzdC83MzIwEYYPaHR0cDovL3Rlc3QvNzMzMBGGD2h0
--dHA6Ly90ZXN0LzczNDARhg9odHRwOi8vdGVzdC83MzUwEYYPaHR0cDovL3Rlc3Qv
--NzM2MBGGD2h0dHA6Ly90ZXN0LzczNzARhg9odHRwOi8vdGVzdC83MzgwEYYPaHR0
--cDovL3Rlc3QvNzM5MBGGD2h0dHA6Ly90ZXN0Lzc0MDARhg9odHRwOi8vdGVzdC83
--NDEwEYYPaHR0cDovL3Rlc3QvNzQyMBGGD2h0dHA6Ly90ZXN0Lzc0MzARhg9odHRw
--Oi8vdGVzdC83NDQwEYYPaHR0cDovL3Rlc3QvNzQ1MBGGD2h0dHA6Ly90ZXN0Lzc0
--NjARhg9odHRwOi8vdGVzdC83NDcwEYYPaHR0cDovL3Rlc3QvNzQ4MBGGD2h0dHA6
--Ly90ZXN0Lzc0OTARhg9odHRwOi8vdGVzdC83NTAwEYYPaHR0cDovL3Rlc3QvNzUx
--MBGGD2h0dHA6Ly90ZXN0Lzc1MjARhg9odHRwOi8vdGVzdC83NTMwEYYPaHR0cDov
--L3Rlc3QvNzU0MBGGD2h0dHA6Ly90ZXN0Lzc1NTARhg9odHRwOi8vdGVzdC83NTYw
--EYYPaHR0cDovL3Rlc3QvNzU3MBGGD2h0dHA6Ly90ZXN0Lzc1ODARhg9odHRwOi8v
--dGVzdC83NTkwEYYPaHR0cDovL3Rlc3QvNzYwMBGGD2h0dHA6Ly90ZXN0Lzc2MTAR
--hg9odHRwOi8vdGVzdC83NjIwEYYPaHR0cDovL3Rlc3QvNzYzMBGGD2h0dHA6Ly90
--ZXN0Lzc2NDARhg9odHRwOi8vdGVzdC83NjUwEYYPaHR0cDovL3Rlc3QvNzY2MBGG
--D2h0dHA6Ly90ZXN0Lzc2NzARhg9odHRwOi8vdGVzdC83NjgwEYYPaHR0cDovL3Rl
--c3QvNzY5MBGGD2h0dHA6Ly90ZXN0Lzc3MDARhg9odHRwOi8vdGVzdC83NzEwEYYP
--aHR0cDovL3Rlc3QvNzcyMBGGD2h0dHA6Ly90ZXN0Lzc3MzARhg9odHRwOi8vdGVz
--dC83NzQwEYYPaHR0cDovL3Rlc3QvNzc1MBGGD2h0dHA6Ly90ZXN0Lzc3NjARhg9o
--dHRwOi8vdGVzdC83NzcwEYYPaHR0cDovL3Rlc3QvNzc4MBGGD2h0dHA6Ly90ZXN0
--Lzc3OTARhg9odHRwOi8vdGVzdC83ODAwEYYPaHR0cDovL3Rlc3QvNzgxMBGGD2h0
--dHA6Ly90ZXN0Lzc4MjARhg9odHRwOi8vdGVzdC83ODMwEYYPaHR0cDovL3Rlc3Qv
--Nzg0MBGGD2h0dHA6Ly90ZXN0Lzc4NTARhg9odHRwOi8vdGVzdC83ODYwEYYPaHR0
--cDovL3Rlc3QvNzg3MBGGD2h0dHA6Ly90ZXN0Lzc4ODARhg9odHRwOi8vdGVzdC83
--ODkwEYYPaHR0cDovL3Rlc3QvNzkwMBGGD2h0dHA6Ly90ZXN0Lzc5MTARhg9odHRw
--Oi8vdGVzdC83OTIwEYYPaHR0cDovL3Rlc3QvNzkzMBGGD2h0dHA6Ly90ZXN0Lzc5
--NDARhg9odHRwOi8vdGVzdC83OTUwEYYPaHR0cDovL3Rlc3QvNzk2MBGGD2h0dHA6
--Ly90ZXN0Lzc5NzARhg9odHRwOi8vdGVzdC83OTgwEYYPaHR0cDovL3Rlc3QvNzk5
--MBGGD2h0dHA6Ly90ZXN0LzgwMDARhg9odHRwOi8vdGVzdC84MDEwEYYPaHR0cDov
--L3Rlc3QvODAyMBGGD2h0dHA6Ly90ZXN0LzgwMzARhg9odHRwOi8vdGVzdC84MDQw
--EYYPaHR0cDovL3Rlc3QvODA1MBGGD2h0dHA6Ly90ZXN0LzgwNjARhg9odHRwOi8v
--dGVzdC84MDcwEYYPaHR0cDovL3Rlc3QvODA4MBGGD2h0dHA6Ly90ZXN0LzgwOTAR
--hg9odHRwOi8vdGVzdC84MTAwEYYPaHR0cDovL3Rlc3QvODExMBGGD2h0dHA6Ly90
--ZXN0LzgxMjARhg9odHRwOi8vdGVzdC84MTMwEYYPaHR0cDovL3Rlc3QvODE0MBGG
--D2h0dHA6Ly90ZXN0LzgxNTARhg9odHRwOi8vdGVzdC84MTYwEYYPaHR0cDovL3Rl
--c3QvODE3MBGGD2h0dHA6Ly90ZXN0LzgxODARhg9odHRwOi8vdGVzdC84MTkwEYYP
--aHR0cDovL3Rlc3QvODIwMBGGD2h0dHA6Ly90ZXN0LzgyMTARhg9odHRwOi8vdGVz
--dC84MjIwEYYPaHR0cDovL3Rlc3QvODIzMBGGD2h0dHA6Ly90ZXN0LzgyNDARhg9o
--dHRwOi8vdGVzdC84MjUwEYYPaHR0cDovL3Rlc3QvODI2MBGGD2h0dHA6Ly90ZXN0
--LzgyNzARhg9odHRwOi8vdGVzdC84MjgwEYYPaHR0cDovL3Rlc3QvODI5MBGGD2h0
--dHA6Ly90ZXN0LzgzMDARhg9odHRwOi8vdGVzdC84MzEwEYYPaHR0cDovL3Rlc3Qv
--ODMyMBGGD2h0dHA6Ly90ZXN0LzgzMzARhg9odHRwOi8vdGVzdC84MzQwEYYPaHR0
--cDovL3Rlc3QvODM1MBGGD2h0dHA6Ly90ZXN0LzgzNjARhg9odHRwOi8vdGVzdC84
--MzcwEYYPaHR0cDovL3Rlc3QvODM4MBGGD2h0dHA6Ly90ZXN0LzgzOTARhg9odHRw
--Oi8vdGVzdC84NDAwEYYPaHR0cDovL3Rlc3QvODQxMBGGD2h0dHA6Ly90ZXN0Lzg0
--MjARhg9odHRwOi8vdGVzdC84NDMwEYYPaHR0cDovL3Rlc3QvODQ0MBGGD2h0dHA6
--Ly90ZXN0Lzg0NTARhg9odHRwOi8vdGVzdC84NDYwEYYPaHR0cDovL3Rlc3QvODQ3
--MBGGD2h0dHA6Ly90ZXN0Lzg0ODARhg9odHRwOi8vdGVzdC84NDkwEYYPaHR0cDov
--L3Rlc3QvODUwMBGGD2h0dHA6Ly90ZXN0Lzg1MTARhg9odHRwOi8vdGVzdC84NTIw
--EYYPaHR0cDovL3Rlc3QvODUzMBGGD2h0dHA6Ly90ZXN0Lzg1NDARhg9odHRwOi8v
--dGVzdC84NTUwEYYPaHR0cDovL3Rlc3QvODU2MBGGD2h0dHA6Ly90ZXN0Lzg1NzAR
--hg9odHRwOi8vdGVzdC84NTgwEYYPaHR0cDovL3Rlc3QvODU5MBGGD2h0dHA6Ly90
--ZXN0Lzg2MDARhg9odHRwOi8vdGVzdC84NjEwEYYPaHR0cDovL3Rlc3QvODYyMBGG
--D2h0dHA6Ly90ZXN0Lzg2MzARhg9odHRwOi8vdGVzdC84NjQwEYYPaHR0cDovL3Rl
--c3QvODY1MBGGD2h0dHA6Ly90ZXN0Lzg2NjARhg9odHRwOi8vdGVzdC84NjcwEYYP
--aHR0cDovL3Rlc3QvODY4MBGGD2h0dHA6Ly90ZXN0Lzg2OTARhg9odHRwOi8vdGVz
--dC84NzAwEYYPaHR0cDovL3Rlc3QvODcxMBGGD2h0dHA6Ly90ZXN0Lzg3MjARhg9o
--dHRwOi8vdGVzdC84NzMwEYYPaHR0cDovL3Rlc3QvODc0MBGGD2h0dHA6Ly90ZXN0
--Lzg3NTARhg9odHRwOi8vdGVzdC84NzYwEYYPaHR0cDovL3Rlc3QvODc3MBGGD2h0
--dHA6Ly90ZXN0Lzg3ODARhg9odHRwOi8vdGVzdC84NzkwEYYPaHR0cDovL3Rlc3Qv
--ODgwMBGGD2h0dHA6Ly90ZXN0Lzg4MTARhg9odHRwOi8vdGVzdC84ODIwEYYPaHR0
--cDovL3Rlc3QvODgzMBGGD2h0dHA6Ly90ZXN0Lzg4NDARhg9odHRwOi8vdGVzdC84
--ODUwEYYPaHR0cDovL3Rlc3QvODg2MBGGD2h0dHA6Ly90ZXN0Lzg4NzARhg9odHRw
--Oi8vdGVzdC84ODgwEYYPaHR0cDovL3Rlc3QvODg5MBGGD2h0dHA6Ly90ZXN0Lzg5
--MDARhg9odHRwOi8vdGVzdC84OTEwEYYPaHR0cDovL3Rlc3QvODkyMBGGD2h0dHA6
--Ly90ZXN0Lzg5MzARhg9odHRwOi8vdGVzdC84OTQwEYYPaHR0cDovL3Rlc3QvODk1
--MBGGD2h0dHA6Ly90ZXN0Lzg5NjARhg9odHRwOi8vdGVzdC84OTcwEYYPaHR0cDov
--L3Rlc3QvODk4MBGGD2h0dHA6Ly90ZXN0Lzg5OTARhg9odHRwOi8vdGVzdC85MDAw
--EYYPaHR0cDovL3Rlc3QvOTAxMBGGD2h0dHA6Ly90ZXN0LzkwMjARhg9odHRwOi8v
--dGVzdC85MDMwEYYPaHR0cDovL3Rlc3QvOTA0MBGGD2h0dHA6Ly90ZXN0LzkwNTAR
--hg9odHRwOi8vdGVzdC85MDYwEYYPaHR0cDovL3Rlc3QvOTA3MBGGD2h0dHA6Ly90
--ZXN0LzkwODARhg9odHRwOi8vdGVzdC85MDkwEYYPaHR0cDovL3Rlc3QvOTEwMBGG
--D2h0dHA6Ly90ZXN0LzkxMTARhg9odHRwOi8vdGVzdC85MTIwEYYPaHR0cDovL3Rl
--c3QvOTEzMBGGD2h0dHA6Ly90ZXN0LzkxNDARhg9odHRwOi8vdGVzdC85MTUwEYYP
--aHR0cDovL3Rlc3QvOTE2MBGGD2h0dHA6Ly90ZXN0LzkxNzARhg9odHRwOi8vdGVz
--dC85MTgwEYYPaHR0cDovL3Rlc3QvOTE5MBGGD2h0dHA6Ly90ZXN0LzkyMDARhg9o
--dHRwOi8vdGVzdC85MjEwEYYPaHR0cDovL3Rlc3QvOTIyMBGGD2h0dHA6Ly90ZXN0
--LzkyMzARhg9odHRwOi8vdGVzdC85MjQwEYYPaHR0cDovL3Rlc3QvOTI1MBGGD2h0
--dHA6Ly90ZXN0LzkyNjARhg9odHRwOi8vdGVzdC85MjcwEYYPaHR0cDovL3Rlc3Qv
--OTI4MBGGD2h0dHA6Ly90ZXN0LzkyOTARhg9odHRwOi8vdGVzdC85MzAwEYYPaHR0
--cDovL3Rlc3QvOTMxMBGGD2h0dHA6Ly90ZXN0LzkzMjARhg9odHRwOi8vdGVzdC85
--MzMwEYYPaHR0cDovL3Rlc3QvOTM0MBGGD2h0dHA6Ly90ZXN0LzkzNTARhg9odHRw
--Oi8vdGVzdC85MzYwEYYPaHR0cDovL3Rlc3QvOTM3MBGGD2h0dHA6Ly90ZXN0Lzkz
--ODARhg9odHRwOi8vdGVzdC85MzkwEYYPaHR0cDovL3Rlc3QvOTQwMBGGD2h0dHA6
--Ly90ZXN0Lzk0MTARhg9odHRwOi8vdGVzdC85NDIwEYYPaHR0cDovL3Rlc3QvOTQz
--MBGGD2h0dHA6Ly90ZXN0Lzk0NDARhg9odHRwOi8vdGVzdC85NDUwEYYPaHR0cDov
--L3Rlc3QvOTQ2MBGGD2h0dHA6Ly90ZXN0Lzk0NzARhg9odHRwOi8vdGVzdC85NDgw
--EYYPaHR0cDovL3Rlc3QvOTQ5MBGGD2h0dHA6Ly90ZXN0Lzk1MDARhg9odHRwOi8v
--dGVzdC85NTEwEYYPaHR0cDovL3Rlc3QvOTUyMBGGD2h0dHA6Ly90ZXN0Lzk1MzAR
--hg9odHRwOi8vdGVzdC85NTQwEYYPaHR0cDovL3Rlc3QvOTU1MBGGD2h0dHA6Ly90
--ZXN0Lzk1NjARhg9odHRwOi8vdGVzdC85NTcwEYYPaHR0cDovL3Rlc3QvOTU4MBGG
--D2h0dHA6Ly90ZXN0Lzk1OTARhg9odHRwOi8vdGVzdC85NjAwEYYPaHR0cDovL3Rl
--c3QvOTYxMBGGD2h0dHA6Ly90ZXN0Lzk2MjARhg9odHRwOi8vdGVzdC85NjMwEYYP
--aHR0cDovL3Rlc3QvOTY0MBGGD2h0dHA6Ly90ZXN0Lzk2NTARhg9odHRwOi8vdGVz
--dC85NjYwEYYPaHR0cDovL3Rlc3QvOTY3MBGGD2h0dHA6Ly90ZXN0Lzk2ODARhg9o
--dHRwOi8vdGVzdC85NjkwEYYPaHR0cDovL3Rlc3QvOTcwMBGGD2h0dHA6Ly90ZXN0
--Lzk3MTARhg9odHRwOi8vdGVzdC85NzIwEYYPaHR0cDovL3Rlc3QvOTczMBGGD2h0
--dHA6Ly90ZXN0Lzk3NDARhg9odHRwOi8vdGVzdC85NzUwEYYPaHR0cDovL3Rlc3Qv
--OTc2MBGGD2h0dHA6Ly90ZXN0Lzk3NzARhg9odHRwOi8vdGVzdC85NzgwEYYPaHR0
--cDovL3Rlc3QvOTc5MBGGD2h0dHA6Ly90ZXN0Lzk4MDARhg9odHRwOi8vdGVzdC85
--ODEwEYYPaHR0cDovL3Rlc3QvOTgyMBGGD2h0dHA6Ly90ZXN0Lzk4MzARhg9odHRw
--Oi8vdGVzdC85ODQwEYYPaHR0cDovL3Rlc3QvOTg1MBGGD2h0dHA6Ly90ZXN0Lzk4
--NjARhg9odHRwOi8vdGVzdC85ODcwEYYPaHR0cDovL3Rlc3QvOTg4MBGGD2h0dHA6
--Ly90ZXN0Lzk4OTARhg9odHRwOi8vdGVzdC85OTAwEYYPaHR0cDovL3Rlc3QvOTkx
--MBGGD2h0dHA6Ly90ZXN0Lzk5MjARhg9odHRwOi8vdGVzdC85OTMwEYYPaHR0cDov
--L3Rlc3QvOTk0MBGGD2h0dHA6Ly90ZXN0Lzk5NTARhg9odHRwOi8vdGVzdC85OTYw
--EYYPaHR0cDovL3Rlc3QvOTk3MBGGD2h0dHA6Ly90ZXN0Lzk5ODARhg9odHRwOi8v
--dGVzdC85OTkwEoYQaHR0cDovL3Rlc3QvMTAwMDAShhBodHRwOi8vdGVzdC8xMDAx
--MBKGEGh0dHA6Ly90ZXN0LzEwMDIwEoYQaHR0cDovL3Rlc3QvMTAwMzAShhBodHRw
--Oi8vdGVzdC8xMDA0MBKGEGh0dHA6Ly90ZXN0LzEwMDUwEoYQaHR0cDovL3Rlc3Qv
--MTAwNjAShhBodHRwOi8vdGVzdC8xMDA3MBKGEGh0dHA6Ly90ZXN0LzEwMDgwEoYQ
--aHR0cDovL3Rlc3QvMTAwOTAShhBodHRwOi8vdGVzdC8xMDEwMBKGEGh0dHA6Ly90
--ZXN0LzEwMTEwEoYQaHR0cDovL3Rlc3QvMTAxMjAShhBodHRwOi8vdGVzdC8xMDEz
--MBKGEGh0dHA6Ly90ZXN0LzEwMTQwEoYQaHR0cDovL3Rlc3QvMTAxNTAShhBodHRw
--Oi8vdGVzdC8xMDE2MBKGEGh0dHA6Ly90ZXN0LzEwMTcwEoYQaHR0cDovL3Rlc3Qv
--MTAxODAShhBodHRwOi8vdGVzdC8xMDE5MBKGEGh0dHA6Ly90ZXN0LzEwMjAwEoYQ
--aHR0cDovL3Rlc3QvMTAyMTAShhBodHRwOi8vdGVzdC8xMDIyMBKGEGh0dHA6Ly90
--ZXN0LzEwMjMwEoYQaHR0cDovL3Rlc3QvMTAyNKGClf4wCYIHeDAudGVzdDAJggd4
--MS50ZXN0MAmCB3gyLnRlc3QwCYIHeDMudGVzdDAJggd4NC50ZXN0MAmCB3g1LnRl
--c3QwCYIHeDYudGVzdDAJggd4Ny50ZXN0MAmCB3g4LnRlc3QwCYIHeDkudGVzdDAK
--ggh4MTAudGVzdDAKggh4MTEudGVzdDAKggh4MTIudGVzdDAKggh4MTMudGVzdDAK
--ggh4MTQudGVzdDAKggh4MTUudGVzdDAKggh4MTYudGVzdDAKggh4MTcudGVzdDAK
--ggh4MTgudGVzdDAKggh4MTkudGVzdDAKggh4MjAudGVzdDAKggh4MjEudGVzdDAK
--ggh4MjIudGVzdDAKggh4MjMudGVzdDAKggh4MjQudGVzdDAKggh4MjUudGVzdDAK
--ggh4MjYudGVzdDAKggh4MjcudGVzdDAKggh4MjgudGVzdDAKggh4MjkudGVzdDAK
--ggh4MzAudGVzdDAKggh4MzEudGVzdDAKggh4MzIudGVzdDAKggh4MzMudGVzdDAK
--ggh4MzQudGVzdDAKggh4MzUudGVzdDAKggh4MzYudGVzdDAKggh4MzcudGVzdDAK
--ggh4MzgudGVzdDAKggh4MzkudGVzdDAKggh4NDAudGVzdDAKggh4NDEudGVzdDAK
--ggh4NDIudGVzdDAKggh4NDMudGVzdDAKggh4NDQudGVzdDAKggh4NDUudGVzdDAK
--ggh4NDYudGVzdDAKggh4NDcudGVzdDAKggh4NDgudGVzdDAKggh4NDkudGVzdDAK
--ggh4NTAudGVzdDAKggh4NTEudGVzdDAKggh4NTIudGVzdDAKggh4NTMudGVzdDAK
--ggh4NTQudGVzdDAKggh4NTUudGVzdDAKggh4NTYudGVzdDAKggh4NTcudGVzdDAK
--ggh4NTgudGVzdDAKggh4NTkudGVzdDAKggh4NjAudGVzdDAKggh4NjEudGVzdDAK
--ggh4NjIudGVzdDAKggh4NjMudGVzdDAKggh4NjQudGVzdDAKggh4NjUudGVzdDAK
--ggh4NjYudGVzdDAKggh4NjcudGVzdDAKggh4NjgudGVzdDAKggh4NjkudGVzdDAK
--ggh4NzAudGVzdDAKggh4NzEudGVzdDAKggh4NzIudGVzdDAKggh4NzMudGVzdDAK
--ggh4NzQudGVzdDAKggh4NzUudGVzdDAKggh4NzYudGVzdDAKggh4NzcudGVzdDAK
--ggh4NzgudGVzdDAKggh4NzkudGVzdDAKggh4ODAudGVzdDAKggh4ODEudGVzdDAK
--ggh4ODIudGVzdDAKggh4ODMudGVzdDAKggh4ODQudGVzdDAKggh4ODUudGVzdDAK
--ggh4ODYudGVzdDAKggh4ODcudGVzdDAKggh4ODgudGVzdDAKggh4ODkudGVzdDAK
--ggh4OTAudGVzdDAKggh4OTEudGVzdDAKggh4OTIudGVzdDAKggh4OTMudGVzdDAK
--ggh4OTQudGVzdDAKggh4OTUudGVzdDAKggh4OTYudGVzdDAKggh4OTcudGVzdDAK
--ggh4OTgudGVzdDAKggh4OTkudGVzdDALggl4MTAwLnRlc3QwC4IJeDEwMS50ZXN0
--MAuCCXgxMDIudGVzdDALggl4MTAzLnRlc3QwC4IJeDEwNC50ZXN0MAuCCXgxMDUu
--dGVzdDALggl4MTA2LnRlc3QwC4IJeDEwNy50ZXN0MAuCCXgxMDgudGVzdDALggl4
--MTA5LnRlc3QwC4IJeDExMC50ZXN0MAuCCXgxMTEudGVzdDALggl4MTEyLnRlc3Qw
--C4IJeDExMy50ZXN0MAuCCXgxMTQudGVzdDALggl4MTE1LnRlc3QwC4IJeDExNi50
--ZXN0MAuCCXgxMTcudGVzdDALggl4MTE4LnRlc3QwC4IJeDExOS50ZXN0MAuCCXgx
--MjAudGVzdDALggl4MTIxLnRlc3QwC4IJeDEyMi50ZXN0MAuCCXgxMjMudGVzdDAL
--ggl4MTI0LnRlc3QwC4IJeDEyNS50ZXN0MAuCCXgxMjYudGVzdDALggl4MTI3LnRl
--c3QwC4IJeDEyOC50ZXN0MAuCCXgxMjkudGVzdDALggl4MTMwLnRlc3QwC4IJeDEz
--MS50ZXN0MAuCCXgxMzIudGVzdDALggl4MTMzLnRlc3QwC4IJeDEzNC50ZXN0MAuC
--CXgxMzUudGVzdDALggl4MTM2LnRlc3QwC4IJeDEzNy50ZXN0MAuCCXgxMzgudGVz
--dDALggl4MTM5LnRlc3QwC4IJeDE0MC50ZXN0MAuCCXgxNDEudGVzdDALggl4MTQy
--LnRlc3QwC4IJeDE0My50ZXN0MAuCCXgxNDQudGVzdDALggl4MTQ1LnRlc3QwC4IJ
--eDE0Ni50ZXN0MAuCCXgxNDcudGVzdDALggl4MTQ4LnRlc3QwC4IJeDE0OS50ZXN0
--MAuCCXgxNTAudGVzdDALggl4MTUxLnRlc3QwC4IJeDE1Mi50ZXN0MAuCCXgxNTMu
--dGVzdDALggl4MTU0LnRlc3QwC4IJeDE1NS50ZXN0MAuCCXgxNTYudGVzdDALggl4
--MTU3LnRlc3QwC4IJeDE1OC50ZXN0MAuCCXgxNTkudGVzdDALggl4MTYwLnRlc3Qw
--C4IJeDE2MS50ZXN0MAuCCXgxNjIudGVzdDALggl4MTYzLnRlc3QwC4IJeDE2NC50
--ZXN0MAuCCXgxNjUudGVzdDALggl4MTY2LnRlc3QwC4IJeDE2Ny50ZXN0MAuCCXgx
--NjgudGVzdDALggl4MTY5LnRlc3QwC4IJeDE3MC50ZXN0MAuCCXgxNzEudGVzdDAL
--ggl4MTcyLnRlc3QwC4IJeDE3My50ZXN0MAuCCXgxNzQudGVzdDALggl4MTc1LnRl
--c3QwC4IJeDE3Ni50ZXN0MAuCCXgxNzcudGVzdDALggl4MTc4LnRlc3QwC4IJeDE3
--OS50ZXN0MAuCCXgxODAudGVzdDALggl4MTgxLnRlc3QwC4IJeDE4Mi50ZXN0MAuC
--CXgxODMudGVzdDALggl4MTg0LnRlc3QwC4IJeDE4NS50ZXN0MAuCCXgxODYudGVz
--dDALggl4MTg3LnRlc3QwC4IJeDE4OC50ZXN0MAuCCXgxODkudGVzdDALggl4MTkw
--LnRlc3QwC4IJeDE5MS50ZXN0MAuCCXgxOTIudGVzdDALggl4MTkzLnRlc3QwC4IJ
--eDE5NC50ZXN0MAuCCXgxOTUudGVzdDALggl4MTk2LnRlc3QwC4IJeDE5Ny50ZXN0
--MAuCCXgxOTgudGVzdDALggl4MTk5LnRlc3QwC4IJeDIwMC50ZXN0MAuCCXgyMDEu
--dGVzdDALggl4MjAyLnRlc3QwC4IJeDIwMy50ZXN0MAuCCXgyMDQudGVzdDALggl4
--MjA1LnRlc3QwC4IJeDIwNi50ZXN0MAuCCXgyMDcudGVzdDALggl4MjA4LnRlc3Qw
--C4IJeDIwOS50ZXN0MAuCCXgyMTAudGVzdDALggl4MjExLnRlc3QwC4IJeDIxMi50
--ZXN0MAuCCXgyMTMudGVzdDALggl4MjE0LnRlc3QwC4IJeDIxNS50ZXN0MAuCCXgy
--MTYudGVzdDALggl4MjE3LnRlc3QwC4IJeDIxOC50ZXN0MAuCCXgyMTkudGVzdDAL
--ggl4MjIwLnRlc3QwC4IJeDIyMS50ZXN0MAuCCXgyMjIudGVzdDALggl4MjIzLnRl
--c3QwC4IJeDIyNC50ZXN0MAuCCXgyMjUudGVzdDALggl4MjI2LnRlc3QwC4IJeDIy
--Ny50ZXN0MAuCCXgyMjgudGVzdDALggl4MjI5LnRlc3QwC4IJeDIzMC50ZXN0MAuC
--CXgyMzEudGVzdDALggl4MjMyLnRlc3QwC4IJeDIzMy50ZXN0MAuCCXgyMzQudGVz
--dDALggl4MjM1LnRlc3QwC4IJeDIzNi50ZXN0MAuCCXgyMzcudGVzdDALggl4MjM4
--LnRlc3QwC4IJeDIzOS50ZXN0MAuCCXgyNDAudGVzdDALggl4MjQxLnRlc3QwC4IJ
--eDI0Mi50ZXN0MAuCCXgyNDMudGVzdDALggl4MjQ0LnRlc3QwC4IJeDI0NS50ZXN0
--MAuCCXgyNDYudGVzdDALggl4MjQ3LnRlc3QwC4IJeDI0OC50ZXN0MAuCCXgyNDku
--dGVzdDALggl4MjUwLnRlc3QwC4IJeDI1MS50ZXN0MAuCCXgyNTIudGVzdDALggl4
--MjUzLnRlc3QwC4IJeDI1NC50ZXN0MAuCCXgyNTUudGVzdDALggl4MjU2LnRlc3Qw
--C4IJeDI1Ny50ZXN0MAuCCXgyNTgudGVzdDALggl4MjU5LnRlc3QwC4IJeDI2MC50
--ZXN0MAuCCXgyNjEudGVzdDALggl4MjYyLnRlc3QwC4IJeDI2My50ZXN0MAuCCXgy
--NjQudGVzdDALggl4MjY1LnRlc3QwC4IJeDI2Ni50ZXN0MAuCCXgyNjcudGVzdDAL
--ggl4MjY4LnRlc3QwC4IJeDI2OS50ZXN0MAuCCXgyNzAudGVzdDALggl4MjcxLnRl
--c3QwC4IJeDI3Mi50ZXN0MAuCCXgyNzMudGVzdDALggl4Mjc0LnRlc3QwC4IJeDI3
--NS50ZXN0MAuCCXgyNzYudGVzdDALggl4Mjc3LnRlc3QwC4IJeDI3OC50ZXN0MAuC
--CXgyNzkudGVzdDALggl4MjgwLnRlc3QwC4IJeDI4MS50ZXN0MAuCCXgyODIudGVz
--dDALggl4MjgzLnRlc3QwC4IJeDI4NC50ZXN0MAuCCXgyODUudGVzdDALggl4Mjg2
--LnRlc3QwC4IJeDI4Ny50ZXN0MAuCCXgyODgudGVzdDALggl4Mjg5LnRlc3QwC4IJ
--eDI5MC50ZXN0MAuCCXgyOTEudGVzdDALggl4MjkyLnRlc3QwC4IJeDI5My50ZXN0
--MAuCCXgyOTQudGVzdDALggl4Mjk1LnRlc3QwC4IJeDI5Ni50ZXN0MAuCCXgyOTcu
--dGVzdDALggl4Mjk4LnRlc3QwC4IJeDI5OS50ZXN0MAuCCXgzMDAudGVzdDALggl4
--MzAxLnRlc3QwC4IJeDMwMi50ZXN0MAuCCXgzMDMudGVzdDALggl4MzA0LnRlc3Qw
--C4IJeDMwNS50ZXN0MAuCCXgzMDYudGVzdDALggl4MzA3LnRlc3QwC4IJeDMwOC50
--ZXN0MAuCCXgzMDkudGVzdDALggl4MzEwLnRlc3QwC4IJeDMxMS50ZXN0MAuCCXgz
--MTIudGVzdDALggl4MzEzLnRlc3QwC4IJeDMxNC50ZXN0MAuCCXgzMTUudGVzdDAL
--ggl4MzE2LnRlc3QwC4IJeDMxNy50ZXN0MAuCCXgzMTgudGVzdDALggl4MzE5LnRl
--c3QwC4IJeDMyMC50ZXN0MAuCCXgzMjEudGVzdDALggl4MzIyLnRlc3QwC4IJeDMy
--My50ZXN0MAuCCXgzMjQudGVzdDALggl4MzI1LnRlc3QwC4IJeDMyNi50ZXN0MAuC
--CXgzMjcudGVzdDALggl4MzI4LnRlc3QwC4IJeDMyOS50ZXN0MAuCCXgzMzAudGVz
--dDALggl4MzMxLnRlc3QwC4IJeDMzMi50ZXN0MAuCCXgzMzMudGVzdDALggl4MzM0
--LnRlc3QwC4IJeDMzNS50ZXN0MAuCCXgzMzYudGVzdDALggl4MzM3LnRlc3QwC4IJ
--eDMzOC50ZXN0MAuCCXgzMzkudGVzdDALggl4MzQwLnRlc3QwC4IJeDM0MS50ZXN0
--MAuCCXgzNDIudGVzdDALggl4MzQzLnRlc3QwC4IJeDM0NC50ZXN0MAuCCXgzNDUu
--dGVzdDALggl4MzQ2LnRlc3QwC4IJeDM0Ny50ZXN0MAuCCXgzNDgudGVzdDALggl4
--MzQ5LnRlc3QwC4IJeDM1MC50ZXN0MAuCCXgzNTEudGVzdDALggl4MzUyLnRlc3Qw
--C4IJeDM1My50ZXN0MAuCCXgzNTQudGVzdDALggl4MzU1LnRlc3QwC4IJeDM1Ni50
--ZXN0MAuCCXgzNTcudGVzdDALggl4MzU4LnRlc3QwC4IJeDM1OS50ZXN0MAuCCXgz
--NjAudGVzdDALggl4MzYxLnRlc3QwC4IJeDM2Mi50ZXN0MAuCCXgzNjMudGVzdDAL
--ggl4MzY0LnRlc3QwC4IJeDM2NS50ZXN0MAuCCXgzNjYudGVzdDALggl4MzY3LnRl
--c3QwC4IJeDM2OC50ZXN0MAuCCXgzNjkudGVzdDALggl4MzcwLnRlc3QwC4IJeDM3
--MS50ZXN0MAuCCXgzNzIudGVzdDALggl4MzczLnRlc3QwC4IJeDM3NC50ZXN0MAuC
--CXgzNzUudGVzdDALggl4Mzc2LnRlc3QwC4IJeDM3Ny50ZXN0MAuCCXgzNzgudGVz
--dDALggl4Mzc5LnRlc3QwC4IJeDM4MC50ZXN0MAuCCXgzODEudGVzdDALggl4Mzgy
--LnRlc3QwC4IJeDM4My50ZXN0MAuCCXgzODQudGVzdDALggl4Mzg1LnRlc3QwC4IJ
--eDM4Ni50ZXN0MAuCCXgzODcudGVzdDALggl4Mzg4LnRlc3QwC4IJeDM4OS50ZXN0
--MAuCCXgzOTAudGVzdDALggl4MzkxLnRlc3QwC4IJeDM5Mi50ZXN0MAuCCXgzOTMu
--dGVzdDALggl4Mzk0LnRlc3QwC4IJeDM5NS50ZXN0MAuCCXgzOTYudGVzdDALggl4
--Mzk3LnRlc3QwC4IJeDM5OC50ZXN0MAuCCXgzOTkudGVzdDALggl4NDAwLnRlc3Qw
--C4IJeDQwMS50ZXN0MAuCCXg0MDIudGVzdDALggl4NDAzLnRlc3QwC4IJeDQwNC50
--ZXN0MAuCCXg0MDUudGVzdDALggl4NDA2LnRlc3QwC4IJeDQwNy50ZXN0MAuCCXg0
--MDgudGVzdDALggl4NDA5LnRlc3QwC4IJeDQxMC50ZXN0MAuCCXg0MTEudGVzdDAL
--ggl4NDEyLnRlc3QwC4IJeDQxMy50ZXN0MAuCCXg0MTQudGVzdDALggl4NDE1LnRl
--c3QwC4IJeDQxNi50ZXN0MAuCCXg0MTcudGVzdDAKhwgLAAAA/////zAKhwgLAAAB
--/////zAKhwgLAAAC/////zAKhwgLAAAD/////zAKhwgLAAAE/////zAKhwgLAAAF
--/////zAKhwgLAAAG/////zAKhwgLAAAH/////zAKhwgLAAAI/////zAKhwgLAAAJ
--/////zAKhwgLAAAK/////zAKhwgLAAAL/////zAKhwgLAAAM/////zAKhwgLAAAN
--/////zAKhwgLAAAO/////zAKhwgLAAAP/////zAKhwgLAAAQ/////zAKhwgLAAAR
--/////zAKhwgLAAAS/////zAKhwgLAAAT/////zAKhwgLAAAU/////zAKhwgLAAAV
--/////zAKhwgLAAAW/////zAKhwgLAAAX/////zAKhwgLAAAY/////zAKhwgLAAAZ
--/////zAKhwgLAAAa/////zAKhwgLAAAb/////zAKhwgLAAAc/////zAKhwgLAAAd
--/////zAKhwgLAAAe/////zAKhwgLAAAf/////zAKhwgLAAAg/////zAKhwgLAAAh
--/////zAKhwgLAAAi/////zAKhwgLAAAj/////zAKhwgLAAAk/////zAKhwgLAAAl
--/////zAKhwgLAAAm/////zAKhwgLAAAn/////zAKhwgLAAAo/////zAKhwgLAAAp
--/////zAKhwgLAAAq/////zAKhwgLAAAr/////zAKhwgLAAAs/////zAKhwgLAAAt
--/////zAKhwgLAAAu/////zAKhwgLAAAv/////zAKhwgLAAAw/////zAKhwgLAAAx
--/////zAKhwgLAAAy/////zAKhwgLAAAz/////zAKhwgLAAA0/////zAKhwgLAAA1
--/////zAKhwgLAAA2/////zAKhwgLAAA3/////zAKhwgLAAA4/////zAKhwgLAAA5
--/////zAKhwgLAAA6/////zAKhwgLAAA7/////zAKhwgLAAA8/////zAKhwgLAAA9
--/////zAKhwgLAAA+/////zAKhwgLAAA//////zAKhwgLAABA/////zAKhwgLAABB
--/////zAKhwgLAABC/////zAKhwgLAABD/////zAKhwgLAABE/////zAKhwgLAABF
--/////zAKhwgLAABG/////zAKhwgLAABH/////zAKhwgLAABI/////zAKhwgLAABJ
--/////zAKhwgLAABK/////zAKhwgLAABL/////zAKhwgLAABM/////zAKhwgLAABN
--/////zAKhwgLAABO/////zAKhwgLAABP/////zAKhwgLAABQ/////zAKhwgLAABR
--/////zAKhwgLAABS/////zAKhwgLAABT/////zAKhwgLAABU/////zAKhwgLAABV
--/////zAKhwgLAABW/////zAKhwgLAABX/////zAKhwgLAABY/////zAKhwgLAABZ
--/////zAKhwgLAABa/////zAKhwgLAABb/////zAKhwgLAABc/////zAKhwgLAABd
--/////zAKhwgLAABe/////zAKhwgLAABf/////zAKhwgLAABg/////zAKhwgLAABh
--/////zAKhwgLAABi/////zAKhwgLAABj/////zAKhwgLAABk/////zAKhwgLAABl
--/////zAKhwgLAABm/////zAKhwgLAABn/////zAKhwgLAABo/////zAKhwgLAABp
--/////zAKhwgLAABq/////zAKhwgLAABr/////zAKhwgLAABs/////zAKhwgLAABt
--/////zAKhwgLAABu/////zAKhwgLAABv/////zAKhwgLAABw/////zAKhwgLAABx
--/////zAKhwgLAABy/////zAKhwgLAABz/////zAKhwgLAAB0/////zAKhwgLAAB1
--/////zAKhwgLAAB2/////zAKhwgLAAB3/////zAKhwgLAAB4/////zAKhwgLAAB5
--/////zAKhwgLAAB6/////zAKhwgLAAB7/////zAKhwgLAAB8/////zAKhwgLAAB9
--/////zAKhwgLAAB+/////zAKhwgLAAB//////zAKhwgLAACA/////zAKhwgLAACB
--/////zAKhwgLAACC/////zAKhwgLAACD/////zAKhwgLAACE/////zAKhwgLAACF
--/////zAKhwgLAACG/////zAKhwgLAACH/////zAKhwgLAACI/////zAKhwgLAACJ
--/////zAKhwgLAACK/////zAKhwgLAACL/////zAKhwgLAACM/////zAKhwgLAACN
--/////zAKhwgLAACO/////zAKhwgLAACP/////zAKhwgLAACQ/////zAKhwgLAACR
--/////zAKhwgLAACS/////zAKhwgLAACT/////zAKhwgLAACU/////zAKhwgLAACV
--/////zAKhwgLAACW/////zAKhwgLAACX/////zAKhwgLAACY/////zAKhwgLAACZ
--/////zAKhwgLAACa/////zAKhwgLAACb/////zAKhwgLAACc/////zAKhwgLAACd
--/////zAKhwgLAACe/////zAKhwgLAACf/////zAKhwgLAACg/////zAKhwgLAACh
--/////zAKhwgLAACi/////zAKhwgLAACj/////zAKhwgLAACk/////zAKhwgLAACl
--/////zAKhwgLAACm/////zAKhwgLAACn/////zAKhwgLAACo/////zAKhwgLAACp
--/////zAKhwgLAACq/////zAKhwgLAACr/////zAKhwgLAACs/////zAKhwgLAACt
--/////zAKhwgLAACu/////zAKhwgLAACv/////zAKhwgLAACw/////zAKhwgLAACx
--/////zAKhwgLAACy/////zAKhwgLAACz/////zAKhwgLAAC0/////zAKhwgLAAC1
--/////zAKhwgLAAC2/////zAKhwgLAAC3/////zAKhwgLAAC4/////zAKhwgLAAC5
--/////zAKhwgLAAC6/////zAKhwgLAAC7/////zAKhwgLAAC8/////zAKhwgLAAC9
--/////zAKhwgLAAC+/////zAKhwgLAAC//////zAKhwgLAADA/////zAKhwgLAADB
--/////zAKhwgLAADC/////zAKhwgLAADD/////zAKhwgLAADE/////zAKhwgLAADF
--/////zAKhwgLAADG/////zAKhwgLAADH/////zAKhwgLAADI/////zAKhwgLAADJ
--/////zAKhwgLAADK/////zAKhwgLAADL/////zAKhwgLAADM/////zAKhwgLAADN
--/////zAKhwgLAADO/////zAKhwgLAADP/////zAKhwgLAADQ/////zAKhwgLAADR
--/////zAKhwgLAADS/////zAKhwgLAADT/////zAKhwgLAADU/////zAKhwgLAADV
--/////zAKhwgLAADW/////zAKhwgLAADX/////zAKhwgLAADY/////zAKhwgLAADZ
--/////zAKhwgLAADa/////zAKhwgLAADb/////zAKhwgLAADc/////zAKhwgLAADd
--/////zAKhwgLAADe/////zAKhwgLAADf/////zAKhwgLAADg/////zAKhwgLAADh
--/////zAKhwgLAADi/////zAKhwgLAADj/////zAKhwgLAADk/////zAKhwgLAADl
--/////zAKhwgLAADm/////zAKhwgLAADn/////zAKhwgLAADo/////zAKhwgLAADp
--/////zAKhwgLAADq/////zAKhwgLAADr/////zAKhwgLAADs/////zAKhwgLAADt
--/////zAKhwgLAADu/////zAKhwgLAADv/////zAKhwgLAADw/////zAKhwgLAADx
--/////zAKhwgLAADy/////zAKhwgLAADz/////zAKhwgLAAD0/////zAKhwgLAAD1
--/////zAKhwgLAAD2/////zAKhwgLAAD3/////zAKhwgLAAD4/////zAKhwgLAAD5
--/////zAKhwgLAAD6/////zAKhwgLAAD7/////zAKhwgLAAD8/////zAKhwgLAAD9
--/////zAKhwgLAAD+/////zAKhwgLAAD//////zAKhwgLAAEA/////zAKhwgLAAEB
--/////zAKhwgLAAEC/////zAKhwgLAAED/////zAKhwgLAAEE/////zAKhwgLAAEF
--/////zAKhwgLAAEG/////zAKhwgLAAEH/////zAKhwgLAAEI/////zAKhwgLAAEJ
--/////zAKhwgLAAEK/////zAKhwgLAAEL/////zAKhwgLAAEM/////zAKhwgLAAEN
--/////zAKhwgLAAEO/////zAKhwgLAAEP/////zAKhwgLAAEQ/////zAKhwgLAAER
--/////zAKhwgLAAES/////zAKhwgLAAET/////zAKhwgLAAEU/////zAKhwgLAAEV
--/////zAKhwgLAAEW/////zAKhwgLAAEX/////zAKhwgLAAEY/////zAKhwgLAAEZ
--/////zAKhwgLAAEa/////zAKhwgLAAEb/////zAKhwgLAAEc/////zAKhwgLAAEd
--/////zAKhwgLAAEe/////zAKhwgLAAEf/////zAKhwgLAAEg/////zAKhwgLAAEh
--/////zAKhwgLAAEi/////zAKhwgLAAEj/////zAKhwgLAAEk/////zAKhwgLAAEl
--/////zAKhwgLAAEm/////zAKhwgLAAEn/////zAKhwgLAAEo/////zAKhwgLAAEp
--/////zAKhwgLAAEq/////zAKhwgLAAEr/////zAKhwgLAAEs/////zAKhwgLAAEt
--/////zAKhwgLAAEu/////zAKhwgLAAEv/////zAKhwgLAAEw/////zAKhwgLAAEx
--/////zAKhwgLAAEy/////zAKhwgLAAEz/////zAKhwgLAAE0/////zAKhwgLAAE1
--/////zAKhwgLAAE2/////zAKhwgLAAE3/////zAKhwgLAAE4/////zAKhwgLAAE5
--/////zAKhwgLAAE6/////zAKhwgLAAE7/////zAKhwgLAAE8/////zAKhwgLAAE9
--/////zAKhwgLAAE+/////zAKhwgLAAE//////zAKhwgLAAFA/////zAKhwgLAAFB
--/////zAKhwgLAAFC/////zAKhwgLAAFD/////zAKhwgLAAFE/////zAKhwgLAAFF
--/////zAKhwgLAAFG/////zAKhwgLAAFH/////zAKhwgLAAFI/////zAKhwgLAAFJ
--/////zAKhwgLAAFK/////zAKhwgLAAFL/////zAKhwgLAAFM/////zAKhwgLAAFN
--/////zAKhwgLAAFO/////zAKhwgLAAFP/////zAKhwgLAAFQ/////zAKhwgLAAFR
--/////zAKhwgLAAFS/////zAKhwgLAAFT/////zAKhwgLAAFU/////zAKhwgLAAFV
--/////zAKhwgLAAFW/////zAKhwgLAAFX/////zAKhwgLAAFY/////zAKhwgLAAFZ
--/////zAKhwgLAAFa/////zAKhwgLAAFb/////zAKhwgLAAFc/////zAKhwgLAAFd
--/////zAKhwgLAAFe/////zAKhwgLAAFf/////zAKhwgLAAFg/////zAKhwgLAAFh
--/////zAKhwgLAAFi/////zAKhwgLAAFj/////zAKhwgLAAFk/////zAKhwgLAAFl
--/////zAKhwgLAAFm/////zAKhwgLAAFn/////zAKhwgLAAFo/////zAKhwgLAAFp
--/////zAKhwgLAAFq/////zAKhwgLAAFr/////zAKhwgLAAFs/////zAKhwgLAAFt
--/////zAKhwgLAAFu/////zAKhwgLAAFv/////zAKhwgLAAFw/////zAKhwgLAAFx
--/////zAKhwgLAAFy/////zAKhwgLAAFz/////zAKhwgLAAF0/////zAKhwgLAAF1
--/////zAKhwgLAAF2/////zAKhwgLAAF3/////zAKhwgLAAF4/////zAKhwgLAAF5
--/////zAKhwgLAAF6/////zAKhwgLAAF7/////zAKhwgLAAF8/////zAKhwgLAAF9
--/////zAKhwgLAAF+/////zAKhwgLAAF//////zAKhwgLAAGA/////zAKhwgLAAGB
--/////zAKhwgLAAGC/////zAKhwgLAAGD/////zAKhwgLAAGE/////zAKhwgLAAGF
--/////zAKhwgLAAGG/////zAKhwgLAAGH/////zAKhwgLAAGI/////zAKhwgLAAGJ
--/////zAKhwgLAAGK/////zAKhwgLAAGL/////zAKhwgLAAGM/////zAKhwgLAAGN
--/////zAKhwgLAAGO/////zAKhwgLAAGP/////zAKhwgLAAGQ/////zAKhwgLAAGR
--/////zAKhwgLAAGS/////zAKhwgLAAGT/////zAKhwgLAAGU/////zAKhwgLAAGV
--/////zAKhwgLAAGW/////zAKhwgLAAGX/////zAKhwgLAAGY/////zAKhwgLAAGZ
--/////zAKhwgLAAGa/////zAKhwgLAAGb/////zAKhwgLAAGc/////zAKhwgLAAGd
--/////zAKhwgLAAGe/////zAKhwgLAAGf/////zAKhwgLAAGg/////zAKhwgLAAGh
--/////zARpA8wDTELMAkGA1UEAwwCeDAwEaQPMA0xCzAJBgNVBAMMAngxMBGkDzAN
--MQswCQYDVQQDDAJ4MjARpA8wDTELMAkGA1UEAwwCeDMwEaQPMA0xCzAJBgNVBAMM
--Ang0MBGkDzANMQswCQYDVQQDDAJ4NTARpA8wDTELMAkGA1UEAwwCeDYwEaQPMA0x
--CzAJBgNVBAMMAng3MBGkDzANMQswCQYDVQQDDAJ4ODARpA8wDTELMAkGA1UEAwwC
--eDkwEqQQMA4xDDAKBgNVBAMMA3gxMDASpBAwDjEMMAoGA1UEAwwDeDExMBKkEDAO
--MQwwCgYDVQQDDAN4MTIwEqQQMA4xDDAKBgNVBAMMA3gxMzASpBAwDjEMMAoGA1UE
--AwwDeDE0MBKkEDAOMQwwCgYDVQQDDAN4MTUwEqQQMA4xDDAKBgNVBAMMA3gxNjAS
--pBAwDjEMMAoGA1UEAwwDeDE3MBKkEDAOMQwwCgYDVQQDDAN4MTgwEqQQMA4xDDAK
--BgNVBAMMA3gxOTASpBAwDjEMMAoGA1UEAwwDeDIwMBKkEDAOMQwwCgYDVQQDDAN4
--MjEwEqQQMA4xDDAKBgNVBAMMA3gyMjASpBAwDjEMMAoGA1UEAwwDeDIzMBKkEDAO
--MQwwCgYDVQQDDAN4MjQwEqQQMA4xDDAKBgNVBAMMA3gyNTASpBAwDjEMMAoGA1UE
--AwwDeDI2MBKkEDAOMQwwCgYDVQQDDAN4MjcwEqQQMA4xDDAKBgNVBAMMA3gyODAS
--pBAwDjEMMAoGA1UEAwwDeDI5MBKkEDAOMQwwCgYDVQQDDAN4MzAwEqQQMA4xDDAK
--BgNVBAMMA3gzMTASpBAwDjEMMAoGA1UEAwwDeDMyMBKkEDAOMQwwCgYDVQQDDAN4
--MzMwEqQQMA4xDDAKBgNVBAMMA3gzNDASpBAwDjEMMAoGA1UEAwwDeDM1MBKkEDAO
--MQwwCgYDVQQDDAN4MzYwEqQQMA4xDDAKBgNVBAMMA3gzNzASpBAwDjEMMAoGA1UE
--AwwDeDM4MBKkEDAOMQwwCgYDVQQDDAN4MzkwEqQQMA4xDDAKBgNVBAMMA3g0MDAS
--pBAwDjEMMAoGA1UEAwwDeDQxMBKkEDAOMQwwCgYDVQQDDAN4NDIwEqQQMA4xDDAK
--BgNVBAMMA3g0MzASpBAwDjEMMAoGA1UEAwwDeDQ0MBKkEDAOMQwwCgYDVQQDDAN4
--NDUwEqQQMA4xDDAKBgNVBAMMA3g0NjASpBAwDjEMMAoGA1UEAwwDeDQ3MBKkEDAO
--MQwwCgYDVQQDDAN4NDgwEqQQMA4xDDAKBgNVBAMMA3g0OTASpBAwDjEMMAoGA1UE
--AwwDeDUwMBKkEDAOMQwwCgYDVQQDDAN4NTEwEqQQMA4xDDAKBgNVBAMMA3g1MjAS
--pBAwDjEMMAoGA1UEAwwDeDUzMBKkEDAOMQwwCgYDVQQDDAN4NTQwEqQQMA4xDDAK
--BgNVBAMMA3g1NTASpBAwDjEMMAoGA1UEAwwDeDU2MBKkEDAOMQwwCgYDVQQDDAN4
--NTcwEqQQMA4xDDAKBgNVBAMMA3g1ODASpBAwDjEMMAoGA1UEAwwDeDU5MBKkEDAO
--MQwwCgYDVQQDDAN4NjAwEqQQMA4xDDAKBgNVBAMMA3g2MTASpBAwDjEMMAoGA1UE
--AwwDeDYyMBKkEDAOMQwwCgYDVQQDDAN4NjMwEqQQMA4xDDAKBgNVBAMMA3g2NDAS
--pBAwDjEMMAoGA1UEAwwDeDY1MBKkEDAOMQwwCgYDVQQDDAN4NjYwEqQQMA4xDDAK
--BgNVBAMMA3g2NzASpBAwDjEMMAoGA1UEAwwDeDY4MBKkEDAOMQwwCgYDVQQDDAN4
--NjkwEqQQMA4xDDAKBgNVBAMMA3g3MDASpBAwDjEMMAoGA1UEAwwDeDcxMBKkEDAO
--MQwwCgYDVQQDDAN4NzIwEqQQMA4xDDAKBgNVBAMMA3g3MzASpBAwDjEMMAoGA1UE
--AwwDeDc0MBKkEDAOMQwwCgYDVQQDDAN4NzUwEqQQMA4xDDAKBgNVBAMMA3g3NjAS
--pBAwDjEMMAoGA1UEAwwDeDc3MBKkEDAOMQwwCgYDVQQDDAN4NzgwEqQQMA4xDDAK
--BgNVBAMMA3g3OTASpBAwDjEMMAoGA1UEAwwDeDgwMBKkEDAOMQwwCgYDVQQDDAN4
--ODEwEqQQMA4xDDAKBgNVBAMMA3g4MjASpBAwDjEMMAoGA1UEAwwDeDgzMBKkEDAO
--MQwwCgYDVQQDDAN4ODQwEqQQMA4xDDAKBgNVBAMMA3g4NTASpBAwDjEMMAoGA1UE
--AwwDeDg2MBKkEDAOMQwwCgYDVQQDDAN4ODcwEqQQMA4xDDAKBgNVBAMMA3g4ODAS
--pBAwDjEMMAoGA1UEAwwDeDg5MBKkEDAOMQwwCgYDVQQDDAN4OTAwEqQQMA4xDDAK
--BgNVBAMMA3g5MTASpBAwDjEMMAoGA1UEAwwDeDkyMBKkEDAOMQwwCgYDVQQDDAN4
--OTMwEqQQMA4xDDAKBgNVBAMMA3g5NDASpBAwDjEMMAoGA1UEAwwDeDk1MBKkEDAO
--MQwwCgYDVQQDDAN4OTYwEqQQMA4xDDAKBgNVBAMMA3g5NzASpBAwDjEMMAoGA1UE
--AwwDeDk4MBKkEDAOMQwwCgYDVQQDDAN4OTkwE6QRMA8xDTALBgNVBAMMBHgxMDAw
--E6QRMA8xDTALBgNVBAMMBHgxMDEwE6QRMA8xDTALBgNVBAMMBHgxMDIwE6QRMA8x
--DTALBgNVBAMMBHgxMDMwE6QRMA8xDTALBgNVBAMMBHgxMDQwE6QRMA8xDTALBgNV
--BAMMBHgxMDUwE6QRMA8xDTALBgNVBAMMBHgxMDYwE6QRMA8xDTALBgNVBAMMBHgx
--MDcwE6QRMA8xDTALBgNVBAMMBHgxMDgwE6QRMA8xDTALBgNVBAMMBHgxMDkwE6QR
--MA8xDTALBgNVBAMMBHgxMTAwE6QRMA8xDTALBgNVBAMMBHgxMTEwE6QRMA8xDTAL
--BgNVBAMMBHgxMTIwE6QRMA8xDTALBgNVBAMMBHgxMTMwE6QRMA8xDTALBgNVBAMM
--BHgxMTQwE6QRMA8xDTALBgNVBAMMBHgxMTUwE6QRMA8xDTALBgNVBAMMBHgxMTYw
--E6QRMA8xDTALBgNVBAMMBHgxMTcwE6QRMA8xDTALBgNVBAMMBHgxMTgwE6QRMA8x
--DTALBgNVBAMMBHgxMTkwE6QRMA8xDTALBgNVBAMMBHgxMjAwE6QRMA8xDTALBgNV
--BAMMBHgxMjEwE6QRMA8xDTALBgNVBAMMBHgxMjIwE6QRMA8xDTALBgNVBAMMBHgx
--MjMwE6QRMA8xDTALBgNVBAMMBHgxMjQwE6QRMA8xDTALBgNVBAMMBHgxMjUwE6QR
--MA8xDTALBgNVBAMMBHgxMjYwE6QRMA8xDTALBgNVBAMMBHgxMjcwE6QRMA8xDTAL
--BgNVBAMMBHgxMjgwE6QRMA8xDTALBgNVBAMMBHgxMjkwE6QRMA8xDTALBgNVBAMM
--BHgxMzAwE6QRMA8xDTALBgNVBAMMBHgxMzEwE6QRMA8xDTALBgNVBAMMBHgxMzIw
--E6QRMA8xDTALBgNVBAMMBHgxMzMwE6QRMA8xDTALBgNVBAMMBHgxMzQwE6QRMA8x
--DTALBgNVBAMMBHgxMzUwE6QRMA8xDTALBgNVBAMMBHgxMzYwE6QRMA8xDTALBgNV
--BAMMBHgxMzcwE6QRMA8xDTALBgNVBAMMBHgxMzgwE6QRMA8xDTALBgNVBAMMBHgx
--MzkwE6QRMA8xDTALBgNVBAMMBHgxNDAwE6QRMA8xDTALBgNVBAMMBHgxNDEwE6QR
--MA8xDTALBgNVBAMMBHgxNDIwE6QRMA8xDTALBgNVBAMMBHgxNDMwE6QRMA8xDTAL
--BgNVBAMMBHgxNDQwE6QRMA8xDTALBgNVBAMMBHgxNDUwE6QRMA8xDTALBgNVBAMM
--BHgxNDYwE6QRMA8xDTALBgNVBAMMBHgxNDcwE6QRMA8xDTALBgNVBAMMBHgxNDgw
--E6QRMA8xDTALBgNVBAMMBHgxNDkwE6QRMA8xDTALBgNVBAMMBHgxNTAwE6QRMA8x
--DTALBgNVBAMMBHgxNTEwE6QRMA8xDTALBgNVBAMMBHgxNTIwE6QRMA8xDTALBgNV
--BAMMBHgxNTMwE6QRMA8xDTALBgNVBAMMBHgxNTQwE6QRMA8xDTALBgNVBAMMBHgx
--NTUwE6QRMA8xDTALBgNVBAMMBHgxNTYwE6QRMA8xDTALBgNVBAMMBHgxNTcwE6QR
--MA8xDTALBgNVBAMMBHgxNTgwE6QRMA8xDTALBgNVBAMMBHgxNTkwE6QRMA8xDTAL
--BgNVBAMMBHgxNjAwE6QRMA8xDTALBgNVBAMMBHgxNjEwE6QRMA8xDTALBgNVBAMM
--BHgxNjIwE6QRMA8xDTALBgNVBAMMBHgxNjMwE6QRMA8xDTALBgNVBAMMBHgxNjQw
--E6QRMA8xDTALBgNVBAMMBHgxNjUwE6QRMA8xDTALBgNVBAMMBHgxNjYwE6QRMA8x
--DTALBgNVBAMMBHgxNjcwE6QRMA8xDTALBgNVBAMMBHgxNjgwE6QRMA8xDTALBgNV
--BAMMBHgxNjkwE6QRMA8xDTALBgNVBAMMBHgxNzAwE6QRMA8xDTALBgNVBAMMBHgx
--NzEwE6QRMA8xDTALBgNVBAMMBHgxNzIwE6QRMA8xDTALBgNVBAMMBHgxNzMwE6QR
--MA8xDTALBgNVBAMMBHgxNzQwE6QRMA8xDTALBgNVBAMMBHgxNzUwE6QRMA8xDTAL
--BgNVBAMMBHgxNzYwE6QRMA8xDTALBgNVBAMMBHgxNzcwE6QRMA8xDTALBgNVBAMM
--BHgxNzgwE6QRMA8xDTALBgNVBAMMBHgxNzkwE6QRMA8xDTALBgNVBAMMBHgxODAw
--E6QRMA8xDTALBgNVBAMMBHgxODEwE6QRMA8xDTALBgNVBAMMBHgxODIwE6QRMA8x
--DTALBgNVBAMMBHgxODMwE6QRMA8xDTALBgNVBAMMBHgxODQwE6QRMA8xDTALBgNV
--BAMMBHgxODUwE6QRMA8xDTALBgNVBAMMBHgxODYwE6QRMA8xDTALBgNVBAMMBHgx
--ODcwE6QRMA8xDTALBgNVBAMMBHgxODgwE6QRMA8xDTALBgNVBAMMBHgxODkwE6QR
--MA8xDTALBgNVBAMMBHgxOTAwE6QRMA8xDTALBgNVBAMMBHgxOTEwE6QRMA8xDTAL
--BgNVBAMMBHgxOTIwE6QRMA8xDTALBgNVBAMMBHgxOTMwE6QRMA8xDTALBgNVBAMM
--BHgxOTQwE6QRMA8xDTALBgNVBAMMBHgxOTUwE6QRMA8xDTALBgNVBAMMBHgxOTYw
--E6QRMA8xDTALBgNVBAMMBHgxOTcwE6QRMA8xDTALBgNVBAMMBHgxOTgwE6QRMA8x
--DTALBgNVBAMMBHgxOTkwE6QRMA8xDTALBgNVBAMMBHgyMDAwE6QRMA8xDTALBgNV
--BAMMBHgyMDEwE6QRMA8xDTALBgNVBAMMBHgyMDIwE6QRMA8xDTALBgNVBAMMBHgy
--MDMwE6QRMA8xDTALBgNVBAMMBHgyMDQwE6QRMA8xDTALBgNVBAMMBHgyMDUwE6QR
--MA8xDTALBgNVBAMMBHgyMDYwE6QRMA8xDTALBgNVBAMMBHgyMDcwE6QRMA8xDTAL
--BgNVBAMMBHgyMDgwE6QRMA8xDTALBgNVBAMMBHgyMDkwE6QRMA8xDTALBgNVBAMM
--BHgyMTAwE6QRMA8xDTALBgNVBAMMBHgyMTEwE6QRMA8xDTALBgNVBAMMBHgyMTIw
--E6QRMA8xDTALBgNVBAMMBHgyMTMwE6QRMA8xDTALBgNVBAMMBHgyMTQwE6QRMA8x
--DTALBgNVBAMMBHgyMTUwE6QRMA8xDTALBgNVBAMMBHgyMTYwE6QRMA8xDTALBgNV
--BAMMBHgyMTcwE6QRMA8xDTALBgNVBAMMBHgyMTgwE6QRMA8xDTALBgNVBAMMBHgy
--MTkwE6QRMA8xDTALBgNVBAMMBHgyMjAwE6QRMA8xDTALBgNVBAMMBHgyMjEwE6QR
--MA8xDTALBgNVBAMMBHgyMjIwE6QRMA8xDTALBgNVBAMMBHgyMjMwE6QRMA8xDTAL
--BgNVBAMMBHgyMjQwE6QRMA8xDTALBgNVBAMMBHgyMjUwE6QRMA8xDTALBgNVBAMM
--BHgyMjYwE6QRMA8xDTALBgNVBAMMBHgyMjcwE6QRMA8xDTALBgNVBAMMBHgyMjgw
--E6QRMA8xDTALBgNVBAMMBHgyMjkwE6QRMA8xDTALBgNVBAMMBHgyMzAwE6QRMA8x
--DTALBgNVBAMMBHgyMzEwE6QRMA8xDTALBgNVBAMMBHgyMzIwE6QRMA8xDTALBgNV
--BAMMBHgyMzMwE6QRMA8xDTALBgNVBAMMBHgyMzQwE6QRMA8xDTALBgNVBAMMBHgy
--MzUwE6QRMA8xDTALBgNVBAMMBHgyMzYwE6QRMA8xDTALBgNVBAMMBHgyMzcwE6QR
--MA8xDTALBgNVBAMMBHgyMzgwE6QRMA8xDTALBgNVBAMMBHgyMzkwE6QRMA8xDTAL
--BgNVBAMMBHgyNDAwE6QRMA8xDTALBgNVBAMMBHgyNDEwE6QRMA8xDTALBgNVBAMM
--BHgyNDIwE6QRMA8xDTALBgNVBAMMBHgyNDMwE6QRMA8xDTALBgNVBAMMBHgyNDQw
--E6QRMA8xDTALBgNVBAMMBHgyNDUwE6QRMA8xDTALBgNVBAMMBHgyNDYwE6QRMA8x
--DTALBgNVBAMMBHgyNDcwE6QRMA8xDTALBgNVBAMMBHgyNDgwE6QRMA8xDTALBgNV
--BAMMBHgyNDkwE6QRMA8xDTALBgNVBAMMBHgyNTAwE6QRMA8xDTALBgNVBAMMBHgy
--NTEwE6QRMA8xDTALBgNVBAMMBHgyNTIwE6QRMA8xDTALBgNVBAMMBHgyNTMwE6QR
--MA8xDTALBgNVBAMMBHgyNTQwE6QRMA8xDTALBgNVBAMMBHgyNTUwE6QRMA8xDTAL
--BgNVBAMMBHgyNTYwE6QRMA8xDTALBgNVBAMMBHgyNTcwE6QRMA8xDTALBgNVBAMM
--BHgyNTgwE6QRMA8xDTALBgNVBAMMBHgyNTkwE6QRMA8xDTALBgNVBAMMBHgyNjAw
--E6QRMA8xDTALBgNVBAMMBHgyNjEwE6QRMA8xDTALBgNVBAMMBHgyNjIwE6QRMA8x
--DTALBgNVBAMMBHgyNjMwE6QRMA8xDTALBgNVBAMMBHgyNjQwE6QRMA8xDTALBgNV
--BAMMBHgyNjUwE6QRMA8xDTALBgNVBAMMBHgyNjYwE6QRMA8xDTALBgNVBAMMBHgy
--NjcwE6QRMA8xDTALBgNVBAMMBHgyNjgwE6QRMA8xDTALBgNVBAMMBHgyNjkwE6QR
--MA8xDTALBgNVBAMMBHgyNzAwE6QRMA8xDTALBgNVBAMMBHgyNzEwE6QRMA8xDTAL
--BgNVBAMMBHgyNzIwE6QRMA8xDTALBgNVBAMMBHgyNzMwE6QRMA8xDTALBgNVBAMM
--BHgyNzQwE6QRMA8xDTALBgNVBAMMBHgyNzUwE6QRMA8xDTALBgNVBAMMBHgyNzYw
--E6QRMA8xDTALBgNVBAMMBHgyNzcwE6QRMA8xDTALBgNVBAMMBHgyNzgwE6QRMA8x
--DTALBgNVBAMMBHgyNzkwE6QRMA8xDTALBgNVBAMMBHgyODAwE6QRMA8xDTALBgNV
--BAMMBHgyODEwE6QRMA8xDTALBgNVBAMMBHgyODIwE6QRMA8xDTALBgNVBAMMBHgy
--ODMwE6QRMA8xDTALBgNVBAMMBHgyODQwE6QRMA8xDTALBgNVBAMMBHgyODUwE6QR
--MA8xDTALBgNVBAMMBHgyODYwE6QRMA8xDTALBgNVBAMMBHgyODcwE6QRMA8xDTAL
--BgNVBAMMBHgyODgwE6QRMA8xDTALBgNVBAMMBHgyODkwE6QRMA8xDTALBgNVBAMM
--BHgyOTAwE6QRMA8xDTALBgNVBAMMBHgyOTEwE6QRMA8xDTALBgNVBAMMBHgyOTIw
--E6QRMA8xDTALBgNVBAMMBHgyOTMwE6QRMA8xDTALBgNVBAMMBHgyOTQwE6QRMA8x
--DTALBgNVBAMMBHgyOTUwE6QRMA8xDTALBgNVBAMMBHgyOTYwE6QRMA8xDTALBgNV
--BAMMBHgyOTcwE6QRMA8xDTALBgNVBAMMBHgyOTgwE6QRMA8xDTALBgNVBAMMBHgy
--OTkwE6QRMA8xDTALBgNVBAMMBHgzMDAwE6QRMA8xDTALBgNVBAMMBHgzMDEwE6QR
--MA8xDTALBgNVBAMMBHgzMDIwE6QRMA8xDTALBgNVBAMMBHgzMDMwE6QRMA8xDTAL
--BgNVBAMMBHgzMDQwE6QRMA8xDTALBgNVBAMMBHgzMDUwE6QRMA8xDTALBgNVBAMM
--BHgzMDYwE6QRMA8xDTALBgNVBAMMBHgzMDcwE6QRMA8xDTALBgNVBAMMBHgzMDgw
--E6QRMA8xDTALBgNVBAMMBHgzMDkwE6QRMA8xDTALBgNVBAMMBHgzMTAwE6QRMA8x
--DTALBgNVBAMMBHgzMTEwE6QRMA8xDTALBgNVBAMMBHgzMTIwE6QRMA8xDTALBgNV
--BAMMBHgzMTMwE6QRMA8xDTALBgNVBAMMBHgzMTQwE6QRMA8xDTALBgNVBAMMBHgz
--MTUwE6QRMA8xDTALBgNVBAMMBHgzMTYwE6QRMA8xDTALBgNVBAMMBHgzMTcwE6QR
--MA8xDTALBgNVBAMMBHgzMTgwE6QRMA8xDTALBgNVBAMMBHgzMTkwE6QRMA8xDTAL
--BgNVBAMMBHgzMjAwE6QRMA8xDTALBgNVBAMMBHgzMjEwE6QRMA8xDTALBgNVBAMM
--BHgzMjIwE6QRMA8xDTALBgNVBAMMBHgzMjMwE6QRMA8xDTALBgNVBAMMBHgzMjQw
--E6QRMA8xDTALBgNVBAMMBHgzMjUwE6QRMA8xDTALBgNVBAMMBHgzMjYwE6QRMA8x
--DTALBgNVBAMMBHgzMjcwE6QRMA8xDTALBgNVBAMMBHgzMjgwE6QRMA8xDTALBgNV
--BAMMBHgzMjkwE6QRMA8xDTALBgNVBAMMBHgzMzAwE6QRMA8xDTALBgNVBAMMBHgz
--MzEwE6QRMA8xDTALBgNVBAMMBHgzMzIwE6QRMA8xDTALBgNVBAMMBHgzMzMwE6QR
--MA8xDTALBgNVBAMMBHgzMzQwE6QRMA8xDTALBgNVBAMMBHgzMzUwE6QRMA8xDTAL
--BgNVBAMMBHgzMzYwE6QRMA8xDTALBgNVBAMMBHgzMzcwE6QRMA8xDTALBgNVBAMM
--BHgzMzgwE6QRMA8xDTALBgNVBAMMBHgzMzkwE6QRMA8xDTALBgNVBAMMBHgzNDAw
--E6QRMA8xDTALBgNVBAMMBHgzNDEwE6QRMA8xDTALBgNVBAMMBHgzNDIwE6QRMA8x
--DTALBgNVBAMMBHgzNDMwE6QRMA8xDTALBgNVBAMMBHgzNDQwE6QRMA8xDTALBgNV
--BAMMBHgzNDUwE6QRMA8xDTALBgNVBAMMBHgzNDYwE6QRMA8xDTALBgNVBAMMBHgz
--NDcwE6QRMA8xDTALBgNVBAMMBHgzNDgwE6QRMA8xDTALBgNVBAMMBHgzNDkwE6QR
--MA8xDTALBgNVBAMMBHgzNTAwE6QRMA8xDTALBgNVBAMMBHgzNTEwE6QRMA8xDTAL
--BgNVBAMMBHgzNTIwE6QRMA8xDTALBgNVBAMMBHgzNTMwE6QRMA8xDTALBgNVBAMM
--BHgzNTQwE6QRMA8xDTALBgNVBAMMBHgzNTUwE6QRMA8xDTALBgNVBAMMBHgzNTYw
--E6QRMA8xDTALBgNVBAMMBHgzNTcwE6QRMA8xDTALBgNVBAMMBHgzNTgwE6QRMA8x
--DTALBgNVBAMMBHgzNTkwE6QRMA8xDTALBgNVBAMMBHgzNjAwE6QRMA8xDTALBgNV
--BAMMBHgzNjEwE6QRMA8xDTALBgNVBAMMBHgzNjIwE6QRMA8xDTALBgNVBAMMBHgz
--NjMwE6QRMA8xDTALBgNVBAMMBHgzNjQwE6QRMA8xDTALBgNVBAMMBHgzNjUwE6QR
--MA8xDTALBgNVBAMMBHgzNjYwE6QRMA8xDTALBgNVBAMMBHgzNjcwE6QRMA8xDTAL
--BgNVBAMMBHgzNjgwE6QRMA8xDTALBgNVBAMMBHgzNjkwE6QRMA8xDTALBgNVBAMM
--BHgzNzAwE6QRMA8xDTALBgNVBAMMBHgzNzEwE6QRMA8xDTALBgNVBAMMBHgzNzIw
--E6QRMA8xDTALBgNVBAMMBHgzNzMwE6QRMA8xDTALBgNVBAMMBHgzNzQwE6QRMA8x
--DTALBgNVBAMMBHgzNzUwE6QRMA8xDTALBgNVBAMMBHgzNzYwE6QRMA8xDTALBgNV
--BAMMBHgzNzcwE6QRMA8xDTALBgNVBAMMBHgzNzgwE6QRMA8xDTALBgNVBAMMBHgz
--NzkwE6QRMA8xDTALBgNVBAMMBHgzODAwE6QRMA8xDTALBgNVBAMMBHgzODEwE6QR
--MA8xDTALBgNVBAMMBHgzODIwE6QRMA8xDTALBgNVBAMMBHgzODMwE6QRMA8xDTAL
--BgNVBAMMBHgzODQwE6QRMA8xDTALBgNVBAMMBHgzODUwE6QRMA8xDTALBgNVBAMM
--BHgzODYwE6QRMA8xDTALBgNVBAMMBHgzODcwE6QRMA8xDTALBgNVBAMMBHgzODgw
--E6QRMA8xDTALBgNVBAMMBHgzODkwE6QRMA8xDTALBgNVBAMMBHgzOTAwE6QRMA8x
--DTALBgNVBAMMBHgzOTEwE6QRMA8xDTALBgNVBAMMBHgzOTIwE6QRMA8xDTALBgNV
--BAMMBHgzOTMwE6QRMA8xDTALBgNVBAMMBHgzOTQwE6QRMA8xDTALBgNVBAMMBHgz
--OTUwE6QRMA8xDTALBgNVBAMMBHgzOTYwE6QRMA8xDTALBgNVBAMMBHgzOTcwE6QR
--MA8xDTALBgNVBAMMBHgzOTgwE6QRMA8xDTALBgNVBAMMBHgzOTkwE6QRMA8xDTAL
--BgNVBAMMBHg0MDAwE6QRMA8xDTALBgNVBAMMBHg0MDEwE6QRMA8xDTALBgNVBAMM
--BHg0MDIwE6QRMA8xDTALBgNVBAMMBHg0MDMwE6QRMA8xDTALBgNVBAMMBHg0MDQw
--E6QRMA8xDTALBgNVBAMMBHg0MDUwE6QRMA8xDTALBgNVBAMMBHg0MDYwE6QRMA8x
--DTALBgNVBAMMBHg0MDcwE6QRMA8xDTALBgNVBAMMBHg0MDgwE6QRMA8xDTALBgNV
--BAMMBHg0MDkwE6QRMA8xDTALBgNVBAMMBHg0MTAwE6QRMA8xDTALBgNVBAMMBHg0
--MTEwE6QRMA8xDTALBgNVBAMMBHg0MTIwE6QRMA8xDTALBgNVBAMMBHg0MTMwE6QR
--MA8xDTALBgNVBAMMBHg0MTQwE6QRMA8xDTALBgNVBAMMBHg0MTUwE6QRMA8xDTAL
--BgNVBAMMBHg0MTYwE6QRMA8xDTALBgNVBAMMBHg0MTcwD4YNaHR0cDovL3hlc3Qv
--MDAPhg1odHRwOi8veGVzdC8xMA+GDWh0dHA6Ly94ZXN0LzIwD4YNaHR0cDovL3hl
--c3QvMzAPhg1odHRwOi8veGVzdC80MA+GDWh0dHA6Ly94ZXN0LzUwD4YNaHR0cDov
--L3hlc3QvNjAPhg1odHRwOi8veGVzdC83MA+GDWh0dHA6Ly94ZXN0LzgwD4YNaHR0
--cDovL3hlc3QvOTAQhg5odHRwOi8veGVzdC8xMDAQhg5odHRwOi8veGVzdC8xMTAQ
--hg5odHRwOi8veGVzdC8xMjAQhg5odHRwOi8veGVzdC8xMzAQhg5odHRwOi8veGVz
--dC8xNDAQhg5odHRwOi8veGVzdC8xNTAQhg5odHRwOi8veGVzdC8xNjAQhg5odHRw
--Oi8veGVzdC8xNzAQhg5odHRwOi8veGVzdC8xODAQhg5odHRwOi8veGVzdC8xOTAQ
--hg5odHRwOi8veGVzdC8yMDAQhg5odHRwOi8veGVzdC8yMTAQhg5odHRwOi8veGVz
--dC8yMjAQhg5odHRwOi8veGVzdC8yMzAQhg5odHRwOi8veGVzdC8yNDAQhg5odHRw
--Oi8veGVzdC8yNTAQhg5odHRwOi8veGVzdC8yNjAQhg5odHRwOi8veGVzdC8yNzAQ
--hg5odHRwOi8veGVzdC8yODAQhg5odHRwOi8veGVzdC8yOTAQhg5odHRwOi8veGVz
--dC8zMDAQhg5odHRwOi8veGVzdC8zMTAQhg5odHRwOi8veGVzdC8zMjAQhg5odHRw
--Oi8veGVzdC8zMzAQhg5odHRwOi8veGVzdC8zNDAQhg5odHRwOi8veGVzdC8zNTAQ
--hg5odHRwOi8veGVzdC8zNjAQhg5odHRwOi8veGVzdC8zNzAQhg5odHRwOi8veGVz
--dC8zODAQhg5odHRwOi8veGVzdC8zOTAQhg5odHRwOi8veGVzdC80MDAQhg5odHRw
--Oi8veGVzdC80MTAQhg5odHRwOi8veGVzdC80MjAQhg5odHRwOi8veGVzdC80MzAQ
--hg5odHRwOi8veGVzdC80NDAQhg5odHRwOi8veGVzdC80NTAQhg5odHRwOi8veGVz
--dC80NjAQhg5odHRwOi8veGVzdC80NzAQhg5odHRwOi8veGVzdC80ODAQhg5odHRw
--Oi8veGVzdC80OTAQhg5odHRwOi8veGVzdC81MDAQhg5odHRwOi8veGVzdC81MTAQ
--hg5odHRwOi8veGVzdC81MjAQhg5odHRwOi8veGVzdC81MzAQhg5odHRwOi8veGVz
--dC81NDAQhg5odHRwOi8veGVzdC81NTAQhg5odHRwOi8veGVzdC81NjAQhg5odHRw
--Oi8veGVzdC81NzAQhg5odHRwOi8veGVzdC81ODAQhg5odHRwOi8veGVzdC81OTAQ
--hg5odHRwOi8veGVzdC82MDAQhg5odHRwOi8veGVzdC82MTAQhg5odHRwOi8veGVz
--dC82MjAQhg5odHRwOi8veGVzdC82MzAQhg5odHRwOi8veGVzdC82NDAQhg5odHRw
--Oi8veGVzdC82NTAQhg5odHRwOi8veGVzdC82NjAQhg5odHRwOi8veGVzdC82NzAQ
--hg5odHRwOi8veGVzdC82ODAQhg5odHRwOi8veGVzdC82OTAQhg5odHRwOi8veGVz
--dC83MDAQhg5odHRwOi8veGVzdC83MTAQhg5odHRwOi8veGVzdC83MjAQhg5odHRw
--Oi8veGVzdC83MzAQhg5odHRwOi8veGVzdC83NDAQhg5odHRwOi8veGVzdC83NTAQ
--hg5odHRwOi8veGVzdC83NjAQhg5odHRwOi8veGVzdC83NzAQhg5odHRwOi8veGVz
--dC83ODAQhg5odHRwOi8veGVzdC83OTAQhg5odHRwOi8veGVzdC84MDAQhg5odHRw
--Oi8veGVzdC84MTAQhg5odHRwOi8veGVzdC84MjAQhg5odHRwOi8veGVzdC84MzAQ
--hg5odHRwOi8veGVzdC84NDAQhg5odHRwOi8veGVzdC84NTAQhg5odHRwOi8veGVz
--dC84NjAQhg5odHRwOi8veGVzdC84NzAQhg5odHRwOi8veGVzdC84ODAQhg5odHRw
--Oi8veGVzdC84OTAQhg5odHRwOi8veGVzdC85MDAQhg5odHRwOi8veGVzdC85MTAQ
--hg5odHRwOi8veGVzdC85MjAQhg5odHRwOi8veGVzdC85MzAQhg5odHRwOi8veGVz
--dC85NDAQhg5odHRwOi8veGVzdC85NTAQhg5odHRwOi8veGVzdC85NjAQhg5odHRw
--Oi8veGVzdC85NzAQhg5odHRwOi8veGVzdC85ODAQhg5odHRwOi8veGVzdC85OTAR
--hg9odHRwOi8veGVzdC8xMDAwEYYPaHR0cDovL3hlc3QvMTAxMBGGD2h0dHA6Ly94
--ZXN0LzEwMjARhg9odHRwOi8veGVzdC8xMDMwEYYPaHR0cDovL3hlc3QvMTA0MBGG
--D2h0dHA6Ly94ZXN0LzEwNTARhg9odHRwOi8veGVzdC8xMDYwEYYPaHR0cDovL3hl
--c3QvMTA3MBGGD2h0dHA6Ly94ZXN0LzEwODARhg9odHRwOi8veGVzdC8xMDkwEYYP
--aHR0cDovL3hlc3QvMTEwMBGGD2h0dHA6Ly94ZXN0LzExMTARhg9odHRwOi8veGVz
--dC8xMTIwEYYPaHR0cDovL3hlc3QvMTEzMBGGD2h0dHA6Ly94ZXN0LzExNDARhg9o
--dHRwOi8veGVzdC8xMTUwEYYPaHR0cDovL3hlc3QvMTE2MBGGD2h0dHA6Ly94ZXN0
--LzExNzARhg9odHRwOi8veGVzdC8xMTgwEYYPaHR0cDovL3hlc3QvMTE5MBGGD2h0
--dHA6Ly94ZXN0LzEyMDARhg9odHRwOi8veGVzdC8xMjEwEYYPaHR0cDovL3hlc3Qv
--MTIyMBGGD2h0dHA6Ly94ZXN0LzEyMzARhg9odHRwOi8veGVzdC8xMjQwEYYPaHR0
--cDovL3hlc3QvMTI1MBGGD2h0dHA6Ly94ZXN0LzEyNjARhg9odHRwOi8veGVzdC8x
--MjcwEYYPaHR0cDovL3hlc3QvMTI4MBGGD2h0dHA6Ly94ZXN0LzEyOTARhg9odHRw
--Oi8veGVzdC8xMzAwEYYPaHR0cDovL3hlc3QvMTMxMBGGD2h0dHA6Ly94ZXN0LzEz
--MjARhg9odHRwOi8veGVzdC8xMzMwEYYPaHR0cDovL3hlc3QvMTM0MBGGD2h0dHA6
--Ly94ZXN0LzEzNTARhg9odHRwOi8veGVzdC8xMzYwEYYPaHR0cDovL3hlc3QvMTM3
--MBGGD2h0dHA6Ly94ZXN0LzEzODARhg9odHRwOi8veGVzdC8xMzkwEYYPaHR0cDov
--L3hlc3QvMTQwMBGGD2h0dHA6Ly94ZXN0LzE0MTARhg9odHRwOi8veGVzdC8xNDIw
--EYYPaHR0cDovL3hlc3QvMTQzMBGGD2h0dHA6Ly94ZXN0LzE0NDARhg9odHRwOi8v
--eGVzdC8xNDUwEYYPaHR0cDovL3hlc3QvMTQ2MBGGD2h0dHA6Ly94ZXN0LzE0NzAR
--hg9odHRwOi8veGVzdC8xNDgwEYYPaHR0cDovL3hlc3QvMTQ5MBGGD2h0dHA6Ly94
--ZXN0LzE1MDARhg9odHRwOi8veGVzdC8xNTEwEYYPaHR0cDovL3hlc3QvMTUyMBGG
--D2h0dHA6Ly94ZXN0LzE1MzARhg9odHRwOi8veGVzdC8xNTQwEYYPaHR0cDovL3hl
--c3QvMTU1MBGGD2h0dHA6Ly94ZXN0LzE1NjARhg9odHRwOi8veGVzdC8xNTcwEYYP
--aHR0cDovL3hlc3QvMTU4MBGGD2h0dHA6Ly94ZXN0LzE1OTARhg9odHRwOi8veGVz
--dC8xNjAwEYYPaHR0cDovL3hlc3QvMTYxMBGGD2h0dHA6Ly94ZXN0LzE2MjARhg9o
--dHRwOi8veGVzdC8xNjMwEYYPaHR0cDovL3hlc3QvMTY0MBGGD2h0dHA6Ly94ZXN0
--LzE2NTARhg9odHRwOi8veGVzdC8xNjYwEYYPaHR0cDovL3hlc3QvMTY3MBGGD2h0
--dHA6Ly94ZXN0LzE2ODARhg9odHRwOi8veGVzdC8xNjkwEYYPaHR0cDovL3hlc3Qv
--MTcwMBGGD2h0dHA6Ly94ZXN0LzE3MTARhg9odHRwOi8veGVzdC8xNzIwEYYPaHR0
--cDovL3hlc3QvMTczMBGGD2h0dHA6Ly94ZXN0LzE3NDARhg9odHRwOi8veGVzdC8x
--NzUwEYYPaHR0cDovL3hlc3QvMTc2MBGGD2h0dHA6Ly94ZXN0LzE3NzARhg9odHRw
--Oi8veGVzdC8xNzgwEYYPaHR0cDovL3hlc3QvMTc5MBGGD2h0dHA6Ly94ZXN0LzE4
--MDARhg9odHRwOi8veGVzdC8xODEwEYYPaHR0cDovL3hlc3QvMTgyMBGGD2h0dHA6
--Ly94ZXN0LzE4MzARhg9odHRwOi8veGVzdC8xODQwEYYPaHR0cDovL3hlc3QvMTg1
--MBGGD2h0dHA6Ly94ZXN0LzE4NjARhg9odHRwOi8veGVzdC8xODcwEYYPaHR0cDov
--L3hlc3QvMTg4MBGGD2h0dHA6Ly94ZXN0LzE4OTARhg9odHRwOi8veGVzdC8xOTAw
--EYYPaHR0cDovL3hlc3QvMTkxMBGGD2h0dHA6Ly94ZXN0LzE5MjARhg9odHRwOi8v
--eGVzdC8xOTMwEYYPaHR0cDovL3hlc3QvMTk0MBGGD2h0dHA6Ly94ZXN0LzE5NTAR
--hg9odHRwOi8veGVzdC8xOTYwEYYPaHR0cDovL3hlc3QvMTk3MBGGD2h0dHA6Ly94
--ZXN0LzE5ODARhg9odHRwOi8veGVzdC8xOTkwEYYPaHR0cDovL3hlc3QvMjAwMBGG
--D2h0dHA6Ly94ZXN0LzIwMTARhg9odHRwOi8veGVzdC8yMDIwEYYPaHR0cDovL3hl
--c3QvMjAzMBGGD2h0dHA6Ly94ZXN0LzIwNDARhg9odHRwOi8veGVzdC8yMDUwEYYP
--aHR0cDovL3hlc3QvMjA2MBGGD2h0dHA6Ly94ZXN0LzIwNzARhg9odHRwOi8veGVz
--dC8yMDgwEYYPaHR0cDovL3hlc3QvMjA5MBGGD2h0dHA6Ly94ZXN0LzIxMDARhg9o
--dHRwOi8veGVzdC8yMTEwEYYPaHR0cDovL3hlc3QvMjEyMBGGD2h0dHA6Ly94ZXN0
--LzIxMzARhg9odHRwOi8veGVzdC8yMTQwEYYPaHR0cDovL3hlc3QvMjE1MBGGD2h0
--dHA6Ly94ZXN0LzIxNjARhg9odHRwOi8veGVzdC8yMTcwEYYPaHR0cDovL3hlc3Qv
--MjE4MBGGD2h0dHA6Ly94ZXN0LzIxOTARhg9odHRwOi8veGVzdC8yMjAwEYYPaHR0
--cDovL3hlc3QvMjIxMBGGD2h0dHA6Ly94ZXN0LzIyMjARhg9odHRwOi8veGVzdC8y
--MjMwEYYPaHR0cDovL3hlc3QvMjI0MBGGD2h0dHA6Ly94ZXN0LzIyNTARhg9odHRw
--Oi8veGVzdC8yMjYwEYYPaHR0cDovL3hlc3QvMjI3MBGGD2h0dHA6Ly94ZXN0LzIy
--ODARhg9odHRwOi8veGVzdC8yMjkwEYYPaHR0cDovL3hlc3QvMjMwMBGGD2h0dHA6
--Ly94ZXN0LzIzMTARhg9odHRwOi8veGVzdC8yMzIwEYYPaHR0cDovL3hlc3QvMjMz
--MBGGD2h0dHA6Ly94ZXN0LzIzNDARhg9odHRwOi8veGVzdC8yMzUwEYYPaHR0cDov
--L3hlc3QvMjM2MBGGD2h0dHA6Ly94ZXN0LzIzNzARhg9odHRwOi8veGVzdC8yMzgw
--EYYPaHR0cDovL3hlc3QvMjM5MBGGD2h0dHA6Ly94ZXN0LzI0MDARhg9odHRwOi8v
--eGVzdC8yNDEwEYYPaHR0cDovL3hlc3QvMjQyMBGGD2h0dHA6Ly94ZXN0LzI0MzAR
--hg9odHRwOi8veGVzdC8yNDQwEYYPaHR0cDovL3hlc3QvMjQ1MBGGD2h0dHA6Ly94
--ZXN0LzI0NjARhg9odHRwOi8veGVzdC8yNDcwEYYPaHR0cDovL3hlc3QvMjQ4MBGG
--D2h0dHA6Ly94ZXN0LzI0OTARhg9odHRwOi8veGVzdC8yNTAwEYYPaHR0cDovL3hl
--c3QvMjUxMBGGD2h0dHA6Ly94ZXN0LzI1MjARhg9odHRwOi8veGVzdC8yNTMwEYYP
--aHR0cDovL3hlc3QvMjU0MBGGD2h0dHA6Ly94ZXN0LzI1NTARhg9odHRwOi8veGVz
--dC8yNTYwEYYPaHR0cDovL3hlc3QvMjU3MBGGD2h0dHA6Ly94ZXN0LzI1ODARhg9o
--dHRwOi8veGVzdC8yNTkwEYYPaHR0cDovL3hlc3QvMjYwMBGGD2h0dHA6Ly94ZXN0
--LzI2MTARhg9odHRwOi8veGVzdC8yNjIwEYYPaHR0cDovL3hlc3QvMjYzMBGGD2h0
--dHA6Ly94ZXN0LzI2NDARhg9odHRwOi8veGVzdC8yNjUwEYYPaHR0cDovL3hlc3Qv
--MjY2MBGGD2h0dHA6Ly94ZXN0LzI2NzARhg9odHRwOi8veGVzdC8yNjgwEYYPaHR0
--cDovL3hlc3QvMjY5MBGGD2h0dHA6Ly94ZXN0LzI3MDARhg9odHRwOi8veGVzdC8y
--NzEwEYYPaHR0cDovL3hlc3QvMjcyMBGGD2h0dHA6Ly94ZXN0LzI3MzARhg9odHRw
--Oi8veGVzdC8yNzQwEYYPaHR0cDovL3hlc3QvMjc1MBGGD2h0dHA6Ly94ZXN0LzI3
--NjARhg9odHRwOi8veGVzdC8yNzcwEYYPaHR0cDovL3hlc3QvMjc4MBGGD2h0dHA6
--Ly94ZXN0LzI3OTARhg9odHRwOi8veGVzdC8yODAwEYYPaHR0cDovL3hlc3QvMjgx
--MBGGD2h0dHA6Ly94ZXN0LzI4MjARhg9odHRwOi8veGVzdC8yODMwEYYPaHR0cDov
--L3hlc3QvMjg0MBGGD2h0dHA6Ly94ZXN0LzI4NTARhg9odHRwOi8veGVzdC8yODYw
--EYYPaHR0cDovL3hlc3QvMjg3MBGGD2h0dHA6Ly94ZXN0LzI4ODARhg9odHRwOi8v
--eGVzdC8yODkwEYYPaHR0cDovL3hlc3QvMjkwMBGGD2h0dHA6Ly94ZXN0LzI5MTAR
--hg9odHRwOi8veGVzdC8yOTIwEYYPaHR0cDovL3hlc3QvMjkzMBGGD2h0dHA6Ly94
--ZXN0LzI5NDARhg9odHRwOi8veGVzdC8yOTUwEYYPaHR0cDovL3hlc3QvMjk2MBGG
--D2h0dHA6Ly94ZXN0LzI5NzARhg9odHRwOi8veGVzdC8yOTgwEYYPaHR0cDovL3hl
--c3QvMjk5MBGGD2h0dHA6Ly94ZXN0LzMwMDARhg9odHRwOi8veGVzdC8zMDEwEYYP
--aHR0cDovL3hlc3QvMzAyMBGGD2h0dHA6Ly94ZXN0LzMwMzARhg9odHRwOi8veGVz
--dC8zMDQwEYYPaHR0cDovL3hlc3QvMzA1MBGGD2h0dHA6Ly94ZXN0LzMwNjARhg9o
--dHRwOi8veGVzdC8zMDcwEYYPaHR0cDovL3hlc3QvMzA4MBGGD2h0dHA6Ly94ZXN0
--LzMwOTARhg9odHRwOi8veGVzdC8zMTAwEYYPaHR0cDovL3hlc3QvMzExMBGGD2h0
--dHA6Ly94ZXN0LzMxMjARhg9odHRwOi8veGVzdC8zMTMwEYYPaHR0cDovL3hlc3Qv
--MzE0MBGGD2h0dHA6Ly94ZXN0LzMxNTARhg9odHRwOi8veGVzdC8zMTYwEYYPaHR0
--cDovL3hlc3QvMzE3MBGGD2h0dHA6Ly94ZXN0LzMxODARhg9odHRwOi8veGVzdC8z
--MTkwEYYPaHR0cDovL3hlc3QvMzIwMBGGD2h0dHA6Ly94ZXN0LzMyMTARhg9odHRw
--Oi8veGVzdC8zMjIwEYYPaHR0cDovL3hlc3QvMzIzMBGGD2h0dHA6Ly94ZXN0LzMy
--NDARhg9odHRwOi8veGVzdC8zMjUwEYYPaHR0cDovL3hlc3QvMzI2MBGGD2h0dHA6
--Ly94ZXN0LzMyNzARhg9odHRwOi8veGVzdC8zMjgwEYYPaHR0cDovL3hlc3QvMzI5
--MBGGD2h0dHA6Ly94ZXN0LzMzMDARhg9odHRwOi8veGVzdC8zMzEwEYYPaHR0cDov
--L3hlc3QvMzMyMBGGD2h0dHA6Ly94ZXN0LzMzMzARhg9odHRwOi8veGVzdC8zMzQw
--EYYPaHR0cDovL3hlc3QvMzM1MBGGD2h0dHA6Ly94ZXN0LzMzNjARhg9odHRwOi8v
--eGVzdC8zMzcwEYYPaHR0cDovL3hlc3QvMzM4MBGGD2h0dHA6Ly94ZXN0LzMzOTAR
--hg9odHRwOi8veGVzdC8zNDAwEYYPaHR0cDovL3hlc3QvMzQxMBGGD2h0dHA6Ly94
--ZXN0LzM0MjARhg9odHRwOi8veGVzdC8zNDMwEYYPaHR0cDovL3hlc3QvMzQ0MBGG
--D2h0dHA6Ly94ZXN0LzM0NTARhg9odHRwOi8veGVzdC8zNDYwEYYPaHR0cDovL3hl
--c3QvMzQ3MBGGD2h0dHA6Ly94ZXN0LzM0ODARhg9odHRwOi8veGVzdC8zNDkwEYYP
--aHR0cDovL3hlc3QvMzUwMBGGD2h0dHA6Ly94ZXN0LzM1MTARhg9odHRwOi8veGVz
--dC8zNTIwEYYPaHR0cDovL3hlc3QvMzUzMBGGD2h0dHA6Ly94ZXN0LzM1NDARhg9o
--dHRwOi8veGVzdC8zNTUwEYYPaHR0cDovL3hlc3QvMzU2MBGGD2h0dHA6Ly94ZXN0
--LzM1NzARhg9odHRwOi8veGVzdC8zNTgwEYYPaHR0cDovL3hlc3QvMzU5MBGGD2h0
--dHA6Ly94ZXN0LzM2MDARhg9odHRwOi8veGVzdC8zNjEwEYYPaHR0cDovL3hlc3Qv
--MzYyMBGGD2h0dHA6Ly94ZXN0LzM2MzARhg9odHRwOi8veGVzdC8zNjQwEYYPaHR0
--cDovL3hlc3QvMzY1MBGGD2h0dHA6Ly94ZXN0LzM2NjARhg9odHRwOi8veGVzdC8z
--NjcwEYYPaHR0cDovL3hlc3QvMzY4MBGGD2h0dHA6Ly94ZXN0LzM2OTARhg9odHRw
--Oi8veGVzdC8zNzAwEYYPaHR0cDovL3hlc3QvMzcxMBGGD2h0dHA6Ly94ZXN0LzM3
--MjARhg9odHRwOi8veGVzdC8zNzMwEYYPaHR0cDovL3hlc3QvMzc0MBGGD2h0dHA6
--Ly94ZXN0LzM3NTARhg9odHRwOi8veGVzdC8zNzYwEYYPaHR0cDovL3hlc3QvMzc3
--MBGGD2h0dHA6Ly94ZXN0LzM3ODARhg9odHRwOi8veGVzdC8zNzkwEYYPaHR0cDov
--L3hlc3QvMzgwMBGGD2h0dHA6Ly94ZXN0LzM4MTARhg9odHRwOi8veGVzdC8zODIw
--EYYPaHR0cDovL3hlc3QvMzgzMBGGD2h0dHA6Ly94ZXN0LzM4NDARhg9odHRwOi8v
--eGVzdC8zODUwEYYPaHR0cDovL3hlc3QvMzg2MBGGD2h0dHA6Ly94ZXN0LzM4NzAR
--hg9odHRwOi8veGVzdC8zODgwEYYPaHR0cDovL3hlc3QvMzg5MBGGD2h0dHA6Ly94
--ZXN0LzM5MDARhg9odHRwOi8veGVzdC8zOTEwEYYPaHR0cDovL3hlc3QvMzkyMBGG
--D2h0dHA6Ly94ZXN0LzM5MzARhg9odHRwOi8veGVzdC8zOTQwEYYPaHR0cDovL3hl
--c3QvMzk1MBGGD2h0dHA6Ly94ZXN0LzM5NjARhg9odHRwOi8veGVzdC8zOTcwEYYP
--aHR0cDovL3hlc3QvMzk4MBGGD2h0dHA6Ly94ZXN0LzM5OTARhg9odHRwOi8veGVz
--dC80MDAwEYYPaHR0cDovL3hlc3QvNDAxMBGGD2h0dHA6Ly94ZXN0LzQwMjARhg9o
--dHRwOi8veGVzdC80MDMwEYYPaHR0cDovL3hlc3QvNDA0MBGGD2h0dHA6Ly94ZXN0
--LzQwNTARhg9odHRwOi8veGVzdC80MDYwEYYPaHR0cDovL3hlc3QvNDA3MBGGD2h0
--dHA6Ly94ZXN0LzQwODARhg9odHRwOi8veGVzdC80MDkwEYYPaHR0cDovL3hlc3Qv
--NDEwMBGGD2h0dHA6Ly94ZXN0LzQxMTARhg9odHRwOi8veGVzdC80MTIwEYYPaHR0
--cDovL3hlc3QvNDEzMBGGD2h0dHA6Ly94ZXN0LzQxNDARhg9odHRwOi8veGVzdC80
--MTUwEYYPaHR0cDovL3hlc3QvNDE2MBGGD2h0dHA6Ly94ZXN0LzQxNzARhg9odHRw
--Oi8veGVzdC80MTgwEYYPaHR0cDovL3hlc3QvNDE5MBGGD2h0dHA6Ly94ZXN0LzQy
--MDARhg9odHRwOi8veGVzdC80MjEwEYYPaHR0cDovL3hlc3QvNDIyMBGGD2h0dHA6
--Ly94ZXN0LzQyMzARhg9odHRwOi8veGVzdC80MjQwEYYPaHR0cDovL3hlc3QvNDI1
--MBGGD2h0dHA6Ly94ZXN0LzQyNjARhg9odHRwOi8veGVzdC80MjcwEYYPaHR0cDov
--L3hlc3QvNDI4MBGGD2h0dHA6Ly94ZXN0LzQyOTARhg9odHRwOi8veGVzdC80MzAw
--EYYPaHR0cDovL3hlc3QvNDMxMBGGD2h0dHA6Ly94ZXN0LzQzMjARhg9odHRwOi8v
--eGVzdC80MzMwEYYPaHR0cDovL3hlc3QvNDM0MBGGD2h0dHA6Ly94ZXN0LzQzNTAR
--hg9odHRwOi8veGVzdC80MzYwEYYPaHR0cDovL3hlc3QvNDM3MBGGD2h0dHA6Ly94
--ZXN0LzQzODARhg9odHRwOi8veGVzdC80MzkwEYYPaHR0cDovL3hlc3QvNDQwMBGG
--D2h0dHA6Ly94ZXN0LzQ0MTARhg9odHRwOi8veGVzdC80NDIwEYYPaHR0cDovL3hl
--c3QvNDQzMBGGD2h0dHA6Ly94ZXN0LzQ0NDARhg9odHRwOi8veGVzdC80NDUwEYYP
--aHR0cDovL3hlc3QvNDQ2MBGGD2h0dHA6Ly94ZXN0LzQ0NzARhg9odHRwOi8veGVz
--dC80NDgwEYYPaHR0cDovL3hlc3QvNDQ5MBGGD2h0dHA6Ly94ZXN0LzQ1MDARhg9o
--dHRwOi8veGVzdC80NTEwEYYPaHR0cDovL3hlc3QvNDUyMBGGD2h0dHA6Ly94ZXN0
--LzQ1MzARhg9odHRwOi8veGVzdC80NTQwEYYPaHR0cDovL3hlc3QvNDU1MBGGD2h0
--dHA6Ly94ZXN0LzQ1NjARhg9odHRwOi8veGVzdC80NTcwEYYPaHR0cDovL3hlc3Qv
--NDU4MBGGD2h0dHA6Ly94ZXN0LzQ1OTARhg9odHRwOi8veGVzdC80NjAwEYYPaHR0
--cDovL3hlc3QvNDYxMBGGD2h0dHA6Ly94ZXN0LzQ2MjARhg9odHRwOi8veGVzdC80
--NjMwEYYPaHR0cDovL3hlc3QvNDY0MBGGD2h0dHA6Ly94ZXN0LzQ2NTARhg9odHRw
--Oi8veGVzdC80NjYwEYYPaHR0cDovL3hlc3QvNDY3MBGGD2h0dHA6Ly94ZXN0LzQ2
--ODARhg9odHRwOi8veGVzdC80NjkwEYYPaHR0cDovL3hlc3QvNDcwMBGGD2h0dHA6
--Ly94ZXN0LzQ3MTARhg9odHRwOi8veGVzdC80NzIwEYYPaHR0cDovL3hlc3QvNDcz
--MBGGD2h0dHA6Ly94ZXN0LzQ3NDARhg9odHRwOi8veGVzdC80NzUwEYYPaHR0cDov
--L3hlc3QvNDc2MBGGD2h0dHA6Ly94ZXN0LzQ3NzARhg9odHRwOi8veGVzdC80Nzgw
--EYYPaHR0cDovL3hlc3QvNDc5MBGGD2h0dHA6Ly94ZXN0LzQ4MDARhg9odHRwOi8v
--eGVzdC80ODEwEYYPaHR0cDovL3hlc3QvNDgyMBGGD2h0dHA6Ly94ZXN0LzQ4MzAR
--hg9odHRwOi8veGVzdC80ODQwEYYPaHR0cDovL3hlc3QvNDg1MBGGD2h0dHA6Ly94
--ZXN0LzQ4NjARhg9odHRwOi8veGVzdC80ODcwEYYPaHR0cDovL3hlc3QvNDg4MBGG
--D2h0dHA6Ly94ZXN0LzQ4OTARhg9odHRwOi8veGVzdC80OTAwEYYPaHR0cDovL3hl
--c3QvNDkxMBGGD2h0dHA6Ly94ZXN0LzQ5MjARhg9odHRwOi8veGVzdC80OTMwEYYP
--aHR0cDovL3hlc3QvNDk0MBGGD2h0dHA6Ly94ZXN0LzQ5NTARhg9odHRwOi8veGVz
--dC80OTYwEYYPaHR0cDovL3hlc3QvNDk3MBGGD2h0dHA6Ly94ZXN0LzQ5ODARhg9o
--dHRwOi8veGVzdC80OTkwEYYPaHR0cDovL3hlc3QvNTAwMBGGD2h0dHA6Ly94ZXN0
--LzUwMTARhg9odHRwOi8veGVzdC81MDIwEYYPaHR0cDovL3hlc3QvNTAzMBGGD2h0
--dHA6Ly94ZXN0LzUwNDARhg9odHRwOi8veGVzdC81MDUwEYYPaHR0cDovL3hlc3Qv
--NTA2MBGGD2h0dHA6Ly94ZXN0LzUwNzARhg9odHRwOi8veGVzdC81MDgwEYYPaHR0
--cDovL3hlc3QvNTA5MBGGD2h0dHA6Ly94ZXN0LzUxMDARhg9odHRwOi8veGVzdC81
--MTEwEYYPaHR0cDovL3hlc3QvNTEyMBGGD2h0dHA6Ly94ZXN0LzUxMzARhg9odHRw
--Oi8veGVzdC81MTQwEYYPaHR0cDovL3hlc3QvNTE1MBGGD2h0dHA6Ly94ZXN0LzUx
--NjARhg9odHRwOi8veGVzdC81MTcwEYYPaHR0cDovL3hlc3QvNTE4MBGGD2h0dHA6
--Ly94ZXN0LzUxOTARhg9odHRwOi8veGVzdC81MjAwEYYPaHR0cDovL3hlc3QvNTIx
--MBGGD2h0dHA6Ly94ZXN0LzUyMjARhg9odHRwOi8veGVzdC81MjMwEYYPaHR0cDov
--L3hlc3QvNTI0MBGGD2h0dHA6Ly94ZXN0LzUyNTARhg9odHRwOi8veGVzdC81MjYw
--EYYPaHR0cDovL3hlc3QvNTI3MBGGD2h0dHA6Ly94ZXN0LzUyODARhg9odHRwOi8v
--eGVzdC81MjkwEYYPaHR0cDovL3hlc3QvNTMwMBGGD2h0dHA6Ly94ZXN0LzUzMTAR
--hg9odHRwOi8veGVzdC81MzIwEYYPaHR0cDovL3hlc3QvNTMzMBGGD2h0dHA6Ly94
--ZXN0LzUzNDARhg9odHRwOi8veGVzdC81MzUwEYYPaHR0cDovL3hlc3QvNTM2MBGG
--D2h0dHA6Ly94ZXN0LzUzNzARhg9odHRwOi8veGVzdC81MzgwEYYPaHR0cDovL3hl
--c3QvNTM5MBGGD2h0dHA6Ly94ZXN0LzU0MDARhg9odHRwOi8veGVzdC81NDEwEYYP
--aHR0cDovL3hlc3QvNTQyMBGGD2h0dHA6Ly94ZXN0LzU0MzARhg9odHRwOi8veGVz
--dC81NDQwEYYPaHR0cDovL3hlc3QvNTQ1MBGGD2h0dHA6Ly94ZXN0LzU0NjARhg9o
--dHRwOi8veGVzdC81NDcwEYYPaHR0cDovL3hlc3QvNTQ4MBGGD2h0dHA6Ly94ZXN0
--LzU0OTARhg9odHRwOi8veGVzdC81NTAwEYYPaHR0cDovL3hlc3QvNTUxMBGGD2h0
--dHA6Ly94ZXN0LzU1MjARhg9odHRwOi8veGVzdC81NTMwEYYPaHR0cDovL3hlc3Qv
--NTU0MBGGD2h0dHA6Ly94ZXN0LzU1NTARhg9odHRwOi8veGVzdC81NTYwEYYPaHR0
--cDovL3hlc3QvNTU3MBGGD2h0dHA6Ly94ZXN0LzU1ODARhg9odHRwOi8veGVzdC81
--NTkwEYYPaHR0cDovL3hlc3QvNTYwMBGGD2h0dHA6Ly94ZXN0LzU2MTARhg9odHRw
--Oi8veGVzdC81NjIwEYYPaHR0cDovL3hlc3QvNTYzMBGGD2h0dHA6Ly94ZXN0LzU2
--NDARhg9odHRwOi8veGVzdC81NjUwEYYPaHR0cDovL3hlc3QvNTY2MBGGD2h0dHA6
--Ly94ZXN0LzU2NzARhg9odHRwOi8veGVzdC81NjgwEYYPaHR0cDovL3hlc3QvNTY5
--MBGGD2h0dHA6Ly94ZXN0LzU3MDARhg9odHRwOi8veGVzdC81NzEwEYYPaHR0cDov
--L3hlc3QvNTcyMBGGD2h0dHA6Ly94ZXN0LzU3MzARhg9odHRwOi8veGVzdC81NzQw
--EYYPaHR0cDovL3hlc3QvNTc1MBGGD2h0dHA6Ly94ZXN0LzU3NjARhg9odHRwOi8v
--eGVzdC81NzcwEYYPaHR0cDovL3hlc3QvNTc4MBGGD2h0dHA6Ly94ZXN0LzU3OTAR
--hg9odHRwOi8veGVzdC81ODAwEYYPaHR0cDovL3hlc3QvNTgxMBGGD2h0dHA6Ly94
--ZXN0LzU4MjARhg9odHRwOi8veGVzdC81ODMwEYYPaHR0cDovL3hlc3QvNTg0MBGG
--D2h0dHA6Ly94ZXN0LzU4NTARhg9odHRwOi8veGVzdC81ODYwEYYPaHR0cDovL3hl
--c3QvNTg3MBGGD2h0dHA6Ly94ZXN0LzU4ODARhg9odHRwOi8veGVzdC81ODkwEYYP
--aHR0cDovL3hlc3QvNTkwMBGGD2h0dHA6Ly94ZXN0LzU5MTARhg9odHRwOi8veGVz
--dC81OTIwEYYPaHR0cDovL3hlc3QvNTkzMBGGD2h0dHA6Ly94ZXN0LzU5NDARhg9o
--dHRwOi8veGVzdC81OTUwEYYPaHR0cDovL3hlc3QvNTk2MBGGD2h0dHA6Ly94ZXN0
--LzU5NzARhg9odHRwOi8veGVzdC81OTgwEYYPaHR0cDovL3hlc3QvNTk5MBGGD2h0
--dHA6Ly94ZXN0LzYwMDARhg9odHRwOi8veGVzdC82MDEwEYYPaHR0cDovL3hlc3Qv
--NjAyMBGGD2h0dHA6Ly94ZXN0LzYwMzARhg9odHRwOi8veGVzdC82MDQwEYYPaHR0
--cDovL3hlc3QvNjA1MBGGD2h0dHA6Ly94ZXN0LzYwNjARhg9odHRwOi8veGVzdC82
--MDcwEYYPaHR0cDovL3hlc3QvNjA4MBGGD2h0dHA6Ly94ZXN0LzYwOTARhg9odHRw
--Oi8veGVzdC82MTAwEYYPaHR0cDovL3hlc3QvNjExMBGGD2h0dHA6Ly94ZXN0LzYx
--MjARhg9odHRwOi8veGVzdC82MTMwEYYPaHR0cDovL3hlc3QvNjE0MBGGD2h0dHA6
--Ly94ZXN0LzYxNTARhg9odHRwOi8veGVzdC82MTYwEYYPaHR0cDovL3hlc3QvNjE3
--MBGGD2h0dHA6Ly94ZXN0LzYxODARhg9odHRwOi8veGVzdC82MTkwEYYPaHR0cDov
--L3hlc3QvNjIwMBGGD2h0dHA6Ly94ZXN0LzYyMTARhg9odHRwOi8veGVzdC82MjIw
--EYYPaHR0cDovL3hlc3QvNjIzMBGGD2h0dHA6Ly94ZXN0LzYyNDARhg9odHRwOi8v
--eGVzdC82MjUwEYYPaHR0cDovL3hlc3QvNjI2MBGGD2h0dHA6Ly94ZXN0LzYyNzAR
--hg9odHRwOi8veGVzdC82MjgwEYYPaHR0cDovL3hlc3QvNjI5MBGGD2h0dHA6Ly94
--ZXN0LzYzMDARhg9odHRwOi8veGVzdC82MzEwEYYPaHR0cDovL3hlc3QvNjMyMBGG
--D2h0dHA6Ly94ZXN0LzYzMzARhg9odHRwOi8veGVzdC82MzQwEYYPaHR0cDovL3hl
--c3QvNjM1MBGGD2h0dHA6Ly94ZXN0LzYzNjARhg9odHRwOi8veGVzdC82MzcwEYYP
--aHR0cDovL3hlc3QvNjM4MBGGD2h0dHA6Ly94ZXN0LzYzOTARhg9odHRwOi8veGVz
--dC82NDAwEYYPaHR0cDovL3hlc3QvNjQxMBGGD2h0dHA6Ly94ZXN0LzY0MjARhg9o
--dHRwOi8veGVzdC82NDMwEYYPaHR0cDovL3hlc3QvNjQ0MBGGD2h0dHA6Ly94ZXN0
--LzY0NTARhg9odHRwOi8veGVzdC82NDYwEYYPaHR0cDovL3hlc3QvNjQ3MBGGD2h0
--dHA6Ly94ZXN0LzY0ODARhg9odHRwOi8veGVzdC82NDkwEYYPaHR0cDovL3hlc3Qv
--NjUwMBGGD2h0dHA6Ly94ZXN0LzY1MTARhg9odHRwOi8veGVzdC82NTIwEYYPaHR0
--cDovL3hlc3QvNjUzMBGGD2h0dHA6Ly94ZXN0LzY1NDARhg9odHRwOi8veGVzdC82
--NTUwEYYPaHR0cDovL3hlc3QvNjU2MBGGD2h0dHA6Ly94ZXN0LzY1NzARhg9odHRw
--Oi8veGVzdC82NTgwEYYPaHR0cDovL3hlc3QvNjU5MBGGD2h0dHA6Ly94ZXN0LzY2
--MDARhg9odHRwOi8veGVzdC82NjEwEYYPaHR0cDovL3hlc3QvNjYyMBGGD2h0dHA6
--Ly94ZXN0LzY2MzARhg9odHRwOi8veGVzdC82NjQwEYYPaHR0cDovL3hlc3QvNjY1
--MBGGD2h0dHA6Ly94ZXN0LzY2NjARhg9odHRwOi8veGVzdC82NjcwEYYPaHR0cDov
--L3hlc3QvNjY4MBGGD2h0dHA6Ly94ZXN0LzY2OTARhg9odHRwOi8veGVzdC82NzAw
--EYYPaHR0cDovL3hlc3QvNjcxMBGGD2h0dHA6Ly94ZXN0LzY3MjARhg9odHRwOi8v
--eGVzdC82NzMwEYYPaHR0cDovL3hlc3QvNjc0MBGGD2h0dHA6Ly94ZXN0LzY3NTAR
--hg9odHRwOi8veGVzdC82NzYwEYYPaHR0cDovL3hlc3QvNjc3MBGGD2h0dHA6Ly94
--ZXN0LzY3ODARhg9odHRwOi8veGVzdC82NzkwEYYPaHR0cDovL3hlc3QvNjgwMBGG
--D2h0dHA6Ly94ZXN0LzY4MTARhg9odHRwOi8veGVzdC82ODIwEYYPaHR0cDovL3hl
--c3QvNjgzMBGGD2h0dHA6Ly94ZXN0LzY4NDARhg9odHRwOi8veGVzdC82ODUwEYYP
--aHR0cDovL3hlc3QvNjg2MBGGD2h0dHA6Ly94ZXN0LzY4NzARhg9odHRwOi8veGVz
--dC82ODgwEYYPaHR0cDovL3hlc3QvNjg5MBGGD2h0dHA6Ly94ZXN0LzY5MDARhg9o
--dHRwOi8veGVzdC82OTEwEYYPaHR0cDovL3hlc3QvNjkyMBGGD2h0dHA6Ly94ZXN0
--LzY5MzARhg9odHRwOi8veGVzdC82OTQwEYYPaHR0cDovL3hlc3QvNjk1MBGGD2h0
--dHA6Ly94ZXN0LzY5NjARhg9odHRwOi8veGVzdC82OTcwEYYPaHR0cDovL3hlc3Qv
--Njk4MBGGD2h0dHA6Ly94ZXN0LzY5OTARhg9odHRwOi8veGVzdC83MDAwEYYPaHR0
--cDovL3hlc3QvNzAxMBGGD2h0dHA6Ly94ZXN0LzcwMjARhg9odHRwOi8veGVzdC83
--MDMwEYYPaHR0cDovL3hlc3QvNzA0MBGGD2h0dHA6Ly94ZXN0LzcwNTARhg9odHRw
--Oi8veGVzdC83MDYwEYYPaHR0cDovL3hlc3QvNzA3MBGGD2h0dHA6Ly94ZXN0Lzcw
--ODARhg9odHRwOi8veGVzdC83MDkwEYYPaHR0cDovL3hlc3QvNzEwMBGGD2h0dHA6
--Ly94ZXN0LzcxMTARhg9odHRwOi8veGVzdC83MTIwEYYPaHR0cDovL3hlc3QvNzEz
--MBGGD2h0dHA6Ly94ZXN0LzcxNDARhg9odHRwOi8veGVzdC83MTUwEYYPaHR0cDov
--L3hlc3QvNzE2MBGGD2h0dHA6Ly94ZXN0LzcxNzARhg9odHRwOi8veGVzdC83MTgw
--EYYPaHR0cDovL3hlc3QvNzE5MBGGD2h0dHA6Ly94ZXN0LzcyMDARhg9odHRwOi8v
--eGVzdC83MjEwEYYPaHR0cDovL3hlc3QvNzIyMBGGD2h0dHA6Ly94ZXN0LzcyMzAR
--hg9odHRwOi8veGVzdC83MjQwEYYPaHR0cDovL3hlc3QvNzI1MBGGD2h0dHA6Ly94
--ZXN0LzcyNjARhg9odHRwOi8veGVzdC83MjcwEYYPaHR0cDovL3hlc3QvNzI4MBGG
--D2h0dHA6Ly94ZXN0LzcyOTARhg9odHRwOi8veGVzdC83MzAwEYYPaHR0cDovL3hl
--c3QvNzMxMBGGD2h0dHA6Ly94ZXN0LzczMjARhg9odHRwOi8veGVzdC83MzMwEYYP
--aHR0cDovL3hlc3QvNzM0MBGGD2h0dHA6Ly94ZXN0LzczNTARhg9odHRwOi8veGVz
--dC83MzYwEYYPaHR0cDovL3hlc3QvNzM3MBGGD2h0dHA6Ly94ZXN0LzczODARhg9o
--dHRwOi8veGVzdC83MzkwEYYPaHR0cDovL3hlc3QvNzQwMBGGD2h0dHA6Ly94ZXN0
--Lzc0MTARhg9odHRwOi8veGVzdC83NDIwEYYPaHR0cDovL3hlc3QvNzQzMBGGD2h0
--dHA6Ly94ZXN0Lzc0NDARhg9odHRwOi8veGVzdC83NDUwEYYPaHR0cDovL3hlc3Qv
--NzQ2MBGGD2h0dHA6Ly94ZXN0Lzc0NzARhg9odHRwOi8veGVzdC83NDgwEYYPaHR0
--cDovL3hlc3QvNzQ5MBGGD2h0dHA6Ly94ZXN0Lzc1MDARhg9odHRwOi8veGVzdC83
--NTEwEYYPaHR0cDovL3hlc3QvNzUyMBGGD2h0dHA6Ly94ZXN0Lzc1MzARhg9odHRw
--Oi8veGVzdC83NTQwEYYPaHR0cDovL3hlc3QvNzU1MBGGD2h0dHA6Ly94ZXN0Lzc1
--NjARhg9odHRwOi8veGVzdC83NTcwEYYPaHR0cDovL3hlc3QvNzU4MBGGD2h0dHA6
--Ly94ZXN0Lzc1OTARhg9odHRwOi8veGVzdC83NjAwEYYPaHR0cDovL3hlc3QvNzYx
--MBGGD2h0dHA6Ly94ZXN0Lzc2MjARhg9odHRwOi8veGVzdC83NjMwEYYPaHR0cDov
--L3hlc3QvNzY0MBGGD2h0dHA6Ly94ZXN0Lzc2NTARhg9odHRwOi8veGVzdC83NjYw
--EYYPaHR0cDovL3hlc3QvNzY3MBGGD2h0dHA6Ly94ZXN0Lzc2ODARhg9odHRwOi8v
--eGVzdC83NjkwEYYPaHR0cDovL3hlc3QvNzcwMBGGD2h0dHA6Ly94ZXN0Lzc3MTAR
--hg9odHRwOi8veGVzdC83NzIwEYYPaHR0cDovL3hlc3QvNzczMBGGD2h0dHA6Ly94
--ZXN0Lzc3NDARhg9odHRwOi8veGVzdC83NzUwEYYPaHR0cDovL3hlc3QvNzc2MBGG
--D2h0dHA6Ly94ZXN0Lzc3NzARhg9odHRwOi8veGVzdC83NzgwEYYPaHR0cDovL3hl
--c3QvNzc5MBGGD2h0dHA6Ly94ZXN0Lzc4MDARhg9odHRwOi8veGVzdC83ODEwEYYP
--aHR0cDovL3hlc3QvNzgyMBGGD2h0dHA6Ly94ZXN0Lzc4MzARhg9odHRwOi8veGVz
--dC83ODQwEYYPaHR0cDovL3hlc3QvNzg1MBGGD2h0dHA6Ly94ZXN0Lzc4NjARhg9o
--dHRwOi8veGVzdC83ODcwEYYPaHR0cDovL3hlc3QvNzg4MBGGD2h0dHA6Ly94ZXN0
--Lzc4OTARhg9odHRwOi8veGVzdC83OTAwEYYPaHR0cDovL3hlc3QvNzkxMBGGD2h0
--dHA6Ly94ZXN0Lzc5MjARhg9odHRwOi8veGVzdC83OTMwEYYPaHR0cDovL3hlc3Qv
--Nzk0MBGGD2h0dHA6Ly94ZXN0Lzc5NTARhg9odHRwOi8veGVzdC83OTYwEYYPaHR0
--cDovL3hlc3QvNzk3MBGGD2h0dHA6Ly94ZXN0Lzc5ODARhg9odHRwOi8veGVzdC83
--OTkwEYYPaHR0cDovL3hlc3QvODAwMBGGD2h0dHA6Ly94ZXN0LzgwMTARhg9odHRw
--Oi8veGVzdC84MDIwEYYPaHR0cDovL3hlc3QvODAzMBGGD2h0dHA6Ly94ZXN0Lzgw
--NDARhg9odHRwOi8veGVzdC84MDUwEYYPaHR0cDovL3hlc3QvODA2MBGGD2h0dHA6
--Ly94ZXN0LzgwNzARhg9odHRwOi8veGVzdC84MDgwEYYPaHR0cDovL3hlc3QvODA5
--MBGGD2h0dHA6Ly94ZXN0LzgxMDARhg9odHRwOi8veGVzdC84MTEwEYYPaHR0cDov
--L3hlc3QvODEyMBGGD2h0dHA6Ly94ZXN0LzgxMzARhg9odHRwOi8veGVzdC84MTQw
--EYYPaHR0cDovL3hlc3QvODE1MBGGD2h0dHA6Ly94ZXN0LzgxNjARhg9odHRwOi8v
--eGVzdC84MTcwEYYPaHR0cDovL3hlc3QvODE4MBGGD2h0dHA6Ly94ZXN0LzgxOTAR
--hg9odHRwOi8veGVzdC84MjAwEYYPaHR0cDovL3hlc3QvODIxMBGGD2h0dHA6Ly94
--ZXN0LzgyMjARhg9odHRwOi8veGVzdC84MjMwEYYPaHR0cDovL3hlc3QvODI0MBGG
--D2h0dHA6Ly94ZXN0LzgyNTARhg9odHRwOi8veGVzdC84MjYwEYYPaHR0cDovL3hl
--c3QvODI3MBGGD2h0dHA6Ly94ZXN0LzgyODARhg9odHRwOi8veGVzdC84MjkwEYYP
--aHR0cDovL3hlc3QvODMwMBGGD2h0dHA6Ly94ZXN0LzgzMTARhg9odHRwOi8veGVz
--dC84MzIwEYYPaHR0cDovL3hlc3QvODMzMBGGD2h0dHA6Ly94ZXN0LzgzNDARhg9o
--dHRwOi8veGVzdC84MzUwEYYPaHR0cDovL3hlc3QvODM2MBGGD2h0dHA6Ly94ZXN0
--LzgzNzARhg9odHRwOi8veGVzdC84MzgwEYYPaHR0cDovL3hlc3QvODM5MBGGD2h0
--dHA6Ly94ZXN0Lzg0MDARhg9odHRwOi8veGVzdC84NDEwEYYPaHR0cDovL3hlc3Qv
--ODQyMBGGD2h0dHA6Ly94ZXN0Lzg0MzARhg9odHRwOi8veGVzdC84NDQwEYYPaHR0
--cDovL3hlc3QvODQ1MBGGD2h0dHA6Ly94ZXN0Lzg0NjARhg9odHRwOi8veGVzdC84
--NDcwEYYPaHR0cDovL3hlc3QvODQ4MBGGD2h0dHA6Ly94ZXN0Lzg0OTARhg9odHRw
--Oi8veGVzdC84NTAwEYYPaHR0cDovL3hlc3QvODUxMBGGD2h0dHA6Ly94ZXN0Lzg1
--MjARhg9odHRwOi8veGVzdC84NTMwEYYPaHR0cDovL3hlc3QvODU0MBGGD2h0dHA6
--Ly94ZXN0Lzg1NTARhg9odHRwOi8veGVzdC84NTYwEYYPaHR0cDovL3hlc3QvODU3
--MBGGD2h0dHA6Ly94ZXN0Lzg1ODARhg9odHRwOi8veGVzdC84NTkwEYYPaHR0cDov
--L3hlc3QvODYwMBGGD2h0dHA6Ly94ZXN0Lzg2MTARhg9odHRwOi8veGVzdC84NjIw
--EYYPaHR0cDovL3hlc3QvODYzMBGGD2h0dHA6Ly94ZXN0Lzg2NDARhg9odHRwOi8v
--eGVzdC84NjUwEYYPaHR0cDovL3hlc3QvODY2MBGGD2h0dHA6Ly94ZXN0Lzg2NzAR
--hg9odHRwOi8veGVzdC84NjgwEYYPaHR0cDovL3hlc3QvODY5MBGGD2h0dHA6Ly94
--ZXN0Lzg3MDARhg9odHRwOi8veGVzdC84NzEwEYYPaHR0cDovL3hlc3QvODcyMBGG
--D2h0dHA6Ly94ZXN0Lzg3MzARhg9odHRwOi8veGVzdC84NzQwEYYPaHR0cDovL3hl
--c3QvODc1MBGGD2h0dHA6Ly94ZXN0Lzg3NjARhg9odHRwOi8veGVzdC84NzcwEYYP
--aHR0cDovL3hlc3QvODc4MBGGD2h0dHA6Ly94ZXN0Lzg3OTARhg9odHRwOi8veGVz
--dC84ODAwEYYPaHR0cDovL3hlc3QvODgxMBGGD2h0dHA6Ly94ZXN0Lzg4MjARhg9o
--dHRwOi8veGVzdC84ODMwEYYPaHR0cDovL3hlc3QvODg0MBGGD2h0dHA6Ly94ZXN0
--Lzg4NTARhg9odHRwOi8veGVzdC84ODYwEYYPaHR0cDovL3hlc3QvODg3MBGGD2h0
--dHA6Ly94ZXN0Lzg4ODARhg9odHRwOi8veGVzdC84ODkwEYYPaHR0cDovL3hlc3Qv
--ODkwMBGGD2h0dHA6Ly94ZXN0Lzg5MTARhg9odHRwOi8veGVzdC84OTIwEYYPaHR0
--cDovL3hlc3QvODkzMBGGD2h0dHA6Ly94ZXN0Lzg5NDARhg9odHRwOi8veGVzdC84
--OTUwEYYPaHR0cDovL3hlc3QvODk2MBGGD2h0dHA6Ly94ZXN0Lzg5NzARhg9odHRw
--Oi8veGVzdC84OTgwEYYPaHR0cDovL3hlc3QvODk5MBGGD2h0dHA6Ly94ZXN0Lzkw
--MDARhg9odHRwOi8veGVzdC85MDEwEYYPaHR0cDovL3hlc3QvOTAyMBGGD2h0dHA6
--Ly94ZXN0LzkwMzARhg9odHRwOi8veGVzdC85MDQwEYYPaHR0cDovL3hlc3QvOTA1
--MBGGD2h0dHA6Ly94ZXN0LzkwNjARhg9odHRwOi8veGVzdC85MDcwEYYPaHR0cDov
--L3hlc3QvOTA4MBGGD2h0dHA6Ly94ZXN0LzkwOTARhg9odHRwOi8veGVzdC85MTAw
--EYYPaHR0cDovL3hlc3QvOTExMBGGD2h0dHA6Ly94ZXN0LzkxMjARhg9odHRwOi8v
--eGVzdC85MTMwEYYPaHR0cDovL3hlc3QvOTE0MBGGD2h0dHA6Ly94ZXN0LzkxNTAR
--hg9odHRwOi8veGVzdC85MTYwEYYPaHR0cDovL3hlc3QvOTE3MBGGD2h0dHA6Ly94
--ZXN0LzkxODARhg9odHRwOi8veGVzdC85MTkwEYYPaHR0cDovL3hlc3QvOTIwMBGG
--D2h0dHA6Ly94ZXN0LzkyMTARhg9odHRwOi8veGVzdC85MjIwEYYPaHR0cDovL3hl
--c3QvOTIzMBGGD2h0dHA6Ly94ZXN0LzkyNDARhg9odHRwOi8veGVzdC85MjUwEYYP
--aHR0cDovL3hlc3QvOTI2MBGGD2h0dHA6Ly94ZXN0LzkyNzARhg9odHRwOi8veGVz
--dC85MjgwEYYPaHR0cDovL3hlc3QvOTI5MBGGD2h0dHA6Ly94ZXN0LzkzMDARhg9o
--dHRwOi8veGVzdC85MzEwEYYPaHR0cDovL3hlc3QvOTMyMBGGD2h0dHA6Ly94ZXN0
--LzkzMzARhg9odHRwOi8veGVzdC85MzQwEYYPaHR0cDovL3hlc3QvOTM1MBGGD2h0
--dHA6Ly94ZXN0LzkzNjARhg9odHRwOi8veGVzdC85MzcwEYYPaHR0cDovL3hlc3Qv
--OTM4MBGGD2h0dHA6Ly94ZXN0LzkzOTARhg9odHRwOi8veGVzdC85NDAwEYYPaHR0
--cDovL3hlc3QvOTQxMBGGD2h0dHA6Ly94ZXN0Lzk0MjARhg9odHRwOi8veGVzdC85
--NDMwEYYPaHR0cDovL3hlc3QvOTQ0MBGGD2h0dHA6Ly94ZXN0Lzk0NTARhg9odHRw
--Oi8veGVzdC85NDYwEYYPaHR0cDovL3hlc3QvOTQ3MBGGD2h0dHA6Ly94ZXN0Lzk0
--ODARhg9odHRwOi8veGVzdC85NDkwEYYPaHR0cDovL3hlc3QvOTUwMBGGD2h0dHA6
--Ly94ZXN0Lzk1MTARhg9odHRwOi8veGVzdC85NTIwEYYPaHR0cDovL3hlc3QvOTUz
--MBGGD2h0dHA6Ly94ZXN0Lzk1NDARhg9odHRwOi8veGVzdC85NTUwEYYPaHR0cDov
--L3hlc3QvOTU2MBGGD2h0dHA6Ly94ZXN0Lzk1NzARhg9odHRwOi8veGVzdC85NTgw
--EYYPaHR0cDovL3hlc3QvOTU5MBGGD2h0dHA6Ly94ZXN0Lzk2MDARhg9odHRwOi8v
--eGVzdC85NjEwEYYPaHR0cDovL3hlc3QvOTYyMBGGD2h0dHA6Ly94ZXN0Lzk2MzAR
--hg9odHRwOi8veGVzdC85NjQwEYYPaHR0cDovL3hlc3QvOTY1MBGGD2h0dHA6Ly94
--ZXN0Lzk2NjARhg9odHRwOi8veGVzdC85NjcwEYYPaHR0cDovL3hlc3QvOTY4MBGG
--D2h0dHA6Ly94ZXN0Lzk2OTARhg9odHRwOi8veGVzdC85NzAwEYYPaHR0cDovL3hl
--c3QvOTcxMBGGD2h0dHA6Ly94ZXN0Lzk3MjARhg9odHRwOi8veGVzdC85NzMwEYYP
--aHR0cDovL3hlc3QvOTc0MBGGD2h0dHA6Ly94ZXN0Lzk3NTARhg9odHRwOi8veGVz
--dC85NzYwEYYPaHR0cDovL3hlc3QvOTc3MBGGD2h0dHA6Ly94ZXN0Lzk3ODARhg9o
--dHRwOi8veGVzdC85NzkwEYYPaHR0cDovL3hlc3QvOTgwMBGGD2h0dHA6Ly94ZXN0
--Lzk4MTARhg9odHRwOi8veGVzdC85ODIwEYYPaHR0cDovL3hlc3QvOTgzMBGGD2h0
--dHA6Ly94ZXN0Lzk4NDARhg9odHRwOi8veGVzdC85ODUwEYYPaHR0cDovL3hlc3Qv
--OTg2MBGGD2h0dHA6Ly94ZXN0Lzk4NzARhg9odHRwOi8veGVzdC85ODgwEYYPaHR0
--cDovL3hlc3QvOTg5MBGGD2h0dHA6Ly94ZXN0Lzk5MDARhg9odHRwOi8veGVzdC85
--OTEwEYYPaHR0cDovL3hlc3QvOTkyMBGGD2h0dHA6Ly94ZXN0Lzk5MzARhg9odHRw
--Oi8veGVzdC85OTQwEYYPaHR0cDovL3hlc3QvOTk1MBGGD2h0dHA6Ly94ZXN0Lzk5
--NjARhg9odHRwOi8veGVzdC85OTcwEYYPaHR0cDovL3hlc3QvOTk4MBGGD2h0dHA6
--Ly94ZXN0Lzk5OTAShhBodHRwOi8veGVzdC8xMDAwMBKGEGh0dHA6Ly94ZXN0LzEw
--MDEwEoYQaHR0cDovL3hlc3QvMTAwMjAShhBodHRwOi8veGVzdC8xMDAzMBKGEGh0
--dHA6Ly94ZXN0LzEwMDQwEoYQaHR0cDovL3hlc3QvMTAwNTAShhBodHRwOi8veGVz
--dC8xMDA2MBKGEGh0dHA6Ly94ZXN0LzEwMDcwEoYQaHR0cDovL3hlc3QvMTAwODAS
--hhBodHRwOi8veGVzdC8xMDA5MBKGEGh0dHA6Ly94ZXN0LzEwMTAwEoYQaHR0cDov
--L3hlc3QvMTAxMTAShhBodHRwOi8veGVzdC8xMDEyMBKGEGh0dHA6Ly94ZXN0LzEw
--MTMwEoYQaHR0cDovL3hlc3QvMTAxNDAShhBodHRwOi8veGVzdC8xMDE1MBKGEGh0
--dHA6Ly94ZXN0LzEwMTYwEoYQaHR0cDovL3hlc3QvMTAxNzAShhBodHRwOi8veGVz
--dC8xMDE4MBKGEGh0dHA6Ly94ZXN0LzEwMTkwEoYQaHR0cDovL3hlc3QvMTAyMDAS
--hhBodHRwOi8veGVzdC8xMDIxMBKGEGh0dHA6Ly94ZXN0LzEwMjIwEoYQaHR0cDov
--L3hlc3QvMTAyMzAShhBodHRwOi8veGVzdC8xMDI0MA0GCSqGSIb3DQEBCwUAA4IB
--AQAcHj9jLB0GARMS1c+6JUnH+za9yzLttzWr+OXcGrgbN7vq9cIdQJb7qVaU6ULZ
--EKOO4QKelQO3PmRMp4IfkRUnRgsetUkQskKNwai9rpR+US70Jhr0DYoDzTs6it+U
--wvFY6GalifCQbMrU/Q7Ip+7dup+5iA7AtQZLHKH5u7r7DI/UQ7bYlRDFY8PMoIFo
--ro8uJEhg2MSdQ04l9JSHWu257Y/d7x5IOD0T1kvveYwNaPg6UYyjEZyGwKabnr+l
--6Mku27aL1k0n7rNaHWH2E665UryucDiK2Pmi7ukysEF4nZZMlKqv9d6GFgStUNap
--E4K0CJvZZ3XtoLkWs5eziJ5c
-+MILWujCC1aKgAwIBAgIUPOX8gYhZqFAWwX/X5Srlln/C9vYwDQYJKoZIhvcNAQEL
-+BQAwDzENMAsGA1UEAwwEUm9vdDAeFw0yMTEwMDUxMjAwMDBaFw0yMjEwMDUxMjAw
-+MDBaMBcxFTATBgNVBAMMDEludGVybWVkaWF0ZTCCASIwDQYJKoZIhvcNAQEBBQAD
-+ggEPADCCAQoCggEBALs72wRuF+BUUrojdyS8NONw2ZmeU10zC6nMSx2uBicYjlW6
-+rRLHHTJZbcMWINtipneAEuCHWFFV42Z/0eA6ImXlcCaiBATwXflfVsja6A9XKHdu
-+mqBKUzQaYzeiQ6sOSs0HI91Vg0QADHBB3zVk0MUOaofbyvw11eJbrwug5nWl0uFy
-+TiJjAUFzuJVQLP3tw2G2NtSDlWHD4GH/9J6K6Lrc0faJ7Z0wRJUn9NGL5i8UZlbx
-+2vHMBBt3kqWfWEAMnwwy1gXCTMDFn+WkMD1M6Z0DbEwGtuWVvSG45iuooL8Gu0Mz
-+GT17F1nxZE0kZ7FRDzWu8HF1ea5bAjQEMeNmhmUCAwEAAaOC1AQwgtQAMB0GA1Ud
-+DgQWBBSSET+sEZbHZjfPg1ok8Dp3rzONfzAfBgNVHSMEGDAWgBS2wu+f0SnLD4mM
-+TFLUvUC3Ebdx3TA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAKGG2h0dHA6Ly91
-+cmwtZm9yLWFpYS9Sb290LmNlcjAsBgNVHR8EJTAjMCGgH6AdhhtodHRwOi8vdXJs
-+LWZvci1jcmwvUm9vdC5jcmwwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB
-+Af8wgtM0BgNVHR4EgtMrMILTJ6CCabEwCYIHdDAudGVzdDAJggd0MS50ZXN0MAmC
-+B3QyLnRlc3QwCYIHdDMudGVzdDAJggd0NC50ZXN0MAmCB3Q1LnRlc3QwCYIHdDYu
-+dGVzdDAJggd0Ny50ZXN0MAmCB3Q4LnRlc3QwCYIHdDkudGVzdDAKggh0MTAudGVz
-+dDAKggh0MTEudGVzdDAKggh0MTIudGVzdDAKggh0MTMudGVzdDAKggh0MTQudGVz
-+dDAKggh0MTUudGVzdDAKggh0MTYudGVzdDAKggh0MTcudGVzdDAKggh0MTgudGVz
-+dDAKggh0MTkudGVzdDAKggh0MjAudGVzdDAKggh0MjEudGVzdDAKggh0MjIudGVz
-+dDAKggh0MjMudGVzdDAKggh0MjQudGVzdDAKggh0MjUudGVzdDAKggh0MjYudGVz
-+dDAKggh0MjcudGVzdDAKggh0MjgudGVzdDAKggh0MjkudGVzdDAKggh0MzAudGVz
-+dDAKggh0MzEudGVzdDAKggh0MzIudGVzdDAKggh0MzMudGVzdDAKggh0MzQudGVz
-+dDAKggh0MzUudGVzdDAKggh0MzYudGVzdDAKggh0MzcudGVzdDAKggh0MzgudGVz
-+dDAKggh0MzkudGVzdDAKggh0NDAudGVzdDAKggh0NDEudGVzdDAKggh0NDIudGVz
-+dDAKggh0NDMudGVzdDAKggh0NDQudGVzdDAKggh0NDUudGVzdDAKggh0NDYudGVz
-+dDAKggh0NDcudGVzdDAKggh0NDgudGVzdDAKggh0NDkudGVzdDAKggh0NTAudGVz
-+dDAKggh0NTEudGVzdDAKggh0NTIudGVzdDAKggh0NTMudGVzdDAKggh0NTQudGVz
-+dDAKggh0NTUudGVzdDAKggh0NTYudGVzdDAKggh0NTcudGVzdDAKggh0NTgudGVz
-+dDAKggh0NTkudGVzdDAKggh0NjAudGVzdDAKggh0NjEudGVzdDAKggh0NjIudGVz
-+dDAKggh0NjMudGVzdDAKggh0NjQudGVzdDAKggh0NjUudGVzdDAKggh0NjYudGVz
-+dDAKggh0NjcudGVzdDAKggh0NjgudGVzdDAKggh0NjkudGVzdDAKggh0NzAudGVz
-+dDAKggh0NzEudGVzdDAKggh0NzIudGVzdDAKggh0NzMudGVzdDAKggh0NzQudGVz
-+dDAKggh0NzUudGVzdDAKggh0NzYudGVzdDAKggh0NzcudGVzdDAKggh0NzgudGVz
-+dDAKggh0NzkudGVzdDAKggh0ODAudGVzdDAKggh0ODEudGVzdDAKggh0ODIudGVz
-+dDAKggh0ODMudGVzdDAKggh0ODQudGVzdDAKggh0ODUudGVzdDAKggh0ODYudGVz
-+dDAKggh0ODcudGVzdDAKggh0ODgudGVzdDAKggh0ODkudGVzdDAKggh0OTAudGVz
-+dDAKggh0OTEudGVzdDAKggh0OTIudGVzdDAKggh0OTMudGVzdDAKggh0OTQudGVz
-+dDAKggh0OTUudGVzdDAKggh0OTYudGVzdDAKggh0OTcudGVzdDAKggh0OTgudGVz
-+dDAKggh0OTkudGVzdDALggl0MTAwLnRlc3QwC4IJdDEwMS50ZXN0MAuCCXQxMDIu
-+dGVzdDALggl0MTAzLnRlc3QwC4IJdDEwNC50ZXN0MAuCCXQxMDUudGVzdDALggl0
-+MTA2LnRlc3QwC4IJdDEwNy50ZXN0MAuCCXQxMDgudGVzdDALggl0MTA5LnRlc3Qw
-+C4IJdDExMC50ZXN0MAuCCXQxMTEudGVzdDALggl0MTEyLnRlc3QwC4IJdDExMy50
-+ZXN0MAuCCXQxMTQudGVzdDALggl0MTE1LnRlc3QwC4IJdDExNi50ZXN0MAuCCXQx
-+MTcudGVzdDALggl0MTE4LnRlc3QwC4IJdDExOS50ZXN0MAuCCXQxMjAudGVzdDAL
-+ggl0MTIxLnRlc3QwC4IJdDEyMi50ZXN0MAuCCXQxMjMudGVzdDALggl0MTI0LnRl
-+c3QwC4IJdDEyNS50ZXN0MAuCCXQxMjYudGVzdDALggl0MTI3LnRlc3QwC4IJdDEy
-+OC50ZXN0MAuCCXQxMjkudGVzdDALggl0MTMwLnRlc3QwC4IJdDEzMS50ZXN0MAuC
-+CXQxMzIudGVzdDALggl0MTMzLnRlc3QwC4IJdDEzNC50ZXN0MAuCCXQxMzUudGVz
-+dDALggl0MTM2LnRlc3QwC4IJdDEzNy50ZXN0MAuCCXQxMzgudGVzdDALggl0MTM5
-+LnRlc3QwC4IJdDE0MC50ZXN0MAuCCXQxNDEudGVzdDALggl0MTQyLnRlc3QwC4IJ
-+dDE0My50ZXN0MAuCCXQxNDQudGVzdDALggl0MTQ1LnRlc3QwC4IJdDE0Ni50ZXN0
-+MAuCCXQxNDcudGVzdDALggl0MTQ4LnRlc3QwC4IJdDE0OS50ZXN0MAuCCXQxNTAu
-+dGVzdDALggl0MTUxLnRlc3QwC4IJdDE1Mi50ZXN0MAuCCXQxNTMudGVzdDALggl0
-+MTU0LnRlc3QwC4IJdDE1NS50ZXN0MAuCCXQxNTYudGVzdDALggl0MTU3LnRlc3Qw
-+C4IJdDE1OC50ZXN0MAuCCXQxNTkudGVzdDALggl0MTYwLnRlc3QwC4IJdDE2MS50
-+ZXN0MAuCCXQxNjIudGVzdDALggl0MTYzLnRlc3QwC4IJdDE2NC50ZXN0MAuCCXQx
-+NjUudGVzdDALggl0MTY2LnRlc3QwC4IJdDE2Ny50ZXN0MAuCCXQxNjgudGVzdDAL
-+ggl0MTY5LnRlc3QwC4IJdDE3MC50ZXN0MAqHCAoAAAD/////MAqHCAoAAAH/////
-+MAqHCAoAAAL/////MAqHCAoAAAP/////MAqHCAoAAAT/////MAqHCAoAAAX/////
-+MAqHCAoAAAb/////MAqHCAoAAAf/////MAqHCAoAAAj/////MAqHCAoAAAn/////
-+MAqHCAoAAAr/////MAqHCAoAAAv/////MAqHCAoAAAz/////MAqHCAoAAA3/////
-+MAqHCAoAAA7/////MAqHCAoAAA//////MAqHCAoAABD/////MAqHCAoAABH/////
-+MAqHCAoAABL/////MAqHCAoAABP/////MAqHCAoAABT/////MAqHCAoAABX/////
-+MAqHCAoAABb/////MAqHCAoAABf/////MAqHCAoAABj/////MAqHCAoAABn/////
-+MAqHCAoAABr/////MAqHCAoAABv/////MAqHCAoAABz/////MAqHCAoAAB3/////
-+MAqHCAoAAB7/////MAqHCAoAAB//////MAqHCAoAACD/////MAqHCAoAACH/////
-+MAqHCAoAACL/////MAqHCAoAACP/////MAqHCAoAACT/////MAqHCAoAACX/////
-+MAqHCAoAACb/////MAqHCAoAACf/////MAqHCAoAACj/////MAqHCAoAACn/////
-+MAqHCAoAACr/////MAqHCAoAACv/////MAqHCAoAACz/////MAqHCAoAAC3/////
-+MAqHCAoAAC7/////MAqHCAoAAC//////MAqHCAoAADD/////MAqHCAoAADH/////
-+MAqHCAoAADL/////MAqHCAoAADP/////MAqHCAoAADT/////MAqHCAoAADX/////
-+MAqHCAoAADb/////MAqHCAoAADf/////MAqHCAoAADj/////MAqHCAoAADn/////
-+MAqHCAoAADr/////MAqHCAoAADv/////MAqHCAoAADz/////MAqHCAoAAD3/////
-+MAqHCAoAAD7/////MAqHCAoAAD//////MAqHCAoAAED/////MAqHCAoAAEH/////
-+MAqHCAoAAEL/////MAqHCAoAAEP/////MAqHCAoAAET/////MAqHCAoAAEX/////
-+MAqHCAoAAEb/////MAqHCAoAAEf/////MAqHCAoAAEj/////MAqHCAoAAEn/////
-+MAqHCAoAAEr/////MAqHCAoAAEv/////MAqHCAoAAEz/////MAqHCAoAAE3/////
-+MAqHCAoAAE7/////MAqHCAoAAE//////MAqHCAoAAFD/////MAqHCAoAAFH/////
-+MAqHCAoAAFL/////MAqHCAoAAFP/////MAqHCAoAAFT/////MAqHCAoAAFX/////
-+MAqHCAoAAFb/////MAqHCAoAAFf/////MAqHCAoAAFj/////MAqHCAoAAFn/////
-+MAqHCAoAAFr/////MAqHCAoAAFv/////MAqHCAoAAFz/////MAqHCAoAAF3/////
-+MAqHCAoAAF7/////MAqHCAoAAF//////MAqHCAoAAGD/////MAqHCAoAAGH/////
-+MAqHCAoAAGL/////MAqHCAoAAGP/////MAqHCAoAAGT/////MAqHCAoAAGX/////
-+MAqHCAoAAGb/////MAqHCAoAAGf/////MAqHCAoAAGj/////MAqHCAoAAGn/////
-+MAqHCAoAAGr/////MAqHCAoAAGv/////MAqHCAoAAGz/////MAqHCAoAAG3/////
-+MAqHCAoAAG7/////MAqHCAoAAG//////MAqHCAoAAHD/////MAqHCAoAAHH/////
-+MAqHCAoAAHL/////MAqHCAoAAHP/////MAqHCAoAAHT/////MAqHCAoAAHX/////
-+MAqHCAoAAHb/////MAqHCAoAAHf/////MAqHCAoAAHj/////MAqHCAoAAHn/////
-+MAqHCAoAAHr/////MAqHCAoAAHv/////MAqHCAoAAHz/////MAqHCAoAAH3/////
-+MAqHCAoAAH7/////MAqHCAoAAH//////MAqHCAoAAID/////MAqHCAoAAIH/////
-+MAqHCAoAAIL/////MAqHCAoAAIP/////MAqHCAoAAIT/////MAqHCAoAAIX/////
-+MAqHCAoAAIb/////MAqHCAoAAIf/////MAqHCAoAAIj/////MAqHCAoAAIn/////
-+MAqHCAoAAIr/////MAqHCAoAAIv/////MAqHCAoAAIz/////MAqHCAoAAI3/////
-+MAqHCAoAAI7/////MAqHCAoAAI//////MAqHCAoAAJD/////MAqHCAoAAJH/////
-+MAqHCAoAAJL/////MAqHCAoAAJP/////MAqHCAoAAJT/////MAqHCAoAAJX/////
-+MAqHCAoAAJb/////MAqHCAoAAJf/////MAqHCAoAAJj/////MAqHCAoAAJn/////
-+MAqHCAoAAJr/////MAqHCAoAAJv/////MAqHCAoAAJz/////MAqHCAoAAJ3/////
-+MAqHCAoAAJ7/////MAqHCAoAAJ//////MAqHCAoAAKD/////MAqHCAoAAKH/////
-+MAqHCAoAAKL/////MAqHCAoAAKP/////MAqHCAoAAKT/////MAqHCAoAAKX/////
-+MAqHCAoAAKb/////MAqHCAoAAKf/////MAqHCAoAAKj/////MAqHCAoAAKn/////
-+MAqHCAoAAKr/////MBGkDzANMQswCQYDVQQDDAJ0MDARpA8wDTELMAkGA1UEAwwC
-+dDEwEaQPMA0xCzAJBgNVBAMMAnQyMBGkDzANMQswCQYDVQQDDAJ0MzARpA8wDTEL
-+MAkGA1UEAwwCdDQwEaQPMA0xCzAJBgNVBAMMAnQ1MBGkDzANMQswCQYDVQQDDAJ0
-+NjARpA8wDTELMAkGA1UEAwwCdDcwEaQPMA0xCzAJBgNVBAMMAnQ4MBGkDzANMQsw
-+CQYDVQQDDAJ0OTASpBAwDjEMMAoGA1UEAwwDdDEwMBKkEDAOMQwwCgYDVQQDDAN0
-+MTEwEqQQMA4xDDAKBgNVBAMMA3QxMjASpBAwDjEMMAoGA1UEAwwDdDEzMBKkEDAO
-+MQwwCgYDVQQDDAN0MTQwEqQQMA4xDDAKBgNVBAMMA3QxNTASpBAwDjEMMAoGA1UE
-+AwwDdDE2MBKkEDAOMQwwCgYDVQQDDAN0MTcwEqQQMA4xDDAKBgNVBAMMA3QxODAS
-+pBAwDjEMMAoGA1UEAwwDdDE5MBKkEDAOMQwwCgYDVQQDDAN0MjAwEqQQMA4xDDAK
-+BgNVBAMMA3QyMTASpBAwDjEMMAoGA1UEAwwDdDIyMBKkEDAOMQwwCgYDVQQDDAN0
-+MjMwEqQQMA4xDDAKBgNVBAMMA3QyNDASpBAwDjEMMAoGA1UEAwwDdDI1MBKkEDAO
-+MQwwCgYDVQQDDAN0MjYwEqQQMA4xDDAKBgNVBAMMA3QyNzASpBAwDjEMMAoGA1UE
-+AwwDdDI4MBKkEDAOMQwwCgYDVQQDDAN0MjkwEqQQMA4xDDAKBgNVBAMMA3QzMDAS
-+pBAwDjEMMAoGA1UEAwwDdDMxMBKkEDAOMQwwCgYDVQQDDAN0MzIwEqQQMA4xDDAK
-+BgNVBAMMA3QzMzASpBAwDjEMMAoGA1UEAwwDdDM0MBKkEDAOMQwwCgYDVQQDDAN0
-+MzUwEqQQMA4xDDAKBgNVBAMMA3QzNjASpBAwDjEMMAoGA1UEAwwDdDM3MBKkEDAO
-+MQwwCgYDVQQDDAN0MzgwEqQQMA4xDDAKBgNVBAMMA3QzOTASpBAwDjEMMAoGA1UE
-+AwwDdDQwMBKkEDAOMQwwCgYDVQQDDAN0NDEwEqQQMA4xDDAKBgNVBAMMA3Q0MjAS
-+pBAwDjEMMAoGA1UEAwwDdDQzMBKkEDAOMQwwCgYDVQQDDAN0NDQwEqQQMA4xDDAK
-+BgNVBAMMA3Q0NTASpBAwDjEMMAoGA1UEAwwDdDQ2MBKkEDAOMQwwCgYDVQQDDAN0
-+NDcwEqQQMA4xDDAKBgNVBAMMA3Q0ODASpBAwDjEMMAoGA1UEAwwDdDQ5MBKkEDAO
-+MQwwCgYDVQQDDAN0NTAwEqQQMA4xDDAKBgNVBAMMA3Q1MTASpBAwDjEMMAoGA1UE
-+AwwDdDUyMBKkEDAOMQwwCgYDVQQDDAN0NTMwEqQQMA4xDDAKBgNVBAMMA3Q1NDAS
-+pBAwDjEMMAoGA1UEAwwDdDU1MBKkEDAOMQwwCgYDVQQDDAN0NTYwEqQQMA4xDDAK
-+BgNVBAMMA3Q1NzASpBAwDjEMMAoGA1UEAwwDdDU4MBKkEDAOMQwwCgYDVQQDDAN0
-+NTkwEqQQMA4xDDAKBgNVBAMMA3Q2MDASpBAwDjEMMAoGA1UEAwwDdDYxMBKkEDAO
-+MQwwCgYDVQQDDAN0NjIwEqQQMA4xDDAKBgNVBAMMA3Q2MzASpBAwDjEMMAoGA1UE
-+AwwDdDY0MBKkEDAOMQwwCgYDVQQDDAN0NjUwEqQQMA4xDDAKBgNVBAMMA3Q2NjAS
-+pBAwDjEMMAoGA1UEAwwDdDY3MBKkEDAOMQwwCgYDVQQDDAN0NjgwEqQQMA4xDDAK
-+BgNVBAMMA3Q2OTASpBAwDjEMMAoGA1UEAwwDdDcwMBKkEDAOMQwwCgYDVQQDDAN0
-+NzEwEqQQMA4xDDAKBgNVBAMMA3Q3MjASpBAwDjEMMAoGA1UEAwwDdDczMBKkEDAO
-+MQwwCgYDVQQDDAN0NzQwEqQQMA4xDDAKBgNVBAMMA3Q3NTASpBAwDjEMMAoGA1UE
-+AwwDdDc2MBKkEDAOMQwwCgYDVQQDDAN0NzcwEqQQMA4xDDAKBgNVBAMMA3Q3ODAS
-+pBAwDjEMMAoGA1UEAwwDdDc5MBKkEDAOMQwwCgYDVQQDDAN0ODAwEqQQMA4xDDAK
-+BgNVBAMMA3Q4MTASpBAwDjEMMAoGA1UEAwwDdDgyMBKkEDAOMQwwCgYDVQQDDAN0
-+ODMwEqQQMA4xDDAKBgNVBAMMA3Q4NDASpBAwDjEMMAoGA1UEAwwDdDg1MBKkEDAO
-+MQwwCgYDVQQDDAN0ODYwEqQQMA4xDDAKBgNVBAMMA3Q4NzASpBAwDjEMMAoGA1UE
-+AwwDdDg4MBKkEDAOMQwwCgYDVQQDDAN0ODkwEqQQMA4xDDAKBgNVBAMMA3Q5MDAS
-+pBAwDjEMMAoGA1UEAwwDdDkxMBKkEDAOMQwwCgYDVQQDDAN0OTIwEqQQMA4xDDAK
-+BgNVBAMMA3Q5MzASpBAwDjEMMAoGA1UEAwwDdDk0MBKkEDAOMQwwCgYDVQQDDAN0
-+OTUwEqQQMA4xDDAKBgNVBAMMA3Q5NjASpBAwDjEMMAoGA1UEAwwDdDk3MBKkEDAO
-+MQwwCgYDVQQDDAN0OTgwEqQQMA4xDDAKBgNVBAMMA3Q5OTATpBEwDzENMAsGA1UE
-+AwwEdDEwMDATpBEwDzENMAsGA1UEAwwEdDEwMTATpBEwDzENMAsGA1UEAwwEdDEw
-+MjATpBEwDzENMAsGA1UEAwwEdDEwMzATpBEwDzENMAsGA1UEAwwEdDEwNDATpBEw
-+DzENMAsGA1UEAwwEdDEwNTATpBEwDzENMAsGA1UEAwwEdDEwNjATpBEwDzENMAsG
-+A1UEAwwEdDEwNzATpBEwDzENMAsGA1UEAwwEdDEwODATpBEwDzENMAsGA1UEAwwE
-+dDEwOTATpBEwDzENMAsGA1UEAwwEdDExMDATpBEwDzENMAsGA1UEAwwEdDExMTAT
-+pBEwDzENMAsGA1UEAwwEdDExMjATpBEwDzENMAsGA1UEAwwEdDExMzATpBEwDzEN
-+MAsGA1UEAwwEdDExNDATpBEwDzENMAsGA1UEAwwEdDExNTATpBEwDzENMAsGA1UE
-+AwwEdDExNjATpBEwDzENMAsGA1UEAwwEdDExNzATpBEwDzENMAsGA1UEAwwEdDEx
-+ODATpBEwDzENMAsGA1UEAwwEdDExOTATpBEwDzENMAsGA1UEAwwEdDEyMDATpBEw
-+DzENMAsGA1UEAwwEdDEyMTATpBEwDzENMAsGA1UEAwwEdDEyMjATpBEwDzENMAsG
-+A1UEAwwEdDEyMzATpBEwDzENMAsGA1UEAwwEdDEyNDATpBEwDzENMAsGA1UEAwwE
-+dDEyNTATpBEwDzENMAsGA1UEAwwEdDEyNjATpBEwDzENMAsGA1UEAwwEdDEyNzAT
-+pBEwDzENMAsGA1UEAwwEdDEyODATpBEwDzENMAsGA1UEAwwEdDEyOTATpBEwDzEN
-+MAsGA1UEAwwEdDEzMDATpBEwDzENMAsGA1UEAwwEdDEzMTATpBEwDzENMAsGA1UE
-+AwwEdDEzMjATpBEwDzENMAsGA1UEAwwEdDEzMzATpBEwDzENMAsGA1UEAwwEdDEz
-+NDATpBEwDzENMAsGA1UEAwwEdDEzNTATpBEwDzENMAsGA1UEAwwEdDEzNjATpBEw
-+DzENMAsGA1UEAwwEdDEzNzATpBEwDzENMAsGA1UEAwwEdDEzODATpBEwDzENMAsG
-+A1UEAwwEdDEzOTATpBEwDzENMAsGA1UEAwwEdDE0MDATpBEwDzENMAsGA1UEAwwE
-+dDE0MTATpBEwDzENMAsGA1UEAwwEdDE0MjATpBEwDzENMAsGA1UEAwwEdDE0MzAT
-+pBEwDzENMAsGA1UEAwwEdDE0NDATpBEwDzENMAsGA1UEAwwEdDE0NTATpBEwDzEN
-+MAsGA1UEAwwEdDE0NjATpBEwDzENMAsGA1UEAwwEdDE0NzATpBEwDzENMAsGA1UE
-+AwwEdDE0ODATpBEwDzENMAsGA1UEAwwEdDE0OTATpBEwDzENMAsGA1UEAwwEdDE1
-+MDATpBEwDzENMAsGA1UEAwwEdDE1MTATpBEwDzENMAsGA1UEAwwEdDE1MjATpBEw
-+DzENMAsGA1UEAwwEdDE1MzATpBEwDzENMAsGA1UEAwwEdDE1NDATpBEwDzENMAsG
-+A1UEAwwEdDE1NTATpBEwDzENMAsGA1UEAwwEdDE1NjATpBEwDzENMAsGA1UEAwwE
-+dDE1NzATpBEwDzENMAsGA1UEAwwEdDE1ODATpBEwDzENMAsGA1UEAwwEdDE1OTAT
-+pBEwDzENMAsGA1UEAwwEdDE2MDATpBEwDzENMAsGA1UEAwwEdDE2MTATpBEwDzEN
-+MAsGA1UEAwwEdDE2MjATpBEwDzENMAsGA1UEAwwEdDE2MzATpBEwDzENMAsGA1UE
-+AwwEdDE2NDATpBEwDzENMAsGA1UEAwwEdDE2NTATpBEwDzENMAsGA1UEAwwEdDE2
-+NjATpBEwDzENMAsGA1UEAwwEdDE2NzATpBEwDzENMAsGA1UEAwwEdDE2ODATpBEw
-+DzENMAsGA1UEAwwEdDE2OTATpBEwDzENMAsGA1UEAwwEdDE3MDATpBEwDzENMAsG
-+A1UEAwwEdDE3MTAPhg1odHRwOi8vdGVzdC8wMA+GDWh0dHA6Ly90ZXN0LzEwD4YN
-+aHR0cDovL3Rlc3QvMjAPhg1odHRwOi8vdGVzdC8zMA+GDWh0dHA6Ly90ZXN0LzQw
-+D4YNaHR0cDovL3Rlc3QvNTAPhg1odHRwOi8vdGVzdC82MA+GDWh0dHA6Ly90ZXN0
-+LzcwD4YNaHR0cDovL3Rlc3QvODAPhg1odHRwOi8vdGVzdC85MBCGDmh0dHA6Ly90
-+ZXN0LzEwMBCGDmh0dHA6Ly90ZXN0LzExMBCGDmh0dHA6Ly90ZXN0LzEyMBCGDmh0
-+dHA6Ly90ZXN0LzEzMBCGDmh0dHA6Ly90ZXN0LzE0MBCGDmh0dHA6Ly90ZXN0LzE1
-+MBCGDmh0dHA6Ly90ZXN0LzE2MBCGDmh0dHA6Ly90ZXN0LzE3MBCGDmh0dHA6Ly90
-+ZXN0LzE4MBCGDmh0dHA6Ly90ZXN0LzE5MBCGDmh0dHA6Ly90ZXN0LzIwMBCGDmh0
-+dHA6Ly90ZXN0LzIxMBCGDmh0dHA6Ly90ZXN0LzIyMBCGDmh0dHA6Ly90ZXN0LzIz
-+MBCGDmh0dHA6Ly90ZXN0LzI0MBCGDmh0dHA6Ly90ZXN0LzI1MBCGDmh0dHA6Ly90
-+ZXN0LzI2MBCGDmh0dHA6Ly90ZXN0LzI3MBCGDmh0dHA6Ly90ZXN0LzI4MBCGDmh0
-+dHA6Ly90ZXN0LzI5MBCGDmh0dHA6Ly90ZXN0LzMwMBCGDmh0dHA6Ly90ZXN0LzMx
-+MBCGDmh0dHA6Ly90ZXN0LzMyMBCGDmh0dHA6Ly90ZXN0LzMzMBCGDmh0dHA6Ly90
-+ZXN0LzM0MBCGDmh0dHA6Ly90ZXN0LzM1MBCGDmh0dHA6Ly90ZXN0LzM2MBCGDmh0
-+dHA6Ly90ZXN0LzM3MBCGDmh0dHA6Ly90ZXN0LzM4MBCGDmh0dHA6Ly90ZXN0LzM5
-+MBCGDmh0dHA6Ly90ZXN0LzQwMBCGDmh0dHA6Ly90ZXN0LzQxMBCGDmh0dHA6Ly90
-+ZXN0LzQyMBCGDmh0dHA6Ly90ZXN0LzQzMBCGDmh0dHA6Ly90ZXN0LzQ0MBCGDmh0
-+dHA6Ly90ZXN0LzQ1MBCGDmh0dHA6Ly90ZXN0LzQ2MBCGDmh0dHA6Ly90ZXN0LzQ3
-+MBCGDmh0dHA6Ly90ZXN0LzQ4MBCGDmh0dHA6Ly90ZXN0LzQ5MBCGDmh0dHA6Ly90
-+ZXN0LzUwMBCGDmh0dHA6Ly90ZXN0LzUxMBCGDmh0dHA6Ly90ZXN0LzUyMBCGDmh0
-+dHA6Ly90ZXN0LzUzMBCGDmh0dHA6Ly90ZXN0LzU0MBCGDmh0dHA6Ly90ZXN0LzU1
-+MBCGDmh0dHA6Ly90ZXN0LzU2MBCGDmh0dHA6Ly90ZXN0LzU3MBCGDmh0dHA6Ly90
-+ZXN0LzU4MBCGDmh0dHA6Ly90ZXN0LzU5MBCGDmh0dHA6Ly90ZXN0LzYwMBCGDmh0
-+dHA6Ly90ZXN0LzYxMBCGDmh0dHA6Ly90ZXN0LzYyMBCGDmh0dHA6Ly90ZXN0LzYz
-+MBCGDmh0dHA6Ly90ZXN0LzY0MBCGDmh0dHA6Ly90ZXN0LzY1MBCGDmh0dHA6Ly90
-+ZXN0LzY2MBCGDmh0dHA6Ly90ZXN0LzY3MBCGDmh0dHA6Ly90ZXN0LzY4MBCGDmh0
-+dHA6Ly90ZXN0LzY5MBCGDmh0dHA6Ly90ZXN0LzcwMBCGDmh0dHA6Ly90ZXN0Lzcx
-+MBCGDmh0dHA6Ly90ZXN0LzcyMBCGDmh0dHA6Ly90ZXN0LzczMBCGDmh0dHA6Ly90
-+ZXN0Lzc0MBCGDmh0dHA6Ly90ZXN0Lzc1MBCGDmh0dHA6Ly90ZXN0Lzc2MBCGDmh0
-+dHA6Ly90ZXN0Lzc3MBCGDmh0dHA6Ly90ZXN0Lzc4MBCGDmh0dHA6Ly90ZXN0Lzc5
-+MBCGDmh0dHA6Ly90ZXN0LzgwMBCGDmh0dHA6Ly90ZXN0LzgxMBCGDmh0dHA6Ly90
-+ZXN0LzgyMBCGDmh0dHA6Ly90ZXN0LzgzMBCGDmh0dHA6Ly90ZXN0Lzg0MBCGDmh0
-+dHA6Ly90ZXN0Lzg1MBCGDmh0dHA6Ly90ZXN0Lzg2MBCGDmh0dHA6Ly90ZXN0Lzg3
-+MBCGDmh0dHA6Ly90ZXN0Lzg4MBCGDmh0dHA6Ly90ZXN0Lzg5MBCGDmh0dHA6Ly90
-+ZXN0LzkwMBCGDmh0dHA6Ly90ZXN0LzkxMBCGDmh0dHA6Ly90ZXN0LzkyMBCGDmh0
-+dHA6Ly90ZXN0LzkzMBCGDmh0dHA6Ly90ZXN0Lzk0MBCGDmh0dHA6Ly90ZXN0Lzk1
-+MBCGDmh0dHA6Ly90ZXN0Lzk2MBCGDmh0dHA6Ly90ZXN0Lzk3MBCGDmh0dHA6Ly90
-+ZXN0Lzk4MBCGDmh0dHA6Ly90ZXN0Lzk5MBGGD2h0dHA6Ly90ZXN0LzEwMDARhg9o
-+dHRwOi8vdGVzdC8xMDEwEYYPaHR0cDovL3Rlc3QvMTAyMBGGD2h0dHA6Ly90ZXN0
-+LzEwMzARhg9odHRwOi8vdGVzdC8xMDQwEYYPaHR0cDovL3Rlc3QvMTA1MBGGD2h0
-+dHA6Ly90ZXN0LzEwNjARhg9odHRwOi8vdGVzdC8xMDcwEYYPaHR0cDovL3Rlc3Qv
-+MTA4MBGGD2h0dHA6Ly90ZXN0LzEwOTARhg9odHRwOi8vdGVzdC8xMTAwEYYPaHR0
-+cDovL3Rlc3QvMTExMBGGD2h0dHA6Ly90ZXN0LzExMjARhg9odHRwOi8vdGVzdC8x
-+MTMwEYYPaHR0cDovL3Rlc3QvMTE0MBGGD2h0dHA6Ly90ZXN0LzExNTARhg9odHRw
-+Oi8vdGVzdC8xMTYwEYYPaHR0cDovL3Rlc3QvMTE3MBGGD2h0dHA6Ly90ZXN0LzEx
-+ODARhg9odHRwOi8vdGVzdC8xMTkwEYYPaHR0cDovL3Rlc3QvMTIwMBGGD2h0dHA6
-+Ly90ZXN0LzEyMTARhg9odHRwOi8vdGVzdC8xMjIwEYYPaHR0cDovL3Rlc3QvMTIz
-+MBGGD2h0dHA6Ly90ZXN0LzEyNDARhg9odHRwOi8vdGVzdC8xMjUwEYYPaHR0cDov
-+L3Rlc3QvMTI2MBGGD2h0dHA6Ly90ZXN0LzEyNzARhg9odHRwOi8vdGVzdC8xMjgw
-+EYYPaHR0cDovL3Rlc3QvMTI5MBGGD2h0dHA6Ly90ZXN0LzEzMDARhg9odHRwOi8v
-+dGVzdC8xMzEwEYYPaHR0cDovL3Rlc3QvMTMyMBGGD2h0dHA6Ly90ZXN0LzEzMzAR
-+hg9odHRwOi8vdGVzdC8xMzQwEYYPaHR0cDovL3Rlc3QvMTM1MBGGD2h0dHA6Ly90
-+ZXN0LzEzNjARhg9odHRwOi8vdGVzdC8xMzcwEYYPaHR0cDovL3Rlc3QvMTM4MBGG
-+D2h0dHA6Ly90ZXN0LzEzOTARhg9odHRwOi8vdGVzdC8xNDAwEYYPaHR0cDovL3Rl
-+c3QvMTQxMBGGD2h0dHA6Ly90ZXN0LzE0MjARhg9odHRwOi8vdGVzdC8xNDMwEYYP
-+aHR0cDovL3Rlc3QvMTQ0MBGGD2h0dHA6Ly90ZXN0LzE0NTARhg9odHRwOi8vdGVz
-+dC8xNDYwEYYPaHR0cDovL3Rlc3QvMTQ3MBGGD2h0dHA6Ly90ZXN0LzE0ODARhg9o
-+dHRwOi8vdGVzdC8xNDkwEYYPaHR0cDovL3Rlc3QvMTUwMBGGD2h0dHA6Ly90ZXN0
-+LzE1MTARhg9odHRwOi8vdGVzdC8xNTIwEYYPaHR0cDovL3Rlc3QvMTUzMBGGD2h0
-+dHA6Ly90ZXN0LzE1NDARhg9odHRwOi8vdGVzdC8xNTUwEYYPaHR0cDovL3Rlc3Qv
-+MTU2MBGGD2h0dHA6Ly90ZXN0LzE1NzARhg9odHRwOi8vdGVzdC8xNTgwEYYPaHR0
-+cDovL3Rlc3QvMTU5MBGGD2h0dHA6Ly90ZXN0LzE2MDARhg9odHRwOi8vdGVzdC8x
-+NjEwEYYPaHR0cDovL3Rlc3QvMTYyMBGGD2h0dHA6Ly90ZXN0LzE2MzARhg9odHRw
-+Oi8vdGVzdC8xNjQwEYYPaHR0cDovL3Rlc3QvMTY1MBGGD2h0dHA6Ly90ZXN0LzE2
-+NjARhg9odHRwOi8vdGVzdC8xNjcwEYYPaHR0cDovL3Rlc3QvMTY4MBGGD2h0dHA6
-+Ly90ZXN0LzE2OTARhg9odHRwOi8vdGVzdC8xNzAwEYYPaHR0cDovL3Rlc3QvMTcx
-+MBGGD2h0dHA6Ly90ZXN0LzE3MjARhg9odHRwOi8vdGVzdC8xNzMwEYYPaHR0cDov
-+L3Rlc3QvMTc0MBGGD2h0dHA6Ly90ZXN0LzE3NTARhg9odHRwOi8vdGVzdC8xNzYw
-+EYYPaHR0cDovL3Rlc3QvMTc3MBGGD2h0dHA6Ly90ZXN0LzE3ODARhg9odHRwOi8v
-+dGVzdC8xNzkwEYYPaHR0cDovL3Rlc3QvMTgwMBGGD2h0dHA6Ly90ZXN0LzE4MTAR
-+hg9odHRwOi8vdGVzdC8xODIwEYYPaHR0cDovL3Rlc3QvMTgzMBGGD2h0dHA6Ly90
-+ZXN0LzE4NDARhg9odHRwOi8vdGVzdC8xODUwEYYPaHR0cDovL3Rlc3QvMTg2MBGG
-+D2h0dHA6Ly90ZXN0LzE4NzARhg9odHRwOi8vdGVzdC8xODgwEYYPaHR0cDovL3Rl
-+c3QvMTg5MBGGD2h0dHA6Ly90ZXN0LzE5MDARhg9odHRwOi8vdGVzdC8xOTEwEYYP
-+aHR0cDovL3Rlc3QvMTkyMBGGD2h0dHA6Ly90ZXN0LzE5MzARhg9odHRwOi8vdGVz
-+dC8xOTQwEYYPaHR0cDovL3Rlc3QvMTk1MBGGD2h0dHA6Ly90ZXN0LzE5NjARhg9o
-+dHRwOi8vdGVzdC8xOTcwEYYPaHR0cDovL3Rlc3QvMTk4MBGGD2h0dHA6Ly90ZXN0
-+LzE5OTARhg9odHRwOi8vdGVzdC8yMDAwEYYPaHR0cDovL3Rlc3QvMjAxMBGGD2h0
-+dHA6Ly90ZXN0LzIwMjARhg9odHRwOi8vdGVzdC8yMDMwEYYPaHR0cDovL3Rlc3Qv
-+MjA0MBGGD2h0dHA6Ly90ZXN0LzIwNTARhg9odHRwOi8vdGVzdC8yMDYwEYYPaHR0
-+cDovL3Rlc3QvMjA3MBGGD2h0dHA6Ly90ZXN0LzIwODARhg9odHRwOi8vdGVzdC8y
-+MDkwEYYPaHR0cDovL3Rlc3QvMjEwMBGGD2h0dHA6Ly90ZXN0LzIxMTARhg9odHRw
-+Oi8vdGVzdC8yMTIwEYYPaHR0cDovL3Rlc3QvMjEzMBGGD2h0dHA6Ly90ZXN0LzIx
-+NDARhg9odHRwOi8vdGVzdC8yMTUwEYYPaHR0cDovL3Rlc3QvMjE2MBGGD2h0dHA6
-+Ly90ZXN0LzIxNzARhg9odHRwOi8vdGVzdC8yMTgwEYYPaHR0cDovL3Rlc3QvMjE5
-+MBGGD2h0dHA6Ly90ZXN0LzIyMDARhg9odHRwOi8vdGVzdC8yMjEwEYYPaHR0cDov
-+L3Rlc3QvMjIyMBGGD2h0dHA6Ly90ZXN0LzIyMzARhg9odHRwOi8vdGVzdC8yMjQw
-+EYYPaHR0cDovL3Rlc3QvMjI1MBGGD2h0dHA6Ly90ZXN0LzIyNjARhg9odHRwOi8v
-+dGVzdC8yMjcwEYYPaHR0cDovL3Rlc3QvMjI4MBGGD2h0dHA6Ly90ZXN0LzIyOTAR
-+hg9odHRwOi8vdGVzdC8yMzAwEYYPaHR0cDovL3Rlc3QvMjMxMBGGD2h0dHA6Ly90
-+ZXN0LzIzMjARhg9odHRwOi8vdGVzdC8yMzMwEYYPaHR0cDovL3Rlc3QvMjM0MBGG
-+D2h0dHA6Ly90ZXN0LzIzNTARhg9odHRwOi8vdGVzdC8yMzYwEYYPaHR0cDovL3Rl
-+c3QvMjM3MBGGD2h0dHA6Ly90ZXN0LzIzODARhg9odHRwOi8vdGVzdC8yMzkwEYYP
-+aHR0cDovL3Rlc3QvMjQwMBGGD2h0dHA6Ly90ZXN0LzI0MTARhg9odHRwOi8vdGVz
-+dC8yNDIwEYYPaHR0cDovL3Rlc3QvMjQzMBGGD2h0dHA6Ly90ZXN0LzI0NDARhg9o
-+dHRwOi8vdGVzdC8yNDUwEYYPaHR0cDovL3Rlc3QvMjQ2MBGGD2h0dHA6Ly90ZXN0
-+LzI0NzARhg9odHRwOi8vdGVzdC8yNDgwEYYPaHR0cDovL3Rlc3QvMjQ5MBGGD2h0
-+dHA6Ly90ZXN0LzI1MDARhg9odHRwOi8vdGVzdC8yNTEwEYYPaHR0cDovL3Rlc3Qv
-+MjUyMBGGD2h0dHA6Ly90ZXN0LzI1MzARhg9odHRwOi8vdGVzdC8yNTQwEYYPaHR0
-+cDovL3Rlc3QvMjU1MBGGD2h0dHA6Ly90ZXN0LzI1NjARhg9odHRwOi8vdGVzdC8y
-+NTcwEYYPaHR0cDovL3Rlc3QvMjU4MBGGD2h0dHA6Ly90ZXN0LzI1OTARhg9odHRw
-+Oi8vdGVzdC8yNjAwEYYPaHR0cDovL3Rlc3QvMjYxMBGGD2h0dHA6Ly90ZXN0LzI2
-+MjARhg9odHRwOi8vdGVzdC8yNjMwEYYPaHR0cDovL3Rlc3QvMjY0MBGGD2h0dHA6
-+Ly90ZXN0LzI2NTARhg9odHRwOi8vdGVzdC8yNjYwEYYPaHR0cDovL3Rlc3QvMjY3
-+MBGGD2h0dHA6Ly90ZXN0LzI2ODARhg9odHRwOi8vdGVzdC8yNjkwEYYPaHR0cDov
-+L3Rlc3QvMjcwMBGGD2h0dHA6Ly90ZXN0LzI3MTARhg9odHRwOi8vdGVzdC8yNzIw
-+EYYPaHR0cDovL3Rlc3QvMjczMBGGD2h0dHA6Ly90ZXN0LzI3NDARhg9odHRwOi8v
-+dGVzdC8yNzUwEYYPaHR0cDovL3Rlc3QvMjc2MBGGD2h0dHA6Ly90ZXN0LzI3NzAR
-+hg9odHRwOi8vdGVzdC8yNzgwEYYPaHR0cDovL3Rlc3QvMjc5MBGGD2h0dHA6Ly90
-+ZXN0LzI4MDARhg9odHRwOi8vdGVzdC8yODEwEYYPaHR0cDovL3Rlc3QvMjgyMBGG
-+D2h0dHA6Ly90ZXN0LzI4MzARhg9odHRwOi8vdGVzdC8yODQwEYYPaHR0cDovL3Rl
-+c3QvMjg1MBGGD2h0dHA6Ly90ZXN0LzI4NjARhg9odHRwOi8vdGVzdC8yODcwEYYP
-+aHR0cDovL3Rlc3QvMjg4MBGGD2h0dHA6Ly90ZXN0LzI4OTARhg9odHRwOi8vdGVz
-+dC8yOTAwEYYPaHR0cDovL3Rlc3QvMjkxMBGGD2h0dHA6Ly90ZXN0LzI5MjARhg9o
-+dHRwOi8vdGVzdC8yOTMwEYYPaHR0cDovL3Rlc3QvMjk0MBGGD2h0dHA6Ly90ZXN0
-+LzI5NTARhg9odHRwOi8vdGVzdC8yOTYwEYYPaHR0cDovL3Rlc3QvMjk3MBGGD2h0
-+dHA6Ly90ZXN0LzI5ODARhg9odHRwOi8vdGVzdC8yOTkwEYYPaHR0cDovL3Rlc3Qv
-+MzAwMBGGD2h0dHA6Ly90ZXN0LzMwMTARhg9odHRwOi8vdGVzdC8zMDIwEYYPaHR0
-+cDovL3Rlc3QvMzAzMBGGD2h0dHA6Ly90ZXN0LzMwNDARhg9odHRwOi8vdGVzdC8z
-+MDUwEYYPaHR0cDovL3Rlc3QvMzA2MBGGD2h0dHA6Ly90ZXN0LzMwNzARhg9odHRw
-+Oi8vdGVzdC8zMDgwEYYPaHR0cDovL3Rlc3QvMzA5MBGGD2h0dHA6Ly90ZXN0LzMx
-+MDARhg9odHRwOi8vdGVzdC8zMTEwEYYPaHR0cDovL3Rlc3QvMzEyMBGGD2h0dHA6
-+Ly90ZXN0LzMxMzARhg9odHRwOi8vdGVzdC8zMTQwEYYPaHR0cDovL3Rlc3QvMzE1
-+MBGGD2h0dHA6Ly90ZXN0LzMxNjARhg9odHRwOi8vdGVzdC8zMTcwEYYPaHR0cDov
-+L3Rlc3QvMzE4MBGGD2h0dHA6Ly90ZXN0LzMxOTARhg9odHRwOi8vdGVzdC8zMjAw
-+EYYPaHR0cDovL3Rlc3QvMzIxMBGGD2h0dHA6Ly90ZXN0LzMyMjARhg9odHRwOi8v
-+dGVzdC8zMjMwEYYPaHR0cDovL3Rlc3QvMzI0MBGGD2h0dHA6Ly90ZXN0LzMyNTAR
-+hg9odHRwOi8vdGVzdC8zMjYwEYYPaHR0cDovL3Rlc3QvMzI3MBGGD2h0dHA6Ly90
-+ZXN0LzMyODARhg9odHRwOi8vdGVzdC8zMjkwEYYPaHR0cDovL3Rlc3QvMzMwMBGG
-+D2h0dHA6Ly90ZXN0LzMzMTARhg9odHRwOi8vdGVzdC8zMzIwEYYPaHR0cDovL3Rl
-+c3QvMzMzMBGGD2h0dHA6Ly90ZXN0LzMzNDARhg9odHRwOi8vdGVzdC8zMzUwEYYP
-+aHR0cDovL3Rlc3QvMzM2MBGGD2h0dHA6Ly90ZXN0LzMzNzARhg9odHRwOi8vdGVz
-+dC8zMzgwEYYPaHR0cDovL3Rlc3QvMzM5MBGGD2h0dHA6Ly90ZXN0LzM0MDARhg9o
-+dHRwOi8vdGVzdC8zNDEwEYYPaHR0cDovL3Rlc3QvMzQyMBGGD2h0dHA6Ly90ZXN0
-+LzM0MzARhg9odHRwOi8vdGVzdC8zNDQwEYYPaHR0cDovL3Rlc3QvMzQ1MBGGD2h0
-+dHA6Ly90ZXN0LzM0NjARhg9odHRwOi8vdGVzdC8zNDcwEYYPaHR0cDovL3Rlc3Qv
-+MzQ4MBGGD2h0dHA6Ly90ZXN0LzM0OTARhg9odHRwOi8vdGVzdC8zNTAwEYYPaHR0
-+cDovL3Rlc3QvMzUxMBGGD2h0dHA6Ly90ZXN0LzM1MjARhg9odHRwOi8vdGVzdC8z
-+NTMwEYYPaHR0cDovL3Rlc3QvMzU0MBGGD2h0dHA6Ly90ZXN0LzM1NTARhg9odHRw
-+Oi8vdGVzdC8zNTYwEYYPaHR0cDovL3Rlc3QvMzU3MBGGD2h0dHA6Ly90ZXN0LzM1
-+ODARhg9odHRwOi8vdGVzdC8zNTkwEYYPaHR0cDovL3Rlc3QvMzYwMBGGD2h0dHA6
-+Ly90ZXN0LzM2MTARhg9odHRwOi8vdGVzdC8zNjIwEYYPaHR0cDovL3Rlc3QvMzYz
-+MBGGD2h0dHA6Ly90ZXN0LzM2NDARhg9odHRwOi8vdGVzdC8zNjUwEYYPaHR0cDov
-+L3Rlc3QvMzY2MBGGD2h0dHA6Ly90ZXN0LzM2NzARhg9odHRwOi8vdGVzdC8zNjgw
-+EYYPaHR0cDovL3Rlc3QvMzY5MBGGD2h0dHA6Ly90ZXN0LzM3MDARhg9odHRwOi8v
-+dGVzdC8zNzEwEYYPaHR0cDovL3Rlc3QvMzcyMBGGD2h0dHA6Ly90ZXN0LzM3MzAR
-+hg9odHRwOi8vdGVzdC8zNzQwEYYPaHR0cDovL3Rlc3QvMzc1MBGGD2h0dHA6Ly90
-+ZXN0LzM3NjARhg9odHRwOi8vdGVzdC8zNzcwEYYPaHR0cDovL3Rlc3QvMzc4MBGG
-+D2h0dHA6Ly90ZXN0LzM3OTARhg9odHRwOi8vdGVzdC8zODAwEYYPaHR0cDovL3Rl
-+c3QvMzgxMBGGD2h0dHA6Ly90ZXN0LzM4MjARhg9odHRwOi8vdGVzdC8zODMwEYYP
-+aHR0cDovL3Rlc3QvMzg0MBGGD2h0dHA6Ly90ZXN0LzM4NTARhg9odHRwOi8vdGVz
-+dC8zODYwEYYPaHR0cDovL3Rlc3QvMzg3MBGGD2h0dHA6Ly90ZXN0LzM4ODARhg9o
-+dHRwOi8vdGVzdC8zODkwEYYPaHR0cDovL3Rlc3QvMzkwMBGGD2h0dHA6Ly90ZXN0
-+LzM5MTARhg9odHRwOi8vdGVzdC8zOTIwEYYPaHR0cDovL3Rlc3QvMzkzMBGGD2h0
-+dHA6Ly90ZXN0LzM5NDARhg9odHRwOi8vdGVzdC8zOTUwEYYPaHR0cDovL3Rlc3Qv
-+Mzk2MBGGD2h0dHA6Ly90ZXN0LzM5NzARhg9odHRwOi8vdGVzdC8zOTgwEYYPaHR0
-+cDovL3Rlc3QvMzk5MBGGD2h0dHA6Ly90ZXN0LzQwMDARhg9odHRwOi8vdGVzdC80
-+MDEwEYYPaHR0cDovL3Rlc3QvNDAyMBGGD2h0dHA6Ly90ZXN0LzQwMzARhg9odHRw
-+Oi8vdGVzdC80MDQwEYYPaHR0cDovL3Rlc3QvNDA1MBGGD2h0dHA6Ly90ZXN0LzQw
-+NjARhg9odHRwOi8vdGVzdC80MDcwEYYPaHR0cDovL3Rlc3QvNDA4MBGGD2h0dHA6
-+Ly90ZXN0LzQwOTARhg9odHRwOi8vdGVzdC80MTAwEYYPaHR0cDovL3Rlc3QvNDEx
-+MBGGD2h0dHA6Ly90ZXN0LzQxMjARhg9odHRwOi8vdGVzdC80MTMwEYYPaHR0cDov
-+L3Rlc3QvNDE0MBGGD2h0dHA6Ly90ZXN0LzQxNTARhg9odHRwOi8vdGVzdC80MTYw
-+EYYPaHR0cDovL3Rlc3QvNDE3MBGGD2h0dHA6Ly90ZXN0LzQxODARhg9odHRwOi8v
-+dGVzdC80MTkwEYYPaHR0cDovL3Rlc3QvNDIwMBGGD2h0dHA6Ly90ZXN0LzQyMTAR
-+hg9odHRwOi8vdGVzdC80MjIwEYYPaHR0cDovL3Rlc3QvNDIzMBGGD2h0dHA6Ly90
-+ZXN0LzQyNDARhg9odHRwOi8vdGVzdC80MjUwEYYPaHR0cDovL3Rlc3QvNDI2MBGG
-+D2h0dHA6Ly90ZXN0LzQyNzARhg9odHRwOi8vdGVzdC80MjgwEYYPaHR0cDovL3Rl
-+c3QvNDI5MBGGD2h0dHA6Ly90ZXN0LzQzMDARhg9odHRwOi8vdGVzdC80MzEwEYYP
-+aHR0cDovL3Rlc3QvNDMyMBGGD2h0dHA6Ly90ZXN0LzQzMzARhg9odHRwOi8vdGVz
-+dC80MzQwEYYPaHR0cDovL3Rlc3QvNDM1MBGGD2h0dHA6Ly90ZXN0LzQzNjARhg9o
-+dHRwOi8vdGVzdC80MzcwEYYPaHR0cDovL3Rlc3QvNDM4MBGGD2h0dHA6Ly90ZXN0
-+LzQzOTARhg9odHRwOi8vdGVzdC80NDAwEYYPaHR0cDovL3Rlc3QvNDQxMBGGD2h0
-+dHA6Ly90ZXN0LzQ0MjARhg9odHRwOi8vdGVzdC80NDMwEYYPaHR0cDovL3Rlc3Qv
-+NDQ0MBGGD2h0dHA6Ly90ZXN0LzQ0NTARhg9odHRwOi8vdGVzdC80NDYwEYYPaHR0
-+cDovL3Rlc3QvNDQ3MBGGD2h0dHA6Ly90ZXN0LzQ0ODARhg9odHRwOi8vdGVzdC80
-+NDkwEYYPaHR0cDovL3Rlc3QvNDUwMBGGD2h0dHA6Ly90ZXN0LzQ1MTARhg9odHRw
-+Oi8vdGVzdC80NTIwEYYPaHR0cDovL3Rlc3QvNDUzMBGGD2h0dHA6Ly90ZXN0LzQ1
-+NDARhg9odHRwOi8vdGVzdC80NTUwEYYPaHR0cDovL3Rlc3QvNDU2MBGGD2h0dHA6
-+Ly90ZXN0LzQ1NzARhg9odHRwOi8vdGVzdC80NTgwEYYPaHR0cDovL3Rlc3QvNDU5
-+MBGGD2h0dHA6Ly90ZXN0LzQ2MDARhg9odHRwOi8vdGVzdC80NjEwEYYPaHR0cDov
-+L3Rlc3QvNDYyMBGGD2h0dHA6Ly90ZXN0LzQ2MzARhg9odHRwOi8vdGVzdC80NjQw
-+EYYPaHR0cDovL3Rlc3QvNDY1MBGGD2h0dHA6Ly90ZXN0LzQ2NjARhg9odHRwOi8v
-+dGVzdC80NjcwEYYPaHR0cDovL3Rlc3QvNDY4MBGGD2h0dHA6Ly90ZXN0LzQ2OTAR
-+hg9odHRwOi8vdGVzdC80NzAwEYYPaHR0cDovL3Rlc3QvNDcxMBGGD2h0dHA6Ly90
-+ZXN0LzQ3MjARhg9odHRwOi8vdGVzdC80NzMwEYYPaHR0cDovL3Rlc3QvNDc0MBGG
-+D2h0dHA6Ly90ZXN0LzQ3NTARhg9odHRwOi8vdGVzdC80NzYwEYYPaHR0cDovL3Rl
-+c3QvNDc3MBGGD2h0dHA6Ly90ZXN0LzQ3ODARhg9odHRwOi8vdGVzdC80NzkwEYYP
-+aHR0cDovL3Rlc3QvNDgwMBGGD2h0dHA6Ly90ZXN0LzQ4MTARhg9odHRwOi8vdGVz
-+dC80ODIwEYYPaHR0cDovL3Rlc3QvNDgzMBGGD2h0dHA6Ly90ZXN0LzQ4NDARhg9o
-+dHRwOi8vdGVzdC80ODUwEYYPaHR0cDovL3Rlc3QvNDg2MBGGD2h0dHA6Ly90ZXN0
-+LzQ4NzARhg9odHRwOi8vdGVzdC80ODgwEYYPaHR0cDovL3Rlc3QvNDg5MBGGD2h0
-+dHA6Ly90ZXN0LzQ5MDARhg9odHRwOi8vdGVzdC80OTEwEYYPaHR0cDovL3Rlc3Qv
-+NDkyMBGGD2h0dHA6Ly90ZXN0LzQ5MzARhg9odHRwOi8vdGVzdC80OTQwEYYPaHR0
-+cDovL3Rlc3QvNDk1MBGGD2h0dHA6Ly90ZXN0LzQ5NjARhg9odHRwOi8vdGVzdC80
-+OTcwEYYPaHR0cDovL3Rlc3QvNDk4MBGGD2h0dHA6Ly90ZXN0LzQ5OTARhg9odHRw
-+Oi8vdGVzdC81MDAwEYYPaHR0cDovL3Rlc3QvNTAxMBGGD2h0dHA6Ly90ZXN0LzUw
-+MjARhg9odHRwOi8vdGVzdC81MDMwEYYPaHR0cDovL3Rlc3QvNTA0MBGGD2h0dHA6
-+Ly90ZXN0LzUwNTARhg9odHRwOi8vdGVzdC81MDYwEYYPaHR0cDovL3Rlc3QvNTA3
-+MBGGD2h0dHA6Ly90ZXN0LzUwODARhg9odHRwOi8vdGVzdC81MDkwEYYPaHR0cDov
-+L3Rlc3QvNTEwMBGGD2h0dHA6Ly90ZXN0LzUxMTARhg9odHRwOi8vdGVzdC81MTIw
-+EYYPaHR0cDovL3Rlc3QvNTEzMBGGD2h0dHA6Ly90ZXN0LzUxNDARhg9odHRwOi8v
-+dGVzdC81MTUwEYYPaHR0cDovL3Rlc3QvNTE2MBGGD2h0dHA6Ly90ZXN0LzUxNzAR
-+hg9odHRwOi8vdGVzdC81MTgwEYYPaHR0cDovL3Rlc3QvNTE5MBGGD2h0dHA6Ly90
-+ZXN0LzUyMDARhg9odHRwOi8vdGVzdC81MjEwEYYPaHR0cDovL3Rlc3QvNTIyMBGG
-+D2h0dHA6Ly90ZXN0LzUyMzARhg9odHRwOi8vdGVzdC81MjQwEYYPaHR0cDovL3Rl
-+c3QvNTI1MBGGD2h0dHA6Ly90ZXN0LzUyNjARhg9odHRwOi8vdGVzdC81MjcwEYYP
-+aHR0cDovL3Rlc3QvNTI4MBGGD2h0dHA6Ly90ZXN0LzUyOTARhg9odHRwOi8vdGVz
-+dC81MzAwEYYPaHR0cDovL3Rlc3QvNTMxMBGGD2h0dHA6Ly90ZXN0LzUzMjARhg9o
-+dHRwOi8vdGVzdC81MzMwEYYPaHR0cDovL3Rlc3QvNTM0MBGGD2h0dHA6Ly90ZXN0
-+LzUzNTARhg9odHRwOi8vdGVzdC81MzYwEYYPaHR0cDovL3Rlc3QvNTM3MBGGD2h0
-+dHA6Ly90ZXN0LzUzODARhg9odHRwOi8vdGVzdC81MzkwEYYPaHR0cDovL3Rlc3Qv
-+NTQwMBGGD2h0dHA6Ly90ZXN0LzU0MTARhg9odHRwOi8vdGVzdC81NDIwEYYPaHR0
-+cDovL3Rlc3QvNTQzMBGGD2h0dHA6Ly90ZXN0LzU0NDARhg9odHRwOi8vdGVzdC81
-+NDUwEYYPaHR0cDovL3Rlc3QvNTQ2MBGGD2h0dHA6Ly90ZXN0LzU0NzARhg9odHRw
-+Oi8vdGVzdC81NDgwEYYPaHR0cDovL3Rlc3QvNTQ5MBGGD2h0dHA6Ly90ZXN0LzU1
-+MDARhg9odHRwOi8vdGVzdC81NTEwEYYPaHR0cDovL3Rlc3QvNTUyMBGGD2h0dHA6
-+Ly90ZXN0LzU1MzARhg9odHRwOi8vdGVzdC81NTQwEYYPaHR0cDovL3Rlc3QvNTU1
-+MBGGD2h0dHA6Ly90ZXN0LzU1NjARhg9odHRwOi8vdGVzdC81NTcwEYYPaHR0cDov
-+L3Rlc3QvNTU4MBGGD2h0dHA6Ly90ZXN0LzU1OTARhg9odHRwOi8vdGVzdC81NjAw
-+EYYPaHR0cDovL3Rlc3QvNTYxMBGGD2h0dHA6Ly90ZXN0LzU2MjARhg9odHRwOi8v
-+dGVzdC81NjMwEYYPaHR0cDovL3Rlc3QvNTY0MBGGD2h0dHA6Ly90ZXN0LzU2NTAR
-+hg9odHRwOi8vdGVzdC81NjYwEYYPaHR0cDovL3Rlc3QvNTY3MBGGD2h0dHA6Ly90
-+ZXN0LzU2ODARhg9odHRwOi8vdGVzdC81NjkwEYYPaHR0cDovL3Rlc3QvNTcwMBGG
-+D2h0dHA6Ly90ZXN0LzU3MTARhg9odHRwOi8vdGVzdC81NzIwEYYPaHR0cDovL3Rl
-+c3QvNTczMBGGD2h0dHA6Ly90ZXN0LzU3NDARhg9odHRwOi8vdGVzdC81NzUwEYYP
-+aHR0cDovL3Rlc3QvNTc2MBGGD2h0dHA6Ly90ZXN0LzU3NzARhg9odHRwOi8vdGVz
-+dC81NzgwEYYPaHR0cDovL3Rlc3QvNTc5MBGGD2h0dHA6Ly90ZXN0LzU4MDARhg9o
-+dHRwOi8vdGVzdC81ODEwEYYPaHR0cDovL3Rlc3QvNTgyMBGGD2h0dHA6Ly90ZXN0
-+LzU4MzARhg9odHRwOi8vdGVzdC81ODQwEYYPaHR0cDovL3Rlc3QvNTg1MBGGD2h0
-+dHA6Ly90ZXN0LzU4NjARhg9odHRwOi8vdGVzdC81ODcwEYYPaHR0cDovL3Rlc3Qv
-+NTg4MBGGD2h0dHA6Ly90ZXN0LzU4OTARhg9odHRwOi8vdGVzdC81OTAwEYYPaHR0
-+cDovL3Rlc3QvNTkxMBGGD2h0dHA6Ly90ZXN0LzU5MjARhg9odHRwOi8vdGVzdC81
-+OTMwEYYPaHR0cDovL3Rlc3QvNTk0MBGGD2h0dHA6Ly90ZXN0LzU5NTARhg9odHRw
-+Oi8vdGVzdC81OTYwEYYPaHR0cDovL3Rlc3QvNTk3MBGGD2h0dHA6Ly90ZXN0LzU5
-+ODARhg9odHRwOi8vdGVzdC81OTkwEYYPaHR0cDovL3Rlc3QvNjAwMBGGD2h0dHA6
-+Ly90ZXN0LzYwMTARhg9odHRwOi8vdGVzdC82MDIwEYYPaHR0cDovL3Rlc3QvNjAz
-+MBGGD2h0dHA6Ly90ZXN0LzYwNDARhg9odHRwOi8vdGVzdC82MDUwEYYPaHR0cDov
-+L3Rlc3QvNjA2MBGGD2h0dHA6Ly90ZXN0LzYwNzARhg9odHRwOi8vdGVzdC82MDgw
-+EYYPaHR0cDovL3Rlc3QvNjA5MBGGD2h0dHA6Ly90ZXN0LzYxMDARhg9odHRwOi8v
-+dGVzdC82MTEwEYYPaHR0cDovL3Rlc3QvNjEyMBGGD2h0dHA6Ly90ZXN0LzYxMzAR
-+hg9odHRwOi8vdGVzdC82MTQwEYYPaHR0cDovL3Rlc3QvNjE1MBGGD2h0dHA6Ly90
-+ZXN0LzYxNjARhg9odHRwOi8vdGVzdC82MTcwEYYPaHR0cDovL3Rlc3QvNjE4MBGG
-+D2h0dHA6Ly90ZXN0LzYxOTARhg9odHRwOi8vdGVzdC82MjAwEYYPaHR0cDovL3Rl
-+c3QvNjIxMBGGD2h0dHA6Ly90ZXN0LzYyMjARhg9odHRwOi8vdGVzdC82MjMwEYYP
-+aHR0cDovL3Rlc3QvNjI0MBGGD2h0dHA6Ly90ZXN0LzYyNTARhg9odHRwOi8vdGVz
-+dC82MjYwEYYPaHR0cDovL3Rlc3QvNjI3MBGGD2h0dHA6Ly90ZXN0LzYyODARhg9o
-+dHRwOi8vdGVzdC82MjkwEYYPaHR0cDovL3Rlc3QvNjMwMBGGD2h0dHA6Ly90ZXN0
-+LzYzMTARhg9odHRwOi8vdGVzdC82MzIwEYYPaHR0cDovL3Rlc3QvNjMzMBGGD2h0
-+dHA6Ly90ZXN0LzYzNDARhg9odHRwOi8vdGVzdC82MzUwEYYPaHR0cDovL3Rlc3Qv
-+NjM2MBGGD2h0dHA6Ly90ZXN0LzYzNzARhg9odHRwOi8vdGVzdC82MzgwEYYPaHR0
-+cDovL3Rlc3QvNjM5MBGGD2h0dHA6Ly90ZXN0LzY0MDARhg9odHRwOi8vdGVzdC82
-+NDEwEYYPaHR0cDovL3Rlc3QvNjQyMBGGD2h0dHA6Ly90ZXN0LzY0MzARhg9odHRw
-+Oi8vdGVzdC82NDQwEYYPaHR0cDovL3Rlc3QvNjQ1MBGGD2h0dHA6Ly90ZXN0LzY0
-+NjARhg9odHRwOi8vdGVzdC82NDcwEYYPaHR0cDovL3Rlc3QvNjQ4MBGGD2h0dHA6
-+Ly90ZXN0LzY0OTARhg9odHRwOi8vdGVzdC82NTAwEYYPaHR0cDovL3Rlc3QvNjUx
-+MBGGD2h0dHA6Ly90ZXN0LzY1MjARhg9odHRwOi8vdGVzdC82NTMwEYYPaHR0cDov
-+L3Rlc3QvNjU0MBGGD2h0dHA6Ly90ZXN0LzY1NTARhg9odHRwOi8vdGVzdC82NTYw
-+EYYPaHR0cDovL3Rlc3QvNjU3MBGGD2h0dHA6Ly90ZXN0LzY1ODARhg9odHRwOi8v
-+dGVzdC82NTkwEYYPaHR0cDovL3Rlc3QvNjYwMBGGD2h0dHA6Ly90ZXN0LzY2MTAR
-+hg9odHRwOi8vdGVzdC82NjIwEYYPaHR0cDovL3Rlc3QvNjYzMBGGD2h0dHA6Ly90
-+ZXN0LzY2NDARhg9odHRwOi8vdGVzdC82NjUwEYYPaHR0cDovL3Rlc3QvNjY2MBGG
-+D2h0dHA6Ly90ZXN0LzY2NzARhg9odHRwOi8vdGVzdC82NjgwEYYPaHR0cDovL3Rl
-+c3QvNjY5MBGGD2h0dHA6Ly90ZXN0LzY3MDARhg9odHRwOi8vdGVzdC82NzEwEYYP
-+aHR0cDovL3Rlc3QvNjcyMBGGD2h0dHA6Ly90ZXN0LzY3MzARhg9odHRwOi8vdGVz
-+dC82NzQwEYYPaHR0cDovL3Rlc3QvNjc1MBGGD2h0dHA6Ly90ZXN0LzY3NjARhg9o
-+dHRwOi8vdGVzdC82NzcwEYYPaHR0cDovL3Rlc3QvNjc4MBGGD2h0dHA6Ly90ZXN0
-+LzY3OTARhg9odHRwOi8vdGVzdC82ODAwEYYPaHR0cDovL3Rlc3QvNjgxMBGGD2h0
-+dHA6Ly90ZXN0LzY4MjARhg9odHRwOi8vdGVzdC82ODMwEYYPaHR0cDovL3Rlc3Qv
-+Njg0MBGGD2h0dHA6Ly90ZXN0LzY4NTARhg9odHRwOi8vdGVzdC82ODYwEYYPaHR0
-+cDovL3Rlc3QvNjg3MBGGD2h0dHA6Ly90ZXN0LzY4ODARhg9odHRwOi8vdGVzdC82
-+ODkwEYYPaHR0cDovL3Rlc3QvNjkwMBGGD2h0dHA6Ly90ZXN0LzY5MTARhg9odHRw
-+Oi8vdGVzdC82OTIwEYYPaHR0cDovL3Rlc3QvNjkzMBGGD2h0dHA6Ly90ZXN0LzY5
-+NDARhg9odHRwOi8vdGVzdC82OTUwEYYPaHR0cDovL3Rlc3QvNjk2MBGGD2h0dHA6
-+Ly90ZXN0LzY5NzARhg9odHRwOi8vdGVzdC82OTgwEYYPaHR0cDovL3Rlc3QvNjk5
-+MBGGD2h0dHA6Ly90ZXN0LzcwMDARhg9odHRwOi8vdGVzdC83MDEwEYYPaHR0cDov
-+L3Rlc3QvNzAyMBGGD2h0dHA6Ly90ZXN0LzcwMzARhg9odHRwOi8vdGVzdC83MDQw
-+EYYPaHR0cDovL3Rlc3QvNzA1MBGGD2h0dHA6Ly90ZXN0LzcwNjARhg9odHRwOi8v
-+dGVzdC83MDcwEYYPaHR0cDovL3Rlc3QvNzA4MBGGD2h0dHA6Ly90ZXN0LzcwOTAR
-+hg9odHRwOi8vdGVzdC83MTAwEYYPaHR0cDovL3Rlc3QvNzExMBGGD2h0dHA6Ly90
-+ZXN0LzcxMjARhg9odHRwOi8vdGVzdC83MTMwEYYPaHR0cDovL3Rlc3QvNzE0MBGG
-+D2h0dHA6Ly90ZXN0LzcxNTARhg9odHRwOi8vdGVzdC83MTYwEYYPaHR0cDovL3Rl
-+c3QvNzE3MBGGD2h0dHA6Ly90ZXN0LzcxODARhg9odHRwOi8vdGVzdC83MTkwEYYP
-+aHR0cDovL3Rlc3QvNzIwMBGGD2h0dHA6Ly90ZXN0LzcyMTARhg9odHRwOi8vdGVz
-+dC83MjIwEYYPaHR0cDovL3Rlc3QvNzIzMBGGD2h0dHA6Ly90ZXN0LzcyNDARhg9o
-+dHRwOi8vdGVzdC83MjUwEYYPaHR0cDovL3Rlc3QvNzI2MBGGD2h0dHA6Ly90ZXN0
-+LzcyNzARhg9odHRwOi8vdGVzdC83MjgwEYYPaHR0cDovL3Rlc3QvNzI5MBGGD2h0
-+dHA6Ly90ZXN0LzczMDARhg9odHRwOi8vdGVzdC83MzEwEYYPaHR0cDovL3Rlc3Qv
-+NzMyMBGGD2h0dHA6Ly90ZXN0LzczMzARhg9odHRwOi8vdGVzdC83MzQwEYYPaHR0
-+cDovL3Rlc3QvNzM1MBGGD2h0dHA6Ly90ZXN0LzczNjARhg9odHRwOi8vdGVzdC83
-+MzcwEYYPaHR0cDovL3Rlc3QvNzM4MBGGD2h0dHA6Ly90ZXN0LzczOTARhg9odHRw
-+Oi8vdGVzdC83NDAwEYYPaHR0cDovL3Rlc3QvNzQxMBGGD2h0dHA6Ly90ZXN0Lzc0
-+MjARhg9odHRwOi8vdGVzdC83NDMwEYYPaHR0cDovL3Rlc3QvNzQ0MBGGD2h0dHA6
-+Ly90ZXN0Lzc0NTARhg9odHRwOi8vdGVzdC83NDYwEYYPaHR0cDovL3Rlc3QvNzQ3
-+MBGGD2h0dHA6Ly90ZXN0Lzc0ODARhg9odHRwOi8vdGVzdC83NDkwEYYPaHR0cDov
-+L3Rlc3QvNzUwMBGGD2h0dHA6Ly90ZXN0Lzc1MTARhg9odHRwOi8vdGVzdC83NTIw
-+EYYPaHR0cDovL3Rlc3QvNzUzMBGGD2h0dHA6Ly90ZXN0Lzc1NDARhg9odHRwOi8v
-+dGVzdC83NTUwEYYPaHR0cDovL3Rlc3QvNzU2MBGGD2h0dHA6Ly90ZXN0Lzc1NzAR
-+hg9odHRwOi8vdGVzdC83NTgwEYYPaHR0cDovL3Rlc3QvNzU5MBGGD2h0dHA6Ly90
-+ZXN0Lzc2MDARhg9odHRwOi8vdGVzdC83NjEwEYYPaHR0cDovL3Rlc3QvNzYyMBGG
-+D2h0dHA6Ly90ZXN0Lzc2MzARhg9odHRwOi8vdGVzdC83NjQwEYYPaHR0cDovL3Rl
-+c3QvNzY1MBGGD2h0dHA6Ly90ZXN0Lzc2NjARhg9odHRwOi8vdGVzdC83NjcwEYYP
-+aHR0cDovL3Rlc3QvNzY4MBGGD2h0dHA6Ly90ZXN0Lzc2OTARhg9odHRwOi8vdGVz
-+dC83NzAwEYYPaHR0cDovL3Rlc3QvNzcxMBGGD2h0dHA6Ly90ZXN0Lzc3MjARhg9o
-+dHRwOi8vdGVzdC83NzMwEYYPaHR0cDovL3Rlc3QvNzc0MBGGD2h0dHA6Ly90ZXN0
-+Lzc3NTARhg9odHRwOi8vdGVzdC83NzYwEYYPaHR0cDovL3Rlc3QvNzc3MBGGD2h0
-+dHA6Ly90ZXN0Lzc3ODARhg9odHRwOi8vdGVzdC83NzkwEYYPaHR0cDovL3Rlc3Qv
-+NzgwMBGGD2h0dHA6Ly90ZXN0Lzc4MTARhg9odHRwOi8vdGVzdC83ODIwEYYPaHR0
-+cDovL3Rlc3QvNzgzMBGGD2h0dHA6Ly90ZXN0Lzc4NDARhg9odHRwOi8vdGVzdC83
-+ODUwEYYPaHR0cDovL3Rlc3QvNzg2MBGGD2h0dHA6Ly90ZXN0Lzc4NzARhg9odHRw
-+Oi8vdGVzdC83ODgwEYYPaHR0cDovL3Rlc3QvNzg5MBGGD2h0dHA6Ly90ZXN0Lzc5
-+MDARhg9odHRwOi8vdGVzdC83OTEwEYYPaHR0cDovL3Rlc3QvNzkyMBGGD2h0dHA6
-+Ly90ZXN0Lzc5MzARhg9odHRwOi8vdGVzdC83OTQwEYYPaHR0cDovL3Rlc3QvNzk1
-+MBGGD2h0dHA6Ly90ZXN0Lzc5NjARhg9odHRwOi8vdGVzdC83OTcwEYYPaHR0cDov
-+L3Rlc3QvNzk4MBGGD2h0dHA6Ly90ZXN0Lzc5OTARhg9odHRwOi8vdGVzdC84MDAw
-+EYYPaHR0cDovL3Rlc3QvODAxMBGGD2h0dHA6Ly90ZXN0LzgwMjARhg9odHRwOi8v
-+dGVzdC84MDMwEYYPaHR0cDovL3Rlc3QvODA0MBGGD2h0dHA6Ly90ZXN0LzgwNTAR
-+hg9odHRwOi8vdGVzdC84MDYwEYYPaHR0cDovL3Rlc3QvODA3MBGGD2h0dHA6Ly90
-+ZXN0LzgwODARhg9odHRwOi8vdGVzdC84MDkwEYYPaHR0cDovL3Rlc3QvODEwMBGG
-+D2h0dHA6Ly90ZXN0LzgxMTARhg9odHRwOi8vdGVzdC84MTIwEYYPaHR0cDovL3Rl
-+c3QvODEzMBGGD2h0dHA6Ly90ZXN0LzgxNDARhg9odHRwOi8vdGVzdC84MTUwEYYP
-+aHR0cDovL3Rlc3QvODE2MBGGD2h0dHA6Ly90ZXN0LzgxNzARhg9odHRwOi8vdGVz
-+dC84MTgwEYYPaHR0cDovL3Rlc3QvODE5MBGGD2h0dHA6Ly90ZXN0LzgyMDARhg9o
-+dHRwOi8vdGVzdC84MjEwEYYPaHR0cDovL3Rlc3QvODIyMBGGD2h0dHA6Ly90ZXN0
-+LzgyMzARhg9odHRwOi8vdGVzdC84MjQwEYYPaHR0cDovL3Rlc3QvODI1MBGGD2h0
-+dHA6Ly90ZXN0LzgyNjARhg9odHRwOi8vdGVzdC84MjcwEYYPaHR0cDovL3Rlc3Qv
-+ODI4MBGGD2h0dHA6Ly90ZXN0LzgyOTARhg9odHRwOi8vdGVzdC84MzAwEYYPaHR0
-+cDovL3Rlc3QvODMxMBGGD2h0dHA6Ly90ZXN0LzgzMjARhg9odHRwOi8vdGVzdC84
-+MzMwEYYPaHR0cDovL3Rlc3QvODM0MBGGD2h0dHA6Ly90ZXN0LzgzNTARhg9odHRw
-+Oi8vdGVzdC84MzYwEYYPaHR0cDovL3Rlc3QvODM3MBGGD2h0dHA6Ly90ZXN0Lzgz
-+ODARhg9odHRwOi8vdGVzdC84MzkwEYYPaHR0cDovL3Rlc3QvODQwMBGGD2h0dHA6
-+Ly90ZXN0Lzg0MTARhg9odHRwOi8vdGVzdC84NDIwEYYPaHR0cDovL3Rlc3QvODQz
-+MBGGD2h0dHA6Ly90ZXN0Lzg0NDARhg9odHRwOi8vdGVzdC84NDUwEYYPaHR0cDov
-+L3Rlc3QvODQ2MBGGD2h0dHA6Ly90ZXN0Lzg0NzARhg9odHRwOi8vdGVzdC84NDgw
-+EYYPaHR0cDovL3Rlc3QvODQ5MBGGD2h0dHA6Ly90ZXN0Lzg1MDARhg9odHRwOi8v
-+dGVzdC84NTEwEYYPaHR0cDovL3Rlc3QvODUyMBGGD2h0dHA6Ly90ZXN0Lzg1MzAR
-+hg9odHRwOi8vdGVzdC84NTQwEYYPaHR0cDovL3Rlc3QvODU1MBGGD2h0dHA6Ly90
-+ZXN0Lzg1NjARhg9odHRwOi8vdGVzdC84NTcwEYYPaHR0cDovL3Rlc3QvODU4MBGG
-+D2h0dHA6Ly90ZXN0Lzg1OTARhg9odHRwOi8vdGVzdC84NjAwEYYPaHR0cDovL3Rl
-+c3QvODYxMBGGD2h0dHA6Ly90ZXN0Lzg2MjARhg9odHRwOi8vdGVzdC84NjMwEYYP
-+aHR0cDovL3Rlc3QvODY0MBGGD2h0dHA6Ly90ZXN0Lzg2NTARhg9odHRwOi8vdGVz
-+dC84NjYwEYYPaHR0cDovL3Rlc3QvODY3MBGGD2h0dHA6Ly90ZXN0Lzg2ODARhg9o
-+dHRwOi8vdGVzdC84NjkwEYYPaHR0cDovL3Rlc3QvODcwMBGGD2h0dHA6Ly90ZXN0
-+Lzg3MTARhg9odHRwOi8vdGVzdC84NzIwEYYPaHR0cDovL3Rlc3QvODczMBGGD2h0
-+dHA6Ly90ZXN0Lzg3NDARhg9odHRwOi8vdGVzdC84NzUwEYYPaHR0cDovL3Rlc3Qv
-+ODc2MBGGD2h0dHA6Ly90ZXN0Lzg3NzARhg9odHRwOi8vdGVzdC84NzgwEYYPaHR0
-+cDovL3Rlc3QvODc5MBGGD2h0dHA6Ly90ZXN0Lzg4MDARhg9odHRwOi8vdGVzdC84
-+ODEwEYYPaHR0cDovL3Rlc3QvODgyMBGGD2h0dHA6Ly90ZXN0Lzg4MzARhg9odHRw
-+Oi8vdGVzdC84ODQwEYYPaHR0cDovL3Rlc3QvODg1MBGGD2h0dHA6Ly90ZXN0Lzg4
-+NjARhg9odHRwOi8vdGVzdC84ODcwEYYPaHR0cDovL3Rlc3QvODg4MBGGD2h0dHA6
-+Ly90ZXN0Lzg4OTARhg9odHRwOi8vdGVzdC84OTAwEYYPaHR0cDovL3Rlc3QvODkx
-+MBGGD2h0dHA6Ly90ZXN0Lzg5MjARhg9odHRwOi8vdGVzdC84OTMwEYYPaHR0cDov
-+L3Rlc3QvODk0MBGGD2h0dHA6Ly90ZXN0Lzg5NTARhg9odHRwOi8vdGVzdC84OTYw
-+EYYPaHR0cDovL3Rlc3QvODk3MBGGD2h0dHA6Ly90ZXN0Lzg5ODARhg9odHRwOi8v
-+dGVzdC84OTkwEYYPaHR0cDovL3Rlc3QvOTAwMBGGD2h0dHA6Ly90ZXN0LzkwMTAR
-+hg9odHRwOi8vdGVzdC85MDIwEYYPaHR0cDovL3Rlc3QvOTAzMBGGD2h0dHA6Ly90
-+ZXN0LzkwNDARhg9odHRwOi8vdGVzdC85MDUwEYYPaHR0cDovL3Rlc3QvOTA2MBGG
-+D2h0dHA6Ly90ZXN0LzkwNzARhg9odHRwOi8vdGVzdC85MDgwEYYPaHR0cDovL3Rl
-+c3QvOTA5MBGGD2h0dHA6Ly90ZXN0LzkxMDARhg9odHRwOi8vdGVzdC85MTEwEYYP
-+aHR0cDovL3Rlc3QvOTEyMBGGD2h0dHA6Ly90ZXN0LzkxMzARhg9odHRwOi8vdGVz
-+dC85MTQwEYYPaHR0cDovL3Rlc3QvOTE1MBGGD2h0dHA6Ly90ZXN0LzkxNjARhg9o
-+dHRwOi8vdGVzdC85MTcwEYYPaHR0cDovL3Rlc3QvOTE4MBGGD2h0dHA6Ly90ZXN0
-+LzkxOTARhg9odHRwOi8vdGVzdC85MjAwEYYPaHR0cDovL3Rlc3QvOTIxMBGGD2h0
-+dHA6Ly90ZXN0LzkyMjARhg9odHRwOi8vdGVzdC85MjMwEYYPaHR0cDovL3Rlc3Qv
-+OTI0MBGGD2h0dHA6Ly90ZXN0LzkyNTARhg9odHRwOi8vdGVzdC85MjYwEYYPaHR0
-+cDovL3Rlc3QvOTI3MBGGD2h0dHA6Ly90ZXN0LzkyODARhg9odHRwOi8vdGVzdC85
-+MjkwEYYPaHR0cDovL3Rlc3QvOTMwMBGGD2h0dHA6Ly90ZXN0LzkzMTARhg9odHRw
-+Oi8vdGVzdC85MzIwEYYPaHR0cDovL3Rlc3QvOTMzMBGGD2h0dHA6Ly90ZXN0Lzkz
-+NDARhg9odHRwOi8vdGVzdC85MzUwEYYPaHR0cDovL3Rlc3QvOTM2MBGGD2h0dHA6
-+Ly90ZXN0LzkzNzARhg9odHRwOi8vdGVzdC85MzgwEYYPaHR0cDovL3Rlc3QvOTM5
-+MBGGD2h0dHA6Ly90ZXN0Lzk0MDARhg9odHRwOi8vdGVzdC85NDEwEYYPaHR0cDov
-+L3Rlc3QvOTQyMBGGD2h0dHA6Ly90ZXN0Lzk0MzARhg9odHRwOi8vdGVzdC85NDQw
-+EYYPaHR0cDovL3Rlc3QvOTQ1MBGGD2h0dHA6Ly90ZXN0Lzk0NjARhg9odHRwOi8v
-+dGVzdC85NDcwEYYPaHR0cDovL3Rlc3QvOTQ4MBGGD2h0dHA6Ly90ZXN0Lzk0OTAR
-+hg9odHRwOi8vdGVzdC85NTAwEYYPaHR0cDovL3Rlc3QvOTUxMBGGD2h0dHA6Ly90
-+ZXN0Lzk1MjARhg9odHRwOi8vdGVzdC85NTMwEYYPaHR0cDovL3Rlc3QvOTU0MBGG
-+D2h0dHA6Ly90ZXN0Lzk1NTARhg9odHRwOi8vdGVzdC85NTYwEYYPaHR0cDovL3Rl
-+c3QvOTU3MBGGD2h0dHA6Ly90ZXN0Lzk1ODARhg9odHRwOi8vdGVzdC85NTkwEYYP
-+aHR0cDovL3Rlc3QvOTYwMBGGD2h0dHA6Ly90ZXN0Lzk2MTARhg9odHRwOi8vdGVz
-+dC85NjIwEYYPaHR0cDovL3Rlc3QvOTYzMBGGD2h0dHA6Ly90ZXN0Lzk2NDARhg9o
-+dHRwOi8vdGVzdC85NjUwEYYPaHR0cDovL3Rlc3QvOTY2MBGGD2h0dHA6Ly90ZXN0
-+Lzk2NzARhg9odHRwOi8vdGVzdC85NjgwEYYPaHR0cDovL3Rlc3QvOTY5MBGGD2h0
-+dHA6Ly90ZXN0Lzk3MDARhg9odHRwOi8vdGVzdC85NzEwEYYPaHR0cDovL3Rlc3Qv
-+OTcyMBGGD2h0dHA6Ly90ZXN0Lzk3MzARhg9odHRwOi8vdGVzdC85NzQwEYYPaHR0
-+cDovL3Rlc3QvOTc1MBGGD2h0dHA6Ly90ZXN0Lzk3NjARhg9odHRwOi8vdGVzdC85
-+NzcwEYYPaHR0cDovL3Rlc3QvOTc4MBGGD2h0dHA6Ly90ZXN0Lzk3OTARhg9odHRw
-+Oi8vdGVzdC85ODAwEYYPaHR0cDovL3Rlc3QvOTgxMBGGD2h0dHA6Ly90ZXN0Lzk4
-+MjARhg9odHRwOi8vdGVzdC85ODMwEYYPaHR0cDovL3Rlc3QvOTg0MBGGD2h0dHA6
-+Ly90ZXN0Lzk4NTARhg9odHRwOi8vdGVzdC85ODYwEYYPaHR0cDovL3Rlc3QvOTg3
-+MBGGD2h0dHA6Ly90ZXN0Lzk4ODARhg9odHRwOi8vdGVzdC85ODkwEYYPaHR0cDov
-+L3Rlc3QvOTkwMBGGD2h0dHA6Ly90ZXN0Lzk5MTARhg9odHRwOi8vdGVzdC85OTIw
-+EYYPaHR0cDovL3Rlc3QvOTkzMBGGD2h0dHA6Ly90ZXN0Lzk5NDARhg9odHRwOi8v
-+dGVzdC85OTUwEYYPaHR0cDovL3Rlc3QvOTk2MBGGD2h0dHA6Ly90ZXN0Lzk5NzAR
-+hg9odHRwOi8vdGVzdC85OTgwEYYPaHR0cDovL3Rlc3QvOTk5MBKGEGh0dHA6Ly90
-+ZXN0LzEwMDAwEoYQaHR0cDovL3Rlc3QvMTAwMTAShhBodHRwOi8vdGVzdC8xMDAy
-+MBKGEGh0dHA6Ly90ZXN0LzEwMDMwEoYQaHR0cDovL3Rlc3QvMTAwNDAShhBodHRw
-+Oi8vdGVzdC8xMDA1MBKGEGh0dHA6Ly90ZXN0LzEwMDYwEoYQaHR0cDovL3Rlc3Qv
-+MTAwNzAShhBodHRwOi8vdGVzdC8xMDA4MBKGEGh0dHA6Ly90ZXN0LzEwMDkwEoYQ
-+aHR0cDovL3Rlc3QvMTAxMDAShhBodHRwOi8vdGVzdC8xMDExMBKGEGh0dHA6Ly90
-+ZXN0LzEwMTIwEoYQaHR0cDovL3Rlc3QvMTAxMzAShhBodHRwOi8vdGVzdC8xMDE0
-+MBKGEGh0dHA6Ly90ZXN0LzEwMTUwEoYQaHR0cDovL3Rlc3QvMTAxNjAShhBodHRw
-+Oi8vdGVzdC8xMDE3MBKGEGh0dHA6Ly90ZXN0LzEwMTgwEoYQaHR0cDovL3Rlc3Qv
-+MTAxOTAShhBodHRwOi8vdGVzdC8xMDIwMBKGEGh0dHA6Ly90ZXN0LzEwMjEwEoYQ
-+aHR0cDovL3Rlc3QvMTAyMjAShhBodHRwOi8vdGVzdC8xMDIzMBKGEGh0dHA6Ly90
-+ZXN0LzEwMjShgmluMAmCB3gwLnRlc3QwCYIHeDEudGVzdDAJggd4Mi50ZXN0MAmC
-+B3gzLnRlc3QwCYIHeDQudGVzdDAJggd4NS50ZXN0MAmCB3g2LnRlc3QwCYIHeDcu
-+dGVzdDAJggd4OC50ZXN0MAmCB3g5LnRlc3QwCoIIeDEwLnRlc3QwCoIIeDExLnRl
-+c3QwCoIIeDEyLnRlc3QwCoIIeDEzLnRlc3QwCoIIeDE0LnRlc3QwCoIIeDE1LnRl
-+c3QwCoIIeDE2LnRlc3QwCoIIeDE3LnRlc3QwCoIIeDE4LnRlc3QwCoIIeDE5LnRl
-+c3QwCoIIeDIwLnRlc3QwCoIIeDIxLnRlc3QwCoIIeDIyLnRlc3QwCoIIeDIzLnRl
-+c3QwCoIIeDI0LnRlc3QwCoIIeDI1LnRlc3QwCoIIeDI2LnRlc3QwCoIIeDI3LnRl
-+c3QwCoIIeDI4LnRlc3QwCoIIeDI5LnRlc3QwCoIIeDMwLnRlc3QwCoIIeDMxLnRl
-+c3QwCoIIeDMyLnRlc3QwCoIIeDMzLnRlc3QwCoIIeDM0LnRlc3QwCoIIeDM1LnRl
-+c3QwCoIIeDM2LnRlc3QwCoIIeDM3LnRlc3QwCoIIeDM4LnRlc3QwCoIIeDM5LnRl
-+c3QwCoIIeDQwLnRlc3QwCoIIeDQxLnRlc3QwCoIIeDQyLnRlc3QwCoIIeDQzLnRl
-+c3QwCoIIeDQ0LnRlc3QwCoIIeDQ1LnRlc3QwCoIIeDQ2LnRlc3QwCoIIeDQ3LnRl
-+c3QwCoIIeDQ4LnRlc3QwCoIIeDQ5LnRlc3QwCoIIeDUwLnRlc3QwCoIIeDUxLnRl
-+c3QwCoIIeDUyLnRlc3QwCoIIeDUzLnRlc3QwCoIIeDU0LnRlc3QwCoIIeDU1LnRl
-+c3QwCoIIeDU2LnRlc3QwCoIIeDU3LnRlc3QwCoIIeDU4LnRlc3QwCoIIeDU5LnRl
-+c3QwCoIIeDYwLnRlc3QwCoIIeDYxLnRlc3QwCoIIeDYyLnRlc3QwCoIIeDYzLnRl
-+c3QwCoIIeDY0LnRlc3QwCoIIeDY1LnRlc3QwCoIIeDY2LnRlc3QwCoIIeDY3LnRl
-+c3QwCoIIeDY4LnRlc3QwCoIIeDY5LnRlc3QwCoIIeDcwLnRlc3QwCoIIeDcxLnRl
-+c3QwCoIIeDcyLnRlc3QwCoIIeDczLnRlc3QwCoIIeDc0LnRlc3QwCoIIeDc1LnRl
-+c3QwCoIIeDc2LnRlc3QwCoIIeDc3LnRlc3QwCoIIeDc4LnRlc3QwCoIIeDc5LnRl
-+c3QwCoIIeDgwLnRlc3QwCoIIeDgxLnRlc3QwCoIIeDgyLnRlc3QwCoIIeDgzLnRl
-+c3QwCoIIeDg0LnRlc3QwCoIIeDg1LnRlc3QwCoIIeDg2LnRlc3QwCoIIeDg3LnRl
-+c3QwCoIIeDg4LnRlc3QwCoIIeDg5LnRlc3QwCoIIeDkwLnRlc3QwCoIIeDkxLnRl
-+c3QwCoIIeDkyLnRlc3QwCoIIeDkzLnRlc3QwCoIIeDk0LnRlc3QwCoIIeDk1LnRl
-+c3QwCoIIeDk2LnRlc3QwCoIIeDk3LnRlc3QwCoIIeDk4LnRlc3QwCoIIeDk5LnRl
-+c3QwC4IJeDEwMC50ZXN0MAuCCXgxMDEudGVzdDALggl4MTAyLnRlc3QwC4IJeDEw
-+My50ZXN0MAuCCXgxMDQudGVzdDALggl4MTA1LnRlc3QwC4IJeDEwNi50ZXN0MAuC
-+CXgxMDcudGVzdDALggl4MTA4LnRlc3QwC4IJeDEwOS50ZXN0MAuCCXgxMTAudGVz
-+dDALggl4MTExLnRlc3QwC4IJeDExMi50ZXN0MAuCCXgxMTMudGVzdDALggl4MTE0
-+LnRlc3QwC4IJeDExNS50ZXN0MAuCCXgxMTYudGVzdDALggl4MTE3LnRlc3QwC4IJ
-+eDExOC50ZXN0MAuCCXgxMTkudGVzdDALggl4MTIwLnRlc3QwC4IJeDEyMS50ZXN0
-+MAuCCXgxMjIudGVzdDALggl4MTIzLnRlc3QwC4IJeDEyNC50ZXN0MAuCCXgxMjUu
-+dGVzdDALggl4MTI2LnRlc3QwC4IJeDEyNy50ZXN0MAuCCXgxMjgudGVzdDALggl4
-+MTI5LnRlc3QwC4IJeDEzMC50ZXN0MAuCCXgxMzEudGVzdDALggl4MTMyLnRlc3Qw
-+C4IJeDEzMy50ZXN0MAuCCXgxMzQudGVzdDALggl4MTM1LnRlc3QwC4IJeDEzNi50
-+ZXN0MAuCCXgxMzcudGVzdDALggl4MTM4LnRlc3QwC4IJeDEzOS50ZXN0MAuCCXgx
-+NDAudGVzdDALggl4MTQxLnRlc3QwC4IJeDE0Mi50ZXN0MAuCCXgxNDMudGVzdDAL
-+ggl4MTQ0LnRlc3QwC4IJeDE0NS50ZXN0MAuCCXgxNDYudGVzdDALggl4MTQ3LnRl
-+c3QwC4IJeDE0OC50ZXN0MAuCCXgxNDkudGVzdDALggl4MTUwLnRlc3QwC4IJeDE1
-+MS50ZXN0MAuCCXgxNTIudGVzdDALggl4MTUzLnRlc3QwC4IJeDE1NC50ZXN0MAuC
-+CXgxNTUudGVzdDALggl4MTU2LnRlc3QwC4IJeDE1Ny50ZXN0MAuCCXgxNTgudGVz
-+dDALggl4MTU5LnRlc3QwC4IJeDE2MC50ZXN0MAuCCXgxNjEudGVzdDALggl4MTYy
-+LnRlc3QwC4IJeDE2My50ZXN0MAuCCXgxNjQudGVzdDALggl4MTY1LnRlc3QwC4IJ
-+eDE2Ni50ZXN0MAuCCXgxNjcudGVzdDALggl4MTY4LnRlc3QwC4IJeDE2OS50ZXN0
-+MAqHCAsAAAD/////MAqHCAsAAAH/////MAqHCAsAAAL/////MAqHCAsAAAP/////
-+MAqHCAsAAAT/////MAqHCAsAAAX/////MAqHCAsAAAb/////MAqHCAsAAAf/////
-+MAqHCAsAAAj/////MAqHCAsAAAn/////MAqHCAsAAAr/////MAqHCAsAAAv/////
-+MAqHCAsAAAz/////MAqHCAsAAA3/////MAqHCAsAAA7/////MAqHCAsAAA//////
-+MAqHCAsAABD/////MAqHCAsAABH/////MAqHCAsAABL/////MAqHCAsAABP/////
-+MAqHCAsAABT/////MAqHCAsAABX/////MAqHCAsAABb/////MAqHCAsAABf/////
-+MAqHCAsAABj/////MAqHCAsAABn/////MAqHCAsAABr/////MAqHCAsAABv/////
-+MAqHCAsAABz/////MAqHCAsAAB3/////MAqHCAsAAB7/////MAqHCAsAAB//////
-+MAqHCAsAACD/////MAqHCAsAACH/////MAqHCAsAACL/////MAqHCAsAACP/////
-+MAqHCAsAACT/////MAqHCAsAACX/////MAqHCAsAACb/////MAqHCAsAACf/////
-+MAqHCAsAACj/////MAqHCAsAACn/////MAqHCAsAACr/////MAqHCAsAACv/////
-+MAqHCAsAACz/////MAqHCAsAAC3/////MAqHCAsAAC7/////MAqHCAsAAC//////
-+MAqHCAsAADD/////MAqHCAsAADH/////MAqHCAsAADL/////MAqHCAsAADP/////
-+MAqHCAsAADT/////MAqHCAsAADX/////MAqHCAsAADb/////MAqHCAsAADf/////
-+MAqHCAsAADj/////MAqHCAsAADn/////MAqHCAsAADr/////MAqHCAsAADv/////
-+MAqHCAsAADz/////MAqHCAsAAD3/////MAqHCAsAAD7/////MAqHCAsAAD//////
-+MAqHCAsAAED/////MAqHCAsAAEH/////MAqHCAsAAEL/////MAqHCAsAAEP/////
-+MAqHCAsAAET/////MAqHCAsAAEX/////MAqHCAsAAEb/////MAqHCAsAAEf/////
-+MAqHCAsAAEj/////MAqHCAsAAEn/////MAqHCAsAAEr/////MAqHCAsAAEv/////
-+MAqHCAsAAEz/////MAqHCAsAAE3/////MAqHCAsAAE7/////MAqHCAsAAE//////
-+MAqHCAsAAFD/////MAqHCAsAAFH/////MAqHCAsAAFL/////MAqHCAsAAFP/////
-+MAqHCAsAAFT/////MAqHCAsAAFX/////MAqHCAsAAFb/////MAqHCAsAAFf/////
-+MAqHCAsAAFj/////MAqHCAsAAFn/////MAqHCAsAAFr/////MAqHCAsAAFv/////
-+MAqHCAsAAFz/////MAqHCAsAAF3/////MAqHCAsAAF7/////MAqHCAsAAF//////
-+MAqHCAsAAGD/////MAqHCAsAAGH/////MAqHCAsAAGL/////MAqHCAsAAGP/////
-+MAqHCAsAAGT/////MAqHCAsAAGX/////MAqHCAsAAGb/////MAqHCAsAAGf/////
-+MAqHCAsAAGj/////MAqHCAsAAGn/////MAqHCAsAAGr/////MAqHCAsAAGv/////
-+MAqHCAsAAGz/////MAqHCAsAAG3/////MAqHCAsAAG7/////MAqHCAsAAG//////
-+MAqHCAsAAHD/////MAqHCAsAAHH/////MAqHCAsAAHL/////MAqHCAsAAHP/////
-+MAqHCAsAAHT/////MAqHCAsAAHX/////MAqHCAsAAHb/////MAqHCAsAAHf/////
-+MAqHCAsAAHj/////MAqHCAsAAHn/////MAqHCAsAAHr/////MAqHCAsAAHv/////
-+MAqHCAsAAHz/////MAqHCAsAAH3/////MAqHCAsAAH7/////MAqHCAsAAH//////
-+MAqHCAsAAID/////MAqHCAsAAIH/////MAqHCAsAAIL/////MAqHCAsAAIP/////
-+MAqHCAsAAIT/////MAqHCAsAAIX/////MAqHCAsAAIb/////MAqHCAsAAIf/////
-+MAqHCAsAAIj/////MAqHCAsAAIn/////MAqHCAsAAIr/////MAqHCAsAAIv/////
-+MAqHCAsAAIz/////MAqHCAsAAI3/////MAqHCAsAAI7/////MAqHCAsAAI//////
-+MAqHCAsAAJD/////MAqHCAsAAJH/////MAqHCAsAAJL/////MAqHCAsAAJP/////
-+MAqHCAsAAJT/////MAqHCAsAAJX/////MAqHCAsAAJb/////MAqHCAsAAJf/////
-+MAqHCAsAAJj/////MAqHCAsAAJn/////MAqHCAsAAJr/////MAqHCAsAAJv/////
-+MAqHCAsAAJz/////MAqHCAsAAJ3/////MAqHCAsAAJ7/////MAqHCAsAAJ//////
-+MAqHCAsAAKD/////MAqHCAsAAKH/////MAqHCAsAAKL/////MAqHCAsAAKP/////
-+MAqHCAsAAKT/////MAqHCAsAAKX/////MAqHCAsAAKb/////MAqHCAsAAKf/////
-+MAqHCAsAAKj/////MAqHCAsAAKn/////MBGkDzANMQswCQYDVQQDDAJ4MDARpA8w
-+DTELMAkGA1UEAwwCeDEwEaQPMA0xCzAJBgNVBAMMAngyMBGkDzANMQswCQYDVQQD
-+DAJ4MzARpA8wDTELMAkGA1UEAwwCeDQwEaQPMA0xCzAJBgNVBAMMAng1MBGkDzAN
-+MQswCQYDVQQDDAJ4NjARpA8wDTELMAkGA1UEAwwCeDcwEaQPMA0xCzAJBgNVBAMM
-+Ang4MBGkDzANMQswCQYDVQQDDAJ4OTASpBAwDjEMMAoGA1UEAwwDeDEwMBKkEDAO
-+MQwwCgYDVQQDDAN4MTEwEqQQMA4xDDAKBgNVBAMMA3gxMjASpBAwDjEMMAoGA1UE
-+AwwDeDEzMBKkEDAOMQwwCgYDVQQDDAN4MTQwEqQQMA4xDDAKBgNVBAMMA3gxNTAS
-+pBAwDjEMMAoGA1UEAwwDeDE2MBKkEDAOMQwwCgYDVQQDDAN4MTcwEqQQMA4xDDAK
-+BgNVBAMMA3gxODASpBAwDjEMMAoGA1UEAwwDeDE5MBKkEDAOMQwwCgYDVQQDDAN4
-+MjAwEqQQMA4xDDAKBgNVBAMMA3gyMTASpBAwDjEMMAoGA1UEAwwDeDIyMBKkEDAO
-+MQwwCgYDVQQDDAN4MjMwEqQQMA4xDDAKBgNVBAMMA3gyNDASpBAwDjEMMAoGA1UE
-+AwwDeDI1MBKkEDAOMQwwCgYDVQQDDAN4MjYwEqQQMA4xDDAKBgNVBAMMA3gyNzAS
-+pBAwDjEMMAoGA1UEAwwDeDI4MBKkEDAOMQwwCgYDVQQDDAN4MjkwEqQQMA4xDDAK
-+BgNVBAMMA3gzMDASpBAwDjEMMAoGA1UEAwwDeDMxMBKkEDAOMQwwCgYDVQQDDAN4
-+MzIwEqQQMA4xDDAKBgNVBAMMA3gzMzASpBAwDjEMMAoGA1UEAwwDeDM0MBKkEDAO
-+MQwwCgYDVQQDDAN4MzUwEqQQMA4xDDAKBgNVBAMMA3gzNjASpBAwDjEMMAoGA1UE
-+AwwDeDM3MBKkEDAOMQwwCgYDVQQDDAN4MzgwEqQQMA4xDDAKBgNVBAMMA3gzOTAS
-+pBAwDjEMMAoGA1UEAwwDeDQwMBKkEDAOMQwwCgYDVQQDDAN4NDEwEqQQMA4xDDAK
-+BgNVBAMMA3g0MjASpBAwDjEMMAoGA1UEAwwDeDQzMBKkEDAOMQwwCgYDVQQDDAN4
-+NDQwEqQQMA4xDDAKBgNVBAMMA3g0NTASpBAwDjEMMAoGA1UEAwwDeDQ2MBKkEDAO
-+MQwwCgYDVQQDDAN4NDcwEqQQMA4xDDAKBgNVBAMMA3g0ODASpBAwDjEMMAoGA1UE
-+AwwDeDQ5MBKkEDAOMQwwCgYDVQQDDAN4NTAwEqQQMA4xDDAKBgNVBAMMA3g1MTAS
-+pBAwDjEMMAoGA1UEAwwDeDUyMBKkEDAOMQwwCgYDVQQDDAN4NTMwEqQQMA4xDDAK
-+BgNVBAMMA3g1NDASpBAwDjEMMAoGA1UEAwwDeDU1MBKkEDAOMQwwCgYDVQQDDAN4
-+NTYwEqQQMA4xDDAKBgNVBAMMA3g1NzASpBAwDjEMMAoGA1UEAwwDeDU4MBKkEDAO
-+MQwwCgYDVQQDDAN4NTkwEqQQMA4xDDAKBgNVBAMMA3g2MDASpBAwDjEMMAoGA1UE
-+AwwDeDYxMBKkEDAOMQwwCgYDVQQDDAN4NjIwEqQQMA4xDDAKBgNVBAMMA3g2MzAS
-+pBAwDjEMMAoGA1UEAwwDeDY0MBKkEDAOMQwwCgYDVQQDDAN4NjUwEqQQMA4xDDAK
-+BgNVBAMMA3g2NjASpBAwDjEMMAoGA1UEAwwDeDY3MBKkEDAOMQwwCgYDVQQDDAN4
-+NjgwEqQQMA4xDDAKBgNVBAMMA3g2OTASpBAwDjEMMAoGA1UEAwwDeDcwMBKkEDAO
-+MQwwCgYDVQQDDAN4NzEwEqQQMA4xDDAKBgNVBAMMA3g3MjASpBAwDjEMMAoGA1UE
-+AwwDeDczMBKkEDAOMQwwCgYDVQQDDAN4NzQwEqQQMA4xDDAKBgNVBAMMA3g3NTAS
-+pBAwDjEMMAoGA1UEAwwDeDc2MBKkEDAOMQwwCgYDVQQDDAN4NzcwEqQQMA4xDDAK
-+BgNVBAMMA3g3ODASpBAwDjEMMAoGA1UEAwwDeDc5MBKkEDAOMQwwCgYDVQQDDAN4
-+ODAwEqQQMA4xDDAKBgNVBAMMA3g4MTASpBAwDjEMMAoGA1UEAwwDeDgyMBKkEDAO
-+MQwwCgYDVQQDDAN4ODMwEqQQMA4xDDAKBgNVBAMMA3g4NDASpBAwDjEMMAoGA1UE
-+AwwDeDg1MBKkEDAOMQwwCgYDVQQDDAN4ODYwEqQQMA4xDDAKBgNVBAMMA3g4NzAS
-+pBAwDjEMMAoGA1UEAwwDeDg4MBKkEDAOMQwwCgYDVQQDDAN4ODkwEqQQMA4xDDAK
-+BgNVBAMMA3g5MDASpBAwDjEMMAoGA1UEAwwDeDkxMBKkEDAOMQwwCgYDVQQDDAN4
-+OTIwEqQQMA4xDDAKBgNVBAMMA3g5MzASpBAwDjEMMAoGA1UEAwwDeDk0MBKkEDAO
-+MQwwCgYDVQQDDAN4OTUwEqQQMA4xDDAKBgNVBAMMA3g5NjASpBAwDjEMMAoGA1UE
-+AwwDeDk3MBKkEDAOMQwwCgYDVQQDDAN4OTgwEqQQMA4xDDAKBgNVBAMMA3g5OTAT
-+pBEwDzENMAsGA1UEAwwEeDEwMDATpBEwDzENMAsGA1UEAwwEeDEwMTATpBEwDzEN
-+MAsGA1UEAwwEeDEwMjATpBEwDzENMAsGA1UEAwwEeDEwMzATpBEwDzENMAsGA1UE
-+AwwEeDEwNDATpBEwDzENMAsGA1UEAwwEeDEwNTATpBEwDzENMAsGA1UEAwwEeDEw
-+NjATpBEwDzENMAsGA1UEAwwEeDEwNzATpBEwDzENMAsGA1UEAwwEeDEwODATpBEw
-+DzENMAsGA1UEAwwEeDEwOTATpBEwDzENMAsGA1UEAwwEeDExMDATpBEwDzENMAsG
-+A1UEAwwEeDExMTATpBEwDzENMAsGA1UEAwwEeDExMjATpBEwDzENMAsGA1UEAwwE
-+eDExMzATpBEwDzENMAsGA1UEAwwEeDExNDATpBEwDzENMAsGA1UEAwwEeDExNTAT
-+pBEwDzENMAsGA1UEAwwEeDExNjATpBEwDzENMAsGA1UEAwwEeDExNzATpBEwDzEN
-+MAsGA1UEAwwEeDExODATpBEwDzENMAsGA1UEAwwEeDExOTATpBEwDzENMAsGA1UE
-+AwwEeDEyMDATpBEwDzENMAsGA1UEAwwEeDEyMTATpBEwDzENMAsGA1UEAwwEeDEy
-+MjATpBEwDzENMAsGA1UEAwwEeDEyMzATpBEwDzENMAsGA1UEAwwEeDEyNDATpBEw
-+DzENMAsGA1UEAwwEeDEyNTATpBEwDzENMAsGA1UEAwwEeDEyNjATpBEwDzENMAsG
-+A1UEAwwEeDEyNzATpBEwDzENMAsGA1UEAwwEeDEyODATpBEwDzENMAsGA1UEAwwE
-+eDEyOTATpBEwDzENMAsGA1UEAwwEeDEzMDATpBEwDzENMAsGA1UEAwwEeDEzMTAT
-+pBEwDzENMAsGA1UEAwwEeDEzMjATpBEwDzENMAsGA1UEAwwEeDEzMzATpBEwDzEN
-+MAsGA1UEAwwEeDEzNDATpBEwDzENMAsGA1UEAwwEeDEzNTATpBEwDzENMAsGA1UE
-+AwwEeDEzNjATpBEwDzENMAsGA1UEAwwEeDEzNzATpBEwDzENMAsGA1UEAwwEeDEz
-+ODATpBEwDzENMAsGA1UEAwwEeDEzOTATpBEwDzENMAsGA1UEAwwEeDE0MDATpBEw
-+DzENMAsGA1UEAwwEeDE0MTATpBEwDzENMAsGA1UEAwwEeDE0MjATpBEwDzENMAsG
-+A1UEAwwEeDE0MzATpBEwDzENMAsGA1UEAwwEeDE0NDATpBEwDzENMAsGA1UEAwwE
-+eDE0NTATpBEwDzENMAsGA1UEAwwEeDE0NjATpBEwDzENMAsGA1UEAwwEeDE0NzAT
-+pBEwDzENMAsGA1UEAwwEeDE0ODATpBEwDzENMAsGA1UEAwwEeDE0OTATpBEwDzEN
-+MAsGA1UEAwwEeDE1MDATpBEwDzENMAsGA1UEAwwEeDE1MTATpBEwDzENMAsGA1UE
-+AwwEeDE1MjATpBEwDzENMAsGA1UEAwwEeDE1MzATpBEwDzENMAsGA1UEAwwEeDE1
-+NDATpBEwDzENMAsGA1UEAwwEeDE1NTATpBEwDzENMAsGA1UEAwwEeDE1NjATpBEw
-+DzENMAsGA1UEAwwEeDE1NzATpBEwDzENMAsGA1UEAwwEeDE1ODATpBEwDzENMAsG
-+A1UEAwwEeDE1OTATpBEwDzENMAsGA1UEAwwEeDE2MDATpBEwDzENMAsGA1UEAwwE
-+eDE2MTATpBEwDzENMAsGA1UEAwwEeDE2MjATpBEwDzENMAsGA1UEAwwEeDE2MzAT
-+pBEwDzENMAsGA1UEAwwEeDE2NDATpBEwDzENMAsGA1UEAwwEeDE2NTATpBEwDzEN
-+MAsGA1UEAwwEeDE2NjATpBEwDzENMAsGA1UEAwwEeDE2NzATpBEwDzENMAsGA1UE
-+AwwEeDE2ODATpBEwDzENMAsGA1UEAwwEeDE2OTAPhg1odHRwOi8veGVzdC8wMA+G
-+DWh0dHA6Ly94ZXN0LzEwD4YNaHR0cDovL3hlc3QvMjAPhg1odHRwOi8veGVzdC8z
-+MA+GDWh0dHA6Ly94ZXN0LzQwD4YNaHR0cDovL3hlc3QvNTAPhg1odHRwOi8veGVz
-+dC82MA+GDWh0dHA6Ly94ZXN0LzcwD4YNaHR0cDovL3hlc3QvODAPhg1odHRwOi8v
-+eGVzdC85MBCGDmh0dHA6Ly94ZXN0LzEwMBCGDmh0dHA6Ly94ZXN0LzExMBCGDmh0
-+dHA6Ly94ZXN0LzEyMBCGDmh0dHA6Ly94ZXN0LzEzMBCGDmh0dHA6Ly94ZXN0LzE0
-+MBCGDmh0dHA6Ly94ZXN0LzE1MBCGDmh0dHA6Ly94ZXN0LzE2MBCGDmh0dHA6Ly94
-+ZXN0LzE3MBCGDmh0dHA6Ly94ZXN0LzE4MBCGDmh0dHA6Ly94ZXN0LzE5MBCGDmh0
-+dHA6Ly94ZXN0LzIwMBCGDmh0dHA6Ly94ZXN0LzIxMBCGDmh0dHA6Ly94ZXN0LzIy
-+MBCGDmh0dHA6Ly94ZXN0LzIzMBCGDmh0dHA6Ly94ZXN0LzI0MBCGDmh0dHA6Ly94
-+ZXN0LzI1MBCGDmh0dHA6Ly94ZXN0LzI2MBCGDmh0dHA6Ly94ZXN0LzI3MBCGDmh0
-+dHA6Ly94ZXN0LzI4MBCGDmh0dHA6Ly94ZXN0LzI5MBCGDmh0dHA6Ly94ZXN0LzMw
-+MBCGDmh0dHA6Ly94ZXN0LzMxMBCGDmh0dHA6Ly94ZXN0LzMyMBCGDmh0dHA6Ly94
-+ZXN0LzMzMBCGDmh0dHA6Ly94ZXN0LzM0MBCGDmh0dHA6Ly94ZXN0LzM1MBCGDmh0
-+dHA6Ly94ZXN0LzM2MBCGDmh0dHA6Ly94ZXN0LzM3MBCGDmh0dHA6Ly94ZXN0LzM4
-+MBCGDmh0dHA6Ly94ZXN0LzM5MBCGDmh0dHA6Ly94ZXN0LzQwMBCGDmh0dHA6Ly94
-+ZXN0LzQxMBCGDmh0dHA6Ly94ZXN0LzQyMBCGDmh0dHA6Ly94ZXN0LzQzMBCGDmh0
-+dHA6Ly94ZXN0LzQ0MBCGDmh0dHA6Ly94ZXN0LzQ1MBCGDmh0dHA6Ly94ZXN0LzQ2
-+MBCGDmh0dHA6Ly94ZXN0LzQ3MBCGDmh0dHA6Ly94ZXN0LzQ4MBCGDmh0dHA6Ly94
-+ZXN0LzQ5MBCGDmh0dHA6Ly94ZXN0LzUwMBCGDmh0dHA6Ly94ZXN0LzUxMBCGDmh0
-+dHA6Ly94ZXN0LzUyMBCGDmh0dHA6Ly94ZXN0LzUzMBCGDmh0dHA6Ly94ZXN0LzU0
-+MBCGDmh0dHA6Ly94ZXN0LzU1MBCGDmh0dHA6Ly94ZXN0LzU2MBCGDmh0dHA6Ly94
-+ZXN0LzU3MBCGDmh0dHA6Ly94ZXN0LzU4MBCGDmh0dHA6Ly94ZXN0LzU5MBCGDmh0
-+dHA6Ly94ZXN0LzYwMBCGDmh0dHA6Ly94ZXN0LzYxMBCGDmh0dHA6Ly94ZXN0LzYy
-+MBCGDmh0dHA6Ly94ZXN0LzYzMBCGDmh0dHA6Ly94ZXN0LzY0MBCGDmh0dHA6Ly94
-+ZXN0LzY1MBCGDmh0dHA6Ly94ZXN0LzY2MBCGDmh0dHA6Ly94ZXN0LzY3MBCGDmh0
-+dHA6Ly94ZXN0LzY4MBCGDmh0dHA6Ly94ZXN0LzY5MBCGDmh0dHA6Ly94ZXN0Lzcw
-+MBCGDmh0dHA6Ly94ZXN0LzcxMBCGDmh0dHA6Ly94ZXN0LzcyMBCGDmh0dHA6Ly94
-+ZXN0LzczMBCGDmh0dHA6Ly94ZXN0Lzc0MBCGDmh0dHA6Ly94ZXN0Lzc1MBCGDmh0
-+dHA6Ly94ZXN0Lzc2MBCGDmh0dHA6Ly94ZXN0Lzc3MBCGDmh0dHA6Ly94ZXN0Lzc4
-+MBCGDmh0dHA6Ly94ZXN0Lzc5MBCGDmh0dHA6Ly94ZXN0LzgwMBCGDmh0dHA6Ly94
-+ZXN0LzgxMBCGDmh0dHA6Ly94ZXN0LzgyMBCGDmh0dHA6Ly94ZXN0LzgzMBCGDmh0
-+dHA6Ly94ZXN0Lzg0MBCGDmh0dHA6Ly94ZXN0Lzg1MBCGDmh0dHA6Ly94ZXN0Lzg2
-+MBCGDmh0dHA6Ly94ZXN0Lzg3MBCGDmh0dHA6Ly94ZXN0Lzg4MBCGDmh0dHA6Ly94
-+ZXN0Lzg5MBCGDmh0dHA6Ly94ZXN0LzkwMBCGDmh0dHA6Ly94ZXN0LzkxMBCGDmh0
-+dHA6Ly94ZXN0LzkyMBCGDmh0dHA6Ly94ZXN0LzkzMBCGDmh0dHA6Ly94ZXN0Lzk0
-+MBCGDmh0dHA6Ly94ZXN0Lzk1MBCGDmh0dHA6Ly94ZXN0Lzk2MBCGDmh0dHA6Ly94
-+ZXN0Lzk3MBCGDmh0dHA6Ly94ZXN0Lzk4MBCGDmh0dHA6Ly94ZXN0Lzk5MBGGD2h0
-+dHA6Ly94ZXN0LzEwMDARhg9odHRwOi8veGVzdC8xMDEwEYYPaHR0cDovL3hlc3Qv
-+MTAyMBGGD2h0dHA6Ly94ZXN0LzEwMzARhg9odHRwOi8veGVzdC8xMDQwEYYPaHR0
-+cDovL3hlc3QvMTA1MBGGD2h0dHA6Ly94ZXN0LzEwNjARhg9odHRwOi8veGVzdC8x
-+MDcwEYYPaHR0cDovL3hlc3QvMTA4MBGGD2h0dHA6Ly94ZXN0LzEwOTARhg9odHRw
-+Oi8veGVzdC8xMTAwEYYPaHR0cDovL3hlc3QvMTExMBGGD2h0dHA6Ly94ZXN0LzEx
-+MjARhg9odHRwOi8veGVzdC8xMTMwEYYPaHR0cDovL3hlc3QvMTE0MBGGD2h0dHA6
-+Ly94ZXN0LzExNTARhg9odHRwOi8veGVzdC8xMTYwEYYPaHR0cDovL3hlc3QvMTE3
-+MBGGD2h0dHA6Ly94ZXN0LzExODARhg9odHRwOi8veGVzdC8xMTkwEYYPaHR0cDov
-+L3hlc3QvMTIwMBGGD2h0dHA6Ly94ZXN0LzEyMTARhg9odHRwOi8veGVzdC8xMjIw
-+EYYPaHR0cDovL3hlc3QvMTIzMBGGD2h0dHA6Ly94ZXN0LzEyNDARhg9odHRwOi8v
-+eGVzdC8xMjUwEYYPaHR0cDovL3hlc3QvMTI2MBGGD2h0dHA6Ly94ZXN0LzEyNzAR
-+hg9odHRwOi8veGVzdC8xMjgwEYYPaHR0cDovL3hlc3QvMTI5MBGGD2h0dHA6Ly94
-+ZXN0LzEzMDARhg9odHRwOi8veGVzdC8xMzEwEYYPaHR0cDovL3hlc3QvMTMyMBGG
-+D2h0dHA6Ly94ZXN0LzEzMzARhg9odHRwOi8veGVzdC8xMzQwEYYPaHR0cDovL3hl
-+c3QvMTM1MBGGD2h0dHA6Ly94ZXN0LzEzNjARhg9odHRwOi8veGVzdC8xMzcwEYYP
-+aHR0cDovL3hlc3QvMTM4MBGGD2h0dHA6Ly94ZXN0LzEzOTARhg9odHRwOi8veGVz
-+dC8xNDAwEYYPaHR0cDovL3hlc3QvMTQxMBGGD2h0dHA6Ly94ZXN0LzE0MjARhg9o
-+dHRwOi8veGVzdC8xNDMwEYYPaHR0cDovL3hlc3QvMTQ0MBGGD2h0dHA6Ly94ZXN0
-+LzE0NTARhg9odHRwOi8veGVzdC8xNDYwEYYPaHR0cDovL3hlc3QvMTQ3MBGGD2h0
-+dHA6Ly94ZXN0LzE0ODARhg9odHRwOi8veGVzdC8xNDkwEYYPaHR0cDovL3hlc3Qv
-+MTUwMBGGD2h0dHA6Ly94ZXN0LzE1MTARhg9odHRwOi8veGVzdC8xNTIwEYYPaHR0
-+cDovL3hlc3QvMTUzMBGGD2h0dHA6Ly94ZXN0LzE1NDARhg9odHRwOi8veGVzdC8x
-+NTUwEYYPaHR0cDovL3hlc3QvMTU2MBGGD2h0dHA6Ly94ZXN0LzE1NzARhg9odHRw
-+Oi8veGVzdC8xNTgwEYYPaHR0cDovL3hlc3QvMTU5MBGGD2h0dHA6Ly94ZXN0LzE2
-+MDARhg9odHRwOi8veGVzdC8xNjEwEYYPaHR0cDovL3hlc3QvMTYyMBGGD2h0dHA6
-+Ly94ZXN0LzE2MzARhg9odHRwOi8veGVzdC8xNjQwEYYPaHR0cDovL3hlc3QvMTY1
-+MBGGD2h0dHA6Ly94ZXN0LzE2NjARhg9odHRwOi8veGVzdC8xNjcwEYYPaHR0cDov
-+L3hlc3QvMTY4MBGGD2h0dHA6Ly94ZXN0LzE2OTARhg9odHRwOi8veGVzdC8xNzAw
-+EYYPaHR0cDovL3hlc3QvMTcxMBGGD2h0dHA6Ly94ZXN0LzE3MjARhg9odHRwOi8v
-+eGVzdC8xNzMwEYYPaHR0cDovL3hlc3QvMTc0MBGGD2h0dHA6Ly94ZXN0LzE3NTAR
-+hg9odHRwOi8veGVzdC8xNzYwEYYPaHR0cDovL3hlc3QvMTc3MBGGD2h0dHA6Ly94
-+ZXN0LzE3ODARhg9odHRwOi8veGVzdC8xNzkwEYYPaHR0cDovL3hlc3QvMTgwMBGG
-+D2h0dHA6Ly94ZXN0LzE4MTARhg9odHRwOi8veGVzdC8xODIwEYYPaHR0cDovL3hl
-+c3QvMTgzMBGGD2h0dHA6Ly94ZXN0LzE4NDARhg9odHRwOi8veGVzdC8xODUwEYYP
-+aHR0cDovL3hlc3QvMTg2MBGGD2h0dHA6Ly94ZXN0LzE4NzARhg9odHRwOi8veGVz
-+dC8xODgwEYYPaHR0cDovL3hlc3QvMTg5MBGGD2h0dHA6Ly94ZXN0LzE5MDARhg9o
-+dHRwOi8veGVzdC8xOTEwEYYPaHR0cDovL3hlc3QvMTkyMBGGD2h0dHA6Ly94ZXN0
-+LzE5MzARhg9odHRwOi8veGVzdC8xOTQwEYYPaHR0cDovL3hlc3QvMTk1MBGGD2h0
-+dHA6Ly94ZXN0LzE5NjARhg9odHRwOi8veGVzdC8xOTcwEYYPaHR0cDovL3hlc3Qv
-+MTk4MBGGD2h0dHA6Ly94ZXN0LzE5OTARhg9odHRwOi8veGVzdC8yMDAwEYYPaHR0
-+cDovL3hlc3QvMjAxMBGGD2h0dHA6Ly94ZXN0LzIwMjARhg9odHRwOi8veGVzdC8y
-+MDMwEYYPaHR0cDovL3hlc3QvMjA0MBGGD2h0dHA6Ly94ZXN0LzIwNTARhg9odHRw
-+Oi8veGVzdC8yMDYwEYYPaHR0cDovL3hlc3QvMjA3MBGGD2h0dHA6Ly94ZXN0LzIw
-+ODARhg9odHRwOi8veGVzdC8yMDkwEYYPaHR0cDovL3hlc3QvMjEwMBGGD2h0dHA6
-+Ly94ZXN0LzIxMTARhg9odHRwOi8veGVzdC8yMTIwEYYPaHR0cDovL3hlc3QvMjEz
-+MBGGD2h0dHA6Ly94ZXN0LzIxNDARhg9odHRwOi8veGVzdC8yMTUwEYYPaHR0cDov
-+L3hlc3QvMjE2MBGGD2h0dHA6Ly94ZXN0LzIxNzARhg9odHRwOi8veGVzdC8yMTgw
-+EYYPaHR0cDovL3hlc3QvMjE5MBGGD2h0dHA6Ly94ZXN0LzIyMDARhg9odHRwOi8v
-+eGVzdC8yMjEwEYYPaHR0cDovL3hlc3QvMjIyMBGGD2h0dHA6Ly94ZXN0LzIyMzAR
-+hg9odHRwOi8veGVzdC8yMjQwEYYPaHR0cDovL3hlc3QvMjI1MBGGD2h0dHA6Ly94
-+ZXN0LzIyNjARhg9odHRwOi8veGVzdC8yMjcwEYYPaHR0cDovL3hlc3QvMjI4MBGG
-+D2h0dHA6Ly94ZXN0LzIyOTARhg9odHRwOi8veGVzdC8yMzAwEYYPaHR0cDovL3hl
-+c3QvMjMxMBGGD2h0dHA6Ly94ZXN0LzIzMjARhg9odHRwOi8veGVzdC8yMzMwEYYP
-+aHR0cDovL3hlc3QvMjM0MBGGD2h0dHA6Ly94ZXN0LzIzNTARhg9odHRwOi8veGVz
-+dC8yMzYwEYYPaHR0cDovL3hlc3QvMjM3MBGGD2h0dHA6Ly94ZXN0LzIzODARhg9o
-+dHRwOi8veGVzdC8yMzkwEYYPaHR0cDovL3hlc3QvMjQwMBGGD2h0dHA6Ly94ZXN0
-+LzI0MTARhg9odHRwOi8veGVzdC8yNDIwEYYPaHR0cDovL3hlc3QvMjQzMBGGD2h0
-+dHA6Ly94ZXN0LzI0NDARhg9odHRwOi8veGVzdC8yNDUwEYYPaHR0cDovL3hlc3Qv
-+MjQ2MBGGD2h0dHA6Ly94ZXN0LzI0NzARhg9odHRwOi8veGVzdC8yNDgwEYYPaHR0
-+cDovL3hlc3QvMjQ5MBGGD2h0dHA6Ly94ZXN0LzI1MDARhg9odHRwOi8veGVzdC8y
-+NTEwEYYPaHR0cDovL3hlc3QvMjUyMBGGD2h0dHA6Ly94ZXN0LzI1MzARhg9odHRw
-+Oi8veGVzdC8yNTQwEYYPaHR0cDovL3hlc3QvMjU1MBGGD2h0dHA6Ly94ZXN0LzI1
-+NjARhg9odHRwOi8veGVzdC8yNTcwEYYPaHR0cDovL3hlc3QvMjU4MBGGD2h0dHA6
-+Ly94ZXN0LzI1OTARhg9odHRwOi8veGVzdC8yNjAwEYYPaHR0cDovL3hlc3QvMjYx
-+MBGGD2h0dHA6Ly94ZXN0LzI2MjARhg9odHRwOi8veGVzdC8yNjMwEYYPaHR0cDov
-+L3hlc3QvMjY0MBGGD2h0dHA6Ly94ZXN0LzI2NTARhg9odHRwOi8veGVzdC8yNjYw
-+EYYPaHR0cDovL3hlc3QvMjY3MBGGD2h0dHA6Ly94ZXN0LzI2ODARhg9odHRwOi8v
-+eGVzdC8yNjkwEYYPaHR0cDovL3hlc3QvMjcwMBGGD2h0dHA6Ly94ZXN0LzI3MTAR
-+hg9odHRwOi8veGVzdC8yNzIwEYYPaHR0cDovL3hlc3QvMjczMBGGD2h0dHA6Ly94
-+ZXN0LzI3NDARhg9odHRwOi8veGVzdC8yNzUwEYYPaHR0cDovL3hlc3QvMjc2MBGG
-+D2h0dHA6Ly94ZXN0LzI3NzARhg9odHRwOi8veGVzdC8yNzgwEYYPaHR0cDovL3hl
-+c3QvMjc5MBGGD2h0dHA6Ly94ZXN0LzI4MDARhg9odHRwOi8veGVzdC8yODEwEYYP
-+aHR0cDovL3hlc3QvMjgyMBGGD2h0dHA6Ly94ZXN0LzI4MzARhg9odHRwOi8veGVz
-+dC8yODQwEYYPaHR0cDovL3hlc3QvMjg1MBGGD2h0dHA6Ly94ZXN0LzI4NjARhg9o
-+dHRwOi8veGVzdC8yODcwEYYPaHR0cDovL3hlc3QvMjg4MBGGD2h0dHA6Ly94ZXN0
-+LzI4OTARhg9odHRwOi8veGVzdC8yOTAwEYYPaHR0cDovL3hlc3QvMjkxMBGGD2h0
-+dHA6Ly94ZXN0LzI5MjARhg9odHRwOi8veGVzdC8yOTMwEYYPaHR0cDovL3hlc3Qv
-+Mjk0MBGGD2h0dHA6Ly94ZXN0LzI5NTARhg9odHRwOi8veGVzdC8yOTYwEYYPaHR0
-+cDovL3hlc3QvMjk3MBGGD2h0dHA6Ly94ZXN0LzI5ODARhg9odHRwOi8veGVzdC8y
-+OTkwEYYPaHR0cDovL3hlc3QvMzAwMBGGD2h0dHA6Ly94ZXN0LzMwMTARhg9odHRw
-+Oi8veGVzdC8zMDIwEYYPaHR0cDovL3hlc3QvMzAzMBGGD2h0dHA6Ly94ZXN0LzMw
-+NDARhg9odHRwOi8veGVzdC8zMDUwEYYPaHR0cDovL3hlc3QvMzA2MBGGD2h0dHA6
-+Ly94ZXN0LzMwNzARhg9odHRwOi8veGVzdC8zMDgwEYYPaHR0cDovL3hlc3QvMzA5
-+MBGGD2h0dHA6Ly94ZXN0LzMxMDARhg9odHRwOi8veGVzdC8zMTEwEYYPaHR0cDov
-+L3hlc3QvMzEyMBGGD2h0dHA6Ly94ZXN0LzMxMzARhg9odHRwOi8veGVzdC8zMTQw
-+EYYPaHR0cDovL3hlc3QvMzE1MBGGD2h0dHA6Ly94ZXN0LzMxNjARhg9odHRwOi8v
-+eGVzdC8zMTcwEYYPaHR0cDovL3hlc3QvMzE4MBGGD2h0dHA6Ly94ZXN0LzMxOTAR
-+hg9odHRwOi8veGVzdC8zMjAwEYYPaHR0cDovL3hlc3QvMzIxMBGGD2h0dHA6Ly94
-+ZXN0LzMyMjARhg9odHRwOi8veGVzdC8zMjMwEYYPaHR0cDovL3hlc3QvMzI0MBGG
-+D2h0dHA6Ly94ZXN0LzMyNTARhg9odHRwOi8veGVzdC8zMjYwEYYPaHR0cDovL3hl
-+c3QvMzI3MBGGD2h0dHA6Ly94ZXN0LzMyODARhg9odHRwOi8veGVzdC8zMjkwEYYP
-+aHR0cDovL3hlc3QvMzMwMBGGD2h0dHA6Ly94ZXN0LzMzMTARhg9odHRwOi8veGVz
-+dC8zMzIwEYYPaHR0cDovL3hlc3QvMzMzMBGGD2h0dHA6Ly94ZXN0LzMzNDARhg9o
-+dHRwOi8veGVzdC8zMzUwEYYPaHR0cDovL3hlc3QvMzM2MBGGD2h0dHA6Ly94ZXN0
-+LzMzNzARhg9odHRwOi8veGVzdC8zMzgwEYYPaHR0cDovL3hlc3QvMzM5MBGGD2h0
-+dHA6Ly94ZXN0LzM0MDARhg9odHRwOi8veGVzdC8zNDEwEYYPaHR0cDovL3hlc3Qv
-+MzQyMBGGD2h0dHA6Ly94ZXN0LzM0MzARhg9odHRwOi8veGVzdC8zNDQwEYYPaHR0
-+cDovL3hlc3QvMzQ1MBGGD2h0dHA6Ly94ZXN0LzM0NjARhg9odHRwOi8veGVzdC8z
-+NDcwEYYPaHR0cDovL3hlc3QvMzQ4MBGGD2h0dHA6Ly94ZXN0LzM0OTARhg9odHRw
-+Oi8veGVzdC8zNTAwEYYPaHR0cDovL3hlc3QvMzUxMBGGD2h0dHA6Ly94ZXN0LzM1
-+MjARhg9odHRwOi8veGVzdC8zNTMwEYYPaHR0cDovL3hlc3QvMzU0MBGGD2h0dHA6
-+Ly94ZXN0LzM1NTARhg9odHRwOi8veGVzdC8zNTYwEYYPaHR0cDovL3hlc3QvMzU3
-+MBGGD2h0dHA6Ly94ZXN0LzM1ODARhg9odHRwOi8veGVzdC8zNTkwEYYPaHR0cDov
-+L3hlc3QvMzYwMBGGD2h0dHA6Ly94ZXN0LzM2MTARhg9odHRwOi8veGVzdC8zNjIw
-+EYYPaHR0cDovL3hlc3QvMzYzMBGGD2h0dHA6Ly94ZXN0LzM2NDARhg9odHRwOi8v
-+eGVzdC8zNjUwEYYPaHR0cDovL3hlc3QvMzY2MBGGD2h0dHA6Ly94ZXN0LzM2NzAR
-+hg9odHRwOi8veGVzdC8zNjgwEYYPaHR0cDovL3hlc3QvMzY5MBGGD2h0dHA6Ly94
-+ZXN0LzM3MDARhg9odHRwOi8veGVzdC8zNzEwEYYPaHR0cDovL3hlc3QvMzcyMBGG
-+D2h0dHA6Ly94ZXN0LzM3MzARhg9odHRwOi8veGVzdC8zNzQwEYYPaHR0cDovL3hl
-+c3QvMzc1MBGGD2h0dHA6Ly94ZXN0LzM3NjARhg9odHRwOi8veGVzdC8zNzcwEYYP
-+aHR0cDovL3hlc3QvMzc4MBGGD2h0dHA6Ly94ZXN0LzM3OTARhg9odHRwOi8veGVz
-+dC8zODAwEYYPaHR0cDovL3hlc3QvMzgxMBGGD2h0dHA6Ly94ZXN0LzM4MjARhg9o
-+dHRwOi8veGVzdC8zODMwEYYPaHR0cDovL3hlc3QvMzg0MBGGD2h0dHA6Ly94ZXN0
-+LzM4NTARhg9odHRwOi8veGVzdC8zODYwEYYPaHR0cDovL3hlc3QvMzg3MBGGD2h0
-+dHA6Ly94ZXN0LzM4ODARhg9odHRwOi8veGVzdC8zODkwEYYPaHR0cDovL3hlc3Qv
-+MzkwMBGGD2h0dHA6Ly94ZXN0LzM5MTARhg9odHRwOi8veGVzdC8zOTIwEYYPaHR0
-+cDovL3hlc3QvMzkzMBGGD2h0dHA6Ly94ZXN0LzM5NDARhg9odHRwOi8veGVzdC8z
-+OTUwEYYPaHR0cDovL3hlc3QvMzk2MBGGD2h0dHA6Ly94ZXN0LzM5NzARhg9odHRw
-+Oi8veGVzdC8zOTgwEYYPaHR0cDovL3hlc3QvMzk5MBGGD2h0dHA6Ly94ZXN0LzQw
-+MDARhg9odHRwOi8veGVzdC80MDEwEYYPaHR0cDovL3hlc3QvNDAyMBGGD2h0dHA6
-+Ly94ZXN0LzQwMzARhg9odHRwOi8veGVzdC80MDQwEYYPaHR0cDovL3hlc3QvNDA1
-+MBGGD2h0dHA6Ly94ZXN0LzQwNjARhg9odHRwOi8veGVzdC80MDcwEYYPaHR0cDov
-+L3hlc3QvNDA4MBGGD2h0dHA6Ly94ZXN0LzQwOTARhg9odHRwOi8veGVzdC80MTAw
-+EYYPaHR0cDovL3hlc3QvNDExMBGGD2h0dHA6Ly94ZXN0LzQxMjARhg9odHRwOi8v
-+eGVzdC80MTMwEYYPaHR0cDovL3hlc3QvNDE0MBGGD2h0dHA6Ly94ZXN0LzQxNTAR
-+hg9odHRwOi8veGVzdC80MTYwEYYPaHR0cDovL3hlc3QvNDE3MBGGD2h0dHA6Ly94
-+ZXN0LzQxODARhg9odHRwOi8veGVzdC80MTkwEYYPaHR0cDovL3hlc3QvNDIwMBGG
-+D2h0dHA6Ly94ZXN0LzQyMTARhg9odHRwOi8veGVzdC80MjIwEYYPaHR0cDovL3hl
-+c3QvNDIzMBGGD2h0dHA6Ly94ZXN0LzQyNDARhg9odHRwOi8veGVzdC80MjUwEYYP
-+aHR0cDovL3hlc3QvNDI2MBGGD2h0dHA6Ly94ZXN0LzQyNzARhg9odHRwOi8veGVz
-+dC80MjgwEYYPaHR0cDovL3hlc3QvNDI5MBGGD2h0dHA6Ly94ZXN0LzQzMDARhg9o
-+dHRwOi8veGVzdC80MzEwEYYPaHR0cDovL3hlc3QvNDMyMBGGD2h0dHA6Ly94ZXN0
-+LzQzMzARhg9odHRwOi8veGVzdC80MzQwEYYPaHR0cDovL3hlc3QvNDM1MBGGD2h0
-+dHA6Ly94ZXN0LzQzNjARhg9odHRwOi8veGVzdC80MzcwEYYPaHR0cDovL3hlc3Qv
-+NDM4MBGGD2h0dHA6Ly94ZXN0LzQzOTARhg9odHRwOi8veGVzdC80NDAwEYYPaHR0
-+cDovL3hlc3QvNDQxMBGGD2h0dHA6Ly94ZXN0LzQ0MjARhg9odHRwOi8veGVzdC80
-+NDMwEYYPaHR0cDovL3hlc3QvNDQ0MBGGD2h0dHA6Ly94ZXN0LzQ0NTARhg9odHRw
-+Oi8veGVzdC80NDYwEYYPaHR0cDovL3hlc3QvNDQ3MBGGD2h0dHA6Ly94ZXN0LzQ0
-+ODARhg9odHRwOi8veGVzdC80NDkwEYYPaHR0cDovL3hlc3QvNDUwMBGGD2h0dHA6
-+Ly94ZXN0LzQ1MTARhg9odHRwOi8veGVzdC80NTIwEYYPaHR0cDovL3hlc3QvNDUz
-+MBGGD2h0dHA6Ly94ZXN0LzQ1NDARhg9odHRwOi8veGVzdC80NTUwEYYPaHR0cDov
-+L3hlc3QvNDU2MBGGD2h0dHA6Ly94ZXN0LzQ1NzARhg9odHRwOi8veGVzdC80NTgw
-+EYYPaHR0cDovL3hlc3QvNDU5MBGGD2h0dHA6Ly94ZXN0LzQ2MDARhg9odHRwOi8v
-+eGVzdC80NjEwEYYPaHR0cDovL3hlc3QvNDYyMBGGD2h0dHA6Ly94ZXN0LzQ2MzAR
-+hg9odHRwOi8veGVzdC80NjQwEYYPaHR0cDovL3hlc3QvNDY1MBGGD2h0dHA6Ly94
-+ZXN0LzQ2NjARhg9odHRwOi8veGVzdC80NjcwEYYPaHR0cDovL3hlc3QvNDY4MBGG
-+D2h0dHA6Ly94ZXN0LzQ2OTARhg9odHRwOi8veGVzdC80NzAwEYYPaHR0cDovL3hl
-+c3QvNDcxMBGGD2h0dHA6Ly94ZXN0LzQ3MjARhg9odHRwOi8veGVzdC80NzMwEYYP
-+aHR0cDovL3hlc3QvNDc0MBGGD2h0dHA6Ly94ZXN0LzQ3NTARhg9odHRwOi8veGVz
-+dC80NzYwEYYPaHR0cDovL3hlc3QvNDc3MBGGD2h0dHA6Ly94ZXN0LzQ3ODARhg9o
-+dHRwOi8veGVzdC80NzkwEYYPaHR0cDovL3hlc3QvNDgwMBGGD2h0dHA6Ly94ZXN0
-+LzQ4MTARhg9odHRwOi8veGVzdC80ODIwEYYPaHR0cDovL3hlc3QvNDgzMBGGD2h0
-+dHA6Ly94ZXN0LzQ4NDARhg9odHRwOi8veGVzdC80ODUwEYYPaHR0cDovL3hlc3Qv
-+NDg2MBGGD2h0dHA6Ly94ZXN0LzQ4NzARhg9odHRwOi8veGVzdC80ODgwEYYPaHR0
-+cDovL3hlc3QvNDg5MBGGD2h0dHA6Ly94ZXN0LzQ5MDARhg9odHRwOi8veGVzdC80
-+OTEwEYYPaHR0cDovL3hlc3QvNDkyMBGGD2h0dHA6Ly94ZXN0LzQ5MzARhg9odHRw
-+Oi8veGVzdC80OTQwEYYPaHR0cDovL3hlc3QvNDk1MBGGD2h0dHA6Ly94ZXN0LzQ5
-+NjARhg9odHRwOi8veGVzdC80OTcwEYYPaHR0cDovL3hlc3QvNDk4MBGGD2h0dHA6
-+Ly94ZXN0LzQ5OTARhg9odHRwOi8veGVzdC81MDAwEYYPaHR0cDovL3hlc3QvNTAx
-+MBGGD2h0dHA6Ly94ZXN0LzUwMjARhg9odHRwOi8veGVzdC81MDMwEYYPaHR0cDov
-+L3hlc3QvNTA0MBGGD2h0dHA6Ly94ZXN0LzUwNTARhg9odHRwOi8veGVzdC81MDYw
-+EYYPaHR0cDovL3hlc3QvNTA3MBGGD2h0dHA6Ly94ZXN0LzUwODARhg9odHRwOi8v
-+eGVzdC81MDkwEYYPaHR0cDovL3hlc3QvNTEwMBGGD2h0dHA6Ly94ZXN0LzUxMTAR
-+hg9odHRwOi8veGVzdC81MTIwEYYPaHR0cDovL3hlc3QvNTEzMBGGD2h0dHA6Ly94
-+ZXN0LzUxNDARhg9odHRwOi8veGVzdC81MTUwEYYPaHR0cDovL3hlc3QvNTE2MBGG
-+D2h0dHA6Ly94ZXN0LzUxNzARhg9odHRwOi8veGVzdC81MTgwEYYPaHR0cDovL3hl
-+c3QvNTE5MBGGD2h0dHA6Ly94ZXN0LzUyMDARhg9odHRwOi8veGVzdC81MjEwEYYP
-+aHR0cDovL3hlc3QvNTIyMBGGD2h0dHA6Ly94ZXN0LzUyMzARhg9odHRwOi8veGVz
-+dC81MjQwEYYPaHR0cDovL3hlc3QvNTI1MBGGD2h0dHA6Ly94ZXN0LzUyNjARhg9o
-+dHRwOi8veGVzdC81MjcwEYYPaHR0cDovL3hlc3QvNTI4MBGGD2h0dHA6Ly94ZXN0
-+LzUyOTARhg9odHRwOi8veGVzdC81MzAwEYYPaHR0cDovL3hlc3QvNTMxMBGGD2h0
-+dHA6Ly94ZXN0LzUzMjARhg9odHRwOi8veGVzdC81MzMwEYYPaHR0cDovL3hlc3Qv
-+NTM0MBGGD2h0dHA6Ly94ZXN0LzUzNTARhg9odHRwOi8veGVzdC81MzYwEYYPaHR0
-+cDovL3hlc3QvNTM3MBGGD2h0dHA6Ly94ZXN0LzUzODARhg9odHRwOi8veGVzdC81
-+MzkwEYYPaHR0cDovL3hlc3QvNTQwMBGGD2h0dHA6Ly94ZXN0LzU0MTARhg9odHRw
-+Oi8veGVzdC81NDIwEYYPaHR0cDovL3hlc3QvNTQzMBGGD2h0dHA6Ly94ZXN0LzU0
-+NDARhg9odHRwOi8veGVzdC81NDUwEYYPaHR0cDovL3hlc3QvNTQ2MBGGD2h0dHA6
-+Ly94ZXN0LzU0NzARhg9odHRwOi8veGVzdC81NDgwEYYPaHR0cDovL3hlc3QvNTQ5
-+MBGGD2h0dHA6Ly94ZXN0LzU1MDARhg9odHRwOi8veGVzdC81NTEwEYYPaHR0cDov
-+L3hlc3QvNTUyMBGGD2h0dHA6Ly94ZXN0LzU1MzARhg9odHRwOi8veGVzdC81NTQw
-+EYYPaHR0cDovL3hlc3QvNTU1MBGGD2h0dHA6Ly94ZXN0LzU1NjARhg9odHRwOi8v
-+eGVzdC81NTcwEYYPaHR0cDovL3hlc3QvNTU4MBGGD2h0dHA6Ly94ZXN0LzU1OTAR
-+hg9odHRwOi8veGVzdC81NjAwEYYPaHR0cDovL3hlc3QvNTYxMBGGD2h0dHA6Ly94
-+ZXN0LzU2MjARhg9odHRwOi8veGVzdC81NjMwEYYPaHR0cDovL3hlc3QvNTY0MBGG
-+D2h0dHA6Ly94ZXN0LzU2NTARhg9odHRwOi8veGVzdC81NjYwEYYPaHR0cDovL3hl
-+c3QvNTY3MBGGD2h0dHA6Ly94ZXN0LzU2ODARhg9odHRwOi8veGVzdC81NjkwEYYP
-+aHR0cDovL3hlc3QvNTcwMBGGD2h0dHA6Ly94ZXN0LzU3MTARhg9odHRwOi8veGVz
-+dC81NzIwEYYPaHR0cDovL3hlc3QvNTczMBGGD2h0dHA6Ly94ZXN0LzU3NDARhg9o
-+dHRwOi8veGVzdC81NzUwEYYPaHR0cDovL3hlc3QvNTc2MBGGD2h0dHA6Ly94ZXN0
-+LzU3NzARhg9odHRwOi8veGVzdC81NzgwEYYPaHR0cDovL3hlc3QvNTc5MBGGD2h0
-+dHA6Ly94ZXN0LzU4MDARhg9odHRwOi8veGVzdC81ODEwEYYPaHR0cDovL3hlc3Qv
-+NTgyMBGGD2h0dHA6Ly94ZXN0LzU4MzARhg9odHRwOi8veGVzdC81ODQwEYYPaHR0
-+cDovL3hlc3QvNTg1MBGGD2h0dHA6Ly94ZXN0LzU4NjARhg9odHRwOi8veGVzdC81
-+ODcwEYYPaHR0cDovL3hlc3QvNTg4MBGGD2h0dHA6Ly94ZXN0LzU4OTARhg9odHRw
-+Oi8veGVzdC81OTAwEYYPaHR0cDovL3hlc3QvNTkxMBGGD2h0dHA6Ly94ZXN0LzU5
-+MjARhg9odHRwOi8veGVzdC81OTMwEYYPaHR0cDovL3hlc3QvNTk0MBGGD2h0dHA6
-+Ly94ZXN0LzU5NTARhg9odHRwOi8veGVzdC81OTYwEYYPaHR0cDovL3hlc3QvNTk3
-+MBGGD2h0dHA6Ly94ZXN0LzU5ODARhg9odHRwOi8veGVzdC81OTkwEYYPaHR0cDov
-+L3hlc3QvNjAwMBGGD2h0dHA6Ly94ZXN0LzYwMTARhg9odHRwOi8veGVzdC82MDIw
-+EYYPaHR0cDovL3hlc3QvNjAzMBGGD2h0dHA6Ly94ZXN0LzYwNDARhg9odHRwOi8v
-+eGVzdC82MDUwEYYPaHR0cDovL3hlc3QvNjA2MBGGD2h0dHA6Ly94ZXN0LzYwNzAR
-+hg9odHRwOi8veGVzdC82MDgwEYYPaHR0cDovL3hlc3QvNjA5MBGGD2h0dHA6Ly94
-+ZXN0LzYxMDARhg9odHRwOi8veGVzdC82MTEwEYYPaHR0cDovL3hlc3QvNjEyMBGG
-+D2h0dHA6Ly94ZXN0LzYxMzARhg9odHRwOi8veGVzdC82MTQwEYYPaHR0cDovL3hl
-+c3QvNjE1MBGGD2h0dHA6Ly94ZXN0LzYxNjARhg9odHRwOi8veGVzdC82MTcwEYYP
-+aHR0cDovL3hlc3QvNjE4MBGGD2h0dHA6Ly94ZXN0LzYxOTARhg9odHRwOi8veGVz
-+dC82MjAwEYYPaHR0cDovL3hlc3QvNjIxMBGGD2h0dHA6Ly94ZXN0LzYyMjARhg9o
-+dHRwOi8veGVzdC82MjMwEYYPaHR0cDovL3hlc3QvNjI0MBGGD2h0dHA6Ly94ZXN0
-+LzYyNTARhg9odHRwOi8veGVzdC82MjYwEYYPaHR0cDovL3hlc3QvNjI3MBGGD2h0
-+dHA6Ly94ZXN0LzYyODARhg9odHRwOi8veGVzdC82MjkwEYYPaHR0cDovL3hlc3Qv
-+NjMwMBGGD2h0dHA6Ly94ZXN0LzYzMTARhg9odHRwOi8veGVzdC82MzIwEYYPaHR0
-+cDovL3hlc3QvNjMzMBGGD2h0dHA6Ly94ZXN0LzYzNDARhg9odHRwOi8veGVzdC82
-+MzUwEYYPaHR0cDovL3hlc3QvNjM2MBGGD2h0dHA6Ly94ZXN0LzYzNzARhg9odHRw
-+Oi8veGVzdC82MzgwEYYPaHR0cDovL3hlc3QvNjM5MBGGD2h0dHA6Ly94ZXN0LzY0
-+MDARhg9odHRwOi8veGVzdC82NDEwEYYPaHR0cDovL3hlc3QvNjQyMBGGD2h0dHA6
-+Ly94ZXN0LzY0MzARhg9odHRwOi8veGVzdC82NDQwEYYPaHR0cDovL3hlc3QvNjQ1
-+MBGGD2h0dHA6Ly94ZXN0LzY0NjARhg9odHRwOi8veGVzdC82NDcwEYYPaHR0cDov
-+L3hlc3QvNjQ4MBGGD2h0dHA6Ly94ZXN0LzY0OTARhg9odHRwOi8veGVzdC82NTAw
-+EYYPaHR0cDovL3hlc3QvNjUxMBGGD2h0dHA6Ly94ZXN0LzY1MjARhg9odHRwOi8v
-+eGVzdC82NTMwEYYPaHR0cDovL3hlc3QvNjU0MBGGD2h0dHA6Ly94ZXN0LzY1NTAR
-+hg9odHRwOi8veGVzdC82NTYwEYYPaHR0cDovL3hlc3QvNjU3MBGGD2h0dHA6Ly94
-+ZXN0LzY1ODARhg9odHRwOi8veGVzdC82NTkwEYYPaHR0cDovL3hlc3QvNjYwMBGG
-+D2h0dHA6Ly94ZXN0LzY2MTARhg9odHRwOi8veGVzdC82NjIwEYYPaHR0cDovL3hl
-+c3QvNjYzMBGGD2h0dHA6Ly94ZXN0LzY2NDARhg9odHRwOi8veGVzdC82NjUwEYYP
-+aHR0cDovL3hlc3QvNjY2MBGGD2h0dHA6Ly94ZXN0LzY2NzARhg9odHRwOi8veGVz
-+dC82NjgwEYYPaHR0cDovL3hlc3QvNjY5MBGGD2h0dHA6Ly94ZXN0LzY3MDARhg9o
-+dHRwOi8veGVzdC82NzEwEYYPaHR0cDovL3hlc3QvNjcyMBGGD2h0dHA6Ly94ZXN0
-+LzY3MzARhg9odHRwOi8veGVzdC82NzQwEYYPaHR0cDovL3hlc3QvNjc1MBGGD2h0
-+dHA6Ly94ZXN0LzY3NjARhg9odHRwOi8veGVzdC82NzcwEYYPaHR0cDovL3hlc3Qv
-+Njc4MBGGD2h0dHA6Ly94ZXN0LzY3OTARhg9odHRwOi8veGVzdC82ODAwEYYPaHR0
-+cDovL3hlc3QvNjgxMBGGD2h0dHA6Ly94ZXN0LzY4MjARhg9odHRwOi8veGVzdC82
-+ODMwEYYPaHR0cDovL3hlc3QvNjg0MBGGD2h0dHA6Ly94ZXN0LzY4NTARhg9odHRw
-+Oi8veGVzdC82ODYwEYYPaHR0cDovL3hlc3QvNjg3MBGGD2h0dHA6Ly94ZXN0LzY4
-+ODARhg9odHRwOi8veGVzdC82ODkwEYYPaHR0cDovL3hlc3QvNjkwMBGGD2h0dHA6
-+Ly94ZXN0LzY5MTARhg9odHRwOi8veGVzdC82OTIwEYYPaHR0cDovL3hlc3QvNjkz
-+MBGGD2h0dHA6Ly94ZXN0LzY5NDARhg9odHRwOi8veGVzdC82OTUwEYYPaHR0cDov
-+L3hlc3QvNjk2MBGGD2h0dHA6Ly94ZXN0LzY5NzARhg9odHRwOi8veGVzdC82OTgw
-+EYYPaHR0cDovL3hlc3QvNjk5MBGGD2h0dHA6Ly94ZXN0LzcwMDARhg9odHRwOi8v
-+eGVzdC83MDEwEYYPaHR0cDovL3hlc3QvNzAyMBGGD2h0dHA6Ly94ZXN0LzcwMzAR
-+hg9odHRwOi8veGVzdC83MDQwEYYPaHR0cDovL3hlc3QvNzA1MBGGD2h0dHA6Ly94
-+ZXN0LzcwNjARhg9odHRwOi8veGVzdC83MDcwEYYPaHR0cDovL3hlc3QvNzA4MBGG
-+D2h0dHA6Ly94ZXN0LzcwOTARhg9odHRwOi8veGVzdC83MTAwEYYPaHR0cDovL3hl
-+c3QvNzExMBGGD2h0dHA6Ly94ZXN0LzcxMjARhg9odHRwOi8veGVzdC83MTMwEYYP
-+aHR0cDovL3hlc3QvNzE0MBGGD2h0dHA6Ly94ZXN0LzcxNTARhg9odHRwOi8veGVz
-+dC83MTYwEYYPaHR0cDovL3hlc3QvNzE3MBGGD2h0dHA6Ly94ZXN0LzcxODARhg9o
-+dHRwOi8veGVzdC83MTkwEYYPaHR0cDovL3hlc3QvNzIwMBGGD2h0dHA6Ly94ZXN0
-+LzcyMTARhg9odHRwOi8veGVzdC83MjIwEYYPaHR0cDovL3hlc3QvNzIzMBGGD2h0
-+dHA6Ly94ZXN0LzcyNDARhg9odHRwOi8veGVzdC83MjUwEYYPaHR0cDovL3hlc3Qv
-+NzI2MBGGD2h0dHA6Ly94ZXN0LzcyNzARhg9odHRwOi8veGVzdC83MjgwEYYPaHR0
-+cDovL3hlc3QvNzI5MBGGD2h0dHA6Ly94ZXN0LzczMDARhg9odHRwOi8veGVzdC83
-+MzEwEYYPaHR0cDovL3hlc3QvNzMyMBGGD2h0dHA6Ly94ZXN0LzczMzARhg9odHRw
-+Oi8veGVzdC83MzQwEYYPaHR0cDovL3hlc3QvNzM1MBGGD2h0dHA6Ly94ZXN0Lzcz
-+NjARhg9odHRwOi8veGVzdC83MzcwEYYPaHR0cDovL3hlc3QvNzM4MBGGD2h0dHA6
-+Ly94ZXN0LzczOTARhg9odHRwOi8veGVzdC83NDAwEYYPaHR0cDovL3hlc3QvNzQx
-+MBGGD2h0dHA6Ly94ZXN0Lzc0MjARhg9odHRwOi8veGVzdC83NDMwEYYPaHR0cDov
-+L3hlc3QvNzQ0MBGGD2h0dHA6Ly94ZXN0Lzc0NTARhg9odHRwOi8veGVzdC83NDYw
-+EYYPaHR0cDovL3hlc3QvNzQ3MBGGD2h0dHA6Ly94ZXN0Lzc0ODARhg9odHRwOi8v
-+eGVzdC83NDkwEYYPaHR0cDovL3hlc3QvNzUwMBGGD2h0dHA6Ly94ZXN0Lzc1MTAR
-+hg9odHRwOi8veGVzdC83NTIwEYYPaHR0cDovL3hlc3QvNzUzMBGGD2h0dHA6Ly94
-+ZXN0Lzc1NDARhg9odHRwOi8veGVzdC83NTUwEYYPaHR0cDovL3hlc3QvNzU2MBGG
-+D2h0dHA6Ly94ZXN0Lzc1NzARhg9odHRwOi8veGVzdC83NTgwEYYPaHR0cDovL3hl
-+c3QvNzU5MBGGD2h0dHA6Ly94ZXN0Lzc2MDARhg9odHRwOi8veGVzdC83NjEwEYYP
-+aHR0cDovL3hlc3QvNzYyMBGGD2h0dHA6Ly94ZXN0Lzc2MzARhg9odHRwOi8veGVz
-+dC83NjQwEYYPaHR0cDovL3hlc3QvNzY1MBGGD2h0dHA6Ly94ZXN0Lzc2NjARhg9o
-+dHRwOi8veGVzdC83NjcwEYYPaHR0cDovL3hlc3QvNzY4MBGGD2h0dHA6Ly94ZXN0
-+Lzc2OTARhg9odHRwOi8veGVzdC83NzAwEYYPaHR0cDovL3hlc3QvNzcxMBGGD2h0
-+dHA6Ly94ZXN0Lzc3MjARhg9odHRwOi8veGVzdC83NzMwEYYPaHR0cDovL3hlc3Qv
-+Nzc0MBGGD2h0dHA6Ly94ZXN0Lzc3NTARhg9odHRwOi8veGVzdC83NzYwEYYPaHR0
-+cDovL3hlc3QvNzc3MBGGD2h0dHA6Ly94ZXN0Lzc3ODARhg9odHRwOi8veGVzdC83
-+NzkwEYYPaHR0cDovL3hlc3QvNzgwMBGGD2h0dHA6Ly94ZXN0Lzc4MTARhg9odHRw
-+Oi8veGVzdC83ODIwEYYPaHR0cDovL3hlc3QvNzgzMBGGD2h0dHA6Ly94ZXN0Lzc4
-+NDARhg9odHRwOi8veGVzdC83ODUwEYYPaHR0cDovL3hlc3QvNzg2MBGGD2h0dHA6
-+Ly94ZXN0Lzc4NzARhg9odHRwOi8veGVzdC83ODgwEYYPaHR0cDovL3hlc3QvNzg5
-+MBGGD2h0dHA6Ly94ZXN0Lzc5MDARhg9odHRwOi8veGVzdC83OTEwEYYPaHR0cDov
-+L3hlc3QvNzkyMBGGD2h0dHA6Ly94ZXN0Lzc5MzARhg9odHRwOi8veGVzdC83OTQw
-+EYYPaHR0cDovL3hlc3QvNzk1MBGGD2h0dHA6Ly94ZXN0Lzc5NjARhg9odHRwOi8v
-+eGVzdC83OTcwEYYPaHR0cDovL3hlc3QvNzk4MBGGD2h0dHA6Ly94ZXN0Lzc5OTAR
-+hg9odHRwOi8veGVzdC84MDAwEYYPaHR0cDovL3hlc3QvODAxMBGGD2h0dHA6Ly94
-+ZXN0LzgwMjARhg9odHRwOi8veGVzdC84MDMwEYYPaHR0cDovL3hlc3QvODA0MBGG
-+D2h0dHA6Ly94ZXN0LzgwNTARhg9odHRwOi8veGVzdC84MDYwEYYPaHR0cDovL3hl
-+c3QvODA3MBGGD2h0dHA6Ly94ZXN0LzgwODARhg9odHRwOi8veGVzdC84MDkwEYYP
-+aHR0cDovL3hlc3QvODEwMBGGD2h0dHA6Ly94ZXN0LzgxMTARhg9odHRwOi8veGVz
-+dC84MTIwEYYPaHR0cDovL3hlc3QvODEzMBGGD2h0dHA6Ly94ZXN0LzgxNDARhg9o
-+dHRwOi8veGVzdC84MTUwEYYPaHR0cDovL3hlc3QvODE2MBGGD2h0dHA6Ly94ZXN0
-+LzgxNzARhg9odHRwOi8veGVzdC84MTgwEYYPaHR0cDovL3hlc3QvODE5MBGGD2h0
-+dHA6Ly94ZXN0LzgyMDARhg9odHRwOi8veGVzdC84MjEwEYYPaHR0cDovL3hlc3Qv
-+ODIyMBGGD2h0dHA6Ly94ZXN0LzgyMzARhg9odHRwOi8veGVzdC84MjQwEYYPaHR0
-+cDovL3hlc3QvODI1MBGGD2h0dHA6Ly94ZXN0LzgyNjARhg9odHRwOi8veGVzdC84
-+MjcwEYYPaHR0cDovL3hlc3QvODI4MBGGD2h0dHA6Ly94ZXN0LzgyOTARhg9odHRw
-+Oi8veGVzdC84MzAwEYYPaHR0cDovL3hlc3QvODMxMBGGD2h0dHA6Ly94ZXN0Lzgz
-+MjARhg9odHRwOi8veGVzdC84MzMwEYYPaHR0cDovL3hlc3QvODM0MBGGD2h0dHA6
-+Ly94ZXN0LzgzNTARhg9odHRwOi8veGVzdC84MzYwEYYPaHR0cDovL3hlc3QvODM3
-+MBGGD2h0dHA6Ly94ZXN0LzgzODARhg9odHRwOi8veGVzdC84MzkwEYYPaHR0cDov
-+L3hlc3QvODQwMBGGD2h0dHA6Ly94ZXN0Lzg0MTARhg9odHRwOi8veGVzdC84NDIw
-+EYYPaHR0cDovL3hlc3QvODQzMBGGD2h0dHA6Ly94ZXN0Lzg0NDARhg9odHRwOi8v
-+eGVzdC84NDUwEYYPaHR0cDovL3hlc3QvODQ2MBGGD2h0dHA6Ly94ZXN0Lzg0NzAR
-+hg9odHRwOi8veGVzdC84NDgwEYYPaHR0cDovL3hlc3QvODQ5MBGGD2h0dHA6Ly94
-+ZXN0Lzg1MDARhg9odHRwOi8veGVzdC84NTEwEYYPaHR0cDovL3hlc3QvODUyMBGG
-+D2h0dHA6Ly94ZXN0Lzg1MzARhg9odHRwOi8veGVzdC84NTQwEYYPaHR0cDovL3hl
-+c3QvODU1MBGGD2h0dHA6Ly94ZXN0Lzg1NjARhg9odHRwOi8veGVzdC84NTcwEYYP
-+aHR0cDovL3hlc3QvODU4MBGGD2h0dHA6Ly94ZXN0Lzg1OTARhg9odHRwOi8veGVz
-+dC84NjAwEYYPaHR0cDovL3hlc3QvODYxMBGGD2h0dHA6Ly94ZXN0Lzg2MjARhg9o
-+dHRwOi8veGVzdC84NjMwEYYPaHR0cDovL3hlc3QvODY0MBGGD2h0dHA6Ly94ZXN0
-+Lzg2NTARhg9odHRwOi8veGVzdC84NjYwEYYPaHR0cDovL3hlc3QvODY3MBGGD2h0
-+dHA6Ly94ZXN0Lzg2ODARhg9odHRwOi8veGVzdC84NjkwEYYPaHR0cDovL3hlc3Qv
-+ODcwMBGGD2h0dHA6Ly94ZXN0Lzg3MTARhg9odHRwOi8veGVzdC84NzIwEYYPaHR0
-+cDovL3hlc3QvODczMBGGD2h0dHA6Ly94ZXN0Lzg3NDARhg9odHRwOi8veGVzdC84
-+NzUwEYYPaHR0cDovL3hlc3QvODc2MBGGD2h0dHA6Ly94ZXN0Lzg3NzARhg9odHRw
-+Oi8veGVzdC84NzgwEYYPaHR0cDovL3hlc3QvODc5MBGGD2h0dHA6Ly94ZXN0Lzg4
-+MDARhg9odHRwOi8veGVzdC84ODEwEYYPaHR0cDovL3hlc3QvODgyMBGGD2h0dHA6
-+Ly94ZXN0Lzg4MzARhg9odHRwOi8veGVzdC84ODQwEYYPaHR0cDovL3hlc3QvODg1
-+MBGGD2h0dHA6Ly94ZXN0Lzg4NjARhg9odHRwOi8veGVzdC84ODcwEYYPaHR0cDov
-+L3hlc3QvODg4MBGGD2h0dHA6Ly94ZXN0Lzg4OTARhg9odHRwOi8veGVzdC84OTAw
-+EYYPaHR0cDovL3hlc3QvODkxMBGGD2h0dHA6Ly94ZXN0Lzg5MjARhg9odHRwOi8v
-+eGVzdC84OTMwEYYPaHR0cDovL3hlc3QvODk0MBGGD2h0dHA6Ly94ZXN0Lzg5NTAR
-+hg9odHRwOi8veGVzdC84OTYwEYYPaHR0cDovL3hlc3QvODk3MBGGD2h0dHA6Ly94
-+ZXN0Lzg5ODARhg9odHRwOi8veGVzdC84OTkwEYYPaHR0cDovL3hlc3QvOTAwMBGG
-+D2h0dHA6Ly94ZXN0LzkwMTARhg9odHRwOi8veGVzdC85MDIwEYYPaHR0cDovL3hl
-+c3QvOTAzMBGGD2h0dHA6Ly94ZXN0LzkwNDARhg9odHRwOi8veGVzdC85MDUwEYYP
-+aHR0cDovL3hlc3QvOTA2MBGGD2h0dHA6Ly94ZXN0LzkwNzARhg9odHRwOi8veGVz
-+dC85MDgwEYYPaHR0cDovL3hlc3QvOTA5MBGGD2h0dHA6Ly94ZXN0LzkxMDARhg9o
-+dHRwOi8veGVzdC85MTEwEYYPaHR0cDovL3hlc3QvOTEyMBGGD2h0dHA6Ly94ZXN0
-+LzkxMzARhg9odHRwOi8veGVzdC85MTQwEYYPaHR0cDovL3hlc3QvOTE1MBGGD2h0
-+dHA6Ly94ZXN0LzkxNjARhg9odHRwOi8veGVzdC85MTcwEYYPaHR0cDovL3hlc3Qv
-+OTE4MBGGD2h0dHA6Ly94ZXN0LzkxOTARhg9odHRwOi8veGVzdC85MjAwEYYPaHR0
-+cDovL3hlc3QvOTIxMBGGD2h0dHA6Ly94ZXN0LzkyMjARhg9odHRwOi8veGVzdC85
-+MjMwEYYPaHR0cDovL3hlc3QvOTI0MBGGD2h0dHA6Ly94ZXN0LzkyNTARhg9odHRw
-+Oi8veGVzdC85MjYwEYYPaHR0cDovL3hlc3QvOTI3MBGGD2h0dHA6Ly94ZXN0Lzky
-+ODARhg9odHRwOi8veGVzdC85MjkwEYYPaHR0cDovL3hlc3QvOTMwMBGGD2h0dHA6
-+Ly94ZXN0LzkzMTARhg9odHRwOi8veGVzdC85MzIwEYYPaHR0cDovL3hlc3QvOTMz
-+MBGGD2h0dHA6Ly94ZXN0LzkzNDARhg9odHRwOi8veGVzdC85MzUwEYYPaHR0cDov
-+L3hlc3QvOTM2MBGGD2h0dHA6Ly94ZXN0LzkzNzARhg9odHRwOi8veGVzdC85Mzgw
-+EYYPaHR0cDovL3hlc3QvOTM5MBGGD2h0dHA6Ly94ZXN0Lzk0MDARhg9odHRwOi8v
-+eGVzdC85NDEwEYYPaHR0cDovL3hlc3QvOTQyMBGGD2h0dHA6Ly94ZXN0Lzk0MzAR
-+hg9odHRwOi8veGVzdC85NDQwEYYPaHR0cDovL3hlc3QvOTQ1MBGGD2h0dHA6Ly94
-+ZXN0Lzk0NjARhg9odHRwOi8veGVzdC85NDcwEYYPaHR0cDovL3hlc3QvOTQ4MBGG
-+D2h0dHA6Ly94ZXN0Lzk0OTARhg9odHRwOi8veGVzdC85NTAwEYYPaHR0cDovL3hl
-+c3QvOTUxMBGGD2h0dHA6Ly94ZXN0Lzk1MjARhg9odHRwOi8veGVzdC85NTMwEYYP
-+aHR0cDovL3hlc3QvOTU0MBGGD2h0dHA6Ly94ZXN0Lzk1NTARhg9odHRwOi8veGVz
-+dC85NTYwEYYPaHR0cDovL3hlc3QvOTU3MBGGD2h0dHA6Ly94ZXN0Lzk1ODARhg9o
-+dHRwOi8veGVzdC85NTkwEYYPaHR0cDovL3hlc3QvOTYwMBGGD2h0dHA6Ly94ZXN0
-+Lzk2MTARhg9odHRwOi8veGVzdC85NjIwEYYPaHR0cDovL3hlc3QvOTYzMBGGD2h0
-+dHA6Ly94ZXN0Lzk2NDARhg9odHRwOi8veGVzdC85NjUwEYYPaHR0cDovL3hlc3Qv
-+OTY2MBGGD2h0dHA6Ly94ZXN0Lzk2NzARhg9odHRwOi8veGVzdC85NjgwEYYPaHR0
-+cDovL3hlc3QvOTY5MBGGD2h0dHA6Ly94ZXN0Lzk3MDARhg9odHRwOi8veGVzdC85
-+NzEwEYYPaHR0cDovL3hlc3QvOTcyMBGGD2h0dHA6Ly94ZXN0Lzk3MzARhg9odHRw
-+Oi8veGVzdC85NzQwEYYPaHR0cDovL3hlc3QvOTc1MBGGD2h0dHA6Ly94ZXN0Lzk3
-+NjARhg9odHRwOi8veGVzdC85NzcwEYYPaHR0cDovL3hlc3QvOTc4MBGGD2h0dHA6
-+Ly94ZXN0Lzk3OTARhg9odHRwOi8veGVzdC85ODAwEYYPaHR0cDovL3hlc3QvOTgx
-+MBGGD2h0dHA6Ly94ZXN0Lzk4MjARhg9odHRwOi8veGVzdC85ODMwEYYPaHR0cDov
-+L3hlc3QvOTg0MBGGD2h0dHA6Ly94ZXN0Lzk4NTARhg9odHRwOi8veGVzdC85ODYw
-+EYYPaHR0cDovL3hlc3QvOTg3MBGGD2h0dHA6Ly94ZXN0Lzk4ODARhg9odHRwOi8v
-+eGVzdC85ODkwEYYPaHR0cDovL3hlc3QvOTkwMBGGD2h0dHA6Ly94ZXN0Lzk5MTAR
-+hg9odHRwOi8veGVzdC85OTIwEYYPaHR0cDovL3hlc3QvOTkzMBGGD2h0dHA6Ly94
-+ZXN0Lzk5NDARhg9odHRwOi8veGVzdC85OTUwEYYPaHR0cDovL3hlc3QvOTk2MBGG
-+D2h0dHA6Ly94ZXN0Lzk5NzARhg9odHRwOi8veGVzdC85OTgwEYYPaHR0cDovL3hl
-+c3QvOTk5MBKGEGh0dHA6Ly94ZXN0LzEwMDAwEoYQaHR0cDovL3hlc3QvMTAwMTAS
-+hhBodHRwOi8veGVzdC8xMDAyMBKGEGh0dHA6Ly94ZXN0LzEwMDMwEoYQaHR0cDov
-+L3hlc3QvMTAwNDAShhBodHRwOi8veGVzdC8xMDA1MBKGEGh0dHA6Ly94ZXN0LzEw
-+MDYwEoYQaHR0cDovL3hlc3QvMTAwNzAShhBodHRwOi8veGVzdC8xMDA4MBKGEGh0
-+dHA6Ly94ZXN0LzEwMDkwEoYQaHR0cDovL3hlc3QvMTAxMDAShhBodHRwOi8veGVz
-+dC8xMDExMBKGEGh0dHA6Ly94ZXN0LzEwMTIwEoYQaHR0cDovL3hlc3QvMTAxMzAS
-+hhBodHRwOi8veGVzdC8xMDE0MBKGEGh0dHA6Ly94ZXN0LzEwMTUwEoYQaHR0cDov
-+L3hlc3QvMTAxNjAShhBodHRwOi8veGVzdC8xMDE3MBKGEGh0dHA6Ly94ZXN0LzEw
-+MTgwEoYQaHR0cDovL3hlc3QvMTAxOTAShhBodHRwOi8veGVzdC8xMDIwMBKGEGh0
-+dHA6Ly94ZXN0LzEwMjEwEoYQaHR0cDovL3hlc3QvMTAyMjAShhBodHRwOi8veGVz
-+dC8xMDIzMBKGEGh0dHA6Ly94ZXN0LzEwMjQwDQYJKoZIhvcNAQELBQADggEBADeo
-+vuQDYmMVsP6+SX8iXnr4tDMM/jtBDJncvbCjDDpUQidiGBWv5tWRYxcdGz/K9i4v
-+bnFeZoYnaZExXTWF1EZ3aUVQBZy8ObgP0JamZQLTgFOsWJzz7CcnsjNEURd5kOqx
-+VzL34FikmWR4VWEW01FizyYCjX3fLdjD0gBeA0l4ILd4np62VulITcVa6ijoFnBK
-+ObsdiEBa/WeCc/PG8untcIPecj99CC8aQ03JsunO5kOpdCXNupXNUZfLVtTm5tlp
-+Cl9IFyo7Qayl7B8wybLxaI+hDx59nuO+u43LbkFqFnpI9awUaffeY/yUgOdi2uaZ
-+Eq3x0l12a8MRblVdfuw=
- -----END CERTIFICATE-----
-
- Certificate:
-@@ -7024,7 +5009,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 3c:e5:fc:81:88:59:a8:50:16:c1:7f:d7:e5:2a:e5:96:7f:c2:f6:f5
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Root
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-diff --git a/net/data/verify_certificate_chain_unittest/many-names/ok-different-types-dirnames.pem b/net/data/verify_certificate_chain_unittest/many-names/ok-different-types-dirnames.pem
-deleted file mode 100644
-index 54901d92e5ce8..0000000000000
---- a/net/data/verify_certificate_chain_unittest/many-names/ok-different-types-dirnames.pem
-+++ /dev/null
-@@ -1,8708 +0,0 @@
--[Created by: generate-chains.py]
--
--A chain containing a large number of name constraints and names,
--but of different types, thus not triggering the limit.
--
--Certificate:
-- Data:
-- Version: 3 (0x2)
-- Serial Number:
-- 2f:ab:b4:3d:dc:c0:77:80:2a:03:09:ad:43:74:02:bf:98:d8:de
-- Signature Algorithm: sha256WithRSAEncryption
-- Issuer: CN=Intermediate
-- Validity
-- Not Before: Oct 5 12:00:00 2021 GMT
-- Not After : Oct 5 12:00:00 2022 GMT
-- Subject: CN=t0
-- Subject Public Key Info:
-- Public Key Algorithm: rsaEncryption
-- RSA Public-Key: (2048 bit)
-- Modulus:
-- 00:db:2c:53:01:ce:f9:1a:83:36:52:51:2a:5b:42:
-- 63:de:32:75:11:6a:7d:b0:a1:e4:77:47:9b:71:e5:
-- a6:2d:64:d7:ae:5b:04:ed:7a:3f:c7:f6:ca:2b:2b:
-- ad:cd:6c:88:a5:8e:36:fb:e7:a2:22:b5:7d:54:79:
-- e9:d5:7a:5b:ca:2b:29:6c:0d:84:0a:10:c4:21:b6:
-- 58:98:bb:0d:b6:0c:8d:56:5b:2c:85:59:07:ca:06:
-- 46:36:25:1a:29:8e:c4:39:b7:c3:31:ce:6e:49:c2:
-- 01:cf:b0:3b:27:43:8a:e3:d5:06:1f:2d:93:9d:dd:
-- 7a:45:65:6d:fd:b4:b1:c0:10:59:42:f2:1e:8f:ce:
-- 43:ac:97:25:c1:7c:e2:51:e1:44:35:5b:94:aa:03:
-- 6e:da:71:2f:25:7f:58:30:01:e1:12:17:1e:f2:aa:
-- 6c:22:80:b1:c9:65:ea:77:95:b3:07:c4:f7:72:38:
-- 34:fe:a0:43:33:4c:66:6d:a1:e8:a1:04:bc:6f:14:
-- 39:39:44:2e:38:37:74:c9:0a:21:85:91:21:b7:4e:
-- ba:b0:99:4a:76:98:7b:58:ca:1c:d3:b0:40:c3:d9:
-- 2a:75:fb:eb:19:ea:e3:1a:98:31:52:97:e9:7f:a4:
-- 7b:21:7f:2f:dc:62:86:8f:fd:fd:a8:88:e8:4b:44:
-- 52:bd
-- Exponent: 65537 (0x10001)
-- X509v3 extensions:
-- X509v3 Subject Key Identifier:
-- 3B:B4:05:CC:AA:BA:51:3D:FC:F2:F9:1E:25:53:72:E1:3A:F2:9A:DF
-- X509v3 Authority Key Identifier:
-- keyid:92:11:3F:AC:11:96:C7:66:37:CF:83:5A:24:F0:3A:77:AF:33:8D:7F
--
-- Authority Information Access:
-- CA Issuers - URI:http://url-for-aia/Intermediate.cer
--
-- X509v3 CRL Distribution Points:
--
-- Full Name:
-- URI:http://url-for-crl/Intermediate.crl
--
-- X509v3 Key Usage: critical
-- Digital Signature, Key Encipherment
-- X509v3 Extended Key Usage:
-- TLS Web Server Authentication, TLS Web Client Authentication
-- X509v3 Subject Alternative Name:
-- DirName:/CN=t0, DirName:/CN=t1, DirName:/CN=t2, DirName:/CN=t3, DirName:/CN=t4, DirName:/CN=t5, DirName:/CN=t6, DirName:/CN=t7, DirName:/CN=t8, DirName:/CN=t9, DirName:/CN=t10, DirName:/CN=t11, DirName:/CN=t12, DirName:/CN=t13, DirName:/CN=t14, DirName:/CN=t15, DirName:/CN=t16, DirName:/CN=t17, DirName:/CN=t18, DirName:/CN=t19, DirName:/CN=t20, DirName:/CN=t21, DirName:/CN=t22, DirName:/CN=t23, DirName:/CN=t24, DirName:/CN=t25, DirName:/CN=t26, DirName:/CN=t27, DirName:/CN=t28, DirName:/CN=t29, DirName:/CN=t30, DirName:/CN=t31, DirName:/CN=t32, DirName:/CN=t33, DirName:/CN=t34, DirName:/CN=t35, DirName:/CN=t36, DirName:/CN=t37, DirName:/CN=t38, DirName:/CN=t39, DirName:/CN=t40, DirName:/CN=t41, DirName:/CN=t42, DirName:/CN=t43, DirName:/CN=t44, DirName:/CN=t45, DirName:/CN=t46, DirName:/CN=t47, DirName:/CN=t48, DirName:/CN=t49, DirName:/CN=t50, DirName:/CN=t51, DirName:/CN=t52, DirName:/CN=t53, DirName:/CN=t54, DirName:/CN=t55, DirName:/CN=t56, DirName:/CN=t57, DirName:/CN=t58, DirName:/CN=t59, DirName:/CN=t60, DirName:/CN=t61, DirName:/CN=t62, DirName:/CN=t63, DirName:/CN=t64, DirName:/CN=t65, DirName:/CN=t66, DirName:/CN=t67, DirName:/CN=t68, DirName:/CN=t69, DirName:/CN=t70, DirName:/CN=t71, DirName:/CN=t72, DirName:/CN=t73, DirName:/CN=t74, DirName:/CN=t75, DirName:/CN=t76, DirName:/CN=t77, DirName:/CN=t78, DirName:/CN=t79, DirName:/CN=t80, DirName:/CN=t81, DirName:/CN=t82, DirName:/CN=t83, DirName:/CN=t84, DirName:/CN=t85, DirName:/CN=t86, DirName:/CN=t87, DirName:/CN=t88, DirName:/CN=t89, DirName:/CN=t90, DirName:/CN=t91, DirName:/CN=t92, DirName:/CN=t93, DirName:/CN=t94, DirName:/CN=t95, DirName:/CN=t96, DirName:/CN=t97, DirName:/CN=t98, DirName:/CN=t99, DirName:/CN=t100, DirName:/CN=t101, DirName:/CN=t102, DirName:/CN=t103, DirName:/CN=t104, DirName:/CN=t105, DirName:/CN=t106, DirName:/CN=t107, DirName:/CN=t108, DirName:/CN=t109, DirName:/CN=t110, DirName:/CN=t111, DirName:/CN=t112, DirName:/CN=t113, DirName:/CN=t114, DirName:/CN=t115, DirName:/CN=t116, DirName:/CN=t117, DirName:/CN=t118, DirName:/CN=t119, DirName:/CN=t120, DirName:/CN=t121, DirName:/CN=t122, DirName:/CN=t123, DirName:/CN=t124, DirName:/CN=t125, DirName:/CN=t126, DirName:/CN=t127, DirName:/CN=t128, DirName:/CN=t129, DirName:/CN=t130, DirName:/CN=t131, DirName:/CN=t132, DirName:/CN=t133, DirName:/CN=t134, DirName:/CN=t135, DirName:/CN=t136, DirName:/CN=t137, DirName:/CN=t138, DirName:/CN=t139, DirName:/CN=t140, DirName:/CN=t141, DirName:/CN=t142, DirName:/CN=t143, DirName:/CN=t144, DirName:/CN=t145, DirName:/CN=t146, DirName:/CN=t147, DirName:/CN=t148, DirName:/CN=t149, DirName:/CN=t150, DirName:/CN=t151, DirName:/CN=t152, DirName:/CN=t153, DirName:/CN=t154, DirName:/CN=t155, DirName:/CN=t156, DirName:/CN=t157, DirName:/CN=t158, DirName:/CN=t159, DirName:/CN=t160, DirName:/CN=t161, DirName:/CN=t162, DirName:/CN=t163, DirName:/CN=t164, DirName:/CN=t165, DirName:/CN=t166, DirName:/CN=t167, DirName:/CN=t168, DirName:/CN=t169, DirName:/CN=t170, DirName:/CN=t171, DirName:/CN=t172, DirName:/CN=t173, DirName:/CN=t174, DirName:/CN=t175, DirName:/CN=t176, DirName:/CN=t177, DirName:/CN=t178, DirName:/CN=t179, DirName:/CN=t180, DirName:/CN=t181, DirName:/CN=t182, DirName:/CN=t183, DirName:/CN=t184, DirName:/CN=t185, DirName:/CN=t186, DirName:/CN=t187, DirName:/CN=t188, DirName:/CN=t189, DirName:/CN=t190, DirName:/CN=t191, DirName:/CN=t192, DirName:/CN=t193, DirName:/CN=t194, DirName:/CN=t195, DirName:/CN=t196, DirName:/CN=t197, DirName:/CN=t198, DirName:/CN=t199, DirName:/CN=t200, DirName:/CN=t201, DirName:/CN=t202, DirName:/CN=t203, DirName:/CN=t204, DirName:/CN=t205, DirName:/CN=t206, DirName:/CN=t207, DirName:/CN=t208, DirName:/CN=t209, DirName:/CN=t210, DirName:/CN=t211, DirName:/CN=t212, DirName:/CN=t213, DirName:/CN=t214, DirName:/CN=t215, DirName:/CN=t216, DirName:/CN=t217, DirName:/CN=t218, DirName:/CN=t219, DirName:/CN=t220, DirName:/CN=t221, DirName:/CN=t222, DirName:/CN=t223, DirName:/CN=t224, DirName:/CN=t225, DirName:/CN=t226, DirName:/CN=t227, DirName:/CN=t228, DirName:/CN=t229, DirName:/CN=t230, DirName:/CN=t231, DirName:/CN=t232, DirName:/CN=t233, DirName:/CN=t234, DirName:/CN=t235, DirName:/CN=t236, DirName:/CN=t237, DirName:/CN=t238, DirName:/CN=t239, DirName:/CN=t240, DirName:/CN=t241, DirName:/CN=t242, DirName:/CN=t243, DirName:/CN=t244, DirName:/CN=t245, DirName:/CN=t246, DirName:/CN=t247, DirName:/CN=t248, DirName:/CN=t249, DirName:/CN=t250, DirName:/CN=t251, DirName:/CN=t252, DirName:/CN=t253, DirName:/CN=t254, DirName:/CN=t255, DirName:/CN=t256, DirName:/CN=t257, DirName:/CN=t258, DirName:/CN=t259, DirName:/CN=t260, DirName:/CN=t261, DirName:/CN=t262, DirName:/CN=t263, DirName:/CN=t264, DirName:/CN=t265, DirName:/CN=t266, DirName:/CN=t267, DirName:/CN=t268, DirName:/CN=t269, DirName:/CN=t270, DirName:/CN=t271, DirName:/CN=t272, DirName:/CN=t273, DirName:/CN=t274, DirName:/CN=t275, DirName:/CN=t276, DirName:/CN=t277, DirName:/CN=t278, DirName:/CN=t279, DirName:/CN=t280, DirName:/CN=t281, DirName:/CN=t282, DirName:/CN=t283, DirName:/CN=t284, DirName:/CN=t285, DirName:/CN=t286, DirName:/CN=t287, DirName:/CN=t288, DirName:/CN=t289, DirName:/CN=t290, DirName:/CN=t291, DirName:/CN=t292, DirName:/CN=t293, DirName:/CN=t294, DirName:/CN=t295, DirName:/CN=t296, DirName:/CN=t297, DirName:/CN=t298, DirName:/CN=t299, DirName:/CN=t300, DirName:/CN=t301, DirName:/CN=t302, DirName:/CN=t303, DirName:/CN=t304, DirName:/CN=t305, DirName:/CN=t306, DirName:/CN=t307, DirName:/CN=t308, DirName:/CN=t309, DirName:/CN=t310, DirName:/CN=t311, DirName:/CN=t312, DirName:/CN=t313, DirName:/CN=t314, DirName:/CN=t315, DirName:/CN=t316, DirName:/CN=t317, DirName:/CN=t318, DirName:/CN=t319, DirName:/CN=t320, DirName:/CN=t321, DirName:/CN=t322, DirName:/CN=t323, DirName:/CN=t324, DirName:/CN=t325, DirName:/CN=t326, DirName:/CN=t327, DirName:/CN=t328, DirName:/CN=t329, DirName:/CN=t330, DirName:/CN=t331, DirName:/CN=t332, DirName:/CN=t333, DirName:/CN=t334, DirName:/CN=t335, DirName:/CN=t336, DirName:/CN=t337, DirName:/CN=t338, DirName:/CN=t339, DirName:/CN=t340, DirName:/CN=t341, DirName:/CN=t342, DirName:/CN=t343, DirName:/CN=t344, DirName:/CN=t345, DirName:/CN=t346, DirName:/CN=t347, DirName:/CN=t348, DirName:/CN=t349, DirName:/CN=t350, DirName:/CN=t351, DirName:/CN=t352, DirName:/CN=t353, DirName:/CN=t354, DirName:/CN=t355, DirName:/CN=t356, DirName:/CN=t357, DirName:/CN=t358, DirName:/CN=t359, DirName:/CN=t360, DirName:/CN=t361, DirName:/CN=t362, DirName:/CN=t363, DirName:/CN=t364, DirName:/CN=t365, DirName:/CN=t366, DirName:/CN=t367, DirName:/CN=t368, DirName:/CN=t369, DirName:/CN=t370, DirName:/CN=t371, DirName:/CN=t372, DirName:/CN=t373, DirName:/CN=t374, DirName:/CN=t375, DirName:/CN=t376, DirName:/CN=t377, DirName:/CN=t378, DirName:/CN=t379, DirName:/CN=t380, DirName:/CN=t381, DirName:/CN=t382, DirName:/CN=t383, DirName:/CN=t384, DirName:/CN=t385, DirName:/CN=t386, DirName:/CN=t387, DirName:/CN=t388, DirName:/CN=t389, DirName:/CN=t390, DirName:/CN=t391, DirName:/CN=t392, DirName:/CN=t393, DirName:/CN=t394, DirName:/CN=t395, DirName:/CN=t396, DirName:/CN=t397, DirName:/CN=t398, DirName:/CN=t399, DirName:/CN=t400, DirName:/CN=t401, DirName:/CN=t402, DirName:/CN=t403, DirName:/CN=t404, DirName:/CN=t405, DirName:/CN=t406, DirName:/CN=t407, DirName:/CN=t408, DirName:/CN=t409, DirName:/CN=t410, DirName:/CN=t411, DirName:/CN=t412, DirName:/CN=t413, DirName:/CN=t414, DirName:/CN=t415, DirName:/CN=t416, DirName:/CN=t417, DirName:/CN=t418, DirName:/CN=t419, DirName:/CN=t420, DirName:/CN=t421, DirName:/CN=t422, DirName:/CN=t423, DirName:/CN=t424, DirName:/CN=t425, DirName:/CN=t426, DirName:/CN=t427, DirName:/CN=t428, DirName:/CN=t429, DirName:/CN=t430, DirName:/CN=t431, DirName:/CN=t432, DirName:/CN=t433, DirName:/CN=t434, DirName:/CN=t435, DirName:/CN=t436, DirName:/CN=t437, DirName:/CN=t438, DirName:/CN=t439, DirName:/CN=t440, DirName:/CN=t441, DirName:/CN=t442, DirName:/CN=t443, DirName:/CN=t444, DirName:/CN=t445, DirName:/CN=t446, DirName:/CN=t447, DirName:/CN=t448, DirName:/CN=t449, DirName:/CN=t450, DirName:/CN=t451, DirName:/CN=t452, DirName:/CN=t453, DirName:/CN=t454, DirName:/CN=t455, DirName:/CN=t456, DirName:/CN=t457, DirName:/CN=t458, DirName:/CN=t459, DirName:/CN=t460, DirName:/CN=t461, DirName:/CN=t462, DirName:/CN=t463, DirName:/CN=t464, DirName:/CN=t465, DirName:/CN=t466, DirName:/CN=t467, DirName:/CN=t468, DirName:/CN=t469, DirName:/CN=t470, DirName:/CN=t471, DirName:/CN=t472, DirName:/CN=t473, DirName:/CN=t474, DirName:/CN=t475, DirName:/CN=t476, DirName:/CN=t477, DirName:/CN=t478, DirName:/CN=t479, DirName:/CN=t480, DirName:/CN=t481, DirName:/CN=t482, DirName:/CN=t483, DirName:/CN=t484, DirName:/CN=t485, DirName:/CN=t486, DirName:/CN=t487, DirName:/CN=t488, DirName:/CN=t489, DirName:/CN=t490, DirName:/CN=t491, DirName:/CN=t492, DirName:/CN=t493, DirName:/CN=t494, DirName:/CN=t495, DirName:/CN=t496, DirName:/CN=t497, DirName:/CN=t498, DirName:/CN=t499, DirName:/CN=t500, DirName:/CN=t501, DirName:/CN=t502, DirName:/CN=t503, DirName:/CN=t504, DirName:/CN=t505, DirName:/CN=t506, DirName:/CN=t507, DirName:/CN=t508, DirName:/CN=t509, DirName:/CN=t510, DirName:/CN=t511, DirName:/CN=t512, DirName:/CN=t513, DirName:/CN=t514, DirName:/CN=t515, DirName:/CN=t516, DirName:/CN=t517, DirName:/CN=t518, DirName:/CN=t519, DirName:/CN=t520, DirName:/CN=t521, DirName:/CN=t522, DirName:/CN=t523, DirName:/CN=t524, DirName:/CN=t525, DirName:/CN=t526, DirName:/CN=t527, DirName:/CN=t528, DirName:/CN=t529, DirName:/CN=t530, DirName:/CN=t531, DirName:/CN=t532, DirName:/CN=t533, DirName:/CN=t534, DirName:/CN=t535, DirName:/CN=t536, DirName:/CN=t537, DirName:/CN=t538, DirName:/CN=t539, DirName:/CN=t540, DirName:/CN=t541, DirName:/CN=t542, DirName:/CN=t543, DirName:/CN=t544, DirName:/CN=t545, DirName:/CN=t546, DirName:/CN=t547, DirName:/CN=t548, DirName:/CN=t549, DirName:/CN=t550, DirName:/CN=t551, DirName:/CN=t552, DirName:/CN=t553, DirName:/CN=t554, DirName:/CN=t555, DirName:/CN=t556, DirName:/CN=t557, DirName:/CN=t558, DirName:/CN=t559, DirName:/CN=t560, DirName:/CN=t561, DirName:/CN=t562, DirName:/CN=t563, DirName:/CN=t564, DirName:/CN=t565, DirName:/CN=t566, DirName:/CN=t567, DirName:/CN=t568, DirName:/CN=t569, DirName:/CN=t570, DirName:/CN=t571, DirName:/CN=t572, DirName:/CN=t573, DirName:/CN=t574, DirName:/CN=t575, DirName:/CN=t576, DirName:/CN=t577, DirName:/CN=t578, DirName:/CN=t579, DirName:/CN=t580, DirName:/CN=t581, DirName:/CN=t582, DirName:/CN=t583, DirName:/CN=t584, DirName:/CN=t585, DirName:/CN=t586, DirName:/CN=t587, DirName:/CN=t588, DirName:/CN=t589, DirName:/CN=t590, DirName:/CN=t591, DirName:/CN=t592, DirName:/CN=t593, DirName:/CN=t594, DirName:/CN=t595, DirName:/CN=t596, DirName:/CN=t597, DirName:/CN=t598, DirName:/CN=t599, DirName:/CN=t600, DirName:/CN=t601, DirName:/CN=t602, DirName:/CN=t603, DirName:/CN=t604, DirName:/CN=t605, DirName:/CN=t606, DirName:/CN=t607, DirName:/CN=t608, DirName:/CN=t609, DirName:/CN=t610, DirName:/CN=t611, DirName:/CN=t612, DirName:/CN=t613, DirName:/CN=t614, DirName:/CN=t615, DirName:/CN=t616, DirName:/CN=t617, DirName:/CN=t618, DirName:/CN=t619, DirName:/CN=t620, DirName:/CN=t621, DirName:/CN=t622, DirName:/CN=t623, DirName:/CN=t624, DirName:/CN=t625, DirName:/CN=t626, DirName:/CN=t627, DirName:/CN=t628, DirName:/CN=t629, DirName:/CN=t630, DirName:/CN=t631, DirName:/CN=t632, DirName:/CN=t633, DirName:/CN=t634, DirName:/CN=t635, DirName:/CN=t636, DirName:/CN=t637, DirName:/CN=t638, DirName:/CN=t639, DirName:/CN=t640, DirName:/CN=t641, DirName:/CN=t642, DirName:/CN=t643, DirName:/CN=t644, DirName:/CN=t645, DirName:/CN=t646, DirName:/CN=t647, DirName:/CN=t648, DirName:/CN=t649, DirName:/CN=t650, DirName:/CN=t651, DirName:/CN=t652, DirName:/CN=t653, DirName:/CN=t654, DirName:/CN=t655, DirName:/CN=t656, DirName:/CN=t657, DirName:/CN=t658, DirName:/CN=t659, DirName:/CN=t660, DirName:/CN=t661, DirName:/CN=t662, DirName:/CN=t663, DirName:/CN=t664, DirName:/CN=t665, DirName:/CN=t666, DirName:/CN=t667, DirName:/CN=t668, DirName:/CN=t669, DirName:/CN=t670, DirName:/CN=t671, DirName:/CN=t672, DirName:/CN=t673, DirName:/CN=t674, DirName:/CN=t675, DirName:/CN=t676, DirName:/CN=t677, DirName:/CN=t678, DirName:/CN=t679, DirName:/CN=t680, DirName:/CN=t681, DirName:/CN=t682, DirName:/CN=t683, DirName:/CN=t684, DirName:/CN=t685, DirName:/CN=t686, DirName:/CN=t687, DirName:/CN=t688, DirName:/CN=t689, DirName:/CN=t690, DirName:/CN=t691, DirName:/CN=t692, DirName:/CN=t693, DirName:/CN=t694, DirName:/CN=t695, DirName:/CN=t696, DirName:/CN=t697, DirName:/CN=t698, DirName:/CN=t699, DirName:/CN=t700, DirName:/CN=t701, DirName:/CN=t702, DirName:/CN=t703, DirName:/CN=t704, DirName:/CN=t705, DirName:/CN=t706, DirName:/CN=t707, DirName:/CN=t708, DirName:/CN=t709, DirName:/CN=t710, DirName:/CN=t711, DirName:/CN=t712, DirName:/CN=t713, DirName:/CN=t714, DirName:/CN=t715, DirName:/CN=t716, DirName:/CN=t717, DirName:/CN=t718, DirName:/CN=t719, DirName:/CN=t720, DirName:/CN=t721, DirName:/CN=t722, DirName:/CN=t723, DirName:/CN=t724, DirName:/CN=t725, DirName:/CN=t726, DirName:/CN=t727, DirName:/CN=t728, DirName:/CN=t729, DirName:/CN=t730, DirName:/CN=t731, DirName:/CN=t732, DirName:/CN=t733, DirName:/CN=t734, DirName:/CN=t735, DirName:/CN=t736, DirName:/CN=t737, DirName:/CN=t738, DirName:/CN=t739, DirName:/CN=t740, DirName:/CN=t741, DirName:/CN=t742, DirName:/CN=t743, DirName:/CN=t744, DirName:/CN=t745, DirName:/CN=t746, DirName:/CN=t747, DirName:/CN=t748, DirName:/CN=t749, DirName:/CN=t750, DirName:/CN=t751, DirName:/CN=t752, DirName:/CN=t753, DirName:/CN=t754, DirName:/CN=t755, DirName:/CN=t756, DirName:/CN=t757, DirName:/CN=t758, DirName:/CN=t759, DirName:/CN=t760, DirName:/CN=t761, DirName:/CN=t762, DirName:/CN=t763, DirName:/CN=t764, DirName:/CN=t765, DirName:/CN=t766, DirName:/CN=t767, DirName:/CN=t768, DirName:/CN=t769, DirName:/CN=t770, DirName:/CN=t771, DirName:/CN=t772, DirName:/CN=t773, DirName:/CN=t774, DirName:/CN=t775, DirName:/CN=t776, DirName:/CN=t777, DirName:/CN=t778, DirName:/CN=t779, DirName:/CN=t780, DirName:/CN=t781, DirName:/CN=t782, DirName:/CN=t783, DirName:/CN=t784, DirName:/CN=t785, DirName:/CN=t786, DirName:/CN=t787, DirName:/CN=t788, DirName:/CN=t789, DirName:/CN=t790, DirName:/CN=t791, DirName:/CN=t792, DirName:/CN=t793, DirName:/CN=t794, DirName:/CN=t795, DirName:/CN=t796, DirName:/CN=t797, DirName:/CN=t798, DirName:/CN=t799, DirName:/CN=t800, DirName:/CN=t801, DirName:/CN=t802, DirName:/CN=t803, DirName:/CN=t804, DirName:/CN=t805, DirName:/CN=t806, DirName:/CN=t807, DirName:/CN=t808, DirName:/CN=t809, DirName:/CN=t810, DirName:/CN=t811, DirName:/CN=t812, DirName:/CN=t813, DirName:/CN=t814, DirName:/CN=t815, DirName:/CN=t816, DirName:/CN=t817, DirName:/CN=t818, DirName:/CN=t819, DirName:/CN=t820, DirName:/CN=t821, DirName:/CN=t822, DirName:/CN=t823, DirName:/CN=t824, DirName:/CN=t825, DirName:/CN=t826, DirName:/CN=t827, DirName:/CN=t828, DirName:/CN=t829, DirName:/CN=t830, DirName:/CN=t831, DirName:/CN=t832, DirName:/CN=t833, DirName:/CN=t834, DirName:/CN=t835, DirName:/CN=t836, DirName:/CN=t837, DirName:/CN=t838, DirName:/CN=t839, DirName:/CN=t840, DirName:/CN=t841, DirName:/CN=t842, DirName:/CN=t843, DirName:/CN=t844, DirName:/CN=t845, DirName:/CN=t846, DirName:/CN=t847, DirName:/CN=t848, DirName:/CN=t849, DirName:/CN=t850, DirName:/CN=t851, DirName:/CN=t852, DirName:/CN=t853, DirName:/CN=t854, DirName:/CN=t855, DirName:/CN=t856, DirName:/CN=t857, DirName:/CN=t858, DirName:/CN=t859, DirName:/CN=t860, DirName:/CN=t861, DirName:/CN=t862, DirName:/CN=t863, DirName:/CN=t864, DirName:/CN=t865, DirName:/CN=t866, DirName:/CN=t867, DirName:/CN=t868, DirName:/CN=t869, DirName:/CN=t870, DirName:/CN=t871, DirName:/CN=t872, DirName:/CN=t873, DirName:/CN=t874, DirName:/CN=t875, DirName:/CN=t876, DirName:/CN=t877, DirName:/CN=t878, DirName:/CN=t879, DirName:/CN=t880, DirName:/CN=t881, DirName:/CN=t882, DirName:/CN=t883, DirName:/CN=t884, DirName:/CN=t885, DirName:/CN=t886, DirName:/CN=t887, DirName:/CN=t888, DirName:/CN=t889, DirName:/CN=t890, DirName:/CN=t891, DirName:/CN=t892, DirName:/CN=t893, DirName:/CN=t894, DirName:/CN=t895, DirName:/CN=t896, DirName:/CN=t897, DirName:/CN=t898, DirName:/CN=t899, DirName:/CN=t900, DirName:/CN=t901, DirName:/CN=t902, DirName:/CN=t903, DirName:/CN=t904, DirName:/CN=t905, DirName:/CN=t906, DirName:/CN=t907, DirName:/CN=t908, DirName:/CN=t909, DirName:/CN=t910, DirName:/CN=t911, DirName:/CN=t912, DirName:/CN=t913, DirName:/CN=t914, DirName:/CN=t915, DirName:/CN=t916, DirName:/CN=t917, DirName:/CN=t918, DirName:/CN=t919, DirName:/CN=t920, DirName:/CN=t921, DirName:/CN=t922, DirName:/CN=t923, DirName:/CN=t924, DirName:/CN=t925, DirName:/CN=t926, DirName:/CN=t927, DirName:/CN=t928, DirName:/CN=t929, DirName:/CN=t930, DirName:/CN=t931, DirName:/CN=t932, DirName:/CN=t933, DirName:/CN=t934, DirName:/CN=t935, DirName:/CN=t936, DirName:/CN=t937, DirName:/CN=t938, DirName:/CN=t939, DirName:/CN=t940, DirName:/CN=t941, DirName:/CN=t942, DirName:/CN=t943, DirName:/CN=t944, DirName:/CN=t945, DirName:/CN=t946, DirName:/CN=t947, DirName:/CN=t948, DirName:/CN=t949, DirName:/CN=t950, DirName:/CN=t951, DirName:/CN=t952, DirName:/CN=t953, DirName:/CN=t954, DirName:/CN=t955, DirName:/CN=t956, DirName:/CN=t957, DirName:/CN=t958, DirName:/CN=t959, DirName:/CN=t960, DirName:/CN=t961, DirName:/CN=t962, DirName:/CN=t963, DirName:/CN=t964, DirName:/CN=t965, DirName:/CN=t966, DirName:/CN=t967, DirName:/CN=t968, DirName:/CN=t969, DirName:/CN=t970, DirName:/CN=t971, DirName:/CN=t972, DirName:/CN=t973, DirName:/CN=t974, DirName:/CN=t975, DirName:/CN=t976, DirName:/CN=t977, DirName:/CN=t978, DirName:/CN=t979, DirName:/CN=t980, DirName:/CN=t981, DirName:/CN=t982, DirName:/CN=t983, DirName:/CN=t984, DirName:/CN=t985, DirName:/CN=t986, DirName:/CN=t987, DirName:/CN=t988, DirName:/CN=t989, DirName:/CN=t990, DirName:/CN=t991, DirName:/CN=t992, DirName:/CN=t993, DirName:/CN=t994, DirName:/CN=t995, DirName:/CN=t996, DirName:/CN=t997, DirName:/CN=t998, DirName:/CN=t999, DirName:/CN=t1000, DirName:/CN=t1001, DirName:/CN=t1002, DirName:/CN=t1003, DirName:/CN=t1004, DirName:/CN=t1005, DirName:/CN=t1006, DirName:/CN=t1007, DirName:/CN=t1008, DirName:/CN=t1009, DirName:/CN=t1010, DirName:/CN=t1011, DirName:/CN=t1012, DirName:/CN=t1013, DirName:/CN=t1014, DirName:/CN=t1015, DirName:/CN=t1016, DirName:/CN=t1017, DirName:/CN=t1018, DirName:/CN=t1019, DirName:/CN=t1020, DirName:/CN=t1021, DirName:/CN=t1022, DirName:/CN=t1023, DirName:/CN=t1024
-- Signature Algorithm: sha256WithRSAEncryption
-- 29:33:a7:c0:47:2d:36:80:2a:45:44:f6:f8:5c:57:01:4e:0c:
-- 1b:d2:82:ea:77:ad:54:0e:7f:27:71:2a:2b:53:29:8b:a8:50:
-- 0a:8d:bb:b5:17:cf:34:4a:c6:2e:12:a4:3d:e5:4a:9a:9b:87:
-- d5:18:b8:5e:a3:a6:24:1a:df:fa:54:c3:28:65:7f:17:6b:8e:
-- 3a:bc:39:67:28:89:36:8d:13:62:00:76:d1:96:0d:65:1f:6b:
-- db:18:01:40:b8:c4:d1:01:d5:16:ae:ff:1c:89:7e:7a:e9:8a:
-- c4:52:dd:b4:92:45:a2:5e:3c:85:44:e8:51:39:39:c1:47:fe:
-- 07:4e:66:94:40:fa:41:43:25:e0:f1:35:b5:e2:76:fe:eb:48:
-- ca:e6:d4:0a:5f:a0:d3:47:9d:67:a5:be:01:df:65:d2:5d:3c:
-- 5f:f3:54:f3:95:eb:20:86:ff:8f:b1:d6:36:54:b9:f1:f4:08:
-- e6:b5:e8:e2:8d:4b:7b:80:57:ec:87:ef:83:f0:c2:87:cb:2e:
-- 8e:0e:16:24:65:51:f1:0c:82:be:d1:99:b1:c6:07:39:2f:81:
-- e9:c3:8b:62:41:41:f1:84:84:d7:c8:8b:95:16:77:1b:c0:92:
-- f4:35:13:d9:34:4a:b4:b3:1e:1d:d8:69:72:d9:2c:d1:7f:80:
-- b0:e5:57:5d
-------BEGIN CERTIFICATE-----
--MIJPbDCCTlSgAwIBAgITL6u0PdzAd4AqAwmtQ3QCv5jY3jANBgkqhkiG9w0BAQsF
--ADAXMRUwEwYDVQQDDAxJbnRlcm1lZGlhdGUwHhcNMjExMDA1MTIwMDAwWhcNMjIx
--MDA1MTIwMDAwWjANMQswCQYDVQQDDAJ0MDCCASIwDQYJKoZIhvcNAQEBBQADggEP
--ADCCAQoCggEBANssUwHO+RqDNlJRKltCY94ydRFqfbCh5HdHm3Hlpi1k165bBO16
--P8f2yisrrc1siKWONvvnoiK1fVR56dV6W8orKWwNhAoQxCG2WJi7DbYMjVZbLIVZ
--B8oGRjYlGimOxDm3wzHObknCAc+wOydDiuPVBh8tk53dekVlbf20scAQWULyHo/O
--Q6yXJcF84lHhRDVblKoDbtpxLyV/WDAB4RIXHvKqbCKAscll6neVswfE93I4NP6g
--QzNMZm2h6KEEvG8UOTlELjg3dMkKIYWRIbdOurCZSnaYe1jKHNOwQMPZKnX76xnq
--4xqYMVKX6X+keyF/L9xiho/9/aiI6EtEUr0CAwEAAaOCTLkwgky1MB0GA1UdDgQW
--BBQ7tAXMqrpRPfzy+R4lU3LhOvKa3zAfBgNVHSMEGDAWgBSSET+sEZbHZjfPg1ok
--8Dp3rzONfzA/BggrBgEFBQcBAQQzMDEwLwYIKwYBBQUHMAKGI2h0dHA6Ly91cmwt
--Zm9yLWFpYS9JbnRlcm1lZGlhdGUuY2VyMDQGA1UdHwQtMCswKaAnoCWGI2h0dHA6
--Ly91cmwtZm9yLWNybC9JbnRlcm1lZGlhdGUuY3JsMA4GA1UdDwEB/wQEAwIFoDAd
--BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwgkvLBgNVHREEgkvCMIJLvqQP
--MA0xCzAJBgNVBAMMAnQwpA8wDTELMAkGA1UEAwwCdDGkDzANMQswCQYDVQQDDAJ0
--MqQPMA0xCzAJBgNVBAMMAnQzpA8wDTELMAkGA1UEAwwCdDSkDzANMQswCQYDVQQD
--DAJ0NaQPMA0xCzAJBgNVBAMMAnQ2pA8wDTELMAkGA1UEAwwCdDekDzANMQswCQYD
--VQQDDAJ0OKQPMA0xCzAJBgNVBAMMAnQ5pBAwDjEMMAoGA1UEAwwDdDEwpBAwDjEM
--MAoGA1UEAwwDdDExpBAwDjEMMAoGA1UEAwwDdDEypBAwDjEMMAoGA1UEAwwDdDEz
--pBAwDjEMMAoGA1UEAwwDdDE0pBAwDjEMMAoGA1UEAwwDdDE1pBAwDjEMMAoGA1UE
--AwwDdDE2pBAwDjEMMAoGA1UEAwwDdDE3pBAwDjEMMAoGA1UEAwwDdDE4pBAwDjEM
--MAoGA1UEAwwDdDE5pBAwDjEMMAoGA1UEAwwDdDIwpBAwDjEMMAoGA1UEAwwDdDIx
--pBAwDjEMMAoGA1UEAwwDdDIypBAwDjEMMAoGA1UEAwwDdDIzpBAwDjEMMAoGA1UE
--AwwDdDI0pBAwDjEMMAoGA1UEAwwDdDI1pBAwDjEMMAoGA1UEAwwDdDI2pBAwDjEM
--MAoGA1UEAwwDdDI3pBAwDjEMMAoGA1UEAwwDdDI4pBAwDjEMMAoGA1UEAwwDdDI5
--pBAwDjEMMAoGA1UEAwwDdDMwpBAwDjEMMAoGA1UEAwwDdDMxpBAwDjEMMAoGA1UE
--AwwDdDMypBAwDjEMMAoGA1UEAwwDdDMzpBAwDjEMMAoGA1UEAwwDdDM0pBAwDjEM
--MAoGA1UEAwwDdDM1pBAwDjEMMAoGA1UEAwwDdDM2pBAwDjEMMAoGA1UEAwwDdDM3
--pBAwDjEMMAoGA1UEAwwDdDM4pBAwDjEMMAoGA1UEAwwDdDM5pBAwDjEMMAoGA1UE
--AwwDdDQwpBAwDjEMMAoGA1UEAwwDdDQxpBAwDjEMMAoGA1UEAwwDdDQypBAwDjEM
--MAoGA1UEAwwDdDQzpBAwDjEMMAoGA1UEAwwDdDQ0pBAwDjEMMAoGA1UEAwwDdDQ1
--pBAwDjEMMAoGA1UEAwwDdDQ2pBAwDjEMMAoGA1UEAwwDdDQ3pBAwDjEMMAoGA1UE
--AwwDdDQ4pBAwDjEMMAoGA1UEAwwDdDQ5pBAwDjEMMAoGA1UEAwwDdDUwpBAwDjEM
--MAoGA1UEAwwDdDUxpBAwDjEMMAoGA1UEAwwDdDUypBAwDjEMMAoGA1UEAwwDdDUz
--pBAwDjEMMAoGA1UEAwwDdDU0pBAwDjEMMAoGA1UEAwwDdDU1pBAwDjEMMAoGA1UE
--AwwDdDU2pBAwDjEMMAoGA1UEAwwDdDU3pBAwDjEMMAoGA1UEAwwDdDU4pBAwDjEM
--MAoGA1UEAwwDdDU5pBAwDjEMMAoGA1UEAwwDdDYwpBAwDjEMMAoGA1UEAwwDdDYx
--pBAwDjEMMAoGA1UEAwwDdDYypBAwDjEMMAoGA1UEAwwDdDYzpBAwDjEMMAoGA1UE
--AwwDdDY0pBAwDjEMMAoGA1UEAwwDdDY1pBAwDjEMMAoGA1UEAwwDdDY2pBAwDjEM
--MAoGA1UEAwwDdDY3pBAwDjEMMAoGA1UEAwwDdDY4pBAwDjEMMAoGA1UEAwwDdDY5
--pBAwDjEMMAoGA1UEAwwDdDcwpBAwDjEMMAoGA1UEAwwDdDcxpBAwDjEMMAoGA1UE
--AwwDdDcypBAwDjEMMAoGA1UEAwwDdDczpBAwDjEMMAoGA1UEAwwDdDc0pBAwDjEM
--MAoGA1UEAwwDdDc1pBAwDjEMMAoGA1UEAwwDdDc2pBAwDjEMMAoGA1UEAwwDdDc3
--pBAwDjEMMAoGA1UEAwwDdDc4pBAwDjEMMAoGA1UEAwwDdDc5pBAwDjEMMAoGA1UE
--AwwDdDgwpBAwDjEMMAoGA1UEAwwDdDgxpBAwDjEMMAoGA1UEAwwDdDgypBAwDjEM
--MAoGA1UEAwwDdDgzpBAwDjEMMAoGA1UEAwwDdDg0pBAwDjEMMAoGA1UEAwwDdDg1
--pBAwDjEMMAoGA1UEAwwDdDg2pBAwDjEMMAoGA1UEAwwDdDg3pBAwDjEMMAoGA1UE
--AwwDdDg4pBAwDjEMMAoGA1UEAwwDdDg5pBAwDjEMMAoGA1UEAwwDdDkwpBAwDjEM
--MAoGA1UEAwwDdDkxpBAwDjEMMAoGA1UEAwwDdDkypBAwDjEMMAoGA1UEAwwDdDkz
--pBAwDjEMMAoGA1UEAwwDdDk0pBAwDjEMMAoGA1UEAwwDdDk1pBAwDjEMMAoGA1UE
--AwwDdDk2pBAwDjEMMAoGA1UEAwwDdDk3pBAwDjEMMAoGA1UEAwwDdDk4pBAwDjEM
--MAoGA1UEAwwDdDk5pBEwDzENMAsGA1UEAwwEdDEwMKQRMA8xDTALBgNVBAMMBHQx
--MDGkETAPMQ0wCwYDVQQDDAR0MTAypBEwDzENMAsGA1UEAwwEdDEwM6QRMA8xDTAL
--BgNVBAMMBHQxMDSkETAPMQ0wCwYDVQQDDAR0MTA1pBEwDzENMAsGA1UEAwwEdDEw
--NqQRMA8xDTALBgNVBAMMBHQxMDekETAPMQ0wCwYDVQQDDAR0MTA4pBEwDzENMAsG
--A1UEAwwEdDEwOaQRMA8xDTALBgNVBAMMBHQxMTCkETAPMQ0wCwYDVQQDDAR0MTEx
--pBEwDzENMAsGA1UEAwwEdDExMqQRMA8xDTALBgNVBAMMBHQxMTOkETAPMQ0wCwYD
--VQQDDAR0MTE0pBEwDzENMAsGA1UEAwwEdDExNaQRMA8xDTALBgNVBAMMBHQxMTak
--ETAPMQ0wCwYDVQQDDAR0MTE3pBEwDzENMAsGA1UEAwwEdDExOKQRMA8xDTALBgNV
--BAMMBHQxMTmkETAPMQ0wCwYDVQQDDAR0MTIwpBEwDzENMAsGA1UEAwwEdDEyMaQR
--MA8xDTALBgNVBAMMBHQxMjKkETAPMQ0wCwYDVQQDDAR0MTIzpBEwDzENMAsGA1UE
--AwwEdDEyNKQRMA8xDTALBgNVBAMMBHQxMjWkETAPMQ0wCwYDVQQDDAR0MTI2pBEw
--DzENMAsGA1UEAwwEdDEyN6QRMA8xDTALBgNVBAMMBHQxMjikETAPMQ0wCwYDVQQD
--DAR0MTI5pBEwDzENMAsGA1UEAwwEdDEzMKQRMA8xDTALBgNVBAMMBHQxMzGkETAP
--MQ0wCwYDVQQDDAR0MTMypBEwDzENMAsGA1UEAwwEdDEzM6QRMA8xDTALBgNVBAMM
--BHQxMzSkETAPMQ0wCwYDVQQDDAR0MTM1pBEwDzENMAsGA1UEAwwEdDEzNqQRMA8x
--DTALBgNVBAMMBHQxMzekETAPMQ0wCwYDVQQDDAR0MTM4pBEwDzENMAsGA1UEAwwE
--dDEzOaQRMA8xDTALBgNVBAMMBHQxNDCkETAPMQ0wCwYDVQQDDAR0MTQxpBEwDzEN
--MAsGA1UEAwwEdDE0MqQRMA8xDTALBgNVBAMMBHQxNDOkETAPMQ0wCwYDVQQDDAR0
--MTQ0pBEwDzENMAsGA1UEAwwEdDE0NaQRMA8xDTALBgNVBAMMBHQxNDakETAPMQ0w
--CwYDVQQDDAR0MTQ3pBEwDzENMAsGA1UEAwwEdDE0OKQRMA8xDTALBgNVBAMMBHQx
--NDmkETAPMQ0wCwYDVQQDDAR0MTUwpBEwDzENMAsGA1UEAwwEdDE1MaQRMA8xDTAL
--BgNVBAMMBHQxNTKkETAPMQ0wCwYDVQQDDAR0MTUzpBEwDzENMAsGA1UEAwwEdDE1
--NKQRMA8xDTALBgNVBAMMBHQxNTWkETAPMQ0wCwYDVQQDDAR0MTU2pBEwDzENMAsG
--A1UEAwwEdDE1N6QRMA8xDTALBgNVBAMMBHQxNTikETAPMQ0wCwYDVQQDDAR0MTU5
--pBEwDzENMAsGA1UEAwwEdDE2MKQRMA8xDTALBgNVBAMMBHQxNjGkETAPMQ0wCwYD
--VQQDDAR0MTYypBEwDzENMAsGA1UEAwwEdDE2M6QRMA8xDTALBgNVBAMMBHQxNjSk
--ETAPMQ0wCwYDVQQDDAR0MTY1pBEwDzENMAsGA1UEAwwEdDE2NqQRMA8xDTALBgNV
--BAMMBHQxNjekETAPMQ0wCwYDVQQDDAR0MTY4pBEwDzENMAsGA1UEAwwEdDE2OaQR
--MA8xDTALBgNVBAMMBHQxNzCkETAPMQ0wCwYDVQQDDAR0MTcxpBEwDzENMAsGA1UE
--AwwEdDE3MqQRMA8xDTALBgNVBAMMBHQxNzOkETAPMQ0wCwYDVQQDDAR0MTc0pBEw
--DzENMAsGA1UEAwwEdDE3NaQRMA8xDTALBgNVBAMMBHQxNzakETAPMQ0wCwYDVQQD
--DAR0MTc3pBEwDzENMAsGA1UEAwwEdDE3OKQRMA8xDTALBgNVBAMMBHQxNzmkETAP
--MQ0wCwYDVQQDDAR0MTgwpBEwDzENMAsGA1UEAwwEdDE4MaQRMA8xDTALBgNVBAMM
--BHQxODKkETAPMQ0wCwYDVQQDDAR0MTgzpBEwDzENMAsGA1UEAwwEdDE4NKQRMA8x
--DTALBgNVBAMMBHQxODWkETAPMQ0wCwYDVQQDDAR0MTg2pBEwDzENMAsGA1UEAwwE
--dDE4N6QRMA8xDTALBgNVBAMMBHQxODikETAPMQ0wCwYDVQQDDAR0MTg5pBEwDzEN
--MAsGA1UEAwwEdDE5MKQRMA8xDTALBgNVBAMMBHQxOTGkETAPMQ0wCwYDVQQDDAR0
--MTkypBEwDzENMAsGA1UEAwwEdDE5M6QRMA8xDTALBgNVBAMMBHQxOTSkETAPMQ0w
--CwYDVQQDDAR0MTk1pBEwDzENMAsGA1UEAwwEdDE5NqQRMA8xDTALBgNVBAMMBHQx
--OTekETAPMQ0wCwYDVQQDDAR0MTk4pBEwDzENMAsGA1UEAwwEdDE5OaQRMA8xDTAL
--BgNVBAMMBHQyMDCkETAPMQ0wCwYDVQQDDAR0MjAxpBEwDzENMAsGA1UEAwwEdDIw
--MqQRMA8xDTALBgNVBAMMBHQyMDOkETAPMQ0wCwYDVQQDDAR0MjA0pBEwDzENMAsG
--A1UEAwwEdDIwNaQRMA8xDTALBgNVBAMMBHQyMDakETAPMQ0wCwYDVQQDDAR0MjA3
--pBEwDzENMAsGA1UEAwwEdDIwOKQRMA8xDTALBgNVBAMMBHQyMDmkETAPMQ0wCwYD
--VQQDDAR0MjEwpBEwDzENMAsGA1UEAwwEdDIxMaQRMA8xDTALBgNVBAMMBHQyMTKk
--ETAPMQ0wCwYDVQQDDAR0MjEzpBEwDzENMAsGA1UEAwwEdDIxNKQRMA8xDTALBgNV
--BAMMBHQyMTWkETAPMQ0wCwYDVQQDDAR0MjE2pBEwDzENMAsGA1UEAwwEdDIxN6QR
--MA8xDTALBgNVBAMMBHQyMTikETAPMQ0wCwYDVQQDDAR0MjE5pBEwDzENMAsGA1UE
--AwwEdDIyMKQRMA8xDTALBgNVBAMMBHQyMjGkETAPMQ0wCwYDVQQDDAR0MjIypBEw
--DzENMAsGA1UEAwwEdDIyM6QRMA8xDTALBgNVBAMMBHQyMjSkETAPMQ0wCwYDVQQD
--DAR0MjI1pBEwDzENMAsGA1UEAwwEdDIyNqQRMA8xDTALBgNVBAMMBHQyMjekETAP
--MQ0wCwYDVQQDDAR0MjI4pBEwDzENMAsGA1UEAwwEdDIyOaQRMA8xDTALBgNVBAMM
--BHQyMzCkETAPMQ0wCwYDVQQDDAR0MjMxpBEwDzENMAsGA1UEAwwEdDIzMqQRMA8x
--DTALBgNVBAMMBHQyMzOkETAPMQ0wCwYDVQQDDAR0MjM0pBEwDzENMAsGA1UEAwwE
--dDIzNaQRMA8xDTALBgNVBAMMBHQyMzakETAPMQ0wCwYDVQQDDAR0MjM3pBEwDzEN
--MAsGA1UEAwwEdDIzOKQRMA8xDTALBgNVBAMMBHQyMzmkETAPMQ0wCwYDVQQDDAR0
--MjQwpBEwDzENMAsGA1UEAwwEdDI0MaQRMA8xDTALBgNVBAMMBHQyNDKkETAPMQ0w
--CwYDVQQDDAR0MjQzpBEwDzENMAsGA1UEAwwEdDI0NKQRMA8xDTALBgNVBAMMBHQy
--NDWkETAPMQ0wCwYDVQQDDAR0MjQ2pBEwDzENMAsGA1UEAwwEdDI0N6QRMA8xDTAL
--BgNVBAMMBHQyNDikETAPMQ0wCwYDVQQDDAR0MjQ5pBEwDzENMAsGA1UEAwwEdDI1
--MKQRMA8xDTALBgNVBAMMBHQyNTGkETAPMQ0wCwYDVQQDDAR0MjUypBEwDzENMAsG
--A1UEAwwEdDI1M6QRMA8xDTALBgNVBAMMBHQyNTSkETAPMQ0wCwYDVQQDDAR0MjU1
--pBEwDzENMAsGA1UEAwwEdDI1NqQRMA8xDTALBgNVBAMMBHQyNTekETAPMQ0wCwYD
--VQQDDAR0MjU4pBEwDzENMAsGA1UEAwwEdDI1OaQRMA8xDTALBgNVBAMMBHQyNjCk
--ETAPMQ0wCwYDVQQDDAR0MjYxpBEwDzENMAsGA1UEAwwEdDI2MqQRMA8xDTALBgNV
--BAMMBHQyNjOkETAPMQ0wCwYDVQQDDAR0MjY0pBEwDzENMAsGA1UEAwwEdDI2NaQR
--MA8xDTALBgNVBAMMBHQyNjakETAPMQ0wCwYDVQQDDAR0MjY3pBEwDzENMAsGA1UE
--AwwEdDI2OKQRMA8xDTALBgNVBAMMBHQyNjmkETAPMQ0wCwYDVQQDDAR0MjcwpBEw
--DzENMAsGA1UEAwwEdDI3MaQRMA8xDTALBgNVBAMMBHQyNzKkETAPMQ0wCwYDVQQD
--DAR0MjczpBEwDzENMAsGA1UEAwwEdDI3NKQRMA8xDTALBgNVBAMMBHQyNzWkETAP
--MQ0wCwYDVQQDDAR0Mjc2pBEwDzENMAsGA1UEAwwEdDI3N6QRMA8xDTALBgNVBAMM
--BHQyNzikETAPMQ0wCwYDVQQDDAR0Mjc5pBEwDzENMAsGA1UEAwwEdDI4MKQRMA8x
--DTALBgNVBAMMBHQyODGkETAPMQ0wCwYDVQQDDAR0MjgypBEwDzENMAsGA1UEAwwE
--dDI4M6QRMA8xDTALBgNVBAMMBHQyODSkETAPMQ0wCwYDVQQDDAR0Mjg1pBEwDzEN
--MAsGA1UEAwwEdDI4NqQRMA8xDTALBgNVBAMMBHQyODekETAPMQ0wCwYDVQQDDAR0
--Mjg4pBEwDzENMAsGA1UEAwwEdDI4OaQRMA8xDTALBgNVBAMMBHQyOTCkETAPMQ0w
--CwYDVQQDDAR0MjkxpBEwDzENMAsGA1UEAwwEdDI5MqQRMA8xDTALBgNVBAMMBHQy
--OTOkETAPMQ0wCwYDVQQDDAR0Mjk0pBEwDzENMAsGA1UEAwwEdDI5NaQRMA8xDTAL
--BgNVBAMMBHQyOTakETAPMQ0wCwYDVQQDDAR0Mjk3pBEwDzENMAsGA1UEAwwEdDI5
--OKQRMA8xDTALBgNVBAMMBHQyOTmkETAPMQ0wCwYDVQQDDAR0MzAwpBEwDzENMAsG
--A1UEAwwEdDMwMaQRMA8xDTALBgNVBAMMBHQzMDKkETAPMQ0wCwYDVQQDDAR0MzAz
--pBEwDzENMAsGA1UEAwwEdDMwNKQRMA8xDTALBgNVBAMMBHQzMDWkETAPMQ0wCwYD
--VQQDDAR0MzA2pBEwDzENMAsGA1UEAwwEdDMwN6QRMA8xDTALBgNVBAMMBHQzMDik
--ETAPMQ0wCwYDVQQDDAR0MzA5pBEwDzENMAsGA1UEAwwEdDMxMKQRMA8xDTALBgNV
--BAMMBHQzMTGkETAPMQ0wCwYDVQQDDAR0MzEypBEwDzENMAsGA1UEAwwEdDMxM6QR
--MA8xDTALBgNVBAMMBHQzMTSkETAPMQ0wCwYDVQQDDAR0MzE1pBEwDzENMAsGA1UE
--AwwEdDMxNqQRMA8xDTALBgNVBAMMBHQzMTekETAPMQ0wCwYDVQQDDAR0MzE4pBEw
--DzENMAsGA1UEAwwEdDMxOaQRMA8xDTALBgNVBAMMBHQzMjCkETAPMQ0wCwYDVQQD
--DAR0MzIxpBEwDzENMAsGA1UEAwwEdDMyMqQRMA8xDTALBgNVBAMMBHQzMjOkETAP
--MQ0wCwYDVQQDDAR0MzI0pBEwDzENMAsGA1UEAwwEdDMyNaQRMA8xDTALBgNVBAMM
--BHQzMjakETAPMQ0wCwYDVQQDDAR0MzI3pBEwDzENMAsGA1UEAwwEdDMyOKQRMA8x
--DTALBgNVBAMMBHQzMjmkETAPMQ0wCwYDVQQDDAR0MzMwpBEwDzENMAsGA1UEAwwE
--dDMzMaQRMA8xDTALBgNVBAMMBHQzMzKkETAPMQ0wCwYDVQQDDAR0MzMzpBEwDzEN
--MAsGA1UEAwwEdDMzNKQRMA8xDTALBgNVBAMMBHQzMzWkETAPMQ0wCwYDVQQDDAR0
--MzM2pBEwDzENMAsGA1UEAwwEdDMzN6QRMA8xDTALBgNVBAMMBHQzMzikETAPMQ0w
--CwYDVQQDDAR0MzM5pBEwDzENMAsGA1UEAwwEdDM0MKQRMA8xDTALBgNVBAMMBHQz
--NDGkETAPMQ0wCwYDVQQDDAR0MzQypBEwDzENMAsGA1UEAwwEdDM0M6QRMA8xDTAL
--BgNVBAMMBHQzNDSkETAPMQ0wCwYDVQQDDAR0MzQ1pBEwDzENMAsGA1UEAwwEdDM0
--NqQRMA8xDTALBgNVBAMMBHQzNDekETAPMQ0wCwYDVQQDDAR0MzQ4pBEwDzENMAsG
--A1UEAwwEdDM0OaQRMA8xDTALBgNVBAMMBHQzNTCkETAPMQ0wCwYDVQQDDAR0MzUx
--pBEwDzENMAsGA1UEAwwEdDM1MqQRMA8xDTALBgNVBAMMBHQzNTOkETAPMQ0wCwYD
--VQQDDAR0MzU0pBEwDzENMAsGA1UEAwwEdDM1NaQRMA8xDTALBgNVBAMMBHQzNTak
--ETAPMQ0wCwYDVQQDDAR0MzU3pBEwDzENMAsGA1UEAwwEdDM1OKQRMA8xDTALBgNV
--BAMMBHQzNTmkETAPMQ0wCwYDVQQDDAR0MzYwpBEwDzENMAsGA1UEAwwEdDM2MaQR
--MA8xDTALBgNVBAMMBHQzNjKkETAPMQ0wCwYDVQQDDAR0MzYzpBEwDzENMAsGA1UE
--AwwEdDM2NKQRMA8xDTALBgNVBAMMBHQzNjWkETAPMQ0wCwYDVQQDDAR0MzY2pBEw
--DzENMAsGA1UEAwwEdDM2N6QRMA8xDTALBgNVBAMMBHQzNjikETAPMQ0wCwYDVQQD
--DAR0MzY5pBEwDzENMAsGA1UEAwwEdDM3MKQRMA8xDTALBgNVBAMMBHQzNzGkETAP
--MQ0wCwYDVQQDDAR0MzcypBEwDzENMAsGA1UEAwwEdDM3M6QRMA8xDTALBgNVBAMM
--BHQzNzSkETAPMQ0wCwYDVQQDDAR0Mzc1pBEwDzENMAsGA1UEAwwEdDM3NqQRMA8x
--DTALBgNVBAMMBHQzNzekETAPMQ0wCwYDVQQDDAR0Mzc4pBEwDzENMAsGA1UEAwwE
--dDM3OaQRMA8xDTALBgNVBAMMBHQzODCkETAPMQ0wCwYDVQQDDAR0MzgxpBEwDzEN
--MAsGA1UEAwwEdDM4MqQRMA8xDTALBgNVBAMMBHQzODOkETAPMQ0wCwYDVQQDDAR0
--Mzg0pBEwDzENMAsGA1UEAwwEdDM4NaQRMA8xDTALBgNVBAMMBHQzODakETAPMQ0w
--CwYDVQQDDAR0Mzg3pBEwDzENMAsGA1UEAwwEdDM4OKQRMA8xDTALBgNVBAMMBHQz
--ODmkETAPMQ0wCwYDVQQDDAR0MzkwpBEwDzENMAsGA1UEAwwEdDM5MaQRMA8xDTAL
--BgNVBAMMBHQzOTKkETAPMQ0wCwYDVQQDDAR0MzkzpBEwDzENMAsGA1UEAwwEdDM5
--NKQRMA8xDTALBgNVBAMMBHQzOTWkETAPMQ0wCwYDVQQDDAR0Mzk2pBEwDzENMAsG
--A1UEAwwEdDM5N6QRMA8xDTALBgNVBAMMBHQzOTikETAPMQ0wCwYDVQQDDAR0Mzk5
--pBEwDzENMAsGA1UEAwwEdDQwMKQRMA8xDTALBgNVBAMMBHQ0MDGkETAPMQ0wCwYD
--VQQDDAR0NDAypBEwDzENMAsGA1UEAwwEdDQwM6QRMA8xDTALBgNVBAMMBHQ0MDSk
--ETAPMQ0wCwYDVQQDDAR0NDA1pBEwDzENMAsGA1UEAwwEdDQwNqQRMA8xDTALBgNV
--BAMMBHQ0MDekETAPMQ0wCwYDVQQDDAR0NDA4pBEwDzENMAsGA1UEAwwEdDQwOaQR
--MA8xDTALBgNVBAMMBHQ0MTCkETAPMQ0wCwYDVQQDDAR0NDExpBEwDzENMAsGA1UE
--AwwEdDQxMqQRMA8xDTALBgNVBAMMBHQ0MTOkETAPMQ0wCwYDVQQDDAR0NDE0pBEw
--DzENMAsGA1UEAwwEdDQxNaQRMA8xDTALBgNVBAMMBHQ0MTakETAPMQ0wCwYDVQQD
--DAR0NDE3pBEwDzENMAsGA1UEAwwEdDQxOKQRMA8xDTALBgNVBAMMBHQ0MTmkETAP
--MQ0wCwYDVQQDDAR0NDIwpBEwDzENMAsGA1UEAwwEdDQyMaQRMA8xDTALBgNVBAMM
--BHQ0MjKkETAPMQ0wCwYDVQQDDAR0NDIzpBEwDzENMAsGA1UEAwwEdDQyNKQRMA8x
--DTALBgNVBAMMBHQ0MjWkETAPMQ0wCwYDVQQDDAR0NDI2pBEwDzENMAsGA1UEAwwE
--dDQyN6QRMA8xDTALBgNVBAMMBHQ0MjikETAPMQ0wCwYDVQQDDAR0NDI5pBEwDzEN
--MAsGA1UEAwwEdDQzMKQRMA8xDTALBgNVBAMMBHQ0MzGkETAPMQ0wCwYDVQQDDAR0
--NDMypBEwDzENMAsGA1UEAwwEdDQzM6QRMA8xDTALBgNVBAMMBHQ0MzSkETAPMQ0w
--CwYDVQQDDAR0NDM1pBEwDzENMAsGA1UEAwwEdDQzNqQRMA8xDTALBgNVBAMMBHQ0
--MzekETAPMQ0wCwYDVQQDDAR0NDM4pBEwDzENMAsGA1UEAwwEdDQzOaQRMA8xDTAL
--BgNVBAMMBHQ0NDCkETAPMQ0wCwYDVQQDDAR0NDQxpBEwDzENMAsGA1UEAwwEdDQ0
--MqQRMA8xDTALBgNVBAMMBHQ0NDOkETAPMQ0wCwYDVQQDDAR0NDQ0pBEwDzENMAsG
--A1UEAwwEdDQ0NaQRMA8xDTALBgNVBAMMBHQ0NDakETAPMQ0wCwYDVQQDDAR0NDQ3
--pBEwDzENMAsGA1UEAwwEdDQ0OKQRMA8xDTALBgNVBAMMBHQ0NDmkETAPMQ0wCwYD
--VQQDDAR0NDUwpBEwDzENMAsGA1UEAwwEdDQ1MaQRMA8xDTALBgNVBAMMBHQ0NTKk
--ETAPMQ0wCwYDVQQDDAR0NDUzpBEwDzENMAsGA1UEAwwEdDQ1NKQRMA8xDTALBgNV
--BAMMBHQ0NTWkETAPMQ0wCwYDVQQDDAR0NDU2pBEwDzENMAsGA1UEAwwEdDQ1N6QR
--MA8xDTALBgNVBAMMBHQ0NTikETAPMQ0wCwYDVQQDDAR0NDU5pBEwDzENMAsGA1UE
--AwwEdDQ2MKQRMA8xDTALBgNVBAMMBHQ0NjGkETAPMQ0wCwYDVQQDDAR0NDYypBEw
--DzENMAsGA1UEAwwEdDQ2M6QRMA8xDTALBgNVBAMMBHQ0NjSkETAPMQ0wCwYDVQQD
--DAR0NDY1pBEwDzENMAsGA1UEAwwEdDQ2NqQRMA8xDTALBgNVBAMMBHQ0NjekETAP
--MQ0wCwYDVQQDDAR0NDY4pBEwDzENMAsGA1UEAwwEdDQ2OaQRMA8xDTALBgNVBAMM
--BHQ0NzCkETAPMQ0wCwYDVQQDDAR0NDcxpBEwDzENMAsGA1UEAwwEdDQ3MqQRMA8x
--DTALBgNVBAMMBHQ0NzOkETAPMQ0wCwYDVQQDDAR0NDc0pBEwDzENMAsGA1UEAwwE
--dDQ3NaQRMA8xDTALBgNVBAMMBHQ0NzakETAPMQ0wCwYDVQQDDAR0NDc3pBEwDzEN
--MAsGA1UEAwwEdDQ3OKQRMA8xDTALBgNVBAMMBHQ0NzmkETAPMQ0wCwYDVQQDDAR0
--NDgwpBEwDzENMAsGA1UEAwwEdDQ4MaQRMA8xDTALBgNVBAMMBHQ0ODKkETAPMQ0w
--CwYDVQQDDAR0NDgzpBEwDzENMAsGA1UEAwwEdDQ4NKQRMA8xDTALBgNVBAMMBHQ0
--ODWkETAPMQ0wCwYDVQQDDAR0NDg2pBEwDzENMAsGA1UEAwwEdDQ4N6QRMA8xDTAL
--BgNVBAMMBHQ0ODikETAPMQ0wCwYDVQQDDAR0NDg5pBEwDzENMAsGA1UEAwwEdDQ5
--MKQRMA8xDTALBgNVBAMMBHQ0OTGkETAPMQ0wCwYDVQQDDAR0NDkypBEwDzENMAsG
--A1UEAwwEdDQ5M6QRMA8xDTALBgNVBAMMBHQ0OTSkETAPMQ0wCwYDVQQDDAR0NDk1
--pBEwDzENMAsGA1UEAwwEdDQ5NqQRMA8xDTALBgNVBAMMBHQ0OTekETAPMQ0wCwYD
--VQQDDAR0NDk4pBEwDzENMAsGA1UEAwwEdDQ5OaQRMA8xDTALBgNVBAMMBHQ1MDCk
--ETAPMQ0wCwYDVQQDDAR0NTAxpBEwDzENMAsGA1UEAwwEdDUwMqQRMA8xDTALBgNV
--BAMMBHQ1MDOkETAPMQ0wCwYDVQQDDAR0NTA0pBEwDzENMAsGA1UEAwwEdDUwNaQR
--MA8xDTALBgNVBAMMBHQ1MDakETAPMQ0wCwYDVQQDDAR0NTA3pBEwDzENMAsGA1UE
--AwwEdDUwOKQRMA8xDTALBgNVBAMMBHQ1MDmkETAPMQ0wCwYDVQQDDAR0NTEwpBEw
--DzENMAsGA1UEAwwEdDUxMaQRMA8xDTALBgNVBAMMBHQ1MTKkETAPMQ0wCwYDVQQD
--DAR0NTEzpBEwDzENMAsGA1UEAwwEdDUxNKQRMA8xDTALBgNVBAMMBHQ1MTWkETAP
--MQ0wCwYDVQQDDAR0NTE2pBEwDzENMAsGA1UEAwwEdDUxN6QRMA8xDTALBgNVBAMM
--BHQ1MTikETAPMQ0wCwYDVQQDDAR0NTE5pBEwDzENMAsGA1UEAwwEdDUyMKQRMA8x
--DTALBgNVBAMMBHQ1MjGkETAPMQ0wCwYDVQQDDAR0NTIypBEwDzENMAsGA1UEAwwE
--dDUyM6QRMA8xDTALBgNVBAMMBHQ1MjSkETAPMQ0wCwYDVQQDDAR0NTI1pBEwDzEN
--MAsGA1UEAwwEdDUyNqQRMA8xDTALBgNVBAMMBHQ1MjekETAPMQ0wCwYDVQQDDAR0
--NTI4pBEwDzENMAsGA1UEAwwEdDUyOaQRMA8xDTALBgNVBAMMBHQ1MzCkETAPMQ0w
--CwYDVQQDDAR0NTMxpBEwDzENMAsGA1UEAwwEdDUzMqQRMA8xDTALBgNVBAMMBHQ1
--MzOkETAPMQ0wCwYDVQQDDAR0NTM0pBEwDzENMAsGA1UEAwwEdDUzNaQRMA8xDTAL
--BgNVBAMMBHQ1MzakETAPMQ0wCwYDVQQDDAR0NTM3pBEwDzENMAsGA1UEAwwEdDUz
--OKQRMA8xDTALBgNVBAMMBHQ1MzmkETAPMQ0wCwYDVQQDDAR0NTQwpBEwDzENMAsG
--A1UEAwwEdDU0MaQRMA8xDTALBgNVBAMMBHQ1NDKkETAPMQ0wCwYDVQQDDAR0NTQz
--pBEwDzENMAsGA1UEAwwEdDU0NKQRMA8xDTALBgNVBAMMBHQ1NDWkETAPMQ0wCwYD
--VQQDDAR0NTQ2pBEwDzENMAsGA1UEAwwEdDU0N6QRMA8xDTALBgNVBAMMBHQ1NDik
--ETAPMQ0wCwYDVQQDDAR0NTQ5pBEwDzENMAsGA1UEAwwEdDU1MKQRMA8xDTALBgNV
--BAMMBHQ1NTGkETAPMQ0wCwYDVQQDDAR0NTUypBEwDzENMAsGA1UEAwwEdDU1M6QR
--MA8xDTALBgNVBAMMBHQ1NTSkETAPMQ0wCwYDVQQDDAR0NTU1pBEwDzENMAsGA1UE
--AwwEdDU1NqQRMA8xDTALBgNVBAMMBHQ1NTekETAPMQ0wCwYDVQQDDAR0NTU4pBEw
--DzENMAsGA1UEAwwEdDU1OaQRMA8xDTALBgNVBAMMBHQ1NjCkETAPMQ0wCwYDVQQD
--DAR0NTYxpBEwDzENMAsGA1UEAwwEdDU2MqQRMA8xDTALBgNVBAMMBHQ1NjOkETAP
--MQ0wCwYDVQQDDAR0NTY0pBEwDzENMAsGA1UEAwwEdDU2NaQRMA8xDTALBgNVBAMM
--BHQ1NjakETAPMQ0wCwYDVQQDDAR0NTY3pBEwDzENMAsGA1UEAwwEdDU2OKQRMA8x
--DTALBgNVBAMMBHQ1NjmkETAPMQ0wCwYDVQQDDAR0NTcwpBEwDzENMAsGA1UEAwwE
--dDU3MaQRMA8xDTALBgNVBAMMBHQ1NzKkETAPMQ0wCwYDVQQDDAR0NTczpBEwDzEN
--MAsGA1UEAwwEdDU3NKQRMA8xDTALBgNVBAMMBHQ1NzWkETAPMQ0wCwYDVQQDDAR0
--NTc2pBEwDzENMAsGA1UEAwwEdDU3N6QRMA8xDTALBgNVBAMMBHQ1NzikETAPMQ0w
--CwYDVQQDDAR0NTc5pBEwDzENMAsGA1UEAwwEdDU4MKQRMA8xDTALBgNVBAMMBHQ1
--ODGkETAPMQ0wCwYDVQQDDAR0NTgypBEwDzENMAsGA1UEAwwEdDU4M6QRMA8xDTAL
--BgNVBAMMBHQ1ODSkETAPMQ0wCwYDVQQDDAR0NTg1pBEwDzENMAsGA1UEAwwEdDU4
--NqQRMA8xDTALBgNVBAMMBHQ1ODekETAPMQ0wCwYDVQQDDAR0NTg4pBEwDzENMAsG
--A1UEAwwEdDU4OaQRMA8xDTALBgNVBAMMBHQ1OTCkETAPMQ0wCwYDVQQDDAR0NTkx
--pBEwDzENMAsGA1UEAwwEdDU5MqQRMA8xDTALBgNVBAMMBHQ1OTOkETAPMQ0wCwYD
--VQQDDAR0NTk0pBEwDzENMAsGA1UEAwwEdDU5NaQRMA8xDTALBgNVBAMMBHQ1OTak
--ETAPMQ0wCwYDVQQDDAR0NTk3pBEwDzENMAsGA1UEAwwEdDU5OKQRMA8xDTALBgNV
--BAMMBHQ1OTmkETAPMQ0wCwYDVQQDDAR0NjAwpBEwDzENMAsGA1UEAwwEdDYwMaQR
--MA8xDTALBgNVBAMMBHQ2MDKkETAPMQ0wCwYDVQQDDAR0NjAzpBEwDzENMAsGA1UE
--AwwEdDYwNKQRMA8xDTALBgNVBAMMBHQ2MDWkETAPMQ0wCwYDVQQDDAR0NjA2pBEw
--DzENMAsGA1UEAwwEdDYwN6QRMA8xDTALBgNVBAMMBHQ2MDikETAPMQ0wCwYDVQQD
--DAR0NjA5pBEwDzENMAsGA1UEAwwEdDYxMKQRMA8xDTALBgNVBAMMBHQ2MTGkETAP
--MQ0wCwYDVQQDDAR0NjEypBEwDzENMAsGA1UEAwwEdDYxM6QRMA8xDTALBgNVBAMM
--BHQ2MTSkETAPMQ0wCwYDVQQDDAR0NjE1pBEwDzENMAsGA1UEAwwEdDYxNqQRMA8x
--DTALBgNVBAMMBHQ2MTekETAPMQ0wCwYDVQQDDAR0NjE4pBEwDzENMAsGA1UEAwwE
--dDYxOaQRMA8xDTALBgNVBAMMBHQ2MjCkETAPMQ0wCwYDVQQDDAR0NjIxpBEwDzEN
--MAsGA1UEAwwEdDYyMqQRMA8xDTALBgNVBAMMBHQ2MjOkETAPMQ0wCwYDVQQDDAR0
--NjI0pBEwDzENMAsGA1UEAwwEdDYyNaQRMA8xDTALBgNVBAMMBHQ2MjakETAPMQ0w
--CwYDVQQDDAR0NjI3pBEwDzENMAsGA1UEAwwEdDYyOKQRMA8xDTALBgNVBAMMBHQ2
--MjmkETAPMQ0wCwYDVQQDDAR0NjMwpBEwDzENMAsGA1UEAwwEdDYzMaQRMA8xDTAL
--BgNVBAMMBHQ2MzKkETAPMQ0wCwYDVQQDDAR0NjMzpBEwDzENMAsGA1UEAwwEdDYz
--NKQRMA8xDTALBgNVBAMMBHQ2MzWkETAPMQ0wCwYDVQQDDAR0NjM2pBEwDzENMAsG
--A1UEAwwEdDYzN6QRMA8xDTALBgNVBAMMBHQ2MzikETAPMQ0wCwYDVQQDDAR0NjM5
--pBEwDzENMAsGA1UEAwwEdDY0MKQRMA8xDTALBgNVBAMMBHQ2NDGkETAPMQ0wCwYD
--VQQDDAR0NjQypBEwDzENMAsGA1UEAwwEdDY0M6QRMA8xDTALBgNVBAMMBHQ2NDSk
--ETAPMQ0wCwYDVQQDDAR0NjQ1pBEwDzENMAsGA1UEAwwEdDY0NqQRMA8xDTALBgNV
--BAMMBHQ2NDekETAPMQ0wCwYDVQQDDAR0NjQ4pBEwDzENMAsGA1UEAwwEdDY0OaQR
--MA8xDTALBgNVBAMMBHQ2NTCkETAPMQ0wCwYDVQQDDAR0NjUxpBEwDzENMAsGA1UE
--AwwEdDY1MqQRMA8xDTALBgNVBAMMBHQ2NTOkETAPMQ0wCwYDVQQDDAR0NjU0pBEw
--DzENMAsGA1UEAwwEdDY1NaQRMA8xDTALBgNVBAMMBHQ2NTakETAPMQ0wCwYDVQQD
--DAR0NjU3pBEwDzENMAsGA1UEAwwEdDY1OKQRMA8xDTALBgNVBAMMBHQ2NTmkETAP
--MQ0wCwYDVQQDDAR0NjYwpBEwDzENMAsGA1UEAwwEdDY2MaQRMA8xDTALBgNVBAMM
--BHQ2NjKkETAPMQ0wCwYDVQQDDAR0NjYzpBEwDzENMAsGA1UEAwwEdDY2NKQRMA8x
--DTALBgNVBAMMBHQ2NjWkETAPMQ0wCwYDVQQDDAR0NjY2pBEwDzENMAsGA1UEAwwE
--dDY2N6QRMA8xDTALBgNVBAMMBHQ2NjikETAPMQ0wCwYDVQQDDAR0NjY5pBEwDzEN
--MAsGA1UEAwwEdDY3MKQRMA8xDTALBgNVBAMMBHQ2NzGkETAPMQ0wCwYDVQQDDAR0
--NjcypBEwDzENMAsGA1UEAwwEdDY3M6QRMA8xDTALBgNVBAMMBHQ2NzSkETAPMQ0w
--CwYDVQQDDAR0Njc1pBEwDzENMAsGA1UEAwwEdDY3NqQRMA8xDTALBgNVBAMMBHQ2
--NzekETAPMQ0wCwYDVQQDDAR0Njc4pBEwDzENMAsGA1UEAwwEdDY3OaQRMA8xDTAL
--BgNVBAMMBHQ2ODCkETAPMQ0wCwYDVQQDDAR0NjgxpBEwDzENMAsGA1UEAwwEdDY4
--MqQRMA8xDTALBgNVBAMMBHQ2ODOkETAPMQ0wCwYDVQQDDAR0Njg0pBEwDzENMAsG
--A1UEAwwEdDY4NaQRMA8xDTALBgNVBAMMBHQ2ODakETAPMQ0wCwYDVQQDDAR0Njg3
--pBEwDzENMAsGA1UEAwwEdDY4OKQRMA8xDTALBgNVBAMMBHQ2ODmkETAPMQ0wCwYD
--VQQDDAR0NjkwpBEwDzENMAsGA1UEAwwEdDY5MaQRMA8xDTALBgNVBAMMBHQ2OTKk
--ETAPMQ0wCwYDVQQDDAR0NjkzpBEwDzENMAsGA1UEAwwEdDY5NKQRMA8xDTALBgNV
--BAMMBHQ2OTWkETAPMQ0wCwYDVQQDDAR0Njk2pBEwDzENMAsGA1UEAwwEdDY5N6QR
--MA8xDTALBgNVBAMMBHQ2OTikETAPMQ0wCwYDVQQDDAR0Njk5pBEwDzENMAsGA1UE
--AwwEdDcwMKQRMA8xDTALBgNVBAMMBHQ3MDGkETAPMQ0wCwYDVQQDDAR0NzAypBEw
--DzENMAsGA1UEAwwEdDcwM6QRMA8xDTALBgNVBAMMBHQ3MDSkETAPMQ0wCwYDVQQD
--DAR0NzA1pBEwDzENMAsGA1UEAwwEdDcwNqQRMA8xDTALBgNVBAMMBHQ3MDekETAP
--MQ0wCwYDVQQDDAR0NzA4pBEwDzENMAsGA1UEAwwEdDcwOaQRMA8xDTALBgNVBAMM
--BHQ3MTCkETAPMQ0wCwYDVQQDDAR0NzExpBEwDzENMAsGA1UEAwwEdDcxMqQRMA8x
--DTALBgNVBAMMBHQ3MTOkETAPMQ0wCwYDVQQDDAR0NzE0pBEwDzENMAsGA1UEAwwE
--dDcxNaQRMA8xDTALBgNVBAMMBHQ3MTakETAPMQ0wCwYDVQQDDAR0NzE3pBEwDzEN
--MAsGA1UEAwwEdDcxOKQRMA8xDTALBgNVBAMMBHQ3MTmkETAPMQ0wCwYDVQQDDAR0
--NzIwpBEwDzENMAsGA1UEAwwEdDcyMaQRMA8xDTALBgNVBAMMBHQ3MjKkETAPMQ0w
--CwYDVQQDDAR0NzIzpBEwDzENMAsGA1UEAwwEdDcyNKQRMA8xDTALBgNVBAMMBHQ3
--MjWkETAPMQ0wCwYDVQQDDAR0NzI2pBEwDzENMAsGA1UEAwwEdDcyN6QRMA8xDTAL
--BgNVBAMMBHQ3MjikETAPMQ0wCwYDVQQDDAR0NzI5pBEwDzENMAsGA1UEAwwEdDcz
--MKQRMA8xDTALBgNVBAMMBHQ3MzGkETAPMQ0wCwYDVQQDDAR0NzMypBEwDzENMAsG
--A1UEAwwEdDczM6QRMA8xDTALBgNVBAMMBHQ3MzSkETAPMQ0wCwYDVQQDDAR0NzM1
--pBEwDzENMAsGA1UEAwwEdDczNqQRMA8xDTALBgNVBAMMBHQ3MzekETAPMQ0wCwYD
--VQQDDAR0NzM4pBEwDzENMAsGA1UEAwwEdDczOaQRMA8xDTALBgNVBAMMBHQ3NDCk
--ETAPMQ0wCwYDVQQDDAR0NzQxpBEwDzENMAsGA1UEAwwEdDc0MqQRMA8xDTALBgNV
--BAMMBHQ3NDOkETAPMQ0wCwYDVQQDDAR0NzQ0pBEwDzENMAsGA1UEAwwEdDc0NaQR
--MA8xDTALBgNVBAMMBHQ3NDakETAPMQ0wCwYDVQQDDAR0NzQ3pBEwDzENMAsGA1UE
--AwwEdDc0OKQRMA8xDTALBgNVBAMMBHQ3NDmkETAPMQ0wCwYDVQQDDAR0NzUwpBEw
--DzENMAsGA1UEAwwEdDc1MaQRMA8xDTALBgNVBAMMBHQ3NTKkETAPMQ0wCwYDVQQD
--DAR0NzUzpBEwDzENMAsGA1UEAwwEdDc1NKQRMA8xDTALBgNVBAMMBHQ3NTWkETAP
--MQ0wCwYDVQQDDAR0NzU2pBEwDzENMAsGA1UEAwwEdDc1N6QRMA8xDTALBgNVBAMM
--BHQ3NTikETAPMQ0wCwYDVQQDDAR0NzU5pBEwDzENMAsGA1UEAwwEdDc2MKQRMA8x
--DTALBgNVBAMMBHQ3NjGkETAPMQ0wCwYDVQQDDAR0NzYypBEwDzENMAsGA1UEAwwE
--dDc2M6QRMA8xDTALBgNVBAMMBHQ3NjSkETAPMQ0wCwYDVQQDDAR0NzY1pBEwDzEN
--MAsGA1UEAwwEdDc2NqQRMA8xDTALBgNVBAMMBHQ3NjekETAPMQ0wCwYDVQQDDAR0
--NzY4pBEwDzENMAsGA1UEAwwEdDc2OaQRMA8xDTALBgNVBAMMBHQ3NzCkETAPMQ0w
--CwYDVQQDDAR0NzcxpBEwDzENMAsGA1UEAwwEdDc3MqQRMA8xDTALBgNVBAMMBHQ3
--NzOkETAPMQ0wCwYDVQQDDAR0Nzc0pBEwDzENMAsGA1UEAwwEdDc3NaQRMA8xDTAL
--BgNVBAMMBHQ3NzakETAPMQ0wCwYDVQQDDAR0Nzc3pBEwDzENMAsGA1UEAwwEdDc3
--OKQRMA8xDTALBgNVBAMMBHQ3NzmkETAPMQ0wCwYDVQQDDAR0NzgwpBEwDzENMAsG
--A1UEAwwEdDc4MaQRMA8xDTALBgNVBAMMBHQ3ODKkETAPMQ0wCwYDVQQDDAR0Nzgz
--pBEwDzENMAsGA1UEAwwEdDc4NKQRMA8xDTALBgNVBAMMBHQ3ODWkETAPMQ0wCwYD
--VQQDDAR0Nzg2pBEwDzENMAsGA1UEAwwEdDc4N6QRMA8xDTALBgNVBAMMBHQ3ODik
--ETAPMQ0wCwYDVQQDDAR0Nzg5pBEwDzENMAsGA1UEAwwEdDc5MKQRMA8xDTALBgNV
--BAMMBHQ3OTGkETAPMQ0wCwYDVQQDDAR0NzkypBEwDzENMAsGA1UEAwwEdDc5M6QR
--MA8xDTALBgNVBAMMBHQ3OTSkETAPMQ0wCwYDVQQDDAR0Nzk1pBEwDzENMAsGA1UE
--AwwEdDc5NqQRMA8xDTALBgNVBAMMBHQ3OTekETAPMQ0wCwYDVQQDDAR0Nzk4pBEw
--DzENMAsGA1UEAwwEdDc5OaQRMA8xDTALBgNVBAMMBHQ4MDCkETAPMQ0wCwYDVQQD
--DAR0ODAxpBEwDzENMAsGA1UEAwwEdDgwMqQRMA8xDTALBgNVBAMMBHQ4MDOkETAP
--MQ0wCwYDVQQDDAR0ODA0pBEwDzENMAsGA1UEAwwEdDgwNaQRMA8xDTALBgNVBAMM
--BHQ4MDakETAPMQ0wCwYDVQQDDAR0ODA3pBEwDzENMAsGA1UEAwwEdDgwOKQRMA8x
--DTALBgNVBAMMBHQ4MDmkETAPMQ0wCwYDVQQDDAR0ODEwpBEwDzENMAsGA1UEAwwE
--dDgxMaQRMA8xDTALBgNVBAMMBHQ4MTKkETAPMQ0wCwYDVQQDDAR0ODEzpBEwDzEN
--MAsGA1UEAwwEdDgxNKQRMA8xDTALBgNVBAMMBHQ4MTWkETAPMQ0wCwYDVQQDDAR0
--ODE2pBEwDzENMAsGA1UEAwwEdDgxN6QRMA8xDTALBgNVBAMMBHQ4MTikETAPMQ0w
--CwYDVQQDDAR0ODE5pBEwDzENMAsGA1UEAwwEdDgyMKQRMA8xDTALBgNVBAMMBHQ4
--MjGkETAPMQ0wCwYDVQQDDAR0ODIypBEwDzENMAsGA1UEAwwEdDgyM6QRMA8xDTAL
--BgNVBAMMBHQ4MjSkETAPMQ0wCwYDVQQDDAR0ODI1pBEwDzENMAsGA1UEAwwEdDgy
--NqQRMA8xDTALBgNVBAMMBHQ4MjekETAPMQ0wCwYDVQQDDAR0ODI4pBEwDzENMAsG
--A1UEAwwEdDgyOaQRMA8xDTALBgNVBAMMBHQ4MzCkETAPMQ0wCwYDVQQDDAR0ODMx
--pBEwDzENMAsGA1UEAwwEdDgzMqQRMA8xDTALBgNVBAMMBHQ4MzOkETAPMQ0wCwYD
--VQQDDAR0ODM0pBEwDzENMAsGA1UEAwwEdDgzNaQRMA8xDTALBgNVBAMMBHQ4Mzak
--ETAPMQ0wCwYDVQQDDAR0ODM3pBEwDzENMAsGA1UEAwwEdDgzOKQRMA8xDTALBgNV
--BAMMBHQ4MzmkETAPMQ0wCwYDVQQDDAR0ODQwpBEwDzENMAsGA1UEAwwEdDg0MaQR
--MA8xDTALBgNVBAMMBHQ4NDKkETAPMQ0wCwYDVQQDDAR0ODQzpBEwDzENMAsGA1UE
--AwwEdDg0NKQRMA8xDTALBgNVBAMMBHQ4NDWkETAPMQ0wCwYDVQQDDAR0ODQ2pBEw
--DzENMAsGA1UEAwwEdDg0N6QRMA8xDTALBgNVBAMMBHQ4NDikETAPMQ0wCwYDVQQD
--DAR0ODQ5pBEwDzENMAsGA1UEAwwEdDg1MKQRMA8xDTALBgNVBAMMBHQ4NTGkETAP
--MQ0wCwYDVQQDDAR0ODUypBEwDzENMAsGA1UEAwwEdDg1M6QRMA8xDTALBgNVBAMM
--BHQ4NTSkETAPMQ0wCwYDVQQDDAR0ODU1pBEwDzENMAsGA1UEAwwEdDg1NqQRMA8x
--DTALBgNVBAMMBHQ4NTekETAPMQ0wCwYDVQQDDAR0ODU4pBEwDzENMAsGA1UEAwwE
--dDg1OaQRMA8xDTALBgNVBAMMBHQ4NjCkETAPMQ0wCwYDVQQDDAR0ODYxpBEwDzEN
--MAsGA1UEAwwEdDg2MqQRMA8xDTALBgNVBAMMBHQ4NjOkETAPMQ0wCwYDVQQDDAR0
--ODY0pBEwDzENMAsGA1UEAwwEdDg2NaQRMA8xDTALBgNVBAMMBHQ4NjakETAPMQ0w
--CwYDVQQDDAR0ODY3pBEwDzENMAsGA1UEAwwEdDg2OKQRMA8xDTALBgNVBAMMBHQ4
--NjmkETAPMQ0wCwYDVQQDDAR0ODcwpBEwDzENMAsGA1UEAwwEdDg3MaQRMA8xDTAL
--BgNVBAMMBHQ4NzKkETAPMQ0wCwYDVQQDDAR0ODczpBEwDzENMAsGA1UEAwwEdDg3
--NKQRMA8xDTALBgNVBAMMBHQ4NzWkETAPMQ0wCwYDVQQDDAR0ODc2pBEwDzENMAsG
--A1UEAwwEdDg3N6QRMA8xDTALBgNVBAMMBHQ4NzikETAPMQ0wCwYDVQQDDAR0ODc5
--pBEwDzENMAsGA1UEAwwEdDg4MKQRMA8xDTALBgNVBAMMBHQ4ODGkETAPMQ0wCwYD
--VQQDDAR0ODgypBEwDzENMAsGA1UEAwwEdDg4M6QRMA8xDTALBgNVBAMMBHQ4ODSk
--ETAPMQ0wCwYDVQQDDAR0ODg1pBEwDzENMAsGA1UEAwwEdDg4NqQRMA8xDTALBgNV
--BAMMBHQ4ODekETAPMQ0wCwYDVQQDDAR0ODg4pBEwDzENMAsGA1UEAwwEdDg4OaQR
--MA8xDTALBgNVBAMMBHQ4OTCkETAPMQ0wCwYDVQQDDAR0ODkxpBEwDzENMAsGA1UE
--AwwEdDg5MqQRMA8xDTALBgNVBAMMBHQ4OTOkETAPMQ0wCwYDVQQDDAR0ODk0pBEw
--DzENMAsGA1UEAwwEdDg5NaQRMA8xDTALBgNVBAMMBHQ4OTakETAPMQ0wCwYDVQQD
--DAR0ODk3pBEwDzENMAsGA1UEAwwEdDg5OKQRMA8xDTALBgNVBAMMBHQ4OTmkETAP
--MQ0wCwYDVQQDDAR0OTAwpBEwDzENMAsGA1UEAwwEdDkwMaQRMA8xDTALBgNVBAMM
--BHQ5MDKkETAPMQ0wCwYDVQQDDAR0OTAzpBEwDzENMAsGA1UEAwwEdDkwNKQRMA8x
--DTALBgNVBAMMBHQ5MDWkETAPMQ0wCwYDVQQDDAR0OTA2pBEwDzENMAsGA1UEAwwE
--dDkwN6QRMA8xDTALBgNVBAMMBHQ5MDikETAPMQ0wCwYDVQQDDAR0OTA5pBEwDzEN
--MAsGA1UEAwwEdDkxMKQRMA8xDTALBgNVBAMMBHQ5MTGkETAPMQ0wCwYDVQQDDAR0
--OTEypBEwDzENMAsGA1UEAwwEdDkxM6QRMA8xDTALBgNVBAMMBHQ5MTSkETAPMQ0w
--CwYDVQQDDAR0OTE1pBEwDzENMAsGA1UEAwwEdDkxNqQRMA8xDTALBgNVBAMMBHQ5
--MTekETAPMQ0wCwYDVQQDDAR0OTE4pBEwDzENMAsGA1UEAwwEdDkxOaQRMA8xDTAL
--BgNVBAMMBHQ5MjCkETAPMQ0wCwYDVQQDDAR0OTIxpBEwDzENMAsGA1UEAwwEdDky
--MqQRMA8xDTALBgNVBAMMBHQ5MjOkETAPMQ0wCwYDVQQDDAR0OTI0pBEwDzENMAsG
--A1UEAwwEdDkyNaQRMA8xDTALBgNVBAMMBHQ5MjakETAPMQ0wCwYDVQQDDAR0OTI3
--pBEwDzENMAsGA1UEAwwEdDkyOKQRMA8xDTALBgNVBAMMBHQ5MjmkETAPMQ0wCwYD
--VQQDDAR0OTMwpBEwDzENMAsGA1UEAwwEdDkzMaQRMA8xDTALBgNVBAMMBHQ5MzKk
--ETAPMQ0wCwYDVQQDDAR0OTMzpBEwDzENMAsGA1UEAwwEdDkzNKQRMA8xDTALBgNV
--BAMMBHQ5MzWkETAPMQ0wCwYDVQQDDAR0OTM2pBEwDzENMAsGA1UEAwwEdDkzN6QR
--MA8xDTALBgNVBAMMBHQ5MzikETAPMQ0wCwYDVQQDDAR0OTM5pBEwDzENMAsGA1UE
--AwwEdDk0MKQRMA8xDTALBgNVBAMMBHQ5NDGkETAPMQ0wCwYDVQQDDAR0OTQypBEw
--DzENMAsGA1UEAwwEdDk0M6QRMA8xDTALBgNVBAMMBHQ5NDSkETAPMQ0wCwYDVQQD
--DAR0OTQ1pBEwDzENMAsGA1UEAwwEdDk0NqQRMA8xDTALBgNVBAMMBHQ5NDekETAP
--MQ0wCwYDVQQDDAR0OTQ4pBEwDzENMAsGA1UEAwwEdDk0OaQRMA8xDTALBgNVBAMM
--BHQ5NTCkETAPMQ0wCwYDVQQDDAR0OTUxpBEwDzENMAsGA1UEAwwEdDk1MqQRMA8x
--DTALBgNVBAMMBHQ5NTOkETAPMQ0wCwYDVQQDDAR0OTU0pBEwDzENMAsGA1UEAwwE
--dDk1NaQRMA8xDTALBgNVBAMMBHQ5NTakETAPMQ0wCwYDVQQDDAR0OTU3pBEwDzEN
--MAsGA1UEAwwEdDk1OKQRMA8xDTALBgNVBAMMBHQ5NTmkETAPMQ0wCwYDVQQDDAR0
--OTYwpBEwDzENMAsGA1UEAwwEdDk2MaQRMA8xDTALBgNVBAMMBHQ5NjKkETAPMQ0w
--CwYDVQQDDAR0OTYzpBEwDzENMAsGA1UEAwwEdDk2NKQRMA8xDTALBgNVBAMMBHQ5
--NjWkETAPMQ0wCwYDVQQDDAR0OTY2pBEwDzENMAsGA1UEAwwEdDk2N6QRMA8xDTAL
--BgNVBAMMBHQ5NjikETAPMQ0wCwYDVQQDDAR0OTY5pBEwDzENMAsGA1UEAwwEdDk3
--MKQRMA8xDTALBgNVBAMMBHQ5NzGkETAPMQ0wCwYDVQQDDAR0OTcypBEwDzENMAsG
--A1UEAwwEdDk3M6QRMA8xDTALBgNVBAMMBHQ5NzSkETAPMQ0wCwYDVQQDDAR0OTc1
--pBEwDzENMAsGA1UEAwwEdDk3NqQRMA8xDTALBgNVBAMMBHQ5NzekETAPMQ0wCwYD
--VQQDDAR0OTc4pBEwDzENMAsGA1UEAwwEdDk3OaQRMA8xDTALBgNVBAMMBHQ5ODCk
--ETAPMQ0wCwYDVQQDDAR0OTgxpBEwDzENMAsGA1UEAwwEdDk4MqQRMA8xDTALBgNV
--BAMMBHQ5ODOkETAPMQ0wCwYDVQQDDAR0OTg0pBEwDzENMAsGA1UEAwwEdDk4NaQR
--MA8xDTALBgNVBAMMBHQ5ODakETAPMQ0wCwYDVQQDDAR0OTg3pBEwDzENMAsGA1UE
--AwwEdDk4OKQRMA8xDTALBgNVBAMMBHQ5ODmkETAPMQ0wCwYDVQQDDAR0OTkwpBEw
--DzENMAsGA1UEAwwEdDk5MaQRMA8xDTALBgNVBAMMBHQ5OTKkETAPMQ0wCwYDVQQD
--DAR0OTkzpBEwDzENMAsGA1UEAwwEdDk5NKQRMA8xDTALBgNVBAMMBHQ5OTWkETAP
--MQ0wCwYDVQQDDAR0OTk2pBEwDzENMAsGA1UEAwwEdDk5N6QRMA8xDTALBgNVBAMM
--BHQ5OTikETAPMQ0wCwYDVQQDDAR0OTk5pBIwEDEOMAwGA1UEAwwFdDEwMDCkEjAQ
--MQ4wDAYDVQQDDAV0MTAwMaQSMBAxDjAMBgNVBAMMBXQxMDAypBIwEDEOMAwGA1UE
--AwwFdDEwMDOkEjAQMQ4wDAYDVQQDDAV0MTAwNKQSMBAxDjAMBgNVBAMMBXQxMDA1
--pBIwEDEOMAwGA1UEAwwFdDEwMDakEjAQMQ4wDAYDVQQDDAV0MTAwN6QSMBAxDjAM
--BgNVBAMMBXQxMDA4pBIwEDEOMAwGA1UEAwwFdDEwMDmkEjAQMQ4wDAYDVQQDDAV0
--MTAxMKQSMBAxDjAMBgNVBAMMBXQxMDExpBIwEDEOMAwGA1UEAwwFdDEwMTKkEjAQ
--MQ4wDAYDVQQDDAV0MTAxM6QSMBAxDjAMBgNVBAMMBXQxMDE0pBIwEDEOMAwGA1UE
--AwwFdDEwMTWkEjAQMQ4wDAYDVQQDDAV0MTAxNqQSMBAxDjAMBgNVBAMMBXQxMDE3
--pBIwEDEOMAwGA1UEAwwFdDEwMTikEjAQMQ4wDAYDVQQDDAV0MTAxOaQSMBAxDjAM
--BgNVBAMMBXQxMDIwpBIwEDEOMAwGA1UEAwwFdDEwMjGkEjAQMQ4wDAYDVQQDDAV0
--MTAyMqQSMBAxDjAMBgNVBAMMBXQxMDIzpBIwEDEOMAwGA1UEAwwFdDEwMjQwDQYJ
--KoZIhvcNAQELBQADggEBACkzp8BHLTaAKkVE9vhcVwFODBvSgup3rVQOfydxKitT
--KYuoUAqNu7UXzzRKxi4SpD3lSpqbh9UYuF6jpiQa3/pUwyhlfxdrjjq8OWcoiTaN
--E2IAdtGWDWUfa9sYAUC4xNEB1Rau/xyJfnrpisRS3bSSRaJePIVE6FE5OcFH/gdO
--ZpRA+kFDJeDxNbXidv7rSMrm1ApfoNNHnWelvgHfZdJdPF/zVPOV6yCG/4+x1jZU
--ufH0COa16OKNS3uAV+yH74PwwofLLo4OFiRlUfEMgr7RmbHGBzkvgenDi2JBQfGE
--hNfIi5UWdxvAkvQ1E9k0SrSzHh3YaXLZLNF/gLDlV10=
-------END CERTIFICATE-----
--
--Certificate:
-- Data:
-- Version: 3 (0x2)
-- Serial Number:
-- 3c:e5:fc:81:88:59:a8:50:16:c1:7f:d7:e5:2a:e5:96:7f:c2:f7:00
-- Signature Algorithm: sha256WithRSAEncryption
-- Issuer: CN=Root
-- Validity
-- Not Before: Oct 5 12:00:00 2021 GMT
-- Not After : Oct 5 12:00:00 2022 GMT
-- Subject: CN=Intermediate
-- Subject Public Key Info:
-- Public Key Algorithm: rsaEncryption
-- RSA Public-Key: (2048 bit)
-- Modulus:
-- 00:bb:3b:db:04:6e:17:e0:54:52:ba:23:77:24:bc:
-- 34:e3:70:d9:99:9e:53:5d:33:0b:a9:cc:4b:1d:ae:
-- 06:27:18:8e:55:ba:ad:12:c7:1d:32:59:6d:c3:16:
-- 20:db:62:a6:77:80:12:e0:87:58:51:55:e3:66:7f:
-- d1:e0:3a:22:65:e5:70:26:a2:04:04:f0:5d:f9:5f:
-- 56:c8:da:e8:0f:57:28:77:6e:9a:a0:4a:53:34:1a:
-- 63:37:a2:43:ab:0e:4a:cd:07:23:dd:55:83:44:00:
-- 0c:70:41:df:35:64:d0:c5:0e:6a:87:db:ca:fc:35:
-- d5:e2:5b:af:0b:a0:e6:75:a5:d2:e1:72:4e:22:63:
-- 01:41:73:b8:95:50:2c:fd:ed:c3:61:b6:36:d4:83:
-- 95:61:c3:e0:61:ff:f4:9e:8a:e8:ba:dc:d1:f6:89:
-- ed:9d:30:44:95:27:f4:d1:8b:e6:2f:14:66:56:f1:
-- da:f1:cc:04:1b:77:92:a5:9f:58:40:0c:9f:0c:32:
-- d6:05:c2:4c:c0:c5:9f:e5:a4:30:3d:4c:e9:9d:03:
-- 6c:4c:06:b6:e5:95:bd:21:b8:e6:2b:a8:a0:bf:06:
-- bb:43:33:19:3d:7b:17:59:f1:64:4d:24:67:b1:51:
-- 0f:35:ae:f0:71:75:79:ae:5b:02:34:04:31:e3:66:
-- 86:65
-- Exponent: 65537 (0x10001)
-- X509v3 extensions:
-- X509v3 Subject Key Identifier:
-- 92:11:3F:AC:11:96:C7:66:37:CF:83:5A:24:F0:3A:77:AF:33:8D:7F
-- X509v3 Authority Key Identifier:
-- keyid:B6:C2:EF:9F:D1:29:CB:0F:89:8C:4C:52:D4:BD:40:B7:11:B7:71:DD
--
-- Authority Information Access:
-- CA Issuers - URI:http://url-for-aia/Root.cer
--
-- X509v3 CRL Distribution Points:
--
-- Full Name:
-- URI:http://url-for-crl/Root.crl
--
-- X509v3 Key Usage: critical
-- Certificate Sign, CRL Sign
-- X509v3 Basic Constraints: critical
-- CA:TRUE
-- X509v3 Name Constraints:
-- Permitted:
-- DNS:t0.test
-- DNS:t1.test
-- DNS:t2.test
-- DNS:t3.test
-- DNS:t4.test
-- DNS:t5.test
-- DNS:t6.test
-- DNS:t7.test
-- DNS:t8.test
-- DNS:t9.test
-- DNS:t10.test
-- DNS:t11.test
-- DNS:t12.test
-- DNS:t13.test
-- DNS:t14.test
-- DNS:t15.test
-- DNS:t16.test
-- DNS:t17.test
-- DNS:t18.test
-- DNS:t19.test
-- DNS:t20.test
-- DNS:t21.test
-- DNS:t22.test
-- DNS:t23.test
-- DNS:t24.test
-- DNS:t25.test
-- DNS:t26.test
-- DNS:t27.test
-- DNS:t28.test
-- DNS:t29.test
-- DNS:t30.test
-- DNS:t31.test
-- DNS:t32.test
-- DNS:t33.test
-- DNS:t34.test
-- DNS:t35.test
-- DNS:t36.test
-- DNS:t37.test
-- DNS:t38.test
-- DNS:t39.test
-- DNS:t40.test
-- DNS:t41.test
-- DNS:t42.test
-- DNS:t43.test
-- DNS:t44.test
-- DNS:t45.test
-- DNS:t46.test
-- DNS:t47.test
-- DNS:t48.test
-- DNS:t49.test
-- DNS:t50.test
-- DNS:t51.test
-- DNS:t52.test
-- DNS:t53.test
-- DNS:t54.test
-- DNS:t55.test
-- DNS:t56.test
-- DNS:t57.test
-- DNS:t58.test
-- DNS:t59.test
-- DNS:t60.test
-- DNS:t61.test
-- DNS:t62.test
-- DNS:t63.test
-- DNS:t64.test
-- DNS:t65.test
-- DNS:t66.test
-- DNS:t67.test
-- DNS:t68.test
-- DNS:t69.test
-- DNS:t70.test
-- DNS:t71.test
-- DNS:t72.test
-- DNS:t73.test
-- DNS:t74.test
-- DNS:t75.test
-- DNS:t76.test
-- DNS:t77.test
-- DNS:t78.test
-- DNS:t79.test
-- DNS:t80.test
-- DNS:t81.test
-- DNS:t82.test
-- DNS:t83.test
-- DNS:t84.test
-- DNS:t85.test
-- DNS:t86.test
-- DNS:t87.test
-- DNS:t88.test
-- DNS:t89.test
-- DNS:t90.test
-- DNS:t91.test
-- DNS:t92.test
-- DNS:t93.test
-- DNS:t94.test
-- DNS:t95.test
-- DNS:t96.test
-- DNS:t97.test
-- DNS:t98.test
-- DNS:t99.test
-- DNS:t100.test
-- DNS:t101.test
-- DNS:t102.test
-- DNS:t103.test
-- DNS:t104.test
-- DNS:t105.test
-- DNS:t106.test
-- DNS:t107.test
-- DNS:t108.test
-- DNS:t109.test
-- DNS:t110.test
-- DNS:t111.test
-- DNS:t112.test
-- DNS:t113.test
-- DNS:t114.test
-- DNS:t115.test
-- DNS:t116.test
-- DNS:t117.test
-- DNS:t118.test
-- DNS:t119.test
-- DNS:t120.test
-- DNS:t121.test
-- DNS:t122.test
-- DNS:t123.test
-- DNS:t124.test
-- DNS:t125.test
-- DNS:t126.test
-- DNS:t127.test
-- DNS:t128.test
-- DNS:t129.test
-- DNS:t130.test
-- DNS:t131.test
-- DNS:t132.test
-- DNS:t133.test
-- DNS:t134.test
-- DNS:t135.test
-- DNS:t136.test
-- DNS:t137.test
-- DNS:t138.test
-- DNS:t139.test
-- DNS:t140.test
-- DNS:t141.test
-- DNS:t142.test
-- DNS:t143.test
-- DNS:t144.test
-- DNS:t145.test
-- DNS:t146.test
-- DNS:t147.test
-- DNS:t148.test
-- DNS:t149.test
-- DNS:t150.test
-- DNS:t151.test
-- DNS:t152.test
-- DNS:t153.test
-- DNS:t154.test
-- DNS:t155.test
-- DNS:t156.test
-- DNS:t157.test
-- DNS:t158.test
-- DNS:t159.test
-- DNS:t160.test
-- DNS:t161.test
-- DNS:t162.test
-- DNS:t163.test
-- DNS:t164.test
-- DNS:t165.test
-- DNS:t166.test
-- DNS:t167.test
-- DNS:t168.test
-- DNS:t169.test
-- DNS:t170.test
-- DNS:t171.test
-- DNS:t172.test
-- DNS:t173.test
-- DNS:t174.test
-- DNS:t175.test
-- DNS:t176.test
-- DNS:t177.test
-- DNS:t178.test
-- DNS:t179.test
-- DNS:t180.test
-- DNS:t181.test
-- DNS:t182.test
-- DNS:t183.test
-- DNS:t184.test
-- DNS:t185.test
-- DNS:t186.test
-- DNS:t187.test
-- DNS:t188.test
-- DNS:t189.test
-- DNS:t190.test
-- DNS:t191.test
-- DNS:t192.test
-- DNS:t193.test
-- DNS:t194.test
-- DNS:t195.test
-- DNS:t196.test
-- DNS:t197.test
-- DNS:t198.test
-- DNS:t199.test
-- DNS:t200.test
-- DNS:t201.test
-- DNS:t202.test
-- DNS:t203.test
-- DNS:t204.test
-- DNS:t205.test
-- DNS:t206.test
-- DNS:t207.test
-- DNS:t208.test
-- DNS:t209.test
-- DNS:t210.test
-- DNS:t211.test
-- DNS:t212.test
-- DNS:t213.test
-- DNS:t214.test
-- DNS:t215.test
-- DNS:t216.test
-- DNS:t217.test
-- DNS:t218.test
-- DNS:t219.test
-- DNS:t220.test
-- DNS:t221.test
-- DNS:t222.test
-- DNS:t223.test
-- DNS:t224.test
-- DNS:t225.test
-- DNS:t226.test
-- DNS:t227.test
-- DNS:t228.test
-- DNS:t229.test
-- DNS:t230.test
-- DNS:t231.test
-- DNS:t232.test
-- DNS:t233.test
-- DNS:t234.test
-- DNS:t235.test
-- DNS:t236.test
-- DNS:t237.test
-- DNS:t238.test
-- DNS:t239.test
-- DNS:t240.test
-- DNS:t241.test
-- DNS:t242.test
-- DNS:t243.test
-- DNS:t244.test
-- DNS:t245.test
-- DNS:t246.test
-- DNS:t247.test
-- DNS:t248.test
-- DNS:t249.test
-- DNS:t250.test
-- DNS:t251.test
-- DNS:t252.test
-- DNS:t253.test
-- DNS:t254.test
-- DNS:t255.test
-- DNS:t256.test
-- DNS:t257.test
-- DNS:t258.test
-- DNS:t259.test
-- DNS:t260.test
-- DNS:t261.test
-- DNS:t262.test
-- DNS:t263.test
-- DNS:t264.test
-- DNS:t265.test
-- DNS:t266.test
-- DNS:t267.test
-- DNS:t268.test
-- DNS:t269.test
-- DNS:t270.test
-- DNS:t271.test
-- DNS:t272.test
-- DNS:t273.test
-- DNS:t274.test
-- DNS:t275.test
-- DNS:t276.test
-- DNS:t277.test
-- DNS:t278.test
-- DNS:t279.test
-- DNS:t280.test
-- DNS:t281.test
-- DNS:t282.test
-- DNS:t283.test
-- DNS:t284.test
-- DNS:t285.test
-- DNS:t286.test
-- DNS:t287.test
-- DNS:t288.test
-- DNS:t289.test
-- DNS:t290.test
-- DNS:t291.test
-- DNS:t292.test
-- DNS:t293.test
-- DNS:t294.test
-- DNS:t295.test
-- DNS:t296.test
-- DNS:t297.test
-- DNS:t298.test
-- DNS:t299.test
-- DNS:t300.test
-- DNS:t301.test
-- DNS:t302.test
-- DNS:t303.test
-- DNS:t304.test
-- DNS:t305.test
-- DNS:t306.test
-- DNS:t307.test
-- DNS:t308.test
-- DNS:t309.test
-- DNS:t310.test
-- DNS:t311.test
-- DNS:t312.test
-- DNS:t313.test
-- DNS:t314.test
-- DNS:t315.test
-- DNS:t316.test
-- DNS:t317.test
-- DNS:t318.test
-- DNS:t319.test
-- DNS:t320.test
-- DNS:t321.test
-- DNS:t322.test
-- DNS:t323.test
-- DNS:t324.test
-- DNS:t325.test
-- DNS:t326.test
-- DNS:t327.test
-- DNS:t328.test
-- DNS:t329.test
-- DNS:t330.test
-- DNS:t331.test
-- DNS:t332.test
-- DNS:t333.test
-- DNS:t334.test
-- DNS:t335.test
-- DNS:t336.test
-- DNS:t337.test
-- DNS:t338.test
-- DNS:t339.test
-- DNS:t340.test
-- DNS:t341.test
-- DNS:t342.test
-- DNS:t343.test
-- DNS:t344.test
-- DNS:t345.test
-- DNS:t346.test
-- DNS:t347.test
-- DNS:t348.test
-- DNS:t349.test
-- DNS:t350.test
-- DNS:t351.test
-- DNS:t352.test
-- DNS:t353.test
-- DNS:t354.test
-- DNS:t355.test
-- DNS:t356.test
-- DNS:t357.test
-- DNS:t358.test
-- DNS:t359.test
-- DNS:t360.test
-- DNS:t361.test
-- DNS:t362.test
-- DNS:t363.test
-- DNS:t364.test
-- DNS:t365.test
-- DNS:t366.test
-- DNS:t367.test
-- DNS:t368.test
-- DNS:t369.test
-- DNS:t370.test
-- DNS:t371.test
-- DNS:t372.test
-- DNS:t373.test
-- DNS:t374.test
-- DNS:t375.test
-- DNS:t376.test
-- DNS:t377.test
-- DNS:t378.test
-- DNS:t379.test
-- DNS:t380.test
-- DNS:t381.test
-- DNS:t382.test
-- DNS:t383.test
-- DNS:t384.test
-- DNS:t385.test
-- DNS:t386.test
-- DNS:t387.test
-- DNS:t388.test
-- DNS:t389.test
-- DNS:t390.test
-- DNS:t391.test
-- DNS:t392.test
-- DNS:t393.test
-- DNS:t394.test
-- DNS:t395.test
-- DNS:t396.test
-- DNS:t397.test
-- DNS:t398.test
-- DNS:t399.test
-- DNS:t400.test
-- DNS:t401.test
-- DNS:t402.test
-- DNS:t403.test
-- DNS:t404.test
-- DNS:t405.test
-- DNS:t406.test
-- DNS:t407.test
-- DNS:t408.test
-- DNS:t409.test
-- DNS:t410.test
-- DNS:t411.test
-- DNS:t412.test
-- DNS:t413.test
-- DNS:t414.test
-- DNS:t415.test
-- DNS:t416.test
-- DNS:t417.test
-- DNS:t418.test
-- DNS:t419.test
-- DNS:t420.test
-- DNS:t421.test
-- DNS:t422.test
-- DNS:t423.test
-- DNS:t424.test
-- DNS:t425.test
-- DNS:t426.test
-- DNS:t427.test
-- DNS:t428.test
-- DNS:t429.test
-- DNS:t430.test
-- DNS:t431.test
-- DNS:t432.test
-- DNS:t433.test
-- DNS:t434.test
-- DNS:t435.test
-- DNS:t436.test
-- DNS:t437.test
-- DNS:t438.test
-- DNS:t439.test
-- DNS:t440.test
-- DNS:t441.test
-- DNS:t442.test
-- DNS:t443.test
-- DNS:t444.test
-- DNS:t445.test
-- DNS:t446.test
-- DNS:t447.test
-- DNS:t448.test
-- DNS:t449.test
-- DNS:t450.test
-- DNS:t451.test
-- DNS:t452.test
-- DNS:t453.test
-- DNS:t454.test
-- DNS:t455.test
-- DNS:t456.test
-- DNS:t457.test
-- DNS:t458.test
-- DNS:t459.test
-- DNS:t460.test
-- DNS:t461.test
-- DNS:t462.test
-- DNS:t463.test
-- DNS:t464.test
-- DNS:t465.test
-- DNS:t466.test
-- DNS:t467.test
-- DNS:t468.test
-- DNS:t469.test
-- DNS:t470.test
-- DNS:t471.test
-- DNS:t472.test
-- DNS:t473.test
-- DNS:t474.test
-- DNS:t475.test
-- DNS:t476.test
-- DNS:t477.test
-- DNS:t478.test
-- DNS:t479.test
-- DNS:t480.test
-- DNS:t481.test
-- DNS:t482.test
-- DNS:t483.test
-- DNS:t484.test
-- DNS:t485.test
-- DNS:t486.test
-- DNS:t487.test
-- DNS:t488.test
-- DNS:t489.test
-- DNS:t490.test
-- DNS:t491.test
-- DNS:t492.test
-- DNS:t493.test
-- DNS:t494.test
-- DNS:t495.test
-- DNS:t496.test
-- DNS:t497.test
-- DNS:t498.test
-- DNS:t499.test
-- DNS:t500.test
-- DNS:t501.test
-- DNS:t502.test
-- DNS:t503.test
-- DNS:t504.test
-- DNS:t505.test
-- DNS:t506.test
-- DNS:t507.test
-- DNS:t508.test
-- DNS:t509.test
-- DNS:t510.test
-- DNS:t511.test
-- DNS:t512.test
-- DNS:t513.test
-- DNS:t514.test
-- DNS:t515.test
-- DNS:t516.test
-- DNS:t517.test
-- DNS:t518.test
-- DNS:t519.test
-- DNS:t520.test
-- DNS:t521.test
-- DNS:t522.test
-- DNS:t523.test
-- DNS:t524.test
-- DNS:t525.test
-- DNS:t526.test
-- DNS:t527.test
-- DNS:t528.test
-- DNS:t529.test
-- DNS:t530.test
-- DNS:t531.test
-- DNS:t532.test
-- DNS:t533.test
-- DNS:t534.test
-- DNS:t535.test
-- DNS:t536.test
-- DNS:t537.test
-- DNS:t538.test
-- DNS:t539.test
-- DNS:t540.test
-- DNS:t541.test
-- DNS:t542.test
-- DNS:t543.test
-- DNS:t544.test
-- DNS:t545.test
-- DNS:t546.test
-- DNS:t547.test
-- DNS:t548.test
-- DNS:t549.test
-- DNS:t550.test
-- DNS:t551.test
-- DNS:t552.test
-- DNS:t553.test
-- DNS:t554.test
-- DNS:t555.test
-- DNS:t556.test
-- DNS:t557.test
-- DNS:t558.test
-- DNS:t559.test
-- DNS:t560.test
-- DNS:t561.test
-- DNS:t562.test
-- DNS:t563.test
-- DNS:t564.test
-- DNS:t565.test
-- DNS:t566.test
-- DNS:t567.test
-- DNS:t568.test
-- DNS:t569.test
-- DNS:t570.test
-- DNS:t571.test
-- DNS:t572.test
-- DNS:t573.test
-- DNS:t574.test
-- DNS:t575.test
-- DNS:t576.test
-- DNS:t577.test
-- DNS:t578.test
-- DNS:t579.test
-- DNS:t580.test
-- DNS:t581.test
-- DNS:t582.test
-- DNS:t583.test
-- DNS:t584.test
-- DNS:t585.test
-- DNS:t586.test
-- DNS:t587.test
-- DNS:t588.test
-- DNS:t589.test
-- DNS:t590.test
-- DNS:t591.test
-- DNS:t592.test
-- DNS:t593.test
-- DNS:t594.test
-- DNS:t595.test
-- DNS:t596.test
-- DNS:t597.test
-- DNS:t598.test
-- DNS:t599.test
-- DNS:t600.test
-- DNS:t601.test
-- DNS:t602.test
-- DNS:t603.test
-- DNS:t604.test
-- DNS:t605.test
-- DNS:t606.test
-- DNS:t607.test
-- DNS:t608.test
-- DNS:t609.test
-- DNS:t610.test
-- DNS:t611.test
-- DNS:t612.test
-- DNS:t613.test
-- DNS:t614.test
-- DNS:t615.test
-- DNS:t616.test
-- DNS:t617.test
-- DNS:t618.test
-- DNS:t619.test
-- DNS:t620.test
-- DNS:t621.test
-- DNS:t622.test
-- DNS:t623.test
-- DNS:t624.test
-- DNS:t625.test
-- DNS:t626.test
-- DNS:t627.test
-- DNS:t628.test
-- DNS:t629.test
-- DNS:t630.test
-- DNS:t631.test
-- DNS:t632.test
-- DNS:t633.test
-- DNS:t634.test
-- DNS:t635.test
-- DNS:t636.test
-- DNS:t637.test
-- DNS:t638.test
-- DNS:t639.test
-- DNS:t640.test
-- DNS:t641.test
-- DNS:t642.test
-- DNS:t643.test
-- DNS:t644.test
-- DNS:t645.test
-- DNS:t646.test
-- DNS:t647.test
-- DNS:t648.test
-- DNS:t649.test
-- DNS:t650.test
-- DNS:t651.test
-- DNS:t652.test
-- DNS:t653.test
-- DNS:t654.test
-- DNS:t655.test
-- DNS:t656.test
-- DNS:t657.test
-- DNS:t658.test
-- DNS:t659.test
-- DNS:t660.test
-- DNS:t661.test
-- DNS:t662.test
-- DNS:t663.test
-- DNS:t664.test
-- DNS:t665.test
-- DNS:t666.test
-- DNS:t667.test
-- DNS:t668.test
-- DNS:t669.test
-- DNS:t670.test
-- DNS:t671.test
-- DNS:t672.test
-- DNS:t673.test
-- DNS:t674.test
-- DNS:t675.test
-- DNS:t676.test
-- DNS:t677.test
-- DNS:t678.test
-- DNS:t679.test
-- DNS:t680.test
-- DNS:t681.test
-- DNS:t682.test
-- DNS:t683.test
-- DNS:t684.test
-- DNS:t685.test
-- DNS:t686.test
-- DNS:t687.test
-- DNS:t688.test
-- DNS:t689.test
-- DNS:t690.test
-- DNS:t691.test
-- DNS:t692.test
-- DNS:t693.test
-- DNS:t694.test
-- DNS:t695.test
-- DNS:t696.test
-- DNS:t697.test
-- DNS:t698.test
-- DNS:t699.test
-- DNS:t700.test
-- DNS:t701.test
-- DNS:t702.test
-- DNS:t703.test
-- DNS:t704.test
-- DNS:t705.test
-- DNS:t706.test
-- DNS:t707.test
-- DNS:t708.test
-- DNS:t709.test
-- DNS:t710.test
-- DNS:t711.test
-- DNS:t712.test
-- DNS:t713.test
-- DNS:t714.test
-- DNS:t715.test
-- DNS:t716.test
-- DNS:t717.test
-- DNS:t718.test
-- DNS:t719.test
-- DNS:t720.test
-- DNS:t721.test
-- DNS:t722.test
-- DNS:t723.test
-- DNS:t724.test
-- DNS:t725.test
-- DNS:t726.test
-- DNS:t727.test
-- DNS:t728.test
-- DNS:t729.test
-- DNS:t730.test
-- DNS:t731.test
-- DNS:t732.test
-- DNS:t733.test
-- DNS:t734.test
-- DNS:t735.test
-- DNS:t736.test
-- DNS:t737.test
-- DNS:t738.test
-- DNS:t739.test
-- DNS:t740.test
-- DNS:t741.test
-- DNS:t742.test
-- DNS:t743.test
-- DNS:t744.test
-- DNS:t745.test
-- DNS:t746.test
-- DNS:t747.test
-- DNS:t748.test
-- DNS:t749.test
-- DNS:t750.test
-- DNS:t751.test
-- DNS:t752.test
-- DNS:t753.test
-- DNS:t754.test
-- DNS:t755.test
-- DNS:t756.test
-- DNS:t757.test
-- DNS:t758.test
-- DNS:t759.test
-- DNS:t760.test
-- DNS:t761.test
-- DNS:t762.test
-- DNS:t763.test
-- DNS:t764.test
-- DNS:t765.test
-- DNS:t766.test
-- DNS:t767.test
-- DNS:t768.test
-- DNS:t769.test
-- DNS:t770.test
-- DNS:t771.test
-- DNS:t772.test
-- DNS:t773.test
-- DNS:t774.test
-- DNS:t775.test
-- DNS:t776.test
-- DNS:t777.test
-- DNS:t778.test
-- DNS:t779.test
-- DNS:t780.test
-- DNS:t781.test
-- DNS:t782.test
-- DNS:t783.test
-- DNS:t784.test
-- DNS:t785.test
-- DNS:t786.test
-- DNS:t787.test
-- DNS:t788.test
-- DNS:t789.test
-- DNS:t790.test
-- DNS:t791.test
-- DNS:t792.test
-- DNS:t793.test
-- DNS:t794.test
-- DNS:t795.test
-- DNS:t796.test
-- DNS:t797.test
-- DNS:t798.test
-- DNS:t799.test
-- DNS:t800.test
-- DNS:t801.test
-- DNS:t802.test
-- DNS:t803.test
-- DNS:t804.test
-- DNS:t805.test
-- DNS:t806.test
-- DNS:t807.test
-- DNS:t808.test
-- DNS:t809.test
-- DNS:t810.test
-- DNS:t811.test
-- DNS:t812.test
-- DNS:t813.test
-- DNS:t814.test
-- DNS:t815.test
-- DNS:t816.test
-- DNS:t817.test
-- DNS:t818.test
-- DNS:t819.test
-- DNS:t820.test
-- DNS:t821.test
-- DNS:t822.test
-- DNS:t823.test
-- DNS:t824.test
-- DNS:t825.test
-- DNS:t826.test
-- DNS:t827.test
-- DNS:t828.test
-- DNS:t829.test
-- DNS:t830.test
-- DNS:t831.test
-- DNS:t832.test
-- DNS:t833.test
-- DNS:t834.test
-- DNS:t835.test
-- DNS:t836.test
-- DNS:t837.test
-- DNS:t838.test
-- DNS:t839.test
-- DNS:t840.test
-- DNS:t841.test
-- DNS:t842.test
-- DNS:t843.test
-- DNS:t844.test
-- DNS:t845.test
-- DNS:t846.test
-- DNS:t847.test
-- DNS:t848.test
-- DNS:t849.test
-- DNS:t850.test
-- DNS:t851.test
-- DNS:t852.test
-- DNS:t853.test
-- DNS:t854.test
-- DNS:t855.test
-- DNS:t856.test
-- DNS:t857.test
-- DNS:t858.test
-- DNS:t859.test
-- DNS:t860.test
-- DNS:t861.test
-- DNS:t862.test
-- DNS:t863.test
-- DNS:t864.test
-- DNS:t865.test
-- DNS:t866.test
-- DNS:t867.test
-- DNS:t868.test
-- DNS:t869.test
-- DNS:t870.test
-- DNS:t871.test
-- DNS:t872.test
-- DNS:t873.test
-- DNS:t874.test
-- DNS:t875.test
-- DNS:t876.test
-- DNS:t877.test
-- DNS:t878.test
-- DNS:t879.test
-- DNS:t880.test
-- DNS:t881.test
-- DNS:t882.test
-- DNS:t883.test
-- DNS:t884.test
-- DNS:t885.test
-- DNS:t886.test
-- DNS:t887.test
-- DNS:t888.test
-- DNS:t889.test
-- DNS:t890.test
-- DNS:t891.test
-- DNS:t892.test
-- DNS:t893.test
-- DNS:t894.test
-- DNS:t895.test
-- DNS:t896.test
-- DNS:t897.test
-- DNS:t898.test
-- DNS:t899.test
-- DNS:t900.test
-- DNS:t901.test
-- DNS:t902.test
-- DNS:t903.test
-- DNS:t904.test
-- DNS:t905.test
-- DNS:t906.test
-- DNS:t907.test
-- DNS:t908.test
-- DNS:t909.test
-- DNS:t910.test
-- DNS:t911.test
-- DNS:t912.test
-- DNS:t913.test
-- DNS:t914.test
-- DNS:t915.test
-- DNS:t916.test
-- DNS:t917.test
-- DNS:t918.test
-- DNS:t919.test
-- DNS:t920.test
-- DNS:t921.test
-- DNS:t922.test
-- DNS:t923.test
-- DNS:t924.test
-- DNS:t925.test
-- DNS:t926.test
-- DNS:t927.test
-- DNS:t928.test
-- DNS:t929.test
-- DNS:t930.test
-- DNS:t931.test
-- DNS:t932.test
-- DNS:t933.test
-- DNS:t934.test
-- DNS:t935.test
-- DNS:t936.test
-- DNS:t937.test
-- DNS:t938.test
-- DNS:t939.test
-- DNS:t940.test
-- DNS:t941.test
-- DNS:t942.test
-- DNS:t943.test
-- DNS:t944.test
-- DNS:t945.test
-- DNS:t946.test
-- DNS:t947.test
-- DNS:t948.test
-- DNS:t949.test
-- DNS:t950.test
-- DNS:t951.test
-- DNS:t952.test
-- DNS:t953.test
-- DNS:t954.test
-- DNS:t955.test
-- DNS:t956.test
-- DNS:t957.test
-- DNS:t958.test
-- DNS:t959.test
-- DNS:t960.test
-- DNS:t961.test
-- DNS:t962.test
-- DNS:t963.test
-- DNS:t964.test
-- DNS:t965.test
-- DNS:t966.test
-- DNS:t967.test
-- DNS:t968.test
-- DNS:t969.test
-- DNS:t970.test
-- DNS:t971.test
-- DNS:t972.test
-- DNS:t973.test
-- DNS:t974.test
-- DNS:t975.test
-- DNS:t976.test
-- DNS:t977.test
-- DNS:t978.test
-- DNS:t979.test
-- DNS:t980.test
-- DNS:t981.test
-- DNS:t982.test
-- DNS:t983.test
-- DNS:t984.test
-- DNS:t985.test
-- DNS:t986.test
-- DNS:t987.test
-- DNS:t988.test
-- DNS:t989.test
-- DNS:t990.test
-- DNS:t991.test
-- DNS:t992.test
-- DNS:t993.test
-- DNS:t994.test
-- DNS:t995.test
-- DNS:t996.test
-- DNS:t997.test
-- DNS:t998.test
-- DNS:t999.test
-- DNS:t1000.test
-- DNS:t1001.test
-- DNS:t1002.test
-- DNS:t1003.test
-- DNS:t1004.test
-- DNS:t1005.test
-- DNS:t1006.test
-- DNS:t1007.test
-- DNS:t1008.test
-- DNS:t1009.test
-- DNS:t1010.test
-- DNS:t1011.test
-- DNS:t1012.test
-- DNS:t1013.test
-- DNS:t1014.test
-- DNS:t1015.test
-- DNS:t1016.test
-- DNS:t1017.test
-- DNS:t1018.test
-- DNS:t1019.test
-- DNS:t1020.test
-- DNS:t1021.test
-- DNS:t1022.test
-- DNS:t1023.test
-- DNS:t1024.test
-- IP:10.0.0.0/255.255.255.255
-- IP:10.0.0.1/255.255.255.255
-- IP:10.0.0.2/255.255.255.255
-- IP:10.0.0.3/255.255.255.255
-- IP:10.0.0.4/255.255.255.255
-- IP:10.0.0.5/255.255.255.255
-- IP:10.0.0.6/255.255.255.255
-- IP:10.0.0.7/255.255.255.255
-- IP:10.0.0.8/255.255.255.255
-- IP:10.0.0.9/255.255.255.255
-- IP:10.0.0.10/255.255.255.255
-- IP:10.0.0.11/255.255.255.255
-- IP:10.0.0.12/255.255.255.255
-- IP:10.0.0.13/255.255.255.255
-- IP:10.0.0.14/255.255.255.255
-- IP:10.0.0.15/255.255.255.255
-- IP:10.0.0.16/255.255.255.255
-- IP:10.0.0.17/255.255.255.255
-- IP:10.0.0.18/255.255.255.255
-- IP:10.0.0.19/255.255.255.255
-- IP:10.0.0.20/255.255.255.255
-- IP:10.0.0.21/255.255.255.255
-- IP:10.0.0.22/255.255.255.255
-- IP:10.0.0.23/255.255.255.255
-- IP:10.0.0.24/255.255.255.255
-- IP:10.0.0.25/255.255.255.255
-- IP:10.0.0.26/255.255.255.255
-- IP:10.0.0.27/255.255.255.255
-- IP:10.0.0.28/255.255.255.255
-- IP:10.0.0.29/255.255.255.255
-- IP:10.0.0.30/255.255.255.255
-- IP:10.0.0.31/255.255.255.255
-- IP:10.0.0.32/255.255.255.255
-- IP:10.0.0.33/255.255.255.255
-- IP:10.0.0.34/255.255.255.255
-- IP:10.0.0.35/255.255.255.255
-- IP:10.0.0.36/255.255.255.255
-- IP:10.0.0.37/255.255.255.255
-- IP:10.0.0.38/255.255.255.255
-- IP:10.0.0.39/255.255.255.255
-- IP:10.0.0.40/255.255.255.255
-- IP:10.0.0.41/255.255.255.255
-- IP:10.0.0.42/255.255.255.255
-- IP:10.0.0.43/255.255.255.255
-- IP:10.0.0.44/255.255.255.255
-- IP:10.0.0.45/255.255.255.255
-- IP:10.0.0.46/255.255.255.255
-- IP:10.0.0.47/255.255.255.255
-- IP:10.0.0.48/255.255.255.255
-- IP:10.0.0.49/255.255.255.255
-- IP:10.0.0.50/255.255.255.255
-- IP:10.0.0.51/255.255.255.255
-- IP:10.0.0.52/255.255.255.255
-- IP:10.0.0.53/255.255.255.255
-- IP:10.0.0.54/255.255.255.255
-- IP:10.0.0.55/255.255.255.255
-- IP:10.0.0.56/255.255.255.255
-- IP:10.0.0.57/255.255.255.255
-- IP:10.0.0.58/255.255.255.255
-- IP:10.0.0.59/255.255.255.255
-- IP:10.0.0.60/255.255.255.255
-- IP:10.0.0.61/255.255.255.255
-- IP:10.0.0.62/255.255.255.255
-- IP:10.0.0.63/255.255.255.255
-- IP:10.0.0.64/255.255.255.255
-- IP:10.0.0.65/255.255.255.255
-- IP:10.0.0.66/255.255.255.255
-- IP:10.0.0.67/255.255.255.255
-- IP:10.0.0.68/255.255.255.255
-- IP:10.0.0.69/255.255.255.255
-- IP:10.0.0.70/255.255.255.255
-- IP:10.0.0.71/255.255.255.255
-- IP:10.0.0.72/255.255.255.255
-- IP:10.0.0.73/255.255.255.255
-- IP:10.0.0.74/255.255.255.255
-- IP:10.0.0.75/255.255.255.255
-- IP:10.0.0.76/255.255.255.255
-- IP:10.0.0.77/255.255.255.255
-- IP:10.0.0.78/255.255.255.255
-- IP:10.0.0.79/255.255.255.255
-- IP:10.0.0.80/255.255.255.255
-- IP:10.0.0.81/255.255.255.255
-- IP:10.0.0.82/255.255.255.255
-- IP:10.0.0.83/255.255.255.255
-- IP:10.0.0.84/255.255.255.255
-- IP:10.0.0.85/255.255.255.255
-- IP:10.0.0.86/255.255.255.255
-- IP:10.0.0.87/255.255.255.255
-- IP:10.0.0.88/255.255.255.255
-- IP:10.0.0.89/255.255.255.255
-- IP:10.0.0.90/255.255.255.255
-- IP:10.0.0.91/255.255.255.255
-- IP:10.0.0.92/255.255.255.255
-- IP:10.0.0.93/255.255.255.255
-- IP:10.0.0.94/255.255.255.255
-- IP:10.0.0.95/255.255.255.255
-- IP:10.0.0.96/255.255.255.255
-- IP:10.0.0.97/255.255.255.255
-- IP:10.0.0.98/255.255.255.255
-- IP:10.0.0.99/255.255.255.255
-- IP:10.0.0.100/255.255.255.255
-- IP:10.0.0.101/255.255.255.255
-- IP:10.0.0.102/255.255.255.255
-- IP:10.0.0.103/255.255.255.255
-- IP:10.0.0.104/255.255.255.255
-- IP:10.0.0.105/255.255.255.255
-- IP:10.0.0.106/255.255.255.255
-- IP:10.0.0.107/255.255.255.255
-- IP:10.0.0.108/255.255.255.255
-- IP:10.0.0.109/255.255.255.255
-- IP:10.0.0.110/255.255.255.255
-- IP:10.0.0.111/255.255.255.255
-- IP:10.0.0.112/255.255.255.255
-- IP:10.0.0.113/255.255.255.255
-- IP:10.0.0.114/255.255.255.255
-- IP:10.0.0.115/255.255.255.255
-- IP:10.0.0.116/255.255.255.255
-- IP:10.0.0.117/255.255.255.255
-- IP:10.0.0.118/255.255.255.255
-- IP:10.0.0.119/255.255.255.255
-- IP:10.0.0.120/255.255.255.255
-- IP:10.0.0.121/255.255.255.255
-- IP:10.0.0.122/255.255.255.255
-- IP:10.0.0.123/255.255.255.255
-- IP:10.0.0.124/255.255.255.255
-- IP:10.0.0.125/255.255.255.255
-- IP:10.0.0.126/255.255.255.255
-- IP:10.0.0.127/255.255.255.255
-- IP:10.0.0.128/255.255.255.255
-- IP:10.0.0.129/255.255.255.255
-- IP:10.0.0.130/255.255.255.255
-- IP:10.0.0.131/255.255.255.255
-- IP:10.0.0.132/255.255.255.255
-- IP:10.0.0.133/255.255.255.255
-- IP:10.0.0.134/255.255.255.255
-- IP:10.0.0.135/255.255.255.255
-- IP:10.0.0.136/255.255.255.255
-- IP:10.0.0.137/255.255.255.255
-- IP:10.0.0.138/255.255.255.255
-- IP:10.0.0.139/255.255.255.255
-- IP:10.0.0.140/255.255.255.255
-- IP:10.0.0.141/255.255.255.255
-- IP:10.0.0.142/255.255.255.255
-- IP:10.0.0.143/255.255.255.255
-- IP:10.0.0.144/255.255.255.255
-- IP:10.0.0.145/255.255.255.255
-- IP:10.0.0.146/255.255.255.255
-- IP:10.0.0.147/255.255.255.255
-- IP:10.0.0.148/255.255.255.255
-- IP:10.0.0.149/255.255.255.255
-- IP:10.0.0.150/255.255.255.255
-- IP:10.0.0.151/255.255.255.255
-- IP:10.0.0.152/255.255.255.255
-- IP:10.0.0.153/255.255.255.255
-- IP:10.0.0.154/255.255.255.255
-- IP:10.0.0.155/255.255.255.255
-- IP:10.0.0.156/255.255.255.255
-- IP:10.0.0.157/255.255.255.255
-- IP:10.0.0.158/255.255.255.255
-- IP:10.0.0.159/255.255.255.255
-- IP:10.0.0.160/255.255.255.255
-- IP:10.0.0.161/255.255.255.255
-- IP:10.0.0.162/255.255.255.255
-- IP:10.0.0.163/255.255.255.255
-- IP:10.0.0.164/255.255.255.255
-- IP:10.0.0.165/255.255.255.255
-- IP:10.0.0.166/255.255.255.255
-- IP:10.0.0.167/255.255.255.255
-- IP:10.0.0.168/255.255.255.255
-- IP:10.0.0.169/255.255.255.255
-- IP:10.0.0.170/255.255.255.255
-- IP:10.0.0.171/255.255.255.255
-- IP:10.0.0.172/255.255.255.255
-- IP:10.0.0.173/255.255.255.255
-- IP:10.0.0.174/255.255.255.255
-- IP:10.0.0.175/255.255.255.255
-- IP:10.0.0.176/255.255.255.255
-- IP:10.0.0.177/255.255.255.255
-- IP:10.0.0.178/255.255.255.255
-- IP:10.0.0.179/255.255.255.255
-- IP:10.0.0.180/255.255.255.255
-- IP:10.0.0.181/255.255.255.255
-- IP:10.0.0.182/255.255.255.255
-- IP:10.0.0.183/255.255.255.255
-- IP:10.0.0.184/255.255.255.255
-- IP:10.0.0.185/255.255.255.255
-- IP:10.0.0.186/255.255.255.255
-- IP:10.0.0.187/255.255.255.255
-- IP:10.0.0.188/255.255.255.255
-- IP:10.0.0.189/255.255.255.255
-- IP:10.0.0.190/255.255.255.255
-- IP:10.0.0.191/255.255.255.255
-- IP:10.0.0.192/255.255.255.255
-- IP:10.0.0.193/255.255.255.255
-- IP:10.0.0.194/255.255.255.255
-- IP:10.0.0.195/255.255.255.255
-- IP:10.0.0.196/255.255.255.255
-- IP:10.0.0.197/255.255.255.255
-- IP:10.0.0.198/255.255.255.255
-- IP:10.0.0.199/255.255.255.255
-- IP:10.0.0.200/255.255.255.255
-- IP:10.0.0.201/255.255.255.255
-- IP:10.0.0.202/255.255.255.255
-- IP:10.0.0.203/255.255.255.255
-- IP:10.0.0.204/255.255.255.255
-- IP:10.0.0.205/255.255.255.255
-- IP:10.0.0.206/255.255.255.255
-- IP:10.0.0.207/255.255.255.255
-- IP:10.0.0.208/255.255.255.255
-- IP:10.0.0.209/255.255.255.255
-- IP:10.0.0.210/255.255.255.255
-- IP:10.0.0.211/255.255.255.255
-- IP:10.0.0.212/255.255.255.255
-- IP:10.0.0.213/255.255.255.255
-- IP:10.0.0.214/255.255.255.255
-- IP:10.0.0.215/255.255.255.255
-- IP:10.0.0.216/255.255.255.255
-- IP:10.0.0.217/255.255.255.255
-- IP:10.0.0.218/255.255.255.255
-- IP:10.0.0.219/255.255.255.255
-- IP:10.0.0.220/255.255.255.255
-- IP:10.0.0.221/255.255.255.255
-- IP:10.0.0.222/255.255.255.255
-- IP:10.0.0.223/255.255.255.255
-- IP:10.0.0.224/255.255.255.255
-- IP:10.0.0.225/255.255.255.255
-- IP:10.0.0.226/255.255.255.255
-- IP:10.0.0.227/255.255.255.255
-- IP:10.0.0.228/255.255.255.255
-- IP:10.0.0.229/255.255.255.255
-- IP:10.0.0.230/255.255.255.255
-- IP:10.0.0.231/255.255.255.255
-- IP:10.0.0.232/255.255.255.255
-- IP:10.0.0.233/255.255.255.255
-- IP:10.0.0.234/255.255.255.255
-- IP:10.0.0.235/255.255.255.255
-- IP:10.0.0.236/255.255.255.255
-- IP:10.0.0.237/255.255.255.255
-- IP:10.0.0.238/255.255.255.255
-- IP:10.0.0.239/255.255.255.255
-- IP:10.0.0.240/255.255.255.255
-- IP:10.0.0.241/255.255.255.255
-- IP:10.0.0.242/255.255.255.255
-- IP:10.0.0.243/255.255.255.255
-- IP:10.0.0.244/255.255.255.255
-- IP:10.0.0.245/255.255.255.255
-- IP:10.0.0.246/255.255.255.255
-- IP:10.0.0.247/255.255.255.255
-- IP:10.0.0.248/255.255.255.255
-- IP:10.0.0.249/255.255.255.255
-- IP:10.0.0.250/255.255.255.255
-- IP:10.0.0.251/255.255.255.255
-- IP:10.0.0.252/255.255.255.255
-- IP:10.0.0.253/255.255.255.255
-- IP:10.0.0.254/255.255.255.255
-- IP:10.0.0.255/255.255.255.255
-- IP:10.0.1.0/255.255.255.255
-- IP:10.0.1.1/255.255.255.255
-- IP:10.0.1.2/255.255.255.255
-- IP:10.0.1.3/255.255.255.255
-- IP:10.0.1.4/255.255.255.255
-- IP:10.0.1.5/255.255.255.255
-- IP:10.0.1.6/255.255.255.255
-- IP:10.0.1.7/255.255.255.255
-- IP:10.0.1.8/255.255.255.255
-- IP:10.0.1.9/255.255.255.255
-- IP:10.0.1.10/255.255.255.255
-- IP:10.0.1.11/255.255.255.255
-- IP:10.0.1.12/255.255.255.255
-- IP:10.0.1.13/255.255.255.255
-- IP:10.0.1.14/255.255.255.255
-- IP:10.0.1.15/255.255.255.255
-- IP:10.0.1.16/255.255.255.255
-- IP:10.0.1.17/255.255.255.255
-- IP:10.0.1.18/255.255.255.255
-- IP:10.0.1.19/255.255.255.255
-- IP:10.0.1.20/255.255.255.255
-- IP:10.0.1.21/255.255.255.255
-- IP:10.0.1.22/255.255.255.255
-- IP:10.0.1.23/255.255.255.255
-- IP:10.0.1.24/255.255.255.255
-- IP:10.0.1.25/255.255.255.255
-- IP:10.0.1.26/255.255.255.255
-- IP:10.0.1.27/255.255.255.255
-- IP:10.0.1.28/255.255.255.255
-- IP:10.0.1.29/255.255.255.255
-- IP:10.0.1.30/255.255.255.255
-- IP:10.0.1.31/255.255.255.255
-- IP:10.0.1.32/255.255.255.255
-- IP:10.0.1.33/255.255.255.255
-- IP:10.0.1.34/255.255.255.255
-- IP:10.0.1.35/255.255.255.255
-- IP:10.0.1.36/255.255.255.255
-- IP:10.0.1.37/255.255.255.255
-- IP:10.0.1.38/255.255.255.255
-- IP:10.0.1.39/255.255.255.255
-- IP:10.0.1.40/255.255.255.255
-- IP:10.0.1.41/255.255.255.255
-- IP:10.0.1.42/255.255.255.255
-- IP:10.0.1.43/255.255.255.255
-- IP:10.0.1.44/255.255.255.255
-- IP:10.0.1.45/255.255.255.255
-- IP:10.0.1.46/255.255.255.255
-- IP:10.0.1.47/255.255.255.255
-- IP:10.0.1.48/255.255.255.255
-- IP:10.0.1.49/255.255.255.255
-- IP:10.0.1.50/255.255.255.255
-- IP:10.0.1.51/255.255.255.255
-- IP:10.0.1.52/255.255.255.255
-- IP:10.0.1.53/255.255.255.255
-- IP:10.0.1.54/255.255.255.255
-- IP:10.0.1.55/255.255.255.255
-- IP:10.0.1.56/255.255.255.255
-- IP:10.0.1.57/255.255.255.255
-- IP:10.0.1.58/255.255.255.255
-- IP:10.0.1.59/255.255.255.255
-- IP:10.0.1.60/255.255.255.255
-- IP:10.0.1.61/255.255.255.255
-- IP:10.0.1.62/255.255.255.255
-- IP:10.0.1.63/255.255.255.255
-- IP:10.0.1.64/255.255.255.255
-- IP:10.0.1.65/255.255.255.255
-- IP:10.0.1.66/255.255.255.255
-- IP:10.0.1.67/255.255.255.255
-- IP:10.0.1.68/255.255.255.255
-- IP:10.0.1.69/255.255.255.255
-- IP:10.0.1.70/255.255.255.255
-- IP:10.0.1.71/255.255.255.255
-- IP:10.0.1.72/255.255.255.255
-- IP:10.0.1.73/255.255.255.255
-- IP:10.0.1.74/255.255.255.255
-- IP:10.0.1.75/255.255.255.255
-- IP:10.0.1.76/255.255.255.255
-- IP:10.0.1.77/255.255.255.255
-- IP:10.0.1.78/255.255.255.255
-- IP:10.0.1.79/255.255.255.255
-- IP:10.0.1.80/255.255.255.255
-- IP:10.0.1.81/255.255.255.255
-- IP:10.0.1.82/255.255.255.255
-- IP:10.0.1.83/255.255.255.255
-- IP:10.0.1.84/255.255.255.255
-- IP:10.0.1.85/255.255.255.255
-- IP:10.0.1.86/255.255.255.255
-- IP:10.0.1.87/255.255.255.255
-- IP:10.0.1.88/255.255.255.255
-- IP:10.0.1.89/255.255.255.255
-- IP:10.0.1.90/255.255.255.255
-- IP:10.0.1.91/255.255.255.255
-- IP:10.0.1.92/255.255.255.255
-- IP:10.0.1.93/255.255.255.255
-- IP:10.0.1.94/255.255.255.255
-- IP:10.0.1.95/255.255.255.255
-- IP:10.0.1.96/255.255.255.255
-- IP:10.0.1.97/255.255.255.255
-- IP:10.0.1.98/255.255.255.255
-- IP:10.0.1.99/255.255.255.255
-- IP:10.0.1.100/255.255.255.255
-- IP:10.0.1.101/255.255.255.255
-- IP:10.0.1.102/255.255.255.255
-- IP:10.0.1.103/255.255.255.255
-- IP:10.0.1.104/255.255.255.255
-- IP:10.0.1.105/255.255.255.255
-- IP:10.0.1.106/255.255.255.255
-- IP:10.0.1.107/255.255.255.255
-- IP:10.0.1.108/255.255.255.255
-- IP:10.0.1.109/255.255.255.255
-- IP:10.0.1.110/255.255.255.255
-- IP:10.0.1.111/255.255.255.255
-- IP:10.0.1.112/255.255.255.255
-- IP:10.0.1.113/255.255.255.255
-- IP:10.0.1.114/255.255.255.255
-- IP:10.0.1.115/255.255.255.255
-- IP:10.0.1.116/255.255.255.255
-- IP:10.0.1.117/255.255.255.255
-- IP:10.0.1.118/255.255.255.255
-- IP:10.0.1.119/255.255.255.255
-- IP:10.0.1.120/255.255.255.255
-- IP:10.0.1.121/255.255.255.255
-- IP:10.0.1.122/255.255.255.255
-- IP:10.0.1.123/255.255.255.255
-- IP:10.0.1.124/255.255.255.255
-- IP:10.0.1.125/255.255.255.255
-- IP:10.0.1.126/255.255.255.255
-- IP:10.0.1.127/255.255.255.255
-- IP:10.0.1.128/255.255.255.255
-- IP:10.0.1.129/255.255.255.255
-- IP:10.0.1.130/255.255.255.255
-- IP:10.0.1.131/255.255.255.255
-- IP:10.0.1.132/255.255.255.255
-- IP:10.0.1.133/255.255.255.255
-- IP:10.0.1.134/255.255.255.255
-- IP:10.0.1.135/255.255.255.255
-- IP:10.0.1.136/255.255.255.255
-- IP:10.0.1.137/255.255.255.255
-- IP:10.0.1.138/255.255.255.255
-- IP:10.0.1.139/255.255.255.255
-- IP:10.0.1.140/255.255.255.255
-- IP:10.0.1.141/255.255.255.255
-- IP:10.0.1.142/255.255.255.255
-- IP:10.0.1.143/255.255.255.255
-- IP:10.0.1.144/255.255.255.255
-- IP:10.0.1.145/255.255.255.255
-- IP:10.0.1.146/255.255.255.255
-- IP:10.0.1.147/255.255.255.255
-- IP:10.0.1.148/255.255.255.255
-- IP:10.0.1.149/255.255.255.255
-- IP:10.0.1.150/255.255.255.255
-- IP:10.0.1.151/255.255.255.255
-- IP:10.0.1.152/255.255.255.255
-- IP:10.0.1.153/255.255.255.255
-- IP:10.0.1.154/255.255.255.255
-- IP:10.0.1.155/255.255.255.255
-- IP:10.0.1.156/255.255.255.255
-- IP:10.0.1.157/255.255.255.255
-- IP:10.0.1.158/255.255.255.255
-- IP:10.0.1.159/255.255.255.255
-- IP:10.0.1.160/255.255.255.255
-- IP:10.0.1.161/255.255.255.255
-- IP:10.0.1.162/255.255.255.255
-- IP:10.0.1.163/255.255.255.255
-- IP:10.0.1.164/255.255.255.255
-- IP:10.0.1.165/255.255.255.255
-- IP:10.0.1.166/255.255.255.255
-- IP:10.0.1.167/255.255.255.255
-- IP:10.0.1.168/255.255.255.255
-- IP:10.0.1.169/255.255.255.255
-- IP:10.0.1.170/255.255.255.255
-- IP:10.0.1.171/255.255.255.255
-- IP:10.0.1.172/255.255.255.255
-- IP:10.0.1.173/255.255.255.255
-- IP:10.0.1.174/255.255.255.255
-- IP:10.0.1.175/255.255.255.255
-- IP:10.0.1.176/255.255.255.255
-- IP:10.0.1.177/255.255.255.255
-- IP:10.0.1.178/255.255.255.255
-- IP:10.0.1.179/255.255.255.255
-- IP:10.0.1.180/255.255.255.255
-- IP:10.0.1.181/255.255.255.255
-- IP:10.0.1.182/255.255.255.255
-- IP:10.0.1.183/255.255.255.255
-- IP:10.0.1.184/255.255.255.255
-- IP:10.0.1.185/255.255.255.255
-- IP:10.0.1.186/255.255.255.255
-- IP:10.0.1.187/255.255.255.255
-- IP:10.0.1.188/255.255.255.255
-- IP:10.0.1.189/255.255.255.255
-- IP:10.0.1.190/255.255.255.255
-- IP:10.0.1.191/255.255.255.255
-- IP:10.0.1.192/255.255.255.255
-- IP:10.0.1.193/255.255.255.255
-- IP:10.0.1.194/255.255.255.255
-- IP:10.0.1.195/255.255.255.255
-- IP:10.0.1.196/255.255.255.255
-- IP:10.0.1.197/255.255.255.255
-- IP:10.0.1.198/255.255.255.255
-- IP:10.0.1.199/255.255.255.255
-- IP:10.0.1.200/255.255.255.255
-- IP:10.0.1.201/255.255.255.255
-- IP:10.0.1.202/255.255.255.255
-- IP:10.0.1.203/255.255.255.255
-- IP:10.0.1.204/255.255.255.255
-- IP:10.0.1.205/255.255.255.255
-- IP:10.0.1.206/255.255.255.255
-- IP:10.0.1.207/255.255.255.255
-- IP:10.0.1.208/255.255.255.255
-- IP:10.0.1.209/255.255.255.255
-- IP:10.0.1.210/255.255.255.255
-- IP:10.0.1.211/255.255.255.255
-- IP:10.0.1.212/255.255.255.255
-- IP:10.0.1.213/255.255.255.255
-- IP:10.0.1.214/255.255.255.255
-- IP:10.0.1.215/255.255.255.255
-- IP:10.0.1.216/255.255.255.255
-- IP:10.0.1.217/255.255.255.255
-- IP:10.0.1.218/255.255.255.255
-- IP:10.0.1.219/255.255.255.255
-- IP:10.0.1.220/255.255.255.255
-- IP:10.0.1.221/255.255.255.255
-- IP:10.0.1.222/255.255.255.255
-- IP:10.0.1.223/255.255.255.255
-- IP:10.0.1.224/255.255.255.255
-- IP:10.0.1.225/255.255.255.255
-- IP:10.0.1.226/255.255.255.255
-- IP:10.0.1.227/255.255.255.255
-- IP:10.0.1.228/255.255.255.255
-- IP:10.0.1.229/255.255.255.255
-- IP:10.0.1.230/255.255.255.255
-- IP:10.0.1.231/255.255.255.255
-- IP:10.0.1.232/255.255.255.255
-- IP:10.0.1.233/255.255.255.255
-- IP:10.0.1.234/255.255.255.255
-- IP:10.0.1.235/255.255.255.255
-- IP:10.0.1.236/255.255.255.255
-- IP:10.0.1.237/255.255.255.255
-- IP:10.0.1.238/255.255.255.255
-- IP:10.0.1.239/255.255.255.255
-- IP:10.0.1.240/255.255.255.255
-- IP:10.0.1.241/255.255.255.255
-- IP:10.0.1.242/255.255.255.255
-- IP:10.0.1.243/255.255.255.255
-- IP:10.0.1.244/255.255.255.255
-- IP:10.0.1.245/255.255.255.255
-- IP:10.0.1.246/255.255.255.255
-- IP:10.0.1.247/255.255.255.255
-- IP:10.0.1.248/255.255.255.255
-- IP:10.0.1.249/255.255.255.255
-- IP:10.0.1.250/255.255.255.255
-- IP:10.0.1.251/255.255.255.255
-- IP:10.0.1.252/255.255.255.255
-- IP:10.0.1.253/255.255.255.255
-- IP:10.0.1.254/255.255.255.255
-- IP:10.0.1.255/255.255.255.255
-- IP:10.0.2.0/255.255.255.255
-- IP:10.0.2.1/255.255.255.255
-- IP:10.0.2.2/255.255.255.255
-- IP:10.0.2.3/255.255.255.255
-- IP:10.0.2.4/255.255.255.255
-- IP:10.0.2.5/255.255.255.255
-- IP:10.0.2.6/255.255.255.255
-- IP:10.0.2.7/255.255.255.255
-- IP:10.0.2.8/255.255.255.255
-- IP:10.0.2.9/255.255.255.255
-- IP:10.0.2.10/255.255.255.255
-- IP:10.0.2.11/255.255.255.255
-- IP:10.0.2.12/255.255.255.255
-- IP:10.0.2.13/255.255.255.255
-- IP:10.0.2.14/255.255.255.255
-- IP:10.0.2.15/255.255.255.255
-- IP:10.0.2.16/255.255.255.255
-- IP:10.0.2.17/255.255.255.255
-- IP:10.0.2.18/255.255.255.255
-- IP:10.0.2.19/255.255.255.255
-- IP:10.0.2.20/255.255.255.255
-- IP:10.0.2.21/255.255.255.255
-- IP:10.0.2.22/255.255.255.255
-- IP:10.0.2.23/255.255.255.255
-- IP:10.0.2.24/255.255.255.255
-- IP:10.0.2.25/255.255.255.255
-- IP:10.0.2.26/255.255.255.255
-- IP:10.0.2.27/255.255.255.255
-- IP:10.0.2.28/255.255.255.255
-- IP:10.0.2.29/255.255.255.255
-- IP:10.0.2.30/255.255.255.255
-- IP:10.0.2.31/255.255.255.255
-- IP:10.0.2.32/255.255.255.255
-- IP:10.0.2.33/255.255.255.255
-- IP:10.0.2.34/255.255.255.255
-- IP:10.0.2.35/255.255.255.255
-- IP:10.0.2.36/255.255.255.255
-- IP:10.0.2.37/255.255.255.255
-- IP:10.0.2.38/255.255.255.255
-- IP:10.0.2.39/255.255.255.255
-- IP:10.0.2.40/255.255.255.255
-- IP:10.0.2.41/255.255.255.255
-- IP:10.0.2.42/255.255.255.255
-- IP:10.0.2.43/255.255.255.255
-- IP:10.0.2.44/255.255.255.255
-- IP:10.0.2.45/255.255.255.255
-- IP:10.0.2.46/255.255.255.255
-- IP:10.0.2.47/255.255.255.255
-- IP:10.0.2.48/255.255.255.255
-- IP:10.0.2.49/255.255.255.255
-- IP:10.0.2.50/255.255.255.255
-- IP:10.0.2.51/255.255.255.255
-- IP:10.0.2.52/255.255.255.255
-- IP:10.0.2.53/255.255.255.255
-- IP:10.0.2.54/255.255.255.255
-- IP:10.0.2.55/255.255.255.255
-- IP:10.0.2.56/255.255.255.255
-- IP:10.0.2.57/255.255.255.255
-- IP:10.0.2.58/255.255.255.255
-- IP:10.0.2.59/255.255.255.255
-- IP:10.0.2.60/255.255.255.255
-- IP:10.0.2.61/255.255.255.255
-- IP:10.0.2.62/255.255.255.255
-- IP:10.0.2.63/255.255.255.255
-- IP:10.0.2.64/255.255.255.255
-- IP:10.0.2.65/255.255.255.255
-- IP:10.0.2.66/255.255.255.255
-- IP:10.0.2.67/255.255.255.255
-- IP:10.0.2.68/255.255.255.255
-- IP:10.0.2.69/255.255.255.255
-- IP:10.0.2.70/255.255.255.255
-- IP:10.0.2.71/255.255.255.255
-- IP:10.0.2.72/255.255.255.255
-- IP:10.0.2.73/255.255.255.255
-- IP:10.0.2.74/255.255.255.255
-- IP:10.0.2.75/255.255.255.255
-- IP:10.0.2.76/255.255.255.255
-- IP:10.0.2.77/255.255.255.255
-- IP:10.0.2.78/255.255.255.255
-- IP:10.0.2.79/255.255.255.255
-- IP:10.0.2.80/255.255.255.255
-- IP:10.0.2.81/255.255.255.255
-- IP:10.0.2.82/255.255.255.255
-- IP:10.0.2.83/255.255.255.255
-- IP:10.0.2.84/255.255.255.255
-- IP:10.0.2.85/255.255.255.255
-- IP:10.0.2.86/255.255.255.255
-- IP:10.0.2.87/255.255.255.255
-- IP:10.0.2.88/255.255.255.255
-- IP:10.0.2.89/255.255.255.255
-- IP:10.0.2.90/255.255.255.255
-- IP:10.0.2.91/255.255.255.255
-- IP:10.0.2.92/255.255.255.255
-- IP:10.0.2.93/255.255.255.255
-- IP:10.0.2.94/255.255.255.255
-- IP:10.0.2.95/255.255.255.255
-- IP:10.0.2.96/255.255.255.255
-- IP:10.0.2.97/255.255.255.255
-- IP:10.0.2.98/255.255.255.255
-- IP:10.0.2.99/255.255.255.255
-- IP:10.0.2.100/255.255.255.255
-- IP:10.0.2.101/255.255.255.255
-- IP:10.0.2.102/255.255.255.255
-- IP:10.0.2.103/255.255.255.255
-- IP:10.0.2.104/255.255.255.255
-- IP:10.0.2.105/255.255.255.255
-- IP:10.0.2.106/255.255.255.255
-- IP:10.0.2.107/255.255.255.255
-- IP:10.0.2.108/255.255.255.255
-- IP:10.0.2.109/255.255.255.255
-- IP:10.0.2.110/255.255.255.255
-- IP:10.0.2.111/255.255.255.255
-- IP:10.0.2.112/255.255.255.255
-- IP:10.0.2.113/255.255.255.255
-- IP:10.0.2.114/255.255.255.255
-- IP:10.0.2.115/255.255.255.255
-- IP:10.0.2.116/255.255.255.255
-- IP:10.0.2.117/255.255.255.255
-- IP:10.0.2.118/255.255.255.255
-- IP:10.0.2.119/255.255.255.255
-- IP:10.0.2.120/255.255.255.255
-- IP:10.0.2.121/255.255.255.255
-- IP:10.0.2.122/255.255.255.255
-- IP:10.0.2.123/255.255.255.255
-- IP:10.0.2.124/255.255.255.255
-- IP:10.0.2.125/255.255.255.255
-- IP:10.0.2.126/255.255.255.255
-- IP:10.0.2.127/255.255.255.255
-- IP:10.0.2.128/255.255.255.255
-- IP:10.0.2.129/255.255.255.255
-- IP:10.0.2.130/255.255.255.255
-- IP:10.0.2.131/255.255.255.255
-- IP:10.0.2.132/255.255.255.255
-- IP:10.0.2.133/255.255.255.255
-- IP:10.0.2.134/255.255.255.255
-- IP:10.0.2.135/255.255.255.255
-- IP:10.0.2.136/255.255.255.255
-- IP:10.0.2.137/255.255.255.255
-- IP:10.0.2.138/255.255.255.255
-- IP:10.0.2.139/255.255.255.255
-- IP:10.0.2.140/255.255.255.255
-- IP:10.0.2.141/255.255.255.255
-- IP:10.0.2.142/255.255.255.255
-- IP:10.0.2.143/255.255.255.255
-- IP:10.0.2.144/255.255.255.255
-- IP:10.0.2.145/255.255.255.255
-- IP:10.0.2.146/255.255.255.255
-- IP:10.0.2.147/255.255.255.255
-- IP:10.0.2.148/255.255.255.255
-- IP:10.0.2.149/255.255.255.255
-- IP:10.0.2.150/255.255.255.255
-- IP:10.0.2.151/255.255.255.255
-- IP:10.0.2.152/255.255.255.255
-- IP:10.0.2.153/255.255.255.255
-- IP:10.0.2.154/255.255.255.255
-- IP:10.0.2.155/255.255.255.255
-- IP:10.0.2.156/255.255.255.255
-- IP:10.0.2.157/255.255.255.255
-- IP:10.0.2.158/255.255.255.255
-- IP:10.0.2.159/255.255.255.255
-- IP:10.0.2.160/255.255.255.255
-- IP:10.0.2.161/255.255.255.255
-- IP:10.0.2.162/255.255.255.255
-- IP:10.0.2.163/255.255.255.255
-- IP:10.0.2.164/255.255.255.255
-- IP:10.0.2.165/255.255.255.255
-- IP:10.0.2.166/255.255.255.255
-- IP:10.0.2.167/255.255.255.255
-- IP:10.0.2.168/255.255.255.255
-- IP:10.0.2.169/255.255.255.255
-- IP:10.0.2.170/255.255.255.255
-- IP:10.0.2.171/255.255.255.255
-- IP:10.0.2.172/255.255.255.255
-- IP:10.0.2.173/255.255.255.255
-- IP:10.0.2.174/255.255.255.255
-- IP:10.0.2.175/255.255.255.255
-- IP:10.0.2.176/255.255.255.255
-- IP:10.0.2.177/255.255.255.255
-- IP:10.0.2.178/255.255.255.255
-- IP:10.0.2.179/255.255.255.255
-- IP:10.0.2.180/255.255.255.255
-- IP:10.0.2.181/255.255.255.255
-- IP:10.0.2.182/255.255.255.255
-- IP:10.0.2.183/255.255.255.255
-- IP:10.0.2.184/255.255.255.255
-- IP:10.0.2.185/255.255.255.255
-- IP:10.0.2.186/255.255.255.255
-- IP:10.0.2.187/255.255.255.255
-- IP:10.0.2.188/255.255.255.255
-- IP:10.0.2.189/255.255.255.255
-- IP:10.0.2.190/255.255.255.255
-- IP:10.0.2.191/255.255.255.255
-- IP:10.0.2.192/255.255.255.255
-- IP:10.0.2.193/255.255.255.255
-- IP:10.0.2.194/255.255.255.255
-- IP:10.0.2.195/255.255.255.255
-- IP:10.0.2.196/255.255.255.255
-- IP:10.0.2.197/255.255.255.255
-- IP:10.0.2.198/255.255.255.255
-- IP:10.0.2.199/255.255.255.255
-- IP:10.0.2.200/255.255.255.255
-- IP:10.0.2.201/255.255.255.255
-- IP:10.0.2.202/255.255.255.255
-- IP:10.0.2.203/255.255.255.255
-- IP:10.0.2.204/255.255.255.255
-- IP:10.0.2.205/255.255.255.255
-- IP:10.0.2.206/255.255.255.255
-- IP:10.0.2.207/255.255.255.255
-- IP:10.0.2.208/255.255.255.255
-- IP:10.0.2.209/255.255.255.255
-- IP:10.0.2.210/255.255.255.255
-- IP:10.0.2.211/255.255.255.255
-- IP:10.0.2.212/255.255.255.255
-- IP:10.0.2.213/255.255.255.255
-- IP:10.0.2.214/255.255.255.255
-- IP:10.0.2.215/255.255.255.255
-- IP:10.0.2.216/255.255.255.255
-- IP:10.0.2.217/255.255.255.255
-- IP:10.0.2.218/255.255.255.255
-- IP:10.0.2.219/255.255.255.255
-- IP:10.0.2.220/255.255.255.255
-- IP:10.0.2.221/255.255.255.255
-- IP:10.0.2.222/255.255.255.255
-- IP:10.0.2.223/255.255.255.255
-- IP:10.0.2.224/255.255.255.255
-- IP:10.0.2.225/255.255.255.255
-- IP:10.0.2.226/255.255.255.255
-- IP:10.0.2.227/255.255.255.255
-- IP:10.0.2.228/255.255.255.255
-- IP:10.0.2.229/255.255.255.255
-- IP:10.0.2.230/255.255.255.255
-- IP:10.0.2.231/255.255.255.255
-- IP:10.0.2.232/255.255.255.255
-- IP:10.0.2.233/255.255.255.255
-- IP:10.0.2.234/255.255.255.255
-- IP:10.0.2.235/255.255.255.255
-- IP:10.0.2.236/255.255.255.255
-- IP:10.0.2.237/255.255.255.255
-- IP:10.0.2.238/255.255.255.255
-- IP:10.0.2.239/255.255.255.255
-- IP:10.0.2.240/255.255.255.255
-- IP:10.0.2.241/255.255.255.255
-- IP:10.0.2.242/255.255.255.255
-- IP:10.0.2.243/255.255.255.255
-- IP:10.0.2.244/255.255.255.255
-- IP:10.0.2.245/255.255.255.255
-- IP:10.0.2.246/255.255.255.255
-- IP:10.0.2.247/255.255.255.255
-- IP:10.0.2.248/255.255.255.255
-- IP:10.0.2.249/255.255.255.255
-- IP:10.0.2.250/255.255.255.255
-- IP:10.0.2.251/255.255.255.255
-- IP:10.0.2.252/255.255.255.255
-- IP:10.0.2.253/255.255.255.255
-- IP:10.0.2.254/255.255.255.255
-- IP:10.0.2.255/255.255.255.255
-- IP:10.0.3.0/255.255.255.255
-- IP:10.0.3.1/255.255.255.255
-- IP:10.0.3.2/255.255.255.255
-- IP:10.0.3.3/255.255.255.255
-- IP:10.0.3.4/255.255.255.255
-- IP:10.0.3.5/255.255.255.255
-- IP:10.0.3.6/255.255.255.255
-- IP:10.0.3.7/255.255.255.255
-- IP:10.0.3.8/255.255.255.255
-- IP:10.0.3.9/255.255.255.255
-- IP:10.0.3.10/255.255.255.255
-- IP:10.0.3.11/255.255.255.255
-- IP:10.0.3.12/255.255.255.255
-- IP:10.0.3.13/255.255.255.255
-- IP:10.0.3.14/255.255.255.255
-- IP:10.0.3.15/255.255.255.255
-- IP:10.0.3.16/255.255.255.255
-- IP:10.0.3.17/255.255.255.255
-- IP:10.0.3.18/255.255.255.255
-- IP:10.0.3.19/255.255.255.255
-- IP:10.0.3.20/255.255.255.255
-- IP:10.0.3.21/255.255.255.255
-- IP:10.0.3.22/255.255.255.255
-- IP:10.0.3.23/255.255.255.255
-- IP:10.0.3.24/255.255.255.255
-- IP:10.0.3.25/255.255.255.255
-- IP:10.0.3.26/255.255.255.255
-- IP:10.0.3.27/255.255.255.255
-- IP:10.0.3.28/255.255.255.255
-- IP:10.0.3.29/255.255.255.255
-- IP:10.0.3.30/255.255.255.255
-- IP:10.0.3.31/255.255.255.255
-- IP:10.0.3.32/255.255.255.255
-- IP:10.0.3.33/255.255.255.255
-- IP:10.0.3.34/255.255.255.255
-- IP:10.0.3.35/255.255.255.255
-- IP:10.0.3.36/255.255.255.255
-- IP:10.0.3.37/255.255.255.255
-- IP:10.0.3.38/255.255.255.255
-- IP:10.0.3.39/255.255.255.255
-- IP:10.0.3.40/255.255.255.255
-- IP:10.0.3.41/255.255.255.255
-- IP:10.0.3.42/255.255.255.255
-- IP:10.0.3.43/255.255.255.255
-- IP:10.0.3.44/255.255.255.255
-- IP:10.0.3.45/255.255.255.255
-- IP:10.0.3.46/255.255.255.255
-- IP:10.0.3.47/255.255.255.255
-- IP:10.0.3.48/255.255.255.255
-- IP:10.0.3.49/255.255.255.255
-- IP:10.0.3.50/255.255.255.255
-- IP:10.0.3.51/255.255.255.255
-- IP:10.0.3.52/255.255.255.255
-- IP:10.0.3.53/255.255.255.255
-- IP:10.0.3.54/255.255.255.255
-- IP:10.0.3.55/255.255.255.255
-- IP:10.0.3.56/255.255.255.255
-- IP:10.0.3.57/255.255.255.255
-- IP:10.0.3.58/255.255.255.255
-- IP:10.0.3.59/255.255.255.255
-- IP:10.0.3.60/255.255.255.255
-- IP:10.0.3.61/255.255.255.255
-- IP:10.0.3.62/255.255.255.255
-- IP:10.0.3.63/255.255.255.255
-- IP:10.0.3.64/255.255.255.255
-- IP:10.0.3.65/255.255.255.255
-- IP:10.0.3.66/255.255.255.255
-- IP:10.0.3.67/255.255.255.255
-- IP:10.0.3.68/255.255.255.255
-- IP:10.0.3.69/255.255.255.255
-- IP:10.0.3.70/255.255.255.255
-- IP:10.0.3.71/255.255.255.255
-- IP:10.0.3.72/255.255.255.255
-- IP:10.0.3.73/255.255.255.255
-- IP:10.0.3.74/255.255.255.255
-- IP:10.0.3.75/255.255.255.255
-- IP:10.0.3.76/255.255.255.255
-- IP:10.0.3.77/255.255.255.255
-- IP:10.0.3.78/255.255.255.255
-- IP:10.0.3.79/255.255.255.255
-- IP:10.0.3.80/255.255.255.255
-- IP:10.0.3.81/255.255.255.255
-- IP:10.0.3.82/255.255.255.255
-- IP:10.0.3.83/255.255.255.255
-- IP:10.0.3.84/255.255.255.255
-- IP:10.0.3.85/255.255.255.255
-- IP:10.0.3.86/255.255.255.255
-- IP:10.0.3.87/255.255.255.255
-- IP:10.0.3.88/255.255.255.255
-- IP:10.0.3.89/255.255.255.255
-- IP:10.0.3.90/255.255.255.255
-- IP:10.0.3.91/255.255.255.255
-- IP:10.0.3.92/255.255.255.255
-- IP:10.0.3.93/255.255.255.255
-- IP:10.0.3.94/255.255.255.255
-- IP:10.0.3.95/255.255.255.255
-- IP:10.0.3.96/255.255.255.255
-- IP:10.0.3.97/255.255.255.255
-- IP:10.0.3.98/255.255.255.255
-- IP:10.0.3.99/255.255.255.255
-- IP:10.0.3.100/255.255.255.255
-- IP:10.0.3.101/255.255.255.255
-- IP:10.0.3.102/255.255.255.255
-- IP:10.0.3.103/255.255.255.255
-- IP:10.0.3.104/255.255.255.255
-- IP:10.0.3.105/255.255.255.255
-- IP:10.0.3.106/255.255.255.255
-- IP:10.0.3.107/255.255.255.255
-- IP:10.0.3.108/255.255.255.255
-- IP:10.0.3.109/255.255.255.255
-- IP:10.0.3.110/255.255.255.255
-- IP:10.0.3.111/255.255.255.255
-- IP:10.0.3.112/255.255.255.255
-- IP:10.0.3.113/255.255.255.255
-- IP:10.0.3.114/255.255.255.255
-- IP:10.0.3.115/255.255.255.255
-- IP:10.0.3.116/255.255.255.255
-- IP:10.0.3.117/255.255.255.255
-- IP:10.0.3.118/255.255.255.255
-- IP:10.0.3.119/255.255.255.255
-- IP:10.0.3.120/255.255.255.255
-- IP:10.0.3.121/255.255.255.255
-- IP:10.0.3.122/255.255.255.255
-- IP:10.0.3.123/255.255.255.255
-- IP:10.0.3.124/255.255.255.255
-- IP:10.0.3.125/255.255.255.255
-- IP:10.0.3.126/255.255.255.255
-- IP:10.0.3.127/255.255.255.255
-- IP:10.0.3.128/255.255.255.255
-- IP:10.0.3.129/255.255.255.255
-- IP:10.0.3.130/255.255.255.255
-- IP:10.0.3.131/255.255.255.255
-- IP:10.0.3.132/255.255.255.255
-- IP:10.0.3.133/255.255.255.255
-- IP:10.0.3.134/255.255.255.255
-- IP:10.0.3.135/255.255.255.255
-- IP:10.0.3.136/255.255.255.255
-- IP:10.0.3.137/255.255.255.255
-- IP:10.0.3.138/255.255.255.255
-- IP:10.0.3.139/255.255.255.255
-- IP:10.0.3.140/255.255.255.255
-- IP:10.0.3.141/255.255.255.255
-- IP:10.0.3.142/255.255.255.255
-- IP:10.0.3.143/255.255.255.255
-- IP:10.0.3.144/255.255.255.255
-- IP:10.0.3.145/255.255.255.255
-- IP:10.0.3.146/255.255.255.255
-- IP:10.0.3.147/255.255.255.255
-- IP:10.0.3.148/255.255.255.255
-- IP:10.0.3.149/255.255.255.255
-- IP:10.0.3.150/255.255.255.255
-- IP:10.0.3.151/255.255.255.255
-- IP:10.0.3.152/255.255.255.255
-- IP:10.0.3.153/255.255.255.255
-- IP:10.0.3.154/255.255.255.255
-- IP:10.0.3.155/255.255.255.255
-- IP:10.0.3.156/255.255.255.255
-- IP:10.0.3.157/255.255.255.255
-- IP:10.0.3.158/255.255.255.255
-- IP:10.0.3.159/255.255.255.255
-- IP:10.0.3.160/255.255.255.255
-- IP:10.0.3.161/255.255.255.255
-- IP:10.0.3.162/255.255.255.255
-- IP:10.0.3.163/255.255.255.255
-- IP:10.0.3.164/255.255.255.255
-- IP:10.0.3.165/255.255.255.255
-- IP:10.0.3.166/255.255.255.255
-- IP:10.0.3.167/255.255.255.255
-- IP:10.0.3.168/255.255.255.255
-- IP:10.0.3.169/255.255.255.255
-- IP:10.0.3.170/255.255.255.255
-- IP:10.0.3.171/255.255.255.255
-- IP:10.0.3.172/255.255.255.255
-- IP:10.0.3.173/255.255.255.255
-- IP:10.0.3.174/255.255.255.255
-- IP:10.0.3.175/255.255.255.255
-- IP:10.0.3.176/255.255.255.255
-- IP:10.0.3.177/255.255.255.255
-- IP:10.0.3.178/255.255.255.255
-- IP:10.0.3.179/255.255.255.255
-- IP:10.0.3.180/255.255.255.255
-- IP:10.0.3.181/255.255.255.255
-- IP:10.0.3.182/255.255.255.255
-- IP:10.0.3.183/255.255.255.255
-- IP:10.0.3.184/255.255.255.255
-- IP:10.0.3.185/255.255.255.255
-- IP:10.0.3.186/255.255.255.255
-- IP:10.0.3.187/255.255.255.255
-- IP:10.0.3.188/255.255.255.255
-- IP:10.0.3.189/255.255.255.255
-- IP:10.0.3.190/255.255.255.255
-- IP:10.0.3.191/255.255.255.255
-- IP:10.0.3.192/255.255.255.255
-- IP:10.0.3.193/255.255.255.255
-- IP:10.0.3.194/255.255.255.255
-- IP:10.0.3.195/255.255.255.255
-- IP:10.0.3.196/255.255.255.255
-- IP:10.0.3.197/255.255.255.255
-- IP:10.0.3.198/255.255.255.255
-- IP:10.0.3.199/255.255.255.255
-- IP:10.0.3.200/255.255.255.255
-- IP:10.0.3.201/255.255.255.255
-- IP:10.0.3.202/255.255.255.255
-- IP:10.0.3.203/255.255.255.255
-- IP:10.0.3.204/255.255.255.255
-- IP:10.0.3.205/255.255.255.255
-- IP:10.0.3.206/255.255.255.255
-- IP:10.0.3.207/255.255.255.255
-- IP:10.0.3.208/255.255.255.255
-- IP:10.0.3.209/255.255.255.255
-- IP:10.0.3.210/255.255.255.255
-- IP:10.0.3.211/255.255.255.255
-- IP:10.0.3.212/255.255.255.255
-- IP:10.0.3.213/255.255.255.255
-- IP:10.0.3.214/255.255.255.255
-- IP:10.0.3.215/255.255.255.255
-- IP:10.0.3.216/255.255.255.255
-- IP:10.0.3.217/255.255.255.255
-- IP:10.0.3.218/255.255.255.255
-- IP:10.0.3.219/255.255.255.255
-- IP:10.0.3.220/255.255.255.255
-- IP:10.0.3.221/255.255.255.255
-- IP:10.0.3.222/255.255.255.255
-- IP:10.0.3.223/255.255.255.255
-- IP:10.0.3.224/255.255.255.255
-- IP:10.0.3.225/255.255.255.255
-- IP:10.0.3.226/255.255.255.255
-- IP:10.0.3.227/255.255.255.255
-- IP:10.0.3.228/255.255.255.255
-- IP:10.0.3.229/255.255.255.255
-- IP:10.0.3.230/255.255.255.255
-- IP:10.0.3.231/255.255.255.255
-- IP:10.0.3.232/255.255.255.255
-- IP:10.0.3.233/255.255.255.255
-- IP:10.0.3.234/255.255.255.255
-- IP:10.0.3.235/255.255.255.255
-- IP:10.0.3.236/255.255.255.255
-- IP:10.0.3.237/255.255.255.255
-- IP:10.0.3.238/255.255.255.255
-- IP:10.0.3.239/255.255.255.255
-- IP:10.0.3.240/255.255.255.255
-- IP:10.0.3.241/255.255.255.255
-- IP:10.0.3.242/255.255.255.255
-- IP:10.0.3.243/255.255.255.255
-- IP:10.0.3.244/255.255.255.255
-- IP:10.0.3.245/255.255.255.255
-- IP:10.0.3.246/255.255.255.255
-- IP:10.0.3.247/255.255.255.255
-- IP:10.0.3.248/255.255.255.255
-- IP:10.0.3.249/255.255.255.255
-- IP:10.0.3.250/255.255.255.255
-- IP:10.0.3.251/255.255.255.255
-- IP:10.0.3.252/255.255.255.255
-- IP:10.0.3.253/255.255.255.255
-- IP:10.0.3.254/255.255.255.255
-- IP:10.0.3.255/255.255.255.255
-- IP:10.0.4.0/255.255.255.255
-- URI:http://test/0
-- URI:http://test/1
-- URI:http://test/2
-- URI:http://test/3
-- URI:http://test/4
-- URI:http://test/5
-- URI:http://test/6
-- URI:http://test/7
-- URI:http://test/8
-- URI:http://test/9
-- URI:http://test/10
-- URI:http://test/11
-- URI:http://test/12
-- URI:http://test/13
-- URI:http://test/14
-- URI:http://test/15
-- URI:http://test/16
-- URI:http://test/17
-- URI:http://test/18
-- URI:http://test/19
-- URI:http://test/20
-- URI:http://test/21
-- URI:http://test/22
-- URI:http://test/23
-- URI:http://test/24
-- URI:http://test/25
-- URI:http://test/26
-- URI:http://test/27
-- URI:http://test/28
-- URI:http://test/29
-- URI:http://test/30
-- URI:http://test/31
-- URI:http://test/32
-- URI:http://test/33
-- URI:http://test/34
-- URI:http://test/35
-- URI:http://test/36
-- URI:http://test/37
-- URI:http://test/38
-- URI:http://test/39
-- URI:http://test/40
-- URI:http://test/41
-- URI:http://test/42
-- URI:http://test/43
-- URI:http://test/44
-- URI:http://test/45
-- URI:http://test/46
-- URI:http://test/47
-- URI:http://test/48
-- URI:http://test/49
-- URI:http://test/50
-- URI:http://test/51
-- URI:http://test/52
-- URI:http://test/53
-- URI:http://test/54
-- URI:http://test/55
-- URI:http://test/56
-- URI:http://test/57
-- URI:http://test/58
-- URI:http://test/59
-- URI:http://test/60
-- URI:http://test/61
-- URI:http://test/62
-- URI:http://test/63
-- URI:http://test/64
-- URI:http://test/65
-- URI:http://test/66
-- URI:http://test/67
-- URI:http://test/68
-- URI:http://test/69
-- URI:http://test/70
-- URI:http://test/71
-- URI:http://test/72
-- URI:http://test/73
-- URI:http://test/74
-- URI:http://test/75
-- URI:http://test/76
-- URI:http://test/77
-- URI:http://test/78
-- URI:http://test/79
-- URI:http://test/80
-- URI:http://test/81
-- URI:http://test/82
-- URI:http://test/83
-- URI:http://test/84
-- URI:http://test/85
-- URI:http://test/86
-- URI:http://test/87
-- URI:http://test/88
-- URI:http://test/89
-- URI:http://test/90
-- URI:http://test/91
-- URI:http://test/92
-- URI:http://test/93
-- URI:http://test/94
-- URI:http://test/95
-- URI:http://test/96
-- URI:http://test/97
-- URI:http://test/98
-- URI:http://test/99
-- URI:http://test/100
-- URI:http://test/101
-- URI:http://test/102
-- URI:http://test/103
-- URI:http://test/104
-- URI:http://test/105
-- URI:http://test/106
-- URI:http://test/107
-- URI:http://test/108
-- URI:http://test/109
-- URI:http://test/110
-- URI:http://test/111
-- URI:http://test/112
-- URI:http://test/113
-- URI:http://test/114
-- URI:http://test/115
-- URI:http://test/116
-- URI:http://test/117
-- URI:http://test/118
-- URI:http://test/119
-- URI:http://test/120
-- URI:http://test/121
-- URI:http://test/122
-- URI:http://test/123
-- URI:http://test/124
-- URI:http://test/125
-- URI:http://test/126
-- URI:http://test/127
-- URI:http://test/128
-- URI:http://test/129
-- URI:http://test/130
-- URI:http://test/131
-- URI:http://test/132
-- URI:http://test/133
-- URI:http://test/134
-- URI:http://test/135
-- URI:http://test/136
-- URI:http://test/137
-- URI:http://test/138
-- URI:http://test/139
-- URI:http://test/140
-- URI:http://test/141
-- URI:http://test/142
-- URI:http://test/143
-- URI:http://test/144
-- URI:http://test/145
-- URI:http://test/146
-- URI:http://test/147
-- URI:http://test/148
-- URI:http://test/149
-- URI:http://test/150
-- URI:http://test/151
-- URI:http://test/152
-- URI:http://test/153
-- URI:http://test/154
-- URI:http://test/155
-- URI:http://test/156
-- URI:http://test/157
-- URI:http://test/158
-- URI:http://test/159
-- URI:http://test/160
-- URI:http://test/161
-- URI:http://test/162
-- URI:http://test/163
-- URI:http://test/164
-- URI:http://test/165
-- URI:http://test/166
-- URI:http://test/167
-- URI:http://test/168
-- URI:http://test/169
-- URI:http://test/170
-- URI:http://test/171
-- URI:http://test/172
-- URI:http://test/173
-- URI:http://test/174
-- URI:http://test/175
-- URI:http://test/176
-- URI:http://test/177
-- URI:http://test/178
-- URI:http://test/179
-- URI:http://test/180
-- URI:http://test/181
-- URI:http://test/182
-- URI:http://test/183
-- URI:http://test/184
-- URI:http://test/185
-- URI:http://test/186
-- URI:http://test/187
-- URI:http://test/188
-- URI:http://test/189
-- URI:http://test/190
-- URI:http://test/191
-- URI:http://test/192
-- URI:http://test/193
-- URI:http://test/194
-- URI:http://test/195
-- URI:http://test/196
-- URI:http://test/197
-- URI:http://test/198
-- URI:http://test/199
-- URI:http://test/200
-- URI:http://test/201
-- URI:http://test/202
-- URI:http://test/203
-- URI:http://test/204
-- URI:http://test/205
-- URI:http://test/206
-- URI:http://test/207
-- URI:http://test/208
-- URI:http://test/209
-- URI:http://test/210
-- URI:http://test/211
-- URI:http://test/212
-- URI:http://test/213
-- URI:http://test/214
-- URI:http://test/215
-- URI:http://test/216
-- URI:http://test/217
-- URI:http://test/218
-- URI:http://test/219
-- URI:http://test/220
-- URI:http://test/221
-- URI:http://test/222
-- URI:http://test/223
-- URI:http://test/224
-- URI:http://test/225
-- URI:http://test/226
-- URI:http://test/227
-- URI:http://test/228
-- URI:http://test/229
-- URI:http://test/230
-- URI:http://test/231
-- URI:http://test/232
-- URI:http://test/233
-- URI:http://test/234
-- URI:http://test/235
-- URI:http://test/236
-- URI:http://test/237
-- URI:http://test/238
-- URI:http://test/239
-- URI:http://test/240
-- URI:http://test/241
-- URI:http://test/242
-- URI:http://test/243
-- URI:http://test/244
-- URI:http://test/245
-- URI:http://test/246
-- URI:http://test/247
-- URI:http://test/248
-- URI:http://test/249
-- URI:http://test/250
-- URI:http://test/251
-- URI:http://test/252
-- URI:http://test/253
-- URI:http://test/254
-- URI:http://test/255
-- URI:http://test/256
-- URI:http://test/257
-- URI:http://test/258
-- URI:http://test/259
-- URI:http://test/260
-- URI:http://test/261
-- URI:http://test/262
-- URI:http://test/263
-- URI:http://test/264
-- URI:http://test/265
-- URI:http://test/266
-- URI:http://test/267
-- URI:http://test/268
-- URI:http://test/269
-- URI:http://test/270
-- URI:http://test/271
-- URI:http://test/272
-- URI:http://test/273
-- URI:http://test/274
-- URI:http://test/275
-- URI:http://test/276
-- URI:http://test/277
-- URI:http://test/278
-- URI:http://test/279
-- URI:http://test/280
-- URI:http://test/281
-- URI:http://test/282
-- URI:http://test/283
-- URI:http://test/284
-- URI:http://test/285
-- URI:http://test/286
-- URI:http://test/287
-- URI:http://test/288
-- URI:http://test/289
-- URI:http://test/290
-- URI:http://test/291
-- URI:http://test/292
-- URI:http://test/293
-- URI:http://test/294
-- URI:http://test/295
-- URI:http://test/296
-- URI:http://test/297
-- URI:http://test/298
-- URI:http://test/299
-- URI:http://test/300
-- URI:http://test/301
-- URI:http://test/302
-- URI:http://test/303
-- URI:http://test/304
-- URI:http://test/305
-- URI:http://test/306
-- URI:http://test/307
-- URI:http://test/308
-- URI:http://test/309
-- URI:http://test/310
-- URI:http://test/311
-- URI:http://test/312
-- URI:http://test/313
-- URI:http://test/314
-- URI:http://test/315
-- URI:http://test/316
-- URI:http://test/317
-- URI:http://test/318
-- URI:http://test/319
-- URI:http://test/320
-- URI:http://test/321
-- URI:http://test/322
-- URI:http://test/323
-- URI:http://test/324
-- URI:http://test/325
-- URI:http://test/326
-- URI:http://test/327
-- URI:http://test/328
-- URI:http://test/329
-- URI:http://test/330
-- URI:http://test/331
-- URI:http://test/332
-- URI:http://test/333
-- URI:http://test/334
-- URI:http://test/335
-- URI:http://test/336
-- URI:http://test/337
-- URI:http://test/338
-- URI:http://test/339
-- URI:http://test/340
-- URI:http://test/341
-- URI:http://test/342
-- URI:http://test/343
-- URI:http://test/344
-- URI:http://test/345
-- URI:http://test/346
-- URI:http://test/347
-- URI:http://test/348
-- URI:http://test/349
-- URI:http://test/350
-- URI:http://test/351
-- URI:http://test/352
-- URI:http://test/353
-- URI:http://test/354
-- URI:http://test/355
-- URI:http://test/356
-- URI:http://test/357
-- URI:http://test/358
-- URI:http://test/359
-- URI:http://test/360
-- URI:http://test/361
-- URI:http://test/362
-- URI:http://test/363
-- URI:http://test/364
-- URI:http://test/365
-- URI:http://test/366
-- URI:http://test/367
-- URI:http://test/368
-- URI:http://test/369
-- URI:http://test/370
-- URI:http://test/371
-- URI:http://test/372
-- URI:http://test/373
-- URI:http://test/374
-- URI:http://test/375
-- URI:http://test/376
-- URI:http://test/377
-- URI:http://test/378
-- URI:http://test/379
-- URI:http://test/380
-- URI:http://test/381
-- URI:http://test/382
-- URI:http://test/383
-- URI:http://test/384
-- URI:http://test/385
-- URI:http://test/386
-- URI:http://test/387
-- URI:http://test/388
-- URI:http://test/389
-- URI:http://test/390
-- URI:http://test/391
-- URI:http://test/392
-- URI:http://test/393
-- URI:http://test/394
-- URI:http://test/395
-- URI:http://test/396
-- URI:http://test/397
-- URI:http://test/398
-- URI:http://test/399
-- URI:http://test/400
-- URI:http://test/401
-- URI:http://test/402
-- URI:http://test/403
-- URI:http://test/404
-- URI:http://test/405
-- URI:http://test/406
-- URI:http://test/407
-- URI:http://test/408
-- URI:http://test/409
-- URI:http://test/410
-- URI:http://test/411
-- URI:http://test/412
-- URI:http://test/413
-- URI:http://test/414
-- URI:http://test/415
-- URI:http://test/416
-- URI:http://test/417
-- URI:http://test/418
-- URI:http://test/419
-- URI:http://test/420
-- URI:http://test/421
-- URI:http://test/422
-- URI:http://test/423
-- URI:http://test/424
-- URI:http://test/425
-- URI:http://test/426
-- URI:http://test/427
-- URI:http://test/428
-- URI:http://test/429
-- URI:http://test/430
-- URI:http://test/431
-- URI:http://test/432
-- URI:http://test/433
-- URI:http://test/434
-- URI:http://test/435
-- URI:http://test/436
-- URI:http://test/437
-- URI:http://test/438
-- URI:http://test/439
-- URI:http://test/440
-- URI:http://test/441
-- URI:http://test/442
-- URI:http://test/443
-- URI:http://test/444
-- URI:http://test/445
-- URI:http://test/446
-- URI:http://test/447
-- URI:http://test/448
-- URI:http://test/449
-- URI:http://test/450
-- URI:http://test/451
-- URI:http://test/452
-- URI:http://test/453
-- URI:http://test/454
-- URI:http://test/455
-- URI:http://test/456
-- URI:http://test/457
-- URI:http://test/458
-- URI:http://test/459
-- URI:http://test/460
-- URI:http://test/461
-- URI:http://test/462
-- URI:http://test/463
-- URI:http://test/464
-- URI:http://test/465
-- URI:http://test/466
-- URI:http://test/467
-- URI:http://test/468
-- URI:http://test/469
-- URI:http://test/470
-- URI:http://test/471
-- URI:http://test/472
-- URI:http://test/473
-- URI:http://test/474
-- URI:http://test/475
-- URI:http://test/476
-- URI:http://test/477
-- URI:http://test/478
-- URI:http://test/479
-- URI:http://test/480
-- URI:http://test/481
-- URI:http://test/482
-- URI:http://test/483
-- URI:http://test/484
-- URI:http://test/485
-- URI:http://test/486
-- URI:http://test/487
-- URI:http://test/488
-- URI:http://test/489
-- URI:http://test/490
-- URI:http://test/491
-- URI:http://test/492
-- URI:http://test/493
-- URI:http://test/494
-- URI:http://test/495
-- URI:http://test/496
-- URI:http://test/497
-- URI:http://test/498
-- URI:http://test/499
-- URI:http://test/500
-- URI:http://test/501
-- URI:http://test/502
-- URI:http://test/503
-- URI:http://test/504
-- URI:http://test/505
-- URI:http://test/506
-- URI:http://test/507
-- URI:http://test/508
-- URI:http://test/509
-- URI:http://test/510
-- URI:http://test/511
-- URI:http://test/512
-- URI:http://test/513
-- URI:http://test/514
-- URI:http://test/515
-- URI:http://test/516
-- URI:http://test/517
-- URI:http://test/518
-- URI:http://test/519
-- URI:http://test/520
-- URI:http://test/521
-- URI:http://test/522
-- URI:http://test/523
-- URI:http://test/524
-- URI:http://test/525
-- URI:http://test/526
-- URI:http://test/527
-- URI:http://test/528
-- URI:http://test/529
-- URI:http://test/530
-- URI:http://test/531
-- URI:http://test/532
-- URI:http://test/533
-- URI:http://test/534
-- URI:http://test/535
-- URI:http://test/536
-- URI:http://test/537
-- URI:http://test/538
-- URI:http://test/539
-- URI:http://test/540
-- URI:http://test/541
-- URI:http://test/542
-- URI:http://test/543
-- URI:http://test/544
-- URI:http://test/545
-- URI:http://test/546
-- URI:http://test/547
-- URI:http://test/548
-- URI:http://test/549
-- URI:http://test/550
-- URI:http://test/551
-- URI:http://test/552
-- URI:http://test/553
-- URI:http://test/554
-- URI:http://test/555
-- URI:http://test/556
-- URI:http://test/557
-- URI:http://test/558
-- URI:http://test/559
-- URI:http://test/560
-- URI:http://test/561
-- URI:http://test/562
-- URI:http://test/563
-- URI:http://test/564
-- URI:http://test/565
-- URI:http://test/566
-- URI:http://test/567
-- URI:http://test/568
-- URI:http://test/569
-- URI:http://test/570
-- URI:http://test/571
-- URI:http://test/572
-- URI:http://test/573
-- URI:http://test/574
-- URI:http://test/575
-- URI:http://test/576
-- URI:http://test/577
-- URI:http://test/578
-- URI:http://test/579
-- URI:http://test/580
-- URI:http://test/581
-- URI:http://test/582
-- URI:http://test/583
-- URI:http://test/584
-- URI:http://test/585
-- URI:http://test/586
-- URI:http://test/587
-- URI:http://test/588
-- URI:http://test/589
-- URI:http://test/590
-- URI:http://test/591
-- URI:http://test/592
-- URI:http://test/593
-- URI:http://test/594
-- URI:http://test/595
-- URI:http://test/596
-- URI:http://test/597
-- URI:http://test/598
-- URI:http://test/599
-- URI:http://test/600
-- URI:http://test/601
-- URI:http://test/602
-- URI:http://test/603
-- URI:http://test/604
-- URI:http://test/605
-- URI:http://test/606
-- URI:http://test/607
-- URI:http://test/608
-- URI:http://test/609
-- URI:http://test/610
-- URI:http://test/611
-- URI:http://test/612
-- URI:http://test/613
-- URI:http://test/614
-- URI:http://test/615
-- URI:http://test/616
-- URI:http://test/617
-- URI:http://test/618
-- URI:http://test/619
-- URI:http://test/620
-- URI:http://test/621
-- URI:http://test/622
-- URI:http://test/623
-- URI:http://test/624
-- URI:http://test/625
-- URI:http://test/626
-- URI:http://test/627
-- URI:http://test/628
-- URI:http://test/629
-- URI:http://test/630
-- URI:http://test/631
-- URI:http://test/632
-- URI:http://test/633
-- URI:http://test/634
-- URI:http://test/635
-- URI:http://test/636
-- URI:http://test/637
-- URI:http://test/638
-- URI:http://test/639
-- URI:http://test/640
-- URI:http://test/641
-- URI:http://test/642
-- URI:http://test/643
-- URI:http://test/644
-- URI:http://test/645
-- URI:http://test/646
-- URI:http://test/647
-- URI:http://test/648
-- URI:http://test/649
-- URI:http://test/650
-- URI:http://test/651
-- URI:http://test/652
-- URI:http://test/653
-- URI:http://test/654
-- URI:http://test/655
-- URI:http://test/656
-- URI:http://test/657
-- URI:http://test/658
-- URI:http://test/659
-- URI:http://test/660
-- URI:http://test/661
-- URI:http://test/662
-- URI:http://test/663
-- URI:http://test/664
-- URI:http://test/665
-- URI:http://test/666
-- URI:http://test/667
-- URI:http://test/668
-- URI:http://test/669
-- URI:http://test/670
-- URI:http://test/671
-- URI:http://test/672
-- URI:http://test/673
-- URI:http://test/674
-- URI:http://test/675
-- URI:http://test/676
-- URI:http://test/677
-- URI:http://test/678
-- URI:http://test/679
-- URI:http://test/680
-- URI:http://test/681
-- URI:http://test/682
-- URI:http://test/683
-- URI:http://test/684
-- URI:http://test/685
-- URI:http://test/686
-- URI:http://test/687
-- URI:http://test/688
-- URI:http://test/689
-- URI:http://test/690
-- URI:http://test/691
-- URI:http://test/692
-- URI:http://test/693
-- URI:http://test/694
-- URI:http://test/695
-- URI:http://test/696
-- URI:http://test/697
-- URI:http://test/698
-- URI:http://test/699
-- URI:http://test/700
-- URI:http://test/701
-- URI:http://test/702
-- URI:http://test/703
-- URI:http://test/704
-- URI:http://test/705
-- URI:http://test/706
-- URI:http://test/707
-- URI:http://test/708
-- URI:http://test/709
-- URI:http://test/710
-- URI:http://test/711
-- URI:http://test/712
-- URI:http://test/713
-- URI:http://test/714
-- URI:http://test/715
-- URI:http://test/716
-- URI:http://test/717
-- URI:http://test/718
-- URI:http://test/719
-- URI:http://test/720
-- URI:http://test/721
-- URI:http://test/722
-- URI:http://test/723
-- URI:http://test/724
-- URI:http://test/725
-- URI:http://test/726
-- URI:http://test/727
-- URI:http://test/728
-- URI:http://test/729
-- URI:http://test/730
-- URI:http://test/731
-- URI:http://test/732
-- URI:http://test/733
-- URI:http://test/734
-- URI:http://test/735
-- URI:http://test/736
-- URI:http://test/737
-- URI:http://test/738
-- URI:http://test/739
-- URI:http://test/740
-- URI:http://test/741
-- URI:http://test/742
-- URI:http://test/743
-- URI:http://test/744
-- URI:http://test/745
-- URI:http://test/746
-- URI:http://test/747
-- URI:http://test/748
-- URI:http://test/749
-- URI:http://test/750
-- URI:http://test/751
-- URI:http://test/752
-- URI:http://test/753
-- URI:http://test/754
-- URI:http://test/755
-- URI:http://test/756
-- URI:http://test/757
-- URI:http://test/758
-- URI:http://test/759
-- URI:http://test/760
-- URI:http://test/761
-- URI:http://test/762
-- URI:http://test/763
-- URI:http://test/764
-- URI:http://test/765
-- URI:http://test/766
-- URI:http://test/767
-- URI:http://test/768
-- URI:http://test/769
-- URI:http://test/770
-- URI:http://test/771
-- URI:http://test/772
-- URI:http://test/773
-- URI:http://test/774
-- URI:http://test/775
-- URI:http://test/776
-- URI:http://test/777
-- URI:http://test/778
-- URI:http://test/779
-- URI:http://test/780
-- URI:http://test/781
-- URI:http://test/782
-- URI:http://test/783
-- URI:http://test/784
-- URI:http://test/785
-- URI:http://test/786
-- URI:http://test/787
-- URI:http://test/788
-- URI:http://test/789
-- URI:http://test/790
-- URI:http://test/791
-- URI:http://test/792
-- URI:http://test/793
-- URI:http://test/794
-- URI:http://test/795
-- URI:http://test/796
-- URI:http://test/797
-- URI:http://test/798
-- URI:http://test/799
-- URI:http://test/800
-- URI:http://test/801
-- URI:http://test/802
-- URI:http://test/803
-- URI:http://test/804
-- URI:http://test/805
-- URI:http://test/806
-- URI:http://test/807
-- URI:http://test/808
-- URI:http://test/809
-- URI:http://test/810
-- URI:http://test/811
-- URI:http://test/812
-- URI:http://test/813
-- URI:http://test/814
-- URI:http://test/815
-- URI:http://test/816
-- URI:http://test/817
-- URI:http://test/818
-- URI:http://test/819
-- URI:http://test/820
-- URI:http://test/821
-- URI:http://test/822
-- URI:http://test/823
-- URI:http://test/824
-- URI:http://test/825
-- URI:http://test/826
-- URI:http://test/827
-- URI:http://test/828
-- URI:http://test/829
-- URI:http://test/830
-- URI:http://test/831
-- URI:http://test/832
-- URI:http://test/833
-- URI:http://test/834
-- URI:http://test/835
-- URI:http://test/836
-- URI:http://test/837
-- URI:http://test/838
-- URI:http://test/839
-- URI:http://test/840
-- URI:http://test/841
-- URI:http://test/842
-- URI:http://test/843
-- URI:http://test/844
-- URI:http://test/845
-- URI:http://test/846
-- URI:http://test/847
-- URI:http://test/848
-- URI:http://test/849
-- URI:http://test/850
-- URI:http://test/851
-- URI:http://test/852
-- URI:http://test/853
-- URI:http://test/854
-- URI:http://test/855
-- URI:http://test/856
-- URI:http://test/857
-- URI:http://test/858
-- URI:http://test/859
-- URI:http://test/860
-- URI:http://test/861
-- URI:http://test/862
-- URI:http://test/863
-- URI:http://test/864
-- URI:http://test/865
-- URI:http://test/866
-- URI:http://test/867
-- URI:http://test/868
-- URI:http://test/869
-- URI:http://test/870
-- URI:http://test/871
-- URI:http://test/872
-- URI:http://test/873
-- URI:http://test/874
-- URI:http://test/875
-- URI:http://test/876
-- URI:http://test/877
-- URI:http://test/878
-- URI:http://test/879
-- URI:http://test/880
-- URI:http://test/881
-- URI:http://test/882
-- URI:http://test/883
-- URI:http://test/884
-- URI:http://test/885
-- URI:http://test/886
-- URI:http://test/887
-- URI:http://test/888
-- URI:http://test/889
-- URI:http://test/890
-- URI:http://test/891
-- URI:http://test/892
-- URI:http://test/893
-- URI:http://test/894
-- URI:http://test/895
-- URI:http://test/896
-- URI:http://test/897
-- URI:http://test/898
-- URI:http://test/899
-- URI:http://test/900
-- URI:http://test/901
-- URI:http://test/902
-- URI:http://test/903
-- URI:http://test/904
-- URI:http://test/905
-- URI:http://test/906
-- URI:http://test/907
-- URI:http://test/908
-- URI:http://test/909
-- URI:http://test/910
-- URI:http://test/911
-- URI:http://test/912
-- URI:http://test/913
-- URI:http://test/914
-- URI:http://test/915
-- URI:http://test/916
-- URI:http://test/917
-- URI:http://test/918
-- URI:http://test/919
-- URI:http://test/920
-- URI:http://test/921
-- URI:http://test/922
-- URI:http://test/923
-- URI:http://test/924
-- URI:http://test/925
-- URI:http://test/926
-- URI:http://test/927
-- URI:http://test/928
-- URI:http://test/929
-- URI:http://test/930
-- URI:http://test/931
-- URI:http://test/932
-- URI:http://test/933
-- URI:http://test/934
-- URI:http://test/935
-- URI:http://test/936
-- URI:http://test/937
-- URI:http://test/938
-- URI:http://test/939
-- URI:http://test/940
-- URI:http://test/941
-- URI:http://test/942
-- URI:http://test/943
-- URI:http://test/944
-- URI:http://test/945
-- URI:http://test/946
-- URI:http://test/947
-- URI:http://test/948
-- URI:http://test/949
-- URI:http://test/950
-- URI:http://test/951
-- URI:http://test/952
-- URI:http://test/953
-- URI:http://test/954
-- URI:http://test/955
-- URI:http://test/956
-- URI:http://test/957
-- URI:http://test/958
-- URI:http://test/959
-- URI:http://test/960
-- URI:http://test/961
-- URI:http://test/962
-- URI:http://test/963
-- URI:http://test/964
-- URI:http://test/965
-- URI:http://test/966
-- URI:http://test/967
-- URI:http://test/968
-- URI:http://test/969
-- URI:http://test/970
-- URI:http://test/971
-- URI:http://test/972
-- URI:http://test/973
-- URI:http://test/974
-- URI:http://test/975
-- URI:http://test/976
-- URI:http://test/977
-- URI:http://test/978
-- URI:http://test/979
-- URI:http://test/980
-- URI:http://test/981
-- URI:http://test/982
-- URI:http://test/983
-- URI:http://test/984
-- URI:http://test/985
-- URI:http://test/986
-- URI:http://test/987
-- URI:http://test/988
-- URI:http://test/989
-- URI:http://test/990
-- URI:http://test/991
-- URI:http://test/992
-- URI:http://test/993
-- URI:http://test/994
-- URI:http://test/995
-- URI:http://test/996
-- URI:http://test/997
-- URI:http://test/998
-- URI:http://test/999
-- URI:http://test/1000
-- URI:http://test/1001
-- URI:http://test/1002
-- URI:http://test/1003
-- URI:http://test/1004
-- URI:http://test/1005
-- URI:http://test/1006
-- URI:http://test/1007
-- URI:http://test/1008
-- URI:http://test/1009
-- URI:http://test/1010
-- URI:http://test/1011
-- URI:http://test/1012
-- URI:http://test/1013
-- URI:http://test/1014
-- URI:http://test/1015
-- URI:http://test/1016
-- URI:http://test/1017
-- URI:http://test/1018
-- URI:http://test/1019
-- URI:http://test/1020
-- URI:http://test/1021
-- URI:http://test/1022
-- URI:http://test/1023
-- URI:http://test/1024
-- Excluded:
-- DNS:x0.test
-- DNS:x1.test
-- DNS:x2.test
-- DNS:x3.test
-- DNS:x4.test
-- DNS:x5.test
-- DNS:x6.test
-- DNS:x7.test
-- DNS:x8.test
-- DNS:x9.test
-- DNS:x10.test
-- DNS:x11.test
-- DNS:x12.test
-- DNS:x13.test
-- DNS:x14.test
-- DNS:x15.test
-- DNS:x16.test
-- DNS:x17.test
-- DNS:x18.test
-- DNS:x19.test
-- DNS:x20.test
-- DNS:x21.test
-- DNS:x22.test
-- DNS:x23.test
-- DNS:x24.test
-- DNS:x25.test
-- DNS:x26.test
-- DNS:x27.test
-- DNS:x28.test
-- DNS:x29.test
-- DNS:x30.test
-- DNS:x31.test
-- DNS:x32.test
-- DNS:x33.test
-- DNS:x34.test
-- DNS:x35.test
-- DNS:x36.test
-- DNS:x37.test
-- DNS:x38.test
-- DNS:x39.test
-- DNS:x40.test
-- DNS:x41.test
-- DNS:x42.test
-- DNS:x43.test
-- DNS:x44.test
-- DNS:x45.test
-- DNS:x46.test
-- DNS:x47.test
-- DNS:x48.test
-- DNS:x49.test
-- DNS:x50.test
-- DNS:x51.test
-- DNS:x52.test
-- DNS:x53.test
-- DNS:x54.test
-- DNS:x55.test
-- DNS:x56.test
-- DNS:x57.test
-- DNS:x58.test
-- DNS:x59.test
-- DNS:x60.test
-- DNS:x61.test
-- DNS:x62.test
-- DNS:x63.test
-- DNS:x64.test
-- DNS:x65.test
-- DNS:x66.test
-- DNS:x67.test
-- DNS:x68.test
-- DNS:x69.test
-- DNS:x70.test
-- DNS:x71.test
-- DNS:x72.test
-- DNS:x73.test
-- DNS:x74.test
-- DNS:x75.test
-- DNS:x76.test
-- DNS:x77.test
-- DNS:x78.test
-- DNS:x79.test
-- DNS:x80.test
-- DNS:x81.test
-- DNS:x82.test
-- DNS:x83.test
-- DNS:x84.test
-- DNS:x85.test
-- DNS:x86.test
-- DNS:x87.test
-- DNS:x88.test
-- DNS:x89.test
-- DNS:x90.test
-- DNS:x91.test
-- DNS:x92.test
-- DNS:x93.test
-- DNS:x94.test
-- DNS:x95.test
-- DNS:x96.test
-- DNS:x97.test
-- DNS:x98.test
-- DNS:x99.test
-- DNS:x100.test
-- DNS:x101.test
-- DNS:x102.test
-- DNS:x103.test
-- DNS:x104.test
-- DNS:x105.test
-- DNS:x106.test
-- DNS:x107.test
-- DNS:x108.test
-- DNS:x109.test
-- DNS:x110.test
-- DNS:x111.test
-- DNS:x112.test
-- DNS:x113.test
-- DNS:x114.test
-- DNS:x115.test
-- DNS:x116.test
-- DNS:x117.test
-- DNS:x118.test
-- DNS:x119.test
-- DNS:x120.test
-- DNS:x121.test
-- DNS:x122.test
-- DNS:x123.test
-- DNS:x124.test
-- DNS:x125.test
-- DNS:x126.test
-- DNS:x127.test
-- DNS:x128.test
-- DNS:x129.test
-- DNS:x130.test
-- DNS:x131.test
-- DNS:x132.test
-- DNS:x133.test
-- DNS:x134.test
-- DNS:x135.test
-- DNS:x136.test
-- DNS:x137.test
-- DNS:x138.test
-- DNS:x139.test
-- DNS:x140.test
-- DNS:x141.test
-- DNS:x142.test
-- DNS:x143.test
-- DNS:x144.test
-- DNS:x145.test
-- DNS:x146.test
-- DNS:x147.test
-- DNS:x148.test
-- DNS:x149.test
-- DNS:x150.test
-- DNS:x151.test
-- DNS:x152.test
-- DNS:x153.test
-- DNS:x154.test
-- DNS:x155.test
-- DNS:x156.test
-- DNS:x157.test
-- DNS:x158.test
-- DNS:x159.test
-- DNS:x160.test
-- DNS:x161.test
-- DNS:x162.test
-- DNS:x163.test
-- DNS:x164.test
-- DNS:x165.test
-- DNS:x166.test
-- DNS:x167.test
-- DNS:x168.test
-- DNS:x169.test
-- DNS:x170.test
-- DNS:x171.test
-- DNS:x172.test
-- DNS:x173.test
-- DNS:x174.test
-- DNS:x175.test
-- DNS:x176.test
-- DNS:x177.test
-- DNS:x178.test
-- DNS:x179.test
-- DNS:x180.test
-- DNS:x181.test
-- DNS:x182.test
-- DNS:x183.test
-- DNS:x184.test
-- DNS:x185.test
-- DNS:x186.test
-- DNS:x187.test
-- DNS:x188.test
-- DNS:x189.test
-- DNS:x190.test
-- DNS:x191.test
-- DNS:x192.test
-- DNS:x193.test
-- DNS:x194.test
-- DNS:x195.test
-- DNS:x196.test
-- DNS:x197.test
-- DNS:x198.test
-- DNS:x199.test
-- DNS:x200.test
-- DNS:x201.test
-- DNS:x202.test
-- DNS:x203.test
-- DNS:x204.test
-- DNS:x205.test
-- DNS:x206.test
-- DNS:x207.test
-- DNS:x208.test
-- DNS:x209.test
-- DNS:x210.test
-- DNS:x211.test
-- DNS:x212.test
-- DNS:x213.test
-- DNS:x214.test
-- DNS:x215.test
-- DNS:x216.test
-- DNS:x217.test
-- DNS:x218.test
-- DNS:x219.test
-- DNS:x220.test
-- DNS:x221.test
-- DNS:x222.test
-- DNS:x223.test
-- DNS:x224.test
-- DNS:x225.test
-- DNS:x226.test
-- DNS:x227.test
-- DNS:x228.test
-- DNS:x229.test
-- DNS:x230.test
-- DNS:x231.test
-- DNS:x232.test
-- DNS:x233.test
-- DNS:x234.test
-- DNS:x235.test
-- DNS:x236.test
-- DNS:x237.test
-- DNS:x238.test
-- DNS:x239.test
-- DNS:x240.test
-- DNS:x241.test
-- DNS:x242.test
-- DNS:x243.test
-- DNS:x244.test
-- DNS:x245.test
-- DNS:x246.test
-- DNS:x247.test
-- DNS:x248.test
-- DNS:x249.test
-- DNS:x250.test
-- DNS:x251.test
-- DNS:x252.test
-- DNS:x253.test
-- DNS:x254.test
-- DNS:x255.test
-- DNS:x256.test
-- DNS:x257.test
-- DNS:x258.test
-- DNS:x259.test
-- DNS:x260.test
-- DNS:x261.test
-- DNS:x262.test
-- DNS:x263.test
-- DNS:x264.test
-- DNS:x265.test
-- DNS:x266.test
-- DNS:x267.test
-- DNS:x268.test
-- DNS:x269.test
-- DNS:x270.test
-- DNS:x271.test
-- DNS:x272.test
-- DNS:x273.test
-- DNS:x274.test
-- DNS:x275.test
-- DNS:x276.test
-- DNS:x277.test
-- DNS:x278.test
-- DNS:x279.test
-- DNS:x280.test
-- DNS:x281.test
-- DNS:x282.test
-- DNS:x283.test
-- DNS:x284.test
-- DNS:x285.test
-- DNS:x286.test
-- DNS:x287.test
-- DNS:x288.test
-- DNS:x289.test
-- DNS:x290.test
-- DNS:x291.test
-- DNS:x292.test
-- DNS:x293.test
-- DNS:x294.test
-- DNS:x295.test
-- DNS:x296.test
-- DNS:x297.test
-- DNS:x298.test
-- DNS:x299.test
-- DNS:x300.test
-- DNS:x301.test
-- DNS:x302.test
-- DNS:x303.test
-- DNS:x304.test
-- DNS:x305.test
-- DNS:x306.test
-- DNS:x307.test
-- DNS:x308.test
-- DNS:x309.test
-- DNS:x310.test
-- DNS:x311.test
-- DNS:x312.test
-- DNS:x313.test
-- DNS:x314.test
-- DNS:x315.test
-- DNS:x316.test
-- DNS:x317.test
-- DNS:x318.test
-- DNS:x319.test
-- DNS:x320.test
-- DNS:x321.test
-- DNS:x322.test
-- DNS:x323.test
-- DNS:x324.test
-- DNS:x325.test
-- DNS:x326.test
-- DNS:x327.test
-- DNS:x328.test
-- DNS:x329.test
-- DNS:x330.test
-- DNS:x331.test
-- DNS:x332.test
-- DNS:x333.test
-- DNS:x334.test
-- DNS:x335.test
-- DNS:x336.test
-- DNS:x337.test
-- DNS:x338.test
-- DNS:x339.test
-- DNS:x340.test
-- DNS:x341.test
-- DNS:x342.test
-- DNS:x343.test
-- DNS:x344.test
-- DNS:x345.test
-- DNS:x346.test
-- DNS:x347.test
-- DNS:x348.test
-- DNS:x349.test
-- DNS:x350.test
-- DNS:x351.test
-- DNS:x352.test
-- DNS:x353.test
-- DNS:x354.test
-- DNS:x355.test
-- DNS:x356.test
-- DNS:x357.test
-- DNS:x358.test
-- DNS:x359.test
-- DNS:x360.test
-- DNS:x361.test
-- DNS:x362.test
-- DNS:x363.test
-- DNS:x364.test
-- DNS:x365.test
-- DNS:x366.test
-- DNS:x367.test
-- DNS:x368.test
-- DNS:x369.test
-- DNS:x370.test
-- DNS:x371.test
-- DNS:x372.test
-- DNS:x373.test
-- DNS:x374.test
-- DNS:x375.test
-- DNS:x376.test
-- DNS:x377.test
-- DNS:x378.test
-- DNS:x379.test
-- DNS:x380.test
-- DNS:x381.test
-- DNS:x382.test
-- DNS:x383.test
-- DNS:x384.test
-- DNS:x385.test
-- DNS:x386.test
-- DNS:x387.test
-- DNS:x388.test
-- DNS:x389.test
-- DNS:x390.test
-- DNS:x391.test
-- DNS:x392.test
-- DNS:x393.test
-- DNS:x394.test
-- DNS:x395.test
-- DNS:x396.test
-- DNS:x397.test
-- DNS:x398.test
-- DNS:x399.test
-- DNS:x400.test
-- DNS:x401.test
-- DNS:x402.test
-- DNS:x403.test
-- DNS:x404.test
-- DNS:x405.test
-- DNS:x406.test
-- DNS:x407.test
-- DNS:x408.test
-- DNS:x409.test
-- DNS:x410.test
-- DNS:x411.test
-- DNS:x412.test
-- DNS:x413.test
-- DNS:x414.test
-- DNS:x415.test
-- DNS:x416.test
-- DNS:x417.test
-- DNS:x418.test
-- DNS:x419.test
-- DNS:x420.test
-- DNS:x421.test
-- DNS:x422.test
-- DNS:x423.test
-- DNS:x424.test
-- DNS:x425.test
-- DNS:x426.test
-- DNS:x427.test
-- DNS:x428.test
-- DNS:x429.test
-- DNS:x430.test
-- DNS:x431.test
-- DNS:x432.test
-- DNS:x433.test
-- DNS:x434.test
-- DNS:x435.test
-- DNS:x436.test
-- DNS:x437.test
-- DNS:x438.test
-- DNS:x439.test
-- DNS:x440.test
-- DNS:x441.test
-- DNS:x442.test
-- DNS:x443.test
-- DNS:x444.test
-- DNS:x445.test
-- DNS:x446.test
-- DNS:x447.test
-- DNS:x448.test
-- DNS:x449.test
-- DNS:x450.test
-- DNS:x451.test
-- DNS:x452.test
-- DNS:x453.test
-- DNS:x454.test
-- DNS:x455.test
-- DNS:x456.test
-- DNS:x457.test
-- DNS:x458.test
-- DNS:x459.test
-- DNS:x460.test
-- DNS:x461.test
-- DNS:x462.test
-- DNS:x463.test
-- DNS:x464.test
-- DNS:x465.test
-- DNS:x466.test
-- DNS:x467.test
-- DNS:x468.test
-- DNS:x469.test
-- DNS:x470.test
-- DNS:x471.test
-- DNS:x472.test
-- DNS:x473.test
-- DNS:x474.test
-- DNS:x475.test
-- DNS:x476.test
-- DNS:x477.test
-- DNS:x478.test
-- DNS:x479.test
-- DNS:x480.test
-- DNS:x481.test
-- DNS:x482.test
-- DNS:x483.test
-- DNS:x484.test
-- DNS:x485.test
-- DNS:x486.test
-- DNS:x487.test
-- DNS:x488.test
-- DNS:x489.test
-- DNS:x490.test
-- DNS:x491.test
-- DNS:x492.test
-- DNS:x493.test
-- DNS:x494.test
-- DNS:x495.test
-- DNS:x496.test
-- DNS:x497.test
-- DNS:x498.test
-- DNS:x499.test
-- DNS:x500.test
-- DNS:x501.test
-- DNS:x502.test
-- DNS:x503.test
-- DNS:x504.test
-- DNS:x505.test
-- DNS:x506.test
-- DNS:x507.test
-- DNS:x508.test
-- DNS:x509.test
-- DNS:x510.test
-- DNS:x511.test
-- DNS:x512.test
-- DNS:x513.test
-- DNS:x514.test
-- DNS:x515.test
-- DNS:x516.test
-- DNS:x517.test
-- DNS:x518.test
-- DNS:x519.test
-- DNS:x520.test
-- DNS:x521.test
-- DNS:x522.test
-- DNS:x523.test
-- DNS:x524.test
-- DNS:x525.test
-- DNS:x526.test
-- DNS:x527.test
-- DNS:x528.test
-- DNS:x529.test
-- DNS:x530.test
-- DNS:x531.test
-- DNS:x532.test
-- DNS:x533.test
-- DNS:x534.test
-- DNS:x535.test
-- DNS:x536.test
-- DNS:x537.test
-- DNS:x538.test
-- DNS:x539.test
-- DNS:x540.test
-- DNS:x541.test
-- DNS:x542.test
-- DNS:x543.test
-- DNS:x544.test
-- DNS:x545.test
-- DNS:x546.test
-- DNS:x547.test
-- DNS:x548.test
-- DNS:x549.test
-- DNS:x550.test
-- DNS:x551.test
-- DNS:x552.test
-- DNS:x553.test
-- DNS:x554.test
-- DNS:x555.test
-- DNS:x556.test
-- DNS:x557.test
-- DNS:x558.test
-- DNS:x559.test
-- DNS:x560.test
-- DNS:x561.test
-- DNS:x562.test
-- DNS:x563.test
-- DNS:x564.test
-- DNS:x565.test
-- DNS:x566.test
-- DNS:x567.test
-- DNS:x568.test
-- DNS:x569.test
-- DNS:x570.test
-- DNS:x571.test
-- DNS:x572.test
-- DNS:x573.test
-- DNS:x574.test
-- DNS:x575.test
-- DNS:x576.test
-- DNS:x577.test
-- DNS:x578.test
-- DNS:x579.test
-- DNS:x580.test
-- DNS:x581.test
-- DNS:x582.test
-- DNS:x583.test
-- DNS:x584.test
-- DNS:x585.test
-- DNS:x586.test
-- DNS:x587.test
-- DNS:x588.test
-- DNS:x589.test
-- DNS:x590.test
-- DNS:x591.test
-- DNS:x592.test
-- DNS:x593.test
-- DNS:x594.test
-- DNS:x595.test
-- DNS:x596.test
-- DNS:x597.test
-- DNS:x598.test
-- DNS:x599.test
-- DNS:x600.test
-- DNS:x601.test
-- DNS:x602.test
-- DNS:x603.test
-- DNS:x604.test
-- DNS:x605.test
-- DNS:x606.test
-- DNS:x607.test
-- DNS:x608.test
-- DNS:x609.test
-- DNS:x610.test
-- DNS:x611.test
-- DNS:x612.test
-- DNS:x613.test
-- DNS:x614.test
-- DNS:x615.test
-- DNS:x616.test
-- DNS:x617.test
-- DNS:x618.test
-- DNS:x619.test
-- DNS:x620.test
-- DNS:x621.test
-- DNS:x622.test
-- DNS:x623.test
-- DNS:x624.test
-- DNS:x625.test
-- DNS:x626.test
-- DNS:x627.test
-- DNS:x628.test
-- DNS:x629.test
-- DNS:x630.test
-- DNS:x631.test
-- DNS:x632.test
-- DNS:x633.test
-- DNS:x634.test
-- DNS:x635.test
-- DNS:x636.test
-- DNS:x637.test
-- DNS:x638.test
-- DNS:x639.test
-- DNS:x640.test
-- DNS:x641.test
-- DNS:x642.test
-- DNS:x643.test
-- DNS:x644.test
-- DNS:x645.test
-- DNS:x646.test
-- DNS:x647.test
-- DNS:x648.test
-- DNS:x649.test
-- DNS:x650.test
-- DNS:x651.test
-- DNS:x652.test
-- DNS:x653.test
-- DNS:x654.test
-- DNS:x655.test
-- DNS:x656.test
-- DNS:x657.test
-- DNS:x658.test
-- DNS:x659.test
-- DNS:x660.test
-- DNS:x661.test
-- DNS:x662.test
-- DNS:x663.test
-- DNS:x664.test
-- DNS:x665.test
-- DNS:x666.test
-- DNS:x667.test
-- DNS:x668.test
-- DNS:x669.test
-- DNS:x670.test
-- DNS:x671.test
-- DNS:x672.test
-- DNS:x673.test
-- DNS:x674.test
-- DNS:x675.test
-- DNS:x676.test
-- DNS:x677.test
-- DNS:x678.test
-- DNS:x679.test
-- DNS:x680.test
-- DNS:x681.test
-- DNS:x682.test
-- DNS:x683.test
-- DNS:x684.test
-- DNS:x685.test
-- DNS:x686.test
-- DNS:x687.test
-- DNS:x688.test
-- DNS:x689.test
-- DNS:x690.test
-- DNS:x691.test
-- DNS:x692.test
-- DNS:x693.test
-- DNS:x694.test
-- DNS:x695.test
-- DNS:x696.test
-- DNS:x697.test
-- DNS:x698.test
-- DNS:x699.test
-- DNS:x700.test
-- DNS:x701.test
-- DNS:x702.test
-- DNS:x703.test
-- DNS:x704.test
-- DNS:x705.test
-- DNS:x706.test
-- DNS:x707.test
-- DNS:x708.test
-- DNS:x709.test
-- DNS:x710.test
-- DNS:x711.test
-- DNS:x712.test
-- DNS:x713.test
-- DNS:x714.test
-- DNS:x715.test
-- DNS:x716.test
-- DNS:x717.test
-- DNS:x718.test
-- DNS:x719.test
-- DNS:x720.test
-- DNS:x721.test
-- DNS:x722.test
-- DNS:x723.test
-- DNS:x724.test
-- DNS:x725.test
-- DNS:x726.test
-- DNS:x727.test
-- DNS:x728.test
-- DNS:x729.test
-- DNS:x730.test
-- DNS:x731.test
-- DNS:x732.test
-- DNS:x733.test
-- DNS:x734.test
-- DNS:x735.test
-- DNS:x736.test
-- DNS:x737.test
-- DNS:x738.test
-- DNS:x739.test
-- DNS:x740.test
-- DNS:x741.test
-- DNS:x742.test
-- DNS:x743.test
-- DNS:x744.test
-- DNS:x745.test
-- DNS:x746.test
-- DNS:x747.test
-- DNS:x748.test
-- DNS:x749.test
-- DNS:x750.test
-- DNS:x751.test
-- DNS:x752.test
-- DNS:x753.test
-- DNS:x754.test
-- DNS:x755.test
-- DNS:x756.test
-- DNS:x757.test
-- DNS:x758.test
-- DNS:x759.test
-- DNS:x760.test
-- DNS:x761.test
-- DNS:x762.test
-- DNS:x763.test
-- DNS:x764.test
-- DNS:x765.test
-- DNS:x766.test
-- DNS:x767.test
-- DNS:x768.test
-- DNS:x769.test
-- DNS:x770.test
-- DNS:x771.test
-- DNS:x772.test
-- DNS:x773.test
-- DNS:x774.test
-- DNS:x775.test
-- DNS:x776.test
-- DNS:x777.test
-- DNS:x778.test
-- DNS:x779.test
-- DNS:x780.test
-- DNS:x781.test
-- DNS:x782.test
-- DNS:x783.test
-- DNS:x784.test
-- DNS:x785.test
-- DNS:x786.test
-- DNS:x787.test
-- DNS:x788.test
-- DNS:x789.test
-- DNS:x790.test
-- DNS:x791.test
-- DNS:x792.test
-- DNS:x793.test
-- DNS:x794.test
-- DNS:x795.test
-- DNS:x796.test
-- DNS:x797.test
-- DNS:x798.test
-- DNS:x799.test
-- DNS:x800.test
-- DNS:x801.test
-- DNS:x802.test
-- DNS:x803.test
-- DNS:x804.test
-- DNS:x805.test
-- DNS:x806.test
-- DNS:x807.test
-- DNS:x808.test
-- DNS:x809.test
-- DNS:x810.test
-- DNS:x811.test
-- DNS:x812.test
-- DNS:x813.test
-- DNS:x814.test
-- DNS:x815.test
-- DNS:x816.test
-- DNS:x817.test
-- DNS:x818.test
-- DNS:x819.test
-- DNS:x820.test
-- DNS:x821.test
-- DNS:x822.test
-- DNS:x823.test
-- DNS:x824.test
-- DNS:x825.test
-- DNS:x826.test
-- DNS:x827.test
-- DNS:x828.test
-- DNS:x829.test
-- DNS:x830.test
-- DNS:x831.test
-- DNS:x832.test
-- DNS:x833.test
-- DNS:x834.test
-- DNS:x835.test
-- DNS:x836.test
-- DNS:x837.test
-- DNS:x838.test
-- DNS:x839.test
-- DNS:x840.test
-- DNS:x841.test
-- DNS:x842.test
-- DNS:x843.test
-- DNS:x844.test
-- DNS:x845.test
-- DNS:x846.test
-- DNS:x847.test
-- DNS:x848.test
-- DNS:x849.test
-- DNS:x850.test
-- DNS:x851.test
-- DNS:x852.test
-- DNS:x853.test
-- DNS:x854.test
-- DNS:x855.test
-- DNS:x856.test
-- DNS:x857.test
-- DNS:x858.test
-- DNS:x859.test
-- DNS:x860.test
-- DNS:x861.test
-- DNS:x862.test
-- DNS:x863.test
-- DNS:x864.test
-- DNS:x865.test
-- DNS:x866.test
-- DNS:x867.test
-- DNS:x868.test
-- DNS:x869.test
-- DNS:x870.test
-- DNS:x871.test
-- DNS:x872.test
-- DNS:x873.test
-- DNS:x874.test
-- DNS:x875.test
-- DNS:x876.test
-- DNS:x877.test
-- DNS:x878.test
-- DNS:x879.test
-- DNS:x880.test
-- DNS:x881.test
-- DNS:x882.test
-- DNS:x883.test
-- DNS:x884.test
-- DNS:x885.test
-- DNS:x886.test
-- DNS:x887.test
-- DNS:x888.test
-- DNS:x889.test
-- DNS:x890.test
-- DNS:x891.test
-- DNS:x892.test
-- DNS:x893.test
-- DNS:x894.test
-- DNS:x895.test
-- DNS:x896.test
-- DNS:x897.test
-- DNS:x898.test
-- DNS:x899.test
-- DNS:x900.test
-- DNS:x901.test
-- DNS:x902.test
-- DNS:x903.test
-- DNS:x904.test
-- DNS:x905.test
-- DNS:x906.test
-- DNS:x907.test
-- DNS:x908.test
-- DNS:x909.test
-- DNS:x910.test
-- DNS:x911.test
-- DNS:x912.test
-- DNS:x913.test
-- DNS:x914.test
-- DNS:x915.test
-- DNS:x916.test
-- DNS:x917.test
-- DNS:x918.test
-- DNS:x919.test
-- DNS:x920.test
-- DNS:x921.test
-- DNS:x922.test
-- DNS:x923.test
-- DNS:x924.test
-- DNS:x925.test
-- DNS:x926.test
-- DNS:x927.test
-- DNS:x928.test
-- DNS:x929.test
-- DNS:x930.test
-- DNS:x931.test
-- DNS:x932.test
-- DNS:x933.test
-- DNS:x934.test
-- DNS:x935.test
-- DNS:x936.test
-- DNS:x937.test
-- DNS:x938.test
-- DNS:x939.test
-- DNS:x940.test
-- DNS:x941.test
-- DNS:x942.test
-- DNS:x943.test
-- DNS:x944.test
-- DNS:x945.test
-- DNS:x946.test
-- DNS:x947.test
-- DNS:x948.test
-- DNS:x949.test
-- DNS:x950.test
-- DNS:x951.test
-- DNS:x952.test
-- DNS:x953.test
-- DNS:x954.test
-- DNS:x955.test
-- DNS:x956.test
-- DNS:x957.test
-- DNS:x958.test
-- DNS:x959.test
-- DNS:x960.test
-- DNS:x961.test
-- DNS:x962.test
-- DNS:x963.test
-- DNS:x964.test
-- DNS:x965.test
-- DNS:x966.test
-- DNS:x967.test
-- DNS:x968.test
-- DNS:x969.test
-- DNS:x970.test
-- DNS:x971.test
-- DNS:x972.test
-- DNS:x973.test
-- DNS:x974.test
-- DNS:x975.test
-- DNS:x976.test
-- DNS:x977.test
-- DNS:x978.test
-- DNS:x979.test
-- DNS:x980.test
-- DNS:x981.test
-- DNS:x982.test
-- DNS:x983.test
-- DNS:x984.test
-- DNS:x985.test
-- DNS:x986.test
-- DNS:x987.test
-- DNS:x988.test
-- DNS:x989.test
-- DNS:x990.test
-- DNS:x991.test
-- DNS:x992.test
-- DNS:x993.test
-- DNS:x994.test
-- DNS:x995.test
-- DNS:x996.test
-- DNS:x997.test
-- DNS:x998.test
-- DNS:x999.test
-- DNS:x1000.test
-- DNS:x1001.test
-- DNS:x1002.test
-- DNS:x1003.test
-- DNS:x1004.test
-- DNS:x1005.test
-- DNS:x1006.test
-- DNS:x1007.test
-- DNS:x1008.test
-- DNS:x1009.test
-- DNS:x1010.test
-- DNS:x1011.test
-- DNS:x1012.test
-- DNS:x1013.test
-- DNS:x1014.test
-- DNS:x1015.test
-- DNS:x1016.test
-- DNS:x1017.test
-- DNS:x1018.test
-- DNS:x1019.test
-- DNS:x1020.test
-- DNS:x1021.test
-- DNS:x1022.test
-- DNS:x1023.test
-- DNS:x1024.test
-- IP:11.0.0.0/255.255.255.255
-- IP:11.0.0.1/255.255.255.255
-- IP:11.0.0.2/255.255.255.255
-- IP:11.0.0.3/255.255.255.255
-- IP:11.0.0.4/255.255.255.255
-- IP:11.0.0.5/255.255.255.255
-- IP:11.0.0.6/255.255.255.255
-- IP:11.0.0.7/255.255.255.255
-- IP:11.0.0.8/255.255.255.255
-- IP:11.0.0.9/255.255.255.255
-- IP:11.0.0.10/255.255.255.255
-- IP:11.0.0.11/255.255.255.255
-- IP:11.0.0.12/255.255.255.255
-- IP:11.0.0.13/255.255.255.255
-- IP:11.0.0.14/255.255.255.255
-- IP:11.0.0.15/255.255.255.255
-- IP:11.0.0.16/255.255.255.255
-- IP:11.0.0.17/255.255.255.255
-- IP:11.0.0.18/255.255.255.255
-- IP:11.0.0.19/255.255.255.255
-- IP:11.0.0.20/255.255.255.255
-- IP:11.0.0.21/255.255.255.255
-- IP:11.0.0.22/255.255.255.255
-- IP:11.0.0.23/255.255.255.255
-- IP:11.0.0.24/255.255.255.255
-- IP:11.0.0.25/255.255.255.255
-- IP:11.0.0.26/255.255.255.255
-- IP:11.0.0.27/255.255.255.255
-- IP:11.0.0.28/255.255.255.255
-- IP:11.0.0.29/255.255.255.255
-- IP:11.0.0.30/255.255.255.255
-- IP:11.0.0.31/255.255.255.255
-- IP:11.0.0.32/255.255.255.255
-- IP:11.0.0.33/255.255.255.255
-- IP:11.0.0.34/255.255.255.255
-- IP:11.0.0.35/255.255.255.255
-- IP:11.0.0.36/255.255.255.255
-- IP:11.0.0.37/255.255.255.255
-- IP:11.0.0.38/255.255.255.255
-- IP:11.0.0.39/255.255.255.255
-- IP:11.0.0.40/255.255.255.255
-- IP:11.0.0.41/255.255.255.255
-- IP:11.0.0.42/255.255.255.255
-- IP:11.0.0.43/255.255.255.255
-- IP:11.0.0.44/255.255.255.255
-- IP:11.0.0.45/255.255.255.255
-- IP:11.0.0.46/255.255.255.255
-- IP:11.0.0.47/255.255.255.255
-- IP:11.0.0.48/255.255.255.255
-- IP:11.0.0.49/255.255.255.255
-- IP:11.0.0.50/255.255.255.255
-- IP:11.0.0.51/255.255.255.255
-- IP:11.0.0.52/255.255.255.255
-- IP:11.0.0.53/255.255.255.255
-- IP:11.0.0.54/255.255.255.255
-- IP:11.0.0.55/255.255.255.255
-- IP:11.0.0.56/255.255.255.255
-- IP:11.0.0.57/255.255.255.255
-- IP:11.0.0.58/255.255.255.255
-- IP:11.0.0.59/255.255.255.255
-- IP:11.0.0.60/255.255.255.255
-- IP:11.0.0.61/255.255.255.255
-- IP:11.0.0.62/255.255.255.255
-- IP:11.0.0.63/255.255.255.255
-- IP:11.0.0.64/255.255.255.255
-- IP:11.0.0.65/255.255.255.255
-- IP:11.0.0.66/255.255.255.255
-- IP:11.0.0.67/255.255.255.255
-- IP:11.0.0.68/255.255.255.255
-- IP:11.0.0.69/255.255.255.255
-- IP:11.0.0.70/255.255.255.255
-- IP:11.0.0.71/255.255.255.255
-- IP:11.0.0.72/255.255.255.255
-- IP:11.0.0.73/255.255.255.255
-- IP:11.0.0.74/255.255.255.255
-- IP:11.0.0.75/255.255.255.255
-- IP:11.0.0.76/255.255.255.255
-- IP:11.0.0.77/255.255.255.255
-- IP:11.0.0.78/255.255.255.255
-- IP:11.0.0.79/255.255.255.255
-- IP:11.0.0.80/255.255.255.255
-- IP:11.0.0.81/255.255.255.255
-- IP:11.0.0.82/255.255.255.255
-- IP:11.0.0.83/255.255.255.255
-- IP:11.0.0.84/255.255.255.255
-- IP:11.0.0.85/255.255.255.255
-- IP:11.0.0.86/255.255.255.255
-- IP:11.0.0.87/255.255.255.255
-- IP:11.0.0.88/255.255.255.255
-- IP:11.0.0.89/255.255.255.255
-- IP:11.0.0.90/255.255.255.255
-- IP:11.0.0.91/255.255.255.255
-- IP:11.0.0.92/255.255.255.255
-- IP:11.0.0.93/255.255.255.255
-- IP:11.0.0.94/255.255.255.255
-- IP:11.0.0.95/255.255.255.255
-- IP:11.0.0.96/255.255.255.255
-- IP:11.0.0.97/255.255.255.255
-- IP:11.0.0.98/255.255.255.255
-- IP:11.0.0.99/255.255.255.255
-- IP:11.0.0.100/255.255.255.255
-- IP:11.0.0.101/255.255.255.255
-- IP:11.0.0.102/255.255.255.255
-- IP:11.0.0.103/255.255.255.255
-- IP:11.0.0.104/255.255.255.255
-- IP:11.0.0.105/255.255.255.255
-- IP:11.0.0.106/255.255.255.255
-- IP:11.0.0.107/255.255.255.255
-- IP:11.0.0.108/255.255.255.255
-- IP:11.0.0.109/255.255.255.255
-- IP:11.0.0.110/255.255.255.255
-- IP:11.0.0.111/255.255.255.255
-- IP:11.0.0.112/255.255.255.255
-- IP:11.0.0.113/255.255.255.255
-- IP:11.0.0.114/255.255.255.255
-- IP:11.0.0.115/255.255.255.255
-- IP:11.0.0.116/255.255.255.255
-- IP:11.0.0.117/255.255.255.255
-- IP:11.0.0.118/255.255.255.255
-- IP:11.0.0.119/255.255.255.255
-- IP:11.0.0.120/255.255.255.255
-- IP:11.0.0.121/255.255.255.255
-- IP:11.0.0.122/255.255.255.255
-- IP:11.0.0.123/255.255.255.255
-- IP:11.0.0.124/255.255.255.255
-- IP:11.0.0.125/255.255.255.255
-- IP:11.0.0.126/255.255.255.255
-- IP:11.0.0.127/255.255.255.255
-- IP:11.0.0.128/255.255.255.255
-- IP:11.0.0.129/255.255.255.255
-- IP:11.0.0.130/255.255.255.255
-- IP:11.0.0.131/255.255.255.255
-- IP:11.0.0.132/255.255.255.255
-- IP:11.0.0.133/255.255.255.255
-- IP:11.0.0.134/255.255.255.255
-- IP:11.0.0.135/255.255.255.255
-- IP:11.0.0.136/255.255.255.255
-- IP:11.0.0.137/255.255.255.255
-- IP:11.0.0.138/255.255.255.255
-- IP:11.0.0.139/255.255.255.255
-- IP:11.0.0.140/255.255.255.255
-- IP:11.0.0.141/255.255.255.255
-- IP:11.0.0.142/255.255.255.255
-- IP:11.0.0.143/255.255.255.255
-- IP:11.0.0.144/255.255.255.255
-- IP:11.0.0.145/255.255.255.255
-- IP:11.0.0.146/255.255.255.255
-- IP:11.0.0.147/255.255.255.255
-- IP:11.0.0.148/255.255.255.255
-- IP:11.0.0.149/255.255.255.255
-- IP:11.0.0.150/255.255.255.255
-- IP:11.0.0.151/255.255.255.255
-- IP:11.0.0.152/255.255.255.255
-- IP:11.0.0.153/255.255.255.255
-- IP:11.0.0.154/255.255.255.255
-- IP:11.0.0.155/255.255.255.255
-- IP:11.0.0.156/255.255.255.255
-- IP:11.0.0.157/255.255.255.255
-- IP:11.0.0.158/255.255.255.255
-- IP:11.0.0.159/255.255.255.255
-- IP:11.0.0.160/255.255.255.255
-- IP:11.0.0.161/255.255.255.255
-- IP:11.0.0.162/255.255.255.255
-- IP:11.0.0.163/255.255.255.255
-- IP:11.0.0.164/255.255.255.255
-- IP:11.0.0.165/255.255.255.255
-- IP:11.0.0.166/255.255.255.255
-- IP:11.0.0.167/255.255.255.255
-- IP:11.0.0.168/255.255.255.255
-- IP:11.0.0.169/255.255.255.255
-- IP:11.0.0.170/255.255.255.255
-- IP:11.0.0.171/255.255.255.255
-- IP:11.0.0.172/255.255.255.255
-- IP:11.0.0.173/255.255.255.255
-- IP:11.0.0.174/255.255.255.255
-- IP:11.0.0.175/255.255.255.255
-- IP:11.0.0.176/255.255.255.255
-- IP:11.0.0.177/255.255.255.255
-- IP:11.0.0.178/255.255.255.255
-- IP:11.0.0.179/255.255.255.255
-- IP:11.0.0.180/255.255.255.255
-- IP:11.0.0.181/255.255.255.255
-- IP:11.0.0.182/255.255.255.255
-- IP:11.0.0.183/255.255.255.255
-- IP:11.0.0.184/255.255.255.255
-- IP:11.0.0.185/255.255.255.255
-- IP:11.0.0.186/255.255.255.255
-- IP:11.0.0.187/255.255.255.255
-- IP:11.0.0.188/255.255.255.255
-- IP:11.0.0.189/255.255.255.255
-- IP:11.0.0.190/255.255.255.255
-- IP:11.0.0.191/255.255.255.255
-- IP:11.0.0.192/255.255.255.255
-- IP:11.0.0.193/255.255.255.255
-- IP:11.0.0.194/255.255.255.255
-- IP:11.0.0.195/255.255.255.255
-- IP:11.0.0.196/255.255.255.255
-- IP:11.0.0.197/255.255.255.255
-- IP:11.0.0.198/255.255.255.255
-- IP:11.0.0.199/255.255.255.255
-- IP:11.0.0.200/255.255.255.255
-- IP:11.0.0.201/255.255.255.255
-- IP:11.0.0.202/255.255.255.255
-- IP:11.0.0.203/255.255.255.255
-- IP:11.0.0.204/255.255.255.255
-- IP:11.0.0.205/255.255.255.255
-- IP:11.0.0.206/255.255.255.255
-- IP:11.0.0.207/255.255.255.255
-- IP:11.0.0.208/255.255.255.255
-- IP:11.0.0.209/255.255.255.255
-- IP:11.0.0.210/255.255.255.255
-- IP:11.0.0.211/255.255.255.255
-- IP:11.0.0.212/255.255.255.255
-- IP:11.0.0.213/255.255.255.255
-- IP:11.0.0.214/255.255.255.255
-- IP:11.0.0.215/255.255.255.255
-- IP:11.0.0.216/255.255.255.255
-- IP:11.0.0.217/255.255.255.255
-- IP:11.0.0.218/255.255.255.255
-- IP:11.0.0.219/255.255.255.255
-- IP:11.0.0.220/255.255.255.255
-- IP:11.0.0.221/255.255.255.255
-- IP:11.0.0.222/255.255.255.255
-- IP:11.0.0.223/255.255.255.255
-- IP:11.0.0.224/255.255.255.255
-- IP:11.0.0.225/255.255.255.255
-- IP:11.0.0.226/255.255.255.255
-- IP:11.0.0.227/255.255.255.255
-- IP:11.0.0.228/255.255.255.255
-- IP:11.0.0.229/255.255.255.255
-- IP:11.0.0.230/255.255.255.255
-- IP:11.0.0.231/255.255.255.255
-- IP:11.0.0.232/255.255.255.255
-- IP:11.0.0.233/255.255.255.255
-- IP:11.0.0.234/255.255.255.255
-- IP:11.0.0.235/255.255.255.255
-- IP:11.0.0.236/255.255.255.255
-- IP:11.0.0.237/255.255.255.255
-- IP:11.0.0.238/255.255.255.255
-- IP:11.0.0.239/255.255.255.255
-- IP:11.0.0.240/255.255.255.255
-- IP:11.0.0.241/255.255.255.255
-- IP:11.0.0.242/255.255.255.255
-- IP:11.0.0.243/255.255.255.255
-- IP:11.0.0.244/255.255.255.255
-- IP:11.0.0.245/255.255.255.255
-- IP:11.0.0.246/255.255.255.255
-- IP:11.0.0.247/255.255.255.255
-- IP:11.0.0.248/255.255.255.255
-- IP:11.0.0.249/255.255.255.255
-- IP:11.0.0.250/255.255.255.255
-- IP:11.0.0.251/255.255.255.255
-- IP:11.0.0.252/255.255.255.255
-- IP:11.0.0.253/255.255.255.255
-- IP:11.0.0.254/255.255.255.255
-- IP:11.0.0.255/255.255.255.255
-- IP:11.0.1.0/255.255.255.255
-- IP:11.0.1.1/255.255.255.255
-- IP:11.0.1.2/255.255.255.255
-- IP:11.0.1.3/255.255.255.255
-- IP:11.0.1.4/255.255.255.255
-- IP:11.0.1.5/255.255.255.255
-- IP:11.0.1.6/255.255.255.255
-- IP:11.0.1.7/255.255.255.255
-- IP:11.0.1.8/255.255.255.255
-- IP:11.0.1.9/255.255.255.255
-- IP:11.0.1.10/255.255.255.255
-- IP:11.0.1.11/255.255.255.255
-- IP:11.0.1.12/255.255.255.255
-- IP:11.0.1.13/255.255.255.255
-- IP:11.0.1.14/255.255.255.255
-- IP:11.0.1.15/255.255.255.255
-- IP:11.0.1.16/255.255.255.255
-- IP:11.0.1.17/255.255.255.255
-- IP:11.0.1.18/255.255.255.255
-- IP:11.0.1.19/255.255.255.255
-- IP:11.0.1.20/255.255.255.255
-- IP:11.0.1.21/255.255.255.255
-- IP:11.0.1.22/255.255.255.255
-- IP:11.0.1.23/255.255.255.255
-- IP:11.0.1.24/255.255.255.255
-- IP:11.0.1.25/255.255.255.255
-- IP:11.0.1.26/255.255.255.255
-- IP:11.0.1.27/255.255.255.255
-- IP:11.0.1.28/255.255.255.255
-- IP:11.0.1.29/255.255.255.255
-- IP:11.0.1.30/255.255.255.255
-- IP:11.0.1.31/255.255.255.255
-- IP:11.0.1.32/255.255.255.255
-- IP:11.0.1.33/255.255.255.255
-- IP:11.0.1.34/255.255.255.255
-- IP:11.0.1.35/255.255.255.255
-- IP:11.0.1.36/255.255.255.255
-- IP:11.0.1.37/255.255.255.255
-- IP:11.0.1.38/255.255.255.255
-- IP:11.0.1.39/255.255.255.255
-- IP:11.0.1.40/255.255.255.255
-- IP:11.0.1.41/255.255.255.255
-- IP:11.0.1.42/255.255.255.255
-- IP:11.0.1.43/255.255.255.255
-- IP:11.0.1.44/255.255.255.255
-- IP:11.0.1.45/255.255.255.255
-- IP:11.0.1.46/255.255.255.255
-- IP:11.0.1.47/255.255.255.255
-- IP:11.0.1.48/255.255.255.255
-- IP:11.0.1.49/255.255.255.255
-- IP:11.0.1.50/255.255.255.255
-- IP:11.0.1.51/255.255.255.255
-- IP:11.0.1.52/255.255.255.255
-- IP:11.0.1.53/255.255.255.255
-- IP:11.0.1.54/255.255.255.255
-- IP:11.0.1.55/255.255.255.255
-- IP:11.0.1.56/255.255.255.255
-- IP:11.0.1.57/255.255.255.255
-- IP:11.0.1.58/255.255.255.255
-- IP:11.0.1.59/255.255.255.255
-- IP:11.0.1.60/255.255.255.255
-- IP:11.0.1.61/255.255.255.255
-- IP:11.0.1.62/255.255.255.255
-- IP:11.0.1.63/255.255.255.255
-- IP:11.0.1.64/255.255.255.255
-- IP:11.0.1.65/255.255.255.255
-- IP:11.0.1.66/255.255.255.255
-- IP:11.0.1.67/255.255.255.255
-- IP:11.0.1.68/255.255.255.255
-- IP:11.0.1.69/255.255.255.255
-- IP:11.0.1.70/255.255.255.255
-- IP:11.0.1.71/255.255.255.255
-- IP:11.0.1.72/255.255.255.255
-- IP:11.0.1.73/255.255.255.255
-- IP:11.0.1.74/255.255.255.255
-- IP:11.0.1.75/255.255.255.255
-- IP:11.0.1.76/255.255.255.255
-- IP:11.0.1.77/255.255.255.255
-- IP:11.0.1.78/255.255.255.255
-- IP:11.0.1.79/255.255.255.255
-- IP:11.0.1.80/255.255.255.255
-- IP:11.0.1.81/255.255.255.255
-- IP:11.0.1.82/255.255.255.255
-- IP:11.0.1.83/255.255.255.255
-- IP:11.0.1.84/255.255.255.255
-- IP:11.0.1.85/255.255.255.255
-- IP:11.0.1.86/255.255.255.255
-- IP:11.0.1.87/255.255.255.255
-- IP:11.0.1.88/255.255.255.255
-- IP:11.0.1.89/255.255.255.255
-- IP:11.0.1.90/255.255.255.255
-- IP:11.0.1.91/255.255.255.255
-- IP:11.0.1.92/255.255.255.255
-- IP:11.0.1.93/255.255.255.255
-- IP:11.0.1.94/255.255.255.255
-- IP:11.0.1.95/255.255.255.255
-- IP:11.0.1.96/255.255.255.255
-- IP:11.0.1.97/255.255.255.255
-- IP:11.0.1.98/255.255.255.255
-- IP:11.0.1.99/255.255.255.255
-- IP:11.0.1.100/255.255.255.255
-- IP:11.0.1.101/255.255.255.255
-- IP:11.0.1.102/255.255.255.255
-- IP:11.0.1.103/255.255.255.255
-- IP:11.0.1.104/255.255.255.255
-- IP:11.0.1.105/255.255.255.255
-- IP:11.0.1.106/255.255.255.255
-- IP:11.0.1.107/255.255.255.255
-- IP:11.0.1.108/255.255.255.255
-- IP:11.0.1.109/255.255.255.255
-- IP:11.0.1.110/255.255.255.255
-- IP:11.0.1.111/255.255.255.255
-- IP:11.0.1.112/255.255.255.255
-- IP:11.0.1.113/255.255.255.255
-- IP:11.0.1.114/255.255.255.255
-- IP:11.0.1.115/255.255.255.255
-- IP:11.0.1.116/255.255.255.255
-- IP:11.0.1.117/255.255.255.255
-- IP:11.0.1.118/255.255.255.255
-- IP:11.0.1.119/255.255.255.255
-- IP:11.0.1.120/255.255.255.255
-- IP:11.0.1.121/255.255.255.255
-- IP:11.0.1.122/255.255.255.255
-- IP:11.0.1.123/255.255.255.255
-- IP:11.0.1.124/255.255.255.255
-- IP:11.0.1.125/255.255.255.255
-- IP:11.0.1.126/255.255.255.255
-- IP:11.0.1.127/255.255.255.255
-- IP:11.0.1.128/255.255.255.255
-- IP:11.0.1.129/255.255.255.255
-- IP:11.0.1.130/255.255.255.255
-- IP:11.0.1.131/255.255.255.255
-- IP:11.0.1.132/255.255.255.255
-- IP:11.0.1.133/255.255.255.255
-- IP:11.0.1.134/255.255.255.255
-- IP:11.0.1.135/255.255.255.255
-- IP:11.0.1.136/255.255.255.255
-- IP:11.0.1.137/255.255.255.255
-- IP:11.0.1.138/255.255.255.255
-- IP:11.0.1.139/255.255.255.255
-- IP:11.0.1.140/255.255.255.255
-- IP:11.0.1.141/255.255.255.255
-- IP:11.0.1.142/255.255.255.255
-- IP:11.0.1.143/255.255.255.255
-- IP:11.0.1.144/255.255.255.255
-- IP:11.0.1.145/255.255.255.255
-- IP:11.0.1.146/255.255.255.255
-- IP:11.0.1.147/255.255.255.255
-- IP:11.0.1.148/255.255.255.255
-- IP:11.0.1.149/255.255.255.255
-- IP:11.0.1.150/255.255.255.255
-- IP:11.0.1.151/255.255.255.255
-- IP:11.0.1.152/255.255.255.255
-- IP:11.0.1.153/255.255.255.255
-- IP:11.0.1.154/255.255.255.255
-- IP:11.0.1.155/255.255.255.255
-- IP:11.0.1.156/255.255.255.255
-- IP:11.0.1.157/255.255.255.255
-- IP:11.0.1.158/255.255.255.255
-- IP:11.0.1.159/255.255.255.255
-- IP:11.0.1.160/255.255.255.255
-- IP:11.0.1.161/255.255.255.255
-- IP:11.0.1.162/255.255.255.255
-- IP:11.0.1.163/255.255.255.255
-- IP:11.0.1.164/255.255.255.255
-- IP:11.0.1.165/255.255.255.255
-- IP:11.0.1.166/255.255.255.255
-- IP:11.0.1.167/255.255.255.255
-- IP:11.0.1.168/255.255.255.255
-- IP:11.0.1.169/255.255.255.255
-- IP:11.0.1.170/255.255.255.255
-- IP:11.0.1.171/255.255.255.255
-- IP:11.0.1.172/255.255.255.255
-- IP:11.0.1.173/255.255.255.255
-- IP:11.0.1.174/255.255.255.255
-- IP:11.0.1.175/255.255.255.255
-- IP:11.0.1.176/255.255.255.255
-- IP:11.0.1.177/255.255.255.255
-- IP:11.0.1.178/255.255.255.255
-- IP:11.0.1.179/255.255.255.255
-- IP:11.0.1.180/255.255.255.255
-- IP:11.0.1.181/255.255.255.255
-- IP:11.0.1.182/255.255.255.255
-- IP:11.0.1.183/255.255.255.255
-- IP:11.0.1.184/255.255.255.255
-- IP:11.0.1.185/255.255.255.255
-- IP:11.0.1.186/255.255.255.255
-- IP:11.0.1.187/255.255.255.255
-- IP:11.0.1.188/255.255.255.255
-- IP:11.0.1.189/255.255.255.255
-- IP:11.0.1.190/255.255.255.255
-- IP:11.0.1.191/255.255.255.255
-- IP:11.0.1.192/255.255.255.255
-- IP:11.0.1.193/255.255.255.255
-- IP:11.0.1.194/255.255.255.255
-- IP:11.0.1.195/255.255.255.255
-- IP:11.0.1.196/255.255.255.255
-- IP:11.0.1.197/255.255.255.255
-- IP:11.0.1.198/255.255.255.255
-- IP:11.0.1.199/255.255.255.255
-- IP:11.0.1.200/255.255.255.255
-- IP:11.0.1.201/255.255.255.255
-- IP:11.0.1.202/255.255.255.255
-- IP:11.0.1.203/255.255.255.255
-- IP:11.0.1.204/255.255.255.255
-- IP:11.0.1.205/255.255.255.255
-- IP:11.0.1.206/255.255.255.255
-- IP:11.0.1.207/255.255.255.255
-- IP:11.0.1.208/255.255.255.255
-- IP:11.0.1.209/255.255.255.255
-- IP:11.0.1.210/255.255.255.255
-- IP:11.0.1.211/255.255.255.255
-- IP:11.0.1.212/255.255.255.255
-- IP:11.0.1.213/255.255.255.255
-- IP:11.0.1.214/255.255.255.255
-- IP:11.0.1.215/255.255.255.255
-- IP:11.0.1.216/255.255.255.255
-- IP:11.0.1.217/255.255.255.255
-- IP:11.0.1.218/255.255.255.255
-- IP:11.0.1.219/255.255.255.255
-- IP:11.0.1.220/255.255.255.255
-- IP:11.0.1.221/255.255.255.255
-- IP:11.0.1.222/255.255.255.255
-- IP:11.0.1.223/255.255.255.255
-- IP:11.0.1.224/255.255.255.255
-- IP:11.0.1.225/255.255.255.255
-- IP:11.0.1.226/255.255.255.255
-- IP:11.0.1.227/255.255.255.255
-- IP:11.0.1.228/255.255.255.255
-- IP:11.0.1.229/255.255.255.255
-- IP:11.0.1.230/255.255.255.255
-- IP:11.0.1.231/255.255.255.255
-- IP:11.0.1.232/255.255.255.255
-- IP:11.0.1.233/255.255.255.255
-- IP:11.0.1.234/255.255.255.255
-- IP:11.0.1.235/255.255.255.255
-- IP:11.0.1.236/255.255.255.255
-- IP:11.0.1.237/255.255.255.255
-- IP:11.0.1.238/255.255.255.255
-- IP:11.0.1.239/255.255.255.255
-- IP:11.0.1.240/255.255.255.255
-- IP:11.0.1.241/255.255.255.255
-- IP:11.0.1.242/255.255.255.255
-- IP:11.0.1.243/255.255.255.255
-- IP:11.0.1.244/255.255.255.255
-- IP:11.0.1.245/255.255.255.255
-- IP:11.0.1.246/255.255.255.255
-- IP:11.0.1.247/255.255.255.255
-- IP:11.0.1.248/255.255.255.255
-- IP:11.0.1.249/255.255.255.255
-- IP:11.0.1.250/255.255.255.255
-- IP:11.0.1.251/255.255.255.255
-- IP:11.0.1.252/255.255.255.255
-- IP:11.0.1.253/255.255.255.255
-- IP:11.0.1.254/255.255.255.255
-- IP:11.0.1.255/255.255.255.255
-- IP:11.0.2.0/255.255.255.255
-- IP:11.0.2.1/255.255.255.255
-- IP:11.0.2.2/255.255.255.255
-- IP:11.0.2.3/255.255.255.255
-- IP:11.0.2.4/255.255.255.255
-- IP:11.0.2.5/255.255.255.255
-- IP:11.0.2.6/255.255.255.255
-- IP:11.0.2.7/255.255.255.255
-- IP:11.0.2.8/255.255.255.255
-- IP:11.0.2.9/255.255.255.255
-- IP:11.0.2.10/255.255.255.255
-- IP:11.0.2.11/255.255.255.255
-- IP:11.0.2.12/255.255.255.255
-- IP:11.0.2.13/255.255.255.255
-- IP:11.0.2.14/255.255.255.255
-- IP:11.0.2.15/255.255.255.255
-- IP:11.0.2.16/255.255.255.255
-- IP:11.0.2.17/255.255.255.255
-- IP:11.0.2.18/255.255.255.255
-- IP:11.0.2.19/255.255.255.255
-- IP:11.0.2.20/255.255.255.255
-- IP:11.0.2.21/255.255.255.255
-- IP:11.0.2.22/255.255.255.255
-- IP:11.0.2.23/255.255.255.255
-- IP:11.0.2.24/255.255.255.255
-- IP:11.0.2.25/255.255.255.255
-- IP:11.0.2.26/255.255.255.255
-- IP:11.0.2.27/255.255.255.255
-- IP:11.0.2.28/255.255.255.255
-- IP:11.0.2.29/255.255.255.255
-- IP:11.0.2.30/255.255.255.255
-- IP:11.0.2.31/255.255.255.255
-- IP:11.0.2.32/255.255.255.255
-- IP:11.0.2.33/255.255.255.255
-- IP:11.0.2.34/255.255.255.255
-- IP:11.0.2.35/255.255.255.255
-- IP:11.0.2.36/255.255.255.255
-- IP:11.0.2.37/255.255.255.255
-- IP:11.0.2.38/255.255.255.255
-- IP:11.0.2.39/255.255.255.255
-- IP:11.0.2.40/255.255.255.255
-- IP:11.0.2.41/255.255.255.255
-- IP:11.0.2.42/255.255.255.255
-- IP:11.0.2.43/255.255.255.255
-- IP:11.0.2.44/255.255.255.255
-- IP:11.0.2.45/255.255.255.255
-- IP:11.0.2.46/255.255.255.255
-- IP:11.0.2.47/255.255.255.255
-- IP:11.0.2.48/255.255.255.255
-- IP:11.0.2.49/255.255.255.255
-- IP:11.0.2.50/255.255.255.255
-- IP:11.0.2.51/255.255.255.255
-- IP:11.0.2.52/255.255.255.255
-- IP:11.0.2.53/255.255.255.255
-- IP:11.0.2.54/255.255.255.255
-- IP:11.0.2.55/255.255.255.255
-- IP:11.0.2.56/255.255.255.255
-- IP:11.0.2.57/255.255.255.255
-- IP:11.0.2.58/255.255.255.255
-- IP:11.0.2.59/255.255.255.255
-- IP:11.0.2.60/255.255.255.255
-- IP:11.0.2.61/255.255.255.255
-- IP:11.0.2.62/255.255.255.255
-- IP:11.0.2.63/255.255.255.255
-- IP:11.0.2.64/255.255.255.255
-- IP:11.0.2.65/255.255.255.255
-- IP:11.0.2.66/255.255.255.255
-- IP:11.0.2.67/255.255.255.255
-- IP:11.0.2.68/255.255.255.255
-- IP:11.0.2.69/255.255.255.255
-- IP:11.0.2.70/255.255.255.255
-- IP:11.0.2.71/255.255.255.255
-- IP:11.0.2.72/255.255.255.255
-- IP:11.0.2.73/255.255.255.255
-- IP:11.0.2.74/255.255.255.255
-- IP:11.0.2.75/255.255.255.255
-- IP:11.0.2.76/255.255.255.255
-- IP:11.0.2.77/255.255.255.255
-- IP:11.0.2.78/255.255.255.255
-- IP:11.0.2.79/255.255.255.255
-- IP:11.0.2.80/255.255.255.255
-- IP:11.0.2.81/255.255.255.255
-- IP:11.0.2.82/255.255.255.255
-- IP:11.0.2.83/255.255.255.255
-- IP:11.0.2.84/255.255.255.255
-- IP:11.0.2.85/255.255.255.255
-- IP:11.0.2.86/255.255.255.255
-- IP:11.0.2.87/255.255.255.255
-- IP:11.0.2.88/255.255.255.255
-- IP:11.0.2.89/255.255.255.255
-- IP:11.0.2.90/255.255.255.255
-- IP:11.0.2.91/255.255.255.255
-- IP:11.0.2.92/255.255.255.255
-- IP:11.0.2.93/255.255.255.255
-- IP:11.0.2.94/255.255.255.255
-- IP:11.0.2.95/255.255.255.255
-- IP:11.0.2.96/255.255.255.255
-- IP:11.0.2.97/255.255.255.255
-- IP:11.0.2.98/255.255.255.255
-- IP:11.0.2.99/255.255.255.255
-- IP:11.0.2.100/255.255.255.255
-- IP:11.0.2.101/255.255.255.255
-- IP:11.0.2.102/255.255.255.255
-- IP:11.0.2.103/255.255.255.255
-- IP:11.0.2.104/255.255.255.255
-- IP:11.0.2.105/255.255.255.255
-- IP:11.0.2.106/255.255.255.255
-- IP:11.0.2.107/255.255.255.255
-- IP:11.0.2.108/255.255.255.255
-- IP:11.0.2.109/255.255.255.255
-- IP:11.0.2.110/255.255.255.255
-- IP:11.0.2.111/255.255.255.255
-- IP:11.0.2.112/255.255.255.255
-- IP:11.0.2.113/255.255.255.255
-- IP:11.0.2.114/255.255.255.255
-- IP:11.0.2.115/255.255.255.255
-- IP:11.0.2.116/255.255.255.255
-- IP:11.0.2.117/255.255.255.255
-- IP:11.0.2.118/255.255.255.255
-- IP:11.0.2.119/255.255.255.255
-- IP:11.0.2.120/255.255.255.255
-- IP:11.0.2.121/255.255.255.255
-- IP:11.0.2.122/255.255.255.255
-- IP:11.0.2.123/255.255.255.255
-- IP:11.0.2.124/255.255.255.255
-- IP:11.0.2.125/255.255.255.255
-- IP:11.0.2.126/255.255.255.255
-- IP:11.0.2.127/255.255.255.255
-- IP:11.0.2.128/255.255.255.255
-- IP:11.0.2.129/255.255.255.255
-- IP:11.0.2.130/255.255.255.255
-- IP:11.0.2.131/255.255.255.255
-- IP:11.0.2.132/255.255.255.255
-- IP:11.0.2.133/255.255.255.255
-- IP:11.0.2.134/255.255.255.255
-- IP:11.0.2.135/255.255.255.255
-- IP:11.0.2.136/255.255.255.255
-- IP:11.0.2.137/255.255.255.255
-- IP:11.0.2.138/255.255.255.255
-- IP:11.0.2.139/255.255.255.255
-- IP:11.0.2.140/255.255.255.255
-- IP:11.0.2.141/255.255.255.255
-- IP:11.0.2.142/255.255.255.255
-- IP:11.0.2.143/255.255.255.255
-- IP:11.0.2.144/255.255.255.255
-- IP:11.0.2.145/255.255.255.255
-- IP:11.0.2.146/255.255.255.255
-- IP:11.0.2.147/255.255.255.255
-- IP:11.0.2.148/255.255.255.255
-- IP:11.0.2.149/255.255.255.255
-- IP:11.0.2.150/255.255.255.255
-- IP:11.0.2.151/255.255.255.255
-- IP:11.0.2.152/255.255.255.255
-- IP:11.0.2.153/255.255.255.255
-- IP:11.0.2.154/255.255.255.255
-- IP:11.0.2.155/255.255.255.255
-- IP:11.0.2.156/255.255.255.255
-- IP:11.0.2.157/255.255.255.255
-- IP:11.0.2.158/255.255.255.255
-- IP:11.0.2.159/255.255.255.255
-- IP:11.0.2.160/255.255.255.255
-- IP:11.0.2.161/255.255.255.255
-- IP:11.0.2.162/255.255.255.255
-- IP:11.0.2.163/255.255.255.255
-- IP:11.0.2.164/255.255.255.255
-- IP:11.0.2.165/255.255.255.255
-- IP:11.0.2.166/255.255.255.255
-- IP:11.0.2.167/255.255.255.255
-- IP:11.0.2.168/255.255.255.255
-- IP:11.0.2.169/255.255.255.255
-- IP:11.0.2.170/255.255.255.255
-- IP:11.0.2.171/255.255.255.255
-- IP:11.0.2.172/255.255.255.255
-- IP:11.0.2.173/255.255.255.255
-- IP:11.0.2.174/255.255.255.255
-- IP:11.0.2.175/255.255.255.255
-- IP:11.0.2.176/255.255.255.255
-- IP:11.0.2.177/255.255.255.255
-- IP:11.0.2.178/255.255.255.255
-- IP:11.0.2.179/255.255.255.255
-- IP:11.0.2.180/255.255.255.255
-- IP:11.0.2.181/255.255.255.255
-- IP:11.0.2.182/255.255.255.255
-- IP:11.0.2.183/255.255.255.255
-- IP:11.0.2.184/255.255.255.255
-- IP:11.0.2.185/255.255.255.255
-- IP:11.0.2.186/255.255.255.255
-- IP:11.0.2.187/255.255.255.255
-- IP:11.0.2.188/255.255.255.255
-- IP:11.0.2.189/255.255.255.255
-- IP:11.0.2.190/255.255.255.255
-- IP:11.0.2.191/255.255.255.255
-- IP:11.0.2.192/255.255.255.255
-- IP:11.0.2.193/255.255.255.255
-- IP:11.0.2.194/255.255.255.255
-- IP:11.0.2.195/255.255.255.255
-- IP:11.0.2.196/255.255.255.255
-- IP:11.0.2.197/255.255.255.255
-- IP:11.0.2.198/255.255.255.255
-- IP:11.0.2.199/255.255.255.255
-- IP:11.0.2.200/255.255.255.255
-- IP:11.0.2.201/255.255.255.255
-- IP:11.0.2.202/255.255.255.255
-- IP:11.0.2.203/255.255.255.255
-- IP:11.0.2.204/255.255.255.255
-- IP:11.0.2.205/255.255.255.255
-- IP:11.0.2.206/255.255.255.255
-- IP:11.0.2.207/255.255.255.255
-- IP:11.0.2.208/255.255.255.255
-- IP:11.0.2.209/255.255.255.255
-- IP:11.0.2.210/255.255.255.255
-- IP:11.0.2.211/255.255.255.255
-- IP:11.0.2.212/255.255.255.255
-- IP:11.0.2.213/255.255.255.255
-- IP:11.0.2.214/255.255.255.255
-- IP:11.0.2.215/255.255.255.255
-- IP:11.0.2.216/255.255.255.255
-- IP:11.0.2.217/255.255.255.255
-- IP:11.0.2.218/255.255.255.255
-- IP:11.0.2.219/255.255.255.255
-- IP:11.0.2.220/255.255.255.255
-- IP:11.0.2.221/255.255.255.255
-- IP:11.0.2.222/255.255.255.255
-- IP:11.0.2.223/255.255.255.255
-- IP:11.0.2.224/255.255.255.255
-- IP:11.0.2.225/255.255.255.255
-- IP:11.0.2.226/255.255.255.255
-- IP:11.0.2.227/255.255.255.255
-- IP:11.0.2.228/255.255.255.255
-- IP:11.0.2.229/255.255.255.255
-- IP:11.0.2.230/255.255.255.255
-- IP:11.0.2.231/255.255.255.255
-- IP:11.0.2.232/255.255.255.255
-- IP:11.0.2.233/255.255.255.255
-- IP:11.0.2.234/255.255.255.255
-- IP:11.0.2.235/255.255.255.255
-- IP:11.0.2.236/255.255.255.255
-- IP:11.0.2.237/255.255.255.255
-- IP:11.0.2.238/255.255.255.255
-- IP:11.0.2.239/255.255.255.255
-- IP:11.0.2.240/255.255.255.255
-- IP:11.0.2.241/255.255.255.255
-- IP:11.0.2.242/255.255.255.255
-- IP:11.0.2.243/255.255.255.255
-- IP:11.0.2.244/255.255.255.255
-- IP:11.0.2.245/255.255.255.255
-- IP:11.0.2.246/255.255.255.255
-- IP:11.0.2.247/255.255.255.255
-- IP:11.0.2.248/255.255.255.255
-- IP:11.0.2.249/255.255.255.255
-- IP:11.0.2.250/255.255.255.255
-- IP:11.0.2.251/255.255.255.255
-- IP:11.0.2.252/255.255.255.255
-- IP:11.0.2.253/255.255.255.255
-- IP:11.0.2.254/255.255.255.255
-- IP:11.0.2.255/255.255.255.255
-- IP:11.0.3.0/255.255.255.255
-- IP:11.0.3.1/255.255.255.255
-- IP:11.0.3.2/255.255.255.255
-- IP:11.0.3.3/255.255.255.255
-- IP:11.0.3.4/255.255.255.255
-- IP:11.0.3.5/255.255.255.255
-- IP:11.0.3.6/255.255.255.255
-- IP:11.0.3.7/255.255.255.255
-- IP:11.0.3.8/255.255.255.255
-- IP:11.0.3.9/255.255.255.255
-- IP:11.0.3.10/255.255.255.255
-- IP:11.0.3.11/255.255.255.255
-- IP:11.0.3.12/255.255.255.255
-- IP:11.0.3.13/255.255.255.255
-- IP:11.0.3.14/255.255.255.255
-- IP:11.0.3.15/255.255.255.255
-- IP:11.0.3.16/255.255.255.255
-- IP:11.0.3.17/255.255.255.255
-- IP:11.0.3.18/255.255.255.255
-- IP:11.0.3.19/255.255.255.255
-- IP:11.0.3.20/255.255.255.255
-- IP:11.0.3.21/255.255.255.255
-- IP:11.0.3.22/255.255.255.255
-- IP:11.0.3.23/255.255.255.255
-- IP:11.0.3.24/255.255.255.255
-- IP:11.0.3.25/255.255.255.255
-- IP:11.0.3.26/255.255.255.255
-- IP:11.0.3.27/255.255.255.255
-- IP:11.0.3.28/255.255.255.255
-- IP:11.0.3.29/255.255.255.255
-- IP:11.0.3.30/255.255.255.255
-- IP:11.0.3.31/255.255.255.255
-- IP:11.0.3.32/255.255.255.255
-- IP:11.0.3.33/255.255.255.255
-- IP:11.0.3.34/255.255.255.255
-- IP:11.0.3.35/255.255.255.255
-- IP:11.0.3.36/255.255.255.255
-- IP:11.0.3.37/255.255.255.255
-- IP:11.0.3.38/255.255.255.255
-- IP:11.0.3.39/255.255.255.255
-- IP:11.0.3.40/255.255.255.255
-- IP:11.0.3.41/255.255.255.255
-- IP:11.0.3.42/255.255.255.255
-- IP:11.0.3.43/255.255.255.255
-- IP:11.0.3.44/255.255.255.255
-- IP:11.0.3.45/255.255.255.255
-- IP:11.0.3.46/255.255.255.255
-- IP:11.0.3.47/255.255.255.255
-- IP:11.0.3.48/255.255.255.255
-- IP:11.0.3.49/255.255.255.255
-- IP:11.0.3.50/255.255.255.255
-- IP:11.0.3.51/255.255.255.255
-- IP:11.0.3.52/255.255.255.255
-- IP:11.0.3.53/255.255.255.255
-- IP:11.0.3.54/255.255.255.255
-- IP:11.0.3.55/255.255.255.255
-- IP:11.0.3.56/255.255.255.255
-- IP:11.0.3.57/255.255.255.255
-- IP:11.0.3.58/255.255.255.255
-- IP:11.0.3.59/255.255.255.255
-- IP:11.0.3.60/255.255.255.255
-- IP:11.0.3.61/255.255.255.255
-- IP:11.0.3.62/255.255.255.255
-- IP:11.0.3.63/255.255.255.255
-- IP:11.0.3.64/255.255.255.255
-- IP:11.0.3.65/255.255.255.255
-- IP:11.0.3.66/255.255.255.255
-- IP:11.0.3.67/255.255.255.255
-- IP:11.0.3.68/255.255.255.255
-- IP:11.0.3.69/255.255.255.255
-- IP:11.0.3.70/255.255.255.255
-- IP:11.0.3.71/255.255.255.255
-- IP:11.0.3.72/255.255.255.255
-- IP:11.0.3.73/255.255.255.255
-- IP:11.0.3.74/255.255.255.255
-- IP:11.0.3.75/255.255.255.255
-- IP:11.0.3.76/255.255.255.255
-- IP:11.0.3.77/255.255.255.255
-- IP:11.0.3.78/255.255.255.255
-- IP:11.0.3.79/255.255.255.255
-- IP:11.0.3.80/255.255.255.255
-- IP:11.0.3.81/255.255.255.255
-- IP:11.0.3.82/255.255.255.255
-- IP:11.0.3.83/255.255.255.255
-- IP:11.0.3.84/255.255.255.255
-- IP:11.0.3.85/255.255.255.255
-- IP:11.0.3.86/255.255.255.255
-- IP:11.0.3.87/255.255.255.255
-- IP:11.0.3.88/255.255.255.255
-- IP:11.0.3.89/255.255.255.255
-- IP:11.0.3.90/255.255.255.255
-- IP:11.0.3.91/255.255.255.255
-- IP:11.0.3.92/255.255.255.255
-- IP:11.0.3.93/255.255.255.255
-- IP:11.0.3.94/255.255.255.255
-- IP:11.0.3.95/255.255.255.255
-- IP:11.0.3.96/255.255.255.255
-- IP:11.0.3.97/255.255.255.255
-- IP:11.0.3.98/255.255.255.255
-- IP:11.0.3.99/255.255.255.255
-- IP:11.0.3.100/255.255.255.255
-- IP:11.0.3.101/255.255.255.255
-- IP:11.0.3.102/255.255.255.255
-- IP:11.0.3.103/255.255.255.255
-- IP:11.0.3.104/255.255.255.255
-- IP:11.0.3.105/255.255.255.255
-- IP:11.0.3.106/255.255.255.255
-- IP:11.0.3.107/255.255.255.255
-- IP:11.0.3.108/255.255.255.255
-- IP:11.0.3.109/255.255.255.255
-- IP:11.0.3.110/255.255.255.255
-- IP:11.0.3.111/255.255.255.255
-- IP:11.0.3.112/255.255.255.255
-- IP:11.0.3.113/255.255.255.255
-- IP:11.0.3.114/255.255.255.255
-- IP:11.0.3.115/255.255.255.255
-- IP:11.0.3.116/255.255.255.255
-- IP:11.0.3.117/255.255.255.255
-- IP:11.0.3.118/255.255.255.255
-- IP:11.0.3.119/255.255.255.255
-- IP:11.0.3.120/255.255.255.255
-- IP:11.0.3.121/255.255.255.255
-- IP:11.0.3.122/255.255.255.255
-- IP:11.0.3.123/255.255.255.255
-- IP:11.0.3.124/255.255.255.255
-- IP:11.0.3.125/255.255.255.255
-- IP:11.0.3.126/255.255.255.255
-- IP:11.0.3.127/255.255.255.255
-- IP:11.0.3.128/255.255.255.255
-- IP:11.0.3.129/255.255.255.255
-- IP:11.0.3.130/255.255.255.255
-- IP:11.0.3.131/255.255.255.255
-- IP:11.0.3.132/255.255.255.255
-- IP:11.0.3.133/255.255.255.255
-- IP:11.0.3.134/255.255.255.255
-- IP:11.0.3.135/255.255.255.255
-- IP:11.0.3.136/255.255.255.255
-- IP:11.0.3.137/255.255.255.255
-- IP:11.0.3.138/255.255.255.255
-- IP:11.0.3.139/255.255.255.255
-- IP:11.0.3.140/255.255.255.255
-- IP:11.0.3.141/255.255.255.255
-- IP:11.0.3.142/255.255.255.255
-- IP:11.0.3.143/255.255.255.255
-- IP:11.0.3.144/255.255.255.255
-- IP:11.0.3.145/255.255.255.255
-- IP:11.0.3.146/255.255.255.255
-- IP:11.0.3.147/255.255.255.255
-- IP:11.0.3.148/255.255.255.255
-- IP:11.0.3.149/255.255.255.255
-- IP:11.0.3.150/255.255.255.255
-- IP:11.0.3.151/255.255.255.255
-- IP:11.0.3.152/255.255.255.255
-- IP:11.0.3.153/255.255.255.255
-- IP:11.0.3.154/255.255.255.255
-- IP:11.0.3.155/255.255.255.255
-- IP:11.0.3.156/255.255.255.255
-- IP:11.0.3.157/255.255.255.255
-- IP:11.0.3.158/255.255.255.255
-- IP:11.0.3.159/255.255.255.255
-- IP:11.0.3.160/255.255.255.255
-- IP:11.0.3.161/255.255.255.255
-- IP:11.0.3.162/255.255.255.255
-- IP:11.0.3.163/255.255.255.255
-- IP:11.0.3.164/255.255.255.255
-- IP:11.0.3.165/255.255.255.255
-- IP:11.0.3.166/255.255.255.255
-- IP:11.0.3.167/255.255.255.255
-- IP:11.0.3.168/255.255.255.255
-- IP:11.0.3.169/255.255.255.255
-- IP:11.0.3.170/255.255.255.255
-- IP:11.0.3.171/255.255.255.255
-- IP:11.0.3.172/255.255.255.255
-- IP:11.0.3.173/255.255.255.255
-- IP:11.0.3.174/255.255.255.255
-- IP:11.0.3.175/255.255.255.255
-- IP:11.0.3.176/255.255.255.255
-- IP:11.0.3.177/255.255.255.255
-- IP:11.0.3.178/255.255.255.255
-- IP:11.0.3.179/255.255.255.255
-- IP:11.0.3.180/255.255.255.255
-- IP:11.0.3.181/255.255.255.255
-- IP:11.0.3.182/255.255.255.255
-- IP:11.0.3.183/255.255.255.255
-- IP:11.0.3.184/255.255.255.255
-- IP:11.0.3.185/255.255.255.255
-- IP:11.0.3.186/255.255.255.255
-- IP:11.0.3.187/255.255.255.255
-- IP:11.0.3.188/255.255.255.255
-- IP:11.0.3.189/255.255.255.255
-- IP:11.0.3.190/255.255.255.255
-- IP:11.0.3.191/255.255.255.255
-- IP:11.0.3.192/255.255.255.255
-- IP:11.0.3.193/255.255.255.255
-- IP:11.0.3.194/255.255.255.255
-- IP:11.0.3.195/255.255.255.255
-- IP:11.0.3.196/255.255.255.255
-- IP:11.0.3.197/255.255.255.255
-- IP:11.0.3.198/255.255.255.255
-- IP:11.0.3.199/255.255.255.255
-- IP:11.0.3.200/255.255.255.255
-- IP:11.0.3.201/255.255.255.255
-- IP:11.0.3.202/255.255.255.255
-- IP:11.0.3.203/255.255.255.255
-- IP:11.0.3.204/255.255.255.255
-- IP:11.0.3.205/255.255.255.255
-- IP:11.0.3.206/255.255.255.255
-- IP:11.0.3.207/255.255.255.255
-- IP:11.0.3.208/255.255.255.255
-- IP:11.0.3.209/255.255.255.255
-- IP:11.0.3.210/255.255.255.255
-- IP:11.0.3.211/255.255.255.255
-- IP:11.0.3.212/255.255.255.255
-- IP:11.0.3.213/255.255.255.255
-- IP:11.0.3.214/255.255.255.255
-- IP:11.0.3.215/255.255.255.255
-- IP:11.0.3.216/255.255.255.255
-- IP:11.0.3.217/255.255.255.255
-- IP:11.0.3.218/255.255.255.255
-- IP:11.0.3.219/255.255.255.255
-- IP:11.0.3.220/255.255.255.255
-- IP:11.0.3.221/255.255.255.255
-- IP:11.0.3.222/255.255.255.255
-- IP:11.0.3.223/255.255.255.255
-- IP:11.0.3.224/255.255.255.255
-- IP:11.0.3.225/255.255.255.255
-- IP:11.0.3.226/255.255.255.255
-- IP:11.0.3.227/255.255.255.255
-- IP:11.0.3.228/255.255.255.255
-- IP:11.0.3.229/255.255.255.255
-- IP:11.0.3.230/255.255.255.255
-- IP:11.0.3.231/255.255.255.255
-- IP:11.0.3.232/255.255.255.255
-- IP:11.0.3.233/255.255.255.255
-- IP:11.0.3.234/255.255.255.255
-- IP:11.0.3.235/255.255.255.255
-- IP:11.0.3.236/255.255.255.255
-- IP:11.0.3.237/255.255.255.255
-- IP:11.0.3.238/255.255.255.255
-- IP:11.0.3.239/255.255.255.255
-- IP:11.0.3.240/255.255.255.255
-- IP:11.0.3.241/255.255.255.255
-- IP:11.0.3.242/255.255.255.255
-- IP:11.0.3.243/255.255.255.255
-- IP:11.0.3.244/255.255.255.255
-- IP:11.0.3.245/255.255.255.255
-- IP:11.0.3.246/255.255.255.255
-- IP:11.0.3.247/255.255.255.255
-- IP:11.0.3.248/255.255.255.255
-- IP:11.0.3.249/255.255.255.255
-- IP:11.0.3.250/255.255.255.255
-- IP:11.0.3.251/255.255.255.255
-- IP:11.0.3.252/255.255.255.255
-- IP:11.0.3.253/255.255.255.255
-- IP:11.0.3.254/255.255.255.255
-- IP:11.0.3.255/255.255.255.255
-- IP:11.0.4.0/255.255.255.255
-- URI:http://xest/0
-- URI:http://xest/1
-- URI:http://xest/2
-- URI:http://xest/3
-- URI:http://xest/4
-- URI:http://xest/5
-- URI:http://xest/6
-- URI:http://xest/7
-- URI:http://xest/8
-- URI:http://xest/9
-- URI:http://xest/10
-- URI:http://xest/11
-- URI:http://xest/12
-- URI:http://xest/13
-- URI:http://xest/14
-- URI:http://xest/15
-- URI:http://xest/16
-- URI:http://xest/17
-- URI:http://xest/18
-- URI:http://xest/19
-- URI:http://xest/20
-- URI:http://xest/21
-- URI:http://xest/22
-- URI:http://xest/23
-- URI:http://xest/24
-- URI:http://xest/25
-- URI:http://xest/26
-- URI:http://xest/27
-- URI:http://xest/28
-- URI:http://xest/29
-- URI:http://xest/30
-- URI:http://xest/31
-- URI:http://xest/32
-- URI:http://xest/33
-- URI:http://xest/34
-- URI:http://xest/35
-- URI:http://xest/36
-- URI:http://xest/37
-- URI:http://xest/38
-- URI:http://xest/39
-- URI:http://xest/40
-- URI:http://xest/41
-- URI:http://xest/42
-- URI:http://xest/43
-- URI:http://xest/44
-- URI:http://xest/45
-- URI:http://xest/46
-- URI:http://xest/47
-- URI:http://xest/48
-- URI:http://xest/49
-- URI:http://xest/50
-- URI:http://xest/51
-- URI:http://xest/52
-- URI:http://xest/53
-- URI:http://xest/54
-- URI:http://xest/55
-- URI:http://xest/56
-- URI:http://xest/57
-- URI:http://xest/58
-- URI:http://xest/59
-- URI:http://xest/60
-- URI:http://xest/61
-- URI:http://xest/62
-- URI:http://xest/63
-- URI:http://xest/64
-- URI:http://xest/65
-- URI:http://xest/66
-- URI:http://xest/67
-- URI:http://xest/68
-- URI:http://xest/69
-- URI:http://xest/70
-- URI:http://xest/71
-- URI:http://xest/72
-- URI:http://xest/73
-- URI:http://xest/74
-- URI:http://xest/75
-- URI:http://xest/76
-- URI:http://xest/77
-- URI:http://xest/78
-- URI:http://xest/79
-- URI:http://xest/80
-- URI:http://xest/81
-- URI:http://xest/82
-- URI:http://xest/83
-- URI:http://xest/84
-- URI:http://xest/85
-- URI:http://xest/86
-- URI:http://xest/87
-- URI:http://xest/88
-- URI:http://xest/89
-- URI:http://xest/90
-- URI:http://xest/91
-- URI:http://xest/92
-- URI:http://xest/93
-- URI:http://xest/94
-- URI:http://xest/95
-- URI:http://xest/96
-- URI:http://xest/97
-- URI:http://xest/98
-- URI:http://xest/99
-- URI:http://xest/100
-- URI:http://xest/101
-- URI:http://xest/102
-- URI:http://xest/103
-- URI:http://xest/104
-- URI:http://xest/105
-- URI:http://xest/106
-- URI:http://xest/107
-- URI:http://xest/108
-- URI:http://xest/109
-- URI:http://xest/110
-- URI:http://xest/111
-- URI:http://xest/112
-- URI:http://xest/113
-- URI:http://xest/114
-- URI:http://xest/115
-- URI:http://xest/116
-- URI:http://xest/117
-- URI:http://xest/118
-- URI:http://xest/119
-- URI:http://xest/120
-- URI:http://xest/121
-- URI:http://xest/122
-- URI:http://xest/123
-- URI:http://xest/124
-- URI:http://xest/125
-- URI:http://xest/126
-- URI:http://xest/127
-- URI:http://xest/128
-- URI:http://xest/129
-- URI:http://xest/130
-- URI:http://xest/131
-- URI:http://xest/132
-- URI:http://xest/133
-- URI:http://xest/134
-- URI:http://xest/135
-- URI:http://xest/136
-- URI:http://xest/137
-- URI:http://xest/138
-- URI:http://xest/139
-- URI:http://xest/140
-- URI:http://xest/141
-- URI:http://xest/142
-- URI:http://xest/143
-- URI:http://xest/144
-- URI:http://xest/145
-- URI:http://xest/146
-- URI:http://xest/147
-- URI:http://xest/148
-- URI:http://xest/149
-- URI:http://xest/150
-- URI:http://xest/151
-- URI:http://xest/152
-- URI:http://xest/153
-- URI:http://xest/154
-- URI:http://xest/155
-- URI:http://xest/156
-- URI:http://xest/157
-- URI:http://xest/158
-- URI:http://xest/159
-- URI:http://xest/160
-- URI:http://xest/161
-- URI:http://xest/162
-- URI:http://xest/163
-- URI:http://xest/164
-- URI:http://xest/165
-- URI:http://xest/166
-- URI:http://xest/167
-- URI:http://xest/168
-- URI:http://xest/169
-- URI:http://xest/170
-- URI:http://xest/171
-- URI:http://xest/172
-- URI:http://xest/173
-- URI:http://xest/174
-- URI:http://xest/175
-- URI:http://xest/176
-- URI:http://xest/177
-- URI:http://xest/178
-- URI:http://xest/179
-- URI:http://xest/180
-- URI:http://xest/181
-- URI:http://xest/182
-- URI:http://xest/183
-- URI:http://xest/184
-- URI:http://xest/185
-- URI:http://xest/186
-- URI:http://xest/187
-- URI:http://xest/188
-- URI:http://xest/189
-- URI:http://xest/190
-- URI:http://xest/191
-- URI:http://xest/192
-- URI:http://xest/193
-- URI:http://xest/194
-- URI:http://xest/195
-- URI:http://xest/196
-- URI:http://xest/197
-- URI:http://xest/198
-- URI:http://xest/199
-- URI:http://xest/200
-- URI:http://xest/201
-- URI:http://xest/202
-- URI:http://xest/203
-- URI:http://xest/204
-- URI:http://xest/205
-- URI:http://xest/206
-- URI:http://xest/207
-- URI:http://xest/208
-- URI:http://xest/209
-- URI:http://xest/210
-- URI:http://xest/211
-- URI:http://xest/212
-- URI:http://xest/213
-- URI:http://xest/214
-- URI:http://xest/215
-- URI:http://xest/216
-- URI:http://xest/217
-- URI:http://xest/218
-- URI:http://xest/219
-- URI:http://xest/220
-- URI:http://xest/221
-- URI:http://xest/222
-- URI:http://xest/223
-- URI:http://xest/224
-- URI:http://xest/225
-- URI:http://xest/226
-- URI:http://xest/227
-- URI:http://xest/228
-- URI:http://xest/229
-- URI:http://xest/230
-- URI:http://xest/231
-- URI:http://xest/232
-- URI:http://xest/233
-- URI:http://xest/234
-- URI:http://xest/235
-- URI:http://xest/236
-- URI:http://xest/237
-- URI:http://xest/238
-- URI:http://xest/239
-- URI:http://xest/240
-- URI:http://xest/241
-- URI:http://xest/242
-- URI:http://xest/243
-- URI:http://xest/244
-- URI:http://xest/245
-- URI:http://xest/246
-- URI:http://xest/247
-- URI:http://xest/248
-- URI:http://xest/249
-- URI:http://xest/250
-- URI:http://xest/251
-- URI:http://xest/252
-- URI:http://xest/253
-- URI:http://xest/254
-- URI:http://xest/255
-- URI:http://xest/256
-- URI:http://xest/257
-- URI:http://xest/258
-- URI:http://xest/259
-- URI:http://xest/260
-- URI:http://xest/261
-- URI:http://xest/262
-- URI:http://xest/263
-- URI:http://xest/264
-- URI:http://xest/265
-- URI:http://xest/266
-- URI:http://xest/267
-- URI:http://xest/268
-- URI:http://xest/269
-- URI:http://xest/270
-- URI:http://xest/271
-- URI:http://xest/272
-- URI:http://xest/273
-- URI:http://xest/274
-- URI:http://xest/275
-- URI:http://xest/276
-- URI:http://xest/277
-- URI:http://xest/278
-- URI:http://xest/279
-- URI:http://xest/280
-- URI:http://xest/281
-- URI:http://xest/282
-- URI:http://xest/283
-- URI:http://xest/284
-- URI:http://xest/285
-- URI:http://xest/286
-- URI:http://xest/287
-- URI:http://xest/288
-- URI:http://xest/289
-- URI:http://xest/290
-- URI:http://xest/291
-- URI:http://xest/292
-- URI:http://xest/293
-- URI:http://xest/294
-- URI:http://xest/295
-- URI:http://xest/296
-- URI:http://xest/297
-- URI:http://xest/298
-- URI:http://xest/299
-- URI:http://xest/300
-- URI:http://xest/301
-- URI:http://xest/302
-- URI:http://xest/303
-- URI:http://xest/304
-- URI:http://xest/305
-- URI:http://xest/306
-- URI:http://xest/307
-- URI:http://xest/308
-- URI:http://xest/309
-- URI:http://xest/310
-- URI:http://xest/311
-- URI:http://xest/312
-- URI:http://xest/313
-- URI:http://xest/314
-- URI:http://xest/315
-- URI:http://xest/316
-- URI:http://xest/317
-- URI:http://xest/318
-- URI:http://xest/319
-- URI:http://xest/320
-- URI:http://xest/321
-- URI:http://xest/322
-- URI:http://xest/323
-- URI:http://xest/324
-- URI:http://xest/325
-- URI:http://xest/326
-- URI:http://xest/327
-- URI:http://xest/328
-- URI:http://xest/329
-- URI:http://xest/330
-- URI:http://xest/331
-- URI:http://xest/332
-- URI:http://xest/333
-- URI:http://xest/334
-- URI:http://xest/335
-- URI:http://xest/336
-- URI:http://xest/337
-- URI:http://xest/338
-- URI:http://xest/339
-- URI:http://xest/340
-- URI:http://xest/341
-- URI:http://xest/342
-- URI:http://xest/343
-- URI:http://xest/344
-- URI:http://xest/345
-- URI:http://xest/346
-- URI:http://xest/347
-- URI:http://xest/348
-- URI:http://xest/349
-- URI:http://xest/350
-- URI:http://xest/351
-- URI:http://xest/352
-- URI:http://xest/353
-- URI:http://xest/354
-- URI:http://xest/355
-- URI:http://xest/356
-- URI:http://xest/357
-- URI:http://xest/358
-- URI:http://xest/359
-- URI:http://xest/360
-- URI:http://xest/361
-- URI:http://xest/362
-- URI:http://xest/363
-- URI:http://xest/364
-- URI:http://xest/365
-- URI:http://xest/366
-- URI:http://xest/367
-- URI:http://xest/368
-- URI:http://xest/369
-- URI:http://xest/370
-- URI:http://xest/371
-- URI:http://xest/372
-- URI:http://xest/373
-- URI:http://xest/374
-- URI:http://xest/375
-- URI:http://xest/376
-- URI:http://xest/377
-- URI:http://xest/378
-- URI:http://xest/379
-- URI:http://xest/380
-- URI:http://xest/381
-- URI:http://xest/382
-- URI:http://xest/383
-- URI:http://xest/384
-- URI:http://xest/385
-- URI:http://xest/386
-- URI:http://xest/387
-- URI:http://xest/388
-- URI:http://xest/389
-- URI:http://xest/390
-- URI:http://xest/391
-- URI:http://xest/392
-- URI:http://xest/393
-- URI:http://xest/394
-- URI:http://xest/395
-- URI:http://xest/396
-- URI:http://xest/397
-- URI:http://xest/398
-- URI:http://xest/399
-- URI:http://xest/400
-- URI:http://xest/401
-- URI:http://xest/402
-- URI:http://xest/403
-- URI:http://xest/404
-- URI:http://xest/405
-- URI:http://xest/406
-- URI:http://xest/407
-- URI:http://xest/408
-- URI:http://xest/409
-- URI:http://xest/410
-- URI:http://xest/411
-- URI:http://xest/412
-- URI:http://xest/413
-- URI:http://xest/414
-- URI:http://xest/415
-- URI:http://xest/416
-- URI:http://xest/417
-- URI:http://xest/418
-- URI:http://xest/419
-- URI:http://xest/420
-- URI:http://xest/421
-- URI:http://xest/422
-- URI:http://xest/423
-- URI:http://xest/424
-- URI:http://xest/425
-- URI:http://xest/426
-- URI:http://xest/427
-- URI:http://xest/428
-- URI:http://xest/429
-- URI:http://xest/430
-- URI:http://xest/431
-- URI:http://xest/432
-- URI:http://xest/433
-- URI:http://xest/434
-- URI:http://xest/435
-- URI:http://xest/436
-- URI:http://xest/437
-- URI:http://xest/438
-- URI:http://xest/439
-- URI:http://xest/440
-- URI:http://xest/441
-- URI:http://xest/442
-- URI:http://xest/443
-- URI:http://xest/444
-- URI:http://xest/445
-- URI:http://xest/446
-- URI:http://xest/447
-- URI:http://xest/448
-- URI:http://xest/449
-- URI:http://xest/450
-- URI:http://xest/451
-- URI:http://xest/452
-- URI:http://xest/453
-- URI:http://xest/454
-- URI:http://xest/455
-- URI:http://xest/456
-- URI:http://xest/457
-- URI:http://xest/458
-- URI:http://xest/459
-- URI:http://xest/460
-- URI:http://xest/461
-- URI:http://xest/462
-- URI:http://xest/463
-- URI:http://xest/464
-- URI:http://xest/465
-- URI:http://xest/466
-- URI:http://xest/467
-- URI:http://xest/468
-- URI:http://xest/469
-- URI:http://xest/470
-- URI:http://xest/471
-- URI:http://xest/472
-- URI:http://xest/473
-- URI:http://xest/474
-- URI:http://xest/475
-- URI:http://xest/476
-- URI:http://xest/477
-- URI:http://xest/478
-- URI:http://xest/479
-- URI:http://xest/480
-- URI:http://xest/481
-- URI:http://xest/482
-- URI:http://xest/483
-- URI:http://xest/484
-- URI:http://xest/485
-- URI:http://xest/486
-- URI:http://xest/487
-- URI:http://xest/488
-- URI:http://xest/489
-- URI:http://xest/490
-- URI:http://xest/491
-- URI:http://xest/492
-- URI:http://xest/493
-- URI:http://xest/494
-- URI:http://xest/495
-- URI:http://xest/496
-- URI:http://xest/497
-- URI:http://xest/498
-- URI:http://xest/499
-- URI:http://xest/500
-- URI:http://xest/501
-- URI:http://xest/502
-- URI:http://xest/503
-- URI:http://xest/504
-- URI:http://xest/505
-- URI:http://xest/506
-- URI:http://xest/507
-- URI:http://xest/508
-- URI:http://xest/509
-- URI:http://xest/510
-- URI:http://xest/511
-- URI:http://xest/512
-- URI:http://xest/513
-- URI:http://xest/514
-- URI:http://xest/515
-- URI:http://xest/516
-- URI:http://xest/517
-- URI:http://xest/518
-- URI:http://xest/519
-- URI:http://xest/520
-- URI:http://xest/521
-- URI:http://xest/522
-- URI:http://xest/523
-- URI:http://xest/524
-- URI:http://xest/525
-- URI:http://xest/526
-- URI:http://xest/527
-- URI:http://xest/528
-- URI:http://xest/529
-- URI:http://xest/530
-- URI:http://xest/531
-- URI:http://xest/532
-- URI:http://xest/533
-- URI:http://xest/534
-- URI:http://xest/535
-- URI:http://xest/536
-- URI:http://xest/537
-- URI:http://xest/538
-- URI:http://xest/539
-- URI:http://xest/540
-- URI:http://xest/541
-- URI:http://xest/542
-- URI:http://xest/543
-- URI:http://xest/544
-- URI:http://xest/545
-- URI:http://xest/546
-- URI:http://xest/547
-- URI:http://xest/548
-- URI:http://xest/549
-- URI:http://xest/550
-- URI:http://xest/551
-- URI:http://xest/552
-- URI:http://xest/553
-- URI:http://xest/554
-- URI:http://xest/555
-- URI:http://xest/556
-- URI:http://xest/557
-- URI:http://xest/558
-- URI:http://xest/559
-- URI:http://xest/560
-- URI:http://xest/561
-- URI:http://xest/562
-- URI:http://xest/563
-- URI:http://xest/564
-- URI:http://xest/565
-- URI:http://xest/566
-- URI:http://xest/567
-- URI:http://xest/568
-- URI:http://xest/569
-- URI:http://xest/570
-- URI:http://xest/571
-- URI:http://xest/572
-- URI:http://xest/573
-- URI:http://xest/574
-- URI:http://xest/575
-- URI:http://xest/576
-- URI:http://xest/577
-- URI:http://xest/578
-- URI:http://xest/579
-- URI:http://xest/580
-- URI:http://xest/581
-- URI:http://xest/582
-- URI:http://xest/583
-- URI:http://xest/584
-- URI:http://xest/585
-- URI:http://xest/586
-- URI:http://xest/587
-- URI:http://xest/588
-- URI:http://xest/589
-- URI:http://xest/590
-- URI:http://xest/591
-- URI:http://xest/592
-- URI:http://xest/593
-- URI:http://xest/594
-- URI:http://xest/595
-- URI:http://xest/596
-- URI:http://xest/597
-- URI:http://xest/598
-- URI:http://xest/599
-- URI:http://xest/600
-- URI:http://xest/601
-- URI:http://xest/602
-- URI:http://xest/603
-- URI:http://xest/604
-- URI:http://xest/605
-- URI:http://xest/606
-- URI:http://xest/607
-- URI:http://xest/608
-- URI:http://xest/609
-- URI:http://xest/610
-- URI:http://xest/611
-- URI:http://xest/612
-- URI:http://xest/613
-- URI:http://xest/614
-- URI:http://xest/615
-- URI:http://xest/616
-- URI:http://xest/617
-- URI:http://xest/618
-- URI:http://xest/619
-- URI:http://xest/620
-- URI:http://xest/621
-- URI:http://xest/622
-- URI:http://xest/623
-- URI:http://xest/624
-- URI:http://xest/625
-- URI:http://xest/626
-- URI:http://xest/627
-- URI:http://xest/628
-- URI:http://xest/629
-- URI:http://xest/630
-- URI:http://xest/631
-- URI:http://xest/632
-- URI:http://xest/633
-- URI:http://xest/634
-- URI:http://xest/635
-- URI:http://xest/636
-- URI:http://xest/637
-- URI:http://xest/638
-- URI:http://xest/639
-- URI:http://xest/640
-- URI:http://xest/641
-- URI:http://xest/642
-- URI:http://xest/643
-- URI:http://xest/644
-- URI:http://xest/645
-- URI:http://xest/646
-- URI:http://xest/647
-- URI:http://xest/648
-- URI:http://xest/649
-- URI:http://xest/650
-- URI:http://xest/651
-- URI:http://xest/652
-- URI:http://xest/653
-- URI:http://xest/654
-- URI:http://xest/655
-- URI:http://xest/656
-- URI:http://xest/657
-- URI:http://xest/658
-- URI:http://xest/659
-- URI:http://xest/660
-- URI:http://xest/661
-- URI:http://xest/662
-- URI:http://xest/663
-- URI:http://xest/664
-- URI:http://xest/665
-- URI:http://xest/666
-- URI:http://xest/667
-- URI:http://xest/668
-- URI:http://xest/669
-- URI:http://xest/670
-- URI:http://xest/671
-- URI:http://xest/672
-- URI:http://xest/673
-- URI:http://xest/674
-- URI:http://xest/675
-- URI:http://xest/676
-- URI:http://xest/677
-- URI:http://xest/678
-- URI:http://xest/679
-- URI:http://xest/680
-- URI:http://xest/681
-- URI:http://xest/682
-- URI:http://xest/683
-- URI:http://xest/684
-- URI:http://xest/685
-- URI:http://xest/686
-- URI:http://xest/687
-- URI:http://xest/688
-- URI:http://xest/689
-- URI:http://xest/690
-- URI:http://xest/691
-- URI:http://xest/692
-- URI:http://xest/693
-- URI:http://xest/694
-- URI:http://xest/695
-- URI:http://xest/696
-- URI:http://xest/697
-- URI:http://xest/698
-- URI:http://xest/699
-- URI:http://xest/700
-- URI:http://xest/701
-- URI:http://xest/702
-- URI:http://xest/703
-- URI:http://xest/704
-- URI:http://xest/705
-- URI:http://xest/706
-- URI:http://xest/707
-- URI:http://xest/708
-- URI:http://xest/709
-- URI:http://xest/710
-- URI:http://xest/711
-- URI:http://xest/712
-- URI:http://xest/713
-- URI:http://xest/714
-- URI:http://xest/715
-- URI:http://xest/716
-- URI:http://xest/717
-- URI:http://xest/718
-- URI:http://xest/719
-- URI:http://xest/720
-- URI:http://xest/721
-- URI:http://xest/722
-- URI:http://xest/723
-- URI:http://xest/724
-- URI:http://xest/725
-- URI:http://xest/726
-- URI:http://xest/727
-- URI:http://xest/728
-- URI:http://xest/729
-- URI:http://xest/730
-- URI:http://xest/731
-- URI:http://xest/732
-- URI:http://xest/733
-- URI:http://xest/734
-- URI:http://xest/735
-- URI:http://xest/736
-- URI:http://xest/737
-- URI:http://xest/738
-- URI:http://xest/739
-- URI:http://xest/740
-- URI:http://xest/741
-- URI:http://xest/742
-- URI:http://xest/743
-- URI:http://xest/744
-- URI:http://xest/745
-- URI:http://xest/746
-- URI:http://xest/747
-- URI:http://xest/748
-- URI:http://xest/749
-- URI:http://xest/750
-- URI:http://xest/751
-- URI:http://xest/752
-- URI:http://xest/753
-- URI:http://xest/754
-- URI:http://xest/755
-- URI:http://xest/756
-- URI:http://xest/757
-- URI:http://xest/758
-- URI:http://xest/759
-- URI:http://xest/760
-- URI:http://xest/761
-- URI:http://xest/762
-- URI:http://xest/763
-- URI:http://xest/764
-- URI:http://xest/765
-- URI:http://xest/766
-- URI:http://xest/767
-- URI:http://xest/768
-- URI:http://xest/769
-- URI:http://xest/770
-- URI:http://xest/771
-- URI:http://xest/772
-- URI:http://xest/773
-- URI:http://xest/774
-- URI:http://xest/775
-- URI:http://xest/776
-- URI:http://xest/777
-- URI:http://xest/778
-- URI:http://xest/779
-- URI:http://xest/780
-- URI:http://xest/781
-- URI:http://xest/782
-- URI:http://xest/783
-- URI:http://xest/784
-- URI:http://xest/785
-- URI:http://xest/786
-- URI:http://xest/787
-- URI:http://xest/788
-- URI:http://xest/789
-- URI:http://xest/790
-- URI:http://xest/791
-- URI:http://xest/792
-- URI:http://xest/793
-- URI:http://xest/794
-- URI:http://xest/795
-- URI:http://xest/796
-- URI:http://xest/797
-- URI:http://xest/798
-- URI:http://xest/799
-- URI:http://xest/800
-- URI:http://xest/801
-- URI:http://xest/802
-- URI:http://xest/803
-- URI:http://xest/804
-- URI:http://xest/805
-- URI:http://xest/806
-- URI:http://xest/807
-- URI:http://xest/808
-- URI:http://xest/809
-- URI:http://xest/810
-- URI:http://xest/811
-- URI:http://xest/812
-- URI:http://xest/813
-- URI:http://xest/814
-- URI:http://xest/815
-- URI:http://xest/816
-- URI:http://xest/817
-- URI:http://xest/818
-- URI:http://xest/819
-- URI:http://xest/820
-- URI:http://xest/821
-- URI:http://xest/822
-- URI:http://xest/823
-- URI:http://xest/824
-- URI:http://xest/825
-- URI:http://xest/826
-- URI:http://xest/827
-- URI:http://xest/828
-- URI:http://xest/829
-- URI:http://xest/830
-- URI:http://xest/831
-- URI:http://xest/832
-- URI:http://xest/833
-- URI:http://xest/834
-- URI:http://xest/835
-- URI:http://xest/836
-- URI:http://xest/837
-- URI:http://xest/838
-- URI:http://xest/839
-- URI:http://xest/840
-- URI:http://xest/841
-- URI:http://xest/842
-- URI:http://xest/843
-- URI:http://xest/844
-- URI:http://xest/845
-- URI:http://xest/846
-- URI:http://xest/847
-- URI:http://xest/848
-- URI:http://xest/849
-- URI:http://xest/850
-- URI:http://xest/851
-- URI:http://xest/852
-- URI:http://xest/853
-- URI:http://xest/854
-- URI:http://xest/855
-- URI:http://xest/856
-- URI:http://xest/857
-- URI:http://xest/858
-- URI:http://xest/859
-- URI:http://xest/860
-- URI:http://xest/861
-- URI:http://xest/862
-- URI:http://xest/863
-- URI:http://xest/864
-- URI:http://xest/865
-- URI:http://xest/866
-- URI:http://xest/867
-- URI:http://xest/868
-- URI:http://xest/869
-- URI:http://xest/870
-- URI:http://xest/871
-- URI:http://xest/872
-- URI:http://xest/873
-- URI:http://xest/874
-- URI:http://xest/875
-- URI:http://xest/876
-- URI:http://xest/877
-- URI:http://xest/878
-- URI:http://xest/879
-- URI:http://xest/880
-- URI:http://xest/881
-- URI:http://xest/882
-- URI:http://xest/883
-- URI:http://xest/884
-- URI:http://xest/885
-- URI:http://xest/886
-- URI:http://xest/887
-- URI:http://xest/888
-- URI:http://xest/889
-- URI:http://xest/890
-- URI:http://xest/891
-- URI:http://xest/892
-- URI:http://xest/893
-- URI:http://xest/894
-- URI:http://xest/895
-- URI:http://xest/896
-- URI:http://xest/897
-- URI:http://xest/898
-- URI:http://xest/899
-- URI:http://xest/900
-- URI:http://xest/901
-- URI:http://xest/902
-- URI:http://xest/903
-- URI:http://xest/904
-- URI:http://xest/905
-- URI:http://xest/906
-- URI:http://xest/907
-- URI:http://xest/908
-- URI:http://xest/909
-- URI:http://xest/910
-- URI:http://xest/911
-- URI:http://xest/912
-- URI:http://xest/913
-- URI:http://xest/914
-- URI:http://xest/915
-- URI:http://xest/916
-- URI:http://xest/917
-- URI:http://xest/918
-- URI:http://xest/919
-- URI:http://xest/920
-- URI:http://xest/921
-- URI:http://xest/922
-- URI:http://xest/923
-- URI:http://xest/924
-- URI:http://xest/925
-- URI:http://xest/926
-- URI:http://xest/927
-- URI:http://xest/928
-- URI:http://xest/929
-- URI:http://xest/930
-- URI:http://xest/931
-- URI:http://xest/932
-- URI:http://xest/933
-- URI:http://xest/934
-- URI:http://xest/935
-- URI:http://xest/936
-- URI:http://xest/937
-- URI:http://xest/938
-- URI:http://xest/939
-- URI:http://xest/940
-- URI:http://xest/941
-- URI:http://xest/942
-- URI:http://xest/943
-- URI:http://xest/944
-- URI:http://xest/945
-- URI:http://xest/946
-- URI:http://xest/947
-- URI:http://xest/948
-- URI:http://xest/949
-- URI:http://xest/950
-- URI:http://xest/951
-- URI:http://xest/952
-- URI:http://xest/953
-- URI:http://xest/954
-- URI:http://xest/955
-- URI:http://xest/956
-- URI:http://xest/957
-- URI:http://xest/958
-- URI:http://xest/959
-- URI:http://xest/960
-- URI:http://xest/961
-- URI:http://xest/962
-- URI:http://xest/963
-- URI:http://xest/964
-- URI:http://xest/965
-- URI:http://xest/966
-- URI:http://xest/967
-- URI:http://xest/968
-- URI:http://xest/969
-- URI:http://xest/970
-- URI:http://xest/971
-- URI:http://xest/972
-- URI:http://xest/973
-- URI:http://xest/974
-- URI:http://xest/975
-- URI:http://xest/976
-- URI:http://xest/977
-- URI:http://xest/978
-- URI:http://xest/979
-- URI:http://xest/980
-- URI:http://xest/981
-- URI:http://xest/982
-- URI:http://xest/983
-- URI:http://xest/984
-- URI:http://xest/985
-- URI:http://xest/986
-- URI:http://xest/987
-- URI:http://xest/988
-- URI:http://xest/989
-- URI:http://xest/990
-- URI:http://xest/991
-- URI:http://xest/992
-- URI:http://xest/993
-- URI:http://xest/994
-- URI:http://xest/995
-- URI:http://xest/996
-- URI:http://xest/997
-- URI:http://xest/998
-- URI:http://xest/999
-- URI:http://xest/1000
-- URI:http://xest/1001
-- URI:http://xest/1002
-- URI:http://xest/1003
-- URI:http://xest/1004
-- URI:http://xest/1005
-- URI:http://xest/1006
-- URI:http://xest/1007
-- URI:http://xest/1008
-- URI:http://xest/1009
-- URI:http://xest/1010
-- URI:http://xest/1011
-- URI:http://xest/1012
-- URI:http://xest/1013
-- URI:http://xest/1014
-- URI:http://xest/1015
-- URI:http://xest/1016
-- URI:http://xest/1017
-- URI:http://xest/1018
-- URI:http://xest/1019
-- URI:http://xest/1020
-- URI:http://xest/1021
-- URI:http://xest/1022
-- URI:http://xest/1023
-- URI:http://xest/1024
--
-- Signature Algorithm: sha256WithRSAEncryption
-- 5d:94:f0:0a:d4:00:79:35:cf:57:0e:3d:24:e9:17:d9:0c:22:
-- f2:7e:18:73:4a:bc:89:fa:cf:19:fb:26:b3:93:7b:f6:61:24:
-- a0:36:e1:29:1f:3c:a6:db:c2:c3:fc:dd:05:5b:25:f1:21:4f:
-- 29:1b:b2:bc:c6:0d:3d:cb:27:a5:16:8d:73:b3:e4:a0:82:ae:
-- 43:7b:72:4f:52:aa:cf:c1:0f:6b:13:7d:af:11:cd:ce:8d:a5:
-- 78:b2:a8:9d:4e:22:6d:0d:60:59:29:b1:a5:97:01:52:ae:4e:
-- 6f:4e:bc:4e:cc:d4:6b:f9:32:04:42:1c:e7:87:74:6c:42:74:
-- a6:4c:83:07:b8:54:2e:33:4c:6b:09:38:e1:ce:b1:56:59:82:
-- f5:69:90:4f:7d:04:51:45:68:09:14:5b:b2:c9:a4:b0:41:ab:
-- 7a:f6:4a:84:0d:88:2f:45:d2:3b:81:bc:e8:91:b9:a8:f1:bb:
-- 93:d7:42:7d:c8:ca:24:19:f7:28:a4:c6:67:ac:1a:2e:8d:88:
-- 72:ae:47:14:da:1c:38:f7:a6:7e:38:af:c4:47:0a:7d:8e:38:
-- 3d:25:3a:48:d7:af:0b:0c:c0:45:42:43:5f:1e:66:1b:64:53:
-- 2a:4f:81:a1:e8:21:d0:4b:bc:49:87:b0:5e:37:d5:68:ad:7a:
-- f4:aa:f4:ad
-------BEGIN CERTIFICATE-----
--MIMBYqUwgwFhjKADAgECAhQ85fyBiFmoUBbBf9flKuWWf8L3ADANBgkqhkiG9w0B
--AQsFADAPMQ0wCwYDVQQDDARSb290MB4XDTIxMTAwNTEyMDAwMFoXDTIyMTAwNTEy
--MDAwMFowFzEVMBMGA1UEAwwMSW50ZXJtZWRpYXRlMIIBIjANBgkqhkiG9w0BAQEF
--AAOCAQ8AMIIBCgKCAQEAuzvbBG4X4FRSuiN3JLw043DZmZ5TXTMLqcxLHa4GJxiO
--VbqtEscdMlltwxYg22Kmd4AS4IdYUVXjZn/R4DoiZeVwJqIEBPBd+V9WyNroD1co
--d26aoEpTNBpjN6JDqw5KzQcj3VWDRAAMcEHfNWTQxQ5qh9vK/DXV4luvC6DmdaXS
--4XJOImMBQXO4lVAs/e3DYbY21IOVYcPgYf/0noroutzR9ontnTBElSf00YvmLxRm
--VvHa8cwEG3eSpZ9YQAyfDDLWBcJMwMWf5aQwPUzpnQNsTAa25ZW9IbjmK6igvwa7
--QzMZPXsXWfFkTSRnsVEPNa7wcXV5rlsCNAQx42aGZQIDAQABo4MBX+0wgwFf6DAd
--BgNVHQ4EFgQUkhE/rBGWx2Y3z4NaJPA6d68zjX8wHwYDVR0jBBgwFoAUtsLvn9Ep
--yw+JjExS1L1AtxG3cd0wNwYIKwYBBQUHAQEEKzApMCcGCCsGAQUFBzAChhtodHRw
--Oi8vdXJsLWZvci1haWEvUm9vdC5jZXIwLAYDVR0fBCUwIzAhoB+gHYYbaHR0cDov
--L3VybC1mb3ItY3JsL1Jvb3QuY3JsMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E
--BTADAQH/MIMBXxsGA1UdHgSDAV8RMIMBXwyggq+CMAmCB3QwLnRlc3QwCYIHdDEu
--dGVzdDAJggd0Mi50ZXN0MAmCB3QzLnRlc3QwCYIHdDQudGVzdDAJggd0NS50ZXN0
--MAmCB3Q2LnRlc3QwCYIHdDcudGVzdDAJggd0OC50ZXN0MAmCB3Q5LnRlc3QwCoII
--dDEwLnRlc3QwCoIIdDExLnRlc3QwCoIIdDEyLnRlc3QwCoIIdDEzLnRlc3QwCoII
--dDE0LnRlc3QwCoIIdDE1LnRlc3QwCoIIdDE2LnRlc3QwCoIIdDE3LnRlc3QwCoII
--dDE4LnRlc3QwCoIIdDE5LnRlc3QwCoIIdDIwLnRlc3QwCoIIdDIxLnRlc3QwCoII
--dDIyLnRlc3QwCoIIdDIzLnRlc3QwCoIIdDI0LnRlc3QwCoIIdDI1LnRlc3QwCoII
--dDI2LnRlc3QwCoIIdDI3LnRlc3QwCoIIdDI4LnRlc3QwCoIIdDI5LnRlc3QwCoII
--dDMwLnRlc3QwCoIIdDMxLnRlc3QwCoIIdDMyLnRlc3QwCoIIdDMzLnRlc3QwCoII
--dDM0LnRlc3QwCoIIdDM1LnRlc3QwCoIIdDM2LnRlc3QwCoIIdDM3LnRlc3QwCoII
--dDM4LnRlc3QwCoIIdDM5LnRlc3QwCoIIdDQwLnRlc3QwCoIIdDQxLnRlc3QwCoII
--dDQyLnRlc3QwCoIIdDQzLnRlc3QwCoIIdDQ0LnRlc3QwCoIIdDQ1LnRlc3QwCoII
--dDQ2LnRlc3QwCoIIdDQ3LnRlc3QwCoIIdDQ4LnRlc3QwCoIIdDQ5LnRlc3QwCoII
--dDUwLnRlc3QwCoIIdDUxLnRlc3QwCoIIdDUyLnRlc3QwCoIIdDUzLnRlc3QwCoII
--dDU0LnRlc3QwCoIIdDU1LnRlc3QwCoIIdDU2LnRlc3QwCoIIdDU3LnRlc3QwCoII
--dDU4LnRlc3QwCoIIdDU5LnRlc3QwCoIIdDYwLnRlc3QwCoIIdDYxLnRlc3QwCoII
--dDYyLnRlc3QwCoIIdDYzLnRlc3QwCoIIdDY0LnRlc3QwCoIIdDY1LnRlc3QwCoII
--dDY2LnRlc3QwCoIIdDY3LnRlc3QwCoIIdDY4LnRlc3QwCoIIdDY5LnRlc3QwCoII
--dDcwLnRlc3QwCoIIdDcxLnRlc3QwCoIIdDcyLnRlc3QwCoIIdDczLnRlc3QwCoII
--dDc0LnRlc3QwCoIIdDc1LnRlc3QwCoIIdDc2LnRlc3QwCoIIdDc3LnRlc3QwCoII
--dDc4LnRlc3QwCoIIdDc5LnRlc3QwCoIIdDgwLnRlc3QwCoIIdDgxLnRlc3QwCoII
--dDgyLnRlc3QwCoIIdDgzLnRlc3QwCoIIdDg0LnRlc3QwCoIIdDg1LnRlc3QwCoII
--dDg2LnRlc3QwCoIIdDg3LnRlc3QwCoIIdDg4LnRlc3QwCoIIdDg5LnRlc3QwCoII
--dDkwLnRlc3QwCoIIdDkxLnRlc3QwCoIIdDkyLnRlc3QwCoIIdDkzLnRlc3QwCoII
--dDk0LnRlc3QwCoIIdDk1LnRlc3QwCoIIdDk2LnRlc3QwCoIIdDk3LnRlc3QwCoII
--dDk4LnRlc3QwCoIIdDk5LnRlc3QwC4IJdDEwMC50ZXN0MAuCCXQxMDEudGVzdDAL
--ggl0MTAyLnRlc3QwC4IJdDEwMy50ZXN0MAuCCXQxMDQudGVzdDALggl0MTA1LnRl
--c3QwC4IJdDEwNi50ZXN0MAuCCXQxMDcudGVzdDALggl0MTA4LnRlc3QwC4IJdDEw
--OS50ZXN0MAuCCXQxMTAudGVzdDALggl0MTExLnRlc3QwC4IJdDExMi50ZXN0MAuC
--CXQxMTMudGVzdDALggl0MTE0LnRlc3QwC4IJdDExNS50ZXN0MAuCCXQxMTYudGVz
--dDALggl0MTE3LnRlc3QwC4IJdDExOC50ZXN0MAuCCXQxMTkudGVzdDALggl0MTIw
--LnRlc3QwC4IJdDEyMS50ZXN0MAuCCXQxMjIudGVzdDALggl0MTIzLnRlc3QwC4IJ
--dDEyNC50ZXN0MAuCCXQxMjUudGVzdDALggl0MTI2LnRlc3QwC4IJdDEyNy50ZXN0
--MAuCCXQxMjgudGVzdDALggl0MTI5LnRlc3QwC4IJdDEzMC50ZXN0MAuCCXQxMzEu
--dGVzdDALggl0MTMyLnRlc3QwC4IJdDEzMy50ZXN0MAuCCXQxMzQudGVzdDALggl0
--MTM1LnRlc3QwC4IJdDEzNi50ZXN0MAuCCXQxMzcudGVzdDALggl0MTM4LnRlc3Qw
--C4IJdDEzOS50ZXN0MAuCCXQxNDAudGVzdDALggl0MTQxLnRlc3QwC4IJdDE0Mi50
--ZXN0MAuCCXQxNDMudGVzdDALggl0MTQ0LnRlc3QwC4IJdDE0NS50ZXN0MAuCCXQx
--NDYudGVzdDALggl0MTQ3LnRlc3QwC4IJdDE0OC50ZXN0MAuCCXQxNDkudGVzdDAL
--ggl0MTUwLnRlc3QwC4IJdDE1MS50ZXN0MAuCCXQxNTIudGVzdDALggl0MTUzLnRl
--c3QwC4IJdDE1NC50ZXN0MAuCCXQxNTUudGVzdDALggl0MTU2LnRlc3QwC4IJdDE1
--Ny50ZXN0MAuCCXQxNTgudGVzdDALggl0MTU5LnRlc3QwC4IJdDE2MC50ZXN0MAuC
--CXQxNjEudGVzdDALggl0MTYyLnRlc3QwC4IJdDE2My50ZXN0MAuCCXQxNjQudGVz
--dDALggl0MTY1LnRlc3QwC4IJdDE2Ni50ZXN0MAuCCXQxNjcudGVzdDALggl0MTY4
--LnRlc3QwC4IJdDE2OS50ZXN0MAuCCXQxNzAudGVzdDALggl0MTcxLnRlc3QwC4IJ
--dDE3Mi50ZXN0MAuCCXQxNzMudGVzdDALggl0MTc0LnRlc3QwC4IJdDE3NS50ZXN0
--MAuCCXQxNzYudGVzdDALggl0MTc3LnRlc3QwC4IJdDE3OC50ZXN0MAuCCXQxNzku
--dGVzdDALggl0MTgwLnRlc3QwC4IJdDE4MS50ZXN0MAuCCXQxODIudGVzdDALggl0
--MTgzLnRlc3QwC4IJdDE4NC50ZXN0MAuCCXQxODUudGVzdDALggl0MTg2LnRlc3Qw
--C4IJdDE4Ny50ZXN0MAuCCXQxODgudGVzdDALggl0MTg5LnRlc3QwC4IJdDE5MC50
--ZXN0MAuCCXQxOTEudGVzdDALggl0MTkyLnRlc3QwC4IJdDE5My50ZXN0MAuCCXQx
--OTQudGVzdDALggl0MTk1LnRlc3QwC4IJdDE5Ni50ZXN0MAuCCXQxOTcudGVzdDAL
--ggl0MTk4LnRlc3QwC4IJdDE5OS50ZXN0MAuCCXQyMDAudGVzdDALggl0MjAxLnRl
--c3QwC4IJdDIwMi50ZXN0MAuCCXQyMDMudGVzdDALggl0MjA0LnRlc3QwC4IJdDIw
--NS50ZXN0MAuCCXQyMDYudGVzdDALggl0MjA3LnRlc3QwC4IJdDIwOC50ZXN0MAuC
--CXQyMDkudGVzdDALggl0MjEwLnRlc3QwC4IJdDIxMS50ZXN0MAuCCXQyMTIudGVz
--dDALggl0MjEzLnRlc3QwC4IJdDIxNC50ZXN0MAuCCXQyMTUudGVzdDALggl0MjE2
--LnRlc3QwC4IJdDIxNy50ZXN0MAuCCXQyMTgudGVzdDALggl0MjE5LnRlc3QwC4IJ
--dDIyMC50ZXN0MAuCCXQyMjEudGVzdDALggl0MjIyLnRlc3QwC4IJdDIyMy50ZXN0
--MAuCCXQyMjQudGVzdDALggl0MjI1LnRlc3QwC4IJdDIyNi50ZXN0MAuCCXQyMjcu
--dGVzdDALggl0MjI4LnRlc3QwC4IJdDIyOS50ZXN0MAuCCXQyMzAudGVzdDALggl0
--MjMxLnRlc3QwC4IJdDIzMi50ZXN0MAuCCXQyMzMudGVzdDALggl0MjM0LnRlc3Qw
--C4IJdDIzNS50ZXN0MAuCCXQyMzYudGVzdDALggl0MjM3LnRlc3QwC4IJdDIzOC50
--ZXN0MAuCCXQyMzkudGVzdDALggl0MjQwLnRlc3QwC4IJdDI0MS50ZXN0MAuCCXQy
--NDIudGVzdDALggl0MjQzLnRlc3QwC4IJdDI0NC50ZXN0MAuCCXQyNDUudGVzdDAL
--ggl0MjQ2LnRlc3QwC4IJdDI0Ny50ZXN0MAuCCXQyNDgudGVzdDALggl0MjQ5LnRl
--c3QwC4IJdDI1MC50ZXN0MAuCCXQyNTEudGVzdDALggl0MjUyLnRlc3QwC4IJdDI1
--My50ZXN0MAuCCXQyNTQudGVzdDALggl0MjU1LnRlc3QwC4IJdDI1Ni50ZXN0MAuC
--CXQyNTcudGVzdDALggl0MjU4LnRlc3QwC4IJdDI1OS50ZXN0MAuCCXQyNjAudGVz
--dDALggl0MjYxLnRlc3QwC4IJdDI2Mi50ZXN0MAuCCXQyNjMudGVzdDALggl0MjY0
--LnRlc3QwC4IJdDI2NS50ZXN0MAuCCXQyNjYudGVzdDALggl0MjY3LnRlc3QwC4IJ
--dDI2OC50ZXN0MAuCCXQyNjkudGVzdDALggl0MjcwLnRlc3QwC4IJdDI3MS50ZXN0
--MAuCCXQyNzIudGVzdDALggl0MjczLnRlc3QwC4IJdDI3NC50ZXN0MAuCCXQyNzUu
--dGVzdDALggl0Mjc2LnRlc3QwC4IJdDI3Ny50ZXN0MAuCCXQyNzgudGVzdDALggl0
--Mjc5LnRlc3QwC4IJdDI4MC50ZXN0MAuCCXQyODEudGVzdDALggl0MjgyLnRlc3Qw
--C4IJdDI4My50ZXN0MAuCCXQyODQudGVzdDALggl0Mjg1LnRlc3QwC4IJdDI4Ni50
--ZXN0MAuCCXQyODcudGVzdDALggl0Mjg4LnRlc3QwC4IJdDI4OS50ZXN0MAuCCXQy
--OTAudGVzdDALggl0MjkxLnRlc3QwC4IJdDI5Mi50ZXN0MAuCCXQyOTMudGVzdDAL
--ggl0Mjk0LnRlc3QwC4IJdDI5NS50ZXN0MAuCCXQyOTYudGVzdDALggl0Mjk3LnRl
--c3QwC4IJdDI5OC50ZXN0MAuCCXQyOTkudGVzdDALggl0MzAwLnRlc3QwC4IJdDMw
--MS50ZXN0MAuCCXQzMDIudGVzdDALggl0MzAzLnRlc3QwC4IJdDMwNC50ZXN0MAuC
--CXQzMDUudGVzdDALggl0MzA2LnRlc3QwC4IJdDMwNy50ZXN0MAuCCXQzMDgudGVz
--dDALggl0MzA5LnRlc3QwC4IJdDMxMC50ZXN0MAuCCXQzMTEudGVzdDALggl0MzEy
--LnRlc3QwC4IJdDMxMy50ZXN0MAuCCXQzMTQudGVzdDALggl0MzE1LnRlc3QwC4IJ
--dDMxNi50ZXN0MAuCCXQzMTcudGVzdDALggl0MzE4LnRlc3QwC4IJdDMxOS50ZXN0
--MAuCCXQzMjAudGVzdDALggl0MzIxLnRlc3QwC4IJdDMyMi50ZXN0MAuCCXQzMjMu
--dGVzdDALggl0MzI0LnRlc3QwC4IJdDMyNS50ZXN0MAuCCXQzMjYudGVzdDALggl0
--MzI3LnRlc3QwC4IJdDMyOC50ZXN0MAuCCXQzMjkudGVzdDALggl0MzMwLnRlc3Qw
--C4IJdDMzMS50ZXN0MAuCCXQzMzIudGVzdDALggl0MzMzLnRlc3QwC4IJdDMzNC50
--ZXN0MAuCCXQzMzUudGVzdDALggl0MzM2LnRlc3QwC4IJdDMzNy50ZXN0MAuCCXQz
--MzgudGVzdDALggl0MzM5LnRlc3QwC4IJdDM0MC50ZXN0MAuCCXQzNDEudGVzdDAL
--ggl0MzQyLnRlc3QwC4IJdDM0My50ZXN0MAuCCXQzNDQudGVzdDALggl0MzQ1LnRl
--c3QwC4IJdDM0Ni50ZXN0MAuCCXQzNDcudGVzdDALggl0MzQ4LnRlc3QwC4IJdDM0
--OS50ZXN0MAuCCXQzNTAudGVzdDALggl0MzUxLnRlc3QwC4IJdDM1Mi50ZXN0MAuC
--CXQzNTMudGVzdDALggl0MzU0LnRlc3QwC4IJdDM1NS50ZXN0MAuCCXQzNTYudGVz
--dDALggl0MzU3LnRlc3QwC4IJdDM1OC50ZXN0MAuCCXQzNTkudGVzdDALggl0MzYw
--LnRlc3QwC4IJdDM2MS50ZXN0MAuCCXQzNjIudGVzdDALggl0MzYzLnRlc3QwC4IJ
--dDM2NC50ZXN0MAuCCXQzNjUudGVzdDALggl0MzY2LnRlc3QwC4IJdDM2Ny50ZXN0
--MAuCCXQzNjgudGVzdDALggl0MzY5LnRlc3QwC4IJdDM3MC50ZXN0MAuCCXQzNzEu
--dGVzdDALggl0MzcyLnRlc3QwC4IJdDM3My50ZXN0MAuCCXQzNzQudGVzdDALggl0
--Mzc1LnRlc3QwC4IJdDM3Ni50ZXN0MAuCCXQzNzcudGVzdDALggl0Mzc4LnRlc3Qw
--C4IJdDM3OS50ZXN0MAuCCXQzODAudGVzdDALggl0MzgxLnRlc3QwC4IJdDM4Mi50
--ZXN0MAuCCXQzODMudGVzdDALggl0Mzg0LnRlc3QwC4IJdDM4NS50ZXN0MAuCCXQz
--ODYudGVzdDALggl0Mzg3LnRlc3QwC4IJdDM4OC50ZXN0MAuCCXQzODkudGVzdDAL
--ggl0MzkwLnRlc3QwC4IJdDM5MS50ZXN0MAuCCXQzOTIudGVzdDALggl0MzkzLnRl
--c3QwC4IJdDM5NC50ZXN0MAuCCXQzOTUudGVzdDALggl0Mzk2LnRlc3QwC4IJdDM5
--Ny50ZXN0MAuCCXQzOTgudGVzdDALggl0Mzk5LnRlc3QwC4IJdDQwMC50ZXN0MAuC
--CXQ0MDEudGVzdDALggl0NDAyLnRlc3QwC4IJdDQwMy50ZXN0MAuCCXQ0MDQudGVz
--dDALggl0NDA1LnRlc3QwC4IJdDQwNi50ZXN0MAuCCXQ0MDcudGVzdDALggl0NDA4
--LnRlc3QwC4IJdDQwOS50ZXN0MAuCCXQ0MTAudGVzdDALggl0NDExLnRlc3QwC4IJ
--dDQxMi50ZXN0MAuCCXQ0MTMudGVzdDALggl0NDE0LnRlc3QwC4IJdDQxNS50ZXN0
--MAuCCXQ0MTYudGVzdDALggl0NDE3LnRlc3QwC4IJdDQxOC50ZXN0MAuCCXQ0MTku
--dGVzdDALggl0NDIwLnRlc3QwC4IJdDQyMS50ZXN0MAuCCXQ0MjIudGVzdDALggl0
--NDIzLnRlc3QwC4IJdDQyNC50ZXN0MAuCCXQ0MjUudGVzdDALggl0NDI2LnRlc3Qw
--C4IJdDQyNy50ZXN0MAuCCXQ0MjgudGVzdDALggl0NDI5LnRlc3QwC4IJdDQzMC50
--ZXN0MAuCCXQ0MzEudGVzdDALggl0NDMyLnRlc3QwC4IJdDQzMy50ZXN0MAuCCXQ0
--MzQudGVzdDALggl0NDM1LnRlc3QwC4IJdDQzNi50ZXN0MAuCCXQ0MzcudGVzdDAL
--ggl0NDM4LnRlc3QwC4IJdDQzOS50ZXN0MAuCCXQ0NDAudGVzdDALggl0NDQxLnRl
--c3QwC4IJdDQ0Mi50ZXN0MAuCCXQ0NDMudGVzdDALggl0NDQ0LnRlc3QwC4IJdDQ0
--NS50ZXN0MAuCCXQ0NDYudGVzdDALggl0NDQ3LnRlc3QwC4IJdDQ0OC50ZXN0MAuC
--CXQ0NDkudGVzdDALggl0NDUwLnRlc3QwC4IJdDQ1MS50ZXN0MAuCCXQ0NTIudGVz
--dDALggl0NDUzLnRlc3QwC4IJdDQ1NC50ZXN0MAuCCXQ0NTUudGVzdDALggl0NDU2
--LnRlc3QwC4IJdDQ1Ny50ZXN0MAuCCXQ0NTgudGVzdDALggl0NDU5LnRlc3QwC4IJ
--dDQ2MC50ZXN0MAuCCXQ0NjEudGVzdDALggl0NDYyLnRlc3QwC4IJdDQ2My50ZXN0
--MAuCCXQ0NjQudGVzdDALggl0NDY1LnRlc3QwC4IJdDQ2Ni50ZXN0MAuCCXQ0Njcu
--dGVzdDALggl0NDY4LnRlc3QwC4IJdDQ2OS50ZXN0MAuCCXQ0NzAudGVzdDALggl0
--NDcxLnRlc3QwC4IJdDQ3Mi50ZXN0MAuCCXQ0NzMudGVzdDALggl0NDc0LnRlc3Qw
--C4IJdDQ3NS50ZXN0MAuCCXQ0NzYudGVzdDALggl0NDc3LnRlc3QwC4IJdDQ3OC50
--ZXN0MAuCCXQ0NzkudGVzdDALggl0NDgwLnRlc3QwC4IJdDQ4MS50ZXN0MAuCCXQ0
--ODIudGVzdDALggl0NDgzLnRlc3QwC4IJdDQ4NC50ZXN0MAuCCXQ0ODUudGVzdDAL
--ggl0NDg2LnRlc3QwC4IJdDQ4Ny50ZXN0MAuCCXQ0ODgudGVzdDALggl0NDg5LnRl
--c3QwC4IJdDQ5MC50ZXN0MAuCCXQ0OTEudGVzdDALggl0NDkyLnRlc3QwC4IJdDQ5
--My50ZXN0MAuCCXQ0OTQudGVzdDALggl0NDk1LnRlc3QwC4IJdDQ5Ni50ZXN0MAuC
--CXQ0OTcudGVzdDALggl0NDk4LnRlc3QwC4IJdDQ5OS50ZXN0MAuCCXQ1MDAudGVz
--dDALggl0NTAxLnRlc3QwC4IJdDUwMi50ZXN0MAuCCXQ1MDMudGVzdDALggl0NTA0
--LnRlc3QwC4IJdDUwNS50ZXN0MAuCCXQ1MDYudGVzdDALggl0NTA3LnRlc3QwC4IJ
--dDUwOC50ZXN0MAuCCXQ1MDkudGVzdDALggl0NTEwLnRlc3QwC4IJdDUxMS50ZXN0
--MAuCCXQ1MTIudGVzdDALggl0NTEzLnRlc3QwC4IJdDUxNC50ZXN0MAuCCXQ1MTUu
--dGVzdDALggl0NTE2LnRlc3QwC4IJdDUxNy50ZXN0MAuCCXQ1MTgudGVzdDALggl0
--NTE5LnRlc3QwC4IJdDUyMC50ZXN0MAuCCXQ1MjEudGVzdDALggl0NTIyLnRlc3Qw
--C4IJdDUyMy50ZXN0MAuCCXQ1MjQudGVzdDALggl0NTI1LnRlc3QwC4IJdDUyNi50
--ZXN0MAuCCXQ1MjcudGVzdDALggl0NTI4LnRlc3QwC4IJdDUyOS50ZXN0MAuCCXQ1
--MzAudGVzdDALggl0NTMxLnRlc3QwC4IJdDUzMi50ZXN0MAuCCXQ1MzMudGVzdDAL
--ggl0NTM0LnRlc3QwC4IJdDUzNS50ZXN0MAuCCXQ1MzYudGVzdDALggl0NTM3LnRl
--c3QwC4IJdDUzOC50ZXN0MAuCCXQ1MzkudGVzdDALggl0NTQwLnRlc3QwC4IJdDU0
--MS50ZXN0MAuCCXQ1NDIudGVzdDALggl0NTQzLnRlc3QwC4IJdDU0NC50ZXN0MAuC
--CXQ1NDUudGVzdDALggl0NTQ2LnRlc3QwC4IJdDU0Ny50ZXN0MAuCCXQ1NDgudGVz
--dDALggl0NTQ5LnRlc3QwC4IJdDU1MC50ZXN0MAuCCXQ1NTEudGVzdDALggl0NTUy
--LnRlc3QwC4IJdDU1My50ZXN0MAuCCXQ1NTQudGVzdDALggl0NTU1LnRlc3QwC4IJ
--dDU1Ni50ZXN0MAuCCXQ1NTcudGVzdDALggl0NTU4LnRlc3QwC4IJdDU1OS50ZXN0
--MAuCCXQ1NjAudGVzdDALggl0NTYxLnRlc3QwC4IJdDU2Mi50ZXN0MAuCCXQ1NjMu
--dGVzdDALggl0NTY0LnRlc3QwC4IJdDU2NS50ZXN0MAuCCXQ1NjYudGVzdDALggl0
--NTY3LnRlc3QwC4IJdDU2OC50ZXN0MAuCCXQ1NjkudGVzdDALggl0NTcwLnRlc3Qw
--C4IJdDU3MS50ZXN0MAuCCXQ1NzIudGVzdDALggl0NTczLnRlc3QwC4IJdDU3NC50
--ZXN0MAuCCXQ1NzUudGVzdDALggl0NTc2LnRlc3QwC4IJdDU3Ny50ZXN0MAuCCXQ1
--NzgudGVzdDALggl0NTc5LnRlc3QwC4IJdDU4MC50ZXN0MAuCCXQ1ODEudGVzdDAL
--ggl0NTgyLnRlc3QwC4IJdDU4My50ZXN0MAuCCXQ1ODQudGVzdDALggl0NTg1LnRl
--c3QwC4IJdDU4Ni50ZXN0MAuCCXQ1ODcudGVzdDALggl0NTg4LnRlc3QwC4IJdDU4
--OS50ZXN0MAuCCXQ1OTAudGVzdDALggl0NTkxLnRlc3QwC4IJdDU5Mi50ZXN0MAuC
--CXQ1OTMudGVzdDALggl0NTk0LnRlc3QwC4IJdDU5NS50ZXN0MAuCCXQ1OTYudGVz
--dDALggl0NTk3LnRlc3QwC4IJdDU5OC50ZXN0MAuCCXQ1OTkudGVzdDALggl0NjAw
--LnRlc3QwC4IJdDYwMS50ZXN0MAuCCXQ2MDIudGVzdDALggl0NjAzLnRlc3QwC4IJ
--dDYwNC50ZXN0MAuCCXQ2MDUudGVzdDALggl0NjA2LnRlc3QwC4IJdDYwNy50ZXN0
--MAuCCXQ2MDgudGVzdDALggl0NjA5LnRlc3QwC4IJdDYxMC50ZXN0MAuCCXQ2MTEu
--dGVzdDALggl0NjEyLnRlc3QwC4IJdDYxMy50ZXN0MAuCCXQ2MTQudGVzdDALggl0
--NjE1LnRlc3QwC4IJdDYxNi50ZXN0MAuCCXQ2MTcudGVzdDALggl0NjE4LnRlc3Qw
--C4IJdDYxOS50ZXN0MAuCCXQ2MjAudGVzdDALggl0NjIxLnRlc3QwC4IJdDYyMi50
--ZXN0MAuCCXQ2MjMudGVzdDALggl0NjI0LnRlc3QwC4IJdDYyNS50ZXN0MAuCCXQ2
--MjYudGVzdDALggl0NjI3LnRlc3QwC4IJdDYyOC50ZXN0MAuCCXQ2MjkudGVzdDAL
--ggl0NjMwLnRlc3QwC4IJdDYzMS50ZXN0MAuCCXQ2MzIudGVzdDALggl0NjMzLnRl
--c3QwC4IJdDYzNC50ZXN0MAuCCXQ2MzUudGVzdDALggl0NjM2LnRlc3QwC4IJdDYz
--Ny50ZXN0MAuCCXQ2MzgudGVzdDALggl0NjM5LnRlc3QwC4IJdDY0MC50ZXN0MAuC
--CXQ2NDEudGVzdDALggl0NjQyLnRlc3QwC4IJdDY0My50ZXN0MAuCCXQ2NDQudGVz
--dDALggl0NjQ1LnRlc3QwC4IJdDY0Ni50ZXN0MAuCCXQ2NDcudGVzdDALggl0NjQ4
--LnRlc3QwC4IJdDY0OS50ZXN0MAuCCXQ2NTAudGVzdDALggl0NjUxLnRlc3QwC4IJ
--dDY1Mi50ZXN0MAuCCXQ2NTMudGVzdDALggl0NjU0LnRlc3QwC4IJdDY1NS50ZXN0
--MAuCCXQ2NTYudGVzdDALggl0NjU3LnRlc3QwC4IJdDY1OC50ZXN0MAuCCXQ2NTku
--dGVzdDALggl0NjYwLnRlc3QwC4IJdDY2MS50ZXN0MAuCCXQ2NjIudGVzdDALggl0
--NjYzLnRlc3QwC4IJdDY2NC50ZXN0MAuCCXQ2NjUudGVzdDALggl0NjY2LnRlc3Qw
--C4IJdDY2Ny50ZXN0MAuCCXQ2NjgudGVzdDALggl0NjY5LnRlc3QwC4IJdDY3MC50
--ZXN0MAuCCXQ2NzEudGVzdDALggl0NjcyLnRlc3QwC4IJdDY3My50ZXN0MAuCCXQ2
--NzQudGVzdDALggl0Njc1LnRlc3QwC4IJdDY3Ni50ZXN0MAuCCXQ2NzcudGVzdDAL
--ggl0Njc4LnRlc3QwC4IJdDY3OS50ZXN0MAuCCXQ2ODAudGVzdDALggl0NjgxLnRl
--c3QwC4IJdDY4Mi50ZXN0MAuCCXQ2ODMudGVzdDALggl0Njg0LnRlc3QwC4IJdDY4
--NS50ZXN0MAuCCXQ2ODYudGVzdDALggl0Njg3LnRlc3QwC4IJdDY4OC50ZXN0MAuC
--CXQ2ODkudGVzdDALggl0NjkwLnRlc3QwC4IJdDY5MS50ZXN0MAuCCXQ2OTIudGVz
--dDALggl0NjkzLnRlc3QwC4IJdDY5NC50ZXN0MAuCCXQ2OTUudGVzdDALggl0Njk2
--LnRlc3QwC4IJdDY5Ny50ZXN0MAuCCXQ2OTgudGVzdDALggl0Njk5LnRlc3QwC4IJ
--dDcwMC50ZXN0MAuCCXQ3MDEudGVzdDALggl0NzAyLnRlc3QwC4IJdDcwMy50ZXN0
--MAuCCXQ3MDQudGVzdDALggl0NzA1LnRlc3QwC4IJdDcwNi50ZXN0MAuCCXQ3MDcu
--dGVzdDALggl0NzA4LnRlc3QwC4IJdDcwOS50ZXN0MAuCCXQ3MTAudGVzdDALggl0
--NzExLnRlc3QwC4IJdDcxMi50ZXN0MAuCCXQ3MTMudGVzdDALggl0NzE0LnRlc3Qw
--C4IJdDcxNS50ZXN0MAuCCXQ3MTYudGVzdDALggl0NzE3LnRlc3QwC4IJdDcxOC50
--ZXN0MAuCCXQ3MTkudGVzdDALggl0NzIwLnRlc3QwC4IJdDcyMS50ZXN0MAuCCXQ3
--MjIudGVzdDALggl0NzIzLnRlc3QwC4IJdDcyNC50ZXN0MAuCCXQ3MjUudGVzdDAL
--ggl0NzI2LnRlc3QwC4IJdDcyNy50ZXN0MAuCCXQ3MjgudGVzdDALggl0NzI5LnRl
--c3QwC4IJdDczMC50ZXN0MAuCCXQ3MzEudGVzdDALggl0NzMyLnRlc3QwC4IJdDcz
--My50ZXN0MAuCCXQ3MzQudGVzdDALggl0NzM1LnRlc3QwC4IJdDczNi50ZXN0MAuC
--CXQ3MzcudGVzdDALggl0NzM4LnRlc3QwC4IJdDczOS50ZXN0MAuCCXQ3NDAudGVz
--dDALggl0NzQxLnRlc3QwC4IJdDc0Mi50ZXN0MAuCCXQ3NDMudGVzdDALggl0NzQ0
--LnRlc3QwC4IJdDc0NS50ZXN0MAuCCXQ3NDYudGVzdDALggl0NzQ3LnRlc3QwC4IJ
--dDc0OC50ZXN0MAuCCXQ3NDkudGVzdDALggl0NzUwLnRlc3QwC4IJdDc1MS50ZXN0
--MAuCCXQ3NTIudGVzdDALggl0NzUzLnRlc3QwC4IJdDc1NC50ZXN0MAuCCXQ3NTUu
--dGVzdDALggl0NzU2LnRlc3QwC4IJdDc1Ny50ZXN0MAuCCXQ3NTgudGVzdDALggl0
--NzU5LnRlc3QwC4IJdDc2MC50ZXN0MAuCCXQ3NjEudGVzdDALggl0NzYyLnRlc3Qw
--C4IJdDc2My50ZXN0MAuCCXQ3NjQudGVzdDALggl0NzY1LnRlc3QwC4IJdDc2Ni50
--ZXN0MAuCCXQ3NjcudGVzdDALggl0NzY4LnRlc3QwC4IJdDc2OS50ZXN0MAuCCXQ3
--NzAudGVzdDALggl0NzcxLnRlc3QwC4IJdDc3Mi50ZXN0MAuCCXQ3NzMudGVzdDAL
--ggl0Nzc0LnRlc3QwC4IJdDc3NS50ZXN0MAuCCXQ3NzYudGVzdDALggl0Nzc3LnRl
--c3QwC4IJdDc3OC50ZXN0MAuCCXQ3NzkudGVzdDALggl0NzgwLnRlc3QwC4IJdDc4
--MS50ZXN0MAuCCXQ3ODIudGVzdDALggl0NzgzLnRlc3QwC4IJdDc4NC50ZXN0MAuC
--CXQ3ODUudGVzdDALggl0Nzg2LnRlc3QwC4IJdDc4Ny50ZXN0MAuCCXQ3ODgudGVz
--dDALggl0Nzg5LnRlc3QwC4IJdDc5MC50ZXN0MAuCCXQ3OTEudGVzdDALggl0Nzky
--LnRlc3QwC4IJdDc5My50ZXN0MAuCCXQ3OTQudGVzdDALggl0Nzk1LnRlc3QwC4IJ
--dDc5Ni50ZXN0MAuCCXQ3OTcudGVzdDALggl0Nzk4LnRlc3QwC4IJdDc5OS50ZXN0
--MAuCCXQ4MDAudGVzdDALggl0ODAxLnRlc3QwC4IJdDgwMi50ZXN0MAuCCXQ4MDMu
--dGVzdDALggl0ODA0LnRlc3QwC4IJdDgwNS50ZXN0MAuCCXQ4MDYudGVzdDALggl0
--ODA3LnRlc3QwC4IJdDgwOC50ZXN0MAuCCXQ4MDkudGVzdDALggl0ODEwLnRlc3Qw
--C4IJdDgxMS50ZXN0MAuCCXQ4MTIudGVzdDALggl0ODEzLnRlc3QwC4IJdDgxNC50
--ZXN0MAuCCXQ4MTUudGVzdDALggl0ODE2LnRlc3QwC4IJdDgxNy50ZXN0MAuCCXQ4
--MTgudGVzdDALggl0ODE5LnRlc3QwC4IJdDgyMC50ZXN0MAuCCXQ4MjEudGVzdDAL
--ggl0ODIyLnRlc3QwC4IJdDgyMy50ZXN0MAuCCXQ4MjQudGVzdDALggl0ODI1LnRl
--c3QwC4IJdDgyNi50ZXN0MAuCCXQ4MjcudGVzdDALggl0ODI4LnRlc3QwC4IJdDgy
--OS50ZXN0MAuCCXQ4MzAudGVzdDALggl0ODMxLnRlc3QwC4IJdDgzMi50ZXN0MAuC
--CXQ4MzMudGVzdDALggl0ODM0LnRlc3QwC4IJdDgzNS50ZXN0MAuCCXQ4MzYudGVz
--dDALggl0ODM3LnRlc3QwC4IJdDgzOC50ZXN0MAuCCXQ4MzkudGVzdDALggl0ODQw
--LnRlc3QwC4IJdDg0MS50ZXN0MAuCCXQ4NDIudGVzdDALggl0ODQzLnRlc3QwC4IJ
--dDg0NC50ZXN0MAuCCXQ4NDUudGVzdDALggl0ODQ2LnRlc3QwC4IJdDg0Ny50ZXN0
--MAuCCXQ4NDgudGVzdDALggl0ODQ5LnRlc3QwC4IJdDg1MC50ZXN0MAuCCXQ4NTEu
--dGVzdDALggl0ODUyLnRlc3QwC4IJdDg1My50ZXN0MAuCCXQ4NTQudGVzdDALggl0
--ODU1LnRlc3QwC4IJdDg1Ni50ZXN0MAuCCXQ4NTcudGVzdDALggl0ODU4LnRlc3Qw
--C4IJdDg1OS50ZXN0MAuCCXQ4NjAudGVzdDALggl0ODYxLnRlc3QwC4IJdDg2Mi50
--ZXN0MAuCCXQ4NjMudGVzdDALggl0ODY0LnRlc3QwC4IJdDg2NS50ZXN0MAuCCXQ4
--NjYudGVzdDALggl0ODY3LnRlc3QwC4IJdDg2OC50ZXN0MAuCCXQ4NjkudGVzdDAL
--ggl0ODcwLnRlc3QwC4IJdDg3MS50ZXN0MAuCCXQ4NzIudGVzdDALggl0ODczLnRl
--c3QwC4IJdDg3NC50ZXN0MAuCCXQ4NzUudGVzdDALggl0ODc2LnRlc3QwC4IJdDg3
--Ny50ZXN0MAuCCXQ4NzgudGVzdDALggl0ODc5LnRlc3QwC4IJdDg4MC50ZXN0MAuC
--CXQ4ODEudGVzdDALggl0ODgyLnRlc3QwC4IJdDg4My50ZXN0MAuCCXQ4ODQudGVz
--dDALggl0ODg1LnRlc3QwC4IJdDg4Ni50ZXN0MAuCCXQ4ODcudGVzdDALggl0ODg4
--LnRlc3QwC4IJdDg4OS50ZXN0MAuCCXQ4OTAudGVzdDALggl0ODkxLnRlc3QwC4IJ
--dDg5Mi50ZXN0MAuCCXQ4OTMudGVzdDALggl0ODk0LnRlc3QwC4IJdDg5NS50ZXN0
--MAuCCXQ4OTYudGVzdDALggl0ODk3LnRlc3QwC4IJdDg5OC50ZXN0MAuCCXQ4OTku
--dGVzdDALggl0OTAwLnRlc3QwC4IJdDkwMS50ZXN0MAuCCXQ5MDIudGVzdDALggl0
--OTAzLnRlc3QwC4IJdDkwNC50ZXN0MAuCCXQ5MDUudGVzdDALggl0OTA2LnRlc3Qw
--C4IJdDkwNy50ZXN0MAuCCXQ5MDgudGVzdDALggl0OTA5LnRlc3QwC4IJdDkxMC50
--ZXN0MAuCCXQ5MTEudGVzdDALggl0OTEyLnRlc3QwC4IJdDkxMy50ZXN0MAuCCXQ5
--MTQudGVzdDALggl0OTE1LnRlc3QwC4IJdDkxNi50ZXN0MAuCCXQ5MTcudGVzdDAL
--ggl0OTE4LnRlc3QwC4IJdDkxOS50ZXN0MAuCCXQ5MjAudGVzdDALggl0OTIxLnRl
--c3QwC4IJdDkyMi50ZXN0MAuCCXQ5MjMudGVzdDALggl0OTI0LnRlc3QwC4IJdDky
--NS50ZXN0MAuCCXQ5MjYudGVzdDALggl0OTI3LnRlc3QwC4IJdDkyOC50ZXN0MAuC
--CXQ5MjkudGVzdDALggl0OTMwLnRlc3QwC4IJdDkzMS50ZXN0MAuCCXQ5MzIudGVz
--dDALggl0OTMzLnRlc3QwC4IJdDkzNC50ZXN0MAuCCXQ5MzUudGVzdDALggl0OTM2
--LnRlc3QwC4IJdDkzNy50ZXN0MAuCCXQ5MzgudGVzdDALggl0OTM5LnRlc3QwC4IJ
--dDk0MC50ZXN0MAuCCXQ5NDEudGVzdDALggl0OTQyLnRlc3QwC4IJdDk0My50ZXN0
--MAuCCXQ5NDQudGVzdDALggl0OTQ1LnRlc3QwC4IJdDk0Ni50ZXN0MAuCCXQ5NDcu
--dGVzdDALggl0OTQ4LnRlc3QwC4IJdDk0OS50ZXN0MAuCCXQ5NTAudGVzdDALggl0
--OTUxLnRlc3QwC4IJdDk1Mi50ZXN0MAuCCXQ5NTMudGVzdDALggl0OTU0LnRlc3Qw
--C4IJdDk1NS50ZXN0MAuCCXQ5NTYudGVzdDALggl0OTU3LnRlc3QwC4IJdDk1OC50
--ZXN0MAuCCXQ5NTkudGVzdDALggl0OTYwLnRlc3QwC4IJdDk2MS50ZXN0MAuCCXQ5
--NjIudGVzdDALggl0OTYzLnRlc3QwC4IJdDk2NC50ZXN0MAuCCXQ5NjUudGVzdDAL
--ggl0OTY2LnRlc3QwC4IJdDk2Ny50ZXN0MAuCCXQ5NjgudGVzdDALggl0OTY5LnRl
--c3QwC4IJdDk3MC50ZXN0MAuCCXQ5NzEudGVzdDALggl0OTcyLnRlc3QwC4IJdDk3
--My50ZXN0MAuCCXQ5NzQudGVzdDALggl0OTc1LnRlc3QwC4IJdDk3Ni50ZXN0MAuC
--CXQ5NzcudGVzdDALggl0OTc4LnRlc3QwC4IJdDk3OS50ZXN0MAuCCXQ5ODAudGVz
--dDALggl0OTgxLnRlc3QwC4IJdDk4Mi50ZXN0MAuCCXQ5ODMudGVzdDALggl0OTg0
--LnRlc3QwC4IJdDk4NS50ZXN0MAuCCXQ5ODYudGVzdDALggl0OTg3LnRlc3QwC4IJ
--dDk4OC50ZXN0MAuCCXQ5ODkudGVzdDALggl0OTkwLnRlc3QwC4IJdDk5MS50ZXN0
--MAuCCXQ5OTIudGVzdDALggl0OTkzLnRlc3QwC4IJdDk5NC50ZXN0MAuCCXQ5OTUu
--dGVzdDALggl0OTk2LnRlc3QwC4IJdDk5Ny50ZXN0MAuCCXQ5OTgudGVzdDALggl0
--OTk5LnRlc3QwDIIKdDEwMDAudGVzdDAMggp0MTAwMS50ZXN0MAyCCnQxMDAyLnRl
--c3QwDIIKdDEwMDMudGVzdDAMggp0MTAwNC50ZXN0MAyCCnQxMDA1LnRlc3QwDIIK
--dDEwMDYudGVzdDAMggp0MTAwNy50ZXN0MAyCCnQxMDA4LnRlc3QwDIIKdDEwMDku
--dGVzdDAMggp0MTAxMC50ZXN0MAyCCnQxMDExLnRlc3QwDIIKdDEwMTIudGVzdDAM
--ggp0MTAxMy50ZXN0MAyCCnQxMDE0LnRlc3QwDIIKdDEwMTUudGVzdDAMggp0MTAx
--Ni50ZXN0MAyCCnQxMDE3LnRlc3QwDIIKdDEwMTgudGVzdDAMggp0MTAxOS50ZXN0
--MAyCCnQxMDIwLnRlc3QwDIIKdDEwMjEudGVzdDAMggp0MTAyMi50ZXN0MAyCCnQx
--MDIzLnRlc3QwDIIKdDEwMjQudGVzdDAKhwgKAAAA/////zAKhwgKAAAB/////zAK
--hwgKAAAC/////zAKhwgKAAAD/////zAKhwgKAAAE/////zAKhwgKAAAF/////zAK
--hwgKAAAG/////zAKhwgKAAAH/////zAKhwgKAAAI/////zAKhwgKAAAJ/////zAK
--hwgKAAAK/////zAKhwgKAAAL/////zAKhwgKAAAM/////zAKhwgKAAAN/////zAK
--hwgKAAAO/////zAKhwgKAAAP/////zAKhwgKAAAQ/////zAKhwgKAAAR/////zAK
--hwgKAAAS/////zAKhwgKAAAT/////zAKhwgKAAAU/////zAKhwgKAAAV/////zAK
--hwgKAAAW/////zAKhwgKAAAX/////zAKhwgKAAAY/////zAKhwgKAAAZ/////zAK
--hwgKAAAa/////zAKhwgKAAAb/////zAKhwgKAAAc/////zAKhwgKAAAd/////zAK
--hwgKAAAe/////zAKhwgKAAAf/////zAKhwgKAAAg/////zAKhwgKAAAh/////zAK
--hwgKAAAi/////zAKhwgKAAAj/////zAKhwgKAAAk/////zAKhwgKAAAl/////zAK
--hwgKAAAm/////zAKhwgKAAAn/////zAKhwgKAAAo/////zAKhwgKAAAp/////zAK
--hwgKAAAq/////zAKhwgKAAAr/////zAKhwgKAAAs/////zAKhwgKAAAt/////zAK
--hwgKAAAu/////zAKhwgKAAAv/////zAKhwgKAAAw/////zAKhwgKAAAx/////zAK
--hwgKAAAy/////zAKhwgKAAAz/////zAKhwgKAAA0/////zAKhwgKAAA1/////zAK
--hwgKAAA2/////zAKhwgKAAA3/////zAKhwgKAAA4/////zAKhwgKAAA5/////zAK
--hwgKAAA6/////zAKhwgKAAA7/////zAKhwgKAAA8/////zAKhwgKAAA9/////zAK
--hwgKAAA+/////zAKhwgKAAA//////zAKhwgKAABA/////zAKhwgKAABB/////zAK
--hwgKAABC/////zAKhwgKAABD/////zAKhwgKAABE/////zAKhwgKAABF/////zAK
--hwgKAABG/////zAKhwgKAABH/////zAKhwgKAABI/////zAKhwgKAABJ/////zAK
--hwgKAABK/////zAKhwgKAABL/////zAKhwgKAABM/////zAKhwgKAABN/////zAK
--hwgKAABO/////zAKhwgKAABP/////zAKhwgKAABQ/////zAKhwgKAABR/////zAK
--hwgKAABS/////zAKhwgKAABT/////zAKhwgKAABU/////zAKhwgKAABV/////zAK
--hwgKAABW/////zAKhwgKAABX/////zAKhwgKAABY/////zAKhwgKAABZ/////zAK
--hwgKAABa/////zAKhwgKAABb/////zAKhwgKAABc/////zAKhwgKAABd/////zAK
--hwgKAABe/////zAKhwgKAABf/////zAKhwgKAABg/////zAKhwgKAABh/////zAK
--hwgKAABi/////zAKhwgKAABj/////zAKhwgKAABk/////zAKhwgKAABl/////zAK
--hwgKAABm/////zAKhwgKAABn/////zAKhwgKAABo/////zAKhwgKAABp/////zAK
--hwgKAABq/////zAKhwgKAABr/////zAKhwgKAABs/////zAKhwgKAABt/////zAK
--hwgKAABu/////zAKhwgKAABv/////zAKhwgKAABw/////zAKhwgKAABx/////zAK
--hwgKAABy/////zAKhwgKAABz/////zAKhwgKAAB0/////zAKhwgKAAB1/////zAK
--hwgKAAB2/////zAKhwgKAAB3/////zAKhwgKAAB4/////zAKhwgKAAB5/////zAK
--hwgKAAB6/////zAKhwgKAAB7/////zAKhwgKAAB8/////zAKhwgKAAB9/////zAK
--hwgKAAB+/////zAKhwgKAAB//////zAKhwgKAACA/////zAKhwgKAACB/////zAK
--hwgKAACC/////zAKhwgKAACD/////zAKhwgKAACE/////zAKhwgKAACF/////zAK
--hwgKAACG/////zAKhwgKAACH/////zAKhwgKAACI/////zAKhwgKAACJ/////zAK
--hwgKAACK/////zAKhwgKAACL/////zAKhwgKAACM/////zAKhwgKAACN/////zAK
--hwgKAACO/////zAKhwgKAACP/////zAKhwgKAACQ/////zAKhwgKAACR/////zAK
--hwgKAACS/////zAKhwgKAACT/////zAKhwgKAACU/////zAKhwgKAACV/////zAK
--hwgKAACW/////zAKhwgKAACX/////zAKhwgKAACY/////zAKhwgKAACZ/////zAK
--hwgKAACa/////zAKhwgKAACb/////zAKhwgKAACc/////zAKhwgKAACd/////zAK
--hwgKAACe/////zAKhwgKAACf/////zAKhwgKAACg/////zAKhwgKAACh/////zAK
--hwgKAACi/////zAKhwgKAACj/////zAKhwgKAACk/////zAKhwgKAACl/////zAK
--hwgKAACm/////zAKhwgKAACn/////zAKhwgKAACo/////zAKhwgKAACp/////zAK
--hwgKAACq/////zAKhwgKAACr/////zAKhwgKAACs/////zAKhwgKAACt/////zAK
--hwgKAACu/////zAKhwgKAACv/////zAKhwgKAACw/////zAKhwgKAACx/////zAK
--hwgKAACy/////zAKhwgKAACz/////zAKhwgKAAC0/////zAKhwgKAAC1/////zAK
--hwgKAAC2/////zAKhwgKAAC3/////zAKhwgKAAC4/////zAKhwgKAAC5/////zAK
--hwgKAAC6/////zAKhwgKAAC7/////zAKhwgKAAC8/////zAKhwgKAAC9/////zAK
--hwgKAAC+/////zAKhwgKAAC//////zAKhwgKAADA/////zAKhwgKAADB/////zAK
--hwgKAADC/////zAKhwgKAADD/////zAKhwgKAADE/////zAKhwgKAADF/////zAK
--hwgKAADG/////zAKhwgKAADH/////zAKhwgKAADI/////zAKhwgKAADJ/////zAK
--hwgKAADK/////zAKhwgKAADL/////zAKhwgKAADM/////zAKhwgKAADN/////zAK
--hwgKAADO/////zAKhwgKAADP/////zAKhwgKAADQ/////zAKhwgKAADR/////zAK
--hwgKAADS/////zAKhwgKAADT/////zAKhwgKAADU/////zAKhwgKAADV/////zAK
--hwgKAADW/////zAKhwgKAADX/////zAKhwgKAADY/////zAKhwgKAADZ/////zAK
--hwgKAADa/////zAKhwgKAADb/////zAKhwgKAADc/////zAKhwgKAADd/////zAK
--hwgKAADe/////zAKhwgKAADf/////zAKhwgKAADg/////zAKhwgKAADh/////zAK
--hwgKAADi/////zAKhwgKAADj/////zAKhwgKAADk/////zAKhwgKAADl/////zAK
--hwgKAADm/////zAKhwgKAADn/////zAKhwgKAADo/////zAKhwgKAADp/////zAK
--hwgKAADq/////zAKhwgKAADr/////zAKhwgKAADs/////zAKhwgKAADt/////zAK
--hwgKAADu/////zAKhwgKAADv/////zAKhwgKAADw/////zAKhwgKAADx/////zAK
--hwgKAADy/////zAKhwgKAADz/////zAKhwgKAAD0/////zAKhwgKAAD1/////zAK
--hwgKAAD2/////zAKhwgKAAD3/////zAKhwgKAAD4/////zAKhwgKAAD5/////zAK
--hwgKAAD6/////zAKhwgKAAD7/////zAKhwgKAAD8/////zAKhwgKAAD9/////zAK
--hwgKAAD+/////zAKhwgKAAD//////zAKhwgKAAEA/////zAKhwgKAAEB/////zAK
--hwgKAAEC/////zAKhwgKAAED/////zAKhwgKAAEE/////zAKhwgKAAEF/////zAK
--hwgKAAEG/////zAKhwgKAAEH/////zAKhwgKAAEI/////zAKhwgKAAEJ/////zAK
--hwgKAAEK/////zAKhwgKAAEL/////zAKhwgKAAEM/////zAKhwgKAAEN/////zAK
--hwgKAAEO/////zAKhwgKAAEP/////zAKhwgKAAEQ/////zAKhwgKAAER/////zAK
--hwgKAAES/////zAKhwgKAAET/////zAKhwgKAAEU/////zAKhwgKAAEV/////zAK
--hwgKAAEW/////zAKhwgKAAEX/////zAKhwgKAAEY/////zAKhwgKAAEZ/////zAK
--hwgKAAEa/////zAKhwgKAAEb/////zAKhwgKAAEc/////zAKhwgKAAEd/////zAK
--hwgKAAEe/////zAKhwgKAAEf/////zAKhwgKAAEg/////zAKhwgKAAEh/////zAK
--hwgKAAEi/////zAKhwgKAAEj/////zAKhwgKAAEk/////zAKhwgKAAEl/////zAK
--hwgKAAEm/////zAKhwgKAAEn/////zAKhwgKAAEo/////zAKhwgKAAEp/////zAK
--hwgKAAEq/////zAKhwgKAAEr/////zAKhwgKAAEs/////zAKhwgKAAEt/////zAK
--hwgKAAEu/////zAKhwgKAAEv/////zAKhwgKAAEw/////zAKhwgKAAEx/////zAK
--hwgKAAEy/////zAKhwgKAAEz/////zAKhwgKAAE0/////zAKhwgKAAE1/////zAK
--hwgKAAE2/////zAKhwgKAAE3/////zAKhwgKAAE4/////zAKhwgKAAE5/////zAK
--hwgKAAE6/////zAKhwgKAAE7/////zAKhwgKAAE8/////zAKhwgKAAE9/////zAK
--hwgKAAE+/////zAKhwgKAAE//////zAKhwgKAAFA/////zAKhwgKAAFB/////zAK
--hwgKAAFC/////zAKhwgKAAFD/////zAKhwgKAAFE/////zAKhwgKAAFF/////zAK
--hwgKAAFG/////zAKhwgKAAFH/////zAKhwgKAAFI/////zAKhwgKAAFJ/////zAK
--hwgKAAFK/////zAKhwgKAAFL/////zAKhwgKAAFM/////zAKhwgKAAFN/////zAK
--hwgKAAFO/////zAKhwgKAAFP/////zAKhwgKAAFQ/////zAKhwgKAAFR/////zAK
--hwgKAAFS/////zAKhwgKAAFT/////zAKhwgKAAFU/////zAKhwgKAAFV/////zAK
--hwgKAAFW/////zAKhwgKAAFX/////zAKhwgKAAFY/////zAKhwgKAAFZ/////zAK
--hwgKAAFa/////zAKhwgKAAFb/////zAKhwgKAAFc/////zAKhwgKAAFd/////zAK
--hwgKAAFe/////zAKhwgKAAFf/////zAKhwgKAAFg/////zAKhwgKAAFh/////zAK
--hwgKAAFi/////zAKhwgKAAFj/////zAKhwgKAAFk/////zAKhwgKAAFl/////zAK
--hwgKAAFm/////zAKhwgKAAFn/////zAKhwgKAAFo/////zAKhwgKAAFp/////zAK
--hwgKAAFq/////zAKhwgKAAFr/////zAKhwgKAAFs/////zAKhwgKAAFt/////zAK
--hwgKAAFu/////zAKhwgKAAFv/////zAKhwgKAAFw/////zAKhwgKAAFx/////zAK
--hwgKAAFy/////zAKhwgKAAFz/////zAKhwgKAAF0/////zAKhwgKAAF1/////zAK
--hwgKAAF2/////zAKhwgKAAF3/////zAKhwgKAAF4/////zAKhwgKAAF5/////zAK
--hwgKAAF6/////zAKhwgKAAF7/////zAKhwgKAAF8/////zAKhwgKAAF9/////zAK
--hwgKAAF+/////zAKhwgKAAF//////zAKhwgKAAGA/////zAKhwgKAAGB/////zAK
--hwgKAAGC/////zAKhwgKAAGD/////zAKhwgKAAGE/////zAKhwgKAAGF/////zAK
--hwgKAAGG/////zAKhwgKAAGH/////zAKhwgKAAGI/////zAKhwgKAAGJ/////zAK
--hwgKAAGK/////zAKhwgKAAGL/////zAKhwgKAAGM/////zAKhwgKAAGN/////zAK
--hwgKAAGO/////zAKhwgKAAGP/////zAKhwgKAAGQ/////zAKhwgKAAGR/////zAK
--hwgKAAGS/////zAKhwgKAAGT/////zAKhwgKAAGU/////zAKhwgKAAGV/////zAK
--hwgKAAGW/////zAKhwgKAAGX/////zAKhwgKAAGY/////zAKhwgKAAGZ/////zAK
--hwgKAAGa/////zAKhwgKAAGb/////zAKhwgKAAGc/////zAKhwgKAAGd/////zAK
--hwgKAAGe/////zAKhwgKAAGf/////zAKhwgKAAGg/////zAKhwgKAAGh/////zAK
--hwgKAAGi/////zAKhwgKAAGj/////zAKhwgKAAGk/////zAKhwgKAAGl/////zAK
--hwgKAAGm/////zAKhwgKAAGn/////zAKhwgKAAGo/////zAKhwgKAAGp/////zAK
--hwgKAAGq/////zAKhwgKAAGr/////zAKhwgKAAGs/////zAKhwgKAAGt/////zAK
--hwgKAAGu/////zAKhwgKAAGv/////zAKhwgKAAGw/////zAKhwgKAAGx/////zAK
--hwgKAAGy/////zAKhwgKAAGz/////zAKhwgKAAG0/////zAKhwgKAAG1/////zAK
--hwgKAAG2/////zAKhwgKAAG3/////zAKhwgKAAG4/////zAKhwgKAAG5/////zAK
--hwgKAAG6/////zAKhwgKAAG7/////zAKhwgKAAG8/////zAKhwgKAAG9/////zAK
--hwgKAAG+/////zAKhwgKAAG//////zAKhwgKAAHA/////zAKhwgKAAHB/////zAK
--hwgKAAHC/////zAKhwgKAAHD/////zAKhwgKAAHE/////zAKhwgKAAHF/////zAK
--hwgKAAHG/////zAKhwgKAAHH/////zAKhwgKAAHI/////zAKhwgKAAHJ/////zAK
--hwgKAAHK/////zAKhwgKAAHL/////zAKhwgKAAHM/////zAKhwgKAAHN/////zAK
--hwgKAAHO/////zAKhwgKAAHP/////zAKhwgKAAHQ/////zAKhwgKAAHR/////zAK
--hwgKAAHS/////zAKhwgKAAHT/////zAKhwgKAAHU/////zAKhwgKAAHV/////zAK
--hwgKAAHW/////zAKhwgKAAHX/////zAKhwgKAAHY/////zAKhwgKAAHZ/////zAK
--hwgKAAHa/////zAKhwgKAAHb/////zAKhwgKAAHc/////zAKhwgKAAHd/////zAK
--hwgKAAHe/////zAKhwgKAAHf/////zAKhwgKAAHg/////zAKhwgKAAHh/////zAK
--hwgKAAHi/////zAKhwgKAAHj/////zAKhwgKAAHk/////zAKhwgKAAHl/////zAK
--hwgKAAHm/////zAKhwgKAAHn/////zAKhwgKAAHo/////zAKhwgKAAHp/////zAK
--hwgKAAHq/////zAKhwgKAAHr/////zAKhwgKAAHs/////zAKhwgKAAHt/////zAK
--hwgKAAHu/////zAKhwgKAAHv/////zAKhwgKAAHw/////zAKhwgKAAHx/////zAK
--hwgKAAHy/////zAKhwgKAAHz/////zAKhwgKAAH0/////zAKhwgKAAH1/////zAK
--hwgKAAH2/////zAKhwgKAAH3/////zAKhwgKAAH4/////zAKhwgKAAH5/////zAK
--hwgKAAH6/////zAKhwgKAAH7/////zAKhwgKAAH8/////zAKhwgKAAH9/////zAK
--hwgKAAH+/////zAKhwgKAAH//////zAKhwgKAAIA/////zAKhwgKAAIB/////zAK
--hwgKAAIC/////zAKhwgKAAID/////zAKhwgKAAIE/////zAKhwgKAAIF/////zAK
--hwgKAAIG/////zAKhwgKAAIH/////zAKhwgKAAII/////zAKhwgKAAIJ/////zAK
--hwgKAAIK/////zAKhwgKAAIL/////zAKhwgKAAIM/////zAKhwgKAAIN/////zAK
--hwgKAAIO/////zAKhwgKAAIP/////zAKhwgKAAIQ/////zAKhwgKAAIR/////zAK
--hwgKAAIS/////zAKhwgKAAIT/////zAKhwgKAAIU/////zAKhwgKAAIV/////zAK
--hwgKAAIW/////zAKhwgKAAIX/////zAKhwgKAAIY/////zAKhwgKAAIZ/////zAK
--hwgKAAIa/////zAKhwgKAAIb/////zAKhwgKAAIc/////zAKhwgKAAId/////zAK
--hwgKAAIe/////zAKhwgKAAIf/////zAKhwgKAAIg/////zAKhwgKAAIh/////zAK
--hwgKAAIi/////zAKhwgKAAIj/////zAKhwgKAAIk/////zAKhwgKAAIl/////zAK
--hwgKAAIm/////zAKhwgKAAIn/////zAKhwgKAAIo/////zAKhwgKAAIp/////zAK
--hwgKAAIq/////zAKhwgKAAIr/////zAKhwgKAAIs/////zAKhwgKAAIt/////zAK
--hwgKAAIu/////zAKhwgKAAIv/////zAKhwgKAAIw/////zAKhwgKAAIx/////zAK
--hwgKAAIy/////zAKhwgKAAIz/////zAKhwgKAAI0/////zAKhwgKAAI1/////zAK
--hwgKAAI2/////zAKhwgKAAI3/////zAKhwgKAAI4/////zAKhwgKAAI5/////zAK
--hwgKAAI6/////zAKhwgKAAI7/////zAKhwgKAAI8/////zAKhwgKAAI9/////zAK
--hwgKAAI+/////zAKhwgKAAI//////zAKhwgKAAJA/////zAKhwgKAAJB/////zAK
--hwgKAAJC/////zAKhwgKAAJD/////zAKhwgKAAJE/////zAKhwgKAAJF/////zAK
--hwgKAAJG/////zAKhwgKAAJH/////zAKhwgKAAJI/////zAKhwgKAAJJ/////zAK
--hwgKAAJK/////zAKhwgKAAJL/////zAKhwgKAAJM/////zAKhwgKAAJN/////zAK
--hwgKAAJO/////zAKhwgKAAJP/////zAKhwgKAAJQ/////zAKhwgKAAJR/////zAK
--hwgKAAJS/////zAKhwgKAAJT/////zAKhwgKAAJU/////zAKhwgKAAJV/////zAK
--hwgKAAJW/////zAKhwgKAAJX/////zAKhwgKAAJY/////zAKhwgKAAJZ/////zAK
--hwgKAAJa/////zAKhwgKAAJb/////zAKhwgKAAJc/////zAKhwgKAAJd/////zAK
--hwgKAAJe/////zAKhwgKAAJf/////zAKhwgKAAJg/////zAKhwgKAAJh/////zAK
--hwgKAAJi/////zAKhwgKAAJj/////zAKhwgKAAJk/////zAKhwgKAAJl/////zAK
--hwgKAAJm/////zAKhwgKAAJn/////zAKhwgKAAJo/////zAKhwgKAAJp/////zAK
--hwgKAAJq/////zAKhwgKAAJr/////zAKhwgKAAJs/////zAKhwgKAAJt/////zAK
--hwgKAAJu/////zAKhwgKAAJv/////zAKhwgKAAJw/////zAKhwgKAAJx/////zAK
--hwgKAAJy/////zAKhwgKAAJz/////zAKhwgKAAJ0/////zAKhwgKAAJ1/////zAK
--hwgKAAJ2/////zAKhwgKAAJ3/////zAKhwgKAAJ4/////zAKhwgKAAJ5/////zAK
--hwgKAAJ6/////zAKhwgKAAJ7/////zAKhwgKAAJ8/////zAKhwgKAAJ9/////zAK
--hwgKAAJ+/////zAKhwgKAAJ//////zAKhwgKAAKA/////zAKhwgKAAKB/////zAK
--hwgKAAKC/////zAKhwgKAAKD/////zAKhwgKAAKE/////zAKhwgKAAKF/////zAK
--hwgKAAKG/////zAKhwgKAAKH/////zAKhwgKAAKI/////zAKhwgKAAKJ/////zAK
--hwgKAAKK/////zAKhwgKAAKL/////zAKhwgKAAKM/////zAKhwgKAAKN/////zAK
--hwgKAAKO/////zAKhwgKAAKP/////zAKhwgKAAKQ/////zAKhwgKAAKR/////zAK
--hwgKAAKS/////zAKhwgKAAKT/////zAKhwgKAAKU/////zAKhwgKAAKV/////zAK
--hwgKAAKW/////zAKhwgKAAKX/////zAKhwgKAAKY/////zAKhwgKAAKZ/////zAK
--hwgKAAKa/////zAKhwgKAAKb/////zAKhwgKAAKc/////zAKhwgKAAKd/////zAK
--hwgKAAKe/////zAKhwgKAAKf/////zAKhwgKAAKg/////zAKhwgKAAKh/////zAK
--hwgKAAKi/////zAKhwgKAAKj/////zAKhwgKAAKk/////zAKhwgKAAKl/////zAK
--hwgKAAKm/////zAKhwgKAAKn/////zAKhwgKAAKo/////zAKhwgKAAKp/////zAK
--hwgKAAKq/////zAKhwgKAAKr/////zAKhwgKAAKs/////zAKhwgKAAKt/////zAK
--hwgKAAKu/////zAKhwgKAAKv/////zAKhwgKAAKw/////zAKhwgKAAKx/////zAK
--hwgKAAKy/////zAKhwgKAAKz/////zAKhwgKAAK0/////zAKhwgKAAK1/////zAK
--hwgKAAK2/////zAKhwgKAAK3/////zAKhwgKAAK4/////zAKhwgKAAK5/////zAK
--hwgKAAK6/////zAKhwgKAAK7/////zAKhwgKAAK8/////zAKhwgKAAK9/////zAK
--hwgKAAK+/////zAKhwgKAAK//////zAKhwgKAALA/////zAKhwgKAALB/////zAK
--hwgKAALC/////zAKhwgKAALD/////zAKhwgKAALE/////zAKhwgKAALF/////zAK
--hwgKAALG/////zAKhwgKAALH/////zAKhwgKAALI/////zAKhwgKAALJ/////zAK
--hwgKAALK/////zAKhwgKAALL/////zAKhwgKAALM/////zAKhwgKAALN/////zAK
--hwgKAALO/////zAKhwgKAALP/////zAKhwgKAALQ/////zAKhwgKAALR/////zAK
--hwgKAALS/////zAKhwgKAALT/////zAKhwgKAALU/////zAKhwgKAALV/////zAK
--hwgKAALW/////zAKhwgKAALX/////zAKhwgKAALY/////zAKhwgKAALZ/////zAK
--hwgKAALa/////zAKhwgKAALb/////zAKhwgKAALc/////zAKhwgKAALd/////zAK
--hwgKAALe/////zAKhwgKAALf/////zAKhwgKAALg/////zAKhwgKAALh/////zAK
--hwgKAALi/////zAKhwgKAALj/////zAKhwgKAALk/////zAKhwgKAALl/////zAK
--hwgKAALm/////zAKhwgKAALn/////zAKhwgKAALo/////zAKhwgKAALp/////zAK
--hwgKAALq/////zAKhwgKAALr/////zAKhwgKAALs/////zAKhwgKAALt/////zAK
--hwgKAALu/////zAKhwgKAALv/////zAKhwgKAALw/////zAKhwgKAALx/////zAK
--hwgKAALy/////zAKhwgKAALz/////zAKhwgKAAL0/////zAKhwgKAAL1/////zAK
--hwgKAAL2/////zAKhwgKAAL3/////zAKhwgKAAL4/////zAKhwgKAAL5/////zAK
--hwgKAAL6/////zAKhwgKAAL7/////zAKhwgKAAL8/////zAKhwgKAAL9/////zAK
--hwgKAAL+/////zAKhwgKAAL//////zAKhwgKAAMA/////zAKhwgKAAMB/////zAK
--hwgKAAMC/////zAKhwgKAAMD/////zAKhwgKAAME/////zAKhwgKAAMF/////zAK
--hwgKAAMG/////zAKhwgKAAMH/////zAKhwgKAAMI/////zAKhwgKAAMJ/////zAK
--hwgKAAMK/////zAKhwgKAAML/////zAKhwgKAAMM/////zAKhwgKAAMN/////zAK
--hwgKAAMO/////zAKhwgKAAMP/////zAKhwgKAAMQ/////zAKhwgKAAMR/////zAK
--hwgKAAMS/////zAKhwgKAAMT/////zAKhwgKAAMU/////zAKhwgKAAMV/////zAK
--hwgKAAMW/////zAKhwgKAAMX/////zAKhwgKAAMY/////zAKhwgKAAMZ/////zAK
--hwgKAAMa/////zAKhwgKAAMb/////zAKhwgKAAMc/////zAKhwgKAAMd/////zAK
--hwgKAAMe/////zAKhwgKAAMf/////zAKhwgKAAMg/////zAKhwgKAAMh/////zAK
--hwgKAAMi/////zAKhwgKAAMj/////zAKhwgKAAMk/////zAKhwgKAAMl/////zAK
--hwgKAAMm/////zAKhwgKAAMn/////zAKhwgKAAMo/////zAKhwgKAAMp/////zAK
--hwgKAAMq/////zAKhwgKAAMr/////zAKhwgKAAMs/////zAKhwgKAAMt/////zAK
--hwgKAAMu/////zAKhwgKAAMv/////zAKhwgKAAMw/////zAKhwgKAAMx/////zAK
--hwgKAAMy/////zAKhwgKAAMz/////zAKhwgKAAM0/////zAKhwgKAAM1/////zAK
--hwgKAAM2/////zAKhwgKAAM3/////zAKhwgKAAM4/////zAKhwgKAAM5/////zAK
--hwgKAAM6/////zAKhwgKAAM7/////zAKhwgKAAM8/////zAKhwgKAAM9/////zAK
--hwgKAAM+/////zAKhwgKAAM//////zAKhwgKAANA/////zAKhwgKAANB/////zAK
--hwgKAANC/////zAKhwgKAAND/////zAKhwgKAANE/////zAKhwgKAANF/////zAK
--hwgKAANG/////zAKhwgKAANH/////zAKhwgKAANI/////zAKhwgKAANJ/////zAK
--hwgKAANK/////zAKhwgKAANL/////zAKhwgKAANM/////zAKhwgKAANN/////zAK
--hwgKAANO/////zAKhwgKAANP/////zAKhwgKAANQ/////zAKhwgKAANR/////zAK
--hwgKAANS/////zAKhwgKAANT/////zAKhwgKAANU/////zAKhwgKAANV/////zAK
--hwgKAANW/////zAKhwgKAANX/////zAKhwgKAANY/////zAKhwgKAANZ/////zAK
--hwgKAANa/////zAKhwgKAANb/////zAKhwgKAANc/////zAKhwgKAANd/////zAK
--hwgKAANe/////zAKhwgKAANf/////zAKhwgKAANg/////zAKhwgKAANh/////zAK
--hwgKAANi/////zAKhwgKAANj/////zAKhwgKAANk/////zAKhwgKAANl/////zAK
--hwgKAANm/////zAKhwgKAANn/////zAKhwgKAANo/////zAKhwgKAANp/////zAK
--hwgKAANq/////zAKhwgKAANr/////zAKhwgKAANs/////zAKhwgKAANt/////zAK
--hwgKAANu/////zAKhwgKAANv/////zAKhwgKAANw/////zAKhwgKAANx/////zAK
--hwgKAANy/////zAKhwgKAANz/////zAKhwgKAAN0/////zAKhwgKAAN1/////zAK
--hwgKAAN2/////zAKhwgKAAN3/////zAKhwgKAAN4/////zAKhwgKAAN5/////zAK
--hwgKAAN6/////zAKhwgKAAN7/////zAKhwgKAAN8/////zAKhwgKAAN9/////zAK
--hwgKAAN+/////zAKhwgKAAN//////zAKhwgKAAOA/////zAKhwgKAAOB/////zAK
--hwgKAAOC/////zAKhwgKAAOD/////zAKhwgKAAOE/////zAKhwgKAAOF/////zAK
--hwgKAAOG/////zAKhwgKAAOH/////zAKhwgKAAOI/////zAKhwgKAAOJ/////zAK
--hwgKAAOK/////zAKhwgKAAOL/////zAKhwgKAAOM/////zAKhwgKAAON/////zAK
--hwgKAAOO/////zAKhwgKAAOP/////zAKhwgKAAOQ/////zAKhwgKAAOR/////zAK
--hwgKAAOS/////zAKhwgKAAOT/////zAKhwgKAAOU/////zAKhwgKAAOV/////zAK
--hwgKAAOW/////zAKhwgKAAOX/////zAKhwgKAAOY/////zAKhwgKAAOZ/////zAK
--hwgKAAOa/////zAKhwgKAAOb/////zAKhwgKAAOc/////zAKhwgKAAOd/////zAK
--hwgKAAOe/////zAKhwgKAAOf/////zAKhwgKAAOg/////zAKhwgKAAOh/////zAK
--hwgKAAOi/////zAKhwgKAAOj/////zAKhwgKAAOk/////zAKhwgKAAOl/////zAK
--hwgKAAOm/////zAKhwgKAAOn/////zAKhwgKAAOo/////zAKhwgKAAOp/////zAK
--hwgKAAOq/////zAKhwgKAAOr/////zAKhwgKAAOs/////zAKhwgKAAOt/////zAK
--hwgKAAOu/////zAKhwgKAAOv/////zAKhwgKAAOw/////zAKhwgKAAOx/////zAK
--hwgKAAOy/////zAKhwgKAAOz/////zAKhwgKAAO0/////zAKhwgKAAO1/////zAK
--hwgKAAO2/////zAKhwgKAAO3/////zAKhwgKAAO4/////zAKhwgKAAO5/////zAK
--hwgKAAO6/////zAKhwgKAAO7/////zAKhwgKAAO8/////zAKhwgKAAO9/////zAK
--hwgKAAO+/////zAKhwgKAAO//////zAKhwgKAAPA/////zAKhwgKAAPB/////zAK
--hwgKAAPC/////zAKhwgKAAPD/////zAKhwgKAAPE/////zAKhwgKAAPF/////zAK
--hwgKAAPG/////zAKhwgKAAPH/////zAKhwgKAAPI/////zAKhwgKAAPJ/////zAK
--hwgKAAPK/////zAKhwgKAAPL/////zAKhwgKAAPM/////zAKhwgKAAPN/////zAK
--hwgKAAPO/////zAKhwgKAAPP/////zAKhwgKAAPQ/////zAKhwgKAAPR/////zAK
--hwgKAAPS/////zAKhwgKAAPT/////zAKhwgKAAPU/////zAKhwgKAAPV/////zAK
--hwgKAAPW/////zAKhwgKAAPX/////zAKhwgKAAPY/////zAKhwgKAAPZ/////zAK
--hwgKAAPa/////zAKhwgKAAPb/////zAKhwgKAAPc/////zAKhwgKAAPd/////zAK
--hwgKAAPe/////zAKhwgKAAPf/////zAKhwgKAAPg/////zAKhwgKAAPh/////zAK
--hwgKAAPi/////zAKhwgKAAPj/////zAKhwgKAAPk/////zAKhwgKAAPl/////zAK
--hwgKAAPm/////zAKhwgKAAPn/////zAKhwgKAAPo/////zAKhwgKAAPp/////zAK
--hwgKAAPq/////zAKhwgKAAPr/////zAKhwgKAAPs/////zAKhwgKAAPt/////zAK
--hwgKAAPu/////zAKhwgKAAPv/////zAKhwgKAAPw/////zAKhwgKAAPx/////zAK
--hwgKAAPy/////zAKhwgKAAPz/////zAKhwgKAAP0/////zAKhwgKAAP1/////zAK
--hwgKAAP2/////zAKhwgKAAP3/////zAKhwgKAAP4/////zAKhwgKAAP5/////zAK
--hwgKAAP6/////zAKhwgKAAP7/////zAKhwgKAAP8/////zAKhwgKAAP9/////zAK
--hwgKAAP+/////zAKhwgKAAP//////zAKhwgKAAQA/////zAPhg1odHRwOi8vdGVz
--dC8wMA+GDWh0dHA6Ly90ZXN0LzEwD4YNaHR0cDovL3Rlc3QvMjAPhg1odHRwOi8v
--dGVzdC8zMA+GDWh0dHA6Ly90ZXN0LzQwD4YNaHR0cDovL3Rlc3QvNTAPhg1odHRw
--Oi8vdGVzdC82MA+GDWh0dHA6Ly90ZXN0LzcwD4YNaHR0cDovL3Rlc3QvODAPhg1o
--dHRwOi8vdGVzdC85MBCGDmh0dHA6Ly90ZXN0LzEwMBCGDmh0dHA6Ly90ZXN0LzEx
--MBCGDmh0dHA6Ly90ZXN0LzEyMBCGDmh0dHA6Ly90ZXN0LzEzMBCGDmh0dHA6Ly90
--ZXN0LzE0MBCGDmh0dHA6Ly90ZXN0LzE1MBCGDmh0dHA6Ly90ZXN0LzE2MBCGDmh0
--dHA6Ly90ZXN0LzE3MBCGDmh0dHA6Ly90ZXN0LzE4MBCGDmh0dHA6Ly90ZXN0LzE5
--MBCGDmh0dHA6Ly90ZXN0LzIwMBCGDmh0dHA6Ly90ZXN0LzIxMBCGDmh0dHA6Ly90
--ZXN0LzIyMBCGDmh0dHA6Ly90ZXN0LzIzMBCGDmh0dHA6Ly90ZXN0LzI0MBCGDmh0
--dHA6Ly90ZXN0LzI1MBCGDmh0dHA6Ly90ZXN0LzI2MBCGDmh0dHA6Ly90ZXN0LzI3
--MBCGDmh0dHA6Ly90ZXN0LzI4MBCGDmh0dHA6Ly90ZXN0LzI5MBCGDmh0dHA6Ly90
--ZXN0LzMwMBCGDmh0dHA6Ly90ZXN0LzMxMBCGDmh0dHA6Ly90ZXN0LzMyMBCGDmh0
--dHA6Ly90ZXN0LzMzMBCGDmh0dHA6Ly90ZXN0LzM0MBCGDmh0dHA6Ly90ZXN0LzM1
--MBCGDmh0dHA6Ly90ZXN0LzM2MBCGDmh0dHA6Ly90ZXN0LzM3MBCGDmh0dHA6Ly90
--ZXN0LzM4MBCGDmh0dHA6Ly90ZXN0LzM5MBCGDmh0dHA6Ly90ZXN0LzQwMBCGDmh0
--dHA6Ly90ZXN0LzQxMBCGDmh0dHA6Ly90ZXN0LzQyMBCGDmh0dHA6Ly90ZXN0LzQz
--MBCGDmh0dHA6Ly90ZXN0LzQ0MBCGDmh0dHA6Ly90ZXN0LzQ1MBCGDmh0dHA6Ly90
--ZXN0LzQ2MBCGDmh0dHA6Ly90ZXN0LzQ3MBCGDmh0dHA6Ly90ZXN0LzQ4MBCGDmh0
--dHA6Ly90ZXN0LzQ5MBCGDmh0dHA6Ly90ZXN0LzUwMBCGDmh0dHA6Ly90ZXN0LzUx
--MBCGDmh0dHA6Ly90ZXN0LzUyMBCGDmh0dHA6Ly90ZXN0LzUzMBCGDmh0dHA6Ly90
--ZXN0LzU0MBCGDmh0dHA6Ly90ZXN0LzU1MBCGDmh0dHA6Ly90ZXN0LzU2MBCGDmh0
--dHA6Ly90ZXN0LzU3MBCGDmh0dHA6Ly90ZXN0LzU4MBCGDmh0dHA6Ly90ZXN0LzU5
--MBCGDmh0dHA6Ly90ZXN0LzYwMBCGDmh0dHA6Ly90ZXN0LzYxMBCGDmh0dHA6Ly90
--ZXN0LzYyMBCGDmh0dHA6Ly90ZXN0LzYzMBCGDmh0dHA6Ly90ZXN0LzY0MBCGDmh0
--dHA6Ly90ZXN0LzY1MBCGDmh0dHA6Ly90ZXN0LzY2MBCGDmh0dHA6Ly90ZXN0LzY3
--MBCGDmh0dHA6Ly90ZXN0LzY4MBCGDmh0dHA6Ly90ZXN0LzY5MBCGDmh0dHA6Ly90
--ZXN0LzcwMBCGDmh0dHA6Ly90ZXN0LzcxMBCGDmh0dHA6Ly90ZXN0LzcyMBCGDmh0
--dHA6Ly90ZXN0LzczMBCGDmh0dHA6Ly90ZXN0Lzc0MBCGDmh0dHA6Ly90ZXN0Lzc1
--MBCGDmh0dHA6Ly90ZXN0Lzc2MBCGDmh0dHA6Ly90ZXN0Lzc3MBCGDmh0dHA6Ly90
--ZXN0Lzc4MBCGDmh0dHA6Ly90ZXN0Lzc5MBCGDmh0dHA6Ly90ZXN0LzgwMBCGDmh0
--dHA6Ly90ZXN0LzgxMBCGDmh0dHA6Ly90ZXN0LzgyMBCGDmh0dHA6Ly90ZXN0Lzgz
--MBCGDmh0dHA6Ly90ZXN0Lzg0MBCGDmh0dHA6Ly90ZXN0Lzg1MBCGDmh0dHA6Ly90
--ZXN0Lzg2MBCGDmh0dHA6Ly90ZXN0Lzg3MBCGDmh0dHA6Ly90ZXN0Lzg4MBCGDmh0
--dHA6Ly90ZXN0Lzg5MBCGDmh0dHA6Ly90ZXN0LzkwMBCGDmh0dHA6Ly90ZXN0Lzkx
--MBCGDmh0dHA6Ly90ZXN0LzkyMBCGDmh0dHA6Ly90ZXN0LzkzMBCGDmh0dHA6Ly90
--ZXN0Lzk0MBCGDmh0dHA6Ly90ZXN0Lzk1MBCGDmh0dHA6Ly90ZXN0Lzk2MBCGDmh0
--dHA6Ly90ZXN0Lzk3MBCGDmh0dHA6Ly90ZXN0Lzk4MBCGDmh0dHA6Ly90ZXN0Lzk5
--MBGGD2h0dHA6Ly90ZXN0LzEwMDARhg9odHRwOi8vdGVzdC8xMDEwEYYPaHR0cDov
--L3Rlc3QvMTAyMBGGD2h0dHA6Ly90ZXN0LzEwMzARhg9odHRwOi8vdGVzdC8xMDQw
--EYYPaHR0cDovL3Rlc3QvMTA1MBGGD2h0dHA6Ly90ZXN0LzEwNjARhg9odHRwOi8v
--dGVzdC8xMDcwEYYPaHR0cDovL3Rlc3QvMTA4MBGGD2h0dHA6Ly90ZXN0LzEwOTAR
--hg9odHRwOi8vdGVzdC8xMTAwEYYPaHR0cDovL3Rlc3QvMTExMBGGD2h0dHA6Ly90
--ZXN0LzExMjARhg9odHRwOi8vdGVzdC8xMTMwEYYPaHR0cDovL3Rlc3QvMTE0MBGG
--D2h0dHA6Ly90ZXN0LzExNTARhg9odHRwOi8vdGVzdC8xMTYwEYYPaHR0cDovL3Rl
--c3QvMTE3MBGGD2h0dHA6Ly90ZXN0LzExODARhg9odHRwOi8vdGVzdC8xMTkwEYYP
--aHR0cDovL3Rlc3QvMTIwMBGGD2h0dHA6Ly90ZXN0LzEyMTARhg9odHRwOi8vdGVz
--dC8xMjIwEYYPaHR0cDovL3Rlc3QvMTIzMBGGD2h0dHA6Ly90ZXN0LzEyNDARhg9o
--dHRwOi8vdGVzdC8xMjUwEYYPaHR0cDovL3Rlc3QvMTI2MBGGD2h0dHA6Ly90ZXN0
--LzEyNzARhg9odHRwOi8vdGVzdC8xMjgwEYYPaHR0cDovL3Rlc3QvMTI5MBGGD2h0
--dHA6Ly90ZXN0LzEzMDARhg9odHRwOi8vdGVzdC8xMzEwEYYPaHR0cDovL3Rlc3Qv
--MTMyMBGGD2h0dHA6Ly90ZXN0LzEzMzARhg9odHRwOi8vdGVzdC8xMzQwEYYPaHR0
--cDovL3Rlc3QvMTM1MBGGD2h0dHA6Ly90ZXN0LzEzNjARhg9odHRwOi8vdGVzdC8x
--MzcwEYYPaHR0cDovL3Rlc3QvMTM4MBGGD2h0dHA6Ly90ZXN0LzEzOTARhg9odHRw
--Oi8vdGVzdC8xNDAwEYYPaHR0cDovL3Rlc3QvMTQxMBGGD2h0dHA6Ly90ZXN0LzE0
--MjARhg9odHRwOi8vdGVzdC8xNDMwEYYPaHR0cDovL3Rlc3QvMTQ0MBGGD2h0dHA6
--Ly90ZXN0LzE0NTARhg9odHRwOi8vdGVzdC8xNDYwEYYPaHR0cDovL3Rlc3QvMTQ3
--MBGGD2h0dHA6Ly90ZXN0LzE0ODARhg9odHRwOi8vdGVzdC8xNDkwEYYPaHR0cDov
--L3Rlc3QvMTUwMBGGD2h0dHA6Ly90ZXN0LzE1MTARhg9odHRwOi8vdGVzdC8xNTIw
--EYYPaHR0cDovL3Rlc3QvMTUzMBGGD2h0dHA6Ly90ZXN0LzE1NDARhg9odHRwOi8v
--dGVzdC8xNTUwEYYPaHR0cDovL3Rlc3QvMTU2MBGGD2h0dHA6Ly90ZXN0LzE1NzAR
--hg9odHRwOi8vdGVzdC8xNTgwEYYPaHR0cDovL3Rlc3QvMTU5MBGGD2h0dHA6Ly90
--ZXN0LzE2MDARhg9odHRwOi8vdGVzdC8xNjEwEYYPaHR0cDovL3Rlc3QvMTYyMBGG
--D2h0dHA6Ly90ZXN0LzE2MzARhg9odHRwOi8vdGVzdC8xNjQwEYYPaHR0cDovL3Rl
--c3QvMTY1MBGGD2h0dHA6Ly90ZXN0LzE2NjARhg9odHRwOi8vdGVzdC8xNjcwEYYP
--aHR0cDovL3Rlc3QvMTY4MBGGD2h0dHA6Ly90ZXN0LzE2OTARhg9odHRwOi8vdGVz
--dC8xNzAwEYYPaHR0cDovL3Rlc3QvMTcxMBGGD2h0dHA6Ly90ZXN0LzE3MjARhg9o
--dHRwOi8vdGVzdC8xNzMwEYYPaHR0cDovL3Rlc3QvMTc0MBGGD2h0dHA6Ly90ZXN0
--LzE3NTARhg9odHRwOi8vdGVzdC8xNzYwEYYPaHR0cDovL3Rlc3QvMTc3MBGGD2h0
--dHA6Ly90ZXN0LzE3ODARhg9odHRwOi8vdGVzdC8xNzkwEYYPaHR0cDovL3Rlc3Qv
--MTgwMBGGD2h0dHA6Ly90ZXN0LzE4MTARhg9odHRwOi8vdGVzdC8xODIwEYYPaHR0
--cDovL3Rlc3QvMTgzMBGGD2h0dHA6Ly90ZXN0LzE4NDARhg9odHRwOi8vdGVzdC8x
--ODUwEYYPaHR0cDovL3Rlc3QvMTg2MBGGD2h0dHA6Ly90ZXN0LzE4NzARhg9odHRw
--Oi8vdGVzdC8xODgwEYYPaHR0cDovL3Rlc3QvMTg5MBGGD2h0dHA6Ly90ZXN0LzE5
--MDARhg9odHRwOi8vdGVzdC8xOTEwEYYPaHR0cDovL3Rlc3QvMTkyMBGGD2h0dHA6
--Ly90ZXN0LzE5MzARhg9odHRwOi8vdGVzdC8xOTQwEYYPaHR0cDovL3Rlc3QvMTk1
--MBGGD2h0dHA6Ly90ZXN0LzE5NjARhg9odHRwOi8vdGVzdC8xOTcwEYYPaHR0cDov
--L3Rlc3QvMTk4MBGGD2h0dHA6Ly90ZXN0LzE5OTARhg9odHRwOi8vdGVzdC8yMDAw
--EYYPaHR0cDovL3Rlc3QvMjAxMBGGD2h0dHA6Ly90ZXN0LzIwMjARhg9odHRwOi8v
--dGVzdC8yMDMwEYYPaHR0cDovL3Rlc3QvMjA0MBGGD2h0dHA6Ly90ZXN0LzIwNTAR
--hg9odHRwOi8vdGVzdC8yMDYwEYYPaHR0cDovL3Rlc3QvMjA3MBGGD2h0dHA6Ly90
--ZXN0LzIwODARhg9odHRwOi8vdGVzdC8yMDkwEYYPaHR0cDovL3Rlc3QvMjEwMBGG
--D2h0dHA6Ly90ZXN0LzIxMTARhg9odHRwOi8vdGVzdC8yMTIwEYYPaHR0cDovL3Rl
--c3QvMjEzMBGGD2h0dHA6Ly90ZXN0LzIxNDARhg9odHRwOi8vdGVzdC8yMTUwEYYP
--aHR0cDovL3Rlc3QvMjE2MBGGD2h0dHA6Ly90ZXN0LzIxNzARhg9odHRwOi8vdGVz
--dC8yMTgwEYYPaHR0cDovL3Rlc3QvMjE5MBGGD2h0dHA6Ly90ZXN0LzIyMDARhg9o
--dHRwOi8vdGVzdC8yMjEwEYYPaHR0cDovL3Rlc3QvMjIyMBGGD2h0dHA6Ly90ZXN0
--LzIyMzARhg9odHRwOi8vdGVzdC8yMjQwEYYPaHR0cDovL3Rlc3QvMjI1MBGGD2h0
--dHA6Ly90ZXN0LzIyNjARhg9odHRwOi8vdGVzdC8yMjcwEYYPaHR0cDovL3Rlc3Qv
--MjI4MBGGD2h0dHA6Ly90ZXN0LzIyOTARhg9odHRwOi8vdGVzdC8yMzAwEYYPaHR0
--cDovL3Rlc3QvMjMxMBGGD2h0dHA6Ly90ZXN0LzIzMjARhg9odHRwOi8vdGVzdC8y
--MzMwEYYPaHR0cDovL3Rlc3QvMjM0MBGGD2h0dHA6Ly90ZXN0LzIzNTARhg9odHRw
--Oi8vdGVzdC8yMzYwEYYPaHR0cDovL3Rlc3QvMjM3MBGGD2h0dHA6Ly90ZXN0LzIz
--ODARhg9odHRwOi8vdGVzdC8yMzkwEYYPaHR0cDovL3Rlc3QvMjQwMBGGD2h0dHA6
--Ly90ZXN0LzI0MTARhg9odHRwOi8vdGVzdC8yNDIwEYYPaHR0cDovL3Rlc3QvMjQz
--MBGGD2h0dHA6Ly90ZXN0LzI0NDARhg9odHRwOi8vdGVzdC8yNDUwEYYPaHR0cDov
--L3Rlc3QvMjQ2MBGGD2h0dHA6Ly90ZXN0LzI0NzARhg9odHRwOi8vdGVzdC8yNDgw
--EYYPaHR0cDovL3Rlc3QvMjQ5MBGGD2h0dHA6Ly90ZXN0LzI1MDARhg9odHRwOi8v
--dGVzdC8yNTEwEYYPaHR0cDovL3Rlc3QvMjUyMBGGD2h0dHA6Ly90ZXN0LzI1MzAR
--hg9odHRwOi8vdGVzdC8yNTQwEYYPaHR0cDovL3Rlc3QvMjU1MBGGD2h0dHA6Ly90
--ZXN0LzI1NjARhg9odHRwOi8vdGVzdC8yNTcwEYYPaHR0cDovL3Rlc3QvMjU4MBGG
--D2h0dHA6Ly90ZXN0LzI1OTARhg9odHRwOi8vdGVzdC8yNjAwEYYPaHR0cDovL3Rl
--c3QvMjYxMBGGD2h0dHA6Ly90ZXN0LzI2MjARhg9odHRwOi8vdGVzdC8yNjMwEYYP
--aHR0cDovL3Rlc3QvMjY0MBGGD2h0dHA6Ly90ZXN0LzI2NTARhg9odHRwOi8vdGVz
--dC8yNjYwEYYPaHR0cDovL3Rlc3QvMjY3MBGGD2h0dHA6Ly90ZXN0LzI2ODARhg9o
--dHRwOi8vdGVzdC8yNjkwEYYPaHR0cDovL3Rlc3QvMjcwMBGGD2h0dHA6Ly90ZXN0
--LzI3MTARhg9odHRwOi8vdGVzdC8yNzIwEYYPaHR0cDovL3Rlc3QvMjczMBGGD2h0
--dHA6Ly90ZXN0LzI3NDARhg9odHRwOi8vdGVzdC8yNzUwEYYPaHR0cDovL3Rlc3Qv
--Mjc2MBGGD2h0dHA6Ly90ZXN0LzI3NzARhg9odHRwOi8vdGVzdC8yNzgwEYYPaHR0
--cDovL3Rlc3QvMjc5MBGGD2h0dHA6Ly90ZXN0LzI4MDARhg9odHRwOi8vdGVzdC8y
--ODEwEYYPaHR0cDovL3Rlc3QvMjgyMBGGD2h0dHA6Ly90ZXN0LzI4MzARhg9odHRw
--Oi8vdGVzdC8yODQwEYYPaHR0cDovL3Rlc3QvMjg1MBGGD2h0dHA6Ly90ZXN0LzI4
--NjARhg9odHRwOi8vdGVzdC8yODcwEYYPaHR0cDovL3Rlc3QvMjg4MBGGD2h0dHA6
--Ly90ZXN0LzI4OTARhg9odHRwOi8vdGVzdC8yOTAwEYYPaHR0cDovL3Rlc3QvMjkx
--MBGGD2h0dHA6Ly90ZXN0LzI5MjARhg9odHRwOi8vdGVzdC8yOTMwEYYPaHR0cDov
--L3Rlc3QvMjk0MBGGD2h0dHA6Ly90ZXN0LzI5NTARhg9odHRwOi8vdGVzdC8yOTYw
--EYYPaHR0cDovL3Rlc3QvMjk3MBGGD2h0dHA6Ly90ZXN0LzI5ODARhg9odHRwOi8v
--dGVzdC8yOTkwEYYPaHR0cDovL3Rlc3QvMzAwMBGGD2h0dHA6Ly90ZXN0LzMwMTAR
--hg9odHRwOi8vdGVzdC8zMDIwEYYPaHR0cDovL3Rlc3QvMzAzMBGGD2h0dHA6Ly90
--ZXN0LzMwNDARhg9odHRwOi8vdGVzdC8zMDUwEYYPaHR0cDovL3Rlc3QvMzA2MBGG
--D2h0dHA6Ly90ZXN0LzMwNzARhg9odHRwOi8vdGVzdC8zMDgwEYYPaHR0cDovL3Rl
--c3QvMzA5MBGGD2h0dHA6Ly90ZXN0LzMxMDARhg9odHRwOi8vdGVzdC8zMTEwEYYP
--aHR0cDovL3Rlc3QvMzEyMBGGD2h0dHA6Ly90ZXN0LzMxMzARhg9odHRwOi8vdGVz
--dC8zMTQwEYYPaHR0cDovL3Rlc3QvMzE1MBGGD2h0dHA6Ly90ZXN0LzMxNjARhg9o
--dHRwOi8vdGVzdC8zMTcwEYYPaHR0cDovL3Rlc3QvMzE4MBGGD2h0dHA6Ly90ZXN0
--LzMxOTARhg9odHRwOi8vdGVzdC8zMjAwEYYPaHR0cDovL3Rlc3QvMzIxMBGGD2h0
--dHA6Ly90ZXN0LzMyMjARhg9odHRwOi8vdGVzdC8zMjMwEYYPaHR0cDovL3Rlc3Qv
--MzI0MBGGD2h0dHA6Ly90ZXN0LzMyNTARhg9odHRwOi8vdGVzdC8zMjYwEYYPaHR0
--cDovL3Rlc3QvMzI3MBGGD2h0dHA6Ly90ZXN0LzMyODARhg9odHRwOi8vdGVzdC8z
--MjkwEYYPaHR0cDovL3Rlc3QvMzMwMBGGD2h0dHA6Ly90ZXN0LzMzMTARhg9odHRw
--Oi8vdGVzdC8zMzIwEYYPaHR0cDovL3Rlc3QvMzMzMBGGD2h0dHA6Ly90ZXN0LzMz
--NDARhg9odHRwOi8vdGVzdC8zMzUwEYYPaHR0cDovL3Rlc3QvMzM2MBGGD2h0dHA6
--Ly90ZXN0LzMzNzARhg9odHRwOi8vdGVzdC8zMzgwEYYPaHR0cDovL3Rlc3QvMzM5
--MBGGD2h0dHA6Ly90ZXN0LzM0MDARhg9odHRwOi8vdGVzdC8zNDEwEYYPaHR0cDov
--L3Rlc3QvMzQyMBGGD2h0dHA6Ly90ZXN0LzM0MzARhg9odHRwOi8vdGVzdC8zNDQw
--EYYPaHR0cDovL3Rlc3QvMzQ1MBGGD2h0dHA6Ly90ZXN0LzM0NjARhg9odHRwOi8v
--dGVzdC8zNDcwEYYPaHR0cDovL3Rlc3QvMzQ4MBGGD2h0dHA6Ly90ZXN0LzM0OTAR
--hg9odHRwOi8vdGVzdC8zNTAwEYYPaHR0cDovL3Rlc3QvMzUxMBGGD2h0dHA6Ly90
--ZXN0LzM1MjARhg9odHRwOi8vdGVzdC8zNTMwEYYPaHR0cDovL3Rlc3QvMzU0MBGG
--D2h0dHA6Ly90ZXN0LzM1NTARhg9odHRwOi8vdGVzdC8zNTYwEYYPaHR0cDovL3Rl
--c3QvMzU3MBGGD2h0dHA6Ly90ZXN0LzM1ODARhg9odHRwOi8vdGVzdC8zNTkwEYYP
--aHR0cDovL3Rlc3QvMzYwMBGGD2h0dHA6Ly90ZXN0LzM2MTARhg9odHRwOi8vdGVz
--dC8zNjIwEYYPaHR0cDovL3Rlc3QvMzYzMBGGD2h0dHA6Ly90ZXN0LzM2NDARhg9o
--dHRwOi8vdGVzdC8zNjUwEYYPaHR0cDovL3Rlc3QvMzY2MBGGD2h0dHA6Ly90ZXN0
--LzM2NzARhg9odHRwOi8vdGVzdC8zNjgwEYYPaHR0cDovL3Rlc3QvMzY5MBGGD2h0
--dHA6Ly90ZXN0LzM3MDARhg9odHRwOi8vdGVzdC8zNzEwEYYPaHR0cDovL3Rlc3Qv
--MzcyMBGGD2h0dHA6Ly90ZXN0LzM3MzARhg9odHRwOi8vdGVzdC8zNzQwEYYPaHR0
--cDovL3Rlc3QvMzc1MBGGD2h0dHA6Ly90ZXN0LzM3NjARhg9odHRwOi8vdGVzdC8z
--NzcwEYYPaHR0cDovL3Rlc3QvMzc4MBGGD2h0dHA6Ly90ZXN0LzM3OTARhg9odHRw
--Oi8vdGVzdC8zODAwEYYPaHR0cDovL3Rlc3QvMzgxMBGGD2h0dHA6Ly90ZXN0LzM4
--MjARhg9odHRwOi8vdGVzdC8zODMwEYYPaHR0cDovL3Rlc3QvMzg0MBGGD2h0dHA6
--Ly90ZXN0LzM4NTARhg9odHRwOi8vdGVzdC8zODYwEYYPaHR0cDovL3Rlc3QvMzg3
--MBGGD2h0dHA6Ly90ZXN0LzM4ODARhg9odHRwOi8vdGVzdC8zODkwEYYPaHR0cDov
--L3Rlc3QvMzkwMBGGD2h0dHA6Ly90ZXN0LzM5MTARhg9odHRwOi8vdGVzdC8zOTIw
--EYYPaHR0cDovL3Rlc3QvMzkzMBGGD2h0dHA6Ly90ZXN0LzM5NDARhg9odHRwOi8v
--dGVzdC8zOTUwEYYPaHR0cDovL3Rlc3QvMzk2MBGGD2h0dHA6Ly90ZXN0LzM5NzAR
--hg9odHRwOi8vdGVzdC8zOTgwEYYPaHR0cDovL3Rlc3QvMzk5MBGGD2h0dHA6Ly90
--ZXN0LzQwMDARhg9odHRwOi8vdGVzdC80MDEwEYYPaHR0cDovL3Rlc3QvNDAyMBGG
--D2h0dHA6Ly90ZXN0LzQwMzARhg9odHRwOi8vdGVzdC80MDQwEYYPaHR0cDovL3Rl
--c3QvNDA1MBGGD2h0dHA6Ly90ZXN0LzQwNjARhg9odHRwOi8vdGVzdC80MDcwEYYP
--aHR0cDovL3Rlc3QvNDA4MBGGD2h0dHA6Ly90ZXN0LzQwOTARhg9odHRwOi8vdGVz
--dC80MTAwEYYPaHR0cDovL3Rlc3QvNDExMBGGD2h0dHA6Ly90ZXN0LzQxMjARhg9o
--dHRwOi8vdGVzdC80MTMwEYYPaHR0cDovL3Rlc3QvNDE0MBGGD2h0dHA6Ly90ZXN0
--LzQxNTARhg9odHRwOi8vdGVzdC80MTYwEYYPaHR0cDovL3Rlc3QvNDE3MBGGD2h0
--dHA6Ly90ZXN0LzQxODARhg9odHRwOi8vdGVzdC80MTkwEYYPaHR0cDovL3Rlc3Qv
--NDIwMBGGD2h0dHA6Ly90ZXN0LzQyMTARhg9odHRwOi8vdGVzdC80MjIwEYYPaHR0
--cDovL3Rlc3QvNDIzMBGGD2h0dHA6Ly90ZXN0LzQyNDARhg9odHRwOi8vdGVzdC80
--MjUwEYYPaHR0cDovL3Rlc3QvNDI2MBGGD2h0dHA6Ly90ZXN0LzQyNzARhg9odHRw
--Oi8vdGVzdC80MjgwEYYPaHR0cDovL3Rlc3QvNDI5MBGGD2h0dHA6Ly90ZXN0LzQz
--MDARhg9odHRwOi8vdGVzdC80MzEwEYYPaHR0cDovL3Rlc3QvNDMyMBGGD2h0dHA6
--Ly90ZXN0LzQzMzARhg9odHRwOi8vdGVzdC80MzQwEYYPaHR0cDovL3Rlc3QvNDM1
--MBGGD2h0dHA6Ly90ZXN0LzQzNjARhg9odHRwOi8vdGVzdC80MzcwEYYPaHR0cDov
--L3Rlc3QvNDM4MBGGD2h0dHA6Ly90ZXN0LzQzOTARhg9odHRwOi8vdGVzdC80NDAw
--EYYPaHR0cDovL3Rlc3QvNDQxMBGGD2h0dHA6Ly90ZXN0LzQ0MjARhg9odHRwOi8v
--dGVzdC80NDMwEYYPaHR0cDovL3Rlc3QvNDQ0MBGGD2h0dHA6Ly90ZXN0LzQ0NTAR
--hg9odHRwOi8vdGVzdC80NDYwEYYPaHR0cDovL3Rlc3QvNDQ3MBGGD2h0dHA6Ly90
--ZXN0LzQ0ODARhg9odHRwOi8vdGVzdC80NDkwEYYPaHR0cDovL3Rlc3QvNDUwMBGG
--D2h0dHA6Ly90ZXN0LzQ1MTARhg9odHRwOi8vdGVzdC80NTIwEYYPaHR0cDovL3Rl
--c3QvNDUzMBGGD2h0dHA6Ly90ZXN0LzQ1NDARhg9odHRwOi8vdGVzdC80NTUwEYYP
--aHR0cDovL3Rlc3QvNDU2MBGGD2h0dHA6Ly90ZXN0LzQ1NzARhg9odHRwOi8vdGVz
--dC80NTgwEYYPaHR0cDovL3Rlc3QvNDU5MBGGD2h0dHA6Ly90ZXN0LzQ2MDARhg9o
--dHRwOi8vdGVzdC80NjEwEYYPaHR0cDovL3Rlc3QvNDYyMBGGD2h0dHA6Ly90ZXN0
--LzQ2MzARhg9odHRwOi8vdGVzdC80NjQwEYYPaHR0cDovL3Rlc3QvNDY1MBGGD2h0
--dHA6Ly90ZXN0LzQ2NjARhg9odHRwOi8vdGVzdC80NjcwEYYPaHR0cDovL3Rlc3Qv
--NDY4MBGGD2h0dHA6Ly90ZXN0LzQ2OTARhg9odHRwOi8vdGVzdC80NzAwEYYPaHR0
--cDovL3Rlc3QvNDcxMBGGD2h0dHA6Ly90ZXN0LzQ3MjARhg9odHRwOi8vdGVzdC80
--NzMwEYYPaHR0cDovL3Rlc3QvNDc0MBGGD2h0dHA6Ly90ZXN0LzQ3NTARhg9odHRw
--Oi8vdGVzdC80NzYwEYYPaHR0cDovL3Rlc3QvNDc3MBGGD2h0dHA6Ly90ZXN0LzQ3
--ODARhg9odHRwOi8vdGVzdC80NzkwEYYPaHR0cDovL3Rlc3QvNDgwMBGGD2h0dHA6
--Ly90ZXN0LzQ4MTARhg9odHRwOi8vdGVzdC80ODIwEYYPaHR0cDovL3Rlc3QvNDgz
--MBGGD2h0dHA6Ly90ZXN0LzQ4NDARhg9odHRwOi8vdGVzdC80ODUwEYYPaHR0cDov
--L3Rlc3QvNDg2MBGGD2h0dHA6Ly90ZXN0LzQ4NzARhg9odHRwOi8vdGVzdC80ODgw
--EYYPaHR0cDovL3Rlc3QvNDg5MBGGD2h0dHA6Ly90ZXN0LzQ5MDARhg9odHRwOi8v
--dGVzdC80OTEwEYYPaHR0cDovL3Rlc3QvNDkyMBGGD2h0dHA6Ly90ZXN0LzQ5MzAR
--hg9odHRwOi8vdGVzdC80OTQwEYYPaHR0cDovL3Rlc3QvNDk1MBGGD2h0dHA6Ly90
--ZXN0LzQ5NjARhg9odHRwOi8vdGVzdC80OTcwEYYPaHR0cDovL3Rlc3QvNDk4MBGG
--D2h0dHA6Ly90ZXN0LzQ5OTARhg9odHRwOi8vdGVzdC81MDAwEYYPaHR0cDovL3Rl
--c3QvNTAxMBGGD2h0dHA6Ly90ZXN0LzUwMjARhg9odHRwOi8vdGVzdC81MDMwEYYP
--aHR0cDovL3Rlc3QvNTA0MBGGD2h0dHA6Ly90ZXN0LzUwNTARhg9odHRwOi8vdGVz
--dC81MDYwEYYPaHR0cDovL3Rlc3QvNTA3MBGGD2h0dHA6Ly90ZXN0LzUwODARhg9o
--dHRwOi8vdGVzdC81MDkwEYYPaHR0cDovL3Rlc3QvNTEwMBGGD2h0dHA6Ly90ZXN0
--LzUxMTARhg9odHRwOi8vdGVzdC81MTIwEYYPaHR0cDovL3Rlc3QvNTEzMBGGD2h0
--dHA6Ly90ZXN0LzUxNDARhg9odHRwOi8vdGVzdC81MTUwEYYPaHR0cDovL3Rlc3Qv
--NTE2MBGGD2h0dHA6Ly90ZXN0LzUxNzARhg9odHRwOi8vdGVzdC81MTgwEYYPaHR0
--cDovL3Rlc3QvNTE5MBGGD2h0dHA6Ly90ZXN0LzUyMDARhg9odHRwOi8vdGVzdC81
--MjEwEYYPaHR0cDovL3Rlc3QvNTIyMBGGD2h0dHA6Ly90ZXN0LzUyMzARhg9odHRw
--Oi8vdGVzdC81MjQwEYYPaHR0cDovL3Rlc3QvNTI1MBGGD2h0dHA6Ly90ZXN0LzUy
--NjARhg9odHRwOi8vdGVzdC81MjcwEYYPaHR0cDovL3Rlc3QvNTI4MBGGD2h0dHA6
--Ly90ZXN0LzUyOTARhg9odHRwOi8vdGVzdC81MzAwEYYPaHR0cDovL3Rlc3QvNTMx
--MBGGD2h0dHA6Ly90ZXN0LzUzMjARhg9odHRwOi8vdGVzdC81MzMwEYYPaHR0cDov
--L3Rlc3QvNTM0MBGGD2h0dHA6Ly90ZXN0LzUzNTARhg9odHRwOi8vdGVzdC81MzYw
--EYYPaHR0cDovL3Rlc3QvNTM3MBGGD2h0dHA6Ly90ZXN0LzUzODARhg9odHRwOi8v
--dGVzdC81MzkwEYYPaHR0cDovL3Rlc3QvNTQwMBGGD2h0dHA6Ly90ZXN0LzU0MTAR
--hg9odHRwOi8vdGVzdC81NDIwEYYPaHR0cDovL3Rlc3QvNTQzMBGGD2h0dHA6Ly90
--ZXN0LzU0NDARhg9odHRwOi8vdGVzdC81NDUwEYYPaHR0cDovL3Rlc3QvNTQ2MBGG
--D2h0dHA6Ly90ZXN0LzU0NzARhg9odHRwOi8vdGVzdC81NDgwEYYPaHR0cDovL3Rl
--c3QvNTQ5MBGGD2h0dHA6Ly90ZXN0LzU1MDARhg9odHRwOi8vdGVzdC81NTEwEYYP
--aHR0cDovL3Rlc3QvNTUyMBGGD2h0dHA6Ly90ZXN0LzU1MzARhg9odHRwOi8vdGVz
--dC81NTQwEYYPaHR0cDovL3Rlc3QvNTU1MBGGD2h0dHA6Ly90ZXN0LzU1NjARhg9o
--dHRwOi8vdGVzdC81NTcwEYYPaHR0cDovL3Rlc3QvNTU4MBGGD2h0dHA6Ly90ZXN0
--LzU1OTARhg9odHRwOi8vdGVzdC81NjAwEYYPaHR0cDovL3Rlc3QvNTYxMBGGD2h0
--dHA6Ly90ZXN0LzU2MjARhg9odHRwOi8vdGVzdC81NjMwEYYPaHR0cDovL3Rlc3Qv
--NTY0MBGGD2h0dHA6Ly90ZXN0LzU2NTARhg9odHRwOi8vdGVzdC81NjYwEYYPaHR0
--cDovL3Rlc3QvNTY3MBGGD2h0dHA6Ly90ZXN0LzU2ODARhg9odHRwOi8vdGVzdC81
--NjkwEYYPaHR0cDovL3Rlc3QvNTcwMBGGD2h0dHA6Ly90ZXN0LzU3MTARhg9odHRw
--Oi8vdGVzdC81NzIwEYYPaHR0cDovL3Rlc3QvNTczMBGGD2h0dHA6Ly90ZXN0LzU3
--NDARhg9odHRwOi8vdGVzdC81NzUwEYYPaHR0cDovL3Rlc3QvNTc2MBGGD2h0dHA6
--Ly90ZXN0LzU3NzARhg9odHRwOi8vdGVzdC81NzgwEYYPaHR0cDovL3Rlc3QvNTc5
--MBGGD2h0dHA6Ly90ZXN0LzU4MDARhg9odHRwOi8vdGVzdC81ODEwEYYPaHR0cDov
--L3Rlc3QvNTgyMBGGD2h0dHA6Ly90ZXN0LzU4MzARhg9odHRwOi8vdGVzdC81ODQw
--EYYPaHR0cDovL3Rlc3QvNTg1MBGGD2h0dHA6Ly90ZXN0LzU4NjARhg9odHRwOi8v
--dGVzdC81ODcwEYYPaHR0cDovL3Rlc3QvNTg4MBGGD2h0dHA6Ly90ZXN0LzU4OTAR
--hg9odHRwOi8vdGVzdC81OTAwEYYPaHR0cDovL3Rlc3QvNTkxMBGGD2h0dHA6Ly90
--ZXN0LzU5MjARhg9odHRwOi8vdGVzdC81OTMwEYYPaHR0cDovL3Rlc3QvNTk0MBGG
--D2h0dHA6Ly90ZXN0LzU5NTARhg9odHRwOi8vdGVzdC81OTYwEYYPaHR0cDovL3Rl
--c3QvNTk3MBGGD2h0dHA6Ly90ZXN0LzU5ODARhg9odHRwOi8vdGVzdC81OTkwEYYP
--aHR0cDovL3Rlc3QvNjAwMBGGD2h0dHA6Ly90ZXN0LzYwMTARhg9odHRwOi8vdGVz
--dC82MDIwEYYPaHR0cDovL3Rlc3QvNjAzMBGGD2h0dHA6Ly90ZXN0LzYwNDARhg9o
--dHRwOi8vdGVzdC82MDUwEYYPaHR0cDovL3Rlc3QvNjA2MBGGD2h0dHA6Ly90ZXN0
--LzYwNzARhg9odHRwOi8vdGVzdC82MDgwEYYPaHR0cDovL3Rlc3QvNjA5MBGGD2h0
--dHA6Ly90ZXN0LzYxMDARhg9odHRwOi8vdGVzdC82MTEwEYYPaHR0cDovL3Rlc3Qv
--NjEyMBGGD2h0dHA6Ly90ZXN0LzYxMzARhg9odHRwOi8vdGVzdC82MTQwEYYPaHR0
--cDovL3Rlc3QvNjE1MBGGD2h0dHA6Ly90ZXN0LzYxNjARhg9odHRwOi8vdGVzdC82
--MTcwEYYPaHR0cDovL3Rlc3QvNjE4MBGGD2h0dHA6Ly90ZXN0LzYxOTARhg9odHRw
--Oi8vdGVzdC82MjAwEYYPaHR0cDovL3Rlc3QvNjIxMBGGD2h0dHA6Ly90ZXN0LzYy
--MjARhg9odHRwOi8vdGVzdC82MjMwEYYPaHR0cDovL3Rlc3QvNjI0MBGGD2h0dHA6
--Ly90ZXN0LzYyNTARhg9odHRwOi8vdGVzdC82MjYwEYYPaHR0cDovL3Rlc3QvNjI3
--MBGGD2h0dHA6Ly90ZXN0LzYyODARhg9odHRwOi8vdGVzdC82MjkwEYYPaHR0cDov
--L3Rlc3QvNjMwMBGGD2h0dHA6Ly90ZXN0LzYzMTARhg9odHRwOi8vdGVzdC82MzIw
--EYYPaHR0cDovL3Rlc3QvNjMzMBGGD2h0dHA6Ly90ZXN0LzYzNDARhg9odHRwOi8v
--dGVzdC82MzUwEYYPaHR0cDovL3Rlc3QvNjM2MBGGD2h0dHA6Ly90ZXN0LzYzNzAR
--hg9odHRwOi8vdGVzdC82MzgwEYYPaHR0cDovL3Rlc3QvNjM5MBGGD2h0dHA6Ly90
--ZXN0LzY0MDARhg9odHRwOi8vdGVzdC82NDEwEYYPaHR0cDovL3Rlc3QvNjQyMBGG
--D2h0dHA6Ly90ZXN0LzY0MzARhg9odHRwOi8vdGVzdC82NDQwEYYPaHR0cDovL3Rl
--c3QvNjQ1MBGGD2h0dHA6Ly90ZXN0LzY0NjARhg9odHRwOi8vdGVzdC82NDcwEYYP
--aHR0cDovL3Rlc3QvNjQ4MBGGD2h0dHA6Ly90ZXN0LzY0OTARhg9odHRwOi8vdGVz
--dC82NTAwEYYPaHR0cDovL3Rlc3QvNjUxMBGGD2h0dHA6Ly90ZXN0LzY1MjARhg9o
--dHRwOi8vdGVzdC82NTMwEYYPaHR0cDovL3Rlc3QvNjU0MBGGD2h0dHA6Ly90ZXN0
--LzY1NTARhg9odHRwOi8vdGVzdC82NTYwEYYPaHR0cDovL3Rlc3QvNjU3MBGGD2h0
--dHA6Ly90ZXN0LzY1ODARhg9odHRwOi8vdGVzdC82NTkwEYYPaHR0cDovL3Rlc3Qv
--NjYwMBGGD2h0dHA6Ly90ZXN0LzY2MTARhg9odHRwOi8vdGVzdC82NjIwEYYPaHR0
--cDovL3Rlc3QvNjYzMBGGD2h0dHA6Ly90ZXN0LzY2NDARhg9odHRwOi8vdGVzdC82
--NjUwEYYPaHR0cDovL3Rlc3QvNjY2MBGGD2h0dHA6Ly90ZXN0LzY2NzARhg9odHRw
--Oi8vdGVzdC82NjgwEYYPaHR0cDovL3Rlc3QvNjY5MBGGD2h0dHA6Ly90ZXN0LzY3
--MDARhg9odHRwOi8vdGVzdC82NzEwEYYPaHR0cDovL3Rlc3QvNjcyMBGGD2h0dHA6
--Ly90ZXN0LzY3MzARhg9odHRwOi8vdGVzdC82NzQwEYYPaHR0cDovL3Rlc3QvNjc1
--MBGGD2h0dHA6Ly90ZXN0LzY3NjARhg9odHRwOi8vdGVzdC82NzcwEYYPaHR0cDov
--L3Rlc3QvNjc4MBGGD2h0dHA6Ly90ZXN0LzY3OTARhg9odHRwOi8vdGVzdC82ODAw
--EYYPaHR0cDovL3Rlc3QvNjgxMBGGD2h0dHA6Ly90ZXN0LzY4MjARhg9odHRwOi8v
--dGVzdC82ODMwEYYPaHR0cDovL3Rlc3QvNjg0MBGGD2h0dHA6Ly90ZXN0LzY4NTAR
--hg9odHRwOi8vdGVzdC82ODYwEYYPaHR0cDovL3Rlc3QvNjg3MBGGD2h0dHA6Ly90
--ZXN0LzY4ODARhg9odHRwOi8vdGVzdC82ODkwEYYPaHR0cDovL3Rlc3QvNjkwMBGG
--D2h0dHA6Ly90ZXN0LzY5MTARhg9odHRwOi8vdGVzdC82OTIwEYYPaHR0cDovL3Rl
--c3QvNjkzMBGGD2h0dHA6Ly90ZXN0LzY5NDARhg9odHRwOi8vdGVzdC82OTUwEYYP
--aHR0cDovL3Rlc3QvNjk2MBGGD2h0dHA6Ly90ZXN0LzY5NzARhg9odHRwOi8vdGVz
--dC82OTgwEYYPaHR0cDovL3Rlc3QvNjk5MBGGD2h0dHA6Ly90ZXN0LzcwMDARhg9o
--dHRwOi8vdGVzdC83MDEwEYYPaHR0cDovL3Rlc3QvNzAyMBGGD2h0dHA6Ly90ZXN0
--LzcwMzARhg9odHRwOi8vdGVzdC83MDQwEYYPaHR0cDovL3Rlc3QvNzA1MBGGD2h0
--dHA6Ly90ZXN0LzcwNjARhg9odHRwOi8vdGVzdC83MDcwEYYPaHR0cDovL3Rlc3Qv
--NzA4MBGGD2h0dHA6Ly90ZXN0LzcwOTARhg9odHRwOi8vdGVzdC83MTAwEYYPaHR0
--cDovL3Rlc3QvNzExMBGGD2h0dHA6Ly90ZXN0LzcxMjARhg9odHRwOi8vdGVzdC83
--MTMwEYYPaHR0cDovL3Rlc3QvNzE0MBGGD2h0dHA6Ly90ZXN0LzcxNTARhg9odHRw
--Oi8vdGVzdC83MTYwEYYPaHR0cDovL3Rlc3QvNzE3MBGGD2h0dHA6Ly90ZXN0Lzcx
--ODARhg9odHRwOi8vdGVzdC83MTkwEYYPaHR0cDovL3Rlc3QvNzIwMBGGD2h0dHA6
--Ly90ZXN0LzcyMTARhg9odHRwOi8vdGVzdC83MjIwEYYPaHR0cDovL3Rlc3QvNzIz
--MBGGD2h0dHA6Ly90ZXN0LzcyNDARhg9odHRwOi8vdGVzdC83MjUwEYYPaHR0cDov
--L3Rlc3QvNzI2MBGGD2h0dHA6Ly90ZXN0LzcyNzARhg9odHRwOi8vdGVzdC83Mjgw
--EYYPaHR0cDovL3Rlc3QvNzI5MBGGD2h0dHA6Ly90ZXN0LzczMDARhg9odHRwOi8v
--dGVzdC83MzEwEYYPaHR0cDovL3Rlc3QvNzMyMBGGD2h0dHA6Ly90ZXN0LzczMzAR
--hg9odHRwOi8vdGVzdC83MzQwEYYPaHR0cDovL3Rlc3QvNzM1MBGGD2h0dHA6Ly90
--ZXN0LzczNjARhg9odHRwOi8vdGVzdC83MzcwEYYPaHR0cDovL3Rlc3QvNzM4MBGG
--D2h0dHA6Ly90ZXN0LzczOTARhg9odHRwOi8vdGVzdC83NDAwEYYPaHR0cDovL3Rl
--c3QvNzQxMBGGD2h0dHA6Ly90ZXN0Lzc0MjARhg9odHRwOi8vdGVzdC83NDMwEYYP
--aHR0cDovL3Rlc3QvNzQ0MBGGD2h0dHA6Ly90ZXN0Lzc0NTARhg9odHRwOi8vdGVz
--dC83NDYwEYYPaHR0cDovL3Rlc3QvNzQ3MBGGD2h0dHA6Ly90ZXN0Lzc0ODARhg9o
--dHRwOi8vdGVzdC83NDkwEYYPaHR0cDovL3Rlc3QvNzUwMBGGD2h0dHA6Ly90ZXN0
--Lzc1MTARhg9odHRwOi8vdGVzdC83NTIwEYYPaHR0cDovL3Rlc3QvNzUzMBGGD2h0
--dHA6Ly90ZXN0Lzc1NDARhg9odHRwOi8vdGVzdC83NTUwEYYPaHR0cDovL3Rlc3Qv
--NzU2MBGGD2h0dHA6Ly90ZXN0Lzc1NzARhg9odHRwOi8vdGVzdC83NTgwEYYPaHR0
--cDovL3Rlc3QvNzU5MBGGD2h0dHA6Ly90ZXN0Lzc2MDARhg9odHRwOi8vdGVzdC83
--NjEwEYYPaHR0cDovL3Rlc3QvNzYyMBGGD2h0dHA6Ly90ZXN0Lzc2MzARhg9odHRw
--Oi8vdGVzdC83NjQwEYYPaHR0cDovL3Rlc3QvNzY1MBGGD2h0dHA6Ly90ZXN0Lzc2
--NjARhg9odHRwOi8vdGVzdC83NjcwEYYPaHR0cDovL3Rlc3QvNzY4MBGGD2h0dHA6
--Ly90ZXN0Lzc2OTARhg9odHRwOi8vdGVzdC83NzAwEYYPaHR0cDovL3Rlc3QvNzcx
--MBGGD2h0dHA6Ly90ZXN0Lzc3MjARhg9odHRwOi8vdGVzdC83NzMwEYYPaHR0cDov
--L3Rlc3QvNzc0MBGGD2h0dHA6Ly90ZXN0Lzc3NTARhg9odHRwOi8vdGVzdC83NzYw
--EYYPaHR0cDovL3Rlc3QvNzc3MBGGD2h0dHA6Ly90ZXN0Lzc3ODARhg9odHRwOi8v
--dGVzdC83NzkwEYYPaHR0cDovL3Rlc3QvNzgwMBGGD2h0dHA6Ly90ZXN0Lzc4MTAR
--hg9odHRwOi8vdGVzdC83ODIwEYYPaHR0cDovL3Rlc3QvNzgzMBGGD2h0dHA6Ly90
--ZXN0Lzc4NDARhg9odHRwOi8vdGVzdC83ODUwEYYPaHR0cDovL3Rlc3QvNzg2MBGG
--D2h0dHA6Ly90ZXN0Lzc4NzARhg9odHRwOi8vdGVzdC83ODgwEYYPaHR0cDovL3Rl
--c3QvNzg5MBGGD2h0dHA6Ly90ZXN0Lzc5MDARhg9odHRwOi8vdGVzdC83OTEwEYYP
--aHR0cDovL3Rlc3QvNzkyMBGGD2h0dHA6Ly90ZXN0Lzc5MzARhg9odHRwOi8vdGVz
--dC83OTQwEYYPaHR0cDovL3Rlc3QvNzk1MBGGD2h0dHA6Ly90ZXN0Lzc5NjARhg9o
--dHRwOi8vdGVzdC83OTcwEYYPaHR0cDovL3Rlc3QvNzk4MBGGD2h0dHA6Ly90ZXN0
--Lzc5OTARhg9odHRwOi8vdGVzdC84MDAwEYYPaHR0cDovL3Rlc3QvODAxMBGGD2h0
--dHA6Ly90ZXN0LzgwMjARhg9odHRwOi8vdGVzdC84MDMwEYYPaHR0cDovL3Rlc3Qv
--ODA0MBGGD2h0dHA6Ly90ZXN0LzgwNTARhg9odHRwOi8vdGVzdC84MDYwEYYPaHR0
--cDovL3Rlc3QvODA3MBGGD2h0dHA6Ly90ZXN0LzgwODARhg9odHRwOi8vdGVzdC84
--MDkwEYYPaHR0cDovL3Rlc3QvODEwMBGGD2h0dHA6Ly90ZXN0LzgxMTARhg9odHRw
--Oi8vdGVzdC84MTIwEYYPaHR0cDovL3Rlc3QvODEzMBGGD2h0dHA6Ly90ZXN0Lzgx
--NDARhg9odHRwOi8vdGVzdC84MTUwEYYPaHR0cDovL3Rlc3QvODE2MBGGD2h0dHA6
--Ly90ZXN0LzgxNzARhg9odHRwOi8vdGVzdC84MTgwEYYPaHR0cDovL3Rlc3QvODE5
--MBGGD2h0dHA6Ly90ZXN0LzgyMDARhg9odHRwOi8vdGVzdC84MjEwEYYPaHR0cDov
--L3Rlc3QvODIyMBGGD2h0dHA6Ly90ZXN0LzgyMzARhg9odHRwOi8vdGVzdC84MjQw
--EYYPaHR0cDovL3Rlc3QvODI1MBGGD2h0dHA6Ly90ZXN0LzgyNjARhg9odHRwOi8v
--dGVzdC84MjcwEYYPaHR0cDovL3Rlc3QvODI4MBGGD2h0dHA6Ly90ZXN0LzgyOTAR
--hg9odHRwOi8vdGVzdC84MzAwEYYPaHR0cDovL3Rlc3QvODMxMBGGD2h0dHA6Ly90
--ZXN0LzgzMjARhg9odHRwOi8vdGVzdC84MzMwEYYPaHR0cDovL3Rlc3QvODM0MBGG
--D2h0dHA6Ly90ZXN0LzgzNTARhg9odHRwOi8vdGVzdC84MzYwEYYPaHR0cDovL3Rl
--c3QvODM3MBGGD2h0dHA6Ly90ZXN0LzgzODARhg9odHRwOi8vdGVzdC84MzkwEYYP
--aHR0cDovL3Rlc3QvODQwMBGGD2h0dHA6Ly90ZXN0Lzg0MTARhg9odHRwOi8vdGVz
--dC84NDIwEYYPaHR0cDovL3Rlc3QvODQzMBGGD2h0dHA6Ly90ZXN0Lzg0NDARhg9o
--dHRwOi8vdGVzdC84NDUwEYYPaHR0cDovL3Rlc3QvODQ2MBGGD2h0dHA6Ly90ZXN0
--Lzg0NzARhg9odHRwOi8vdGVzdC84NDgwEYYPaHR0cDovL3Rlc3QvODQ5MBGGD2h0
--dHA6Ly90ZXN0Lzg1MDARhg9odHRwOi8vdGVzdC84NTEwEYYPaHR0cDovL3Rlc3Qv
--ODUyMBGGD2h0dHA6Ly90ZXN0Lzg1MzARhg9odHRwOi8vdGVzdC84NTQwEYYPaHR0
--cDovL3Rlc3QvODU1MBGGD2h0dHA6Ly90ZXN0Lzg1NjARhg9odHRwOi8vdGVzdC84
--NTcwEYYPaHR0cDovL3Rlc3QvODU4MBGGD2h0dHA6Ly90ZXN0Lzg1OTARhg9odHRw
--Oi8vdGVzdC84NjAwEYYPaHR0cDovL3Rlc3QvODYxMBGGD2h0dHA6Ly90ZXN0Lzg2
--MjARhg9odHRwOi8vdGVzdC84NjMwEYYPaHR0cDovL3Rlc3QvODY0MBGGD2h0dHA6
--Ly90ZXN0Lzg2NTARhg9odHRwOi8vdGVzdC84NjYwEYYPaHR0cDovL3Rlc3QvODY3
--MBGGD2h0dHA6Ly90ZXN0Lzg2ODARhg9odHRwOi8vdGVzdC84NjkwEYYPaHR0cDov
--L3Rlc3QvODcwMBGGD2h0dHA6Ly90ZXN0Lzg3MTARhg9odHRwOi8vdGVzdC84NzIw
--EYYPaHR0cDovL3Rlc3QvODczMBGGD2h0dHA6Ly90ZXN0Lzg3NDARhg9odHRwOi8v
--dGVzdC84NzUwEYYPaHR0cDovL3Rlc3QvODc2MBGGD2h0dHA6Ly90ZXN0Lzg3NzAR
--hg9odHRwOi8vdGVzdC84NzgwEYYPaHR0cDovL3Rlc3QvODc5MBGGD2h0dHA6Ly90
--ZXN0Lzg4MDARhg9odHRwOi8vdGVzdC84ODEwEYYPaHR0cDovL3Rlc3QvODgyMBGG
--D2h0dHA6Ly90ZXN0Lzg4MzARhg9odHRwOi8vdGVzdC84ODQwEYYPaHR0cDovL3Rl
--c3QvODg1MBGGD2h0dHA6Ly90ZXN0Lzg4NjARhg9odHRwOi8vdGVzdC84ODcwEYYP
--aHR0cDovL3Rlc3QvODg4MBGGD2h0dHA6Ly90ZXN0Lzg4OTARhg9odHRwOi8vdGVz
--dC84OTAwEYYPaHR0cDovL3Rlc3QvODkxMBGGD2h0dHA6Ly90ZXN0Lzg5MjARhg9o
--dHRwOi8vdGVzdC84OTMwEYYPaHR0cDovL3Rlc3QvODk0MBGGD2h0dHA6Ly90ZXN0
--Lzg5NTARhg9odHRwOi8vdGVzdC84OTYwEYYPaHR0cDovL3Rlc3QvODk3MBGGD2h0
--dHA6Ly90ZXN0Lzg5ODARhg9odHRwOi8vdGVzdC84OTkwEYYPaHR0cDovL3Rlc3Qv
--OTAwMBGGD2h0dHA6Ly90ZXN0LzkwMTARhg9odHRwOi8vdGVzdC85MDIwEYYPaHR0
--cDovL3Rlc3QvOTAzMBGGD2h0dHA6Ly90ZXN0LzkwNDARhg9odHRwOi8vdGVzdC85
--MDUwEYYPaHR0cDovL3Rlc3QvOTA2MBGGD2h0dHA6Ly90ZXN0LzkwNzARhg9odHRw
--Oi8vdGVzdC85MDgwEYYPaHR0cDovL3Rlc3QvOTA5MBGGD2h0dHA6Ly90ZXN0Lzkx
--MDARhg9odHRwOi8vdGVzdC85MTEwEYYPaHR0cDovL3Rlc3QvOTEyMBGGD2h0dHA6
--Ly90ZXN0LzkxMzARhg9odHRwOi8vdGVzdC85MTQwEYYPaHR0cDovL3Rlc3QvOTE1
--MBGGD2h0dHA6Ly90ZXN0LzkxNjARhg9odHRwOi8vdGVzdC85MTcwEYYPaHR0cDov
--L3Rlc3QvOTE4MBGGD2h0dHA6Ly90ZXN0LzkxOTARhg9odHRwOi8vdGVzdC85MjAw
--EYYPaHR0cDovL3Rlc3QvOTIxMBGGD2h0dHA6Ly90ZXN0LzkyMjARhg9odHRwOi8v
--dGVzdC85MjMwEYYPaHR0cDovL3Rlc3QvOTI0MBGGD2h0dHA6Ly90ZXN0LzkyNTAR
--hg9odHRwOi8vdGVzdC85MjYwEYYPaHR0cDovL3Rlc3QvOTI3MBGGD2h0dHA6Ly90
--ZXN0LzkyODARhg9odHRwOi8vdGVzdC85MjkwEYYPaHR0cDovL3Rlc3QvOTMwMBGG
--D2h0dHA6Ly90ZXN0LzkzMTARhg9odHRwOi8vdGVzdC85MzIwEYYPaHR0cDovL3Rl
--c3QvOTMzMBGGD2h0dHA6Ly90ZXN0LzkzNDARhg9odHRwOi8vdGVzdC85MzUwEYYP
--aHR0cDovL3Rlc3QvOTM2MBGGD2h0dHA6Ly90ZXN0LzkzNzARhg9odHRwOi8vdGVz
--dC85MzgwEYYPaHR0cDovL3Rlc3QvOTM5MBGGD2h0dHA6Ly90ZXN0Lzk0MDARhg9o
--dHRwOi8vdGVzdC85NDEwEYYPaHR0cDovL3Rlc3QvOTQyMBGGD2h0dHA6Ly90ZXN0
--Lzk0MzARhg9odHRwOi8vdGVzdC85NDQwEYYPaHR0cDovL3Rlc3QvOTQ1MBGGD2h0
--dHA6Ly90ZXN0Lzk0NjARhg9odHRwOi8vdGVzdC85NDcwEYYPaHR0cDovL3Rlc3Qv
--OTQ4MBGGD2h0dHA6Ly90ZXN0Lzk0OTARhg9odHRwOi8vdGVzdC85NTAwEYYPaHR0
--cDovL3Rlc3QvOTUxMBGGD2h0dHA6Ly90ZXN0Lzk1MjARhg9odHRwOi8vdGVzdC85
--NTMwEYYPaHR0cDovL3Rlc3QvOTU0MBGGD2h0dHA6Ly90ZXN0Lzk1NTARhg9odHRw
--Oi8vdGVzdC85NTYwEYYPaHR0cDovL3Rlc3QvOTU3MBGGD2h0dHA6Ly90ZXN0Lzk1
--ODARhg9odHRwOi8vdGVzdC85NTkwEYYPaHR0cDovL3Rlc3QvOTYwMBGGD2h0dHA6
--Ly90ZXN0Lzk2MTARhg9odHRwOi8vdGVzdC85NjIwEYYPaHR0cDovL3Rlc3QvOTYz
--MBGGD2h0dHA6Ly90ZXN0Lzk2NDARhg9odHRwOi8vdGVzdC85NjUwEYYPaHR0cDov
--L3Rlc3QvOTY2MBGGD2h0dHA6Ly90ZXN0Lzk2NzARhg9odHRwOi8vdGVzdC85Njgw
--EYYPaHR0cDovL3Rlc3QvOTY5MBGGD2h0dHA6Ly90ZXN0Lzk3MDARhg9odHRwOi8v
--dGVzdC85NzEwEYYPaHR0cDovL3Rlc3QvOTcyMBGGD2h0dHA6Ly90ZXN0Lzk3MzAR
--hg9odHRwOi8vdGVzdC85NzQwEYYPaHR0cDovL3Rlc3QvOTc1MBGGD2h0dHA6Ly90
--ZXN0Lzk3NjARhg9odHRwOi8vdGVzdC85NzcwEYYPaHR0cDovL3Rlc3QvOTc4MBGG
--D2h0dHA6Ly90ZXN0Lzk3OTARhg9odHRwOi8vdGVzdC85ODAwEYYPaHR0cDovL3Rl
--c3QvOTgxMBGGD2h0dHA6Ly90ZXN0Lzk4MjARhg9odHRwOi8vdGVzdC85ODMwEYYP
--aHR0cDovL3Rlc3QvOTg0MBGGD2h0dHA6Ly90ZXN0Lzk4NTARhg9odHRwOi8vdGVz
--dC85ODYwEYYPaHR0cDovL3Rlc3QvOTg3MBGGD2h0dHA6Ly90ZXN0Lzk4ODARhg9o
--dHRwOi8vdGVzdC85ODkwEYYPaHR0cDovL3Rlc3QvOTkwMBGGD2h0dHA6Ly90ZXN0
--Lzk5MTARhg9odHRwOi8vdGVzdC85OTIwEYYPaHR0cDovL3Rlc3QvOTkzMBGGD2h0
--dHA6Ly90ZXN0Lzk5NDARhg9odHRwOi8vdGVzdC85OTUwEYYPaHR0cDovL3Rlc3Qv
--OTk2MBGGD2h0dHA6Ly90ZXN0Lzk5NzARhg9odHRwOi8vdGVzdC85OTgwEYYPaHR0
--cDovL3Rlc3QvOTk5MBKGEGh0dHA6Ly90ZXN0LzEwMDAwEoYQaHR0cDovL3Rlc3Qv
--MTAwMTAShhBodHRwOi8vdGVzdC8xMDAyMBKGEGh0dHA6Ly90ZXN0LzEwMDMwEoYQ
--aHR0cDovL3Rlc3QvMTAwNDAShhBodHRwOi8vdGVzdC8xMDA1MBKGEGh0dHA6Ly90
--ZXN0LzEwMDYwEoYQaHR0cDovL3Rlc3QvMTAwNzAShhBodHRwOi8vdGVzdC8xMDA4
--MBKGEGh0dHA6Ly90ZXN0LzEwMDkwEoYQaHR0cDovL3Rlc3QvMTAxMDAShhBodHRw
--Oi8vdGVzdC8xMDExMBKGEGh0dHA6Ly90ZXN0LzEwMTIwEoYQaHR0cDovL3Rlc3Qv
--MTAxMzAShhBodHRwOi8vdGVzdC8xMDE0MBKGEGh0dHA6Ly90ZXN0LzEwMTUwEoYQ
--aHR0cDovL3Rlc3QvMTAxNjAShhBodHRwOi8vdGVzdC8xMDE3MBKGEGh0dHA6Ly90
--ZXN0LzEwMTgwEoYQaHR0cDovL3Rlc3QvMTAxOTAShhBodHRwOi8vdGVzdC8xMDIw
--MBKGEGh0dHA6Ly90ZXN0LzEwMjEwEoYQaHR0cDovL3Rlc3QvMTAyMjAShhBodHRw
--Oi8vdGVzdC8xMDIzMBKGEGh0dHA6Ly90ZXN0LzEwMjShgq+CMAmCB3gwLnRlc3Qw
--CYIHeDEudGVzdDAJggd4Mi50ZXN0MAmCB3gzLnRlc3QwCYIHeDQudGVzdDAJggd4
--NS50ZXN0MAmCB3g2LnRlc3QwCYIHeDcudGVzdDAJggd4OC50ZXN0MAmCB3g5LnRl
--c3QwCoIIeDEwLnRlc3QwCoIIeDExLnRlc3QwCoIIeDEyLnRlc3QwCoIIeDEzLnRl
--c3QwCoIIeDE0LnRlc3QwCoIIeDE1LnRlc3QwCoIIeDE2LnRlc3QwCoIIeDE3LnRl
--c3QwCoIIeDE4LnRlc3QwCoIIeDE5LnRlc3QwCoIIeDIwLnRlc3QwCoIIeDIxLnRl
--c3QwCoIIeDIyLnRlc3QwCoIIeDIzLnRlc3QwCoIIeDI0LnRlc3QwCoIIeDI1LnRl
--c3QwCoIIeDI2LnRlc3QwCoIIeDI3LnRlc3QwCoIIeDI4LnRlc3QwCoIIeDI5LnRl
--c3QwCoIIeDMwLnRlc3QwCoIIeDMxLnRlc3QwCoIIeDMyLnRlc3QwCoIIeDMzLnRl
--c3QwCoIIeDM0LnRlc3QwCoIIeDM1LnRlc3QwCoIIeDM2LnRlc3QwCoIIeDM3LnRl
--c3QwCoIIeDM4LnRlc3QwCoIIeDM5LnRlc3QwCoIIeDQwLnRlc3QwCoIIeDQxLnRl
--c3QwCoIIeDQyLnRlc3QwCoIIeDQzLnRlc3QwCoIIeDQ0LnRlc3QwCoIIeDQ1LnRl
--c3QwCoIIeDQ2LnRlc3QwCoIIeDQ3LnRlc3QwCoIIeDQ4LnRlc3QwCoIIeDQ5LnRl
--c3QwCoIIeDUwLnRlc3QwCoIIeDUxLnRlc3QwCoIIeDUyLnRlc3QwCoIIeDUzLnRl
--c3QwCoIIeDU0LnRlc3QwCoIIeDU1LnRlc3QwCoIIeDU2LnRlc3QwCoIIeDU3LnRl
--c3QwCoIIeDU4LnRlc3QwCoIIeDU5LnRlc3QwCoIIeDYwLnRlc3QwCoIIeDYxLnRl
--c3QwCoIIeDYyLnRlc3QwCoIIeDYzLnRlc3QwCoIIeDY0LnRlc3QwCoIIeDY1LnRl
--c3QwCoIIeDY2LnRlc3QwCoIIeDY3LnRlc3QwCoIIeDY4LnRlc3QwCoIIeDY5LnRl
--c3QwCoIIeDcwLnRlc3QwCoIIeDcxLnRlc3QwCoIIeDcyLnRlc3QwCoIIeDczLnRl
--c3QwCoIIeDc0LnRlc3QwCoIIeDc1LnRlc3QwCoIIeDc2LnRlc3QwCoIIeDc3LnRl
--c3QwCoIIeDc4LnRlc3QwCoIIeDc5LnRlc3QwCoIIeDgwLnRlc3QwCoIIeDgxLnRl
--c3QwCoIIeDgyLnRlc3QwCoIIeDgzLnRlc3QwCoIIeDg0LnRlc3QwCoIIeDg1LnRl
--c3QwCoIIeDg2LnRlc3QwCoIIeDg3LnRlc3QwCoIIeDg4LnRlc3QwCoIIeDg5LnRl
--c3QwCoIIeDkwLnRlc3QwCoIIeDkxLnRlc3QwCoIIeDkyLnRlc3QwCoIIeDkzLnRl
--c3QwCoIIeDk0LnRlc3QwCoIIeDk1LnRlc3QwCoIIeDk2LnRlc3QwCoIIeDk3LnRl
--c3QwCoIIeDk4LnRlc3QwCoIIeDk5LnRlc3QwC4IJeDEwMC50ZXN0MAuCCXgxMDEu
--dGVzdDALggl4MTAyLnRlc3QwC4IJeDEwMy50ZXN0MAuCCXgxMDQudGVzdDALggl4
--MTA1LnRlc3QwC4IJeDEwNi50ZXN0MAuCCXgxMDcudGVzdDALggl4MTA4LnRlc3Qw
--C4IJeDEwOS50ZXN0MAuCCXgxMTAudGVzdDALggl4MTExLnRlc3QwC4IJeDExMi50
--ZXN0MAuCCXgxMTMudGVzdDALggl4MTE0LnRlc3QwC4IJeDExNS50ZXN0MAuCCXgx
--MTYudGVzdDALggl4MTE3LnRlc3QwC4IJeDExOC50ZXN0MAuCCXgxMTkudGVzdDAL
--ggl4MTIwLnRlc3QwC4IJeDEyMS50ZXN0MAuCCXgxMjIudGVzdDALggl4MTIzLnRl
--c3QwC4IJeDEyNC50ZXN0MAuCCXgxMjUudGVzdDALggl4MTI2LnRlc3QwC4IJeDEy
--Ny50ZXN0MAuCCXgxMjgudGVzdDALggl4MTI5LnRlc3QwC4IJeDEzMC50ZXN0MAuC
--CXgxMzEudGVzdDALggl4MTMyLnRlc3QwC4IJeDEzMy50ZXN0MAuCCXgxMzQudGVz
--dDALggl4MTM1LnRlc3QwC4IJeDEzNi50ZXN0MAuCCXgxMzcudGVzdDALggl4MTM4
--LnRlc3QwC4IJeDEzOS50ZXN0MAuCCXgxNDAudGVzdDALggl4MTQxLnRlc3QwC4IJ
--eDE0Mi50ZXN0MAuCCXgxNDMudGVzdDALggl4MTQ0LnRlc3QwC4IJeDE0NS50ZXN0
--MAuCCXgxNDYudGVzdDALggl4MTQ3LnRlc3QwC4IJeDE0OC50ZXN0MAuCCXgxNDku
--dGVzdDALggl4MTUwLnRlc3QwC4IJeDE1MS50ZXN0MAuCCXgxNTIudGVzdDALggl4
--MTUzLnRlc3QwC4IJeDE1NC50ZXN0MAuCCXgxNTUudGVzdDALggl4MTU2LnRlc3Qw
--C4IJeDE1Ny50ZXN0MAuCCXgxNTgudGVzdDALggl4MTU5LnRlc3QwC4IJeDE2MC50
--ZXN0MAuCCXgxNjEudGVzdDALggl4MTYyLnRlc3QwC4IJeDE2My50ZXN0MAuCCXgx
--NjQudGVzdDALggl4MTY1LnRlc3QwC4IJeDE2Ni50ZXN0MAuCCXgxNjcudGVzdDAL
--ggl4MTY4LnRlc3QwC4IJeDE2OS50ZXN0MAuCCXgxNzAudGVzdDALggl4MTcxLnRl
--c3QwC4IJeDE3Mi50ZXN0MAuCCXgxNzMudGVzdDALggl4MTc0LnRlc3QwC4IJeDE3
--NS50ZXN0MAuCCXgxNzYudGVzdDALggl4MTc3LnRlc3QwC4IJeDE3OC50ZXN0MAuC
--CXgxNzkudGVzdDALggl4MTgwLnRlc3QwC4IJeDE4MS50ZXN0MAuCCXgxODIudGVz
--dDALggl4MTgzLnRlc3QwC4IJeDE4NC50ZXN0MAuCCXgxODUudGVzdDALggl4MTg2
--LnRlc3QwC4IJeDE4Ny50ZXN0MAuCCXgxODgudGVzdDALggl4MTg5LnRlc3QwC4IJ
--eDE5MC50ZXN0MAuCCXgxOTEudGVzdDALggl4MTkyLnRlc3QwC4IJeDE5My50ZXN0
--MAuCCXgxOTQudGVzdDALggl4MTk1LnRlc3QwC4IJeDE5Ni50ZXN0MAuCCXgxOTcu
--dGVzdDALggl4MTk4LnRlc3QwC4IJeDE5OS50ZXN0MAuCCXgyMDAudGVzdDALggl4
--MjAxLnRlc3QwC4IJeDIwMi50ZXN0MAuCCXgyMDMudGVzdDALggl4MjA0LnRlc3Qw
--C4IJeDIwNS50ZXN0MAuCCXgyMDYudGVzdDALggl4MjA3LnRlc3QwC4IJeDIwOC50
--ZXN0MAuCCXgyMDkudGVzdDALggl4MjEwLnRlc3QwC4IJeDIxMS50ZXN0MAuCCXgy
--MTIudGVzdDALggl4MjEzLnRlc3QwC4IJeDIxNC50ZXN0MAuCCXgyMTUudGVzdDAL
--ggl4MjE2LnRlc3QwC4IJeDIxNy50ZXN0MAuCCXgyMTgudGVzdDALggl4MjE5LnRl
--c3QwC4IJeDIyMC50ZXN0MAuCCXgyMjEudGVzdDALggl4MjIyLnRlc3QwC4IJeDIy
--My50ZXN0MAuCCXgyMjQudGVzdDALggl4MjI1LnRlc3QwC4IJeDIyNi50ZXN0MAuC
--CXgyMjcudGVzdDALggl4MjI4LnRlc3QwC4IJeDIyOS50ZXN0MAuCCXgyMzAudGVz
--dDALggl4MjMxLnRlc3QwC4IJeDIzMi50ZXN0MAuCCXgyMzMudGVzdDALggl4MjM0
--LnRlc3QwC4IJeDIzNS50ZXN0MAuCCXgyMzYudGVzdDALggl4MjM3LnRlc3QwC4IJ
--eDIzOC50ZXN0MAuCCXgyMzkudGVzdDALggl4MjQwLnRlc3QwC4IJeDI0MS50ZXN0
--MAuCCXgyNDIudGVzdDALggl4MjQzLnRlc3QwC4IJeDI0NC50ZXN0MAuCCXgyNDUu
--dGVzdDALggl4MjQ2LnRlc3QwC4IJeDI0Ny50ZXN0MAuCCXgyNDgudGVzdDALggl4
--MjQ5LnRlc3QwC4IJeDI1MC50ZXN0MAuCCXgyNTEudGVzdDALggl4MjUyLnRlc3Qw
--C4IJeDI1My50ZXN0MAuCCXgyNTQudGVzdDALggl4MjU1LnRlc3QwC4IJeDI1Ni50
--ZXN0MAuCCXgyNTcudGVzdDALggl4MjU4LnRlc3QwC4IJeDI1OS50ZXN0MAuCCXgy
--NjAudGVzdDALggl4MjYxLnRlc3QwC4IJeDI2Mi50ZXN0MAuCCXgyNjMudGVzdDAL
--ggl4MjY0LnRlc3QwC4IJeDI2NS50ZXN0MAuCCXgyNjYudGVzdDALggl4MjY3LnRl
--c3QwC4IJeDI2OC50ZXN0MAuCCXgyNjkudGVzdDALggl4MjcwLnRlc3QwC4IJeDI3
--MS50ZXN0MAuCCXgyNzIudGVzdDALggl4MjczLnRlc3QwC4IJeDI3NC50ZXN0MAuC
--CXgyNzUudGVzdDALggl4Mjc2LnRlc3QwC4IJeDI3Ny50ZXN0MAuCCXgyNzgudGVz
--dDALggl4Mjc5LnRlc3QwC4IJeDI4MC50ZXN0MAuCCXgyODEudGVzdDALggl4Mjgy
--LnRlc3QwC4IJeDI4My50ZXN0MAuCCXgyODQudGVzdDALggl4Mjg1LnRlc3QwC4IJ
--eDI4Ni50ZXN0MAuCCXgyODcudGVzdDALggl4Mjg4LnRlc3QwC4IJeDI4OS50ZXN0
--MAuCCXgyOTAudGVzdDALggl4MjkxLnRlc3QwC4IJeDI5Mi50ZXN0MAuCCXgyOTMu
--dGVzdDALggl4Mjk0LnRlc3QwC4IJeDI5NS50ZXN0MAuCCXgyOTYudGVzdDALggl4
--Mjk3LnRlc3QwC4IJeDI5OC50ZXN0MAuCCXgyOTkudGVzdDALggl4MzAwLnRlc3Qw
--C4IJeDMwMS50ZXN0MAuCCXgzMDIudGVzdDALggl4MzAzLnRlc3QwC4IJeDMwNC50
--ZXN0MAuCCXgzMDUudGVzdDALggl4MzA2LnRlc3QwC4IJeDMwNy50ZXN0MAuCCXgz
--MDgudGVzdDALggl4MzA5LnRlc3QwC4IJeDMxMC50ZXN0MAuCCXgzMTEudGVzdDAL
--ggl4MzEyLnRlc3QwC4IJeDMxMy50ZXN0MAuCCXgzMTQudGVzdDALggl4MzE1LnRl
--c3QwC4IJeDMxNi50ZXN0MAuCCXgzMTcudGVzdDALggl4MzE4LnRlc3QwC4IJeDMx
--OS50ZXN0MAuCCXgzMjAudGVzdDALggl4MzIxLnRlc3QwC4IJeDMyMi50ZXN0MAuC
--CXgzMjMudGVzdDALggl4MzI0LnRlc3QwC4IJeDMyNS50ZXN0MAuCCXgzMjYudGVz
--dDALggl4MzI3LnRlc3QwC4IJeDMyOC50ZXN0MAuCCXgzMjkudGVzdDALggl4MzMw
--LnRlc3QwC4IJeDMzMS50ZXN0MAuCCXgzMzIudGVzdDALggl4MzMzLnRlc3QwC4IJ
--eDMzNC50ZXN0MAuCCXgzMzUudGVzdDALggl4MzM2LnRlc3QwC4IJeDMzNy50ZXN0
--MAuCCXgzMzgudGVzdDALggl4MzM5LnRlc3QwC4IJeDM0MC50ZXN0MAuCCXgzNDEu
--dGVzdDALggl4MzQyLnRlc3QwC4IJeDM0My50ZXN0MAuCCXgzNDQudGVzdDALggl4
--MzQ1LnRlc3QwC4IJeDM0Ni50ZXN0MAuCCXgzNDcudGVzdDALggl4MzQ4LnRlc3Qw
--C4IJeDM0OS50ZXN0MAuCCXgzNTAudGVzdDALggl4MzUxLnRlc3QwC4IJeDM1Mi50
--ZXN0MAuCCXgzNTMudGVzdDALggl4MzU0LnRlc3QwC4IJeDM1NS50ZXN0MAuCCXgz
--NTYudGVzdDALggl4MzU3LnRlc3QwC4IJeDM1OC50ZXN0MAuCCXgzNTkudGVzdDAL
--ggl4MzYwLnRlc3QwC4IJeDM2MS50ZXN0MAuCCXgzNjIudGVzdDALggl4MzYzLnRl
--c3QwC4IJeDM2NC50ZXN0MAuCCXgzNjUudGVzdDALggl4MzY2LnRlc3QwC4IJeDM2
--Ny50ZXN0MAuCCXgzNjgudGVzdDALggl4MzY5LnRlc3QwC4IJeDM3MC50ZXN0MAuC
--CXgzNzEudGVzdDALggl4MzcyLnRlc3QwC4IJeDM3My50ZXN0MAuCCXgzNzQudGVz
--dDALggl4Mzc1LnRlc3QwC4IJeDM3Ni50ZXN0MAuCCXgzNzcudGVzdDALggl4Mzc4
--LnRlc3QwC4IJeDM3OS50ZXN0MAuCCXgzODAudGVzdDALggl4MzgxLnRlc3QwC4IJ
--eDM4Mi50ZXN0MAuCCXgzODMudGVzdDALggl4Mzg0LnRlc3QwC4IJeDM4NS50ZXN0
--MAuCCXgzODYudGVzdDALggl4Mzg3LnRlc3QwC4IJeDM4OC50ZXN0MAuCCXgzODku
--dGVzdDALggl4MzkwLnRlc3QwC4IJeDM5MS50ZXN0MAuCCXgzOTIudGVzdDALggl4
--MzkzLnRlc3QwC4IJeDM5NC50ZXN0MAuCCXgzOTUudGVzdDALggl4Mzk2LnRlc3Qw
--C4IJeDM5Ny50ZXN0MAuCCXgzOTgudGVzdDALggl4Mzk5LnRlc3QwC4IJeDQwMC50
--ZXN0MAuCCXg0MDEudGVzdDALggl4NDAyLnRlc3QwC4IJeDQwMy50ZXN0MAuCCXg0
--MDQudGVzdDALggl4NDA1LnRlc3QwC4IJeDQwNi50ZXN0MAuCCXg0MDcudGVzdDAL
--ggl4NDA4LnRlc3QwC4IJeDQwOS50ZXN0MAuCCXg0MTAudGVzdDALggl4NDExLnRl
--c3QwC4IJeDQxMi50ZXN0MAuCCXg0MTMudGVzdDALggl4NDE0LnRlc3QwC4IJeDQx
--NS50ZXN0MAuCCXg0MTYudGVzdDALggl4NDE3LnRlc3QwC4IJeDQxOC50ZXN0MAuC
--CXg0MTkudGVzdDALggl4NDIwLnRlc3QwC4IJeDQyMS50ZXN0MAuCCXg0MjIudGVz
--dDALggl4NDIzLnRlc3QwC4IJeDQyNC50ZXN0MAuCCXg0MjUudGVzdDALggl4NDI2
--LnRlc3QwC4IJeDQyNy50ZXN0MAuCCXg0MjgudGVzdDALggl4NDI5LnRlc3QwC4IJ
--eDQzMC50ZXN0MAuCCXg0MzEudGVzdDALggl4NDMyLnRlc3QwC4IJeDQzMy50ZXN0
--MAuCCXg0MzQudGVzdDALggl4NDM1LnRlc3QwC4IJeDQzNi50ZXN0MAuCCXg0Mzcu
--dGVzdDALggl4NDM4LnRlc3QwC4IJeDQzOS50ZXN0MAuCCXg0NDAudGVzdDALggl4
--NDQxLnRlc3QwC4IJeDQ0Mi50ZXN0MAuCCXg0NDMudGVzdDALggl4NDQ0LnRlc3Qw
--C4IJeDQ0NS50ZXN0MAuCCXg0NDYudGVzdDALggl4NDQ3LnRlc3QwC4IJeDQ0OC50
--ZXN0MAuCCXg0NDkudGVzdDALggl4NDUwLnRlc3QwC4IJeDQ1MS50ZXN0MAuCCXg0
--NTIudGVzdDALggl4NDUzLnRlc3QwC4IJeDQ1NC50ZXN0MAuCCXg0NTUudGVzdDAL
--ggl4NDU2LnRlc3QwC4IJeDQ1Ny50ZXN0MAuCCXg0NTgudGVzdDALggl4NDU5LnRl
--c3QwC4IJeDQ2MC50ZXN0MAuCCXg0NjEudGVzdDALggl4NDYyLnRlc3QwC4IJeDQ2
--My50ZXN0MAuCCXg0NjQudGVzdDALggl4NDY1LnRlc3QwC4IJeDQ2Ni50ZXN0MAuC
--CXg0NjcudGVzdDALggl4NDY4LnRlc3QwC4IJeDQ2OS50ZXN0MAuCCXg0NzAudGVz
--dDALggl4NDcxLnRlc3QwC4IJeDQ3Mi50ZXN0MAuCCXg0NzMudGVzdDALggl4NDc0
--LnRlc3QwC4IJeDQ3NS50ZXN0MAuCCXg0NzYudGVzdDALggl4NDc3LnRlc3QwC4IJ
--eDQ3OC50ZXN0MAuCCXg0NzkudGVzdDALggl4NDgwLnRlc3QwC4IJeDQ4MS50ZXN0
--MAuCCXg0ODIudGVzdDALggl4NDgzLnRlc3QwC4IJeDQ4NC50ZXN0MAuCCXg0ODUu
--dGVzdDALggl4NDg2LnRlc3QwC4IJeDQ4Ny50ZXN0MAuCCXg0ODgudGVzdDALggl4
--NDg5LnRlc3QwC4IJeDQ5MC50ZXN0MAuCCXg0OTEudGVzdDALggl4NDkyLnRlc3Qw
--C4IJeDQ5My50ZXN0MAuCCXg0OTQudGVzdDALggl4NDk1LnRlc3QwC4IJeDQ5Ni50
--ZXN0MAuCCXg0OTcudGVzdDALggl4NDk4LnRlc3QwC4IJeDQ5OS50ZXN0MAuCCXg1
--MDAudGVzdDALggl4NTAxLnRlc3QwC4IJeDUwMi50ZXN0MAuCCXg1MDMudGVzdDAL
--ggl4NTA0LnRlc3QwC4IJeDUwNS50ZXN0MAuCCXg1MDYudGVzdDALggl4NTA3LnRl
--c3QwC4IJeDUwOC50ZXN0MAuCCXg1MDkudGVzdDALggl4NTEwLnRlc3QwC4IJeDUx
--MS50ZXN0MAuCCXg1MTIudGVzdDALggl4NTEzLnRlc3QwC4IJeDUxNC50ZXN0MAuC
--CXg1MTUudGVzdDALggl4NTE2LnRlc3QwC4IJeDUxNy50ZXN0MAuCCXg1MTgudGVz
--dDALggl4NTE5LnRlc3QwC4IJeDUyMC50ZXN0MAuCCXg1MjEudGVzdDALggl4NTIy
--LnRlc3QwC4IJeDUyMy50ZXN0MAuCCXg1MjQudGVzdDALggl4NTI1LnRlc3QwC4IJ
--eDUyNi50ZXN0MAuCCXg1MjcudGVzdDALggl4NTI4LnRlc3QwC4IJeDUyOS50ZXN0
--MAuCCXg1MzAudGVzdDALggl4NTMxLnRlc3QwC4IJeDUzMi50ZXN0MAuCCXg1MzMu
--dGVzdDALggl4NTM0LnRlc3QwC4IJeDUzNS50ZXN0MAuCCXg1MzYudGVzdDALggl4
--NTM3LnRlc3QwC4IJeDUzOC50ZXN0MAuCCXg1MzkudGVzdDALggl4NTQwLnRlc3Qw
--C4IJeDU0MS50ZXN0MAuCCXg1NDIudGVzdDALggl4NTQzLnRlc3QwC4IJeDU0NC50
--ZXN0MAuCCXg1NDUudGVzdDALggl4NTQ2LnRlc3QwC4IJeDU0Ny50ZXN0MAuCCXg1
--NDgudGVzdDALggl4NTQ5LnRlc3QwC4IJeDU1MC50ZXN0MAuCCXg1NTEudGVzdDAL
--ggl4NTUyLnRlc3QwC4IJeDU1My50ZXN0MAuCCXg1NTQudGVzdDALggl4NTU1LnRl
--c3QwC4IJeDU1Ni50ZXN0MAuCCXg1NTcudGVzdDALggl4NTU4LnRlc3QwC4IJeDU1
--OS50ZXN0MAuCCXg1NjAudGVzdDALggl4NTYxLnRlc3QwC4IJeDU2Mi50ZXN0MAuC
--CXg1NjMudGVzdDALggl4NTY0LnRlc3QwC4IJeDU2NS50ZXN0MAuCCXg1NjYudGVz
--dDALggl4NTY3LnRlc3QwC4IJeDU2OC50ZXN0MAuCCXg1NjkudGVzdDALggl4NTcw
--LnRlc3QwC4IJeDU3MS50ZXN0MAuCCXg1NzIudGVzdDALggl4NTczLnRlc3QwC4IJ
--eDU3NC50ZXN0MAuCCXg1NzUudGVzdDALggl4NTc2LnRlc3QwC4IJeDU3Ny50ZXN0
--MAuCCXg1NzgudGVzdDALggl4NTc5LnRlc3QwC4IJeDU4MC50ZXN0MAuCCXg1ODEu
--dGVzdDALggl4NTgyLnRlc3QwC4IJeDU4My50ZXN0MAuCCXg1ODQudGVzdDALggl4
--NTg1LnRlc3QwC4IJeDU4Ni50ZXN0MAuCCXg1ODcudGVzdDALggl4NTg4LnRlc3Qw
--C4IJeDU4OS50ZXN0MAuCCXg1OTAudGVzdDALggl4NTkxLnRlc3QwC4IJeDU5Mi50
--ZXN0MAuCCXg1OTMudGVzdDALggl4NTk0LnRlc3QwC4IJeDU5NS50ZXN0MAuCCXg1
--OTYudGVzdDALggl4NTk3LnRlc3QwC4IJeDU5OC50ZXN0MAuCCXg1OTkudGVzdDAL
--ggl4NjAwLnRlc3QwC4IJeDYwMS50ZXN0MAuCCXg2MDIudGVzdDALggl4NjAzLnRl
--c3QwC4IJeDYwNC50ZXN0MAuCCXg2MDUudGVzdDALggl4NjA2LnRlc3QwC4IJeDYw
--Ny50ZXN0MAuCCXg2MDgudGVzdDALggl4NjA5LnRlc3QwC4IJeDYxMC50ZXN0MAuC
--CXg2MTEudGVzdDALggl4NjEyLnRlc3QwC4IJeDYxMy50ZXN0MAuCCXg2MTQudGVz
--dDALggl4NjE1LnRlc3QwC4IJeDYxNi50ZXN0MAuCCXg2MTcudGVzdDALggl4NjE4
--LnRlc3QwC4IJeDYxOS50ZXN0MAuCCXg2MjAudGVzdDALggl4NjIxLnRlc3QwC4IJ
--eDYyMi50ZXN0MAuCCXg2MjMudGVzdDALggl4NjI0LnRlc3QwC4IJeDYyNS50ZXN0
--MAuCCXg2MjYudGVzdDALggl4NjI3LnRlc3QwC4IJeDYyOC50ZXN0MAuCCXg2Mjku
--dGVzdDALggl4NjMwLnRlc3QwC4IJeDYzMS50ZXN0MAuCCXg2MzIudGVzdDALggl4
--NjMzLnRlc3QwC4IJeDYzNC50ZXN0MAuCCXg2MzUudGVzdDALggl4NjM2LnRlc3Qw
--C4IJeDYzNy50ZXN0MAuCCXg2MzgudGVzdDALggl4NjM5LnRlc3QwC4IJeDY0MC50
--ZXN0MAuCCXg2NDEudGVzdDALggl4NjQyLnRlc3QwC4IJeDY0My50ZXN0MAuCCXg2
--NDQudGVzdDALggl4NjQ1LnRlc3QwC4IJeDY0Ni50ZXN0MAuCCXg2NDcudGVzdDAL
--ggl4NjQ4LnRlc3QwC4IJeDY0OS50ZXN0MAuCCXg2NTAudGVzdDALggl4NjUxLnRl
--c3QwC4IJeDY1Mi50ZXN0MAuCCXg2NTMudGVzdDALggl4NjU0LnRlc3QwC4IJeDY1
--NS50ZXN0MAuCCXg2NTYudGVzdDALggl4NjU3LnRlc3QwC4IJeDY1OC50ZXN0MAuC
--CXg2NTkudGVzdDALggl4NjYwLnRlc3QwC4IJeDY2MS50ZXN0MAuCCXg2NjIudGVz
--dDALggl4NjYzLnRlc3QwC4IJeDY2NC50ZXN0MAuCCXg2NjUudGVzdDALggl4NjY2
--LnRlc3QwC4IJeDY2Ny50ZXN0MAuCCXg2NjgudGVzdDALggl4NjY5LnRlc3QwC4IJ
--eDY3MC50ZXN0MAuCCXg2NzEudGVzdDALggl4NjcyLnRlc3QwC4IJeDY3My50ZXN0
--MAuCCXg2NzQudGVzdDALggl4Njc1LnRlc3QwC4IJeDY3Ni50ZXN0MAuCCXg2Nzcu
--dGVzdDALggl4Njc4LnRlc3QwC4IJeDY3OS50ZXN0MAuCCXg2ODAudGVzdDALggl4
--NjgxLnRlc3QwC4IJeDY4Mi50ZXN0MAuCCXg2ODMudGVzdDALggl4Njg0LnRlc3Qw
--C4IJeDY4NS50ZXN0MAuCCXg2ODYudGVzdDALggl4Njg3LnRlc3QwC4IJeDY4OC50
--ZXN0MAuCCXg2ODkudGVzdDALggl4NjkwLnRlc3QwC4IJeDY5MS50ZXN0MAuCCXg2
--OTIudGVzdDALggl4NjkzLnRlc3QwC4IJeDY5NC50ZXN0MAuCCXg2OTUudGVzdDAL
--ggl4Njk2LnRlc3QwC4IJeDY5Ny50ZXN0MAuCCXg2OTgudGVzdDALggl4Njk5LnRl
--c3QwC4IJeDcwMC50ZXN0MAuCCXg3MDEudGVzdDALggl4NzAyLnRlc3QwC4IJeDcw
--My50ZXN0MAuCCXg3MDQudGVzdDALggl4NzA1LnRlc3QwC4IJeDcwNi50ZXN0MAuC
--CXg3MDcudGVzdDALggl4NzA4LnRlc3QwC4IJeDcwOS50ZXN0MAuCCXg3MTAudGVz
--dDALggl4NzExLnRlc3QwC4IJeDcxMi50ZXN0MAuCCXg3MTMudGVzdDALggl4NzE0
--LnRlc3QwC4IJeDcxNS50ZXN0MAuCCXg3MTYudGVzdDALggl4NzE3LnRlc3QwC4IJ
--eDcxOC50ZXN0MAuCCXg3MTkudGVzdDALggl4NzIwLnRlc3QwC4IJeDcyMS50ZXN0
--MAuCCXg3MjIudGVzdDALggl4NzIzLnRlc3QwC4IJeDcyNC50ZXN0MAuCCXg3MjUu
--dGVzdDALggl4NzI2LnRlc3QwC4IJeDcyNy50ZXN0MAuCCXg3MjgudGVzdDALggl4
--NzI5LnRlc3QwC4IJeDczMC50ZXN0MAuCCXg3MzEudGVzdDALggl4NzMyLnRlc3Qw
--C4IJeDczMy50ZXN0MAuCCXg3MzQudGVzdDALggl4NzM1LnRlc3QwC4IJeDczNi50
--ZXN0MAuCCXg3MzcudGVzdDALggl4NzM4LnRlc3QwC4IJeDczOS50ZXN0MAuCCXg3
--NDAudGVzdDALggl4NzQxLnRlc3QwC4IJeDc0Mi50ZXN0MAuCCXg3NDMudGVzdDAL
--ggl4NzQ0LnRlc3QwC4IJeDc0NS50ZXN0MAuCCXg3NDYudGVzdDALggl4NzQ3LnRl
--c3QwC4IJeDc0OC50ZXN0MAuCCXg3NDkudGVzdDALggl4NzUwLnRlc3QwC4IJeDc1
--MS50ZXN0MAuCCXg3NTIudGVzdDALggl4NzUzLnRlc3QwC4IJeDc1NC50ZXN0MAuC
--CXg3NTUudGVzdDALggl4NzU2LnRlc3QwC4IJeDc1Ny50ZXN0MAuCCXg3NTgudGVz
--dDALggl4NzU5LnRlc3QwC4IJeDc2MC50ZXN0MAuCCXg3NjEudGVzdDALggl4NzYy
--LnRlc3QwC4IJeDc2My50ZXN0MAuCCXg3NjQudGVzdDALggl4NzY1LnRlc3QwC4IJ
--eDc2Ni50ZXN0MAuCCXg3NjcudGVzdDALggl4NzY4LnRlc3QwC4IJeDc2OS50ZXN0
--MAuCCXg3NzAudGVzdDALggl4NzcxLnRlc3QwC4IJeDc3Mi50ZXN0MAuCCXg3NzMu
--dGVzdDALggl4Nzc0LnRlc3QwC4IJeDc3NS50ZXN0MAuCCXg3NzYudGVzdDALggl4
--Nzc3LnRlc3QwC4IJeDc3OC50ZXN0MAuCCXg3NzkudGVzdDALggl4NzgwLnRlc3Qw
--C4IJeDc4MS50ZXN0MAuCCXg3ODIudGVzdDALggl4NzgzLnRlc3QwC4IJeDc4NC50
--ZXN0MAuCCXg3ODUudGVzdDALggl4Nzg2LnRlc3QwC4IJeDc4Ny50ZXN0MAuCCXg3
--ODgudGVzdDALggl4Nzg5LnRlc3QwC4IJeDc5MC50ZXN0MAuCCXg3OTEudGVzdDAL
--ggl4NzkyLnRlc3QwC4IJeDc5My50ZXN0MAuCCXg3OTQudGVzdDALggl4Nzk1LnRl
--c3QwC4IJeDc5Ni50ZXN0MAuCCXg3OTcudGVzdDALggl4Nzk4LnRlc3QwC4IJeDc5
--OS50ZXN0MAuCCXg4MDAudGVzdDALggl4ODAxLnRlc3QwC4IJeDgwMi50ZXN0MAuC
--CXg4MDMudGVzdDALggl4ODA0LnRlc3QwC4IJeDgwNS50ZXN0MAuCCXg4MDYudGVz
--dDALggl4ODA3LnRlc3QwC4IJeDgwOC50ZXN0MAuCCXg4MDkudGVzdDALggl4ODEw
--LnRlc3QwC4IJeDgxMS50ZXN0MAuCCXg4MTIudGVzdDALggl4ODEzLnRlc3QwC4IJ
--eDgxNC50ZXN0MAuCCXg4MTUudGVzdDALggl4ODE2LnRlc3QwC4IJeDgxNy50ZXN0
--MAuCCXg4MTgudGVzdDALggl4ODE5LnRlc3QwC4IJeDgyMC50ZXN0MAuCCXg4MjEu
--dGVzdDALggl4ODIyLnRlc3QwC4IJeDgyMy50ZXN0MAuCCXg4MjQudGVzdDALggl4
--ODI1LnRlc3QwC4IJeDgyNi50ZXN0MAuCCXg4MjcudGVzdDALggl4ODI4LnRlc3Qw
--C4IJeDgyOS50ZXN0MAuCCXg4MzAudGVzdDALggl4ODMxLnRlc3QwC4IJeDgzMi50
--ZXN0MAuCCXg4MzMudGVzdDALggl4ODM0LnRlc3QwC4IJeDgzNS50ZXN0MAuCCXg4
--MzYudGVzdDALggl4ODM3LnRlc3QwC4IJeDgzOC50ZXN0MAuCCXg4MzkudGVzdDAL
--ggl4ODQwLnRlc3QwC4IJeDg0MS50ZXN0MAuCCXg4NDIudGVzdDALggl4ODQzLnRl
--c3QwC4IJeDg0NC50ZXN0MAuCCXg4NDUudGVzdDALggl4ODQ2LnRlc3QwC4IJeDg0
--Ny50ZXN0MAuCCXg4NDgudGVzdDALggl4ODQ5LnRlc3QwC4IJeDg1MC50ZXN0MAuC
--CXg4NTEudGVzdDALggl4ODUyLnRlc3QwC4IJeDg1My50ZXN0MAuCCXg4NTQudGVz
--dDALggl4ODU1LnRlc3QwC4IJeDg1Ni50ZXN0MAuCCXg4NTcudGVzdDALggl4ODU4
--LnRlc3QwC4IJeDg1OS50ZXN0MAuCCXg4NjAudGVzdDALggl4ODYxLnRlc3QwC4IJ
--eDg2Mi50ZXN0MAuCCXg4NjMudGVzdDALggl4ODY0LnRlc3QwC4IJeDg2NS50ZXN0
--MAuCCXg4NjYudGVzdDALggl4ODY3LnRlc3QwC4IJeDg2OC50ZXN0MAuCCXg4Njku
--dGVzdDALggl4ODcwLnRlc3QwC4IJeDg3MS50ZXN0MAuCCXg4NzIudGVzdDALggl4
--ODczLnRlc3QwC4IJeDg3NC50ZXN0MAuCCXg4NzUudGVzdDALggl4ODc2LnRlc3Qw
--C4IJeDg3Ny50ZXN0MAuCCXg4NzgudGVzdDALggl4ODc5LnRlc3QwC4IJeDg4MC50
--ZXN0MAuCCXg4ODEudGVzdDALggl4ODgyLnRlc3QwC4IJeDg4My50ZXN0MAuCCXg4
--ODQudGVzdDALggl4ODg1LnRlc3QwC4IJeDg4Ni50ZXN0MAuCCXg4ODcudGVzdDAL
--ggl4ODg4LnRlc3QwC4IJeDg4OS50ZXN0MAuCCXg4OTAudGVzdDALggl4ODkxLnRl
--c3QwC4IJeDg5Mi50ZXN0MAuCCXg4OTMudGVzdDALggl4ODk0LnRlc3QwC4IJeDg5
--NS50ZXN0MAuCCXg4OTYudGVzdDALggl4ODk3LnRlc3QwC4IJeDg5OC50ZXN0MAuC
--CXg4OTkudGVzdDALggl4OTAwLnRlc3QwC4IJeDkwMS50ZXN0MAuCCXg5MDIudGVz
--dDALggl4OTAzLnRlc3QwC4IJeDkwNC50ZXN0MAuCCXg5MDUudGVzdDALggl4OTA2
--LnRlc3QwC4IJeDkwNy50ZXN0MAuCCXg5MDgudGVzdDALggl4OTA5LnRlc3QwC4IJ
--eDkxMC50ZXN0MAuCCXg5MTEudGVzdDALggl4OTEyLnRlc3QwC4IJeDkxMy50ZXN0
--MAuCCXg5MTQudGVzdDALggl4OTE1LnRlc3QwC4IJeDkxNi50ZXN0MAuCCXg5MTcu
--dGVzdDALggl4OTE4LnRlc3QwC4IJeDkxOS50ZXN0MAuCCXg5MjAudGVzdDALggl4
--OTIxLnRlc3QwC4IJeDkyMi50ZXN0MAuCCXg5MjMudGVzdDALggl4OTI0LnRlc3Qw
--C4IJeDkyNS50ZXN0MAuCCXg5MjYudGVzdDALggl4OTI3LnRlc3QwC4IJeDkyOC50
--ZXN0MAuCCXg5MjkudGVzdDALggl4OTMwLnRlc3QwC4IJeDkzMS50ZXN0MAuCCXg5
--MzIudGVzdDALggl4OTMzLnRlc3QwC4IJeDkzNC50ZXN0MAuCCXg5MzUudGVzdDAL
--ggl4OTM2LnRlc3QwC4IJeDkzNy50ZXN0MAuCCXg5MzgudGVzdDALggl4OTM5LnRl
--c3QwC4IJeDk0MC50ZXN0MAuCCXg5NDEudGVzdDALggl4OTQyLnRlc3QwC4IJeDk0
--My50ZXN0MAuCCXg5NDQudGVzdDALggl4OTQ1LnRlc3QwC4IJeDk0Ni50ZXN0MAuC
--CXg5NDcudGVzdDALggl4OTQ4LnRlc3QwC4IJeDk0OS50ZXN0MAuCCXg5NTAudGVz
--dDALggl4OTUxLnRlc3QwC4IJeDk1Mi50ZXN0MAuCCXg5NTMudGVzdDALggl4OTU0
--LnRlc3QwC4IJeDk1NS50ZXN0MAuCCXg5NTYudGVzdDALggl4OTU3LnRlc3QwC4IJ
--eDk1OC50ZXN0MAuCCXg5NTkudGVzdDALggl4OTYwLnRlc3QwC4IJeDk2MS50ZXN0
--MAuCCXg5NjIudGVzdDALggl4OTYzLnRlc3QwC4IJeDk2NC50ZXN0MAuCCXg5NjUu
--dGVzdDALggl4OTY2LnRlc3QwC4IJeDk2Ny50ZXN0MAuCCXg5NjgudGVzdDALggl4
--OTY5LnRlc3QwC4IJeDk3MC50ZXN0MAuCCXg5NzEudGVzdDALggl4OTcyLnRlc3Qw
--C4IJeDk3My50ZXN0MAuCCXg5NzQudGVzdDALggl4OTc1LnRlc3QwC4IJeDk3Ni50
--ZXN0MAuCCXg5NzcudGVzdDALggl4OTc4LnRlc3QwC4IJeDk3OS50ZXN0MAuCCXg5
--ODAudGVzdDALggl4OTgxLnRlc3QwC4IJeDk4Mi50ZXN0MAuCCXg5ODMudGVzdDAL
--ggl4OTg0LnRlc3QwC4IJeDk4NS50ZXN0MAuCCXg5ODYudGVzdDALggl4OTg3LnRl
--c3QwC4IJeDk4OC50ZXN0MAuCCXg5ODkudGVzdDALggl4OTkwLnRlc3QwC4IJeDk5
--MS50ZXN0MAuCCXg5OTIudGVzdDALggl4OTkzLnRlc3QwC4IJeDk5NC50ZXN0MAuC
--CXg5OTUudGVzdDALggl4OTk2LnRlc3QwC4IJeDk5Ny50ZXN0MAuCCXg5OTgudGVz
--dDALggl4OTk5LnRlc3QwDIIKeDEwMDAudGVzdDAMggp4MTAwMS50ZXN0MAyCCngx
--MDAyLnRlc3QwDIIKeDEwMDMudGVzdDAMggp4MTAwNC50ZXN0MAyCCngxMDA1LnRl
--c3QwDIIKeDEwMDYudGVzdDAMggp4MTAwNy50ZXN0MAyCCngxMDA4LnRlc3QwDIIK
--eDEwMDkudGVzdDAMggp4MTAxMC50ZXN0MAyCCngxMDExLnRlc3QwDIIKeDEwMTIu
--dGVzdDAMggp4MTAxMy50ZXN0MAyCCngxMDE0LnRlc3QwDIIKeDEwMTUudGVzdDAM
--ggp4MTAxNi50ZXN0MAyCCngxMDE3LnRlc3QwDIIKeDEwMTgudGVzdDAMggp4MTAx
--OS50ZXN0MAyCCngxMDIwLnRlc3QwDIIKeDEwMjEudGVzdDAMggp4MTAyMi50ZXN0
--MAyCCngxMDIzLnRlc3QwDIIKeDEwMjQudGVzdDAKhwgLAAAA/////zAKhwgLAAAB
--/////zAKhwgLAAAC/////zAKhwgLAAAD/////zAKhwgLAAAE/////zAKhwgLAAAF
--/////zAKhwgLAAAG/////zAKhwgLAAAH/////zAKhwgLAAAI/////zAKhwgLAAAJ
--/////zAKhwgLAAAK/////zAKhwgLAAAL/////zAKhwgLAAAM/////zAKhwgLAAAN
--/////zAKhwgLAAAO/////zAKhwgLAAAP/////zAKhwgLAAAQ/////zAKhwgLAAAR
--/////zAKhwgLAAAS/////zAKhwgLAAAT/////zAKhwgLAAAU/////zAKhwgLAAAV
--/////zAKhwgLAAAW/////zAKhwgLAAAX/////zAKhwgLAAAY/////zAKhwgLAAAZ
--/////zAKhwgLAAAa/////zAKhwgLAAAb/////zAKhwgLAAAc/////zAKhwgLAAAd
--/////zAKhwgLAAAe/////zAKhwgLAAAf/////zAKhwgLAAAg/////zAKhwgLAAAh
--/////zAKhwgLAAAi/////zAKhwgLAAAj/////zAKhwgLAAAk/////zAKhwgLAAAl
--/////zAKhwgLAAAm/////zAKhwgLAAAn/////zAKhwgLAAAo/////zAKhwgLAAAp
--/////zAKhwgLAAAq/////zAKhwgLAAAr/////zAKhwgLAAAs/////zAKhwgLAAAt
--/////zAKhwgLAAAu/////zAKhwgLAAAv/////zAKhwgLAAAw/////zAKhwgLAAAx
--/////zAKhwgLAAAy/////zAKhwgLAAAz/////zAKhwgLAAA0/////zAKhwgLAAA1
--/////zAKhwgLAAA2/////zAKhwgLAAA3/////zAKhwgLAAA4/////zAKhwgLAAA5
--/////zAKhwgLAAA6/////zAKhwgLAAA7/////zAKhwgLAAA8/////zAKhwgLAAA9
--/////zAKhwgLAAA+/////zAKhwgLAAA//////zAKhwgLAABA/////zAKhwgLAABB
--/////zAKhwgLAABC/////zAKhwgLAABD/////zAKhwgLAABE/////zAKhwgLAABF
--/////zAKhwgLAABG/////zAKhwgLAABH/////zAKhwgLAABI/////zAKhwgLAABJ
--/////zAKhwgLAABK/////zAKhwgLAABL/////zAKhwgLAABM/////zAKhwgLAABN
--/////zAKhwgLAABO/////zAKhwgLAABP/////zAKhwgLAABQ/////zAKhwgLAABR
--/////zAKhwgLAABS/////zAKhwgLAABT/////zAKhwgLAABU/////zAKhwgLAABV
--/////zAKhwgLAABW/////zAKhwgLAABX/////zAKhwgLAABY/////zAKhwgLAABZ
--/////zAKhwgLAABa/////zAKhwgLAABb/////zAKhwgLAABc/////zAKhwgLAABd
--/////zAKhwgLAABe/////zAKhwgLAABf/////zAKhwgLAABg/////zAKhwgLAABh
--/////zAKhwgLAABi/////zAKhwgLAABj/////zAKhwgLAABk/////zAKhwgLAABl
--/////zAKhwgLAABm/////zAKhwgLAABn/////zAKhwgLAABo/////zAKhwgLAABp
--/////zAKhwgLAABq/////zAKhwgLAABr/////zAKhwgLAABs/////zAKhwgLAABt
--/////zAKhwgLAABu/////zAKhwgLAABv/////zAKhwgLAABw/////zAKhwgLAABx
--/////zAKhwgLAABy/////zAKhwgLAABz/////zAKhwgLAAB0/////zAKhwgLAAB1
--/////zAKhwgLAAB2/////zAKhwgLAAB3/////zAKhwgLAAB4/////zAKhwgLAAB5
--/////zAKhwgLAAB6/////zAKhwgLAAB7/////zAKhwgLAAB8/////zAKhwgLAAB9
--/////zAKhwgLAAB+/////zAKhwgLAAB//////zAKhwgLAACA/////zAKhwgLAACB
--/////zAKhwgLAACC/////zAKhwgLAACD/////zAKhwgLAACE/////zAKhwgLAACF
--/////zAKhwgLAACG/////zAKhwgLAACH/////zAKhwgLAACI/////zAKhwgLAACJ
--/////zAKhwgLAACK/////zAKhwgLAACL/////zAKhwgLAACM/////zAKhwgLAACN
--/////zAKhwgLAACO/////zAKhwgLAACP/////zAKhwgLAACQ/////zAKhwgLAACR
--/////zAKhwgLAACS/////zAKhwgLAACT/////zAKhwgLAACU/////zAKhwgLAACV
--/////zAKhwgLAACW/////zAKhwgLAACX/////zAKhwgLAACY/////zAKhwgLAACZ
--/////zAKhwgLAACa/////zAKhwgLAACb/////zAKhwgLAACc/////zAKhwgLAACd
--/////zAKhwgLAACe/////zAKhwgLAACf/////zAKhwgLAACg/////zAKhwgLAACh
--/////zAKhwgLAACi/////zAKhwgLAACj/////zAKhwgLAACk/////zAKhwgLAACl
--/////zAKhwgLAACm/////zAKhwgLAACn/////zAKhwgLAACo/////zAKhwgLAACp
--/////zAKhwgLAACq/////zAKhwgLAACr/////zAKhwgLAACs/////zAKhwgLAACt
--/////zAKhwgLAACu/////zAKhwgLAACv/////zAKhwgLAACw/////zAKhwgLAACx
--/////zAKhwgLAACy/////zAKhwgLAACz/////zAKhwgLAAC0/////zAKhwgLAAC1
--/////zAKhwgLAAC2/////zAKhwgLAAC3/////zAKhwgLAAC4/////zAKhwgLAAC5
--/////zAKhwgLAAC6/////zAKhwgLAAC7/////zAKhwgLAAC8/////zAKhwgLAAC9
--/////zAKhwgLAAC+/////zAKhwgLAAC//////zAKhwgLAADA/////zAKhwgLAADB
--/////zAKhwgLAADC/////zAKhwgLAADD/////zAKhwgLAADE/////zAKhwgLAADF
--/////zAKhwgLAADG/////zAKhwgLAADH/////zAKhwgLAADI/////zAKhwgLAADJ
--/////zAKhwgLAADK/////zAKhwgLAADL/////zAKhwgLAADM/////zAKhwgLAADN
--/////zAKhwgLAADO/////zAKhwgLAADP/////zAKhwgLAADQ/////zAKhwgLAADR
--/////zAKhwgLAADS/////zAKhwgLAADT/////zAKhwgLAADU/////zAKhwgLAADV
--/////zAKhwgLAADW/////zAKhwgLAADX/////zAKhwgLAADY/////zAKhwgLAADZ
--/////zAKhwgLAADa/////zAKhwgLAADb/////zAKhwgLAADc/////zAKhwgLAADd
--/////zAKhwgLAADe/////zAKhwgLAADf/////zAKhwgLAADg/////zAKhwgLAADh
--/////zAKhwgLAADi/////zAKhwgLAADj/////zAKhwgLAADk/////zAKhwgLAADl
--/////zAKhwgLAADm/////zAKhwgLAADn/////zAKhwgLAADo/////zAKhwgLAADp
--/////zAKhwgLAADq/////zAKhwgLAADr/////zAKhwgLAADs/////zAKhwgLAADt
--/////zAKhwgLAADu/////zAKhwgLAADv/////zAKhwgLAADw/////zAKhwgLAADx
--/////zAKhwgLAADy/////zAKhwgLAADz/////zAKhwgLAAD0/////zAKhwgLAAD1
--/////zAKhwgLAAD2/////zAKhwgLAAD3/////zAKhwgLAAD4/////zAKhwgLAAD5
--/////zAKhwgLAAD6/////zAKhwgLAAD7/////zAKhwgLAAD8/////zAKhwgLAAD9
--/////zAKhwgLAAD+/////zAKhwgLAAD//////zAKhwgLAAEA/////zAKhwgLAAEB
--/////zAKhwgLAAEC/////zAKhwgLAAED/////zAKhwgLAAEE/////zAKhwgLAAEF
--/////zAKhwgLAAEG/////zAKhwgLAAEH/////zAKhwgLAAEI/////zAKhwgLAAEJ
--/////zAKhwgLAAEK/////zAKhwgLAAEL/////zAKhwgLAAEM/////zAKhwgLAAEN
--/////zAKhwgLAAEO/////zAKhwgLAAEP/////zAKhwgLAAEQ/////zAKhwgLAAER
--/////zAKhwgLAAES/////zAKhwgLAAET/////zAKhwgLAAEU/////zAKhwgLAAEV
--/////zAKhwgLAAEW/////zAKhwgLAAEX/////zAKhwgLAAEY/////zAKhwgLAAEZ
--/////zAKhwgLAAEa/////zAKhwgLAAEb/////zAKhwgLAAEc/////zAKhwgLAAEd
--/////zAKhwgLAAEe/////zAKhwgLAAEf/////zAKhwgLAAEg/////zAKhwgLAAEh
--/////zAKhwgLAAEi/////zAKhwgLAAEj/////zAKhwgLAAEk/////zAKhwgLAAEl
--/////zAKhwgLAAEm/////zAKhwgLAAEn/////zAKhwgLAAEo/////zAKhwgLAAEp
--/////zAKhwgLAAEq/////zAKhwgLAAEr/////zAKhwgLAAEs/////zAKhwgLAAEt
--/////zAKhwgLAAEu/////zAKhwgLAAEv/////zAKhwgLAAEw/////zAKhwgLAAEx
--/////zAKhwgLAAEy/////zAKhwgLAAEz/////zAKhwgLAAE0/////zAKhwgLAAE1
--/////zAKhwgLAAE2/////zAKhwgLAAE3/////zAKhwgLAAE4/////zAKhwgLAAE5
--/////zAKhwgLAAE6/////zAKhwgLAAE7/////zAKhwgLAAE8/////zAKhwgLAAE9
--/////zAKhwgLAAE+/////zAKhwgLAAE//////zAKhwgLAAFA/////zAKhwgLAAFB
--/////zAKhwgLAAFC/////zAKhwgLAAFD/////zAKhwgLAAFE/////zAKhwgLAAFF
--/////zAKhwgLAAFG/////zAKhwgLAAFH/////zAKhwgLAAFI/////zAKhwgLAAFJ
--/////zAKhwgLAAFK/////zAKhwgLAAFL/////zAKhwgLAAFM/////zAKhwgLAAFN
--/////zAKhwgLAAFO/////zAKhwgLAAFP/////zAKhwgLAAFQ/////zAKhwgLAAFR
--/////zAKhwgLAAFS/////zAKhwgLAAFT/////zAKhwgLAAFU/////zAKhwgLAAFV
--/////zAKhwgLAAFW/////zAKhwgLAAFX/////zAKhwgLAAFY/////zAKhwgLAAFZ
--/////zAKhwgLAAFa/////zAKhwgLAAFb/////zAKhwgLAAFc/////zAKhwgLAAFd
--/////zAKhwgLAAFe/////zAKhwgLAAFf/////zAKhwgLAAFg/////zAKhwgLAAFh
--/////zAKhwgLAAFi/////zAKhwgLAAFj/////zAKhwgLAAFk/////zAKhwgLAAFl
--/////zAKhwgLAAFm/////zAKhwgLAAFn/////zAKhwgLAAFo/////zAKhwgLAAFp
--/////zAKhwgLAAFq/////zAKhwgLAAFr/////zAKhwgLAAFs/////zAKhwgLAAFt
--/////zAKhwgLAAFu/////zAKhwgLAAFv/////zAKhwgLAAFw/////zAKhwgLAAFx
--/////zAKhwgLAAFy/////zAKhwgLAAFz/////zAKhwgLAAF0/////zAKhwgLAAF1
--/////zAKhwgLAAF2/////zAKhwgLAAF3/////zAKhwgLAAF4/////zAKhwgLAAF5
--/////zAKhwgLAAF6/////zAKhwgLAAF7/////zAKhwgLAAF8/////zAKhwgLAAF9
--/////zAKhwgLAAF+/////zAKhwgLAAF//////zAKhwgLAAGA/////zAKhwgLAAGB
--/////zAKhwgLAAGC/////zAKhwgLAAGD/////zAKhwgLAAGE/////zAKhwgLAAGF
--/////zAKhwgLAAGG/////zAKhwgLAAGH/////zAKhwgLAAGI/////zAKhwgLAAGJ
--/////zAKhwgLAAGK/////zAKhwgLAAGL/////zAKhwgLAAGM/////zAKhwgLAAGN
--/////zAKhwgLAAGO/////zAKhwgLAAGP/////zAKhwgLAAGQ/////zAKhwgLAAGR
--/////zAKhwgLAAGS/////zAKhwgLAAGT/////zAKhwgLAAGU/////zAKhwgLAAGV
--/////zAKhwgLAAGW/////zAKhwgLAAGX/////zAKhwgLAAGY/////zAKhwgLAAGZ
--/////zAKhwgLAAGa/////zAKhwgLAAGb/////zAKhwgLAAGc/////zAKhwgLAAGd
--/////zAKhwgLAAGe/////zAKhwgLAAGf/////zAKhwgLAAGg/////zAKhwgLAAGh
--/////zAKhwgLAAGi/////zAKhwgLAAGj/////zAKhwgLAAGk/////zAKhwgLAAGl
--/////zAKhwgLAAGm/////zAKhwgLAAGn/////zAKhwgLAAGo/////zAKhwgLAAGp
--/////zAKhwgLAAGq/////zAKhwgLAAGr/////zAKhwgLAAGs/////zAKhwgLAAGt
--/////zAKhwgLAAGu/////zAKhwgLAAGv/////zAKhwgLAAGw/////zAKhwgLAAGx
--/////zAKhwgLAAGy/////zAKhwgLAAGz/////zAKhwgLAAG0/////zAKhwgLAAG1
--/////zAKhwgLAAG2/////zAKhwgLAAG3/////zAKhwgLAAG4/////zAKhwgLAAG5
--/////zAKhwgLAAG6/////zAKhwgLAAG7/////zAKhwgLAAG8/////zAKhwgLAAG9
--/////zAKhwgLAAG+/////zAKhwgLAAG//////zAKhwgLAAHA/////zAKhwgLAAHB
--/////zAKhwgLAAHC/////zAKhwgLAAHD/////zAKhwgLAAHE/////zAKhwgLAAHF
--/////zAKhwgLAAHG/////zAKhwgLAAHH/////zAKhwgLAAHI/////zAKhwgLAAHJ
--/////zAKhwgLAAHK/////zAKhwgLAAHL/////zAKhwgLAAHM/////zAKhwgLAAHN
--/////zAKhwgLAAHO/////zAKhwgLAAHP/////zAKhwgLAAHQ/////zAKhwgLAAHR
--/////zAKhwgLAAHS/////zAKhwgLAAHT/////zAKhwgLAAHU/////zAKhwgLAAHV
--/////zAKhwgLAAHW/////zAKhwgLAAHX/////zAKhwgLAAHY/////zAKhwgLAAHZ
--/////zAKhwgLAAHa/////zAKhwgLAAHb/////zAKhwgLAAHc/////zAKhwgLAAHd
--/////zAKhwgLAAHe/////zAKhwgLAAHf/////zAKhwgLAAHg/////zAKhwgLAAHh
--/////zAKhwgLAAHi/////zAKhwgLAAHj/////zAKhwgLAAHk/////zAKhwgLAAHl
--/////zAKhwgLAAHm/////zAKhwgLAAHn/////zAKhwgLAAHo/////zAKhwgLAAHp
--/////zAKhwgLAAHq/////zAKhwgLAAHr/////zAKhwgLAAHs/////zAKhwgLAAHt
--/////zAKhwgLAAHu/////zAKhwgLAAHv/////zAKhwgLAAHw/////zAKhwgLAAHx
--/////zAKhwgLAAHy/////zAKhwgLAAHz/////zAKhwgLAAH0/////zAKhwgLAAH1
--/////zAKhwgLAAH2/////zAKhwgLAAH3/////zAKhwgLAAH4/////zAKhwgLAAH5
--/////zAKhwgLAAH6/////zAKhwgLAAH7/////zAKhwgLAAH8/////zAKhwgLAAH9
--/////zAKhwgLAAH+/////zAKhwgLAAH//////zAKhwgLAAIA/////zAKhwgLAAIB
--/////zAKhwgLAAIC/////zAKhwgLAAID/////zAKhwgLAAIE/////zAKhwgLAAIF
--/////zAKhwgLAAIG/////zAKhwgLAAIH/////zAKhwgLAAII/////zAKhwgLAAIJ
--/////zAKhwgLAAIK/////zAKhwgLAAIL/////zAKhwgLAAIM/////zAKhwgLAAIN
--/////zAKhwgLAAIO/////zAKhwgLAAIP/////zAKhwgLAAIQ/////zAKhwgLAAIR
--/////zAKhwgLAAIS/////zAKhwgLAAIT/////zAKhwgLAAIU/////zAKhwgLAAIV
--/////zAKhwgLAAIW/////zAKhwgLAAIX/////zAKhwgLAAIY/////zAKhwgLAAIZ
--/////zAKhwgLAAIa/////zAKhwgLAAIb/////zAKhwgLAAIc/////zAKhwgLAAId
--/////zAKhwgLAAIe/////zAKhwgLAAIf/////zAKhwgLAAIg/////zAKhwgLAAIh
--/////zAKhwgLAAIi/////zAKhwgLAAIj/////zAKhwgLAAIk/////zAKhwgLAAIl
--/////zAKhwgLAAIm/////zAKhwgLAAIn/////zAKhwgLAAIo/////zAKhwgLAAIp
--/////zAKhwgLAAIq/////zAKhwgLAAIr/////zAKhwgLAAIs/////zAKhwgLAAIt
--/////zAKhwgLAAIu/////zAKhwgLAAIv/////zAKhwgLAAIw/////zAKhwgLAAIx
--/////zAKhwgLAAIy/////zAKhwgLAAIz/////zAKhwgLAAI0/////zAKhwgLAAI1
--/////zAKhwgLAAI2/////zAKhwgLAAI3/////zAKhwgLAAI4/////zAKhwgLAAI5
--/////zAKhwgLAAI6/////zAKhwgLAAI7/////zAKhwgLAAI8/////zAKhwgLAAI9
--/////zAKhwgLAAI+/////zAKhwgLAAI//////zAKhwgLAAJA/////zAKhwgLAAJB
--/////zAKhwgLAAJC/////zAKhwgLAAJD/////zAKhwgLAAJE/////zAKhwgLAAJF
--/////zAKhwgLAAJG/////zAKhwgLAAJH/////zAKhwgLAAJI/////zAKhwgLAAJJ
--/////zAKhwgLAAJK/////zAKhwgLAAJL/////zAKhwgLAAJM/////zAKhwgLAAJN
--/////zAKhwgLAAJO/////zAKhwgLAAJP/////zAKhwgLAAJQ/////zAKhwgLAAJR
--/////zAKhwgLAAJS/////zAKhwgLAAJT/////zAKhwgLAAJU/////zAKhwgLAAJV
--/////zAKhwgLAAJW/////zAKhwgLAAJX/////zAKhwgLAAJY/////zAKhwgLAAJZ
--/////zAKhwgLAAJa/////zAKhwgLAAJb/////zAKhwgLAAJc/////zAKhwgLAAJd
--/////zAKhwgLAAJe/////zAKhwgLAAJf/////zAKhwgLAAJg/////zAKhwgLAAJh
--/////zAKhwgLAAJi/////zAKhwgLAAJj/////zAKhwgLAAJk/////zAKhwgLAAJl
--/////zAKhwgLAAJm/////zAKhwgLAAJn/////zAKhwgLAAJo/////zAKhwgLAAJp
--/////zAKhwgLAAJq/////zAKhwgLAAJr/////zAKhwgLAAJs/////zAKhwgLAAJt
--/////zAKhwgLAAJu/////zAKhwgLAAJv/////zAKhwgLAAJw/////zAKhwgLAAJx
--/////zAKhwgLAAJy/////zAKhwgLAAJz/////zAKhwgLAAJ0/////zAKhwgLAAJ1
--/////zAKhwgLAAJ2/////zAKhwgLAAJ3/////zAKhwgLAAJ4/////zAKhwgLAAJ5
--/////zAKhwgLAAJ6/////zAKhwgLAAJ7/////zAKhwgLAAJ8/////zAKhwgLAAJ9
--/////zAKhwgLAAJ+/////zAKhwgLAAJ//////zAKhwgLAAKA/////zAKhwgLAAKB
--/////zAKhwgLAAKC/////zAKhwgLAAKD/////zAKhwgLAAKE/////zAKhwgLAAKF
--/////zAKhwgLAAKG/////zAKhwgLAAKH/////zAKhwgLAAKI/////zAKhwgLAAKJ
--/////zAKhwgLAAKK/////zAKhwgLAAKL/////zAKhwgLAAKM/////zAKhwgLAAKN
--/////zAKhwgLAAKO/////zAKhwgLAAKP/////zAKhwgLAAKQ/////zAKhwgLAAKR
--/////zAKhwgLAAKS/////zAKhwgLAAKT/////zAKhwgLAAKU/////zAKhwgLAAKV
--/////zAKhwgLAAKW/////zAKhwgLAAKX/////zAKhwgLAAKY/////zAKhwgLAAKZ
--/////zAKhwgLAAKa/////zAKhwgLAAKb/////zAKhwgLAAKc/////zAKhwgLAAKd
--/////zAKhwgLAAKe/////zAKhwgLAAKf/////zAKhwgLAAKg/////zAKhwgLAAKh
--/////zAKhwgLAAKi/////zAKhwgLAAKj/////zAKhwgLAAKk/////zAKhwgLAAKl
--/////zAKhwgLAAKm/////zAKhwgLAAKn/////zAKhwgLAAKo/////zAKhwgLAAKp
--/////zAKhwgLAAKq/////zAKhwgLAAKr/////zAKhwgLAAKs/////zAKhwgLAAKt
--/////zAKhwgLAAKu/////zAKhwgLAAKv/////zAKhwgLAAKw/////zAKhwgLAAKx
--/////zAKhwgLAAKy/////zAKhwgLAAKz/////zAKhwgLAAK0/////zAKhwgLAAK1
--/////zAKhwgLAAK2/////zAKhwgLAAK3/////zAKhwgLAAK4/////zAKhwgLAAK5
--/////zAKhwgLAAK6/////zAKhwgLAAK7/////zAKhwgLAAK8/////zAKhwgLAAK9
--/////zAKhwgLAAK+/////zAKhwgLAAK//////zAKhwgLAALA/////zAKhwgLAALB
--/////zAKhwgLAALC/////zAKhwgLAALD/////zAKhwgLAALE/////zAKhwgLAALF
--/////zAKhwgLAALG/////zAKhwgLAALH/////zAKhwgLAALI/////zAKhwgLAALJ
--/////zAKhwgLAALK/////zAKhwgLAALL/////zAKhwgLAALM/////zAKhwgLAALN
--/////zAKhwgLAALO/////zAKhwgLAALP/////zAKhwgLAALQ/////zAKhwgLAALR
--/////zAKhwgLAALS/////zAKhwgLAALT/////zAKhwgLAALU/////zAKhwgLAALV
--/////zAKhwgLAALW/////zAKhwgLAALX/////zAKhwgLAALY/////zAKhwgLAALZ
--/////zAKhwgLAALa/////zAKhwgLAALb/////zAKhwgLAALc/////zAKhwgLAALd
--/////zAKhwgLAALe/////zAKhwgLAALf/////zAKhwgLAALg/////zAKhwgLAALh
--/////zAKhwgLAALi/////zAKhwgLAALj/////zAKhwgLAALk/////zAKhwgLAALl
--/////zAKhwgLAALm/////zAKhwgLAALn/////zAKhwgLAALo/////zAKhwgLAALp
--/////zAKhwgLAALq/////zAKhwgLAALr/////zAKhwgLAALs/////zAKhwgLAALt
--/////zAKhwgLAALu/////zAKhwgLAALv/////zAKhwgLAALw/////zAKhwgLAALx
--/////zAKhwgLAALy/////zAKhwgLAALz/////zAKhwgLAAL0/////zAKhwgLAAL1
--/////zAKhwgLAAL2/////zAKhwgLAAL3/////zAKhwgLAAL4/////zAKhwgLAAL5
--/////zAKhwgLAAL6/////zAKhwgLAAL7/////zAKhwgLAAL8/////zAKhwgLAAL9
--/////zAKhwgLAAL+/////zAKhwgLAAL//////zAKhwgLAAMA/////zAKhwgLAAMB
--/////zAKhwgLAAMC/////zAKhwgLAAMD/////zAKhwgLAAME/////zAKhwgLAAMF
--/////zAKhwgLAAMG/////zAKhwgLAAMH/////zAKhwgLAAMI/////zAKhwgLAAMJ
--/////zAKhwgLAAMK/////zAKhwgLAAML/////zAKhwgLAAMM/////zAKhwgLAAMN
--/////zAKhwgLAAMO/////zAKhwgLAAMP/////zAKhwgLAAMQ/////zAKhwgLAAMR
--/////zAKhwgLAAMS/////zAKhwgLAAMT/////zAKhwgLAAMU/////zAKhwgLAAMV
--/////zAKhwgLAAMW/////zAKhwgLAAMX/////zAKhwgLAAMY/////zAKhwgLAAMZ
--/////zAKhwgLAAMa/////zAKhwgLAAMb/////zAKhwgLAAMc/////zAKhwgLAAMd
--/////zAKhwgLAAMe/////zAKhwgLAAMf/////zAKhwgLAAMg/////zAKhwgLAAMh
--/////zAKhwgLAAMi/////zAKhwgLAAMj/////zAKhwgLAAMk/////zAKhwgLAAMl
--/////zAKhwgLAAMm/////zAKhwgLAAMn/////zAKhwgLAAMo/////zAKhwgLAAMp
--/////zAKhwgLAAMq/////zAKhwgLAAMr/////zAKhwgLAAMs/////zAKhwgLAAMt
--/////zAKhwgLAAMu/////zAKhwgLAAMv/////zAKhwgLAAMw/////zAKhwgLAAMx
--/////zAKhwgLAAMy/////zAKhwgLAAMz/////zAKhwgLAAM0/////zAKhwgLAAM1
--/////zAKhwgLAAM2/////zAKhwgLAAM3/////zAKhwgLAAM4/////zAKhwgLAAM5
--/////zAKhwgLAAM6/////zAKhwgLAAM7/////zAKhwgLAAM8/////zAKhwgLAAM9
--/////zAKhwgLAAM+/////zAKhwgLAAM//////zAKhwgLAANA/////zAKhwgLAANB
--/////zAKhwgLAANC/////zAKhwgLAAND/////zAKhwgLAANE/////zAKhwgLAANF
--/////zAKhwgLAANG/////zAKhwgLAANH/////zAKhwgLAANI/////zAKhwgLAANJ
--/////zAKhwgLAANK/////zAKhwgLAANL/////zAKhwgLAANM/////zAKhwgLAANN
--/////zAKhwgLAANO/////zAKhwgLAANP/////zAKhwgLAANQ/////zAKhwgLAANR
--/////zAKhwgLAANS/////zAKhwgLAANT/////zAKhwgLAANU/////zAKhwgLAANV
--/////zAKhwgLAANW/////zAKhwgLAANX/////zAKhwgLAANY/////zAKhwgLAANZ
--/////zAKhwgLAANa/////zAKhwgLAANb/////zAKhwgLAANc/////zAKhwgLAANd
--/////zAKhwgLAANe/////zAKhwgLAANf/////zAKhwgLAANg/////zAKhwgLAANh
--/////zAKhwgLAANi/////zAKhwgLAANj/////zAKhwgLAANk/////zAKhwgLAANl
--/////zAKhwgLAANm/////zAKhwgLAANn/////zAKhwgLAANo/////zAKhwgLAANp
--/////zAKhwgLAANq/////zAKhwgLAANr/////zAKhwgLAANs/////zAKhwgLAANt
--/////zAKhwgLAANu/////zAKhwgLAANv/////zAKhwgLAANw/////zAKhwgLAANx
--/////zAKhwgLAANy/////zAKhwgLAANz/////zAKhwgLAAN0/////zAKhwgLAAN1
--/////zAKhwgLAAN2/////zAKhwgLAAN3/////zAKhwgLAAN4/////zAKhwgLAAN5
--/////zAKhwgLAAN6/////zAKhwgLAAN7/////zAKhwgLAAN8/////zAKhwgLAAN9
--/////zAKhwgLAAN+/////zAKhwgLAAN//////zAKhwgLAAOA/////zAKhwgLAAOB
--/////zAKhwgLAAOC/////zAKhwgLAAOD/////zAKhwgLAAOE/////zAKhwgLAAOF
--/////zAKhwgLAAOG/////zAKhwgLAAOH/////zAKhwgLAAOI/////zAKhwgLAAOJ
--/////zAKhwgLAAOK/////zAKhwgLAAOL/////zAKhwgLAAOM/////zAKhwgLAAON
--/////zAKhwgLAAOO/////zAKhwgLAAOP/////zAKhwgLAAOQ/////zAKhwgLAAOR
--/////zAKhwgLAAOS/////zAKhwgLAAOT/////zAKhwgLAAOU/////zAKhwgLAAOV
--/////zAKhwgLAAOW/////zAKhwgLAAOX/////zAKhwgLAAOY/////zAKhwgLAAOZ
--/////zAKhwgLAAOa/////zAKhwgLAAOb/////zAKhwgLAAOc/////zAKhwgLAAOd
--/////zAKhwgLAAOe/////zAKhwgLAAOf/////zAKhwgLAAOg/////zAKhwgLAAOh
--/////zAKhwgLAAOi/////zAKhwgLAAOj/////zAKhwgLAAOk/////zAKhwgLAAOl
--/////zAKhwgLAAOm/////zAKhwgLAAOn/////zAKhwgLAAOo/////zAKhwgLAAOp
--/////zAKhwgLAAOq/////zAKhwgLAAOr/////zAKhwgLAAOs/////zAKhwgLAAOt
--/////zAKhwgLAAOu/////zAKhwgLAAOv/////zAKhwgLAAOw/////zAKhwgLAAOx
--/////zAKhwgLAAOy/////zAKhwgLAAOz/////zAKhwgLAAO0/////zAKhwgLAAO1
--/////zAKhwgLAAO2/////zAKhwgLAAO3/////zAKhwgLAAO4/////zAKhwgLAAO5
--/////zAKhwgLAAO6/////zAKhwgLAAO7/////zAKhwgLAAO8/////zAKhwgLAAO9
--/////zAKhwgLAAO+/////zAKhwgLAAO//////zAKhwgLAAPA/////zAKhwgLAAPB
--/////zAKhwgLAAPC/////zAKhwgLAAPD/////zAKhwgLAAPE/////zAKhwgLAAPF
--/////zAKhwgLAAPG/////zAKhwgLAAPH/////zAKhwgLAAPI/////zAKhwgLAAPJ
--/////zAKhwgLAAPK/////zAKhwgLAAPL/////zAKhwgLAAPM/////zAKhwgLAAPN
--/////zAKhwgLAAPO/////zAKhwgLAAPP/////zAKhwgLAAPQ/////zAKhwgLAAPR
--/////zAKhwgLAAPS/////zAKhwgLAAPT/////zAKhwgLAAPU/////zAKhwgLAAPV
--/////zAKhwgLAAPW/////zAKhwgLAAPX/////zAKhwgLAAPY/////zAKhwgLAAPZ
--/////zAKhwgLAAPa/////zAKhwgLAAPb/////zAKhwgLAAPc/////zAKhwgLAAPd
--/////zAKhwgLAAPe/////zAKhwgLAAPf/////zAKhwgLAAPg/////zAKhwgLAAPh
--/////zAKhwgLAAPi/////zAKhwgLAAPj/////zAKhwgLAAPk/////zAKhwgLAAPl
--/////zAKhwgLAAPm/////zAKhwgLAAPn/////zAKhwgLAAPo/////zAKhwgLAAPp
--/////zAKhwgLAAPq/////zAKhwgLAAPr/////zAKhwgLAAPs/////zAKhwgLAAPt
--/////zAKhwgLAAPu/////zAKhwgLAAPv/////zAKhwgLAAPw/////zAKhwgLAAPx
--/////zAKhwgLAAPy/////zAKhwgLAAPz/////zAKhwgLAAP0/////zAKhwgLAAP1
--/////zAKhwgLAAP2/////zAKhwgLAAP3/////zAKhwgLAAP4/////zAKhwgLAAP5
--/////zAKhwgLAAP6/////zAKhwgLAAP7/////zAKhwgLAAP8/////zAKhwgLAAP9
--/////zAKhwgLAAP+/////zAKhwgLAAP//////zAKhwgLAAQA/////zAPhg1odHRw
--Oi8veGVzdC8wMA+GDWh0dHA6Ly94ZXN0LzEwD4YNaHR0cDovL3hlc3QvMjAPhg1o
--dHRwOi8veGVzdC8zMA+GDWh0dHA6Ly94ZXN0LzQwD4YNaHR0cDovL3hlc3QvNTAP
--hg1odHRwOi8veGVzdC82MA+GDWh0dHA6Ly94ZXN0LzcwD4YNaHR0cDovL3hlc3Qv
--ODAPhg1odHRwOi8veGVzdC85MBCGDmh0dHA6Ly94ZXN0LzEwMBCGDmh0dHA6Ly94
--ZXN0LzExMBCGDmh0dHA6Ly94ZXN0LzEyMBCGDmh0dHA6Ly94ZXN0LzEzMBCGDmh0
--dHA6Ly94ZXN0LzE0MBCGDmh0dHA6Ly94ZXN0LzE1MBCGDmh0dHA6Ly94ZXN0LzE2
--MBCGDmh0dHA6Ly94ZXN0LzE3MBCGDmh0dHA6Ly94ZXN0LzE4MBCGDmh0dHA6Ly94
--ZXN0LzE5MBCGDmh0dHA6Ly94ZXN0LzIwMBCGDmh0dHA6Ly94ZXN0LzIxMBCGDmh0
--dHA6Ly94ZXN0LzIyMBCGDmh0dHA6Ly94ZXN0LzIzMBCGDmh0dHA6Ly94ZXN0LzI0
--MBCGDmh0dHA6Ly94ZXN0LzI1MBCGDmh0dHA6Ly94ZXN0LzI2MBCGDmh0dHA6Ly94
--ZXN0LzI3MBCGDmh0dHA6Ly94ZXN0LzI4MBCGDmh0dHA6Ly94ZXN0LzI5MBCGDmh0
--dHA6Ly94ZXN0LzMwMBCGDmh0dHA6Ly94ZXN0LzMxMBCGDmh0dHA6Ly94ZXN0LzMy
--MBCGDmh0dHA6Ly94ZXN0LzMzMBCGDmh0dHA6Ly94ZXN0LzM0MBCGDmh0dHA6Ly94
--ZXN0LzM1MBCGDmh0dHA6Ly94ZXN0LzM2MBCGDmh0dHA6Ly94ZXN0LzM3MBCGDmh0
--dHA6Ly94ZXN0LzM4MBCGDmh0dHA6Ly94ZXN0LzM5MBCGDmh0dHA6Ly94ZXN0LzQw
--MBCGDmh0dHA6Ly94ZXN0LzQxMBCGDmh0dHA6Ly94ZXN0LzQyMBCGDmh0dHA6Ly94
--ZXN0LzQzMBCGDmh0dHA6Ly94ZXN0LzQ0MBCGDmh0dHA6Ly94ZXN0LzQ1MBCGDmh0
--dHA6Ly94ZXN0LzQ2MBCGDmh0dHA6Ly94ZXN0LzQ3MBCGDmh0dHA6Ly94ZXN0LzQ4
--MBCGDmh0dHA6Ly94ZXN0LzQ5MBCGDmh0dHA6Ly94ZXN0LzUwMBCGDmh0dHA6Ly94
--ZXN0LzUxMBCGDmh0dHA6Ly94ZXN0LzUyMBCGDmh0dHA6Ly94ZXN0LzUzMBCGDmh0
--dHA6Ly94ZXN0LzU0MBCGDmh0dHA6Ly94ZXN0LzU1MBCGDmh0dHA6Ly94ZXN0LzU2
--MBCGDmh0dHA6Ly94ZXN0LzU3MBCGDmh0dHA6Ly94ZXN0LzU4MBCGDmh0dHA6Ly94
--ZXN0LzU5MBCGDmh0dHA6Ly94ZXN0LzYwMBCGDmh0dHA6Ly94ZXN0LzYxMBCGDmh0
--dHA6Ly94ZXN0LzYyMBCGDmh0dHA6Ly94ZXN0LzYzMBCGDmh0dHA6Ly94ZXN0LzY0
--MBCGDmh0dHA6Ly94ZXN0LzY1MBCGDmh0dHA6Ly94ZXN0LzY2MBCGDmh0dHA6Ly94
--ZXN0LzY3MBCGDmh0dHA6Ly94ZXN0LzY4MBCGDmh0dHA6Ly94ZXN0LzY5MBCGDmh0
--dHA6Ly94ZXN0LzcwMBCGDmh0dHA6Ly94ZXN0LzcxMBCGDmh0dHA6Ly94ZXN0Lzcy
--MBCGDmh0dHA6Ly94ZXN0LzczMBCGDmh0dHA6Ly94ZXN0Lzc0MBCGDmh0dHA6Ly94
--ZXN0Lzc1MBCGDmh0dHA6Ly94ZXN0Lzc2MBCGDmh0dHA6Ly94ZXN0Lzc3MBCGDmh0
--dHA6Ly94ZXN0Lzc4MBCGDmh0dHA6Ly94ZXN0Lzc5MBCGDmh0dHA6Ly94ZXN0Lzgw
--MBCGDmh0dHA6Ly94ZXN0LzgxMBCGDmh0dHA6Ly94ZXN0LzgyMBCGDmh0dHA6Ly94
--ZXN0LzgzMBCGDmh0dHA6Ly94ZXN0Lzg0MBCGDmh0dHA6Ly94ZXN0Lzg1MBCGDmh0
--dHA6Ly94ZXN0Lzg2MBCGDmh0dHA6Ly94ZXN0Lzg3MBCGDmh0dHA6Ly94ZXN0Lzg4
--MBCGDmh0dHA6Ly94ZXN0Lzg5MBCGDmh0dHA6Ly94ZXN0LzkwMBCGDmh0dHA6Ly94
--ZXN0LzkxMBCGDmh0dHA6Ly94ZXN0LzkyMBCGDmh0dHA6Ly94ZXN0LzkzMBCGDmh0
--dHA6Ly94ZXN0Lzk0MBCGDmh0dHA6Ly94ZXN0Lzk1MBCGDmh0dHA6Ly94ZXN0Lzk2
--MBCGDmh0dHA6Ly94ZXN0Lzk3MBCGDmh0dHA6Ly94ZXN0Lzk4MBCGDmh0dHA6Ly94
--ZXN0Lzk5MBGGD2h0dHA6Ly94ZXN0LzEwMDARhg9odHRwOi8veGVzdC8xMDEwEYYP
--aHR0cDovL3hlc3QvMTAyMBGGD2h0dHA6Ly94ZXN0LzEwMzARhg9odHRwOi8veGVz
--dC8xMDQwEYYPaHR0cDovL3hlc3QvMTA1MBGGD2h0dHA6Ly94ZXN0LzEwNjARhg9o
--dHRwOi8veGVzdC8xMDcwEYYPaHR0cDovL3hlc3QvMTA4MBGGD2h0dHA6Ly94ZXN0
--LzEwOTARhg9odHRwOi8veGVzdC8xMTAwEYYPaHR0cDovL3hlc3QvMTExMBGGD2h0
--dHA6Ly94ZXN0LzExMjARhg9odHRwOi8veGVzdC8xMTMwEYYPaHR0cDovL3hlc3Qv
--MTE0MBGGD2h0dHA6Ly94ZXN0LzExNTARhg9odHRwOi8veGVzdC8xMTYwEYYPaHR0
--cDovL3hlc3QvMTE3MBGGD2h0dHA6Ly94ZXN0LzExODARhg9odHRwOi8veGVzdC8x
--MTkwEYYPaHR0cDovL3hlc3QvMTIwMBGGD2h0dHA6Ly94ZXN0LzEyMTARhg9odHRw
--Oi8veGVzdC8xMjIwEYYPaHR0cDovL3hlc3QvMTIzMBGGD2h0dHA6Ly94ZXN0LzEy
--NDARhg9odHRwOi8veGVzdC8xMjUwEYYPaHR0cDovL3hlc3QvMTI2MBGGD2h0dHA6
--Ly94ZXN0LzEyNzARhg9odHRwOi8veGVzdC8xMjgwEYYPaHR0cDovL3hlc3QvMTI5
--MBGGD2h0dHA6Ly94ZXN0LzEzMDARhg9odHRwOi8veGVzdC8xMzEwEYYPaHR0cDov
--L3hlc3QvMTMyMBGGD2h0dHA6Ly94ZXN0LzEzMzARhg9odHRwOi8veGVzdC8xMzQw
--EYYPaHR0cDovL3hlc3QvMTM1MBGGD2h0dHA6Ly94ZXN0LzEzNjARhg9odHRwOi8v
--eGVzdC8xMzcwEYYPaHR0cDovL3hlc3QvMTM4MBGGD2h0dHA6Ly94ZXN0LzEzOTAR
--hg9odHRwOi8veGVzdC8xNDAwEYYPaHR0cDovL3hlc3QvMTQxMBGGD2h0dHA6Ly94
--ZXN0LzE0MjARhg9odHRwOi8veGVzdC8xNDMwEYYPaHR0cDovL3hlc3QvMTQ0MBGG
--D2h0dHA6Ly94ZXN0LzE0NTARhg9odHRwOi8veGVzdC8xNDYwEYYPaHR0cDovL3hl
--c3QvMTQ3MBGGD2h0dHA6Ly94ZXN0LzE0ODARhg9odHRwOi8veGVzdC8xNDkwEYYP
--aHR0cDovL3hlc3QvMTUwMBGGD2h0dHA6Ly94ZXN0LzE1MTARhg9odHRwOi8veGVz
--dC8xNTIwEYYPaHR0cDovL3hlc3QvMTUzMBGGD2h0dHA6Ly94ZXN0LzE1NDARhg9o
--dHRwOi8veGVzdC8xNTUwEYYPaHR0cDovL3hlc3QvMTU2MBGGD2h0dHA6Ly94ZXN0
--LzE1NzARhg9odHRwOi8veGVzdC8xNTgwEYYPaHR0cDovL3hlc3QvMTU5MBGGD2h0
--dHA6Ly94ZXN0LzE2MDARhg9odHRwOi8veGVzdC8xNjEwEYYPaHR0cDovL3hlc3Qv
--MTYyMBGGD2h0dHA6Ly94ZXN0LzE2MzARhg9odHRwOi8veGVzdC8xNjQwEYYPaHR0
--cDovL3hlc3QvMTY1MBGGD2h0dHA6Ly94ZXN0LzE2NjARhg9odHRwOi8veGVzdC8x
--NjcwEYYPaHR0cDovL3hlc3QvMTY4MBGGD2h0dHA6Ly94ZXN0LzE2OTARhg9odHRw
--Oi8veGVzdC8xNzAwEYYPaHR0cDovL3hlc3QvMTcxMBGGD2h0dHA6Ly94ZXN0LzE3
--MjARhg9odHRwOi8veGVzdC8xNzMwEYYPaHR0cDovL3hlc3QvMTc0MBGGD2h0dHA6
--Ly94ZXN0LzE3NTARhg9odHRwOi8veGVzdC8xNzYwEYYPaHR0cDovL3hlc3QvMTc3
--MBGGD2h0dHA6Ly94ZXN0LzE3ODARhg9odHRwOi8veGVzdC8xNzkwEYYPaHR0cDov
--L3hlc3QvMTgwMBGGD2h0dHA6Ly94ZXN0LzE4MTARhg9odHRwOi8veGVzdC8xODIw
--EYYPaHR0cDovL3hlc3QvMTgzMBGGD2h0dHA6Ly94ZXN0LzE4NDARhg9odHRwOi8v
--eGVzdC8xODUwEYYPaHR0cDovL3hlc3QvMTg2MBGGD2h0dHA6Ly94ZXN0LzE4NzAR
--hg9odHRwOi8veGVzdC8xODgwEYYPaHR0cDovL3hlc3QvMTg5MBGGD2h0dHA6Ly94
--ZXN0LzE5MDARhg9odHRwOi8veGVzdC8xOTEwEYYPaHR0cDovL3hlc3QvMTkyMBGG
--D2h0dHA6Ly94ZXN0LzE5MzARhg9odHRwOi8veGVzdC8xOTQwEYYPaHR0cDovL3hl
--c3QvMTk1MBGGD2h0dHA6Ly94ZXN0LzE5NjARhg9odHRwOi8veGVzdC8xOTcwEYYP
--aHR0cDovL3hlc3QvMTk4MBGGD2h0dHA6Ly94ZXN0LzE5OTARhg9odHRwOi8veGVz
--dC8yMDAwEYYPaHR0cDovL3hlc3QvMjAxMBGGD2h0dHA6Ly94ZXN0LzIwMjARhg9o
--dHRwOi8veGVzdC8yMDMwEYYPaHR0cDovL3hlc3QvMjA0MBGGD2h0dHA6Ly94ZXN0
--LzIwNTARhg9odHRwOi8veGVzdC8yMDYwEYYPaHR0cDovL3hlc3QvMjA3MBGGD2h0
--dHA6Ly94ZXN0LzIwODARhg9odHRwOi8veGVzdC8yMDkwEYYPaHR0cDovL3hlc3Qv
--MjEwMBGGD2h0dHA6Ly94ZXN0LzIxMTARhg9odHRwOi8veGVzdC8yMTIwEYYPaHR0
--cDovL3hlc3QvMjEzMBGGD2h0dHA6Ly94ZXN0LzIxNDARhg9odHRwOi8veGVzdC8y
--MTUwEYYPaHR0cDovL3hlc3QvMjE2MBGGD2h0dHA6Ly94ZXN0LzIxNzARhg9odHRw
--Oi8veGVzdC8yMTgwEYYPaHR0cDovL3hlc3QvMjE5MBGGD2h0dHA6Ly94ZXN0LzIy
--MDARhg9odHRwOi8veGVzdC8yMjEwEYYPaHR0cDovL3hlc3QvMjIyMBGGD2h0dHA6
--Ly94ZXN0LzIyMzARhg9odHRwOi8veGVzdC8yMjQwEYYPaHR0cDovL3hlc3QvMjI1
--MBGGD2h0dHA6Ly94ZXN0LzIyNjARhg9odHRwOi8veGVzdC8yMjcwEYYPaHR0cDov
--L3hlc3QvMjI4MBGGD2h0dHA6Ly94ZXN0LzIyOTARhg9odHRwOi8veGVzdC8yMzAw
--EYYPaHR0cDovL3hlc3QvMjMxMBGGD2h0dHA6Ly94ZXN0LzIzMjARhg9odHRwOi8v
--eGVzdC8yMzMwEYYPaHR0cDovL3hlc3QvMjM0MBGGD2h0dHA6Ly94ZXN0LzIzNTAR
--hg9odHRwOi8veGVzdC8yMzYwEYYPaHR0cDovL3hlc3QvMjM3MBGGD2h0dHA6Ly94
--ZXN0LzIzODARhg9odHRwOi8veGVzdC8yMzkwEYYPaHR0cDovL3hlc3QvMjQwMBGG
--D2h0dHA6Ly94ZXN0LzI0MTARhg9odHRwOi8veGVzdC8yNDIwEYYPaHR0cDovL3hl
--c3QvMjQzMBGGD2h0dHA6Ly94ZXN0LzI0NDARhg9odHRwOi8veGVzdC8yNDUwEYYP
--aHR0cDovL3hlc3QvMjQ2MBGGD2h0dHA6Ly94ZXN0LzI0NzARhg9odHRwOi8veGVz
--dC8yNDgwEYYPaHR0cDovL3hlc3QvMjQ5MBGGD2h0dHA6Ly94ZXN0LzI1MDARhg9o
--dHRwOi8veGVzdC8yNTEwEYYPaHR0cDovL3hlc3QvMjUyMBGGD2h0dHA6Ly94ZXN0
--LzI1MzARhg9odHRwOi8veGVzdC8yNTQwEYYPaHR0cDovL3hlc3QvMjU1MBGGD2h0
--dHA6Ly94ZXN0LzI1NjARhg9odHRwOi8veGVzdC8yNTcwEYYPaHR0cDovL3hlc3Qv
--MjU4MBGGD2h0dHA6Ly94ZXN0LzI1OTARhg9odHRwOi8veGVzdC8yNjAwEYYPaHR0
--cDovL3hlc3QvMjYxMBGGD2h0dHA6Ly94ZXN0LzI2MjARhg9odHRwOi8veGVzdC8y
--NjMwEYYPaHR0cDovL3hlc3QvMjY0MBGGD2h0dHA6Ly94ZXN0LzI2NTARhg9odHRw
--Oi8veGVzdC8yNjYwEYYPaHR0cDovL3hlc3QvMjY3MBGGD2h0dHA6Ly94ZXN0LzI2
--ODARhg9odHRwOi8veGVzdC8yNjkwEYYPaHR0cDovL3hlc3QvMjcwMBGGD2h0dHA6
--Ly94ZXN0LzI3MTARhg9odHRwOi8veGVzdC8yNzIwEYYPaHR0cDovL3hlc3QvMjcz
--MBGGD2h0dHA6Ly94ZXN0LzI3NDARhg9odHRwOi8veGVzdC8yNzUwEYYPaHR0cDov
--L3hlc3QvMjc2MBGGD2h0dHA6Ly94ZXN0LzI3NzARhg9odHRwOi8veGVzdC8yNzgw
--EYYPaHR0cDovL3hlc3QvMjc5MBGGD2h0dHA6Ly94ZXN0LzI4MDARhg9odHRwOi8v
--eGVzdC8yODEwEYYPaHR0cDovL3hlc3QvMjgyMBGGD2h0dHA6Ly94ZXN0LzI4MzAR
--hg9odHRwOi8veGVzdC8yODQwEYYPaHR0cDovL3hlc3QvMjg1MBGGD2h0dHA6Ly94
--ZXN0LzI4NjARhg9odHRwOi8veGVzdC8yODcwEYYPaHR0cDovL3hlc3QvMjg4MBGG
--D2h0dHA6Ly94ZXN0LzI4OTARhg9odHRwOi8veGVzdC8yOTAwEYYPaHR0cDovL3hl
--c3QvMjkxMBGGD2h0dHA6Ly94ZXN0LzI5MjARhg9odHRwOi8veGVzdC8yOTMwEYYP
--aHR0cDovL3hlc3QvMjk0MBGGD2h0dHA6Ly94ZXN0LzI5NTARhg9odHRwOi8veGVz
--dC8yOTYwEYYPaHR0cDovL3hlc3QvMjk3MBGGD2h0dHA6Ly94ZXN0LzI5ODARhg9o
--dHRwOi8veGVzdC8yOTkwEYYPaHR0cDovL3hlc3QvMzAwMBGGD2h0dHA6Ly94ZXN0
--LzMwMTARhg9odHRwOi8veGVzdC8zMDIwEYYPaHR0cDovL3hlc3QvMzAzMBGGD2h0
--dHA6Ly94ZXN0LzMwNDARhg9odHRwOi8veGVzdC8zMDUwEYYPaHR0cDovL3hlc3Qv
--MzA2MBGGD2h0dHA6Ly94ZXN0LzMwNzARhg9odHRwOi8veGVzdC8zMDgwEYYPaHR0
--cDovL3hlc3QvMzA5MBGGD2h0dHA6Ly94ZXN0LzMxMDARhg9odHRwOi8veGVzdC8z
--MTEwEYYPaHR0cDovL3hlc3QvMzEyMBGGD2h0dHA6Ly94ZXN0LzMxMzARhg9odHRw
--Oi8veGVzdC8zMTQwEYYPaHR0cDovL3hlc3QvMzE1MBGGD2h0dHA6Ly94ZXN0LzMx
--NjARhg9odHRwOi8veGVzdC8zMTcwEYYPaHR0cDovL3hlc3QvMzE4MBGGD2h0dHA6
--Ly94ZXN0LzMxOTARhg9odHRwOi8veGVzdC8zMjAwEYYPaHR0cDovL3hlc3QvMzIx
--MBGGD2h0dHA6Ly94ZXN0LzMyMjARhg9odHRwOi8veGVzdC8zMjMwEYYPaHR0cDov
--L3hlc3QvMzI0MBGGD2h0dHA6Ly94ZXN0LzMyNTARhg9odHRwOi8veGVzdC8zMjYw
--EYYPaHR0cDovL3hlc3QvMzI3MBGGD2h0dHA6Ly94ZXN0LzMyODARhg9odHRwOi8v
--eGVzdC8zMjkwEYYPaHR0cDovL3hlc3QvMzMwMBGGD2h0dHA6Ly94ZXN0LzMzMTAR
--hg9odHRwOi8veGVzdC8zMzIwEYYPaHR0cDovL3hlc3QvMzMzMBGGD2h0dHA6Ly94
--ZXN0LzMzNDARhg9odHRwOi8veGVzdC8zMzUwEYYPaHR0cDovL3hlc3QvMzM2MBGG
--D2h0dHA6Ly94ZXN0LzMzNzARhg9odHRwOi8veGVzdC8zMzgwEYYPaHR0cDovL3hl
--c3QvMzM5MBGGD2h0dHA6Ly94ZXN0LzM0MDARhg9odHRwOi8veGVzdC8zNDEwEYYP
--aHR0cDovL3hlc3QvMzQyMBGGD2h0dHA6Ly94ZXN0LzM0MzARhg9odHRwOi8veGVz
--dC8zNDQwEYYPaHR0cDovL3hlc3QvMzQ1MBGGD2h0dHA6Ly94ZXN0LzM0NjARhg9o
--dHRwOi8veGVzdC8zNDcwEYYPaHR0cDovL3hlc3QvMzQ4MBGGD2h0dHA6Ly94ZXN0
--LzM0OTARhg9odHRwOi8veGVzdC8zNTAwEYYPaHR0cDovL3hlc3QvMzUxMBGGD2h0
--dHA6Ly94ZXN0LzM1MjARhg9odHRwOi8veGVzdC8zNTMwEYYPaHR0cDovL3hlc3Qv
--MzU0MBGGD2h0dHA6Ly94ZXN0LzM1NTARhg9odHRwOi8veGVzdC8zNTYwEYYPaHR0
--cDovL3hlc3QvMzU3MBGGD2h0dHA6Ly94ZXN0LzM1ODARhg9odHRwOi8veGVzdC8z
--NTkwEYYPaHR0cDovL3hlc3QvMzYwMBGGD2h0dHA6Ly94ZXN0LzM2MTARhg9odHRw
--Oi8veGVzdC8zNjIwEYYPaHR0cDovL3hlc3QvMzYzMBGGD2h0dHA6Ly94ZXN0LzM2
--NDARhg9odHRwOi8veGVzdC8zNjUwEYYPaHR0cDovL3hlc3QvMzY2MBGGD2h0dHA6
--Ly94ZXN0LzM2NzARhg9odHRwOi8veGVzdC8zNjgwEYYPaHR0cDovL3hlc3QvMzY5
--MBGGD2h0dHA6Ly94ZXN0LzM3MDARhg9odHRwOi8veGVzdC8zNzEwEYYPaHR0cDov
--L3hlc3QvMzcyMBGGD2h0dHA6Ly94ZXN0LzM3MzARhg9odHRwOi8veGVzdC8zNzQw
--EYYPaHR0cDovL3hlc3QvMzc1MBGGD2h0dHA6Ly94ZXN0LzM3NjARhg9odHRwOi8v
--eGVzdC8zNzcwEYYPaHR0cDovL3hlc3QvMzc4MBGGD2h0dHA6Ly94ZXN0LzM3OTAR
--hg9odHRwOi8veGVzdC8zODAwEYYPaHR0cDovL3hlc3QvMzgxMBGGD2h0dHA6Ly94
--ZXN0LzM4MjARhg9odHRwOi8veGVzdC8zODMwEYYPaHR0cDovL3hlc3QvMzg0MBGG
--D2h0dHA6Ly94ZXN0LzM4NTARhg9odHRwOi8veGVzdC8zODYwEYYPaHR0cDovL3hl
--c3QvMzg3MBGGD2h0dHA6Ly94ZXN0LzM4ODARhg9odHRwOi8veGVzdC8zODkwEYYP
--aHR0cDovL3hlc3QvMzkwMBGGD2h0dHA6Ly94ZXN0LzM5MTARhg9odHRwOi8veGVz
--dC8zOTIwEYYPaHR0cDovL3hlc3QvMzkzMBGGD2h0dHA6Ly94ZXN0LzM5NDARhg9o
--dHRwOi8veGVzdC8zOTUwEYYPaHR0cDovL3hlc3QvMzk2MBGGD2h0dHA6Ly94ZXN0
--LzM5NzARhg9odHRwOi8veGVzdC8zOTgwEYYPaHR0cDovL3hlc3QvMzk5MBGGD2h0
--dHA6Ly94ZXN0LzQwMDARhg9odHRwOi8veGVzdC80MDEwEYYPaHR0cDovL3hlc3Qv
--NDAyMBGGD2h0dHA6Ly94ZXN0LzQwMzARhg9odHRwOi8veGVzdC80MDQwEYYPaHR0
--cDovL3hlc3QvNDA1MBGGD2h0dHA6Ly94ZXN0LzQwNjARhg9odHRwOi8veGVzdC80
--MDcwEYYPaHR0cDovL3hlc3QvNDA4MBGGD2h0dHA6Ly94ZXN0LzQwOTARhg9odHRw
--Oi8veGVzdC80MTAwEYYPaHR0cDovL3hlc3QvNDExMBGGD2h0dHA6Ly94ZXN0LzQx
--MjARhg9odHRwOi8veGVzdC80MTMwEYYPaHR0cDovL3hlc3QvNDE0MBGGD2h0dHA6
--Ly94ZXN0LzQxNTARhg9odHRwOi8veGVzdC80MTYwEYYPaHR0cDovL3hlc3QvNDE3
--MBGGD2h0dHA6Ly94ZXN0LzQxODARhg9odHRwOi8veGVzdC80MTkwEYYPaHR0cDov
--L3hlc3QvNDIwMBGGD2h0dHA6Ly94ZXN0LzQyMTARhg9odHRwOi8veGVzdC80MjIw
--EYYPaHR0cDovL3hlc3QvNDIzMBGGD2h0dHA6Ly94ZXN0LzQyNDARhg9odHRwOi8v
--eGVzdC80MjUwEYYPaHR0cDovL3hlc3QvNDI2MBGGD2h0dHA6Ly94ZXN0LzQyNzAR
--hg9odHRwOi8veGVzdC80MjgwEYYPaHR0cDovL3hlc3QvNDI5MBGGD2h0dHA6Ly94
--ZXN0LzQzMDARhg9odHRwOi8veGVzdC80MzEwEYYPaHR0cDovL3hlc3QvNDMyMBGG
--D2h0dHA6Ly94ZXN0LzQzMzARhg9odHRwOi8veGVzdC80MzQwEYYPaHR0cDovL3hl
--c3QvNDM1MBGGD2h0dHA6Ly94ZXN0LzQzNjARhg9odHRwOi8veGVzdC80MzcwEYYP
--aHR0cDovL3hlc3QvNDM4MBGGD2h0dHA6Ly94ZXN0LzQzOTARhg9odHRwOi8veGVz
--dC80NDAwEYYPaHR0cDovL3hlc3QvNDQxMBGGD2h0dHA6Ly94ZXN0LzQ0MjARhg9o
--dHRwOi8veGVzdC80NDMwEYYPaHR0cDovL3hlc3QvNDQ0MBGGD2h0dHA6Ly94ZXN0
--LzQ0NTARhg9odHRwOi8veGVzdC80NDYwEYYPaHR0cDovL3hlc3QvNDQ3MBGGD2h0
--dHA6Ly94ZXN0LzQ0ODARhg9odHRwOi8veGVzdC80NDkwEYYPaHR0cDovL3hlc3Qv
--NDUwMBGGD2h0dHA6Ly94ZXN0LzQ1MTARhg9odHRwOi8veGVzdC80NTIwEYYPaHR0
--cDovL3hlc3QvNDUzMBGGD2h0dHA6Ly94ZXN0LzQ1NDARhg9odHRwOi8veGVzdC80
--NTUwEYYPaHR0cDovL3hlc3QvNDU2MBGGD2h0dHA6Ly94ZXN0LzQ1NzARhg9odHRw
--Oi8veGVzdC80NTgwEYYPaHR0cDovL3hlc3QvNDU5MBGGD2h0dHA6Ly94ZXN0LzQ2
--MDARhg9odHRwOi8veGVzdC80NjEwEYYPaHR0cDovL3hlc3QvNDYyMBGGD2h0dHA6
--Ly94ZXN0LzQ2MzARhg9odHRwOi8veGVzdC80NjQwEYYPaHR0cDovL3hlc3QvNDY1
--MBGGD2h0dHA6Ly94ZXN0LzQ2NjARhg9odHRwOi8veGVzdC80NjcwEYYPaHR0cDov
--L3hlc3QvNDY4MBGGD2h0dHA6Ly94ZXN0LzQ2OTARhg9odHRwOi8veGVzdC80NzAw
--EYYPaHR0cDovL3hlc3QvNDcxMBGGD2h0dHA6Ly94ZXN0LzQ3MjARhg9odHRwOi8v
--eGVzdC80NzMwEYYPaHR0cDovL3hlc3QvNDc0MBGGD2h0dHA6Ly94ZXN0LzQ3NTAR
--hg9odHRwOi8veGVzdC80NzYwEYYPaHR0cDovL3hlc3QvNDc3MBGGD2h0dHA6Ly94
--ZXN0LzQ3ODARhg9odHRwOi8veGVzdC80NzkwEYYPaHR0cDovL3hlc3QvNDgwMBGG
--D2h0dHA6Ly94ZXN0LzQ4MTARhg9odHRwOi8veGVzdC80ODIwEYYPaHR0cDovL3hl
--c3QvNDgzMBGGD2h0dHA6Ly94ZXN0LzQ4NDARhg9odHRwOi8veGVzdC80ODUwEYYP
--aHR0cDovL3hlc3QvNDg2MBGGD2h0dHA6Ly94ZXN0LzQ4NzARhg9odHRwOi8veGVz
--dC80ODgwEYYPaHR0cDovL3hlc3QvNDg5MBGGD2h0dHA6Ly94ZXN0LzQ5MDARhg9o
--dHRwOi8veGVzdC80OTEwEYYPaHR0cDovL3hlc3QvNDkyMBGGD2h0dHA6Ly94ZXN0
--LzQ5MzARhg9odHRwOi8veGVzdC80OTQwEYYPaHR0cDovL3hlc3QvNDk1MBGGD2h0
--dHA6Ly94ZXN0LzQ5NjARhg9odHRwOi8veGVzdC80OTcwEYYPaHR0cDovL3hlc3Qv
--NDk4MBGGD2h0dHA6Ly94ZXN0LzQ5OTARhg9odHRwOi8veGVzdC81MDAwEYYPaHR0
--cDovL3hlc3QvNTAxMBGGD2h0dHA6Ly94ZXN0LzUwMjARhg9odHRwOi8veGVzdC81
--MDMwEYYPaHR0cDovL3hlc3QvNTA0MBGGD2h0dHA6Ly94ZXN0LzUwNTARhg9odHRw
--Oi8veGVzdC81MDYwEYYPaHR0cDovL3hlc3QvNTA3MBGGD2h0dHA6Ly94ZXN0LzUw
--ODARhg9odHRwOi8veGVzdC81MDkwEYYPaHR0cDovL3hlc3QvNTEwMBGGD2h0dHA6
--Ly94ZXN0LzUxMTARhg9odHRwOi8veGVzdC81MTIwEYYPaHR0cDovL3hlc3QvNTEz
--MBGGD2h0dHA6Ly94ZXN0LzUxNDARhg9odHRwOi8veGVzdC81MTUwEYYPaHR0cDov
--L3hlc3QvNTE2MBGGD2h0dHA6Ly94ZXN0LzUxNzARhg9odHRwOi8veGVzdC81MTgw
--EYYPaHR0cDovL3hlc3QvNTE5MBGGD2h0dHA6Ly94ZXN0LzUyMDARhg9odHRwOi8v
--eGVzdC81MjEwEYYPaHR0cDovL3hlc3QvNTIyMBGGD2h0dHA6Ly94ZXN0LzUyMzAR
--hg9odHRwOi8veGVzdC81MjQwEYYPaHR0cDovL3hlc3QvNTI1MBGGD2h0dHA6Ly94
--ZXN0LzUyNjARhg9odHRwOi8veGVzdC81MjcwEYYPaHR0cDovL3hlc3QvNTI4MBGG
--D2h0dHA6Ly94ZXN0LzUyOTARhg9odHRwOi8veGVzdC81MzAwEYYPaHR0cDovL3hl
--c3QvNTMxMBGGD2h0dHA6Ly94ZXN0LzUzMjARhg9odHRwOi8veGVzdC81MzMwEYYP
--aHR0cDovL3hlc3QvNTM0MBGGD2h0dHA6Ly94ZXN0LzUzNTARhg9odHRwOi8veGVz
--dC81MzYwEYYPaHR0cDovL3hlc3QvNTM3MBGGD2h0dHA6Ly94ZXN0LzUzODARhg9o
--dHRwOi8veGVzdC81MzkwEYYPaHR0cDovL3hlc3QvNTQwMBGGD2h0dHA6Ly94ZXN0
--LzU0MTARhg9odHRwOi8veGVzdC81NDIwEYYPaHR0cDovL3hlc3QvNTQzMBGGD2h0
--dHA6Ly94ZXN0LzU0NDARhg9odHRwOi8veGVzdC81NDUwEYYPaHR0cDovL3hlc3Qv
--NTQ2MBGGD2h0dHA6Ly94ZXN0LzU0NzARhg9odHRwOi8veGVzdC81NDgwEYYPaHR0
--cDovL3hlc3QvNTQ5MBGGD2h0dHA6Ly94ZXN0LzU1MDARhg9odHRwOi8veGVzdC81
--NTEwEYYPaHR0cDovL3hlc3QvNTUyMBGGD2h0dHA6Ly94ZXN0LzU1MzARhg9odHRw
--Oi8veGVzdC81NTQwEYYPaHR0cDovL3hlc3QvNTU1MBGGD2h0dHA6Ly94ZXN0LzU1
--NjARhg9odHRwOi8veGVzdC81NTcwEYYPaHR0cDovL3hlc3QvNTU4MBGGD2h0dHA6
--Ly94ZXN0LzU1OTARhg9odHRwOi8veGVzdC81NjAwEYYPaHR0cDovL3hlc3QvNTYx
--MBGGD2h0dHA6Ly94ZXN0LzU2MjARhg9odHRwOi8veGVzdC81NjMwEYYPaHR0cDov
--L3hlc3QvNTY0MBGGD2h0dHA6Ly94ZXN0LzU2NTARhg9odHRwOi8veGVzdC81NjYw
--EYYPaHR0cDovL3hlc3QvNTY3MBGGD2h0dHA6Ly94ZXN0LzU2ODARhg9odHRwOi8v
--eGVzdC81NjkwEYYPaHR0cDovL3hlc3QvNTcwMBGGD2h0dHA6Ly94ZXN0LzU3MTAR
--hg9odHRwOi8veGVzdC81NzIwEYYPaHR0cDovL3hlc3QvNTczMBGGD2h0dHA6Ly94
--ZXN0LzU3NDARhg9odHRwOi8veGVzdC81NzUwEYYPaHR0cDovL3hlc3QvNTc2MBGG
--D2h0dHA6Ly94ZXN0LzU3NzARhg9odHRwOi8veGVzdC81NzgwEYYPaHR0cDovL3hl
--c3QvNTc5MBGGD2h0dHA6Ly94ZXN0LzU4MDARhg9odHRwOi8veGVzdC81ODEwEYYP
--aHR0cDovL3hlc3QvNTgyMBGGD2h0dHA6Ly94ZXN0LzU4MzARhg9odHRwOi8veGVz
--dC81ODQwEYYPaHR0cDovL3hlc3QvNTg1MBGGD2h0dHA6Ly94ZXN0LzU4NjARhg9o
--dHRwOi8veGVzdC81ODcwEYYPaHR0cDovL3hlc3QvNTg4MBGGD2h0dHA6Ly94ZXN0
--LzU4OTARhg9odHRwOi8veGVzdC81OTAwEYYPaHR0cDovL3hlc3QvNTkxMBGGD2h0
--dHA6Ly94ZXN0LzU5MjARhg9odHRwOi8veGVzdC81OTMwEYYPaHR0cDovL3hlc3Qv
--NTk0MBGGD2h0dHA6Ly94ZXN0LzU5NTARhg9odHRwOi8veGVzdC81OTYwEYYPaHR0
--cDovL3hlc3QvNTk3MBGGD2h0dHA6Ly94ZXN0LzU5ODARhg9odHRwOi8veGVzdC81
--OTkwEYYPaHR0cDovL3hlc3QvNjAwMBGGD2h0dHA6Ly94ZXN0LzYwMTARhg9odHRw
--Oi8veGVzdC82MDIwEYYPaHR0cDovL3hlc3QvNjAzMBGGD2h0dHA6Ly94ZXN0LzYw
--NDARhg9odHRwOi8veGVzdC82MDUwEYYPaHR0cDovL3hlc3QvNjA2MBGGD2h0dHA6
--Ly94ZXN0LzYwNzARhg9odHRwOi8veGVzdC82MDgwEYYPaHR0cDovL3hlc3QvNjA5
--MBGGD2h0dHA6Ly94ZXN0LzYxMDARhg9odHRwOi8veGVzdC82MTEwEYYPaHR0cDov
--L3hlc3QvNjEyMBGGD2h0dHA6Ly94ZXN0LzYxMzARhg9odHRwOi8veGVzdC82MTQw
--EYYPaHR0cDovL3hlc3QvNjE1MBGGD2h0dHA6Ly94ZXN0LzYxNjARhg9odHRwOi8v
--eGVzdC82MTcwEYYPaHR0cDovL3hlc3QvNjE4MBGGD2h0dHA6Ly94ZXN0LzYxOTAR
--hg9odHRwOi8veGVzdC82MjAwEYYPaHR0cDovL3hlc3QvNjIxMBGGD2h0dHA6Ly94
--ZXN0LzYyMjARhg9odHRwOi8veGVzdC82MjMwEYYPaHR0cDovL3hlc3QvNjI0MBGG
--D2h0dHA6Ly94ZXN0LzYyNTARhg9odHRwOi8veGVzdC82MjYwEYYPaHR0cDovL3hl
--c3QvNjI3MBGGD2h0dHA6Ly94ZXN0LzYyODARhg9odHRwOi8veGVzdC82MjkwEYYP
--aHR0cDovL3hlc3QvNjMwMBGGD2h0dHA6Ly94ZXN0LzYzMTARhg9odHRwOi8veGVz
--dC82MzIwEYYPaHR0cDovL3hlc3QvNjMzMBGGD2h0dHA6Ly94ZXN0LzYzNDARhg9o
--dHRwOi8veGVzdC82MzUwEYYPaHR0cDovL3hlc3QvNjM2MBGGD2h0dHA6Ly94ZXN0
--LzYzNzARhg9odHRwOi8veGVzdC82MzgwEYYPaHR0cDovL3hlc3QvNjM5MBGGD2h0
--dHA6Ly94ZXN0LzY0MDARhg9odHRwOi8veGVzdC82NDEwEYYPaHR0cDovL3hlc3Qv
--NjQyMBGGD2h0dHA6Ly94ZXN0LzY0MzARhg9odHRwOi8veGVzdC82NDQwEYYPaHR0
--cDovL3hlc3QvNjQ1MBGGD2h0dHA6Ly94ZXN0LzY0NjARhg9odHRwOi8veGVzdC82
--NDcwEYYPaHR0cDovL3hlc3QvNjQ4MBGGD2h0dHA6Ly94ZXN0LzY0OTARhg9odHRw
--Oi8veGVzdC82NTAwEYYPaHR0cDovL3hlc3QvNjUxMBGGD2h0dHA6Ly94ZXN0LzY1
--MjARhg9odHRwOi8veGVzdC82NTMwEYYPaHR0cDovL3hlc3QvNjU0MBGGD2h0dHA6
--Ly94ZXN0LzY1NTARhg9odHRwOi8veGVzdC82NTYwEYYPaHR0cDovL3hlc3QvNjU3
--MBGGD2h0dHA6Ly94ZXN0LzY1ODARhg9odHRwOi8veGVzdC82NTkwEYYPaHR0cDov
--L3hlc3QvNjYwMBGGD2h0dHA6Ly94ZXN0LzY2MTARhg9odHRwOi8veGVzdC82NjIw
--EYYPaHR0cDovL3hlc3QvNjYzMBGGD2h0dHA6Ly94ZXN0LzY2NDARhg9odHRwOi8v
--eGVzdC82NjUwEYYPaHR0cDovL3hlc3QvNjY2MBGGD2h0dHA6Ly94ZXN0LzY2NzAR
--hg9odHRwOi8veGVzdC82NjgwEYYPaHR0cDovL3hlc3QvNjY5MBGGD2h0dHA6Ly94
--ZXN0LzY3MDARhg9odHRwOi8veGVzdC82NzEwEYYPaHR0cDovL3hlc3QvNjcyMBGG
--D2h0dHA6Ly94ZXN0LzY3MzARhg9odHRwOi8veGVzdC82NzQwEYYPaHR0cDovL3hl
--c3QvNjc1MBGGD2h0dHA6Ly94ZXN0LzY3NjARhg9odHRwOi8veGVzdC82NzcwEYYP
--aHR0cDovL3hlc3QvNjc4MBGGD2h0dHA6Ly94ZXN0LzY3OTARhg9odHRwOi8veGVz
--dC82ODAwEYYPaHR0cDovL3hlc3QvNjgxMBGGD2h0dHA6Ly94ZXN0LzY4MjARhg9o
--dHRwOi8veGVzdC82ODMwEYYPaHR0cDovL3hlc3QvNjg0MBGGD2h0dHA6Ly94ZXN0
--LzY4NTARhg9odHRwOi8veGVzdC82ODYwEYYPaHR0cDovL3hlc3QvNjg3MBGGD2h0
--dHA6Ly94ZXN0LzY4ODARhg9odHRwOi8veGVzdC82ODkwEYYPaHR0cDovL3hlc3Qv
--NjkwMBGGD2h0dHA6Ly94ZXN0LzY5MTARhg9odHRwOi8veGVzdC82OTIwEYYPaHR0
--cDovL3hlc3QvNjkzMBGGD2h0dHA6Ly94ZXN0LzY5NDARhg9odHRwOi8veGVzdC82
--OTUwEYYPaHR0cDovL3hlc3QvNjk2MBGGD2h0dHA6Ly94ZXN0LzY5NzARhg9odHRw
--Oi8veGVzdC82OTgwEYYPaHR0cDovL3hlc3QvNjk5MBGGD2h0dHA6Ly94ZXN0Lzcw
--MDARhg9odHRwOi8veGVzdC83MDEwEYYPaHR0cDovL3hlc3QvNzAyMBGGD2h0dHA6
--Ly94ZXN0LzcwMzARhg9odHRwOi8veGVzdC83MDQwEYYPaHR0cDovL3hlc3QvNzA1
--MBGGD2h0dHA6Ly94ZXN0LzcwNjARhg9odHRwOi8veGVzdC83MDcwEYYPaHR0cDov
--L3hlc3QvNzA4MBGGD2h0dHA6Ly94ZXN0LzcwOTARhg9odHRwOi8veGVzdC83MTAw
--EYYPaHR0cDovL3hlc3QvNzExMBGGD2h0dHA6Ly94ZXN0LzcxMjARhg9odHRwOi8v
--eGVzdC83MTMwEYYPaHR0cDovL3hlc3QvNzE0MBGGD2h0dHA6Ly94ZXN0LzcxNTAR
--hg9odHRwOi8veGVzdC83MTYwEYYPaHR0cDovL3hlc3QvNzE3MBGGD2h0dHA6Ly94
--ZXN0LzcxODARhg9odHRwOi8veGVzdC83MTkwEYYPaHR0cDovL3hlc3QvNzIwMBGG
--D2h0dHA6Ly94ZXN0LzcyMTARhg9odHRwOi8veGVzdC83MjIwEYYPaHR0cDovL3hl
--c3QvNzIzMBGGD2h0dHA6Ly94ZXN0LzcyNDARhg9odHRwOi8veGVzdC83MjUwEYYP
--aHR0cDovL3hlc3QvNzI2MBGGD2h0dHA6Ly94ZXN0LzcyNzARhg9odHRwOi8veGVz
--dC83MjgwEYYPaHR0cDovL3hlc3QvNzI5MBGGD2h0dHA6Ly94ZXN0LzczMDARhg9o
--dHRwOi8veGVzdC83MzEwEYYPaHR0cDovL3hlc3QvNzMyMBGGD2h0dHA6Ly94ZXN0
--LzczMzARhg9odHRwOi8veGVzdC83MzQwEYYPaHR0cDovL3hlc3QvNzM1MBGGD2h0
--dHA6Ly94ZXN0LzczNjARhg9odHRwOi8veGVzdC83MzcwEYYPaHR0cDovL3hlc3Qv
--NzM4MBGGD2h0dHA6Ly94ZXN0LzczOTARhg9odHRwOi8veGVzdC83NDAwEYYPaHR0
--cDovL3hlc3QvNzQxMBGGD2h0dHA6Ly94ZXN0Lzc0MjARhg9odHRwOi8veGVzdC83
--NDMwEYYPaHR0cDovL3hlc3QvNzQ0MBGGD2h0dHA6Ly94ZXN0Lzc0NTARhg9odHRw
--Oi8veGVzdC83NDYwEYYPaHR0cDovL3hlc3QvNzQ3MBGGD2h0dHA6Ly94ZXN0Lzc0
--ODARhg9odHRwOi8veGVzdC83NDkwEYYPaHR0cDovL3hlc3QvNzUwMBGGD2h0dHA6
--Ly94ZXN0Lzc1MTARhg9odHRwOi8veGVzdC83NTIwEYYPaHR0cDovL3hlc3QvNzUz
--MBGGD2h0dHA6Ly94ZXN0Lzc1NDARhg9odHRwOi8veGVzdC83NTUwEYYPaHR0cDov
--L3hlc3QvNzU2MBGGD2h0dHA6Ly94ZXN0Lzc1NzARhg9odHRwOi8veGVzdC83NTgw
--EYYPaHR0cDovL3hlc3QvNzU5MBGGD2h0dHA6Ly94ZXN0Lzc2MDARhg9odHRwOi8v
--eGVzdC83NjEwEYYPaHR0cDovL3hlc3QvNzYyMBGGD2h0dHA6Ly94ZXN0Lzc2MzAR
--hg9odHRwOi8veGVzdC83NjQwEYYPaHR0cDovL3hlc3QvNzY1MBGGD2h0dHA6Ly94
--ZXN0Lzc2NjARhg9odHRwOi8veGVzdC83NjcwEYYPaHR0cDovL3hlc3QvNzY4MBGG
--D2h0dHA6Ly94ZXN0Lzc2OTARhg9odHRwOi8veGVzdC83NzAwEYYPaHR0cDovL3hl
--c3QvNzcxMBGGD2h0dHA6Ly94ZXN0Lzc3MjARhg9odHRwOi8veGVzdC83NzMwEYYP
--aHR0cDovL3hlc3QvNzc0MBGGD2h0dHA6Ly94ZXN0Lzc3NTARhg9odHRwOi8veGVz
--dC83NzYwEYYPaHR0cDovL3hlc3QvNzc3MBGGD2h0dHA6Ly94ZXN0Lzc3ODARhg9o
--dHRwOi8veGVzdC83NzkwEYYPaHR0cDovL3hlc3QvNzgwMBGGD2h0dHA6Ly94ZXN0
--Lzc4MTARhg9odHRwOi8veGVzdC83ODIwEYYPaHR0cDovL3hlc3QvNzgzMBGGD2h0
--dHA6Ly94ZXN0Lzc4NDARhg9odHRwOi8veGVzdC83ODUwEYYPaHR0cDovL3hlc3Qv
--Nzg2MBGGD2h0dHA6Ly94ZXN0Lzc4NzARhg9odHRwOi8veGVzdC83ODgwEYYPaHR0
--cDovL3hlc3QvNzg5MBGGD2h0dHA6Ly94ZXN0Lzc5MDARhg9odHRwOi8veGVzdC83
--OTEwEYYPaHR0cDovL3hlc3QvNzkyMBGGD2h0dHA6Ly94ZXN0Lzc5MzARhg9odHRw
--Oi8veGVzdC83OTQwEYYPaHR0cDovL3hlc3QvNzk1MBGGD2h0dHA6Ly94ZXN0Lzc5
--NjARhg9odHRwOi8veGVzdC83OTcwEYYPaHR0cDovL3hlc3QvNzk4MBGGD2h0dHA6
--Ly94ZXN0Lzc5OTARhg9odHRwOi8veGVzdC84MDAwEYYPaHR0cDovL3hlc3QvODAx
--MBGGD2h0dHA6Ly94ZXN0LzgwMjARhg9odHRwOi8veGVzdC84MDMwEYYPaHR0cDov
--L3hlc3QvODA0MBGGD2h0dHA6Ly94ZXN0LzgwNTARhg9odHRwOi8veGVzdC84MDYw
--EYYPaHR0cDovL3hlc3QvODA3MBGGD2h0dHA6Ly94ZXN0LzgwODARhg9odHRwOi8v
--eGVzdC84MDkwEYYPaHR0cDovL3hlc3QvODEwMBGGD2h0dHA6Ly94ZXN0LzgxMTAR
--hg9odHRwOi8veGVzdC84MTIwEYYPaHR0cDovL3hlc3QvODEzMBGGD2h0dHA6Ly94
--ZXN0LzgxNDARhg9odHRwOi8veGVzdC84MTUwEYYPaHR0cDovL3hlc3QvODE2MBGG
--D2h0dHA6Ly94ZXN0LzgxNzARhg9odHRwOi8veGVzdC84MTgwEYYPaHR0cDovL3hl
--c3QvODE5MBGGD2h0dHA6Ly94ZXN0LzgyMDARhg9odHRwOi8veGVzdC84MjEwEYYP
--aHR0cDovL3hlc3QvODIyMBGGD2h0dHA6Ly94ZXN0LzgyMzARhg9odHRwOi8veGVz
--dC84MjQwEYYPaHR0cDovL3hlc3QvODI1MBGGD2h0dHA6Ly94ZXN0LzgyNjARhg9o
--dHRwOi8veGVzdC84MjcwEYYPaHR0cDovL3hlc3QvODI4MBGGD2h0dHA6Ly94ZXN0
--LzgyOTARhg9odHRwOi8veGVzdC84MzAwEYYPaHR0cDovL3hlc3QvODMxMBGGD2h0
--dHA6Ly94ZXN0LzgzMjARhg9odHRwOi8veGVzdC84MzMwEYYPaHR0cDovL3hlc3Qv
--ODM0MBGGD2h0dHA6Ly94ZXN0LzgzNTARhg9odHRwOi8veGVzdC84MzYwEYYPaHR0
--cDovL3hlc3QvODM3MBGGD2h0dHA6Ly94ZXN0LzgzODARhg9odHRwOi8veGVzdC84
--MzkwEYYPaHR0cDovL3hlc3QvODQwMBGGD2h0dHA6Ly94ZXN0Lzg0MTARhg9odHRw
--Oi8veGVzdC84NDIwEYYPaHR0cDovL3hlc3QvODQzMBGGD2h0dHA6Ly94ZXN0Lzg0
--NDARhg9odHRwOi8veGVzdC84NDUwEYYPaHR0cDovL3hlc3QvODQ2MBGGD2h0dHA6
--Ly94ZXN0Lzg0NzARhg9odHRwOi8veGVzdC84NDgwEYYPaHR0cDovL3hlc3QvODQ5
--MBGGD2h0dHA6Ly94ZXN0Lzg1MDARhg9odHRwOi8veGVzdC84NTEwEYYPaHR0cDov
--L3hlc3QvODUyMBGGD2h0dHA6Ly94ZXN0Lzg1MzARhg9odHRwOi8veGVzdC84NTQw
--EYYPaHR0cDovL3hlc3QvODU1MBGGD2h0dHA6Ly94ZXN0Lzg1NjARhg9odHRwOi8v
--eGVzdC84NTcwEYYPaHR0cDovL3hlc3QvODU4MBGGD2h0dHA6Ly94ZXN0Lzg1OTAR
--hg9odHRwOi8veGVzdC84NjAwEYYPaHR0cDovL3hlc3QvODYxMBGGD2h0dHA6Ly94
--ZXN0Lzg2MjARhg9odHRwOi8veGVzdC84NjMwEYYPaHR0cDovL3hlc3QvODY0MBGG
--D2h0dHA6Ly94ZXN0Lzg2NTARhg9odHRwOi8veGVzdC84NjYwEYYPaHR0cDovL3hl
--c3QvODY3MBGGD2h0dHA6Ly94ZXN0Lzg2ODARhg9odHRwOi8veGVzdC84NjkwEYYP
--aHR0cDovL3hlc3QvODcwMBGGD2h0dHA6Ly94ZXN0Lzg3MTARhg9odHRwOi8veGVz
--dC84NzIwEYYPaHR0cDovL3hlc3QvODczMBGGD2h0dHA6Ly94ZXN0Lzg3NDARhg9o
--dHRwOi8veGVzdC84NzUwEYYPaHR0cDovL3hlc3QvODc2MBGGD2h0dHA6Ly94ZXN0
--Lzg3NzARhg9odHRwOi8veGVzdC84NzgwEYYPaHR0cDovL3hlc3QvODc5MBGGD2h0
--dHA6Ly94ZXN0Lzg4MDARhg9odHRwOi8veGVzdC84ODEwEYYPaHR0cDovL3hlc3Qv
--ODgyMBGGD2h0dHA6Ly94ZXN0Lzg4MzARhg9odHRwOi8veGVzdC84ODQwEYYPaHR0
--cDovL3hlc3QvODg1MBGGD2h0dHA6Ly94ZXN0Lzg4NjARhg9odHRwOi8veGVzdC84
--ODcwEYYPaHR0cDovL3hlc3QvODg4MBGGD2h0dHA6Ly94ZXN0Lzg4OTARhg9odHRw
--Oi8veGVzdC84OTAwEYYPaHR0cDovL3hlc3QvODkxMBGGD2h0dHA6Ly94ZXN0Lzg5
--MjARhg9odHRwOi8veGVzdC84OTMwEYYPaHR0cDovL3hlc3QvODk0MBGGD2h0dHA6
--Ly94ZXN0Lzg5NTARhg9odHRwOi8veGVzdC84OTYwEYYPaHR0cDovL3hlc3QvODk3
--MBGGD2h0dHA6Ly94ZXN0Lzg5ODARhg9odHRwOi8veGVzdC84OTkwEYYPaHR0cDov
--L3hlc3QvOTAwMBGGD2h0dHA6Ly94ZXN0LzkwMTARhg9odHRwOi8veGVzdC85MDIw
--EYYPaHR0cDovL3hlc3QvOTAzMBGGD2h0dHA6Ly94ZXN0LzkwNDARhg9odHRwOi8v
--eGVzdC85MDUwEYYPaHR0cDovL3hlc3QvOTA2MBGGD2h0dHA6Ly94ZXN0LzkwNzAR
--hg9odHRwOi8veGVzdC85MDgwEYYPaHR0cDovL3hlc3QvOTA5MBGGD2h0dHA6Ly94
--ZXN0LzkxMDARhg9odHRwOi8veGVzdC85MTEwEYYPaHR0cDovL3hlc3QvOTEyMBGG
--D2h0dHA6Ly94ZXN0LzkxMzARhg9odHRwOi8veGVzdC85MTQwEYYPaHR0cDovL3hl
--c3QvOTE1MBGGD2h0dHA6Ly94ZXN0LzkxNjARhg9odHRwOi8veGVzdC85MTcwEYYP
--aHR0cDovL3hlc3QvOTE4MBGGD2h0dHA6Ly94ZXN0LzkxOTARhg9odHRwOi8veGVz
--dC85MjAwEYYPaHR0cDovL3hlc3QvOTIxMBGGD2h0dHA6Ly94ZXN0LzkyMjARhg9o
--dHRwOi8veGVzdC85MjMwEYYPaHR0cDovL3hlc3QvOTI0MBGGD2h0dHA6Ly94ZXN0
--LzkyNTARhg9odHRwOi8veGVzdC85MjYwEYYPaHR0cDovL3hlc3QvOTI3MBGGD2h0
--dHA6Ly94ZXN0LzkyODARhg9odHRwOi8veGVzdC85MjkwEYYPaHR0cDovL3hlc3Qv
--OTMwMBGGD2h0dHA6Ly94ZXN0LzkzMTARhg9odHRwOi8veGVzdC85MzIwEYYPaHR0
--cDovL3hlc3QvOTMzMBGGD2h0dHA6Ly94ZXN0LzkzNDARhg9odHRwOi8veGVzdC85
--MzUwEYYPaHR0cDovL3hlc3QvOTM2MBGGD2h0dHA6Ly94ZXN0LzkzNzARhg9odHRw
--Oi8veGVzdC85MzgwEYYPaHR0cDovL3hlc3QvOTM5MBGGD2h0dHA6Ly94ZXN0Lzk0
--MDARhg9odHRwOi8veGVzdC85NDEwEYYPaHR0cDovL3hlc3QvOTQyMBGGD2h0dHA6
--Ly94ZXN0Lzk0MzARhg9odHRwOi8veGVzdC85NDQwEYYPaHR0cDovL3hlc3QvOTQ1
--MBGGD2h0dHA6Ly94ZXN0Lzk0NjARhg9odHRwOi8veGVzdC85NDcwEYYPaHR0cDov
--L3hlc3QvOTQ4MBGGD2h0dHA6Ly94ZXN0Lzk0OTARhg9odHRwOi8veGVzdC85NTAw
--EYYPaHR0cDovL3hlc3QvOTUxMBGGD2h0dHA6Ly94ZXN0Lzk1MjARhg9odHRwOi8v
--eGVzdC85NTMwEYYPaHR0cDovL3hlc3QvOTU0MBGGD2h0dHA6Ly94ZXN0Lzk1NTAR
--hg9odHRwOi8veGVzdC85NTYwEYYPaHR0cDovL3hlc3QvOTU3MBGGD2h0dHA6Ly94
--ZXN0Lzk1ODARhg9odHRwOi8veGVzdC85NTkwEYYPaHR0cDovL3hlc3QvOTYwMBGG
--D2h0dHA6Ly94ZXN0Lzk2MTARhg9odHRwOi8veGVzdC85NjIwEYYPaHR0cDovL3hl
--c3QvOTYzMBGGD2h0dHA6Ly94ZXN0Lzk2NDARhg9odHRwOi8veGVzdC85NjUwEYYP
--aHR0cDovL3hlc3QvOTY2MBGGD2h0dHA6Ly94ZXN0Lzk2NzARhg9odHRwOi8veGVz
--dC85NjgwEYYPaHR0cDovL3hlc3QvOTY5MBGGD2h0dHA6Ly94ZXN0Lzk3MDARhg9o
--dHRwOi8veGVzdC85NzEwEYYPaHR0cDovL3hlc3QvOTcyMBGGD2h0dHA6Ly94ZXN0
--Lzk3MzARhg9odHRwOi8veGVzdC85NzQwEYYPaHR0cDovL3hlc3QvOTc1MBGGD2h0
--dHA6Ly94ZXN0Lzk3NjARhg9odHRwOi8veGVzdC85NzcwEYYPaHR0cDovL3hlc3Qv
--OTc4MBGGD2h0dHA6Ly94ZXN0Lzk3OTARhg9odHRwOi8veGVzdC85ODAwEYYPaHR0
--cDovL3hlc3QvOTgxMBGGD2h0dHA6Ly94ZXN0Lzk4MjARhg9odHRwOi8veGVzdC85
--ODMwEYYPaHR0cDovL3hlc3QvOTg0MBGGD2h0dHA6Ly94ZXN0Lzk4NTARhg9odHRw
--Oi8veGVzdC85ODYwEYYPaHR0cDovL3hlc3QvOTg3MBGGD2h0dHA6Ly94ZXN0Lzk4
--ODARhg9odHRwOi8veGVzdC85ODkwEYYPaHR0cDovL3hlc3QvOTkwMBGGD2h0dHA6
--Ly94ZXN0Lzk5MTARhg9odHRwOi8veGVzdC85OTIwEYYPaHR0cDovL3hlc3QvOTkz
--MBGGD2h0dHA6Ly94ZXN0Lzk5NDARhg9odHRwOi8veGVzdC85OTUwEYYPaHR0cDov
--L3hlc3QvOTk2MBGGD2h0dHA6Ly94ZXN0Lzk5NzARhg9odHRwOi8veGVzdC85OTgw
--EYYPaHR0cDovL3hlc3QvOTk5MBKGEGh0dHA6Ly94ZXN0LzEwMDAwEoYQaHR0cDov
--L3hlc3QvMTAwMTAShhBodHRwOi8veGVzdC8xMDAyMBKGEGh0dHA6Ly94ZXN0LzEw
--MDMwEoYQaHR0cDovL3hlc3QvMTAwNDAShhBodHRwOi8veGVzdC8xMDA1MBKGEGh0
--dHA6Ly94ZXN0LzEwMDYwEoYQaHR0cDovL3hlc3QvMTAwNzAShhBodHRwOi8veGVz
--dC8xMDA4MBKGEGh0dHA6Ly94ZXN0LzEwMDkwEoYQaHR0cDovL3hlc3QvMTAxMDAS
--hhBodHRwOi8veGVzdC8xMDExMBKGEGh0dHA6Ly94ZXN0LzEwMTIwEoYQaHR0cDov
--L3hlc3QvMTAxMzAShhBodHRwOi8veGVzdC8xMDE0MBKGEGh0dHA6Ly94ZXN0LzEw
--MTUwEoYQaHR0cDovL3hlc3QvMTAxNjAShhBodHRwOi8veGVzdC8xMDE3MBKGEGh0
--dHA6Ly94ZXN0LzEwMTgwEoYQaHR0cDovL3hlc3QvMTAxOTAShhBodHRwOi8veGVz
--dC8xMDIwMBKGEGh0dHA6Ly94ZXN0LzEwMjEwEoYQaHR0cDovL3hlc3QvMTAyMjAS
--hhBodHRwOi8veGVzdC8xMDIzMBKGEGh0dHA6Ly94ZXN0LzEwMjQwDQYJKoZIhvcN
--AQELBQADggEBAF2U8ArUAHk1z1cOPSTpF9kMIvJ+GHNKvIn6zxn7JrOTe/ZhJKA2
--4SkfPKbbwsP83QVbJfEhTykbsrzGDT3LJ6UWjXOz5KCCrkN7ck9Sqs/BD2sTfa8R
--zc6NpXiyqJ1OIm0NYFkpsaWXAVKuTm9OvE7M1Gv5MgRCHOeHdGxCdKZMgwe4VC4z
--TGsJOOHOsVZZgvVpkE99BFFFaAkUW7LJpLBBq3r2SoQNiC9F0juBvOiRuajxu5PX
--Qn3IyiQZ9yikxmesGi6NiHKuRxTaHDj3pn44r8RHCn2OOD0lOkjXrwsMwEVCQ18e
--ZhtkUypPgaHoIdBLvEmHsF431WitevSq9K0=
-------END CERTIFICATE-----
--
--Certificate:
-- Data:
-- Version: 3 (0x2)
-- Serial Number:
-- 3c:e5:fc:81:88:59:a8:50:16:c1:7f:d7:e5:2a:e5:96:7f:c2:f6:f5
-- Signature Algorithm: sha256WithRSAEncryption
-- Issuer: CN=Root
-- Validity
-- Not Before: Oct 5 12:00:00 2021 GMT
-- Not After : Oct 5 12:00:00 2022 GMT
-- Subject: CN=Root
-- Subject Public Key Info:
-- Public Key Algorithm: rsaEncryption
-- RSA Public-Key: (2048 bit)
-- Modulus:
-- 00:cc:7a:cf:ec:bd:a0:01:c3:26:51:d8:28:ae:80:
-- b6:0b:d2:76:d7:04:86:18:ac:fd:f2:8f:64:e7:92:
-- d6:d0:42:32:4f:cd:d0:4d:d0:ac:71:9a:73:80:0a:
-- 04:70:20:a3:2f:a0:9b:f4:3e:19:cf:69:54:b5:be:
-- 85:dd:6e:b2:0b:14:df:27:bf:2c:a1:bb:b2:a7:23:
-- 0c:fb:ae:78:69:6b:1a:6e:7c:38:7f:15:5d:e5:cf:
-- 27:32:56:2a:f1:87:fe:3a:16:73:e6:dd:83:f2:f2:
-- ae:31:c8:93:d2:49:b7:b1:71:f5:55:de:bb:85:cd:
-- cb:19:74:1d:61:49:da:83:44:ec:4c:5e:aa:d5:8b:
-- 32:1a:db:77:d5:b1:83:8c:00:b9:55:b7:64:78:5c:
-- 87:c9:68:58:bd:de:af:50:e2:bb:bd:32:cd:fa:3d:
-- df:3b:3d:93:10:16:b6:6d:90:1d:d7:7d:e9:ea:7e:
-- 1e:2e:c8:10:a4:14:ad:62:72:af:65:95:1f:a7:6e:
-- 81:84:9f:df:85:4e:c0:3e:7f:8c:02:0a:f0:65:58:
-- 84:7c:6a:e1:53:af:3c:f1:7a:b9:33:c8:e7:f9:ed:
-- 92:46:00:50:62:f0:89:41:57:1e:81:d1:04:12:b3:
-- fc:25:60:17:5c:0b:eb:a9:46:4a:03:39:16:11:4d:
-- e1:7b
-- Exponent: 65537 (0x10001)
-- X509v3 extensions:
-- X509v3 Subject Key Identifier:
-- B6:C2:EF:9F:D1:29:CB:0F:89:8C:4C:52:D4:BD:40:B7:11:B7:71:DD
-- X509v3 Authority Key Identifier:
-- keyid:B6:C2:EF:9F:D1:29:CB:0F:89:8C:4C:52:D4:BD:40:B7:11:B7:71:DD
--
-- Authority Information Access:
-- CA Issuers - URI:http://url-for-aia/Root.cer
--
-- X509v3 CRL Distribution Points:
--
-- Full Name:
-- URI:http://url-for-crl/Root.crl
--
-- X509v3 Key Usage: critical
-- Certificate Sign, CRL Sign
-- X509v3 Basic Constraints: critical
-- CA:TRUE
-- Signature Algorithm: sha256WithRSAEncryption
-- 3a:c4:f6:50:32:77:14:e2:a8:69:9b:ad:85:a0:fa:95:08:d2:
-- 22:cb:d3:aa:53:94:e5:1f:92:fa:d5:7b:c8:a5:b6:13:15:42:
-- 42:2c:ce:48:e9:f1:55:c7:cd:f4:29:b6:46:e9:08:81:8c:83:
-- 82:c5:d4:f7:1e:90:3c:2d:78:39:7f:be:e8:30:5e:f7:d4:72:
-- e4:db:0a:09:49:c0:ce:83:66:c0:16:73:f4:cf:67:ad:74:e3:
-- 10:60:72:16:77:4a:c8:08:88:93:62:c0:4a:23:0b:74:3e:63:
-- 98:9c:54:1d:34:d5:b6:da:bc:7c:5a:f2:68:22:e2:d9:15:12:
-- 84:04:f6:3e:b3:ac:97:bc:b4:54:93:3c:d4:0b:25:e4:c1:34:
-- 5a:98:bc:aa:de:78:bb:12:3f:33:82:a2:bf:5f:82:e6:9e:ad:
-- 85:21:21:d9:9d:41:5e:4f:72:a3:16:8d:7d:b4:1d:26:d8:77:
-- d8:29:22:13:a2:f6:d7:9f:1c:60:2f:17:9e:fd:f4:63:a3:c6:
-- ed:e3:47:43:b7:73:39:82:97:18:fa:4b:db:2e:ac:d3:7b:54:
-- cd:f8:d0:eb:70:13:03:8a:4b:9b:90:62:4e:b0:34:22:49:ec:
-- 78:2a:47:97:60:13:03:23:ed:09:ff:a8:00:59:6a:2c:d1:2e:
-- d0:93:0b:59
-------BEGIN CERTIFICATE-----
--MIIDeDCCAmCgAwIBAgIUPOX8gYhZqFAWwX/X5Srlln/C9vUwDQYJKoZIhvcNAQEL
--BQAwDzENMAsGA1UEAwwEUm9vdDAeFw0yMTEwMDUxMjAwMDBaFw0yMjEwMDUxMjAw
--MDBaMA8xDTALBgNVBAMMBFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
--AoIBAQDMes/svaABwyZR2CiugLYL0nbXBIYYrP3yj2TnktbQQjJPzdBN0KxxmnOA
--CgRwIKMvoJv0PhnPaVS1voXdbrILFN8nvyyhu7KnIwz7rnhpaxpufDh/FV3lzycy
--Virxh/46FnPm3YPy8q4xyJPSSbexcfVV3ruFzcsZdB1hSdqDROxMXqrVizIa23fV
--sYOMALlVt2R4XIfJaFi93q9Q4ru9Ms36Pd87PZMQFrZtkB3Xfenqfh4uyBCkFK1i
--cq9llR+nboGEn9+FTsA+f4wCCvBlWIR8auFTrzzxerkzyOf57ZJGAFBi8IlBVx6B
--0QQSs/wlYBdcC+upRkoDORYRTeF7AgMBAAGjgcswgcgwHQYDVR0OBBYEFLbC75/R
--KcsPiYxMUtS9QLcRt3HdMB8GA1UdIwQYMBaAFLbC75/RKcsPiYxMUtS9QLcRt3Hd
--MDcGCCsGAQUFBwEBBCswKTAnBggrBgEFBQcwAoYbaHR0cDovL3VybC1mb3ItYWlh
--L1Jvb3QuY2VyMCwGA1UdHwQlMCMwIaAfoB2GG2h0dHA6Ly91cmwtZm9yLWNybC9S
--b290LmNybDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG
--9w0BAQsFAAOCAQEAOsT2UDJ3FOKoaZuthaD6lQjSIsvTqlOU5R+S+tV7yKW2ExVC
--QizOSOnxVcfN9Cm2RukIgYyDgsXU9x6QPC14OX++6DBe99Ry5NsKCUnAzoNmwBZz
--9M9nrXTjEGByFndKyAiIk2LASiMLdD5jmJxUHTTVttq8fFryaCLi2RUShAT2PrOs
--l7y0VJM81Asl5ME0Wpi8qt54uxI/M4Kiv1+C5p6thSEh2Z1BXk9yoxaNfbQdJth3
--2CkiE6L2158cYC8Xnv30Y6PG7eNHQ7dzOYKXGPpL2y6s03tUzfjQ63ATA4pLm5Bi
--TrA0IknseCpHl2ATAyPtCf+oAFlqLNEu0JMLWQ==
-------END CERTIFICATE-----
-diff --git a/net/data/verify_certificate_chain_unittest/many-names/ok-different-types-dirnames.test b/net/data/verify_certificate_chain_unittest/many-names/ok-different-types-dirnames.test
-deleted file mode 100644
-index b3138efc735c0..0000000000000
---- a/net/data/verify_certificate_chain_unittest/many-names/ok-different-types-dirnames.test
-+++ /dev/null
-@@ -1,5 +0,0 @@
--chain: ok-different-types-dirnames.pem
--last_cert_trust: TRUSTED_ANCHOR
--utc_time: DEFAULT
--key_purpose: SERVER_AUTH
--expected_errors:
-diff --git a/net/data/verify_certificate_chain_unittest/many-names/ok-different-types-dns.pem b/net/data/verify_certificate_chain_unittest/many-names/ok-different-types-dns.pem
-deleted file mode 100644
-index 3808f3a0d190b..0000000000000
---- a/net/data/verify_certificate_chain_unittest/many-names/ok-different-types-dns.pem
-+++ /dev/null
-@@ -1,8879 +0,0 @@
--[Created by: generate-chains.py]
--
--A chain containing a large number of name constraints and names,
--but of different types, thus not triggering the limit.
--
--Certificate:
-- Data:
-- Version: 3 (0x2)
-- Serial Number:
-- 2f:ab:b4:3d:dc:c0:77:80:2a:03:09:ad:43:74:02:bf:98:d8:dc
-- Signature Algorithm: sha256WithRSAEncryption
-- Issuer: CN=Intermediate
-- Validity
-- Not Before: Oct 5 12:00:00 2021 GMT
-- Not After : Oct 5 12:00:00 2022 GMT
-- Subject: CN=t0
-- Subject Public Key Info:
-- Public Key Algorithm: rsaEncryption
-- RSA Public-Key: (2048 bit)
-- Modulus:
-- 00:db:2c:53:01:ce:f9:1a:83:36:52:51:2a:5b:42:
-- 63:de:32:75:11:6a:7d:b0:a1:e4:77:47:9b:71:e5:
-- a6:2d:64:d7:ae:5b:04:ed:7a:3f:c7:f6:ca:2b:2b:
-- ad:cd:6c:88:a5:8e:36:fb:e7:a2:22:b5:7d:54:79:
-- e9:d5:7a:5b:ca:2b:29:6c:0d:84:0a:10:c4:21:b6:
-- 58:98:bb:0d:b6:0c:8d:56:5b:2c:85:59:07:ca:06:
-- 46:36:25:1a:29:8e:c4:39:b7:c3:31:ce:6e:49:c2:
-- 01:cf:b0:3b:27:43:8a:e3:d5:06:1f:2d:93:9d:dd:
-- 7a:45:65:6d:fd:b4:b1:c0:10:59:42:f2:1e:8f:ce:
-- 43:ac:97:25:c1:7c:e2:51:e1:44:35:5b:94:aa:03:
-- 6e:da:71:2f:25:7f:58:30:01:e1:12:17:1e:f2:aa:
-- 6c:22:80:b1:c9:65:ea:77:95:b3:07:c4:f7:72:38:
-- 34:fe:a0:43:33:4c:66:6d:a1:e8:a1:04:bc:6f:14:
-- 39:39:44:2e:38:37:74:c9:0a:21:85:91:21:b7:4e:
-- ba:b0:99:4a:76:98:7b:58:ca:1c:d3:b0:40:c3:d9:
-- 2a:75:fb:eb:19:ea:e3:1a:98:31:52:97:e9:7f:a4:
-- 7b:21:7f:2f:dc:62:86:8f:fd:fd:a8:88:e8:4b:44:
-- 52:bd
-- Exponent: 65537 (0x10001)
-- X509v3 extensions:
-- X509v3 Subject Key Identifier:
-- 3B:B4:05:CC:AA:BA:51:3D:FC:F2:F9:1E:25:53:72:E1:3A:F2:9A:DF
-- X509v3 Authority Key Identifier:
-- keyid:92:11:3F:AC:11:96:C7:66:37:CF:83:5A:24:F0:3A:77:AF:33:8D:7F
--
-- Authority Information Access:
-- CA Issuers - URI:http://url-for-aia/Intermediate.cer
--
-- X509v3 CRL Distribution Points:
--
-- Full Name:
-- URI:http://url-for-crl/Intermediate.crl
--
-- X509v3 Key Usage: critical
-- Digital Signature, Key Encipherment
-- X509v3 Extended Key Usage:
-- TLS Web Server Authentication, TLS Web Client Authentication
-- X509v3 Subject Alternative Name:
-- DNS:t0.test, DNS:t1.test, DNS:t2.test, DNS:t3.test, DNS:t4.test, DNS:t5.test, DNS:t6.test, DNS:t7.test, DNS:t8.test, DNS:t9.test, DNS:t10.test, DNS:t11.test, DNS:t12.test, DNS:t13.test, DNS:t14.test, DNS:t15.test, DNS:t16.test, DNS:t17.test, DNS:t18.test, DNS:t19.test, DNS:t20.test, DNS:t21.test, DNS:t22.test, DNS:t23.test, DNS:t24.test, DNS:t25.test, DNS:t26.test, DNS:t27.test, DNS:t28.test, DNS:t29.test, DNS:t30.test, DNS:t31.test, DNS:t32.test, DNS:t33.test, DNS:t34.test, DNS:t35.test, DNS:t36.test, DNS:t37.test, DNS:t38.test, DNS:t39.test, DNS:t40.test, DNS:t41.test, DNS:t42.test, DNS:t43.test, DNS:t44.test, DNS:t45.test, DNS:t46.test, DNS:t47.test, DNS:t48.test, DNS:t49.test, DNS:t50.test, DNS:t51.test, DNS:t52.test, DNS:t53.test, DNS:t54.test, DNS:t55.test, DNS:t56.test, DNS:t57.test, DNS:t58.test, DNS:t59.test, DNS:t60.test, DNS:t61.test, DNS:t62.test, DNS:t63.test, DNS:t64.test, DNS:t65.test, DNS:t66.test, DNS:t67.test, DNS:t68.test, DNS:t69.test, DNS:t70.test, DNS:t71.test, DNS:t72.test, DNS:t73.test, DNS:t74.test, DNS:t75.test, DNS:t76.test, DNS:t77.test, DNS:t78.test, DNS:t79.test, DNS:t80.test, DNS:t81.test, DNS:t82.test, DNS:t83.test, DNS:t84.test, DNS:t85.test, DNS:t86.test, DNS:t87.test, DNS:t88.test, DNS:t89.test, DNS:t90.test, DNS:t91.test, DNS:t92.test, DNS:t93.test, DNS:t94.test, DNS:t95.test, DNS:t96.test, DNS:t97.test, DNS:t98.test, DNS:t99.test, DNS:t100.test, DNS:t101.test, DNS:t102.test, DNS:t103.test, DNS:t104.test, DNS:t105.test, DNS:t106.test, DNS:t107.test, DNS:t108.test, DNS:t109.test, DNS:t110.test, DNS:t111.test, DNS:t112.test, DNS:t113.test, DNS:t114.test, DNS:t115.test, DNS:t116.test, DNS:t117.test, DNS:t118.test, DNS:t119.test, DNS:t120.test, DNS:t121.test, DNS:t122.test, DNS:t123.test, DNS:t124.test, DNS:t125.test, DNS:t126.test, DNS:t127.test, DNS:t128.test, DNS:t129.test, DNS:t130.test, DNS:t131.test, DNS:t132.test, DNS:t133.test, DNS:t134.test, DNS:t135.test, DNS:t136.test, DNS:t137.test, DNS:t138.test, DNS:t139.test, DNS:t140.test, DNS:t141.test, DNS:t142.test, DNS:t143.test, DNS:t144.test, DNS:t145.test, DNS:t146.test, DNS:t147.test, DNS:t148.test, DNS:t149.test, DNS:t150.test, DNS:t151.test, DNS:t152.test, DNS:t153.test, DNS:t154.test, DNS:t155.test, DNS:t156.test, DNS:t157.test, DNS:t158.test, DNS:t159.test, DNS:t160.test, DNS:t161.test, DNS:t162.test, DNS:t163.test, DNS:t164.test, DNS:t165.test, DNS:t166.test, DNS:t167.test, DNS:t168.test, DNS:t169.test, DNS:t170.test, DNS:t171.test, DNS:t172.test, DNS:t173.test, DNS:t174.test, DNS:t175.test, DNS:t176.test, DNS:t177.test, DNS:t178.test, DNS:t179.test, DNS:t180.test, DNS:t181.test, DNS:t182.test, DNS:t183.test, DNS:t184.test, DNS:t185.test, DNS:t186.test, DNS:t187.test, DNS:t188.test, DNS:t189.test, DNS:t190.test, DNS:t191.test, DNS:t192.test, DNS:t193.test, DNS:t194.test, DNS:t195.test, DNS:t196.test, DNS:t197.test, DNS:t198.test, DNS:t199.test, DNS:t200.test, DNS:t201.test, DNS:t202.test, DNS:t203.test, DNS:t204.test, DNS:t205.test, DNS:t206.test, DNS:t207.test, DNS:t208.test, DNS:t209.test, DNS:t210.test, DNS:t211.test, DNS:t212.test, DNS:t213.test, DNS:t214.test, DNS:t215.test, DNS:t216.test, DNS:t217.test, DNS:t218.test, DNS:t219.test, DNS:t220.test, DNS:t221.test, DNS:t222.test, DNS:t223.test, DNS:t224.test, DNS:t225.test, DNS:t226.test, DNS:t227.test, DNS:t228.test, DNS:t229.test, DNS:t230.test, DNS:t231.test, DNS:t232.test, DNS:t233.test, DNS:t234.test, DNS:t235.test, DNS:t236.test, DNS:t237.test, DNS:t238.test, DNS:t239.test, DNS:t240.test, DNS:t241.test, DNS:t242.test, DNS:t243.test, DNS:t244.test, DNS:t245.test, DNS:t246.test, DNS:t247.test, DNS:t248.test, DNS:t249.test, DNS:t250.test, DNS:t251.test, DNS:t252.test, DNS:t253.test, DNS:t254.test, DNS:t255.test, DNS:t256.test, DNS:t257.test, DNS:t258.test, DNS:t259.test, DNS:t260.test, DNS:t261.test, DNS:t262.test, DNS:t263.test, DNS:t264.test, DNS:t265.test, DNS:t266.test, DNS:t267.test, DNS:t268.test, DNS:t269.test, DNS:t270.test, DNS:t271.test, DNS:t272.test, DNS:t273.test, DNS:t274.test, DNS:t275.test, DNS:t276.test, DNS:t277.test, DNS:t278.test, DNS:t279.test, DNS:t280.test, DNS:t281.test, DNS:t282.test, DNS:t283.test, DNS:t284.test, DNS:t285.test, DNS:t286.test, DNS:t287.test, DNS:t288.test, DNS:t289.test, DNS:t290.test, DNS:t291.test, DNS:t292.test, DNS:t293.test, DNS:t294.test, DNS:t295.test, DNS:t296.test, DNS:t297.test, DNS:t298.test, DNS:t299.test, DNS:t300.test, DNS:t301.test, DNS:t302.test, DNS:t303.test, DNS:t304.test, DNS:t305.test, DNS:t306.test, DNS:t307.test, DNS:t308.test, DNS:t309.test, DNS:t310.test, DNS:t311.test, DNS:t312.test, DNS:t313.test, DNS:t314.test, DNS:t315.test, DNS:t316.test, DNS:t317.test, DNS:t318.test, DNS:t319.test, DNS:t320.test, DNS:t321.test, DNS:t322.test, DNS:t323.test, DNS:t324.test, DNS:t325.test, DNS:t326.test, DNS:t327.test, DNS:t328.test, DNS:t329.test, DNS:t330.test, DNS:t331.test, DNS:t332.test, DNS:t333.test, DNS:t334.test, DNS:t335.test, DNS:t336.test, DNS:t337.test, DNS:t338.test, DNS:t339.test, DNS:t340.test, DNS:t341.test, DNS:t342.test, DNS:t343.test, DNS:t344.test, DNS:t345.test, DNS:t346.test, DNS:t347.test, DNS:t348.test, DNS:t349.test, DNS:t350.test, DNS:t351.test, DNS:t352.test, DNS:t353.test, DNS:t354.test, DNS:t355.test, DNS:t356.test, DNS:t357.test, DNS:t358.test, DNS:t359.test, DNS:t360.test, DNS:t361.test, DNS:t362.test, DNS:t363.test, DNS:t364.test, DNS:t365.test, DNS:t366.test, DNS:t367.test, DNS:t368.test, DNS:t369.test, DNS:t370.test, DNS:t371.test, DNS:t372.test, DNS:t373.test, DNS:t374.test, DNS:t375.test, DNS:t376.test, DNS:t377.test, DNS:t378.test, DNS:t379.test, DNS:t380.test, DNS:t381.test, DNS:t382.test, DNS:t383.test, DNS:t384.test, DNS:t385.test, DNS:t386.test, DNS:t387.test, DNS:t388.test, DNS:t389.test, DNS:t390.test, DNS:t391.test, DNS:t392.test, DNS:t393.test, DNS:t394.test, DNS:t395.test, DNS:t396.test, DNS:t397.test, DNS:t398.test, DNS:t399.test, DNS:t400.test, DNS:t401.test, DNS:t402.test, DNS:t403.test, DNS:t404.test, DNS:t405.test, DNS:t406.test, DNS:t407.test, DNS:t408.test, DNS:t409.test, DNS:t410.test, DNS:t411.test, DNS:t412.test, DNS:t413.test, DNS:t414.test, DNS:t415.test, DNS:t416.test, DNS:t417.test, DNS:t418.test, DNS:t419.test, DNS:t420.test, DNS:t421.test, DNS:t422.test, DNS:t423.test, DNS:t424.test, DNS:t425.test, DNS:t426.test, DNS:t427.test, DNS:t428.test, DNS:t429.test, DNS:t430.test, DNS:t431.test, DNS:t432.test, DNS:t433.test, DNS:t434.test, DNS:t435.test, DNS:t436.test, DNS:t437.test, DNS:t438.test, DNS:t439.test, DNS:t440.test, DNS:t441.test, DNS:t442.test, DNS:t443.test, DNS:t444.test, DNS:t445.test, DNS:t446.test, DNS:t447.test, DNS:t448.test, DNS:t449.test, DNS:t450.test, DNS:t451.test, DNS:t452.test, DNS:t453.test, DNS:t454.test, DNS:t455.test, DNS:t456.test, DNS:t457.test, DNS:t458.test, DNS:t459.test, DNS:t460.test, DNS:t461.test, DNS:t462.test, DNS:t463.test, DNS:t464.test, DNS:t465.test, DNS:t466.test, DNS:t467.test, DNS:t468.test, DNS:t469.test, DNS:t470.test, DNS:t471.test, DNS:t472.test, DNS:t473.test, DNS:t474.test, DNS:t475.test, DNS:t476.test, DNS:t477.test, DNS:t478.test, DNS:t479.test, DNS:t480.test, DNS:t481.test, DNS:t482.test, DNS:t483.test, DNS:t484.test, DNS:t485.test, DNS:t486.test, DNS:t487.test, DNS:t488.test, DNS:t489.test, DNS:t490.test, DNS:t491.test, DNS:t492.test, DNS:t493.test, DNS:t494.test, DNS:t495.test, DNS:t496.test, DNS:t497.test, DNS:t498.test, DNS:t499.test, DNS:t500.test, DNS:t501.test, DNS:t502.test, DNS:t503.test, DNS:t504.test, DNS:t505.test, DNS:t506.test, DNS:t507.test, DNS:t508.test, DNS:t509.test, DNS:t510.test, DNS:t511.test, DNS:t512.test, DNS:t513.test, DNS:t514.test, DNS:t515.test, DNS:t516.test, DNS:t517.test, DNS:t518.test, DNS:t519.test, DNS:t520.test, DNS:t521.test, DNS:t522.test, DNS:t523.test, DNS:t524.test, DNS:t525.test, DNS:t526.test, DNS:t527.test, DNS:t528.test, DNS:t529.test, DNS:t530.test, DNS:t531.test, DNS:t532.test, DNS:t533.test, DNS:t534.test, DNS:t535.test, DNS:t536.test, DNS:t537.test, DNS:t538.test, DNS:t539.test, DNS:t540.test, DNS:t541.test, DNS:t542.test, DNS:t543.test, DNS:t544.test, DNS:t545.test, DNS:t546.test, DNS:t547.test, DNS:t548.test, DNS:t549.test, DNS:t550.test, DNS:t551.test, DNS:t552.test, DNS:t553.test, DNS:t554.test, DNS:t555.test, DNS:t556.test, DNS:t557.test, DNS:t558.test, DNS:t559.test, DNS:t560.test, DNS:t561.test, DNS:t562.test, DNS:t563.test, DNS:t564.test, DNS:t565.test, DNS:t566.test, DNS:t567.test, DNS:t568.test, DNS:t569.test, DNS:t570.test, DNS:t571.test, DNS:t572.test, DNS:t573.test, DNS:t574.test, DNS:t575.test, DNS:t576.test, DNS:t577.test, DNS:t578.test, DNS:t579.test, DNS:t580.test, DNS:t581.test, DNS:t582.test, DNS:t583.test, DNS:t584.test, DNS:t585.test, DNS:t586.test, DNS:t587.test, DNS:t588.test, DNS:t589.test, DNS:t590.test, DNS:t591.test, DNS:t592.test, DNS:t593.test, DNS:t594.test, DNS:t595.test, DNS:t596.test, DNS:t597.test, DNS:t598.test, DNS:t599.test, DNS:t600.test, DNS:t601.test, DNS:t602.test, DNS:t603.test, DNS:t604.test, DNS:t605.test, DNS:t606.test, DNS:t607.test, DNS:t608.test, DNS:t609.test, DNS:t610.test, DNS:t611.test, DNS:t612.test, DNS:t613.test, DNS:t614.test, DNS:t615.test, DNS:t616.test, DNS:t617.test, DNS:t618.test, DNS:t619.test, DNS:t620.test, DNS:t621.test, DNS:t622.test, DNS:t623.test, DNS:t624.test, DNS:t625.test, DNS:t626.test, DNS:t627.test, DNS:t628.test, DNS:t629.test, DNS:t630.test, DNS:t631.test, DNS:t632.test, DNS:t633.test, DNS:t634.test, DNS:t635.test, DNS:t636.test, DNS:t637.test, DNS:t638.test, DNS:t639.test, DNS:t640.test, DNS:t641.test, DNS:t642.test, DNS:t643.test, DNS:t644.test, DNS:t645.test, DNS:t646.test, DNS:t647.test, DNS:t648.test, DNS:t649.test, DNS:t650.test, DNS:t651.test, DNS:t652.test, DNS:t653.test, DNS:t654.test, DNS:t655.test, DNS:t656.test, DNS:t657.test, DNS:t658.test, DNS:t659.test, DNS:t660.test, DNS:t661.test, DNS:t662.test, DNS:t663.test, DNS:t664.test, DNS:t665.test, DNS:t666.test, DNS:t667.test, DNS:t668.test, DNS:t669.test, DNS:t670.test, DNS:t671.test, DNS:t672.test, DNS:t673.test, DNS:t674.test, DNS:t675.test, DNS:t676.test, DNS:t677.test, DNS:t678.test, DNS:t679.test, DNS:t680.test, DNS:t681.test, DNS:t682.test, DNS:t683.test, DNS:t684.test, DNS:t685.test, DNS:t686.test, DNS:t687.test, DNS:t688.test, DNS:t689.test, DNS:t690.test, DNS:t691.test, DNS:t692.test, DNS:t693.test, DNS:t694.test, DNS:t695.test, DNS:t696.test, DNS:t697.test, DNS:t698.test, DNS:t699.test, DNS:t700.test, DNS:t701.test, DNS:t702.test, DNS:t703.test, DNS:t704.test, DNS:t705.test, DNS:t706.test, DNS:t707.test, DNS:t708.test, DNS:t709.test, DNS:t710.test, DNS:t711.test, DNS:t712.test, DNS:t713.test, DNS:t714.test, DNS:t715.test, DNS:t716.test, DNS:t717.test, DNS:t718.test, DNS:t719.test, DNS:t720.test, DNS:t721.test, DNS:t722.test, DNS:t723.test, DNS:t724.test, DNS:t725.test, DNS:t726.test, DNS:t727.test, DNS:t728.test, DNS:t729.test, DNS:t730.test, DNS:t731.test, DNS:t732.test, DNS:t733.test, DNS:t734.test, DNS:t735.test, DNS:t736.test, DNS:t737.test, DNS:t738.test, DNS:t739.test, DNS:t740.test, DNS:t741.test, DNS:t742.test, DNS:t743.test, DNS:t744.test, DNS:t745.test, DNS:t746.test, DNS:t747.test, DNS:t748.test, DNS:t749.test, DNS:t750.test, DNS:t751.test, DNS:t752.test, DNS:t753.test, DNS:t754.test, DNS:t755.test, DNS:t756.test, DNS:t757.test, DNS:t758.test, DNS:t759.test, DNS:t760.test, DNS:t761.test, DNS:t762.test, DNS:t763.test, DNS:t764.test, DNS:t765.test, DNS:t766.test, DNS:t767.test, DNS:t768.test, DNS:t769.test, DNS:t770.test, DNS:t771.test, DNS:t772.test, DNS:t773.test, DNS:t774.test, DNS:t775.test, DNS:t776.test, DNS:t777.test, DNS:t778.test, DNS:t779.test, DNS:t780.test, DNS:t781.test, DNS:t782.test, DNS:t783.test, DNS:t784.test, DNS:t785.test, DNS:t786.test, DNS:t787.test, DNS:t788.test, DNS:t789.test, DNS:t790.test, DNS:t791.test, DNS:t792.test, DNS:t793.test, DNS:t794.test, DNS:t795.test, DNS:t796.test, DNS:t797.test, DNS:t798.test, DNS:t799.test, DNS:t800.test, DNS:t801.test, DNS:t802.test, DNS:t803.test, DNS:t804.test, DNS:t805.test, DNS:t806.test, DNS:t807.test, DNS:t808.test, DNS:t809.test, DNS:t810.test, DNS:t811.test, DNS:t812.test, DNS:t813.test, DNS:t814.test, DNS:t815.test, DNS:t816.test, DNS:t817.test, DNS:t818.test, DNS:t819.test, DNS:t820.test, DNS:t821.test, DNS:t822.test, DNS:t823.test, DNS:t824.test, DNS:t825.test, DNS:t826.test, DNS:t827.test, DNS:t828.test, DNS:t829.test, DNS:t830.test, DNS:t831.test, DNS:t832.test, DNS:t833.test, DNS:t834.test, DNS:t835.test, DNS:t836.test, DNS:t837.test, DNS:t838.test, DNS:t839.test, DNS:t840.test, DNS:t841.test, DNS:t842.test, DNS:t843.test, DNS:t844.test, DNS:t845.test, DNS:t846.test, DNS:t847.test, DNS:t848.test, DNS:t849.test, DNS:t850.test, DNS:t851.test, DNS:t852.test, DNS:t853.test, DNS:t854.test, DNS:t855.test, DNS:t856.test, DNS:t857.test, DNS:t858.test, DNS:t859.test, DNS:t860.test, DNS:t861.test, DNS:t862.test, DNS:t863.test, DNS:t864.test, DNS:t865.test, DNS:t866.test, DNS:t867.test, DNS:t868.test, DNS:t869.test, DNS:t870.test, DNS:t871.test, DNS:t872.test, DNS:t873.test, DNS:t874.test, DNS:t875.test, DNS:t876.test, DNS:t877.test, DNS:t878.test, DNS:t879.test, DNS:t880.test, DNS:t881.test, DNS:t882.test, DNS:t883.test, DNS:t884.test, DNS:t885.test, DNS:t886.test, DNS:t887.test, DNS:t888.test, DNS:t889.test, DNS:t890.test, DNS:t891.test, DNS:t892.test, DNS:t893.test, DNS:t894.test, DNS:t895.test, DNS:t896.test, DNS:t897.test, DNS:t898.test, DNS:t899.test, DNS:t900.test, DNS:t901.test, DNS:t902.test, DNS:t903.test, DNS:t904.test, DNS:t905.test, DNS:t906.test, DNS:t907.test, DNS:t908.test, DNS:t909.test, DNS:t910.test, DNS:t911.test, DNS:t912.test, DNS:t913.test, DNS:t914.test, DNS:t915.test, DNS:t916.test, DNS:t917.test, DNS:t918.test, DNS:t919.test, DNS:t920.test, DNS:t921.test, DNS:t922.test, DNS:t923.test, DNS:t924.test, DNS:t925.test, DNS:t926.test, DNS:t927.test, DNS:t928.test, DNS:t929.test, DNS:t930.test, DNS:t931.test, DNS:t932.test, DNS:t933.test, DNS:t934.test, DNS:t935.test, DNS:t936.test, DNS:t937.test, DNS:t938.test, DNS:t939.test, DNS:t940.test, DNS:t941.test, DNS:t942.test, DNS:t943.test, DNS:t944.test, DNS:t945.test, DNS:t946.test, DNS:t947.test, DNS:t948.test, DNS:t949.test, DNS:t950.test, DNS:t951.test, DNS:t952.test, DNS:t953.test, DNS:t954.test, DNS:t955.test, DNS:t956.test, DNS:t957.test, DNS:t958.test, DNS:t959.test, DNS:t960.test, DNS:t961.test, DNS:t962.test, DNS:t963.test, DNS:t964.test, DNS:t965.test, DNS:t966.test, DNS:t967.test, DNS:t968.test, DNS:t969.test, DNS:t970.test, DNS:t971.test, DNS:t972.test, DNS:t973.test, DNS:t974.test, DNS:t975.test, DNS:t976.test, DNS:t977.test, DNS:t978.test, DNS:t979.test, DNS:t980.test, DNS:t981.test, DNS:t982.test, DNS:t983.test, DNS:t984.test, DNS:t985.test, DNS:t986.test, DNS:t987.test, DNS:t988.test, DNS:t989.test, DNS:t990.test, DNS:t991.test, DNS:t992.test, DNS:t993.test, DNS:t994.test, DNS:t995.test, DNS:t996.test, DNS:t997.test, DNS:t998.test, DNS:t999.test, DNS:t1000.test, DNS:t1001.test, DNS:t1002.test, DNS:t1003.test, DNS:t1004.test, DNS:t1005.test, DNS:t1006.test, DNS:t1007.test, DNS:t1008.test, DNS:t1009.test, DNS:t1010.test, DNS:t1011.test, DNS:t1012.test, DNS:t1013.test, DNS:t1014.test, DNS:t1015.test, DNS:t1016.test, DNS:t1017.test, DNS:t1018.test, DNS:t1019.test, DNS:t1020.test, DNS:t1021.test, DNS:t1022.test, DNS:t1023.test, DNS:t1024.test
-- Signature Algorithm: sha256WithRSAEncryption
-- af:4e:2f:50:52:13:d9:77:37:22:a3:de:f5:2a:e8:1b:88:a6:
-- 80:24:52:0c:e0:51:1f:58:1c:38:e8:17:10:9d:7f:9e:2d:58:
-- 4d:0c:5c:f3:7a:33:09:48:5e:2d:77:61:9d:bb:9c:0a:7d:33:
-- 4f:bb:00:b2:96:be:2f:5d:ab:40:4a:60:95:a4:d2:5d:96:df:
-- 01:3a:95:28:77:4f:7f:5f:8e:32:90:a7:46:fc:d5:6e:80:6f:
-- 95:e9:74:50:9e:53:1c:b0:c1:64:2d:6d:70:4b:86:ab:9f:4a:
-- 6f:2d:f8:23:05:70:f3:95:72:ce:23:20:50:8b:6c:d4:ea:94:
-- ed:cd:20:71:a4:c0:24:12:bc:cf:6d:3d:5a:ba:51:03:64:3e:
-- b0:00:85:2a:08:2f:cf:d0:6f:9d:ef:7a:16:f4:42:c5:36:20:
-- 52:b6:96:34:5b:65:82:ae:34:cd:3e:e3:59:db:a8:24:8a:e5:
-- be:37:9c:66:ff:7c:e3:77:d4:a4:4b:91:ab:c8:98:e0:f3:2c:
-- 79:80:61:f3:02:e6:71:69:82:b2:31:61:ca:69:4a:a3:72:b9:
-- 57:4c:9a:b5:85:07:40:16:3d:8a:cd:65:4b:17:08:33:44:ba:
-- 9d:d3:69:cc:e5:b7:17:7c:d5:21:7c:1a:bb:e8:cf:f3:31:2f:
-- 13:4b:2e:eb
-------BEGIN CERTIFICATE-----
--MIIvZDCCLkygAwIBAgITL6u0PdzAd4AqAwmtQ3QCv5jY3DANBgkqhkiG9w0BAQsF
--ADAXMRUwEwYDVQQDDAxJbnRlcm1lZGlhdGUwHhcNMjExMDA1MTIwMDAwWhcNMjIx
--MDA1MTIwMDAwWjANMQswCQYDVQQDDAJ0MDCCASIwDQYJKoZIhvcNAQEBBQADggEP
--ADCCAQoCggEBANssUwHO+RqDNlJRKltCY94ydRFqfbCh5HdHm3Hlpi1k165bBO16
--P8f2yisrrc1siKWONvvnoiK1fVR56dV6W8orKWwNhAoQxCG2WJi7DbYMjVZbLIVZ
--B8oGRjYlGimOxDm3wzHObknCAc+wOydDiuPVBh8tk53dekVlbf20scAQWULyHo/O
--Q6yXJcF84lHhRDVblKoDbtpxLyV/WDAB4RIXHvKqbCKAscll6neVswfE93I4NP6g
--QzNMZm2h6KEEvG8UOTlELjg3dMkKIYWRIbdOurCZSnaYe1jKHNOwQMPZKnX76xnq
--4xqYMVKX6X+keyF/L9xiho/9/aiI6EtEUr0CAwEAAaOCLLEwgiytMB0GA1UdDgQW
--BBQ7tAXMqrpRPfzy+R4lU3LhOvKa3zAfBgNVHSMEGDAWgBSSET+sEZbHZjfPg1ok
--8Dp3rzONfzA/BggrBgEFBQcBAQQzMDEwLwYIKwYBBQUHMAKGI2h0dHA6Ly91cmwt
--Zm9yLWFpYS9JbnRlcm1lZGlhdGUuY2VyMDQGA1UdHwQtMCswKaAnoCWGI2h0dHA6
--Ly91cmwtZm9yLWNybC9JbnRlcm1lZGlhdGUuY3JsMA4GA1UdDwEB/wQEAwIFoDAd
--BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwgivDBgNVHREEgiu6MIIrtoIH
--dDAudGVzdIIHdDEudGVzdIIHdDIudGVzdIIHdDMudGVzdIIHdDQudGVzdIIHdDUu
--dGVzdIIHdDYudGVzdIIHdDcudGVzdIIHdDgudGVzdIIHdDkudGVzdIIIdDEwLnRl
--c3SCCHQxMS50ZXN0ggh0MTIudGVzdIIIdDEzLnRlc3SCCHQxNC50ZXN0ggh0MTUu
--dGVzdIIIdDE2LnRlc3SCCHQxNy50ZXN0ggh0MTgudGVzdIIIdDE5LnRlc3SCCHQy
--MC50ZXN0ggh0MjEudGVzdIIIdDIyLnRlc3SCCHQyMy50ZXN0ggh0MjQudGVzdIII
--dDI1LnRlc3SCCHQyNi50ZXN0ggh0MjcudGVzdIIIdDI4LnRlc3SCCHQyOS50ZXN0
--ggh0MzAudGVzdIIIdDMxLnRlc3SCCHQzMi50ZXN0ggh0MzMudGVzdIIIdDM0LnRl
--c3SCCHQzNS50ZXN0ggh0MzYudGVzdIIIdDM3LnRlc3SCCHQzOC50ZXN0ggh0Mzku
--dGVzdIIIdDQwLnRlc3SCCHQ0MS50ZXN0ggh0NDIudGVzdIIIdDQzLnRlc3SCCHQ0
--NC50ZXN0ggh0NDUudGVzdIIIdDQ2LnRlc3SCCHQ0Ny50ZXN0ggh0NDgudGVzdIII
--dDQ5LnRlc3SCCHQ1MC50ZXN0ggh0NTEudGVzdIIIdDUyLnRlc3SCCHQ1My50ZXN0
--ggh0NTQudGVzdIIIdDU1LnRlc3SCCHQ1Ni50ZXN0ggh0NTcudGVzdIIIdDU4LnRl
--c3SCCHQ1OS50ZXN0ggh0NjAudGVzdIIIdDYxLnRlc3SCCHQ2Mi50ZXN0ggh0NjMu
--dGVzdIIIdDY0LnRlc3SCCHQ2NS50ZXN0ggh0NjYudGVzdIIIdDY3LnRlc3SCCHQ2
--OC50ZXN0ggh0NjkudGVzdIIIdDcwLnRlc3SCCHQ3MS50ZXN0ggh0NzIudGVzdIII
--dDczLnRlc3SCCHQ3NC50ZXN0ggh0NzUudGVzdIIIdDc2LnRlc3SCCHQ3Ny50ZXN0
--ggh0NzgudGVzdIIIdDc5LnRlc3SCCHQ4MC50ZXN0ggh0ODEudGVzdIIIdDgyLnRl
--c3SCCHQ4My50ZXN0ggh0ODQudGVzdIIIdDg1LnRlc3SCCHQ4Ni50ZXN0ggh0ODcu
--dGVzdIIIdDg4LnRlc3SCCHQ4OS50ZXN0ggh0OTAudGVzdIIIdDkxLnRlc3SCCHQ5
--Mi50ZXN0ggh0OTMudGVzdIIIdDk0LnRlc3SCCHQ5NS50ZXN0ggh0OTYudGVzdIII
--dDk3LnRlc3SCCHQ5OC50ZXN0ggh0OTkudGVzdIIJdDEwMC50ZXN0ggl0MTAxLnRl
--c3SCCXQxMDIudGVzdIIJdDEwMy50ZXN0ggl0MTA0LnRlc3SCCXQxMDUudGVzdIIJ
--dDEwNi50ZXN0ggl0MTA3LnRlc3SCCXQxMDgudGVzdIIJdDEwOS50ZXN0ggl0MTEw
--LnRlc3SCCXQxMTEudGVzdIIJdDExMi50ZXN0ggl0MTEzLnRlc3SCCXQxMTQudGVz
--dIIJdDExNS50ZXN0ggl0MTE2LnRlc3SCCXQxMTcudGVzdIIJdDExOC50ZXN0ggl0
--MTE5LnRlc3SCCXQxMjAudGVzdIIJdDEyMS50ZXN0ggl0MTIyLnRlc3SCCXQxMjMu
--dGVzdIIJdDEyNC50ZXN0ggl0MTI1LnRlc3SCCXQxMjYudGVzdIIJdDEyNy50ZXN0
--ggl0MTI4LnRlc3SCCXQxMjkudGVzdIIJdDEzMC50ZXN0ggl0MTMxLnRlc3SCCXQx
--MzIudGVzdIIJdDEzMy50ZXN0ggl0MTM0LnRlc3SCCXQxMzUudGVzdIIJdDEzNi50
--ZXN0ggl0MTM3LnRlc3SCCXQxMzgudGVzdIIJdDEzOS50ZXN0ggl0MTQwLnRlc3SC
--CXQxNDEudGVzdIIJdDE0Mi50ZXN0ggl0MTQzLnRlc3SCCXQxNDQudGVzdIIJdDE0
--NS50ZXN0ggl0MTQ2LnRlc3SCCXQxNDcudGVzdIIJdDE0OC50ZXN0ggl0MTQ5LnRl
--c3SCCXQxNTAudGVzdIIJdDE1MS50ZXN0ggl0MTUyLnRlc3SCCXQxNTMudGVzdIIJ
--dDE1NC50ZXN0ggl0MTU1LnRlc3SCCXQxNTYudGVzdIIJdDE1Ny50ZXN0ggl0MTU4
--LnRlc3SCCXQxNTkudGVzdIIJdDE2MC50ZXN0ggl0MTYxLnRlc3SCCXQxNjIudGVz
--dIIJdDE2My50ZXN0ggl0MTY0LnRlc3SCCXQxNjUudGVzdIIJdDE2Ni50ZXN0ggl0
--MTY3LnRlc3SCCXQxNjgudGVzdIIJdDE2OS50ZXN0ggl0MTcwLnRlc3SCCXQxNzEu
--dGVzdIIJdDE3Mi50ZXN0ggl0MTczLnRlc3SCCXQxNzQudGVzdIIJdDE3NS50ZXN0
--ggl0MTc2LnRlc3SCCXQxNzcudGVzdIIJdDE3OC50ZXN0ggl0MTc5LnRlc3SCCXQx
--ODAudGVzdIIJdDE4MS50ZXN0ggl0MTgyLnRlc3SCCXQxODMudGVzdIIJdDE4NC50
--ZXN0ggl0MTg1LnRlc3SCCXQxODYudGVzdIIJdDE4Ny50ZXN0ggl0MTg4LnRlc3SC
--CXQxODkudGVzdIIJdDE5MC50ZXN0ggl0MTkxLnRlc3SCCXQxOTIudGVzdIIJdDE5
--My50ZXN0ggl0MTk0LnRlc3SCCXQxOTUudGVzdIIJdDE5Ni50ZXN0ggl0MTk3LnRl
--c3SCCXQxOTgudGVzdIIJdDE5OS50ZXN0ggl0MjAwLnRlc3SCCXQyMDEudGVzdIIJ
--dDIwMi50ZXN0ggl0MjAzLnRlc3SCCXQyMDQudGVzdIIJdDIwNS50ZXN0ggl0MjA2
--LnRlc3SCCXQyMDcudGVzdIIJdDIwOC50ZXN0ggl0MjA5LnRlc3SCCXQyMTAudGVz
--dIIJdDIxMS50ZXN0ggl0MjEyLnRlc3SCCXQyMTMudGVzdIIJdDIxNC50ZXN0ggl0
--MjE1LnRlc3SCCXQyMTYudGVzdIIJdDIxNy50ZXN0ggl0MjE4LnRlc3SCCXQyMTku
--dGVzdIIJdDIyMC50ZXN0ggl0MjIxLnRlc3SCCXQyMjIudGVzdIIJdDIyMy50ZXN0
--ggl0MjI0LnRlc3SCCXQyMjUudGVzdIIJdDIyNi50ZXN0ggl0MjI3LnRlc3SCCXQy
--MjgudGVzdIIJdDIyOS50ZXN0ggl0MjMwLnRlc3SCCXQyMzEudGVzdIIJdDIzMi50
--ZXN0ggl0MjMzLnRlc3SCCXQyMzQudGVzdIIJdDIzNS50ZXN0ggl0MjM2LnRlc3SC
--CXQyMzcudGVzdIIJdDIzOC50ZXN0ggl0MjM5LnRlc3SCCXQyNDAudGVzdIIJdDI0
--MS50ZXN0ggl0MjQyLnRlc3SCCXQyNDMudGVzdIIJdDI0NC50ZXN0ggl0MjQ1LnRl
--c3SCCXQyNDYudGVzdIIJdDI0Ny50ZXN0ggl0MjQ4LnRlc3SCCXQyNDkudGVzdIIJ
--dDI1MC50ZXN0ggl0MjUxLnRlc3SCCXQyNTIudGVzdIIJdDI1My50ZXN0ggl0MjU0
--LnRlc3SCCXQyNTUudGVzdIIJdDI1Ni50ZXN0ggl0MjU3LnRlc3SCCXQyNTgudGVz
--dIIJdDI1OS50ZXN0ggl0MjYwLnRlc3SCCXQyNjEudGVzdIIJdDI2Mi50ZXN0ggl0
--MjYzLnRlc3SCCXQyNjQudGVzdIIJdDI2NS50ZXN0ggl0MjY2LnRlc3SCCXQyNjcu
--dGVzdIIJdDI2OC50ZXN0ggl0MjY5LnRlc3SCCXQyNzAudGVzdIIJdDI3MS50ZXN0
--ggl0MjcyLnRlc3SCCXQyNzMudGVzdIIJdDI3NC50ZXN0ggl0Mjc1LnRlc3SCCXQy
--NzYudGVzdIIJdDI3Ny50ZXN0ggl0Mjc4LnRlc3SCCXQyNzkudGVzdIIJdDI4MC50
--ZXN0ggl0MjgxLnRlc3SCCXQyODIudGVzdIIJdDI4My50ZXN0ggl0Mjg0LnRlc3SC
--CXQyODUudGVzdIIJdDI4Ni50ZXN0ggl0Mjg3LnRlc3SCCXQyODgudGVzdIIJdDI4
--OS50ZXN0ggl0MjkwLnRlc3SCCXQyOTEudGVzdIIJdDI5Mi50ZXN0ggl0MjkzLnRl
--c3SCCXQyOTQudGVzdIIJdDI5NS50ZXN0ggl0Mjk2LnRlc3SCCXQyOTcudGVzdIIJ
--dDI5OC50ZXN0ggl0Mjk5LnRlc3SCCXQzMDAudGVzdIIJdDMwMS50ZXN0ggl0MzAy
--LnRlc3SCCXQzMDMudGVzdIIJdDMwNC50ZXN0ggl0MzA1LnRlc3SCCXQzMDYudGVz
--dIIJdDMwNy50ZXN0ggl0MzA4LnRlc3SCCXQzMDkudGVzdIIJdDMxMC50ZXN0ggl0
--MzExLnRlc3SCCXQzMTIudGVzdIIJdDMxMy50ZXN0ggl0MzE0LnRlc3SCCXQzMTUu
--dGVzdIIJdDMxNi50ZXN0ggl0MzE3LnRlc3SCCXQzMTgudGVzdIIJdDMxOS50ZXN0
--ggl0MzIwLnRlc3SCCXQzMjEudGVzdIIJdDMyMi50ZXN0ggl0MzIzLnRlc3SCCXQz
--MjQudGVzdIIJdDMyNS50ZXN0ggl0MzI2LnRlc3SCCXQzMjcudGVzdIIJdDMyOC50
--ZXN0ggl0MzI5LnRlc3SCCXQzMzAudGVzdIIJdDMzMS50ZXN0ggl0MzMyLnRlc3SC
--CXQzMzMudGVzdIIJdDMzNC50ZXN0ggl0MzM1LnRlc3SCCXQzMzYudGVzdIIJdDMz
--Ny50ZXN0ggl0MzM4LnRlc3SCCXQzMzkudGVzdIIJdDM0MC50ZXN0ggl0MzQxLnRl
--c3SCCXQzNDIudGVzdIIJdDM0My50ZXN0ggl0MzQ0LnRlc3SCCXQzNDUudGVzdIIJ
--dDM0Ni50ZXN0ggl0MzQ3LnRlc3SCCXQzNDgudGVzdIIJdDM0OS50ZXN0ggl0MzUw
--LnRlc3SCCXQzNTEudGVzdIIJdDM1Mi50ZXN0ggl0MzUzLnRlc3SCCXQzNTQudGVz
--dIIJdDM1NS50ZXN0ggl0MzU2LnRlc3SCCXQzNTcudGVzdIIJdDM1OC50ZXN0ggl0
--MzU5LnRlc3SCCXQzNjAudGVzdIIJdDM2MS50ZXN0ggl0MzYyLnRlc3SCCXQzNjMu
--dGVzdIIJdDM2NC50ZXN0ggl0MzY1LnRlc3SCCXQzNjYudGVzdIIJdDM2Ny50ZXN0
--ggl0MzY4LnRlc3SCCXQzNjkudGVzdIIJdDM3MC50ZXN0ggl0MzcxLnRlc3SCCXQz
--NzIudGVzdIIJdDM3My50ZXN0ggl0Mzc0LnRlc3SCCXQzNzUudGVzdIIJdDM3Ni50
--ZXN0ggl0Mzc3LnRlc3SCCXQzNzgudGVzdIIJdDM3OS50ZXN0ggl0MzgwLnRlc3SC
--CXQzODEudGVzdIIJdDM4Mi50ZXN0ggl0MzgzLnRlc3SCCXQzODQudGVzdIIJdDM4
--NS50ZXN0ggl0Mzg2LnRlc3SCCXQzODcudGVzdIIJdDM4OC50ZXN0ggl0Mzg5LnRl
--c3SCCXQzOTAudGVzdIIJdDM5MS50ZXN0ggl0MzkyLnRlc3SCCXQzOTMudGVzdIIJ
--dDM5NC50ZXN0ggl0Mzk1LnRlc3SCCXQzOTYudGVzdIIJdDM5Ny50ZXN0ggl0Mzk4
--LnRlc3SCCXQzOTkudGVzdIIJdDQwMC50ZXN0ggl0NDAxLnRlc3SCCXQ0MDIudGVz
--dIIJdDQwMy50ZXN0ggl0NDA0LnRlc3SCCXQ0MDUudGVzdIIJdDQwNi50ZXN0ggl0
--NDA3LnRlc3SCCXQ0MDgudGVzdIIJdDQwOS50ZXN0ggl0NDEwLnRlc3SCCXQ0MTEu
--dGVzdIIJdDQxMi50ZXN0ggl0NDEzLnRlc3SCCXQ0MTQudGVzdIIJdDQxNS50ZXN0
--ggl0NDE2LnRlc3SCCXQ0MTcudGVzdIIJdDQxOC50ZXN0ggl0NDE5LnRlc3SCCXQ0
--MjAudGVzdIIJdDQyMS50ZXN0ggl0NDIyLnRlc3SCCXQ0MjMudGVzdIIJdDQyNC50
--ZXN0ggl0NDI1LnRlc3SCCXQ0MjYudGVzdIIJdDQyNy50ZXN0ggl0NDI4LnRlc3SC
--CXQ0MjkudGVzdIIJdDQzMC50ZXN0ggl0NDMxLnRlc3SCCXQ0MzIudGVzdIIJdDQz
--My50ZXN0ggl0NDM0LnRlc3SCCXQ0MzUudGVzdIIJdDQzNi50ZXN0ggl0NDM3LnRl
--c3SCCXQ0MzgudGVzdIIJdDQzOS50ZXN0ggl0NDQwLnRlc3SCCXQ0NDEudGVzdIIJ
--dDQ0Mi50ZXN0ggl0NDQzLnRlc3SCCXQ0NDQudGVzdIIJdDQ0NS50ZXN0ggl0NDQ2
--LnRlc3SCCXQ0NDcudGVzdIIJdDQ0OC50ZXN0ggl0NDQ5LnRlc3SCCXQ0NTAudGVz
--dIIJdDQ1MS50ZXN0ggl0NDUyLnRlc3SCCXQ0NTMudGVzdIIJdDQ1NC50ZXN0ggl0
--NDU1LnRlc3SCCXQ0NTYudGVzdIIJdDQ1Ny50ZXN0ggl0NDU4LnRlc3SCCXQ0NTku
--dGVzdIIJdDQ2MC50ZXN0ggl0NDYxLnRlc3SCCXQ0NjIudGVzdIIJdDQ2My50ZXN0
--ggl0NDY0LnRlc3SCCXQ0NjUudGVzdIIJdDQ2Ni50ZXN0ggl0NDY3LnRlc3SCCXQ0
--NjgudGVzdIIJdDQ2OS50ZXN0ggl0NDcwLnRlc3SCCXQ0NzEudGVzdIIJdDQ3Mi50
--ZXN0ggl0NDczLnRlc3SCCXQ0NzQudGVzdIIJdDQ3NS50ZXN0ggl0NDc2LnRlc3SC
--CXQ0NzcudGVzdIIJdDQ3OC50ZXN0ggl0NDc5LnRlc3SCCXQ0ODAudGVzdIIJdDQ4
--MS50ZXN0ggl0NDgyLnRlc3SCCXQ0ODMudGVzdIIJdDQ4NC50ZXN0ggl0NDg1LnRl
--c3SCCXQ0ODYudGVzdIIJdDQ4Ny50ZXN0ggl0NDg4LnRlc3SCCXQ0ODkudGVzdIIJ
--dDQ5MC50ZXN0ggl0NDkxLnRlc3SCCXQ0OTIudGVzdIIJdDQ5My50ZXN0ggl0NDk0
--LnRlc3SCCXQ0OTUudGVzdIIJdDQ5Ni50ZXN0ggl0NDk3LnRlc3SCCXQ0OTgudGVz
--dIIJdDQ5OS50ZXN0ggl0NTAwLnRlc3SCCXQ1MDEudGVzdIIJdDUwMi50ZXN0ggl0
--NTAzLnRlc3SCCXQ1MDQudGVzdIIJdDUwNS50ZXN0ggl0NTA2LnRlc3SCCXQ1MDcu
--dGVzdIIJdDUwOC50ZXN0ggl0NTA5LnRlc3SCCXQ1MTAudGVzdIIJdDUxMS50ZXN0
--ggl0NTEyLnRlc3SCCXQ1MTMudGVzdIIJdDUxNC50ZXN0ggl0NTE1LnRlc3SCCXQ1
--MTYudGVzdIIJdDUxNy50ZXN0ggl0NTE4LnRlc3SCCXQ1MTkudGVzdIIJdDUyMC50
--ZXN0ggl0NTIxLnRlc3SCCXQ1MjIudGVzdIIJdDUyMy50ZXN0ggl0NTI0LnRlc3SC
--CXQ1MjUudGVzdIIJdDUyNi50ZXN0ggl0NTI3LnRlc3SCCXQ1MjgudGVzdIIJdDUy
--OS50ZXN0ggl0NTMwLnRlc3SCCXQ1MzEudGVzdIIJdDUzMi50ZXN0ggl0NTMzLnRl
--c3SCCXQ1MzQudGVzdIIJdDUzNS50ZXN0ggl0NTM2LnRlc3SCCXQ1MzcudGVzdIIJ
--dDUzOC50ZXN0ggl0NTM5LnRlc3SCCXQ1NDAudGVzdIIJdDU0MS50ZXN0ggl0NTQy
--LnRlc3SCCXQ1NDMudGVzdIIJdDU0NC50ZXN0ggl0NTQ1LnRlc3SCCXQ1NDYudGVz
--dIIJdDU0Ny50ZXN0ggl0NTQ4LnRlc3SCCXQ1NDkudGVzdIIJdDU1MC50ZXN0ggl0
--NTUxLnRlc3SCCXQ1NTIudGVzdIIJdDU1My50ZXN0ggl0NTU0LnRlc3SCCXQ1NTUu
--dGVzdIIJdDU1Ni50ZXN0ggl0NTU3LnRlc3SCCXQ1NTgudGVzdIIJdDU1OS50ZXN0
--ggl0NTYwLnRlc3SCCXQ1NjEudGVzdIIJdDU2Mi50ZXN0ggl0NTYzLnRlc3SCCXQ1
--NjQudGVzdIIJdDU2NS50ZXN0ggl0NTY2LnRlc3SCCXQ1NjcudGVzdIIJdDU2OC50
--ZXN0ggl0NTY5LnRlc3SCCXQ1NzAudGVzdIIJdDU3MS50ZXN0ggl0NTcyLnRlc3SC
--CXQ1NzMudGVzdIIJdDU3NC50ZXN0ggl0NTc1LnRlc3SCCXQ1NzYudGVzdIIJdDU3
--Ny50ZXN0ggl0NTc4LnRlc3SCCXQ1NzkudGVzdIIJdDU4MC50ZXN0ggl0NTgxLnRl
--c3SCCXQ1ODIudGVzdIIJdDU4My50ZXN0ggl0NTg0LnRlc3SCCXQ1ODUudGVzdIIJ
--dDU4Ni50ZXN0ggl0NTg3LnRlc3SCCXQ1ODgudGVzdIIJdDU4OS50ZXN0ggl0NTkw
--LnRlc3SCCXQ1OTEudGVzdIIJdDU5Mi50ZXN0ggl0NTkzLnRlc3SCCXQ1OTQudGVz
--dIIJdDU5NS50ZXN0ggl0NTk2LnRlc3SCCXQ1OTcudGVzdIIJdDU5OC50ZXN0ggl0
--NTk5LnRlc3SCCXQ2MDAudGVzdIIJdDYwMS50ZXN0ggl0NjAyLnRlc3SCCXQ2MDMu
--dGVzdIIJdDYwNC50ZXN0ggl0NjA1LnRlc3SCCXQ2MDYudGVzdIIJdDYwNy50ZXN0
--ggl0NjA4LnRlc3SCCXQ2MDkudGVzdIIJdDYxMC50ZXN0ggl0NjExLnRlc3SCCXQ2
--MTIudGVzdIIJdDYxMy50ZXN0ggl0NjE0LnRlc3SCCXQ2MTUudGVzdIIJdDYxNi50
--ZXN0ggl0NjE3LnRlc3SCCXQ2MTgudGVzdIIJdDYxOS50ZXN0ggl0NjIwLnRlc3SC
--CXQ2MjEudGVzdIIJdDYyMi50ZXN0ggl0NjIzLnRlc3SCCXQ2MjQudGVzdIIJdDYy
--NS50ZXN0ggl0NjI2LnRlc3SCCXQ2MjcudGVzdIIJdDYyOC50ZXN0ggl0NjI5LnRl
--c3SCCXQ2MzAudGVzdIIJdDYzMS50ZXN0ggl0NjMyLnRlc3SCCXQ2MzMudGVzdIIJ
--dDYzNC50ZXN0ggl0NjM1LnRlc3SCCXQ2MzYudGVzdIIJdDYzNy50ZXN0ggl0NjM4
--LnRlc3SCCXQ2MzkudGVzdIIJdDY0MC50ZXN0ggl0NjQxLnRlc3SCCXQ2NDIudGVz
--dIIJdDY0My50ZXN0ggl0NjQ0LnRlc3SCCXQ2NDUudGVzdIIJdDY0Ni50ZXN0ggl0
--NjQ3LnRlc3SCCXQ2NDgudGVzdIIJdDY0OS50ZXN0ggl0NjUwLnRlc3SCCXQ2NTEu
--dGVzdIIJdDY1Mi50ZXN0ggl0NjUzLnRlc3SCCXQ2NTQudGVzdIIJdDY1NS50ZXN0
--ggl0NjU2LnRlc3SCCXQ2NTcudGVzdIIJdDY1OC50ZXN0ggl0NjU5LnRlc3SCCXQ2
--NjAudGVzdIIJdDY2MS50ZXN0ggl0NjYyLnRlc3SCCXQ2NjMudGVzdIIJdDY2NC50
--ZXN0ggl0NjY1LnRlc3SCCXQ2NjYudGVzdIIJdDY2Ny50ZXN0ggl0NjY4LnRlc3SC
--CXQ2NjkudGVzdIIJdDY3MC50ZXN0ggl0NjcxLnRlc3SCCXQ2NzIudGVzdIIJdDY3
--My50ZXN0ggl0Njc0LnRlc3SCCXQ2NzUudGVzdIIJdDY3Ni50ZXN0ggl0Njc3LnRl
--c3SCCXQ2NzgudGVzdIIJdDY3OS50ZXN0ggl0NjgwLnRlc3SCCXQ2ODEudGVzdIIJ
--dDY4Mi50ZXN0ggl0NjgzLnRlc3SCCXQ2ODQudGVzdIIJdDY4NS50ZXN0ggl0Njg2
--LnRlc3SCCXQ2ODcudGVzdIIJdDY4OC50ZXN0ggl0Njg5LnRlc3SCCXQ2OTAudGVz
--dIIJdDY5MS50ZXN0ggl0NjkyLnRlc3SCCXQ2OTMudGVzdIIJdDY5NC50ZXN0ggl0
--Njk1LnRlc3SCCXQ2OTYudGVzdIIJdDY5Ny50ZXN0ggl0Njk4LnRlc3SCCXQ2OTku
--dGVzdIIJdDcwMC50ZXN0ggl0NzAxLnRlc3SCCXQ3MDIudGVzdIIJdDcwMy50ZXN0
--ggl0NzA0LnRlc3SCCXQ3MDUudGVzdIIJdDcwNi50ZXN0ggl0NzA3LnRlc3SCCXQ3
--MDgudGVzdIIJdDcwOS50ZXN0ggl0NzEwLnRlc3SCCXQ3MTEudGVzdIIJdDcxMi50
--ZXN0ggl0NzEzLnRlc3SCCXQ3MTQudGVzdIIJdDcxNS50ZXN0ggl0NzE2LnRlc3SC
--CXQ3MTcudGVzdIIJdDcxOC50ZXN0ggl0NzE5LnRlc3SCCXQ3MjAudGVzdIIJdDcy
--MS50ZXN0ggl0NzIyLnRlc3SCCXQ3MjMudGVzdIIJdDcyNC50ZXN0ggl0NzI1LnRl
--c3SCCXQ3MjYudGVzdIIJdDcyNy50ZXN0ggl0NzI4LnRlc3SCCXQ3MjkudGVzdIIJ
--dDczMC50ZXN0ggl0NzMxLnRlc3SCCXQ3MzIudGVzdIIJdDczMy50ZXN0ggl0NzM0
--LnRlc3SCCXQ3MzUudGVzdIIJdDczNi50ZXN0ggl0NzM3LnRlc3SCCXQ3MzgudGVz
--dIIJdDczOS50ZXN0ggl0NzQwLnRlc3SCCXQ3NDEudGVzdIIJdDc0Mi50ZXN0ggl0
--NzQzLnRlc3SCCXQ3NDQudGVzdIIJdDc0NS50ZXN0ggl0NzQ2LnRlc3SCCXQ3NDcu
--dGVzdIIJdDc0OC50ZXN0ggl0NzQ5LnRlc3SCCXQ3NTAudGVzdIIJdDc1MS50ZXN0
--ggl0NzUyLnRlc3SCCXQ3NTMudGVzdIIJdDc1NC50ZXN0ggl0NzU1LnRlc3SCCXQ3
--NTYudGVzdIIJdDc1Ny50ZXN0ggl0NzU4LnRlc3SCCXQ3NTkudGVzdIIJdDc2MC50
--ZXN0ggl0NzYxLnRlc3SCCXQ3NjIudGVzdIIJdDc2My50ZXN0ggl0NzY0LnRlc3SC
--CXQ3NjUudGVzdIIJdDc2Ni50ZXN0ggl0NzY3LnRlc3SCCXQ3NjgudGVzdIIJdDc2
--OS50ZXN0ggl0NzcwLnRlc3SCCXQ3NzEudGVzdIIJdDc3Mi50ZXN0ggl0NzczLnRl
--c3SCCXQ3NzQudGVzdIIJdDc3NS50ZXN0ggl0Nzc2LnRlc3SCCXQ3NzcudGVzdIIJ
--dDc3OC50ZXN0ggl0Nzc5LnRlc3SCCXQ3ODAudGVzdIIJdDc4MS50ZXN0ggl0Nzgy
--LnRlc3SCCXQ3ODMudGVzdIIJdDc4NC50ZXN0ggl0Nzg1LnRlc3SCCXQ3ODYudGVz
--dIIJdDc4Ny50ZXN0ggl0Nzg4LnRlc3SCCXQ3ODkudGVzdIIJdDc5MC50ZXN0ggl0
--NzkxLnRlc3SCCXQ3OTIudGVzdIIJdDc5My50ZXN0ggl0Nzk0LnRlc3SCCXQ3OTUu
--dGVzdIIJdDc5Ni50ZXN0ggl0Nzk3LnRlc3SCCXQ3OTgudGVzdIIJdDc5OS50ZXN0
--ggl0ODAwLnRlc3SCCXQ4MDEudGVzdIIJdDgwMi50ZXN0ggl0ODAzLnRlc3SCCXQ4
--MDQudGVzdIIJdDgwNS50ZXN0ggl0ODA2LnRlc3SCCXQ4MDcudGVzdIIJdDgwOC50
--ZXN0ggl0ODA5LnRlc3SCCXQ4MTAudGVzdIIJdDgxMS50ZXN0ggl0ODEyLnRlc3SC
--CXQ4MTMudGVzdIIJdDgxNC50ZXN0ggl0ODE1LnRlc3SCCXQ4MTYudGVzdIIJdDgx
--Ny50ZXN0ggl0ODE4LnRlc3SCCXQ4MTkudGVzdIIJdDgyMC50ZXN0ggl0ODIxLnRl
--c3SCCXQ4MjIudGVzdIIJdDgyMy50ZXN0ggl0ODI0LnRlc3SCCXQ4MjUudGVzdIIJ
--dDgyNi50ZXN0ggl0ODI3LnRlc3SCCXQ4MjgudGVzdIIJdDgyOS50ZXN0ggl0ODMw
--LnRlc3SCCXQ4MzEudGVzdIIJdDgzMi50ZXN0ggl0ODMzLnRlc3SCCXQ4MzQudGVz
--dIIJdDgzNS50ZXN0ggl0ODM2LnRlc3SCCXQ4MzcudGVzdIIJdDgzOC50ZXN0ggl0
--ODM5LnRlc3SCCXQ4NDAudGVzdIIJdDg0MS50ZXN0ggl0ODQyLnRlc3SCCXQ4NDMu
--dGVzdIIJdDg0NC50ZXN0ggl0ODQ1LnRlc3SCCXQ4NDYudGVzdIIJdDg0Ny50ZXN0
--ggl0ODQ4LnRlc3SCCXQ4NDkudGVzdIIJdDg1MC50ZXN0ggl0ODUxLnRlc3SCCXQ4
--NTIudGVzdIIJdDg1My50ZXN0ggl0ODU0LnRlc3SCCXQ4NTUudGVzdIIJdDg1Ni50
--ZXN0ggl0ODU3LnRlc3SCCXQ4NTgudGVzdIIJdDg1OS50ZXN0ggl0ODYwLnRlc3SC
--CXQ4NjEudGVzdIIJdDg2Mi50ZXN0ggl0ODYzLnRlc3SCCXQ4NjQudGVzdIIJdDg2
--NS50ZXN0ggl0ODY2LnRlc3SCCXQ4NjcudGVzdIIJdDg2OC50ZXN0ggl0ODY5LnRl
--c3SCCXQ4NzAudGVzdIIJdDg3MS50ZXN0ggl0ODcyLnRlc3SCCXQ4NzMudGVzdIIJ
--dDg3NC50ZXN0ggl0ODc1LnRlc3SCCXQ4NzYudGVzdIIJdDg3Ny50ZXN0ggl0ODc4
--LnRlc3SCCXQ4NzkudGVzdIIJdDg4MC50ZXN0ggl0ODgxLnRlc3SCCXQ4ODIudGVz
--dIIJdDg4My50ZXN0ggl0ODg0LnRlc3SCCXQ4ODUudGVzdIIJdDg4Ni50ZXN0ggl0
--ODg3LnRlc3SCCXQ4ODgudGVzdIIJdDg4OS50ZXN0ggl0ODkwLnRlc3SCCXQ4OTEu
--dGVzdIIJdDg5Mi50ZXN0ggl0ODkzLnRlc3SCCXQ4OTQudGVzdIIJdDg5NS50ZXN0
--ggl0ODk2LnRlc3SCCXQ4OTcudGVzdIIJdDg5OC50ZXN0ggl0ODk5LnRlc3SCCXQ5
--MDAudGVzdIIJdDkwMS50ZXN0ggl0OTAyLnRlc3SCCXQ5MDMudGVzdIIJdDkwNC50
--ZXN0ggl0OTA1LnRlc3SCCXQ5MDYudGVzdIIJdDkwNy50ZXN0ggl0OTA4LnRlc3SC
--CXQ5MDkudGVzdIIJdDkxMC50ZXN0ggl0OTExLnRlc3SCCXQ5MTIudGVzdIIJdDkx
--My50ZXN0ggl0OTE0LnRlc3SCCXQ5MTUudGVzdIIJdDkxNi50ZXN0ggl0OTE3LnRl
--c3SCCXQ5MTgudGVzdIIJdDkxOS50ZXN0ggl0OTIwLnRlc3SCCXQ5MjEudGVzdIIJ
--dDkyMi50ZXN0ggl0OTIzLnRlc3SCCXQ5MjQudGVzdIIJdDkyNS50ZXN0ggl0OTI2
--LnRlc3SCCXQ5MjcudGVzdIIJdDkyOC50ZXN0ggl0OTI5LnRlc3SCCXQ5MzAudGVz
--dIIJdDkzMS50ZXN0ggl0OTMyLnRlc3SCCXQ5MzMudGVzdIIJdDkzNC50ZXN0ggl0
--OTM1LnRlc3SCCXQ5MzYudGVzdIIJdDkzNy50ZXN0ggl0OTM4LnRlc3SCCXQ5Mzku
--dGVzdIIJdDk0MC50ZXN0ggl0OTQxLnRlc3SCCXQ5NDIudGVzdIIJdDk0My50ZXN0
--ggl0OTQ0LnRlc3SCCXQ5NDUudGVzdIIJdDk0Ni50ZXN0ggl0OTQ3LnRlc3SCCXQ5
--NDgudGVzdIIJdDk0OS50ZXN0ggl0OTUwLnRlc3SCCXQ5NTEudGVzdIIJdDk1Mi50
--ZXN0ggl0OTUzLnRlc3SCCXQ5NTQudGVzdIIJdDk1NS50ZXN0ggl0OTU2LnRlc3SC
--CXQ5NTcudGVzdIIJdDk1OC50ZXN0ggl0OTU5LnRlc3SCCXQ5NjAudGVzdIIJdDk2
--MS50ZXN0ggl0OTYyLnRlc3SCCXQ5NjMudGVzdIIJdDk2NC50ZXN0ggl0OTY1LnRl
--c3SCCXQ5NjYudGVzdIIJdDk2Ny50ZXN0ggl0OTY4LnRlc3SCCXQ5NjkudGVzdIIJ
--dDk3MC50ZXN0ggl0OTcxLnRlc3SCCXQ5NzIudGVzdIIJdDk3My50ZXN0ggl0OTc0
--LnRlc3SCCXQ5NzUudGVzdIIJdDk3Ni50ZXN0ggl0OTc3LnRlc3SCCXQ5NzgudGVz
--dIIJdDk3OS50ZXN0ggl0OTgwLnRlc3SCCXQ5ODEudGVzdIIJdDk4Mi50ZXN0ggl0
--OTgzLnRlc3SCCXQ5ODQudGVzdIIJdDk4NS50ZXN0ggl0OTg2LnRlc3SCCXQ5ODcu
--dGVzdIIJdDk4OC50ZXN0ggl0OTg5LnRlc3SCCXQ5OTAudGVzdIIJdDk5MS50ZXN0
--ggl0OTkyLnRlc3SCCXQ5OTMudGVzdIIJdDk5NC50ZXN0ggl0OTk1LnRlc3SCCXQ5
--OTYudGVzdIIJdDk5Ny50ZXN0ggl0OTk4LnRlc3SCCXQ5OTkudGVzdIIKdDEwMDAu
--dGVzdIIKdDEwMDEudGVzdIIKdDEwMDIudGVzdIIKdDEwMDMudGVzdIIKdDEwMDQu
--dGVzdIIKdDEwMDUudGVzdIIKdDEwMDYudGVzdIIKdDEwMDcudGVzdIIKdDEwMDgu
--dGVzdIIKdDEwMDkudGVzdIIKdDEwMTAudGVzdIIKdDEwMTEudGVzdIIKdDEwMTIu
--dGVzdIIKdDEwMTMudGVzdIIKdDEwMTQudGVzdIIKdDEwMTUudGVzdIIKdDEwMTYu
--dGVzdIIKdDEwMTcudGVzdIIKdDEwMTgudGVzdIIKdDEwMTkudGVzdIIKdDEwMjAu
--dGVzdIIKdDEwMjEudGVzdIIKdDEwMjIudGVzdIIKdDEwMjMudGVzdIIKdDEwMjQu
--dGVzdDANBgkqhkiG9w0BAQsFAAOCAQEAr04vUFIT2Xc3IqPe9SroG4imgCRSDOBR
--H1gcOOgXEJ1/ni1YTQxc83ozCUheLXdhnbucCn0zT7sAspa+L12rQEpglaTSXZbf
--ATqVKHdPf1+OMpCnRvzVboBvlel0UJ5THLDBZC1tcEuGq59Kby34IwVw85VyziMg
--UIts1OqU7c0gcaTAJBK8z209WrpRA2Q+sACFKggvz9Bvne96FvRCxTYgUraWNFtl
--gq40zT7jWduoJIrlvjecZv9843fUpEuRq8iY4PMseYBh8wLmcWmCsjFhymlKo3K5
--V0yatYUHQBY9is1lSxcIM0S6ndNpzOW3F3zVIXwau+jP8zEvE0su6w==
-------END CERTIFICATE-----
--
--Certificate:
-- Data:
-- Version: 3 (0x2)
-- Serial Number:
-- 3c:e5:fc:81:88:59:a8:50:16:c1:7f:d7:e5:2a:e5:96:7f:c2:f6:fe
-- Signature Algorithm: sha256WithRSAEncryption
-- Issuer: CN=Root
-- Validity
-- Not Before: Oct 5 12:00:00 2021 GMT
-- Not After : Oct 5 12:00:00 2022 GMT
-- Subject: CN=Intermediate
-- Subject Public Key Info:
-- Public Key Algorithm: rsaEncryption
-- RSA Public-Key: (2048 bit)
-- Modulus:
-- 00:bb:3b:db:04:6e:17:e0:54:52:ba:23:77:24:bc:
-- 34:e3:70:d9:99:9e:53:5d:33:0b:a9:cc:4b:1d:ae:
-- 06:27:18:8e:55:ba:ad:12:c7:1d:32:59:6d:c3:16:
-- 20:db:62:a6:77:80:12:e0:87:58:51:55:e3:66:7f:
-- d1:e0:3a:22:65:e5:70:26:a2:04:04:f0:5d:f9:5f:
-- 56:c8:da:e8:0f:57:28:77:6e:9a:a0:4a:53:34:1a:
-- 63:37:a2:43:ab:0e:4a:cd:07:23:dd:55:83:44:00:
-- 0c:70:41:df:35:64:d0:c5:0e:6a:87:db:ca:fc:35:
-- d5:e2:5b:af:0b:a0:e6:75:a5:d2:e1:72:4e:22:63:
-- 01:41:73:b8:95:50:2c:fd:ed:c3:61:b6:36:d4:83:
-- 95:61:c3:e0:61:ff:f4:9e:8a:e8:ba:dc:d1:f6:89:
-- ed:9d:30:44:95:27:f4:d1:8b:e6:2f:14:66:56:f1:
-- da:f1:cc:04:1b:77:92:a5:9f:58:40:0c:9f:0c:32:
-- d6:05:c2:4c:c0:c5:9f:e5:a4:30:3d:4c:e9:9d:03:
-- 6c:4c:06:b6:e5:95:bd:21:b8:e6:2b:a8:a0:bf:06:
-- bb:43:33:19:3d:7b:17:59:f1:64:4d:24:67:b1:51:
-- 0f:35:ae:f0:71:75:79:ae:5b:02:34:04:31:e3:66:
-- 86:65
-- Exponent: 65537 (0x10001)
-- X509v3 extensions:
-- X509v3 Subject Key Identifier:
-- 92:11:3F:AC:11:96:C7:66:37:CF:83:5A:24:F0:3A:77:AF:33:8D:7F
-- X509v3 Authority Key Identifier:
-- keyid:B6:C2:EF:9F:D1:29:CB:0F:89:8C:4C:52:D4:BD:40:B7:11:B7:71:DD
--
-- Authority Information Access:
-- CA Issuers - URI:http://url-for-aia/Root.cer
--
-- X509v3 CRL Distribution Points:
--
-- Full Name:
-- URI:http://url-for-crl/Root.crl
--
-- X509v3 Key Usage: critical
-- Certificate Sign, CRL Sign
-- X509v3 Basic Constraints: critical
-- CA:TRUE
-- X509v3 Name Constraints:
-- Permitted:
-- IP:10.0.0.0/255.255.255.255
-- IP:10.0.0.1/255.255.255.255
-- IP:10.0.0.2/255.255.255.255
-- IP:10.0.0.3/255.255.255.255
-- IP:10.0.0.4/255.255.255.255
-- IP:10.0.0.5/255.255.255.255
-- IP:10.0.0.6/255.255.255.255
-- IP:10.0.0.7/255.255.255.255
-- IP:10.0.0.8/255.255.255.255
-- IP:10.0.0.9/255.255.255.255
-- IP:10.0.0.10/255.255.255.255
-- IP:10.0.0.11/255.255.255.255
-- IP:10.0.0.12/255.255.255.255
-- IP:10.0.0.13/255.255.255.255
-- IP:10.0.0.14/255.255.255.255
-- IP:10.0.0.15/255.255.255.255
-- IP:10.0.0.16/255.255.255.255
-- IP:10.0.0.17/255.255.255.255
-- IP:10.0.0.18/255.255.255.255
-- IP:10.0.0.19/255.255.255.255
-- IP:10.0.0.20/255.255.255.255
-- IP:10.0.0.21/255.255.255.255
-- IP:10.0.0.22/255.255.255.255
-- IP:10.0.0.23/255.255.255.255
-- IP:10.0.0.24/255.255.255.255
-- IP:10.0.0.25/255.255.255.255
-- IP:10.0.0.26/255.255.255.255
-- IP:10.0.0.27/255.255.255.255
-- IP:10.0.0.28/255.255.255.255
-- IP:10.0.0.29/255.255.255.255
-- IP:10.0.0.30/255.255.255.255
-- IP:10.0.0.31/255.255.255.255
-- IP:10.0.0.32/255.255.255.255
-- IP:10.0.0.33/255.255.255.255
-- IP:10.0.0.34/255.255.255.255
-- IP:10.0.0.35/255.255.255.255
-- IP:10.0.0.36/255.255.255.255
-- IP:10.0.0.37/255.255.255.255
-- IP:10.0.0.38/255.255.255.255
-- IP:10.0.0.39/255.255.255.255
-- IP:10.0.0.40/255.255.255.255
-- IP:10.0.0.41/255.255.255.255
-- IP:10.0.0.42/255.255.255.255
-- IP:10.0.0.43/255.255.255.255
-- IP:10.0.0.44/255.255.255.255
-- IP:10.0.0.45/255.255.255.255
-- IP:10.0.0.46/255.255.255.255
-- IP:10.0.0.47/255.255.255.255
-- IP:10.0.0.48/255.255.255.255
-- IP:10.0.0.49/255.255.255.255
-- IP:10.0.0.50/255.255.255.255
-- IP:10.0.0.51/255.255.255.255
-- IP:10.0.0.52/255.255.255.255
-- IP:10.0.0.53/255.255.255.255
-- IP:10.0.0.54/255.255.255.255
-- IP:10.0.0.55/255.255.255.255
-- IP:10.0.0.56/255.255.255.255
-- IP:10.0.0.57/255.255.255.255
-- IP:10.0.0.58/255.255.255.255
-- IP:10.0.0.59/255.255.255.255
-- IP:10.0.0.60/255.255.255.255
-- IP:10.0.0.61/255.255.255.255
-- IP:10.0.0.62/255.255.255.255
-- IP:10.0.0.63/255.255.255.255
-- IP:10.0.0.64/255.255.255.255
-- IP:10.0.0.65/255.255.255.255
-- IP:10.0.0.66/255.255.255.255
-- IP:10.0.0.67/255.255.255.255
-- IP:10.0.0.68/255.255.255.255
-- IP:10.0.0.69/255.255.255.255
-- IP:10.0.0.70/255.255.255.255
-- IP:10.0.0.71/255.255.255.255
-- IP:10.0.0.72/255.255.255.255
-- IP:10.0.0.73/255.255.255.255
-- IP:10.0.0.74/255.255.255.255
-- IP:10.0.0.75/255.255.255.255
-- IP:10.0.0.76/255.255.255.255
-- IP:10.0.0.77/255.255.255.255
-- IP:10.0.0.78/255.255.255.255
-- IP:10.0.0.79/255.255.255.255
-- IP:10.0.0.80/255.255.255.255
-- IP:10.0.0.81/255.255.255.255
-- IP:10.0.0.82/255.255.255.255
-- IP:10.0.0.83/255.255.255.255
-- IP:10.0.0.84/255.255.255.255
-- IP:10.0.0.85/255.255.255.255
-- IP:10.0.0.86/255.255.255.255
-- IP:10.0.0.87/255.255.255.255
-- IP:10.0.0.88/255.255.255.255
-- IP:10.0.0.89/255.255.255.255
-- IP:10.0.0.90/255.255.255.255
-- IP:10.0.0.91/255.255.255.255
-- IP:10.0.0.92/255.255.255.255
-- IP:10.0.0.93/255.255.255.255
-- IP:10.0.0.94/255.255.255.255
-- IP:10.0.0.95/255.255.255.255
-- IP:10.0.0.96/255.255.255.255
-- IP:10.0.0.97/255.255.255.255
-- IP:10.0.0.98/255.255.255.255
-- IP:10.0.0.99/255.255.255.255
-- IP:10.0.0.100/255.255.255.255
-- IP:10.0.0.101/255.255.255.255
-- IP:10.0.0.102/255.255.255.255
-- IP:10.0.0.103/255.255.255.255
-- IP:10.0.0.104/255.255.255.255
-- IP:10.0.0.105/255.255.255.255
-- IP:10.0.0.106/255.255.255.255
-- IP:10.0.0.107/255.255.255.255
-- IP:10.0.0.108/255.255.255.255
-- IP:10.0.0.109/255.255.255.255
-- IP:10.0.0.110/255.255.255.255
-- IP:10.0.0.111/255.255.255.255
-- IP:10.0.0.112/255.255.255.255
-- IP:10.0.0.113/255.255.255.255
-- IP:10.0.0.114/255.255.255.255
-- IP:10.0.0.115/255.255.255.255
-- IP:10.0.0.116/255.255.255.255
-- IP:10.0.0.117/255.255.255.255
-- IP:10.0.0.118/255.255.255.255
-- IP:10.0.0.119/255.255.255.255
-- IP:10.0.0.120/255.255.255.255
-- IP:10.0.0.121/255.255.255.255
-- IP:10.0.0.122/255.255.255.255
-- IP:10.0.0.123/255.255.255.255
-- IP:10.0.0.124/255.255.255.255
-- IP:10.0.0.125/255.255.255.255
-- IP:10.0.0.126/255.255.255.255
-- IP:10.0.0.127/255.255.255.255
-- IP:10.0.0.128/255.255.255.255
-- IP:10.0.0.129/255.255.255.255
-- IP:10.0.0.130/255.255.255.255
-- IP:10.0.0.131/255.255.255.255
-- IP:10.0.0.132/255.255.255.255
-- IP:10.0.0.133/255.255.255.255
-- IP:10.0.0.134/255.255.255.255
-- IP:10.0.0.135/255.255.255.255
-- IP:10.0.0.136/255.255.255.255
-- IP:10.0.0.137/255.255.255.255
-- IP:10.0.0.138/255.255.255.255
-- IP:10.0.0.139/255.255.255.255
-- IP:10.0.0.140/255.255.255.255
-- IP:10.0.0.141/255.255.255.255
-- IP:10.0.0.142/255.255.255.255
-- IP:10.0.0.143/255.255.255.255
-- IP:10.0.0.144/255.255.255.255
-- IP:10.0.0.145/255.255.255.255
-- IP:10.0.0.146/255.255.255.255
-- IP:10.0.0.147/255.255.255.255
-- IP:10.0.0.148/255.255.255.255
-- IP:10.0.0.149/255.255.255.255
-- IP:10.0.0.150/255.255.255.255
-- IP:10.0.0.151/255.255.255.255
-- IP:10.0.0.152/255.255.255.255
-- IP:10.0.0.153/255.255.255.255
-- IP:10.0.0.154/255.255.255.255
-- IP:10.0.0.155/255.255.255.255
-- IP:10.0.0.156/255.255.255.255
-- IP:10.0.0.157/255.255.255.255
-- IP:10.0.0.158/255.255.255.255
-- IP:10.0.0.159/255.255.255.255
-- IP:10.0.0.160/255.255.255.255
-- IP:10.0.0.161/255.255.255.255
-- IP:10.0.0.162/255.255.255.255
-- IP:10.0.0.163/255.255.255.255
-- IP:10.0.0.164/255.255.255.255
-- IP:10.0.0.165/255.255.255.255
-- IP:10.0.0.166/255.255.255.255
-- IP:10.0.0.167/255.255.255.255
-- IP:10.0.0.168/255.255.255.255
-- IP:10.0.0.169/255.255.255.255
-- IP:10.0.0.170/255.255.255.255
-- IP:10.0.0.171/255.255.255.255
-- IP:10.0.0.172/255.255.255.255
-- IP:10.0.0.173/255.255.255.255
-- IP:10.0.0.174/255.255.255.255
-- IP:10.0.0.175/255.255.255.255
-- IP:10.0.0.176/255.255.255.255
-- IP:10.0.0.177/255.255.255.255
-- IP:10.0.0.178/255.255.255.255
-- IP:10.0.0.179/255.255.255.255
-- IP:10.0.0.180/255.255.255.255
-- IP:10.0.0.181/255.255.255.255
-- IP:10.0.0.182/255.255.255.255
-- IP:10.0.0.183/255.255.255.255
-- IP:10.0.0.184/255.255.255.255
-- IP:10.0.0.185/255.255.255.255
-- IP:10.0.0.186/255.255.255.255
-- IP:10.0.0.187/255.255.255.255
-- IP:10.0.0.188/255.255.255.255
-- IP:10.0.0.189/255.255.255.255
-- IP:10.0.0.190/255.255.255.255
-- IP:10.0.0.191/255.255.255.255
-- IP:10.0.0.192/255.255.255.255
-- IP:10.0.0.193/255.255.255.255
-- IP:10.0.0.194/255.255.255.255
-- IP:10.0.0.195/255.255.255.255
-- IP:10.0.0.196/255.255.255.255
-- IP:10.0.0.197/255.255.255.255
-- IP:10.0.0.198/255.255.255.255
-- IP:10.0.0.199/255.255.255.255
-- IP:10.0.0.200/255.255.255.255
-- IP:10.0.0.201/255.255.255.255
-- IP:10.0.0.202/255.255.255.255
-- IP:10.0.0.203/255.255.255.255
-- IP:10.0.0.204/255.255.255.255
-- IP:10.0.0.205/255.255.255.255
-- IP:10.0.0.206/255.255.255.255
-- IP:10.0.0.207/255.255.255.255
-- IP:10.0.0.208/255.255.255.255
-- IP:10.0.0.209/255.255.255.255
-- IP:10.0.0.210/255.255.255.255
-- IP:10.0.0.211/255.255.255.255
-- IP:10.0.0.212/255.255.255.255
-- IP:10.0.0.213/255.255.255.255
-- IP:10.0.0.214/255.255.255.255
-- IP:10.0.0.215/255.255.255.255
-- IP:10.0.0.216/255.255.255.255
-- IP:10.0.0.217/255.255.255.255
-- IP:10.0.0.218/255.255.255.255
-- IP:10.0.0.219/255.255.255.255
-- IP:10.0.0.220/255.255.255.255
-- IP:10.0.0.221/255.255.255.255
-- IP:10.0.0.222/255.255.255.255
-- IP:10.0.0.223/255.255.255.255
-- IP:10.0.0.224/255.255.255.255
-- IP:10.0.0.225/255.255.255.255
-- IP:10.0.0.226/255.255.255.255
-- IP:10.0.0.227/255.255.255.255
-- IP:10.0.0.228/255.255.255.255
-- IP:10.0.0.229/255.255.255.255
-- IP:10.0.0.230/255.255.255.255
-- IP:10.0.0.231/255.255.255.255
-- IP:10.0.0.232/255.255.255.255
-- IP:10.0.0.233/255.255.255.255
-- IP:10.0.0.234/255.255.255.255
-- IP:10.0.0.235/255.255.255.255
-- IP:10.0.0.236/255.255.255.255
-- IP:10.0.0.237/255.255.255.255
-- IP:10.0.0.238/255.255.255.255
-- IP:10.0.0.239/255.255.255.255
-- IP:10.0.0.240/255.255.255.255
-- IP:10.0.0.241/255.255.255.255
-- IP:10.0.0.242/255.255.255.255
-- IP:10.0.0.243/255.255.255.255
-- IP:10.0.0.244/255.255.255.255
-- IP:10.0.0.245/255.255.255.255
-- IP:10.0.0.246/255.255.255.255
-- IP:10.0.0.247/255.255.255.255
-- IP:10.0.0.248/255.255.255.255
-- IP:10.0.0.249/255.255.255.255
-- IP:10.0.0.250/255.255.255.255
-- IP:10.0.0.251/255.255.255.255
-- IP:10.0.0.252/255.255.255.255
-- IP:10.0.0.253/255.255.255.255
-- IP:10.0.0.254/255.255.255.255
-- IP:10.0.0.255/255.255.255.255
-- IP:10.0.1.0/255.255.255.255
-- IP:10.0.1.1/255.255.255.255
-- IP:10.0.1.2/255.255.255.255
-- IP:10.0.1.3/255.255.255.255
-- IP:10.0.1.4/255.255.255.255
-- IP:10.0.1.5/255.255.255.255
-- IP:10.0.1.6/255.255.255.255
-- IP:10.0.1.7/255.255.255.255
-- IP:10.0.1.8/255.255.255.255
-- IP:10.0.1.9/255.255.255.255
-- IP:10.0.1.10/255.255.255.255
-- IP:10.0.1.11/255.255.255.255
-- IP:10.0.1.12/255.255.255.255
-- IP:10.0.1.13/255.255.255.255
-- IP:10.0.1.14/255.255.255.255
-- IP:10.0.1.15/255.255.255.255
-- IP:10.0.1.16/255.255.255.255
-- IP:10.0.1.17/255.255.255.255
-- IP:10.0.1.18/255.255.255.255
-- IP:10.0.1.19/255.255.255.255
-- IP:10.0.1.20/255.255.255.255
-- IP:10.0.1.21/255.255.255.255
-- IP:10.0.1.22/255.255.255.255
-- IP:10.0.1.23/255.255.255.255
-- IP:10.0.1.24/255.255.255.255
-- IP:10.0.1.25/255.255.255.255
-- IP:10.0.1.26/255.255.255.255
-- IP:10.0.1.27/255.255.255.255
-- IP:10.0.1.28/255.255.255.255
-- IP:10.0.1.29/255.255.255.255
-- IP:10.0.1.30/255.255.255.255
-- IP:10.0.1.31/255.255.255.255
-- IP:10.0.1.32/255.255.255.255
-- IP:10.0.1.33/255.255.255.255
-- IP:10.0.1.34/255.255.255.255
-- IP:10.0.1.35/255.255.255.255
-- IP:10.0.1.36/255.255.255.255
-- IP:10.0.1.37/255.255.255.255
-- IP:10.0.1.38/255.255.255.255
-- IP:10.0.1.39/255.255.255.255
-- IP:10.0.1.40/255.255.255.255
-- IP:10.0.1.41/255.255.255.255
-- IP:10.0.1.42/255.255.255.255
-- IP:10.0.1.43/255.255.255.255
-- IP:10.0.1.44/255.255.255.255
-- IP:10.0.1.45/255.255.255.255
-- IP:10.0.1.46/255.255.255.255
-- IP:10.0.1.47/255.255.255.255
-- IP:10.0.1.48/255.255.255.255
-- IP:10.0.1.49/255.255.255.255
-- IP:10.0.1.50/255.255.255.255
-- IP:10.0.1.51/255.255.255.255
-- IP:10.0.1.52/255.255.255.255
-- IP:10.0.1.53/255.255.255.255
-- IP:10.0.1.54/255.255.255.255
-- IP:10.0.1.55/255.255.255.255
-- IP:10.0.1.56/255.255.255.255
-- IP:10.0.1.57/255.255.255.255
-- IP:10.0.1.58/255.255.255.255
-- IP:10.0.1.59/255.255.255.255
-- IP:10.0.1.60/255.255.255.255
-- IP:10.0.1.61/255.255.255.255
-- IP:10.0.1.62/255.255.255.255
-- IP:10.0.1.63/255.255.255.255
-- IP:10.0.1.64/255.255.255.255
-- IP:10.0.1.65/255.255.255.255
-- IP:10.0.1.66/255.255.255.255
-- IP:10.0.1.67/255.255.255.255
-- IP:10.0.1.68/255.255.255.255
-- IP:10.0.1.69/255.255.255.255
-- IP:10.0.1.70/255.255.255.255
-- IP:10.0.1.71/255.255.255.255
-- IP:10.0.1.72/255.255.255.255
-- IP:10.0.1.73/255.255.255.255
-- IP:10.0.1.74/255.255.255.255
-- IP:10.0.1.75/255.255.255.255
-- IP:10.0.1.76/255.255.255.255
-- IP:10.0.1.77/255.255.255.255
-- IP:10.0.1.78/255.255.255.255
-- IP:10.0.1.79/255.255.255.255
-- IP:10.0.1.80/255.255.255.255
-- IP:10.0.1.81/255.255.255.255
-- IP:10.0.1.82/255.255.255.255
-- IP:10.0.1.83/255.255.255.255
-- IP:10.0.1.84/255.255.255.255
-- IP:10.0.1.85/255.255.255.255
-- IP:10.0.1.86/255.255.255.255
-- IP:10.0.1.87/255.255.255.255
-- IP:10.0.1.88/255.255.255.255
-- IP:10.0.1.89/255.255.255.255
-- IP:10.0.1.90/255.255.255.255
-- IP:10.0.1.91/255.255.255.255
-- IP:10.0.1.92/255.255.255.255
-- IP:10.0.1.93/255.255.255.255
-- IP:10.0.1.94/255.255.255.255
-- IP:10.0.1.95/255.255.255.255
-- IP:10.0.1.96/255.255.255.255
-- IP:10.0.1.97/255.255.255.255
-- IP:10.0.1.98/255.255.255.255
-- IP:10.0.1.99/255.255.255.255
-- IP:10.0.1.100/255.255.255.255
-- IP:10.0.1.101/255.255.255.255
-- IP:10.0.1.102/255.255.255.255
-- IP:10.0.1.103/255.255.255.255
-- IP:10.0.1.104/255.255.255.255
-- IP:10.0.1.105/255.255.255.255
-- IP:10.0.1.106/255.255.255.255
-- IP:10.0.1.107/255.255.255.255
-- IP:10.0.1.108/255.255.255.255
-- IP:10.0.1.109/255.255.255.255
-- IP:10.0.1.110/255.255.255.255
-- IP:10.0.1.111/255.255.255.255
-- IP:10.0.1.112/255.255.255.255
-- IP:10.0.1.113/255.255.255.255
-- IP:10.0.1.114/255.255.255.255
-- IP:10.0.1.115/255.255.255.255
-- IP:10.0.1.116/255.255.255.255
-- IP:10.0.1.117/255.255.255.255
-- IP:10.0.1.118/255.255.255.255
-- IP:10.0.1.119/255.255.255.255
-- IP:10.0.1.120/255.255.255.255
-- IP:10.0.1.121/255.255.255.255
-- IP:10.0.1.122/255.255.255.255
-- IP:10.0.1.123/255.255.255.255
-- IP:10.0.1.124/255.255.255.255
-- IP:10.0.1.125/255.255.255.255
-- IP:10.0.1.126/255.255.255.255
-- IP:10.0.1.127/255.255.255.255
-- IP:10.0.1.128/255.255.255.255
-- IP:10.0.1.129/255.255.255.255
-- IP:10.0.1.130/255.255.255.255
-- IP:10.0.1.131/255.255.255.255
-- IP:10.0.1.132/255.255.255.255
-- IP:10.0.1.133/255.255.255.255
-- IP:10.0.1.134/255.255.255.255
-- IP:10.0.1.135/255.255.255.255
-- IP:10.0.1.136/255.255.255.255
-- IP:10.0.1.137/255.255.255.255
-- IP:10.0.1.138/255.255.255.255
-- IP:10.0.1.139/255.255.255.255
-- IP:10.0.1.140/255.255.255.255
-- IP:10.0.1.141/255.255.255.255
-- IP:10.0.1.142/255.255.255.255
-- IP:10.0.1.143/255.255.255.255
-- IP:10.0.1.144/255.255.255.255
-- IP:10.0.1.145/255.255.255.255
-- IP:10.0.1.146/255.255.255.255
-- IP:10.0.1.147/255.255.255.255
-- IP:10.0.1.148/255.255.255.255
-- IP:10.0.1.149/255.255.255.255
-- IP:10.0.1.150/255.255.255.255
-- IP:10.0.1.151/255.255.255.255
-- IP:10.0.1.152/255.255.255.255
-- IP:10.0.1.153/255.255.255.255
-- IP:10.0.1.154/255.255.255.255
-- IP:10.0.1.155/255.255.255.255
-- IP:10.0.1.156/255.255.255.255
-- IP:10.0.1.157/255.255.255.255
-- IP:10.0.1.158/255.255.255.255
-- IP:10.0.1.159/255.255.255.255
-- IP:10.0.1.160/255.255.255.255
-- IP:10.0.1.161/255.255.255.255
-- IP:10.0.1.162/255.255.255.255
-- IP:10.0.1.163/255.255.255.255
-- IP:10.0.1.164/255.255.255.255
-- IP:10.0.1.165/255.255.255.255
-- IP:10.0.1.166/255.255.255.255
-- IP:10.0.1.167/255.255.255.255
-- IP:10.0.1.168/255.255.255.255
-- IP:10.0.1.169/255.255.255.255
-- IP:10.0.1.170/255.255.255.255
-- IP:10.0.1.171/255.255.255.255
-- IP:10.0.1.172/255.255.255.255
-- IP:10.0.1.173/255.255.255.255
-- IP:10.0.1.174/255.255.255.255
-- IP:10.0.1.175/255.255.255.255
-- IP:10.0.1.176/255.255.255.255
-- IP:10.0.1.177/255.255.255.255
-- IP:10.0.1.178/255.255.255.255
-- IP:10.0.1.179/255.255.255.255
-- IP:10.0.1.180/255.255.255.255
-- IP:10.0.1.181/255.255.255.255
-- IP:10.0.1.182/255.255.255.255
-- IP:10.0.1.183/255.255.255.255
-- IP:10.0.1.184/255.255.255.255
-- IP:10.0.1.185/255.255.255.255
-- IP:10.0.1.186/255.255.255.255
-- IP:10.0.1.187/255.255.255.255
-- IP:10.0.1.188/255.255.255.255
-- IP:10.0.1.189/255.255.255.255
-- IP:10.0.1.190/255.255.255.255
-- IP:10.0.1.191/255.255.255.255
-- IP:10.0.1.192/255.255.255.255
-- IP:10.0.1.193/255.255.255.255
-- IP:10.0.1.194/255.255.255.255
-- IP:10.0.1.195/255.255.255.255
-- IP:10.0.1.196/255.255.255.255
-- IP:10.0.1.197/255.255.255.255
-- IP:10.0.1.198/255.255.255.255
-- IP:10.0.1.199/255.255.255.255
-- IP:10.0.1.200/255.255.255.255
-- IP:10.0.1.201/255.255.255.255
-- IP:10.0.1.202/255.255.255.255
-- IP:10.0.1.203/255.255.255.255
-- IP:10.0.1.204/255.255.255.255
-- IP:10.0.1.205/255.255.255.255
-- IP:10.0.1.206/255.255.255.255
-- IP:10.0.1.207/255.255.255.255
-- IP:10.0.1.208/255.255.255.255
-- IP:10.0.1.209/255.255.255.255
-- IP:10.0.1.210/255.255.255.255
-- IP:10.0.1.211/255.255.255.255
-- IP:10.0.1.212/255.255.255.255
-- IP:10.0.1.213/255.255.255.255
-- IP:10.0.1.214/255.255.255.255
-- IP:10.0.1.215/255.255.255.255
-- IP:10.0.1.216/255.255.255.255
-- IP:10.0.1.217/255.255.255.255
-- IP:10.0.1.218/255.255.255.255
-- IP:10.0.1.219/255.255.255.255
-- IP:10.0.1.220/255.255.255.255
-- IP:10.0.1.221/255.255.255.255
-- IP:10.0.1.222/255.255.255.255
-- IP:10.0.1.223/255.255.255.255
-- IP:10.0.1.224/255.255.255.255
-- IP:10.0.1.225/255.255.255.255
-- IP:10.0.1.226/255.255.255.255
-- IP:10.0.1.227/255.255.255.255
-- IP:10.0.1.228/255.255.255.255
-- IP:10.0.1.229/255.255.255.255
-- IP:10.0.1.230/255.255.255.255
-- IP:10.0.1.231/255.255.255.255
-- IP:10.0.1.232/255.255.255.255
-- IP:10.0.1.233/255.255.255.255
-- IP:10.0.1.234/255.255.255.255
-- IP:10.0.1.235/255.255.255.255
-- IP:10.0.1.236/255.255.255.255
-- IP:10.0.1.237/255.255.255.255
-- IP:10.0.1.238/255.255.255.255
-- IP:10.0.1.239/255.255.255.255
-- IP:10.0.1.240/255.255.255.255
-- IP:10.0.1.241/255.255.255.255
-- IP:10.0.1.242/255.255.255.255
-- IP:10.0.1.243/255.255.255.255
-- IP:10.0.1.244/255.255.255.255
-- IP:10.0.1.245/255.255.255.255
-- IP:10.0.1.246/255.255.255.255
-- IP:10.0.1.247/255.255.255.255
-- IP:10.0.1.248/255.255.255.255
-- IP:10.0.1.249/255.255.255.255
-- IP:10.0.1.250/255.255.255.255
-- IP:10.0.1.251/255.255.255.255
-- IP:10.0.1.252/255.255.255.255
-- IP:10.0.1.253/255.255.255.255
-- IP:10.0.1.254/255.255.255.255
-- IP:10.0.1.255/255.255.255.255
-- IP:10.0.2.0/255.255.255.255
-- IP:10.0.2.1/255.255.255.255
-- IP:10.0.2.2/255.255.255.255
-- IP:10.0.2.3/255.255.255.255
-- IP:10.0.2.4/255.255.255.255
-- IP:10.0.2.5/255.255.255.255
-- IP:10.0.2.6/255.255.255.255
-- IP:10.0.2.7/255.255.255.255
-- IP:10.0.2.8/255.255.255.255
-- IP:10.0.2.9/255.255.255.255
-- IP:10.0.2.10/255.255.255.255
-- IP:10.0.2.11/255.255.255.255
-- IP:10.0.2.12/255.255.255.255
-- IP:10.0.2.13/255.255.255.255
-- IP:10.0.2.14/255.255.255.255
-- IP:10.0.2.15/255.255.255.255
-- IP:10.0.2.16/255.255.255.255
-- IP:10.0.2.17/255.255.255.255
-- IP:10.0.2.18/255.255.255.255
-- IP:10.0.2.19/255.255.255.255
-- IP:10.0.2.20/255.255.255.255
-- IP:10.0.2.21/255.255.255.255
-- IP:10.0.2.22/255.255.255.255
-- IP:10.0.2.23/255.255.255.255
-- IP:10.0.2.24/255.255.255.255
-- IP:10.0.2.25/255.255.255.255
-- IP:10.0.2.26/255.255.255.255
-- IP:10.0.2.27/255.255.255.255
-- IP:10.0.2.28/255.255.255.255
-- IP:10.0.2.29/255.255.255.255
-- IP:10.0.2.30/255.255.255.255
-- IP:10.0.2.31/255.255.255.255
-- IP:10.0.2.32/255.255.255.255
-- IP:10.0.2.33/255.255.255.255
-- IP:10.0.2.34/255.255.255.255
-- IP:10.0.2.35/255.255.255.255
-- IP:10.0.2.36/255.255.255.255
-- IP:10.0.2.37/255.255.255.255
-- IP:10.0.2.38/255.255.255.255
-- IP:10.0.2.39/255.255.255.255
-- IP:10.0.2.40/255.255.255.255
-- IP:10.0.2.41/255.255.255.255
-- IP:10.0.2.42/255.255.255.255
-- IP:10.0.2.43/255.255.255.255
-- IP:10.0.2.44/255.255.255.255
-- IP:10.0.2.45/255.255.255.255
-- IP:10.0.2.46/255.255.255.255
-- IP:10.0.2.47/255.255.255.255
-- IP:10.0.2.48/255.255.255.255
-- IP:10.0.2.49/255.255.255.255
-- IP:10.0.2.50/255.255.255.255
-- IP:10.0.2.51/255.255.255.255
-- IP:10.0.2.52/255.255.255.255
-- IP:10.0.2.53/255.255.255.255
-- IP:10.0.2.54/255.255.255.255
-- IP:10.0.2.55/255.255.255.255
-- IP:10.0.2.56/255.255.255.255
-- IP:10.0.2.57/255.255.255.255
-- IP:10.0.2.58/255.255.255.255
-- IP:10.0.2.59/255.255.255.255
-- IP:10.0.2.60/255.255.255.255
-- IP:10.0.2.61/255.255.255.255
-- IP:10.0.2.62/255.255.255.255
-- IP:10.0.2.63/255.255.255.255
-- IP:10.0.2.64/255.255.255.255
-- IP:10.0.2.65/255.255.255.255
-- IP:10.0.2.66/255.255.255.255
-- IP:10.0.2.67/255.255.255.255
-- IP:10.0.2.68/255.255.255.255
-- IP:10.0.2.69/255.255.255.255
-- IP:10.0.2.70/255.255.255.255
-- IP:10.0.2.71/255.255.255.255
-- IP:10.0.2.72/255.255.255.255
-- IP:10.0.2.73/255.255.255.255
-- IP:10.0.2.74/255.255.255.255
-- IP:10.0.2.75/255.255.255.255
-- IP:10.0.2.76/255.255.255.255
-- IP:10.0.2.77/255.255.255.255
-- IP:10.0.2.78/255.255.255.255
-- IP:10.0.2.79/255.255.255.255
-- IP:10.0.2.80/255.255.255.255
-- IP:10.0.2.81/255.255.255.255
-- IP:10.0.2.82/255.255.255.255
-- IP:10.0.2.83/255.255.255.255
-- IP:10.0.2.84/255.255.255.255
-- IP:10.0.2.85/255.255.255.255
-- IP:10.0.2.86/255.255.255.255
-- IP:10.0.2.87/255.255.255.255
-- IP:10.0.2.88/255.255.255.255
-- IP:10.0.2.89/255.255.255.255
-- IP:10.0.2.90/255.255.255.255
-- IP:10.0.2.91/255.255.255.255
-- IP:10.0.2.92/255.255.255.255
-- IP:10.0.2.93/255.255.255.255
-- IP:10.0.2.94/255.255.255.255
-- IP:10.0.2.95/255.255.255.255
-- IP:10.0.2.96/255.255.255.255
-- IP:10.0.2.97/255.255.255.255
-- IP:10.0.2.98/255.255.255.255
-- IP:10.0.2.99/255.255.255.255
-- IP:10.0.2.100/255.255.255.255
-- IP:10.0.2.101/255.255.255.255
-- IP:10.0.2.102/255.255.255.255
-- IP:10.0.2.103/255.255.255.255
-- IP:10.0.2.104/255.255.255.255
-- IP:10.0.2.105/255.255.255.255
-- IP:10.0.2.106/255.255.255.255
-- IP:10.0.2.107/255.255.255.255
-- IP:10.0.2.108/255.255.255.255
-- IP:10.0.2.109/255.255.255.255
-- IP:10.0.2.110/255.255.255.255
-- IP:10.0.2.111/255.255.255.255
-- IP:10.0.2.112/255.255.255.255
-- IP:10.0.2.113/255.255.255.255
-- IP:10.0.2.114/255.255.255.255
-- IP:10.0.2.115/255.255.255.255
-- IP:10.0.2.116/255.255.255.255
-- IP:10.0.2.117/255.255.255.255
-- IP:10.0.2.118/255.255.255.255
-- IP:10.0.2.119/255.255.255.255
-- IP:10.0.2.120/255.255.255.255
-- IP:10.0.2.121/255.255.255.255
-- IP:10.0.2.122/255.255.255.255
-- IP:10.0.2.123/255.255.255.255
-- IP:10.0.2.124/255.255.255.255
-- IP:10.0.2.125/255.255.255.255
-- IP:10.0.2.126/255.255.255.255
-- IP:10.0.2.127/255.255.255.255
-- IP:10.0.2.128/255.255.255.255
-- IP:10.0.2.129/255.255.255.255
-- IP:10.0.2.130/255.255.255.255
-- IP:10.0.2.131/255.255.255.255
-- IP:10.0.2.132/255.255.255.255
-- IP:10.0.2.133/255.255.255.255
-- IP:10.0.2.134/255.255.255.255
-- IP:10.0.2.135/255.255.255.255
-- IP:10.0.2.136/255.255.255.255
-- IP:10.0.2.137/255.255.255.255
-- IP:10.0.2.138/255.255.255.255
-- IP:10.0.2.139/255.255.255.255
-- IP:10.0.2.140/255.255.255.255
-- IP:10.0.2.141/255.255.255.255
-- IP:10.0.2.142/255.255.255.255
-- IP:10.0.2.143/255.255.255.255
-- IP:10.0.2.144/255.255.255.255
-- IP:10.0.2.145/255.255.255.255
-- IP:10.0.2.146/255.255.255.255
-- IP:10.0.2.147/255.255.255.255
-- IP:10.0.2.148/255.255.255.255
-- IP:10.0.2.149/255.255.255.255
-- IP:10.0.2.150/255.255.255.255
-- IP:10.0.2.151/255.255.255.255
-- IP:10.0.2.152/255.255.255.255
-- IP:10.0.2.153/255.255.255.255
-- IP:10.0.2.154/255.255.255.255
-- IP:10.0.2.155/255.255.255.255
-- IP:10.0.2.156/255.255.255.255
-- IP:10.0.2.157/255.255.255.255
-- IP:10.0.2.158/255.255.255.255
-- IP:10.0.2.159/255.255.255.255
-- IP:10.0.2.160/255.255.255.255
-- IP:10.0.2.161/255.255.255.255
-- IP:10.0.2.162/255.255.255.255
-- IP:10.0.2.163/255.255.255.255
-- IP:10.0.2.164/255.255.255.255
-- IP:10.0.2.165/255.255.255.255
-- IP:10.0.2.166/255.255.255.255
-- IP:10.0.2.167/255.255.255.255
-- IP:10.0.2.168/255.255.255.255
-- IP:10.0.2.169/255.255.255.255
-- IP:10.0.2.170/255.255.255.255
-- IP:10.0.2.171/255.255.255.255
-- IP:10.0.2.172/255.255.255.255
-- IP:10.0.2.173/255.255.255.255
-- IP:10.0.2.174/255.255.255.255
-- IP:10.0.2.175/255.255.255.255
-- IP:10.0.2.176/255.255.255.255
-- IP:10.0.2.177/255.255.255.255
-- IP:10.0.2.178/255.255.255.255
-- IP:10.0.2.179/255.255.255.255
-- IP:10.0.2.180/255.255.255.255
-- IP:10.0.2.181/255.255.255.255
-- IP:10.0.2.182/255.255.255.255
-- IP:10.0.2.183/255.255.255.255
-- IP:10.0.2.184/255.255.255.255
-- IP:10.0.2.185/255.255.255.255
-- IP:10.0.2.186/255.255.255.255
-- IP:10.0.2.187/255.255.255.255
-- IP:10.0.2.188/255.255.255.255
-- IP:10.0.2.189/255.255.255.255
-- IP:10.0.2.190/255.255.255.255
-- IP:10.0.2.191/255.255.255.255
-- IP:10.0.2.192/255.255.255.255
-- IP:10.0.2.193/255.255.255.255
-- IP:10.0.2.194/255.255.255.255
-- IP:10.0.2.195/255.255.255.255
-- IP:10.0.2.196/255.255.255.255
-- IP:10.0.2.197/255.255.255.255
-- IP:10.0.2.198/255.255.255.255
-- IP:10.0.2.199/255.255.255.255
-- IP:10.0.2.200/255.255.255.255
-- IP:10.0.2.201/255.255.255.255
-- IP:10.0.2.202/255.255.255.255
-- IP:10.0.2.203/255.255.255.255
-- IP:10.0.2.204/255.255.255.255
-- IP:10.0.2.205/255.255.255.255
-- IP:10.0.2.206/255.255.255.255
-- IP:10.0.2.207/255.255.255.255
-- IP:10.0.2.208/255.255.255.255
-- IP:10.0.2.209/255.255.255.255
-- IP:10.0.2.210/255.255.255.255
-- IP:10.0.2.211/255.255.255.255
-- IP:10.0.2.212/255.255.255.255
-- IP:10.0.2.213/255.255.255.255
-- IP:10.0.2.214/255.255.255.255
-- IP:10.0.2.215/255.255.255.255
-- IP:10.0.2.216/255.255.255.255
-- IP:10.0.2.217/255.255.255.255
-- IP:10.0.2.218/255.255.255.255
-- IP:10.0.2.219/255.255.255.255
-- IP:10.0.2.220/255.255.255.255
-- IP:10.0.2.221/255.255.255.255
-- IP:10.0.2.222/255.255.255.255
-- IP:10.0.2.223/255.255.255.255
-- IP:10.0.2.224/255.255.255.255
-- IP:10.0.2.225/255.255.255.255
-- IP:10.0.2.226/255.255.255.255
-- IP:10.0.2.227/255.255.255.255
-- IP:10.0.2.228/255.255.255.255
-- IP:10.0.2.229/255.255.255.255
-- IP:10.0.2.230/255.255.255.255
-- IP:10.0.2.231/255.255.255.255
-- IP:10.0.2.232/255.255.255.255
-- IP:10.0.2.233/255.255.255.255
-- IP:10.0.2.234/255.255.255.255
-- IP:10.0.2.235/255.255.255.255
-- IP:10.0.2.236/255.255.255.255
-- IP:10.0.2.237/255.255.255.255
-- IP:10.0.2.238/255.255.255.255
-- IP:10.0.2.239/255.255.255.255
-- IP:10.0.2.240/255.255.255.255
-- IP:10.0.2.241/255.255.255.255
-- IP:10.0.2.242/255.255.255.255
-- IP:10.0.2.243/255.255.255.255
-- IP:10.0.2.244/255.255.255.255
-- IP:10.0.2.245/255.255.255.255
-- IP:10.0.2.246/255.255.255.255
-- IP:10.0.2.247/255.255.255.255
-- IP:10.0.2.248/255.255.255.255
-- IP:10.0.2.249/255.255.255.255
-- IP:10.0.2.250/255.255.255.255
-- IP:10.0.2.251/255.255.255.255
-- IP:10.0.2.252/255.255.255.255
-- IP:10.0.2.253/255.255.255.255
-- IP:10.0.2.254/255.255.255.255
-- IP:10.0.2.255/255.255.255.255
-- IP:10.0.3.0/255.255.255.255
-- IP:10.0.3.1/255.255.255.255
-- IP:10.0.3.2/255.255.255.255
-- IP:10.0.3.3/255.255.255.255
-- IP:10.0.3.4/255.255.255.255
-- IP:10.0.3.5/255.255.255.255
-- IP:10.0.3.6/255.255.255.255
-- IP:10.0.3.7/255.255.255.255
-- IP:10.0.3.8/255.255.255.255
-- IP:10.0.3.9/255.255.255.255
-- IP:10.0.3.10/255.255.255.255
-- IP:10.0.3.11/255.255.255.255
-- IP:10.0.3.12/255.255.255.255
-- IP:10.0.3.13/255.255.255.255
-- IP:10.0.3.14/255.255.255.255
-- IP:10.0.3.15/255.255.255.255
-- IP:10.0.3.16/255.255.255.255
-- IP:10.0.3.17/255.255.255.255
-- IP:10.0.3.18/255.255.255.255
-- IP:10.0.3.19/255.255.255.255
-- IP:10.0.3.20/255.255.255.255
-- IP:10.0.3.21/255.255.255.255
-- IP:10.0.3.22/255.255.255.255
-- IP:10.0.3.23/255.255.255.255
-- IP:10.0.3.24/255.255.255.255
-- IP:10.0.3.25/255.255.255.255
-- IP:10.0.3.26/255.255.255.255
-- IP:10.0.3.27/255.255.255.255
-- IP:10.0.3.28/255.255.255.255
-- IP:10.0.3.29/255.255.255.255
-- IP:10.0.3.30/255.255.255.255
-- IP:10.0.3.31/255.255.255.255
-- IP:10.0.3.32/255.255.255.255
-- IP:10.0.3.33/255.255.255.255
-- IP:10.0.3.34/255.255.255.255
-- IP:10.0.3.35/255.255.255.255
-- IP:10.0.3.36/255.255.255.255
-- IP:10.0.3.37/255.255.255.255
-- IP:10.0.3.38/255.255.255.255
-- IP:10.0.3.39/255.255.255.255
-- IP:10.0.3.40/255.255.255.255
-- IP:10.0.3.41/255.255.255.255
-- IP:10.0.3.42/255.255.255.255
-- IP:10.0.3.43/255.255.255.255
-- IP:10.0.3.44/255.255.255.255
-- IP:10.0.3.45/255.255.255.255
-- IP:10.0.3.46/255.255.255.255
-- IP:10.0.3.47/255.255.255.255
-- IP:10.0.3.48/255.255.255.255
-- IP:10.0.3.49/255.255.255.255
-- IP:10.0.3.50/255.255.255.255
-- IP:10.0.3.51/255.255.255.255
-- IP:10.0.3.52/255.255.255.255
-- IP:10.0.3.53/255.255.255.255
-- IP:10.0.3.54/255.255.255.255
-- IP:10.0.3.55/255.255.255.255
-- IP:10.0.3.56/255.255.255.255
-- IP:10.0.3.57/255.255.255.255
-- IP:10.0.3.58/255.255.255.255
-- IP:10.0.3.59/255.255.255.255
-- IP:10.0.3.60/255.255.255.255
-- IP:10.0.3.61/255.255.255.255
-- IP:10.0.3.62/255.255.255.255
-- IP:10.0.3.63/255.255.255.255
-- IP:10.0.3.64/255.255.255.255
-- IP:10.0.3.65/255.255.255.255
-- IP:10.0.3.66/255.255.255.255
-- IP:10.0.3.67/255.255.255.255
-- IP:10.0.3.68/255.255.255.255
-- IP:10.0.3.69/255.255.255.255
-- IP:10.0.3.70/255.255.255.255
-- IP:10.0.3.71/255.255.255.255
-- IP:10.0.3.72/255.255.255.255
-- IP:10.0.3.73/255.255.255.255
-- IP:10.0.3.74/255.255.255.255
-- IP:10.0.3.75/255.255.255.255
-- IP:10.0.3.76/255.255.255.255
-- IP:10.0.3.77/255.255.255.255
-- IP:10.0.3.78/255.255.255.255
-- IP:10.0.3.79/255.255.255.255
-- IP:10.0.3.80/255.255.255.255
-- IP:10.0.3.81/255.255.255.255
-- IP:10.0.3.82/255.255.255.255
-- IP:10.0.3.83/255.255.255.255
-- IP:10.0.3.84/255.255.255.255
-- IP:10.0.3.85/255.255.255.255
-- IP:10.0.3.86/255.255.255.255
-- IP:10.0.3.87/255.255.255.255
-- IP:10.0.3.88/255.255.255.255
-- IP:10.0.3.89/255.255.255.255
-- IP:10.0.3.90/255.255.255.255
-- IP:10.0.3.91/255.255.255.255
-- IP:10.0.3.92/255.255.255.255
-- IP:10.0.3.93/255.255.255.255
-- IP:10.0.3.94/255.255.255.255
-- IP:10.0.3.95/255.255.255.255
-- IP:10.0.3.96/255.255.255.255
-- IP:10.0.3.97/255.255.255.255
-- IP:10.0.3.98/255.255.255.255
-- IP:10.0.3.99/255.255.255.255
-- IP:10.0.3.100/255.255.255.255
-- IP:10.0.3.101/255.255.255.255
-- IP:10.0.3.102/255.255.255.255
-- IP:10.0.3.103/255.255.255.255
-- IP:10.0.3.104/255.255.255.255
-- IP:10.0.3.105/255.255.255.255
-- IP:10.0.3.106/255.255.255.255
-- IP:10.0.3.107/255.255.255.255
-- IP:10.0.3.108/255.255.255.255
-- IP:10.0.3.109/255.255.255.255
-- IP:10.0.3.110/255.255.255.255
-- IP:10.0.3.111/255.255.255.255
-- IP:10.0.3.112/255.255.255.255
-- IP:10.0.3.113/255.255.255.255
-- IP:10.0.3.114/255.255.255.255
-- IP:10.0.3.115/255.255.255.255
-- IP:10.0.3.116/255.255.255.255
-- IP:10.0.3.117/255.255.255.255
-- IP:10.0.3.118/255.255.255.255
-- IP:10.0.3.119/255.255.255.255
-- IP:10.0.3.120/255.255.255.255
-- IP:10.0.3.121/255.255.255.255
-- IP:10.0.3.122/255.255.255.255
-- IP:10.0.3.123/255.255.255.255
-- IP:10.0.3.124/255.255.255.255
-- IP:10.0.3.125/255.255.255.255
-- IP:10.0.3.126/255.255.255.255
-- IP:10.0.3.127/255.255.255.255
-- IP:10.0.3.128/255.255.255.255
-- IP:10.0.3.129/255.255.255.255
-- IP:10.0.3.130/255.255.255.255
-- IP:10.0.3.131/255.255.255.255
-- IP:10.0.3.132/255.255.255.255
-- IP:10.0.3.133/255.255.255.255
-- IP:10.0.3.134/255.255.255.255
-- IP:10.0.3.135/255.255.255.255
-- IP:10.0.3.136/255.255.255.255
-- IP:10.0.3.137/255.255.255.255
-- IP:10.0.3.138/255.255.255.255
-- IP:10.0.3.139/255.255.255.255
-- IP:10.0.3.140/255.255.255.255
-- IP:10.0.3.141/255.255.255.255
-- IP:10.0.3.142/255.255.255.255
-- IP:10.0.3.143/255.255.255.255
-- IP:10.0.3.144/255.255.255.255
-- IP:10.0.3.145/255.255.255.255
-- IP:10.0.3.146/255.255.255.255
-- IP:10.0.3.147/255.255.255.255
-- IP:10.0.3.148/255.255.255.255
-- IP:10.0.3.149/255.255.255.255
-- IP:10.0.3.150/255.255.255.255
-- IP:10.0.3.151/255.255.255.255
-- IP:10.0.3.152/255.255.255.255
-- IP:10.0.3.153/255.255.255.255
-- IP:10.0.3.154/255.255.255.255
-- IP:10.0.3.155/255.255.255.255
-- IP:10.0.3.156/255.255.255.255
-- IP:10.0.3.157/255.255.255.255
-- IP:10.0.3.158/255.255.255.255
-- IP:10.0.3.159/255.255.255.255
-- IP:10.0.3.160/255.255.255.255
-- IP:10.0.3.161/255.255.255.255
-- IP:10.0.3.162/255.255.255.255
-- IP:10.0.3.163/255.255.255.255
-- IP:10.0.3.164/255.255.255.255
-- IP:10.0.3.165/255.255.255.255
-- IP:10.0.3.166/255.255.255.255
-- IP:10.0.3.167/255.255.255.255
-- IP:10.0.3.168/255.255.255.255
-- IP:10.0.3.169/255.255.255.255
-- IP:10.0.3.170/255.255.255.255
-- IP:10.0.3.171/255.255.255.255
-- IP:10.0.3.172/255.255.255.255
-- IP:10.0.3.173/255.255.255.255
-- IP:10.0.3.174/255.255.255.255
-- IP:10.0.3.175/255.255.255.255
-- IP:10.0.3.176/255.255.255.255
-- IP:10.0.3.177/255.255.255.255
-- IP:10.0.3.178/255.255.255.255
-- IP:10.0.3.179/255.255.255.255
-- IP:10.0.3.180/255.255.255.255
-- IP:10.0.3.181/255.255.255.255
-- IP:10.0.3.182/255.255.255.255
-- IP:10.0.3.183/255.255.255.255
-- IP:10.0.3.184/255.255.255.255
-- IP:10.0.3.185/255.255.255.255
-- IP:10.0.3.186/255.255.255.255
-- IP:10.0.3.187/255.255.255.255
-- IP:10.0.3.188/255.255.255.255
-- IP:10.0.3.189/255.255.255.255
-- IP:10.0.3.190/255.255.255.255
-- IP:10.0.3.191/255.255.255.255
-- IP:10.0.3.192/255.255.255.255
-- IP:10.0.3.193/255.255.255.255
-- IP:10.0.3.194/255.255.255.255
-- IP:10.0.3.195/255.255.255.255
-- IP:10.0.3.196/255.255.255.255
-- IP:10.0.3.197/255.255.255.255
-- IP:10.0.3.198/255.255.255.255
-- IP:10.0.3.199/255.255.255.255
-- IP:10.0.3.200/255.255.255.255
-- IP:10.0.3.201/255.255.255.255
-- IP:10.0.3.202/255.255.255.255
-- IP:10.0.3.203/255.255.255.255
-- IP:10.0.3.204/255.255.255.255
-- IP:10.0.3.205/255.255.255.255
-- IP:10.0.3.206/255.255.255.255
-- IP:10.0.3.207/255.255.255.255
-- IP:10.0.3.208/255.255.255.255
-- IP:10.0.3.209/255.255.255.255
-- IP:10.0.3.210/255.255.255.255
-- IP:10.0.3.211/255.255.255.255
-- IP:10.0.3.212/255.255.255.255
-- IP:10.0.3.213/255.255.255.255
-- IP:10.0.3.214/255.255.255.255
-- IP:10.0.3.215/255.255.255.255
-- IP:10.0.3.216/255.255.255.255
-- IP:10.0.3.217/255.255.255.255
-- IP:10.0.3.218/255.255.255.255
-- IP:10.0.3.219/255.255.255.255
-- IP:10.0.3.220/255.255.255.255
-- IP:10.0.3.221/255.255.255.255
-- IP:10.0.3.222/255.255.255.255
-- IP:10.0.3.223/255.255.255.255
-- IP:10.0.3.224/255.255.255.255
-- IP:10.0.3.225/255.255.255.255
-- IP:10.0.3.226/255.255.255.255
-- IP:10.0.3.227/255.255.255.255
-- IP:10.0.3.228/255.255.255.255
-- IP:10.0.3.229/255.255.255.255
-- IP:10.0.3.230/255.255.255.255
-- IP:10.0.3.231/255.255.255.255
-- IP:10.0.3.232/255.255.255.255
-- IP:10.0.3.233/255.255.255.255
-- IP:10.0.3.234/255.255.255.255
-- IP:10.0.3.235/255.255.255.255
-- IP:10.0.3.236/255.255.255.255
-- IP:10.0.3.237/255.255.255.255
-- IP:10.0.3.238/255.255.255.255
-- IP:10.0.3.239/255.255.255.255
-- IP:10.0.3.240/255.255.255.255
-- IP:10.0.3.241/255.255.255.255
-- IP:10.0.3.242/255.255.255.255
-- IP:10.0.3.243/255.255.255.255
-- IP:10.0.3.244/255.255.255.255
-- IP:10.0.3.245/255.255.255.255
-- IP:10.0.3.246/255.255.255.255
-- IP:10.0.3.247/255.255.255.255
-- IP:10.0.3.248/255.255.255.255
-- IP:10.0.3.249/255.255.255.255
-- IP:10.0.3.250/255.255.255.255
-- IP:10.0.3.251/255.255.255.255
-- IP:10.0.3.252/255.255.255.255
-- IP:10.0.3.253/255.255.255.255
-- IP:10.0.3.254/255.255.255.255
-- IP:10.0.3.255/255.255.255.255
-- IP:10.0.4.0/255.255.255.255
-- DirName:CN = t0
-- DirName:CN = t1
-- DirName:CN = t2
-- DirName:CN = t3
-- DirName:CN = t4
-- DirName:CN = t5
-- DirName:CN = t6
-- DirName:CN = t7
-- DirName:CN = t8
-- DirName:CN = t9
-- DirName:CN = t10
-- DirName:CN = t11
-- DirName:CN = t12
-- DirName:CN = t13
-- DirName:CN = t14
-- DirName:CN = t15
-- DirName:CN = t16
-- DirName:CN = t17
-- DirName:CN = t18
-- DirName:CN = t19
-- DirName:CN = t20
-- DirName:CN = t21
-- DirName:CN = t22
-- DirName:CN = t23
-- DirName:CN = t24
-- DirName:CN = t25
-- DirName:CN = t26
-- DirName:CN = t27
-- DirName:CN = t28
-- DirName:CN = t29
-- DirName:CN = t30
-- DirName:CN = t31
-- DirName:CN = t32
-- DirName:CN = t33
-- DirName:CN = t34
-- DirName:CN = t35
-- DirName:CN = t36
-- DirName:CN = t37
-- DirName:CN = t38
-- DirName:CN = t39
-- DirName:CN = t40
-- DirName:CN = t41
-- DirName:CN = t42
-- DirName:CN = t43
-- DirName:CN = t44
-- DirName:CN = t45
-- DirName:CN = t46
-- DirName:CN = t47
-- DirName:CN = t48
-- DirName:CN = t49
-- DirName:CN = t50
-- DirName:CN = t51
-- DirName:CN = t52
-- DirName:CN = t53
-- DirName:CN = t54
-- DirName:CN = t55
-- DirName:CN = t56
-- DirName:CN = t57
-- DirName:CN = t58
-- DirName:CN = t59
-- DirName:CN = t60
-- DirName:CN = t61
-- DirName:CN = t62
-- DirName:CN = t63
-- DirName:CN = t64
-- DirName:CN = t65
-- DirName:CN = t66
-- DirName:CN = t67
-- DirName:CN = t68
-- DirName:CN = t69
-- DirName:CN = t70
-- DirName:CN = t71
-- DirName:CN = t72
-- DirName:CN = t73
-- DirName:CN = t74
-- DirName:CN = t75
-- DirName:CN = t76
-- DirName:CN = t77
-- DirName:CN = t78
-- DirName:CN = t79
-- DirName:CN = t80
-- DirName:CN = t81
-- DirName:CN = t82
-- DirName:CN = t83
-- DirName:CN = t84
-- DirName:CN = t85
-- DirName:CN = t86
-- DirName:CN = t87
-- DirName:CN = t88
-- DirName:CN = t89
-- DirName:CN = t90
-- DirName:CN = t91
-- DirName:CN = t92
-- DirName:CN = t93
-- DirName:CN = t94
-- DirName:CN = t95
-- DirName:CN = t96
-- DirName:CN = t97
-- DirName:CN = t98
-- DirName:CN = t99
-- DirName:CN = t100
-- DirName:CN = t101
-- DirName:CN = t102
-- DirName:CN = t103
-- DirName:CN = t104
-- DirName:CN = t105
-- DirName:CN = t106
-- DirName:CN = t107
-- DirName:CN = t108
-- DirName:CN = t109
-- DirName:CN = t110
-- DirName:CN = t111
-- DirName:CN = t112
-- DirName:CN = t113
-- DirName:CN = t114
-- DirName:CN = t115
-- DirName:CN = t116
-- DirName:CN = t117
-- DirName:CN = t118
-- DirName:CN = t119
-- DirName:CN = t120
-- DirName:CN = t121
-- DirName:CN = t122
-- DirName:CN = t123
-- DirName:CN = t124
-- DirName:CN = t125
-- DirName:CN = t126
-- DirName:CN = t127
-- DirName:CN = t128
-- DirName:CN = t129
-- DirName:CN = t130
-- DirName:CN = t131
-- DirName:CN = t132
-- DirName:CN = t133
-- DirName:CN = t134
-- DirName:CN = t135
-- DirName:CN = t136
-- DirName:CN = t137
-- DirName:CN = t138
-- DirName:CN = t139
-- DirName:CN = t140
-- DirName:CN = t141
-- DirName:CN = t142
-- DirName:CN = t143
-- DirName:CN = t144
-- DirName:CN = t145
-- DirName:CN = t146
-- DirName:CN = t147
-- DirName:CN = t148
-- DirName:CN = t149
-- DirName:CN = t150
-- DirName:CN = t151
-- DirName:CN = t152
-- DirName:CN = t153
-- DirName:CN = t154
-- DirName:CN = t155
-- DirName:CN = t156
-- DirName:CN = t157
-- DirName:CN = t158
-- DirName:CN = t159
-- DirName:CN = t160
-- DirName:CN = t161
-- DirName:CN = t162
-- DirName:CN = t163
-- DirName:CN = t164
-- DirName:CN = t165
-- DirName:CN = t166
-- DirName:CN = t167
-- DirName:CN = t168
-- DirName:CN = t169
-- DirName:CN = t170
-- DirName:CN = t171
-- DirName:CN = t172
-- DirName:CN = t173
-- DirName:CN = t174
-- DirName:CN = t175
-- DirName:CN = t176
-- DirName:CN = t177
-- DirName:CN = t178
-- DirName:CN = t179
-- DirName:CN = t180
-- DirName:CN = t181
-- DirName:CN = t182
-- DirName:CN = t183
-- DirName:CN = t184
-- DirName:CN = t185
-- DirName:CN = t186
-- DirName:CN = t187
-- DirName:CN = t188
-- DirName:CN = t189
-- DirName:CN = t190
-- DirName:CN = t191
-- DirName:CN = t192
-- DirName:CN = t193
-- DirName:CN = t194
-- DirName:CN = t195
-- DirName:CN = t196
-- DirName:CN = t197
-- DirName:CN = t198
-- DirName:CN = t199
-- DirName:CN = t200
-- DirName:CN = t201
-- DirName:CN = t202
-- DirName:CN = t203
-- DirName:CN = t204
-- DirName:CN = t205
-- DirName:CN = t206
-- DirName:CN = t207
-- DirName:CN = t208
-- DirName:CN = t209
-- DirName:CN = t210
-- DirName:CN = t211
-- DirName:CN = t212
-- DirName:CN = t213
-- DirName:CN = t214
-- DirName:CN = t215
-- DirName:CN = t216
-- DirName:CN = t217
-- DirName:CN = t218
-- DirName:CN = t219
-- DirName:CN = t220
-- DirName:CN = t221
-- DirName:CN = t222
-- DirName:CN = t223
-- DirName:CN = t224
-- DirName:CN = t225
-- DirName:CN = t226
-- DirName:CN = t227
-- DirName:CN = t228
-- DirName:CN = t229
-- DirName:CN = t230
-- DirName:CN = t231
-- DirName:CN = t232
-- DirName:CN = t233
-- DirName:CN = t234
-- DirName:CN = t235
-- DirName:CN = t236
-- DirName:CN = t237
-- DirName:CN = t238
-- DirName:CN = t239
-- DirName:CN = t240
-- DirName:CN = t241
-- DirName:CN = t242
-- DirName:CN = t243
-- DirName:CN = t244
-- DirName:CN = t245
-- DirName:CN = t246
-- DirName:CN = t247
-- DirName:CN = t248
-- DirName:CN = t249
-- DirName:CN = t250
-- DirName:CN = t251
-- DirName:CN = t252
-- DirName:CN = t253
-- DirName:CN = t254
-- DirName:CN = t255
-- DirName:CN = t256
-- DirName:CN = t257
-- DirName:CN = t258
-- DirName:CN = t259
-- DirName:CN = t260
-- DirName:CN = t261
-- DirName:CN = t262
-- DirName:CN = t263
-- DirName:CN = t264
-- DirName:CN = t265
-- DirName:CN = t266
-- DirName:CN = t267
-- DirName:CN = t268
-- DirName:CN = t269
-- DirName:CN = t270
-- DirName:CN = t271
-- DirName:CN = t272
-- DirName:CN = t273
-- DirName:CN = t274
-- DirName:CN = t275
-- DirName:CN = t276
-- DirName:CN = t277
-- DirName:CN = t278
-- DirName:CN = t279
-- DirName:CN = t280
-- DirName:CN = t281
-- DirName:CN = t282
-- DirName:CN = t283
-- DirName:CN = t284
-- DirName:CN = t285
-- DirName:CN = t286
-- DirName:CN = t287
-- DirName:CN = t288
-- DirName:CN = t289
-- DirName:CN = t290
-- DirName:CN = t291
-- DirName:CN = t292
-- DirName:CN = t293
-- DirName:CN = t294
-- DirName:CN = t295
-- DirName:CN = t296
-- DirName:CN = t297
-- DirName:CN = t298
-- DirName:CN = t299
-- DirName:CN = t300
-- DirName:CN = t301
-- DirName:CN = t302
-- DirName:CN = t303
-- DirName:CN = t304
-- DirName:CN = t305
-- DirName:CN = t306
-- DirName:CN = t307
-- DirName:CN = t308
-- DirName:CN = t309
-- DirName:CN = t310
-- DirName:CN = t311
-- DirName:CN = t312
-- DirName:CN = t313
-- DirName:CN = t314
-- DirName:CN = t315
-- DirName:CN = t316
-- DirName:CN = t317
-- DirName:CN = t318
-- DirName:CN = t319
-- DirName:CN = t320
-- DirName:CN = t321
-- DirName:CN = t322
-- DirName:CN = t323
-- DirName:CN = t324
-- DirName:CN = t325
-- DirName:CN = t326
-- DirName:CN = t327
-- DirName:CN = t328
-- DirName:CN = t329
-- DirName:CN = t330
-- DirName:CN = t331
-- DirName:CN = t332
-- DirName:CN = t333
-- DirName:CN = t334
-- DirName:CN = t335
-- DirName:CN = t336
-- DirName:CN = t337
-- DirName:CN = t338
-- DirName:CN = t339
-- DirName:CN = t340
-- DirName:CN = t341
-- DirName:CN = t342
-- DirName:CN = t343
-- DirName:CN = t344
-- DirName:CN = t345
-- DirName:CN = t346
-- DirName:CN = t347
-- DirName:CN = t348
-- DirName:CN = t349
-- DirName:CN = t350
-- DirName:CN = t351
-- DirName:CN = t352
-- DirName:CN = t353
-- DirName:CN = t354
-- DirName:CN = t355
-- DirName:CN = t356
-- DirName:CN = t357
-- DirName:CN = t358
-- DirName:CN = t359
-- DirName:CN = t360
-- DirName:CN = t361
-- DirName:CN = t362
-- DirName:CN = t363
-- DirName:CN = t364
-- DirName:CN = t365
-- DirName:CN = t366
-- DirName:CN = t367
-- DirName:CN = t368
-- DirName:CN = t369
-- DirName:CN = t370
-- DirName:CN = t371
-- DirName:CN = t372
-- DirName:CN = t373
-- DirName:CN = t374
-- DirName:CN = t375
-- DirName:CN = t376
-- DirName:CN = t377
-- DirName:CN = t378
-- DirName:CN = t379
-- DirName:CN = t380
-- DirName:CN = t381
-- DirName:CN = t382
-- DirName:CN = t383
-- DirName:CN = t384
-- DirName:CN = t385
-- DirName:CN = t386
-- DirName:CN = t387
-- DirName:CN = t388
-- DirName:CN = t389
-- DirName:CN = t390
-- DirName:CN = t391
-- DirName:CN = t392
-- DirName:CN = t393
-- DirName:CN = t394
-- DirName:CN = t395
-- DirName:CN = t396
-- DirName:CN = t397
-- DirName:CN = t398
-- DirName:CN = t399
-- DirName:CN = t400
-- DirName:CN = t401
-- DirName:CN = t402
-- DirName:CN = t403
-- DirName:CN = t404
-- DirName:CN = t405
-- DirName:CN = t406
-- DirName:CN = t407
-- DirName:CN = t408
-- DirName:CN = t409
-- DirName:CN = t410
-- DirName:CN = t411
-- DirName:CN = t412
-- DirName:CN = t413
-- DirName:CN = t414
-- DirName:CN = t415
-- DirName:CN = t416
-- DirName:CN = t417
-- DirName:CN = t418
-- DirName:CN = t419
-- DirName:CN = t420
-- DirName:CN = t421
-- DirName:CN = t422
-- DirName:CN = t423
-- DirName:CN = t424
-- DirName:CN = t425
-- DirName:CN = t426
-- DirName:CN = t427
-- DirName:CN = t428
-- DirName:CN = t429
-- DirName:CN = t430
-- DirName:CN = t431
-- DirName:CN = t432
-- DirName:CN = t433
-- DirName:CN = t434
-- DirName:CN = t435
-- DirName:CN = t436
-- DirName:CN = t437
-- DirName:CN = t438
-- DirName:CN = t439
-- DirName:CN = t440
-- DirName:CN = t441
-- DirName:CN = t442
-- DirName:CN = t443
-- DirName:CN = t444
-- DirName:CN = t445
-- DirName:CN = t446
-- DirName:CN = t447
-- DirName:CN = t448
-- DirName:CN = t449
-- DirName:CN = t450
-- DirName:CN = t451
-- DirName:CN = t452
-- DirName:CN = t453
-- DirName:CN = t454
-- DirName:CN = t455
-- DirName:CN = t456
-- DirName:CN = t457
-- DirName:CN = t458
-- DirName:CN = t459
-- DirName:CN = t460
-- DirName:CN = t461
-- DirName:CN = t462
-- DirName:CN = t463
-- DirName:CN = t464
-- DirName:CN = t465
-- DirName:CN = t466
-- DirName:CN = t467
-- DirName:CN = t468
-- DirName:CN = t469
-- DirName:CN = t470
-- DirName:CN = t471
-- DirName:CN = t472
-- DirName:CN = t473
-- DirName:CN = t474
-- DirName:CN = t475
-- DirName:CN = t476
-- DirName:CN = t477
-- DirName:CN = t478
-- DirName:CN = t479
-- DirName:CN = t480
-- DirName:CN = t481
-- DirName:CN = t482
-- DirName:CN = t483
-- DirName:CN = t484
-- DirName:CN = t485
-- DirName:CN = t486
-- DirName:CN = t487
-- DirName:CN = t488
-- DirName:CN = t489
-- DirName:CN = t490
-- DirName:CN = t491
-- DirName:CN = t492
-- DirName:CN = t493
-- DirName:CN = t494
-- DirName:CN = t495
-- DirName:CN = t496
-- DirName:CN = t497
-- DirName:CN = t498
-- DirName:CN = t499
-- DirName:CN = t500
-- DirName:CN = t501
-- DirName:CN = t502
-- DirName:CN = t503
-- DirName:CN = t504
-- DirName:CN = t505
-- DirName:CN = t506
-- DirName:CN = t507
-- DirName:CN = t508
-- DirName:CN = t509
-- DirName:CN = t510
-- DirName:CN = t511
-- DirName:CN = t512
-- DirName:CN = t513
-- DirName:CN = t514
-- DirName:CN = t515
-- DirName:CN = t516
-- DirName:CN = t517
-- DirName:CN = t518
-- DirName:CN = t519
-- DirName:CN = t520
-- DirName:CN = t521
-- DirName:CN = t522
-- DirName:CN = t523
-- DirName:CN = t524
-- DirName:CN = t525
-- DirName:CN = t526
-- DirName:CN = t527
-- DirName:CN = t528
-- DirName:CN = t529
-- DirName:CN = t530
-- DirName:CN = t531
-- DirName:CN = t532
-- DirName:CN = t533
-- DirName:CN = t534
-- DirName:CN = t535
-- DirName:CN = t536
-- DirName:CN = t537
-- DirName:CN = t538
-- DirName:CN = t539
-- DirName:CN = t540
-- DirName:CN = t541
-- DirName:CN = t542
-- DirName:CN = t543
-- DirName:CN = t544
-- DirName:CN = t545
-- DirName:CN = t546
-- DirName:CN = t547
-- DirName:CN = t548
-- DirName:CN = t549
-- DirName:CN = t550
-- DirName:CN = t551
-- DirName:CN = t552
-- DirName:CN = t553
-- DirName:CN = t554
-- DirName:CN = t555
-- DirName:CN = t556
-- DirName:CN = t557
-- DirName:CN = t558
-- DirName:CN = t559
-- DirName:CN = t560
-- DirName:CN = t561
-- DirName:CN = t562
-- DirName:CN = t563
-- DirName:CN = t564
-- DirName:CN = t565
-- DirName:CN = t566
-- DirName:CN = t567
-- DirName:CN = t568
-- DirName:CN = t569
-- DirName:CN = t570
-- DirName:CN = t571
-- DirName:CN = t572
-- DirName:CN = t573
-- DirName:CN = t574
-- DirName:CN = t575
-- DirName:CN = t576
-- DirName:CN = t577
-- DirName:CN = t578
-- DirName:CN = t579
-- DirName:CN = t580
-- DirName:CN = t581
-- DirName:CN = t582
-- DirName:CN = t583
-- DirName:CN = t584
-- DirName:CN = t585
-- DirName:CN = t586
-- DirName:CN = t587
-- DirName:CN = t588
-- DirName:CN = t589
-- DirName:CN = t590
-- DirName:CN = t591
-- DirName:CN = t592
-- DirName:CN = t593
-- DirName:CN = t594
-- DirName:CN = t595
-- DirName:CN = t596
-- DirName:CN = t597
-- DirName:CN = t598
-- DirName:CN = t599
-- DirName:CN = t600
-- DirName:CN = t601
-- DirName:CN = t602
-- DirName:CN = t603
-- DirName:CN = t604
-- DirName:CN = t605
-- DirName:CN = t606
-- DirName:CN = t607
-- DirName:CN = t608
-- DirName:CN = t609
-- DirName:CN = t610
-- DirName:CN = t611
-- DirName:CN = t612
-- DirName:CN = t613
-- DirName:CN = t614
-- DirName:CN = t615
-- DirName:CN = t616
-- DirName:CN = t617
-- DirName:CN = t618
-- DirName:CN = t619
-- DirName:CN = t620
-- DirName:CN = t621
-- DirName:CN = t622
-- DirName:CN = t623
-- DirName:CN = t624
-- DirName:CN = t625
-- DirName:CN = t626
-- DirName:CN = t627
-- DirName:CN = t628
-- DirName:CN = t629
-- DirName:CN = t630
-- DirName:CN = t631
-- DirName:CN = t632
-- DirName:CN = t633
-- DirName:CN = t634
-- DirName:CN = t635
-- DirName:CN = t636
-- DirName:CN = t637
-- DirName:CN = t638
-- DirName:CN = t639
-- DirName:CN = t640
-- DirName:CN = t641
-- DirName:CN = t642
-- DirName:CN = t643
-- DirName:CN = t644
-- DirName:CN = t645
-- DirName:CN = t646
-- DirName:CN = t647
-- DirName:CN = t648
-- DirName:CN = t649
-- DirName:CN = t650
-- DirName:CN = t651
-- DirName:CN = t652
-- DirName:CN = t653
-- DirName:CN = t654
-- DirName:CN = t655
-- DirName:CN = t656
-- DirName:CN = t657
-- DirName:CN = t658
-- DirName:CN = t659
-- DirName:CN = t660
-- DirName:CN = t661
-- DirName:CN = t662
-- DirName:CN = t663
-- DirName:CN = t664
-- DirName:CN = t665
-- DirName:CN = t666
-- DirName:CN = t667
-- DirName:CN = t668
-- DirName:CN = t669
-- DirName:CN = t670
-- DirName:CN = t671
-- DirName:CN = t672
-- DirName:CN = t673
-- DirName:CN = t674
-- DirName:CN = t675
-- DirName:CN = t676
-- DirName:CN = t677
-- DirName:CN = t678
-- DirName:CN = t679
-- DirName:CN = t680
-- DirName:CN = t681
-- DirName:CN = t682
-- DirName:CN = t683
-- DirName:CN = t684
-- DirName:CN = t685
-- DirName:CN = t686
-- DirName:CN = t687
-- DirName:CN = t688
-- DirName:CN = t689
-- DirName:CN = t690
-- DirName:CN = t691
-- DirName:CN = t692
-- DirName:CN = t693
-- DirName:CN = t694
-- DirName:CN = t695
-- DirName:CN = t696
-- DirName:CN = t697
-- DirName:CN = t698
-- DirName:CN = t699
-- DirName:CN = t700
-- DirName:CN = t701
-- DirName:CN = t702
-- DirName:CN = t703
-- DirName:CN = t704
-- DirName:CN = t705
-- DirName:CN = t706
-- DirName:CN = t707
-- DirName:CN = t708
-- DirName:CN = t709
-- DirName:CN = t710
-- DirName:CN = t711
-- DirName:CN = t712
-- DirName:CN = t713
-- DirName:CN = t714
-- DirName:CN = t715
-- DirName:CN = t716
-- DirName:CN = t717
-- DirName:CN = t718
-- DirName:CN = t719
-- DirName:CN = t720
-- DirName:CN = t721
-- DirName:CN = t722
-- DirName:CN = t723
-- DirName:CN = t724
-- DirName:CN = t725
-- DirName:CN = t726
-- DirName:CN = t727
-- DirName:CN = t728
-- DirName:CN = t729
-- DirName:CN = t730
-- DirName:CN = t731
-- DirName:CN = t732
-- DirName:CN = t733
-- DirName:CN = t734
-- DirName:CN = t735
-- DirName:CN = t736
-- DirName:CN = t737
-- DirName:CN = t738
-- DirName:CN = t739
-- DirName:CN = t740
-- DirName:CN = t741
-- DirName:CN = t742
-- DirName:CN = t743
-- DirName:CN = t744
-- DirName:CN = t745
-- DirName:CN = t746
-- DirName:CN = t747
-- DirName:CN = t748
-- DirName:CN = t749
-- DirName:CN = t750
-- DirName:CN = t751
-- DirName:CN = t752
-- DirName:CN = t753
-- DirName:CN = t754
-- DirName:CN = t755
-- DirName:CN = t756
-- DirName:CN = t757
-- DirName:CN = t758
-- DirName:CN = t759
-- DirName:CN = t760
-- DirName:CN = t761
-- DirName:CN = t762
-- DirName:CN = t763
-- DirName:CN = t764
-- DirName:CN = t765
-- DirName:CN = t766
-- DirName:CN = t767
-- DirName:CN = t768
-- DirName:CN = t769
-- DirName:CN = t770
-- DirName:CN = t771
-- DirName:CN = t772
-- DirName:CN = t773
-- DirName:CN = t774
-- DirName:CN = t775
-- DirName:CN = t776
-- DirName:CN = t777
-- DirName:CN = t778
-- DirName:CN = t779
-- DirName:CN = t780
-- DirName:CN = t781
-- DirName:CN = t782
-- DirName:CN = t783
-- DirName:CN = t784
-- DirName:CN = t785
-- DirName:CN = t786
-- DirName:CN = t787
-- DirName:CN = t788
-- DirName:CN = t789
-- DirName:CN = t790
-- DirName:CN = t791
-- DirName:CN = t792
-- DirName:CN = t793
-- DirName:CN = t794
-- DirName:CN = t795
-- DirName:CN = t796
-- DirName:CN = t797
-- DirName:CN = t798
-- DirName:CN = t799
-- DirName:CN = t800
-- DirName:CN = t801
-- DirName:CN = t802
-- DirName:CN = t803
-- DirName:CN = t804
-- DirName:CN = t805
-- DirName:CN = t806
-- DirName:CN = t807
-- DirName:CN = t808
-- DirName:CN = t809
-- DirName:CN = t810
-- DirName:CN = t811
-- DirName:CN = t812
-- DirName:CN = t813
-- DirName:CN = t814
-- DirName:CN = t815
-- DirName:CN = t816
-- DirName:CN = t817
-- DirName:CN = t818
-- DirName:CN = t819
-- DirName:CN = t820
-- DirName:CN = t821
-- DirName:CN = t822
-- DirName:CN = t823
-- DirName:CN = t824
-- DirName:CN = t825
-- DirName:CN = t826
-- DirName:CN = t827
-- DirName:CN = t828
-- DirName:CN = t829
-- DirName:CN = t830
-- DirName:CN = t831
-- DirName:CN = t832
-- DirName:CN = t833
-- DirName:CN = t834
-- DirName:CN = t835
-- DirName:CN = t836
-- DirName:CN = t837
-- DirName:CN = t838
-- DirName:CN = t839
-- DirName:CN = t840
-- DirName:CN = t841
-- DirName:CN = t842
-- DirName:CN = t843
-- DirName:CN = t844
-- DirName:CN = t845
-- DirName:CN = t846
-- DirName:CN = t847
-- DirName:CN = t848
-- DirName:CN = t849
-- DirName:CN = t850
-- DirName:CN = t851
-- DirName:CN = t852
-- DirName:CN = t853
-- DirName:CN = t854
-- DirName:CN = t855
-- DirName:CN = t856
-- DirName:CN = t857
-- DirName:CN = t858
-- DirName:CN = t859
-- DirName:CN = t860
-- DirName:CN = t861
-- DirName:CN = t862
-- DirName:CN = t863
-- DirName:CN = t864
-- DirName:CN = t865
-- DirName:CN = t866
-- DirName:CN = t867
-- DirName:CN = t868
-- DirName:CN = t869
-- DirName:CN = t870
-- DirName:CN = t871
-- DirName:CN = t872
-- DirName:CN = t873
-- DirName:CN = t874
-- DirName:CN = t875
-- DirName:CN = t876
-- DirName:CN = t877
-- DirName:CN = t878
-- DirName:CN = t879
-- DirName:CN = t880
-- DirName:CN = t881
-- DirName:CN = t882
-- DirName:CN = t883
-- DirName:CN = t884
-- DirName:CN = t885
-- DirName:CN = t886
-- DirName:CN = t887
-- DirName:CN = t888
-- DirName:CN = t889
-- DirName:CN = t890
-- DirName:CN = t891
-- DirName:CN = t892
-- DirName:CN = t893
-- DirName:CN = t894
-- DirName:CN = t895
-- DirName:CN = t896
-- DirName:CN = t897
-- DirName:CN = t898
-- DirName:CN = t899
-- DirName:CN = t900
-- DirName:CN = t901
-- DirName:CN = t902
-- DirName:CN = t903
-- DirName:CN = t904
-- DirName:CN = t905
-- DirName:CN = t906
-- DirName:CN = t907
-- DirName:CN = t908
-- DirName:CN = t909
-- DirName:CN = t910
-- DirName:CN = t911
-- DirName:CN = t912
-- DirName:CN = t913
-- DirName:CN = t914
-- DirName:CN = t915
-- DirName:CN = t916
-- DirName:CN = t917
-- DirName:CN = t918
-- DirName:CN = t919
-- DirName:CN = t920
-- DirName:CN = t921
-- DirName:CN = t922
-- DirName:CN = t923
-- DirName:CN = t924
-- DirName:CN = t925
-- DirName:CN = t926
-- DirName:CN = t927
-- DirName:CN = t928
-- DirName:CN = t929
-- DirName:CN = t930
-- DirName:CN = t931
-- DirName:CN = t932
-- DirName:CN = t933
-- DirName:CN = t934
-- DirName:CN = t935
-- DirName:CN = t936
-- DirName:CN = t937
-- DirName:CN = t938
-- DirName:CN = t939
-- DirName:CN = t940
-- DirName:CN = t941
-- DirName:CN = t942
-- DirName:CN = t943
-- DirName:CN = t944
-- DirName:CN = t945
-- DirName:CN = t946
-- DirName:CN = t947
-- DirName:CN = t948
-- DirName:CN = t949
-- DirName:CN = t950
-- DirName:CN = t951
-- DirName:CN = t952
-- DirName:CN = t953
-- DirName:CN = t954
-- DirName:CN = t955
-- DirName:CN = t956
-- DirName:CN = t957
-- DirName:CN = t958
-- DirName:CN = t959
-- DirName:CN = t960
-- DirName:CN = t961
-- DirName:CN = t962
-- DirName:CN = t963
-- DirName:CN = t964
-- DirName:CN = t965
-- DirName:CN = t966
-- DirName:CN = t967
-- DirName:CN = t968
-- DirName:CN = t969
-- DirName:CN = t970
-- DirName:CN = t971
-- DirName:CN = t972
-- DirName:CN = t973
-- DirName:CN = t974
-- DirName:CN = t975
-- DirName:CN = t976
-- DirName:CN = t977
-- DirName:CN = t978
-- DirName:CN = t979
-- DirName:CN = t980
-- DirName:CN = t981
-- DirName:CN = t982
-- DirName:CN = t983
-- DirName:CN = t984
-- DirName:CN = t985
-- DirName:CN = t986
-- DirName:CN = t987
-- DirName:CN = t988
-- DirName:CN = t989
-- DirName:CN = t990
-- DirName:CN = t991
-- DirName:CN = t992
-- DirName:CN = t993
-- DirName:CN = t994
-- DirName:CN = t995
-- DirName:CN = t996
-- DirName:CN = t997
-- DirName:CN = t998
-- DirName:CN = t999
-- DirName:CN = t1000
-- DirName:CN = t1001
-- DirName:CN = t1002
-- DirName:CN = t1003
-- DirName:CN = t1004
-- DirName:CN = t1005
-- DirName:CN = t1006
-- DirName:CN = t1007
-- DirName:CN = t1008
-- DirName:CN = t1009
-- DirName:CN = t1010
-- DirName:CN = t1011
-- DirName:CN = t1012
-- DirName:CN = t1013
-- DirName:CN = t1014
-- DirName:CN = t1015
-- DirName:CN = t1016
-- DirName:CN = t1017
-- DirName:CN = t1018
-- DirName:CN = t1019
-- DirName:CN = t1020
-- DirName:CN = t1021
-- DirName:CN = t1022
-- DirName:CN = t1023
-- DirName:CN = t1024
-- URI:http://test/0
-- URI:http://test/1
-- URI:http://test/2
-- URI:http://test/3
-- URI:http://test/4
-- URI:http://test/5
-- URI:http://test/6
-- URI:http://test/7
-- URI:http://test/8
-- URI:http://test/9
-- URI:http://test/10
-- URI:http://test/11
-- URI:http://test/12
-- URI:http://test/13
-- URI:http://test/14
-- URI:http://test/15
-- URI:http://test/16
-- URI:http://test/17
-- URI:http://test/18
-- URI:http://test/19
-- URI:http://test/20
-- URI:http://test/21
-- URI:http://test/22
-- URI:http://test/23
-- URI:http://test/24
-- URI:http://test/25
-- URI:http://test/26
-- URI:http://test/27
-- URI:http://test/28
-- URI:http://test/29
-- URI:http://test/30
-- URI:http://test/31
-- URI:http://test/32
-- URI:http://test/33
-- URI:http://test/34
-- URI:http://test/35
-- URI:http://test/36
-- URI:http://test/37
-- URI:http://test/38
-- URI:http://test/39
-- URI:http://test/40
-- URI:http://test/41
-- URI:http://test/42
-- URI:http://test/43
-- URI:http://test/44
-- URI:http://test/45
-- URI:http://test/46
-- URI:http://test/47
-- URI:http://test/48
-- URI:http://test/49
-- URI:http://test/50
-- URI:http://test/51
-- URI:http://test/52
-- URI:http://test/53
-- URI:http://test/54
-- URI:http://test/55
-- URI:http://test/56
-- URI:http://test/57
-- URI:http://test/58
-- URI:http://test/59
-- URI:http://test/60
-- URI:http://test/61
-- URI:http://test/62
-- URI:http://test/63
-- URI:http://test/64
-- URI:http://test/65
-- URI:http://test/66
-- URI:http://test/67
-- URI:http://test/68
-- URI:http://test/69
-- URI:http://test/70
-- URI:http://test/71
-- URI:http://test/72
-- URI:http://test/73
-- URI:http://test/74
-- URI:http://test/75
-- URI:http://test/76
-- URI:http://test/77
-- URI:http://test/78
-- URI:http://test/79
-- URI:http://test/80
-- URI:http://test/81
-- URI:http://test/82
-- URI:http://test/83
-- URI:http://test/84
-- URI:http://test/85
-- URI:http://test/86
-- URI:http://test/87
-- URI:http://test/88
-- URI:http://test/89
-- URI:http://test/90
-- URI:http://test/91
-- URI:http://test/92
-- URI:http://test/93
-- URI:http://test/94
-- URI:http://test/95
-- URI:http://test/96
-- URI:http://test/97
-- URI:http://test/98
-- URI:http://test/99
-- URI:http://test/100
-- URI:http://test/101
-- URI:http://test/102
-- URI:http://test/103
-- URI:http://test/104
-- URI:http://test/105
-- URI:http://test/106
-- URI:http://test/107
-- URI:http://test/108
-- URI:http://test/109
-- URI:http://test/110
-- URI:http://test/111
-- URI:http://test/112
-- URI:http://test/113
-- URI:http://test/114
-- URI:http://test/115
-- URI:http://test/116
-- URI:http://test/117
-- URI:http://test/118
-- URI:http://test/119
-- URI:http://test/120
-- URI:http://test/121
-- URI:http://test/122
-- URI:http://test/123
-- URI:http://test/124
-- URI:http://test/125
-- URI:http://test/126
-- URI:http://test/127
-- URI:http://test/128
-- URI:http://test/129
-- URI:http://test/130
-- URI:http://test/131
-- URI:http://test/132
-- URI:http://test/133
-- URI:http://test/134
-- URI:http://test/135
-- URI:http://test/136
-- URI:http://test/137
-- URI:http://test/138
-- URI:http://test/139
-- URI:http://test/140
-- URI:http://test/141
-- URI:http://test/142
-- URI:http://test/143
-- URI:http://test/144
-- URI:http://test/145
-- URI:http://test/146
-- URI:http://test/147
-- URI:http://test/148
-- URI:http://test/149
-- URI:http://test/150
-- URI:http://test/151
-- URI:http://test/152
-- URI:http://test/153
-- URI:http://test/154
-- URI:http://test/155
-- URI:http://test/156
-- URI:http://test/157
-- URI:http://test/158
-- URI:http://test/159
-- URI:http://test/160
-- URI:http://test/161
-- URI:http://test/162
-- URI:http://test/163
-- URI:http://test/164
-- URI:http://test/165
-- URI:http://test/166
-- URI:http://test/167
-- URI:http://test/168
-- URI:http://test/169
-- URI:http://test/170
-- URI:http://test/171
-- URI:http://test/172
-- URI:http://test/173
-- URI:http://test/174
-- URI:http://test/175
-- URI:http://test/176
-- URI:http://test/177
-- URI:http://test/178
-- URI:http://test/179
-- URI:http://test/180
-- URI:http://test/181
-- URI:http://test/182
-- URI:http://test/183
-- URI:http://test/184
-- URI:http://test/185
-- URI:http://test/186
-- URI:http://test/187
-- URI:http://test/188
-- URI:http://test/189
-- URI:http://test/190
-- URI:http://test/191
-- URI:http://test/192
-- URI:http://test/193
-- URI:http://test/194
-- URI:http://test/195
-- URI:http://test/196
-- URI:http://test/197
-- URI:http://test/198
-- URI:http://test/199
-- URI:http://test/200
-- URI:http://test/201
-- URI:http://test/202
-- URI:http://test/203
-- URI:http://test/204
-- URI:http://test/205
-- URI:http://test/206
-- URI:http://test/207
-- URI:http://test/208
-- URI:http://test/209
-- URI:http://test/210
-- URI:http://test/211
-- URI:http://test/212
-- URI:http://test/213
-- URI:http://test/214
-- URI:http://test/215
-- URI:http://test/216
-- URI:http://test/217
-- URI:http://test/218
-- URI:http://test/219
-- URI:http://test/220
-- URI:http://test/221
-- URI:http://test/222
-- URI:http://test/223
-- URI:http://test/224
-- URI:http://test/225
-- URI:http://test/226
-- URI:http://test/227
-- URI:http://test/228
-- URI:http://test/229
-- URI:http://test/230
-- URI:http://test/231
-- URI:http://test/232
-- URI:http://test/233
-- URI:http://test/234
-- URI:http://test/235
-- URI:http://test/236
-- URI:http://test/237
-- URI:http://test/238
-- URI:http://test/239
-- URI:http://test/240
-- URI:http://test/241
-- URI:http://test/242
-- URI:http://test/243
-- URI:http://test/244
-- URI:http://test/245
-- URI:http://test/246
-- URI:http://test/247
-- URI:http://test/248
-- URI:http://test/249
-- URI:http://test/250
-- URI:http://test/251
-- URI:http://test/252
-- URI:http://test/253
-- URI:http://test/254
-- URI:http://test/255
-- URI:http://test/256
-- URI:http://test/257
-- URI:http://test/258
-- URI:http://test/259
-- URI:http://test/260
-- URI:http://test/261
-- URI:http://test/262
-- URI:http://test/263
-- URI:http://test/264
-- URI:http://test/265
-- URI:http://test/266
-- URI:http://test/267
-- URI:http://test/268
-- URI:http://test/269
-- URI:http://test/270
-- URI:http://test/271
-- URI:http://test/272
-- URI:http://test/273
-- URI:http://test/274
-- URI:http://test/275
-- URI:http://test/276
-- URI:http://test/277
-- URI:http://test/278
-- URI:http://test/279
-- URI:http://test/280
-- URI:http://test/281
-- URI:http://test/282
-- URI:http://test/283
-- URI:http://test/284
-- URI:http://test/285
-- URI:http://test/286
-- URI:http://test/287
-- URI:http://test/288
-- URI:http://test/289
-- URI:http://test/290
-- URI:http://test/291
-- URI:http://test/292
-- URI:http://test/293
-- URI:http://test/294
-- URI:http://test/295
-- URI:http://test/296
-- URI:http://test/297
-- URI:http://test/298
-- URI:http://test/299
-- URI:http://test/300
-- URI:http://test/301
-- URI:http://test/302
-- URI:http://test/303
-- URI:http://test/304
-- URI:http://test/305
-- URI:http://test/306
-- URI:http://test/307
-- URI:http://test/308
-- URI:http://test/309
-- URI:http://test/310
-- URI:http://test/311
-- URI:http://test/312
-- URI:http://test/313
-- URI:http://test/314
-- URI:http://test/315
-- URI:http://test/316
-- URI:http://test/317
-- URI:http://test/318
-- URI:http://test/319
-- URI:http://test/320
-- URI:http://test/321
-- URI:http://test/322
-- URI:http://test/323
-- URI:http://test/324
-- URI:http://test/325
-- URI:http://test/326
-- URI:http://test/327
-- URI:http://test/328
-- URI:http://test/329
-- URI:http://test/330
-- URI:http://test/331
-- URI:http://test/332
-- URI:http://test/333
-- URI:http://test/334
-- URI:http://test/335
-- URI:http://test/336
-- URI:http://test/337
-- URI:http://test/338
-- URI:http://test/339
-- URI:http://test/340
-- URI:http://test/341
-- URI:http://test/342
-- URI:http://test/343
-- URI:http://test/344
-- URI:http://test/345
-- URI:http://test/346
-- URI:http://test/347
-- URI:http://test/348
-- URI:http://test/349
-- URI:http://test/350
-- URI:http://test/351
-- URI:http://test/352
-- URI:http://test/353
-- URI:http://test/354
-- URI:http://test/355
-- URI:http://test/356
-- URI:http://test/357
-- URI:http://test/358
-- URI:http://test/359
-- URI:http://test/360
-- URI:http://test/361
-- URI:http://test/362
-- URI:http://test/363
-- URI:http://test/364
-- URI:http://test/365
-- URI:http://test/366
-- URI:http://test/367
-- URI:http://test/368
-- URI:http://test/369
-- URI:http://test/370
-- URI:http://test/371
-- URI:http://test/372
-- URI:http://test/373
-- URI:http://test/374
-- URI:http://test/375
-- URI:http://test/376
-- URI:http://test/377
-- URI:http://test/378
-- URI:http://test/379
-- URI:http://test/380
-- URI:http://test/381
-- URI:http://test/382
-- URI:http://test/383
-- URI:http://test/384
-- URI:http://test/385
-- URI:http://test/386
-- URI:http://test/387
-- URI:http://test/388
-- URI:http://test/389
-- URI:http://test/390
-- URI:http://test/391
-- URI:http://test/392
-- URI:http://test/393
-- URI:http://test/394
-- URI:http://test/395
-- URI:http://test/396
-- URI:http://test/397
-- URI:http://test/398
-- URI:http://test/399
-- URI:http://test/400
-- URI:http://test/401
-- URI:http://test/402
-- URI:http://test/403
-- URI:http://test/404
-- URI:http://test/405
-- URI:http://test/406
-- URI:http://test/407
-- URI:http://test/408
-- URI:http://test/409
-- URI:http://test/410
-- URI:http://test/411
-- URI:http://test/412
-- URI:http://test/413
-- URI:http://test/414
-- URI:http://test/415
-- URI:http://test/416
-- URI:http://test/417
-- URI:http://test/418
-- URI:http://test/419
-- URI:http://test/420
-- URI:http://test/421
-- URI:http://test/422
-- URI:http://test/423
-- URI:http://test/424
-- URI:http://test/425
-- URI:http://test/426
-- URI:http://test/427
-- URI:http://test/428
-- URI:http://test/429
-- URI:http://test/430
-- URI:http://test/431
-- URI:http://test/432
-- URI:http://test/433
-- URI:http://test/434
-- URI:http://test/435
-- URI:http://test/436
-- URI:http://test/437
-- URI:http://test/438
-- URI:http://test/439
-- URI:http://test/440
-- URI:http://test/441
-- URI:http://test/442
-- URI:http://test/443
-- URI:http://test/444
-- URI:http://test/445
-- URI:http://test/446
-- URI:http://test/447
-- URI:http://test/448
-- URI:http://test/449
-- URI:http://test/450
-- URI:http://test/451
-- URI:http://test/452
-- URI:http://test/453
-- URI:http://test/454
-- URI:http://test/455
-- URI:http://test/456
-- URI:http://test/457
-- URI:http://test/458
-- URI:http://test/459
-- URI:http://test/460
-- URI:http://test/461
-- URI:http://test/462
-- URI:http://test/463
-- URI:http://test/464
-- URI:http://test/465
-- URI:http://test/466
-- URI:http://test/467
-- URI:http://test/468
-- URI:http://test/469
-- URI:http://test/470
-- URI:http://test/471
-- URI:http://test/472
-- URI:http://test/473
-- URI:http://test/474
-- URI:http://test/475
-- URI:http://test/476
-- URI:http://test/477
-- URI:http://test/478
-- URI:http://test/479
-- URI:http://test/480
-- URI:http://test/481
-- URI:http://test/482
-- URI:http://test/483
-- URI:http://test/484
-- URI:http://test/485
-- URI:http://test/486
-- URI:http://test/487
-- URI:http://test/488
-- URI:http://test/489
-- URI:http://test/490
-- URI:http://test/491
-- URI:http://test/492
-- URI:http://test/493
-- URI:http://test/494
-- URI:http://test/495
-- URI:http://test/496
-- URI:http://test/497
-- URI:http://test/498
-- URI:http://test/499
-- URI:http://test/500
-- URI:http://test/501
-- URI:http://test/502
-- URI:http://test/503
-- URI:http://test/504
-- URI:http://test/505
-- URI:http://test/506
-- URI:http://test/507
-- URI:http://test/508
-- URI:http://test/509
-- URI:http://test/510
-- URI:http://test/511
-- URI:http://test/512
-- URI:http://test/513
-- URI:http://test/514
-- URI:http://test/515
-- URI:http://test/516
-- URI:http://test/517
-- URI:http://test/518
-- URI:http://test/519
-- URI:http://test/520
-- URI:http://test/521
-- URI:http://test/522
-- URI:http://test/523
-- URI:http://test/524
-- URI:http://test/525
-- URI:http://test/526
-- URI:http://test/527
-- URI:http://test/528
-- URI:http://test/529
-- URI:http://test/530
-- URI:http://test/531
-- URI:http://test/532
-- URI:http://test/533
-- URI:http://test/534
-- URI:http://test/535
-- URI:http://test/536
-- URI:http://test/537
-- URI:http://test/538
-- URI:http://test/539
-- URI:http://test/540
-- URI:http://test/541
-- URI:http://test/542
-- URI:http://test/543
-- URI:http://test/544
-- URI:http://test/545
-- URI:http://test/546
-- URI:http://test/547
-- URI:http://test/548
-- URI:http://test/549
-- URI:http://test/550
-- URI:http://test/551
-- URI:http://test/552
-- URI:http://test/553
-- URI:http://test/554
-- URI:http://test/555
-- URI:http://test/556
-- URI:http://test/557
-- URI:http://test/558
-- URI:http://test/559
-- URI:http://test/560
-- URI:http://test/561
-- URI:http://test/562
-- URI:http://test/563
-- URI:http://test/564
-- URI:http://test/565
-- URI:http://test/566
-- URI:http://test/567
-- URI:http://test/568
-- URI:http://test/569
-- URI:http://test/570
-- URI:http://test/571
-- URI:http://test/572
-- URI:http://test/573
-- URI:http://test/574
-- URI:http://test/575
-- URI:http://test/576
-- URI:http://test/577
-- URI:http://test/578
-- URI:http://test/579
-- URI:http://test/580
-- URI:http://test/581
-- URI:http://test/582
-- URI:http://test/583
-- URI:http://test/584
-- URI:http://test/585
-- URI:http://test/586
-- URI:http://test/587
-- URI:http://test/588
-- URI:http://test/589
-- URI:http://test/590
-- URI:http://test/591
-- URI:http://test/592
-- URI:http://test/593
-- URI:http://test/594
-- URI:http://test/595
-- URI:http://test/596
-- URI:http://test/597
-- URI:http://test/598
-- URI:http://test/599
-- URI:http://test/600
-- URI:http://test/601
-- URI:http://test/602
-- URI:http://test/603
-- URI:http://test/604
-- URI:http://test/605
-- URI:http://test/606
-- URI:http://test/607
-- URI:http://test/608
-- URI:http://test/609
-- URI:http://test/610
-- URI:http://test/611
-- URI:http://test/612
-- URI:http://test/613
-- URI:http://test/614
-- URI:http://test/615
-- URI:http://test/616
-- URI:http://test/617
-- URI:http://test/618
-- URI:http://test/619
-- URI:http://test/620
-- URI:http://test/621
-- URI:http://test/622
-- URI:http://test/623
-- URI:http://test/624
-- URI:http://test/625
-- URI:http://test/626
-- URI:http://test/627
-- URI:http://test/628
-- URI:http://test/629
-- URI:http://test/630
-- URI:http://test/631
-- URI:http://test/632
-- URI:http://test/633
-- URI:http://test/634
-- URI:http://test/635
-- URI:http://test/636
-- URI:http://test/637
-- URI:http://test/638
-- URI:http://test/639
-- URI:http://test/640
-- URI:http://test/641
-- URI:http://test/642
-- URI:http://test/643
-- URI:http://test/644
-- URI:http://test/645
-- URI:http://test/646
-- URI:http://test/647
-- URI:http://test/648
-- URI:http://test/649
-- URI:http://test/650
-- URI:http://test/651
-- URI:http://test/652
-- URI:http://test/653
-- URI:http://test/654
-- URI:http://test/655
-- URI:http://test/656
-- URI:http://test/657
-- URI:http://test/658
-- URI:http://test/659
-- URI:http://test/660
-- URI:http://test/661
-- URI:http://test/662
-- URI:http://test/663
-- URI:http://test/664
-- URI:http://test/665
-- URI:http://test/666
-- URI:http://test/667
-- URI:http://test/668
-- URI:http://test/669
-- URI:http://test/670
-- URI:http://test/671
-- URI:http://test/672
-- URI:http://test/673
-- URI:http://test/674
-- URI:http://test/675
-- URI:http://test/676
-- URI:http://test/677
-- URI:http://test/678
-- URI:http://test/679
-- URI:http://test/680
-- URI:http://test/681
-- URI:http://test/682
-- URI:http://test/683
-- URI:http://test/684
-- URI:http://test/685
-- URI:http://test/686
-- URI:http://test/687
-- URI:http://test/688
-- URI:http://test/689
-- URI:http://test/690
-- URI:http://test/691
-- URI:http://test/692
-- URI:http://test/693
-- URI:http://test/694
-- URI:http://test/695
-- URI:http://test/696
-- URI:http://test/697
-- URI:http://test/698
-- URI:http://test/699
-- URI:http://test/700
-- URI:http://test/701
-- URI:http://test/702
-- URI:http://test/703
-- URI:http://test/704
-- URI:http://test/705
-- URI:http://test/706
-- URI:http://test/707
-- URI:http://test/708
-- URI:http://test/709
-- URI:http://test/710
-- URI:http://test/711
-- URI:http://test/712
-- URI:http://test/713
-- URI:http://test/714
-- URI:http://test/715
-- URI:http://test/716
-- URI:http://test/717
-- URI:http://test/718
-- URI:http://test/719
-- URI:http://test/720
-- URI:http://test/721
-- URI:http://test/722
-- URI:http://test/723
-- URI:http://test/724
-- URI:http://test/725
-- URI:http://test/726
-- URI:http://test/727
-- URI:http://test/728
-- URI:http://test/729
-- URI:http://test/730
-- URI:http://test/731
-- URI:http://test/732
-- URI:http://test/733
-- URI:http://test/734
-- URI:http://test/735
-- URI:http://test/736
-- URI:http://test/737
-- URI:http://test/738
-- URI:http://test/739
-- URI:http://test/740
-- URI:http://test/741
-- URI:http://test/742
-- URI:http://test/743
-- URI:http://test/744
-- URI:http://test/745
-- URI:http://test/746
-- URI:http://test/747
-- URI:http://test/748
-- URI:http://test/749
-- URI:http://test/750
-- URI:http://test/751
-- URI:http://test/752
-- URI:http://test/753
-- URI:http://test/754
-- URI:http://test/755
-- URI:http://test/756
-- URI:http://test/757
-- URI:http://test/758
-- URI:http://test/759
-- URI:http://test/760
-- URI:http://test/761
-- URI:http://test/762
-- URI:http://test/763
-- URI:http://test/764
-- URI:http://test/765
-- URI:http://test/766
-- URI:http://test/767
-- URI:http://test/768
-- URI:http://test/769
-- URI:http://test/770
-- URI:http://test/771
-- URI:http://test/772
-- URI:http://test/773
-- URI:http://test/774
-- URI:http://test/775
-- URI:http://test/776
-- URI:http://test/777
-- URI:http://test/778
-- URI:http://test/779
-- URI:http://test/780
-- URI:http://test/781
-- URI:http://test/782
-- URI:http://test/783
-- URI:http://test/784
-- URI:http://test/785
-- URI:http://test/786
-- URI:http://test/787
-- URI:http://test/788
-- URI:http://test/789
-- URI:http://test/790
-- URI:http://test/791
-- URI:http://test/792
-- URI:http://test/793
-- URI:http://test/794
-- URI:http://test/795
-- URI:http://test/796
-- URI:http://test/797
-- URI:http://test/798
-- URI:http://test/799
-- URI:http://test/800
-- URI:http://test/801
-- URI:http://test/802
-- URI:http://test/803
-- URI:http://test/804
-- URI:http://test/805
-- URI:http://test/806
-- URI:http://test/807
-- URI:http://test/808
-- URI:http://test/809
-- URI:http://test/810
-- URI:http://test/811
-- URI:http://test/812
-- URI:http://test/813
-- URI:http://test/814
-- URI:http://test/815
-- URI:http://test/816
-- URI:http://test/817
-- URI:http://test/818
-- URI:http://test/819
-- URI:http://test/820
-- URI:http://test/821
-- URI:http://test/822
-- URI:http://test/823
-- URI:http://test/824
-- URI:http://test/825
-- URI:http://test/826
-- URI:http://test/827
-- URI:http://test/828
-- URI:http://test/829
-- URI:http://test/830
-- URI:http://test/831
-- URI:http://test/832
-- URI:http://test/833
-- URI:http://test/834
-- URI:http://test/835
-- URI:http://test/836
-- URI:http://test/837
-- URI:http://test/838
-- URI:http://test/839
-- URI:http://test/840
-- URI:http://test/841
-- URI:http://test/842
-- URI:http://test/843
-- URI:http://test/844
-- URI:http://test/845
-- URI:http://test/846
-- URI:http://test/847
-- URI:http://test/848
-- URI:http://test/849
-- URI:http://test/850
-- URI:http://test/851
-- URI:http://test/852
-- URI:http://test/853
-- URI:http://test/854
-- URI:http://test/855
-- URI:http://test/856
-- URI:http://test/857
-- URI:http://test/858
-- URI:http://test/859
-- URI:http://test/860
-- URI:http://test/861
-- URI:http://test/862
-- URI:http://test/863
-- URI:http://test/864
-- URI:http://test/865
-- URI:http://test/866
-- URI:http://test/867
-- URI:http://test/868
-- URI:http://test/869
-- URI:http://test/870
-- URI:http://test/871
-- URI:http://test/872
-- URI:http://test/873
-- URI:http://test/874
-- URI:http://test/875
-- URI:http://test/876
-- URI:http://test/877
-- URI:http://test/878
-- URI:http://test/879
-- URI:http://test/880
-- URI:http://test/881
-- URI:http://test/882
-- URI:http://test/883
-- URI:http://test/884
-- URI:http://test/885
-- URI:http://test/886
-- URI:http://test/887
-- URI:http://test/888
-- URI:http://test/889
-- URI:http://test/890
-- URI:http://test/891
-- URI:http://test/892
-- URI:http://test/893
-- URI:http://test/894
-- URI:http://test/895
-- URI:http://test/896
-- URI:http://test/897
-- URI:http://test/898
-- URI:http://test/899
-- URI:http://test/900
-- URI:http://test/901
-- URI:http://test/902
-- URI:http://test/903
-- URI:http://test/904
-- URI:http://test/905
-- URI:http://test/906
-- URI:http://test/907
-- URI:http://test/908
-- URI:http://test/909
-- URI:http://test/910
-- URI:http://test/911
-- URI:http://test/912
-- URI:http://test/913
-- URI:http://test/914
-- URI:http://test/915
-- URI:http://test/916
-- URI:http://test/917
-- URI:http://test/918
-- URI:http://test/919
-- URI:http://test/920
-- URI:http://test/921
-- URI:http://test/922
-- URI:http://test/923
-- URI:http://test/924
-- URI:http://test/925
-- URI:http://test/926
-- URI:http://test/927
-- URI:http://test/928
-- URI:http://test/929
-- URI:http://test/930
-- URI:http://test/931
-- URI:http://test/932
-- URI:http://test/933
-- URI:http://test/934
-- URI:http://test/935
-- URI:http://test/936
-- URI:http://test/937
-- URI:http://test/938
-- URI:http://test/939
-- URI:http://test/940
-- URI:http://test/941
-- URI:http://test/942
-- URI:http://test/943
-- URI:http://test/944
-- URI:http://test/945
-- URI:http://test/946
-- URI:http://test/947
-- URI:http://test/948
-- URI:http://test/949
-- URI:http://test/950
-- URI:http://test/951
-- URI:http://test/952
-- URI:http://test/953
-- URI:http://test/954
-- URI:http://test/955
-- URI:http://test/956
-- URI:http://test/957
-- URI:http://test/958
-- URI:http://test/959
-- URI:http://test/960
-- URI:http://test/961
-- URI:http://test/962
-- URI:http://test/963
-- URI:http://test/964
-- URI:http://test/965
-- URI:http://test/966
-- URI:http://test/967
-- URI:http://test/968
-- URI:http://test/969
-- URI:http://test/970
-- URI:http://test/971
-- URI:http://test/972
-- URI:http://test/973
-- URI:http://test/974
-- URI:http://test/975
-- URI:http://test/976
-- URI:http://test/977
-- URI:http://test/978
-- URI:http://test/979
-- URI:http://test/980
-- URI:http://test/981
-- URI:http://test/982
-- URI:http://test/983
-- URI:http://test/984
-- URI:http://test/985
-- URI:http://test/986
-- URI:http://test/987
-- URI:http://test/988
-- URI:http://test/989
-- URI:http://test/990
-- URI:http://test/991
-- URI:http://test/992
-- URI:http://test/993
-- URI:http://test/994
-- URI:http://test/995
-- URI:http://test/996
-- URI:http://test/997
-- URI:http://test/998
-- URI:http://test/999
-- URI:http://test/1000
-- URI:http://test/1001
-- URI:http://test/1002
-- URI:http://test/1003
-- URI:http://test/1004
-- URI:http://test/1005
-- URI:http://test/1006
-- URI:http://test/1007
-- URI:http://test/1008
-- URI:http://test/1009
-- URI:http://test/1010
-- URI:http://test/1011
-- URI:http://test/1012
-- URI:http://test/1013
-- URI:http://test/1014
-- URI:http://test/1015
-- URI:http://test/1016
-- URI:http://test/1017
-- URI:http://test/1018
-- URI:http://test/1019
-- URI:http://test/1020
-- URI:http://test/1021
-- URI:http://test/1022
-- URI:http://test/1023
-- URI:http://test/1024
-- Excluded:
-- IP:11.0.0.0/255.255.255.255
-- IP:11.0.0.1/255.255.255.255
-- IP:11.0.0.2/255.255.255.255
-- IP:11.0.0.3/255.255.255.255
-- IP:11.0.0.4/255.255.255.255
-- IP:11.0.0.5/255.255.255.255
-- IP:11.0.0.6/255.255.255.255
-- IP:11.0.0.7/255.255.255.255
-- IP:11.0.0.8/255.255.255.255
-- IP:11.0.0.9/255.255.255.255
-- IP:11.0.0.10/255.255.255.255
-- IP:11.0.0.11/255.255.255.255
-- IP:11.0.0.12/255.255.255.255
-- IP:11.0.0.13/255.255.255.255
-- IP:11.0.0.14/255.255.255.255
-- IP:11.0.0.15/255.255.255.255
-- IP:11.0.0.16/255.255.255.255
-- IP:11.0.0.17/255.255.255.255
-- IP:11.0.0.18/255.255.255.255
-- IP:11.0.0.19/255.255.255.255
-- IP:11.0.0.20/255.255.255.255
-- IP:11.0.0.21/255.255.255.255
-- IP:11.0.0.22/255.255.255.255
-- IP:11.0.0.23/255.255.255.255
-- IP:11.0.0.24/255.255.255.255
-- IP:11.0.0.25/255.255.255.255
-- IP:11.0.0.26/255.255.255.255
-- IP:11.0.0.27/255.255.255.255
-- IP:11.0.0.28/255.255.255.255
-- IP:11.0.0.29/255.255.255.255
-- IP:11.0.0.30/255.255.255.255
-- IP:11.0.0.31/255.255.255.255
-- IP:11.0.0.32/255.255.255.255
-- IP:11.0.0.33/255.255.255.255
-- IP:11.0.0.34/255.255.255.255
-- IP:11.0.0.35/255.255.255.255
-- IP:11.0.0.36/255.255.255.255
-- IP:11.0.0.37/255.255.255.255
-- IP:11.0.0.38/255.255.255.255
-- IP:11.0.0.39/255.255.255.255
-- IP:11.0.0.40/255.255.255.255
-- IP:11.0.0.41/255.255.255.255
-- IP:11.0.0.42/255.255.255.255
-- IP:11.0.0.43/255.255.255.255
-- IP:11.0.0.44/255.255.255.255
-- IP:11.0.0.45/255.255.255.255
-- IP:11.0.0.46/255.255.255.255
-- IP:11.0.0.47/255.255.255.255
-- IP:11.0.0.48/255.255.255.255
-- IP:11.0.0.49/255.255.255.255
-- IP:11.0.0.50/255.255.255.255
-- IP:11.0.0.51/255.255.255.255
-- IP:11.0.0.52/255.255.255.255
-- IP:11.0.0.53/255.255.255.255
-- IP:11.0.0.54/255.255.255.255
-- IP:11.0.0.55/255.255.255.255
-- IP:11.0.0.56/255.255.255.255
-- IP:11.0.0.57/255.255.255.255
-- IP:11.0.0.58/255.255.255.255
-- IP:11.0.0.59/255.255.255.255
-- IP:11.0.0.60/255.255.255.255
-- IP:11.0.0.61/255.255.255.255
-- IP:11.0.0.62/255.255.255.255
-- IP:11.0.0.63/255.255.255.255
-- IP:11.0.0.64/255.255.255.255
-- IP:11.0.0.65/255.255.255.255
-- IP:11.0.0.66/255.255.255.255
-- IP:11.0.0.67/255.255.255.255
-- IP:11.0.0.68/255.255.255.255
-- IP:11.0.0.69/255.255.255.255
-- IP:11.0.0.70/255.255.255.255
-- IP:11.0.0.71/255.255.255.255
-- IP:11.0.0.72/255.255.255.255
-- IP:11.0.0.73/255.255.255.255
-- IP:11.0.0.74/255.255.255.255
-- IP:11.0.0.75/255.255.255.255
-- IP:11.0.0.76/255.255.255.255
-- IP:11.0.0.77/255.255.255.255
-- IP:11.0.0.78/255.255.255.255
-- IP:11.0.0.79/255.255.255.255
-- IP:11.0.0.80/255.255.255.255
-- IP:11.0.0.81/255.255.255.255
-- IP:11.0.0.82/255.255.255.255
-- IP:11.0.0.83/255.255.255.255
-- IP:11.0.0.84/255.255.255.255
-- IP:11.0.0.85/255.255.255.255
-- IP:11.0.0.86/255.255.255.255
-- IP:11.0.0.87/255.255.255.255
-- IP:11.0.0.88/255.255.255.255
-- IP:11.0.0.89/255.255.255.255
-- IP:11.0.0.90/255.255.255.255
-- IP:11.0.0.91/255.255.255.255
-- IP:11.0.0.92/255.255.255.255
-- IP:11.0.0.93/255.255.255.255
-- IP:11.0.0.94/255.255.255.255
-- IP:11.0.0.95/255.255.255.255
-- IP:11.0.0.96/255.255.255.255
-- IP:11.0.0.97/255.255.255.255
-- IP:11.0.0.98/255.255.255.255
-- IP:11.0.0.99/255.255.255.255
-- IP:11.0.0.100/255.255.255.255
-- IP:11.0.0.101/255.255.255.255
-- IP:11.0.0.102/255.255.255.255
-- IP:11.0.0.103/255.255.255.255
-- IP:11.0.0.104/255.255.255.255
-- IP:11.0.0.105/255.255.255.255
-- IP:11.0.0.106/255.255.255.255
-- IP:11.0.0.107/255.255.255.255
-- IP:11.0.0.108/255.255.255.255
-- IP:11.0.0.109/255.255.255.255
-- IP:11.0.0.110/255.255.255.255
-- IP:11.0.0.111/255.255.255.255
-- IP:11.0.0.112/255.255.255.255
-- IP:11.0.0.113/255.255.255.255
-- IP:11.0.0.114/255.255.255.255
-- IP:11.0.0.115/255.255.255.255
-- IP:11.0.0.116/255.255.255.255
-- IP:11.0.0.117/255.255.255.255
-- IP:11.0.0.118/255.255.255.255
-- IP:11.0.0.119/255.255.255.255
-- IP:11.0.0.120/255.255.255.255
-- IP:11.0.0.121/255.255.255.255
-- IP:11.0.0.122/255.255.255.255
-- IP:11.0.0.123/255.255.255.255
-- IP:11.0.0.124/255.255.255.255
-- IP:11.0.0.125/255.255.255.255
-- IP:11.0.0.126/255.255.255.255
-- IP:11.0.0.127/255.255.255.255
-- IP:11.0.0.128/255.255.255.255
-- IP:11.0.0.129/255.255.255.255
-- IP:11.0.0.130/255.255.255.255
-- IP:11.0.0.131/255.255.255.255
-- IP:11.0.0.132/255.255.255.255
-- IP:11.0.0.133/255.255.255.255
-- IP:11.0.0.134/255.255.255.255
-- IP:11.0.0.135/255.255.255.255
-- IP:11.0.0.136/255.255.255.255
-- IP:11.0.0.137/255.255.255.255
-- IP:11.0.0.138/255.255.255.255
-- IP:11.0.0.139/255.255.255.255
-- IP:11.0.0.140/255.255.255.255
-- IP:11.0.0.141/255.255.255.255
-- IP:11.0.0.142/255.255.255.255
-- IP:11.0.0.143/255.255.255.255
-- IP:11.0.0.144/255.255.255.255
-- IP:11.0.0.145/255.255.255.255
-- IP:11.0.0.146/255.255.255.255
-- IP:11.0.0.147/255.255.255.255
-- IP:11.0.0.148/255.255.255.255
-- IP:11.0.0.149/255.255.255.255
-- IP:11.0.0.150/255.255.255.255
-- IP:11.0.0.151/255.255.255.255
-- IP:11.0.0.152/255.255.255.255
-- IP:11.0.0.153/255.255.255.255
-- IP:11.0.0.154/255.255.255.255
-- IP:11.0.0.155/255.255.255.255
-- IP:11.0.0.156/255.255.255.255
-- IP:11.0.0.157/255.255.255.255
-- IP:11.0.0.158/255.255.255.255
-- IP:11.0.0.159/255.255.255.255
-- IP:11.0.0.160/255.255.255.255
-- IP:11.0.0.161/255.255.255.255
-- IP:11.0.0.162/255.255.255.255
-- IP:11.0.0.163/255.255.255.255
-- IP:11.0.0.164/255.255.255.255
-- IP:11.0.0.165/255.255.255.255
-- IP:11.0.0.166/255.255.255.255
-- IP:11.0.0.167/255.255.255.255
-- IP:11.0.0.168/255.255.255.255
-- IP:11.0.0.169/255.255.255.255
-- IP:11.0.0.170/255.255.255.255
-- IP:11.0.0.171/255.255.255.255
-- IP:11.0.0.172/255.255.255.255
-- IP:11.0.0.173/255.255.255.255
-- IP:11.0.0.174/255.255.255.255
-- IP:11.0.0.175/255.255.255.255
-- IP:11.0.0.176/255.255.255.255
-- IP:11.0.0.177/255.255.255.255
-- IP:11.0.0.178/255.255.255.255
-- IP:11.0.0.179/255.255.255.255
-- IP:11.0.0.180/255.255.255.255
-- IP:11.0.0.181/255.255.255.255
-- IP:11.0.0.182/255.255.255.255
-- IP:11.0.0.183/255.255.255.255
-- IP:11.0.0.184/255.255.255.255
-- IP:11.0.0.185/255.255.255.255
-- IP:11.0.0.186/255.255.255.255
-- IP:11.0.0.187/255.255.255.255
-- IP:11.0.0.188/255.255.255.255
-- IP:11.0.0.189/255.255.255.255
-- IP:11.0.0.190/255.255.255.255
-- IP:11.0.0.191/255.255.255.255
-- IP:11.0.0.192/255.255.255.255
-- IP:11.0.0.193/255.255.255.255
-- IP:11.0.0.194/255.255.255.255
-- IP:11.0.0.195/255.255.255.255
-- IP:11.0.0.196/255.255.255.255
-- IP:11.0.0.197/255.255.255.255
-- IP:11.0.0.198/255.255.255.255
-- IP:11.0.0.199/255.255.255.255
-- IP:11.0.0.200/255.255.255.255
-- IP:11.0.0.201/255.255.255.255
-- IP:11.0.0.202/255.255.255.255
-- IP:11.0.0.203/255.255.255.255
-- IP:11.0.0.204/255.255.255.255
-- IP:11.0.0.205/255.255.255.255
-- IP:11.0.0.206/255.255.255.255
-- IP:11.0.0.207/255.255.255.255
-- IP:11.0.0.208/255.255.255.255
-- IP:11.0.0.209/255.255.255.255
-- IP:11.0.0.210/255.255.255.255
-- IP:11.0.0.211/255.255.255.255
-- IP:11.0.0.212/255.255.255.255
-- IP:11.0.0.213/255.255.255.255
-- IP:11.0.0.214/255.255.255.255
-- IP:11.0.0.215/255.255.255.255
-- IP:11.0.0.216/255.255.255.255
-- IP:11.0.0.217/255.255.255.255
-- IP:11.0.0.218/255.255.255.255
-- IP:11.0.0.219/255.255.255.255
-- IP:11.0.0.220/255.255.255.255
-- IP:11.0.0.221/255.255.255.255
-- IP:11.0.0.222/255.255.255.255
-- IP:11.0.0.223/255.255.255.255
-- IP:11.0.0.224/255.255.255.255
-- IP:11.0.0.225/255.255.255.255
-- IP:11.0.0.226/255.255.255.255
-- IP:11.0.0.227/255.255.255.255
-- IP:11.0.0.228/255.255.255.255
-- IP:11.0.0.229/255.255.255.255
-- IP:11.0.0.230/255.255.255.255
-- IP:11.0.0.231/255.255.255.255
-- IP:11.0.0.232/255.255.255.255
-- IP:11.0.0.233/255.255.255.255
-- IP:11.0.0.234/255.255.255.255
-- IP:11.0.0.235/255.255.255.255
-- IP:11.0.0.236/255.255.255.255
-- IP:11.0.0.237/255.255.255.255
-- IP:11.0.0.238/255.255.255.255
-- IP:11.0.0.239/255.255.255.255
-- IP:11.0.0.240/255.255.255.255
-- IP:11.0.0.241/255.255.255.255
-- IP:11.0.0.242/255.255.255.255
-- IP:11.0.0.243/255.255.255.255
-- IP:11.0.0.244/255.255.255.255
-- IP:11.0.0.245/255.255.255.255
-- IP:11.0.0.246/255.255.255.255
-- IP:11.0.0.247/255.255.255.255
-- IP:11.0.0.248/255.255.255.255
-- IP:11.0.0.249/255.255.255.255
-- IP:11.0.0.250/255.255.255.255
-- IP:11.0.0.251/255.255.255.255
-- IP:11.0.0.252/255.255.255.255
-- IP:11.0.0.253/255.255.255.255
-- IP:11.0.0.254/255.255.255.255
-- IP:11.0.0.255/255.255.255.255
-- IP:11.0.1.0/255.255.255.255
-- IP:11.0.1.1/255.255.255.255
-- IP:11.0.1.2/255.255.255.255
-- IP:11.0.1.3/255.255.255.255
-- IP:11.0.1.4/255.255.255.255
-- IP:11.0.1.5/255.255.255.255
-- IP:11.0.1.6/255.255.255.255
-- IP:11.0.1.7/255.255.255.255
-- IP:11.0.1.8/255.255.255.255
-- IP:11.0.1.9/255.255.255.255
-- IP:11.0.1.10/255.255.255.255
-- IP:11.0.1.11/255.255.255.255
-- IP:11.0.1.12/255.255.255.255
-- IP:11.0.1.13/255.255.255.255
-- IP:11.0.1.14/255.255.255.255
-- IP:11.0.1.15/255.255.255.255
-- IP:11.0.1.16/255.255.255.255
-- IP:11.0.1.17/255.255.255.255
-- IP:11.0.1.18/255.255.255.255
-- IP:11.0.1.19/255.255.255.255
-- IP:11.0.1.20/255.255.255.255
-- IP:11.0.1.21/255.255.255.255
-- IP:11.0.1.22/255.255.255.255
-- IP:11.0.1.23/255.255.255.255
-- IP:11.0.1.24/255.255.255.255
-- IP:11.0.1.25/255.255.255.255
-- IP:11.0.1.26/255.255.255.255
-- IP:11.0.1.27/255.255.255.255
-- IP:11.0.1.28/255.255.255.255
-- IP:11.0.1.29/255.255.255.255
-- IP:11.0.1.30/255.255.255.255
-- IP:11.0.1.31/255.255.255.255
-- IP:11.0.1.32/255.255.255.255
-- IP:11.0.1.33/255.255.255.255
-- IP:11.0.1.34/255.255.255.255
-- IP:11.0.1.35/255.255.255.255
-- IP:11.0.1.36/255.255.255.255
-- IP:11.0.1.37/255.255.255.255
-- IP:11.0.1.38/255.255.255.255
-- IP:11.0.1.39/255.255.255.255
-- IP:11.0.1.40/255.255.255.255
-- IP:11.0.1.41/255.255.255.255
-- IP:11.0.1.42/255.255.255.255
-- IP:11.0.1.43/255.255.255.255
-- IP:11.0.1.44/255.255.255.255
-- IP:11.0.1.45/255.255.255.255
-- IP:11.0.1.46/255.255.255.255
-- IP:11.0.1.47/255.255.255.255
-- IP:11.0.1.48/255.255.255.255
-- IP:11.0.1.49/255.255.255.255
-- IP:11.0.1.50/255.255.255.255
-- IP:11.0.1.51/255.255.255.255
-- IP:11.0.1.52/255.255.255.255
-- IP:11.0.1.53/255.255.255.255
-- IP:11.0.1.54/255.255.255.255
-- IP:11.0.1.55/255.255.255.255
-- IP:11.0.1.56/255.255.255.255
-- IP:11.0.1.57/255.255.255.255
-- IP:11.0.1.58/255.255.255.255
-- IP:11.0.1.59/255.255.255.255
-- IP:11.0.1.60/255.255.255.255
-- IP:11.0.1.61/255.255.255.255
-- IP:11.0.1.62/255.255.255.255
-- IP:11.0.1.63/255.255.255.255
-- IP:11.0.1.64/255.255.255.255
-- IP:11.0.1.65/255.255.255.255
-- IP:11.0.1.66/255.255.255.255
-- IP:11.0.1.67/255.255.255.255
-- IP:11.0.1.68/255.255.255.255
-- IP:11.0.1.69/255.255.255.255
-- IP:11.0.1.70/255.255.255.255
-- IP:11.0.1.71/255.255.255.255
-- IP:11.0.1.72/255.255.255.255
-- IP:11.0.1.73/255.255.255.255
-- IP:11.0.1.74/255.255.255.255
-- IP:11.0.1.75/255.255.255.255
-- IP:11.0.1.76/255.255.255.255
-- IP:11.0.1.77/255.255.255.255
-- IP:11.0.1.78/255.255.255.255
-- IP:11.0.1.79/255.255.255.255
-- IP:11.0.1.80/255.255.255.255
-- IP:11.0.1.81/255.255.255.255
-- IP:11.0.1.82/255.255.255.255
-- IP:11.0.1.83/255.255.255.255
-- IP:11.0.1.84/255.255.255.255
-- IP:11.0.1.85/255.255.255.255
-- IP:11.0.1.86/255.255.255.255
-- IP:11.0.1.87/255.255.255.255
-- IP:11.0.1.88/255.255.255.255
-- IP:11.0.1.89/255.255.255.255
-- IP:11.0.1.90/255.255.255.255
-- IP:11.0.1.91/255.255.255.255
-- IP:11.0.1.92/255.255.255.255
-- IP:11.0.1.93/255.255.255.255
-- IP:11.0.1.94/255.255.255.255
-- IP:11.0.1.95/255.255.255.255
-- IP:11.0.1.96/255.255.255.255
-- IP:11.0.1.97/255.255.255.255
-- IP:11.0.1.98/255.255.255.255
-- IP:11.0.1.99/255.255.255.255
-- IP:11.0.1.100/255.255.255.255
-- IP:11.0.1.101/255.255.255.255
-- IP:11.0.1.102/255.255.255.255
-- IP:11.0.1.103/255.255.255.255
-- IP:11.0.1.104/255.255.255.255
-- IP:11.0.1.105/255.255.255.255
-- IP:11.0.1.106/255.255.255.255
-- IP:11.0.1.107/255.255.255.255
-- IP:11.0.1.108/255.255.255.255
-- IP:11.0.1.109/255.255.255.255
-- IP:11.0.1.110/255.255.255.255
-- IP:11.0.1.111/255.255.255.255
-- IP:11.0.1.112/255.255.255.255
-- IP:11.0.1.113/255.255.255.255
-- IP:11.0.1.114/255.255.255.255
-- IP:11.0.1.115/255.255.255.255
-- IP:11.0.1.116/255.255.255.255
-- IP:11.0.1.117/255.255.255.255
-- IP:11.0.1.118/255.255.255.255
-- IP:11.0.1.119/255.255.255.255
-- IP:11.0.1.120/255.255.255.255
-- IP:11.0.1.121/255.255.255.255
-- IP:11.0.1.122/255.255.255.255
-- IP:11.0.1.123/255.255.255.255
-- IP:11.0.1.124/255.255.255.255
-- IP:11.0.1.125/255.255.255.255
-- IP:11.0.1.126/255.255.255.255
-- IP:11.0.1.127/255.255.255.255
-- IP:11.0.1.128/255.255.255.255
-- IP:11.0.1.129/255.255.255.255
-- IP:11.0.1.130/255.255.255.255
-- IP:11.0.1.131/255.255.255.255
-- IP:11.0.1.132/255.255.255.255
-- IP:11.0.1.133/255.255.255.255
-- IP:11.0.1.134/255.255.255.255
-- IP:11.0.1.135/255.255.255.255
-- IP:11.0.1.136/255.255.255.255
-- IP:11.0.1.137/255.255.255.255
-- IP:11.0.1.138/255.255.255.255
-- IP:11.0.1.139/255.255.255.255
-- IP:11.0.1.140/255.255.255.255
-- IP:11.0.1.141/255.255.255.255
-- IP:11.0.1.142/255.255.255.255
-- IP:11.0.1.143/255.255.255.255
-- IP:11.0.1.144/255.255.255.255
-- IP:11.0.1.145/255.255.255.255
-- IP:11.0.1.146/255.255.255.255
-- IP:11.0.1.147/255.255.255.255
-- IP:11.0.1.148/255.255.255.255
-- IP:11.0.1.149/255.255.255.255
-- IP:11.0.1.150/255.255.255.255
-- IP:11.0.1.151/255.255.255.255
-- IP:11.0.1.152/255.255.255.255
-- IP:11.0.1.153/255.255.255.255
-- IP:11.0.1.154/255.255.255.255
-- IP:11.0.1.155/255.255.255.255
-- IP:11.0.1.156/255.255.255.255
-- IP:11.0.1.157/255.255.255.255
-- IP:11.0.1.158/255.255.255.255
-- IP:11.0.1.159/255.255.255.255
-- IP:11.0.1.160/255.255.255.255
-- IP:11.0.1.161/255.255.255.255
-- IP:11.0.1.162/255.255.255.255
-- IP:11.0.1.163/255.255.255.255
-- IP:11.0.1.164/255.255.255.255
-- IP:11.0.1.165/255.255.255.255
-- IP:11.0.1.166/255.255.255.255
-- IP:11.0.1.167/255.255.255.255
-- IP:11.0.1.168/255.255.255.255
-- IP:11.0.1.169/255.255.255.255
-- IP:11.0.1.170/255.255.255.255
-- IP:11.0.1.171/255.255.255.255
-- IP:11.0.1.172/255.255.255.255
-- IP:11.0.1.173/255.255.255.255
-- IP:11.0.1.174/255.255.255.255
-- IP:11.0.1.175/255.255.255.255
-- IP:11.0.1.176/255.255.255.255
-- IP:11.0.1.177/255.255.255.255
-- IP:11.0.1.178/255.255.255.255
-- IP:11.0.1.179/255.255.255.255
-- IP:11.0.1.180/255.255.255.255
-- IP:11.0.1.181/255.255.255.255
-- IP:11.0.1.182/255.255.255.255
-- IP:11.0.1.183/255.255.255.255
-- IP:11.0.1.184/255.255.255.255
-- IP:11.0.1.185/255.255.255.255
-- IP:11.0.1.186/255.255.255.255
-- IP:11.0.1.187/255.255.255.255
-- IP:11.0.1.188/255.255.255.255
-- IP:11.0.1.189/255.255.255.255
-- IP:11.0.1.190/255.255.255.255
-- IP:11.0.1.191/255.255.255.255
-- IP:11.0.1.192/255.255.255.255
-- IP:11.0.1.193/255.255.255.255
-- IP:11.0.1.194/255.255.255.255
-- IP:11.0.1.195/255.255.255.255
-- IP:11.0.1.196/255.255.255.255
-- IP:11.0.1.197/255.255.255.255
-- IP:11.0.1.198/255.255.255.255
-- IP:11.0.1.199/255.255.255.255
-- IP:11.0.1.200/255.255.255.255
-- IP:11.0.1.201/255.255.255.255
-- IP:11.0.1.202/255.255.255.255
-- IP:11.0.1.203/255.255.255.255
-- IP:11.0.1.204/255.255.255.255
-- IP:11.0.1.205/255.255.255.255
-- IP:11.0.1.206/255.255.255.255
-- IP:11.0.1.207/255.255.255.255
-- IP:11.0.1.208/255.255.255.255
-- IP:11.0.1.209/255.255.255.255
-- IP:11.0.1.210/255.255.255.255
-- IP:11.0.1.211/255.255.255.255
-- IP:11.0.1.212/255.255.255.255
-- IP:11.0.1.213/255.255.255.255
-- IP:11.0.1.214/255.255.255.255
-- IP:11.0.1.215/255.255.255.255
-- IP:11.0.1.216/255.255.255.255
-- IP:11.0.1.217/255.255.255.255
-- IP:11.0.1.218/255.255.255.255
-- IP:11.0.1.219/255.255.255.255
-- IP:11.0.1.220/255.255.255.255
-- IP:11.0.1.221/255.255.255.255
-- IP:11.0.1.222/255.255.255.255
-- IP:11.0.1.223/255.255.255.255
-- IP:11.0.1.224/255.255.255.255
-- IP:11.0.1.225/255.255.255.255
-- IP:11.0.1.226/255.255.255.255
-- IP:11.0.1.227/255.255.255.255
-- IP:11.0.1.228/255.255.255.255
-- IP:11.0.1.229/255.255.255.255
-- IP:11.0.1.230/255.255.255.255
-- IP:11.0.1.231/255.255.255.255
-- IP:11.0.1.232/255.255.255.255
-- IP:11.0.1.233/255.255.255.255
-- IP:11.0.1.234/255.255.255.255
-- IP:11.0.1.235/255.255.255.255
-- IP:11.0.1.236/255.255.255.255
-- IP:11.0.1.237/255.255.255.255
-- IP:11.0.1.238/255.255.255.255
-- IP:11.0.1.239/255.255.255.255
-- IP:11.0.1.240/255.255.255.255
-- IP:11.0.1.241/255.255.255.255
-- IP:11.0.1.242/255.255.255.255
-- IP:11.0.1.243/255.255.255.255
-- IP:11.0.1.244/255.255.255.255
-- IP:11.0.1.245/255.255.255.255
-- IP:11.0.1.246/255.255.255.255
-- IP:11.0.1.247/255.255.255.255
-- IP:11.0.1.248/255.255.255.255
-- IP:11.0.1.249/255.255.255.255
-- IP:11.0.1.250/255.255.255.255
-- IP:11.0.1.251/255.255.255.255
-- IP:11.0.1.252/255.255.255.255
-- IP:11.0.1.253/255.255.255.255
-- IP:11.0.1.254/255.255.255.255
-- IP:11.0.1.255/255.255.255.255
-- IP:11.0.2.0/255.255.255.255
-- IP:11.0.2.1/255.255.255.255
-- IP:11.0.2.2/255.255.255.255
-- IP:11.0.2.3/255.255.255.255
-- IP:11.0.2.4/255.255.255.255
-- IP:11.0.2.5/255.255.255.255
-- IP:11.0.2.6/255.255.255.255
-- IP:11.0.2.7/255.255.255.255
-- IP:11.0.2.8/255.255.255.255
-- IP:11.0.2.9/255.255.255.255
-- IP:11.0.2.10/255.255.255.255
-- IP:11.0.2.11/255.255.255.255
-- IP:11.0.2.12/255.255.255.255
-- IP:11.0.2.13/255.255.255.255
-- IP:11.0.2.14/255.255.255.255
-- IP:11.0.2.15/255.255.255.255
-- IP:11.0.2.16/255.255.255.255
-- IP:11.0.2.17/255.255.255.255
-- IP:11.0.2.18/255.255.255.255
-- IP:11.0.2.19/255.255.255.255
-- IP:11.0.2.20/255.255.255.255
-- IP:11.0.2.21/255.255.255.255
-- IP:11.0.2.22/255.255.255.255
-- IP:11.0.2.23/255.255.255.255
-- IP:11.0.2.24/255.255.255.255
-- IP:11.0.2.25/255.255.255.255
-- IP:11.0.2.26/255.255.255.255
-- IP:11.0.2.27/255.255.255.255
-- IP:11.0.2.28/255.255.255.255
-- IP:11.0.2.29/255.255.255.255
-- IP:11.0.2.30/255.255.255.255
-- IP:11.0.2.31/255.255.255.255
-- IP:11.0.2.32/255.255.255.255
-- IP:11.0.2.33/255.255.255.255
-- IP:11.0.2.34/255.255.255.255
-- IP:11.0.2.35/255.255.255.255
-- IP:11.0.2.36/255.255.255.255
-- IP:11.0.2.37/255.255.255.255
-- IP:11.0.2.38/255.255.255.255
-- IP:11.0.2.39/255.255.255.255
-- IP:11.0.2.40/255.255.255.255
-- IP:11.0.2.41/255.255.255.255
-- IP:11.0.2.42/255.255.255.255
-- IP:11.0.2.43/255.255.255.255
-- IP:11.0.2.44/255.255.255.255
-- IP:11.0.2.45/255.255.255.255
-- IP:11.0.2.46/255.255.255.255
-- IP:11.0.2.47/255.255.255.255
-- IP:11.0.2.48/255.255.255.255
-- IP:11.0.2.49/255.255.255.255
-- IP:11.0.2.50/255.255.255.255
-- IP:11.0.2.51/255.255.255.255
-- IP:11.0.2.52/255.255.255.255
-- IP:11.0.2.53/255.255.255.255
-- IP:11.0.2.54/255.255.255.255
-- IP:11.0.2.55/255.255.255.255
-- IP:11.0.2.56/255.255.255.255
-- IP:11.0.2.57/255.255.255.255
-- IP:11.0.2.58/255.255.255.255
-- IP:11.0.2.59/255.255.255.255
-- IP:11.0.2.60/255.255.255.255
-- IP:11.0.2.61/255.255.255.255
-- IP:11.0.2.62/255.255.255.255
-- IP:11.0.2.63/255.255.255.255
-- IP:11.0.2.64/255.255.255.255
-- IP:11.0.2.65/255.255.255.255
-- IP:11.0.2.66/255.255.255.255
-- IP:11.0.2.67/255.255.255.255
-- IP:11.0.2.68/255.255.255.255
-- IP:11.0.2.69/255.255.255.255
-- IP:11.0.2.70/255.255.255.255
-- IP:11.0.2.71/255.255.255.255
-- IP:11.0.2.72/255.255.255.255
-- IP:11.0.2.73/255.255.255.255
-- IP:11.0.2.74/255.255.255.255
-- IP:11.0.2.75/255.255.255.255
-- IP:11.0.2.76/255.255.255.255
-- IP:11.0.2.77/255.255.255.255
-- IP:11.0.2.78/255.255.255.255
-- IP:11.0.2.79/255.255.255.255
-- IP:11.0.2.80/255.255.255.255
-- IP:11.0.2.81/255.255.255.255
-- IP:11.0.2.82/255.255.255.255
-- IP:11.0.2.83/255.255.255.255
-- IP:11.0.2.84/255.255.255.255
-- IP:11.0.2.85/255.255.255.255
-- IP:11.0.2.86/255.255.255.255
-- IP:11.0.2.87/255.255.255.255
-- IP:11.0.2.88/255.255.255.255
-- IP:11.0.2.89/255.255.255.255
-- IP:11.0.2.90/255.255.255.255
-- IP:11.0.2.91/255.255.255.255
-- IP:11.0.2.92/255.255.255.255
-- IP:11.0.2.93/255.255.255.255
-- IP:11.0.2.94/255.255.255.255
-- IP:11.0.2.95/255.255.255.255
-- IP:11.0.2.96/255.255.255.255
-- IP:11.0.2.97/255.255.255.255
-- IP:11.0.2.98/255.255.255.255
-- IP:11.0.2.99/255.255.255.255
-- IP:11.0.2.100/255.255.255.255
-- IP:11.0.2.101/255.255.255.255
-- IP:11.0.2.102/255.255.255.255
-- IP:11.0.2.103/255.255.255.255
-- IP:11.0.2.104/255.255.255.255
-- IP:11.0.2.105/255.255.255.255
-- IP:11.0.2.106/255.255.255.255
-- IP:11.0.2.107/255.255.255.255
-- IP:11.0.2.108/255.255.255.255
-- IP:11.0.2.109/255.255.255.255
-- IP:11.0.2.110/255.255.255.255
-- IP:11.0.2.111/255.255.255.255
-- IP:11.0.2.112/255.255.255.255
-- IP:11.0.2.113/255.255.255.255
-- IP:11.0.2.114/255.255.255.255
-- IP:11.0.2.115/255.255.255.255
-- IP:11.0.2.116/255.255.255.255
-- IP:11.0.2.117/255.255.255.255
-- IP:11.0.2.118/255.255.255.255
-- IP:11.0.2.119/255.255.255.255
-- IP:11.0.2.120/255.255.255.255
-- IP:11.0.2.121/255.255.255.255
-- IP:11.0.2.122/255.255.255.255
-- IP:11.0.2.123/255.255.255.255
-- IP:11.0.2.124/255.255.255.255
-- IP:11.0.2.125/255.255.255.255
-- IP:11.0.2.126/255.255.255.255
-- IP:11.0.2.127/255.255.255.255
-- IP:11.0.2.128/255.255.255.255
-- IP:11.0.2.129/255.255.255.255
-- IP:11.0.2.130/255.255.255.255
-- IP:11.0.2.131/255.255.255.255
-- IP:11.0.2.132/255.255.255.255
-- IP:11.0.2.133/255.255.255.255
-- IP:11.0.2.134/255.255.255.255
-- IP:11.0.2.135/255.255.255.255
-- IP:11.0.2.136/255.255.255.255
-- IP:11.0.2.137/255.255.255.255
-- IP:11.0.2.138/255.255.255.255
-- IP:11.0.2.139/255.255.255.255
-- IP:11.0.2.140/255.255.255.255
-- IP:11.0.2.141/255.255.255.255
-- IP:11.0.2.142/255.255.255.255
-- IP:11.0.2.143/255.255.255.255
-- IP:11.0.2.144/255.255.255.255
-- IP:11.0.2.145/255.255.255.255
-- IP:11.0.2.146/255.255.255.255
-- IP:11.0.2.147/255.255.255.255
-- IP:11.0.2.148/255.255.255.255
-- IP:11.0.2.149/255.255.255.255
-- IP:11.0.2.150/255.255.255.255
-- IP:11.0.2.151/255.255.255.255
-- IP:11.0.2.152/255.255.255.255
-- IP:11.0.2.153/255.255.255.255
-- IP:11.0.2.154/255.255.255.255
-- IP:11.0.2.155/255.255.255.255
-- IP:11.0.2.156/255.255.255.255
-- IP:11.0.2.157/255.255.255.255
-- IP:11.0.2.158/255.255.255.255
-- IP:11.0.2.159/255.255.255.255
-- IP:11.0.2.160/255.255.255.255
-- IP:11.0.2.161/255.255.255.255
-- IP:11.0.2.162/255.255.255.255
-- IP:11.0.2.163/255.255.255.255
-- IP:11.0.2.164/255.255.255.255
-- IP:11.0.2.165/255.255.255.255
-- IP:11.0.2.166/255.255.255.255
-- IP:11.0.2.167/255.255.255.255
-- IP:11.0.2.168/255.255.255.255
-- IP:11.0.2.169/255.255.255.255
-- IP:11.0.2.170/255.255.255.255
-- IP:11.0.2.171/255.255.255.255
-- IP:11.0.2.172/255.255.255.255
-- IP:11.0.2.173/255.255.255.255
-- IP:11.0.2.174/255.255.255.255
-- IP:11.0.2.175/255.255.255.255
-- IP:11.0.2.176/255.255.255.255
-- IP:11.0.2.177/255.255.255.255
-- IP:11.0.2.178/255.255.255.255
-- IP:11.0.2.179/255.255.255.255
-- IP:11.0.2.180/255.255.255.255
-- IP:11.0.2.181/255.255.255.255
-- IP:11.0.2.182/255.255.255.255
-- IP:11.0.2.183/255.255.255.255
-- IP:11.0.2.184/255.255.255.255
-- IP:11.0.2.185/255.255.255.255
-- IP:11.0.2.186/255.255.255.255
-- IP:11.0.2.187/255.255.255.255
-- IP:11.0.2.188/255.255.255.255
-- IP:11.0.2.189/255.255.255.255
-- IP:11.0.2.190/255.255.255.255
-- IP:11.0.2.191/255.255.255.255
-- IP:11.0.2.192/255.255.255.255
-- IP:11.0.2.193/255.255.255.255
-- IP:11.0.2.194/255.255.255.255
-- IP:11.0.2.195/255.255.255.255
-- IP:11.0.2.196/255.255.255.255
-- IP:11.0.2.197/255.255.255.255
-- IP:11.0.2.198/255.255.255.255
-- IP:11.0.2.199/255.255.255.255
-- IP:11.0.2.200/255.255.255.255
-- IP:11.0.2.201/255.255.255.255
-- IP:11.0.2.202/255.255.255.255
-- IP:11.0.2.203/255.255.255.255
-- IP:11.0.2.204/255.255.255.255
-- IP:11.0.2.205/255.255.255.255
-- IP:11.0.2.206/255.255.255.255
-- IP:11.0.2.207/255.255.255.255
-- IP:11.0.2.208/255.255.255.255
-- IP:11.0.2.209/255.255.255.255
-- IP:11.0.2.210/255.255.255.255
-- IP:11.0.2.211/255.255.255.255
-- IP:11.0.2.212/255.255.255.255
-- IP:11.0.2.213/255.255.255.255
-- IP:11.0.2.214/255.255.255.255
-- IP:11.0.2.215/255.255.255.255
-- IP:11.0.2.216/255.255.255.255
-- IP:11.0.2.217/255.255.255.255
-- IP:11.0.2.218/255.255.255.255
-- IP:11.0.2.219/255.255.255.255
-- IP:11.0.2.220/255.255.255.255
-- IP:11.0.2.221/255.255.255.255
-- IP:11.0.2.222/255.255.255.255
-- IP:11.0.2.223/255.255.255.255
-- IP:11.0.2.224/255.255.255.255
-- IP:11.0.2.225/255.255.255.255
-- IP:11.0.2.226/255.255.255.255
-- IP:11.0.2.227/255.255.255.255
-- IP:11.0.2.228/255.255.255.255
-- IP:11.0.2.229/255.255.255.255
-- IP:11.0.2.230/255.255.255.255
-- IP:11.0.2.231/255.255.255.255
-- IP:11.0.2.232/255.255.255.255
-- IP:11.0.2.233/255.255.255.255
-- IP:11.0.2.234/255.255.255.255
-- IP:11.0.2.235/255.255.255.255
-- IP:11.0.2.236/255.255.255.255
-- IP:11.0.2.237/255.255.255.255
-- IP:11.0.2.238/255.255.255.255
-- IP:11.0.2.239/255.255.255.255
-- IP:11.0.2.240/255.255.255.255
-- IP:11.0.2.241/255.255.255.255
-- IP:11.0.2.242/255.255.255.255
-- IP:11.0.2.243/255.255.255.255
-- IP:11.0.2.244/255.255.255.255
-- IP:11.0.2.245/255.255.255.255
-- IP:11.0.2.246/255.255.255.255
-- IP:11.0.2.247/255.255.255.255
-- IP:11.0.2.248/255.255.255.255
-- IP:11.0.2.249/255.255.255.255
-- IP:11.0.2.250/255.255.255.255
-- IP:11.0.2.251/255.255.255.255
-- IP:11.0.2.252/255.255.255.255
-- IP:11.0.2.253/255.255.255.255
-- IP:11.0.2.254/255.255.255.255
-- IP:11.0.2.255/255.255.255.255
-- IP:11.0.3.0/255.255.255.255
-- IP:11.0.3.1/255.255.255.255
-- IP:11.0.3.2/255.255.255.255
-- IP:11.0.3.3/255.255.255.255
-- IP:11.0.3.4/255.255.255.255
-- IP:11.0.3.5/255.255.255.255
-- IP:11.0.3.6/255.255.255.255
-- IP:11.0.3.7/255.255.255.255
-- IP:11.0.3.8/255.255.255.255
-- IP:11.0.3.9/255.255.255.255
-- IP:11.0.3.10/255.255.255.255
-- IP:11.0.3.11/255.255.255.255
-- IP:11.0.3.12/255.255.255.255
-- IP:11.0.3.13/255.255.255.255
-- IP:11.0.3.14/255.255.255.255
-- IP:11.0.3.15/255.255.255.255
-- IP:11.0.3.16/255.255.255.255
-- IP:11.0.3.17/255.255.255.255
-- IP:11.0.3.18/255.255.255.255
-- IP:11.0.3.19/255.255.255.255
-- IP:11.0.3.20/255.255.255.255
-- IP:11.0.3.21/255.255.255.255
-- IP:11.0.3.22/255.255.255.255
-- IP:11.0.3.23/255.255.255.255
-- IP:11.0.3.24/255.255.255.255
-- IP:11.0.3.25/255.255.255.255
-- IP:11.0.3.26/255.255.255.255
-- IP:11.0.3.27/255.255.255.255
-- IP:11.0.3.28/255.255.255.255
-- IP:11.0.3.29/255.255.255.255
-- IP:11.0.3.30/255.255.255.255
-- IP:11.0.3.31/255.255.255.255
-- IP:11.0.3.32/255.255.255.255
-- IP:11.0.3.33/255.255.255.255
-- IP:11.0.3.34/255.255.255.255
-- IP:11.0.3.35/255.255.255.255
-- IP:11.0.3.36/255.255.255.255
-- IP:11.0.3.37/255.255.255.255
-- IP:11.0.3.38/255.255.255.255
-- IP:11.0.3.39/255.255.255.255
-- IP:11.0.3.40/255.255.255.255
-- IP:11.0.3.41/255.255.255.255
-- IP:11.0.3.42/255.255.255.255
-- IP:11.0.3.43/255.255.255.255
-- IP:11.0.3.44/255.255.255.255
-- IP:11.0.3.45/255.255.255.255
-- IP:11.0.3.46/255.255.255.255
-- IP:11.0.3.47/255.255.255.255
-- IP:11.0.3.48/255.255.255.255
-- IP:11.0.3.49/255.255.255.255
-- IP:11.0.3.50/255.255.255.255
-- IP:11.0.3.51/255.255.255.255
-- IP:11.0.3.52/255.255.255.255
-- IP:11.0.3.53/255.255.255.255
-- IP:11.0.3.54/255.255.255.255
-- IP:11.0.3.55/255.255.255.255
-- IP:11.0.3.56/255.255.255.255
-- IP:11.0.3.57/255.255.255.255
-- IP:11.0.3.58/255.255.255.255
-- IP:11.0.3.59/255.255.255.255
-- IP:11.0.3.60/255.255.255.255
-- IP:11.0.3.61/255.255.255.255
-- IP:11.0.3.62/255.255.255.255
-- IP:11.0.3.63/255.255.255.255
-- IP:11.0.3.64/255.255.255.255
-- IP:11.0.3.65/255.255.255.255
-- IP:11.0.3.66/255.255.255.255
-- IP:11.0.3.67/255.255.255.255
-- IP:11.0.3.68/255.255.255.255
-- IP:11.0.3.69/255.255.255.255
-- IP:11.0.3.70/255.255.255.255
-- IP:11.0.3.71/255.255.255.255
-- IP:11.0.3.72/255.255.255.255
-- IP:11.0.3.73/255.255.255.255
-- IP:11.0.3.74/255.255.255.255
-- IP:11.0.3.75/255.255.255.255
-- IP:11.0.3.76/255.255.255.255
-- IP:11.0.3.77/255.255.255.255
-- IP:11.0.3.78/255.255.255.255
-- IP:11.0.3.79/255.255.255.255
-- IP:11.0.3.80/255.255.255.255
-- IP:11.0.3.81/255.255.255.255
-- IP:11.0.3.82/255.255.255.255
-- IP:11.0.3.83/255.255.255.255
-- IP:11.0.3.84/255.255.255.255
-- IP:11.0.3.85/255.255.255.255
-- IP:11.0.3.86/255.255.255.255
-- IP:11.0.3.87/255.255.255.255
-- IP:11.0.3.88/255.255.255.255
-- IP:11.0.3.89/255.255.255.255
-- IP:11.0.3.90/255.255.255.255
-- IP:11.0.3.91/255.255.255.255
-- IP:11.0.3.92/255.255.255.255
-- IP:11.0.3.93/255.255.255.255
-- IP:11.0.3.94/255.255.255.255
-- IP:11.0.3.95/255.255.255.255
-- IP:11.0.3.96/255.255.255.255
-- IP:11.0.3.97/255.255.255.255
-- IP:11.0.3.98/255.255.255.255
-- IP:11.0.3.99/255.255.255.255
-- IP:11.0.3.100/255.255.255.255
-- IP:11.0.3.101/255.255.255.255
-- IP:11.0.3.102/255.255.255.255
-- IP:11.0.3.103/255.255.255.255
-- IP:11.0.3.104/255.255.255.255
-- IP:11.0.3.105/255.255.255.255
-- IP:11.0.3.106/255.255.255.255
-- IP:11.0.3.107/255.255.255.255
-- IP:11.0.3.108/255.255.255.255
-- IP:11.0.3.109/255.255.255.255
-- IP:11.0.3.110/255.255.255.255
-- IP:11.0.3.111/255.255.255.255
-- IP:11.0.3.112/255.255.255.255
-- IP:11.0.3.113/255.255.255.255
-- IP:11.0.3.114/255.255.255.255
-- IP:11.0.3.115/255.255.255.255
-- IP:11.0.3.116/255.255.255.255
-- IP:11.0.3.117/255.255.255.255
-- IP:11.0.3.118/255.255.255.255
-- IP:11.0.3.119/255.255.255.255
-- IP:11.0.3.120/255.255.255.255
-- IP:11.0.3.121/255.255.255.255
-- IP:11.0.3.122/255.255.255.255
-- IP:11.0.3.123/255.255.255.255
-- IP:11.0.3.124/255.255.255.255
-- IP:11.0.3.125/255.255.255.255
-- IP:11.0.3.126/255.255.255.255
-- IP:11.0.3.127/255.255.255.255
-- IP:11.0.3.128/255.255.255.255
-- IP:11.0.3.129/255.255.255.255
-- IP:11.0.3.130/255.255.255.255
-- IP:11.0.3.131/255.255.255.255
-- IP:11.0.3.132/255.255.255.255
-- IP:11.0.3.133/255.255.255.255
-- IP:11.0.3.134/255.255.255.255
-- IP:11.0.3.135/255.255.255.255
-- IP:11.0.3.136/255.255.255.255
-- IP:11.0.3.137/255.255.255.255
-- IP:11.0.3.138/255.255.255.255
-- IP:11.0.3.139/255.255.255.255
-- IP:11.0.3.140/255.255.255.255
-- IP:11.0.3.141/255.255.255.255
-- IP:11.0.3.142/255.255.255.255
-- IP:11.0.3.143/255.255.255.255
-- IP:11.0.3.144/255.255.255.255
-- IP:11.0.3.145/255.255.255.255
-- IP:11.0.3.146/255.255.255.255
-- IP:11.0.3.147/255.255.255.255
-- IP:11.0.3.148/255.255.255.255
-- IP:11.0.3.149/255.255.255.255
-- IP:11.0.3.150/255.255.255.255
-- IP:11.0.3.151/255.255.255.255
-- IP:11.0.3.152/255.255.255.255
-- IP:11.0.3.153/255.255.255.255
-- IP:11.0.3.154/255.255.255.255
-- IP:11.0.3.155/255.255.255.255
-- IP:11.0.3.156/255.255.255.255
-- IP:11.0.3.157/255.255.255.255
-- IP:11.0.3.158/255.255.255.255
-- IP:11.0.3.159/255.255.255.255
-- IP:11.0.3.160/255.255.255.255
-- IP:11.0.3.161/255.255.255.255
-- IP:11.0.3.162/255.255.255.255
-- IP:11.0.3.163/255.255.255.255
-- IP:11.0.3.164/255.255.255.255
-- IP:11.0.3.165/255.255.255.255
-- IP:11.0.3.166/255.255.255.255
-- IP:11.0.3.167/255.255.255.255
-- IP:11.0.3.168/255.255.255.255
-- IP:11.0.3.169/255.255.255.255
-- IP:11.0.3.170/255.255.255.255
-- IP:11.0.3.171/255.255.255.255
-- IP:11.0.3.172/255.255.255.255
-- IP:11.0.3.173/255.255.255.255
-- IP:11.0.3.174/255.255.255.255
-- IP:11.0.3.175/255.255.255.255
-- IP:11.0.3.176/255.255.255.255
-- IP:11.0.3.177/255.255.255.255
-- IP:11.0.3.178/255.255.255.255
-- IP:11.0.3.179/255.255.255.255
-- IP:11.0.3.180/255.255.255.255
-- IP:11.0.3.181/255.255.255.255
-- IP:11.0.3.182/255.255.255.255
-- IP:11.0.3.183/255.255.255.255
-- IP:11.0.3.184/255.255.255.255
-- IP:11.0.3.185/255.255.255.255
-- IP:11.0.3.186/255.255.255.255
-- IP:11.0.3.187/255.255.255.255
-- IP:11.0.3.188/255.255.255.255
-- IP:11.0.3.189/255.255.255.255
-- IP:11.0.3.190/255.255.255.255
-- IP:11.0.3.191/255.255.255.255
-- IP:11.0.3.192/255.255.255.255
-- IP:11.0.3.193/255.255.255.255
-- IP:11.0.3.194/255.255.255.255
-- IP:11.0.3.195/255.255.255.255
-- IP:11.0.3.196/255.255.255.255
-- IP:11.0.3.197/255.255.255.255
-- IP:11.0.3.198/255.255.255.255
-- IP:11.0.3.199/255.255.255.255
-- IP:11.0.3.200/255.255.255.255
-- IP:11.0.3.201/255.255.255.255
-- IP:11.0.3.202/255.255.255.255
-- IP:11.0.3.203/255.255.255.255
-- IP:11.0.3.204/255.255.255.255
-- IP:11.0.3.205/255.255.255.255
-- IP:11.0.3.206/255.255.255.255
-- IP:11.0.3.207/255.255.255.255
-- IP:11.0.3.208/255.255.255.255
-- IP:11.0.3.209/255.255.255.255
-- IP:11.0.3.210/255.255.255.255
-- IP:11.0.3.211/255.255.255.255
-- IP:11.0.3.212/255.255.255.255
-- IP:11.0.3.213/255.255.255.255
-- IP:11.0.3.214/255.255.255.255
-- IP:11.0.3.215/255.255.255.255
-- IP:11.0.3.216/255.255.255.255
-- IP:11.0.3.217/255.255.255.255
-- IP:11.0.3.218/255.255.255.255
-- IP:11.0.3.219/255.255.255.255
-- IP:11.0.3.220/255.255.255.255
-- IP:11.0.3.221/255.255.255.255
-- IP:11.0.3.222/255.255.255.255
-- IP:11.0.3.223/255.255.255.255
-- IP:11.0.3.224/255.255.255.255
-- IP:11.0.3.225/255.255.255.255
-- IP:11.0.3.226/255.255.255.255
-- IP:11.0.3.227/255.255.255.255
-- IP:11.0.3.228/255.255.255.255
-- IP:11.0.3.229/255.255.255.255
-- IP:11.0.3.230/255.255.255.255
-- IP:11.0.3.231/255.255.255.255
-- IP:11.0.3.232/255.255.255.255
-- IP:11.0.3.233/255.255.255.255
-- IP:11.0.3.234/255.255.255.255
-- IP:11.0.3.235/255.255.255.255
-- IP:11.0.3.236/255.255.255.255
-- IP:11.0.3.237/255.255.255.255
-- IP:11.0.3.238/255.255.255.255
-- IP:11.0.3.239/255.255.255.255
-- IP:11.0.3.240/255.255.255.255
-- IP:11.0.3.241/255.255.255.255
-- IP:11.0.3.242/255.255.255.255
-- IP:11.0.3.243/255.255.255.255
-- IP:11.0.3.244/255.255.255.255
-- IP:11.0.3.245/255.255.255.255
-- IP:11.0.3.246/255.255.255.255
-- IP:11.0.3.247/255.255.255.255
-- IP:11.0.3.248/255.255.255.255
-- IP:11.0.3.249/255.255.255.255
-- IP:11.0.3.250/255.255.255.255
-- IP:11.0.3.251/255.255.255.255
-- IP:11.0.3.252/255.255.255.255
-- IP:11.0.3.253/255.255.255.255
-- IP:11.0.3.254/255.255.255.255
-- IP:11.0.3.255/255.255.255.255
-- IP:11.0.4.0/255.255.255.255
-- DirName:CN = x0
-- DirName:CN = x1
-- DirName:CN = x2
-- DirName:CN = x3
-- DirName:CN = x4
-- DirName:CN = x5
-- DirName:CN = x6
-- DirName:CN = x7
-- DirName:CN = x8
-- DirName:CN = x9
-- DirName:CN = x10
-- DirName:CN = x11
-- DirName:CN = x12
-- DirName:CN = x13
-- DirName:CN = x14
-- DirName:CN = x15
-- DirName:CN = x16
-- DirName:CN = x17
-- DirName:CN = x18
-- DirName:CN = x19
-- DirName:CN = x20
-- DirName:CN = x21
-- DirName:CN = x22
-- DirName:CN = x23
-- DirName:CN = x24
-- DirName:CN = x25
-- DirName:CN = x26
-- DirName:CN = x27
-- DirName:CN = x28
-- DirName:CN = x29
-- DirName:CN = x30
-- DirName:CN = x31
-- DirName:CN = x32
-- DirName:CN = x33
-- DirName:CN = x34
-- DirName:CN = x35
-- DirName:CN = x36
-- DirName:CN = x37
-- DirName:CN = x38
-- DirName:CN = x39
-- DirName:CN = x40
-- DirName:CN = x41
-- DirName:CN = x42
-- DirName:CN = x43
-- DirName:CN = x44
-- DirName:CN = x45
-- DirName:CN = x46
-- DirName:CN = x47
-- DirName:CN = x48
-- DirName:CN = x49
-- DirName:CN = x50
-- DirName:CN = x51
-- DirName:CN = x52
-- DirName:CN = x53
-- DirName:CN = x54
-- DirName:CN = x55
-- DirName:CN = x56
-- DirName:CN = x57
-- DirName:CN = x58
-- DirName:CN = x59
-- DirName:CN = x60
-- DirName:CN = x61
-- DirName:CN = x62
-- DirName:CN = x63
-- DirName:CN = x64
-- DirName:CN = x65
-- DirName:CN = x66
-- DirName:CN = x67
-- DirName:CN = x68
-- DirName:CN = x69
-- DirName:CN = x70
-- DirName:CN = x71
-- DirName:CN = x72
-- DirName:CN = x73
-- DirName:CN = x74
-- DirName:CN = x75
-- DirName:CN = x76
-- DirName:CN = x77
-- DirName:CN = x78
-- DirName:CN = x79
-- DirName:CN = x80
-- DirName:CN = x81
-- DirName:CN = x82
-- DirName:CN = x83
-- DirName:CN = x84
-- DirName:CN = x85
-- DirName:CN = x86
-- DirName:CN = x87
-- DirName:CN = x88
-- DirName:CN = x89
-- DirName:CN = x90
-- DirName:CN = x91
-- DirName:CN = x92
-- DirName:CN = x93
-- DirName:CN = x94
-- DirName:CN = x95
-- DirName:CN = x96
-- DirName:CN = x97
-- DirName:CN = x98
-- DirName:CN = x99
-- DirName:CN = x100
-- DirName:CN = x101
-- DirName:CN = x102
-- DirName:CN = x103
-- DirName:CN = x104
-- DirName:CN = x105
-- DirName:CN = x106
-- DirName:CN = x107
-- DirName:CN = x108
-- DirName:CN = x109
-- DirName:CN = x110
-- DirName:CN = x111
-- DirName:CN = x112
-- DirName:CN = x113
-- DirName:CN = x114
-- DirName:CN = x115
-- DirName:CN = x116
-- DirName:CN = x117
-- DirName:CN = x118
-- DirName:CN = x119
-- DirName:CN = x120
-- DirName:CN = x121
-- DirName:CN = x122
-- DirName:CN = x123
-- DirName:CN = x124
-- DirName:CN = x125
-- DirName:CN = x126
-- DirName:CN = x127
-- DirName:CN = x128
-- DirName:CN = x129
-- DirName:CN = x130
-- DirName:CN = x131
-- DirName:CN = x132
-- DirName:CN = x133
-- DirName:CN = x134
-- DirName:CN = x135
-- DirName:CN = x136
-- DirName:CN = x137
-- DirName:CN = x138
-- DirName:CN = x139
-- DirName:CN = x140
-- DirName:CN = x141
-- DirName:CN = x142
-- DirName:CN = x143
-- DirName:CN = x144
-- DirName:CN = x145
-- DirName:CN = x146
-- DirName:CN = x147
-- DirName:CN = x148
-- DirName:CN = x149
-- DirName:CN = x150
-- DirName:CN = x151
-- DirName:CN = x152
-- DirName:CN = x153
-- DirName:CN = x154
-- DirName:CN = x155
-- DirName:CN = x156
-- DirName:CN = x157
-- DirName:CN = x158
-- DirName:CN = x159
-- DirName:CN = x160
-- DirName:CN = x161
-- DirName:CN = x162
-- DirName:CN = x163
-- DirName:CN = x164
-- DirName:CN = x165
-- DirName:CN = x166
-- DirName:CN = x167
-- DirName:CN = x168
-- DirName:CN = x169
-- DirName:CN = x170
-- DirName:CN = x171
-- DirName:CN = x172
-- DirName:CN = x173
-- DirName:CN = x174
-- DirName:CN = x175
-- DirName:CN = x176
-- DirName:CN = x177
-- DirName:CN = x178
-- DirName:CN = x179
-- DirName:CN = x180
-- DirName:CN = x181
-- DirName:CN = x182
-- DirName:CN = x183
-- DirName:CN = x184
-- DirName:CN = x185
-- DirName:CN = x186
-- DirName:CN = x187
-- DirName:CN = x188
-- DirName:CN = x189
-- DirName:CN = x190
-- DirName:CN = x191
-- DirName:CN = x192
-- DirName:CN = x193
-- DirName:CN = x194
-- DirName:CN = x195
-- DirName:CN = x196
-- DirName:CN = x197
-- DirName:CN = x198
-- DirName:CN = x199
-- DirName:CN = x200
-- DirName:CN = x201
-- DirName:CN = x202
-- DirName:CN = x203
-- DirName:CN = x204
-- DirName:CN = x205
-- DirName:CN = x206
-- DirName:CN = x207
-- DirName:CN = x208
-- DirName:CN = x209
-- DirName:CN = x210
-- DirName:CN = x211
-- DirName:CN = x212
-- DirName:CN = x213
-- DirName:CN = x214
-- DirName:CN = x215
-- DirName:CN = x216
-- DirName:CN = x217
-- DirName:CN = x218
-- DirName:CN = x219
-- DirName:CN = x220
-- DirName:CN = x221
-- DirName:CN = x222
-- DirName:CN = x223
-- DirName:CN = x224
-- DirName:CN = x225
-- DirName:CN = x226
-- DirName:CN = x227
-- DirName:CN = x228
-- DirName:CN = x229
-- DirName:CN = x230
-- DirName:CN = x231
-- DirName:CN = x232
-- DirName:CN = x233
-- DirName:CN = x234
-- DirName:CN = x235
-- DirName:CN = x236
-- DirName:CN = x237
-- DirName:CN = x238
-- DirName:CN = x239
-- DirName:CN = x240
-- DirName:CN = x241
-- DirName:CN = x242
-- DirName:CN = x243
-- DirName:CN = x244
-- DirName:CN = x245
-- DirName:CN = x246
-- DirName:CN = x247
-- DirName:CN = x248
-- DirName:CN = x249
-- DirName:CN = x250
-- DirName:CN = x251
-- DirName:CN = x252
-- DirName:CN = x253
-- DirName:CN = x254
-- DirName:CN = x255
-- DirName:CN = x256
-- DirName:CN = x257
-- DirName:CN = x258
-- DirName:CN = x259
-- DirName:CN = x260
-- DirName:CN = x261
-- DirName:CN = x262
-- DirName:CN = x263
-- DirName:CN = x264
-- DirName:CN = x265
-- DirName:CN = x266
-- DirName:CN = x267
-- DirName:CN = x268
-- DirName:CN = x269
-- DirName:CN = x270
-- DirName:CN = x271
-- DirName:CN = x272
-- DirName:CN = x273
-- DirName:CN = x274
-- DirName:CN = x275
-- DirName:CN = x276
-- DirName:CN = x277
-- DirName:CN = x278
-- DirName:CN = x279
-- DirName:CN = x280
-- DirName:CN = x281
-- DirName:CN = x282
-- DirName:CN = x283
-- DirName:CN = x284
-- DirName:CN = x285
-- DirName:CN = x286
-- DirName:CN = x287
-- DirName:CN = x288
-- DirName:CN = x289
-- DirName:CN = x290
-- DirName:CN = x291
-- DirName:CN = x292
-- DirName:CN = x293
-- DirName:CN = x294
-- DirName:CN = x295
-- DirName:CN = x296
-- DirName:CN = x297
-- DirName:CN = x298
-- DirName:CN = x299
-- DirName:CN = x300
-- DirName:CN = x301
-- DirName:CN = x302
-- DirName:CN = x303
-- DirName:CN = x304
-- DirName:CN = x305
-- DirName:CN = x306
-- DirName:CN = x307
-- DirName:CN = x308
-- DirName:CN = x309
-- DirName:CN = x310
-- DirName:CN = x311
-- DirName:CN = x312
-- DirName:CN = x313
-- DirName:CN = x314
-- DirName:CN = x315
-- DirName:CN = x316
-- DirName:CN = x317
-- DirName:CN = x318
-- DirName:CN = x319
-- DirName:CN = x320
-- DirName:CN = x321
-- DirName:CN = x322
-- DirName:CN = x323
-- DirName:CN = x324
-- DirName:CN = x325
-- DirName:CN = x326
-- DirName:CN = x327
-- DirName:CN = x328
-- DirName:CN = x329
-- DirName:CN = x330
-- DirName:CN = x331
-- DirName:CN = x332
-- DirName:CN = x333
-- DirName:CN = x334
-- DirName:CN = x335
-- DirName:CN = x336
-- DirName:CN = x337
-- DirName:CN = x338
-- DirName:CN = x339
-- DirName:CN = x340
-- DirName:CN = x341
-- DirName:CN = x342
-- DirName:CN = x343
-- DirName:CN = x344
-- DirName:CN = x345
-- DirName:CN = x346
-- DirName:CN = x347
-- DirName:CN = x348
-- DirName:CN = x349
-- DirName:CN = x350
-- DirName:CN = x351
-- DirName:CN = x352
-- DirName:CN = x353
-- DirName:CN = x354
-- DirName:CN = x355
-- DirName:CN = x356
-- DirName:CN = x357
-- DirName:CN = x358
-- DirName:CN = x359
-- DirName:CN = x360
-- DirName:CN = x361
-- DirName:CN = x362
-- DirName:CN = x363
-- DirName:CN = x364
-- DirName:CN = x365
-- DirName:CN = x366
-- DirName:CN = x367
-- DirName:CN = x368
-- DirName:CN = x369
-- DirName:CN = x370
-- DirName:CN = x371
-- DirName:CN = x372
-- DirName:CN = x373
-- DirName:CN = x374
-- DirName:CN = x375
-- DirName:CN = x376
-- DirName:CN = x377
-- DirName:CN = x378
-- DirName:CN = x379
-- DirName:CN = x380
-- DirName:CN = x381
-- DirName:CN = x382
-- DirName:CN = x383
-- DirName:CN = x384
-- DirName:CN = x385
-- DirName:CN = x386
-- DirName:CN = x387
-- DirName:CN = x388
-- DirName:CN = x389
-- DirName:CN = x390
-- DirName:CN = x391
-- DirName:CN = x392
-- DirName:CN = x393
-- DirName:CN = x394
-- DirName:CN = x395
-- DirName:CN = x396
-- DirName:CN = x397
-- DirName:CN = x398
-- DirName:CN = x399
-- DirName:CN = x400
-- DirName:CN = x401
-- DirName:CN = x402
-- DirName:CN = x403
-- DirName:CN = x404
-- DirName:CN = x405
-- DirName:CN = x406
-- DirName:CN = x407
-- DirName:CN = x408
-- DirName:CN = x409
-- DirName:CN = x410
-- DirName:CN = x411
-- DirName:CN = x412
-- DirName:CN = x413
-- DirName:CN = x414
-- DirName:CN = x415
-- DirName:CN = x416
-- DirName:CN = x417
-- DirName:CN = x418
-- DirName:CN = x419
-- DirName:CN = x420
-- DirName:CN = x421
-- DirName:CN = x422
-- DirName:CN = x423
-- DirName:CN = x424
-- DirName:CN = x425
-- DirName:CN = x426
-- DirName:CN = x427
-- DirName:CN = x428
-- DirName:CN = x429
-- DirName:CN = x430
-- DirName:CN = x431
-- DirName:CN = x432
-- DirName:CN = x433
-- DirName:CN = x434
-- DirName:CN = x435
-- DirName:CN = x436
-- DirName:CN = x437
-- DirName:CN = x438
-- DirName:CN = x439
-- DirName:CN = x440
-- DirName:CN = x441
-- DirName:CN = x442
-- DirName:CN = x443
-- DirName:CN = x444
-- DirName:CN = x445
-- DirName:CN = x446
-- DirName:CN = x447
-- DirName:CN = x448
-- DirName:CN = x449
-- DirName:CN = x450
-- DirName:CN = x451
-- DirName:CN = x452
-- DirName:CN = x453
-- DirName:CN = x454
-- DirName:CN = x455
-- DirName:CN = x456
-- DirName:CN = x457
-- DirName:CN = x458
-- DirName:CN = x459
-- DirName:CN = x460
-- DirName:CN = x461
-- DirName:CN = x462
-- DirName:CN = x463
-- DirName:CN = x464
-- DirName:CN = x465
-- DirName:CN = x466
-- DirName:CN = x467
-- DirName:CN = x468
-- DirName:CN = x469
-- DirName:CN = x470
-- DirName:CN = x471
-- DirName:CN = x472
-- DirName:CN = x473
-- DirName:CN = x474
-- DirName:CN = x475
-- DirName:CN = x476
-- DirName:CN = x477
-- DirName:CN = x478
-- DirName:CN = x479
-- DirName:CN = x480
-- DirName:CN = x481
-- DirName:CN = x482
-- DirName:CN = x483
-- DirName:CN = x484
-- DirName:CN = x485
-- DirName:CN = x486
-- DirName:CN = x487
-- DirName:CN = x488
-- DirName:CN = x489
-- DirName:CN = x490
-- DirName:CN = x491
-- DirName:CN = x492
-- DirName:CN = x493
-- DirName:CN = x494
-- DirName:CN = x495
-- DirName:CN = x496
-- DirName:CN = x497
-- DirName:CN = x498
-- DirName:CN = x499
-- DirName:CN = x500
-- DirName:CN = x501
-- DirName:CN = x502
-- DirName:CN = x503
-- DirName:CN = x504
-- DirName:CN = x505
-- DirName:CN = x506
-- DirName:CN = x507
-- DirName:CN = x508
-- DirName:CN = x509
-- DirName:CN = x510
-- DirName:CN = x511
-- DirName:CN = x512
-- DirName:CN = x513
-- DirName:CN = x514
-- DirName:CN = x515
-- DirName:CN = x516
-- DirName:CN = x517
-- DirName:CN = x518
-- DirName:CN = x519
-- DirName:CN = x520
-- DirName:CN = x521
-- DirName:CN = x522
-- DirName:CN = x523
-- DirName:CN = x524
-- DirName:CN = x525
-- DirName:CN = x526
-- DirName:CN = x527
-- DirName:CN = x528
-- DirName:CN = x529
-- DirName:CN = x530
-- DirName:CN = x531
-- DirName:CN = x532
-- DirName:CN = x533
-- DirName:CN = x534
-- DirName:CN = x535
-- DirName:CN = x536
-- DirName:CN = x537
-- DirName:CN = x538
-- DirName:CN = x539
-- DirName:CN = x540
-- DirName:CN = x541
-- DirName:CN = x542
-- DirName:CN = x543
-- DirName:CN = x544
-- DirName:CN = x545
-- DirName:CN = x546
-- DirName:CN = x547
-- DirName:CN = x548
-- DirName:CN = x549
-- DirName:CN = x550
-- DirName:CN = x551
-- DirName:CN = x552
-- DirName:CN = x553
-- DirName:CN = x554
-- DirName:CN = x555
-- DirName:CN = x556
-- DirName:CN = x557
-- DirName:CN = x558
-- DirName:CN = x559
-- DirName:CN = x560
-- DirName:CN = x561
-- DirName:CN = x562
-- DirName:CN = x563
-- DirName:CN = x564
-- DirName:CN = x565
-- DirName:CN = x566
-- DirName:CN = x567
-- DirName:CN = x568
-- DirName:CN = x569
-- DirName:CN = x570
-- DirName:CN = x571
-- DirName:CN = x572
-- DirName:CN = x573
-- DirName:CN = x574
-- DirName:CN = x575
-- DirName:CN = x576
-- DirName:CN = x577
-- DirName:CN = x578
-- DirName:CN = x579
-- DirName:CN = x580
-- DirName:CN = x581
-- DirName:CN = x582
-- DirName:CN = x583
-- DirName:CN = x584
-- DirName:CN = x585
-- DirName:CN = x586
-- DirName:CN = x587
-- DirName:CN = x588
-- DirName:CN = x589
-- DirName:CN = x590
-- DirName:CN = x591
-- DirName:CN = x592
-- DirName:CN = x593
-- DirName:CN = x594
-- DirName:CN = x595
-- DirName:CN = x596
-- DirName:CN = x597
-- DirName:CN = x598
-- DirName:CN = x599
-- DirName:CN = x600
-- DirName:CN = x601
-- DirName:CN = x602
-- DirName:CN = x603
-- DirName:CN = x604
-- DirName:CN = x605
-- DirName:CN = x606
-- DirName:CN = x607
-- DirName:CN = x608
-- DirName:CN = x609
-- DirName:CN = x610
-- DirName:CN = x611
-- DirName:CN = x612
-- DirName:CN = x613
-- DirName:CN = x614
-- DirName:CN = x615
-- DirName:CN = x616
-- DirName:CN = x617
-- DirName:CN = x618
-- DirName:CN = x619
-- DirName:CN = x620
-- DirName:CN = x621
-- DirName:CN = x622
-- DirName:CN = x623
-- DirName:CN = x624
-- DirName:CN = x625
-- DirName:CN = x626
-- DirName:CN = x627
-- DirName:CN = x628
-- DirName:CN = x629
-- DirName:CN = x630
-- DirName:CN = x631
-- DirName:CN = x632
-- DirName:CN = x633
-- DirName:CN = x634
-- DirName:CN = x635
-- DirName:CN = x636
-- DirName:CN = x637
-- DirName:CN = x638
-- DirName:CN = x639
-- DirName:CN = x640
-- DirName:CN = x641
-- DirName:CN = x642
-- DirName:CN = x643
-- DirName:CN = x644
-- DirName:CN = x645
-- DirName:CN = x646
-- DirName:CN = x647
-- DirName:CN = x648
-- DirName:CN = x649
-- DirName:CN = x650
-- DirName:CN = x651
-- DirName:CN = x652
-- DirName:CN = x653
-- DirName:CN = x654
-- DirName:CN = x655
-- DirName:CN = x656
-- DirName:CN = x657
-- DirName:CN = x658
-- DirName:CN = x659
-- DirName:CN = x660
-- DirName:CN = x661
-- DirName:CN = x662
-- DirName:CN = x663
-- DirName:CN = x664
-- DirName:CN = x665
-- DirName:CN = x666
-- DirName:CN = x667
-- DirName:CN = x668
-- DirName:CN = x669
-- DirName:CN = x670
-- DirName:CN = x671
-- DirName:CN = x672
-- DirName:CN = x673
-- DirName:CN = x674
-- DirName:CN = x675
-- DirName:CN = x676
-- DirName:CN = x677
-- DirName:CN = x678
-- DirName:CN = x679
-- DirName:CN = x680
-- DirName:CN = x681
-- DirName:CN = x682
-- DirName:CN = x683
-- DirName:CN = x684
-- DirName:CN = x685
-- DirName:CN = x686
-- DirName:CN = x687
-- DirName:CN = x688
-- DirName:CN = x689
-- DirName:CN = x690
-- DirName:CN = x691
-- DirName:CN = x692
-- DirName:CN = x693
-- DirName:CN = x694
-- DirName:CN = x695
-- DirName:CN = x696
-- DirName:CN = x697
-- DirName:CN = x698
-- DirName:CN = x699
-- DirName:CN = x700
-- DirName:CN = x701
-- DirName:CN = x702
-- DirName:CN = x703
-- DirName:CN = x704
-- DirName:CN = x705
-- DirName:CN = x706
-- DirName:CN = x707
-- DirName:CN = x708
-- DirName:CN = x709
-- DirName:CN = x710
-- DirName:CN = x711
-- DirName:CN = x712
-- DirName:CN = x713
-- DirName:CN = x714
-- DirName:CN = x715
-- DirName:CN = x716
-- DirName:CN = x717
-- DirName:CN = x718
-- DirName:CN = x719
-- DirName:CN = x720
-- DirName:CN = x721
-- DirName:CN = x722
-- DirName:CN = x723
-- DirName:CN = x724
-- DirName:CN = x725
-- DirName:CN = x726
-- DirName:CN = x727
-- DirName:CN = x728
-- DirName:CN = x729
-- DirName:CN = x730
-- DirName:CN = x731
-- DirName:CN = x732
-- DirName:CN = x733
-- DirName:CN = x734
-- DirName:CN = x735
-- DirName:CN = x736
-- DirName:CN = x737
-- DirName:CN = x738
-- DirName:CN = x739
-- DirName:CN = x740
-- DirName:CN = x741
-- DirName:CN = x742
-- DirName:CN = x743
-- DirName:CN = x744
-- DirName:CN = x745
-- DirName:CN = x746
-- DirName:CN = x747
-- DirName:CN = x748
-- DirName:CN = x749
-- DirName:CN = x750
-- DirName:CN = x751
-- DirName:CN = x752
-- DirName:CN = x753
-- DirName:CN = x754
-- DirName:CN = x755
-- DirName:CN = x756
-- DirName:CN = x757
-- DirName:CN = x758
-- DirName:CN = x759
-- DirName:CN = x760
-- DirName:CN = x761
-- DirName:CN = x762
-- DirName:CN = x763
-- DirName:CN = x764
-- DirName:CN = x765
-- DirName:CN = x766
-- DirName:CN = x767
-- DirName:CN = x768
-- DirName:CN = x769
-- DirName:CN = x770
-- DirName:CN = x771
-- DirName:CN = x772
-- DirName:CN = x773
-- DirName:CN = x774
-- DirName:CN = x775
-- DirName:CN = x776
-- DirName:CN = x777
-- DirName:CN = x778
-- DirName:CN = x779
-- DirName:CN = x780
-- DirName:CN = x781
-- DirName:CN = x782
-- DirName:CN = x783
-- DirName:CN = x784
-- DirName:CN = x785
-- DirName:CN = x786
-- DirName:CN = x787
-- DirName:CN = x788
-- DirName:CN = x789
-- DirName:CN = x790
-- DirName:CN = x791
-- DirName:CN = x792
-- DirName:CN = x793
-- DirName:CN = x794
-- DirName:CN = x795
-- DirName:CN = x796
-- DirName:CN = x797
-- DirName:CN = x798
-- DirName:CN = x799
-- DirName:CN = x800
-- DirName:CN = x801
-- DirName:CN = x802
-- DirName:CN = x803
-- DirName:CN = x804
-- DirName:CN = x805
-- DirName:CN = x806
-- DirName:CN = x807
-- DirName:CN = x808
-- DirName:CN = x809
-- DirName:CN = x810
-- DirName:CN = x811
-- DirName:CN = x812
-- DirName:CN = x813
-- DirName:CN = x814
-- DirName:CN = x815
-- DirName:CN = x816
-- DirName:CN = x817
-- DirName:CN = x818
-- DirName:CN = x819
-- DirName:CN = x820
-- DirName:CN = x821
-- DirName:CN = x822
-- DirName:CN = x823
-- DirName:CN = x824
-- DirName:CN = x825
-- DirName:CN = x826
-- DirName:CN = x827
-- DirName:CN = x828
-- DirName:CN = x829
-- DirName:CN = x830
-- DirName:CN = x831
-- DirName:CN = x832
-- DirName:CN = x833
-- DirName:CN = x834
-- DirName:CN = x835
-- DirName:CN = x836
-- DirName:CN = x837
-- DirName:CN = x838
-- DirName:CN = x839
-- DirName:CN = x840
-- DirName:CN = x841
-- DirName:CN = x842
-- DirName:CN = x843
-- DirName:CN = x844
-- DirName:CN = x845
-- DirName:CN = x846
-- DirName:CN = x847
-- DirName:CN = x848
-- DirName:CN = x849
-- DirName:CN = x850
-- DirName:CN = x851
-- DirName:CN = x852
-- DirName:CN = x853
-- DirName:CN = x854
-- DirName:CN = x855
-- DirName:CN = x856
-- DirName:CN = x857
-- DirName:CN = x858
-- DirName:CN = x859
-- DirName:CN = x860
-- DirName:CN = x861
-- DirName:CN = x862
-- DirName:CN = x863
-- DirName:CN = x864
-- DirName:CN = x865
-- DirName:CN = x866
-- DirName:CN = x867
-- DirName:CN = x868
-- DirName:CN = x869
-- DirName:CN = x870
-- DirName:CN = x871
-- DirName:CN = x872
-- DirName:CN = x873
-- DirName:CN = x874
-- DirName:CN = x875
-- DirName:CN = x876
-- DirName:CN = x877
-- DirName:CN = x878
-- DirName:CN = x879
-- DirName:CN = x880
-- DirName:CN = x881
-- DirName:CN = x882
-- DirName:CN = x883
-- DirName:CN = x884
-- DirName:CN = x885
-- DirName:CN = x886
-- DirName:CN = x887
-- DirName:CN = x888
-- DirName:CN = x889
-- DirName:CN = x890
-- DirName:CN = x891
-- DirName:CN = x892
-- DirName:CN = x893
-- DirName:CN = x894
-- DirName:CN = x895
-- DirName:CN = x896
-- DirName:CN = x897
-- DirName:CN = x898
-- DirName:CN = x899
-- DirName:CN = x900
-- DirName:CN = x901
-- DirName:CN = x902
-- DirName:CN = x903
-- DirName:CN = x904
-- DirName:CN = x905
-- DirName:CN = x906
-- DirName:CN = x907
-- DirName:CN = x908
-- DirName:CN = x909
-- DirName:CN = x910
-- DirName:CN = x911
-- DirName:CN = x912
-- DirName:CN = x913
-- DirName:CN = x914
-- DirName:CN = x915
-- DirName:CN = x916
-- DirName:CN = x917
-- DirName:CN = x918
-- DirName:CN = x919
-- DirName:CN = x920
-- DirName:CN = x921
-- DirName:CN = x922
-- DirName:CN = x923
-- DirName:CN = x924
-- DirName:CN = x925
-- DirName:CN = x926
-- DirName:CN = x927
-- DirName:CN = x928
-- DirName:CN = x929
-- DirName:CN = x930
-- DirName:CN = x931
-- DirName:CN = x932
-- DirName:CN = x933
-- DirName:CN = x934
-- DirName:CN = x935
-- DirName:CN = x936
-- DirName:CN = x937
-- DirName:CN = x938
-- DirName:CN = x939
-- DirName:CN = x940
-- DirName:CN = x941
-- DirName:CN = x942
-- DirName:CN = x943
-- DirName:CN = x944
-- DirName:CN = x945
-- DirName:CN = x946
-- DirName:CN = x947
-- DirName:CN = x948
-- DirName:CN = x949
-- DirName:CN = x950
-- DirName:CN = x951
-- DirName:CN = x952
-- DirName:CN = x953
-- DirName:CN = x954
-- DirName:CN = x955
-- DirName:CN = x956
-- DirName:CN = x957
-- DirName:CN = x958
-- DirName:CN = x959
-- DirName:CN = x960
-- DirName:CN = x961
-- DirName:CN = x962
-- DirName:CN = x963
-- DirName:CN = x964
-- DirName:CN = x965
-- DirName:CN = x966
-- DirName:CN = x967
-- DirName:CN = x968
-- DirName:CN = x969
-- DirName:CN = x970
-- DirName:CN = x971
-- DirName:CN = x972
-- DirName:CN = x973
-- DirName:CN = x974
-- DirName:CN = x975
-- DirName:CN = x976
-- DirName:CN = x977
-- DirName:CN = x978
-- DirName:CN = x979
-- DirName:CN = x980
-- DirName:CN = x981
-- DirName:CN = x982
-- DirName:CN = x983
-- DirName:CN = x984
-- DirName:CN = x985
-- DirName:CN = x986
-- DirName:CN = x987
-- DirName:CN = x988
-- DirName:CN = x989
-- DirName:CN = x990
-- DirName:CN = x991
-- DirName:CN = x992
-- DirName:CN = x993
-- DirName:CN = x994
-- DirName:CN = x995
-- DirName:CN = x996
-- DirName:CN = x997
-- DirName:CN = x998
-- DirName:CN = x999
-- DirName:CN = x1000
-- DirName:CN = x1001
-- DirName:CN = x1002
-- DirName:CN = x1003
-- DirName:CN = x1004
-- DirName:CN = x1005
-- DirName:CN = x1006
-- DirName:CN = x1007
-- DirName:CN = x1008
-- DirName:CN = x1009
-- DirName:CN = x1010
-- DirName:CN = x1011
-- DirName:CN = x1012
-- DirName:CN = x1013
-- DirName:CN = x1014
-- DirName:CN = x1015
-- DirName:CN = x1016
-- DirName:CN = x1017
-- DirName:CN = x1018
-- DirName:CN = x1019
-- DirName:CN = x1020
-- DirName:CN = x1021
-- DirName:CN = x1022
-- DirName:CN = x1023
-- DirName:CN = x1024
-- URI:http://xest/0
-- URI:http://xest/1
-- URI:http://xest/2
-- URI:http://xest/3
-- URI:http://xest/4
-- URI:http://xest/5
-- URI:http://xest/6
-- URI:http://xest/7
-- URI:http://xest/8
-- URI:http://xest/9
-- URI:http://xest/10
-- URI:http://xest/11
-- URI:http://xest/12
-- URI:http://xest/13
-- URI:http://xest/14
-- URI:http://xest/15
-- URI:http://xest/16
-- URI:http://xest/17
-- URI:http://xest/18
-- URI:http://xest/19
-- URI:http://xest/20
-- URI:http://xest/21
-- URI:http://xest/22
-- URI:http://xest/23
-- URI:http://xest/24
-- URI:http://xest/25
-- URI:http://xest/26
-- URI:http://xest/27
-- URI:http://xest/28
-- URI:http://xest/29
-- URI:http://xest/30
-- URI:http://xest/31
-- URI:http://xest/32
-- URI:http://xest/33
-- URI:http://xest/34
-- URI:http://xest/35
-- URI:http://xest/36
-- URI:http://xest/37
-- URI:http://xest/38
-- URI:http://xest/39
-- URI:http://xest/40
-- URI:http://xest/41
-- URI:http://xest/42
-- URI:http://xest/43
-- URI:http://xest/44
-- URI:http://xest/45
-- URI:http://xest/46
-- URI:http://xest/47
-- URI:http://xest/48
-- URI:http://xest/49
-- URI:http://xest/50
-- URI:http://xest/51
-- URI:http://xest/52
-- URI:http://xest/53
-- URI:http://xest/54
-- URI:http://xest/55
-- URI:http://xest/56
-- URI:http://xest/57
-- URI:http://xest/58
-- URI:http://xest/59
-- URI:http://xest/60
-- URI:http://xest/61
-- URI:http://xest/62
-- URI:http://xest/63
-- URI:http://xest/64
-- URI:http://xest/65
-- URI:http://xest/66
-- URI:http://xest/67
-- URI:http://xest/68
-- URI:http://xest/69
-- URI:http://xest/70
-- URI:http://xest/71
-- URI:http://xest/72
-- URI:http://xest/73
-- URI:http://xest/74
-- URI:http://xest/75
-- URI:http://xest/76
-- URI:http://xest/77
-- URI:http://xest/78
-- URI:http://xest/79
-- URI:http://xest/80
-- URI:http://xest/81
-- URI:http://xest/82
-- URI:http://xest/83
-- URI:http://xest/84
-- URI:http://xest/85
-- URI:http://xest/86
-- URI:http://xest/87
-- URI:http://xest/88
-- URI:http://xest/89
-- URI:http://xest/90
-- URI:http://xest/91
-- URI:http://xest/92
-- URI:http://xest/93
-- URI:http://xest/94
-- URI:http://xest/95
-- URI:http://xest/96
-- URI:http://xest/97
-- URI:http://xest/98
-- URI:http://xest/99
-- URI:http://xest/100
-- URI:http://xest/101
-- URI:http://xest/102
-- URI:http://xest/103
-- URI:http://xest/104
-- URI:http://xest/105
-- URI:http://xest/106
-- URI:http://xest/107
-- URI:http://xest/108
-- URI:http://xest/109
-- URI:http://xest/110
-- URI:http://xest/111
-- URI:http://xest/112
-- URI:http://xest/113
-- URI:http://xest/114
-- URI:http://xest/115
-- URI:http://xest/116
-- URI:http://xest/117
-- URI:http://xest/118
-- URI:http://xest/119
-- URI:http://xest/120
-- URI:http://xest/121
-- URI:http://xest/122
-- URI:http://xest/123
-- URI:http://xest/124
-- URI:http://xest/125
-- URI:http://xest/126
-- URI:http://xest/127
-- URI:http://xest/128
-- URI:http://xest/129
-- URI:http://xest/130
-- URI:http://xest/131
-- URI:http://xest/132
-- URI:http://xest/133
-- URI:http://xest/134
-- URI:http://xest/135
-- URI:http://xest/136
-- URI:http://xest/137
-- URI:http://xest/138
-- URI:http://xest/139
-- URI:http://xest/140
-- URI:http://xest/141
-- URI:http://xest/142
-- URI:http://xest/143
-- URI:http://xest/144
-- URI:http://xest/145
-- URI:http://xest/146
-- URI:http://xest/147
-- URI:http://xest/148
-- URI:http://xest/149
-- URI:http://xest/150
-- URI:http://xest/151
-- URI:http://xest/152
-- URI:http://xest/153
-- URI:http://xest/154
-- URI:http://xest/155
-- URI:http://xest/156
-- URI:http://xest/157
-- URI:http://xest/158
-- URI:http://xest/159
-- URI:http://xest/160
-- URI:http://xest/161
-- URI:http://xest/162
-- URI:http://xest/163
-- URI:http://xest/164
-- URI:http://xest/165
-- URI:http://xest/166
-- URI:http://xest/167
-- URI:http://xest/168
-- URI:http://xest/169
-- URI:http://xest/170
-- URI:http://xest/171
-- URI:http://xest/172
-- URI:http://xest/173
-- URI:http://xest/174
-- URI:http://xest/175
-- URI:http://xest/176
-- URI:http://xest/177
-- URI:http://xest/178
-- URI:http://xest/179
-- URI:http://xest/180
-- URI:http://xest/181
-- URI:http://xest/182
-- URI:http://xest/183
-- URI:http://xest/184
-- URI:http://xest/185
-- URI:http://xest/186
-- URI:http://xest/187
-- URI:http://xest/188
-- URI:http://xest/189
-- URI:http://xest/190
-- URI:http://xest/191
-- URI:http://xest/192
-- URI:http://xest/193
-- URI:http://xest/194
-- URI:http://xest/195
-- URI:http://xest/196
-- URI:http://xest/197
-- URI:http://xest/198
-- URI:http://xest/199
-- URI:http://xest/200
-- URI:http://xest/201
-- URI:http://xest/202
-- URI:http://xest/203
-- URI:http://xest/204
-- URI:http://xest/205
-- URI:http://xest/206
-- URI:http://xest/207
-- URI:http://xest/208
-- URI:http://xest/209
-- URI:http://xest/210
-- URI:http://xest/211
-- URI:http://xest/212
-- URI:http://xest/213
-- URI:http://xest/214
-- URI:http://xest/215
-- URI:http://xest/216
-- URI:http://xest/217
-- URI:http://xest/218
-- URI:http://xest/219
-- URI:http://xest/220
-- URI:http://xest/221
-- URI:http://xest/222
-- URI:http://xest/223
-- URI:http://xest/224
-- URI:http://xest/225
-- URI:http://xest/226
-- URI:http://xest/227
-- URI:http://xest/228
-- URI:http://xest/229
-- URI:http://xest/230
-- URI:http://xest/231
-- URI:http://xest/232
-- URI:http://xest/233
-- URI:http://xest/234
-- URI:http://xest/235
-- URI:http://xest/236
-- URI:http://xest/237
-- URI:http://xest/238
-- URI:http://xest/239
-- URI:http://xest/240
-- URI:http://xest/241
-- URI:http://xest/242
-- URI:http://xest/243
-- URI:http://xest/244
-- URI:http://xest/245
-- URI:http://xest/246
-- URI:http://xest/247
-- URI:http://xest/248
-- URI:http://xest/249
-- URI:http://xest/250
-- URI:http://xest/251
-- URI:http://xest/252
-- URI:http://xest/253
-- URI:http://xest/254
-- URI:http://xest/255
-- URI:http://xest/256
-- URI:http://xest/257
-- URI:http://xest/258
-- URI:http://xest/259
-- URI:http://xest/260
-- URI:http://xest/261
-- URI:http://xest/262
-- URI:http://xest/263
-- URI:http://xest/264
-- URI:http://xest/265
-- URI:http://xest/266
-- URI:http://xest/267
-- URI:http://xest/268
-- URI:http://xest/269
-- URI:http://xest/270
-- URI:http://xest/271
-- URI:http://xest/272
-- URI:http://xest/273
-- URI:http://xest/274
-- URI:http://xest/275
-- URI:http://xest/276
-- URI:http://xest/277
-- URI:http://xest/278
-- URI:http://xest/279
-- URI:http://xest/280
-- URI:http://xest/281
-- URI:http://xest/282
-- URI:http://xest/283
-- URI:http://xest/284
-- URI:http://xest/285
-- URI:http://xest/286
-- URI:http://xest/287
-- URI:http://xest/288
-- URI:http://xest/289
-- URI:http://xest/290
-- URI:http://xest/291
-- URI:http://xest/292
-- URI:http://xest/293
-- URI:http://xest/294
-- URI:http://xest/295
-- URI:http://xest/296
-- URI:http://xest/297
-- URI:http://xest/298
-- URI:http://xest/299
-- URI:http://xest/300
-- URI:http://xest/301
-- URI:http://xest/302
-- URI:http://xest/303
-- URI:http://xest/304
-- URI:http://xest/305
-- URI:http://xest/306
-- URI:http://xest/307
-- URI:http://xest/308
-- URI:http://xest/309
-- URI:http://xest/310
-- URI:http://xest/311
-- URI:http://xest/312
-- URI:http://xest/313
-- URI:http://xest/314
-- URI:http://xest/315
-- URI:http://xest/316
-- URI:http://xest/317
-- URI:http://xest/318
-- URI:http://xest/319
-- URI:http://xest/320
-- URI:http://xest/321
-- URI:http://xest/322
-- URI:http://xest/323
-- URI:http://xest/324
-- URI:http://xest/325
-- URI:http://xest/326
-- URI:http://xest/327
-- URI:http://xest/328
-- URI:http://xest/329
-- URI:http://xest/330
-- URI:http://xest/331
-- URI:http://xest/332
-- URI:http://xest/333
-- URI:http://xest/334
-- URI:http://xest/335
-- URI:http://xest/336
-- URI:http://xest/337
-- URI:http://xest/338
-- URI:http://xest/339
-- URI:http://xest/340
-- URI:http://xest/341
-- URI:http://xest/342
-- URI:http://xest/343
-- URI:http://xest/344
-- URI:http://xest/345
-- URI:http://xest/346
-- URI:http://xest/347
-- URI:http://xest/348
-- URI:http://xest/349
-- URI:http://xest/350
-- URI:http://xest/351
-- URI:http://xest/352
-- URI:http://xest/353
-- URI:http://xest/354
-- URI:http://xest/355
-- URI:http://xest/356
-- URI:http://xest/357
-- URI:http://xest/358
-- URI:http://xest/359
-- URI:http://xest/360
-- URI:http://xest/361
-- URI:http://xest/362
-- URI:http://xest/363
-- URI:http://xest/364
-- URI:http://xest/365
-- URI:http://xest/366
-- URI:http://xest/367
-- URI:http://xest/368
-- URI:http://xest/369
-- URI:http://xest/370
-- URI:http://xest/371
-- URI:http://xest/372
-- URI:http://xest/373
-- URI:http://xest/374
-- URI:http://xest/375
-- URI:http://xest/376
-- URI:http://xest/377
-- URI:http://xest/378
-- URI:http://xest/379
-- URI:http://xest/380
-- URI:http://xest/381
-- URI:http://xest/382
-- URI:http://xest/383
-- URI:http://xest/384
-- URI:http://xest/385
-- URI:http://xest/386
-- URI:http://xest/387
-- URI:http://xest/388
-- URI:http://xest/389
-- URI:http://xest/390
-- URI:http://xest/391
-- URI:http://xest/392
-- URI:http://xest/393
-- URI:http://xest/394
-- URI:http://xest/395
-- URI:http://xest/396
-- URI:http://xest/397
-- URI:http://xest/398
-- URI:http://xest/399
-- URI:http://xest/400
-- URI:http://xest/401
-- URI:http://xest/402
-- URI:http://xest/403
-- URI:http://xest/404
-- URI:http://xest/405
-- URI:http://xest/406
-- URI:http://xest/407
-- URI:http://xest/408
-- URI:http://xest/409
-- URI:http://xest/410
-- URI:http://xest/411
-- URI:http://xest/412
-- URI:http://xest/413
-- URI:http://xest/414
-- URI:http://xest/415
-- URI:http://xest/416
-- URI:http://xest/417
-- URI:http://xest/418
-- URI:http://xest/419
-- URI:http://xest/420
-- URI:http://xest/421
-- URI:http://xest/422
-- URI:http://xest/423
-- URI:http://xest/424
-- URI:http://xest/425
-- URI:http://xest/426
-- URI:http://xest/427
-- URI:http://xest/428
-- URI:http://xest/429
-- URI:http://xest/430
-- URI:http://xest/431
-- URI:http://xest/432
-- URI:http://xest/433
-- URI:http://xest/434
-- URI:http://xest/435
-- URI:http://xest/436
-- URI:http://xest/437
-- URI:http://xest/438
-- URI:http://xest/439
-- URI:http://xest/440
-- URI:http://xest/441
-- URI:http://xest/442
-- URI:http://xest/443
-- URI:http://xest/444
-- URI:http://xest/445
-- URI:http://xest/446
-- URI:http://xest/447
-- URI:http://xest/448
-- URI:http://xest/449
-- URI:http://xest/450
-- URI:http://xest/451
-- URI:http://xest/452
-- URI:http://xest/453
-- URI:http://xest/454
-- URI:http://xest/455
-- URI:http://xest/456
-- URI:http://xest/457
-- URI:http://xest/458
-- URI:http://xest/459
-- URI:http://xest/460
-- URI:http://xest/461
-- URI:http://xest/462
-- URI:http://xest/463
-- URI:http://xest/464
-- URI:http://xest/465
-- URI:http://xest/466
-- URI:http://xest/467
-- URI:http://xest/468
-- URI:http://xest/469
-- URI:http://xest/470
-- URI:http://xest/471
-- URI:http://xest/472
-- URI:http://xest/473
-- URI:http://xest/474
-- URI:http://xest/475
-- URI:http://xest/476
-- URI:http://xest/477
-- URI:http://xest/478
-- URI:http://xest/479
-- URI:http://xest/480
-- URI:http://xest/481
-- URI:http://xest/482
-- URI:http://xest/483
-- URI:http://xest/484
-- URI:http://xest/485
-- URI:http://xest/486
-- URI:http://xest/487
-- URI:http://xest/488
-- URI:http://xest/489
-- URI:http://xest/490
-- URI:http://xest/491
-- URI:http://xest/492
-- URI:http://xest/493
-- URI:http://xest/494
-- URI:http://xest/495
-- URI:http://xest/496
-- URI:http://xest/497
-- URI:http://xest/498
-- URI:http://xest/499
-- URI:http://xest/500
-- URI:http://xest/501
-- URI:http://xest/502
-- URI:http://xest/503
-- URI:http://xest/504
-- URI:http://xest/505
-- URI:http://xest/506
-- URI:http://xest/507
-- URI:http://xest/508
-- URI:http://xest/509
-- URI:http://xest/510
-- URI:http://xest/511
-- URI:http://xest/512
-- URI:http://xest/513
-- URI:http://xest/514
-- URI:http://xest/515
-- URI:http://xest/516
-- URI:http://xest/517
-- URI:http://xest/518
-- URI:http://xest/519
-- URI:http://xest/520
-- URI:http://xest/521
-- URI:http://xest/522
-- URI:http://xest/523
-- URI:http://xest/524
-- URI:http://xest/525
-- URI:http://xest/526
-- URI:http://xest/527
-- URI:http://xest/528
-- URI:http://xest/529
-- URI:http://xest/530
-- URI:http://xest/531
-- URI:http://xest/532
-- URI:http://xest/533
-- URI:http://xest/534
-- URI:http://xest/535
-- URI:http://xest/536
-- URI:http://xest/537
-- URI:http://xest/538
-- URI:http://xest/539
-- URI:http://xest/540
-- URI:http://xest/541
-- URI:http://xest/542
-- URI:http://xest/543
-- URI:http://xest/544
-- URI:http://xest/545
-- URI:http://xest/546
-- URI:http://xest/547
-- URI:http://xest/548
-- URI:http://xest/549
-- URI:http://xest/550
-- URI:http://xest/551
-- URI:http://xest/552
-- URI:http://xest/553
-- URI:http://xest/554
-- URI:http://xest/555
-- URI:http://xest/556
-- URI:http://xest/557
-- URI:http://xest/558
-- URI:http://xest/559
-- URI:http://xest/560
-- URI:http://xest/561
-- URI:http://xest/562
-- URI:http://xest/563
-- URI:http://xest/564
-- URI:http://xest/565
-- URI:http://xest/566
-- URI:http://xest/567
-- URI:http://xest/568
-- URI:http://xest/569
-- URI:http://xest/570
-- URI:http://xest/571
-- URI:http://xest/572
-- URI:http://xest/573
-- URI:http://xest/574
-- URI:http://xest/575
-- URI:http://xest/576
-- URI:http://xest/577
-- URI:http://xest/578
-- URI:http://xest/579
-- URI:http://xest/580
-- URI:http://xest/581
-- URI:http://xest/582
-- URI:http://xest/583
-- URI:http://xest/584
-- URI:http://xest/585
-- URI:http://xest/586
-- URI:http://xest/587
-- URI:http://xest/588
-- URI:http://xest/589
-- URI:http://xest/590
-- URI:http://xest/591
-- URI:http://xest/592
-- URI:http://xest/593
-- URI:http://xest/594
-- URI:http://xest/595
-- URI:http://xest/596
-- URI:http://xest/597
-- URI:http://xest/598
-- URI:http://xest/599
-- URI:http://xest/600
-- URI:http://xest/601
-- URI:http://xest/602
-- URI:http://xest/603
-- URI:http://xest/604
-- URI:http://xest/605
-- URI:http://xest/606
-- URI:http://xest/607
-- URI:http://xest/608
-- URI:http://xest/609
-- URI:http://xest/610
-- URI:http://xest/611
-- URI:http://xest/612
-- URI:http://xest/613
-- URI:http://xest/614
-- URI:http://xest/615
-- URI:http://xest/616
-- URI:http://xest/617
-- URI:http://xest/618
-- URI:http://xest/619
-- URI:http://xest/620
-- URI:http://xest/621
-- URI:http://xest/622
-- URI:http://xest/623
-- URI:http://xest/624
-- URI:http://xest/625
-- URI:http://xest/626
-- URI:http://xest/627
-- URI:http://xest/628
-- URI:http://xest/629
-- URI:http://xest/630
-- URI:http://xest/631
-- URI:http://xest/632
-- URI:http://xest/633
-- URI:http://xest/634
-- URI:http://xest/635
-- URI:http://xest/636
-- URI:http://xest/637
-- URI:http://xest/638
-- URI:http://xest/639
-- URI:http://xest/640
-- URI:http://xest/641
-- URI:http://xest/642
-- URI:http://xest/643
-- URI:http://xest/644
-- URI:http://xest/645
-- URI:http://xest/646
-- URI:http://xest/647
-- URI:http://xest/648
-- URI:http://xest/649
-- URI:http://xest/650
-- URI:http://xest/651
-- URI:http://xest/652
-- URI:http://xest/653
-- URI:http://xest/654
-- URI:http://xest/655
-- URI:http://xest/656
-- URI:http://xest/657
-- URI:http://xest/658
-- URI:http://xest/659
-- URI:http://xest/660
-- URI:http://xest/661
-- URI:http://xest/662
-- URI:http://xest/663
-- URI:http://xest/664
-- URI:http://xest/665
-- URI:http://xest/666
-- URI:http://xest/667
-- URI:http://xest/668
-- URI:http://xest/669
-- URI:http://xest/670
-- URI:http://xest/671
-- URI:http://xest/672
-- URI:http://xest/673
-- URI:http://xest/674
-- URI:http://xest/675
-- URI:http://xest/676
-- URI:http://xest/677
-- URI:http://xest/678
-- URI:http://xest/679
-- URI:http://xest/680
-- URI:http://xest/681
-- URI:http://xest/682
-- URI:http://xest/683
-- URI:http://xest/684
-- URI:http://xest/685
-- URI:http://xest/686
-- URI:http://xest/687
-- URI:http://xest/688
-- URI:http://xest/689
-- URI:http://xest/690
-- URI:http://xest/691
-- URI:http://xest/692
-- URI:http://xest/693
-- URI:http://xest/694
-- URI:http://xest/695
-- URI:http://xest/696
-- URI:http://xest/697
-- URI:http://xest/698
-- URI:http://xest/699
-- URI:http://xest/700
-- URI:http://xest/701
-- URI:http://xest/702
-- URI:http://xest/703
-- URI:http://xest/704
-- URI:http://xest/705
-- URI:http://xest/706
-- URI:http://xest/707
-- URI:http://xest/708
-- URI:http://xest/709
-- URI:http://xest/710
-- URI:http://xest/711
-- URI:http://xest/712
-- URI:http://xest/713
-- URI:http://xest/714
-- URI:http://xest/715
-- URI:http://xest/716
-- URI:http://xest/717
-- URI:http://xest/718
-- URI:http://xest/719
-- URI:http://xest/720
-- URI:http://xest/721
-- URI:http://xest/722
-- URI:http://xest/723
-- URI:http://xest/724
-- URI:http://xest/725
-- URI:http://xest/726
-- URI:http://xest/727
-- URI:http://xest/728
-- URI:http://xest/729
-- URI:http://xest/730
-- URI:http://xest/731
-- URI:http://xest/732
-- URI:http://xest/733
-- URI:http://xest/734
-- URI:http://xest/735
-- URI:http://xest/736
-- URI:http://xest/737
-- URI:http://xest/738
-- URI:http://xest/739
-- URI:http://xest/740
-- URI:http://xest/741
-- URI:http://xest/742
-- URI:http://xest/743
-- URI:http://xest/744
-- URI:http://xest/745
-- URI:http://xest/746
-- URI:http://xest/747
-- URI:http://xest/748
-- URI:http://xest/749
-- URI:http://xest/750
-- URI:http://xest/751
-- URI:http://xest/752
-- URI:http://xest/753
-- URI:http://xest/754
-- URI:http://xest/755
-- URI:http://xest/756
-- URI:http://xest/757
-- URI:http://xest/758
-- URI:http://xest/759
-- URI:http://xest/760
-- URI:http://xest/761
-- URI:http://xest/762
-- URI:http://xest/763
-- URI:http://xest/764
-- URI:http://xest/765
-- URI:http://xest/766
-- URI:http://xest/767
-- URI:http://xest/768
-- URI:http://xest/769
-- URI:http://xest/770
-- URI:http://xest/771
-- URI:http://xest/772
-- URI:http://xest/773
-- URI:http://xest/774
-- URI:http://xest/775
-- URI:http://xest/776
-- URI:http://xest/777
-- URI:http://xest/778
-- URI:http://xest/779
-- URI:http://xest/780
-- URI:http://xest/781
-- URI:http://xest/782
-- URI:http://xest/783
-- URI:http://xest/784
-- URI:http://xest/785
-- URI:http://xest/786
-- URI:http://xest/787
-- URI:http://xest/788
-- URI:http://xest/789
-- URI:http://xest/790
-- URI:http://xest/791
-- URI:http://xest/792
-- URI:http://xest/793
-- URI:http://xest/794
-- URI:http://xest/795
-- URI:http://xest/796
-- URI:http://xest/797
-- URI:http://xest/798
-- URI:http://xest/799
-- URI:http://xest/800
-- URI:http://xest/801
-- URI:http://xest/802
-- URI:http://xest/803
-- URI:http://xest/804
-- URI:http://xest/805
-- URI:http://xest/806
-- URI:http://xest/807
-- URI:http://xest/808
-- URI:http://xest/809
-- URI:http://xest/810
-- URI:http://xest/811
-- URI:http://xest/812
-- URI:http://xest/813
-- URI:http://xest/814
-- URI:http://xest/815
-- URI:http://xest/816
-- URI:http://xest/817
-- URI:http://xest/818
-- URI:http://xest/819
-- URI:http://xest/820
-- URI:http://xest/821
-- URI:http://xest/822
-- URI:http://xest/823
-- URI:http://xest/824
-- URI:http://xest/825
-- URI:http://xest/826
-- URI:http://xest/827
-- URI:http://xest/828
-- URI:http://xest/829
-- URI:http://xest/830
-- URI:http://xest/831
-- URI:http://xest/832
-- URI:http://xest/833
-- URI:http://xest/834
-- URI:http://xest/835
-- URI:http://xest/836
-- URI:http://xest/837
-- URI:http://xest/838
-- URI:http://xest/839
-- URI:http://xest/840
-- URI:http://xest/841
-- URI:http://xest/842
-- URI:http://xest/843
-- URI:http://xest/844
-- URI:http://xest/845
-- URI:http://xest/846
-- URI:http://xest/847
-- URI:http://xest/848
-- URI:http://xest/849
-- URI:http://xest/850
-- URI:http://xest/851
-- URI:http://xest/852
-- URI:http://xest/853
-- URI:http://xest/854
-- URI:http://xest/855
-- URI:http://xest/856
-- URI:http://xest/857
-- URI:http://xest/858
-- URI:http://xest/859
-- URI:http://xest/860
-- URI:http://xest/861
-- URI:http://xest/862
-- URI:http://xest/863
-- URI:http://xest/864
-- URI:http://xest/865
-- URI:http://xest/866
-- URI:http://xest/867
-- URI:http://xest/868
-- URI:http://xest/869
-- URI:http://xest/870
-- URI:http://xest/871
-- URI:http://xest/872
-- URI:http://xest/873
-- URI:http://xest/874
-- URI:http://xest/875
-- URI:http://xest/876
-- URI:http://xest/877
-- URI:http://xest/878
-- URI:http://xest/879
-- URI:http://xest/880
-- URI:http://xest/881
-- URI:http://xest/882
-- URI:http://xest/883
-- URI:http://xest/884
-- URI:http://xest/885
-- URI:http://xest/886
-- URI:http://xest/887
-- URI:http://xest/888
-- URI:http://xest/889
-- URI:http://xest/890
-- URI:http://xest/891
-- URI:http://xest/892
-- URI:http://xest/893
-- URI:http://xest/894
-- URI:http://xest/895
-- URI:http://xest/896
-- URI:http://xest/897
-- URI:http://xest/898
-- URI:http://xest/899
-- URI:http://xest/900
-- URI:http://xest/901
-- URI:http://xest/902
-- URI:http://xest/903
-- URI:http://xest/904
-- URI:http://xest/905
-- URI:http://xest/906
-- URI:http://xest/907
-- URI:http://xest/908
-- URI:http://xest/909
-- URI:http://xest/910
-- URI:http://xest/911
-- URI:http://xest/912
-- URI:http://xest/913
-- URI:http://xest/914
-- URI:http://xest/915
-- URI:http://xest/916
-- URI:http://xest/917
-- URI:http://xest/918
-- URI:http://xest/919
-- URI:http://xest/920
-- URI:http://xest/921
-- URI:http://xest/922
-- URI:http://xest/923
-- URI:http://xest/924
-- URI:http://xest/925
-- URI:http://xest/926
-- URI:http://xest/927
-- URI:http://xest/928
-- URI:http://xest/929
-- URI:http://xest/930
-- URI:http://xest/931
-- URI:http://xest/932
-- URI:http://xest/933
-- URI:http://xest/934
-- URI:http://xest/935
-- URI:http://xest/936
-- URI:http://xest/937
-- URI:http://xest/938
-- URI:http://xest/939
-- URI:http://xest/940
-- URI:http://xest/941
-- URI:http://xest/942
-- URI:http://xest/943
-- URI:http://xest/944
-- URI:http://xest/945
-- URI:http://xest/946
-- URI:http://xest/947
-- URI:http://xest/948
-- URI:http://xest/949
-- URI:http://xest/950
-- URI:http://xest/951
-- URI:http://xest/952
-- URI:http://xest/953
-- URI:http://xest/954
-- URI:http://xest/955
-- URI:http://xest/956
-- URI:http://xest/957
-- URI:http://xest/958
-- URI:http://xest/959
-- URI:http://xest/960
-- URI:http://xest/961
-- URI:http://xest/962
-- URI:http://xest/963
-- URI:http://xest/964
-- URI:http://xest/965
-- URI:http://xest/966
-- URI:http://xest/967
-- URI:http://xest/968
-- URI:http://xest/969
-- URI:http://xest/970
-- URI:http://xest/971
-- URI:http://xest/972
-- URI:http://xest/973
-- URI:http://xest/974
-- URI:http://xest/975
-- URI:http://xest/976
-- URI:http://xest/977
-- URI:http://xest/978
-- URI:http://xest/979
-- URI:http://xest/980
-- URI:http://xest/981
-- URI:http://xest/982
-- URI:http://xest/983
-- URI:http://xest/984
-- URI:http://xest/985
-- URI:http://xest/986
-- URI:http://xest/987
-- URI:http://xest/988
-- URI:http://xest/989
-- URI:http://xest/990
-- URI:http://xest/991
-- URI:http://xest/992
-- URI:http://xest/993
-- URI:http://xest/994
-- URI:http://xest/995
-- URI:http://xest/996
-- URI:http://xest/997
-- URI:http://xest/998
-- URI:http://xest/999
-- URI:http://xest/1000
-- URI:http://xest/1001
-- URI:http://xest/1002
-- URI:http://xest/1003
-- URI:http://xest/1004
-- URI:http://xest/1005
-- URI:http://xest/1006
-- URI:http://xest/1007
-- URI:http://xest/1008
-- URI:http://xest/1009
-- URI:http://xest/1010
-- URI:http://xest/1011
-- URI:http://xest/1012
-- URI:http://xest/1013
-- URI:http://xest/1014
-- URI:http://xest/1015
-- URI:http://xest/1016
-- URI:http://xest/1017
-- URI:http://xest/1018
-- URI:http://xest/1019
-- URI:http://xest/1020
-- URI:http://xest/1021
-- URI:http://xest/1022
-- URI:http://xest/1023
-- URI:http://xest/1024
--
-- Signature Algorithm: sha256WithRSAEncryption
-- 0e:14:4c:09:0c:0b:fa:da:ae:c8:a4:13:9f:7d:9c:53:62:c0:
-- 51:7a:7a:88:78:90:81:f9:2f:e6:86:e0:73:31:1d:84:45:7f:
-- 79:ba:6a:9c:ed:5c:aa:b0:dd:d0:32:a9:69:78:1a:e4:3c:fa:
-- 53:8a:15:33:7d:cc:45:4c:65:4e:d4:01:49:47:c3:02:04:58:
-- a8:c2:60:ab:01:8b:35:ad:db:57:9f:68:12:2b:0e:c6:b0:80:
-- 15:11:de:e4:5d:6e:a5:b2:80:34:65:33:e9:4c:0d:93:09:6e:
-- e5:f4:f9:06:cc:7e:3d:2e:b9:79:80:9c:83:92:ec:15:62:e6:
-- af:4e:40:7f:55:a2:75:d1:f2:af:a1:10:28:2b:c3:f6:ef:3a:
-- 16:3a:71:9b:28:ac:65:d4:ab:ff:4a:a7:aa:82:a3:8d:18:36:
-- e7:c1:4c:7a:87:8b:39:90:a5:e2:23:c3:99:e6:5d:11:4f:66:
-- 48:12:69:72:47:3e:e7:bb:33:51:38:c5:e2:20:aa:24:12:ce:
-- 44:fe:d4:f3:38:37:69:85:d8:41:32:41:30:f7:b2:f0:76:ce:
-- 4b:da:43:95:87:2b:18:9a:fa:40:c1:36:71:ac:d4:8f:68:cc:
-- ed:8f:f6:a9:0a:29:94:98:71:69:af:e2:85:62:65:36:a3:77:
-- ae:43:af:81
-------BEGIN CERTIFICATE-----
--MIMBorUwgwGhnKADAgECAhQ85fyBiFmoUBbBf9flKuWWf8L2/jANBgkqhkiG9w0B
--AQsFADAPMQ0wCwYDVQQDDARSb290MB4XDTIxMTAwNTEyMDAwMFoXDTIyMTAwNTEy
--MDAwMFowFzEVMBMGA1UEAwwMSW50ZXJtZWRpYXRlMIIBIjANBgkqhkiG9w0BAQEF
--AAOCAQ8AMIIBCgKCAQEAuzvbBG4X4FRSuiN3JLw043DZmZ5TXTMLqcxLHa4GJxiO
--VbqtEscdMlltwxYg22Kmd4AS4IdYUVXjZn/R4DoiZeVwJqIEBPBd+V9WyNroD1co
--d26aoEpTNBpjN6JDqw5KzQcj3VWDRAAMcEHfNWTQxQ5qh9vK/DXV4luvC6DmdaXS
--4XJOImMBQXO4lVAs/e3DYbY21IOVYcPgYf/0noroutzR9ontnTBElSf00YvmLxRm
--VvHa8cwEG3eSpZ9YQAyfDDLWBcJMwMWf5aQwPUzpnQNsTAa25ZW9IbjmK6igvwa7
--QzMZPXsXWfFkTSRnsVEPNa7wcXV5rlsCNAQx42aGZQIDAQABo4MBn/0wgwGf+DAd
--BgNVHQ4EFgQUkhE/rBGWx2Y3z4NaJPA6d68zjX8wHwYDVR0jBBgwFoAUtsLvn9Ep
--yw+JjExS1L1AtxG3cd0wNwYIKwYBBQUHAQEEKzApMCcGCCsGAQUFBzAChhtodHRw
--Oi8vdXJsLWZvci1haWEvUm9vdC5jZXIwLAYDVR0fBCUwIzAhoB+gHYYbaHR0cDov
--L3VybC1mb3ItY3JsL1Jvb3QuY3JsMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E
--BTADAQH/MIMBnysGA1UdHgSDAZ8hMIMBnxyggs+KMAqHCAoAAAD/////MAqHCAoA
--AAH/////MAqHCAoAAAL/////MAqHCAoAAAP/////MAqHCAoAAAT/////MAqHCAoA
--AAX/////MAqHCAoAAAb/////MAqHCAoAAAf/////MAqHCAoAAAj/////MAqHCAoA
--AAn/////MAqHCAoAAAr/////MAqHCAoAAAv/////MAqHCAoAAAz/////MAqHCAoA
--AA3/////MAqHCAoAAA7/////MAqHCAoAAA//////MAqHCAoAABD/////MAqHCAoA
--ABH/////MAqHCAoAABL/////MAqHCAoAABP/////MAqHCAoAABT/////MAqHCAoA
--ABX/////MAqHCAoAABb/////MAqHCAoAABf/////MAqHCAoAABj/////MAqHCAoA
--ABn/////MAqHCAoAABr/////MAqHCAoAABv/////MAqHCAoAABz/////MAqHCAoA
--AB3/////MAqHCAoAAB7/////MAqHCAoAAB//////MAqHCAoAACD/////MAqHCAoA
--ACH/////MAqHCAoAACL/////MAqHCAoAACP/////MAqHCAoAACT/////MAqHCAoA
--ACX/////MAqHCAoAACb/////MAqHCAoAACf/////MAqHCAoAACj/////MAqHCAoA
--ACn/////MAqHCAoAACr/////MAqHCAoAACv/////MAqHCAoAACz/////MAqHCAoA
--AC3/////MAqHCAoAAC7/////MAqHCAoAAC//////MAqHCAoAADD/////MAqHCAoA
--ADH/////MAqHCAoAADL/////MAqHCAoAADP/////MAqHCAoAADT/////MAqHCAoA
--ADX/////MAqHCAoAADb/////MAqHCAoAADf/////MAqHCAoAADj/////MAqHCAoA
--ADn/////MAqHCAoAADr/////MAqHCAoAADv/////MAqHCAoAADz/////MAqHCAoA
--AD3/////MAqHCAoAAD7/////MAqHCAoAAD//////MAqHCAoAAED/////MAqHCAoA
--AEH/////MAqHCAoAAEL/////MAqHCAoAAEP/////MAqHCAoAAET/////MAqHCAoA
--AEX/////MAqHCAoAAEb/////MAqHCAoAAEf/////MAqHCAoAAEj/////MAqHCAoA
--AEn/////MAqHCAoAAEr/////MAqHCAoAAEv/////MAqHCAoAAEz/////MAqHCAoA
--AE3/////MAqHCAoAAE7/////MAqHCAoAAE//////MAqHCAoAAFD/////MAqHCAoA
--AFH/////MAqHCAoAAFL/////MAqHCAoAAFP/////MAqHCAoAAFT/////MAqHCAoA
--AFX/////MAqHCAoAAFb/////MAqHCAoAAFf/////MAqHCAoAAFj/////MAqHCAoA
--AFn/////MAqHCAoAAFr/////MAqHCAoAAFv/////MAqHCAoAAFz/////MAqHCAoA
--AF3/////MAqHCAoAAF7/////MAqHCAoAAF//////MAqHCAoAAGD/////MAqHCAoA
--AGH/////MAqHCAoAAGL/////MAqHCAoAAGP/////MAqHCAoAAGT/////MAqHCAoA
--AGX/////MAqHCAoAAGb/////MAqHCAoAAGf/////MAqHCAoAAGj/////MAqHCAoA
--AGn/////MAqHCAoAAGr/////MAqHCAoAAGv/////MAqHCAoAAGz/////MAqHCAoA
--AG3/////MAqHCAoAAG7/////MAqHCAoAAG//////MAqHCAoAAHD/////MAqHCAoA
--AHH/////MAqHCAoAAHL/////MAqHCAoAAHP/////MAqHCAoAAHT/////MAqHCAoA
--AHX/////MAqHCAoAAHb/////MAqHCAoAAHf/////MAqHCAoAAHj/////MAqHCAoA
--AHn/////MAqHCAoAAHr/////MAqHCAoAAHv/////MAqHCAoAAHz/////MAqHCAoA
--AH3/////MAqHCAoAAH7/////MAqHCAoAAH//////MAqHCAoAAID/////MAqHCAoA
--AIH/////MAqHCAoAAIL/////MAqHCAoAAIP/////MAqHCAoAAIT/////MAqHCAoA
--AIX/////MAqHCAoAAIb/////MAqHCAoAAIf/////MAqHCAoAAIj/////MAqHCAoA
--AIn/////MAqHCAoAAIr/////MAqHCAoAAIv/////MAqHCAoAAIz/////MAqHCAoA
--AI3/////MAqHCAoAAI7/////MAqHCAoAAI//////MAqHCAoAAJD/////MAqHCAoA
--AJH/////MAqHCAoAAJL/////MAqHCAoAAJP/////MAqHCAoAAJT/////MAqHCAoA
--AJX/////MAqHCAoAAJb/////MAqHCAoAAJf/////MAqHCAoAAJj/////MAqHCAoA
--AJn/////MAqHCAoAAJr/////MAqHCAoAAJv/////MAqHCAoAAJz/////MAqHCAoA
--AJ3/////MAqHCAoAAJ7/////MAqHCAoAAJ//////MAqHCAoAAKD/////MAqHCAoA
--AKH/////MAqHCAoAAKL/////MAqHCAoAAKP/////MAqHCAoAAKT/////MAqHCAoA
--AKX/////MAqHCAoAAKb/////MAqHCAoAAKf/////MAqHCAoAAKj/////MAqHCAoA
--AKn/////MAqHCAoAAKr/////MAqHCAoAAKv/////MAqHCAoAAKz/////MAqHCAoA
--AK3/////MAqHCAoAAK7/////MAqHCAoAAK//////MAqHCAoAALD/////MAqHCAoA
--ALH/////MAqHCAoAALL/////MAqHCAoAALP/////MAqHCAoAALT/////MAqHCAoA
--ALX/////MAqHCAoAALb/////MAqHCAoAALf/////MAqHCAoAALj/////MAqHCAoA
--ALn/////MAqHCAoAALr/////MAqHCAoAALv/////MAqHCAoAALz/////MAqHCAoA
--AL3/////MAqHCAoAAL7/////MAqHCAoAAL//////MAqHCAoAAMD/////MAqHCAoA
--AMH/////MAqHCAoAAML/////MAqHCAoAAMP/////MAqHCAoAAMT/////MAqHCAoA
--AMX/////MAqHCAoAAMb/////MAqHCAoAAMf/////MAqHCAoAAMj/////MAqHCAoA
--AMn/////MAqHCAoAAMr/////MAqHCAoAAMv/////MAqHCAoAAMz/////MAqHCAoA
--AM3/////MAqHCAoAAM7/////MAqHCAoAAM//////MAqHCAoAAND/////MAqHCAoA
--ANH/////MAqHCAoAANL/////MAqHCAoAANP/////MAqHCAoAANT/////MAqHCAoA
--ANX/////MAqHCAoAANb/////MAqHCAoAANf/////MAqHCAoAANj/////MAqHCAoA
--ANn/////MAqHCAoAANr/////MAqHCAoAANv/////MAqHCAoAANz/////MAqHCAoA
--AN3/////MAqHCAoAAN7/////MAqHCAoAAN//////MAqHCAoAAOD/////MAqHCAoA
--AOH/////MAqHCAoAAOL/////MAqHCAoAAOP/////MAqHCAoAAOT/////MAqHCAoA
--AOX/////MAqHCAoAAOb/////MAqHCAoAAOf/////MAqHCAoAAOj/////MAqHCAoA
--AOn/////MAqHCAoAAOr/////MAqHCAoAAOv/////MAqHCAoAAOz/////MAqHCAoA
--AO3/////MAqHCAoAAO7/////MAqHCAoAAO//////MAqHCAoAAPD/////MAqHCAoA
--APH/////MAqHCAoAAPL/////MAqHCAoAAPP/////MAqHCAoAAPT/////MAqHCAoA
--APX/////MAqHCAoAAPb/////MAqHCAoAAPf/////MAqHCAoAAPj/////MAqHCAoA
--APn/////MAqHCAoAAPr/////MAqHCAoAAPv/////MAqHCAoAAPz/////MAqHCAoA
--AP3/////MAqHCAoAAP7/////MAqHCAoAAP//////MAqHCAoAAQD/////MAqHCAoA
--AQH/////MAqHCAoAAQL/////MAqHCAoAAQP/////MAqHCAoAAQT/////MAqHCAoA
--AQX/////MAqHCAoAAQb/////MAqHCAoAAQf/////MAqHCAoAAQj/////MAqHCAoA
--AQn/////MAqHCAoAAQr/////MAqHCAoAAQv/////MAqHCAoAAQz/////MAqHCAoA
--AQ3/////MAqHCAoAAQ7/////MAqHCAoAAQ//////MAqHCAoAARD/////MAqHCAoA
--ARH/////MAqHCAoAARL/////MAqHCAoAARP/////MAqHCAoAART/////MAqHCAoA
--ARX/////MAqHCAoAARb/////MAqHCAoAARf/////MAqHCAoAARj/////MAqHCAoA
--ARn/////MAqHCAoAARr/////MAqHCAoAARv/////MAqHCAoAARz/////MAqHCAoA
--AR3/////MAqHCAoAAR7/////MAqHCAoAAR//////MAqHCAoAASD/////MAqHCAoA
--ASH/////MAqHCAoAASL/////MAqHCAoAASP/////MAqHCAoAAST/////MAqHCAoA
--ASX/////MAqHCAoAASb/////MAqHCAoAASf/////MAqHCAoAASj/////MAqHCAoA
--ASn/////MAqHCAoAASr/////MAqHCAoAASv/////MAqHCAoAASz/////MAqHCAoA
--AS3/////MAqHCAoAAS7/////MAqHCAoAAS//////MAqHCAoAATD/////MAqHCAoA
--ATH/////MAqHCAoAATL/////MAqHCAoAATP/////MAqHCAoAATT/////MAqHCAoA
--ATX/////MAqHCAoAATb/////MAqHCAoAATf/////MAqHCAoAATj/////MAqHCAoA
--ATn/////MAqHCAoAATr/////MAqHCAoAATv/////MAqHCAoAATz/////MAqHCAoA
--AT3/////MAqHCAoAAT7/////MAqHCAoAAT//////MAqHCAoAAUD/////MAqHCAoA
--AUH/////MAqHCAoAAUL/////MAqHCAoAAUP/////MAqHCAoAAUT/////MAqHCAoA
--AUX/////MAqHCAoAAUb/////MAqHCAoAAUf/////MAqHCAoAAUj/////MAqHCAoA
--AUn/////MAqHCAoAAUr/////MAqHCAoAAUv/////MAqHCAoAAUz/////MAqHCAoA
--AU3/////MAqHCAoAAU7/////MAqHCAoAAU//////MAqHCAoAAVD/////MAqHCAoA
--AVH/////MAqHCAoAAVL/////MAqHCAoAAVP/////MAqHCAoAAVT/////MAqHCAoA
--AVX/////MAqHCAoAAVb/////MAqHCAoAAVf/////MAqHCAoAAVj/////MAqHCAoA
--AVn/////MAqHCAoAAVr/////MAqHCAoAAVv/////MAqHCAoAAVz/////MAqHCAoA
--AV3/////MAqHCAoAAV7/////MAqHCAoAAV//////MAqHCAoAAWD/////MAqHCAoA
--AWH/////MAqHCAoAAWL/////MAqHCAoAAWP/////MAqHCAoAAWT/////MAqHCAoA
--AWX/////MAqHCAoAAWb/////MAqHCAoAAWf/////MAqHCAoAAWj/////MAqHCAoA
--AWn/////MAqHCAoAAWr/////MAqHCAoAAWv/////MAqHCAoAAWz/////MAqHCAoA
--AW3/////MAqHCAoAAW7/////MAqHCAoAAW//////MAqHCAoAAXD/////MAqHCAoA
--AXH/////MAqHCAoAAXL/////MAqHCAoAAXP/////MAqHCAoAAXT/////MAqHCAoA
--AXX/////MAqHCAoAAXb/////MAqHCAoAAXf/////MAqHCAoAAXj/////MAqHCAoA
--AXn/////MAqHCAoAAXr/////MAqHCAoAAXv/////MAqHCAoAAXz/////MAqHCAoA
--AX3/////MAqHCAoAAX7/////MAqHCAoAAX//////MAqHCAoAAYD/////MAqHCAoA
--AYH/////MAqHCAoAAYL/////MAqHCAoAAYP/////MAqHCAoAAYT/////MAqHCAoA
--AYX/////MAqHCAoAAYb/////MAqHCAoAAYf/////MAqHCAoAAYj/////MAqHCAoA
--AYn/////MAqHCAoAAYr/////MAqHCAoAAYv/////MAqHCAoAAYz/////MAqHCAoA
--AY3/////MAqHCAoAAY7/////MAqHCAoAAY//////MAqHCAoAAZD/////MAqHCAoA
--AZH/////MAqHCAoAAZL/////MAqHCAoAAZP/////MAqHCAoAAZT/////MAqHCAoA
--AZX/////MAqHCAoAAZb/////MAqHCAoAAZf/////MAqHCAoAAZj/////MAqHCAoA
--AZn/////MAqHCAoAAZr/////MAqHCAoAAZv/////MAqHCAoAAZz/////MAqHCAoA
--AZ3/////MAqHCAoAAZ7/////MAqHCAoAAZ//////MAqHCAoAAaD/////MAqHCAoA
--AaH/////MAqHCAoAAaL/////MAqHCAoAAaP/////MAqHCAoAAaT/////MAqHCAoA
--AaX/////MAqHCAoAAab/////MAqHCAoAAaf/////MAqHCAoAAaj/////MAqHCAoA
--Aan/////MAqHCAoAAar/////MAqHCAoAAav/////MAqHCAoAAaz/////MAqHCAoA
--Aa3/////MAqHCAoAAa7/////MAqHCAoAAa//////MAqHCAoAAbD/////MAqHCAoA
--AbH/////MAqHCAoAAbL/////MAqHCAoAAbP/////MAqHCAoAAbT/////MAqHCAoA
--AbX/////MAqHCAoAAbb/////MAqHCAoAAbf/////MAqHCAoAAbj/////MAqHCAoA
--Abn/////MAqHCAoAAbr/////MAqHCAoAAbv/////MAqHCAoAAbz/////MAqHCAoA
--Ab3/////MAqHCAoAAb7/////MAqHCAoAAb//////MAqHCAoAAcD/////MAqHCAoA
--AcH/////MAqHCAoAAcL/////MAqHCAoAAcP/////MAqHCAoAAcT/////MAqHCAoA
--AcX/////MAqHCAoAAcb/////MAqHCAoAAcf/////MAqHCAoAAcj/////MAqHCAoA
--Acn/////MAqHCAoAAcr/////MAqHCAoAAcv/////MAqHCAoAAcz/////MAqHCAoA
--Ac3/////MAqHCAoAAc7/////MAqHCAoAAc//////MAqHCAoAAdD/////MAqHCAoA
--AdH/////MAqHCAoAAdL/////MAqHCAoAAdP/////MAqHCAoAAdT/////MAqHCAoA
--AdX/////MAqHCAoAAdb/////MAqHCAoAAdf/////MAqHCAoAAdj/////MAqHCAoA
--Adn/////MAqHCAoAAdr/////MAqHCAoAAdv/////MAqHCAoAAdz/////MAqHCAoA
--Ad3/////MAqHCAoAAd7/////MAqHCAoAAd//////MAqHCAoAAeD/////MAqHCAoA
--AeH/////MAqHCAoAAeL/////MAqHCAoAAeP/////MAqHCAoAAeT/////MAqHCAoA
--AeX/////MAqHCAoAAeb/////MAqHCAoAAef/////MAqHCAoAAej/////MAqHCAoA
--Aen/////MAqHCAoAAer/////MAqHCAoAAev/////MAqHCAoAAez/////MAqHCAoA
--Ae3/////MAqHCAoAAe7/////MAqHCAoAAe//////MAqHCAoAAfD/////MAqHCAoA
--AfH/////MAqHCAoAAfL/////MAqHCAoAAfP/////MAqHCAoAAfT/////MAqHCAoA
--AfX/////MAqHCAoAAfb/////MAqHCAoAAff/////MAqHCAoAAfj/////MAqHCAoA
--Afn/////MAqHCAoAAfr/////MAqHCAoAAfv/////MAqHCAoAAfz/////MAqHCAoA
--Af3/////MAqHCAoAAf7/////MAqHCAoAAf//////MAqHCAoAAgD/////MAqHCAoA
--AgH/////MAqHCAoAAgL/////MAqHCAoAAgP/////MAqHCAoAAgT/////MAqHCAoA
--AgX/////MAqHCAoAAgb/////MAqHCAoAAgf/////MAqHCAoAAgj/////MAqHCAoA
--Agn/////MAqHCAoAAgr/////MAqHCAoAAgv/////MAqHCAoAAgz/////MAqHCAoA
--Ag3/////MAqHCAoAAg7/////MAqHCAoAAg//////MAqHCAoAAhD/////MAqHCAoA
--AhH/////MAqHCAoAAhL/////MAqHCAoAAhP/////MAqHCAoAAhT/////MAqHCAoA
--AhX/////MAqHCAoAAhb/////MAqHCAoAAhf/////MAqHCAoAAhj/////MAqHCAoA
--Ahn/////MAqHCAoAAhr/////MAqHCAoAAhv/////MAqHCAoAAhz/////MAqHCAoA
--Ah3/////MAqHCAoAAh7/////MAqHCAoAAh//////MAqHCAoAAiD/////MAqHCAoA
--AiH/////MAqHCAoAAiL/////MAqHCAoAAiP/////MAqHCAoAAiT/////MAqHCAoA
--AiX/////MAqHCAoAAib/////MAqHCAoAAif/////MAqHCAoAAij/////MAqHCAoA
--Ain/////MAqHCAoAAir/////MAqHCAoAAiv/////MAqHCAoAAiz/////MAqHCAoA
--Ai3/////MAqHCAoAAi7/////MAqHCAoAAi//////MAqHCAoAAjD/////MAqHCAoA
--AjH/////MAqHCAoAAjL/////MAqHCAoAAjP/////MAqHCAoAAjT/////MAqHCAoA
--AjX/////MAqHCAoAAjb/////MAqHCAoAAjf/////MAqHCAoAAjj/////MAqHCAoA
--Ajn/////MAqHCAoAAjr/////MAqHCAoAAjv/////MAqHCAoAAjz/////MAqHCAoA
--Aj3/////MAqHCAoAAj7/////MAqHCAoAAj//////MAqHCAoAAkD/////MAqHCAoA
--AkH/////MAqHCAoAAkL/////MAqHCAoAAkP/////MAqHCAoAAkT/////MAqHCAoA
--AkX/////MAqHCAoAAkb/////MAqHCAoAAkf/////MAqHCAoAAkj/////MAqHCAoA
--Akn/////MAqHCAoAAkr/////MAqHCAoAAkv/////MAqHCAoAAkz/////MAqHCAoA
--Ak3/////MAqHCAoAAk7/////MAqHCAoAAk//////MAqHCAoAAlD/////MAqHCAoA
--AlH/////MAqHCAoAAlL/////MAqHCAoAAlP/////MAqHCAoAAlT/////MAqHCAoA
--AlX/////MAqHCAoAAlb/////MAqHCAoAAlf/////MAqHCAoAAlj/////MAqHCAoA
--Aln/////MAqHCAoAAlr/////MAqHCAoAAlv/////MAqHCAoAAlz/////MAqHCAoA
--Al3/////MAqHCAoAAl7/////MAqHCAoAAl//////MAqHCAoAAmD/////MAqHCAoA
--AmH/////MAqHCAoAAmL/////MAqHCAoAAmP/////MAqHCAoAAmT/////MAqHCAoA
--AmX/////MAqHCAoAAmb/////MAqHCAoAAmf/////MAqHCAoAAmj/////MAqHCAoA
--Amn/////MAqHCAoAAmr/////MAqHCAoAAmv/////MAqHCAoAAmz/////MAqHCAoA
--Am3/////MAqHCAoAAm7/////MAqHCAoAAm//////MAqHCAoAAnD/////MAqHCAoA
--AnH/////MAqHCAoAAnL/////MAqHCAoAAnP/////MAqHCAoAAnT/////MAqHCAoA
--AnX/////MAqHCAoAAnb/////MAqHCAoAAnf/////MAqHCAoAAnj/////MAqHCAoA
--Ann/////MAqHCAoAAnr/////MAqHCAoAAnv/////MAqHCAoAAnz/////MAqHCAoA
--An3/////MAqHCAoAAn7/////MAqHCAoAAn//////MAqHCAoAAoD/////MAqHCAoA
--AoH/////MAqHCAoAAoL/////MAqHCAoAAoP/////MAqHCAoAAoT/////MAqHCAoA
--AoX/////MAqHCAoAAob/////MAqHCAoAAof/////MAqHCAoAAoj/////MAqHCAoA
--Aon/////MAqHCAoAAor/////MAqHCAoAAov/////MAqHCAoAAoz/////MAqHCAoA
--Ao3/////MAqHCAoAAo7/////MAqHCAoAAo//////MAqHCAoAApD/////MAqHCAoA
--ApH/////MAqHCAoAApL/////MAqHCAoAApP/////MAqHCAoAApT/////MAqHCAoA
--ApX/////MAqHCAoAApb/////MAqHCAoAApf/////MAqHCAoAApj/////MAqHCAoA
--Apn/////MAqHCAoAApr/////MAqHCAoAApv/////MAqHCAoAApz/////MAqHCAoA
--Ap3/////MAqHCAoAAp7/////MAqHCAoAAp//////MAqHCAoAAqD/////MAqHCAoA
--AqH/////MAqHCAoAAqL/////MAqHCAoAAqP/////MAqHCAoAAqT/////MAqHCAoA
--AqX/////MAqHCAoAAqb/////MAqHCAoAAqf/////MAqHCAoAAqj/////MAqHCAoA
--Aqn/////MAqHCAoAAqr/////MAqHCAoAAqv/////MAqHCAoAAqz/////MAqHCAoA
--Aq3/////MAqHCAoAAq7/////MAqHCAoAAq//////MAqHCAoAArD/////MAqHCAoA
--ArH/////MAqHCAoAArL/////MAqHCAoAArP/////MAqHCAoAArT/////MAqHCAoA
--ArX/////MAqHCAoAArb/////MAqHCAoAArf/////MAqHCAoAArj/////MAqHCAoA
--Arn/////MAqHCAoAArr/////MAqHCAoAArv/////MAqHCAoAArz/////MAqHCAoA
--Ar3/////MAqHCAoAAr7/////MAqHCAoAAr//////MAqHCAoAAsD/////MAqHCAoA
--AsH/////MAqHCAoAAsL/////MAqHCAoAAsP/////MAqHCAoAAsT/////MAqHCAoA
--AsX/////MAqHCAoAAsb/////MAqHCAoAAsf/////MAqHCAoAAsj/////MAqHCAoA
--Asn/////MAqHCAoAAsr/////MAqHCAoAAsv/////MAqHCAoAAsz/////MAqHCAoA
--As3/////MAqHCAoAAs7/////MAqHCAoAAs//////MAqHCAoAAtD/////MAqHCAoA
--AtH/////MAqHCAoAAtL/////MAqHCAoAAtP/////MAqHCAoAAtT/////MAqHCAoA
--AtX/////MAqHCAoAAtb/////MAqHCAoAAtf/////MAqHCAoAAtj/////MAqHCAoA
--Atn/////MAqHCAoAAtr/////MAqHCAoAAtv/////MAqHCAoAAtz/////MAqHCAoA
--At3/////MAqHCAoAAt7/////MAqHCAoAAt//////MAqHCAoAAuD/////MAqHCAoA
--AuH/////MAqHCAoAAuL/////MAqHCAoAAuP/////MAqHCAoAAuT/////MAqHCAoA
--AuX/////MAqHCAoAAub/////MAqHCAoAAuf/////MAqHCAoAAuj/////MAqHCAoA
--Aun/////MAqHCAoAAur/////MAqHCAoAAuv/////MAqHCAoAAuz/////MAqHCAoA
--Au3/////MAqHCAoAAu7/////MAqHCAoAAu//////MAqHCAoAAvD/////MAqHCAoA
--AvH/////MAqHCAoAAvL/////MAqHCAoAAvP/////MAqHCAoAAvT/////MAqHCAoA
--AvX/////MAqHCAoAAvb/////MAqHCAoAAvf/////MAqHCAoAAvj/////MAqHCAoA
--Avn/////MAqHCAoAAvr/////MAqHCAoAAvv/////MAqHCAoAAvz/////MAqHCAoA
--Av3/////MAqHCAoAAv7/////MAqHCAoAAv//////MAqHCAoAAwD/////MAqHCAoA
--AwH/////MAqHCAoAAwL/////MAqHCAoAAwP/////MAqHCAoAAwT/////MAqHCAoA
--AwX/////MAqHCAoAAwb/////MAqHCAoAAwf/////MAqHCAoAAwj/////MAqHCAoA
--Awn/////MAqHCAoAAwr/////MAqHCAoAAwv/////MAqHCAoAAwz/////MAqHCAoA
--Aw3/////MAqHCAoAAw7/////MAqHCAoAAw//////MAqHCAoAAxD/////MAqHCAoA
--AxH/////MAqHCAoAAxL/////MAqHCAoAAxP/////MAqHCAoAAxT/////MAqHCAoA
--AxX/////MAqHCAoAAxb/////MAqHCAoAAxf/////MAqHCAoAAxj/////MAqHCAoA
--Axn/////MAqHCAoAAxr/////MAqHCAoAAxv/////MAqHCAoAAxz/////MAqHCAoA
--Ax3/////MAqHCAoAAx7/////MAqHCAoAAx//////MAqHCAoAAyD/////MAqHCAoA
--AyH/////MAqHCAoAAyL/////MAqHCAoAAyP/////MAqHCAoAAyT/////MAqHCAoA
--AyX/////MAqHCAoAAyb/////MAqHCAoAAyf/////MAqHCAoAAyj/////MAqHCAoA
--Ayn/////MAqHCAoAAyr/////MAqHCAoAAyv/////MAqHCAoAAyz/////MAqHCAoA
--Ay3/////MAqHCAoAAy7/////MAqHCAoAAy//////MAqHCAoAAzD/////MAqHCAoA
--AzH/////MAqHCAoAAzL/////MAqHCAoAAzP/////MAqHCAoAAzT/////MAqHCAoA
--AzX/////MAqHCAoAAzb/////MAqHCAoAAzf/////MAqHCAoAAzj/////MAqHCAoA
--Azn/////MAqHCAoAAzr/////MAqHCAoAAzv/////MAqHCAoAAzz/////MAqHCAoA
--Az3/////MAqHCAoAAz7/////MAqHCAoAAz//////MAqHCAoAA0D/////MAqHCAoA
--A0H/////MAqHCAoAA0L/////MAqHCAoAA0P/////MAqHCAoAA0T/////MAqHCAoA
--A0X/////MAqHCAoAA0b/////MAqHCAoAA0f/////MAqHCAoAA0j/////MAqHCAoA
--A0n/////MAqHCAoAA0r/////MAqHCAoAA0v/////MAqHCAoAA0z/////MAqHCAoA
--A03/////MAqHCAoAA07/////MAqHCAoAA0//////MAqHCAoAA1D/////MAqHCAoA
--A1H/////MAqHCAoAA1L/////MAqHCAoAA1P/////MAqHCAoAA1T/////MAqHCAoA
--A1X/////MAqHCAoAA1b/////MAqHCAoAA1f/////MAqHCAoAA1j/////MAqHCAoA
--A1n/////MAqHCAoAA1r/////MAqHCAoAA1v/////MAqHCAoAA1z/////MAqHCAoA
--A13/////MAqHCAoAA17/////MAqHCAoAA1//////MAqHCAoAA2D/////MAqHCAoA
--A2H/////MAqHCAoAA2L/////MAqHCAoAA2P/////MAqHCAoAA2T/////MAqHCAoA
--A2X/////MAqHCAoAA2b/////MAqHCAoAA2f/////MAqHCAoAA2j/////MAqHCAoA
--A2n/////MAqHCAoAA2r/////MAqHCAoAA2v/////MAqHCAoAA2z/////MAqHCAoA
--A23/////MAqHCAoAA27/////MAqHCAoAA2//////MAqHCAoAA3D/////MAqHCAoA
--A3H/////MAqHCAoAA3L/////MAqHCAoAA3P/////MAqHCAoAA3T/////MAqHCAoA
--A3X/////MAqHCAoAA3b/////MAqHCAoAA3f/////MAqHCAoAA3j/////MAqHCAoA
--A3n/////MAqHCAoAA3r/////MAqHCAoAA3v/////MAqHCAoAA3z/////MAqHCAoA
--A33/////MAqHCAoAA37/////MAqHCAoAA3//////MAqHCAoAA4D/////MAqHCAoA
--A4H/////MAqHCAoAA4L/////MAqHCAoAA4P/////MAqHCAoAA4T/////MAqHCAoA
--A4X/////MAqHCAoAA4b/////MAqHCAoAA4f/////MAqHCAoAA4j/////MAqHCAoA
--A4n/////MAqHCAoAA4r/////MAqHCAoAA4v/////MAqHCAoAA4z/////MAqHCAoA
--A43/////MAqHCAoAA47/////MAqHCAoAA4//////MAqHCAoAA5D/////MAqHCAoA
--A5H/////MAqHCAoAA5L/////MAqHCAoAA5P/////MAqHCAoAA5T/////MAqHCAoA
--A5X/////MAqHCAoAA5b/////MAqHCAoAA5f/////MAqHCAoAA5j/////MAqHCAoA
--A5n/////MAqHCAoAA5r/////MAqHCAoAA5v/////MAqHCAoAA5z/////MAqHCAoA
--A53/////MAqHCAoAA57/////MAqHCAoAA5//////MAqHCAoAA6D/////MAqHCAoA
--A6H/////MAqHCAoAA6L/////MAqHCAoAA6P/////MAqHCAoAA6T/////MAqHCAoA
--A6X/////MAqHCAoAA6b/////MAqHCAoAA6f/////MAqHCAoAA6j/////MAqHCAoA
--A6n/////MAqHCAoAA6r/////MAqHCAoAA6v/////MAqHCAoAA6z/////MAqHCAoA
--A63/////MAqHCAoAA67/////MAqHCAoAA6//////MAqHCAoAA7D/////MAqHCAoA
--A7H/////MAqHCAoAA7L/////MAqHCAoAA7P/////MAqHCAoAA7T/////MAqHCAoA
--A7X/////MAqHCAoAA7b/////MAqHCAoAA7f/////MAqHCAoAA7j/////MAqHCAoA
--A7n/////MAqHCAoAA7r/////MAqHCAoAA7v/////MAqHCAoAA7z/////MAqHCAoA
--A73/////MAqHCAoAA77/////MAqHCAoAA7//////MAqHCAoAA8D/////MAqHCAoA
--A8H/////MAqHCAoAA8L/////MAqHCAoAA8P/////MAqHCAoAA8T/////MAqHCAoA
--A8X/////MAqHCAoAA8b/////MAqHCAoAA8f/////MAqHCAoAA8j/////MAqHCAoA
--A8n/////MAqHCAoAA8r/////MAqHCAoAA8v/////MAqHCAoAA8z/////MAqHCAoA
--A83/////MAqHCAoAA87/////MAqHCAoAA8//////MAqHCAoAA9D/////MAqHCAoA
--A9H/////MAqHCAoAA9L/////MAqHCAoAA9P/////MAqHCAoAA9T/////MAqHCAoA
--A9X/////MAqHCAoAA9b/////MAqHCAoAA9f/////MAqHCAoAA9j/////MAqHCAoA
--A9n/////MAqHCAoAA9r/////MAqHCAoAA9v/////MAqHCAoAA9z/////MAqHCAoA
--A93/////MAqHCAoAA97/////MAqHCAoAA9//////MAqHCAoAA+D/////MAqHCAoA
--A+H/////MAqHCAoAA+L/////MAqHCAoAA+P/////MAqHCAoAA+T/////MAqHCAoA
--A+X/////MAqHCAoAA+b/////MAqHCAoAA+f/////MAqHCAoAA+j/////MAqHCAoA
--A+n/////MAqHCAoAA+r/////MAqHCAoAA+v/////MAqHCAoAA+z/////MAqHCAoA
--A+3/////MAqHCAoAA+7/////MAqHCAoAA+//////MAqHCAoAA/D/////MAqHCAoA
--A/H/////MAqHCAoAA/L/////MAqHCAoAA/P/////MAqHCAoAA/T/////MAqHCAoA
--A/X/////MAqHCAoAA/b/////MAqHCAoAA/f/////MAqHCAoAA/j/////MAqHCAoA
--A/n/////MAqHCAoAA/r/////MAqHCAoAA/v/////MAqHCAoAA/z/////MAqHCAoA
--A/3/////MAqHCAoAA/7/////MAqHCAoAA///////MAqHCAoABAD/////MBGkDzAN
--MQswCQYDVQQDDAJ0MDARpA8wDTELMAkGA1UEAwwCdDEwEaQPMA0xCzAJBgNVBAMM
--AnQyMBGkDzANMQswCQYDVQQDDAJ0MzARpA8wDTELMAkGA1UEAwwCdDQwEaQPMA0x
--CzAJBgNVBAMMAnQ1MBGkDzANMQswCQYDVQQDDAJ0NjARpA8wDTELMAkGA1UEAwwC
--dDcwEaQPMA0xCzAJBgNVBAMMAnQ4MBGkDzANMQswCQYDVQQDDAJ0OTASpBAwDjEM
--MAoGA1UEAwwDdDEwMBKkEDAOMQwwCgYDVQQDDAN0MTEwEqQQMA4xDDAKBgNVBAMM
--A3QxMjASpBAwDjEMMAoGA1UEAwwDdDEzMBKkEDAOMQwwCgYDVQQDDAN0MTQwEqQQ
--MA4xDDAKBgNVBAMMA3QxNTASpBAwDjEMMAoGA1UEAwwDdDE2MBKkEDAOMQwwCgYD
--VQQDDAN0MTcwEqQQMA4xDDAKBgNVBAMMA3QxODASpBAwDjEMMAoGA1UEAwwDdDE5
--MBKkEDAOMQwwCgYDVQQDDAN0MjAwEqQQMA4xDDAKBgNVBAMMA3QyMTASpBAwDjEM
--MAoGA1UEAwwDdDIyMBKkEDAOMQwwCgYDVQQDDAN0MjMwEqQQMA4xDDAKBgNVBAMM
--A3QyNDASpBAwDjEMMAoGA1UEAwwDdDI1MBKkEDAOMQwwCgYDVQQDDAN0MjYwEqQQ
--MA4xDDAKBgNVBAMMA3QyNzASpBAwDjEMMAoGA1UEAwwDdDI4MBKkEDAOMQwwCgYD
--VQQDDAN0MjkwEqQQMA4xDDAKBgNVBAMMA3QzMDASpBAwDjEMMAoGA1UEAwwDdDMx
--MBKkEDAOMQwwCgYDVQQDDAN0MzIwEqQQMA4xDDAKBgNVBAMMA3QzMzASpBAwDjEM
--MAoGA1UEAwwDdDM0MBKkEDAOMQwwCgYDVQQDDAN0MzUwEqQQMA4xDDAKBgNVBAMM
--A3QzNjASpBAwDjEMMAoGA1UEAwwDdDM3MBKkEDAOMQwwCgYDVQQDDAN0MzgwEqQQ
--MA4xDDAKBgNVBAMMA3QzOTASpBAwDjEMMAoGA1UEAwwDdDQwMBKkEDAOMQwwCgYD
--VQQDDAN0NDEwEqQQMA4xDDAKBgNVBAMMA3Q0MjASpBAwDjEMMAoGA1UEAwwDdDQz
--MBKkEDAOMQwwCgYDVQQDDAN0NDQwEqQQMA4xDDAKBgNVBAMMA3Q0NTASpBAwDjEM
--MAoGA1UEAwwDdDQ2MBKkEDAOMQwwCgYDVQQDDAN0NDcwEqQQMA4xDDAKBgNVBAMM
--A3Q0ODASpBAwDjEMMAoGA1UEAwwDdDQ5MBKkEDAOMQwwCgYDVQQDDAN0NTAwEqQQ
--MA4xDDAKBgNVBAMMA3Q1MTASpBAwDjEMMAoGA1UEAwwDdDUyMBKkEDAOMQwwCgYD
--VQQDDAN0NTMwEqQQMA4xDDAKBgNVBAMMA3Q1NDASpBAwDjEMMAoGA1UEAwwDdDU1
--MBKkEDAOMQwwCgYDVQQDDAN0NTYwEqQQMA4xDDAKBgNVBAMMA3Q1NzASpBAwDjEM
--MAoGA1UEAwwDdDU4MBKkEDAOMQwwCgYDVQQDDAN0NTkwEqQQMA4xDDAKBgNVBAMM
--A3Q2MDASpBAwDjEMMAoGA1UEAwwDdDYxMBKkEDAOMQwwCgYDVQQDDAN0NjIwEqQQ
--MA4xDDAKBgNVBAMMA3Q2MzASpBAwDjEMMAoGA1UEAwwDdDY0MBKkEDAOMQwwCgYD
--VQQDDAN0NjUwEqQQMA4xDDAKBgNVBAMMA3Q2NjASpBAwDjEMMAoGA1UEAwwDdDY3
--MBKkEDAOMQwwCgYDVQQDDAN0NjgwEqQQMA4xDDAKBgNVBAMMA3Q2OTASpBAwDjEM
--MAoGA1UEAwwDdDcwMBKkEDAOMQwwCgYDVQQDDAN0NzEwEqQQMA4xDDAKBgNVBAMM
--A3Q3MjASpBAwDjEMMAoGA1UEAwwDdDczMBKkEDAOMQwwCgYDVQQDDAN0NzQwEqQQ
--MA4xDDAKBgNVBAMMA3Q3NTASpBAwDjEMMAoGA1UEAwwDdDc2MBKkEDAOMQwwCgYD
--VQQDDAN0NzcwEqQQMA4xDDAKBgNVBAMMA3Q3ODASpBAwDjEMMAoGA1UEAwwDdDc5
--MBKkEDAOMQwwCgYDVQQDDAN0ODAwEqQQMA4xDDAKBgNVBAMMA3Q4MTASpBAwDjEM
--MAoGA1UEAwwDdDgyMBKkEDAOMQwwCgYDVQQDDAN0ODMwEqQQMA4xDDAKBgNVBAMM
--A3Q4NDASpBAwDjEMMAoGA1UEAwwDdDg1MBKkEDAOMQwwCgYDVQQDDAN0ODYwEqQQ
--MA4xDDAKBgNVBAMMA3Q4NzASpBAwDjEMMAoGA1UEAwwDdDg4MBKkEDAOMQwwCgYD
--VQQDDAN0ODkwEqQQMA4xDDAKBgNVBAMMA3Q5MDASpBAwDjEMMAoGA1UEAwwDdDkx
--MBKkEDAOMQwwCgYDVQQDDAN0OTIwEqQQMA4xDDAKBgNVBAMMA3Q5MzASpBAwDjEM
--MAoGA1UEAwwDdDk0MBKkEDAOMQwwCgYDVQQDDAN0OTUwEqQQMA4xDDAKBgNVBAMM
--A3Q5NjASpBAwDjEMMAoGA1UEAwwDdDk3MBKkEDAOMQwwCgYDVQQDDAN0OTgwEqQQ
--MA4xDDAKBgNVBAMMA3Q5OTATpBEwDzENMAsGA1UEAwwEdDEwMDATpBEwDzENMAsG
--A1UEAwwEdDEwMTATpBEwDzENMAsGA1UEAwwEdDEwMjATpBEwDzENMAsGA1UEAwwE
--dDEwMzATpBEwDzENMAsGA1UEAwwEdDEwNDATpBEwDzENMAsGA1UEAwwEdDEwNTAT
--pBEwDzENMAsGA1UEAwwEdDEwNjATpBEwDzENMAsGA1UEAwwEdDEwNzATpBEwDzEN
--MAsGA1UEAwwEdDEwODATpBEwDzENMAsGA1UEAwwEdDEwOTATpBEwDzENMAsGA1UE
--AwwEdDExMDATpBEwDzENMAsGA1UEAwwEdDExMTATpBEwDzENMAsGA1UEAwwEdDEx
--MjATpBEwDzENMAsGA1UEAwwEdDExMzATpBEwDzENMAsGA1UEAwwEdDExNDATpBEw
--DzENMAsGA1UEAwwEdDExNTATpBEwDzENMAsGA1UEAwwEdDExNjATpBEwDzENMAsG
--A1UEAwwEdDExNzATpBEwDzENMAsGA1UEAwwEdDExODATpBEwDzENMAsGA1UEAwwE
--dDExOTATpBEwDzENMAsGA1UEAwwEdDEyMDATpBEwDzENMAsGA1UEAwwEdDEyMTAT
--pBEwDzENMAsGA1UEAwwEdDEyMjATpBEwDzENMAsGA1UEAwwEdDEyMzATpBEwDzEN
--MAsGA1UEAwwEdDEyNDATpBEwDzENMAsGA1UEAwwEdDEyNTATpBEwDzENMAsGA1UE
--AwwEdDEyNjATpBEwDzENMAsGA1UEAwwEdDEyNzATpBEwDzENMAsGA1UEAwwEdDEy
--ODATpBEwDzENMAsGA1UEAwwEdDEyOTATpBEwDzENMAsGA1UEAwwEdDEzMDATpBEw
--DzENMAsGA1UEAwwEdDEzMTATpBEwDzENMAsGA1UEAwwEdDEzMjATpBEwDzENMAsG
--A1UEAwwEdDEzMzATpBEwDzENMAsGA1UEAwwEdDEzNDATpBEwDzENMAsGA1UEAwwE
--dDEzNTATpBEwDzENMAsGA1UEAwwEdDEzNjATpBEwDzENMAsGA1UEAwwEdDEzNzAT
--pBEwDzENMAsGA1UEAwwEdDEzODATpBEwDzENMAsGA1UEAwwEdDEzOTATpBEwDzEN
--MAsGA1UEAwwEdDE0MDATpBEwDzENMAsGA1UEAwwEdDE0MTATpBEwDzENMAsGA1UE
--AwwEdDE0MjATpBEwDzENMAsGA1UEAwwEdDE0MzATpBEwDzENMAsGA1UEAwwEdDE0
--NDATpBEwDzENMAsGA1UEAwwEdDE0NTATpBEwDzENMAsGA1UEAwwEdDE0NjATpBEw
--DzENMAsGA1UEAwwEdDE0NzATpBEwDzENMAsGA1UEAwwEdDE0ODATpBEwDzENMAsG
--A1UEAwwEdDE0OTATpBEwDzENMAsGA1UEAwwEdDE1MDATpBEwDzENMAsGA1UEAwwE
--dDE1MTATpBEwDzENMAsGA1UEAwwEdDE1MjATpBEwDzENMAsGA1UEAwwEdDE1MzAT
--pBEwDzENMAsGA1UEAwwEdDE1NDATpBEwDzENMAsGA1UEAwwEdDE1NTATpBEwDzEN
--MAsGA1UEAwwEdDE1NjATpBEwDzENMAsGA1UEAwwEdDE1NzATpBEwDzENMAsGA1UE
--AwwEdDE1ODATpBEwDzENMAsGA1UEAwwEdDE1OTATpBEwDzENMAsGA1UEAwwEdDE2
--MDATpBEwDzENMAsGA1UEAwwEdDE2MTATpBEwDzENMAsGA1UEAwwEdDE2MjATpBEw
--DzENMAsGA1UEAwwEdDE2MzATpBEwDzENMAsGA1UEAwwEdDE2NDATpBEwDzENMAsG
--A1UEAwwEdDE2NTATpBEwDzENMAsGA1UEAwwEdDE2NjATpBEwDzENMAsGA1UEAwwE
--dDE2NzATpBEwDzENMAsGA1UEAwwEdDE2ODATpBEwDzENMAsGA1UEAwwEdDE2OTAT
--pBEwDzENMAsGA1UEAwwEdDE3MDATpBEwDzENMAsGA1UEAwwEdDE3MTATpBEwDzEN
--MAsGA1UEAwwEdDE3MjATpBEwDzENMAsGA1UEAwwEdDE3MzATpBEwDzENMAsGA1UE
--AwwEdDE3NDATpBEwDzENMAsGA1UEAwwEdDE3NTATpBEwDzENMAsGA1UEAwwEdDE3
--NjATpBEwDzENMAsGA1UEAwwEdDE3NzATpBEwDzENMAsGA1UEAwwEdDE3ODATpBEw
--DzENMAsGA1UEAwwEdDE3OTATpBEwDzENMAsGA1UEAwwEdDE4MDATpBEwDzENMAsG
--A1UEAwwEdDE4MTATpBEwDzENMAsGA1UEAwwEdDE4MjATpBEwDzENMAsGA1UEAwwE
--dDE4MzATpBEwDzENMAsGA1UEAwwEdDE4NDATpBEwDzENMAsGA1UEAwwEdDE4NTAT
--pBEwDzENMAsGA1UEAwwEdDE4NjATpBEwDzENMAsGA1UEAwwEdDE4NzATpBEwDzEN
--MAsGA1UEAwwEdDE4ODATpBEwDzENMAsGA1UEAwwEdDE4OTATpBEwDzENMAsGA1UE
--AwwEdDE5MDATpBEwDzENMAsGA1UEAwwEdDE5MTATpBEwDzENMAsGA1UEAwwEdDE5
--MjATpBEwDzENMAsGA1UEAwwEdDE5MzATpBEwDzENMAsGA1UEAwwEdDE5NDATpBEw
--DzENMAsGA1UEAwwEdDE5NTATpBEwDzENMAsGA1UEAwwEdDE5NjATpBEwDzENMAsG
--A1UEAwwEdDE5NzATpBEwDzENMAsGA1UEAwwEdDE5ODATpBEwDzENMAsGA1UEAwwE
--dDE5OTATpBEwDzENMAsGA1UEAwwEdDIwMDATpBEwDzENMAsGA1UEAwwEdDIwMTAT
--pBEwDzENMAsGA1UEAwwEdDIwMjATpBEwDzENMAsGA1UEAwwEdDIwMzATpBEwDzEN
--MAsGA1UEAwwEdDIwNDATpBEwDzENMAsGA1UEAwwEdDIwNTATpBEwDzENMAsGA1UE
--AwwEdDIwNjATpBEwDzENMAsGA1UEAwwEdDIwNzATpBEwDzENMAsGA1UEAwwEdDIw
--ODATpBEwDzENMAsGA1UEAwwEdDIwOTATpBEwDzENMAsGA1UEAwwEdDIxMDATpBEw
--DzENMAsGA1UEAwwEdDIxMTATpBEwDzENMAsGA1UEAwwEdDIxMjATpBEwDzENMAsG
--A1UEAwwEdDIxMzATpBEwDzENMAsGA1UEAwwEdDIxNDATpBEwDzENMAsGA1UEAwwE
--dDIxNTATpBEwDzENMAsGA1UEAwwEdDIxNjATpBEwDzENMAsGA1UEAwwEdDIxNzAT
--pBEwDzENMAsGA1UEAwwEdDIxODATpBEwDzENMAsGA1UEAwwEdDIxOTATpBEwDzEN
--MAsGA1UEAwwEdDIyMDATpBEwDzENMAsGA1UEAwwEdDIyMTATpBEwDzENMAsGA1UE
--AwwEdDIyMjATpBEwDzENMAsGA1UEAwwEdDIyMzATpBEwDzENMAsGA1UEAwwEdDIy
--NDATpBEwDzENMAsGA1UEAwwEdDIyNTATpBEwDzENMAsGA1UEAwwEdDIyNjATpBEw
--DzENMAsGA1UEAwwEdDIyNzATpBEwDzENMAsGA1UEAwwEdDIyODATpBEwDzENMAsG
--A1UEAwwEdDIyOTATpBEwDzENMAsGA1UEAwwEdDIzMDATpBEwDzENMAsGA1UEAwwE
--dDIzMTATpBEwDzENMAsGA1UEAwwEdDIzMjATpBEwDzENMAsGA1UEAwwEdDIzMzAT
--pBEwDzENMAsGA1UEAwwEdDIzNDATpBEwDzENMAsGA1UEAwwEdDIzNTATpBEwDzEN
--MAsGA1UEAwwEdDIzNjATpBEwDzENMAsGA1UEAwwEdDIzNzATpBEwDzENMAsGA1UE
--AwwEdDIzODATpBEwDzENMAsGA1UEAwwEdDIzOTATpBEwDzENMAsGA1UEAwwEdDI0
--MDATpBEwDzENMAsGA1UEAwwEdDI0MTATpBEwDzENMAsGA1UEAwwEdDI0MjATpBEw
--DzENMAsGA1UEAwwEdDI0MzATpBEwDzENMAsGA1UEAwwEdDI0NDATpBEwDzENMAsG
--A1UEAwwEdDI0NTATpBEwDzENMAsGA1UEAwwEdDI0NjATpBEwDzENMAsGA1UEAwwE
--dDI0NzATpBEwDzENMAsGA1UEAwwEdDI0ODATpBEwDzENMAsGA1UEAwwEdDI0OTAT
--pBEwDzENMAsGA1UEAwwEdDI1MDATpBEwDzENMAsGA1UEAwwEdDI1MTATpBEwDzEN
--MAsGA1UEAwwEdDI1MjATpBEwDzENMAsGA1UEAwwEdDI1MzATpBEwDzENMAsGA1UE
--AwwEdDI1NDATpBEwDzENMAsGA1UEAwwEdDI1NTATpBEwDzENMAsGA1UEAwwEdDI1
--NjATpBEwDzENMAsGA1UEAwwEdDI1NzATpBEwDzENMAsGA1UEAwwEdDI1ODATpBEw
--DzENMAsGA1UEAwwEdDI1OTATpBEwDzENMAsGA1UEAwwEdDI2MDATpBEwDzENMAsG
--A1UEAwwEdDI2MTATpBEwDzENMAsGA1UEAwwEdDI2MjATpBEwDzENMAsGA1UEAwwE
--dDI2MzATpBEwDzENMAsGA1UEAwwEdDI2NDATpBEwDzENMAsGA1UEAwwEdDI2NTAT
--pBEwDzENMAsGA1UEAwwEdDI2NjATpBEwDzENMAsGA1UEAwwEdDI2NzATpBEwDzEN
--MAsGA1UEAwwEdDI2ODATpBEwDzENMAsGA1UEAwwEdDI2OTATpBEwDzENMAsGA1UE
--AwwEdDI3MDATpBEwDzENMAsGA1UEAwwEdDI3MTATpBEwDzENMAsGA1UEAwwEdDI3
--MjATpBEwDzENMAsGA1UEAwwEdDI3MzATpBEwDzENMAsGA1UEAwwEdDI3NDATpBEw
--DzENMAsGA1UEAwwEdDI3NTATpBEwDzENMAsGA1UEAwwEdDI3NjATpBEwDzENMAsG
--A1UEAwwEdDI3NzATpBEwDzENMAsGA1UEAwwEdDI3ODATpBEwDzENMAsGA1UEAwwE
--dDI3OTATpBEwDzENMAsGA1UEAwwEdDI4MDATpBEwDzENMAsGA1UEAwwEdDI4MTAT
--pBEwDzENMAsGA1UEAwwEdDI4MjATpBEwDzENMAsGA1UEAwwEdDI4MzATpBEwDzEN
--MAsGA1UEAwwEdDI4NDATpBEwDzENMAsGA1UEAwwEdDI4NTATpBEwDzENMAsGA1UE
--AwwEdDI4NjATpBEwDzENMAsGA1UEAwwEdDI4NzATpBEwDzENMAsGA1UEAwwEdDI4
--ODATpBEwDzENMAsGA1UEAwwEdDI4OTATpBEwDzENMAsGA1UEAwwEdDI5MDATpBEw
--DzENMAsGA1UEAwwEdDI5MTATpBEwDzENMAsGA1UEAwwEdDI5MjATpBEwDzENMAsG
--A1UEAwwEdDI5MzATpBEwDzENMAsGA1UEAwwEdDI5NDATpBEwDzENMAsGA1UEAwwE
--dDI5NTATpBEwDzENMAsGA1UEAwwEdDI5NjATpBEwDzENMAsGA1UEAwwEdDI5NzAT
--pBEwDzENMAsGA1UEAwwEdDI5ODATpBEwDzENMAsGA1UEAwwEdDI5OTATpBEwDzEN
--MAsGA1UEAwwEdDMwMDATpBEwDzENMAsGA1UEAwwEdDMwMTATpBEwDzENMAsGA1UE
--AwwEdDMwMjATpBEwDzENMAsGA1UEAwwEdDMwMzATpBEwDzENMAsGA1UEAwwEdDMw
--NDATpBEwDzENMAsGA1UEAwwEdDMwNTATpBEwDzENMAsGA1UEAwwEdDMwNjATpBEw
--DzENMAsGA1UEAwwEdDMwNzATpBEwDzENMAsGA1UEAwwEdDMwODATpBEwDzENMAsG
--A1UEAwwEdDMwOTATpBEwDzENMAsGA1UEAwwEdDMxMDATpBEwDzENMAsGA1UEAwwE
--dDMxMTATpBEwDzENMAsGA1UEAwwEdDMxMjATpBEwDzENMAsGA1UEAwwEdDMxMzAT
--pBEwDzENMAsGA1UEAwwEdDMxNDATpBEwDzENMAsGA1UEAwwEdDMxNTATpBEwDzEN
--MAsGA1UEAwwEdDMxNjATpBEwDzENMAsGA1UEAwwEdDMxNzATpBEwDzENMAsGA1UE
--AwwEdDMxODATpBEwDzENMAsGA1UEAwwEdDMxOTATpBEwDzENMAsGA1UEAwwEdDMy
--MDATpBEwDzENMAsGA1UEAwwEdDMyMTATpBEwDzENMAsGA1UEAwwEdDMyMjATpBEw
--DzENMAsGA1UEAwwEdDMyMzATpBEwDzENMAsGA1UEAwwEdDMyNDATpBEwDzENMAsG
--A1UEAwwEdDMyNTATpBEwDzENMAsGA1UEAwwEdDMyNjATpBEwDzENMAsGA1UEAwwE
--dDMyNzATpBEwDzENMAsGA1UEAwwEdDMyODATpBEwDzENMAsGA1UEAwwEdDMyOTAT
--pBEwDzENMAsGA1UEAwwEdDMzMDATpBEwDzENMAsGA1UEAwwEdDMzMTATpBEwDzEN
--MAsGA1UEAwwEdDMzMjATpBEwDzENMAsGA1UEAwwEdDMzMzATpBEwDzENMAsGA1UE
--AwwEdDMzNDATpBEwDzENMAsGA1UEAwwEdDMzNTATpBEwDzENMAsGA1UEAwwEdDMz
--NjATpBEwDzENMAsGA1UEAwwEdDMzNzATpBEwDzENMAsGA1UEAwwEdDMzODATpBEw
--DzENMAsGA1UEAwwEdDMzOTATpBEwDzENMAsGA1UEAwwEdDM0MDATpBEwDzENMAsG
--A1UEAwwEdDM0MTATpBEwDzENMAsGA1UEAwwEdDM0MjATpBEwDzENMAsGA1UEAwwE
--dDM0MzATpBEwDzENMAsGA1UEAwwEdDM0NDATpBEwDzENMAsGA1UEAwwEdDM0NTAT
--pBEwDzENMAsGA1UEAwwEdDM0NjATpBEwDzENMAsGA1UEAwwEdDM0NzATpBEwDzEN
--MAsGA1UEAwwEdDM0ODATpBEwDzENMAsGA1UEAwwEdDM0OTATpBEwDzENMAsGA1UE
--AwwEdDM1MDATpBEwDzENMAsGA1UEAwwEdDM1MTATpBEwDzENMAsGA1UEAwwEdDM1
--MjATpBEwDzENMAsGA1UEAwwEdDM1MzATpBEwDzENMAsGA1UEAwwEdDM1NDATpBEw
--DzENMAsGA1UEAwwEdDM1NTATpBEwDzENMAsGA1UEAwwEdDM1NjATpBEwDzENMAsG
--A1UEAwwEdDM1NzATpBEwDzENMAsGA1UEAwwEdDM1ODATpBEwDzENMAsGA1UEAwwE
--dDM1OTATpBEwDzENMAsGA1UEAwwEdDM2MDATpBEwDzENMAsGA1UEAwwEdDM2MTAT
--pBEwDzENMAsGA1UEAwwEdDM2MjATpBEwDzENMAsGA1UEAwwEdDM2MzATpBEwDzEN
--MAsGA1UEAwwEdDM2NDATpBEwDzENMAsGA1UEAwwEdDM2NTATpBEwDzENMAsGA1UE
--AwwEdDM2NjATpBEwDzENMAsGA1UEAwwEdDM2NzATpBEwDzENMAsGA1UEAwwEdDM2
--ODATpBEwDzENMAsGA1UEAwwEdDM2OTATpBEwDzENMAsGA1UEAwwEdDM3MDATpBEw
--DzENMAsGA1UEAwwEdDM3MTATpBEwDzENMAsGA1UEAwwEdDM3MjATpBEwDzENMAsG
--A1UEAwwEdDM3MzATpBEwDzENMAsGA1UEAwwEdDM3NDATpBEwDzENMAsGA1UEAwwE
--dDM3NTATpBEwDzENMAsGA1UEAwwEdDM3NjATpBEwDzENMAsGA1UEAwwEdDM3NzAT
--pBEwDzENMAsGA1UEAwwEdDM3ODATpBEwDzENMAsGA1UEAwwEdDM3OTATpBEwDzEN
--MAsGA1UEAwwEdDM4MDATpBEwDzENMAsGA1UEAwwEdDM4MTATpBEwDzENMAsGA1UE
--AwwEdDM4MjATpBEwDzENMAsGA1UEAwwEdDM4MzATpBEwDzENMAsGA1UEAwwEdDM4
--NDATpBEwDzENMAsGA1UEAwwEdDM4NTATpBEwDzENMAsGA1UEAwwEdDM4NjATpBEw
--DzENMAsGA1UEAwwEdDM4NzATpBEwDzENMAsGA1UEAwwEdDM4ODATpBEwDzENMAsG
--A1UEAwwEdDM4OTATpBEwDzENMAsGA1UEAwwEdDM5MDATpBEwDzENMAsGA1UEAwwE
--dDM5MTATpBEwDzENMAsGA1UEAwwEdDM5MjATpBEwDzENMAsGA1UEAwwEdDM5MzAT
--pBEwDzENMAsGA1UEAwwEdDM5NDATpBEwDzENMAsGA1UEAwwEdDM5NTATpBEwDzEN
--MAsGA1UEAwwEdDM5NjATpBEwDzENMAsGA1UEAwwEdDM5NzATpBEwDzENMAsGA1UE
--AwwEdDM5ODATpBEwDzENMAsGA1UEAwwEdDM5OTATpBEwDzENMAsGA1UEAwwEdDQw
--MDATpBEwDzENMAsGA1UEAwwEdDQwMTATpBEwDzENMAsGA1UEAwwEdDQwMjATpBEw
--DzENMAsGA1UEAwwEdDQwMzATpBEwDzENMAsGA1UEAwwEdDQwNDATpBEwDzENMAsG
--A1UEAwwEdDQwNTATpBEwDzENMAsGA1UEAwwEdDQwNjATpBEwDzENMAsGA1UEAwwE
--dDQwNzATpBEwDzENMAsGA1UEAwwEdDQwODATpBEwDzENMAsGA1UEAwwEdDQwOTAT
--pBEwDzENMAsGA1UEAwwEdDQxMDATpBEwDzENMAsGA1UEAwwEdDQxMTATpBEwDzEN
--MAsGA1UEAwwEdDQxMjATpBEwDzENMAsGA1UEAwwEdDQxMzATpBEwDzENMAsGA1UE
--AwwEdDQxNDATpBEwDzENMAsGA1UEAwwEdDQxNTATpBEwDzENMAsGA1UEAwwEdDQx
--NjATpBEwDzENMAsGA1UEAwwEdDQxNzATpBEwDzENMAsGA1UEAwwEdDQxODATpBEw
--DzENMAsGA1UEAwwEdDQxOTATpBEwDzENMAsGA1UEAwwEdDQyMDATpBEwDzENMAsG
--A1UEAwwEdDQyMTATpBEwDzENMAsGA1UEAwwEdDQyMjATpBEwDzENMAsGA1UEAwwE
--dDQyMzATpBEwDzENMAsGA1UEAwwEdDQyNDATpBEwDzENMAsGA1UEAwwEdDQyNTAT
--pBEwDzENMAsGA1UEAwwEdDQyNjATpBEwDzENMAsGA1UEAwwEdDQyNzATpBEwDzEN
--MAsGA1UEAwwEdDQyODATpBEwDzENMAsGA1UEAwwEdDQyOTATpBEwDzENMAsGA1UE
--AwwEdDQzMDATpBEwDzENMAsGA1UEAwwEdDQzMTATpBEwDzENMAsGA1UEAwwEdDQz
--MjATpBEwDzENMAsGA1UEAwwEdDQzMzATpBEwDzENMAsGA1UEAwwEdDQzNDATpBEw
--DzENMAsGA1UEAwwEdDQzNTATpBEwDzENMAsGA1UEAwwEdDQzNjATpBEwDzENMAsG
--A1UEAwwEdDQzNzATpBEwDzENMAsGA1UEAwwEdDQzODATpBEwDzENMAsGA1UEAwwE
--dDQzOTATpBEwDzENMAsGA1UEAwwEdDQ0MDATpBEwDzENMAsGA1UEAwwEdDQ0MTAT
--pBEwDzENMAsGA1UEAwwEdDQ0MjATpBEwDzENMAsGA1UEAwwEdDQ0MzATpBEwDzEN
--MAsGA1UEAwwEdDQ0NDATpBEwDzENMAsGA1UEAwwEdDQ0NTATpBEwDzENMAsGA1UE
--AwwEdDQ0NjATpBEwDzENMAsGA1UEAwwEdDQ0NzATpBEwDzENMAsGA1UEAwwEdDQ0
--ODATpBEwDzENMAsGA1UEAwwEdDQ0OTATpBEwDzENMAsGA1UEAwwEdDQ1MDATpBEw
--DzENMAsGA1UEAwwEdDQ1MTATpBEwDzENMAsGA1UEAwwEdDQ1MjATpBEwDzENMAsG
--A1UEAwwEdDQ1MzATpBEwDzENMAsGA1UEAwwEdDQ1NDATpBEwDzENMAsGA1UEAwwE
--dDQ1NTATpBEwDzENMAsGA1UEAwwEdDQ1NjATpBEwDzENMAsGA1UEAwwEdDQ1NzAT
--pBEwDzENMAsGA1UEAwwEdDQ1ODATpBEwDzENMAsGA1UEAwwEdDQ1OTATpBEwDzEN
--MAsGA1UEAwwEdDQ2MDATpBEwDzENMAsGA1UEAwwEdDQ2MTATpBEwDzENMAsGA1UE
--AwwEdDQ2MjATpBEwDzENMAsGA1UEAwwEdDQ2MzATpBEwDzENMAsGA1UEAwwEdDQ2
--NDATpBEwDzENMAsGA1UEAwwEdDQ2NTATpBEwDzENMAsGA1UEAwwEdDQ2NjATpBEw
--DzENMAsGA1UEAwwEdDQ2NzATpBEwDzENMAsGA1UEAwwEdDQ2ODATpBEwDzENMAsG
--A1UEAwwEdDQ2OTATpBEwDzENMAsGA1UEAwwEdDQ3MDATpBEwDzENMAsGA1UEAwwE
--dDQ3MTATpBEwDzENMAsGA1UEAwwEdDQ3MjATpBEwDzENMAsGA1UEAwwEdDQ3MzAT
--pBEwDzENMAsGA1UEAwwEdDQ3NDATpBEwDzENMAsGA1UEAwwEdDQ3NTATpBEwDzEN
--MAsGA1UEAwwEdDQ3NjATpBEwDzENMAsGA1UEAwwEdDQ3NzATpBEwDzENMAsGA1UE
--AwwEdDQ3ODATpBEwDzENMAsGA1UEAwwEdDQ3OTATpBEwDzENMAsGA1UEAwwEdDQ4
--MDATpBEwDzENMAsGA1UEAwwEdDQ4MTATpBEwDzENMAsGA1UEAwwEdDQ4MjATpBEw
--DzENMAsGA1UEAwwEdDQ4MzATpBEwDzENMAsGA1UEAwwEdDQ4NDATpBEwDzENMAsG
--A1UEAwwEdDQ4NTATpBEwDzENMAsGA1UEAwwEdDQ4NjATpBEwDzENMAsGA1UEAwwE
--dDQ4NzATpBEwDzENMAsGA1UEAwwEdDQ4ODATpBEwDzENMAsGA1UEAwwEdDQ4OTAT
--pBEwDzENMAsGA1UEAwwEdDQ5MDATpBEwDzENMAsGA1UEAwwEdDQ5MTATpBEwDzEN
--MAsGA1UEAwwEdDQ5MjATpBEwDzENMAsGA1UEAwwEdDQ5MzATpBEwDzENMAsGA1UE
--AwwEdDQ5NDATpBEwDzENMAsGA1UEAwwEdDQ5NTATpBEwDzENMAsGA1UEAwwEdDQ5
--NjATpBEwDzENMAsGA1UEAwwEdDQ5NzATpBEwDzENMAsGA1UEAwwEdDQ5ODATpBEw
--DzENMAsGA1UEAwwEdDQ5OTATpBEwDzENMAsGA1UEAwwEdDUwMDATpBEwDzENMAsG
--A1UEAwwEdDUwMTATpBEwDzENMAsGA1UEAwwEdDUwMjATpBEwDzENMAsGA1UEAwwE
--dDUwMzATpBEwDzENMAsGA1UEAwwEdDUwNDATpBEwDzENMAsGA1UEAwwEdDUwNTAT
--pBEwDzENMAsGA1UEAwwEdDUwNjATpBEwDzENMAsGA1UEAwwEdDUwNzATpBEwDzEN
--MAsGA1UEAwwEdDUwODATpBEwDzENMAsGA1UEAwwEdDUwOTATpBEwDzENMAsGA1UE
--AwwEdDUxMDATpBEwDzENMAsGA1UEAwwEdDUxMTATpBEwDzENMAsGA1UEAwwEdDUx
--MjATpBEwDzENMAsGA1UEAwwEdDUxMzATpBEwDzENMAsGA1UEAwwEdDUxNDATpBEw
--DzENMAsGA1UEAwwEdDUxNTATpBEwDzENMAsGA1UEAwwEdDUxNjATpBEwDzENMAsG
--A1UEAwwEdDUxNzATpBEwDzENMAsGA1UEAwwEdDUxODATpBEwDzENMAsGA1UEAwwE
--dDUxOTATpBEwDzENMAsGA1UEAwwEdDUyMDATpBEwDzENMAsGA1UEAwwEdDUyMTAT
--pBEwDzENMAsGA1UEAwwEdDUyMjATpBEwDzENMAsGA1UEAwwEdDUyMzATpBEwDzEN
--MAsGA1UEAwwEdDUyNDATpBEwDzENMAsGA1UEAwwEdDUyNTATpBEwDzENMAsGA1UE
--AwwEdDUyNjATpBEwDzENMAsGA1UEAwwEdDUyNzATpBEwDzENMAsGA1UEAwwEdDUy
--ODATpBEwDzENMAsGA1UEAwwEdDUyOTATpBEwDzENMAsGA1UEAwwEdDUzMDATpBEw
--DzENMAsGA1UEAwwEdDUzMTATpBEwDzENMAsGA1UEAwwEdDUzMjATpBEwDzENMAsG
--A1UEAwwEdDUzMzATpBEwDzENMAsGA1UEAwwEdDUzNDATpBEwDzENMAsGA1UEAwwE
--dDUzNTATpBEwDzENMAsGA1UEAwwEdDUzNjATpBEwDzENMAsGA1UEAwwEdDUzNzAT
--pBEwDzENMAsGA1UEAwwEdDUzODATpBEwDzENMAsGA1UEAwwEdDUzOTATpBEwDzEN
--MAsGA1UEAwwEdDU0MDATpBEwDzENMAsGA1UEAwwEdDU0MTATpBEwDzENMAsGA1UE
--AwwEdDU0MjATpBEwDzENMAsGA1UEAwwEdDU0MzATpBEwDzENMAsGA1UEAwwEdDU0
--NDATpBEwDzENMAsGA1UEAwwEdDU0NTATpBEwDzENMAsGA1UEAwwEdDU0NjATpBEw
--DzENMAsGA1UEAwwEdDU0NzATpBEwDzENMAsGA1UEAwwEdDU0ODATpBEwDzENMAsG
--A1UEAwwEdDU0OTATpBEwDzENMAsGA1UEAwwEdDU1MDATpBEwDzENMAsGA1UEAwwE
--dDU1MTATpBEwDzENMAsGA1UEAwwEdDU1MjATpBEwDzENMAsGA1UEAwwEdDU1MzAT
--pBEwDzENMAsGA1UEAwwEdDU1NDATpBEwDzENMAsGA1UEAwwEdDU1NTATpBEwDzEN
--MAsGA1UEAwwEdDU1NjATpBEwDzENMAsGA1UEAwwEdDU1NzATpBEwDzENMAsGA1UE
--AwwEdDU1ODATpBEwDzENMAsGA1UEAwwEdDU1OTATpBEwDzENMAsGA1UEAwwEdDU2
--MDATpBEwDzENMAsGA1UEAwwEdDU2MTATpBEwDzENMAsGA1UEAwwEdDU2MjATpBEw
--DzENMAsGA1UEAwwEdDU2MzATpBEwDzENMAsGA1UEAwwEdDU2NDATpBEwDzENMAsG
--A1UEAwwEdDU2NTATpBEwDzENMAsGA1UEAwwEdDU2NjATpBEwDzENMAsGA1UEAwwE
--dDU2NzATpBEwDzENMAsGA1UEAwwEdDU2ODATpBEwDzENMAsGA1UEAwwEdDU2OTAT
--pBEwDzENMAsGA1UEAwwEdDU3MDATpBEwDzENMAsGA1UEAwwEdDU3MTATpBEwDzEN
--MAsGA1UEAwwEdDU3MjATpBEwDzENMAsGA1UEAwwEdDU3MzATpBEwDzENMAsGA1UE
--AwwEdDU3NDATpBEwDzENMAsGA1UEAwwEdDU3NTATpBEwDzENMAsGA1UEAwwEdDU3
--NjATpBEwDzENMAsGA1UEAwwEdDU3NzATpBEwDzENMAsGA1UEAwwEdDU3ODATpBEw
--DzENMAsGA1UEAwwEdDU3OTATpBEwDzENMAsGA1UEAwwEdDU4MDATpBEwDzENMAsG
--A1UEAwwEdDU4MTATpBEwDzENMAsGA1UEAwwEdDU4MjATpBEwDzENMAsGA1UEAwwE
--dDU4MzATpBEwDzENMAsGA1UEAwwEdDU4NDATpBEwDzENMAsGA1UEAwwEdDU4NTAT
--pBEwDzENMAsGA1UEAwwEdDU4NjATpBEwDzENMAsGA1UEAwwEdDU4NzATpBEwDzEN
--MAsGA1UEAwwEdDU4ODATpBEwDzENMAsGA1UEAwwEdDU4OTATpBEwDzENMAsGA1UE
--AwwEdDU5MDATpBEwDzENMAsGA1UEAwwEdDU5MTATpBEwDzENMAsGA1UEAwwEdDU5
--MjATpBEwDzENMAsGA1UEAwwEdDU5MzATpBEwDzENMAsGA1UEAwwEdDU5NDATpBEw
--DzENMAsGA1UEAwwEdDU5NTATpBEwDzENMAsGA1UEAwwEdDU5NjATpBEwDzENMAsG
--A1UEAwwEdDU5NzATpBEwDzENMAsGA1UEAwwEdDU5ODATpBEwDzENMAsGA1UEAwwE
--dDU5OTATpBEwDzENMAsGA1UEAwwEdDYwMDATpBEwDzENMAsGA1UEAwwEdDYwMTAT
--pBEwDzENMAsGA1UEAwwEdDYwMjATpBEwDzENMAsGA1UEAwwEdDYwMzATpBEwDzEN
--MAsGA1UEAwwEdDYwNDATpBEwDzENMAsGA1UEAwwEdDYwNTATpBEwDzENMAsGA1UE
--AwwEdDYwNjATpBEwDzENMAsGA1UEAwwEdDYwNzATpBEwDzENMAsGA1UEAwwEdDYw
--ODATpBEwDzENMAsGA1UEAwwEdDYwOTATpBEwDzENMAsGA1UEAwwEdDYxMDATpBEw
--DzENMAsGA1UEAwwEdDYxMTATpBEwDzENMAsGA1UEAwwEdDYxMjATpBEwDzENMAsG
--A1UEAwwEdDYxMzATpBEwDzENMAsGA1UEAwwEdDYxNDATpBEwDzENMAsGA1UEAwwE
--dDYxNTATpBEwDzENMAsGA1UEAwwEdDYxNjATpBEwDzENMAsGA1UEAwwEdDYxNzAT
--pBEwDzENMAsGA1UEAwwEdDYxODATpBEwDzENMAsGA1UEAwwEdDYxOTATpBEwDzEN
--MAsGA1UEAwwEdDYyMDATpBEwDzENMAsGA1UEAwwEdDYyMTATpBEwDzENMAsGA1UE
--AwwEdDYyMjATpBEwDzENMAsGA1UEAwwEdDYyMzATpBEwDzENMAsGA1UEAwwEdDYy
--NDATpBEwDzENMAsGA1UEAwwEdDYyNTATpBEwDzENMAsGA1UEAwwEdDYyNjATpBEw
--DzENMAsGA1UEAwwEdDYyNzATpBEwDzENMAsGA1UEAwwEdDYyODATpBEwDzENMAsG
--A1UEAwwEdDYyOTATpBEwDzENMAsGA1UEAwwEdDYzMDATpBEwDzENMAsGA1UEAwwE
--dDYzMTATpBEwDzENMAsGA1UEAwwEdDYzMjATpBEwDzENMAsGA1UEAwwEdDYzMzAT
--pBEwDzENMAsGA1UEAwwEdDYzNDATpBEwDzENMAsGA1UEAwwEdDYzNTATpBEwDzEN
--MAsGA1UEAwwEdDYzNjATpBEwDzENMAsGA1UEAwwEdDYzNzATpBEwDzENMAsGA1UE
--AwwEdDYzODATpBEwDzENMAsGA1UEAwwEdDYzOTATpBEwDzENMAsGA1UEAwwEdDY0
--MDATpBEwDzENMAsGA1UEAwwEdDY0MTATpBEwDzENMAsGA1UEAwwEdDY0MjATpBEw
--DzENMAsGA1UEAwwEdDY0MzATpBEwDzENMAsGA1UEAwwEdDY0NDATpBEwDzENMAsG
--A1UEAwwEdDY0NTATpBEwDzENMAsGA1UEAwwEdDY0NjATpBEwDzENMAsGA1UEAwwE
--dDY0NzATpBEwDzENMAsGA1UEAwwEdDY0ODATpBEwDzENMAsGA1UEAwwEdDY0OTAT
--pBEwDzENMAsGA1UEAwwEdDY1MDATpBEwDzENMAsGA1UEAwwEdDY1MTATpBEwDzEN
--MAsGA1UEAwwEdDY1MjATpBEwDzENMAsGA1UEAwwEdDY1MzATpBEwDzENMAsGA1UE
--AwwEdDY1NDATpBEwDzENMAsGA1UEAwwEdDY1NTATpBEwDzENMAsGA1UEAwwEdDY1
--NjATpBEwDzENMAsGA1UEAwwEdDY1NzATpBEwDzENMAsGA1UEAwwEdDY1ODATpBEw
--DzENMAsGA1UEAwwEdDY1OTATpBEwDzENMAsGA1UEAwwEdDY2MDATpBEwDzENMAsG
--A1UEAwwEdDY2MTATpBEwDzENMAsGA1UEAwwEdDY2MjATpBEwDzENMAsGA1UEAwwE
--dDY2MzATpBEwDzENMAsGA1UEAwwEdDY2NDATpBEwDzENMAsGA1UEAwwEdDY2NTAT
--pBEwDzENMAsGA1UEAwwEdDY2NjATpBEwDzENMAsGA1UEAwwEdDY2NzATpBEwDzEN
--MAsGA1UEAwwEdDY2ODATpBEwDzENMAsGA1UEAwwEdDY2OTATpBEwDzENMAsGA1UE
--AwwEdDY3MDATpBEwDzENMAsGA1UEAwwEdDY3MTATpBEwDzENMAsGA1UEAwwEdDY3
--MjATpBEwDzENMAsGA1UEAwwEdDY3MzATpBEwDzENMAsGA1UEAwwEdDY3NDATpBEw
--DzENMAsGA1UEAwwEdDY3NTATpBEwDzENMAsGA1UEAwwEdDY3NjATpBEwDzENMAsG
--A1UEAwwEdDY3NzATpBEwDzENMAsGA1UEAwwEdDY3ODATpBEwDzENMAsGA1UEAwwE
--dDY3OTATpBEwDzENMAsGA1UEAwwEdDY4MDATpBEwDzENMAsGA1UEAwwEdDY4MTAT
--pBEwDzENMAsGA1UEAwwEdDY4MjATpBEwDzENMAsGA1UEAwwEdDY4MzATpBEwDzEN
--MAsGA1UEAwwEdDY4NDATpBEwDzENMAsGA1UEAwwEdDY4NTATpBEwDzENMAsGA1UE
--AwwEdDY4NjATpBEwDzENMAsGA1UEAwwEdDY4NzATpBEwDzENMAsGA1UEAwwEdDY4
--ODATpBEwDzENMAsGA1UEAwwEdDY4OTATpBEwDzENMAsGA1UEAwwEdDY5MDATpBEw
--DzENMAsGA1UEAwwEdDY5MTATpBEwDzENMAsGA1UEAwwEdDY5MjATpBEwDzENMAsG
--A1UEAwwEdDY5MzATpBEwDzENMAsGA1UEAwwEdDY5NDATpBEwDzENMAsGA1UEAwwE
--dDY5NTATpBEwDzENMAsGA1UEAwwEdDY5NjATpBEwDzENMAsGA1UEAwwEdDY5NzAT
--pBEwDzENMAsGA1UEAwwEdDY5ODATpBEwDzENMAsGA1UEAwwEdDY5OTATpBEwDzEN
--MAsGA1UEAwwEdDcwMDATpBEwDzENMAsGA1UEAwwEdDcwMTATpBEwDzENMAsGA1UE
--AwwEdDcwMjATpBEwDzENMAsGA1UEAwwEdDcwMzATpBEwDzENMAsGA1UEAwwEdDcw
--NDATpBEwDzENMAsGA1UEAwwEdDcwNTATpBEwDzENMAsGA1UEAwwEdDcwNjATpBEw
--DzENMAsGA1UEAwwEdDcwNzATpBEwDzENMAsGA1UEAwwEdDcwODATpBEwDzENMAsG
--A1UEAwwEdDcwOTATpBEwDzENMAsGA1UEAwwEdDcxMDATpBEwDzENMAsGA1UEAwwE
--dDcxMTATpBEwDzENMAsGA1UEAwwEdDcxMjATpBEwDzENMAsGA1UEAwwEdDcxMzAT
--pBEwDzENMAsGA1UEAwwEdDcxNDATpBEwDzENMAsGA1UEAwwEdDcxNTATpBEwDzEN
--MAsGA1UEAwwEdDcxNjATpBEwDzENMAsGA1UEAwwEdDcxNzATpBEwDzENMAsGA1UE
--AwwEdDcxODATpBEwDzENMAsGA1UEAwwEdDcxOTATpBEwDzENMAsGA1UEAwwEdDcy
--MDATpBEwDzENMAsGA1UEAwwEdDcyMTATpBEwDzENMAsGA1UEAwwEdDcyMjATpBEw
--DzENMAsGA1UEAwwEdDcyMzATpBEwDzENMAsGA1UEAwwEdDcyNDATpBEwDzENMAsG
--A1UEAwwEdDcyNTATpBEwDzENMAsGA1UEAwwEdDcyNjATpBEwDzENMAsGA1UEAwwE
--dDcyNzATpBEwDzENMAsGA1UEAwwEdDcyODATpBEwDzENMAsGA1UEAwwEdDcyOTAT
--pBEwDzENMAsGA1UEAwwEdDczMDATpBEwDzENMAsGA1UEAwwEdDczMTATpBEwDzEN
--MAsGA1UEAwwEdDczMjATpBEwDzENMAsGA1UEAwwEdDczMzATpBEwDzENMAsGA1UE
--AwwEdDczNDATpBEwDzENMAsGA1UEAwwEdDczNTATpBEwDzENMAsGA1UEAwwEdDcz
--NjATpBEwDzENMAsGA1UEAwwEdDczNzATpBEwDzENMAsGA1UEAwwEdDczODATpBEw
--DzENMAsGA1UEAwwEdDczOTATpBEwDzENMAsGA1UEAwwEdDc0MDATpBEwDzENMAsG
--A1UEAwwEdDc0MTATpBEwDzENMAsGA1UEAwwEdDc0MjATpBEwDzENMAsGA1UEAwwE
--dDc0MzATpBEwDzENMAsGA1UEAwwEdDc0NDATpBEwDzENMAsGA1UEAwwEdDc0NTAT
--pBEwDzENMAsGA1UEAwwEdDc0NjATpBEwDzENMAsGA1UEAwwEdDc0NzATpBEwDzEN
--MAsGA1UEAwwEdDc0ODATpBEwDzENMAsGA1UEAwwEdDc0OTATpBEwDzENMAsGA1UE
--AwwEdDc1MDATpBEwDzENMAsGA1UEAwwEdDc1MTATpBEwDzENMAsGA1UEAwwEdDc1
--MjATpBEwDzENMAsGA1UEAwwEdDc1MzATpBEwDzENMAsGA1UEAwwEdDc1NDATpBEw
--DzENMAsGA1UEAwwEdDc1NTATpBEwDzENMAsGA1UEAwwEdDc1NjATpBEwDzENMAsG
--A1UEAwwEdDc1NzATpBEwDzENMAsGA1UEAwwEdDc1ODATpBEwDzENMAsGA1UEAwwE
--dDc1OTATpBEwDzENMAsGA1UEAwwEdDc2MDATpBEwDzENMAsGA1UEAwwEdDc2MTAT
--pBEwDzENMAsGA1UEAwwEdDc2MjATpBEwDzENMAsGA1UEAwwEdDc2MzATpBEwDzEN
--MAsGA1UEAwwEdDc2NDATpBEwDzENMAsGA1UEAwwEdDc2NTATpBEwDzENMAsGA1UE
--AwwEdDc2NjATpBEwDzENMAsGA1UEAwwEdDc2NzATpBEwDzENMAsGA1UEAwwEdDc2
--ODATpBEwDzENMAsGA1UEAwwEdDc2OTATpBEwDzENMAsGA1UEAwwEdDc3MDATpBEw
--DzENMAsGA1UEAwwEdDc3MTATpBEwDzENMAsGA1UEAwwEdDc3MjATpBEwDzENMAsG
--A1UEAwwEdDc3MzATpBEwDzENMAsGA1UEAwwEdDc3NDATpBEwDzENMAsGA1UEAwwE
--dDc3NTATpBEwDzENMAsGA1UEAwwEdDc3NjATpBEwDzENMAsGA1UEAwwEdDc3NzAT
--pBEwDzENMAsGA1UEAwwEdDc3ODATpBEwDzENMAsGA1UEAwwEdDc3OTATpBEwDzEN
--MAsGA1UEAwwEdDc4MDATpBEwDzENMAsGA1UEAwwEdDc4MTATpBEwDzENMAsGA1UE
--AwwEdDc4MjATpBEwDzENMAsGA1UEAwwEdDc4MzATpBEwDzENMAsGA1UEAwwEdDc4
--NDATpBEwDzENMAsGA1UEAwwEdDc4NTATpBEwDzENMAsGA1UEAwwEdDc4NjATpBEw
--DzENMAsGA1UEAwwEdDc4NzATpBEwDzENMAsGA1UEAwwEdDc4ODATpBEwDzENMAsG
--A1UEAwwEdDc4OTATpBEwDzENMAsGA1UEAwwEdDc5MDATpBEwDzENMAsGA1UEAwwE
--dDc5MTATpBEwDzENMAsGA1UEAwwEdDc5MjATpBEwDzENMAsGA1UEAwwEdDc5MzAT
--pBEwDzENMAsGA1UEAwwEdDc5NDATpBEwDzENMAsGA1UEAwwEdDc5NTATpBEwDzEN
--MAsGA1UEAwwEdDc5NjATpBEwDzENMAsGA1UEAwwEdDc5NzATpBEwDzENMAsGA1UE
--AwwEdDc5ODATpBEwDzENMAsGA1UEAwwEdDc5OTATpBEwDzENMAsGA1UEAwwEdDgw
--MDATpBEwDzENMAsGA1UEAwwEdDgwMTATpBEwDzENMAsGA1UEAwwEdDgwMjATpBEw
--DzENMAsGA1UEAwwEdDgwMzATpBEwDzENMAsGA1UEAwwEdDgwNDATpBEwDzENMAsG
--A1UEAwwEdDgwNTATpBEwDzENMAsGA1UEAwwEdDgwNjATpBEwDzENMAsGA1UEAwwE
--dDgwNzATpBEwDzENMAsGA1UEAwwEdDgwODATpBEwDzENMAsGA1UEAwwEdDgwOTAT
--pBEwDzENMAsGA1UEAwwEdDgxMDATpBEwDzENMAsGA1UEAwwEdDgxMTATpBEwDzEN
--MAsGA1UEAwwEdDgxMjATpBEwDzENMAsGA1UEAwwEdDgxMzATpBEwDzENMAsGA1UE
--AwwEdDgxNDATpBEwDzENMAsGA1UEAwwEdDgxNTATpBEwDzENMAsGA1UEAwwEdDgx
--NjATpBEwDzENMAsGA1UEAwwEdDgxNzATpBEwDzENMAsGA1UEAwwEdDgxODATpBEw
--DzENMAsGA1UEAwwEdDgxOTATpBEwDzENMAsGA1UEAwwEdDgyMDATpBEwDzENMAsG
--A1UEAwwEdDgyMTATpBEwDzENMAsGA1UEAwwEdDgyMjATpBEwDzENMAsGA1UEAwwE
--dDgyMzATpBEwDzENMAsGA1UEAwwEdDgyNDATpBEwDzENMAsGA1UEAwwEdDgyNTAT
--pBEwDzENMAsGA1UEAwwEdDgyNjATpBEwDzENMAsGA1UEAwwEdDgyNzATpBEwDzEN
--MAsGA1UEAwwEdDgyODATpBEwDzENMAsGA1UEAwwEdDgyOTATpBEwDzENMAsGA1UE
--AwwEdDgzMDATpBEwDzENMAsGA1UEAwwEdDgzMTATpBEwDzENMAsGA1UEAwwEdDgz
--MjATpBEwDzENMAsGA1UEAwwEdDgzMzATpBEwDzENMAsGA1UEAwwEdDgzNDATpBEw
--DzENMAsGA1UEAwwEdDgzNTATpBEwDzENMAsGA1UEAwwEdDgzNjATpBEwDzENMAsG
--A1UEAwwEdDgzNzATpBEwDzENMAsGA1UEAwwEdDgzODATpBEwDzENMAsGA1UEAwwE
--dDgzOTATpBEwDzENMAsGA1UEAwwEdDg0MDATpBEwDzENMAsGA1UEAwwEdDg0MTAT
--pBEwDzENMAsGA1UEAwwEdDg0MjATpBEwDzENMAsGA1UEAwwEdDg0MzATpBEwDzEN
--MAsGA1UEAwwEdDg0NDATpBEwDzENMAsGA1UEAwwEdDg0NTATpBEwDzENMAsGA1UE
--AwwEdDg0NjATpBEwDzENMAsGA1UEAwwEdDg0NzATpBEwDzENMAsGA1UEAwwEdDg0
--ODATpBEwDzENMAsGA1UEAwwEdDg0OTATpBEwDzENMAsGA1UEAwwEdDg1MDATpBEw
--DzENMAsGA1UEAwwEdDg1MTATpBEwDzENMAsGA1UEAwwEdDg1MjATpBEwDzENMAsG
--A1UEAwwEdDg1MzATpBEwDzENMAsGA1UEAwwEdDg1NDATpBEwDzENMAsGA1UEAwwE
--dDg1NTATpBEwDzENMAsGA1UEAwwEdDg1NjATpBEwDzENMAsGA1UEAwwEdDg1NzAT
--pBEwDzENMAsGA1UEAwwEdDg1ODATpBEwDzENMAsGA1UEAwwEdDg1OTATpBEwDzEN
--MAsGA1UEAwwEdDg2MDATpBEwDzENMAsGA1UEAwwEdDg2MTATpBEwDzENMAsGA1UE
--AwwEdDg2MjATpBEwDzENMAsGA1UEAwwEdDg2MzATpBEwDzENMAsGA1UEAwwEdDg2
--NDATpBEwDzENMAsGA1UEAwwEdDg2NTATpBEwDzENMAsGA1UEAwwEdDg2NjATpBEw
--DzENMAsGA1UEAwwEdDg2NzATpBEwDzENMAsGA1UEAwwEdDg2ODATpBEwDzENMAsG
--A1UEAwwEdDg2OTATpBEwDzENMAsGA1UEAwwEdDg3MDATpBEwDzENMAsGA1UEAwwE
--dDg3MTATpBEwDzENMAsGA1UEAwwEdDg3MjATpBEwDzENMAsGA1UEAwwEdDg3MzAT
--pBEwDzENMAsGA1UEAwwEdDg3NDATpBEwDzENMAsGA1UEAwwEdDg3NTATpBEwDzEN
--MAsGA1UEAwwEdDg3NjATpBEwDzENMAsGA1UEAwwEdDg3NzATpBEwDzENMAsGA1UE
--AwwEdDg3ODATpBEwDzENMAsGA1UEAwwEdDg3OTATpBEwDzENMAsGA1UEAwwEdDg4
--MDATpBEwDzENMAsGA1UEAwwEdDg4MTATpBEwDzENMAsGA1UEAwwEdDg4MjATpBEw
--DzENMAsGA1UEAwwEdDg4MzATpBEwDzENMAsGA1UEAwwEdDg4NDATpBEwDzENMAsG
--A1UEAwwEdDg4NTATpBEwDzENMAsGA1UEAwwEdDg4NjATpBEwDzENMAsGA1UEAwwE
--dDg4NzATpBEwDzENMAsGA1UEAwwEdDg4ODATpBEwDzENMAsGA1UEAwwEdDg4OTAT
--pBEwDzENMAsGA1UEAwwEdDg5MDATpBEwDzENMAsGA1UEAwwEdDg5MTATpBEwDzEN
--MAsGA1UEAwwEdDg5MjATpBEwDzENMAsGA1UEAwwEdDg5MzATpBEwDzENMAsGA1UE
--AwwEdDg5NDATpBEwDzENMAsGA1UEAwwEdDg5NTATpBEwDzENMAsGA1UEAwwEdDg5
--NjATpBEwDzENMAsGA1UEAwwEdDg5NzATpBEwDzENMAsGA1UEAwwEdDg5ODATpBEw
--DzENMAsGA1UEAwwEdDg5OTATpBEwDzENMAsGA1UEAwwEdDkwMDATpBEwDzENMAsG
--A1UEAwwEdDkwMTATpBEwDzENMAsGA1UEAwwEdDkwMjATpBEwDzENMAsGA1UEAwwE
--dDkwMzATpBEwDzENMAsGA1UEAwwEdDkwNDATpBEwDzENMAsGA1UEAwwEdDkwNTAT
--pBEwDzENMAsGA1UEAwwEdDkwNjATpBEwDzENMAsGA1UEAwwEdDkwNzATpBEwDzEN
--MAsGA1UEAwwEdDkwODATpBEwDzENMAsGA1UEAwwEdDkwOTATpBEwDzENMAsGA1UE
--AwwEdDkxMDATpBEwDzENMAsGA1UEAwwEdDkxMTATpBEwDzENMAsGA1UEAwwEdDkx
--MjATpBEwDzENMAsGA1UEAwwEdDkxMzATpBEwDzENMAsGA1UEAwwEdDkxNDATpBEw
--DzENMAsGA1UEAwwEdDkxNTATpBEwDzENMAsGA1UEAwwEdDkxNjATpBEwDzENMAsG
--A1UEAwwEdDkxNzATpBEwDzENMAsGA1UEAwwEdDkxODATpBEwDzENMAsGA1UEAwwE
--dDkxOTATpBEwDzENMAsGA1UEAwwEdDkyMDATpBEwDzENMAsGA1UEAwwEdDkyMTAT
--pBEwDzENMAsGA1UEAwwEdDkyMjATpBEwDzENMAsGA1UEAwwEdDkyMzATpBEwDzEN
--MAsGA1UEAwwEdDkyNDATpBEwDzENMAsGA1UEAwwEdDkyNTATpBEwDzENMAsGA1UE
--AwwEdDkyNjATpBEwDzENMAsGA1UEAwwEdDkyNzATpBEwDzENMAsGA1UEAwwEdDky
--ODATpBEwDzENMAsGA1UEAwwEdDkyOTATpBEwDzENMAsGA1UEAwwEdDkzMDATpBEw
--DzENMAsGA1UEAwwEdDkzMTATpBEwDzENMAsGA1UEAwwEdDkzMjATpBEwDzENMAsG
--A1UEAwwEdDkzMzATpBEwDzENMAsGA1UEAwwEdDkzNDATpBEwDzENMAsGA1UEAwwE
--dDkzNTATpBEwDzENMAsGA1UEAwwEdDkzNjATpBEwDzENMAsGA1UEAwwEdDkzNzAT
--pBEwDzENMAsGA1UEAwwEdDkzODATpBEwDzENMAsGA1UEAwwEdDkzOTATpBEwDzEN
--MAsGA1UEAwwEdDk0MDATpBEwDzENMAsGA1UEAwwEdDk0MTATpBEwDzENMAsGA1UE
--AwwEdDk0MjATpBEwDzENMAsGA1UEAwwEdDk0MzATpBEwDzENMAsGA1UEAwwEdDk0
--NDATpBEwDzENMAsGA1UEAwwEdDk0NTATpBEwDzENMAsGA1UEAwwEdDk0NjATpBEw
--DzENMAsGA1UEAwwEdDk0NzATpBEwDzENMAsGA1UEAwwEdDk0ODATpBEwDzENMAsG
--A1UEAwwEdDk0OTATpBEwDzENMAsGA1UEAwwEdDk1MDATpBEwDzENMAsGA1UEAwwE
--dDk1MTATpBEwDzENMAsGA1UEAwwEdDk1MjATpBEwDzENMAsGA1UEAwwEdDk1MzAT
--pBEwDzENMAsGA1UEAwwEdDk1NDATpBEwDzENMAsGA1UEAwwEdDk1NTATpBEwDzEN
--MAsGA1UEAwwEdDk1NjATpBEwDzENMAsGA1UEAwwEdDk1NzATpBEwDzENMAsGA1UE
--AwwEdDk1ODATpBEwDzENMAsGA1UEAwwEdDk1OTATpBEwDzENMAsGA1UEAwwEdDk2
--MDATpBEwDzENMAsGA1UEAwwEdDk2MTATpBEwDzENMAsGA1UEAwwEdDk2MjATpBEw
--DzENMAsGA1UEAwwEdDk2MzATpBEwDzENMAsGA1UEAwwEdDk2NDATpBEwDzENMAsG
--A1UEAwwEdDk2NTATpBEwDzENMAsGA1UEAwwEdDk2NjATpBEwDzENMAsGA1UEAwwE
--dDk2NzATpBEwDzENMAsGA1UEAwwEdDk2ODATpBEwDzENMAsGA1UEAwwEdDk2OTAT
--pBEwDzENMAsGA1UEAwwEdDk3MDATpBEwDzENMAsGA1UEAwwEdDk3MTATpBEwDzEN
--MAsGA1UEAwwEdDk3MjATpBEwDzENMAsGA1UEAwwEdDk3MzATpBEwDzENMAsGA1UE
--AwwEdDk3NDATpBEwDzENMAsGA1UEAwwEdDk3NTATpBEwDzENMAsGA1UEAwwEdDk3
--NjATpBEwDzENMAsGA1UEAwwEdDk3NzATpBEwDzENMAsGA1UEAwwEdDk3ODATpBEw
--DzENMAsGA1UEAwwEdDk3OTATpBEwDzENMAsGA1UEAwwEdDk4MDATpBEwDzENMAsG
--A1UEAwwEdDk4MTATpBEwDzENMAsGA1UEAwwEdDk4MjATpBEwDzENMAsGA1UEAwwE
--dDk4MzATpBEwDzENMAsGA1UEAwwEdDk4NDATpBEwDzENMAsGA1UEAwwEdDk4NTAT
--pBEwDzENMAsGA1UEAwwEdDk4NjATpBEwDzENMAsGA1UEAwwEdDk4NzATpBEwDzEN
--MAsGA1UEAwwEdDk4ODATpBEwDzENMAsGA1UEAwwEdDk4OTATpBEwDzENMAsGA1UE
--AwwEdDk5MDATpBEwDzENMAsGA1UEAwwEdDk5MTATpBEwDzENMAsGA1UEAwwEdDk5
--MjATpBEwDzENMAsGA1UEAwwEdDk5MzATpBEwDzENMAsGA1UEAwwEdDk5NDATpBEw
--DzENMAsGA1UEAwwEdDk5NTATpBEwDzENMAsGA1UEAwwEdDk5NjATpBEwDzENMAsG
--A1UEAwwEdDk5NzATpBEwDzENMAsGA1UEAwwEdDk5ODATpBEwDzENMAsGA1UEAwwE
--dDk5OTAUpBIwEDEOMAwGA1UEAwwFdDEwMDAwFKQSMBAxDjAMBgNVBAMMBXQxMDAx
--MBSkEjAQMQ4wDAYDVQQDDAV0MTAwMjAUpBIwEDEOMAwGA1UEAwwFdDEwMDMwFKQS
--MBAxDjAMBgNVBAMMBXQxMDA0MBSkEjAQMQ4wDAYDVQQDDAV0MTAwNTAUpBIwEDEO
--MAwGA1UEAwwFdDEwMDYwFKQSMBAxDjAMBgNVBAMMBXQxMDA3MBSkEjAQMQ4wDAYD
--VQQDDAV0MTAwODAUpBIwEDEOMAwGA1UEAwwFdDEwMDkwFKQSMBAxDjAMBgNVBAMM
--BXQxMDEwMBSkEjAQMQ4wDAYDVQQDDAV0MTAxMTAUpBIwEDEOMAwGA1UEAwwFdDEw
--MTIwFKQSMBAxDjAMBgNVBAMMBXQxMDEzMBSkEjAQMQ4wDAYDVQQDDAV0MTAxNDAU
--pBIwEDEOMAwGA1UEAwwFdDEwMTUwFKQSMBAxDjAMBgNVBAMMBXQxMDE2MBSkEjAQ
--MQ4wDAYDVQQDDAV0MTAxNzAUpBIwEDEOMAwGA1UEAwwFdDEwMTgwFKQSMBAxDjAM
--BgNVBAMMBXQxMDE5MBSkEjAQMQ4wDAYDVQQDDAV0MTAyMDAUpBIwEDEOMAwGA1UE
--AwwFdDEwMjEwFKQSMBAxDjAMBgNVBAMMBXQxMDIyMBSkEjAQMQ4wDAYDVQQDDAV0
--MTAyMzAUpBIwEDEOMAwGA1UEAwwFdDEwMjQwD4YNaHR0cDovL3Rlc3QvMDAPhg1o
--dHRwOi8vdGVzdC8xMA+GDWh0dHA6Ly90ZXN0LzIwD4YNaHR0cDovL3Rlc3QvMzAP
--hg1odHRwOi8vdGVzdC80MA+GDWh0dHA6Ly90ZXN0LzUwD4YNaHR0cDovL3Rlc3Qv
--NjAPhg1odHRwOi8vdGVzdC83MA+GDWh0dHA6Ly90ZXN0LzgwD4YNaHR0cDovL3Rl
--c3QvOTAQhg5odHRwOi8vdGVzdC8xMDAQhg5odHRwOi8vdGVzdC8xMTAQhg5odHRw
--Oi8vdGVzdC8xMjAQhg5odHRwOi8vdGVzdC8xMzAQhg5odHRwOi8vdGVzdC8xNDAQ
--hg5odHRwOi8vdGVzdC8xNTAQhg5odHRwOi8vdGVzdC8xNjAQhg5odHRwOi8vdGVz
--dC8xNzAQhg5odHRwOi8vdGVzdC8xODAQhg5odHRwOi8vdGVzdC8xOTAQhg5odHRw
--Oi8vdGVzdC8yMDAQhg5odHRwOi8vdGVzdC8yMTAQhg5odHRwOi8vdGVzdC8yMjAQ
--hg5odHRwOi8vdGVzdC8yMzAQhg5odHRwOi8vdGVzdC8yNDAQhg5odHRwOi8vdGVz
--dC8yNTAQhg5odHRwOi8vdGVzdC8yNjAQhg5odHRwOi8vdGVzdC8yNzAQhg5odHRw
--Oi8vdGVzdC8yODAQhg5odHRwOi8vdGVzdC8yOTAQhg5odHRwOi8vdGVzdC8zMDAQ
--hg5odHRwOi8vdGVzdC8zMTAQhg5odHRwOi8vdGVzdC8zMjAQhg5odHRwOi8vdGVz
--dC8zMzAQhg5odHRwOi8vdGVzdC8zNDAQhg5odHRwOi8vdGVzdC8zNTAQhg5odHRw
--Oi8vdGVzdC8zNjAQhg5odHRwOi8vdGVzdC8zNzAQhg5odHRwOi8vdGVzdC8zODAQ
--hg5odHRwOi8vdGVzdC8zOTAQhg5odHRwOi8vdGVzdC80MDAQhg5odHRwOi8vdGVz
--dC80MTAQhg5odHRwOi8vdGVzdC80MjAQhg5odHRwOi8vdGVzdC80MzAQhg5odHRw
--Oi8vdGVzdC80NDAQhg5odHRwOi8vdGVzdC80NTAQhg5odHRwOi8vdGVzdC80NjAQ
--hg5odHRwOi8vdGVzdC80NzAQhg5odHRwOi8vdGVzdC80ODAQhg5odHRwOi8vdGVz
--dC80OTAQhg5odHRwOi8vdGVzdC81MDAQhg5odHRwOi8vdGVzdC81MTAQhg5odHRw
--Oi8vdGVzdC81MjAQhg5odHRwOi8vdGVzdC81MzAQhg5odHRwOi8vdGVzdC81NDAQ
--hg5odHRwOi8vdGVzdC81NTAQhg5odHRwOi8vdGVzdC81NjAQhg5odHRwOi8vdGVz
--dC81NzAQhg5odHRwOi8vdGVzdC81ODAQhg5odHRwOi8vdGVzdC81OTAQhg5odHRw
--Oi8vdGVzdC82MDAQhg5odHRwOi8vdGVzdC82MTAQhg5odHRwOi8vdGVzdC82MjAQ
--hg5odHRwOi8vdGVzdC82MzAQhg5odHRwOi8vdGVzdC82NDAQhg5odHRwOi8vdGVz
--dC82NTAQhg5odHRwOi8vdGVzdC82NjAQhg5odHRwOi8vdGVzdC82NzAQhg5odHRw
--Oi8vdGVzdC82ODAQhg5odHRwOi8vdGVzdC82OTAQhg5odHRwOi8vdGVzdC83MDAQ
--hg5odHRwOi8vdGVzdC83MTAQhg5odHRwOi8vdGVzdC83MjAQhg5odHRwOi8vdGVz
--dC83MzAQhg5odHRwOi8vdGVzdC83NDAQhg5odHRwOi8vdGVzdC83NTAQhg5odHRw
--Oi8vdGVzdC83NjAQhg5odHRwOi8vdGVzdC83NzAQhg5odHRwOi8vdGVzdC83ODAQ
--hg5odHRwOi8vdGVzdC83OTAQhg5odHRwOi8vdGVzdC84MDAQhg5odHRwOi8vdGVz
--dC84MTAQhg5odHRwOi8vdGVzdC84MjAQhg5odHRwOi8vdGVzdC84MzAQhg5odHRw
--Oi8vdGVzdC84NDAQhg5odHRwOi8vdGVzdC84NTAQhg5odHRwOi8vdGVzdC84NjAQ
--hg5odHRwOi8vdGVzdC84NzAQhg5odHRwOi8vdGVzdC84ODAQhg5odHRwOi8vdGVz
--dC84OTAQhg5odHRwOi8vdGVzdC85MDAQhg5odHRwOi8vdGVzdC85MTAQhg5odHRw
--Oi8vdGVzdC85MjAQhg5odHRwOi8vdGVzdC85MzAQhg5odHRwOi8vdGVzdC85NDAQ
--hg5odHRwOi8vdGVzdC85NTAQhg5odHRwOi8vdGVzdC85NjAQhg5odHRwOi8vdGVz
--dC85NzAQhg5odHRwOi8vdGVzdC85ODAQhg5odHRwOi8vdGVzdC85OTARhg9odHRw
--Oi8vdGVzdC8xMDAwEYYPaHR0cDovL3Rlc3QvMTAxMBGGD2h0dHA6Ly90ZXN0LzEw
--MjARhg9odHRwOi8vdGVzdC8xMDMwEYYPaHR0cDovL3Rlc3QvMTA0MBGGD2h0dHA6
--Ly90ZXN0LzEwNTARhg9odHRwOi8vdGVzdC8xMDYwEYYPaHR0cDovL3Rlc3QvMTA3
--MBGGD2h0dHA6Ly90ZXN0LzEwODARhg9odHRwOi8vdGVzdC8xMDkwEYYPaHR0cDov
--L3Rlc3QvMTEwMBGGD2h0dHA6Ly90ZXN0LzExMTARhg9odHRwOi8vdGVzdC8xMTIw
--EYYPaHR0cDovL3Rlc3QvMTEzMBGGD2h0dHA6Ly90ZXN0LzExNDARhg9odHRwOi8v
--dGVzdC8xMTUwEYYPaHR0cDovL3Rlc3QvMTE2MBGGD2h0dHA6Ly90ZXN0LzExNzAR
--hg9odHRwOi8vdGVzdC8xMTgwEYYPaHR0cDovL3Rlc3QvMTE5MBGGD2h0dHA6Ly90
--ZXN0LzEyMDARhg9odHRwOi8vdGVzdC8xMjEwEYYPaHR0cDovL3Rlc3QvMTIyMBGG
--D2h0dHA6Ly90ZXN0LzEyMzARhg9odHRwOi8vdGVzdC8xMjQwEYYPaHR0cDovL3Rl
--c3QvMTI1MBGGD2h0dHA6Ly90ZXN0LzEyNjARhg9odHRwOi8vdGVzdC8xMjcwEYYP
--aHR0cDovL3Rlc3QvMTI4MBGGD2h0dHA6Ly90ZXN0LzEyOTARhg9odHRwOi8vdGVz
--dC8xMzAwEYYPaHR0cDovL3Rlc3QvMTMxMBGGD2h0dHA6Ly90ZXN0LzEzMjARhg9o
--dHRwOi8vdGVzdC8xMzMwEYYPaHR0cDovL3Rlc3QvMTM0MBGGD2h0dHA6Ly90ZXN0
--LzEzNTARhg9odHRwOi8vdGVzdC8xMzYwEYYPaHR0cDovL3Rlc3QvMTM3MBGGD2h0
--dHA6Ly90ZXN0LzEzODARhg9odHRwOi8vdGVzdC8xMzkwEYYPaHR0cDovL3Rlc3Qv
--MTQwMBGGD2h0dHA6Ly90ZXN0LzE0MTARhg9odHRwOi8vdGVzdC8xNDIwEYYPaHR0
--cDovL3Rlc3QvMTQzMBGGD2h0dHA6Ly90ZXN0LzE0NDARhg9odHRwOi8vdGVzdC8x
--NDUwEYYPaHR0cDovL3Rlc3QvMTQ2MBGGD2h0dHA6Ly90ZXN0LzE0NzARhg9odHRw
--Oi8vdGVzdC8xNDgwEYYPaHR0cDovL3Rlc3QvMTQ5MBGGD2h0dHA6Ly90ZXN0LzE1
--MDARhg9odHRwOi8vdGVzdC8xNTEwEYYPaHR0cDovL3Rlc3QvMTUyMBGGD2h0dHA6
--Ly90ZXN0LzE1MzARhg9odHRwOi8vdGVzdC8xNTQwEYYPaHR0cDovL3Rlc3QvMTU1
--MBGGD2h0dHA6Ly90ZXN0LzE1NjARhg9odHRwOi8vdGVzdC8xNTcwEYYPaHR0cDov
--L3Rlc3QvMTU4MBGGD2h0dHA6Ly90ZXN0LzE1OTARhg9odHRwOi8vdGVzdC8xNjAw
--EYYPaHR0cDovL3Rlc3QvMTYxMBGGD2h0dHA6Ly90ZXN0LzE2MjARhg9odHRwOi8v
--dGVzdC8xNjMwEYYPaHR0cDovL3Rlc3QvMTY0MBGGD2h0dHA6Ly90ZXN0LzE2NTAR
--hg9odHRwOi8vdGVzdC8xNjYwEYYPaHR0cDovL3Rlc3QvMTY3MBGGD2h0dHA6Ly90
--ZXN0LzE2ODARhg9odHRwOi8vdGVzdC8xNjkwEYYPaHR0cDovL3Rlc3QvMTcwMBGG
--D2h0dHA6Ly90ZXN0LzE3MTARhg9odHRwOi8vdGVzdC8xNzIwEYYPaHR0cDovL3Rl
--c3QvMTczMBGGD2h0dHA6Ly90ZXN0LzE3NDARhg9odHRwOi8vdGVzdC8xNzUwEYYP
--aHR0cDovL3Rlc3QvMTc2MBGGD2h0dHA6Ly90ZXN0LzE3NzARhg9odHRwOi8vdGVz
--dC8xNzgwEYYPaHR0cDovL3Rlc3QvMTc5MBGGD2h0dHA6Ly90ZXN0LzE4MDARhg9o
--dHRwOi8vdGVzdC8xODEwEYYPaHR0cDovL3Rlc3QvMTgyMBGGD2h0dHA6Ly90ZXN0
--LzE4MzARhg9odHRwOi8vdGVzdC8xODQwEYYPaHR0cDovL3Rlc3QvMTg1MBGGD2h0
--dHA6Ly90ZXN0LzE4NjARhg9odHRwOi8vdGVzdC8xODcwEYYPaHR0cDovL3Rlc3Qv
--MTg4MBGGD2h0dHA6Ly90ZXN0LzE4OTARhg9odHRwOi8vdGVzdC8xOTAwEYYPaHR0
--cDovL3Rlc3QvMTkxMBGGD2h0dHA6Ly90ZXN0LzE5MjARhg9odHRwOi8vdGVzdC8x
--OTMwEYYPaHR0cDovL3Rlc3QvMTk0MBGGD2h0dHA6Ly90ZXN0LzE5NTARhg9odHRw
--Oi8vdGVzdC8xOTYwEYYPaHR0cDovL3Rlc3QvMTk3MBGGD2h0dHA6Ly90ZXN0LzE5
--ODARhg9odHRwOi8vdGVzdC8xOTkwEYYPaHR0cDovL3Rlc3QvMjAwMBGGD2h0dHA6
--Ly90ZXN0LzIwMTARhg9odHRwOi8vdGVzdC8yMDIwEYYPaHR0cDovL3Rlc3QvMjAz
--MBGGD2h0dHA6Ly90ZXN0LzIwNDARhg9odHRwOi8vdGVzdC8yMDUwEYYPaHR0cDov
--L3Rlc3QvMjA2MBGGD2h0dHA6Ly90ZXN0LzIwNzARhg9odHRwOi8vdGVzdC8yMDgw
--EYYPaHR0cDovL3Rlc3QvMjA5MBGGD2h0dHA6Ly90ZXN0LzIxMDARhg9odHRwOi8v
--dGVzdC8yMTEwEYYPaHR0cDovL3Rlc3QvMjEyMBGGD2h0dHA6Ly90ZXN0LzIxMzAR
--hg9odHRwOi8vdGVzdC8yMTQwEYYPaHR0cDovL3Rlc3QvMjE1MBGGD2h0dHA6Ly90
--ZXN0LzIxNjARhg9odHRwOi8vdGVzdC8yMTcwEYYPaHR0cDovL3Rlc3QvMjE4MBGG
--D2h0dHA6Ly90ZXN0LzIxOTARhg9odHRwOi8vdGVzdC8yMjAwEYYPaHR0cDovL3Rl
--c3QvMjIxMBGGD2h0dHA6Ly90ZXN0LzIyMjARhg9odHRwOi8vdGVzdC8yMjMwEYYP
--aHR0cDovL3Rlc3QvMjI0MBGGD2h0dHA6Ly90ZXN0LzIyNTARhg9odHRwOi8vdGVz
--dC8yMjYwEYYPaHR0cDovL3Rlc3QvMjI3MBGGD2h0dHA6Ly90ZXN0LzIyODARhg9o
--dHRwOi8vdGVzdC8yMjkwEYYPaHR0cDovL3Rlc3QvMjMwMBGGD2h0dHA6Ly90ZXN0
--LzIzMTARhg9odHRwOi8vdGVzdC8yMzIwEYYPaHR0cDovL3Rlc3QvMjMzMBGGD2h0
--dHA6Ly90ZXN0LzIzNDARhg9odHRwOi8vdGVzdC8yMzUwEYYPaHR0cDovL3Rlc3Qv
--MjM2MBGGD2h0dHA6Ly90ZXN0LzIzNzARhg9odHRwOi8vdGVzdC8yMzgwEYYPaHR0
--cDovL3Rlc3QvMjM5MBGGD2h0dHA6Ly90ZXN0LzI0MDARhg9odHRwOi8vdGVzdC8y
--NDEwEYYPaHR0cDovL3Rlc3QvMjQyMBGGD2h0dHA6Ly90ZXN0LzI0MzARhg9odHRw
--Oi8vdGVzdC8yNDQwEYYPaHR0cDovL3Rlc3QvMjQ1MBGGD2h0dHA6Ly90ZXN0LzI0
--NjARhg9odHRwOi8vdGVzdC8yNDcwEYYPaHR0cDovL3Rlc3QvMjQ4MBGGD2h0dHA6
--Ly90ZXN0LzI0OTARhg9odHRwOi8vdGVzdC8yNTAwEYYPaHR0cDovL3Rlc3QvMjUx
--MBGGD2h0dHA6Ly90ZXN0LzI1MjARhg9odHRwOi8vdGVzdC8yNTMwEYYPaHR0cDov
--L3Rlc3QvMjU0MBGGD2h0dHA6Ly90ZXN0LzI1NTARhg9odHRwOi8vdGVzdC8yNTYw
--EYYPaHR0cDovL3Rlc3QvMjU3MBGGD2h0dHA6Ly90ZXN0LzI1ODARhg9odHRwOi8v
--dGVzdC8yNTkwEYYPaHR0cDovL3Rlc3QvMjYwMBGGD2h0dHA6Ly90ZXN0LzI2MTAR
--hg9odHRwOi8vdGVzdC8yNjIwEYYPaHR0cDovL3Rlc3QvMjYzMBGGD2h0dHA6Ly90
--ZXN0LzI2NDARhg9odHRwOi8vdGVzdC8yNjUwEYYPaHR0cDovL3Rlc3QvMjY2MBGG
--D2h0dHA6Ly90ZXN0LzI2NzARhg9odHRwOi8vdGVzdC8yNjgwEYYPaHR0cDovL3Rl
--c3QvMjY5MBGGD2h0dHA6Ly90ZXN0LzI3MDARhg9odHRwOi8vdGVzdC8yNzEwEYYP
--aHR0cDovL3Rlc3QvMjcyMBGGD2h0dHA6Ly90ZXN0LzI3MzARhg9odHRwOi8vdGVz
--dC8yNzQwEYYPaHR0cDovL3Rlc3QvMjc1MBGGD2h0dHA6Ly90ZXN0LzI3NjARhg9o
--dHRwOi8vdGVzdC8yNzcwEYYPaHR0cDovL3Rlc3QvMjc4MBGGD2h0dHA6Ly90ZXN0
--LzI3OTARhg9odHRwOi8vdGVzdC8yODAwEYYPaHR0cDovL3Rlc3QvMjgxMBGGD2h0
--dHA6Ly90ZXN0LzI4MjARhg9odHRwOi8vdGVzdC8yODMwEYYPaHR0cDovL3Rlc3Qv
--Mjg0MBGGD2h0dHA6Ly90ZXN0LzI4NTARhg9odHRwOi8vdGVzdC8yODYwEYYPaHR0
--cDovL3Rlc3QvMjg3MBGGD2h0dHA6Ly90ZXN0LzI4ODARhg9odHRwOi8vdGVzdC8y
--ODkwEYYPaHR0cDovL3Rlc3QvMjkwMBGGD2h0dHA6Ly90ZXN0LzI5MTARhg9odHRw
--Oi8vdGVzdC8yOTIwEYYPaHR0cDovL3Rlc3QvMjkzMBGGD2h0dHA6Ly90ZXN0LzI5
--NDARhg9odHRwOi8vdGVzdC8yOTUwEYYPaHR0cDovL3Rlc3QvMjk2MBGGD2h0dHA6
--Ly90ZXN0LzI5NzARhg9odHRwOi8vdGVzdC8yOTgwEYYPaHR0cDovL3Rlc3QvMjk5
--MBGGD2h0dHA6Ly90ZXN0LzMwMDARhg9odHRwOi8vdGVzdC8zMDEwEYYPaHR0cDov
--L3Rlc3QvMzAyMBGGD2h0dHA6Ly90ZXN0LzMwMzARhg9odHRwOi8vdGVzdC8zMDQw
--EYYPaHR0cDovL3Rlc3QvMzA1MBGGD2h0dHA6Ly90ZXN0LzMwNjARhg9odHRwOi8v
--dGVzdC8zMDcwEYYPaHR0cDovL3Rlc3QvMzA4MBGGD2h0dHA6Ly90ZXN0LzMwOTAR
--hg9odHRwOi8vdGVzdC8zMTAwEYYPaHR0cDovL3Rlc3QvMzExMBGGD2h0dHA6Ly90
--ZXN0LzMxMjARhg9odHRwOi8vdGVzdC8zMTMwEYYPaHR0cDovL3Rlc3QvMzE0MBGG
--D2h0dHA6Ly90ZXN0LzMxNTARhg9odHRwOi8vdGVzdC8zMTYwEYYPaHR0cDovL3Rl
--c3QvMzE3MBGGD2h0dHA6Ly90ZXN0LzMxODARhg9odHRwOi8vdGVzdC8zMTkwEYYP
--aHR0cDovL3Rlc3QvMzIwMBGGD2h0dHA6Ly90ZXN0LzMyMTARhg9odHRwOi8vdGVz
--dC8zMjIwEYYPaHR0cDovL3Rlc3QvMzIzMBGGD2h0dHA6Ly90ZXN0LzMyNDARhg9o
--dHRwOi8vdGVzdC8zMjUwEYYPaHR0cDovL3Rlc3QvMzI2MBGGD2h0dHA6Ly90ZXN0
--LzMyNzARhg9odHRwOi8vdGVzdC8zMjgwEYYPaHR0cDovL3Rlc3QvMzI5MBGGD2h0
--dHA6Ly90ZXN0LzMzMDARhg9odHRwOi8vdGVzdC8zMzEwEYYPaHR0cDovL3Rlc3Qv
--MzMyMBGGD2h0dHA6Ly90ZXN0LzMzMzARhg9odHRwOi8vdGVzdC8zMzQwEYYPaHR0
--cDovL3Rlc3QvMzM1MBGGD2h0dHA6Ly90ZXN0LzMzNjARhg9odHRwOi8vdGVzdC8z
--MzcwEYYPaHR0cDovL3Rlc3QvMzM4MBGGD2h0dHA6Ly90ZXN0LzMzOTARhg9odHRw
--Oi8vdGVzdC8zNDAwEYYPaHR0cDovL3Rlc3QvMzQxMBGGD2h0dHA6Ly90ZXN0LzM0
--MjARhg9odHRwOi8vdGVzdC8zNDMwEYYPaHR0cDovL3Rlc3QvMzQ0MBGGD2h0dHA6
--Ly90ZXN0LzM0NTARhg9odHRwOi8vdGVzdC8zNDYwEYYPaHR0cDovL3Rlc3QvMzQ3
--MBGGD2h0dHA6Ly90ZXN0LzM0ODARhg9odHRwOi8vdGVzdC8zNDkwEYYPaHR0cDov
--L3Rlc3QvMzUwMBGGD2h0dHA6Ly90ZXN0LzM1MTARhg9odHRwOi8vdGVzdC8zNTIw
--EYYPaHR0cDovL3Rlc3QvMzUzMBGGD2h0dHA6Ly90ZXN0LzM1NDARhg9odHRwOi8v
--dGVzdC8zNTUwEYYPaHR0cDovL3Rlc3QvMzU2MBGGD2h0dHA6Ly90ZXN0LzM1NzAR
--hg9odHRwOi8vdGVzdC8zNTgwEYYPaHR0cDovL3Rlc3QvMzU5MBGGD2h0dHA6Ly90
--ZXN0LzM2MDARhg9odHRwOi8vdGVzdC8zNjEwEYYPaHR0cDovL3Rlc3QvMzYyMBGG
--D2h0dHA6Ly90ZXN0LzM2MzARhg9odHRwOi8vdGVzdC8zNjQwEYYPaHR0cDovL3Rl
--c3QvMzY1MBGGD2h0dHA6Ly90ZXN0LzM2NjARhg9odHRwOi8vdGVzdC8zNjcwEYYP
--aHR0cDovL3Rlc3QvMzY4MBGGD2h0dHA6Ly90ZXN0LzM2OTARhg9odHRwOi8vdGVz
--dC8zNzAwEYYPaHR0cDovL3Rlc3QvMzcxMBGGD2h0dHA6Ly90ZXN0LzM3MjARhg9o
--dHRwOi8vdGVzdC8zNzMwEYYPaHR0cDovL3Rlc3QvMzc0MBGGD2h0dHA6Ly90ZXN0
--LzM3NTARhg9odHRwOi8vdGVzdC8zNzYwEYYPaHR0cDovL3Rlc3QvMzc3MBGGD2h0
--dHA6Ly90ZXN0LzM3ODARhg9odHRwOi8vdGVzdC8zNzkwEYYPaHR0cDovL3Rlc3Qv
--MzgwMBGGD2h0dHA6Ly90ZXN0LzM4MTARhg9odHRwOi8vdGVzdC8zODIwEYYPaHR0
--cDovL3Rlc3QvMzgzMBGGD2h0dHA6Ly90ZXN0LzM4NDARhg9odHRwOi8vdGVzdC8z
--ODUwEYYPaHR0cDovL3Rlc3QvMzg2MBGGD2h0dHA6Ly90ZXN0LzM4NzARhg9odHRw
--Oi8vdGVzdC8zODgwEYYPaHR0cDovL3Rlc3QvMzg5MBGGD2h0dHA6Ly90ZXN0LzM5
--MDARhg9odHRwOi8vdGVzdC8zOTEwEYYPaHR0cDovL3Rlc3QvMzkyMBGGD2h0dHA6
--Ly90ZXN0LzM5MzARhg9odHRwOi8vdGVzdC8zOTQwEYYPaHR0cDovL3Rlc3QvMzk1
--MBGGD2h0dHA6Ly90ZXN0LzM5NjARhg9odHRwOi8vdGVzdC8zOTcwEYYPaHR0cDov
--L3Rlc3QvMzk4MBGGD2h0dHA6Ly90ZXN0LzM5OTARhg9odHRwOi8vdGVzdC80MDAw
--EYYPaHR0cDovL3Rlc3QvNDAxMBGGD2h0dHA6Ly90ZXN0LzQwMjARhg9odHRwOi8v
--dGVzdC80MDMwEYYPaHR0cDovL3Rlc3QvNDA0MBGGD2h0dHA6Ly90ZXN0LzQwNTAR
--hg9odHRwOi8vdGVzdC80MDYwEYYPaHR0cDovL3Rlc3QvNDA3MBGGD2h0dHA6Ly90
--ZXN0LzQwODARhg9odHRwOi8vdGVzdC80MDkwEYYPaHR0cDovL3Rlc3QvNDEwMBGG
--D2h0dHA6Ly90ZXN0LzQxMTARhg9odHRwOi8vdGVzdC80MTIwEYYPaHR0cDovL3Rl
--c3QvNDEzMBGGD2h0dHA6Ly90ZXN0LzQxNDARhg9odHRwOi8vdGVzdC80MTUwEYYP
--aHR0cDovL3Rlc3QvNDE2MBGGD2h0dHA6Ly90ZXN0LzQxNzARhg9odHRwOi8vdGVz
--dC80MTgwEYYPaHR0cDovL3Rlc3QvNDE5MBGGD2h0dHA6Ly90ZXN0LzQyMDARhg9o
--dHRwOi8vdGVzdC80MjEwEYYPaHR0cDovL3Rlc3QvNDIyMBGGD2h0dHA6Ly90ZXN0
--LzQyMzARhg9odHRwOi8vdGVzdC80MjQwEYYPaHR0cDovL3Rlc3QvNDI1MBGGD2h0
--dHA6Ly90ZXN0LzQyNjARhg9odHRwOi8vdGVzdC80MjcwEYYPaHR0cDovL3Rlc3Qv
--NDI4MBGGD2h0dHA6Ly90ZXN0LzQyOTARhg9odHRwOi8vdGVzdC80MzAwEYYPaHR0
--cDovL3Rlc3QvNDMxMBGGD2h0dHA6Ly90ZXN0LzQzMjARhg9odHRwOi8vdGVzdC80
--MzMwEYYPaHR0cDovL3Rlc3QvNDM0MBGGD2h0dHA6Ly90ZXN0LzQzNTARhg9odHRw
--Oi8vdGVzdC80MzYwEYYPaHR0cDovL3Rlc3QvNDM3MBGGD2h0dHA6Ly90ZXN0LzQz
--ODARhg9odHRwOi8vdGVzdC80MzkwEYYPaHR0cDovL3Rlc3QvNDQwMBGGD2h0dHA6
--Ly90ZXN0LzQ0MTARhg9odHRwOi8vdGVzdC80NDIwEYYPaHR0cDovL3Rlc3QvNDQz
--MBGGD2h0dHA6Ly90ZXN0LzQ0NDARhg9odHRwOi8vdGVzdC80NDUwEYYPaHR0cDov
--L3Rlc3QvNDQ2MBGGD2h0dHA6Ly90ZXN0LzQ0NzARhg9odHRwOi8vdGVzdC80NDgw
--EYYPaHR0cDovL3Rlc3QvNDQ5MBGGD2h0dHA6Ly90ZXN0LzQ1MDARhg9odHRwOi8v
--dGVzdC80NTEwEYYPaHR0cDovL3Rlc3QvNDUyMBGGD2h0dHA6Ly90ZXN0LzQ1MzAR
--hg9odHRwOi8vdGVzdC80NTQwEYYPaHR0cDovL3Rlc3QvNDU1MBGGD2h0dHA6Ly90
--ZXN0LzQ1NjARhg9odHRwOi8vdGVzdC80NTcwEYYPaHR0cDovL3Rlc3QvNDU4MBGG
--D2h0dHA6Ly90ZXN0LzQ1OTARhg9odHRwOi8vdGVzdC80NjAwEYYPaHR0cDovL3Rl
--c3QvNDYxMBGGD2h0dHA6Ly90ZXN0LzQ2MjARhg9odHRwOi8vdGVzdC80NjMwEYYP
--aHR0cDovL3Rlc3QvNDY0MBGGD2h0dHA6Ly90ZXN0LzQ2NTARhg9odHRwOi8vdGVz
--dC80NjYwEYYPaHR0cDovL3Rlc3QvNDY3MBGGD2h0dHA6Ly90ZXN0LzQ2ODARhg9o
--dHRwOi8vdGVzdC80NjkwEYYPaHR0cDovL3Rlc3QvNDcwMBGGD2h0dHA6Ly90ZXN0
--LzQ3MTARhg9odHRwOi8vdGVzdC80NzIwEYYPaHR0cDovL3Rlc3QvNDczMBGGD2h0
--dHA6Ly90ZXN0LzQ3NDARhg9odHRwOi8vdGVzdC80NzUwEYYPaHR0cDovL3Rlc3Qv
--NDc2MBGGD2h0dHA6Ly90ZXN0LzQ3NzARhg9odHRwOi8vdGVzdC80NzgwEYYPaHR0
--cDovL3Rlc3QvNDc5MBGGD2h0dHA6Ly90ZXN0LzQ4MDARhg9odHRwOi8vdGVzdC80
--ODEwEYYPaHR0cDovL3Rlc3QvNDgyMBGGD2h0dHA6Ly90ZXN0LzQ4MzARhg9odHRw
--Oi8vdGVzdC80ODQwEYYPaHR0cDovL3Rlc3QvNDg1MBGGD2h0dHA6Ly90ZXN0LzQ4
--NjARhg9odHRwOi8vdGVzdC80ODcwEYYPaHR0cDovL3Rlc3QvNDg4MBGGD2h0dHA6
--Ly90ZXN0LzQ4OTARhg9odHRwOi8vdGVzdC80OTAwEYYPaHR0cDovL3Rlc3QvNDkx
--MBGGD2h0dHA6Ly90ZXN0LzQ5MjARhg9odHRwOi8vdGVzdC80OTMwEYYPaHR0cDov
--L3Rlc3QvNDk0MBGGD2h0dHA6Ly90ZXN0LzQ5NTARhg9odHRwOi8vdGVzdC80OTYw
--EYYPaHR0cDovL3Rlc3QvNDk3MBGGD2h0dHA6Ly90ZXN0LzQ5ODARhg9odHRwOi8v
--dGVzdC80OTkwEYYPaHR0cDovL3Rlc3QvNTAwMBGGD2h0dHA6Ly90ZXN0LzUwMTAR
--hg9odHRwOi8vdGVzdC81MDIwEYYPaHR0cDovL3Rlc3QvNTAzMBGGD2h0dHA6Ly90
--ZXN0LzUwNDARhg9odHRwOi8vdGVzdC81MDUwEYYPaHR0cDovL3Rlc3QvNTA2MBGG
--D2h0dHA6Ly90ZXN0LzUwNzARhg9odHRwOi8vdGVzdC81MDgwEYYPaHR0cDovL3Rl
--c3QvNTA5MBGGD2h0dHA6Ly90ZXN0LzUxMDARhg9odHRwOi8vdGVzdC81MTEwEYYP
--aHR0cDovL3Rlc3QvNTEyMBGGD2h0dHA6Ly90ZXN0LzUxMzARhg9odHRwOi8vdGVz
--dC81MTQwEYYPaHR0cDovL3Rlc3QvNTE1MBGGD2h0dHA6Ly90ZXN0LzUxNjARhg9o
--dHRwOi8vdGVzdC81MTcwEYYPaHR0cDovL3Rlc3QvNTE4MBGGD2h0dHA6Ly90ZXN0
--LzUxOTARhg9odHRwOi8vdGVzdC81MjAwEYYPaHR0cDovL3Rlc3QvNTIxMBGGD2h0
--dHA6Ly90ZXN0LzUyMjARhg9odHRwOi8vdGVzdC81MjMwEYYPaHR0cDovL3Rlc3Qv
--NTI0MBGGD2h0dHA6Ly90ZXN0LzUyNTARhg9odHRwOi8vdGVzdC81MjYwEYYPaHR0
--cDovL3Rlc3QvNTI3MBGGD2h0dHA6Ly90ZXN0LzUyODARhg9odHRwOi8vdGVzdC81
--MjkwEYYPaHR0cDovL3Rlc3QvNTMwMBGGD2h0dHA6Ly90ZXN0LzUzMTARhg9odHRw
--Oi8vdGVzdC81MzIwEYYPaHR0cDovL3Rlc3QvNTMzMBGGD2h0dHA6Ly90ZXN0LzUz
--NDARhg9odHRwOi8vdGVzdC81MzUwEYYPaHR0cDovL3Rlc3QvNTM2MBGGD2h0dHA6
--Ly90ZXN0LzUzNzARhg9odHRwOi8vdGVzdC81MzgwEYYPaHR0cDovL3Rlc3QvNTM5
--MBGGD2h0dHA6Ly90ZXN0LzU0MDARhg9odHRwOi8vdGVzdC81NDEwEYYPaHR0cDov
--L3Rlc3QvNTQyMBGGD2h0dHA6Ly90ZXN0LzU0MzARhg9odHRwOi8vdGVzdC81NDQw
--EYYPaHR0cDovL3Rlc3QvNTQ1MBGGD2h0dHA6Ly90ZXN0LzU0NjARhg9odHRwOi8v
--dGVzdC81NDcwEYYPaHR0cDovL3Rlc3QvNTQ4MBGGD2h0dHA6Ly90ZXN0LzU0OTAR
--hg9odHRwOi8vdGVzdC81NTAwEYYPaHR0cDovL3Rlc3QvNTUxMBGGD2h0dHA6Ly90
--ZXN0LzU1MjARhg9odHRwOi8vdGVzdC81NTMwEYYPaHR0cDovL3Rlc3QvNTU0MBGG
--D2h0dHA6Ly90ZXN0LzU1NTARhg9odHRwOi8vdGVzdC81NTYwEYYPaHR0cDovL3Rl
--c3QvNTU3MBGGD2h0dHA6Ly90ZXN0LzU1ODARhg9odHRwOi8vdGVzdC81NTkwEYYP
--aHR0cDovL3Rlc3QvNTYwMBGGD2h0dHA6Ly90ZXN0LzU2MTARhg9odHRwOi8vdGVz
--dC81NjIwEYYPaHR0cDovL3Rlc3QvNTYzMBGGD2h0dHA6Ly90ZXN0LzU2NDARhg9o
--dHRwOi8vdGVzdC81NjUwEYYPaHR0cDovL3Rlc3QvNTY2MBGGD2h0dHA6Ly90ZXN0
--LzU2NzARhg9odHRwOi8vdGVzdC81NjgwEYYPaHR0cDovL3Rlc3QvNTY5MBGGD2h0
--dHA6Ly90ZXN0LzU3MDARhg9odHRwOi8vdGVzdC81NzEwEYYPaHR0cDovL3Rlc3Qv
--NTcyMBGGD2h0dHA6Ly90ZXN0LzU3MzARhg9odHRwOi8vdGVzdC81NzQwEYYPaHR0
--cDovL3Rlc3QvNTc1MBGGD2h0dHA6Ly90ZXN0LzU3NjARhg9odHRwOi8vdGVzdC81
--NzcwEYYPaHR0cDovL3Rlc3QvNTc4MBGGD2h0dHA6Ly90ZXN0LzU3OTARhg9odHRw
--Oi8vdGVzdC81ODAwEYYPaHR0cDovL3Rlc3QvNTgxMBGGD2h0dHA6Ly90ZXN0LzU4
--MjARhg9odHRwOi8vdGVzdC81ODMwEYYPaHR0cDovL3Rlc3QvNTg0MBGGD2h0dHA6
--Ly90ZXN0LzU4NTARhg9odHRwOi8vdGVzdC81ODYwEYYPaHR0cDovL3Rlc3QvNTg3
--MBGGD2h0dHA6Ly90ZXN0LzU4ODARhg9odHRwOi8vdGVzdC81ODkwEYYPaHR0cDov
--L3Rlc3QvNTkwMBGGD2h0dHA6Ly90ZXN0LzU5MTARhg9odHRwOi8vdGVzdC81OTIw
--EYYPaHR0cDovL3Rlc3QvNTkzMBGGD2h0dHA6Ly90ZXN0LzU5NDARhg9odHRwOi8v
--dGVzdC81OTUwEYYPaHR0cDovL3Rlc3QvNTk2MBGGD2h0dHA6Ly90ZXN0LzU5NzAR
--hg9odHRwOi8vdGVzdC81OTgwEYYPaHR0cDovL3Rlc3QvNTk5MBGGD2h0dHA6Ly90
--ZXN0LzYwMDARhg9odHRwOi8vdGVzdC82MDEwEYYPaHR0cDovL3Rlc3QvNjAyMBGG
--D2h0dHA6Ly90ZXN0LzYwMzARhg9odHRwOi8vdGVzdC82MDQwEYYPaHR0cDovL3Rl
--c3QvNjA1MBGGD2h0dHA6Ly90ZXN0LzYwNjARhg9odHRwOi8vdGVzdC82MDcwEYYP
--aHR0cDovL3Rlc3QvNjA4MBGGD2h0dHA6Ly90ZXN0LzYwOTARhg9odHRwOi8vdGVz
--dC82MTAwEYYPaHR0cDovL3Rlc3QvNjExMBGGD2h0dHA6Ly90ZXN0LzYxMjARhg9o
--dHRwOi8vdGVzdC82MTMwEYYPaHR0cDovL3Rlc3QvNjE0MBGGD2h0dHA6Ly90ZXN0
--LzYxNTARhg9odHRwOi8vdGVzdC82MTYwEYYPaHR0cDovL3Rlc3QvNjE3MBGGD2h0
--dHA6Ly90ZXN0LzYxODARhg9odHRwOi8vdGVzdC82MTkwEYYPaHR0cDovL3Rlc3Qv
--NjIwMBGGD2h0dHA6Ly90ZXN0LzYyMTARhg9odHRwOi8vdGVzdC82MjIwEYYPaHR0
--cDovL3Rlc3QvNjIzMBGGD2h0dHA6Ly90ZXN0LzYyNDARhg9odHRwOi8vdGVzdC82
--MjUwEYYPaHR0cDovL3Rlc3QvNjI2MBGGD2h0dHA6Ly90ZXN0LzYyNzARhg9odHRw
--Oi8vdGVzdC82MjgwEYYPaHR0cDovL3Rlc3QvNjI5MBGGD2h0dHA6Ly90ZXN0LzYz
--MDARhg9odHRwOi8vdGVzdC82MzEwEYYPaHR0cDovL3Rlc3QvNjMyMBGGD2h0dHA6
--Ly90ZXN0LzYzMzARhg9odHRwOi8vdGVzdC82MzQwEYYPaHR0cDovL3Rlc3QvNjM1
--MBGGD2h0dHA6Ly90ZXN0LzYzNjARhg9odHRwOi8vdGVzdC82MzcwEYYPaHR0cDov
--L3Rlc3QvNjM4MBGGD2h0dHA6Ly90ZXN0LzYzOTARhg9odHRwOi8vdGVzdC82NDAw
--EYYPaHR0cDovL3Rlc3QvNjQxMBGGD2h0dHA6Ly90ZXN0LzY0MjARhg9odHRwOi8v
--dGVzdC82NDMwEYYPaHR0cDovL3Rlc3QvNjQ0MBGGD2h0dHA6Ly90ZXN0LzY0NTAR
--hg9odHRwOi8vdGVzdC82NDYwEYYPaHR0cDovL3Rlc3QvNjQ3MBGGD2h0dHA6Ly90
--ZXN0LzY0ODARhg9odHRwOi8vdGVzdC82NDkwEYYPaHR0cDovL3Rlc3QvNjUwMBGG
--D2h0dHA6Ly90ZXN0LzY1MTARhg9odHRwOi8vdGVzdC82NTIwEYYPaHR0cDovL3Rl
--c3QvNjUzMBGGD2h0dHA6Ly90ZXN0LzY1NDARhg9odHRwOi8vdGVzdC82NTUwEYYP
--aHR0cDovL3Rlc3QvNjU2MBGGD2h0dHA6Ly90ZXN0LzY1NzARhg9odHRwOi8vdGVz
--dC82NTgwEYYPaHR0cDovL3Rlc3QvNjU5MBGGD2h0dHA6Ly90ZXN0LzY2MDARhg9o
--dHRwOi8vdGVzdC82NjEwEYYPaHR0cDovL3Rlc3QvNjYyMBGGD2h0dHA6Ly90ZXN0
--LzY2MzARhg9odHRwOi8vdGVzdC82NjQwEYYPaHR0cDovL3Rlc3QvNjY1MBGGD2h0
--dHA6Ly90ZXN0LzY2NjARhg9odHRwOi8vdGVzdC82NjcwEYYPaHR0cDovL3Rlc3Qv
--NjY4MBGGD2h0dHA6Ly90ZXN0LzY2OTARhg9odHRwOi8vdGVzdC82NzAwEYYPaHR0
--cDovL3Rlc3QvNjcxMBGGD2h0dHA6Ly90ZXN0LzY3MjARhg9odHRwOi8vdGVzdC82
--NzMwEYYPaHR0cDovL3Rlc3QvNjc0MBGGD2h0dHA6Ly90ZXN0LzY3NTARhg9odHRw
--Oi8vdGVzdC82NzYwEYYPaHR0cDovL3Rlc3QvNjc3MBGGD2h0dHA6Ly90ZXN0LzY3
--ODARhg9odHRwOi8vdGVzdC82NzkwEYYPaHR0cDovL3Rlc3QvNjgwMBGGD2h0dHA6
--Ly90ZXN0LzY4MTARhg9odHRwOi8vdGVzdC82ODIwEYYPaHR0cDovL3Rlc3QvNjgz
--MBGGD2h0dHA6Ly90ZXN0LzY4NDARhg9odHRwOi8vdGVzdC82ODUwEYYPaHR0cDov
--L3Rlc3QvNjg2MBGGD2h0dHA6Ly90ZXN0LzY4NzARhg9odHRwOi8vdGVzdC82ODgw
--EYYPaHR0cDovL3Rlc3QvNjg5MBGGD2h0dHA6Ly90ZXN0LzY5MDARhg9odHRwOi8v
--dGVzdC82OTEwEYYPaHR0cDovL3Rlc3QvNjkyMBGGD2h0dHA6Ly90ZXN0LzY5MzAR
--hg9odHRwOi8vdGVzdC82OTQwEYYPaHR0cDovL3Rlc3QvNjk1MBGGD2h0dHA6Ly90
--ZXN0LzY5NjARhg9odHRwOi8vdGVzdC82OTcwEYYPaHR0cDovL3Rlc3QvNjk4MBGG
--D2h0dHA6Ly90ZXN0LzY5OTARhg9odHRwOi8vdGVzdC83MDAwEYYPaHR0cDovL3Rl
--c3QvNzAxMBGGD2h0dHA6Ly90ZXN0LzcwMjARhg9odHRwOi8vdGVzdC83MDMwEYYP
--aHR0cDovL3Rlc3QvNzA0MBGGD2h0dHA6Ly90ZXN0LzcwNTARhg9odHRwOi8vdGVz
--dC83MDYwEYYPaHR0cDovL3Rlc3QvNzA3MBGGD2h0dHA6Ly90ZXN0LzcwODARhg9o
--dHRwOi8vdGVzdC83MDkwEYYPaHR0cDovL3Rlc3QvNzEwMBGGD2h0dHA6Ly90ZXN0
--LzcxMTARhg9odHRwOi8vdGVzdC83MTIwEYYPaHR0cDovL3Rlc3QvNzEzMBGGD2h0
--dHA6Ly90ZXN0LzcxNDARhg9odHRwOi8vdGVzdC83MTUwEYYPaHR0cDovL3Rlc3Qv
--NzE2MBGGD2h0dHA6Ly90ZXN0LzcxNzARhg9odHRwOi8vdGVzdC83MTgwEYYPaHR0
--cDovL3Rlc3QvNzE5MBGGD2h0dHA6Ly90ZXN0LzcyMDARhg9odHRwOi8vdGVzdC83
--MjEwEYYPaHR0cDovL3Rlc3QvNzIyMBGGD2h0dHA6Ly90ZXN0LzcyMzARhg9odHRw
--Oi8vdGVzdC83MjQwEYYPaHR0cDovL3Rlc3QvNzI1MBGGD2h0dHA6Ly90ZXN0Lzcy
--NjARhg9odHRwOi8vdGVzdC83MjcwEYYPaHR0cDovL3Rlc3QvNzI4MBGGD2h0dHA6
--Ly90ZXN0LzcyOTARhg9odHRwOi8vdGVzdC83MzAwEYYPaHR0cDovL3Rlc3QvNzMx
--MBGGD2h0dHA6Ly90ZXN0LzczMjARhg9odHRwOi8vdGVzdC83MzMwEYYPaHR0cDov
--L3Rlc3QvNzM0MBGGD2h0dHA6Ly90ZXN0LzczNTARhg9odHRwOi8vdGVzdC83MzYw
--EYYPaHR0cDovL3Rlc3QvNzM3MBGGD2h0dHA6Ly90ZXN0LzczODARhg9odHRwOi8v
--dGVzdC83MzkwEYYPaHR0cDovL3Rlc3QvNzQwMBGGD2h0dHA6Ly90ZXN0Lzc0MTAR
--hg9odHRwOi8vdGVzdC83NDIwEYYPaHR0cDovL3Rlc3QvNzQzMBGGD2h0dHA6Ly90
--ZXN0Lzc0NDARhg9odHRwOi8vdGVzdC83NDUwEYYPaHR0cDovL3Rlc3QvNzQ2MBGG
--D2h0dHA6Ly90ZXN0Lzc0NzARhg9odHRwOi8vdGVzdC83NDgwEYYPaHR0cDovL3Rl
--c3QvNzQ5MBGGD2h0dHA6Ly90ZXN0Lzc1MDARhg9odHRwOi8vdGVzdC83NTEwEYYP
--aHR0cDovL3Rlc3QvNzUyMBGGD2h0dHA6Ly90ZXN0Lzc1MzARhg9odHRwOi8vdGVz
--dC83NTQwEYYPaHR0cDovL3Rlc3QvNzU1MBGGD2h0dHA6Ly90ZXN0Lzc1NjARhg9o
--dHRwOi8vdGVzdC83NTcwEYYPaHR0cDovL3Rlc3QvNzU4MBGGD2h0dHA6Ly90ZXN0
--Lzc1OTARhg9odHRwOi8vdGVzdC83NjAwEYYPaHR0cDovL3Rlc3QvNzYxMBGGD2h0
--dHA6Ly90ZXN0Lzc2MjARhg9odHRwOi8vdGVzdC83NjMwEYYPaHR0cDovL3Rlc3Qv
--NzY0MBGGD2h0dHA6Ly90ZXN0Lzc2NTARhg9odHRwOi8vdGVzdC83NjYwEYYPaHR0
--cDovL3Rlc3QvNzY3MBGGD2h0dHA6Ly90ZXN0Lzc2ODARhg9odHRwOi8vdGVzdC83
--NjkwEYYPaHR0cDovL3Rlc3QvNzcwMBGGD2h0dHA6Ly90ZXN0Lzc3MTARhg9odHRw
--Oi8vdGVzdC83NzIwEYYPaHR0cDovL3Rlc3QvNzczMBGGD2h0dHA6Ly90ZXN0Lzc3
--NDARhg9odHRwOi8vdGVzdC83NzUwEYYPaHR0cDovL3Rlc3QvNzc2MBGGD2h0dHA6
--Ly90ZXN0Lzc3NzARhg9odHRwOi8vdGVzdC83NzgwEYYPaHR0cDovL3Rlc3QvNzc5
--MBGGD2h0dHA6Ly90ZXN0Lzc4MDARhg9odHRwOi8vdGVzdC83ODEwEYYPaHR0cDov
--L3Rlc3QvNzgyMBGGD2h0dHA6Ly90ZXN0Lzc4MzARhg9odHRwOi8vdGVzdC83ODQw
--EYYPaHR0cDovL3Rlc3QvNzg1MBGGD2h0dHA6Ly90ZXN0Lzc4NjARhg9odHRwOi8v
--dGVzdC83ODcwEYYPaHR0cDovL3Rlc3QvNzg4MBGGD2h0dHA6Ly90ZXN0Lzc4OTAR
--hg9odHRwOi8vdGVzdC83OTAwEYYPaHR0cDovL3Rlc3QvNzkxMBGGD2h0dHA6Ly90
--ZXN0Lzc5MjARhg9odHRwOi8vdGVzdC83OTMwEYYPaHR0cDovL3Rlc3QvNzk0MBGG
--D2h0dHA6Ly90ZXN0Lzc5NTARhg9odHRwOi8vdGVzdC83OTYwEYYPaHR0cDovL3Rl
--c3QvNzk3MBGGD2h0dHA6Ly90ZXN0Lzc5ODARhg9odHRwOi8vdGVzdC83OTkwEYYP
--aHR0cDovL3Rlc3QvODAwMBGGD2h0dHA6Ly90ZXN0LzgwMTARhg9odHRwOi8vdGVz
--dC84MDIwEYYPaHR0cDovL3Rlc3QvODAzMBGGD2h0dHA6Ly90ZXN0LzgwNDARhg9o
--dHRwOi8vdGVzdC84MDUwEYYPaHR0cDovL3Rlc3QvODA2MBGGD2h0dHA6Ly90ZXN0
--LzgwNzARhg9odHRwOi8vdGVzdC84MDgwEYYPaHR0cDovL3Rlc3QvODA5MBGGD2h0
--dHA6Ly90ZXN0LzgxMDARhg9odHRwOi8vdGVzdC84MTEwEYYPaHR0cDovL3Rlc3Qv
--ODEyMBGGD2h0dHA6Ly90ZXN0LzgxMzARhg9odHRwOi8vdGVzdC84MTQwEYYPaHR0
--cDovL3Rlc3QvODE1MBGGD2h0dHA6Ly90ZXN0LzgxNjARhg9odHRwOi8vdGVzdC84
--MTcwEYYPaHR0cDovL3Rlc3QvODE4MBGGD2h0dHA6Ly90ZXN0LzgxOTARhg9odHRw
--Oi8vdGVzdC84MjAwEYYPaHR0cDovL3Rlc3QvODIxMBGGD2h0dHA6Ly90ZXN0Lzgy
--MjARhg9odHRwOi8vdGVzdC84MjMwEYYPaHR0cDovL3Rlc3QvODI0MBGGD2h0dHA6
--Ly90ZXN0LzgyNTARhg9odHRwOi8vdGVzdC84MjYwEYYPaHR0cDovL3Rlc3QvODI3
--MBGGD2h0dHA6Ly90ZXN0LzgyODARhg9odHRwOi8vdGVzdC84MjkwEYYPaHR0cDov
--L3Rlc3QvODMwMBGGD2h0dHA6Ly90ZXN0LzgzMTARhg9odHRwOi8vdGVzdC84MzIw
--EYYPaHR0cDovL3Rlc3QvODMzMBGGD2h0dHA6Ly90ZXN0LzgzNDARhg9odHRwOi8v
--dGVzdC84MzUwEYYPaHR0cDovL3Rlc3QvODM2MBGGD2h0dHA6Ly90ZXN0LzgzNzAR
--hg9odHRwOi8vdGVzdC84MzgwEYYPaHR0cDovL3Rlc3QvODM5MBGGD2h0dHA6Ly90
--ZXN0Lzg0MDARhg9odHRwOi8vdGVzdC84NDEwEYYPaHR0cDovL3Rlc3QvODQyMBGG
--D2h0dHA6Ly90ZXN0Lzg0MzARhg9odHRwOi8vdGVzdC84NDQwEYYPaHR0cDovL3Rl
--c3QvODQ1MBGGD2h0dHA6Ly90ZXN0Lzg0NjARhg9odHRwOi8vdGVzdC84NDcwEYYP
--aHR0cDovL3Rlc3QvODQ4MBGGD2h0dHA6Ly90ZXN0Lzg0OTARhg9odHRwOi8vdGVz
--dC84NTAwEYYPaHR0cDovL3Rlc3QvODUxMBGGD2h0dHA6Ly90ZXN0Lzg1MjARhg9o
--dHRwOi8vdGVzdC84NTMwEYYPaHR0cDovL3Rlc3QvODU0MBGGD2h0dHA6Ly90ZXN0
--Lzg1NTARhg9odHRwOi8vdGVzdC84NTYwEYYPaHR0cDovL3Rlc3QvODU3MBGGD2h0
--dHA6Ly90ZXN0Lzg1ODARhg9odHRwOi8vdGVzdC84NTkwEYYPaHR0cDovL3Rlc3Qv
--ODYwMBGGD2h0dHA6Ly90ZXN0Lzg2MTARhg9odHRwOi8vdGVzdC84NjIwEYYPaHR0
--cDovL3Rlc3QvODYzMBGGD2h0dHA6Ly90ZXN0Lzg2NDARhg9odHRwOi8vdGVzdC84
--NjUwEYYPaHR0cDovL3Rlc3QvODY2MBGGD2h0dHA6Ly90ZXN0Lzg2NzARhg9odHRw
--Oi8vdGVzdC84NjgwEYYPaHR0cDovL3Rlc3QvODY5MBGGD2h0dHA6Ly90ZXN0Lzg3
--MDARhg9odHRwOi8vdGVzdC84NzEwEYYPaHR0cDovL3Rlc3QvODcyMBGGD2h0dHA6
--Ly90ZXN0Lzg3MzARhg9odHRwOi8vdGVzdC84NzQwEYYPaHR0cDovL3Rlc3QvODc1
--MBGGD2h0dHA6Ly90ZXN0Lzg3NjARhg9odHRwOi8vdGVzdC84NzcwEYYPaHR0cDov
--L3Rlc3QvODc4MBGGD2h0dHA6Ly90ZXN0Lzg3OTARhg9odHRwOi8vdGVzdC84ODAw
--EYYPaHR0cDovL3Rlc3QvODgxMBGGD2h0dHA6Ly90ZXN0Lzg4MjARhg9odHRwOi8v
--dGVzdC84ODMwEYYPaHR0cDovL3Rlc3QvODg0MBGGD2h0dHA6Ly90ZXN0Lzg4NTAR
--hg9odHRwOi8vdGVzdC84ODYwEYYPaHR0cDovL3Rlc3QvODg3MBGGD2h0dHA6Ly90
--ZXN0Lzg4ODARhg9odHRwOi8vdGVzdC84ODkwEYYPaHR0cDovL3Rlc3QvODkwMBGG
--D2h0dHA6Ly90ZXN0Lzg5MTARhg9odHRwOi8vdGVzdC84OTIwEYYPaHR0cDovL3Rl
--c3QvODkzMBGGD2h0dHA6Ly90ZXN0Lzg5NDARhg9odHRwOi8vdGVzdC84OTUwEYYP
--aHR0cDovL3Rlc3QvODk2MBGGD2h0dHA6Ly90ZXN0Lzg5NzARhg9odHRwOi8vdGVz
--dC84OTgwEYYPaHR0cDovL3Rlc3QvODk5MBGGD2h0dHA6Ly90ZXN0LzkwMDARhg9o
--dHRwOi8vdGVzdC85MDEwEYYPaHR0cDovL3Rlc3QvOTAyMBGGD2h0dHA6Ly90ZXN0
--LzkwMzARhg9odHRwOi8vdGVzdC85MDQwEYYPaHR0cDovL3Rlc3QvOTA1MBGGD2h0
--dHA6Ly90ZXN0LzkwNjARhg9odHRwOi8vdGVzdC85MDcwEYYPaHR0cDovL3Rlc3Qv
--OTA4MBGGD2h0dHA6Ly90ZXN0LzkwOTARhg9odHRwOi8vdGVzdC85MTAwEYYPaHR0
--cDovL3Rlc3QvOTExMBGGD2h0dHA6Ly90ZXN0LzkxMjARhg9odHRwOi8vdGVzdC85
--MTMwEYYPaHR0cDovL3Rlc3QvOTE0MBGGD2h0dHA6Ly90ZXN0LzkxNTARhg9odHRw
--Oi8vdGVzdC85MTYwEYYPaHR0cDovL3Rlc3QvOTE3MBGGD2h0dHA6Ly90ZXN0Lzkx
--ODARhg9odHRwOi8vdGVzdC85MTkwEYYPaHR0cDovL3Rlc3QvOTIwMBGGD2h0dHA6
--Ly90ZXN0LzkyMTARhg9odHRwOi8vdGVzdC85MjIwEYYPaHR0cDovL3Rlc3QvOTIz
--MBGGD2h0dHA6Ly90ZXN0LzkyNDARhg9odHRwOi8vdGVzdC85MjUwEYYPaHR0cDov
--L3Rlc3QvOTI2MBGGD2h0dHA6Ly90ZXN0LzkyNzARhg9odHRwOi8vdGVzdC85Mjgw
--EYYPaHR0cDovL3Rlc3QvOTI5MBGGD2h0dHA6Ly90ZXN0LzkzMDARhg9odHRwOi8v
--dGVzdC85MzEwEYYPaHR0cDovL3Rlc3QvOTMyMBGGD2h0dHA6Ly90ZXN0LzkzMzAR
--hg9odHRwOi8vdGVzdC85MzQwEYYPaHR0cDovL3Rlc3QvOTM1MBGGD2h0dHA6Ly90
--ZXN0LzkzNjARhg9odHRwOi8vdGVzdC85MzcwEYYPaHR0cDovL3Rlc3QvOTM4MBGG
--D2h0dHA6Ly90ZXN0LzkzOTARhg9odHRwOi8vdGVzdC85NDAwEYYPaHR0cDovL3Rl
--c3QvOTQxMBGGD2h0dHA6Ly90ZXN0Lzk0MjARhg9odHRwOi8vdGVzdC85NDMwEYYP
--aHR0cDovL3Rlc3QvOTQ0MBGGD2h0dHA6Ly90ZXN0Lzk0NTARhg9odHRwOi8vdGVz
--dC85NDYwEYYPaHR0cDovL3Rlc3QvOTQ3MBGGD2h0dHA6Ly90ZXN0Lzk0ODARhg9o
--dHRwOi8vdGVzdC85NDkwEYYPaHR0cDovL3Rlc3QvOTUwMBGGD2h0dHA6Ly90ZXN0
--Lzk1MTARhg9odHRwOi8vdGVzdC85NTIwEYYPaHR0cDovL3Rlc3QvOTUzMBGGD2h0
--dHA6Ly90ZXN0Lzk1NDARhg9odHRwOi8vdGVzdC85NTUwEYYPaHR0cDovL3Rlc3Qv
--OTU2MBGGD2h0dHA6Ly90ZXN0Lzk1NzARhg9odHRwOi8vdGVzdC85NTgwEYYPaHR0
--cDovL3Rlc3QvOTU5MBGGD2h0dHA6Ly90ZXN0Lzk2MDARhg9odHRwOi8vdGVzdC85
--NjEwEYYPaHR0cDovL3Rlc3QvOTYyMBGGD2h0dHA6Ly90ZXN0Lzk2MzARhg9odHRw
--Oi8vdGVzdC85NjQwEYYPaHR0cDovL3Rlc3QvOTY1MBGGD2h0dHA6Ly90ZXN0Lzk2
--NjARhg9odHRwOi8vdGVzdC85NjcwEYYPaHR0cDovL3Rlc3QvOTY4MBGGD2h0dHA6
--Ly90ZXN0Lzk2OTARhg9odHRwOi8vdGVzdC85NzAwEYYPaHR0cDovL3Rlc3QvOTcx
--MBGGD2h0dHA6Ly90ZXN0Lzk3MjARhg9odHRwOi8vdGVzdC85NzMwEYYPaHR0cDov
--L3Rlc3QvOTc0MBGGD2h0dHA6Ly90ZXN0Lzk3NTARhg9odHRwOi8vdGVzdC85NzYw
--EYYPaHR0cDovL3Rlc3QvOTc3MBGGD2h0dHA6Ly90ZXN0Lzk3ODARhg9odHRwOi8v
--dGVzdC85NzkwEYYPaHR0cDovL3Rlc3QvOTgwMBGGD2h0dHA6Ly90ZXN0Lzk4MTAR
--hg9odHRwOi8vdGVzdC85ODIwEYYPaHR0cDovL3Rlc3QvOTgzMBGGD2h0dHA6Ly90
--ZXN0Lzk4NDARhg9odHRwOi8vdGVzdC85ODUwEYYPaHR0cDovL3Rlc3QvOTg2MBGG
--D2h0dHA6Ly90ZXN0Lzk4NzARhg9odHRwOi8vdGVzdC85ODgwEYYPaHR0cDovL3Rl
--c3QvOTg5MBGGD2h0dHA6Ly90ZXN0Lzk5MDARhg9odHRwOi8vdGVzdC85OTEwEYYP
--aHR0cDovL3Rlc3QvOTkyMBGGD2h0dHA6Ly90ZXN0Lzk5MzARhg9odHRwOi8vdGVz
--dC85OTQwEYYPaHR0cDovL3Rlc3QvOTk1MBGGD2h0dHA6Ly90ZXN0Lzk5NjARhg9o
--dHRwOi8vdGVzdC85OTcwEYYPaHR0cDovL3Rlc3QvOTk4MBGGD2h0dHA6Ly90ZXN0
--Lzk5OTAShhBodHRwOi8vdGVzdC8xMDAwMBKGEGh0dHA6Ly90ZXN0LzEwMDEwEoYQ
--aHR0cDovL3Rlc3QvMTAwMjAShhBodHRwOi8vdGVzdC8xMDAzMBKGEGh0dHA6Ly90
--ZXN0LzEwMDQwEoYQaHR0cDovL3Rlc3QvMTAwNTAShhBodHRwOi8vdGVzdC8xMDA2
--MBKGEGh0dHA6Ly90ZXN0LzEwMDcwEoYQaHR0cDovL3Rlc3QvMTAwODAShhBodHRw
--Oi8vdGVzdC8xMDA5MBKGEGh0dHA6Ly90ZXN0LzEwMTAwEoYQaHR0cDovL3Rlc3Qv
--MTAxMTAShhBodHRwOi8vdGVzdC8xMDEyMBKGEGh0dHA6Ly90ZXN0LzEwMTMwEoYQ
--aHR0cDovL3Rlc3QvMTAxNDAShhBodHRwOi8vdGVzdC8xMDE1MBKGEGh0dHA6Ly90
--ZXN0LzEwMTYwEoYQaHR0cDovL3Rlc3QvMTAxNzAShhBodHRwOi8vdGVzdC8xMDE4
--MBKGEGh0dHA6Ly90ZXN0LzEwMTkwEoYQaHR0cDovL3Rlc3QvMTAyMDAShhBodHRw
--Oi8vdGVzdC8xMDIxMBKGEGh0dHA6Ly90ZXN0LzEwMjIwEoYQaHR0cDovL3Rlc3Qv
--MTAyMzAShhBodHRwOi8vdGVzdC8xMDI0oYLPijAKhwgLAAAA/////zAKhwgLAAAB
--/////zAKhwgLAAAC/////zAKhwgLAAAD/////zAKhwgLAAAE/////zAKhwgLAAAF
--/////zAKhwgLAAAG/////zAKhwgLAAAH/////zAKhwgLAAAI/////zAKhwgLAAAJ
--/////zAKhwgLAAAK/////zAKhwgLAAAL/////zAKhwgLAAAM/////zAKhwgLAAAN
--/////zAKhwgLAAAO/////zAKhwgLAAAP/////zAKhwgLAAAQ/////zAKhwgLAAAR
--/////zAKhwgLAAAS/////zAKhwgLAAAT/////zAKhwgLAAAU/////zAKhwgLAAAV
--/////zAKhwgLAAAW/////zAKhwgLAAAX/////zAKhwgLAAAY/////zAKhwgLAAAZ
--/////zAKhwgLAAAa/////zAKhwgLAAAb/////zAKhwgLAAAc/////zAKhwgLAAAd
--/////zAKhwgLAAAe/////zAKhwgLAAAf/////zAKhwgLAAAg/////zAKhwgLAAAh
--/////zAKhwgLAAAi/////zAKhwgLAAAj/////zAKhwgLAAAk/////zAKhwgLAAAl
--/////zAKhwgLAAAm/////zAKhwgLAAAn/////zAKhwgLAAAo/////zAKhwgLAAAp
--/////zAKhwgLAAAq/////zAKhwgLAAAr/////zAKhwgLAAAs/////zAKhwgLAAAt
--/////zAKhwgLAAAu/////zAKhwgLAAAv/////zAKhwgLAAAw/////zAKhwgLAAAx
--/////zAKhwgLAAAy/////zAKhwgLAAAz/////zAKhwgLAAA0/////zAKhwgLAAA1
--/////zAKhwgLAAA2/////zAKhwgLAAA3/////zAKhwgLAAA4/////zAKhwgLAAA5
--/////zAKhwgLAAA6/////zAKhwgLAAA7/////zAKhwgLAAA8/////zAKhwgLAAA9
--/////zAKhwgLAAA+/////zAKhwgLAAA//////zAKhwgLAABA/////zAKhwgLAABB
--/////zAKhwgLAABC/////zAKhwgLAABD/////zAKhwgLAABE/////zAKhwgLAABF
--/////zAKhwgLAABG/////zAKhwgLAABH/////zAKhwgLAABI/////zAKhwgLAABJ
--/////zAKhwgLAABK/////zAKhwgLAABL/////zAKhwgLAABM/////zAKhwgLAABN
--/////zAKhwgLAABO/////zAKhwgLAABP/////zAKhwgLAABQ/////zAKhwgLAABR
--/////zAKhwgLAABS/////zAKhwgLAABT/////zAKhwgLAABU/////zAKhwgLAABV
--/////zAKhwgLAABW/////zAKhwgLAABX/////zAKhwgLAABY/////zAKhwgLAABZ
--/////zAKhwgLAABa/////zAKhwgLAABb/////zAKhwgLAABc/////zAKhwgLAABd
--/////zAKhwgLAABe/////zAKhwgLAABf/////zAKhwgLAABg/////zAKhwgLAABh
--/////zAKhwgLAABi/////zAKhwgLAABj/////zAKhwgLAABk/////zAKhwgLAABl
--/////zAKhwgLAABm/////zAKhwgLAABn/////zAKhwgLAABo/////zAKhwgLAABp
--/////zAKhwgLAABq/////zAKhwgLAABr/////zAKhwgLAABs/////zAKhwgLAABt
--/////zAKhwgLAABu/////zAKhwgLAABv/////zAKhwgLAABw/////zAKhwgLAABx
--/////zAKhwgLAABy/////zAKhwgLAABz/////zAKhwgLAAB0/////zAKhwgLAAB1
--/////zAKhwgLAAB2/////zAKhwgLAAB3/////zAKhwgLAAB4/////zAKhwgLAAB5
--/////zAKhwgLAAB6/////zAKhwgLAAB7/////zAKhwgLAAB8/////zAKhwgLAAB9
--/////zAKhwgLAAB+/////zAKhwgLAAB//////zAKhwgLAACA/////zAKhwgLAACB
--/////zAKhwgLAACC/////zAKhwgLAACD/////zAKhwgLAACE/////zAKhwgLAACF
--/////zAKhwgLAACG/////zAKhwgLAACH/////zAKhwgLAACI/////zAKhwgLAACJ
--/////zAKhwgLAACK/////zAKhwgLAACL/////zAKhwgLAACM/////zAKhwgLAACN
--/////zAKhwgLAACO/////zAKhwgLAACP/////zAKhwgLAACQ/////zAKhwgLAACR
--/////zAKhwgLAACS/////zAKhwgLAACT/////zAKhwgLAACU/////zAKhwgLAACV
--/////zAKhwgLAACW/////zAKhwgLAACX/////zAKhwgLAACY/////zAKhwgLAACZ
--/////zAKhwgLAACa/////zAKhwgLAACb/////zAKhwgLAACc/////zAKhwgLAACd
--/////zAKhwgLAACe/////zAKhwgLAACf/////zAKhwgLAACg/////zAKhwgLAACh
--/////zAKhwgLAACi/////zAKhwgLAACj/////zAKhwgLAACk/////zAKhwgLAACl
--/////zAKhwgLAACm/////zAKhwgLAACn/////zAKhwgLAACo/////zAKhwgLAACp
--/////zAKhwgLAACq/////zAKhwgLAACr/////zAKhwgLAACs/////zAKhwgLAACt
--/////zAKhwgLAACu/////zAKhwgLAACv/////zAKhwgLAACw/////zAKhwgLAACx
--/////zAKhwgLAACy/////zAKhwgLAACz/////zAKhwgLAAC0/////zAKhwgLAAC1
--/////zAKhwgLAAC2/////zAKhwgLAAC3/////zAKhwgLAAC4/////zAKhwgLAAC5
--/////zAKhwgLAAC6/////zAKhwgLAAC7/////zAKhwgLAAC8/////zAKhwgLAAC9
--/////zAKhwgLAAC+/////zAKhwgLAAC//////zAKhwgLAADA/////zAKhwgLAADB
--/////zAKhwgLAADC/////zAKhwgLAADD/////zAKhwgLAADE/////zAKhwgLAADF
--/////zAKhwgLAADG/////zAKhwgLAADH/////zAKhwgLAADI/////zAKhwgLAADJ
--/////zAKhwgLAADK/////zAKhwgLAADL/////zAKhwgLAADM/////zAKhwgLAADN
--/////zAKhwgLAADO/////zAKhwgLAADP/////zAKhwgLAADQ/////zAKhwgLAADR
--/////zAKhwgLAADS/////zAKhwgLAADT/////zAKhwgLAADU/////zAKhwgLAADV
--/////zAKhwgLAADW/////zAKhwgLAADX/////zAKhwgLAADY/////zAKhwgLAADZ
--/////zAKhwgLAADa/////zAKhwgLAADb/////zAKhwgLAADc/////zAKhwgLAADd
--/////zAKhwgLAADe/////zAKhwgLAADf/////zAKhwgLAADg/////zAKhwgLAADh
--/////zAKhwgLAADi/////zAKhwgLAADj/////zAKhwgLAADk/////zAKhwgLAADl
--/////zAKhwgLAADm/////zAKhwgLAADn/////zAKhwgLAADo/////zAKhwgLAADp
--/////zAKhwgLAADq/////zAKhwgLAADr/////zAKhwgLAADs/////zAKhwgLAADt
--/////zAKhwgLAADu/////zAKhwgLAADv/////zAKhwgLAADw/////zAKhwgLAADx
--/////zAKhwgLAADy/////zAKhwgLAADz/////zAKhwgLAAD0/////zAKhwgLAAD1
--/////zAKhwgLAAD2/////zAKhwgLAAD3/////zAKhwgLAAD4/////zAKhwgLAAD5
--/////zAKhwgLAAD6/////zAKhwgLAAD7/////zAKhwgLAAD8/////zAKhwgLAAD9
--/////zAKhwgLAAD+/////zAKhwgLAAD//////zAKhwgLAAEA/////zAKhwgLAAEB
--/////zAKhwgLAAEC/////zAKhwgLAAED/////zAKhwgLAAEE/////zAKhwgLAAEF
--/////zAKhwgLAAEG/////zAKhwgLAAEH/////zAKhwgLAAEI/////zAKhwgLAAEJ
--/////zAKhwgLAAEK/////zAKhwgLAAEL/////zAKhwgLAAEM/////zAKhwgLAAEN
--/////zAKhwgLAAEO/////zAKhwgLAAEP/////zAKhwgLAAEQ/////zAKhwgLAAER
--/////zAKhwgLAAES/////zAKhwgLAAET/////zAKhwgLAAEU/////zAKhwgLAAEV
--/////zAKhwgLAAEW/////zAKhwgLAAEX/////zAKhwgLAAEY/////zAKhwgLAAEZ
--/////zAKhwgLAAEa/////zAKhwgLAAEb/////zAKhwgLAAEc/////zAKhwgLAAEd
--/////zAKhwgLAAEe/////zAKhwgLAAEf/////zAKhwgLAAEg/////zAKhwgLAAEh
--/////zAKhwgLAAEi/////zAKhwgLAAEj/////zAKhwgLAAEk/////zAKhwgLAAEl
--/////zAKhwgLAAEm/////zAKhwgLAAEn/////zAKhwgLAAEo/////zAKhwgLAAEp
--/////zAKhwgLAAEq/////zAKhwgLAAEr/////zAKhwgLAAEs/////zAKhwgLAAEt
--/////zAKhwgLAAEu/////zAKhwgLAAEv/////zAKhwgLAAEw/////zAKhwgLAAEx
--/////zAKhwgLAAEy/////zAKhwgLAAEz/////zAKhwgLAAE0/////zAKhwgLAAE1
--/////zAKhwgLAAE2/////zAKhwgLAAE3/////zAKhwgLAAE4/////zAKhwgLAAE5
--/////zAKhwgLAAE6/////zAKhwgLAAE7/////zAKhwgLAAE8/////zAKhwgLAAE9
--/////zAKhwgLAAE+/////zAKhwgLAAE//////zAKhwgLAAFA/////zAKhwgLAAFB
--/////zAKhwgLAAFC/////zAKhwgLAAFD/////zAKhwgLAAFE/////zAKhwgLAAFF
--/////zAKhwgLAAFG/////zAKhwgLAAFH/////zAKhwgLAAFI/////zAKhwgLAAFJ
--/////zAKhwgLAAFK/////zAKhwgLAAFL/////zAKhwgLAAFM/////zAKhwgLAAFN
--/////zAKhwgLAAFO/////zAKhwgLAAFP/////zAKhwgLAAFQ/////zAKhwgLAAFR
--/////zAKhwgLAAFS/////zAKhwgLAAFT/////zAKhwgLAAFU/////zAKhwgLAAFV
--/////zAKhwgLAAFW/////zAKhwgLAAFX/////zAKhwgLAAFY/////zAKhwgLAAFZ
--/////zAKhwgLAAFa/////zAKhwgLAAFb/////zAKhwgLAAFc/////zAKhwgLAAFd
--/////zAKhwgLAAFe/////zAKhwgLAAFf/////zAKhwgLAAFg/////zAKhwgLAAFh
--/////zAKhwgLAAFi/////zAKhwgLAAFj/////zAKhwgLAAFk/////zAKhwgLAAFl
--/////zAKhwgLAAFm/////zAKhwgLAAFn/////zAKhwgLAAFo/////zAKhwgLAAFp
--/////zAKhwgLAAFq/////zAKhwgLAAFr/////zAKhwgLAAFs/////zAKhwgLAAFt
--/////zAKhwgLAAFu/////zAKhwgLAAFv/////zAKhwgLAAFw/////zAKhwgLAAFx
--/////zAKhwgLAAFy/////zAKhwgLAAFz/////zAKhwgLAAF0/////zAKhwgLAAF1
--/////zAKhwgLAAF2/////zAKhwgLAAF3/////zAKhwgLAAF4/////zAKhwgLAAF5
--/////zAKhwgLAAF6/////zAKhwgLAAF7/////zAKhwgLAAF8/////zAKhwgLAAF9
--/////zAKhwgLAAF+/////zAKhwgLAAF//////zAKhwgLAAGA/////zAKhwgLAAGB
--/////zAKhwgLAAGC/////zAKhwgLAAGD/////zAKhwgLAAGE/////zAKhwgLAAGF
--/////zAKhwgLAAGG/////zAKhwgLAAGH/////zAKhwgLAAGI/////zAKhwgLAAGJ
--/////zAKhwgLAAGK/////zAKhwgLAAGL/////zAKhwgLAAGM/////zAKhwgLAAGN
--/////zAKhwgLAAGO/////zAKhwgLAAGP/////zAKhwgLAAGQ/////zAKhwgLAAGR
--/////zAKhwgLAAGS/////zAKhwgLAAGT/////zAKhwgLAAGU/////zAKhwgLAAGV
--/////zAKhwgLAAGW/////zAKhwgLAAGX/////zAKhwgLAAGY/////zAKhwgLAAGZ
--/////zAKhwgLAAGa/////zAKhwgLAAGb/////zAKhwgLAAGc/////zAKhwgLAAGd
--/////zAKhwgLAAGe/////zAKhwgLAAGf/////zAKhwgLAAGg/////zAKhwgLAAGh
--/////zAKhwgLAAGi/////zAKhwgLAAGj/////zAKhwgLAAGk/////zAKhwgLAAGl
--/////zAKhwgLAAGm/////zAKhwgLAAGn/////zAKhwgLAAGo/////zAKhwgLAAGp
--/////zAKhwgLAAGq/////zAKhwgLAAGr/////zAKhwgLAAGs/////zAKhwgLAAGt
--/////zAKhwgLAAGu/////zAKhwgLAAGv/////zAKhwgLAAGw/////zAKhwgLAAGx
--/////zAKhwgLAAGy/////zAKhwgLAAGz/////zAKhwgLAAG0/////zAKhwgLAAG1
--/////zAKhwgLAAG2/////zAKhwgLAAG3/////zAKhwgLAAG4/////zAKhwgLAAG5
--/////zAKhwgLAAG6/////zAKhwgLAAG7/////zAKhwgLAAG8/////zAKhwgLAAG9
--/////zAKhwgLAAG+/////zAKhwgLAAG//////zAKhwgLAAHA/////zAKhwgLAAHB
--/////zAKhwgLAAHC/////zAKhwgLAAHD/////zAKhwgLAAHE/////zAKhwgLAAHF
--/////zAKhwgLAAHG/////zAKhwgLAAHH/////zAKhwgLAAHI/////zAKhwgLAAHJ
--/////zAKhwgLAAHK/////zAKhwgLAAHL/////zAKhwgLAAHM/////zAKhwgLAAHN
--/////zAKhwgLAAHO/////zAKhwgLAAHP/////zAKhwgLAAHQ/////zAKhwgLAAHR
--/////zAKhwgLAAHS/////zAKhwgLAAHT/////zAKhwgLAAHU/////zAKhwgLAAHV
--/////zAKhwgLAAHW/////zAKhwgLAAHX/////zAKhwgLAAHY/////zAKhwgLAAHZ
--/////zAKhwgLAAHa/////zAKhwgLAAHb/////zAKhwgLAAHc/////zAKhwgLAAHd
--/////zAKhwgLAAHe/////zAKhwgLAAHf/////zAKhwgLAAHg/////zAKhwgLAAHh
--/////zAKhwgLAAHi/////zAKhwgLAAHj/////zAKhwgLAAHk/////zAKhwgLAAHl
--/////zAKhwgLAAHm/////zAKhwgLAAHn/////zAKhwgLAAHo/////zAKhwgLAAHp
--/////zAKhwgLAAHq/////zAKhwgLAAHr/////zAKhwgLAAHs/////zAKhwgLAAHt
--/////zAKhwgLAAHu/////zAKhwgLAAHv/////zAKhwgLAAHw/////zAKhwgLAAHx
--/////zAKhwgLAAHy/////zAKhwgLAAHz/////zAKhwgLAAH0/////zAKhwgLAAH1
--/////zAKhwgLAAH2/////zAKhwgLAAH3/////zAKhwgLAAH4/////zAKhwgLAAH5
--/////zAKhwgLAAH6/////zAKhwgLAAH7/////zAKhwgLAAH8/////zAKhwgLAAH9
--/////zAKhwgLAAH+/////zAKhwgLAAH//////zAKhwgLAAIA/////zAKhwgLAAIB
--/////zAKhwgLAAIC/////zAKhwgLAAID/////zAKhwgLAAIE/////zAKhwgLAAIF
--/////zAKhwgLAAIG/////zAKhwgLAAIH/////zAKhwgLAAII/////zAKhwgLAAIJ
--/////zAKhwgLAAIK/////zAKhwgLAAIL/////zAKhwgLAAIM/////zAKhwgLAAIN
--/////zAKhwgLAAIO/////zAKhwgLAAIP/////zAKhwgLAAIQ/////zAKhwgLAAIR
--/////zAKhwgLAAIS/////zAKhwgLAAIT/////zAKhwgLAAIU/////zAKhwgLAAIV
--/////zAKhwgLAAIW/////zAKhwgLAAIX/////zAKhwgLAAIY/////zAKhwgLAAIZ
--/////zAKhwgLAAIa/////zAKhwgLAAIb/////zAKhwgLAAIc/////zAKhwgLAAId
--/////zAKhwgLAAIe/////zAKhwgLAAIf/////zAKhwgLAAIg/////zAKhwgLAAIh
--/////zAKhwgLAAIi/////zAKhwgLAAIj/////zAKhwgLAAIk/////zAKhwgLAAIl
--/////zAKhwgLAAIm/////zAKhwgLAAIn/////zAKhwgLAAIo/////zAKhwgLAAIp
--/////zAKhwgLAAIq/////zAKhwgLAAIr/////zAKhwgLAAIs/////zAKhwgLAAIt
--/////zAKhwgLAAIu/////zAKhwgLAAIv/////zAKhwgLAAIw/////zAKhwgLAAIx
--/////zAKhwgLAAIy/////zAKhwgLAAIz/////zAKhwgLAAI0/////zAKhwgLAAI1
--/////zAKhwgLAAI2/////zAKhwgLAAI3/////zAKhwgLAAI4/////zAKhwgLAAI5
--/////zAKhwgLAAI6/////zAKhwgLAAI7/////zAKhwgLAAI8/////zAKhwgLAAI9
--/////zAKhwgLAAI+/////zAKhwgLAAI//////zAKhwgLAAJA/////zAKhwgLAAJB
--/////zAKhwgLAAJC/////zAKhwgLAAJD/////zAKhwgLAAJE/////zAKhwgLAAJF
--/////zAKhwgLAAJG/////zAKhwgLAAJH/////zAKhwgLAAJI/////zAKhwgLAAJJ
--/////zAKhwgLAAJK/////zAKhwgLAAJL/////zAKhwgLAAJM/////zAKhwgLAAJN
--/////zAKhwgLAAJO/////zAKhwgLAAJP/////zAKhwgLAAJQ/////zAKhwgLAAJR
--/////zAKhwgLAAJS/////zAKhwgLAAJT/////zAKhwgLAAJU/////zAKhwgLAAJV
--/////zAKhwgLAAJW/////zAKhwgLAAJX/////zAKhwgLAAJY/////zAKhwgLAAJZ
--/////zAKhwgLAAJa/////zAKhwgLAAJb/////zAKhwgLAAJc/////zAKhwgLAAJd
--/////zAKhwgLAAJe/////zAKhwgLAAJf/////zAKhwgLAAJg/////zAKhwgLAAJh
--/////zAKhwgLAAJi/////zAKhwgLAAJj/////zAKhwgLAAJk/////zAKhwgLAAJl
--/////zAKhwgLAAJm/////zAKhwgLAAJn/////zAKhwgLAAJo/////zAKhwgLAAJp
--/////zAKhwgLAAJq/////zAKhwgLAAJr/////zAKhwgLAAJs/////zAKhwgLAAJt
--/////zAKhwgLAAJu/////zAKhwgLAAJv/////zAKhwgLAAJw/////zAKhwgLAAJx
--/////zAKhwgLAAJy/////zAKhwgLAAJz/////zAKhwgLAAJ0/////zAKhwgLAAJ1
--/////zAKhwgLAAJ2/////zAKhwgLAAJ3/////zAKhwgLAAJ4/////zAKhwgLAAJ5
--/////zAKhwgLAAJ6/////zAKhwgLAAJ7/////zAKhwgLAAJ8/////zAKhwgLAAJ9
--/////zAKhwgLAAJ+/////zAKhwgLAAJ//////zAKhwgLAAKA/////zAKhwgLAAKB
--/////zAKhwgLAAKC/////zAKhwgLAAKD/////zAKhwgLAAKE/////zAKhwgLAAKF
--/////zAKhwgLAAKG/////zAKhwgLAAKH/////zAKhwgLAAKI/////zAKhwgLAAKJ
--/////zAKhwgLAAKK/////zAKhwgLAAKL/////zAKhwgLAAKM/////zAKhwgLAAKN
--/////zAKhwgLAAKO/////zAKhwgLAAKP/////zAKhwgLAAKQ/////zAKhwgLAAKR
--/////zAKhwgLAAKS/////zAKhwgLAAKT/////zAKhwgLAAKU/////zAKhwgLAAKV
--/////zAKhwgLAAKW/////zAKhwgLAAKX/////zAKhwgLAAKY/////zAKhwgLAAKZ
--/////zAKhwgLAAKa/////zAKhwgLAAKb/////zAKhwgLAAKc/////zAKhwgLAAKd
--/////zAKhwgLAAKe/////zAKhwgLAAKf/////zAKhwgLAAKg/////zAKhwgLAAKh
--/////zAKhwgLAAKi/////zAKhwgLAAKj/////zAKhwgLAAKk/////zAKhwgLAAKl
--/////zAKhwgLAAKm/////zAKhwgLAAKn/////zAKhwgLAAKo/////zAKhwgLAAKp
--/////zAKhwgLAAKq/////zAKhwgLAAKr/////zAKhwgLAAKs/////zAKhwgLAAKt
--/////zAKhwgLAAKu/////zAKhwgLAAKv/////zAKhwgLAAKw/////zAKhwgLAAKx
--/////zAKhwgLAAKy/////zAKhwgLAAKz/////zAKhwgLAAK0/////zAKhwgLAAK1
--/////zAKhwgLAAK2/////zAKhwgLAAK3/////zAKhwgLAAK4/////zAKhwgLAAK5
--/////zAKhwgLAAK6/////zAKhwgLAAK7/////zAKhwgLAAK8/////zAKhwgLAAK9
--/////zAKhwgLAAK+/////zAKhwgLAAK//////zAKhwgLAALA/////zAKhwgLAALB
--/////zAKhwgLAALC/////zAKhwgLAALD/////zAKhwgLAALE/////zAKhwgLAALF
--/////zAKhwgLAALG/////zAKhwgLAALH/////zAKhwgLAALI/////zAKhwgLAALJ
--/////zAKhwgLAALK/////zAKhwgLAALL/////zAKhwgLAALM/////zAKhwgLAALN
--/////zAKhwgLAALO/////zAKhwgLAALP/////zAKhwgLAALQ/////zAKhwgLAALR
--/////zAKhwgLAALS/////zAKhwgLAALT/////zAKhwgLAALU/////zAKhwgLAALV
--/////zAKhwgLAALW/////zAKhwgLAALX/////zAKhwgLAALY/////zAKhwgLAALZ
--/////zAKhwgLAALa/////zAKhwgLAALb/////zAKhwgLAALc/////zAKhwgLAALd
--/////zAKhwgLAALe/////zAKhwgLAALf/////zAKhwgLAALg/////zAKhwgLAALh
--/////zAKhwgLAALi/////zAKhwgLAALj/////zAKhwgLAALk/////zAKhwgLAALl
--/////zAKhwgLAALm/////zAKhwgLAALn/////zAKhwgLAALo/////zAKhwgLAALp
--/////zAKhwgLAALq/////zAKhwgLAALr/////zAKhwgLAALs/////zAKhwgLAALt
--/////zAKhwgLAALu/////zAKhwgLAALv/////zAKhwgLAALw/////zAKhwgLAALx
--/////zAKhwgLAALy/////zAKhwgLAALz/////zAKhwgLAAL0/////zAKhwgLAAL1
--/////zAKhwgLAAL2/////zAKhwgLAAL3/////zAKhwgLAAL4/////zAKhwgLAAL5
--/////zAKhwgLAAL6/////zAKhwgLAAL7/////zAKhwgLAAL8/////zAKhwgLAAL9
--/////zAKhwgLAAL+/////zAKhwgLAAL//////zAKhwgLAAMA/////zAKhwgLAAMB
--/////zAKhwgLAAMC/////zAKhwgLAAMD/////zAKhwgLAAME/////zAKhwgLAAMF
--/////zAKhwgLAAMG/////zAKhwgLAAMH/////zAKhwgLAAMI/////zAKhwgLAAMJ
--/////zAKhwgLAAMK/////zAKhwgLAAML/////zAKhwgLAAMM/////zAKhwgLAAMN
--/////zAKhwgLAAMO/////zAKhwgLAAMP/////zAKhwgLAAMQ/////zAKhwgLAAMR
--/////zAKhwgLAAMS/////zAKhwgLAAMT/////zAKhwgLAAMU/////zAKhwgLAAMV
--/////zAKhwgLAAMW/////zAKhwgLAAMX/////zAKhwgLAAMY/////zAKhwgLAAMZ
--/////zAKhwgLAAMa/////zAKhwgLAAMb/////zAKhwgLAAMc/////zAKhwgLAAMd
--/////zAKhwgLAAMe/////zAKhwgLAAMf/////zAKhwgLAAMg/////zAKhwgLAAMh
--/////zAKhwgLAAMi/////zAKhwgLAAMj/////zAKhwgLAAMk/////zAKhwgLAAMl
--/////zAKhwgLAAMm/////zAKhwgLAAMn/////zAKhwgLAAMo/////zAKhwgLAAMp
--/////zAKhwgLAAMq/////zAKhwgLAAMr/////zAKhwgLAAMs/////zAKhwgLAAMt
--/////zAKhwgLAAMu/////zAKhwgLAAMv/////zAKhwgLAAMw/////zAKhwgLAAMx
--/////zAKhwgLAAMy/////zAKhwgLAAMz/////zAKhwgLAAM0/////zAKhwgLAAM1
--/////zAKhwgLAAM2/////zAKhwgLAAM3/////zAKhwgLAAM4/////zAKhwgLAAM5
--/////zAKhwgLAAM6/////zAKhwgLAAM7/////zAKhwgLAAM8/////zAKhwgLAAM9
--/////zAKhwgLAAM+/////zAKhwgLAAM//////zAKhwgLAANA/////zAKhwgLAANB
--/////zAKhwgLAANC/////zAKhwgLAAND/////zAKhwgLAANE/////zAKhwgLAANF
--/////zAKhwgLAANG/////zAKhwgLAANH/////zAKhwgLAANI/////zAKhwgLAANJ
--/////zAKhwgLAANK/////zAKhwgLAANL/////zAKhwgLAANM/////zAKhwgLAANN
--/////zAKhwgLAANO/////zAKhwgLAANP/////zAKhwgLAANQ/////zAKhwgLAANR
--/////zAKhwgLAANS/////zAKhwgLAANT/////zAKhwgLAANU/////zAKhwgLAANV
--/////zAKhwgLAANW/////zAKhwgLAANX/////zAKhwgLAANY/////zAKhwgLAANZ
--/////zAKhwgLAANa/////zAKhwgLAANb/////zAKhwgLAANc/////zAKhwgLAANd
--/////zAKhwgLAANe/////zAKhwgLAANf/////zAKhwgLAANg/////zAKhwgLAANh
--/////zAKhwgLAANi/////zAKhwgLAANj/////zAKhwgLAANk/////zAKhwgLAANl
--/////zAKhwgLAANm/////zAKhwgLAANn/////zAKhwgLAANo/////zAKhwgLAANp
--/////zAKhwgLAANq/////zAKhwgLAANr/////zAKhwgLAANs/////zAKhwgLAANt
--/////zAKhwgLAANu/////zAKhwgLAANv/////zAKhwgLAANw/////zAKhwgLAANx
--/////zAKhwgLAANy/////zAKhwgLAANz/////zAKhwgLAAN0/////zAKhwgLAAN1
--/////zAKhwgLAAN2/////zAKhwgLAAN3/////zAKhwgLAAN4/////zAKhwgLAAN5
--/////zAKhwgLAAN6/////zAKhwgLAAN7/////zAKhwgLAAN8/////zAKhwgLAAN9
--/////zAKhwgLAAN+/////zAKhwgLAAN//////zAKhwgLAAOA/////zAKhwgLAAOB
--/////zAKhwgLAAOC/////zAKhwgLAAOD/////zAKhwgLAAOE/////zAKhwgLAAOF
--/////zAKhwgLAAOG/////zAKhwgLAAOH/////zAKhwgLAAOI/////zAKhwgLAAOJ
--/////zAKhwgLAAOK/////zAKhwgLAAOL/////zAKhwgLAAOM/////zAKhwgLAAON
--/////zAKhwgLAAOO/////zAKhwgLAAOP/////zAKhwgLAAOQ/////zAKhwgLAAOR
--/////zAKhwgLAAOS/////zAKhwgLAAOT/////zAKhwgLAAOU/////zAKhwgLAAOV
--/////zAKhwgLAAOW/////zAKhwgLAAOX/////zAKhwgLAAOY/////zAKhwgLAAOZ
--/////zAKhwgLAAOa/////zAKhwgLAAOb/////zAKhwgLAAOc/////zAKhwgLAAOd
--/////zAKhwgLAAOe/////zAKhwgLAAOf/////zAKhwgLAAOg/////zAKhwgLAAOh
--/////zAKhwgLAAOi/////zAKhwgLAAOj/////zAKhwgLAAOk/////zAKhwgLAAOl
--/////zAKhwgLAAOm/////zAKhwgLAAOn/////zAKhwgLAAOo/////zAKhwgLAAOp
--/////zAKhwgLAAOq/////zAKhwgLAAOr/////zAKhwgLAAOs/////zAKhwgLAAOt
--/////zAKhwgLAAOu/////zAKhwgLAAOv/////zAKhwgLAAOw/////zAKhwgLAAOx
--/////zAKhwgLAAOy/////zAKhwgLAAOz/////zAKhwgLAAO0/////zAKhwgLAAO1
--/////zAKhwgLAAO2/////zAKhwgLAAO3/////zAKhwgLAAO4/////zAKhwgLAAO5
--/////zAKhwgLAAO6/////zAKhwgLAAO7/////zAKhwgLAAO8/////zAKhwgLAAO9
--/////zAKhwgLAAO+/////zAKhwgLAAO//////zAKhwgLAAPA/////zAKhwgLAAPB
--/////zAKhwgLAAPC/////zAKhwgLAAPD/////zAKhwgLAAPE/////zAKhwgLAAPF
--/////zAKhwgLAAPG/////zAKhwgLAAPH/////zAKhwgLAAPI/////zAKhwgLAAPJ
--/////zAKhwgLAAPK/////zAKhwgLAAPL/////zAKhwgLAAPM/////zAKhwgLAAPN
--/////zAKhwgLAAPO/////zAKhwgLAAPP/////zAKhwgLAAPQ/////zAKhwgLAAPR
--/////zAKhwgLAAPS/////zAKhwgLAAPT/////zAKhwgLAAPU/////zAKhwgLAAPV
--/////zAKhwgLAAPW/////zAKhwgLAAPX/////zAKhwgLAAPY/////zAKhwgLAAPZ
--/////zAKhwgLAAPa/////zAKhwgLAAPb/////zAKhwgLAAPc/////zAKhwgLAAPd
--/////zAKhwgLAAPe/////zAKhwgLAAPf/////zAKhwgLAAPg/////zAKhwgLAAPh
--/////zAKhwgLAAPi/////zAKhwgLAAPj/////zAKhwgLAAPk/////zAKhwgLAAPl
--/////zAKhwgLAAPm/////zAKhwgLAAPn/////zAKhwgLAAPo/////zAKhwgLAAPp
--/////zAKhwgLAAPq/////zAKhwgLAAPr/////zAKhwgLAAPs/////zAKhwgLAAPt
--/////zAKhwgLAAPu/////zAKhwgLAAPv/////zAKhwgLAAPw/////zAKhwgLAAPx
--/////zAKhwgLAAPy/////zAKhwgLAAPz/////zAKhwgLAAP0/////zAKhwgLAAP1
--/////zAKhwgLAAP2/////zAKhwgLAAP3/////zAKhwgLAAP4/////zAKhwgLAAP5
--/////zAKhwgLAAP6/////zAKhwgLAAP7/////zAKhwgLAAP8/////zAKhwgLAAP9
--/////zAKhwgLAAP+/////zAKhwgLAAP//////zAKhwgLAAQA/////zARpA8wDTEL
--MAkGA1UEAwwCeDAwEaQPMA0xCzAJBgNVBAMMAngxMBGkDzANMQswCQYDVQQDDAJ4
--MjARpA8wDTELMAkGA1UEAwwCeDMwEaQPMA0xCzAJBgNVBAMMAng0MBGkDzANMQsw
--CQYDVQQDDAJ4NTARpA8wDTELMAkGA1UEAwwCeDYwEaQPMA0xCzAJBgNVBAMMAng3
--MBGkDzANMQswCQYDVQQDDAJ4ODARpA8wDTELMAkGA1UEAwwCeDkwEqQQMA4xDDAK
--BgNVBAMMA3gxMDASpBAwDjEMMAoGA1UEAwwDeDExMBKkEDAOMQwwCgYDVQQDDAN4
--MTIwEqQQMA4xDDAKBgNVBAMMA3gxMzASpBAwDjEMMAoGA1UEAwwDeDE0MBKkEDAO
--MQwwCgYDVQQDDAN4MTUwEqQQMA4xDDAKBgNVBAMMA3gxNjASpBAwDjEMMAoGA1UE
--AwwDeDE3MBKkEDAOMQwwCgYDVQQDDAN4MTgwEqQQMA4xDDAKBgNVBAMMA3gxOTAS
--pBAwDjEMMAoGA1UEAwwDeDIwMBKkEDAOMQwwCgYDVQQDDAN4MjEwEqQQMA4xDDAK
--BgNVBAMMA3gyMjASpBAwDjEMMAoGA1UEAwwDeDIzMBKkEDAOMQwwCgYDVQQDDAN4
--MjQwEqQQMA4xDDAKBgNVBAMMA3gyNTASpBAwDjEMMAoGA1UEAwwDeDI2MBKkEDAO
--MQwwCgYDVQQDDAN4MjcwEqQQMA4xDDAKBgNVBAMMA3gyODASpBAwDjEMMAoGA1UE
--AwwDeDI5MBKkEDAOMQwwCgYDVQQDDAN4MzAwEqQQMA4xDDAKBgNVBAMMA3gzMTAS
--pBAwDjEMMAoGA1UEAwwDeDMyMBKkEDAOMQwwCgYDVQQDDAN4MzMwEqQQMA4xDDAK
--BgNVBAMMA3gzNDASpBAwDjEMMAoGA1UEAwwDeDM1MBKkEDAOMQwwCgYDVQQDDAN4
--MzYwEqQQMA4xDDAKBgNVBAMMA3gzNzASpBAwDjEMMAoGA1UEAwwDeDM4MBKkEDAO
--MQwwCgYDVQQDDAN4MzkwEqQQMA4xDDAKBgNVBAMMA3g0MDASpBAwDjEMMAoGA1UE
--AwwDeDQxMBKkEDAOMQwwCgYDVQQDDAN4NDIwEqQQMA4xDDAKBgNVBAMMA3g0MzAS
--pBAwDjEMMAoGA1UEAwwDeDQ0MBKkEDAOMQwwCgYDVQQDDAN4NDUwEqQQMA4xDDAK
--BgNVBAMMA3g0NjASpBAwDjEMMAoGA1UEAwwDeDQ3MBKkEDAOMQwwCgYDVQQDDAN4
--NDgwEqQQMA4xDDAKBgNVBAMMA3g0OTASpBAwDjEMMAoGA1UEAwwDeDUwMBKkEDAO
--MQwwCgYDVQQDDAN4NTEwEqQQMA4xDDAKBgNVBAMMA3g1MjASpBAwDjEMMAoGA1UE
--AwwDeDUzMBKkEDAOMQwwCgYDVQQDDAN4NTQwEqQQMA4xDDAKBgNVBAMMA3g1NTAS
--pBAwDjEMMAoGA1UEAwwDeDU2MBKkEDAOMQwwCgYDVQQDDAN4NTcwEqQQMA4xDDAK
--BgNVBAMMA3g1ODASpBAwDjEMMAoGA1UEAwwDeDU5MBKkEDAOMQwwCgYDVQQDDAN4
--NjAwEqQQMA4xDDAKBgNVBAMMA3g2MTASpBAwDjEMMAoGA1UEAwwDeDYyMBKkEDAO
--MQwwCgYDVQQDDAN4NjMwEqQQMA4xDDAKBgNVBAMMA3g2NDASpBAwDjEMMAoGA1UE
--AwwDeDY1MBKkEDAOMQwwCgYDVQQDDAN4NjYwEqQQMA4xDDAKBgNVBAMMA3g2NzAS
--pBAwDjEMMAoGA1UEAwwDeDY4MBKkEDAOMQwwCgYDVQQDDAN4NjkwEqQQMA4xDDAK
--BgNVBAMMA3g3MDASpBAwDjEMMAoGA1UEAwwDeDcxMBKkEDAOMQwwCgYDVQQDDAN4
--NzIwEqQQMA4xDDAKBgNVBAMMA3g3MzASpBAwDjEMMAoGA1UEAwwDeDc0MBKkEDAO
--MQwwCgYDVQQDDAN4NzUwEqQQMA4xDDAKBgNVBAMMA3g3NjASpBAwDjEMMAoGA1UE
--AwwDeDc3MBKkEDAOMQwwCgYDVQQDDAN4NzgwEqQQMA4xDDAKBgNVBAMMA3g3OTAS
--pBAwDjEMMAoGA1UEAwwDeDgwMBKkEDAOMQwwCgYDVQQDDAN4ODEwEqQQMA4xDDAK
--BgNVBAMMA3g4MjASpBAwDjEMMAoGA1UEAwwDeDgzMBKkEDAOMQwwCgYDVQQDDAN4
--ODQwEqQQMA4xDDAKBgNVBAMMA3g4NTASpBAwDjEMMAoGA1UEAwwDeDg2MBKkEDAO
--MQwwCgYDVQQDDAN4ODcwEqQQMA4xDDAKBgNVBAMMA3g4ODASpBAwDjEMMAoGA1UE
--AwwDeDg5MBKkEDAOMQwwCgYDVQQDDAN4OTAwEqQQMA4xDDAKBgNVBAMMA3g5MTAS
--pBAwDjEMMAoGA1UEAwwDeDkyMBKkEDAOMQwwCgYDVQQDDAN4OTMwEqQQMA4xDDAK
--BgNVBAMMA3g5NDASpBAwDjEMMAoGA1UEAwwDeDk1MBKkEDAOMQwwCgYDVQQDDAN4
--OTYwEqQQMA4xDDAKBgNVBAMMA3g5NzASpBAwDjEMMAoGA1UEAwwDeDk4MBKkEDAO
--MQwwCgYDVQQDDAN4OTkwE6QRMA8xDTALBgNVBAMMBHgxMDAwE6QRMA8xDTALBgNV
--BAMMBHgxMDEwE6QRMA8xDTALBgNVBAMMBHgxMDIwE6QRMA8xDTALBgNVBAMMBHgx
--MDMwE6QRMA8xDTALBgNVBAMMBHgxMDQwE6QRMA8xDTALBgNVBAMMBHgxMDUwE6QR
--MA8xDTALBgNVBAMMBHgxMDYwE6QRMA8xDTALBgNVBAMMBHgxMDcwE6QRMA8xDTAL
--BgNVBAMMBHgxMDgwE6QRMA8xDTALBgNVBAMMBHgxMDkwE6QRMA8xDTALBgNVBAMM
--BHgxMTAwE6QRMA8xDTALBgNVBAMMBHgxMTEwE6QRMA8xDTALBgNVBAMMBHgxMTIw
--E6QRMA8xDTALBgNVBAMMBHgxMTMwE6QRMA8xDTALBgNVBAMMBHgxMTQwE6QRMA8x
--DTALBgNVBAMMBHgxMTUwE6QRMA8xDTALBgNVBAMMBHgxMTYwE6QRMA8xDTALBgNV
--BAMMBHgxMTcwE6QRMA8xDTALBgNVBAMMBHgxMTgwE6QRMA8xDTALBgNVBAMMBHgx
--MTkwE6QRMA8xDTALBgNVBAMMBHgxMjAwE6QRMA8xDTALBgNVBAMMBHgxMjEwE6QR
--MA8xDTALBgNVBAMMBHgxMjIwE6QRMA8xDTALBgNVBAMMBHgxMjMwE6QRMA8xDTAL
--BgNVBAMMBHgxMjQwE6QRMA8xDTALBgNVBAMMBHgxMjUwE6QRMA8xDTALBgNVBAMM
--BHgxMjYwE6QRMA8xDTALBgNVBAMMBHgxMjcwE6QRMA8xDTALBgNVBAMMBHgxMjgw
--E6QRMA8xDTALBgNVBAMMBHgxMjkwE6QRMA8xDTALBgNVBAMMBHgxMzAwE6QRMA8x
--DTALBgNVBAMMBHgxMzEwE6QRMA8xDTALBgNVBAMMBHgxMzIwE6QRMA8xDTALBgNV
--BAMMBHgxMzMwE6QRMA8xDTALBgNVBAMMBHgxMzQwE6QRMA8xDTALBgNVBAMMBHgx
--MzUwE6QRMA8xDTALBgNVBAMMBHgxMzYwE6QRMA8xDTALBgNVBAMMBHgxMzcwE6QR
--MA8xDTALBgNVBAMMBHgxMzgwE6QRMA8xDTALBgNVBAMMBHgxMzkwE6QRMA8xDTAL
--BgNVBAMMBHgxNDAwE6QRMA8xDTALBgNVBAMMBHgxNDEwE6QRMA8xDTALBgNVBAMM
--BHgxNDIwE6QRMA8xDTALBgNVBAMMBHgxNDMwE6QRMA8xDTALBgNVBAMMBHgxNDQw
--E6QRMA8xDTALBgNVBAMMBHgxNDUwE6QRMA8xDTALBgNVBAMMBHgxNDYwE6QRMA8x
--DTALBgNVBAMMBHgxNDcwE6QRMA8xDTALBgNVBAMMBHgxNDgwE6QRMA8xDTALBgNV
--BAMMBHgxNDkwE6QRMA8xDTALBgNVBAMMBHgxNTAwE6QRMA8xDTALBgNVBAMMBHgx
--NTEwE6QRMA8xDTALBgNVBAMMBHgxNTIwE6QRMA8xDTALBgNVBAMMBHgxNTMwE6QR
--MA8xDTALBgNVBAMMBHgxNTQwE6QRMA8xDTALBgNVBAMMBHgxNTUwE6QRMA8xDTAL
--BgNVBAMMBHgxNTYwE6QRMA8xDTALBgNVBAMMBHgxNTcwE6QRMA8xDTALBgNVBAMM
--BHgxNTgwE6QRMA8xDTALBgNVBAMMBHgxNTkwE6QRMA8xDTALBgNVBAMMBHgxNjAw
--E6QRMA8xDTALBgNVBAMMBHgxNjEwE6QRMA8xDTALBgNVBAMMBHgxNjIwE6QRMA8x
--DTALBgNVBAMMBHgxNjMwE6QRMA8xDTALBgNVBAMMBHgxNjQwE6QRMA8xDTALBgNV
--BAMMBHgxNjUwE6QRMA8xDTALBgNVBAMMBHgxNjYwE6QRMA8xDTALBgNVBAMMBHgx
--NjcwE6QRMA8xDTALBgNVBAMMBHgxNjgwE6QRMA8xDTALBgNVBAMMBHgxNjkwE6QR
--MA8xDTALBgNVBAMMBHgxNzAwE6QRMA8xDTALBgNVBAMMBHgxNzEwE6QRMA8xDTAL
--BgNVBAMMBHgxNzIwE6QRMA8xDTALBgNVBAMMBHgxNzMwE6QRMA8xDTALBgNVBAMM
--BHgxNzQwE6QRMA8xDTALBgNVBAMMBHgxNzUwE6QRMA8xDTALBgNVBAMMBHgxNzYw
--E6QRMA8xDTALBgNVBAMMBHgxNzcwE6QRMA8xDTALBgNVBAMMBHgxNzgwE6QRMA8x
--DTALBgNVBAMMBHgxNzkwE6QRMA8xDTALBgNVBAMMBHgxODAwE6QRMA8xDTALBgNV
--BAMMBHgxODEwE6QRMA8xDTALBgNVBAMMBHgxODIwE6QRMA8xDTALBgNVBAMMBHgx
--ODMwE6QRMA8xDTALBgNVBAMMBHgxODQwE6QRMA8xDTALBgNVBAMMBHgxODUwE6QR
--MA8xDTALBgNVBAMMBHgxODYwE6QRMA8xDTALBgNVBAMMBHgxODcwE6QRMA8xDTAL
--BgNVBAMMBHgxODgwE6QRMA8xDTALBgNVBAMMBHgxODkwE6QRMA8xDTALBgNVBAMM
--BHgxOTAwE6QRMA8xDTALBgNVBAMMBHgxOTEwE6QRMA8xDTALBgNVBAMMBHgxOTIw
--E6QRMA8xDTALBgNVBAMMBHgxOTMwE6QRMA8xDTALBgNVBAMMBHgxOTQwE6QRMA8x
--DTALBgNVBAMMBHgxOTUwE6QRMA8xDTALBgNVBAMMBHgxOTYwE6QRMA8xDTALBgNV
--BAMMBHgxOTcwE6QRMA8xDTALBgNVBAMMBHgxOTgwE6QRMA8xDTALBgNVBAMMBHgx
--OTkwE6QRMA8xDTALBgNVBAMMBHgyMDAwE6QRMA8xDTALBgNVBAMMBHgyMDEwE6QR
--MA8xDTALBgNVBAMMBHgyMDIwE6QRMA8xDTALBgNVBAMMBHgyMDMwE6QRMA8xDTAL
--BgNVBAMMBHgyMDQwE6QRMA8xDTALBgNVBAMMBHgyMDUwE6QRMA8xDTALBgNVBAMM
--BHgyMDYwE6QRMA8xDTALBgNVBAMMBHgyMDcwE6QRMA8xDTALBgNVBAMMBHgyMDgw
--E6QRMA8xDTALBgNVBAMMBHgyMDkwE6QRMA8xDTALBgNVBAMMBHgyMTAwE6QRMA8x
--DTALBgNVBAMMBHgyMTEwE6QRMA8xDTALBgNVBAMMBHgyMTIwE6QRMA8xDTALBgNV
--BAMMBHgyMTMwE6QRMA8xDTALBgNVBAMMBHgyMTQwE6QRMA8xDTALBgNVBAMMBHgy
--MTUwE6QRMA8xDTALBgNVBAMMBHgyMTYwE6QRMA8xDTALBgNVBAMMBHgyMTcwE6QR
--MA8xDTALBgNVBAMMBHgyMTgwE6QRMA8xDTALBgNVBAMMBHgyMTkwE6QRMA8xDTAL
--BgNVBAMMBHgyMjAwE6QRMA8xDTALBgNVBAMMBHgyMjEwE6QRMA8xDTALBgNVBAMM
--BHgyMjIwE6QRMA8xDTALBgNVBAMMBHgyMjMwE6QRMA8xDTALBgNVBAMMBHgyMjQw
--E6QRMA8xDTALBgNVBAMMBHgyMjUwE6QRMA8xDTALBgNVBAMMBHgyMjYwE6QRMA8x
--DTALBgNVBAMMBHgyMjcwE6QRMA8xDTALBgNVBAMMBHgyMjgwE6QRMA8xDTALBgNV
--BAMMBHgyMjkwE6QRMA8xDTALBgNVBAMMBHgyMzAwE6QRMA8xDTALBgNVBAMMBHgy
--MzEwE6QRMA8xDTALBgNVBAMMBHgyMzIwE6QRMA8xDTALBgNVBAMMBHgyMzMwE6QR
--MA8xDTALBgNVBAMMBHgyMzQwE6QRMA8xDTALBgNVBAMMBHgyMzUwE6QRMA8xDTAL
--BgNVBAMMBHgyMzYwE6QRMA8xDTALBgNVBAMMBHgyMzcwE6QRMA8xDTALBgNVBAMM
--BHgyMzgwE6QRMA8xDTALBgNVBAMMBHgyMzkwE6QRMA8xDTALBgNVBAMMBHgyNDAw
--E6QRMA8xDTALBgNVBAMMBHgyNDEwE6QRMA8xDTALBgNVBAMMBHgyNDIwE6QRMA8x
--DTALBgNVBAMMBHgyNDMwE6QRMA8xDTALBgNVBAMMBHgyNDQwE6QRMA8xDTALBgNV
--BAMMBHgyNDUwE6QRMA8xDTALBgNVBAMMBHgyNDYwE6QRMA8xDTALBgNVBAMMBHgy
--NDcwE6QRMA8xDTALBgNVBAMMBHgyNDgwE6QRMA8xDTALBgNVBAMMBHgyNDkwE6QR
--MA8xDTALBgNVBAMMBHgyNTAwE6QRMA8xDTALBgNVBAMMBHgyNTEwE6QRMA8xDTAL
--BgNVBAMMBHgyNTIwE6QRMA8xDTALBgNVBAMMBHgyNTMwE6QRMA8xDTALBgNVBAMM
--BHgyNTQwE6QRMA8xDTALBgNVBAMMBHgyNTUwE6QRMA8xDTALBgNVBAMMBHgyNTYw
--E6QRMA8xDTALBgNVBAMMBHgyNTcwE6QRMA8xDTALBgNVBAMMBHgyNTgwE6QRMA8x
--DTALBgNVBAMMBHgyNTkwE6QRMA8xDTALBgNVBAMMBHgyNjAwE6QRMA8xDTALBgNV
--BAMMBHgyNjEwE6QRMA8xDTALBgNVBAMMBHgyNjIwE6QRMA8xDTALBgNVBAMMBHgy
--NjMwE6QRMA8xDTALBgNVBAMMBHgyNjQwE6QRMA8xDTALBgNVBAMMBHgyNjUwE6QR
--MA8xDTALBgNVBAMMBHgyNjYwE6QRMA8xDTALBgNVBAMMBHgyNjcwE6QRMA8xDTAL
--BgNVBAMMBHgyNjgwE6QRMA8xDTALBgNVBAMMBHgyNjkwE6QRMA8xDTALBgNVBAMM
--BHgyNzAwE6QRMA8xDTALBgNVBAMMBHgyNzEwE6QRMA8xDTALBgNVBAMMBHgyNzIw
--E6QRMA8xDTALBgNVBAMMBHgyNzMwE6QRMA8xDTALBgNVBAMMBHgyNzQwE6QRMA8x
--DTALBgNVBAMMBHgyNzUwE6QRMA8xDTALBgNVBAMMBHgyNzYwE6QRMA8xDTALBgNV
--BAMMBHgyNzcwE6QRMA8xDTALBgNVBAMMBHgyNzgwE6QRMA8xDTALBgNVBAMMBHgy
--NzkwE6QRMA8xDTALBgNVBAMMBHgyODAwE6QRMA8xDTALBgNVBAMMBHgyODEwE6QR
--MA8xDTALBgNVBAMMBHgyODIwE6QRMA8xDTALBgNVBAMMBHgyODMwE6QRMA8xDTAL
--BgNVBAMMBHgyODQwE6QRMA8xDTALBgNVBAMMBHgyODUwE6QRMA8xDTALBgNVBAMM
--BHgyODYwE6QRMA8xDTALBgNVBAMMBHgyODcwE6QRMA8xDTALBgNVBAMMBHgyODgw
--E6QRMA8xDTALBgNVBAMMBHgyODkwE6QRMA8xDTALBgNVBAMMBHgyOTAwE6QRMA8x
--DTALBgNVBAMMBHgyOTEwE6QRMA8xDTALBgNVBAMMBHgyOTIwE6QRMA8xDTALBgNV
--BAMMBHgyOTMwE6QRMA8xDTALBgNVBAMMBHgyOTQwE6QRMA8xDTALBgNVBAMMBHgy
--OTUwE6QRMA8xDTALBgNVBAMMBHgyOTYwE6QRMA8xDTALBgNVBAMMBHgyOTcwE6QR
--MA8xDTALBgNVBAMMBHgyOTgwE6QRMA8xDTALBgNVBAMMBHgyOTkwE6QRMA8xDTAL
--BgNVBAMMBHgzMDAwE6QRMA8xDTALBgNVBAMMBHgzMDEwE6QRMA8xDTALBgNVBAMM
--BHgzMDIwE6QRMA8xDTALBgNVBAMMBHgzMDMwE6QRMA8xDTALBgNVBAMMBHgzMDQw
--E6QRMA8xDTALBgNVBAMMBHgzMDUwE6QRMA8xDTALBgNVBAMMBHgzMDYwE6QRMA8x
--DTALBgNVBAMMBHgzMDcwE6QRMA8xDTALBgNVBAMMBHgzMDgwE6QRMA8xDTALBgNV
--BAMMBHgzMDkwE6QRMA8xDTALBgNVBAMMBHgzMTAwE6QRMA8xDTALBgNVBAMMBHgz
--MTEwE6QRMA8xDTALBgNVBAMMBHgzMTIwE6QRMA8xDTALBgNVBAMMBHgzMTMwE6QR
--MA8xDTALBgNVBAMMBHgzMTQwE6QRMA8xDTALBgNVBAMMBHgzMTUwE6QRMA8xDTAL
--BgNVBAMMBHgzMTYwE6QRMA8xDTALBgNVBAMMBHgzMTcwE6QRMA8xDTALBgNVBAMM
--BHgzMTgwE6QRMA8xDTALBgNVBAMMBHgzMTkwE6QRMA8xDTALBgNVBAMMBHgzMjAw
--E6QRMA8xDTALBgNVBAMMBHgzMjEwE6QRMA8xDTALBgNVBAMMBHgzMjIwE6QRMA8x
--DTALBgNVBAMMBHgzMjMwE6QRMA8xDTALBgNVBAMMBHgzMjQwE6QRMA8xDTALBgNV
--BAMMBHgzMjUwE6QRMA8xDTALBgNVBAMMBHgzMjYwE6QRMA8xDTALBgNVBAMMBHgz
--MjcwE6QRMA8xDTALBgNVBAMMBHgzMjgwE6QRMA8xDTALBgNVBAMMBHgzMjkwE6QR
--MA8xDTALBgNVBAMMBHgzMzAwE6QRMA8xDTALBgNVBAMMBHgzMzEwE6QRMA8xDTAL
--BgNVBAMMBHgzMzIwE6QRMA8xDTALBgNVBAMMBHgzMzMwE6QRMA8xDTALBgNVBAMM
--BHgzMzQwE6QRMA8xDTALBgNVBAMMBHgzMzUwE6QRMA8xDTALBgNVBAMMBHgzMzYw
--E6QRMA8xDTALBgNVBAMMBHgzMzcwE6QRMA8xDTALBgNVBAMMBHgzMzgwE6QRMA8x
--DTALBgNVBAMMBHgzMzkwE6QRMA8xDTALBgNVBAMMBHgzNDAwE6QRMA8xDTALBgNV
--BAMMBHgzNDEwE6QRMA8xDTALBgNVBAMMBHgzNDIwE6QRMA8xDTALBgNVBAMMBHgz
--NDMwE6QRMA8xDTALBgNVBAMMBHgzNDQwE6QRMA8xDTALBgNVBAMMBHgzNDUwE6QR
--MA8xDTALBgNVBAMMBHgzNDYwE6QRMA8xDTALBgNVBAMMBHgzNDcwE6QRMA8xDTAL
--BgNVBAMMBHgzNDgwE6QRMA8xDTALBgNVBAMMBHgzNDkwE6QRMA8xDTALBgNVBAMM
--BHgzNTAwE6QRMA8xDTALBgNVBAMMBHgzNTEwE6QRMA8xDTALBgNVBAMMBHgzNTIw
--E6QRMA8xDTALBgNVBAMMBHgzNTMwE6QRMA8xDTALBgNVBAMMBHgzNTQwE6QRMA8x
--DTALBgNVBAMMBHgzNTUwE6QRMA8xDTALBgNVBAMMBHgzNTYwE6QRMA8xDTALBgNV
--BAMMBHgzNTcwE6QRMA8xDTALBgNVBAMMBHgzNTgwE6QRMA8xDTALBgNVBAMMBHgz
--NTkwE6QRMA8xDTALBgNVBAMMBHgzNjAwE6QRMA8xDTALBgNVBAMMBHgzNjEwE6QR
--MA8xDTALBgNVBAMMBHgzNjIwE6QRMA8xDTALBgNVBAMMBHgzNjMwE6QRMA8xDTAL
--BgNVBAMMBHgzNjQwE6QRMA8xDTALBgNVBAMMBHgzNjUwE6QRMA8xDTALBgNVBAMM
--BHgzNjYwE6QRMA8xDTALBgNVBAMMBHgzNjcwE6QRMA8xDTALBgNVBAMMBHgzNjgw
--E6QRMA8xDTALBgNVBAMMBHgzNjkwE6QRMA8xDTALBgNVBAMMBHgzNzAwE6QRMA8x
--DTALBgNVBAMMBHgzNzEwE6QRMA8xDTALBgNVBAMMBHgzNzIwE6QRMA8xDTALBgNV
--BAMMBHgzNzMwE6QRMA8xDTALBgNVBAMMBHgzNzQwE6QRMA8xDTALBgNVBAMMBHgz
--NzUwE6QRMA8xDTALBgNVBAMMBHgzNzYwE6QRMA8xDTALBgNVBAMMBHgzNzcwE6QR
--MA8xDTALBgNVBAMMBHgzNzgwE6QRMA8xDTALBgNVBAMMBHgzNzkwE6QRMA8xDTAL
--BgNVBAMMBHgzODAwE6QRMA8xDTALBgNVBAMMBHgzODEwE6QRMA8xDTALBgNVBAMM
--BHgzODIwE6QRMA8xDTALBgNVBAMMBHgzODMwE6QRMA8xDTALBgNVBAMMBHgzODQw
--E6QRMA8xDTALBgNVBAMMBHgzODUwE6QRMA8xDTALBgNVBAMMBHgzODYwE6QRMA8x
--DTALBgNVBAMMBHgzODcwE6QRMA8xDTALBgNVBAMMBHgzODgwE6QRMA8xDTALBgNV
--BAMMBHgzODkwE6QRMA8xDTALBgNVBAMMBHgzOTAwE6QRMA8xDTALBgNVBAMMBHgz
--OTEwE6QRMA8xDTALBgNVBAMMBHgzOTIwE6QRMA8xDTALBgNVBAMMBHgzOTMwE6QR
--MA8xDTALBgNVBAMMBHgzOTQwE6QRMA8xDTALBgNVBAMMBHgzOTUwE6QRMA8xDTAL
--BgNVBAMMBHgzOTYwE6QRMA8xDTALBgNVBAMMBHgzOTcwE6QRMA8xDTALBgNVBAMM
--BHgzOTgwE6QRMA8xDTALBgNVBAMMBHgzOTkwE6QRMA8xDTALBgNVBAMMBHg0MDAw
--E6QRMA8xDTALBgNVBAMMBHg0MDEwE6QRMA8xDTALBgNVBAMMBHg0MDIwE6QRMA8x
--DTALBgNVBAMMBHg0MDMwE6QRMA8xDTALBgNVBAMMBHg0MDQwE6QRMA8xDTALBgNV
--BAMMBHg0MDUwE6QRMA8xDTALBgNVBAMMBHg0MDYwE6QRMA8xDTALBgNVBAMMBHg0
--MDcwE6QRMA8xDTALBgNVBAMMBHg0MDgwE6QRMA8xDTALBgNVBAMMBHg0MDkwE6QR
--MA8xDTALBgNVBAMMBHg0MTAwE6QRMA8xDTALBgNVBAMMBHg0MTEwE6QRMA8xDTAL
--BgNVBAMMBHg0MTIwE6QRMA8xDTALBgNVBAMMBHg0MTMwE6QRMA8xDTALBgNVBAMM
--BHg0MTQwE6QRMA8xDTALBgNVBAMMBHg0MTUwE6QRMA8xDTALBgNVBAMMBHg0MTYw
--E6QRMA8xDTALBgNVBAMMBHg0MTcwE6QRMA8xDTALBgNVBAMMBHg0MTgwE6QRMA8x
--DTALBgNVBAMMBHg0MTkwE6QRMA8xDTALBgNVBAMMBHg0MjAwE6QRMA8xDTALBgNV
--BAMMBHg0MjEwE6QRMA8xDTALBgNVBAMMBHg0MjIwE6QRMA8xDTALBgNVBAMMBHg0
--MjMwE6QRMA8xDTALBgNVBAMMBHg0MjQwE6QRMA8xDTALBgNVBAMMBHg0MjUwE6QR
--MA8xDTALBgNVBAMMBHg0MjYwE6QRMA8xDTALBgNVBAMMBHg0MjcwE6QRMA8xDTAL
--BgNVBAMMBHg0MjgwE6QRMA8xDTALBgNVBAMMBHg0MjkwE6QRMA8xDTALBgNVBAMM
--BHg0MzAwE6QRMA8xDTALBgNVBAMMBHg0MzEwE6QRMA8xDTALBgNVBAMMBHg0MzIw
--E6QRMA8xDTALBgNVBAMMBHg0MzMwE6QRMA8xDTALBgNVBAMMBHg0MzQwE6QRMA8x
--DTALBgNVBAMMBHg0MzUwE6QRMA8xDTALBgNVBAMMBHg0MzYwE6QRMA8xDTALBgNV
--BAMMBHg0MzcwE6QRMA8xDTALBgNVBAMMBHg0MzgwE6QRMA8xDTALBgNVBAMMBHg0
--MzkwE6QRMA8xDTALBgNVBAMMBHg0NDAwE6QRMA8xDTALBgNVBAMMBHg0NDEwE6QR
--MA8xDTALBgNVBAMMBHg0NDIwE6QRMA8xDTALBgNVBAMMBHg0NDMwE6QRMA8xDTAL
--BgNVBAMMBHg0NDQwE6QRMA8xDTALBgNVBAMMBHg0NDUwE6QRMA8xDTALBgNVBAMM
--BHg0NDYwE6QRMA8xDTALBgNVBAMMBHg0NDcwE6QRMA8xDTALBgNVBAMMBHg0NDgw
--E6QRMA8xDTALBgNVBAMMBHg0NDkwE6QRMA8xDTALBgNVBAMMBHg0NTAwE6QRMA8x
--DTALBgNVBAMMBHg0NTEwE6QRMA8xDTALBgNVBAMMBHg0NTIwE6QRMA8xDTALBgNV
--BAMMBHg0NTMwE6QRMA8xDTALBgNVBAMMBHg0NTQwE6QRMA8xDTALBgNVBAMMBHg0
--NTUwE6QRMA8xDTALBgNVBAMMBHg0NTYwE6QRMA8xDTALBgNVBAMMBHg0NTcwE6QR
--MA8xDTALBgNVBAMMBHg0NTgwE6QRMA8xDTALBgNVBAMMBHg0NTkwE6QRMA8xDTAL
--BgNVBAMMBHg0NjAwE6QRMA8xDTALBgNVBAMMBHg0NjEwE6QRMA8xDTALBgNVBAMM
--BHg0NjIwE6QRMA8xDTALBgNVBAMMBHg0NjMwE6QRMA8xDTALBgNVBAMMBHg0NjQw
--E6QRMA8xDTALBgNVBAMMBHg0NjUwE6QRMA8xDTALBgNVBAMMBHg0NjYwE6QRMA8x
--DTALBgNVBAMMBHg0NjcwE6QRMA8xDTALBgNVBAMMBHg0NjgwE6QRMA8xDTALBgNV
--BAMMBHg0NjkwE6QRMA8xDTALBgNVBAMMBHg0NzAwE6QRMA8xDTALBgNVBAMMBHg0
--NzEwE6QRMA8xDTALBgNVBAMMBHg0NzIwE6QRMA8xDTALBgNVBAMMBHg0NzMwE6QR
--MA8xDTALBgNVBAMMBHg0NzQwE6QRMA8xDTALBgNVBAMMBHg0NzUwE6QRMA8xDTAL
--BgNVBAMMBHg0NzYwE6QRMA8xDTALBgNVBAMMBHg0NzcwE6QRMA8xDTALBgNVBAMM
--BHg0NzgwE6QRMA8xDTALBgNVBAMMBHg0NzkwE6QRMA8xDTALBgNVBAMMBHg0ODAw
--E6QRMA8xDTALBgNVBAMMBHg0ODEwE6QRMA8xDTALBgNVBAMMBHg0ODIwE6QRMA8x
--DTALBgNVBAMMBHg0ODMwE6QRMA8xDTALBgNVBAMMBHg0ODQwE6QRMA8xDTALBgNV
--BAMMBHg0ODUwE6QRMA8xDTALBgNVBAMMBHg0ODYwE6QRMA8xDTALBgNVBAMMBHg0
--ODcwE6QRMA8xDTALBgNVBAMMBHg0ODgwE6QRMA8xDTALBgNVBAMMBHg0ODkwE6QR
--MA8xDTALBgNVBAMMBHg0OTAwE6QRMA8xDTALBgNVBAMMBHg0OTEwE6QRMA8xDTAL
--BgNVBAMMBHg0OTIwE6QRMA8xDTALBgNVBAMMBHg0OTMwE6QRMA8xDTALBgNVBAMM
--BHg0OTQwE6QRMA8xDTALBgNVBAMMBHg0OTUwE6QRMA8xDTALBgNVBAMMBHg0OTYw
--E6QRMA8xDTALBgNVBAMMBHg0OTcwE6QRMA8xDTALBgNVBAMMBHg0OTgwE6QRMA8x
--DTALBgNVBAMMBHg0OTkwE6QRMA8xDTALBgNVBAMMBHg1MDAwE6QRMA8xDTALBgNV
--BAMMBHg1MDEwE6QRMA8xDTALBgNVBAMMBHg1MDIwE6QRMA8xDTALBgNVBAMMBHg1
--MDMwE6QRMA8xDTALBgNVBAMMBHg1MDQwE6QRMA8xDTALBgNVBAMMBHg1MDUwE6QR
--MA8xDTALBgNVBAMMBHg1MDYwE6QRMA8xDTALBgNVBAMMBHg1MDcwE6QRMA8xDTAL
--BgNVBAMMBHg1MDgwE6QRMA8xDTALBgNVBAMMBHg1MDkwE6QRMA8xDTALBgNVBAMM
--BHg1MTAwE6QRMA8xDTALBgNVBAMMBHg1MTEwE6QRMA8xDTALBgNVBAMMBHg1MTIw
--E6QRMA8xDTALBgNVBAMMBHg1MTMwE6QRMA8xDTALBgNVBAMMBHg1MTQwE6QRMA8x
--DTALBgNVBAMMBHg1MTUwE6QRMA8xDTALBgNVBAMMBHg1MTYwE6QRMA8xDTALBgNV
--BAMMBHg1MTcwE6QRMA8xDTALBgNVBAMMBHg1MTgwE6QRMA8xDTALBgNVBAMMBHg1
--MTkwE6QRMA8xDTALBgNVBAMMBHg1MjAwE6QRMA8xDTALBgNVBAMMBHg1MjEwE6QR
--MA8xDTALBgNVBAMMBHg1MjIwE6QRMA8xDTALBgNVBAMMBHg1MjMwE6QRMA8xDTAL
--BgNVBAMMBHg1MjQwE6QRMA8xDTALBgNVBAMMBHg1MjUwE6QRMA8xDTALBgNVBAMM
--BHg1MjYwE6QRMA8xDTALBgNVBAMMBHg1MjcwE6QRMA8xDTALBgNVBAMMBHg1Mjgw
--E6QRMA8xDTALBgNVBAMMBHg1MjkwE6QRMA8xDTALBgNVBAMMBHg1MzAwE6QRMA8x
--DTALBgNVBAMMBHg1MzEwE6QRMA8xDTALBgNVBAMMBHg1MzIwE6QRMA8xDTALBgNV
--BAMMBHg1MzMwE6QRMA8xDTALBgNVBAMMBHg1MzQwE6QRMA8xDTALBgNVBAMMBHg1
--MzUwE6QRMA8xDTALBgNVBAMMBHg1MzYwE6QRMA8xDTALBgNVBAMMBHg1MzcwE6QR
--MA8xDTALBgNVBAMMBHg1MzgwE6QRMA8xDTALBgNVBAMMBHg1MzkwE6QRMA8xDTAL
--BgNVBAMMBHg1NDAwE6QRMA8xDTALBgNVBAMMBHg1NDEwE6QRMA8xDTALBgNVBAMM
--BHg1NDIwE6QRMA8xDTALBgNVBAMMBHg1NDMwE6QRMA8xDTALBgNVBAMMBHg1NDQw
--E6QRMA8xDTALBgNVBAMMBHg1NDUwE6QRMA8xDTALBgNVBAMMBHg1NDYwE6QRMA8x
--DTALBgNVBAMMBHg1NDcwE6QRMA8xDTALBgNVBAMMBHg1NDgwE6QRMA8xDTALBgNV
--BAMMBHg1NDkwE6QRMA8xDTALBgNVBAMMBHg1NTAwE6QRMA8xDTALBgNVBAMMBHg1
--NTEwE6QRMA8xDTALBgNVBAMMBHg1NTIwE6QRMA8xDTALBgNVBAMMBHg1NTMwE6QR
--MA8xDTALBgNVBAMMBHg1NTQwE6QRMA8xDTALBgNVBAMMBHg1NTUwE6QRMA8xDTAL
--BgNVBAMMBHg1NTYwE6QRMA8xDTALBgNVBAMMBHg1NTcwE6QRMA8xDTALBgNVBAMM
--BHg1NTgwE6QRMA8xDTALBgNVBAMMBHg1NTkwE6QRMA8xDTALBgNVBAMMBHg1NjAw
--E6QRMA8xDTALBgNVBAMMBHg1NjEwE6QRMA8xDTALBgNVBAMMBHg1NjIwE6QRMA8x
--DTALBgNVBAMMBHg1NjMwE6QRMA8xDTALBgNVBAMMBHg1NjQwE6QRMA8xDTALBgNV
--BAMMBHg1NjUwE6QRMA8xDTALBgNVBAMMBHg1NjYwE6QRMA8xDTALBgNVBAMMBHg1
--NjcwE6QRMA8xDTALBgNVBAMMBHg1NjgwE6QRMA8xDTALBgNVBAMMBHg1NjkwE6QR
--MA8xDTALBgNVBAMMBHg1NzAwE6QRMA8xDTALBgNVBAMMBHg1NzEwE6QRMA8xDTAL
--BgNVBAMMBHg1NzIwE6QRMA8xDTALBgNVBAMMBHg1NzMwE6QRMA8xDTALBgNVBAMM
--BHg1NzQwE6QRMA8xDTALBgNVBAMMBHg1NzUwE6QRMA8xDTALBgNVBAMMBHg1NzYw
--E6QRMA8xDTALBgNVBAMMBHg1NzcwE6QRMA8xDTALBgNVBAMMBHg1NzgwE6QRMA8x
--DTALBgNVBAMMBHg1NzkwE6QRMA8xDTALBgNVBAMMBHg1ODAwE6QRMA8xDTALBgNV
--BAMMBHg1ODEwE6QRMA8xDTALBgNVBAMMBHg1ODIwE6QRMA8xDTALBgNVBAMMBHg1
--ODMwE6QRMA8xDTALBgNVBAMMBHg1ODQwE6QRMA8xDTALBgNVBAMMBHg1ODUwE6QR
--MA8xDTALBgNVBAMMBHg1ODYwE6QRMA8xDTALBgNVBAMMBHg1ODcwE6QRMA8xDTAL
--BgNVBAMMBHg1ODgwE6QRMA8xDTALBgNVBAMMBHg1ODkwE6QRMA8xDTALBgNVBAMM
--BHg1OTAwE6QRMA8xDTALBgNVBAMMBHg1OTEwE6QRMA8xDTALBgNVBAMMBHg1OTIw
--E6QRMA8xDTALBgNVBAMMBHg1OTMwE6QRMA8xDTALBgNVBAMMBHg1OTQwE6QRMA8x
--DTALBgNVBAMMBHg1OTUwE6QRMA8xDTALBgNVBAMMBHg1OTYwE6QRMA8xDTALBgNV
--BAMMBHg1OTcwE6QRMA8xDTALBgNVBAMMBHg1OTgwE6QRMA8xDTALBgNVBAMMBHg1
--OTkwE6QRMA8xDTALBgNVBAMMBHg2MDAwE6QRMA8xDTALBgNVBAMMBHg2MDEwE6QR
--MA8xDTALBgNVBAMMBHg2MDIwE6QRMA8xDTALBgNVBAMMBHg2MDMwE6QRMA8xDTAL
--BgNVBAMMBHg2MDQwE6QRMA8xDTALBgNVBAMMBHg2MDUwE6QRMA8xDTALBgNVBAMM
--BHg2MDYwE6QRMA8xDTALBgNVBAMMBHg2MDcwE6QRMA8xDTALBgNVBAMMBHg2MDgw
--E6QRMA8xDTALBgNVBAMMBHg2MDkwE6QRMA8xDTALBgNVBAMMBHg2MTAwE6QRMA8x
--DTALBgNVBAMMBHg2MTEwE6QRMA8xDTALBgNVBAMMBHg2MTIwE6QRMA8xDTALBgNV
--BAMMBHg2MTMwE6QRMA8xDTALBgNVBAMMBHg2MTQwE6QRMA8xDTALBgNVBAMMBHg2
--MTUwE6QRMA8xDTALBgNVBAMMBHg2MTYwE6QRMA8xDTALBgNVBAMMBHg2MTcwE6QR
--MA8xDTALBgNVBAMMBHg2MTgwE6QRMA8xDTALBgNVBAMMBHg2MTkwE6QRMA8xDTAL
--BgNVBAMMBHg2MjAwE6QRMA8xDTALBgNVBAMMBHg2MjEwE6QRMA8xDTALBgNVBAMM
--BHg2MjIwE6QRMA8xDTALBgNVBAMMBHg2MjMwE6QRMA8xDTALBgNVBAMMBHg2MjQw
--E6QRMA8xDTALBgNVBAMMBHg2MjUwE6QRMA8xDTALBgNVBAMMBHg2MjYwE6QRMA8x
--DTALBgNVBAMMBHg2MjcwE6QRMA8xDTALBgNVBAMMBHg2MjgwE6QRMA8xDTALBgNV
--BAMMBHg2MjkwE6QRMA8xDTALBgNVBAMMBHg2MzAwE6QRMA8xDTALBgNVBAMMBHg2
--MzEwE6QRMA8xDTALBgNVBAMMBHg2MzIwE6QRMA8xDTALBgNVBAMMBHg2MzMwE6QR
--MA8xDTALBgNVBAMMBHg2MzQwE6QRMA8xDTALBgNVBAMMBHg2MzUwE6QRMA8xDTAL
--BgNVBAMMBHg2MzYwE6QRMA8xDTALBgNVBAMMBHg2MzcwE6QRMA8xDTALBgNVBAMM
--BHg2MzgwE6QRMA8xDTALBgNVBAMMBHg2MzkwE6QRMA8xDTALBgNVBAMMBHg2NDAw
--E6QRMA8xDTALBgNVBAMMBHg2NDEwE6QRMA8xDTALBgNVBAMMBHg2NDIwE6QRMA8x
--DTALBgNVBAMMBHg2NDMwE6QRMA8xDTALBgNVBAMMBHg2NDQwE6QRMA8xDTALBgNV
--BAMMBHg2NDUwE6QRMA8xDTALBgNVBAMMBHg2NDYwE6QRMA8xDTALBgNVBAMMBHg2
--NDcwE6QRMA8xDTALBgNVBAMMBHg2NDgwE6QRMA8xDTALBgNVBAMMBHg2NDkwE6QR
--MA8xDTALBgNVBAMMBHg2NTAwE6QRMA8xDTALBgNVBAMMBHg2NTEwE6QRMA8xDTAL
--BgNVBAMMBHg2NTIwE6QRMA8xDTALBgNVBAMMBHg2NTMwE6QRMA8xDTALBgNVBAMM
--BHg2NTQwE6QRMA8xDTALBgNVBAMMBHg2NTUwE6QRMA8xDTALBgNVBAMMBHg2NTYw
--E6QRMA8xDTALBgNVBAMMBHg2NTcwE6QRMA8xDTALBgNVBAMMBHg2NTgwE6QRMA8x
--DTALBgNVBAMMBHg2NTkwE6QRMA8xDTALBgNVBAMMBHg2NjAwE6QRMA8xDTALBgNV
--BAMMBHg2NjEwE6QRMA8xDTALBgNVBAMMBHg2NjIwE6QRMA8xDTALBgNVBAMMBHg2
--NjMwE6QRMA8xDTALBgNVBAMMBHg2NjQwE6QRMA8xDTALBgNVBAMMBHg2NjUwE6QR
--MA8xDTALBgNVBAMMBHg2NjYwE6QRMA8xDTALBgNVBAMMBHg2NjcwE6QRMA8xDTAL
--BgNVBAMMBHg2NjgwE6QRMA8xDTALBgNVBAMMBHg2NjkwE6QRMA8xDTALBgNVBAMM
--BHg2NzAwE6QRMA8xDTALBgNVBAMMBHg2NzEwE6QRMA8xDTALBgNVBAMMBHg2NzIw
--E6QRMA8xDTALBgNVBAMMBHg2NzMwE6QRMA8xDTALBgNVBAMMBHg2NzQwE6QRMA8x
--DTALBgNVBAMMBHg2NzUwE6QRMA8xDTALBgNVBAMMBHg2NzYwE6QRMA8xDTALBgNV
--BAMMBHg2NzcwE6QRMA8xDTALBgNVBAMMBHg2NzgwE6QRMA8xDTALBgNVBAMMBHg2
--NzkwE6QRMA8xDTALBgNVBAMMBHg2ODAwE6QRMA8xDTALBgNVBAMMBHg2ODEwE6QR
--MA8xDTALBgNVBAMMBHg2ODIwE6QRMA8xDTALBgNVBAMMBHg2ODMwE6QRMA8xDTAL
--BgNVBAMMBHg2ODQwE6QRMA8xDTALBgNVBAMMBHg2ODUwE6QRMA8xDTALBgNVBAMM
--BHg2ODYwE6QRMA8xDTALBgNVBAMMBHg2ODcwE6QRMA8xDTALBgNVBAMMBHg2ODgw
--E6QRMA8xDTALBgNVBAMMBHg2ODkwE6QRMA8xDTALBgNVBAMMBHg2OTAwE6QRMA8x
--DTALBgNVBAMMBHg2OTEwE6QRMA8xDTALBgNVBAMMBHg2OTIwE6QRMA8xDTALBgNV
--BAMMBHg2OTMwE6QRMA8xDTALBgNVBAMMBHg2OTQwE6QRMA8xDTALBgNVBAMMBHg2
--OTUwE6QRMA8xDTALBgNVBAMMBHg2OTYwE6QRMA8xDTALBgNVBAMMBHg2OTcwE6QR
--MA8xDTALBgNVBAMMBHg2OTgwE6QRMA8xDTALBgNVBAMMBHg2OTkwE6QRMA8xDTAL
--BgNVBAMMBHg3MDAwE6QRMA8xDTALBgNVBAMMBHg3MDEwE6QRMA8xDTALBgNVBAMM
--BHg3MDIwE6QRMA8xDTALBgNVBAMMBHg3MDMwE6QRMA8xDTALBgNVBAMMBHg3MDQw
--E6QRMA8xDTALBgNVBAMMBHg3MDUwE6QRMA8xDTALBgNVBAMMBHg3MDYwE6QRMA8x
--DTALBgNVBAMMBHg3MDcwE6QRMA8xDTALBgNVBAMMBHg3MDgwE6QRMA8xDTALBgNV
--BAMMBHg3MDkwE6QRMA8xDTALBgNVBAMMBHg3MTAwE6QRMA8xDTALBgNVBAMMBHg3
--MTEwE6QRMA8xDTALBgNVBAMMBHg3MTIwE6QRMA8xDTALBgNVBAMMBHg3MTMwE6QR
--MA8xDTALBgNVBAMMBHg3MTQwE6QRMA8xDTALBgNVBAMMBHg3MTUwE6QRMA8xDTAL
--BgNVBAMMBHg3MTYwE6QRMA8xDTALBgNVBAMMBHg3MTcwE6QRMA8xDTALBgNVBAMM
--BHg3MTgwE6QRMA8xDTALBgNVBAMMBHg3MTkwE6QRMA8xDTALBgNVBAMMBHg3MjAw
--E6QRMA8xDTALBgNVBAMMBHg3MjEwE6QRMA8xDTALBgNVBAMMBHg3MjIwE6QRMA8x
--DTALBgNVBAMMBHg3MjMwE6QRMA8xDTALBgNVBAMMBHg3MjQwE6QRMA8xDTALBgNV
--BAMMBHg3MjUwE6QRMA8xDTALBgNVBAMMBHg3MjYwE6QRMA8xDTALBgNVBAMMBHg3
--MjcwE6QRMA8xDTALBgNVBAMMBHg3MjgwE6QRMA8xDTALBgNVBAMMBHg3MjkwE6QR
--MA8xDTALBgNVBAMMBHg3MzAwE6QRMA8xDTALBgNVBAMMBHg3MzEwE6QRMA8xDTAL
--BgNVBAMMBHg3MzIwE6QRMA8xDTALBgNVBAMMBHg3MzMwE6QRMA8xDTALBgNVBAMM
--BHg3MzQwE6QRMA8xDTALBgNVBAMMBHg3MzUwE6QRMA8xDTALBgNVBAMMBHg3MzYw
--E6QRMA8xDTALBgNVBAMMBHg3MzcwE6QRMA8xDTALBgNVBAMMBHg3MzgwE6QRMA8x
--DTALBgNVBAMMBHg3MzkwE6QRMA8xDTALBgNVBAMMBHg3NDAwE6QRMA8xDTALBgNV
--BAMMBHg3NDEwE6QRMA8xDTALBgNVBAMMBHg3NDIwE6QRMA8xDTALBgNVBAMMBHg3
--NDMwE6QRMA8xDTALBgNVBAMMBHg3NDQwE6QRMA8xDTALBgNVBAMMBHg3NDUwE6QR
--MA8xDTALBgNVBAMMBHg3NDYwE6QRMA8xDTALBgNVBAMMBHg3NDcwE6QRMA8xDTAL
--BgNVBAMMBHg3NDgwE6QRMA8xDTALBgNVBAMMBHg3NDkwE6QRMA8xDTALBgNVBAMM
--BHg3NTAwE6QRMA8xDTALBgNVBAMMBHg3NTEwE6QRMA8xDTALBgNVBAMMBHg3NTIw
--E6QRMA8xDTALBgNVBAMMBHg3NTMwE6QRMA8xDTALBgNVBAMMBHg3NTQwE6QRMA8x
--DTALBgNVBAMMBHg3NTUwE6QRMA8xDTALBgNVBAMMBHg3NTYwE6QRMA8xDTALBgNV
--BAMMBHg3NTcwE6QRMA8xDTALBgNVBAMMBHg3NTgwE6QRMA8xDTALBgNVBAMMBHg3
--NTkwE6QRMA8xDTALBgNVBAMMBHg3NjAwE6QRMA8xDTALBgNVBAMMBHg3NjEwE6QR
--MA8xDTALBgNVBAMMBHg3NjIwE6QRMA8xDTALBgNVBAMMBHg3NjMwE6QRMA8xDTAL
--BgNVBAMMBHg3NjQwE6QRMA8xDTALBgNVBAMMBHg3NjUwE6QRMA8xDTALBgNVBAMM
--BHg3NjYwE6QRMA8xDTALBgNVBAMMBHg3NjcwE6QRMA8xDTALBgNVBAMMBHg3Njgw
--E6QRMA8xDTALBgNVBAMMBHg3NjkwE6QRMA8xDTALBgNVBAMMBHg3NzAwE6QRMA8x
--DTALBgNVBAMMBHg3NzEwE6QRMA8xDTALBgNVBAMMBHg3NzIwE6QRMA8xDTALBgNV
--BAMMBHg3NzMwE6QRMA8xDTALBgNVBAMMBHg3NzQwE6QRMA8xDTALBgNVBAMMBHg3
--NzUwE6QRMA8xDTALBgNVBAMMBHg3NzYwE6QRMA8xDTALBgNVBAMMBHg3NzcwE6QR
--MA8xDTALBgNVBAMMBHg3NzgwE6QRMA8xDTALBgNVBAMMBHg3NzkwE6QRMA8xDTAL
--BgNVBAMMBHg3ODAwE6QRMA8xDTALBgNVBAMMBHg3ODEwE6QRMA8xDTALBgNVBAMM
--BHg3ODIwE6QRMA8xDTALBgNVBAMMBHg3ODMwE6QRMA8xDTALBgNVBAMMBHg3ODQw
--E6QRMA8xDTALBgNVBAMMBHg3ODUwE6QRMA8xDTALBgNVBAMMBHg3ODYwE6QRMA8x
--DTALBgNVBAMMBHg3ODcwE6QRMA8xDTALBgNVBAMMBHg3ODgwE6QRMA8xDTALBgNV
--BAMMBHg3ODkwE6QRMA8xDTALBgNVBAMMBHg3OTAwE6QRMA8xDTALBgNVBAMMBHg3
--OTEwE6QRMA8xDTALBgNVBAMMBHg3OTIwE6QRMA8xDTALBgNVBAMMBHg3OTMwE6QR
--MA8xDTALBgNVBAMMBHg3OTQwE6QRMA8xDTALBgNVBAMMBHg3OTUwE6QRMA8xDTAL
--BgNVBAMMBHg3OTYwE6QRMA8xDTALBgNVBAMMBHg3OTcwE6QRMA8xDTALBgNVBAMM
--BHg3OTgwE6QRMA8xDTALBgNVBAMMBHg3OTkwE6QRMA8xDTALBgNVBAMMBHg4MDAw
--E6QRMA8xDTALBgNVBAMMBHg4MDEwE6QRMA8xDTALBgNVBAMMBHg4MDIwE6QRMA8x
--DTALBgNVBAMMBHg4MDMwE6QRMA8xDTALBgNVBAMMBHg4MDQwE6QRMA8xDTALBgNV
--BAMMBHg4MDUwE6QRMA8xDTALBgNVBAMMBHg4MDYwE6QRMA8xDTALBgNVBAMMBHg4
--MDcwE6QRMA8xDTALBgNVBAMMBHg4MDgwE6QRMA8xDTALBgNVBAMMBHg4MDkwE6QR
--MA8xDTALBgNVBAMMBHg4MTAwE6QRMA8xDTALBgNVBAMMBHg4MTEwE6QRMA8xDTAL
--BgNVBAMMBHg4MTIwE6QRMA8xDTALBgNVBAMMBHg4MTMwE6QRMA8xDTALBgNVBAMM
--BHg4MTQwE6QRMA8xDTALBgNVBAMMBHg4MTUwE6QRMA8xDTALBgNVBAMMBHg4MTYw
--E6QRMA8xDTALBgNVBAMMBHg4MTcwE6QRMA8xDTALBgNVBAMMBHg4MTgwE6QRMA8x
--DTALBgNVBAMMBHg4MTkwE6QRMA8xDTALBgNVBAMMBHg4MjAwE6QRMA8xDTALBgNV
--BAMMBHg4MjEwE6QRMA8xDTALBgNVBAMMBHg4MjIwE6QRMA8xDTALBgNVBAMMBHg4
--MjMwE6QRMA8xDTALBgNVBAMMBHg4MjQwE6QRMA8xDTALBgNVBAMMBHg4MjUwE6QR
--MA8xDTALBgNVBAMMBHg4MjYwE6QRMA8xDTALBgNVBAMMBHg4MjcwE6QRMA8xDTAL
--BgNVBAMMBHg4MjgwE6QRMA8xDTALBgNVBAMMBHg4MjkwE6QRMA8xDTALBgNVBAMM
--BHg4MzAwE6QRMA8xDTALBgNVBAMMBHg4MzEwE6QRMA8xDTALBgNVBAMMBHg4MzIw
--E6QRMA8xDTALBgNVBAMMBHg4MzMwE6QRMA8xDTALBgNVBAMMBHg4MzQwE6QRMA8x
--DTALBgNVBAMMBHg4MzUwE6QRMA8xDTALBgNVBAMMBHg4MzYwE6QRMA8xDTALBgNV
--BAMMBHg4MzcwE6QRMA8xDTALBgNVBAMMBHg4MzgwE6QRMA8xDTALBgNVBAMMBHg4
--MzkwE6QRMA8xDTALBgNVBAMMBHg4NDAwE6QRMA8xDTALBgNVBAMMBHg4NDEwE6QR
--MA8xDTALBgNVBAMMBHg4NDIwE6QRMA8xDTALBgNVBAMMBHg4NDMwE6QRMA8xDTAL
--BgNVBAMMBHg4NDQwE6QRMA8xDTALBgNVBAMMBHg4NDUwE6QRMA8xDTALBgNVBAMM
--BHg4NDYwE6QRMA8xDTALBgNVBAMMBHg4NDcwE6QRMA8xDTALBgNVBAMMBHg4NDgw
--E6QRMA8xDTALBgNVBAMMBHg4NDkwE6QRMA8xDTALBgNVBAMMBHg4NTAwE6QRMA8x
--DTALBgNVBAMMBHg4NTEwE6QRMA8xDTALBgNVBAMMBHg4NTIwE6QRMA8xDTALBgNV
--BAMMBHg4NTMwE6QRMA8xDTALBgNVBAMMBHg4NTQwE6QRMA8xDTALBgNVBAMMBHg4
--NTUwE6QRMA8xDTALBgNVBAMMBHg4NTYwE6QRMA8xDTALBgNVBAMMBHg4NTcwE6QR
--MA8xDTALBgNVBAMMBHg4NTgwE6QRMA8xDTALBgNVBAMMBHg4NTkwE6QRMA8xDTAL
--BgNVBAMMBHg4NjAwE6QRMA8xDTALBgNVBAMMBHg4NjEwE6QRMA8xDTALBgNVBAMM
--BHg4NjIwE6QRMA8xDTALBgNVBAMMBHg4NjMwE6QRMA8xDTALBgNVBAMMBHg4NjQw
--E6QRMA8xDTALBgNVBAMMBHg4NjUwE6QRMA8xDTALBgNVBAMMBHg4NjYwE6QRMA8x
--DTALBgNVBAMMBHg4NjcwE6QRMA8xDTALBgNVBAMMBHg4NjgwE6QRMA8xDTALBgNV
--BAMMBHg4NjkwE6QRMA8xDTALBgNVBAMMBHg4NzAwE6QRMA8xDTALBgNVBAMMBHg4
--NzEwE6QRMA8xDTALBgNVBAMMBHg4NzIwE6QRMA8xDTALBgNVBAMMBHg4NzMwE6QR
--MA8xDTALBgNVBAMMBHg4NzQwE6QRMA8xDTALBgNVBAMMBHg4NzUwE6QRMA8xDTAL
--BgNVBAMMBHg4NzYwE6QRMA8xDTALBgNVBAMMBHg4NzcwE6QRMA8xDTALBgNVBAMM
--BHg4NzgwE6QRMA8xDTALBgNVBAMMBHg4NzkwE6QRMA8xDTALBgNVBAMMBHg4ODAw
--E6QRMA8xDTALBgNVBAMMBHg4ODEwE6QRMA8xDTALBgNVBAMMBHg4ODIwE6QRMA8x
--DTALBgNVBAMMBHg4ODMwE6QRMA8xDTALBgNVBAMMBHg4ODQwE6QRMA8xDTALBgNV
--BAMMBHg4ODUwE6QRMA8xDTALBgNVBAMMBHg4ODYwE6QRMA8xDTALBgNVBAMMBHg4
--ODcwE6QRMA8xDTALBgNVBAMMBHg4ODgwE6QRMA8xDTALBgNVBAMMBHg4ODkwE6QR
--MA8xDTALBgNVBAMMBHg4OTAwE6QRMA8xDTALBgNVBAMMBHg4OTEwE6QRMA8xDTAL
--BgNVBAMMBHg4OTIwE6QRMA8xDTALBgNVBAMMBHg4OTMwE6QRMA8xDTALBgNVBAMM
--BHg4OTQwE6QRMA8xDTALBgNVBAMMBHg4OTUwE6QRMA8xDTALBgNVBAMMBHg4OTYw
--E6QRMA8xDTALBgNVBAMMBHg4OTcwE6QRMA8xDTALBgNVBAMMBHg4OTgwE6QRMA8x
--DTALBgNVBAMMBHg4OTkwE6QRMA8xDTALBgNVBAMMBHg5MDAwE6QRMA8xDTALBgNV
--BAMMBHg5MDEwE6QRMA8xDTALBgNVBAMMBHg5MDIwE6QRMA8xDTALBgNVBAMMBHg5
--MDMwE6QRMA8xDTALBgNVBAMMBHg5MDQwE6QRMA8xDTALBgNVBAMMBHg5MDUwE6QR
--MA8xDTALBgNVBAMMBHg5MDYwE6QRMA8xDTALBgNVBAMMBHg5MDcwE6QRMA8xDTAL
--BgNVBAMMBHg5MDgwE6QRMA8xDTALBgNVBAMMBHg5MDkwE6QRMA8xDTALBgNVBAMM
--BHg5MTAwE6QRMA8xDTALBgNVBAMMBHg5MTEwE6QRMA8xDTALBgNVBAMMBHg5MTIw
--E6QRMA8xDTALBgNVBAMMBHg5MTMwE6QRMA8xDTALBgNVBAMMBHg5MTQwE6QRMA8x
--DTALBgNVBAMMBHg5MTUwE6QRMA8xDTALBgNVBAMMBHg5MTYwE6QRMA8xDTALBgNV
--BAMMBHg5MTcwE6QRMA8xDTALBgNVBAMMBHg5MTgwE6QRMA8xDTALBgNVBAMMBHg5
--MTkwE6QRMA8xDTALBgNVBAMMBHg5MjAwE6QRMA8xDTALBgNVBAMMBHg5MjEwE6QR
--MA8xDTALBgNVBAMMBHg5MjIwE6QRMA8xDTALBgNVBAMMBHg5MjMwE6QRMA8xDTAL
--BgNVBAMMBHg5MjQwE6QRMA8xDTALBgNVBAMMBHg5MjUwE6QRMA8xDTALBgNVBAMM
--BHg5MjYwE6QRMA8xDTALBgNVBAMMBHg5MjcwE6QRMA8xDTALBgNVBAMMBHg5Mjgw
--E6QRMA8xDTALBgNVBAMMBHg5MjkwE6QRMA8xDTALBgNVBAMMBHg5MzAwE6QRMA8x
--DTALBgNVBAMMBHg5MzEwE6QRMA8xDTALBgNVBAMMBHg5MzIwE6QRMA8xDTALBgNV
--BAMMBHg5MzMwE6QRMA8xDTALBgNVBAMMBHg5MzQwE6QRMA8xDTALBgNVBAMMBHg5
--MzUwE6QRMA8xDTALBgNVBAMMBHg5MzYwE6QRMA8xDTALBgNVBAMMBHg5MzcwE6QR
--MA8xDTALBgNVBAMMBHg5MzgwE6QRMA8xDTALBgNVBAMMBHg5MzkwE6QRMA8xDTAL
--BgNVBAMMBHg5NDAwE6QRMA8xDTALBgNVBAMMBHg5NDEwE6QRMA8xDTALBgNVBAMM
--BHg5NDIwE6QRMA8xDTALBgNVBAMMBHg5NDMwE6QRMA8xDTALBgNVBAMMBHg5NDQw
--E6QRMA8xDTALBgNVBAMMBHg5NDUwE6QRMA8xDTALBgNVBAMMBHg5NDYwE6QRMA8x
--DTALBgNVBAMMBHg5NDcwE6QRMA8xDTALBgNVBAMMBHg5NDgwE6QRMA8xDTALBgNV
--BAMMBHg5NDkwE6QRMA8xDTALBgNVBAMMBHg5NTAwE6QRMA8xDTALBgNVBAMMBHg5
--NTEwE6QRMA8xDTALBgNVBAMMBHg5NTIwE6QRMA8xDTALBgNVBAMMBHg5NTMwE6QR
--MA8xDTALBgNVBAMMBHg5NTQwE6QRMA8xDTALBgNVBAMMBHg5NTUwE6QRMA8xDTAL
--BgNVBAMMBHg5NTYwE6QRMA8xDTALBgNVBAMMBHg5NTcwE6QRMA8xDTALBgNVBAMM
--BHg5NTgwE6QRMA8xDTALBgNVBAMMBHg5NTkwE6QRMA8xDTALBgNVBAMMBHg5NjAw
--E6QRMA8xDTALBgNVBAMMBHg5NjEwE6QRMA8xDTALBgNVBAMMBHg5NjIwE6QRMA8x
--DTALBgNVBAMMBHg5NjMwE6QRMA8xDTALBgNVBAMMBHg5NjQwE6QRMA8xDTALBgNV
--BAMMBHg5NjUwE6QRMA8xDTALBgNVBAMMBHg5NjYwE6QRMA8xDTALBgNVBAMMBHg5
--NjcwE6QRMA8xDTALBgNVBAMMBHg5NjgwE6QRMA8xDTALBgNVBAMMBHg5NjkwE6QR
--MA8xDTALBgNVBAMMBHg5NzAwE6QRMA8xDTALBgNVBAMMBHg5NzEwE6QRMA8xDTAL
--BgNVBAMMBHg5NzIwE6QRMA8xDTALBgNVBAMMBHg5NzMwE6QRMA8xDTALBgNVBAMM
--BHg5NzQwE6QRMA8xDTALBgNVBAMMBHg5NzUwE6QRMA8xDTALBgNVBAMMBHg5NzYw
--E6QRMA8xDTALBgNVBAMMBHg5NzcwE6QRMA8xDTALBgNVBAMMBHg5NzgwE6QRMA8x
--DTALBgNVBAMMBHg5NzkwE6QRMA8xDTALBgNVBAMMBHg5ODAwE6QRMA8xDTALBgNV
--BAMMBHg5ODEwE6QRMA8xDTALBgNVBAMMBHg5ODIwE6QRMA8xDTALBgNVBAMMBHg5
--ODMwE6QRMA8xDTALBgNVBAMMBHg5ODQwE6QRMA8xDTALBgNVBAMMBHg5ODUwE6QR
--MA8xDTALBgNVBAMMBHg5ODYwE6QRMA8xDTALBgNVBAMMBHg5ODcwE6QRMA8xDTAL
--BgNVBAMMBHg5ODgwE6QRMA8xDTALBgNVBAMMBHg5ODkwE6QRMA8xDTALBgNVBAMM
--BHg5OTAwE6QRMA8xDTALBgNVBAMMBHg5OTEwE6QRMA8xDTALBgNVBAMMBHg5OTIw
--E6QRMA8xDTALBgNVBAMMBHg5OTMwE6QRMA8xDTALBgNVBAMMBHg5OTQwE6QRMA8x
--DTALBgNVBAMMBHg5OTUwE6QRMA8xDTALBgNVBAMMBHg5OTYwE6QRMA8xDTALBgNV
--BAMMBHg5OTcwE6QRMA8xDTALBgNVBAMMBHg5OTgwE6QRMA8xDTALBgNVBAMMBHg5
--OTkwFKQSMBAxDjAMBgNVBAMMBXgxMDAwMBSkEjAQMQ4wDAYDVQQDDAV4MTAwMTAU
--pBIwEDEOMAwGA1UEAwwFeDEwMDIwFKQSMBAxDjAMBgNVBAMMBXgxMDAzMBSkEjAQ
--MQ4wDAYDVQQDDAV4MTAwNDAUpBIwEDEOMAwGA1UEAwwFeDEwMDUwFKQSMBAxDjAM
--BgNVBAMMBXgxMDA2MBSkEjAQMQ4wDAYDVQQDDAV4MTAwNzAUpBIwEDEOMAwGA1UE
--AwwFeDEwMDgwFKQSMBAxDjAMBgNVBAMMBXgxMDA5MBSkEjAQMQ4wDAYDVQQDDAV4
--MTAxMDAUpBIwEDEOMAwGA1UEAwwFeDEwMTEwFKQSMBAxDjAMBgNVBAMMBXgxMDEy
--MBSkEjAQMQ4wDAYDVQQDDAV4MTAxMzAUpBIwEDEOMAwGA1UEAwwFeDEwMTQwFKQS
--MBAxDjAMBgNVBAMMBXgxMDE1MBSkEjAQMQ4wDAYDVQQDDAV4MTAxNjAUpBIwEDEO
--MAwGA1UEAwwFeDEwMTcwFKQSMBAxDjAMBgNVBAMMBXgxMDE4MBSkEjAQMQ4wDAYD
--VQQDDAV4MTAxOTAUpBIwEDEOMAwGA1UEAwwFeDEwMjAwFKQSMBAxDjAMBgNVBAMM
--BXgxMDIxMBSkEjAQMQ4wDAYDVQQDDAV4MTAyMjAUpBIwEDEOMAwGA1UEAwwFeDEw
--MjMwFKQSMBAxDjAMBgNVBAMMBXgxMDI0MA+GDWh0dHA6Ly94ZXN0LzAwD4YNaHR0
--cDovL3hlc3QvMTAPhg1odHRwOi8veGVzdC8yMA+GDWh0dHA6Ly94ZXN0LzMwD4YN
--aHR0cDovL3hlc3QvNDAPhg1odHRwOi8veGVzdC81MA+GDWh0dHA6Ly94ZXN0LzYw
--D4YNaHR0cDovL3hlc3QvNzAPhg1odHRwOi8veGVzdC84MA+GDWh0dHA6Ly94ZXN0
--LzkwEIYOaHR0cDovL3hlc3QvMTAwEIYOaHR0cDovL3hlc3QvMTEwEIYOaHR0cDov
--L3hlc3QvMTIwEIYOaHR0cDovL3hlc3QvMTMwEIYOaHR0cDovL3hlc3QvMTQwEIYO
--aHR0cDovL3hlc3QvMTUwEIYOaHR0cDovL3hlc3QvMTYwEIYOaHR0cDovL3hlc3Qv
--MTcwEIYOaHR0cDovL3hlc3QvMTgwEIYOaHR0cDovL3hlc3QvMTkwEIYOaHR0cDov
--L3hlc3QvMjAwEIYOaHR0cDovL3hlc3QvMjEwEIYOaHR0cDovL3hlc3QvMjIwEIYO
--aHR0cDovL3hlc3QvMjMwEIYOaHR0cDovL3hlc3QvMjQwEIYOaHR0cDovL3hlc3Qv
--MjUwEIYOaHR0cDovL3hlc3QvMjYwEIYOaHR0cDovL3hlc3QvMjcwEIYOaHR0cDov
--L3hlc3QvMjgwEIYOaHR0cDovL3hlc3QvMjkwEIYOaHR0cDovL3hlc3QvMzAwEIYO
--aHR0cDovL3hlc3QvMzEwEIYOaHR0cDovL3hlc3QvMzIwEIYOaHR0cDovL3hlc3Qv
--MzMwEIYOaHR0cDovL3hlc3QvMzQwEIYOaHR0cDovL3hlc3QvMzUwEIYOaHR0cDov
--L3hlc3QvMzYwEIYOaHR0cDovL3hlc3QvMzcwEIYOaHR0cDovL3hlc3QvMzgwEIYO
--aHR0cDovL3hlc3QvMzkwEIYOaHR0cDovL3hlc3QvNDAwEIYOaHR0cDovL3hlc3Qv
--NDEwEIYOaHR0cDovL3hlc3QvNDIwEIYOaHR0cDovL3hlc3QvNDMwEIYOaHR0cDov
--L3hlc3QvNDQwEIYOaHR0cDovL3hlc3QvNDUwEIYOaHR0cDovL3hlc3QvNDYwEIYO
--aHR0cDovL3hlc3QvNDcwEIYOaHR0cDovL3hlc3QvNDgwEIYOaHR0cDovL3hlc3Qv
--NDkwEIYOaHR0cDovL3hlc3QvNTAwEIYOaHR0cDovL3hlc3QvNTEwEIYOaHR0cDov
--L3hlc3QvNTIwEIYOaHR0cDovL3hlc3QvNTMwEIYOaHR0cDovL3hlc3QvNTQwEIYO
--aHR0cDovL3hlc3QvNTUwEIYOaHR0cDovL3hlc3QvNTYwEIYOaHR0cDovL3hlc3Qv
--NTcwEIYOaHR0cDovL3hlc3QvNTgwEIYOaHR0cDovL3hlc3QvNTkwEIYOaHR0cDov
--L3hlc3QvNjAwEIYOaHR0cDovL3hlc3QvNjEwEIYOaHR0cDovL3hlc3QvNjIwEIYO
--aHR0cDovL3hlc3QvNjMwEIYOaHR0cDovL3hlc3QvNjQwEIYOaHR0cDovL3hlc3Qv
--NjUwEIYOaHR0cDovL3hlc3QvNjYwEIYOaHR0cDovL3hlc3QvNjcwEIYOaHR0cDov
--L3hlc3QvNjgwEIYOaHR0cDovL3hlc3QvNjkwEIYOaHR0cDovL3hlc3QvNzAwEIYO
--aHR0cDovL3hlc3QvNzEwEIYOaHR0cDovL3hlc3QvNzIwEIYOaHR0cDovL3hlc3Qv
--NzMwEIYOaHR0cDovL3hlc3QvNzQwEIYOaHR0cDovL3hlc3QvNzUwEIYOaHR0cDov
--L3hlc3QvNzYwEIYOaHR0cDovL3hlc3QvNzcwEIYOaHR0cDovL3hlc3QvNzgwEIYO
--aHR0cDovL3hlc3QvNzkwEIYOaHR0cDovL3hlc3QvODAwEIYOaHR0cDovL3hlc3Qv
--ODEwEIYOaHR0cDovL3hlc3QvODIwEIYOaHR0cDovL3hlc3QvODMwEIYOaHR0cDov
--L3hlc3QvODQwEIYOaHR0cDovL3hlc3QvODUwEIYOaHR0cDovL3hlc3QvODYwEIYO
--aHR0cDovL3hlc3QvODcwEIYOaHR0cDovL3hlc3QvODgwEIYOaHR0cDovL3hlc3Qv
--ODkwEIYOaHR0cDovL3hlc3QvOTAwEIYOaHR0cDovL3hlc3QvOTEwEIYOaHR0cDov
--L3hlc3QvOTIwEIYOaHR0cDovL3hlc3QvOTMwEIYOaHR0cDovL3hlc3QvOTQwEIYO
--aHR0cDovL3hlc3QvOTUwEIYOaHR0cDovL3hlc3QvOTYwEIYOaHR0cDovL3hlc3Qv
--OTcwEIYOaHR0cDovL3hlc3QvOTgwEIYOaHR0cDovL3hlc3QvOTkwEYYPaHR0cDov
--L3hlc3QvMTAwMBGGD2h0dHA6Ly94ZXN0LzEwMTARhg9odHRwOi8veGVzdC8xMDIw
--EYYPaHR0cDovL3hlc3QvMTAzMBGGD2h0dHA6Ly94ZXN0LzEwNDARhg9odHRwOi8v
--eGVzdC8xMDUwEYYPaHR0cDovL3hlc3QvMTA2MBGGD2h0dHA6Ly94ZXN0LzEwNzAR
--hg9odHRwOi8veGVzdC8xMDgwEYYPaHR0cDovL3hlc3QvMTA5MBGGD2h0dHA6Ly94
--ZXN0LzExMDARhg9odHRwOi8veGVzdC8xMTEwEYYPaHR0cDovL3hlc3QvMTEyMBGG
--D2h0dHA6Ly94ZXN0LzExMzARhg9odHRwOi8veGVzdC8xMTQwEYYPaHR0cDovL3hl
--c3QvMTE1MBGGD2h0dHA6Ly94ZXN0LzExNjARhg9odHRwOi8veGVzdC8xMTcwEYYP
--aHR0cDovL3hlc3QvMTE4MBGGD2h0dHA6Ly94ZXN0LzExOTARhg9odHRwOi8veGVz
--dC8xMjAwEYYPaHR0cDovL3hlc3QvMTIxMBGGD2h0dHA6Ly94ZXN0LzEyMjARhg9o
--dHRwOi8veGVzdC8xMjMwEYYPaHR0cDovL3hlc3QvMTI0MBGGD2h0dHA6Ly94ZXN0
--LzEyNTARhg9odHRwOi8veGVzdC8xMjYwEYYPaHR0cDovL3hlc3QvMTI3MBGGD2h0
--dHA6Ly94ZXN0LzEyODARhg9odHRwOi8veGVzdC8xMjkwEYYPaHR0cDovL3hlc3Qv
--MTMwMBGGD2h0dHA6Ly94ZXN0LzEzMTARhg9odHRwOi8veGVzdC8xMzIwEYYPaHR0
--cDovL3hlc3QvMTMzMBGGD2h0dHA6Ly94ZXN0LzEzNDARhg9odHRwOi8veGVzdC8x
--MzUwEYYPaHR0cDovL3hlc3QvMTM2MBGGD2h0dHA6Ly94ZXN0LzEzNzARhg9odHRw
--Oi8veGVzdC8xMzgwEYYPaHR0cDovL3hlc3QvMTM5MBGGD2h0dHA6Ly94ZXN0LzE0
--MDARhg9odHRwOi8veGVzdC8xNDEwEYYPaHR0cDovL3hlc3QvMTQyMBGGD2h0dHA6
--Ly94ZXN0LzE0MzARhg9odHRwOi8veGVzdC8xNDQwEYYPaHR0cDovL3hlc3QvMTQ1
--MBGGD2h0dHA6Ly94ZXN0LzE0NjARhg9odHRwOi8veGVzdC8xNDcwEYYPaHR0cDov
--L3hlc3QvMTQ4MBGGD2h0dHA6Ly94ZXN0LzE0OTARhg9odHRwOi8veGVzdC8xNTAw
--EYYPaHR0cDovL3hlc3QvMTUxMBGGD2h0dHA6Ly94ZXN0LzE1MjARhg9odHRwOi8v
--eGVzdC8xNTMwEYYPaHR0cDovL3hlc3QvMTU0MBGGD2h0dHA6Ly94ZXN0LzE1NTAR
--hg9odHRwOi8veGVzdC8xNTYwEYYPaHR0cDovL3hlc3QvMTU3MBGGD2h0dHA6Ly94
--ZXN0LzE1ODARhg9odHRwOi8veGVzdC8xNTkwEYYPaHR0cDovL3hlc3QvMTYwMBGG
--D2h0dHA6Ly94ZXN0LzE2MTARhg9odHRwOi8veGVzdC8xNjIwEYYPaHR0cDovL3hl
--c3QvMTYzMBGGD2h0dHA6Ly94ZXN0LzE2NDARhg9odHRwOi8veGVzdC8xNjUwEYYP
--aHR0cDovL3hlc3QvMTY2MBGGD2h0dHA6Ly94ZXN0LzE2NzARhg9odHRwOi8veGVz
--dC8xNjgwEYYPaHR0cDovL3hlc3QvMTY5MBGGD2h0dHA6Ly94ZXN0LzE3MDARhg9o
--dHRwOi8veGVzdC8xNzEwEYYPaHR0cDovL3hlc3QvMTcyMBGGD2h0dHA6Ly94ZXN0
--LzE3MzARhg9odHRwOi8veGVzdC8xNzQwEYYPaHR0cDovL3hlc3QvMTc1MBGGD2h0
--dHA6Ly94ZXN0LzE3NjARhg9odHRwOi8veGVzdC8xNzcwEYYPaHR0cDovL3hlc3Qv
--MTc4MBGGD2h0dHA6Ly94ZXN0LzE3OTARhg9odHRwOi8veGVzdC8xODAwEYYPaHR0
--cDovL3hlc3QvMTgxMBGGD2h0dHA6Ly94ZXN0LzE4MjARhg9odHRwOi8veGVzdC8x
--ODMwEYYPaHR0cDovL3hlc3QvMTg0MBGGD2h0dHA6Ly94ZXN0LzE4NTARhg9odHRw
--Oi8veGVzdC8xODYwEYYPaHR0cDovL3hlc3QvMTg3MBGGD2h0dHA6Ly94ZXN0LzE4
--ODARhg9odHRwOi8veGVzdC8xODkwEYYPaHR0cDovL3hlc3QvMTkwMBGGD2h0dHA6
--Ly94ZXN0LzE5MTARhg9odHRwOi8veGVzdC8xOTIwEYYPaHR0cDovL3hlc3QvMTkz
--MBGGD2h0dHA6Ly94ZXN0LzE5NDARhg9odHRwOi8veGVzdC8xOTUwEYYPaHR0cDov
--L3hlc3QvMTk2MBGGD2h0dHA6Ly94ZXN0LzE5NzARhg9odHRwOi8veGVzdC8xOTgw
--EYYPaHR0cDovL3hlc3QvMTk5MBGGD2h0dHA6Ly94ZXN0LzIwMDARhg9odHRwOi8v
--eGVzdC8yMDEwEYYPaHR0cDovL3hlc3QvMjAyMBGGD2h0dHA6Ly94ZXN0LzIwMzAR
--hg9odHRwOi8veGVzdC8yMDQwEYYPaHR0cDovL3hlc3QvMjA1MBGGD2h0dHA6Ly94
--ZXN0LzIwNjARhg9odHRwOi8veGVzdC8yMDcwEYYPaHR0cDovL3hlc3QvMjA4MBGG
--D2h0dHA6Ly94ZXN0LzIwOTARhg9odHRwOi8veGVzdC8yMTAwEYYPaHR0cDovL3hl
--c3QvMjExMBGGD2h0dHA6Ly94ZXN0LzIxMjARhg9odHRwOi8veGVzdC8yMTMwEYYP
--aHR0cDovL3hlc3QvMjE0MBGGD2h0dHA6Ly94ZXN0LzIxNTARhg9odHRwOi8veGVz
--dC8yMTYwEYYPaHR0cDovL3hlc3QvMjE3MBGGD2h0dHA6Ly94ZXN0LzIxODARhg9o
--dHRwOi8veGVzdC8yMTkwEYYPaHR0cDovL3hlc3QvMjIwMBGGD2h0dHA6Ly94ZXN0
--LzIyMTARhg9odHRwOi8veGVzdC8yMjIwEYYPaHR0cDovL3hlc3QvMjIzMBGGD2h0
--dHA6Ly94ZXN0LzIyNDARhg9odHRwOi8veGVzdC8yMjUwEYYPaHR0cDovL3hlc3Qv
--MjI2MBGGD2h0dHA6Ly94ZXN0LzIyNzARhg9odHRwOi8veGVzdC8yMjgwEYYPaHR0
--cDovL3hlc3QvMjI5MBGGD2h0dHA6Ly94ZXN0LzIzMDARhg9odHRwOi8veGVzdC8y
--MzEwEYYPaHR0cDovL3hlc3QvMjMyMBGGD2h0dHA6Ly94ZXN0LzIzMzARhg9odHRw
--Oi8veGVzdC8yMzQwEYYPaHR0cDovL3hlc3QvMjM1MBGGD2h0dHA6Ly94ZXN0LzIz
--NjARhg9odHRwOi8veGVzdC8yMzcwEYYPaHR0cDovL3hlc3QvMjM4MBGGD2h0dHA6
--Ly94ZXN0LzIzOTARhg9odHRwOi8veGVzdC8yNDAwEYYPaHR0cDovL3hlc3QvMjQx
--MBGGD2h0dHA6Ly94ZXN0LzI0MjARhg9odHRwOi8veGVzdC8yNDMwEYYPaHR0cDov
--L3hlc3QvMjQ0MBGGD2h0dHA6Ly94ZXN0LzI0NTARhg9odHRwOi8veGVzdC8yNDYw
--EYYPaHR0cDovL3hlc3QvMjQ3MBGGD2h0dHA6Ly94ZXN0LzI0ODARhg9odHRwOi8v
--eGVzdC8yNDkwEYYPaHR0cDovL3hlc3QvMjUwMBGGD2h0dHA6Ly94ZXN0LzI1MTAR
--hg9odHRwOi8veGVzdC8yNTIwEYYPaHR0cDovL3hlc3QvMjUzMBGGD2h0dHA6Ly94
--ZXN0LzI1NDARhg9odHRwOi8veGVzdC8yNTUwEYYPaHR0cDovL3hlc3QvMjU2MBGG
--D2h0dHA6Ly94ZXN0LzI1NzARhg9odHRwOi8veGVzdC8yNTgwEYYPaHR0cDovL3hl
--c3QvMjU5MBGGD2h0dHA6Ly94ZXN0LzI2MDARhg9odHRwOi8veGVzdC8yNjEwEYYP
--aHR0cDovL3hlc3QvMjYyMBGGD2h0dHA6Ly94ZXN0LzI2MzARhg9odHRwOi8veGVz
--dC8yNjQwEYYPaHR0cDovL3hlc3QvMjY1MBGGD2h0dHA6Ly94ZXN0LzI2NjARhg9o
--dHRwOi8veGVzdC8yNjcwEYYPaHR0cDovL3hlc3QvMjY4MBGGD2h0dHA6Ly94ZXN0
--LzI2OTARhg9odHRwOi8veGVzdC8yNzAwEYYPaHR0cDovL3hlc3QvMjcxMBGGD2h0
--dHA6Ly94ZXN0LzI3MjARhg9odHRwOi8veGVzdC8yNzMwEYYPaHR0cDovL3hlc3Qv
--Mjc0MBGGD2h0dHA6Ly94ZXN0LzI3NTARhg9odHRwOi8veGVzdC8yNzYwEYYPaHR0
--cDovL3hlc3QvMjc3MBGGD2h0dHA6Ly94ZXN0LzI3ODARhg9odHRwOi8veGVzdC8y
--NzkwEYYPaHR0cDovL3hlc3QvMjgwMBGGD2h0dHA6Ly94ZXN0LzI4MTARhg9odHRw
--Oi8veGVzdC8yODIwEYYPaHR0cDovL3hlc3QvMjgzMBGGD2h0dHA6Ly94ZXN0LzI4
--NDARhg9odHRwOi8veGVzdC8yODUwEYYPaHR0cDovL3hlc3QvMjg2MBGGD2h0dHA6
--Ly94ZXN0LzI4NzARhg9odHRwOi8veGVzdC8yODgwEYYPaHR0cDovL3hlc3QvMjg5
--MBGGD2h0dHA6Ly94ZXN0LzI5MDARhg9odHRwOi8veGVzdC8yOTEwEYYPaHR0cDov
--L3hlc3QvMjkyMBGGD2h0dHA6Ly94ZXN0LzI5MzARhg9odHRwOi8veGVzdC8yOTQw
--EYYPaHR0cDovL3hlc3QvMjk1MBGGD2h0dHA6Ly94ZXN0LzI5NjARhg9odHRwOi8v
--eGVzdC8yOTcwEYYPaHR0cDovL3hlc3QvMjk4MBGGD2h0dHA6Ly94ZXN0LzI5OTAR
--hg9odHRwOi8veGVzdC8zMDAwEYYPaHR0cDovL3hlc3QvMzAxMBGGD2h0dHA6Ly94
--ZXN0LzMwMjARhg9odHRwOi8veGVzdC8zMDMwEYYPaHR0cDovL3hlc3QvMzA0MBGG
--D2h0dHA6Ly94ZXN0LzMwNTARhg9odHRwOi8veGVzdC8zMDYwEYYPaHR0cDovL3hl
--c3QvMzA3MBGGD2h0dHA6Ly94ZXN0LzMwODARhg9odHRwOi8veGVzdC8zMDkwEYYP
--aHR0cDovL3hlc3QvMzEwMBGGD2h0dHA6Ly94ZXN0LzMxMTARhg9odHRwOi8veGVz
--dC8zMTIwEYYPaHR0cDovL3hlc3QvMzEzMBGGD2h0dHA6Ly94ZXN0LzMxNDARhg9o
--dHRwOi8veGVzdC8zMTUwEYYPaHR0cDovL3hlc3QvMzE2MBGGD2h0dHA6Ly94ZXN0
--LzMxNzARhg9odHRwOi8veGVzdC8zMTgwEYYPaHR0cDovL3hlc3QvMzE5MBGGD2h0
--dHA6Ly94ZXN0LzMyMDARhg9odHRwOi8veGVzdC8zMjEwEYYPaHR0cDovL3hlc3Qv
--MzIyMBGGD2h0dHA6Ly94ZXN0LzMyMzARhg9odHRwOi8veGVzdC8zMjQwEYYPaHR0
--cDovL3hlc3QvMzI1MBGGD2h0dHA6Ly94ZXN0LzMyNjARhg9odHRwOi8veGVzdC8z
--MjcwEYYPaHR0cDovL3hlc3QvMzI4MBGGD2h0dHA6Ly94ZXN0LzMyOTARhg9odHRw
--Oi8veGVzdC8zMzAwEYYPaHR0cDovL3hlc3QvMzMxMBGGD2h0dHA6Ly94ZXN0LzMz
--MjARhg9odHRwOi8veGVzdC8zMzMwEYYPaHR0cDovL3hlc3QvMzM0MBGGD2h0dHA6
--Ly94ZXN0LzMzNTARhg9odHRwOi8veGVzdC8zMzYwEYYPaHR0cDovL3hlc3QvMzM3
--MBGGD2h0dHA6Ly94ZXN0LzMzODARhg9odHRwOi8veGVzdC8zMzkwEYYPaHR0cDov
--L3hlc3QvMzQwMBGGD2h0dHA6Ly94ZXN0LzM0MTARhg9odHRwOi8veGVzdC8zNDIw
--EYYPaHR0cDovL3hlc3QvMzQzMBGGD2h0dHA6Ly94ZXN0LzM0NDARhg9odHRwOi8v
--eGVzdC8zNDUwEYYPaHR0cDovL3hlc3QvMzQ2MBGGD2h0dHA6Ly94ZXN0LzM0NzAR
--hg9odHRwOi8veGVzdC8zNDgwEYYPaHR0cDovL3hlc3QvMzQ5MBGGD2h0dHA6Ly94
--ZXN0LzM1MDARhg9odHRwOi8veGVzdC8zNTEwEYYPaHR0cDovL3hlc3QvMzUyMBGG
--D2h0dHA6Ly94ZXN0LzM1MzARhg9odHRwOi8veGVzdC8zNTQwEYYPaHR0cDovL3hl
--c3QvMzU1MBGGD2h0dHA6Ly94ZXN0LzM1NjARhg9odHRwOi8veGVzdC8zNTcwEYYP
--aHR0cDovL3hlc3QvMzU4MBGGD2h0dHA6Ly94ZXN0LzM1OTARhg9odHRwOi8veGVz
--dC8zNjAwEYYPaHR0cDovL3hlc3QvMzYxMBGGD2h0dHA6Ly94ZXN0LzM2MjARhg9o
--dHRwOi8veGVzdC8zNjMwEYYPaHR0cDovL3hlc3QvMzY0MBGGD2h0dHA6Ly94ZXN0
--LzM2NTARhg9odHRwOi8veGVzdC8zNjYwEYYPaHR0cDovL3hlc3QvMzY3MBGGD2h0
--dHA6Ly94ZXN0LzM2ODARhg9odHRwOi8veGVzdC8zNjkwEYYPaHR0cDovL3hlc3Qv
--MzcwMBGGD2h0dHA6Ly94ZXN0LzM3MTARhg9odHRwOi8veGVzdC8zNzIwEYYPaHR0
--cDovL3hlc3QvMzczMBGGD2h0dHA6Ly94ZXN0LzM3NDARhg9odHRwOi8veGVzdC8z
--NzUwEYYPaHR0cDovL3hlc3QvMzc2MBGGD2h0dHA6Ly94ZXN0LzM3NzARhg9odHRw
--Oi8veGVzdC8zNzgwEYYPaHR0cDovL3hlc3QvMzc5MBGGD2h0dHA6Ly94ZXN0LzM4
--MDARhg9odHRwOi8veGVzdC8zODEwEYYPaHR0cDovL3hlc3QvMzgyMBGGD2h0dHA6
--Ly94ZXN0LzM4MzARhg9odHRwOi8veGVzdC8zODQwEYYPaHR0cDovL3hlc3QvMzg1
--MBGGD2h0dHA6Ly94ZXN0LzM4NjARhg9odHRwOi8veGVzdC8zODcwEYYPaHR0cDov
--L3hlc3QvMzg4MBGGD2h0dHA6Ly94ZXN0LzM4OTARhg9odHRwOi8veGVzdC8zOTAw
--EYYPaHR0cDovL3hlc3QvMzkxMBGGD2h0dHA6Ly94ZXN0LzM5MjARhg9odHRwOi8v
--eGVzdC8zOTMwEYYPaHR0cDovL3hlc3QvMzk0MBGGD2h0dHA6Ly94ZXN0LzM5NTAR
--hg9odHRwOi8veGVzdC8zOTYwEYYPaHR0cDovL3hlc3QvMzk3MBGGD2h0dHA6Ly94
--ZXN0LzM5ODARhg9odHRwOi8veGVzdC8zOTkwEYYPaHR0cDovL3hlc3QvNDAwMBGG
--D2h0dHA6Ly94ZXN0LzQwMTARhg9odHRwOi8veGVzdC80MDIwEYYPaHR0cDovL3hl
--c3QvNDAzMBGGD2h0dHA6Ly94ZXN0LzQwNDARhg9odHRwOi8veGVzdC80MDUwEYYP
--aHR0cDovL3hlc3QvNDA2MBGGD2h0dHA6Ly94ZXN0LzQwNzARhg9odHRwOi8veGVz
--dC80MDgwEYYPaHR0cDovL3hlc3QvNDA5MBGGD2h0dHA6Ly94ZXN0LzQxMDARhg9o
--dHRwOi8veGVzdC80MTEwEYYPaHR0cDovL3hlc3QvNDEyMBGGD2h0dHA6Ly94ZXN0
--LzQxMzARhg9odHRwOi8veGVzdC80MTQwEYYPaHR0cDovL3hlc3QvNDE1MBGGD2h0
--dHA6Ly94ZXN0LzQxNjARhg9odHRwOi8veGVzdC80MTcwEYYPaHR0cDovL3hlc3Qv
--NDE4MBGGD2h0dHA6Ly94ZXN0LzQxOTARhg9odHRwOi8veGVzdC80MjAwEYYPaHR0
--cDovL3hlc3QvNDIxMBGGD2h0dHA6Ly94ZXN0LzQyMjARhg9odHRwOi8veGVzdC80
--MjMwEYYPaHR0cDovL3hlc3QvNDI0MBGGD2h0dHA6Ly94ZXN0LzQyNTARhg9odHRw
--Oi8veGVzdC80MjYwEYYPaHR0cDovL3hlc3QvNDI3MBGGD2h0dHA6Ly94ZXN0LzQy
--ODARhg9odHRwOi8veGVzdC80MjkwEYYPaHR0cDovL3hlc3QvNDMwMBGGD2h0dHA6
--Ly94ZXN0LzQzMTARhg9odHRwOi8veGVzdC80MzIwEYYPaHR0cDovL3hlc3QvNDMz
--MBGGD2h0dHA6Ly94ZXN0LzQzNDARhg9odHRwOi8veGVzdC80MzUwEYYPaHR0cDov
--L3hlc3QvNDM2MBGGD2h0dHA6Ly94ZXN0LzQzNzARhg9odHRwOi8veGVzdC80Mzgw
--EYYPaHR0cDovL3hlc3QvNDM5MBGGD2h0dHA6Ly94ZXN0LzQ0MDARhg9odHRwOi8v
--eGVzdC80NDEwEYYPaHR0cDovL3hlc3QvNDQyMBGGD2h0dHA6Ly94ZXN0LzQ0MzAR
--hg9odHRwOi8veGVzdC80NDQwEYYPaHR0cDovL3hlc3QvNDQ1MBGGD2h0dHA6Ly94
--ZXN0LzQ0NjARhg9odHRwOi8veGVzdC80NDcwEYYPaHR0cDovL3hlc3QvNDQ4MBGG
--D2h0dHA6Ly94ZXN0LzQ0OTARhg9odHRwOi8veGVzdC80NTAwEYYPaHR0cDovL3hl
--c3QvNDUxMBGGD2h0dHA6Ly94ZXN0LzQ1MjARhg9odHRwOi8veGVzdC80NTMwEYYP
--aHR0cDovL3hlc3QvNDU0MBGGD2h0dHA6Ly94ZXN0LzQ1NTARhg9odHRwOi8veGVz
--dC80NTYwEYYPaHR0cDovL3hlc3QvNDU3MBGGD2h0dHA6Ly94ZXN0LzQ1ODARhg9o
--dHRwOi8veGVzdC80NTkwEYYPaHR0cDovL3hlc3QvNDYwMBGGD2h0dHA6Ly94ZXN0
--LzQ2MTARhg9odHRwOi8veGVzdC80NjIwEYYPaHR0cDovL3hlc3QvNDYzMBGGD2h0
--dHA6Ly94ZXN0LzQ2NDARhg9odHRwOi8veGVzdC80NjUwEYYPaHR0cDovL3hlc3Qv
--NDY2MBGGD2h0dHA6Ly94ZXN0LzQ2NzARhg9odHRwOi8veGVzdC80NjgwEYYPaHR0
--cDovL3hlc3QvNDY5MBGGD2h0dHA6Ly94ZXN0LzQ3MDARhg9odHRwOi8veGVzdC80
--NzEwEYYPaHR0cDovL3hlc3QvNDcyMBGGD2h0dHA6Ly94ZXN0LzQ3MzARhg9odHRw
--Oi8veGVzdC80NzQwEYYPaHR0cDovL3hlc3QvNDc1MBGGD2h0dHA6Ly94ZXN0LzQ3
--NjARhg9odHRwOi8veGVzdC80NzcwEYYPaHR0cDovL3hlc3QvNDc4MBGGD2h0dHA6
--Ly94ZXN0LzQ3OTARhg9odHRwOi8veGVzdC80ODAwEYYPaHR0cDovL3hlc3QvNDgx
--MBGGD2h0dHA6Ly94ZXN0LzQ4MjARhg9odHRwOi8veGVzdC80ODMwEYYPaHR0cDov
--L3hlc3QvNDg0MBGGD2h0dHA6Ly94ZXN0LzQ4NTARhg9odHRwOi8veGVzdC80ODYw
--EYYPaHR0cDovL3hlc3QvNDg3MBGGD2h0dHA6Ly94ZXN0LzQ4ODARhg9odHRwOi8v
--eGVzdC80ODkwEYYPaHR0cDovL3hlc3QvNDkwMBGGD2h0dHA6Ly94ZXN0LzQ5MTAR
--hg9odHRwOi8veGVzdC80OTIwEYYPaHR0cDovL3hlc3QvNDkzMBGGD2h0dHA6Ly94
--ZXN0LzQ5NDARhg9odHRwOi8veGVzdC80OTUwEYYPaHR0cDovL3hlc3QvNDk2MBGG
--D2h0dHA6Ly94ZXN0LzQ5NzARhg9odHRwOi8veGVzdC80OTgwEYYPaHR0cDovL3hl
--c3QvNDk5MBGGD2h0dHA6Ly94ZXN0LzUwMDARhg9odHRwOi8veGVzdC81MDEwEYYP
--aHR0cDovL3hlc3QvNTAyMBGGD2h0dHA6Ly94ZXN0LzUwMzARhg9odHRwOi8veGVz
--dC81MDQwEYYPaHR0cDovL3hlc3QvNTA1MBGGD2h0dHA6Ly94ZXN0LzUwNjARhg9o
--dHRwOi8veGVzdC81MDcwEYYPaHR0cDovL3hlc3QvNTA4MBGGD2h0dHA6Ly94ZXN0
--LzUwOTARhg9odHRwOi8veGVzdC81MTAwEYYPaHR0cDovL3hlc3QvNTExMBGGD2h0
--dHA6Ly94ZXN0LzUxMjARhg9odHRwOi8veGVzdC81MTMwEYYPaHR0cDovL3hlc3Qv
--NTE0MBGGD2h0dHA6Ly94ZXN0LzUxNTARhg9odHRwOi8veGVzdC81MTYwEYYPaHR0
--cDovL3hlc3QvNTE3MBGGD2h0dHA6Ly94ZXN0LzUxODARhg9odHRwOi8veGVzdC81
--MTkwEYYPaHR0cDovL3hlc3QvNTIwMBGGD2h0dHA6Ly94ZXN0LzUyMTARhg9odHRw
--Oi8veGVzdC81MjIwEYYPaHR0cDovL3hlc3QvNTIzMBGGD2h0dHA6Ly94ZXN0LzUy
--NDARhg9odHRwOi8veGVzdC81MjUwEYYPaHR0cDovL3hlc3QvNTI2MBGGD2h0dHA6
--Ly94ZXN0LzUyNzARhg9odHRwOi8veGVzdC81MjgwEYYPaHR0cDovL3hlc3QvNTI5
--MBGGD2h0dHA6Ly94ZXN0LzUzMDARhg9odHRwOi8veGVzdC81MzEwEYYPaHR0cDov
--L3hlc3QvNTMyMBGGD2h0dHA6Ly94ZXN0LzUzMzARhg9odHRwOi8veGVzdC81MzQw
--EYYPaHR0cDovL3hlc3QvNTM1MBGGD2h0dHA6Ly94ZXN0LzUzNjARhg9odHRwOi8v
--eGVzdC81MzcwEYYPaHR0cDovL3hlc3QvNTM4MBGGD2h0dHA6Ly94ZXN0LzUzOTAR
--hg9odHRwOi8veGVzdC81NDAwEYYPaHR0cDovL3hlc3QvNTQxMBGGD2h0dHA6Ly94
--ZXN0LzU0MjARhg9odHRwOi8veGVzdC81NDMwEYYPaHR0cDovL3hlc3QvNTQ0MBGG
--D2h0dHA6Ly94ZXN0LzU0NTARhg9odHRwOi8veGVzdC81NDYwEYYPaHR0cDovL3hl
--c3QvNTQ3MBGGD2h0dHA6Ly94ZXN0LzU0ODARhg9odHRwOi8veGVzdC81NDkwEYYP
--aHR0cDovL3hlc3QvNTUwMBGGD2h0dHA6Ly94ZXN0LzU1MTARhg9odHRwOi8veGVz
--dC81NTIwEYYPaHR0cDovL3hlc3QvNTUzMBGGD2h0dHA6Ly94ZXN0LzU1NDARhg9o
--dHRwOi8veGVzdC81NTUwEYYPaHR0cDovL3hlc3QvNTU2MBGGD2h0dHA6Ly94ZXN0
--LzU1NzARhg9odHRwOi8veGVzdC81NTgwEYYPaHR0cDovL3hlc3QvNTU5MBGGD2h0
--dHA6Ly94ZXN0LzU2MDARhg9odHRwOi8veGVzdC81NjEwEYYPaHR0cDovL3hlc3Qv
--NTYyMBGGD2h0dHA6Ly94ZXN0LzU2MzARhg9odHRwOi8veGVzdC81NjQwEYYPaHR0
--cDovL3hlc3QvNTY1MBGGD2h0dHA6Ly94ZXN0LzU2NjARhg9odHRwOi8veGVzdC81
--NjcwEYYPaHR0cDovL3hlc3QvNTY4MBGGD2h0dHA6Ly94ZXN0LzU2OTARhg9odHRw
--Oi8veGVzdC81NzAwEYYPaHR0cDovL3hlc3QvNTcxMBGGD2h0dHA6Ly94ZXN0LzU3
--MjARhg9odHRwOi8veGVzdC81NzMwEYYPaHR0cDovL3hlc3QvNTc0MBGGD2h0dHA6
--Ly94ZXN0LzU3NTARhg9odHRwOi8veGVzdC81NzYwEYYPaHR0cDovL3hlc3QvNTc3
--MBGGD2h0dHA6Ly94ZXN0LzU3ODARhg9odHRwOi8veGVzdC81NzkwEYYPaHR0cDov
--L3hlc3QvNTgwMBGGD2h0dHA6Ly94ZXN0LzU4MTARhg9odHRwOi8veGVzdC81ODIw
--EYYPaHR0cDovL3hlc3QvNTgzMBGGD2h0dHA6Ly94ZXN0LzU4NDARhg9odHRwOi8v
--eGVzdC81ODUwEYYPaHR0cDovL3hlc3QvNTg2MBGGD2h0dHA6Ly94ZXN0LzU4NzAR
--hg9odHRwOi8veGVzdC81ODgwEYYPaHR0cDovL3hlc3QvNTg5MBGGD2h0dHA6Ly94
--ZXN0LzU5MDARhg9odHRwOi8veGVzdC81OTEwEYYPaHR0cDovL3hlc3QvNTkyMBGG
--D2h0dHA6Ly94ZXN0LzU5MzARhg9odHRwOi8veGVzdC81OTQwEYYPaHR0cDovL3hl
--c3QvNTk1MBGGD2h0dHA6Ly94ZXN0LzU5NjARhg9odHRwOi8veGVzdC81OTcwEYYP
--aHR0cDovL3hlc3QvNTk4MBGGD2h0dHA6Ly94ZXN0LzU5OTARhg9odHRwOi8veGVz
--dC82MDAwEYYPaHR0cDovL3hlc3QvNjAxMBGGD2h0dHA6Ly94ZXN0LzYwMjARhg9o
--dHRwOi8veGVzdC82MDMwEYYPaHR0cDovL3hlc3QvNjA0MBGGD2h0dHA6Ly94ZXN0
--LzYwNTARhg9odHRwOi8veGVzdC82MDYwEYYPaHR0cDovL3hlc3QvNjA3MBGGD2h0
--dHA6Ly94ZXN0LzYwODARhg9odHRwOi8veGVzdC82MDkwEYYPaHR0cDovL3hlc3Qv
--NjEwMBGGD2h0dHA6Ly94ZXN0LzYxMTARhg9odHRwOi8veGVzdC82MTIwEYYPaHR0
--cDovL3hlc3QvNjEzMBGGD2h0dHA6Ly94ZXN0LzYxNDARhg9odHRwOi8veGVzdC82
--MTUwEYYPaHR0cDovL3hlc3QvNjE2MBGGD2h0dHA6Ly94ZXN0LzYxNzARhg9odHRw
--Oi8veGVzdC82MTgwEYYPaHR0cDovL3hlc3QvNjE5MBGGD2h0dHA6Ly94ZXN0LzYy
--MDARhg9odHRwOi8veGVzdC82MjEwEYYPaHR0cDovL3hlc3QvNjIyMBGGD2h0dHA6
--Ly94ZXN0LzYyMzARhg9odHRwOi8veGVzdC82MjQwEYYPaHR0cDovL3hlc3QvNjI1
--MBGGD2h0dHA6Ly94ZXN0LzYyNjARhg9odHRwOi8veGVzdC82MjcwEYYPaHR0cDov
--L3hlc3QvNjI4MBGGD2h0dHA6Ly94ZXN0LzYyOTARhg9odHRwOi8veGVzdC82MzAw
--EYYPaHR0cDovL3hlc3QvNjMxMBGGD2h0dHA6Ly94ZXN0LzYzMjARhg9odHRwOi8v
--eGVzdC82MzMwEYYPaHR0cDovL3hlc3QvNjM0MBGGD2h0dHA6Ly94ZXN0LzYzNTAR
--hg9odHRwOi8veGVzdC82MzYwEYYPaHR0cDovL3hlc3QvNjM3MBGGD2h0dHA6Ly94
--ZXN0LzYzODARhg9odHRwOi8veGVzdC82MzkwEYYPaHR0cDovL3hlc3QvNjQwMBGG
--D2h0dHA6Ly94ZXN0LzY0MTARhg9odHRwOi8veGVzdC82NDIwEYYPaHR0cDovL3hl
--c3QvNjQzMBGGD2h0dHA6Ly94ZXN0LzY0NDARhg9odHRwOi8veGVzdC82NDUwEYYP
--aHR0cDovL3hlc3QvNjQ2MBGGD2h0dHA6Ly94ZXN0LzY0NzARhg9odHRwOi8veGVz
--dC82NDgwEYYPaHR0cDovL3hlc3QvNjQ5MBGGD2h0dHA6Ly94ZXN0LzY1MDARhg9o
--dHRwOi8veGVzdC82NTEwEYYPaHR0cDovL3hlc3QvNjUyMBGGD2h0dHA6Ly94ZXN0
--LzY1MzARhg9odHRwOi8veGVzdC82NTQwEYYPaHR0cDovL3hlc3QvNjU1MBGGD2h0
--dHA6Ly94ZXN0LzY1NjARhg9odHRwOi8veGVzdC82NTcwEYYPaHR0cDovL3hlc3Qv
--NjU4MBGGD2h0dHA6Ly94ZXN0LzY1OTARhg9odHRwOi8veGVzdC82NjAwEYYPaHR0
--cDovL3hlc3QvNjYxMBGGD2h0dHA6Ly94ZXN0LzY2MjARhg9odHRwOi8veGVzdC82
--NjMwEYYPaHR0cDovL3hlc3QvNjY0MBGGD2h0dHA6Ly94ZXN0LzY2NTARhg9odHRw
--Oi8veGVzdC82NjYwEYYPaHR0cDovL3hlc3QvNjY3MBGGD2h0dHA6Ly94ZXN0LzY2
--ODARhg9odHRwOi8veGVzdC82NjkwEYYPaHR0cDovL3hlc3QvNjcwMBGGD2h0dHA6
--Ly94ZXN0LzY3MTARhg9odHRwOi8veGVzdC82NzIwEYYPaHR0cDovL3hlc3QvNjcz
--MBGGD2h0dHA6Ly94ZXN0LzY3NDARhg9odHRwOi8veGVzdC82NzUwEYYPaHR0cDov
--L3hlc3QvNjc2MBGGD2h0dHA6Ly94ZXN0LzY3NzARhg9odHRwOi8veGVzdC82Nzgw
--EYYPaHR0cDovL3hlc3QvNjc5MBGGD2h0dHA6Ly94ZXN0LzY4MDARhg9odHRwOi8v
--eGVzdC82ODEwEYYPaHR0cDovL3hlc3QvNjgyMBGGD2h0dHA6Ly94ZXN0LzY4MzAR
--hg9odHRwOi8veGVzdC82ODQwEYYPaHR0cDovL3hlc3QvNjg1MBGGD2h0dHA6Ly94
--ZXN0LzY4NjARhg9odHRwOi8veGVzdC82ODcwEYYPaHR0cDovL3hlc3QvNjg4MBGG
--D2h0dHA6Ly94ZXN0LzY4OTARhg9odHRwOi8veGVzdC82OTAwEYYPaHR0cDovL3hl
--c3QvNjkxMBGGD2h0dHA6Ly94ZXN0LzY5MjARhg9odHRwOi8veGVzdC82OTMwEYYP
--aHR0cDovL3hlc3QvNjk0MBGGD2h0dHA6Ly94ZXN0LzY5NTARhg9odHRwOi8veGVz
--dC82OTYwEYYPaHR0cDovL3hlc3QvNjk3MBGGD2h0dHA6Ly94ZXN0LzY5ODARhg9o
--dHRwOi8veGVzdC82OTkwEYYPaHR0cDovL3hlc3QvNzAwMBGGD2h0dHA6Ly94ZXN0
--LzcwMTARhg9odHRwOi8veGVzdC83MDIwEYYPaHR0cDovL3hlc3QvNzAzMBGGD2h0
--dHA6Ly94ZXN0LzcwNDARhg9odHRwOi8veGVzdC83MDUwEYYPaHR0cDovL3hlc3Qv
--NzA2MBGGD2h0dHA6Ly94ZXN0LzcwNzARhg9odHRwOi8veGVzdC83MDgwEYYPaHR0
--cDovL3hlc3QvNzA5MBGGD2h0dHA6Ly94ZXN0LzcxMDARhg9odHRwOi8veGVzdC83
--MTEwEYYPaHR0cDovL3hlc3QvNzEyMBGGD2h0dHA6Ly94ZXN0LzcxMzARhg9odHRw
--Oi8veGVzdC83MTQwEYYPaHR0cDovL3hlc3QvNzE1MBGGD2h0dHA6Ly94ZXN0Lzcx
--NjARhg9odHRwOi8veGVzdC83MTcwEYYPaHR0cDovL3hlc3QvNzE4MBGGD2h0dHA6
--Ly94ZXN0LzcxOTARhg9odHRwOi8veGVzdC83MjAwEYYPaHR0cDovL3hlc3QvNzIx
--MBGGD2h0dHA6Ly94ZXN0LzcyMjARhg9odHRwOi8veGVzdC83MjMwEYYPaHR0cDov
--L3hlc3QvNzI0MBGGD2h0dHA6Ly94ZXN0LzcyNTARhg9odHRwOi8veGVzdC83MjYw
--EYYPaHR0cDovL3hlc3QvNzI3MBGGD2h0dHA6Ly94ZXN0LzcyODARhg9odHRwOi8v
--eGVzdC83MjkwEYYPaHR0cDovL3hlc3QvNzMwMBGGD2h0dHA6Ly94ZXN0LzczMTAR
--hg9odHRwOi8veGVzdC83MzIwEYYPaHR0cDovL3hlc3QvNzMzMBGGD2h0dHA6Ly94
--ZXN0LzczNDARhg9odHRwOi8veGVzdC83MzUwEYYPaHR0cDovL3hlc3QvNzM2MBGG
--D2h0dHA6Ly94ZXN0LzczNzARhg9odHRwOi8veGVzdC83MzgwEYYPaHR0cDovL3hl
--c3QvNzM5MBGGD2h0dHA6Ly94ZXN0Lzc0MDARhg9odHRwOi8veGVzdC83NDEwEYYP
--aHR0cDovL3hlc3QvNzQyMBGGD2h0dHA6Ly94ZXN0Lzc0MzARhg9odHRwOi8veGVz
--dC83NDQwEYYPaHR0cDovL3hlc3QvNzQ1MBGGD2h0dHA6Ly94ZXN0Lzc0NjARhg9o
--dHRwOi8veGVzdC83NDcwEYYPaHR0cDovL3hlc3QvNzQ4MBGGD2h0dHA6Ly94ZXN0
--Lzc0OTARhg9odHRwOi8veGVzdC83NTAwEYYPaHR0cDovL3hlc3QvNzUxMBGGD2h0
--dHA6Ly94ZXN0Lzc1MjARhg9odHRwOi8veGVzdC83NTMwEYYPaHR0cDovL3hlc3Qv
--NzU0MBGGD2h0dHA6Ly94ZXN0Lzc1NTARhg9odHRwOi8veGVzdC83NTYwEYYPaHR0
--cDovL3hlc3QvNzU3MBGGD2h0dHA6Ly94ZXN0Lzc1ODARhg9odHRwOi8veGVzdC83
--NTkwEYYPaHR0cDovL3hlc3QvNzYwMBGGD2h0dHA6Ly94ZXN0Lzc2MTARhg9odHRw
--Oi8veGVzdC83NjIwEYYPaHR0cDovL3hlc3QvNzYzMBGGD2h0dHA6Ly94ZXN0Lzc2
--NDARhg9odHRwOi8veGVzdC83NjUwEYYPaHR0cDovL3hlc3QvNzY2MBGGD2h0dHA6
--Ly94ZXN0Lzc2NzARhg9odHRwOi8veGVzdC83NjgwEYYPaHR0cDovL3hlc3QvNzY5
--MBGGD2h0dHA6Ly94ZXN0Lzc3MDARhg9odHRwOi8veGVzdC83NzEwEYYPaHR0cDov
--L3hlc3QvNzcyMBGGD2h0dHA6Ly94ZXN0Lzc3MzARhg9odHRwOi8veGVzdC83NzQw
--EYYPaHR0cDovL3hlc3QvNzc1MBGGD2h0dHA6Ly94ZXN0Lzc3NjARhg9odHRwOi8v
--eGVzdC83NzcwEYYPaHR0cDovL3hlc3QvNzc4MBGGD2h0dHA6Ly94ZXN0Lzc3OTAR
--hg9odHRwOi8veGVzdC83ODAwEYYPaHR0cDovL3hlc3QvNzgxMBGGD2h0dHA6Ly94
--ZXN0Lzc4MjARhg9odHRwOi8veGVzdC83ODMwEYYPaHR0cDovL3hlc3QvNzg0MBGG
--D2h0dHA6Ly94ZXN0Lzc4NTARhg9odHRwOi8veGVzdC83ODYwEYYPaHR0cDovL3hl
--c3QvNzg3MBGGD2h0dHA6Ly94ZXN0Lzc4ODARhg9odHRwOi8veGVzdC83ODkwEYYP
--aHR0cDovL3hlc3QvNzkwMBGGD2h0dHA6Ly94ZXN0Lzc5MTARhg9odHRwOi8veGVz
--dC83OTIwEYYPaHR0cDovL3hlc3QvNzkzMBGGD2h0dHA6Ly94ZXN0Lzc5NDARhg9o
--dHRwOi8veGVzdC83OTUwEYYPaHR0cDovL3hlc3QvNzk2MBGGD2h0dHA6Ly94ZXN0
--Lzc5NzARhg9odHRwOi8veGVzdC83OTgwEYYPaHR0cDovL3hlc3QvNzk5MBGGD2h0
--dHA6Ly94ZXN0LzgwMDARhg9odHRwOi8veGVzdC84MDEwEYYPaHR0cDovL3hlc3Qv
--ODAyMBGGD2h0dHA6Ly94ZXN0LzgwMzARhg9odHRwOi8veGVzdC84MDQwEYYPaHR0
--cDovL3hlc3QvODA1MBGGD2h0dHA6Ly94ZXN0LzgwNjARhg9odHRwOi8veGVzdC84
--MDcwEYYPaHR0cDovL3hlc3QvODA4MBGGD2h0dHA6Ly94ZXN0LzgwOTARhg9odHRw
--Oi8veGVzdC84MTAwEYYPaHR0cDovL3hlc3QvODExMBGGD2h0dHA6Ly94ZXN0Lzgx
--MjARhg9odHRwOi8veGVzdC84MTMwEYYPaHR0cDovL3hlc3QvODE0MBGGD2h0dHA6
--Ly94ZXN0LzgxNTARhg9odHRwOi8veGVzdC84MTYwEYYPaHR0cDovL3hlc3QvODE3
--MBGGD2h0dHA6Ly94ZXN0LzgxODARhg9odHRwOi8veGVzdC84MTkwEYYPaHR0cDov
--L3hlc3QvODIwMBGGD2h0dHA6Ly94ZXN0LzgyMTARhg9odHRwOi8veGVzdC84MjIw
--EYYPaHR0cDovL3hlc3QvODIzMBGGD2h0dHA6Ly94ZXN0LzgyNDARhg9odHRwOi8v
--eGVzdC84MjUwEYYPaHR0cDovL3hlc3QvODI2MBGGD2h0dHA6Ly94ZXN0LzgyNzAR
--hg9odHRwOi8veGVzdC84MjgwEYYPaHR0cDovL3hlc3QvODI5MBGGD2h0dHA6Ly94
--ZXN0LzgzMDARhg9odHRwOi8veGVzdC84MzEwEYYPaHR0cDovL3hlc3QvODMyMBGG
--D2h0dHA6Ly94ZXN0LzgzMzARhg9odHRwOi8veGVzdC84MzQwEYYPaHR0cDovL3hl
--c3QvODM1MBGGD2h0dHA6Ly94ZXN0LzgzNjARhg9odHRwOi8veGVzdC84MzcwEYYP
--aHR0cDovL3hlc3QvODM4MBGGD2h0dHA6Ly94ZXN0LzgzOTARhg9odHRwOi8veGVz
--dC84NDAwEYYPaHR0cDovL3hlc3QvODQxMBGGD2h0dHA6Ly94ZXN0Lzg0MjARhg9o
--dHRwOi8veGVzdC84NDMwEYYPaHR0cDovL3hlc3QvODQ0MBGGD2h0dHA6Ly94ZXN0
--Lzg0NTARhg9odHRwOi8veGVzdC84NDYwEYYPaHR0cDovL3hlc3QvODQ3MBGGD2h0
--dHA6Ly94ZXN0Lzg0ODARhg9odHRwOi8veGVzdC84NDkwEYYPaHR0cDovL3hlc3Qv
--ODUwMBGGD2h0dHA6Ly94ZXN0Lzg1MTARhg9odHRwOi8veGVzdC84NTIwEYYPaHR0
--cDovL3hlc3QvODUzMBGGD2h0dHA6Ly94ZXN0Lzg1NDARhg9odHRwOi8veGVzdC84
--NTUwEYYPaHR0cDovL3hlc3QvODU2MBGGD2h0dHA6Ly94ZXN0Lzg1NzARhg9odHRw
--Oi8veGVzdC84NTgwEYYPaHR0cDovL3hlc3QvODU5MBGGD2h0dHA6Ly94ZXN0Lzg2
--MDARhg9odHRwOi8veGVzdC84NjEwEYYPaHR0cDovL3hlc3QvODYyMBGGD2h0dHA6
--Ly94ZXN0Lzg2MzARhg9odHRwOi8veGVzdC84NjQwEYYPaHR0cDovL3hlc3QvODY1
--MBGGD2h0dHA6Ly94ZXN0Lzg2NjARhg9odHRwOi8veGVzdC84NjcwEYYPaHR0cDov
--L3hlc3QvODY4MBGGD2h0dHA6Ly94ZXN0Lzg2OTARhg9odHRwOi8veGVzdC84NzAw
--EYYPaHR0cDovL3hlc3QvODcxMBGGD2h0dHA6Ly94ZXN0Lzg3MjARhg9odHRwOi8v
--eGVzdC84NzMwEYYPaHR0cDovL3hlc3QvODc0MBGGD2h0dHA6Ly94ZXN0Lzg3NTAR
--hg9odHRwOi8veGVzdC84NzYwEYYPaHR0cDovL3hlc3QvODc3MBGGD2h0dHA6Ly94
--ZXN0Lzg3ODARhg9odHRwOi8veGVzdC84NzkwEYYPaHR0cDovL3hlc3QvODgwMBGG
--D2h0dHA6Ly94ZXN0Lzg4MTARhg9odHRwOi8veGVzdC84ODIwEYYPaHR0cDovL3hl
--c3QvODgzMBGGD2h0dHA6Ly94ZXN0Lzg4NDARhg9odHRwOi8veGVzdC84ODUwEYYP
--aHR0cDovL3hlc3QvODg2MBGGD2h0dHA6Ly94ZXN0Lzg4NzARhg9odHRwOi8veGVz
--dC84ODgwEYYPaHR0cDovL3hlc3QvODg5MBGGD2h0dHA6Ly94ZXN0Lzg5MDARhg9o
--dHRwOi8veGVzdC84OTEwEYYPaHR0cDovL3hlc3QvODkyMBGGD2h0dHA6Ly94ZXN0
--Lzg5MzARhg9odHRwOi8veGVzdC84OTQwEYYPaHR0cDovL3hlc3QvODk1MBGGD2h0
--dHA6Ly94ZXN0Lzg5NjARhg9odHRwOi8veGVzdC84OTcwEYYPaHR0cDovL3hlc3Qv
--ODk4MBGGD2h0dHA6Ly94ZXN0Lzg5OTARhg9odHRwOi8veGVzdC85MDAwEYYPaHR0
--cDovL3hlc3QvOTAxMBGGD2h0dHA6Ly94ZXN0LzkwMjARhg9odHRwOi8veGVzdC85
--MDMwEYYPaHR0cDovL3hlc3QvOTA0MBGGD2h0dHA6Ly94ZXN0LzkwNTARhg9odHRw
--Oi8veGVzdC85MDYwEYYPaHR0cDovL3hlc3QvOTA3MBGGD2h0dHA6Ly94ZXN0Lzkw
--ODARhg9odHRwOi8veGVzdC85MDkwEYYPaHR0cDovL3hlc3QvOTEwMBGGD2h0dHA6
--Ly94ZXN0LzkxMTARhg9odHRwOi8veGVzdC85MTIwEYYPaHR0cDovL3hlc3QvOTEz
--MBGGD2h0dHA6Ly94ZXN0LzkxNDARhg9odHRwOi8veGVzdC85MTUwEYYPaHR0cDov
--L3hlc3QvOTE2MBGGD2h0dHA6Ly94ZXN0LzkxNzARhg9odHRwOi8veGVzdC85MTgw
--EYYPaHR0cDovL3hlc3QvOTE5MBGGD2h0dHA6Ly94ZXN0LzkyMDARhg9odHRwOi8v
--eGVzdC85MjEwEYYPaHR0cDovL3hlc3QvOTIyMBGGD2h0dHA6Ly94ZXN0LzkyMzAR
--hg9odHRwOi8veGVzdC85MjQwEYYPaHR0cDovL3hlc3QvOTI1MBGGD2h0dHA6Ly94
--ZXN0LzkyNjARhg9odHRwOi8veGVzdC85MjcwEYYPaHR0cDovL3hlc3QvOTI4MBGG
--D2h0dHA6Ly94ZXN0LzkyOTARhg9odHRwOi8veGVzdC85MzAwEYYPaHR0cDovL3hl
--c3QvOTMxMBGGD2h0dHA6Ly94ZXN0LzkzMjARhg9odHRwOi8veGVzdC85MzMwEYYP
--aHR0cDovL3hlc3QvOTM0MBGGD2h0dHA6Ly94ZXN0LzkzNTARhg9odHRwOi8veGVz
--dC85MzYwEYYPaHR0cDovL3hlc3QvOTM3MBGGD2h0dHA6Ly94ZXN0LzkzODARhg9o
--dHRwOi8veGVzdC85MzkwEYYPaHR0cDovL3hlc3QvOTQwMBGGD2h0dHA6Ly94ZXN0
--Lzk0MTARhg9odHRwOi8veGVzdC85NDIwEYYPaHR0cDovL3hlc3QvOTQzMBGGD2h0
--dHA6Ly94ZXN0Lzk0NDARhg9odHRwOi8veGVzdC85NDUwEYYPaHR0cDovL3hlc3Qv
--OTQ2MBGGD2h0dHA6Ly94ZXN0Lzk0NzARhg9odHRwOi8veGVzdC85NDgwEYYPaHR0
--cDovL3hlc3QvOTQ5MBGGD2h0dHA6Ly94ZXN0Lzk1MDARhg9odHRwOi8veGVzdC85
--NTEwEYYPaHR0cDovL3hlc3QvOTUyMBGGD2h0dHA6Ly94ZXN0Lzk1MzARhg9odHRw
--Oi8veGVzdC85NTQwEYYPaHR0cDovL3hlc3QvOTU1MBGGD2h0dHA6Ly94ZXN0Lzk1
--NjARhg9odHRwOi8veGVzdC85NTcwEYYPaHR0cDovL3hlc3QvOTU4MBGGD2h0dHA6
--Ly94ZXN0Lzk1OTARhg9odHRwOi8veGVzdC85NjAwEYYPaHR0cDovL3hlc3QvOTYx
--MBGGD2h0dHA6Ly94ZXN0Lzk2MjARhg9odHRwOi8veGVzdC85NjMwEYYPaHR0cDov
--L3hlc3QvOTY0MBGGD2h0dHA6Ly94ZXN0Lzk2NTARhg9odHRwOi8veGVzdC85NjYw
--EYYPaHR0cDovL3hlc3QvOTY3MBGGD2h0dHA6Ly94ZXN0Lzk2ODARhg9odHRwOi8v
--eGVzdC85NjkwEYYPaHR0cDovL3hlc3QvOTcwMBGGD2h0dHA6Ly94ZXN0Lzk3MTAR
--hg9odHRwOi8veGVzdC85NzIwEYYPaHR0cDovL3hlc3QvOTczMBGGD2h0dHA6Ly94
--ZXN0Lzk3NDARhg9odHRwOi8veGVzdC85NzUwEYYPaHR0cDovL3hlc3QvOTc2MBGG
--D2h0dHA6Ly94ZXN0Lzk3NzARhg9odHRwOi8veGVzdC85NzgwEYYPaHR0cDovL3hl
--c3QvOTc5MBGGD2h0dHA6Ly94ZXN0Lzk4MDARhg9odHRwOi8veGVzdC85ODEwEYYP
--aHR0cDovL3hlc3QvOTgyMBGGD2h0dHA6Ly94ZXN0Lzk4MzARhg9odHRwOi8veGVz
--dC85ODQwEYYPaHR0cDovL3hlc3QvOTg1MBGGD2h0dHA6Ly94ZXN0Lzk4NjARhg9o
--dHRwOi8veGVzdC85ODcwEYYPaHR0cDovL3hlc3QvOTg4MBGGD2h0dHA6Ly94ZXN0
--Lzk4OTARhg9odHRwOi8veGVzdC85OTAwEYYPaHR0cDovL3hlc3QvOTkxMBGGD2h0
--dHA6Ly94ZXN0Lzk5MjARhg9odHRwOi8veGVzdC85OTMwEYYPaHR0cDovL3hlc3Qv
--OTk0MBGGD2h0dHA6Ly94ZXN0Lzk5NTARhg9odHRwOi8veGVzdC85OTYwEYYPaHR0
--cDovL3hlc3QvOTk3MBGGD2h0dHA6Ly94ZXN0Lzk5ODARhg9odHRwOi8veGVzdC85
--OTkwEoYQaHR0cDovL3hlc3QvMTAwMDAShhBodHRwOi8veGVzdC8xMDAxMBKGEGh0
--dHA6Ly94ZXN0LzEwMDIwEoYQaHR0cDovL3hlc3QvMTAwMzAShhBodHRwOi8veGVz
--dC8xMDA0MBKGEGh0dHA6Ly94ZXN0LzEwMDUwEoYQaHR0cDovL3hlc3QvMTAwNjAS
--hhBodHRwOi8veGVzdC8xMDA3MBKGEGh0dHA6Ly94ZXN0LzEwMDgwEoYQaHR0cDov
--L3hlc3QvMTAwOTAShhBodHRwOi8veGVzdC8xMDEwMBKGEGh0dHA6Ly94ZXN0LzEw
--MTEwEoYQaHR0cDovL3hlc3QvMTAxMjAShhBodHRwOi8veGVzdC8xMDEzMBKGEGh0
--dHA6Ly94ZXN0LzEwMTQwEoYQaHR0cDovL3hlc3QvMTAxNTAShhBodHRwOi8veGVz
--dC8xMDE2MBKGEGh0dHA6Ly94ZXN0LzEwMTcwEoYQaHR0cDovL3hlc3QvMTAxODAS
--hhBodHRwOi8veGVzdC8xMDE5MBKGEGh0dHA6Ly94ZXN0LzEwMjAwEoYQaHR0cDov
--L3hlc3QvMTAyMTAShhBodHRwOi8veGVzdC8xMDIyMBKGEGh0dHA6Ly94ZXN0LzEw
--MjMwEoYQaHR0cDovL3hlc3QvMTAyNDANBgkqhkiG9w0BAQsFAAOCAQEADhRMCQwL
--+tquyKQTn32cU2LAUXp6iHiQgfkv5obgczEdhEV/ebpqnO1cqrDd0DKpaXga5Dz6
--U4oVM33MRUxlTtQBSUfDAgRYqMJgqwGLNa3bV59oEisOxrCAFRHe5F1upbKANGUz
--6UwNkwlu5fT5Bsx+PS65eYCcg5LsFWLmr05Af1WiddHyr6EQKCvD9u86Fjpxmyis
--ZdSr/0qnqoKjjRg258FMeoeLOZCl4iPDmeZdEU9mSBJpckc+57szUTjF4iCqJBLO
--RP7U8zg3aYXYQTJBMPey8HbOS9pDlYcrGJr6QME2cazUj2jM7Y/2qQoplJhxaa/i
--hWJlNqN3rkOvgQ==
-------END CERTIFICATE-----
--
--Certificate:
-- Data:
-- Version: 3 (0x2)
-- Serial Number:
-- 3c:e5:fc:81:88:59:a8:50:16:c1:7f:d7:e5:2a:e5:96:7f:c2:f6:f5
-- Signature Algorithm: sha256WithRSAEncryption
-- Issuer: CN=Root
-- Validity
-- Not Before: Oct 5 12:00:00 2021 GMT
-- Not After : Oct 5 12:00:00 2022 GMT
-- Subject: CN=Root
-- Subject Public Key Info:
-- Public Key Algorithm: rsaEncryption
-- RSA Public-Key: (2048 bit)
-- Modulus:
-- 00:cc:7a:cf:ec:bd:a0:01:c3:26:51:d8:28:ae:80:
-- b6:0b:d2:76:d7:04:86:18:ac:fd:f2:8f:64:e7:92:
-- d6:d0:42:32:4f:cd:d0:4d:d0:ac:71:9a:73:80:0a:
-- 04:70:20:a3:2f:a0:9b:f4:3e:19:cf:69:54:b5:be:
-- 85:dd:6e:b2:0b:14:df:27:bf:2c:a1:bb:b2:a7:23:
-- 0c:fb:ae:78:69:6b:1a:6e:7c:38:7f:15:5d:e5:cf:
-- 27:32:56:2a:f1:87:fe:3a:16:73:e6:dd:83:f2:f2:
-- ae:31:c8:93:d2:49:b7:b1:71:f5:55:de:bb:85:cd:
-- cb:19:74:1d:61:49:da:83:44:ec:4c:5e:aa:d5:8b:
-- 32:1a:db:77:d5:b1:83:8c:00:b9:55:b7:64:78:5c:
-- 87:c9:68:58:bd:de:af:50:e2:bb:bd:32:cd:fa:3d:
-- df:3b:3d:93:10:16:b6:6d:90:1d:d7:7d:e9:ea:7e:
-- 1e:2e:c8:10:a4:14:ad:62:72:af:65:95:1f:a7:6e:
-- 81:84:9f:df:85:4e:c0:3e:7f:8c:02:0a:f0:65:58:
-- 84:7c:6a:e1:53:af:3c:f1:7a:b9:33:c8:e7:f9:ed:
-- 92:46:00:50:62:f0:89:41:57:1e:81:d1:04:12:b3:
-- fc:25:60:17:5c:0b:eb:a9:46:4a:03:39:16:11:4d:
-- e1:7b
-- Exponent: 65537 (0x10001)
-- X509v3 extensions:
-- X509v3 Subject Key Identifier:
-- B6:C2:EF:9F:D1:29:CB:0F:89:8C:4C:52:D4:BD:40:B7:11:B7:71:DD
-- X509v3 Authority Key Identifier:
-- keyid:B6:C2:EF:9F:D1:29:CB:0F:89:8C:4C:52:D4:BD:40:B7:11:B7:71:DD
--
-- Authority Information Access:
-- CA Issuers - URI:http://url-for-aia/Root.cer
--
-- X509v3 CRL Distribution Points:
--
-- Full Name:
-- URI:http://url-for-crl/Root.crl
--
-- X509v3 Key Usage: critical
-- Certificate Sign, CRL Sign
-- X509v3 Basic Constraints: critical
-- CA:TRUE
-- Signature Algorithm: sha256WithRSAEncryption
-- 3a:c4:f6:50:32:77:14:e2:a8:69:9b:ad:85:a0:fa:95:08:d2:
-- 22:cb:d3:aa:53:94:e5:1f:92:fa:d5:7b:c8:a5:b6:13:15:42:
-- 42:2c:ce:48:e9:f1:55:c7:cd:f4:29:b6:46:e9:08:81:8c:83:
-- 82:c5:d4:f7:1e:90:3c:2d:78:39:7f:be:e8:30:5e:f7:d4:72:
-- e4:db:0a:09:49:c0:ce:83:66:c0:16:73:f4:cf:67:ad:74:e3:
-- 10:60:72:16:77:4a:c8:08:88:93:62:c0:4a:23:0b:74:3e:63:
-- 98:9c:54:1d:34:d5:b6:da:bc:7c:5a:f2:68:22:e2:d9:15:12:
-- 84:04:f6:3e:b3:ac:97:bc:b4:54:93:3c:d4:0b:25:e4:c1:34:
-- 5a:98:bc:aa:de:78:bb:12:3f:33:82:a2:bf:5f:82:e6:9e:ad:
-- 85:21:21:d9:9d:41:5e:4f:72:a3:16:8d:7d:b4:1d:26:d8:77:
-- d8:29:22:13:a2:f6:d7:9f:1c:60:2f:17:9e:fd:f4:63:a3:c6:
-- ed:e3:47:43:b7:73:39:82:97:18:fa:4b:db:2e:ac:d3:7b:54:
-- cd:f8:d0:eb:70:13:03:8a:4b:9b:90:62:4e:b0:34:22:49:ec:
-- 78:2a:47:97:60:13:03:23:ed:09:ff:a8:00:59:6a:2c:d1:2e:
-- d0:93:0b:59
-------BEGIN CERTIFICATE-----
--MIIDeDCCAmCgAwIBAgIUPOX8gYhZqFAWwX/X5Srlln/C9vUwDQYJKoZIhvcNAQEL
--BQAwDzENMAsGA1UEAwwEUm9vdDAeFw0yMTEwMDUxMjAwMDBaFw0yMjEwMDUxMjAw
--MDBaMA8xDTALBgNVBAMMBFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
--AoIBAQDMes/svaABwyZR2CiugLYL0nbXBIYYrP3yj2TnktbQQjJPzdBN0KxxmnOA
--CgRwIKMvoJv0PhnPaVS1voXdbrILFN8nvyyhu7KnIwz7rnhpaxpufDh/FV3lzycy
--Virxh/46FnPm3YPy8q4xyJPSSbexcfVV3ruFzcsZdB1hSdqDROxMXqrVizIa23fV
--sYOMALlVt2R4XIfJaFi93q9Q4ru9Ms36Pd87PZMQFrZtkB3Xfenqfh4uyBCkFK1i
--cq9llR+nboGEn9+FTsA+f4wCCvBlWIR8auFTrzzxerkzyOf57ZJGAFBi8IlBVx6B
--0QQSs/wlYBdcC+upRkoDORYRTeF7AgMBAAGjgcswgcgwHQYDVR0OBBYEFLbC75/R
--KcsPiYxMUtS9QLcRt3HdMB8GA1UdIwQYMBaAFLbC75/RKcsPiYxMUtS9QLcRt3Hd
--MDcGCCsGAQUFBwEBBCswKTAnBggrBgEFBQcwAoYbaHR0cDovL3VybC1mb3ItYWlh
--L1Jvb3QuY2VyMCwGA1UdHwQlMCMwIaAfoB2GG2h0dHA6Ly91cmwtZm9yLWNybC9S
--b290LmNybDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG
--9w0BAQsFAAOCAQEAOsT2UDJ3FOKoaZuthaD6lQjSIsvTqlOU5R+S+tV7yKW2ExVC
--QizOSOnxVcfN9Cm2RukIgYyDgsXU9x6QPC14OX++6DBe99Ry5NsKCUnAzoNmwBZz
--9M9nrXTjEGByFndKyAiIk2LASiMLdD5jmJxUHTTVttq8fFryaCLi2RUShAT2PrOs
--l7y0VJM81Asl5ME0Wpi8qt54uxI/M4Kiv1+C5p6thSEh2Z1BXk9yoxaNfbQdJth3
--2CkiE6L2158cYC8Xnv30Y6PG7eNHQ7dzOYKXGPpL2y6s03tUzfjQ63ATA4pLm5Bi
--TrA0IknseCpHl2ATAyPtCf+oAFlqLNEu0JMLWQ==
-------END CERTIFICATE-----
-diff --git a/net/data/verify_certificate_chain_unittest/many-names/ok-different-types-dns.test b/net/data/verify_certificate_chain_unittest/many-names/ok-different-types-dns.test
-deleted file mode 100644
-index 96c5f8535640c..0000000000000
---- a/net/data/verify_certificate_chain_unittest/many-names/ok-different-types-dns.test
-+++ /dev/null
-@@ -1,5 +0,0 @@
--chain: ok-different-types-dns.pem
--last_cert_trust: TRUSTED_ANCHOR
--utc_time: DEFAULT
--key_purpose: SERVER_AUTH
--expected_errors:
-diff --git a/net/data/verify_certificate_chain_unittest/many-names/ok-different-types-ips.pem b/net/data/verify_certificate_chain_unittest/many-names/ok-different-types-ips.pem
-deleted file mode 100644
-index 08135876c9eb9..0000000000000
---- a/net/data/verify_certificate_chain_unittest/many-names/ok-different-types-ips.pem
-+++ /dev/null
-@@ -1,8813 +0,0 @@
--[Created by: generate-chains.py]
--
--A chain containing a large number of name constraints and names,
--but of different types, thus not triggering the limit.
--
--Certificate:
-- Data:
-- Version: 3 (0x2)
-- Serial Number:
-- 2f:ab:b4:3d:dc:c0:77:80:2a:03:09:ad:43:74:02:bf:98:d8:dd
-- Signature Algorithm: sha256WithRSAEncryption
-- Issuer: CN=Intermediate
-- Validity
-- Not Before: Oct 5 12:00:00 2021 GMT
-- Not After : Oct 5 12:00:00 2022 GMT
-- Subject: CN=t0
-- Subject Public Key Info:
-- Public Key Algorithm: rsaEncryption
-- RSA Public-Key: (2048 bit)
-- Modulus:
-- 00:db:2c:53:01:ce:f9:1a:83:36:52:51:2a:5b:42:
-- 63:de:32:75:11:6a:7d:b0:a1:e4:77:47:9b:71:e5:
-- a6:2d:64:d7:ae:5b:04:ed:7a:3f:c7:f6:ca:2b:2b:
-- ad:cd:6c:88:a5:8e:36:fb:e7:a2:22:b5:7d:54:79:
-- e9:d5:7a:5b:ca:2b:29:6c:0d:84:0a:10:c4:21:b6:
-- 58:98:bb:0d:b6:0c:8d:56:5b:2c:85:59:07:ca:06:
-- 46:36:25:1a:29:8e:c4:39:b7:c3:31:ce:6e:49:c2:
-- 01:cf:b0:3b:27:43:8a:e3:d5:06:1f:2d:93:9d:dd:
-- 7a:45:65:6d:fd:b4:b1:c0:10:59:42:f2:1e:8f:ce:
-- 43:ac:97:25:c1:7c:e2:51:e1:44:35:5b:94:aa:03:
-- 6e:da:71:2f:25:7f:58:30:01:e1:12:17:1e:f2:aa:
-- 6c:22:80:b1:c9:65:ea:77:95:b3:07:c4:f7:72:38:
-- 34:fe:a0:43:33:4c:66:6d:a1:e8:a1:04:bc:6f:14:
-- 39:39:44:2e:38:37:74:c9:0a:21:85:91:21:b7:4e:
-- ba:b0:99:4a:76:98:7b:58:ca:1c:d3:b0:40:c3:d9:
-- 2a:75:fb:eb:19:ea:e3:1a:98:31:52:97:e9:7f:a4:
-- 7b:21:7f:2f:dc:62:86:8f:fd:fd:a8:88:e8:4b:44:
-- 52:bd
-- Exponent: 65537 (0x10001)
-- X509v3 extensions:
-- X509v3 Subject Key Identifier:
-- 3B:B4:05:CC:AA:BA:51:3D:FC:F2:F9:1E:25:53:72:E1:3A:F2:9A:DF
-- X509v3 Authority Key Identifier:
-- keyid:92:11:3F:AC:11:96:C7:66:37:CF:83:5A:24:F0:3A:77:AF:33:8D:7F
--
-- Authority Information Access:
-- CA Issuers - URI:http://url-for-aia/Intermediate.cer
--
-- X509v3 CRL Distribution Points:
--
-- Full Name:
-- URI:http://url-for-crl/Intermediate.crl
--
-- X509v3 Key Usage: critical
-- Digital Signature, Key Encipherment
-- X509v3 Extended Key Usage:
-- TLS Web Server Authentication, TLS Web Client Authentication
-- X509v3 Subject Alternative Name:
-- IP Address:10.0.0.0, IP Address:10.0.0.1, IP Address:10.0.0.2, IP Address:10.0.0.3, IP Address:10.0.0.4, IP Address:10.0.0.5, IP Address:10.0.0.6, IP Address:10.0.0.7, IP Address:10.0.0.8, IP Address:10.0.0.9, IP Address:10.0.0.10, IP Address:10.0.0.11, IP Address:10.0.0.12, IP Address:10.0.0.13, IP Address:10.0.0.14, IP Address:10.0.0.15, IP Address:10.0.0.16, IP Address:10.0.0.17, IP Address:10.0.0.18, IP Address:10.0.0.19, IP Address:10.0.0.20, IP Address:10.0.0.21, IP Address:10.0.0.22, IP Address:10.0.0.23, IP Address:10.0.0.24, IP Address:10.0.0.25, IP Address:10.0.0.26, IP Address:10.0.0.27, IP Address:10.0.0.28, IP Address:10.0.0.29, IP Address:10.0.0.30, IP Address:10.0.0.31, IP Address:10.0.0.32, IP Address:10.0.0.33, IP Address:10.0.0.34, IP Address:10.0.0.35, IP Address:10.0.0.36, IP Address:10.0.0.37, IP Address:10.0.0.38, IP Address:10.0.0.39, IP Address:10.0.0.40, IP Address:10.0.0.41, IP Address:10.0.0.42, IP Address:10.0.0.43, IP Address:10.0.0.44, IP Address:10.0.0.45, IP Address:10.0.0.46, IP Address:10.0.0.47, IP Address:10.0.0.48, IP Address:10.0.0.49, IP Address:10.0.0.50, IP Address:10.0.0.51, IP Address:10.0.0.52, IP Address:10.0.0.53, IP Address:10.0.0.54, IP Address:10.0.0.55, IP Address:10.0.0.56, IP Address:10.0.0.57, IP Address:10.0.0.58, IP Address:10.0.0.59, IP Address:10.0.0.60, IP Address:10.0.0.61, IP Address:10.0.0.62, IP Address:10.0.0.63, IP Address:10.0.0.64, IP Address:10.0.0.65, IP Address:10.0.0.66, IP Address:10.0.0.67, IP Address:10.0.0.68, IP Address:10.0.0.69, IP Address:10.0.0.70, IP Address:10.0.0.71, IP Address:10.0.0.72, IP Address:10.0.0.73, IP Address:10.0.0.74, IP Address:10.0.0.75, IP Address:10.0.0.76, IP Address:10.0.0.77, IP Address:10.0.0.78, IP Address:10.0.0.79, IP Address:10.0.0.80, IP Address:10.0.0.81, IP Address:10.0.0.82, IP Address:10.0.0.83, IP Address:10.0.0.84, IP Address:10.0.0.85, IP Address:10.0.0.86, IP Address:10.0.0.87, IP Address:10.0.0.88, IP Address:10.0.0.89, IP Address:10.0.0.90, IP Address:10.0.0.91, IP Address:10.0.0.92, IP Address:10.0.0.93, IP Address:10.0.0.94, IP Address:10.0.0.95, IP Address:10.0.0.96, IP Address:10.0.0.97, IP Address:10.0.0.98, IP Address:10.0.0.99, IP Address:10.0.0.100, IP Address:10.0.0.101, IP Address:10.0.0.102, IP Address:10.0.0.103, IP Address:10.0.0.104, IP Address:10.0.0.105, IP Address:10.0.0.106, IP Address:10.0.0.107, IP Address:10.0.0.108, IP Address:10.0.0.109, IP Address:10.0.0.110, IP Address:10.0.0.111, IP Address:10.0.0.112, IP Address:10.0.0.113, IP Address:10.0.0.114, IP Address:10.0.0.115, IP Address:10.0.0.116, IP Address:10.0.0.117, IP Address:10.0.0.118, IP Address:10.0.0.119, IP Address:10.0.0.120, IP Address:10.0.0.121, IP Address:10.0.0.122, IP Address:10.0.0.123, IP Address:10.0.0.124, IP Address:10.0.0.125, IP Address:10.0.0.126, IP Address:10.0.0.127, IP Address:10.0.0.128, IP Address:10.0.0.129, IP Address:10.0.0.130, IP Address:10.0.0.131, IP Address:10.0.0.132, IP Address:10.0.0.133, IP Address:10.0.0.134, IP Address:10.0.0.135, IP Address:10.0.0.136, IP Address:10.0.0.137, IP Address:10.0.0.138, IP Address:10.0.0.139, IP Address:10.0.0.140, IP Address:10.0.0.141, IP Address:10.0.0.142, IP Address:10.0.0.143, IP Address:10.0.0.144, IP Address:10.0.0.145, IP Address:10.0.0.146, IP Address:10.0.0.147, IP Address:10.0.0.148, IP Address:10.0.0.149, IP Address:10.0.0.150, IP Address:10.0.0.151, IP Address:10.0.0.152, IP Address:10.0.0.153, IP Address:10.0.0.154, IP Address:10.0.0.155, IP Address:10.0.0.156, IP Address:10.0.0.157, IP Address:10.0.0.158, IP Address:10.0.0.159, IP Address:10.0.0.160, IP Address:10.0.0.161, IP Address:10.0.0.162, IP Address:10.0.0.163, IP Address:10.0.0.164, IP Address:10.0.0.165, IP Address:10.0.0.166, IP Address:10.0.0.167, IP Address:10.0.0.168, IP Address:10.0.0.169, IP Address:10.0.0.170, IP Address:10.0.0.171, IP Address:10.0.0.172, IP Address:10.0.0.173, IP Address:10.0.0.174, IP Address:10.0.0.175, IP Address:10.0.0.176, IP Address:10.0.0.177, IP Address:10.0.0.178, IP Address:10.0.0.179, IP Address:10.0.0.180, IP Address:10.0.0.181, IP Address:10.0.0.182, IP Address:10.0.0.183, IP Address:10.0.0.184, IP Address:10.0.0.185, IP Address:10.0.0.186, IP Address:10.0.0.187, IP Address:10.0.0.188, IP Address:10.0.0.189, IP Address:10.0.0.190, IP Address:10.0.0.191, IP Address:10.0.0.192, IP Address:10.0.0.193, IP Address:10.0.0.194, IP Address:10.0.0.195, IP Address:10.0.0.196, IP Address:10.0.0.197, IP Address:10.0.0.198, IP Address:10.0.0.199, IP Address:10.0.0.200, IP Address:10.0.0.201, IP Address:10.0.0.202, IP Address:10.0.0.203, IP Address:10.0.0.204, IP Address:10.0.0.205, IP Address:10.0.0.206, IP Address:10.0.0.207, IP Address:10.0.0.208, IP Address:10.0.0.209, IP Address:10.0.0.210, IP Address:10.0.0.211, IP Address:10.0.0.212, IP Address:10.0.0.213, IP Address:10.0.0.214, IP Address:10.0.0.215, IP Address:10.0.0.216, IP Address:10.0.0.217, IP Address:10.0.0.218, IP Address:10.0.0.219, IP Address:10.0.0.220, IP Address:10.0.0.221, IP Address:10.0.0.222, IP Address:10.0.0.223, IP Address:10.0.0.224, IP Address:10.0.0.225, IP Address:10.0.0.226, IP Address:10.0.0.227, IP Address:10.0.0.228, IP Address:10.0.0.229, IP Address:10.0.0.230, IP Address:10.0.0.231, IP Address:10.0.0.232, IP Address:10.0.0.233, IP Address:10.0.0.234, IP Address:10.0.0.235, IP Address:10.0.0.236, IP Address:10.0.0.237, IP Address:10.0.0.238, IP Address:10.0.0.239, IP Address:10.0.0.240, IP Address:10.0.0.241, IP Address:10.0.0.242, IP Address:10.0.0.243, IP Address:10.0.0.244, IP Address:10.0.0.245, IP Address:10.0.0.246, IP Address:10.0.0.247, IP Address:10.0.0.248, IP Address:10.0.0.249, IP Address:10.0.0.250, IP Address:10.0.0.251, IP Address:10.0.0.252, IP Address:10.0.0.253, IP Address:10.0.0.254, IP Address:10.0.0.255, IP Address:10.0.1.0, IP Address:10.0.1.1, IP Address:10.0.1.2, IP Address:10.0.1.3, IP Address:10.0.1.4, IP Address:10.0.1.5, IP Address:10.0.1.6, IP Address:10.0.1.7, IP Address:10.0.1.8, IP Address:10.0.1.9, IP Address:10.0.1.10, IP Address:10.0.1.11, IP Address:10.0.1.12, IP Address:10.0.1.13, IP Address:10.0.1.14, IP Address:10.0.1.15, IP Address:10.0.1.16, IP Address:10.0.1.17, IP Address:10.0.1.18, IP Address:10.0.1.19, IP Address:10.0.1.20, IP Address:10.0.1.21, IP Address:10.0.1.22, IP Address:10.0.1.23, IP Address:10.0.1.24, IP Address:10.0.1.25, IP Address:10.0.1.26, IP Address:10.0.1.27, IP Address:10.0.1.28, IP Address:10.0.1.29, IP Address:10.0.1.30, IP Address:10.0.1.31, IP Address:10.0.1.32, IP Address:10.0.1.33, IP Address:10.0.1.34, IP Address:10.0.1.35, IP Address:10.0.1.36, IP Address:10.0.1.37, IP Address:10.0.1.38, IP Address:10.0.1.39, IP Address:10.0.1.40, IP Address:10.0.1.41, IP Address:10.0.1.42, IP Address:10.0.1.43, IP Address:10.0.1.44, IP Address:10.0.1.45, IP Address:10.0.1.46, IP Address:10.0.1.47, IP Address:10.0.1.48, IP Address:10.0.1.49, IP Address:10.0.1.50, IP Address:10.0.1.51, IP Address:10.0.1.52, IP Address:10.0.1.53, IP Address:10.0.1.54, IP Address:10.0.1.55, IP Address:10.0.1.56, IP Address:10.0.1.57, IP Address:10.0.1.58, IP Address:10.0.1.59, IP Address:10.0.1.60, IP Address:10.0.1.61, IP Address:10.0.1.62, IP Address:10.0.1.63, IP Address:10.0.1.64, IP Address:10.0.1.65, IP Address:10.0.1.66, IP Address:10.0.1.67, IP Address:10.0.1.68, IP Address:10.0.1.69, IP Address:10.0.1.70, IP Address:10.0.1.71, IP Address:10.0.1.72, IP Address:10.0.1.73, IP Address:10.0.1.74, IP Address:10.0.1.75, IP Address:10.0.1.76, IP Address:10.0.1.77, IP Address:10.0.1.78, IP Address:10.0.1.79, IP Address:10.0.1.80, IP Address:10.0.1.81, IP Address:10.0.1.82, IP Address:10.0.1.83, IP Address:10.0.1.84, IP Address:10.0.1.85, IP Address:10.0.1.86, IP Address:10.0.1.87, IP Address:10.0.1.88, IP Address:10.0.1.89, IP Address:10.0.1.90, IP Address:10.0.1.91, IP Address:10.0.1.92, IP Address:10.0.1.93, IP Address:10.0.1.94, IP Address:10.0.1.95, IP Address:10.0.1.96, IP Address:10.0.1.97, IP Address:10.0.1.98, IP Address:10.0.1.99, IP Address:10.0.1.100, IP Address:10.0.1.101, IP Address:10.0.1.102, IP Address:10.0.1.103, IP Address:10.0.1.104, IP Address:10.0.1.105, IP Address:10.0.1.106, IP Address:10.0.1.107, IP Address:10.0.1.108, IP Address:10.0.1.109, IP Address:10.0.1.110, IP Address:10.0.1.111, IP Address:10.0.1.112, IP Address:10.0.1.113, IP Address:10.0.1.114, IP Address:10.0.1.115, IP Address:10.0.1.116, IP Address:10.0.1.117, IP Address:10.0.1.118, IP Address:10.0.1.119, IP Address:10.0.1.120, IP Address:10.0.1.121, IP Address:10.0.1.122, IP Address:10.0.1.123, IP Address:10.0.1.124, IP Address:10.0.1.125, IP Address:10.0.1.126, IP Address:10.0.1.127, IP Address:10.0.1.128, IP Address:10.0.1.129, IP Address:10.0.1.130, IP Address:10.0.1.131, IP Address:10.0.1.132, IP Address:10.0.1.133, IP Address:10.0.1.134, IP Address:10.0.1.135, IP Address:10.0.1.136, IP Address:10.0.1.137, IP Address:10.0.1.138, IP Address:10.0.1.139, IP Address:10.0.1.140, IP Address:10.0.1.141, IP Address:10.0.1.142, IP Address:10.0.1.143, IP Address:10.0.1.144, IP Address:10.0.1.145, IP Address:10.0.1.146, IP Address:10.0.1.147, IP Address:10.0.1.148, IP Address:10.0.1.149, IP Address:10.0.1.150, IP Address:10.0.1.151, IP Address:10.0.1.152, IP Address:10.0.1.153, IP Address:10.0.1.154, IP Address:10.0.1.155, IP Address:10.0.1.156, IP Address:10.0.1.157, IP Address:10.0.1.158, IP Address:10.0.1.159, IP Address:10.0.1.160, IP Address:10.0.1.161, IP Address:10.0.1.162, IP Address:10.0.1.163, IP Address:10.0.1.164, IP Address:10.0.1.165, IP Address:10.0.1.166, IP Address:10.0.1.167, IP Address:10.0.1.168, IP Address:10.0.1.169, IP Address:10.0.1.170, IP Address:10.0.1.171, IP Address:10.0.1.172, IP Address:10.0.1.173, IP Address:10.0.1.174, IP Address:10.0.1.175, IP Address:10.0.1.176, IP Address:10.0.1.177, IP Address:10.0.1.178, IP Address:10.0.1.179, IP Address:10.0.1.180, IP Address:10.0.1.181, IP Address:10.0.1.182, IP Address:10.0.1.183, IP Address:10.0.1.184, IP Address:10.0.1.185, IP Address:10.0.1.186, IP Address:10.0.1.187, IP Address:10.0.1.188, IP Address:10.0.1.189, IP Address:10.0.1.190, IP Address:10.0.1.191, IP Address:10.0.1.192, IP Address:10.0.1.193, IP Address:10.0.1.194, IP Address:10.0.1.195, IP Address:10.0.1.196, IP Address:10.0.1.197, IP Address:10.0.1.198, IP Address:10.0.1.199, IP Address:10.0.1.200, IP Address:10.0.1.201, IP Address:10.0.1.202, IP Address:10.0.1.203, IP Address:10.0.1.204, IP Address:10.0.1.205, IP Address:10.0.1.206, IP Address:10.0.1.207, IP Address:10.0.1.208, IP Address:10.0.1.209, IP Address:10.0.1.210, IP Address:10.0.1.211, IP Address:10.0.1.212, IP Address:10.0.1.213, IP Address:10.0.1.214, IP Address:10.0.1.215, IP Address:10.0.1.216, IP Address:10.0.1.217, IP Address:10.0.1.218, IP Address:10.0.1.219, IP Address:10.0.1.220, IP Address:10.0.1.221, IP Address:10.0.1.222, IP Address:10.0.1.223, IP Address:10.0.1.224, IP Address:10.0.1.225, IP Address:10.0.1.226, IP Address:10.0.1.227, IP Address:10.0.1.228, IP Address:10.0.1.229, IP Address:10.0.1.230, IP Address:10.0.1.231, IP Address:10.0.1.232, IP Address:10.0.1.233, IP Address:10.0.1.234, IP Address:10.0.1.235, IP Address:10.0.1.236, IP Address:10.0.1.237, IP Address:10.0.1.238, IP Address:10.0.1.239, IP Address:10.0.1.240, IP Address:10.0.1.241, IP Address:10.0.1.242, IP Address:10.0.1.243, IP Address:10.0.1.244, IP Address:10.0.1.245, IP Address:10.0.1.246, IP Address:10.0.1.247, IP Address:10.0.1.248, IP Address:10.0.1.249, IP Address:10.0.1.250, IP Address:10.0.1.251, IP Address:10.0.1.252, IP Address:10.0.1.253, IP Address:10.0.1.254, IP Address:10.0.1.255, IP Address:10.0.2.0, IP Address:10.0.2.1, IP Address:10.0.2.2, IP Address:10.0.2.3, IP Address:10.0.2.4, IP Address:10.0.2.5, IP Address:10.0.2.6, IP Address:10.0.2.7, IP Address:10.0.2.8, IP Address:10.0.2.9, IP Address:10.0.2.10, IP Address:10.0.2.11, IP Address:10.0.2.12, IP Address:10.0.2.13, IP Address:10.0.2.14, IP Address:10.0.2.15, IP Address:10.0.2.16, IP Address:10.0.2.17, IP Address:10.0.2.18, IP Address:10.0.2.19, IP Address:10.0.2.20, IP Address:10.0.2.21, IP Address:10.0.2.22, IP Address:10.0.2.23, IP Address:10.0.2.24, IP Address:10.0.2.25, IP Address:10.0.2.26, IP Address:10.0.2.27, IP Address:10.0.2.28, IP Address:10.0.2.29, IP Address:10.0.2.30, IP Address:10.0.2.31, IP Address:10.0.2.32, IP Address:10.0.2.33, IP Address:10.0.2.34, IP Address:10.0.2.35, IP Address:10.0.2.36, IP Address:10.0.2.37, IP Address:10.0.2.38, IP Address:10.0.2.39, IP Address:10.0.2.40, IP Address:10.0.2.41, IP Address:10.0.2.42, IP Address:10.0.2.43, IP Address:10.0.2.44, IP Address:10.0.2.45, IP Address:10.0.2.46, IP Address:10.0.2.47, IP Address:10.0.2.48, IP Address:10.0.2.49, IP Address:10.0.2.50, IP Address:10.0.2.51, IP Address:10.0.2.52, IP Address:10.0.2.53, IP Address:10.0.2.54, IP Address:10.0.2.55, IP Address:10.0.2.56, IP Address:10.0.2.57, IP Address:10.0.2.58, IP Address:10.0.2.59, IP Address:10.0.2.60, IP Address:10.0.2.61, IP Address:10.0.2.62, IP Address:10.0.2.63, IP Address:10.0.2.64, IP Address:10.0.2.65, IP Address:10.0.2.66, IP Address:10.0.2.67, IP Address:10.0.2.68, IP Address:10.0.2.69, IP Address:10.0.2.70, IP Address:10.0.2.71, IP Address:10.0.2.72, IP Address:10.0.2.73, IP Address:10.0.2.74, IP Address:10.0.2.75, IP Address:10.0.2.76, IP Address:10.0.2.77, IP Address:10.0.2.78, IP Address:10.0.2.79, IP Address:10.0.2.80, IP Address:10.0.2.81, IP Address:10.0.2.82, IP Address:10.0.2.83, IP Address:10.0.2.84, IP Address:10.0.2.85, IP Address:10.0.2.86, IP Address:10.0.2.87, IP Address:10.0.2.88, IP Address:10.0.2.89, IP Address:10.0.2.90, IP Address:10.0.2.91, IP Address:10.0.2.92, IP Address:10.0.2.93, IP Address:10.0.2.94, IP Address:10.0.2.95, IP Address:10.0.2.96, IP Address:10.0.2.97, IP Address:10.0.2.98, IP Address:10.0.2.99, IP Address:10.0.2.100, IP Address:10.0.2.101, IP Address:10.0.2.102, IP Address:10.0.2.103, IP Address:10.0.2.104, IP Address:10.0.2.105, IP Address:10.0.2.106, IP Address:10.0.2.107, IP Address:10.0.2.108, IP Address:10.0.2.109, IP Address:10.0.2.110, IP Address:10.0.2.111, IP Address:10.0.2.112, IP Address:10.0.2.113, IP Address:10.0.2.114, IP Address:10.0.2.115, IP Address:10.0.2.116, IP Address:10.0.2.117, IP Address:10.0.2.118, IP Address:10.0.2.119, IP Address:10.0.2.120, IP Address:10.0.2.121, IP Address:10.0.2.122, IP Address:10.0.2.123, IP Address:10.0.2.124, IP Address:10.0.2.125, IP Address:10.0.2.126, IP Address:10.0.2.127, IP Address:10.0.2.128, IP Address:10.0.2.129, IP Address:10.0.2.130, IP Address:10.0.2.131, IP Address:10.0.2.132, IP Address:10.0.2.133, IP Address:10.0.2.134, IP Address:10.0.2.135, IP Address:10.0.2.136, IP Address:10.0.2.137, IP Address:10.0.2.138, IP Address:10.0.2.139, IP Address:10.0.2.140, IP Address:10.0.2.141, IP Address:10.0.2.142, IP Address:10.0.2.143, IP Address:10.0.2.144, IP Address:10.0.2.145, IP Address:10.0.2.146, IP Address:10.0.2.147, IP Address:10.0.2.148, IP Address:10.0.2.149, IP Address:10.0.2.150, IP Address:10.0.2.151, IP Address:10.0.2.152, IP Address:10.0.2.153, IP Address:10.0.2.154, IP Address:10.0.2.155, IP Address:10.0.2.156, IP Address:10.0.2.157, IP Address:10.0.2.158, IP Address:10.0.2.159, IP Address:10.0.2.160, IP Address:10.0.2.161, IP Address:10.0.2.162, IP Address:10.0.2.163, IP Address:10.0.2.164, IP Address:10.0.2.165, IP Address:10.0.2.166, IP Address:10.0.2.167, IP Address:10.0.2.168, IP Address:10.0.2.169, IP Address:10.0.2.170, IP Address:10.0.2.171, IP Address:10.0.2.172, IP Address:10.0.2.173, IP Address:10.0.2.174, IP Address:10.0.2.175, IP Address:10.0.2.176, IP Address:10.0.2.177, IP Address:10.0.2.178, IP Address:10.0.2.179, IP Address:10.0.2.180, IP Address:10.0.2.181, IP Address:10.0.2.182, IP Address:10.0.2.183, IP Address:10.0.2.184, IP Address:10.0.2.185, IP Address:10.0.2.186, IP Address:10.0.2.187, IP Address:10.0.2.188, IP Address:10.0.2.189, IP Address:10.0.2.190, IP Address:10.0.2.191, IP Address:10.0.2.192, IP Address:10.0.2.193, IP Address:10.0.2.194, IP Address:10.0.2.195, IP Address:10.0.2.196, IP Address:10.0.2.197, IP Address:10.0.2.198, IP Address:10.0.2.199, IP Address:10.0.2.200, IP Address:10.0.2.201, IP Address:10.0.2.202, IP Address:10.0.2.203, IP Address:10.0.2.204, IP Address:10.0.2.205, IP Address:10.0.2.206, IP Address:10.0.2.207, IP Address:10.0.2.208, IP Address:10.0.2.209, IP Address:10.0.2.210, IP Address:10.0.2.211, IP Address:10.0.2.212, IP Address:10.0.2.213, IP Address:10.0.2.214, IP Address:10.0.2.215, IP Address:10.0.2.216, IP Address:10.0.2.217, IP Address:10.0.2.218, IP Address:10.0.2.219, IP Address:10.0.2.220, IP Address:10.0.2.221, IP Address:10.0.2.222, IP Address:10.0.2.223, IP Address:10.0.2.224, IP Address:10.0.2.225, IP Address:10.0.2.226, IP Address:10.0.2.227, IP Address:10.0.2.228, IP Address:10.0.2.229, IP Address:10.0.2.230, IP Address:10.0.2.231, IP Address:10.0.2.232, IP Address:10.0.2.233, IP Address:10.0.2.234, IP Address:10.0.2.235, IP Address:10.0.2.236, IP Address:10.0.2.237, IP Address:10.0.2.238, IP Address:10.0.2.239, IP Address:10.0.2.240, IP Address:10.0.2.241, IP Address:10.0.2.242, IP Address:10.0.2.243, IP Address:10.0.2.244, IP Address:10.0.2.245, IP Address:10.0.2.246, IP Address:10.0.2.247, IP Address:10.0.2.248, IP Address:10.0.2.249, IP Address:10.0.2.250, IP Address:10.0.2.251, IP Address:10.0.2.252, IP Address:10.0.2.253, IP Address:10.0.2.254, IP Address:10.0.2.255, IP Address:10.0.3.0, IP Address:10.0.3.1, IP Address:10.0.3.2, IP Address:10.0.3.3, IP Address:10.0.3.4, IP Address:10.0.3.5, IP Address:10.0.3.6, IP Address:10.0.3.7, IP Address:10.0.3.8, IP Address:10.0.3.9, IP Address:10.0.3.10, IP Address:10.0.3.11, IP Address:10.0.3.12, IP Address:10.0.3.13, IP Address:10.0.3.14, IP Address:10.0.3.15, IP Address:10.0.3.16, IP Address:10.0.3.17, IP Address:10.0.3.18, IP Address:10.0.3.19, IP Address:10.0.3.20, IP Address:10.0.3.21, IP Address:10.0.3.22, IP Address:10.0.3.23, IP Address:10.0.3.24, IP Address:10.0.3.25, IP Address:10.0.3.26, IP Address:10.0.3.27, IP Address:10.0.3.28, IP Address:10.0.3.29, IP Address:10.0.3.30, IP Address:10.0.3.31, IP Address:10.0.3.32, IP Address:10.0.3.33, IP Address:10.0.3.34, IP Address:10.0.3.35, IP Address:10.0.3.36, IP Address:10.0.3.37, IP Address:10.0.3.38, IP Address:10.0.3.39, IP Address:10.0.3.40, IP Address:10.0.3.41, IP Address:10.0.3.42, IP Address:10.0.3.43, IP Address:10.0.3.44, IP Address:10.0.3.45, IP Address:10.0.3.46, IP Address:10.0.3.47, IP Address:10.0.3.48, IP Address:10.0.3.49, IP Address:10.0.3.50, IP Address:10.0.3.51, IP Address:10.0.3.52, IP Address:10.0.3.53, IP Address:10.0.3.54, IP Address:10.0.3.55, IP Address:10.0.3.56, IP Address:10.0.3.57, IP Address:10.0.3.58, IP Address:10.0.3.59, IP Address:10.0.3.60, IP Address:10.0.3.61, IP Address:10.0.3.62, IP Address:10.0.3.63, IP Address:10.0.3.64, IP Address:10.0.3.65, IP Address:10.0.3.66, IP Address:10.0.3.67, IP Address:10.0.3.68, IP Address:10.0.3.69, IP Address:10.0.3.70, IP Address:10.0.3.71, IP Address:10.0.3.72, IP Address:10.0.3.73, IP Address:10.0.3.74, IP Address:10.0.3.75, IP Address:10.0.3.76, IP Address:10.0.3.77, IP Address:10.0.3.78, IP Address:10.0.3.79, IP Address:10.0.3.80, IP Address:10.0.3.81, IP Address:10.0.3.82, IP Address:10.0.3.83, IP Address:10.0.3.84, IP Address:10.0.3.85, IP Address:10.0.3.86, IP Address:10.0.3.87, IP Address:10.0.3.88, IP Address:10.0.3.89, IP Address:10.0.3.90, IP Address:10.0.3.91, IP Address:10.0.3.92, IP Address:10.0.3.93, IP Address:10.0.3.94, IP Address:10.0.3.95, IP Address:10.0.3.96, IP Address:10.0.3.97, IP Address:10.0.3.98, IP Address:10.0.3.99, IP Address:10.0.3.100, IP Address:10.0.3.101, IP Address:10.0.3.102, IP Address:10.0.3.103, IP Address:10.0.3.104, IP Address:10.0.3.105, IP Address:10.0.3.106, IP Address:10.0.3.107, IP Address:10.0.3.108, IP Address:10.0.3.109, IP Address:10.0.3.110, IP Address:10.0.3.111, IP Address:10.0.3.112, IP Address:10.0.3.113, IP Address:10.0.3.114, IP Address:10.0.3.115, IP Address:10.0.3.116, IP Address:10.0.3.117, IP Address:10.0.3.118, IP Address:10.0.3.119, IP Address:10.0.3.120, IP Address:10.0.3.121, IP Address:10.0.3.122, IP Address:10.0.3.123, IP Address:10.0.3.124, IP Address:10.0.3.125, IP Address:10.0.3.126, IP Address:10.0.3.127, IP Address:10.0.3.128, IP Address:10.0.3.129, IP Address:10.0.3.130, IP Address:10.0.3.131, IP Address:10.0.3.132, IP Address:10.0.3.133, IP Address:10.0.3.134, IP Address:10.0.3.135, IP Address:10.0.3.136, IP Address:10.0.3.137, IP Address:10.0.3.138, IP Address:10.0.3.139, IP Address:10.0.3.140, IP Address:10.0.3.141, IP Address:10.0.3.142, IP Address:10.0.3.143, IP Address:10.0.3.144, IP Address:10.0.3.145, IP Address:10.0.3.146, IP Address:10.0.3.147, IP Address:10.0.3.148, IP Address:10.0.3.149, IP Address:10.0.3.150, IP Address:10.0.3.151, IP Address:10.0.3.152, IP Address:10.0.3.153, IP Address:10.0.3.154, IP Address:10.0.3.155, IP Address:10.0.3.156, IP Address:10.0.3.157, IP Address:10.0.3.158, IP Address:10.0.3.159, IP Address:10.0.3.160, IP Address:10.0.3.161, IP Address:10.0.3.162, IP Address:10.0.3.163, IP Address:10.0.3.164, IP Address:10.0.3.165, IP Address:10.0.3.166, IP Address:10.0.3.167, IP Address:10.0.3.168, IP Address:10.0.3.169, IP Address:10.0.3.170, IP Address:10.0.3.171, IP Address:10.0.3.172, IP Address:10.0.3.173, IP Address:10.0.3.174, IP Address:10.0.3.175, IP Address:10.0.3.176, IP Address:10.0.3.177, IP Address:10.0.3.178, IP Address:10.0.3.179, IP Address:10.0.3.180, IP Address:10.0.3.181, IP Address:10.0.3.182, IP Address:10.0.3.183, IP Address:10.0.3.184, IP Address:10.0.3.185, IP Address:10.0.3.186, IP Address:10.0.3.187, IP Address:10.0.3.188, IP Address:10.0.3.189, IP Address:10.0.3.190, IP Address:10.0.3.191, IP Address:10.0.3.192, IP Address:10.0.3.193, IP Address:10.0.3.194, IP Address:10.0.3.195, IP Address:10.0.3.196, IP Address:10.0.3.197, IP Address:10.0.3.198, IP Address:10.0.3.199, IP Address:10.0.3.200, IP Address:10.0.3.201, IP Address:10.0.3.202, IP Address:10.0.3.203, IP Address:10.0.3.204, IP Address:10.0.3.205, IP Address:10.0.3.206, IP Address:10.0.3.207, IP Address:10.0.3.208, IP Address:10.0.3.209, IP Address:10.0.3.210, IP Address:10.0.3.211, IP Address:10.0.3.212, IP Address:10.0.3.213, IP Address:10.0.3.214, IP Address:10.0.3.215, IP Address:10.0.3.216, IP Address:10.0.3.217, IP Address:10.0.3.218, IP Address:10.0.3.219, IP Address:10.0.3.220, IP Address:10.0.3.221, IP Address:10.0.3.222, IP Address:10.0.3.223, IP Address:10.0.3.224, IP Address:10.0.3.225, IP Address:10.0.3.226, IP Address:10.0.3.227, IP Address:10.0.3.228, IP Address:10.0.3.229, IP Address:10.0.3.230, IP Address:10.0.3.231, IP Address:10.0.3.232, IP Address:10.0.3.233, IP Address:10.0.3.234, IP Address:10.0.3.235, IP Address:10.0.3.236, IP Address:10.0.3.237, IP Address:10.0.3.238, IP Address:10.0.3.239, IP Address:10.0.3.240, IP Address:10.0.3.241, IP Address:10.0.3.242, IP Address:10.0.3.243, IP Address:10.0.3.244, IP Address:10.0.3.245, IP Address:10.0.3.246, IP Address:10.0.3.247, IP Address:10.0.3.248, IP Address:10.0.3.249, IP Address:10.0.3.250, IP Address:10.0.3.251, IP Address:10.0.3.252, IP Address:10.0.3.253, IP Address:10.0.3.254, IP Address:10.0.3.255, IP Address:10.0.4.0
-- Signature Algorithm: sha256WithRSAEncryption
-- 7d:aa:54:38:c1:c7:b0:75:bf:a5:04:21:55:2a:32:fb:31:a9:
-- e1:c8:17:7a:90:98:26:a7:ad:7d:37:89:b7:59:b0:05:c6:71:
-- ab:d3:18:c0:2f:62:35:99:c2:69:06:4e:ce:95:9c:e6:ca:db:
-- e4:41:d8:4d:61:7c:83:69:78:2a:a7:e5:d5:88:2d:fb:2d:ea:
-- 76:34:7c:bd:ff:e2:84:ef:49:e9:7a:8b:ea:41:b4:2e:d7:88:
-- cf:5a:70:69:94:57:d9:4f:4d:2d:d2:95:96:0f:9f:66:f3:99:
-- ea:e5:31:8d:d5:82:46:83:35:52:85:e9:71:f2:36:e3:c1:2a:
-- 53:d2:b7:3d:71:4c:af:be:7f:45:a2:23:28:ca:d5:77:86:e4:
-- 96:bd:bf:4f:45:0f:5d:64:90:36:b1:e7:86:08:2a:fe:4e:9e:
-- 27:33:76:a8:c1:6a:33:5b:fd:98:a2:28:5c:40:84:1d:22:e4:
-- 0b:1b:fa:db:b5:77:6e:df:66:26:e2:7f:7b:fa:1d:00:8d:c2:
-- a3:52:f3:90:33:ee:a7:b1:67:88:10:4b:7d:e3:3f:65:fd:4a:
-- 2d:f2:06:7e:18:12:2f:d7:2e:df:a4:6f:28:2c:d4:f2:82:34:
-- 87:24:0c:6f:5c:18:50:de:39:05:5a:40:c6:2b:9c:1b:79:d5:
-- 30:09:0b:db
-------BEGIN CERTIFICATE-----
--MIIbtDCCGpygAwIBAgITL6u0PdzAd4AqAwmtQ3QCv5jY3TANBgkqhkiG9w0BAQsF
--ADAXMRUwEwYDVQQDDAxJbnRlcm1lZGlhdGUwHhcNMjExMDA1MTIwMDAwWhcNMjIx
--MDA1MTIwMDAwWjANMQswCQYDVQQDDAJ0MDCCASIwDQYJKoZIhvcNAQEBBQADggEP
--ADCCAQoCggEBANssUwHO+RqDNlJRKltCY94ydRFqfbCh5HdHm3Hlpi1k165bBO16
--P8f2yisrrc1siKWONvvnoiK1fVR56dV6W8orKWwNhAoQxCG2WJi7DbYMjVZbLIVZ
--B8oGRjYlGimOxDm3wzHObknCAc+wOydDiuPVBh8tk53dekVlbf20scAQWULyHo/O
--Q6yXJcF84lHhRDVblKoDbtpxLyV/WDAB4RIXHvKqbCKAscll6neVswfE93I4NP6g
--QzNMZm2h6KEEvG8UOTlELjg3dMkKIYWRIbdOurCZSnaYe1jKHNOwQMPZKnX76xnq
--4xqYMVKX6X+keyF/L9xiho/9/aiI6EtEUr0CAwEAAaOCGQEwghj9MB0GA1UdDgQW
--BBQ7tAXMqrpRPfzy+R4lU3LhOvKa3zAfBgNVHSMEGDAWgBSSET+sEZbHZjfPg1ok
--8Dp3rzONfzA/BggrBgEFBQcBAQQzMDEwLwYIKwYBBQUHMAKGI2h0dHA6Ly91cmwt
--Zm9yLWFpYS9JbnRlcm1lZGlhdGUuY2VyMDQGA1UdHwQtMCswKaAnoCWGI2h0dHA6
--Ly91cmwtZm9yLWNybC9JbnRlcm1lZGlhdGUuY3JsMA4GA1UdDwEB/wQEAwIFoDAd
--BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwghgTBgNVHREEghgKMIIYBocE
--CgAAAIcECgAAAYcECgAAAocECgAAA4cECgAABIcECgAABYcECgAABocECgAAB4cE
--CgAACIcECgAACYcECgAACocECgAAC4cECgAADIcECgAADYcECgAADocECgAAD4cE
--CgAAEIcECgAAEYcECgAAEocECgAAE4cECgAAFIcECgAAFYcECgAAFocECgAAF4cE
--CgAAGIcECgAAGYcECgAAGocECgAAG4cECgAAHIcECgAAHYcECgAAHocECgAAH4cE
--CgAAIIcECgAAIYcECgAAIocECgAAI4cECgAAJIcECgAAJYcECgAAJocECgAAJ4cE
--CgAAKIcECgAAKYcECgAAKocECgAAK4cECgAALIcECgAALYcECgAALocECgAAL4cE
--CgAAMIcECgAAMYcECgAAMocECgAAM4cECgAANIcECgAANYcECgAANocECgAAN4cE
--CgAAOIcECgAAOYcECgAAOocECgAAO4cECgAAPIcECgAAPYcECgAAPocECgAAP4cE
--CgAAQIcECgAAQYcECgAAQocECgAAQ4cECgAARIcECgAARYcECgAARocECgAAR4cE
--CgAASIcECgAASYcECgAASocECgAAS4cECgAATIcECgAATYcECgAATocECgAAT4cE
--CgAAUIcECgAAUYcECgAAUocECgAAU4cECgAAVIcECgAAVYcECgAAVocECgAAV4cE
--CgAAWIcECgAAWYcECgAAWocECgAAW4cECgAAXIcECgAAXYcECgAAXocECgAAX4cE
--CgAAYIcECgAAYYcECgAAYocECgAAY4cECgAAZIcECgAAZYcECgAAZocECgAAZ4cE
--CgAAaIcECgAAaYcECgAAaocECgAAa4cECgAAbIcECgAAbYcECgAAbocECgAAb4cE
--CgAAcIcECgAAcYcECgAAcocECgAAc4cECgAAdIcECgAAdYcECgAAdocECgAAd4cE
--CgAAeIcECgAAeYcECgAAeocECgAAe4cECgAAfIcECgAAfYcECgAAfocECgAAf4cE
--CgAAgIcECgAAgYcECgAAgocECgAAg4cECgAAhIcECgAAhYcECgAAhocECgAAh4cE
--CgAAiIcECgAAiYcECgAAiocECgAAi4cECgAAjIcECgAAjYcECgAAjocECgAAj4cE
--CgAAkIcECgAAkYcECgAAkocECgAAk4cECgAAlIcECgAAlYcECgAAlocECgAAl4cE
--CgAAmIcECgAAmYcECgAAmocECgAAm4cECgAAnIcECgAAnYcECgAAnocECgAAn4cE
--CgAAoIcECgAAoYcECgAAoocECgAAo4cECgAApIcECgAApYcECgAApocECgAAp4cE
--CgAAqIcECgAAqYcECgAAqocECgAAq4cECgAArIcECgAArYcECgAArocECgAAr4cE
--CgAAsIcECgAAsYcECgAAsocECgAAs4cECgAAtIcECgAAtYcECgAAtocECgAAt4cE
--CgAAuIcECgAAuYcECgAAuocECgAAu4cECgAAvIcECgAAvYcECgAAvocECgAAv4cE
--CgAAwIcECgAAwYcECgAAwocECgAAw4cECgAAxIcECgAAxYcECgAAxocECgAAx4cE
--CgAAyIcECgAAyYcECgAAyocECgAAy4cECgAAzIcECgAAzYcECgAAzocECgAAz4cE
--CgAA0IcECgAA0YcECgAA0ocECgAA04cECgAA1IcECgAA1YcECgAA1ocECgAA14cE
--CgAA2IcECgAA2YcECgAA2ocECgAA24cECgAA3IcECgAA3YcECgAA3ocECgAA34cE
--CgAA4IcECgAA4YcECgAA4ocECgAA44cECgAA5IcECgAA5YcECgAA5ocECgAA54cE
--CgAA6IcECgAA6YcECgAA6ocECgAA64cECgAA7IcECgAA7YcECgAA7ocECgAA74cE
--CgAA8IcECgAA8YcECgAA8ocECgAA84cECgAA9IcECgAA9YcECgAA9ocECgAA94cE
--CgAA+IcECgAA+YcECgAA+ocECgAA+4cECgAA/IcECgAA/YcECgAA/ocECgAA/4cE
--CgABAIcECgABAYcECgABAocECgABA4cECgABBIcECgABBYcECgABBocECgABB4cE
--CgABCIcECgABCYcECgABCocECgABC4cECgABDIcECgABDYcECgABDocECgABD4cE
--CgABEIcECgABEYcECgABEocECgABE4cECgABFIcECgABFYcECgABFocECgABF4cE
--CgABGIcECgABGYcECgABGocECgABG4cECgABHIcECgABHYcECgABHocECgABH4cE
--CgABIIcECgABIYcECgABIocECgABI4cECgABJIcECgABJYcECgABJocECgABJ4cE
--CgABKIcECgABKYcECgABKocECgABK4cECgABLIcECgABLYcECgABLocECgABL4cE
--CgABMIcECgABMYcECgABMocECgABM4cECgABNIcECgABNYcECgABNocECgABN4cE
--CgABOIcECgABOYcECgABOocECgABO4cECgABPIcECgABPYcECgABPocECgABP4cE
--CgABQIcECgABQYcECgABQocECgABQ4cECgABRIcECgABRYcECgABRocECgABR4cE
--CgABSIcECgABSYcECgABSocECgABS4cECgABTIcECgABTYcECgABTocECgABT4cE
--CgABUIcECgABUYcECgABUocECgABU4cECgABVIcECgABVYcECgABVocECgABV4cE
--CgABWIcECgABWYcECgABWocECgABW4cECgABXIcECgABXYcECgABXocECgABX4cE
--CgABYIcECgABYYcECgABYocECgABY4cECgABZIcECgABZYcECgABZocECgABZ4cE
--CgABaIcECgABaYcECgABaocECgABa4cECgABbIcECgABbYcECgABbocECgABb4cE
--CgABcIcECgABcYcECgABcocECgABc4cECgABdIcECgABdYcECgABdocECgABd4cE
--CgABeIcECgABeYcECgABeocECgABe4cECgABfIcECgABfYcECgABfocECgABf4cE
--CgABgIcECgABgYcECgABgocECgABg4cECgABhIcECgABhYcECgABhocECgABh4cE
--CgABiIcECgABiYcECgABiocECgABi4cECgABjIcECgABjYcECgABjocECgABj4cE
--CgABkIcECgABkYcECgABkocECgABk4cECgABlIcECgABlYcECgABlocECgABl4cE
--CgABmIcECgABmYcECgABmocECgABm4cECgABnIcECgABnYcECgABnocECgABn4cE
--CgABoIcECgABoYcECgABoocECgABo4cECgABpIcECgABpYcECgABpocECgABp4cE
--CgABqIcECgABqYcECgABqocECgABq4cECgABrIcECgABrYcECgABrocECgABr4cE
--CgABsIcECgABsYcECgABsocECgABs4cECgABtIcECgABtYcECgABtocECgABt4cE
--CgABuIcECgABuYcECgABuocECgABu4cECgABvIcECgABvYcECgABvocECgABv4cE
--CgABwIcECgABwYcECgABwocECgABw4cECgABxIcECgABxYcECgABxocECgABx4cE
--CgAByIcECgAByYcECgAByocECgABy4cECgABzIcECgABzYcECgABzocECgABz4cE
--CgAB0IcECgAB0YcECgAB0ocECgAB04cECgAB1IcECgAB1YcECgAB1ocECgAB14cE
--CgAB2IcECgAB2YcECgAB2ocECgAB24cECgAB3IcECgAB3YcECgAB3ocECgAB34cE
--CgAB4IcECgAB4YcECgAB4ocECgAB44cECgAB5IcECgAB5YcECgAB5ocECgAB54cE
--CgAB6IcECgAB6YcECgAB6ocECgAB64cECgAB7IcECgAB7YcECgAB7ocECgAB74cE
--CgAB8IcECgAB8YcECgAB8ocECgAB84cECgAB9IcECgAB9YcECgAB9ocECgAB94cE
--CgAB+IcECgAB+YcECgAB+ocECgAB+4cECgAB/IcECgAB/YcECgAB/ocECgAB/4cE
--CgACAIcECgACAYcECgACAocECgACA4cECgACBIcECgACBYcECgACBocECgACB4cE
--CgACCIcECgACCYcECgACCocECgACC4cECgACDIcECgACDYcECgACDocECgACD4cE
--CgACEIcECgACEYcECgACEocECgACE4cECgACFIcECgACFYcECgACFocECgACF4cE
--CgACGIcECgACGYcECgACGocECgACG4cECgACHIcECgACHYcECgACHocECgACH4cE
--CgACIIcECgACIYcECgACIocECgACI4cECgACJIcECgACJYcECgACJocECgACJ4cE
--CgACKIcECgACKYcECgACKocECgACK4cECgACLIcECgACLYcECgACLocECgACL4cE
--CgACMIcECgACMYcECgACMocECgACM4cECgACNIcECgACNYcECgACNocECgACN4cE
--CgACOIcECgACOYcECgACOocECgACO4cECgACPIcECgACPYcECgACPocECgACP4cE
--CgACQIcECgACQYcECgACQocECgACQ4cECgACRIcECgACRYcECgACRocECgACR4cE
--CgACSIcECgACSYcECgACSocECgACS4cECgACTIcECgACTYcECgACTocECgACT4cE
--CgACUIcECgACUYcECgACUocECgACU4cECgACVIcECgACVYcECgACVocECgACV4cE
--CgACWIcECgACWYcECgACWocECgACW4cECgACXIcECgACXYcECgACXocECgACX4cE
--CgACYIcECgACYYcECgACYocECgACY4cECgACZIcECgACZYcECgACZocECgACZ4cE
--CgACaIcECgACaYcECgACaocECgACa4cECgACbIcECgACbYcECgACbocECgACb4cE
--CgACcIcECgACcYcECgACcocECgACc4cECgACdIcECgACdYcECgACdocECgACd4cE
--CgACeIcECgACeYcECgACeocECgACe4cECgACfIcECgACfYcECgACfocECgACf4cE
--CgACgIcECgACgYcECgACgocECgACg4cECgAChIcECgAChYcECgAChocECgACh4cE
--CgACiIcECgACiYcECgACiocECgACi4cECgACjIcECgACjYcECgACjocECgACj4cE
--CgACkIcECgACkYcECgACkocECgACk4cECgAClIcECgAClYcECgAClocECgACl4cE
--CgACmIcECgACmYcECgACmocECgACm4cECgACnIcECgACnYcECgACnocECgACn4cE
--CgACoIcECgACoYcECgACoocECgACo4cECgACpIcECgACpYcECgACpocECgACp4cE
--CgACqIcECgACqYcECgACqocECgACq4cECgACrIcECgACrYcECgACrocECgACr4cE
--CgACsIcECgACsYcECgACsocECgACs4cECgACtIcECgACtYcECgACtocECgACt4cE
--CgACuIcECgACuYcECgACuocECgACu4cECgACvIcECgACvYcECgACvocECgACv4cE
--CgACwIcECgACwYcECgACwocECgACw4cECgACxIcECgACxYcECgACxocECgACx4cE
--CgACyIcECgACyYcECgACyocECgACy4cECgACzIcECgACzYcECgACzocECgACz4cE
--CgAC0IcECgAC0YcECgAC0ocECgAC04cECgAC1IcECgAC1YcECgAC1ocECgAC14cE
--CgAC2IcECgAC2YcECgAC2ocECgAC24cECgAC3IcECgAC3YcECgAC3ocECgAC34cE
--CgAC4IcECgAC4YcECgAC4ocECgAC44cECgAC5IcECgAC5YcECgAC5ocECgAC54cE
--CgAC6IcECgAC6YcECgAC6ocECgAC64cECgAC7IcECgAC7YcECgAC7ocECgAC74cE
--CgAC8IcECgAC8YcECgAC8ocECgAC84cECgAC9IcECgAC9YcECgAC9ocECgAC94cE
--CgAC+IcECgAC+YcECgAC+ocECgAC+4cECgAC/IcECgAC/YcECgAC/ocECgAC/4cE
--CgADAIcECgADAYcECgADAocECgADA4cECgADBIcECgADBYcECgADBocECgADB4cE
--CgADCIcECgADCYcECgADCocECgADC4cECgADDIcECgADDYcECgADDocECgADD4cE
--CgADEIcECgADEYcECgADEocECgADE4cECgADFIcECgADFYcECgADFocECgADF4cE
--CgADGIcECgADGYcECgADGocECgADG4cECgADHIcECgADHYcECgADHocECgADH4cE
--CgADIIcECgADIYcECgADIocECgADI4cECgADJIcECgADJYcECgADJocECgADJ4cE
--CgADKIcECgADKYcECgADKocECgADK4cECgADLIcECgADLYcECgADLocECgADL4cE
--CgADMIcECgADMYcECgADMocECgADM4cECgADNIcECgADNYcECgADNocECgADN4cE
--CgADOIcECgADOYcECgADOocECgADO4cECgADPIcECgADPYcECgADPocECgADP4cE
--CgADQIcECgADQYcECgADQocECgADQ4cECgADRIcECgADRYcECgADRocECgADR4cE
--CgADSIcECgADSYcECgADSocECgADS4cECgADTIcECgADTYcECgADTocECgADT4cE
--CgADUIcECgADUYcECgADUocECgADU4cECgADVIcECgADVYcECgADVocECgADV4cE
--CgADWIcECgADWYcECgADWocECgADW4cECgADXIcECgADXYcECgADXocECgADX4cE
--CgADYIcECgADYYcECgADYocECgADY4cECgADZIcECgADZYcECgADZocECgADZ4cE
--CgADaIcECgADaYcECgADaocECgADa4cECgADbIcECgADbYcECgADbocECgADb4cE
--CgADcIcECgADcYcECgADcocECgADc4cECgADdIcECgADdYcECgADdocECgADd4cE
--CgADeIcECgADeYcECgADeocECgADe4cECgADfIcECgADfYcECgADfocECgADf4cE
--CgADgIcECgADgYcECgADgocECgADg4cECgADhIcECgADhYcECgADhocECgADh4cE
--CgADiIcECgADiYcECgADiocECgADi4cECgADjIcECgADjYcECgADjocECgADj4cE
--CgADkIcECgADkYcECgADkocECgADk4cECgADlIcECgADlYcECgADlocECgADl4cE
--CgADmIcECgADmYcECgADmocECgADm4cECgADnIcECgADnYcECgADnocECgADn4cE
--CgADoIcECgADoYcECgADoocECgADo4cECgADpIcECgADpYcECgADpocECgADp4cE
--CgADqIcECgADqYcECgADqocECgADq4cECgADrIcECgADrYcECgADrocECgADr4cE
--CgADsIcECgADsYcECgADsocECgADs4cECgADtIcECgADtYcECgADtocECgADt4cE
--CgADuIcECgADuYcECgADuocECgADu4cECgADvIcECgADvYcECgADvocECgADv4cE
--CgADwIcECgADwYcECgADwocECgADw4cECgADxIcECgADxYcECgADxocECgADx4cE
--CgADyIcECgADyYcECgADyocECgADy4cECgADzIcECgADzYcECgADzocECgADz4cE
--CgAD0IcECgAD0YcECgAD0ocECgAD04cECgAD1IcECgAD1YcECgAD1ocECgAD14cE
--CgAD2IcECgAD2YcECgAD2ocECgAD24cECgAD3IcECgAD3YcECgAD3ocECgAD34cE
--CgAD4IcECgAD4YcECgAD4ocECgAD44cECgAD5IcECgAD5YcECgAD5ocECgAD54cE
--CgAD6IcECgAD6YcECgAD6ocECgAD64cECgAD7IcECgAD7YcECgAD7ocECgAD74cE
--CgAD8IcECgAD8YcECgAD8ocECgAD84cECgAD9IcECgAD9YcECgAD9ocECgAD94cE
--CgAD+IcECgAD+YcECgAD+ocECgAD+4cECgAD/IcECgAD/YcECgAD/ocECgAD/4cE
--CgAEADANBgkqhkiG9w0BAQsFAAOCAQEAfapUOMHHsHW/pQQhVSoy+zGp4cgXepCY
--JqetfTeJt1mwBcZxq9MYwC9iNZnCaQZOzpWc5srb5EHYTWF8g2l4Kqfl1Ygt+y3q
--djR8vf/ihO9J6XqL6kG0LteIz1pwaZRX2U9NLdKVlg+fZvOZ6uUxjdWCRoM1UoXp
--cfI248EqU9K3PXFMr75/RaIjKMrVd4bklr2/T0UPXWSQNrHnhggq/k6eJzN2qMFq
--M1v9mKIoXECEHSLkCxv627V3bt9mJuJ/e/odAI3Co1LzkDPup7FniBBLfeM/Zf1K
--LfIGfhgSL9cu36RvKCzU8oI0hyQMb1wYUN45BVpAxiucG3nVMAkL2w==
-------END CERTIFICATE-----
--
--Certificate:
-- Data:
-- Version: 3 (0x2)
-- Serial Number:
-- 3c:e5:fc:81:88:59:a8:50:16:c1:7f:d7:e5:2a:e5:96:7f:c2:f6:ff
-- Signature Algorithm: sha256WithRSAEncryption
-- Issuer: CN=Root
-- Validity
-- Not Before: Oct 5 12:00:00 2021 GMT
-- Not After : Oct 5 12:00:00 2022 GMT
-- Subject: CN=Intermediate
-- Subject Public Key Info:
-- Public Key Algorithm: rsaEncryption
-- RSA Public-Key: (2048 bit)
-- Modulus:
-- 00:bb:3b:db:04:6e:17:e0:54:52:ba:23:77:24:bc:
-- 34:e3:70:d9:99:9e:53:5d:33:0b:a9:cc:4b:1d:ae:
-- 06:27:18:8e:55:ba:ad:12:c7:1d:32:59:6d:c3:16:
-- 20:db:62:a6:77:80:12:e0:87:58:51:55:e3:66:7f:
-- d1:e0:3a:22:65:e5:70:26:a2:04:04:f0:5d:f9:5f:
-- 56:c8:da:e8:0f:57:28:77:6e:9a:a0:4a:53:34:1a:
-- 63:37:a2:43:ab:0e:4a:cd:07:23:dd:55:83:44:00:
-- 0c:70:41:df:35:64:d0:c5:0e:6a:87:db:ca:fc:35:
-- d5:e2:5b:af:0b:a0:e6:75:a5:d2:e1:72:4e:22:63:
-- 01:41:73:b8:95:50:2c:fd:ed:c3:61:b6:36:d4:83:
-- 95:61:c3:e0:61:ff:f4:9e:8a:e8:ba:dc:d1:f6:89:
-- ed:9d:30:44:95:27:f4:d1:8b:e6:2f:14:66:56:f1:
-- da:f1:cc:04:1b:77:92:a5:9f:58:40:0c:9f:0c:32:
-- d6:05:c2:4c:c0:c5:9f:e5:a4:30:3d:4c:e9:9d:03:
-- 6c:4c:06:b6:e5:95:bd:21:b8:e6:2b:a8:a0:bf:06:
-- bb:43:33:19:3d:7b:17:59:f1:64:4d:24:67:b1:51:
-- 0f:35:ae:f0:71:75:79:ae:5b:02:34:04:31:e3:66:
-- 86:65
-- Exponent: 65537 (0x10001)
-- X509v3 extensions:
-- X509v3 Subject Key Identifier:
-- 92:11:3F:AC:11:96:C7:66:37:CF:83:5A:24:F0:3A:77:AF:33:8D:7F
-- X509v3 Authority Key Identifier:
-- keyid:B6:C2:EF:9F:D1:29:CB:0F:89:8C:4C:52:D4:BD:40:B7:11:B7:71:DD
--
-- Authority Information Access:
-- CA Issuers - URI:http://url-for-aia/Root.cer
--
-- X509v3 CRL Distribution Points:
--
-- Full Name:
-- URI:http://url-for-crl/Root.crl
--
-- X509v3 Key Usage: critical
-- Certificate Sign, CRL Sign
-- X509v3 Basic Constraints: critical
-- CA:TRUE
-- X509v3 Name Constraints:
-- Permitted:
-- DNS:t0.test
-- DNS:t1.test
-- DNS:t2.test
-- DNS:t3.test
-- DNS:t4.test
-- DNS:t5.test
-- DNS:t6.test
-- DNS:t7.test
-- DNS:t8.test
-- DNS:t9.test
-- DNS:t10.test
-- DNS:t11.test
-- DNS:t12.test
-- DNS:t13.test
-- DNS:t14.test
-- DNS:t15.test
-- DNS:t16.test
-- DNS:t17.test
-- DNS:t18.test
-- DNS:t19.test
-- DNS:t20.test
-- DNS:t21.test
-- DNS:t22.test
-- DNS:t23.test
-- DNS:t24.test
-- DNS:t25.test
-- DNS:t26.test
-- DNS:t27.test
-- DNS:t28.test
-- DNS:t29.test
-- DNS:t30.test
-- DNS:t31.test
-- DNS:t32.test
-- DNS:t33.test
-- DNS:t34.test
-- DNS:t35.test
-- DNS:t36.test
-- DNS:t37.test
-- DNS:t38.test
-- DNS:t39.test
-- DNS:t40.test
-- DNS:t41.test
-- DNS:t42.test
-- DNS:t43.test
-- DNS:t44.test
-- DNS:t45.test
-- DNS:t46.test
-- DNS:t47.test
-- DNS:t48.test
-- DNS:t49.test
-- DNS:t50.test
-- DNS:t51.test
-- DNS:t52.test
-- DNS:t53.test
-- DNS:t54.test
-- DNS:t55.test
-- DNS:t56.test
-- DNS:t57.test
-- DNS:t58.test
-- DNS:t59.test
-- DNS:t60.test
-- DNS:t61.test
-- DNS:t62.test
-- DNS:t63.test
-- DNS:t64.test
-- DNS:t65.test
-- DNS:t66.test
-- DNS:t67.test
-- DNS:t68.test
-- DNS:t69.test
-- DNS:t70.test
-- DNS:t71.test
-- DNS:t72.test
-- DNS:t73.test
-- DNS:t74.test
-- DNS:t75.test
-- DNS:t76.test
-- DNS:t77.test
-- DNS:t78.test
-- DNS:t79.test
-- DNS:t80.test
-- DNS:t81.test
-- DNS:t82.test
-- DNS:t83.test
-- DNS:t84.test
-- DNS:t85.test
-- DNS:t86.test
-- DNS:t87.test
-- DNS:t88.test
-- DNS:t89.test
-- DNS:t90.test
-- DNS:t91.test
-- DNS:t92.test
-- DNS:t93.test
-- DNS:t94.test
-- DNS:t95.test
-- DNS:t96.test
-- DNS:t97.test
-- DNS:t98.test
-- DNS:t99.test
-- DNS:t100.test
-- DNS:t101.test
-- DNS:t102.test
-- DNS:t103.test
-- DNS:t104.test
-- DNS:t105.test
-- DNS:t106.test
-- DNS:t107.test
-- DNS:t108.test
-- DNS:t109.test
-- DNS:t110.test
-- DNS:t111.test
-- DNS:t112.test
-- DNS:t113.test
-- DNS:t114.test
-- DNS:t115.test
-- DNS:t116.test
-- DNS:t117.test
-- DNS:t118.test
-- DNS:t119.test
-- DNS:t120.test
-- DNS:t121.test
-- DNS:t122.test
-- DNS:t123.test
-- DNS:t124.test
-- DNS:t125.test
-- DNS:t126.test
-- DNS:t127.test
-- DNS:t128.test
-- DNS:t129.test
-- DNS:t130.test
-- DNS:t131.test
-- DNS:t132.test
-- DNS:t133.test
-- DNS:t134.test
-- DNS:t135.test
-- DNS:t136.test
-- DNS:t137.test
-- DNS:t138.test
-- DNS:t139.test
-- DNS:t140.test
-- DNS:t141.test
-- DNS:t142.test
-- DNS:t143.test
-- DNS:t144.test
-- DNS:t145.test
-- DNS:t146.test
-- DNS:t147.test
-- DNS:t148.test
-- DNS:t149.test
-- DNS:t150.test
-- DNS:t151.test
-- DNS:t152.test
-- DNS:t153.test
-- DNS:t154.test
-- DNS:t155.test
-- DNS:t156.test
-- DNS:t157.test
-- DNS:t158.test
-- DNS:t159.test
-- DNS:t160.test
-- DNS:t161.test
-- DNS:t162.test
-- DNS:t163.test
-- DNS:t164.test
-- DNS:t165.test
-- DNS:t166.test
-- DNS:t167.test
-- DNS:t168.test
-- DNS:t169.test
-- DNS:t170.test
-- DNS:t171.test
-- DNS:t172.test
-- DNS:t173.test
-- DNS:t174.test
-- DNS:t175.test
-- DNS:t176.test
-- DNS:t177.test
-- DNS:t178.test
-- DNS:t179.test
-- DNS:t180.test
-- DNS:t181.test
-- DNS:t182.test
-- DNS:t183.test
-- DNS:t184.test
-- DNS:t185.test
-- DNS:t186.test
-- DNS:t187.test
-- DNS:t188.test
-- DNS:t189.test
-- DNS:t190.test
-- DNS:t191.test
-- DNS:t192.test
-- DNS:t193.test
-- DNS:t194.test
-- DNS:t195.test
-- DNS:t196.test
-- DNS:t197.test
-- DNS:t198.test
-- DNS:t199.test
-- DNS:t200.test
-- DNS:t201.test
-- DNS:t202.test
-- DNS:t203.test
-- DNS:t204.test
-- DNS:t205.test
-- DNS:t206.test
-- DNS:t207.test
-- DNS:t208.test
-- DNS:t209.test
-- DNS:t210.test
-- DNS:t211.test
-- DNS:t212.test
-- DNS:t213.test
-- DNS:t214.test
-- DNS:t215.test
-- DNS:t216.test
-- DNS:t217.test
-- DNS:t218.test
-- DNS:t219.test
-- DNS:t220.test
-- DNS:t221.test
-- DNS:t222.test
-- DNS:t223.test
-- DNS:t224.test
-- DNS:t225.test
-- DNS:t226.test
-- DNS:t227.test
-- DNS:t228.test
-- DNS:t229.test
-- DNS:t230.test
-- DNS:t231.test
-- DNS:t232.test
-- DNS:t233.test
-- DNS:t234.test
-- DNS:t235.test
-- DNS:t236.test
-- DNS:t237.test
-- DNS:t238.test
-- DNS:t239.test
-- DNS:t240.test
-- DNS:t241.test
-- DNS:t242.test
-- DNS:t243.test
-- DNS:t244.test
-- DNS:t245.test
-- DNS:t246.test
-- DNS:t247.test
-- DNS:t248.test
-- DNS:t249.test
-- DNS:t250.test
-- DNS:t251.test
-- DNS:t252.test
-- DNS:t253.test
-- DNS:t254.test
-- DNS:t255.test
-- DNS:t256.test
-- DNS:t257.test
-- DNS:t258.test
-- DNS:t259.test
-- DNS:t260.test
-- DNS:t261.test
-- DNS:t262.test
-- DNS:t263.test
-- DNS:t264.test
-- DNS:t265.test
-- DNS:t266.test
-- DNS:t267.test
-- DNS:t268.test
-- DNS:t269.test
-- DNS:t270.test
-- DNS:t271.test
-- DNS:t272.test
-- DNS:t273.test
-- DNS:t274.test
-- DNS:t275.test
-- DNS:t276.test
-- DNS:t277.test
-- DNS:t278.test
-- DNS:t279.test
-- DNS:t280.test
-- DNS:t281.test
-- DNS:t282.test
-- DNS:t283.test
-- DNS:t284.test
-- DNS:t285.test
-- DNS:t286.test
-- DNS:t287.test
-- DNS:t288.test
-- DNS:t289.test
-- DNS:t290.test
-- DNS:t291.test
-- DNS:t292.test
-- DNS:t293.test
-- DNS:t294.test
-- DNS:t295.test
-- DNS:t296.test
-- DNS:t297.test
-- DNS:t298.test
-- DNS:t299.test
-- DNS:t300.test
-- DNS:t301.test
-- DNS:t302.test
-- DNS:t303.test
-- DNS:t304.test
-- DNS:t305.test
-- DNS:t306.test
-- DNS:t307.test
-- DNS:t308.test
-- DNS:t309.test
-- DNS:t310.test
-- DNS:t311.test
-- DNS:t312.test
-- DNS:t313.test
-- DNS:t314.test
-- DNS:t315.test
-- DNS:t316.test
-- DNS:t317.test
-- DNS:t318.test
-- DNS:t319.test
-- DNS:t320.test
-- DNS:t321.test
-- DNS:t322.test
-- DNS:t323.test
-- DNS:t324.test
-- DNS:t325.test
-- DNS:t326.test
-- DNS:t327.test
-- DNS:t328.test
-- DNS:t329.test
-- DNS:t330.test
-- DNS:t331.test
-- DNS:t332.test
-- DNS:t333.test
-- DNS:t334.test
-- DNS:t335.test
-- DNS:t336.test
-- DNS:t337.test
-- DNS:t338.test
-- DNS:t339.test
-- DNS:t340.test
-- DNS:t341.test
-- DNS:t342.test
-- DNS:t343.test
-- DNS:t344.test
-- DNS:t345.test
-- DNS:t346.test
-- DNS:t347.test
-- DNS:t348.test
-- DNS:t349.test
-- DNS:t350.test
-- DNS:t351.test
-- DNS:t352.test
-- DNS:t353.test
-- DNS:t354.test
-- DNS:t355.test
-- DNS:t356.test
-- DNS:t357.test
-- DNS:t358.test
-- DNS:t359.test
-- DNS:t360.test
-- DNS:t361.test
-- DNS:t362.test
-- DNS:t363.test
-- DNS:t364.test
-- DNS:t365.test
-- DNS:t366.test
-- DNS:t367.test
-- DNS:t368.test
-- DNS:t369.test
-- DNS:t370.test
-- DNS:t371.test
-- DNS:t372.test
-- DNS:t373.test
-- DNS:t374.test
-- DNS:t375.test
-- DNS:t376.test
-- DNS:t377.test
-- DNS:t378.test
-- DNS:t379.test
-- DNS:t380.test
-- DNS:t381.test
-- DNS:t382.test
-- DNS:t383.test
-- DNS:t384.test
-- DNS:t385.test
-- DNS:t386.test
-- DNS:t387.test
-- DNS:t388.test
-- DNS:t389.test
-- DNS:t390.test
-- DNS:t391.test
-- DNS:t392.test
-- DNS:t393.test
-- DNS:t394.test
-- DNS:t395.test
-- DNS:t396.test
-- DNS:t397.test
-- DNS:t398.test
-- DNS:t399.test
-- DNS:t400.test
-- DNS:t401.test
-- DNS:t402.test
-- DNS:t403.test
-- DNS:t404.test
-- DNS:t405.test
-- DNS:t406.test
-- DNS:t407.test
-- DNS:t408.test
-- DNS:t409.test
-- DNS:t410.test
-- DNS:t411.test
-- DNS:t412.test
-- DNS:t413.test
-- DNS:t414.test
-- DNS:t415.test
-- DNS:t416.test
-- DNS:t417.test
-- DNS:t418.test
-- DNS:t419.test
-- DNS:t420.test
-- DNS:t421.test
-- DNS:t422.test
-- DNS:t423.test
-- DNS:t424.test
-- DNS:t425.test
-- DNS:t426.test
-- DNS:t427.test
-- DNS:t428.test
-- DNS:t429.test
-- DNS:t430.test
-- DNS:t431.test
-- DNS:t432.test
-- DNS:t433.test
-- DNS:t434.test
-- DNS:t435.test
-- DNS:t436.test
-- DNS:t437.test
-- DNS:t438.test
-- DNS:t439.test
-- DNS:t440.test
-- DNS:t441.test
-- DNS:t442.test
-- DNS:t443.test
-- DNS:t444.test
-- DNS:t445.test
-- DNS:t446.test
-- DNS:t447.test
-- DNS:t448.test
-- DNS:t449.test
-- DNS:t450.test
-- DNS:t451.test
-- DNS:t452.test
-- DNS:t453.test
-- DNS:t454.test
-- DNS:t455.test
-- DNS:t456.test
-- DNS:t457.test
-- DNS:t458.test
-- DNS:t459.test
-- DNS:t460.test
-- DNS:t461.test
-- DNS:t462.test
-- DNS:t463.test
-- DNS:t464.test
-- DNS:t465.test
-- DNS:t466.test
-- DNS:t467.test
-- DNS:t468.test
-- DNS:t469.test
-- DNS:t470.test
-- DNS:t471.test
-- DNS:t472.test
-- DNS:t473.test
-- DNS:t474.test
-- DNS:t475.test
-- DNS:t476.test
-- DNS:t477.test
-- DNS:t478.test
-- DNS:t479.test
-- DNS:t480.test
-- DNS:t481.test
-- DNS:t482.test
-- DNS:t483.test
-- DNS:t484.test
-- DNS:t485.test
-- DNS:t486.test
-- DNS:t487.test
-- DNS:t488.test
-- DNS:t489.test
-- DNS:t490.test
-- DNS:t491.test
-- DNS:t492.test
-- DNS:t493.test
-- DNS:t494.test
-- DNS:t495.test
-- DNS:t496.test
-- DNS:t497.test
-- DNS:t498.test
-- DNS:t499.test
-- DNS:t500.test
-- DNS:t501.test
-- DNS:t502.test
-- DNS:t503.test
-- DNS:t504.test
-- DNS:t505.test
-- DNS:t506.test
-- DNS:t507.test
-- DNS:t508.test
-- DNS:t509.test
-- DNS:t510.test
-- DNS:t511.test
-- DNS:t512.test
-- DNS:t513.test
-- DNS:t514.test
-- DNS:t515.test
-- DNS:t516.test
-- DNS:t517.test
-- DNS:t518.test
-- DNS:t519.test
-- DNS:t520.test
-- DNS:t521.test
-- DNS:t522.test
-- DNS:t523.test
-- DNS:t524.test
-- DNS:t525.test
-- DNS:t526.test
-- DNS:t527.test
-- DNS:t528.test
-- DNS:t529.test
-- DNS:t530.test
-- DNS:t531.test
-- DNS:t532.test
-- DNS:t533.test
-- DNS:t534.test
-- DNS:t535.test
-- DNS:t536.test
-- DNS:t537.test
-- DNS:t538.test
-- DNS:t539.test
-- DNS:t540.test
-- DNS:t541.test
-- DNS:t542.test
-- DNS:t543.test
-- DNS:t544.test
-- DNS:t545.test
-- DNS:t546.test
-- DNS:t547.test
-- DNS:t548.test
-- DNS:t549.test
-- DNS:t550.test
-- DNS:t551.test
-- DNS:t552.test
-- DNS:t553.test
-- DNS:t554.test
-- DNS:t555.test
-- DNS:t556.test
-- DNS:t557.test
-- DNS:t558.test
-- DNS:t559.test
-- DNS:t560.test
-- DNS:t561.test
-- DNS:t562.test
-- DNS:t563.test
-- DNS:t564.test
-- DNS:t565.test
-- DNS:t566.test
-- DNS:t567.test
-- DNS:t568.test
-- DNS:t569.test
-- DNS:t570.test
-- DNS:t571.test
-- DNS:t572.test
-- DNS:t573.test
-- DNS:t574.test
-- DNS:t575.test
-- DNS:t576.test
-- DNS:t577.test
-- DNS:t578.test
-- DNS:t579.test
-- DNS:t580.test
-- DNS:t581.test
-- DNS:t582.test
-- DNS:t583.test
-- DNS:t584.test
-- DNS:t585.test
-- DNS:t586.test
-- DNS:t587.test
-- DNS:t588.test
-- DNS:t589.test
-- DNS:t590.test
-- DNS:t591.test
-- DNS:t592.test
-- DNS:t593.test
-- DNS:t594.test
-- DNS:t595.test
-- DNS:t596.test
-- DNS:t597.test
-- DNS:t598.test
-- DNS:t599.test
-- DNS:t600.test
-- DNS:t601.test
-- DNS:t602.test
-- DNS:t603.test
-- DNS:t604.test
-- DNS:t605.test
-- DNS:t606.test
-- DNS:t607.test
-- DNS:t608.test
-- DNS:t609.test
-- DNS:t610.test
-- DNS:t611.test
-- DNS:t612.test
-- DNS:t613.test
-- DNS:t614.test
-- DNS:t615.test
-- DNS:t616.test
-- DNS:t617.test
-- DNS:t618.test
-- DNS:t619.test
-- DNS:t620.test
-- DNS:t621.test
-- DNS:t622.test
-- DNS:t623.test
-- DNS:t624.test
-- DNS:t625.test
-- DNS:t626.test
-- DNS:t627.test
-- DNS:t628.test
-- DNS:t629.test
-- DNS:t630.test
-- DNS:t631.test
-- DNS:t632.test
-- DNS:t633.test
-- DNS:t634.test
-- DNS:t635.test
-- DNS:t636.test
-- DNS:t637.test
-- DNS:t638.test
-- DNS:t639.test
-- DNS:t640.test
-- DNS:t641.test
-- DNS:t642.test
-- DNS:t643.test
-- DNS:t644.test
-- DNS:t645.test
-- DNS:t646.test
-- DNS:t647.test
-- DNS:t648.test
-- DNS:t649.test
-- DNS:t650.test
-- DNS:t651.test
-- DNS:t652.test
-- DNS:t653.test
-- DNS:t654.test
-- DNS:t655.test
-- DNS:t656.test
-- DNS:t657.test
-- DNS:t658.test
-- DNS:t659.test
-- DNS:t660.test
-- DNS:t661.test
-- DNS:t662.test
-- DNS:t663.test
-- DNS:t664.test
-- DNS:t665.test
-- DNS:t666.test
-- DNS:t667.test
-- DNS:t668.test
-- DNS:t669.test
-- DNS:t670.test
-- DNS:t671.test
-- DNS:t672.test
-- DNS:t673.test
-- DNS:t674.test
-- DNS:t675.test
-- DNS:t676.test
-- DNS:t677.test
-- DNS:t678.test
-- DNS:t679.test
-- DNS:t680.test
-- DNS:t681.test
-- DNS:t682.test
-- DNS:t683.test
-- DNS:t684.test
-- DNS:t685.test
-- DNS:t686.test
-- DNS:t687.test
-- DNS:t688.test
-- DNS:t689.test
-- DNS:t690.test
-- DNS:t691.test
-- DNS:t692.test
-- DNS:t693.test
-- DNS:t694.test
-- DNS:t695.test
-- DNS:t696.test
-- DNS:t697.test
-- DNS:t698.test
-- DNS:t699.test
-- DNS:t700.test
-- DNS:t701.test
-- DNS:t702.test
-- DNS:t703.test
-- DNS:t704.test
-- DNS:t705.test
-- DNS:t706.test
-- DNS:t707.test
-- DNS:t708.test
-- DNS:t709.test
-- DNS:t710.test
-- DNS:t711.test
-- DNS:t712.test
-- DNS:t713.test
-- DNS:t714.test
-- DNS:t715.test
-- DNS:t716.test
-- DNS:t717.test
-- DNS:t718.test
-- DNS:t719.test
-- DNS:t720.test
-- DNS:t721.test
-- DNS:t722.test
-- DNS:t723.test
-- DNS:t724.test
-- DNS:t725.test
-- DNS:t726.test
-- DNS:t727.test
-- DNS:t728.test
-- DNS:t729.test
-- DNS:t730.test
-- DNS:t731.test
-- DNS:t732.test
-- DNS:t733.test
-- DNS:t734.test
-- DNS:t735.test
-- DNS:t736.test
-- DNS:t737.test
-- DNS:t738.test
-- DNS:t739.test
-- DNS:t740.test
-- DNS:t741.test
-- DNS:t742.test
-- DNS:t743.test
-- DNS:t744.test
-- DNS:t745.test
-- DNS:t746.test
-- DNS:t747.test
-- DNS:t748.test
-- DNS:t749.test
-- DNS:t750.test
-- DNS:t751.test
-- DNS:t752.test
-- DNS:t753.test
-- DNS:t754.test
-- DNS:t755.test
-- DNS:t756.test
-- DNS:t757.test
-- DNS:t758.test
-- DNS:t759.test
-- DNS:t760.test
-- DNS:t761.test
-- DNS:t762.test
-- DNS:t763.test
-- DNS:t764.test
-- DNS:t765.test
-- DNS:t766.test
-- DNS:t767.test
-- DNS:t768.test
-- DNS:t769.test
-- DNS:t770.test
-- DNS:t771.test
-- DNS:t772.test
-- DNS:t773.test
-- DNS:t774.test
-- DNS:t775.test
-- DNS:t776.test
-- DNS:t777.test
-- DNS:t778.test
-- DNS:t779.test
-- DNS:t780.test
-- DNS:t781.test
-- DNS:t782.test
-- DNS:t783.test
-- DNS:t784.test
-- DNS:t785.test
-- DNS:t786.test
-- DNS:t787.test
-- DNS:t788.test
-- DNS:t789.test
-- DNS:t790.test
-- DNS:t791.test
-- DNS:t792.test
-- DNS:t793.test
-- DNS:t794.test
-- DNS:t795.test
-- DNS:t796.test
-- DNS:t797.test
-- DNS:t798.test
-- DNS:t799.test
-- DNS:t800.test
-- DNS:t801.test
-- DNS:t802.test
-- DNS:t803.test
-- DNS:t804.test
-- DNS:t805.test
-- DNS:t806.test
-- DNS:t807.test
-- DNS:t808.test
-- DNS:t809.test
-- DNS:t810.test
-- DNS:t811.test
-- DNS:t812.test
-- DNS:t813.test
-- DNS:t814.test
-- DNS:t815.test
-- DNS:t816.test
-- DNS:t817.test
-- DNS:t818.test
-- DNS:t819.test
-- DNS:t820.test
-- DNS:t821.test
-- DNS:t822.test
-- DNS:t823.test
-- DNS:t824.test
-- DNS:t825.test
-- DNS:t826.test
-- DNS:t827.test
-- DNS:t828.test
-- DNS:t829.test
-- DNS:t830.test
-- DNS:t831.test
-- DNS:t832.test
-- DNS:t833.test
-- DNS:t834.test
-- DNS:t835.test
-- DNS:t836.test
-- DNS:t837.test
-- DNS:t838.test
-- DNS:t839.test
-- DNS:t840.test
-- DNS:t841.test
-- DNS:t842.test
-- DNS:t843.test
-- DNS:t844.test
-- DNS:t845.test
-- DNS:t846.test
-- DNS:t847.test
-- DNS:t848.test
-- DNS:t849.test
-- DNS:t850.test
-- DNS:t851.test
-- DNS:t852.test
-- DNS:t853.test
-- DNS:t854.test
-- DNS:t855.test
-- DNS:t856.test
-- DNS:t857.test
-- DNS:t858.test
-- DNS:t859.test
-- DNS:t860.test
-- DNS:t861.test
-- DNS:t862.test
-- DNS:t863.test
-- DNS:t864.test
-- DNS:t865.test
-- DNS:t866.test
-- DNS:t867.test
-- DNS:t868.test
-- DNS:t869.test
-- DNS:t870.test
-- DNS:t871.test
-- DNS:t872.test
-- DNS:t873.test
-- DNS:t874.test
-- DNS:t875.test
-- DNS:t876.test
-- DNS:t877.test
-- DNS:t878.test
-- DNS:t879.test
-- DNS:t880.test
-- DNS:t881.test
-- DNS:t882.test
-- DNS:t883.test
-- DNS:t884.test
-- DNS:t885.test
-- DNS:t886.test
-- DNS:t887.test
-- DNS:t888.test
-- DNS:t889.test
-- DNS:t890.test
-- DNS:t891.test
-- DNS:t892.test
-- DNS:t893.test
-- DNS:t894.test
-- DNS:t895.test
-- DNS:t896.test
-- DNS:t897.test
-- DNS:t898.test
-- DNS:t899.test
-- DNS:t900.test
-- DNS:t901.test
-- DNS:t902.test
-- DNS:t903.test
-- DNS:t904.test
-- DNS:t905.test
-- DNS:t906.test
-- DNS:t907.test
-- DNS:t908.test
-- DNS:t909.test
-- DNS:t910.test
-- DNS:t911.test
-- DNS:t912.test
-- DNS:t913.test
-- DNS:t914.test
-- DNS:t915.test
-- DNS:t916.test
-- DNS:t917.test
-- DNS:t918.test
-- DNS:t919.test
-- DNS:t920.test
-- DNS:t921.test
-- DNS:t922.test
-- DNS:t923.test
-- DNS:t924.test
-- DNS:t925.test
-- DNS:t926.test
-- DNS:t927.test
-- DNS:t928.test
-- DNS:t929.test
-- DNS:t930.test
-- DNS:t931.test
-- DNS:t932.test
-- DNS:t933.test
-- DNS:t934.test
-- DNS:t935.test
-- DNS:t936.test
-- DNS:t937.test
-- DNS:t938.test
-- DNS:t939.test
-- DNS:t940.test
-- DNS:t941.test
-- DNS:t942.test
-- DNS:t943.test
-- DNS:t944.test
-- DNS:t945.test
-- DNS:t946.test
-- DNS:t947.test
-- DNS:t948.test
-- DNS:t949.test
-- DNS:t950.test
-- DNS:t951.test
-- DNS:t952.test
-- DNS:t953.test
-- DNS:t954.test
-- DNS:t955.test
-- DNS:t956.test
-- DNS:t957.test
-- DNS:t958.test
-- DNS:t959.test
-- DNS:t960.test
-- DNS:t961.test
-- DNS:t962.test
-- DNS:t963.test
-- DNS:t964.test
-- DNS:t965.test
-- DNS:t966.test
-- DNS:t967.test
-- DNS:t968.test
-- DNS:t969.test
-- DNS:t970.test
-- DNS:t971.test
-- DNS:t972.test
-- DNS:t973.test
-- DNS:t974.test
-- DNS:t975.test
-- DNS:t976.test
-- DNS:t977.test
-- DNS:t978.test
-- DNS:t979.test
-- DNS:t980.test
-- DNS:t981.test
-- DNS:t982.test
-- DNS:t983.test
-- DNS:t984.test
-- DNS:t985.test
-- DNS:t986.test
-- DNS:t987.test
-- DNS:t988.test
-- DNS:t989.test
-- DNS:t990.test
-- DNS:t991.test
-- DNS:t992.test
-- DNS:t993.test
-- DNS:t994.test
-- DNS:t995.test
-- DNS:t996.test
-- DNS:t997.test
-- DNS:t998.test
-- DNS:t999.test
-- DNS:t1000.test
-- DNS:t1001.test
-- DNS:t1002.test
-- DNS:t1003.test
-- DNS:t1004.test
-- DNS:t1005.test
-- DNS:t1006.test
-- DNS:t1007.test
-- DNS:t1008.test
-- DNS:t1009.test
-- DNS:t1010.test
-- DNS:t1011.test
-- DNS:t1012.test
-- DNS:t1013.test
-- DNS:t1014.test
-- DNS:t1015.test
-- DNS:t1016.test
-- DNS:t1017.test
-- DNS:t1018.test
-- DNS:t1019.test
-- DNS:t1020.test
-- DNS:t1021.test
-- DNS:t1022.test
-- DNS:t1023.test
-- DNS:t1024.test
-- DirName:CN = t0
-- DirName:CN = t1
-- DirName:CN = t2
-- DirName:CN = t3
-- DirName:CN = t4
-- DirName:CN = t5
-- DirName:CN = t6
-- DirName:CN = t7
-- DirName:CN = t8
-- DirName:CN = t9
-- DirName:CN = t10
-- DirName:CN = t11
-- DirName:CN = t12
-- DirName:CN = t13
-- DirName:CN = t14
-- DirName:CN = t15
-- DirName:CN = t16
-- DirName:CN = t17
-- DirName:CN = t18
-- DirName:CN = t19
-- DirName:CN = t20
-- DirName:CN = t21
-- DirName:CN = t22
-- DirName:CN = t23
-- DirName:CN = t24
-- DirName:CN = t25
-- DirName:CN = t26
-- DirName:CN = t27
-- DirName:CN = t28
-- DirName:CN = t29
-- DirName:CN = t30
-- DirName:CN = t31
-- DirName:CN = t32
-- DirName:CN = t33
-- DirName:CN = t34
-- DirName:CN = t35
-- DirName:CN = t36
-- DirName:CN = t37
-- DirName:CN = t38
-- DirName:CN = t39
-- DirName:CN = t40
-- DirName:CN = t41
-- DirName:CN = t42
-- DirName:CN = t43
-- DirName:CN = t44
-- DirName:CN = t45
-- DirName:CN = t46
-- DirName:CN = t47
-- DirName:CN = t48
-- DirName:CN = t49
-- DirName:CN = t50
-- DirName:CN = t51
-- DirName:CN = t52
-- DirName:CN = t53
-- DirName:CN = t54
-- DirName:CN = t55
-- DirName:CN = t56
-- DirName:CN = t57
-- DirName:CN = t58
-- DirName:CN = t59
-- DirName:CN = t60
-- DirName:CN = t61
-- DirName:CN = t62
-- DirName:CN = t63
-- DirName:CN = t64
-- DirName:CN = t65
-- DirName:CN = t66
-- DirName:CN = t67
-- DirName:CN = t68
-- DirName:CN = t69
-- DirName:CN = t70
-- DirName:CN = t71
-- DirName:CN = t72
-- DirName:CN = t73
-- DirName:CN = t74
-- DirName:CN = t75
-- DirName:CN = t76
-- DirName:CN = t77
-- DirName:CN = t78
-- DirName:CN = t79
-- DirName:CN = t80
-- DirName:CN = t81
-- DirName:CN = t82
-- DirName:CN = t83
-- DirName:CN = t84
-- DirName:CN = t85
-- DirName:CN = t86
-- DirName:CN = t87
-- DirName:CN = t88
-- DirName:CN = t89
-- DirName:CN = t90
-- DirName:CN = t91
-- DirName:CN = t92
-- DirName:CN = t93
-- DirName:CN = t94
-- DirName:CN = t95
-- DirName:CN = t96
-- DirName:CN = t97
-- DirName:CN = t98
-- DirName:CN = t99
-- DirName:CN = t100
-- DirName:CN = t101
-- DirName:CN = t102
-- DirName:CN = t103
-- DirName:CN = t104
-- DirName:CN = t105
-- DirName:CN = t106
-- DirName:CN = t107
-- DirName:CN = t108
-- DirName:CN = t109
-- DirName:CN = t110
-- DirName:CN = t111
-- DirName:CN = t112
-- DirName:CN = t113
-- DirName:CN = t114
-- DirName:CN = t115
-- DirName:CN = t116
-- DirName:CN = t117
-- DirName:CN = t118
-- DirName:CN = t119
-- DirName:CN = t120
-- DirName:CN = t121
-- DirName:CN = t122
-- DirName:CN = t123
-- DirName:CN = t124
-- DirName:CN = t125
-- DirName:CN = t126
-- DirName:CN = t127
-- DirName:CN = t128
-- DirName:CN = t129
-- DirName:CN = t130
-- DirName:CN = t131
-- DirName:CN = t132
-- DirName:CN = t133
-- DirName:CN = t134
-- DirName:CN = t135
-- DirName:CN = t136
-- DirName:CN = t137
-- DirName:CN = t138
-- DirName:CN = t139
-- DirName:CN = t140
-- DirName:CN = t141
-- DirName:CN = t142
-- DirName:CN = t143
-- DirName:CN = t144
-- DirName:CN = t145
-- DirName:CN = t146
-- DirName:CN = t147
-- DirName:CN = t148
-- DirName:CN = t149
-- DirName:CN = t150
-- DirName:CN = t151
-- DirName:CN = t152
-- DirName:CN = t153
-- DirName:CN = t154
-- DirName:CN = t155
-- DirName:CN = t156
-- DirName:CN = t157
-- DirName:CN = t158
-- DirName:CN = t159
-- DirName:CN = t160
-- DirName:CN = t161
-- DirName:CN = t162
-- DirName:CN = t163
-- DirName:CN = t164
-- DirName:CN = t165
-- DirName:CN = t166
-- DirName:CN = t167
-- DirName:CN = t168
-- DirName:CN = t169
-- DirName:CN = t170
-- DirName:CN = t171
-- DirName:CN = t172
-- DirName:CN = t173
-- DirName:CN = t174
-- DirName:CN = t175
-- DirName:CN = t176
-- DirName:CN = t177
-- DirName:CN = t178
-- DirName:CN = t179
-- DirName:CN = t180
-- DirName:CN = t181
-- DirName:CN = t182
-- DirName:CN = t183
-- DirName:CN = t184
-- DirName:CN = t185
-- DirName:CN = t186
-- DirName:CN = t187
-- DirName:CN = t188
-- DirName:CN = t189
-- DirName:CN = t190
-- DirName:CN = t191
-- DirName:CN = t192
-- DirName:CN = t193
-- DirName:CN = t194
-- DirName:CN = t195
-- DirName:CN = t196
-- DirName:CN = t197
-- DirName:CN = t198
-- DirName:CN = t199
-- DirName:CN = t200
-- DirName:CN = t201
-- DirName:CN = t202
-- DirName:CN = t203
-- DirName:CN = t204
-- DirName:CN = t205
-- DirName:CN = t206
-- DirName:CN = t207
-- DirName:CN = t208
-- DirName:CN = t209
-- DirName:CN = t210
-- DirName:CN = t211
-- DirName:CN = t212
-- DirName:CN = t213
-- DirName:CN = t214
-- DirName:CN = t215
-- DirName:CN = t216
-- DirName:CN = t217
-- DirName:CN = t218
-- DirName:CN = t219
-- DirName:CN = t220
-- DirName:CN = t221
-- DirName:CN = t222
-- DirName:CN = t223
-- DirName:CN = t224
-- DirName:CN = t225
-- DirName:CN = t226
-- DirName:CN = t227
-- DirName:CN = t228
-- DirName:CN = t229
-- DirName:CN = t230
-- DirName:CN = t231
-- DirName:CN = t232
-- DirName:CN = t233
-- DirName:CN = t234
-- DirName:CN = t235
-- DirName:CN = t236
-- DirName:CN = t237
-- DirName:CN = t238
-- DirName:CN = t239
-- DirName:CN = t240
-- DirName:CN = t241
-- DirName:CN = t242
-- DirName:CN = t243
-- DirName:CN = t244
-- DirName:CN = t245
-- DirName:CN = t246
-- DirName:CN = t247
-- DirName:CN = t248
-- DirName:CN = t249
-- DirName:CN = t250
-- DirName:CN = t251
-- DirName:CN = t252
-- DirName:CN = t253
-- DirName:CN = t254
-- DirName:CN = t255
-- DirName:CN = t256
-- DirName:CN = t257
-- DirName:CN = t258
-- DirName:CN = t259
-- DirName:CN = t260
-- DirName:CN = t261
-- DirName:CN = t262
-- DirName:CN = t263
-- DirName:CN = t264
-- DirName:CN = t265
-- DirName:CN = t266
-- DirName:CN = t267
-- DirName:CN = t268
-- DirName:CN = t269
-- DirName:CN = t270
-- DirName:CN = t271
-- DirName:CN = t272
-- DirName:CN = t273
-- DirName:CN = t274
-- DirName:CN = t275
-- DirName:CN = t276
-- DirName:CN = t277
-- DirName:CN = t278
-- DirName:CN = t279
-- DirName:CN = t280
-- DirName:CN = t281
-- DirName:CN = t282
-- DirName:CN = t283
-- DirName:CN = t284
-- DirName:CN = t285
-- DirName:CN = t286
-- DirName:CN = t287
-- DirName:CN = t288
-- DirName:CN = t289
-- DirName:CN = t290
-- DirName:CN = t291
-- DirName:CN = t292
-- DirName:CN = t293
-- DirName:CN = t294
-- DirName:CN = t295
-- DirName:CN = t296
-- DirName:CN = t297
-- DirName:CN = t298
-- DirName:CN = t299
-- DirName:CN = t300
-- DirName:CN = t301
-- DirName:CN = t302
-- DirName:CN = t303
-- DirName:CN = t304
-- DirName:CN = t305
-- DirName:CN = t306
-- DirName:CN = t307
-- DirName:CN = t308
-- DirName:CN = t309
-- DirName:CN = t310
-- DirName:CN = t311
-- DirName:CN = t312
-- DirName:CN = t313
-- DirName:CN = t314
-- DirName:CN = t315
-- DirName:CN = t316
-- DirName:CN = t317
-- DirName:CN = t318
-- DirName:CN = t319
-- DirName:CN = t320
-- DirName:CN = t321
-- DirName:CN = t322
-- DirName:CN = t323
-- DirName:CN = t324
-- DirName:CN = t325
-- DirName:CN = t326
-- DirName:CN = t327
-- DirName:CN = t328
-- DirName:CN = t329
-- DirName:CN = t330
-- DirName:CN = t331
-- DirName:CN = t332
-- DirName:CN = t333
-- DirName:CN = t334
-- DirName:CN = t335
-- DirName:CN = t336
-- DirName:CN = t337
-- DirName:CN = t338
-- DirName:CN = t339
-- DirName:CN = t340
-- DirName:CN = t341
-- DirName:CN = t342
-- DirName:CN = t343
-- DirName:CN = t344
-- DirName:CN = t345
-- DirName:CN = t346
-- DirName:CN = t347
-- DirName:CN = t348
-- DirName:CN = t349
-- DirName:CN = t350
-- DirName:CN = t351
-- DirName:CN = t352
-- DirName:CN = t353
-- DirName:CN = t354
-- DirName:CN = t355
-- DirName:CN = t356
-- DirName:CN = t357
-- DirName:CN = t358
-- DirName:CN = t359
-- DirName:CN = t360
-- DirName:CN = t361
-- DirName:CN = t362
-- DirName:CN = t363
-- DirName:CN = t364
-- DirName:CN = t365
-- DirName:CN = t366
-- DirName:CN = t367
-- DirName:CN = t368
-- DirName:CN = t369
-- DirName:CN = t370
-- DirName:CN = t371
-- DirName:CN = t372
-- DirName:CN = t373
-- DirName:CN = t374
-- DirName:CN = t375
-- DirName:CN = t376
-- DirName:CN = t377
-- DirName:CN = t378
-- DirName:CN = t379
-- DirName:CN = t380
-- DirName:CN = t381
-- DirName:CN = t382
-- DirName:CN = t383
-- DirName:CN = t384
-- DirName:CN = t385
-- DirName:CN = t386
-- DirName:CN = t387
-- DirName:CN = t388
-- DirName:CN = t389
-- DirName:CN = t390
-- DirName:CN = t391
-- DirName:CN = t392
-- DirName:CN = t393
-- DirName:CN = t394
-- DirName:CN = t395
-- DirName:CN = t396
-- DirName:CN = t397
-- DirName:CN = t398
-- DirName:CN = t399
-- DirName:CN = t400
-- DirName:CN = t401
-- DirName:CN = t402
-- DirName:CN = t403
-- DirName:CN = t404
-- DirName:CN = t405
-- DirName:CN = t406
-- DirName:CN = t407
-- DirName:CN = t408
-- DirName:CN = t409
-- DirName:CN = t410
-- DirName:CN = t411
-- DirName:CN = t412
-- DirName:CN = t413
-- DirName:CN = t414
-- DirName:CN = t415
-- DirName:CN = t416
-- DirName:CN = t417
-- DirName:CN = t418
-- DirName:CN = t419
-- DirName:CN = t420
-- DirName:CN = t421
-- DirName:CN = t422
-- DirName:CN = t423
-- DirName:CN = t424
-- DirName:CN = t425
-- DirName:CN = t426
-- DirName:CN = t427
-- DirName:CN = t428
-- DirName:CN = t429
-- DirName:CN = t430
-- DirName:CN = t431
-- DirName:CN = t432
-- DirName:CN = t433
-- DirName:CN = t434
-- DirName:CN = t435
-- DirName:CN = t436
-- DirName:CN = t437
-- DirName:CN = t438
-- DirName:CN = t439
-- DirName:CN = t440
-- DirName:CN = t441
-- DirName:CN = t442
-- DirName:CN = t443
-- DirName:CN = t444
-- DirName:CN = t445
-- DirName:CN = t446
-- DirName:CN = t447
-- DirName:CN = t448
-- DirName:CN = t449
-- DirName:CN = t450
-- DirName:CN = t451
-- DirName:CN = t452
-- DirName:CN = t453
-- DirName:CN = t454
-- DirName:CN = t455
-- DirName:CN = t456
-- DirName:CN = t457
-- DirName:CN = t458
-- DirName:CN = t459
-- DirName:CN = t460
-- DirName:CN = t461
-- DirName:CN = t462
-- DirName:CN = t463
-- DirName:CN = t464
-- DirName:CN = t465
-- DirName:CN = t466
-- DirName:CN = t467
-- DirName:CN = t468
-- DirName:CN = t469
-- DirName:CN = t470
-- DirName:CN = t471
-- DirName:CN = t472
-- DirName:CN = t473
-- DirName:CN = t474
-- DirName:CN = t475
-- DirName:CN = t476
-- DirName:CN = t477
-- DirName:CN = t478
-- DirName:CN = t479
-- DirName:CN = t480
-- DirName:CN = t481
-- DirName:CN = t482
-- DirName:CN = t483
-- DirName:CN = t484
-- DirName:CN = t485
-- DirName:CN = t486
-- DirName:CN = t487
-- DirName:CN = t488
-- DirName:CN = t489
-- DirName:CN = t490
-- DirName:CN = t491
-- DirName:CN = t492
-- DirName:CN = t493
-- DirName:CN = t494
-- DirName:CN = t495
-- DirName:CN = t496
-- DirName:CN = t497
-- DirName:CN = t498
-- DirName:CN = t499
-- DirName:CN = t500
-- DirName:CN = t501
-- DirName:CN = t502
-- DirName:CN = t503
-- DirName:CN = t504
-- DirName:CN = t505
-- DirName:CN = t506
-- DirName:CN = t507
-- DirName:CN = t508
-- DirName:CN = t509
-- DirName:CN = t510
-- DirName:CN = t511
-- DirName:CN = t512
-- DirName:CN = t513
-- DirName:CN = t514
-- DirName:CN = t515
-- DirName:CN = t516
-- DirName:CN = t517
-- DirName:CN = t518
-- DirName:CN = t519
-- DirName:CN = t520
-- DirName:CN = t521
-- DirName:CN = t522
-- DirName:CN = t523
-- DirName:CN = t524
-- DirName:CN = t525
-- DirName:CN = t526
-- DirName:CN = t527
-- DirName:CN = t528
-- DirName:CN = t529
-- DirName:CN = t530
-- DirName:CN = t531
-- DirName:CN = t532
-- DirName:CN = t533
-- DirName:CN = t534
-- DirName:CN = t535
-- DirName:CN = t536
-- DirName:CN = t537
-- DirName:CN = t538
-- DirName:CN = t539
-- DirName:CN = t540
-- DirName:CN = t541
-- DirName:CN = t542
-- DirName:CN = t543
-- DirName:CN = t544
-- DirName:CN = t545
-- DirName:CN = t546
-- DirName:CN = t547
-- DirName:CN = t548
-- DirName:CN = t549
-- DirName:CN = t550
-- DirName:CN = t551
-- DirName:CN = t552
-- DirName:CN = t553
-- DirName:CN = t554
-- DirName:CN = t555
-- DirName:CN = t556
-- DirName:CN = t557
-- DirName:CN = t558
-- DirName:CN = t559
-- DirName:CN = t560
-- DirName:CN = t561
-- DirName:CN = t562
-- DirName:CN = t563
-- DirName:CN = t564
-- DirName:CN = t565
-- DirName:CN = t566
-- DirName:CN = t567
-- DirName:CN = t568
-- DirName:CN = t569
-- DirName:CN = t570
-- DirName:CN = t571
-- DirName:CN = t572
-- DirName:CN = t573
-- DirName:CN = t574
-- DirName:CN = t575
-- DirName:CN = t576
-- DirName:CN = t577
-- DirName:CN = t578
-- DirName:CN = t579
-- DirName:CN = t580
-- DirName:CN = t581
-- DirName:CN = t582
-- DirName:CN = t583
-- DirName:CN = t584
-- DirName:CN = t585
-- DirName:CN = t586
-- DirName:CN = t587
-- DirName:CN = t588
-- DirName:CN = t589
-- DirName:CN = t590
-- DirName:CN = t591
-- DirName:CN = t592
-- DirName:CN = t593
-- DirName:CN = t594
-- DirName:CN = t595
-- DirName:CN = t596
-- DirName:CN = t597
-- DirName:CN = t598
-- DirName:CN = t599
-- DirName:CN = t600
-- DirName:CN = t601
-- DirName:CN = t602
-- DirName:CN = t603
-- DirName:CN = t604
-- DirName:CN = t605
-- DirName:CN = t606
-- DirName:CN = t607
-- DirName:CN = t608
-- DirName:CN = t609
-- DirName:CN = t610
-- DirName:CN = t611
-- DirName:CN = t612
-- DirName:CN = t613
-- DirName:CN = t614
-- DirName:CN = t615
-- DirName:CN = t616
-- DirName:CN = t617
-- DirName:CN = t618
-- DirName:CN = t619
-- DirName:CN = t620
-- DirName:CN = t621
-- DirName:CN = t622
-- DirName:CN = t623
-- DirName:CN = t624
-- DirName:CN = t625
-- DirName:CN = t626
-- DirName:CN = t627
-- DirName:CN = t628
-- DirName:CN = t629
-- DirName:CN = t630
-- DirName:CN = t631
-- DirName:CN = t632
-- DirName:CN = t633
-- DirName:CN = t634
-- DirName:CN = t635
-- DirName:CN = t636
-- DirName:CN = t637
-- DirName:CN = t638
-- DirName:CN = t639
-- DirName:CN = t640
-- DirName:CN = t641
-- DirName:CN = t642
-- DirName:CN = t643
-- DirName:CN = t644
-- DirName:CN = t645
-- DirName:CN = t646
-- DirName:CN = t647
-- DirName:CN = t648
-- DirName:CN = t649
-- DirName:CN = t650
-- DirName:CN = t651
-- DirName:CN = t652
-- DirName:CN = t653
-- DirName:CN = t654
-- DirName:CN = t655
-- DirName:CN = t656
-- DirName:CN = t657
-- DirName:CN = t658
-- DirName:CN = t659
-- DirName:CN = t660
-- DirName:CN = t661
-- DirName:CN = t662
-- DirName:CN = t663
-- DirName:CN = t664
-- DirName:CN = t665
-- DirName:CN = t666
-- DirName:CN = t667
-- DirName:CN = t668
-- DirName:CN = t669
-- DirName:CN = t670
-- DirName:CN = t671
-- DirName:CN = t672
-- DirName:CN = t673
-- DirName:CN = t674
-- DirName:CN = t675
-- DirName:CN = t676
-- DirName:CN = t677
-- DirName:CN = t678
-- DirName:CN = t679
-- DirName:CN = t680
-- DirName:CN = t681
-- DirName:CN = t682
-- DirName:CN = t683
-- DirName:CN = t684
-- DirName:CN = t685
-- DirName:CN = t686
-- DirName:CN = t687
-- DirName:CN = t688
-- DirName:CN = t689
-- DirName:CN = t690
-- DirName:CN = t691
-- DirName:CN = t692
-- DirName:CN = t693
-- DirName:CN = t694
-- DirName:CN = t695
-- DirName:CN = t696
-- DirName:CN = t697
-- DirName:CN = t698
-- DirName:CN = t699
-- DirName:CN = t700
-- DirName:CN = t701
-- DirName:CN = t702
-- DirName:CN = t703
-- DirName:CN = t704
-- DirName:CN = t705
-- DirName:CN = t706
-- DirName:CN = t707
-- DirName:CN = t708
-- DirName:CN = t709
-- DirName:CN = t710
-- DirName:CN = t711
-- DirName:CN = t712
-- DirName:CN = t713
-- DirName:CN = t714
-- DirName:CN = t715
-- DirName:CN = t716
-- DirName:CN = t717
-- DirName:CN = t718
-- DirName:CN = t719
-- DirName:CN = t720
-- DirName:CN = t721
-- DirName:CN = t722
-- DirName:CN = t723
-- DirName:CN = t724
-- DirName:CN = t725
-- DirName:CN = t726
-- DirName:CN = t727
-- DirName:CN = t728
-- DirName:CN = t729
-- DirName:CN = t730
-- DirName:CN = t731
-- DirName:CN = t732
-- DirName:CN = t733
-- DirName:CN = t734
-- DirName:CN = t735
-- DirName:CN = t736
-- DirName:CN = t737
-- DirName:CN = t738
-- DirName:CN = t739
-- DirName:CN = t740
-- DirName:CN = t741
-- DirName:CN = t742
-- DirName:CN = t743
-- DirName:CN = t744
-- DirName:CN = t745
-- DirName:CN = t746
-- DirName:CN = t747
-- DirName:CN = t748
-- DirName:CN = t749
-- DirName:CN = t750
-- DirName:CN = t751
-- DirName:CN = t752
-- DirName:CN = t753
-- DirName:CN = t754
-- DirName:CN = t755
-- DirName:CN = t756
-- DirName:CN = t757
-- DirName:CN = t758
-- DirName:CN = t759
-- DirName:CN = t760
-- DirName:CN = t761
-- DirName:CN = t762
-- DirName:CN = t763
-- DirName:CN = t764
-- DirName:CN = t765
-- DirName:CN = t766
-- DirName:CN = t767
-- DirName:CN = t768
-- DirName:CN = t769
-- DirName:CN = t770
-- DirName:CN = t771
-- DirName:CN = t772
-- DirName:CN = t773
-- DirName:CN = t774
-- DirName:CN = t775
-- DirName:CN = t776
-- DirName:CN = t777
-- DirName:CN = t778
-- DirName:CN = t779
-- DirName:CN = t780
-- DirName:CN = t781
-- DirName:CN = t782
-- DirName:CN = t783
-- DirName:CN = t784
-- DirName:CN = t785
-- DirName:CN = t786
-- DirName:CN = t787
-- DirName:CN = t788
-- DirName:CN = t789
-- DirName:CN = t790
-- DirName:CN = t791
-- DirName:CN = t792
-- DirName:CN = t793
-- DirName:CN = t794
-- DirName:CN = t795
-- DirName:CN = t796
-- DirName:CN = t797
-- DirName:CN = t798
-- DirName:CN = t799
-- DirName:CN = t800
-- DirName:CN = t801
-- DirName:CN = t802
-- DirName:CN = t803
-- DirName:CN = t804
-- DirName:CN = t805
-- DirName:CN = t806
-- DirName:CN = t807
-- DirName:CN = t808
-- DirName:CN = t809
-- DirName:CN = t810
-- DirName:CN = t811
-- DirName:CN = t812
-- DirName:CN = t813
-- DirName:CN = t814
-- DirName:CN = t815
-- DirName:CN = t816
-- DirName:CN = t817
-- DirName:CN = t818
-- DirName:CN = t819
-- DirName:CN = t820
-- DirName:CN = t821
-- DirName:CN = t822
-- DirName:CN = t823
-- DirName:CN = t824
-- DirName:CN = t825
-- DirName:CN = t826
-- DirName:CN = t827
-- DirName:CN = t828
-- DirName:CN = t829
-- DirName:CN = t830
-- DirName:CN = t831
-- DirName:CN = t832
-- DirName:CN = t833
-- DirName:CN = t834
-- DirName:CN = t835
-- DirName:CN = t836
-- DirName:CN = t837
-- DirName:CN = t838
-- DirName:CN = t839
-- DirName:CN = t840
-- DirName:CN = t841
-- DirName:CN = t842
-- DirName:CN = t843
-- DirName:CN = t844
-- DirName:CN = t845
-- DirName:CN = t846
-- DirName:CN = t847
-- DirName:CN = t848
-- DirName:CN = t849
-- DirName:CN = t850
-- DirName:CN = t851
-- DirName:CN = t852
-- DirName:CN = t853
-- DirName:CN = t854
-- DirName:CN = t855
-- DirName:CN = t856
-- DirName:CN = t857
-- DirName:CN = t858
-- DirName:CN = t859
-- DirName:CN = t860
-- DirName:CN = t861
-- DirName:CN = t862
-- DirName:CN = t863
-- DirName:CN = t864
-- DirName:CN = t865
-- DirName:CN = t866
-- DirName:CN = t867
-- DirName:CN = t868
-- DirName:CN = t869
-- DirName:CN = t870
-- DirName:CN = t871
-- DirName:CN = t872
-- DirName:CN = t873
-- DirName:CN = t874
-- DirName:CN = t875
-- DirName:CN = t876
-- DirName:CN = t877
-- DirName:CN = t878
-- DirName:CN = t879
-- DirName:CN = t880
-- DirName:CN = t881
-- DirName:CN = t882
-- DirName:CN = t883
-- DirName:CN = t884
-- DirName:CN = t885
-- DirName:CN = t886
-- DirName:CN = t887
-- DirName:CN = t888
-- DirName:CN = t889
-- DirName:CN = t890
-- DirName:CN = t891
-- DirName:CN = t892
-- DirName:CN = t893
-- DirName:CN = t894
-- DirName:CN = t895
-- DirName:CN = t896
-- DirName:CN = t897
-- DirName:CN = t898
-- DirName:CN = t899
-- DirName:CN = t900
-- DirName:CN = t901
-- DirName:CN = t902
-- DirName:CN = t903
-- DirName:CN = t904
-- DirName:CN = t905
-- DirName:CN = t906
-- DirName:CN = t907
-- DirName:CN = t908
-- DirName:CN = t909
-- DirName:CN = t910
-- DirName:CN = t911
-- DirName:CN = t912
-- DirName:CN = t913
-- DirName:CN = t914
-- DirName:CN = t915
-- DirName:CN = t916
-- DirName:CN = t917
-- DirName:CN = t918
-- DirName:CN = t919
-- DirName:CN = t920
-- DirName:CN = t921
-- DirName:CN = t922
-- DirName:CN = t923
-- DirName:CN = t924
-- DirName:CN = t925
-- DirName:CN = t926
-- DirName:CN = t927
-- DirName:CN = t928
-- DirName:CN = t929
-- DirName:CN = t930
-- DirName:CN = t931
-- DirName:CN = t932
-- DirName:CN = t933
-- DirName:CN = t934
-- DirName:CN = t935
-- DirName:CN = t936
-- DirName:CN = t937
-- DirName:CN = t938
-- DirName:CN = t939
-- DirName:CN = t940
-- DirName:CN = t941
-- DirName:CN = t942
-- DirName:CN = t943
-- DirName:CN = t944
-- DirName:CN = t945
-- DirName:CN = t946
-- DirName:CN = t947
-- DirName:CN = t948
-- DirName:CN = t949
-- DirName:CN = t950
-- DirName:CN = t951
-- DirName:CN = t952
-- DirName:CN = t953
-- DirName:CN = t954
-- DirName:CN = t955
-- DirName:CN = t956
-- DirName:CN = t957
-- DirName:CN = t958
-- DirName:CN = t959
-- DirName:CN = t960
-- DirName:CN = t961
-- DirName:CN = t962
-- DirName:CN = t963
-- DirName:CN = t964
-- DirName:CN = t965
-- DirName:CN = t966
-- DirName:CN = t967
-- DirName:CN = t968
-- DirName:CN = t969
-- DirName:CN = t970
-- DirName:CN = t971
-- DirName:CN = t972
-- DirName:CN = t973
-- DirName:CN = t974
-- DirName:CN = t975
-- DirName:CN = t976
-- DirName:CN = t977
-- DirName:CN = t978
-- DirName:CN = t979
-- DirName:CN = t980
-- DirName:CN = t981
-- DirName:CN = t982
-- DirName:CN = t983
-- DirName:CN = t984
-- DirName:CN = t985
-- DirName:CN = t986
-- DirName:CN = t987
-- DirName:CN = t988
-- DirName:CN = t989
-- DirName:CN = t990
-- DirName:CN = t991
-- DirName:CN = t992
-- DirName:CN = t993
-- DirName:CN = t994
-- DirName:CN = t995
-- DirName:CN = t996
-- DirName:CN = t997
-- DirName:CN = t998
-- DirName:CN = t999
-- DirName:CN = t1000
-- DirName:CN = t1001
-- DirName:CN = t1002
-- DirName:CN = t1003
-- DirName:CN = t1004
-- DirName:CN = t1005
-- DirName:CN = t1006
-- DirName:CN = t1007
-- DirName:CN = t1008
-- DirName:CN = t1009
-- DirName:CN = t1010
-- DirName:CN = t1011
-- DirName:CN = t1012
-- DirName:CN = t1013
-- DirName:CN = t1014
-- DirName:CN = t1015
-- DirName:CN = t1016
-- DirName:CN = t1017
-- DirName:CN = t1018
-- DirName:CN = t1019
-- DirName:CN = t1020
-- DirName:CN = t1021
-- DirName:CN = t1022
-- DirName:CN = t1023
-- DirName:CN = t1024
-- URI:http://test/0
-- URI:http://test/1
-- URI:http://test/2
-- URI:http://test/3
-- URI:http://test/4
-- URI:http://test/5
-- URI:http://test/6
-- URI:http://test/7
-- URI:http://test/8
-- URI:http://test/9
-- URI:http://test/10
-- URI:http://test/11
-- URI:http://test/12
-- URI:http://test/13
-- URI:http://test/14
-- URI:http://test/15
-- URI:http://test/16
-- URI:http://test/17
-- URI:http://test/18
-- URI:http://test/19
-- URI:http://test/20
-- URI:http://test/21
-- URI:http://test/22
-- URI:http://test/23
-- URI:http://test/24
-- URI:http://test/25
-- URI:http://test/26
-- URI:http://test/27
-- URI:http://test/28
-- URI:http://test/29
-- URI:http://test/30
-- URI:http://test/31
-- URI:http://test/32
-- URI:http://test/33
-- URI:http://test/34
-- URI:http://test/35
-- URI:http://test/36
-- URI:http://test/37
-- URI:http://test/38
-- URI:http://test/39
-- URI:http://test/40
-- URI:http://test/41
-- URI:http://test/42
-- URI:http://test/43
-- URI:http://test/44
-- URI:http://test/45
-- URI:http://test/46
-- URI:http://test/47
-- URI:http://test/48
-- URI:http://test/49
-- URI:http://test/50
-- URI:http://test/51
-- URI:http://test/52
-- URI:http://test/53
-- URI:http://test/54
-- URI:http://test/55
-- URI:http://test/56
-- URI:http://test/57
-- URI:http://test/58
-- URI:http://test/59
-- URI:http://test/60
-- URI:http://test/61
-- URI:http://test/62
-- URI:http://test/63
-- URI:http://test/64
-- URI:http://test/65
-- URI:http://test/66
-- URI:http://test/67
-- URI:http://test/68
-- URI:http://test/69
-- URI:http://test/70
-- URI:http://test/71
-- URI:http://test/72
-- URI:http://test/73
-- URI:http://test/74
-- URI:http://test/75
-- URI:http://test/76
-- URI:http://test/77
-- URI:http://test/78
-- URI:http://test/79
-- URI:http://test/80
-- URI:http://test/81
-- URI:http://test/82
-- URI:http://test/83
-- URI:http://test/84
-- URI:http://test/85
-- URI:http://test/86
-- URI:http://test/87
-- URI:http://test/88
-- URI:http://test/89
-- URI:http://test/90
-- URI:http://test/91
-- URI:http://test/92
-- URI:http://test/93
-- URI:http://test/94
-- URI:http://test/95
-- URI:http://test/96
-- URI:http://test/97
-- URI:http://test/98
-- URI:http://test/99
-- URI:http://test/100
-- URI:http://test/101
-- URI:http://test/102
-- URI:http://test/103
-- URI:http://test/104
-- URI:http://test/105
-- URI:http://test/106
-- URI:http://test/107
-- URI:http://test/108
-- URI:http://test/109
-- URI:http://test/110
-- URI:http://test/111
-- URI:http://test/112
-- URI:http://test/113
-- URI:http://test/114
-- URI:http://test/115
-- URI:http://test/116
-- URI:http://test/117
-- URI:http://test/118
-- URI:http://test/119
-- URI:http://test/120
-- URI:http://test/121
-- URI:http://test/122
-- URI:http://test/123
-- URI:http://test/124
-- URI:http://test/125
-- URI:http://test/126
-- URI:http://test/127
-- URI:http://test/128
-- URI:http://test/129
-- URI:http://test/130
-- URI:http://test/131
-- URI:http://test/132
-- URI:http://test/133
-- URI:http://test/134
-- URI:http://test/135
-- URI:http://test/136
-- URI:http://test/137
-- URI:http://test/138
-- URI:http://test/139
-- URI:http://test/140
-- URI:http://test/141
-- URI:http://test/142
-- URI:http://test/143
-- URI:http://test/144
-- URI:http://test/145
-- URI:http://test/146
-- URI:http://test/147
-- URI:http://test/148
-- URI:http://test/149
-- URI:http://test/150
-- URI:http://test/151
-- URI:http://test/152
-- URI:http://test/153
-- URI:http://test/154
-- URI:http://test/155
-- URI:http://test/156
-- URI:http://test/157
-- URI:http://test/158
-- URI:http://test/159
-- URI:http://test/160
-- URI:http://test/161
-- URI:http://test/162
-- URI:http://test/163
-- URI:http://test/164
-- URI:http://test/165
-- URI:http://test/166
-- URI:http://test/167
-- URI:http://test/168
-- URI:http://test/169
-- URI:http://test/170
-- URI:http://test/171
-- URI:http://test/172
-- URI:http://test/173
-- URI:http://test/174
-- URI:http://test/175
-- URI:http://test/176
-- URI:http://test/177
-- URI:http://test/178
-- URI:http://test/179
-- URI:http://test/180
-- URI:http://test/181
-- URI:http://test/182
-- URI:http://test/183
-- URI:http://test/184
-- URI:http://test/185
-- URI:http://test/186
-- URI:http://test/187
-- URI:http://test/188
-- URI:http://test/189
-- URI:http://test/190
-- URI:http://test/191
-- URI:http://test/192
-- URI:http://test/193
-- URI:http://test/194
-- URI:http://test/195
-- URI:http://test/196
-- URI:http://test/197
-- URI:http://test/198
-- URI:http://test/199
-- URI:http://test/200
-- URI:http://test/201
-- URI:http://test/202
-- URI:http://test/203
-- URI:http://test/204
-- URI:http://test/205
-- URI:http://test/206
-- URI:http://test/207
-- URI:http://test/208
-- URI:http://test/209
-- URI:http://test/210
-- URI:http://test/211
-- URI:http://test/212
-- URI:http://test/213
-- URI:http://test/214
-- URI:http://test/215
-- URI:http://test/216
-- URI:http://test/217
-- URI:http://test/218
-- URI:http://test/219
-- URI:http://test/220
-- URI:http://test/221
-- URI:http://test/222
-- URI:http://test/223
-- URI:http://test/224
-- URI:http://test/225
-- URI:http://test/226
-- URI:http://test/227
-- URI:http://test/228
-- URI:http://test/229
-- URI:http://test/230
-- URI:http://test/231
-- URI:http://test/232
-- URI:http://test/233
-- URI:http://test/234
-- URI:http://test/235
-- URI:http://test/236
-- URI:http://test/237
-- URI:http://test/238
-- URI:http://test/239
-- URI:http://test/240
-- URI:http://test/241
-- URI:http://test/242
-- URI:http://test/243
-- URI:http://test/244
-- URI:http://test/245
-- URI:http://test/246
-- URI:http://test/247
-- URI:http://test/248
-- URI:http://test/249
-- URI:http://test/250
-- URI:http://test/251
-- URI:http://test/252
-- URI:http://test/253
-- URI:http://test/254
-- URI:http://test/255
-- URI:http://test/256
-- URI:http://test/257
-- URI:http://test/258
-- URI:http://test/259
-- URI:http://test/260
-- URI:http://test/261
-- URI:http://test/262
-- URI:http://test/263
-- URI:http://test/264
-- URI:http://test/265
-- URI:http://test/266
-- URI:http://test/267
-- URI:http://test/268
-- URI:http://test/269
-- URI:http://test/270
-- URI:http://test/271
-- URI:http://test/272
-- URI:http://test/273
-- URI:http://test/274
-- URI:http://test/275
-- URI:http://test/276
-- URI:http://test/277
-- URI:http://test/278
-- URI:http://test/279
-- URI:http://test/280
-- URI:http://test/281
-- URI:http://test/282
-- URI:http://test/283
-- URI:http://test/284
-- URI:http://test/285
-- URI:http://test/286
-- URI:http://test/287
-- URI:http://test/288
-- URI:http://test/289
-- URI:http://test/290
-- URI:http://test/291
-- URI:http://test/292
-- URI:http://test/293
-- URI:http://test/294
-- URI:http://test/295
-- URI:http://test/296
-- URI:http://test/297
-- URI:http://test/298
-- URI:http://test/299
-- URI:http://test/300
-- URI:http://test/301
-- URI:http://test/302
-- URI:http://test/303
-- URI:http://test/304
-- URI:http://test/305
-- URI:http://test/306
-- URI:http://test/307
-- URI:http://test/308
-- URI:http://test/309
-- URI:http://test/310
-- URI:http://test/311
-- URI:http://test/312
-- URI:http://test/313
-- URI:http://test/314
-- URI:http://test/315
-- URI:http://test/316
-- URI:http://test/317
-- URI:http://test/318
-- URI:http://test/319
-- URI:http://test/320
-- URI:http://test/321
-- URI:http://test/322
-- URI:http://test/323
-- URI:http://test/324
-- URI:http://test/325
-- URI:http://test/326
-- URI:http://test/327
-- URI:http://test/328
-- URI:http://test/329
-- URI:http://test/330
-- URI:http://test/331
-- URI:http://test/332
-- URI:http://test/333
-- URI:http://test/334
-- URI:http://test/335
-- URI:http://test/336
-- URI:http://test/337
-- URI:http://test/338
-- URI:http://test/339
-- URI:http://test/340
-- URI:http://test/341
-- URI:http://test/342
-- URI:http://test/343
-- URI:http://test/344
-- URI:http://test/345
-- URI:http://test/346
-- URI:http://test/347
-- URI:http://test/348
-- URI:http://test/349
-- URI:http://test/350
-- URI:http://test/351
-- URI:http://test/352
-- URI:http://test/353
-- URI:http://test/354
-- URI:http://test/355
-- URI:http://test/356
-- URI:http://test/357
-- URI:http://test/358
-- URI:http://test/359
-- URI:http://test/360
-- URI:http://test/361
-- URI:http://test/362
-- URI:http://test/363
-- URI:http://test/364
-- URI:http://test/365
-- URI:http://test/366
-- URI:http://test/367
-- URI:http://test/368
-- URI:http://test/369
-- URI:http://test/370
-- URI:http://test/371
-- URI:http://test/372
-- URI:http://test/373
-- URI:http://test/374
-- URI:http://test/375
-- URI:http://test/376
-- URI:http://test/377
-- URI:http://test/378
-- URI:http://test/379
-- URI:http://test/380
-- URI:http://test/381
-- URI:http://test/382
-- URI:http://test/383
-- URI:http://test/384
-- URI:http://test/385
-- URI:http://test/386
-- URI:http://test/387
-- URI:http://test/388
-- URI:http://test/389
-- URI:http://test/390
-- URI:http://test/391
-- URI:http://test/392
-- URI:http://test/393
-- URI:http://test/394
-- URI:http://test/395
-- URI:http://test/396
-- URI:http://test/397
-- URI:http://test/398
-- URI:http://test/399
-- URI:http://test/400
-- URI:http://test/401
-- URI:http://test/402
-- URI:http://test/403
-- URI:http://test/404
-- URI:http://test/405
-- URI:http://test/406
-- URI:http://test/407
-- URI:http://test/408
-- URI:http://test/409
-- URI:http://test/410
-- URI:http://test/411
-- URI:http://test/412
-- URI:http://test/413
-- URI:http://test/414
-- URI:http://test/415
-- URI:http://test/416
-- URI:http://test/417
-- URI:http://test/418
-- URI:http://test/419
-- URI:http://test/420
-- URI:http://test/421
-- URI:http://test/422
-- URI:http://test/423
-- URI:http://test/424
-- URI:http://test/425
-- URI:http://test/426
-- URI:http://test/427
-- URI:http://test/428
-- URI:http://test/429
-- URI:http://test/430
-- URI:http://test/431
-- URI:http://test/432
-- URI:http://test/433
-- URI:http://test/434
-- URI:http://test/435
-- URI:http://test/436
-- URI:http://test/437
-- URI:http://test/438
-- URI:http://test/439
-- URI:http://test/440
-- URI:http://test/441
-- URI:http://test/442
-- URI:http://test/443
-- URI:http://test/444
-- URI:http://test/445
-- URI:http://test/446
-- URI:http://test/447
-- URI:http://test/448
-- URI:http://test/449
-- URI:http://test/450
-- URI:http://test/451
-- URI:http://test/452
-- URI:http://test/453
-- URI:http://test/454
-- URI:http://test/455
-- URI:http://test/456
-- URI:http://test/457
-- URI:http://test/458
-- URI:http://test/459
-- URI:http://test/460
-- URI:http://test/461
-- URI:http://test/462
-- URI:http://test/463
-- URI:http://test/464
-- URI:http://test/465
-- URI:http://test/466
-- URI:http://test/467
-- URI:http://test/468
-- URI:http://test/469
-- URI:http://test/470
-- URI:http://test/471
-- URI:http://test/472
-- URI:http://test/473
-- URI:http://test/474
-- URI:http://test/475
-- URI:http://test/476
-- URI:http://test/477
-- URI:http://test/478
-- URI:http://test/479
-- URI:http://test/480
-- URI:http://test/481
-- URI:http://test/482
-- URI:http://test/483
-- URI:http://test/484
-- URI:http://test/485
-- URI:http://test/486
-- URI:http://test/487
-- URI:http://test/488
-- URI:http://test/489
-- URI:http://test/490
-- URI:http://test/491
-- URI:http://test/492
-- URI:http://test/493
-- URI:http://test/494
-- URI:http://test/495
-- URI:http://test/496
-- URI:http://test/497
-- URI:http://test/498
-- URI:http://test/499
-- URI:http://test/500
-- URI:http://test/501
-- URI:http://test/502
-- URI:http://test/503
-- URI:http://test/504
-- URI:http://test/505
-- URI:http://test/506
-- URI:http://test/507
-- URI:http://test/508
-- URI:http://test/509
-- URI:http://test/510
-- URI:http://test/511
-- URI:http://test/512
-- URI:http://test/513
-- URI:http://test/514
-- URI:http://test/515
-- URI:http://test/516
-- URI:http://test/517
-- URI:http://test/518
-- URI:http://test/519
-- URI:http://test/520
-- URI:http://test/521
-- URI:http://test/522
-- URI:http://test/523
-- URI:http://test/524
-- URI:http://test/525
-- URI:http://test/526
-- URI:http://test/527
-- URI:http://test/528
-- URI:http://test/529
-- URI:http://test/530
-- URI:http://test/531
-- URI:http://test/532
-- URI:http://test/533
-- URI:http://test/534
-- URI:http://test/535
-- URI:http://test/536
-- URI:http://test/537
-- URI:http://test/538
-- URI:http://test/539
-- URI:http://test/540
-- URI:http://test/541
-- URI:http://test/542
-- URI:http://test/543
-- URI:http://test/544
-- URI:http://test/545
-- URI:http://test/546
-- URI:http://test/547
-- URI:http://test/548
-- URI:http://test/549
-- URI:http://test/550
-- URI:http://test/551
-- URI:http://test/552
-- URI:http://test/553
-- URI:http://test/554
-- URI:http://test/555
-- URI:http://test/556
-- URI:http://test/557
-- URI:http://test/558
-- URI:http://test/559
-- URI:http://test/560
-- URI:http://test/561
-- URI:http://test/562
-- URI:http://test/563
-- URI:http://test/564
-- URI:http://test/565
-- URI:http://test/566
-- URI:http://test/567
-- URI:http://test/568
-- URI:http://test/569
-- URI:http://test/570
-- URI:http://test/571
-- URI:http://test/572
-- URI:http://test/573
-- URI:http://test/574
-- URI:http://test/575
-- URI:http://test/576
-- URI:http://test/577
-- URI:http://test/578
-- URI:http://test/579
-- URI:http://test/580
-- URI:http://test/581
-- URI:http://test/582
-- URI:http://test/583
-- URI:http://test/584
-- URI:http://test/585
-- URI:http://test/586
-- URI:http://test/587
-- URI:http://test/588
-- URI:http://test/589
-- URI:http://test/590
-- URI:http://test/591
-- URI:http://test/592
-- URI:http://test/593
-- URI:http://test/594
-- URI:http://test/595
-- URI:http://test/596
-- URI:http://test/597
-- URI:http://test/598
-- URI:http://test/599
-- URI:http://test/600
-- URI:http://test/601
-- URI:http://test/602
-- URI:http://test/603
-- URI:http://test/604
-- URI:http://test/605
-- URI:http://test/606
-- URI:http://test/607
-- URI:http://test/608
-- URI:http://test/609
-- URI:http://test/610
-- URI:http://test/611
-- URI:http://test/612
-- URI:http://test/613
-- URI:http://test/614
-- URI:http://test/615
-- URI:http://test/616
-- URI:http://test/617
-- URI:http://test/618
-- URI:http://test/619
-- URI:http://test/620
-- URI:http://test/621
-- URI:http://test/622
-- URI:http://test/623
-- URI:http://test/624
-- URI:http://test/625
-- URI:http://test/626
-- URI:http://test/627
-- URI:http://test/628
-- URI:http://test/629
-- URI:http://test/630
-- URI:http://test/631
-- URI:http://test/632
-- URI:http://test/633
-- URI:http://test/634
-- URI:http://test/635
-- URI:http://test/636
-- URI:http://test/637
-- URI:http://test/638
-- URI:http://test/639
-- URI:http://test/640
-- URI:http://test/641
-- URI:http://test/642
-- URI:http://test/643
-- URI:http://test/644
-- URI:http://test/645
-- URI:http://test/646
-- URI:http://test/647
-- URI:http://test/648
-- URI:http://test/649
-- URI:http://test/650
-- URI:http://test/651
-- URI:http://test/652
-- URI:http://test/653
-- URI:http://test/654
-- URI:http://test/655
-- URI:http://test/656
-- URI:http://test/657
-- URI:http://test/658
-- URI:http://test/659
-- URI:http://test/660
-- URI:http://test/661
-- URI:http://test/662
-- URI:http://test/663
-- URI:http://test/664
-- URI:http://test/665
-- URI:http://test/666
-- URI:http://test/667
-- URI:http://test/668
-- URI:http://test/669
-- URI:http://test/670
-- URI:http://test/671
-- URI:http://test/672
-- URI:http://test/673
-- URI:http://test/674
-- URI:http://test/675
-- URI:http://test/676
-- URI:http://test/677
-- URI:http://test/678
-- URI:http://test/679
-- URI:http://test/680
-- URI:http://test/681
-- URI:http://test/682
-- URI:http://test/683
-- URI:http://test/684
-- URI:http://test/685
-- URI:http://test/686
-- URI:http://test/687
-- URI:http://test/688
-- URI:http://test/689
-- URI:http://test/690
-- URI:http://test/691
-- URI:http://test/692
-- URI:http://test/693
-- URI:http://test/694
-- URI:http://test/695
-- URI:http://test/696
-- URI:http://test/697
-- URI:http://test/698
-- URI:http://test/699
-- URI:http://test/700
-- URI:http://test/701
-- URI:http://test/702
-- URI:http://test/703
-- URI:http://test/704
-- URI:http://test/705
-- URI:http://test/706
-- URI:http://test/707
-- URI:http://test/708
-- URI:http://test/709
-- URI:http://test/710
-- URI:http://test/711
-- URI:http://test/712
-- URI:http://test/713
-- URI:http://test/714
-- URI:http://test/715
-- URI:http://test/716
-- URI:http://test/717
-- URI:http://test/718
-- URI:http://test/719
-- URI:http://test/720
-- URI:http://test/721
-- URI:http://test/722
-- URI:http://test/723
-- URI:http://test/724
-- URI:http://test/725
-- URI:http://test/726
-- URI:http://test/727
-- URI:http://test/728
-- URI:http://test/729
-- URI:http://test/730
-- URI:http://test/731
-- URI:http://test/732
-- URI:http://test/733
-- URI:http://test/734
-- URI:http://test/735
-- URI:http://test/736
-- URI:http://test/737
-- URI:http://test/738
-- URI:http://test/739
-- URI:http://test/740
-- URI:http://test/741
-- URI:http://test/742
-- URI:http://test/743
-- URI:http://test/744
-- URI:http://test/745
-- URI:http://test/746
-- URI:http://test/747
-- URI:http://test/748
-- URI:http://test/749
-- URI:http://test/750
-- URI:http://test/751
-- URI:http://test/752
-- URI:http://test/753
-- URI:http://test/754
-- URI:http://test/755
-- URI:http://test/756
-- URI:http://test/757
-- URI:http://test/758
-- URI:http://test/759
-- URI:http://test/760
-- URI:http://test/761
-- URI:http://test/762
-- URI:http://test/763
-- URI:http://test/764
-- URI:http://test/765
-- URI:http://test/766
-- URI:http://test/767
-- URI:http://test/768
-- URI:http://test/769
-- URI:http://test/770
-- URI:http://test/771
-- URI:http://test/772
-- URI:http://test/773
-- URI:http://test/774
-- URI:http://test/775
-- URI:http://test/776
-- URI:http://test/777
-- URI:http://test/778
-- URI:http://test/779
-- URI:http://test/780
-- URI:http://test/781
-- URI:http://test/782
-- URI:http://test/783
-- URI:http://test/784
-- URI:http://test/785
-- URI:http://test/786
-- URI:http://test/787
-- URI:http://test/788
-- URI:http://test/789
-- URI:http://test/790
-- URI:http://test/791
-- URI:http://test/792
-- URI:http://test/793
-- URI:http://test/794
-- URI:http://test/795
-- URI:http://test/796
-- URI:http://test/797
-- URI:http://test/798
-- URI:http://test/799
-- URI:http://test/800
-- URI:http://test/801
-- URI:http://test/802
-- URI:http://test/803
-- URI:http://test/804
-- URI:http://test/805
-- URI:http://test/806
-- URI:http://test/807
-- URI:http://test/808
-- URI:http://test/809
-- URI:http://test/810
-- URI:http://test/811
-- URI:http://test/812
-- URI:http://test/813
-- URI:http://test/814
-- URI:http://test/815
-- URI:http://test/816
-- URI:http://test/817
-- URI:http://test/818
-- URI:http://test/819
-- URI:http://test/820
-- URI:http://test/821
-- URI:http://test/822
-- URI:http://test/823
-- URI:http://test/824
-- URI:http://test/825
-- URI:http://test/826
-- URI:http://test/827
-- URI:http://test/828
-- URI:http://test/829
-- URI:http://test/830
-- URI:http://test/831
-- URI:http://test/832
-- URI:http://test/833
-- URI:http://test/834
-- URI:http://test/835
-- URI:http://test/836
-- URI:http://test/837
-- URI:http://test/838
-- URI:http://test/839
-- URI:http://test/840
-- URI:http://test/841
-- URI:http://test/842
-- URI:http://test/843
-- URI:http://test/844
-- URI:http://test/845
-- URI:http://test/846
-- URI:http://test/847
-- URI:http://test/848
-- URI:http://test/849
-- URI:http://test/850
-- URI:http://test/851
-- URI:http://test/852
-- URI:http://test/853
-- URI:http://test/854
-- URI:http://test/855
-- URI:http://test/856
-- URI:http://test/857
-- URI:http://test/858
-- URI:http://test/859
-- URI:http://test/860
-- URI:http://test/861
-- URI:http://test/862
-- URI:http://test/863
-- URI:http://test/864
-- URI:http://test/865
-- URI:http://test/866
-- URI:http://test/867
-- URI:http://test/868
-- URI:http://test/869
-- URI:http://test/870
-- URI:http://test/871
-- URI:http://test/872
-- URI:http://test/873
-- URI:http://test/874
-- URI:http://test/875
-- URI:http://test/876
-- URI:http://test/877
-- URI:http://test/878
-- URI:http://test/879
-- URI:http://test/880
-- URI:http://test/881
-- URI:http://test/882
-- URI:http://test/883
-- URI:http://test/884
-- URI:http://test/885
-- URI:http://test/886
-- URI:http://test/887
-- URI:http://test/888
-- URI:http://test/889
-- URI:http://test/890
-- URI:http://test/891
-- URI:http://test/892
-- URI:http://test/893
-- URI:http://test/894
-- URI:http://test/895
-- URI:http://test/896
-- URI:http://test/897
-- URI:http://test/898
-- URI:http://test/899
-- URI:http://test/900
-- URI:http://test/901
-- URI:http://test/902
-- URI:http://test/903
-- URI:http://test/904
-- URI:http://test/905
-- URI:http://test/906
-- URI:http://test/907
-- URI:http://test/908
-- URI:http://test/909
-- URI:http://test/910
-- URI:http://test/911
-- URI:http://test/912
-- URI:http://test/913
-- URI:http://test/914
-- URI:http://test/915
-- URI:http://test/916
-- URI:http://test/917
-- URI:http://test/918
-- URI:http://test/919
-- URI:http://test/920
-- URI:http://test/921
-- URI:http://test/922
-- URI:http://test/923
-- URI:http://test/924
-- URI:http://test/925
-- URI:http://test/926
-- URI:http://test/927
-- URI:http://test/928
-- URI:http://test/929
-- URI:http://test/930
-- URI:http://test/931
-- URI:http://test/932
-- URI:http://test/933
-- URI:http://test/934
-- URI:http://test/935
-- URI:http://test/936
-- URI:http://test/937
-- URI:http://test/938
-- URI:http://test/939
-- URI:http://test/940
-- URI:http://test/941
-- URI:http://test/942
-- URI:http://test/943
-- URI:http://test/944
-- URI:http://test/945
-- URI:http://test/946
-- URI:http://test/947
-- URI:http://test/948
-- URI:http://test/949
-- URI:http://test/950
-- URI:http://test/951
-- URI:http://test/952
-- URI:http://test/953
-- URI:http://test/954
-- URI:http://test/955
-- URI:http://test/956
-- URI:http://test/957
-- URI:http://test/958
-- URI:http://test/959
-- URI:http://test/960
-- URI:http://test/961
-- URI:http://test/962
-- URI:http://test/963
-- URI:http://test/964
-- URI:http://test/965
-- URI:http://test/966
-- URI:http://test/967
-- URI:http://test/968
-- URI:http://test/969
-- URI:http://test/970
-- URI:http://test/971
-- URI:http://test/972
-- URI:http://test/973
-- URI:http://test/974
-- URI:http://test/975
-- URI:http://test/976
-- URI:http://test/977
-- URI:http://test/978
-- URI:http://test/979
-- URI:http://test/980
-- URI:http://test/981
-- URI:http://test/982
-- URI:http://test/983
-- URI:http://test/984
-- URI:http://test/985
-- URI:http://test/986
-- URI:http://test/987
-- URI:http://test/988
-- URI:http://test/989
-- URI:http://test/990
-- URI:http://test/991
-- URI:http://test/992
-- URI:http://test/993
-- URI:http://test/994
-- URI:http://test/995
-- URI:http://test/996
-- URI:http://test/997
-- URI:http://test/998
-- URI:http://test/999
-- URI:http://test/1000
-- URI:http://test/1001
-- URI:http://test/1002
-- URI:http://test/1003
-- URI:http://test/1004
-- URI:http://test/1005
-- URI:http://test/1006
-- URI:http://test/1007
-- URI:http://test/1008
-- URI:http://test/1009
-- URI:http://test/1010
-- URI:http://test/1011
-- URI:http://test/1012
-- URI:http://test/1013
-- URI:http://test/1014
-- URI:http://test/1015
-- URI:http://test/1016
-- URI:http://test/1017
-- URI:http://test/1018
-- URI:http://test/1019
-- URI:http://test/1020
-- URI:http://test/1021
-- URI:http://test/1022
-- URI:http://test/1023
-- URI:http://test/1024
-- Excluded:
-- DNS:x0.test
-- DNS:x1.test
-- DNS:x2.test
-- DNS:x3.test
-- DNS:x4.test
-- DNS:x5.test
-- DNS:x6.test
-- DNS:x7.test
-- DNS:x8.test
-- DNS:x9.test
-- DNS:x10.test
-- DNS:x11.test
-- DNS:x12.test
-- DNS:x13.test
-- DNS:x14.test
-- DNS:x15.test
-- DNS:x16.test
-- DNS:x17.test
-- DNS:x18.test
-- DNS:x19.test
-- DNS:x20.test
-- DNS:x21.test
-- DNS:x22.test
-- DNS:x23.test
-- DNS:x24.test
-- DNS:x25.test
-- DNS:x26.test
-- DNS:x27.test
-- DNS:x28.test
-- DNS:x29.test
-- DNS:x30.test
-- DNS:x31.test
-- DNS:x32.test
-- DNS:x33.test
-- DNS:x34.test
-- DNS:x35.test
-- DNS:x36.test
-- DNS:x37.test
-- DNS:x38.test
-- DNS:x39.test
-- DNS:x40.test
-- DNS:x41.test
-- DNS:x42.test
-- DNS:x43.test
-- DNS:x44.test
-- DNS:x45.test
-- DNS:x46.test
-- DNS:x47.test
-- DNS:x48.test
-- DNS:x49.test
-- DNS:x50.test
-- DNS:x51.test
-- DNS:x52.test
-- DNS:x53.test
-- DNS:x54.test
-- DNS:x55.test
-- DNS:x56.test
-- DNS:x57.test
-- DNS:x58.test
-- DNS:x59.test
-- DNS:x60.test
-- DNS:x61.test
-- DNS:x62.test
-- DNS:x63.test
-- DNS:x64.test
-- DNS:x65.test
-- DNS:x66.test
-- DNS:x67.test
-- DNS:x68.test
-- DNS:x69.test
-- DNS:x70.test
-- DNS:x71.test
-- DNS:x72.test
-- DNS:x73.test
-- DNS:x74.test
-- DNS:x75.test
-- DNS:x76.test
-- DNS:x77.test
-- DNS:x78.test
-- DNS:x79.test
-- DNS:x80.test
-- DNS:x81.test
-- DNS:x82.test
-- DNS:x83.test
-- DNS:x84.test
-- DNS:x85.test
-- DNS:x86.test
-- DNS:x87.test
-- DNS:x88.test
-- DNS:x89.test
-- DNS:x90.test
-- DNS:x91.test
-- DNS:x92.test
-- DNS:x93.test
-- DNS:x94.test
-- DNS:x95.test
-- DNS:x96.test
-- DNS:x97.test
-- DNS:x98.test
-- DNS:x99.test
-- DNS:x100.test
-- DNS:x101.test
-- DNS:x102.test
-- DNS:x103.test
-- DNS:x104.test
-- DNS:x105.test
-- DNS:x106.test
-- DNS:x107.test
-- DNS:x108.test
-- DNS:x109.test
-- DNS:x110.test
-- DNS:x111.test
-- DNS:x112.test
-- DNS:x113.test
-- DNS:x114.test
-- DNS:x115.test
-- DNS:x116.test
-- DNS:x117.test
-- DNS:x118.test
-- DNS:x119.test
-- DNS:x120.test
-- DNS:x121.test
-- DNS:x122.test
-- DNS:x123.test
-- DNS:x124.test
-- DNS:x125.test
-- DNS:x126.test
-- DNS:x127.test
-- DNS:x128.test
-- DNS:x129.test
-- DNS:x130.test
-- DNS:x131.test
-- DNS:x132.test
-- DNS:x133.test
-- DNS:x134.test
-- DNS:x135.test
-- DNS:x136.test
-- DNS:x137.test
-- DNS:x138.test
-- DNS:x139.test
-- DNS:x140.test
-- DNS:x141.test
-- DNS:x142.test
-- DNS:x143.test
-- DNS:x144.test
-- DNS:x145.test
-- DNS:x146.test
-- DNS:x147.test
-- DNS:x148.test
-- DNS:x149.test
-- DNS:x150.test
-- DNS:x151.test
-- DNS:x152.test
-- DNS:x153.test
-- DNS:x154.test
-- DNS:x155.test
-- DNS:x156.test
-- DNS:x157.test
-- DNS:x158.test
-- DNS:x159.test
-- DNS:x160.test
-- DNS:x161.test
-- DNS:x162.test
-- DNS:x163.test
-- DNS:x164.test
-- DNS:x165.test
-- DNS:x166.test
-- DNS:x167.test
-- DNS:x168.test
-- DNS:x169.test
-- DNS:x170.test
-- DNS:x171.test
-- DNS:x172.test
-- DNS:x173.test
-- DNS:x174.test
-- DNS:x175.test
-- DNS:x176.test
-- DNS:x177.test
-- DNS:x178.test
-- DNS:x179.test
-- DNS:x180.test
-- DNS:x181.test
-- DNS:x182.test
-- DNS:x183.test
-- DNS:x184.test
-- DNS:x185.test
-- DNS:x186.test
-- DNS:x187.test
-- DNS:x188.test
-- DNS:x189.test
-- DNS:x190.test
-- DNS:x191.test
-- DNS:x192.test
-- DNS:x193.test
-- DNS:x194.test
-- DNS:x195.test
-- DNS:x196.test
-- DNS:x197.test
-- DNS:x198.test
-- DNS:x199.test
-- DNS:x200.test
-- DNS:x201.test
-- DNS:x202.test
-- DNS:x203.test
-- DNS:x204.test
-- DNS:x205.test
-- DNS:x206.test
-- DNS:x207.test
-- DNS:x208.test
-- DNS:x209.test
-- DNS:x210.test
-- DNS:x211.test
-- DNS:x212.test
-- DNS:x213.test
-- DNS:x214.test
-- DNS:x215.test
-- DNS:x216.test
-- DNS:x217.test
-- DNS:x218.test
-- DNS:x219.test
-- DNS:x220.test
-- DNS:x221.test
-- DNS:x222.test
-- DNS:x223.test
-- DNS:x224.test
-- DNS:x225.test
-- DNS:x226.test
-- DNS:x227.test
-- DNS:x228.test
-- DNS:x229.test
-- DNS:x230.test
-- DNS:x231.test
-- DNS:x232.test
-- DNS:x233.test
-- DNS:x234.test
-- DNS:x235.test
-- DNS:x236.test
-- DNS:x237.test
-- DNS:x238.test
-- DNS:x239.test
-- DNS:x240.test
-- DNS:x241.test
-- DNS:x242.test
-- DNS:x243.test
-- DNS:x244.test
-- DNS:x245.test
-- DNS:x246.test
-- DNS:x247.test
-- DNS:x248.test
-- DNS:x249.test
-- DNS:x250.test
-- DNS:x251.test
-- DNS:x252.test
-- DNS:x253.test
-- DNS:x254.test
-- DNS:x255.test
-- DNS:x256.test
-- DNS:x257.test
-- DNS:x258.test
-- DNS:x259.test
-- DNS:x260.test
-- DNS:x261.test
-- DNS:x262.test
-- DNS:x263.test
-- DNS:x264.test
-- DNS:x265.test
-- DNS:x266.test
-- DNS:x267.test
-- DNS:x268.test
-- DNS:x269.test
-- DNS:x270.test
-- DNS:x271.test
-- DNS:x272.test
-- DNS:x273.test
-- DNS:x274.test
-- DNS:x275.test
-- DNS:x276.test
-- DNS:x277.test
-- DNS:x278.test
-- DNS:x279.test
-- DNS:x280.test
-- DNS:x281.test
-- DNS:x282.test
-- DNS:x283.test
-- DNS:x284.test
-- DNS:x285.test
-- DNS:x286.test
-- DNS:x287.test
-- DNS:x288.test
-- DNS:x289.test
-- DNS:x290.test
-- DNS:x291.test
-- DNS:x292.test
-- DNS:x293.test
-- DNS:x294.test
-- DNS:x295.test
-- DNS:x296.test
-- DNS:x297.test
-- DNS:x298.test
-- DNS:x299.test
-- DNS:x300.test
-- DNS:x301.test
-- DNS:x302.test
-- DNS:x303.test
-- DNS:x304.test
-- DNS:x305.test
-- DNS:x306.test
-- DNS:x307.test
-- DNS:x308.test
-- DNS:x309.test
-- DNS:x310.test
-- DNS:x311.test
-- DNS:x312.test
-- DNS:x313.test
-- DNS:x314.test
-- DNS:x315.test
-- DNS:x316.test
-- DNS:x317.test
-- DNS:x318.test
-- DNS:x319.test
-- DNS:x320.test
-- DNS:x321.test
-- DNS:x322.test
-- DNS:x323.test
-- DNS:x324.test
-- DNS:x325.test
-- DNS:x326.test
-- DNS:x327.test
-- DNS:x328.test
-- DNS:x329.test
-- DNS:x330.test
-- DNS:x331.test
-- DNS:x332.test
-- DNS:x333.test
-- DNS:x334.test
-- DNS:x335.test
-- DNS:x336.test
-- DNS:x337.test
-- DNS:x338.test
-- DNS:x339.test
-- DNS:x340.test
-- DNS:x341.test
-- DNS:x342.test
-- DNS:x343.test
-- DNS:x344.test
-- DNS:x345.test
-- DNS:x346.test
-- DNS:x347.test
-- DNS:x348.test
-- DNS:x349.test
-- DNS:x350.test
-- DNS:x351.test
-- DNS:x352.test
-- DNS:x353.test
-- DNS:x354.test
-- DNS:x355.test
-- DNS:x356.test
-- DNS:x357.test
-- DNS:x358.test
-- DNS:x359.test
-- DNS:x360.test
-- DNS:x361.test
-- DNS:x362.test
-- DNS:x363.test
-- DNS:x364.test
-- DNS:x365.test
-- DNS:x366.test
-- DNS:x367.test
-- DNS:x368.test
-- DNS:x369.test
-- DNS:x370.test
-- DNS:x371.test
-- DNS:x372.test
-- DNS:x373.test
-- DNS:x374.test
-- DNS:x375.test
-- DNS:x376.test
-- DNS:x377.test
-- DNS:x378.test
-- DNS:x379.test
-- DNS:x380.test
-- DNS:x381.test
-- DNS:x382.test
-- DNS:x383.test
-- DNS:x384.test
-- DNS:x385.test
-- DNS:x386.test
-- DNS:x387.test
-- DNS:x388.test
-- DNS:x389.test
-- DNS:x390.test
-- DNS:x391.test
-- DNS:x392.test
-- DNS:x393.test
-- DNS:x394.test
-- DNS:x395.test
-- DNS:x396.test
-- DNS:x397.test
-- DNS:x398.test
-- DNS:x399.test
-- DNS:x400.test
-- DNS:x401.test
-- DNS:x402.test
-- DNS:x403.test
-- DNS:x404.test
-- DNS:x405.test
-- DNS:x406.test
-- DNS:x407.test
-- DNS:x408.test
-- DNS:x409.test
-- DNS:x410.test
-- DNS:x411.test
-- DNS:x412.test
-- DNS:x413.test
-- DNS:x414.test
-- DNS:x415.test
-- DNS:x416.test
-- DNS:x417.test
-- DNS:x418.test
-- DNS:x419.test
-- DNS:x420.test
-- DNS:x421.test
-- DNS:x422.test
-- DNS:x423.test
-- DNS:x424.test
-- DNS:x425.test
-- DNS:x426.test
-- DNS:x427.test
-- DNS:x428.test
-- DNS:x429.test
-- DNS:x430.test
-- DNS:x431.test
-- DNS:x432.test
-- DNS:x433.test
-- DNS:x434.test
-- DNS:x435.test
-- DNS:x436.test
-- DNS:x437.test
-- DNS:x438.test
-- DNS:x439.test
-- DNS:x440.test
-- DNS:x441.test
-- DNS:x442.test
-- DNS:x443.test
-- DNS:x444.test
-- DNS:x445.test
-- DNS:x446.test
-- DNS:x447.test
-- DNS:x448.test
-- DNS:x449.test
-- DNS:x450.test
-- DNS:x451.test
-- DNS:x452.test
-- DNS:x453.test
-- DNS:x454.test
-- DNS:x455.test
-- DNS:x456.test
-- DNS:x457.test
-- DNS:x458.test
-- DNS:x459.test
-- DNS:x460.test
-- DNS:x461.test
-- DNS:x462.test
-- DNS:x463.test
-- DNS:x464.test
-- DNS:x465.test
-- DNS:x466.test
-- DNS:x467.test
-- DNS:x468.test
-- DNS:x469.test
-- DNS:x470.test
-- DNS:x471.test
-- DNS:x472.test
-- DNS:x473.test
-- DNS:x474.test
-- DNS:x475.test
-- DNS:x476.test
-- DNS:x477.test
-- DNS:x478.test
-- DNS:x479.test
-- DNS:x480.test
-- DNS:x481.test
-- DNS:x482.test
-- DNS:x483.test
-- DNS:x484.test
-- DNS:x485.test
-- DNS:x486.test
-- DNS:x487.test
-- DNS:x488.test
-- DNS:x489.test
-- DNS:x490.test
-- DNS:x491.test
-- DNS:x492.test
-- DNS:x493.test
-- DNS:x494.test
-- DNS:x495.test
-- DNS:x496.test
-- DNS:x497.test
-- DNS:x498.test
-- DNS:x499.test
-- DNS:x500.test
-- DNS:x501.test
-- DNS:x502.test
-- DNS:x503.test
-- DNS:x504.test
-- DNS:x505.test
-- DNS:x506.test
-- DNS:x507.test
-- DNS:x508.test
-- DNS:x509.test
-- DNS:x510.test
-- DNS:x511.test
-- DNS:x512.test
-- DNS:x513.test
-- DNS:x514.test
-- DNS:x515.test
-- DNS:x516.test
-- DNS:x517.test
-- DNS:x518.test
-- DNS:x519.test
-- DNS:x520.test
-- DNS:x521.test
-- DNS:x522.test
-- DNS:x523.test
-- DNS:x524.test
-- DNS:x525.test
-- DNS:x526.test
-- DNS:x527.test
-- DNS:x528.test
-- DNS:x529.test
-- DNS:x530.test
-- DNS:x531.test
-- DNS:x532.test
-- DNS:x533.test
-- DNS:x534.test
-- DNS:x535.test
-- DNS:x536.test
-- DNS:x537.test
-- DNS:x538.test
-- DNS:x539.test
-- DNS:x540.test
-- DNS:x541.test
-- DNS:x542.test
-- DNS:x543.test
-- DNS:x544.test
-- DNS:x545.test
-- DNS:x546.test
-- DNS:x547.test
-- DNS:x548.test
-- DNS:x549.test
-- DNS:x550.test
-- DNS:x551.test
-- DNS:x552.test
-- DNS:x553.test
-- DNS:x554.test
-- DNS:x555.test
-- DNS:x556.test
-- DNS:x557.test
-- DNS:x558.test
-- DNS:x559.test
-- DNS:x560.test
-- DNS:x561.test
-- DNS:x562.test
-- DNS:x563.test
-- DNS:x564.test
-- DNS:x565.test
-- DNS:x566.test
-- DNS:x567.test
-- DNS:x568.test
-- DNS:x569.test
-- DNS:x570.test
-- DNS:x571.test
-- DNS:x572.test
-- DNS:x573.test
-- DNS:x574.test
-- DNS:x575.test
-- DNS:x576.test
-- DNS:x577.test
-- DNS:x578.test
-- DNS:x579.test
-- DNS:x580.test
-- DNS:x581.test
-- DNS:x582.test
-- DNS:x583.test
-- DNS:x584.test
-- DNS:x585.test
-- DNS:x586.test
-- DNS:x587.test
-- DNS:x588.test
-- DNS:x589.test
-- DNS:x590.test
-- DNS:x591.test
-- DNS:x592.test
-- DNS:x593.test
-- DNS:x594.test
-- DNS:x595.test
-- DNS:x596.test
-- DNS:x597.test
-- DNS:x598.test
-- DNS:x599.test
-- DNS:x600.test
-- DNS:x601.test
-- DNS:x602.test
-- DNS:x603.test
-- DNS:x604.test
-- DNS:x605.test
-- DNS:x606.test
-- DNS:x607.test
-- DNS:x608.test
-- DNS:x609.test
-- DNS:x610.test
-- DNS:x611.test
-- DNS:x612.test
-- DNS:x613.test
-- DNS:x614.test
-- DNS:x615.test
-- DNS:x616.test
-- DNS:x617.test
-- DNS:x618.test
-- DNS:x619.test
-- DNS:x620.test
-- DNS:x621.test
-- DNS:x622.test
-- DNS:x623.test
-- DNS:x624.test
-- DNS:x625.test
-- DNS:x626.test
-- DNS:x627.test
-- DNS:x628.test
-- DNS:x629.test
-- DNS:x630.test
-- DNS:x631.test
-- DNS:x632.test
-- DNS:x633.test
-- DNS:x634.test
-- DNS:x635.test
-- DNS:x636.test
-- DNS:x637.test
-- DNS:x638.test
-- DNS:x639.test
-- DNS:x640.test
-- DNS:x641.test
-- DNS:x642.test
-- DNS:x643.test
-- DNS:x644.test
-- DNS:x645.test
-- DNS:x646.test
-- DNS:x647.test
-- DNS:x648.test
-- DNS:x649.test
-- DNS:x650.test
-- DNS:x651.test
-- DNS:x652.test
-- DNS:x653.test
-- DNS:x654.test
-- DNS:x655.test
-- DNS:x656.test
-- DNS:x657.test
-- DNS:x658.test
-- DNS:x659.test
-- DNS:x660.test
-- DNS:x661.test
-- DNS:x662.test
-- DNS:x663.test
-- DNS:x664.test
-- DNS:x665.test
-- DNS:x666.test
-- DNS:x667.test
-- DNS:x668.test
-- DNS:x669.test
-- DNS:x670.test
-- DNS:x671.test
-- DNS:x672.test
-- DNS:x673.test
-- DNS:x674.test
-- DNS:x675.test
-- DNS:x676.test
-- DNS:x677.test
-- DNS:x678.test
-- DNS:x679.test
-- DNS:x680.test
-- DNS:x681.test
-- DNS:x682.test
-- DNS:x683.test
-- DNS:x684.test
-- DNS:x685.test
-- DNS:x686.test
-- DNS:x687.test
-- DNS:x688.test
-- DNS:x689.test
-- DNS:x690.test
-- DNS:x691.test
-- DNS:x692.test
-- DNS:x693.test
-- DNS:x694.test
-- DNS:x695.test
-- DNS:x696.test
-- DNS:x697.test
-- DNS:x698.test
-- DNS:x699.test
-- DNS:x700.test
-- DNS:x701.test
-- DNS:x702.test
-- DNS:x703.test
-- DNS:x704.test
-- DNS:x705.test
-- DNS:x706.test
-- DNS:x707.test
-- DNS:x708.test
-- DNS:x709.test
-- DNS:x710.test
-- DNS:x711.test
-- DNS:x712.test
-- DNS:x713.test
-- DNS:x714.test
-- DNS:x715.test
-- DNS:x716.test
-- DNS:x717.test
-- DNS:x718.test
-- DNS:x719.test
-- DNS:x720.test
-- DNS:x721.test
-- DNS:x722.test
-- DNS:x723.test
-- DNS:x724.test
-- DNS:x725.test
-- DNS:x726.test
-- DNS:x727.test
-- DNS:x728.test
-- DNS:x729.test
-- DNS:x730.test
-- DNS:x731.test
-- DNS:x732.test
-- DNS:x733.test
-- DNS:x734.test
-- DNS:x735.test
-- DNS:x736.test
-- DNS:x737.test
-- DNS:x738.test
-- DNS:x739.test
-- DNS:x740.test
-- DNS:x741.test
-- DNS:x742.test
-- DNS:x743.test
-- DNS:x744.test
-- DNS:x745.test
-- DNS:x746.test
-- DNS:x747.test
-- DNS:x748.test
-- DNS:x749.test
-- DNS:x750.test
-- DNS:x751.test
-- DNS:x752.test
-- DNS:x753.test
-- DNS:x754.test
-- DNS:x755.test
-- DNS:x756.test
-- DNS:x757.test
-- DNS:x758.test
-- DNS:x759.test
-- DNS:x760.test
-- DNS:x761.test
-- DNS:x762.test
-- DNS:x763.test
-- DNS:x764.test
-- DNS:x765.test
-- DNS:x766.test
-- DNS:x767.test
-- DNS:x768.test
-- DNS:x769.test
-- DNS:x770.test
-- DNS:x771.test
-- DNS:x772.test
-- DNS:x773.test
-- DNS:x774.test
-- DNS:x775.test
-- DNS:x776.test
-- DNS:x777.test
-- DNS:x778.test
-- DNS:x779.test
-- DNS:x780.test
-- DNS:x781.test
-- DNS:x782.test
-- DNS:x783.test
-- DNS:x784.test
-- DNS:x785.test
-- DNS:x786.test
-- DNS:x787.test
-- DNS:x788.test
-- DNS:x789.test
-- DNS:x790.test
-- DNS:x791.test
-- DNS:x792.test
-- DNS:x793.test
-- DNS:x794.test
-- DNS:x795.test
-- DNS:x796.test
-- DNS:x797.test
-- DNS:x798.test
-- DNS:x799.test
-- DNS:x800.test
-- DNS:x801.test
-- DNS:x802.test
-- DNS:x803.test
-- DNS:x804.test
-- DNS:x805.test
-- DNS:x806.test
-- DNS:x807.test
-- DNS:x808.test
-- DNS:x809.test
-- DNS:x810.test
-- DNS:x811.test
-- DNS:x812.test
-- DNS:x813.test
-- DNS:x814.test
-- DNS:x815.test
-- DNS:x816.test
-- DNS:x817.test
-- DNS:x818.test
-- DNS:x819.test
-- DNS:x820.test
-- DNS:x821.test
-- DNS:x822.test
-- DNS:x823.test
-- DNS:x824.test
-- DNS:x825.test
-- DNS:x826.test
-- DNS:x827.test
-- DNS:x828.test
-- DNS:x829.test
-- DNS:x830.test
-- DNS:x831.test
-- DNS:x832.test
-- DNS:x833.test
-- DNS:x834.test
-- DNS:x835.test
-- DNS:x836.test
-- DNS:x837.test
-- DNS:x838.test
-- DNS:x839.test
-- DNS:x840.test
-- DNS:x841.test
-- DNS:x842.test
-- DNS:x843.test
-- DNS:x844.test
-- DNS:x845.test
-- DNS:x846.test
-- DNS:x847.test
-- DNS:x848.test
-- DNS:x849.test
-- DNS:x850.test
-- DNS:x851.test
-- DNS:x852.test
-- DNS:x853.test
-- DNS:x854.test
-- DNS:x855.test
-- DNS:x856.test
-- DNS:x857.test
-- DNS:x858.test
-- DNS:x859.test
-- DNS:x860.test
-- DNS:x861.test
-- DNS:x862.test
-- DNS:x863.test
-- DNS:x864.test
-- DNS:x865.test
-- DNS:x866.test
-- DNS:x867.test
-- DNS:x868.test
-- DNS:x869.test
-- DNS:x870.test
-- DNS:x871.test
-- DNS:x872.test
-- DNS:x873.test
-- DNS:x874.test
-- DNS:x875.test
-- DNS:x876.test
-- DNS:x877.test
-- DNS:x878.test
-- DNS:x879.test
-- DNS:x880.test
-- DNS:x881.test
-- DNS:x882.test
-- DNS:x883.test
-- DNS:x884.test
-- DNS:x885.test
-- DNS:x886.test
-- DNS:x887.test
-- DNS:x888.test
-- DNS:x889.test
-- DNS:x890.test
-- DNS:x891.test
-- DNS:x892.test
-- DNS:x893.test
-- DNS:x894.test
-- DNS:x895.test
-- DNS:x896.test
-- DNS:x897.test
-- DNS:x898.test
-- DNS:x899.test
-- DNS:x900.test
-- DNS:x901.test
-- DNS:x902.test
-- DNS:x903.test
-- DNS:x904.test
-- DNS:x905.test
-- DNS:x906.test
-- DNS:x907.test
-- DNS:x908.test
-- DNS:x909.test
-- DNS:x910.test
-- DNS:x911.test
-- DNS:x912.test
-- DNS:x913.test
-- DNS:x914.test
-- DNS:x915.test
-- DNS:x916.test
-- DNS:x917.test
-- DNS:x918.test
-- DNS:x919.test
-- DNS:x920.test
-- DNS:x921.test
-- DNS:x922.test
-- DNS:x923.test
-- DNS:x924.test
-- DNS:x925.test
-- DNS:x926.test
-- DNS:x927.test
-- DNS:x928.test
-- DNS:x929.test
-- DNS:x930.test
-- DNS:x931.test
-- DNS:x932.test
-- DNS:x933.test
-- DNS:x934.test
-- DNS:x935.test
-- DNS:x936.test
-- DNS:x937.test
-- DNS:x938.test
-- DNS:x939.test
-- DNS:x940.test
-- DNS:x941.test
-- DNS:x942.test
-- DNS:x943.test
-- DNS:x944.test
-- DNS:x945.test
-- DNS:x946.test
-- DNS:x947.test
-- DNS:x948.test
-- DNS:x949.test
-- DNS:x950.test
-- DNS:x951.test
-- DNS:x952.test
-- DNS:x953.test
-- DNS:x954.test
-- DNS:x955.test
-- DNS:x956.test
-- DNS:x957.test
-- DNS:x958.test
-- DNS:x959.test
-- DNS:x960.test
-- DNS:x961.test
-- DNS:x962.test
-- DNS:x963.test
-- DNS:x964.test
-- DNS:x965.test
-- DNS:x966.test
-- DNS:x967.test
-- DNS:x968.test
-- DNS:x969.test
-- DNS:x970.test
-- DNS:x971.test
-- DNS:x972.test
-- DNS:x973.test
-- DNS:x974.test
-- DNS:x975.test
-- DNS:x976.test
-- DNS:x977.test
-- DNS:x978.test
-- DNS:x979.test
-- DNS:x980.test
-- DNS:x981.test
-- DNS:x982.test
-- DNS:x983.test
-- DNS:x984.test
-- DNS:x985.test
-- DNS:x986.test
-- DNS:x987.test
-- DNS:x988.test
-- DNS:x989.test
-- DNS:x990.test
-- DNS:x991.test
-- DNS:x992.test
-- DNS:x993.test
-- DNS:x994.test
-- DNS:x995.test
-- DNS:x996.test
-- DNS:x997.test
-- DNS:x998.test
-- DNS:x999.test
-- DNS:x1000.test
-- DNS:x1001.test
-- DNS:x1002.test
-- DNS:x1003.test
-- DNS:x1004.test
-- DNS:x1005.test
-- DNS:x1006.test
-- DNS:x1007.test
-- DNS:x1008.test
-- DNS:x1009.test
-- DNS:x1010.test
-- DNS:x1011.test
-- DNS:x1012.test
-- DNS:x1013.test
-- DNS:x1014.test
-- DNS:x1015.test
-- DNS:x1016.test
-- DNS:x1017.test
-- DNS:x1018.test
-- DNS:x1019.test
-- DNS:x1020.test
-- DNS:x1021.test
-- DNS:x1022.test
-- DNS:x1023.test
-- DNS:x1024.test
-- DirName:CN = x0
-- DirName:CN = x1
-- DirName:CN = x2
-- DirName:CN = x3
-- DirName:CN = x4
-- DirName:CN = x5
-- DirName:CN = x6
-- DirName:CN = x7
-- DirName:CN = x8
-- DirName:CN = x9
-- DirName:CN = x10
-- DirName:CN = x11
-- DirName:CN = x12
-- DirName:CN = x13
-- DirName:CN = x14
-- DirName:CN = x15
-- DirName:CN = x16
-- DirName:CN = x17
-- DirName:CN = x18
-- DirName:CN = x19
-- DirName:CN = x20
-- DirName:CN = x21
-- DirName:CN = x22
-- DirName:CN = x23
-- DirName:CN = x24
-- DirName:CN = x25
-- DirName:CN = x26
-- DirName:CN = x27
-- DirName:CN = x28
-- DirName:CN = x29
-- DirName:CN = x30
-- DirName:CN = x31
-- DirName:CN = x32
-- DirName:CN = x33
-- DirName:CN = x34
-- DirName:CN = x35
-- DirName:CN = x36
-- DirName:CN = x37
-- DirName:CN = x38
-- DirName:CN = x39
-- DirName:CN = x40
-- DirName:CN = x41
-- DirName:CN = x42
-- DirName:CN = x43
-- DirName:CN = x44
-- DirName:CN = x45
-- DirName:CN = x46
-- DirName:CN = x47
-- DirName:CN = x48
-- DirName:CN = x49
-- DirName:CN = x50
-- DirName:CN = x51
-- DirName:CN = x52
-- DirName:CN = x53
-- DirName:CN = x54
-- DirName:CN = x55
-- DirName:CN = x56
-- DirName:CN = x57
-- DirName:CN = x58
-- DirName:CN = x59
-- DirName:CN = x60
-- DirName:CN = x61
-- DirName:CN = x62
-- DirName:CN = x63
-- DirName:CN = x64
-- DirName:CN = x65
-- DirName:CN = x66
-- DirName:CN = x67
-- DirName:CN = x68
-- DirName:CN = x69
-- DirName:CN = x70
-- DirName:CN = x71
-- DirName:CN = x72
-- DirName:CN = x73
-- DirName:CN = x74
-- DirName:CN = x75
-- DirName:CN = x76
-- DirName:CN = x77
-- DirName:CN = x78
-- DirName:CN = x79
-- DirName:CN = x80
-- DirName:CN = x81
-- DirName:CN = x82
-- DirName:CN = x83
-- DirName:CN = x84
-- DirName:CN = x85
-- DirName:CN = x86
-- DirName:CN = x87
-- DirName:CN = x88
-- DirName:CN = x89
-- DirName:CN = x90
-- DirName:CN = x91
-- DirName:CN = x92
-- DirName:CN = x93
-- DirName:CN = x94
-- DirName:CN = x95
-- DirName:CN = x96
-- DirName:CN = x97
-- DirName:CN = x98
-- DirName:CN = x99
-- DirName:CN = x100
-- DirName:CN = x101
-- DirName:CN = x102
-- DirName:CN = x103
-- DirName:CN = x104
-- DirName:CN = x105
-- DirName:CN = x106
-- DirName:CN = x107
-- DirName:CN = x108
-- DirName:CN = x109
-- DirName:CN = x110
-- DirName:CN = x111
-- DirName:CN = x112
-- DirName:CN = x113
-- DirName:CN = x114
-- DirName:CN = x115
-- DirName:CN = x116
-- DirName:CN = x117
-- DirName:CN = x118
-- DirName:CN = x119
-- DirName:CN = x120
-- DirName:CN = x121
-- DirName:CN = x122
-- DirName:CN = x123
-- DirName:CN = x124
-- DirName:CN = x125
-- DirName:CN = x126
-- DirName:CN = x127
-- DirName:CN = x128
-- DirName:CN = x129
-- DirName:CN = x130
-- DirName:CN = x131
-- DirName:CN = x132
-- DirName:CN = x133
-- DirName:CN = x134
-- DirName:CN = x135
-- DirName:CN = x136
-- DirName:CN = x137
-- DirName:CN = x138
-- DirName:CN = x139
-- DirName:CN = x140
-- DirName:CN = x141
-- DirName:CN = x142
-- DirName:CN = x143
-- DirName:CN = x144
-- DirName:CN = x145
-- DirName:CN = x146
-- DirName:CN = x147
-- DirName:CN = x148
-- DirName:CN = x149
-- DirName:CN = x150
-- DirName:CN = x151
-- DirName:CN = x152
-- DirName:CN = x153
-- DirName:CN = x154
-- DirName:CN = x155
-- DirName:CN = x156
-- DirName:CN = x157
-- DirName:CN = x158
-- DirName:CN = x159
-- DirName:CN = x160
-- DirName:CN = x161
-- DirName:CN = x162
-- DirName:CN = x163
-- DirName:CN = x164
-- DirName:CN = x165
-- DirName:CN = x166
-- DirName:CN = x167
-- DirName:CN = x168
-- DirName:CN = x169
-- DirName:CN = x170
-- DirName:CN = x171
-- DirName:CN = x172
-- DirName:CN = x173
-- DirName:CN = x174
-- DirName:CN = x175
-- DirName:CN = x176
-- DirName:CN = x177
-- DirName:CN = x178
-- DirName:CN = x179
-- DirName:CN = x180
-- DirName:CN = x181
-- DirName:CN = x182
-- DirName:CN = x183
-- DirName:CN = x184
-- DirName:CN = x185
-- DirName:CN = x186
-- DirName:CN = x187
-- DirName:CN = x188
-- DirName:CN = x189
-- DirName:CN = x190
-- DirName:CN = x191
-- DirName:CN = x192
-- DirName:CN = x193
-- DirName:CN = x194
-- DirName:CN = x195
-- DirName:CN = x196
-- DirName:CN = x197
-- DirName:CN = x198
-- DirName:CN = x199
-- DirName:CN = x200
-- DirName:CN = x201
-- DirName:CN = x202
-- DirName:CN = x203
-- DirName:CN = x204
-- DirName:CN = x205
-- DirName:CN = x206
-- DirName:CN = x207
-- DirName:CN = x208
-- DirName:CN = x209
-- DirName:CN = x210
-- DirName:CN = x211
-- DirName:CN = x212
-- DirName:CN = x213
-- DirName:CN = x214
-- DirName:CN = x215
-- DirName:CN = x216
-- DirName:CN = x217
-- DirName:CN = x218
-- DirName:CN = x219
-- DirName:CN = x220
-- DirName:CN = x221
-- DirName:CN = x222
-- DirName:CN = x223
-- DirName:CN = x224
-- DirName:CN = x225
-- DirName:CN = x226
-- DirName:CN = x227
-- DirName:CN = x228
-- DirName:CN = x229
-- DirName:CN = x230
-- DirName:CN = x231
-- DirName:CN = x232
-- DirName:CN = x233
-- DirName:CN = x234
-- DirName:CN = x235
-- DirName:CN = x236
-- DirName:CN = x237
-- DirName:CN = x238
-- DirName:CN = x239
-- DirName:CN = x240
-- DirName:CN = x241
-- DirName:CN = x242
-- DirName:CN = x243
-- DirName:CN = x244
-- DirName:CN = x245
-- DirName:CN = x246
-- DirName:CN = x247
-- DirName:CN = x248
-- DirName:CN = x249
-- DirName:CN = x250
-- DirName:CN = x251
-- DirName:CN = x252
-- DirName:CN = x253
-- DirName:CN = x254
-- DirName:CN = x255
-- DirName:CN = x256
-- DirName:CN = x257
-- DirName:CN = x258
-- DirName:CN = x259
-- DirName:CN = x260
-- DirName:CN = x261
-- DirName:CN = x262
-- DirName:CN = x263
-- DirName:CN = x264
-- DirName:CN = x265
-- DirName:CN = x266
-- DirName:CN = x267
-- DirName:CN = x268
-- DirName:CN = x269
-- DirName:CN = x270
-- DirName:CN = x271
-- DirName:CN = x272
-- DirName:CN = x273
-- DirName:CN = x274
-- DirName:CN = x275
-- DirName:CN = x276
-- DirName:CN = x277
-- DirName:CN = x278
-- DirName:CN = x279
-- DirName:CN = x280
-- DirName:CN = x281
-- DirName:CN = x282
-- DirName:CN = x283
-- DirName:CN = x284
-- DirName:CN = x285
-- DirName:CN = x286
-- DirName:CN = x287
-- DirName:CN = x288
-- DirName:CN = x289
-- DirName:CN = x290
-- DirName:CN = x291
-- DirName:CN = x292
-- DirName:CN = x293
-- DirName:CN = x294
-- DirName:CN = x295
-- DirName:CN = x296
-- DirName:CN = x297
-- DirName:CN = x298
-- DirName:CN = x299
-- DirName:CN = x300
-- DirName:CN = x301
-- DirName:CN = x302
-- DirName:CN = x303
-- DirName:CN = x304
-- DirName:CN = x305
-- DirName:CN = x306
-- DirName:CN = x307
-- DirName:CN = x308
-- DirName:CN = x309
-- DirName:CN = x310
-- DirName:CN = x311
-- DirName:CN = x312
-- DirName:CN = x313
-- DirName:CN = x314
-- DirName:CN = x315
-- DirName:CN = x316
-- DirName:CN = x317
-- DirName:CN = x318
-- DirName:CN = x319
-- DirName:CN = x320
-- DirName:CN = x321
-- DirName:CN = x322
-- DirName:CN = x323
-- DirName:CN = x324
-- DirName:CN = x325
-- DirName:CN = x326
-- DirName:CN = x327
-- DirName:CN = x328
-- DirName:CN = x329
-- DirName:CN = x330
-- DirName:CN = x331
-- DirName:CN = x332
-- DirName:CN = x333
-- DirName:CN = x334
-- DirName:CN = x335
-- DirName:CN = x336
-- DirName:CN = x337
-- DirName:CN = x338
-- DirName:CN = x339
-- DirName:CN = x340
-- DirName:CN = x341
-- DirName:CN = x342
-- DirName:CN = x343
-- DirName:CN = x344
-- DirName:CN = x345
-- DirName:CN = x346
-- DirName:CN = x347
-- DirName:CN = x348
-- DirName:CN = x349
-- DirName:CN = x350
-- DirName:CN = x351
-- DirName:CN = x352
-- DirName:CN = x353
-- DirName:CN = x354
-- DirName:CN = x355
-- DirName:CN = x356
-- DirName:CN = x357
-- DirName:CN = x358
-- DirName:CN = x359
-- DirName:CN = x360
-- DirName:CN = x361
-- DirName:CN = x362
-- DirName:CN = x363
-- DirName:CN = x364
-- DirName:CN = x365
-- DirName:CN = x366
-- DirName:CN = x367
-- DirName:CN = x368
-- DirName:CN = x369
-- DirName:CN = x370
-- DirName:CN = x371
-- DirName:CN = x372
-- DirName:CN = x373
-- DirName:CN = x374
-- DirName:CN = x375
-- DirName:CN = x376
-- DirName:CN = x377
-- DirName:CN = x378
-- DirName:CN = x379
-- DirName:CN = x380
-- DirName:CN = x381
-- DirName:CN = x382
-- DirName:CN = x383
-- DirName:CN = x384
-- DirName:CN = x385
-- DirName:CN = x386
-- DirName:CN = x387
-- DirName:CN = x388
-- DirName:CN = x389
-- DirName:CN = x390
-- DirName:CN = x391
-- DirName:CN = x392
-- DirName:CN = x393
-- DirName:CN = x394
-- DirName:CN = x395
-- DirName:CN = x396
-- DirName:CN = x397
-- DirName:CN = x398
-- DirName:CN = x399
-- DirName:CN = x400
-- DirName:CN = x401
-- DirName:CN = x402
-- DirName:CN = x403
-- DirName:CN = x404
-- DirName:CN = x405
-- DirName:CN = x406
-- DirName:CN = x407
-- DirName:CN = x408
-- DirName:CN = x409
-- DirName:CN = x410
-- DirName:CN = x411
-- DirName:CN = x412
-- DirName:CN = x413
-- DirName:CN = x414
-- DirName:CN = x415
-- DirName:CN = x416
-- DirName:CN = x417
-- DirName:CN = x418
-- DirName:CN = x419
-- DirName:CN = x420
-- DirName:CN = x421
-- DirName:CN = x422
-- DirName:CN = x423
-- DirName:CN = x424
-- DirName:CN = x425
-- DirName:CN = x426
-- DirName:CN = x427
-- DirName:CN = x428
-- DirName:CN = x429
-- DirName:CN = x430
-- DirName:CN = x431
-- DirName:CN = x432
-- DirName:CN = x433
-- DirName:CN = x434
-- DirName:CN = x435
-- DirName:CN = x436
-- DirName:CN = x437
-- DirName:CN = x438
-- DirName:CN = x439
-- DirName:CN = x440
-- DirName:CN = x441
-- DirName:CN = x442
-- DirName:CN = x443
-- DirName:CN = x444
-- DirName:CN = x445
-- DirName:CN = x446
-- DirName:CN = x447
-- DirName:CN = x448
-- DirName:CN = x449
-- DirName:CN = x450
-- DirName:CN = x451
-- DirName:CN = x452
-- DirName:CN = x453
-- DirName:CN = x454
-- DirName:CN = x455
-- DirName:CN = x456
-- DirName:CN = x457
-- DirName:CN = x458
-- DirName:CN = x459
-- DirName:CN = x460
-- DirName:CN = x461
-- DirName:CN = x462
-- DirName:CN = x463
-- DirName:CN = x464
-- DirName:CN = x465
-- DirName:CN = x466
-- DirName:CN = x467
-- DirName:CN = x468
-- DirName:CN = x469
-- DirName:CN = x470
-- DirName:CN = x471
-- DirName:CN = x472
-- DirName:CN = x473
-- DirName:CN = x474
-- DirName:CN = x475
-- DirName:CN = x476
-- DirName:CN = x477
-- DirName:CN = x478
-- DirName:CN = x479
-- DirName:CN = x480
-- DirName:CN = x481
-- DirName:CN = x482
-- DirName:CN = x483
-- DirName:CN = x484
-- DirName:CN = x485
-- DirName:CN = x486
-- DirName:CN = x487
-- DirName:CN = x488
-- DirName:CN = x489
-- DirName:CN = x490
-- DirName:CN = x491
-- DirName:CN = x492
-- DirName:CN = x493
-- DirName:CN = x494
-- DirName:CN = x495
-- DirName:CN = x496
-- DirName:CN = x497
-- DirName:CN = x498
-- DirName:CN = x499
-- DirName:CN = x500
-- DirName:CN = x501
-- DirName:CN = x502
-- DirName:CN = x503
-- DirName:CN = x504
-- DirName:CN = x505
-- DirName:CN = x506
-- DirName:CN = x507
-- DirName:CN = x508
-- DirName:CN = x509
-- DirName:CN = x510
-- DirName:CN = x511
-- DirName:CN = x512
-- DirName:CN = x513
-- DirName:CN = x514
-- DirName:CN = x515
-- DirName:CN = x516
-- DirName:CN = x517
-- DirName:CN = x518
-- DirName:CN = x519
-- DirName:CN = x520
-- DirName:CN = x521
-- DirName:CN = x522
-- DirName:CN = x523
-- DirName:CN = x524
-- DirName:CN = x525
-- DirName:CN = x526
-- DirName:CN = x527
-- DirName:CN = x528
-- DirName:CN = x529
-- DirName:CN = x530
-- DirName:CN = x531
-- DirName:CN = x532
-- DirName:CN = x533
-- DirName:CN = x534
-- DirName:CN = x535
-- DirName:CN = x536
-- DirName:CN = x537
-- DirName:CN = x538
-- DirName:CN = x539
-- DirName:CN = x540
-- DirName:CN = x541
-- DirName:CN = x542
-- DirName:CN = x543
-- DirName:CN = x544
-- DirName:CN = x545
-- DirName:CN = x546
-- DirName:CN = x547
-- DirName:CN = x548
-- DirName:CN = x549
-- DirName:CN = x550
-- DirName:CN = x551
-- DirName:CN = x552
-- DirName:CN = x553
-- DirName:CN = x554
-- DirName:CN = x555
-- DirName:CN = x556
-- DirName:CN = x557
-- DirName:CN = x558
-- DirName:CN = x559
-- DirName:CN = x560
-- DirName:CN = x561
-- DirName:CN = x562
-- DirName:CN = x563
-- DirName:CN = x564
-- DirName:CN = x565
-- DirName:CN = x566
-- DirName:CN = x567
-- DirName:CN = x568
-- DirName:CN = x569
-- DirName:CN = x570
-- DirName:CN = x571
-- DirName:CN = x572
-- DirName:CN = x573
-- DirName:CN = x574
-- DirName:CN = x575
-- DirName:CN = x576
-- DirName:CN = x577
-- DirName:CN = x578
-- DirName:CN = x579
-- DirName:CN = x580
-- DirName:CN = x581
-- DirName:CN = x582
-- DirName:CN = x583
-- DirName:CN = x584
-- DirName:CN = x585
-- DirName:CN = x586
-- DirName:CN = x587
-- DirName:CN = x588
-- DirName:CN = x589
-- DirName:CN = x590
-- DirName:CN = x591
-- DirName:CN = x592
-- DirName:CN = x593
-- DirName:CN = x594
-- DirName:CN = x595
-- DirName:CN = x596
-- DirName:CN = x597
-- DirName:CN = x598
-- DirName:CN = x599
-- DirName:CN = x600
-- DirName:CN = x601
-- DirName:CN = x602
-- DirName:CN = x603
-- DirName:CN = x604
-- DirName:CN = x605
-- DirName:CN = x606
-- DirName:CN = x607
-- DirName:CN = x608
-- DirName:CN = x609
-- DirName:CN = x610
-- DirName:CN = x611
-- DirName:CN = x612
-- DirName:CN = x613
-- DirName:CN = x614
-- DirName:CN = x615
-- DirName:CN = x616
-- DirName:CN = x617
-- DirName:CN = x618
-- DirName:CN = x619
-- DirName:CN = x620
-- DirName:CN = x621
-- DirName:CN = x622
-- DirName:CN = x623
-- DirName:CN = x624
-- DirName:CN = x625
-- DirName:CN = x626
-- DirName:CN = x627
-- DirName:CN = x628
-- DirName:CN = x629
-- DirName:CN = x630
-- DirName:CN = x631
-- DirName:CN = x632
-- DirName:CN = x633
-- DirName:CN = x634
-- DirName:CN = x635
-- DirName:CN = x636
-- DirName:CN = x637
-- DirName:CN = x638
-- DirName:CN = x639
-- DirName:CN = x640
-- DirName:CN = x641
-- DirName:CN = x642
-- DirName:CN = x643
-- DirName:CN = x644
-- DirName:CN = x645
-- DirName:CN = x646
-- DirName:CN = x647
-- DirName:CN = x648
-- DirName:CN = x649
-- DirName:CN = x650
-- DirName:CN = x651
-- DirName:CN = x652
-- DirName:CN = x653
-- DirName:CN = x654
-- DirName:CN = x655
-- DirName:CN = x656
-- DirName:CN = x657
-- DirName:CN = x658
-- DirName:CN = x659
-- DirName:CN = x660
-- DirName:CN = x661
-- DirName:CN = x662
-- DirName:CN = x663
-- DirName:CN = x664
-- DirName:CN = x665
-- DirName:CN = x666
-- DirName:CN = x667
-- DirName:CN = x668
-- DirName:CN = x669
-- DirName:CN = x670
-- DirName:CN = x671
-- DirName:CN = x672
-- DirName:CN = x673
-- DirName:CN = x674
-- DirName:CN = x675
-- DirName:CN = x676
-- DirName:CN = x677
-- DirName:CN = x678
-- DirName:CN = x679
-- DirName:CN = x680
-- DirName:CN = x681
-- DirName:CN = x682
-- DirName:CN = x683
-- DirName:CN = x684
-- DirName:CN = x685
-- DirName:CN = x686
-- DirName:CN = x687
-- DirName:CN = x688
-- DirName:CN = x689
-- DirName:CN = x690
-- DirName:CN = x691
-- DirName:CN = x692
-- DirName:CN = x693
-- DirName:CN = x694
-- DirName:CN = x695
-- DirName:CN = x696
-- DirName:CN = x697
-- DirName:CN = x698
-- DirName:CN = x699
-- DirName:CN = x700
-- DirName:CN = x701
-- DirName:CN = x702
-- DirName:CN = x703
-- DirName:CN = x704
-- DirName:CN = x705
-- DirName:CN = x706
-- DirName:CN = x707
-- DirName:CN = x708
-- DirName:CN = x709
-- DirName:CN = x710
-- DirName:CN = x711
-- DirName:CN = x712
-- DirName:CN = x713
-- DirName:CN = x714
-- DirName:CN = x715
-- DirName:CN = x716
-- DirName:CN = x717
-- DirName:CN = x718
-- DirName:CN = x719
-- DirName:CN = x720
-- DirName:CN = x721
-- DirName:CN = x722
-- DirName:CN = x723
-- DirName:CN = x724
-- DirName:CN = x725
-- DirName:CN = x726
-- DirName:CN = x727
-- DirName:CN = x728
-- DirName:CN = x729
-- DirName:CN = x730
-- DirName:CN = x731
-- DirName:CN = x732
-- DirName:CN = x733
-- DirName:CN = x734
-- DirName:CN = x735
-- DirName:CN = x736
-- DirName:CN = x737
-- DirName:CN = x738
-- DirName:CN = x739
-- DirName:CN = x740
-- DirName:CN = x741
-- DirName:CN = x742
-- DirName:CN = x743
-- DirName:CN = x744
-- DirName:CN = x745
-- DirName:CN = x746
-- DirName:CN = x747
-- DirName:CN = x748
-- DirName:CN = x749
-- DirName:CN = x750
-- DirName:CN = x751
-- DirName:CN = x752
-- DirName:CN = x753
-- DirName:CN = x754
-- DirName:CN = x755
-- DirName:CN = x756
-- DirName:CN = x757
-- DirName:CN = x758
-- DirName:CN = x759
-- DirName:CN = x760
-- DirName:CN = x761
-- DirName:CN = x762
-- DirName:CN = x763
-- DirName:CN = x764
-- DirName:CN = x765
-- DirName:CN = x766
-- DirName:CN = x767
-- DirName:CN = x768
-- DirName:CN = x769
-- DirName:CN = x770
-- DirName:CN = x771
-- DirName:CN = x772
-- DirName:CN = x773
-- DirName:CN = x774
-- DirName:CN = x775
-- DirName:CN = x776
-- DirName:CN = x777
-- DirName:CN = x778
-- DirName:CN = x779
-- DirName:CN = x780
-- DirName:CN = x781
-- DirName:CN = x782
-- DirName:CN = x783
-- DirName:CN = x784
-- DirName:CN = x785
-- DirName:CN = x786
-- DirName:CN = x787
-- DirName:CN = x788
-- DirName:CN = x789
-- DirName:CN = x790
-- DirName:CN = x791
-- DirName:CN = x792
-- DirName:CN = x793
-- DirName:CN = x794
-- DirName:CN = x795
-- DirName:CN = x796
-- DirName:CN = x797
-- DirName:CN = x798
-- DirName:CN = x799
-- DirName:CN = x800
-- DirName:CN = x801
-- DirName:CN = x802
-- DirName:CN = x803
-- DirName:CN = x804
-- DirName:CN = x805
-- DirName:CN = x806
-- DirName:CN = x807
-- DirName:CN = x808
-- DirName:CN = x809
-- DirName:CN = x810
-- DirName:CN = x811
-- DirName:CN = x812
-- DirName:CN = x813
-- DirName:CN = x814
-- DirName:CN = x815
-- DirName:CN = x816
-- DirName:CN = x817
-- DirName:CN = x818
-- DirName:CN = x819
-- DirName:CN = x820
-- DirName:CN = x821
-- DirName:CN = x822
-- DirName:CN = x823
-- DirName:CN = x824
-- DirName:CN = x825
-- DirName:CN = x826
-- DirName:CN = x827
-- DirName:CN = x828
-- DirName:CN = x829
-- DirName:CN = x830
-- DirName:CN = x831
-- DirName:CN = x832
-- DirName:CN = x833
-- DirName:CN = x834
-- DirName:CN = x835
-- DirName:CN = x836
-- DirName:CN = x837
-- DirName:CN = x838
-- DirName:CN = x839
-- DirName:CN = x840
-- DirName:CN = x841
-- DirName:CN = x842
-- DirName:CN = x843
-- DirName:CN = x844
-- DirName:CN = x845
-- DirName:CN = x846
-- DirName:CN = x847
-- DirName:CN = x848
-- DirName:CN = x849
-- DirName:CN = x850
-- DirName:CN = x851
-- DirName:CN = x852
-- DirName:CN = x853
-- DirName:CN = x854
-- DirName:CN = x855
-- DirName:CN = x856
-- DirName:CN = x857
-- DirName:CN = x858
-- DirName:CN = x859
-- DirName:CN = x860
-- DirName:CN = x861
-- DirName:CN = x862
-- DirName:CN = x863
-- DirName:CN = x864
-- DirName:CN = x865
-- DirName:CN = x866
-- DirName:CN = x867
-- DirName:CN = x868
-- DirName:CN = x869
-- DirName:CN = x870
-- DirName:CN = x871
-- DirName:CN = x872
-- DirName:CN = x873
-- DirName:CN = x874
-- DirName:CN = x875
-- DirName:CN = x876
-- DirName:CN = x877
-- DirName:CN = x878
-- DirName:CN = x879
-- DirName:CN = x880
-- DirName:CN = x881
-- DirName:CN = x882
-- DirName:CN = x883
-- DirName:CN = x884
-- DirName:CN = x885
-- DirName:CN = x886
-- DirName:CN = x887
-- DirName:CN = x888
-- DirName:CN = x889
-- DirName:CN = x890
-- DirName:CN = x891
-- DirName:CN = x892
-- DirName:CN = x893
-- DirName:CN = x894
-- DirName:CN = x895
-- DirName:CN = x896
-- DirName:CN = x897
-- DirName:CN = x898
-- DirName:CN = x899
-- DirName:CN = x900
-- DirName:CN = x901
-- DirName:CN = x902
-- DirName:CN = x903
-- DirName:CN = x904
-- DirName:CN = x905
-- DirName:CN = x906
-- DirName:CN = x907
-- DirName:CN = x908
-- DirName:CN = x909
-- DirName:CN = x910
-- DirName:CN = x911
-- DirName:CN = x912
-- DirName:CN = x913
-- DirName:CN = x914
-- DirName:CN = x915
-- DirName:CN = x916
-- DirName:CN = x917
-- DirName:CN = x918
-- DirName:CN = x919
-- DirName:CN = x920
-- DirName:CN = x921
-- DirName:CN = x922
-- DirName:CN = x923
-- DirName:CN = x924
-- DirName:CN = x925
-- DirName:CN = x926
-- DirName:CN = x927
-- DirName:CN = x928
-- DirName:CN = x929
-- DirName:CN = x930
-- DirName:CN = x931
-- DirName:CN = x932
-- DirName:CN = x933
-- DirName:CN = x934
-- DirName:CN = x935
-- DirName:CN = x936
-- DirName:CN = x937
-- DirName:CN = x938
-- DirName:CN = x939
-- DirName:CN = x940
-- DirName:CN = x941
-- DirName:CN = x942
-- DirName:CN = x943
-- DirName:CN = x944
-- DirName:CN = x945
-- DirName:CN = x946
-- DirName:CN = x947
-- DirName:CN = x948
-- DirName:CN = x949
-- DirName:CN = x950
-- DirName:CN = x951
-- DirName:CN = x952
-- DirName:CN = x953
-- DirName:CN = x954
-- DirName:CN = x955
-- DirName:CN = x956
-- DirName:CN = x957
-- DirName:CN = x958
-- DirName:CN = x959
-- DirName:CN = x960
-- DirName:CN = x961
-- DirName:CN = x962
-- DirName:CN = x963
-- DirName:CN = x964
-- DirName:CN = x965
-- DirName:CN = x966
-- DirName:CN = x967
-- DirName:CN = x968
-- DirName:CN = x969
-- DirName:CN = x970
-- DirName:CN = x971
-- DirName:CN = x972
-- DirName:CN = x973
-- DirName:CN = x974
-- DirName:CN = x975
-- DirName:CN = x976
-- DirName:CN = x977
-- DirName:CN = x978
-- DirName:CN = x979
-- DirName:CN = x980
-- DirName:CN = x981
-- DirName:CN = x982
-- DirName:CN = x983
-- DirName:CN = x984
-- DirName:CN = x985
-- DirName:CN = x986
-- DirName:CN = x987
-- DirName:CN = x988
-- DirName:CN = x989
-- DirName:CN = x990
-- DirName:CN = x991
-- DirName:CN = x992
-- DirName:CN = x993
-- DirName:CN = x994
-- DirName:CN = x995
-- DirName:CN = x996
-- DirName:CN = x997
-- DirName:CN = x998
-- DirName:CN = x999
-- DirName:CN = x1000
-- DirName:CN = x1001
-- DirName:CN = x1002
-- DirName:CN = x1003
-- DirName:CN = x1004
-- DirName:CN = x1005
-- DirName:CN = x1006
-- DirName:CN = x1007
-- DirName:CN = x1008
-- DirName:CN = x1009
-- DirName:CN = x1010
-- DirName:CN = x1011
-- DirName:CN = x1012
-- DirName:CN = x1013
-- DirName:CN = x1014
-- DirName:CN = x1015
-- DirName:CN = x1016
-- DirName:CN = x1017
-- DirName:CN = x1018
-- DirName:CN = x1019
-- DirName:CN = x1020
-- DirName:CN = x1021
-- DirName:CN = x1022
-- DirName:CN = x1023
-- DirName:CN = x1024
-- URI:http://xest/0
-- URI:http://xest/1
-- URI:http://xest/2
-- URI:http://xest/3
-- URI:http://xest/4
-- URI:http://xest/5
-- URI:http://xest/6
-- URI:http://xest/7
-- URI:http://xest/8
-- URI:http://xest/9
-- URI:http://xest/10
-- URI:http://xest/11
-- URI:http://xest/12
-- URI:http://xest/13
-- URI:http://xest/14
-- URI:http://xest/15
-- URI:http://xest/16
-- URI:http://xest/17
-- URI:http://xest/18
-- URI:http://xest/19
-- URI:http://xest/20
-- URI:http://xest/21
-- URI:http://xest/22
-- URI:http://xest/23
-- URI:http://xest/24
-- URI:http://xest/25
-- URI:http://xest/26
-- URI:http://xest/27
-- URI:http://xest/28
-- URI:http://xest/29
-- URI:http://xest/30
-- URI:http://xest/31
-- URI:http://xest/32
-- URI:http://xest/33
-- URI:http://xest/34
-- URI:http://xest/35
-- URI:http://xest/36
-- URI:http://xest/37
-- URI:http://xest/38
-- URI:http://xest/39
-- URI:http://xest/40
-- URI:http://xest/41
-- URI:http://xest/42
-- URI:http://xest/43
-- URI:http://xest/44
-- URI:http://xest/45
-- URI:http://xest/46
-- URI:http://xest/47
-- URI:http://xest/48
-- URI:http://xest/49
-- URI:http://xest/50
-- URI:http://xest/51
-- URI:http://xest/52
-- URI:http://xest/53
-- URI:http://xest/54
-- URI:http://xest/55
-- URI:http://xest/56
-- URI:http://xest/57
-- URI:http://xest/58
-- URI:http://xest/59
-- URI:http://xest/60
-- URI:http://xest/61
-- URI:http://xest/62
-- URI:http://xest/63
-- URI:http://xest/64
-- URI:http://xest/65
-- URI:http://xest/66
-- URI:http://xest/67
-- URI:http://xest/68
-- URI:http://xest/69
-- URI:http://xest/70
-- URI:http://xest/71
-- URI:http://xest/72
-- URI:http://xest/73
-- URI:http://xest/74
-- URI:http://xest/75
-- URI:http://xest/76
-- URI:http://xest/77
-- URI:http://xest/78
-- URI:http://xest/79
-- URI:http://xest/80
-- URI:http://xest/81
-- URI:http://xest/82
-- URI:http://xest/83
-- URI:http://xest/84
-- URI:http://xest/85
-- URI:http://xest/86
-- URI:http://xest/87
-- URI:http://xest/88
-- URI:http://xest/89
-- URI:http://xest/90
-- URI:http://xest/91
-- URI:http://xest/92
-- URI:http://xest/93
-- URI:http://xest/94
-- URI:http://xest/95
-- URI:http://xest/96
-- URI:http://xest/97
-- URI:http://xest/98
-- URI:http://xest/99
-- URI:http://xest/100
-- URI:http://xest/101
-- URI:http://xest/102
-- URI:http://xest/103
-- URI:http://xest/104
-- URI:http://xest/105
-- URI:http://xest/106
-- URI:http://xest/107
-- URI:http://xest/108
-- URI:http://xest/109
-- URI:http://xest/110
-- URI:http://xest/111
-- URI:http://xest/112
-- URI:http://xest/113
-- URI:http://xest/114
-- URI:http://xest/115
-- URI:http://xest/116
-- URI:http://xest/117
-- URI:http://xest/118
-- URI:http://xest/119
-- URI:http://xest/120
-- URI:http://xest/121
-- URI:http://xest/122
-- URI:http://xest/123
-- URI:http://xest/124
-- URI:http://xest/125
-- URI:http://xest/126
-- URI:http://xest/127
-- URI:http://xest/128
-- URI:http://xest/129
-- URI:http://xest/130
-- URI:http://xest/131
-- URI:http://xest/132
-- URI:http://xest/133
-- URI:http://xest/134
-- URI:http://xest/135
-- URI:http://xest/136
-- URI:http://xest/137
-- URI:http://xest/138
-- URI:http://xest/139
-- URI:http://xest/140
-- URI:http://xest/141
-- URI:http://xest/142
-- URI:http://xest/143
-- URI:http://xest/144
-- URI:http://xest/145
-- URI:http://xest/146
-- URI:http://xest/147
-- URI:http://xest/148
-- URI:http://xest/149
-- URI:http://xest/150
-- URI:http://xest/151
-- URI:http://xest/152
-- URI:http://xest/153
-- URI:http://xest/154
-- URI:http://xest/155
-- URI:http://xest/156
-- URI:http://xest/157
-- URI:http://xest/158
-- URI:http://xest/159
-- URI:http://xest/160
-- URI:http://xest/161
-- URI:http://xest/162
-- URI:http://xest/163
-- URI:http://xest/164
-- URI:http://xest/165
-- URI:http://xest/166
-- URI:http://xest/167
-- URI:http://xest/168
-- URI:http://xest/169
-- URI:http://xest/170
-- URI:http://xest/171
-- URI:http://xest/172
-- URI:http://xest/173
-- URI:http://xest/174
-- URI:http://xest/175
-- URI:http://xest/176
-- URI:http://xest/177
-- URI:http://xest/178
-- URI:http://xest/179
-- URI:http://xest/180
-- URI:http://xest/181
-- URI:http://xest/182
-- URI:http://xest/183
-- URI:http://xest/184
-- URI:http://xest/185
-- URI:http://xest/186
-- URI:http://xest/187
-- URI:http://xest/188
-- URI:http://xest/189
-- URI:http://xest/190
-- URI:http://xest/191
-- URI:http://xest/192
-- URI:http://xest/193
-- URI:http://xest/194
-- URI:http://xest/195
-- URI:http://xest/196
-- URI:http://xest/197
-- URI:http://xest/198
-- URI:http://xest/199
-- URI:http://xest/200
-- URI:http://xest/201
-- URI:http://xest/202
-- URI:http://xest/203
-- URI:http://xest/204
-- URI:http://xest/205
-- URI:http://xest/206
-- URI:http://xest/207
-- URI:http://xest/208
-- URI:http://xest/209
-- URI:http://xest/210
-- URI:http://xest/211
-- URI:http://xest/212
-- URI:http://xest/213
-- URI:http://xest/214
-- URI:http://xest/215
-- URI:http://xest/216
-- URI:http://xest/217
-- URI:http://xest/218
-- URI:http://xest/219
-- URI:http://xest/220
-- URI:http://xest/221
-- URI:http://xest/222
-- URI:http://xest/223
-- URI:http://xest/224
-- URI:http://xest/225
-- URI:http://xest/226
-- URI:http://xest/227
-- URI:http://xest/228
-- URI:http://xest/229
-- URI:http://xest/230
-- URI:http://xest/231
-- URI:http://xest/232
-- URI:http://xest/233
-- URI:http://xest/234
-- URI:http://xest/235
-- URI:http://xest/236
-- URI:http://xest/237
-- URI:http://xest/238
-- URI:http://xest/239
-- URI:http://xest/240
-- URI:http://xest/241
-- URI:http://xest/242
-- URI:http://xest/243
-- URI:http://xest/244
-- URI:http://xest/245
-- URI:http://xest/246
-- URI:http://xest/247
-- URI:http://xest/248
-- URI:http://xest/249
-- URI:http://xest/250
-- URI:http://xest/251
-- URI:http://xest/252
-- URI:http://xest/253
-- URI:http://xest/254
-- URI:http://xest/255
-- URI:http://xest/256
-- URI:http://xest/257
-- URI:http://xest/258
-- URI:http://xest/259
-- URI:http://xest/260
-- URI:http://xest/261
-- URI:http://xest/262
-- URI:http://xest/263
-- URI:http://xest/264
-- URI:http://xest/265
-- URI:http://xest/266
-- URI:http://xest/267
-- URI:http://xest/268
-- URI:http://xest/269
-- URI:http://xest/270
-- URI:http://xest/271
-- URI:http://xest/272
-- URI:http://xest/273
-- URI:http://xest/274
-- URI:http://xest/275
-- URI:http://xest/276
-- URI:http://xest/277
-- URI:http://xest/278
-- URI:http://xest/279
-- URI:http://xest/280
-- URI:http://xest/281
-- URI:http://xest/282
-- URI:http://xest/283
-- URI:http://xest/284
-- URI:http://xest/285
-- URI:http://xest/286
-- URI:http://xest/287
-- URI:http://xest/288
-- URI:http://xest/289
-- URI:http://xest/290
-- URI:http://xest/291
-- URI:http://xest/292
-- URI:http://xest/293
-- URI:http://xest/294
-- URI:http://xest/295
-- URI:http://xest/296
-- URI:http://xest/297
-- URI:http://xest/298
-- URI:http://xest/299
-- URI:http://xest/300
-- URI:http://xest/301
-- URI:http://xest/302
-- URI:http://xest/303
-- URI:http://xest/304
-- URI:http://xest/305
-- URI:http://xest/306
-- URI:http://xest/307
-- URI:http://xest/308
-- URI:http://xest/309
-- URI:http://xest/310
-- URI:http://xest/311
-- URI:http://xest/312
-- URI:http://xest/313
-- URI:http://xest/314
-- URI:http://xest/315
-- URI:http://xest/316
-- URI:http://xest/317
-- URI:http://xest/318
-- URI:http://xest/319
-- URI:http://xest/320
-- URI:http://xest/321
-- URI:http://xest/322
-- URI:http://xest/323
-- URI:http://xest/324
-- URI:http://xest/325
-- URI:http://xest/326
-- URI:http://xest/327
-- URI:http://xest/328
-- URI:http://xest/329
-- URI:http://xest/330
-- URI:http://xest/331
-- URI:http://xest/332
-- URI:http://xest/333
-- URI:http://xest/334
-- URI:http://xest/335
-- URI:http://xest/336
-- URI:http://xest/337
-- URI:http://xest/338
-- URI:http://xest/339
-- URI:http://xest/340
-- URI:http://xest/341
-- URI:http://xest/342
-- URI:http://xest/343
-- URI:http://xest/344
-- URI:http://xest/345
-- URI:http://xest/346
-- URI:http://xest/347
-- URI:http://xest/348
-- URI:http://xest/349
-- URI:http://xest/350
-- URI:http://xest/351
-- URI:http://xest/352
-- URI:http://xest/353
-- URI:http://xest/354
-- URI:http://xest/355
-- URI:http://xest/356
-- URI:http://xest/357
-- URI:http://xest/358
-- URI:http://xest/359
-- URI:http://xest/360
-- URI:http://xest/361
-- URI:http://xest/362
-- URI:http://xest/363
-- URI:http://xest/364
-- URI:http://xest/365
-- URI:http://xest/366
-- URI:http://xest/367
-- URI:http://xest/368
-- URI:http://xest/369
-- URI:http://xest/370
-- URI:http://xest/371
-- URI:http://xest/372
-- URI:http://xest/373
-- URI:http://xest/374
-- URI:http://xest/375
-- URI:http://xest/376
-- URI:http://xest/377
-- URI:http://xest/378
-- URI:http://xest/379
-- URI:http://xest/380
-- URI:http://xest/381
-- URI:http://xest/382
-- URI:http://xest/383
-- URI:http://xest/384
-- URI:http://xest/385
-- URI:http://xest/386
-- URI:http://xest/387
-- URI:http://xest/388
-- URI:http://xest/389
-- URI:http://xest/390
-- URI:http://xest/391
-- URI:http://xest/392
-- URI:http://xest/393
-- URI:http://xest/394
-- URI:http://xest/395
-- URI:http://xest/396
-- URI:http://xest/397
-- URI:http://xest/398
-- URI:http://xest/399
-- URI:http://xest/400
-- URI:http://xest/401
-- URI:http://xest/402
-- URI:http://xest/403
-- URI:http://xest/404
-- URI:http://xest/405
-- URI:http://xest/406
-- URI:http://xest/407
-- URI:http://xest/408
-- URI:http://xest/409
-- URI:http://xest/410
-- URI:http://xest/411
-- URI:http://xest/412
-- URI:http://xest/413
-- URI:http://xest/414
-- URI:http://xest/415
-- URI:http://xest/416
-- URI:http://xest/417
-- URI:http://xest/418
-- URI:http://xest/419
-- URI:http://xest/420
-- URI:http://xest/421
-- URI:http://xest/422
-- URI:http://xest/423
-- URI:http://xest/424
-- URI:http://xest/425
-- URI:http://xest/426
-- URI:http://xest/427
-- URI:http://xest/428
-- URI:http://xest/429
-- URI:http://xest/430
-- URI:http://xest/431
-- URI:http://xest/432
-- URI:http://xest/433
-- URI:http://xest/434
-- URI:http://xest/435
-- URI:http://xest/436
-- URI:http://xest/437
-- URI:http://xest/438
-- URI:http://xest/439
-- URI:http://xest/440
-- URI:http://xest/441
-- URI:http://xest/442
-- URI:http://xest/443
-- URI:http://xest/444
-- URI:http://xest/445
-- URI:http://xest/446
-- URI:http://xest/447
-- URI:http://xest/448
-- URI:http://xest/449
-- URI:http://xest/450
-- URI:http://xest/451
-- URI:http://xest/452
-- URI:http://xest/453
-- URI:http://xest/454
-- URI:http://xest/455
-- URI:http://xest/456
-- URI:http://xest/457
-- URI:http://xest/458
-- URI:http://xest/459
-- URI:http://xest/460
-- URI:http://xest/461
-- URI:http://xest/462
-- URI:http://xest/463
-- URI:http://xest/464
-- URI:http://xest/465
-- URI:http://xest/466
-- URI:http://xest/467
-- URI:http://xest/468
-- URI:http://xest/469
-- URI:http://xest/470
-- URI:http://xest/471
-- URI:http://xest/472
-- URI:http://xest/473
-- URI:http://xest/474
-- URI:http://xest/475
-- URI:http://xest/476
-- URI:http://xest/477
-- URI:http://xest/478
-- URI:http://xest/479
-- URI:http://xest/480
-- URI:http://xest/481
-- URI:http://xest/482
-- URI:http://xest/483
-- URI:http://xest/484
-- URI:http://xest/485
-- URI:http://xest/486
-- URI:http://xest/487
-- URI:http://xest/488
-- URI:http://xest/489
-- URI:http://xest/490
-- URI:http://xest/491
-- URI:http://xest/492
-- URI:http://xest/493
-- URI:http://xest/494
-- URI:http://xest/495
-- URI:http://xest/496
-- URI:http://xest/497
-- URI:http://xest/498
-- URI:http://xest/499
-- URI:http://xest/500
-- URI:http://xest/501
-- URI:http://xest/502
-- URI:http://xest/503
-- URI:http://xest/504
-- URI:http://xest/505
-- URI:http://xest/506
-- URI:http://xest/507
-- URI:http://xest/508
-- URI:http://xest/509
-- URI:http://xest/510
-- URI:http://xest/511
-- URI:http://xest/512
-- URI:http://xest/513
-- URI:http://xest/514
-- URI:http://xest/515
-- URI:http://xest/516
-- URI:http://xest/517
-- URI:http://xest/518
-- URI:http://xest/519
-- URI:http://xest/520
-- URI:http://xest/521
-- URI:http://xest/522
-- URI:http://xest/523
-- URI:http://xest/524
-- URI:http://xest/525
-- URI:http://xest/526
-- URI:http://xest/527
-- URI:http://xest/528
-- URI:http://xest/529
-- URI:http://xest/530
-- URI:http://xest/531
-- URI:http://xest/532
-- URI:http://xest/533
-- URI:http://xest/534
-- URI:http://xest/535
-- URI:http://xest/536
-- URI:http://xest/537
-- URI:http://xest/538
-- URI:http://xest/539
-- URI:http://xest/540
-- URI:http://xest/541
-- URI:http://xest/542
-- URI:http://xest/543
-- URI:http://xest/544
-- URI:http://xest/545
-- URI:http://xest/546
-- URI:http://xest/547
-- URI:http://xest/548
-- URI:http://xest/549
-- URI:http://xest/550
-- URI:http://xest/551
-- URI:http://xest/552
-- URI:http://xest/553
-- URI:http://xest/554
-- URI:http://xest/555
-- URI:http://xest/556
-- URI:http://xest/557
-- URI:http://xest/558
-- URI:http://xest/559
-- URI:http://xest/560
-- URI:http://xest/561
-- URI:http://xest/562
-- URI:http://xest/563
-- URI:http://xest/564
-- URI:http://xest/565
-- URI:http://xest/566
-- URI:http://xest/567
-- URI:http://xest/568
-- URI:http://xest/569
-- URI:http://xest/570
-- URI:http://xest/571
-- URI:http://xest/572
-- URI:http://xest/573
-- URI:http://xest/574
-- URI:http://xest/575
-- URI:http://xest/576
-- URI:http://xest/577
-- URI:http://xest/578
-- URI:http://xest/579
-- URI:http://xest/580
-- URI:http://xest/581
-- URI:http://xest/582
-- URI:http://xest/583
-- URI:http://xest/584
-- URI:http://xest/585
-- URI:http://xest/586
-- URI:http://xest/587
-- URI:http://xest/588
-- URI:http://xest/589
-- URI:http://xest/590
-- URI:http://xest/591
-- URI:http://xest/592
-- URI:http://xest/593
-- URI:http://xest/594
-- URI:http://xest/595
-- URI:http://xest/596
-- URI:http://xest/597
-- URI:http://xest/598
-- URI:http://xest/599
-- URI:http://xest/600
-- URI:http://xest/601
-- URI:http://xest/602
-- URI:http://xest/603
-- URI:http://xest/604
-- URI:http://xest/605
-- URI:http://xest/606
-- URI:http://xest/607
-- URI:http://xest/608
-- URI:http://xest/609
-- URI:http://xest/610
-- URI:http://xest/611
-- URI:http://xest/612
-- URI:http://xest/613
-- URI:http://xest/614
-- URI:http://xest/615
-- URI:http://xest/616
-- URI:http://xest/617
-- URI:http://xest/618
-- URI:http://xest/619
-- URI:http://xest/620
-- URI:http://xest/621
-- URI:http://xest/622
-- URI:http://xest/623
-- URI:http://xest/624
-- URI:http://xest/625
-- URI:http://xest/626
-- URI:http://xest/627
-- URI:http://xest/628
-- URI:http://xest/629
-- URI:http://xest/630
-- URI:http://xest/631
-- URI:http://xest/632
-- URI:http://xest/633
-- URI:http://xest/634
-- URI:http://xest/635
-- URI:http://xest/636
-- URI:http://xest/637
-- URI:http://xest/638
-- URI:http://xest/639
-- URI:http://xest/640
-- URI:http://xest/641
-- URI:http://xest/642
-- URI:http://xest/643
-- URI:http://xest/644
-- URI:http://xest/645
-- URI:http://xest/646
-- URI:http://xest/647
-- URI:http://xest/648
-- URI:http://xest/649
-- URI:http://xest/650
-- URI:http://xest/651
-- URI:http://xest/652
-- URI:http://xest/653
-- URI:http://xest/654
-- URI:http://xest/655
-- URI:http://xest/656
-- URI:http://xest/657
-- URI:http://xest/658
-- URI:http://xest/659
-- URI:http://xest/660
-- URI:http://xest/661
-- URI:http://xest/662
-- URI:http://xest/663
-- URI:http://xest/664
-- URI:http://xest/665
-- URI:http://xest/666
-- URI:http://xest/667
-- URI:http://xest/668
-- URI:http://xest/669
-- URI:http://xest/670
-- URI:http://xest/671
-- URI:http://xest/672
-- URI:http://xest/673
-- URI:http://xest/674
-- URI:http://xest/675
-- URI:http://xest/676
-- URI:http://xest/677
-- URI:http://xest/678
-- URI:http://xest/679
-- URI:http://xest/680
-- URI:http://xest/681
-- URI:http://xest/682
-- URI:http://xest/683
-- URI:http://xest/684
-- URI:http://xest/685
-- URI:http://xest/686
-- URI:http://xest/687
-- URI:http://xest/688
-- URI:http://xest/689
-- URI:http://xest/690
-- URI:http://xest/691
-- URI:http://xest/692
-- URI:http://xest/693
-- URI:http://xest/694
-- URI:http://xest/695
-- URI:http://xest/696
-- URI:http://xest/697
-- URI:http://xest/698
-- URI:http://xest/699
-- URI:http://xest/700
-- URI:http://xest/701
-- URI:http://xest/702
-- URI:http://xest/703
-- URI:http://xest/704
-- URI:http://xest/705
-- URI:http://xest/706
-- URI:http://xest/707
-- URI:http://xest/708
-- URI:http://xest/709
-- URI:http://xest/710
-- URI:http://xest/711
-- URI:http://xest/712
-- URI:http://xest/713
-- URI:http://xest/714
-- URI:http://xest/715
-- URI:http://xest/716
-- URI:http://xest/717
-- URI:http://xest/718
-- URI:http://xest/719
-- URI:http://xest/720
-- URI:http://xest/721
-- URI:http://xest/722
-- URI:http://xest/723
-- URI:http://xest/724
-- URI:http://xest/725
-- URI:http://xest/726
-- URI:http://xest/727
-- URI:http://xest/728
-- URI:http://xest/729
-- URI:http://xest/730
-- URI:http://xest/731
-- URI:http://xest/732
-- URI:http://xest/733
-- URI:http://xest/734
-- URI:http://xest/735
-- URI:http://xest/736
-- URI:http://xest/737
-- URI:http://xest/738
-- URI:http://xest/739
-- URI:http://xest/740
-- URI:http://xest/741
-- URI:http://xest/742
-- URI:http://xest/743
-- URI:http://xest/744
-- URI:http://xest/745
-- URI:http://xest/746
-- URI:http://xest/747
-- URI:http://xest/748
-- URI:http://xest/749
-- URI:http://xest/750
-- URI:http://xest/751
-- URI:http://xest/752
-- URI:http://xest/753
-- URI:http://xest/754
-- URI:http://xest/755
-- URI:http://xest/756
-- URI:http://xest/757
-- URI:http://xest/758
-- URI:http://xest/759
-- URI:http://xest/760
-- URI:http://xest/761
-- URI:http://xest/762
-- URI:http://xest/763
-- URI:http://xest/764
-- URI:http://xest/765
-- URI:http://xest/766
-- URI:http://xest/767
-- URI:http://xest/768
-- URI:http://xest/769
-- URI:http://xest/770
-- URI:http://xest/771
-- URI:http://xest/772
-- URI:http://xest/773
-- URI:http://xest/774
-- URI:http://xest/775
-- URI:http://xest/776
-- URI:http://xest/777
-- URI:http://xest/778
-- URI:http://xest/779
-- URI:http://xest/780
-- URI:http://xest/781
-- URI:http://xest/782
-- URI:http://xest/783
-- URI:http://xest/784
-- URI:http://xest/785
-- URI:http://xest/786
-- URI:http://xest/787
-- URI:http://xest/788
-- URI:http://xest/789
-- URI:http://xest/790
-- URI:http://xest/791
-- URI:http://xest/792
-- URI:http://xest/793
-- URI:http://xest/794
-- URI:http://xest/795
-- URI:http://xest/796
-- URI:http://xest/797
-- URI:http://xest/798
-- URI:http://xest/799
-- URI:http://xest/800
-- URI:http://xest/801
-- URI:http://xest/802
-- URI:http://xest/803
-- URI:http://xest/804
-- URI:http://xest/805
-- URI:http://xest/806
-- URI:http://xest/807
-- URI:http://xest/808
-- URI:http://xest/809
-- URI:http://xest/810
-- URI:http://xest/811
-- URI:http://xest/812
-- URI:http://xest/813
-- URI:http://xest/814
-- URI:http://xest/815
-- URI:http://xest/816
-- URI:http://xest/817
-- URI:http://xest/818
-- URI:http://xest/819
-- URI:http://xest/820
-- URI:http://xest/821
-- URI:http://xest/822
-- URI:http://xest/823
-- URI:http://xest/824
-- URI:http://xest/825
-- URI:http://xest/826
-- URI:http://xest/827
-- URI:http://xest/828
-- URI:http://xest/829
-- URI:http://xest/830
-- URI:http://xest/831
-- URI:http://xest/832
-- URI:http://xest/833
-- URI:http://xest/834
-- URI:http://xest/835
-- URI:http://xest/836
-- URI:http://xest/837
-- URI:http://xest/838
-- URI:http://xest/839
-- URI:http://xest/840
-- URI:http://xest/841
-- URI:http://xest/842
-- URI:http://xest/843
-- URI:http://xest/844
-- URI:http://xest/845
-- URI:http://xest/846
-- URI:http://xest/847
-- URI:http://xest/848
-- URI:http://xest/849
-- URI:http://xest/850
-- URI:http://xest/851
-- URI:http://xest/852
-- URI:http://xest/853
-- URI:http://xest/854
-- URI:http://xest/855
-- URI:http://xest/856
-- URI:http://xest/857
-- URI:http://xest/858
-- URI:http://xest/859
-- URI:http://xest/860
-- URI:http://xest/861
-- URI:http://xest/862
-- URI:http://xest/863
-- URI:http://xest/864
-- URI:http://xest/865
-- URI:http://xest/866
-- URI:http://xest/867
-- URI:http://xest/868
-- URI:http://xest/869
-- URI:http://xest/870
-- URI:http://xest/871
-- URI:http://xest/872
-- URI:http://xest/873
-- URI:http://xest/874
-- URI:http://xest/875
-- URI:http://xest/876
-- URI:http://xest/877
-- URI:http://xest/878
-- URI:http://xest/879
-- URI:http://xest/880
-- URI:http://xest/881
-- URI:http://xest/882
-- URI:http://xest/883
-- URI:http://xest/884
-- URI:http://xest/885
-- URI:http://xest/886
-- URI:http://xest/887
-- URI:http://xest/888
-- URI:http://xest/889
-- URI:http://xest/890
-- URI:http://xest/891
-- URI:http://xest/892
-- URI:http://xest/893
-- URI:http://xest/894
-- URI:http://xest/895
-- URI:http://xest/896
-- URI:http://xest/897
-- URI:http://xest/898
-- URI:http://xest/899
-- URI:http://xest/900
-- URI:http://xest/901
-- URI:http://xest/902
-- URI:http://xest/903
-- URI:http://xest/904
-- URI:http://xest/905
-- URI:http://xest/906
-- URI:http://xest/907
-- URI:http://xest/908
-- URI:http://xest/909
-- URI:http://xest/910
-- URI:http://xest/911
-- URI:http://xest/912
-- URI:http://xest/913
-- URI:http://xest/914
-- URI:http://xest/915
-- URI:http://xest/916
-- URI:http://xest/917
-- URI:http://xest/918
-- URI:http://xest/919
-- URI:http://xest/920
-- URI:http://xest/921
-- URI:http://xest/922
-- URI:http://xest/923
-- URI:http://xest/924
-- URI:http://xest/925
-- URI:http://xest/926
-- URI:http://xest/927
-- URI:http://xest/928
-- URI:http://xest/929
-- URI:http://xest/930
-- URI:http://xest/931
-- URI:http://xest/932
-- URI:http://xest/933
-- URI:http://xest/934
-- URI:http://xest/935
-- URI:http://xest/936
-- URI:http://xest/937
-- URI:http://xest/938
-- URI:http://xest/939
-- URI:http://xest/940
-- URI:http://xest/941
-- URI:http://xest/942
-- URI:http://xest/943
-- URI:http://xest/944
-- URI:http://xest/945
-- URI:http://xest/946
-- URI:http://xest/947
-- URI:http://xest/948
-- URI:http://xest/949
-- URI:http://xest/950
-- URI:http://xest/951
-- URI:http://xest/952
-- URI:http://xest/953
-- URI:http://xest/954
-- URI:http://xest/955
-- URI:http://xest/956
-- URI:http://xest/957
-- URI:http://xest/958
-- URI:http://xest/959
-- URI:http://xest/960
-- URI:http://xest/961
-- URI:http://xest/962
-- URI:http://xest/963
-- URI:http://xest/964
-- URI:http://xest/965
-- URI:http://xest/966
-- URI:http://xest/967
-- URI:http://xest/968
-- URI:http://xest/969
-- URI:http://xest/970
-- URI:http://xest/971
-- URI:http://xest/972
-- URI:http://xest/973
-- URI:http://xest/974
-- URI:http://xest/975
-- URI:http://xest/976
-- URI:http://xest/977
-- URI:http://xest/978
-- URI:http://xest/979
-- URI:http://xest/980
-- URI:http://xest/981
-- URI:http://xest/982
-- URI:http://xest/983
-- URI:http://xest/984
-- URI:http://xest/985
-- URI:http://xest/986
-- URI:http://xest/987
-- URI:http://xest/988
-- URI:http://xest/989
-- URI:http://xest/990
-- URI:http://xest/991
-- URI:http://xest/992
-- URI:http://xest/993
-- URI:http://xest/994
-- URI:http://xest/995
-- URI:http://xest/996
-- URI:http://xest/997
-- URI:http://xest/998
-- URI:http://xest/999
-- URI:http://xest/1000
-- URI:http://xest/1001
-- URI:http://xest/1002
-- URI:http://xest/1003
-- URI:http://xest/1004
-- URI:http://xest/1005
-- URI:http://xest/1006
-- URI:http://xest/1007
-- URI:http://xest/1008
-- URI:http://xest/1009
-- URI:http://xest/1010
-- URI:http://xest/1011
-- URI:http://xest/1012
-- URI:http://xest/1013
-- URI:http://xest/1014
-- URI:http://xest/1015
-- URI:http://xest/1016
-- URI:http://xest/1017
-- URI:http://xest/1018
-- URI:http://xest/1019
-- URI:http://xest/1020
-- URI:http://xest/1021
-- URI:http://xest/1022
-- URI:http://xest/1023
-- URI:http://xest/1024
--
-- Signature Algorithm: sha256WithRSAEncryption
-- 6b:fb:c9:52:d3:ad:a0:75:e3:07:18:5f:6c:dd:75:b4:3d:a4:
-- 40:0f:97:2e:c2:08:3b:d6:c7:c5:d8:7c:d7:18:6e:7b:2b:99:
-- 74:7d:d0:b1:fa:53:b1:7d:b8:0e:8f:16:4c:75:d7:78:ff:90:
-- c2:14:fa:21:66:a5:27:43:f6:8c:13:77:e2:ba:c5:2f:29:36:
-- 56:4a:6e:07:51:e7:9b:cf:78:17:6b:61:ef:87:9f:ba:83:77:
-- f0:f3:25:01:1d:0c:d2:4a:65:b1:c0:0e:0e:92:ca:d9:b1:dc:
-- 25:24:82:b8:9a:df:8d:92:42:b6:28:8e:5d:aa:f6:ff:62:13:
-- bf:8c:3c:c6:3c:88:24:0b:5a:56:2a:da:74:1d:23:b3:e0:05:
-- 1a:57:89:6b:b6:30:81:63:20:5a:e4:56:79:7c:5d:cf:9e:27:
-- c5:b5:b3:35:f6:0e:6c:71:9c:58:99:40:f9:38:74:df:11:9a:
-- a4:09:85:66:58:8e:ab:bf:58:a6:96:fc:e7:38:95:f1:13:42:
-- a5:b3:32:53:a9:af:53:85:13:66:92:d3:29:7b:27:fa:9f:3b:
-- 1c:cc:d4:11:69:11:6c:fd:77:4d:70:1d:4a:7c:9f:bc:a7:c3:
-- 65:52:ce:78:12:0f:4a:6f:47:e7:44:ce:9a:42:7d:93:29:63:
-- 1a:49:6a:c2
-------BEGIN CERTIFICATE-----
--MIMBqg0wgwGo9KADAgECAhQ85fyBiFmoUBbBf9flKuWWf8L2/zANBgkqhkiG9w0B
--AQsFADAPMQ0wCwYDVQQDDARSb290MB4XDTIxMTAwNTEyMDAwMFoXDTIyMTAwNTEy
--MDAwMFowFzEVMBMGA1UEAwwMSW50ZXJtZWRpYXRlMIIBIjANBgkqhkiG9w0BAQEF
--AAOCAQ8AMIIBCgKCAQEAuzvbBG4X4FRSuiN3JLw043DZmZ5TXTMLqcxLHa4GJxiO
--VbqtEscdMlltwxYg22Kmd4AS4IdYUVXjZn/R4DoiZeVwJqIEBPBd+V9WyNroD1co
--d26aoEpTNBpjN6JDqw5KzQcj3VWDRAAMcEHfNWTQxQ5qh9vK/DXV4luvC6DmdaXS
--4XJOImMBQXO4lVAs/e3DYbY21IOVYcPgYf/0noroutzR9ontnTBElSf00YvmLxRm
--VvHa8cwEG3eSpZ9YQAyfDDLWBcJMwMWf5aQwPUzpnQNsTAa25ZW9IbjmK6igvwa7
--QzMZPXsXWfFkTSRnsVEPNa7wcXV5rlsCNAQx42aGZQIDAQABo4MBp1UwgwGnUDAd
--BgNVHQ4EFgQUkhE/rBGWx2Y3z4NaJPA6d68zjX8wHwYDVR0jBBgwFoAUtsLvn9Ep
--yw+JjExS1L1AtxG3cd0wNwYIKwYBBQUHAQEEKzApMCcGCCsGAQUFBzAChhtodHRw
--Oi8vdXJsLWZvci1haWEvUm9vdC5jZXIwLAYDVR0fBCUwIzAhoB+gHYYbaHR0cDov
--L3VybC1mb3ItY3JsL1Jvb3QuY3JsMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E
--BTADAQH/MIMBpoMGA1UdHgSDAaZ5MIMBpnSggtM2MAmCB3QwLnRlc3QwCYIHdDEu
--dGVzdDAJggd0Mi50ZXN0MAmCB3QzLnRlc3QwCYIHdDQudGVzdDAJggd0NS50ZXN0
--MAmCB3Q2LnRlc3QwCYIHdDcudGVzdDAJggd0OC50ZXN0MAmCB3Q5LnRlc3QwCoII
--dDEwLnRlc3QwCoIIdDExLnRlc3QwCoIIdDEyLnRlc3QwCoIIdDEzLnRlc3QwCoII
--dDE0LnRlc3QwCoIIdDE1LnRlc3QwCoIIdDE2LnRlc3QwCoIIdDE3LnRlc3QwCoII
--dDE4LnRlc3QwCoIIdDE5LnRlc3QwCoIIdDIwLnRlc3QwCoIIdDIxLnRlc3QwCoII
--dDIyLnRlc3QwCoIIdDIzLnRlc3QwCoIIdDI0LnRlc3QwCoIIdDI1LnRlc3QwCoII
--dDI2LnRlc3QwCoIIdDI3LnRlc3QwCoIIdDI4LnRlc3QwCoIIdDI5LnRlc3QwCoII
--dDMwLnRlc3QwCoIIdDMxLnRlc3QwCoIIdDMyLnRlc3QwCoIIdDMzLnRlc3QwCoII
--dDM0LnRlc3QwCoIIdDM1LnRlc3QwCoIIdDM2LnRlc3QwCoIIdDM3LnRlc3QwCoII
--dDM4LnRlc3QwCoIIdDM5LnRlc3QwCoIIdDQwLnRlc3QwCoIIdDQxLnRlc3QwCoII
--dDQyLnRlc3QwCoIIdDQzLnRlc3QwCoIIdDQ0LnRlc3QwCoIIdDQ1LnRlc3QwCoII
--dDQ2LnRlc3QwCoIIdDQ3LnRlc3QwCoIIdDQ4LnRlc3QwCoIIdDQ5LnRlc3QwCoII
--dDUwLnRlc3QwCoIIdDUxLnRlc3QwCoIIdDUyLnRlc3QwCoIIdDUzLnRlc3QwCoII
--dDU0LnRlc3QwCoIIdDU1LnRlc3QwCoIIdDU2LnRlc3QwCoIIdDU3LnRlc3QwCoII
--dDU4LnRlc3QwCoIIdDU5LnRlc3QwCoIIdDYwLnRlc3QwCoIIdDYxLnRlc3QwCoII
--dDYyLnRlc3QwCoIIdDYzLnRlc3QwCoIIdDY0LnRlc3QwCoIIdDY1LnRlc3QwCoII
--dDY2LnRlc3QwCoIIdDY3LnRlc3QwCoIIdDY4LnRlc3QwCoIIdDY5LnRlc3QwCoII
--dDcwLnRlc3QwCoIIdDcxLnRlc3QwCoIIdDcyLnRlc3QwCoIIdDczLnRlc3QwCoII
--dDc0LnRlc3QwCoIIdDc1LnRlc3QwCoIIdDc2LnRlc3QwCoIIdDc3LnRlc3QwCoII
--dDc4LnRlc3QwCoIIdDc5LnRlc3QwCoIIdDgwLnRlc3QwCoIIdDgxLnRlc3QwCoII
--dDgyLnRlc3QwCoIIdDgzLnRlc3QwCoIIdDg0LnRlc3QwCoIIdDg1LnRlc3QwCoII
--dDg2LnRlc3QwCoIIdDg3LnRlc3QwCoIIdDg4LnRlc3QwCoIIdDg5LnRlc3QwCoII
--dDkwLnRlc3QwCoIIdDkxLnRlc3QwCoIIdDkyLnRlc3QwCoIIdDkzLnRlc3QwCoII
--dDk0LnRlc3QwCoIIdDk1LnRlc3QwCoIIdDk2LnRlc3QwCoIIdDk3LnRlc3QwCoII
--dDk4LnRlc3QwCoIIdDk5LnRlc3QwC4IJdDEwMC50ZXN0MAuCCXQxMDEudGVzdDAL
--ggl0MTAyLnRlc3QwC4IJdDEwMy50ZXN0MAuCCXQxMDQudGVzdDALggl0MTA1LnRl
--c3QwC4IJdDEwNi50ZXN0MAuCCXQxMDcudGVzdDALggl0MTA4LnRlc3QwC4IJdDEw
--OS50ZXN0MAuCCXQxMTAudGVzdDALggl0MTExLnRlc3QwC4IJdDExMi50ZXN0MAuC
--CXQxMTMudGVzdDALggl0MTE0LnRlc3QwC4IJdDExNS50ZXN0MAuCCXQxMTYudGVz
--dDALggl0MTE3LnRlc3QwC4IJdDExOC50ZXN0MAuCCXQxMTkudGVzdDALggl0MTIw
--LnRlc3QwC4IJdDEyMS50ZXN0MAuCCXQxMjIudGVzdDALggl0MTIzLnRlc3QwC4IJ
--dDEyNC50ZXN0MAuCCXQxMjUudGVzdDALggl0MTI2LnRlc3QwC4IJdDEyNy50ZXN0
--MAuCCXQxMjgudGVzdDALggl0MTI5LnRlc3QwC4IJdDEzMC50ZXN0MAuCCXQxMzEu
--dGVzdDALggl0MTMyLnRlc3QwC4IJdDEzMy50ZXN0MAuCCXQxMzQudGVzdDALggl0
--MTM1LnRlc3QwC4IJdDEzNi50ZXN0MAuCCXQxMzcudGVzdDALggl0MTM4LnRlc3Qw
--C4IJdDEzOS50ZXN0MAuCCXQxNDAudGVzdDALggl0MTQxLnRlc3QwC4IJdDE0Mi50
--ZXN0MAuCCXQxNDMudGVzdDALggl0MTQ0LnRlc3QwC4IJdDE0NS50ZXN0MAuCCXQx
--NDYudGVzdDALggl0MTQ3LnRlc3QwC4IJdDE0OC50ZXN0MAuCCXQxNDkudGVzdDAL
--ggl0MTUwLnRlc3QwC4IJdDE1MS50ZXN0MAuCCXQxNTIudGVzdDALggl0MTUzLnRl
--c3QwC4IJdDE1NC50ZXN0MAuCCXQxNTUudGVzdDALggl0MTU2LnRlc3QwC4IJdDE1
--Ny50ZXN0MAuCCXQxNTgudGVzdDALggl0MTU5LnRlc3QwC4IJdDE2MC50ZXN0MAuC
--CXQxNjEudGVzdDALggl0MTYyLnRlc3QwC4IJdDE2My50ZXN0MAuCCXQxNjQudGVz
--dDALggl0MTY1LnRlc3QwC4IJdDE2Ni50ZXN0MAuCCXQxNjcudGVzdDALggl0MTY4
--LnRlc3QwC4IJdDE2OS50ZXN0MAuCCXQxNzAudGVzdDALggl0MTcxLnRlc3QwC4IJ
--dDE3Mi50ZXN0MAuCCXQxNzMudGVzdDALggl0MTc0LnRlc3QwC4IJdDE3NS50ZXN0
--MAuCCXQxNzYudGVzdDALggl0MTc3LnRlc3QwC4IJdDE3OC50ZXN0MAuCCXQxNzku
--dGVzdDALggl0MTgwLnRlc3QwC4IJdDE4MS50ZXN0MAuCCXQxODIudGVzdDALggl0
--MTgzLnRlc3QwC4IJdDE4NC50ZXN0MAuCCXQxODUudGVzdDALggl0MTg2LnRlc3Qw
--C4IJdDE4Ny50ZXN0MAuCCXQxODgudGVzdDALggl0MTg5LnRlc3QwC4IJdDE5MC50
--ZXN0MAuCCXQxOTEudGVzdDALggl0MTkyLnRlc3QwC4IJdDE5My50ZXN0MAuCCXQx
--OTQudGVzdDALggl0MTk1LnRlc3QwC4IJdDE5Ni50ZXN0MAuCCXQxOTcudGVzdDAL
--ggl0MTk4LnRlc3QwC4IJdDE5OS50ZXN0MAuCCXQyMDAudGVzdDALggl0MjAxLnRl
--c3QwC4IJdDIwMi50ZXN0MAuCCXQyMDMudGVzdDALggl0MjA0LnRlc3QwC4IJdDIw
--NS50ZXN0MAuCCXQyMDYudGVzdDALggl0MjA3LnRlc3QwC4IJdDIwOC50ZXN0MAuC
--CXQyMDkudGVzdDALggl0MjEwLnRlc3QwC4IJdDIxMS50ZXN0MAuCCXQyMTIudGVz
--dDALggl0MjEzLnRlc3QwC4IJdDIxNC50ZXN0MAuCCXQyMTUudGVzdDALggl0MjE2
--LnRlc3QwC4IJdDIxNy50ZXN0MAuCCXQyMTgudGVzdDALggl0MjE5LnRlc3QwC4IJ
--dDIyMC50ZXN0MAuCCXQyMjEudGVzdDALggl0MjIyLnRlc3QwC4IJdDIyMy50ZXN0
--MAuCCXQyMjQudGVzdDALggl0MjI1LnRlc3QwC4IJdDIyNi50ZXN0MAuCCXQyMjcu
--dGVzdDALggl0MjI4LnRlc3QwC4IJdDIyOS50ZXN0MAuCCXQyMzAudGVzdDALggl0
--MjMxLnRlc3QwC4IJdDIzMi50ZXN0MAuCCXQyMzMudGVzdDALggl0MjM0LnRlc3Qw
--C4IJdDIzNS50ZXN0MAuCCXQyMzYudGVzdDALggl0MjM3LnRlc3QwC4IJdDIzOC50
--ZXN0MAuCCXQyMzkudGVzdDALggl0MjQwLnRlc3QwC4IJdDI0MS50ZXN0MAuCCXQy
--NDIudGVzdDALggl0MjQzLnRlc3QwC4IJdDI0NC50ZXN0MAuCCXQyNDUudGVzdDAL
--ggl0MjQ2LnRlc3QwC4IJdDI0Ny50ZXN0MAuCCXQyNDgudGVzdDALggl0MjQ5LnRl
--c3QwC4IJdDI1MC50ZXN0MAuCCXQyNTEudGVzdDALggl0MjUyLnRlc3QwC4IJdDI1
--My50ZXN0MAuCCXQyNTQudGVzdDALggl0MjU1LnRlc3QwC4IJdDI1Ni50ZXN0MAuC
--CXQyNTcudGVzdDALggl0MjU4LnRlc3QwC4IJdDI1OS50ZXN0MAuCCXQyNjAudGVz
--dDALggl0MjYxLnRlc3QwC4IJdDI2Mi50ZXN0MAuCCXQyNjMudGVzdDALggl0MjY0
--LnRlc3QwC4IJdDI2NS50ZXN0MAuCCXQyNjYudGVzdDALggl0MjY3LnRlc3QwC4IJ
--dDI2OC50ZXN0MAuCCXQyNjkudGVzdDALggl0MjcwLnRlc3QwC4IJdDI3MS50ZXN0
--MAuCCXQyNzIudGVzdDALggl0MjczLnRlc3QwC4IJdDI3NC50ZXN0MAuCCXQyNzUu
--dGVzdDALggl0Mjc2LnRlc3QwC4IJdDI3Ny50ZXN0MAuCCXQyNzgudGVzdDALggl0
--Mjc5LnRlc3QwC4IJdDI4MC50ZXN0MAuCCXQyODEudGVzdDALggl0MjgyLnRlc3Qw
--C4IJdDI4My50ZXN0MAuCCXQyODQudGVzdDALggl0Mjg1LnRlc3QwC4IJdDI4Ni50
--ZXN0MAuCCXQyODcudGVzdDALggl0Mjg4LnRlc3QwC4IJdDI4OS50ZXN0MAuCCXQy
--OTAudGVzdDALggl0MjkxLnRlc3QwC4IJdDI5Mi50ZXN0MAuCCXQyOTMudGVzdDAL
--ggl0Mjk0LnRlc3QwC4IJdDI5NS50ZXN0MAuCCXQyOTYudGVzdDALggl0Mjk3LnRl
--c3QwC4IJdDI5OC50ZXN0MAuCCXQyOTkudGVzdDALggl0MzAwLnRlc3QwC4IJdDMw
--MS50ZXN0MAuCCXQzMDIudGVzdDALggl0MzAzLnRlc3QwC4IJdDMwNC50ZXN0MAuC
--CXQzMDUudGVzdDALggl0MzA2LnRlc3QwC4IJdDMwNy50ZXN0MAuCCXQzMDgudGVz
--dDALggl0MzA5LnRlc3QwC4IJdDMxMC50ZXN0MAuCCXQzMTEudGVzdDALggl0MzEy
--LnRlc3QwC4IJdDMxMy50ZXN0MAuCCXQzMTQudGVzdDALggl0MzE1LnRlc3QwC4IJ
--dDMxNi50ZXN0MAuCCXQzMTcudGVzdDALggl0MzE4LnRlc3QwC4IJdDMxOS50ZXN0
--MAuCCXQzMjAudGVzdDALggl0MzIxLnRlc3QwC4IJdDMyMi50ZXN0MAuCCXQzMjMu
--dGVzdDALggl0MzI0LnRlc3QwC4IJdDMyNS50ZXN0MAuCCXQzMjYudGVzdDALggl0
--MzI3LnRlc3QwC4IJdDMyOC50ZXN0MAuCCXQzMjkudGVzdDALggl0MzMwLnRlc3Qw
--C4IJdDMzMS50ZXN0MAuCCXQzMzIudGVzdDALggl0MzMzLnRlc3QwC4IJdDMzNC50
--ZXN0MAuCCXQzMzUudGVzdDALggl0MzM2LnRlc3QwC4IJdDMzNy50ZXN0MAuCCXQz
--MzgudGVzdDALggl0MzM5LnRlc3QwC4IJdDM0MC50ZXN0MAuCCXQzNDEudGVzdDAL
--ggl0MzQyLnRlc3QwC4IJdDM0My50ZXN0MAuCCXQzNDQudGVzdDALggl0MzQ1LnRl
--c3QwC4IJdDM0Ni50ZXN0MAuCCXQzNDcudGVzdDALggl0MzQ4LnRlc3QwC4IJdDM0
--OS50ZXN0MAuCCXQzNTAudGVzdDALggl0MzUxLnRlc3QwC4IJdDM1Mi50ZXN0MAuC
--CXQzNTMudGVzdDALggl0MzU0LnRlc3QwC4IJdDM1NS50ZXN0MAuCCXQzNTYudGVz
--dDALggl0MzU3LnRlc3QwC4IJdDM1OC50ZXN0MAuCCXQzNTkudGVzdDALggl0MzYw
--LnRlc3QwC4IJdDM2MS50ZXN0MAuCCXQzNjIudGVzdDALggl0MzYzLnRlc3QwC4IJ
--dDM2NC50ZXN0MAuCCXQzNjUudGVzdDALggl0MzY2LnRlc3QwC4IJdDM2Ny50ZXN0
--MAuCCXQzNjgudGVzdDALggl0MzY5LnRlc3QwC4IJdDM3MC50ZXN0MAuCCXQzNzEu
--dGVzdDALggl0MzcyLnRlc3QwC4IJdDM3My50ZXN0MAuCCXQzNzQudGVzdDALggl0
--Mzc1LnRlc3QwC4IJdDM3Ni50ZXN0MAuCCXQzNzcudGVzdDALggl0Mzc4LnRlc3Qw
--C4IJdDM3OS50ZXN0MAuCCXQzODAudGVzdDALggl0MzgxLnRlc3QwC4IJdDM4Mi50
--ZXN0MAuCCXQzODMudGVzdDALggl0Mzg0LnRlc3QwC4IJdDM4NS50ZXN0MAuCCXQz
--ODYudGVzdDALggl0Mzg3LnRlc3QwC4IJdDM4OC50ZXN0MAuCCXQzODkudGVzdDAL
--ggl0MzkwLnRlc3QwC4IJdDM5MS50ZXN0MAuCCXQzOTIudGVzdDALggl0MzkzLnRl
--c3QwC4IJdDM5NC50ZXN0MAuCCXQzOTUudGVzdDALggl0Mzk2LnRlc3QwC4IJdDM5
--Ny50ZXN0MAuCCXQzOTgudGVzdDALggl0Mzk5LnRlc3QwC4IJdDQwMC50ZXN0MAuC
--CXQ0MDEudGVzdDALggl0NDAyLnRlc3QwC4IJdDQwMy50ZXN0MAuCCXQ0MDQudGVz
--dDALggl0NDA1LnRlc3QwC4IJdDQwNi50ZXN0MAuCCXQ0MDcudGVzdDALggl0NDA4
--LnRlc3QwC4IJdDQwOS50ZXN0MAuCCXQ0MTAudGVzdDALggl0NDExLnRlc3QwC4IJ
--dDQxMi50ZXN0MAuCCXQ0MTMudGVzdDALggl0NDE0LnRlc3QwC4IJdDQxNS50ZXN0
--MAuCCXQ0MTYudGVzdDALggl0NDE3LnRlc3QwC4IJdDQxOC50ZXN0MAuCCXQ0MTku
--dGVzdDALggl0NDIwLnRlc3QwC4IJdDQyMS50ZXN0MAuCCXQ0MjIudGVzdDALggl0
--NDIzLnRlc3QwC4IJdDQyNC50ZXN0MAuCCXQ0MjUudGVzdDALggl0NDI2LnRlc3Qw
--C4IJdDQyNy50ZXN0MAuCCXQ0MjgudGVzdDALggl0NDI5LnRlc3QwC4IJdDQzMC50
--ZXN0MAuCCXQ0MzEudGVzdDALggl0NDMyLnRlc3QwC4IJdDQzMy50ZXN0MAuCCXQ0
--MzQudGVzdDALggl0NDM1LnRlc3QwC4IJdDQzNi50ZXN0MAuCCXQ0MzcudGVzdDAL
--ggl0NDM4LnRlc3QwC4IJdDQzOS50ZXN0MAuCCXQ0NDAudGVzdDALggl0NDQxLnRl
--c3QwC4IJdDQ0Mi50ZXN0MAuCCXQ0NDMudGVzdDALggl0NDQ0LnRlc3QwC4IJdDQ0
--NS50ZXN0MAuCCXQ0NDYudGVzdDALggl0NDQ3LnRlc3QwC4IJdDQ0OC50ZXN0MAuC
--CXQ0NDkudGVzdDALggl0NDUwLnRlc3QwC4IJdDQ1MS50ZXN0MAuCCXQ0NTIudGVz
--dDALggl0NDUzLnRlc3QwC4IJdDQ1NC50ZXN0MAuCCXQ0NTUudGVzdDALggl0NDU2
--LnRlc3QwC4IJdDQ1Ny50ZXN0MAuCCXQ0NTgudGVzdDALggl0NDU5LnRlc3QwC4IJ
--dDQ2MC50ZXN0MAuCCXQ0NjEudGVzdDALggl0NDYyLnRlc3QwC4IJdDQ2My50ZXN0
--MAuCCXQ0NjQudGVzdDALggl0NDY1LnRlc3QwC4IJdDQ2Ni50ZXN0MAuCCXQ0Njcu
--dGVzdDALggl0NDY4LnRlc3QwC4IJdDQ2OS50ZXN0MAuCCXQ0NzAudGVzdDALggl0
--NDcxLnRlc3QwC4IJdDQ3Mi50ZXN0MAuCCXQ0NzMudGVzdDALggl0NDc0LnRlc3Qw
--C4IJdDQ3NS50ZXN0MAuCCXQ0NzYudGVzdDALggl0NDc3LnRlc3QwC4IJdDQ3OC50
--ZXN0MAuCCXQ0NzkudGVzdDALggl0NDgwLnRlc3QwC4IJdDQ4MS50ZXN0MAuCCXQ0
--ODIudGVzdDALggl0NDgzLnRlc3QwC4IJdDQ4NC50ZXN0MAuCCXQ0ODUudGVzdDAL
--ggl0NDg2LnRlc3QwC4IJdDQ4Ny50ZXN0MAuCCXQ0ODgudGVzdDALggl0NDg5LnRl
--c3QwC4IJdDQ5MC50ZXN0MAuCCXQ0OTEudGVzdDALggl0NDkyLnRlc3QwC4IJdDQ5
--My50ZXN0MAuCCXQ0OTQudGVzdDALggl0NDk1LnRlc3QwC4IJdDQ5Ni50ZXN0MAuC
--CXQ0OTcudGVzdDALggl0NDk4LnRlc3QwC4IJdDQ5OS50ZXN0MAuCCXQ1MDAudGVz
--dDALggl0NTAxLnRlc3QwC4IJdDUwMi50ZXN0MAuCCXQ1MDMudGVzdDALggl0NTA0
--LnRlc3QwC4IJdDUwNS50ZXN0MAuCCXQ1MDYudGVzdDALggl0NTA3LnRlc3QwC4IJ
--dDUwOC50ZXN0MAuCCXQ1MDkudGVzdDALggl0NTEwLnRlc3QwC4IJdDUxMS50ZXN0
--MAuCCXQ1MTIudGVzdDALggl0NTEzLnRlc3QwC4IJdDUxNC50ZXN0MAuCCXQ1MTUu
--dGVzdDALggl0NTE2LnRlc3QwC4IJdDUxNy50ZXN0MAuCCXQ1MTgudGVzdDALggl0
--NTE5LnRlc3QwC4IJdDUyMC50ZXN0MAuCCXQ1MjEudGVzdDALggl0NTIyLnRlc3Qw
--C4IJdDUyMy50ZXN0MAuCCXQ1MjQudGVzdDALggl0NTI1LnRlc3QwC4IJdDUyNi50
--ZXN0MAuCCXQ1MjcudGVzdDALggl0NTI4LnRlc3QwC4IJdDUyOS50ZXN0MAuCCXQ1
--MzAudGVzdDALggl0NTMxLnRlc3QwC4IJdDUzMi50ZXN0MAuCCXQ1MzMudGVzdDAL
--ggl0NTM0LnRlc3QwC4IJdDUzNS50ZXN0MAuCCXQ1MzYudGVzdDALggl0NTM3LnRl
--c3QwC4IJdDUzOC50ZXN0MAuCCXQ1MzkudGVzdDALggl0NTQwLnRlc3QwC4IJdDU0
--MS50ZXN0MAuCCXQ1NDIudGVzdDALggl0NTQzLnRlc3QwC4IJdDU0NC50ZXN0MAuC
--CXQ1NDUudGVzdDALggl0NTQ2LnRlc3QwC4IJdDU0Ny50ZXN0MAuCCXQ1NDgudGVz
--dDALggl0NTQ5LnRlc3QwC4IJdDU1MC50ZXN0MAuCCXQ1NTEudGVzdDALggl0NTUy
--LnRlc3QwC4IJdDU1My50ZXN0MAuCCXQ1NTQudGVzdDALggl0NTU1LnRlc3QwC4IJ
--dDU1Ni50ZXN0MAuCCXQ1NTcudGVzdDALggl0NTU4LnRlc3QwC4IJdDU1OS50ZXN0
--MAuCCXQ1NjAudGVzdDALggl0NTYxLnRlc3QwC4IJdDU2Mi50ZXN0MAuCCXQ1NjMu
--dGVzdDALggl0NTY0LnRlc3QwC4IJdDU2NS50ZXN0MAuCCXQ1NjYudGVzdDALggl0
--NTY3LnRlc3QwC4IJdDU2OC50ZXN0MAuCCXQ1NjkudGVzdDALggl0NTcwLnRlc3Qw
--C4IJdDU3MS50ZXN0MAuCCXQ1NzIudGVzdDALggl0NTczLnRlc3QwC4IJdDU3NC50
--ZXN0MAuCCXQ1NzUudGVzdDALggl0NTc2LnRlc3QwC4IJdDU3Ny50ZXN0MAuCCXQ1
--NzgudGVzdDALggl0NTc5LnRlc3QwC4IJdDU4MC50ZXN0MAuCCXQ1ODEudGVzdDAL
--ggl0NTgyLnRlc3QwC4IJdDU4My50ZXN0MAuCCXQ1ODQudGVzdDALggl0NTg1LnRl
--c3QwC4IJdDU4Ni50ZXN0MAuCCXQ1ODcudGVzdDALggl0NTg4LnRlc3QwC4IJdDU4
--OS50ZXN0MAuCCXQ1OTAudGVzdDALggl0NTkxLnRlc3QwC4IJdDU5Mi50ZXN0MAuC
--CXQ1OTMudGVzdDALggl0NTk0LnRlc3QwC4IJdDU5NS50ZXN0MAuCCXQ1OTYudGVz
--dDALggl0NTk3LnRlc3QwC4IJdDU5OC50ZXN0MAuCCXQ1OTkudGVzdDALggl0NjAw
--LnRlc3QwC4IJdDYwMS50ZXN0MAuCCXQ2MDIudGVzdDALggl0NjAzLnRlc3QwC4IJ
--dDYwNC50ZXN0MAuCCXQ2MDUudGVzdDALggl0NjA2LnRlc3QwC4IJdDYwNy50ZXN0
--MAuCCXQ2MDgudGVzdDALggl0NjA5LnRlc3QwC4IJdDYxMC50ZXN0MAuCCXQ2MTEu
--dGVzdDALggl0NjEyLnRlc3QwC4IJdDYxMy50ZXN0MAuCCXQ2MTQudGVzdDALggl0
--NjE1LnRlc3QwC4IJdDYxNi50ZXN0MAuCCXQ2MTcudGVzdDALggl0NjE4LnRlc3Qw
--C4IJdDYxOS50ZXN0MAuCCXQ2MjAudGVzdDALggl0NjIxLnRlc3QwC4IJdDYyMi50
--ZXN0MAuCCXQ2MjMudGVzdDALggl0NjI0LnRlc3QwC4IJdDYyNS50ZXN0MAuCCXQ2
--MjYudGVzdDALggl0NjI3LnRlc3QwC4IJdDYyOC50ZXN0MAuCCXQ2MjkudGVzdDAL
--ggl0NjMwLnRlc3QwC4IJdDYzMS50ZXN0MAuCCXQ2MzIudGVzdDALggl0NjMzLnRl
--c3QwC4IJdDYzNC50ZXN0MAuCCXQ2MzUudGVzdDALggl0NjM2LnRlc3QwC4IJdDYz
--Ny50ZXN0MAuCCXQ2MzgudGVzdDALggl0NjM5LnRlc3QwC4IJdDY0MC50ZXN0MAuC
--CXQ2NDEudGVzdDALggl0NjQyLnRlc3QwC4IJdDY0My50ZXN0MAuCCXQ2NDQudGVz
--dDALggl0NjQ1LnRlc3QwC4IJdDY0Ni50ZXN0MAuCCXQ2NDcudGVzdDALggl0NjQ4
--LnRlc3QwC4IJdDY0OS50ZXN0MAuCCXQ2NTAudGVzdDALggl0NjUxLnRlc3QwC4IJ
--dDY1Mi50ZXN0MAuCCXQ2NTMudGVzdDALggl0NjU0LnRlc3QwC4IJdDY1NS50ZXN0
--MAuCCXQ2NTYudGVzdDALggl0NjU3LnRlc3QwC4IJdDY1OC50ZXN0MAuCCXQ2NTku
--dGVzdDALggl0NjYwLnRlc3QwC4IJdDY2MS50ZXN0MAuCCXQ2NjIudGVzdDALggl0
--NjYzLnRlc3QwC4IJdDY2NC50ZXN0MAuCCXQ2NjUudGVzdDALggl0NjY2LnRlc3Qw
--C4IJdDY2Ny50ZXN0MAuCCXQ2NjgudGVzdDALggl0NjY5LnRlc3QwC4IJdDY3MC50
--ZXN0MAuCCXQ2NzEudGVzdDALggl0NjcyLnRlc3QwC4IJdDY3My50ZXN0MAuCCXQ2
--NzQudGVzdDALggl0Njc1LnRlc3QwC4IJdDY3Ni50ZXN0MAuCCXQ2NzcudGVzdDAL
--ggl0Njc4LnRlc3QwC4IJdDY3OS50ZXN0MAuCCXQ2ODAudGVzdDALggl0NjgxLnRl
--c3QwC4IJdDY4Mi50ZXN0MAuCCXQ2ODMudGVzdDALggl0Njg0LnRlc3QwC4IJdDY4
--NS50ZXN0MAuCCXQ2ODYudGVzdDALggl0Njg3LnRlc3QwC4IJdDY4OC50ZXN0MAuC
--CXQ2ODkudGVzdDALggl0NjkwLnRlc3QwC4IJdDY5MS50ZXN0MAuCCXQ2OTIudGVz
--dDALggl0NjkzLnRlc3QwC4IJdDY5NC50ZXN0MAuCCXQ2OTUudGVzdDALggl0Njk2
--LnRlc3QwC4IJdDY5Ny50ZXN0MAuCCXQ2OTgudGVzdDALggl0Njk5LnRlc3QwC4IJ
--dDcwMC50ZXN0MAuCCXQ3MDEudGVzdDALggl0NzAyLnRlc3QwC4IJdDcwMy50ZXN0
--MAuCCXQ3MDQudGVzdDALggl0NzA1LnRlc3QwC4IJdDcwNi50ZXN0MAuCCXQ3MDcu
--dGVzdDALggl0NzA4LnRlc3QwC4IJdDcwOS50ZXN0MAuCCXQ3MTAudGVzdDALggl0
--NzExLnRlc3QwC4IJdDcxMi50ZXN0MAuCCXQ3MTMudGVzdDALggl0NzE0LnRlc3Qw
--C4IJdDcxNS50ZXN0MAuCCXQ3MTYudGVzdDALggl0NzE3LnRlc3QwC4IJdDcxOC50
--ZXN0MAuCCXQ3MTkudGVzdDALggl0NzIwLnRlc3QwC4IJdDcyMS50ZXN0MAuCCXQ3
--MjIudGVzdDALggl0NzIzLnRlc3QwC4IJdDcyNC50ZXN0MAuCCXQ3MjUudGVzdDAL
--ggl0NzI2LnRlc3QwC4IJdDcyNy50ZXN0MAuCCXQ3MjgudGVzdDALggl0NzI5LnRl
--c3QwC4IJdDczMC50ZXN0MAuCCXQ3MzEudGVzdDALggl0NzMyLnRlc3QwC4IJdDcz
--My50ZXN0MAuCCXQ3MzQudGVzdDALggl0NzM1LnRlc3QwC4IJdDczNi50ZXN0MAuC
--CXQ3MzcudGVzdDALggl0NzM4LnRlc3QwC4IJdDczOS50ZXN0MAuCCXQ3NDAudGVz
--dDALggl0NzQxLnRlc3QwC4IJdDc0Mi50ZXN0MAuCCXQ3NDMudGVzdDALggl0NzQ0
--LnRlc3QwC4IJdDc0NS50ZXN0MAuCCXQ3NDYudGVzdDALggl0NzQ3LnRlc3QwC4IJ
--dDc0OC50ZXN0MAuCCXQ3NDkudGVzdDALggl0NzUwLnRlc3QwC4IJdDc1MS50ZXN0
--MAuCCXQ3NTIudGVzdDALggl0NzUzLnRlc3QwC4IJdDc1NC50ZXN0MAuCCXQ3NTUu
--dGVzdDALggl0NzU2LnRlc3QwC4IJdDc1Ny50ZXN0MAuCCXQ3NTgudGVzdDALggl0
--NzU5LnRlc3QwC4IJdDc2MC50ZXN0MAuCCXQ3NjEudGVzdDALggl0NzYyLnRlc3Qw
--C4IJdDc2My50ZXN0MAuCCXQ3NjQudGVzdDALggl0NzY1LnRlc3QwC4IJdDc2Ni50
--ZXN0MAuCCXQ3NjcudGVzdDALggl0NzY4LnRlc3QwC4IJdDc2OS50ZXN0MAuCCXQ3
--NzAudGVzdDALggl0NzcxLnRlc3QwC4IJdDc3Mi50ZXN0MAuCCXQ3NzMudGVzdDAL
--ggl0Nzc0LnRlc3QwC4IJdDc3NS50ZXN0MAuCCXQ3NzYudGVzdDALggl0Nzc3LnRl
--c3QwC4IJdDc3OC50ZXN0MAuCCXQ3NzkudGVzdDALggl0NzgwLnRlc3QwC4IJdDc4
--MS50ZXN0MAuCCXQ3ODIudGVzdDALggl0NzgzLnRlc3QwC4IJdDc4NC50ZXN0MAuC
--CXQ3ODUudGVzdDALggl0Nzg2LnRlc3QwC4IJdDc4Ny50ZXN0MAuCCXQ3ODgudGVz
--dDALggl0Nzg5LnRlc3QwC4IJdDc5MC50ZXN0MAuCCXQ3OTEudGVzdDALggl0Nzky
--LnRlc3QwC4IJdDc5My50ZXN0MAuCCXQ3OTQudGVzdDALggl0Nzk1LnRlc3QwC4IJ
--dDc5Ni50ZXN0MAuCCXQ3OTcudGVzdDALggl0Nzk4LnRlc3QwC4IJdDc5OS50ZXN0
--MAuCCXQ4MDAudGVzdDALggl0ODAxLnRlc3QwC4IJdDgwMi50ZXN0MAuCCXQ4MDMu
--dGVzdDALggl0ODA0LnRlc3QwC4IJdDgwNS50ZXN0MAuCCXQ4MDYudGVzdDALggl0
--ODA3LnRlc3QwC4IJdDgwOC50ZXN0MAuCCXQ4MDkudGVzdDALggl0ODEwLnRlc3Qw
--C4IJdDgxMS50ZXN0MAuCCXQ4MTIudGVzdDALggl0ODEzLnRlc3QwC4IJdDgxNC50
--ZXN0MAuCCXQ4MTUudGVzdDALggl0ODE2LnRlc3QwC4IJdDgxNy50ZXN0MAuCCXQ4
--MTgudGVzdDALggl0ODE5LnRlc3QwC4IJdDgyMC50ZXN0MAuCCXQ4MjEudGVzdDAL
--ggl0ODIyLnRlc3QwC4IJdDgyMy50ZXN0MAuCCXQ4MjQudGVzdDALggl0ODI1LnRl
--c3QwC4IJdDgyNi50ZXN0MAuCCXQ4MjcudGVzdDALggl0ODI4LnRlc3QwC4IJdDgy
--OS50ZXN0MAuCCXQ4MzAudGVzdDALggl0ODMxLnRlc3QwC4IJdDgzMi50ZXN0MAuC
--CXQ4MzMudGVzdDALggl0ODM0LnRlc3QwC4IJdDgzNS50ZXN0MAuCCXQ4MzYudGVz
--dDALggl0ODM3LnRlc3QwC4IJdDgzOC50ZXN0MAuCCXQ4MzkudGVzdDALggl0ODQw
--LnRlc3QwC4IJdDg0MS50ZXN0MAuCCXQ4NDIudGVzdDALggl0ODQzLnRlc3QwC4IJ
--dDg0NC50ZXN0MAuCCXQ4NDUudGVzdDALggl0ODQ2LnRlc3QwC4IJdDg0Ny50ZXN0
--MAuCCXQ4NDgudGVzdDALggl0ODQ5LnRlc3QwC4IJdDg1MC50ZXN0MAuCCXQ4NTEu
--dGVzdDALggl0ODUyLnRlc3QwC4IJdDg1My50ZXN0MAuCCXQ4NTQudGVzdDALggl0
--ODU1LnRlc3QwC4IJdDg1Ni50ZXN0MAuCCXQ4NTcudGVzdDALggl0ODU4LnRlc3Qw
--C4IJdDg1OS50ZXN0MAuCCXQ4NjAudGVzdDALggl0ODYxLnRlc3QwC4IJdDg2Mi50
--ZXN0MAuCCXQ4NjMudGVzdDALggl0ODY0LnRlc3QwC4IJdDg2NS50ZXN0MAuCCXQ4
--NjYudGVzdDALggl0ODY3LnRlc3QwC4IJdDg2OC50ZXN0MAuCCXQ4NjkudGVzdDAL
--ggl0ODcwLnRlc3QwC4IJdDg3MS50ZXN0MAuCCXQ4NzIudGVzdDALggl0ODczLnRl
--c3QwC4IJdDg3NC50ZXN0MAuCCXQ4NzUudGVzdDALggl0ODc2LnRlc3QwC4IJdDg3
--Ny50ZXN0MAuCCXQ4NzgudGVzdDALggl0ODc5LnRlc3QwC4IJdDg4MC50ZXN0MAuC
--CXQ4ODEudGVzdDALggl0ODgyLnRlc3QwC4IJdDg4My50ZXN0MAuCCXQ4ODQudGVz
--dDALggl0ODg1LnRlc3QwC4IJdDg4Ni50ZXN0MAuCCXQ4ODcudGVzdDALggl0ODg4
--LnRlc3QwC4IJdDg4OS50ZXN0MAuCCXQ4OTAudGVzdDALggl0ODkxLnRlc3QwC4IJ
--dDg5Mi50ZXN0MAuCCXQ4OTMudGVzdDALggl0ODk0LnRlc3QwC4IJdDg5NS50ZXN0
--MAuCCXQ4OTYudGVzdDALggl0ODk3LnRlc3QwC4IJdDg5OC50ZXN0MAuCCXQ4OTku
--dGVzdDALggl0OTAwLnRlc3QwC4IJdDkwMS50ZXN0MAuCCXQ5MDIudGVzdDALggl0
--OTAzLnRlc3QwC4IJdDkwNC50ZXN0MAuCCXQ5MDUudGVzdDALggl0OTA2LnRlc3Qw
--C4IJdDkwNy50ZXN0MAuCCXQ5MDgudGVzdDALggl0OTA5LnRlc3QwC4IJdDkxMC50
--ZXN0MAuCCXQ5MTEudGVzdDALggl0OTEyLnRlc3QwC4IJdDkxMy50ZXN0MAuCCXQ5
--MTQudGVzdDALggl0OTE1LnRlc3QwC4IJdDkxNi50ZXN0MAuCCXQ5MTcudGVzdDAL
--ggl0OTE4LnRlc3QwC4IJdDkxOS50ZXN0MAuCCXQ5MjAudGVzdDALggl0OTIxLnRl
--c3QwC4IJdDkyMi50ZXN0MAuCCXQ5MjMudGVzdDALggl0OTI0LnRlc3QwC4IJdDky
--NS50ZXN0MAuCCXQ5MjYudGVzdDALggl0OTI3LnRlc3QwC4IJdDkyOC50ZXN0MAuC
--CXQ5MjkudGVzdDALggl0OTMwLnRlc3QwC4IJdDkzMS50ZXN0MAuCCXQ5MzIudGVz
--dDALggl0OTMzLnRlc3QwC4IJdDkzNC50ZXN0MAuCCXQ5MzUudGVzdDALggl0OTM2
--LnRlc3QwC4IJdDkzNy50ZXN0MAuCCXQ5MzgudGVzdDALggl0OTM5LnRlc3QwC4IJ
--dDk0MC50ZXN0MAuCCXQ5NDEudGVzdDALggl0OTQyLnRlc3QwC4IJdDk0My50ZXN0
--MAuCCXQ5NDQudGVzdDALggl0OTQ1LnRlc3QwC4IJdDk0Ni50ZXN0MAuCCXQ5NDcu
--dGVzdDALggl0OTQ4LnRlc3QwC4IJdDk0OS50ZXN0MAuCCXQ5NTAudGVzdDALggl0
--OTUxLnRlc3QwC4IJdDk1Mi50ZXN0MAuCCXQ5NTMudGVzdDALggl0OTU0LnRlc3Qw
--C4IJdDk1NS50ZXN0MAuCCXQ5NTYudGVzdDALggl0OTU3LnRlc3QwC4IJdDk1OC50
--ZXN0MAuCCXQ5NTkudGVzdDALggl0OTYwLnRlc3QwC4IJdDk2MS50ZXN0MAuCCXQ5
--NjIudGVzdDALggl0OTYzLnRlc3QwC4IJdDk2NC50ZXN0MAuCCXQ5NjUudGVzdDAL
--ggl0OTY2LnRlc3QwC4IJdDk2Ny50ZXN0MAuCCXQ5NjgudGVzdDALggl0OTY5LnRl
--c3QwC4IJdDk3MC50ZXN0MAuCCXQ5NzEudGVzdDALggl0OTcyLnRlc3QwC4IJdDk3
--My50ZXN0MAuCCXQ5NzQudGVzdDALggl0OTc1LnRlc3QwC4IJdDk3Ni50ZXN0MAuC
--CXQ5NzcudGVzdDALggl0OTc4LnRlc3QwC4IJdDk3OS50ZXN0MAuCCXQ5ODAudGVz
--dDALggl0OTgxLnRlc3QwC4IJdDk4Mi50ZXN0MAuCCXQ5ODMudGVzdDALggl0OTg0
--LnRlc3QwC4IJdDk4NS50ZXN0MAuCCXQ5ODYudGVzdDALggl0OTg3LnRlc3QwC4IJ
--dDk4OC50ZXN0MAuCCXQ5ODkudGVzdDALggl0OTkwLnRlc3QwC4IJdDk5MS50ZXN0
--MAuCCXQ5OTIudGVzdDALggl0OTkzLnRlc3QwC4IJdDk5NC50ZXN0MAuCCXQ5OTUu
--dGVzdDALggl0OTk2LnRlc3QwC4IJdDk5Ny50ZXN0MAuCCXQ5OTgudGVzdDALggl0
--OTk5LnRlc3QwDIIKdDEwMDAudGVzdDAMggp0MTAwMS50ZXN0MAyCCnQxMDAyLnRl
--c3QwDIIKdDEwMDMudGVzdDAMggp0MTAwNC50ZXN0MAyCCnQxMDA1LnRlc3QwDIIK
--dDEwMDYudGVzdDAMggp0MTAwNy50ZXN0MAyCCnQxMDA4LnRlc3QwDIIKdDEwMDku
--dGVzdDAMggp0MTAxMC50ZXN0MAyCCnQxMDExLnRlc3QwDIIKdDEwMTIudGVzdDAM
--ggp0MTAxMy50ZXN0MAyCCnQxMDE0LnRlc3QwDIIKdDEwMTUudGVzdDAMggp0MTAx
--Ni50ZXN0MAyCCnQxMDE3LnRlc3QwDIIKdDEwMTgudGVzdDAMggp0MTAxOS50ZXN0
--MAyCCnQxMDIwLnRlc3QwDIIKdDEwMjEudGVzdDAMggp0MTAyMi50ZXN0MAyCCnQx
--MDIzLnRlc3QwDIIKdDEwMjQudGVzdDARpA8wDTELMAkGA1UEAwwCdDAwEaQPMA0x
--CzAJBgNVBAMMAnQxMBGkDzANMQswCQYDVQQDDAJ0MjARpA8wDTELMAkGA1UEAwwC
--dDMwEaQPMA0xCzAJBgNVBAMMAnQ0MBGkDzANMQswCQYDVQQDDAJ0NTARpA8wDTEL
--MAkGA1UEAwwCdDYwEaQPMA0xCzAJBgNVBAMMAnQ3MBGkDzANMQswCQYDVQQDDAJ0
--ODARpA8wDTELMAkGA1UEAwwCdDkwEqQQMA4xDDAKBgNVBAMMA3QxMDASpBAwDjEM
--MAoGA1UEAwwDdDExMBKkEDAOMQwwCgYDVQQDDAN0MTIwEqQQMA4xDDAKBgNVBAMM
--A3QxMzASpBAwDjEMMAoGA1UEAwwDdDE0MBKkEDAOMQwwCgYDVQQDDAN0MTUwEqQQ
--MA4xDDAKBgNVBAMMA3QxNjASpBAwDjEMMAoGA1UEAwwDdDE3MBKkEDAOMQwwCgYD
--VQQDDAN0MTgwEqQQMA4xDDAKBgNVBAMMA3QxOTASpBAwDjEMMAoGA1UEAwwDdDIw
--MBKkEDAOMQwwCgYDVQQDDAN0MjEwEqQQMA4xDDAKBgNVBAMMA3QyMjASpBAwDjEM
--MAoGA1UEAwwDdDIzMBKkEDAOMQwwCgYDVQQDDAN0MjQwEqQQMA4xDDAKBgNVBAMM
--A3QyNTASpBAwDjEMMAoGA1UEAwwDdDI2MBKkEDAOMQwwCgYDVQQDDAN0MjcwEqQQ
--MA4xDDAKBgNVBAMMA3QyODASpBAwDjEMMAoGA1UEAwwDdDI5MBKkEDAOMQwwCgYD
--VQQDDAN0MzAwEqQQMA4xDDAKBgNVBAMMA3QzMTASpBAwDjEMMAoGA1UEAwwDdDMy
--MBKkEDAOMQwwCgYDVQQDDAN0MzMwEqQQMA4xDDAKBgNVBAMMA3QzNDASpBAwDjEM
--MAoGA1UEAwwDdDM1MBKkEDAOMQwwCgYDVQQDDAN0MzYwEqQQMA4xDDAKBgNVBAMM
--A3QzNzASpBAwDjEMMAoGA1UEAwwDdDM4MBKkEDAOMQwwCgYDVQQDDAN0MzkwEqQQ
--MA4xDDAKBgNVBAMMA3Q0MDASpBAwDjEMMAoGA1UEAwwDdDQxMBKkEDAOMQwwCgYD
--VQQDDAN0NDIwEqQQMA4xDDAKBgNVBAMMA3Q0MzASpBAwDjEMMAoGA1UEAwwDdDQ0
--MBKkEDAOMQwwCgYDVQQDDAN0NDUwEqQQMA4xDDAKBgNVBAMMA3Q0NjASpBAwDjEM
--MAoGA1UEAwwDdDQ3MBKkEDAOMQwwCgYDVQQDDAN0NDgwEqQQMA4xDDAKBgNVBAMM
--A3Q0OTASpBAwDjEMMAoGA1UEAwwDdDUwMBKkEDAOMQwwCgYDVQQDDAN0NTEwEqQQ
--MA4xDDAKBgNVBAMMA3Q1MjASpBAwDjEMMAoGA1UEAwwDdDUzMBKkEDAOMQwwCgYD
--VQQDDAN0NTQwEqQQMA4xDDAKBgNVBAMMA3Q1NTASpBAwDjEMMAoGA1UEAwwDdDU2
--MBKkEDAOMQwwCgYDVQQDDAN0NTcwEqQQMA4xDDAKBgNVBAMMA3Q1ODASpBAwDjEM
--MAoGA1UEAwwDdDU5MBKkEDAOMQwwCgYDVQQDDAN0NjAwEqQQMA4xDDAKBgNVBAMM
--A3Q2MTASpBAwDjEMMAoGA1UEAwwDdDYyMBKkEDAOMQwwCgYDVQQDDAN0NjMwEqQQ
--MA4xDDAKBgNVBAMMA3Q2NDASpBAwDjEMMAoGA1UEAwwDdDY1MBKkEDAOMQwwCgYD
--VQQDDAN0NjYwEqQQMA4xDDAKBgNVBAMMA3Q2NzASpBAwDjEMMAoGA1UEAwwDdDY4
--MBKkEDAOMQwwCgYDVQQDDAN0NjkwEqQQMA4xDDAKBgNVBAMMA3Q3MDASpBAwDjEM
--MAoGA1UEAwwDdDcxMBKkEDAOMQwwCgYDVQQDDAN0NzIwEqQQMA4xDDAKBgNVBAMM
--A3Q3MzASpBAwDjEMMAoGA1UEAwwDdDc0MBKkEDAOMQwwCgYDVQQDDAN0NzUwEqQQ
--MA4xDDAKBgNVBAMMA3Q3NjASpBAwDjEMMAoGA1UEAwwDdDc3MBKkEDAOMQwwCgYD
--VQQDDAN0NzgwEqQQMA4xDDAKBgNVBAMMA3Q3OTASpBAwDjEMMAoGA1UEAwwDdDgw
--MBKkEDAOMQwwCgYDVQQDDAN0ODEwEqQQMA4xDDAKBgNVBAMMA3Q4MjASpBAwDjEM
--MAoGA1UEAwwDdDgzMBKkEDAOMQwwCgYDVQQDDAN0ODQwEqQQMA4xDDAKBgNVBAMM
--A3Q4NTASpBAwDjEMMAoGA1UEAwwDdDg2MBKkEDAOMQwwCgYDVQQDDAN0ODcwEqQQ
--MA4xDDAKBgNVBAMMA3Q4ODASpBAwDjEMMAoGA1UEAwwDdDg5MBKkEDAOMQwwCgYD
--VQQDDAN0OTAwEqQQMA4xDDAKBgNVBAMMA3Q5MTASpBAwDjEMMAoGA1UEAwwDdDky
--MBKkEDAOMQwwCgYDVQQDDAN0OTMwEqQQMA4xDDAKBgNVBAMMA3Q5NDASpBAwDjEM
--MAoGA1UEAwwDdDk1MBKkEDAOMQwwCgYDVQQDDAN0OTYwEqQQMA4xDDAKBgNVBAMM
--A3Q5NzASpBAwDjEMMAoGA1UEAwwDdDk4MBKkEDAOMQwwCgYDVQQDDAN0OTkwE6QR
--MA8xDTALBgNVBAMMBHQxMDAwE6QRMA8xDTALBgNVBAMMBHQxMDEwE6QRMA8xDTAL
--BgNVBAMMBHQxMDIwE6QRMA8xDTALBgNVBAMMBHQxMDMwE6QRMA8xDTALBgNVBAMM
--BHQxMDQwE6QRMA8xDTALBgNVBAMMBHQxMDUwE6QRMA8xDTALBgNVBAMMBHQxMDYw
--E6QRMA8xDTALBgNVBAMMBHQxMDcwE6QRMA8xDTALBgNVBAMMBHQxMDgwE6QRMA8x
--DTALBgNVBAMMBHQxMDkwE6QRMA8xDTALBgNVBAMMBHQxMTAwE6QRMA8xDTALBgNV
--BAMMBHQxMTEwE6QRMA8xDTALBgNVBAMMBHQxMTIwE6QRMA8xDTALBgNVBAMMBHQx
--MTMwE6QRMA8xDTALBgNVBAMMBHQxMTQwE6QRMA8xDTALBgNVBAMMBHQxMTUwE6QR
--MA8xDTALBgNVBAMMBHQxMTYwE6QRMA8xDTALBgNVBAMMBHQxMTcwE6QRMA8xDTAL
--BgNVBAMMBHQxMTgwE6QRMA8xDTALBgNVBAMMBHQxMTkwE6QRMA8xDTALBgNVBAMM
--BHQxMjAwE6QRMA8xDTALBgNVBAMMBHQxMjEwE6QRMA8xDTALBgNVBAMMBHQxMjIw
--E6QRMA8xDTALBgNVBAMMBHQxMjMwE6QRMA8xDTALBgNVBAMMBHQxMjQwE6QRMA8x
--DTALBgNVBAMMBHQxMjUwE6QRMA8xDTALBgNVBAMMBHQxMjYwE6QRMA8xDTALBgNV
--BAMMBHQxMjcwE6QRMA8xDTALBgNVBAMMBHQxMjgwE6QRMA8xDTALBgNVBAMMBHQx
--MjkwE6QRMA8xDTALBgNVBAMMBHQxMzAwE6QRMA8xDTALBgNVBAMMBHQxMzEwE6QR
--MA8xDTALBgNVBAMMBHQxMzIwE6QRMA8xDTALBgNVBAMMBHQxMzMwE6QRMA8xDTAL
--BgNVBAMMBHQxMzQwE6QRMA8xDTALBgNVBAMMBHQxMzUwE6QRMA8xDTALBgNVBAMM
--BHQxMzYwE6QRMA8xDTALBgNVBAMMBHQxMzcwE6QRMA8xDTALBgNVBAMMBHQxMzgw
--E6QRMA8xDTALBgNVBAMMBHQxMzkwE6QRMA8xDTALBgNVBAMMBHQxNDAwE6QRMA8x
--DTALBgNVBAMMBHQxNDEwE6QRMA8xDTALBgNVBAMMBHQxNDIwE6QRMA8xDTALBgNV
--BAMMBHQxNDMwE6QRMA8xDTALBgNVBAMMBHQxNDQwE6QRMA8xDTALBgNVBAMMBHQx
--NDUwE6QRMA8xDTALBgNVBAMMBHQxNDYwE6QRMA8xDTALBgNVBAMMBHQxNDcwE6QR
--MA8xDTALBgNVBAMMBHQxNDgwE6QRMA8xDTALBgNVBAMMBHQxNDkwE6QRMA8xDTAL
--BgNVBAMMBHQxNTAwE6QRMA8xDTALBgNVBAMMBHQxNTEwE6QRMA8xDTALBgNVBAMM
--BHQxNTIwE6QRMA8xDTALBgNVBAMMBHQxNTMwE6QRMA8xDTALBgNVBAMMBHQxNTQw
--E6QRMA8xDTALBgNVBAMMBHQxNTUwE6QRMA8xDTALBgNVBAMMBHQxNTYwE6QRMA8x
--DTALBgNVBAMMBHQxNTcwE6QRMA8xDTALBgNVBAMMBHQxNTgwE6QRMA8xDTALBgNV
--BAMMBHQxNTkwE6QRMA8xDTALBgNVBAMMBHQxNjAwE6QRMA8xDTALBgNVBAMMBHQx
--NjEwE6QRMA8xDTALBgNVBAMMBHQxNjIwE6QRMA8xDTALBgNVBAMMBHQxNjMwE6QR
--MA8xDTALBgNVBAMMBHQxNjQwE6QRMA8xDTALBgNVBAMMBHQxNjUwE6QRMA8xDTAL
--BgNVBAMMBHQxNjYwE6QRMA8xDTALBgNVBAMMBHQxNjcwE6QRMA8xDTALBgNVBAMM
--BHQxNjgwE6QRMA8xDTALBgNVBAMMBHQxNjkwE6QRMA8xDTALBgNVBAMMBHQxNzAw
--E6QRMA8xDTALBgNVBAMMBHQxNzEwE6QRMA8xDTALBgNVBAMMBHQxNzIwE6QRMA8x
--DTALBgNVBAMMBHQxNzMwE6QRMA8xDTALBgNVBAMMBHQxNzQwE6QRMA8xDTALBgNV
--BAMMBHQxNzUwE6QRMA8xDTALBgNVBAMMBHQxNzYwE6QRMA8xDTALBgNVBAMMBHQx
--NzcwE6QRMA8xDTALBgNVBAMMBHQxNzgwE6QRMA8xDTALBgNVBAMMBHQxNzkwE6QR
--MA8xDTALBgNVBAMMBHQxODAwE6QRMA8xDTALBgNVBAMMBHQxODEwE6QRMA8xDTAL
--BgNVBAMMBHQxODIwE6QRMA8xDTALBgNVBAMMBHQxODMwE6QRMA8xDTALBgNVBAMM
--BHQxODQwE6QRMA8xDTALBgNVBAMMBHQxODUwE6QRMA8xDTALBgNVBAMMBHQxODYw
--E6QRMA8xDTALBgNVBAMMBHQxODcwE6QRMA8xDTALBgNVBAMMBHQxODgwE6QRMA8x
--DTALBgNVBAMMBHQxODkwE6QRMA8xDTALBgNVBAMMBHQxOTAwE6QRMA8xDTALBgNV
--BAMMBHQxOTEwE6QRMA8xDTALBgNVBAMMBHQxOTIwE6QRMA8xDTALBgNVBAMMBHQx
--OTMwE6QRMA8xDTALBgNVBAMMBHQxOTQwE6QRMA8xDTALBgNVBAMMBHQxOTUwE6QR
--MA8xDTALBgNVBAMMBHQxOTYwE6QRMA8xDTALBgNVBAMMBHQxOTcwE6QRMA8xDTAL
--BgNVBAMMBHQxOTgwE6QRMA8xDTALBgNVBAMMBHQxOTkwE6QRMA8xDTALBgNVBAMM
--BHQyMDAwE6QRMA8xDTALBgNVBAMMBHQyMDEwE6QRMA8xDTALBgNVBAMMBHQyMDIw
--E6QRMA8xDTALBgNVBAMMBHQyMDMwE6QRMA8xDTALBgNVBAMMBHQyMDQwE6QRMA8x
--DTALBgNVBAMMBHQyMDUwE6QRMA8xDTALBgNVBAMMBHQyMDYwE6QRMA8xDTALBgNV
--BAMMBHQyMDcwE6QRMA8xDTALBgNVBAMMBHQyMDgwE6QRMA8xDTALBgNVBAMMBHQy
--MDkwE6QRMA8xDTALBgNVBAMMBHQyMTAwE6QRMA8xDTALBgNVBAMMBHQyMTEwE6QR
--MA8xDTALBgNVBAMMBHQyMTIwE6QRMA8xDTALBgNVBAMMBHQyMTMwE6QRMA8xDTAL
--BgNVBAMMBHQyMTQwE6QRMA8xDTALBgNVBAMMBHQyMTUwE6QRMA8xDTALBgNVBAMM
--BHQyMTYwE6QRMA8xDTALBgNVBAMMBHQyMTcwE6QRMA8xDTALBgNVBAMMBHQyMTgw
--E6QRMA8xDTALBgNVBAMMBHQyMTkwE6QRMA8xDTALBgNVBAMMBHQyMjAwE6QRMA8x
--DTALBgNVBAMMBHQyMjEwE6QRMA8xDTALBgNVBAMMBHQyMjIwE6QRMA8xDTALBgNV
--BAMMBHQyMjMwE6QRMA8xDTALBgNVBAMMBHQyMjQwE6QRMA8xDTALBgNVBAMMBHQy
--MjUwE6QRMA8xDTALBgNVBAMMBHQyMjYwE6QRMA8xDTALBgNVBAMMBHQyMjcwE6QR
--MA8xDTALBgNVBAMMBHQyMjgwE6QRMA8xDTALBgNVBAMMBHQyMjkwE6QRMA8xDTAL
--BgNVBAMMBHQyMzAwE6QRMA8xDTALBgNVBAMMBHQyMzEwE6QRMA8xDTALBgNVBAMM
--BHQyMzIwE6QRMA8xDTALBgNVBAMMBHQyMzMwE6QRMA8xDTALBgNVBAMMBHQyMzQw
--E6QRMA8xDTALBgNVBAMMBHQyMzUwE6QRMA8xDTALBgNVBAMMBHQyMzYwE6QRMA8x
--DTALBgNVBAMMBHQyMzcwE6QRMA8xDTALBgNVBAMMBHQyMzgwE6QRMA8xDTALBgNV
--BAMMBHQyMzkwE6QRMA8xDTALBgNVBAMMBHQyNDAwE6QRMA8xDTALBgNVBAMMBHQy
--NDEwE6QRMA8xDTALBgNVBAMMBHQyNDIwE6QRMA8xDTALBgNVBAMMBHQyNDMwE6QR
--MA8xDTALBgNVBAMMBHQyNDQwE6QRMA8xDTALBgNVBAMMBHQyNDUwE6QRMA8xDTAL
--BgNVBAMMBHQyNDYwE6QRMA8xDTALBgNVBAMMBHQyNDcwE6QRMA8xDTALBgNVBAMM
--BHQyNDgwE6QRMA8xDTALBgNVBAMMBHQyNDkwE6QRMA8xDTALBgNVBAMMBHQyNTAw
--E6QRMA8xDTALBgNVBAMMBHQyNTEwE6QRMA8xDTALBgNVBAMMBHQyNTIwE6QRMA8x
--DTALBgNVBAMMBHQyNTMwE6QRMA8xDTALBgNVBAMMBHQyNTQwE6QRMA8xDTALBgNV
--BAMMBHQyNTUwE6QRMA8xDTALBgNVBAMMBHQyNTYwE6QRMA8xDTALBgNVBAMMBHQy
--NTcwE6QRMA8xDTALBgNVBAMMBHQyNTgwE6QRMA8xDTALBgNVBAMMBHQyNTkwE6QR
--MA8xDTALBgNVBAMMBHQyNjAwE6QRMA8xDTALBgNVBAMMBHQyNjEwE6QRMA8xDTAL
--BgNVBAMMBHQyNjIwE6QRMA8xDTALBgNVBAMMBHQyNjMwE6QRMA8xDTALBgNVBAMM
--BHQyNjQwE6QRMA8xDTALBgNVBAMMBHQyNjUwE6QRMA8xDTALBgNVBAMMBHQyNjYw
--E6QRMA8xDTALBgNVBAMMBHQyNjcwE6QRMA8xDTALBgNVBAMMBHQyNjgwE6QRMA8x
--DTALBgNVBAMMBHQyNjkwE6QRMA8xDTALBgNVBAMMBHQyNzAwE6QRMA8xDTALBgNV
--BAMMBHQyNzEwE6QRMA8xDTALBgNVBAMMBHQyNzIwE6QRMA8xDTALBgNVBAMMBHQy
--NzMwE6QRMA8xDTALBgNVBAMMBHQyNzQwE6QRMA8xDTALBgNVBAMMBHQyNzUwE6QR
--MA8xDTALBgNVBAMMBHQyNzYwE6QRMA8xDTALBgNVBAMMBHQyNzcwE6QRMA8xDTAL
--BgNVBAMMBHQyNzgwE6QRMA8xDTALBgNVBAMMBHQyNzkwE6QRMA8xDTALBgNVBAMM
--BHQyODAwE6QRMA8xDTALBgNVBAMMBHQyODEwE6QRMA8xDTALBgNVBAMMBHQyODIw
--E6QRMA8xDTALBgNVBAMMBHQyODMwE6QRMA8xDTALBgNVBAMMBHQyODQwE6QRMA8x
--DTALBgNVBAMMBHQyODUwE6QRMA8xDTALBgNVBAMMBHQyODYwE6QRMA8xDTALBgNV
--BAMMBHQyODcwE6QRMA8xDTALBgNVBAMMBHQyODgwE6QRMA8xDTALBgNVBAMMBHQy
--ODkwE6QRMA8xDTALBgNVBAMMBHQyOTAwE6QRMA8xDTALBgNVBAMMBHQyOTEwE6QR
--MA8xDTALBgNVBAMMBHQyOTIwE6QRMA8xDTALBgNVBAMMBHQyOTMwE6QRMA8xDTAL
--BgNVBAMMBHQyOTQwE6QRMA8xDTALBgNVBAMMBHQyOTUwE6QRMA8xDTALBgNVBAMM
--BHQyOTYwE6QRMA8xDTALBgNVBAMMBHQyOTcwE6QRMA8xDTALBgNVBAMMBHQyOTgw
--E6QRMA8xDTALBgNVBAMMBHQyOTkwE6QRMA8xDTALBgNVBAMMBHQzMDAwE6QRMA8x
--DTALBgNVBAMMBHQzMDEwE6QRMA8xDTALBgNVBAMMBHQzMDIwE6QRMA8xDTALBgNV
--BAMMBHQzMDMwE6QRMA8xDTALBgNVBAMMBHQzMDQwE6QRMA8xDTALBgNVBAMMBHQz
--MDUwE6QRMA8xDTALBgNVBAMMBHQzMDYwE6QRMA8xDTALBgNVBAMMBHQzMDcwE6QR
--MA8xDTALBgNVBAMMBHQzMDgwE6QRMA8xDTALBgNVBAMMBHQzMDkwE6QRMA8xDTAL
--BgNVBAMMBHQzMTAwE6QRMA8xDTALBgNVBAMMBHQzMTEwE6QRMA8xDTALBgNVBAMM
--BHQzMTIwE6QRMA8xDTALBgNVBAMMBHQzMTMwE6QRMA8xDTALBgNVBAMMBHQzMTQw
--E6QRMA8xDTALBgNVBAMMBHQzMTUwE6QRMA8xDTALBgNVBAMMBHQzMTYwE6QRMA8x
--DTALBgNVBAMMBHQzMTcwE6QRMA8xDTALBgNVBAMMBHQzMTgwE6QRMA8xDTALBgNV
--BAMMBHQzMTkwE6QRMA8xDTALBgNVBAMMBHQzMjAwE6QRMA8xDTALBgNVBAMMBHQz
--MjEwE6QRMA8xDTALBgNVBAMMBHQzMjIwE6QRMA8xDTALBgNVBAMMBHQzMjMwE6QR
--MA8xDTALBgNVBAMMBHQzMjQwE6QRMA8xDTALBgNVBAMMBHQzMjUwE6QRMA8xDTAL
--BgNVBAMMBHQzMjYwE6QRMA8xDTALBgNVBAMMBHQzMjcwE6QRMA8xDTALBgNVBAMM
--BHQzMjgwE6QRMA8xDTALBgNVBAMMBHQzMjkwE6QRMA8xDTALBgNVBAMMBHQzMzAw
--E6QRMA8xDTALBgNVBAMMBHQzMzEwE6QRMA8xDTALBgNVBAMMBHQzMzIwE6QRMA8x
--DTALBgNVBAMMBHQzMzMwE6QRMA8xDTALBgNVBAMMBHQzMzQwE6QRMA8xDTALBgNV
--BAMMBHQzMzUwE6QRMA8xDTALBgNVBAMMBHQzMzYwE6QRMA8xDTALBgNVBAMMBHQz
--MzcwE6QRMA8xDTALBgNVBAMMBHQzMzgwE6QRMA8xDTALBgNVBAMMBHQzMzkwE6QR
--MA8xDTALBgNVBAMMBHQzNDAwE6QRMA8xDTALBgNVBAMMBHQzNDEwE6QRMA8xDTAL
--BgNVBAMMBHQzNDIwE6QRMA8xDTALBgNVBAMMBHQzNDMwE6QRMA8xDTALBgNVBAMM
--BHQzNDQwE6QRMA8xDTALBgNVBAMMBHQzNDUwE6QRMA8xDTALBgNVBAMMBHQzNDYw
--E6QRMA8xDTALBgNVBAMMBHQzNDcwE6QRMA8xDTALBgNVBAMMBHQzNDgwE6QRMA8x
--DTALBgNVBAMMBHQzNDkwE6QRMA8xDTALBgNVBAMMBHQzNTAwE6QRMA8xDTALBgNV
--BAMMBHQzNTEwE6QRMA8xDTALBgNVBAMMBHQzNTIwE6QRMA8xDTALBgNVBAMMBHQz
--NTMwE6QRMA8xDTALBgNVBAMMBHQzNTQwE6QRMA8xDTALBgNVBAMMBHQzNTUwE6QR
--MA8xDTALBgNVBAMMBHQzNTYwE6QRMA8xDTALBgNVBAMMBHQzNTcwE6QRMA8xDTAL
--BgNVBAMMBHQzNTgwE6QRMA8xDTALBgNVBAMMBHQzNTkwE6QRMA8xDTALBgNVBAMM
--BHQzNjAwE6QRMA8xDTALBgNVBAMMBHQzNjEwE6QRMA8xDTALBgNVBAMMBHQzNjIw
--E6QRMA8xDTALBgNVBAMMBHQzNjMwE6QRMA8xDTALBgNVBAMMBHQzNjQwE6QRMA8x
--DTALBgNVBAMMBHQzNjUwE6QRMA8xDTALBgNVBAMMBHQzNjYwE6QRMA8xDTALBgNV
--BAMMBHQzNjcwE6QRMA8xDTALBgNVBAMMBHQzNjgwE6QRMA8xDTALBgNVBAMMBHQz
--NjkwE6QRMA8xDTALBgNVBAMMBHQzNzAwE6QRMA8xDTALBgNVBAMMBHQzNzEwE6QR
--MA8xDTALBgNVBAMMBHQzNzIwE6QRMA8xDTALBgNVBAMMBHQzNzMwE6QRMA8xDTAL
--BgNVBAMMBHQzNzQwE6QRMA8xDTALBgNVBAMMBHQzNzUwE6QRMA8xDTALBgNVBAMM
--BHQzNzYwE6QRMA8xDTALBgNVBAMMBHQzNzcwE6QRMA8xDTALBgNVBAMMBHQzNzgw
--E6QRMA8xDTALBgNVBAMMBHQzNzkwE6QRMA8xDTALBgNVBAMMBHQzODAwE6QRMA8x
--DTALBgNVBAMMBHQzODEwE6QRMA8xDTALBgNVBAMMBHQzODIwE6QRMA8xDTALBgNV
--BAMMBHQzODMwE6QRMA8xDTALBgNVBAMMBHQzODQwE6QRMA8xDTALBgNVBAMMBHQz
--ODUwE6QRMA8xDTALBgNVBAMMBHQzODYwE6QRMA8xDTALBgNVBAMMBHQzODcwE6QR
--MA8xDTALBgNVBAMMBHQzODgwE6QRMA8xDTALBgNVBAMMBHQzODkwE6QRMA8xDTAL
--BgNVBAMMBHQzOTAwE6QRMA8xDTALBgNVBAMMBHQzOTEwE6QRMA8xDTALBgNVBAMM
--BHQzOTIwE6QRMA8xDTALBgNVBAMMBHQzOTMwE6QRMA8xDTALBgNVBAMMBHQzOTQw
--E6QRMA8xDTALBgNVBAMMBHQzOTUwE6QRMA8xDTALBgNVBAMMBHQzOTYwE6QRMA8x
--DTALBgNVBAMMBHQzOTcwE6QRMA8xDTALBgNVBAMMBHQzOTgwE6QRMA8xDTALBgNV
--BAMMBHQzOTkwE6QRMA8xDTALBgNVBAMMBHQ0MDAwE6QRMA8xDTALBgNVBAMMBHQ0
--MDEwE6QRMA8xDTALBgNVBAMMBHQ0MDIwE6QRMA8xDTALBgNVBAMMBHQ0MDMwE6QR
--MA8xDTALBgNVBAMMBHQ0MDQwE6QRMA8xDTALBgNVBAMMBHQ0MDUwE6QRMA8xDTAL
--BgNVBAMMBHQ0MDYwE6QRMA8xDTALBgNVBAMMBHQ0MDcwE6QRMA8xDTALBgNVBAMM
--BHQ0MDgwE6QRMA8xDTALBgNVBAMMBHQ0MDkwE6QRMA8xDTALBgNVBAMMBHQ0MTAw
--E6QRMA8xDTALBgNVBAMMBHQ0MTEwE6QRMA8xDTALBgNVBAMMBHQ0MTIwE6QRMA8x
--DTALBgNVBAMMBHQ0MTMwE6QRMA8xDTALBgNVBAMMBHQ0MTQwE6QRMA8xDTALBgNV
--BAMMBHQ0MTUwE6QRMA8xDTALBgNVBAMMBHQ0MTYwE6QRMA8xDTALBgNVBAMMBHQ0
--MTcwE6QRMA8xDTALBgNVBAMMBHQ0MTgwE6QRMA8xDTALBgNVBAMMBHQ0MTkwE6QR
--MA8xDTALBgNVBAMMBHQ0MjAwE6QRMA8xDTALBgNVBAMMBHQ0MjEwE6QRMA8xDTAL
--BgNVBAMMBHQ0MjIwE6QRMA8xDTALBgNVBAMMBHQ0MjMwE6QRMA8xDTALBgNVBAMM
--BHQ0MjQwE6QRMA8xDTALBgNVBAMMBHQ0MjUwE6QRMA8xDTALBgNVBAMMBHQ0MjYw
--E6QRMA8xDTALBgNVBAMMBHQ0MjcwE6QRMA8xDTALBgNVBAMMBHQ0MjgwE6QRMA8x
--DTALBgNVBAMMBHQ0MjkwE6QRMA8xDTALBgNVBAMMBHQ0MzAwE6QRMA8xDTALBgNV
--BAMMBHQ0MzEwE6QRMA8xDTALBgNVBAMMBHQ0MzIwE6QRMA8xDTALBgNVBAMMBHQ0
--MzMwE6QRMA8xDTALBgNVBAMMBHQ0MzQwE6QRMA8xDTALBgNVBAMMBHQ0MzUwE6QR
--MA8xDTALBgNVBAMMBHQ0MzYwE6QRMA8xDTALBgNVBAMMBHQ0MzcwE6QRMA8xDTAL
--BgNVBAMMBHQ0MzgwE6QRMA8xDTALBgNVBAMMBHQ0MzkwE6QRMA8xDTALBgNVBAMM
--BHQ0NDAwE6QRMA8xDTALBgNVBAMMBHQ0NDEwE6QRMA8xDTALBgNVBAMMBHQ0NDIw
--E6QRMA8xDTALBgNVBAMMBHQ0NDMwE6QRMA8xDTALBgNVBAMMBHQ0NDQwE6QRMA8x
--DTALBgNVBAMMBHQ0NDUwE6QRMA8xDTALBgNVBAMMBHQ0NDYwE6QRMA8xDTALBgNV
--BAMMBHQ0NDcwE6QRMA8xDTALBgNVBAMMBHQ0NDgwE6QRMA8xDTALBgNVBAMMBHQ0
--NDkwE6QRMA8xDTALBgNVBAMMBHQ0NTAwE6QRMA8xDTALBgNVBAMMBHQ0NTEwE6QR
--MA8xDTALBgNVBAMMBHQ0NTIwE6QRMA8xDTALBgNVBAMMBHQ0NTMwE6QRMA8xDTAL
--BgNVBAMMBHQ0NTQwE6QRMA8xDTALBgNVBAMMBHQ0NTUwE6QRMA8xDTALBgNVBAMM
--BHQ0NTYwE6QRMA8xDTALBgNVBAMMBHQ0NTcwE6QRMA8xDTALBgNVBAMMBHQ0NTgw
--E6QRMA8xDTALBgNVBAMMBHQ0NTkwE6QRMA8xDTALBgNVBAMMBHQ0NjAwE6QRMA8x
--DTALBgNVBAMMBHQ0NjEwE6QRMA8xDTALBgNVBAMMBHQ0NjIwE6QRMA8xDTALBgNV
--BAMMBHQ0NjMwE6QRMA8xDTALBgNVBAMMBHQ0NjQwE6QRMA8xDTALBgNVBAMMBHQ0
--NjUwE6QRMA8xDTALBgNVBAMMBHQ0NjYwE6QRMA8xDTALBgNVBAMMBHQ0NjcwE6QR
--MA8xDTALBgNVBAMMBHQ0NjgwE6QRMA8xDTALBgNVBAMMBHQ0NjkwE6QRMA8xDTAL
--BgNVBAMMBHQ0NzAwE6QRMA8xDTALBgNVBAMMBHQ0NzEwE6QRMA8xDTALBgNVBAMM
--BHQ0NzIwE6QRMA8xDTALBgNVBAMMBHQ0NzMwE6QRMA8xDTALBgNVBAMMBHQ0NzQw
--E6QRMA8xDTALBgNVBAMMBHQ0NzUwE6QRMA8xDTALBgNVBAMMBHQ0NzYwE6QRMA8x
--DTALBgNVBAMMBHQ0NzcwE6QRMA8xDTALBgNVBAMMBHQ0NzgwE6QRMA8xDTALBgNV
--BAMMBHQ0NzkwE6QRMA8xDTALBgNVBAMMBHQ0ODAwE6QRMA8xDTALBgNVBAMMBHQ0
--ODEwE6QRMA8xDTALBgNVBAMMBHQ0ODIwE6QRMA8xDTALBgNVBAMMBHQ0ODMwE6QR
--MA8xDTALBgNVBAMMBHQ0ODQwE6QRMA8xDTALBgNVBAMMBHQ0ODUwE6QRMA8xDTAL
--BgNVBAMMBHQ0ODYwE6QRMA8xDTALBgNVBAMMBHQ0ODcwE6QRMA8xDTALBgNVBAMM
--BHQ0ODgwE6QRMA8xDTALBgNVBAMMBHQ0ODkwE6QRMA8xDTALBgNVBAMMBHQ0OTAw
--E6QRMA8xDTALBgNVBAMMBHQ0OTEwE6QRMA8xDTALBgNVBAMMBHQ0OTIwE6QRMA8x
--DTALBgNVBAMMBHQ0OTMwE6QRMA8xDTALBgNVBAMMBHQ0OTQwE6QRMA8xDTALBgNV
--BAMMBHQ0OTUwE6QRMA8xDTALBgNVBAMMBHQ0OTYwE6QRMA8xDTALBgNVBAMMBHQ0
--OTcwE6QRMA8xDTALBgNVBAMMBHQ0OTgwE6QRMA8xDTALBgNVBAMMBHQ0OTkwE6QR
--MA8xDTALBgNVBAMMBHQ1MDAwE6QRMA8xDTALBgNVBAMMBHQ1MDEwE6QRMA8xDTAL
--BgNVBAMMBHQ1MDIwE6QRMA8xDTALBgNVBAMMBHQ1MDMwE6QRMA8xDTALBgNVBAMM
--BHQ1MDQwE6QRMA8xDTALBgNVBAMMBHQ1MDUwE6QRMA8xDTALBgNVBAMMBHQ1MDYw
--E6QRMA8xDTALBgNVBAMMBHQ1MDcwE6QRMA8xDTALBgNVBAMMBHQ1MDgwE6QRMA8x
--DTALBgNVBAMMBHQ1MDkwE6QRMA8xDTALBgNVBAMMBHQ1MTAwE6QRMA8xDTALBgNV
--BAMMBHQ1MTEwE6QRMA8xDTALBgNVBAMMBHQ1MTIwE6QRMA8xDTALBgNVBAMMBHQ1
--MTMwE6QRMA8xDTALBgNVBAMMBHQ1MTQwE6QRMA8xDTALBgNVBAMMBHQ1MTUwE6QR
--MA8xDTALBgNVBAMMBHQ1MTYwE6QRMA8xDTALBgNVBAMMBHQ1MTcwE6QRMA8xDTAL
--BgNVBAMMBHQ1MTgwE6QRMA8xDTALBgNVBAMMBHQ1MTkwE6QRMA8xDTALBgNVBAMM
--BHQ1MjAwE6QRMA8xDTALBgNVBAMMBHQ1MjEwE6QRMA8xDTALBgNVBAMMBHQ1MjIw
--E6QRMA8xDTALBgNVBAMMBHQ1MjMwE6QRMA8xDTALBgNVBAMMBHQ1MjQwE6QRMA8x
--DTALBgNVBAMMBHQ1MjUwE6QRMA8xDTALBgNVBAMMBHQ1MjYwE6QRMA8xDTALBgNV
--BAMMBHQ1MjcwE6QRMA8xDTALBgNVBAMMBHQ1MjgwE6QRMA8xDTALBgNVBAMMBHQ1
--MjkwE6QRMA8xDTALBgNVBAMMBHQ1MzAwE6QRMA8xDTALBgNVBAMMBHQ1MzEwE6QR
--MA8xDTALBgNVBAMMBHQ1MzIwE6QRMA8xDTALBgNVBAMMBHQ1MzMwE6QRMA8xDTAL
--BgNVBAMMBHQ1MzQwE6QRMA8xDTALBgNVBAMMBHQ1MzUwE6QRMA8xDTALBgNVBAMM
--BHQ1MzYwE6QRMA8xDTALBgNVBAMMBHQ1MzcwE6QRMA8xDTALBgNVBAMMBHQ1Mzgw
--E6QRMA8xDTALBgNVBAMMBHQ1MzkwE6QRMA8xDTALBgNVBAMMBHQ1NDAwE6QRMA8x
--DTALBgNVBAMMBHQ1NDEwE6QRMA8xDTALBgNVBAMMBHQ1NDIwE6QRMA8xDTALBgNV
--BAMMBHQ1NDMwE6QRMA8xDTALBgNVBAMMBHQ1NDQwE6QRMA8xDTALBgNVBAMMBHQ1
--NDUwE6QRMA8xDTALBgNVBAMMBHQ1NDYwE6QRMA8xDTALBgNVBAMMBHQ1NDcwE6QR
--MA8xDTALBgNVBAMMBHQ1NDgwE6QRMA8xDTALBgNVBAMMBHQ1NDkwE6QRMA8xDTAL
--BgNVBAMMBHQ1NTAwE6QRMA8xDTALBgNVBAMMBHQ1NTEwE6QRMA8xDTALBgNVBAMM
--BHQ1NTIwE6QRMA8xDTALBgNVBAMMBHQ1NTMwE6QRMA8xDTALBgNVBAMMBHQ1NTQw
--E6QRMA8xDTALBgNVBAMMBHQ1NTUwE6QRMA8xDTALBgNVBAMMBHQ1NTYwE6QRMA8x
--DTALBgNVBAMMBHQ1NTcwE6QRMA8xDTALBgNVBAMMBHQ1NTgwE6QRMA8xDTALBgNV
--BAMMBHQ1NTkwE6QRMA8xDTALBgNVBAMMBHQ1NjAwE6QRMA8xDTALBgNVBAMMBHQ1
--NjEwE6QRMA8xDTALBgNVBAMMBHQ1NjIwE6QRMA8xDTALBgNVBAMMBHQ1NjMwE6QR
--MA8xDTALBgNVBAMMBHQ1NjQwE6QRMA8xDTALBgNVBAMMBHQ1NjUwE6QRMA8xDTAL
--BgNVBAMMBHQ1NjYwE6QRMA8xDTALBgNVBAMMBHQ1NjcwE6QRMA8xDTALBgNVBAMM
--BHQ1NjgwE6QRMA8xDTALBgNVBAMMBHQ1NjkwE6QRMA8xDTALBgNVBAMMBHQ1NzAw
--E6QRMA8xDTALBgNVBAMMBHQ1NzEwE6QRMA8xDTALBgNVBAMMBHQ1NzIwE6QRMA8x
--DTALBgNVBAMMBHQ1NzMwE6QRMA8xDTALBgNVBAMMBHQ1NzQwE6QRMA8xDTALBgNV
--BAMMBHQ1NzUwE6QRMA8xDTALBgNVBAMMBHQ1NzYwE6QRMA8xDTALBgNVBAMMBHQ1
--NzcwE6QRMA8xDTALBgNVBAMMBHQ1NzgwE6QRMA8xDTALBgNVBAMMBHQ1NzkwE6QR
--MA8xDTALBgNVBAMMBHQ1ODAwE6QRMA8xDTALBgNVBAMMBHQ1ODEwE6QRMA8xDTAL
--BgNVBAMMBHQ1ODIwE6QRMA8xDTALBgNVBAMMBHQ1ODMwE6QRMA8xDTALBgNVBAMM
--BHQ1ODQwE6QRMA8xDTALBgNVBAMMBHQ1ODUwE6QRMA8xDTALBgNVBAMMBHQ1ODYw
--E6QRMA8xDTALBgNVBAMMBHQ1ODcwE6QRMA8xDTALBgNVBAMMBHQ1ODgwE6QRMA8x
--DTALBgNVBAMMBHQ1ODkwE6QRMA8xDTALBgNVBAMMBHQ1OTAwE6QRMA8xDTALBgNV
--BAMMBHQ1OTEwE6QRMA8xDTALBgNVBAMMBHQ1OTIwE6QRMA8xDTALBgNVBAMMBHQ1
--OTMwE6QRMA8xDTALBgNVBAMMBHQ1OTQwE6QRMA8xDTALBgNVBAMMBHQ1OTUwE6QR
--MA8xDTALBgNVBAMMBHQ1OTYwE6QRMA8xDTALBgNVBAMMBHQ1OTcwE6QRMA8xDTAL
--BgNVBAMMBHQ1OTgwE6QRMA8xDTALBgNVBAMMBHQ1OTkwE6QRMA8xDTALBgNVBAMM
--BHQ2MDAwE6QRMA8xDTALBgNVBAMMBHQ2MDEwE6QRMA8xDTALBgNVBAMMBHQ2MDIw
--E6QRMA8xDTALBgNVBAMMBHQ2MDMwE6QRMA8xDTALBgNVBAMMBHQ2MDQwE6QRMA8x
--DTALBgNVBAMMBHQ2MDUwE6QRMA8xDTALBgNVBAMMBHQ2MDYwE6QRMA8xDTALBgNV
--BAMMBHQ2MDcwE6QRMA8xDTALBgNVBAMMBHQ2MDgwE6QRMA8xDTALBgNVBAMMBHQ2
--MDkwE6QRMA8xDTALBgNVBAMMBHQ2MTAwE6QRMA8xDTALBgNVBAMMBHQ2MTEwE6QR
--MA8xDTALBgNVBAMMBHQ2MTIwE6QRMA8xDTALBgNVBAMMBHQ2MTMwE6QRMA8xDTAL
--BgNVBAMMBHQ2MTQwE6QRMA8xDTALBgNVBAMMBHQ2MTUwE6QRMA8xDTALBgNVBAMM
--BHQ2MTYwE6QRMA8xDTALBgNVBAMMBHQ2MTcwE6QRMA8xDTALBgNVBAMMBHQ2MTgw
--E6QRMA8xDTALBgNVBAMMBHQ2MTkwE6QRMA8xDTALBgNVBAMMBHQ2MjAwE6QRMA8x
--DTALBgNVBAMMBHQ2MjEwE6QRMA8xDTALBgNVBAMMBHQ2MjIwE6QRMA8xDTALBgNV
--BAMMBHQ2MjMwE6QRMA8xDTALBgNVBAMMBHQ2MjQwE6QRMA8xDTALBgNVBAMMBHQ2
--MjUwE6QRMA8xDTALBgNVBAMMBHQ2MjYwE6QRMA8xDTALBgNVBAMMBHQ2MjcwE6QR
--MA8xDTALBgNVBAMMBHQ2MjgwE6QRMA8xDTALBgNVBAMMBHQ2MjkwE6QRMA8xDTAL
--BgNVBAMMBHQ2MzAwE6QRMA8xDTALBgNVBAMMBHQ2MzEwE6QRMA8xDTALBgNVBAMM
--BHQ2MzIwE6QRMA8xDTALBgNVBAMMBHQ2MzMwE6QRMA8xDTALBgNVBAMMBHQ2MzQw
--E6QRMA8xDTALBgNVBAMMBHQ2MzUwE6QRMA8xDTALBgNVBAMMBHQ2MzYwE6QRMA8x
--DTALBgNVBAMMBHQ2MzcwE6QRMA8xDTALBgNVBAMMBHQ2MzgwE6QRMA8xDTALBgNV
--BAMMBHQ2MzkwE6QRMA8xDTALBgNVBAMMBHQ2NDAwE6QRMA8xDTALBgNVBAMMBHQ2
--NDEwE6QRMA8xDTALBgNVBAMMBHQ2NDIwE6QRMA8xDTALBgNVBAMMBHQ2NDMwE6QR
--MA8xDTALBgNVBAMMBHQ2NDQwE6QRMA8xDTALBgNVBAMMBHQ2NDUwE6QRMA8xDTAL
--BgNVBAMMBHQ2NDYwE6QRMA8xDTALBgNVBAMMBHQ2NDcwE6QRMA8xDTALBgNVBAMM
--BHQ2NDgwE6QRMA8xDTALBgNVBAMMBHQ2NDkwE6QRMA8xDTALBgNVBAMMBHQ2NTAw
--E6QRMA8xDTALBgNVBAMMBHQ2NTEwE6QRMA8xDTALBgNVBAMMBHQ2NTIwE6QRMA8x
--DTALBgNVBAMMBHQ2NTMwE6QRMA8xDTALBgNVBAMMBHQ2NTQwE6QRMA8xDTALBgNV
--BAMMBHQ2NTUwE6QRMA8xDTALBgNVBAMMBHQ2NTYwE6QRMA8xDTALBgNVBAMMBHQ2
--NTcwE6QRMA8xDTALBgNVBAMMBHQ2NTgwE6QRMA8xDTALBgNVBAMMBHQ2NTkwE6QR
--MA8xDTALBgNVBAMMBHQ2NjAwE6QRMA8xDTALBgNVBAMMBHQ2NjEwE6QRMA8xDTAL
--BgNVBAMMBHQ2NjIwE6QRMA8xDTALBgNVBAMMBHQ2NjMwE6QRMA8xDTALBgNVBAMM
--BHQ2NjQwE6QRMA8xDTALBgNVBAMMBHQ2NjUwE6QRMA8xDTALBgNVBAMMBHQ2NjYw
--E6QRMA8xDTALBgNVBAMMBHQ2NjcwE6QRMA8xDTALBgNVBAMMBHQ2NjgwE6QRMA8x
--DTALBgNVBAMMBHQ2NjkwE6QRMA8xDTALBgNVBAMMBHQ2NzAwE6QRMA8xDTALBgNV
--BAMMBHQ2NzEwE6QRMA8xDTALBgNVBAMMBHQ2NzIwE6QRMA8xDTALBgNVBAMMBHQ2
--NzMwE6QRMA8xDTALBgNVBAMMBHQ2NzQwE6QRMA8xDTALBgNVBAMMBHQ2NzUwE6QR
--MA8xDTALBgNVBAMMBHQ2NzYwE6QRMA8xDTALBgNVBAMMBHQ2NzcwE6QRMA8xDTAL
--BgNVBAMMBHQ2NzgwE6QRMA8xDTALBgNVBAMMBHQ2NzkwE6QRMA8xDTALBgNVBAMM
--BHQ2ODAwE6QRMA8xDTALBgNVBAMMBHQ2ODEwE6QRMA8xDTALBgNVBAMMBHQ2ODIw
--E6QRMA8xDTALBgNVBAMMBHQ2ODMwE6QRMA8xDTALBgNVBAMMBHQ2ODQwE6QRMA8x
--DTALBgNVBAMMBHQ2ODUwE6QRMA8xDTALBgNVBAMMBHQ2ODYwE6QRMA8xDTALBgNV
--BAMMBHQ2ODcwE6QRMA8xDTALBgNVBAMMBHQ2ODgwE6QRMA8xDTALBgNVBAMMBHQ2
--ODkwE6QRMA8xDTALBgNVBAMMBHQ2OTAwE6QRMA8xDTALBgNVBAMMBHQ2OTEwE6QR
--MA8xDTALBgNVBAMMBHQ2OTIwE6QRMA8xDTALBgNVBAMMBHQ2OTMwE6QRMA8xDTAL
--BgNVBAMMBHQ2OTQwE6QRMA8xDTALBgNVBAMMBHQ2OTUwE6QRMA8xDTALBgNVBAMM
--BHQ2OTYwE6QRMA8xDTALBgNVBAMMBHQ2OTcwE6QRMA8xDTALBgNVBAMMBHQ2OTgw
--E6QRMA8xDTALBgNVBAMMBHQ2OTkwE6QRMA8xDTALBgNVBAMMBHQ3MDAwE6QRMA8x
--DTALBgNVBAMMBHQ3MDEwE6QRMA8xDTALBgNVBAMMBHQ3MDIwE6QRMA8xDTALBgNV
--BAMMBHQ3MDMwE6QRMA8xDTALBgNVBAMMBHQ3MDQwE6QRMA8xDTALBgNVBAMMBHQ3
--MDUwE6QRMA8xDTALBgNVBAMMBHQ3MDYwE6QRMA8xDTALBgNVBAMMBHQ3MDcwE6QR
--MA8xDTALBgNVBAMMBHQ3MDgwE6QRMA8xDTALBgNVBAMMBHQ3MDkwE6QRMA8xDTAL
--BgNVBAMMBHQ3MTAwE6QRMA8xDTALBgNVBAMMBHQ3MTEwE6QRMA8xDTALBgNVBAMM
--BHQ3MTIwE6QRMA8xDTALBgNVBAMMBHQ3MTMwE6QRMA8xDTALBgNVBAMMBHQ3MTQw
--E6QRMA8xDTALBgNVBAMMBHQ3MTUwE6QRMA8xDTALBgNVBAMMBHQ3MTYwE6QRMA8x
--DTALBgNVBAMMBHQ3MTcwE6QRMA8xDTALBgNVBAMMBHQ3MTgwE6QRMA8xDTALBgNV
--BAMMBHQ3MTkwE6QRMA8xDTALBgNVBAMMBHQ3MjAwE6QRMA8xDTALBgNVBAMMBHQ3
--MjEwE6QRMA8xDTALBgNVBAMMBHQ3MjIwE6QRMA8xDTALBgNVBAMMBHQ3MjMwE6QR
--MA8xDTALBgNVBAMMBHQ3MjQwE6QRMA8xDTALBgNVBAMMBHQ3MjUwE6QRMA8xDTAL
--BgNVBAMMBHQ3MjYwE6QRMA8xDTALBgNVBAMMBHQ3MjcwE6QRMA8xDTALBgNVBAMM
--BHQ3MjgwE6QRMA8xDTALBgNVBAMMBHQ3MjkwE6QRMA8xDTALBgNVBAMMBHQ3MzAw
--E6QRMA8xDTALBgNVBAMMBHQ3MzEwE6QRMA8xDTALBgNVBAMMBHQ3MzIwE6QRMA8x
--DTALBgNVBAMMBHQ3MzMwE6QRMA8xDTALBgNVBAMMBHQ3MzQwE6QRMA8xDTALBgNV
--BAMMBHQ3MzUwE6QRMA8xDTALBgNVBAMMBHQ3MzYwE6QRMA8xDTALBgNVBAMMBHQ3
--MzcwE6QRMA8xDTALBgNVBAMMBHQ3MzgwE6QRMA8xDTALBgNVBAMMBHQ3MzkwE6QR
--MA8xDTALBgNVBAMMBHQ3NDAwE6QRMA8xDTALBgNVBAMMBHQ3NDEwE6QRMA8xDTAL
--BgNVBAMMBHQ3NDIwE6QRMA8xDTALBgNVBAMMBHQ3NDMwE6QRMA8xDTALBgNVBAMM
--BHQ3NDQwE6QRMA8xDTALBgNVBAMMBHQ3NDUwE6QRMA8xDTALBgNVBAMMBHQ3NDYw
--E6QRMA8xDTALBgNVBAMMBHQ3NDcwE6QRMA8xDTALBgNVBAMMBHQ3NDgwE6QRMA8x
--DTALBgNVBAMMBHQ3NDkwE6QRMA8xDTALBgNVBAMMBHQ3NTAwE6QRMA8xDTALBgNV
--BAMMBHQ3NTEwE6QRMA8xDTALBgNVBAMMBHQ3NTIwE6QRMA8xDTALBgNVBAMMBHQ3
--NTMwE6QRMA8xDTALBgNVBAMMBHQ3NTQwE6QRMA8xDTALBgNVBAMMBHQ3NTUwE6QR
--MA8xDTALBgNVBAMMBHQ3NTYwE6QRMA8xDTALBgNVBAMMBHQ3NTcwE6QRMA8xDTAL
--BgNVBAMMBHQ3NTgwE6QRMA8xDTALBgNVBAMMBHQ3NTkwE6QRMA8xDTALBgNVBAMM
--BHQ3NjAwE6QRMA8xDTALBgNVBAMMBHQ3NjEwE6QRMA8xDTALBgNVBAMMBHQ3NjIw
--E6QRMA8xDTALBgNVBAMMBHQ3NjMwE6QRMA8xDTALBgNVBAMMBHQ3NjQwE6QRMA8x
--DTALBgNVBAMMBHQ3NjUwE6QRMA8xDTALBgNVBAMMBHQ3NjYwE6QRMA8xDTALBgNV
--BAMMBHQ3NjcwE6QRMA8xDTALBgNVBAMMBHQ3NjgwE6QRMA8xDTALBgNVBAMMBHQ3
--NjkwE6QRMA8xDTALBgNVBAMMBHQ3NzAwE6QRMA8xDTALBgNVBAMMBHQ3NzEwE6QR
--MA8xDTALBgNVBAMMBHQ3NzIwE6QRMA8xDTALBgNVBAMMBHQ3NzMwE6QRMA8xDTAL
--BgNVBAMMBHQ3NzQwE6QRMA8xDTALBgNVBAMMBHQ3NzUwE6QRMA8xDTALBgNVBAMM
--BHQ3NzYwE6QRMA8xDTALBgNVBAMMBHQ3NzcwE6QRMA8xDTALBgNVBAMMBHQ3Nzgw
--E6QRMA8xDTALBgNVBAMMBHQ3NzkwE6QRMA8xDTALBgNVBAMMBHQ3ODAwE6QRMA8x
--DTALBgNVBAMMBHQ3ODEwE6QRMA8xDTALBgNVBAMMBHQ3ODIwE6QRMA8xDTALBgNV
--BAMMBHQ3ODMwE6QRMA8xDTALBgNVBAMMBHQ3ODQwE6QRMA8xDTALBgNVBAMMBHQ3
--ODUwE6QRMA8xDTALBgNVBAMMBHQ3ODYwE6QRMA8xDTALBgNVBAMMBHQ3ODcwE6QR
--MA8xDTALBgNVBAMMBHQ3ODgwE6QRMA8xDTALBgNVBAMMBHQ3ODkwE6QRMA8xDTAL
--BgNVBAMMBHQ3OTAwE6QRMA8xDTALBgNVBAMMBHQ3OTEwE6QRMA8xDTALBgNVBAMM
--BHQ3OTIwE6QRMA8xDTALBgNVBAMMBHQ3OTMwE6QRMA8xDTALBgNVBAMMBHQ3OTQw
--E6QRMA8xDTALBgNVBAMMBHQ3OTUwE6QRMA8xDTALBgNVBAMMBHQ3OTYwE6QRMA8x
--DTALBgNVBAMMBHQ3OTcwE6QRMA8xDTALBgNVBAMMBHQ3OTgwE6QRMA8xDTALBgNV
--BAMMBHQ3OTkwE6QRMA8xDTALBgNVBAMMBHQ4MDAwE6QRMA8xDTALBgNVBAMMBHQ4
--MDEwE6QRMA8xDTALBgNVBAMMBHQ4MDIwE6QRMA8xDTALBgNVBAMMBHQ4MDMwE6QR
--MA8xDTALBgNVBAMMBHQ4MDQwE6QRMA8xDTALBgNVBAMMBHQ4MDUwE6QRMA8xDTAL
--BgNVBAMMBHQ4MDYwE6QRMA8xDTALBgNVBAMMBHQ4MDcwE6QRMA8xDTALBgNVBAMM
--BHQ4MDgwE6QRMA8xDTALBgNVBAMMBHQ4MDkwE6QRMA8xDTALBgNVBAMMBHQ4MTAw
--E6QRMA8xDTALBgNVBAMMBHQ4MTEwE6QRMA8xDTALBgNVBAMMBHQ4MTIwE6QRMA8x
--DTALBgNVBAMMBHQ4MTMwE6QRMA8xDTALBgNVBAMMBHQ4MTQwE6QRMA8xDTALBgNV
--BAMMBHQ4MTUwE6QRMA8xDTALBgNVBAMMBHQ4MTYwE6QRMA8xDTALBgNVBAMMBHQ4
--MTcwE6QRMA8xDTALBgNVBAMMBHQ4MTgwE6QRMA8xDTALBgNVBAMMBHQ4MTkwE6QR
--MA8xDTALBgNVBAMMBHQ4MjAwE6QRMA8xDTALBgNVBAMMBHQ4MjEwE6QRMA8xDTAL
--BgNVBAMMBHQ4MjIwE6QRMA8xDTALBgNVBAMMBHQ4MjMwE6QRMA8xDTALBgNVBAMM
--BHQ4MjQwE6QRMA8xDTALBgNVBAMMBHQ4MjUwE6QRMA8xDTALBgNVBAMMBHQ4MjYw
--E6QRMA8xDTALBgNVBAMMBHQ4MjcwE6QRMA8xDTALBgNVBAMMBHQ4MjgwE6QRMA8x
--DTALBgNVBAMMBHQ4MjkwE6QRMA8xDTALBgNVBAMMBHQ4MzAwE6QRMA8xDTALBgNV
--BAMMBHQ4MzEwE6QRMA8xDTALBgNVBAMMBHQ4MzIwE6QRMA8xDTALBgNVBAMMBHQ4
--MzMwE6QRMA8xDTALBgNVBAMMBHQ4MzQwE6QRMA8xDTALBgNVBAMMBHQ4MzUwE6QR
--MA8xDTALBgNVBAMMBHQ4MzYwE6QRMA8xDTALBgNVBAMMBHQ4MzcwE6QRMA8xDTAL
--BgNVBAMMBHQ4MzgwE6QRMA8xDTALBgNVBAMMBHQ4MzkwE6QRMA8xDTALBgNVBAMM
--BHQ4NDAwE6QRMA8xDTALBgNVBAMMBHQ4NDEwE6QRMA8xDTALBgNVBAMMBHQ4NDIw
--E6QRMA8xDTALBgNVBAMMBHQ4NDMwE6QRMA8xDTALBgNVBAMMBHQ4NDQwE6QRMA8x
--DTALBgNVBAMMBHQ4NDUwE6QRMA8xDTALBgNVBAMMBHQ4NDYwE6QRMA8xDTALBgNV
--BAMMBHQ4NDcwE6QRMA8xDTALBgNVBAMMBHQ4NDgwE6QRMA8xDTALBgNVBAMMBHQ4
--NDkwE6QRMA8xDTALBgNVBAMMBHQ4NTAwE6QRMA8xDTALBgNVBAMMBHQ4NTEwE6QR
--MA8xDTALBgNVBAMMBHQ4NTIwE6QRMA8xDTALBgNVBAMMBHQ4NTMwE6QRMA8xDTAL
--BgNVBAMMBHQ4NTQwE6QRMA8xDTALBgNVBAMMBHQ4NTUwE6QRMA8xDTALBgNVBAMM
--BHQ4NTYwE6QRMA8xDTALBgNVBAMMBHQ4NTcwE6QRMA8xDTALBgNVBAMMBHQ4NTgw
--E6QRMA8xDTALBgNVBAMMBHQ4NTkwE6QRMA8xDTALBgNVBAMMBHQ4NjAwE6QRMA8x
--DTALBgNVBAMMBHQ4NjEwE6QRMA8xDTALBgNVBAMMBHQ4NjIwE6QRMA8xDTALBgNV
--BAMMBHQ4NjMwE6QRMA8xDTALBgNVBAMMBHQ4NjQwE6QRMA8xDTALBgNVBAMMBHQ4
--NjUwE6QRMA8xDTALBgNVBAMMBHQ4NjYwE6QRMA8xDTALBgNVBAMMBHQ4NjcwE6QR
--MA8xDTALBgNVBAMMBHQ4NjgwE6QRMA8xDTALBgNVBAMMBHQ4NjkwE6QRMA8xDTAL
--BgNVBAMMBHQ4NzAwE6QRMA8xDTALBgNVBAMMBHQ4NzEwE6QRMA8xDTALBgNVBAMM
--BHQ4NzIwE6QRMA8xDTALBgNVBAMMBHQ4NzMwE6QRMA8xDTALBgNVBAMMBHQ4NzQw
--E6QRMA8xDTALBgNVBAMMBHQ4NzUwE6QRMA8xDTALBgNVBAMMBHQ4NzYwE6QRMA8x
--DTALBgNVBAMMBHQ4NzcwE6QRMA8xDTALBgNVBAMMBHQ4NzgwE6QRMA8xDTALBgNV
--BAMMBHQ4NzkwE6QRMA8xDTALBgNVBAMMBHQ4ODAwE6QRMA8xDTALBgNVBAMMBHQ4
--ODEwE6QRMA8xDTALBgNVBAMMBHQ4ODIwE6QRMA8xDTALBgNVBAMMBHQ4ODMwE6QR
--MA8xDTALBgNVBAMMBHQ4ODQwE6QRMA8xDTALBgNVBAMMBHQ4ODUwE6QRMA8xDTAL
--BgNVBAMMBHQ4ODYwE6QRMA8xDTALBgNVBAMMBHQ4ODcwE6QRMA8xDTALBgNVBAMM
--BHQ4ODgwE6QRMA8xDTALBgNVBAMMBHQ4ODkwE6QRMA8xDTALBgNVBAMMBHQ4OTAw
--E6QRMA8xDTALBgNVBAMMBHQ4OTEwE6QRMA8xDTALBgNVBAMMBHQ4OTIwE6QRMA8x
--DTALBgNVBAMMBHQ4OTMwE6QRMA8xDTALBgNVBAMMBHQ4OTQwE6QRMA8xDTALBgNV
--BAMMBHQ4OTUwE6QRMA8xDTALBgNVBAMMBHQ4OTYwE6QRMA8xDTALBgNVBAMMBHQ4
--OTcwE6QRMA8xDTALBgNVBAMMBHQ4OTgwE6QRMA8xDTALBgNVBAMMBHQ4OTkwE6QR
--MA8xDTALBgNVBAMMBHQ5MDAwE6QRMA8xDTALBgNVBAMMBHQ5MDEwE6QRMA8xDTAL
--BgNVBAMMBHQ5MDIwE6QRMA8xDTALBgNVBAMMBHQ5MDMwE6QRMA8xDTALBgNVBAMM
--BHQ5MDQwE6QRMA8xDTALBgNVBAMMBHQ5MDUwE6QRMA8xDTALBgNVBAMMBHQ5MDYw
--E6QRMA8xDTALBgNVBAMMBHQ5MDcwE6QRMA8xDTALBgNVBAMMBHQ5MDgwE6QRMA8x
--DTALBgNVBAMMBHQ5MDkwE6QRMA8xDTALBgNVBAMMBHQ5MTAwE6QRMA8xDTALBgNV
--BAMMBHQ5MTEwE6QRMA8xDTALBgNVBAMMBHQ5MTIwE6QRMA8xDTALBgNVBAMMBHQ5
--MTMwE6QRMA8xDTALBgNVBAMMBHQ5MTQwE6QRMA8xDTALBgNVBAMMBHQ5MTUwE6QR
--MA8xDTALBgNVBAMMBHQ5MTYwE6QRMA8xDTALBgNVBAMMBHQ5MTcwE6QRMA8xDTAL
--BgNVBAMMBHQ5MTgwE6QRMA8xDTALBgNVBAMMBHQ5MTkwE6QRMA8xDTALBgNVBAMM
--BHQ5MjAwE6QRMA8xDTALBgNVBAMMBHQ5MjEwE6QRMA8xDTALBgNVBAMMBHQ5MjIw
--E6QRMA8xDTALBgNVBAMMBHQ5MjMwE6QRMA8xDTALBgNVBAMMBHQ5MjQwE6QRMA8x
--DTALBgNVBAMMBHQ5MjUwE6QRMA8xDTALBgNVBAMMBHQ5MjYwE6QRMA8xDTALBgNV
--BAMMBHQ5MjcwE6QRMA8xDTALBgNVBAMMBHQ5MjgwE6QRMA8xDTALBgNVBAMMBHQ5
--MjkwE6QRMA8xDTALBgNVBAMMBHQ5MzAwE6QRMA8xDTALBgNVBAMMBHQ5MzEwE6QR
--MA8xDTALBgNVBAMMBHQ5MzIwE6QRMA8xDTALBgNVBAMMBHQ5MzMwE6QRMA8xDTAL
--BgNVBAMMBHQ5MzQwE6QRMA8xDTALBgNVBAMMBHQ5MzUwE6QRMA8xDTALBgNVBAMM
--BHQ5MzYwE6QRMA8xDTALBgNVBAMMBHQ5MzcwE6QRMA8xDTALBgNVBAMMBHQ5Mzgw
--E6QRMA8xDTALBgNVBAMMBHQ5MzkwE6QRMA8xDTALBgNVBAMMBHQ5NDAwE6QRMA8x
--DTALBgNVBAMMBHQ5NDEwE6QRMA8xDTALBgNVBAMMBHQ5NDIwE6QRMA8xDTALBgNV
--BAMMBHQ5NDMwE6QRMA8xDTALBgNVBAMMBHQ5NDQwE6QRMA8xDTALBgNVBAMMBHQ5
--NDUwE6QRMA8xDTALBgNVBAMMBHQ5NDYwE6QRMA8xDTALBgNVBAMMBHQ5NDcwE6QR
--MA8xDTALBgNVBAMMBHQ5NDgwE6QRMA8xDTALBgNVBAMMBHQ5NDkwE6QRMA8xDTAL
--BgNVBAMMBHQ5NTAwE6QRMA8xDTALBgNVBAMMBHQ5NTEwE6QRMA8xDTALBgNVBAMM
--BHQ5NTIwE6QRMA8xDTALBgNVBAMMBHQ5NTMwE6QRMA8xDTALBgNVBAMMBHQ5NTQw
--E6QRMA8xDTALBgNVBAMMBHQ5NTUwE6QRMA8xDTALBgNVBAMMBHQ5NTYwE6QRMA8x
--DTALBgNVBAMMBHQ5NTcwE6QRMA8xDTALBgNVBAMMBHQ5NTgwE6QRMA8xDTALBgNV
--BAMMBHQ5NTkwE6QRMA8xDTALBgNVBAMMBHQ5NjAwE6QRMA8xDTALBgNVBAMMBHQ5
--NjEwE6QRMA8xDTALBgNVBAMMBHQ5NjIwE6QRMA8xDTALBgNVBAMMBHQ5NjMwE6QR
--MA8xDTALBgNVBAMMBHQ5NjQwE6QRMA8xDTALBgNVBAMMBHQ5NjUwE6QRMA8xDTAL
--BgNVBAMMBHQ5NjYwE6QRMA8xDTALBgNVBAMMBHQ5NjcwE6QRMA8xDTALBgNVBAMM
--BHQ5NjgwE6QRMA8xDTALBgNVBAMMBHQ5NjkwE6QRMA8xDTALBgNVBAMMBHQ5NzAw
--E6QRMA8xDTALBgNVBAMMBHQ5NzEwE6QRMA8xDTALBgNVBAMMBHQ5NzIwE6QRMA8x
--DTALBgNVBAMMBHQ5NzMwE6QRMA8xDTALBgNVBAMMBHQ5NzQwE6QRMA8xDTALBgNV
--BAMMBHQ5NzUwE6QRMA8xDTALBgNVBAMMBHQ5NzYwE6QRMA8xDTALBgNVBAMMBHQ5
--NzcwE6QRMA8xDTALBgNVBAMMBHQ5NzgwE6QRMA8xDTALBgNVBAMMBHQ5NzkwE6QR
--MA8xDTALBgNVBAMMBHQ5ODAwE6QRMA8xDTALBgNVBAMMBHQ5ODEwE6QRMA8xDTAL
--BgNVBAMMBHQ5ODIwE6QRMA8xDTALBgNVBAMMBHQ5ODMwE6QRMA8xDTALBgNVBAMM
--BHQ5ODQwE6QRMA8xDTALBgNVBAMMBHQ5ODUwE6QRMA8xDTALBgNVBAMMBHQ5ODYw
--E6QRMA8xDTALBgNVBAMMBHQ5ODcwE6QRMA8xDTALBgNVBAMMBHQ5ODgwE6QRMA8x
--DTALBgNVBAMMBHQ5ODkwE6QRMA8xDTALBgNVBAMMBHQ5OTAwE6QRMA8xDTALBgNV
--BAMMBHQ5OTEwE6QRMA8xDTALBgNVBAMMBHQ5OTIwE6QRMA8xDTALBgNVBAMMBHQ5
--OTMwE6QRMA8xDTALBgNVBAMMBHQ5OTQwE6QRMA8xDTALBgNVBAMMBHQ5OTUwE6QR
--MA8xDTALBgNVBAMMBHQ5OTYwE6QRMA8xDTALBgNVBAMMBHQ5OTcwE6QRMA8xDTAL
--BgNVBAMMBHQ5OTgwE6QRMA8xDTALBgNVBAMMBHQ5OTkwFKQSMBAxDjAMBgNVBAMM
--BXQxMDAwMBSkEjAQMQ4wDAYDVQQDDAV0MTAwMTAUpBIwEDEOMAwGA1UEAwwFdDEw
--MDIwFKQSMBAxDjAMBgNVBAMMBXQxMDAzMBSkEjAQMQ4wDAYDVQQDDAV0MTAwNDAU
--pBIwEDEOMAwGA1UEAwwFdDEwMDUwFKQSMBAxDjAMBgNVBAMMBXQxMDA2MBSkEjAQ
--MQ4wDAYDVQQDDAV0MTAwNzAUpBIwEDEOMAwGA1UEAwwFdDEwMDgwFKQSMBAxDjAM
--BgNVBAMMBXQxMDA5MBSkEjAQMQ4wDAYDVQQDDAV0MTAxMDAUpBIwEDEOMAwGA1UE
--AwwFdDEwMTEwFKQSMBAxDjAMBgNVBAMMBXQxMDEyMBSkEjAQMQ4wDAYDVQQDDAV0
--MTAxMzAUpBIwEDEOMAwGA1UEAwwFdDEwMTQwFKQSMBAxDjAMBgNVBAMMBXQxMDE1
--MBSkEjAQMQ4wDAYDVQQDDAV0MTAxNjAUpBIwEDEOMAwGA1UEAwwFdDEwMTcwFKQS
--MBAxDjAMBgNVBAMMBXQxMDE4MBSkEjAQMQ4wDAYDVQQDDAV0MTAxOTAUpBIwEDEO
--MAwGA1UEAwwFdDEwMjAwFKQSMBAxDjAMBgNVBAMMBXQxMDIxMBSkEjAQMQ4wDAYD
--VQQDDAV0MTAyMjAUpBIwEDEOMAwGA1UEAwwFdDEwMjMwFKQSMBAxDjAMBgNVBAMM
--BXQxMDI0MA+GDWh0dHA6Ly90ZXN0LzAwD4YNaHR0cDovL3Rlc3QvMTAPhg1odHRw
--Oi8vdGVzdC8yMA+GDWh0dHA6Ly90ZXN0LzMwD4YNaHR0cDovL3Rlc3QvNDAPhg1o
--dHRwOi8vdGVzdC81MA+GDWh0dHA6Ly90ZXN0LzYwD4YNaHR0cDovL3Rlc3QvNzAP
--hg1odHRwOi8vdGVzdC84MA+GDWh0dHA6Ly90ZXN0LzkwEIYOaHR0cDovL3Rlc3Qv
--MTAwEIYOaHR0cDovL3Rlc3QvMTEwEIYOaHR0cDovL3Rlc3QvMTIwEIYOaHR0cDov
--L3Rlc3QvMTMwEIYOaHR0cDovL3Rlc3QvMTQwEIYOaHR0cDovL3Rlc3QvMTUwEIYO
--aHR0cDovL3Rlc3QvMTYwEIYOaHR0cDovL3Rlc3QvMTcwEIYOaHR0cDovL3Rlc3Qv
--MTgwEIYOaHR0cDovL3Rlc3QvMTkwEIYOaHR0cDovL3Rlc3QvMjAwEIYOaHR0cDov
--L3Rlc3QvMjEwEIYOaHR0cDovL3Rlc3QvMjIwEIYOaHR0cDovL3Rlc3QvMjMwEIYO
--aHR0cDovL3Rlc3QvMjQwEIYOaHR0cDovL3Rlc3QvMjUwEIYOaHR0cDovL3Rlc3Qv
--MjYwEIYOaHR0cDovL3Rlc3QvMjcwEIYOaHR0cDovL3Rlc3QvMjgwEIYOaHR0cDov
--L3Rlc3QvMjkwEIYOaHR0cDovL3Rlc3QvMzAwEIYOaHR0cDovL3Rlc3QvMzEwEIYO
--aHR0cDovL3Rlc3QvMzIwEIYOaHR0cDovL3Rlc3QvMzMwEIYOaHR0cDovL3Rlc3Qv
--MzQwEIYOaHR0cDovL3Rlc3QvMzUwEIYOaHR0cDovL3Rlc3QvMzYwEIYOaHR0cDov
--L3Rlc3QvMzcwEIYOaHR0cDovL3Rlc3QvMzgwEIYOaHR0cDovL3Rlc3QvMzkwEIYO
--aHR0cDovL3Rlc3QvNDAwEIYOaHR0cDovL3Rlc3QvNDEwEIYOaHR0cDovL3Rlc3Qv
--NDIwEIYOaHR0cDovL3Rlc3QvNDMwEIYOaHR0cDovL3Rlc3QvNDQwEIYOaHR0cDov
--L3Rlc3QvNDUwEIYOaHR0cDovL3Rlc3QvNDYwEIYOaHR0cDovL3Rlc3QvNDcwEIYO
--aHR0cDovL3Rlc3QvNDgwEIYOaHR0cDovL3Rlc3QvNDkwEIYOaHR0cDovL3Rlc3Qv
--NTAwEIYOaHR0cDovL3Rlc3QvNTEwEIYOaHR0cDovL3Rlc3QvNTIwEIYOaHR0cDov
--L3Rlc3QvNTMwEIYOaHR0cDovL3Rlc3QvNTQwEIYOaHR0cDovL3Rlc3QvNTUwEIYO
--aHR0cDovL3Rlc3QvNTYwEIYOaHR0cDovL3Rlc3QvNTcwEIYOaHR0cDovL3Rlc3Qv
--NTgwEIYOaHR0cDovL3Rlc3QvNTkwEIYOaHR0cDovL3Rlc3QvNjAwEIYOaHR0cDov
--L3Rlc3QvNjEwEIYOaHR0cDovL3Rlc3QvNjIwEIYOaHR0cDovL3Rlc3QvNjMwEIYO
--aHR0cDovL3Rlc3QvNjQwEIYOaHR0cDovL3Rlc3QvNjUwEIYOaHR0cDovL3Rlc3Qv
--NjYwEIYOaHR0cDovL3Rlc3QvNjcwEIYOaHR0cDovL3Rlc3QvNjgwEIYOaHR0cDov
--L3Rlc3QvNjkwEIYOaHR0cDovL3Rlc3QvNzAwEIYOaHR0cDovL3Rlc3QvNzEwEIYO
--aHR0cDovL3Rlc3QvNzIwEIYOaHR0cDovL3Rlc3QvNzMwEIYOaHR0cDovL3Rlc3Qv
--NzQwEIYOaHR0cDovL3Rlc3QvNzUwEIYOaHR0cDovL3Rlc3QvNzYwEIYOaHR0cDov
--L3Rlc3QvNzcwEIYOaHR0cDovL3Rlc3QvNzgwEIYOaHR0cDovL3Rlc3QvNzkwEIYO
--aHR0cDovL3Rlc3QvODAwEIYOaHR0cDovL3Rlc3QvODEwEIYOaHR0cDovL3Rlc3Qv
--ODIwEIYOaHR0cDovL3Rlc3QvODMwEIYOaHR0cDovL3Rlc3QvODQwEIYOaHR0cDov
--L3Rlc3QvODUwEIYOaHR0cDovL3Rlc3QvODYwEIYOaHR0cDovL3Rlc3QvODcwEIYO
--aHR0cDovL3Rlc3QvODgwEIYOaHR0cDovL3Rlc3QvODkwEIYOaHR0cDovL3Rlc3Qv
--OTAwEIYOaHR0cDovL3Rlc3QvOTEwEIYOaHR0cDovL3Rlc3QvOTIwEIYOaHR0cDov
--L3Rlc3QvOTMwEIYOaHR0cDovL3Rlc3QvOTQwEIYOaHR0cDovL3Rlc3QvOTUwEIYO
--aHR0cDovL3Rlc3QvOTYwEIYOaHR0cDovL3Rlc3QvOTcwEIYOaHR0cDovL3Rlc3Qv
--OTgwEIYOaHR0cDovL3Rlc3QvOTkwEYYPaHR0cDovL3Rlc3QvMTAwMBGGD2h0dHA6
--Ly90ZXN0LzEwMTARhg9odHRwOi8vdGVzdC8xMDIwEYYPaHR0cDovL3Rlc3QvMTAz
--MBGGD2h0dHA6Ly90ZXN0LzEwNDARhg9odHRwOi8vdGVzdC8xMDUwEYYPaHR0cDov
--L3Rlc3QvMTA2MBGGD2h0dHA6Ly90ZXN0LzEwNzARhg9odHRwOi8vdGVzdC8xMDgw
--EYYPaHR0cDovL3Rlc3QvMTA5MBGGD2h0dHA6Ly90ZXN0LzExMDARhg9odHRwOi8v
--dGVzdC8xMTEwEYYPaHR0cDovL3Rlc3QvMTEyMBGGD2h0dHA6Ly90ZXN0LzExMzAR
--hg9odHRwOi8vdGVzdC8xMTQwEYYPaHR0cDovL3Rlc3QvMTE1MBGGD2h0dHA6Ly90
--ZXN0LzExNjARhg9odHRwOi8vdGVzdC8xMTcwEYYPaHR0cDovL3Rlc3QvMTE4MBGG
--D2h0dHA6Ly90ZXN0LzExOTARhg9odHRwOi8vdGVzdC8xMjAwEYYPaHR0cDovL3Rl
--c3QvMTIxMBGGD2h0dHA6Ly90ZXN0LzEyMjARhg9odHRwOi8vdGVzdC8xMjMwEYYP
--aHR0cDovL3Rlc3QvMTI0MBGGD2h0dHA6Ly90ZXN0LzEyNTARhg9odHRwOi8vdGVz
--dC8xMjYwEYYPaHR0cDovL3Rlc3QvMTI3MBGGD2h0dHA6Ly90ZXN0LzEyODARhg9o
--dHRwOi8vdGVzdC8xMjkwEYYPaHR0cDovL3Rlc3QvMTMwMBGGD2h0dHA6Ly90ZXN0
--LzEzMTARhg9odHRwOi8vdGVzdC8xMzIwEYYPaHR0cDovL3Rlc3QvMTMzMBGGD2h0
--dHA6Ly90ZXN0LzEzNDARhg9odHRwOi8vdGVzdC8xMzUwEYYPaHR0cDovL3Rlc3Qv
--MTM2MBGGD2h0dHA6Ly90ZXN0LzEzNzARhg9odHRwOi8vdGVzdC8xMzgwEYYPaHR0
--cDovL3Rlc3QvMTM5MBGGD2h0dHA6Ly90ZXN0LzE0MDARhg9odHRwOi8vdGVzdC8x
--NDEwEYYPaHR0cDovL3Rlc3QvMTQyMBGGD2h0dHA6Ly90ZXN0LzE0MzARhg9odHRw
--Oi8vdGVzdC8xNDQwEYYPaHR0cDovL3Rlc3QvMTQ1MBGGD2h0dHA6Ly90ZXN0LzE0
--NjARhg9odHRwOi8vdGVzdC8xNDcwEYYPaHR0cDovL3Rlc3QvMTQ4MBGGD2h0dHA6
--Ly90ZXN0LzE0OTARhg9odHRwOi8vdGVzdC8xNTAwEYYPaHR0cDovL3Rlc3QvMTUx
--MBGGD2h0dHA6Ly90ZXN0LzE1MjARhg9odHRwOi8vdGVzdC8xNTMwEYYPaHR0cDov
--L3Rlc3QvMTU0MBGGD2h0dHA6Ly90ZXN0LzE1NTARhg9odHRwOi8vdGVzdC8xNTYw
--EYYPaHR0cDovL3Rlc3QvMTU3MBGGD2h0dHA6Ly90ZXN0LzE1ODARhg9odHRwOi8v
--dGVzdC8xNTkwEYYPaHR0cDovL3Rlc3QvMTYwMBGGD2h0dHA6Ly90ZXN0LzE2MTAR
--hg9odHRwOi8vdGVzdC8xNjIwEYYPaHR0cDovL3Rlc3QvMTYzMBGGD2h0dHA6Ly90
--ZXN0LzE2NDARhg9odHRwOi8vdGVzdC8xNjUwEYYPaHR0cDovL3Rlc3QvMTY2MBGG
--D2h0dHA6Ly90ZXN0LzE2NzARhg9odHRwOi8vdGVzdC8xNjgwEYYPaHR0cDovL3Rl
--c3QvMTY5MBGGD2h0dHA6Ly90ZXN0LzE3MDARhg9odHRwOi8vdGVzdC8xNzEwEYYP
--aHR0cDovL3Rlc3QvMTcyMBGGD2h0dHA6Ly90ZXN0LzE3MzARhg9odHRwOi8vdGVz
--dC8xNzQwEYYPaHR0cDovL3Rlc3QvMTc1MBGGD2h0dHA6Ly90ZXN0LzE3NjARhg9o
--dHRwOi8vdGVzdC8xNzcwEYYPaHR0cDovL3Rlc3QvMTc4MBGGD2h0dHA6Ly90ZXN0
--LzE3OTARhg9odHRwOi8vdGVzdC8xODAwEYYPaHR0cDovL3Rlc3QvMTgxMBGGD2h0
--dHA6Ly90ZXN0LzE4MjARhg9odHRwOi8vdGVzdC8xODMwEYYPaHR0cDovL3Rlc3Qv
--MTg0MBGGD2h0dHA6Ly90ZXN0LzE4NTARhg9odHRwOi8vdGVzdC8xODYwEYYPaHR0
--cDovL3Rlc3QvMTg3MBGGD2h0dHA6Ly90ZXN0LzE4ODARhg9odHRwOi8vdGVzdC8x
--ODkwEYYPaHR0cDovL3Rlc3QvMTkwMBGGD2h0dHA6Ly90ZXN0LzE5MTARhg9odHRw
--Oi8vdGVzdC8xOTIwEYYPaHR0cDovL3Rlc3QvMTkzMBGGD2h0dHA6Ly90ZXN0LzE5
--NDARhg9odHRwOi8vdGVzdC8xOTUwEYYPaHR0cDovL3Rlc3QvMTk2MBGGD2h0dHA6
--Ly90ZXN0LzE5NzARhg9odHRwOi8vdGVzdC8xOTgwEYYPaHR0cDovL3Rlc3QvMTk5
--MBGGD2h0dHA6Ly90ZXN0LzIwMDARhg9odHRwOi8vdGVzdC8yMDEwEYYPaHR0cDov
--L3Rlc3QvMjAyMBGGD2h0dHA6Ly90ZXN0LzIwMzARhg9odHRwOi8vdGVzdC8yMDQw
--EYYPaHR0cDovL3Rlc3QvMjA1MBGGD2h0dHA6Ly90ZXN0LzIwNjARhg9odHRwOi8v
--dGVzdC8yMDcwEYYPaHR0cDovL3Rlc3QvMjA4MBGGD2h0dHA6Ly90ZXN0LzIwOTAR
--hg9odHRwOi8vdGVzdC8yMTAwEYYPaHR0cDovL3Rlc3QvMjExMBGGD2h0dHA6Ly90
--ZXN0LzIxMjARhg9odHRwOi8vdGVzdC8yMTMwEYYPaHR0cDovL3Rlc3QvMjE0MBGG
--D2h0dHA6Ly90ZXN0LzIxNTARhg9odHRwOi8vdGVzdC8yMTYwEYYPaHR0cDovL3Rl
--c3QvMjE3MBGGD2h0dHA6Ly90ZXN0LzIxODARhg9odHRwOi8vdGVzdC8yMTkwEYYP
--aHR0cDovL3Rlc3QvMjIwMBGGD2h0dHA6Ly90ZXN0LzIyMTARhg9odHRwOi8vdGVz
--dC8yMjIwEYYPaHR0cDovL3Rlc3QvMjIzMBGGD2h0dHA6Ly90ZXN0LzIyNDARhg9o
--dHRwOi8vdGVzdC8yMjUwEYYPaHR0cDovL3Rlc3QvMjI2MBGGD2h0dHA6Ly90ZXN0
--LzIyNzARhg9odHRwOi8vdGVzdC8yMjgwEYYPaHR0cDovL3Rlc3QvMjI5MBGGD2h0
--dHA6Ly90ZXN0LzIzMDARhg9odHRwOi8vdGVzdC8yMzEwEYYPaHR0cDovL3Rlc3Qv
--MjMyMBGGD2h0dHA6Ly90ZXN0LzIzMzARhg9odHRwOi8vdGVzdC8yMzQwEYYPaHR0
--cDovL3Rlc3QvMjM1MBGGD2h0dHA6Ly90ZXN0LzIzNjARhg9odHRwOi8vdGVzdC8y
--MzcwEYYPaHR0cDovL3Rlc3QvMjM4MBGGD2h0dHA6Ly90ZXN0LzIzOTARhg9odHRw
--Oi8vdGVzdC8yNDAwEYYPaHR0cDovL3Rlc3QvMjQxMBGGD2h0dHA6Ly90ZXN0LzI0
--MjARhg9odHRwOi8vdGVzdC8yNDMwEYYPaHR0cDovL3Rlc3QvMjQ0MBGGD2h0dHA6
--Ly90ZXN0LzI0NTARhg9odHRwOi8vdGVzdC8yNDYwEYYPaHR0cDovL3Rlc3QvMjQ3
--MBGGD2h0dHA6Ly90ZXN0LzI0ODARhg9odHRwOi8vdGVzdC8yNDkwEYYPaHR0cDov
--L3Rlc3QvMjUwMBGGD2h0dHA6Ly90ZXN0LzI1MTARhg9odHRwOi8vdGVzdC8yNTIw
--EYYPaHR0cDovL3Rlc3QvMjUzMBGGD2h0dHA6Ly90ZXN0LzI1NDARhg9odHRwOi8v
--dGVzdC8yNTUwEYYPaHR0cDovL3Rlc3QvMjU2MBGGD2h0dHA6Ly90ZXN0LzI1NzAR
--hg9odHRwOi8vdGVzdC8yNTgwEYYPaHR0cDovL3Rlc3QvMjU5MBGGD2h0dHA6Ly90
--ZXN0LzI2MDARhg9odHRwOi8vdGVzdC8yNjEwEYYPaHR0cDovL3Rlc3QvMjYyMBGG
--D2h0dHA6Ly90ZXN0LzI2MzARhg9odHRwOi8vdGVzdC8yNjQwEYYPaHR0cDovL3Rl
--c3QvMjY1MBGGD2h0dHA6Ly90ZXN0LzI2NjARhg9odHRwOi8vdGVzdC8yNjcwEYYP
--aHR0cDovL3Rlc3QvMjY4MBGGD2h0dHA6Ly90ZXN0LzI2OTARhg9odHRwOi8vdGVz
--dC8yNzAwEYYPaHR0cDovL3Rlc3QvMjcxMBGGD2h0dHA6Ly90ZXN0LzI3MjARhg9o
--dHRwOi8vdGVzdC8yNzMwEYYPaHR0cDovL3Rlc3QvMjc0MBGGD2h0dHA6Ly90ZXN0
--LzI3NTARhg9odHRwOi8vdGVzdC8yNzYwEYYPaHR0cDovL3Rlc3QvMjc3MBGGD2h0
--dHA6Ly90ZXN0LzI3ODARhg9odHRwOi8vdGVzdC8yNzkwEYYPaHR0cDovL3Rlc3Qv
--MjgwMBGGD2h0dHA6Ly90ZXN0LzI4MTARhg9odHRwOi8vdGVzdC8yODIwEYYPaHR0
--cDovL3Rlc3QvMjgzMBGGD2h0dHA6Ly90ZXN0LzI4NDARhg9odHRwOi8vdGVzdC8y
--ODUwEYYPaHR0cDovL3Rlc3QvMjg2MBGGD2h0dHA6Ly90ZXN0LzI4NzARhg9odHRw
--Oi8vdGVzdC8yODgwEYYPaHR0cDovL3Rlc3QvMjg5MBGGD2h0dHA6Ly90ZXN0LzI5
--MDARhg9odHRwOi8vdGVzdC8yOTEwEYYPaHR0cDovL3Rlc3QvMjkyMBGGD2h0dHA6
--Ly90ZXN0LzI5MzARhg9odHRwOi8vdGVzdC8yOTQwEYYPaHR0cDovL3Rlc3QvMjk1
--MBGGD2h0dHA6Ly90ZXN0LzI5NjARhg9odHRwOi8vdGVzdC8yOTcwEYYPaHR0cDov
--L3Rlc3QvMjk4MBGGD2h0dHA6Ly90ZXN0LzI5OTARhg9odHRwOi8vdGVzdC8zMDAw
--EYYPaHR0cDovL3Rlc3QvMzAxMBGGD2h0dHA6Ly90ZXN0LzMwMjARhg9odHRwOi8v
--dGVzdC8zMDMwEYYPaHR0cDovL3Rlc3QvMzA0MBGGD2h0dHA6Ly90ZXN0LzMwNTAR
--hg9odHRwOi8vdGVzdC8zMDYwEYYPaHR0cDovL3Rlc3QvMzA3MBGGD2h0dHA6Ly90
--ZXN0LzMwODARhg9odHRwOi8vdGVzdC8zMDkwEYYPaHR0cDovL3Rlc3QvMzEwMBGG
--D2h0dHA6Ly90ZXN0LzMxMTARhg9odHRwOi8vdGVzdC8zMTIwEYYPaHR0cDovL3Rl
--c3QvMzEzMBGGD2h0dHA6Ly90ZXN0LzMxNDARhg9odHRwOi8vdGVzdC8zMTUwEYYP
--aHR0cDovL3Rlc3QvMzE2MBGGD2h0dHA6Ly90ZXN0LzMxNzARhg9odHRwOi8vdGVz
--dC8zMTgwEYYPaHR0cDovL3Rlc3QvMzE5MBGGD2h0dHA6Ly90ZXN0LzMyMDARhg9o
--dHRwOi8vdGVzdC8zMjEwEYYPaHR0cDovL3Rlc3QvMzIyMBGGD2h0dHA6Ly90ZXN0
--LzMyMzARhg9odHRwOi8vdGVzdC8zMjQwEYYPaHR0cDovL3Rlc3QvMzI1MBGGD2h0
--dHA6Ly90ZXN0LzMyNjARhg9odHRwOi8vdGVzdC8zMjcwEYYPaHR0cDovL3Rlc3Qv
--MzI4MBGGD2h0dHA6Ly90ZXN0LzMyOTARhg9odHRwOi8vdGVzdC8zMzAwEYYPaHR0
--cDovL3Rlc3QvMzMxMBGGD2h0dHA6Ly90ZXN0LzMzMjARhg9odHRwOi8vdGVzdC8z
--MzMwEYYPaHR0cDovL3Rlc3QvMzM0MBGGD2h0dHA6Ly90ZXN0LzMzNTARhg9odHRw
--Oi8vdGVzdC8zMzYwEYYPaHR0cDovL3Rlc3QvMzM3MBGGD2h0dHA6Ly90ZXN0LzMz
--ODARhg9odHRwOi8vdGVzdC8zMzkwEYYPaHR0cDovL3Rlc3QvMzQwMBGGD2h0dHA6
--Ly90ZXN0LzM0MTARhg9odHRwOi8vdGVzdC8zNDIwEYYPaHR0cDovL3Rlc3QvMzQz
--MBGGD2h0dHA6Ly90ZXN0LzM0NDARhg9odHRwOi8vdGVzdC8zNDUwEYYPaHR0cDov
--L3Rlc3QvMzQ2MBGGD2h0dHA6Ly90ZXN0LzM0NzARhg9odHRwOi8vdGVzdC8zNDgw
--EYYPaHR0cDovL3Rlc3QvMzQ5MBGGD2h0dHA6Ly90ZXN0LzM1MDARhg9odHRwOi8v
--dGVzdC8zNTEwEYYPaHR0cDovL3Rlc3QvMzUyMBGGD2h0dHA6Ly90ZXN0LzM1MzAR
--hg9odHRwOi8vdGVzdC8zNTQwEYYPaHR0cDovL3Rlc3QvMzU1MBGGD2h0dHA6Ly90
--ZXN0LzM1NjARhg9odHRwOi8vdGVzdC8zNTcwEYYPaHR0cDovL3Rlc3QvMzU4MBGG
--D2h0dHA6Ly90ZXN0LzM1OTARhg9odHRwOi8vdGVzdC8zNjAwEYYPaHR0cDovL3Rl
--c3QvMzYxMBGGD2h0dHA6Ly90ZXN0LzM2MjARhg9odHRwOi8vdGVzdC8zNjMwEYYP
--aHR0cDovL3Rlc3QvMzY0MBGGD2h0dHA6Ly90ZXN0LzM2NTARhg9odHRwOi8vdGVz
--dC8zNjYwEYYPaHR0cDovL3Rlc3QvMzY3MBGGD2h0dHA6Ly90ZXN0LzM2ODARhg9o
--dHRwOi8vdGVzdC8zNjkwEYYPaHR0cDovL3Rlc3QvMzcwMBGGD2h0dHA6Ly90ZXN0
--LzM3MTARhg9odHRwOi8vdGVzdC8zNzIwEYYPaHR0cDovL3Rlc3QvMzczMBGGD2h0
--dHA6Ly90ZXN0LzM3NDARhg9odHRwOi8vdGVzdC8zNzUwEYYPaHR0cDovL3Rlc3Qv
--Mzc2MBGGD2h0dHA6Ly90ZXN0LzM3NzARhg9odHRwOi8vdGVzdC8zNzgwEYYPaHR0
--cDovL3Rlc3QvMzc5MBGGD2h0dHA6Ly90ZXN0LzM4MDARhg9odHRwOi8vdGVzdC8z
--ODEwEYYPaHR0cDovL3Rlc3QvMzgyMBGGD2h0dHA6Ly90ZXN0LzM4MzARhg9odHRw
--Oi8vdGVzdC8zODQwEYYPaHR0cDovL3Rlc3QvMzg1MBGGD2h0dHA6Ly90ZXN0LzM4
--NjARhg9odHRwOi8vdGVzdC8zODcwEYYPaHR0cDovL3Rlc3QvMzg4MBGGD2h0dHA6
--Ly90ZXN0LzM4OTARhg9odHRwOi8vdGVzdC8zOTAwEYYPaHR0cDovL3Rlc3QvMzkx
--MBGGD2h0dHA6Ly90ZXN0LzM5MjARhg9odHRwOi8vdGVzdC8zOTMwEYYPaHR0cDov
--L3Rlc3QvMzk0MBGGD2h0dHA6Ly90ZXN0LzM5NTARhg9odHRwOi8vdGVzdC8zOTYw
--EYYPaHR0cDovL3Rlc3QvMzk3MBGGD2h0dHA6Ly90ZXN0LzM5ODARhg9odHRwOi8v
--dGVzdC8zOTkwEYYPaHR0cDovL3Rlc3QvNDAwMBGGD2h0dHA6Ly90ZXN0LzQwMTAR
--hg9odHRwOi8vdGVzdC80MDIwEYYPaHR0cDovL3Rlc3QvNDAzMBGGD2h0dHA6Ly90
--ZXN0LzQwNDARhg9odHRwOi8vdGVzdC80MDUwEYYPaHR0cDovL3Rlc3QvNDA2MBGG
--D2h0dHA6Ly90ZXN0LzQwNzARhg9odHRwOi8vdGVzdC80MDgwEYYPaHR0cDovL3Rl
--c3QvNDA5MBGGD2h0dHA6Ly90ZXN0LzQxMDARhg9odHRwOi8vdGVzdC80MTEwEYYP
--aHR0cDovL3Rlc3QvNDEyMBGGD2h0dHA6Ly90ZXN0LzQxMzARhg9odHRwOi8vdGVz
--dC80MTQwEYYPaHR0cDovL3Rlc3QvNDE1MBGGD2h0dHA6Ly90ZXN0LzQxNjARhg9o
--dHRwOi8vdGVzdC80MTcwEYYPaHR0cDovL3Rlc3QvNDE4MBGGD2h0dHA6Ly90ZXN0
--LzQxOTARhg9odHRwOi8vdGVzdC80MjAwEYYPaHR0cDovL3Rlc3QvNDIxMBGGD2h0
--dHA6Ly90ZXN0LzQyMjARhg9odHRwOi8vdGVzdC80MjMwEYYPaHR0cDovL3Rlc3Qv
--NDI0MBGGD2h0dHA6Ly90ZXN0LzQyNTARhg9odHRwOi8vdGVzdC80MjYwEYYPaHR0
--cDovL3Rlc3QvNDI3MBGGD2h0dHA6Ly90ZXN0LzQyODARhg9odHRwOi8vdGVzdC80
--MjkwEYYPaHR0cDovL3Rlc3QvNDMwMBGGD2h0dHA6Ly90ZXN0LzQzMTARhg9odHRw
--Oi8vdGVzdC80MzIwEYYPaHR0cDovL3Rlc3QvNDMzMBGGD2h0dHA6Ly90ZXN0LzQz
--NDARhg9odHRwOi8vdGVzdC80MzUwEYYPaHR0cDovL3Rlc3QvNDM2MBGGD2h0dHA6
--Ly90ZXN0LzQzNzARhg9odHRwOi8vdGVzdC80MzgwEYYPaHR0cDovL3Rlc3QvNDM5
--MBGGD2h0dHA6Ly90ZXN0LzQ0MDARhg9odHRwOi8vdGVzdC80NDEwEYYPaHR0cDov
--L3Rlc3QvNDQyMBGGD2h0dHA6Ly90ZXN0LzQ0MzARhg9odHRwOi8vdGVzdC80NDQw
--EYYPaHR0cDovL3Rlc3QvNDQ1MBGGD2h0dHA6Ly90ZXN0LzQ0NjARhg9odHRwOi8v
--dGVzdC80NDcwEYYPaHR0cDovL3Rlc3QvNDQ4MBGGD2h0dHA6Ly90ZXN0LzQ0OTAR
--hg9odHRwOi8vdGVzdC80NTAwEYYPaHR0cDovL3Rlc3QvNDUxMBGGD2h0dHA6Ly90
--ZXN0LzQ1MjARhg9odHRwOi8vdGVzdC80NTMwEYYPaHR0cDovL3Rlc3QvNDU0MBGG
--D2h0dHA6Ly90ZXN0LzQ1NTARhg9odHRwOi8vdGVzdC80NTYwEYYPaHR0cDovL3Rl
--c3QvNDU3MBGGD2h0dHA6Ly90ZXN0LzQ1ODARhg9odHRwOi8vdGVzdC80NTkwEYYP
--aHR0cDovL3Rlc3QvNDYwMBGGD2h0dHA6Ly90ZXN0LzQ2MTARhg9odHRwOi8vdGVz
--dC80NjIwEYYPaHR0cDovL3Rlc3QvNDYzMBGGD2h0dHA6Ly90ZXN0LzQ2NDARhg9o
--dHRwOi8vdGVzdC80NjUwEYYPaHR0cDovL3Rlc3QvNDY2MBGGD2h0dHA6Ly90ZXN0
--LzQ2NzARhg9odHRwOi8vdGVzdC80NjgwEYYPaHR0cDovL3Rlc3QvNDY5MBGGD2h0
--dHA6Ly90ZXN0LzQ3MDARhg9odHRwOi8vdGVzdC80NzEwEYYPaHR0cDovL3Rlc3Qv
--NDcyMBGGD2h0dHA6Ly90ZXN0LzQ3MzARhg9odHRwOi8vdGVzdC80NzQwEYYPaHR0
--cDovL3Rlc3QvNDc1MBGGD2h0dHA6Ly90ZXN0LzQ3NjARhg9odHRwOi8vdGVzdC80
--NzcwEYYPaHR0cDovL3Rlc3QvNDc4MBGGD2h0dHA6Ly90ZXN0LzQ3OTARhg9odHRw
--Oi8vdGVzdC80ODAwEYYPaHR0cDovL3Rlc3QvNDgxMBGGD2h0dHA6Ly90ZXN0LzQ4
--MjARhg9odHRwOi8vdGVzdC80ODMwEYYPaHR0cDovL3Rlc3QvNDg0MBGGD2h0dHA6
--Ly90ZXN0LzQ4NTARhg9odHRwOi8vdGVzdC80ODYwEYYPaHR0cDovL3Rlc3QvNDg3
--MBGGD2h0dHA6Ly90ZXN0LzQ4ODARhg9odHRwOi8vdGVzdC80ODkwEYYPaHR0cDov
--L3Rlc3QvNDkwMBGGD2h0dHA6Ly90ZXN0LzQ5MTARhg9odHRwOi8vdGVzdC80OTIw
--EYYPaHR0cDovL3Rlc3QvNDkzMBGGD2h0dHA6Ly90ZXN0LzQ5NDARhg9odHRwOi8v
--dGVzdC80OTUwEYYPaHR0cDovL3Rlc3QvNDk2MBGGD2h0dHA6Ly90ZXN0LzQ5NzAR
--hg9odHRwOi8vdGVzdC80OTgwEYYPaHR0cDovL3Rlc3QvNDk5MBGGD2h0dHA6Ly90
--ZXN0LzUwMDARhg9odHRwOi8vdGVzdC81MDEwEYYPaHR0cDovL3Rlc3QvNTAyMBGG
--D2h0dHA6Ly90ZXN0LzUwMzARhg9odHRwOi8vdGVzdC81MDQwEYYPaHR0cDovL3Rl
--c3QvNTA1MBGGD2h0dHA6Ly90ZXN0LzUwNjARhg9odHRwOi8vdGVzdC81MDcwEYYP
--aHR0cDovL3Rlc3QvNTA4MBGGD2h0dHA6Ly90ZXN0LzUwOTARhg9odHRwOi8vdGVz
--dC81MTAwEYYPaHR0cDovL3Rlc3QvNTExMBGGD2h0dHA6Ly90ZXN0LzUxMjARhg9o
--dHRwOi8vdGVzdC81MTMwEYYPaHR0cDovL3Rlc3QvNTE0MBGGD2h0dHA6Ly90ZXN0
--LzUxNTARhg9odHRwOi8vdGVzdC81MTYwEYYPaHR0cDovL3Rlc3QvNTE3MBGGD2h0
--dHA6Ly90ZXN0LzUxODARhg9odHRwOi8vdGVzdC81MTkwEYYPaHR0cDovL3Rlc3Qv
--NTIwMBGGD2h0dHA6Ly90ZXN0LzUyMTARhg9odHRwOi8vdGVzdC81MjIwEYYPaHR0
--cDovL3Rlc3QvNTIzMBGGD2h0dHA6Ly90ZXN0LzUyNDARhg9odHRwOi8vdGVzdC81
--MjUwEYYPaHR0cDovL3Rlc3QvNTI2MBGGD2h0dHA6Ly90ZXN0LzUyNzARhg9odHRw
--Oi8vdGVzdC81MjgwEYYPaHR0cDovL3Rlc3QvNTI5MBGGD2h0dHA6Ly90ZXN0LzUz
--MDARhg9odHRwOi8vdGVzdC81MzEwEYYPaHR0cDovL3Rlc3QvNTMyMBGGD2h0dHA6
--Ly90ZXN0LzUzMzARhg9odHRwOi8vdGVzdC81MzQwEYYPaHR0cDovL3Rlc3QvNTM1
--MBGGD2h0dHA6Ly90ZXN0LzUzNjARhg9odHRwOi8vdGVzdC81MzcwEYYPaHR0cDov
--L3Rlc3QvNTM4MBGGD2h0dHA6Ly90ZXN0LzUzOTARhg9odHRwOi8vdGVzdC81NDAw
--EYYPaHR0cDovL3Rlc3QvNTQxMBGGD2h0dHA6Ly90ZXN0LzU0MjARhg9odHRwOi8v
--dGVzdC81NDMwEYYPaHR0cDovL3Rlc3QvNTQ0MBGGD2h0dHA6Ly90ZXN0LzU0NTAR
--hg9odHRwOi8vdGVzdC81NDYwEYYPaHR0cDovL3Rlc3QvNTQ3MBGGD2h0dHA6Ly90
--ZXN0LzU0ODARhg9odHRwOi8vdGVzdC81NDkwEYYPaHR0cDovL3Rlc3QvNTUwMBGG
--D2h0dHA6Ly90ZXN0LzU1MTARhg9odHRwOi8vdGVzdC81NTIwEYYPaHR0cDovL3Rl
--c3QvNTUzMBGGD2h0dHA6Ly90ZXN0LzU1NDARhg9odHRwOi8vdGVzdC81NTUwEYYP
--aHR0cDovL3Rlc3QvNTU2MBGGD2h0dHA6Ly90ZXN0LzU1NzARhg9odHRwOi8vdGVz
--dC81NTgwEYYPaHR0cDovL3Rlc3QvNTU5MBGGD2h0dHA6Ly90ZXN0LzU2MDARhg9o
--dHRwOi8vdGVzdC81NjEwEYYPaHR0cDovL3Rlc3QvNTYyMBGGD2h0dHA6Ly90ZXN0
--LzU2MzARhg9odHRwOi8vdGVzdC81NjQwEYYPaHR0cDovL3Rlc3QvNTY1MBGGD2h0
--dHA6Ly90ZXN0LzU2NjARhg9odHRwOi8vdGVzdC81NjcwEYYPaHR0cDovL3Rlc3Qv
--NTY4MBGGD2h0dHA6Ly90ZXN0LzU2OTARhg9odHRwOi8vdGVzdC81NzAwEYYPaHR0
--cDovL3Rlc3QvNTcxMBGGD2h0dHA6Ly90ZXN0LzU3MjARhg9odHRwOi8vdGVzdC81
--NzMwEYYPaHR0cDovL3Rlc3QvNTc0MBGGD2h0dHA6Ly90ZXN0LzU3NTARhg9odHRw
--Oi8vdGVzdC81NzYwEYYPaHR0cDovL3Rlc3QvNTc3MBGGD2h0dHA6Ly90ZXN0LzU3
--ODARhg9odHRwOi8vdGVzdC81NzkwEYYPaHR0cDovL3Rlc3QvNTgwMBGGD2h0dHA6
--Ly90ZXN0LzU4MTARhg9odHRwOi8vdGVzdC81ODIwEYYPaHR0cDovL3Rlc3QvNTgz
--MBGGD2h0dHA6Ly90ZXN0LzU4NDARhg9odHRwOi8vdGVzdC81ODUwEYYPaHR0cDov
--L3Rlc3QvNTg2MBGGD2h0dHA6Ly90ZXN0LzU4NzARhg9odHRwOi8vdGVzdC81ODgw
--EYYPaHR0cDovL3Rlc3QvNTg5MBGGD2h0dHA6Ly90ZXN0LzU5MDARhg9odHRwOi8v
--dGVzdC81OTEwEYYPaHR0cDovL3Rlc3QvNTkyMBGGD2h0dHA6Ly90ZXN0LzU5MzAR
--hg9odHRwOi8vdGVzdC81OTQwEYYPaHR0cDovL3Rlc3QvNTk1MBGGD2h0dHA6Ly90
--ZXN0LzU5NjARhg9odHRwOi8vdGVzdC81OTcwEYYPaHR0cDovL3Rlc3QvNTk4MBGG
--D2h0dHA6Ly90ZXN0LzU5OTARhg9odHRwOi8vdGVzdC82MDAwEYYPaHR0cDovL3Rl
--c3QvNjAxMBGGD2h0dHA6Ly90ZXN0LzYwMjARhg9odHRwOi8vdGVzdC82MDMwEYYP
--aHR0cDovL3Rlc3QvNjA0MBGGD2h0dHA6Ly90ZXN0LzYwNTARhg9odHRwOi8vdGVz
--dC82MDYwEYYPaHR0cDovL3Rlc3QvNjA3MBGGD2h0dHA6Ly90ZXN0LzYwODARhg9o
--dHRwOi8vdGVzdC82MDkwEYYPaHR0cDovL3Rlc3QvNjEwMBGGD2h0dHA6Ly90ZXN0
--LzYxMTARhg9odHRwOi8vdGVzdC82MTIwEYYPaHR0cDovL3Rlc3QvNjEzMBGGD2h0
--dHA6Ly90ZXN0LzYxNDARhg9odHRwOi8vdGVzdC82MTUwEYYPaHR0cDovL3Rlc3Qv
--NjE2MBGGD2h0dHA6Ly90ZXN0LzYxNzARhg9odHRwOi8vdGVzdC82MTgwEYYPaHR0
--cDovL3Rlc3QvNjE5MBGGD2h0dHA6Ly90ZXN0LzYyMDARhg9odHRwOi8vdGVzdC82
--MjEwEYYPaHR0cDovL3Rlc3QvNjIyMBGGD2h0dHA6Ly90ZXN0LzYyMzARhg9odHRw
--Oi8vdGVzdC82MjQwEYYPaHR0cDovL3Rlc3QvNjI1MBGGD2h0dHA6Ly90ZXN0LzYy
--NjARhg9odHRwOi8vdGVzdC82MjcwEYYPaHR0cDovL3Rlc3QvNjI4MBGGD2h0dHA6
--Ly90ZXN0LzYyOTARhg9odHRwOi8vdGVzdC82MzAwEYYPaHR0cDovL3Rlc3QvNjMx
--MBGGD2h0dHA6Ly90ZXN0LzYzMjARhg9odHRwOi8vdGVzdC82MzMwEYYPaHR0cDov
--L3Rlc3QvNjM0MBGGD2h0dHA6Ly90ZXN0LzYzNTARhg9odHRwOi8vdGVzdC82MzYw
--EYYPaHR0cDovL3Rlc3QvNjM3MBGGD2h0dHA6Ly90ZXN0LzYzODARhg9odHRwOi8v
--dGVzdC82MzkwEYYPaHR0cDovL3Rlc3QvNjQwMBGGD2h0dHA6Ly90ZXN0LzY0MTAR
--hg9odHRwOi8vdGVzdC82NDIwEYYPaHR0cDovL3Rlc3QvNjQzMBGGD2h0dHA6Ly90
--ZXN0LzY0NDARhg9odHRwOi8vdGVzdC82NDUwEYYPaHR0cDovL3Rlc3QvNjQ2MBGG
--D2h0dHA6Ly90ZXN0LzY0NzARhg9odHRwOi8vdGVzdC82NDgwEYYPaHR0cDovL3Rl
--c3QvNjQ5MBGGD2h0dHA6Ly90ZXN0LzY1MDARhg9odHRwOi8vdGVzdC82NTEwEYYP
--aHR0cDovL3Rlc3QvNjUyMBGGD2h0dHA6Ly90ZXN0LzY1MzARhg9odHRwOi8vdGVz
--dC82NTQwEYYPaHR0cDovL3Rlc3QvNjU1MBGGD2h0dHA6Ly90ZXN0LzY1NjARhg9o
--dHRwOi8vdGVzdC82NTcwEYYPaHR0cDovL3Rlc3QvNjU4MBGGD2h0dHA6Ly90ZXN0
--LzY1OTARhg9odHRwOi8vdGVzdC82NjAwEYYPaHR0cDovL3Rlc3QvNjYxMBGGD2h0
--dHA6Ly90ZXN0LzY2MjARhg9odHRwOi8vdGVzdC82NjMwEYYPaHR0cDovL3Rlc3Qv
--NjY0MBGGD2h0dHA6Ly90ZXN0LzY2NTARhg9odHRwOi8vdGVzdC82NjYwEYYPaHR0
--cDovL3Rlc3QvNjY3MBGGD2h0dHA6Ly90ZXN0LzY2ODARhg9odHRwOi8vdGVzdC82
--NjkwEYYPaHR0cDovL3Rlc3QvNjcwMBGGD2h0dHA6Ly90ZXN0LzY3MTARhg9odHRw
--Oi8vdGVzdC82NzIwEYYPaHR0cDovL3Rlc3QvNjczMBGGD2h0dHA6Ly90ZXN0LzY3
--NDARhg9odHRwOi8vdGVzdC82NzUwEYYPaHR0cDovL3Rlc3QvNjc2MBGGD2h0dHA6
--Ly90ZXN0LzY3NzARhg9odHRwOi8vdGVzdC82NzgwEYYPaHR0cDovL3Rlc3QvNjc5
--MBGGD2h0dHA6Ly90ZXN0LzY4MDARhg9odHRwOi8vdGVzdC82ODEwEYYPaHR0cDov
--L3Rlc3QvNjgyMBGGD2h0dHA6Ly90ZXN0LzY4MzARhg9odHRwOi8vdGVzdC82ODQw
--EYYPaHR0cDovL3Rlc3QvNjg1MBGGD2h0dHA6Ly90ZXN0LzY4NjARhg9odHRwOi8v
--dGVzdC82ODcwEYYPaHR0cDovL3Rlc3QvNjg4MBGGD2h0dHA6Ly90ZXN0LzY4OTAR
--hg9odHRwOi8vdGVzdC82OTAwEYYPaHR0cDovL3Rlc3QvNjkxMBGGD2h0dHA6Ly90
--ZXN0LzY5MjARhg9odHRwOi8vdGVzdC82OTMwEYYPaHR0cDovL3Rlc3QvNjk0MBGG
--D2h0dHA6Ly90ZXN0LzY5NTARhg9odHRwOi8vdGVzdC82OTYwEYYPaHR0cDovL3Rl
--c3QvNjk3MBGGD2h0dHA6Ly90ZXN0LzY5ODARhg9odHRwOi8vdGVzdC82OTkwEYYP
--aHR0cDovL3Rlc3QvNzAwMBGGD2h0dHA6Ly90ZXN0LzcwMTARhg9odHRwOi8vdGVz
--dC83MDIwEYYPaHR0cDovL3Rlc3QvNzAzMBGGD2h0dHA6Ly90ZXN0LzcwNDARhg9o
--dHRwOi8vdGVzdC83MDUwEYYPaHR0cDovL3Rlc3QvNzA2MBGGD2h0dHA6Ly90ZXN0
--LzcwNzARhg9odHRwOi8vdGVzdC83MDgwEYYPaHR0cDovL3Rlc3QvNzA5MBGGD2h0
--dHA6Ly90ZXN0LzcxMDARhg9odHRwOi8vdGVzdC83MTEwEYYPaHR0cDovL3Rlc3Qv
--NzEyMBGGD2h0dHA6Ly90ZXN0LzcxMzARhg9odHRwOi8vdGVzdC83MTQwEYYPaHR0
--cDovL3Rlc3QvNzE1MBGGD2h0dHA6Ly90ZXN0LzcxNjARhg9odHRwOi8vdGVzdC83
--MTcwEYYPaHR0cDovL3Rlc3QvNzE4MBGGD2h0dHA6Ly90ZXN0LzcxOTARhg9odHRw
--Oi8vdGVzdC83MjAwEYYPaHR0cDovL3Rlc3QvNzIxMBGGD2h0dHA6Ly90ZXN0Lzcy
--MjARhg9odHRwOi8vdGVzdC83MjMwEYYPaHR0cDovL3Rlc3QvNzI0MBGGD2h0dHA6
--Ly90ZXN0LzcyNTARhg9odHRwOi8vdGVzdC83MjYwEYYPaHR0cDovL3Rlc3QvNzI3
--MBGGD2h0dHA6Ly90ZXN0LzcyODARhg9odHRwOi8vdGVzdC83MjkwEYYPaHR0cDov
--L3Rlc3QvNzMwMBGGD2h0dHA6Ly90ZXN0LzczMTARhg9odHRwOi8vdGVzdC83MzIw
--EYYPaHR0cDovL3Rlc3QvNzMzMBGGD2h0dHA6Ly90ZXN0LzczNDARhg9odHRwOi8v
--dGVzdC83MzUwEYYPaHR0cDovL3Rlc3QvNzM2MBGGD2h0dHA6Ly90ZXN0LzczNzAR
--hg9odHRwOi8vdGVzdC83MzgwEYYPaHR0cDovL3Rlc3QvNzM5MBGGD2h0dHA6Ly90
--ZXN0Lzc0MDARhg9odHRwOi8vdGVzdC83NDEwEYYPaHR0cDovL3Rlc3QvNzQyMBGG
--D2h0dHA6Ly90ZXN0Lzc0MzARhg9odHRwOi8vdGVzdC83NDQwEYYPaHR0cDovL3Rl
--c3QvNzQ1MBGGD2h0dHA6Ly90ZXN0Lzc0NjARhg9odHRwOi8vdGVzdC83NDcwEYYP
--aHR0cDovL3Rlc3QvNzQ4MBGGD2h0dHA6Ly90ZXN0Lzc0OTARhg9odHRwOi8vdGVz
--dC83NTAwEYYPaHR0cDovL3Rlc3QvNzUxMBGGD2h0dHA6Ly90ZXN0Lzc1MjARhg9o
--dHRwOi8vdGVzdC83NTMwEYYPaHR0cDovL3Rlc3QvNzU0MBGGD2h0dHA6Ly90ZXN0
--Lzc1NTARhg9odHRwOi8vdGVzdC83NTYwEYYPaHR0cDovL3Rlc3QvNzU3MBGGD2h0
--dHA6Ly90ZXN0Lzc1ODARhg9odHRwOi8vdGVzdC83NTkwEYYPaHR0cDovL3Rlc3Qv
--NzYwMBGGD2h0dHA6Ly90ZXN0Lzc2MTARhg9odHRwOi8vdGVzdC83NjIwEYYPaHR0
--cDovL3Rlc3QvNzYzMBGGD2h0dHA6Ly90ZXN0Lzc2NDARhg9odHRwOi8vdGVzdC83
--NjUwEYYPaHR0cDovL3Rlc3QvNzY2MBGGD2h0dHA6Ly90ZXN0Lzc2NzARhg9odHRw
--Oi8vdGVzdC83NjgwEYYPaHR0cDovL3Rlc3QvNzY5MBGGD2h0dHA6Ly90ZXN0Lzc3
--MDARhg9odHRwOi8vdGVzdC83NzEwEYYPaHR0cDovL3Rlc3QvNzcyMBGGD2h0dHA6
--Ly90ZXN0Lzc3MzARhg9odHRwOi8vdGVzdC83NzQwEYYPaHR0cDovL3Rlc3QvNzc1
--MBGGD2h0dHA6Ly90ZXN0Lzc3NjARhg9odHRwOi8vdGVzdC83NzcwEYYPaHR0cDov
--L3Rlc3QvNzc4MBGGD2h0dHA6Ly90ZXN0Lzc3OTARhg9odHRwOi8vdGVzdC83ODAw
--EYYPaHR0cDovL3Rlc3QvNzgxMBGGD2h0dHA6Ly90ZXN0Lzc4MjARhg9odHRwOi8v
--dGVzdC83ODMwEYYPaHR0cDovL3Rlc3QvNzg0MBGGD2h0dHA6Ly90ZXN0Lzc4NTAR
--hg9odHRwOi8vdGVzdC83ODYwEYYPaHR0cDovL3Rlc3QvNzg3MBGGD2h0dHA6Ly90
--ZXN0Lzc4ODARhg9odHRwOi8vdGVzdC83ODkwEYYPaHR0cDovL3Rlc3QvNzkwMBGG
--D2h0dHA6Ly90ZXN0Lzc5MTARhg9odHRwOi8vdGVzdC83OTIwEYYPaHR0cDovL3Rl
--c3QvNzkzMBGGD2h0dHA6Ly90ZXN0Lzc5NDARhg9odHRwOi8vdGVzdC83OTUwEYYP
--aHR0cDovL3Rlc3QvNzk2MBGGD2h0dHA6Ly90ZXN0Lzc5NzARhg9odHRwOi8vdGVz
--dC83OTgwEYYPaHR0cDovL3Rlc3QvNzk5MBGGD2h0dHA6Ly90ZXN0LzgwMDARhg9o
--dHRwOi8vdGVzdC84MDEwEYYPaHR0cDovL3Rlc3QvODAyMBGGD2h0dHA6Ly90ZXN0
--LzgwMzARhg9odHRwOi8vdGVzdC84MDQwEYYPaHR0cDovL3Rlc3QvODA1MBGGD2h0
--dHA6Ly90ZXN0LzgwNjARhg9odHRwOi8vdGVzdC84MDcwEYYPaHR0cDovL3Rlc3Qv
--ODA4MBGGD2h0dHA6Ly90ZXN0LzgwOTARhg9odHRwOi8vdGVzdC84MTAwEYYPaHR0
--cDovL3Rlc3QvODExMBGGD2h0dHA6Ly90ZXN0LzgxMjARhg9odHRwOi8vdGVzdC84
--MTMwEYYPaHR0cDovL3Rlc3QvODE0MBGGD2h0dHA6Ly90ZXN0LzgxNTARhg9odHRw
--Oi8vdGVzdC84MTYwEYYPaHR0cDovL3Rlc3QvODE3MBGGD2h0dHA6Ly90ZXN0Lzgx
--ODARhg9odHRwOi8vdGVzdC84MTkwEYYPaHR0cDovL3Rlc3QvODIwMBGGD2h0dHA6
--Ly90ZXN0LzgyMTARhg9odHRwOi8vdGVzdC84MjIwEYYPaHR0cDovL3Rlc3QvODIz
--MBGGD2h0dHA6Ly90ZXN0LzgyNDARhg9odHRwOi8vdGVzdC84MjUwEYYPaHR0cDov
--L3Rlc3QvODI2MBGGD2h0dHA6Ly90ZXN0LzgyNzARhg9odHRwOi8vdGVzdC84Mjgw
--EYYPaHR0cDovL3Rlc3QvODI5MBGGD2h0dHA6Ly90ZXN0LzgzMDARhg9odHRwOi8v
--dGVzdC84MzEwEYYPaHR0cDovL3Rlc3QvODMyMBGGD2h0dHA6Ly90ZXN0LzgzMzAR
--hg9odHRwOi8vdGVzdC84MzQwEYYPaHR0cDovL3Rlc3QvODM1MBGGD2h0dHA6Ly90
--ZXN0LzgzNjARhg9odHRwOi8vdGVzdC84MzcwEYYPaHR0cDovL3Rlc3QvODM4MBGG
--D2h0dHA6Ly90ZXN0LzgzOTARhg9odHRwOi8vdGVzdC84NDAwEYYPaHR0cDovL3Rl
--c3QvODQxMBGGD2h0dHA6Ly90ZXN0Lzg0MjARhg9odHRwOi8vdGVzdC84NDMwEYYP
--aHR0cDovL3Rlc3QvODQ0MBGGD2h0dHA6Ly90ZXN0Lzg0NTARhg9odHRwOi8vdGVz
--dC84NDYwEYYPaHR0cDovL3Rlc3QvODQ3MBGGD2h0dHA6Ly90ZXN0Lzg0ODARhg9o
--dHRwOi8vdGVzdC84NDkwEYYPaHR0cDovL3Rlc3QvODUwMBGGD2h0dHA6Ly90ZXN0
--Lzg1MTARhg9odHRwOi8vdGVzdC84NTIwEYYPaHR0cDovL3Rlc3QvODUzMBGGD2h0
--dHA6Ly90ZXN0Lzg1NDARhg9odHRwOi8vdGVzdC84NTUwEYYPaHR0cDovL3Rlc3Qv
--ODU2MBGGD2h0dHA6Ly90ZXN0Lzg1NzARhg9odHRwOi8vdGVzdC84NTgwEYYPaHR0
--cDovL3Rlc3QvODU5MBGGD2h0dHA6Ly90ZXN0Lzg2MDARhg9odHRwOi8vdGVzdC84
--NjEwEYYPaHR0cDovL3Rlc3QvODYyMBGGD2h0dHA6Ly90ZXN0Lzg2MzARhg9odHRw
--Oi8vdGVzdC84NjQwEYYPaHR0cDovL3Rlc3QvODY1MBGGD2h0dHA6Ly90ZXN0Lzg2
--NjARhg9odHRwOi8vdGVzdC84NjcwEYYPaHR0cDovL3Rlc3QvODY4MBGGD2h0dHA6
--Ly90ZXN0Lzg2OTARhg9odHRwOi8vdGVzdC84NzAwEYYPaHR0cDovL3Rlc3QvODcx
--MBGGD2h0dHA6Ly90ZXN0Lzg3MjARhg9odHRwOi8vdGVzdC84NzMwEYYPaHR0cDov
--L3Rlc3QvODc0MBGGD2h0dHA6Ly90ZXN0Lzg3NTARhg9odHRwOi8vdGVzdC84NzYw
--EYYPaHR0cDovL3Rlc3QvODc3MBGGD2h0dHA6Ly90ZXN0Lzg3ODARhg9odHRwOi8v
--dGVzdC84NzkwEYYPaHR0cDovL3Rlc3QvODgwMBGGD2h0dHA6Ly90ZXN0Lzg4MTAR
--hg9odHRwOi8vdGVzdC84ODIwEYYPaHR0cDovL3Rlc3QvODgzMBGGD2h0dHA6Ly90
--ZXN0Lzg4NDARhg9odHRwOi8vdGVzdC84ODUwEYYPaHR0cDovL3Rlc3QvODg2MBGG
--D2h0dHA6Ly90ZXN0Lzg4NzARhg9odHRwOi8vdGVzdC84ODgwEYYPaHR0cDovL3Rl
--c3QvODg5MBGGD2h0dHA6Ly90ZXN0Lzg5MDARhg9odHRwOi8vdGVzdC84OTEwEYYP
--aHR0cDovL3Rlc3QvODkyMBGGD2h0dHA6Ly90ZXN0Lzg5MzARhg9odHRwOi8vdGVz
--dC84OTQwEYYPaHR0cDovL3Rlc3QvODk1MBGGD2h0dHA6Ly90ZXN0Lzg5NjARhg9o
--dHRwOi8vdGVzdC84OTcwEYYPaHR0cDovL3Rlc3QvODk4MBGGD2h0dHA6Ly90ZXN0
--Lzg5OTARhg9odHRwOi8vdGVzdC85MDAwEYYPaHR0cDovL3Rlc3QvOTAxMBGGD2h0
--dHA6Ly90ZXN0LzkwMjARhg9odHRwOi8vdGVzdC85MDMwEYYPaHR0cDovL3Rlc3Qv
--OTA0MBGGD2h0dHA6Ly90ZXN0LzkwNTARhg9odHRwOi8vdGVzdC85MDYwEYYPaHR0
--cDovL3Rlc3QvOTA3MBGGD2h0dHA6Ly90ZXN0LzkwODARhg9odHRwOi8vdGVzdC85
--MDkwEYYPaHR0cDovL3Rlc3QvOTEwMBGGD2h0dHA6Ly90ZXN0LzkxMTARhg9odHRw
--Oi8vdGVzdC85MTIwEYYPaHR0cDovL3Rlc3QvOTEzMBGGD2h0dHA6Ly90ZXN0Lzkx
--NDARhg9odHRwOi8vdGVzdC85MTUwEYYPaHR0cDovL3Rlc3QvOTE2MBGGD2h0dHA6
--Ly90ZXN0LzkxNzARhg9odHRwOi8vdGVzdC85MTgwEYYPaHR0cDovL3Rlc3QvOTE5
--MBGGD2h0dHA6Ly90ZXN0LzkyMDARhg9odHRwOi8vdGVzdC85MjEwEYYPaHR0cDov
--L3Rlc3QvOTIyMBGGD2h0dHA6Ly90ZXN0LzkyMzARhg9odHRwOi8vdGVzdC85MjQw
--EYYPaHR0cDovL3Rlc3QvOTI1MBGGD2h0dHA6Ly90ZXN0LzkyNjARhg9odHRwOi8v
--dGVzdC85MjcwEYYPaHR0cDovL3Rlc3QvOTI4MBGGD2h0dHA6Ly90ZXN0LzkyOTAR
--hg9odHRwOi8vdGVzdC85MzAwEYYPaHR0cDovL3Rlc3QvOTMxMBGGD2h0dHA6Ly90
--ZXN0LzkzMjARhg9odHRwOi8vdGVzdC85MzMwEYYPaHR0cDovL3Rlc3QvOTM0MBGG
--D2h0dHA6Ly90ZXN0LzkzNTARhg9odHRwOi8vdGVzdC85MzYwEYYPaHR0cDovL3Rl
--c3QvOTM3MBGGD2h0dHA6Ly90ZXN0LzkzODARhg9odHRwOi8vdGVzdC85MzkwEYYP
--aHR0cDovL3Rlc3QvOTQwMBGGD2h0dHA6Ly90ZXN0Lzk0MTARhg9odHRwOi8vdGVz
--dC85NDIwEYYPaHR0cDovL3Rlc3QvOTQzMBGGD2h0dHA6Ly90ZXN0Lzk0NDARhg9o
--dHRwOi8vdGVzdC85NDUwEYYPaHR0cDovL3Rlc3QvOTQ2MBGGD2h0dHA6Ly90ZXN0
--Lzk0NzARhg9odHRwOi8vdGVzdC85NDgwEYYPaHR0cDovL3Rlc3QvOTQ5MBGGD2h0
--dHA6Ly90ZXN0Lzk1MDARhg9odHRwOi8vdGVzdC85NTEwEYYPaHR0cDovL3Rlc3Qv
--OTUyMBGGD2h0dHA6Ly90ZXN0Lzk1MzARhg9odHRwOi8vdGVzdC85NTQwEYYPaHR0
--cDovL3Rlc3QvOTU1MBGGD2h0dHA6Ly90ZXN0Lzk1NjARhg9odHRwOi8vdGVzdC85
--NTcwEYYPaHR0cDovL3Rlc3QvOTU4MBGGD2h0dHA6Ly90ZXN0Lzk1OTARhg9odHRw
--Oi8vdGVzdC85NjAwEYYPaHR0cDovL3Rlc3QvOTYxMBGGD2h0dHA6Ly90ZXN0Lzk2
--MjARhg9odHRwOi8vdGVzdC85NjMwEYYPaHR0cDovL3Rlc3QvOTY0MBGGD2h0dHA6
--Ly90ZXN0Lzk2NTARhg9odHRwOi8vdGVzdC85NjYwEYYPaHR0cDovL3Rlc3QvOTY3
--MBGGD2h0dHA6Ly90ZXN0Lzk2ODARhg9odHRwOi8vdGVzdC85NjkwEYYPaHR0cDov
--L3Rlc3QvOTcwMBGGD2h0dHA6Ly90ZXN0Lzk3MTARhg9odHRwOi8vdGVzdC85NzIw
--EYYPaHR0cDovL3Rlc3QvOTczMBGGD2h0dHA6Ly90ZXN0Lzk3NDARhg9odHRwOi8v
--dGVzdC85NzUwEYYPaHR0cDovL3Rlc3QvOTc2MBGGD2h0dHA6Ly90ZXN0Lzk3NzAR
--hg9odHRwOi8vdGVzdC85NzgwEYYPaHR0cDovL3Rlc3QvOTc5MBGGD2h0dHA6Ly90
--ZXN0Lzk4MDARhg9odHRwOi8vdGVzdC85ODEwEYYPaHR0cDovL3Rlc3QvOTgyMBGG
--D2h0dHA6Ly90ZXN0Lzk4MzARhg9odHRwOi8vdGVzdC85ODQwEYYPaHR0cDovL3Rl
--c3QvOTg1MBGGD2h0dHA6Ly90ZXN0Lzk4NjARhg9odHRwOi8vdGVzdC85ODcwEYYP
--aHR0cDovL3Rlc3QvOTg4MBGGD2h0dHA6Ly90ZXN0Lzk4OTARhg9odHRwOi8vdGVz
--dC85OTAwEYYPaHR0cDovL3Rlc3QvOTkxMBGGD2h0dHA6Ly90ZXN0Lzk5MjARhg9o
--dHRwOi8vdGVzdC85OTMwEYYPaHR0cDovL3Rlc3QvOTk0MBGGD2h0dHA6Ly90ZXN0
--Lzk5NTARhg9odHRwOi8vdGVzdC85OTYwEYYPaHR0cDovL3Rlc3QvOTk3MBGGD2h0
--dHA6Ly90ZXN0Lzk5ODARhg9odHRwOi8vdGVzdC85OTkwEoYQaHR0cDovL3Rlc3Qv
--MTAwMDAShhBodHRwOi8vdGVzdC8xMDAxMBKGEGh0dHA6Ly90ZXN0LzEwMDIwEoYQ
--aHR0cDovL3Rlc3QvMTAwMzAShhBodHRwOi8vdGVzdC8xMDA0MBKGEGh0dHA6Ly90
--ZXN0LzEwMDUwEoYQaHR0cDovL3Rlc3QvMTAwNjAShhBodHRwOi8vdGVzdC8xMDA3
--MBKGEGh0dHA6Ly90ZXN0LzEwMDgwEoYQaHR0cDovL3Rlc3QvMTAwOTAShhBodHRw
--Oi8vdGVzdC8xMDEwMBKGEGh0dHA6Ly90ZXN0LzEwMTEwEoYQaHR0cDovL3Rlc3Qv
--MTAxMjAShhBodHRwOi8vdGVzdC8xMDEzMBKGEGh0dHA6Ly90ZXN0LzEwMTQwEoYQ
--aHR0cDovL3Rlc3QvMTAxNTAShhBodHRwOi8vdGVzdC8xMDE2MBKGEGh0dHA6Ly90
--ZXN0LzEwMTcwEoYQaHR0cDovL3Rlc3QvMTAxODAShhBodHRwOi8vdGVzdC8xMDE5
--MBKGEGh0dHA6Ly90ZXN0LzEwMjAwEoYQaHR0cDovL3Rlc3QvMTAyMTAShhBodHRw
--Oi8vdGVzdC8xMDIyMBKGEGh0dHA6Ly90ZXN0LzEwMjMwEoYQaHR0cDovL3Rlc3Qv
--MTAyNKGC0zYwCYIHeDAudGVzdDAJggd4MS50ZXN0MAmCB3gyLnRlc3QwCYIHeDMu
--dGVzdDAJggd4NC50ZXN0MAmCB3g1LnRlc3QwCYIHeDYudGVzdDAJggd4Ny50ZXN0
--MAmCB3g4LnRlc3QwCYIHeDkudGVzdDAKggh4MTAudGVzdDAKggh4MTEudGVzdDAK
--ggh4MTIudGVzdDAKggh4MTMudGVzdDAKggh4MTQudGVzdDAKggh4MTUudGVzdDAK
--ggh4MTYudGVzdDAKggh4MTcudGVzdDAKggh4MTgudGVzdDAKggh4MTkudGVzdDAK
--ggh4MjAudGVzdDAKggh4MjEudGVzdDAKggh4MjIudGVzdDAKggh4MjMudGVzdDAK
--ggh4MjQudGVzdDAKggh4MjUudGVzdDAKggh4MjYudGVzdDAKggh4MjcudGVzdDAK
--ggh4MjgudGVzdDAKggh4MjkudGVzdDAKggh4MzAudGVzdDAKggh4MzEudGVzdDAK
--ggh4MzIudGVzdDAKggh4MzMudGVzdDAKggh4MzQudGVzdDAKggh4MzUudGVzdDAK
--ggh4MzYudGVzdDAKggh4MzcudGVzdDAKggh4MzgudGVzdDAKggh4MzkudGVzdDAK
--ggh4NDAudGVzdDAKggh4NDEudGVzdDAKggh4NDIudGVzdDAKggh4NDMudGVzdDAK
--ggh4NDQudGVzdDAKggh4NDUudGVzdDAKggh4NDYudGVzdDAKggh4NDcudGVzdDAK
--ggh4NDgudGVzdDAKggh4NDkudGVzdDAKggh4NTAudGVzdDAKggh4NTEudGVzdDAK
--ggh4NTIudGVzdDAKggh4NTMudGVzdDAKggh4NTQudGVzdDAKggh4NTUudGVzdDAK
--ggh4NTYudGVzdDAKggh4NTcudGVzdDAKggh4NTgudGVzdDAKggh4NTkudGVzdDAK
--ggh4NjAudGVzdDAKggh4NjEudGVzdDAKggh4NjIudGVzdDAKggh4NjMudGVzdDAK
--ggh4NjQudGVzdDAKggh4NjUudGVzdDAKggh4NjYudGVzdDAKggh4NjcudGVzdDAK
--ggh4NjgudGVzdDAKggh4NjkudGVzdDAKggh4NzAudGVzdDAKggh4NzEudGVzdDAK
--ggh4NzIudGVzdDAKggh4NzMudGVzdDAKggh4NzQudGVzdDAKggh4NzUudGVzdDAK
--ggh4NzYudGVzdDAKggh4NzcudGVzdDAKggh4NzgudGVzdDAKggh4NzkudGVzdDAK
--ggh4ODAudGVzdDAKggh4ODEudGVzdDAKggh4ODIudGVzdDAKggh4ODMudGVzdDAK
--ggh4ODQudGVzdDAKggh4ODUudGVzdDAKggh4ODYudGVzdDAKggh4ODcudGVzdDAK
--ggh4ODgudGVzdDAKggh4ODkudGVzdDAKggh4OTAudGVzdDAKggh4OTEudGVzdDAK
--ggh4OTIudGVzdDAKggh4OTMudGVzdDAKggh4OTQudGVzdDAKggh4OTUudGVzdDAK
--ggh4OTYudGVzdDAKggh4OTcudGVzdDAKggh4OTgudGVzdDAKggh4OTkudGVzdDAL
--ggl4MTAwLnRlc3QwC4IJeDEwMS50ZXN0MAuCCXgxMDIudGVzdDALggl4MTAzLnRl
--c3QwC4IJeDEwNC50ZXN0MAuCCXgxMDUudGVzdDALggl4MTA2LnRlc3QwC4IJeDEw
--Ny50ZXN0MAuCCXgxMDgudGVzdDALggl4MTA5LnRlc3QwC4IJeDExMC50ZXN0MAuC
--CXgxMTEudGVzdDALggl4MTEyLnRlc3QwC4IJeDExMy50ZXN0MAuCCXgxMTQudGVz
--dDALggl4MTE1LnRlc3QwC4IJeDExNi50ZXN0MAuCCXgxMTcudGVzdDALggl4MTE4
--LnRlc3QwC4IJeDExOS50ZXN0MAuCCXgxMjAudGVzdDALggl4MTIxLnRlc3QwC4IJ
--eDEyMi50ZXN0MAuCCXgxMjMudGVzdDALggl4MTI0LnRlc3QwC4IJeDEyNS50ZXN0
--MAuCCXgxMjYudGVzdDALggl4MTI3LnRlc3QwC4IJeDEyOC50ZXN0MAuCCXgxMjku
--dGVzdDALggl4MTMwLnRlc3QwC4IJeDEzMS50ZXN0MAuCCXgxMzIudGVzdDALggl4
--MTMzLnRlc3QwC4IJeDEzNC50ZXN0MAuCCXgxMzUudGVzdDALggl4MTM2LnRlc3Qw
--C4IJeDEzNy50ZXN0MAuCCXgxMzgudGVzdDALggl4MTM5LnRlc3QwC4IJeDE0MC50
--ZXN0MAuCCXgxNDEudGVzdDALggl4MTQyLnRlc3QwC4IJeDE0My50ZXN0MAuCCXgx
--NDQudGVzdDALggl4MTQ1LnRlc3QwC4IJeDE0Ni50ZXN0MAuCCXgxNDcudGVzdDAL
--ggl4MTQ4LnRlc3QwC4IJeDE0OS50ZXN0MAuCCXgxNTAudGVzdDALggl4MTUxLnRl
--c3QwC4IJeDE1Mi50ZXN0MAuCCXgxNTMudGVzdDALggl4MTU0LnRlc3QwC4IJeDE1
--NS50ZXN0MAuCCXgxNTYudGVzdDALggl4MTU3LnRlc3QwC4IJeDE1OC50ZXN0MAuC
--CXgxNTkudGVzdDALggl4MTYwLnRlc3QwC4IJeDE2MS50ZXN0MAuCCXgxNjIudGVz
--dDALggl4MTYzLnRlc3QwC4IJeDE2NC50ZXN0MAuCCXgxNjUudGVzdDALggl4MTY2
--LnRlc3QwC4IJeDE2Ny50ZXN0MAuCCXgxNjgudGVzdDALggl4MTY5LnRlc3QwC4IJ
--eDE3MC50ZXN0MAuCCXgxNzEudGVzdDALggl4MTcyLnRlc3QwC4IJeDE3My50ZXN0
--MAuCCXgxNzQudGVzdDALggl4MTc1LnRlc3QwC4IJeDE3Ni50ZXN0MAuCCXgxNzcu
--dGVzdDALggl4MTc4LnRlc3QwC4IJeDE3OS50ZXN0MAuCCXgxODAudGVzdDALggl4
--MTgxLnRlc3QwC4IJeDE4Mi50ZXN0MAuCCXgxODMudGVzdDALggl4MTg0LnRlc3Qw
--C4IJeDE4NS50ZXN0MAuCCXgxODYudGVzdDALggl4MTg3LnRlc3QwC4IJeDE4OC50
--ZXN0MAuCCXgxODkudGVzdDALggl4MTkwLnRlc3QwC4IJeDE5MS50ZXN0MAuCCXgx
--OTIudGVzdDALggl4MTkzLnRlc3QwC4IJeDE5NC50ZXN0MAuCCXgxOTUudGVzdDAL
--ggl4MTk2LnRlc3QwC4IJeDE5Ny50ZXN0MAuCCXgxOTgudGVzdDALggl4MTk5LnRl
--c3QwC4IJeDIwMC50ZXN0MAuCCXgyMDEudGVzdDALggl4MjAyLnRlc3QwC4IJeDIw
--My50ZXN0MAuCCXgyMDQudGVzdDALggl4MjA1LnRlc3QwC4IJeDIwNi50ZXN0MAuC
--CXgyMDcudGVzdDALggl4MjA4LnRlc3QwC4IJeDIwOS50ZXN0MAuCCXgyMTAudGVz
--dDALggl4MjExLnRlc3QwC4IJeDIxMi50ZXN0MAuCCXgyMTMudGVzdDALggl4MjE0
--LnRlc3QwC4IJeDIxNS50ZXN0MAuCCXgyMTYudGVzdDALggl4MjE3LnRlc3QwC4IJ
--eDIxOC50ZXN0MAuCCXgyMTkudGVzdDALggl4MjIwLnRlc3QwC4IJeDIyMS50ZXN0
--MAuCCXgyMjIudGVzdDALggl4MjIzLnRlc3QwC4IJeDIyNC50ZXN0MAuCCXgyMjUu
--dGVzdDALggl4MjI2LnRlc3QwC4IJeDIyNy50ZXN0MAuCCXgyMjgudGVzdDALggl4
--MjI5LnRlc3QwC4IJeDIzMC50ZXN0MAuCCXgyMzEudGVzdDALggl4MjMyLnRlc3Qw
--C4IJeDIzMy50ZXN0MAuCCXgyMzQudGVzdDALggl4MjM1LnRlc3QwC4IJeDIzNi50
--ZXN0MAuCCXgyMzcudGVzdDALggl4MjM4LnRlc3QwC4IJeDIzOS50ZXN0MAuCCXgy
--NDAudGVzdDALggl4MjQxLnRlc3QwC4IJeDI0Mi50ZXN0MAuCCXgyNDMudGVzdDAL
--ggl4MjQ0LnRlc3QwC4IJeDI0NS50ZXN0MAuCCXgyNDYudGVzdDALggl4MjQ3LnRl
--c3QwC4IJeDI0OC50ZXN0MAuCCXgyNDkudGVzdDALggl4MjUwLnRlc3QwC4IJeDI1
--MS50ZXN0MAuCCXgyNTIudGVzdDALggl4MjUzLnRlc3QwC4IJeDI1NC50ZXN0MAuC
--CXgyNTUudGVzdDALggl4MjU2LnRlc3QwC4IJeDI1Ny50ZXN0MAuCCXgyNTgudGVz
--dDALggl4MjU5LnRlc3QwC4IJeDI2MC50ZXN0MAuCCXgyNjEudGVzdDALggl4MjYy
--LnRlc3QwC4IJeDI2My50ZXN0MAuCCXgyNjQudGVzdDALggl4MjY1LnRlc3QwC4IJ
--eDI2Ni50ZXN0MAuCCXgyNjcudGVzdDALggl4MjY4LnRlc3QwC4IJeDI2OS50ZXN0
--MAuCCXgyNzAudGVzdDALggl4MjcxLnRlc3QwC4IJeDI3Mi50ZXN0MAuCCXgyNzMu
--dGVzdDALggl4Mjc0LnRlc3QwC4IJeDI3NS50ZXN0MAuCCXgyNzYudGVzdDALggl4
--Mjc3LnRlc3QwC4IJeDI3OC50ZXN0MAuCCXgyNzkudGVzdDALggl4MjgwLnRlc3Qw
--C4IJeDI4MS50ZXN0MAuCCXgyODIudGVzdDALggl4MjgzLnRlc3QwC4IJeDI4NC50
--ZXN0MAuCCXgyODUudGVzdDALggl4Mjg2LnRlc3QwC4IJeDI4Ny50ZXN0MAuCCXgy
--ODgudGVzdDALggl4Mjg5LnRlc3QwC4IJeDI5MC50ZXN0MAuCCXgyOTEudGVzdDAL
--ggl4MjkyLnRlc3QwC4IJeDI5My50ZXN0MAuCCXgyOTQudGVzdDALggl4Mjk1LnRl
--c3QwC4IJeDI5Ni50ZXN0MAuCCXgyOTcudGVzdDALggl4Mjk4LnRlc3QwC4IJeDI5
--OS50ZXN0MAuCCXgzMDAudGVzdDALggl4MzAxLnRlc3QwC4IJeDMwMi50ZXN0MAuC
--CXgzMDMudGVzdDALggl4MzA0LnRlc3QwC4IJeDMwNS50ZXN0MAuCCXgzMDYudGVz
--dDALggl4MzA3LnRlc3QwC4IJeDMwOC50ZXN0MAuCCXgzMDkudGVzdDALggl4MzEw
--LnRlc3QwC4IJeDMxMS50ZXN0MAuCCXgzMTIudGVzdDALggl4MzEzLnRlc3QwC4IJ
--eDMxNC50ZXN0MAuCCXgzMTUudGVzdDALggl4MzE2LnRlc3QwC4IJeDMxNy50ZXN0
--MAuCCXgzMTgudGVzdDALggl4MzE5LnRlc3QwC4IJeDMyMC50ZXN0MAuCCXgzMjEu
--dGVzdDALggl4MzIyLnRlc3QwC4IJeDMyMy50ZXN0MAuCCXgzMjQudGVzdDALggl4
--MzI1LnRlc3QwC4IJeDMyNi50ZXN0MAuCCXgzMjcudGVzdDALggl4MzI4LnRlc3Qw
--C4IJeDMyOS50ZXN0MAuCCXgzMzAudGVzdDALggl4MzMxLnRlc3QwC4IJeDMzMi50
--ZXN0MAuCCXgzMzMudGVzdDALggl4MzM0LnRlc3QwC4IJeDMzNS50ZXN0MAuCCXgz
--MzYudGVzdDALggl4MzM3LnRlc3QwC4IJeDMzOC50ZXN0MAuCCXgzMzkudGVzdDAL
--ggl4MzQwLnRlc3QwC4IJeDM0MS50ZXN0MAuCCXgzNDIudGVzdDALggl4MzQzLnRl
--c3QwC4IJeDM0NC50ZXN0MAuCCXgzNDUudGVzdDALggl4MzQ2LnRlc3QwC4IJeDM0
--Ny50ZXN0MAuCCXgzNDgudGVzdDALggl4MzQ5LnRlc3QwC4IJeDM1MC50ZXN0MAuC
--CXgzNTEudGVzdDALggl4MzUyLnRlc3QwC4IJeDM1My50ZXN0MAuCCXgzNTQudGVz
--dDALggl4MzU1LnRlc3QwC4IJeDM1Ni50ZXN0MAuCCXgzNTcudGVzdDALggl4MzU4
--LnRlc3QwC4IJeDM1OS50ZXN0MAuCCXgzNjAudGVzdDALggl4MzYxLnRlc3QwC4IJ
--eDM2Mi50ZXN0MAuCCXgzNjMudGVzdDALggl4MzY0LnRlc3QwC4IJeDM2NS50ZXN0
--MAuCCXgzNjYudGVzdDALggl4MzY3LnRlc3QwC4IJeDM2OC50ZXN0MAuCCXgzNjku
--dGVzdDALggl4MzcwLnRlc3QwC4IJeDM3MS50ZXN0MAuCCXgzNzIudGVzdDALggl4
--MzczLnRlc3QwC4IJeDM3NC50ZXN0MAuCCXgzNzUudGVzdDALggl4Mzc2LnRlc3Qw
--C4IJeDM3Ny50ZXN0MAuCCXgzNzgudGVzdDALggl4Mzc5LnRlc3QwC4IJeDM4MC50
--ZXN0MAuCCXgzODEudGVzdDALggl4MzgyLnRlc3QwC4IJeDM4My50ZXN0MAuCCXgz
--ODQudGVzdDALggl4Mzg1LnRlc3QwC4IJeDM4Ni50ZXN0MAuCCXgzODcudGVzdDAL
--ggl4Mzg4LnRlc3QwC4IJeDM4OS50ZXN0MAuCCXgzOTAudGVzdDALggl4MzkxLnRl
--c3QwC4IJeDM5Mi50ZXN0MAuCCXgzOTMudGVzdDALggl4Mzk0LnRlc3QwC4IJeDM5
--NS50ZXN0MAuCCXgzOTYudGVzdDALggl4Mzk3LnRlc3QwC4IJeDM5OC50ZXN0MAuC
--CXgzOTkudGVzdDALggl4NDAwLnRlc3QwC4IJeDQwMS50ZXN0MAuCCXg0MDIudGVz
--dDALggl4NDAzLnRlc3QwC4IJeDQwNC50ZXN0MAuCCXg0MDUudGVzdDALggl4NDA2
--LnRlc3QwC4IJeDQwNy50ZXN0MAuCCXg0MDgudGVzdDALggl4NDA5LnRlc3QwC4IJ
--eDQxMC50ZXN0MAuCCXg0MTEudGVzdDALggl4NDEyLnRlc3QwC4IJeDQxMy50ZXN0
--MAuCCXg0MTQudGVzdDALggl4NDE1LnRlc3QwC4IJeDQxNi50ZXN0MAuCCXg0MTcu
--dGVzdDALggl4NDE4LnRlc3QwC4IJeDQxOS50ZXN0MAuCCXg0MjAudGVzdDALggl4
--NDIxLnRlc3QwC4IJeDQyMi50ZXN0MAuCCXg0MjMudGVzdDALggl4NDI0LnRlc3Qw
--C4IJeDQyNS50ZXN0MAuCCXg0MjYudGVzdDALggl4NDI3LnRlc3QwC4IJeDQyOC50
--ZXN0MAuCCXg0MjkudGVzdDALggl4NDMwLnRlc3QwC4IJeDQzMS50ZXN0MAuCCXg0
--MzIudGVzdDALggl4NDMzLnRlc3QwC4IJeDQzNC50ZXN0MAuCCXg0MzUudGVzdDAL
--ggl4NDM2LnRlc3QwC4IJeDQzNy50ZXN0MAuCCXg0MzgudGVzdDALggl4NDM5LnRl
--c3QwC4IJeDQ0MC50ZXN0MAuCCXg0NDEudGVzdDALggl4NDQyLnRlc3QwC4IJeDQ0
--My50ZXN0MAuCCXg0NDQudGVzdDALggl4NDQ1LnRlc3QwC4IJeDQ0Ni50ZXN0MAuC
--CXg0NDcudGVzdDALggl4NDQ4LnRlc3QwC4IJeDQ0OS50ZXN0MAuCCXg0NTAudGVz
--dDALggl4NDUxLnRlc3QwC4IJeDQ1Mi50ZXN0MAuCCXg0NTMudGVzdDALggl4NDU0
--LnRlc3QwC4IJeDQ1NS50ZXN0MAuCCXg0NTYudGVzdDALggl4NDU3LnRlc3QwC4IJ
--eDQ1OC50ZXN0MAuCCXg0NTkudGVzdDALggl4NDYwLnRlc3QwC4IJeDQ2MS50ZXN0
--MAuCCXg0NjIudGVzdDALggl4NDYzLnRlc3QwC4IJeDQ2NC50ZXN0MAuCCXg0NjUu
--dGVzdDALggl4NDY2LnRlc3QwC4IJeDQ2Ny50ZXN0MAuCCXg0NjgudGVzdDALggl4
--NDY5LnRlc3QwC4IJeDQ3MC50ZXN0MAuCCXg0NzEudGVzdDALggl4NDcyLnRlc3Qw
--C4IJeDQ3My50ZXN0MAuCCXg0NzQudGVzdDALggl4NDc1LnRlc3QwC4IJeDQ3Ni50
--ZXN0MAuCCXg0NzcudGVzdDALggl4NDc4LnRlc3QwC4IJeDQ3OS50ZXN0MAuCCXg0
--ODAudGVzdDALggl4NDgxLnRlc3QwC4IJeDQ4Mi50ZXN0MAuCCXg0ODMudGVzdDAL
--ggl4NDg0LnRlc3QwC4IJeDQ4NS50ZXN0MAuCCXg0ODYudGVzdDALggl4NDg3LnRl
--c3QwC4IJeDQ4OC50ZXN0MAuCCXg0ODkudGVzdDALggl4NDkwLnRlc3QwC4IJeDQ5
--MS50ZXN0MAuCCXg0OTIudGVzdDALggl4NDkzLnRlc3QwC4IJeDQ5NC50ZXN0MAuC
--CXg0OTUudGVzdDALggl4NDk2LnRlc3QwC4IJeDQ5Ny50ZXN0MAuCCXg0OTgudGVz
--dDALggl4NDk5LnRlc3QwC4IJeDUwMC50ZXN0MAuCCXg1MDEudGVzdDALggl4NTAy
--LnRlc3QwC4IJeDUwMy50ZXN0MAuCCXg1MDQudGVzdDALggl4NTA1LnRlc3QwC4IJ
--eDUwNi50ZXN0MAuCCXg1MDcudGVzdDALggl4NTA4LnRlc3QwC4IJeDUwOS50ZXN0
--MAuCCXg1MTAudGVzdDALggl4NTExLnRlc3QwC4IJeDUxMi50ZXN0MAuCCXg1MTMu
--dGVzdDALggl4NTE0LnRlc3QwC4IJeDUxNS50ZXN0MAuCCXg1MTYudGVzdDALggl4
--NTE3LnRlc3QwC4IJeDUxOC50ZXN0MAuCCXg1MTkudGVzdDALggl4NTIwLnRlc3Qw
--C4IJeDUyMS50ZXN0MAuCCXg1MjIudGVzdDALggl4NTIzLnRlc3QwC4IJeDUyNC50
--ZXN0MAuCCXg1MjUudGVzdDALggl4NTI2LnRlc3QwC4IJeDUyNy50ZXN0MAuCCXg1
--MjgudGVzdDALggl4NTI5LnRlc3QwC4IJeDUzMC50ZXN0MAuCCXg1MzEudGVzdDAL
--ggl4NTMyLnRlc3QwC4IJeDUzMy50ZXN0MAuCCXg1MzQudGVzdDALggl4NTM1LnRl
--c3QwC4IJeDUzNi50ZXN0MAuCCXg1MzcudGVzdDALggl4NTM4LnRlc3QwC4IJeDUz
--OS50ZXN0MAuCCXg1NDAudGVzdDALggl4NTQxLnRlc3QwC4IJeDU0Mi50ZXN0MAuC
--CXg1NDMudGVzdDALggl4NTQ0LnRlc3QwC4IJeDU0NS50ZXN0MAuCCXg1NDYudGVz
--dDALggl4NTQ3LnRlc3QwC4IJeDU0OC50ZXN0MAuCCXg1NDkudGVzdDALggl4NTUw
--LnRlc3QwC4IJeDU1MS50ZXN0MAuCCXg1NTIudGVzdDALggl4NTUzLnRlc3QwC4IJ
--eDU1NC50ZXN0MAuCCXg1NTUudGVzdDALggl4NTU2LnRlc3QwC4IJeDU1Ny50ZXN0
--MAuCCXg1NTgudGVzdDALggl4NTU5LnRlc3QwC4IJeDU2MC50ZXN0MAuCCXg1NjEu
--dGVzdDALggl4NTYyLnRlc3QwC4IJeDU2My50ZXN0MAuCCXg1NjQudGVzdDALggl4
--NTY1LnRlc3QwC4IJeDU2Ni50ZXN0MAuCCXg1NjcudGVzdDALggl4NTY4LnRlc3Qw
--C4IJeDU2OS50ZXN0MAuCCXg1NzAudGVzdDALggl4NTcxLnRlc3QwC4IJeDU3Mi50
--ZXN0MAuCCXg1NzMudGVzdDALggl4NTc0LnRlc3QwC4IJeDU3NS50ZXN0MAuCCXg1
--NzYudGVzdDALggl4NTc3LnRlc3QwC4IJeDU3OC50ZXN0MAuCCXg1NzkudGVzdDAL
--ggl4NTgwLnRlc3QwC4IJeDU4MS50ZXN0MAuCCXg1ODIudGVzdDALggl4NTgzLnRl
--c3QwC4IJeDU4NC50ZXN0MAuCCXg1ODUudGVzdDALggl4NTg2LnRlc3QwC4IJeDU4
--Ny50ZXN0MAuCCXg1ODgudGVzdDALggl4NTg5LnRlc3QwC4IJeDU5MC50ZXN0MAuC
--CXg1OTEudGVzdDALggl4NTkyLnRlc3QwC4IJeDU5My50ZXN0MAuCCXg1OTQudGVz
--dDALggl4NTk1LnRlc3QwC4IJeDU5Ni50ZXN0MAuCCXg1OTcudGVzdDALggl4NTk4
--LnRlc3QwC4IJeDU5OS50ZXN0MAuCCXg2MDAudGVzdDALggl4NjAxLnRlc3QwC4IJ
--eDYwMi50ZXN0MAuCCXg2MDMudGVzdDALggl4NjA0LnRlc3QwC4IJeDYwNS50ZXN0
--MAuCCXg2MDYudGVzdDALggl4NjA3LnRlc3QwC4IJeDYwOC50ZXN0MAuCCXg2MDku
--dGVzdDALggl4NjEwLnRlc3QwC4IJeDYxMS50ZXN0MAuCCXg2MTIudGVzdDALggl4
--NjEzLnRlc3QwC4IJeDYxNC50ZXN0MAuCCXg2MTUudGVzdDALggl4NjE2LnRlc3Qw
--C4IJeDYxNy50ZXN0MAuCCXg2MTgudGVzdDALggl4NjE5LnRlc3QwC4IJeDYyMC50
--ZXN0MAuCCXg2MjEudGVzdDALggl4NjIyLnRlc3QwC4IJeDYyMy50ZXN0MAuCCXg2
--MjQudGVzdDALggl4NjI1LnRlc3QwC4IJeDYyNi50ZXN0MAuCCXg2MjcudGVzdDAL
--ggl4NjI4LnRlc3QwC4IJeDYyOS50ZXN0MAuCCXg2MzAudGVzdDALggl4NjMxLnRl
--c3QwC4IJeDYzMi50ZXN0MAuCCXg2MzMudGVzdDALggl4NjM0LnRlc3QwC4IJeDYz
--NS50ZXN0MAuCCXg2MzYudGVzdDALggl4NjM3LnRlc3QwC4IJeDYzOC50ZXN0MAuC
--CXg2MzkudGVzdDALggl4NjQwLnRlc3QwC4IJeDY0MS50ZXN0MAuCCXg2NDIudGVz
--dDALggl4NjQzLnRlc3QwC4IJeDY0NC50ZXN0MAuCCXg2NDUudGVzdDALggl4NjQ2
--LnRlc3QwC4IJeDY0Ny50ZXN0MAuCCXg2NDgudGVzdDALggl4NjQ5LnRlc3QwC4IJ
--eDY1MC50ZXN0MAuCCXg2NTEudGVzdDALggl4NjUyLnRlc3QwC4IJeDY1My50ZXN0
--MAuCCXg2NTQudGVzdDALggl4NjU1LnRlc3QwC4IJeDY1Ni50ZXN0MAuCCXg2NTcu
--dGVzdDALggl4NjU4LnRlc3QwC4IJeDY1OS50ZXN0MAuCCXg2NjAudGVzdDALggl4
--NjYxLnRlc3QwC4IJeDY2Mi50ZXN0MAuCCXg2NjMudGVzdDALggl4NjY0LnRlc3Qw
--C4IJeDY2NS50ZXN0MAuCCXg2NjYudGVzdDALggl4NjY3LnRlc3QwC4IJeDY2OC50
--ZXN0MAuCCXg2NjkudGVzdDALggl4NjcwLnRlc3QwC4IJeDY3MS50ZXN0MAuCCXg2
--NzIudGVzdDALggl4NjczLnRlc3QwC4IJeDY3NC50ZXN0MAuCCXg2NzUudGVzdDAL
--ggl4Njc2LnRlc3QwC4IJeDY3Ny50ZXN0MAuCCXg2NzgudGVzdDALggl4Njc5LnRl
--c3QwC4IJeDY4MC50ZXN0MAuCCXg2ODEudGVzdDALggl4NjgyLnRlc3QwC4IJeDY4
--My50ZXN0MAuCCXg2ODQudGVzdDALggl4Njg1LnRlc3QwC4IJeDY4Ni50ZXN0MAuC
--CXg2ODcudGVzdDALggl4Njg4LnRlc3QwC4IJeDY4OS50ZXN0MAuCCXg2OTAudGVz
--dDALggl4NjkxLnRlc3QwC4IJeDY5Mi50ZXN0MAuCCXg2OTMudGVzdDALggl4Njk0
--LnRlc3QwC4IJeDY5NS50ZXN0MAuCCXg2OTYudGVzdDALggl4Njk3LnRlc3QwC4IJ
--eDY5OC50ZXN0MAuCCXg2OTkudGVzdDALggl4NzAwLnRlc3QwC4IJeDcwMS50ZXN0
--MAuCCXg3MDIudGVzdDALggl4NzAzLnRlc3QwC4IJeDcwNC50ZXN0MAuCCXg3MDUu
--dGVzdDALggl4NzA2LnRlc3QwC4IJeDcwNy50ZXN0MAuCCXg3MDgudGVzdDALggl4
--NzA5LnRlc3QwC4IJeDcxMC50ZXN0MAuCCXg3MTEudGVzdDALggl4NzEyLnRlc3Qw
--C4IJeDcxMy50ZXN0MAuCCXg3MTQudGVzdDALggl4NzE1LnRlc3QwC4IJeDcxNi50
--ZXN0MAuCCXg3MTcudGVzdDALggl4NzE4LnRlc3QwC4IJeDcxOS50ZXN0MAuCCXg3
--MjAudGVzdDALggl4NzIxLnRlc3QwC4IJeDcyMi50ZXN0MAuCCXg3MjMudGVzdDAL
--ggl4NzI0LnRlc3QwC4IJeDcyNS50ZXN0MAuCCXg3MjYudGVzdDALggl4NzI3LnRl
--c3QwC4IJeDcyOC50ZXN0MAuCCXg3MjkudGVzdDALggl4NzMwLnRlc3QwC4IJeDcz
--MS50ZXN0MAuCCXg3MzIudGVzdDALggl4NzMzLnRlc3QwC4IJeDczNC50ZXN0MAuC
--CXg3MzUudGVzdDALggl4NzM2LnRlc3QwC4IJeDczNy50ZXN0MAuCCXg3MzgudGVz
--dDALggl4NzM5LnRlc3QwC4IJeDc0MC50ZXN0MAuCCXg3NDEudGVzdDALggl4NzQy
--LnRlc3QwC4IJeDc0My50ZXN0MAuCCXg3NDQudGVzdDALggl4NzQ1LnRlc3QwC4IJ
--eDc0Ni50ZXN0MAuCCXg3NDcudGVzdDALggl4NzQ4LnRlc3QwC4IJeDc0OS50ZXN0
--MAuCCXg3NTAudGVzdDALggl4NzUxLnRlc3QwC4IJeDc1Mi50ZXN0MAuCCXg3NTMu
--dGVzdDALggl4NzU0LnRlc3QwC4IJeDc1NS50ZXN0MAuCCXg3NTYudGVzdDALggl4
--NzU3LnRlc3QwC4IJeDc1OC50ZXN0MAuCCXg3NTkudGVzdDALggl4NzYwLnRlc3Qw
--C4IJeDc2MS50ZXN0MAuCCXg3NjIudGVzdDALggl4NzYzLnRlc3QwC4IJeDc2NC50
--ZXN0MAuCCXg3NjUudGVzdDALggl4NzY2LnRlc3QwC4IJeDc2Ny50ZXN0MAuCCXg3
--NjgudGVzdDALggl4NzY5LnRlc3QwC4IJeDc3MC50ZXN0MAuCCXg3NzEudGVzdDAL
--ggl4NzcyLnRlc3QwC4IJeDc3My50ZXN0MAuCCXg3NzQudGVzdDALggl4Nzc1LnRl
--c3QwC4IJeDc3Ni50ZXN0MAuCCXg3NzcudGVzdDALggl4Nzc4LnRlc3QwC4IJeDc3
--OS50ZXN0MAuCCXg3ODAudGVzdDALggl4NzgxLnRlc3QwC4IJeDc4Mi50ZXN0MAuC
--CXg3ODMudGVzdDALggl4Nzg0LnRlc3QwC4IJeDc4NS50ZXN0MAuCCXg3ODYudGVz
--dDALggl4Nzg3LnRlc3QwC4IJeDc4OC50ZXN0MAuCCXg3ODkudGVzdDALggl4Nzkw
--LnRlc3QwC4IJeDc5MS50ZXN0MAuCCXg3OTIudGVzdDALggl4NzkzLnRlc3QwC4IJ
--eDc5NC50ZXN0MAuCCXg3OTUudGVzdDALggl4Nzk2LnRlc3QwC4IJeDc5Ny50ZXN0
--MAuCCXg3OTgudGVzdDALggl4Nzk5LnRlc3QwC4IJeDgwMC50ZXN0MAuCCXg4MDEu
--dGVzdDALggl4ODAyLnRlc3QwC4IJeDgwMy50ZXN0MAuCCXg4MDQudGVzdDALggl4
--ODA1LnRlc3QwC4IJeDgwNi50ZXN0MAuCCXg4MDcudGVzdDALggl4ODA4LnRlc3Qw
--C4IJeDgwOS50ZXN0MAuCCXg4MTAudGVzdDALggl4ODExLnRlc3QwC4IJeDgxMi50
--ZXN0MAuCCXg4MTMudGVzdDALggl4ODE0LnRlc3QwC4IJeDgxNS50ZXN0MAuCCXg4
--MTYudGVzdDALggl4ODE3LnRlc3QwC4IJeDgxOC50ZXN0MAuCCXg4MTkudGVzdDAL
--ggl4ODIwLnRlc3QwC4IJeDgyMS50ZXN0MAuCCXg4MjIudGVzdDALggl4ODIzLnRl
--c3QwC4IJeDgyNC50ZXN0MAuCCXg4MjUudGVzdDALggl4ODI2LnRlc3QwC4IJeDgy
--Ny50ZXN0MAuCCXg4MjgudGVzdDALggl4ODI5LnRlc3QwC4IJeDgzMC50ZXN0MAuC
--CXg4MzEudGVzdDALggl4ODMyLnRlc3QwC4IJeDgzMy50ZXN0MAuCCXg4MzQudGVz
--dDALggl4ODM1LnRlc3QwC4IJeDgzNi50ZXN0MAuCCXg4MzcudGVzdDALggl4ODM4
--LnRlc3QwC4IJeDgzOS50ZXN0MAuCCXg4NDAudGVzdDALggl4ODQxLnRlc3QwC4IJ
--eDg0Mi50ZXN0MAuCCXg4NDMudGVzdDALggl4ODQ0LnRlc3QwC4IJeDg0NS50ZXN0
--MAuCCXg4NDYudGVzdDALggl4ODQ3LnRlc3QwC4IJeDg0OC50ZXN0MAuCCXg4NDku
--dGVzdDALggl4ODUwLnRlc3QwC4IJeDg1MS50ZXN0MAuCCXg4NTIudGVzdDALggl4
--ODUzLnRlc3QwC4IJeDg1NC50ZXN0MAuCCXg4NTUudGVzdDALggl4ODU2LnRlc3Qw
--C4IJeDg1Ny50ZXN0MAuCCXg4NTgudGVzdDALggl4ODU5LnRlc3QwC4IJeDg2MC50
--ZXN0MAuCCXg4NjEudGVzdDALggl4ODYyLnRlc3QwC4IJeDg2My50ZXN0MAuCCXg4
--NjQudGVzdDALggl4ODY1LnRlc3QwC4IJeDg2Ni50ZXN0MAuCCXg4NjcudGVzdDAL
--ggl4ODY4LnRlc3QwC4IJeDg2OS50ZXN0MAuCCXg4NzAudGVzdDALggl4ODcxLnRl
--c3QwC4IJeDg3Mi50ZXN0MAuCCXg4NzMudGVzdDALggl4ODc0LnRlc3QwC4IJeDg3
--NS50ZXN0MAuCCXg4NzYudGVzdDALggl4ODc3LnRlc3QwC4IJeDg3OC50ZXN0MAuC
--CXg4NzkudGVzdDALggl4ODgwLnRlc3QwC4IJeDg4MS50ZXN0MAuCCXg4ODIudGVz
--dDALggl4ODgzLnRlc3QwC4IJeDg4NC50ZXN0MAuCCXg4ODUudGVzdDALggl4ODg2
--LnRlc3QwC4IJeDg4Ny50ZXN0MAuCCXg4ODgudGVzdDALggl4ODg5LnRlc3QwC4IJ
--eDg5MC50ZXN0MAuCCXg4OTEudGVzdDALggl4ODkyLnRlc3QwC4IJeDg5My50ZXN0
--MAuCCXg4OTQudGVzdDALggl4ODk1LnRlc3QwC4IJeDg5Ni50ZXN0MAuCCXg4OTcu
--dGVzdDALggl4ODk4LnRlc3QwC4IJeDg5OS50ZXN0MAuCCXg5MDAudGVzdDALggl4
--OTAxLnRlc3QwC4IJeDkwMi50ZXN0MAuCCXg5MDMudGVzdDALggl4OTA0LnRlc3Qw
--C4IJeDkwNS50ZXN0MAuCCXg5MDYudGVzdDALggl4OTA3LnRlc3QwC4IJeDkwOC50
--ZXN0MAuCCXg5MDkudGVzdDALggl4OTEwLnRlc3QwC4IJeDkxMS50ZXN0MAuCCXg5
--MTIudGVzdDALggl4OTEzLnRlc3QwC4IJeDkxNC50ZXN0MAuCCXg5MTUudGVzdDAL
--ggl4OTE2LnRlc3QwC4IJeDkxNy50ZXN0MAuCCXg5MTgudGVzdDALggl4OTE5LnRl
--c3QwC4IJeDkyMC50ZXN0MAuCCXg5MjEudGVzdDALggl4OTIyLnRlc3QwC4IJeDky
--My50ZXN0MAuCCXg5MjQudGVzdDALggl4OTI1LnRlc3QwC4IJeDkyNi50ZXN0MAuC
--CXg5MjcudGVzdDALggl4OTI4LnRlc3QwC4IJeDkyOS50ZXN0MAuCCXg5MzAudGVz
--dDALggl4OTMxLnRlc3QwC4IJeDkzMi50ZXN0MAuCCXg5MzMudGVzdDALggl4OTM0
--LnRlc3QwC4IJeDkzNS50ZXN0MAuCCXg5MzYudGVzdDALggl4OTM3LnRlc3QwC4IJ
--eDkzOC50ZXN0MAuCCXg5MzkudGVzdDALggl4OTQwLnRlc3QwC4IJeDk0MS50ZXN0
--MAuCCXg5NDIudGVzdDALggl4OTQzLnRlc3QwC4IJeDk0NC50ZXN0MAuCCXg5NDUu
--dGVzdDALggl4OTQ2LnRlc3QwC4IJeDk0Ny50ZXN0MAuCCXg5NDgudGVzdDALggl4
--OTQ5LnRlc3QwC4IJeDk1MC50ZXN0MAuCCXg5NTEudGVzdDALggl4OTUyLnRlc3Qw
--C4IJeDk1My50ZXN0MAuCCXg5NTQudGVzdDALggl4OTU1LnRlc3QwC4IJeDk1Ni50
--ZXN0MAuCCXg5NTcudGVzdDALggl4OTU4LnRlc3QwC4IJeDk1OS50ZXN0MAuCCXg5
--NjAudGVzdDALggl4OTYxLnRlc3QwC4IJeDk2Mi50ZXN0MAuCCXg5NjMudGVzdDAL
--ggl4OTY0LnRlc3QwC4IJeDk2NS50ZXN0MAuCCXg5NjYudGVzdDALggl4OTY3LnRl
--c3QwC4IJeDk2OC50ZXN0MAuCCXg5NjkudGVzdDALggl4OTcwLnRlc3QwC4IJeDk3
--MS50ZXN0MAuCCXg5NzIudGVzdDALggl4OTczLnRlc3QwC4IJeDk3NC50ZXN0MAuC
--CXg5NzUudGVzdDALggl4OTc2LnRlc3QwC4IJeDk3Ny50ZXN0MAuCCXg5NzgudGVz
--dDALggl4OTc5LnRlc3QwC4IJeDk4MC50ZXN0MAuCCXg5ODEudGVzdDALggl4OTgy
--LnRlc3QwC4IJeDk4My50ZXN0MAuCCXg5ODQudGVzdDALggl4OTg1LnRlc3QwC4IJ
--eDk4Ni50ZXN0MAuCCXg5ODcudGVzdDALggl4OTg4LnRlc3QwC4IJeDk4OS50ZXN0
--MAuCCXg5OTAudGVzdDALggl4OTkxLnRlc3QwC4IJeDk5Mi50ZXN0MAuCCXg5OTMu
--dGVzdDALggl4OTk0LnRlc3QwC4IJeDk5NS50ZXN0MAuCCXg5OTYudGVzdDALggl4
--OTk3LnRlc3QwC4IJeDk5OC50ZXN0MAuCCXg5OTkudGVzdDAMggp4MTAwMC50ZXN0
--MAyCCngxMDAxLnRlc3QwDIIKeDEwMDIudGVzdDAMggp4MTAwMy50ZXN0MAyCCngx
--MDA0LnRlc3QwDIIKeDEwMDUudGVzdDAMggp4MTAwNi50ZXN0MAyCCngxMDA3LnRl
--c3QwDIIKeDEwMDgudGVzdDAMggp4MTAwOS50ZXN0MAyCCngxMDEwLnRlc3QwDIIK
--eDEwMTEudGVzdDAMggp4MTAxMi50ZXN0MAyCCngxMDEzLnRlc3QwDIIKeDEwMTQu
--dGVzdDAMggp4MTAxNS50ZXN0MAyCCngxMDE2LnRlc3QwDIIKeDEwMTcudGVzdDAM
--ggp4MTAxOC50ZXN0MAyCCngxMDE5LnRlc3QwDIIKeDEwMjAudGVzdDAMggp4MTAy
--MS50ZXN0MAyCCngxMDIyLnRlc3QwDIIKeDEwMjMudGVzdDAMggp4MTAyNC50ZXN0
--MBGkDzANMQswCQYDVQQDDAJ4MDARpA8wDTELMAkGA1UEAwwCeDEwEaQPMA0xCzAJ
--BgNVBAMMAngyMBGkDzANMQswCQYDVQQDDAJ4MzARpA8wDTELMAkGA1UEAwwCeDQw
--EaQPMA0xCzAJBgNVBAMMAng1MBGkDzANMQswCQYDVQQDDAJ4NjARpA8wDTELMAkG
--A1UEAwwCeDcwEaQPMA0xCzAJBgNVBAMMAng4MBGkDzANMQswCQYDVQQDDAJ4OTAS
--pBAwDjEMMAoGA1UEAwwDeDEwMBKkEDAOMQwwCgYDVQQDDAN4MTEwEqQQMA4xDDAK
--BgNVBAMMA3gxMjASpBAwDjEMMAoGA1UEAwwDeDEzMBKkEDAOMQwwCgYDVQQDDAN4
--MTQwEqQQMA4xDDAKBgNVBAMMA3gxNTASpBAwDjEMMAoGA1UEAwwDeDE2MBKkEDAO
--MQwwCgYDVQQDDAN4MTcwEqQQMA4xDDAKBgNVBAMMA3gxODASpBAwDjEMMAoGA1UE
--AwwDeDE5MBKkEDAOMQwwCgYDVQQDDAN4MjAwEqQQMA4xDDAKBgNVBAMMA3gyMTAS
--pBAwDjEMMAoGA1UEAwwDeDIyMBKkEDAOMQwwCgYDVQQDDAN4MjMwEqQQMA4xDDAK
--BgNVBAMMA3gyNDASpBAwDjEMMAoGA1UEAwwDeDI1MBKkEDAOMQwwCgYDVQQDDAN4
--MjYwEqQQMA4xDDAKBgNVBAMMA3gyNzASpBAwDjEMMAoGA1UEAwwDeDI4MBKkEDAO
--MQwwCgYDVQQDDAN4MjkwEqQQMA4xDDAKBgNVBAMMA3gzMDASpBAwDjEMMAoGA1UE
--AwwDeDMxMBKkEDAOMQwwCgYDVQQDDAN4MzIwEqQQMA4xDDAKBgNVBAMMA3gzMzAS
--pBAwDjEMMAoGA1UEAwwDeDM0MBKkEDAOMQwwCgYDVQQDDAN4MzUwEqQQMA4xDDAK
--BgNVBAMMA3gzNjASpBAwDjEMMAoGA1UEAwwDeDM3MBKkEDAOMQwwCgYDVQQDDAN4
--MzgwEqQQMA4xDDAKBgNVBAMMA3gzOTASpBAwDjEMMAoGA1UEAwwDeDQwMBKkEDAO
--MQwwCgYDVQQDDAN4NDEwEqQQMA4xDDAKBgNVBAMMA3g0MjASpBAwDjEMMAoGA1UE
--AwwDeDQzMBKkEDAOMQwwCgYDVQQDDAN4NDQwEqQQMA4xDDAKBgNVBAMMA3g0NTAS
--pBAwDjEMMAoGA1UEAwwDeDQ2MBKkEDAOMQwwCgYDVQQDDAN4NDcwEqQQMA4xDDAK
--BgNVBAMMA3g0ODASpBAwDjEMMAoGA1UEAwwDeDQ5MBKkEDAOMQwwCgYDVQQDDAN4
--NTAwEqQQMA4xDDAKBgNVBAMMA3g1MTASpBAwDjEMMAoGA1UEAwwDeDUyMBKkEDAO
--MQwwCgYDVQQDDAN4NTMwEqQQMA4xDDAKBgNVBAMMA3g1NDASpBAwDjEMMAoGA1UE
--AwwDeDU1MBKkEDAOMQwwCgYDVQQDDAN4NTYwEqQQMA4xDDAKBgNVBAMMA3g1NzAS
--pBAwDjEMMAoGA1UEAwwDeDU4MBKkEDAOMQwwCgYDVQQDDAN4NTkwEqQQMA4xDDAK
--BgNVBAMMA3g2MDASpBAwDjEMMAoGA1UEAwwDeDYxMBKkEDAOMQwwCgYDVQQDDAN4
--NjIwEqQQMA4xDDAKBgNVBAMMA3g2MzASpBAwDjEMMAoGA1UEAwwDeDY0MBKkEDAO
--MQwwCgYDVQQDDAN4NjUwEqQQMA4xDDAKBgNVBAMMA3g2NjASpBAwDjEMMAoGA1UE
--AwwDeDY3MBKkEDAOMQwwCgYDVQQDDAN4NjgwEqQQMA4xDDAKBgNVBAMMA3g2OTAS
--pBAwDjEMMAoGA1UEAwwDeDcwMBKkEDAOMQwwCgYDVQQDDAN4NzEwEqQQMA4xDDAK
--BgNVBAMMA3g3MjASpBAwDjEMMAoGA1UEAwwDeDczMBKkEDAOMQwwCgYDVQQDDAN4
--NzQwEqQQMA4xDDAKBgNVBAMMA3g3NTASpBAwDjEMMAoGA1UEAwwDeDc2MBKkEDAO
--MQwwCgYDVQQDDAN4NzcwEqQQMA4xDDAKBgNVBAMMA3g3ODASpBAwDjEMMAoGA1UE
--AwwDeDc5MBKkEDAOMQwwCgYDVQQDDAN4ODAwEqQQMA4xDDAKBgNVBAMMA3g4MTAS
--pBAwDjEMMAoGA1UEAwwDeDgyMBKkEDAOMQwwCgYDVQQDDAN4ODMwEqQQMA4xDDAK
--BgNVBAMMA3g4NDASpBAwDjEMMAoGA1UEAwwDeDg1MBKkEDAOMQwwCgYDVQQDDAN4
--ODYwEqQQMA4xDDAKBgNVBAMMA3g4NzASpBAwDjEMMAoGA1UEAwwDeDg4MBKkEDAO
--MQwwCgYDVQQDDAN4ODkwEqQQMA4xDDAKBgNVBAMMA3g5MDASpBAwDjEMMAoGA1UE
--AwwDeDkxMBKkEDAOMQwwCgYDVQQDDAN4OTIwEqQQMA4xDDAKBgNVBAMMA3g5MzAS
--pBAwDjEMMAoGA1UEAwwDeDk0MBKkEDAOMQwwCgYDVQQDDAN4OTUwEqQQMA4xDDAK
--BgNVBAMMA3g5NjASpBAwDjEMMAoGA1UEAwwDeDk3MBKkEDAOMQwwCgYDVQQDDAN4
--OTgwEqQQMA4xDDAKBgNVBAMMA3g5OTATpBEwDzENMAsGA1UEAwwEeDEwMDATpBEw
--DzENMAsGA1UEAwwEeDEwMTATpBEwDzENMAsGA1UEAwwEeDEwMjATpBEwDzENMAsG
--A1UEAwwEeDEwMzATpBEwDzENMAsGA1UEAwwEeDEwNDATpBEwDzENMAsGA1UEAwwE
--eDEwNTATpBEwDzENMAsGA1UEAwwEeDEwNjATpBEwDzENMAsGA1UEAwwEeDEwNzAT
--pBEwDzENMAsGA1UEAwwEeDEwODATpBEwDzENMAsGA1UEAwwEeDEwOTATpBEwDzEN
--MAsGA1UEAwwEeDExMDATpBEwDzENMAsGA1UEAwwEeDExMTATpBEwDzENMAsGA1UE
--AwwEeDExMjATpBEwDzENMAsGA1UEAwwEeDExMzATpBEwDzENMAsGA1UEAwwEeDEx
--NDATpBEwDzENMAsGA1UEAwwEeDExNTATpBEwDzENMAsGA1UEAwwEeDExNjATpBEw
--DzENMAsGA1UEAwwEeDExNzATpBEwDzENMAsGA1UEAwwEeDExODATpBEwDzENMAsG
--A1UEAwwEeDExOTATpBEwDzENMAsGA1UEAwwEeDEyMDATpBEwDzENMAsGA1UEAwwE
--eDEyMTATpBEwDzENMAsGA1UEAwwEeDEyMjATpBEwDzENMAsGA1UEAwwEeDEyMzAT
--pBEwDzENMAsGA1UEAwwEeDEyNDATpBEwDzENMAsGA1UEAwwEeDEyNTATpBEwDzEN
--MAsGA1UEAwwEeDEyNjATpBEwDzENMAsGA1UEAwwEeDEyNzATpBEwDzENMAsGA1UE
--AwwEeDEyODATpBEwDzENMAsGA1UEAwwEeDEyOTATpBEwDzENMAsGA1UEAwwEeDEz
--MDATpBEwDzENMAsGA1UEAwwEeDEzMTATpBEwDzENMAsGA1UEAwwEeDEzMjATpBEw
--DzENMAsGA1UEAwwEeDEzMzATpBEwDzENMAsGA1UEAwwEeDEzNDATpBEwDzENMAsG
--A1UEAwwEeDEzNTATpBEwDzENMAsGA1UEAwwEeDEzNjATpBEwDzENMAsGA1UEAwwE
--eDEzNzATpBEwDzENMAsGA1UEAwwEeDEzODATpBEwDzENMAsGA1UEAwwEeDEzOTAT
--pBEwDzENMAsGA1UEAwwEeDE0MDATpBEwDzENMAsGA1UEAwwEeDE0MTATpBEwDzEN
--MAsGA1UEAwwEeDE0MjATpBEwDzENMAsGA1UEAwwEeDE0MzATpBEwDzENMAsGA1UE
--AwwEeDE0NDATpBEwDzENMAsGA1UEAwwEeDE0NTATpBEwDzENMAsGA1UEAwwEeDE0
--NjATpBEwDzENMAsGA1UEAwwEeDE0NzATpBEwDzENMAsGA1UEAwwEeDE0ODATpBEw
--DzENMAsGA1UEAwwEeDE0OTATpBEwDzENMAsGA1UEAwwEeDE1MDATpBEwDzENMAsG
--A1UEAwwEeDE1MTATpBEwDzENMAsGA1UEAwwEeDE1MjATpBEwDzENMAsGA1UEAwwE
--eDE1MzATpBEwDzENMAsGA1UEAwwEeDE1NDATpBEwDzENMAsGA1UEAwwEeDE1NTAT
--pBEwDzENMAsGA1UEAwwEeDE1NjATpBEwDzENMAsGA1UEAwwEeDE1NzATpBEwDzEN
--MAsGA1UEAwwEeDE1ODATpBEwDzENMAsGA1UEAwwEeDE1OTATpBEwDzENMAsGA1UE
--AwwEeDE2MDATpBEwDzENMAsGA1UEAwwEeDE2MTATpBEwDzENMAsGA1UEAwwEeDE2
--MjATpBEwDzENMAsGA1UEAwwEeDE2MzATpBEwDzENMAsGA1UEAwwEeDE2NDATpBEw
--DzENMAsGA1UEAwwEeDE2NTATpBEwDzENMAsGA1UEAwwEeDE2NjATpBEwDzENMAsG
--A1UEAwwEeDE2NzATpBEwDzENMAsGA1UEAwwEeDE2ODATpBEwDzENMAsGA1UEAwwE
--eDE2OTATpBEwDzENMAsGA1UEAwwEeDE3MDATpBEwDzENMAsGA1UEAwwEeDE3MTAT
--pBEwDzENMAsGA1UEAwwEeDE3MjATpBEwDzENMAsGA1UEAwwEeDE3MzATpBEwDzEN
--MAsGA1UEAwwEeDE3NDATpBEwDzENMAsGA1UEAwwEeDE3NTATpBEwDzENMAsGA1UE
--AwwEeDE3NjATpBEwDzENMAsGA1UEAwwEeDE3NzATpBEwDzENMAsGA1UEAwwEeDE3
--ODATpBEwDzENMAsGA1UEAwwEeDE3OTATpBEwDzENMAsGA1UEAwwEeDE4MDATpBEw
--DzENMAsGA1UEAwwEeDE4MTATpBEwDzENMAsGA1UEAwwEeDE4MjATpBEwDzENMAsG
--A1UEAwwEeDE4MzATpBEwDzENMAsGA1UEAwwEeDE4NDATpBEwDzENMAsGA1UEAwwE
--eDE4NTATpBEwDzENMAsGA1UEAwwEeDE4NjATpBEwDzENMAsGA1UEAwwEeDE4NzAT
--pBEwDzENMAsGA1UEAwwEeDE4ODATpBEwDzENMAsGA1UEAwwEeDE4OTATpBEwDzEN
--MAsGA1UEAwwEeDE5MDATpBEwDzENMAsGA1UEAwwEeDE5MTATpBEwDzENMAsGA1UE
--AwwEeDE5MjATpBEwDzENMAsGA1UEAwwEeDE5MzATpBEwDzENMAsGA1UEAwwEeDE5
--NDATpBEwDzENMAsGA1UEAwwEeDE5NTATpBEwDzENMAsGA1UEAwwEeDE5NjATpBEw
--DzENMAsGA1UEAwwEeDE5NzATpBEwDzENMAsGA1UEAwwEeDE5ODATpBEwDzENMAsG
--A1UEAwwEeDE5OTATpBEwDzENMAsGA1UEAwwEeDIwMDATpBEwDzENMAsGA1UEAwwE
--eDIwMTATpBEwDzENMAsGA1UEAwwEeDIwMjATpBEwDzENMAsGA1UEAwwEeDIwMzAT
--pBEwDzENMAsGA1UEAwwEeDIwNDATpBEwDzENMAsGA1UEAwwEeDIwNTATpBEwDzEN
--MAsGA1UEAwwEeDIwNjATpBEwDzENMAsGA1UEAwwEeDIwNzATpBEwDzENMAsGA1UE
--AwwEeDIwODATpBEwDzENMAsGA1UEAwwEeDIwOTATpBEwDzENMAsGA1UEAwwEeDIx
--MDATpBEwDzENMAsGA1UEAwwEeDIxMTATpBEwDzENMAsGA1UEAwwEeDIxMjATpBEw
--DzENMAsGA1UEAwwEeDIxMzATpBEwDzENMAsGA1UEAwwEeDIxNDATpBEwDzENMAsG
--A1UEAwwEeDIxNTATpBEwDzENMAsGA1UEAwwEeDIxNjATpBEwDzENMAsGA1UEAwwE
--eDIxNzATpBEwDzENMAsGA1UEAwwEeDIxODATpBEwDzENMAsGA1UEAwwEeDIxOTAT
--pBEwDzENMAsGA1UEAwwEeDIyMDATpBEwDzENMAsGA1UEAwwEeDIyMTATpBEwDzEN
--MAsGA1UEAwwEeDIyMjATpBEwDzENMAsGA1UEAwwEeDIyMzATpBEwDzENMAsGA1UE
--AwwEeDIyNDATpBEwDzENMAsGA1UEAwwEeDIyNTATpBEwDzENMAsGA1UEAwwEeDIy
--NjATpBEwDzENMAsGA1UEAwwEeDIyNzATpBEwDzENMAsGA1UEAwwEeDIyODATpBEw
--DzENMAsGA1UEAwwEeDIyOTATpBEwDzENMAsGA1UEAwwEeDIzMDATpBEwDzENMAsG
--A1UEAwwEeDIzMTATpBEwDzENMAsGA1UEAwwEeDIzMjATpBEwDzENMAsGA1UEAwwE
--eDIzMzATpBEwDzENMAsGA1UEAwwEeDIzNDATpBEwDzENMAsGA1UEAwwEeDIzNTAT
--pBEwDzENMAsGA1UEAwwEeDIzNjATpBEwDzENMAsGA1UEAwwEeDIzNzATpBEwDzEN
--MAsGA1UEAwwEeDIzODATpBEwDzENMAsGA1UEAwwEeDIzOTATpBEwDzENMAsGA1UE
--AwwEeDI0MDATpBEwDzENMAsGA1UEAwwEeDI0MTATpBEwDzENMAsGA1UEAwwEeDI0
--MjATpBEwDzENMAsGA1UEAwwEeDI0MzATpBEwDzENMAsGA1UEAwwEeDI0NDATpBEw
--DzENMAsGA1UEAwwEeDI0NTATpBEwDzENMAsGA1UEAwwEeDI0NjATpBEwDzENMAsG
--A1UEAwwEeDI0NzATpBEwDzENMAsGA1UEAwwEeDI0ODATpBEwDzENMAsGA1UEAwwE
--eDI0OTATpBEwDzENMAsGA1UEAwwEeDI1MDATpBEwDzENMAsGA1UEAwwEeDI1MTAT
--pBEwDzENMAsGA1UEAwwEeDI1MjATpBEwDzENMAsGA1UEAwwEeDI1MzATpBEwDzEN
--MAsGA1UEAwwEeDI1NDATpBEwDzENMAsGA1UEAwwEeDI1NTATpBEwDzENMAsGA1UE
--AwwEeDI1NjATpBEwDzENMAsGA1UEAwwEeDI1NzATpBEwDzENMAsGA1UEAwwEeDI1
--ODATpBEwDzENMAsGA1UEAwwEeDI1OTATpBEwDzENMAsGA1UEAwwEeDI2MDATpBEw
--DzENMAsGA1UEAwwEeDI2MTATpBEwDzENMAsGA1UEAwwEeDI2MjATpBEwDzENMAsG
--A1UEAwwEeDI2MzATpBEwDzENMAsGA1UEAwwEeDI2NDATpBEwDzENMAsGA1UEAwwE
--eDI2NTATpBEwDzENMAsGA1UEAwwEeDI2NjATpBEwDzENMAsGA1UEAwwEeDI2NzAT
--pBEwDzENMAsGA1UEAwwEeDI2ODATpBEwDzENMAsGA1UEAwwEeDI2OTATpBEwDzEN
--MAsGA1UEAwwEeDI3MDATpBEwDzENMAsGA1UEAwwEeDI3MTATpBEwDzENMAsGA1UE
--AwwEeDI3MjATpBEwDzENMAsGA1UEAwwEeDI3MzATpBEwDzENMAsGA1UEAwwEeDI3
--NDATpBEwDzENMAsGA1UEAwwEeDI3NTATpBEwDzENMAsGA1UEAwwEeDI3NjATpBEw
--DzENMAsGA1UEAwwEeDI3NzATpBEwDzENMAsGA1UEAwwEeDI3ODATpBEwDzENMAsG
--A1UEAwwEeDI3OTATpBEwDzENMAsGA1UEAwwEeDI4MDATpBEwDzENMAsGA1UEAwwE
--eDI4MTATpBEwDzENMAsGA1UEAwwEeDI4MjATpBEwDzENMAsGA1UEAwwEeDI4MzAT
--pBEwDzENMAsGA1UEAwwEeDI4NDATpBEwDzENMAsGA1UEAwwEeDI4NTATpBEwDzEN
--MAsGA1UEAwwEeDI4NjATpBEwDzENMAsGA1UEAwwEeDI4NzATpBEwDzENMAsGA1UE
--AwwEeDI4ODATpBEwDzENMAsGA1UEAwwEeDI4OTATpBEwDzENMAsGA1UEAwwEeDI5
--MDATpBEwDzENMAsGA1UEAwwEeDI5MTATpBEwDzENMAsGA1UEAwwEeDI5MjATpBEw
--DzENMAsGA1UEAwwEeDI5MzATpBEwDzENMAsGA1UEAwwEeDI5NDATpBEwDzENMAsG
--A1UEAwwEeDI5NTATpBEwDzENMAsGA1UEAwwEeDI5NjATpBEwDzENMAsGA1UEAwwE
--eDI5NzATpBEwDzENMAsGA1UEAwwEeDI5ODATpBEwDzENMAsGA1UEAwwEeDI5OTAT
--pBEwDzENMAsGA1UEAwwEeDMwMDATpBEwDzENMAsGA1UEAwwEeDMwMTATpBEwDzEN
--MAsGA1UEAwwEeDMwMjATpBEwDzENMAsGA1UEAwwEeDMwMzATpBEwDzENMAsGA1UE
--AwwEeDMwNDATpBEwDzENMAsGA1UEAwwEeDMwNTATpBEwDzENMAsGA1UEAwwEeDMw
--NjATpBEwDzENMAsGA1UEAwwEeDMwNzATpBEwDzENMAsGA1UEAwwEeDMwODATpBEw
--DzENMAsGA1UEAwwEeDMwOTATpBEwDzENMAsGA1UEAwwEeDMxMDATpBEwDzENMAsG
--A1UEAwwEeDMxMTATpBEwDzENMAsGA1UEAwwEeDMxMjATpBEwDzENMAsGA1UEAwwE
--eDMxMzATpBEwDzENMAsGA1UEAwwEeDMxNDATpBEwDzENMAsGA1UEAwwEeDMxNTAT
--pBEwDzENMAsGA1UEAwwEeDMxNjATpBEwDzENMAsGA1UEAwwEeDMxNzATpBEwDzEN
--MAsGA1UEAwwEeDMxODATpBEwDzENMAsGA1UEAwwEeDMxOTATpBEwDzENMAsGA1UE
--AwwEeDMyMDATpBEwDzENMAsGA1UEAwwEeDMyMTATpBEwDzENMAsGA1UEAwwEeDMy
--MjATpBEwDzENMAsGA1UEAwwEeDMyMzATpBEwDzENMAsGA1UEAwwEeDMyNDATpBEw
--DzENMAsGA1UEAwwEeDMyNTATpBEwDzENMAsGA1UEAwwEeDMyNjATpBEwDzENMAsG
--A1UEAwwEeDMyNzATpBEwDzENMAsGA1UEAwwEeDMyODATpBEwDzENMAsGA1UEAwwE
--eDMyOTATpBEwDzENMAsGA1UEAwwEeDMzMDATpBEwDzENMAsGA1UEAwwEeDMzMTAT
--pBEwDzENMAsGA1UEAwwEeDMzMjATpBEwDzENMAsGA1UEAwwEeDMzMzATpBEwDzEN
--MAsGA1UEAwwEeDMzNDATpBEwDzENMAsGA1UEAwwEeDMzNTATpBEwDzENMAsGA1UE
--AwwEeDMzNjATpBEwDzENMAsGA1UEAwwEeDMzNzATpBEwDzENMAsGA1UEAwwEeDMz
--ODATpBEwDzENMAsGA1UEAwwEeDMzOTATpBEwDzENMAsGA1UEAwwEeDM0MDATpBEw
--DzENMAsGA1UEAwwEeDM0MTATpBEwDzENMAsGA1UEAwwEeDM0MjATpBEwDzENMAsG
--A1UEAwwEeDM0MzATpBEwDzENMAsGA1UEAwwEeDM0NDATpBEwDzENMAsGA1UEAwwE
--eDM0NTATpBEwDzENMAsGA1UEAwwEeDM0NjATpBEwDzENMAsGA1UEAwwEeDM0NzAT
--pBEwDzENMAsGA1UEAwwEeDM0ODATpBEwDzENMAsGA1UEAwwEeDM0OTATpBEwDzEN
--MAsGA1UEAwwEeDM1MDATpBEwDzENMAsGA1UEAwwEeDM1MTATpBEwDzENMAsGA1UE
--AwwEeDM1MjATpBEwDzENMAsGA1UEAwwEeDM1MzATpBEwDzENMAsGA1UEAwwEeDM1
--NDATpBEwDzENMAsGA1UEAwwEeDM1NTATpBEwDzENMAsGA1UEAwwEeDM1NjATpBEw
--DzENMAsGA1UEAwwEeDM1NzATpBEwDzENMAsGA1UEAwwEeDM1ODATpBEwDzENMAsG
--A1UEAwwEeDM1OTATpBEwDzENMAsGA1UEAwwEeDM2MDATpBEwDzENMAsGA1UEAwwE
--eDM2MTATpBEwDzENMAsGA1UEAwwEeDM2MjATpBEwDzENMAsGA1UEAwwEeDM2MzAT
--pBEwDzENMAsGA1UEAwwEeDM2NDATpBEwDzENMAsGA1UEAwwEeDM2NTATpBEwDzEN
--MAsGA1UEAwwEeDM2NjATpBEwDzENMAsGA1UEAwwEeDM2NzATpBEwDzENMAsGA1UE
--AwwEeDM2ODATpBEwDzENMAsGA1UEAwwEeDM2OTATpBEwDzENMAsGA1UEAwwEeDM3
--MDATpBEwDzENMAsGA1UEAwwEeDM3MTATpBEwDzENMAsGA1UEAwwEeDM3MjATpBEw
--DzENMAsGA1UEAwwEeDM3MzATpBEwDzENMAsGA1UEAwwEeDM3NDATpBEwDzENMAsG
--A1UEAwwEeDM3NTATpBEwDzENMAsGA1UEAwwEeDM3NjATpBEwDzENMAsGA1UEAwwE
--eDM3NzATpBEwDzENMAsGA1UEAwwEeDM3ODATpBEwDzENMAsGA1UEAwwEeDM3OTAT
--pBEwDzENMAsGA1UEAwwEeDM4MDATpBEwDzENMAsGA1UEAwwEeDM4MTATpBEwDzEN
--MAsGA1UEAwwEeDM4MjATpBEwDzENMAsGA1UEAwwEeDM4MzATpBEwDzENMAsGA1UE
--AwwEeDM4NDATpBEwDzENMAsGA1UEAwwEeDM4NTATpBEwDzENMAsGA1UEAwwEeDM4
--NjATpBEwDzENMAsGA1UEAwwEeDM4NzATpBEwDzENMAsGA1UEAwwEeDM4ODATpBEw
--DzENMAsGA1UEAwwEeDM4OTATpBEwDzENMAsGA1UEAwwEeDM5MDATpBEwDzENMAsG
--A1UEAwwEeDM5MTATpBEwDzENMAsGA1UEAwwEeDM5MjATpBEwDzENMAsGA1UEAwwE
--eDM5MzATpBEwDzENMAsGA1UEAwwEeDM5NDATpBEwDzENMAsGA1UEAwwEeDM5NTAT
--pBEwDzENMAsGA1UEAwwEeDM5NjATpBEwDzENMAsGA1UEAwwEeDM5NzATpBEwDzEN
--MAsGA1UEAwwEeDM5ODATpBEwDzENMAsGA1UEAwwEeDM5OTATpBEwDzENMAsGA1UE
--AwwEeDQwMDATpBEwDzENMAsGA1UEAwwEeDQwMTATpBEwDzENMAsGA1UEAwwEeDQw
--MjATpBEwDzENMAsGA1UEAwwEeDQwMzATpBEwDzENMAsGA1UEAwwEeDQwNDATpBEw
--DzENMAsGA1UEAwwEeDQwNTATpBEwDzENMAsGA1UEAwwEeDQwNjATpBEwDzENMAsG
--A1UEAwwEeDQwNzATpBEwDzENMAsGA1UEAwwEeDQwODATpBEwDzENMAsGA1UEAwwE
--eDQwOTATpBEwDzENMAsGA1UEAwwEeDQxMDATpBEwDzENMAsGA1UEAwwEeDQxMTAT
--pBEwDzENMAsGA1UEAwwEeDQxMjATpBEwDzENMAsGA1UEAwwEeDQxMzATpBEwDzEN
--MAsGA1UEAwwEeDQxNDATpBEwDzENMAsGA1UEAwwEeDQxNTATpBEwDzENMAsGA1UE
--AwwEeDQxNjATpBEwDzENMAsGA1UEAwwEeDQxNzATpBEwDzENMAsGA1UEAwwEeDQx
--ODATpBEwDzENMAsGA1UEAwwEeDQxOTATpBEwDzENMAsGA1UEAwwEeDQyMDATpBEw
--DzENMAsGA1UEAwwEeDQyMTATpBEwDzENMAsGA1UEAwwEeDQyMjATpBEwDzENMAsG
--A1UEAwwEeDQyMzATpBEwDzENMAsGA1UEAwwEeDQyNDATpBEwDzENMAsGA1UEAwwE
--eDQyNTATpBEwDzENMAsGA1UEAwwEeDQyNjATpBEwDzENMAsGA1UEAwwEeDQyNzAT
--pBEwDzENMAsGA1UEAwwEeDQyODATpBEwDzENMAsGA1UEAwwEeDQyOTATpBEwDzEN
--MAsGA1UEAwwEeDQzMDATpBEwDzENMAsGA1UEAwwEeDQzMTATpBEwDzENMAsGA1UE
--AwwEeDQzMjATpBEwDzENMAsGA1UEAwwEeDQzMzATpBEwDzENMAsGA1UEAwwEeDQz
--NDATpBEwDzENMAsGA1UEAwwEeDQzNTATpBEwDzENMAsGA1UEAwwEeDQzNjATpBEw
--DzENMAsGA1UEAwwEeDQzNzATpBEwDzENMAsGA1UEAwwEeDQzODATpBEwDzENMAsG
--A1UEAwwEeDQzOTATpBEwDzENMAsGA1UEAwwEeDQ0MDATpBEwDzENMAsGA1UEAwwE
--eDQ0MTATpBEwDzENMAsGA1UEAwwEeDQ0MjATpBEwDzENMAsGA1UEAwwEeDQ0MzAT
--pBEwDzENMAsGA1UEAwwEeDQ0NDATpBEwDzENMAsGA1UEAwwEeDQ0NTATpBEwDzEN
--MAsGA1UEAwwEeDQ0NjATpBEwDzENMAsGA1UEAwwEeDQ0NzATpBEwDzENMAsGA1UE
--AwwEeDQ0ODATpBEwDzENMAsGA1UEAwwEeDQ0OTATpBEwDzENMAsGA1UEAwwEeDQ1
--MDATpBEwDzENMAsGA1UEAwwEeDQ1MTATpBEwDzENMAsGA1UEAwwEeDQ1MjATpBEw
--DzENMAsGA1UEAwwEeDQ1MzATpBEwDzENMAsGA1UEAwwEeDQ1NDATpBEwDzENMAsG
--A1UEAwwEeDQ1NTATpBEwDzENMAsGA1UEAwwEeDQ1NjATpBEwDzENMAsGA1UEAwwE
--eDQ1NzATpBEwDzENMAsGA1UEAwwEeDQ1ODATpBEwDzENMAsGA1UEAwwEeDQ1OTAT
--pBEwDzENMAsGA1UEAwwEeDQ2MDATpBEwDzENMAsGA1UEAwwEeDQ2MTATpBEwDzEN
--MAsGA1UEAwwEeDQ2MjATpBEwDzENMAsGA1UEAwwEeDQ2MzATpBEwDzENMAsGA1UE
--AwwEeDQ2NDATpBEwDzENMAsGA1UEAwwEeDQ2NTATpBEwDzENMAsGA1UEAwwEeDQ2
--NjATpBEwDzENMAsGA1UEAwwEeDQ2NzATpBEwDzENMAsGA1UEAwwEeDQ2ODATpBEw
--DzENMAsGA1UEAwwEeDQ2OTATpBEwDzENMAsGA1UEAwwEeDQ3MDATpBEwDzENMAsG
--A1UEAwwEeDQ3MTATpBEwDzENMAsGA1UEAwwEeDQ3MjATpBEwDzENMAsGA1UEAwwE
--eDQ3MzATpBEwDzENMAsGA1UEAwwEeDQ3NDATpBEwDzENMAsGA1UEAwwEeDQ3NTAT
--pBEwDzENMAsGA1UEAwwEeDQ3NjATpBEwDzENMAsGA1UEAwwEeDQ3NzATpBEwDzEN
--MAsGA1UEAwwEeDQ3ODATpBEwDzENMAsGA1UEAwwEeDQ3OTATpBEwDzENMAsGA1UE
--AwwEeDQ4MDATpBEwDzENMAsGA1UEAwwEeDQ4MTATpBEwDzENMAsGA1UEAwwEeDQ4
--MjATpBEwDzENMAsGA1UEAwwEeDQ4MzATpBEwDzENMAsGA1UEAwwEeDQ4NDATpBEw
--DzENMAsGA1UEAwwEeDQ4NTATpBEwDzENMAsGA1UEAwwEeDQ4NjATpBEwDzENMAsG
--A1UEAwwEeDQ4NzATpBEwDzENMAsGA1UEAwwEeDQ4ODATpBEwDzENMAsGA1UEAwwE
--eDQ4OTATpBEwDzENMAsGA1UEAwwEeDQ5MDATpBEwDzENMAsGA1UEAwwEeDQ5MTAT
--pBEwDzENMAsGA1UEAwwEeDQ5MjATpBEwDzENMAsGA1UEAwwEeDQ5MzATpBEwDzEN
--MAsGA1UEAwwEeDQ5NDATpBEwDzENMAsGA1UEAwwEeDQ5NTATpBEwDzENMAsGA1UE
--AwwEeDQ5NjATpBEwDzENMAsGA1UEAwwEeDQ5NzATpBEwDzENMAsGA1UEAwwEeDQ5
--ODATpBEwDzENMAsGA1UEAwwEeDQ5OTATpBEwDzENMAsGA1UEAwwEeDUwMDATpBEw
--DzENMAsGA1UEAwwEeDUwMTATpBEwDzENMAsGA1UEAwwEeDUwMjATpBEwDzENMAsG
--A1UEAwwEeDUwMzATpBEwDzENMAsGA1UEAwwEeDUwNDATpBEwDzENMAsGA1UEAwwE
--eDUwNTATpBEwDzENMAsGA1UEAwwEeDUwNjATpBEwDzENMAsGA1UEAwwEeDUwNzAT
--pBEwDzENMAsGA1UEAwwEeDUwODATpBEwDzENMAsGA1UEAwwEeDUwOTATpBEwDzEN
--MAsGA1UEAwwEeDUxMDATpBEwDzENMAsGA1UEAwwEeDUxMTATpBEwDzENMAsGA1UE
--AwwEeDUxMjATpBEwDzENMAsGA1UEAwwEeDUxMzATpBEwDzENMAsGA1UEAwwEeDUx
--NDATpBEwDzENMAsGA1UEAwwEeDUxNTATpBEwDzENMAsGA1UEAwwEeDUxNjATpBEw
--DzENMAsGA1UEAwwEeDUxNzATpBEwDzENMAsGA1UEAwwEeDUxODATpBEwDzENMAsG
--A1UEAwwEeDUxOTATpBEwDzENMAsGA1UEAwwEeDUyMDATpBEwDzENMAsGA1UEAwwE
--eDUyMTATpBEwDzENMAsGA1UEAwwEeDUyMjATpBEwDzENMAsGA1UEAwwEeDUyMzAT
--pBEwDzENMAsGA1UEAwwEeDUyNDATpBEwDzENMAsGA1UEAwwEeDUyNTATpBEwDzEN
--MAsGA1UEAwwEeDUyNjATpBEwDzENMAsGA1UEAwwEeDUyNzATpBEwDzENMAsGA1UE
--AwwEeDUyODATpBEwDzENMAsGA1UEAwwEeDUyOTATpBEwDzENMAsGA1UEAwwEeDUz
--MDATpBEwDzENMAsGA1UEAwwEeDUzMTATpBEwDzENMAsGA1UEAwwEeDUzMjATpBEw
--DzENMAsGA1UEAwwEeDUzMzATpBEwDzENMAsGA1UEAwwEeDUzNDATpBEwDzENMAsG
--A1UEAwwEeDUzNTATpBEwDzENMAsGA1UEAwwEeDUzNjATpBEwDzENMAsGA1UEAwwE
--eDUzNzATpBEwDzENMAsGA1UEAwwEeDUzODATpBEwDzENMAsGA1UEAwwEeDUzOTAT
--pBEwDzENMAsGA1UEAwwEeDU0MDATpBEwDzENMAsGA1UEAwwEeDU0MTATpBEwDzEN
--MAsGA1UEAwwEeDU0MjATpBEwDzENMAsGA1UEAwwEeDU0MzATpBEwDzENMAsGA1UE
--AwwEeDU0NDATpBEwDzENMAsGA1UEAwwEeDU0NTATpBEwDzENMAsGA1UEAwwEeDU0
--NjATpBEwDzENMAsGA1UEAwwEeDU0NzATpBEwDzENMAsGA1UEAwwEeDU0ODATpBEw
--DzENMAsGA1UEAwwEeDU0OTATpBEwDzENMAsGA1UEAwwEeDU1MDATpBEwDzENMAsG
--A1UEAwwEeDU1MTATpBEwDzENMAsGA1UEAwwEeDU1MjATpBEwDzENMAsGA1UEAwwE
--eDU1MzATpBEwDzENMAsGA1UEAwwEeDU1NDATpBEwDzENMAsGA1UEAwwEeDU1NTAT
--pBEwDzENMAsGA1UEAwwEeDU1NjATpBEwDzENMAsGA1UEAwwEeDU1NzATpBEwDzEN
--MAsGA1UEAwwEeDU1ODATpBEwDzENMAsGA1UEAwwEeDU1OTATpBEwDzENMAsGA1UE
--AwwEeDU2MDATpBEwDzENMAsGA1UEAwwEeDU2MTATpBEwDzENMAsGA1UEAwwEeDU2
--MjATpBEwDzENMAsGA1UEAwwEeDU2MzATpBEwDzENMAsGA1UEAwwEeDU2NDATpBEw
--DzENMAsGA1UEAwwEeDU2NTATpBEwDzENMAsGA1UEAwwEeDU2NjATpBEwDzENMAsG
--A1UEAwwEeDU2NzATpBEwDzENMAsGA1UEAwwEeDU2ODATpBEwDzENMAsGA1UEAwwE
--eDU2OTATpBEwDzENMAsGA1UEAwwEeDU3MDATpBEwDzENMAsGA1UEAwwEeDU3MTAT
--pBEwDzENMAsGA1UEAwwEeDU3MjATpBEwDzENMAsGA1UEAwwEeDU3MzATpBEwDzEN
--MAsGA1UEAwwEeDU3NDATpBEwDzENMAsGA1UEAwwEeDU3NTATpBEwDzENMAsGA1UE
--AwwEeDU3NjATpBEwDzENMAsGA1UEAwwEeDU3NzATpBEwDzENMAsGA1UEAwwEeDU3
--ODATpBEwDzENMAsGA1UEAwwEeDU3OTATpBEwDzENMAsGA1UEAwwEeDU4MDATpBEw
--DzENMAsGA1UEAwwEeDU4MTATpBEwDzENMAsGA1UEAwwEeDU4MjATpBEwDzENMAsG
--A1UEAwwEeDU4MzATpBEwDzENMAsGA1UEAwwEeDU4NDATpBEwDzENMAsGA1UEAwwE
--eDU4NTATpBEwDzENMAsGA1UEAwwEeDU4NjATpBEwDzENMAsGA1UEAwwEeDU4NzAT
--pBEwDzENMAsGA1UEAwwEeDU4ODATpBEwDzENMAsGA1UEAwwEeDU4OTATpBEwDzEN
--MAsGA1UEAwwEeDU5MDATpBEwDzENMAsGA1UEAwwEeDU5MTATpBEwDzENMAsGA1UE
--AwwEeDU5MjATpBEwDzENMAsGA1UEAwwEeDU5MzATpBEwDzENMAsGA1UEAwwEeDU5
--NDATpBEwDzENMAsGA1UEAwwEeDU5NTATpBEwDzENMAsGA1UEAwwEeDU5NjATpBEw
--DzENMAsGA1UEAwwEeDU5NzATpBEwDzENMAsGA1UEAwwEeDU5ODATpBEwDzENMAsG
--A1UEAwwEeDU5OTATpBEwDzENMAsGA1UEAwwEeDYwMDATpBEwDzENMAsGA1UEAwwE
--eDYwMTATpBEwDzENMAsGA1UEAwwEeDYwMjATpBEwDzENMAsGA1UEAwwEeDYwMzAT
--pBEwDzENMAsGA1UEAwwEeDYwNDATpBEwDzENMAsGA1UEAwwEeDYwNTATpBEwDzEN
--MAsGA1UEAwwEeDYwNjATpBEwDzENMAsGA1UEAwwEeDYwNzATpBEwDzENMAsGA1UE
--AwwEeDYwODATpBEwDzENMAsGA1UEAwwEeDYwOTATpBEwDzENMAsGA1UEAwwEeDYx
--MDATpBEwDzENMAsGA1UEAwwEeDYxMTATpBEwDzENMAsGA1UEAwwEeDYxMjATpBEw
--DzENMAsGA1UEAwwEeDYxMzATpBEwDzENMAsGA1UEAwwEeDYxNDATpBEwDzENMAsG
--A1UEAwwEeDYxNTATpBEwDzENMAsGA1UEAwwEeDYxNjATpBEwDzENMAsGA1UEAwwE
--eDYxNzATpBEwDzENMAsGA1UEAwwEeDYxODATpBEwDzENMAsGA1UEAwwEeDYxOTAT
--pBEwDzENMAsGA1UEAwwEeDYyMDATpBEwDzENMAsGA1UEAwwEeDYyMTATpBEwDzEN
--MAsGA1UEAwwEeDYyMjATpBEwDzENMAsGA1UEAwwEeDYyMzATpBEwDzENMAsGA1UE
--AwwEeDYyNDATpBEwDzENMAsGA1UEAwwEeDYyNTATpBEwDzENMAsGA1UEAwwEeDYy
--NjATpBEwDzENMAsGA1UEAwwEeDYyNzATpBEwDzENMAsGA1UEAwwEeDYyODATpBEw
--DzENMAsGA1UEAwwEeDYyOTATpBEwDzENMAsGA1UEAwwEeDYzMDATpBEwDzENMAsG
--A1UEAwwEeDYzMTATpBEwDzENMAsGA1UEAwwEeDYzMjATpBEwDzENMAsGA1UEAwwE
--eDYzMzATpBEwDzENMAsGA1UEAwwEeDYzNDATpBEwDzENMAsGA1UEAwwEeDYzNTAT
--pBEwDzENMAsGA1UEAwwEeDYzNjATpBEwDzENMAsGA1UEAwwEeDYzNzATpBEwDzEN
--MAsGA1UEAwwEeDYzODATpBEwDzENMAsGA1UEAwwEeDYzOTATpBEwDzENMAsGA1UE
--AwwEeDY0MDATpBEwDzENMAsGA1UEAwwEeDY0MTATpBEwDzENMAsGA1UEAwwEeDY0
--MjATpBEwDzENMAsGA1UEAwwEeDY0MzATpBEwDzENMAsGA1UEAwwEeDY0NDATpBEw
--DzENMAsGA1UEAwwEeDY0NTATpBEwDzENMAsGA1UEAwwEeDY0NjATpBEwDzENMAsG
--A1UEAwwEeDY0NzATpBEwDzENMAsGA1UEAwwEeDY0ODATpBEwDzENMAsGA1UEAwwE
--eDY0OTATpBEwDzENMAsGA1UEAwwEeDY1MDATpBEwDzENMAsGA1UEAwwEeDY1MTAT
--pBEwDzENMAsGA1UEAwwEeDY1MjATpBEwDzENMAsGA1UEAwwEeDY1MzATpBEwDzEN
--MAsGA1UEAwwEeDY1NDATpBEwDzENMAsGA1UEAwwEeDY1NTATpBEwDzENMAsGA1UE
--AwwEeDY1NjATpBEwDzENMAsGA1UEAwwEeDY1NzATpBEwDzENMAsGA1UEAwwEeDY1
--ODATpBEwDzENMAsGA1UEAwwEeDY1OTATpBEwDzENMAsGA1UEAwwEeDY2MDATpBEw
--DzENMAsGA1UEAwwEeDY2MTATpBEwDzENMAsGA1UEAwwEeDY2MjATpBEwDzENMAsG
--A1UEAwwEeDY2MzATpBEwDzENMAsGA1UEAwwEeDY2NDATpBEwDzENMAsGA1UEAwwE
--eDY2NTATpBEwDzENMAsGA1UEAwwEeDY2NjATpBEwDzENMAsGA1UEAwwEeDY2NzAT
--pBEwDzENMAsGA1UEAwwEeDY2ODATpBEwDzENMAsGA1UEAwwEeDY2OTATpBEwDzEN
--MAsGA1UEAwwEeDY3MDATpBEwDzENMAsGA1UEAwwEeDY3MTATpBEwDzENMAsGA1UE
--AwwEeDY3MjATpBEwDzENMAsGA1UEAwwEeDY3MzATpBEwDzENMAsGA1UEAwwEeDY3
--NDATpBEwDzENMAsGA1UEAwwEeDY3NTATpBEwDzENMAsGA1UEAwwEeDY3NjATpBEw
--DzENMAsGA1UEAwwEeDY3NzATpBEwDzENMAsGA1UEAwwEeDY3ODATpBEwDzENMAsG
--A1UEAwwEeDY3OTATpBEwDzENMAsGA1UEAwwEeDY4MDATpBEwDzENMAsGA1UEAwwE
--eDY4MTATpBEwDzENMAsGA1UEAwwEeDY4MjATpBEwDzENMAsGA1UEAwwEeDY4MzAT
--pBEwDzENMAsGA1UEAwwEeDY4NDATpBEwDzENMAsGA1UEAwwEeDY4NTATpBEwDzEN
--MAsGA1UEAwwEeDY4NjATpBEwDzENMAsGA1UEAwwEeDY4NzATpBEwDzENMAsGA1UE
--AwwEeDY4ODATpBEwDzENMAsGA1UEAwwEeDY4OTATpBEwDzENMAsGA1UEAwwEeDY5
--MDATpBEwDzENMAsGA1UEAwwEeDY5MTATpBEwDzENMAsGA1UEAwwEeDY5MjATpBEw
--DzENMAsGA1UEAwwEeDY5MzATpBEwDzENMAsGA1UEAwwEeDY5NDATpBEwDzENMAsG
--A1UEAwwEeDY5NTATpBEwDzENMAsGA1UEAwwEeDY5NjATpBEwDzENMAsGA1UEAwwE
--eDY5NzATpBEwDzENMAsGA1UEAwwEeDY5ODATpBEwDzENMAsGA1UEAwwEeDY5OTAT
--pBEwDzENMAsGA1UEAwwEeDcwMDATpBEwDzENMAsGA1UEAwwEeDcwMTATpBEwDzEN
--MAsGA1UEAwwEeDcwMjATpBEwDzENMAsGA1UEAwwEeDcwMzATpBEwDzENMAsGA1UE
--AwwEeDcwNDATpBEwDzENMAsGA1UEAwwEeDcwNTATpBEwDzENMAsGA1UEAwwEeDcw
--NjATpBEwDzENMAsGA1UEAwwEeDcwNzATpBEwDzENMAsGA1UEAwwEeDcwODATpBEw
--DzENMAsGA1UEAwwEeDcwOTATpBEwDzENMAsGA1UEAwwEeDcxMDATpBEwDzENMAsG
--A1UEAwwEeDcxMTATpBEwDzENMAsGA1UEAwwEeDcxMjATpBEwDzENMAsGA1UEAwwE
--eDcxMzATpBEwDzENMAsGA1UEAwwEeDcxNDATpBEwDzENMAsGA1UEAwwEeDcxNTAT
--pBEwDzENMAsGA1UEAwwEeDcxNjATpBEwDzENMAsGA1UEAwwEeDcxNzATpBEwDzEN
--MAsGA1UEAwwEeDcxODATpBEwDzENMAsGA1UEAwwEeDcxOTATpBEwDzENMAsGA1UE
--AwwEeDcyMDATpBEwDzENMAsGA1UEAwwEeDcyMTATpBEwDzENMAsGA1UEAwwEeDcy
--MjATpBEwDzENMAsGA1UEAwwEeDcyMzATpBEwDzENMAsGA1UEAwwEeDcyNDATpBEw
--DzENMAsGA1UEAwwEeDcyNTATpBEwDzENMAsGA1UEAwwEeDcyNjATpBEwDzENMAsG
--A1UEAwwEeDcyNzATpBEwDzENMAsGA1UEAwwEeDcyODATpBEwDzENMAsGA1UEAwwE
--eDcyOTATpBEwDzENMAsGA1UEAwwEeDczMDATpBEwDzENMAsGA1UEAwwEeDczMTAT
--pBEwDzENMAsGA1UEAwwEeDczMjATpBEwDzENMAsGA1UEAwwEeDczMzATpBEwDzEN
--MAsGA1UEAwwEeDczNDATpBEwDzENMAsGA1UEAwwEeDczNTATpBEwDzENMAsGA1UE
--AwwEeDczNjATpBEwDzENMAsGA1UEAwwEeDczNzATpBEwDzENMAsGA1UEAwwEeDcz
--ODATpBEwDzENMAsGA1UEAwwEeDczOTATpBEwDzENMAsGA1UEAwwEeDc0MDATpBEw
--DzENMAsGA1UEAwwEeDc0MTATpBEwDzENMAsGA1UEAwwEeDc0MjATpBEwDzENMAsG
--A1UEAwwEeDc0MzATpBEwDzENMAsGA1UEAwwEeDc0NDATpBEwDzENMAsGA1UEAwwE
--eDc0NTATpBEwDzENMAsGA1UEAwwEeDc0NjATpBEwDzENMAsGA1UEAwwEeDc0NzAT
--pBEwDzENMAsGA1UEAwwEeDc0ODATpBEwDzENMAsGA1UEAwwEeDc0OTATpBEwDzEN
--MAsGA1UEAwwEeDc1MDATpBEwDzENMAsGA1UEAwwEeDc1MTATpBEwDzENMAsGA1UE
--AwwEeDc1MjATpBEwDzENMAsGA1UEAwwEeDc1MzATpBEwDzENMAsGA1UEAwwEeDc1
--NDATpBEwDzENMAsGA1UEAwwEeDc1NTATpBEwDzENMAsGA1UEAwwEeDc1NjATpBEw
--DzENMAsGA1UEAwwEeDc1NzATpBEwDzENMAsGA1UEAwwEeDc1ODATpBEwDzENMAsG
--A1UEAwwEeDc1OTATpBEwDzENMAsGA1UEAwwEeDc2MDATpBEwDzENMAsGA1UEAwwE
--eDc2MTATpBEwDzENMAsGA1UEAwwEeDc2MjATpBEwDzENMAsGA1UEAwwEeDc2MzAT
--pBEwDzENMAsGA1UEAwwEeDc2NDATpBEwDzENMAsGA1UEAwwEeDc2NTATpBEwDzEN
--MAsGA1UEAwwEeDc2NjATpBEwDzENMAsGA1UEAwwEeDc2NzATpBEwDzENMAsGA1UE
--AwwEeDc2ODATpBEwDzENMAsGA1UEAwwEeDc2OTATpBEwDzENMAsGA1UEAwwEeDc3
--MDATpBEwDzENMAsGA1UEAwwEeDc3MTATpBEwDzENMAsGA1UEAwwEeDc3MjATpBEw
--DzENMAsGA1UEAwwEeDc3MzATpBEwDzENMAsGA1UEAwwEeDc3NDATpBEwDzENMAsG
--A1UEAwwEeDc3NTATpBEwDzENMAsGA1UEAwwEeDc3NjATpBEwDzENMAsGA1UEAwwE
--eDc3NzATpBEwDzENMAsGA1UEAwwEeDc3ODATpBEwDzENMAsGA1UEAwwEeDc3OTAT
--pBEwDzENMAsGA1UEAwwEeDc4MDATpBEwDzENMAsGA1UEAwwEeDc4MTATpBEwDzEN
--MAsGA1UEAwwEeDc4MjATpBEwDzENMAsGA1UEAwwEeDc4MzATpBEwDzENMAsGA1UE
--AwwEeDc4NDATpBEwDzENMAsGA1UEAwwEeDc4NTATpBEwDzENMAsGA1UEAwwEeDc4
--NjATpBEwDzENMAsGA1UEAwwEeDc4NzATpBEwDzENMAsGA1UEAwwEeDc4ODATpBEw
--DzENMAsGA1UEAwwEeDc4OTATpBEwDzENMAsGA1UEAwwEeDc5MDATpBEwDzENMAsG
--A1UEAwwEeDc5MTATpBEwDzENMAsGA1UEAwwEeDc5MjATpBEwDzENMAsGA1UEAwwE
--eDc5MzATpBEwDzENMAsGA1UEAwwEeDc5NDATpBEwDzENMAsGA1UEAwwEeDc5NTAT
--pBEwDzENMAsGA1UEAwwEeDc5NjATpBEwDzENMAsGA1UEAwwEeDc5NzATpBEwDzEN
--MAsGA1UEAwwEeDc5ODATpBEwDzENMAsGA1UEAwwEeDc5OTATpBEwDzENMAsGA1UE
--AwwEeDgwMDATpBEwDzENMAsGA1UEAwwEeDgwMTATpBEwDzENMAsGA1UEAwwEeDgw
--MjATpBEwDzENMAsGA1UEAwwEeDgwMzATpBEwDzENMAsGA1UEAwwEeDgwNDATpBEw
--DzENMAsGA1UEAwwEeDgwNTATpBEwDzENMAsGA1UEAwwEeDgwNjATpBEwDzENMAsG
--A1UEAwwEeDgwNzATpBEwDzENMAsGA1UEAwwEeDgwODATpBEwDzENMAsGA1UEAwwE
--eDgwOTATpBEwDzENMAsGA1UEAwwEeDgxMDATpBEwDzENMAsGA1UEAwwEeDgxMTAT
--pBEwDzENMAsGA1UEAwwEeDgxMjATpBEwDzENMAsGA1UEAwwEeDgxMzATpBEwDzEN
--MAsGA1UEAwwEeDgxNDATpBEwDzENMAsGA1UEAwwEeDgxNTATpBEwDzENMAsGA1UE
--AwwEeDgxNjATpBEwDzENMAsGA1UEAwwEeDgxNzATpBEwDzENMAsGA1UEAwwEeDgx
--ODATpBEwDzENMAsGA1UEAwwEeDgxOTATpBEwDzENMAsGA1UEAwwEeDgyMDATpBEw
--DzENMAsGA1UEAwwEeDgyMTATpBEwDzENMAsGA1UEAwwEeDgyMjATpBEwDzENMAsG
--A1UEAwwEeDgyMzATpBEwDzENMAsGA1UEAwwEeDgyNDATpBEwDzENMAsGA1UEAwwE
--eDgyNTATpBEwDzENMAsGA1UEAwwEeDgyNjATpBEwDzENMAsGA1UEAwwEeDgyNzAT
--pBEwDzENMAsGA1UEAwwEeDgyODATpBEwDzENMAsGA1UEAwwEeDgyOTATpBEwDzEN
--MAsGA1UEAwwEeDgzMDATpBEwDzENMAsGA1UEAwwEeDgzMTATpBEwDzENMAsGA1UE
--AwwEeDgzMjATpBEwDzENMAsGA1UEAwwEeDgzMzATpBEwDzENMAsGA1UEAwwEeDgz
--NDATpBEwDzENMAsGA1UEAwwEeDgzNTATpBEwDzENMAsGA1UEAwwEeDgzNjATpBEw
--DzENMAsGA1UEAwwEeDgzNzATpBEwDzENMAsGA1UEAwwEeDgzODATpBEwDzENMAsG
--A1UEAwwEeDgzOTATpBEwDzENMAsGA1UEAwwEeDg0MDATpBEwDzENMAsGA1UEAwwE
--eDg0MTATpBEwDzENMAsGA1UEAwwEeDg0MjATpBEwDzENMAsGA1UEAwwEeDg0MzAT
--pBEwDzENMAsGA1UEAwwEeDg0NDATpBEwDzENMAsGA1UEAwwEeDg0NTATpBEwDzEN
--MAsGA1UEAwwEeDg0NjATpBEwDzENMAsGA1UEAwwEeDg0NzATpBEwDzENMAsGA1UE
--AwwEeDg0ODATpBEwDzENMAsGA1UEAwwEeDg0OTATpBEwDzENMAsGA1UEAwwEeDg1
--MDATpBEwDzENMAsGA1UEAwwEeDg1MTATpBEwDzENMAsGA1UEAwwEeDg1MjATpBEw
--DzENMAsGA1UEAwwEeDg1MzATpBEwDzENMAsGA1UEAwwEeDg1NDATpBEwDzENMAsG
--A1UEAwwEeDg1NTATpBEwDzENMAsGA1UEAwwEeDg1NjATpBEwDzENMAsGA1UEAwwE
--eDg1NzATpBEwDzENMAsGA1UEAwwEeDg1ODATpBEwDzENMAsGA1UEAwwEeDg1OTAT
--pBEwDzENMAsGA1UEAwwEeDg2MDATpBEwDzENMAsGA1UEAwwEeDg2MTATpBEwDzEN
--MAsGA1UEAwwEeDg2MjATpBEwDzENMAsGA1UEAwwEeDg2MzATpBEwDzENMAsGA1UE
--AwwEeDg2NDATpBEwDzENMAsGA1UEAwwEeDg2NTATpBEwDzENMAsGA1UEAwwEeDg2
--NjATpBEwDzENMAsGA1UEAwwEeDg2NzATpBEwDzENMAsGA1UEAwwEeDg2ODATpBEw
--DzENMAsGA1UEAwwEeDg2OTATpBEwDzENMAsGA1UEAwwEeDg3MDATpBEwDzENMAsG
--A1UEAwwEeDg3MTATpBEwDzENMAsGA1UEAwwEeDg3MjATpBEwDzENMAsGA1UEAwwE
--eDg3MzATpBEwDzENMAsGA1UEAwwEeDg3NDATpBEwDzENMAsGA1UEAwwEeDg3NTAT
--pBEwDzENMAsGA1UEAwwEeDg3NjATpBEwDzENMAsGA1UEAwwEeDg3NzATpBEwDzEN
--MAsGA1UEAwwEeDg3ODATpBEwDzENMAsGA1UEAwwEeDg3OTATpBEwDzENMAsGA1UE
--AwwEeDg4MDATpBEwDzENMAsGA1UEAwwEeDg4MTATpBEwDzENMAsGA1UEAwwEeDg4
--MjATpBEwDzENMAsGA1UEAwwEeDg4MzATpBEwDzENMAsGA1UEAwwEeDg4NDATpBEw
--DzENMAsGA1UEAwwEeDg4NTATpBEwDzENMAsGA1UEAwwEeDg4NjATpBEwDzENMAsG
--A1UEAwwEeDg4NzATpBEwDzENMAsGA1UEAwwEeDg4ODATpBEwDzENMAsGA1UEAwwE
--eDg4OTATpBEwDzENMAsGA1UEAwwEeDg5MDATpBEwDzENMAsGA1UEAwwEeDg5MTAT
--pBEwDzENMAsGA1UEAwwEeDg5MjATpBEwDzENMAsGA1UEAwwEeDg5MzATpBEwDzEN
--MAsGA1UEAwwEeDg5NDATpBEwDzENMAsGA1UEAwwEeDg5NTATpBEwDzENMAsGA1UE
--AwwEeDg5NjATpBEwDzENMAsGA1UEAwwEeDg5NzATpBEwDzENMAsGA1UEAwwEeDg5
--ODATpBEwDzENMAsGA1UEAwwEeDg5OTATpBEwDzENMAsGA1UEAwwEeDkwMDATpBEw
--DzENMAsGA1UEAwwEeDkwMTATpBEwDzENMAsGA1UEAwwEeDkwMjATpBEwDzENMAsG
--A1UEAwwEeDkwMzATpBEwDzENMAsGA1UEAwwEeDkwNDATpBEwDzENMAsGA1UEAwwE
--eDkwNTATpBEwDzENMAsGA1UEAwwEeDkwNjATpBEwDzENMAsGA1UEAwwEeDkwNzAT
--pBEwDzENMAsGA1UEAwwEeDkwODATpBEwDzENMAsGA1UEAwwEeDkwOTATpBEwDzEN
--MAsGA1UEAwwEeDkxMDATpBEwDzENMAsGA1UEAwwEeDkxMTATpBEwDzENMAsGA1UE
--AwwEeDkxMjATpBEwDzENMAsGA1UEAwwEeDkxMzATpBEwDzENMAsGA1UEAwwEeDkx
--NDATpBEwDzENMAsGA1UEAwwEeDkxNTATpBEwDzENMAsGA1UEAwwEeDkxNjATpBEw
--DzENMAsGA1UEAwwEeDkxNzATpBEwDzENMAsGA1UEAwwEeDkxODATpBEwDzENMAsG
--A1UEAwwEeDkxOTATpBEwDzENMAsGA1UEAwwEeDkyMDATpBEwDzENMAsGA1UEAwwE
--eDkyMTATpBEwDzENMAsGA1UEAwwEeDkyMjATpBEwDzENMAsGA1UEAwwEeDkyMzAT
--pBEwDzENMAsGA1UEAwwEeDkyNDATpBEwDzENMAsGA1UEAwwEeDkyNTATpBEwDzEN
--MAsGA1UEAwwEeDkyNjATpBEwDzENMAsGA1UEAwwEeDkyNzATpBEwDzENMAsGA1UE
--AwwEeDkyODATpBEwDzENMAsGA1UEAwwEeDkyOTATpBEwDzENMAsGA1UEAwwEeDkz
--MDATpBEwDzENMAsGA1UEAwwEeDkzMTATpBEwDzENMAsGA1UEAwwEeDkzMjATpBEw
--DzENMAsGA1UEAwwEeDkzMzATpBEwDzENMAsGA1UEAwwEeDkzNDATpBEwDzENMAsG
--A1UEAwwEeDkzNTATpBEwDzENMAsGA1UEAwwEeDkzNjATpBEwDzENMAsGA1UEAwwE
--eDkzNzATpBEwDzENMAsGA1UEAwwEeDkzODATpBEwDzENMAsGA1UEAwwEeDkzOTAT
--pBEwDzENMAsGA1UEAwwEeDk0MDATpBEwDzENMAsGA1UEAwwEeDk0MTATpBEwDzEN
--MAsGA1UEAwwEeDk0MjATpBEwDzENMAsGA1UEAwwEeDk0MzATpBEwDzENMAsGA1UE
--AwwEeDk0NDATpBEwDzENMAsGA1UEAwwEeDk0NTATpBEwDzENMAsGA1UEAwwEeDk0
--NjATpBEwDzENMAsGA1UEAwwEeDk0NzATpBEwDzENMAsGA1UEAwwEeDk0ODATpBEw
--DzENMAsGA1UEAwwEeDk0OTATpBEwDzENMAsGA1UEAwwEeDk1MDATpBEwDzENMAsG
--A1UEAwwEeDk1MTATpBEwDzENMAsGA1UEAwwEeDk1MjATpBEwDzENMAsGA1UEAwwE
--eDk1MzATpBEwDzENMAsGA1UEAwwEeDk1NDATpBEwDzENMAsGA1UEAwwEeDk1NTAT
--pBEwDzENMAsGA1UEAwwEeDk1NjATpBEwDzENMAsGA1UEAwwEeDk1NzATpBEwDzEN
--MAsGA1UEAwwEeDk1ODATpBEwDzENMAsGA1UEAwwEeDk1OTATpBEwDzENMAsGA1UE
--AwwEeDk2MDATpBEwDzENMAsGA1UEAwwEeDk2MTATpBEwDzENMAsGA1UEAwwEeDk2
--MjATpBEwDzENMAsGA1UEAwwEeDk2MzATpBEwDzENMAsGA1UEAwwEeDk2NDATpBEw
--DzENMAsGA1UEAwwEeDk2NTATpBEwDzENMAsGA1UEAwwEeDk2NjATpBEwDzENMAsG
--A1UEAwwEeDk2NzATpBEwDzENMAsGA1UEAwwEeDk2ODATpBEwDzENMAsGA1UEAwwE
--eDk2OTATpBEwDzENMAsGA1UEAwwEeDk3MDATpBEwDzENMAsGA1UEAwwEeDk3MTAT
--pBEwDzENMAsGA1UEAwwEeDk3MjATpBEwDzENMAsGA1UEAwwEeDk3MzATpBEwDzEN
--MAsGA1UEAwwEeDk3NDATpBEwDzENMAsGA1UEAwwEeDk3NTATpBEwDzENMAsGA1UE
--AwwEeDk3NjATpBEwDzENMAsGA1UEAwwEeDk3NzATpBEwDzENMAsGA1UEAwwEeDk3
--ODATpBEwDzENMAsGA1UEAwwEeDk3OTATpBEwDzENMAsGA1UEAwwEeDk4MDATpBEw
--DzENMAsGA1UEAwwEeDk4MTATpBEwDzENMAsGA1UEAwwEeDk4MjATpBEwDzENMAsG
--A1UEAwwEeDk4MzATpBEwDzENMAsGA1UEAwwEeDk4NDATpBEwDzENMAsGA1UEAwwE
--eDk4NTATpBEwDzENMAsGA1UEAwwEeDk4NjATpBEwDzENMAsGA1UEAwwEeDk4NzAT
--pBEwDzENMAsGA1UEAwwEeDk4ODATpBEwDzENMAsGA1UEAwwEeDk4OTATpBEwDzEN
--MAsGA1UEAwwEeDk5MDATpBEwDzENMAsGA1UEAwwEeDk5MTATpBEwDzENMAsGA1UE
--AwwEeDk5MjATpBEwDzENMAsGA1UEAwwEeDk5MzATpBEwDzENMAsGA1UEAwwEeDk5
--NDATpBEwDzENMAsGA1UEAwwEeDk5NTATpBEwDzENMAsGA1UEAwwEeDk5NjATpBEw
--DzENMAsGA1UEAwwEeDk5NzATpBEwDzENMAsGA1UEAwwEeDk5ODATpBEwDzENMAsG
--A1UEAwwEeDk5OTAUpBIwEDEOMAwGA1UEAwwFeDEwMDAwFKQSMBAxDjAMBgNVBAMM
--BXgxMDAxMBSkEjAQMQ4wDAYDVQQDDAV4MTAwMjAUpBIwEDEOMAwGA1UEAwwFeDEw
--MDMwFKQSMBAxDjAMBgNVBAMMBXgxMDA0MBSkEjAQMQ4wDAYDVQQDDAV4MTAwNTAU
--pBIwEDEOMAwGA1UEAwwFeDEwMDYwFKQSMBAxDjAMBgNVBAMMBXgxMDA3MBSkEjAQ
--MQ4wDAYDVQQDDAV4MTAwODAUpBIwEDEOMAwGA1UEAwwFeDEwMDkwFKQSMBAxDjAM
--BgNVBAMMBXgxMDEwMBSkEjAQMQ4wDAYDVQQDDAV4MTAxMTAUpBIwEDEOMAwGA1UE
--AwwFeDEwMTIwFKQSMBAxDjAMBgNVBAMMBXgxMDEzMBSkEjAQMQ4wDAYDVQQDDAV4
--MTAxNDAUpBIwEDEOMAwGA1UEAwwFeDEwMTUwFKQSMBAxDjAMBgNVBAMMBXgxMDE2
--MBSkEjAQMQ4wDAYDVQQDDAV4MTAxNzAUpBIwEDEOMAwGA1UEAwwFeDEwMTgwFKQS
--MBAxDjAMBgNVBAMMBXgxMDE5MBSkEjAQMQ4wDAYDVQQDDAV4MTAyMDAUpBIwEDEO
--MAwGA1UEAwwFeDEwMjEwFKQSMBAxDjAMBgNVBAMMBXgxMDIyMBSkEjAQMQ4wDAYD
--VQQDDAV4MTAyMzAUpBIwEDEOMAwGA1UEAwwFeDEwMjQwD4YNaHR0cDovL3hlc3Qv
--MDAPhg1odHRwOi8veGVzdC8xMA+GDWh0dHA6Ly94ZXN0LzIwD4YNaHR0cDovL3hl
--c3QvMzAPhg1odHRwOi8veGVzdC80MA+GDWh0dHA6Ly94ZXN0LzUwD4YNaHR0cDov
--L3hlc3QvNjAPhg1odHRwOi8veGVzdC83MA+GDWh0dHA6Ly94ZXN0LzgwD4YNaHR0
--cDovL3hlc3QvOTAQhg5odHRwOi8veGVzdC8xMDAQhg5odHRwOi8veGVzdC8xMTAQ
--hg5odHRwOi8veGVzdC8xMjAQhg5odHRwOi8veGVzdC8xMzAQhg5odHRwOi8veGVz
--dC8xNDAQhg5odHRwOi8veGVzdC8xNTAQhg5odHRwOi8veGVzdC8xNjAQhg5odHRw
--Oi8veGVzdC8xNzAQhg5odHRwOi8veGVzdC8xODAQhg5odHRwOi8veGVzdC8xOTAQ
--hg5odHRwOi8veGVzdC8yMDAQhg5odHRwOi8veGVzdC8yMTAQhg5odHRwOi8veGVz
--dC8yMjAQhg5odHRwOi8veGVzdC8yMzAQhg5odHRwOi8veGVzdC8yNDAQhg5odHRw
--Oi8veGVzdC8yNTAQhg5odHRwOi8veGVzdC8yNjAQhg5odHRwOi8veGVzdC8yNzAQ
--hg5odHRwOi8veGVzdC8yODAQhg5odHRwOi8veGVzdC8yOTAQhg5odHRwOi8veGVz
--dC8zMDAQhg5odHRwOi8veGVzdC8zMTAQhg5odHRwOi8veGVzdC8zMjAQhg5odHRw
--Oi8veGVzdC8zMzAQhg5odHRwOi8veGVzdC8zNDAQhg5odHRwOi8veGVzdC8zNTAQ
--hg5odHRwOi8veGVzdC8zNjAQhg5odHRwOi8veGVzdC8zNzAQhg5odHRwOi8veGVz
--dC8zODAQhg5odHRwOi8veGVzdC8zOTAQhg5odHRwOi8veGVzdC80MDAQhg5odHRw
--Oi8veGVzdC80MTAQhg5odHRwOi8veGVzdC80MjAQhg5odHRwOi8veGVzdC80MzAQ
--hg5odHRwOi8veGVzdC80NDAQhg5odHRwOi8veGVzdC80NTAQhg5odHRwOi8veGVz
--dC80NjAQhg5odHRwOi8veGVzdC80NzAQhg5odHRwOi8veGVzdC80ODAQhg5odHRw
--Oi8veGVzdC80OTAQhg5odHRwOi8veGVzdC81MDAQhg5odHRwOi8veGVzdC81MTAQ
--hg5odHRwOi8veGVzdC81MjAQhg5odHRwOi8veGVzdC81MzAQhg5odHRwOi8veGVz
--dC81NDAQhg5odHRwOi8veGVzdC81NTAQhg5odHRwOi8veGVzdC81NjAQhg5odHRw
--Oi8veGVzdC81NzAQhg5odHRwOi8veGVzdC81ODAQhg5odHRwOi8veGVzdC81OTAQ
--hg5odHRwOi8veGVzdC82MDAQhg5odHRwOi8veGVzdC82MTAQhg5odHRwOi8veGVz
--dC82MjAQhg5odHRwOi8veGVzdC82MzAQhg5odHRwOi8veGVzdC82NDAQhg5odHRw
--Oi8veGVzdC82NTAQhg5odHRwOi8veGVzdC82NjAQhg5odHRwOi8veGVzdC82NzAQ
--hg5odHRwOi8veGVzdC82ODAQhg5odHRwOi8veGVzdC82OTAQhg5odHRwOi8veGVz
--dC83MDAQhg5odHRwOi8veGVzdC83MTAQhg5odHRwOi8veGVzdC83MjAQhg5odHRw
--Oi8veGVzdC83MzAQhg5odHRwOi8veGVzdC83NDAQhg5odHRwOi8veGVzdC83NTAQ
--hg5odHRwOi8veGVzdC83NjAQhg5odHRwOi8veGVzdC83NzAQhg5odHRwOi8veGVz
--dC83ODAQhg5odHRwOi8veGVzdC83OTAQhg5odHRwOi8veGVzdC84MDAQhg5odHRw
--Oi8veGVzdC84MTAQhg5odHRwOi8veGVzdC84MjAQhg5odHRwOi8veGVzdC84MzAQ
--hg5odHRwOi8veGVzdC84NDAQhg5odHRwOi8veGVzdC84NTAQhg5odHRwOi8veGVz
--dC84NjAQhg5odHRwOi8veGVzdC84NzAQhg5odHRwOi8veGVzdC84ODAQhg5odHRw
--Oi8veGVzdC84OTAQhg5odHRwOi8veGVzdC85MDAQhg5odHRwOi8veGVzdC85MTAQ
--hg5odHRwOi8veGVzdC85MjAQhg5odHRwOi8veGVzdC85MzAQhg5odHRwOi8veGVz
--dC85NDAQhg5odHRwOi8veGVzdC85NTAQhg5odHRwOi8veGVzdC85NjAQhg5odHRw
--Oi8veGVzdC85NzAQhg5odHRwOi8veGVzdC85ODAQhg5odHRwOi8veGVzdC85OTAR
--hg9odHRwOi8veGVzdC8xMDAwEYYPaHR0cDovL3hlc3QvMTAxMBGGD2h0dHA6Ly94
--ZXN0LzEwMjARhg9odHRwOi8veGVzdC8xMDMwEYYPaHR0cDovL3hlc3QvMTA0MBGG
--D2h0dHA6Ly94ZXN0LzEwNTARhg9odHRwOi8veGVzdC8xMDYwEYYPaHR0cDovL3hl
--c3QvMTA3MBGGD2h0dHA6Ly94ZXN0LzEwODARhg9odHRwOi8veGVzdC8xMDkwEYYP
--aHR0cDovL3hlc3QvMTEwMBGGD2h0dHA6Ly94ZXN0LzExMTARhg9odHRwOi8veGVz
--dC8xMTIwEYYPaHR0cDovL3hlc3QvMTEzMBGGD2h0dHA6Ly94ZXN0LzExNDARhg9o
--dHRwOi8veGVzdC8xMTUwEYYPaHR0cDovL3hlc3QvMTE2MBGGD2h0dHA6Ly94ZXN0
--LzExNzARhg9odHRwOi8veGVzdC8xMTgwEYYPaHR0cDovL3hlc3QvMTE5MBGGD2h0
--dHA6Ly94ZXN0LzEyMDARhg9odHRwOi8veGVzdC8xMjEwEYYPaHR0cDovL3hlc3Qv
--MTIyMBGGD2h0dHA6Ly94ZXN0LzEyMzARhg9odHRwOi8veGVzdC8xMjQwEYYPaHR0
--cDovL3hlc3QvMTI1MBGGD2h0dHA6Ly94ZXN0LzEyNjARhg9odHRwOi8veGVzdC8x
--MjcwEYYPaHR0cDovL3hlc3QvMTI4MBGGD2h0dHA6Ly94ZXN0LzEyOTARhg9odHRw
--Oi8veGVzdC8xMzAwEYYPaHR0cDovL3hlc3QvMTMxMBGGD2h0dHA6Ly94ZXN0LzEz
--MjARhg9odHRwOi8veGVzdC8xMzMwEYYPaHR0cDovL3hlc3QvMTM0MBGGD2h0dHA6
--Ly94ZXN0LzEzNTARhg9odHRwOi8veGVzdC8xMzYwEYYPaHR0cDovL3hlc3QvMTM3
--MBGGD2h0dHA6Ly94ZXN0LzEzODARhg9odHRwOi8veGVzdC8xMzkwEYYPaHR0cDov
--L3hlc3QvMTQwMBGGD2h0dHA6Ly94ZXN0LzE0MTARhg9odHRwOi8veGVzdC8xNDIw
--EYYPaHR0cDovL3hlc3QvMTQzMBGGD2h0dHA6Ly94ZXN0LzE0NDARhg9odHRwOi8v
--eGVzdC8xNDUwEYYPaHR0cDovL3hlc3QvMTQ2MBGGD2h0dHA6Ly94ZXN0LzE0NzAR
--hg9odHRwOi8veGVzdC8xNDgwEYYPaHR0cDovL3hlc3QvMTQ5MBGGD2h0dHA6Ly94
--ZXN0LzE1MDARhg9odHRwOi8veGVzdC8xNTEwEYYPaHR0cDovL3hlc3QvMTUyMBGG
--D2h0dHA6Ly94ZXN0LzE1MzARhg9odHRwOi8veGVzdC8xNTQwEYYPaHR0cDovL3hl
--c3QvMTU1MBGGD2h0dHA6Ly94ZXN0LzE1NjARhg9odHRwOi8veGVzdC8xNTcwEYYP
--aHR0cDovL3hlc3QvMTU4MBGGD2h0dHA6Ly94ZXN0LzE1OTARhg9odHRwOi8veGVz
--dC8xNjAwEYYPaHR0cDovL3hlc3QvMTYxMBGGD2h0dHA6Ly94ZXN0LzE2MjARhg9o
--dHRwOi8veGVzdC8xNjMwEYYPaHR0cDovL3hlc3QvMTY0MBGGD2h0dHA6Ly94ZXN0
--LzE2NTARhg9odHRwOi8veGVzdC8xNjYwEYYPaHR0cDovL3hlc3QvMTY3MBGGD2h0
--dHA6Ly94ZXN0LzE2ODARhg9odHRwOi8veGVzdC8xNjkwEYYPaHR0cDovL3hlc3Qv
--MTcwMBGGD2h0dHA6Ly94ZXN0LzE3MTARhg9odHRwOi8veGVzdC8xNzIwEYYPaHR0
--cDovL3hlc3QvMTczMBGGD2h0dHA6Ly94ZXN0LzE3NDARhg9odHRwOi8veGVzdC8x
--NzUwEYYPaHR0cDovL3hlc3QvMTc2MBGGD2h0dHA6Ly94ZXN0LzE3NzARhg9odHRw
--Oi8veGVzdC8xNzgwEYYPaHR0cDovL3hlc3QvMTc5MBGGD2h0dHA6Ly94ZXN0LzE4
--MDARhg9odHRwOi8veGVzdC8xODEwEYYPaHR0cDovL3hlc3QvMTgyMBGGD2h0dHA6
--Ly94ZXN0LzE4MzARhg9odHRwOi8veGVzdC8xODQwEYYPaHR0cDovL3hlc3QvMTg1
--MBGGD2h0dHA6Ly94ZXN0LzE4NjARhg9odHRwOi8veGVzdC8xODcwEYYPaHR0cDov
--L3hlc3QvMTg4MBGGD2h0dHA6Ly94ZXN0LzE4OTARhg9odHRwOi8veGVzdC8xOTAw
--EYYPaHR0cDovL3hlc3QvMTkxMBGGD2h0dHA6Ly94ZXN0LzE5MjARhg9odHRwOi8v
--eGVzdC8xOTMwEYYPaHR0cDovL3hlc3QvMTk0MBGGD2h0dHA6Ly94ZXN0LzE5NTAR
--hg9odHRwOi8veGVzdC8xOTYwEYYPaHR0cDovL3hlc3QvMTk3MBGGD2h0dHA6Ly94
--ZXN0LzE5ODARhg9odHRwOi8veGVzdC8xOTkwEYYPaHR0cDovL3hlc3QvMjAwMBGG
--D2h0dHA6Ly94ZXN0LzIwMTARhg9odHRwOi8veGVzdC8yMDIwEYYPaHR0cDovL3hl
--c3QvMjAzMBGGD2h0dHA6Ly94ZXN0LzIwNDARhg9odHRwOi8veGVzdC8yMDUwEYYP
--aHR0cDovL3hlc3QvMjA2MBGGD2h0dHA6Ly94ZXN0LzIwNzARhg9odHRwOi8veGVz
--dC8yMDgwEYYPaHR0cDovL3hlc3QvMjA5MBGGD2h0dHA6Ly94ZXN0LzIxMDARhg9o
--dHRwOi8veGVzdC8yMTEwEYYPaHR0cDovL3hlc3QvMjEyMBGGD2h0dHA6Ly94ZXN0
--LzIxMzARhg9odHRwOi8veGVzdC8yMTQwEYYPaHR0cDovL3hlc3QvMjE1MBGGD2h0
--dHA6Ly94ZXN0LzIxNjARhg9odHRwOi8veGVzdC8yMTcwEYYPaHR0cDovL3hlc3Qv
--MjE4MBGGD2h0dHA6Ly94ZXN0LzIxOTARhg9odHRwOi8veGVzdC8yMjAwEYYPaHR0
--cDovL3hlc3QvMjIxMBGGD2h0dHA6Ly94ZXN0LzIyMjARhg9odHRwOi8veGVzdC8y
--MjMwEYYPaHR0cDovL3hlc3QvMjI0MBGGD2h0dHA6Ly94ZXN0LzIyNTARhg9odHRw
--Oi8veGVzdC8yMjYwEYYPaHR0cDovL3hlc3QvMjI3MBGGD2h0dHA6Ly94ZXN0LzIy
--ODARhg9odHRwOi8veGVzdC8yMjkwEYYPaHR0cDovL3hlc3QvMjMwMBGGD2h0dHA6
--Ly94ZXN0LzIzMTARhg9odHRwOi8veGVzdC8yMzIwEYYPaHR0cDovL3hlc3QvMjMz
--MBGGD2h0dHA6Ly94ZXN0LzIzNDARhg9odHRwOi8veGVzdC8yMzUwEYYPaHR0cDov
--L3hlc3QvMjM2MBGGD2h0dHA6Ly94ZXN0LzIzNzARhg9odHRwOi8veGVzdC8yMzgw
--EYYPaHR0cDovL3hlc3QvMjM5MBGGD2h0dHA6Ly94ZXN0LzI0MDARhg9odHRwOi8v
--eGVzdC8yNDEwEYYPaHR0cDovL3hlc3QvMjQyMBGGD2h0dHA6Ly94ZXN0LzI0MzAR
--hg9odHRwOi8veGVzdC8yNDQwEYYPaHR0cDovL3hlc3QvMjQ1MBGGD2h0dHA6Ly94
--ZXN0LzI0NjARhg9odHRwOi8veGVzdC8yNDcwEYYPaHR0cDovL3hlc3QvMjQ4MBGG
--D2h0dHA6Ly94ZXN0LzI0OTARhg9odHRwOi8veGVzdC8yNTAwEYYPaHR0cDovL3hl
--c3QvMjUxMBGGD2h0dHA6Ly94ZXN0LzI1MjARhg9odHRwOi8veGVzdC8yNTMwEYYP
--aHR0cDovL3hlc3QvMjU0MBGGD2h0dHA6Ly94ZXN0LzI1NTARhg9odHRwOi8veGVz
--dC8yNTYwEYYPaHR0cDovL3hlc3QvMjU3MBGGD2h0dHA6Ly94ZXN0LzI1ODARhg9o
--dHRwOi8veGVzdC8yNTkwEYYPaHR0cDovL3hlc3QvMjYwMBGGD2h0dHA6Ly94ZXN0
--LzI2MTARhg9odHRwOi8veGVzdC8yNjIwEYYPaHR0cDovL3hlc3QvMjYzMBGGD2h0
--dHA6Ly94ZXN0LzI2NDARhg9odHRwOi8veGVzdC8yNjUwEYYPaHR0cDovL3hlc3Qv
--MjY2MBGGD2h0dHA6Ly94ZXN0LzI2NzARhg9odHRwOi8veGVzdC8yNjgwEYYPaHR0
--cDovL3hlc3QvMjY5MBGGD2h0dHA6Ly94ZXN0LzI3MDARhg9odHRwOi8veGVzdC8y
--NzEwEYYPaHR0cDovL3hlc3QvMjcyMBGGD2h0dHA6Ly94ZXN0LzI3MzARhg9odHRw
--Oi8veGVzdC8yNzQwEYYPaHR0cDovL3hlc3QvMjc1MBGGD2h0dHA6Ly94ZXN0LzI3
--NjARhg9odHRwOi8veGVzdC8yNzcwEYYPaHR0cDovL3hlc3QvMjc4MBGGD2h0dHA6
--Ly94ZXN0LzI3OTARhg9odHRwOi8veGVzdC8yODAwEYYPaHR0cDovL3hlc3QvMjgx
--MBGGD2h0dHA6Ly94ZXN0LzI4MjARhg9odHRwOi8veGVzdC8yODMwEYYPaHR0cDov
--L3hlc3QvMjg0MBGGD2h0dHA6Ly94ZXN0LzI4NTARhg9odHRwOi8veGVzdC8yODYw
--EYYPaHR0cDovL3hlc3QvMjg3MBGGD2h0dHA6Ly94ZXN0LzI4ODARhg9odHRwOi8v
--eGVzdC8yODkwEYYPaHR0cDovL3hlc3QvMjkwMBGGD2h0dHA6Ly94ZXN0LzI5MTAR
--hg9odHRwOi8veGVzdC8yOTIwEYYPaHR0cDovL3hlc3QvMjkzMBGGD2h0dHA6Ly94
--ZXN0LzI5NDARhg9odHRwOi8veGVzdC8yOTUwEYYPaHR0cDovL3hlc3QvMjk2MBGG
--D2h0dHA6Ly94ZXN0LzI5NzARhg9odHRwOi8veGVzdC8yOTgwEYYPaHR0cDovL3hl
--c3QvMjk5MBGGD2h0dHA6Ly94ZXN0LzMwMDARhg9odHRwOi8veGVzdC8zMDEwEYYP
--aHR0cDovL3hlc3QvMzAyMBGGD2h0dHA6Ly94ZXN0LzMwMzARhg9odHRwOi8veGVz
--dC8zMDQwEYYPaHR0cDovL3hlc3QvMzA1MBGGD2h0dHA6Ly94ZXN0LzMwNjARhg9o
--dHRwOi8veGVzdC8zMDcwEYYPaHR0cDovL3hlc3QvMzA4MBGGD2h0dHA6Ly94ZXN0
--LzMwOTARhg9odHRwOi8veGVzdC8zMTAwEYYPaHR0cDovL3hlc3QvMzExMBGGD2h0
--dHA6Ly94ZXN0LzMxMjARhg9odHRwOi8veGVzdC8zMTMwEYYPaHR0cDovL3hlc3Qv
--MzE0MBGGD2h0dHA6Ly94ZXN0LzMxNTARhg9odHRwOi8veGVzdC8zMTYwEYYPaHR0
--cDovL3hlc3QvMzE3MBGGD2h0dHA6Ly94ZXN0LzMxODARhg9odHRwOi8veGVzdC8z
--MTkwEYYPaHR0cDovL3hlc3QvMzIwMBGGD2h0dHA6Ly94ZXN0LzMyMTARhg9odHRw
--Oi8veGVzdC8zMjIwEYYPaHR0cDovL3hlc3QvMzIzMBGGD2h0dHA6Ly94ZXN0LzMy
--NDARhg9odHRwOi8veGVzdC8zMjUwEYYPaHR0cDovL3hlc3QvMzI2MBGGD2h0dHA6
--Ly94ZXN0LzMyNzARhg9odHRwOi8veGVzdC8zMjgwEYYPaHR0cDovL3hlc3QvMzI5
--MBGGD2h0dHA6Ly94ZXN0LzMzMDARhg9odHRwOi8veGVzdC8zMzEwEYYPaHR0cDov
--L3hlc3QvMzMyMBGGD2h0dHA6Ly94ZXN0LzMzMzARhg9odHRwOi8veGVzdC8zMzQw
--EYYPaHR0cDovL3hlc3QvMzM1MBGGD2h0dHA6Ly94ZXN0LzMzNjARhg9odHRwOi8v
--eGVzdC8zMzcwEYYPaHR0cDovL3hlc3QvMzM4MBGGD2h0dHA6Ly94ZXN0LzMzOTAR
--hg9odHRwOi8veGVzdC8zNDAwEYYPaHR0cDovL3hlc3QvMzQxMBGGD2h0dHA6Ly94
--ZXN0LzM0MjARhg9odHRwOi8veGVzdC8zNDMwEYYPaHR0cDovL3hlc3QvMzQ0MBGG
--D2h0dHA6Ly94ZXN0LzM0NTARhg9odHRwOi8veGVzdC8zNDYwEYYPaHR0cDovL3hl
--c3QvMzQ3MBGGD2h0dHA6Ly94ZXN0LzM0ODARhg9odHRwOi8veGVzdC8zNDkwEYYP
--aHR0cDovL3hlc3QvMzUwMBGGD2h0dHA6Ly94ZXN0LzM1MTARhg9odHRwOi8veGVz
--dC8zNTIwEYYPaHR0cDovL3hlc3QvMzUzMBGGD2h0dHA6Ly94ZXN0LzM1NDARhg9o
--dHRwOi8veGVzdC8zNTUwEYYPaHR0cDovL3hlc3QvMzU2MBGGD2h0dHA6Ly94ZXN0
--LzM1NzARhg9odHRwOi8veGVzdC8zNTgwEYYPaHR0cDovL3hlc3QvMzU5MBGGD2h0
--dHA6Ly94ZXN0LzM2MDARhg9odHRwOi8veGVzdC8zNjEwEYYPaHR0cDovL3hlc3Qv
--MzYyMBGGD2h0dHA6Ly94ZXN0LzM2MzARhg9odHRwOi8veGVzdC8zNjQwEYYPaHR0
--cDovL3hlc3QvMzY1MBGGD2h0dHA6Ly94ZXN0LzM2NjARhg9odHRwOi8veGVzdC8z
--NjcwEYYPaHR0cDovL3hlc3QvMzY4MBGGD2h0dHA6Ly94ZXN0LzM2OTARhg9odHRw
--Oi8veGVzdC8zNzAwEYYPaHR0cDovL3hlc3QvMzcxMBGGD2h0dHA6Ly94ZXN0LzM3
--MjARhg9odHRwOi8veGVzdC8zNzMwEYYPaHR0cDovL3hlc3QvMzc0MBGGD2h0dHA6
--Ly94ZXN0LzM3NTARhg9odHRwOi8veGVzdC8zNzYwEYYPaHR0cDovL3hlc3QvMzc3
--MBGGD2h0dHA6Ly94ZXN0LzM3ODARhg9odHRwOi8veGVzdC8zNzkwEYYPaHR0cDov
--L3hlc3QvMzgwMBGGD2h0dHA6Ly94ZXN0LzM4MTARhg9odHRwOi8veGVzdC8zODIw
--EYYPaHR0cDovL3hlc3QvMzgzMBGGD2h0dHA6Ly94ZXN0LzM4NDARhg9odHRwOi8v
--eGVzdC8zODUwEYYPaHR0cDovL3hlc3QvMzg2MBGGD2h0dHA6Ly94ZXN0LzM4NzAR
--hg9odHRwOi8veGVzdC8zODgwEYYPaHR0cDovL3hlc3QvMzg5MBGGD2h0dHA6Ly94
--ZXN0LzM5MDARhg9odHRwOi8veGVzdC8zOTEwEYYPaHR0cDovL3hlc3QvMzkyMBGG
--D2h0dHA6Ly94ZXN0LzM5MzARhg9odHRwOi8veGVzdC8zOTQwEYYPaHR0cDovL3hl
--c3QvMzk1MBGGD2h0dHA6Ly94ZXN0LzM5NjARhg9odHRwOi8veGVzdC8zOTcwEYYP
--aHR0cDovL3hlc3QvMzk4MBGGD2h0dHA6Ly94ZXN0LzM5OTARhg9odHRwOi8veGVz
--dC80MDAwEYYPaHR0cDovL3hlc3QvNDAxMBGGD2h0dHA6Ly94ZXN0LzQwMjARhg9o
--dHRwOi8veGVzdC80MDMwEYYPaHR0cDovL3hlc3QvNDA0MBGGD2h0dHA6Ly94ZXN0
--LzQwNTARhg9odHRwOi8veGVzdC80MDYwEYYPaHR0cDovL3hlc3QvNDA3MBGGD2h0
--dHA6Ly94ZXN0LzQwODARhg9odHRwOi8veGVzdC80MDkwEYYPaHR0cDovL3hlc3Qv
--NDEwMBGGD2h0dHA6Ly94ZXN0LzQxMTARhg9odHRwOi8veGVzdC80MTIwEYYPaHR0
--cDovL3hlc3QvNDEzMBGGD2h0dHA6Ly94ZXN0LzQxNDARhg9odHRwOi8veGVzdC80
--MTUwEYYPaHR0cDovL3hlc3QvNDE2MBGGD2h0dHA6Ly94ZXN0LzQxNzARhg9odHRw
--Oi8veGVzdC80MTgwEYYPaHR0cDovL3hlc3QvNDE5MBGGD2h0dHA6Ly94ZXN0LzQy
--MDARhg9odHRwOi8veGVzdC80MjEwEYYPaHR0cDovL3hlc3QvNDIyMBGGD2h0dHA6
--Ly94ZXN0LzQyMzARhg9odHRwOi8veGVzdC80MjQwEYYPaHR0cDovL3hlc3QvNDI1
--MBGGD2h0dHA6Ly94ZXN0LzQyNjARhg9odHRwOi8veGVzdC80MjcwEYYPaHR0cDov
--L3hlc3QvNDI4MBGGD2h0dHA6Ly94ZXN0LzQyOTARhg9odHRwOi8veGVzdC80MzAw
--EYYPaHR0cDovL3hlc3QvNDMxMBGGD2h0dHA6Ly94ZXN0LzQzMjARhg9odHRwOi8v
--eGVzdC80MzMwEYYPaHR0cDovL3hlc3QvNDM0MBGGD2h0dHA6Ly94ZXN0LzQzNTAR
--hg9odHRwOi8veGVzdC80MzYwEYYPaHR0cDovL3hlc3QvNDM3MBGGD2h0dHA6Ly94
--ZXN0LzQzODARhg9odHRwOi8veGVzdC80MzkwEYYPaHR0cDovL3hlc3QvNDQwMBGG
--D2h0dHA6Ly94ZXN0LzQ0MTARhg9odHRwOi8veGVzdC80NDIwEYYPaHR0cDovL3hl
--c3QvNDQzMBGGD2h0dHA6Ly94ZXN0LzQ0NDARhg9odHRwOi8veGVzdC80NDUwEYYP
--aHR0cDovL3hlc3QvNDQ2MBGGD2h0dHA6Ly94ZXN0LzQ0NzARhg9odHRwOi8veGVz
--dC80NDgwEYYPaHR0cDovL3hlc3QvNDQ5MBGGD2h0dHA6Ly94ZXN0LzQ1MDARhg9o
--dHRwOi8veGVzdC80NTEwEYYPaHR0cDovL3hlc3QvNDUyMBGGD2h0dHA6Ly94ZXN0
--LzQ1MzARhg9odHRwOi8veGVzdC80NTQwEYYPaHR0cDovL3hlc3QvNDU1MBGGD2h0
--dHA6Ly94ZXN0LzQ1NjARhg9odHRwOi8veGVzdC80NTcwEYYPaHR0cDovL3hlc3Qv
--NDU4MBGGD2h0dHA6Ly94ZXN0LzQ1OTARhg9odHRwOi8veGVzdC80NjAwEYYPaHR0
--cDovL3hlc3QvNDYxMBGGD2h0dHA6Ly94ZXN0LzQ2MjARhg9odHRwOi8veGVzdC80
--NjMwEYYPaHR0cDovL3hlc3QvNDY0MBGGD2h0dHA6Ly94ZXN0LzQ2NTARhg9odHRw
--Oi8veGVzdC80NjYwEYYPaHR0cDovL3hlc3QvNDY3MBGGD2h0dHA6Ly94ZXN0LzQ2
--ODARhg9odHRwOi8veGVzdC80NjkwEYYPaHR0cDovL3hlc3QvNDcwMBGGD2h0dHA6
--Ly94ZXN0LzQ3MTARhg9odHRwOi8veGVzdC80NzIwEYYPaHR0cDovL3hlc3QvNDcz
--MBGGD2h0dHA6Ly94ZXN0LzQ3NDARhg9odHRwOi8veGVzdC80NzUwEYYPaHR0cDov
--L3hlc3QvNDc2MBGGD2h0dHA6Ly94ZXN0LzQ3NzARhg9odHRwOi8veGVzdC80Nzgw
--EYYPaHR0cDovL3hlc3QvNDc5MBGGD2h0dHA6Ly94ZXN0LzQ4MDARhg9odHRwOi8v
--eGVzdC80ODEwEYYPaHR0cDovL3hlc3QvNDgyMBGGD2h0dHA6Ly94ZXN0LzQ4MzAR
--hg9odHRwOi8veGVzdC80ODQwEYYPaHR0cDovL3hlc3QvNDg1MBGGD2h0dHA6Ly94
--ZXN0LzQ4NjARhg9odHRwOi8veGVzdC80ODcwEYYPaHR0cDovL3hlc3QvNDg4MBGG
--D2h0dHA6Ly94ZXN0LzQ4OTARhg9odHRwOi8veGVzdC80OTAwEYYPaHR0cDovL3hl
--c3QvNDkxMBGGD2h0dHA6Ly94ZXN0LzQ5MjARhg9odHRwOi8veGVzdC80OTMwEYYP
--aHR0cDovL3hlc3QvNDk0MBGGD2h0dHA6Ly94ZXN0LzQ5NTARhg9odHRwOi8veGVz
--dC80OTYwEYYPaHR0cDovL3hlc3QvNDk3MBGGD2h0dHA6Ly94ZXN0LzQ5ODARhg9o
--dHRwOi8veGVzdC80OTkwEYYPaHR0cDovL3hlc3QvNTAwMBGGD2h0dHA6Ly94ZXN0
--LzUwMTARhg9odHRwOi8veGVzdC81MDIwEYYPaHR0cDovL3hlc3QvNTAzMBGGD2h0
--dHA6Ly94ZXN0LzUwNDARhg9odHRwOi8veGVzdC81MDUwEYYPaHR0cDovL3hlc3Qv
--NTA2MBGGD2h0dHA6Ly94ZXN0LzUwNzARhg9odHRwOi8veGVzdC81MDgwEYYPaHR0
--cDovL3hlc3QvNTA5MBGGD2h0dHA6Ly94ZXN0LzUxMDARhg9odHRwOi8veGVzdC81
--MTEwEYYPaHR0cDovL3hlc3QvNTEyMBGGD2h0dHA6Ly94ZXN0LzUxMzARhg9odHRw
--Oi8veGVzdC81MTQwEYYPaHR0cDovL3hlc3QvNTE1MBGGD2h0dHA6Ly94ZXN0LzUx
--NjARhg9odHRwOi8veGVzdC81MTcwEYYPaHR0cDovL3hlc3QvNTE4MBGGD2h0dHA6
--Ly94ZXN0LzUxOTARhg9odHRwOi8veGVzdC81MjAwEYYPaHR0cDovL3hlc3QvNTIx
--MBGGD2h0dHA6Ly94ZXN0LzUyMjARhg9odHRwOi8veGVzdC81MjMwEYYPaHR0cDov
--L3hlc3QvNTI0MBGGD2h0dHA6Ly94ZXN0LzUyNTARhg9odHRwOi8veGVzdC81MjYw
--EYYPaHR0cDovL3hlc3QvNTI3MBGGD2h0dHA6Ly94ZXN0LzUyODARhg9odHRwOi8v
--eGVzdC81MjkwEYYPaHR0cDovL3hlc3QvNTMwMBGGD2h0dHA6Ly94ZXN0LzUzMTAR
--hg9odHRwOi8veGVzdC81MzIwEYYPaHR0cDovL3hlc3QvNTMzMBGGD2h0dHA6Ly94
--ZXN0LzUzNDARhg9odHRwOi8veGVzdC81MzUwEYYPaHR0cDovL3hlc3QvNTM2MBGG
--D2h0dHA6Ly94ZXN0LzUzNzARhg9odHRwOi8veGVzdC81MzgwEYYPaHR0cDovL3hl
--c3QvNTM5MBGGD2h0dHA6Ly94ZXN0LzU0MDARhg9odHRwOi8veGVzdC81NDEwEYYP
--aHR0cDovL3hlc3QvNTQyMBGGD2h0dHA6Ly94ZXN0LzU0MzARhg9odHRwOi8veGVz
--dC81NDQwEYYPaHR0cDovL3hlc3QvNTQ1MBGGD2h0dHA6Ly94ZXN0LzU0NjARhg9o
--dHRwOi8veGVzdC81NDcwEYYPaHR0cDovL3hlc3QvNTQ4MBGGD2h0dHA6Ly94ZXN0
--LzU0OTARhg9odHRwOi8veGVzdC81NTAwEYYPaHR0cDovL3hlc3QvNTUxMBGGD2h0
--dHA6Ly94ZXN0LzU1MjARhg9odHRwOi8veGVzdC81NTMwEYYPaHR0cDovL3hlc3Qv
--NTU0MBGGD2h0dHA6Ly94ZXN0LzU1NTARhg9odHRwOi8veGVzdC81NTYwEYYPaHR0
--cDovL3hlc3QvNTU3MBGGD2h0dHA6Ly94ZXN0LzU1ODARhg9odHRwOi8veGVzdC81
--NTkwEYYPaHR0cDovL3hlc3QvNTYwMBGGD2h0dHA6Ly94ZXN0LzU2MTARhg9odHRw
--Oi8veGVzdC81NjIwEYYPaHR0cDovL3hlc3QvNTYzMBGGD2h0dHA6Ly94ZXN0LzU2
--NDARhg9odHRwOi8veGVzdC81NjUwEYYPaHR0cDovL3hlc3QvNTY2MBGGD2h0dHA6
--Ly94ZXN0LzU2NzARhg9odHRwOi8veGVzdC81NjgwEYYPaHR0cDovL3hlc3QvNTY5
--MBGGD2h0dHA6Ly94ZXN0LzU3MDARhg9odHRwOi8veGVzdC81NzEwEYYPaHR0cDov
--L3hlc3QvNTcyMBGGD2h0dHA6Ly94ZXN0LzU3MzARhg9odHRwOi8veGVzdC81NzQw
--EYYPaHR0cDovL3hlc3QvNTc1MBGGD2h0dHA6Ly94ZXN0LzU3NjARhg9odHRwOi8v
--eGVzdC81NzcwEYYPaHR0cDovL3hlc3QvNTc4MBGGD2h0dHA6Ly94ZXN0LzU3OTAR
--hg9odHRwOi8veGVzdC81ODAwEYYPaHR0cDovL3hlc3QvNTgxMBGGD2h0dHA6Ly94
--ZXN0LzU4MjARhg9odHRwOi8veGVzdC81ODMwEYYPaHR0cDovL3hlc3QvNTg0MBGG
--D2h0dHA6Ly94ZXN0LzU4NTARhg9odHRwOi8veGVzdC81ODYwEYYPaHR0cDovL3hl
--c3QvNTg3MBGGD2h0dHA6Ly94ZXN0LzU4ODARhg9odHRwOi8veGVzdC81ODkwEYYP
--aHR0cDovL3hlc3QvNTkwMBGGD2h0dHA6Ly94ZXN0LzU5MTARhg9odHRwOi8veGVz
--dC81OTIwEYYPaHR0cDovL3hlc3QvNTkzMBGGD2h0dHA6Ly94ZXN0LzU5NDARhg9o
--dHRwOi8veGVzdC81OTUwEYYPaHR0cDovL3hlc3QvNTk2MBGGD2h0dHA6Ly94ZXN0
--LzU5NzARhg9odHRwOi8veGVzdC81OTgwEYYPaHR0cDovL3hlc3QvNTk5MBGGD2h0
--dHA6Ly94ZXN0LzYwMDARhg9odHRwOi8veGVzdC82MDEwEYYPaHR0cDovL3hlc3Qv
--NjAyMBGGD2h0dHA6Ly94ZXN0LzYwMzARhg9odHRwOi8veGVzdC82MDQwEYYPaHR0
--cDovL3hlc3QvNjA1MBGGD2h0dHA6Ly94ZXN0LzYwNjARhg9odHRwOi8veGVzdC82
--MDcwEYYPaHR0cDovL3hlc3QvNjA4MBGGD2h0dHA6Ly94ZXN0LzYwOTARhg9odHRw
--Oi8veGVzdC82MTAwEYYPaHR0cDovL3hlc3QvNjExMBGGD2h0dHA6Ly94ZXN0LzYx
--MjARhg9odHRwOi8veGVzdC82MTMwEYYPaHR0cDovL3hlc3QvNjE0MBGGD2h0dHA6
--Ly94ZXN0LzYxNTARhg9odHRwOi8veGVzdC82MTYwEYYPaHR0cDovL3hlc3QvNjE3
--MBGGD2h0dHA6Ly94ZXN0LzYxODARhg9odHRwOi8veGVzdC82MTkwEYYPaHR0cDov
--L3hlc3QvNjIwMBGGD2h0dHA6Ly94ZXN0LzYyMTARhg9odHRwOi8veGVzdC82MjIw
--EYYPaHR0cDovL3hlc3QvNjIzMBGGD2h0dHA6Ly94ZXN0LzYyNDARhg9odHRwOi8v
--eGVzdC82MjUwEYYPaHR0cDovL3hlc3QvNjI2MBGGD2h0dHA6Ly94ZXN0LzYyNzAR
--hg9odHRwOi8veGVzdC82MjgwEYYPaHR0cDovL3hlc3QvNjI5MBGGD2h0dHA6Ly94
--ZXN0LzYzMDARhg9odHRwOi8veGVzdC82MzEwEYYPaHR0cDovL3hlc3QvNjMyMBGG
--D2h0dHA6Ly94ZXN0LzYzMzARhg9odHRwOi8veGVzdC82MzQwEYYPaHR0cDovL3hl
--c3QvNjM1MBGGD2h0dHA6Ly94ZXN0LzYzNjARhg9odHRwOi8veGVzdC82MzcwEYYP
--aHR0cDovL3hlc3QvNjM4MBGGD2h0dHA6Ly94ZXN0LzYzOTARhg9odHRwOi8veGVz
--dC82NDAwEYYPaHR0cDovL3hlc3QvNjQxMBGGD2h0dHA6Ly94ZXN0LzY0MjARhg9o
--dHRwOi8veGVzdC82NDMwEYYPaHR0cDovL3hlc3QvNjQ0MBGGD2h0dHA6Ly94ZXN0
--LzY0NTARhg9odHRwOi8veGVzdC82NDYwEYYPaHR0cDovL3hlc3QvNjQ3MBGGD2h0
--dHA6Ly94ZXN0LzY0ODARhg9odHRwOi8veGVzdC82NDkwEYYPaHR0cDovL3hlc3Qv
--NjUwMBGGD2h0dHA6Ly94ZXN0LzY1MTARhg9odHRwOi8veGVzdC82NTIwEYYPaHR0
--cDovL3hlc3QvNjUzMBGGD2h0dHA6Ly94ZXN0LzY1NDARhg9odHRwOi8veGVzdC82
--NTUwEYYPaHR0cDovL3hlc3QvNjU2MBGGD2h0dHA6Ly94ZXN0LzY1NzARhg9odHRw
--Oi8veGVzdC82NTgwEYYPaHR0cDovL3hlc3QvNjU5MBGGD2h0dHA6Ly94ZXN0LzY2
--MDARhg9odHRwOi8veGVzdC82NjEwEYYPaHR0cDovL3hlc3QvNjYyMBGGD2h0dHA6
--Ly94ZXN0LzY2MzARhg9odHRwOi8veGVzdC82NjQwEYYPaHR0cDovL3hlc3QvNjY1
--MBGGD2h0dHA6Ly94ZXN0LzY2NjARhg9odHRwOi8veGVzdC82NjcwEYYPaHR0cDov
--L3hlc3QvNjY4MBGGD2h0dHA6Ly94ZXN0LzY2OTARhg9odHRwOi8veGVzdC82NzAw
--EYYPaHR0cDovL3hlc3QvNjcxMBGGD2h0dHA6Ly94ZXN0LzY3MjARhg9odHRwOi8v
--eGVzdC82NzMwEYYPaHR0cDovL3hlc3QvNjc0MBGGD2h0dHA6Ly94ZXN0LzY3NTAR
--hg9odHRwOi8veGVzdC82NzYwEYYPaHR0cDovL3hlc3QvNjc3MBGGD2h0dHA6Ly94
--ZXN0LzY3ODARhg9odHRwOi8veGVzdC82NzkwEYYPaHR0cDovL3hlc3QvNjgwMBGG
--D2h0dHA6Ly94ZXN0LzY4MTARhg9odHRwOi8veGVzdC82ODIwEYYPaHR0cDovL3hl
--c3QvNjgzMBGGD2h0dHA6Ly94ZXN0LzY4NDARhg9odHRwOi8veGVzdC82ODUwEYYP
--aHR0cDovL3hlc3QvNjg2MBGGD2h0dHA6Ly94ZXN0LzY4NzARhg9odHRwOi8veGVz
--dC82ODgwEYYPaHR0cDovL3hlc3QvNjg5MBGGD2h0dHA6Ly94ZXN0LzY5MDARhg9o
--dHRwOi8veGVzdC82OTEwEYYPaHR0cDovL3hlc3QvNjkyMBGGD2h0dHA6Ly94ZXN0
--LzY5MzARhg9odHRwOi8veGVzdC82OTQwEYYPaHR0cDovL3hlc3QvNjk1MBGGD2h0
--dHA6Ly94ZXN0LzY5NjARhg9odHRwOi8veGVzdC82OTcwEYYPaHR0cDovL3hlc3Qv
--Njk4MBGGD2h0dHA6Ly94ZXN0LzY5OTARhg9odHRwOi8veGVzdC83MDAwEYYPaHR0
--cDovL3hlc3QvNzAxMBGGD2h0dHA6Ly94ZXN0LzcwMjARhg9odHRwOi8veGVzdC83
--MDMwEYYPaHR0cDovL3hlc3QvNzA0MBGGD2h0dHA6Ly94ZXN0LzcwNTARhg9odHRw
--Oi8veGVzdC83MDYwEYYPaHR0cDovL3hlc3QvNzA3MBGGD2h0dHA6Ly94ZXN0Lzcw
--ODARhg9odHRwOi8veGVzdC83MDkwEYYPaHR0cDovL3hlc3QvNzEwMBGGD2h0dHA6
--Ly94ZXN0LzcxMTARhg9odHRwOi8veGVzdC83MTIwEYYPaHR0cDovL3hlc3QvNzEz
--MBGGD2h0dHA6Ly94ZXN0LzcxNDARhg9odHRwOi8veGVzdC83MTUwEYYPaHR0cDov
--L3hlc3QvNzE2MBGGD2h0dHA6Ly94ZXN0LzcxNzARhg9odHRwOi8veGVzdC83MTgw
--EYYPaHR0cDovL3hlc3QvNzE5MBGGD2h0dHA6Ly94ZXN0LzcyMDARhg9odHRwOi8v
--eGVzdC83MjEwEYYPaHR0cDovL3hlc3QvNzIyMBGGD2h0dHA6Ly94ZXN0LzcyMzAR
--hg9odHRwOi8veGVzdC83MjQwEYYPaHR0cDovL3hlc3QvNzI1MBGGD2h0dHA6Ly94
--ZXN0LzcyNjARhg9odHRwOi8veGVzdC83MjcwEYYPaHR0cDovL3hlc3QvNzI4MBGG
--D2h0dHA6Ly94ZXN0LzcyOTARhg9odHRwOi8veGVzdC83MzAwEYYPaHR0cDovL3hl
--c3QvNzMxMBGGD2h0dHA6Ly94ZXN0LzczMjARhg9odHRwOi8veGVzdC83MzMwEYYP
--aHR0cDovL3hlc3QvNzM0MBGGD2h0dHA6Ly94ZXN0LzczNTARhg9odHRwOi8veGVz
--dC83MzYwEYYPaHR0cDovL3hlc3QvNzM3MBGGD2h0dHA6Ly94ZXN0LzczODARhg9o
--dHRwOi8veGVzdC83MzkwEYYPaHR0cDovL3hlc3QvNzQwMBGGD2h0dHA6Ly94ZXN0
--Lzc0MTARhg9odHRwOi8veGVzdC83NDIwEYYPaHR0cDovL3hlc3QvNzQzMBGGD2h0
--dHA6Ly94ZXN0Lzc0NDARhg9odHRwOi8veGVzdC83NDUwEYYPaHR0cDovL3hlc3Qv
--NzQ2MBGGD2h0dHA6Ly94ZXN0Lzc0NzARhg9odHRwOi8veGVzdC83NDgwEYYPaHR0
--cDovL3hlc3QvNzQ5MBGGD2h0dHA6Ly94ZXN0Lzc1MDARhg9odHRwOi8veGVzdC83
--NTEwEYYPaHR0cDovL3hlc3QvNzUyMBGGD2h0dHA6Ly94ZXN0Lzc1MzARhg9odHRw
--Oi8veGVzdC83NTQwEYYPaHR0cDovL3hlc3QvNzU1MBGGD2h0dHA6Ly94ZXN0Lzc1
--NjARhg9odHRwOi8veGVzdC83NTcwEYYPaHR0cDovL3hlc3QvNzU4MBGGD2h0dHA6
--Ly94ZXN0Lzc1OTARhg9odHRwOi8veGVzdC83NjAwEYYPaHR0cDovL3hlc3QvNzYx
--MBGGD2h0dHA6Ly94ZXN0Lzc2MjARhg9odHRwOi8veGVzdC83NjMwEYYPaHR0cDov
--L3hlc3QvNzY0MBGGD2h0dHA6Ly94ZXN0Lzc2NTARhg9odHRwOi8veGVzdC83NjYw
--EYYPaHR0cDovL3hlc3QvNzY3MBGGD2h0dHA6Ly94ZXN0Lzc2ODARhg9odHRwOi8v
--eGVzdC83NjkwEYYPaHR0cDovL3hlc3QvNzcwMBGGD2h0dHA6Ly94ZXN0Lzc3MTAR
--hg9odHRwOi8veGVzdC83NzIwEYYPaHR0cDovL3hlc3QvNzczMBGGD2h0dHA6Ly94
--ZXN0Lzc3NDARhg9odHRwOi8veGVzdC83NzUwEYYPaHR0cDovL3hlc3QvNzc2MBGG
--D2h0dHA6Ly94ZXN0Lzc3NzARhg9odHRwOi8veGVzdC83NzgwEYYPaHR0cDovL3hl
--c3QvNzc5MBGGD2h0dHA6Ly94ZXN0Lzc4MDARhg9odHRwOi8veGVzdC83ODEwEYYP
--aHR0cDovL3hlc3QvNzgyMBGGD2h0dHA6Ly94ZXN0Lzc4MzARhg9odHRwOi8veGVz
--dC83ODQwEYYPaHR0cDovL3hlc3QvNzg1MBGGD2h0dHA6Ly94ZXN0Lzc4NjARhg9o
--dHRwOi8veGVzdC83ODcwEYYPaHR0cDovL3hlc3QvNzg4MBGGD2h0dHA6Ly94ZXN0
--Lzc4OTARhg9odHRwOi8veGVzdC83OTAwEYYPaHR0cDovL3hlc3QvNzkxMBGGD2h0
--dHA6Ly94ZXN0Lzc5MjARhg9odHRwOi8veGVzdC83OTMwEYYPaHR0cDovL3hlc3Qv
--Nzk0MBGGD2h0dHA6Ly94ZXN0Lzc5NTARhg9odHRwOi8veGVzdC83OTYwEYYPaHR0
--cDovL3hlc3QvNzk3MBGGD2h0dHA6Ly94ZXN0Lzc5ODARhg9odHRwOi8veGVzdC83
--OTkwEYYPaHR0cDovL3hlc3QvODAwMBGGD2h0dHA6Ly94ZXN0LzgwMTARhg9odHRw
--Oi8veGVzdC84MDIwEYYPaHR0cDovL3hlc3QvODAzMBGGD2h0dHA6Ly94ZXN0Lzgw
--NDARhg9odHRwOi8veGVzdC84MDUwEYYPaHR0cDovL3hlc3QvODA2MBGGD2h0dHA6
--Ly94ZXN0LzgwNzARhg9odHRwOi8veGVzdC84MDgwEYYPaHR0cDovL3hlc3QvODA5
--MBGGD2h0dHA6Ly94ZXN0LzgxMDARhg9odHRwOi8veGVzdC84MTEwEYYPaHR0cDov
--L3hlc3QvODEyMBGGD2h0dHA6Ly94ZXN0LzgxMzARhg9odHRwOi8veGVzdC84MTQw
--EYYPaHR0cDovL3hlc3QvODE1MBGGD2h0dHA6Ly94ZXN0LzgxNjARhg9odHRwOi8v
--eGVzdC84MTcwEYYPaHR0cDovL3hlc3QvODE4MBGGD2h0dHA6Ly94ZXN0LzgxOTAR
--hg9odHRwOi8veGVzdC84MjAwEYYPaHR0cDovL3hlc3QvODIxMBGGD2h0dHA6Ly94
--ZXN0LzgyMjARhg9odHRwOi8veGVzdC84MjMwEYYPaHR0cDovL3hlc3QvODI0MBGG
--D2h0dHA6Ly94ZXN0LzgyNTARhg9odHRwOi8veGVzdC84MjYwEYYPaHR0cDovL3hl
--c3QvODI3MBGGD2h0dHA6Ly94ZXN0LzgyODARhg9odHRwOi8veGVzdC84MjkwEYYP
--aHR0cDovL3hlc3QvODMwMBGGD2h0dHA6Ly94ZXN0LzgzMTARhg9odHRwOi8veGVz
--dC84MzIwEYYPaHR0cDovL3hlc3QvODMzMBGGD2h0dHA6Ly94ZXN0LzgzNDARhg9o
--dHRwOi8veGVzdC84MzUwEYYPaHR0cDovL3hlc3QvODM2MBGGD2h0dHA6Ly94ZXN0
--LzgzNzARhg9odHRwOi8veGVzdC84MzgwEYYPaHR0cDovL3hlc3QvODM5MBGGD2h0
--dHA6Ly94ZXN0Lzg0MDARhg9odHRwOi8veGVzdC84NDEwEYYPaHR0cDovL3hlc3Qv
--ODQyMBGGD2h0dHA6Ly94ZXN0Lzg0MzARhg9odHRwOi8veGVzdC84NDQwEYYPaHR0
--cDovL3hlc3QvODQ1MBGGD2h0dHA6Ly94ZXN0Lzg0NjARhg9odHRwOi8veGVzdC84
--NDcwEYYPaHR0cDovL3hlc3QvODQ4MBGGD2h0dHA6Ly94ZXN0Lzg0OTARhg9odHRw
--Oi8veGVzdC84NTAwEYYPaHR0cDovL3hlc3QvODUxMBGGD2h0dHA6Ly94ZXN0Lzg1
--MjARhg9odHRwOi8veGVzdC84NTMwEYYPaHR0cDovL3hlc3QvODU0MBGGD2h0dHA6
--Ly94ZXN0Lzg1NTARhg9odHRwOi8veGVzdC84NTYwEYYPaHR0cDovL3hlc3QvODU3
--MBGGD2h0dHA6Ly94ZXN0Lzg1ODARhg9odHRwOi8veGVzdC84NTkwEYYPaHR0cDov
--L3hlc3QvODYwMBGGD2h0dHA6Ly94ZXN0Lzg2MTARhg9odHRwOi8veGVzdC84NjIw
--EYYPaHR0cDovL3hlc3QvODYzMBGGD2h0dHA6Ly94ZXN0Lzg2NDARhg9odHRwOi8v
--eGVzdC84NjUwEYYPaHR0cDovL3hlc3QvODY2MBGGD2h0dHA6Ly94ZXN0Lzg2NzAR
--hg9odHRwOi8veGVzdC84NjgwEYYPaHR0cDovL3hlc3QvODY5MBGGD2h0dHA6Ly94
--ZXN0Lzg3MDARhg9odHRwOi8veGVzdC84NzEwEYYPaHR0cDovL3hlc3QvODcyMBGG
--D2h0dHA6Ly94ZXN0Lzg3MzARhg9odHRwOi8veGVzdC84NzQwEYYPaHR0cDovL3hl
--c3QvODc1MBGGD2h0dHA6Ly94ZXN0Lzg3NjARhg9odHRwOi8veGVzdC84NzcwEYYP
--aHR0cDovL3hlc3QvODc4MBGGD2h0dHA6Ly94ZXN0Lzg3OTARhg9odHRwOi8veGVz
--dC84ODAwEYYPaHR0cDovL3hlc3QvODgxMBGGD2h0dHA6Ly94ZXN0Lzg4MjARhg9o
--dHRwOi8veGVzdC84ODMwEYYPaHR0cDovL3hlc3QvODg0MBGGD2h0dHA6Ly94ZXN0
--Lzg4NTARhg9odHRwOi8veGVzdC84ODYwEYYPaHR0cDovL3hlc3QvODg3MBGGD2h0
--dHA6Ly94ZXN0Lzg4ODARhg9odHRwOi8veGVzdC84ODkwEYYPaHR0cDovL3hlc3Qv
--ODkwMBGGD2h0dHA6Ly94ZXN0Lzg5MTARhg9odHRwOi8veGVzdC84OTIwEYYPaHR0
--cDovL3hlc3QvODkzMBGGD2h0dHA6Ly94ZXN0Lzg5NDARhg9odHRwOi8veGVzdC84
--OTUwEYYPaHR0cDovL3hlc3QvODk2MBGGD2h0dHA6Ly94ZXN0Lzg5NzARhg9odHRw
--Oi8veGVzdC84OTgwEYYPaHR0cDovL3hlc3QvODk5MBGGD2h0dHA6Ly94ZXN0Lzkw
--MDARhg9odHRwOi8veGVzdC85MDEwEYYPaHR0cDovL3hlc3QvOTAyMBGGD2h0dHA6
--Ly94ZXN0LzkwMzARhg9odHRwOi8veGVzdC85MDQwEYYPaHR0cDovL3hlc3QvOTA1
--MBGGD2h0dHA6Ly94ZXN0LzkwNjARhg9odHRwOi8veGVzdC85MDcwEYYPaHR0cDov
--L3hlc3QvOTA4MBGGD2h0dHA6Ly94ZXN0LzkwOTARhg9odHRwOi8veGVzdC85MTAw
--EYYPaHR0cDovL3hlc3QvOTExMBGGD2h0dHA6Ly94ZXN0LzkxMjARhg9odHRwOi8v
--eGVzdC85MTMwEYYPaHR0cDovL3hlc3QvOTE0MBGGD2h0dHA6Ly94ZXN0LzkxNTAR
--hg9odHRwOi8veGVzdC85MTYwEYYPaHR0cDovL3hlc3QvOTE3MBGGD2h0dHA6Ly94
--ZXN0LzkxODARhg9odHRwOi8veGVzdC85MTkwEYYPaHR0cDovL3hlc3QvOTIwMBGG
--D2h0dHA6Ly94ZXN0LzkyMTARhg9odHRwOi8veGVzdC85MjIwEYYPaHR0cDovL3hl
--c3QvOTIzMBGGD2h0dHA6Ly94ZXN0LzkyNDARhg9odHRwOi8veGVzdC85MjUwEYYP
--aHR0cDovL3hlc3QvOTI2MBGGD2h0dHA6Ly94ZXN0LzkyNzARhg9odHRwOi8veGVz
--dC85MjgwEYYPaHR0cDovL3hlc3QvOTI5MBGGD2h0dHA6Ly94ZXN0LzkzMDARhg9o
--dHRwOi8veGVzdC85MzEwEYYPaHR0cDovL3hlc3QvOTMyMBGGD2h0dHA6Ly94ZXN0
--LzkzMzARhg9odHRwOi8veGVzdC85MzQwEYYPaHR0cDovL3hlc3QvOTM1MBGGD2h0
--dHA6Ly94ZXN0LzkzNjARhg9odHRwOi8veGVzdC85MzcwEYYPaHR0cDovL3hlc3Qv
--OTM4MBGGD2h0dHA6Ly94ZXN0LzkzOTARhg9odHRwOi8veGVzdC85NDAwEYYPaHR0
--cDovL3hlc3QvOTQxMBGGD2h0dHA6Ly94ZXN0Lzk0MjARhg9odHRwOi8veGVzdC85
--NDMwEYYPaHR0cDovL3hlc3QvOTQ0MBGGD2h0dHA6Ly94ZXN0Lzk0NTARhg9odHRw
--Oi8veGVzdC85NDYwEYYPaHR0cDovL3hlc3QvOTQ3MBGGD2h0dHA6Ly94ZXN0Lzk0
--ODARhg9odHRwOi8veGVzdC85NDkwEYYPaHR0cDovL3hlc3QvOTUwMBGGD2h0dHA6
--Ly94ZXN0Lzk1MTARhg9odHRwOi8veGVzdC85NTIwEYYPaHR0cDovL3hlc3QvOTUz
--MBGGD2h0dHA6Ly94ZXN0Lzk1NDARhg9odHRwOi8veGVzdC85NTUwEYYPaHR0cDov
--L3hlc3QvOTU2MBGGD2h0dHA6Ly94ZXN0Lzk1NzARhg9odHRwOi8veGVzdC85NTgw
--EYYPaHR0cDovL3hlc3QvOTU5MBGGD2h0dHA6Ly94ZXN0Lzk2MDARhg9odHRwOi8v
--eGVzdC85NjEwEYYPaHR0cDovL3hlc3QvOTYyMBGGD2h0dHA6Ly94ZXN0Lzk2MzAR
--hg9odHRwOi8veGVzdC85NjQwEYYPaHR0cDovL3hlc3QvOTY1MBGGD2h0dHA6Ly94
--ZXN0Lzk2NjARhg9odHRwOi8veGVzdC85NjcwEYYPaHR0cDovL3hlc3QvOTY4MBGG
--D2h0dHA6Ly94ZXN0Lzk2OTARhg9odHRwOi8veGVzdC85NzAwEYYPaHR0cDovL3hl
--c3QvOTcxMBGGD2h0dHA6Ly94ZXN0Lzk3MjARhg9odHRwOi8veGVzdC85NzMwEYYP
--aHR0cDovL3hlc3QvOTc0MBGGD2h0dHA6Ly94ZXN0Lzk3NTARhg9odHRwOi8veGVz
--dC85NzYwEYYPaHR0cDovL3hlc3QvOTc3MBGGD2h0dHA6Ly94ZXN0Lzk3ODARhg9o
--dHRwOi8veGVzdC85NzkwEYYPaHR0cDovL3hlc3QvOTgwMBGGD2h0dHA6Ly94ZXN0
--Lzk4MTARhg9odHRwOi8veGVzdC85ODIwEYYPaHR0cDovL3hlc3QvOTgzMBGGD2h0
--dHA6Ly94ZXN0Lzk4NDARhg9odHRwOi8veGVzdC85ODUwEYYPaHR0cDovL3hlc3Qv
--OTg2MBGGD2h0dHA6Ly94ZXN0Lzk4NzARhg9odHRwOi8veGVzdC85ODgwEYYPaHR0
--cDovL3hlc3QvOTg5MBGGD2h0dHA6Ly94ZXN0Lzk5MDARhg9odHRwOi8veGVzdC85
--OTEwEYYPaHR0cDovL3hlc3QvOTkyMBGGD2h0dHA6Ly94ZXN0Lzk5MzARhg9odHRw
--Oi8veGVzdC85OTQwEYYPaHR0cDovL3hlc3QvOTk1MBGGD2h0dHA6Ly94ZXN0Lzk5
--NjARhg9odHRwOi8veGVzdC85OTcwEYYPaHR0cDovL3hlc3QvOTk4MBGGD2h0dHA6
--Ly94ZXN0Lzk5OTAShhBodHRwOi8veGVzdC8xMDAwMBKGEGh0dHA6Ly94ZXN0LzEw
--MDEwEoYQaHR0cDovL3hlc3QvMTAwMjAShhBodHRwOi8veGVzdC8xMDAzMBKGEGh0
--dHA6Ly94ZXN0LzEwMDQwEoYQaHR0cDovL3hlc3QvMTAwNTAShhBodHRwOi8veGVz
--dC8xMDA2MBKGEGh0dHA6Ly94ZXN0LzEwMDcwEoYQaHR0cDovL3hlc3QvMTAwODAS
--hhBodHRwOi8veGVzdC8xMDA5MBKGEGh0dHA6Ly94ZXN0LzEwMTAwEoYQaHR0cDov
--L3hlc3QvMTAxMTAShhBodHRwOi8veGVzdC8xMDEyMBKGEGh0dHA6Ly94ZXN0LzEw
--MTMwEoYQaHR0cDovL3hlc3QvMTAxNDAShhBodHRwOi8veGVzdC8xMDE1MBKGEGh0
--dHA6Ly94ZXN0LzEwMTYwEoYQaHR0cDovL3hlc3QvMTAxNzAShhBodHRwOi8veGVz
--dC8xMDE4MBKGEGh0dHA6Ly94ZXN0LzEwMTkwEoYQaHR0cDovL3hlc3QvMTAyMDAS
--hhBodHRwOi8veGVzdC8xMDIxMBKGEGh0dHA6Ly94ZXN0LzEwMjIwEoYQaHR0cDov
--L3hlc3QvMTAyMzAShhBodHRwOi8veGVzdC8xMDI0MA0GCSqGSIb3DQEBCwUAA4IB
--AQBr+8lS062gdeMHGF9s3XW0PaRAD5cuwgg71sfF2HzXGG57K5l0fdCx+lOxfbgO
--jxZMddd4/5DCFPohZqUnQ/aME3fiusUvKTZWSm4HUeebz3gXa2Hvh5+6g3fw8yUB
--HQzSSmWxwA4OksrZsdwlJIK4mt+NkkK2KI5dqvb/YhO/jDzGPIgkC1pWKtp0HSOz
--4AUaV4lrtjCBYyBa5FZ5fF3PnifFtbM19g5scZxYmUD5OHTfEZqkCYVmWI6rv1im
--lvznOJXxE0KlszJTqa9ThRNmktMpeyf6nzsczNQRaRFs/XdNcB1KfJ+8p8NlUs54
--Eg9Kb0fnRM6aQn2TKWMaSWrC
-------END CERTIFICATE-----
--
--Certificate:
-- Data:
-- Version: 3 (0x2)
-- Serial Number:
-- 3c:e5:fc:81:88:59:a8:50:16:c1:7f:d7:e5:2a:e5:96:7f:c2:f6:f5
-- Signature Algorithm: sha256WithRSAEncryption
-- Issuer: CN=Root
-- Validity
-- Not Before: Oct 5 12:00:00 2021 GMT
-- Not After : Oct 5 12:00:00 2022 GMT
-- Subject: CN=Root
-- Subject Public Key Info:
-- Public Key Algorithm: rsaEncryption
-- RSA Public-Key: (2048 bit)
-- Modulus:
-- 00:cc:7a:cf:ec:bd:a0:01:c3:26:51:d8:28:ae:80:
-- b6:0b:d2:76:d7:04:86:18:ac:fd:f2:8f:64:e7:92:
-- d6:d0:42:32:4f:cd:d0:4d:d0:ac:71:9a:73:80:0a:
-- 04:70:20:a3:2f:a0:9b:f4:3e:19:cf:69:54:b5:be:
-- 85:dd:6e:b2:0b:14:df:27:bf:2c:a1:bb:b2:a7:23:
-- 0c:fb:ae:78:69:6b:1a:6e:7c:38:7f:15:5d:e5:cf:
-- 27:32:56:2a:f1:87:fe:3a:16:73:e6:dd:83:f2:f2:
-- ae:31:c8:93:d2:49:b7:b1:71:f5:55:de:bb:85:cd:
-- cb:19:74:1d:61:49:da:83:44:ec:4c:5e:aa:d5:8b:
-- 32:1a:db:77:d5:b1:83:8c:00:b9:55:b7:64:78:5c:
-- 87:c9:68:58:bd:de:af:50:e2:bb:bd:32:cd:fa:3d:
-- df:3b:3d:93:10:16:b6:6d:90:1d:d7:7d:e9:ea:7e:
-- 1e:2e:c8:10:a4:14:ad:62:72:af:65:95:1f:a7:6e:
-- 81:84:9f:df:85:4e:c0:3e:7f:8c:02:0a:f0:65:58:
-- 84:7c:6a:e1:53:af:3c:f1:7a:b9:33:c8:e7:f9:ed:
-- 92:46:00:50:62:f0:89:41:57:1e:81:d1:04:12:b3:
-- fc:25:60:17:5c:0b:eb:a9:46:4a:03:39:16:11:4d:
-- e1:7b
-- Exponent: 65537 (0x10001)
-- X509v3 extensions:
-- X509v3 Subject Key Identifier:
-- B6:C2:EF:9F:D1:29:CB:0F:89:8C:4C:52:D4:BD:40:B7:11:B7:71:DD
-- X509v3 Authority Key Identifier:
-- keyid:B6:C2:EF:9F:D1:29:CB:0F:89:8C:4C:52:D4:BD:40:B7:11:B7:71:DD
--
-- Authority Information Access:
-- CA Issuers - URI:http://url-for-aia/Root.cer
--
-- X509v3 CRL Distribution Points:
--
-- Full Name:
-- URI:http://url-for-crl/Root.crl
--
-- X509v3 Key Usage: critical
-- Certificate Sign, CRL Sign
-- X509v3 Basic Constraints: critical
-- CA:TRUE
-- Signature Algorithm: sha256WithRSAEncryption
-- 3a:c4:f6:50:32:77:14:e2:a8:69:9b:ad:85:a0:fa:95:08:d2:
-- 22:cb:d3:aa:53:94:e5:1f:92:fa:d5:7b:c8:a5:b6:13:15:42:
-- 42:2c:ce:48:e9:f1:55:c7:cd:f4:29:b6:46:e9:08:81:8c:83:
-- 82:c5:d4:f7:1e:90:3c:2d:78:39:7f:be:e8:30:5e:f7:d4:72:
-- e4:db:0a:09:49:c0:ce:83:66:c0:16:73:f4:cf:67:ad:74:e3:
-- 10:60:72:16:77:4a:c8:08:88:93:62:c0:4a:23:0b:74:3e:63:
-- 98:9c:54:1d:34:d5:b6:da:bc:7c:5a:f2:68:22:e2:d9:15:12:
-- 84:04:f6:3e:b3:ac:97:bc:b4:54:93:3c:d4:0b:25:e4:c1:34:
-- 5a:98:bc:aa:de:78:bb:12:3f:33:82:a2:bf:5f:82:e6:9e:ad:
-- 85:21:21:d9:9d:41:5e:4f:72:a3:16:8d:7d:b4:1d:26:d8:77:
-- d8:29:22:13:a2:f6:d7:9f:1c:60:2f:17:9e:fd:f4:63:a3:c6:
-- ed:e3:47:43:b7:73:39:82:97:18:fa:4b:db:2e:ac:d3:7b:54:
-- cd:f8:d0:eb:70:13:03:8a:4b:9b:90:62:4e:b0:34:22:49:ec:
-- 78:2a:47:97:60:13:03:23:ed:09:ff:a8:00:59:6a:2c:d1:2e:
-- d0:93:0b:59
-------BEGIN CERTIFICATE-----
--MIIDeDCCAmCgAwIBAgIUPOX8gYhZqFAWwX/X5Srlln/C9vUwDQYJKoZIhvcNAQEL
--BQAwDzENMAsGA1UEAwwEUm9vdDAeFw0yMTEwMDUxMjAwMDBaFw0yMjEwMDUxMjAw
--MDBaMA8xDTALBgNVBAMMBFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
--AoIBAQDMes/svaABwyZR2CiugLYL0nbXBIYYrP3yj2TnktbQQjJPzdBN0KxxmnOA
--CgRwIKMvoJv0PhnPaVS1voXdbrILFN8nvyyhu7KnIwz7rnhpaxpufDh/FV3lzycy
--Virxh/46FnPm3YPy8q4xyJPSSbexcfVV3ruFzcsZdB1hSdqDROxMXqrVizIa23fV
--sYOMALlVt2R4XIfJaFi93q9Q4ru9Ms36Pd87PZMQFrZtkB3Xfenqfh4uyBCkFK1i
--cq9llR+nboGEn9+FTsA+f4wCCvBlWIR8auFTrzzxerkzyOf57ZJGAFBi8IlBVx6B
--0QQSs/wlYBdcC+upRkoDORYRTeF7AgMBAAGjgcswgcgwHQYDVR0OBBYEFLbC75/R
--KcsPiYxMUtS9QLcRt3HdMB8GA1UdIwQYMBaAFLbC75/RKcsPiYxMUtS9QLcRt3Hd
--MDcGCCsGAQUFBwEBBCswKTAnBggrBgEFBQcwAoYbaHR0cDovL3VybC1mb3ItYWlh
--L1Jvb3QuY2VyMCwGA1UdHwQlMCMwIaAfoB2GG2h0dHA6Ly91cmwtZm9yLWNybC9S
--b290LmNybDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG
--9w0BAQsFAAOCAQEAOsT2UDJ3FOKoaZuthaD6lQjSIsvTqlOU5R+S+tV7yKW2ExVC
--QizOSOnxVcfN9Cm2RukIgYyDgsXU9x6QPC14OX++6DBe99Ry5NsKCUnAzoNmwBZz
--9M9nrXTjEGByFndKyAiIk2LASiMLdD5jmJxUHTTVttq8fFryaCLi2RUShAT2PrOs
--l7y0VJM81Asl5ME0Wpi8qt54uxI/M4Kiv1+C5p6thSEh2Z1BXk9yoxaNfbQdJth3
--2CkiE6L2158cYC8Xnv30Y6PG7eNHQ7dzOYKXGPpL2y6s03tUzfjQ63ATA4pLm5Bi
--TrA0IknseCpHl2ATAyPtCf+oAFlqLNEu0JMLWQ==
-------END CERTIFICATE-----
-diff --git a/net/data/verify_certificate_chain_unittest/many-names/ok-different-types-ips.test b/net/data/verify_certificate_chain_unittest/many-names/ok-different-types-ips.test
-deleted file mode 100644
-index b65959ca6a117..0000000000000
---- a/net/data/verify_certificate_chain_unittest/many-names/ok-different-types-ips.test
-+++ /dev/null
-@@ -1,5 +0,0 @@
--chain: ok-different-types-ips.pem
--last_cert_trust: TRUSTED_ANCHOR
--utc_time: DEFAULT
--key_purpose: SERVER_AUTH
--expected_errors:
-diff --git a/net/data/verify_certificate_chain_unittest/many-names/toomany-all-types.pem b/net/data/verify_certificate_chain_unittest/many-names/toomany-all-types.pem
-index 6e8eb13fd5247..159ea50748182 100644
---- a/net/data/verify_certificate_chain_unittest/many-names/toomany-all-types.pem
-+++ b/net/data/verify_certificate_chain_unittest/many-names/toomany-all-types.pem
-@@ -1,4 +1,4 @@
--[Created by: generate-chains.py]
-+[Created by: ./generate-chains.py]
-
- A chain containing a large number of different types of name
- constraints and names, above the limit.
-@@ -8,7 +8,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 2f:ab:b4:3d:dc:c0:77:80:2a:03:09:ad:43:74:02:bf:98:d8:d5
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Intermediate
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-@@ -56,25 +56,25 @@ Certificate:
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
-- DNS:t0.test, DNS:t1.test, DNS:t2.test, DNS:t3.test, DNS:t4.test, DNS:t5.test, DNS:t6.test, DNS:t7.test, DNS:t8.test, DNS:t9.test, DNS:t10.test, DNS:t11.test, DNS:t12.test, DNS:t13.test, DNS:t14.test, DNS:t15.test, DNS:t16.test, DNS:t17.test, DNS:t18.test, DNS:t19.test, DNS:t20.test, DNS:t21.test, DNS:t22.test, DNS:t23.test, DNS:t24.test, DNS:t25.test, DNS:t26.test, DNS:t27.test, DNS:t28.test, DNS:t29.test, DNS:t30.test, DNS:t31.test, DNS:t32.test, DNS:t33.test, DNS:t34.test, DNS:t35.test, DNS:t36.test, DNS:t37.test, DNS:t38.test, DNS:t39.test, DNS:t40.test, DNS:t41.test, DNS:t42.test, DNS:t43.test, DNS:t44.test, DNS:t45.test, DNS:t46.test, DNS:t47.test, DNS:t48.test, DNS:t49.test, DNS:t50.test, DNS:t51.test, DNS:t52.test, DNS:t53.test, DNS:t54.test, DNS:t55.test, DNS:t56.test, DNS:t57.test, DNS:t58.test, DNS:t59.test, DNS:t60.test, DNS:t61.test, DNS:t62.test, DNS:t63.test, DNS:t64.test, DNS:t65.test, DNS:t66.test, DNS:t67.test, DNS:t68.test, DNS:t69.test, DNS:t70.test, DNS:t71.test, DNS:t72.test, DNS:t73.test, DNS:t74.test, DNS:t75.test, DNS:t76.test, DNS:t77.test, DNS:t78.test, DNS:t79.test, DNS:t80.test, DNS:t81.test, DNS:t82.test, DNS:t83.test, DNS:t84.test, DNS:t85.test, DNS:t86.test, DNS:t87.test, DNS:t88.test, DNS:t89.test, DNS:t90.test, DNS:t91.test, DNS:t92.test, DNS:t93.test, DNS:t94.test, DNS:t95.test, DNS:t96.test, DNS:t97.test, DNS:t98.test, DNS:t99.test, DNS:t100.test, DNS:t101.test, DNS:t102.test, DNS:t103.test, DNS:t104.test, DNS:t105.test, DNS:t106.test, DNS:t107.test, DNS:t108.test, DNS:t109.test, DNS:t110.test, DNS:t111.test, DNS:t112.test, DNS:t113.test, DNS:t114.test, DNS:t115.test, DNS:t116.test, DNS:t117.test, DNS:t118.test, DNS:t119.test, DNS:t120.test, DNS:t121.test, DNS:t122.test, DNS:t123.test, DNS:t124.test, DNS:t125.test, DNS:t126.test, DNS:t127.test, DNS:t128.test, DNS:t129.test, DNS:t130.test, DNS:t131.test, DNS:t132.test, DNS:t133.test, DNS:t134.test, DNS:t135.test, DNS:t136.test, DNS:t137.test, DNS:t138.test, DNS:t139.test, DNS:t140.test, DNS:t141.test, DNS:t142.test, DNS:t143.test, DNS:t144.test, DNS:t145.test, DNS:t146.test, DNS:t147.test, DNS:t148.test, DNS:t149.test, DNS:t150.test, DNS:t151.test, DNS:t152.test, DNS:t153.test, DNS:t154.test, DNS:t155.test, DNS:t156.test, DNS:t157.test, DNS:t158.test, DNS:t159.test, DNS:t160.test, DNS:t161.test, DNS:t162.test, DNS:t163.test, DNS:t164.test, DNS:t165.test, DNS:t166.test, DNS:t167.test, DNS:t168.test, DNS:t169.test, DNS:t170.test, DNS:t171.test, DNS:t172.test, DNS:t173.test, DNS:t174.test, DNS:t175.test, DNS:t176.test, DNS:t177.test, DNS:t178.test, DNS:t179.test, DNS:t180.test, DNS:t181.test, DNS:t182.test, DNS:t183.test, DNS:t184.test, DNS:t185.test, DNS:t186.test, DNS:t187.test, DNS:t188.test, DNS:t189.test, DNS:t190.test, DNS:t191.test, DNS:t192.test, DNS:t193.test, DNS:t194.test, DNS:t195.test, DNS:t196.test, DNS:t197.test, DNS:t198.test, DNS:t199.test, DNS:t200.test, DNS:t201.test, DNS:t202.test, DNS:t203.test, DNS:t204.test, DNS:t205.test, DNS:t206.test, DNS:t207.test, DNS:t208.test, DNS:t209.test, DNS:t210.test, DNS:t211.test, DNS:t212.test, DNS:t213.test, DNS:t214.test, DNS:t215.test, DNS:t216.test, DNS:t217.test, DNS:t218.test, DNS:t219.test, DNS:t220.test, DNS:t221.test, DNS:t222.test, DNS:t223.test, DNS:t224.test, DNS:t225.test, DNS:t226.test, DNS:t227.test, DNS:t228.test, DNS:t229.test, DNS:t230.test, DNS:t231.test, DNS:t232.test, DNS:t233.test, DNS:t234.test, DNS:t235.test, DNS:t236.test, DNS:t237.test, DNS:t238.test, DNS:t239.test, DNS:t240.test, DNS:t241.test, DNS:t242.test, DNS:t243.test, DNS:t244.test, DNS:t245.test, DNS:t246.test, DNS:t247.test, DNS:t248.test, DNS:t249.test, DNS:t250.test, DNS:t251.test, DNS:t252.test, DNS:t253.test, DNS:t254.test, DNS:t255.test, DNS:t256.test, DNS:t257.test, DNS:t258.test, DNS:t259.test, DNS:t260.test, DNS:t261.test, DNS:t262.test, DNS:t263.test, DNS:t264.test, DNS:t265.test, DNS:t266.test, DNS:t267.test, DNS:t268.test, DNS:t269.test, DNS:t270.test, DNS:t271.test, DNS:t272.test, DNS:t273.test, DNS:t274.test, DNS:t275.test, DNS:t276.test, DNS:t277.test, DNS:t278.test, DNS:t279.test, DNS:t280.test, DNS:t281.test, DNS:t282.test, DNS:t283.test, DNS:t284.test, DNS:t285.test, DNS:t286.test, DNS:t287.test, DNS:t288.test, DNS:t289.test, DNS:t290.test, DNS:t291.test, DNS:t292.test, DNS:t293.test, DNS:t294.test, DNS:t295.test, DNS:t296.test, DNS:t297.test, DNS:t298.test, DNS:t299.test, DNS:t300.test, DNS:t301.test, DNS:t302.test, DNS:t303.test, DNS:t304.test, DNS:t305.test, DNS:t306.test, DNS:t307.test, DNS:t308.test, DNS:t309.test, DNS:t310.test, DNS:t311.test, DNS:t312.test, DNS:t313.test, DNS:t314.test, DNS:t315.test, DNS:t316.test, DNS:t317.test, DNS:t318.test, DNS:t319.test, DNS:t320.test, DNS:t321.test, DNS:t322.test, DNS:t323.test, DNS:t324.test, DNS:t325.test, DNS:t326.test, DNS:t327.test, DNS:t328.test, DNS:t329.test, DNS:t330.test, DNS:t331.test, DNS:t332.test, DNS:t333.test, DNS:t334.test, DNS:t335.test, DNS:t336.test, DNS:t337.test, DNS:t338.test, DNS:t339.test, DNS:t340.test, DNS:t341.test, DNS:t342.test, DNS:t343.test, DNS:t344.test, DNS:t345.test, DNS:t346.test, DNS:t347.test, DNS:t348.test, DNS:t349.test, DNS:t350.test, DNS:t351.test, DNS:t352.test, DNS:t353.test, DNS:t354.test, DNS:t355.test, DNS:t356.test, DNS:t357.test, DNS:t358.test, DNS:t359.test, DNS:t360.test, DNS:t361.test, DNS:t362.test, DNS:t363.test, DNS:t364.test, DNS:t365.test, DNS:t366.test, DNS:t367.test, DNS:t368.test, DNS:t369.test, DNS:t370.test, DNS:t371.test, DNS:t372.test, DNS:t373.test, DNS:t374.test, DNS:t375.test, DNS:t376.test, DNS:t377.test, DNS:t378.test, DNS:t379.test, DNS:t380.test, DNS:t381.test, DNS:t382.test, DNS:t383.test, DNS:t384.test, DNS:t385.test, DNS:t386.test, DNS:t387.test, DNS:t388.test, DNS:t389.test, DNS:t390.test, DNS:t391.test, DNS:t392.test, DNS:t393.test, DNS:t394.test, DNS:t395.test, DNS:t396.test, DNS:t397.test, DNS:t398.test, DNS:t399.test, DNS:t400.test, DNS:t401.test, DNS:t402.test, DNS:t403.test, DNS:t404.test, DNS:t405.test, DNS:t406.test, DNS:t407.test, DNS:t408.test, DNS:t409.test, DNS:t410.test, DNS:t411.test, DNS:t412.test, DNS:t413.test, DNS:t414.test, DNS:t415.test, DNS:t416.test, DNS:t417.test, DNS:t418.test, IP Address:10.0.0.0, IP Address:10.0.0.1, IP Address:10.0.0.2, IP Address:10.0.0.3, IP Address:10.0.0.4, IP Address:10.0.0.5, IP Address:10.0.0.6, IP Address:10.0.0.7, IP Address:10.0.0.8, IP Address:10.0.0.9, IP Address:10.0.0.10, IP Address:10.0.0.11, IP Address:10.0.0.12, IP Address:10.0.0.13, IP Address:10.0.0.14, IP Address:10.0.0.15, IP Address:10.0.0.16, IP Address:10.0.0.17, IP Address:10.0.0.18, IP Address:10.0.0.19, IP Address:10.0.0.20, IP Address:10.0.0.21, IP Address:10.0.0.22, IP Address:10.0.0.23, IP Address:10.0.0.24, IP Address:10.0.0.25, IP Address:10.0.0.26, IP Address:10.0.0.27, IP Address:10.0.0.28, IP Address:10.0.0.29, IP Address:10.0.0.30, IP Address:10.0.0.31, IP Address:10.0.0.32, IP Address:10.0.0.33, IP Address:10.0.0.34, IP Address:10.0.0.35, IP Address:10.0.0.36, IP Address:10.0.0.37, IP Address:10.0.0.38, IP Address:10.0.0.39, IP Address:10.0.0.40, IP Address:10.0.0.41, IP Address:10.0.0.42, IP Address:10.0.0.43, IP Address:10.0.0.44, IP Address:10.0.0.45, IP Address:10.0.0.46, IP Address:10.0.0.47, IP Address:10.0.0.48, IP Address:10.0.0.49, IP Address:10.0.0.50, IP Address:10.0.0.51, IP Address:10.0.0.52, IP Address:10.0.0.53, IP Address:10.0.0.54, IP Address:10.0.0.55, IP Address:10.0.0.56, IP Address:10.0.0.57, IP Address:10.0.0.58, IP Address:10.0.0.59, IP Address:10.0.0.60, IP Address:10.0.0.61, IP Address:10.0.0.62, IP Address:10.0.0.63, IP Address:10.0.0.64, IP Address:10.0.0.65, IP Address:10.0.0.66, IP Address:10.0.0.67, IP Address:10.0.0.68, IP Address:10.0.0.69, IP Address:10.0.0.70, IP Address:10.0.0.71, IP Address:10.0.0.72, IP Address:10.0.0.73, IP Address:10.0.0.74, IP Address:10.0.0.75, IP Address:10.0.0.76, IP Address:10.0.0.77, IP Address:10.0.0.78, IP Address:10.0.0.79, IP Address:10.0.0.80, IP Address:10.0.0.81, IP Address:10.0.0.82, IP Address:10.0.0.83, IP Address:10.0.0.84, IP Address:10.0.0.85, IP Address:10.0.0.86, IP Address:10.0.0.87, IP Address:10.0.0.88, IP Address:10.0.0.89, IP Address:10.0.0.90, IP Address:10.0.0.91, IP Address:10.0.0.92, IP Address:10.0.0.93, IP Address:10.0.0.94, IP Address:10.0.0.95, IP Address:10.0.0.96, IP Address:10.0.0.97, IP Address:10.0.0.98, IP Address:10.0.0.99, IP Address:10.0.0.100, IP Address:10.0.0.101, IP Address:10.0.0.102, IP Address:10.0.0.103, IP Address:10.0.0.104, IP Address:10.0.0.105, IP Address:10.0.0.106, IP Address:10.0.0.107, IP Address:10.0.0.108, IP Address:10.0.0.109, IP Address:10.0.0.110, IP Address:10.0.0.111, IP Address:10.0.0.112, IP Address:10.0.0.113, IP Address:10.0.0.114, IP Address:10.0.0.115, IP Address:10.0.0.116, IP Address:10.0.0.117, IP Address:10.0.0.118, IP Address:10.0.0.119, IP Address:10.0.0.120, IP Address:10.0.0.121, IP Address:10.0.0.122, IP Address:10.0.0.123, IP Address:10.0.0.124, IP Address:10.0.0.125, IP Address:10.0.0.126, IP Address:10.0.0.127, IP Address:10.0.0.128, IP Address:10.0.0.129, IP Address:10.0.0.130, IP Address:10.0.0.131, IP Address:10.0.0.132, IP Address:10.0.0.133, IP Address:10.0.0.134, IP Address:10.0.0.135, IP Address:10.0.0.136, IP Address:10.0.0.137, IP Address:10.0.0.138, IP Address:10.0.0.139, IP Address:10.0.0.140, IP Address:10.0.0.141, IP Address:10.0.0.142, IP Address:10.0.0.143, IP Address:10.0.0.144, IP Address:10.0.0.145, IP Address:10.0.0.146, IP Address:10.0.0.147, IP Address:10.0.0.148, IP Address:10.0.0.149, IP Address:10.0.0.150, IP Address:10.0.0.151, IP Address:10.0.0.152, IP Address:10.0.0.153, IP Address:10.0.0.154, IP Address:10.0.0.155, IP Address:10.0.0.156, IP Address:10.0.0.157, IP Address:10.0.0.158, IP Address:10.0.0.159, IP Address:10.0.0.160, IP Address:10.0.0.161, IP Address:10.0.0.162, IP Address:10.0.0.163, IP Address:10.0.0.164, IP Address:10.0.0.165, IP Address:10.0.0.166, IP Address:10.0.0.167, IP Address:10.0.0.168, IP Address:10.0.0.169, IP Address:10.0.0.170, IP Address:10.0.0.171, IP Address:10.0.0.172, IP Address:10.0.0.173, IP Address:10.0.0.174, IP Address:10.0.0.175, IP Address:10.0.0.176, IP Address:10.0.0.177, IP Address:10.0.0.178, IP Address:10.0.0.179, IP Address:10.0.0.180, IP Address:10.0.0.181, IP Address:10.0.0.182, IP Address:10.0.0.183, IP Address:10.0.0.184, IP Address:10.0.0.185, IP Address:10.0.0.186, IP Address:10.0.0.187, IP Address:10.0.0.188, IP Address:10.0.0.189, IP Address:10.0.0.190, IP Address:10.0.0.191, IP Address:10.0.0.192, IP Address:10.0.0.193, IP Address:10.0.0.194, IP Address:10.0.0.195, IP Address:10.0.0.196, IP Address:10.0.0.197, IP Address:10.0.0.198, IP Address:10.0.0.199, IP Address:10.0.0.200, IP Address:10.0.0.201, IP Address:10.0.0.202, IP Address:10.0.0.203, IP Address:10.0.0.204, IP Address:10.0.0.205, IP Address:10.0.0.206, IP Address:10.0.0.207, IP Address:10.0.0.208, IP Address:10.0.0.209, IP Address:10.0.0.210, IP Address:10.0.0.211, IP Address:10.0.0.212, IP Address:10.0.0.213, IP Address:10.0.0.214, IP Address:10.0.0.215, IP Address:10.0.0.216, IP Address:10.0.0.217, IP Address:10.0.0.218, IP Address:10.0.0.219, IP Address:10.0.0.220, IP Address:10.0.0.221, IP Address:10.0.0.222, IP Address:10.0.0.223, IP Address:10.0.0.224, IP Address:10.0.0.225, IP Address:10.0.0.226, IP Address:10.0.0.227, IP Address:10.0.0.228, IP Address:10.0.0.229, IP Address:10.0.0.230, IP Address:10.0.0.231, IP Address:10.0.0.232, IP Address:10.0.0.233, IP Address:10.0.0.234, IP Address:10.0.0.235, IP Address:10.0.0.236, IP Address:10.0.0.237, IP Address:10.0.0.238, IP Address:10.0.0.239, IP Address:10.0.0.240, IP Address:10.0.0.241, IP Address:10.0.0.242, IP Address:10.0.0.243, IP Address:10.0.0.244, IP Address:10.0.0.245, IP Address:10.0.0.246, IP Address:10.0.0.247, IP Address:10.0.0.248, IP Address:10.0.0.249, IP Address:10.0.0.250, IP Address:10.0.0.251, IP Address:10.0.0.252, IP Address:10.0.0.253, IP Address:10.0.0.254, IP Address:10.0.0.255, IP Address:10.0.1.0, IP Address:10.0.1.1, IP Address:10.0.1.2, IP Address:10.0.1.3, IP Address:10.0.1.4, IP Address:10.0.1.5, IP Address:10.0.1.6, IP Address:10.0.1.7, IP Address:10.0.1.8, IP Address:10.0.1.9, IP Address:10.0.1.10, IP Address:10.0.1.11, IP Address:10.0.1.12, IP Address:10.0.1.13, IP Address:10.0.1.14, IP Address:10.0.1.15, IP Address:10.0.1.16, IP Address:10.0.1.17, IP Address:10.0.1.18, IP Address:10.0.1.19, IP Address:10.0.1.20, IP Address:10.0.1.21, IP Address:10.0.1.22, IP Address:10.0.1.23, IP Address:10.0.1.24, IP Address:10.0.1.25, IP Address:10.0.1.26, IP Address:10.0.1.27, IP Address:10.0.1.28, IP Address:10.0.1.29, IP Address:10.0.1.30, IP Address:10.0.1.31, IP Address:10.0.1.32, IP Address:10.0.1.33, IP Address:10.0.1.34, IP Address:10.0.1.35, IP Address:10.0.1.36, IP Address:10.0.1.37, IP Address:10.0.1.38, IP Address:10.0.1.39, IP Address:10.0.1.40, IP Address:10.0.1.41, IP Address:10.0.1.42, IP Address:10.0.1.43, IP Address:10.0.1.44, IP Address:10.0.1.45, IP Address:10.0.1.46, IP Address:10.0.1.47, IP Address:10.0.1.48, IP Address:10.0.1.49, IP Address:10.0.1.50, IP Address:10.0.1.51, IP Address:10.0.1.52, IP Address:10.0.1.53, IP Address:10.0.1.54, IP Address:10.0.1.55, IP Address:10.0.1.56, IP Address:10.0.1.57, IP Address:10.0.1.58, IP Address:10.0.1.59, IP Address:10.0.1.60, IP Address:10.0.1.61, IP Address:10.0.1.62, IP Address:10.0.1.63, IP Address:10.0.1.64, IP Address:10.0.1.65, IP Address:10.0.1.66, IP Address:10.0.1.67, IP Address:10.0.1.68, IP Address:10.0.1.69, IP Address:10.0.1.70, IP Address:10.0.1.71, IP Address:10.0.1.72, IP Address:10.0.1.73, IP Address:10.0.1.74, IP Address:10.0.1.75, IP Address:10.0.1.76, IP Address:10.0.1.77, IP Address:10.0.1.78, IP Address:10.0.1.79, IP Address:10.0.1.80, IP Address:10.0.1.81, IP Address:10.0.1.82, IP Address:10.0.1.83, IP Address:10.0.1.84, IP Address:10.0.1.85, IP Address:10.0.1.86, IP Address:10.0.1.87, IP Address:10.0.1.88, IP Address:10.0.1.89, IP Address:10.0.1.90, IP Address:10.0.1.91, IP Address:10.0.1.92, IP Address:10.0.1.93, IP Address:10.0.1.94, IP Address:10.0.1.95, IP Address:10.0.1.96, IP Address:10.0.1.97, IP Address:10.0.1.98, IP Address:10.0.1.99, IP Address:10.0.1.100, IP Address:10.0.1.101, IP Address:10.0.1.102, IP Address:10.0.1.103, IP Address:10.0.1.104, IP Address:10.0.1.105, IP Address:10.0.1.106, IP Address:10.0.1.107, IP Address:10.0.1.108, IP Address:10.0.1.109, IP Address:10.0.1.110, IP Address:10.0.1.111, IP Address:10.0.1.112, IP Address:10.0.1.113, IP Address:10.0.1.114, IP Address:10.0.1.115, IP Address:10.0.1.116, IP Address:10.0.1.117, IP Address:10.0.1.118, IP Address:10.0.1.119, IP Address:10.0.1.120, IP Address:10.0.1.121, IP Address:10.0.1.122, IP Address:10.0.1.123, IP Address:10.0.1.124, IP Address:10.0.1.125, IP Address:10.0.1.126, IP Address:10.0.1.127, IP Address:10.0.1.128, IP Address:10.0.1.129, IP Address:10.0.1.130, IP Address:10.0.1.131, IP Address:10.0.1.132, IP Address:10.0.1.133, IP Address:10.0.1.134, IP Address:10.0.1.135, IP Address:10.0.1.136, IP Address:10.0.1.137, IP Address:10.0.1.138, IP Address:10.0.1.139, IP Address:10.0.1.140, IP Address:10.0.1.141, IP Address:10.0.1.142, IP Address:10.0.1.143, IP Address:10.0.1.144, IP Address:10.0.1.145, IP Address:10.0.1.146, IP Address:10.0.1.147, IP Address:10.0.1.148, IP Address:10.0.1.149, IP Address:10.0.1.150, IP Address:10.0.1.151, IP Address:10.0.1.152, IP Address:10.0.1.153, IP Address:10.0.1.154, IP Address:10.0.1.155, IP Address:10.0.1.156, IP Address:10.0.1.157, IP Address:10.0.1.158, IP Address:10.0.1.159, IP Address:10.0.1.160, IP Address:10.0.1.161, IP Address:10.0.1.162, DirName:/CN=t0, DirName:/CN=t1, DirName:/CN=t2, DirName:/CN=t3, DirName:/CN=t4, DirName:/CN=t5, DirName:/CN=t6, DirName:/CN=t7, DirName:/CN=t8, DirName:/CN=t9, DirName:/CN=t10, DirName:/CN=t11, DirName:/CN=t12, DirName:/CN=t13, DirName:/CN=t14, DirName:/CN=t15, DirName:/CN=t16, DirName:/CN=t17, DirName:/CN=t18, DirName:/CN=t19, DirName:/CN=t20, DirName:/CN=t21, DirName:/CN=t22, DirName:/CN=t23, DirName:/CN=t24, DirName:/CN=t25, DirName:/CN=t26, DirName:/CN=t27, DirName:/CN=t28, DirName:/CN=t29, DirName:/CN=t30, DirName:/CN=t31, DirName:/CN=t32, DirName:/CN=t33, DirName:/CN=t34, DirName:/CN=t35, DirName:/CN=t36, DirName:/CN=t37, DirName:/CN=t38, DirName:/CN=t39, DirName:/CN=t40, DirName:/CN=t41, DirName:/CN=t42, DirName:/CN=t43, DirName:/CN=t44, DirName:/CN=t45, DirName:/CN=t46, DirName:/CN=t47, DirName:/CN=t48, DirName:/CN=t49, DirName:/CN=t50, DirName:/CN=t51, DirName:/CN=t52, DirName:/CN=t53, DirName:/CN=t54, DirName:/CN=t55, DirName:/CN=t56, DirName:/CN=t57, DirName:/CN=t58, DirName:/CN=t59, DirName:/CN=t60, DirName:/CN=t61, DirName:/CN=t62, DirName:/CN=t63, DirName:/CN=t64, DirName:/CN=t65, DirName:/CN=t66, DirName:/CN=t67, DirName:/CN=t68, DirName:/CN=t69, DirName:/CN=t70, DirName:/CN=t71, DirName:/CN=t72, DirName:/CN=t73, DirName:/CN=t74, DirName:/CN=t75, DirName:/CN=t76, DirName:/CN=t77, DirName:/CN=t78, DirName:/CN=t79, DirName:/CN=t80, DirName:/CN=t81, DirName:/CN=t82, DirName:/CN=t83, DirName:/CN=t84, DirName:/CN=t85, DirName:/CN=t86, DirName:/CN=t87, DirName:/CN=t88, DirName:/CN=t89, DirName:/CN=t90, DirName:/CN=t91, DirName:/CN=t92, DirName:/CN=t93, DirName:/CN=t94, DirName:/CN=t95, DirName:/CN=t96, DirName:/CN=t97, DirName:/CN=t98, DirName:/CN=t99, DirName:/CN=t100, DirName:/CN=t101, DirName:/CN=t102, DirName:/CN=t103, DirName:/CN=t104, DirName:/CN=t105, DirName:/CN=t106, DirName:/CN=t107, DirName:/CN=t108, DirName:/CN=t109, DirName:/CN=t110, DirName:/CN=t111, DirName:/CN=t112, DirName:/CN=t113, DirName:/CN=t114, DirName:/CN=t115, DirName:/CN=t116, DirName:/CN=t117, DirName:/CN=t118, DirName:/CN=t119, DirName:/CN=t120, DirName:/CN=t121, DirName:/CN=t122, DirName:/CN=t123, DirName:/CN=t124, DirName:/CN=t125, DirName:/CN=t126, DirName:/CN=t127, DirName:/CN=t128, DirName:/CN=t129, DirName:/CN=t130, DirName:/CN=t131, DirName:/CN=t132, DirName:/CN=t133, DirName:/CN=t134, DirName:/CN=t135, DirName:/CN=t136, DirName:/CN=t137, DirName:/CN=t138, DirName:/CN=t139, DirName:/CN=t140, DirName:/CN=t141, DirName:/CN=t142, DirName:/CN=t143, DirName:/CN=t144, DirName:/CN=t145, DirName:/CN=t146, DirName:/CN=t147, DirName:/CN=t148, DirName:/CN=t149, DirName:/CN=t150, DirName:/CN=t151, DirName:/CN=t152, DirName:/CN=t153, DirName:/CN=t154, DirName:/CN=t155, DirName:/CN=t156, DirName:/CN=t157, DirName:/CN=t158, DirName:/CN=t159, DirName:/CN=t160, DirName:/CN=t161, DirName:/CN=t162, DirName:/CN=t163, DirName:/CN=t164, DirName:/CN=t165, DirName:/CN=t166, DirName:/CN=t167, DirName:/CN=t168, DirName:/CN=t169, DirName:/CN=t170, DirName:/CN=t171, DirName:/CN=t172, DirName:/CN=t173, DirName:/CN=t174, DirName:/CN=t175, DirName:/CN=t176, DirName:/CN=t177, DirName:/CN=t178, DirName:/CN=t179, DirName:/CN=t180, DirName:/CN=t181, DirName:/CN=t182, DirName:/CN=t183, DirName:/CN=t184, DirName:/CN=t185, DirName:/CN=t186, DirName:/CN=t187, DirName:/CN=t188, DirName:/CN=t189, DirName:/CN=t190, DirName:/CN=t191, DirName:/CN=t192, DirName:/CN=t193, DirName:/CN=t194, DirName:/CN=t195, DirName:/CN=t196, DirName:/CN=t197, DirName:/CN=t198, DirName:/CN=t199, DirName:/CN=t200, DirName:/CN=t201, DirName:/CN=t202, DirName:/CN=t203, DirName:/CN=t204, DirName:/CN=t205, DirName:/CN=t206, DirName:/CN=t207, DirName:/CN=t208, DirName:/CN=t209, DirName:/CN=t210, DirName:/CN=t211, DirName:/CN=t212, DirName:/CN=t213, DirName:/CN=t214, DirName:/CN=t215, DirName:/CN=t216, DirName:/CN=t217, DirName:/CN=t218, DirName:/CN=t219, DirName:/CN=t220, DirName:/CN=t221, DirName:/CN=t222, DirName:/CN=t223, DirName:/CN=t224, DirName:/CN=t225, DirName:/CN=t226, DirName:/CN=t227, DirName:/CN=t228, DirName:/CN=t229, DirName:/CN=t230, DirName:/CN=t231, DirName:/CN=t232, DirName:/CN=t233, DirName:/CN=t234, DirName:/CN=t235, DirName:/CN=t236, DirName:/CN=t237, DirName:/CN=t238, DirName:/CN=t239, DirName:/CN=t240, DirName:/CN=t241, DirName:/CN=t242, DirName:/CN=t243, DirName:/CN=t244, DirName:/CN=t245, DirName:/CN=t246, DirName:/CN=t247, DirName:/CN=t248, DirName:/CN=t249, DirName:/CN=t250, DirName:/CN=t251, DirName:/CN=t252, DirName:/CN=t253, DirName:/CN=t254, DirName:/CN=t255, DirName:/CN=t256, DirName:/CN=t257, DirName:/CN=t258, DirName:/CN=t259, DirName:/CN=t260, DirName:/CN=t261, DirName:/CN=t262, DirName:/CN=t263, DirName:/CN=t264, DirName:/CN=t265, DirName:/CN=t266, DirName:/CN=t267, DirName:/CN=t268, DirName:/CN=t269, DirName:/CN=t270, DirName:/CN=t271, DirName:/CN=t272, DirName:/CN=t273, DirName:/CN=t274, DirName:/CN=t275, DirName:/CN=t276, DirName:/CN=t277, DirName:/CN=t278, DirName:/CN=t279, DirName:/CN=t280, DirName:/CN=t281, DirName:/CN=t282, DirName:/CN=t283, DirName:/CN=t284, DirName:/CN=t285, DirName:/CN=t286, DirName:/CN=t287, DirName:/CN=t288, DirName:/CN=t289, DirName:/CN=t290, DirName:/CN=t291, DirName:/CN=t292, DirName:/CN=t293, DirName:/CN=t294, DirName:/CN=t295, DirName:/CN=t296, DirName:/CN=t297, DirName:/CN=t298, DirName:/CN=t299, DirName:/CN=t300, DirName:/CN=t301, DirName:/CN=t302, DirName:/CN=t303, DirName:/CN=t304, DirName:/CN=t305, DirName:/CN=t306, DirName:/CN=t307, DirName:/CN=t308, DirName:/CN=t309, DirName:/CN=t310, DirName:/CN=t311, DirName:/CN=t312, DirName:/CN=t313, DirName:/CN=t314, DirName:/CN=t315, DirName:/CN=t316, DirName:/CN=t317, DirName:/CN=t318, DirName:/CN=t319, DirName:/CN=t320, DirName:/CN=t321, DirName:/CN=t322, DirName:/CN=t323, DirName:/CN=t324, DirName:/CN=t325, DirName:/CN=t326, DirName:/CN=t327, DirName:/CN=t328, DirName:/CN=t329, DirName:/CN=t330, DirName:/CN=t331, DirName:/CN=t332, DirName:/CN=t333, DirName:/CN=t334, DirName:/CN=t335, DirName:/CN=t336, DirName:/CN=t337, DirName:/CN=t338, DirName:/CN=t339, DirName:/CN=t340, DirName:/CN=t341, DirName:/CN=t342, DirName:/CN=t343, DirName:/CN=t344, DirName:/CN=t345, DirName:/CN=t346, DirName:/CN=t347, DirName:/CN=t348, DirName:/CN=t349, DirName:/CN=t350, DirName:/CN=t351, DirName:/CN=t352, DirName:/CN=t353, DirName:/CN=t354, DirName:/CN=t355, DirName:/CN=t356, DirName:/CN=t357, DirName:/CN=t358, DirName:/CN=t359, DirName:/CN=t360, DirName:/CN=t361, DirName:/CN=t362, DirName:/CN=t363, DirName:/CN=t364, DirName:/CN=t365, DirName:/CN=t366, DirName:/CN=t367, DirName:/CN=t368, DirName:/CN=t369, DirName:/CN=t370, DirName:/CN=t371, DirName:/CN=t372, DirName:/CN=t373, DirName:/CN=t374, DirName:/CN=t375, DirName:/CN=t376, DirName:/CN=t377, DirName:/CN=t378, DirName:/CN=t379, DirName:/CN=t380, DirName:/CN=t381, DirName:/CN=t382, DirName:/CN=t383, DirName:/CN=t384, DirName:/CN=t385, DirName:/CN=t386, DirName:/CN=t387, DirName:/CN=t388, DirName:/CN=t389, DirName:/CN=t390, DirName:/CN=t391, DirName:/CN=t392, DirName:/CN=t393, DirName:/CN=t394, DirName:/CN=t395, DirName:/CN=t396, DirName:/CN=t397, DirName:/CN=t398, DirName:/CN=t399, DirName:/CN=t400, DirName:/CN=t401, DirName:/CN=t402, DirName:/CN=t403, DirName:/CN=t404, DirName:/CN=t405, DirName:/CN=t406, DirName:/CN=t407, DirName:/CN=t408, DirName:/CN=t409, DirName:/CN=t410, DirName:/CN=t411, DirName:/CN=t412, DirName:/CN=t413, DirName:/CN=t414, DirName:/CN=t415, DirName:/CN=t416, DirName:/CN=t417
-+ DNS:t0.test, DNS:t1.test, DNS:t2.test, DNS:t3.test, DNS:t4.test, DNS:t5.test, DNS:t6.test, DNS:t7.test, DNS:t8.test, DNS:t9.test, DNS:t10.test, DNS:t11.test, DNS:t12.test, DNS:t13.test, DNS:t14.test, DNS:t15.test, DNS:t16.test, DNS:t17.test, DNS:t18.test, DNS:t19.test, DNS:t20.test, DNS:t21.test, DNS:t22.test, DNS:t23.test, DNS:t24.test, DNS:t25.test, DNS:t26.test, DNS:t27.test, DNS:t28.test, DNS:t29.test, DNS:t30.test, DNS:t31.test, DNS:t32.test, DNS:t33.test, DNS:t34.test, DNS:t35.test, DNS:t36.test, DNS:t37.test, DNS:t38.test, DNS:t39.test, DNS:t40.test, DNS:t41.test, DNS:t42.test, DNS:t43.test, DNS:t44.test, DNS:t45.test, DNS:t46.test, DNS:t47.test, DNS:t48.test, DNS:t49.test, DNS:t50.test, DNS:t51.test, DNS:t52.test, DNS:t53.test, DNS:t54.test, DNS:t55.test, DNS:t56.test, DNS:t57.test, DNS:t58.test, DNS:t59.test, DNS:t60.test, DNS:t61.test, DNS:t62.test, DNS:t63.test, DNS:t64.test, DNS:t65.test, DNS:t66.test, DNS:t67.test, DNS:t68.test, DNS:t69.test, DNS:t70.test, DNS:t71.test, DNS:t72.test, DNS:t73.test, DNS:t74.test, DNS:t75.test, DNS:t76.test, DNS:t77.test, DNS:t78.test, DNS:t79.test, DNS:t80.test, DNS:t81.test, DNS:t82.test, DNS:t83.test, DNS:t84.test, DNS:t85.test, DNS:t86.test, DNS:t87.test, DNS:t88.test, DNS:t89.test, DNS:t90.test, DNS:t91.test, DNS:t92.test, DNS:t93.test, DNS:t94.test, DNS:t95.test, DNS:t96.test, DNS:t97.test, DNS:t98.test, DNS:t99.test, DNS:t100.test, DNS:t101.test, DNS:t102.test, DNS:t103.test, DNS:t104.test, DNS:t105.test, DNS:t106.test, DNS:t107.test, DNS:t108.test, DNS:t109.test, DNS:t110.test, DNS:t111.test, DNS:t112.test, DNS:t113.test, DNS:t114.test, DNS:t115.test, DNS:t116.test, DNS:t117.test, DNS:t118.test, DNS:t119.test, DNS:t120.test, DNS:t121.test, DNS:t122.test, DNS:t123.test, DNS:t124.test, DNS:t125.test, DNS:t126.test, DNS:t127.test, DNS:t128.test, DNS:t129.test, DNS:t130.test, DNS:t131.test, DNS:t132.test, DNS:t133.test, DNS:t134.test, DNS:t135.test, DNS:t136.test, DNS:t137.test, DNS:t138.test, DNS:t139.test, DNS:t140.test, DNS:t141.test, DNS:t142.test, DNS:t143.test, DNS:t144.test, DNS:t145.test, DNS:t146.test, DNS:t147.test, DNS:t148.test, DNS:t149.test, DNS:t150.test, DNS:t151.test, DNS:t152.test, DNS:t153.test, DNS:t154.test, DNS:t155.test, DNS:t156.test, DNS:t157.test, DNS:t158.test, DNS:t159.test, DNS:t160.test, DNS:t161.test, DNS:t162.test, DNS:t163.test, DNS:t164.test, DNS:t165.test, DNS:t166.test, DNS:t167.test, DNS:t168.test, DNS:t169.test, DNS:t170.test, DNS:t171.test, DNS:t172.test, DNS:t173.test, DNS:t174.test, DNS:t175.test, DNS:t176.test, DNS:t177.test, DNS:t178.test, DNS:t179.test, DNS:t180.test, DNS:t181.test, DNS:t182.test, DNS:t183.test, DNS:t184.test, DNS:t185.test, DNS:t186.test, DNS:t187.test, DNS:t188.test, DNS:t189.test, DNS:t190.test, DNS:t191.test, DNS:t192.test, DNS:t193.test, DNS:t194.test, DNS:t195.test, DNS:t196.test, DNS:t197.test, DNS:t198.test, DNS:t199.test, DNS:t200.test, DNS:t201.test, DNS:t202.test, DNS:t203.test, DNS:t204.test, DNS:t205.test, DNS:t206.test, DNS:t207.test, DNS:t208.test, DNS:t209.test, DNS:t210.test, DNS:t211.test, DNS:t212.test, DNS:t213.test, DNS:t214.test, DNS:t215.test, DNS:t216.test, DNS:t217.test, DNS:t218.test, DNS:t219.test, DNS:t220.test, DNS:t221.test, DNS:t222.test, DNS:t223.test, DNS:t224.test, DNS:t225.test, DNS:t226.test, DNS:t227.test, DNS:t228.test, DNS:t229.test, DNS:t230.test, DNS:t231.test, DNS:t232.test, DNS:t233.test, DNS:t234.test, DNS:t235.test, DNS:t236.test, DNS:t237.test, DNS:t238.test, DNS:t239.test, DNS:t240.test, DNS:t241.test, DNS:t242.test, DNS:t243.test, DNS:t244.test, DNS:t245.test, DNS:t246.test, DNS:t247.test, DNS:t248.test, DNS:t249.test, DNS:t250.test, DNS:t251.test, DNS:t252.test, DNS:t253.test, DNS:t254.test, DNS:t255.test, DNS:t256.test, DNS:t257.test, DNS:t258.test, DNS:t259.test, DNS:t260.test, DNS:t261.test, DNS:t262.test, DNS:t263.test, DNS:t264.test, DNS:t265.test, DNS:t266.test, DNS:t267.test, DNS:t268.test, DNS:t269.test, DNS:t270.test, DNS:t271.test, DNS:t272.test, DNS:t273.test, DNS:t274.test, DNS:t275.test, DNS:t276.test, DNS:t277.test, DNS:t278.test, DNS:t279.test, DNS:t280.test, DNS:t281.test, DNS:t282.test, DNS:t283.test, DNS:t284.test, DNS:t285.test, DNS:t286.test, DNS:t287.test, DNS:t288.test, DNS:t289.test, DNS:t290.test, DNS:t291.test, DNS:t292.test, DNS:t293.test, DNS:t294.test, DNS:t295.test, DNS:t296.test, DNS:t297.test, DNS:t298.test, DNS:t299.test, DNS:t300.test, DNS:t301.test, DNS:t302.test, DNS:t303.test, DNS:t304.test, DNS:t305.test, DNS:t306.test, DNS:t307.test, DNS:t308.test, DNS:t309.test, DNS:t310.test, DNS:t311.test, DNS:t312.test, DNS:t313.test, DNS:t314.test, DNS:t315.test, DNS:t316.test, DNS:t317.test, DNS:t318.test, DNS:t319.test, DNS:t320.test, DNS:t321.test, DNS:t322.test, DNS:t323.test, DNS:t324.test, DNS:t325.test, DNS:t326.test, DNS:t327.test, DNS:t328.test, DNS:t329.test, DNS:t330.test, DNS:t331.test, DNS:t332.test, DNS:t333.test, DNS:t334.test, DNS:t335.test, DNS:t336.test, DNS:t337.test, DNS:t338.test, DNS:t339.test, DNS:t340.test, DNS:t341.test, IP Address:10.0.0.0, IP Address:10.0.0.1, IP Address:10.0.0.2, IP Address:10.0.0.3, IP Address:10.0.0.4, IP Address:10.0.0.5, IP Address:10.0.0.6, IP Address:10.0.0.7, IP Address:10.0.0.8, IP Address:10.0.0.9, IP Address:10.0.0.10, IP Address:10.0.0.11, IP Address:10.0.0.12, IP Address:10.0.0.13, IP Address:10.0.0.14, IP Address:10.0.0.15, IP Address:10.0.0.16, IP Address:10.0.0.17, IP Address:10.0.0.18, IP Address:10.0.0.19, IP Address:10.0.0.20, IP Address:10.0.0.21, IP Address:10.0.0.22, IP Address:10.0.0.23, IP Address:10.0.0.24, IP Address:10.0.0.25, IP Address:10.0.0.26, IP Address:10.0.0.27, IP Address:10.0.0.28, IP Address:10.0.0.29, IP Address:10.0.0.30, IP Address:10.0.0.31, IP Address:10.0.0.32, IP Address:10.0.0.33, IP Address:10.0.0.34, IP Address:10.0.0.35, IP Address:10.0.0.36, IP Address:10.0.0.37, IP Address:10.0.0.38, IP Address:10.0.0.39, IP Address:10.0.0.40, IP Address:10.0.0.41, IP Address:10.0.0.42, IP Address:10.0.0.43, IP Address:10.0.0.44, IP Address:10.0.0.45, IP Address:10.0.0.46, IP Address:10.0.0.47, IP Address:10.0.0.48, IP Address:10.0.0.49, IP Address:10.0.0.50, IP Address:10.0.0.51, IP Address:10.0.0.52, IP Address:10.0.0.53, IP Address:10.0.0.54, IP Address:10.0.0.55, IP Address:10.0.0.56, IP Address:10.0.0.57, IP Address:10.0.0.58, IP Address:10.0.0.59, IP Address:10.0.0.60, IP Address:10.0.0.61, IP Address:10.0.0.62, IP Address:10.0.0.63, IP Address:10.0.0.64, IP Address:10.0.0.65, IP Address:10.0.0.66, IP Address:10.0.0.67, IP Address:10.0.0.68, IP Address:10.0.0.69, IP Address:10.0.0.70, IP Address:10.0.0.71, IP Address:10.0.0.72, IP Address:10.0.0.73, IP Address:10.0.0.74, IP Address:10.0.0.75, IP Address:10.0.0.76, IP Address:10.0.0.77, IP Address:10.0.0.78, IP Address:10.0.0.79, IP Address:10.0.0.80, IP Address:10.0.0.81, IP Address:10.0.0.82, IP Address:10.0.0.83, IP Address:10.0.0.84, IP Address:10.0.0.85, IP Address:10.0.0.86, IP Address:10.0.0.87, IP Address:10.0.0.88, IP Address:10.0.0.89, IP Address:10.0.0.90, IP Address:10.0.0.91, IP Address:10.0.0.92, IP Address:10.0.0.93, IP Address:10.0.0.94, IP Address:10.0.0.95, IP Address:10.0.0.96, IP Address:10.0.0.97, IP Address:10.0.0.98, IP Address:10.0.0.99, IP Address:10.0.0.100, IP Address:10.0.0.101, IP Address:10.0.0.102, IP Address:10.0.0.103, IP Address:10.0.0.104, IP Address:10.0.0.105, IP Address:10.0.0.106, IP Address:10.0.0.107, IP Address:10.0.0.108, IP Address:10.0.0.109, IP Address:10.0.0.110, IP Address:10.0.0.111, IP Address:10.0.0.112, IP Address:10.0.0.113, IP Address:10.0.0.114, IP Address:10.0.0.115, IP Address:10.0.0.116, IP Address:10.0.0.117, IP Address:10.0.0.118, IP Address:10.0.0.119, IP Address:10.0.0.120, IP Address:10.0.0.121, IP Address:10.0.0.122, IP Address:10.0.0.123, IP Address:10.0.0.124, IP Address:10.0.0.125, IP Address:10.0.0.126, IP Address:10.0.0.127, IP Address:10.0.0.128, IP Address:10.0.0.129, IP Address:10.0.0.130, IP Address:10.0.0.131, IP Address:10.0.0.132, IP Address:10.0.0.133, IP Address:10.0.0.134, IP Address:10.0.0.135, IP Address:10.0.0.136, IP Address:10.0.0.137, IP Address:10.0.0.138, IP Address:10.0.0.139, IP Address:10.0.0.140, IP Address:10.0.0.141, IP Address:10.0.0.142, IP Address:10.0.0.143, IP Address:10.0.0.144, IP Address:10.0.0.145, IP Address:10.0.0.146, IP Address:10.0.0.147, IP Address:10.0.0.148, IP Address:10.0.0.149, IP Address:10.0.0.150, IP Address:10.0.0.151, IP Address:10.0.0.152, IP Address:10.0.0.153, IP Address:10.0.0.154, IP Address:10.0.0.155, IP Address:10.0.0.156, IP Address:10.0.0.157, IP Address:10.0.0.158, IP Address:10.0.0.159, IP Address:10.0.0.160, IP Address:10.0.0.161, IP Address:10.0.0.162, IP Address:10.0.0.163, IP Address:10.0.0.164, IP Address:10.0.0.165, IP Address:10.0.0.166, IP Address:10.0.0.167, IP Address:10.0.0.168, IP Address:10.0.0.169, IP Address:10.0.0.170, IP Address:10.0.0.171, IP Address:10.0.0.172, IP Address:10.0.0.173, IP Address:10.0.0.174, IP Address:10.0.0.175, IP Address:10.0.0.176, IP Address:10.0.0.177, IP Address:10.0.0.178, IP Address:10.0.0.179, IP Address:10.0.0.180, IP Address:10.0.0.181, IP Address:10.0.0.182, IP Address:10.0.0.183, IP Address:10.0.0.184, IP Address:10.0.0.185, IP Address:10.0.0.186, IP Address:10.0.0.187, IP Address:10.0.0.188, IP Address:10.0.0.189, IP Address:10.0.0.190, IP Address:10.0.0.191, IP Address:10.0.0.192, IP Address:10.0.0.193, IP Address:10.0.0.194, IP Address:10.0.0.195, IP Address:10.0.0.196, IP Address:10.0.0.197, IP Address:10.0.0.198, IP Address:10.0.0.199, IP Address:10.0.0.200, IP Address:10.0.0.201, IP Address:10.0.0.202, IP Address:10.0.0.203, IP Address:10.0.0.204, IP Address:10.0.0.205, IP Address:10.0.0.206, IP Address:10.0.0.207, IP Address:10.0.0.208, IP Address:10.0.0.209, IP Address:10.0.0.210, IP Address:10.0.0.211, IP Address:10.0.0.212, IP Address:10.0.0.213, IP Address:10.0.0.214, IP Address:10.0.0.215, IP Address:10.0.0.216, IP Address:10.0.0.217, IP Address:10.0.0.218, IP Address:10.0.0.219, IP Address:10.0.0.220, IP Address:10.0.0.221, IP Address:10.0.0.222, IP Address:10.0.0.223, IP Address:10.0.0.224, IP Address:10.0.0.225, IP Address:10.0.0.226, IP Address:10.0.0.227, IP Address:10.0.0.228, IP Address:10.0.0.229, IP Address:10.0.0.230, IP Address:10.0.0.231, IP Address:10.0.0.232, IP Address:10.0.0.233, IP Address:10.0.0.234, IP Address:10.0.0.235, IP Address:10.0.0.236, IP Address:10.0.0.237, IP Address:10.0.0.238, IP Address:10.0.0.239, IP Address:10.0.0.240, IP Address:10.0.0.241, IP Address:10.0.0.242, IP Address:10.0.0.243, IP Address:10.0.0.244, IP Address:10.0.0.245, IP Address:10.0.0.246, IP Address:10.0.0.247, IP Address:10.0.0.248, IP Address:10.0.0.249, IP Address:10.0.0.250, IP Address:10.0.0.251, IP Address:10.0.0.252, IP Address:10.0.0.253, IP Address:10.0.0.254, IP Address:10.0.0.255, IP Address:10.0.1.0, IP Address:10.0.1.1, IP Address:10.0.1.2, IP Address:10.0.1.3, IP Address:10.0.1.4, IP Address:10.0.1.5, IP Address:10.0.1.6, IP Address:10.0.1.7, IP Address:10.0.1.8, IP Address:10.0.1.9, IP Address:10.0.1.10, IP Address:10.0.1.11, IP Address:10.0.1.12, IP Address:10.0.1.13, IP Address:10.0.1.14, IP Address:10.0.1.15, IP Address:10.0.1.16, IP Address:10.0.1.17, IP Address:10.0.1.18, IP Address:10.0.1.19, IP Address:10.0.1.20, IP Address:10.0.1.21, IP Address:10.0.1.22, IP Address:10.0.1.23, IP Address:10.0.1.24, IP Address:10.0.1.25, IP Address:10.0.1.26, IP Address:10.0.1.27, IP Address:10.0.1.28, IP Address:10.0.1.29, IP Address:10.0.1.30, IP Address:10.0.1.31, IP Address:10.0.1.32, IP Address:10.0.1.33, IP Address:10.0.1.34, IP Address:10.0.1.35, IP Address:10.0.1.36, IP Address:10.0.1.37, IP Address:10.0.1.38, IP Address:10.0.1.39, IP Address:10.0.1.40, IP Address:10.0.1.41, IP Address:10.0.1.42, IP Address:10.0.1.43, IP Address:10.0.1.44, IP Address:10.0.1.45, IP Address:10.0.1.46, IP Address:10.0.1.47, IP Address:10.0.1.48, IP Address:10.0.1.49, IP Address:10.0.1.50, IP Address:10.0.1.51, IP Address:10.0.1.52, IP Address:10.0.1.53, IP Address:10.0.1.54, IP Address:10.0.1.55, IP Address:10.0.1.56, IP Address:10.0.1.57, IP Address:10.0.1.58, IP Address:10.0.1.59, IP Address:10.0.1.60, IP Address:10.0.1.61, IP Address:10.0.1.62, IP Address:10.0.1.63, IP Address:10.0.1.64, IP Address:10.0.1.65, IP Address:10.0.1.66, IP Address:10.0.1.67, IP Address:10.0.1.68, IP Address:10.0.1.69, IP Address:10.0.1.70, IP Address:10.0.1.71, IP Address:10.0.1.72, IP Address:10.0.1.73, IP Address:10.0.1.74, IP Address:10.0.1.75, IP Address:10.0.1.76, IP Address:10.0.1.77, IP Address:10.0.1.78, IP Address:10.0.1.79, IP Address:10.0.1.80, IP Address:10.0.1.81, IP Address:10.0.1.82, IP Address:10.0.1.83, IP Address:10.0.1.84, DirName:/CN=t0, DirName:/CN=t1, DirName:/CN=t2, DirName:/CN=t3, DirName:/CN=t4, DirName:/CN=t5, DirName:/CN=t6, DirName:/CN=t7, DirName:/CN=t8, DirName:/CN=t9, DirName:/CN=t10, DirName:/CN=t11, DirName:/CN=t12, DirName:/CN=t13, DirName:/CN=t14, DirName:/CN=t15, DirName:/CN=t16, DirName:/CN=t17, DirName:/CN=t18, DirName:/CN=t19, DirName:/CN=t20, DirName:/CN=t21, DirName:/CN=t22, DirName:/CN=t23, DirName:/CN=t24, DirName:/CN=t25, DirName:/CN=t26, DirName:/CN=t27, DirName:/CN=t28, DirName:/CN=t29, DirName:/CN=t30, DirName:/CN=t31, DirName:/CN=t32, DirName:/CN=t33, DirName:/CN=t34, DirName:/CN=t35, DirName:/CN=t36, DirName:/CN=t37, DirName:/CN=t38, DirName:/CN=t39, DirName:/CN=t40, DirName:/CN=t41, DirName:/CN=t42, DirName:/CN=t43, DirName:/CN=t44, DirName:/CN=t45, DirName:/CN=t46, DirName:/CN=t47, DirName:/CN=t48, DirName:/CN=t49, DirName:/CN=t50, DirName:/CN=t51, DirName:/CN=t52, DirName:/CN=t53, DirName:/CN=t54, DirName:/CN=t55, DirName:/CN=t56, DirName:/CN=t57, DirName:/CN=t58, DirName:/CN=t59, DirName:/CN=t60, DirName:/CN=t61, DirName:/CN=t62, DirName:/CN=t63, DirName:/CN=t64, DirName:/CN=t65, DirName:/CN=t66, DirName:/CN=t67, DirName:/CN=t68, DirName:/CN=t69, DirName:/CN=t70, DirName:/CN=t71, DirName:/CN=t72, DirName:/CN=t73, DirName:/CN=t74, DirName:/CN=t75, DirName:/CN=t76, DirName:/CN=t77, DirName:/CN=t78, DirName:/CN=t79, DirName:/CN=t80, DirName:/CN=t81, DirName:/CN=t82, DirName:/CN=t83, DirName:/CN=t84, DirName:/CN=t85, DirName:/CN=t86, DirName:/CN=t87, DirName:/CN=t88, DirName:/CN=t89, DirName:/CN=t90, DirName:/CN=t91, DirName:/CN=t92, DirName:/CN=t93, DirName:/CN=t94, DirName:/CN=t95, DirName:/CN=t96, DirName:/CN=t97, DirName:/CN=t98, DirName:/CN=t99, DirName:/CN=t100, DirName:/CN=t101, DirName:/CN=t102, DirName:/CN=t103, DirName:/CN=t104, DirName:/CN=t105, DirName:/CN=t106, DirName:/CN=t107, DirName:/CN=t108, DirName:/CN=t109, DirName:/CN=t110, DirName:/CN=t111, DirName:/CN=t112, DirName:/CN=t113, DirName:/CN=t114, DirName:/CN=t115, DirName:/CN=t116, DirName:/CN=t117, DirName:/CN=t118, DirName:/CN=t119, DirName:/CN=t120, DirName:/CN=t121, DirName:/CN=t122, DirName:/CN=t123, DirName:/CN=t124, DirName:/CN=t125, DirName:/CN=t126, DirName:/CN=t127, DirName:/CN=t128, DirName:/CN=t129, DirName:/CN=t130, DirName:/CN=t131, DirName:/CN=t132, DirName:/CN=t133, DirName:/CN=t134, DirName:/CN=t135, DirName:/CN=t136, DirName:/CN=t137, DirName:/CN=t138, DirName:/CN=t139, DirName:/CN=t140, DirName:/CN=t141, DirName:/CN=t142, DirName:/CN=t143, DirName:/CN=t144, DirName:/CN=t145, DirName:/CN=t146, DirName:/CN=t147, DirName:/CN=t148, DirName:/CN=t149, DirName:/CN=t150, DirName:/CN=t151, DirName:/CN=t152, DirName:/CN=t153, DirName:/CN=t154, DirName:/CN=t155, DirName:/CN=t156, DirName:/CN=t157, DirName:/CN=t158, DirName:/CN=t159, DirName:/CN=t160, DirName:/CN=t161, DirName:/CN=t162, DirName:/CN=t163, DirName:/CN=t164, DirName:/CN=t165, DirName:/CN=t166, DirName:/CN=t167, DirName:/CN=t168, DirName:/CN=t169, DirName:/CN=t170, DirName:/CN=t171, DirName:/CN=t172, DirName:/CN=t173, DirName:/CN=t174, DirName:/CN=t175, DirName:/CN=t176, DirName:/CN=t177, DirName:/CN=t178, DirName:/CN=t179, DirName:/CN=t180, DirName:/CN=t181, DirName:/CN=t182, DirName:/CN=t183, DirName:/CN=t184, DirName:/CN=t185, DirName:/CN=t186, DirName:/CN=t187, DirName:/CN=t188, DirName:/CN=t189, DirName:/CN=t190, DirName:/CN=t191, DirName:/CN=t192, DirName:/CN=t193, DirName:/CN=t194, DirName:/CN=t195, DirName:/CN=t196, DirName:/CN=t197, DirName:/CN=t198, DirName:/CN=t199, DirName:/CN=t200, DirName:/CN=t201, DirName:/CN=t202, DirName:/CN=t203, DirName:/CN=t204, DirName:/CN=t205, DirName:/CN=t206, DirName:/CN=t207, DirName:/CN=t208, DirName:/CN=t209, DirName:/CN=t210, DirName:/CN=t211, DirName:/CN=t212, DirName:/CN=t213, DirName:/CN=t214, DirName:/CN=t215, DirName:/CN=t216, DirName:/CN=t217, DirName:/CN=t218, DirName:/CN=t219, DirName:/CN=t220, DirName:/CN=t221, DirName:/CN=t222, DirName:/CN=t223, DirName:/CN=t224, DirName:/CN=t225, DirName:/CN=t226, DirName:/CN=t227, DirName:/CN=t228, DirName:/CN=t229, DirName:/CN=t230, DirName:/CN=t231, DirName:/CN=t232, DirName:/CN=t233, DirName:/CN=t234, DirName:/CN=t235, DirName:/CN=t236, DirName:/CN=t237, DirName:/CN=t238, DirName:/CN=t239, DirName:/CN=t240, DirName:/CN=t241, DirName:/CN=t242, DirName:/CN=t243, DirName:/CN=t244, DirName:/CN=t245, DirName:/CN=t246, DirName:/CN=t247, DirName:/CN=t248, DirName:/CN=t249, DirName:/CN=t250, DirName:/CN=t251, DirName:/CN=t252, DirName:/CN=t253, DirName:/CN=t254, DirName:/CN=t255, DirName:/CN=t256, DirName:/CN=t257, DirName:/CN=t258, DirName:/CN=t259, DirName:/CN=t260, DirName:/CN=t261, DirName:/CN=t262, DirName:/CN=t263, DirName:/CN=t264, DirName:/CN=t265, DirName:/CN=t266, DirName:/CN=t267, DirName:/CN=t268, DirName:/CN=t269, DirName:/CN=t270, DirName:/CN=t271, DirName:/CN=t272, DirName:/CN=t273, DirName:/CN=t274, DirName:/CN=t275, DirName:/CN=t276, DirName:/CN=t277, DirName:/CN=t278, DirName:/CN=t279, DirName:/CN=t280, DirName:/CN=t281, DirName:/CN=t282, DirName:/CN=t283, DirName:/CN=t284, DirName:/CN=t285, DirName:/CN=t286, DirName:/CN=t287, DirName:/CN=t288, DirName:/CN=t289, DirName:/CN=t290, DirName:/CN=t291, DirName:/CN=t292, DirName:/CN=t293, DirName:/CN=t294, DirName:/CN=t295, DirName:/CN=t296, DirName:/CN=t297, DirName:/CN=t298, DirName:/CN=t299, DirName:/CN=t300, DirName:/CN=t301, DirName:/CN=t302, DirName:/CN=t303, DirName:/CN=t304, DirName:/CN=t305, DirName:/CN=t306, DirName:/CN=t307, DirName:/CN=t308, DirName:/CN=t309, DirName:/CN=t310, DirName:/CN=t311, DirName:/CN=t312, DirName:/CN=t313, DirName:/CN=t314, DirName:/CN=t315, DirName:/CN=t316, DirName:/CN=t317, DirName:/CN=t318, DirName:/CN=t319, DirName:/CN=t320, DirName:/CN=t321, DirName:/CN=t322, DirName:/CN=t323, DirName:/CN=t324, DirName:/CN=t325, DirName:/CN=t326, DirName:/CN=t327, DirName:/CN=t328, DirName:/CN=t329, DirName:/CN=t330, DirName:/CN=t331, DirName:/CN=t332, DirName:/CN=t333, DirName:/CN=t334, DirName:/CN=t335, DirName:/CN=t336, DirName:/CN=t337, DirName:/CN=t338, DirName:/CN=t339, DirName:/CN=t340
- Signature Algorithm: sha256WithRSAEncryption
-- b2:e5:7a:fb:a0:db:99:7b:2b:60:3b:29:0a:96:9e:2a:72:5a:
-- f9:59:9b:e8:af:4e:1e:10:cb:22:a6:33:db:18:62:db:c6:e7:
-- ea:9b:c2:83:4e:f0:88:bf:d9:70:4e:d4:bd:21:08:99:9a:0e:
-- 6b:f1:ed:fb:43:63:c4:0e:22:33:e9:67:5c:5f:d3:51:61:df:
-- dd:2c:51:2f:d2:a5:3f:41:7a:fb:e3:ff:16:9c:fe:77:7c:57:
-- 25:6c:02:8c:bc:e6:56:8e:e0:db:3e:2e:a2:fd:91:30:fd:7c:
-- 3a:b1:03:cb:eb:c1:77:c0:b2:e0:1a:f9:ba:3d:e4:75:56:8d:
-- 98:62:61:a1:cc:8d:90:56:36:44:2c:a2:92:be:48:25:c7:ef:
-- 86:54:8e:d2:3e:c7:14:d6:ef:05:82:af:86:b5:bb:14:a4:80:
-- 3f:04:e0:36:6e:0f:ab:0e:9c:27:bc:f4:43:a1:69:47:3a:ea:
-- 7f:7b:1e:26:14:2c:0a:3a:01:3f:d8:06:f7:1a:e1:7c:6e:e8:
-- 1e:1d:c0:24:61:56:10:23:6a:e3:26:54:d9:1d:48:2b:0d:39:
-- 3b:76:a3:20:b9:a0:6a:c8:cf:77:57:d7:d6:32:c4:bc:d2:10:
-- 28:1d:a8:df:ee:bc:a3:21:74:e9:45:5b:ec:77:0a:d5:b1:b4:
-- 41:33:e3:0b
-+ 90:c2:57:f6:92:e9:c7:58:4e:b5:bd:11:26:33:dd:b9:3d:c2:
-+ 1e:6d:6b:21:74:04:85:22:1e:d2:1b:09:fb:99:24:d8:e6:ed:
-+ 1c:55:14:34:b7:19:4e:f2:cc:37:2e:b3:d3:26:96:f2:6d:88:
-+ d6:8d:b2:7b:1a:6f:eb:66:f1:d9:f3:a3:4f:b0:76:51:d2:1c:
-+ e6:b0:ae:0f:28:38:bf:c6:94:d5:76:71:0f:f6:11:95:c8:07:
-+ 26:be:81:aa:55:4d:17:17:36:90:bb:c2:b8:40:72:a2:cf:0f:
-+ d3:55:b1:65:50:67:c8:57:4b:54:bd:5b:42:7f:d4:b4:46:0e:
-+ fe:9d:f0:eb:a9:96:c2:53:ce:b5:fb:71:3c:da:51:37:94:c7:
-+ 7b:1e:d6:5b:c1:1b:da:ae:09:b1:da:d0:2d:27:ae:46:c6:5e:
-+ d0:72:cb:e0:29:a7:c8:40:e8:18:94:26:ad:d8:51:21:43:24:
-+ f6:f9:a4:9e:f1:57:d1:4b:3e:74:71:97:8f:de:09:2d:d3:85:
-+ b1:79:a8:9d:d0:6c:35:90:a8:62:2f:fb:45:ac:c5:5b:5c:cc:
-+ ea:72:05:b0:2f:79:36:56:f2:75:5b:b4:30:8c:0c:9f:fc:e8:
-+ da:7e:2c:dd:fc:5e:fc:23:04:c1:53:31:a7:e2:ce:18:10:28:
-+ b8:d4:60:8e
- -----BEGIN CERTIFICATE-----
--MII9qzCCPJOgAwIBAgITL6u0PdzAd4AqAwmtQ3QCv5jY1TANBgkqhkiG9w0BAQsF
-+MIIy0TCCMbmgAwIBAgITL6u0PdzAd4AqAwmtQ3QCv5jY1TANBgkqhkiG9w0BAQsF
- ADAXMRUwEwYDVQQDDAxJbnRlcm1lZGlhdGUwHhcNMjExMDA1MTIwMDAwWhcNMjIx
- MDA1MTIwMDAwWjANMQswCQYDVQQDDAJ0MDCCASIwDQYJKoZIhvcNAQEBBQADggEP
- ADCCAQoCggEBANssUwHO+RqDNlJRKltCY94ydRFqfbCh5HdHm3Hlpi1k165bBO16
-@@ -82,12 +82,12 @@ P8f2yisrrc1siKWONvvnoiK1fVR56dV6W8orKWwNhAoQxCG2WJi7DbYMjVZbLIVZ
- B8oGRjYlGimOxDm3wzHObknCAc+wOydDiuPVBh8tk53dekVlbf20scAQWULyHo/O
- Q6yXJcF84lHhRDVblKoDbtpxLyV/WDAB4RIXHvKqbCKAscll6neVswfE93I4NP6g
- QzNMZm2h6KEEvG8UOTlELjg3dMkKIYWRIbdOurCZSnaYe1jKHNOwQMPZKnX76xnq
--4xqYMVKX6X+keyF/L9xiho/9/aiI6EtEUr0CAwEAAaOCOvgwgjr0MB0GA1UdDgQW
-+4xqYMVKX6X+keyF/L9xiho/9/aiI6EtEUr0CAwEAAaOCMB4wgjAaMB0GA1UdDgQW
- BBQ7tAXMqrpRPfzy+R4lU3LhOvKa3zAfBgNVHSMEGDAWgBSSET+sEZbHZjfPg1ok
- 8Dp3rzONfzA/BggrBgEFBQcBAQQzMDEwLwYIKwYBBQUHMAKGI2h0dHA6Ly91cmwt
- Zm9yLWFpYS9JbnRlcm1lZGlhdGUuY2VyMDQGA1UdHwQtMCswKaAnoCWGI2h0dHA6
- Ly91cmwtZm9yLWNybC9JbnRlcm1lZGlhdGUuY3JsMA4GA1UdDwEB/wQEAwIFoDAd
--BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwgjoKBgNVHREEgjoBMII5/YIH
-+BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwgi8wBgNVHREEgi8nMIIvI4IH
- dDAudGVzdIIHdDEudGVzdIIHdDIudGVzdIIHdDMudGVzdIIHdDQudGVzdIIHdDUu
- dGVzdIIHdDYudGVzdIIHdDcudGVzdIIHdDgudGVzdIIHdDkudGVzdIIIdDEwLnRl
- c3SCCHQxMS50ZXN0ggh0MTIudGVzdIIIdDEzLnRlc3SCCHQxNC50ZXN0ggh0MTUu
-@@ -164,245 +164,188 @@ MjQudGVzdIIJdDMyNS50ZXN0ggl0MzI2LnRlc3SCCXQzMjcudGVzdIIJdDMyOC50
- ZXN0ggl0MzI5LnRlc3SCCXQzMzAudGVzdIIJdDMzMS50ZXN0ggl0MzMyLnRlc3SC
- CXQzMzMudGVzdIIJdDMzNC50ZXN0ggl0MzM1LnRlc3SCCXQzMzYudGVzdIIJdDMz
- Ny50ZXN0ggl0MzM4LnRlc3SCCXQzMzkudGVzdIIJdDM0MC50ZXN0ggl0MzQxLnRl
--c3SCCXQzNDIudGVzdIIJdDM0My50ZXN0ggl0MzQ0LnRlc3SCCXQzNDUudGVzdIIJ
--dDM0Ni50ZXN0ggl0MzQ3LnRlc3SCCXQzNDgudGVzdIIJdDM0OS50ZXN0ggl0MzUw
--LnRlc3SCCXQzNTEudGVzdIIJdDM1Mi50ZXN0ggl0MzUzLnRlc3SCCXQzNTQudGVz
--dIIJdDM1NS50ZXN0ggl0MzU2LnRlc3SCCXQzNTcudGVzdIIJdDM1OC50ZXN0ggl0
--MzU5LnRlc3SCCXQzNjAudGVzdIIJdDM2MS50ZXN0ggl0MzYyLnRlc3SCCXQzNjMu
--dGVzdIIJdDM2NC50ZXN0ggl0MzY1LnRlc3SCCXQzNjYudGVzdIIJdDM2Ny50ZXN0
--ggl0MzY4LnRlc3SCCXQzNjkudGVzdIIJdDM3MC50ZXN0ggl0MzcxLnRlc3SCCXQz
--NzIudGVzdIIJdDM3My50ZXN0ggl0Mzc0LnRlc3SCCXQzNzUudGVzdIIJdDM3Ni50
--ZXN0ggl0Mzc3LnRlc3SCCXQzNzgudGVzdIIJdDM3OS50ZXN0ggl0MzgwLnRlc3SC
--CXQzODEudGVzdIIJdDM4Mi50ZXN0ggl0MzgzLnRlc3SCCXQzODQudGVzdIIJdDM4
--NS50ZXN0ggl0Mzg2LnRlc3SCCXQzODcudGVzdIIJdDM4OC50ZXN0ggl0Mzg5LnRl
--c3SCCXQzOTAudGVzdIIJdDM5MS50ZXN0ggl0MzkyLnRlc3SCCXQzOTMudGVzdIIJ
--dDM5NC50ZXN0ggl0Mzk1LnRlc3SCCXQzOTYudGVzdIIJdDM5Ny50ZXN0ggl0Mzk4
--LnRlc3SCCXQzOTkudGVzdIIJdDQwMC50ZXN0ggl0NDAxLnRlc3SCCXQ0MDIudGVz
--dIIJdDQwMy50ZXN0ggl0NDA0LnRlc3SCCXQ0MDUudGVzdIIJdDQwNi50ZXN0ggl0
--NDA3LnRlc3SCCXQ0MDgudGVzdIIJdDQwOS50ZXN0ggl0NDEwLnRlc3SCCXQ0MTEu
--dGVzdIIJdDQxMi50ZXN0ggl0NDEzLnRlc3SCCXQ0MTQudGVzdIIJdDQxNS50ZXN0
--ggl0NDE2LnRlc3SCCXQ0MTcudGVzdIIJdDQxOC50ZXN0hwQKAAAAhwQKAAABhwQK
--AAAChwQKAAADhwQKAAAEhwQKAAAFhwQKAAAGhwQKAAAHhwQKAAAIhwQKAAAJhwQK
--AAAKhwQKAAALhwQKAAAMhwQKAAANhwQKAAAOhwQKAAAPhwQKAAAQhwQKAAARhwQK
--AAAShwQKAAAThwQKAAAUhwQKAAAVhwQKAAAWhwQKAAAXhwQKAAAYhwQKAAAZhwQK
--AAAahwQKAAAbhwQKAAAchwQKAAAdhwQKAAAehwQKAAAfhwQKAAAghwQKAAAhhwQK
--AAAihwQKAAAjhwQKAAAkhwQKAAAlhwQKAAAmhwQKAAAnhwQKAAAohwQKAAAphwQK
--AAAqhwQKAAArhwQKAAAshwQKAAAthwQKAAAuhwQKAAAvhwQKAAAwhwQKAAAxhwQK
--AAAyhwQKAAAzhwQKAAA0hwQKAAA1hwQKAAA2hwQKAAA3hwQKAAA4hwQKAAA5hwQK
--AAA6hwQKAAA7hwQKAAA8hwQKAAA9hwQKAAA+hwQKAAA/hwQKAABAhwQKAABBhwQK
--AABChwQKAABDhwQKAABEhwQKAABFhwQKAABGhwQKAABHhwQKAABIhwQKAABJhwQK
--AABKhwQKAABLhwQKAABMhwQKAABNhwQKAABOhwQKAABPhwQKAABQhwQKAABRhwQK
--AABShwQKAABThwQKAABUhwQKAABVhwQKAABWhwQKAABXhwQKAABYhwQKAABZhwQK
--AABahwQKAABbhwQKAABchwQKAABdhwQKAABehwQKAABfhwQKAABghwQKAABhhwQK
--AABihwQKAABjhwQKAABkhwQKAABlhwQKAABmhwQKAABnhwQKAABohwQKAABphwQK
--AABqhwQKAABrhwQKAABshwQKAABthwQKAABuhwQKAABvhwQKAABwhwQKAABxhwQK
--AAByhwQKAABzhwQKAAB0hwQKAAB1hwQKAAB2hwQKAAB3hwQKAAB4hwQKAAB5hwQK
--AAB6hwQKAAB7hwQKAAB8hwQKAAB9hwQKAAB+hwQKAAB/hwQKAACAhwQKAACBhwQK
--AACChwQKAACDhwQKAACEhwQKAACFhwQKAACGhwQKAACHhwQKAACIhwQKAACJhwQK
--AACKhwQKAACLhwQKAACMhwQKAACNhwQKAACOhwQKAACPhwQKAACQhwQKAACRhwQK
--AACShwQKAACThwQKAACUhwQKAACVhwQKAACWhwQKAACXhwQKAACYhwQKAACZhwQK
--AACahwQKAACbhwQKAACchwQKAACdhwQKAACehwQKAACfhwQKAACghwQKAAChhwQK
--AACihwQKAACjhwQKAACkhwQKAAClhwQKAACmhwQKAACnhwQKAACohwQKAACphwQK
--AACqhwQKAACrhwQKAACshwQKAACthwQKAACuhwQKAACvhwQKAACwhwQKAACxhwQK
--AACyhwQKAACzhwQKAAC0hwQKAAC1hwQKAAC2hwQKAAC3hwQKAAC4hwQKAAC5hwQK
--AAC6hwQKAAC7hwQKAAC8hwQKAAC9hwQKAAC+hwQKAAC/hwQKAADAhwQKAADBhwQK
--AADChwQKAADDhwQKAADEhwQKAADFhwQKAADGhwQKAADHhwQKAADIhwQKAADJhwQK
--AADKhwQKAADLhwQKAADMhwQKAADNhwQKAADOhwQKAADPhwQKAADQhwQKAADRhwQK
--AADShwQKAADThwQKAADUhwQKAADVhwQKAADWhwQKAADXhwQKAADYhwQKAADZhwQK
--AADahwQKAADbhwQKAADchwQKAADdhwQKAADehwQKAADfhwQKAADghwQKAADhhwQK
--AADihwQKAADjhwQKAADkhwQKAADlhwQKAADmhwQKAADnhwQKAADohwQKAADphwQK
--AADqhwQKAADrhwQKAADshwQKAADthwQKAADuhwQKAADvhwQKAADwhwQKAADxhwQK
--AADyhwQKAADzhwQKAAD0hwQKAAD1hwQKAAD2hwQKAAD3hwQKAAD4hwQKAAD5hwQK
--AAD6hwQKAAD7hwQKAAD8hwQKAAD9hwQKAAD+hwQKAAD/hwQKAAEAhwQKAAEBhwQK
--AAEChwQKAAEDhwQKAAEEhwQKAAEFhwQKAAEGhwQKAAEHhwQKAAEIhwQKAAEJhwQK
--AAEKhwQKAAELhwQKAAEMhwQKAAENhwQKAAEOhwQKAAEPhwQKAAEQhwQKAAERhwQK
--AAEShwQKAAEThwQKAAEUhwQKAAEVhwQKAAEWhwQKAAEXhwQKAAEYhwQKAAEZhwQK
--AAEahwQKAAEbhwQKAAEchwQKAAEdhwQKAAEehwQKAAEfhwQKAAEghwQKAAEhhwQK
--AAEihwQKAAEjhwQKAAEkhwQKAAElhwQKAAEmhwQKAAEnhwQKAAEohwQKAAEphwQK
--AAEqhwQKAAErhwQKAAEshwQKAAEthwQKAAEuhwQKAAEvhwQKAAEwhwQKAAExhwQK
--AAEyhwQKAAEzhwQKAAE0hwQKAAE1hwQKAAE2hwQKAAE3hwQKAAE4hwQKAAE5hwQK
--AAE6hwQKAAE7hwQKAAE8hwQKAAE9hwQKAAE+hwQKAAE/hwQKAAFAhwQKAAFBhwQK
--AAFChwQKAAFDhwQKAAFEhwQKAAFFhwQKAAFGhwQKAAFHhwQKAAFIhwQKAAFJhwQK
--AAFKhwQKAAFLhwQKAAFMhwQKAAFNhwQKAAFOhwQKAAFPhwQKAAFQhwQKAAFRhwQK
--AAFShwQKAAFThwQKAAFUhwQKAAFVhwQKAAFWhwQKAAFXhwQKAAFYhwQKAAFZhwQK
--AAFahwQKAAFbhwQKAAFchwQKAAFdhwQKAAFehwQKAAFfhwQKAAFghwQKAAFhhwQK
--AAFihwQKAAFjhwQKAAFkhwQKAAFlhwQKAAFmhwQKAAFnhwQKAAFohwQKAAFphwQK
--AAFqhwQKAAFrhwQKAAFshwQKAAFthwQKAAFuhwQKAAFvhwQKAAFwhwQKAAFxhwQK
--AAFyhwQKAAFzhwQKAAF0hwQKAAF1hwQKAAF2hwQKAAF3hwQKAAF4hwQKAAF5hwQK
--AAF6hwQKAAF7hwQKAAF8hwQKAAF9hwQKAAF+hwQKAAF/hwQKAAGAhwQKAAGBhwQK
--AAGChwQKAAGDhwQKAAGEhwQKAAGFhwQKAAGGhwQKAAGHhwQKAAGIhwQKAAGJhwQK
--AAGKhwQKAAGLhwQKAAGMhwQKAAGNhwQKAAGOhwQKAAGPhwQKAAGQhwQKAAGRhwQK
--AAGShwQKAAGThwQKAAGUhwQKAAGVhwQKAAGWhwQKAAGXhwQKAAGYhwQKAAGZhwQK
--AAGahwQKAAGbhwQKAAGchwQKAAGdhwQKAAGehwQKAAGfhwQKAAGghwQKAAGhhwQK
--AAGipA8wDTELMAkGA1UEAwwCdDCkDzANMQswCQYDVQQDDAJ0MaQPMA0xCzAJBgNV
--BAMMAnQypA8wDTELMAkGA1UEAwwCdDOkDzANMQswCQYDVQQDDAJ0NKQPMA0xCzAJ
--BgNVBAMMAnQ1pA8wDTELMAkGA1UEAwwCdDakDzANMQswCQYDVQQDDAJ0N6QPMA0x
--CzAJBgNVBAMMAnQ4pA8wDTELMAkGA1UEAwwCdDmkEDAOMQwwCgYDVQQDDAN0MTCk
--EDAOMQwwCgYDVQQDDAN0MTGkEDAOMQwwCgYDVQQDDAN0MTKkEDAOMQwwCgYDVQQD
--DAN0MTOkEDAOMQwwCgYDVQQDDAN0MTSkEDAOMQwwCgYDVQQDDAN0MTWkEDAOMQww
--CgYDVQQDDAN0MTakEDAOMQwwCgYDVQQDDAN0MTekEDAOMQwwCgYDVQQDDAN0MTik
--EDAOMQwwCgYDVQQDDAN0MTmkEDAOMQwwCgYDVQQDDAN0MjCkEDAOMQwwCgYDVQQD
--DAN0MjGkEDAOMQwwCgYDVQQDDAN0MjKkEDAOMQwwCgYDVQQDDAN0MjOkEDAOMQww
--CgYDVQQDDAN0MjSkEDAOMQwwCgYDVQQDDAN0MjWkEDAOMQwwCgYDVQQDDAN0Mjak
--EDAOMQwwCgYDVQQDDAN0MjekEDAOMQwwCgYDVQQDDAN0MjikEDAOMQwwCgYDVQQD
--DAN0MjmkEDAOMQwwCgYDVQQDDAN0MzCkEDAOMQwwCgYDVQQDDAN0MzGkEDAOMQww
--CgYDVQQDDAN0MzKkEDAOMQwwCgYDVQQDDAN0MzOkEDAOMQwwCgYDVQQDDAN0MzSk
--EDAOMQwwCgYDVQQDDAN0MzWkEDAOMQwwCgYDVQQDDAN0MzakEDAOMQwwCgYDVQQD
--DAN0MzekEDAOMQwwCgYDVQQDDAN0MzikEDAOMQwwCgYDVQQDDAN0MzmkEDAOMQww
--CgYDVQQDDAN0NDCkEDAOMQwwCgYDVQQDDAN0NDGkEDAOMQwwCgYDVQQDDAN0NDKk
--EDAOMQwwCgYDVQQDDAN0NDOkEDAOMQwwCgYDVQQDDAN0NDSkEDAOMQwwCgYDVQQD
--DAN0NDWkEDAOMQwwCgYDVQQDDAN0NDakEDAOMQwwCgYDVQQDDAN0NDekEDAOMQww
--CgYDVQQDDAN0NDikEDAOMQwwCgYDVQQDDAN0NDmkEDAOMQwwCgYDVQQDDAN0NTCk
--EDAOMQwwCgYDVQQDDAN0NTGkEDAOMQwwCgYDVQQDDAN0NTKkEDAOMQwwCgYDVQQD
--DAN0NTOkEDAOMQwwCgYDVQQDDAN0NTSkEDAOMQwwCgYDVQQDDAN0NTWkEDAOMQww
--CgYDVQQDDAN0NTakEDAOMQwwCgYDVQQDDAN0NTekEDAOMQwwCgYDVQQDDAN0NTik
--EDAOMQwwCgYDVQQDDAN0NTmkEDAOMQwwCgYDVQQDDAN0NjCkEDAOMQwwCgYDVQQD
--DAN0NjGkEDAOMQwwCgYDVQQDDAN0NjKkEDAOMQwwCgYDVQQDDAN0NjOkEDAOMQww
--CgYDVQQDDAN0NjSkEDAOMQwwCgYDVQQDDAN0NjWkEDAOMQwwCgYDVQQDDAN0Njak
--EDAOMQwwCgYDVQQDDAN0NjekEDAOMQwwCgYDVQQDDAN0NjikEDAOMQwwCgYDVQQD
--DAN0NjmkEDAOMQwwCgYDVQQDDAN0NzCkEDAOMQwwCgYDVQQDDAN0NzGkEDAOMQww
--CgYDVQQDDAN0NzKkEDAOMQwwCgYDVQQDDAN0NzOkEDAOMQwwCgYDVQQDDAN0NzSk
--EDAOMQwwCgYDVQQDDAN0NzWkEDAOMQwwCgYDVQQDDAN0NzakEDAOMQwwCgYDVQQD
--DAN0NzekEDAOMQwwCgYDVQQDDAN0NzikEDAOMQwwCgYDVQQDDAN0NzmkEDAOMQww
--CgYDVQQDDAN0ODCkEDAOMQwwCgYDVQQDDAN0ODGkEDAOMQwwCgYDVQQDDAN0ODKk
--EDAOMQwwCgYDVQQDDAN0ODOkEDAOMQwwCgYDVQQDDAN0ODSkEDAOMQwwCgYDVQQD
--DAN0ODWkEDAOMQwwCgYDVQQDDAN0ODakEDAOMQwwCgYDVQQDDAN0ODekEDAOMQww
--CgYDVQQDDAN0ODikEDAOMQwwCgYDVQQDDAN0ODmkEDAOMQwwCgYDVQQDDAN0OTCk
--EDAOMQwwCgYDVQQDDAN0OTGkEDAOMQwwCgYDVQQDDAN0OTKkEDAOMQwwCgYDVQQD
--DAN0OTOkEDAOMQwwCgYDVQQDDAN0OTSkEDAOMQwwCgYDVQQDDAN0OTWkEDAOMQww
--CgYDVQQDDAN0OTakEDAOMQwwCgYDVQQDDAN0OTekEDAOMQwwCgYDVQQDDAN0OTik
--EDAOMQwwCgYDVQQDDAN0OTmkETAPMQ0wCwYDVQQDDAR0MTAwpBEwDzENMAsGA1UE
--AwwEdDEwMaQRMA8xDTALBgNVBAMMBHQxMDKkETAPMQ0wCwYDVQQDDAR0MTAzpBEw
--DzENMAsGA1UEAwwEdDEwNKQRMA8xDTALBgNVBAMMBHQxMDWkETAPMQ0wCwYDVQQD
--DAR0MTA2pBEwDzENMAsGA1UEAwwEdDEwN6QRMA8xDTALBgNVBAMMBHQxMDikETAP
--MQ0wCwYDVQQDDAR0MTA5pBEwDzENMAsGA1UEAwwEdDExMKQRMA8xDTALBgNVBAMM
--BHQxMTGkETAPMQ0wCwYDVQQDDAR0MTEypBEwDzENMAsGA1UEAwwEdDExM6QRMA8x
--DTALBgNVBAMMBHQxMTSkETAPMQ0wCwYDVQQDDAR0MTE1pBEwDzENMAsGA1UEAwwE
--dDExNqQRMA8xDTALBgNVBAMMBHQxMTekETAPMQ0wCwYDVQQDDAR0MTE4pBEwDzEN
--MAsGA1UEAwwEdDExOaQRMA8xDTALBgNVBAMMBHQxMjCkETAPMQ0wCwYDVQQDDAR0
--MTIxpBEwDzENMAsGA1UEAwwEdDEyMqQRMA8xDTALBgNVBAMMBHQxMjOkETAPMQ0w
--CwYDVQQDDAR0MTI0pBEwDzENMAsGA1UEAwwEdDEyNaQRMA8xDTALBgNVBAMMBHQx
--MjakETAPMQ0wCwYDVQQDDAR0MTI3pBEwDzENMAsGA1UEAwwEdDEyOKQRMA8xDTAL
--BgNVBAMMBHQxMjmkETAPMQ0wCwYDVQQDDAR0MTMwpBEwDzENMAsGA1UEAwwEdDEz
--MaQRMA8xDTALBgNVBAMMBHQxMzKkETAPMQ0wCwYDVQQDDAR0MTMzpBEwDzENMAsG
--A1UEAwwEdDEzNKQRMA8xDTALBgNVBAMMBHQxMzWkETAPMQ0wCwYDVQQDDAR0MTM2
--pBEwDzENMAsGA1UEAwwEdDEzN6QRMA8xDTALBgNVBAMMBHQxMzikETAPMQ0wCwYD
--VQQDDAR0MTM5pBEwDzENMAsGA1UEAwwEdDE0MKQRMA8xDTALBgNVBAMMBHQxNDGk
--ETAPMQ0wCwYDVQQDDAR0MTQypBEwDzENMAsGA1UEAwwEdDE0M6QRMA8xDTALBgNV
--BAMMBHQxNDSkETAPMQ0wCwYDVQQDDAR0MTQ1pBEwDzENMAsGA1UEAwwEdDE0NqQR
--MA8xDTALBgNVBAMMBHQxNDekETAPMQ0wCwYDVQQDDAR0MTQ4pBEwDzENMAsGA1UE
--AwwEdDE0OaQRMA8xDTALBgNVBAMMBHQxNTCkETAPMQ0wCwYDVQQDDAR0MTUxpBEw
--DzENMAsGA1UEAwwEdDE1MqQRMA8xDTALBgNVBAMMBHQxNTOkETAPMQ0wCwYDVQQD
--DAR0MTU0pBEwDzENMAsGA1UEAwwEdDE1NaQRMA8xDTALBgNVBAMMBHQxNTakETAP
--MQ0wCwYDVQQDDAR0MTU3pBEwDzENMAsGA1UEAwwEdDE1OKQRMA8xDTALBgNVBAMM
--BHQxNTmkETAPMQ0wCwYDVQQDDAR0MTYwpBEwDzENMAsGA1UEAwwEdDE2MaQRMA8x
--DTALBgNVBAMMBHQxNjKkETAPMQ0wCwYDVQQDDAR0MTYzpBEwDzENMAsGA1UEAwwE
--dDE2NKQRMA8xDTALBgNVBAMMBHQxNjWkETAPMQ0wCwYDVQQDDAR0MTY2pBEwDzEN
--MAsGA1UEAwwEdDE2N6QRMA8xDTALBgNVBAMMBHQxNjikETAPMQ0wCwYDVQQDDAR0
--MTY5pBEwDzENMAsGA1UEAwwEdDE3MKQRMA8xDTALBgNVBAMMBHQxNzGkETAPMQ0w
--CwYDVQQDDAR0MTcypBEwDzENMAsGA1UEAwwEdDE3M6QRMA8xDTALBgNVBAMMBHQx
--NzSkETAPMQ0wCwYDVQQDDAR0MTc1pBEwDzENMAsGA1UEAwwEdDE3NqQRMA8xDTAL
--BgNVBAMMBHQxNzekETAPMQ0wCwYDVQQDDAR0MTc4pBEwDzENMAsGA1UEAwwEdDE3
--OaQRMA8xDTALBgNVBAMMBHQxODCkETAPMQ0wCwYDVQQDDAR0MTgxpBEwDzENMAsG
--A1UEAwwEdDE4MqQRMA8xDTALBgNVBAMMBHQxODOkETAPMQ0wCwYDVQQDDAR0MTg0
--pBEwDzENMAsGA1UEAwwEdDE4NaQRMA8xDTALBgNVBAMMBHQxODakETAPMQ0wCwYD
--VQQDDAR0MTg3pBEwDzENMAsGA1UEAwwEdDE4OKQRMA8xDTALBgNVBAMMBHQxODmk
--ETAPMQ0wCwYDVQQDDAR0MTkwpBEwDzENMAsGA1UEAwwEdDE5MaQRMA8xDTALBgNV
--BAMMBHQxOTKkETAPMQ0wCwYDVQQDDAR0MTkzpBEwDzENMAsGA1UEAwwEdDE5NKQR
--MA8xDTALBgNVBAMMBHQxOTWkETAPMQ0wCwYDVQQDDAR0MTk2pBEwDzENMAsGA1UE
--AwwEdDE5N6QRMA8xDTALBgNVBAMMBHQxOTikETAPMQ0wCwYDVQQDDAR0MTk5pBEw
--DzENMAsGA1UEAwwEdDIwMKQRMA8xDTALBgNVBAMMBHQyMDGkETAPMQ0wCwYDVQQD
--DAR0MjAypBEwDzENMAsGA1UEAwwEdDIwM6QRMA8xDTALBgNVBAMMBHQyMDSkETAP
--MQ0wCwYDVQQDDAR0MjA1pBEwDzENMAsGA1UEAwwEdDIwNqQRMA8xDTALBgNVBAMM
--BHQyMDekETAPMQ0wCwYDVQQDDAR0MjA4pBEwDzENMAsGA1UEAwwEdDIwOaQRMA8x
--DTALBgNVBAMMBHQyMTCkETAPMQ0wCwYDVQQDDAR0MjExpBEwDzENMAsGA1UEAwwE
--dDIxMqQRMA8xDTALBgNVBAMMBHQyMTOkETAPMQ0wCwYDVQQDDAR0MjE0pBEwDzEN
--MAsGA1UEAwwEdDIxNaQRMA8xDTALBgNVBAMMBHQyMTakETAPMQ0wCwYDVQQDDAR0
--MjE3pBEwDzENMAsGA1UEAwwEdDIxOKQRMA8xDTALBgNVBAMMBHQyMTmkETAPMQ0w
--CwYDVQQDDAR0MjIwpBEwDzENMAsGA1UEAwwEdDIyMaQRMA8xDTALBgNVBAMMBHQy
--MjKkETAPMQ0wCwYDVQQDDAR0MjIzpBEwDzENMAsGA1UEAwwEdDIyNKQRMA8xDTAL
--BgNVBAMMBHQyMjWkETAPMQ0wCwYDVQQDDAR0MjI2pBEwDzENMAsGA1UEAwwEdDIy
--N6QRMA8xDTALBgNVBAMMBHQyMjikETAPMQ0wCwYDVQQDDAR0MjI5pBEwDzENMAsG
--A1UEAwwEdDIzMKQRMA8xDTALBgNVBAMMBHQyMzGkETAPMQ0wCwYDVQQDDAR0MjMy
--pBEwDzENMAsGA1UEAwwEdDIzM6QRMA8xDTALBgNVBAMMBHQyMzSkETAPMQ0wCwYD
--VQQDDAR0MjM1pBEwDzENMAsGA1UEAwwEdDIzNqQRMA8xDTALBgNVBAMMBHQyMzek
--ETAPMQ0wCwYDVQQDDAR0MjM4pBEwDzENMAsGA1UEAwwEdDIzOaQRMA8xDTALBgNV
--BAMMBHQyNDCkETAPMQ0wCwYDVQQDDAR0MjQxpBEwDzENMAsGA1UEAwwEdDI0MqQR
--MA8xDTALBgNVBAMMBHQyNDOkETAPMQ0wCwYDVQQDDAR0MjQ0pBEwDzENMAsGA1UE
--AwwEdDI0NaQRMA8xDTALBgNVBAMMBHQyNDakETAPMQ0wCwYDVQQDDAR0MjQ3pBEw
--DzENMAsGA1UEAwwEdDI0OKQRMA8xDTALBgNVBAMMBHQyNDmkETAPMQ0wCwYDVQQD
--DAR0MjUwpBEwDzENMAsGA1UEAwwEdDI1MaQRMA8xDTALBgNVBAMMBHQyNTKkETAP
--MQ0wCwYDVQQDDAR0MjUzpBEwDzENMAsGA1UEAwwEdDI1NKQRMA8xDTALBgNVBAMM
--BHQyNTWkETAPMQ0wCwYDVQQDDAR0MjU2pBEwDzENMAsGA1UEAwwEdDI1N6QRMA8x
--DTALBgNVBAMMBHQyNTikETAPMQ0wCwYDVQQDDAR0MjU5pBEwDzENMAsGA1UEAwwE
--dDI2MKQRMA8xDTALBgNVBAMMBHQyNjGkETAPMQ0wCwYDVQQDDAR0MjYypBEwDzEN
--MAsGA1UEAwwEdDI2M6QRMA8xDTALBgNVBAMMBHQyNjSkETAPMQ0wCwYDVQQDDAR0
--MjY1pBEwDzENMAsGA1UEAwwEdDI2NqQRMA8xDTALBgNVBAMMBHQyNjekETAPMQ0w
--CwYDVQQDDAR0MjY4pBEwDzENMAsGA1UEAwwEdDI2OaQRMA8xDTALBgNVBAMMBHQy
--NzCkETAPMQ0wCwYDVQQDDAR0MjcxpBEwDzENMAsGA1UEAwwEdDI3MqQRMA8xDTAL
--BgNVBAMMBHQyNzOkETAPMQ0wCwYDVQQDDAR0Mjc0pBEwDzENMAsGA1UEAwwEdDI3
--NaQRMA8xDTALBgNVBAMMBHQyNzakETAPMQ0wCwYDVQQDDAR0Mjc3pBEwDzENMAsG
--A1UEAwwEdDI3OKQRMA8xDTALBgNVBAMMBHQyNzmkETAPMQ0wCwYDVQQDDAR0Mjgw
--pBEwDzENMAsGA1UEAwwEdDI4MaQRMA8xDTALBgNVBAMMBHQyODKkETAPMQ0wCwYD
--VQQDDAR0MjgzpBEwDzENMAsGA1UEAwwEdDI4NKQRMA8xDTALBgNVBAMMBHQyODWk
--ETAPMQ0wCwYDVQQDDAR0Mjg2pBEwDzENMAsGA1UEAwwEdDI4N6QRMA8xDTALBgNV
--BAMMBHQyODikETAPMQ0wCwYDVQQDDAR0Mjg5pBEwDzENMAsGA1UEAwwEdDI5MKQR
--MA8xDTALBgNVBAMMBHQyOTGkETAPMQ0wCwYDVQQDDAR0MjkypBEwDzENMAsGA1UE
--AwwEdDI5M6QRMA8xDTALBgNVBAMMBHQyOTSkETAPMQ0wCwYDVQQDDAR0Mjk1pBEw
--DzENMAsGA1UEAwwEdDI5NqQRMA8xDTALBgNVBAMMBHQyOTekETAPMQ0wCwYDVQQD
--DAR0Mjk4pBEwDzENMAsGA1UEAwwEdDI5OaQRMA8xDTALBgNVBAMMBHQzMDCkETAP
--MQ0wCwYDVQQDDAR0MzAxpBEwDzENMAsGA1UEAwwEdDMwMqQRMA8xDTALBgNVBAMM
--BHQzMDOkETAPMQ0wCwYDVQQDDAR0MzA0pBEwDzENMAsGA1UEAwwEdDMwNaQRMA8x
--DTALBgNVBAMMBHQzMDakETAPMQ0wCwYDVQQDDAR0MzA3pBEwDzENMAsGA1UEAwwE
--dDMwOKQRMA8xDTALBgNVBAMMBHQzMDmkETAPMQ0wCwYDVQQDDAR0MzEwpBEwDzEN
--MAsGA1UEAwwEdDMxMaQRMA8xDTALBgNVBAMMBHQzMTKkETAPMQ0wCwYDVQQDDAR0
--MzEzpBEwDzENMAsGA1UEAwwEdDMxNKQRMA8xDTALBgNVBAMMBHQzMTWkETAPMQ0w
--CwYDVQQDDAR0MzE2pBEwDzENMAsGA1UEAwwEdDMxN6QRMA8xDTALBgNVBAMMBHQz
--MTikETAPMQ0wCwYDVQQDDAR0MzE5pBEwDzENMAsGA1UEAwwEdDMyMKQRMA8xDTAL
--BgNVBAMMBHQzMjGkETAPMQ0wCwYDVQQDDAR0MzIypBEwDzENMAsGA1UEAwwEdDMy
--M6QRMA8xDTALBgNVBAMMBHQzMjSkETAPMQ0wCwYDVQQDDAR0MzI1pBEwDzENMAsG
--A1UEAwwEdDMyNqQRMA8xDTALBgNVBAMMBHQzMjekETAPMQ0wCwYDVQQDDAR0MzI4
--pBEwDzENMAsGA1UEAwwEdDMyOaQRMA8xDTALBgNVBAMMBHQzMzCkETAPMQ0wCwYD
--VQQDDAR0MzMxpBEwDzENMAsGA1UEAwwEdDMzMqQRMA8xDTALBgNVBAMMBHQzMzOk
--ETAPMQ0wCwYDVQQDDAR0MzM0pBEwDzENMAsGA1UEAwwEdDMzNaQRMA8xDTALBgNV
--BAMMBHQzMzakETAPMQ0wCwYDVQQDDAR0MzM3pBEwDzENMAsGA1UEAwwEdDMzOKQR
--MA8xDTALBgNVBAMMBHQzMzmkETAPMQ0wCwYDVQQDDAR0MzQwpBEwDzENMAsGA1UE
--AwwEdDM0MaQRMA8xDTALBgNVBAMMBHQzNDKkETAPMQ0wCwYDVQQDDAR0MzQzpBEw
--DzENMAsGA1UEAwwEdDM0NKQRMA8xDTALBgNVBAMMBHQzNDWkETAPMQ0wCwYDVQQD
--DAR0MzQ2pBEwDzENMAsGA1UEAwwEdDM0N6QRMA8xDTALBgNVBAMMBHQzNDikETAP
--MQ0wCwYDVQQDDAR0MzQ5pBEwDzENMAsGA1UEAwwEdDM1MKQRMA8xDTALBgNVBAMM
--BHQzNTGkETAPMQ0wCwYDVQQDDAR0MzUypBEwDzENMAsGA1UEAwwEdDM1M6QRMA8x
--DTALBgNVBAMMBHQzNTSkETAPMQ0wCwYDVQQDDAR0MzU1pBEwDzENMAsGA1UEAwwE
--dDM1NqQRMA8xDTALBgNVBAMMBHQzNTekETAPMQ0wCwYDVQQDDAR0MzU4pBEwDzEN
--MAsGA1UEAwwEdDM1OaQRMA8xDTALBgNVBAMMBHQzNjCkETAPMQ0wCwYDVQQDDAR0
--MzYxpBEwDzENMAsGA1UEAwwEdDM2MqQRMA8xDTALBgNVBAMMBHQzNjOkETAPMQ0w
--CwYDVQQDDAR0MzY0pBEwDzENMAsGA1UEAwwEdDM2NaQRMA8xDTALBgNVBAMMBHQz
--NjakETAPMQ0wCwYDVQQDDAR0MzY3pBEwDzENMAsGA1UEAwwEdDM2OKQRMA8xDTAL
--BgNVBAMMBHQzNjmkETAPMQ0wCwYDVQQDDAR0MzcwpBEwDzENMAsGA1UEAwwEdDM3
--MaQRMA8xDTALBgNVBAMMBHQzNzKkETAPMQ0wCwYDVQQDDAR0MzczpBEwDzENMAsG
--A1UEAwwEdDM3NKQRMA8xDTALBgNVBAMMBHQzNzWkETAPMQ0wCwYDVQQDDAR0Mzc2
--pBEwDzENMAsGA1UEAwwEdDM3N6QRMA8xDTALBgNVBAMMBHQzNzikETAPMQ0wCwYD
--VQQDDAR0Mzc5pBEwDzENMAsGA1UEAwwEdDM4MKQRMA8xDTALBgNVBAMMBHQzODGk
--ETAPMQ0wCwYDVQQDDAR0MzgypBEwDzENMAsGA1UEAwwEdDM4M6QRMA8xDTALBgNV
--BAMMBHQzODSkETAPMQ0wCwYDVQQDDAR0Mzg1pBEwDzENMAsGA1UEAwwEdDM4NqQR
--MA8xDTALBgNVBAMMBHQzODekETAPMQ0wCwYDVQQDDAR0Mzg4pBEwDzENMAsGA1UE
--AwwEdDM4OaQRMA8xDTALBgNVBAMMBHQzOTCkETAPMQ0wCwYDVQQDDAR0MzkxpBEw
--DzENMAsGA1UEAwwEdDM5MqQRMA8xDTALBgNVBAMMBHQzOTOkETAPMQ0wCwYDVQQD
--DAR0Mzk0pBEwDzENMAsGA1UEAwwEdDM5NaQRMA8xDTALBgNVBAMMBHQzOTakETAP
--MQ0wCwYDVQQDDAR0Mzk3pBEwDzENMAsGA1UEAwwEdDM5OKQRMA8xDTALBgNVBAMM
--BHQzOTmkETAPMQ0wCwYDVQQDDAR0NDAwpBEwDzENMAsGA1UEAwwEdDQwMaQRMA8x
--DTALBgNVBAMMBHQ0MDKkETAPMQ0wCwYDVQQDDAR0NDAzpBEwDzENMAsGA1UEAwwE
--dDQwNKQRMA8xDTALBgNVBAMMBHQ0MDWkETAPMQ0wCwYDVQQDDAR0NDA2pBEwDzEN
--MAsGA1UEAwwEdDQwN6QRMA8xDTALBgNVBAMMBHQ0MDikETAPMQ0wCwYDVQQDDAR0
--NDA5pBEwDzENMAsGA1UEAwwEdDQxMKQRMA8xDTALBgNVBAMMBHQ0MTGkETAPMQ0w
--CwYDVQQDDAR0NDEypBEwDzENMAsGA1UEAwwEdDQxM6QRMA8xDTALBgNVBAMMBHQ0
--MTSkETAPMQ0wCwYDVQQDDAR0NDE1pBEwDzENMAsGA1UEAwwEdDQxNqQRMA8xDTAL
--BgNVBAMMBHQ0MTcwDQYJKoZIhvcNAQELBQADggEBALLlevug25l7K2A7KQqWnipy
--WvlZm+ivTh4QyyKmM9sYYtvG5+qbwoNO8Ii/2XBO1L0hCJmaDmvx7ftDY8QOIjPp
--Z1xf01Fh390sUS/SpT9Bevvj/xac/nd8VyVsAoy85laO4Ns+LqL9kTD9fDqxA8vr
--wXfAsuAa+bo95HVWjZhiYaHMjZBWNkQsopK+SCXH74ZUjtI+xxTW7wWCr4a1uxSk
--gD8E4DZuD6sOnCe89EOhaUc66n97HiYULAo6AT/YBvca4Xxu6B4dwCRhVhAjauMm
--VNkdSCsNOTt2oyC5oGrIz3dX19YyxLzSECgdqN/uvKMhdOlFW+x3CtWxtEEz4ws=
-+c3SHBAoAAACHBAoAAAGHBAoAAAKHBAoAAAOHBAoAAASHBAoAAAWHBAoAAAaHBAoA
-+AAeHBAoAAAiHBAoAAAmHBAoAAAqHBAoAAAuHBAoAAAyHBAoAAA2HBAoAAA6HBAoA
-+AA+HBAoAABCHBAoAABGHBAoAABKHBAoAABOHBAoAABSHBAoAABWHBAoAABaHBAoA
-+ABeHBAoAABiHBAoAABmHBAoAABqHBAoAABuHBAoAAByHBAoAAB2HBAoAAB6HBAoA
-+AB+HBAoAACCHBAoAACGHBAoAACKHBAoAACOHBAoAACSHBAoAACWHBAoAACaHBAoA
-+ACeHBAoAACiHBAoAACmHBAoAACqHBAoAACuHBAoAACyHBAoAAC2HBAoAAC6HBAoA
-+AC+HBAoAADCHBAoAADGHBAoAADKHBAoAADOHBAoAADSHBAoAADWHBAoAADaHBAoA
-+ADeHBAoAADiHBAoAADmHBAoAADqHBAoAADuHBAoAADyHBAoAAD2HBAoAAD6HBAoA
-+AD+HBAoAAECHBAoAAEGHBAoAAEKHBAoAAEOHBAoAAESHBAoAAEWHBAoAAEaHBAoA
-+AEeHBAoAAEiHBAoAAEmHBAoAAEqHBAoAAEuHBAoAAEyHBAoAAE2HBAoAAE6HBAoA
-+AE+HBAoAAFCHBAoAAFGHBAoAAFKHBAoAAFOHBAoAAFSHBAoAAFWHBAoAAFaHBAoA
-+AFeHBAoAAFiHBAoAAFmHBAoAAFqHBAoAAFuHBAoAAFyHBAoAAF2HBAoAAF6HBAoA
-+AF+HBAoAAGCHBAoAAGGHBAoAAGKHBAoAAGOHBAoAAGSHBAoAAGWHBAoAAGaHBAoA
-+AGeHBAoAAGiHBAoAAGmHBAoAAGqHBAoAAGuHBAoAAGyHBAoAAG2HBAoAAG6HBAoA
-+AG+HBAoAAHCHBAoAAHGHBAoAAHKHBAoAAHOHBAoAAHSHBAoAAHWHBAoAAHaHBAoA
-+AHeHBAoAAHiHBAoAAHmHBAoAAHqHBAoAAHuHBAoAAHyHBAoAAH2HBAoAAH6HBAoA
-+AH+HBAoAAICHBAoAAIGHBAoAAIKHBAoAAIOHBAoAAISHBAoAAIWHBAoAAIaHBAoA
-+AIeHBAoAAIiHBAoAAImHBAoAAIqHBAoAAIuHBAoAAIyHBAoAAI2HBAoAAI6HBAoA
-+AI+HBAoAAJCHBAoAAJGHBAoAAJKHBAoAAJOHBAoAAJSHBAoAAJWHBAoAAJaHBAoA
-+AJeHBAoAAJiHBAoAAJmHBAoAAJqHBAoAAJuHBAoAAJyHBAoAAJ2HBAoAAJ6HBAoA
-+AJ+HBAoAAKCHBAoAAKGHBAoAAKKHBAoAAKOHBAoAAKSHBAoAAKWHBAoAAKaHBAoA
-+AKeHBAoAAKiHBAoAAKmHBAoAAKqHBAoAAKuHBAoAAKyHBAoAAK2HBAoAAK6HBAoA
-+AK+HBAoAALCHBAoAALGHBAoAALKHBAoAALOHBAoAALSHBAoAALWHBAoAALaHBAoA
-+ALeHBAoAALiHBAoAALmHBAoAALqHBAoAALuHBAoAALyHBAoAAL2HBAoAAL6HBAoA
-+AL+HBAoAAMCHBAoAAMGHBAoAAMKHBAoAAMOHBAoAAMSHBAoAAMWHBAoAAMaHBAoA
-+AMeHBAoAAMiHBAoAAMmHBAoAAMqHBAoAAMuHBAoAAMyHBAoAAM2HBAoAAM6HBAoA
-+AM+HBAoAANCHBAoAANGHBAoAANKHBAoAANOHBAoAANSHBAoAANWHBAoAANaHBAoA
-+ANeHBAoAANiHBAoAANmHBAoAANqHBAoAANuHBAoAANyHBAoAAN2HBAoAAN6HBAoA
-+AN+HBAoAAOCHBAoAAOGHBAoAAOKHBAoAAOOHBAoAAOSHBAoAAOWHBAoAAOaHBAoA
-+AOeHBAoAAOiHBAoAAOmHBAoAAOqHBAoAAOuHBAoAAOyHBAoAAO2HBAoAAO6HBAoA
-+AO+HBAoAAPCHBAoAAPGHBAoAAPKHBAoAAPOHBAoAAPSHBAoAAPWHBAoAAPaHBAoA
-+APeHBAoAAPiHBAoAAPmHBAoAAPqHBAoAAPuHBAoAAPyHBAoAAP2HBAoAAP6HBAoA
-+AP+HBAoAAQCHBAoAAQGHBAoAAQKHBAoAAQOHBAoAAQSHBAoAAQWHBAoAAQaHBAoA
-+AQeHBAoAAQiHBAoAAQmHBAoAAQqHBAoAAQuHBAoAAQyHBAoAAQ2HBAoAAQ6HBAoA
-+AQ+HBAoAARCHBAoAARGHBAoAARKHBAoAAROHBAoAARSHBAoAARWHBAoAARaHBAoA
-+AReHBAoAARiHBAoAARmHBAoAARqHBAoAARuHBAoAARyHBAoAAR2HBAoAAR6HBAoA
-+AR+HBAoAASCHBAoAASGHBAoAASKHBAoAASOHBAoAASSHBAoAASWHBAoAASaHBAoA
-+ASeHBAoAASiHBAoAASmHBAoAASqHBAoAASuHBAoAASyHBAoAAS2HBAoAAS6HBAoA
-+AS+HBAoAATCHBAoAATGHBAoAATKHBAoAATOHBAoAATSHBAoAATWHBAoAATaHBAoA
-+ATeHBAoAATiHBAoAATmHBAoAATqHBAoAATuHBAoAATyHBAoAAT2HBAoAAT6HBAoA
-+AT+HBAoAAUCHBAoAAUGHBAoAAUKHBAoAAUOHBAoAAUSHBAoAAUWHBAoAAUaHBAoA
-+AUeHBAoAAUiHBAoAAUmHBAoAAUqHBAoAAUuHBAoAAUyHBAoAAU2HBAoAAU6HBAoA
-+AU+HBAoAAVCHBAoAAVGHBAoAAVKHBAoAAVOHBAoAAVSkDzANMQswCQYDVQQDDAJ0
-+MKQPMA0xCzAJBgNVBAMMAnQxpA8wDTELMAkGA1UEAwwCdDKkDzANMQswCQYDVQQD
-+DAJ0M6QPMA0xCzAJBgNVBAMMAnQ0pA8wDTELMAkGA1UEAwwCdDWkDzANMQswCQYD
-+VQQDDAJ0NqQPMA0xCzAJBgNVBAMMAnQ3pA8wDTELMAkGA1UEAwwCdDikDzANMQsw
-+CQYDVQQDDAJ0OaQQMA4xDDAKBgNVBAMMA3QxMKQQMA4xDDAKBgNVBAMMA3QxMaQQ
-+MA4xDDAKBgNVBAMMA3QxMqQQMA4xDDAKBgNVBAMMA3QxM6QQMA4xDDAKBgNVBAMM
-+A3QxNKQQMA4xDDAKBgNVBAMMA3QxNaQQMA4xDDAKBgNVBAMMA3QxNqQQMA4xDDAK
-+BgNVBAMMA3QxN6QQMA4xDDAKBgNVBAMMA3QxOKQQMA4xDDAKBgNVBAMMA3QxOaQQ
-+MA4xDDAKBgNVBAMMA3QyMKQQMA4xDDAKBgNVBAMMA3QyMaQQMA4xDDAKBgNVBAMM
-+A3QyMqQQMA4xDDAKBgNVBAMMA3QyM6QQMA4xDDAKBgNVBAMMA3QyNKQQMA4xDDAK
-+BgNVBAMMA3QyNaQQMA4xDDAKBgNVBAMMA3QyNqQQMA4xDDAKBgNVBAMMA3QyN6QQ
-+MA4xDDAKBgNVBAMMA3QyOKQQMA4xDDAKBgNVBAMMA3QyOaQQMA4xDDAKBgNVBAMM
-+A3QzMKQQMA4xDDAKBgNVBAMMA3QzMaQQMA4xDDAKBgNVBAMMA3QzMqQQMA4xDDAK
-+BgNVBAMMA3QzM6QQMA4xDDAKBgNVBAMMA3QzNKQQMA4xDDAKBgNVBAMMA3QzNaQQ
-+MA4xDDAKBgNVBAMMA3QzNqQQMA4xDDAKBgNVBAMMA3QzN6QQMA4xDDAKBgNVBAMM
-+A3QzOKQQMA4xDDAKBgNVBAMMA3QzOaQQMA4xDDAKBgNVBAMMA3Q0MKQQMA4xDDAK
-+BgNVBAMMA3Q0MaQQMA4xDDAKBgNVBAMMA3Q0MqQQMA4xDDAKBgNVBAMMA3Q0M6QQ
-+MA4xDDAKBgNVBAMMA3Q0NKQQMA4xDDAKBgNVBAMMA3Q0NaQQMA4xDDAKBgNVBAMM
-+A3Q0NqQQMA4xDDAKBgNVBAMMA3Q0N6QQMA4xDDAKBgNVBAMMA3Q0OKQQMA4xDDAK
-+BgNVBAMMA3Q0OaQQMA4xDDAKBgNVBAMMA3Q1MKQQMA4xDDAKBgNVBAMMA3Q1MaQQ
-+MA4xDDAKBgNVBAMMA3Q1MqQQMA4xDDAKBgNVBAMMA3Q1M6QQMA4xDDAKBgNVBAMM
-+A3Q1NKQQMA4xDDAKBgNVBAMMA3Q1NaQQMA4xDDAKBgNVBAMMA3Q1NqQQMA4xDDAK
-+BgNVBAMMA3Q1N6QQMA4xDDAKBgNVBAMMA3Q1OKQQMA4xDDAKBgNVBAMMA3Q1OaQQ
-+MA4xDDAKBgNVBAMMA3Q2MKQQMA4xDDAKBgNVBAMMA3Q2MaQQMA4xDDAKBgNVBAMM
-+A3Q2MqQQMA4xDDAKBgNVBAMMA3Q2M6QQMA4xDDAKBgNVBAMMA3Q2NKQQMA4xDDAK
-+BgNVBAMMA3Q2NaQQMA4xDDAKBgNVBAMMA3Q2NqQQMA4xDDAKBgNVBAMMA3Q2N6QQ
-+MA4xDDAKBgNVBAMMA3Q2OKQQMA4xDDAKBgNVBAMMA3Q2OaQQMA4xDDAKBgNVBAMM
-+A3Q3MKQQMA4xDDAKBgNVBAMMA3Q3MaQQMA4xDDAKBgNVBAMMA3Q3MqQQMA4xDDAK
-+BgNVBAMMA3Q3M6QQMA4xDDAKBgNVBAMMA3Q3NKQQMA4xDDAKBgNVBAMMA3Q3NaQQ
-+MA4xDDAKBgNVBAMMA3Q3NqQQMA4xDDAKBgNVBAMMA3Q3N6QQMA4xDDAKBgNVBAMM
-+A3Q3OKQQMA4xDDAKBgNVBAMMA3Q3OaQQMA4xDDAKBgNVBAMMA3Q4MKQQMA4xDDAK
-+BgNVBAMMA3Q4MaQQMA4xDDAKBgNVBAMMA3Q4MqQQMA4xDDAKBgNVBAMMA3Q4M6QQ
-+MA4xDDAKBgNVBAMMA3Q4NKQQMA4xDDAKBgNVBAMMA3Q4NaQQMA4xDDAKBgNVBAMM
-+A3Q4NqQQMA4xDDAKBgNVBAMMA3Q4N6QQMA4xDDAKBgNVBAMMA3Q4OKQQMA4xDDAK
-+BgNVBAMMA3Q4OaQQMA4xDDAKBgNVBAMMA3Q5MKQQMA4xDDAKBgNVBAMMA3Q5MaQQ
-+MA4xDDAKBgNVBAMMA3Q5MqQQMA4xDDAKBgNVBAMMA3Q5M6QQMA4xDDAKBgNVBAMM
-+A3Q5NKQQMA4xDDAKBgNVBAMMA3Q5NaQQMA4xDDAKBgNVBAMMA3Q5NqQQMA4xDDAK
-+BgNVBAMMA3Q5N6QQMA4xDDAKBgNVBAMMA3Q5OKQQMA4xDDAKBgNVBAMMA3Q5OaQR
-+MA8xDTALBgNVBAMMBHQxMDCkETAPMQ0wCwYDVQQDDAR0MTAxpBEwDzENMAsGA1UE
-+AwwEdDEwMqQRMA8xDTALBgNVBAMMBHQxMDOkETAPMQ0wCwYDVQQDDAR0MTA0pBEw
-+DzENMAsGA1UEAwwEdDEwNaQRMA8xDTALBgNVBAMMBHQxMDakETAPMQ0wCwYDVQQD
-+DAR0MTA3pBEwDzENMAsGA1UEAwwEdDEwOKQRMA8xDTALBgNVBAMMBHQxMDmkETAP
-+MQ0wCwYDVQQDDAR0MTEwpBEwDzENMAsGA1UEAwwEdDExMaQRMA8xDTALBgNVBAMM
-+BHQxMTKkETAPMQ0wCwYDVQQDDAR0MTEzpBEwDzENMAsGA1UEAwwEdDExNKQRMA8x
-+DTALBgNVBAMMBHQxMTWkETAPMQ0wCwYDVQQDDAR0MTE2pBEwDzENMAsGA1UEAwwE
-+dDExN6QRMA8xDTALBgNVBAMMBHQxMTikETAPMQ0wCwYDVQQDDAR0MTE5pBEwDzEN
-+MAsGA1UEAwwEdDEyMKQRMA8xDTALBgNVBAMMBHQxMjGkETAPMQ0wCwYDVQQDDAR0
-+MTIypBEwDzENMAsGA1UEAwwEdDEyM6QRMA8xDTALBgNVBAMMBHQxMjSkETAPMQ0w
-+CwYDVQQDDAR0MTI1pBEwDzENMAsGA1UEAwwEdDEyNqQRMA8xDTALBgNVBAMMBHQx
-+MjekETAPMQ0wCwYDVQQDDAR0MTI4pBEwDzENMAsGA1UEAwwEdDEyOaQRMA8xDTAL
-+BgNVBAMMBHQxMzCkETAPMQ0wCwYDVQQDDAR0MTMxpBEwDzENMAsGA1UEAwwEdDEz
-+MqQRMA8xDTALBgNVBAMMBHQxMzOkETAPMQ0wCwYDVQQDDAR0MTM0pBEwDzENMAsG
-+A1UEAwwEdDEzNaQRMA8xDTALBgNVBAMMBHQxMzakETAPMQ0wCwYDVQQDDAR0MTM3
-+pBEwDzENMAsGA1UEAwwEdDEzOKQRMA8xDTALBgNVBAMMBHQxMzmkETAPMQ0wCwYD
-+VQQDDAR0MTQwpBEwDzENMAsGA1UEAwwEdDE0MaQRMA8xDTALBgNVBAMMBHQxNDKk
-+ETAPMQ0wCwYDVQQDDAR0MTQzpBEwDzENMAsGA1UEAwwEdDE0NKQRMA8xDTALBgNV
-+BAMMBHQxNDWkETAPMQ0wCwYDVQQDDAR0MTQ2pBEwDzENMAsGA1UEAwwEdDE0N6QR
-+MA8xDTALBgNVBAMMBHQxNDikETAPMQ0wCwYDVQQDDAR0MTQ5pBEwDzENMAsGA1UE
-+AwwEdDE1MKQRMA8xDTALBgNVBAMMBHQxNTGkETAPMQ0wCwYDVQQDDAR0MTUypBEw
-+DzENMAsGA1UEAwwEdDE1M6QRMA8xDTALBgNVBAMMBHQxNTSkETAPMQ0wCwYDVQQD
-+DAR0MTU1pBEwDzENMAsGA1UEAwwEdDE1NqQRMA8xDTALBgNVBAMMBHQxNTekETAP
-+MQ0wCwYDVQQDDAR0MTU4pBEwDzENMAsGA1UEAwwEdDE1OaQRMA8xDTALBgNVBAMM
-+BHQxNjCkETAPMQ0wCwYDVQQDDAR0MTYxpBEwDzENMAsGA1UEAwwEdDE2MqQRMA8x
-+DTALBgNVBAMMBHQxNjOkETAPMQ0wCwYDVQQDDAR0MTY0pBEwDzENMAsGA1UEAwwE
-+dDE2NaQRMA8xDTALBgNVBAMMBHQxNjakETAPMQ0wCwYDVQQDDAR0MTY3pBEwDzEN
-+MAsGA1UEAwwEdDE2OKQRMA8xDTALBgNVBAMMBHQxNjmkETAPMQ0wCwYDVQQDDAR0
-+MTcwpBEwDzENMAsGA1UEAwwEdDE3MaQRMA8xDTALBgNVBAMMBHQxNzKkETAPMQ0w
-+CwYDVQQDDAR0MTczpBEwDzENMAsGA1UEAwwEdDE3NKQRMA8xDTALBgNVBAMMBHQx
-+NzWkETAPMQ0wCwYDVQQDDAR0MTc2pBEwDzENMAsGA1UEAwwEdDE3N6QRMA8xDTAL
-+BgNVBAMMBHQxNzikETAPMQ0wCwYDVQQDDAR0MTc5pBEwDzENMAsGA1UEAwwEdDE4
-+MKQRMA8xDTALBgNVBAMMBHQxODGkETAPMQ0wCwYDVQQDDAR0MTgypBEwDzENMAsG
-+A1UEAwwEdDE4M6QRMA8xDTALBgNVBAMMBHQxODSkETAPMQ0wCwYDVQQDDAR0MTg1
-+pBEwDzENMAsGA1UEAwwEdDE4NqQRMA8xDTALBgNVBAMMBHQxODekETAPMQ0wCwYD
-+VQQDDAR0MTg4pBEwDzENMAsGA1UEAwwEdDE4OaQRMA8xDTALBgNVBAMMBHQxOTCk
-+ETAPMQ0wCwYDVQQDDAR0MTkxpBEwDzENMAsGA1UEAwwEdDE5MqQRMA8xDTALBgNV
-+BAMMBHQxOTOkETAPMQ0wCwYDVQQDDAR0MTk0pBEwDzENMAsGA1UEAwwEdDE5NaQR
-+MA8xDTALBgNVBAMMBHQxOTakETAPMQ0wCwYDVQQDDAR0MTk3pBEwDzENMAsGA1UE
-+AwwEdDE5OKQRMA8xDTALBgNVBAMMBHQxOTmkETAPMQ0wCwYDVQQDDAR0MjAwpBEw
-+DzENMAsGA1UEAwwEdDIwMaQRMA8xDTALBgNVBAMMBHQyMDKkETAPMQ0wCwYDVQQD
-+DAR0MjAzpBEwDzENMAsGA1UEAwwEdDIwNKQRMA8xDTALBgNVBAMMBHQyMDWkETAP
-+MQ0wCwYDVQQDDAR0MjA2pBEwDzENMAsGA1UEAwwEdDIwN6QRMA8xDTALBgNVBAMM
-+BHQyMDikETAPMQ0wCwYDVQQDDAR0MjA5pBEwDzENMAsGA1UEAwwEdDIxMKQRMA8x
-+DTALBgNVBAMMBHQyMTGkETAPMQ0wCwYDVQQDDAR0MjEypBEwDzENMAsGA1UEAwwE
-+dDIxM6QRMA8xDTALBgNVBAMMBHQyMTSkETAPMQ0wCwYDVQQDDAR0MjE1pBEwDzEN
-+MAsGA1UEAwwEdDIxNqQRMA8xDTALBgNVBAMMBHQyMTekETAPMQ0wCwYDVQQDDAR0
-+MjE4pBEwDzENMAsGA1UEAwwEdDIxOaQRMA8xDTALBgNVBAMMBHQyMjCkETAPMQ0w
-+CwYDVQQDDAR0MjIxpBEwDzENMAsGA1UEAwwEdDIyMqQRMA8xDTALBgNVBAMMBHQy
-+MjOkETAPMQ0wCwYDVQQDDAR0MjI0pBEwDzENMAsGA1UEAwwEdDIyNaQRMA8xDTAL
-+BgNVBAMMBHQyMjakETAPMQ0wCwYDVQQDDAR0MjI3pBEwDzENMAsGA1UEAwwEdDIy
-+OKQRMA8xDTALBgNVBAMMBHQyMjmkETAPMQ0wCwYDVQQDDAR0MjMwpBEwDzENMAsG
-+A1UEAwwEdDIzMaQRMA8xDTALBgNVBAMMBHQyMzKkETAPMQ0wCwYDVQQDDAR0MjMz
-+pBEwDzENMAsGA1UEAwwEdDIzNKQRMA8xDTALBgNVBAMMBHQyMzWkETAPMQ0wCwYD
-+VQQDDAR0MjM2pBEwDzENMAsGA1UEAwwEdDIzN6QRMA8xDTALBgNVBAMMBHQyMzik
-+ETAPMQ0wCwYDVQQDDAR0MjM5pBEwDzENMAsGA1UEAwwEdDI0MKQRMA8xDTALBgNV
-+BAMMBHQyNDGkETAPMQ0wCwYDVQQDDAR0MjQypBEwDzENMAsGA1UEAwwEdDI0M6QR
-+MA8xDTALBgNVBAMMBHQyNDSkETAPMQ0wCwYDVQQDDAR0MjQ1pBEwDzENMAsGA1UE
-+AwwEdDI0NqQRMA8xDTALBgNVBAMMBHQyNDekETAPMQ0wCwYDVQQDDAR0MjQ4pBEw
-+DzENMAsGA1UEAwwEdDI0OaQRMA8xDTALBgNVBAMMBHQyNTCkETAPMQ0wCwYDVQQD
-+DAR0MjUxpBEwDzENMAsGA1UEAwwEdDI1MqQRMA8xDTALBgNVBAMMBHQyNTOkETAP
-+MQ0wCwYDVQQDDAR0MjU0pBEwDzENMAsGA1UEAwwEdDI1NaQRMA8xDTALBgNVBAMM
-+BHQyNTakETAPMQ0wCwYDVQQDDAR0MjU3pBEwDzENMAsGA1UEAwwEdDI1OKQRMA8x
-+DTALBgNVBAMMBHQyNTmkETAPMQ0wCwYDVQQDDAR0MjYwpBEwDzENMAsGA1UEAwwE
-+dDI2MaQRMA8xDTALBgNVBAMMBHQyNjKkETAPMQ0wCwYDVQQDDAR0MjYzpBEwDzEN
-+MAsGA1UEAwwEdDI2NKQRMA8xDTALBgNVBAMMBHQyNjWkETAPMQ0wCwYDVQQDDAR0
-+MjY2pBEwDzENMAsGA1UEAwwEdDI2N6QRMA8xDTALBgNVBAMMBHQyNjikETAPMQ0w
-+CwYDVQQDDAR0MjY5pBEwDzENMAsGA1UEAwwEdDI3MKQRMA8xDTALBgNVBAMMBHQy
-+NzGkETAPMQ0wCwYDVQQDDAR0MjcypBEwDzENMAsGA1UEAwwEdDI3M6QRMA8xDTAL
-+BgNVBAMMBHQyNzSkETAPMQ0wCwYDVQQDDAR0Mjc1pBEwDzENMAsGA1UEAwwEdDI3
-+NqQRMA8xDTALBgNVBAMMBHQyNzekETAPMQ0wCwYDVQQDDAR0Mjc4pBEwDzENMAsG
-+A1UEAwwEdDI3OaQRMA8xDTALBgNVBAMMBHQyODCkETAPMQ0wCwYDVQQDDAR0Mjgx
-+pBEwDzENMAsGA1UEAwwEdDI4MqQRMA8xDTALBgNVBAMMBHQyODOkETAPMQ0wCwYD
-+VQQDDAR0Mjg0pBEwDzENMAsGA1UEAwwEdDI4NaQRMA8xDTALBgNVBAMMBHQyODak
-+ETAPMQ0wCwYDVQQDDAR0Mjg3pBEwDzENMAsGA1UEAwwEdDI4OKQRMA8xDTALBgNV
-+BAMMBHQyODmkETAPMQ0wCwYDVQQDDAR0MjkwpBEwDzENMAsGA1UEAwwEdDI5MaQR
-+MA8xDTALBgNVBAMMBHQyOTKkETAPMQ0wCwYDVQQDDAR0MjkzpBEwDzENMAsGA1UE
-+AwwEdDI5NKQRMA8xDTALBgNVBAMMBHQyOTWkETAPMQ0wCwYDVQQDDAR0Mjk2pBEw
-+DzENMAsGA1UEAwwEdDI5N6QRMA8xDTALBgNVBAMMBHQyOTikETAPMQ0wCwYDVQQD
-+DAR0Mjk5pBEwDzENMAsGA1UEAwwEdDMwMKQRMA8xDTALBgNVBAMMBHQzMDGkETAP
-+MQ0wCwYDVQQDDAR0MzAypBEwDzENMAsGA1UEAwwEdDMwM6QRMA8xDTALBgNVBAMM
-+BHQzMDSkETAPMQ0wCwYDVQQDDAR0MzA1pBEwDzENMAsGA1UEAwwEdDMwNqQRMA8x
-+DTALBgNVBAMMBHQzMDekETAPMQ0wCwYDVQQDDAR0MzA4pBEwDzENMAsGA1UEAwwE
-+dDMwOaQRMA8xDTALBgNVBAMMBHQzMTCkETAPMQ0wCwYDVQQDDAR0MzExpBEwDzEN
-+MAsGA1UEAwwEdDMxMqQRMA8xDTALBgNVBAMMBHQzMTOkETAPMQ0wCwYDVQQDDAR0
-+MzE0pBEwDzENMAsGA1UEAwwEdDMxNaQRMA8xDTALBgNVBAMMBHQzMTakETAPMQ0w
-+CwYDVQQDDAR0MzE3pBEwDzENMAsGA1UEAwwEdDMxOKQRMA8xDTALBgNVBAMMBHQz
-+MTmkETAPMQ0wCwYDVQQDDAR0MzIwpBEwDzENMAsGA1UEAwwEdDMyMaQRMA8xDTAL
-+BgNVBAMMBHQzMjKkETAPMQ0wCwYDVQQDDAR0MzIzpBEwDzENMAsGA1UEAwwEdDMy
-+NKQRMA8xDTALBgNVBAMMBHQzMjWkETAPMQ0wCwYDVQQDDAR0MzI2pBEwDzENMAsG
-+A1UEAwwEdDMyN6QRMA8xDTALBgNVBAMMBHQzMjikETAPMQ0wCwYDVQQDDAR0MzI5
-+pBEwDzENMAsGA1UEAwwEdDMzMKQRMA8xDTALBgNVBAMMBHQzMzGkETAPMQ0wCwYD
-+VQQDDAR0MzMypBEwDzENMAsGA1UEAwwEdDMzM6QRMA8xDTALBgNVBAMMBHQzMzSk
-+ETAPMQ0wCwYDVQQDDAR0MzM1pBEwDzENMAsGA1UEAwwEdDMzNqQRMA8xDTALBgNV
-+BAMMBHQzMzekETAPMQ0wCwYDVQQDDAR0MzM4pBEwDzENMAsGA1UEAwwEdDMzOaQR
-+MA8xDTALBgNVBAMMBHQzNDAwDQYJKoZIhvcNAQELBQADggEBAJDCV/aS6cdYTrW9
-+ESYz3bk9wh5tayF0BIUiHtIbCfuZJNjm7RxVFDS3GU7yzDcus9MmlvJtiNaNsnsa
-+b+tm8dnzo0+wdlHSHOawrg8oOL/GlNV2cQ/2EZXIBya+gapVTRcXNpC7wrhAcqLP
-+D9NVsWVQZ8hXS1S9W0J/1LRGDv6d8OuplsJTzrX7cTzaUTeUx3se1lvBG9quCbHa
-+0C0nrkbGXtByy+App8hA6BiUJq3YUSFDJPb5pJ7xV9FLPnRxl4/eCS3ThbF5qJ3Q
-+bDWQqGIv+0WsxVtczOpyBbAveTZW8nVbtDCMDJ/86Np+LN38XvwjBMFTMafizhgQ
-+KLjUYI4=
- -----END CERTIFICATE-----
-
- Certificate:
-@@ -410,7 +353,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 3c:e5:fc:81:88:59:a8:50:16:c1:7f:d7:e5:2a:e5:96:7f:c2:f6:f7
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Root
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-@@ -631,253 +574,6 @@ Certificate:
- DNS:t169.test
- DNS:t170.test
- DNS:t171.test
-- DNS:t172.test
-- DNS:t173.test
-- DNS:t174.test
-- DNS:t175.test
-- DNS:t176.test
-- DNS:t177.test
-- DNS:t178.test
-- DNS:t179.test
-- DNS:t180.test
-- DNS:t181.test
-- DNS:t182.test
-- DNS:t183.test
-- DNS:t184.test
-- DNS:t185.test
-- DNS:t186.test
-- DNS:t187.test
-- DNS:t188.test
-- DNS:t189.test
-- DNS:t190.test
-- DNS:t191.test
-- DNS:t192.test
-- DNS:t193.test
-- DNS:t194.test
-- DNS:t195.test
-- DNS:t196.test
-- DNS:t197.test
-- DNS:t198.test
-- DNS:t199.test
-- DNS:t200.test
-- DNS:t201.test
-- DNS:t202.test
-- DNS:t203.test
-- DNS:t204.test
-- DNS:t205.test
-- DNS:t206.test
-- DNS:t207.test
-- DNS:t208.test
-- DNS:t209.test
-- DNS:t210.test
-- DNS:t211.test
-- DNS:t212.test
-- DNS:t213.test
-- DNS:t214.test
-- DNS:t215.test
-- DNS:t216.test
-- DNS:t217.test
-- DNS:t218.test
-- DNS:t219.test
-- DNS:t220.test
-- DNS:t221.test
-- DNS:t222.test
-- DNS:t223.test
-- DNS:t224.test
-- DNS:t225.test
-- DNS:t226.test
-- DNS:t227.test
-- DNS:t228.test
-- DNS:t229.test
-- DNS:t230.test
-- DNS:t231.test
-- DNS:t232.test
-- DNS:t233.test
-- DNS:t234.test
-- DNS:t235.test
-- DNS:t236.test
-- DNS:t237.test
-- DNS:t238.test
-- DNS:t239.test
-- DNS:t240.test
-- DNS:t241.test
-- DNS:t242.test
-- DNS:t243.test
-- DNS:t244.test
-- DNS:t245.test
-- DNS:t246.test
-- DNS:t247.test
-- DNS:t248.test
-- DNS:t249.test
-- DNS:t250.test
-- DNS:t251.test
-- DNS:t252.test
-- DNS:t253.test
-- DNS:t254.test
-- DNS:t255.test
-- DNS:t256.test
-- DNS:t257.test
-- DNS:t258.test
-- DNS:t259.test
-- DNS:t260.test
-- DNS:t261.test
-- DNS:t262.test
-- DNS:t263.test
-- DNS:t264.test
-- DNS:t265.test
-- DNS:t266.test
-- DNS:t267.test
-- DNS:t268.test
-- DNS:t269.test
-- DNS:t270.test
-- DNS:t271.test
-- DNS:t272.test
-- DNS:t273.test
-- DNS:t274.test
-- DNS:t275.test
-- DNS:t276.test
-- DNS:t277.test
-- DNS:t278.test
-- DNS:t279.test
-- DNS:t280.test
-- DNS:t281.test
-- DNS:t282.test
-- DNS:t283.test
-- DNS:t284.test
-- DNS:t285.test
-- DNS:t286.test
-- DNS:t287.test
-- DNS:t288.test
-- DNS:t289.test
-- DNS:t290.test
-- DNS:t291.test
-- DNS:t292.test
-- DNS:t293.test
-- DNS:t294.test
-- DNS:t295.test
-- DNS:t296.test
-- DNS:t297.test
-- DNS:t298.test
-- DNS:t299.test
-- DNS:t300.test
-- DNS:t301.test
-- DNS:t302.test
-- DNS:t303.test
-- DNS:t304.test
-- DNS:t305.test
-- DNS:t306.test
-- DNS:t307.test
-- DNS:t308.test
-- DNS:t309.test
-- DNS:t310.test
-- DNS:t311.test
-- DNS:t312.test
-- DNS:t313.test
-- DNS:t314.test
-- DNS:t315.test
-- DNS:t316.test
-- DNS:t317.test
-- DNS:t318.test
-- DNS:t319.test
-- DNS:t320.test
-- DNS:t321.test
-- DNS:t322.test
-- DNS:t323.test
-- DNS:t324.test
-- DNS:t325.test
-- DNS:t326.test
-- DNS:t327.test
-- DNS:t328.test
-- DNS:t329.test
-- DNS:t330.test
-- DNS:t331.test
-- DNS:t332.test
-- DNS:t333.test
-- DNS:t334.test
-- DNS:t335.test
-- DNS:t336.test
-- DNS:t337.test
-- DNS:t338.test
-- DNS:t339.test
-- DNS:t340.test
-- DNS:t341.test
-- DNS:t342.test
-- DNS:t343.test
-- DNS:t344.test
-- DNS:t345.test
-- DNS:t346.test
-- DNS:t347.test
-- DNS:t348.test
-- DNS:t349.test
-- DNS:t350.test
-- DNS:t351.test
-- DNS:t352.test
-- DNS:t353.test
-- DNS:t354.test
-- DNS:t355.test
-- DNS:t356.test
-- DNS:t357.test
-- DNS:t358.test
-- DNS:t359.test
-- DNS:t360.test
-- DNS:t361.test
-- DNS:t362.test
-- DNS:t363.test
-- DNS:t364.test
-- DNS:t365.test
-- DNS:t366.test
-- DNS:t367.test
-- DNS:t368.test
-- DNS:t369.test
-- DNS:t370.test
-- DNS:t371.test
-- DNS:t372.test
-- DNS:t373.test
-- DNS:t374.test
-- DNS:t375.test
-- DNS:t376.test
-- DNS:t377.test
-- DNS:t378.test
-- DNS:t379.test
-- DNS:t380.test
-- DNS:t381.test
-- DNS:t382.test
-- DNS:t383.test
-- DNS:t384.test
-- DNS:t385.test
-- DNS:t386.test
-- DNS:t387.test
-- DNS:t388.test
-- DNS:t389.test
-- DNS:t390.test
-- DNS:t391.test
-- DNS:t392.test
-- DNS:t393.test
-- DNS:t394.test
-- DNS:t395.test
-- DNS:t396.test
-- DNS:t397.test
-- DNS:t398.test
-- DNS:t399.test
-- DNS:t400.test
-- DNS:t401.test
-- DNS:t402.test
-- DNS:t403.test
-- DNS:t404.test
-- DNS:t405.test
-- DNS:t406.test
-- DNS:t407.test
-- DNS:t408.test
-- DNS:t409.test
-- DNS:t410.test
-- DNS:t411.test
-- DNS:t412.test
-- DNS:t413.test
-- DNS:t414.test
-- DNS:t415.test
-- DNS:t416.test
-- DNS:t417.test
-- DNS:t418.test
- IP:10.0.0.0/255.255.255.255
- IP:10.0.0.1/255.255.255.255
- IP:10.0.0.2/255.255.255.255
-@@ -1049,673 +745,178 @@ Certificate:
- IP:10.0.0.168/255.255.255.255
- IP:10.0.0.169/255.255.255.255
- IP:10.0.0.170/255.255.255.255
-- IP:10.0.0.171/255.255.255.255
-- IP:10.0.0.172/255.255.255.255
-- IP:10.0.0.173/255.255.255.255
-- IP:10.0.0.174/255.255.255.255
-- IP:10.0.0.175/255.255.255.255
-- IP:10.0.0.176/255.255.255.255
-- IP:10.0.0.177/255.255.255.255
-- IP:10.0.0.178/255.255.255.255
-- IP:10.0.0.179/255.255.255.255
-- IP:10.0.0.180/255.255.255.255
-- IP:10.0.0.181/255.255.255.255
-- IP:10.0.0.182/255.255.255.255
-- IP:10.0.0.183/255.255.255.255
-- IP:10.0.0.184/255.255.255.255
-- IP:10.0.0.185/255.255.255.255
-- IP:10.0.0.186/255.255.255.255
-- IP:10.0.0.187/255.255.255.255
-- IP:10.0.0.188/255.255.255.255
-- IP:10.0.0.189/255.255.255.255
-- IP:10.0.0.190/255.255.255.255
-- IP:10.0.0.191/255.255.255.255
-- IP:10.0.0.192/255.255.255.255
-- IP:10.0.0.193/255.255.255.255
-- IP:10.0.0.194/255.255.255.255
-- IP:10.0.0.195/255.255.255.255
-- IP:10.0.0.196/255.255.255.255
-- IP:10.0.0.197/255.255.255.255
-- IP:10.0.0.198/255.255.255.255
-- IP:10.0.0.199/255.255.255.255
-- IP:10.0.0.200/255.255.255.255
-- IP:10.0.0.201/255.255.255.255
-- IP:10.0.0.202/255.255.255.255
-- IP:10.0.0.203/255.255.255.255
-- IP:10.0.0.204/255.255.255.255
-- IP:10.0.0.205/255.255.255.255
-- IP:10.0.0.206/255.255.255.255
-- IP:10.0.0.207/255.255.255.255
-- IP:10.0.0.208/255.255.255.255
-- IP:10.0.0.209/255.255.255.255
-- IP:10.0.0.210/255.255.255.255
-- IP:10.0.0.211/255.255.255.255
-- IP:10.0.0.212/255.255.255.255
-- IP:10.0.0.213/255.255.255.255
-- IP:10.0.0.214/255.255.255.255
-- IP:10.0.0.215/255.255.255.255
-- IP:10.0.0.216/255.255.255.255
-- IP:10.0.0.217/255.255.255.255
-- IP:10.0.0.218/255.255.255.255
-- IP:10.0.0.219/255.255.255.255
-- IP:10.0.0.220/255.255.255.255
-- IP:10.0.0.221/255.255.255.255
-- IP:10.0.0.222/255.255.255.255
-- IP:10.0.0.223/255.255.255.255
-- IP:10.0.0.224/255.255.255.255
-- IP:10.0.0.225/255.255.255.255
-- IP:10.0.0.226/255.255.255.255
-- IP:10.0.0.227/255.255.255.255
-- IP:10.0.0.228/255.255.255.255
-- IP:10.0.0.229/255.255.255.255
-- IP:10.0.0.230/255.255.255.255
-- IP:10.0.0.231/255.255.255.255
-- IP:10.0.0.232/255.255.255.255
-- IP:10.0.0.233/255.255.255.255
-- IP:10.0.0.234/255.255.255.255
-- IP:10.0.0.235/255.255.255.255
-- IP:10.0.0.236/255.255.255.255
-- IP:10.0.0.237/255.255.255.255
-- IP:10.0.0.238/255.255.255.255
-- IP:10.0.0.239/255.255.255.255
-- IP:10.0.0.240/255.255.255.255
-- IP:10.0.0.241/255.255.255.255
-- IP:10.0.0.242/255.255.255.255
-- IP:10.0.0.243/255.255.255.255
-- IP:10.0.0.244/255.255.255.255
-- IP:10.0.0.245/255.255.255.255
-- IP:10.0.0.246/255.255.255.255
-- IP:10.0.0.247/255.255.255.255
-- IP:10.0.0.248/255.255.255.255
-- IP:10.0.0.249/255.255.255.255
-- IP:10.0.0.250/255.255.255.255
-- IP:10.0.0.251/255.255.255.255
-- IP:10.0.0.252/255.255.255.255
-- IP:10.0.0.253/255.255.255.255
-- IP:10.0.0.254/255.255.255.255
-- IP:10.0.0.255/255.255.255.255
-- IP:10.0.1.0/255.255.255.255
-- IP:10.0.1.1/255.255.255.255
-- IP:10.0.1.2/255.255.255.255
-- IP:10.0.1.3/255.255.255.255
-- IP:10.0.1.4/255.255.255.255
-- IP:10.0.1.5/255.255.255.255
-- IP:10.0.1.6/255.255.255.255
-- IP:10.0.1.7/255.255.255.255
-- IP:10.0.1.8/255.255.255.255
-- IP:10.0.1.9/255.255.255.255
-- IP:10.0.1.10/255.255.255.255
-- IP:10.0.1.11/255.255.255.255
-- IP:10.0.1.12/255.255.255.255
-- IP:10.0.1.13/255.255.255.255
-- IP:10.0.1.14/255.255.255.255
-- IP:10.0.1.15/255.255.255.255
-- IP:10.0.1.16/255.255.255.255
-- IP:10.0.1.17/255.255.255.255
-- IP:10.0.1.18/255.255.255.255
-- IP:10.0.1.19/255.255.255.255
-- IP:10.0.1.20/255.255.255.255
-- IP:10.0.1.21/255.255.255.255
-- IP:10.0.1.22/255.255.255.255
-- IP:10.0.1.23/255.255.255.255
-- IP:10.0.1.24/255.255.255.255
-- IP:10.0.1.25/255.255.255.255
-- IP:10.0.1.26/255.255.255.255
-- IP:10.0.1.27/255.255.255.255
-- IP:10.0.1.28/255.255.255.255
-- IP:10.0.1.29/255.255.255.255
-- IP:10.0.1.30/255.255.255.255
-- IP:10.0.1.31/255.255.255.255
-- IP:10.0.1.32/255.255.255.255
-- IP:10.0.1.33/255.255.255.255
-- IP:10.0.1.34/255.255.255.255
-- IP:10.0.1.35/255.255.255.255
-- IP:10.0.1.36/255.255.255.255
-- IP:10.0.1.37/255.255.255.255
-- IP:10.0.1.38/255.255.255.255
-- IP:10.0.1.39/255.255.255.255
-- IP:10.0.1.40/255.255.255.255
-- IP:10.0.1.41/255.255.255.255
-- IP:10.0.1.42/255.255.255.255
-- IP:10.0.1.43/255.255.255.255
-- IP:10.0.1.44/255.255.255.255
-- IP:10.0.1.45/255.255.255.255
-- IP:10.0.1.46/255.255.255.255
-- IP:10.0.1.47/255.255.255.255
-- IP:10.0.1.48/255.255.255.255
-- IP:10.0.1.49/255.255.255.255
-- IP:10.0.1.50/255.255.255.255
-- IP:10.0.1.51/255.255.255.255
-- IP:10.0.1.52/255.255.255.255
-- IP:10.0.1.53/255.255.255.255
-- IP:10.0.1.54/255.255.255.255
-- IP:10.0.1.55/255.255.255.255
-- IP:10.0.1.56/255.255.255.255
-- IP:10.0.1.57/255.255.255.255
-- IP:10.0.1.58/255.255.255.255
-- IP:10.0.1.59/255.255.255.255
-- IP:10.0.1.60/255.255.255.255
-- IP:10.0.1.61/255.255.255.255
-- IP:10.0.1.62/255.255.255.255
-- IP:10.0.1.63/255.255.255.255
-- IP:10.0.1.64/255.255.255.255
-- IP:10.0.1.65/255.255.255.255
-- IP:10.0.1.66/255.255.255.255
-- IP:10.0.1.67/255.255.255.255
-- IP:10.0.1.68/255.255.255.255
-- IP:10.0.1.69/255.255.255.255
-- IP:10.0.1.70/255.255.255.255
-- IP:10.0.1.71/255.255.255.255
-- IP:10.0.1.72/255.255.255.255
-- IP:10.0.1.73/255.255.255.255
-- IP:10.0.1.74/255.255.255.255
-- IP:10.0.1.75/255.255.255.255
-- IP:10.0.1.76/255.255.255.255
-- IP:10.0.1.77/255.255.255.255
-- IP:10.0.1.78/255.255.255.255
-- IP:10.0.1.79/255.255.255.255
-- IP:10.0.1.80/255.255.255.255
-- IP:10.0.1.81/255.255.255.255
-- IP:10.0.1.82/255.255.255.255
-- IP:10.0.1.83/255.255.255.255
-- IP:10.0.1.84/255.255.255.255
-- IP:10.0.1.85/255.255.255.255
-- IP:10.0.1.86/255.255.255.255
-- IP:10.0.1.87/255.255.255.255
-- IP:10.0.1.88/255.255.255.255
-- IP:10.0.1.89/255.255.255.255
-- IP:10.0.1.90/255.255.255.255
-- IP:10.0.1.91/255.255.255.255
-- IP:10.0.1.92/255.255.255.255
-- IP:10.0.1.93/255.255.255.255
-- IP:10.0.1.94/255.255.255.255
-- IP:10.0.1.95/255.255.255.255
-- IP:10.0.1.96/255.255.255.255
-- IP:10.0.1.97/255.255.255.255
-- IP:10.0.1.98/255.255.255.255
-- IP:10.0.1.99/255.255.255.255
-- IP:10.0.1.100/255.255.255.255
-- IP:10.0.1.101/255.255.255.255
-- IP:10.0.1.102/255.255.255.255
-- IP:10.0.1.103/255.255.255.255
-- IP:10.0.1.104/255.255.255.255
-- IP:10.0.1.105/255.255.255.255
-- IP:10.0.1.106/255.255.255.255
-- IP:10.0.1.107/255.255.255.255
-- IP:10.0.1.108/255.255.255.255
-- IP:10.0.1.109/255.255.255.255
-- IP:10.0.1.110/255.255.255.255
-- IP:10.0.1.111/255.255.255.255
-- IP:10.0.1.112/255.255.255.255
-- IP:10.0.1.113/255.255.255.255
-- IP:10.0.1.114/255.255.255.255
-- IP:10.0.1.115/255.255.255.255
-- IP:10.0.1.116/255.255.255.255
-- IP:10.0.1.117/255.255.255.255
-- IP:10.0.1.118/255.255.255.255
-- IP:10.0.1.119/255.255.255.255
-- IP:10.0.1.120/255.255.255.255
-- IP:10.0.1.121/255.255.255.255
-- IP:10.0.1.122/255.255.255.255
-- IP:10.0.1.123/255.255.255.255
-- IP:10.0.1.124/255.255.255.255
-- IP:10.0.1.125/255.255.255.255
-- IP:10.0.1.126/255.255.255.255
-- IP:10.0.1.127/255.255.255.255
-- IP:10.0.1.128/255.255.255.255
-- IP:10.0.1.129/255.255.255.255
-- IP:10.0.1.130/255.255.255.255
-- IP:10.0.1.131/255.255.255.255
-- IP:10.0.1.132/255.255.255.255
-- IP:10.0.1.133/255.255.255.255
-- IP:10.0.1.134/255.255.255.255
-- IP:10.0.1.135/255.255.255.255
-- IP:10.0.1.136/255.255.255.255
-- IP:10.0.1.137/255.255.255.255
-- IP:10.0.1.138/255.255.255.255
-- IP:10.0.1.139/255.255.255.255
-- IP:10.0.1.140/255.255.255.255
-- IP:10.0.1.141/255.255.255.255
-- IP:10.0.1.142/255.255.255.255
-- IP:10.0.1.143/255.255.255.255
-- IP:10.0.1.144/255.255.255.255
-- IP:10.0.1.145/255.255.255.255
-- IP:10.0.1.146/255.255.255.255
-- IP:10.0.1.147/255.255.255.255
-- IP:10.0.1.148/255.255.255.255
-- IP:10.0.1.149/255.255.255.255
-- IP:10.0.1.150/255.255.255.255
-- IP:10.0.1.151/255.255.255.255
-- IP:10.0.1.152/255.255.255.255
-- IP:10.0.1.153/255.255.255.255
-- IP:10.0.1.154/255.255.255.255
-- IP:10.0.1.155/255.255.255.255
-- IP:10.0.1.156/255.255.255.255
-- IP:10.0.1.157/255.255.255.255
-- IP:10.0.1.158/255.255.255.255
-- IP:10.0.1.159/255.255.255.255
-- IP:10.0.1.160/255.255.255.255
-- IP:10.0.1.161/255.255.255.255
-- IP:10.0.1.162/255.255.255.255
-- DirName:CN = t0
-- DirName:CN = t1
-- DirName:CN = t2
-- DirName:CN = t3
-- DirName:CN = t4
-- DirName:CN = t5
-- DirName:CN = t6
-- DirName:CN = t7
-- DirName:CN = t8
-- DirName:CN = t9
-- DirName:CN = t10
-- DirName:CN = t11
-- DirName:CN = t12
-- DirName:CN = t13
-- DirName:CN = t14
-- DirName:CN = t15
-- DirName:CN = t16
-- DirName:CN = t17
-- DirName:CN = t18
-- DirName:CN = t19
-- DirName:CN = t20
-- DirName:CN = t21
-- DirName:CN = t22
-- DirName:CN = t23
-- DirName:CN = t24
-- DirName:CN = t25
-- DirName:CN = t26
-- DirName:CN = t27
-- DirName:CN = t28
-- DirName:CN = t29
-- DirName:CN = t30
-- DirName:CN = t31
-- DirName:CN = t32
-- DirName:CN = t33
-- DirName:CN = t34
-- DirName:CN = t35
-- DirName:CN = t36
-- DirName:CN = t37
-- DirName:CN = t38
-- DirName:CN = t39
-- DirName:CN = t40
-- DirName:CN = t41
-- DirName:CN = t42
-- DirName:CN = t43
-- DirName:CN = t44
-- DirName:CN = t45
-- DirName:CN = t46
-- DirName:CN = t47
-- DirName:CN = t48
-- DirName:CN = t49
-- DirName:CN = t50
-- DirName:CN = t51
-- DirName:CN = t52
-- DirName:CN = t53
-- DirName:CN = t54
-- DirName:CN = t55
-- DirName:CN = t56
-- DirName:CN = t57
-- DirName:CN = t58
-- DirName:CN = t59
-- DirName:CN = t60
-- DirName:CN = t61
-- DirName:CN = t62
-- DirName:CN = t63
-- DirName:CN = t64
-- DirName:CN = t65
-- DirName:CN = t66
-- DirName:CN = t67
-- DirName:CN = t68
-- DirName:CN = t69
-- DirName:CN = t70
-- DirName:CN = t71
-- DirName:CN = t72
-- DirName:CN = t73
-- DirName:CN = t74
-- DirName:CN = t75
-- DirName:CN = t76
-- DirName:CN = t77
-- DirName:CN = t78
-- DirName:CN = t79
-- DirName:CN = t80
-- DirName:CN = t81
-- DirName:CN = t82
-- DirName:CN = t83
-- DirName:CN = t84
-- DirName:CN = t85
-- DirName:CN = t86
-- DirName:CN = t87
-- DirName:CN = t88
-- DirName:CN = t89
-- DirName:CN = t90
-- DirName:CN = t91
-- DirName:CN = t92
-- DirName:CN = t93
-- DirName:CN = t94
-- DirName:CN = t95
-- DirName:CN = t96
-- DirName:CN = t97
-- DirName:CN = t98
-- DirName:CN = t99
-- DirName:CN = t100
-- DirName:CN = t101
-- DirName:CN = t102
-- DirName:CN = t103
-- DirName:CN = t104
-- DirName:CN = t105
-- DirName:CN = t106
-- DirName:CN = t107
-- DirName:CN = t108
-- DirName:CN = t109
-- DirName:CN = t110
-- DirName:CN = t111
-- DirName:CN = t112
-- DirName:CN = t113
-- DirName:CN = t114
-- DirName:CN = t115
-- DirName:CN = t116
-- DirName:CN = t117
-- DirName:CN = t118
-- DirName:CN = t119
-- DirName:CN = t120
-- DirName:CN = t121
-- DirName:CN = t122
-- DirName:CN = t123
-- DirName:CN = t124
-- DirName:CN = t125
-- DirName:CN = t126
-- DirName:CN = t127
-- DirName:CN = t128
-- DirName:CN = t129
-- DirName:CN = t130
-- DirName:CN = t131
-- DirName:CN = t132
-- DirName:CN = t133
-- DirName:CN = t134
-- DirName:CN = t135
-- DirName:CN = t136
-- DirName:CN = t137
-- DirName:CN = t138
-- DirName:CN = t139
-- DirName:CN = t140
-- DirName:CN = t141
-- DirName:CN = t142
-- DirName:CN = t143
-- DirName:CN = t144
-- DirName:CN = t145
-- DirName:CN = t146
-- DirName:CN = t147
-- DirName:CN = t148
-- DirName:CN = t149
-- DirName:CN = t150
-- DirName:CN = t151
-- DirName:CN = t152
-- DirName:CN = t153
-- DirName:CN = t154
-- DirName:CN = t155
-- DirName:CN = t156
-- DirName:CN = t157
-- DirName:CN = t158
-- DirName:CN = t159
-- DirName:CN = t160
-- DirName:CN = t161
-- DirName:CN = t162
-- DirName:CN = t163
-- DirName:CN = t164
-- DirName:CN = t165
-- DirName:CN = t166
-- DirName:CN = t167
-- DirName:CN = t168
-- DirName:CN = t169
-- DirName:CN = t170
-- DirName:CN = t171
-- DirName:CN = t172
-- DirName:CN = t173
-- DirName:CN = t174
-- DirName:CN = t175
-- DirName:CN = t176
-- DirName:CN = t177
-- DirName:CN = t178
-- DirName:CN = t179
-- DirName:CN = t180
-- DirName:CN = t181
-- DirName:CN = t182
-- DirName:CN = t183
-- DirName:CN = t184
-- DirName:CN = t185
-- DirName:CN = t186
-- DirName:CN = t187
-- DirName:CN = t188
-- DirName:CN = t189
-- DirName:CN = t190
-- DirName:CN = t191
-- DirName:CN = t192
-- DirName:CN = t193
-- DirName:CN = t194
-- DirName:CN = t195
-- DirName:CN = t196
-- DirName:CN = t197
-- DirName:CN = t198
-- DirName:CN = t199
-- DirName:CN = t200
-- DirName:CN = t201
-- DirName:CN = t202
-- DirName:CN = t203
-- DirName:CN = t204
-- DirName:CN = t205
-- DirName:CN = t206
-- DirName:CN = t207
-- DirName:CN = t208
-- DirName:CN = t209
-- DirName:CN = t210
-- DirName:CN = t211
-- DirName:CN = t212
-- DirName:CN = t213
-- DirName:CN = t214
-- DirName:CN = t215
-- DirName:CN = t216
-- DirName:CN = t217
-- DirName:CN = t218
-- DirName:CN = t219
-- DirName:CN = t220
-- DirName:CN = t221
-- DirName:CN = t222
-- DirName:CN = t223
-- DirName:CN = t224
-- DirName:CN = t225
-- DirName:CN = t226
-- DirName:CN = t227
-- DirName:CN = t228
-- DirName:CN = t229
-- DirName:CN = t230
-- DirName:CN = t231
-- DirName:CN = t232
-- DirName:CN = t233
-- DirName:CN = t234
-- DirName:CN = t235
-- DirName:CN = t236
-- DirName:CN = t237
-- DirName:CN = t238
-- DirName:CN = t239
-- DirName:CN = t240
-- DirName:CN = t241
-- DirName:CN = t242
-- DirName:CN = t243
-- DirName:CN = t244
-- DirName:CN = t245
-- DirName:CN = t246
-- DirName:CN = t247
-- DirName:CN = t248
-- DirName:CN = t249
-- DirName:CN = t250
-- DirName:CN = t251
-- DirName:CN = t252
-- DirName:CN = t253
-- DirName:CN = t254
-- DirName:CN = t255
-- DirName:CN = t256
-- DirName:CN = t257
-- DirName:CN = t258
-- DirName:CN = t259
-- DirName:CN = t260
-- DirName:CN = t261
-- DirName:CN = t262
-- DirName:CN = t263
-- DirName:CN = t264
-- DirName:CN = t265
-- DirName:CN = t266
-- DirName:CN = t267
-- DirName:CN = t268
-- DirName:CN = t269
-- DirName:CN = t270
-- DirName:CN = t271
-- DirName:CN = t272
-- DirName:CN = t273
-- DirName:CN = t274
-- DirName:CN = t275
-- DirName:CN = t276
-- DirName:CN = t277
-- DirName:CN = t278
-- DirName:CN = t279
-- DirName:CN = t280
-- DirName:CN = t281
-- DirName:CN = t282
-- DirName:CN = t283
-- DirName:CN = t284
-- DirName:CN = t285
-- DirName:CN = t286
-- DirName:CN = t287
-- DirName:CN = t288
-- DirName:CN = t289
-- DirName:CN = t290
-- DirName:CN = t291
-- DirName:CN = t292
-- DirName:CN = t293
-- DirName:CN = t294
-- DirName:CN = t295
-- DirName:CN = t296
-- DirName:CN = t297
-- DirName:CN = t298
-- DirName:CN = t299
-- DirName:CN = t300
-- DirName:CN = t301
-- DirName:CN = t302
-- DirName:CN = t303
-- DirName:CN = t304
-- DirName:CN = t305
-- DirName:CN = t306
-- DirName:CN = t307
-- DirName:CN = t308
-- DirName:CN = t309
-- DirName:CN = t310
-- DirName:CN = t311
-- DirName:CN = t312
-- DirName:CN = t313
-- DirName:CN = t314
-- DirName:CN = t315
-- DirName:CN = t316
-- DirName:CN = t317
-- DirName:CN = t318
-- DirName:CN = t319
-- DirName:CN = t320
-- DirName:CN = t321
-- DirName:CN = t322
-- DirName:CN = t323
-- DirName:CN = t324
-- DirName:CN = t325
-- DirName:CN = t326
-- DirName:CN = t327
-- DirName:CN = t328
-- DirName:CN = t329
-- DirName:CN = t330
-- DirName:CN = t331
-- DirName:CN = t332
-- DirName:CN = t333
-- DirName:CN = t334
-- DirName:CN = t335
-- DirName:CN = t336
-- DirName:CN = t337
-- DirName:CN = t338
-- DirName:CN = t339
-- DirName:CN = t340
-- DirName:CN = t341
-- DirName:CN = t342
-- DirName:CN = t343
-- DirName:CN = t344
-- DirName:CN = t345
-- DirName:CN = t346
-- DirName:CN = t347
-- DirName:CN = t348
-- DirName:CN = t349
-- DirName:CN = t350
-- DirName:CN = t351
-- DirName:CN = t352
-- DirName:CN = t353
-- DirName:CN = t354
-- DirName:CN = t355
-- DirName:CN = t356
-- DirName:CN = t357
-- DirName:CN = t358
-- DirName:CN = t359
-- DirName:CN = t360
-- DirName:CN = t361
-- DirName:CN = t362
-- DirName:CN = t363
-- DirName:CN = t364
-- DirName:CN = t365
-- DirName:CN = t366
-- DirName:CN = t367
-- DirName:CN = t368
-- DirName:CN = t369
-- DirName:CN = t370
-- DirName:CN = t371
-- DirName:CN = t372
-- DirName:CN = t373
-- DirName:CN = t374
-- DirName:CN = t375
-- DirName:CN = t376
-- DirName:CN = t377
-- DirName:CN = t378
-- DirName:CN = t379
-- DirName:CN = t380
-- DirName:CN = t381
-- DirName:CN = t382
-- DirName:CN = t383
-- DirName:CN = t384
-- DirName:CN = t385
-- DirName:CN = t386
-- DirName:CN = t387
-- DirName:CN = t388
-- DirName:CN = t389
-- DirName:CN = t390
-- DirName:CN = t391
-- DirName:CN = t392
-- DirName:CN = t393
-- DirName:CN = t394
-- DirName:CN = t395
-- DirName:CN = t396
-- DirName:CN = t397
-- DirName:CN = t398
-- DirName:CN = t399
-- DirName:CN = t400
-- DirName:CN = t401
-- DirName:CN = t402
-- DirName:CN = t403
-- DirName:CN = t404
-- DirName:CN = t405
-- DirName:CN = t406
-- DirName:CN = t407
-- DirName:CN = t408
-- DirName:CN = t409
-- DirName:CN = t410
-- DirName:CN = t411
-- DirName:CN = t412
-- DirName:CN = t413
-- DirName:CN = t414
-- DirName:CN = t415
-- DirName:CN = t416
-- DirName:CN = t417
-- DirName:CN = t418
-+ DirName: CN = t0
-+ DirName: CN = t1
-+ DirName: CN = t2
-+ DirName: CN = t3
-+ DirName: CN = t4
-+ DirName: CN = t5
-+ DirName: CN = t6
-+ DirName: CN = t7
-+ DirName: CN = t8
-+ DirName: CN = t9
-+ DirName: CN = t10
-+ DirName: CN = t11
-+ DirName: CN = t12
-+ DirName: CN = t13
-+ DirName: CN = t14
-+ DirName: CN = t15
-+ DirName: CN = t16
-+ DirName: CN = t17
-+ DirName: CN = t18
-+ DirName: CN = t19
-+ DirName: CN = t20
-+ DirName: CN = t21
-+ DirName: CN = t22
-+ DirName: CN = t23
-+ DirName: CN = t24
-+ DirName: CN = t25
-+ DirName: CN = t26
-+ DirName: CN = t27
-+ DirName: CN = t28
-+ DirName: CN = t29
-+ DirName: CN = t30
-+ DirName: CN = t31
-+ DirName: CN = t32
-+ DirName: CN = t33
-+ DirName: CN = t34
-+ DirName: CN = t35
-+ DirName: CN = t36
-+ DirName: CN = t37
-+ DirName: CN = t38
-+ DirName: CN = t39
-+ DirName: CN = t40
-+ DirName: CN = t41
-+ DirName: CN = t42
-+ DirName: CN = t43
-+ DirName: CN = t44
-+ DirName: CN = t45
-+ DirName: CN = t46
-+ DirName: CN = t47
-+ DirName: CN = t48
-+ DirName: CN = t49
-+ DirName: CN = t50
-+ DirName: CN = t51
-+ DirName: CN = t52
-+ DirName: CN = t53
-+ DirName: CN = t54
-+ DirName: CN = t55
-+ DirName: CN = t56
-+ DirName: CN = t57
-+ DirName: CN = t58
-+ DirName: CN = t59
-+ DirName: CN = t60
-+ DirName: CN = t61
-+ DirName: CN = t62
-+ DirName: CN = t63
-+ DirName: CN = t64
-+ DirName: CN = t65
-+ DirName: CN = t66
-+ DirName: CN = t67
-+ DirName: CN = t68
-+ DirName: CN = t69
-+ DirName: CN = t70
-+ DirName: CN = t71
-+ DirName: CN = t72
-+ DirName: CN = t73
-+ DirName: CN = t74
-+ DirName: CN = t75
-+ DirName: CN = t76
-+ DirName: CN = t77
-+ DirName: CN = t78
-+ DirName: CN = t79
-+ DirName: CN = t80
-+ DirName: CN = t81
-+ DirName: CN = t82
-+ DirName: CN = t83
-+ DirName: CN = t84
-+ DirName: CN = t85
-+ DirName: CN = t86
-+ DirName: CN = t87
-+ DirName: CN = t88
-+ DirName: CN = t89
-+ DirName: CN = t90
-+ DirName: CN = t91
-+ DirName: CN = t92
-+ DirName: CN = t93
-+ DirName: CN = t94
-+ DirName: CN = t95
-+ DirName: CN = t96
-+ DirName: CN = t97
-+ DirName: CN = t98
-+ DirName: CN = t99
-+ DirName: CN = t100
-+ DirName: CN = t101
-+ DirName: CN = t102
-+ DirName: CN = t103
-+ DirName: CN = t104
-+ DirName: CN = t105
-+ DirName: CN = t106
-+ DirName: CN = t107
-+ DirName: CN = t108
-+ DirName: CN = t109
-+ DirName: CN = t110
-+ DirName: CN = t111
-+ DirName: CN = t112
-+ DirName: CN = t113
-+ DirName: CN = t114
-+ DirName: CN = t115
-+ DirName: CN = t116
-+ DirName: CN = t117
-+ DirName: CN = t118
-+ DirName: CN = t119
-+ DirName: CN = t120
-+ DirName: CN = t121
-+ DirName: CN = t122
-+ DirName: CN = t123
-+ DirName: CN = t124
-+ DirName: CN = t125
-+ DirName: CN = t126
-+ DirName: CN = t127
-+ DirName: CN = t128
-+ DirName: CN = t129
-+ DirName: CN = t130
-+ DirName: CN = t131
-+ DirName: CN = t132
-+ DirName: CN = t133
-+ DirName: CN = t134
-+ DirName: CN = t135
-+ DirName: CN = t136
-+ DirName: CN = t137
-+ DirName: CN = t138
-+ DirName: CN = t139
-+ DirName: CN = t140
-+ DirName: CN = t141
-+ DirName: CN = t142
-+ DirName: CN = t143
-+ DirName: CN = t144
-+ DirName: CN = t145
-+ DirName: CN = t146
-+ DirName: CN = t147
-+ DirName: CN = t148
-+ DirName: CN = t149
-+ DirName: CN = t150
-+ DirName: CN = t151
-+ DirName: CN = t152
-+ DirName: CN = t153
-+ DirName: CN = t154
-+ DirName: CN = t155
-+ DirName: CN = t156
-+ DirName: CN = t157
-+ DirName: CN = t158
-+ DirName: CN = t159
-+ DirName: CN = t160
-+ DirName: CN = t161
-+ DirName: CN = t162
-+ DirName: CN = t163
-+ DirName: CN = t164
-+ DirName: CN = t165
-+ DirName: CN = t166
-+ DirName: CN = t167
-+ DirName: CN = t168
-+ DirName: CN = t169
-+ DirName: CN = t170
-+ DirName: CN = t171
- Excluded:
- DNS:x0.test
- DNS:x1.test
-@@ -1887,255 +1088,6 @@ Certificate:
- DNS:x167.test
- DNS:x168.test
- DNS:x169.test
-- DNS:x170.test
-- DNS:x171.test
-- DNS:x172.test
-- DNS:x173.test
-- DNS:x174.test
-- DNS:x175.test
-- DNS:x176.test
-- DNS:x177.test
-- DNS:x178.test
-- DNS:x179.test
-- DNS:x180.test
-- DNS:x181.test
-- DNS:x182.test
-- DNS:x183.test
-- DNS:x184.test
-- DNS:x185.test
-- DNS:x186.test
-- DNS:x187.test
-- DNS:x188.test
-- DNS:x189.test
-- DNS:x190.test
-- DNS:x191.test
-- DNS:x192.test
-- DNS:x193.test
-- DNS:x194.test
-- DNS:x195.test
-- DNS:x196.test
-- DNS:x197.test
-- DNS:x198.test
-- DNS:x199.test
-- DNS:x200.test
-- DNS:x201.test
-- DNS:x202.test
-- DNS:x203.test
-- DNS:x204.test
-- DNS:x205.test
-- DNS:x206.test
-- DNS:x207.test
-- DNS:x208.test
-- DNS:x209.test
-- DNS:x210.test
-- DNS:x211.test
-- DNS:x212.test
-- DNS:x213.test
-- DNS:x214.test
-- DNS:x215.test
-- DNS:x216.test
-- DNS:x217.test
-- DNS:x218.test
-- DNS:x219.test
-- DNS:x220.test
-- DNS:x221.test
-- DNS:x222.test
-- DNS:x223.test
-- DNS:x224.test
-- DNS:x225.test
-- DNS:x226.test
-- DNS:x227.test
-- DNS:x228.test
-- DNS:x229.test
-- DNS:x230.test
-- DNS:x231.test
-- DNS:x232.test
-- DNS:x233.test
-- DNS:x234.test
-- DNS:x235.test
-- DNS:x236.test
-- DNS:x237.test
-- DNS:x238.test
-- DNS:x239.test
-- DNS:x240.test
-- DNS:x241.test
-- DNS:x242.test
-- DNS:x243.test
-- DNS:x244.test
-- DNS:x245.test
-- DNS:x246.test
-- DNS:x247.test
-- DNS:x248.test
-- DNS:x249.test
-- DNS:x250.test
-- DNS:x251.test
-- DNS:x252.test
-- DNS:x253.test
-- DNS:x254.test
-- DNS:x255.test
-- DNS:x256.test
-- DNS:x257.test
-- DNS:x258.test
-- DNS:x259.test
-- DNS:x260.test
-- DNS:x261.test
-- DNS:x262.test
-- DNS:x263.test
-- DNS:x264.test
-- DNS:x265.test
-- DNS:x266.test
-- DNS:x267.test
-- DNS:x268.test
-- DNS:x269.test
-- DNS:x270.test
-- DNS:x271.test
-- DNS:x272.test
-- DNS:x273.test
-- DNS:x274.test
-- DNS:x275.test
-- DNS:x276.test
-- DNS:x277.test
-- DNS:x278.test
-- DNS:x279.test
-- DNS:x280.test
-- DNS:x281.test
-- DNS:x282.test
-- DNS:x283.test
-- DNS:x284.test
-- DNS:x285.test
-- DNS:x286.test
-- DNS:x287.test
-- DNS:x288.test
-- DNS:x289.test
-- DNS:x290.test
-- DNS:x291.test
-- DNS:x292.test
-- DNS:x293.test
-- DNS:x294.test
-- DNS:x295.test
-- DNS:x296.test
-- DNS:x297.test
-- DNS:x298.test
-- DNS:x299.test
-- DNS:x300.test
-- DNS:x301.test
-- DNS:x302.test
-- DNS:x303.test
-- DNS:x304.test
-- DNS:x305.test
-- DNS:x306.test
-- DNS:x307.test
-- DNS:x308.test
-- DNS:x309.test
-- DNS:x310.test
-- DNS:x311.test
-- DNS:x312.test
-- DNS:x313.test
-- DNS:x314.test
-- DNS:x315.test
-- DNS:x316.test
-- DNS:x317.test
-- DNS:x318.test
-- DNS:x319.test
-- DNS:x320.test
-- DNS:x321.test
-- DNS:x322.test
-- DNS:x323.test
-- DNS:x324.test
-- DNS:x325.test
-- DNS:x326.test
-- DNS:x327.test
-- DNS:x328.test
-- DNS:x329.test
-- DNS:x330.test
-- DNS:x331.test
-- DNS:x332.test
-- DNS:x333.test
-- DNS:x334.test
-- DNS:x335.test
-- DNS:x336.test
-- DNS:x337.test
-- DNS:x338.test
-- DNS:x339.test
-- DNS:x340.test
-- DNS:x341.test
-- DNS:x342.test
-- DNS:x343.test
-- DNS:x344.test
-- DNS:x345.test
-- DNS:x346.test
-- DNS:x347.test
-- DNS:x348.test
-- DNS:x349.test
-- DNS:x350.test
-- DNS:x351.test
-- DNS:x352.test
-- DNS:x353.test
-- DNS:x354.test
-- DNS:x355.test
-- DNS:x356.test
-- DNS:x357.test
-- DNS:x358.test
-- DNS:x359.test
-- DNS:x360.test
-- DNS:x361.test
-- DNS:x362.test
-- DNS:x363.test
-- DNS:x364.test
-- DNS:x365.test
-- DNS:x366.test
-- DNS:x367.test
-- DNS:x368.test
-- DNS:x369.test
-- DNS:x370.test
-- DNS:x371.test
-- DNS:x372.test
-- DNS:x373.test
-- DNS:x374.test
-- DNS:x375.test
-- DNS:x376.test
-- DNS:x377.test
-- DNS:x378.test
-- DNS:x379.test
-- DNS:x380.test
-- DNS:x381.test
-- DNS:x382.test
-- DNS:x383.test
-- DNS:x384.test
-- DNS:x385.test
-- DNS:x386.test
-- DNS:x387.test
-- DNS:x388.test
-- DNS:x389.test
-- DNS:x390.test
-- DNS:x391.test
-- DNS:x392.test
-- DNS:x393.test
-- DNS:x394.test
-- DNS:x395.test
-- DNS:x396.test
-- DNS:x397.test
-- DNS:x398.test
-- DNS:x399.test
-- DNS:x400.test
-- DNS:x401.test
-- DNS:x402.test
-- DNS:x403.test
-- DNS:x404.test
-- DNS:x405.test
-- DNS:x406.test
-- DNS:x407.test
-- DNS:x408.test
-- DNS:x409.test
-- DNS:x410.test
-- DNS:x411.test
-- DNS:x412.test
-- DNS:x413.test
-- DNS:x414.test
-- DNS:x415.test
-- DNS:x416.test
-- DNS:x417.test
-- DNS:x418.test
- IP:11.0.0.0/255.255.255.255
- IP:11.0.0.1/255.255.255.255
- IP:11.0.0.2/255.255.255.255
-@@ -2306,693 +1258,195 @@ Certificate:
- IP:11.0.0.167/255.255.255.255
- IP:11.0.0.168/255.255.255.255
- IP:11.0.0.169/255.255.255.255
-- IP:11.0.0.170/255.255.255.255
-- IP:11.0.0.171/255.255.255.255
-- IP:11.0.0.172/255.255.255.255
-- IP:11.0.0.173/255.255.255.255
-- IP:11.0.0.174/255.255.255.255
-- IP:11.0.0.175/255.255.255.255
-- IP:11.0.0.176/255.255.255.255
-- IP:11.0.0.177/255.255.255.255
-- IP:11.0.0.178/255.255.255.255
-- IP:11.0.0.179/255.255.255.255
-- IP:11.0.0.180/255.255.255.255
-- IP:11.0.0.181/255.255.255.255
-- IP:11.0.0.182/255.255.255.255
-- IP:11.0.0.183/255.255.255.255
-- IP:11.0.0.184/255.255.255.255
-- IP:11.0.0.185/255.255.255.255
-- IP:11.0.0.186/255.255.255.255
-- IP:11.0.0.187/255.255.255.255
-- IP:11.0.0.188/255.255.255.255
-- IP:11.0.0.189/255.255.255.255
-- IP:11.0.0.190/255.255.255.255
-- IP:11.0.0.191/255.255.255.255
-- IP:11.0.0.192/255.255.255.255
-- IP:11.0.0.193/255.255.255.255
-- IP:11.0.0.194/255.255.255.255
-- IP:11.0.0.195/255.255.255.255
-- IP:11.0.0.196/255.255.255.255
-- IP:11.0.0.197/255.255.255.255
-- IP:11.0.0.198/255.255.255.255
-- IP:11.0.0.199/255.255.255.255
-- IP:11.0.0.200/255.255.255.255
-- IP:11.0.0.201/255.255.255.255
-- IP:11.0.0.202/255.255.255.255
-- IP:11.0.0.203/255.255.255.255
-- IP:11.0.0.204/255.255.255.255
-- IP:11.0.0.205/255.255.255.255
-- IP:11.0.0.206/255.255.255.255
-- IP:11.0.0.207/255.255.255.255
-- IP:11.0.0.208/255.255.255.255
-- IP:11.0.0.209/255.255.255.255
-- IP:11.0.0.210/255.255.255.255
-- IP:11.0.0.211/255.255.255.255
-- IP:11.0.0.212/255.255.255.255
-- IP:11.0.0.213/255.255.255.255
-- IP:11.0.0.214/255.255.255.255
-- IP:11.0.0.215/255.255.255.255
-- IP:11.0.0.216/255.255.255.255
-- IP:11.0.0.217/255.255.255.255
-- IP:11.0.0.218/255.255.255.255
-- IP:11.0.0.219/255.255.255.255
-- IP:11.0.0.220/255.255.255.255
-- IP:11.0.0.221/255.255.255.255
-- IP:11.0.0.222/255.255.255.255
-- IP:11.0.0.223/255.255.255.255
-- IP:11.0.0.224/255.255.255.255
-- IP:11.0.0.225/255.255.255.255
-- IP:11.0.0.226/255.255.255.255
-- IP:11.0.0.227/255.255.255.255
-- IP:11.0.0.228/255.255.255.255
-- IP:11.0.0.229/255.255.255.255
-- IP:11.0.0.230/255.255.255.255
-- IP:11.0.0.231/255.255.255.255
-- IP:11.0.0.232/255.255.255.255
-- IP:11.0.0.233/255.255.255.255
-- IP:11.0.0.234/255.255.255.255
-- IP:11.0.0.235/255.255.255.255
-- IP:11.0.0.236/255.255.255.255
-- IP:11.0.0.237/255.255.255.255
-- IP:11.0.0.238/255.255.255.255
-- IP:11.0.0.239/255.255.255.255
-- IP:11.0.0.240/255.255.255.255
-- IP:11.0.0.241/255.255.255.255
-- IP:11.0.0.242/255.255.255.255
-- IP:11.0.0.243/255.255.255.255
-- IP:11.0.0.244/255.255.255.255
-- IP:11.0.0.245/255.255.255.255
-- IP:11.0.0.246/255.255.255.255
-- IP:11.0.0.247/255.255.255.255
-- IP:11.0.0.248/255.255.255.255
-- IP:11.0.0.249/255.255.255.255
-- IP:11.0.0.250/255.255.255.255
-- IP:11.0.0.251/255.255.255.255
-- IP:11.0.0.252/255.255.255.255
-- IP:11.0.0.253/255.255.255.255
-- IP:11.0.0.254/255.255.255.255
-- IP:11.0.0.255/255.255.255.255
-- IP:11.0.1.0/255.255.255.255
-- IP:11.0.1.1/255.255.255.255
-- IP:11.0.1.2/255.255.255.255
-- IP:11.0.1.3/255.255.255.255
-- IP:11.0.1.4/255.255.255.255
-- IP:11.0.1.5/255.255.255.255
-- IP:11.0.1.6/255.255.255.255
-- IP:11.0.1.7/255.255.255.255
-- IP:11.0.1.8/255.255.255.255
-- IP:11.0.1.9/255.255.255.255
-- IP:11.0.1.10/255.255.255.255
-- IP:11.0.1.11/255.255.255.255
-- IP:11.0.1.12/255.255.255.255
-- IP:11.0.1.13/255.255.255.255
-- IP:11.0.1.14/255.255.255.255
-- IP:11.0.1.15/255.255.255.255
-- IP:11.0.1.16/255.255.255.255
-- IP:11.0.1.17/255.255.255.255
-- IP:11.0.1.18/255.255.255.255
-- IP:11.0.1.19/255.255.255.255
-- IP:11.0.1.20/255.255.255.255
-- IP:11.0.1.21/255.255.255.255
-- IP:11.0.1.22/255.255.255.255
-- IP:11.0.1.23/255.255.255.255
-- IP:11.0.1.24/255.255.255.255
-- IP:11.0.1.25/255.255.255.255
-- IP:11.0.1.26/255.255.255.255
-- IP:11.0.1.27/255.255.255.255
-- IP:11.0.1.28/255.255.255.255
-- IP:11.0.1.29/255.255.255.255
-- IP:11.0.1.30/255.255.255.255
-- IP:11.0.1.31/255.255.255.255
-- IP:11.0.1.32/255.255.255.255
-- IP:11.0.1.33/255.255.255.255
-- IP:11.0.1.34/255.255.255.255
-- IP:11.0.1.35/255.255.255.255
-- IP:11.0.1.36/255.255.255.255
-- IP:11.0.1.37/255.255.255.255
-- IP:11.0.1.38/255.255.255.255
-- IP:11.0.1.39/255.255.255.255
-- IP:11.0.1.40/255.255.255.255
-- IP:11.0.1.41/255.255.255.255
-- IP:11.0.1.42/255.255.255.255
-- IP:11.0.1.43/255.255.255.255
-- IP:11.0.1.44/255.255.255.255
-- IP:11.0.1.45/255.255.255.255
-- IP:11.0.1.46/255.255.255.255
-- IP:11.0.1.47/255.255.255.255
-- IP:11.0.1.48/255.255.255.255
-- IP:11.0.1.49/255.255.255.255
-- IP:11.0.1.50/255.255.255.255
-- IP:11.0.1.51/255.255.255.255
-- IP:11.0.1.52/255.255.255.255
-- IP:11.0.1.53/255.255.255.255
-- IP:11.0.1.54/255.255.255.255
-- IP:11.0.1.55/255.255.255.255
-- IP:11.0.1.56/255.255.255.255
-- IP:11.0.1.57/255.255.255.255
-- IP:11.0.1.58/255.255.255.255
-- IP:11.0.1.59/255.255.255.255
-- IP:11.0.1.60/255.255.255.255
-- IP:11.0.1.61/255.255.255.255
-- IP:11.0.1.62/255.255.255.255
-- IP:11.0.1.63/255.255.255.255
-- IP:11.0.1.64/255.255.255.255
-- IP:11.0.1.65/255.255.255.255
-- IP:11.0.1.66/255.255.255.255
-- IP:11.0.1.67/255.255.255.255
-- IP:11.0.1.68/255.255.255.255
-- IP:11.0.1.69/255.255.255.255
-- IP:11.0.1.70/255.255.255.255
-- IP:11.0.1.71/255.255.255.255
-- IP:11.0.1.72/255.255.255.255
-- IP:11.0.1.73/255.255.255.255
-- IP:11.0.1.74/255.255.255.255
-- IP:11.0.1.75/255.255.255.255
-- IP:11.0.1.76/255.255.255.255
-- IP:11.0.1.77/255.255.255.255
-- IP:11.0.1.78/255.255.255.255
-- IP:11.0.1.79/255.255.255.255
-- IP:11.0.1.80/255.255.255.255
-- IP:11.0.1.81/255.255.255.255
-- IP:11.0.1.82/255.255.255.255
-- IP:11.0.1.83/255.255.255.255
-- IP:11.0.1.84/255.255.255.255
-- IP:11.0.1.85/255.255.255.255
-- IP:11.0.1.86/255.255.255.255
-- IP:11.0.1.87/255.255.255.255
-- IP:11.0.1.88/255.255.255.255
-- IP:11.0.1.89/255.255.255.255
-- IP:11.0.1.90/255.255.255.255
-- IP:11.0.1.91/255.255.255.255
-- IP:11.0.1.92/255.255.255.255
-- IP:11.0.1.93/255.255.255.255
-- IP:11.0.1.94/255.255.255.255
-- IP:11.0.1.95/255.255.255.255
-- IP:11.0.1.96/255.255.255.255
-- IP:11.0.1.97/255.255.255.255
-- IP:11.0.1.98/255.255.255.255
-- IP:11.0.1.99/255.255.255.255
-- IP:11.0.1.100/255.255.255.255
-- IP:11.0.1.101/255.255.255.255
-- IP:11.0.1.102/255.255.255.255
-- IP:11.0.1.103/255.255.255.255
-- IP:11.0.1.104/255.255.255.255
-- IP:11.0.1.105/255.255.255.255
-- IP:11.0.1.106/255.255.255.255
-- IP:11.0.1.107/255.255.255.255
-- IP:11.0.1.108/255.255.255.255
-- IP:11.0.1.109/255.255.255.255
-- IP:11.0.1.110/255.255.255.255
-- IP:11.0.1.111/255.255.255.255
-- IP:11.0.1.112/255.255.255.255
-- IP:11.0.1.113/255.255.255.255
-- IP:11.0.1.114/255.255.255.255
-- IP:11.0.1.115/255.255.255.255
-- IP:11.0.1.116/255.255.255.255
-- IP:11.0.1.117/255.255.255.255
-- IP:11.0.1.118/255.255.255.255
-- IP:11.0.1.119/255.255.255.255
-- IP:11.0.1.120/255.255.255.255
-- IP:11.0.1.121/255.255.255.255
-- IP:11.0.1.122/255.255.255.255
-- IP:11.0.1.123/255.255.255.255
-- IP:11.0.1.124/255.255.255.255
-- IP:11.0.1.125/255.255.255.255
-- IP:11.0.1.126/255.255.255.255
-- IP:11.0.1.127/255.255.255.255
-- IP:11.0.1.128/255.255.255.255
-- IP:11.0.1.129/255.255.255.255
-- IP:11.0.1.130/255.255.255.255
-- IP:11.0.1.131/255.255.255.255
-- IP:11.0.1.132/255.255.255.255
-- IP:11.0.1.133/255.255.255.255
-- IP:11.0.1.134/255.255.255.255
-- IP:11.0.1.135/255.255.255.255
-- IP:11.0.1.136/255.255.255.255
-- IP:11.0.1.137/255.255.255.255
-- IP:11.0.1.138/255.255.255.255
-- IP:11.0.1.139/255.255.255.255
-- IP:11.0.1.140/255.255.255.255
-- IP:11.0.1.141/255.255.255.255
-- IP:11.0.1.142/255.255.255.255
-- IP:11.0.1.143/255.255.255.255
-- IP:11.0.1.144/255.255.255.255
-- IP:11.0.1.145/255.255.255.255
-- IP:11.0.1.146/255.255.255.255
-- IP:11.0.1.147/255.255.255.255
-- IP:11.0.1.148/255.255.255.255
-- IP:11.0.1.149/255.255.255.255
-- IP:11.0.1.150/255.255.255.255
-- IP:11.0.1.151/255.255.255.255
-- IP:11.0.1.152/255.255.255.255
-- IP:11.0.1.153/255.255.255.255
-- IP:11.0.1.154/255.255.255.255
-- IP:11.0.1.155/255.255.255.255
-- IP:11.0.1.156/255.255.255.255
-- IP:11.0.1.157/255.255.255.255
-- IP:11.0.1.158/255.255.255.255
-- IP:11.0.1.159/255.255.255.255
-- IP:11.0.1.160/255.255.255.255
-- IP:11.0.1.161/255.255.255.255
-- IP:11.0.1.162/255.255.255.255
-- DirName:CN = x0
-- DirName:CN = x1
-- DirName:CN = x2
-- DirName:CN = x3
-- DirName:CN = x4
-- DirName:CN = x5
-- DirName:CN = x6
-- DirName:CN = x7
-- DirName:CN = x8
-- DirName:CN = x9
-- DirName:CN = x10
-- DirName:CN = x11
-- DirName:CN = x12
-- DirName:CN = x13
-- DirName:CN = x14
-- DirName:CN = x15
-- DirName:CN = x16
-- DirName:CN = x17
-- DirName:CN = x18
-- DirName:CN = x19
-- DirName:CN = x20
-- DirName:CN = x21
-- DirName:CN = x22
-- DirName:CN = x23
-- DirName:CN = x24
-- DirName:CN = x25
-- DirName:CN = x26
-- DirName:CN = x27
-- DirName:CN = x28
-- DirName:CN = x29
-- DirName:CN = x30
-- DirName:CN = x31
-- DirName:CN = x32
-- DirName:CN = x33
-- DirName:CN = x34
-- DirName:CN = x35
-- DirName:CN = x36
-- DirName:CN = x37
-- DirName:CN = x38
-- DirName:CN = x39
-- DirName:CN = x40
-- DirName:CN = x41
-- DirName:CN = x42
-- DirName:CN = x43
-- DirName:CN = x44
-- DirName:CN = x45
-- DirName:CN = x46
-- DirName:CN = x47
-- DirName:CN = x48
-- DirName:CN = x49
-- DirName:CN = x50
-- DirName:CN = x51
-- DirName:CN = x52
-- DirName:CN = x53
-- DirName:CN = x54
-- DirName:CN = x55
-- DirName:CN = x56
-- DirName:CN = x57
-- DirName:CN = x58
-- DirName:CN = x59
-- DirName:CN = x60
-- DirName:CN = x61
-- DirName:CN = x62
-- DirName:CN = x63
-- DirName:CN = x64
-- DirName:CN = x65
-- DirName:CN = x66
-- DirName:CN = x67
-- DirName:CN = x68
-- DirName:CN = x69
-- DirName:CN = x70
-- DirName:CN = x71
-- DirName:CN = x72
-- DirName:CN = x73
-- DirName:CN = x74
-- DirName:CN = x75
-- DirName:CN = x76
-- DirName:CN = x77
-- DirName:CN = x78
-- DirName:CN = x79
-- DirName:CN = x80
-- DirName:CN = x81
-- DirName:CN = x82
-- DirName:CN = x83
-- DirName:CN = x84
-- DirName:CN = x85
-- DirName:CN = x86
-- DirName:CN = x87
-- DirName:CN = x88
-- DirName:CN = x89
-- DirName:CN = x90
-- DirName:CN = x91
-- DirName:CN = x92
-- DirName:CN = x93
-- DirName:CN = x94
-- DirName:CN = x95
-- DirName:CN = x96
-- DirName:CN = x97
-- DirName:CN = x98
-- DirName:CN = x99
-- DirName:CN = x100
-- DirName:CN = x101
-- DirName:CN = x102
-- DirName:CN = x103
-- DirName:CN = x104
-- DirName:CN = x105
-- DirName:CN = x106
-- DirName:CN = x107
-- DirName:CN = x108
-- DirName:CN = x109
-- DirName:CN = x110
-- DirName:CN = x111
-- DirName:CN = x112
-- DirName:CN = x113
-- DirName:CN = x114
-- DirName:CN = x115
-- DirName:CN = x116
-- DirName:CN = x117
-- DirName:CN = x118
-- DirName:CN = x119
-- DirName:CN = x120
-- DirName:CN = x121
-- DirName:CN = x122
-- DirName:CN = x123
-- DirName:CN = x124
-- DirName:CN = x125
-- DirName:CN = x126
-- DirName:CN = x127
-- DirName:CN = x128
-- DirName:CN = x129
-- DirName:CN = x130
-- DirName:CN = x131
-- DirName:CN = x132
-- DirName:CN = x133
-- DirName:CN = x134
-- DirName:CN = x135
-- DirName:CN = x136
-- DirName:CN = x137
-- DirName:CN = x138
-- DirName:CN = x139
-- DirName:CN = x140
-- DirName:CN = x141
-- DirName:CN = x142
-- DirName:CN = x143
-- DirName:CN = x144
-- DirName:CN = x145
-- DirName:CN = x146
-- DirName:CN = x147
-- DirName:CN = x148
-- DirName:CN = x149
-- DirName:CN = x150
-- DirName:CN = x151
-- DirName:CN = x152
-- DirName:CN = x153
-- DirName:CN = x154
-- DirName:CN = x155
-- DirName:CN = x156
-- DirName:CN = x157
-- DirName:CN = x158
-- DirName:CN = x159
-- DirName:CN = x160
-- DirName:CN = x161
-- DirName:CN = x162
-- DirName:CN = x163
-- DirName:CN = x164
-- DirName:CN = x165
-- DirName:CN = x166
-- DirName:CN = x167
-- DirName:CN = x168
-- DirName:CN = x169
-- DirName:CN = x170
-- DirName:CN = x171
-- DirName:CN = x172
-- DirName:CN = x173
-- DirName:CN = x174
-- DirName:CN = x175
-- DirName:CN = x176
-- DirName:CN = x177
-- DirName:CN = x178
-- DirName:CN = x179
-- DirName:CN = x180
-- DirName:CN = x181
-- DirName:CN = x182
-- DirName:CN = x183
-- DirName:CN = x184
-- DirName:CN = x185
-- DirName:CN = x186
-- DirName:CN = x187
-- DirName:CN = x188
-- DirName:CN = x189
-- DirName:CN = x190
-- DirName:CN = x191
-- DirName:CN = x192
-- DirName:CN = x193
-- DirName:CN = x194
-- DirName:CN = x195
-- DirName:CN = x196
-- DirName:CN = x197
-- DirName:CN = x198
-- DirName:CN = x199
-- DirName:CN = x200
-- DirName:CN = x201
-- DirName:CN = x202
-- DirName:CN = x203
-- DirName:CN = x204
-- DirName:CN = x205
-- DirName:CN = x206
-- DirName:CN = x207
-- DirName:CN = x208
-- DirName:CN = x209
-- DirName:CN = x210
-- DirName:CN = x211
-- DirName:CN = x212
-- DirName:CN = x213
-- DirName:CN = x214
-- DirName:CN = x215
-- DirName:CN = x216
-- DirName:CN = x217
-- DirName:CN = x218
-- DirName:CN = x219
-- DirName:CN = x220
-- DirName:CN = x221
-- DirName:CN = x222
-- DirName:CN = x223
-- DirName:CN = x224
-- DirName:CN = x225
-- DirName:CN = x226
-- DirName:CN = x227
-- DirName:CN = x228
-- DirName:CN = x229
-- DirName:CN = x230
-- DirName:CN = x231
-- DirName:CN = x232
-- DirName:CN = x233
-- DirName:CN = x234
-- DirName:CN = x235
-- DirName:CN = x236
-- DirName:CN = x237
-- DirName:CN = x238
-- DirName:CN = x239
-- DirName:CN = x240
-- DirName:CN = x241
-- DirName:CN = x242
-- DirName:CN = x243
-- DirName:CN = x244
-- DirName:CN = x245
-- DirName:CN = x246
-- DirName:CN = x247
-- DirName:CN = x248
-- DirName:CN = x249
-- DirName:CN = x250
-- DirName:CN = x251
-- DirName:CN = x252
-- DirName:CN = x253
-- DirName:CN = x254
-- DirName:CN = x255
-- DirName:CN = x256
-- DirName:CN = x257
-- DirName:CN = x258
-- DirName:CN = x259
-- DirName:CN = x260
-- DirName:CN = x261
-- DirName:CN = x262
-- DirName:CN = x263
-- DirName:CN = x264
-- DirName:CN = x265
-- DirName:CN = x266
-- DirName:CN = x267
-- DirName:CN = x268
-- DirName:CN = x269
-- DirName:CN = x270
-- DirName:CN = x271
-- DirName:CN = x272
-- DirName:CN = x273
-- DirName:CN = x274
-- DirName:CN = x275
-- DirName:CN = x276
-- DirName:CN = x277
-- DirName:CN = x278
-- DirName:CN = x279
-- DirName:CN = x280
-- DirName:CN = x281
-- DirName:CN = x282
-- DirName:CN = x283
-- DirName:CN = x284
-- DirName:CN = x285
-- DirName:CN = x286
-- DirName:CN = x287
-- DirName:CN = x288
-- DirName:CN = x289
-- DirName:CN = x290
-- DirName:CN = x291
-- DirName:CN = x292
-- DirName:CN = x293
-- DirName:CN = x294
-- DirName:CN = x295
-- DirName:CN = x296
-- DirName:CN = x297
-- DirName:CN = x298
-- DirName:CN = x299
-- DirName:CN = x300
-- DirName:CN = x301
-- DirName:CN = x302
-- DirName:CN = x303
-- DirName:CN = x304
-- DirName:CN = x305
-- DirName:CN = x306
-- DirName:CN = x307
-- DirName:CN = x308
-- DirName:CN = x309
-- DirName:CN = x310
-- DirName:CN = x311
-- DirName:CN = x312
-- DirName:CN = x313
-- DirName:CN = x314
-- DirName:CN = x315
-- DirName:CN = x316
-- DirName:CN = x317
-- DirName:CN = x318
-- DirName:CN = x319
-- DirName:CN = x320
-- DirName:CN = x321
-- DirName:CN = x322
-- DirName:CN = x323
-- DirName:CN = x324
-- DirName:CN = x325
-- DirName:CN = x326
-- DirName:CN = x327
-- DirName:CN = x328
-- DirName:CN = x329
-- DirName:CN = x330
-- DirName:CN = x331
-- DirName:CN = x332
-- DirName:CN = x333
-- DirName:CN = x334
-- DirName:CN = x335
-- DirName:CN = x336
-- DirName:CN = x337
-- DirName:CN = x338
-- DirName:CN = x339
-- DirName:CN = x340
-- DirName:CN = x341
-- DirName:CN = x342
-- DirName:CN = x343
-- DirName:CN = x344
-- DirName:CN = x345
-- DirName:CN = x346
-- DirName:CN = x347
-- DirName:CN = x348
-- DirName:CN = x349
-- DirName:CN = x350
-- DirName:CN = x351
-- DirName:CN = x352
-- DirName:CN = x353
-- DirName:CN = x354
-- DirName:CN = x355
-- DirName:CN = x356
-- DirName:CN = x357
-- DirName:CN = x358
-- DirName:CN = x359
-- DirName:CN = x360
-- DirName:CN = x361
-- DirName:CN = x362
-- DirName:CN = x363
-- DirName:CN = x364
-- DirName:CN = x365
-- DirName:CN = x366
-- DirName:CN = x367
-- DirName:CN = x368
-- DirName:CN = x369
-- DirName:CN = x370
-- DirName:CN = x371
-- DirName:CN = x372
-- DirName:CN = x373
-- DirName:CN = x374
-- DirName:CN = x375
-- DirName:CN = x376
-- DirName:CN = x377
-- DirName:CN = x378
-- DirName:CN = x379
-- DirName:CN = x380
-- DirName:CN = x381
-- DirName:CN = x382
-- DirName:CN = x383
-- DirName:CN = x384
-- DirName:CN = x385
-- DirName:CN = x386
-- DirName:CN = x387
-- DirName:CN = x388
-- DirName:CN = x389
-- DirName:CN = x390
-- DirName:CN = x391
-- DirName:CN = x392
-- DirName:CN = x393
-- DirName:CN = x394
-- DirName:CN = x395
-- DirName:CN = x396
-- DirName:CN = x397
-- DirName:CN = x398
-- DirName:CN = x399
-- DirName:CN = x400
-- DirName:CN = x401
-- DirName:CN = x402
-- DirName:CN = x403
-- DirName:CN = x404
-- DirName:CN = x405
-- DirName:CN = x406
-- DirName:CN = x407
-- DirName:CN = x408
-- DirName:CN = x409
-- DirName:CN = x410
-- DirName:CN = x411
-- DirName:CN = x412
-- DirName:CN = x413
-- DirName:CN = x414
-- DirName:CN = x415
-- DirName:CN = x416
-- DirName:CN = x417
-- DirName:CN = x418
-+ DirName: CN = x0
-+ DirName: CN = x1
-+ DirName: CN = x2
-+ DirName: CN = x3
-+ DirName: CN = x4
-+ DirName: CN = x5
-+ DirName: CN = x6
-+ DirName: CN = x7
-+ DirName: CN = x8
-+ DirName: CN = x9
-+ DirName: CN = x10
-+ DirName: CN = x11
-+ DirName: CN = x12
-+ DirName: CN = x13
-+ DirName: CN = x14
-+ DirName: CN = x15
-+ DirName: CN = x16
-+ DirName: CN = x17
-+ DirName: CN = x18
-+ DirName: CN = x19
-+ DirName: CN = x20
-+ DirName: CN = x21
-+ DirName: CN = x22
-+ DirName: CN = x23
-+ DirName: CN = x24
-+ DirName: CN = x25
-+ DirName: CN = x26
-+ DirName: CN = x27
-+ DirName: CN = x28
-+ DirName: CN = x29
-+ DirName: CN = x30
-+ DirName: CN = x31
-+ DirName: CN = x32
-+ DirName: CN = x33
-+ DirName: CN = x34
-+ DirName: CN = x35
-+ DirName: CN = x36
-+ DirName: CN = x37
-+ DirName: CN = x38
-+ DirName: CN = x39
-+ DirName: CN = x40
-+ DirName: CN = x41
-+ DirName: CN = x42
-+ DirName: CN = x43
-+ DirName: CN = x44
-+ DirName: CN = x45
-+ DirName: CN = x46
-+ DirName: CN = x47
-+ DirName: CN = x48
-+ DirName: CN = x49
-+ DirName: CN = x50
-+ DirName: CN = x51
-+ DirName: CN = x52
-+ DirName: CN = x53
-+ DirName: CN = x54
-+ DirName: CN = x55
-+ DirName: CN = x56
-+ DirName: CN = x57
-+ DirName: CN = x58
-+ DirName: CN = x59
-+ DirName: CN = x60
-+ DirName: CN = x61
-+ DirName: CN = x62
-+ DirName: CN = x63
-+ DirName: CN = x64
-+ DirName: CN = x65
-+ DirName: CN = x66
-+ DirName: CN = x67
-+ DirName: CN = x68
-+ DirName: CN = x69
-+ DirName: CN = x70
-+ DirName: CN = x71
-+ DirName: CN = x72
-+ DirName: CN = x73
-+ DirName: CN = x74
-+ DirName: CN = x75
-+ DirName: CN = x76
-+ DirName: CN = x77
-+ DirName: CN = x78
-+ DirName: CN = x79
-+ DirName: CN = x80
-+ DirName: CN = x81
-+ DirName: CN = x82
-+ DirName: CN = x83
-+ DirName: CN = x84
-+ DirName: CN = x85
-+ DirName: CN = x86
-+ DirName: CN = x87
-+ DirName: CN = x88
-+ DirName: CN = x89
-+ DirName: CN = x90
-+ DirName: CN = x91
-+ DirName: CN = x92
-+ DirName: CN = x93
-+ DirName: CN = x94
-+ DirName: CN = x95
-+ DirName: CN = x96
-+ DirName: CN = x97
-+ DirName: CN = x98
-+ DirName: CN = x99
-+ DirName: CN = x100
-+ DirName: CN = x101
-+ DirName: CN = x102
-+ DirName: CN = x103
-+ DirName: CN = x104
-+ DirName: CN = x105
-+ DirName: CN = x106
-+ DirName: CN = x107
-+ DirName: CN = x108
-+ DirName: CN = x109
-+ DirName: CN = x110
-+ DirName: CN = x111
-+ DirName: CN = x112
-+ DirName: CN = x113
-+ DirName: CN = x114
-+ DirName: CN = x115
-+ DirName: CN = x116
-+ DirName: CN = x117
-+ DirName: CN = x118
-+ DirName: CN = x119
-+ DirName: CN = x120
-+ DirName: CN = x121
-+ DirName: CN = x122
-+ DirName: CN = x123
-+ DirName: CN = x124
-+ DirName: CN = x125
-+ DirName: CN = x126
-+ DirName: CN = x127
-+ DirName: CN = x128
-+ DirName: CN = x129
-+ DirName: CN = x130
-+ DirName: CN = x131
-+ DirName: CN = x132
-+ DirName: CN = x133
-+ DirName: CN = x134
-+ DirName: CN = x135
-+ DirName: CN = x136
-+ DirName: CN = x137
-+ DirName: CN = x138
-+ DirName: CN = x139
-+ DirName: CN = x140
-+ DirName: CN = x141
-+ DirName: CN = x142
-+ DirName: CN = x143
-+ DirName: CN = x144
-+ DirName: CN = x145
-+ DirName: CN = x146
-+ DirName: CN = x147
-+ DirName: CN = x148
-+ DirName: CN = x149
-+ DirName: CN = x150
-+ DirName: CN = x151
-+ DirName: CN = x152
-+ DirName: CN = x153
-+ DirName: CN = x154
-+ DirName: CN = x155
-+ DirName: CN = x156
-+ DirName: CN = x157
-+ DirName: CN = x158
-+ DirName: CN = x159
-+ DirName: CN = x160
-+ DirName: CN = x161
-+ DirName: CN = x162
-+ DirName: CN = x163
-+ DirName: CN = x164
-+ DirName: CN = x165
-+ DirName: CN = x166
-+ DirName: CN = x167
-+ DirName: CN = x168
-+ DirName: CN = x169
-
- Signature Algorithm: sha256WithRSAEncryption
-- 78:77:cf:93:5f:bd:ff:3f:90:a4:39:4b:72:18:90:72:32:7c:
-- f7:dc:b3:6d:f4:ce:c9:99:72:d9:63:06:88:85:d8:91:20:35:
-- 72:4d:09:b5:02:89:50:63:5e:69:59:5f:f9:c1:e7:0f:d6:55:
-- 6b:67:0d:f7:b0:83:02:18:d5:75:ba:06:96:e5:3f:fa:c4:0f:
-- 30:79:bc:43:9b:6e:e6:15:c2:87:bc:57:4f:3a:7c:37:bb:15:
-- 90:f3:d7:ad:42:44:c3:ad:cb:f4:fa:0f:32:25:9b:5a:2a:0b:
-- 7e:2a:f1:eb:35:7f:f2:7d:60:4b:e3:8f:fc:01:a6:be:cc:8b:
-- 4a:e6:5f:ec:42:47:e4:66:5a:4f:20:b2:7b:cc:51:27:91:ea:
-- b0:df:70:9f:e5:77:6a:62:25:12:da:7a:f2:54:4f:3e:b8:18:
-- a9:63:4d:50:02:f0:4d:ec:1d:bc:7c:3a:7b:7e:0f:6b:b7:30:
-- 61:e7:43:1c:ba:c5:8e:c6:9e:14:0d:7f:07:e0:66:6b:1d:32:
-- d3:2e:a6:e1:16:f6:2e:d5:b1:56:ae:88:f9:e4:a8:1d:f7:67:
-- ac:d0:2e:2c:ab:04:44:4b:67:7f:03:07:9d:f8:4d:b7:82:31:
-- 4f:23:37:5e:8e:d7:e3:fa:52:94:a2:27:98:79:9b:4e:33:99:
-- 45:a4:d6:98
-+ 9f:cb:83:7b:e2:3c:57:27:25:ec:82:3f:30:c2:ff:12:51:71:
-+ 3f:d5:94:05:1a:5b:58:44:80:b4:89:1e:e0:89:45:e5:e3:72:
-+ 8b:c4:d8:ca:54:a3:db:f2:a3:fd:16:00:c1:86:21:e2:ed:e3:
-+ 6c:94:7e:09:ae:ed:36:1c:e3:97:6f:3d:0a:b1:39:78:7a:b3:
-+ b9:ce:c3:68:ee:60:27:7c:cb:6b:33:3c:5f:a2:6a:99:d4:08:
-+ 2a:e9:21:04:ea:12:d9:28:53:1f:cc:af:ab:41:a3:6e:34:fa:
-+ 56:56:44:d5:c5:10:bd:f4:37:3b:45:94:74:19:b2:49:cf:0f:
-+ 98:94:75:68:ec:4e:6f:b0:41:ac:f7:38:02:1d:dd:1f:14:f6:
-+ b5:c6:0c:a2:b2:a7:07:75:99:54:4e:fe:68:0c:1d:ae:a0:90:
-+ d7:d5:64:60:15:ff:c7:fd:31:da:ab:50:43:44:b7:cc:3f:d2:
-+ ee:e4:03:3e:a0:9d:8e:81:48:21:86:34:66:27:be:b2:73:01:
-+ 2b:65:ee:51:3b:57:3f:76:51:ad:82:fc:7e:c9:ce:89:38:04:
-+ 5f:c9:f6:41:62:32:60:b2:b9:d1:fe:4e:78:d6:a5:79:56:7b:
-+ 57:e4:1d:42:7a:1f:aa:f7:b0:d0:82:ba:d4:f1:bb:f9:9c:ec:
-+ ca:e7:f7:09
- -----BEGIN CERTIFICATE-----
--MIKYdzCCl1+gAwIBAgIUPOX8gYhZqFAWwX/X5Srlln/C9vcwDQYJKoZIhvcNAQEL
-+MII/SzCCPjOgAwIBAgIUPOX8gYhZqFAWwX/X5Srlln/C9vcwDQYJKoZIhvcNAQEL
- BQAwDzENMAsGA1UEAwwEUm9vdDAeFw0yMTEwMDUxMjAwMDBaFw0yMjEwMDUxMjAw
- MDBaMBcxFTATBgNVBAMMDEludGVybWVkaWF0ZTCCASIwDQYJKoZIhvcNAQEBBQAD
- ggEPADCCAQoCggEBALs72wRuF+BUUrojdyS8NONw2ZmeU10zC6nMSx2uBicYjlW6
-@@ -3000,12 +1454,12 @@ rRLHHTJZbcMWINtipneAEuCHWFFV42Z/0eA6ImXlcCaiBATwXflfVsja6A9XKHdu
- mqBKUzQaYzeiQ6sOSs0HI91Vg0QADHBB3zVk0MUOaofbyvw11eJbrwug5nWl0uFy
- TiJjAUFzuJVQLP3tw2G2NtSDlWHD4GH/9J6K6Lrc0faJ7Z0wRJUn9NGL5i8UZlbx
- 2vHMBBt3kqWfWEAMnwwy1gXCTMDFn+WkMD1M6Z0DbEwGtuWVvSG45iuooL8Gu0Mz
--GT17F1nxZE0kZ7FRDzWu8HF1ea5bAjQEMeNmhmUCAwEAAaOClcEwgpW9MB0GA1Ud
-+GT17F1nxZE0kZ7FRDzWu8HF1ea5bAjQEMeNmhmUCAwEAAaOCPJUwgjyRMB0GA1Ud
- DgQWBBSSET+sEZbHZjfPg1ok8Dp3rzONfzAfBgNVHSMEGDAWgBS2wu+f0SnLD4mM
- TFLUvUC3Ebdx3TA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAKGG2h0dHA6Ly91
- cmwtZm9yLWFpYS9Sb290LmNlcjAsBgNVHR8EJTAjMCGgH6AdhhtodHRwOi8vdXJs
- LWZvci1jcmwvUm9vdC5jcmwwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB
--Af8wgpTxBgNVHR4EgpToMIKU5KCCSm4wCYIHdDAudGVzdDAJggd0MS50ZXN0MAmC
-+Af8wgjvFBgNVHR4Egju8MII7uKCCHgAwCYIHdDAudGVzdDAJggd0MS50ZXN0MAmC
- B3QyLnRlc3QwCYIHdDMudGVzdDAJggd0NC50ZXN0MAmCB3Q1LnRlc3QwCYIHdDYu
- dGVzdDAJggd0Ny50ZXN0MAmCB3Q4LnRlc3QwCYIHdDkudGVzdDAKggh0MTAudGVz
- dDAKggh0MTEudGVzdDAKggh0MTIudGVzdDAKggh0MTMudGVzdDAKggh0MTQudGVz
-@@ -3049,763 +1503,287 @@ MTU0LnRlc3QwC4IJdDE1NS50ZXN0MAuCCXQxNTYudGVzdDALggl0MTU3LnRlc3Qw
- C4IJdDE1OC50ZXN0MAuCCXQxNTkudGVzdDALggl0MTYwLnRlc3QwC4IJdDE2MS50
- ZXN0MAuCCXQxNjIudGVzdDALggl0MTYzLnRlc3QwC4IJdDE2NC50ZXN0MAuCCXQx
- NjUudGVzdDALggl0MTY2LnRlc3QwC4IJdDE2Ny50ZXN0MAuCCXQxNjgudGVzdDAL
--ggl0MTY5LnRlc3QwC4IJdDE3MC50ZXN0MAuCCXQxNzEudGVzdDALggl0MTcyLnRl
--c3QwC4IJdDE3My50ZXN0MAuCCXQxNzQudGVzdDALggl0MTc1LnRlc3QwC4IJdDE3
--Ni50ZXN0MAuCCXQxNzcudGVzdDALggl0MTc4LnRlc3QwC4IJdDE3OS50ZXN0MAuC
--CXQxODAudGVzdDALggl0MTgxLnRlc3QwC4IJdDE4Mi50ZXN0MAuCCXQxODMudGVz
--dDALggl0MTg0LnRlc3QwC4IJdDE4NS50ZXN0MAuCCXQxODYudGVzdDALggl0MTg3
--LnRlc3QwC4IJdDE4OC50ZXN0MAuCCXQxODkudGVzdDALggl0MTkwLnRlc3QwC4IJ
--dDE5MS50ZXN0MAuCCXQxOTIudGVzdDALggl0MTkzLnRlc3QwC4IJdDE5NC50ZXN0
--MAuCCXQxOTUudGVzdDALggl0MTk2LnRlc3QwC4IJdDE5Ny50ZXN0MAuCCXQxOTgu
--dGVzdDALggl0MTk5LnRlc3QwC4IJdDIwMC50ZXN0MAuCCXQyMDEudGVzdDALggl0
--MjAyLnRlc3QwC4IJdDIwMy50ZXN0MAuCCXQyMDQudGVzdDALggl0MjA1LnRlc3Qw
--C4IJdDIwNi50ZXN0MAuCCXQyMDcudGVzdDALggl0MjA4LnRlc3QwC4IJdDIwOS50
--ZXN0MAuCCXQyMTAudGVzdDALggl0MjExLnRlc3QwC4IJdDIxMi50ZXN0MAuCCXQy
--MTMudGVzdDALggl0MjE0LnRlc3QwC4IJdDIxNS50ZXN0MAuCCXQyMTYudGVzdDAL
--ggl0MjE3LnRlc3QwC4IJdDIxOC50ZXN0MAuCCXQyMTkudGVzdDALggl0MjIwLnRl
--c3QwC4IJdDIyMS50ZXN0MAuCCXQyMjIudGVzdDALggl0MjIzLnRlc3QwC4IJdDIy
--NC50ZXN0MAuCCXQyMjUudGVzdDALggl0MjI2LnRlc3QwC4IJdDIyNy50ZXN0MAuC
--CXQyMjgudGVzdDALggl0MjI5LnRlc3QwC4IJdDIzMC50ZXN0MAuCCXQyMzEudGVz
--dDALggl0MjMyLnRlc3QwC4IJdDIzMy50ZXN0MAuCCXQyMzQudGVzdDALggl0MjM1
--LnRlc3QwC4IJdDIzNi50ZXN0MAuCCXQyMzcudGVzdDALggl0MjM4LnRlc3QwC4IJ
--dDIzOS50ZXN0MAuCCXQyNDAudGVzdDALggl0MjQxLnRlc3QwC4IJdDI0Mi50ZXN0
--MAuCCXQyNDMudGVzdDALggl0MjQ0LnRlc3QwC4IJdDI0NS50ZXN0MAuCCXQyNDYu
--dGVzdDALggl0MjQ3LnRlc3QwC4IJdDI0OC50ZXN0MAuCCXQyNDkudGVzdDALggl0
--MjUwLnRlc3QwC4IJdDI1MS50ZXN0MAuCCXQyNTIudGVzdDALggl0MjUzLnRlc3Qw
--C4IJdDI1NC50ZXN0MAuCCXQyNTUudGVzdDALggl0MjU2LnRlc3QwC4IJdDI1Ny50
--ZXN0MAuCCXQyNTgudGVzdDALggl0MjU5LnRlc3QwC4IJdDI2MC50ZXN0MAuCCXQy
--NjEudGVzdDALggl0MjYyLnRlc3QwC4IJdDI2My50ZXN0MAuCCXQyNjQudGVzdDAL
--ggl0MjY1LnRlc3QwC4IJdDI2Ni50ZXN0MAuCCXQyNjcudGVzdDALggl0MjY4LnRl
--c3QwC4IJdDI2OS50ZXN0MAuCCXQyNzAudGVzdDALggl0MjcxLnRlc3QwC4IJdDI3
--Mi50ZXN0MAuCCXQyNzMudGVzdDALggl0Mjc0LnRlc3QwC4IJdDI3NS50ZXN0MAuC
--CXQyNzYudGVzdDALggl0Mjc3LnRlc3QwC4IJdDI3OC50ZXN0MAuCCXQyNzkudGVz
--dDALggl0MjgwLnRlc3QwC4IJdDI4MS50ZXN0MAuCCXQyODIudGVzdDALggl0Mjgz
--LnRlc3QwC4IJdDI4NC50ZXN0MAuCCXQyODUudGVzdDALggl0Mjg2LnRlc3QwC4IJ
--dDI4Ny50ZXN0MAuCCXQyODgudGVzdDALggl0Mjg5LnRlc3QwC4IJdDI5MC50ZXN0
--MAuCCXQyOTEudGVzdDALggl0MjkyLnRlc3QwC4IJdDI5My50ZXN0MAuCCXQyOTQu
--dGVzdDALggl0Mjk1LnRlc3QwC4IJdDI5Ni50ZXN0MAuCCXQyOTcudGVzdDALggl0
--Mjk4LnRlc3QwC4IJdDI5OS50ZXN0MAuCCXQzMDAudGVzdDALggl0MzAxLnRlc3Qw
--C4IJdDMwMi50ZXN0MAuCCXQzMDMudGVzdDALggl0MzA0LnRlc3QwC4IJdDMwNS50
--ZXN0MAuCCXQzMDYudGVzdDALggl0MzA3LnRlc3QwC4IJdDMwOC50ZXN0MAuCCXQz
--MDkudGVzdDALggl0MzEwLnRlc3QwC4IJdDMxMS50ZXN0MAuCCXQzMTIudGVzdDAL
--ggl0MzEzLnRlc3QwC4IJdDMxNC50ZXN0MAuCCXQzMTUudGVzdDALggl0MzE2LnRl
--c3QwC4IJdDMxNy50ZXN0MAuCCXQzMTgudGVzdDALggl0MzE5LnRlc3QwC4IJdDMy
--MC50ZXN0MAuCCXQzMjEudGVzdDALggl0MzIyLnRlc3QwC4IJdDMyMy50ZXN0MAuC
--CXQzMjQudGVzdDALggl0MzI1LnRlc3QwC4IJdDMyNi50ZXN0MAuCCXQzMjcudGVz
--dDALggl0MzI4LnRlc3QwC4IJdDMyOS50ZXN0MAuCCXQzMzAudGVzdDALggl0MzMx
--LnRlc3QwC4IJdDMzMi50ZXN0MAuCCXQzMzMudGVzdDALggl0MzM0LnRlc3QwC4IJ
--dDMzNS50ZXN0MAuCCXQzMzYudGVzdDALggl0MzM3LnRlc3QwC4IJdDMzOC50ZXN0
--MAuCCXQzMzkudGVzdDALggl0MzQwLnRlc3QwC4IJdDM0MS50ZXN0MAuCCXQzNDIu
--dGVzdDALggl0MzQzLnRlc3QwC4IJdDM0NC50ZXN0MAuCCXQzNDUudGVzdDALggl0
--MzQ2LnRlc3QwC4IJdDM0Ny50ZXN0MAuCCXQzNDgudGVzdDALggl0MzQ5LnRlc3Qw
--C4IJdDM1MC50ZXN0MAuCCXQzNTEudGVzdDALggl0MzUyLnRlc3QwC4IJdDM1My50
--ZXN0MAuCCXQzNTQudGVzdDALggl0MzU1LnRlc3QwC4IJdDM1Ni50ZXN0MAuCCXQz
--NTcudGVzdDALggl0MzU4LnRlc3QwC4IJdDM1OS50ZXN0MAuCCXQzNjAudGVzdDAL
--ggl0MzYxLnRlc3QwC4IJdDM2Mi50ZXN0MAuCCXQzNjMudGVzdDALggl0MzY0LnRl
--c3QwC4IJdDM2NS50ZXN0MAuCCXQzNjYudGVzdDALggl0MzY3LnRlc3QwC4IJdDM2
--OC50ZXN0MAuCCXQzNjkudGVzdDALggl0MzcwLnRlc3QwC4IJdDM3MS50ZXN0MAuC
--CXQzNzIudGVzdDALggl0MzczLnRlc3QwC4IJdDM3NC50ZXN0MAuCCXQzNzUudGVz
--dDALggl0Mzc2LnRlc3QwC4IJdDM3Ny50ZXN0MAuCCXQzNzgudGVzdDALggl0Mzc5
--LnRlc3QwC4IJdDM4MC50ZXN0MAuCCXQzODEudGVzdDALggl0MzgyLnRlc3QwC4IJ
--dDM4My50ZXN0MAuCCXQzODQudGVzdDALggl0Mzg1LnRlc3QwC4IJdDM4Ni50ZXN0
--MAuCCXQzODcudGVzdDALggl0Mzg4LnRlc3QwC4IJdDM4OS50ZXN0MAuCCXQzOTAu
--dGVzdDALggl0MzkxLnRlc3QwC4IJdDM5Mi50ZXN0MAuCCXQzOTMudGVzdDALggl0
--Mzk0LnRlc3QwC4IJdDM5NS50ZXN0MAuCCXQzOTYudGVzdDALggl0Mzk3LnRlc3Qw
--C4IJdDM5OC50ZXN0MAuCCXQzOTkudGVzdDALggl0NDAwLnRlc3QwC4IJdDQwMS50
--ZXN0MAuCCXQ0MDIudGVzdDALggl0NDAzLnRlc3QwC4IJdDQwNC50ZXN0MAuCCXQ0
--MDUudGVzdDALggl0NDA2LnRlc3QwC4IJdDQwNy50ZXN0MAuCCXQ0MDgudGVzdDAL
--ggl0NDA5LnRlc3QwC4IJdDQxMC50ZXN0MAuCCXQ0MTEudGVzdDALggl0NDEyLnRl
--c3QwC4IJdDQxMy50ZXN0MAuCCXQ0MTQudGVzdDALggl0NDE1LnRlc3QwC4IJdDQx
--Ni50ZXN0MAuCCXQ0MTcudGVzdDALggl0NDE4LnRlc3QwCocICgAAAP////8wCocI
--CgAAAf////8wCocICgAAAv////8wCocICgAAA/////8wCocICgAABP////8wCocI
--CgAABf////8wCocICgAABv////8wCocICgAAB/////8wCocICgAACP////8wCocI
--CgAACf////8wCocICgAACv////8wCocICgAAC/////8wCocICgAADP////8wCocI
--CgAADf////8wCocICgAADv////8wCocICgAAD/////8wCocICgAAEP////8wCocI
--CgAAEf////8wCocICgAAEv////8wCocICgAAE/////8wCocICgAAFP////8wCocI
--CgAAFf////8wCocICgAAFv////8wCocICgAAF/////8wCocICgAAGP////8wCocI
--CgAAGf////8wCocICgAAGv////8wCocICgAAG/////8wCocICgAAHP////8wCocI
--CgAAHf////8wCocICgAAHv////8wCocICgAAH/////8wCocICgAAIP////8wCocI
--CgAAIf////8wCocICgAAIv////8wCocICgAAI/////8wCocICgAAJP////8wCocI
--CgAAJf////8wCocICgAAJv////8wCocICgAAJ/////8wCocICgAAKP////8wCocI
--CgAAKf////8wCocICgAAKv////8wCocICgAAK/////8wCocICgAALP////8wCocI
--CgAALf////8wCocICgAALv////8wCocICgAAL/////8wCocICgAAMP////8wCocI
--CgAAMf////8wCocICgAAMv////8wCocICgAAM/////8wCocICgAANP////8wCocI
--CgAANf////8wCocICgAANv////8wCocICgAAN/////8wCocICgAAOP////8wCocI
--CgAAOf////8wCocICgAAOv////8wCocICgAAO/////8wCocICgAAPP////8wCocI
--CgAAPf////8wCocICgAAPv////8wCocICgAAP/////8wCocICgAAQP////8wCocI
--CgAAQf////8wCocICgAAQv////8wCocICgAAQ/////8wCocICgAARP////8wCocI
--CgAARf////8wCocICgAARv////8wCocICgAAR/////8wCocICgAASP////8wCocI
--CgAASf////8wCocICgAASv////8wCocICgAAS/////8wCocICgAATP////8wCocI
--CgAATf////8wCocICgAATv////8wCocICgAAT/////8wCocICgAAUP////8wCocI
--CgAAUf////8wCocICgAAUv////8wCocICgAAU/////8wCocICgAAVP////8wCocI
--CgAAVf////8wCocICgAAVv////8wCocICgAAV/////8wCocICgAAWP////8wCocI
--CgAAWf////8wCocICgAAWv////8wCocICgAAW/////8wCocICgAAXP////8wCocI
--CgAAXf////8wCocICgAAXv////8wCocICgAAX/////8wCocICgAAYP////8wCocI
--CgAAYf////8wCocICgAAYv////8wCocICgAAY/////8wCocICgAAZP////8wCocI
--CgAAZf////8wCocICgAAZv////8wCocICgAAZ/////8wCocICgAAaP////8wCocI
--CgAAaf////8wCocICgAAav////8wCocICgAAa/////8wCocICgAAbP////8wCocI
--CgAAbf////8wCocICgAAbv////8wCocICgAAb/////8wCocICgAAcP////8wCocI
--CgAAcf////8wCocICgAAcv////8wCocICgAAc/////8wCocICgAAdP////8wCocI
--CgAAdf////8wCocICgAAdv////8wCocICgAAd/////8wCocICgAAeP////8wCocI
--CgAAef////8wCocICgAAev////8wCocICgAAe/////8wCocICgAAfP////8wCocI
--CgAAff////8wCocICgAAfv////8wCocICgAAf/////8wCocICgAAgP////8wCocI
--CgAAgf////8wCocICgAAgv////8wCocICgAAg/////8wCocICgAAhP////8wCocI
--CgAAhf////8wCocICgAAhv////8wCocICgAAh/////8wCocICgAAiP////8wCocI
--CgAAif////8wCocICgAAiv////8wCocICgAAi/////8wCocICgAAjP////8wCocI
--CgAAjf////8wCocICgAAjv////8wCocICgAAj/////8wCocICgAAkP////8wCocI
--CgAAkf////8wCocICgAAkv////8wCocICgAAk/////8wCocICgAAlP////8wCocI
--CgAAlf////8wCocICgAAlv////8wCocICgAAl/////8wCocICgAAmP////8wCocI
--CgAAmf////8wCocICgAAmv////8wCocICgAAm/////8wCocICgAAnP////8wCocI
--CgAAnf////8wCocICgAAnv////8wCocICgAAn/////8wCocICgAAoP////8wCocI
--CgAAof////8wCocICgAAov////8wCocICgAAo/////8wCocICgAApP////8wCocI
--CgAApf////8wCocICgAApv////8wCocICgAAp/////8wCocICgAAqP////8wCocI
--CgAAqf////8wCocICgAAqv////8wCocICgAAq/////8wCocICgAArP////8wCocI
--CgAArf////8wCocICgAArv////8wCocICgAAr/////8wCocICgAAsP////8wCocI
--CgAAsf////8wCocICgAAsv////8wCocICgAAs/////8wCocICgAAtP////8wCocI
--CgAAtf////8wCocICgAAtv////8wCocICgAAt/////8wCocICgAAuP////8wCocI
--CgAAuf////8wCocICgAAuv////8wCocICgAAu/////8wCocICgAAvP////8wCocI
--CgAAvf////8wCocICgAAvv////8wCocICgAAv/////8wCocICgAAwP////8wCocI
--CgAAwf////8wCocICgAAwv////8wCocICgAAw/////8wCocICgAAxP////8wCocI
--CgAAxf////8wCocICgAAxv////8wCocICgAAx/////8wCocICgAAyP////8wCocI
--CgAAyf////8wCocICgAAyv////8wCocICgAAy/////8wCocICgAAzP////8wCocI
--CgAAzf////8wCocICgAAzv////8wCocICgAAz/////8wCocICgAA0P////8wCocI
--CgAA0f////8wCocICgAA0v////8wCocICgAA0/////8wCocICgAA1P////8wCocI
--CgAA1f////8wCocICgAA1v////8wCocICgAA1/////8wCocICgAA2P////8wCocI
--CgAA2f////8wCocICgAA2v////8wCocICgAA2/////8wCocICgAA3P////8wCocI
--CgAA3f////8wCocICgAA3v////8wCocICgAA3/////8wCocICgAA4P////8wCocI
--CgAA4f////8wCocICgAA4v////8wCocICgAA4/////8wCocICgAA5P////8wCocI
--CgAA5f////8wCocICgAA5v////8wCocICgAA5/////8wCocICgAA6P////8wCocI
--CgAA6f////8wCocICgAA6v////8wCocICgAA6/////8wCocICgAA7P////8wCocI
--CgAA7f////8wCocICgAA7v////8wCocICgAA7/////8wCocICgAA8P////8wCocI
--CgAA8f////8wCocICgAA8v////8wCocICgAA8/////8wCocICgAA9P////8wCocI
--CgAA9f////8wCocICgAA9v////8wCocICgAA9/////8wCocICgAA+P////8wCocI
--CgAA+f////8wCocICgAA+v////8wCocICgAA+/////8wCocICgAA/P////8wCocI
--CgAA/f////8wCocICgAA/v////8wCocICgAA//////8wCocICgABAP////8wCocI
--CgABAf////8wCocICgABAv////8wCocICgABA/////8wCocICgABBP////8wCocI
--CgABBf////8wCocICgABBv////8wCocICgABB/////8wCocICgABCP////8wCocI
--CgABCf////8wCocICgABCv////8wCocICgABC/////8wCocICgABDP////8wCocI
--CgABDf////8wCocICgABDv////8wCocICgABD/////8wCocICgABEP////8wCocI
--CgABEf////8wCocICgABEv////8wCocICgABE/////8wCocICgABFP////8wCocI
--CgABFf////8wCocICgABFv////8wCocICgABF/////8wCocICgABGP////8wCocI
--CgABGf////8wCocICgABGv////8wCocICgABG/////8wCocICgABHP////8wCocI
--CgABHf////8wCocICgABHv////8wCocICgABH/////8wCocICgABIP////8wCocI
--CgABIf////8wCocICgABIv////8wCocICgABI/////8wCocICgABJP////8wCocI
--CgABJf////8wCocICgABJv////8wCocICgABJ/////8wCocICgABKP////8wCocI
--CgABKf////8wCocICgABKv////8wCocICgABK/////8wCocICgABLP////8wCocI
--CgABLf////8wCocICgABLv////8wCocICgABL/////8wCocICgABMP////8wCocI
--CgABMf////8wCocICgABMv////8wCocICgABM/////8wCocICgABNP////8wCocI
--CgABNf////8wCocICgABNv////8wCocICgABN/////8wCocICgABOP////8wCocI
--CgABOf////8wCocICgABOv////8wCocICgABO/////8wCocICgABPP////8wCocI
--CgABPf////8wCocICgABPv////8wCocICgABP/////8wCocICgABQP////8wCocI
--CgABQf////8wCocICgABQv////8wCocICgABQ/////8wCocICgABRP////8wCocI
--CgABRf////8wCocICgABRv////8wCocICgABR/////8wCocICgABSP////8wCocI
--CgABSf////8wCocICgABSv////8wCocICgABS/////8wCocICgABTP////8wCocI
--CgABTf////8wCocICgABTv////8wCocICgABT/////8wCocICgABUP////8wCocI
--CgABUf////8wCocICgABUv////8wCocICgABU/////8wCocICgABVP////8wCocI
--CgABVf////8wCocICgABVv////8wCocICgABV/////8wCocICgABWP////8wCocI
--CgABWf////8wCocICgABWv////8wCocICgABW/////8wCocICgABXP////8wCocI
--CgABXf////8wCocICgABXv////8wCocICgABX/////8wCocICgABYP////8wCocI
--CgABYf////8wCocICgABYv////8wCocICgABY/////8wCocICgABZP////8wCocI
--CgABZf////8wCocICgABZv////8wCocICgABZ/////8wCocICgABaP////8wCocI
--CgABaf////8wCocICgABav////8wCocICgABa/////8wCocICgABbP////8wCocI
--CgABbf////8wCocICgABbv////8wCocICgABb/////8wCocICgABcP////8wCocI
--CgABcf////8wCocICgABcv////8wCocICgABc/////8wCocICgABdP////8wCocI
--CgABdf////8wCocICgABdv////8wCocICgABd/////8wCocICgABeP////8wCocI
--CgABef////8wCocICgABev////8wCocICgABe/////8wCocICgABfP////8wCocI
--CgABff////8wCocICgABfv////8wCocICgABf/////8wCocICgABgP////8wCocI
--CgABgf////8wCocICgABgv////8wCocICgABg/////8wCocICgABhP////8wCocI
--CgABhf////8wCocICgABhv////8wCocICgABh/////8wCocICgABiP////8wCocI
--CgABif////8wCocICgABiv////8wCocICgABi/////8wCocICgABjP////8wCocI
--CgABjf////8wCocICgABjv////8wCocICgABj/////8wCocICgABkP////8wCocI
--CgABkf////8wCocICgABkv////8wCocICgABk/////8wCocICgABlP////8wCocI
--CgABlf////8wCocICgABlv////8wCocICgABl/////8wCocICgABmP////8wCocI
--CgABmf////8wCocICgABmv////8wCocICgABm/////8wCocICgABnP////8wCocI
--CgABnf////8wCocICgABnv////8wCocICgABn/////8wCocICgABoP////8wCocI
--CgABof////8wCocICgABov////8wEaQPMA0xCzAJBgNVBAMMAnQwMBGkDzANMQsw
--CQYDVQQDDAJ0MTARpA8wDTELMAkGA1UEAwwCdDIwEaQPMA0xCzAJBgNVBAMMAnQz
--MBGkDzANMQswCQYDVQQDDAJ0NDARpA8wDTELMAkGA1UEAwwCdDUwEaQPMA0xCzAJ
--BgNVBAMMAnQ2MBGkDzANMQswCQYDVQQDDAJ0NzARpA8wDTELMAkGA1UEAwwCdDgw
--EaQPMA0xCzAJBgNVBAMMAnQ5MBKkEDAOMQwwCgYDVQQDDAN0MTAwEqQQMA4xDDAK
--BgNVBAMMA3QxMTASpBAwDjEMMAoGA1UEAwwDdDEyMBKkEDAOMQwwCgYDVQQDDAN0
--MTMwEqQQMA4xDDAKBgNVBAMMA3QxNDASpBAwDjEMMAoGA1UEAwwDdDE1MBKkEDAO
--MQwwCgYDVQQDDAN0MTYwEqQQMA4xDDAKBgNVBAMMA3QxNzASpBAwDjEMMAoGA1UE
--AwwDdDE4MBKkEDAOMQwwCgYDVQQDDAN0MTkwEqQQMA4xDDAKBgNVBAMMA3QyMDAS
--pBAwDjEMMAoGA1UEAwwDdDIxMBKkEDAOMQwwCgYDVQQDDAN0MjIwEqQQMA4xDDAK
--BgNVBAMMA3QyMzASpBAwDjEMMAoGA1UEAwwDdDI0MBKkEDAOMQwwCgYDVQQDDAN0
--MjUwEqQQMA4xDDAKBgNVBAMMA3QyNjASpBAwDjEMMAoGA1UEAwwDdDI3MBKkEDAO
--MQwwCgYDVQQDDAN0MjgwEqQQMA4xDDAKBgNVBAMMA3QyOTASpBAwDjEMMAoGA1UE
--AwwDdDMwMBKkEDAOMQwwCgYDVQQDDAN0MzEwEqQQMA4xDDAKBgNVBAMMA3QzMjAS
--pBAwDjEMMAoGA1UEAwwDdDMzMBKkEDAOMQwwCgYDVQQDDAN0MzQwEqQQMA4xDDAK
--BgNVBAMMA3QzNTASpBAwDjEMMAoGA1UEAwwDdDM2MBKkEDAOMQwwCgYDVQQDDAN0
--MzcwEqQQMA4xDDAKBgNVBAMMA3QzODASpBAwDjEMMAoGA1UEAwwDdDM5MBKkEDAO
--MQwwCgYDVQQDDAN0NDAwEqQQMA4xDDAKBgNVBAMMA3Q0MTASpBAwDjEMMAoGA1UE
--AwwDdDQyMBKkEDAOMQwwCgYDVQQDDAN0NDMwEqQQMA4xDDAKBgNVBAMMA3Q0NDAS
--pBAwDjEMMAoGA1UEAwwDdDQ1MBKkEDAOMQwwCgYDVQQDDAN0NDYwEqQQMA4xDDAK
--BgNVBAMMA3Q0NzASpBAwDjEMMAoGA1UEAwwDdDQ4MBKkEDAOMQwwCgYDVQQDDAN0
--NDkwEqQQMA4xDDAKBgNVBAMMA3Q1MDASpBAwDjEMMAoGA1UEAwwDdDUxMBKkEDAO
--MQwwCgYDVQQDDAN0NTIwEqQQMA4xDDAKBgNVBAMMA3Q1MzASpBAwDjEMMAoGA1UE
--AwwDdDU0MBKkEDAOMQwwCgYDVQQDDAN0NTUwEqQQMA4xDDAKBgNVBAMMA3Q1NjAS
--pBAwDjEMMAoGA1UEAwwDdDU3MBKkEDAOMQwwCgYDVQQDDAN0NTgwEqQQMA4xDDAK
--BgNVBAMMA3Q1OTASpBAwDjEMMAoGA1UEAwwDdDYwMBKkEDAOMQwwCgYDVQQDDAN0
--NjEwEqQQMA4xDDAKBgNVBAMMA3Q2MjASpBAwDjEMMAoGA1UEAwwDdDYzMBKkEDAO
--MQwwCgYDVQQDDAN0NjQwEqQQMA4xDDAKBgNVBAMMA3Q2NTASpBAwDjEMMAoGA1UE
--AwwDdDY2MBKkEDAOMQwwCgYDVQQDDAN0NjcwEqQQMA4xDDAKBgNVBAMMA3Q2ODAS
--pBAwDjEMMAoGA1UEAwwDdDY5MBKkEDAOMQwwCgYDVQQDDAN0NzAwEqQQMA4xDDAK
--BgNVBAMMA3Q3MTASpBAwDjEMMAoGA1UEAwwDdDcyMBKkEDAOMQwwCgYDVQQDDAN0
--NzMwEqQQMA4xDDAKBgNVBAMMA3Q3NDASpBAwDjEMMAoGA1UEAwwDdDc1MBKkEDAO
--MQwwCgYDVQQDDAN0NzYwEqQQMA4xDDAKBgNVBAMMA3Q3NzASpBAwDjEMMAoGA1UE
--AwwDdDc4MBKkEDAOMQwwCgYDVQQDDAN0NzkwEqQQMA4xDDAKBgNVBAMMA3Q4MDAS
--pBAwDjEMMAoGA1UEAwwDdDgxMBKkEDAOMQwwCgYDVQQDDAN0ODIwEqQQMA4xDDAK
--BgNVBAMMA3Q4MzASpBAwDjEMMAoGA1UEAwwDdDg0MBKkEDAOMQwwCgYDVQQDDAN0
--ODUwEqQQMA4xDDAKBgNVBAMMA3Q4NjASpBAwDjEMMAoGA1UEAwwDdDg3MBKkEDAO
--MQwwCgYDVQQDDAN0ODgwEqQQMA4xDDAKBgNVBAMMA3Q4OTASpBAwDjEMMAoGA1UE
--AwwDdDkwMBKkEDAOMQwwCgYDVQQDDAN0OTEwEqQQMA4xDDAKBgNVBAMMA3Q5MjAS
--pBAwDjEMMAoGA1UEAwwDdDkzMBKkEDAOMQwwCgYDVQQDDAN0OTQwEqQQMA4xDDAK
--BgNVBAMMA3Q5NTASpBAwDjEMMAoGA1UEAwwDdDk2MBKkEDAOMQwwCgYDVQQDDAN0
--OTcwEqQQMA4xDDAKBgNVBAMMA3Q5ODASpBAwDjEMMAoGA1UEAwwDdDk5MBOkETAP
--MQ0wCwYDVQQDDAR0MTAwMBOkETAPMQ0wCwYDVQQDDAR0MTAxMBOkETAPMQ0wCwYD
--VQQDDAR0MTAyMBOkETAPMQ0wCwYDVQQDDAR0MTAzMBOkETAPMQ0wCwYDVQQDDAR0
--MTA0MBOkETAPMQ0wCwYDVQQDDAR0MTA1MBOkETAPMQ0wCwYDVQQDDAR0MTA2MBOk
--ETAPMQ0wCwYDVQQDDAR0MTA3MBOkETAPMQ0wCwYDVQQDDAR0MTA4MBOkETAPMQ0w
--CwYDVQQDDAR0MTA5MBOkETAPMQ0wCwYDVQQDDAR0MTEwMBOkETAPMQ0wCwYDVQQD
--DAR0MTExMBOkETAPMQ0wCwYDVQQDDAR0MTEyMBOkETAPMQ0wCwYDVQQDDAR0MTEz
--MBOkETAPMQ0wCwYDVQQDDAR0MTE0MBOkETAPMQ0wCwYDVQQDDAR0MTE1MBOkETAP
--MQ0wCwYDVQQDDAR0MTE2MBOkETAPMQ0wCwYDVQQDDAR0MTE3MBOkETAPMQ0wCwYD
--VQQDDAR0MTE4MBOkETAPMQ0wCwYDVQQDDAR0MTE5MBOkETAPMQ0wCwYDVQQDDAR0
--MTIwMBOkETAPMQ0wCwYDVQQDDAR0MTIxMBOkETAPMQ0wCwYDVQQDDAR0MTIyMBOk
--ETAPMQ0wCwYDVQQDDAR0MTIzMBOkETAPMQ0wCwYDVQQDDAR0MTI0MBOkETAPMQ0w
--CwYDVQQDDAR0MTI1MBOkETAPMQ0wCwYDVQQDDAR0MTI2MBOkETAPMQ0wCwYDVQQD
--DAR0MTI3MBOkETAPMQ0wCwYDVQQDDAR0MTI4MBOkETAPMQ0wCwYDVQQDDAR0MTI5
--MBOkETAPMQ0wCwYDVQQDDAR0MTMwMBOkETAPMQ0wCwYDVQQDDAR0MTMxMBOkETAP
--MQ0wCwYDVQQDDAR0MTMyMBOkETAPMQ0wCwYDVQQDDAR0MTMzMBOkETAPMQ0wCwYD
--VQQDDAR0MTM0MBOkETAPMQ0wCwYDVQQDDAR0MTM1MBOkETAPMQ0wCwYDVQQDDAR0
--MTM2MBOkETAPMQ0wCwYDVQQDDAR0MTM3MBOkETAPMQ0wCwYDVQQDDAR0MTM4MBOk
--ETAPMQ0wCwYDVQQDDAR0MTM5MBOkETAPMQ0wCwYDVQQDDAR0MTQwMBOkETAPMQ0w
--CwYDVQQDDAR0MTQxMBOkETAPMQ0wCwYDVQQDDAR0MTQyMBOkETAPMQ0wCwYDVQQD
--DAR0MTQzMBOkETAPMQ0wCwYDVQQDDAR0MTQ0MBOkETAPMQ0wCwYDVQQDDAR0MTQ1
--MBOkETAPMQ0wCwYDVQQDDAR0MTQ2MBOkETAPMQ0wCwYDVQQDDAR0MTQ3MBOkETAP
--MQ0wCwYDVQQDDAR0MTQ4MBOkETAPMQ0wCwYDVQQDDAR0MTQ5MBOkETAPMQ0wCwYD
--VQQDDAR0MTUwMBOkETAPMQ0wCwYDVQQDDAR0MTUxMBOkETAPMQ0wCwYDVQQDDAR0
--MTUyMBOkETAPMQ0wCwYDVQQDDAR0MTUzMBOkETAPMQ0wCwYDVQQDDAR0MTU0MBOk
--ETAPMQ0wCwYDVQQDDAR0MTU1MBOkETAPMQ0wCwYDVQQDDAR0MTU2MBOkETAPMQ0w
--CwYDVQQDDAR0MTU3MBOkETAPMQ0wCwYDVQQDDAR0MTU4MBOkETAPMQ0wCwYDVQQD
--DAR0MTU5MBOkETAPMQ0wCwYDVQQDDAR0MTYwMBOkETAPMQ0wCwYDVQQDDAR0MTYx
--MBOkETAPMQ0wCwYDVQQDDAR0MTYyMBOkETAPMQ0wCwYDVQQDDAR0MTYzMBOkETAP
--MQ0wCwYDVQQDDAR0MTY0MBOkETAPMQ0wCwYDVQQDDAR0MTY1MBOkETAPMQ0wCwYD
--VQQDDAR0MTY2MBOkETAPMQ0wCwYDVQQDDAR0MTY3MBOkETAPMQ0wCwYDVQQDDAR0
--MTY4MBOkETAPMQ0wCwYDVQQDDAR0MTY5MBOkETAPMQ0wCwYDVQQDDAR0MTcwMBOk
--ETAPMQ0wCwYDVQQDDAR0MTcxMBOkETAPMQ0wCwYDVQQDDAR0MTcyMBOkETAPMQ0w
--CwYDVQQDDAR0MTczMBOkETAPMQ0wCwYDVQQDDAR0MTc0MBOkETAPMQ0wCwYDVQQD
--DAR0MTc1MBOkETAPMQ0wCwYDVQQDDAR0MTc2MBOkETAPMQ0wCwYDVQQDDAR0MTc3
--MBOkETAPMQ0wCwYDVQQDDAR0MTc4MBOkETAPMQ0wCwYDVQQDDAR0MTc5MBOkETAP
--MQ0wCwYDVQQDDAR0MTgwMBOkETAPMQ0wCwYDVQQDDAR0MTgxMBOkETAPMQ0wCwYD
--VQQDDAR0MTgyMBOkETAPMQ0wCwYDVQQDDAR0MTgzMBOkETAPMQ0wCwYDVQQDDAR0
--MTg0MBOkETAPMQ0wCwYDVQQDDAR0MTg1MBOkETAPMQ0wCwYDVQQDDAR0MTg2MBOk
--ETAPMQ0wCwYDVQQDDAR0MTg3MBOkETAPMQ0wCwYDVQQDDAR0MTg4MBOkETAPMQ0w
--CwYDVQQDDAR0MTg5MBOkETAPMQ0wCwYDVQQDDAR0MTkwMBOkETAPMQ0wCwYDVQQD
--DAR0MTkxMBOkETAPMQ0wCwYDVQQDDAR0MTkyMBOkETAPMQ0wCwYDVQQDDAR0MTkz
--MBOkETAPMQ0wCwYDVQQDDAR0MTk0MBOkETAPMQ0wCwYDVQQDDAR0MTk1MBOkETAP
--MQ0wCwYDVQQDDAR0MTk2MBOkETAPMQ0wCwYDVQQDDAR0MTk3MBOkETAPMQ0wCwYD
--VQQDDAR0MTk4MBOkETAPMQ0wCwYDVQQDDAR0MTk5MBOkETAPMQ0wCwYDVQQDDAR0
--MjAwMBOkETAPMQ0wCwYDVQQDDAR0MjAxMBOkETAPMQ0wCwYDVQQDDAR0MjAyMBOk
--ETAPMQ0wCwYDVQQDDAR0MjAzMBOkETAPMQ0wCwYDVQQDDAR0MjA0MBOkETAPMQ0w
--CwYDVQQDDAR0MjA1MBOkETAPMQ0wCwYDVQQDDAR0MjA2MBOkETAPMQ0wCwYDVQQD
--DAR0MjA3MBOkETAPMQ0wCwYDVQQDDAR0MjA4MBOkETAPMQ0wCwYDVQQDDAR0MjA5
--MBOkETAPMQ0wCwYDVQQDDAR0MjEwMBOkETAPMQ0wCwYDVQQDDAR0MjExMBOkETAP
--MQ0wCwYDVQQDDAR0MjEyMBOkETAPMQ0wCwYDVQQDDAR0MjEzMBOkETAPMQ0wCwYD
--VQQDDAR0MjE0MBOkETAPMQ0wCwYDVQQDDAR0MjE1MBOkETAPMQ0wCwYDVQQDDAR0
--MjE2MBOkETAPMQ0wCwYDVQQDDAR0MjE3MBOkETAPMQ0wCwYDVQQDDAR0MjE4MBOk
--ETAPMQ0wCwYDVQQDDAR0MjE5MBOkETAPMQ0wCwYDVQQDDAR0MjIwMBOkETAPMQ0w
--CwYDVQQDDAR0MjIxMBOkETAPMQ0wCwYDVQQDDAR0MjIyMBOkETAPMQ0wCwYDVQQD
--DAR0MjIzMBOkETAPMQ0wCwYDVQQDDAR0MjI0MBOkETAPMQ0wCwYDVQQDDAR0MjI1
--MBOkETAPMQ0wCwYDVQQDDAR0MjI2MBOkETAPMQ0wCwYDVQQDDAR0MjI3MBOkETAP
--MQ0wCwYDVQQDDAR0MjI4MBOkETAPMQ0wCwYDVQQDDAR0MjI5MBOkETAPMQ0wCwYD
--VQQDDAR0MjMwMBOkETAPMQ0wCwYDVQQDDAR0MjMxMBOkETAPMQ0wCwYDVQQDDAR0
--MjMyMBOkETAPMQ0wCwYDVQQDDAR0MjMzMBOkETAPMQ0wCwYDVQQDDAR0MjM0MBOk
--ETAPMQ0wCwYDVQQDDAR0MjM1MBOkETAPMQ0wCwYDVQQDDAR0MjM2MBOkETAPMQ0w
--CwYDVQQDDAR0MjM3MBOkETAPMQ0wCwYDVQQDDAR0MjM4MBOkETAPMQ0wCwYDVQQD
--DAR0MjM5MBOkETAPMQ0wCwYDVQQDDAR0MjQwMBOkETAPMQ0wCwYDVQQDDAR0MjQx
--MBOkETAPMQ0wCwYDVQQDDAR0MjQyMBOkETAPMQ0wCwYDVQQDDAR0MjQzMBOkETAP
--MQ0wCwYDVQQDDAR0MjQ0MBOkETAPMQ0wCwYDVQQDDAR0MjQ1MBOkETAPMQ0wCwYD
--VQQDDAR0MjQ2MBOkETAPMQ0wCwYDVQQDDAR0MjQ3MBOkETAPMQ0wCwYDVQQDDAR0
--MjQ4MBOkETAPMQ0wCwYDVQQDDAR0MjQ5MBOkETAPMQ0wCwYDVQQDDAR0MjUwMBOk
--ETAPMQ0wCwYDVQQDDAR0MjUxMBOkETAPMQ0wCwYDVQQDDAR0MjUyMBOkETAPMQ0w
--CwYDVQQDDAR0MjUzMBOkETAPMQ0wCwYDVQQDDAR0MjU0MBOkETAPMQ0wCwYDVQQD
--DAR0MjU1MBOkETAPMQ0wCwYDVQQDDAR0MjU2MBOkETAPMQ0wCwYDVQQDDAR0MjU3
--MBOkETAPMQ0wCwYDVQQDDAR0MjU4MBOkETAPMQ0wCwYDVQQDDAR0MjU5MBOkETAP
--MQ0wCwYDVQQDDAR0MjYwMBOkETAPMQ0wCwYDVQQDDAR0MjYxMBOkETAPMQ0wCwYD
--VQQDDAR0MjYyMBOkETAPMQ0wCwYDVQQDDAR0MjYzMBOkETAPMQ0wCwYDVQQDDAR0
--MjY0MBOkETAPMQ0wCwYDVQQDDAR0MjY1MBOkETAPMQ0wCwYDVQQDDAR0MjY2MBOk
--ETAPMQ0wCwYDVQQDDAR0MjY3MBOkETAPMQ0wCwYDVQQDDAR0MjY4MBOkETAPMQ0w
--CwYDVQQDDAR0MjY5MBOkETAPMQ0wCwYDVQQDDAR0MjcwMBOkETAPMQ0wCwYDVQQD
--DAR0MjcxMBOkETAPMQ0wCwYDVQQDDAR0MjcyMBOkETAPMQ0wCwYDVQQDDAR0Mjcz
--MBOkETAPMQ0wCwYDVQQDDAR0Mjc0MBOkETAPMQ0wCwYDVQQDDAR0Mjc1MBOkETAP
--MQ0wCwYDVQQDDAR0Mjc2MBOkETAPMQ0wCwYDVQQDDAR0Mjc3MBOkETAPMQ0wCwYD
--VQQDDAR0Mjc4MBOkETAPMQ0wCwYDVQQDDAR0Mjc5MBOkETAPMQ0wCwYDVQQDDAR0
--MjgwMBOkETAPMQ0wCwYDVQQDDAR0MjgxMBOkETAPMQ0wCwYDVQQDDAR0MjgyMBOk
--ETAPMQ0wCwYDVQQDDAR0MjgzMBOkETAPMQ0wCwYDVQQDDAR0Mjg0MBOkETAPMQ0w
--CwYDVQQDDAR0Mjg1MBOkETAPMQ0wCwYDVQQDDAR0Mjg2MBOkETAPMQ0wCwYDVQQD
--DAR0Mjg3MBOkETAPMQ0wCwYDVQQDDAR0Mjg4MBOkETAPMQ0wCwYDVQQDDAR0Mjg5
--MBOkETAPMQ0wCwYDVQQDDAR0MjkwMBOkETAPMQ0wCwYDVQQDDAR0MjkxMBOkETAP
--MQ0wCwYDVQQDDAR0MjkyMBOkETAPMQ0wCwYDVQQDDAR0MjkzMBOkETAPMQ0wCwYD
--VQQDDAR0Mjk0MBOkETAPMQ0wCwYDVQQDDAR0Mjk1MBOkETAPMQ0wCwYDVQQDDAR0
--Mjk2MBOkETAPMQ0wCwYDVQQDDAR0Mjk3MBOkETAPMQ0wCwYDVQQDDAR0Mjk4MBOk
--ETAPMQ0wCwYDVQQDDAR0Mjk5MBOkETAPMQ0wCwYDVQQDDAR0MzAwMBOkETAPMQ0w
--CwYDVQQDDAR0MzAxMBOkETAPMQ0wCwYDVQQDDAR0MzAyMBOkETAPMQ0wCwYDVQQD
--DAR0MzAzMBOkETAPMQ0wCwYDVQQDDAR0MzA0MBOkETAPMQ0wCwYDVQQDDAR0MzA1
--MBOkETAPMQ0wCwYDVQQDDAR0MzA2MBOkETAPMQ0wCwYDVQQDDAR0MzA3MBOkETAP
--MQ0wCwYDVQQDDAR0MzA4MBOkETAPMQ0wCwYDVQQDDAR0MzA5MBOkETAPMQ0wCwYD
--VQQDDAR0MzEwMBOkETAPMQ0wCwYDVQQDDAR0MzExMBOkETAPMQ0wCwYDVQQDDAR0
--MzEyMBOkETAPMQ0wCwYDVQQDDAR0MzEzMBOkETAPMQ0wCwYDVQQDDAR0MzE0MBOk
--ETAPMQ0wCwYDVQQDDAR0MzE1MBOkETAPMQ0wCwYDVQQDDAR0MzE2MBOkETAPMQ0w
--CwYDVQQDDAR0MzE3MBOkETAPMQ0wCwYDVQQDDAR0MzE4MBOkETAPMQ0wCwYDVQQD
--DAR0MzE5MBOkETAPMQ0wCwYDVQQDDAR0MzIwMBOkETAPMQ0wCwYDVQQDDAR0MzIx
--MBOkETAPMQ0wCwYDVQQDDAR0MzIyMBOkETAPMQ0wCwYDVQQDDAR0MzIzMBOkETAP
--MQ0wCwYDVQQDDAR0MzI0MBOkETAPMQ0wCwYDVQQDDAR0MzI1MBOkETAPMQ0wCwYD
--VQQDDAR0MzI2MBOkETAPMQ0wCwYDVQQDDAR0MzI3MBOkETAPMQ0wCwYDVQQDDAR0
--MzI4MBOkETAPMQ0wCwYDVQQDDAR0MzI5MBOkETAPMQ0wCwYDVQQDDAR0MzMwMBOk
--ETAPMQ0wCwYDVQQDDAR0MzMxMBOkETAPMQ0wCwYDVQQDDAR0MzMyMBOkETAPMQ0w
--CwYDVQQDDAR0MzMzMBOkETAPMQ0wCwYDVQQDDAR0MzM0MBOkETAPMQ0wCwYDVQQD
--DAR0MzM1MBOkETAPMQ0wCwYDVQQDDAR0MzM2MBOkETAPMQ0wCwYDVQQDDAR0MzM3
--MBOkETAPMQ0wCwYDVQQDDAR0MzM4MBOkETAPMQ0wCwYDVQQDDAR0MzM5MBOkETAP
--MQ0wCwYDVQQDDAR0MzQwMBOkETAPMQ0wCwYDVQQDDAR0MzQxMBOkETAPMQ0wCwYD
--VQQDDAR0MzQyMBOkETAPMQ0wCwYDVQQDDAR0MzQzMBOkETAPMQ0wCwYDVQQDDAR0
--MzQ0MBOkETAPMQ0wCwYDVQQDDAR0MzQ1MBOkETAPMQ0wCwYDVQQDDAR0MzQ2MBOk
--ETAPMQ0wCwYDVQQDDAR0MzQ3MBOkETAPMQ0wCwYDVQQDDAR0MzQ4MBOkETAPMQ0w
--CwYDVQQDDAR0MzQ5MBOkETAPMQ0wCwYDVQQDDAR0MzUwMBOkETAPMQ0wCwYDVQQD
--DAR0MzUxMBOkETAPMQ0wCwYDVQQDDAR0MzUyMBOkETAPMQ0wCwYDVQQDDAR0MzUz
--MBOkETAPMQ0wCwYDVQQDDAR0MzU0MBOkETAPMQ0wCwYDVQQDDAR0MzU1MBOkETAP
--MQ0wCwYDVQQDDAR0MzU2MBOkETAPMQ0wCwYDVQQDDAR0MzU3MBOkETAPMQ0wCwYD
--VQQDDAR0MzU4MBOkETAPMQ0wCwYDVQQDDAR0MzU5MBOkETAPMQ0wCwYDVQQDDAR0
--MzYwMBOkETAPMQ0wCwYDVQQDDAR0MzYxMBOkETAPMQ0wCwYDVQQDDAR0MzYyMBOk
--ETAPMQ0wCwYDVQQDDAR0MzYzMBOkETAPMQ0wCwYDVQQDDAR0MzY0MBOkETAPMQ0w
--CwYDVQQDDAR0MzY1MBOkETAPMQ0wCwYDVQQDDAR0MzY2MBOkETAPMQ0wCwYDVQQD
--DAR0MzY3MBOkETAPMQ0wCwYDVQQDDAR0MzY4MBOkETAPMQ0wCwYDVQQDDAR0MzY5
--MBOkETAPMQ0wCwYDVQQDDAR0MzcwMBOkETAPMQ0wCwYDVQQDDAR0MzcxMBOkETAP
--MQ0wCwYDVQQDDAR0MzcyMBOkETAPMQ0wCwYDVQQDDAR0MzczMBOkETAPMQ0wCwYD
--VQQDDAR0Mzc0MBOkETAPMQ0wCwYDVQQDDAR0Mzc1MBOkETAPMQ0wCwYDVQQDDAR0
--Mzc2MBOkETAPMQ0wCwYDVQQDDAR0Mzc3MBOkETAPMQ0wCwYDVQQDDAR0Mzc4MBOk
--ETAPMQ0wCwYDVQQDDAR0Mzc5MBOkETAPMQ0wCwYDVQQDDAR0MzgwMBOkETAPMQ0w
--CwYDVQQDDAR0MzgxMBOkETAPMQ0wCwYDVQQDDAR0MzgyMBOkETAPMQ0wCwYDVQQD
--DAR0MzgzMBOkETAPMQ0wCwYDVQQDDAR0Mzg0MBOkETAPMQ0wCwYDVQQDDAR0Mzg1
--MBOkETAPMQ0wCwYDVQQDDAR0Mzg2MBOkETAPMQ0wCwYDVQQDDAR0Mzg3MBOkETAP
--MQ0wCwYDVQQDDAR0Mzg4MBOkETAPMQ0wCwYDVQQDDAR0Mzg5MBOkETAPMQ0wCwYD
--VQQDDAR0MzkwMBOkETAPMQ0wCwYDVQQDDAR0MzkxMBOkETAPMQ0wCwYDVQQDDAR0
--MzkyMBOkETAPMQ0wCwYDVQQDDAR0MzkzMBOkETAPMQ0wCwYDVQQDDAR0Mzk0MBOk
--ETAPMQ0wCwYDVQQDDAR0Mzk1MBOkETAPMQ0wCwYDVQQDDAR0Mzk2MBOkETAPMQ0w
--CwYDVQQDDAR0Mzk3MBOkETAPMQ0wCwYDVQQDDAR0Mzk4MBOkETAPMQ0wCwYDVQQD
--DAR0Mzk5MBOkETAPMQ0wCwYDVQQDDAR0NDAwMBOkETAPMQ0wCwYDVQQDDAR0NDAx
--MBOkETAPMQ0wCwYDVQQDDAR0NDAyMBOkETAPMQ0wCwYDVQQDDAR0NDAzMBOkETAP
--MQ0wCwYDVQQDDAR0NDA0MBOkETAPMQ0wCwYDVQQDDAR0NDA1MBOkETAPMQ0wCwYD
--VQQDDAR0NDA2MBOkETAPMQ0wCwYDVQQDDAR0NDA3MBOkETAPMQ0wCwYDVQQDDAR0
--NDA4MBOkETAPMQ0wCwYDVQQDDAR0NDA5MBOkETAPMQ0wCwYDVQQDDAR0NDEwMBOk
--ETAPMQ0wCwYDVQQDDAR0NDExMBOkETAPMQ0wCwYDVQQDDAR0NDEyMBOkETAPMQ0w
--CwYDVQQDDAR0NDEzMBOkETAPMQ0wCwYDVQQDDAR0NDE0MBOkETAPMQ0wCwYDVQQD
--DAR0NDE1MBOkETAPMQ0wCwYDVQQDDAR0NDE2MBOkETAPMQ0wCwYDVQQDDAR0NDE3
--MBOkETAPMQ0wCwYDVQQDDAR0NDE4oYJKbjAJggd4MC50ZXN0MAmCB3gxLnRlc3Qw
--CYIHeDIudGVzdDAJggd4My50ZXN0MAmCB3g0LnRlc3QwCYIHeDUudGVzdDAJggd4
--Ni50ZXN0MAmCB3g3LnRlc3QwCYIHeDgudGVzdDAJggd4OS50ZXN0MAqCCHgxMC50
--ZXN0MAqCCHgxMS50ZXN0MAqCCHgxMi50ZXN0MAqCCHgxMy50ZXN0MAqCCHgxNC50
--ZXN0MAqCCHgxNS50ZXN0MAqCCHgxNi50ZXN0MAqCCHgxNy50ZXN0MAqCCHgxOC50
--ZXN0MAqCCHgxOS50ZXN0MAqCCHgyMC50ZXN0MAqCCHgyMS50ZXN0MAqCCHgyMi50
--ZXN0MAqCCHgyMy50ZXN0MAqCCHgyNC50ZXN0MAqCCHgyNS50ZXN0MAqCCHgyNi50
--ZXN0MAqCCHgyNy50ZXN0MAqCCHgyOC50ZXN0MAqCCHgyOS50ZXN0MAqCCHgzMC50
--ZXN0MAqCCHgzMS50ZXN0MAqCCHgzMi50ZXN0MAqCCHgzMy50ZXN0MAqCCHgzNC50
--ZXN0MAqCCHgzNS50ZXN0MAqCCHgzNi50ZXN0MAqCCHgzNy50ZXN0MAqCCHgzOC50
--ZXN0MAqCCHgzOS50ZXN0MAqCCHg0MC50ZXN0MAqCCHg0MS50ZXN0MAqCCHg0Mi50
--ZXN0MAqCCHg0My50ZXN0MAqCCHg0NC50ZXN0MAqCCHg0NS50ZXN0MAqCCHg0Ni50
--ZXN0MAqCCHg0Ny50ZXN0MAqCCHg0OC50ZXN0MAqCCHg0OS50ZXN0MAqCCHg1MC50
--ZXN0MAqCCHg1MS50ZXN0MAqCCHg1Mi50ZXN0MAqCCHg1My50ZXN0MAqCCHg1NC50
--ZXN0MAqCCHg1NS50ZXN0MAqCCHg1Ni50ZXN0MAqCCHg1Ny50ZXN0MAqCCHg1OC50
--ZXN0MAqCCHg1OS50ZXN0MAqCCHg2MC50ZXN0MAqCCHg2MS50ZXN0MAqCCHg2Mi50
--ZXN0MAqCCHg2My50ZXN0MAqCCHg2NC50ZXN0MAqCCHg2NS50ZXN0MAqCCHg2Ni50
--ZXN0MAqCCHg2Ny50ZXN0MAqCCHg2OC50ZXN0MAqCCHg2OS50ZXN0MAqCCHg3MC50
--ZXN0MAqCCHg3MS50ZXN0MAqCCHg3Mi50ZXN0MAqCCHg3My50ZXN0MAqCCHg3NC50
--ZXN0MAqCCHg3NS50ZXN0MAqCCHg3Ni50ZXN0MAqCCHg3Ny50ZXN0MAqCCHg3OC50
--ZXN0MAqCCHg3OS50ZXN0MAqCCHg4MC50ZXN0MAqCCHg4MS50ZXN0MAqCCHg4Mi50
--ZXN0MAqCCHg4My50ZXN0MAqCCHg4NC50ZXN0MAqCCHg4NS50ZXN0MAqCCHg4Ni50
--ZXN0MAqCCHg4Ny50ZXN0MAqCCHg4OC50ZXN0MAqCCHg4OS50ZXN0MAqCCHg5MC50
--ZXN0MAqCCHg5MS50ZXN0MAqCCHg5Mi50ZXN0MAqCCHg5My50ZXN0MAqCCHg5NC50
--ZXN0MAqCCHg5NS50ZXN0MAqCCHg5Ni50ZXN0MAqCCHg5Ny50ZXN0MAqCCHg5OC50
--ZXN0MAqCCHg5OS50ZXN0MAuCCXgxMDAudGVzdDALggl4MTAxLnRlc3QwC4IJeDEw
--Mi50ZXN0MAuCCXgxMDMudGVzdDALggl4MTA0LnRlc3QwC4IJeDEwNS50ZXN0MAuC
--CXgxMDYudGVzdDALggl4MTA3LnRlc3QwC4IJeDEwOC50ZXN0MAuCCXgxMDkudGVz
--dDALggl4MTEwLnRlc3QwC4IJeDExMS50ZXN0MAuCCXgxMTIudGVzdDALggl4MTEz
--LnRlc3QwC4IJeDExNC50ZXN0MAuCCXgxMTUudGVzdDALggl4MTE2LnRlc3QwC4IJ
--eDExNy50ZXN0MAuCCXgxMTgudGVzdDALggl4MTE5LnRlc3QwC4IJeDEyMC50ZXN0
--MAuCCXgxMjEudGVzdDALggl4MTIyLnRlc3QwC4IJeDEyMy50ZXN0MAuCCXgxMjQu
--dGVzdDALggl4MTI1LnRlc3QwC4IJeDEyNi50ZXN0MAuCCXgxMjcudGVzdDALggl4
--MTI4LnRlc3QwC4IJeDEyOS50ZXN0MAuCCXgxMzAudGVzdDALggl4MTMxLnRlc3Qw
--C4IJeDEzMi50ZXN0MAuCCXgxMzMudGVzdDALggl4MTM0LnRlc3QwC4IJeDEzNS50
--ZXN0MAuCCXgxMzYudGVzdDALggl4MTM3LnRlc3QwC4IJeDEzOC50ZXN0MAuCCXgx
--MzkudGVzdDALggl4MTQwLnRlc3QwC4IJeDE0MS50ZXN0MAuCCXgxNDIudGVzdDAL
--ggl4MTQzLnRlc3QwC4IJeDE0NC50ZXN0MAuCCXgxNDUudGVzdDALggl4MTQ2LnRl
--c3QwC4IJeDE0Ny50ZXN0MAuCCXgxNDgudGVzdDALggl4MTQ5LnRlc3QwC4IJeDE1
--MC50ZXN0MAuCCXgxNTEudGVzdDALggl4MTUyLnRlc3QwC4IJeDE1My50ZXN0MAuC
--CXgxNTQudGVzdDALggl4MTU1LnRlc3QwC4IJeDE1Ni50ZXN0MAuCCXgxNTcudGVz
--dDALggl4MTU4LnRlc3QwC4IJeDE1OS50ZXN0MAuCCXgxNjAudGVzdDALggl4MTYx
--LnRlc3QwC4IJeDE2Mi50ZXN0MAuCCXgxNjMudGVzdDALggl4MTY0LnRlc3QwC4IJ
--eDE2NS50ZXN0MAuCCXgxNjYudGVzdDALggl4MTY3LnRlc3QwC4IJeDE2OC50ZXN0
--MAuCCXgxNjkudGVzdDALggl4MTcwLnRlc3QwC4IJeDE3MS50ZXN0MAuCCXgxNzIu
--dGVzdDALggl4MTczLnRlc3QwC4IJeDE3NC50ZXN0MAuCCXgxNzUudGVzdDALggl4
--MTc2LnRlc3QwC4IJeDE3Ny50ZXN0MAuCCXgxNzgudGVzdDALggl4MTc5LnRlc3Qw
--C4IJeDE4MC50ZXN0MAuCCXgxODEudGVzdDALggl4MTgyLnRlc3QwC4IJeDE4My50
--ZXN0MAuCCXgxODQudGVzdDALggl4MTg1LnRlc3QwC4IJeDE4Ni50ZXN0MAuCCXgx
--ODcudGVzdDALggl4MTg4LnRlc3QwC4IJeDE4OS50ZXN0MAuCCXgxOTAudGVzdDAL
--ggl4MTkxLnRlc3QwC4IJeDE5Mi50ZXN0MAuCCXgxOTMudGVzdDALggl4MTk0LnRl
--c3QwC4IJeDE5NS50ZXN0MAuCCXgxOTYudGVzdDALggl4MTk3LnRlc3QwC4IJeDE5
--OC50ZXN0MAuCCXgxOTkudGVzdDALggl4MjAwLnRlc3QwC4IJeDIwMS50ZXN0MAuC
--CXgyMDIudGVzdDALggl4MjAzLnRlc3QwC4IJeDIwNC50ZXN0MAuCCXgyMDUudGVz
--dDALggl4MjA2LnRlc3QwC4IJeDIwNy50ZXN0MAuCCXgyMDgudGVzdDALggl4MjA5
--LnRlc3QwC4IJeDIxMC50ZXN0MAuCCXgyMTEudGVzdDALggl4MjEyLnRlc3QwC4IJ
--eDIxMy50ZXN0MAuCCXgyMTQudGVzdDALggl4MjE1LnRlc3QwC4IJeDIxNi50ZXN0
--MAuCCXgyMTcudGVzdDALggl4MjE4LnRlc3QwC4IJeDIxOS50ZXN0MAuCCXgyMjAu
--dGVzdDALggl4MjIxLnRlc3QwC4IJeDIyMi50ZXN0MAuCCXgyMjMudGVzdDALggl4
--MjI0LnRlc3QwC4IJeDIyNS50ZXN0MAuCCXgyMjYudGVzdDALggl4MjI3LnRlc3Qw
--C4IJeDIyOC50ZXN0MAuCCXgyMjkudGVzdDALggl4MjMwLnRlc3QwC4IJeDIzMS50
--ZXN0MAuCCXgyMzIudGVzdDALggl4MjMzLnRlc3QwC4IJeDIzNC50ZXN0MAuCCXgy
--MzUudGVzdDALggl4MjM2LnRlc3QwC4IJeDIzNy50ZXN0MAuCCXgyMzgudGVzdDAL
--ggl4MjM5LnRlc3QwC4IJeDI0MC50ZXN0MAuCCXgyNDEudGVzdDALggl4MjQyLnRl
--c3QwC4IJeDI0My50ZXN0MAuCCXgyNDQudGVzdDALggl4MjQ1LnRlc3QwC4IJeDI0
--Ni50ZXN0MAuCCXgyNDcudGVzdDALggl4MjQ4LnRlc3QwC4IJeDI0OS50ZXN0MAuC
--CXgyNTAudGVzdDALggl4MjUxLnRlc3QwC4IJeDI1Mi50ZXN0MAuCCXgyNTMudGVz
--dDALggl4MjU0LnRlc3QwC4IJeDI1NS50ZXN0MAuCCXgyNTYudGVzdDALggl4MjU3
--LnRlc3QwC4IJeDI1OC50ZXN0MAuCCXgyNTkudGVzdDALggl4MjYwLnRlc3QwC4IJ
--eDI2MS50ZXN0MAuCCXgyNjIudGVzdDALggl4MjYzLnRlc3QwC4IJeDI2NC50ZXN0
--MAuCCXgyNjUudGVzdDALggl4MjY2LnRlc3QwC4IJeDI2Ny50ZXN0MAuCCXgyNjgu
--dGVzdDALggl4MjY5LnRlc3QwC4IJeDI3MC50ZXN0MAuCCXgyNzEudGVzdDALggl4
--MjcyLnRlc3QwC4IJeDI3My50ZXN0MAuCCXgyNzQudGVzdDALggl4Mjc1LnRlc3Qw
--C4IJeDI3Ni50ZXN0MAuCCXgyNzcudGVzdDALggl4Mjc4LnRlc3QwC4IJeDI3OS50
--ZXN0MAuCCXgyODAudGVzdDALggl4MjgxLnRlc3QwC4IJeDI4Mi50ZXN0MAuCCXgy
--ODMudGVzdDALggl4Mjg0LnRlc3QwC4IJeDI4NS50ZXN0MAuCCXgyODYudGVzdDAL
--ggl4Mjg3LnRlc3QwC4IJeDI4OC50ZXN0MAuCCXgyODkudGVzdDALggl4MjkwLnRl
--c3QwC4IJeDI5MS50ZXN0MAuCCXgyOTIudGVzdDALggl4MjkzLnRlc3QwC4IJeDI5
--NC50ZXN0MAuCCXgyOTUudGVzdDALggl4Mjk2LnRlc3QwC4IJeDI5Ny50ZXN0MAuC
--CXgyOTgudGVzdDALggl4Mjk5LnRlc3QwC4IJeDMwMC50ZXN0MAuCCXgzMDEudGVz
--dDALggl4MzAyLnRlc3QwC4IJeDMwMy50ZXN0MAuCCXgzMDQudGVzdDALggl4MzA1
--LnRlc3QwC4IJeDMwNi50ZXN0MAuCCXgzMDcudGVzdDALggl4MzA4LnRlc3QwC4IJ
--eDMwOS50ZXN0MAuCCXgzMTAudGVzdDALggl4MzExLnRlc3QwC4IJeDMxMi50ZXN0
--MAuCCXgzMTMudGVzdDALggl4MzE0LnRlc3QwC4IJeDMxNS50ZXN0MAuCCXgzMTYu
--dGVzdDALggl4MzE3LnRlc3QwC4IJeDMxOC50ZXN0MAuCCXgzMTkudGVzdDALggl4
--MzIwLnRlc3QwC4IJeDMyMS50ZXN0MAuCCXgzMjIudGVzdDALggl4MzIzLnRlc3Qw
--C4IJeDMyNC50ZXN0MAuCCXgzMjUudGVzdDALggl4MzI2LnRlc3QwC4IJeDMyNy50
--ZXN0MAuCCXgzMjgudGVzdDALggl4MzI5LnRlc3QwC4IJeDMzMC50ZXN0MAuCCXgz
--MzEudGVzdDALggl4MzMyLnRlc3QwC4IJeDMzMy50ZXN0MAuCCXgzMzQudGVzdDAL
--ggl4MzM1LnRlc3QwC4IJeDMzNi50ZXN0MAuCCXgzMzcudGVzdDALggl4MzM4LnRl
--c3QwC4IJeDMzOS50ZXN0MAuCCXgzNDAudGVzdDALggl4MzQxLnRlc3QwC4IJeDM0
--Mi50ZXN0MAuCCXgzNDMudGVzdDALggl4MzQ0LnRlc3QwC4IJeDM0NS50ZXN0MAuC
--CXgzNDYudGVzdDALggl4MzQ3LnRlc3QwC4IJeDM0OC50ZXN0MAuCCXgzNDkudGVz
--dDALggl4MzUwLnRlc3QwC4IJeDM1MS50ZXN0MAuCCXgzNTIudGVzdDALggl4MzUz
--LnRlc3QwC4IJeDM1NC50ZXN0MAuCCXgzNTUudGVzdDALggl4MzU2LnRlc3QwC4IJ
--eDM1Ny50ZXN0MAuCCXgzNTgudGVzdDALggl4MzU5LnRlc3QwC4IJeDM2MC50ZXN0
--MAuCCXgzNjEudGVzdDALggl4MzYyLnRlc3QwC4IJeDM2My50ZXN0MAuCCXgzNjQu
--dGVzdDALggl4MzY1LnRlc3QwC4IJeDM2Ni50ZXN0MAuCCXgzNjcudGVzdDALggl4
--MzY4LnRlc3QwC4IJeDM2OS50ZXN0MAuCCXgzNzAudGVzdDALggl4MzcxLnRlc3Qw
--C4IJeDM3Mi50ZXN0MAuCCXgzNzMudGVzdDALggl4Mzc0LnRlc3QwC4IJeDM3NS50
--ZXN0MAuCCXgzNzYudGVzdDALggl4Mzc3LnRlc3QwC4IJeDM3OC50ZXN0MAuCCXgz
--NzkudGVzdDALggl4MzgwLnRlc3QwC4IJeDM4MS50ZXN0MAuCCXgzODIudGVzdDAL
--ggl4MzgzLnRlc3QwC4IJeDM4NC50ZXN0MAuCCXgzODUudGVzdDALggl4Mzg2LnRl
--c3QwC4IJeDM4Ny50ZXN0MAuCCXgzODgudGVzdDALggl4Mzg5LnRlc3QwC4IJeDM5
--MC50ZXN0MAuCCXgzOTEudGVzdDALggl4MzkyLnRlc3QwC4IJeDM5My50ZXN0MAuC
--CXgzOTQudGVzdDALggl4Mzk1LnRlc3QwC4IJeDM5Ni50ZXN0MAuCCXgzOTcudGVz
--dDALggl4Mzk4LnRlc3QwC4IJeDM5OS50ZXN0MAuCCXg0MDAudGVzdDALggl4NDAx
--LnRlc3QwC4IJeDQwMi50ZXN0MAuCCXg0MDMudGVzdDALggl4NDA0LnRlc3QwC4IJ
--eDQwNS50ZXN0MAuCCXg0MDYudGVzdDALggl4NDA3LnRlc3QwC4IJeDQwOC50ZXN0
--MAuCCXg0MDkudGVzdDALggl4NDEwLnRlc3QwC4IJeDQxMS50ZXN0MAuCCXg0MTIu
--dGVzdDALggl4NDEzLnRlc3QwC4IJeDQxNC50ZXN0MAuCCXg0MTUudGVzdDALggl4
--NDE2LnRlc3QwC4IJeDQxNy50ZXN0MAuCCXg0MTgudGVzdDAKhwgLAAAA/////zAK
--hwgLAAAB/////zAKhwgLAAAC/////zAKhwgLAAAD/////zAKhwgLAAAE/////zAK
--hwgLAAAF/////zAKhwgLAAAG/////zAKhwgLAAAH/////zAKhwgLAAAI/////zAK
--hwgLAAAJ/////zAKhwgLAAAK/////zAKhwgLAAAL/////zAKhwgLAAAM/////zAK
--hwgLAAAN/////zAKhwgLAAAO/////zAKhwgLAAAP/////zAKhwgLAAAQ/////zAK
--hwgLAAAR/////zAKhwgLAAAS/////zAKhwgLAAAT/////zAKhwgLAAAU/////zAK
--hwgLAAAV/////zAKhwgLAAAW/////zAKhwgLAAAX/////zAKhwgLAAAY/////zAK
--hwgLAAAZ/////zAKhwgLAAAa/////zAKhwgLAAAb/////zAKhwgLAAAc/////zAK
--hwgLAAAd/////zAKhwgLAAAe/////zAKhwgLAAAf/////zAKhwgLAAAg/////zAK
--hwgLAAAh/////zAKhwgLAAAi/////zAKhwgLAAAj/////zAKhwgLAAAk/////zAK
--hwgLAAAl/////zAKhwgLAAAm/////zAKhwgLAAAn/////zAKhwgLAAAo/////zAK
--hwgLAAAp/////zAKhwgLAAAq/////zAKhwgLAAAr/////zAKhwgLAAAs/////zAK
--hwgLAAAt/////zAKhwgLAAAu/////zAKhwgLAAAv/////zAKhwgLAAAw/////zAK
--hwgLAAAx/////zAKhwgLAAAy/////zAKhwgLAAAz/////zAKhwgLAAA0/////zAK
--hwgLAAA1/////zAKhwgLAAA2/////zAKhwgLAAA3/////zAKhwgLAAA4/////zAK
--hwgLAAA5/////zAKhwgLAAA6/////zAKhwgLAAA7/////zAKhwgLAAA8/////zAK
--hwgLAAA9/////zAKhwgLAAA+/////zAKhwgLAAA//////zAKhwgLAABA/////zAK
--hwgLAABB/////zAKhwgLAABC/////zAKhwgLAABD/////zAKhwgLAABE/////zAK
--hwgLAABF/////zAKhwgLAABG/////zAKhwgLAABH/////zAKhwgLAABI/////zAK
--hwgLAABJ/////zAKhwgLAABK/////zAKhwgLAABL/////zAKhwgLAABM/////zAK
--hwgLAABN/////zAKhwgLAABO/////zAKhwgLAABP/////zAKhwgLAABQ/////zAK
--hwgLAABR/////zAKhwgLAABS/////zAKhwgLAABT/////zAKhwgLAABU/////zAK
--hwgLAABV/////zAKhwgLAABW/////zAKhwgLAABX/////zAKhwgLAABY/////zAK
--hwgLAABZ/////zAKhwgLAABa/////zAKhwgLAABb/////zAKhwgLAABc/////zAK
--hwgLAABd/////zAKhwgLAABe/////zAKhwgLAABf/////zAKhwgLAABg/////zAK
--hwgLAABh/////zAKhwgLAABi/////zAKhwgLAABj/////zAKhwgLAABk/////zAK
--hwgLAABl/////zAKhwgLAABm/////zAKhwgLAABn/////zAKhwgLAABo/////zAK
--hwgLAABp/////zAKhwgLAABq/////zAKhwgLAABr/////zAKhwgLAABs/////zAK
--hwgLAABt/////zAKhwgLAABu/////zAKhwgLAABv/////zAKhwgLAABw/////zAK
--hwgLAABx/////zAKhwgLAABy/////zAKhwgLAABz/////zAKhwgLAAB0/////zAK
--hwgLAAB1/////zAKhwgLAAB2/////zAKhwgLAAB3/////zAKhwgLAAB4/////zAK
--hwgLAAB5/////zAKhwgLAAB6/////zAKhwgLAAB7/////zAKhwgLAAB8/////zAK
--hwgLAAB9/////zAKhwgLAAB+/////zAKhwgLAAB//////zAKhwgLAACA/////zAK
--hwgLAACB/////zAKhwgLAACC/////zAKhwgLAACD/////zAKhwgLAACE/////zAK
--hwgLAACF/////zAKhwgLAACG/////zAKhwgLAACH/////zAKhwgLAACI/////zAK
--hwgLAACJ/////zAKhwgLAACK/////zAKhwgLAACL/////zAKhwgLAACM/////zAK
--hwgLAACN/////zAKhwgLAACO/////zAKhwgLAACP/////zAKhwgLAACQ/////zAK
--hwgLAACR/////zAKhwgLAACS/////zAKhwgLAACT/////zAKhwgLAACU/////zAK
--hwgLAACV/////zAKhwgLAACW/////zAKhwgLAACX/////zAKhwgLAACY/////zAK
--hwgLAACZ/////zAKhwgLAACa/////zAKhwgLAACb/////zAKhwgLAACc/////zAK
--hwgLAACd/////zAKhwgLAACe/////zAKhwgLAACf/////zAKhwgLAACg/////zAK
--hwgLAACh/////zAKhwgLAACi/////zAKhwgLAACj/////zAKhwgLAACk/////zAK
--hwgLAACl/////zAKhwgLAACm/////zAKhwgLAACn/////zAKhwgLAACo/////zAK
--hwgLAACp/////zAKhwgLAACq/////zAKhwgLAACr/////zAKhwgLAACs/////zAK
--hwgLAACt/////zAKhwgLAACu/////zAKhwgLAACv/////zAKhwgLAACw/////zAK
--hwgLAACx/////zAKhwgLAACy/////zAKhwgLAACz/////zAKhwgLAAC0/////zAK
--hwgLAAC1/////zAKhwgLAAC2/////zAKhwgLAAC3/////zAKhwgLAAC4/////zAK
--hwgLAAC5/////zAKhwgLAAC6/////zAKhwgLAAC7/////zAKhwgLAAC8/////zAK
--hwgLAAC9/////zAKhwgLAAC+/////zAKhwgLAAC//////zAKhwgLAADA/////zAK
--hwgLAADB/////zAKhwgLAADC/////zAKhwgLAADD/////zAKhwgLAADE/////zAK
--hwgLAADF/////zAKhwgLAADG/////zAKhwgLAADH/////zAKhwgLAADI/////zAK
--hwgLAADJ/////zAKhwgLAADK/////zAKhwgLAADL/////zAKhwgLAADM/////zAK
--hwgLAADN/////zAKhwgLAADO/////zAKhwgLAADP/////zAKhwgLAADQ/////zAK
--hwgLAADR/////zAKhwgLAADS/////zAKhwgLAADT/////zAKhwgLAADU/////zAK
--hwgLAADV/////zAKhwgLAADW/////zAKhwgLAADX/////zAKhwgLAADY/////zAK
--hwgLAADZ/////zAKhwgLAADa/////zAKhwgLAADb/////zAKhwgLAADc/////zAK
--hwgLAADd/////zAKhwgLAADe/////zAKhwgLAADf/////zAKhwgLAADg/////zAK
--hwgLAADh/////zAKhwgLAADi/////zAKhwgLAADj/////zAKhwgLAADk/////zAK
--hwgLAADl/////zAKhwgLAADm/////zAKhwgLAADn/////zAKhwgLAADo/////zAK
--hwgLAADp/////zAKhwgLAADq/////zAKhwgLAADr/////zAKhwgLAADs/////zAK
--hwgLAADt/////zAKhwgLAADu/////zAKhwgLAADv/////zAKhwgLAADw/////zAK
--hwgLAADx/////zAKhwgLAADy/////zAKhwgLAADz/////zAKhwgLAAD0/////zAK
--hwgLAAD1/////zAKhwgLAAD2/////zAKhwgLAAD3/////zAKhwgLAAD4/////zAK
--hwgLAAD5/////zAKhwgLAAD6/////zAKhwgLAAD7/////zAKhwgLAAD8/////zAK
--hwgLAAD9/////zAKhwgLAAD+/////zAKhwgLAAD//////zAKhwgLAAEA/////zAK
--hwgLAAEB/////zAKhwgLAAEC/////zAKhwgLAAED/////zAKhwgLAAEE/////zAK
--hwgLAAEF/////zAKhwgLAAEG/////zAKhwgLAAEH/////zAKhwgLAAEI/////zAK
--hwgLAAEJ/////zAKhwgLAAEK/////zAKhwgLAAEL/////zAKhwgLAAEM/////zAK
--hwgLAAEN/////zAKhwgLAAEO/////zAKhwgLAAEP/////zAKhwgLAAEQ/////zAK
--hwgLAAER/////zAKhwgLAAES/////zAKhwgLAAET/////zAKhwgLAAEU/////zAK
--hwgLAAEV/////zAKhwgLAAEW/////zAKhwgLAAEX/////zAKhwgLAAEY/////zAK
--hwgLAAEZ/////zAKhwgLAAEa/////zAKhwgLAAEb/////zAKhwgLAAEc/////zAK
--hwgLAAEd/////zAKhwgLAAEe/////zAKhwgLAAEf/////zAKhwgLAAEg/////zAK
--hwgLAAEh/////zAKhwgLAAEi/////zAKhwgLAAEj/////zAKhwgLAAEk/////zAK
--hwgLAAEl/////zAKhwgLAAEm/////zAKhwgLAAEn/////zAKhwgLAAEo/////zAK
--hwgLAAEp/////zAKhwgLAAEq/////zAKhwgLAAEr/////zAKhwgLAAEs/////zAK
--hwgLAAEt/////zAKhwgLAAEu/////zAKhwgLAAEv/////zAKhwgLAAEw/////zAK
--hwgLAAEx/////zAKhwgLAAEy/////zAKhwgLAAEz/////zAKhwgLAAE0/////zAK
--hwgLAAE1/////zAKhwgLAAE2/////zAKhwgLAAE3/////zAKhwgLAAE4/////zAK
--hwgLAAE5/////zAKhwgLAAE6/////zAKhwgLAAE7/////zAKhwgLAAE8/////zAK
--hwgLAAE9/////zAKhwgLAAE+/////zAKhwgLAAE//////zAKhwgLAAFA/////zAK
--hwgLAAFB/////zAKhwgLAAFC/////zAKhwgLAAFD/////zAKhwgLAAFE/////zAK
--hwgLAAFF/////zAKhwgLAAFG/////zAKhwgLAAFH/////zAKhwgLAAFI/////zAK
--hwgLAAFJ/////zAKhwgLAAFK/////zAKhwgLAAFL/////zAKhwgLAAFM/////zAK
--hwgLAAFN/////zAKhwgLAAFO/////zAKhwgLAAFP/////zAKhwgLAAFQ/////zAK
--hwgLAAFR/////zAKhwgLAAFS/////zAKhwgLAAFT/////zAKhwgLAAFU/////zAK
--hwgLAAFV/////zAKhwgLAAFW/////zAKhwgLAAFX/////zAKhwgLAAFY/////zAK
--hwgLAAFZ/////zAKhwgLAAFa/////zAKhwgLAAFb/////zAKhwgLAAFc/////zAK
--hwgLAAFd/////zAKhwgLAAFe/////zAKhwgLAAFf/////zAKhwgLAAFg/////zAK
--hwgLAAFh/////zAKhwgLAAFi/////zAKhwgLAAFj/////zAKhwgLAAFk/////zAK
--hwgLAAFl/////zAKhwgLAAFm/////zAKhwgLAAFn/////zAKhwgLAAFo/////zAK
--hwgLAAFp/////zAKhwgLAAFq/////zAKhwgLAAFr/////zAKhwgLAAFs/////zAK
--hwgLAAFt/////zAKhwgLAAFu/////zAKhwgLAAFv/////zAKhwgLAAFw/////zAK
--hwgLAAFx/////zAKhwgLAAFy/////zAKhwgLAAFz/////zAKhwgLAAF0/////zAK
--hwgLAAF1/////zAKhwgLAAF2/////zAKhwgLAAF3/////zAKhwgLAAF4/////zAK
--hwgLAAF5/////zAKhwgLAAF6/////zAKhwgLAAF7/////zAKhwgLAAF8/////zAK
--hwgLAAF9/////zAKhwgLAAF+/////zAKhwgLAAF//////zAKhwgLAAGA/////zAK
--hwgLAAGB/////zAKhwgLAAGC/////zAKhwgLAAGD/////zAKhwgLAAGE/////zAK
--hwgLAAGF/////zAKhwgLAAGG/////zAKhwgLAAGH/////zAKhwgLAAGI/////zAK
--hwgLAAGJ/////zAKhwgLAAGK/////zAKhwgLAAGL/////zAKhwgLAAGM/////zAK
--hwgLAAGN/////zAKhwgLAAGO/////zAKhwgLAAGP/////zAKhwgLAAGQ/////zAK
--hwgLAAGR/////zAKhwgLAAGS/////zAKhwgLAAGT/////zAKhwgLAAGU/////zAK
--hwgLAAGV/////zAKhwgLAAGW/////zAKhwgLAAGX/////zAKhwgLAAGY/////zAK
--hwgLAAGZ/////zAKhwgLAAGa/////zAKhwgLAAGb/////zAKhwgLAAGc/////zAK
--hwgLAAGd/////zAKhwgLAAGe/////zAKhwgLAAGf/////zAKhwgLAAGg/////zAK
--hwgLAAGh/////zAKhwgLAAGi/////zARpA8wDTELMAkGA1UEAwwCeDAwEaQPMA0x
--CzAJBgNVBAMMAngxMBGkDzANMQswCQYDVQQDDAJ4MjARpA8wDTELMAkGA1UEAwwC
--eDMwEaQPMA0xCzAJBgNVBAMMAng0MBGkDzANMQswCQYDVQQDDAJ4NTARpA8wDTEL
--MAkGA1UEAwwCeDYwEaQPMA0xCzAJBgNVBAMMAng3MBGkDzANMQswCQYDVQQDDAJ4
--ODARpA8wDTELMAkGA1UEAwwCeDkwEqQQMA4xDDAKBgNVBAMMA3gxMDASpBAwDjEM
--MAoGA1UEAwwDeDExMBKkEDAOMQwwCgYDVQQDDAN4MTIwEqQQMA4xDDAKBgNVBAMM
--A3gxMzASpBAwDjEMMAoGA1UEAwwDeDE0MBKkEDAOMQwwCgYDVQQDDAN4MTUwEqQQ
--MA4xDDAKBgNVBAMMA3gxNjASpBAwDjEMMAoGA1UEAwwDeDE3MBKkEDAOMQwwCgYD
--VQQDDAN4MTgwEqQQMA4xDDAKBgNVBAMMA3gxOTASpBAwDjEMMAoGA1UEAwwDeDIw
--MBKkEDAOMQwwCgYDVQQDDAN4MjEwEqQQMA4xDDAKBgNVBAMMA3gyMjASpBAwDjEM
--MAoGA1UEAwwDeDIzMBKkEDAOMQwwCgYDVQQDDAN4MjQwEqQQMA4xDDAKBgNVBAMM
--A3gyNTASpBAwDjEMMAoGA1UEAwwDeDI2MBKkEDAOMQwwCgYDVQQDDAN4MjcwEqQQ
--MA4xDDAKBgNVBAMMA3gyODASpBAwDjEMMAoGA1UEAwwDeDI5MBKkEDAOMQwwCgYD
--VQQDDAN4MzAwEqQQMA4xDDAKBgNVBAMMA3gzMTASpBAwDjEMMAoGA1UEAwwDeDMy
--MBKkEDAOMQwwCgYDVQQDDAN4MzMwEqQQMA4xDDAKBgNVBAMMA3gzNDASpBAwDjEM
--MAoGA1UEAwwDeDM1MBKkEDAOMQwwCgYDVQQDDAN4MzYwEqQQMA4xDDAKBgNVBAMM
--A3gzNzASpBAwDjEMMAoGA1UEAwwDeDM4MBKkEDAOMQwwCgYDVQQDDAN4MzkwEqQQ
--MA4xDDAKBgNVBAMMA3g0MDASpBAwDjEMMAoGA1UEAwwDeDQxMBKkEDAOMQwwCgYD
--VQQDDAN4NDIwEqQQMA4xDDAKBgNVBAMMA3g0MzASpBAwDjEMMAoGA1UEAwwDeDQ0
--MBKkEDAOMQwwCgYDVQQDDAN4NDUwEqQQMA4xDDAKBgNVBAMMA3g0NjASpBAwDjEM
--MAoGA1UEAwwDeDQ3MBKkEDAOMQwwCgYDVQQDDAN4NDgwEqQQMA4xDDAKBgNVBAMM
--A3g0OTASpBAwDjEMMAoGA1UEAwwDeDUwMBKkEDAOMQwwCgYDVQQDDAN4NTEwEqQQ
--MA4xDDAKBgNVBAMMA3g1MjASpBAwDjEMMAoGA1UEAwwDeDUzMBKkEDAOMQwwCgYD
--VQQDDAN4NTQwEqQQMA4xDDAKBgNVBAMMA3g1NTASpBAwDjEMMAoGA1UEAwwDeDU2
--MBKkEDAOMQwwCgYDVQQDDAN4NTcwEqQQMA4xDDAKBgNVBAMMA3g1ODASpBAwDjEM
--MAoGA1UEAwwDeDU5MBKkEDAOMQwwCgYDVQQDDAN4NjAwEqQQMA4xDDAKBgNVBAMM
--A3g2MTASpBAwDjEMMAoGA1UEAwwDeDYyMBKkEDAOMQwwCgYDVQQDDAN4NjMwEqQQ
--MA4xDDAKBgNVBAMMA3g2NDASpBAwDjEMMAoGA1UEAwwDeDY1MBKkEDAOMQwwCgYD
--VQQDDAN4NjYwEqQQMA4xDDAKBgNVBAMMA3g2NzASpBAwDjEMMAoGA1UEAwwDeDY4
--MBKkEDAOMQwwCgYDVQQDDAN4NjkwEqQQMA4xDDAKBgNVBAMMA3g3MDASpBAwDjEM
--MAoGA1UEAwwDeDcxMBKkEDAOMQwwCgYDVQQDDAN4NzIwEqQQMA4xDDAKBgNVBAMM
--A3g3MzASpBAwDjEMMAoGA1UEAwwDeDc0MBKkEDAOMQwwCgYDVQQDDAN4NzUwEqQQ
--MA4xDDAKBgNVBAMMA3g3NjASpBAwDjEMMAoGA1UEAwwDeDc3MBKkEDAOMQwwCgYD
--VQQDDAN4NzgwEqQQMA4xDDAKBgNVBAMMA3g3OTASpBAwDjEMMAoGA1UEAwwDeDgw
--MBKkEDAOMQwwCgYDVQQDDAN4ODEwEqQQMA4xDDAKBgNVBAMMA3g4MjASpBAwDjEM
--MAoGA1UEAwwDeDgzMBKkEDAOMQwwCgYDVQQDDAN4ODQwEqQQMA4xDDAKBgNVBAMM
--A3g4NTASpBAwDjEMMAoGA1UEAwwDeDg2MBKkEDAOMQwwCgYDVQQDDAN4ODcwEqQQ
--MA4xDDAKBgNVBAMMA3g4ODASpBAwDjEMMAoGA1UEAwwDeDg5MBKkEDAOMQwwCgYD
--VQQDDAN4OTAwEqQQMA4xDDAKBgNVBAMMA3g5MTASpBAwDjEMMAoGA1UEAwwDeDky
--MBKkEDAOMQwwCgYDVQQDDAN4OTMwEqQQMA4xDDAKBgNVBAMMA3g5NDASpBAwDjEM
--MAoGA1UEAwwDeDk1MBKkEDAOMQwwCgYDVQQDDAN4OTYwEqQQMA4xDDAKBgNVBAMM
--A3g5NzASpBAwDjEMMAoGA1UEAwwDeDk4MBKkEDAOMQwwCgYDVQQDDAN4OTkwE6QR
--MA8xDTALBgNVBAMMBHgxMDAwE6QRMA8xDTALBgNVBAMMBHgxMDEwE6QRMA8xDTAL
--BgNVBAMMBHgxMDIwE6QRMA8xDTALBgNVBAMMBHgxMDMwE6QRMA8xDTALBgNVBAMM
--BHgxMDQwE6QRMA8xDTALBgNVBAMMBHgxMDUwE6QRMA8xDTALBgNVBAMMBHgxMDYw
--E6QRMA8xDTALBgNVBAMMBHgxMDcwE6QRMA8xDTALBgNVBAMMBHgxMDgwE6QRMA8x
--DTALBgNVBAMMBHgxMDkwE6QRMA8xDTALBgNVBAMMBHgxMTAwE6QRMA8xDTALBgNV
--BAMMBHgxMTEwE6QRMA8xDTALBgNVBAMMBHgxMTIwE6QRMA8xDTALBgNVBAMMBHgx
--MTMwE6QRMA8xDTALBgNVBAMMBHgxMTQwE6QRMA8xDTALBgNVBAMMBHgxMTUwE6QR
--MA8xDTALBgNVBAMMBHgxMTYwE6QRMA8xDTALBgNVBAMMBHgxMTcwE6QRMA8xDTAL
--BgNVBAMMBHgxMTgwE6QRMA8xDTALBgNVBAMMBHgxMTkwE6QRMA8xDTALBgNVBAMM
--BHgxMjAwE6QRMA8xDTALBgNVBAMMBHgxMjEwE6QRMA8xDTALBgNVBAMMBHgxMjIw
--E6QRMA8xDTALBgNVBAMMBHgxMjMwE6QRMA8xDTALBgNVBAMMBHgxMjQwE6QRMA8x
--DTALBgNVBAMMBHgxMjUwE6QRMA8xDTALBgNVBAMMBHgxMjYwE6QRMA8xDTALBgNV
--BAMMBHgxMjcwE6QRMA8xDTALBgNVBAMMBHgxMjgwE6QRMA8xDTALBgNVBAMMBHgx
--MjkwE6QRMA8xDTALBgNVBAMMBHgxMzAwE6QRMA8xDTALBgNVBAMMBHgxMzEwE6QR
--MA8xDTALBgNVBAMMBHgxMzIwE6QRMA8xDTALBgNVBAMMBHgxMzMwE6QRMA8xDTAL
--BgNVBAMMBHgxMzQwE6QRMA8xDTALBgNVBAMMBHgxMzUwE6QRMA8xDTALBgNVBAMM
--BHgxMzYwE6QRMA8xDTALBgNVBAMMBHgxMzcwE6QRMA8xDTALBgNVBAMMBHgxMzgw
--E6QRMA8xDTALBgNVBAMMBHgxMzkwE6QRMA8xDTALBgNVBAMMBHgxNDAwE6QRMA8x
--DTALBgNVBAMMBHgxNDEwE6QRMA8xDTALBgNVBAMMBHgxNDIwE6QRMA8xDTALBgNV
--BAMMBHgxNDMwE6QRMA8xDTALBgNVBAMMBHgxNDQwE6QRMA8xDTALBgNVBAMMBHgx
--NDUwE6QRMA8xDTALBgNVBAMMBHgxNDYwE6QRMA8xDTALBgNVBAMMBHgxNDcwE6QR
--MA8xDTALBgNVBAMMBHgxNDgwE6QRMA8xDTALBgNVBAMMBHgxNDkwE6QRMA8xDTAL
--BgNVBAMMBHgxNTAwE6QRMA8xDTALBgNVBAMMBHgxNTEwE6QRMA8xDTALBgNVBAMM
--BHgxNTIwE6QRMA8xDTALBgNVBAMMBHgxNTMwE6QRMA8xDTALBgNVBAMMBHgxNTQw
--E6QRMA8xDTALBgNVBAMMBHgxNTUwE6QRMA8xDTALBgNVBAMMBHgxNTYwE6QRMA8x
--DTALBgNVBAMMBHgxNTcwE6QRMA8xDTALBgNVBAMMBHgxNTgwE6QRMA8xDTALBgNV
--BAMMBHgxNTkwE6QRMA8xDTALBgNVBAMMBHgxNjAwE6QRMA8xDTALBgNVBAMMBHgx
--NjEwE6QRMA8xDTALBgNVBAMMBHgxNjIwE6QRMA8xDTALBgNVBAMMBHgxNjMwE6QR
--MA8xDTALBgNVBAMMBHgxNjQwE6QRMA8xDTALBgNVBAMMBHgxNjUwE6QRMA8xDTAL
--BgNVBAMMBHgxNjYwE6QRMA8xDTALBgNVBAMMBHgxNjcwE6QRMA8xDTALBgNVBAMM
--BHgxNjgwE6QRMA8xDTALBgNVBAMMBHgxNjkwE6QRMA8xDTALBgNVBAMMBHgxNzAw
--E6QRMA8xDTALBgNVBAMMBHgxNzEwE6QRMA8xDTALBgNVBAMMBHgxNzIwE6QRMA8x
--DTALBgNVBAMMBHgxNzMwE6QRMA8xDTALBgNVBAMMBHgxNzQwE6QRMA8xDTALBgNV
--BAMMBHgxNzUwE6QRMA8xDTALBgNVBAMMBHgxNzYwE6QRMA8xDTALBgNVBAMMBHgx
--NzcwE6QRMA8xDTALBgNVBAMMBHgxNzgwE6QRMA8xDTALBgNVBAMMBHgxNzkwE6QR
--MA8xDTALBgNVBAMMBHgxODAwE6QRMA8xDTALBgNVBAMMBHgxODEwE6QRMA8xDTAL
--BgNVBAMMBHgxODIwE6QRMA8xDTALBgNVBAMMBHgxODMwE6QRMA8xDTALBgNVBAMM
--BHgxODQwE6QRMA8xDTALBgNVBAMMBHgxODUwE6QRMA8xDTALBgNVBAMMBHgxODYw
--E6QRMA8xDTALBgNVBAMMBHgxODcwE6QRMA8xDTALBgNVBAMMBHgxODgwE6QRMA8x
--DTALBgNVBAMMBHgxODkwE6QRMA8xDTALBgNVBAMMBHgxOTAwE6QRMA8xDTALBgNV
--BAMMBHgxOTEwE6QRMA8xDTALBgNVBAMMBHgxOTIwE6QRMA8xDTALBgNVBAMMBHgx
--OTMwE6QRMA8xDTALBgNVBAMMBHgxOTQwE6QRMA8xDTALBgNVBAMMBHgxOTUwE6QR
--MA8xDTALBgNVBAMMBHgxOTYwE6QRMA8xDTALBgNVBAMMBHgxOTcwE6QRMA8xDTAL
--BgNVBAMMBHgxOTgwE6QRMA8xDTALBgNVBAMMBHgxOTkwE6QRMA8xDTALBgNVBAMM
--BHgyMDAwE6QRMA8xDTALBgNVBAMMBHgyMDEwE6QRMA8xDTALBgNVBAMMBHgyMDIw
--E6QRMA8xDTALBgNVBAMMBHgyMDMwE6QRMA8xDTALBgNVBAMMBHgyMDQwE6QRMA8x
--DTALBgNVBAMMBHgyMDUwE6QRMA8xDTALBgNVBAMMBHgyMDYwE6QRMA8xDTALBgNV
--BAMMBHgyMDcwE6QRMA8xDTALBgNVBAMMBHgyMDgwE6QRMA8xDTALBgNVBAMMBHgy
--MDkwE6QRMA8xDTALBgNVBAMMBHgyMTAwE6QRMA8xDTALBgNVBAMMBHgyMTEwE6QR
--MA8xDTALBgNVBAMMBHgyMTIwE6QRMA8xDTALBgNVBAMMBHgyMTMwE6QRMA8xDTAL
--BgNVBAMMBHgyMTQwE6QRMA8xDTALBgNVBAMMBHgyMTUwE6QRMA8xDTALBgNVBAMM
--BHgyMTYwE6QRMA8xDTALBgNVBAMMBHgyMTcwE6QRMA8xDTALBgNVBAMMBHgyMTgw
--E6QRMA8xDTALBgNVBAMMBHgyMTkwE6QRMA8xDTALBgNVBAMMBHgyMjAwE6QRMA8x
--DTALBgNVBAMMBHgyMjEwE6QRMA8xDTALBgNVBAMMBHgyMjIwE6QRMA8xDTALBgNV
--BAMMBHgyMjMwE6QRMA8xDTALBgNVBAMMBHgyMjQwE6QRMA8xDTALBgNVBAMMBHgy
--MjUwE6QRMA8xDTALBgNVBAMMBHgyMjYwE6QRMA8xDTALBgNVBAMMBHgyMjcwE6QR
--MA8xDTALBgNVBAMMBHgyMjgwE6QRMA8xDTALBgNVBAMMBHgyMjkwE6QRMA8xDTAL
--BgNVBAMMBHgyMzAwE6QRMA8xDTALBgNVBAMMBHgyMzEwE6QRMA8xDTALBgNVBAMM
--BHgyMzIwE6QRMA8xDTALBgNVBAMMBHgyMzMwE6QRMA8xDTALBgNVBAMMBHgyMzQw
--E6QRMA8xDTALBgNVBAMMBHgyMzUwE6QRMA8xDTALBgNVBAMMBHgyMzYwE6QRMA8x
--DTALBgNVBAMMBHgyMzcwE6QRMA8xDTALBgNVBAMMBHgyMzgwE6QRMA8xDTALBgNV
--BAMMBHgyMzkwE6QRMA8xDTALBgNVBAMMBHgyNDAwE6QRMA8xDTALBgNVBAMMBHgy
--NDEwE6QRMA8xDTALBgNVBAMMBHgyNDIwE6QRMA8xDTALBgNVBAMMBHgyNDMwE6QR
--MA8xDTALBgNVBAMMBHgyNDQwE6QRMA8xDTALBgNVBAMMBHgyNDUwE6QRMA8xDTAL
--BgNVBAMMBHgyNDYwE6QRMA8xDTALBgNVBAMMBHgyNDcwE6QRMA8xDTALBgNVBAMM
--BHgyNDgwE6QRMA8xDTALBgNVBAMMBHgyNDkwE6QRMA8xDTALBgNVBAMMBHgyNTAw
--E6QRMA8xDTALBgNVBAMMBHgyNTEwE6QRMA8xDTALBgNVBAMMBHgyNTIwE6QRMA8x
--DTALBgNVBAMMBHgyNTMwE6QRMA8xDTALBgNVBAMMBHgyNTQwE6QRMA8xDTALBgNV
--BAMMBHgyNTUwE6QRMA8xDTALBgNVBAMMBHgyNTYwE6QRMA8xDTALBgNVBAMMBHgy
--NTcwE6QRMA8xDTALBgNVBAMMBHgyNTgwE6QRMA8xDTALBgNVBAMMBHgyNTkwE6QR
--MA8xDTALBgNVBAMMBHgyNjAwE6QRMA8xDTALBgNVBAMMBHgyNjEwE6QRMA8xDTAL
--BgNVBAMMBHgyNjIwE6QRMA8xDTALBgNVBAMMBHgyNjMwE6QRMA8xDTALBgNVBAMM
--BHgyNjQwE6QRMA8xDTALBgNVBAMMBHgyNjUwE6QRMA8xDTALBgNVBAMMBHgyNjYw
--E6QRMA8xDTALBgNVBAMMBHgyNjcwE6QRMA8xDTALBgNVBAMMBHgyNjgwE6QRMA8x
--DTALBgNVBAMMBHgyNjkwE6QRMA8xDTALBgNVBAMMBHgyNzAwE6QRMA8xDTALBgNV
--BAMMBHgyNzEwE6QRMA8xDTALBgNVBAMMBHgyNzIwE6QRMA8xDTALBgNVBAMMBHgy
--NzMwE6QRMA8xDTALBgNVBAMMBHgyNzQwE6QRMA8xDTALBgNVBAMMBHgyNzUwE6QR
--MA8xDTALBgNVBAMMBHgyNzYwE6QRMA8xDTALBgNVBAMMBHgyNzcwE6QRMA8xDTAL
--BgNVBAMMBHgyNzgwE6QRMA8xDTALBgNVBAMMBHgyNzkwE6QRMA8xDTALBgNVBAMM
--BHgyODAwE6QRMA8xDTALBgNVBAMMBHgyODEwE6QRMA8xDTALBgNVBAMMBHgyODIw
--E6QRMA8xDTALBgNVBAMMBHgyODMwE6QRMA8xDTALBgNVBAMMBHgyODQwE6QRMA8x
--DTALBgNVBAMMBHgyODUwE6QRMA8xDTALBgNVBAMMBHgyODYwE6QRMA8xDTALBgNV
--BAMMBHgyODcwE6QRMA8xDTALBgNVBAMMBHgyODgwE6QRMA8xDTALBgNVBAMMBHgy
--ODkwE6QRMA8xDTALBgNVBAMMBHgyOTAwE6QRMA8xDTALBgNVBAMMBHgyOTEwE6QR
--MA8xDTALBgNVBAMMBHgyOTIwE6QRMA8xDTALBgNVBAMMBHgyOTMwE6QRMA8xDTAL
--BgNVBAMMBHgyOTQwE6QRMA8xDTALBgNVBAMMBHgyOTUwE6QRMA8xDTALBgNVBAMM
--BHgyOTYwE6QRMA8xDTALBgNVBAMMBHgyOTcwE6QRMA8xDTALBgNVBAMMBHgyOTgw
--E6QRMA8xDTALBgNVBAMMBHgyOTkwE6QRMA8xDTALBgNVBAMMBHgzMDAwE6QRMA8x
--DTALBgNVBAMMBHgzMDEwE6QRMA8xDTALBgNVBAMMBHgzMDIwE6QRMA8xDTALBgNV
--BAMMBHgzMDMwE6QRMA8xDTALBgNVBAMMBHgzMDQwE6QRMA8xDTALBgNVBAMMBHgz
--MDUwE6QRMA8xDTALBgNVBAMMBHgzMDYwE6QRMA8xDTALBgNVBAMMBHgzMDcwE6QR
--MA8xDTALBgNVBAMMBHgzMDgwE6QRMA8xDTALBgNVBAMMBHgzMDkwE6QRMA8xDTAL
--BgNVBAMMBHgzMTAwE6QRMA8xDTALBgNVBAMMBHgzMTEwE6QRMA8xDTALBgNVBAMM
--BHgzMTIwE6QRMA8xDTALBgNVBAMMBHgzMTMwE6QRMA8xDTALBgNVBAMMBHgzMTQw
--E6QRMA8xDTALBgNVBAMMBHgzMTUwE6QRMA8xDTALBgNVBAMMBHgzMTYwE6QRMA8x
--DTALBgNVBAMMBHgzMTcwE6QRMA8xDTALBgNVBAMMBHgzMTgwE6QRMA8xDTALBgNV
--BAMMBHgzMTkwE6QRMA8xDTALBgNVBAMMBHgzMjAwE6QRMA8xDTALBgNVBAMMBHgz
--MjEwE6QRMA8xDTALBgNVBAMMBHgzMjIwE6QRMA8xDTALBgNVBAMMBHgzMjMwE6QR
--MA8xDTALBgNVBAMMBHgzMjQwE6QRMA8xDTALBgNVBAMMBHgzMjUwE6QRMA8xDTAL
--BgNVBAMMBHgzMjYwE6QRMA8xDTALBgNVBAMMBHgzMjcwE6QRMA8xDTALBgNVBAMM
--BHgzMjgwE6QRMA8xDTALBgNVBAMMBHgzMjkwE6QRMA8xDTALBgNVBAMMBHgzMzAw
--E6QRMA8xDTALBgNVBAMMBHgzMzEwE6QRMA8xDTALBgNVBAMMBHgzMzIwE6QRMA8x
--DTALBgNVBAMMBHgzMzMwE6QRMA8xDTALBgNVBAMMBHgzMzQwE6QRMA8xDTALBgNV
--BAMMBHgzMzUwE6QRMA8xDTALBgNVBAMMBHgzMzYwE6QRMA8xDTALBgNVBAMMBHgz
--MzcwE6QRMA8xDTALBgNVBAMMBHgzMzgwE6QRMA8xDTALBgNVBAMMBHgzMzkwE6QR
--MA8xDTALBgNVBAMMBHgzNDAwE6QRMA8xDTALBgNVBAMMBHgzNDEwE6QRMA8xDTAL
--BgNVBAMMBHgzNDIwE6QRMA8xDTALBgNVBAMMBHgzNDMwE6QRMA8xDTALBgNVBAMM
--BHgzNDQwE6QRMA8xDTALBgNVBAMMBHgzNDUwE6QRMA8xDTALBgNVBAMMBHgzNDYw
--E6QRMA8xDTALBgNVBAMMBHgzNDcwE6QRMA8xDTALBgNVBAMMBHgzNDgwE6QRMA8x
--DTALBgNVBAMMBHgzNDkwE6QRMA8xDTALBgNVBAMMBHgzNTAwE6QRMA8xDTALBgNV
--BAMMBHgzNTEwE6QRMA8xDTALBgNVBAMMBHgzNTIwE6QRMA8xDTALBgNVBAMMBHgz
--NTMwE6QRMA8xDTALBgNVBAMMBHgzNTQwE6QRMA8xDTALBgNVBAMMBHgzNTUwE6QR
--MA8xDTALBgNVBAMMBHgzNTYwE6QRMA8xDTALBgNVBAMMBHgzNTcwE6QRMA8xDTAL
--BgNVBAMMBHgzNTgwE6QRMA8xDTALBgNVBAMMBHgzNTkwE6QRMA8xDTALBgNVBAMM
--BHgzNjAwE6QRMA8xDTALBgNVBAMMBHgzNjEwE6QRMA8xDTALBgNVBAMMBHgzNjIw
--E6QRMA8xDTALBgNVBAMMBHgzNjMwE6QRMA8xDTALBgNVBAMMBHgzNjQwE6QRMA8x
--DTALBgNVBAMMBHgzNjUwE6QRMA8xDTALBgNVBAMMBHgzNjYwE6QRMA8xDTALBgNV
--BAMMBHgzNjcwE6QRMA8xDTALBgNVBAMMBHgzNjgwE6QRMA8xDTALBgNVBAMMBHgz
--NjkwE6QRMA8xDTALBgNVBAMMBHgzNzAwE6QRMA8xDTALBgNVBAMMBHgzNzEwE6QR
--MA8xDTALBgNVBAMMBHgzNzIwE6QRMA8xDTALBgNVBAMMBHgzNzMwE6QRMA8xDTAL
--BgNVBAMMBHgzNzQwE6QRMA8xDTALBgNVBAMMBHgzNzUwE6QRMA8xDTALBgNVBAMM
--BHgzNzYwE6QRMA8xDTALBgNVBAMMBHgzNzcwE6QRMA8xDTALBgNVBAMMBHgzNzgw
--E6QRMA8xDTALBgNVBAMMBHgzNzkwE6QRMA8xDTALBgNVBAMMBHgzODAwE6QRMA8x
--DTALBgNVBAMMBHgzODEwE6QRMA8xDTALBgNVBAMMBHgzODIwE6QRMA8xDTALBgNV
--BAMMBHgzODMwE6QRMA8xDTALBgNVBAMMBHgzODQwE6QRMA8xDTALBgNVBAMMBHgz
--ODUwE6QRMA8xDTALBgNVBAMMBHgzODYwE6QRMA8xDTALBgNVBAMMBHgzODcwE6QR
--MA8xDTALBgNVBAMMBHgzODgwE6QRMA8xDTALBgNVBAMMBHgzODkwE6QRMA8xDTAL
--BgNVBAMMBHgzOTAwE6QRMA8xDTALBgNVBAMMBHgzOTEwE6QRMA8xDTALBgNVBAMM
--BHgzOTIwE6QRMA8xDTALBgNVBAMMBHgzOTMwE6QRMA8xDTALBgNVBAMMBHgzOTQw
--E6QRMA8xDTALBgNVBAMMBHgzOTUwE6QRMA8xDTALBgNVBAMMBHgzOTYwE6QRMA8x
--DTALBgNVBAMMBHgzOTcwE6QRMA8xDTALBgNVBAMMBHgzOTgwE6QRMA8xDTALBgNV
--BAMMBHgzOTkwE6QRMA8xDTALBgNVBAMMBHg0MDAwE6QRMA8xDTALBgNVBAMMBHg0
--MDEwE6QRMA8xDTALBgNVBAMMBHg0MDIwE6QRMA8xDTALBgNVBAMMBHg0MDMwE6QR
--MA8xDTALBgNVBAMMBHg0MDQwE6QRMA8xDTALBgNVBAMMBHg0MDUwE6QRMA8xDTAL
--BgNVBAMMBHg0MDYwE6QRMA8xDTALBgNVBAMMBHg0MDcwE6QRMA8xDTALBgNVBAMM
--BHg0MDgwE6QRMA8xDTALBgNVBAMMBHg0MDkwE6QRMA8xDTALBgNVBAMMBHg0MTAw
--E6QRMA8xDTALBgNVBAMMBHg0MTEwE6QRMA8xDTALBgNVBAMMBHg0MTIwE6QRMA8x
--DTALBgNVBAMMBHg0MTMwE6QRMA8xDTALBgNVBAMMBHg0MTQwE6QRMA8xDTALBgNV
--BAMMBHg0MTUwE6QRMA8xDTALBgNVBAMMBHg0MTYwE6QRMA8xDTALBgNVBAMMBHg0
--MTcwE6QRMA8xDTALBgNVBAMMBHg0MTgwDQYJKoZIhvcNAQELBQADggEBAHh3z5Nf
--vf8/kKQ5S3IYkHIyfPfcs230zsmZctljBoiF2JEgNXJNCbUCiVBjXmlZX/nB5w/W
--VWtnDfewgwIY1XW6BpblP/rEDzB5vEObbuYVwoe8V086fDe7FZDz161CRMOty/T6
--DzIlm1oqC34q8es1f/J9YEvjj/wBpr7Mi0rmX+xCR+RmWk8gsnvMUSeR6rDfcJ/l
--d2piJRLaevJUTz64GKljTVAC8E3sHbx8Ont+D2u3MGHnQxy6xY7GnhQNfwfgZmsd
--MtMupuEW9i7VsVauiPnkqB33Z6zQLiyrBERLZ38DB534TbeCMU8jN16O1+P6UpSi
--J5h5m04zmUWk1pg=
-+ggl0MTY5LnRlc3QwC4IJdDE3MC50ZXN0MAuCCXQxNzEudGVzdDAKhwgKAAAA////
-+/zAKhwgKAAAB/////zAKhwgKAAAC/////zAKhwgKAAAD/////zAKhwgKAAAE////
-+/zAKhwgKAAAF/////zAKhwgKAAAG/////zAKhwgKAAAH/////zAKhwgKAAAI////
-+/zAKhwgKAAAJ/////zAKhwgKAAAK/////zAKhwgKAAAL/////zAKhwgKAAAM////
-+/zAKhwgKAAAN/////zAKhwgKAAAO/////zAKhwgKAAAP/////zAKhwgKAAAQ////
-+/zAKhwgKAAAR/////zAKhwgKAAAS/////zAKhwgKAAAT/////zAKhwgKAAAU////
-+/zAKhwgKAAAV/////zAKhwgKAAAW/////zAKhwgKAAAX/////zAKhwgKAAAY////
-+/zAKhwgKAAAZ/////zAKhwgKAAAa/////zAKhwgKAAAb/////zAKhwgKAAAc////
-+/zAKhwgKAAAd/////zAKhwgKAAAe/////zAKhwgKAAAf/////zAKhwgKAAAg////
-+/zAKhwgKAAAh/////zAKhwgKAAAi/////zAKhwgKAAAj/////zAKhwgKAAAk////
-+/zAKhwgKAAAl/////zAKhwgKAAAm/////zAKhwgKAAAn/////zAKhwgKAAAo////
-+/zAKhwgKAAAp/////zAKhwgKAAAq/////zAKhwgKAAAr/////zAKhwgKAAAs////
-+/zAKhwgKAAAt/////zAKhwgKAAAu/////zAKhwgKAAAv/////zAKhwgKAAAw////
-+/zAKhwgKAAAx/////zAKhwgKAAAy/////zAKhwgKAAAz/////zAKhwgKAAA0////
-+/zAKhwgKAAA1/////zAKhwgKAAA2/////zAKhwgKAAA3/////zAKhwgKAAA4////
-+/zAKhwgKAAA5/////zAKhwgKAAA6/////zAKhwgKAAA7/////zAKhwgKAAA8////
-+/zAKhwgKAAA9/////zAKhwgKAAA+/////zAKhwgKAAA//////zAKhwgKAABA////
-+/zAKhwgKAABB/////zAKhwgKAABC/////zAKhwgKAABD/////zAKhwgKAABE////
-+/zAKhwgKAABF/////zAKhwgKAABG/////zAKhwgKAABH/////zAKhwgKAABI////
-+/zAKhwgKAABJ/////zAKhwgKAABK/////zAKhwgKAABL/////zAKhwgKAABM////
-+/zAKhwgKAABN/////zAKhwgKAABO/////zAKhwgKAABP/////zAKhwgKAABQ////
-+/zAKhwgKAABR/////zAKhwgKAABS/////zAKhwgKAABT/////zAKhwgKAABU////
-+/zAKhwgKAABV/////zAKhwgKAABW/////zAKhwgKAABX/////zAKhwgKAABY////
-+/zAKhwgKAABZ/////zAKhwgKAABa/////zAKhwgKAABb/////zAKhwgKAABc////
-+/zAKhwgKAABd/////zAKhwgKAABe/////zAKhwgKAABf/////zAKhwgKAABg////
-+/zAKhwgKAABh/////zAKhwgKAABi/////zAKhwgKAABj/////zAKhwgKAABk////
-+/zAKhwgKAABl/////zAKhwgKAABm/////zAKhwgKAABn/////zAKhwgKAABo////
-+/zAKhwgKAABp/////zAKhwgKAABq/////zAKhwgKAABr/////zAKhwgKAABs////
-+/zAKhwgKAABt/////zAKhwgKAABu/////zAKhwgKAABv/////zAKhwgKAABw////
-+/zAKhwgKAABx/////zAKhwgKAABy/////zAKhwgKAABz/////zAKhwgKAAB0////
-+/zAKhwgKAAB1/////zAKhwgKAAB2/////zAKhwgKAAB3/////zAKhwgKAAB4////
-+/zAKhwgKAAB5/////zAKhwgKAAB6/////zAKhwgKAAB7/////zAKhwgKAAB8////
-+/zAKhwgKAAB9/////zAKhwgKAAB+/////zAKhwgKAAB//////zAKhwgKAACA////
-+/zAKhwgKAACB/////zAKhwgKAACC/////zAKhwgKAACD/////zAKhwgKAACE////
-+/zAKhwgKAACF/////zAKhwgKAACG/////zAKhwgKAACH/////zAKhwgKAACI////
-+/zAKhwgKAACJ/////zAKhwgKAACK/////zAKhwgKAACL/////zAKhwgKAACM////
-+/zAKhwgKAACN/////zAKhwgKAACO/////zAKhwgKAACP/////zAKhwgKAACQ////
-+/zAKhwgKAACR/////zAKhwgKAACS/////zAKhwgKAACT/////zAKhwgKAACU////
-+/zAKhwgKAACV/////zAKhwgKAACW/////zAKhwgKAACX/////zAKhwgKAACY////
-+/zAKhwgKAACZ/////zAKhwgKAACa/////zAKhwgKAACb/////zAKhwgKAACc////
-+/zAKhwgKAACd/////zAKhwgKAACe/////zAKhwgKAACf/////zAKhwgKAACg////
-+/zAKhwgKAACh/////zAKhwgKAACi/////zAKhwgKAACj/////zAKhwgKAACk////
-+/zAKhwgKAACl/////zAKhwgKAACm/////zAKhwgKAACn/////zAKhwgKAACo////
-+/zAKhwgKAACp/////zAKhwgKAACq/////zARpA8wDTELMAkGA1UEAwwCdDAwEaQP
-+MA0xCzAJBgNVBAMMAnQxMBGkDzANMQswCQYDVQQDDAJ0MjARpA8wDTELMAkGA1UE
-+AwwCdDMwEaQPMA0xCzAJBgNVBAMMAnQ0MBGkDzANMQswCQYDVQQDDAJ0NTARpA8w
-+DTELMAkGA1UEAwwCdDYwEaQPMA0xCzAJBgNVBAMMAnQ3MBGkDzANMQswCQYDVQQD
-+DAJ0ODARpA8wDTELMAkGA1UEAwwCdDkwEqQQMA4xDDAKBgNVBAMMA3QxMDASpBAw
-+DjEMMAoGA1UEAwwDdDExMBKkEDAOMQwwCgYDVQQDDAN0MTIwEqQQMA4xDDAKBgNV
-+BAMMA3QxMzASpBAwDjEMMAoGA1UEAwwDdDE0MBKkEDAOMQwwCgYDVQQDDAN0MTUw
-+EqQQMA4xDDAKBgNVBAMMA3QxNjASpBAwDjEMMAoGA1UEAwwDdDE3MBKkEDAOMQww
-+CgYDVQQDDAN0MTgwEqQQMA4xDDAKBgNVBAMMA3QxOTASpBAwDjEMMAoGA1UEAwwD
-+dDIwMBKkEDAOMQwwCgYDVQQDDAN0MjEwEqQQMA4xDDAKBgNVBAMMA3QyMjASpBAw
-+DjEMMAoGA1UEAwwDdDIzMBKkEDAOMQwwCgYDVQQDDAN0MjQwEqQQMA4xDDAKBgNV
-+BAMMA3QyNTASpBAwDjEMMAoGA1UEAwwDdDI2MBKkEDAOMQwwCgYDVQQDDAN0Mjcw
-+EqQQMA4xDDAKBgNVBAMMA3QyODASpBAwDjEMMAoGA1UEAwwDdDI5MBKkEDAOMQww
-+CgYDVQQDDAN0MzAwEqQQMA4xDDAKBgNVBAMMA3QzMTASpBAwDjEMMAoGA1UEAwwD
-+dDMyMBKkEDAOMQwwCgYDVQQDDAN0MzMwEqQQMA4xDDAKBgNVBAMMA3QzNDASpBAw
-+DjEMMAoGA1UEAwwDdDM1MBKkEDAOMQwwCgYDVQQDDAN0MzYwEqQQMA4xDDAKBgNV
-+BAMMA3QzNzASpBAwDjEMMAoGA1UEAwwDdDM4MBKkEDAOMQwwCgYDVQQDDAN0Mzkw
-+EqQQMA4xDDAKBgNVBAMMA3Q0MDASpBAwDjEMMAoGA1UEAwwDdDQxMBKkEDAOMQww
-+CgYDVQQDDAN0NDIwEqQQMA4xDDAKBgNVBAMMA3Q0MzASpBAwDjEMMAoGA1UEAwwD
-+dDQ0MBKkEDAOMQwwCgYDVQQDDAN0NDUwEqQQMA4xDDAKBgNVBAMMA3Q0NjASpBAw
-+DjEMMAoGA1UEAwwDdDQ3MBKkEDAOMQwwCgYDVQQDDAN0NDgwEqQQMA4xDDAKBgNV
-+BAMMA3Q0OTASpBAwDjEMMAoGA1UEAwwDdDUwMBKkEDAOMQwwCgYDVQQDDAN0NTEw
-+EqQQMA4xDDAKBgNVBAMMA3Q1MjASpBAwDjEMMAoGA1UEAwwDdDUzMBKkEDAOMQww
-+CgYDVQQDDAN0NTQwEqQQMA4xDDAKBgNVBAMMA3Q1NTASpBAwDjEMMAoGA1UEAwwD
-+dDU2MBKkEDAOMQwwCgYDVQQDDAN0NTcwEqQQMA4xDDAKBgNVBAMMA3Q1ODASpBAw
-+DjEMMAoGA1UEAwwDdDU5MBKkEDAOMQwwCgYDVQQDDAN0NjAwEqQQMA4xDDAKBgNV
-+BAMMA3Q2MTASpBAwDjEMMAoGA1UEAwwDdDYyMBKkEDAOMQwwCgYDVQQDDAN0NjMw
-+EqQQMA4xDDAKBgNVBAMMA3Q2NDASpBAwDjEMMAoGA1UEAwwDdDY1MBKkEDAOMQww
-+CgYDVQQDDAN0NjYwEqQQMA4xDDAKBgNVBAMMA3Q2NzASpBAwDjEMMAoGA1UEAwwD
-+dDY4MBKkEDAOMQwwCgYDVQQDDAN0NjkwEqQQMA4xDDAKBgNVBAMMA3Q3MDASpBAw
-+DjEMMAoGA1UEAwwDdDcxMBKkEDAOMQwwCgYDVQQDDAN0NzIwEqQQMA4xDDAKBgNV
-+BAMMA3Q3MzASpBAwDjEMMAoGA1UEAwwDdDc0MBKkEDAOMQwwCgYDVQQDDAN0NzUw
-+EqQQMA4xDDAKBgNVBAMMA3Q3NjASpBAwDjEMMAoGA1UEAwwDdDc3MBKkEDAOMQww
-+CgYDVQQDDAN0NzgwEqQQMA4xDDAKBgNVBAMMA3Q3OTASpBAwDjEMMAoGA1UEAwwD
-+dDgwMBKkEDAOMQwwCgYDVQQDDAN0ODEwEqQQMA4xDDAKBgNVBAMMA3Q4MjASpBAw
-+DjEMMAoGA1UEAwwDdDgzMBKkEDAOMQwwCgYDVQQDDAN0ODQwEqQQMA4xDDAKBgNV
-+BAMMA3Q4NTASpBAwDjEMMAoGA1UEAwwDdDg2MBKkEDAOMQwwCgYDVQQDDAN0ODcw
-+EqQQMA4xDDAKBgNVBAMMA3Q4ODASpBAwDjEMMAoGA1UEAwwDdDg5MBKkEDAOMQww
-+CgYDVQQDDAN0OTAwEqQQMA4xDDAKBgNVBAMMA3Q5MTASpBAwDjEMMAoGA1UEAwwD
-+dDkyMBKkEDAOMQwwCgYDVQQDDAN0OTMwEqQQMA4xDDAKBgNVBAMMA3Q5NDASpBAw
-+DjEMMAoGA1UEAwwDdDk1MBKkEDAOMQwwCgYDVQQDDAN0OTYwEqQQMA4xDDAKBgNV
-+BAMMA3Q5NzASpBAwDjEMMAoGA1UEAwwDdDk4MBKkEDAOMQwwCgYDVQQDDAN0OTkw
-+E6QRMA8xDTALBgNVBAMMBHQxMDAwE6QRMA8xDTALBgNVBAMMBHQxMDEwE6QRMA8x
-+DTALBgNVBAMMBHQxMDIwE6QRMA8xDTALBgNVBAMMBHQxMDMwE6QRMA8xDTALBgNV
-+BAMMBHQxMDQwE6QRMA8xDTALBgNVBAMMBHQxMDUwE6QRMA8xDTALBgNVBAMMBHQx
-+MDYwE6QRMA8xDTALBgNVBAMMBHQxMDcwE6QRMA8xDTALBgNVBAMMBHQxMDgwE6QR
-+MA8xDTALBgNVBAMMBHQxMDkwE6QRMA8xDTALBgNVBAMMBHQxMTAwE6QRMA8xDTAL
-+BgNVBAMMBHQxMTEwE6QRMA8xDTALBgNVBAMMBHQxMTIwE6QRMA8xDTALBgNVBAMM
-+BHQxMTMwE6QRMA8xDTALBgNVBAMMBHQxMTQwE6QRMA8xDTALBgNVBAMMBHQxMTUw
-+E6QRMA8xDTALBgNVBAMMBHQxMTYwE6QRMA8xDTALBgNVBAMMBHQxMTcwE6QRMA8x
-+DTALBgNVBAMMBHQxMTgwE6QRMA8xDTALBgNVBAMMBHQxMTkwE6QRMA8xDTALBgNV
-+BAMMBHQxMjAwE6QRMA8xDTALBgNVBAMMBHQxMjEwE6QRMA8xDTALBgNVBAMMBHQx
-+MjIwE6QRMA8xDTALBgNVBAMMBHQxMjMwE6QRMA8xDTALBgNVBAMMBHQxMjQwE6QR
-+MA8xDTALBgNVBAMMBHQxMjUwE6QRMA8xDTALBgNVBAMMBHQxMjYwE6QRMA8xDTAL
-+BgNVBAMMBHQxMjcwE6QRMA8xDTALBgNVBAMMBHQxMjgwE6QRMA8xDTALBgNVBAMM
-+BHQxMjkwE6QRMA8xDTALBgNVBAMMBHQxMzAwE6QRMA8xDTALBgNVBAMMBHQxMzEw
-+E6QRMA8xDTALBgNVBAMMBHQxMzIwE6QRMA8xDTALBgNVBAMMBHQxMzMwE6QRMA8x
-+DTALBgNVBAMMBHQxMzQwE6QRMA8xDTALBgNVBAMMBHQxMzUwE6QRMA8xDTALBgNV
-+BAMMBHQxMzYwE6QRMA8xDTALBgNVBAMMBHQxMzcwE6QRMA8xDTALBgNVBAMMBHQx
-+MzgwE6QRMA8xDTALBgNVBAMMBHQxMzkwE6QRMA8xDTALBgNVBAMMBHQxNDAwE6QR
-+MA8xDTALBgNVBAMMBHQxNDEwE6QRMA8xDTALBgNVBAMMBHQxNDIwE6QRMA8xDTAL
-+BgNVBAMMBHQxNDMwE6QRMA8xDTALBgNVBAMMBHQxNDQwE6QRMA8xDTALBgNVBAMM
-+BHQxNDUwE6QRMA8xDTALBgNVBAMMBHQxNDYwE6QRMA8xDTALBgNVBAMMBHQxNDcw
-+E6QRMA8xDTALBgNVBAMMBHQxNDgwE6QRMA8xDTALBgNVBAMMBHQxNDkwE6QRMA8x
-+DTALBgNVBAMMBHQxNTAwE6QRMA8xDTALBgNVBAMMBHQxNTEwE6QRMA8xDTALBgNV
-+BAMMBHQxNTIwE6QRMA8xDTALBgNVBAMMBHQxNTMwE6QRMA8xDTALBgNVBAMMBHQx
-+NTQwE6QRMA8xDTALBgNVBAMMBHQxNTUwE6QRMA8xDTALBgNVBAMMBHQxNTYwE6QR
-+MA8xDTALBgNVBAMMBHQxNTcwE6QRMA8xDTALBgNVBAMMBHQxNTgwE6QRMA8xDTAL
-+BgNVBAMMBHQxNTkwE6QRMA8xDTALBgNVBAMMBHQxNjAwE6QRMA8xDTALBgNVBAMM
-+BHQxNjEwE6QRMA8xDTALBgNVBAMMBHQxNjIwE6QRMA8xDTALBgNVBAMMBHQxNjMw
-+E6QRMA8xDTALBgNVBAMMBHQxNjQwE6QRMA8xDTALBgNVBAMMBHQxNjUwE6QRMA8x
-+DTALBgNVBAMMBHQxNjYwE6QRMA8xDTALBgNVBAMMBHQxNjcwE6QRMA8xDTALBgNV
-+BAMMBHQxNjgwE6QRMA8xDTALBgNVBAMMBHQxNjkwE6QRMA8xDTALBgNVBAMMBHQx
-+NzAwE6QRMA8xDTALBgNVBAMMBHQxNzGhgh2wMAmCB3gwLnRlc3QwCYIHeDEudGVz
-+dDAJggd4Mi50ZXN0MAmCB3gzLnRlc3QwCYIHeDQudGVzdDAJggd4NS50ZXN0MAmC
-+B3g2LnRlc3QwCYIHeDcudGVzdDAJggd4OC50ZXN0MAmCB3g5LnRlc3QwCoIIeDEw
-+LnRlc3QwCoIIeDExLnRlc3QwCoIIeDEyLnRlc3QwCoIIeDEzLnRlc3QwCoIIeDE0
-+LnRlc3QwCoIIeDE1LnRlc3QwCoIIeDE2LnRlc3QwCoIIeDE3LnRlc3QwCoIIeDE4
-+LnRlc3QwCoIIeDE5LnRlc3QwCoIIeDIwLnRlc3QwCoIIeDIxLnRlc3QwCoIIeDIy
-+LnRlc3QwCoIIeDIzLnRlc3QwCoIIeDI0LnRlc3QwCoIIeDI1LnRlc3QwCoIIeDI2
-+LnRlc3QwCoIIeDI3LnRlc3QwCoIIeDI4LnRlc3QwCoIIeDI5LnRlc3QwCoIIeDMw
-+LnRlc3QwCoIIeDMxLnRlc3QwCoIIeDMyLnRlc3QwCoIIeDMzLnRlc3QwCoIIeDM0
-+LnRlc3QwCoIIeDM1LnRlc3QwCoIIeDM2LnRlc3QwCoIIeDM3LnRlc3QwCoIIeDM4
-+LnRlc3QwCoIIeDM5LnRlc3QwCoIIeDQwLnRlc3QwCoIIeDQxLnRlc3QwCoIIeDQy
-+LnRlc3QwCoIIeDQzLnRlc3QwCoIIeDQ0LnRlc3QwCoIIeDQ1LnRlc3QwCoIIeDQ2
-+LnRlc3QwCoIIeDQ3LnRlc3QwCoIIeDQ4LnRlc3QwCoIIeDQ5LnRlc3QwCoIIeDUw
-+LnRlc3QwCoIIeDUxLnRlc3QwCoIIeDUyLnRlc3QwCoIIeDUzLnRlc3QwCoIIeDU0
-+LnRlc3QwCoIIeDU1LnRlc3QwCoIIeDU2LnRlc3QwCoIIeDU3LnRlc3QwCoIIeDU4
-+LnRlc3QwCoIIeDU5LnRlc3QwCoIIeDYwLnRlc3QwCoIIeDYxLnRlc3QwCoIIeDYy
-+LnRlc3QwCoIIeDYzLnRlc3QwCoIIeDY0LnRlc3QwCoIIeDY1LnRlc3QwCoIIeDY2
-+LnRlc3QwCoIIeDY3LnRlc3QwCoIIeDY4LnRlc3QwCoIIeDY5LnRlc3QwCoIIeDcw
-+LnRlc3QwCoIIeDcxLnRlc3QwCoIIeDcyLnRlc3QwCoIIeDczLnRlc3QwCoIIeDc0
-+LnRlc3QwCoIIeDc1LnRlc3QwCoIIeDc2LnRlc3QwCoIIeDc3LnRlc3QwCoIIeDc4
-+LnRlc3QwCoIIeDc5LnRlc3QwCoIIeDgwLnRlc3QwCoIIeDgxLnRlc3QwCoIIeDgy
-+LnRlc3QwCoIIeDgzLnRlc3QwCoIIeDg0LnRlc3QwCoIIeDg1LnRlc3QwCoIIeDg2
-+LnRlc3QwCoIIeDg3LnRlc3QwCoIIeDg4LnRlc3QwCoIIeDg5LnRlc3QwCoIIeDkw
-+LnRlc3QwCoIIeDkxLnRlc3QwCoIIeDkyLnRlc3QwCoIIeDkzLnRlc3QwCoIIeDk0
-+LnRlc3QwCoIIeDk1LnRlc3QwCoIIeDk2LnRlc3QwCoIIeDk3LnRlc3QwCoIIeDk4
-+LnRlc3QwCoIIeDk5LnRlc3QwC4IJeDEwMC50ZXN0MAuCCXgxMDEudGVzdDALggl4
-+MTAyLnRlc3QwC4IJeDEwMy50ZXN0MAuCCXgxMDQudGVzdDALggl4MTA1LnRlc3Qw
-+C4IJeDEwNi50ZXN0MAuCCXgxMDcudGVzdDALggl4MTA4LnRlc3QwC4IJeDEwOS50
-+ZXN0MAuCCXgxMTAudGVzdDALggl4MTExLnRlc3QwC4IJeDExMi50ZXN0MAuCCXgx
-+MTMudGVzdDALggl4MTE0LnRlc3QwC4IJeDExNS50ZXN0MAuCCXgxMTYudGVzdDAL
-+ggl4MTE3LnRlc3QwC4IJeDExOC50ZXN0MAuCCXgxMTkudGVzdDALggl4MTIwLnRl
-+c3QwC4IJeDEyMS50ZXN0MAuCCXgxMjIudGVzdDALggl4MTIzLnRlc3QwC4IJeDEy
-+NC50ZXN0MAuCCXgxMjUudGVzdDALggl4MTI2LnRlc3QwC4IJeDEyNy50ZXN0MAuC
-+CXgxMjgudGVzdDALggl4MTI5LnRlc3QwC4IJeDEzMC50ZXN0MAuCCXgxMzEudGVz
-+dDALggl4MTMyLnRlc3QwC4IJeDEzMy50ZXN0MAuCCXgxMzQudGVzdDALggl4MTM1
-+LnRlc3QwC4IJeDEzNi50ZXN0MAuCCXgxMzcudGVzdDALggl4MTM4LnRlc3QwC4IJ
-+eDEzOS50ZXN0MAuCCXgxNDAudGVzdDALggl4MTQxLnRlc3QwC4IJeDE0Mi50ZXN0
-+MAuCCXgxNDMudGVzdDALggl4MTQ0LnRlc3QwC4IJeDE0NS50ZXN0MAuCCXgxNDYu
-+dGVzdDALggl4MTQ3LnRlc3QwC4IJeDE0OC50ZXN0MAuCCXgxNDkudGVzdDALggl4
-+MTUwLnRlc3QwC4IJeDE1MS50ZXN0MAuCCXgxNTIudGVzdDALggl4MTUzLnRlc3Qw
-+C4IJeDE1NC50ZXN0MAuCCXgxNTUudGVzdDALggl4MTU2LnRlc3QwC4IJeDE1Ny50
-+ZXN0MAuCCXgxNTgudGVzdDALggl4MTU5LnRlc3QwC4IJeDE2MC50ZXN0MAuCCXgx
-+NjEudGVzdDALggl4MTYyLnRlc3QwC4IJeDE2My50ZXN0MAuCCXgxNjQudGVzdDAL
-+ggl4MTY1LnRlc3QwC4IJeDE2Ni50ZXN0MAuCCXgxNjcudGVzdDALggl4MTY4LnRl
-+c3QwC4IJeDE2OS50ZXN0MAqHCAsAAAD/////MAqHCAsAAAH/////MAqHCAsAAAL/
-+////MAqHCAsAAAP/////MAqHCAsAAAT/////MAqHCAsAAAX/////MAqHCAsAAAb/
-+////MAqHCAsAAAf/////MAqHCAsAAAj/////MAqHCAsAAAn/////MAqHCAsAAAr/
-+////MAqHCAsAAAv/////MAqHCAsAAAz/////MAqHCAsAAA3/////MAqHCAsAAA7/
-+////MAqHCAsAAA//////MAqHCAsAABD/////MAqHCAsAABH/////MAqHCAsAABL/
-+////MAqHCAsAABP/////MAqHCAsAABT/////MAqHCAsAABX/////MAqHCAsAABb/
-+////MAqHCAsAABf/////MAqHCAsAABj/////MAqHCAsAABn/////MAqHCAsAABr/
-+////MAqHCAsAABv/////MAqHCAsAABz/////MAqHCAsAAB3/////MAqHCAsAAB7/
-+////MAqHCAsAAB//////MAqHCAsAACD/////MAqHCAsAACH/////MAqHCAsAACL/
-+////MAqHCAsAACP/////MAqHCAsAACT/////MAqHCAsAACX/////MAqHCAsAACb/
-+////MAqHCAsAACf/////MAqHCAsAACj/////MAqHCAsAACn/////MAqHCAsAACr/
-+////MAqHCAsAACv/////MAqHCAsAACz/////MAqHCAsAAC3/////MAqHCAsAAC7/
-+////MAqHCAsAAC//////MAqHCAsAADD/////MAqHCAsAADH/////MAqHCAsAADL/
-+////MAqHCAsAADP/////MAqHCAsAADT/////MAqHCAsAADX/////MAqHCAsAADb/
-+////MAqHCAsAADf/////MAqHCAsAADj/////MAqHCAsAADn/////MAqHCAsAADr/
-+////MAqHCAsAADv/////MAqHCAsAADz/////MAqHCAsAAD3/////MAqHCAsAAD7/
-+////MAqHCAsAAD//////MAqHCAsAAED/////MAqHCAsAAEH/////MAqHCAsAAEL/
-+////MAqHCAsAAEP/////MAqHCAsAAET/////MAqHCAsAAEX/////MAqHCAsAAEb/
-+////MAqHCAsAAEf/////MAqHCAsAAEj/////MAqHCAsAAEn/////MAqHCAsAAEr/
-+////MAqHCAsAAEv/////MAqHCAsAAEz/////MAqHCAsAAE3/////MAqHCAsAAE7/
-+////MAqHCAsAAE//////MAqHCAsAAFD/////MAqHCAsAAFH/////MAqHCAsAAFL/
-+////MAqHCAsAAFP/////MAqHCAsAAFT/////MAqHCAsAAFX/////MAqHCAsAAFb/
-+////MAqHCAsAAFf/////MAqHCAsAAFj/////MAqHCAsAAFn/////MAqHCAsAAFr/
-+////MAqHCAsAAFv/////MAqHCAsAAFz/////MAqHCAsAAF3/////MAqHCAsAAF7/
-+////MAqHCAsAAF//////MAqHCAsAAGD/////MAqHCAsAAGH/////MAqHCAsAAGL/
-+////MAqHCAsAAGP/////MAqHCAsAAGT/////MAqHCAsAAGX/////MAqHCAsAAGb/
-+////MAqHCAsAAGf/////MAqHCAsAAGj/////MAqHCAsAAGn/////MAqHCAsAAGr/
-+////MAqHCAsAAGv/////MAqHCAsAAGz/////MAqHCAsAAG3/////MAqHCAsAAG7/
-+////MAqHCAsAAG//////MAqHCAsAAHD/////MAqHCAsAAHH/////MAqHCAsAAHL/
-+////MAqHCAsAAHP/////MAqHCAsAAHT/////MAqHCAsAAHX/////MAqHCAsAAHb/
-+////MAqHCAsAAHf/////MAqHCAsAAHj/////MAqHCAsAAHn/////MAqHCAsAAHr/
-+////MAqHCAsAAHv/////MAqHCAsAAHz/////MAqHCAsAAH3/////MAqHCAsAAH7/
-+////MAqHCAsAAH//////MAqHCAsAAID/////MAqHCAsAAIH/////MAqHCAsAAIL/
-+////MAqHCAsAAIP/////MAqHCAsAAIT/////MAqHCAsAAIX/////MAqHCAsAAIb/
-+////MAqHCAsAAIf/////MAqHCAsAAIj/////MAqHCAsAAIn/////MAqHCAsAAIr/
-+////MAqHCAsAAIv/////MAqHCAsAAIz/////MAqHCAsAAI3/////MAqHCAsAAI7/
-+////MAqHCAsAAI//////MAqHCAsAAJD/////MAqHCAsAAJH/////MAqHCAsAAJL/
-+////MAqHCAsAAJP/////MAqHCAsAAJT/////MAqHCAsAAJX/////MAqHCAsAAJb/
-+////MAqHCAsAAJf/////MAqHCAsAAJj/////MAqHCAsAAJn/////MAqHCAsAAJr/
-+////MAqHCAsAAJv/////MAqHCAsAAJz/////MAqHCAsAAJ3/////MAqHCAsAAJ7/
-+////MAqHCAsAAJ//////MAqHCAsAAKD/////MAqHCAsAAKH/////MAqHCAsAAKL/
-+////MAqHCAsAAKP/////MAqHCAsAAKT/////MAqHCAsAAKX/////MAqHCAsAAKb/
-+////MAqHCAsAAKf/////MAqHCAsAAKj/////MAqHCAsAAKn/////MBGkDzANMQsw
-+CQYDVQQDDAJ4MDARpA8wDTELMAkGA1UEAwwCeDEwEaQPMA0xCzAJBgNVBAMMAngy
-+MBGkDzANMQswCQYDVQQDDAJ4MzARpA8wDTELMAkGA1UEAwwCeDQwEaQPMA0xCzAJ
-+BgNVBAMMAng1MBGkDzANMQswCQYDVQQDDAJ4NjARpA8wDTELMAkGA1UEAwwCeDcw
-+EaQPMA0xCzAJBgNVBAMMAng4MBGkDzANMQswCQYDVQQDDAJ4OTASpBAwDjEMMAoG
-+A1UEAwwDeDEwMBKkEDAOMQwwCgYDVQQDDAN4MTEwEqQQMA4xDDAKBgNVBAMMA3gx
-+MjASpBAwDjEMMAoGA1UEAwwDeDEzMBKkEDAOMQwwCgYDVQQDDAN4MTQwEqQQMA4x
-+DDAKBgNVBAMMA3gxNTASpBAwDjEMMAoGA1UEAwwDeDE2MBKkEDAOMQwwCgYDVQQD
-+DAN4MTcwEqQQMA4xDDAKBgNVBAMMA3gxODASpBAwDjEMMAoGA1UEAwwDeDE5MBKk
-+EDAOMQwwCgYDVQQDDAN4MjAwEqQQMA4xDDAKBgNVBAMMA3gyMTASpBAwDjEMMAoG
-+A1UEAwwDeDIyMBKkEDAOMQwwCgYDVQQDDAN4MjMwEqQQMA4xDDAKBgNVBAMMA3gy
-+NDASpBAwDjEMMAoGA1UEAwwDeDI1MBKkEDAOMQwwCgYDVQQDDAN4MjYwEqQQMA4x
-+DDAKBgNVBAMMA3gyNzASpBAwDjEMMAoGA1UEAwwDeDI4MBKkEDAOMQwwCgYDVQQD
-+DAN4MjkwEqQQMA4xDDAKBgNVBAMMA3gzMDASpBAwDjEMMAoGA1UEAwwDeDMxMBKk
-+EDAOMQwwCgYDVQQDDAN4MzIwEqQQMA4xDDAKBgNVBAMMA3gzMzASpBAwDjEMMAoG
-+A1UEAwwDeDM0MBKkEDAOMQwwCgYDVQQDDAN4MzUwEqQQMA4xDDAKBgNVBAMMA3gz
-+NjASpBAwDjEMMAoGA1UEAwwDeDM3MBKkEDAOMQwwCgYDVQQDDAN4MzgwEqQQMA4x
-+DDAKBgNVBAMMA3gzOTASpBAwDjEMMAoGA1UEAwwDeDQwMBKkEDAOMQwwCgYDVQQD
-+DAN4NDEwEqQQMA4xDDAKBgNVBAMMA3g0MjASpBAwDjEMMAoGA1UEAwwDeDQzMBKk
-+EDAOMQwwCgYDVQQDDAN4NDQwEqQQMA4xDDAKBgNVBAMMA3g0NTASpBAwDjEMMAoG
-+A1UEAwwDeDQ2MBKkEDAOMQwwCgYDVQQDDAN4NDcwEqQQMA4xDDAKBgNVBAMMA3g0
-+ODASpBAwDjEMMAoGA1UEAwwDeDQ5MBKkEDAOMQwwCgYDVQQDDAN4NTAwEqQQMA4x
-+DDAKBgNVBAMMA3g1MTASpBAwDjEMMAoGA1UEAwwDeDUyMBKkEDAOMQwwCgYDVQQD
-+DAN4NTMwEqQQMA4xDDAKBgNVBAMMA3g1NDASpBAwDjEMMAoGA1UEAwwDeDU1MBKk
-+EDAOMQwwCgYDVQQDDAN4NTYwEqQQMA4xDDAKBgNVBAMMA3g1NzASpBAwDjEMMAoG
-+A1UEAwwDeDU4MBKkEDAOMQwwCgYDVQQDDAN4NTkwEqQQMA4xDDAKBgNVBAMMA3g2
-+MDASpBAwDjEMMAoGA1UEAwwDeDYxMBKkEDAOMQwwCgYDVQQDDAN4NjIwEqQQMA4x
-+DDAKBgNVBAMMA3g2MzASpBAwDjEMMAoGA1UEAwwDeDY0MBKkEDAOMQwwCgYDVQQD
-+DAN4NjUwEqQQMA4xDDAKBgNVBAMMA3g2NjASpBAwDjEMMAoGA1UEAwwDeDY3MBKk
-+EDAOMQwwCgYDVQQDDAN4NjgwEqQQMA4xDDAKBgNVBAMMA3g2OTASpBAwDjEMMAoG
-+A1UEAwwDeDcwMBKkEDAOMQwwCgYDVQQDDAN4NzEwEqQQMA4xDDAKBgNVBAMMA3g3
-+MjASpBAwDjEMMAoGA1UEAwwDeDczMBKkEDAOMQwwCgYDVQQDDAN4NzQwEqQQMA4x
-+DDAKBgNVBAMMA3g3NTASpBAwDjEMMAoGA1UEAwwDeDc2MBKkEDAOMQwwCgYDVQQD
-+DAN4NzcwEqQQMA4xDDAKBgNVBAMMA3g3ODASpBAwDjEMMAoGA1UEAwwDeDc5MBKk
-+EDAOMQwwCgYDVQQDDAN4ODAwEqQQMA4xDDAKBgNVBAMMA3g4MTASpBAwDjEMMAoG
-+A1UEAwwDeDgyMBKkEDAOMQwwCgYDVQQDDAN4ODMwEqQQMA4xDDAKBgNVBAMMA3g4
-+NDASpBAwDjEMMAoGA1UEAwwDeDg1MBKkEDAOMQwwCgYDVQQDDAN4ODYwEqQQMA4x
-+DDAKBgNVBAMMA3g4NzASpBAwDjEMMAoGA1UEAwwDeDg4MBKkEDAOMQwwCgYDVQQD
-+DAN4ODkwEqQQMA4xDDAKBgNVBAMMA3g5MDASpBAwDjEMMAoGA1UEAwwDeDkxMBKk
-+EDAOMQwwCgYDVQQDDAN4OTIwEqQQMA4xDDAKBgNVBAMMA3g5MzASpBAwDjEMMAoG
-+A1UEAwwDeDk0MBKkEDAOMQwwCgYDVQQDDAN4OTUwEqQQMA4xDDAKBgNVBAMMA3g5
-+NjASpBAwDjEMMAoGA1UEAwwDeDk3MBKkEDAOMQwwCgYDVQQDDAN4OTgwEqQQMA4x
-+DDAKBgNVBAMMA3g5OTATpBEwDzENMAsGA1UEAwwEeDEwMDATpBEwDzENMAsGA1UE
-+AwwEeDEwMTATpBEwDzENMAsGA1UEAwwEeDEwMjATpBEwDzENMAsGA1UEAwwEeDEw
-+MzATpBEwDzENMAsGA1UEAwwEeDEwNDATpBEwDzENMAsGA1UEAwwEeDEwNTATpBEw
-+DzENMAsGA1UEAwwEeDEwNjATpBEwDzENMAsGA1UEAwwEeDEwNzATpBEwDzENMAsG
-+A1UEAwwEeDEwODATpBEwDzENMAsGA1UEAwwEeDEwOTATpBEwDzENMAsGA1UEAwwE
-+eDExMDATpBEwDzENMAsGA1UEAwwEeDExMTATpBEwDzENMAsGA1UEAwwEeDExMjAT
-+pBEwDzENMAsGA1UEAwwEeDExMzATpBEwDzENMAsGA1UEAwwEeDExNDATpBEwDzEN
-+MAsGA1UEAwwEeDExNTATpBEwDzENMAsGA1UEAwwEeDExNjATpBEwDzENMAsGA1UE
-+AwwEeDExNzATpBEwDzENMAsGA1UEAwwEeDExODATpBEwDzENMAsGA1UEAwwEeDEx
-+OTATpBEwDzENMAsGA1UEAwwEeDEyMDATpBEwDzENMAsGA1UEAwwEeDEyMTATpBEw
-+DzENMAsGA1UEAwwEeDEyMjATpBEwDzENMAsGA1UEAwwEeDEyMzATpBEwDzENMAsG
-+A1UEAwwEeDEyNDATpBEwDzENMAsGA1UEAwwEeDEyNTATpBEwDzENMAsGA1UEAwwE
-+eDEyNjATpBEwDzENMAsGA1UEAwwEeDEyNzATpBEwDzENMAsGA1UEAwwEeDEyODAT
-+pBEwDzENMAsGA1UEAwwEeDEyOTATpBEwDzENMAsGA1UEAwwEeDEzMDATpBEwDzEN
-+MAsGA1UEAwwEeDEzMTATpBEwDzENMAsGA1UEAwwEeDEzMjATpBEwDzENMAsGA1UE
-+AwwEeDEzMzATpBEwDzENMAsGA1UEAwwEeDEzNDATpBEwDzENMAsGA1UEAwwEeDEz
-+NTATpBEwDzENMAsGA1UEAwwEeDEzNjATpBEwDzENMAsGA1UEAwwEeDEzNzATpBEw
-+DzENMAsGA1UEAwwEeDEzODATpBEwDzENMAsGA1UEAwwEeDEzOTATpBEwDzENMAsG
-+A1UEAwwEeDE0MDATpBEwDzENMAsGA1UEAwwEeDE0MTATpBEwDzENMAsGA1UEAwwE
-+eDE0MjATpBEwDzENMAsGA1UEAwwEeDE0MzATpBEwDzENMAsGA1UEAwwEeDE0NDAT
-+pBEwDzENMAsGA1UEAwwEeDE0NTATpBEwDzENMAsGA1UEAwwEeDE0NjATpBEwDzEN
-+MAsGA1UEAwwEeDE0NzATpBEwDzENMAsGA1UEAwwEeDE0ODATpBEwDzENMAsGA1UE
-+AwwEeDE0OTATpBEwDzENMAsGA1UEAwwEeDE1MDATpBEwDzENMAsGA1UEAwwEeDE1
-+MTATpBEwDzENMAsGA1UEAwwEeDE1MjATpBEwDzENMAsGA1UEAwwEeDE1MzATpBEw
-+DzENMAsGA1UEAwwEeDE1NDATpBEwDzENMAsGA1UEAwwEeDE1NTATpBEwDzENMAsG
-+A1UEAwwEeDE1NjATpBEwDzENMAsGA1UEAwwEeDE1NzATpBEwDzENMAsGA1UEAwwE
-+eDE1ODATpBEwDzENMAsGA1UEAwwEeDE1OTATpBEwDzENMAsGA1UEAwwEeDE2MDAT
-+pBEwDzENMAsGA1UEAwwEeDE2MTATpBEwDzENMAsGA1UEAwwEeDE2MjATpBEwDzEN
-+MAsGA1UEAwwEeDE2MzATpBEwDzENMAsGA1UEAwwEeDE2NDATpBEwDzENMAsGA1UE
-+AwwEeDE2NTATpBEwDzENMAsGA1UEAwwEeDE2NjATpBEwDzENMAsGA1UEAwwEeDE2
-+NzATpBEwDzENMAsGA1UEAwwEeDE2ODATpBEwDzENMAsGA1UEAwwEeDE2OTANBgkq
-+hkiG9w0BAQsFAAOCAQEAn8uDe+I8Vycl7II/MML/ElFxP9WUBRpbWESAtIke4IlF
-+5eNyi8TYylSj2/Kj/RYAwYYh4u3jbJR+Ca7tNhzjl289CrE5eHqzuc7DaO5gJ3zL
-+azM8X6JqmdQIKukhBOoS2ShTH8yvq0GjbjT6VlZE1cUQvfQ3O0WUdBmySc8PmJR1
-+aOxOb7BBrPc4Ah3dHxT2tcYMorKnB3WZVE7+aAwdrqCQ19VkYBX/x/0x2qtQQ0S3
-+zD/S7uQDPqCdjoFIIYY0Zie+snMBK2XuUTtXP3ZRrYL8fsnOiTgEX8n2QWIyYLK5
-+0f5OeNaleVZ7V+QdQnofqvew0IK61PG7+Zzsyuf3CQ==
- -----END CERTIFICATE-----
-
- Certificate:
-@@ -3813,7 +1791,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 3c:e5:fc:81:88:59:a8:50:16:c1:7f:d7:e5:2a:e5:96:7f:c2:f6:f5
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Root
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-diff --git a/net/data/verify_certificate_chain_unittest/many-names/toomany-dirnames-excluded.pem b/net/data/verify_certificate_chain_unittest/many-names/toomany-dirnames-excluded.pem
-index 80c8f81db55b7..5d15afebb118d 100644
---- a/net/data/verify_certificate_chain_unittest/many-names/toomany-dirnames-excluded.pem
-+++ b/net/data/verify_certificate_chain_unittest/many-names/toomany-dirnames-excluded.pem
-@@ -1,4 +1,4 @@
--[Created by: generate-chains.py]
-+[Created by: ./generate-chains.py]
-
- A chain containing a large number of excluded directory name
- constraints and directory names, above the limit.
-@@ -8,7 +8,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 2f:ab:b4:3d:dc:c0:77:80:2a:03:09:ad:43:74:02:bf:98:d8:d8
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Intermediate
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-@@ -505,7 +505,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 3c:e5:fc:81:88:59:a8:50:16:c1:7f:d7:e5:2a:e5:96:7f:c2:f6:fa
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Root
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-@@ -554,1031 +554,1031 @@ Certificate:
- CA:TRUE
- X509v3 Name Constraints:
- Excluded:
-- DirName:CN = x0
-- DirName:CN = x1
-- DirName:CN = x2
-- DirName:CN = x3
-- DirName:CN = x4
-- DirName:CN = x5
-- DirName:CN = x6
-- DirName:CN = x7
-- DirName:CN = x8
-- DirName:CN = x9
-- DirName:CN = x10
-- DirName:CN = x11
-- DirName:CN = x12
-- DirName:CN = x13
-- DirName:CN = x14
-- DirName:CN = x15
-- DirName:CN = x16
-- DirName:CN = x17
-- DirName:CN = x18
-- DirName:CN = x19
-- DirName:CN = x20
-- DirName:CN = x21
-- DirName:CN = x22
-- DirName:CN = x23
-- DirName:CN = x24
-- DirName:CN = x25
-- DirName:CN = x26
-- DirName:CN = x27
-- DirName:CN = x28
-- DirName:CN = x29
-- DirName:CN = x30
-- DirName:CN = x31
-- DirName:CN = x32
-- DirName:CN = x33
-- DirName:CN = x34
-- DirName:CN = x35
-- DirName:CN = x36
-- DirName:CN = x37
-- DirName:CN = x38
-- DirName:CN = x39
-- DirName:CN = x40
-- DirName:CN = x41
-- DirName:CN = x42
-- DirName:CN = x43
-- DirName:CN = x44
-- DirName:CN = x45
-- DirName:CN = x46
-- DirName:CN = x47
-- DirName:CN = x48
-- DirName:CN = x49
-- DirName:CN = x50
-- DirName:CN = x51
-- DirName:CN = x52
-- DirName:CN = x53
-- DirName:CN = x54
-- DirName:CN = x55
-- DirName:CN = x56
-- DirName:CN = x57
-- DirName:CN = x58
-- DirName:CN = x59
-- DirName:CN = x60
-- DirName:CN = x61
-- DirName:CN = x62
-- DirName:CN = x63
-- DirName:CN = x64
-- DirName:CN = x65
-- DirName:CN = x66
-- DirName:CN = x67
-- DirName:CN = x68
-- DirName:CN = x69
-- DirName:CN = x70
-- DirName:CN = x71
-- DirName:CN = x72
-- DirName:CN = x73
-- DirName:CN = x74
-- DirName:CN = x75
-- DirName:CN = x76
-- DirName:CN = x77
-- DirName:CN = x78
-- DirName:CN = x79
-- DirName:CN = x80
-- DirName:CN = x81
-- DirName:CN = x82
-- DirName:CN = x83
-- DirName:CN = x84
-- DirName:CN = x85
-- DirName:CN = x86
-- DirName:CN = x87
-- DirName:CN = x88
-- DirName:CN = x89
-- DirName:CN = x90
-- DirName:CN = x91
-- DirName:CN = x92
-- DirName:CN = x93
-- DirName:CN = x94
-- DirName:CN = x95
-- DirName:CN = x96
-- DirName:CN = x97
-- DirName:CN = x98
-- DirName:CN = x99
-- DirName:CN = x100
-- DirName:CN = x101
-- DirName:CN = x102
-- DirName:CN = x103
-- DirName:CN = x104
-- DirName:CN = x105
-- DirName:CN = x106
-- DirName:CN = x107
-- DirName:CN = x108
-- DirName:CN = x109
-- DirName:CN = x110
-- DirName:CN = x111
-- DirName:CN = x112
-- DirName:CN = x113
-- DirName:CN = x114
-- DirName:CN = x115
-- DirName:CN = x116
-- DirName:CN = x117
-- DirName:CN = x118
-- DirName:CN = x119
-- DirName:CN = x120
-- DirName:CN = x121
-- DirName:CN = x122
-- DirName:CN = x123
-- DirName:CN = x124
-- DirName:CN = x125
-- DirName:CN = x126
-- DirName:CN = x127
-- DirName:CN = x128
-- DirName:CN = x129
-- DirName:CN = x130
-- DirName:CN = x131
-- DirName:CN = x132
-- DirName:CN = x133
-- DirName:CN = x134
-- DirName:CN = x135
-- DirName:CN = x136
-- DirName:CN = x137
-- DirName:CN = x138
-- DirName:CN = x139
-- DirName:CN = x140
-- DirName:CN = x141
-- DirName:CN = x142
-- DirName:CN = x143
-- DirName:CN = x144
-- DirName:CN = x145
-- DirName:CN = x146
-- DirName:CN = x147
-- DirName:CN = x148
-- DirName:CN = x149
-- DirName:CN = x150
-- DirName:CN = x151
-- DirName:CN = x152
-- DirName:CN = x153
-- DirName:CN = x154
-- DirName:CN = x155
-- DirName:CN = x156
-- DirName:CN = x157
-- DirName:CN = x158
-- DirName:CN = x159
-- DirName:CN = x160
-- DirName:CN = x161
-- DirName:CN = x162
-- DirName:CN = x163
-- DirName:CN = x164
-- DirName:CN = x165
-- DirName:CN = x166
-- DirName:CN = x167
-- DirName:CN = x168
-- DirName:CN = x169
-- DirName:CN = x170
-- DirName:CN = x171
-- DirName:CN = x172
-- DirName:CN = x173
-- DirName:CN = x174
-- DirName:CN = x175
-- DirName:CN = x176
-- DirName:CN = x177
-- DirName:CN = x178
-- DirName:CN = x179
-- DirName:CN = x180
-- DirName:CN = x181
-- DirName:CN = x182
-- DirName:CN = x183
-- DirName:CN = x184
-- DirName:CN = x185
-- DirName:CN = x186
-- DirName:CN = x187
-- DirName:CN = x188
-- DirName:CN = x189
-- DirName:CN = x190
-- DirName:CN = x191
-- DirName:CN = x192
-- DirName:CN = x193
-- DirName:CN = x194
-- DirName:CN = x195
-- DirName:CN = x196
-- DirName:CN = x197
-- DirName:CN = x198
-- DirName:CN = x199
-- DirName:CN = x200
-- DirName:CN = x201
-- DirName:CN = x202
-- DirName:CN = x203
-- DirName:CN = x204
-- DirName:CN = x205
-- DirName:CN = x206
-- DirName:CN = x207
-- DirName:CN = x208
-- DirName:CN = x209
-- DirName:CN = x210
-- DirName:CN = x211
-- DirName:CN = x212
-- DirName:CN = x213
-- DirName:CN = x214
-- DirName:CN = x215
-- DirName:CN = x216
-- DirName:CN = x217
-- DirName:CN = x218
-- DirName:CN = x219
-- DirName:CN = x220
-- DirName:CN = x221
-- DirName:CN = x222
-- DirName:CN = x223
-- DirName:CN = x224
-- DirName:CN = x225
-- DirName:CN = x226
-- DirName:CN = x227
-- DirName:CN = x228
-- DirName:CN = x229
-- DirName:CN = x230
-- DirName:CN = x231
-- DirName:CN = x232
-- DirName:CN = x233
-- DirName:CN = x234
-- DirName:CN = x235
-- DirName:CN = x236
-- DirName:CN = x237
-- DirName:CN = x238
-- DirName:CN = x239
-- DirName:CN = x240
-- DirName:CN = x241
-- DirName:CN = x242
-- DirName:CN = x243
-- DirName:CN = x244
-- DirName:CN = x245
-- DirName:CN = x246
-- DirName:CN = x247
-- DirName:CN = x248
-- DirName:CN = x249
-- DirName:CN = x250
-- DirName:CN = x251
-- DirName:CN = x252
-- DirName:CN = x253
-- DirName:CN = x254
-- DirName:CN = x255
-- DirName:CN = x256
-- DirName:CN = x257
-- DirName:CN = x258
-- DirName:CN = x259
-- DirName:CN = x260
-- DirName:CN = x261
-- DirName:CN = x262
-- DirName:CN = x263
-- DirName:CN = x264
-- DirName:CN = x265
-- DirName:CN = x266
-- DirName:CN = x267
-- DirName:CN = x268
-- DirName:CN = x269
-- DirName:CN = x270
-- DirName:CN = x271
-- DirName:CN = x272
-- DirName:CN = x273
-- DirName:CN = x274
-- DirName:CN = x275
-- DirName:CN = x276
-- DirName:CN = x277
-- DirName:CN = x278
-- DirName:CN = x279
-- DirName:CN = x280
-- DirName:CN = x281
-- DirName:CN = x282
-- DirName:CN = x283
-- DirName:CN = x284
-- DirName:CN = x285
-- DirName:CN = x286
-- DirName:CN = x287
-- DirName:CN = x288
-- DirName:CN = x289
-- DirName:CN = x290
-- DirName:CN = x291
-- DirName:CN = x292
-- DirName:CN = x293
-- DirName:CN = x294
-- DirName:CN = x295
-- DirName:CN = x296
-- DirName:CN = x297
-- DirName:CN = x298
-- DirName:CN = x299
-- DirName:CN = x300
-- DirName:CN = x301
-- DirName:CN = x302
-- DirName:CN = x303
-- DirName:CN = x304
-- DirName:CN = x305
-- DirName:CN = x306
-- DirName:CN = x307
-- DirName:CN = x308
-- DirName:CN = x309
-- DirName:CN = x310
-- DirName:CN = x311
-- DirName:CN = x312
-- DirName:CN = x313
-- DirName:CN = x314
-- DirName:CN = x315
-- DirName:CN = x316
-- DirName:CN = x317
-- DirName:CN = x318
-- DirName:CN = x319
-- DirName:CN = x320
-- DirName:CN = x321
-- DirName:CN = x322
-- DirName:CN = x323
-- DirName:CN = x324
-- DirName:CN = x325
-- DirName:CN = x326
-- DirName:CN = x327
-- DirName:CN = x328
-- DirName:CN = x329
-- DirName:CN = x330
-- DirName:CN = x331
-- DirName:CN = x332
-- DirName:CN = x333
-- DirName:CN = x334
-- DirName:CN = x335
-- DirName:CN = x336
-- DirName:CN = x337
-- DirName:CN = x338
-- DirName:CN = x339
-- DirName:CN = x340
-- DirName:CN = x341
-- DirName:CN = x342
-- DirName:CN = x343
-- DirName:CN = x344
-- DirName:CN = x345
-- DirName:CN = x346
-- DirName:CN = x347
-- DirName:CN = x348
-- DirName:CN = x349
-- DirName:CN = x350
-- DirName:CN = x351
-- DirName:CN = x352
-- DirName:CN = x353
-- DirName:CN = x354
-- DirName:CN = x355
-- DirName:CN = x356
-- DirName:CN = x357
-- DirName:CN = x358
-- DirName:CN = x359
-- DirName:CN = x360
-- DirName:CN = x361
-- DirName:CN = x362
-- DirName:CN = x363
-- DirName:CN = x364
-- DirName:CN = x365
-- DirName:CN = x366
-- DirName:CN = x367
-- DirName:CN = x368
-- DirName:CN = x369
-- DirName:CN = x370
-- DirName:CN = x371
-- DirName:CN = x372
-- DirName:CN = x373
-- DirName:CN = x374
-- DirName:CN = x375
-- DirName:CN = x376
-- DirName:CN = x377
-- DirName:CN = x378
-- DirName:CN = x379
-- DirName:CN = x380
-- DirName:CN = x381
-- DirName:CN = x382
-- DirName:CN = x383
-- DirName:CN = x384
-- DirName:CN = x385
-- DirName:CN = x386
-- DirName:CN = x387
-- DirName:CN = x388
-- DirName:CN = x389
-- DirName:CN = x390
-- DirName:CN = x391
-- DirName:CN = x392
-- DirName:CN = x393
-- DirName:CN = x394
-- DirName:CN = x395
-- DirName:CN = x396
-- DirName:CN = x397
-- DirName:CN = x398
-- DirName:CN = x399
-- DirName:CN = x400
-- DirName:CN = x401
-- DirName:CN = x402
-- DirName:CN = x403
-- DirName:CN = x404
-- DirName:CN = x405
-- DirName:CN = x406
-- DirName:CN = x407
-- DirName:CN = x408
-- DirName:CN = x409
-- DirName:CN = x410
-- DirName:CN = x411
-- DirName:CN = x412
-- DirName:CN = x413
-- DirName:CN = x414
-- DirName:CN = x415
-- DirName:CN = x416
-- DirName:CN = x417
-- DirName:CN = x418
-- DirName:CN = x419
-- DirName:CN = x420
-- DirName:CN = x421
-- DirName:CN = x422
-- DirName:CN = x423
-- DirName:CN = x424
-- DirName:CN = x425
-- DirName:CN = x426
-- DirName:CN = x427
-- DirName:CN = x428
-- DirName:CN = x429
-- DirName:CN = x430
-- DirName:CN = x431
-- DirName:CN = x432
-- DirName:CN = x433
-- DirName:CN = x434
-- DirName:CN = x435
-- DirName:CN = x436
-- DirName:CN = x437
-- DirName:CN = x438
-- DirName:CN = x439
-- DirName:CN = x440
-- DirName:CN = x441
-- DirName:CN = x442
-- DirName:CN = x443
-- DirName:CN = x444
-- DirName:CN = x445
-- DirName:CN = x446
-- DirName:CN = x447
-- DirName:CN = x448
-- DirName:CN = x449
-- DirName:CN = x450
-- DirName:CN = x451
-- DirName:CN = x452
-- DirName:CN = x453
-- DirName:CN = x454
-- DirName:CN = x455
-- DirName:CN = x456
-- DirName:CN = x457
-- DirName:CN = x458
-- DirName:CN = x459
-- DirName:CN = x460
-- DirName:CN = x461
-- DirName:CN = x462
-- DirName:CN = x463
-- DirName:CN = x464
-- DirName:CN = x465
-- DirName:CN = x466
-- DirName:CN = x467
-- DirName:CN = x468
-- DirName:CN = x469
-- DirName:CN = x470
-- DirName:CN = x471
-- DirName:CN = x472
-- DirName:CN = x473
-- DirName:CN = x474
-- DirName:CN = x475
-- DirName:CN = x476
-- DirName:CN = x477
-- DirName:CN = x478
-- DirName:CN = x479
-- DirName:CN = x480
-- DirName:CN = x481
-- DirName:CN = x482
-- DirName:CN = x483
-- DirName:CN = x484
-- DirName:CN = x485
-- DirName:CN = x486
-- DirName:CN = x487
-- DirName:CN = x488
-- DirName:CN = x489
-- DirName:CN = x490
-- DirName:CN = x491
-- DirName:CN = x492
-- DirName:CN = x493
-- DirName:CN = x494
-- DirName:CN = x495
-- DirName:CN = x496
-- DirName:CN = x497
-- DirName:CN = x498
-- DirName:CN = x499
-- DirName:CN = x500
-- DirName:CN = x501
-- DirName:CN = x502
-- DirName:CN = x503
-- DirName:CN = x504
-- DirName:CN = x505
-- DirName:CN = x506
-- DirName:CN = x507
-- DirName:CN = x508
-- DirName:CN = x509
-- DirName:CN = x510
-- DirName:CN = x511
-- DirName:CN = x512
-- DirName:CN = x513
-- DirName:CN = x514
-- DirName:CN = x515
-- DirName:CN = x516
-- DirName:CN = x517
-- DirName:CN = x518
-- DirName:CN = x519
-- DirName:CN = x520
-- DirName:CN = x521
-- DirName:CN = x522
-- DirName:CN = x523
-- DirName:CN = x524
-- DirName:CN = x525
-- DirName:CN = x526
-- DirName:CN = x527
-- DirName:CN = x528
-- DirName:CN = x529
-- DirName:CN = x530
-- DirName:CN = x531
-- DirName:CN = x532
-- DirName:CN = x533
-- DirName:CN = x534
-- DirName:CN = x535
-- DirName:CN = x536
-- DirName:CN = x537
-- DirName:CN = x538
-- DirName:CN = x539
-- DirName:CN = x540
-- DirName:CN = x541
-- DirName:CN = x542
-- DirName:CN = x543
-- DirName:CN = x544
-- DirName:CN = x545
-- DirName:CN = x546
-- DirName:CN = x547
-- DirName:CN = x548
-- DirName:CN = x549
-- DirName:CN = x550
-- DirName:CN = x551
-- DirName:CN = x552
-- DirName:CN = x553
-- DirName:CN = x554
-- DirName:CN = x555
-- DirName:CN = x556
-- DirName:CN = x557
-- DirName:CN = x558
-- DirName:CN = x559
-- DirName:CN = x560
-- DirName:CN = x561
-- DirName:CN = x562
-- DirName:CN = x563
-- DirName:CN = x564
-- DirName:CN = x565
-- DirName:CN = x566
-- DirName:CN = x567
-- DirName:CN = x568
-- DirName:CN = x569
-- DirName:CN = x570
-- DirName:CN = x571
-- DirName:CN = x572
-- DirName:CN = x573
-- DirName:CN = x574
-- DirName:CN = x575
-- DirName:CN = x576
-- DirName:CN = x577
-- DirName:CN = x578
-- DirName:CN = x579
-- DirName:CN = x580
-- DirName:CN = x581
-- DirName:CN = x582
-- DirName:CN = x583
-- DirName:CN = x584
-- DirName:CN = x585
-- DirName:CN = x586
-- DirName:CN = x587
-- DirName:CN = x588
-- DirName:CN = x589
-- DirName:CN = x590
-- DirName:CN = x591
-- DirName:CN = x592
-- DirName:CN = x593
-- DirName:CN = x594
-- DirName:CN = x595
-- DirName:CN = x596
-- DirName:CN = x597
-- DirName:CN = x598
-- DirName:CN = x599
-- DirName:CN = x600
-- DirName:CN = x601
-- DirName:CN = x602
-- DirName:CN = x603
-- DirName:CN = x604
-- DirName:CN = x605
-- DirName:CN = x606
-- DirName:CN = x607
-- DirName:CN = x608
-- DirName:CN = x609
-- DirName:CN = x610
-- DirName:CN = x611
-- DirName:CN = x612
-- DirName:CN = x613
-- DirName:CN = x614
-- DirName:CN = x615
-- DirName:CN = x616
-- DirName:CN = x617
-- DirName:CN = x618
-- DirName:CN = x619
-- DirName:CN = x620
-- DirName:CN = x621
-- DirName:CN = x622
-- DirName:CN = x623
-- DirName:CN = x624
-- DirName:CN = x625
-- DirName:CN = x626
-- DirName:CN = x627
-- DirName:CN = x628
-- DirName:CN = x629
-- DirName:CN = x630
-- DirName:CN = x631
-- DirName:CN = x632
-- DirName:CN = x633
-- DirName:CN = x634
-- DirName:CN = x635
-- DirName:CN = x636
-- DirName:CN = x637
-- DirName:CN = x638
-- DirName:CN = x639
-- DirName:CN = x640
-- DirName:CN = x641
-- DirName:CN = x642
-- DirName:CN = x643
-- DirName:CN = x644
-- DirName:CN = x645
-- DirName:CN = x646
-- DirName:CN = x647
-- DirName:CN = x648
-- DirName:CN = x649
-- DirName:CN = x650
-- DirName:CN = x651
-- DirName:CN = x652
-- DirName:CN = x653
-- DirName:CN = x654
-- DirName:CN = x655
-- DirName:CN = x656
-- DirName:CN = x657
-- DirName:CN = x658
-- DirName:CN = x659
-- DirName:CN = x660
-- DirName:CN = x661
-- DirName:CN = x662
-- DirName:CN = x663
-- DirName:CN = x664
-- DirName:CN = x665
-- DirName:CN = x666
-- DirName:CN = x667
-- DirName:CN = x668
-- DirName:CN = x669
-- DirName:CN = x670
-- DirName:CN = x671
-- DirName:CN = x672
-- DirName:CN = x673
-- DirName:CN = x674
-- DirName:CN = x675
-- DirName:CN = x676
-- DirName:CN = x677
-- DirName:CN = x678
-- DirName:CN = x679
-- DirName:CN = x680
-- DirName:CN = x681
-- DirName:CN = x682
-- DirName:CN = x683
-- DirName:CN = x684
-- DirName:CN = x685
-- DirName:CN = x686
-- DirName:CN = x687
-- DirName:CN = x688
-- DirName:CN = x689
-- DirName:CN = x690
-- DirName:CN = x691
-- DirName:CN = x692
-- DirName:CN = x693
-- DirName:CN = x694
-- DirName:CN = x695
-- DirName:CN = x696
-- DirName:CN = x697
-- DirName:CN = x698
-- DirName:CN = x699
-- DirName:CN = x700
-- DirName:CN = x701
-- DirName:CN = x702
-- DirName:CN = x703
-- DirName:CN = x704
-- DirName:CN = x705
-- DirName:CN = x706
-- DirName:CN = x707
-- DirName:CN = x708
-- DirName:CN = x709
-- DirName:CN = x710
-- DirName:CN = x711
-- DirName:CN = x712
-- DirName:CN = x713
-- DirName:CN = x714
-- DirName:CN = x715
-- DirName:CN = x716
-- DirName:CN = x717
-- DirName:CN = x718
-- DirName:CN = x719
-- DirName:CN = x720
-- DirName:CN = x721
-- DirName:CN = x722
-- DirName:CN = x723
-- DirName:CN = x724
-- DirName:CN = x725
-- DirName:CN = x726
-- DirName:CN = x727
-- DirName:CN = x728
-- DirName:CN = x729
-- DirName:CN = x730
-- DirName:CN = x731
-- DirName:CN = x732
-- DirName:CN = x733
-- DirName:CN = x734
-- DirName:CN = x735
-- DirName:CN = x736
-- DirName:CN = x737
-- DirName:CN = x738
-- DirName:CN = x739
-- DirName:CN = x740
-- DirName:CN = x741
-- DirName:CN = x742
-- DirName:CN = x743
-- DirName:CN = x744
-- DirName:CN = x745
-- DirName:CN = x746
-- DirName:CN = x747
-- DirName:CN = x748
-- DirName:CN = x749
-- DirName:CN = x750
-- DirName:CN = x751
-- DirName:CN = x752
-- DirName:CN = x753
-- DirName:CN = x754
-- DirName:CN = x755
-- DirName:CN = x756
-- DirName:CN = x757
-- DirName:CN = x758
-- DirName:CN = x759
-- DirName:CN = x760
-- DirName:CN = x761
-- DirName:CN = x762
-- DirName:CN = x763
-- DirName:CN = x764
-- DirName:CN = x765
-- DirName:CN = x766
-- DirName:CN = x767
-- DirName:CN = x768
-- DirName:CN = x769
-- DirName:CN = x770
-- DirName:CN = x771
-- DirName:CN = x772
-- DirName:CN = x773
-- DirName:CN = x774
-- DirName:CN = x775
-- DirName:CN = x776
-- DirName:CN = x777
-- DirName:CN = x778
-- DirName:CN = x779
-- DirName:CN = x780
-- DirName:CN = x781
-- DirName:CN = x782
-- DirName:CN = x783
-- DirName:CN = x784
-- DirName:CN = x785
-- DirName:CN = x786
-- DirName:CN = x787
-- DirName:CN = x788
-- DirName:CN = x789
-- DirName:CN = x790
-- DirName:CN = x791
-- DirName:CN = x792
-- DirName:CN = x793
-- DirName:CN = x794
-- DirName:CN = x795
-- DirName:CN = x796
-- DirName:CN = x797
-- DirName:CN = x798
-- DirName:CN = x799
-- DirName:CN = x800
-- DirName:CN = x801
-- DirName:CN = x802
-- DirName:CN = x803
-- DirName:CN = x804
-- DirName:CN = x805
-- DirName:CN = x806
-- DirName:CN = x807
-- DirName:CN = x808
-- DirName:CN = x809
-- DirName:CN = x810
-- DirName:CN = x811
-- DirName:CN = x812
-- DirName:CN = x813
-- DirName:CN = x814
-- DirName:CN = x815
-- DirName:CN = x816
-- DirName:CN = x817
-- DirName:CN = x818
-- DirName:CN = x819
-- DirName:CN = x820
-- DirName:CN = x821
-- DirName:CN = x822
-- DirName:CN = x823
-- DirName:CN = x824
-- DirName:CN = x825
-- DirName:CN = x826
-- DirName:CN = x827
-- DirName:CN = x828
-- DirName:CN = x829
-- DirName:CN = x830
-- DirName:CN = x831
-- DirName:CN = x832
-- DirName:CN = x833
-- DirName:CN = x834
-- DirName:CN = x835
-- DirName:CN = x836
-- DirName:CN = x837
-- DirName:CN = x838
-- DirName:CN = x839
-- DirName:CN = x840
-- DirName:CN = x841
-- DirName:CN = x842
-- DirName:CN = x843
-- DirName:CN = x844
-- DirName:CN = x845
-- DirName:CN = x846
-- DirName:CN = x847
-- DirName:CN = x848
-- DirName:CN = x849
-- DirName:CN = x850
-- DirName:CN = x851
-- DirName:CN = x852
-- DirName:CN = x853
-- DirName:CN = x854
-- DirName:CN = x855
-- DirName:CN = x856
-- DirName:CN = x857
-- DirName:CN = x858
-- DirName:CN = x859
-- DirName:CN = x860
-- DirName:CN = x861
-- DirName:CN = x862
-- DirName:CN = x863
-- DirName:CN = x864
-- DirName:CN = x865
-- DirName:CN = x866
-- DirName:CN = x867
-- DirName:CN = x868
-- DirName:CN = x869
-- DirName:CN = x870
-- DirName:CN = x871
-- DirName:CN = x872
-- DirName:CN = x873
-- DirName:CN = x874
-- DirName:CN = x875
-- DirName:CN = x876
-- DirName:CN = x877
-- DirName:CN = x878
-- DirName:CN = x879
-- DirName:CN = x880
-- DirName:CN = x881
-- DirName:CN = x882
-- DirName:CN = x883
-- DirName:CN = x884
-- DirName:CN = x885
-- DirName:CN = x886
-- DirName:CN = x887
-- DirName:CN = x888
-- DirName:CN = x889
-- DirName:CN = x890
-- DirName:CN = x891
-- DirName:CN = x892
-- DirName:CN = x893
-- DirName:CN = x894
-- DirName:CN = x895
-- DirName:CN = x896
-- DirName:CN = x897
-- DirName:CN = x898
-- DirName:CN = x899
-- DirName:CN = x900
-- DirName:CN = x901
-- DirName:CN = x902
-- DirName:CN = x903
-- DirName:CN = x904
-- DirName:CN = x905
-- DirName:CN = x906
-- DirName:CN = x907
-- DirName:CN = x908
-- DirName:CN = x909
-- DirName:CN = x910
-- DirName:CN = x911
-- DirName:CN = x912
-- DirName:CN = x913
-- DirName:CN = x914
-- DirName:CN = x915
-- DirName:CN = x916
-- DirName:CN = x917
-- DirName:CN = x918
-- DirName:CN = x919
-- DirName:CN = x920
-- DirName:CN = x921
-- DirName:CN = x922
-- DirName:CN = x923
-- DirName:CN = x924
-- DirName:CN = x925
-- DirName:CN = x926
-- DirName:CN = x927
-- DirName:CN = x928
-- DirName:CN = x929
-- DirName:CN = x930
-- DirName:CN = x931
-- DirName:CN = x932
-- DirName:CN = x933
-- DirName:CN = x934
-- DirName:CN = x935
-- DirName:CN = x936
-- DirName:CN = x937
-- DirName:CN = x938
-- DirName:CN = x939
-- DirName:CN = x940
-- DirName:CN = x941
-- DirName:CN = x942
-- DirName:CN = x943
-- DirName:CN = x944
-- DirName:CN = x945
-- DirName:CN = x946
-- DirName:CN = x947
-- DirName:CN = x948
-- DirName:CN = x949
-- DirName:CN = x950
-- DirName:CN = x951
-- DirName:CN = x952
-- DirName:CN = x953
-- DirName:CN = x954
-- DirName:CN = x955
-- DirName:CN = x956
-- DirName:CN = x957
-- DirName:CN = x958
-- DirName:CN = x959
-- DirName:CN = x960
-- DirName:CN = x961
-- DirName:CN = x962
-- DirName:CN = x963
-- DirName:CN = x964
-- DirName:CN = x965
-- DirName:CN = x966
-- DirName:CN = x967
-- DirName:CN = x968
-- DirName:CN = x969
-- DirName:CN = x970
-- DirName:CN = x971
-- DirName:CN = x972
-- DirName:CN = x973
-- DirName:CN = x974
-- DirName:CN = x975
-- DirName:CN = x976
-- DirName:CN = x977
-- DirName:CN = x978
-- DirName:CN = x979
-- DirName:CN = x980
-- DirName:CN = x981
-- DirName:CN = x982
-- DirName:CN = x983
-- DirName:CN = x984
-- DirName:CN = x985
-- DirName:CN = x986
-- DirName:CN = x987
-- DirName:CN = x988
-- DirName:CN = x989
-- DirName:CN = x990
-- DirName:CN = x991
-- DirName:CN = x992
-- DirName:CN = x993
-- DirName:CN = x994
-- DirName:CN = x995
-- DirName:CN = x996
-- DirName:CN = x997
-- DirName:CN = x998
-- DirName:CN = x999
-- DirName:CN = x1000
-- DirName:CN = x1001
-- DirName:CN = x1002
-- DirName:CN = x1003
-- DirName:CN = x1004
-- DirName:CN = x1005
-- DirName:CN = x1006
-- DirName:CN = x1007
-- DirName:CN = x1008
-- DirName:CN = x1009
-- DirName:CN = x1010
-- DirName:CN = x1011
-- DirName:CN = x1012
-- DirName:CN = x1013
-- DirName:CN = x1014
-- DirName:CN = x1015
-- DirName:CN = x1016
-- DirName:CN = x1017
-- DirName:CN = x1018
-- DirName:CN = x1019
-- DirName:CN = x1020
-- DirName:CN = x1021
-- DirName:CN = x1022
-- DirName:CN = x1023
-- DirName:CN = x1024
-+ DirName: CN = x0
-+ DirName: CN = x1
-+ DirName: CN = x2
-+ DirName: CN = x3
-+ DirName: CN = x4
-+ DirName: CN = x5
-+ DirName: CN = x6
-+ DirName: CN = x7
-+ DirName: CN = x8
-+ DirName: CN = x9
-+ DirName: CN = x10
-+ DirName: CN = x11
-+ DirName: CN = x12
-+ DirName: CN = x13
-+ DirName: CN = x14
-+ DirName: CN = x15
-+ DirName: CN = x16
-+ DirName: CN = x17
-+ DirName: CN = x18
-+ DirName: CN = x19
-+ DirName: CN = x20
-+ DirName: CN = x21
-+ DirName: CN = x22
-+ DirName: CN = x23
-+ DirName: CN = x24
-+ DirName: CN = x25
-+ DirName: CN = x26
-+ DirName: CN = x27
-+ DirName: CN = x28
-+ DirName: CN = x29
-+ DirName: CN = x30
-+ DirName: CN = x31
-+ DirName: CN = x32
-+ DirName: CN = x33
-+ DirName: CN = x34
-+ DirName: CN = x35
-+ DirName: CN = x36
-+ DirName: CN = x37
-+ DirName: CN = x38
-+ DirName: CN = x39
-+ DirName: CN = x40
-+ DirName: CN = x41
-+ DirName: CN = x42
-+ DirName: CN = x43
-+ DirName: CN = x44
-+ DirName: CN = x45
-+ DirName: CN = x46
-+ DirName: CN = x47
-+ DirName: CN = x48
-+ DirName: CN = x49
-+ DirName: CN = x50
-+ DirName: CN = x51
-+ DirName: CN = x52
-+ DirName: CN = x53
-+ DirName: CN = x54
-+ DirName: CN = x55
-+ DirName: CN = x56
-+ DirName: CN = x57
-+ DirName: CN = x58
-+ DirName: CN = x59
-+ DirName: CN = x60
-+ DirName: CN = x61
-+ DirName: CN = x62
-+ DirName: CN = x63
-+ DirName: CN = x64
-+ DirName: CN = x65
-+ DirName: CN = x66
-+ DirName: CN = x67
-+ DirName: CN = x68
-+ DirName: CN = x69
-+ DirName: CN = x70
-+ DirName: CN = x71
-+ DirName: CN = x72
-+ DirName: CN = x73
-+ DirName: CN = x74
-+ DirName: CN = x75
-+ DirName: CN = x76
-+ DirName: CN = x77
-+ DirName: CN = x78
-+ DirName: CN = x79
-+ DirName: CN = x80
-+ DirName: CN = x81
-+ DirName: CN = x82
-+ DirName: CN = x83
-+ DirName: CN = x84
-+ DirName: CN = x85
-+ DirName: CN = x86
-+ DirName: CN = x87
-+ DirName: CN = x88
-+ DirName: CN = x89
-+ DirName: CN = x90
-+ DirName: CN = x91
-+ DirName: CN = x92
-+ DirName: CN = x93
-+ DirName: CN = x94
-+ DirName: CN = x95
-+ DirName: CN = x96
-+ DirName: CN = x97
-+ DirName: CN = x98
-+ DirName: CN = x99
-+ DirName: CN = x100
-+ DirName: CN = x101
-+ DirName: CN = x102
-+ DirName: CN = x103
-+ DirName: CN = x104
-+ DirName: CN = x105
-+ DirName: CN = x106
-+ DirName: CN = x107
-+ DirName: CN = x108
-+ DirName: CN = x109
-+ DirName: CN = x110
-+ DirName: CN = x111
-+ DirName: CN = x112
-+ DirName: CN = x113
-+ DirName: CN = x114
-+ DirName: CN = x115
-+ DirName: CN = x116
-+ DirName: CN = x117
-+ DirName: CN = x118
-+ DirName: CN = x119
-+ DirName: CN = x120
-+ DirName: CN = x121
-+ DirName: CN = x122
-+ DirName: CN = x123
-+ DirName: CN = x124
-+ DirName: CN = x125
-+ DirName: CN = x126
-+ DirName: CN = x127
-+ DirName: CN = x128
-+ DirName: CN = x129
-+ DirName: CN = x130
-+ DirName: CN = x131
-+ DirName: CN = x132
-+ DirName: CN = x133
-+ DirName: CN = x134
-+ DirName: CN = x135
-+ DirName: CN = x136
-+ DirName: CN = x137
-+ DirName: CN = x138
-+ DirName: CN = x139
-+ DirName: CN = x140
-+ DirName: CN = x141
-+ DirName: CN = x142
-+ DirName: CN = x143
-+ DirName: CN = x144
-+ DirName: CN = x145
-+ DirName: CN = x146
-+ DirName: CN = x147
-+ DirName: CN = x148
-+ DirName: CN = x149
-+ DirName: CN = x150
-+ DirName: CN = x151
-+ DirName: CN = x152
-+ DirName: CN = x153
-+ DirName: CN = x154
-+ DirName: CN = x155
-+ DirName: CN = x156
-+ DirName: CN = x157
-+ DirName: CN = x158
-+ DirName: CN = x159
-+ DirName: CN = x160
-+ DirName: CN = x161
-+ DirName: CN = x162
-+ DirName: CN = x163
-+ DirName: CN = x164
-+ DirName: CN = x165
-+ DirName: CN = x166
-+ DirName: CN = x167
-+ DirName: CN = x168
-+ DirName: CN = x169
-+ DirName: CN = x170
-+ DirName: CN = x171
-+ DirName: CN = x172
-+ DirName: CN = x173
-+ DirName: CN = x174
-+ DirName: CN = x175
-+ DirName: CN = x176
-+ DirName: CN = x177
-+ DirName: CN = x178
-+ DirName: CN = x179
-+ DirName: CN = x180
-+ DirName: CN = x181
-+ DirName: CN = x182
-+ DirName: CN = x183
-+ DirName: CN = x184
-+ DirName: CN = x185
-+ DirName: CN = x186
-+ DirName: CN = x187
-+ DirName: CN = x188
-+ DirName: CN = x189
-+ DirName: CN = x190
-+ DirName: CN = x191
-+ DirName: CN = x192
-+ DirName: CN = x193
-+ DirName: CN = x194
-+ DirName: CN = x195
-+ DirName: CN = x196
-+ DirName: CN = x197
-+ DirName: CN = x198
-+ DirName: CN = x199
-+ DirName: CN = x200
-+ DirName: CN = x201
-+ DirName: CN = x202
-+ DirName: CN = x203
-+ DirName: CN = x204
-+ DirName: CN = x205
-+ DirName: CN = x206
-+ DirName: CN = x207
-+ DirName: CN = x208
-+ DirName: CN = x209
-+ DirName: CN = x210
-+ DirName: CN = x211
-+ DirName: CN = x212
-+ DirName: CN = x213
-+ DirName: CN = x214
-+ DirName: CN = x215
-+ DirName: CN = x216
-+ DirName: CN = x217
-+ DirName: CN = x218
-+ DirName: CN = x219
-+ DirName: CN = x220
-+ DirName: CN = x221
-+ DirName: CN = x222
-+ DirName: CN = x223
-+ DirName: CN = x224
-+ DirName: CN = x225
-+ DirName: CN = x226
-+ DirName: CN = x227
-+ DirName: CN = x228
-+ DirName: CN = x229
-+ DirName: CN = x230
-+ DirName: CN = x231
-+ DirName: CN = x232
-+ DirName: CN = x233
-+ DirName: CN = x234
-+ DirName: CN = x235
-+ DirName: CN = x236
-+ DirName: CN = x237
-+ DirName: CN = x238
-+ DirName: CN = x239
-+ DirName: CN = x240
-+ DirName: CN = x241
-+ DirName: CN = x242
-+ DirName: CN = x243
-+ DirName: CN = x244
-+ DirName: CN = x245
-+ DirName: CN = x246
-+ DirName: CN = x247
-+ DirName: CN = x248
-+ DirName: CN = x249
-+ DirName: CN = x250
-+ DirName: CN = x251
-+ DirName: CN = x252
-+ DirName: CN = x253
-+ DirName: CN = x254
-+ DirName: CN = x255
-+ DirName: CN = x256
-+ DirName: CN = x257
-+ DirName: CN = x258
-+ DirName: CN = x259
-+ DirName: CN = x260
-+ DirName: CN = x261
-+ DirName: CN = x262
-+ DirName: CN = x263
-+ DirName: CN = x264
-+ DirName: CN = x265
-+ DirName: CN = x266
-+ DirName: CN = x267
-+ DirName: CN = x268
-+ DirName: CN = x269
-+ DirName: CN = x270
-+ DirName: CN = x271
-+ DirName: CN = x272
-+ DirName: CN = x273
-+ DirName: CN = x274
-+ DirName: CN = x275
-+ DirName: CN = x276
-+ DirName: CN = x277
-+ DirName: CN = x278
-+ DirName: CN = x279
-+ DirName: CN = x280
-+ DirName: CN = x281
-+ DirName: CN = x282
-+ DirName: CN = x283
-+ DirName: CN = x284
-+ DirName: CN = x285
-+ DirName: CN = x286
-+ DirName: CN = x287
-+ DirName: CN = x288
-+ DirName: CN = x289
-+ DirName: CN = x290
-+ DirName: CN = x291
-+ DirName: CN = x292
-+ DirName: CN = x293
-+ DirName: CN = x294
-+ DirName: CN = x295
-+ DirName: CN = x296
-+ DirName: CN = x297
-+ DirName: CN = x298
-+ DirName: CN = x299
-+ DirName: CN = x300
-+ DirName: CN = x301
-+ DirName: CN = x302
-+ DirName: CN = x303
-+ DirName: CN = x304
-+ DirName: CN = x305
-+ DirName: CN = x306
-+ DirName: CN = x307
-+ DirName: CN = x308
-+ DirName: CN = x309
-+ DirName: CN = x310
-+ DirName: CN = x311
-+ DirName: CN = x312
-+ DirName: CN = x313
-+ DirName: CN = x314
-+ DirName: CN = x315
-+ DirName: CN = x316
-+ DirName: CN = x317
-+ DirName: CN = x318
-+ DirName: CN = x319
-+ DirName: CN = x320
-+ DirName: CN = x321
-+ DirName: CN = x322
-+ DirName: CN = x323
-+ DirName: CN = x324
-+ DirName: CN = x325
-+ DirName: CN = x326
-+ DirName: CN = x327
-+ DirName: CN = x328
-+ DirName: CN = x329
-+ DirName: CN = x330
-+ DirName: CN = x331
-+ DirName: CN = x332
-+ DirName: CN = x333
-+ DirName: CN = x334
-+ DirName: CN = x335
-+ DirName: CN = x336
-+ DirName: CN = x337
-+ DirName: CN = x338
-+ DirName: CN = x339
-+ DirName: CN = x340
-+ DirName: CN = x341
-+ DirName: CN = x342
-+ DirName: CN = x343
-+ DirName: CN = x344
-+ DirName: CN = x345
-+ DirName: CN = x346
-+ DirName: CN = x347
-+ DirName: CN = x348
-+ DirName: CN = x349
-+ DirName: CN = x350
-+ DirName: CN = x351
-+ DirName: CN = x352
-+ DirName: CN = x353
-+ DirName: CN = x354
-+ DirName: CN = x355
-+ DirName: CN = x356
-+ DirName: CN = x357
-+ DirName: CN = x358
-+ DirName: CN = x359
-+ DirName: CN = x360
-+ DirName: CN = x361
-+ DirName: CN = x362
-+ DirName: CN = x363
-+ DirName: CN = x364
-+ DirName: CN = x365
-+ DirName: CN = x366
-+ DirName: CN = x367
-+ DirName: CN = x368
-+ DirName: CN = x369
-+ DirName: CN = x370
-+ DirName: CN = x371
-+ DirName: CN = x372
-+ DirName: CN = x373
-+ DirName: CN = x374
-+ DirName: CN = x375
-+ DirName: CN = x376
-+ DirName: CN = x377
-+ DirName: CN = x378
-+ DirName: CN = x379
-+ DirName: CN = x380
-+ DirName: CN = x381
-+ DirName: CN = x382
-+ DirName: CN = x383
-+ DirName: CN = x384
-+ DirName: CN = x385
-+ DirName: CN = x386
-+ DirName: CN = x387
-+ DirName: CN = x388
-+ DirName: CN = x389
-+ DirName: CN = x390
-+ DirName: CN = x391
-+ DirName: CN = x392
-+ DirName: CN = x393
-+ DirName: CN = x394
-+ DirName: CN = x395
-+ DirName: CN = x396
-+ DirName: CN = x397
-+ DirName: CN = x398
-+ DirName: CN = x399
-+ DirName: CN = x400
-+ DirName: CN = x401
-+ DirName: CN = x402
-+ DirName: CN = x403
-+ DirName: CN = x404
-+ DirName: CN = x405
-+ DirName: CN = x406
-+ DirName: CN = x407
-+ DirName: CN = x408
-+ DirName: CN = x409
-+ DirName: CN = x410
-+ DirName: CN = x411
-+ DirName: CN = x412
-+ DirName: CN = x413
-+ DirName: CN = x414
-+ DirName: CN = x415
-+ DirName: CN = x416
-+ DirName: CN = x417
-+ DirName: CN = x418
-+ DirName: CN = x419
-+ DirName: CN = x420
-+ DirName: CN = x421
-+ DirName: CN = x422
-+ DirName: CN = x423
-+ DirName: CN = x424
-+ DirName: CN = x425
-+ DirName: CN = x426
-+ DirName: CN = x427
-+ DirName: CN = x428
-+ DirName: CN = x429
-+ DirName: CN = x430
-+ DirName: CN = x431
-+ DirName: CN = x432
-+ DirName: CN = x433
-+ DirName: CN = x434
-+ DirName: CN = x435
-+ DirName: CN = x436
-+ DirName: CN = x437
-+ DirName: CN = x438
-+ DirName: CN = x439
-+ DirName: CN = x440
-+ DirName: CN = x441
-+ DirName: CN = x442
-+ DirName: CN = x443
-+ DirName: CN = x444
-+ DirName: CN = x445
-+ DirName: CN = x446
-+ DirName: CN = x447
-+ DirName: CN = x448
-+ DirName: CN = x449
-+ DirName: CN = x450
-+ DirName: CN = x451
-+ DirName: CN = x452
-+ DirName: CN = x453
-+ DirName: CN = x454
-+ DirName: CN = x455
-+ DirName: CN = x456
-+ DirName: CN = x457
-+ DirName: CN = x458
-+ DirName: CN = x459
-+ DirName: CN = x460
-+ DirName: CN = x461
-+ DirName: CN = x462
-+ DirName: CN = x463
-+ DirName: CN = x464
-+ DirName: CN = x465
-+ DirName: CN = x466
-+ DirName: CN = x467
-+ DirName: CN = x468
-+ DirName: CN = x469
-+ DirName: CN = x470
-+ DirName: CN = x471
-+ DirName: CN = x472
-+ DirName: CN = x473
-+ DirName: CN = x474
-+ DirName: CN = x475
-+ DirName: CN = x476
-+ DirName: CN = x477
-+ DirName: CN = x478
-+ DirName: CN = x479
-+ DirName: CN = x480
-+ DirName: CN = x481
-+ DirName: CN = x482
-+ DirName: CN = x483
-+ DirName: CN = x484
-+ DirName: CN = x485
-+ DirName: CN = x486
-+ DirName: CN = x487
-+ DirName: CN = x488
-+ DirName: CN = x489
-+ DirName: CN = x490
-+ DirName: CN = x491
-+ DirName: CN = x492
-+ DirName: CN = x493
-+ DirName: CN = x494
-+ DirName: CN = x495
-+ DirName: CN = x496
-+ DirName: CN = x497
-+ DirName: CN = x498
-+ DirName: CN = x499
-+ DirName: CN = x500
-+ DirName: CN = x501
-+ DirName: CN = x502
-+ DirName: CN = x503
-+ DirName: CN = x504
-+ DirName: CN = x505
-+ DirName: CN = x506
-+ DirName: CN = x507
-+ DirName: CN = x508
-+ DirName: CN = x509
-+ DirName: CN = x510
-+ DirName: CN = x511
-+ DirName: CN = x512
-+ DirName: CN = x513
-+ DirName: CN = x514
-+ DirName: CN = x515
-+ DirName: CN = x516
-+ DirName: CN = x517
-+ DirName: CN = x518
-+ DirName: CN = x519
-+ DirName: CN = x520
-+ DirName: CN = x521
-+ DirName: CN = x522
-+ DirName: CN = x523
-+ DirName: CN = x524
-+ DirName: CN = x525
-+ DirName: CN = x526
-+ DirName: CN = x527
-+ DirName: CN = x528
-+ DirName: CN = x529
-+ DirName: CN = x530
-+ DirName: CN = x531
-+ DirName: CN = x532
-+ DirName: CN = x533
-+ DirName: CN = x534
-+ DirName: CN = x535
-+ DirName: CN = x536
-+ DirName: CN = x537
-+ DirName: CN = x538
-+ DirName: CN = x539
-+ DirName: CN = x540
-+ DirName: CN = x541
-+ DirName: CN = x542
-+ DirName: CN = x543
-+ DirName: CN = x544
-+ DirName: CN = x545
-+ DirName: CN = x546
-+ DirName: CN = x547
-+ DirName: CN = x548
-+ DirName: CN = x549
-+ DirName: CN = x550
-+ DirName: CN = x551
-+ DirName: CN = x552
-+ DirName: CN = x553
-+ DirName: CN = x554
-+ DirName: CN = x555
-+ DirName: CN = x556
-+ DirName: CN = x557
-+ DirName: CN = x558
-+ DirName: CN = x559
-+ DirName: CN = x560
-+ DirName: CN = x561
-+ DirName: CN = x562
-+ DirName: CN = x563
-+ DirName: CN = x564
-+ DirName: CN = x565
-+ DirName: CN = x566
-+ DirName: CN = x567
-+ DirName: CN = x568
-+ DirName: CN = x569
-+ DirName: CN = x570
-+ DirName: CN = x571
-+ DirName: CN = x572
-+ DirName: CN = x573
-+ DirName: CN = x574
-+ DirName: CN = x575
-+ DirName: CN = x576
-+ DirName: CN = x577
-+ DirName: CN = x578
-+ DirName: CN = x579
-+ DirName: CN = x580
-+ DirName: CN = x581
-+ DirName: CN = x582
-+ DirName: CN = x583
-+ DirName: CN = x584
-+ DirName: CN = x585
-+ DirName: CN = x586
-+ DirName: CN = x587
-+ DirName: CN = x588
-+ DirName: CN = x589
-+ DirName: CN = x590
-+ DirName: CN = x591
-+ DirName: CN = x592
-+ DirName: CN = x593
-+ DirName: CN = x594
-+ DirName: CN = x595
-+ DirName: CN = x596
-+ DirName: CN = x597
-+ DirName: CN = x598
-+ DirName: CN = x599
-+ DirName: CN = x600
-+ DirName: CN = x601
-+ DirName: CN = x602
-+ DirName: CN = x603
-+ DirName: CN = x604
-+ DirName: CN = x605
-+ DirName: CN = x606
-+ DirName: CN = x607
-+ DirName: CN = x608
-+ DirName: CN = x609
-+ DirName: CN = x610
-+ DirName: CN = x611
-+ DirName: CN = x612
-+ DirName: CN = x613
-+ DirName: CN = x614
-+ DirName: CN = x615
-+ DirName: CN = x616
-+ DirName: CN = x617
-+ DirName: CN = x618
-+ DirName: CN = x619
-+ DirName: CN = x620
-+ DirName: CN = x621
-+ DirName: CN = x622
-+ DirName: CN = x623
-+ DirName: CN = x624
-+ DirName: CN = x625
-+ DirName: CN = x626
-+ DirName: CN = x627
-+ DirName: CN = x628
-+ DirName: CN = x629
-+ DirName: CN = x630
-+ DirName: CN = x631
-+ DirName: CN = x632
-+ DirName: CN = x633
-+ DirName: CN = x634
-+ DirName: CN = x635
-+ DirName: CN = x636
-+ DirName: CN = x637
-+ DirName: CN = x638
-+ DirName: CN = x639
-+ DirName: CN = x640
-+ DirName: CN = x641
-+ DirName: CN = x642
-+ DirName: CN = x643
-+ DirName: CN = x644
-+ DirName: CN = x645
-+ DirName: CN = x646
-+ DirName: CN = x647
-+ DirName: CN = x648
-+ DirName: CN = x649
-+ DirName: CN = x650
-+ DirName: CN = x651
-+ DirName: CN = x652
-+ DirName: CN = x653
-+ DirName: CN = x654
-+ DirName: CN = x655
-+ DirName: CN = x656
-+ DirName: CN = x657
-+ DirName: CN = x658
-+ DirName: CN = x659
-+ DirName: CN = x660
-+ DirName: CN = x661
-+ DirName: CN = x662
-+ DirName: CN = x663
-+ DirName: CN = x664
-+ DirName: CN = x665
-+ DirName: CN = x666
-+ DirName: CN = x667
-+ DirName: CN = x668
-+ DirName: CN = x669
-+ DirName: CN = x670
-+ DirName: CN = x671
-+ DirName: CN = x672
-+ DirName: CN = x673
-+ DirName: CN = x674
-+ DirName: CN = x675
-+ DirName: CN = x676
-+ DirName: CN = x677
-+ DirName: CN = x678
-+ DirName: CN = x679
-+ DirName: CN = x680
-+ DirName: CN = x681
-+ DirName: CN = x682
-+ DirName: CN = x683
-+ DirName: CN = x684
-+ DirName: CN = x685
-+ DirName: CN = x686
-+ DirName: CN = x687
-+ DirName: CN = x688
-+ DirName: CN = x689
-+ DirName: CN = x690
-+ DirName: CN = x691
-+ DirName: CN = x692
-+ DirName: CN = x693
-+ DirName: CN = x694
-+ DirName: CN = x695
-+ DirName: CN = x696
-+ DirName: CN = x697
-+ DirName: CN = x698
-+ DirName: CN = x699
-+ DirName: CN = x700
-+ DirName: CN = x701
-+ DirName: CN = x702
-+ DirName: CN = x703
-+ DirName: CN = x704
-+ DirName: CN = x705
-+ DirName: CN = x706
-+ DirName: CN = x707
-+ DirName: CN = x708
-+ DirName: CN = x709
-+ DirName: CN = x710
-+ DirName: CN = x711
-+ DirName: CN = x712
-+ DirName: CN = x713
-+ DirName: CN = x714
-+ DirName: CN = x715
-+ DirName: CN = x716
-+ DirName: CN = x717
-+ DirName: CN = x718
-+ DirName: CN = x719
-+ DirName: CN = x720
-+ DirName: CN = x721
-+ DirName: CN = x722
-+ DirName: CN = x723
-+ DirName: CN = x724
-+ DirName: CN = x725
-+ DirName: CN = x726
-+ DirName: CN = x727
-+ DirName: CN = x728
-+ DirName: CN = x729
-+ DirName: CN = x730
-+ DirName: CN = x731
-+ DirName: CN = x732
-+ DirName: CN = x733
-+ DirName: CN = x734
-+ DirName: CN = x735
-+ DirName: CN = x736
-+ DirName: CN = x737
-+ DirName: CN = x738
-+ DirName: CN = x739
-+ DirName: CN = x740
-+ DirName: CN = x741
-+ DirName: CN = x742
-+ DirName: CN = x743
-+ DirName: CN = x744
-+ DirName: CN = x745
-+ DirName: CN = x746
-+ DirName: CN = x747
-+ DirName: CN = x748
-+ DirName: CN = x749
-+ DirName: CN = x750
-+ DirName: CN = x751
-+ DirName: CN = x752
-+ DirName: CN = x753
-+ DirName: CN = x754
-+ DirName: CN = x755
-+ DirName: CN = x756
-+ DirName: CN = x757
-+ DirName: CN = x758
-+ DirName: CN = x759
-+ DirName: CN = x760
-+ DirName: CN = x761
-+ DirName: CN = x762
-+ DirName: CN = x763
-+ DirName: CN = x764
-+ DirName: CN = x765
-+ DirName: CN = x766
-+ DirName: CN = x767
-+ DirName: CN = x768
-+ DirName: CN = x769
-+ DirName: CN = x770
-+ DirName: CN = x771
-+ DirName: CN = x772
-+ DirName: CN = x773
-+ DirName: CN = x774
-+ DirName: CN = x775
-+ DirName: CN = x776
-+ DirName: CN = x777
-+ DirName: CN = x778
-+ DirName: CN = x779
-+ DirName: CN = x780
-+ DirName: CN = x781
-+ DirName: CN = x782
-+ DirName: CN = x783
-+ DirName: CN = x784
-+ DirName: CN = x785
-+ DirName: CN = x786
-+ DirName: CN = x787
-+ DirName: CN = x788
-+ DirName: CN = x789
-+ DirName: CN = x790
-+ DirName: CN = x791
-+ DirName: CN = x792
-+ DirName: CN = x793
-+ DirName: CN = x794
-+ DirName: CN = x795
-+ DirName: CN = x796
-+ DirName: CN = x797
-+ DirName: CN = x798
-+ DirName: CN = x799
-+ DirName: CN = x800
-+ DirName: CN = x801
-+ DirName: CN = x802
-+ DirName: CN = x803
-+ DirName: CN = x804
-+ DirName: CN = x805
-+ DirName: CN = x806
-+ DirName: CN = x807
-+ DirName: CN = x808
-+ DirName: CN = x809
-+ DirName: CN = x810
-+ DirName: CN = x811
-+ DirName: CN = x812
-+ DirName: CN = x813
-+ DirName: CN = x814
-+ DirName: CN = x815
-+ DirName: CN = x816
-+ DirName: CN = x817
-+ DirName: CN = x818
-+ DirName: CN = x819
-+ DirName: CN = x820
-+ DirName: CN = x821
-+ DirName: CN = x822
-+ DirName: CN = x823
-+ DirName: CN = x824
-+ DirName: CN = x825
-+ DirName: CN = x826
-+ DirName: CN = x827
-+ DirName: CN = x828
-+ DirName: CN = x829
-+ DirName: CN = x830
-+ DirName: CN = x831
-+ DirName: CN = x832
-+ DirName: CN = x833
-+ DirName: CN = x834
-+ DirName: CN = x835
-+ DirName: CN = x836
-+ DirName: CN = x837
-+ DirName: CN = x838
-+ DirName: CN = x839
-+ DirName: CN = x840
-+ DirName: CN = x841
-+ DirName: CN = x842
-+ DirName: CN = x843
-+ DirName: CN = x844
-+ DirName: CN = x845
-+ DirName: CN = x846
-+ DirName: CN = x847
-+ DirName: CN = x848
-+ DirName: CN = x849
-+ DirName: CN = x850
-+ DirName: CN = x851
-+ DirName: CN = x852
-+ DirName: CN = x853
-+ DirName: CN = x854
-+ DirName: CN = x855
-+ DirName: CN = x856
-+ DirName: CN = x857
-+ DirName: CN = x858
-+ DirName: CN = x859
-+ DirName: CN = x860
-+ DirName: CN = x861
-+ DirName: CN = x862
-+ DirName: CN = x863
-+ DirName: CN = x864
-+ DirName: CN = x865
-+ DirName: CN = x866
-+ DirName: CN = x867
-+ DirName: CN = x868
-+ DirName: CN = x869
-+ DirName: CN = x870
-+ DirName: CN = x871
-+ DirName: CN = x872
-+ DirName: CN = x873
-+ DirName: CN = x874
-+ DirName: CN = x875
-+ DirName: CN = x876
-+ DirName: CN = x877
-+ DirName: CN = x878
-+ DirName: CN = x879
-+ DirName: CN = x880
-+ DirName: CN = x881
-+ DirName: CN = x882
-+ DirName: CN = x883
-+ DirName: CN = x884
-+ DirName: CN = x885
-+ DirName: CN = x886
-+ DirName: CN = x887
-+ DirName: CN = x888
-+ DirName: CN = x889
-+ DirName: CN = x890
-+ DirName: CN = x891
-+ DirName: CN = x892
-+ DirName: CN = x893
-+ DirName: CN = x894
-+ DirName: CN = x895
-+ DirName: CN = x896
-+ DirName: CN = x897
-+ DirName: CN = x898
-+ DirName: CN = x899
-+ DirName: CN = x900
-+ DirName: CN = x901
-+ DirName: CN = x902
-+ DirName: CN = x903
-+ DirName: CN = x904
-+ DirName: CN = x905
-+ DirName: CN = x906
-+ DirName: CN = x907
-+ DirName: CN = x908
-+ DirName: CN = x909
-+ DirName: CN = x910
-+ DirName: CN = x911
-+ DirName: CN = x912
-+ DirName: CN = x913
-+ DirName: CN = x914
-+ DirName: CN = x915
-+ DirName: CN = x916
-+ DirName: CN = x917
-+ DirName: CN = x918
-+ DirName: CN = x919
-+ DirName: CN = x920
-+ DirName: CN = x921
-+ DirName: CN = x922
-+ DirName: CN = x923
-+ DirName: CN = x924
-+ DirName: CN = x925
-+ DirName: CN = x926
-+ DirName: CN = x927
-+ DirName: CN = x928
-+ DirName: CN = x929
-+ DirName: CN = x930
-+ DirName: CN = x931
-+ DirName: CN = x932
-+ DirName: CN = x933
-+ DirName: CN = x934
-+ DirName: CN = x935
-+ DirName: CN = x936
-+ DirName: CN = x937
-+ DirName: CN = x938
-+ DirName: CN = x939
-+ DirName: CN = x940
-+ DirName: CN = x941
-+ DirName: CN = x942
-+ DirName: CN = x943
-+ DirName: CN = x944
-+ DirName: CN = x945
-+ DirName: CN = x946
-+ DirName: CN = x947
-+ DirName: CN = x948
-+ DirName: CN = x949
-+ DirName: CN = x950
-+ DirName: CN = x951
-+ DirName: CN = x952
-+ DirName: CN = x953
-+ DirName: CN = x954
-+ DirName: CN = x955
-+ DirName: CN = x956
-+ DirName: CN = x957
-+ DirName: CN = x958
-+ DirName: CN = x959
-+ DirName: CN = x960
-+ DirName: CN = x961
-+ DirName: CN = x962
-+ DirName: CN = x963
-+ DirName: CN = x964
-+ DirName: CN = x965
-+ DirName: CN = x966
-+ DirName: CN = x967
-+ DirName: CN = x968
-+ DirName: CN = x969
-+ DirName: CN = x970
-+ DirName: CN = x971
-+ DirName: CN = x972
-+ DirName: CN = x973
-+ DirName: CN = x974
-+ DirName: CN = x975
-+ DirName: CN = x976
-+ DirName: CN = x977
-+ DirName: CN = x978
-+ DirName: CN = x979
-+ DirName: CN = x980
-+ DirName: CN = x981
-+ DirName: CN = x982
-+ DirName: CN = x983
-+ DirName: CN = x984
-+ DirName: CN = x985
-+ DirName: CN = x986
-+ DirName: CN = x987
-+ DirName: CN = x988
-+ DirName: CN = x989
-+ DirName: CN = x990
-+ DirName: CN = x991
-+ DirName: CN = x992
-+ DirName: CN = x993
-+ DirName: CN = x994
-+ DirName: CN = x995
-+ DirName: CN = x996
-+ DirName: CN = x997
-+ DirName: CN = x998
-+ DirName: CN = x999
-+ DirName: CN = x1000
-+ DirName: CN = x1001
-+ DirName: CN = x1002
-+ DirName: CN = x1003
-+ DirName: CN = x1004
-+ DirName: CN = x1005
-+ DirName: CN = x1006
-+ DirName: CN = x1007
-+ DirName: CN = x1008
-+ DirName: CN = x1009
-+ DirName: CN = x1010
-+ DirName: CN = x1011
-+ DirName: CN = x1012
-+ DirName: CN = x1013
-+ DirName: CN = x1014
-+ DirName: CN = x1015
-+ DirName: CN = x1016
-+ DirName: CN = x1017
-+ DirName: CN = x1018
-+ DirName: CN = x1019
-+ DirName: CN = x1020
-+ DirName: CN = x1021
-+ DirName: CN = x1022
-+ DirName: CN = x1023
-+ DirName: CN = x1024
-
- Signature Algorithm: sha256WithRSAEncryption
- 75:8f:ad:5f:a0:8c:a2:05:18:d8:98:a6:c5:1d:7c:b9:11:f4:
-@@ -2070,7 +2070,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 3c:e5:fc:81:88:59:a8:50:16:c1:7f:d7:e5:2a:e5:96:7f:c2:f6:f5
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Root
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-diff --git a/net/data/verify_certificate_chain_unittest/many-names/toomany-dirnames-permitted.pem b/net/data/verify_certificate_chain_unittest/many-names/toomany-dirnames-permitted.pem
-index 44730ad8ea73c..91acca564e7ed 100644
---- a/net/data/verify_certificate_chain_unittest/many-names/toomany-dirnames-permitted.pem
-+++ b/net/data/verify_certificate_chain_unittest/many-names/toomany-dirnames-permitted.pem
-@@ -1,4 +1,4 @@
--[Created by: generate-chains.py]
-+[Created by: ./generate-chains.py]
-
- A chain containing a large number of permitted directory name
- constraints and directory names, above the limit.
-@@ -8,7 +8,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 2f:ab:b4:3d:dc:c0:77:80:2a:03:09:ad:43:74:02:bf:98:d8:db
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Intermediate
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-@@ -505,7 +505,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 3c:e5:fc:81:88:59:a8:50:16:c1:7f:d7:e5:2a:e5:96:7f:c2:f6:fd
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Root
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-@@ -554,1031 +554,1031 @@ Certificate:
- CA:TRUE
- X509v3 Name Constraints:
- Permitted:
-- DirName:CN = t0
-- DirName:CN = t1
-- DirName:CN = t2
-- DirName:CN = t3
-- DirName:CN = t4
-- DirName:CN = t5
-- DirName:CN = t6
-- DirName:CN = t7
-- DirName:CN = t8
-- DirName:CN = t9
-- DirName:CN = t10
-- DirName:CN = t11
-- DirName:CN = t12
-- DirName:CN = t13
-- DirName:CN = t14
-- DirName:CN = t15
-- DirName:CN = t16
-- DirName:CN = t17
-- DirName:CN = t18
-- DirName:CN = t19
-- DirName:CN = t20
-- DirName:CN = t21
-- DirName:CN = t22
-- DirName:CN = t23
-- DirName:CN = t24
-- DirName:CN = t25
-- DirName:CN = t26
-- DirName:CN = t27
-- DirName:CN = t28
-- DirName:CN = t29
-- DirName:CN = t30
-- DirName:CN = t31
-- DirName:CN = t32
-- DirName:CN = t33
-- DirName:CN = t34
-- DirName:CN = t35
-- DirName:CN = t36
-- DirName:CN = t37
-- DirName:CN = t38
-- DirName:CN = t39
-- DirName:CN = t40
-- DirName:CN = t41
-- DirName:CN = t42
-- DirName:CN = t43
-- DirName:CN = t44
-- DirName:CN = t45
-- DirName:CN = t46
-- DirName:CN = t47
-- DirName:CN = t48
-- DirName:CN = t49
-- DirName:CN = t50
-- DirName:CN = t51
-- DirName:CN = t52
-- DirName:CN = t53
-- DirName:CN = t54
-- DirName:CN = t55
-- DirName:CN = t56
-- DirName:CN = t57
-- DirName:CN = t58
-- DirName:CN = t59
-- DirName:CN = t60
-- DirName:CN = t61
-- DirName:CN = t62
-- DirName:CN = t63
-- DirName:CN = t64
-- DirName:CN = t65
-- DirName:CN = t66
-- DirName:CN = t67
-- DirName:CN = t68
-- DirName:CN = t69
-- DirName:CN = t70
-- DirName:CN = t71
-- DirName:CN = t72
-- DirName:CN = t73
-- DirName:CN = t74
-- DirName:CN = t75
-- DirName:CN = t76
-- DirName:CN = t77
-- DirName:CN = t78
-- DirName:CN = t79
-- DirName:CN = t80
-- DirName:CN = t81
-- DirName:CN = t82
-- DirName:CN = t83
-- DirName:CN = t84
-- DirName:CN = t85
-- DirName:CN = t86
-- DirName:CN = t87
-- DirName:CN = t88
-- DirName:CN = t89
-- DirName:CN = t90
-- DirName:CN = t91
-- DirName:CN = t92
-- DirName:CN = t93
-- DirName:CN = t94
-- DirName:CN = t95
-- DirName:CN = t96
-- DirName:CN = t97
-- DirName:CN = t98
-- DirName:CN = t99
-- DirName:CN = t100
-- DirName:CN = t101
-- DirName:CN = t102
-- DirName:CN = t103
-- DirName:CN = t104
-- DirName:CN = t105
-- DirName:CN = t106
-- DirName:CN = t107
-- DirName:CN = t108
-- DirName:CN = t109
-- DirName:CN = t110
-- DirName:CN = t111
-- DirName:CN = t112
-- DirName:CN = t113
-- DirName:CN = t114
-- DirName:CN = t115
-- DirName:CN = t116
-- DirName:CN = t117
-- DirName:CN = t118
-- DirName:CN = t119
-- DirName:CN = t120
-- DirName:CN = t121
-- DirName:CN = t122
-- DirName:CN = t123
-- DirName:CN = t124
-- DirName:CN = t125
-- DirName:CN = t126
-- DirName:CN = t127
-- DirName:CN = t128
-- DirName:CN = t129
-- DirName:CN = t130
-- DirName:CN = t131
-- DirName:CN = t132
-- DirName:CN = t133
-- DirName:CN = t134
-- DirName:CN = t135
-- DirName:CN = t136
-- DirName:CN = t137
-- DirName:CN = t138
-- DirName:CN = t139
-- DirName:CN = t140
-- DirName:CN = t141
-- DirName:CN = t142
-- DirName:CN = t143
-- DirName:CN = t144
-- DirName:CN = t145
-- DirName:CN = t146
-- DirName:CN = t147
-- DirName:CN = t148
-- DirName:CN = t149
-- DirName:CN = t150
-- DirName:CN = t151
-- DirName:CN = t152
-- DirName:CN = t153
-- DirName:CN = t154
-- DirName:CN = t155
-- DirName:CN = t156
-- DirName:CN = t157
-- DirName:CN = t158
-- DirName:CN = t159
-- DirName:CN = t160
-- DirName:CN = t161
-- DirName:CN = t162
-- DirName:CN = t163
-- DirName:CN = t164
-- DirName:CN = t165
-- DirName:CN = t166
-- DirName:CN = t167
-- DirName:CN = t168
-- DirName:CN = t169
-- DirName:CN = t170
-- DirName:CN = t171
-- DirName:CN = t172
-- DirName:CN = t173
-- DirName:CN = t174
-- DirName:CN = t175
-- DirName:CN = t176
-- DirName:CN = t177
-- DirName:CN = t178
-- DirName:CN = t179
-- DirName:CN = t180
-- DirName:CN = t181
-- DirName:CN = t182
-- DirName:CN = t183
-- DirName:CN = t184
-- DirName:CN = t185
-- DirName:CN = t186
-- DirName:CN = t187
-- DirName:CN = t188
-- DirName:CN = t189
-- DirName:CN = t190
-- DirName:CN = t191
-- DirName:CN = t192
-- DirName:CN = t193
-- DirName:CN = t194
-- DirName:CN = t195
-- DirName:CN = t196
-- DirName:CN = t197
-- DirName:CN = t198
-- DirName:CN = t199
-- DirName:CN = t200
-- DirName:CN = t201
-- DirName:CN = t202
-- DirName:CN = t203
-- DirName:CN = t204
-- DirName:CN = t205
-- DirName:CN = t206
-- DirName:CN = t207
-- DirName:CN = t208
-- DirName:CN = t209
-- DirName:CN = t210
-- DirName:CN = t211
-- DirName:CN = t212
-- DirName:CN = t213
-- DirName:CN = t214
-- DirName:CN = t215
-- DirName:CN = t216
-- DirName:CN = t217
-- DirName:CN = t218
-- DirName:CN = t219
-- DirName:CN = t220
-- DirName:CN = t221
-- DirName:CN = t222
-- DirName:CN = t223
-- DirName:CN = t224
-- DirName:CN = t225
-- DirName:CN = t226
-- DirName:CN = t227
-- DirName:CN = t228
-- DirName:CN = t229
-- DirName:CN = t230
-- DirName:CN = t231
-- DirName:CN = t232
-- DirName:CN = t233
-- DirName:CN = t234
-- DirName:CN = t235
-- DirName:CN = t236
-- DirName:CN = t237
-- DirName:CN = t238
-- DirName:CN = t239
-- DirName:CN = t240
-- DirName:CN = t241
-- DirName:CN = t242
-- DirName:CN = t243
-- DirName:CN = t244
-- DirName:CN = t245
-- DirName:CN = t246
-- DirName:CN = t247
-- DirName:CN = t248
-- DirName:CN = t249
-- DirName:CN = t250
-- DirName:CN = t251
-- DirName:CN = t252
-- DirName:CN = t253
-- DirName:CN = t254
-- DirName:CN = t255
-- DirName:CN = t256
-- DirName:CN = t257
-- DirName:CN = t258
-- DirName:CN = t259
-- DirName:CN = t260
-- DirName:CN = t261
-- DirName:CN = t262
-- DirName:CN = t263
-- DirName:CN = t264
-- DirName:CN = t265
-- DirName:CN = t266
-- DirName:CN = t267
-- DirName:CN = t268
-- DirName:CN = t269
-- DirName:CN = t270
-- DirName:CN = t271
-- DirName:CN = t272
-- DirName:CN = t273
-- DirName:CN = t274
-- DirName:CN = t275
-- DirName:CN = t276
-- DirName:CN = t277
-- DirName:CN = t278
-- DirName:CN = t279
-- DirName:CN = t280
-- DirName:CN = t281
-- DirName:CN = t282
-- DirName:CN = t283
-- DirName:CN = t284
-- DirName:CN = t285
-- DirName:CN = t286
-- DirName:CN = t287
-- DirName:CN = t288
-- DirName:CN = t289
-- DirName:CN = t290
-- DirName:CN = t291
-- DirName:CN = t292
-- DirName:CN = t293
-- DirName:CN = t294
-- DirName:CN = t295
-- DirName:CN = t296
-- DirName:CN = t297
-- DirName:CN = t298
-- DirName:CN = t299
-- DirName:CN = t300
-- DirName:CN = t301
-- DirName:CN = t302
-- DirName:CN = t303
-- DirName:CN = t304
-- DirName:CN = t305
-- DirName:CN = t306
-- DirName:CN = t307
-- DirName:CN = t308
-- DirName:CN = t309
-- DirName:CN = t310
-- DirName:CN = t311
-- DirName:CN = t312
-- DirName:CN = t313
-- DirName:CN = t314
-- DirName:CN = t315
-- DirName:CN = t316
-- DirName:CN = t317
-- DirName:CN = t318
-- DirName:CN = t319
-- DirName:CN = t320
-- DirName:CN = t321
-- DirName:CN = t322
-- DirName:CN = t323
-- DirName:CN = t324
-- DirName:CN = t325
-- DirName:CN = t326
-- DirName:CN = t327
-- DirName:CN = t328
-- DirName:CN = t329
-- DirName:CN = t330
-- DirName:CN = t331
-- DirName:CN = t332
-- DirName:CN = t333
-- DirName:CN = t334
-- DirName:CN = t335
-- DirName:CN = t336
-- DirName:CN = t337
-- DirName:CN = t338
-- DirName:CN = t339
-- DirName:CN = t340
-- DirName:CN = t341
-- DirName:CN = t342
-- DirName:CN = t343
-- DirName:CN = t344
-- DirName:CN = t345
-- DirName:CN = t346
-- DirName:CN = t347
-- DirName:CN = t348
-- DirName:CN = t349
-- DirName:CN = t350
-- DirName:CN = t351
-- DirName:CN = t352
-- DirName:CN = t353
-- DirName:CN = t354
-- DirName:CN = t355
-- DirName:CN = t356
-- DirName:CN = t357
-- DirName:CN = t358
-- DirName:CN = t359
-- DirName:CN = t360
-- DirName:CN = t361
-- DirName:CN = t362
-- DirName:CN = t363
-- DirName:CN = t364
-- DirName:CN = t365
-- DirName:CN = t366
-- DirName:CN = t367
-- DirName:CN = t368
-- DirName:CN = t369
-- DirName:CN = t370
-- DirName:CN = t371
-- DirName:CN = t372
-- DirName:CN = t373
-- DirName:CN = t374
-- DirName:CN = t375
-- DirName:CN = t376
-- DirName:CN = t377
-- DirName:CN = t378
-- DirName:CN = t379
-- DirName:CN = t380
-- DirName:CN = t381
-- DirName:CN = t382
-- DirName:CN = t383
-- DirName:CN = t384
-- DirName:CN = t385
-- DirName:CN = t386
-- DirName:CN = t387
-- DirName:CN = t388
-- DirName:CN = t389
-- DirName:CN = t390
-- DirName:CN = t391
-- DirName:CN = t392
-- DirName:CN = t393
-- DirName:CN = t394
-- DirName:CN = t395
-- DirName:CN = t396
-- DirName:CN = t397
-- DirName:CN = t398
-- DirName:CN = t399
-- DirName:CN = t400
-- DirName:CN = t401
-- DirName:CN = t402
-- DirName:CN = t403
-- DirName:CN = t404
-- DirName:CN = t405
-- DirName:CN = t406
-- DirName:CN = t407
-- DirName:CN = t408
-- DirName:CN = t409
-- DirName:CN = t410
-- DirName:CN = t411
-- DirName:CN = t412
-- DirName:CN = t413
-- DirName:CN = t414
-- DirName:CN = t415
-- DirName:CN = t416
-- DirName:CN = t417
-- DirName:CN = t418
-- DirName:CN = t419
-- DirName:CN = t420
-- DirName:CN = t421
-- DirName:CN = t422
-- DirName:CN = t423
-- DirName:CN = t424
-- DirName:CN = t425
-- DirName:CN = t426
-- DirName:CN = t427
-- DirName:CN = t428
-- DirName:CN = t429
-- DirName:CN = t430
-- DirName:CN = t431
-- DirName:CN = t432
-- DirName:CN = t433
-- DirName:CN = t434
-- DirName:CN = t435
-- DirName:CN = t436
-- DirName:CN = t437
-- DirName:CN = t438
-- DirName:CN = t439
-- DirName:CN = t440
-- DirName:CN = t441
-- DirName:CN = t442
-- DirName:CN = t443
-- DirName:CN = t444
-- DirName:CN = t445
-- DirName:CN = t446
-- DirName:CN = t447
-- DirName:CN = t448
-- DirName:CN = t449
-- DirName:CN = t450
-- DirName:CN = t451
-- DirName:CN = t452
-- DirName:CN = t453
-- DirName:CN = t454
-- DirName:CN = t455
-- DirName:CN = t456
-- DirName:CN = t457
-- DirName:CN = t458
-- DirName:CN = t459
-- DirName:CN = t460
-- DirName:CN = t461
-- DirName:CN = t462
-- DirName:CN = t463
-- DirName:CN = t464
-- DirName:CN = t465
-- DirName:CN = t466
-- DirName:CN = t467
-- DirName:CN = t468
-- DirName:CN = t469
-- DirName:CN = t470
-- DirName:CN = t471
-- DirName:CN = t472
-- DirName:CN = t473
-- DirName:CN = t474
-- DirName:CN = t475
-- DirName:CN = t476
-- DirName:CN = t477
-- DirName:CN = t478
-- DirName:CN = t479
-- DirName:CN = t480
-- DirName:CN = t481
-- DirName:CN = t482
-- DirName:CN = t483
-- DirName:CN = t484
-- DirName:CN = t485
-- DirName:CN = t486
-- DirName:CN = t487
-- DirName:CN = t488
-- DirName:CN = t489
-- DirName:CN = t490
-- DirName:CN = t491
-- DirName:CN = t492
-- DirName:CN = t493
-- DirName:CN = t494
-- DirName:CN = t495
-- DirName:CN = t496
-- DirName:CN = t497
-- DirName:CN = t498
-- DirName:CN = t499
-- DirName:CN = t500
-- DirName:CN = t501
-- DirName:CN = t502
-- DirName:CN = t503
-- DirName:CN = t504
-- DirName:CN = t505
-- DirName:CN = t506
-- DirName:CN = t507
-- DirName:CN = t508
-- DirName:CN = t509
-- DirName:CN = t510
-- DirName:CN = t511
-- DirName:CN = t512
-- DirName:CN = t513
-- DirName:CN = t514
-- DirName:CN = t515
-- DirName:CN = t516
-- DirName:CN = t517
-- DirName:CN = t518
-- DirName:CN = t519
-- DirName:CN = t520
-- DirName:CN = t521
-- DirName:CN = t522
-- DirName:CN = t523
-- DirName:CN = t524
-- DirName:CN = t525
-- DirName:CN = t526
-- DirName:CN = t527
-- DirName:CN = t528
-- DirName:CN = t529
-- DirName:CN = t530
-- DirName:CN = t531
-- DirName:CN = t532
-- DirName:CN = t533
-- DirName:CN = t534
-- DirName:CN = t535
-- DirName:CN = t536
-- DirName:CN = t537
-- DirName:CN = t538
-- DirName:CN = t539
-- DirName:CN = t540
-- DirName:CN = t541
-- DirName:CN = t542
-- DirName:CN = t543
-- DirName:CN = t544
-- DirName:CN = t545
-- DirName:CN = t546
-- DirName:CN = t547
-- DirName:CN = t548
-- DirName:CN = t549
-- DirName:CN = t550
-- DirName:CN = t551
-- DirName:CN = t552
-- DirName:CN = t553
-- DirName:CN = t554
-- DirName:CN = t555
-- DirName:CN = t556
-- DirName:CN = t557
-- DirName:CN = t558
-- DirName:CN = t559
-- DirName:CN = t560
-- DirName:CN = t561
-- DirName:CN = t562
-- DirName:CN = t563
-- DirName:CN = t564
-- DirName:CN = t565
-- DirName:CN = t566
-- DirName:CN = t567
-- DirName:CN = t568
-- DirName:CN = t569
-- DirName:CN = t570
-- DirName:CN = t571
-- DirName:CN = t572
-- DirName:CN = t573
-- DirName:CN = t574
-- DirName:CN = t575
-- DirName:CN = t576
-- DirName:CN = t577
-- DirName:CN = t578
-- DirName:CN = t579
-- DirName:CN = t580
-- DirName:CN = t581
-- DirName:CN = t582
-- DirName:CN = t583
-- DirName:CN = t584
-- DirName:CN = t585
-- DirName:CN = t586
-- DirName:CN = t587
-- DirName:CN = t588
-- DirName:CN = t589
-- DirName:CN = t590
-- DirName:CN = t591
-- DirName:CN = t592
-- DirName:CN = t593
-- DirName:CN = t594
-- DirName:CN = t595
-- DirName:CN = t596
-- DirName:CN = t597
-- DirName:CN = t598
-- DirName:CN = t599
-- DirName:CN = t600
-- DirName:CN = t601
-- DirName:CN = t602
-- DirName:CN = t603
-- DirName:CN = t604
-- DirName:CN = t605
-- DirName:CN = t606
-- DirName:CN = t607
-- DirName:CN = t608
-- DirName:CN = t609
-- DirName:CN = t610
-- DirName:CN = t611
-- DirName:CN = t612
-- DirName:CN = t613
-- DirName:CN = t614
-- DirName:CN = t615
-- DirName:CN = t616
-- DirName:CN = t617
-- DirName:CN = t618
-- DirName:CN = t619
-- DirName:CN = t620
-- DirName:CN = t621
-- DirName:CN = t622
-- DirName:CN = t623
-- DirName:CN = t624
-- DirName:CN = t625
-- DirName:CN = t626
-- DirName:CN = t627
-- DirName:CN = t628
-- DirName:CN = t629
-- DirName:CN = t630
-- DirName:CN = t631
-- DirName:CN = t632
-- DirName:CN = t633
-- DirName:CN = t634
-- DirName:CN = t635
-- DirName:CN = t636
-- DirName:CN = t637
-- DirName:CN = t638
-- DirName:CN = t639
-- DirName:CN = t640
-- DirName:CN = t641
-- DirName:CN = t642
-- DirName:CN = t643
-- DirName:CN = t644
-- DirName:CN = t645
-- DirName:CN = t646
-- DirName:CN = t647
-- DirName:CN = t648
-- DirName:CN = t649
-- DirName:CN = t650
-- DirName:CN = t651
-- DirName:CN = t652
-- DirName:CN = t653
-- DirName:CN = t654
-- DirName:CN = t655
-- DirName:CN = t656
-- DirName:CN = t657
-- DirName:CN = t658
-- DirName:CN = t659
-- DirName:CN = t660
-- DirName:CN = t661
-- DirName:CN = t662
-- DirName:CN = t663
-- DirName:CN = t664
-- DirName:CN = t665
-- DirName:CN = t666
-- DirName:CN = t667
-- DirName:CN = t668
-- DirName:CN = t669
-- DirName:CN = t670
-- DirName:CN = t671
-- DirName:CN = t672
-- DirName:CN = t673
-- DirName:CN = t674
-- DirName:CN = t675
-- DirName:CN = t676
-- DirName:CN = t677
-- DirName:CN = t678
-- DirName:CN = t679
-- DirName:CN = t680
-- DirName:CN = t681
-- DirName:CN = t682
-- DirName:CN = t683
-- DirName:CN = t684
-- DirName:CN = t685
-- DirName:CN = t686
-- DirName:CN = t687
-- DirName:CN = t688
-- DirName:CN = t689
-- DirName:CN = t690
-- DirName:CN = t691
-- DirName:CN = t692
-- DirName:CN = t693
-- DirName:CN = t694
-- DirName:CN = t695
-- DirName:CN = t696
-- DirName:CN = t697
-- DirName:CN = t698
-- DirName:CN = t699
-- DirName:CN = t700
-- DirName:CN = t701
-- DirName:CN = t702
-- DirName:CN = t703
-- DirName:CN = t704
-- DirName:CN = t705
-- DirName:CN = t706
-- DirName:CN = t707
-- DirName:CN = t708
-- DirName:CN = t709
-- DirName:CN = t710
-- DirName:CN = t711
-- DirName:CN = t712
-- DirName:CN = t713
-- DirName:CN = t714
-- DirName:CN = t715
-- DirName:CN = t716
-- DirName:CN = t717
-- DirName:CN = t718
-- DirName:CN = t719
-- DirName:CN = t720
-- DirName:CN = t721
-- DirName:CN = t722
-- DirName:CN = t723
-- DirName:CN = t724
-- DirName:CN = t725
-- DirName:CN = t726
-- DirName:CN = t727
-- DirName:CN = t728
-- DirName:CN = t729
-- DirName:CN = t730
-- DirName:CN = t731
-- DirName:CN = t732
-- DirName:CN = t733
-- DirName:CN = t734
-- DirName:CN = t735
-- DirName:CN = t736
-- DirName:CN = t737
-- DirName:CN = t738
-- DirName:CN = t739
-- DirName:CN = t740
-- DirName:CN = t741
-- DirName:CN = t742
-- DirName:CN = t743
-- DirName:CN = t744
-- DirName:CN = t745
-- DirName:CN = t746
-- DirName:CN = t747
-- DirName:CN = t748
-- DirName:CN = t749
-- DirName:CN = t750
-- DirName:CN = t751
-- DirName:CN = t752
-- DirName:CN = t753
-- DirName:CN = t754
-- DirName:CN = t755
-- DirName:CN = t756
-- DirName:CN = t757
-- DirName:CN = t758
-- DirName:CN = t759
-- DirName:CN = t760
-- DirName:CN = t761
-- DirName:CN = t762
-- DirName:CN = t763
-- DirName:CN = t764
-- DirName:CN = t765
-- DirName:CN = t766
-- DirName:CN = t767
-- DirName:CN = t768
-- DirName:CN = t769
-- DirName:CN = t770
-- DirName:CN = t771
-- DirName:CN = t772
-- DirName:CN = t773
-- DirName:CN = t774
-- DirName:CN = t775
-- DirName:CN = t776
-- DirName:CN = t777
-- DirName:CN = t778
-- DirName:CN = t779
-- DirName:CN = t780
-- DirName:CN = t781
-- DirName:CN = t782
-- DirName:CN = t783
-- DirName:CN = t784
-- DirName:CN = t785
-- DirName:CN = t786
-- DirName:CN = t787
-- DirName:CN = t788
-- DirName:CN = t789
-- DirName:CN = t790
-- DirName:CN = t791
-- DirName:CN = t792
-- DirName:CN = t793
-- DirName:CN = t794
-- DirName:CN = t795
-- DirName:CN = t796
-- DirName:CN = t797
-- DirName:CN = t798
-- DirName:CN = t799
-- DirName:CN = t800
-- DirName:CN = t801
-- DirName:CN = t802
-- DirName:CN = t803
-- DirName:CN = t804
-- DirName:CN = t805
-- DirName:CN = t806
-- DirName:CN = t807
-- DirName:CN = t808
-- DirName:CN = t809
-- DirName:CN = t810
-- DirName:CN = t811
-- DirName:CN = t812
-- DirName:CN = t813
-- DirName:CN = t814
-- DirName:CN = t815
-- DirName:CN = t816
-- DirName:CN = t817
-- DirName:CN = t818
-- DirName:CN = t819
-- DirName:CN = t820
-- DirName:CN = t821
-- DirName:CN = t822
-- DirName:CN = t823
-- DirName:CN = t824
-- DirName:CN = t825
-- DirName:CN = t826
-- DirName:CN = t827
-- DirName:CN = t828
-- DirName:CN = t829
-- DirName:CN = t830
-- DirName:CN = t831
-- DirName:CN = t832
-- DirName:CN = t833
-- DirName:CN = t834
-- DirName:CN = t835
-- DirName:CN = t836
-- DirName:CN = t837
-- DirName:CN = t838
-- DirName:CN = t839
-- DirName:CN = t840
-- DirName:CN = t841
-- DirName:CN = t842
-- DirName:CN = t843
-- DirName:CN = t844
-- DirName:CN = t845
-- DirName:CN = t846
-- DirName:CN = t847
-- DirName:CN = t848
-- DirName:CN = t849
-- DirName:CN = t850
-- DirName:CN = t851
-- DirName:CN = t852
-- DirName:CN = t853
-- DirName:CN = t854
-- DirName:CN = t855
-- DirName:CN = t856
-- DirName:CN = t857
-- DirName:CN = t858
-- DirName:CN = t859
-- DirName:CN = t860
-- DirName:CN = t861
-- DirName:CN = t862
-- DirName:CN = t863
-- DirName:CN = t864
-- DirName:CN = t865
-- DirName:CN = t866
-- DirName:CN = t867
-- DirName:CN = t868
-- DirName:CN = t869
-- DirName:CN = t870
-- DirName:CN = t871
-- DirName:CN = t872
-- DirName:CN = t873
-- DirName:CN = t874
-- DirName:CN = t875
-- DirName:CN = t876
-- DirName:CN = t877
-- DirName:CN = t878
-- DirName:CN = t879
-- DirName:CN = t880
-- DirName:CN = t881
-- DirName:CN = t882
-- DirName:CN = t883
-- DirName:CN = t884
-- DirName:CN = t885
-- DirName:CN = t886
-- DirName:CN = t887
-- DirName:CN = t888
-- DirName:CN = t889
-- DirName:CN = t890
-- DirName:CN = t891
-- DirName:CN = t892
-- DirName:CN = t893
-- DirName:CN = t894
-- DirName:CN = t895
-- DirName:CN = t896
-- DirName:CN = t897
-- DirName:CN = t898
-- DirName:CN = t899
-- DirName:CN = t900
-- DirName:CN = t901
-- DirName:CN = t902
-- DirName:CN = t903
-- DirName:CN = t904
-- DirName:CN = t905
-- DirName:CN = t906
-- DirName:CN = t907
-- DirName:CN = t908
-- DirName:CN = t909
-- DirName:CN = t910
-- DirName:CN = t911
-- DirName:CN = t912
-- DirName:CN = t913
-- DirName:CN = t914
-- DirName:CN = t915
-- DirName:CN = t916
-- DirName:CN = t917
-- DirName:CN = t918
-- DirName:CN = t919
-- DirName:CN = t920
-- DirName:CN = t921
-- DirName:CN = t922
-- DirName:CN = t923
-- DirName:CN = t924
-- DirName:CN = t925
-- DirName:CN = t926
-- DirName:CN = t927
-- DirName:CN = t928
-- DirName:CN = t929
-- DirName:CN = t930
-- DirName:CN = t931
-- DirName:CN = t932
-- DirName:CN = t933
-- DirName:CN = t934
-- DirName:CN = t935
-- DirName:CN = t936
-- DirName:CN = t937
-- DirName:CN = t938
-- DirName:CN = t939
-- DirName:CN = t940
-- DirName:CN = t941
-- DirName:CN = t942
-- DirName:CN = t943
-- DirName:CN = t944
-- DirName:CN = t945
-- DirName:CN = t946
-- DirName:CN = t947
-- DirName:CN = t948
-- DirName:CN = t949
-- DirName:CN = t950
-- DirName:CN = t951
-- DirName:CN = t952
-- DirName:CN = t953
-- DirName:CN = t954
-- DirName:CN = t955
-- DirName:CN = t956
-- DirName:CN = t957
-- DirName:CN = t958
-- DirName:CN = t959
-- DirName:CN = t960
-- DirName:CN = t961
-- DirName:CN = t962
-- DirName:CN = t963
-- DirName:CN = t964
-- DirName:CN = t965
-- DirName:CN = t966
-- DirName:CN = t967
-- DirName:CN = t968
-- DirName:CN = t969
-- DirName:CN = t970
-- DirName:CN = t971
-- DirName:CN = t972
-- DirName:CN = t973
-- DirName:CN = t974
-- DirName:CN = t975
-- DirName:CN = t976
-- DirName:CN = t977
-- DirName:CN = t978
-- DirName:CN = t979
-- DirName:CN = t980
-- DirName:CN = t981
-- DirName:CN = t982
-- DirName:CN = t983
-- DirName:CN = t984
-- DirName:CN = t985
-- DirName:CN = t986
-- DirName:CN = t987
-- DirName:CN = t988
-- DirName:CN = t989
-- DirName:CN = t990
-- DirName:CN = t991
-- DirName:CN = t992
-- DirName:CN = t993
-- DirName:CN = t994
-- DirName:CN = t995
-- DirName:CN = t996
-- DirName:CN = t997
-- DirName:CN = t998
-- DirName:CN = t999
-- DirName:CN = t1000
-- DirName:CN = t1001
-- DirName:CN = t1002
-- DirName:CN = t1003
-- DirName:CN = t1004
-- DirName:CN = t1005
-- DirName:CN = t1006
-- DirName:CN = t1007
-- DirName:CN = t1008
-- DirName:CN = t1009
-- DirName:CN = t1010
-- DirName:CN = t1011
-- DirName:CN = t1012
-- DirName:CN = t1013
-- DirName:CN = t1014
-- DirName:CN = t1015
-- DirName:CN = t1016
-- DirName:CN = t1017
-- DirName:CN = t1018
-- DirName:CN = t1019
-- DirName:CN = t1020
-- DirName:CN = t1021
-- DirName:CN = t1022
-- DirName:CN = t1023
-- DirName:CN = t1024
-+ DirName: CN = t0
-+ DirName: CN = t1
-+ DirName: CN = t2
-+ DirName: CN = t3
-+ DirName: CN = t4
-+ DirName: CN = t5
-+ DirName: CN = t6
-+ DirName: CN = t7
-+ DirName: CN = t8
-+ DirName: CN = t9
-+ DirName: CN = t10
-+ DirName: CN = t11
-+ DirName: CN = t12
-+ DirName: CN = t13
-+ DirName: CN = t14
-+ DirName: CN = t15
-+ DirName: CN = t16
-+ DirName: CN = t17
-+ DirName: CN = t18
-+ DirName: CN = t19
-+ DirName: CN = t20
-+ DirName: CN = t21
-+ DirName: CN = t22
-+ DirName: CN = t23
-+ DirName: CN = t24
-+ DirName: CN = t25
-+ DirName: CN = t26
-+ DirName: CN = t27
-+ DirName: CN = t28
-+ DirName: CN = t29
-+ DirName: CN = t30
-+ DirName: CN = t31
-+ DirName: CN = t32
-+ DirName: CN = t33
-+ DirName: CN = t34
-+ DirName: CN = t35
-+ DirName: CN = t36
-+ DirName: CN = t37
-+ DirName: CN = t38
-+ DirName: CN = t39
-+ DirName: CN = t40
-+ DirName: CN = t41
-+ DirName: CN = t42
-+ DirName: CN = t43
-+ DirName: CN = t44
-+ DirName: CN = t45
-+ DirName: CN = t46
-+ DirName: CN = t47
-+ DirName: CN = t48
-+ DirName: CN = t49
-+ DirName: CN = t50
-+ DirName: CN = t51
-+ DirName: CN = t52
-+ DirName: CN = t53
-+ DirName: CN = t54
-+ DirName: CN = t55
-+ DirName: CN = t56
-+ DirName: CN = t57
-+ DirName: CN = t58
-+ DirName: CN = t59
-+ DirName: CN = t60
-+ DirName: CN = t61
-+ DirName: CN = t62
-+ DirName: CN = t63
-+ DirName: CN = t64
-+ DirName: CN = t65
-+ DirName: CN = t66
-+ DirName: CN = t67
-+ DirName: CN = t68
-+ DirName: CN = t69
-+ DirName: CN = t70
-+ DirName: CN = t71
-+ DirName: CN = t72
-+ DirName: CN = t73
-+ DirName: CN = t74
-+ DirName: CN = t75
-+ DirName: CN = t76
-+ DirName: CN = t77
-+ DirName: CN = t78
-+ DirName: CN = t79
-+ DirName: CN = t80
-+ DirName: CN = t81
-+ DirName: CN = t82
-+ DirName: CN = t83
-+ DirName: CN = t84
-+ DirName: CN = t85
-+ DirName: CN = t86
-+ DirName: CN = t87
-+ DirName: CN = t88
-+ DirName: CN = t89
-+ DirName: CN = t90
-+ DirName: CN = t91
-+ DirName: CN = t92
-+ DirName: CN = t93
-+ DirName: CN = t94
-+ DirName: CN = t95
-+ DirName: CN = t96
-+ DirName: CN = t97
-+ DirName: CN = t98
-+ DirName: CN = t99
-+ DirName: CN = t100
-+ DirName: CN = t101
-+ DirName: CN = t102
-+ DirName: CN = t103
-+ DirName: CN = t104
-+ DirName: CN = t105
-+ DirName: CN = t106
-+ DirName: CN = t107
-+ DirName: CN = t108
-+ DirName: CN = t109
-+ DirName: CN = t110
-+ DirName: CN = t111
-+ DirName: CN = t112
-+ DirName: CN = t113
-+ DirName: CN = t114
-+ DirName: CN = t115
-+ DirName: CN = t116
-+ DirName: CN = t117
-+ DirName: CN = t118
-+ DirName: CN = t119
-+ DirName: CN = t120
-+ DirName: CN = t121
-+ DirName: CN = t122
-+ DirName: CN = t123
-+ DirName: CN = t124
-+ DirName: CN = t125
-+ DirName: CN = t126
-+ DirName: CN = t127
-+ DirName: CN = t128
-+ DirName: CN = t129
-+ DirName: CN = t130
-+ DirName: CN = t131
-+ DirName: CN = t132
-+ DirName: CN = t133
-+ DirName: CN = t134
-+ DirName: CN = t135
-+ DirName: CN = t136
-+ DirName: CN = t137
-+ DirName: CN = t138
-+ DirName: CN = t139
-+ DirName: CN = t140
-+ DirName: CN = t141
-+ DirName: CN = t142
-+ DirName: CN = t143
-+ DirName: CN = t144
-+ DirName: CN = t145
-+ DirName: CN = t146
-+ DirName: CN = t147
-+ DirName: CN = t148
-+ DirName: CN = t149
-+ DirName: CN = t150
-+ DirName: CN = t151
-+ DirName: CN = t152
-+ DirName: CN = t153
-+ DirName: CN = t154
-+ DirName: CN = t155
-+ DirName: CN = t156
-+ DirName: CN = t157
-+ DirName: CN = t158
-+ DirName: CN = t159
-+ DirName: CN = t160
-+ DirName: CN = t161
-+ DirName: CN = t162
-+ DirName: CN = t163
-+ DirName: CN = t164
-+ DirName: CN = t165
-+ DirName: CN = t166
-+ DirName: CN = t167
-+ DirName: CN = t168
-+ DirName: CN = t169
-+ DirName: CN = t170
-+ DirName: CN = t171
-+ DirName: CN = t172
-+ DirName: CN = t173
-+ DirName: CN = t174
-+ DirName: CN = t175
-+ DirName: CN = t176
-+ DirName: CN = t177
-+ DirName: CN = t178
-+ DirName: CN = t179
-+ DirName: CN = t180
-+ DirName: CN = t181
-+ DirName: CN = t182
-+ DirName: CN = t183
-+ DirName: CN = t184
-+ DirName: CN = t185
-+ DirName: CN = t186
-+ DirName: CN = t187
-+ DirName: CN = t188
-+ DirName: CN = t189
-+ DirName: CN = t190
-+ DirName: CN = t191
-+ DirName: CN = t192
-+ DirName: CN = t193
-+ DirName: CN = t194
-+ DirName: CN = t195
-+ DirName: CN = t196
-+ DirName: CN = t197
-+ DirName: CN = t198
-+ DirName: CN = t199
-+ DirName: CN = t200
-+ DirName: CN = t201
-+ DirName: CN = t202
-+ DirName: CN = t203
-+ DirName: CN = t204
-+ DirName: CN = t205
-+ DirName: CN = t206
-+ DirName: CN = t207
-+ DirName: CN = t208
-+ DirName: CN = t209
-+ DirName: CN = t210
-+ DirName: CN = t211
-+ DirName: CN = t212
-+ DirName: CN = t213
-+ DirName: CN = t214
-+ DirName: CN = t215
-+ DirName: CN = t216
-+ DirName: CN = t217
-+ DirName: CN = t218
-+ DirName: CN = t219
-+ DirName: CN = t220
-+ DirName: CN = t221
-+ DirName: CN = t222
-+ DirName: CN = t223
-+ DirName: CN = t224
-+ DirName: CN = t225
-+ DirName: CN = t226
-+ DirName: CN = t227
-+ DirName: CN = t228
-+ DirName: CN = t229
-+ DirName: CN = t230
-+ DirName: CN = t231
-+ DirName: CN = t232
-+ DirName: CN = t233
-+ DirName: CN = t234
-+ DirName: CN = t235
-+ DirName: CN = t236
-+ DirName: CN = t237
-+ DirName: CN = t238
-+ DirName: CN = t239
-+ DirName: CN = t240
-+ DirName: CN = t241
-+ DirName: CN = t242
-+ DirName: CN = t243
-+ DirName: CN = t244
-+ DirName: CN = t245
-+ DirName: CN = t246
-+ DirName: CN = t247
-+ DirName: CN = t248
-+ DirName: CN = t249
-+ DirName: CN = t250
-+ DirName: CN = t251
-+ DirName: CN = t252
-+ DirName: CN = t253
-+ DirName: CN = t254
-+ DirName: CN = t255
-+ DirName: CN = t256
-+ DirName: CN = t257
-+ DirName: CN = t258
-+ DirName: CN = t259
-+ DirName: CN = t260
-+ DirName: CN = t261
-+ DirName: CN = t262
-+ DirName: CN = t263
-+ DirName: CN = t264
-+ DirName: CN = t265
-+ DirName: CN = t266
-+ DirName: CN = t267
-+ DirName: CN = t268
-+ DirName: CN = t269
-+ DirName: CN = t270
-+ DirName: CN = t271
-+ DirName: CN = t272
-+ DirName: CN = t273
-+ DirName: CN = t274
-+ DirName: CN = t275
-+ DirName: CN = t276
-+ DirName: CN = t277
-+ DirName: CN = t278
-+ DirName: CN = t279
-+ DirName: CN = t280
-+ DirName: CN = t281
-+ DirName: CN = t282
-+ DirName: CN = t283
-+ DirName: CN = t284
-+ DirName: CN = t285
-+ DirName: CN = t286
-+ DirName: CN = t287
-+ DirName: CN = t288
-+ DirName: CN = t289
-+ DirName: CN = t290
-+ DirName: CN = t291
-+ DirName: CN = t292
-+ DirName: CN = t293
-+ DirName: CN = t294
-+ DirName: CN = t295
-+ DirName: CN = t296
-+ DirName: CN = t297
-+ DirName: CN = t298
-+ DirName: CN = t299
-+ DirName: CN = t300
-+ DirName: CN = t301
-+ DirName: CN = t302
-+ DirName: CN = t303
-+ DirName: CN = t304
-+ DirName: CN = t305
-+ DirName: CN = t306
-+ DirName: CN = t307
-+ DirName: CN = t308
-+ DirName: CN = t309
-+ DirName: CN = t310
-+ DirName: CN = t311
-+ DirName: CN = t312
-+ DirName: CN = t313
-+ DirName: CN = t314
-+ DirName: CN = t315
-+ DirName: CN = t316
-+ DirName: CN = t317
-+ DirName: CN = t318
-+ DirName: CN = t319
-+ DirName: CN = t320
-+ DirName: CN = t321
-+ DirName: CN = t322
-+ DirName: CN = t323
-+ DirName: CN = t324
-+ DirName: CN = t325
-+ DirName: CN = t326
-+ DirName: CN = t327
-+ DirName: CN = t328
-+ DirName: CN = t329
-+ DirName: CN = t330
-+ DirName: CN = t331
-+ DirName: CN = t332
-+ DirName: CN = t333
-+ DirName: CN = t334
-+ DirName: CN = t335
-+ DirName: CN = t336
-+ DirName: CN = t337
-+ DirName: CN = t338
-+ DirName: CN = t339
-+ DirName: CN = t340
-+ DirName: CN = t341
-+ DirName: CN = t342
-+ DirName: CN = t343
-+ DirName: CN = t344
-+ DirName: CN = t345
-+ DirName: CN = t346
-+ DirName: CN = t347
-+ DirName: CN = t348
-+ DirName: CN = t349
-+ DirName: CN = t350
-+ DirName: CN = t351
-+ DirName: CN = t352
-+ DirName: CN = t353
-+ DirName: CN = t354
-+ DirName: CN = t355
-+ DirName: CN = t356
-+ DirName: CN = t357
-+ DirName: CN = t358
-+ DirName: CN = t359
-+ DirName: CN = t360
-+ DirName: CN = t361
-+ DirName: CN = t362
-+ DirName: CN = t363
-+ DirName: CN = t364
-+ DirName: CN = t365
-+ DirName: CN = t366
-+ DirName: CN = t367
-+ DirName: CN = t368
-+ DirName: CN = t369
-+ DirName: CN = t370
-+ DirName: CN = t371
-+ DirName: CN = t372
-+ DirName: CN = t373
-+ DirName: CN = t374
-+ DirName: CN = t375
-+ DirName: CN = t376
-+ DirName: CN = t377
-+ DirName: CN = t378
-+ DirName: CN = t379
-+ DirName: CN = t380
-+ DirName: CN = t381
-+ DirName: CN = t382
-+ DirName: CN = t383
-+ DirName: CN = t384
-+ DirName: CN = t385
-+ DirName: CN = t386
-+ DirName: CN = t387
-+ DirName: CN = t388
-+ DirName: CN = t389
-+ DirName: CN = t390
-+ DirName: CN = t391
-+ DirName: CN = t392
-+ DirName: CN = t393
-+ DirName: CN = t394
-+ DirName: CN = t395
-+ DirName: CN = t396
-+ DirName: CN = t397
-+ DirName: CN = t398
-+ DirName: CN = t399
-+ DirName: CN = t400
-+ DirName: CN = t401
-+ DirName: CN = t402
-+ DirName: CN = t403
-+ DirName: CN = t404
-+ DirName: CN = t405
-+ DirName: CN = t406
-+ DirName: CN = t407
-+ DirName: CN = t408
-+ DirName: CN = t409
-+ DirName: CN = t410
-+ DirName: CN = t411
-+ DirName: CN = t412
-+ DirName: CN = t413
-+ DirName: CN = t414
-+ DirName: CN = t415
-+ DirName: CN = t416
-+ DirName: CN = t417
-+ DirName: CN = t418
-+ DirName: CN = t419
-+ DirName: CN = t420
-+ DirName: CN = t421
-+ DirName: CN = t422
-+ DirName: CN = t423
-+ DirName: CN = t424
-+ DirName: CN = t425
-+ DirName: CN = t426
-+ DirName: CN = t427
-+ DirName: CN = t428
-+ DirName: CN = t429
-+ DirName: CN = t430
-+ DirName: CN = t431
-+ DirName: CN = t432
-+ DirName: CN = t433
-+ DirName: CN = t434
-+ DirName: CN = t435
-+ DirName: CN = t436
-+ DirName: CN = t437
-+ DirName: CN = t438
-+ DirName: CN = t439
-+ DirName: CN = t440
-+ DirName: CN = t441
-+ DirName: CN = t442
-+ DirName: CN = t443
-+ DirName: CN = t444
-+ DirName: CN = t445
-+ DirName: CN = t446
-+ DirName: CN = t447
-+ DirName: CN = t448
-+ DirName: CN = t449
-+ DirName: CN = t450
-+ DirName: CN = t451
-+ DirName: CN = t452
-+ DirName: CN = t453
-+ DirName: CN = t454
-+ DirName: CN = t455
-+ DirName: CN = t456
-+ DirName: CN = t457
-+ DirName: CN = t458
-+ DirName: CN = t459
-+ DirName: CN = t460
-+ DirName: CN = t461
-+ DirName: CN = t462
-+ DirName: CN = t463
-+ DirName: CN = t464
-+ DirName: CN = t465
-+ DirName: CN = t466
-+ DirName: CN = t467
-+ DirName: CN = t468
-+ DirName: CN = t469
-+ DirName: CN = t470
-+ DirName: CN = t471
-+ DirName: CN = t472
-+ DirName: CN = t473
-+ DirName: CN = t474
-+ DirName: CN = t475
-+ DirName: CN = t476
-+ DirName: CN = t477
-+ DirName: CN = t478
-+ DirName: CN = t479
-+ DirName: CN = t480
-+ DirName: CN = t481
-+ DirName: CN = t482
-+ DirName: CN = t483
-+ DirName: CN = t484
-+ DirName: CN = t485
-+ DirName: CN = t486
-+ DirName: CN = t487
-+ DirName: CN = t488
-+ DirName: CN = t489
-+ DirName: CN = t490
-+ DirName: CN = t491
-+ DirName: CN = t492
-+ DirName: CN = t493
-+ DirName: CN = t494
-+ DirName: CN = t495
-+ DirName: CN = t496
-+ DirName: CN = t497
-+ DirName: CN = t498
-+ DirName: CN = t499
-+ DirName: CN = t500
-+ DirName: CN = t501
-+ DirName: CN = t502
-+ DirName: CN = t503
-+ DirName: CN = t504
-+ DirName: CN = t505
-+ DirName: CN = t506
-+ DirName: CN = t507
-+ DirName: CN = t508
-+ DirName: CN = t509
-+ DirName: CN = t510
-+ DirName: CN = t511
-+ DirName: CN = t512
-+ DirName: CN = t513
-+ DirName: CN = t514
-+ DirName: CN = t515
-+ DirName: CN = t516
-+ DirName: CN = t517
-+ DirName: CN = t518
-+ DirName: CN = t519
-+ DirName: CN = t520
-+ DirName: CN = t521
-+ DirName: CN = t522
-+ DirName: CN = t523
-+ DirName: CN = t524
-+ DirName: CN = t525
-+ DirName: CN = t526
-+ DirName: CN = t527
-+ DirName: CN = t528
-+ DirName: CN = t529
-+ DirName: CN = t530
-+ DirName: CN = t531
-+ DirName: CN = t532
-+ DirName: CN = t533
-+ DirName: CN = t534
-+ DirName: CN = t535
-+ DirName: CN = t536
-+ DirName: CN = t537
-+ DirName: CN = t538
-+ DirName: CN = t539
-+ DirName: CN = t540
-+ DirName: CN = t541
-+ DirName: CN = t542
-+ DirName: CN = t543
-+ DirName: CN = t544
-+ DirName: CN = t545
-+ DirName: CN = t546
-+ DirName: CN = t547
-+ DirName: CN = t548
-+ DirName: CN = t549
-+ DirName: CN = t550
-+ DirName: CN = t551
-+ DirName: CN = t552
-+ DirName: CN = t553
-+ DirName: CN = t554
-+ DirName: CN = t555
-+ DirName: CN = t556
-+ DirName: CN = t557
-+ DirName: CN = t558
-+ DirName: CN = t559
-+ DirName: CN = t560
-+ DirName: CN = t561
-+ DirName: CN = t562
-+ DirName: CN = t563
-+ DirName: CN = t564
-+ DirName: CN = t565
-+ DirName: CN = t566
-+ DirName: CN = t567
-+ DirName: CN = t568
-+ DirName: CN = t569
-+ DirName: CN = t570
-+ DirName: CN = t571
-+ DirName: CN = t572
-+ DirName: CN = t573
-+ DirName: CN = t574
-+ DirName: CN = t575
-+ DirName: CN = t576
-+ DirName: CN = t577
-+ DirName: CN = t578
-+ DirName: CN = t579
-+ DirName: CN = t580
-+ DirName: CN = t581
-+ DirName: CN = t582
-+ DirName: CN = t583
-+ DirName: CN = t584
-+ DirName: CN = t585
-+ DirName: CN = t586
-+ DirName: CN = t587
-+ DirName: CN = t588
-+ DirName: CN = t589
-+ DirName: CN = t590
-+ DirName: CN = t591
-+ DirName: CN = t592
-+ DirName: CN = t593
-+ DirName: CN = t594
-+ DirName: CN = t595
-+ DirName: CN = t596
-+ DirName: CN = t597
-+ DirName: CN = t598
-+ DirName: CN = t599
-+ DirName: CN = t600
-+ DirName: CN = t601
-+ DirName: CN = t602
-+ DirName: CN = t603
-+ DirName: CN = t604
-+ DirName: CN = t605
-+ DirName: CN = t606
-+ DirName: CN = t607
-+ DirName: CN = t608
-+ DirName: CN = t609
-+ DirName: CN = t610
-+ DirName: CN = t611
-+ DirName: CN = t612
-+ DirName: CN = t613
-+ DirName: CN = t614
-+ DirName: CN = t615
-+ DirName: CN = t616
-+ DirName: CN = t617
-+ DirName: CN = t618
-+ DirName: CN = t619
-+ DirName: CN = t620
-+ DirName: CN = t621
-+ DirName: CN = t622
-+ DirName: CN = t623
-+ DirName: CN = t624
-+ DirName: CN = t625
-+ DirName: CN = t626
-+ DirName: CN = t627
-+ DirName: CN = t628
-+ DirName: CN = t629
-+ DirName: CN = t630
-+ DirName: CN = t631
-+ DirName: CN = t632
-+ DirName: CN = t633
-+ DirName: CN = t634
-+ DirName: CN = t635
-+ DirName: CN = t636
-+ DirName: CN = t637
-+ DirName: CN = t638
-+ DirName: CN = t639
-+ DirName: CN = t640
-+ DirName: CN = t641
-+ DirName: CN = t642
-+ DirName: CN = t643
-+ DirName: CN = t644
-+ DirName: CN = t645
-+ DirName: CN = t646
-+ DirName: CN = t647
-+ DirName: CN = t648
-+ DirName: CN = t649
-+ DirName: CN = t650
-+ DirName: CN = t651
-+ DirName: CN = t652
-+ DirName: CN = t653
-+ DirName: CN = t654
-+ DirName: CN = t655
-+ DirName: CN = t656
-+ DirName: CN = t657
-+ DirName: CN = t658
-+ DirName: CN = t659
-+ DirName: CN = t660
-+ DirName: CN = t661
-+ DirName: CN = t662
-+ DirName: CN = t663
-+ DirName: CN = t664
-+ DirName: CN = t665
-+ DirName: CN = t666
-+ DirName: CN = t667
-+ DirName: CN = t668
-+ DirName: CN = t669
-+ DirName: CN = t670
-+ DirName: CN = t671
-+ DirName: CN = t672
-+ DirName: CN = t673
-+ DirName: CN = t674
-+ DirName: CN = t675
-+ DirName: CN = t676
-+ DirName: CN = t677
-+ DirName: CN = t678
-+ DirName: CN = t679
-+ DirName: CN = t680
-+ DirName: CN = t681
-+ DirName: CN = t682
-+ DirName: CN = t683
-+ DirName: CN = t684
-+ DirName: CN = t685
-+ DirName: CN = t686
-+ DirName: CN = t687
-+ DirName: CN = t688
-+ DirName: CN = t689
-+ DirName: CN = t690
-+ DirName: CN = t691
-+ DirName: CN = t692
-+ DirName: CN = t693
-+ DirName: CN = t694
-+ DirName: CN = t695
-+ DirName: CN = t696
-+ DirName: CN = t697
-+ DirName: CN = t698
-+ DirName: CN = t699
-+ DirName: CN = t700
-+ DirName: CN = t701
-+ DirName: CN = t702
-+ DirName: CN = t703
-+ DirName: CN = t704
-+ DirName: CN = t705
-+ DirName: CN = t706
-+ DirName: CN = t707
-+ DirName: CN = t708
-+ DirName: CN = t709
-+ DirName: CN = t710
-+ DirName: CN = t711
-+ DirName: CN = t712
-+ DirName: CN = t713
-+ DirName: CN = t714
-+ DirName: CN = t715
-+ DirName: CN = t716
-+ DirName: CN = t717
-+ DirName: CN = t718
-+ DirName: CN = t719
-+ DirName: CN = t720
-+ DirName: CN = t721
-+ DirName: CN = t722
-+ DirName: CN = t723
-+ DirName: CN = t724
-+ DirName: CN = t725
-+ DirName: CN = t726
-+ DirName: CN = t727
-+ DirName: CN = t728
-+ DirName: CN = t729
-+ DirName: CN = t730
-+ DirName: CN = t731
-+ DirName: CN = t732
-+ DirName: CN = t733
-+ DirName: CN = t734
-+ DirName: CN = t735
-+ DirName: CN = t736
-+ DirName: CN = t737
-+ DirName: CN = t738
-+ DirName: CN = t739
-+ DirName: CN = t740
-+ DirName: CN = t741
-+ DirName: CN = t742
-+ DirName: CN = t743
-+ DirName: CN = t744
-+ DirName: CN = t745
-+ DirName: CN = t746
-+ DirName: CN = t747
-+ DirName: CN = t748
-+ DirName: CN = t749
-+ DirName: CN = t750
-+ DirName: CN = t751
-+ DirName: CN = t752
-+ DirName: CN = t753
-+ DirName: CN = t754
-+ DirName: CN = t755
-+ DirName: CN = t756
-+ DirName: CN = t757
-+ DirName: CN = t758
-+ DirName: CN = t759
-+ DirName: CN = t760
-+ DirName: CN = t761
-+ DirName: CN = t762
-+ DirName: CN = t763
-+ DirName: CN = t764
-+ DirName: CN = t765
-+ DirName: CN = t766
-+ DirName: CN = t767
-+ DirName: CN = t768
-+ DirName: CN = t769
-+ DirName: CN = t770
-+ DirName: CN = t771
-+ DirName: CN = t772
-+ DirName: CN = t773
-+ DirName: CN = t774
-+ DirName: CN = t775
-+ DirName: CN = t776
-+ DirName: CN = t777
-+ DirName: CN = t778
-+ DirName: CN = t779
-+ DirName: CN = t780
-+ DirName: CN = t781
-+ DirName: CN = t782
-+ DirName: CN = t783
-+ DirName: CN = t784
-+ DirName: CN = t785
-+ DirName: CN = t786
-+ DirName: CN = t787
-+ DirName: CN = t788
-+ DirName: CN = t789
-+ DirName: CN = t790
-+ DirName: CN = t791
-+ DirName: CN = t792
-+ DirName: CN = t793
-+ DirName: CN = t794
-+ DirName: CN = t795
-+ DirName: CN = t796
-+ DirName: CN = t797
-+ DirName: CN = t798
-+ DirName: CN = t799
-+ DirName: CN = t800
-+ DirName: CN = t801
-+ DirName: CN = t802
-+ DirName: CN = t803
-+ DirName: CN = t804
-+ DirName: CN = t805
-+ DirName: CN = t806
-+ DirName: CN = t807
-+ DirName: CN = t808
-+ DirName: CN = t809
-+ DirName: CN = t810
-+ DirName: CN = t811
-+ DirName: CN = t812
-+ DirName: CN = t813
-+ DirName: CN = t814
-+ DirName: CN = t815
-+ DirName: CN = t816
-+ DirName: CN = t817
-+ DirName: CN = t818
-+ DirName: CN = t819
-+ DirName: CN = t820
-+ DirName: CN = t821
-+ DirName: CN = t822
-+ DirName: CN = t823
-+ DirName: CN = t824
-+ DirName: CN = t825
-+ DirName: CN = t826
-+ DirName: CN = t827
-+ DirName: CN = t828
-+ DirName: CN = t829
-+ DirName: CN = t830
-+ DirName: CN = t831
-+ DirName: CN = t832
-+ DirName: CN = t833
-+ DirName: CN = t834
-+ DirName: CN = t835
-+ DirName: CN = t836
-+ DirName: CN = t837
-+ DirName: CN = t838
-+ DirName: CN = t839
-+ DirName: CN = t840
-+ DirName: CN = t841
-+ DirName: CN = t842
-+ DirName: CN = t843
-+ DirName: CN = t844
-+ DirName: CN = t845
-+ DirName: CN = t846
-+ DirName: CN = t847
-+ DirName: CN = t848
-+ DirName: CN = t849
-+ DirName: CN = t850
-+ DirName: CN = t851
-+ DirName: CN = t852
-+ DirName: CN = t853
-+ DirName: CN = t854
-+ DirName: CN = t855
-+ DirName: CN = t856
-+ DirName: CN = t857
-+ DirName: CN = t858
-+ DirName: CN = t859
-+ DirName: CN = t860
-+ DirName: CN = t861
-+ DirName: CN = t862
-+ DirName: CN = t863
-+ DirName: CN = t864
-+ DirName: CN = t865
-+ DirName: CN = t866
-+ DirName: CN = t867
-+ DirName: CN = t868
-+ DirName: CN = t869
-+ DirName: CN = t870
-+ DirName: CN = t871
-+ DirName: CN = t872
-+ DirName: CN = t873
-+ DirName: CN = t874
-+ DirName: CN = t875
-+ DirName: CN = t876
-+ DirName: CN = t877
-+ DirName: CN = t878
-+ DirName: CN = t879
-+ DirName: CN = t880
-+ DirName: CN = t881
-+ DirName: CN = t882
-+ DirName: CN = t883
-+ DirName: CN = t884
-+ DirName: CN = t885
-+ DirName: CN = t886
-+ DirName: CN = t887
-+ DirName: CN = t888
-+ DirName: CN = t889
-+ DirName: CN = t890
-+ DirName: CN = t891
-+ DirName: CN = t892
-+ DirName: CN = t893
-+ DirName: CN = t894
-+ DirName: CN = t895
-+ DirName: CN = t896
-+ DirName: CN = t897
-+ DirName: CN = t898
-+ DirName: CN = t899
-+ DirName: CN = t900
-+ DirName: CN = t901
-+ DirName: CN = t902
-+ DirName: CN = t903
-+ DirName: CN = t904
-+ DirName: CN = t905
-+ DirName: CN = t906
-+ DirName: CN = t907
-+ DirName: CN = t908
-+ DirName: CN = t909
-+ DirName: CN = t910
-+ DirName: CN = t911
-+ DirName: CN = t912
-+ DirName: CN = t913
-+ DirName: CN = t914
-+ DirName: CN = t915
-+ DirName: CN = t916
-+ DirName: CN = t917
-+ DirName: CN = t918
-+ DirName: CN = t919
-+ DirName: CN = t920
-+ DirName: CN = t921
-+ DirName: CN = t922
-+ DirName: CN = t923
-+ DirName: CN = t924
-+ DirName: CN = t925
-+ DirName: CN = t926
-+ DirName: CN = t927
-+ DirName: CN = t928
-+ DirName: CN = t929
-+ DirName: CN = t930
-+ DirName: CN = t931
-+ DirName: CN = t932
-+ DirName: CN = t933
-+ DirName: CN = t934
-+ DirName: CN = t935
-+ DirName: CN = t936
-+ DirName: CN = t937
-+ DirName: CN = t938
-+ DirName: CN = t939
-+ DirName: CN = t940
-+ DirName: CN = t941
-+ DirName: CN = t942
-+ DirName: CN = t943
-+ DirName: CN = t944
-+ DirName: CN = t945
-+ DirName: CN = t946
-+ DirName: CN = t947
-+ DirName: CN = t948
-+ DirName: CN = t949
-+ DirName: CN = t950
-+ DirName: CN = t951
-+ DirName: CN = t952
-+ DirName: CN = t953
-+ DirName: CN = t954
-+ DirName: CN = t955
-+ DirName: CN = t956
-+ DirName: CN = t957
-+ DirName: CN = t958
-+ DirName: CN = t959
-+ DirName: CN = t960
-+ DirName: CN = t961
-+ DirName: CN = t962
-+ DirName: CN = t963
-+ DirName: CN = t964
-+ DirName: CN = t965
-+ DirName: CN = t966
-+ DirName: CN = t967
-+ DirName: CN = t968
-+ DirName: CN = t969
-+ DirName: CN = t970
-+ DirName: CN = t971
-+ DirName: CN = t972
-+ DirName: CN = t973
-+ DirName: CN = t974
-+ DirName: CN = t975
-+ DirName: CN = t976
-+ DirName: CN = t977
-+ DirName: CN = t978
-+ DirName: CN = t979
-+ DirName: CN = t980
-+ DirName: CN = t981
-+ DirName: CN = t982
-+ DirName: CN = t983
-+ DirName: CN = t984
-+ DirName: CN = t985
-+ DirName: CN = t986
-+ DirName: CN = t987
-+ DirName: CN = t988
-+ DirName: CN = t989
-+ DirName: CN = t990
-+ DirName: CN = t991
-+ DirName: CN = t992
-+ DirName: CN = t993
-+ DirName: CN = t994
-+ DirName: CN = t995
-+ DirName: CN = t996
-+ DirName: CN = t997
-+ DirName: CN = t998
-+ DirName: CN = t999
-+ DirName: CN = t1000
-+ DirName: CN = t1001
-+ DirName: CN = t1002
-+ DirName: CN = t1003
-+ DirName: CN = t1004
-+ DirName: CN = t1005
-+ DirName: CN = t1006
-+ DirName: CN = t1007
-+ DirName: CN = t1008
-+ DirName: CN = t1009
-+ DirName: CN = t1010
-+ DirName: CN = t1011
-+ DirName: CN = t1012
-+ DirName: CN = t1013
-+ DirName: CN = t1014
-+ DirName: CN = t1015
-+ DirName: CN = t1016
-+ DirName: CN = t1017
-+ DirName: CN = t1018
-+ DirName: CN = t1019
-+ DirName: CN = t1020
-+ DirName: CN = t1021
-+ DirName: CN = t1022
-+ DirName: CN = t1023
-+ DirName: CN = t1024
-
- Signature Algorithm: sha256WithRSAEncryption
- 12:ce:60:d6:3b:b5:7e:7a:8e:9e:d0:f5:fd:a8:8a:33:24:95:
-@@ -2070,7 +2070,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 3c:e5:fc:81:88:59:a8:50:16:c1:7f:d7:e5:2a:e5:96:7f:c2:f6:f5
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Root
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-diff --git a/net/data/verify_certificate_chain_unittest/many-names/toomany-dns-excluded.pem b/net/data/verify_certificate_chain_unittest/many-names/toomany-dns-excluded.pem
-index c2b90f8160687..b6f3f79705072 100644
---- a/net/data/verify_certificate_chain_unittest/many-names/toomany-dns-excluded.pem
-+++ b/net/data/verify_certificate_chain_unittest/many-names/toomany-dns-excluded.pem
-@@ -1,4 +1,4 @@
--[Created by: generate-chains.py]
-+[Created by: ./generate-chains.py]
-
- A chain containing a large number of excluded DNS name
- constraints and DNS names, above the limit.
-@@ -8,7 +8,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 2f:ab:b4:3d:dc:c0:77:80:2a:03:09:ad:43:74:02:bf:98:d8:d6
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Intermediate
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-@@ -334,7 +334,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 3c:e5:fc:81:88:59:a8:50:16:c1:7f:d7:e5:2a:e5:96:7f:c2:f6:f8
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Root
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-@@ -1729,7 +1729,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 3c:e5:fc:81:88:59:a8:50:16:c1:7f:d7:e5:2a:e5:96:7f:c2:f6:f5
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Root
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-diff --git a/net/data/verify_certificate_chain_unittest/many-names/toomany-dns-permitted.pem b/net/data/verify_certificate_chain_unittest/many-names/toomany-dns-permitted.pem
-index 2ec9a87d02f73..a11fcc874efab 100644
---- a/net/data/verify_certificate_chain_unittest/many-names/toomany-dns-permitted.pem
-+++ b/net/data/verify_certificate_chain_unittest/many-names/toomany-dns-permitted.pem
-@@ -1,4 +1,4 @@
--[Created by: generate-chains.py]
-+[Created by: ./generate-chains.py]
-
- A chain containing a large number of permitted DNS name
- constraints and DNS names, above the limit.
-@@ -8,7 +8,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 2f:ab:b4:3d:dc:c0:77:80:2a:03:09:ad:43:74:02:bf:98:d8:d9
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Intermediate
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-@@ -334,7 +334,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 3c:e5:fc:81:88:59:a8:50:16:c1:7f:d7:e5:2a:e5:96:7f:c2:f6:fb
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Root
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-@@ -1729,7 +1729,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 3c:e5:fc:81:88:59:a8:50:16:c1:7f:d7:e5:2a:e5:96:7f:c2:f6:f5
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Root
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-diff --git a/net/data/verify_certificate_chain_unittest/many-names/toomany-ips-excluded.pem b/net/data/verify_certificate_chain_unittest/many-names/toomany-ips-excluded.pem
-index 1199678d26041..9a0ca5bd26a5b 100644
---- a/net/data/verify_certificate_chain_unittest/many-names/toomany-ips-excluded.pem
-+++ b/net/data/verify_certificate_chain_unittest/many-names/toomany-ips-excluded.pem
-@@ -1,4 +1,4 @@
--[Created by: generate-chains.py]
-+[Created by: ./generate-chains.py]
-
- A chain containing a large number of excluded IP name
- constraints and IP names, above the limit.
-@@ -8,7 +8,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 2f:ab:b4:3d:dc:c0:77:80:2a:03:09:ad:43:74:02:bf:98:d8:d7
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Intermediate
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-@@ -229,7 +229,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 3c:e5:fc:81:88:59:a8:50:16:c1:7f:d7:e5:2a:e5:96:7f:c2:f6:f9
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Root
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-@@ -1604,7 +1604,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 3c:e5:fc:81:88:59:a8:50:16:c1:7f:d7:e5:2a:e5:96:7f:c2:f6:f5
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Root
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-diff --git a/net/data/verify_certificate_chain_unittest/many-names/toomany-ips-permitted.pem b/net/data/verify_certificate_chain_unittest/many-names/toomany-ips-permitted.pem
-index efdbd5eaca095..56bc9c89c4c42 100644
---- a/net/data/verify_certificate_chain_unittest/many-names/toomany-ips-permitted.pem
-+++ b/net/data/verify_certificate_chain_unittest/many-names/toomany-ips-permitted.pem
-@@ -1,4 +1,4 @@
--[Created by: generate-chains.py]
-+[Created by: ./generate-chains.py]
-
- A chain containing a large number of permitted IP name
- constraints and IP names, above the limit.
-@@ -8,7 +8,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 2f:ab:b4:3d:dc:c0:77:80:2a:03:09:ad:43:74:02:bf:98:d8:da
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Intermediate
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-@@ -229,7 +229,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 3c:e5:fc:81:88:59:a8:50:16:c1:7f:d7:e5:2a:e5:96:7f:c2:f6:fc
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Root
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
-@@ -1604,7 +1604,7 @@ Certificate:
- Version: 3 (0x2)
- Serial Number:
- 3c:e5:fc:81:88:59:a8:50:16:c1:7f:d7:e5:2a:e5:96:7f:c2:f6:f5
-- Signature Algorithm: sha256WithRSAEncryption
-+ Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Root
- Validity
- Not Before: Oct 5 12:00:00 2021 GMT
---
-2.42.0.515.g380fc7ccd1-goog
-
diff --git a/src/pki/path_builder.cc b/src/pki/path_builder.cc
index affaf25..a7fddd3 100644
--- a/src/pki/path_builder.cc
+++ b/src/pki/path_builder.cc
@@ -9,52 +9,51 @@
#include <set>
#include <unordered_set>
-#include "fillins/log.h"
-#include "fillins/net_errors.h"
+#include <openssl/base.h>
+#include <openssl/sha.h>
#include "cert_issuer_source.h"
#include "certificate_policies.h"
#include "common_cert_errors.h"
#include "parse_certificate.h"
#include "parse_name.h" // For CertDebugString.
+#include "parser.h"
#include "string_util.h"
#include "trust_store.h"
#include "verify_certificate_chain.h"
#include "verify_name_match.h"
-#include "parser.h"
-#include "tag.h"
-#include <openssl/base.h>
-#include <openssl/sha.h>
namespace bssl {
namespace {
-using CertIssuerSources = std::vector<CertIssuerSource*>;
+using CertIssuerSources = std::vector<CertIssuerSource *>;
// Returns a hex-encoded sha256 of the DER-encoding of |cert|.
-std::string FingerPrintParsedCertificate(const bssl::ParsedCertificate* cert) {
+std::string FingerPrintParsedCertificate(const bssl::ParsedCertificate *cert) {
uint8_t digest[SHA256_DIGEST_LENGTH];
- SHA256(cert->der_cert().UnsafeData(), cert->der_cert().Length(), digest);
- return bssl::string_util::HexEncode(digest, sizeof(digest));
+ SHA256(cert->der_cert().data(), cert->der_cert().size(), digest);
+ return bssl::string_util::HexEncode(digest);
}
// TODO(mattm): decide how much debug logging to keep.
-std::string CertDebugString(const ParsedCertificate* cert) {
+std::string CertDebugString(const ParsedCertificate *cert) {
RDNSequence subject;
std::string subject_str;
if (!ParseName(cert->tbs().subject_tlv, &subject) ||
- !ConvertToRFC2253(subject, &subject_str))
+ !ConvertToRFC2253(subject, &subject_str)) {
subject_str = "???";
+ }
return FingerPrintParsedCertificate(cert) + " " + subject_str;
}
-std::string PathDebugString(const ParsedCertificateList& certs) {
+std::string PathDebugString(const ParsedCertificateList &certs) {
std::string s;
- for (const auto& cert : certs) {
- if (!s.empty())
+ for (const auto &cert : certs) {
+ if (!s.empty()) {
s += "\n";
+ }
s += " " + CertDebugString(cert.get());
}
return s;
@@ -84,10 +83,10 @@ enum KeyIdentifierMatch {
// subjectKeyIdentifier and |target|'s authorityKeyIdentifier. Lower return
// values indicate higer priority.
KeyIdentifierMatch CalculateKeyIdentifierMatch(
- const ParsedCertificate* target,
- const ParsedCertificate* issuer) {
- if (!target->authority_key_identifier())
+ const ParsedCertificate *target, const ParsedCertificate *issuer) {
+ if (!target->authority_key_identifier()) {
return kNoData;
+ }
// TODO(crbug.com/635205): If issuer does not have a subjectKeyIdentifier,
// could try synthesizing one using the standard SHA-1 method. Ideally in a
@@ -108,9 +107,9 @@ KeyIdentifierMatch CalculateKeyIdentifierMatch(
// Returns an integer that represents the relative ordering of |issuer| based
// on |issuer_trust| and authorityKeyIdentifier matching for prioritizing
// certificates in path building. Lower return values indicate higer priority.
-int TrustAndKeyIdentifierMatchToOrder(const ParsedCertificate* target,
- const ParsedCertificate* issuer,
- const CertificateTrust& issuer_trust) {
+int TrustAndKeyIdentifierMatchToOrder(const ParsedCertificate *target,
+ const ParsedCertificate *issuer,
+ const CertificateTrust &issuer_trust) {
enum {
kTrustedAndKeyIdMatch = 0,
kTrustedAndKeyIdNoData = 1,
@@ -169,15 +168,15 @@ class CertIssuersIter {
// Constructs the CertIssuersIter. |*cert_issuer_sources|, and
// |*trust_store| must be valid for the lifetime of the CertIssuersIter.
CertIssuersIter(std::shared_ptr<const ParsedCertificate> cert,
- CertIssuerSources* cert_issuer_sources,
- TrustStore* trust_store);
+ CertIssuerSources *cert_issuer_sources,
+ TrustStore *trust_store);
- CertIssuersIter(const CertIssuersIter&) = delete;
- CertIssuersIter& operator=(const CertIssuersIter&) = delete;
+ CertIssuersIter(const CertIssuersIter &) = delete;
+ CertIssuersIter &operator=(const CertIssuersIter &) = delete;
// Gets the next candidate issuer, or clears |*out| when all issuers have been
// exhausted.
- void GetNextIssuer(IssuerEntry* out);
+ void GetNextIssuer(IssuerEntry *out);
// Returns true if candidate issuers were found for |cert_|.
bool had_non_skipped_issuers() const {
@@ -187,7 +186,7 @@ class CertIssuersIter {
void increment_skipped_issuer_count() { skipped_issuer_count_++; }
// Returns the |cert| for which issuers are being retrieved.
- const ParsedCertificate* cert() const { return cert_.get(); }
+ const ParsedCertificate *cert() const { return cert_.get(); }
std::shared_ptr<const ParsedCertificate> reference_cert() const {
return cert_;
}
@@ -204,8 +203,8 @@ class CertIssuersIter {
void SortRemainingIssuers();
std::shared_ptr<const ParsedCertificate> cert_;
- CertIssuerSources* cert_issuer_sources_;
- TrustStore* trust_store_;
+ CertIssuerSources *cert_issuer_sources_;
+ TrustStore *trust_store_;
// The list of issuers for |cert_|. This is added to incrementally (first
// synchronous results, then possibly multiple times as asynchronous results
@@ -242,18 +241,15 @@ class CertIssuersIter {
CertIssuersIter::CertIssuersIter(
std::shared_ptr<const ParsedCertificate> in_cert,
- CertIssuerSources* cert_issuer_sources,
- TrustStore* trust_store)
+ CertIssuerSources *cert_issuer_sources, TrustStore *trust_store)
: cert_(std::move(in_cert)),
cert_issuer_sources_(cert_issuer_sources),
- trust_store_(trust_store) {
- DVLOG(2) << "CertIssuersIter created for " << CertDebugString(cert());
-}
+ trust_store_(trust_store) {}
-void CertIssuersIter::GetNextIssuer(IssuerEntry* out) {
+void CertIssuersIter::GetNextIssuer(IssuerEntry *out) {
if (!did_initial_query_) {
did_initial_query_ = true;
- for (auto* cert_issuer_source : *cert_issuer_sources_) {
+ for (auto *cert_issuer_source : *cert_issuer_sources_) {
ParsedCertificateList new_issuers;
cert_issuer_source->SyncGetIssuersOf(cert(), &new_issuers);
AddIssuers(std::move(new_issuers));
@@ -286,8 +282,6 @@ void CertIssuersIter::GetNextIssuer(IssuerEntry* out) {
if (HasCurrentIssuer()) {
SortRemainingIssuers();
- DVLOG(2) << "CertIssuersIter returning issuer " << cur_issuer_ << " of "
- << issuers_.size() << " for " << CertDebugString(cert());
// Still have issuers that haven't been returned yet, return the highest
// priority one (head of remaining list). A reference to the returned issuer
// is retained, since |present_issuers_| points to data owned by it.
@@ -295,18 +289,17 @@ void CertIssuersIter::GetNextIssuer(IssuerEntry* out) {
return;
}
- DVLOG(2) << "CertIssuersIter reached the end of all available issuers for "
- << CertDebugString(cert());
// Reached the end of all available issuers.
*out = IssuerEntry();
}
void CertIssuersIter::AddIssuers(ParsedCertificateList new_issuers) {
- for (std::shared_ptr<const ParsedCertificate>& issuer : new_issuers) {
- if (present_issuers_.find(issuer->der_cert().AsStringView()) !=
- present_issuers_.end())
+ for (std::shared_ptr<const ParsedCertificate> &issuer : new_issuers) {
+ if (present_issuers_.find(BytesAsStringView(issuer->der_cert())) !=
+ present_issuers_.end()) {
continue;
- present_issuers_.insert(issuer->der_cert().AsStringView());
+ }
+ present_issuers_.insert(BytesAsStringView(issuer->der_cert()));
// Look up the trust for this issuer.
IssuerEntry entry;
@@ -324,23 +317,23 @@ void CertIssuersIter::DoAsyncIssuerQuery() {
BSSL_CHECK(!did_async_issuer_query_);
did_async_issuer_query_ = true;
cur_async_request_ = 0;
- for (auto* cert_issuer_source : *cert_issuer_sources_) {
+ for (auto *cert_issuer_source : *cert_issuer_sources_) {
std::unique_ptr<CertIssuerSource::Request> request;
cert_issuer_source->AsyncGetIssuersOf(cert(), &request);
if (request) {
- DVLOG(1) << "AsyncGetIssuersOf pending for " << CertDebugString(cert());
pending_async_requests_.push_back(std::move(request));
}
}
}
void CertIssuersIter::SortRemainingIssuers() {
- if (!issuers_needs_sort_)
+ if (!issuers_needs_sort_) {
return;
+ }
std::stable_sort(
issuers_.begin() + cur_issuer_, issuers_.end(),
- [](const IssuerEntry& issuer1, const IssuerEntry& issuer2) {
+ [](const IssuerEntry &issuer1, const IssuerEntry &issuer2) {
// TODO(crbug.com/635205): Add other prioritization hints. (See big list
// of possible sorting hints in RFC 4158.)
const bool issuer1_self_issued = issuer1.cert->normalized_subject() ==
@@ -372,7 +365,7 @@ void CertIssuersIter::SortRemainingIssuers() {
class CertIssuerIterPath {
public:
// Returns true if |cert| is already present in the path.
- bool IsPresent(const ParsedCertificate* cert) const {
+ bool IsPresent(const ParsedCertificate *cert) const {
return present_certs_.find(GetKey(cert)) != present_certs_.end();
}
@@ -393,26 +386,28 @@ class CertIssuerIterPath {
}
// Copies the ParsedCertificate elements of the current path to |*out_path|.
- void CopyPath(ParsedCertificateList* out_path) {
+ void CopyPath(ParsedCertificateList *out_path) {
out_path->clear();
- for (const auto& node : cur_path_)
+ for (const auto &node : cur_path_) {
out_path->push_back(node->reference_cert());
+ }
}
// Returns true if the path is empty.
bool Empty() const { return cur_path_.empty(); }
// Returns the last CertIssuersIter in the path.
- CertIssuersIter* back() { return cur_path_.back().get(); }
+ CertIssuersIter *back() { return cur_path_.back().get(); }
// Returns the length of the path.
size_t Length() const { return cur_path_.size(); }
std::string PathDebugString() {
std::string s;
- for (const auto& node : cur_path_) {
- if (!s.empty())
+ for (const auto &node : cur_path_) {
+ if (!s.empty()) {
s += "\n";
+ }
s += " " + CertDebugString(node->cert());
}
return s;
@@ -421,16 +416,16 @@ class CertIssuerIterPath {
private:
using Key = std::tuple<std::string_view, std::string_view, std::string_view>;
- static Key GetKey(const ParsedCertificate* cert) {
+ static Key GetKey(const ParsedCertificate *cert) {
// TODO(mattm): ideally this would use a normalized version of
// SubjectAltName, but it's not that important just for LoopChecker.
//
// Note that subject_alt_names_extension().value will be empty if the cert
// had no SubjectAltName extension, so there is no need for a condition on
// has_subject_alt_names().
- return Key(cert->normalized_subject().AsStringView(),
- cert->subject_alt_names_extension().value.AsStringView(),
- cert->tbs().spki_tlv.AsStringView());
+ return Key(BytesAsStringView(cert->normalized_subject()),
+ BytesAsStringView(cert->subject_alt_names_extension().value),
+ BytesAsStringView(cert->tbs().spki_tlv));
}
std::vector<std::unique_ptr<CertIssuersIter>> cur_path_;
@@ -442,9 +437,10 @@ class CertIssuerIterPath {
} // namespace
-const ParsedCertificate* CertPathBuilderResultPath::GetTrustedCert() const {
- if (certs.empty())
+const ParsedCertificate *CertPathBuilderResultPath::GetTrustedCert() const {
+ if (certs.empty()) {
return nullptr;
+ }
switch (last_cert_trust.type) {
case CertificateTrustType::TRUSTED_ANCHOR:
@@ -466,15 +462,15 @@ const ParsedCertificate* CertPathBuilderResultPath::GetTrustedCert() const {
class CertPathIter {
public:
CertPathIter(std::shared_ptr<const ParsedCertificate> cert,
- TrustStore* trust_store);
+ TrustStore *trust_store);
- CertPathIter(const CertPathIter&) = delete;
- CertPathIter& operator=(const CertPathIter&) = delete;
+ CertPathIter(const CertPathIter &) = delete;
+ CertPathIter &operator=(const CertPathIter &) = delete;
// Adds a CertIssuerSource to provide intermediates for use in path building.
// The |*cert_issuer_source| must remain valid for the lifetime of the
// CertPathIter.
- void AddCertIssuerSource(CertIssuerSource* cert_issuer_source);
+ void AddCertIssuerSource(CertIssuerSource *cert_issuer_source);
// Gets the next candidate path, and fills it into |out_certs| and
// |out_last_cert_trust|. Note that the returned path is unverified and must
@@ -485,11 +481,10 @@ class CertPathIter {
// and continue path building. Once all paths have been exhausted returns
// false. If deadline or iteration limit is exceeded, sets |out_certs| to the
// current path being explored and returns false.
- bool GetNextPath(ParsedCertificateList* out_certs,
- CertificateTrust* out_last_cert_trust,
- CertPathErrors* out_errors,
- CertPathBuilderDelegate* delegate,
- uint32_t* iteration_count,
+ bool GetNextPath(ParsedCertificateList *out_certs,
+ CertificateTrust *out_last_cert_trust,
+ CertPathErrors *out_errors,
+ CertPathBuilderDelegate *delegate, uint32_t *iteration_count,
const uint32_t max_iteration_count,
const uint32_t max_path_building_depth);
@@ -504,26 +499,26 @@ class CertPathIter {
// The CertIssuerSources for retrieving candidate issuers.
CertIssuerSources cert_issuer_sources_;
// The TrustStore for checking if a path ends in a trust anchor.
- TrustStore* trust_store_;
+ TrustStore *trust_store_;
};
CertPathIter::CertPathIter(std::shared_ptr<const ParsedCertificate> cert,
- TrustStore* trust_store)
+ TrustStore *trust_store)
: trust_store_(trust_store) {
// Initialize |next_issuer_| to the target certificate.
next_issuer_.cert = std::move(cert);
next_issuer_.trust = trust_store_->GetTrust(next_issuer_.cert.get());
}
-void CertPathIter::AddCertIssuerSource(CertIssuerSource* cert_issuer_source) {
+void CertPathIter::AddCertIssuerSource(CertIssuerSource *cert_issuer_source) {
cert_issuer_sources_.push_back(cert_issuer_source);
}
-bool CertPathIter::GetNextPath(ParsedCertificateList* out_certs,
- CertificateTrust* out_last_cert_trust,
- CertPathErrors* out_errors,
- CertPathBuilderDelegate* delegate,
- uint32_t* iteration_count,
+bool CertPathIter::GetNextPath(ParsedCertificateList *out_certs,
+ CertificateTrust *out_last_cert_trust,
+ CertPathErrors *out_errors,
+ CertPathBuilderDelegate *delegate,
+ uint32_t *iteration_count,
const uint32_t max_iteration_count,
const uint32_t max_path_building_depth) {
out_certs->clear();
@@ -535,8 +530,9 @@ bool CertPathIter::GetNextPath(ParsedCertificateList* out_certs,
// If the deadline is already expired before the first call to
// GetNextPath, cur_path_ will be empty. Return the leaf cert in that
// case.
- if (next_issuer_.cert)
+ if (next_issuer_.cert) {
out_certs->push_back(next_issuer_.cert);
+ }
} else {
cur_path_.CopyPath(out_certs);
}
@@ -550,16 +546,21 @@ bool CertPathIter::GetNextPath(ParsedCertificateList* out_certs,
cur_path_.Length() >= max_path_building_depth) {
cur_path_.CopyPath(out_certs);
out_errors->GetOtherErrors()->AddError(cert_errors::kDepthLimitExceeded);
- DVLOG(1) << "CertPathIter reached depth limit. Returning partial path "
- "and backtracking:\n"
- << PathDebugString(*out_certs);
+ if (delegate->IsDebugLogEnabled()) {
+ delegate->DebugLog(
+ "CertPathIter reached depth limit. Returning "
+ "partial path and backtracking:\n" +
+ PathDebugString(*out_certs));
+ }
cur_path_.Pop();
return true;
}
if (!next_issuer_.cert) {
if (cur_path_.Empty()) {
- DVLOG(1) << "CertPathIter exhausted all paths...";
+ if (delegate->IsDebugLogEnabled()) {
+ delegate->DebugLog("CertPathIter exhausted all paths...");
+ }
return false;
}
@@ -579,14 +580,19 @@ bool CertPathIter::GetNextPath(ParsedCertificateList* out_certs,
cur_path_.CopyPath(out_certs);
out_errors->GetErrorsForCert(out_certs->size() - 1)
->AddError(cert_errors::kNoIssuersFound);
- DVLOG(1) << "CertPathIter returning partial path and backtracking:\n"
- << PathDebugString(*out_certs);
+ if (delegate->IsDebugLogEnabled()) {
+ delegate->DebugLog(
+ "CertPathIter returning partial path and backtracking:\n" +
+ PathDebugString(*out_certs));
+ }
cur_path_.Pop();
return true;
} else {
// No more issuers for current chain, go back up and see if there are
// any more for the previous cert.
- DVLOG(1) << "CertPathIter backtracking...";
+ if (delegate->IsDebugLogEnabled()) {
+ delegate->DebugLog("CertPathIter backtracking...");
+ }
cur_path_.Pop();
continue;
}
@@ -602,7 +608,10 @@ bool CertPathIter::GetNextPath(ParsedCertificateList* out_certs,
// unspecified trust. This may allow a successful path to be built to a
// different root (or to the same cert if it's self-signed).
if (cur_path_.Empty()) {
- DVLOG(1) << "Leaf is a trust anchor, considering as UNSPECIFIED";
+ if (delegate->IsDebugLogEnabled()) {
+ delegate->DebugLog(
+ "Leaf is a trust anchor, considering as UNSPECIFIED");
+ }
next_issuer_.trust = CertificateTrust::ForUnspecified();
}
break;
@@ -611,7 +620,10 @@ bool CertPathIter::GetNextPath(ParsedCertificateList* out_certs,
// unspecified trust. This may allow a successful path to be built to a
// trusted root.
if (!cur_path_.Empty()) {
- DVLOG(1) << "Issuer is a trust leaf, considering as UNSPECIFIED";
+ if (delegate->IsDebugLogEnabled()) {
+ delegate->DebugLog(
+ "Issuer is a trust leaf, considering as UNSPECIFIED");
+ }
next_issuer_.trust = CertificateTrust::ForUnspecified();
}
break;
@@ -631,8 +643,11 @@ bool CertPathIter::GetNextPath(ParsedCertificateList* out_certs,
!VerifyCertificateIsSelfSigned(*next_issuer_.cert,
delegate->GetVerifyCache(),
/*errors=*/nullptr)) {
- DVLOG(1) << "Leaf is trusted with require_leaf_selfsigned but is "
- "not self-signed, considering as UNSPECIFIED";
+ if (delegate->IsDebugLogEnabled()) {
+ delegate->DebugLog(
+ "Leaf is trusted with require_leaf_selfsigned but is "
+ "not self-signed, considering as UNSPECIFIED");
+ }
next_issuer_.trust = CertificateTrust::ForUnspecified();
}
break;
@@ -652,12 +667,12 @@ bool CertPathIter::GetNextPath(ParsedCertificateList* out_certs,
case CertificateTrustType::TRUSTED_ANCHOR_OR_LEAF:
case CertificateTrustType::TRUSTED_LEAF: {
// If the issuer has a known trust level, can stop building the path.
- DVLOG(2) << "CertPathIter got anchor: "
- << CertDebugString(next_issuer_.cert.get());
cur_path_.CopyPath(out_certs);
out_certs->push_back(std::move(next_issuer_.cert));
- DVLOG(1) << "CertPathIter returning path:\n"
- << PathDebugString(*out_certs);
+ if (delegate->IsDebugLogEnabled()) {
+ delegate->DebugLog("CertPathIter returning path:\n" +
+ PathDebugString(*out_certs));
+ }
*out_last_cert_trust = next_issuer_.trust;
next_issuer_ = IssuerEntry();
return true;
@@ -666,8 +681,10 @@ bool CertPathIter::GetNextPath(ParsedCertificateList* out_certs,
// Skip this cert if it is already in the chain.
if (cur_path_.IsPresent(next_issuer_.cert.get())) {
cur_path_.back()->increment_skipped_issuer_count();
- DVLOG(1) << "CertPathIter skipping dupe cert: "
- << CertDebugString(next_issuer_.cert.get());
+ if (delegate->IsDebugLogEnabled()) {
+ delegate->DebugLog("CertPathIter skipping dupe cert: " +
+ CertDebugString(next_issuer_.cert.get()));
+ }
next_issuer_ = IssuerEntry();
continue;
}
@@ -675,7 +692,10 @@ bool CertPathIter::GetNextPath(ParsedCertificateList* out_certs,
cur_path_.Append(std::make_unique<CertIssuersIter>(
std::move(next_issuer_.cert), &cert_issuer_sources_, trust_store_));
next_issuer_ = IssuerEntry();
- DVLOG(1) << "CertPathIter cur_path_ =\n" << cur_path_.PathDebugString();
+ if (delegate->IsDebugLogEnabled()) {
+ delegate->DebugLog("CertPathIter cur_path_ =\n" +
+ cur_path_.PathDebugString());
+ }
// Continue descending the tree.
continue;
}
@@ -691,52 +711,53 @@ bool CertPathBuilderResultPath::IsValid() const {
}
CertPathBuilder::Result::Result() = default;
-CertPathBuilder::Result::Result(Result&&) = default;
+CertPathBuilder::Result::Result(Result &&) = default;
CertPathBuilder::Result::~Result() = default;
-CertPathBuilder::Result& CertPathBuilder::Result::operator=(Result&&) = default;
+CertPathBuilder::Result &CertPathBuilder::Result::operator=(Result &&) =
+ default;
bool CertPathBuilder::Result::HasValidPath() const {
return GetBestValidPath() != nullptr;
}
bool CertPathBuilder::Result::AnyPathContainsError(CertErrorId error_id) const {
- for (const auto& path : paths) {
- if (path->errors.ContainsError(error_id))
+ for (const auto &path : paths) {
+ if (path->errors.ContainsError(error_id)) {
return true;
+ }
}
return false;
}
-const CertPathBuilderResultPath* CertPathBuilder::Result::GetBestValidPath()
+const CertPathBuilderResultPath *CertPathBuilder::Result::GetBestValidPath()
const {
- const CertPathBuilderResultPath* result_path = GetBestPathPossiblyInvalid();
+ const CertPathBuilderResultPath *result_path = GetBestPathPossiblyInvalid();
- if (result_path && result_path->IsValid())
+ if (result_path && result_path->IsValid()) {
return result_path;
+ }
return nullptr;
}
-const CertPathBuilderResultPath*
+const CertPathBuilderResultPath *
CertPathBuilder::Result::GetBestPathPossiblyInvalid() const {
BSSL_CHECK((paths.empty() && best_result_index == 0) ||
best_result_index < paths.size());
- if (best_result_index >= paths.size())
+ if (best_result_index >= paths.size()) {
return nullptr;
+ }
return paths[best_result_index].get();
}
CertPathBuilder::CertPathBuilder(
- std::shared_ptr<const ParsedCertificate> cert,
- TrustStore* trust_store,
- CertPathBuilderDelegate* delegate,
- const der::GeneralizedTime& time,
- KeyPurpose key_purpose,
- InitialExplicitPolicy initial_explicit_policy,
- const std::set<der::Input>& user_initial_policy_set,
+ std::shared_ptr<const ParsedCertificate> cert, TrustStore *trust_store,
+ CertPathBuilderDelegate *delegate, const der::GeneralizedTime &time,
+ KeyPurpose key_purpose, InitialExplicitPolicy initial_explicit_policy,
+ const std::set<der::Input> &user_initial_policy_set,
InitialPolicyMappingInhibit initial_policy_mapping_inhibit,
InitialAnyPolicyInhibit initial_any_policy_inhibit)
: cert_path_iter_(
@@ -756,7 +777,7 @@ CertPathBuilder::CertPathBuilder(
CertPathBuilder::~CertPathBuilder() = default;
void CertPathBuilder::AddCertIssuerSource(
- CertIssuerSource* cert_issuer_source) {
+ CertIssuerSource *cert_issuer_source) {
cert_path_iter_->AddCertIssuerSource(cert_issuer_source);
}
@@ -768,8 +789,12 @@ void CertPathBuilder::SetDepthLimit(uint32_t limit) {
max_path_building_depth_ = limit;
}
+void CertPathBuilder::SetValidPathLimit(size_t limit) {
+ valid_path_limit_ = limit;
+}
+
void CertPathBuilder::SetExploreAllPaths(bool explore_all_paths) {
- explore_all_paths_ = explore_all_paths;
+ valid_path_limit_ = explore_all_paths ? 0 : 1;
}
CertPathBuilder::Result CertPathBuilder::Run() {
@@ -799,6 +824,12 @@ CertPathBuilder::Result CertPathBuilder::Run() {
result_path->errors.GetOtherErrors()->AddError(
cert_errors::kInternalError);
}
+
+ // Allow the delegate to do any processing or logging of the partial
+ // path. (This is for symmetry for the other CheckPathAfterVerification
+ // which also gets called on partial paths.)
+ delegate_->CheckPathAfterVerification(*this, result_path.get());
+
AddResultPath(std::move(result_path));
}
out_result_.iteration_count = iteration_count;
@@ -821,9 +852,6 @@ CertPathBuilder::Result CertPathBuilder::Run() {
&result_path->user_constrained_policy_set, &result_path->errors);
}
- DVLOG(1) << "CertPathBuilder VerifyCertificateChain errors:\n"
- << result_path->errors.ToDebugString(result_path->certs);
-
// Give the delegate a chance to add errors to the path.
delegate_->CheckPathAfterVerification(*this, result_path.get());
@@ -831,10 +859,13 @@ CertPathBuilder::Result CertPathBuilder::Run() {
AddResultPath(std::move(result_path));
- if (path_is_good && !explore_all_paths_) {
- out_result_.iteration_count = iteration_count;
- // Found a valid path, return immediately.
- return std::move(out_result_);
+ if (path_is_good) {
+ valid_path_count_++;
+ if (valid_path_limit_ > 0 && valid_path_count_ == valid_path_limit_) {
+ out_result_.iteration_count = iteration_count;
+ // Found enough paths, return immediately.
+ return std::move(out_result_);
+ }
}
// Path did not verify. Try more paths.
}
@@ -847,7 +878,7 @@ void CertPathBuilder::AddResultPath(
// best_result_index based on prioritization (since due to AIA and such, the
// actual order results were discovered may not match the ideal).
if (!out_result_.HasValidPath()) {
- const CertPathBuilderResultPath* old_best_path =
+ const CertPathBuilderResultPath *old_best_path =
out_result_.GetBestPathPossiblyInvalid();
// If |result_path| is a valid path or if the previous best result did not
// end in a trust anchor but the |result_path| does, then update the best
@@ -864,4 +895,4 @@ void CertPathBuilder::AddResultPath(
out_result_.paths.push_back(std::move(result_path));
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/path_builder.h b/src/pki/path_builder.h
index ea11b43..05999b0 100644
--- a/src/pki/path_builder.h
+++ b/src/pki/path_builder.h
@@ -5,17 +5,17 @@
#ifndef BSSL_PKI_PATH_BUILDER_H_
#define BSSL_PKI_PATH_BUILDER_H_
-#include "fillins/openssl_util.h"
#include <memory>
#include <vector>
+#include <openssl/base.h>
#include "cert_errors.h"
+#include "input.h"
+#include "parse_values.h"
#include "parsed_certificate.h"
#include "trust_store.h"
#include "verify_certificate_chain.h"
-#include "input.h"
-#include "parse_values.h"
namespace bssl {
@@ -51,7 +51,7 @@ struct OPENSSL_EXPORT CertPathBuilderResultPath {
// Returns the chain's root certificate or nullptr if the chain doesn't
// chain to a trust anchor.
- const ParsedCertificate* GetTrustedCert() const;
+ const ParsedCertificate *GetTrustedCert() const;
// Path in the forward direction:
//
@@ -88,17 +88,29 @@ struct OPENSSL_EXPORT CertPathBuilderResultPath {
class OPENSSL_EXPORT CertPathBuilderDelegate
: public VerifyCertificateChainDelegate {
public:
- // This is called during path building on candidate paths which have already
- // been run through RFC 5280 verification. |path| may already have errors
- // and warnings set on it. Delegates can "reject" a candidate path from path
- // building by adding high severity errors.
- virtual void CheckPathAfterVerification(const CertPathBuilder& path_builder,
- CertPathBuilderResultPath* path) = 0;
+ // This is called during path building on candidate paths. These are either
+ // paths which have already been run through RFC 5280 verification, or
+ // partial paths that the path builder cannot continue either due to not
+ // finding a matching issuer or reaching a configured pathbuilding limit.
+ // |path| may already have errors and warnings set on it. Delegates can
+ // "reject" a candidate path from path building by adding high severity
+ // errors.
+ virtual void CheckPathAfterVerification(const CertPathBuilder &path_builder,
+ CertPathBuilderResultPath *path) = 0;
// This is called during path building in between attempts to build candidate
// paths. Delegates can cause path building to stop and return indicating
// the deadline was exceeded by returning true from this function.
virtual bool IsDeadlineExpired() = 0;
+
+ // This is called during path building to decide if debug logs will be
+ // sent to the delegate rom the path builder. No calls to DebugLog (below)
+ // will be made unless this returns true.
+ virtual bool IsDebugLogEnabled() = 0;
+
+ // This is called to send a debug log string |msg| to the delegate. These are
+ // only called if IsDebugLogEnabled (above) returns true.
+ virtual void DebugLog(std::string_view msg) = 0;
};
// Checks whether a certificate is trusted by building candidate paths to trust
@@ -113,13 +125,13 @@ class OPENSSL_EXPORT CertPathBuilder {
// were attempted.
struct OPENSSL_EXPORT Result {
Result();
- Result(Result&&);
+ Result(Result &&);
- Result(const Result&) = delete;
- Result& operator=(const Result&) = delete;
+ Result(const Result &) = delete;
+ Result &operator=(const Result &) = delete;
~Result();
- Result& operator=(Result&&);
+ Result &operator=(Result &&);
// Returns true if there was a valid path.
bool HasValidPath() const;
@@ -129,10 +141,10 @@ class OPENSSL_EXPORT CertPathBuilder {
// Returns the CertPathBuilderResultPath for the best valid path, or nullptr
// if there was none.
- const CertPathBuilderResultPath* GetBestValidPath() const;
+ const CertPathBuilderResultPath *GetBestValidPath() const;
// Returns the best CertPathBuilderResultPath or nullptr if there was none.
- const CertPathBuilderResultPath* GetBestPathPossiblyInvalid() const;
+ const CertPathBuilderResultPath *GetBestPathPossiblyInvalid() const;
// List of paths that were attempted and the result for each.
std::vector<std::unique_ptr<CertPathBuilderResultPath>> paths;
@@ -171,17 +183,15 @@ class OPENSSL_EXPORT CertPathBuilder {
// final chain. See CertPathBuilderDelegate and
// VerifyCertificateChainDelegate for more information.
CertPathBuilder(std::shared_ptr<const ParsedCertificate> cert,
- TrustStore* trust_store,
- CertPathBuilderDelegate* delegate,
- const der::GeneralizedTime& time,
- KeyPurpose key_purpose,
+ TrustStore *trust_store, CertPathBuilderDelegate *delegate,
+ const der::GeneralizedTime &time, KeyPurpose key_purpose,
InitialExplicitPolicy initial_explicit_policy,
- const std::set<der::Input>& user_initial_policy_set,
+ const std::set<der::Input> &user_initial_policy_set,
InitialPolicyMappingInhibit initial_policy_mapping_inhibit,
InitialAnyPolicyInhibit initial_any_policy_inhibit);
- CertPathBuilder(const CertPathBuilder&) = delete;
- CertPathBuilder& operator=(const CertPathBuilder&) = delete;
+ CertPathBuilder(const CertPathBuilder &) = delete;
+ CertPathBuilder &operator=(const CertPathBuilder &) = delete;
~CertPathBuilder();
@@ -192,7 +202,7 @@ class OPENSSL_EXPORT CertPathBuilder {
//
// (If no issuer sources are added, the target certificate will only verify if
// it is a trust anchor or is directly signed by a trust anchor.)
- void AddCertIssuerSource(CertIssuerSource* cert_issuer_source);
+ void AddCertIssuerSource(CertIssuerSource *cert_issuer_source);
// Sets a limit to the number of times to repeat the process of considering a
// new intermediate over all potential paths. Setting |limit| to 0 disables
@@ -203,10 +213,16 @@ class OPENSSL_EXPORT CertPathBuilder {
// to root. Setting |limit| to 0 disables this limit, which is the default.
void SetDepthLimit(uint32_t limit);
- // If |explore_all_paths| is false (the default), path building will stop as
- // soon as a valid path is found. If |explore_all_paths| is true, path
- // building will continue until all possible paths have been exhausted (or
- // iteration limit / deadline is exceeded).
+ // Set the limit of valid paths returned by the path builder to |limit|. If
+ // |limit| is non zero, path building will stop once |limit| valid paths have
+ // been found. Setting |limit| to 0 disables the limit, meaning path building
+ // will continue until all possible paths have been exhausted (or iteration
+ // limit / deadline is exceeded). The default limit is 1.
+ void SetValidPathLimit(size_t limit);
+
+ // If |explore_all_paths| is false, this is equivalent to calling
+ // SetValidPathLimit(1). If |explore_all_paths| is true, this is equivalent to
+ // calling SetValidPathLimit(0).
void SetExploreAllPaths(bool explore_all_paths);
// Executes verification of the target certificate.
@@ -222,7 +238,7 @@ class OPENSSL_EXPORT CertPathBuilder {
Result out_result_;
std::unique_ptr<CertPathIter> cert_path_iter_;
- CertPathBuilderDelegate* delegate_;
+ CertPathBuilderDelegate *delegate_;
const der::GeneralizedTime time_;
const KeyPurpose key_purpose_;
const InitialExplicitPolicy initial_explicit_policy_;
@@ -231,9 +247,10 @@ class OPENSSL_EXPORT CertPathBuilder {
const InitialAnyPolicyInhibit initial_any_policy_inhibit_;
uint32_t max_iteration_count_ = 0;
uint32_t max_path_building_depth_ = 0;
- bool explore_all_paths_ = false;
+ size_t valid_path_limit_ = 1;
+ size_t valid_path_count_ = 0;
};
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_PATH_BUILDER_H_
diff --git a/src/pki/path_builder_pkits_unittest.cc b/src/pki/path_builder_pkits_unittest.cc
index b797cd4..5bc0703 100644
--- a/src/pki/path_builder_pkits_unittest.cc
+++ b/src/pki/path_builder_pkits_unittest.cc
@@ -6,20 +6,17 @@
#include <cstdint>
-#include "fillins/log.h"
-#include "fillins/net_errors.h"
-
+#include <openssl/pool.h>
#include "cert_issuer_source_static.h"
#include "common_cert_errors.h"
#include "crl.h"
+#include "encode_values.h"
+#include "input.h"
#include "parse_certificate.h"
#include "parsed_certificate.h"
#include "simple_path_builder_delegate.h"
#include "trust_store_in_memory.h"
#include "verify_certificate_chain.h"
-#include "encode_values.h"
-#include "input.h"
-#include <openssl/pool.h>
#include "nist_pkits_unittest.h"
@@ -31,9 +28,8 @@ namespace {
class CrlCheckingPathBuilderDelegate : public SimplePathBuilderDelegate {
public:
- CrlCheckingPathBuilderDelegate(const std::vector<std::string>& der_crls,
- int64_t verify_time,
- int64_t max_age,
+ CrlCheckingPathBuilderDelegate(const std::vector<std::string> &der_crls,
+ int64_t verify_time, int64_t max_age,
size_t min_rsa_modulus_length_bits,
DigestPolicy digest_policy)
: SimplePathBuilderDelegate(min_rsa_modulus_length_bits, digest_policy),
@@ -41,25 +37,27 @@ class CrlCheckingPathBuilderDelegate : public SimplePathBuilderDelegate {
verify_time_(verify_time),
max_age_(max_age) {}
- void CheckPathAfterVerification(const CertPathBuilder& path_builder,
- CertPathBuilderResultPath* path) override {
+ void CheckPathAfterVerification(const CertPathBuilder &path_builder,
+ CertPathBuilderResultPath *path) override {
SimplePathBuilderDelegate::CheckPathAfterVerification(path_builder, path);
- if (!path->IsValid())
+ if (!path->IsValid()) {
return;
+ }
// It would be preferable if this test could use
// CheckValidatedChainRevocation somehow, but that only supports getting
// CRLs by http distributionPoints. So this just settles for writing a
// little bit of wrapper code to test CheckCRL directly.
- const ParsedCertificateList& certs = path->certs;
+ const ParsedCertificateList &certs = path->certs;
for (size_t reverse_i = 0; reverse_i < certs.size(); ++reverse_i) {
size_t i = certs.size() - reverse_i - 1;
// Trust anchors bypass OCSP/CRL revocation checks. (The only way to
// revoke trust anchors is via CRLSet or the built-in SPKI block list).
- if (reverse_i == 0 && path->last_cert_trust.IsTrustAnchor())
+ if (reverse_i == 0 && path->last_cert_trust.IsTrustAnchor()) {
continue;
+ }
// RFC 5280 6.3.3. [If the CRL was not specified in a distribution
// point], assume a DP with both the reasons and the
@@ -69,7 +67,7 @@ class CrlCheckingPathBuilderDelegate : public SimplePathBuilderDelegate {
// points, this means a default-initialized ParsedDistributionPoint is
// sufficient.
ParsedDistributionPoint fake_cert_dp;
- const ParsedDistributionPoint* cert_dp = &fake_cert_dp;
+ const ParsedDistributionPoint *cert_dp = &fake_cert_dp;
// If the target cert does have a distribution point, use it.
std::vector<ParsedDistributionPoint> distribution_points;
@@ -85,7 +83,7 @@ class CrlCheckingPathBuilderDelegate : public SimplePathBuilderDelegate {
// reasons.)
// Look for a DistributionPoint without reasons.
- for (const auto& dp : distribution_points) {
+ for (const auto &dp : distribution_points) {
if (!dp.reasons) {
cert_dp = &dp;
break;
@@ -93,13 +91,14 @@ class CrlCheckingPathBuilderDelegate : public SimplePathBuilderDelegate {
}
// If there were only DistributionPoints with reasons, just use the
// first one.
- if (cert_dp == &fake_cert_dp && !distribution_points.empty())
+ if (cert_dp == &fake_cert_dp && !distribution_points.empty()) {
cert_dp = &distribution_points[0];
+ }
}
bool cert_good = false;
- for (const auto& der_crl : der_crls_) {
+ for (const auto &der_crl : der_crls_) {
CRLRevocationStatus crl_status =
CheckCRL(der_crl, certs, i, *cert_dp, verify_time_, max_age_);
if (crl_status == CRLRevocationStatus::REVOKED) {
@@ -134,16 +133,16 @@ class PathBuilderPkitsTestDelegate {
public:
static void RunTest(std::vector<std::string> cert_ders,
std::vector<std::string> crl_ders,
- const PkitsTestInfo& orig_info) {
+ const PkitsTestInfo &orig_info) {
PkitsTestInfo info = orig_info;
ASSERT_FALSE(cert_ders.empty());
ParsedCertificateList certs;
- for (const std::string& der : cert_ders) {
+ for (const std::string &der : cert_ders) {
CertErrors errors;
ASSERT_TRUE(ParsedCertificate::CreateAndAddToVector(
bssl::UniquePtr<CRYPTO_BUFFER>(
- CRYPTO_BUFFER_new(reinterpret_cast<const uint8_t*>(der.data()),
+ CRYPTO_BUFFER_new(reinterpret_cast<const uint8_t *>(der.data()),
der.size(), nullptr)),
{}, &certs, &errors))
<< errors.ToDebugString();
@@ -156,8 +155,9 @@ class PathBuilderPkitsTestDelegate {
// TODO(mattm): test with other irrelevant certs in cert_issuer_sources?
CertIssuerSourceStatic cert_issuer_source;
- for (size_t i = 1; i < cert_ders.size() - 1; ++i)
+ for (size_t i = 1; i < cert_ders.size() - 1; ++i) {
cert_issuer_source.AddCert(certs[i]);
+ }
std::shared_ptr<const ParsedCertificate> target_cert(certs.back());
@@ -233,16 +233,16 @@ class PathBuilderPkitsTestDelegate {
CertPathBuilder::Result result = path_builder.Run();
if (info.should_validate != result.HasValidPath()) {
+ testing::Message msg;
for (size_t i = 0; i < result.paths.size(); ++i) {
- const bssl::CertPathBuilderResultPath* result_path =
+ const bssl::CertPathBuilderResultPath *result_path =
result.paths[i].get();
- LOG(ERROR) << "path " << i << " errors:\n"
- << result_path->errors.ToDebugString(result_path->certs);
+ msg << "path " << i << " errors:\n"
+ << result_path->errors.ToDebugString(result_path->certs) << "\n";
}
+ ASSERT_EQ(info.should_validate, result.HasValidPath()) << msg;
}
- ASSERT_EQ(info.should_validate, result.HasValidPath());
-
if (result.HasValidPath()) {
EXPECT_EQ(info.user_constrained_policy_set,
result.GetBestValidPath()->user_constrained_policy_set);
@@ -252,54 +252,41 @@ class PathBuilderPkitsTestDelegate {
} // namespace
-INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder,
- PkitsTest01SignatureVerification,
+INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, PkitsTest01SignatureVerification,
PathBuilderPkitsTestDelegate);
-INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder,
- PkitsTest02ValidityPeriods,
+INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, PkitsTest02ValidityPeriods,
PathBuilderPkitsTestDelegate);
-INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder,
- PkitsTest03VerifyingNameChaining,
+INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, PkitsTest03VerifyingNameChaining,
PathBuilderPkitsTestDelegate);
INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder,
PkitsTest04BasicCertificateRevocationTests,
PathBuilderPkitsTestDelegate);
INSTANTIATE_TYPED_TEST_SUITE_P(
- PathBuilder,
- PkitsTest05VerifyingPathswithSelfIssuedCertificates,
+ PathBuilder, PkitsTest05VerifyingPathswithSelfIssuedCertificates,
PathBuilderPkitsTestDelegate);
INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder,
PkitsTest06VerifyingBasicConstraints,
PathBuilderPkitsTestDelegate);
-INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder,
- PkitsTest07KeyUsage,
+INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, PkitsTest07KeyUsage,
PathBuilderPkitsTestDelegate);
-INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder,
- PkitsTest08CertificatePolicies,
+INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, PkitsTest08CertificatePolicies,
PathBuilderPkitsTestDelegate);
-INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder,
- PkitsTest09RequireExplicitPolicy,
+INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, PkitsTest09RequireExplicitPolicy,
PathBuilderPkitsTestDelegate);
-INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder,
- PkitsTest10PolicyMappings,
+INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, PkitsTest10PolicyMappings,
PathBuilderPkitsTestDelegate);
-INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder,
- PkitsTest11InhibitPolicyMapping,
+INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, PkitsTest11InhibitPolicyMapping,
PathBuilderPkitsTestDelegate);
-INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder,
- PkitsTest12InhibitAnyPolicy,
+INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, PkitsTest12InhibitAnyPolicy,
PathBuilderPkitsTestDelegate);
-INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder,
- PkitsTest13NameConstraints,
+INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, PkitsTest13NameConstraints,
PathBuilderPkitsTestDelegate);
-INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder,
- PkitsTest14DistributionPoints,
+INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, PkitsTest14DistributionPoints,
PathBuilderPkitsTestDelegate);
-INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder,
- PkitsTest15DeltaCRLs,
+INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, PkitsTest15DeltaCRLs,
PathBuilderPkitsTestDelegate);
INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder,
PkitsTest16PrivateCertificateExtensions,
PathBuilderPkitsTestDelegate);
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/path_builder_unittest.cc b/src/pki/path_builder_unittest.cc
index ef7ffca..624c0bc 100644
--- a/src/pki/path_builder_unittest.cc
+++ b/src/pki/path_builder_unittest.cc
@@ -6,12 +6,10 @@
#include <algorithm>
-#include "fillins/path_service.h"
-#include "fillins/file_util.h"
-
#include "cert_error_params.h"
#include "cert_issuer_source_static.h"
#include "common_cert_errors.h"
+#include "input.h"
#include "mock_signature_verify_cache.h"
#include "parsed_certificate.h"
#include "simple_path_builder_delegate.h"
@@ -19,9 +17,7 @@
#include "trust_store_collection.h"
#include "trust_store_in_memory.h"
#include "verify_certificate_chain.h"
-#include "input.h"
-#include "testdata/test_certificate_data.h"
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <openssl/pool.h>
@@ -33,13 +29,7 @@ namespace bssl {
namespace {
using ::testing::_;
-using ::testing::ElementsAre;
-using ::testing::Exactly;
using ::testing::Invoke;
-using ::testing::NiceMock;
-using ::testing::Return;
-using ::testing::SaveArg;
-using ::testing::SetArgPointee;
using ::testing::StrictMock;
class TestPathBuilderDelegate : public SimplePathBuilderDelegate {
@@ -54,7 +44,7 @@ class TestPathBuilderDelegate : public SimplePathBuilderDelegate {
deadline_is_expired_ = deadline_is_expired;
}
- SignatureVerifyCache* GetVerifyCache() override {
+ SignatureVerifyCache *GetVerifyCache() override {
return use_signature_cache_ ? &cache_ : nullptr;
}
@@ -62,32 +52,60 @@ class TestPathBuilderDelegate : public SimplePathBuilderDelegate {
void DeActivateCache() { use_signature_cache_ = false; }
- MockSignatureVerifyCache* GetMockVerifyCache() { return &cache_; }
+ MockSignatureVerifyCache *GetMockVerifyCache() { return &cache_; }
- private:
+ void AllowPrecert() { allow_precertificate_ = true; }
+
+ void DisallowPrecert() { allow_precertificate_ = false; }
+
+ bool AcceptPreCertificates() override {
+ return allow_precertificate_;
+ }
+
+private:
bool deadline_is_expired_ = false;
bool use_signature_cache_ = false;
+ bool allow_precertificate_ = false;
MockSignatureVerifyCache cache_;
};
+class CertPathBuilderDelegateBase : public SimplePathBuilderDelegate {
+ public:
+ CertPathBuilderDelegateBase()
+ : SimplePathBuilderDelegate(
+ 1024, SimplePathBuilderDelegate::DigestPolicy::kWeakAllowSha1) {}
+ void CheckPathAfterVerification(const CertPathBuilder &path_builder,
+ CertPathBuilderResultPath *path) override {
+ ADD_FAILURE() << "Tests must override this";
+ }
+};
+
+class MockPathBuilderDelegate : public CertPathBuilderDelegateBase {
+ public:
+ MOCK_METHOD2(CheckPathAfterVerification,
+ void(const CertPathBuilder &path_builder,
+ CertPathBuilderResultPath *path));
+};
+
// AsyncCertIssuerSourceStatic always returns its certs asynchronously.
class AsyncCertIssuerSourceStatic : public CertIssuerSource {
public:
class StaticAsyncRequest : public Request {
public:
- explicit StaticAsyncRequest(ParsedCertificateList&& issuers) {
+ explicit StaticAsyncRequest(ParsedCertificateList &&issuers) {
issuers_.swap(issuers);
issuers_iter_ = issuers_.begin();
}
- StaticAsyncRequest(const StaticAsyncRequest&) = delete;
- StaticAsyncRequest& operator=(const StaticAsyncRequest&) = delete;
+ StaticAsyncRequest(const StaticAsyncRequest &) = delete;
+ StaticAsyncRequest &operator=(const StaticAsyncRequest &) = delete;
~StaticAsyncRequest() override = default;
- void GetNext(ParsedCertificateList* out_certs) override {
- if (issuers_iter_ != issuers_.end())
+ void GetNext(ParsedCertificateList *out_certs) override {
+ if (issuers_iter_ != issuers_.end()) {
out_certs->push_back(std::move(*issuers_iter_++));
+ }
}
ParsedCertificateList issuers_;
@@ -104,10 +122,10 @@ class AsyncCertIssuerSourceStatic : public CertIssuerSource {
static_cert_issuer_source_.AddCert(std::move(cert));
}
- void SyncGetIssuersOf(const ParsedCertificate* cert,
- ParsedCertificateList* issuers) override {}
- void AsyncGetIssuersOf(const ParsedCertificate* cert,
- std::unique_ptr<Request>* out_req) override {
+ void SyncGetIssuersOf(const ParsedCertificate *cert,
+ ParsedCertificateList *issuers) override {}
+ void AsyncGetIssuersOf(const ParsedCertificate *cert,
+ std::unique_ptr<Request> *out_req) override {
num_async_gets_++;
ParsedCertificateList issuers;
static_cert_issuer_source_.SyncGetIssuersOf(cert, &issuers);
@@ -126,9 +144,9 @@ class AsyncCertIssuerSourceStatic : public CertIssuerSource {
std::function<void()> async_get_callback_ = nullptr;
};
-::testing::AssertionResult ReadTestPem(const std::string& file_name,
- const std::string& block_name,
- std::string* result) {
+::testing::AssertionResult ReadTestPem(const std::string &file_name,
+ const std::string &block_name,
+ std::string *result) {
const PemBlockMapping mappings[] = {
{block_name.c_str(), result},
};
@@ -137,17 +155,18 @@ class AsyncCertIssuerSourceStatic : public CertIssuerSource {
}
::testing::AssertionResult ReadTestCert(
- const std::string& file_name,
- std::shared_ptr<const ParsedCertificate>* result) {
+ const std::string &file_name,
+ std::shared_ptr<const ParsedCertificate> *result) {
std::string der;
::testing::AssertionResult r = ReadTestPem(
- "testdata/ssl/certificates/" + file_name, "CERTIFICATE", &der);
- if (!r)
+ "testdata/path_builder_unittest/" + file_name, "CERTIFICATE", &der);
+ if (!r) {
return r;
+ }
CertErrors errors;
*result = ParsedCertificate::Create(
bssl::UniquePtr<CRYPTO_BUFFER>(CRYPTO_BUFFER_new(
- reinterpret_cast<const uint8_t*>(der.data()), der.size(), nullptr)),
+ reinterpret_cast<const uint8_t *>(der.data()), der.size(), nullptr)),
{}, &errors);
if (!*result) {
return ::testing::AssertionFailure()
@@ -211,7 +230,7 @@ TEST_F(PathBuilderMultiRootTest, TargetHasNameAndSpkiOfTrustAnchor) {
auto result = path_builder.Run();
ASSERT_TRUE(result.HasValidPath());
- const auto& path = *result.GetBestValidPath();
+ const auto &path = *result.GetBestValidPath();
ASSERT_EQ(2U, path.certs.size());
EXPECT_EQ(a_by_b_, path.certs[0]);
EXPECT_EQ(b_by_f_, path.certs[1]);
@@ -267,7 +286,7 @@ TEST_F(PathBuilderMultiRootTest, SelfSignedTrustAnchorSupplementalCert) {
ASSERT_EQ(1U, result.paths.size());
EXPECT_FALSE(result.paths[0]->IsValid());
- const auto& path0 = *result.paths[0];
+ const auto &path0 = *result.paths[0];
ASSERT_EQ(3U, path0.certs.size());
EXPECT_EQ(b_by_c_, path0.certs[0]);
EXPECT_EQ(c_by_d_, path0.certs[1]);
@@ -292,7 +311,7 @@ TEST_F(PathBuilderMultiRootTest, TargetIsSelfSignedTrustAnchor) {
// Verifying a trusted leaf certificate is not permitted, however this
// certificate is self-signed, and can chain to itself.
- const auto& path = *result.GetBestValidPath();
+ const auto &path = *result.GetBestValidPath();
ASSERT_EQ(2U, path.certs.size());
EXPECT_EQ(e_by_e_, path.certs[0]);
EXPECT_EQ(e_by_e_, path.certs[1]);
@@ -312,7 +331,7 @@ TEST_F(PathBuilderMultiRootTest, TargetDirectlySignedByTrustAnchor) {
auto result = path_builder.Run();
ASSERT_TRUE(result.HasValidPath());
- const auto& path = *result.GetBestValidPath();
+ const auto &path = *result.GetBestValidPath();
ASSERT_EQ(2U, path.certs.size());
EXPECT_EQ(a_by_b_, path.certs[0]);
EXPECT_EQ(b_by_f_, path.certs[1]);
@@ -446,7 +465,7 @@ TEST_F(PathBuilderMultiRootTest, TestBacktracking) {
// The result path should be A(B) <- B(C) <- C(D) <- D(D)
EXPECT_EQ(1U, result.best_result_index);
EXPECT_TRUE(result.paths[1]->IsValid());
- const auto& path = *result.GetBestValidPath();
+ const auto &path = *result.GetBestValidPath();
ASSERT_EQ(4U, path.certs.size());
EXPECT_EQ(a_by_b_, path.certs[0]);
EXPECT_EQ(b_by_c_, path.certs[1]);
@@ -573,7 +592,7 @@ TEST_F(PathBuilderMultiRootTest, TestDistrustedPathPreferredOverPartialPath) {
// The result path should be A(B) <- B(C) <- C(D) <- D(D)
EXPECT_EQ(1U, result.best_result_index);
EXPECT_FALSE(result.paths[1]->IsValid());
- const auto& path = *result.GetBestPathPossiblyInvalid();
+ const auto &path = *result.GetBestPathPossiblyInvalid();
ASSERT_EQ(4U, path.certs.size());
EXPECT_EQ(a_by_b_, path.certs[0]);
EXPECT_EQ(b_by_c_, path.certs[1]);
@@ -594,11 +613,13 @@ TEST_F(PathBuilderMultiRootTest, TestCertIssuerOrdering) {
b_by_c_, b_by_f_, f_by_e_, c_by_d_, c_by_e_};
CertIssuerSourceStatic sync_certs;
if (reverse_order) {
- for (auto it = certs.rbegin(); it != certs.rend(); ++it)
+ for (auto it = certs.rbegin(); it != certs.rend(); ++it) {
sync_certs.AddCert(*it);
+ }
} else {
- for (const auto& cert : certs)
+ for (const auto &cert : certs) {
sync_certs.AddCert(cert);
+ }
}
CertPathBuilder path_builder(
@@ -612,7 +633,7 @@ TEST_F(PathBuilderMultiRootTest, TestCertIssuerOrdering) {
ASSERT_TRUE(result.HasValidPath());
// The result path should be A(B) <- B(C) <- C(D) <- D(D)
- const auto& path = *result.GetBestValidPath();
+ const auto &path = *result.GetBestValidPath();
ASSERT_EQ(4U, path.certs.size());
EXPECT_EQ(a_by_b_, path.certs[0]);
EXPECT_EQ(b_by_c_, path.certs[1]);
@@ -634,8 +655,13 @@ TEST_F(PathBuilderMultiRootTest, TestIterationLimit) {
for (const bool insufficient_limit : {true, false}) {
SCOPED_TRACE(insufficient_limit);
+ StrictMock<MockPathBuilderDelegate> mock_delegate;
+ // The CheckPathAfterVerification delegate should be called regardless if
+ // the iteration limit is reached.
+ EXPECT_CALL(mock_delegate, CheckPathAfterVerification(_, _));
+
CertPathBuilder path_builder(
- a_by_b_, &trust_store, &delegate_, time_, KeyPurpose::ANY_EKU,
+ a_by_b_, &trust_store, &mock_delegate, time_, KeyPurpose::ANY_EKU,
initial_explicit_policy_, user_initial_policy_set_,
initial_policy_mapping_inhibit_, initial_any_policy_inhibit_);
path_builder.AddCertIssuerSource(&sync_certs);
@@ -871,7 +897,7 @@ TEST_F(PathBuilderMultiRootTest, TestDepthLimitMultiplePaths) {
ASSERT_EQ(result.paths.size(), 2u);
- const CertPathBuilderResultPath* truncated_path = result.paths[0].get();
+ const CertPathBuilderResultPath *truncated_path = result.paths[0].get();
EXPECT_FALSE(truncated_path->IsValid());
EXPECT_TRUE(
truncated_path->errors.ContainsError(cert_errors::kDepthLimitExceeded));
@@ -880,7 +906,7 @@ TEST_F(PathBuilderMultiRootTest, TestDepthLimitMultiplePaths) {
EXPECT_EQ(b_by_f_, truncated_path->certs[1]);
EXPECT_EQ(f_by_e_, truncated_path->certs[2]);
- const CertPathBuilderResultPath* valid_path = result.paths[1].get();
+ const CertPathBuilderResultPath *valid_path = result.paths[1].get();
EXPECT_TRUE(valid_path->IsValid());
EXPECT_FALSE(
valid_path->errors.ContainsError(cert_errors::kDepthLimitExceeded));
@@ -890,6 +916,46 @@ TEST_F(PathBuilderMultiRootTest, TestDepthLimitMultiplePaths) {
EXPECT_EQ(c_by_d_, valid_path->certs[2]);
}
+TEST_F(PathBuilderMultiRootTest, TestPreCertificate) {
+
+ std::string test_dir =
+ "testdata/path_builder_unittest/precertificate/";
+ std::shared_ptr<const ParsedCertificate> root1 =
+ ReadCertFromFile(test_dir + "root.pem");
+ ASSERT_TRUE(root1);
+ std::shared_ptr<const ParsedCertificate> target =
+ ReadCertFromFile(test_dir + "precertificate.pem");
+ ASSERT_TRUE(target);
+
+ der::GeneralizedTime precert_time = {2023, 10, 1, 0, 0, 0};
+
+ TrustStoreInMemory trust_store;
+ trust_store.AddTrustAnchor(root1);
+
+ // PreCertificate should be rejected by default.
+ EXPECT_FALSE(delegate_.AcceptPreCertificates());
+ CertPathBuilder path_builder(
+ target, &trust_store, &delegate_, precert_time, KeyPurpose::ANY_EKU,
+ initial_explicit_policy_, user_initial_policy_set_,
+ initial_policy_mapping_inhibit_, initial_any_policy_inhibit_);
+ auto result = path_builder.Run();
+ ASSERT_EQ(1U, result.paths.size());
+ ASSERT_FALSE(result.paths[0]->IsValid())
+ << result.paths[0]->errors.ToDebugString(result.paths[0]->certs);
+
+ // PreCertificate should be accepted if configured.
+ delegate_.AllowPrecert();
+ EXPECT_TRUE(delegate_.AcceptPreCertificates());
+ CertPathBuilder path_builder2(
+ target, &trust_store, &delegate_, precert_time, KeyPurpose::ANY_EKU,
+ initial_explicit_policy_, user_initial_policy_set_,
+ initial_policy_mapping_inhibit_, initial_any_policy_inhibit_);
+ auto result2 = path_builder2.Run();
+ ASSERT_EQ(1U, result2.paths.size());
+ ASSERT_TRUE(result2.paths[0]->IsValid())
+ << result2.paths[0]->errors.ToDebugString(result.paths[0]->certs);
+}
+
class PathBuilderKeyRolloverTest : public ::testing::Test {
public:
PathBuilderKeyRolloverTest()
@@ -985,7 +1051,7 @@ TEST_F(PathBuilderKeyRolloverTest, TestRolloverOnlyOldRootTrusted) {
// attempt: target <- newintermediate <- newrootrollover <- oldroot
// which will succeed.
ASSERT_EQ(1U, result.paths.size());
- const auto& path0 = *result.paths[0];
+ const auto &path0 = *result.paths[0];
EXPECT_EQ(0U, result.best_result_index);
EXPECT_TRUE(path0.IsValid());
ASSERT_EQ(4U, path0.certs.size());
@@ -1020,7 +1086,7 @@ TEST_F(PathBuilderKeyRolloverTest, TestRolloverBothRootsTrusted) {
EXPECT_TRUE(result.HasValidPath());
ASSERT_EQ(1U, result.paths.size());
- const auto& path = *result.paths[0];
+ const auto &path = *result.paths[0];
EXPECT_TRUE(result.paths[0]->IsValid());
ASSERT_EQ(3U, path.certs.size());
EXPECT_EQ(target_, path.certs[0]);
@@ -1046,7 +1112,7 @@ TEST_F(PathBuilderKeyRolloverTest, TestAnchorsNoMatchAndNoIssuerSources) {
EXPECT_FALSE(result.HasValidPath());
ASSERT_EQ(1U, result.paths.size());
- const auto& path = *result.paths[0];
+ const auto &path = *result.paths[0];
EXPECT_FALSE(result.paths[0]->IsValid());
ASSERT_EQ(1U, path.certs.size());
EXPECT_EQ(target_, path.certs[0]);
@@ -1093,7 +1159,7 @@ TEST_F(PathBuilderKeyRolloverTest, TestReturnsPartialPathEndedByLoopChecker) {
// target->newintermediate->newrootrollover
{
- const auto& path = *result.paths[0];
+ const auto &path = *result.paths[0];
EXPECT_FALSE(path.IsValid());
ASSERT_EQ(3U, path.certs.size());
EXPECT_EQ(target_, path.certs[0]);
@@ -1103,7 +1169,7 @@ TEST_F(PathBuilderKeyRolloverTest, TestReturnsPartialPathEndedByLoopChecker) {
}
{
- const auto& path = *result.paths[1];
+ const auto &path = *result.paths[1];
EXPECT_FALSE(path.IsValid());
ASSERT_EQ(3U, path.certs.size());
EXPECT_EQ(target_, path.certs[0]);
@@ -1148,7 +1214,7 @@ TEST_F(PathBuilderKeyRolloverTest, TestMultipleRootMatchesOnlyOneWorks) {
// attempt: target <- old intermediate <- oldroot
// which should succeed.
EXPECT_TRUE(result.paths[result.best_result_index]->IsValid());
- const auto& path = *result.paths[result.best_result_index];
+ const auto &path = *result.paths[result.best_result_index];
ASSERT_EQ(3U, path.certs.size());
EXPECT_EQ(target_, path.certs[0]);
EXPECT_EQ(oldintermediate_, path.certs[1]);
@@ -1189,7 +1255,7 @@ TEST_F(PathBuilderKeyRolloverTest, TestRolloverLongChain) {
// target <- newintermediate <- newroot <- oldroot
// but it will fail since newroot is self-signed.
EXPECT_FALSE(result.paths[0]->IsValid());
- const auto& path0 = *result.paths[0];
+ const auto &path0 = *result.paths[0];
ASSERT_EQ(4U, path0.certs.size());
EXPECT_EQ(target_, path0.certs[0]);
EXPECT_EQ(newintermediate_, path0.certs[1]);
@@ -1199,7 +1265,7 @@ TEST_F(PathBuilderKeyRolloverTest, TestRolloverLongChain) {
// Path builder will next attempt: target <- newintermediate <- oldroot
// but it will fail since newintermediate is signed by newroot.
EXPECT_FALSE(result.paths[1]->IsValid());
- const auto& path1 = *result.paths[1];
+ const auto &path1 = *result.paths[1];
ASSERT_EQ(3U, path1.certs.size());
EXPECT_EQ(target_, path1.certs[0]);
EXPECT_EQ(newintermediate_, path1.certs[1]);
@@ -1213,7 +1279,7 @@ TEST_F(PathBuilderKeyRolloverTest, TestRolloverLongChain) {
// target <- newintermediate <- newrootrollover <- oldroot
EXPECT_EQ(2U, result.best_result_index);
EXPECT_TRUE(result.paths[2]->IsValid());
- const auto& path2 = *result.paths[2];
+ const auto &path2 = *result.paths[2];
ASSERT_EQ(4U, path2.certs.size());
EXPECT_EQ(target_, path2.certs[0]);
EXPECT_EQ(newintermediate_, path2.certs[1]);
@@ -1259,7 +1325,7 @@ TEST_F(PathBuilderKeyRolloverTest, ExploreAllPathsWithIterationLimit) {
sync_certs.AddCert(oldintermediate_);
sync_certs.AddCert(newintermediate_);
- for (const auto& expectation : kExpectations) {
+ for (const auto &expectation : kExpectations) {
SCOPED_TRACE(expectation.iteration_limit);
CertPathBuilder path_builder(
@@ -1281,7 +1347,7 @@ TEST_F(PathBuilderKeyRolloverTest, ExploreAllPathsWithIterationLimit) {
ASSERT_EQ(expectation.expected_num_paths, result.paths.size());
} else {
ASSERT_EQ(1 + expectation.expected_num_paths, result.paths.size());
- const auto& path = *result.paths[result.paths.size() - 1];
+ const auto &path = *result.paths[result.paths.size() - 1];
EXPECT_FALSE(path.IsValid());
EXPECT_EQ(expectation.partial_path, path.certs);
EXPECT_TRUE(
@@ -1291,7 +1357,7 @@ TEST_F(PathBuilderKeyRolloverTest, ExploreAllPathsWithIterationLimit) {
if (expectation.expected_num_paths > 0) {
// Path builder will first build path: target <- newintermediate <-
// newroot
- const auto& path0 = *result.paths[0];
+ const auto &path0 = *result.paths[0];
EXPECT_TRUE(path0.IsValid());
ASSERT_EQ(3U, path0.certs.size());
EXPECT_EQ(target_, path0.certs[0]);
@@ -1302,7 +1368,7 @@ TEST_F(PathBuilderKeyRolloverTest, ExploreAllPathsWithIterationLimit) {
if (expectation.expected_num_paths > 1) {
// Next path: target <- newintermediate <- oldroot
- const auto& path1 = *result.paths[1];
+ const auto &path1 = *result.paths[1];
EXPECT_FALSE(path1.IsValid());
ASSERT_EQ(3U, path1.certs.size());
EXPECT_EQ(target_, path1.certs[0]);
@@ -1313,7 +1379,7 @@ TEST_F(PathBuilderKeyRolloverTest, ExploreAllPathsWithIterationLimit) {
if (expectation.expected_num_paths > 2) {
// Next path: target <- oldintermediate <- oldroot
- const auto& path2 = *result.paths[2];
+ const auto &path2 = *result.paths[2];
EXPECT_TRUE(path2.IsValid());
ASSERT_EQ(3U, path2.certs.size());
EXPECT_EQ(target_, path2.certs[0]);
@@ -1324,7 +1390,94 @@ TEST_F(PathBuilderKeyRolloverTest, ExploreAllPathsWithIterationLimit) {
if (expectation.expected_num_paths > 3) {
// Final path: target <- oldintermediate <- newroot
- const auto& path3 = *result.paths[3];
+ const auto &path3 = *result.paths[3];
+ EXPECT_FALSE(path3.IsValid());
+ ASSERT_EQ(3U, path3.certs.size());
+ EXPECT_EQ(target_, path3.certs[0]);
+ EXPECT_EQ(oldintermediate_, path3.certs[1]);
+ EXPECT_EQ(newroot_, path3.certs[2]);
+ EXPECT_EQ(3U, result.max_depth_seen);
+ }
+ }
+}
+
+// Tests that when SetValidPathLimit is used path builder returns the number of
+// valid paths we expect before the valid path limit was reached.
+TEST_F(PathBuilderKeyRolloverTest, ExplorePathsWithPathLimit) {
+ struct Expectation {
+ size_t valid_path_limit;
+ size_t expected_num_paths;
+ } kExpectations[] = {
+ {0, 4}, // No path limit. Three valid, one partial path should be built
+ {1, 1}, // One valid path
+ {2, 3}, // Two valid, one partial
+ {3, 4}, {4, 4}, {5, 4},
+ };
+
+ // Trust both old and new roots.
+ TrustStoreInMemory trust_store;
+ trust_store.AddTrustAnchor(oldroot_);
+ trust_store.AddTrustAnchor(newroot_);
+
+ // Intermediates and root rollover are all provided synchronously.
+ CertIssuerSourceStatic sync_certs;
+ sync_certs.AddCert(oldintermediate_);
+ sync_certs.AddCert(newintermediate_);
+
+ for (const auto &expectation : kExpectations) {
+ SCOPED_TRACE(expectation.valid_path_limit);
+
+ CertPathBuilder path_builder(
+ target_, &trust_store, &delegate_, time_, KeyPurpose::ANY_EKU,
+ initial_explicit_policy_, user_initial_policy_set_,
+ initial_policy_mapping_inhibit_, initial_any_policy_inhibit_);
+ path_builder.AddCertIssuerSource(&sync_certs);
+
+ // Stop after finding enough valid paths.
+ path_builder.SetValidPathLimit(expectation.valid_path_limit);
+
+ auto result = path_builder.Run();
+
+ EXPECT_TRUE(result.HasValidPath());
+ ASSERT_EQ(expectation.expected_num_paths, result.paths.size());
+
+ if (result.paths.size() > 0) {
+ // Path builder will first build path: target <- newintermediate <-
+ // newroot
+ const auto &path0 = *result.paths[0];
+ EXPECT_TRUE(path0.IsValid());
+ ASSERT_EQ(3U, path0.certs.size());
+ EXPECT_EQ(target_, path0.certs[0]);
+ EXPECT_EQ(newintermediate_, path0.certs[1]);
+ EXPECT_EQ(newroot_, path0.certs[2]);
+ EXPECT_EQ(3U, result.max_depth_seen);
+ }
+
+ if (result.paths.size() > 1) {
+ // Next path: target <- newintermediate <- oldroot
+ const auto &path1 = *result.paths[1];
+ EXPECT_FALSE(path1.IsValid());
+ ASSERT_EQ(3U, path1.certs.size());
+ EXPECT_EQ(target_, path1.certs[0]);
+ EXPECT_EQ(newintermediate_, path1.certs[1]);
+ EXPECT_EQ(oldroot_, path1.certs[2]);
+ EXPECT_EQ(3U, result.max_depth_seen);
+ }
+
+ if (result.paths.size() > 2) {
+ // Next path: target <- oldintermediate <- oldroot
+ const auto &path2 = *result.paths[2];
+ EXPECT_TRUE(path2.IsValid());
+ ASSERT_EQ(3U, path2.certs.size());
+ EXPECT_EQ(target_, path2.certs[0]);
+ EXPECT_EQ(oldintermediate_, path2.certs[1]);
+ EXPECT_EQ(oldroot_, path2.certs[2]);
+ EXPECT_EQ(3U, result.max_depth_seen);
+ }
+
+ if (result.paths.size() > 3) {
+ // Final path: target <- oldintermediate <- newroot
+ const auto &path3 = *result.paths[3];
EXPECT_FALSE(path3.IsValid());
ASSERT_EQ(3U, path3.certs.size());
EXPECT_EQ(target_, path3.certs[0]);
@@ -1401,7 +1554,7 @@ TEST_F(PathBuilderKeyRolloverTest,
ASSERT_TRUE(result.HasValidPath());
- const CertPathBuilderResultPath* best_result = result.GetBestValidPath();
+ const CertPathBuilderResultPath *best_result = result.GetBestValidPath();
// Newroot has same name+SPKI as newrootrollover, thus the path is valid and
// only contains newroot.
@@ -1417,9 +1570,9 @@ TEST_F(PathBuilderKeyRolloverTest, TestDuplicateIntermediates) {
// Create a separate copy of oldintermediate.
std::shared_ptr<const ParsedCertificate> oldintermediate_dupe(
ParsedCertificate::Create(
- bssl::UniquePtr<CRYPTO_BUFFER>(CRYPTO_BUFFER_new(
- oldintermediate_->der_cert().UnsafeData(),
- oldintermediate_->der_cert().Length(), nullptr)),
+ bssl::UniquePtr<CRYPTO_BUFFER>(
+ CRYPTO_BUFFER_new(oldintermediate_->der_cert().data(),
+ oldintermediate_->der_cert().size(), nullptr)),
{}, nullptr));
// Only newroot is a trusted root.
@@ -1457,7 +1610,7 @@ TEST_F(PathBuilderKeyRolloverTest, TestDuplicateIntermediates) {
// Path builder will first attempt: target <- oldintermediate <- newroot
// but it will fail since oldintermediate is signed by oldroot.
EXPECT_FALSE(result.paths[0]->IsValid());
- const auto& path0 = *result.paths[0];
+ const auto &path0 = *result.paths[0];
ASSERT_EQ(3U, path0.certs.size());
EXPECT_EQ(target_, path0.certs[0]);
@@ -1470,7 +1623,7 @@ TEST_F(PathBuilderKeyRolloverTest, TestDuplicateIntermediates) {
// which will succeed.
EXPECT_EQ(1U, result.best_result_index);
EXPECT_TRUE(result.paths[1]->IsValid());
- const auto& path1 = *result.paths[1];
+ const auto &path1 = *result.paths[1];
ASSERT_EQ(3U, path1.certs.size());
EXPECT_EQ(target_, path1.certs[0]);
EXPECT_EQ(newintermediate_, path1.certs[1]);
@@ -1484,8 +1637,8 @@ TEST_F(PathBuilderKeyRolloverTest, TestDuplicateIntermediateAndRoot) {
std::shared_ptr<const ParsedCertificate> newroot_dupe(
ParsedCertificate::Create(
bssl::UniquePtr<CRYPTO_BUFFER>(
- CRYPTO_BUFFER_new(newroot_->der_cert().UnsafeData(),
- newroot_->der_cert().Length(), nullptr)),
+ CRYPTO_BUFFER_new(newroot_->der_cert().data(),
+ newroot_->der_cert().size(), nullptr)),
{}, nullptr));
// Only newroot is a trusted root.
@@ -1511,7 +1664,7 @@ TEST_F(PathBuilderKeyRolloverTest, TestDuplicateIntermediateAndRoot) {
// Path builder attempt: target <- oldintermediate <- newroot
// but it will fail since oldintermediate is signed by oldroot.
EXPECT_FALSE(result.paths[0]->IsValid());
- const auto& path = *result.paths[0];
+ const auto &path = *result.paths[0];
ASSERT_EQ(3U, path.certs.size());
EXPECT_EQ(target_, path.certs[0]);
EXPECT_EQ(oldintermediate_, path.certs[1]);
@@ -1522,15 +1675,15 @@ TEST_F(PathBuilderKeyRolloverTest, TestDuplicateIntermediateAndRoot) {
class MockCertIssuerSourceRequest : public CertIssuerSource::Request {
public:
- MOCK_METHOD1(GetNext, void(ParsedCertificateList*));
+ MOCK_METHOD1(GetNext, void(ParsedCertificateList *));
};
class MockCertIssuerSource : public CertIssuerSource {
public:
MOCK_METHOD2(SyncGetIssuersOf,
- void(const ParsedCertificate*, ParsedCertificateList*));
+ void(const ParsedCertificate *, ParsedCertificateList *));
MOCK_METHOD2(AsyncGetIssuersOf,
- void(const ParsedCertificate*, std::unique_ptr<Request>*));
+ void(const ParsedCertificate *, std::unique_ptr<Request> *));
};
// Helper class to pass the Request to the PathBuilder when it calls
@@ -1541,8 +1694,8 @@ class CertIssuerSourceRequestMover {
explicit CertIssuerSourceRequestMover(
std::unique_ptr<CertIssuerSource::Request> req)
: request_(std::move(req)) {}
- void MoveIt(const ParsedCertificate* cert,
- std::unique_ptr<CertIssuerSource::Request>* out_req) {
+ void MoveIt(const ParsedCertificate *cert,
+ std::unique_ptr<CertIssuerSource::Request> *out_req) {
*out_req = std::move(request_);
}
@@ -1555,10 +1708,10 @@ class CertIssuerSourceRequestMover {
class AppendCertToList {
public:
explicit AppendCertToList(
- const std::shared_ptr<const ParsedCertificate>& cert)
+ const std::shared_ptr<const ParsedCertificate> &cert)
: cert_(cert) {}
- void operator()(ParsedCertificateList* out) { out->push_back(cert_); }
+ void operator()(ParsedCertificateList *out) { out->push_back(cert_); }
private:
std::shared_ptr<const ParsedCertificate> cert_;
@@ -1584,7 +1737,7 @@ TEST_F(PathBuilderKeyRolloverTest, TestMultipleAsyncIssuersFromSingleSource) {
auto target_issuers_req_owner =
std::make_unique<StrictMock<MockCertIssuerSourceRequest>>();
// Keep a raw pointer to the Request...
- StrictMock<MockCertIssuerSourceRequest>* target_issuers_req =
+ StrictMock<MockCertIssuerSourceRequest> *target_issuers_req =
target_issuers_req_owner.get();
// Setup helper class to pass ownership of the Request to the PathBuilder when
// it calls AsyncGetIssuersOf.
@@ -1629,7 +1782,7 @@ TEST_F(PathBuilderKeyRolloverTest, TestMultipleAsyncIssuersFromSingleSource) {
// Path builder first attempts: target <- oldintermediate <- newroot
// but it will fail since oldintermediate is signed by oldroot.
EXPECT_FALSE(result.paths[0]->IsValid());
- const auto& path0 = *result.paths[0];
+ const auto &path0 = *result.paths[0];
ASSERT_EQ(3U, path0.certs.size());
EXPECT_EQ(target_, path0.certs[0]);
EXPECT_EQ(oldintermediate_, path0.certs[1]);
@@ -1638,7 +1791,7 @@ TEST_F(PathBuilderKeyRolloverTest, TestMultipleAsyncIssuersFromSingleSource) {
// After the second batch of async results, path builder will attempt:
// target <- newintermediate <- newroot which will succeed.
EXPECT_TRUE(result.paths[1]->IsValid());
- const auto& path1 = *result.paths[1];
+ const auto &path1 = *result.paths[1];
ASSERT_EQ(3U, path1.certs.size());
EXPECT_EQ(target_, path1.certs[0]);
EXPECT_EQ(newintermediate_, path1.certs[1]);
@@ -1664,7 +1817,7 @@ TEST_F(PathBuilderKeyRolloverTest, TestDuplicateAsyncIntermediates) {
auto target_issuers_req_owner =
std::make_unique<StrictMock<MockCertIssuerSourceRequest>>();
// Keep a raw pointer to the Request...
- StrictMock<MockCertIssuerSourceRequest>* target_issuers_req =
+ StrictMock<MockCertIssuerSourceRequest> *target_issuers_req =
target_issuers_req_owner.get();
// Setup helper class to pass ownership of the Request to the PathBuilder when
// it calls AsyncGetIssuersOf.
@@ -1678,9 +1831,9 @@ TEST_F(PathBuilderKeyRolloverTest, TestDuplicateAsyncIntermediates) {
std::shared_ptr<const ParsedCertificate> oldintermediate_dupe(
ParsedCertificate::Create(
- bssl::UniquePtr<CRYPTO_BUFFER>(CRYPTO_BUFFER_new(
- oldintermediate_->der_cert().UnsafeData(),
- oldintermediate_->der_cert().Length(), nullptr)),
+ bssl::UniquePtr<CRYPTO_BUFFER>(
+ CRYPTO_BUFFER_new(oldintermediate_->der_cert().data(),
+ oldintermediate_->der_cert().size(), nullptr)),
{}, nullptr));
EXPECT_CALL(*target_issuers_req, GetNext(_))
@@ -1716,7 +1869,7 @@ TEST_F(PathBuilderKeyRolloverTest, TestDuplicateAsyncIntermediates) {
// Path builder first attempts: target <- oldintermediate <- newroot
// but it will fail since oldintermediate is signed by oldroot.
EXPECT_FALSE(result.paths[0]->IsValid());
- const auto& path0 = *result.paths[0];
+ const auto &path0 = *result.paths[0];
ASSERT_EQ(3U, path0.certs.size());
EXPECT_EQ(target_, path0.certs[0]);
EXPECT_EQ(oldintermediate_, path0.certs[1]);
@@ -1727,7 +1880,7 @@ TEST_F(PathBuilderKeyRolloverTest, TestDuplicateAsyncIntermediates) {
// After the third batch of async results, path builder will attempt:
// target <- newintermediate <- newroot which will succeed.
EXPECT_TRUE(result.paths[1]->IsValid());
- const auto& path1 = *result.paths[1];
+ const auto &path1 = *result.paths[1];
ASSERT_EQ(3U, path1.certs.size());
EXPECT_EQ(target_, path1.certs[0]);
EXPECT_EQ(newintermediate_, path1.certs[1]);
@@ -1751,15 +1904,17 @@ class PathBuilderSimpleChainTest : public ::testing::Test {
// Runs the path builder for the target certificate while |distrusted_cert| is
// blocked, and |delegate| if non-null.
CertPathBuilder::Result RunPathBuilder(
- const std::shared_ptr<const ParsedCertificate>& distrusted_cert,
- CertPathBuilderDelegate* optional_delegate) {
+ const std::shared_ptr<const ParsedCertificate> &distrusted_cert,
+ CertPathBuilderDelegate *optional_delegate) {
// Set up the trust store such that |distrusted_cert| is blocked, and
// the root is trusted (except if it was |distrusted_cert|).
TrustStoreInMemory trust_store;
- if (distrusted_cert != test_.chain.back())
+ if (distrusted_cert != test_.chain.back()) {
trust_store.AddTrustAnchor(test_.chain.back());
- if (distrusted_cert)
+ }
+ if (distrusted_cert) {
trust_store.AddDistrustedCertificateForTest(distrusted_cert);
+ }
// Add the single intermediate.
CertIssuerSourceStatic intermediates;
@@ -1767,7 +1922,7 @@ class PathBuilderSimpleChainTest : public ::testing::Test {
SimplePathBuilderDelegate default_delegate(
1024, SimplePathBuilderDelegate::DigestPolicy::kWeakAllowSha1);
- CertPathBuilderDelegate* delegate =
+ CertPathBuilderDelegate *delegate =
optional_delegate ? optional_delegate : &default_delegate;
const InitialExplicitPolicy initial_explicit_policy =
@@ -1801,7 +1956,7 @@ class PathBuilderDistrustTest : public PathBuilderSimpleChainTest {
// Runs the path builder for the target certificate while |distrusted_cert| is
// blocked.
CertPathBuilder::Result RunPathBuilderWithDistrustedCert(
- const std::shared_ptr<const ParsedCertificate>& distrusted_cert) {
+ const std::shared_ptr<const ParsedCertificate> &distrusted_cert) {
return RunPathBuilder(distrusted_cert, nullptr);
}
};
@@ -1815,10 +1970,11 @@ TEST_F(PathBuilderDistrustTest, TargetIntermediateRoot) {
{
ASSERT_TRUE(result.HasValidPath());
// The built path should be identical the the one read from disk.
- const auto& path = *result.GetBestValidPath();
+ const auto &path = *result.GetBestValidPath();
ASSERT_EQ(test_.chain.size(), path.certs.size());
- for (size_t i = 0; i < test_.chain.size(); ++i)
+ for (size_t i = 0; i < test_.chain.size(); ++i) {
EXPECT_EQ(test_.chain[i], path.certs[i]);
+ }
}
// Try path building when only the target is blocked - should fail.
@@ -1826,7 +1982,7 @@ TEST_F(PathBuilderDistrustTest, TargetIntermediateRoot) {
{
EXPECT_FALSE(result.HasValidPath());
ASSERT_LT(result.best_result_index, result.paths.size());
- const auto& best_path = result.paths[result.best_result_index];
+ const auto &best_path = result.paths[result.best_result_index];
// The built chain has length 1 since path building stopped once
// it encountered the blocked certificate (target).
@@ -1841,7 +1997,7 @@ TEST_F(PathBuilderDistrustTest, TargetIntermediateRoot) {
{
EXPECT_FALSE(result.HasValidPath());
ASSERT_LT(result.best_result_index, result.paths.size());
- const auto& best_path = result.paths[result.best_result_index];
+ const auto &best_path = result.paths[result.best_result_index];
// The built chain has length 2 since path building stopped once
// it encountered the blocked certificate (intermediate).
@@ -1857,7 +2013,7 @@ TEST_F(PathBuilderDistrustTest, TargetIntermediateRoot) {
{
EXPECT_FALSE(result.HasValidPath());
ASSERT_LT(result.best_result_index, result.paths.size());
- const auto& best_path = result.paths[result.best_result_index];
+ const auto &best_path = result.paths[result.best_result_index];
// The built chain has length 3 since path building stopped once
// it encountered the blocked certificate (root).
@@ -1875,25 +2031,6 @@ TEST_F(PathBuilderDistrustTest, TargetIntermediateRoot) {
class PathBuilderCheckPathAfterVerificationTest
: public PathBuilderSimpleChainTest {};
-class CertPathBuilderDelegateBase : public SimplePathBuilderDelegate {
- public:
- CertPathBuilderDelegateBase()
- : SimplePathBuilderDelegate(
- 1024,
- SimplePathBuilderDelegate::DigestPolicy::kWeakAllowSha1) {}
- void CheckPathAfterVerification(const CertPathBuilder& path_builder,
- CertPathBuilderResultPath* path) override {
- ADD_FAILURE() << "Tests must override this";
- }
-};
-
-class MockPathBuilderDelegate : public CertPathBuilderDelegateBase {
- public:
- MOCK_METHOD2(CheckPathAfterVerification,
- void(const CertPathBuilder& path_builder,
- CertPathBuilderResultPath* path));
-};
-
TEST_F(PathBuilderCheckPathAfterVerificationTest, NoOpToValidPath) {
StrictMock<MockPathBuilderDelegate> delegate;
// Just verify that the hook is called.
@@ -1907,8 +2044,8 @@ DEFINE_CERT_ERROR_ID(kWarningFromDelegate, "Warning from delegate");
class AddWarningPathBuilderDelegate : public CertPathBuilderDelegateBase {
public:
- void CheckPathAfterVerification(const CertPathBuilder& path_builder,
- CertPathBuilderResultPath* path) override {
+ void CheckPathAfterVerification(const CertPathBuilder &path_builder,
+ CertPathBuilderResultPath *path) override {
path->errors.GetErrorsForCert(1)->AddWarning(kWarningFromDelegate, nullptr);
}
};
@@ -1919,18 +2056,19 @@ TEST_F(PathBuilderCheckPathAfterVerificationTest, AddsWarningToValidPath) {
ASSERT_TRUE(result.HasValidPath());
// A warning should have been added to certificate at index 1 in the path.
- const CertErrors* cert1_errors =
+ const CertErrors *cert1_errors =
result.GetBestValidPath()->errors.GetErrorsForCert(1);
ASSERT_TRUE(cert1_errors);
- EXPECT_TRUE(cert1_errors->ContainsError(kWarningFromDelegate));
+ EXPECT_TRUE(cert1_errors->ContainsErrorWithSeverity(
+ kWarningFromDelegate, CertError::SEVERITY_WARNING));
}
DEFINE_CERT_ERROR_ID(kErrorFromDelegate, "Error from delegate");
class AddErrorPathBuilderDelegate : public CertPathBuilderDelegateBase {
public:
- void CheckPathAfterVerification(const CertPathBuilder& path_builder,
- CertPathBuilderResultPath* path) override {
+ void CheckPathAfterVerification(const CertPathBuilder &path_builder,
+ CertPathBuilderResultPath *path) override {
path->errors.GetErrorsForCert(2)->AddError(kErrorFromDelegate, nullptr);
}
};
@@ -1943,12 +2081,12 @@ TEST_F(PathBuilderCheckPathAfterVerificationTest, AddsErrorToValidPath) {
ASSERT_FALSE(result.HasValidPath());
ASSERT_LT(result.best_result_index, result.paths.size());
- const CertPathBuilderResultPath* failed_path =
+ const CertPathBuilderResultPath *failed_path =
result.paths[result.best_result_index].get();
ASSERT_TRUE(failed_path);
// An error should have been added to certificate at index 2 in the path.
- const CertErrors* cert2_errors = failed_path->errors.GetErrorsForCert(2);
+ const CertErrors *cert2_errors = failed_path->errors.GetErrorsForCert(2);
ASSERT_TRUE(cert2_errors);
EXPECT_TRUE(cert2_errors->ContainsError(kErrorFromDelegate));
}
@@ -1969,8 +2107,8 @@ struct DelegateData : public CertPathBuilderDelegateData {
class SetsDelegateDataPathBuilderDelegate : public CertPathBuilderDelegateBase {
public:
- void CheckPathAfterVerification(const CertPathBuilder& path_builder,
- CertPathBuilderResultPath* path) override {
+ void CheckPathAfterVerification(const CertPathBuilder &path_builder,
+ CertPathBuilderResultPath *path) override {
path->delegate_data = std::make_unique<DelegateData>();
}
};
@@ -1980,7 +2118,7 @@ TEST_F(PathBuilderCheckPathAfterVerificationTest, SetsDelegateData) {
CertPathBuilder::Result result = RunPathBuilder(nullptr, &delegate);
ASSERT_TRUE(result.HasValidPath());
- DelegateData* data = reinterpret_cast<DelegateData*>(
+ DelegateData *data = reinterpret_cast<DelegateData *>(
result.GetBestValidPath()->delegate_data.get());
EXPECT_EQ(0xB33F, data->value);
@@ -2261,7 +2399,7 @@ TEST(PathBuilderPrioritizationTest, TrustAndKeyIdPrioritization) {
target, &trust_store, &delegate, verify_time, KeyPurpose::ANY_EKU,
InitialExplicitPolicy::kFalse, {der::Input(kAnyPolicyOid)},
InitialPolicyMappingInhibit::kFalse, InitialAnyPolicyInhibit::kFalse);
- path_builder.SetExploreAllPaths(true);
+ path_builder.SetValidPathLimit(0);
CertPathBuilder::Result result = path_builder.Run();
EXPECT_TRUE(result.HasValidPath());
@@ -2437,7 +2575,7 @@ TEST(PathBuilderPrioritizationTest, SelfIssuedPrioritization) {
target, &trust_store, &delegate, verify_time, KeyPurpose::ANY_EKU,
InitialExplicitPolicy::kFalse, {der::Input(kAnyPolicyOid)},
InitialPolicyMappingInhibit::kFalse, InitialAnyPolicyInhibit::kFalse);
- path_builder.SetExploreAllPaths(true);
+ path_builder.SetValidPathLimit(0);
CertPathBuilder::Result result = path_builder.Run();
EXPECT_TRUE(result.HasValidPath());
@@ -2460,4 +2598,4 @@ TEST(PathBuilderPrioritizationTest, SelfIssuedPrioritization) {
} // namespace
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/path_builder_verify_certificate_chain_unittest.cc b/src/pki/path_builder_verify_certificate_chain_unittest.cc
index b2cac64..a5aeef7 100644
--- a/src/pki/path_builder_verify_certificate_chain_unittest.cc
+++ b/src/pki/path_builder_verify_certificate_chain_unittest.cc
@@ -15,8 +15,8 @@ namespace {
class PathBuilderTestDelegate {
public:
- static void Verify(const VerifyCertChainTest& test,
- const std::string& test_file_path) {
+ static void Verify(const VerifyCertChainTest &test,
+ const std::string &test_file_path) {
SimplePathBuilderDelegate path_builder_delegate(1024, test.digest_policy);
ASSERT_FALSE(test.chain.empty());
@@ -24,8 +24,9 @@ class PathBuilderTestDelegate {
trust_store.AddCertificate(test.chain.back(), test.last_cert_trust);
CertIssuerSourceStatic intermediate_cert_issuer_source;
- for (size_t i = 1; i < test.chain.size(); ++i)
+ for (size_t i = 1; i < test.chain.size(); ++i) {
intermediate_cert_issuer_source.AddCert(test.chain[i]);
+ }
// First cert in the |chain| is the target.
CertPathBuilder path_builder(
@@ -52,4 +53,4 @@ INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder,
VerifyCertificateChainSingleRootTest,
PathBuilderTestDelegate);
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/pem.cc b/src/pki/pem.cc
index 1c12448..63d7c45 100644
--- a/src/pki/pem.cc
+++ b/src/pki/pem.cc
@@ -2,14 +2,11 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "string_util.h"
#include "pem.h"
+#include "string_util.h"
-#include "fillins/fillins_base64.h"
#include <string_view>
-#include "fillins/fillins_string_util.h"
-
namespace {
constexpr std::string_view kPEMHeaderBeginBlock = "-----BEGIN ";
@@ -29,8 +26,7 @@ struct PEMTokenizer::PEMType {
};
PEMTokenizer::PEMTokenizer(
- std::string_view str,
- const std::vector<std::string>& allowed_block_types) {
+ std::string_view str, const std::vector<std::string> &allowed_block_types) {
Init(str, allowed_block_types);
}
@@ -40,14 +36,16 @@ bool PEMTokenizer::GetNext() {
while (pos_ != std::string_view::npos) {
// Scan for the beginning of the next PEM encoded block.
pos_ = str_.find(kPEMHeaderBeginBlock, pos_);
- if (pos_ == std::string_view::npos)
+ if (pos_ == std::string_view::npos) {
return false; // No more PEM blocks
+ }
std::vector<PEMType>::const_iterator it;
// Check to see if it is of an acceptable block type.
for (it = block_types_.begin(); it != block_types_.end(); ++it) {
- if (!bssl::string_util::StartsWith(str_.substr(pos_), it->header))
+ if (!bssl::string_util::StartsWith(str_.substr(pos_), it->header)) {
continue;
+ }
// Look for a footer matching the header. If none is found, then all
// data following this point is invalid and should not be parsed.
@@ -62,9 +60,10 @@ bool PEMTokenizer::GetNext() {
pos_ = footer_pos + it->footer.size();
block_type_ = it->type;
- std::string_view encoded = str_.substr(data_begin, footer_pos - data_begin);
- if (!fillins::Base64Decode(fillins::CollapseWhitespaceASCII(encoded, true),
- &data_)) {
+ std::string_view encoded =
+ str_.substr(data_begin, footer_pos - data_begin);
+ if (!string_util::Base64Decode(
+ string_util::CollapseWhitespaceASCII(encoded, true), &data_)) {
// The most likely cause for a decode failure is a datatype that
// includes PEM headers, which are not supported.
break;
@@ -77,21 +76,22 @@ bool PEMTokenizer::GetNext() {
// continue the search. Otherwise, |pos_| has been updated to the most
// appropriate search position to continue searching from and should not
// be adjusted.
- if (it == block_types_.end())
+ if (it == block_types_.end()) {
pos_ += kPEMHeaderBeginBlock.size();
+ }
}
return false;
}
void PEMTokenizer::Init(std::string_view str,
- const std::vector<std::string>& allowed_block_types) {
+ const std::vector<std::string> &allowed_block_types) {
str_ = str;
pos_ = 0;
// Construct PEM header/footer strings for all the accepted types, to
// reduce parsing later.
- for (const auto& allowed_block_type : allowed_block_types) {
+ for (const auto &allowed_block_type : allowed_block_types) {
PEMType allowed_type;
allowed_type.type = allowed_block_type;
allowed_type.header = kPEMHeaderBeginBlock;
@@ -104,9 +104,9 @@ void PEMTokenizer::Init(std::string_view str,
}
}
-std::string PEMEncode(std::string_view data, const std::string& type) {
+std::string PEMEncode(std::string_view data, const std::string &type) {
std::string b64_encoded;
- fillins::Base64Encode(data, &b64_encoded);
+ string_util::Base64Encode(data, &b64_encoded);
// Divide the Base-64 encoded data into 64-character chunks, as per
// 4.3.2.4 of RFC 1421.
@@ -140,4 +140,4 @@ std::string PEMEncode(std::string_view data, const std::string& type) {
return pem_encoded;
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/pem.h b/src/pki/pem.h
index 6bd1e41..1fd28fb 100644
--- a/src/pki/pem.h
+++ b/src/pki/pem.h
@@ -5,15 +5,13 @@
#ifndef BSSL_PKI_PEM_H_
#define BSSL_PKI_PEM_H_
-#include "fillins/openssl_util.h"
#include <stddef.h>
#include <string>
-#include <vector>
-
#include <string_view>
+#include <vector>
-
+#include <openssl/base.h>
namespace bssl {
@@ -27,10 +25,10 @@ class OPENSSL_EXPORT PEMTokenizer {
// instances of PEM encoded blocks that are of the |allowed_block_types|.
// |str| must remain valid for the duration of the PEMTokenizer.
PEMTokenizer(std::string_view str,
- const std::vector<std::string>& allowed_block_types);
+ const std::vector<std::string> &allowed_block_types);
- PEMTokenizer(const PEMTokenizer&) = delete;
- PEMTokenizer& operator=(const PEMTokenizer&) = delete;
+ PEMTokenizer(const PEMTokenizer &) = delete;
+ PEMTokenizer &operator=(const PEMTokenizer &) = delete;
~PEMTokenizer();
@@ -42,16 +40,16 @@ class OPENSSL_EXPORT PEMTokenizer {
// Returns the PEM block type (eg: CERTIFICATE) of the last successfully
// decoded PEM block.
// GetNext() must have returned true before calling this method.
- const std::string& block_type() const { return block_type_; }
+ const std::string &block_type() const { return block_type_; }
// Returns the raw, Base64-decoded data of the last successfully decoded
// PEM block.
// GetNext() must have returned true before calling this method.
- const std::string& data() const { return data_; }
+ const std::string &data() const { return data_; }
private:
void Init(std::string_view str,
- const std::vector<std::string>& allowed_block_types);
+ const std::vector<std::string> &allowed_block_types);
// A simple cache of the allowed PEM header and footer for a given PEM
// block type, so that it is only computed once.
@@ -81,8 +79,8 @@ class OPENSSL_EXPORT PEMTokenizer {
// Encodes |data| in the encapsulated message format described in RFC 1421,
// with |type| as the PEM block type (eg: CERTIFICATE).
OPENSSL_EXPORT std::string PEMEncode(std::string_view data,
- const std::string& type);
+ const std::string &type);
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_PEM_H_
diff --git a/src/pki/pem_unittest.cc b/src/pki/pem_unittest.cc
index 12e05ec..a7f9eda 100644
--- a/src/pki/pem_unittest.cc
+++ b/src/pki/pem_unittest.cc
@@ -202,4 +202,4 @@ TEST(PEMEncodeTest, Wrapping) {
"WRAPPED LINE"));
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/revocation_util.cc b/src/pki/revocation_util.cc
index 801a545..80779d7 100644
--- a/src/pki/revocation_util.cc
+++ b/src/pki/revocation_util.cc
@@ -16,8 +16,8 @@ constexpr int64_t kMaxValidTime = 253402300799; // 9999-12-31 23:59:59 UTC
} // namespace
-bool CheckRevocationDateValid(const der::GeneralizedTime& this_update,
- const der::GeneralizedTime* next_update,
+bool CheckRevocationDateValid(const der::GeneralizedTime &this_update,
+ const der::GeneralizedTime *next_update,
int64_t verify_time_epoch_seconds,
std::optional<int64_t> max_age_seconds) {
if (verify_time_epoch_seconds > kMaxValidTime ||
@@ -56,4 +56,4 @@ bool CheckRevocationDateValid(const der::GeneralizedTime& this_update,
return true;
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/revocation_util.h b/src/pki/revocation_util.h
index 33c12ef..5b20f4c 100644
--- a/src/pki/revocation_util.h
+++ b/src/pki/revocation_util.h
@@ -5,11 +5,10 @@
#ifndef BSSL_PKI_REVOCATION_UTIL_H_
#define BSSL_PKI_REVOCATION_UTIL_H_
-#include "fillins/openssl_util.h"
-
+#include <cstdint>
#include <optional>
-#include <cstdint>
+#include <openssl/base.h>
namespace bssl {
@@ -23,11 +22,10 @@ struct GeneralizedTime;
// differently, returns true if |this_update <= verify_time < next_update|, and
// |this_update >= verify_time - max_age|.
[[nodiscard]] OPENSSL_EXPORT bool CheckRevocationDateValid(
- const der::GeneralizedTime& this_update,
- const der::GeneralizedTime* next_update,
- int64_t verify_time_epoch_seconds,
+ const der::GeneralizedTime &this_update,
+ const der::GeneralizedTime *next_update, int64_t verify_time_epoch_seconds,
std::optional<int64_t> max_age_seconds);
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_REVOCATION_UTIL_H_
diff --git a/src/pki/signature_algorithm.cc b/src/pki/signature_algorithm.cc
index e66ef12..73d8bc1 100644
--- a/src/pki/signature_algorithm.cc
+++ b/src/pki/signature_algorithm.cc
@@ -4,11 +4,12 @@
#include "signature_algorithm.h"
+#include <openssl/bytestring.h>
+#include <openssl/digest.h>
+
#include "input.h"
#include "parse_values.h"
#include "parser.h"
-#include <openssl/bytestring.h>
-#include <openssl/digest.h>
namespace bssl {
@@ -122,28 +123,25 @@ const uint8_t kOidRsaSsaPss[] = {0x2a, 0x86, 0x48, 0x86, 0xf7,
const uint8_t kOidMgf1[] = {0x2a, 0x86, 0x48, 0x86, 0xf7,
0x0d, 0x01, 0x01, 0x08};
-// Returns true if |input| is empty.
-[[nodiscard]] bool IsEmpty(const der::Input& input) {
- return input.Length() == 0;
-}
-
// Returns true if the entirety of the input is a NULL value.
-[[nodiscard]] bool IsNull(const der::Input& input) {
+[[nodiscard]] bool IsNull(der::Input input) {
der::Parser parser(input);
der::Input null_value;
- if (!parser.ReadTag(der::kNull, &null_value))
+ if (!parser.ReadTag(CBS_ASN1_NULL, &null_value)) {
return false;
+ }
// NULL values are TLV encoded; the value is expected to be empty.
- if (!IsEmpty(null_value))
+ if (!null_value.empty()) {
return false;
+ }
// By definition of this function, the entire input must be a NULL.
return !parser.HasMore();
}
-[[nodiscard]] bool IsNullOrEmpty(const der::Input& input) {
- return IsNull(input) || IsEmpty(input);
+[[nodiscard]] bool IsNullOrEmpty(der::Input input) {
+ return IsNull(input) || input.empty();
}
// Parses a MaskGenAlgorithm as defined by RFC 5912:
@@ -172,15 +170,17 @@ const uint8_t kOidMgf1[] = {0x2a, 0x86, 0x48, 0x86, 0xf7,
// the only function supported is MGF1, as that is the singular mask gen
// function defined by RFC 4055 / RFC 5912.
[[nodiscard]] bool ParseMaskGenAlgorithm(const der::Input input,
- DigestAlgorithm* mgf1_hash) {
+ DigestAlgorithm *mgf1_hash) {
der::Input oid;
der::Input params;
- if (!ParseAlgorithmIdentifier(input, &oid, &params))
+ if (!ParseAlgorithmIdentifier(input, &oid, &params)) {
return false;
+ }
// MGF1 is the only supported mask generation algorithm.
- if (oid != der::Input(kOidMgf1))
+ if (oid != der::Input(kOidMgf1)) {
return false;
+ }
return ParseHashAlgorithm(params, mgf1_hash);
}
@@ -211,7 +211,7 @@ const uint8_t kOidMgf1[] = {0x2a, 0x86, 0x48, 0x86, 0xf7,
// Note also that DER encoding (ITU-T X.690 section 11.5) prohibits
// specifying default values explicitly. The parameter should instead be
// omitted to indicate a default value.
-std::optional<SignatureAlgorithm> ParseRsaPss(const der::Input& params) {
+std::optional<SignatureAlgorithm> ParseRsaPss(der::Input params) {
der::Parser parser(params);
der::Parser params_parser;
if (!parser.ReadSequence(&params_parser)) {
@@ -238,12 +238,15 @@ std::optional<SignatureAlgorithm> ParseRsaPss(const der::Input& params) {
DigestAlgorithm hash, mgf1_hash;
der::Parser salt_length_parser;
uint64_t salt_length;
- if (!params_parser.ReadTag(der::ContextSpecificConstructed(0), &field) ||
+ if (!params_parser.ReadTag(
+ CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 0, &field) ||
!ParseHashAlgorithm(field, &hash) ||
- !params_parser.ReadTag(der::ContextSpecificConstructed(1), &field) ||
+ !params_parser.ReadTag(
+ CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 1, &field) ||
!ParseMaskGenAlgorithm(field, &mgf1_hash) ||
- !params_parser.ReadConstructed(der::ContextSpecificConstructed(2),
- &salt_length_parser) ||
+ !params_parser.ReadConstructed(
+ CBS_ASN1_CONTEXT_SPECIFIC | CBS_ASN1_CONSTRUCTED | 2,
+ &salt_length_parser) ||
!salt_length_parser.ReadUint64(&salt_length) ||
salt_length_parser.HasMore() || params_parser.HasMore()) {
return std::nullopt;
@@ -269,23 +272,26 @@ std::optional<SignatureAlgorithm> ParseRsaPss(const der::Input& params) {
} // namespace
-[[nodiscard]] bool ParseAlgorithmIdentifier(const der::Input& input,
- der::Input* algorithm,
- der::Input* parameters) {
+[[nodiscard]] bool ParseAlgorithmIdentifier(der::Input input,
+ der::Input *algorithm,
+ der::Input *parameters) {
der::Parser parser(input);
der::Parser algorithm_identifier_parser;
- if (!parser.ReadSequence(&algorithm_identifier_parser))
+ if (!parser.ReadSequence(&algorithm_identifier_parser)) {
return false;
+ }
// There shouldn't be anything after the sequence. This is by definition,
// as the input to this function is expected to be a single
// AlgorithmIdentifier.
- if (parser.HasMore())
+ if (parser.HasMore()) {
return false;
+ }
- if (!algorithm_identifier_parser.ReadTag(der::kOid, algorithm))
+ if (!algorithm_identifier_parser.ReadTag(CBS_ASN1_OBJECT, algorithm)) {
return false;
+ }
// Read the optional parameters to a der::Input. The parameters can be at
// most one TLV (for instance NULL or a sequence).
@@ -301,11 +307,10 @@ std::optional<SignatureAlgorithm> ParseRsaPss(const der::Input& params) {
return !algorithm_identifier_parser.HasMore();
}
-[[nodiscard]] bool ParseHashAlgorithm(const der::Input& input,
- DigestAlgorithm* out) {
+[[nodiscard]] bool ParseHashAlgorithm(der::Input input, DigestAlgorithm *out) {
CBS cbs;
- CBS_init(&cbs, input.UnsafeData(), input.Length());
- const EVP_MD* md = EVP_parse_digest_algorithm(&cbs);
+ CBS_init(&cbs, input.data(), input.size());
+ const EVP_MD *md = EVP_parse_digest_algorithm(&cbs);
if (md == EVP_sha1()) {
*out = DigestAlgorithm::Sha1;
@@ -325,7 +330,7 @@ std::optional<SignatureAlgorithm> ParseRsaPss(const der::Input& params) {
}
std::optional<SignatureAlgorithm> ParseSignatureAlgorithm(
- const der::Input& algorithm_identifier) {
+ der::Input algorithm_identifier) {
der::Input oid;
der::Input params;
if (!ParseAlgorithmIdentifier(algorithm_identifier, &oid, &params)) {
@@ -358,16 +363,16 @@ std::optional<SignatureAlgorithm> ParseSignatureAlgorithm(
// RFC 5912 requires that the parameters for ECDSA algorithms be absent
// ("PARAMS TYPE NULL ARE absent"):
- if (oid == der::Input(kOidEcdsaWithSha1) && IsEmpty(params)) {
+ if (oid == der::Input(kOidEcdsaWithSha1) && params.empty()) {
return SignatureAlgorithm::kEcdsaSha1;
}
- if (oid == der::Input(kOidEcdsaWithSha256) && IsEmpty(params)) {
+ if (oid == der::Input(kOidEcdsaWithSha256) && params.empty()) {
return SignatureAlgorithm::kEcdsaSha256;
}
- if (oid == der::Input(kOidEcdsaWithSha384) && IsEmpty(params)) {
+ if (oid == der::Input(kOidEcdsaWithSha384) && params.empty()) {
return SignatureAlgorithm::kEcdsaSha384;
}
- if (oid == der::Input(kOidEcdsaWithSha512) && IsEmpty(params)) {
+ if (oid == der::Input(kOidEcdsaWithSha512) && params.empty()) {
return SignatureAlgorithm::kEcdsaSha512;
}
@@ -417,4 +422,4 @@ std::optional<DigestAlgorithm> GetTlsServerEndpointDigestAlgorithm(
return std::nullopt;
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/signature_algorithm.h b/src/pki/signature_algorithm.h
index bf7207f..2d65be2 100644
--- a/src/pki/signature_algorithm.h
+++ b/src/pki/signature_algorithm.h
@@ -5,11 +5,11 @@
#ifndef BSSL_PKI_SIGNATURE_ALGORITHM_H_
#define BSSL_PKI_SIGNATURE_ALGORITHM_H_
-#include "fillins/openssl_util.h"
#include <stdint.h>
-
#include <optional>
+
+#include <openssl/base.h>
#include <openssl/evp.h>
namespace bssl {
@@ -53,9 +53,8 @@ enum class SignatureAlgorithm {
// AlgorithmIdentifier ::= SEQUENCE {
// algorithm OBJECT IDENTIFIER,
// parameters ANY DEFINED BY algorithm OPTIONAL }
-[[nodiscard]] OPENSSL_EXPORT bool ParseAlgorithmIdentifier(const der::Input& input,
- der::Input* algorithm,
- der::Input* parameters);
+[[nodiscard]] OPENSSL_EXPORT bool ParseAlgorithmIdentifier(
+ der::Input input, der::Input *algorithm, der::Input *parameters);
// Parses a HashAlgorithm as defined by RFC 5912:
//
@@ -69,20 +68,19 @@ enum class SignatureAlgorithm {
// { IDENTIFIER id-sha384 PARAMS TYPE NULL ARE preferredPresent } |
// { IDENTIFIER id-sha512 PARAMS TYPE NULL ARE preferredPresent }
// }
-[[nodiscard]] bool ParseHashAlgorithm(const der::Input& input,
- DigestAlgorithm* out);
+[[nodiscard]] bool ParseHashAlgorithm(der::Input input, DigestAlgorithm *out);
// Parses an AlgorithmIdentifier into a signature algorithm and returns it, or
// returns `std::nullopt` if `algorithm_identifer` either cannot be parsed or
// is not a recognized signature algorithm.
OPENSSL_EXPORT std::optional<SignatureAlgorithm> ParseSignatureAlgorithm(
- const der::Input& algorithm_identifier);
+ der::Input algorithm_identifier);
// Returns the hash to be used with the tls-server-end-point channel binding
// (RFC 5929) or `std::nullopt`, if not supported for this signature algorithm.
-OPENSSL_EXPORT std::optional<DigestAlgorithm> GetTlsServerEndpointDigestAlgorithm(
- SignatureAlgorithm alg);
+OPENSSL_EXPORT std::optional<DigestAlgorithm>
+GetTlsServerEndpointDigestAlgorithm(SignatureAlgorithm alg);
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_SIGNATURE_ALGORITHM_H_
diff --git a/src/pki/signature_algorithm_unittest.cc b/src/pki/signature_algorithm_unittest.cc
index 9673ab2..dc0bfa6 100644
--- a/src/pki/signature_algorithm_unittest.cc
+++ b/src/pki/signature_algorithm_unittest.cc
@@ -6,10 +6,9 @@
#include <memory>
-#include "fillins/file_util.h"
+#include <gtest/gtest.h>
#include "input.h"
#include "parser.h"
-#include <gtest/gtest.h>
namespace bssl {
@@ -1154,7 +1153,7 @@ TEST(SignatureAlgorithmTest, ParseRsaPss) {
0x08, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03,
0x04, 0x02, 0x03, 0xa2, 0x03, 0x02, 0x01, 0x40},
SignatureAlgorithm::kRsaPssSha512}};
- for (const auto& t : kValidTests) {
+ for (const auto &t : kValidTests) {
EXPECT_EQ(ParseSignatureAlgorithm(der::Input(t.data)), t.expected);
}
@@ -1344,7 +1343,7 @@ TEST(SignatureAlgorithmTest, ParseRsaPss) {
0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03,
0x05, 0x00, 0xa2, 0x03, 0x02, 0x01, 0x41}},
};
- for (const auto& t : kInvalidTests) {
+ for (const auto &t : kInvalidTests) {
EXPECT_FALSE(ParseSignatureAlgorithm(der::Input(t.data)));
}
}
@@ -1449,4 +1448,4 @@ TEST(SignatureAlgorithmTest, ParseDerDsaWithSha256NoParams) {
} // namespace
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/signature_verify_cache.h b/src/pki/signature_verify_cache.h
deleted file mode 100644
index f0d98cf..0000000
--- a/src/pki/signature_verify_cache.h
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2022 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BSSL_PKI_SIGNATURE_VERIFY_CACHE_H_
-#define BSSL_PKI_SIGNATURE_VERIFY_CACHE_H_
-
-#include "fillins/openssl_util.h"
-#include <string>
-
-namespace bssl {
-
-class OPENSSL_EXPORT SignatureVerifyCache {
- public:
- enum class Value {
- kValid, // Cached as a valid signature result.
- kInvalid, // Cached as an invalid signature result.
- kUnknown, // Cache has no information.
- };
-
- virtual ~SignatureVerifyCache() = default;
-
- // This interface uses a const std::string reference instead of
- // std::string_view because any implementation that may reasonably want to use
- // std::unordered_map or similar can run into problems with std::hash before
- // C++20. (https://en.cppreference.com/w/cpp/container/unordered_map/find)
-
- // |Store| is called to store the result of a verification for |key| as kValid
- // or kInvalid after a signature check.
- virtual void Store(const std::string& key, Value value) = 0;
-
- // |Check| is called to fetch a cached value for a verification for |key|. If
- // the result is kValid, or kInvalid, signature checking is skipped and the
- // corresponding cached result is used. If the result is kUnknown signature
- // checking is performed and the corresponding result saved using |Store|.
- virtual Value Check(const std::string& key) = 0;
-};
-
-} // namespace net
-
-#endif // BSSL_PKI_SIGNATURE_VERIFY_CACHE_H_
diff --git a/src/pki/simple_path_builder_delegate.cc b/src/pki/simple_path_builder_delegate.cc
index cc173bf..822019b 100644
--- a/src/pki/simple_path_builder_delegate.cc
+++ b/src/pki/simple_path_builder_delegate.cc
@@ -4,11 +4,6 @@
#include "simple_path_builder_delegate.h"
-#include "cert_error_params.h"
-#include "cert_errors.h"
-#include "signature_algorithm.h"
-#include "signature_verify_cache.h"
-#include "verify_signed_data.h"
#include <openssl/bn.h>
#include <openssl/bytestring.h>
#include <openssl/digest.h>
@@ -16,8 +11,14 @@
#include <openssl/ec_key.h>
#include <openssl/evp.h>
#include <openssl/nid.h>
+#include <openssl/pki/signature_verify_cache.h>
#include <openssl/rsa.h>
+#include "cert_error_params.h"
+#include "cert_errors.h"
+#include "signature_algorithm.h"
+#include "verify_signed_data.h"
+
namespace bssl {
DEFINE_CERT_ERROR_ID(SimplePathBuilderDelegate::kRsaModulusTooSmall,
@@ -42,28 +43,29 @@ bool IsAcceptableCurveForEcdsa(int curve_nid) {
} // namespace
SimplePathBuilderDelegate::SimplePathBuilderDelegate(
- size_t min_rsa_modulus_length_bits,
- DigestPolicy digest_policy)
+ size_t min_rsa_modulus_length_bits, DigestPolicy digest_policy)
: min_rsa_modulus_length_bits_(min_rsa_modulus_length_bits),
digest_policy_(digest_policy) {}
void SimplePathBuilderDelegate::CheckPathAfterVerification(
- const CertPathBuilder& path_builder,
- CertPathBuilderResultPath* path) {
+ const CertPathBuilder &path_builder, CertPathBuilderResultPath *path) {
// Do nothing - consider all candidate paths valid.
}
-bool SimplePathBuilderDelegate::IsDeadlineExpired() {
- return false;
-}
+bool SimplePathBuilderDelegate::IsDeadlineExpired() { return false; }
+
+bool SimplePathBuilderDelegate::IsDebugLogEnabled() { return false; }
-SignatureVerifyCache* SimplePathBuilderDelegate::GetVerifyCache() {
+bool SimplePathBuilderDelegate::AcceptPreCertificates() { return false; }
+
+void SimplePathBuilderDelegate::DebugLog(std::string_view msg) {}
+
+SignatureVerifyCache *SimplePathBuilderDelegate::GetVerifyCache() {
return nullptr;
}
bool SimplePathBuilderDelegate::IsSignatureAlgorithmAcceptable(
- SignatureAlgorithm algorithm,
- CertErrors* errors) {
+ SignatureAlgorithm algorithm, CertErrors *errors) {
switch (algorithm) {
case SignatureAlgorithm::kRsaPkcs1Sha1:
case SignatureAlgorithm::kEcdsaSha1:
@@ -83,14 +85,15 @@ bool SimplePathBuilderDelegate::IsSignatureAlgorithmAcceptable(
return false;
}
-bool SimplePathBuilderDelegate::IsPublicKeyAcceptable(EVP_PKEY* public_key,
- CertErrors* errors) {
+bool SimplePathBuilderDelegate::IsPublicKeyAcceptable(EVP_PKEY *public_key,
+ CertErrors *errors) {
int pkey_id = EVP_PKEY_id(public_key);
if (pkey_id == EVP_PKEY_RSA) {
// Extract the modulus length from the key.
- RSA* rsa = EVP_PKEY_get0_RSA(public_key);
- if (!rsa)
+ RSA *rsa = EVP_PKEY_get0_RSA(public_key);
+ if (!rsa) {
return false;
+ }
unsigned int modulus_length_bits = RSA_bits(rsa);
if (modulus_length_bits < min_rsa_modulus_length_bits_) {
@@ -106,9 +109,10 @@ bool SimplePathBuilderDelegate::IsPublicKeyAcceptable(EVP_PKEY* public_key,
if (pkey_id == EVP_PKEY_EC) {
// Extract the curve name.
- EC_KEY* ec = EVP_PKEY_get0_EC_KEY(public_key);
- if (!ec)
+ EC_KEY *ec = EVP_PKEY_get0_EC_KEY(public_key);
+ if (!ec) {
return false; // Unexpected.
+ }
int curve_nid = EC_GROUP_get_curve_name(EC_KEY_get0_group(ec));
if (!IsAcceptableCurveForEcdsa(curve_nid)) {
@@ -123,4 +127,4 @@ bool SimplePathBuilderDelegate::IsPublicKeyAcceptable(EVP_PKEY* public_key,
return false;
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/simple_path_builder_delegate.h b/src/pki/simple_path_builder_delegate.h
index ac22d45..6d95b0d 100644
--- a/src/pki/simple_path_builder_delegate.h
+++ b/src/pki/simple_path_builder_delegate.h
@@ -5,13 +5,13 @@
#ifndef BSSL_PKI_SIMPLE_PATH_BUILDER_DELEGATE_H_
#define BSSL_PKI_SIMPLE_PATH_BUILDER_DELEGATE_H_
-#include "fillins/openssl_util.h"
#include <stddef.h>
+#include <openssl/base.h>
+#include <openssl/pki/signature_verify_cache.h>
#include "path_builder.h"
#include "signature_algorithm.h"
-#include "signature_verify_cache.h"
namespace bssl {
@@ -26,7 +26,8 @@ class CertErrors;
// * If the |digest_policy| was set to kAllowSha1, then SHA1 is
// additionally accepted.
// * EC named curve can be P-256, P-384, P-521.
-class OPENSSL_EXPORT SimplePathBuilderDelegate : public CertPathBuilderDelegate {
+class OPENSSL_EXPORT SimplePathBuilderDelegate
+ : public CertPathBuilderDelegate {
public:
enum class DigestPolicy {
// Accepts digests of SHA256, SHA348 or SHA512
@@ -48,26 +49,35 @@ class OPENSSL_EXPORT SimplePathBuilderDelegate : public CertPathBuilderDelegate
// Accepts RSA PKCS#1, RSASSA-PSS or ECDA using any of the SHA* digests
// (including SHA1).
bool IsSignatureAlgorithmAcceptable(SignatureAlgorithm signature_algorithm,
- CertErrors* errors) override;
+ CertErrors *errors) override;
// Requires RSA keys be >= |min_rsa_modulus_length_bits_|.
- bool IsPublicKeyAcceptable(EVP_PKEY* public_key, CertErrors* errors) override;
+ bool IsPublicKeyAcceptable(EVP_PKEY *public_key, CertErrors *errors) override;
// No-op implementation.
- void CheckPathAfterVerification(const CertPathBuilder& path_builder,
- CertPathBuilderResultPath* path) override;
+ void CheckPathAfterVerification(const CertPathBuilder &path_builder,
+ CertPathBuilderResultPath *path) override;
// No-op implementation.
bool IsDeadlineExpired() override;
// No-op implementation.
- SignatureVerifyCache* GetVerifyCache() override;
+ SignatureVerifyCache *GetVerifyCache() override;
+
+ // No-op implementation.
+ bool IsDebugLogEnabled() override;
+
+ // No-op implementation.
+ void DebugLog(std::string_view msg) override;
+
+ // No-op implementation.
+ bool AcceptPreCertificates() override;
private:
const size_t min_rsa_modulus_length_bits_;
const DigestPolicy digest_policy_;
};
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_SIMPLE_PATH_BUILDER_DELEGATE_H_
diff --git a/src/pki/simple_path_builder_delegate_unittest.cc b/src/pki/simple_path_builder_delegate_unittest.cc
index 7b6206c..f0131fa 100644
--- a/src/pki/simple_path_builder_delegate_unittest.cc
+++ b/src/pki/simple_path_builder_delegate_unittest.cc
@@ -6,24 +6,24 @@
#include <memory>
#include <set>
+#include <gtest/gtest.h>
+#include <openssl/nid.h>
#include "cert_errors.h"
-#include "signature_algorithm.h"
-#include "test_helpers.h"
-#include "verify_signed_data.h"
#include "input.h"
#include "parse_values.h"
#include "parser.h"
-#include <gtest/gtest.h>
-#include <openssl/nid.h>
+#include "signature_algorithm.h"
+#include "test_helpers.h"
+#include "verify_signed_data.h"
namespace bssl {
namespace {
// Reads the public key and algorithm from the test data at |file_name|.
-void ReadTestCase(const char* file_name,
- SignatureAlgorithm* signature_algorithm,
- bssl::UniquePtr<EVP_PKEY>* public_key) {
+void ReadTestCase(const char *file_name,
+ SignatureAlgorithm *signature_algorithm,
+ bssl::UniquePtr<EVP_PKEY> *public_key) {
std::string path =
std::string("testdata/verify_signed_data_unittest/") + file_name;
@@ -46,17 +46,16 @@ void ReadTestCase(const char* file_name,
}
class SimplePathBuilderDelegate1024SuccessTest
- : public ::testing::TestWithParam<const char*> {};
+ : public ::testing::TestWithParam<const char *> {};
-const char* kSuccess1024Filenames[] = {
+const char *kSuccess1024Filenames[] = {
"rsa-pkcs1-sha1.pem", "rsa-pkcs1-sha256.pem",
"rsa2048-pkcs1-sha512.pem", "ecdsa-secp384r1-sha256.pem",
"ecdsa-prime256v1-sha512.pem", "rsa-pss-sha256.pem",
"ecdsa-secp384r1-sha256.pem", "ecdsa-prime256v1-sha512.pem",
};
-INSTANTIATE_TEST_SUITE_P(All,
- SimplePathBuilderDelegate1024SuccessTest,
+INSTANTIATE_TEST_SUITE_P(All, SimplePathBuilderDelegate1024SuccessTest,
::testing::ValuesIn(kSuccess1024Filenames));
TEST_P(SimplePathBuilderDelegate1024SuccessTest, IsAcceptableSignatureAndKey) {
@@ -77,13 +76,12 @@ TEST_P(SimplePathBuilderDelegate1024SuccessTest, IsAcceptableSignatureAndKey) {
}
class SimplePathBuilderDelegate2048FailTest
- : public ::testing::TestWithParam<const char*> {};
+ : public ::testing::TestWithParam<const char *> {};
-const char* kFail2048Filenames[] = {"rsa-pkcs1-sha1.pem",
+const char *kFail2048Filenames[] = {"rsa-pkcs1-sha1.pem",
"rsa-pkcs1-sha256.pem"};
-INSTANTIATE_TEST_SUITE_P(All,
- SimplePathBuilderDelegate2048FailTest,
+INSTANTIATE_TEST_SUITE_P(All, SimplePathBuilderDelegate2048FailTest,
::testing::ValuesIn(kFail2048Filenames));
TEST_P(SimplePathBuilderDelegate2048FailTest, RsaKeySmallerThan2048) {
@@ -105,4 +103,4 @@ TEST_P(SimplePathBuilderDelegate2048FailTest, RsaKeySmallerThan2048) {
} // namespace
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/string_util.cc b/src/pki/string_util.cc
index 5e97eb5..423cd76 100644
--- a/src/pki/string_util.cc
+++ b/src/pki/string_util.cc
@@ -9,6 +9,7 @@
#include <sstream>
#include <string>
+#include <openssl/base64.h>
#include <openssl/mem.h>
namespace bssl::string_util {
@@ -39,8 +40,7 @@ bool StartsWithNoCase(std::string_view str, std::string_view prefix) {
IsEqualNoCase(prefix, str.substr(0, prefix.size()));
}
-std::string FindAndReplace(std::string_view str,
- std::string_view find,
+std::string FindAndReplace(std::string_view str, std::string_view find,
std::string_view replace) {
std::string ret;
@@ -71,11 +71,11 @@ bool StartsWith(std::string_view str, std::string_view prefix) {
return prefix.size() <= str.size() && prefix == str.substr(0, prefix.size());
}
-std::string HexEncode(const uint8_t* data, size_t length) {
+std::string HexEncode(Span<const uint8_t> data) {
std::ostringstream out;
- for (size_t i = 0; i < length; i++) {
+ for (uint8_t b : data) {
out << std::hex << std::setfill('0') << std::setw(2) << std::uppercase
- << int{data[i]};
+ << int{b};
}
return out.str();
}
@@ -114,4 +114,80 @@ std::vector<std::string_view> SplitString(std::string_view str,
return out;
}
+static bool IsUnicodeWhitespace(char c) {
+ return c == 9 || c == 10 || c == 11 || c == 12 || c == 13 || c == ' ';
+}
+
+std::string CollapseWhitespaceASCII(std::string_view text,
+ bool trim_sequences_with_line_breaks) {
+ std::string result;
+ result.resize(text.size());
+
+ // Set flags to pretend we're already in a trimmed whitespace sequence, so we
+ // will trim any leading whitespace.
+ bool in_whitespace = true;
+ bool already_trimmed = true;
+
+ int chars_written = 0;
+ for (auto i = text.begin(); i != text.end(); ++i) {
+ if (IsUnicodeWhitespace(*i)) {
+ if (!in_whitespace) {
+ // Reduce all whitespace sequences to a single space.
+ in_whitespace = true;
+ result[chars_written++] = L' ';
+ }
+ if (trim_sequences_with_line_breaks && !already_trimmed &&
+ ((*i == '\n') || (*i == '\r'))) {
+ // Whitespace sequences containing CR or LF are eliminated entirely.
+ already_trimmed = true;
+ --chars_written;
+ }
+ } else {
+ // Non-whitespace chracters are copied straight across.
+ in_whitespace = false;
+ already_trimmed = false;
+ result[chars_written++] = *i;
+ }
+ }
+
+ if (in_whitespace && !already_trimmed) {
+ // Any trailing whitespace is eliminated.
+ --chars_written;
+ }
+
+ result.resize(chars_written);
+ return result;
+}
+
+bool Base64Encode(const std::string_view &input, std::string *output) {
+ size_t len;
+ if (!EVP_EncodedLength(&len, input.size())) {
+ return false;
+ }
+ std::vector<char> encoded(len);
+ len = EVP_EncodeBlock(reinterpret_cast<uint8_t *>(encoded.data()),
+ reinterpret_cast<const uint8_t *>(input.data()),
+ input.size());
+ if (!len) {
+ return false;
+ }
+ output->assign(encoded.data(), len);
+ return true;
+}
+
+bool Base64Decode(const std::string_view &input, std::string *output) {
+ size_t len;
+ if (!EVP_DecodedLength(&len, input.size())) {
+ return false;
+ }
+ std::vector<char> decoded(len);
+ if (!EVP_DecodeBase64(reinterpret_cast<uint8_t *>(decoded.data()), &len, len,
+ reinterpret_cast<const uint8_t *>(input.data()),
+ input.size())) {
+ return false;
+ }
+ output->assign(decoded.data(), len);
+ return true;
+}
+
} // namespace bssl::string_util
diff --git a/src/pki/string_util.h b/src/pki/string_util.h
index 635f9ea..27be485 100644
--- a/src/pki/string_util.h
+++ b/src/pki/string_util.h
@@ -5,15 +5,13 @@
#ifndef BSSL_PKI_STRING_UTIL_H_
#define BSSL_PKI_STRING_UTIL_H_
-#include "fillins/openssl_util.h"
-
-
-#include <stdint.h>
-
#include <cstdint>
#include <string_view>
#include <vector>
+#include <openssl/base.h>
+#include <openssl/span.h>
+
namespace bssl::string_util {
// Returns true if the characters in |str| are all ASCII, false otherwise.
@@ -21,44 +19,55 @@ OPENSSL_EXPORT bool IsAscii(std::string_view str);
// Compares |str1| and |str2| ASCII case insensitively (independent of locale).
// Returns true if |str1| and |str2| match.
-OPENSSL_EXPORT bool IsEqualNoCase(std::string_view str1,
- std::string_view str2);
+OPENSSL_EXPORT bool IsEqualNoCase(std::string_view str1, std::string_view str2);
// Compares |str1| and |prefix| ASCII case insensitively (independent of
// locale). Returns true if |str1| starts with |prefix|.
OPENSSL_EXPORT bool StartsWithNoCase(std::string_view str,
- std::string_view prefix);
+ std::string_view prefix);
// Compares |str1| and |suffix| ASCII case insensitively (independent of
// locale). Returns true if |str1| starts with |suffix|.
OPENSSL_EXPORT bool EndsWithNoCase(std::string_view str,
- std::string_view suffix);
+ std::string_view suffix);
// Finds and replaces all occurrences of |find| of non zero length with
// |replace| in |str|, returning the result.
OPENSSL_EXPORT std::string FindAndReplace(std::string_view str,
- std::string_view find,
- std::string_view replace);
+ std::string_view find,
+ std::string_view replace);
// TODO(bbe) transition below to c++20
// Compares |str1| and |prefix|. Returns true if |str1| starts with |prefix|.
-OPENSSL_EXPORT bool StartsWith(std::string_view str,
- std::string_view prefix);
+OPENSSL_EXPORT bool StartsWith(std::string_view str, std::string_view prefix);
// TODO(bbe) transition below to c++20
// Compares |str1| and |suffix|. Returns true if |str1| ends with |suffix|.
OPENSSL_EXPORT bool EndsWith(std::string_view str, std::string_view suffix);
-// Returns a hexadecimal string encoding |data| of length |length|.
-OPENSSL_EXPORT std::string HexEncode(const uint8_t* data, size_t length);
+// Returns a hexadecimal string encoding |data|.
+OPENSSL_EXPORT std::string HexEncode(Span<const uint8_t> data);
// Returns a decimal string representation of |i|.
OPENSSL_EXPORT std::string NumberToDecimalString(int i);
// Splits |str| on |split_char| returning the list of resulting strings.
-OPENSSL_EXPORT std::vector<std::string_view> SplitString(
- std::string_view str,
- char split_char);
+OPENSSL_EXPORT std::vector<std::string_view> SplitString(std::string_view str,
+ char split_char);
+
+// Collapess whitespace in |text| to a single space and returns the result.
+OPENSSL_EXPORT std::string CollapseWhitespaceASCII(
+ std::string_view text, bool trim_sequences_with_line_breaks);
+
+// Base64 encodes |input| into |output| returning true on success,
+// false otherwise.
+OPENSSL_EXPORT bool Base64Encode(const std::string_view &input,
+ std::string *output);
+
+// Base64 decodes |input| into |output| returning true on success,
+// false otherwise.
+OPENSSL_EXPORT bool Base64Decode(const std::string_view &input,
+ std::string *output);
} // namespace bssl::string_util
diff --git a/src/pki/string_util_unittest.cc b/src/pki/string_util_unittest.cc
index c8da4a5..32e446d 100644
--- a/src/pki/string_util_unittest.cc
+++ b/src/pki/string_util_unittest.cc
@@ -22,11 +22,11 @@ TEST(StringUtilTest, IsEqualNoCase) {
EXPECT_TRUE(
bssl::string_util::IsEqualNoCase("mail.google.com", "maIL.GOoGlE.cOm"));
EXPECT_TRUE(bssl::string_util::IsEqualNoCase("MAil~-.google.cOm",
- "maIL~-.gOoGlE.CoM"));
+ "maIL~-.gOoGlE.CoM"));
EXPECT_TRUE(bssl::string_util::IsEqualNoCase("mail\x80.google.com",
- "maIL\x80.GOoGlE.cOm"));
+ "maIL\x80.GOoGlE.cOm"));
EXPECT_TRUE(bssl::string_util::IsEqualNoCase("mail\xFF.google.com",
- "maIL\xFF.GOoGlE.cOm"));
+ "maIL\xFF.GOoGlE.cOm"));
EXPECT_FALSE(
bssl::string_util::IsEqualNoCase("mail.google.co", "maIL.GOoGlE.cOm"));
EXPECT_FALSE(
@@ -43,11 +43,11 @@ TEST(StringUtilTest, EndsWithNoCase) {
EXPECT_TRUE(
bssl::string_util::EndsWithNoCase("MAil~-.google.cOm", "-.gOoGlE.CoM"));
EXPECT_TRUE(bssl::string_util::EndsWithNoCase("mail\x80.google.com",
- "\x80.GOoGlE.cOm"));
+ "\x80.GOoGlE.cOm"));
EXPECT_FALSE(
bssl::string_util::EndsWithNoCase("mail.google.com", "pOoGlE.com"));
EXPECT_FALSE(bssl::string_util::EndsWithNoCase("mail\x80.google.com",
- "\x81.GOoGlE.cOm"));
+ "\x81.GOoGlE.cOm"));
EXPECT_FALSE(
bssl::string_util::EndsWithNoCase("mail.google.co", ".GOoGlE.cOm"));
EXPECT_FALSE(
@@ -77,8 +77,8 @@ TEST(StringUtilTest, FindAndReplace) {
TEST(StringUtilTest, StartsWithNoCase) {
EXPECT_TRUE(bssl::string_util::StartsWithNoCase("", ""));
EXPECT_TRUE(bssl::string_util::StartsWithNoCase("mail.google.com", ""));
- EXPECT_TRUE(
- bssl::string_util::StartsWithNoCase("mail.google.com", "maIL.GOoGlE.cOm"));
+ EXPECT_TRUE(bssl::string_util::StartsWithNoCase("mail.google.com",
+ "maIL.GOoGlE.cOm"));
EXPECT_TRUE(bssl::string_util::StartsWithNoCase("mail.google.com", "MaIL."));
EXPECT_TRUE(
bssl::string_util::StartsWithNoCase("MAil~-.google.cOm", "maiL~-.Goo"));
@@ -93,16 +93,16 @@ TEST(StringUtilTest, StartsWithNoCase) {
EXPECT_FALSE(
bssl::string_util::StartsWithNoCase("mail.google.com", "MaI.GooGLE"));
EXPECT_FALSE(bssl::string_util::StartsWithNoCase("mail.google.com",
- "mail.google.com1"));
+ "mail.google.com1"));
EXPECT_FALSE(bssl::string_util::StartsWithNoCase("mail.google.com",
- "1mail.google.com"));
+ "1mail.google.com"));
}
TEST(StringUtilTest, HexEncode) {
- std::string hex(bssl::string_util::HexEncode(nullptr, 0));
+ std::string hex(bssl::string_util::HexEncode({}));
EXPECT_EQ(hex.length(), 0U);
uint8_t bytes[] = {0x01, 0xff, 0x02, 0xfe, 0x03, 0x80, 0x81};
- hex = bssl::string_util::HexEncode(bytes, sizeof(bytes));
+ hex = bssl::string_util::HexEncode(bytes);
EXPECT_EQ(hex, "01FF02FE038081");
}
@@ -152,4 +152,4 @@ TEST(StringUtilTest, SplitString) {
} // namespace
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/tag.cc b/src/pki/tag.cc
deleted file mode 100644
index d2192ef..0000000
--- a/src/pki/tag.cc
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2015 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "tag.h"
-
-#include <openssl/base.h>
-
-namespace bssl::der {
-
-Tag ContextSpecificConstructed(uint8_t tag_number) {
- BSSL_CHECK(tag_number == (tag_number & kTagNumberMask));
- return (tag_number & kTagNumberMask) | kTagConstructed | kTagContextSpecific;
-}
-
-Tag ContextSpecificPrimitive(uint8_t base) {
- BSSL_CHECK(base == (base & kTagNumberMask));
- return (base & kTagNumberMask) | kTagPrimitive | kTagContextSpecific;
-}
-
-bool IsConstructed(Tag tag) {
- return (tag & kTagConstructionMask) == kTagConstructed;
-}
-
-} // namespace bssl::der
diff --git a/src/pki/tag.h b/src/pki/tag.h
deleted file mode 100644
index 986a805..0000000
--- a/src/pki/tag.h
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2015 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BSSL_DER_TAG_H_
-#define BSSL_DER_TAG_H_
-
-#include "fillins/openssl_util.h"
-#include <stdint.h>
-
-
-#include <openssl/bytestring.h>
-
-namespace bssl::der {
-
-// This Tag type represents the identifier for an ASN.1 tag as encoded with
-// DER. It matches the BoringSSL CBS and CBB in-memory representation for a
-// tag.
-//
-// Callers must not assume it matches the DER representation for small tag
-// numbers. Instead, constants are provided for universal class types, and
-// functions are provided for building context specific tags. Tags can also be
-// built from the provided constants and bitmasks.
-using Tag = unsigned;
-
-// Universal class primitive types
-const Tag kBool = CBS_ASN1_BOOLEAN;
-const Tag kInteger = CBS_ASN1_INTEGER;
-const Tag kBitString = CBS_ASN1_BITSTRING;
-const Tag kOctetString = CBS_ASN1_OCTETSTRING;
-const Tag kNull = CBS_ASN1_NULL;
-const Tag kOid = CBS_ASN1_OBJECT;
-const Tag kEnumerated = CBS_ASN1_ENUMERATED;
-const Tag kUtf8String = CBS_ASN1_UTF8STRING;
-const Tag kPrintableString = CBS_ASN1_PRINTABLESTRING;
-const Tag kTeletexString = CBS_ASN1_T61STRING;
-const Tag kIA5String = CBS_ASN1_IA5STRING;
-const Tag kUtcTime = CBS_ASN1_UTCTIME;
-const Tag kGeneralizedTime = CBS_ASN1_GENERALIZEDTIME;
-const Tag kVisibleString = CBS_ASN1_VISIBLESTRING;
-const Tag kUniversalString = CBS_ASN1_UNIVERSALSTRING;
-const Tag kBmpString = CBS_ASN1_BMPSTRING;
-
-// Universal class constructed types
-const Tag kSequence = CBS_ASN1_SEQUENCE;
-const Tag kSet = CBS_ASN1_SET;
-
-// Primitive/constructed bits
-const unsigned kTagPrimitive = 0x00;
-const unsigned kTagConstructed = CBS_ASN1_CONSTRUCTED;
-
-// Tag classes
-const unsigned kTagUniversal = 0x00;
-const unsigned kTagApplication = CBS_ASN1_APPLICATION;
-const unsigned kTagContextSpecific = CBS_ASN1_CONTEXT_SPECIFIC;
-const unsigned kTagPrivate = CBS_ASN1_PRIVATE;
-
-// Masks for the 3 components of a tag (class, primitive/constructed, number)
-const unsigned kTagNumberMask = CBS_ASN1_TAG_NUMBER_MASK;
-const unsigned kTagConstructionMask = CBS_ASN1_CONSTRUCTED;
-const unsigned kTagClassMask = CBS_ASN1_CLASS_MASK;
-
-// Creates the value for the outer tag of an explicitly tagged type.
-//
-// The ASN.1 keyword for this is:
-// [tag_number] EXPLICIT
-//
-// (Note, the EXPLICIT may be omitted if the entire schema is in
-// EXPLICIT mode, the default)
-OPENSSL_EXPORT Tag ContextSpecificConstructed(uint8_t tag_number);
-
-OPENSSL_EXPORT Tag ContextSpecificPrimitive(uint8_t base);
-
-OPENSSL_EXPORT bool IsConstructed(Tag tag);
-
-} // namespace bssl::der
-
-#endif // BSSL_DER_TAG_H_
diff --git a/src/pki/test_helpers.cc b/src/pki/test_helpers.cc
index 8b4e033..b6712af 100644
--- a/src/pki/test_helpers.cc
+++ b/src/pki/test_helpers.cc
@@ -4,34 +4,34 @@
#include "test_helpers.h"
+#include <fstream>
+#include <iostream>
#include <sstream>
+#include <streambuf>
+#include <string>
#include <string_view>
-#include "fillins/path_service.h"
-#include "fillins/file_util.h"
-
-#include "pem.h"
+#include <gtest/gtest.h>
+#include <openssl/bytestring.h>
+#include <openssl/mem.h>
+#include <openssl/pool.h>
#include "cert_error_params.h"
#include "cert_errors.h"
+#include "parser.h"
+#include "pem.h"
#include "simple_path_builder_delegate.h"
#include "string_util.h"
#include "trust_store.h"
-#include "parser.h"
-#include <gtest/gtest.h>
-#include <openssl/bytestring.h>
-#include <openssl/mem.h>
-#include <openssl/pool.h>
namespace bssl {
namespace {
-bool GetValue(std::string_view prefix,
- std::string_view line,
- std::string* value,
- bool* has_value) {
- if (!bssl::string_util::StartsWith(line, prefix))
+bool GetValue(std::string_view prefix, std::string_view line,
+ std::string *value, bool *has_value) {
+ if (!bssl::string_util::StartsWith(line, prefix)) {
return false;
+ }
if (*has_value) {
ADD_FAILURE() << "Duplicated " << prefix;
@@ -47,18 +47,17 @@ bool GetValue(std::string_view prefix,
// hex-encoded string on error.
std::string OidToString(der::Input oid) {
CBS cbs;
- CBS_init(&cbs, oid.UnsafeData(), oid.Length());
+ CBS_init(&cbs, oid.data(), oid.size());
bssl::UniquePtr<char> text(CBS_asn1_oid_to_text(&cbs));
if (!text) {
- return "invalid:" +
- bssl::string_util::HexEncode(oid.UnsafeData(), oid.Length());
+ return "invalid:" + bssl::string_util::HexEncode(oid);
}
return text.get();
}
-std::string StrSetToString(const std::set<std::string>& str_set) {
+std::string StrSetToString(const std::set<std::string> &str_set) {
std::string out;
- for (const auto& s : str_set) {
+ for (const auto &s : str_set) {
EXPECT_FALSE(s.empty());
if (!out.empty()) {
out += ", ";
@@ -85,24 +84,59 @@ std::vector<std::string> SplitString(std::string_view str) {
std::vector<std::string_view> split = string_util::SplitString(str, ',');
std::vector<std::string> out;
- for (const auto& s : split) {
+ for (const auto &s : split) {
out.push_back(StripString(s));
}
return out;
}
+bool ReadFileToString(const std::string &path, std::string *out) {
+ std::ifstream file(path, std::ios::binary);
+ file.unsetf(std::ios::skipws);
+
+ file.seekg(0, std::ios::end);
+ if (file.tellg() == -1) {
+ return false;
+ }
+ out->reserve(file.tellg());
+ file.seekg(0, std::ios::beg);
+
+ out->assign(std::istreambuf_iterator<char>(file),
+ std::istreambuf_iterator<char>());
+
+ return true;
+}
+
+std::string AppendComponent(const std::string &path,
+ const std::string &component) {
+ // Append a path component to a path. Use the \ separator if this appears to
+ // be a Windows path, otherwise the Unix one.
+ if (path.find(":\\") != std::string::npos) {
+ return path + "\\" + component;
+ }
+ return path + "/" + component;
+}
+
+std::string GetTestRoot(void) {
+ // We expect our test data to live in "pki" underneath a
+ // test root directory, or in the current directry.
+ char *root_from_env = getenv("BORINGSSL_TEST_DATA_ROOT");
+ std::string root = root_from_env ? root_from_env : ".";
+ return AppendComponent(root, "pki");
+}
+
} // namespace
namespace der {
-void PrintTo(const Input& data, ::std::ostream* os) {
+void PrintTo(Input data, ::std::ostream *os) {
size_t len;
- if (!EVP_EncodedLength(&len, data.Length())) {
+ if (!EVP_EncodedLength(&len, data.size())) {
*os << "[]";
return;
}
std::vector<uint8_t> encoded(len);
- len = EVP_EncodeBlock(encoded.data(), data.UnsafeData(), data.Length());
+ len = EVP_EncodeBlock(encoded.data(), data.data(), data.size());
// Skip the trailing \0.
std::string b64_encoded(encoded.begin(), encoded.begin() + len);
*os << "[" << b64_encoded << "]";
@@ -113,7 +147,7 @@ void PrintTo(const Input& data, ::std::ostream* os) {
der::Input SequenceValueFromString(std::string_view s) {
der::Parser parser((der::Input(s)));
der::Input data;
- if (!parser.ReadTag(der::kSequence, &data)) {
+ if (!parser.ReadTag(CBS_ASN1_SEQUENCE, &data)) {
ADD_FAILURE();
return der::Input();
}
@@ -125,8 +159,7 @@ der::Input SequenceValueFromString(std::string_view s) {
}
::testing::AssertionResult ReadTestDataFromPemFile(
- const std::string& file_path_ascii,
- const PemBlockMapping* mappings,
+ const std::string &file_path_ascii, const PemBlockMapping *mappings,
size_t mappings_length) {
std::string file_data = ReadTestFileToString(file_path_ascii);
@@ -138,13 +171,13 @@ der::Input SequenceValueFromString(std::string_view s) {
// Build the |pem_headers| vector needed for PEMTokenzier.
std::vector<std::string> pem_headers;
- for (const auto& mapping : mappings_copy) {
+ for (const auto &mapping : mappings_copy) {
pem_headers.push_back(mapping.block_name);
}
PEMTokenizer pem_tokenizer(file_data, pem_headers);
while (pem_tokenizer.GetNext()) {
- for (auto& mapping : mappings_copy) {
+ for (auto &mapping : mappings_copy) {
// Find the mapping for this block type.
if (pem_tokenizer.block_type() == mapping.block_name) {
if (!mapping.value) {
@@ -162,7 +195,7 @@ der::Input SequenceValueFromString(std::string_view s) {
}
// Ensure that all specified blocks were found.
- for (const auto& mapping : mappings_copy) {
+ for (const auto &mapping : mappings_copy) {
if (mapping.value && !mapping.optional) {
return ::testing::AssertionFailure()
<< "PEM block missing: " << mapping.block_name;
@@ -192,25 +225,26 @@ bool VerifyCertChainTest::HasHighSeverityErrors() const {
return expected_errors.find("ERROR: ") != std::string::npos;
}
-bool ReadCertChainFromFile(const std::string& file_path_ascii,
- ParsedCertificateList* chain) {
+bool ReadCertChainFromFile(const std::string &file_path_ascii,
+ ParsedCertificateList *chain) {
// Reset all the out parameters to their defaults.
*chain = ParsedCertificateList();
std::string file_data = ReadTestFileToString(file_path_ascii);
- if (file_data.empty())
+ if (file_data.empty()) {
return false;
+ }
std::vector<std::string> pem_headers = {"CERTIFICATE"};
PEMTokenizer pem_tokenizer(file_data, pem_headers);
while (pem_tokenizer.GetNext()) {
- const std::string& block_data = pem_tokenizer.data();
+ const std::string &block_data = pem_tokenizer.data();
CertErrors errors;
if (!ParsedCertificate::CreateAndAddToVector(
bssl::UniquePtr<CRYPTO_BUFFER>(CRYPTO_BUFFER_new(
- reinterpret_cast<const uint8_t*>(block_data.data()),
+ reinterpret_cast<const uint8_t *>(block_data.data()),
block_data.size(), nullptr)),
{}, chain, &errors)) {
ADD_FAILURE() << errors.ToDebugString();
@@ -222,23 +256,26 @@ bool ReadCertChainFromFile(const std::string& file_path_ascii,
}
std::shared_ptr<const ParsedCertificate> ReadCertFromFile(
- const std::string& file_path_ascii) {
+ const std::string &file_path_ascii) {
ParsedCertificateList chain;
- if (!ReadCertChainFromFile(file_path_ascii, &chain))
+ if (!ReadCertChainFromFile(file_path_ascii, &chain)) {
return nullptr;
- if (chain.size() != 1)
+ }
+ if (chain.size() != 1) {
return nullptr;
+ }
return chain[0];
}
-bool ReadVerifyCertChainTestFromFile(const std::string& file_path_ascii,
- VerifyCertChainTest* test) {
+bool ReadVerifyCertChainTestFromFile(const std::string &file_path_ascii,
+ VerifyCertChainTest *test) {
// Reset all the out parameters to their defaults.
*test = {};
std::string file_data = ReadTestFileToString(file_path_ascii);
- if (file_data.empty())
+ if (file_data.empty()) {
return false;
+ }
bool has_chain = false;
bool has_trust = false;
@@ -412,26 +449,25 @@ bool ReadVerifyCertChainTestFromFile(const std::string& file_path_ascii,
return true;
}
-std::string ReadTestFileToString(const std::string& file_path_ascii) {
+std::string ReadTestFileToString(const std::string &file_path_ascii) {
// Compute the full path, relative to the src/ directory.
- fillins::FilePath src_root;
- bssl::fillins::PathService::Get(fillins::BSSL_TEST_DATA_ROOT, &src_root);
- fillins::FilePath filepath = src_root.AppendASCII(file_path_ascii);
+ std::string src_root = GetTestRoot();
+ std::string filepath = AppendComponent(src_root, file_path_ascii);
// Read the full contents of the file.
std::string file_data;
- if (!fillins::ReadFileToString(filepath, &file_data)) {
- ADD_FAILURE() << "Couldn't read file: " << filepath.value();
+ if (!ReadFileToString(filepath, &file_data)) {
+ ADD_FAILURE() << "Couldn't read file: " << filepath;
return std::string();
}
return file_data;
}
-void VerifyCertPathErrors(const std::string& expected_errors_str,
- const CertPathErrors& actual_errors,
- const ParsedCertificateList& chain,
- const std::string& errors_file_path) {
+void VerifyCertPathErrors(const std::string &expected_errors_str,
+ const CertPathErrors &actual_errors,
+ const ParsedCertificateList &chain,
+ const std::string &errors_file_path) {
std::string actual_errors_str = actual_errors.ToDebugString(chain);
if (expected_errors_str != actual_errors_str) {
@@ -442,14 +478,14 @@ void VerifyCertPathErrors(const std::string& expected_errors_str,
<< "ACTUAL:\n\n"
<< actual_errors_str << "\n"
<< "===> Use "
- "testdata/verify_certificate_chain_unittest/"
+ "pki/testdata/verify_certificate_chain_unittest/"
"rebase-errors.py to rebaseline.\n";
}
}
-void VerifyCertErrors(const std::string& expected_errors_str,
- const CertErrors& actual_errors,
- const std::string& errors_file_path) {
+void VerifyCertErrors(const std::string &expected_errors_str,
+ const CertErrors &actual_errors,
+ const std::string &errors_file_path) {
std::string actual_errors_str = actual_errors.ToDebugString();
if (expected_errors_str != actual_errors_str) {
@@ -460,17 +496,17 @@ void VerifyCertErrors(const std::string& expected_errors_str,
<< "ACTUAL:\n\n"
<< actual_errors_str << "\n"
<< "===> Use "
- "testdata/parse_certificate_unittest/"
+ "pki/testdata/parse_certificate_unittest/"
"rebase-errors.py to rebaseline.\n";
}
}
void VerifyUserConstrainedPolicySet(
- const std::set<std::string>& expected_user_constrained_policy_str_set,
- const std::set<der::Input>& actual_user_constrained_policy_set,
- const std::string& errors_file_path) {
+ const std::set<std::string> &expected_user_constrained_policy_str_set,
+ const std::set<der::Input> &actual_user_constrained_policy_set,
+ const std::string &errors_file_path) {
std::set<std::string> actual_user_constrained_policy_str_set;
- for (const der::Input& der_oid : actual_user_constrained_policy_set) {
+ for (der::Input der_oid : actual_user_constrained_policy_set) {
actual_user_constrained_policy_str_set.insert(OidToString(der_oid));
}
if (expected_user_constrained_policy_str_set !=
@@ -486,4 +522,4 @@ void VerifyUserConstrainedPolicySet(
}
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/test_helpers.h b/src/pki/test_helpers.h
index 6857dd3..91d74ce 100644
--- a/src/pki/test_helpers.h
+++ b/src/pki/test_helpers.h
@@ -12,19 +12,19 @@
#include <string_view>
#include <vector>
+#include <gtest/gtest.h>
+#include "input.h"
#include "parsed_certificate.h"
#include "simple_path_builder_delegate.h"
#include "trust_store.h"
#include "verify_certificate_chain.h"
-#include "input.h"
-#include <gtest/gtest.h>
namespace bssl {
namespace der {
// This function is used by GTest to support EXPECT_EQ() for der::Input.
-void PrintTo(const Input& data, ::std::ostream* os);
+void PrintTo(Input data, ::std::ostream *os);
} // namespace der
@@ -40,10 +40,10 @@ der::Input SequenceValueFromString(std::string_view s);
// the destination where the value for that block should be written.
struct PemBlockMapping {
// The name of the PEM header. Example "CERTIFICATE".
- const char* block_name;
+ const char *block_name;
// The destination where the read value should be written to.
- std::string* value;
+ std::string *value;
// True to indicate that the block is not required to be present. If the
// block is optional and is not present, then |value| will not be modified.
@@ -65,8 +65,7 @@ struct PemBlockMapping {
// once. In other words, the header must be present (unless marked as
// optional=true), have valid data, and appear no more than once.
::testing::AssertionResult ReadTestDataFromPemFile(
- const std::string& file_path_ascii,
- const PemBlockMapping* mappings,
+ const std::string &file_path_ascii, const PemBlockMapping *mappings,
size_t mappings_length);
// This is the same as the variant above, however it uses template magic so an
@@ -74,8 +73,7 @@ struct PemBlockMapping {
// inferred).
template <size_t N>
::testing::AssertionResult ReadTestDataFromPemFile(
- const std::string& file_path_ascii,
- const PemBlockMapping (&mappings)[N]) {
+ const std::string &file_path_ascii, const PemBlockMapping (&mappings)[N]) {
return ReadTestDataFromPemFile(file_path_ascii, mappings, N);
}
@@ -125,45 +123,45 @@ struct VerifyCertChainTest {
// Reads a test case from |file_path_ascii| (which is relative to //src).
// Generally |file_path_ascii| will start with:
// net/data/verify_certificate_chain_unittest/
-bool ReadVerifyCertChainTestFromFile(const std::string& file_path_ascii,
- VerifyCertChainTest* test);
+bool ReadVerifyCertChainTestFromFile(const std::string &file_path_ascii,
+ VerifyCertChainTest *test);
// Reads a certificate chain from |file_path_ascii|
-bool ReadCertChainFromFile(const std::string& file_path_ascii,
- ParsedCertificateList* chain);
+bool ReadCertChainFromFile(const std::string &file_path_ascii,
+ ParsedCertificateList *chain);
// Reads a certificate from |file_path_ascii|. Returns nullptr if the file
// contained more that one certificate.
std::shared_ptr<const ParsedCertificate> ReadCertFromFile(
- const std::string& file_path_ascii);
+ const std::string &file_path_ascii);
// Reads a data file relative to the src root directory.
-std::string ReadTestFileToString(const std::string& file_path_ascii);
+std::string ReadTestFileToString(const std::string &file_path_ascii);
// Asserts that |actual_errors| matches |expected_errors_str|.
//
// This is a helper function to simplify rebasing the error expectations when
// they originate from a test file.
-void VerifyCertPathErrors(const std::string& expected_errors_str,
- const CertPathErrors& actual_errors,
- const ParsedCertificateList& chain,
- const std::string& errors_file_path);
+void VerifyCertPathErrors(const std::string &expected_errors_str,
+ const CertPathErrors &actual_errors,
+ const ParsedCertificateList &chain,
+ const std::string &errors_file_path);
// Asserts that |actual_errors| matches |expected_errors_str|.
//
// This is a helper function to simplify rebasing the error expectations when
// they originate from a test file.
-void VerifyCertErrors(const std::string& expected_errors_str,
- const CertErrors& actual_errors,
- const std::string& errors_file_path);
+void VerifyCertErrors(const std::string &expected_errors_str,
+ const CertErrors &actual_errors,
+ const std::string &errors_file_path);
// Asserts that |actual_user_constrained_policy_set| matches
// |expected_user_constrained_policy_set|.
void VerifyUserConstrainedPolicySet(
- const std::set<std::string>& expected_user_constrained_policy_str_set,
- const std::set<der::Input>& actual_user_constrained_policy_set,
- const std::string& errors_file_path);
+ const std::set<std::string> &expected_user_constrained_policy_str_set,
+ const std::set<der::Input> &actual_user_constrained_policy_set,
+ const std::string &errors_file_path);
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_TEST_HELPERS_H_
diff --git a/src/pki/testdata/parse_certificate_unittest/rebase-errors.py b/src/pki/testdata/parse_certificate_unittest/rebase-errors.py
index 412c985..0f3d920 100755
--- a/src/pki/testdata/parse_certificate_unittest/rebase-errors.py
+++ b/src/pki/testdata/parse_certificate_unittest/rebase-errors.py
@@ -11,8 +11,8 @@ error format.
To use this run the affected tests, and then pass the input to this script
(either via stdin, or as the first argument). For instance:
- $ ./out/Release/net_unittests --gtest_filter="*ParseCertificate*" | \
- net/data/parse_certificate_unittest/rebase-errors.py
+ $ ./build/pki_test --gtest_filter="*ParseCertificate*:*ParsedCertificate*:" | \
+ pki/testdata/parse_certificate_unittest/rebase-errors.py
The script works by scanning the stdout looking for gtest failures having a
particular format. The C++ test side should have been instrumented to dump
@@ -21,17 +21,10 @@ out the test file's path on mismatch.
This script will then update the corresponding .pem file
"""
-import sys
-import os
-
-script_dir = os.path.dirname(os.path.realpath(__file__))
-sys.path += [os.path.join(script_dir, '..')]
-
-import gencerts
-
+import base64
import os
-import sys
import re
+import sys
# Regular expression to find the failed errors in test stdout.
# * Group 1 of the match is file path (relative to //src) where the
@@ -46,7 +39,7 @@ EXPECTED:
ACTUAL:
((?:.|\n)*?)
-===> Use net/data/parse_certificate_unittest/rebase-errors.py to rebaseline.
+===> Use pki/testdata/parse_certificate_unittest/rebase-errors.py to rebaseline.
""", re.MULTILINE)
@@ -81,11 +74,18 @@ def replace_string(original, start, end, replacement):
return original[0:start] + replacement + original[end:]
+def text_data_to_pem(block_header, text_data):
+ # b64encode takes in bytes and returns bytes.
+ pem_data = base64.b64encode(text_data.encode('utf8')).decode('utf8')
+ return '%s\n-----BEGIN %s-----\n%s\n-----END %s-----\n' % (
+ text_data, block_header, pem_data, block_header)
+
+
def fixup_pem_file(path, actual_errors):
"""Updates the ERRORS block in the test .pem file"""
contents = read_file_to_string(path)
- errors_block_text = '\n' + gencerts.text_data_to_pem('ERRORS', actual_errors)
+ errors_block_text = '\n' + text_data_to_pem('ERRORS', actual_errors)
# Strip the trailing newline.
errors_block_text = errors_block_text[:-1]
@@ -102,15 +102,17 @@ def fixup_pem_file(path, actual_errors):
def get_src_root():
- """Returns the path to the enclosing //src directory. This assumes the
+ """Returns the path to BoringSSL source tree. This assumes the
current script is inside the source tree."""
cur_dir = os.path.dirname(os.path.realpath(__file__))
while True:
- parent_dir, dirname = os.path.split(cur_dir)
- # Check if it looks like the src/ root.
- if dirname == "src" and os.path.isdir(os.path.join(cur_dir, "net")):
+ # Check if it looks like the BoringSSL root.
+ if os.path.isdir(os.path.join(cur_dir, "crypto")) and \
+ os.path.isdir(os.path.join(cur_dir, "pki")) and \
+ os.path.isdir(os.path.join(cur_dir, "ssl")):
return cur_dir
+ parent_dir, _ = os.path.split(cur_dir)
if not parent_dir or parent_dir == cur_dir:
break
cur_dir = parent_dir
@@ -138,7 +140,7 @@ def main():
test_stdout = sys.stdin.read()
for m in failed_test_regex.finditer(test_stdout):
- src_relative_errors_path = m.group(1)
+ src_relative_errors_path = "pki/" + m.group(1)
errors_path = get_abs_path(src_relative_errors_path)
actual_errors = m.group(2)
diff --git a/src/pki/testdata/ssl/certificates/multi-root-A-by-B.pem b/src/pki/testdata/path_builder_unittest/multi-root-A-by-B.pem
index 451345d..451345d 100644
--- a/src/pki/testdata/ssl/certificates/multi-root-A-by-B.pem
+++ b/src/pki/testdata/path_builder_unittest/multi-root-A-by-B.pem
diff --git a/src/pki/testdata/ssl/certificates/multi-root-B-by-C.pem b/src/pki/testdata/path_builder_unittest/multi-root-B-by-C.pem
index 98685b3..98685b3 100644
--- a/src/pki/testdata/ssl/certificates/multi-root-B-by-C.pem
+++ b/src/pki/testdata/path_builder_unittest/multi-root-B-by-C.pem
diff --git a/src/pki/testdata/ssl/certificates/multi-root-B-by-F.pem b/src/pki/testdata/path_builder_unittest/multi-root-B-by-F.pem
index bcaa0da..bcaa0da 100644
--- a/src/pki/testdata/ssl/certificates/multi-root-B-by-F.pem
+++ b/src/pki/testdata/path_builder_unittest/multi-root-B-by-F.pem
diff --git a/src/pki/testdata/ssl/certificates/multi-root-C-by-D.pem b/src/pki/testdata/path_builder_unittest/multi-root-C-by-D.pem
index ea171e2..ea171e2 100644
--- a/src/pki/testdata/ssl/certificates/multi-root-C-by-D.pem
+++ b/src/pki/testdata/path_builder_unittest/multi-root-C-by-D.pem
diff --git a/src/pki/testdata/ssl/certificates/multi-root-C-by-E.pem b/src/pki/testdata/path_builder_unittest/multi-root-C-by-E.pem
index 1f8b76c..1f8b76c 100644
--- a/src/pki/testdata/ssl/certificates/multi-root-C-by-E.pem
+++ b/src/pki/testdata/path_builder_unittest/multi-root-C-by-E.pem
diff --git a/src/pki/testdata/ssl/certificates/multi-root-D-by-D.pem b/src/pki/testdata/path_builder_unittest/multi-root-D-by-D.pem
index 7fd6fa9..7fd6fa9 100644
--- a/src/pki/testdata/ssl/certificates/multi-root-D-by-D.pem
+++ b/src/pki/testdata/path_builder_unittest/multi-root-D-by-D.pem
diff --git a/src/pki/testdata/ssl/certificates/multi-root-E-by-E.pem b/src/pki/testdata/path_builder_unittest/multi-root-E-by-E.pem
index 4ccd307..4ccd307 100644
--- a/src/pki/testdata/ssl/certificates/multi-root-E-by-E.pem
+++ b/src/pki/testdata/path_builder_unittest/multi-root-E-by-E.pem
diff --git a/src/pki/testdata/ssl/certificates/multi-root-F-by-E.pem b/src/pki/testdata/path_builder_unittest/multi-root-F-by-E.pem
index 2e1124d..2e1124d 100644
--- a/src/pki/testdata/ssl/certificates/multi-root-F-by-E.pem
+++ b/src/pki/testdata/path_builder_unittest/multi-root-F-by-E.pem
diff --git a/src/pki/testdata/path_builder_unittest/precertificate/precertificate.pem b/src/pki/testdata/path_builder_unittest/precertificate/precertificate.pem
new file mode 100644
index 0000000..23b9900
--- /dev/null
+++ b/src/pki/testdata/path_builder_unittest/precertificate/precertificate.pem
@@ -0,0 +1,27 @@
+-----BEGIN CERTIFICATE-----
+MIIEfzCCA2egAwIBAgIQDIMDs7tv6W4RteOR0LnF9DANBgkqhkiG9w0BAQsFADBG
+MQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExM
+QzETMBEGA1UEAxMKR1RTIENBIDFQNTAeFw0yMzA5MTQwMDU5NTFaFw0yMzEyMTMw
+MDU5NTBaMBkxFzAVBgNVBAMTDnJmYy1lZGl0b3Iub3JnMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEA2jNKh7UQ/v36Qz/KV+QLBYwxI9+kzv3t6363d63V
+3EkhIPTLZF8wQ7kfztmFKUuMcLcvEpY1jwxyBioGJN1b9QaxlLCsK8WvEyxnR+nq
+pR1h+j+zceZIEZoDVcS2GIr7LoFtFUeGidQRYBRf9Wu6bRMaT2fHaI6FcZECH7Bn
+TSe2e62BFejah3pA91+oVlnI9EjKtMQOGEaoyKjrKswVaWcFiUWKcvGnjygkYWRb
+6jBUhGINamkCgrtAblHrwB0ym9VENj06fpnWbkxFtU6GmmRplHag5npRwWI439+9
+QNtqj6PgMsSMBLj7ljq8GlY81Y6TZTZ2F06b0NLkRdjetwIDAQABo4IBlDCCAZAw
+DgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMAwGA1UdEwEB/wQC
+MAAwHQYDVR0OBBYEFGMbD3hNq55udW3jdGHpx+v2rzbWMB8GA1UdIwQYMBaAFNX8
+ng3fHsrdCJeXbivFX8Ur9ey4MHgGCCsGAQUFBwEBBGwwajA1BggrBgEFBQcwAYYp
+aHR0cDovL29jc3AucGtpLmdvb2cvcy9ndHMxcDUvZDJ5N2JUcElndEkwMQYIKwYB
+BQUHMAKGJWh0dHA6Ly9wa2kuZ29vZy9yZXBvL2NlcnRzL2d0czFwNS5kZXIwKwYD
+VR0RBCQwIoIOcmZjLWVkaXRvci5vcmeCECoucmZjLWVkaXRvci5vcmcwIQYDVR0g
+BBowGDAIBgZngQwBAgEwDAYKKwYBBAHWeQIFAzA8BgNVHR8ENTAzMDGgL6Athito
+dHRwOi8vY3Jscy5wa2kuZ29vZy9ndHMxcDUvZWV4a0MyUEp4YXcuY3JsMBMGCisG
+AQQB1nkCBAMBAf8EAgUAMA0GCSqGSIb3DQEBCwUAA4IBAQAP3c64wNkNq6Nq7HrV
+OzaygYS0dZ9gC8EuJsBe591AkPO8/B8y2kyPFRSHaG7IfRDDSyb9KqgtbknBDbHh
+GWDF7CS6sid8ulT1kwDd8HKBVCfd37EODrHmzfJhtxMfEcB7FGjxHjcNZ7g5A4K1
+ph0AXHym+hPB0Jz/0MzDMeFpFp7llib3vAYfXz6bS4xYcBMqPmJV+okpHYjF4UXZ
+0JIeMMSlypw5FgoMcsMydFW5X1KzoeKwSDhsVet03AM14QqlKv9p9u4MPzzVxYuW
+syhj72JMl1YA01MZ06Org8SaLwUtKu0/kq4mysCNA3GYkKwUQIod/ilW65l6dZoS
++lRn
+-----END CERTIFICATE-----
diff --git a/src/pki/testdata/path_builder_unittest/precertificate/root.pem b/src/pki/testdata/path_builder_unittest/precertificate/root.pem
new file mode 100644
index 0000000..ab573a0
--- /dev/null
+++ b/src/pki/testdata/path_builder_unittest/precertificate/root.pem
@@ -0,0 +1,32 @@
+-----BEGIN CERTIFICATE-----
+MIIFjDCCA3SgAwIBAgINAgO8UKMnU/CRgCLt8TANBgkqhkiG9w0BAQsFADBHMQsw
+CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU
+MBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMjAwODEzMDAwMDQyWhcNMjcwOTMwMDAw
+MDQyWjBGMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp
+Y2VzIExMQzETMBEGA1UEAxMKR1RTIENBIDFQNTCCASIwDQYJKoZIhvcNAQEBBQAD
+ggEPADCCAQoCggEBALOC8CSMvy2Hr7LZp676yrpE1ls+/rL3smUW3N4Q6E8tEFha
+KIaHoe5qs6DZdU9/oVIBi1WoSlsGSMg2EiWrifnyI1+dYGX5XNq+OuhcbX2c0IQY
+hTDNTpvsPNiz4ZbU88ULZduPsHTL9h7zePGslcXdc8MxiIGvdKpv/QzjBZXwxRBP
+ZWP6oK/GGD3Fod+XedcFibMwsHSuPZIQa4wVd90LBFf7gQPd6iI01eVWsvDEjUGx
+wwLbYuyA0P921IbkBBq2tgwrYnF92a/Z8V76wB7KoBlcVfCA0SoMB4aQnzXjKCtb
+7yPIox2kozru/oPcgkwlsE3FUa2em9NbhMIaWukCAwEAAaOCAXYwggFyMA4GA1Ud
+DwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwEgYDVR0T
+AQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU1fyeDd8eyt0Il5duK8VfxSv17LgwHwYD
+VR0jBBgwFoAU5K8rJnEaK0gnhS9SZizv8IkTcT4waAYIKwYBBQUHAQEEXDBaMCYG
+CCsGAQUFBzABhhpodHRwOi8vb2NzcC5wa2kuZ29vZy9ndHNyMTAwBggrBgEFBQcw
+AoYkaHR0cDovL3BraS5nb29nL3JlcG8vY2VydHMvZ3RzcjEuZGVyMDQGA1UdHwQt
+MCswKaAnoCWGI2h0dHA6Ly9jcmwucGtpLmdvb2cvZ3RzcjEvZ3RzcjEuY3JsME0G
+A1UdIARGMEQwOAYKKwYBBAHWeQIFAzAqMCgGCCsGAQUFBwIBFhxodHRwczovL3Br
+aS5nb29nL3JlcG9zaXRvcnkvMAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAgEA
+bGMn7iPf5VJoTYFmkYXffWXlWzcxCCayB12avrHKAbmtv5139lEd15jFC0mhe6HX
+02jlRA+LujbdQoJ30o3d9T/768gHmJPuWtC1Pd5LHC2MTex+jHv+TkD98LSzWQIQ
+UVzjwCv9twZIUX4JXj8P3Kf+l+d5xQ5EiXjFaVkpoJo6SDYpppSTVS24R7XplrWf
+B82mqz4yisCGg8XBQcifLzWODcAHeuGsyWW1y4qn3XHYYWU5hKwyPvd6NvFWn1ep
+QW1akKfbOup1gAxjC2l0bwdMFfM3KKUZpG719iDNY7J+xCsJdYna0Twuck82GqGe
+RNDNm6YjCD+XoaeeWqX3CZStXXZdKFbRGmZRUQd73j2wyO8weiQtvrizhvZL9/C1
+T//Oxvn2PyonCA8JPiNax+NCLXo25D2YlmA5mOrR22Mq63gJsU4hs463zj6S8ZVc
+pDnQwCvIUxX10i+CzQZ0Z5mQdzcKly3FHB700FvpFePqAgnIE9cTcGW/+4ibWiW+
+dwnhp2pOEXW5Hk3xABtqZnmOw27YbaIiom0F+yzy8VDloNHYnzV9/HCrWSoC8b6w
+0/H4zRK5aiWQW+OFIOb12stAHBk0IANhd7p/SA9JCynr52Fkx2PRR+sc4e6URu85
+c8zuTyuN3PtYp7NlIJmVuftVb9eWbpQ99HqSjmMd320=
+-----END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/1024-rsa-ee-by-1024-rsa-intermediate.pem b/src/pki/testdata/ssl/certificates/1024-rsa-ee-by-1024-rsa-intermediate.pem
deleted file mode 100644
index 99b3a7a..0000000
--- a/src/pki/testdata/ssl/certificates/1024-rsa-ee-by-1024-rsa-intermediate.pem
+++ /dev/null
@@ -1,61 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 2 (0x2)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=1024 rsa Test intermediate CA
- Validity
- Not Before: Apr 22 20:28:41 2016 GMT
- Not After : Apr 20 20:28:41 2026 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (1024 bit)
- Modulus:
- 00:9f:47:a7:c7:70:ba:de:3c:27:a1:38:8c:be:b4:
- 25:fe:9d:68:cd:56:69:96:f3:5c:1b:4a:9e:bd:14:
- f2:1c:fd:dd:59:ef:1c:9e:52:8a:55:78:ed:63:e1:
- 19:a0:a3:92:bb:30:1a:1e:32:83:06:94:a9:80:e3:
- 54:79:2e:79:4b:05:ba:6e:53:b0:e7:17:20:1f:cb:
- c3:a4:30:a2:80:e3:9a:ac:8c:80:3f:be:97:24:fd:
- ad:bd:98:9e:2b:8e:1b:cf:92:2a:02:25:a5:0f:d8:
- 1c:1d:fa:e6:ce:76:75:2c:d1:0c:f1:1c:73:85:1c:
- 9a:bb:cb:73:fa:95:bd:98:e3
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 4F:B4:7F:BD:2E:4A:D8:3A:50:56:3A:5B:24:8A:28:DB:E3:BD:59:FF
- X509v3 Authority Key Identifier:
- keyid:AB:91:E6:2B:C9:C1:2E:7B:A0:65:F1:D4:8A:CE:03:4D:F4:7A:18:13
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- 6e:db:0b:81:ea:0e:a3:bc:55:ba:09:f8:ec:b6:1e:b0:97:d6:
- 53:b2:6b:44:b5:4e:d0:84:86:d1:37:5e:f6:24:28:8d:bf:f4:
- 03:9e:e2:d2:9f:6d:19:17:97:51:c5:fe:f2:b8:95:67:bb:49:
- 4d:d6:6e:0e:6e:9c:40:81:68:c1:44:fb:c3:30:13:e6:91:73:
- 6e:09:a7:27:c8:7b:33:68:d4:ed:b2:81:33:21:63:a9:4f:25:
- 05:2f:d5:20:d5:58:3c:6a:af:27:59:8e:ab:c7:b9:c9:89:d7:
- cb:94:bd:ba:34:0d:e3:0a:68:1c:c2:d0:1d:b4:d0:8b:89:39:
- 4b:a4
------BEGIN CERTIFICATE-----
-MIICfzCCAeigAwIBAgIBAjANBgkqhkiG9w0BAQsFADAoMSYwJAYDVQQDDB0xMDI0
-IHJzYSBUZXN0IGludGVybWVkaWF0ZSBDQTAeFw0xNjA0MjIyMDI4NDFaFw0yNjA0
-MjAyMDI4NDFaMGAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYw
-FAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQD
-DAkxMjcuMC4wLjEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJ9Hp8dwut48
-J6E4jL60Jf6daM1WaZbzXBtKnr0U8hz93VnvHJ5SilV47WPhGaCjkrswGh4ygwaU
-qYDjVHkueUsFum5TsOcXIB/Lw6QwooDjmqyMgD++lyT9rb2YniuOG8+SKgIlpQ/Y
-HB365s52dSzRDPEcc4UcmrvLc/qVvZjjAgMBAAGjgYAwfjAMBgNVHRMBAf8EAjAA
-MB0GA1UdDgQWBBRPtH+9LkrYOlBWOlskiijb471Z/zAfBgNVHSMEGDAWgBSrkeYr
-ycEue6Bl8dSKzgNN9HoYEzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
-DwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOBgQBu2wuB6g6jvFW6Cfjs
-th6wl9ZTsmtEtU7QhIbRN172JCiNv/QDnuLSn20ZF5dRxf7yuJVnu0lN1m4ObpxA
-gWjBRPvDMBPmkXNuCacnyHszaNTtsoEzIWOpTyUFL9Ug1Vg8aq8nWY6rx7nJidfL
-lL26NA3jCmgcwtAdtNCLiTlLpA==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/1024-rsa-ee-by-2048-rsa-intermediate.pem b/src/pki/testdata/ssl/certificates/1024-rsa-ee-by-2048-rsa-intermediate.pem
deleted file mode 100644
index 7bf1bb9..0000000
--- a/src/pki/testdata/ssl/certificates/1024-rsa-ee-by-2048-rsa-intermediate.pem
+++ /dev/null
@@ -1,71 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 2 (0x2)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=2048 rsa Test intermediate CA
- Validity
- Not Before: Apr 22 20:28:41 2016 GMT
- Not After : Apr 20 20:28:41 2026 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (1024 bit)
- Modulus:
- 00:e3:7f:ce:bc:d2:a2:33:36:a5:0b:f1:a3:08:f9:
- 7d:82:62:0d:ad:f3:63:a7:49:50:ea:7b:eb:24:b6:
- 9e:0e:8f:9a:63:87:fd:81:cb:17:65:30:f8:8a:27:
- 59:dd:7b:f2:55:dc:1d:f1:ad:c6:33:ae:eb:d7:4e:
- 57:47:0c:91:fb:3a:fe:85:13:14:d7:fb:b6:9e:68:
- 15:d6:38:0e:3b:9e:51:ed:b9:7c:4d:4a:56:24:46:
- 5a:13:f4:df:3a:16:91:b0:70:c4:dc:86:22:a7:f7:
- 91:b6:93:35:f4:33:21:7c:eb:f4:90:e4:56:9c:20:
- c6:02:6a:93:5d:a2:30:b0:77
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- F1:0B:57:46:80:DA:DF:AE:5F:99:7C:8E:C3:FA:3E:DC:4D:3D:75:6D
- X509v3 Authority Key Identifier:
- keyid:5C:C2:71:76:C1:26:B1:0C:31:73:C8:92:D3:1E:01:12:4B:CC:5A:14
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- 6e:bf:10:0e:c0:2e:0c:7d:b6:4c:ed:e7:72:a4:2c:0d:07:e6:
- d1:00:79:17:a0:5e:00:5e:94:54:10:2b:ba:94:b9:8e:f9:a5:
- fa:6a:37:86:bd:b4:5b:47:b1:e7:8b:7a:86:2f:68:ad:af:db:
- 71:bb:60:21:e4:69:19:72:26:90:61:48:d4:62:bf:e1:c0:45:
- 96:29:f8:1c:c7:11:7d:d4:15:90:fb:7e:5f:56:5c:c4:6c:eb:
- 3a:0f:82:fd:d4:d1:cc:42:b1:e9:fc:63:d4:ea:fb:52:0e:3d:
- 54:a1:34:9a:73:66:f9:e7:3b:ca:6e:16:89:31:2a:ec:84:21:
- ca:e8:4b:02:e8:90:d6:e0:1f:d1:4c:3e:1e:e1:d7:0a:1f:dd:
- f3:32:b5:7e:c1:97:5c:ce:d7:8b:e1:1e:90:65:76:44:dd:59:
- 8c:2b:67:6f:f0:2e:ee:79:f2:69:6a:75:81:03:85:24:de:d7:
- 9f:12:28:e7:77:f4:49:cb:3a:9f:ec:3c:12:ac:d3:6c:71:31:
- e7:32:4e:1f:94:1e:cc:0f:7a:02:5e:ce:94:c5:a9:e0:96:94:
- 50:05:ac:df:3b:57:c5:0d:96:5a:b5:14:43:be:31:60:ef:b6:
- ad:ec:a6:75:20:80:8b:8f:14:d9:6c:96:73:ca:05:10:3f:d5:
- be:30:ae:37
------BEGIN CERTIFICATE-----
-MIIDADCCAeigAwIBAgIBAjANBgkqhkiG9w0BAQsFADAoMSYwJAYDVQQDDB0yMDQ4
-IHJzYSBUZXN0IGludGVybWVkaWF0ZSBDQTAeFw0xNjA0MjIyMDI4NDFaFw0yNjA0
-MjAyMDI4NDFaMGAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYw
-FAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQD
-DAkxMjcuMC4wLjEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAON/zrzSojM2
-pQvxowj5fYJiDa3zY6dJUOp76yS2ng6PmmOH/YHLF2Uw+IonWd178lXcHfGtxjOu
-69dOV0cMkfs6/oUTFNf7tp5oFdY4DjueUe25fE1KViRGWhP03zoWkbBwxNyGIqf3
-kbaTNfQzIXzr9JDkVpwgxgJqk12iMLB3AgMBAAGjgYAwfjAMBgNVHRMBAf8EAjAA
-MB0GA1UdDgQWBBTxC1dGgNrfrl+ZfI7D+j7cTT11bTAfBgNVHSMEGDAWgBRcwnF2
-wSaxDDFzyJLTHgESS8xaFDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
-DwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOCAQEAbr8QDsAuDH22TO3n
-cqQsDQfm0QB5F6BeAF6UVBArupS5jvml+mo3hr20W0ex54t6hi9ora/bcbtgIeRp
-GXImkGFI1GK/4cBFlin4HMcRfdQVkPt+X1ZcxGzrOg+C/dTRzEKx6fxj1Or7Ug49
-VKE0mnNm+ec7ym4WiTEq7IQhyuhLAuiQ1uAf0Uw+HuHXCh/d8zK1fsGXXM7Xi+Ee
-kGV2RN1ZjCtnb/Au7nnyaWp1gQOFJN7XnxIo53f0Scs6n+w8EqzTbHEx5zJOH5Qe
-zA96Al7OlMWp4JaUUAWs3ztXxQ2WWrUUQ74xYO+2reymdSCAi48U2WyWc8oFED/V
-vjCuNw==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/1024-rsa-ee-by-768-rsa-intermediate.pem b/src/pki/testdata/ssl/certificates/1024-rsa-ee-by-768-rsa-intermediate.pem
deleted file mode 100644
index 17c5f65..0000000
--- a/src/pki/testdata/ssl/certificates/1024-rsa-ee-by-768-rsa-intermediate.pem
+++ /dev/null
@@ -1,58 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 2 (0x2)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=768 rsa Test intermediate CA
- Validity
- Not Before: Apr 22 20:28:41 2016 GMT
- Not After : Apr 20 20:28:41 2026 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (1024 bit)
- Modulus:
- 00:df:d6:fb:c9:3c:e5:fd:2a:2a:4c:dd:75:6e:22:
- c9:12:91:d5:b9:c2:a8:bd:7e:5c:97:90:3f:73:e9:
- 9b:a6:96:91:83:4f:8e:09:5f:b0:ab:13:06:1c:c5:
- 60:f9:1e:fc:c7:e2:69:02:ae:6e:7a:2a:50:3b:26:
- 06:2b:40:91:16:a5:e0:e0:b1:aa:60:54:8c:25:69:
- 58:54:d6:b4:8c:0b:43:41:b0:ca:2f:71:6d:f1:0c:
- 03:8c:84:b0:aa:1c:ac:94:c0:e9:ca:0d:a8:18:9c:
- e8:fa:84:f1:1a:67:e8:63:ae:d8:7f:06:94:17:11:
- 29:41:62:a2:a5:0c:d0:0c:6d
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 02:4E:E8:A0:0B:C1:19:46:8E:1E:C9:9B:D8:AD:92:42:13:62:A3:AF
- X509v3 Authority Key Identifier:
- keyid:9E:E3:A7:83:B0:59:6F:91:9F:C7:D5:34:61:4A:1A:B3:66:C7:44:A0
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- 65:e4:d9:6c:3e:76:68:02:02:8e:88:2c:de:36:11:d3:e0:b6:
- 3a:6d:43:a1:d4:97:21:ad:7a:fa:b5:dd:a6:05:39:61:b3:04:
- c2:3c:ea:4a:fb:4e:a2:c5:46:f8:a0:fd:d9:4e:c0:fa:dd:87:
- c3:f8:dc:84:51:a8:72:61:bc:62:35:97:92:84:d1:54:c5:8b:
- 9a:e9:5e:72:4c:2c:23:03:ab:c3:32:b4:a2:39:31:d1:4f:67:
- f4:9e:7d:2f:d9:23
------BEGIN CERTIFICATE-----
-MIICXTCCAeegAwIBAgIBAjANBgkqhkiG9w0BAQsFADAnMSUwIwYDVQQDDBw3Njgg
-cnNhIFRlc3QgaW50ZXJtZWRpYXRlIENBMB4XDTE2MDQyMjIwMjg0MVoXDTI2MDQy
-MDIwMjg0MVowYDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAU
-BgNVBAcMDU1vdW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExEjAQBgNVBAMM
-CTEyNy4wLjAuMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA39b7yTzl/Soq
-TN11biLJEpHVucKovX5cl5A/c+mbppaRg0+OCV+wqxMGHMVg+R78x+JpAq5ueipQ
-OyYGK0CRFqXg4LGqYFSMJWlYVNa0jAtDQbDKL3Ft8QwDjISwqhyslMDpyg2oGJzo
-+oTxGmfoY67YfwaUFxEpQWKipQzQDG0CAwEAAaOBgDB+MAwGA1UdEwEB/wQCMAAw
-HQYDVR0OBBYEFAJO6KALwRlGjh7Jm9itkkITYqOvMB8GA1UdIwQYMBaAFJ7jp4Ow
-WW+Rn8fVNGFKGrNmx0SgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAP
-BgNVHREECDAGhwR/AAABMA0GCSqGSIb3DQEBCwUAA2EAZeTZbD52aAICjogs3jYR
-0+C2Om1DodSXIa16+rXdpgU5YbMEwjzqSvtOosVG+KD92U7A+t2Hw/jchFGocmG8
-YjWXkoTRVMWLmuleckwsIwOrwzK0ojkx0U9n9J59L9kj
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/1024-rsa-ee-by-prime256v1-ecdsa-intermediate.pem b/src/pki/testdata/ssl/certificates/1024-rsa-ee-by-prime256v1-ecdsa-intermediate.pem
deleted file mode 100644
index 45f0faa..0000000
--- a/src/pki/testdata/ssl/certificates/1024-rsa-ee-by-prime256v1-ecdsa-intermediate.pem
+++ /dev/null
@@ -1,56 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 2 (0x2)
- Signature Algorithm: ecdsa-with-SHA256
- Issuer: CN=prime256v1 ecdsa Test intermediate CA
- Validity
- Not Before: Apr 22 20:28:41 2016 GMT
- Not After : Apr 20 20:28:41 2026 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (1024 bit)
- Modulus:
- 00:d0:22:14:bb:ad:90:dc:97:5c:0a:7e:a0:43:58:
- 30:59:7b:41:33:a9:48:e4:06:c9:dd:5b:0c:3b:4a:
- 2f:75:4a:5d:5b:44:b5:24:e7:ec:36:99:98:e0:56:
- d2:9d:3f:d4:36:29:2f:87:27:05:3d:73:b9:9d:97:
- 4c:39:79:3e:95:31:bc:e0:12:f3:26:ca:c7:33:86:
- 27:a9:5f:b1:a2:66:25:3c:61:95:0c:8b:c8:03:b0:
- 6a:62:bd:55:f8:07:d0:84:16:75:eb:71:ea:bd:b7:
- 56:b9:14:e0:f2:41:72:92:72:36:4b:7c:23:d4:b5:
- 99:85:cc:34:b8:19:69:1c:69
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 44:AD:EF:D9:05:03:83:91:FE:A0:F3:3F:1E:C2:CE:ED:99:FD:78:75
- X509v3 Authority Key Identifier:
- keyid:0D:6B:B6:D7:DD:7F:CD:4E:AD:06:6B:22:E1:11:08:58:10:AB:16:2A
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: ecdsa-with-SHA256
- 30:44:02:20:56:76:a2:15:cf:3a:d3:54:7c:1b:7d:05:85:ea:
- 58:2a:91:02:64:52:63:67:44:c2:ea:b3:74:02:c7:29:1c:ed:
- 02:20:77:82:bf:d2:78:24:dc:a3:5a:77:be:5b:05:44:d2:6d:
- f9:d4:78:ac:38:d9:69:8a:90:2c:f2:8f:41:d9:62:ad
------BEGIN CERTIFICATE-----
-MIICRjCCAe2gAwIBAgIBAjAKBggqhkjOPQQDAjAwMS4wLAYDVQQDDCVwcmltZTI1
-NnYxIGVjZHNhIFRlc3QgaW50ZXJtZWRpYXRlIENBMB4XDTE2MDQyMjIwMjg0MVoX
-DTI2MDQyMDIwMjg0MVowYDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3Ju
-aWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExEjAQ
-BgNVBAMMCTEyNy4wLjAuMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0CIU
-u62Q3JdcCn6gQ1gwWXtBM6lI5AbJ3VsMO0ovdUpdW0S1JOfsNpmY4FbSnT/UNikv
-hycFPXO5nZdMOXk+lTG84BLzJsrHM4YnqV+xomYlPGGVDIvIA7BqYr1V+AfQhBZ1
-63HqvbdWuRTg8kFyknI2S3wj1LWZhcw0uBlpHGkCAwEAAaOBgDB+MAwGA1UdEwEB
-/wQCMAAwHQYDVR0OBBYEFESt79kFA4OR/qDzPx7Czu2Z/Xh1MB8GA1UdIwQYMBaA
-FA1rttfdf81OrQZrIuERCFgQqxYqMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF
-BQcDAjAPBgNVHREECDAGhwR/AAABMAoGCCqGSM49BAMCA0cAMEQCIFZ2ohXPOtNU
-fBt9BYXqWCqRAmRSY2dEwuqzdALHKRztAiB3gr/SeCTco1p3vlsFRNJt+dR4rDjZ
-aYqQLPKPQdlirQ==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/1024-rsa-intermediate.pem b/src/pki/testdata/ssl/certificates/1024-rsa-intermediate.pem
deleted file mode 100644
index d84308e..0000000
--- a/src/pki/testdata/ssl/certificates/1024-rsa-intermediate.pem
+++ /dev/null
@@ -1,63 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 2 (0x2)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=2048 RSA Test Root CA
- Validity
- Not Before: Apr 22 20:28:41 2016 GMT
- Not After : Apr 20 20:28:41 2026 GMT
- Subject: CN=1024 rsa Test intermediate CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (1024 bit)
- Modulus:
- 00:cf:5f:2c:84:5d:36:f4:64:c4:92:14:fd:35:63:
- e9:92:ff:93:bd:0d:18:5f:b3:1d:8c:2f:28:8f:f3:
- 2f:8f:a1:4c:f1:1c:e4:15:66:3e:79:e7:aa:39:a0:
- 46:32:4b:69:67:6b:cb:72:aa:90:e3:d0:d1:36:55:
- c6:b5:49:39:7c:d2:16:97:8b:f2:6c:1b:83:ea:f3:
- e2:18:6a:06:9f:49:4f:72:fd:4a:b8:42:c5:aa:0a:
- 0d:2c:5c:74:97:d7:ee:4d:fc:3c:bf:1d:3f:ab:16:
- 23:7a:28:32:b8:5d:c8:29:72:55:d5:ea:f1:52:37:
- f1:9c:a7:6c:f4:6f:3b:79:69
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- AB:91:E6:2B:C9:C1:2E:7B:A0:65:F1:D4:8A:CE:03:4D:F4:7A:18:13
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha256WithRSAEncryption
- 10:3b:22:dc:6a:83:3f:41:ba:27:2c:2a:ba:71:6b:9f:a5:db:
- ad:5b:4f:e9:fc:27:c3:e7:76:8f:8a:39:c6:37:a0:15:c4:d4:
- df:97:d5:af:61:4d:ea:82:59:da:83:a9:5d:7c:91:36:13:c0:
- 6c:a8:b0:be:03:35:ef:2b:28:d3:40:fb:03:ba:f5:ff:d2:40:
- 64:5d:b6:5d:30:a7:fa:3c:58:60:3f:64:96:bf:8a:b4:a8:06:
- 06:e2:3f:86:0e:ea:d7:de:18:64:72:8e:c1:62:1f:a3:d0:fb:
- c5:19:9b:62:0d:ae:61:36:7d:46:15:01:98:00:b2:c7:25:51:
- 4d:f5:86:eb:a7:4b:15:4f:16:d2:04:f9:c4:b6:33:7a:9c:1d:
- 77:a4:88:72:8d:9b:84:24:e6:9e:d7:e9:56:3e:23:39:74:6d:
- cd:90:2f:d7:83:0d:87:c4:a6:5b:71:bc:bc:a2:55:9d:2d:a9:
- 3b:05:ab:ac:82:fb:b9:8c:7d:97:24:97:aa:d9:9f:f9:25:ba:
- 4e:90:1f:66:0f:cd:7e:8b:ea:df:73:83:9e:f6:cc:fc:03:47:
- fc:43:cf:d6:a1:51:4e:dd:eb:c4:38:ca:22:b5:b8:75:0f:6d:
- 88:9e:03:e3:5e:7f:85:8a:b4:e2:05:43:06:09:10:1e:24:93:
- ae:e6:10:ac
------BEGIN CERTIFICATE-----
-MIICgTCCAWmgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAgMR4wHAYDVQQDDBUyMDQ4
-IFJTQSBUZXN0IFJvb3QgQ0EwHhcNMTYwNDIyMjAyODQxWhcNMjYwNDIwMjAyODQx
-WjAoMSYwJAYDVQQDDB0xMDI0IHJzYSBUZXN0IGludGVybWVkaWF0ZSBDQTCBnzAN
-BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAz18shF029GTEkhT9NWPpkv+TvQ0YX7Md
-jC8oj/Mvj6FM8RzkFWY+eeeqOaBGMktpZ2vLcqqQ49DRNlXGtUk5fNIWl4vybBuD
-6vPiGGoGn0lPcv1KuELFqgoNLFx0l9fuTfw8vx0/qxYjeigyuF3IKXJV1erxUjfx
-nKds9G87eWkCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUq5Hm
-K8nBLnugZfHUis4DTfR6GBMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUA
-A4IBAQAQOyLcaoM/QbonLCq6cWufpdutW0/p/CfD53aPijnGN6AVxNTfl9WvYU3q
-glnag6ldfJE2E8BsqLC+AzXvKyjTQPsDuvX/0kBkXbZdMKf6PFhgP2SWv4q0qAYG
-4j+GDurX3hhkco7BYh+j0PvFGZtiDa5hNn1GFQGYALLHJVFN9Ybrp0sVTxbSBPnE
-tjN6nB13pIhyjZuEJOae1+lWPiM5dG3NkC/Xgw2HxKZbcby8olWdLak7Bausgvu5
-jH2XJJeq2Z/5JbpOkB9mD81+i+rfc4Oe9sz8A0f8Q8/WoVFO3evEOMoitbh1D22I
-ngPjXn+FirTiBUMGCRAeJJOu5hCs
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/10_year_validity.pem b/src/pki/testdata/ssl/certificates/10_year_validity.pem
deleted file mode 100644
index c69664d..0000000
--- a/src/pki/testdata/ssl/certificates/10_year_validity.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:6f
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Oct 30 00:00:00 2008 GMT
- Not After : Oct 29 00:00:00 2018 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:c1:ea:65:cb:12:00:be:84:08:b3:8e:d0:cc:b0:
- 6c:cb:d7:22:2b:f8:f6:7c:e2:17:c9:fd:75:7b:52:
- ce:57:24:36:2f:04:37:11:4a:9e:a0:f3:93:a9:5d:
- 5e:40:23:97:c1:d0:50:10:c7:7d:c6:3d:9e:e2:96:
- fb:63:ee:66:91:f1:df:6c:5e:ec:9d:22:5c:76:34:
- 83:ed:ff:cc:f0:96:19:78:07:d2:e0:91:50:97:1e:
- e7:af:94:19:3b:d8:00:d7:22:31:46:37:b2:56:19:
- 6e:31:48:ef:f8:d7:ae:d2:0c:50:22:6f:7d:ea:a7:
- cc:a1:ff:40:6e:60:91:1f:88:c8:a3:b3:a3:a1:08:
- 67:7e:7e:c4:77:75:46:90:e9:d1:3b:2c:ed:cd:a9:
- da:ff:8a:1e:ca:e4:ae:62:f2:a3:6b:e3:d8:50:4d:
- 45:d7:fa:d0:93:9d:21:3d:7f:ea:c8:ef:ab:d8:2a:
- 77:f1:84:98:2b:39:41:6c:72:4e:4f:0d:92:99:81:
- fc:80:4b:94:79:61:69:7c:cf:96:fc:e6:fa:53:d5:
- 9e:60:3f:51:d4:2b:52:1c:02:19:80:ae:a5:fb:2f:
- 02:06:f2:70:95:d8:c6:4a:38:c8:78:4a:6e:a0:07:
- cd:31:3b:8d:e0:1f:60:aa:c9:70:57:93:d2:4b:d4:
- e8:3b
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 9E:E1:B0:0F:6C:05:2E:6C:E6:37:0E:C9:A4:40:73:64:D5:E5:F6:13
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- ad:41:57:17:1a:be:16:cd:fd:74:01:b2:f1:f6:8c:5f:ee:7f:
- e8:a0:fc:33:d5:9e:c0:40:5d:56:79:90:1f:a4:3f:56:2c:79:
- 16:b8:9f:9a:17:77:9e:02:06:8c:d3:3e:fc:2e:0e:8c:13:f9:
- 6c:d4:cc:1a:24:dc:04:b5:1a:45:57:c3:cf:13:04:97:51:fc:
- 9b:ae:54:76:e6:24:c9:52:17:e9:24:36:ca:5f:7e:4d:13:f4:
- 14:f3:09:6b:ef:59:2f:9d:94:43:50:64:81:b0:ab:52:60:f5:
- 22:a9:2e:cf:a1:07:9b:52:e9:79:61:04:0d:2a:3f:5b:cb:32:
- 32:b9:ce:00:74:b1:8a:85:b2:2d:99:42:45:d8:e5:2a:e3:d9:
- 21:ff:26:5d:74:7d:f2:af:ae:28:02:0e:7a:36:70:5d:57:12:
- 71:1c:12:b7:5f:27:ce:df:0a:db:51:fb:ce:fb:1c:41:8f:52:
- 6d:e1:b9:69:a1:b9:7e:69:2a:85:1a:68:85:99:58:ec:ee:fd:
- 2a:55:62:2a:38:06:fa:20:3c:e5:28:9c:b9:d6:93:fd:48:b2:
- 15:24:e7:3e:84:7e:08:eb:1c:e8:47:cb:f7:e8:cc:7a:ed:79:
- 0a:9c:6c:14:43:7f:92:56:bf:ed:b7:bd:89:bc:85:be:db:89:
- ca:38:91:7b
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwm8wDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0wODEwMzAwMDAwMDBaFw0xODEwMjkwMDAwMDBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDB6mXLEgC+hAizjtDMsGzL1yIr+PZ84hfJ
-/XV7Us5XJDYvBDcRSp6g85OpXV5AI5fB0FAQx33GPZ7ilvtj7maR8d9sXuydIlx2
-NIPt/8zwlhl4B9LgkVCXHuevlBk72ADXIjFGN7JWGW4xSO/4167SDFAib33qp8yh
-/0BuYJEfiMijs6OhCGd+fsR3dUaQ6dE7LO3Nqdr/ih7K5K5i8qNr49hQTUXX+tCT
-nSE9f+rI76vYKnfxhJgrOUFsck5PDZKZgfyAS5R5YWl8z5b85vpT1Z5gP1HUK1Ic
-AhmArqX7LwIG8nCV2MZKOMh4Sm6gB80xO43gH2CqyXBXk9JL1Og7AgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBSe4bAPbAUubOY3DsmkQHNk1eX2EzAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEArUFXFxq+Fs39dAGy8faMX+5/6KD8M9WewEBdVnmQH6Q/Vix5Frifmhd3ngIG
-jNM+/C4OjBP5bNTMGiTcBLUaRVfDzxMEl1H8m65UduYkyVIX6SQ2yl9+TRP0FPMJ
-a+9ZL52UQ1BkgbCrUmD1Iqkuz6EHm1LpeWEEDSo/W8syMrnOAHSxioWyLZlCRdjl
-KuPZIf8mXXR98q+uKAIOejZwXVcScRwSt18nzt8K21H7zvscQY9SbeG5aaG5fmkq
-hRpohZlY7O79KlViKjgG+iA85SicudaT/UiyFSTnPoR+COsc6EfL9+jMeu15Cpxs
-FEN/kla/7be9ibyFvtuJyjiRew==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/11_year_validity.pem b/src/pki/testdata/ssl/certificates/11_year_validity.pem
deleted file mode 100644
index 837af75..0000000
--- a/src/pki/testdata/ssl/certificates/11_year_validity.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:70
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Oct 30 00:00:00 2014 GMT
- Not After : Oct 30 00:00:00 2025 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:9f:1f:36:a1:2e:5f:5a:92:b2:a7:41:8e:72:0f:
- e5:c3:aa:1c:80:cf:b9:81:fc:e5:be:d5:80:9b:ee:
- ae:c5:dc:69:d4:e4:e9:89:0a:1d:7a:f1:88:05:94:
- 56:f6:03:b7:8a:5d:6b:77:0b:23:53:0d:a0:0f:ba:
- 22:ee:70:9e:7e:f7:fb:76:27:94:9f:e6:13:c1:49:
- bf:08:f1:5c:78:39:d0:22:33:00:f7:9c:55:58:d3:
- e6:4d:8f:2b:90:26:f6:24:3f:40:8e:ee:04:01:64:
- 36:8b:63:3e:51:99:f2:bd:6e:8a:cb:77:9f:e5:e8:
- 25:46:ea:13:9c:3e:da:57:79:c1:fe:14:19:68:d2:
- 20:72:56:30:1b:f7:11:be:5f:0c:ce:5f:25:e3:28:
- 1d:bd:1d:50:5a:87:5f:f2:6d:e9:d6:76:0a:51:1c:
- ed:29:c0:a3:39:42:fa:cb:77:f0:f2:03:07:d1:a6:
- 52:fe:63:42:d4:a5:b5:53:fa:e2:88:85:9a:3f:58:
- 5b:cf:5e:09:be:c4:08:72:5c:01:0c:ef:57:9f:a6:
- b1:46:a0:52:43:ec:3c:4d:30:2c:64:37:07:4d:2b:
- 4e:d0:0c:d8:30:e4:88:cf:11:63:9e:3b:17:3b:67:
- be:22:99:36:d6:8e:96:84:ed:1d:8c:45:40:8f:63:
- 91:15
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 1C:D3:60:F9:10:20:E7:CD:03:D7:36:7B:EC:A5:7B:4D:CB:C4:F2:1A
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 7c:16:35:6d:b3:80:02:dc:0f:c8:28:bb:44:52:8c:0b:9b:5c:
- c6:36:8b:ce:f9:de:ab:99:ca:f6:b1:d6:f5:b6:ef:af:b9:40:
- 9c:ee:fb:98:d4:17:e2:18:15:5f:39:8f:e9:02:d5:5d:f6:c4:
- cb:bd:03:cb:54:3f:77:64:d8:fb:d4:60:b1:b9:9a:7d:b9:a0:
- 1b:22:5f:2d:46:fa:f7:93:96:7e:13:ae:89:b1:68:c2:a5:e6:
- 82:1f:af:08:67:36:d9:38:46:ef:33:3f:78:11:43:3b:04:9e:
- 9a:68:97:a3:dd:29:73:6c:60:28:9d:d5:1a:ca:e3:20:39:b3:
- eb:aa:ff:09:9d:7b:bc:18:a9:97:e1:58:7f:6b:1c:3b:50:8e:
- 4d:9c:25:8b:b0:26:34:5f:69:8b:04:56:7c:4d:d9:53:31:ea:
- c3:a2:30:20:4c:2a:8c:2f:f8:5b:b6:c2:3a:4f:b6:54:d7:6d:
- e5:21:f6:81:59:1b:f4:4d:82:30:c9:a4:ce:fe:c8:97:d0:fe:
- 48:c1:2d:89:96:96:23:e5:37:83:01:40:24:6d:7c:ab:29:9e:
- 75:e8:ba:c0:c6:4b:1d:85:06:87:83:cd:3b:ae:c8:c3:b3:a6:
- a8:77:54:b4:fb:32:42:22:b0:1d:08:ae:ba:a0:82:6a:56:db:
- 4c:fd:05:ba
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwnAwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0xNDEwMzAwMDAwMDBaFw0yNTEwMzAwMDAwMDBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCfHzahLl9akrKnQY5yD+XDqhyAz7mB/OW+
-1YCb7q7F3GnU5OmJCh168YgFlFb2A7eKXWt3CyNTDaAPuiLucJ5+9/t2J5Sf5hPB
-Sb8I8Vx4OdAiMwD3nFVY0+ZNjyuQJvYkP0CO7gQBZDaLYz5RmfK9borLd5/l6CVG
-6hOcPtpXecH+FBlo0iByVjAb9xG+XwzOXyXjKB29HVBah1/ybenWdgpRHO0pwKM5
-QvrLd/DyAwfRplL+Y0LUpbVT+uKIhZo/WFvPXgm+xAhyXAEM71efprFGoFJD7DxN
-MCxkNwdNK07QDNgw5IjPEWOeOxc7Z74imTbWjpaE7R2MRUCPY5EVAgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQc02D5ECDnzQPXNnvspXtNy8TyGjAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEAfBY1bbOAAtwPyCi7RFKMC5tcxjaLzvneq5nK9rHW9bbvr7lAnO77mNQX4hgV
-XzmP6QLVXfbEy70Dy1Q/d2TY+9RgsbmafbmgGyJfLUb695OWfhOuibFowqXmgh+v
-CGc22ThG7zM/eBFDOwSemmiXo90pc2xgKJ3VGsrjIDmz66r/CZ17vBipl+FYf2sc
-O1COTZwli7AmNF9piwRWfE3ZUzHqw6IwIEwqjC/4W7bCOk+2VNdt5SH2gVkb9E2C
-MMmkzv7Il9D+SMEtiZaWI+U3gwFAJG18qymedei6wMZLHYUGh4PNO67Iw7OmqHdU
-tPsyQiKwHQiuuqCCalbbTP0Fug==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/2029_globalsign_com_cert.pem b/src/pki/testdata/ssl/certificates/2029_globalsign_com_cert.pem
deleted file mode 100644
index cd0d988..0000000
--- a/src/pki/testdata/ssl/certificates/2029_globalsign_com_cert.pem
+++ /dev/null
@@ -1,31 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIFTjCCBDagAwIBAgILAQAAAAABJbCbWRgwDQYJKoZIhvcNAQELBQAwcDEmMCQG
-A1UECxMdRXh0ZW5kZWQgVmFsaWRhdGlvbiBTSEEyNTYgQ0ExEzARBgNVBAoTCkds
-b2JhbFNpZ24xMTAvBgNVBAMTKEdsb2JhbFNpZ24gRXh0ZW5kZWQgVmFsaWRhdGlv
-biBTSEEyNTYgQ0EwHhcNMDkxMjIxMDkwNTA4WhcNMTExMjIxMDkwNTA4WjCB4TEb
-MBkGA1UEDxMSVjEuMCwgQ2xhdXNlIDUuKGIpMRcwFQYDVQQFEw4wMTEwLTAxLTA0
-MDE4MTETMBEGCysGAQQBgjc8AgEDEwJKUDELMAkGA1UEBhMCSlAxDjAMBgNVBAgT
-BVRPS1lPMRAwDgYDVQQHEwdTaGlidXlhMRkwFwYDVQQJExAyMC0xIHNha3VyYWdh
-b2thMRIwEAYDVQQLEwlUZWNobmljYWwxGDAWBgNVBAoTD0dsb2JhbFNpZ24gSy5L
-LjEcMBoGA1UEAxMTMjAyOS5nbG9iYWxzaWduLmNvbTCCASIwDQYJKoZIhvcNAQEB
-BQADggEPADCCAQoCggEBAK1O+qRY8VTYBzAU+RkWEli4/0uTMtYJmR138O7iOrog
-3rRPfAZouTz9zZf8aKCp2S1VAHufuxzn1GhQRdlI6fnyDEjJoUpDo4mJbJFUghLt
-bwnFIsScSHdqaTKx0N99xRR9SJbEshfeIszBWTdLsUdBDzj64YiBg9qJMfPynPGC
-dbbf4crM/28jXaiaB/AJ8lv1AAstW8bps+y6ZHrZqG9i3llfetpe+4Dg9XqUQAD4
-0OBNIn8fD2CXk916wiN2JfnZjSOStTKSsy5zXlx5mgMFkSMtOkqbJDgbjcYmajA2
-YDnzlSbz9oYL4jv/NZ+A2aJzoqbP7tef88P/cN+/XXECAwEAAaOCAXUwggFxMB0G
-A1UdDgQWBBRZvNlp97Blu8g0xdLC7xd4pkceizAfBgNVHSMEGDAWgBSK/BQbPaNZ
-Z6U74XOSpmKRf+R4MDBUBggrBgEFBQcBAQRIMEYwRAYIKwYBBQUHMAKGOGh0dHA6
-Ly9zZWN1cmUuZ2xvYmFsc2lnbi5uZXQvY2FjZXJ0L1NIQTI1NmV4dGVuZHZhbDEu
-Y3J0MD8GA1UdHwQ4MDYwNKAyoDCGLmh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5uZXQv
-U0hBMjU2RXh0ZW5kVmFsMS5jcmwwCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCBPAw
-HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMEsGA1UdIAREMEIwQAYJKwYB
-BAGgMgEBMDMwMQYIKwYBBQUHAgEWJWh0dHA6Ly93d3cuZ2xvYmFsc2lnbi5uZXQv
-cmVwb3NpdG9yeS8wEQYJYIZIAYb4QgEBBAQDAgbAMA0GCSqGSIb3DQEBCwUAA4IB
-AQBCfnYnxZkYxp3amwmrrCAwac5SYVK4bDwxKtAHa9NbOGV6jAXFNIknttAuwy9I
-w7h4E5HHnZeDVZpWQ1ncmMqkMPfYruThLGx8GOMThigkMHOZLPx+WmB4alDKj9Ra
-SOISmiIHMfw7RKPZuL3dttzr477DVukILeUjfKeQ9dlQwAyeMNH840jrOmyVl54R
-nfFnOL7O46NqJBrC0cNp5bdyzVJ77qZ29r7e3+uJ61OeCzovImyPrgGDy96rhxaB
-ZjdXGKH2nlFQ3SpsH5QMVr8kn8a1etoIGexJ8L7FdSu3ywvyjaIPOANI/Y0gTlax
-vIkF1Dc5EejvaEMyVwrVTbzJ
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/2048-rsa-ee-by-1024-rsa-intermediate.pem b/src/pki/testdata/ssl/certificates/2048-rsa-ee-by-1024-rsa-intermediate.pem
deleted file mode 100644
index 1627541..0000000
--- a/src/pki/testdata/ssl/certificates/2048-rsa-ee-by-1024-rsa-intermediate.pem
+++ /dev/null
@@ -1,73 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 3 (0x3)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=1024 rsa Test intermediate CA
- Validity
- Not Before: Apr 22 20:28:41 2016 GMT
- Not After : Apr 20 20:28:41 2026 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:d6:a4:94:54:db:41:d7:ce:11:35:61:ec:32:eb:
- 6b:d7:17:92:f3:30:4c:43:67:f6:d1:7a:06:6c:7c:
- 15:79:35:78:38:ac:5e:4d:87:b7:34:cb:99:f8:4f:
- 15:f9:68:38:48:de:2e:dc:1e:67:82:f9:b6:f2:82:
- bc:13:68:8f:14:fa:11:45:db:f6:fb:43:14:59:c3:
- 16:e2:df:02:8a:a0:d3:9c:52:05:ff:1c:d1:2a:ab:
- e2:bd:a3:f6:6b:1c:cd:e1:2c:97:7b:7c:d1:21:7e:
- f1:0b:1c:39:4d:2f:63:fc:ae:f3:4a:8a:a1:04:67:
- 9b:3c:bd:2d:4d:05:41:d9:16:6f:54:21:56:4c:d3:
- 57:70:8b:4f:ad:68:96:f2:cb:84:81:c5:b1:e9:91:
- 5d:22:64:d7:1c:37:b9:f7:ee:52:66:3a:51:5f:80:
- e1:22:74:04:3f:6a:8b:c4:e5:be:f0:4e:26:96:44:
- e9:e8:62:3a:86:4b:60:b7:31:a6:85:11:b8:6d:e6:
- 14:3f:1e:ac:6c:7a:2a:64:12:e0:39:64:e3:c8:73:
- 4b:9b:3d:a3:11:71:8b:c0:9d:2e:43:f2:6b:1f:4c:
- 51:fb:8d:e7:25:a3:7b:9b:cb:4d:25:9b:d6:b3:44:
- 36:1c:85:9a:d0:7b:82:73:a5:12:03:1c:0a:0c:72:
- 5e:e3
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 36:3E:3F:89:C5:E9:92:06:AE:84:D9:26:55:01:41:CC:51:2F:AF:D2
- X509v3 Authority Key Identifier:
- keyid:AB:91:E6:2B:C9:C1:2E:7B:A0:65:F1:D4:8A:CE:03:4D:F4:7A:18:13
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- 1f:19:60:43:08:f6:5f:a8:4a:b3:22:3f:5a:b7:d9:50:e9:18:
- 3e:3e:f4:a4:84:43:63:61:92:8d:47:c4:6b:6b:a8:2e:c7:72:
- e8:9b:35:5f:28:88:02:23:ff:e3:69:3e:c7:e4:b5:f8:e2:fd:
- 8e:c4:2c:79:c3:d2:51:d6:83:75:d0:85:29:5a:68:0f:32:3d:
- be:bb:06:9b:8b:ab:2a:61:44:f3:da:65:4c:ba:0d:c7:fa:52:
- 7d:5b:70:44:b6:e4:84:78:bd:9f:ae:25:d3:b9:1f:4f:86:4d:
- 74:2d:cf:1d:80:dc:7b:c1:a1:91:d7:1e:1a:a5:01:59:e3:2a:
- 35:8a
------BEGIN CERTIFICATE-----
-MIIDAzCCAmygAwIBAgIBAzANBgkqhkiG9w0BAQsFADAoMSYwJAYDVQQDDB0xMDI0
-IHJzYSBUZXN0IGludGVybWVkaWF0ZSBDQTAeFw0xNjA0MjIyMDI4NDFaFw0yNjA0
-MjAyMDI4NDFaMGAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYw
-FAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQD
-DAkxMjcuMC4wLjEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDWpJRU
-20HXzhE1Yewy62vXF5LzMExDZ/bRegZsfBV5NXg4rF5Nh7c0y5n4TxX5aDhI3i7c
-HmeC+bbygrwTaI8U+hFF2/b7QxRZwxbi3wKKoNOcUgX/HNEqq+K9o/ZrHM3hLJd7
-fNEhfvELHDlNL2P8rvNKiqEEZ5s8vS1NBUHZFm9UIVZM01dwi0+taJbyy4SBxbHp
-kV0iZNccN7n37lJmOlFfgOEidAQ/aovE5b7wTiaWROnoYjqGS2C3MaaFEbht5hQ/
-HqxseipkEuA5ZOPIc0ubPaMRcYvAnS5D8msfTFH7jeclo3uby00lm9azRDYchZrQ
-e4JzpRIDHAoMcl7jAgMBAAGjgYAwfjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQ2
-Pj+JxemSBq6E2SZVAUHMUS+v0jAfBgNVHSMEGDAWgBSrkeYrycEue6Bl8dSKzgNN
-9HoYEzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocE
-fwAAATANBgkqhkiG9w0BAQsFAAOBgQAfGWBDCPZfqEqzIj9at9lQ6Rg+PvSkhENj
-YZKNR8Rra6gux3LomzVfKIgCI//jaT7H5LX44v2OxCx5w9JR1oN10IUpWmgPMj2+
-uwabi6sqYUTz2mVMug3H+lJ9W3BEtuSEeL2friXTuR9Phk10Lc8dgNx7waGR1x4a
-pQFZ4yo1ig==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/2048-rsa-ee-by-2048-rsa-intermediate.pem b/src/pki/testdata/ssl/certificates/2048-rsa-ee-by-2048-rsa-intermediate.pem
deleted file mode 100644
index 6a59709..0000000
--- a/src/pki/testdata/ssl/certificates/2048-rsa-ee-by-2048-rsa-intermediate.pem
+++ /dev/null
@@ -1,82 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 3 (0x3)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=2048 rsa Test intermediate CA
- Validity
- Not Before: Apr 22 20:28:41 2016 GMT
- Not After : Apr 20 20:28:41 2026 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:b4:72:22:05:11:c8:e7:3b:0d:1a:c2:7d:ce:14:
- 07:8f:89:df:ea:29:77:b5:55:dc:eb:69:23:46:81:
- fc:9f:8f:8b:ad:a1:f8:3b:a2:55:1e:d8:8d:ef:81:
- fd:5d:ae:2e:9c:bb:69:e4:78:80:4a:9b:52:83:e7:
- 4c:d0:32:f2:13:c8:ca:bc:71:4b:46:75:a7:b1:a1:
- aa:f3:0e:1c:06:3a:27:0e:2e:3c:43:7d:38:e7:4f:
- 03:bf:2b:a1:e3:60:31:bc:ff:31:88:d7:dc:83:8d:
- e7:3d:18:5e:b1:10:7f:fe:43:b6:83:c6:c4:3a:56:
- d0:f4:26:86:17:47:99:a0:4f:85:05:4e:5c:a5:66:
- 42:4c:14:28:57:ff:d3:04:d9:2b:88:aa:5a:05:99:
- 90:e7:50:af:4f:92:00:36:34:47:85:d0:82:63:80:
- 2e:1a:bf:c4:9f:6b:23:3b:b4:2b:23:7f:bf:09:31:
- da:23:06:0c:ab:73:e1:8d:38:a7:64:0d:1c:ef:18:
- ed:33:3b:8c:48:e7:ef:67:3d:08:cc:66:27:80:1c:
- 67:12:a2:a0:ec:fa:3f:84:d7:9b:60:73:fe:cb:6d:
- 73:c6:fc:f7:4c:75:50:3e:d9:9a:c4:9a:41:c5:af:
- c9:1c:d3:a1:b6:02:1f:61:cf:59:21:de:bb:92:3b:
- dc:ab
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 22:2C:2F:EC:CC:84:35:E7:25:3D:64:7C:7D:31:75:BD:B5:B1:B3:2A
- X509v3 Authority Key Identifier:
- keyid:5C:C2:71:76:C1:26:B1:0C:31:73:C8:92:D3:1E:01:12:4B:CC:5A:14
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- b3:02:f9:ad:d2:ce:96:da:ae:ab:a5:f7:08:0f:c1:53:78:6a:
- da:c1:2c:5b:97:df:ce:59:cb:98:a6:5a:a9:24:02:58:b8:c1:
- a5:72:a6:e5:8e:25:2b:9b:09:c6:97:f8:2b:ed:1f:70:e5:e2:
- 7b:f7:8d:42:0b:cb:8d:1b:d7:85:7c:ec:14:ac:27:6a:69:7c:
- d7:e0:4c:af:8f:1a:47:0b:e1:fb:34:8c:dc:09:30:a6:ff:01:
- 92:43:51:71:e2:a7:3b:55:ff:55:a3:a7:df:28:ef:d7:86:36:
- e1:8d:c9:5e:69:e7:54:85:9c:09:cc:c6:66:64:b4:41:e9:1d:
- 2d:7c:f2:91:dc:16:1b:f8:e6:b5:8d:14:1c:be:89:6f:da:85:
- b0:fd:15:d5:a1:d4:21:1d:0f:b5:7e:91:84:68:ab:4d:ff:90:
- b1:f0:ca:dc:6c:41:a7:f6:7d:3e:f5:e8:1f:24:78:ad:79:ce:
- 03:69:bd:81:e3:d9:c8:8e:48:93:6a:24:7d:57:46:f4:6d:54:
- 69:45:5a:86:8e:91:20:1f:e5:64:0d:f6:f4:b2:d2:df:c8:6d:
- 1c:cb:f0:e5:65:b0:3d:cd:56:66:66:ce:d6:0d:5b:09:99:5e:
- 34:58:6e:81:c7:fd:55:c8:c1:19:e8:cd:bd:df:74:1d:2a:96:
- 5a:d9:27:4d
------BEGIN CERTIFICATE-----
-MIIDhDCCAmygAwIBAgIBAzANBgkqhkiG9w0BAQsFADAoMSYwJAYDVQQDDB0yMDQ4
-IHJzYSBUZXN0IGludGVybWVkaWF0ZSBDQTAeFw0xNjA0MjIyMDI4NDFaFw0yNjA0
-MjAyMDI4NDFaMGAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYw
-FAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQD
-DAkxMjcuMC4wLjEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC0ciIF
-EcjnOw0awn3OFAePid/qKXe1VdzraSNGgfyfj4utofg7olUe2I3vgf1dri6cu2nk
-eIBKm1KD50zQMvITyMq8cUtGdaexoarzDhwGOicOLjxDfTjnTwO/K6HjYDG8/zGI
-19yDjec9GF6xEH/+Q7aDxsQ6VtD0JoYXR5mgT4UFTlylZkJMFChX/9ME2SuIqloF
-mZDnUK9PkgA2NEeF0IJjgC4av8SfayM7tCsjf78JMdojBgyrc+GNOKdkDRzvGO0z
-O4xI5+9nPQjMZieAHGcSoqDs+j+E15tgc/7LbXPG/PdMdVA+2ZrEmkHFr8kc06G2
-Ah9hz1kh3ruSO9yrAgMBAAGjgYAwfjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQi
-LC/szIQ15yU9ZHx9MXW9tbGzKjAfBgNVHSMEGDAWgBRcwnF2wSaxDDFzyJLTHgES
-S8xaFDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocE
-fwAAATANBgkqhkiG9w0BAQsFAAOCAQEAswL5rdLOltquq6X3CA/BU3hq2sEsW5ff
-zlnLmKZaqSQCWLjBpXKm5Y4lK5sJxpf4K+0fcOXie/eNQgvLjRvXhXzsFKwnaml8
-1+BMr48aRwvh+zSM3Akwpv8BkkNRceKnO1X/VaOn3yjv14Y24Y3JXmnnVIWcCczG
-ZmS0QekdLXzykdwWG/jmtY0UHL6Jb9qFsP0V1aHUIR0PtX6RhGirTf+QsfDK3GxB
-p/Z9PvXoHyR4rXnOA2m9gePZyI5Ik2okfVdG9G1UaUVaho6RIB/lZA329LLS38ht
-HMvw5WWwPc1WZmbO1g1bCZleNFhugcf9VcjBGejNvd90HSqWWtknTQ==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/2048-rsa-ee-by-768-rsa-intermediate.pem b/src/pki/testdata/ssl/certificates/2048-rsa-ee-by-768-rsa-intermediate.pem
deleted file mode 100644
index 0035d83..0000000
--- a/src/pki/testdata/ssl/certificates/2048-rsa-ee-by-768-rsa-intermediate.pem
+++ /dev/null
@@ -1,70 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 3 (0x3)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=768 rsa Test intermediate CA
- Validity
- Not Before: Apr 22 20:28:41 2016 GMT
- Not After : Apr 20 20:28:41 2026 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:ba:3a:68:2e:28:8c:de:30:76:83:38:b6:db:fc:
- 25:57:b3:f7:7d:49:63:3d:5a:0f:e4:d7:0a:d7:73:
- 62:2c:a7:1e:4b:a3:f6:82:d7:68:b0:77:83:f7:77:
- 1d:21:16:cf:86:8a:d3:ee:05:e8:85:0b:63:49:f5:
- 72:aa:80:00:43:36:12:6c:c2:31:07:e5:b8:d8:83:
- 4b:a7:ff:8a:06:58:c2:00:06:6b:b1:1e:b6:05:ae:
- 02:8a:0b:71:5a:37:70:70:10:7a:3a:fe:20:e6:6a:
- 24:fc:a5:93:78:fd:1d:26:bc:68:25:4a:19:41:9d:
- 33:bb:65:c1:71:aa:b5:0a:cf:44:7a:88:66:2b:98:
- d4:30:bd:dc:13:81:fe:c1:6e:04:38:d5:6c:cf:68:
- 68:fc:d9:16:0d:7a:4d:4b:df:60:2b:af:87:33:48:
- 6a:8a:11:f9:d8:a2:75:a8:d7:96:19:a2:68:3e:70:
- 2b:4b:b8:32:a0:f1:6d:91:11:ea:1c:de:43:bb:b6:
- 7b:ad:c5:bb:c2:76:9e:c2:39:60:fe:0b:c2:45:51:
- 5e:8f:15:10:9f:31:d6:41:18:37:3f:55:99:81:7c:
- 2b:49:f9:bd:b2:28:b5:fd:f2:88:11:2f:ba:83:2f:
- 44:55:14:94:f7:15:36:4c:c4:57:9f:8e:b9:52:d1:
- 28:8f
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 2D:03:2A:82:88:41:B4:78:09:AD:65:4D:E4:95:80:A0:48:F7:06:45
- X509v3 Authority Key Identifier:
- keyid:9E:E3:A7:83:B0:59:6F:91:9F:C7:D5:34:61:4A:1A:B3:66:C7:44:A0
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- 89:8c:20:d3:4b:32:9a:6b:de:02:e8:73:5d:90:5c:1f:63:80:
- 65:7e:08:9e:af:05:b0:41:d3:d9:44:5c:10:c4:4c:c9:93:d0:
- ce:55:da:1a:06:30:0a:d3:ff:42:87:2d:83:98:e4:64:68:5b:
- 5b:b5:df:2e:4f:1c:b8:7a:85:a9:3e:38:a8:b0:9a:fc:87:ec:
- 97:27:43:ff:35:0f:13:9f:84:22:a0:27:a7:d4:9a:df:f6:b5:
- b2:76:d3:71:02:f0
------BEGIN CERTIFICATE-----
-MIIC4TCCAmugAwIBAgIBAzANBgkqhkiG9w0BAQsFADAnMSUwIwYDVQQDDBw3Njgg
-cnNhIFRlc3QgaW50ZXJtZWRpYXRlIENBMB4XDTE2MDQyMjIwMjg0MVoXDTI2MDQy
-MDIwMjg0MVowYDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAU
-BgNVBAcMDU1vdW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExEjAQBgNVBAMM
-CTEyNy4wLjAuMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALo6aC4o
-jN4wdoM4ttv8JVez931JYz1aD+TXCtdzYiynHkuj9oLXaLB3g/d3HSEWz4aK0+4F
-6IULY0n1cqqAAEM2EmzCMQfluNiDS6f/igZYwgAGa7EetgWuAooLcVo3cHAQejr+
-IOZqJPylk3j9HSa8aCVKGUGdM7tlwXGqtQrPRHqIZiuY1DC93BOB/sFuBDjVbM9o
-aPzZFg16TUvfYCuvhzNIaooR+diidajXlhmiaD5wK0u4MqDxbZER6hzeQ7u2e63F
-u8J2nsI5YP4LwkVRXo8VEJ8x1kEYNz9VmYF8K0n5vbIotf3yiBEvuoMvRFUUlPcV
-NkzEV5+OuVLRKI8CAwEAAaOBgDB+MAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFC0D
-KoKIQbR4Ca1lTeSVgKBI9wZFMB8GA1UdIwQYMBaAFJ7jp4OwWW+Rn8fVNGFKGrNm
-x0SgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAPBgNVHREECDAGhwR/
-AAABMA0GCSqGSIb3DQEBCwUAA2EAiYwg00symmveAuhzXZBcH2OAZX4Inq8FsEHT
-2URcEMRMyZPQzlXaGgYwCtP/Qoctg5jkZGhbW7XfLk8cuHqFqT44qLCa/IfslydD
-/zUPE5+EIqAnp9Sa3/a1snbTcQLw
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/2048-rsa-ee-by-prime256v1-ecdsa-intermediate.pem b/src/pki/testdata/ssl/certificates/2048-rsa-ee-by-prime256v1-ecdsa-intermediate.pem
deleted file mode 100644
index 8c9bee9..0000000
--- a/src/pki/testdata/ssl/certificates/2048-rsa-ee-by-prime256v1-ecdsa-intermediate.pem
+++ /dev/null
@@ -1,67 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 3 (0x3)
- Signature Algorithm: ecdsa-with-SHA256
- Issuer: CN=prime256v1 ecdsa Test intermediate CA
- Validity
- Not Before: Apr 22 20:28:41 2016 GMT
- Not After : Apr 20 20:28:41 2026 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:cf:f1:3b:6f:93:35:88:59:85:00:af:e7:96:90:
- e2:58:0b:8f:f3:5f:b9:0c:10:47:8d:1d:18:0f:09:
- 1d:4e:45:cf:36:25:5c:f8:43:06:30:ce:af:39:5b:
- de:e9:c6:66:8b:e2:82:37:fc:8a:74:83:8b:8a:9f:
- 88:2d:39:15:f4:b2:56:de:50:3a:c2:d4:aa:7c:d6:
- a9:b4:1b:e4:4d:25:27:3a:40:bc:8d:07:c1:30:36:
- fe:22:4a:68:1f:04:75:46:58:1a:a4:18:ae:57:34:
- 93:57:04:65:fb:13:80:bd:04:91:8a:41:82:32:fd:
- d7:b5:b6:f1:cb:33:16:20:98:47:a5:b4:0e:69:3e:
- e2:07:70:d5:b6:47:9b:5a:49:44:6e:83:85:3f:b0:
- 7c:db:c7:46:5b:99:66:f9:10:5b:8e:88:ea:66:3e:
- 37:f2:0f:c9:06:8b:0e:3c:b7:fe:59:16:75:ff:3f:
- ec:61:94:73:31:84:67:4f:b4:06:70:58:3a:ea:32:
- 07:02:29:75:8c:d0:52:db:e3:0b:46:54:c6:5b:42:
- 43:34:a5:92:d8:10:81:15:ad:fd:cf:41:f6:f5:ef:
- 7d:8f:a0:40:f3:dc:64:17:d4:a3:83:63:9b:3f:af:
- af:28:ed:e7:ed:5d:6d:2b:16:61:4d:d3:c3:d6:15:
- 78:8d
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 52:FC:90:06:58:27:74:55:A2:49:6E:4E:BE:2B:81:E5:D1:E2:1A:14
- X509v3 Authority Key Identifier:
- keyid:0D:6B:B6:D7:DD:7F:CD:4E:AD:06:6B:22:E1:11:08:58:10:AB:16:2A
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: ecdsa-with-SHA256
- 30:44:02:20:72:99:1c:a8:f4:a6:3d:cc:36:4c:ad:46:1e:bb:
- e3:1e:d0:d5:a4:ec:99:e3:4a:f8:47:bd:7c:dd:12:cb:c0:d1:
- 02:20:64:c7:e9:b1:8e:bd:3d:59:31:17:a1:dd:b3:f9:11:ff:
- 83:f6:be:1d:46:d9:50:cf:b4:47:94:49:4a:06:94:2d
------BEGIN CERTIFICATE-----
-MIICyjCCAnGgAwIBAgIBAzAKBggqhkjOPQQDAjAwMS4wLAYDVQQDDCVwcmltZTI1
-NnYxIGVjZHNhIFRlc3QgaW50ZXJtZWRpYXRlIENBMB4XDTE2MDQyMjIwMjg0MVoX
-DTI2MDQyMDIwMjg0MVowYDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3Ju
-aWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExEjAQ
-BgNVBAMMCTEyNy4wLjAuMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
-AM/xO2+TNYhZhQCv55aQ4lgLj/NfuQwQR40dGA8JHU5FzzYlXPhDBjDOrzlb3unG
-Zovigjf8inSDi4qfiC05FfSyVt5QOsLUqnzWqbQb5E0lJzpAvI0HwTA2/iJKaB8E
-dUZYGqQYrlc0k1cEZfsTgL0EkYpBgjL917W28cszFiCYR6W0Dmk+4gdw1bZHm1pJ
-RG6DhT+wfNvHRluZZvkQW46I6mY+N/IPyQaLDjy3/lkWdf8/7GGUczGEZ0+0BnBY
-OuoyBwIpdYzQUtvjC0ZUxltCQzSlktgQgRWt/c9B9vXvfY+gQPPcZBfUo4Njmz+v
-ryjt5+1dbSsWYU3Tw9YVeI0CAwEAAaOBgDB+MAwGA1UdEwEB/wQCMAAwHQYDVR0O
-BBYEFFL8kAZYJ3RVokluTr4rgeXR4hoUMB8GA1UdIwQYMBaAFA1rttfdf81OrQZr
-IuERCFgQqxYqMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAPBgNVHREE
-CDAGhwR/AAABMAoGCCqGSM49BAMCA0cAMEQCIHKZHKj0pj3MNkytRh674x7Q1aTs
-meNK+Ee9fN0Sy8DRAiBkx+mxjr09WTEXod2z+RH/g/a+HUbZUM+0R5RJSgaULQ==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/2048-rsa-intermediate.pem b/src/pki/testdata/ssl/certificates/2048-rsa-intermediate.pem
deleted file mode 100644
index bfb349b..0000000
--- a/src/pki/testdata/ssl/certificates/2048-rsa-intermediate.pem
+++ /dev/null
@@ -1,75 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 3 (0x3)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=2048 RSA Test Root CA
- Validity
- Not Before: Apr 22 20:28:41 2016 GMT
- Not After : Apr 20 20:28:41 2026 GMT
- Subject: CN=2048 rsa Test intermediate CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:c2:7e:77:f6:cb:2f:92:95:d0:ee:f8:6e:01:9c:
- 60:80:9c:49:fc:44:ff:d4:86:11:9a:18:4c:ce:d4:
- 43:93:80:6a:f5:f3:a7:d6:88:a4:31:19:56:e1:17:
- 06:dc:ed:6f:7b:12:cf:2e:77:f1:fc:44:a7:46:86:
- 58:76:2c:86:e5:1f:8f:3c:60:cf:04:14:b5:58:04:
- 64:81:9e:9c:36:97:0e:a1:ad:fd:a0:58:80:c0:b7:
- 8e:49:16:d3:2e:9c:51:01:5a:13:0a:88:c5:35:b1:
- 2d:1f:11:fd:b2:b4:ce:b6:b3:90:c8:8e:5d:2e:45:
- ed:71:09:80:2e:99:76:f7:92:91:a8:ca:82:96:97:
- 85:8a:ea:d6:9b:ac:36:a9:6a:52:9d:f3:28:b4:3c:
- ff:22:75:fc:ad:3b:fc:6b:ee:9b:25:52:ec:63:6f:
- ce:eb:64:6d:3f:39:ab:76:bf:76:b1:df:80:eb:28:
- c5:b4:c8:cf:9a:2c:2a:76:c9:15:75:24:6a:fb:bf:
- 4d:43:38:d8:ca:0d:12:64:7c:84:99:82:4c:ff:15:
- 3b:e9:ef:d6:47:b4:99:93:c5:cb:47:45:df:a7:d5:
- f9:c5:b9:d1:ec:e4:4e:bd:13:89:3b:2f:36:32:ff:
- 0d:ed:a7:b3:88:ca:63:5b:57:58:9e:88:d6:97:6f:
- 1b:13
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- 5C:C2:71:76:C1:26:B1:0C:31:73:C8:92:D3:1E:01:12:4B:CC:5A:14
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha256WithRSAEncryption
- 6c:e3:16:4f:09:81:d2:61:e3:c1:39:35:9d:f3:1e:2c:4f:77:
- 40:26:e7:24:83:55:89:60:3d:6c:65:d4:9e:47:99:5f:09:ea:
- 1a:1a:16:59:8d:82:85:c8:e5:52:cc:e2:89:b1:3f:d7:e2:51:
- 43:5f:d1:ab:bc:5c:0d:22:c7:85:7f:95:db:a1:55:ee:7d:98:
- c9:41:ee:8b:69:c0:e6:8c:29:3d:fb:d1:66:1f:5a:79:2d:6a:
- 0e:6f:9d:84:60:56:3e:1f:7e:0a:b2:40:af:97:1d:a8:dd:92:
- d8:b9:57:ee:62:98:f9:f1:0f:32:3c:a0:bd:30:6d:cf:b7:7b:
- 17:83:fe:e8:09:7d:ca:a7:13:61:de:47:55:a5:d0:0d:0c:73:
- 75:8a:34:e3:91:19:1f:e7:09:07:2b:8d:67:5c:1a:bf:83:9f:
- d3:ca:dd:c5:28:3f:1e:0a:6b:7d:eb:da:60:bb:9a:6c:a2:30:
- 8d:f7:3a:01:56:ba:9e:e1:5b:7a:bb:8d:ba:ff:3c:67:a7:b0:
- 8c:09:42:52:03:ea:33:ff:e9:c4:c0:4f:7b:ad:48:26:f0:f1:
- 11:a8:ba:1d:30:6e:9b:6e:31:b7:70:8a:5d:e7:37:21:c4:f3:
- 38:96:8e:60:fb:19:d3:92:63:b8:8f:14:41:25:fb:62:29:34:
- 11:c5:a0:a2
------BEGIN CERTIFICATE-----
-MIIDBTCCAe2gAwIBAgIBAzANBgkqhkiG9w0BAQsFADAgMR4wHAYDVQQDDBUyMDQ4
-IFJTQSBUZXN0IFJvb3QgQ0EwHhcNMTYwNDIyMjAyODQxWhcNMjYwNDIwMjAyODQx
-WjAoMSYwJAYDVQQDDB0yMDQ4IHJzYSBUZXN0IGludGVybWVkaWF0ZSBDQTCCASIw
-DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMJ+d/bLL5KV0O74bgGcYICcSfxE
-/9SGEZoYTM7UQ5OAavXzp9aIpDEZVuEXBtztb3sSzy538fxEp0aGWHYshuUfjzxg
-zwQUtVgEZIGenDaXDqGt/aBYgMC3jkkW0y6cUQFaEwqIxTWxLR8R/bK0zrazkMiO
-XS5F7XEJgC6ZdveSkajKgpaXhYrq1pusNqlqUp3zKLQ8/yJ1/K07/GvumyVS7GNv
-zutkbT85q3a/drHfgOsoxbTIz5osKnbJFXUkavu/TUM42MoNEmR8hJmCTP8VO+nv
-1ke0mZPFy0dF36fV+cW50ezkTr0TiTsvNjL/De2ns4jKY1tXWJ6I1pdvGxMCAwEA
-AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUXMJxdsEmsQwxc8iS0x4B
-EkvMWhQwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQBs4xZPCYHS
-YePBOTWd8x4sT3dAJuckg1WJYD1sZdSeR5lfCeoaGhZZjYKFyOVSzOKJsT/X4lFD
-X9GrvFwNIseFf5XboVXufZjJQe6LacDmjCk9+9FmH1p5LWoOb52EYFY+H34KskCv
-lx2o3ZLYuVfuYpj58Q8yPKC9MG3Pt3sXg/7oCX3KpxNh3kdVpdANDHN1ijTjkRkf
-5wkHK41nXBq/g5/Tyt3FKD8eCmt969pgu5psojCN9zoBVrqe4Vt6u426/zxnp7CM
-CUJSA+oz/+nEwE97rUgm8PERqLodMG6bbjG3cIpd5zchxPM4lo5g+xnTkmO4jxRB
-JftiKTQRxaCi
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/2048-rsa-root.pem b/src/pki/testdata/ssl/certificates/2048-rsa-root.pem
deleted file mode 100644
index da02ece..0000000
--- a/src/pki/testdata/ssl/certificates/2048-rsa-root.pem
+++ /dev/null
@@ -1,75 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 14510385134211580431 (0xc95f3e6676ca420f)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=2048 RSA Test Root CA
- Validity
- Not Before: Apr 22 20:28:40 2016 GMT
- Not After : Apr 20 20:28:40 2026 GMT
- Subject: CN=2048 RSA Test Root CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:a0:0b:c9:40:3e:46:2d:4d:a1:38:35:9d:68:a5:
- 9d:3e:8f:59:39:ba:8f:a5:42:74:7d:e8:17:3b:da:
- 75:13:98:6b:73:f1:4b:a9:6d:5e:70:67:5c:7a:08:
- 92:58:b2:64:a1:05:2d:53:41:bd:ab:a8:31:73:d4:
- 56:07:ab:68:b9:39:39:52:65:6a:d7:1e:16:38:16:
- c5:12:3c:f0:2a:50:59:43:31:4a:d0:fa:51:13:17:
- 2a:89:84:42:91:1b:50:19:e8:ce:33:d8:a9:0a:ea:
- c1:9a:00:9e:c1:14:58:40:51:a4:20:50:1b:a1:93:
- b2:20:82:fe:80:b5:52:35:e7:e6:0b:72:b6:f5:a9:
- 39:67:67:45:4b:be:c6:c0:2a:cd:b7:ef:77:2d:14:
- c8:98:a5:8d:24:32:ed:db:1e:e4:6c:95:ee:a5:f0:
- ca:39:c2:df:dd:1c:8e:9f:cb:9c:c1:00:9c:ef:48:
- 09:97:a6:5a:d8:a8:3d:b9:15:95:35:6a:10:bf:40:
- 58:0e:4a:f4:d8:9a:8a:4f:3e:ee:48:4a:fe:5f:f6:
- 68:e2:75:3e:5a:32:73:c7:97:e7:0c:25:6f:a3:7d:
- db:08:3d:b4:d3:5d:2f:49:e7:59:1f:5a:b9:7e:dc:
- cb:e4:97:44:60:a1:d1:6b:2d:3c:79:1c:9f:b8:7b:
- 6a:1b
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- FD:5B:72:5F:28:F3:AB:A1:0F:21:EF:C3:F9:99:17:60:DC:BD:1F:BD
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha256WithRSAEncryption
- 54:78:5d:70:a0:c3:44:48:93:2b:af:9e:41:26:b0:3e:7d:c7:
- f0:ae:b1:37:d0:93:33:33:30:a6:d0:8c:20:cd:fe:fd:8b:1b:
- bf:1d:72:25:fd:56:11:56:63:c0:3c:b3:6b:db:db:65:28:4f:
- 6a:19:0b:2d:7c:1d:f1:46:50:14:9d:33:2e:75:dd:a7:45:15:
- 44:54:61:6e:96:8f:a2:c4:60:8d:4e:49:08:07:32:d2:a9:c3:
- c8:68:96:b2:50:85:3b:c2:4a:f9:e4:16:87:16:ea:47:4e:00:
- 50:43:4d:78:99:c7:aa:ea:23:2a:b8:b8:7a:97:de:ba:97:8d:
- e7:4b:74:e4:ed:53:5e:d1:5b:ed:5a:e2:95:a3:94:ad:d8:c4:
- b1:62:25:29:93:8b:77:27:8f:71:51:64:b7:56:d5:33:82:5e:
- 6f:39:56:cf:14:fd:1f:e2:46:9d:dd:2f:74:53:f1:27:87:f7:
- fe:b0:6c:47:db:ff:fa:7b:17:97:a8:b9:ba:07:1e:dc:b5:47:
- de:84:38:57:a4:47:6c:39:16:7f:1f:dd:63:99:1b:e1:28:90:
- aa:42:07:2c:b2:e7:be:ef:8c:ca:a5:1e:33:5c:e5:73:cf:ba:
- b3:33:d1:06:fb:c4:fa:f2:bc:f1:5c:92:69:fb:71:15:05:e3:
- 99:a6:ba:cb
------BEGIN CERTIFICATE-----
-MIIDBTCCAe2gAwIBAgIJAMlfPmZ2ykIPMA0GCSqGSIb3DQEBCwUAMCAxHjAcBgNV
-BAMMFTIwNDggUlNBIFRlc3QgUm9vdCBDQTAeFw0xNjA0MjIyMDI4NDBaFw0yNjA0
-MjAyMDI4NDBaMCAxHjAcBgNVBAMMFTIwNDggUlNBIFRlc3QgUm9vdCBDQTCCASIw
-DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKALyUA+Ri1NoTg1nWilnT6PWTm6
-j6VCdH3oFzvadROYa3PxS6ltXnBnXHoIkliyZKEFLVNBvauoMXPUVgeraLk5OVJl
-atceFjgWxRI88CpQWUMxStD6URMXKomEQpEbUBnozjPYqQrqwZoAnsEUWEBRpCBQ
-G6GTsiCC/oC1UjXn5gtytvWpOWdnRUu+xsAqzbfvdy0UyJiljSQy7dse5GyV7qXw
-yjnC390cjp/LnMEAnO9ICZemWtioPbkVlTVqEL9AWA5K9Niaik8+7khK/l/2aOJ1
-Ployc8eX5wwlb6N92wg9tNNdL0nnWR9auX7cy+SXRGCh0WstPHkcn7h7ahsCAwEA
-AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU/VtyXyjzq6EPIe/D+ZkX
-YNy9H70wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQBUeF1woMNE
-SJMrr55BJrA+fcfwrrE30JMzMzCm0Iwgzf79ixu/HXIl/VYRVmPAPLNr29tlKE9q
-GQstfB3xRlAUnTMudd2nRRVEVGFulo+ixGCNTkkIBzLSqcPIaJayUIU7wkr55BaH
-FupHTgBQQ014mceq6iMquLh6l966l43nS3Tk7VNe0VvtWuKVo5St2MSxYiUpk4t3
-J49xUWS3VtUzgl5vOVbPFP0f4kad3S90U/Enh/f+sGxH2//6exeXqLm6Bx7ctUfe
-hDhXpEdsORZ/H91jmRvhKJCqQgcssue+74zKpR4zXOVzz7qzM9EG+8T68rzxXJJp
-+3EVBeOZprrL
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/398_days_1_second_after_2020_09_01.pem b/src/pki/testdata/ssl/certificates/398_days_1_second_after_2020_09_01.pem
deleted file mode 100644
index 3fa2461..0000000
--- a/src/pki/testdata/ssl/certificates/398_days_1_second_after_2020_09_01.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:80
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Sep 2 00:00:00 2020 GMT
- Not After : Oct 5 00:00:01 2021 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:b3:2b:e0:a9:cb:53:7c:f1:9e:96:4e:70:a3:8d:
- 32:7b:bc:e0:2f:71:83:08:9f:e3:56:5c:dd:38:65:
- 2f:53:c0:0f:41:ef:cd:93:a9:bb:13:20:89:15:90:
- 3a:38:68:d3:2f:c7:15:b4:7c:ba:77:76:ac:f8:da:
- a9:bd:04:1b:5a:f6:b1:6c:36:71:fe:08:93:88:b3:
- 47:35:39:2b:19:be:e4:f4:1a:bb:30:ea:95:12:1c:
- cc:9f:17:be:6d:ab:0a:4e:91:61:78:46:da:3d:0a:
- 47:fb:64:a8:74:de:e4:71:f8:e9:da:80:66:d2:8b:
- 54:c4:39:2f:18:b2:03:a7:21:77:d0:a6:1f:c6:0c:
- 12:13:58:fb:ed:7b:b3:d8:8e:bc:79:b4:ff:7a:c7:
- 28:88:a0:c5:fb:35:05:29:54:9f:ed:a2:9d:d1:1b:
- 35:74:67:28:17:ba:2c:63:42:2e:ce:5e:0a:07:13:
- a6:d4:65:99:6b:b5:32:5f:05:74:ba:9c:f4:ef:b6:
- 00:79:db:0d:e4:06:a3:a4:c6:45:b8:46:26:aa:2e:
- 0a:42:53:e7:e6:23:7f:65:07:97:bc:c5:5c:df:b3:
- b1:9f:f9:a3:35:93:7e:68:20:74:89:5f:bb:b7:ed:
- af:b5:49:a7:fb:93:19:aa:e7:cc:39:5a:a9:4f:31:
- 3b:b7
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- DC:18:E7:85:9D:70:27:B8:2C:64:7D:A1:29:D9:F0:7C:BF:13:AA:A1
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 4b:d2:23:be:c9:f4:62:68:87:bf:f1:bd:1d:0f:05:ea:5f:95:
- f0:34:85:1b:8f:4e:fd:86:34:f9:96:d7:5a:9c:5e:01:53:2a:
- 47:d1:30:c5:1b:b7:29:f2:66:48:70:07:ac:75:77:ab:e7:b3:
- 84:62:9e:35:7d:8b:37:b2:20:d2:7f:82:88:ee:f9:71:e4:ea:
- bc:1d:4a:e7:22:a3:1c:c2:1a:33:e1:9b:fe:6e:0d:81:15:ef:
- 2f:9d:75:75:0c:cd:00:b3:e6:47:52:32:bd:a0:5c:66:95:1c:
- c6:5d:12:dd:f7:24:6e:fb:e9:2f:22:56:6d:3e:7d:41:9b:85:
- 63:94:f7:0d:0d:1b:f9:18:8a:f4:e1:fa:f0:d3:b7:a7:38:ca:
- e8:fc:09:c5:89:26:7d:95:db:66:23:38:3e:84:1b:23:08:8a:
- af:4d:0e:89:12:6a:d3:d6:9f:7c:2c:ce:da:c3:c8:67:ff:d7:
- 49:15:2f:26:0b:85:86:48:dc:2a:77:99:6f:47:86:3b:cb:30:
- 36:95:ea:58:b4:c2:cd:b2:86:10:5f:03:a3:3d:de:ad:3e:7b:
- 5f:7e:32:ae:67:fc:b8:23:10:ff:05:73:93:c5:a7:62:47:fa:
- a0:a1:80:04:13:94:0c:29:ca:97:71:87:9f:78:2e:88:29:c8:
- 3c:d6:a3:66
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwoAwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0yMDA5MDIwMDAwMDBaFw0yMTEwMDUwMDAwMDFaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzK+Cpy1N88Z6WTnCjjTJ7vOAvcYMIn+NW
-XN04ZS9TwA9B782TqbsTIIkVkDo4aNMvxxW0fLp3dqz42qm9BBta9rFsNnH+CJOI
-s0c1OSsZvuT0Grsw6pUSHMyfF75tqwpOkWF4Rto9Ckf7ZKh03uRx+OnagGbSi1TE
-OS8YsgOnIXfQph/GDBITWPvte7PYjrx5tP96xyiIoMX7NQUpVJ/top3RGzV0ZygX
-uixjQi7OXgoHE6bUZZlrtTJfBXS6nPTvtgB52w3kBqOkxkW4RiaqLgpCU+fmI39l
-B5e8xVzfs7Gf+aM1k35oIHSJX7u37a+1Saf7kxmq58w5WqlPMTu3AgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTcGOeFnXAnuCxkfaEp2fB8vxOqoTAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEAS9Ijvsn0YmiHv/G9HQ8F6l+V8DSFG49O/YY0+ZbXWpxeAVMqR9EwxRu3KfJm
-SHAHrHV3q+ezhGKeNX2LN7Ig0n+CiO75ceTqvB1K5yKjHMIaM+Gb/m4NgRXvL511
-dQzNALPmR1IyvaBcZpUcxl0S3fckbvvpLyJWbT59QZuFY5T3DQ0b+RiK9OH68NO3
-pzjK6PwJxYkmfZXbZiM4PoQbIwiKr00OiRJq09affCzO2sPIZ//XSRUvJguFhkjc
-KneZb0eGO8swNpXqWLTCzbKGEF8Doz3erT57X34yrmf8uCMQ/wVzk8WnYkf6oKGA
-BBOUDCnKl3GHn3guiCnIPNajZg==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/398_days_after_2020_09_01.pem b/src/pki/testdata/ssl/certificates/398_days_after_2020_09_01.pem
deleted file mode 100644
index dd0eb1d..0000000
--- a/src/pki/testdata/ssl/certificates/398_days_after_2020_09_01.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:7f
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Sep 2 00:00:00 2020 GMT
- Not After : Oct 5 00:00:00 2021 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:eb:66:84:1c:5d:7d:8a:59:9e:47:64:b9:09:e4:
- 1a:6b:6b:e6:4f:ba:59:2e:a4:3c:57:cb:1a:11:85:
- bd:38:08:e0:95:30:c9:02:64:16:35:f0:57:b5:6d:
- 2a:7e:54:0c:74:cf:0d:ae:19:ec:f5:01:47:57:0d:
- ef:70:f7:a2:35:49:65:e5:95:78:ad:18:00:7f:ec:
- 94:94:95:c8:b2:86:7c:ec:b4:d3:b2:dd:c2:91:03:
- 31:ee:46:d7:d8:ee:fd:ce:6f:cc:33:fa:ba:bb:2d:
- a2:a2:0c:1b:1b:84:2e:3c:8d:a1:5b:24:25:72:5b:
- d9:b4:67:98:0e:42:6b:39:f7:5a:da:c8:8f:6d:96:
- a2:1a:ce:35:a8:d5:e8:1b:14:97:f2:5b:12:eb:94:
- 53:a1:7a:8e:3e:67:2f:d7:91:72:8b:12:cf:ba:d5:
- 54:9e:64:92:4c:f2:fc:00:ee:86:4e:df:55:71:25:
- c0:88:9d:86:9e:9a:46:b8:f1:31:da:dc:78:fd:46:
- 27:1c:ec:6b:84:14:25:8a:b2:c0:ce:75:8f:e9:84:
- 27:97:75:f4:91:96:e7:c0:c9:8d:de:f2:f4:fb:fd:
- 69:5e:6b:59:50:63:bb:d5:91:cc:7c:1b:0f:c2:b2:
- d3:56:b4:e8:77:c6:57:fb:af:7a:af:16:f9:5b:32:
- 42:ff
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 4A:78:19:FB:FB:DF:5F:98:EC:91:7A:31:C5:98:4C:B6:8D:50:DE:AD
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 3f:f0:e3:6b:61:f7:d4:c3:61:1f:94:8a:b9:bc:a0:1a:0c:26:
- 2b:df:86:c5:39:93:a0:d0:77:9f:61:a8:ab:c1:1d:10:29:4b:
- 2e:33:e2:97:46:00:c6:27:69:4c:fc:29:b6:4d:72:ab:4c:9a:
- 96:e9:07:d2:d1:29:8e:39:ab:7c:00:c2:fb:7d:d7:04:f4:3e:
- 00:f7:cd:16:38:21:82:79:ac:ce:f1:4c:56:fd:cc:64:8c:88:
- 32:45:cb:3f:40:bb:86:0e:a3:9e:c1:f8:9a:16:57:ec:27:0e:
- ee:cc:01:6f:d7:1d:2d:54:a9:99:6d:83:b0:b3:41:e6:57:31:
- e1:65:a9:d2:a9:ea:ed:6f:e7:05:73:f1:27:ee:4b:da:56:c6:
- af:ef:83:53:4e:7a:f9:54:00:58:11:c2:b2:bb:d8:7a:6c:1d:
- 3a:0c:92:cf:23:12:ee:41:d3:32:24:36:0e:0e:e4:5a:d2:1b:
- 6d:dc:85:93:ae:78:40:b3:11:81:d7:c9:e4:56:42:de:94:79:
- da:6a:a6:fa:e3:71:96:17:51:f3:80:b2:d1:50:3a:98:9c:89:
- 20:cc:4e:0a:69:ac:34:5c:53:aa:f7:4c:c3:cb:4b:fc:f7:bd:
- 7c:82:53:9f:0c:3e:b8:ff:cb:72:44:2d:7e:19:24:a1:39:d0:
- 6c:ab:db:38
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwn8wDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0yMDA5MDIwMDAwMDBaFw0yMTEwMDUwMDAwMDBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDrZoQcXX2KWZ5HZLkJ5Bpra+ZPulkupDxX
-yxoRhb04COCVMMkCZBY18Fe1bSp+VAx0zw2uGez1AUdXDe9w96I1SWXllXitGAB/
-7JSUlciyhnzstNOy3cKRAzHuRtfY7v3Ob8wz+rq7LaKiDBsbhC48jaFbJCVyW9m0
-Z5gOQms591rayI9tlqIazjWo1egbFJfyWxLrlFOheo4+Zy/XkXKLEs+61VSeZJJM
-8vwA7oZO31VxJcCInYaemka48THa3Hj9Ricc7GuEFCWKssDOdY/phCeXdfSRlufA
-yY3e8vT7/Wlea1lQY7vVkcx8Gw/CstNWtOh3xlf7r3qvFvlbMkL/AgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBRKeBn7+99fmOyRejHFmEy2jVDerTAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEAP/Dja2H31MNhH5SKubygGgwmK9+GxTmToNB3n2Goq8EdEClLLjPil0YAxidp
-TPwptk1yq0yalukH0tEpjjmrfADC+33XBPQ+APfNFjghgnmszvFMVv3MZIyIMkXL
-P0C7hg6jnsH4mhZX7CcO7swBb9cdLVSpmW2DsLNB5lcx4WWp0qnq7W/nBXPxJ+5L
-2lbGr++DU056+VQAWBHCsrvYemwdOgySzyMS7kHTMiQ2Dg7kWtIbbdyFk654QLMR
-gdfJ5FZC3pR52mqm+uNxlhdR84Cy0VA6mJyJIMxOCmmsNFxTqvdMw8tL/Pe9fIJT
-nww+uP/LckQtfhkkoTnQbKvbOA==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/399_days_after_2020_09_01.pem b/src/pki/testdata/ssl/certificates/399_days_after_2020_09_01.pem
deleted file mode 100644
index 2f6b7e1..0000000
--- a/src/pki/testdata/ssl/certificates/399_days_after_2020_09_01.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:7e
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Sep 2 00:00:00 2020 GMT
- Not After : Oct 6 00:00:00 2021 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:b3:19:fd:7b:2a:81:6b:16:2b:d8:73:ac:db:4e:
- bb:d0:06:76:4f:f7:fc:73:62:d9:28:03:00:f2:75:
- 28:56:b1:fe:d1:3f:08:11:f3:d8:77:62:38:85:89:
- 72:4a:e1:7d:4b:72:c6:5f:01:49:ae:c3:b9:55:47:
- 2e:45:78:43:20:ae:ed:b6:5d:7a:66:33:f1:98:3e:
- fe:6b:a9:08:35:3c:54:a2:03:73:58:87:06:58:72:
- fc:26:65:26:fe:78:fe:69:2e:26:55:63:e3:db:74:
- 52:e0:6e:a4:b6:64:ab:76:54:77:88:c5:62:47:ff:
- 44:0c:84:43:07:9b:86:de:3b:cc:2e:fb:46:f7:33:
- ab:bd:00:b0:2e:1b:e3:55:15:ea:e6:c8:f5:3b:1a:
- e2:79:12:38:32:4a:17:73:71:b9:dc:ea:43:57:98:
- 9a:87:c0:fb:2d:b4:16:26:b4:a9:83:5e:b4:7e:73:
- 21:93:6d:f2:35:b2:29:9d:eb:6f:90:54:45:1a:97:
- 59:b5:6f:33:bb:17:79:b0:52:80:6a:2a:b9:6a:32:
- 90:24:cf:9b:f1:32:82:cf:c8:fb:20:f2:a6:52:31:
- dc:43:3a:ef:18:7f:3a:3c:65:b5:d5:9a:27:3c:10:
- 2b:95:8a:d4:ec:e6:24:f0:29:bb:4c:d2:f3:a7:c7:
- d1:33
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- CE:66:88:69:91:5E:F1:19:19:04:4B:56:72:0D:A7:79:68:0A:FB:B5
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- a9:34:16:bb:1e:64:c5:e7:34:0a:cd:73:cc:e5:2f:82:4d:ab:
- d5:3e:e5:c5:ca:f3:7f:93:6a:bb:1e:1c:99:b8:6d:20:e8:2b:
- 49:98:f5:1a:ae:09:fa:cf:fc:ed:ed:b9:4e:84:4d:44:01:ce:
- 66:bb:cc:e8:26:04:94:ed:67:d9:fc:d9:68:41:09:ab:86:4d:
- 6f:81:0f:75:6a:c9:b4:26:8d:01:32:4b:2c:03:1b:bd:40:75:
- 1c:93:b3:cc:e8:66:28:e2:c9:a9:55:14:29:88:54:a3:b4:70:
- 89:0a:a0:75:a4:36:b0:b2:7b:30:cd:74:9f:d5:83:32:f7:85:
- 95:c0:c1:e4:da:e2:84:fe:52:ce:2d:6d:31:16:a9:d3:90:c4:
- a5:3c:cc:ba:94:6b:b1:c2:02:d5:b7:c3:b1:3e:2c:05:ab:f6:
- 6e:58:bb:e3:43:5f:f1:06:e6:44:d8:d7:48:2b:c5:b2:5f:6d:
- ea:81:51:2f:15:6f:8a:15:4c:84:70:71:0b:db:8b:a8:72:49:
- 4a:c2:d5:87:7f:98:c8:b4:ef:3c:34:c9:f4:8d:04:9f:1a:22:
- 31:7f:e4:70:15:04:e2:ee:6b:38:cf:75:c3:a8:e8:66:87:0a:
- a5:31:a0:4c:ea:d0:04:b3:0b:12:fe:25:53:b9:83:f7:13:55:
- 00:03:17:84
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwn4wDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0yMDA5MDIwMDAwMDBaFw0yMTEwMDYwMDAwMDBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzGf17KoFrFivYc6zbTrvQBnZP9/xzYtko
-AwDydShWsf7RPwgR89h3YjiFiXJK4X1LcsZfAUmuw7lVRy5FeEMgru22XXpmM/GY
-Pv5rqQg1PFSiA3NYhwZYcvwmZSb+eP5pLiZVY+PbdFLgbqS2ZKt2VHeIxWJH/0QM
-hEMHm4beO8wu+0b3M6u9ALAuG+NVFermyPU7GuJ5EjgyShdzcbnc6kNXmJqHwPst
-tBYmtKmDXrR+cyGTbfI1simd62+QVEUal1m1bzO7F3mwUoBqKrlqMpAkz5vxMoLP
-yPsg8qZSMdxDOu8Yfzo8ZbXVmic8ECuVitTs5iTwKbtM0vOnx9EzAgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTOZohpkV7xGRkES1ZyDad5aAr7tTAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEAqTQWux5kxec0Cs1zzOUvgk2r1T7lxcrzf5Nqux4cmbhtIOgrSZj1Gq4J+s/8
-7e25ToRNRAHOZrvM6CYElO1n2fzZaEEJq4ZNb4EPdWrJtCaNATJLLAMbvUB1HJOz
-zOhmKOLJqVUUKYhUo7RwiQqgdaQ2sLJ7MM10n9WDMveFlcDB5NrihP5Szi1tMRap
-05DEpTzMupRrscIC1bfDsT4sBav2bli740Nf8QbmRNjXSCvFsl9t6oFRLxVvihVM
-hHBxC9uLqHJJSsLVh3+YyLTvPDTJ9I0EnxoiMX/kcBUE4u5rOM91w6joZocKpTGg
-TOrQBLMLEv4lU7mD9xNVAAMXhA==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/39_months_after_2015_04.pem b/src/pki/testdata/ssl/certificates/39_months_after_2015_04.pem
deleted file mode 100644
index d138fef..0000000
--- a/src/pki/testdata/ssl/certificates/39_months_after_2015_04.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:71
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Apr 2 00:00:00 2015 GMT
- Not After : Jul 2 00:00:00 2018 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:b1:08:9f:8e:29:52:ed:20:71:ae:d9:44:93:65:
- c3:11:58:97:29:dc:e2:4a:54:65:ec:d9:0d:e3:75:
- 9c:52:7d:2e:35:2a:cb:88:70:de:8f:ce:f4:23:13:
- 16:1d:de:7d:e4:fb:7b:8a:1e:ba:a4:6a:38:bb:c5:
- 89:69:49:17:9b:74:88:a8:c5:ee:65:4c:f1:96:82:
- 8e:30:42:e7:9a:9b:9b:e1:e6:5e:b0:c5:3f:46:09:
- fe:26:3a:02:b7:f9:a6:4b:43:0e:ed:80:d8:76:12:
- e3:34:38:ad:b6:a8:cb:58:9f:0e:77:67:ff:91:77:
- d5:63:0f:4c:2b:d4:35:22:68:08:8e:9b:5c:a6:77:
- 51:ef:e7:3e:e0:8f:53:8f:13:c7:21:fa:c5:98:15:
- 26:89:08:c0:c8:57:05:56:f5:52:b5:d3:6c:a6:a3:
- 5f:3c:3c:b1:91:98:ec:0d:85:8c:d5:ad:18:30:9d:
- 2e:91:f3:92:62:ae:9e:6d:64:4e:9d:ac:c8:88:30:
- 64:d7:2f:d2:c3:46:fb:fd:f3:a2:69:9f:f0:ee:ef:
- 6a:eb:e4:58:a2:37:16:46:e2:d0:53:ed:33:1e:ad:
- 6a:5f:b2:7e:c8:e9:1d:c8:12:ed:ac:35:9d:ba:26:
- 82:ea:04:be:e1:a5:34:fc:ee:ed:25:a6:6d:cb:fa:
- e5:3f
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 1C:10:69:49:A1:B6:07:E4:28:8A:C2:C9:80:88:80:93:91:5C:71:2E
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 36:a1:f7:1b:af:3c:49:fd:af:13:19:74:79:cf:77:20:92:bb:
- e7:76:5e:ca:12:be:e2:8d:15:6c:45:5d:70:2a:84:05:c8:b8:
- f8:3d:34:76:0b:e7:25:5e:f0:dd:fd:08:00:b9:31:b5:72:9b:
- 18:e2:da:7a:bc:da:1a:b8:aa:80:37:ad:51:03:9f:c6:fb:e5:
- 06:13:3e:41:d5:e2:9b:dd:16:43:ad:35:3a:c3:7a:7f:2c:35:
- 6a:cb:bd:74:b9:57:93:1f:24:57:78:3c:9a:5c:f1:51:bd:5d:
- cf:ae:f2:a9:cb:81:b4:20:93:b4:fd:bf:a3:68:68:ff:15:12:
- 2f:05:1e:54:02:ce:4b:ee:38:c7:5b:fa:01:75:f7:bc:2f:08:
- ae:6e:d1:ba:20:5b:03:74:80:89:75:80:9f:b5:50:3d:14:b6:
- 94:73:84:2d:38:68:0b:d8:89:8f:42:bc:9b:e1:ed:e6:df:2f:
- 15:ba:ec:41:c9:1e:dc:94:cc:4a:af:68:34:76:92:50:d8:45:
- 47:57:6a:9e:c5:6f:20:59:9e:e6:f1:d8:56:bd:ee:9a:71:7e:
- 4f:08:3c:dc:9b:51:cd:62:a8:c7:7f:df:21:76:6a:90:0c:15:
- de:6f:b0:04:3b:16:4f:cc:19:7c:06:d0:55:0a:dd:cb:0d:08:
- 59:d6:ac:a3
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwnEwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0xNTA0MDIwMDAwMDBaFw0xODA3MDIwMDAwMDBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCxCJ+OKVLtIHGu2USTZcMRWJcp3OJKVGXs
-2Q3jdZxSfS41KsuIcN6PzvQjExYd3n3k+3uKHrqkaji7xYlpSRebdIioxe5lTPGW
-go4wQueam5vh5l6wxT9GCf4mOgK3+aZLQw7tgNh2EuM0OK22qMtYnw53Z/+Rd9Vj
-D0wr1DUiaAiOm1ymd1Hv5z7gj1OPE8ch+sWYFSaJCMDIVwVW9VK102ymo188PLGR
-mOwNhYzVrRgwnS6R85Jirp5tZE6drMiIMGTXL9LDRvv986Jpn/Du72rr5FiiNxZG
-4tBT7TMerWpfsn7I6R3IEu2sNZ26JoLqBL7hpTT87u0lpm3L+uU/AgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQcEGlJobYH5CiKwsmAiICTkVxxLjAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEANqH3G688Sf2vExl0ec93IJK753ZeyhK+4o0VbEVdcCqEBci4+D00dgvnJV7w
-3f0IALkxtXKbGOLaerzaGriqgDetUQOfxvvlBhM+QdXim90WQ601OsN6fyw1asu9
-dLlXkx8kV3g8mlzxUb1dz67yqcuBtCCTtP2/o2ho/xUSLwUeVALOS+44x1v6AXX3
-vC8Irm7RuiBbA3SAiXWAn7VQPRS2lHOELThoC9iJj0K8m+Ht5t8vFbrsQcke3JTM
-Sq9oNHaSUNhFR1dqnsVvIFme5vHYVr3umnF+Twg83JtRzWKox3/fIXZqkAwV3m+w
-BDsWT8wZfAbQVQrdyw0IWdasow==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/39_months_based_on_last_day.pem b/src/pki/testdata/ssl/certificates/39_months_based_on_last_day.pem
deleted file mode 100644
index 84b9ce1..0000000
--- a/src/pki/testdata/ssl/certificates/39_months_based_on_last_day.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:75
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Feb 28 00:00:00 2017 GMT
- Not After : May 30 00:00:00 2020 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:a6:fd:ce:a0:e7:68:1f:ec:48:5a:cd:9f:73:ee:
- 17:d1:c5:ba:eb:d4:56:72:9a:d4:1d:94:fc:36:3c:
- cb:05:d2:e8:7d:93:3a:49:34:03:3c:d2:72:98:3f:
- 95:45:78:1a:0f:c9:be:70:f7:ab:91:9a:24:83:e8:
- 46:10:80:52:af:06:a8:3c:8a:f5:f7:ea:4c:25:81:
- f1:7a:62:ff:91:14:34:e7:ae:26:2d:c3:55:a8:46:
- 34:33:1f:ee:87:4d:93:ae:7d:9b:8a:4c:85:02:c0:
- 7e:b0:4c:a1:eb:cb:71:a3:9d:e2:0e:2b:b9:cb:80:
- 76:3d:58:4c:1d:5f:0a:de:cc:14:f8:69:2f:ce:b5:
- 43:55:f4:c6:8b:24:d6:55:4d:0d:74:62:d1:7f:e1:
- 95:4c:c8:fc:99:ae:9a:1b:e7:07:d8:48:7c:f7:3c:
- 1d:8a:8c:f0:20:99:88:ed:ca:aa:cc:c1:44:1e:10:
- e8:95:05:ca:a2:0d:93:c0:40:bf:1f:bc:5b:b5:da:
- 19:63:96:04:57:32:99:0f:f3:f7:f1:a3:ed:df:6c:
- 32:df:94:71:41:fe:e7:9a:d8:c5:ab:24:6d:26:82:
- eb:aa:2b:aa:6d:67:90:d4:cf:d9:11:e6:87:e1:b6:
- e7:24:c0:47:7a:ee:55:ba:87:a9:2f:b0:93:79:a4:
- 08:09
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- E7:91:F7:13:99:EC:1E:9C:81:43:8A:DA:A5:63:5B:93:3C:79:07:B6
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 7e:4c:5b:7e:32:78:be:ee:68:bc:8c:de:1d:0e:d1:86:44:8d:
- 40:d5:42:2e:79:89:18:88:b7:9c:b5:f8:b4:89:ef:f7:8a:dc:
- 32:3d:6c:a9:b7:ef:2a:86:1f:72:fb:aa:7d:86:10:4f:b0:3e:
- 7b:39:6f:ab:2b:f2:20:d9:dc:44:82:8b:d7:54:9c:a4:6f:9f:
- bd:12:35:5d:29:56:53:b1:83:92:aa:bd:ea:3c:89:16:76:e9:
- 15:64:5d:c5:cb:60:b2:ba:7c:88:c6:66:b3:8a:13:1a:f1:a8:
- 03:c4:7b:8c:eb:11:86:e6:2f:28:87:55:6f:7d:94:e5:e7:a6:
- 8f:1d:3a:b7:fa:de:da:53:54:27:8f:0f:14:f6:34:91:11:8a:
- 29:18:a7:01:3c:b3:a0:94:57:6b:d2:c3:b7:e8:51:60:43:c3:
- 40:20:5c:ee:be:04:27:4f:b9:0f:16:84:5d:91:43:ae:03:6d:
- cd:81:f9:e4:ad:ff:ed:09:86:6f:4c:bb:3b:5f:6a:ef:2e:e9:
- 2f:fc:ae:d8:b7:cd:f2:0e:49:ef:46:ef:7e:42:33:3b:c2:00:
- a1:59:8e:07:6b:17:51:c2:62:1b:3e:92:70:58:7d:c9:22:4a:
- 2d:f6:b9:49:87:93:b5:10:61:34:1c:65:ef:6b:de:30:7d:3f:
- 68:45:cf:7a
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwnUwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0xNzAyMjgwMDAwMDBaFw0yMDA1MzAwMDAwMDBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCm/c6g52gf7EhazZ9z7hfRxbrr1FZymtQd
-lPw2PMsF0uh9kzpJNAM80nKYP5VFeBoPyb5w96uRmiSD6EYQgFKvBqg8ivX36kwl
-gfF6Yv+RFDTnriYtw1WoRjQzH+6HTZOufZuKTIUCwH6wTKHry3GjneIOK7nLgHY9
-WEwdXwrezBT4aS/OtUNV9MaLJNZVTQ10YtF/4ZVMyPyZrpob5wfYSHz3PB2KjPAg
-mYjtyqrMwUQeEOiVBcqiDZPAQL8fvFu12hljlgRXMpkP8/fxo+3fbDLflHFB/uea
-2MWrJG0mguuqK6ptZ5DUz9kR5ofhtuckwEd67lW6h6kvsJN5pAgJAgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTnkfcTmewenIFDitqlY1uTPHkHtjAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEAfkxbfjJ4vu5ovIzeHQ7RhkSNQNVCLnmJGIi3nLX4tInv94rcMj1sqbfvKoYf
-cvuqfYYQT7A+ezlvqyvyINncRIKL11ScpG+fvRI1XSlWU7GDkqq96jyJFnbpFWRd
-xctgsrp8iMZms4oTGvGoA8R7jOsRhuYvKIdVb32U5eemjx06t/re2lNUJ48PFPY0
-kRGKKRinATyzoJRXa9LDt+hRYEPDQCBc7r4EJ0+5DxaEXZFDrgNtzYH55K3/7QmG
-b0y7O19q7y7pL/yu2LfN8g5J70bvfkIzO8IAoVmOB2sXUcJiGz6ScFh9ySJKLfa5
-SYeTtRBhNBxl72veMH0/aEXPeg==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/40_months_after_2015_04.pem b/src/pki/testdata/ssl/certificates/40_months_after_2015_04.pem
deleted file mode 100644
index c07d121..0000000
--- a/src/pki/testdata/ssl/certificates/40_months_after_2015_04.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:72
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Apr 2 00:00:00 2015 GMT
- Not After : Aug 1 00:00:00 2018 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:a5:0f:16:e1:16:18:40:db:ce:15:87:a1:aa:d3:
- 1f:49:59:b6:38:e8:5d:f3:ed:f3:b0:29:04:c3:57:
- ea:5a:7c:22:6b:ce:77:db:de:4d:d9:04:51:5c:f8:
- 06:74:fb:ec:d2:87:b2:96:fe:b4:b3:34:81:ae:9f:
- a1:a1:c0:49:4b:d7:e8:bf:68:91:d4:57:f2:8d:1d:
- 0d:f5:92:c5:b5:fd:0b:bb:5f:51:8a:94:26:11:36:
- 3c:56:5e:c4:86:2b:1a:f5:df:1e:02:f5:e4:50:da:
- 76:b2:66:89:10:42:45:76:4a:32:09:fc:f7:13:2e:
- cb:ff:e3:94:3e:80:64:0e:c7:84:b2:a1:8e:01:a0:
- 30:4f:c0:bd:f3:20:36:7b:f6:b1:26:d7:c5:4f:17:
- c9:be:fc:2a:aa:e7:bc:0c:57:71:82:a0:3e:39:15:
- 0d:c5:95:79:44:1a:dd:ec:d3:e0:cc:ae:32:c8:00:
- 26:ed:da:f3:74:6e:5e:02:7e:02:bb:c1:a7:9c:d9:
- 3d:03:dc:b9:97:99:24:f3:72:58:8b:1d:0f:87:c2:
- b2:15:2f:f9:27:77:6b:4d:d4:7d:1d:12:56:07:b9:
- ad:bf:e8:93:af:92:fb:b3:83:76:f8:a8:7f:e3:d4:
- 28:a8:20:55:3c:66:39:8a:e9:0e:71:a1:78:9a:3b:
- da:e5
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 0C:63:B5:F8:FD:66:75:20:B7:40:9F:23:75:69:F4:49:D2:0E:BE:10
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 38:26:c3:05:63:87:a9:a0:3f:de:4a:c5:05:59:9a:3c:fe:7a:
- b4:9b:83:a3:97:7a:55:9f:c1:41:8a:e6:dc:ee:5f:38:73:c6:
- ab:23:ce:20:1b:a0:02:b4:1f:d3:02:41:d4:7d:0f:c5:ee:ad:
- c2:e0:ba:3a:1a:1e:55:c6:24:6a:ac:f7:6a:fd:01:92:f6:fe:
- 7e:e2:d1:d8:0a:8c:4e:fe:50:54:66:00:6f:fa:c7:fb:4d:29:
- f7:8c:ac:37:0b:a4:24:94:ce:e4:65:6b:85:0f:c2:df:92:bb:
- 7f:39:62:c3:49:30:c9:59:e4:6b:8b:97:9c:71:17:58:c0:fd:
- b9:3b:cc:f5:d0:d9:cd:e7:6d:ac:7a:b4:5e:df:45:23:e9:77:
- 4a:f5:dc:79:7f:a4:89:e9:26:bc:49:81:f1:52:76:b0:f5:2e:
- 64:3f:ab:cc:e7:8b:92:6e:3d:d5:05:90:13:fc:8f:1f:26:4e:
- 2f:2b:e9:a2:3f:39:88:98:36:b0:62:7c:65:3c:58:5c:c0:0f:
- 98:97:fa:ac:6d:f2:27:94:20:1c:d8:5b:e2:17:95:8b:5b:c1:
- c4:74:b2:90:b3:98:6e:be:79:bf:b1:c6:94:4a:7c:56:de:f3:
- 99:04:cf:5c:5b:2a:79:8a:87:6e:68:17:4c:b4:19:42:8b:b6:
- cd:2f:ea:cf
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwnIwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0xNTA0MDIwMDAwMDBaFw0xODA4MDEwMDAwMDBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQClDxbhFhhA284Vh6Gq0x9JWbY46F3z7fOw
-KQTDV+pafCJrznfb3k3ZBFFc+AZ0++zSh7KW/rSzNIGun6GhwElL1+i/aJHUV/KN
-HQ31ksW1/Qu7X1GKlCYRNjxWXsSGKxr13x4C9eRQ2nayZokQQkV2SjIJ/PcTLsv/
-45Q+gGQOx4SyoY4BoDBPwL3zIDZ79rEm18VPF8m+/Cqq57wMV3GCoD45FQ3FlXlE
-Gt3s0+DMrjLIACbt2vN0bl4CfgK7waec2T0D3LmXmSTzcliLHQ+HwrIVL/knd2tN
-1H0dElYHua2/6JOvkvuzg3b4qH/j1CioIFU8ZjmK6Q5xoXiaO9rlAgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQMY7X4/WZ1ILdAnyN1afRJ0g6+EDAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEAOCbDBWOHqaA/3krFBVmaPP56tJuDo5d6VZ/BQYrm3O5fOHPGqyPOIBugArQf
-0wJB1H0Pxe6twuC6OhoeVcYkaqz3av0Bkvb+fuLR2AqMTv5QVGYAb/rH+00p94ys
-NwukJJTO5GVrhQ/C35K7fzliw0kwyVnka4uXnHEXWMD9uTvM9dDZzedtrHq0Xt9F
-I+l3SvXceX+kiekmvEmB8VJ2sPUuZD+rzOeLkm491QWQE/yPHyZOLyvpoj85iJg2
-sGJ8ZTxYXMAPmJf6rG3yJ5QgHNhb4heVi1vBxHSykLOYbr55v7HGlEp8Vt7zmQTP
-XFsqeYqHbmgXTLQZQou2zS/qzw==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/60_months_after_2012_07.pem b/src/pki/testdata/ssl/certificates/60_months_after_2012_07.pem
deleted file mode 100644
index 4ca5f52..0000000
--- a/src/pki/testdata/ssl/certificates/60_months_after_2012_07.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:73
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Oct 30 00:00:00 2014 GMT
- Not After : Sep 30 00:00:00 2019 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:d4:fa:d1:99:fe:2d:7a:82:e4:72:af:58:76:bb:
- bb:bc:04:03:a2:57:54:75:1b:f3:48:11:aa:eb:97:
- 05:02:8c:71:49:ec:b5:5f:a6:d0:18:c5:60:e1:04:
- 59:3f:64:a2:96:ca:45:8b:37:82:14:7f:d9:07:fb:
- 97:0d:64:9d:7f:ce:19:56:0e:dc:2c:e0:40:7f:86:
- a0:ad:9b:bf:f9:84:1e:7f:23:22:e8:35:0a:fb:ee:
- 9a:ce:2b:00:48:53:71:86:b2:31:3e:b2:30:0d:79:
- d7:05:56:72:e3:95:98:c3:1e:bf:cc:cf:90:54:8e:
- 2d:39:c8:2f:bb:3c:05:41:36:4a:2c:b7:c1:0d:4a:
- f6:44:02:da:d4:bf:84:9f:66:d7:30:bd:82:b1:92:
- f1:73:4f:53:4d:c8:d3:74:73:42:69:bc:0b:18:e0:
- 03:51:b7:85:ca:71:74:a1:17:5d:37:22:43:86:c0:
- 92:25:98:a9:83:49:b9:d2:97:f8:15:eb:58:d2:13:
- bd:4a:39:33:07:50:db:cb:fc:49:8b:ae:ab:df:42:
- 14:c1:92:dd:93:da:c4:7a:c9:f8:4d:c2:d8:87:b6:
- e4:f5:0e:92:09:4a:6d:f5:30:53:14:07:ea:c5:7c:
- ef:93:84:09:25:e0:c7:8a:17:84:a6:76:91:1d:64:
- 24:73
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 29:81:75:1D:D1:AE:EE:50:EB:91:E2:57:31:51:5D:3A:0E:99:10:1C
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 8d:b4:56:2d:06:e1:b6:68:00:d4:02:56:5f:a2:6e:b1:1a:58:
- b7:66:98:05:9b:9a:56:20:db:17:f1:7a:5e:32:e5:7a:88:ef:
- dd:ec:92:b3:41:02:f9:d6:ae:17:85:49:8d:e9:df:e4:69:ee:
- c5:74:40:d4:3a:63:4d:99:cb:65:3c:f3:cc:83:82:c0:fe:3c:
- bf:80:df:bf:7b:33:f1:b5:2e:04:b0:9f:31:9f:40:23:1c:5b:
- 8f:dd:b1:7a:e9:4e:2c:81:ff:77:00:e8:04:f4:99:54:0d:be:
- 0d:a8:44:71:9f:b7:62:ce:99:b3:10:c3:47:34:e1:42:e4:d6:
- 07:e1:66:91:ae:0a:62:f8:b5:35:0b:ab:08:c8:da:be:5b:74:
- 03:5c:ad:1e:2c:82:bf:9a:b1:3e:88:ed:47:26:18:ba:07:31:
- 93:aa:ed:00:3f:89:c3:61:a6:7d:23:49:f3:47:4b:c5:72:cc:
- ff:64:21:c7:5e:81:65:f7:6b:8f:03:a2:e9:b9:b7:b6:be:ed:
- bf:51:4b:64:96:98:37:15:06:5f:17:33:85:46:15:e1:d7:04:
- 65:e4:65:f1:ef:60:01:ca:82:70:7f:69:71:2f:fc:ca:8e:64:
- b3:a4:0e:74:31:e7:61:28:89:48:b3:29:b6:66:52:69:f7:e1:
- 1e:51:8d:09
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwnMwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0xNDEwMzAwMDAwMDBaFw0xOTA5MzAwMDAwMDBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDU+tGZ/i16guRyr1h2u7u8BAOiV1R1G/NI
-EarrlwUCjHFJ7LVfptAYxWDhBFk/ZKKWykWLN4IUf9kH+5cNZJ1/zhlWDtws4EB/
-hqCtm7/5hB5/IyLoNQr77prOKwBIU3GGsjE+sjANedcFVnLjlZjDHr/Mz5BUji05
-yC+7PAVBNkost8ENSvZEAtrUv4SfZtcwvYKxkvFzT1NNyNN0c0JpvAsY4ANRt4XK
-cXShF103IkOGwJIlmKmDSbnSl/gV61jSE71KOTMHUNvL/EmLrqvfQhTBkt2T2sR6
-yfhNwtiHtuT1DpIJSm31MFMUB+rFfO+ThAkl4MeKF4SmdpEdZCRzAgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQpgXUd0a7uUOuR4lcxUV06DpkQHDAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEAjbRWLQbhtmgA1AJWX6JusRpYt2aYBZuaViDbF/F6XjLleojv3eySs0EC+dau
-F4VJjenf5GnuxXRA1DpjTZnLZTzzzIOCwP48v4Dfv3sz8bUuBLCfMZ9AIxxbj92x
-eulOLIH/dwDoBPSZVA2+DahEcZ+3Ys6ZsxDDRzThQuTWB+Fmka4KYvi1NQurCMja
-vlt0A1ytHiyCv5qxPojtRyYYugcxk6rtAD+Jw2GmfSNJ80dLxXLM/2Qhx16BZfdr
-jwOi6bm3tr7tv1FLZJaYNxUGXxczhUYV4dcEZeRl8e9gAcqCcH9pcS/8yo5ks6QO
-dDHnYSiJSLMptmZSaffhHlGNCQ==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/61_months_after_2012_07.pem b/src/pki/testdata/ssl/certificates/61_months_after_2012_07.pem
deleted file mode 100644
index 8f9d360..0000000
--- a/src/pki/testdata/ssl/certificates/61_months_after_2012_07.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:74
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Oct 30 00:00:00 2014 GMT
- Not After : Nov 3 00:00:00 2019 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:a0:11:b9:0c:12:b6:cc:db:8a:b7:7f:a4:c9:26:
- b9:44:ef:2f:8f:9a:57:00:d2:21:c0:a3:6d:0d:88:
- 59:12:62:19:ba:71:6c:c6:98:cc:44:d3:de:aa:88:
- bc:64:38:cc:78:13:a5:5d:76:7a:4b:c8:d2:8e:67:
- 64:61:81:61:4f:1e:69:11:ca:ec:c1:80:d0:ea:21:
- a4:ab:56:8b:e5:74:e8:0d:05:f8:6a:dd:3b:c6:73:
- c4:3f:b7:f1:ab:c1:55:f7:df:3f:7f:ba:36:d9:c1:
- 6b:2d:6e:d7:93:96:87:9e:ee:00:57:d5:59:50:6d:
- 82:9b:ab:2a:52:7e:c0:b8:be:34:8f:08:6b:ad:c6:
- b5:90:0c:80:ff:3f:68:05:c9:a5:5c:9a:ba:8c:49:
- 4a:d4:b9:87:42:1d:47:42:ff:17:8f:df:55:e1:b9:
- f9:14:6b:08:8f:4f:de:65:59:71:1c:51:1a:58:56:
- 96:de:ca:d1:09:0d:c1:0a:b0:19:74:45:46:38:16:
- 7b:1a:0a:32:e0:35:34:60:83:c4:63:cb:53:34:2d:
- 4b:f7:c8:8e:88:75:13:95:70:9f:ff:cf:f0:10:64:
- b3:6c:22:ca:13:3e:65:fb:a2:fb:0c:01:80:b7:64:
- d8:ee:0b:4c:18:fc:02:9d:fd:6c:ba:ba:46:cb:f8:
- 05:d5
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 60:ED:A6:AB:09:02:D8:2C:54:39:D5:78:E5:E1:A1:09:44:B0:55:21
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- bc:7e:07:ce:f1:cf:0a:be:b5:27:bf:42:34:cf:8e:c4:19:e0:
- 60:c2:f9:e2:a8:e8:73:b9:75:30:5b:34:6a:3d:5a:95:b8:e7:
- 58:88:5e:48:62:70:06:7c:51:d8:17:d2:fb:4d:2c:48:4f:23:
- 2a:c3:b9:ca:0c:6a:f6:a9:d8:8c:b1:78:a6:45:9d:d3:d7:03:
- 1a:b5:64:c9:fc:92:05:ea:ea:da:e7:97:b8:67:53:d0:3b:46:
- d8:00:28:16:ff:15:84:18:ac:c2:96:cf:df:f8:c6:bb:39:d2:
- 79:9a:69:26:1e:c5:99:4b:ca:b4:bc:ca:a0:53:e0:11:43:e9:
- b7:b6:8c:d8:8b:88:cd:4d:10:9b:12:18:0e:80:d1:ab:b3:24:
- a4:f3:3b:ea:21:14:79:4b:64:17:49:0a:cd:1c:e4:fd:1b:11:
- 79:46:ac:fe:c6:aa:73:12:95:fd:61:0d:b0:64:53:5c:6f:ce:
- 0a:fe:07:2d:4d:42:5b:9e:dc:4a:19:dd:19:28:ee:bf:05:e2:
- 62:61:6f:8b:83:50:17:6e:3f:31:5c:f2:d2:7d:fa:60:c3:03:
- b9:ca:b5:16:d8:de:bb:00:09:9c:50:88:f4:00:f1:2b:00:f8:
- 1b:34:40:94:94:2c:25:63:b1:84:96:00:3d:76:48:2d:f4:77:
- 34:36:37:87
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwnQwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0xNDEwMzAwMDAwMDBaFw0xOTExMDMwMDAwMDBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCgEbkMErbM24q3f6TJJrlE7y+PmlcA0iHA
-o20NiFkSYhm6cWzGmMxE096qiLxkOMx4E6VddnpLyNKOZ2RhgWFPHmkRyuzBgNDq
-IaSrVovldOgNBfhq3TvGc8Q/t/GrwVX33z9/ujbZwWstbteTloee7gBX1VlQbYKb
-qypSfsC4vjSPCGutxrWQDID/P2gFyaVcmrqMSUrUuYdCHUdC/xeP31XhufkUawiP
-T95lWXEcURpYVpbeytEJDcEKsBl0RUY4FnsaCjLgNTRgg8Rjy1M0LUv3yI6IdROV
-cJ//z/AQZLNsIsoTPmX7ovsMAYC3ZNjuC0wY/AKd/Wy6ukbL+AXVAgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBRg7aarCQLYLFQ51Xjl4aEJRLBVITAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEAvH4HzvHPCr61J79CNM+OxBngYML54qjoc7l1MFs0aj1albjnWIheSGJwBnxR
-2BfS+00sSE8jKsO5ygxq9qnYjLF4pkWd09cDGrVkyfySBerq2ueXuGdT0DtG2AAo
-Fv8VhBiswpbP3/jGuznSeZppJh7FmUvKtLzKoFPgEUPpt7aM2IuIzU0QmxIYDoDR
-q7MkpPM76iEUeUtkF0kKzRzk/RsReUas/saqcxKV/WENsGRTXG/OCv4HLU1CW57c
-ShndGSjuvwXiYmFvi4NQF24/MVzy0n36YMMDucq1FtjeuwAJnFCI9ADxKwD4GzRA
-lJQsJWOxhJYAPXZILfR3NDY3hw==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/768-rsa-ee-by-1024-rsa-intermediate.pem b/src/pki/testdata/ssl/certificates/768-rsa-ee-by-1024-rsa-intermediate.pem
deleted file mode 100644
index 725ca3a..0000000
--- a/src/pki/testdata/ssl/certificates/768-rsa-ee-by-1024-rsa-intermediate.pem
+++ /dev/null
@@ -1,58 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 1 (0x1)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=1024 rsa Test intermediate CA
- Validity
- Not Before: Apr 22 20:28:41 2016 GMT
- Not After : Apr 20 20:28:41 2026 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (768 bit)
- Modulus:
- 00:a0:a2:fc:c2:cd:0e:5f:d9:64:7d:c9:6e:26:bc:
- 04:5f:cb:c4:fb:01:66:5d:76:82:4b:60:11:12:0f:
- 44:b4:e8:1e:41:86:df:63:22:34:1c:4f:da:80:40:
- 51:fb:9d:a0:77:1e:af:dd:dd:dc:36:e4:67:d9:2f:
- 45:56:48:38:58:d8:df:59:21:c6:64:01:eb:7a:e3:
- 4f:ce:cc:e3:fe:53:98:12:86:c6:76:d1:c2:fb:06:
- 0e:0c:b0:80:d1:c6:bf
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 85:06:8C:BA:66:3C:B8:5C:2D:85:7B:B2:22:A5:73:48:0F:1B:B7:55
- X509v3 Authority Key Identifier:
- keyid:AB:91:E6:2B:C9:C1:2E:7B:A0:65:F1:D4:8A:CE:03:4D:F4:7A:18:13
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- 4b:ce:06:5e:cf:bb:09:25:5f:43:b4:9d:08:f5:0e:85:99:d7:
- b9:d7:c0:51:3e:8e:d2:ad:66:41:6a:a1:c1:cf:f4:0b:de:3c:
- 9b:00:58:7a:7f:da:3f:18:8c:68:c3:35:29:42:94:31:2c:03:
- a9:88:33:2b:cf:8b:5a:1e:36:8e:a9:ad:30:1f:14:2e:3a:81:
- eb:c2:48:97:e4:8e:4c:63:8f:51:c2:12:4c:5b:17:bd:b5:18:
- 26:d2:92:35:06:bb:3a:40:1b:b2:3a:35:a5:21:77:15:b4:2a:
- a6:89:9f:54:7c:73:21:f0:e0:ab:44:46:e6:c2:0a:ed:c8:22:
- 79:ad
------BEGIN CERTIFICATE-----
-MIICWzCCAcSgAwIBAgIBATANBgkqhkiG9w0BAQsFADAoMSYwJAYDVQQDDB0xMDI0
-IHJzYSBUZXN0IGludGVybWVkaWF0ZSBDQTAeFw0xNjA0MjIyMDI4NDFaFw0yNjA0
-MjAyMDI4NDFaMGAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYw
-FAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQD
-DAkxMjcuMC4wLjEwfDANBgkqhkiG9w0BAQEFAANrADBoAmEAoKL8ws0OX9lkfclu
-JrwEX8vE+wFmXXaCS2AREg9EtOgeQYbfYyI0HE/agEBR+52gdx6v3d3cNuRn2S9F
-Vkg4WNjfWSHGZAHreuNPzszj/lOYEobGdtHC+wYODLCA0ca/AgMBAAGjgYAwfjAM
-BgNVHRMBAf8EAjAAMB0GA1UdDgQWBBSFBoy6Zjy4XC2Fe7IipXNIDxu3VTAfBgNV
-HSMEGDAWgBSrkeYrycEue6Bl8dSKzgNN9HoYEzAdBgNVHSUEFjAUBggrBgEFBQcD
-AQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOBgQBL
-zgZez7sJJV9DtJ0I9Q6Fmde518BRPo7SrWZBaqHBz/QL3jybAFh6f9o/GIxowzUp
-QpQxLAOpiDMrz4taHjaOqa0wHxQuOoHrwkiX5I5MY49RwhJMWxe9tRgm0pI1Brs6
-QBuyOjWlIXcVtCqmiZ9UfHMh8OCrREbmwgrtyCJ5rQ==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/768-rsa-ee-by-2048-rsa-intermediate.pem b/src/pki/testdata/ssl/certificates/768-rsa-ee-by-2048-rsa-intermediate.pem
deleted file mode 100644
index c661a13..0000000
--- a/src/pki/testdata/ssl/certificates/768-rsa-ee-by-2048-rsa-intermediate.pem
+++ /dev/null
@@ -1,68 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 1 (0x1)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=2048 rsa Test intermediate CA
- Validity
- Not Before: Apr 22 20:28:41 2016 GMT
- Not After : Apr 20 20:28:41 2026 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (768 bit)
- Modulus:
- 00:c3:4d:cf:b1:46:75:00:21:75:d4:6b:10:dd:a8:
- 51:9e:90:ea:3a:5f:58:b5:23:a4:d9:30:bc:cb:08:
- 31:bc:2d:88:64:37:56:67:f8:4b:c5:0f:9f:49:11:
- bd:d7:c1:9e:07:46:cb:3b:fa:70:7a:7d:6f:51:3c:
- 10:81:33:f8:59:98:ed:81:1c:5a:bd:6b:ee:71:97:
- c8:0f:c7:a7:9a:d5:e0:3c:fb:ee:3a:0c:7f:69:63:
- 61:cf:e2:de:44:b1:d7
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 9B:F2:E7:0F:32:A4:54:B7:06:99:EC:CF:8B:5F:E1:BE:E7:09:32:8C
- X509v3 Authority Key Identifier:
- keyid:5C:C2:71:76:C1:26:B1:0C:31:73:C8:92:D3:1E:01:12:4B:CC:5A:14
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- 4f:8d:a9:be:61:eb:90:8f:59:29:fe:15:40:1d:2d:27:0b:74:
- 84:c0:0b:d6:c0:2a:23:bb:ed:4f:4d:8e:fa:f9:3e:8c:6d:c0:
- ba:41:0c:b0:77:c8:eb:b5:72:ac:3e:42:07:f2:a5:8e:98:81:
- 82:91:d2:80:63:5c:32:fb:4c:45:8f:70:d2:52:07:26:9a:3f:
- 28:40:10:4d:71:28:eb:78:03:d1:ed:1e:14:c4:fd:74:49:4a:
- 37:ad:59:e6:29:ef:bc:ae:8a:e1:8d:24:7c:34:7b:63:d4:53:
- 6f:68:f7:08:b3:fe:d3:a1:05:d6:44:d2:37:fe:98:83:3d:15:
- 70:a7:c6:d2:05:ea:72:21:eb:46:3f:3a:d8:6f:0e:7d:7d:75:
- fc:ad:59:7c:28:d3:98:4b:ae:7b:d5:2e:b9:9c:ab:c5:ca:98:
- 13:bd:1a:0d:63:9c:74:a6:f1:2e:16:2d:ba:b6:71:3e:22:6f:
- b5:b9:e4:63:c4:c3:98:1d:31:76:ef:18:48:52:16:d1:8a:89:
- 5f:a6:25:d6:c0:58:05:0d:57:6d:fa:03:54:87:ae:3f:d5:f0:
- a0:a2:30:e1:67:da:09:5c:8b:43:14:6a:b8:31:43:c9:7f:1f:
- 7b:73:3e:52:b2:d5:a7:cf:ce:ea:e8:88:ea:4c:0c:d3:41:7c:
- c2:66:d6:3c
------BEGIN CERTIFICATE-----
-MIIC3DCCAcSgAwIBAgIBATANBgkqhkiG9w0BAQsFADAoMSYwJAYDVQQDDB0yMDQ4
-IHJzYSBUZXN0IGludGVybWVkaWF0ZSBDQTAeFw0xNjA0MjIyMDI4NDFaFw0yNjA0
-MjAyMDI4NDFaMGAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYw
-FAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQD
-DAkxMjcuMC4wLjEwfDANBgkqhkiG9w0BAQEFAANrADBoAmEAw03PsUZ1ACF11GsQ
-3ahRnpDqOl9YtSOk2TC8ywgxvC2IZDdWZ/hLxQ+fSRG918GeB0bLO/pwen1vUTwQ
-gTP4WZjtgRxavWvucZfID8enmtXgPPvuOgx/aWNhz+LeRLHXAgMBAAGjgYAwfjAM
-BgNVHRMBAf8EAjAAMB0GA1UdDgQWBBSb8ucPMqRUtwaZ7M+LX+G+5wkyjDAfBgNV
-HSMEGDAWgBRcwnF2wSaxDDFzyJLTHgESS8xaFDAdBgNVHSUEFjAUBggrBgEFBQcD
-AQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOCAQEA
-T42pvmHrkI9ZKf4VQB0tJwt0hMAL1sAqI7vtT02O+vk+jG3AukEMsHfI67VyrD5C
-B/KljpiBgpHSgGNcMvtMRY9w0lIHJpo/KEAQTXEo63gD0e0eFMT9dElKN61Z5inv
-vK6K4Y0kfDR7Y9RTb2j3CLP+06EF1kTSN/6Ygz0VcKfG0gXqciHrRj862G8OfX11
-/K1ZfCjTmEuue9UuuZyrxcqYE70aDWOcdKbxLhYturZxPiJvtbnkY8TDmB0xdu8Y
-SFIW0YqJX6Yl1sBYBQ1XbfoDVIeuP9XwoKIw4WfaCVyLQxRquDFDyX8fe3M+UrLV
-p8/O6uiI6kwM00F8wmbWPA==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/768-rsa-ee-by-768-rsa-intermediate.pem b/src/pki/testdata/ssl/certificates/768-rsa-ee-by-768-rsa-intermediate.pem
deleted file mode 100644
index f9af743..0000000
--- a/src/pki/testdata/ssl/certificates/768-rsa-ee-by-768-rsa-intermediate.pem
+++ /dev/null
@@ -1,55 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 1 (0x1)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=768 rsa Test intermediate CA
- Validity
- Not Before: Apr 22 20:28:41 2016 GMT
- Not After : Apr 20 20:28:41 2026 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (768 bit)
- Modulus:
- 00:b8:74:88:ef:f9:04:6b:00:fc:af:a5:c7:f2:10:
- 0d:be:09:a7:f7:07:4a:a9:08:6d:99:84:84:41:c4:
- cc:85:18:a2:c2:2c:ab:91:79:ed:05:42:e7:d2:8c:
- b6:2e:19:80:b2:13:4e:fb:eb:8b:96:58:82:0d:02:
- c5:9a:0f:54:f5:d5:61:04:6f:f2:8c:e3:48:b6:b6:
- c1:28:43:60:0a:5b:ae:fb:8c:82:ca:ae:8a:51:b4:
- 58:58:44:84:92:ea:63
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- D4:57:45:F6:6C:FA:DE:15:8B:2A:A1:D2:B1:2B:3F:5C:D3:8E:FA:3A
- X509v3 Authority Key Identifier:
- keyid:9E:E3:A7:83:B0:59:6F:91:9F:C7:D5:34:61:4A:1A:B3:66:C7:44:A0
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- c5:bc:64:9f:b6:c6:f5:d6:e8:cf:46:7b:bc:52:ae:6b:54:97:
- ce:05:8d:94:81:a9:cb:4f:8d:9e:45:43:22:0a:54:8a:8f:eb:
- 97:10:cf:c1:44:22:b7:e8:e0:a8:d2:ab:1c:be:eb:b8:b2:b1:
- 36:10:62:d8:a4:4e:db:3b:1c:d3:0e:b2:03:ae:34:04:54:f0:
- ea:2f:0b:e8:45:1d:14:af:8f:be:53:fd:9c:b4:32:92:2f:4a:
- d3:3e:53:e1:c1:fc
------BEGIN CERTIFICATE-----
-MIICOTCCAcOgAwIBAgIBATANBgkqhkiG9w0BAQsFADAnMSUwIwYDVQQDDBw3Njgg
-cnNhIFRlc3QgaW50ZXJtZWRpYXRlIENBMB4XDTE2MDQyMjIwMjg0MVoXDTI2MDQy
-MDIwMjg0MVowYDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAU
-BgNVBAcMDU1vdW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExEjAQBgNVBAMM
-CTEyNy4wLjAuMTB8MA0GCSqGSIb3DQEBAQUAA2sAMGgCYQC4dIjv+QRrAPyvpcfy
-EA2+Caf3B0qpCG2ZhIRBxMyFGKLCLKuRee0FQufSjLYuGYCyE07764uWWIINAsWa
-D1T11WEEb/KM40i2tsEoQ2AKW677jILKropRtFhYRISS6mMCAwEAAaOBgDB+MAwG
-A1UdEwEB/wQCMAAwHQYDVR0OBBYEFNRXRfZs+t4Viyqh0rErP1zTjvo6MB8GA1Ud
-IwQYMBaAFJ7jp4OwWW+Rn8fVNGFKGrNmx0SgMB0GA1UdJQQWMBQGCCsGAQUFBwMB
-BggrBgEFBQcDAjAPBgNVHREECDAGhwR/AAABMA0GCSqGSIb3DQEBCwUAA2EAxbxk
-n7bG9dboz0Z7vFKua1SXzgWNlIGpy0+NnkVDIgpUio/rlxDPwUQit+jgqNKrHL7r
-uLKxNhBi2KRO2zsc0w6yA640BFTw6i8L6EUdFK+PvlP9nLQyki9K0z5T4cH8
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/768-rsa-ee-by-prime256v1-ecdsa-intermediate.pem b/src/pki/testdata/ssl/certificates/768-rsa-ee-by-prime256v1-ecdsa-intermediate.pem
deleted file mode 100644
index f7b3887..0000000
--- a/src/pki/testdata/ssl/certificates/768-rsa-ee-by-prime256v1-ecdsa-intermediate.pem
+++ /dev/null
@@ -1,53 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 1 (0x1)
- Signature Algorithm: ecdsa-with-SHA256
- Issuer: CN=prime256v1 ecdsa Test intermediate CA
- Validity
- Not Before: Apr 22 20:28:41 2016 GMT
- Not After : Apr 20 20:28:41 2026 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (768 bit)
- Modulus:
- 00:c4:7b:c8:e7:66:93:0b:ef:8d:13:38:7a:cb:2b:
- d3:c5:6a:69:06:c6:66:fd:ed:f3:ae:38:ef:4f:81:
- 84:79:08:93:6d:65:c3:ce:dc:17:23:7c:19:31:ea:
- 97:ef:54:d7:46:2d:9c:f1:da:94:eb:5b:7b:98:eb:
- ed:51:b8:a9:5e:50:6e:d6:2e:48:25:de:5f:26:6b:
- dd:a5:a5:99:8c:af:15:a8:db:a7:9e:32:ba:c6:2c:
- 17:52:59:27:29:67:6d
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 36:C8:ED:4D:53:9C:76:E1:7D:E1:84:A4:DA:DF:AD:6D:68:D0:B3:86
- X509v3 Authority Key Identifier:
- keyid:0D:6B:B6:D7:DD:7F:CD:4E:AD:06:6B:22:E1:11:08:58:10:AB:16:2A
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: ecdsa-with-SHA256
- 30:45:02:20:12:3c:ec:48:76:df:9f:27:f2:73:60:05:9d:c0:
- 24:0d:16:5e:33:43:bb:69:58:4b:c4:1c:0a:7a:e9:44:91:e8:
- 02:21:00:f5:98:73:6a:f3:93:47:a8:89:99:d4:61:41:37:d6:
- 09:e8:4f:a9:e3:72:eb:b4:0a:75:d7:c5:35:5b:8f:90:19
------BEGIN CERTIFICATE-----
-MIICIzCCAcmgAwIBAgIBATAKBggqhkjOPQQDAjAwMS4wLAYDVQQDDCVwcmltZTI1
-NnYxIGVjZHNhIFRlc3QgaW50ZXJtZWRpYXRlIENBMB4XDTE2MDQyMjIwMjg0MVoX
-DTI2MDQyMDIwMjg0MVowYDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3Ju
-aWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExEjAQ
-BgNVBAMMCTEyNy4wLjAuMTB8MA0GCSqGSIb3DQEBAQUAA2sAMGgCYQDEe8jnZpML
-740TOHrLK9PFamkGxmb97fOuOO9PgYR5CJNtZcPO3BcjfBkx6pfvVNdGLZzx2pTr
-W3uY6+1RuKleUG7WLkgl3l8ma92lpZmMrxWo26eeMrrGLBdSWScpZ20CAwEAAaOB
-gDB+MAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFDbI7U1TnHbhfeGEpNrfrW1o0LOG
-MB8GA1UdIwQYMBaAFA1rttfdf81OrQZrIuERCFgQqxYqMB0GA1UdJQQWMBQGCCsG
-AQUFBwMBBggrBgEFBQcDAjAPBgNVHREECDAGhwR/AAABMAoGCCqGSM49BAMCA0gA
-MEUCIBI87Eh2358n8nNgBZ3AJA0WXjNDu2lYS8QcCnrpRJHoAiEA9ZhzavOTR6iJ
-mdRhQTfWCehPqeNy67QKddfFNVuPkBk=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/768-rsa-intermediate.pem b/src/pki/testdata/ssl/certificates/768-rsa-intermediate.pem
deleted file mode 100644
index 6d4a98c..0000000
--- a/src/pki/testdata/ssl/certificates/768-rsa-intermediate.pem
+++ /dev/null
@@ -1,60 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 1 (0x1)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=2048 RSA Test Root CA
- Validity
- Not Before: Apr 22 20:28:41 2016 GMT
- Not After : Apr 20 20:28:41 2026 GMT
- Subject: CN=768 rsa Test intermediate CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (768 bit)
- Modulus:
- 00:c6:10:85:d9:ce:e4:cf:8a:1c:1e:51:62:dc:5e:
- f4:0f:7a:25:67:90:e5:45:12:29:55:b0:b7:c0:b0:
- 1b:37:33:02:5d:17:eb:44:bb:43:23:5f:c9:06:86:
- 3f:e6:b1:71:76:0b:e1:42:0f:ac:98:e3:12:2a:b4:
- 15:34:b8:dd:e8:2a:35:3f:62:d0:af:54:b7:e8:e5:
- 3d:70:f9:fd:61:68:60:52:7b:15:b3:c5:17:75:0c:
- a3:bb:df:b7:ca:8e:09
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- 9E:E3:A7:83:B0:59:6F:91:9F:C7:D5:34:61:4A:1A:B3:66:C7:44:A0
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha256WithRSAEncryption
- 29:62:c0:b7:c7:f2:25:3e:62:fe:ca:3d:46:40:25:ad:df:43:
- 0d:4f:ee:7f:15:e7:ab:12:45:34:8a:e4:32:a7:4a:33:b8:ab:
- 36:06:69:c5:4f:5a:29:05:5f:aa:11:61:16:cd:ba:18:b0:3c:
- e5:0b:b7:75:07:b0:8d:46:01:19:2f:18:e1:91:f6:94:45:05:
- 8b:ce:18:b1:b0:5b:19:fa:57:f2:ea:24:f7:6e:75:af:2b:4d:
- 7c:c2:d0:2e:46:74:b9:de:fe:4a:b0:dd:29:74:ba:27:c9:45:
- 01:55:65:d4:5b:61:b3:ce:95:8d:7c:73:84:21:50:20:b1:ac:
- 98:0b:d7:c8:61:82:f1:d7:86:6c:cb:da:b4:ef:92:3e:83:90:
- c4:5e:f3:1a:23:e3:8f:1e:75:d6:58:66:10:05:3c:9b:22:47:
- 01:36:8e:4f:62:19:66:f2:ed:9c:50:f0:28:78:f5:21:ea:b1:
- 6a:d7:7e:d8:24:4e:5e:be:51:3a:8d:1c:b3:d0:97:d0:a6:0a:
- db:fa:19:0a:b4:ed:bd:22:d0:3f:91:f0:e8:4a:12:82:d1:6d:
- 44:1a:26:ed:2e:aa:af:55:64:c9:bf:d3:0a:81:c2:34:54:5d:
- 32:05:50:50:ea:fe:d8:52:04:5f:08:17:b2:f1:d6:90:87:15:
- e0:c6:7c:c1
------BEGIN CERTIFICATE-----
-MIICXDCCAUSgAwIBAgIBATANBgkqhkiG9w0BAQsFADAgMR4wHAYDVQQDDBUyMDQ4
-IFJTQSBUZXN0IFJvb3QgQ0EwHhcNMTYwNDIyMjAyODQxWhcNMjYwNDIwMjAyODQx
-WjAnMSUwIwYDVQQDDBw3NjggcnNhIFRlc3QgaW50ZXJtZWRpYXRlIENBMHwwDQYJ
-KoZIhvcNAQEBBQADawAwaAJhAMYQhdnO5M+KHB5RYtxe9A96JWeQ5UUSKVWwt8Cw
-GzczAl0X60S7QyNfyQaGP+axcXYL4UIPrJjjEiq0FTS43egqNT9i0K9Ut+jlPXD5
-/WFoYFJ7FbPFF3UMo7vft8qOCQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0G
-A1UdDgQWBBSe46eDsFlvkZ/H1TRhShqzZsdEoDAOBgNVHQ8BAf8EBAMCAQYwDQYJ
-KoZIhvcNAQELBQADggEBACliwLfH8iU+Yv7KPUZAJa3fQw1P7n8V56sSRTSK5DKn
-SjO4qzYGacVPWikFX6oRYRbNuhiwPOULt3UHsI1GARkvGOGR9pRFBYvOGLGwWxn6
-V/LqJPduda8rTXzC0C5GdLne/kqw3Sl0uifJRQFVZdRbYbPOlY18c4QhUCCxrJgL
-18hhgvHXhmzL2rTvkj6DkMRe8xoj448eddZYZhAFPJsiRwE2jk9iGWby7ZxQ8Ch4
-9SHqsWrXftgkTl6+UTqNHLPQl9CmCtv6GQq07b0i0D+R8OhKEoLRbUQaJu0uqq9V
-ZMm/0wqBwjRUXTIFUFDq/thSBF8IF7Lx1pCHFeDGfME=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/825_days_1_second_after_2018_03_01.pem b/src/pki/testdata/ssl/certificates/825_days_1_second_after_2018_03_01.pem
deleted file mode 100644
index 11d7cd7..0000000
--- a/src/pki/testdata/ssl/certificates/825_days_1_second_after_2018_03_01.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:7c
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Mar 2 00:00:00 2018 GMT
- Not After : Jun 4 00:00:01 2020 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:a1:4f:d4:c4:81:eb:6b:72:1f:2c:7c:77:49:e6:
- c8:29:76:f1:2a:36:d6:0c:dd:80:ed:07:83:bd:ff:
- 76:de:d6:79:9b:ff:0f:6d:24:e3:cd:17:4d:ba:82:
- e9:2d:37:bf:ec:78:b4:7d:b4:6d:d1:af:84:40:ea:
- 50:a6:87:c3:4c:1c:11:f3:c9:54:f1:d9:d7:8a:4b:
- a4:82:28:55:e4:b5:8a:fb:cb:c7:fa:da:07:d4:fd:
- f9:3a:94:ab:89:cc:e1:22:ba:12:93:78:a3:dc:6d:
- be:06:f7:b1:25:29:fe:0e:9f:37:08:35:5a:09:9f:
- 4f:3e:27:b4:b9:d7:ec:10:74:c8:fe:a3:b3:97:1d:
- 29:c2:33:eb:90:de:55:2e:77:ee:9f:60:c9:c9:1d:
- 2a:eb:71:24:8c:fe:75:f6:88:d9:8a:00:4f:b6:9c:
- 65:c1:8e:36:39:a4:c4:37:f3:fa:b3:5b:db:50:39:
- 0d:8f:0b:c9:33:e2:bb:10:5c:11:3a:8a:aa:aa:16:
- 22:f4:fe:ba:6d:ee:da:66:d9:6a:e3:b0:0b:79:78:
- 06:5d:b7:60:9c:30:07:94:3d:45:d5:9e:95:14:49:
- d0:b6:c1:4c:e6:5e:81:48:3e:eb:22:9d:e8:86:d1:
- 5e:69:7b:43:8a:e7:05:93:f5:ad:c0:3d:63:c4:70:
- d0:19
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- A6:14:80:2C:A5:12:49:3A:D8:66:20:1C:05:B8:44:46:E2:C0:80:12
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 18:c9:d9:fd:1f:2c:5c:c8:1d:d7:02:7f:b7:a9:52:3c:b4:46:
- e6:80:aa:0c:95:3c:1e:8c:84:63:f9:37:3d:5e:c1:f3:f5:78:
- 01:16:3e:fe:ef:6f:bc:38:a4:5b:28:b1:62:5d:8b:fc:68:e4:
- 00:c2:b3:cc:4f:e0:6e:3e:6e:01:ee:47:5d:ec:04:a0:cf:ac:
- 00:13:72:d1:5e:8c:a1:d8:14:9f:0a:9d:fd:91:76:40:0c:b5:
- fb:a5:ad:d1:17:a8:cc:5a:79:dc:0d:65:4d:61:8d:1f:c1:99:
- 08:db:23:d1:6d:48:21:19:15:56:91:32:eb:a9:11:3e:91:46:
- 2d:1e:9a:af:f5:49:ae:d0:2a:19:55:51:3f:4a:a7:06:e2:d3:
- b7:41:61:88:22:69:0a:1e:1e:d4:95:d7:53:5b:72:66:d0:08:
- 48:26:bd:12:0f:29:34:57:9b:3a:0e:75:87:74:1d:f4:71:36:
- 6c:cf:ae:2d:34:bc:a5:25:d3:07:d1:0f:60:85:e8:9c:23:fd:
- 3c:6f:8a:b3:44:71:af:e8:5f:8c:a7:3c:bf:69:e8:7e:bf:0b:
- 30:17:b7:78:55:e8:b0:a8:0a:6c:7b:f6:e4:95:b9:9d:d3:0e:
- 6f:c6:18:da:d9:3b:67:ab:7b:dc:31:6f:96:ee:23:94:e0:87:
- 40:73:c0:51
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwnwwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0xODAzMDIwMDAwMDBaFw0yMDA2MDQwMDAwMDFaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQChT9TEgetrch8sfHdJ5sgpdvEqNtYM3YDt
-B4O9/3be1nmb/w9tJOPNF026guktN7/seLR9tG3Rr4RA6lCmh8NMHBHzyVTx2deK
-S6SCKFXktYr7y8f62gfU/fk6lKuJzOEiuhKTeKPcbb4G97ElKf4OnzcINVoJn08+
-J7S51+wQdMj+o7OXHSnCM+uQ3lUud+6fYMnJHSrrcSSM/nX2iNmKAE+2nGXBjjY5
-pMQ38/qzW9tQOQ2PC8kz4rsQXBE6iqqqFiL0/rpt7tpm2WrjsAt5eAZdt2CcMAeU
-PUXVnpUUSdC2wUzmXoFIPusineiG0V5pe0OK5wWT9a3APWPEcNAZAgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBSmFIAspRJJOthmIBwFuERG4sCAEjAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEAGMnZ/R8sXMgd1wJ/t6lSPLRG5oCqDJU8HoyEY/k3PV7B8/V4ARY+/u9vvDik
-WyixYl2L/GjkAMKzzE/gbj5uAe5HXewEoM+sABNy0V6ModgUnwqd/ZF2QAy1+6Wt
-0ReozFp53A1lTWGNH8GZCNsj0W1IIRkVVpEy66kRPpFGLR6ar/VJrtAqGVVRP0qn
-BuLTt0FhiCJpCh4e1JXXU1tyZtAISCa9Eg8pNFebOg51h3Qd9HE2bM+uLTS8pSXT
-B9EPYIXonCP9PG+Ks0Rxr+hfjKc8v2nofr8LMBe3eFXosKgKbHv25JW5ndMOb8YY
-2tk7Z6t73DFvlu4jlOCHQHPAUQ==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/825_days_after_2018_03_01.pem b/src/pki/testdata/ssl/certificates/825_days_after_2018_03_01.pem
deleted file mode 100644
index 3d15cfc..0000000
--- a/src/pki/testdata/ssl/certificates/825_days_after_2018_03_01.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:7b
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Mar 2 00:00:00 2018 GMT
- Not After : Jun 4 00:00:00 2020 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:9a:39:94:e3:67:d8:e3:a9:27:4d:88:89:70:99:
- fd:9d:b8:a3:d5:6a:ff:f4:f0:6b:76:4f:d5:b1:a3:
- 6c:9d:10:c1:e6:6c:ac:2e:71:86:b2:e3:91:25:d7:
- 7e:f0:32:55:a4:b5:e2:f8:ac:d2:69:cb:c9:6e:25:
- 12:32:f8:82:5a:8e:2d:46:30:c2:6c:d9:8e:cb:4c:
- 69:1e:e8:c2:1e:8f:94:76:76:6a:c6:8c:a5:e7:b8:
- 8e:79:e5:4b:6a:b1:98:cc:2f:2b:ba:35:6f:63:65:
- 23:1c:6e:c3:9a:65:7f:fa:1e:6e:fe:a0:7d:8f:10:
- 40:b7:30:1e:2e:41:0e:be:3b:8e:1f:ed:da:29:c0:
- 44:63:10:e7:0f:b1:ed:7b:e9:0e:b7:2d:a0:ec:83:
- 19:8e:a4:de:e5:2e:24:f8:4b:b8:92:63:37:ab:67:
- d7:69:1c:8a:de:1c:d5:e4:59:42:b7:d8:ea:54:64:
- cc:28:14:47:f6:a4:84:f1:7a:a4:9c:26:a1:95:4f:
- 29:6e:c4:06:6c:b2:4e:9a:c5:ca:c7:ff:e9:6a:d9:
- bb:95:0c:9b:5e:d1:cf:d2:0c:fc:1c:6a:f5:bb:46:
- f5:e5:67:4f:2b:f8:a3:3e:3c:74:3c:cf:a8:a1:2d:
- 53:ba:82:e3:f6:67:4c:44:71:1a:79:ff:91:40:41:
- c7:43
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 21:4C:BB:C1:C9:E7:EC:9E:70:89:0F:F4:C5:25:86:86:B0:C8:31:B7
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 68:f9:e3:09:b5:35:6d:e8:fe:00:c8:92:6a:9c:16:c8:99:d4:
- ba:bc:14:89:6c:a9:40:33:0e:33:f8:15:73:62:19:03:37:a1:
- e0:af:ba:d2:9b:06:f9:33:16:c0:38:a8:40:2f:1d:8e:04:55:
- 2d:3b:ae:7b:a2:91:9b:50:eb:fa:83:42:ec:ba:9a:7e:54:28:
- 4b:95:5e:9d:64:c5:79:59:34:77:c7:d4:e4:c5:65:07:f0:63:
- 36:c7:7a:2c:ee:00:75:63:e0:eb:5f:af:5c:41:f3:11:80:63:
- 81:85:53:df:72:22:fc:4c:b8:c8:99:dc:86:e3:1e:b6:a9:37:
- de:c9:df:23:30:2b:f3:d8:48:50:ae:40:3f:5a:92:83:64:03:
- 41:b9:f7:43:ad:2e:2f:be:7f:60:98:af:92:65:7c:7a:05:6a:
- bd:0a:7d:c4:83:1c:a5:8b:6a:18:c5:17:8c:2d:41:d7:97:29:
- e3:5c:79:07:9d:11:43:c5:09:a5:fa:48:9b:be:39:41:7b:34:
- 97:40:e3:84:8b:c7:bb:24:b5:9a:38:47:ca:43:56:ad:52:25:
- 22:a8:aa:2e:64:26:a1:71:cf:0b:f0:47:d9:07:f4:cc:16:99:
- b8:17:23:ea:d3:ad:e6:6e:08:e5:85:04:0c:c3:46:66:80:ec:
- 28:cf:e1:db
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwnswDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0xODAzMDIwMDAwMDBaFw0yMDA2MDQwMDAwMDBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCaOZTjZ9jjqSdNiIlwmf2duKPVav/08Gt2
-T9Wxo2ydEMHmbKwucYay45El137wMlWkteL4rNJpy8luJRIy+IJaji1GMMJs2Y7L
-TGke6MIej5R2dmrGjKXnuI555UtqsZjMLyu6NW9jZSMcbsOaZX/6Hm7+oH2PEEC3
-MB4uQQ6+O44f7dopwERjEOcPse176Q63LaDsgxmOpN7lLiT4S7iSYzerZ9dpHIre
-HNXkWUK32OpUZMwoFEf2pITxeqScJqGVTyluxAZssk6axcrH/+lq2buVDJte0c/S
-DPwcavW7RvXlZ08r+KM+PHQ8z6ihLVO6guP2Z0xEcRp5/5FAQcdDAgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQhTLvByefsnnCJD/TFJYaGsMgxtzAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEAaPnjCbU1bej+AMiSapwWyJnUurwUiWypQDMOM/gVc2IZAzeh4K+60psG+TMW
-wDioQC8djgRVLTuue6KRm1Dr+oNC7LqaflQoS5VenWTFeVk0d8fU5MVlB/BjNsd6
-LO4AdWPg61+vXEHzEYBjgYVT33Ii/Ey4yJnchuMetqk33snfIzAr89hIUK5AP1qS
-g2QDQbn3Q60uL75/YJivkmV8egVqvQp9xIMcpYtqGMUXjC1B15cp41x5B50RQ8UJ
-pfpIm745QXs0l0DjhIvHuyS1mjhHykNWrVIlIqiqLmQmoXHPC/BH2Qf0zBaZuBcj
-6tOt5m4I5YUEDMNGZoDsKM/h2w==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/826_days_after_2018_03_01.pem b/src/pki/testdata/ssl/certificates/826_days_after_2018_03_01.pem
deleted file mode 100644
index 1fb6bbd..0000000
--- a/src/pki/testdata/ssl/certificates/826_days_after_2018_03_01.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:7a
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Mar 2 00:00:00 2018 GMT
- Not After : Jun 5 00:00:00 2020 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:c6:48:5e:83:86:48:ec:31:7d:cc:2c:20:88:c3:
- 5e:36:b5:bd:ba:4a:ed:1b:08:4c:30:4f:7c:f0:db:
- 7f:c8:8a:31:ee:b5:58:18:8f:05:f5:85:fd:e0:e0:
- 9c:3a:40:de:45:31:5f:94:1a:f7:67:26:9d:21:94:
- 1f:73:96:30:0e:91:0c:96:2e:3f:40:9c:40:76:8e:
- 27:de:23:24:a9:9f:6e:69:30:22:a7:62:ee:0f:72:
- 5a:bb:1a:08:c8:49:f0:5b:53:e2:6a:e6:3e:5a:88:
- 73:6d:03:c2:ec:43:8f:f2:dd:30:5f:b3:69:e6:7d:
- 21:0c:a4:50:0a:78:3d:ba:2f:9f:dc:eb:a9:74:40:
- 54:46:ef:c7:49:fc:24:25:ee:e9:18:3a:0d:37:86:
- 90:5c:19:2b:17:4c:93:d2:11:45:78:20:c5:2b:ac:
- 8c:23:d9:fe:2a:a5:3d:72:f0:a8:0d:29:76:23:73:
- a8:a7:c8:ed:e1:52:4c:b9:ba:0a:ce:e5:07:e2:30:
- 26:d2:07:8d:27:02:08:bd:41:6a:0f:bf:3f:43:11:
- fa:17:01:0e:b1:b0:7b:df:8a:63:3d:59:41:6e:0f:
- f5:53:cb:f9:be:ac:c4:a6:c3:6a:19:0b:36:38:ce:
- 34:e3:9f:36:de:ed:bd:4a:d7:75:34:2a:b6:ed:53:
- 7b:5d
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 56:75:5B:1E:72:EB:8C:14:EE:D6:78:E4:67:7B:7D:2D:D0:8F:6D:A1
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 3c:6f:26:8e:d6:8c:6b:01:bf:b0:8c:fc:06:9f:8c:b7:03:50:
- 6d:45:42:de:e7:d0:a0:75:f2:b8:7e:12:13:96:9c:27:c1:ee:
- 6e:b3:48:23:5b:1b:51:45:e7:89:71:62:de:4c:df:66:d3:81:
- 87:64:72:55:d3:ec:da:3d:bb:5c:92:8a:1f:73:fa:5b:bb:b8:
- 83:a9:52:b2:ce:4a:f7:19:68:f5:df:2b:cd:47:07:b7:75:4f:
- 68:15:63:db:25:d3:6a:80:48:92:f2:e2:d4:9f:ae:73:86:c6:
- 85:c9:35:66:65:8e:c4:b2:79:ea:64:ca:d2:d3:73:09:b9:22:
- d5:b7:2a:28:d9:82:e4:85:cb:c8:82:1b:6c:95:80:62:18:21:
- a7:2d:ae:8f:06:09:80:10:24:48:e0:2a:d5:4d:62:00:3e:ed:
- 2c:7c:1e:9d:80:84:b1:de:3a:ab:95:78:b3:65:3a:1d:16:4f:
- 82:b1:63:96:4c:75:3e:2a:0c:26:fc:60:fd:4c:b0:06:36:9a:
- 1d:47:4a:51:47:b0:19:3c:79:f5:93:97:24:61:79:91:fe:7e:
- 72:c6:cb:0a:74:00:a5:d2:ad:b8:bd:b3:45:0d:80:65:53:e5:
- 90:98:14:d2:4b:b3:70:e1:96:c2:bf:7a:1b:66:ce:d4:e7:ae:
- 8c:51:bc:c6
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwnowDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0xODAzMDIwMDAwMDBaFw0yMDA2MDUwMDAwMDBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGSF6DhkjsMX3MLCCIw142tb26Su0bCEww
-T3zw23/IijHutVgYjwX1hf3g4Jw6QN5FMV+UGvdnJp0hlB9zljAOkQyWLj9AnEB2
-jifeIySpn25pMCKnYu4Pclq7GgjISfBbU+Jq5j5aiHNtA8LsQ4/y3TBfs2nmfSEM
-pFAKeD26L5/c66l0QFRG78dJ/CQl7ukYOg03hpBcGSsXTJPSEUV4IMUrrIwj2f4q
-pT1y8KgNKXYjc6inyO3hUky5ugrO5QfiMCbSB40nAgi9QWoPvz9DEfoXAQ6xsHvf
-imM9WUFuD/VTy/m+rMSmw2oZCzY4zjTjnzbe7b1K13U0KrbtU3tdAgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBRWdVsecuuMFO7WeORne30t0I9toTAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEAPG8mjtaMawG/sIz8Bp+MtwNQbUVC3ufQoHXyuH4SE5acJ8HubrNII1sbUUXn
-iXFi3kzfZtOBh2RyVdPs2j27XJKKH3P6W7u4g6lSss5K9xlo9d8rzUcHt3VPaBVj
-2yXTaoBIkvLi1J+uc4bGhck1ZmWOxLJ56mTK0tNzCbki1bcqKNmC5IXLyIIbbJWA
-Yhghpy2ujwYJgBAkSOAq1U1iAD7tLHwenYCEsd46q5V4s2U6HRZPgrFjlkx1PioM
-Jvxg/UywBjaaHUdKUUewGTx59ZOXJGF5kf5+csbLCnQApdKtuL2zRQ2AZVPlkJgU
-0kuzcOGWwr96G2bO1OeujFG8xg==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/900_days_after_2019_07_01.pem b/src/pki/testdata/ssl/certificates/900_days_after_2019_07_01.pem
deleted file mode 100644
index b2ab8c6..0000000
--- a/src/pki/testdata/ssl/certificates/900_days_after_2019_07_01.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:86
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Oct 3 17:20:31 2022 GMT
- Not After : Mar 21 17:20:31 2025 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:c5:28:61:1e:94:d2:ed:5e:b3:fb:6c:35:e1:c5:
- 1c:bb:78:67:d7:11:55:1c:38:db:67:4d:84:fa:39:
- 73:81:ff:73:e4:10:a5:df:f4:21:43:14:c8:9f:4e:
- f0:a7:45:82:2b:2c:79:34:df:db:3c:d0:07:fd:33:
- eb:8a:be:49:dd:cf:22:7f:11:37:3f:3c:e3:be:fb:
- ba:a0:b1:45:b4:bd:7c:d9:5b:7b:58:75:3e:fc:b8:
- 9f:44:4f:cf:97:bf:70:1c:42:8b:1c:77:07:1e:5f:
- 47:a8:78:5b:9f:0b:60:db:9b:58:63:81:db:1a:f1:
- 37:bb:de:91:09:05:b0:3b:f2:e4:d9:a6:62:4b:ac:
- 29:91:6e:04:c9:3d:85:8f:57:d6:d9:b6:be:fe:7a:
- c8:e6:40:89:99:a4:c7:58:94:75:59:03:d8:bc:b1:
- 8e:f0:d2:34:d7:c0:15:63:5c:bd:00:68:c1:2b:f4:
- a6:c4:0d:94:df:38:cb:22:75:0c:2a:82:23:0e:13:
- 82:76:bb:ff:73:66:c8:9c:b7:55:92:68:a4:04:73:
- 92:ac:69:9c:3c:69:29:19:ad:57:e4:a9:59:c5:5d:
- eb:ca:ba:6c:e2:86:01:6b:5c:ae:dc:35:c7:37:67:
- 19:67:ee:37:f1:41:98:bd:02:54:87:f6:0a:c0:fd:
- 82:9b
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 84:86:46:35:36:B9:69:FE:CE:F1:0D:AF:A7:AE:1B:7E:07:F4:D5:38
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 4c:83:4a:91:36:3f:73:ff:1d:38:3e:9e:fb:44:87:42:80:82:
- 2c:d9:3a:d7:4f:d9:a6:21:19:24:b5:b7:b8:42:71:23:2a:c8:
- 81:17:28:95:95:c3:9f:72:b4:5d:c8:6e:6c:91:73:1a:88:68:
- bd:d3:67:6c:72:97:fd:48:0f:2a:8c:06:8a:ed:ac:e2:a6:b2:
- d4:e9:73:65:4f:71:f6:d8:62:a5:68:2d:2e:86:8e:ff:da:df:
- ee:4b:bb:0e:50:89:a4:9d:27:62:fd:90:16:89:e9:12:7b:df:
- a2:71:87:6e:99:28:3c:07:b7:81:86:73:7d:93:a0:3c:f0:a5:
- e3:60:55:e0:0f:9f:c0:08:ad:ef:02:9a:ec:b5:ed:2b:e7:cd:
- ec:c3:59:2b:20:24:05:da:f8:fd:97:67:27:bd:7d:58:ac:e4:
- dd:1a:c0:28:9e:1a:4d:57:88:f2:39:bc:92:6a:43:75:4d:fd:
- 59:9a:d9:f5:1c:49:57:ec:07:66:b2:06:e0:97:dc:44:fa:19:
- 6f:3a:84:f7:ff:7a:c7:e7:2e:37:60:4a:23:fc:ef:00:98:4c:
- 2b:d2:a1:8c:35:d3:d8:5a:2f:6e:f6:69:5c:f7:55:f1:49:f1:
- e7:d4:9c:db:7c:6f:48:0d:5b:7a:1a:0d:6f:83:de:fd:29:d1:
- d5:79:fc:c7
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwoYwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0yMjEwMDMxNzIwMzFaFw0yNTAzMjExNzIwMzFaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDFKGEelNLtXrP7bDXhxRy7eGfXEVUcONtn
-TYT6OXOB/3PkEKXf9CFDFMifTvCnRYIrLHk039s80Af9M+uKvkndzyJ/ETc/POO+
-+7qgsUW0vXzZW3tYdT78uJ9ET8+Xv3AcQoscdwceX0eoeFufC2Dbm1hjgdsa8Te7
-3pEJBbA78uTZpmJLrCmRbgTJPYWPV9bZtr7+esjmQImZpMdYlHVZA9i8sY7w0jTX
-wBVjXL0AaMEr9KbEDZTfOMsidQwqgiMOE4J2u/9zZsict1WSaKQEc5KsaZw8aSkZ
-rVfkqVnFXevKumzihgFrXK7cNcc3Zxln7jfxQZi9AlSH9grA/YKbAgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBSEhkY1Nrlp/s7xDa+nrht+B/TVODAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEATINKkTY/c/8dOD6e+0SHQoCCLNk610/ZpiEZJLW3uEJxIyrIgRcolZXDn3K0
-XchubJFzGohovdNnbHKX/UgPKowGiu2s4qay1OlzZU9x9thipWgtLoaO/9rf7ku7
-DlCJpJ0nYv2QFonpEnvfonGHbpkoPAe3gYZzfZOgPPCl42BV4A+fwAit7wKa7LXt
-K+fN7MNZKyAkBdr4/ZdnJ719WKzk3RrAKJ4aTVeI8jm8kmpDdU39WZrZ9RxJV+wH
-ZrIG4JfcRPoZbzqE9/96x+cuN2BKI/zvAJhMK9KhjDXT2FovbvZpXPdV8Unx59Sc
-23xvSA1behoNb4Pe/SnR1Xn8xw==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/BUILD.gn b/src/pki/testdata/ssl/certificates/BUILD.gn
deleted file mode 100644
index c085596..0000000
--- a/src/pki/testdata/ssl/certificates/BUILD.gn
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright 2017 The Chromium Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-action_foreach("generate_fuzzer_cert_includes") {
- script = "//net/data/ssl/scripts/generate-fuzzer-cert-include.py"
- sources = [
- "spdy_pooling.pem",
- "wildcard.pem",
- ]
- outputs = [ "$target_gen_dir/{{source_name_part}}.inc" ]
- args = [ "{{source}}" ] + rebase_path(outputs, root_build_dir)
-}
diff --git a/src/pki/testdata/ssl/certificates/README b/src/pki/testdata/ssl/certificates/README
deleted file mode 100644
index dcc938b..0000000
--- a/src/pki/testdata/ssl/certificates/README
+++ /dev/null
@@ -1,310 +0,0 @@
-This directory contains various certificates for use with SSL-related
-unit tests.
-
-===== Real-world certificates that need manual updating
-- google.binary.p7b
-- google.chain.pem
-- google.pem_cert.p7b
-- google.pem_pkcs7.p7b
-- google.pkcs7.p7b
-- google.single.der
-- google.single.pem : Certificates for testing parsing of different formats.
-
-- mit.davidben.der : An expired MIT client certificate.
-
-- foaf.me.chromium-test-cert.der : A client certificate for a FOAF.ME identity
- created for testing.
-
-- google_diginotar.pem
-- diginotar_public_ca_2025.pem : A certificate chain for the regression test
- of http://crbug.com/94673
-
-- salesforce_com_test.pem
-- verisign_intermediate_ca_2011.pem
-- verisign_intermediate_ca_2016.pem : Certificates for testing two
- X509Certificate objects that contain the same server certificate but
- different intermediate CA certificates. The two intermediate CA
- certificates actually represent the same intermediate CA but have
- different validity periods.
-
-- ndn.ca.crt: "New Dream Network Certificate Authority" root certificate.
- This is an X.509 v1 certificate that omits the version field. Used to
- test that the certificate version gets the default value v1.
-
-- ct-test-embedded-cert.pem
-- ct-test-embedded-with-intermediate-chain.pem
-- ct-test-embedded-with-intermediate-preca-chain.pem
-- ct-test-embedded-with-preca-chain.pem
- Test certificate chains for Certificate Transparency: Each of these
- files contains a leaf certificate as the first certificate, which has
- embedded SCTs, followed by the issuer certificates chain.
- All files are from the src/test/testdada directory in
- https://code.google.com/p/certificate-transparency/
-
-- leaf_from_known_root.pem : A certificate issued by a public trust anchor,
- used for CertVerifyProcInternalTest.TestKnownRoot. Using for other
- purposes is not recommended. This needs to be updated periodically so the
- server name the cert is valid for may change.
-
-- lets-encrypt-dst-x3-root.pem: A chain that ends in the Lets encrypt DST X3
- root (https://crt.sh/?id=8395). Has the same leaf as
- lets-encrypt-isrg-x1-root.pem.
-- lets-encrypt-isrg-x1-root.pem: A chain that ends in the Lets encrypt ISRG X1
- root (https://crt.sh/?id=9314791). Has the same leaf as
- lets-encrypt-dst-x3-root.pem.
-
-===== Manually generated certificates
-- client.p12 : A PKCS #12 file containing a client certificate and a private
- key created for testing. The password is "12345".
-
-- client-nokey.p12 : A PKCS #12 file containing a client certificate (the same
- as the one in client.p12) but no private key. The password is "12345".
-
-- client-empty-password.p12 : A PKCS #12 file containing an unencrypted client
- certificate and a encrypted private key. The password is the empty string,
- encoded as two zero bytes. (PKCS#12 passwords are encoded as
- NUL-terminated UTF-16.)
-
-- client-null-password.p12 : A PKCS #12 file containing an unencrypted client
- certificate and a encrypted private key. The password is the empty string,
- encoded as the empty byte string.
-
-- unittest.selfsigned.der : A self-signed certificate generated using private
- key in unittest.key.bin. The common name is "unittest".
-
-- unittest.key.bin : private key stored unencrypted.
-
-- multivalue_rdn.pem : A regression test for http://crbug.com/101009. A
- certificate with all of the AttributeTypeAndValues stored within a single
- RelativeDistinguishedName, rather than one AVA per RDN as normally seen.
-
-- unescaped.pem : Regression test for http://crbug.com/102839. Contains
- characters such as '=' and '"' that would normally be escaped when
- converting a subject/issuer name to their stringized form.
-
-- websocket_cacert.pem : The testing root CA for testing WebSocket client
- certificate authentication.
- This file is used in SSLUITest.TestWSSClientCert.
-
-- websocket_client_cert.p12 : A PKCS #12 file containing a client certificate
- and a private key created for WebSocket testing. The password is "".
- This file is used in SSLUITest.TestWSSClientCert.
-
-- no_subject_common_name_cert.pem: Used to test the function that generates a
- NSS certificate nickname for a user certificate. This certificate's Subject
- field doesn't have a common name.
-
-- ct-test-embedded-with-uids.pem: A certificate with embedded SCT and
- issuer/subject unique IDs. This certificate should only be used in parsing
- tests and otherwise kept fixed. The signature, etc., are intentionally
- invalid.
-
-- name_constrained_key.pem
- The private key matching the public_key_hash of the kDomainsTest constraint
- in CertVerifyProc::HasNameConstraintsViolation.
-
-===== From net/data/ssl/scripts/generate-quic-chain.sh
-- quic-chain.pem
-- quic-leaf-cert.key
-- quic-leaf-cert.key.pkcs8.pem
-- quic-root.pem
- These certificates are used by integration tests that use QUIC.
-
-- quic-leaf-cert.key.sct
- This isn't generated and just contains a simple text file (the contents
- don't actually matter, just the presence of the file).
-
-===== From net/data/ssl/scripts/generate-test-certs.sh
-- expired_cert.pem
-- ok_cert.pem
-- root_ca_cert.pem
- These certificates are the common certificates used by the Python test
- server for simulating HTTPS connections.
-
-- intermediate_ca_cert.pem
-- ok_cert_by_intermediate.pem
- These certificates simulate a more common chain of root (root_ca_cert.pem)
- to intermediate (intermediate_ca_cert.pem) to leaf
- (ok_cert_by_intermediate.pem).
-
-- wildcard_.pem
- A certificate and private key valid for *.example.org, used in various
- net unit tests.
-
-- test_names.pem
- A certificate and private key valid for a number of test names. See
- [test_names] in ee.cnf. Other names may be added as needed.
-
-- bad_validity.pem
- A certificate and private key only valid on 0001-01-01. Windows refuses to
- parse this certificate.
-
-- spdy_pooling.pem : Used to test the handling of spdy IP connection pooling
-
-- subjectAltName_sanity_check.pem : Used to test the handling of various types
- within the subjectAltName extension of a certificate.
-
-- policies_sanity_check.pem : Used to test the parsing of various types of
- certificatePolicies extension policyQualifiers.
-
-- punycodetest.pem : A test self-signed server certificate with punycode name.
- The common name is "xn--wgv71a119e.com" (日本語.com)
-
-- sha1_2016.pem
- Used to test the handling of SHA1 certificates expiring in 2016.
-
-- 10_year_validity.pem
-- 11_year_validity.pem
-- 39_months_after_2015_04.pem
-- 40_months_after_2015_04.pem
-- 60_months_after_2012_07.pem
-- 61_months_after_2012_07.pem
-- pre_br_validity_bad_121.pem
-- pre_br_validity_bad_2020.pem
-- pre_br_validity_ok.pem
-- start_after_expiry.pem
- Certs to test that the maximum validity durations set by the CA/Browser
- Forum Baseline Requirements are enforced.
-
-- may_2018.pem
- An 825-day certificate issued on May 1, 2018, the official start of
- enforcement requiring Certificate Transparency for new certificates. This
- certificate does not have any embedded SCTs.
-
-- x509_verify_results.chain.pem : A simple certificate chain used to test that
- the correctly ordered, filtered certificate chain is returned during
- verification, regardless of the order in which the intermediate/root CA
- certificates are provided.
-
-- ev_test.pem
-- ev_test_state_only.pem
- Certificates for testing EV display (including regression test for
- https://crbug.com/1069113).
-
-===== From net/data/ssl/scripts/generate-test-keys.sh
-- rsa-{768,1024,2048}-{1..3}.key
-- ec-prime256v1-{1..3}.key
- Pre-generated keys of various types/sizes.
- Useful for tests that generate RSA certificates with CertBuilder without
- having to pay the cost of generating RSA keys at runtime. Multiple keys
- of each size are provided. (EC keys are cheap to generate at runtime, but
- having some as files simplifies test logic in cases where the test is
- reading both RSA and EC keys from files.)
-
-===== From net/data/ssl/scripts/generate-redundant-test-chains.sh
-- redundant-validated-chain.pem
-- redundant-server-chain.pem
-- redundant-validated-chain-root.pem
-
- Two chains, A -> B -> C -> D and A -> B -> C2 (C and C2 share the same
- public key) to test that SSLInfo gets the reconstructed, re-ordered
- chain instead of the chain as served. See
- SSLClientSocketTest.VerifyReturnChainProperlyOrdered in
- net/socket/ssl_client_socket_unittest.cc. These chains are valid until
- 26 Feb 2022 and are generated by
- net/data/ssl/scripts/generate-redundant-test-chains.sh.
-
-===== From net/data/ssl/scripts/generate-client-certificates.sh
-- client_1.pem
-- client_1.key
-- client_1.pk8
-- client_1_ca.pem
-- client_2.pem
-- client_2.key
-- client_2.pk8
-- client_2_ca.pem
-- client_3.pem
-- client_3.key
-- client_3.pk8
-- client_3_ca.pem
-- client_4.pem
-- client_4.key
-- client_4.pk8
-- client_4_ca.pem
-- client_5.pem
-- client_5.key
-- client_5.pk8
-- client_5_ca.pem
-- client_6.pem
-- client_6.key
-- client_6.pk8
-- client_6_ca.pem
-- client_root_ca.pem
- This is a set of files used to unit test SSL client certificate
- authentication.
- - client_1_ca.pem and client_2_ca.pem are the certificates of
- two distinct signing CAs.
- - client_1.pem and client_1.key correspond to the certificate and
- private key for a first certificate signed by client_1_ca.pem.
- - client_2.pem and client_2.key correspond to the certificate and
- private key for a second certificate signed by client_2_ca.pem.
- - each .pk8 file contains the same key as the corresponding .key file
- as PKCS#8 PrivateKeyInfo in DER encoding.
- - client_3.pem is nearly identical to client_2.pem, except it is used
- to test wifi EAP-TLS authentication so it uses a different set
- of X509v3 extensions. Specifically it includes two Subject
- Alternative Name fields recognized by Chrome OS.
- - client_4.pem is similar to client_2.pem but is a P-256 ECDSA key rather
- than RSA.
- - client_5.pem is similar to client_2.pem but is a P-384 ECDSA key rather
- than RSA.
- - client_6.pem is similar to client_2.pem but is a P-521 ECDSA key rather
- than RSA.
- - client_root_ca.pem is the CA certificate which signed client_*_ca.pem.
-
-===== From net/data/ssl/scripts/generate-bad-eku-certs.sh
-- eku-test-root.pem
-- non-crit-codeSigning-chain.pem
-- crit-codeSigning-chain.pem
- Two code-signing certificates (eKU: codeSigning; eKU: critical,
- codeSigning) which we use to test that clients are making sure that web
- server certs are checked for correct eKU fields (when an eKU field is
- present). Since codeSigning is not valid for web server auth, the checks
- should fail.
-
-===== From net/data/ssl/scripts/generate-multi-root-test-chains.sh
-- multi-root-chain1.pem
-- multi-root-chain2.pem
- Two chains, A -> B -> C -> D and A -> B -> C2 -> E (C and C2 share the
- same public key) to test that certificate validation caching does not
- interfere with the chain_verify_callback used by CertVerifyProcChromeOS.
- See CertVerifyProcChromeOSTest.
-
-===== From net/data/ssl/scripts/generate-multi-root-keychain.sh
-- multi-root.keychain: An OSX Keychain containing the generated
- certificates multi-root-*-by-*.pem
-
-===== From net/data/ssl/scripts/generate-duplicate-cn-certs.sh
-- duplicate_cn_1.p12
-- duplicate_cn_1.pem
-- duplicate_cn_2.p12
-- duplicate_cn_2.pem
- Two certificates from the same issuer that share the same common name,
- but have distinct subject names (namely, their O fields differ). NSS
- requires that certificates have unique nicknames if they do not share the
- same subject, and these certificates are used to test that the nickname
- generation algorithm generates unique nicknames.
- The .pem versions contain just the certs, while the .p12 versions contain
- both the cert and a private key, since there are multiple ways to import
- certificates into NSS.
-
-===== From net/data/ssl/scripts/generate-self-signed-certs.sh
-- self-signed-invalid-name.pem
-- self-signed-invalid-sig.pem
- Two "self-signed" certificates with mismatched names or an invalid
- signature, respectively.
-
-===== From net/data/ssl/scripts/generate-key-usage-certs.sh
-- key_usage_rsa_no_extension.pem
-- key_usage_rsa_keyencipherment.pem
-- key_usage_rsa_digitalsignature.pem
-- key_usage_rsa_both.pem
- Self-signed RSA certificates with various combinations of keyUsage
- flags. Their private key is key_usage_rsa.key.
-
-- key_usage_p256_no_extension.pem
-- key_usage_p256_keyagreement.pem
-- key_usage_p256_digitalsignature.pem
-- key_usage_p256_both.pem
- Self-signed P-256 certificates with various combinations of keyUsage
- flags. Their private key is key_usage_p256.key.
diff --git a/src/pki/testdata/ssl/certificates/bad_validity.pem b/src/pki/testdata/ssl/certificates/bad_validity.pem
deleted file mode 100644
index 4b17a76..0000000
--- a/src/pki/testdata/ssl/certificates/bad_validity.pem
+++ /dev/null
@@ -1,112 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDgU/TzmMEUMwLI
-pG3+qir3lD2mbwDfO95Mn6PqB9Ss5VsN0azg7fnFmB01LeWzSZcUhUQP3EzSZwiI
-AaXYp+uT0Wqh91HnhH5SKn28bw7Y27amPt7c9aRolkQRhQLtRxLfuGBxlXtih2h6
-RFYJ1bTI8fbJRpKLaOiD1dWGcSPDgB6/bAHH0qS8QG3g48AuMHi9rd0lZtP1BwdW
-187icsUlfQzhp28AqNqrS1RDCWSktlI4L7fMAd0cAycDR7/f5jew7RjcUQvUdSLf
-UHs86zc5HJtvCHunBayMQ/fx2lEGs4JFPsiBc56wpc92lq+BLKwBKkpYSx2+/x+F
-wife8XgLAgMBAAECggEAO0gUmHdKtvLQDoPdiYogtrKXJC97dILWuTsKzyLoohQu
-XtWFMR/SfNQ5C7+oTxvocATTurlGF+ggigidckbV64dQ/aJlI6CQ3VfbSHu02bwe
-ZYqBzLShkP382QBkiJ3asAKCgiG1rJEKHB2I+ypdjyjaRdB/k5XStFxDBDdL8zKe
-kL1hytf1ALxYBQJ3TXcoIqlpzz6v+JnZTAuu4vrySfffyFTrytIwf/KGlBACBqXe
-oV+DK586PiyC0m1Hhy1rLTi2/IT4t4j3KO+c/OnpWkMEg1G/Ojy1zPMsMHr1VO9t
-UWxhEIYOLQVUOT+2ltO4bRJcgEPHSxlIY23qalJgqQKBgQD9oZwHPhLZg439Zr9O
-Zgl5fFkPe4SxqLY+ggE5O81+3RgL8GyAuy9oDtUGcw8L9tpKcBflqH4jEvUvT1/m
-8BGKIQteqcKbY0C+KfPvq77R4k2KqmxpKF5f4BS/9O7cgzJZwhSFKDLtcKtDIPUK
-3eoERuPB4/cmhQyb+/TKofZpfwKBgQDibEm1+nYj3tIXDxK3hZHjPz0s9vYV84py
-zg3HjuEmdacnhNPQQQpNG83RMjEnnBvHWH2vxRWyD+57r/FWeA60aUJo5WIP0rj8
-z6GqFT9IWaBrJtBU1YoxuyTH64yih6ljvm2skIEGlQYS+GBL9K/Tx4mh4lAKVzD5
-GXVqtyM/dQKBgFD0Ik8VewK+QLXe87TcUK3cCLkuXZ4vEWxGJonUErUpcKFu7dLw
-7CK0iT3zv5u8ANS9joMZEpmzVVryZNPbUF3cSjq+yIS8W0/XKCsZkGCBcOqPlubB
-oc3MQhM65HqxzYJkthQCTq8GxUM547zCNA2FavDaCGrdELdA5lM++t2VAoGAMLem
-AH68bqlhwM5gc5ZMtn2D1ynn9v8oudz2AAsRDKph5dHhlTx5T+/8j9dh1ijznSfA
-G1KngWGGKZzIq5c3ar//Jvy75bWsUdEG8saRkCqgpo16Y9ZyXpLqrg1TfCD+ZFSz
-2l5ZNKZZ4TkJ1y31qvaS+X7tQ9xQ0DgXGHgBIIUCgYABBBddUXpOyG54HvFHIgxS
-esBBkpM0uy3vOkyfMown2GCjKZaXS5kEmRwU9WQQKLPf2ieALgYEf87YGWmPNZNF
-tG5DoNhTMsrYORB11tuuBR1e6lrG/aoOkP/4udWC8d4Yp9wnkEu0l6X/kMfq2lb1
-67bBVmHqKJ0t8rytHzkP0Q==
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:6b
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Jan 1 00:00:00 1 GMT
- Not After : Jan 1 00:00:00 1 GMT
- Subject: CN=Leaf Certificate
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:e0:53:f4:f3:98:c1:14:33:02:c8:a4:6d:fe:aa:
- 2a:f7:94:3d:a6:6f:00:df:3b:de:4c:9f:a3:ea:07:
- d4:ac:e5:5b:0d:d1:ac:e0:ed:f9:c5:98:1d:35:2d:
- e5:b3:49:97:14:85:44:0f:dc:4c:d2:67:08:88:01:
- a5:d8:a7:eb:93:d1:6a:a1:f7:51:e7:84:7e:52:2a:
- 7d:bc:6f:0e:d8:db:b6:a6:3e:de:dc:f5:a4:68:96:
- 44:11:85:02:ed:47:12:df:b8:60:71:95:7b:62:87:
- 68:7a:44:56:09:d5:b4:c8:f1:f6:c9:46:92:8b:68:
- e8:83:d5:d5:86:71:23:c3:80:1e:bf:6c:01:c7:d2:
- a4:bc:40:6d:e0:e3:c0:2e:30:78:bd:ad:dd:25:66:
- d3:f5:07:07:56:d7:ce:e2:72:c5:25:7d:0c:e1:a7:
- 6f:00:a8:da:ab:4b:54:43:09:64:a4:b6:52:38:2f:
- b7:cc:01:dd:1c:03:27:03:47:bf:df:e6:37:b0:ed:
- 18:dc:51:0b:d4:75:22:df:50:7b:3c:eb:37:39:1c:
- 9b:6f:08:7b:a7:05:ac:8c:43:f7:f1:da:51:06:b3:
- 82:45:3e:c8:81:73:9e:b0:a5:cf:76:96:af:81:2c:
- ac:01:2a:4a:58:4b:1d:be:ff:1f:85:c2:27:de:f1:
- 78:0b
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- E2:E0:A4:73:95:9B:E9:6E:FD:CE:29:C4:6F:07:81:0B:96:BD:47:BA
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- bf:da:fe:8f:5a:ca:5d:f5:9a:90:19:34:84:15:ab:46:80:62:
- ed:95:c4:2e:04:ae:7b:0d:b7:a9:be:f6:28:8e:eb:a2:84:3e:
- 04:a6:b5:d4:61:a3:69:5c:ce:02:1e:4b:9a:40:58:19:c9:5f:
- 86:c2:a4:39:d9:c9:8e:ab:3a:b7:97:86:4e:96:73:dd:7c:84:
- 05:e8:2b:0c:83:a4:d0:69:1a:bf:c0:c1:a9:ed:c6:71:ec:bd:
- 94:56:4c:d4:0a:72:f2:62:69:57:67:b9:93:03:c5:43:a2:1b:
- c2:20:36:6f:f1:ae:47:5d:7f:4f:65:a9:ad:30:60:93:50:34:
- fe:8d:38:2a:b8:b3:a6:19:0c:de:30:e7:bd:61:cd:ff:b9:5e:
- 5d:06:85:52:95:d5:a0:76:14:02:58:43:e6:83:72:31:b1:41:
- 7d:20:7b:a8:db:7f:b2:36:ea:35:c0:70:c0:c1:c5:6f:fd:48:
- 41:bf:ff:67:c9:16:c4:a4:77:99:94:0b:ec:55:bc:91:b9:3d:
- dc:68:52:b0:ad:a4:e3:c7:55:e5:67:37:52:c0:ce:1f:3d:19:
- bb:00:91:4a:44:bb:40:eb:f5:7e:a7:7c:49:fd:26:16:a7:cd:
- 69:3d:d4:4b:37:5e:d9:cf:30:8a:8d:83:84:d5:5b:f7:4d:4d:
- 85:11:26:78
------BEGIN CERTIFICATE-----
-MIIDjjCCAnagAwIBAgIRALBrk5LjXI1+7Z3IllnFwmswDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAiGA8wMDAxMDEwMTAwMDAwMFoYDzAwMDEwMTAxMDAwMDAwWjAbMRkwFwYD
-VQQDDBBMZWFmIENlcnRpZmljYXRlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
-CgKCAQEA4FP085jBFDMCyKRt/qoq95Q9pm8A3zveTJ+j6gfUrOVbDdGs4O35xZgd
-NS3ls0mXFIVED9xM0mcIiAGl2Kfrk9FqofdR54R+Uip9vG8O2Nu2pj7e3PWkaJZE
-EYUC7UcS37hgcZV7YodoekRWCdW0yPH2yUaSi2jog9XVhnEjw4Aev2wBx9KkvEBt
-4OPALjB4va3dJWbT9QcHVtfO4nLFJX0M4advAKjaq0tUQwlkpLZSOC+3zAHdHAMn
-A0e/3+Y3sO0Y3FEL1HUi31B7POs3ORybbwh7pwWsjEP38dpRBrOCRT7IgXOesKXP
-dpavgSysASpKWEsdvv8fhcIn3vF4CwIDAQABo4GAMH4wDAYDVR0TAQH/BAIwADAd
-BgNVHQ4EFgQU4uCkc5Wb6W79zinEbweBC5a9R7owHwYDVR0jBBgwFoAUmyYLipip
-ux25HxzjGkAz7Y4XiKswHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA8G
-A1UdEQQIMAaHBH8AAAEwDQYJKoZIhvcNAQELBQADggEBAL/a/o9ayl31mpAZNIQV
-q0aAYu2VxC4ErnsNt6m+9iiO66KEPgSmtdRho2lczgIeS5pAWBnJX4bCpDnZyY6r
-OreXhk6Wc918hAXoKwyDpNBpGr/AwantxnHsvZRWTNQKcvJiaVdnuZMDxUOiG8Ig
-Nm/xrkddf09lqa0wYJNQNP6NOCq4s6YZDN4w571hzf+5Xl0GhVKV1aB2FAJYQ+aD
-cjGxQX0ge6jbf7I26jXAcMDBxW/9SEG//2fJFsSkd5mUC+xVvJG5PdxoUrCtpOPH
-VeVnN1LAzh89GbsAkUpEu0Dr9X6nfEn9JhanzWk91Es3XtnPMIqNg4TVW/dNTYUR
-Jng=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/can_sign_http_exchanges_draft_extension.pem b/src/pki/testdata/ssl/certificates/can_sign_http_exchanges_draft_extension.pem
deleted file mode 100644
index 0bf4751..0000000
--- a/src/pki/testdata/ssl/certificates/can_sign_http_exchanges_draft_extension.pem
+++ /dev/null
@@ -1,22 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDkjCCAnqgAwIBAgIUZCoefl8RYqHLu2ziqedCbSAfH/4wDQYJKoZIhvcNAQEL
-BQAwYDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM
-DU1vdW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExEjAQBgNVBAMMCTEyNy4w
-LjAuMTAeFw0yMjEwMDMxNzIwMzBaFw0yMzEwMDMxNzIwMzBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHxaeis59fd/yaGhvGCkW7F+eUhXvZqOgc
-SVvcudUmtxV5JAbLwXiQwKL820Wmm9VJ5gXoPtFdTNZYhbJkd324bSu/H71QDtgm
-7ngGeipmAIYEvHpscBhRStIyBtcWrYNvdOXqmAQLJirtyxaAX5NkVrURkoaoJzv9
-yYKOfbZR9hPtLIL6mfT2NiLlLtUN6icLmJX6z4t2Eu55sAnJjCwKnvg9E976yoOn
-wDXJDY3OnC3V/eYZZO9bBdlalXZ16l8xUXXhL8+xSrOgnleD2QHFLoSXecx5FEeZ
-7gGdiWi8oXzkD6MiY1xOTwFlvgNNegjnWOlqpT0OJhYD2atYMH51AgMBAAGjRDBC
-MA8GA1UdEQQIMAaHBH8AAAEwEAYKKwYBBAHWeQIBFgQCBQAwHQYDVR0OBBYEFJ4m
-W3kENeZsH6FrlzETjZb0qj98MA0GCSqGSIb3DQEBCwUAA4IBAQDFl5sdC5X3jc3h
-gFvu9w/Gg/8B4y2wyVQYk7FOWvFwQXOJ6fKo0gP01RtQ1BCUTTa4UC6yGxZSmI7D
-Vubi8wLv9ut9Trjz0ZN/s+18OKWWPpknm6RPrtgz3lcSJUPijQBDj62ocWLr51uj
-JS7k7OsvAQQ2BBh2auZDZQ6RmEJvce7Pl0wG3e7lrHo5sRU46bERvpiMctHy/x9M
-IBryGjz58SvWECsFQC49nb1jLkYbPqDsU/GlemVPffiSUVjERZMLx8FmpKnZRy2a
-tT7RY3/C0G9pNrp6ymYlhkSMOiXcjRJwPCOsXlczwQo1ACtmxXSifjSaC/3Rx/0Q
-0jufLLMb
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/can_sign_http_exchanges_draft_extension_invalid.pem b/src/pki/testdata/ssl/certificates/can_sign_http_exchanges_draft_extension_invalid.pem
deleted file mode 100644
index dd49c6d..0000000
--- a/src/pki/testdata/ssl/certificates/can_sign_http_exchanges_draft_extension_invalid.pem
+++ /dev/null
@@ -1,22 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDkjCCAnqgAwIBAgIUKI4gpE2u/33EvFq/n6Lu6en7OtEwDQYJKoZIhvcNAQEL
-BQAwYDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM
-DU1vdW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExEjAQBgNVBAMMCTEyNy4w
-LjAuMTAeFw0yMjEwMDMxNzIwMzBaFw0yMzEwMDMxNzIwMzBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDYzHvl9+jL2fcnXxtL+Co0+pBwhi/JvBkl
-XF9S5SNEualXFq4ajs1Mp6QEevTqSQYArAxHGtoVGBMSVeGsxQuD9mw5gizO/FTR
-dcm6fpWhp6l8W66v49Gc9zm/vte51n27iqa3LATIUzW/P6eDbLR3adQCB2n36miE
-kCvAbzwddPC6VkSeV+u/SOhccFvY5aluRuKWCOyfNi6lu4q5NCqNMF1+OplVTutW
-aGo8xMRcNqnQ9u/rwPV9NzVnhlW6Rn1eQrSMnWTnlBytyZGkHvF0ZuJ7sk3/sF7M
-+KRQQ32SIeZV3n6Ctw/GOtQz/yw1g+2Sp2cBZB+fNXb4EaOojLvLAgMBAAGjRDBC
-MA8GA1UdEQQIMAaHBH8AAAEwEAYKKwYBBAHWeQIBFgQCMAAwHQYDVR0OBBYEFPPi
-QMbqtGksJRPMpYH2NFpHtVnlMA0GCSqGSIb3DQEBCwUAA4IBAQBkJakWGDFVcOkh
-MXRQBikBmnxalzrmB8ayHK6q4v65nyhi912e3wJ7RGih00ESsJtuSTZDaxhz/STI
-jo88gWHKG2EUdwh4S9c9HpPcFvGmbVZx1x2gkvIfbQMPMYEyiSsD8FYUWOrc3NGS
-gRj7/4t/IL+oeOjnKgzm2uVCIQHgGPMQWQUtsVszVcaBvegpR7SKA9ew3RdXi+WY
-ObEXIonrWg6STiVENMpLFX6flNIXJxw2IwSjerf25FxGloNLjW2zJLPh9UeiCud6
-f3+EBU7p52j5jkEjcYTZt+L/350riO+lMDHKd+u8p9qXxnS9Q52oWZSx8KTcd1oh
-24PS0WnY
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/client-empty-password.p12 b/src/pki/testdata/ssl/certificates/client-empty-password.p12
deleted file mode 100644
index e0b514c..0000000
--- a/src/pki/testdata/ssl/certificates/client-empty-password.p12
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/client-nokey.p12 b/src/pki/testdata/ssl/certificates/client-nokey.p12
deleted file mode 100644
index bd6bd7c..0000000
--- a/src/pki/testdata/ssl/certificates/client-nokey.p12
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/client-null-password.p12 b/src/pki/testdata/ssl/certificates/client-null-password.p12
deleted file mode 100644
index a8c45a7..0000000
--- a/src/pki/testdata/ssl/certificates/client-null-password.p12
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/client.p12 b/src/pki/testdata/ssl/certificates/client.p12
deleted file mode 100644
index ea1657a..0000000
--- a/src/pki/testdata/ssl/certificates/client.p12
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/client_1.key b/src/pki/testdata/ssl/certificates/client_1.key
deleted file mode 100644
index 5ceb7e9..0000000
--- a/src/pki/testdata/ssl/certificates/client_1.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDa+Dq7TTFSw1Ax
-RkaftrCM8tuPbYH7NTxLdHil0F2y4G+PvrlqN0qB43tRaKJPQEYhG+RnppXeOk6/
-AbgOFXBQCPoVJWOjxwMX3ea3rSLM5C9xUP9Rsnf/fkngD6G6pOo2nYinfgpINQDh
-GB/r8BJs69RNhvgdbN4aV7Bz8WGYqKF3DVhV+Di5zIOPNC9zoZQPey4duMS06OER
-G7Op8fFws3QoCzEywVdAbe/R+m5oeg875vLVvmONwDi52mqv4rgbfl+aPhyyPzoR
-3hdIPEi13AQB5hmyLAcTDtvcib3beNLw586NXcYgQZdcbLmDkjVRDK4uniE4QaRU
-GeRJD2+xAgMBAAECggEABMvoYMcg2WGDuESZZ5u6nn0eZUlT4329H6ECQzg/KTEv
-OGydhqUF6eD4B/vnsZ6POrVFSaZK76EtgukbJUcqcee0b1yljrDyvCXaoojgHjFc
-aa90HE/Gvvm++AcXoZfwX826cILQtQK2OCK4EPTDY+U+6LYtaVruZZDTVxgr7V+v
-4v1EDKEjQc+Ttupwo6aXSeiTKuqNsXuodoDvcv/uJgzMDCxi14TZTjaWOz7Xw2JZ
-+NLbTrsiqTyzmyJousV6/+4sfTYt8/tz0gMt3Qaddvs+BpTTrYIKTpsGYwPkKDqU
-dEkC87OQ6a2mXB1lpA7FMpZiiyJ1HpIXHkd+eLoNkQKBgQDlQtZdTlHu0YLM2WlO
-RFYP8zyx/9k6rXZVVZLNBcZazEUkcgXJ7MS8pXieiXo6UJEf0PNCCY21ooOMPq6L
-I0NNF/yDbvT9Ri7eRNZRZosXIDaB17S93vgZ4Ukri7JJv3Bx+V2Wwl3P2/g080sh
-qx8ZZsg1aQqpKov9qsavyXAuGQKBgQD0gh2P+rt0jQ9SnJ8ETGzFAXmhZyt4my+v
-BuFX8tFvByxMiUIxzsmHxCA6td/6KCWPwoo3xhe7r/+NHEFe6k9NR3KgrHOrHFcC
-qOAHWYPuPCKaG0ycbEF3tjzuDbZUJzH4WBgQDEsPlwDYEpkR17FX6sIMaAPMRvlO
-cZQZqnXRWQKBgQC6t0+c2E+UYB/WNG82ZiNthB13nrbNuj54y2PvBHgCtQDO6Opc
-BTBJr75n5/GbEsjPD78+lkdKmdvnWZmQCh0i6ZkndjOjHwjGz2t5CjnXkM2zu/kg
-9jo74aZVB8Yhl/+9Y2lcglojErS4czlKZ3LBnlsKXM1o7xTqeK6utjFd6QKBgQCA
-aH0CClm8IgC0EBDq/v/4jofEHhyUYFuwfdqGh705o/i90S/0XHc2V+fdLXsNM1xW
-nYJdPClmpk19XCNwp3kySp2GiErOyDlh6jKNaZOB4A8EA+Y+GBRhvFFPa+AfXd4+
-YHVyqCIbc+A7mbjNyAsY8u8p+M5Vz8hKTBfNStpJMQKBgH6YBNtXqyPDXgqyvRkj
-Zt01I2ZYn2iIHBhHyDWE5j0QjhzF2kLpKIASO1uOTsaurAhPuyUTR+8EXu2OSP3R
-oaJ5buwUb8yL2b8Q075WCSp+eXdU6ZmEYdfnKX+63I9QIWvTFsREZybFR4tPgsQJ
-Gq/L8jNIxDxG9D0P1I2Zxrfd
------END PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/client_1.pem b/src/pki/testdata/ssl/certificates/client_1.pem
deleted file mode 100644
index 2778fcc..0000000
--- a/src/pki/testdata/ssl/certificates/client_1.pem
+++ /dev/null
@@ -1,78 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4096 (0x1000)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=B CA
- Validity
- Not Before: Oct 19 16:58:55 2022 GMT
- Not After : Oct 16 16:58:55 2032 GMT
- Subject: CN=Client Cert A
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:da:f8:3a:bb:4d:31:52:c3:50:31:46:46:9f:b6:
- b0:8c:f2:db:8f:6d:81:fb:35:3c:4b:74:78:a5:d0:
- 5d:b2:e0:6f:8f:be:b9:6a:37:4a:81:e3:7b:51:68:
- a2:4f:40:46:21:1b:e4:67:a6:95:de:3a:4e:bf:01:
- b8:0e:15:70:50:08:fa:15:25:63:a3:c7:03:17:dd:
- e6:b7:ad:22:cc:e4:2f:71:50:ff:51:b2:77:ff:7e:
- 49:e0:0f:a1:ba:a4:ea:36:9d:88:a7:7e:0a:48:35:
- 00:e1:18:1f:eb:f0:12:6c:eb:d4:4d:86:f8:1d:6c:
- de:1a:57:b0:73:f1:61:98:a8:a1:77:0d:58:55:f8:
- 38:b9:cc:83:8f:34:2f:73:a1:94:0f:7b:2e:1d:b8:
- c4:b4:e8:e1:11:1b:b3:a9:f1:f1:70:b3:74:28:0b:
- 31:32:c1:57:40:6d:ef:d1:fa:6e:68:7a:0f:3b:e6:
- f2:d5:be:63:8d:c0:38:b9:da:6a:af:e2:b8:1b:7e:
- 5f:9a:3e:1c:b2:3f:3a:11:de:17:48:3c:48:b5:dc:
- 04:01:e6:19:b2:2c:07:13:0e:db:dc:89:bd:db:78:
- d2:f0:e7:ce:8d:5d:c6:20:41:97:5c:6c:b9:83:92:
- 35:51:0c:ae:2e:9e:21:38:41:a4:54:19:e4:49:0f:
- 6f:b1
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Key Identifier:
- 90:E3:67:93:7D:10:6E:6D:4D:49:29:65:38:E5:F5:9C:66:62:DD:69
- X509v3 Authority Key Identifier:
- 6F:C5:EC:40:44:0F:5C:78:04:8E:66:11:4E:A1:EE:1E:38:38:FD:72
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 3e:f3:8a:9f:b7:8a:87:4f:64:56:08:e6:a0:07:e4:b9:f1:8a:
- 88:50:a0:cc:95:bd:ab:7e:02:97:0f:ce:1b:fe:56:fc:44:3c:
- fa:b2:98:f9:cf:b4:a6:07:9e:b4:c5:64:9a:49:90:4b:81:5c:
- ed:ee:cc:3a:4f:ca:36:e8:dd:3c:e7:c1:2b:6b:b9:62:29:f8:
- 6d:ca:61:53:40:20:32:1b:85:f9:55:0e:85:55:cf:bf:e9:b8:
- 5d:ec:16:aa:8d:1d:85:d8:18:1a:6a:aa:e2:91:cf:ba:8b:46:
- 2d:e8:d4:a9:24:98:20:b5:f7:e0:b9:fe:2e:ef:e9:94:17:c3:
- 54:57:8f:7f:f8:04:91:6a:d3:0c:3a:1f:50:1c:18:c1:08:fe:
- c9:83:4f:23:2f:c4:b8:8d:db:d3:f2:45:54:27:29:2b:f3:50:
- 7d:79:1f:38:17:09:8a:38:90:63:8b:29:8c:12:7f:1b:da:0e:
- 01:b5:c7:7d:9b:65:99:5b:3e:de:0b:b0:83:d7:81:b0:0d:b4:
- 09:b4:63:6d:2a:b0:25:f5:1f:cf:df:b1:fc:8a:c4:29:29:3b:
- d3:2c:ba:ad:83:21:56:dc:1e:7b:81:b8:77:4a:cb:09:e2:15:
- 32:3b:78:69:33:97:ff:2f:e0:94:83:9d:6d:27:d0:8f:f4:ae:
- 9d:7b:35:18
------BEGIN CERTIFICATE-----
-MIIDEjCCAfqgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwEQiBD
-QTAeFw0yMjEwMTkxNjU4NTVaFw0zMjEwMTYxNjU4NTVaMBgxFjAUBgNVBAMMDUNs
-aWVudCBDZXJ0IEEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa+Dq7
-TTFSw1AxRkaftrCM8tuPbYH7NTxLdHil0F2y4G+PvrlqN0qB43tRaKJPQEYhG+Rn
-ppXeOk6/AbgOFXBQCPoVJWOjxwMX3ea3rSLM5C9xUP9Rsnf/fkngD6G6pOo2nYin
-fgpINQDhGB/r8BJs69RNhvgdbN4aV7Bz8WGYqKF3DVhV+Di5zIOPNC9zoZQPey4d
-uMS06OERG7Op8fFws3QoCzEywVdAbe/R+m5oeg875vLVvmONwDi52mqv4rgbfl+a
-PhyyPzoR3hdIPEi13AQB5hmyLAcTDtvcib3beNLw586NXcYgQZdcbLmDkjVRDK4u
-niE4QaRUGeRJD2+xAgMBAAGjbzBtMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYI
-KwYBBQUHAwEGCCsGAQUFBwMCMB0GA1UdDgQWBBSQ42eTfRBubU1JKWU45fWcZmLd
-aTAfBgNVHSMEGDAWgBRvxexARA9ceASOZhFOoe4eODj9cjANBgkqhkiG9w0BAQsF
-AAOCAQEAPvOKn7eKh09kVgjmoAfkufGKiFCgzJW9q34Clw/OG/5W/EQ8+rKY+c+0
-pgeetMVkmkmQS4Fc7e7MOk/KNujdPOfBK2u5Yin4bcphU0AgMhuF+VUOhVXPv+m4
-XewWqo0dhdgYGmqq4pHPuotGLejUqSSYILX34Ln+Lu/plBfDVFePf/gEkWrTDDof
-UBwYwQj+yYNPIy/EuI3b0/JFVCcpK/NQfXkfOBcJijiQY4spjBJ/G9oOAbXHfZtl
-mVs+3guwg9eBsA20CbRjbSqwJfUfz9+x/IrEKSk70yy6rYMhVtwee4G4d0rLCeIV
-Mjt4aTOX/y/glIOdbSfQj/SunXs1GA==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/client_1.pk8 b/src/pki/testdata/ssl/certificates/client_1.pk8
deleted file mode 100644
index a65d7c5..0000000
--- a/src/pki/testdata/ssl/certificates/client_1.pk8
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/client_1_ca.pem b/src/pki/testdata/ssl/certificates/client_1_ca.pem
deleted file mode 100644
index bb2748f..0000000
--- a/src/pki/testdata/ssl/certificates/client_1_ca.pem
+++ /dev/null
@@ -1,78 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4097 (0x1001)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=C Root CA
- Validity
- Not Before: Oct 19 16:58:55 2022 GMT
- Not After : Oct 16 16:58:55 2032 GMT
- Subject: CN=B CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:95:90:e0:38:21:62:04:9f:f1:97:f7:39:cc:d9:
- 47:2b:99:0e:af:49:ea:ae:5b:cc:78:3b:b5:c6:63:
- 5c:2d:44:7c:81:ed:a2:2d:f3:64:87:e7:e8:47:f9:
- f4:a3:41:38:1d:fa:48:6c:3f:90:ad:39:4f:e2:32:
- 57:f1:89:5f:d1:d2:af:e7:92:c3:0d:43:d3:70:c6:
- 78:b2:2c:ac:e2:cd:34:49:7d:04:20:89:08:77:b4:
- 37:c9:bc:a3:f7:84:48:31:2b:63:ed:01:ce:59:78:
- c9:41:0f:2e:79:c4:34:41:8a:9f:7c:d0:61:ad:20:
- db:75:ef:af:08:f5:78:a0:68:69:fe:88:27:35:b0:
- 2f:5c:a6:eb:fb:1f:ab:e0:68:4c:bb:3a:be:9b:d1:
- e6:ab:bf:3a:d5:df:d1:80:ee:89:63:dd:0e:03:f2:
- 57:72:d0:0d:05:6e:71:b3:e1:a2:35:85:ae:c0:33:
- e5:a8:43:a9:ed:4a:56:3f:f0:e8:1b:97:a7:65:69:
- f9:3b:f1:42:31:09:db:c2:6b:8f:e3:7d:ec:02:58:
- 76:29:32:64:c3:9f:78:d3:f4:96:f4:03:8c:14:84:
- 50:43:4a:df:10:74:87:a1:31:29:a2:b6:3e:de:22:
- 2b:6b:67:e8:ef:f0:9b:b5:64:a0:cf:c4:6c:c8:22:
- d4:cb
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- X509v3 Subject Key Identifier:
- 6F:C5:EC:40:44:0F:5C:78:04:8E:66:11:4E:A1:EE:1E:38:38:FD:72
- X509v3 Authority Key Identifier:
- 33:7A:38:92:82:9E:B6:FD:44:FB:B5:BA:A7:C7:0B:4D:59:28:60:9A
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 00:fc:20:17:c8:1d:50:93:79:fc:1b:63:80:ee:95:a3:26:0d:
- b8:29:f4:35:89:db:0d:15:ef:b8:b7:1b:e5:1d:0e:29:dd:9c:
- c3:d9:37:37:2c:f8:9e:89:f5:3b:ff:70:0c:c1:54:cc:5f:50:
- e4:27:92:9b:3c:73:8c:04:83:b9:2f:18:3e:cf:85:c3:5b:8c:
- a9:76:56:4a:3d:e9:19:4a:ac:67:68:45:fd:b0:fe:f2:21:90:
- e5:11:e5:bd:7a:a9:8d:3f:76:51:d7:dc:71:68:1e:fd:4e:97:
- 56:7a:02:34:b8:ab:27:61:b8:a9:8a:20:ce:d7:ab:7e:ca:87:
- 7d:fd:cc:ee:21:f0:f8:68:ce:1e:bb:e2:01:c8:a3:b7:8a:f4:
- f1:af:97:63:e4:55:c9:23:bf:b6:54:95:a1:77:c6:27:af:6e:
- fc:c3:dc:ff:12:8b:05:67:ef:ad:82:7f:4c:36:32:73:09:dd:
- a5:f3:28:93:e8:16:00:2a:0f:2a:2a:64:d7:8c:fe:d2:4e:3a:
- 6d:7e:f5:ca:3c:48:86:ef:18:20:a3:97:a6:03:32:76:34:4d:
- cd:20:3f:6b:0a:d7:1a:3a:be:b6:90:08:3e:97:7b:71:b5:5b:
- b5:98:df:f4:1e:59:f8:05:f7:e8:0c:7e:af:3d:a4:db:d0:92:
- 4a:4a:65:c8
------BEGIN CERTIFICATE-----
-MIIDAjCCAeqgAwIBAgICEAEwDQYJKoZIhvcNAQELBQAwFDESMBAGA1UEAwwJQyBS
-b290IENBMB4XDTIyMTAxOTE2NTg1NVoXDTMyMTAxNjE2NTg1NVowDzENMAsGA1UE
-AwwEQiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJWQ4DghYgSf
-8Zf3OczZRyuZDq9J6q5bzHg7tcZjXC1EfIHtoi3zZIfn6Ef59KNBOB36SGw/kK05
-T+IyV/GJX9HSr+eSww1D03DGeLIsrOLNNEl9BCCJCHe0N8m8o/eESDErY+0Bzll4
-yUEPLnnENEGKn3zQYa0g23Xvrwj1eKBoaf6IJzWwL1ym6/sfq+BoTLs6vpvR5qu/
-OtXf0YDuiWPdDgPyV3LQDQVucbPhojWFrsAz5ahDqe1KVj/w6BuXp2Vp+TvxQjEJ
-28Jrj+N97AJYdikyZMOfeNP0lvQDjBSEUENK3xB0h6ExKaK2Pt4iK2tn6O/wm7Vk
-oM/EbMgi1MsCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
-AQYwHQYDVR0OBBYEFG/F7EBED1x4BI5mEU6h7h44OP1yMB8GA1UdIwQYMBaAFDN6
-OJKCnrb9RPu1uqfHC01ZKGCaMA0GCSqGSIb3DQEBCwUAA4IBAQAA/CAXyB1Qk3n8
-G2OA7pWjJg24KfQ1idsNFe+4txvlHQ4p3ZzD2Tc3LPieifU7/3AMwVTMX1DkJ5Kb
-PHOMBIO5Lxg+z4XDW4ypdlZKPekZSqxnaEX9sP7yIZDlEeW9eqmNP3ZR19xxaB79
-TpdWegI0uKsnYbipiiDO16t+yod9/czuIfD4aM4eu+IByKO3ivTxr5dj5FXJI7+2
-VJWhd8Ynr278w9z/EosFZ++tgn9MNjJzCd2l8yiT6BYAKg8qKmTXjP7STjptfvXK
-PEiG7xggo5emAzJ2NE3NID9rCtcaOr62kAg+l3txtVu1mN/0Hln4BffoDH6vPaTb
-0JJKSmXI
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/client_2.key b/src/pki/testdata/ssl/certificates/client_2.key
deleted file mode 100644
index 9ab337c..0000000
--- a/src/pki/testdata/ssl/certificates/client_2.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCn6fF3nDenhKvP
-6hqMzFxkp8LTIiQ61/u/hSAoEdZ5agEwSGQ75tg5SirIBsmCxe8D1Kxx0FjPgqpk
-u8q19nkDhqQ5WvroYvjvZkcCge/0Xn5ZbRXhcGTFyUmYR7vgjwTZ0nHJMGilJoK/
-bLxrb0+uQEHwXCMFAtorL4M0nQfyrpwGqD3+Oaffnxy/9Zr0OiNlmEewVzshVpfp
-JGQoMiIVfewrJ6Jdpv29DTh7OWY+XvG65IoRlRNZiDjteoP0ISmyHncuno6QEIL+
-3/hf+1f3VC4EzihOIunWC0eeZjbR1pg2lSLOx1AuP9Jm7glux6oqe9QQvLqmkGrL
-m/X+fRGLAgMBAAECggEACh0txbobohP8M1hTBBMVJ5zxP71pOEAlMkqG/tLgO8z2
-SF27593GPWEpxYWfIqjgdjcbsflOOCWTNOEY2y/+5wb3olrIDTJU8zqSYWTJOsts
-Sd+ntz4JW959d9YuS17h+GrUHr2zN+tjabtXeBMq1gCZ2Cv8kgMzd/FzMjqZLXVc
-6IPAYXw2YIz6gaECpGSG3FHRXHf2h4KbyP9kgJRtlPwq4L8do0UynsXSpVib/vAK
-VYd4FkD9DtzhXSGtGgajkcWhJ3HBkriyvdDiKPcHztz3rgEH7wv+yu8yTMxZE51i
-kkdNbspS1tgLqdNTUO7fCztG07Ii1irhwhF4vAVoOQKBgQDkxeSXTpWZXRTrxtPm
-h8N4sNIxT+rdFEJNRN6Uj/u/yOGL2sQe/qUnFF0QX9sXP37h0lPj2rMxnj5jB4+Y
-lr0ei+GpcIAUytuny4ZlBZ3FD70KPndLshBiK5nng58oMnSmduiDR/ABwDlW0gtK
-5/Qa57vaz60S5E9VwugeJuQmswKBgQC75dUioj43gt+YumMW8FwgUt6Ol5czo+G4
-jrsHh89Cl7mJJLY9A9ZMTQZRFPbIr49WVRLlM+0+L8Pe6WJ1GHiHxERUyllsm2Rt
-TzIEl8y2B0jk3vgV9ykTfU6h5X4j3R+W6f908icx0c5rHiTZz+8XJlMFF10/ZMHR
-CnBH8BoVyQKBgF+y5J/i0LO5+2Fx5/x8eGmJVjQooS/gJKgcEhwFayNcDfWqCvaI
-QV/qpc+OuaCtAA/JIyyitOkhsClO5WPIUs5vZ3OwyvNntKEpg0vJIKlpnwOlA9RX
-ZYEbiiMNrUtsZ92myjb4pc6lsZa/ANhR1YxXuf6bd2P6u7E9ekn6rN//AoGACsb4
-/Z6OsQJprsnqCxPIRPZb25PoUUbyGHLfWWQ5yBkJxEr9xOwma4Pze80XBpXDQ/Fn
-PwxGbE2zD2MViZ/YsfjY7oAYtvkGvppPRSIr1LkAPlhnpGLj0UFbtD+Eh6wUNsS/
-KUcGZn4hN9WnyXJ6xTomguE/MPang0T1AbtM07kCgYBednwjjC5zSCjXDmYgB+ZW
-rkI/wguNXjvrjLiA+eTsQgzk5gYiU8iMRahqmXjOF29O9pkKFUbNz6nDQTDkRUdK
-q4utJx4nubsFKQn0VZbz9z2jiEgpxRVc2vIrfYNuG+a8WAbGsFO8mT+35kyLWiyN
-hR3+Y4J+ghZQsZmtdctL9g==
------END PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/client_2.pem b/src/pki/testdata/ssl/certificates/client_2.pem
deleted file mode 100644
index fdae132..0000000
--- a/src/pki/testdata/ssl/certificates/client_2.pem
+++ /dev/null
@@ -1,78 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4098 (0x1002)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=E CA
- Validity
- Not Before: Oct 19 16:58:55 2022 GMT
- Not After : Oct 16 16:58:55 2032 GMT
- Subject: CN=Client Cert D
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:a7:e9:f1:77:9c:37:a7:84:ab:cf:ea:1a:8c:cc:
- 5c:64:a7:c2:d3:22:24:3a:d7:fb:bf:85:20:28:11:
- d6:79:6a:01:30:48:64:3b:e6:d8:39:4a:2a:c8:06:
- c9:82:c5:ef:03:d4:ac:71:d0:58:cf:82:aa:64:bb:
- ca:b5:f6:79:03:86:a4:39:5a:fa:e8:62:f8:ef:66:
- 47:02:81:ef:f4:5e:7e:59:6d:15:e1:70:64:c5:c9:
- 49:98:47:bb:e0:8f:04:d9:d2:71:c9:30:68:a5:26:
- 82:bf:6c:bc:6b:6f:4f:ae:40:41:f0:5c:23:05:02:
- da:2b:2f:83:34:9d:07:f2:ae:9c:06:a8:3d:fe:39:
- a7:df:9f:1c:bf:f5:9a:f4:3a:23:65:98:47:b0:57:
- 3b:21:56:97:e9:24:64:28:32:22:15:7d:ec:2b:27:
- a2:5d:a6:fd:bd:0d:38:7b:39:66:3e:5e:f1:ba:e4:
- 8a:11:95:13:59:88:38:ed:7a:83:f4:21:29:b2:1e:
- 77:2e:9e:8e:90:10:82:fe:df:f8:5f:fb:57:f7:54:
- 2e:04:ce:28:4e:22:e9:d6:0b:47:9e:66:36:d1:d6:
- 98:36:95:22:ce:c7:50:2e:3f:d2:66:ee:09:6e:c7:
- aa:2a:7b:d4:10:bc:ba:a6:90:6a:cb:9b:f5:fe:7d:
- 11:8b
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Key Identifier:
- D7:3C:2C:3F:BC:E3:23:9B:41:9E:BA:E7:65:C6:54:51:9F:FA:D6:F2
- X509v3 Authority Key Identifier:
- F7:95:02:B8:47:AB:AF:EF:98:4D:A8:F9:C8:24:D4:A5:4F:46:47:CB
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 07:c9:48:cf:dd:91:07:75:be:03:de:3d:66:44:18:89:0c:ec:
- 38:d7:9c:6b:6f:ce:f5:24:9f:33:cf:b9:88:2e:0b:94:ee:c5:
- 9c:23:1d:c0:b3:41:34:6b:89:90:c0:2c:ef:e6:ac:a1:53:2a:
- a0:01:c8:4e:26:d6:18:8b:d2:f2:f5:cc:06:fe:05:65:8b:1e:
- 62:56:eb:39:dc:ac:95:70:d7:b7:52:c0:4c:57:a5:5b:01:a6:
- 5f:75:76:8b:15:3e:f0:56:83:b7:62:d1:40:11:52:68:fb:fc:
- 46:ec:a0:06:0e:a0:ba:e6:3f:7e:b6:01:bd:df:a8:37:1a:2a:
- 08:00:b2:7b:1a:ca:2a:7f:47:d9:c9:7d:ac:fb:fb:84:fd:c0:
- f1:d7:53:26:01:c3:04:38:ca:30:c6:01:e5:6a:24:e0:72:2b:
- be:98:3b:af:ca:bb:b4:af:d0:ad:29:27:5d:63:99:0d:d5:0b:
- 8a:43:8c:f4:32:5d:a2:24:44:de:af:b9:fb:fe:b7:92:17:a5:
- a5:51:bb:30:b4:0b:1a:43:df:2b:80:d6:61:47:b0:31:36:38:
- d9:39:e4:f0:2c:cf:01:e2:6a:9e:f5:77:72:ca:42:ef:64:11:
- 5d:39:af:7e:25:52:a5:3f:dd:96:9a:79:f0:cf:1a:b4:34:80:
- a1:e8:eb:31
------BEGIN CERTIFICATE-----
-MIIDEjCCAfqgAwIBAgICEAIwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwERSBD
-QTAeFw0yMjEwMTkxNjU4NTVaFw0zMjEwMTYxNjU4NTVaMBgxFjAUBgNVBAMMDUNs
-aWVudCBDZXJ0IEQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCn6fF3
-nDenhKvP6hqMzFxkp8LTIiQ61/u/hSAoEdZ5agEwSGQ75tg5SirIBsmCxe8D1Kxx
-0FjPgqpku8q19nkDhqQ5WvroYvjvZkcCge/0Xn5ZbRXhcGTFyUmYR7vgjwTZ0nHJ
-MGilJoK/bLxrb0+uQEHwXCMFAtorL4M0nQfyrpwGqD3+Oaffnxy/9Zr0OiNlmEew
-VzshVpfpJGQoMiIVfewrJ6Jdpv29DTh7OWY+XvG65IoRlRNZiDjteoP0ISmyHncu
-no6QEIL+3/hf+1f3VC4EzihOIunWC0eeZjbR1pg2lSLOx1AuP9Jm7glux6oqe9QQ
-vLqmkGrLm/X+fRGLAgMBAAGjbzBtMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYI
-KwYBBQUHAwEGCCsGAQUFBwMCMB0GA1UdDgQWBBTXPCw/vOMjm0GeuudlxlRRn/rW
-8jAfBgNVHSMEGDAWgBT3lQK4R6uv75hNqPnIJNSlT0ZHyzANBgkqhkiG9w0BAQsF
-AAOCAQEAB8lIz92RB3W+A949ZkQYiQzsONeca2/O9SSfM8+5iC4LlO7FnCMdwLNB
-NGuJkMAs7+asoVMqoAHITibWGIvS8vXMBv4FZYseYlbrOdyslXDXt1LATFelWwGm
-X3V2ixU+8FaDt2LRQBFSaPv8RuygBg6guuY/frYBvd+oNxoqCACyexrKKn9H2cl9
-rPv7hP3A8ddTJgHDBDjKMMYB5Wok4HIrvpg7r8q7tK/QrSknXWOZDdULikOM9DJd
-oiRE3q+5+/63khelpVG7MLQLGkPfK4DWYUewMTY42Tnk8CzPAeJqnvV3cspC72QR
-XTmvfiVSpT/dlpp58M8atDSAoejrMQ==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/client_2.pk8 b/src/pki/testdata/ssl/certificates/client_2.pk8
deleted file mode 100644
index c2a578f..0000000
--- a/src/pki/testdata/ssl/certificates/client_2.pk8
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/client_2_ca.pem b/src/pki/testdata/ssl/certificates/client_2_ca.pem
deleted file mode 100644
index 9709d46..0000000
--- a/src/pki/testdata/ssl/certificates/client_2_ca.pem
+++ /dev/null
@@ -1,78 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4098 (0x1002)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=C Root CA
- Validity
- Not Before: Oct 19 16:58:55 2022 GMT
- Not After : Oct 16 16:58:55 2032 GMT
- Subject: CN=E CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:a8:49:c7:44:8c:f4:90:52:36:4f:46:d7:68:0a:
- 3d:dc:3a:13:3c:61:45:fb:cf:5e:8e:06:c1:35:5d:
- 75:f1:33:d7:f0:5b:0e:34:99:19:9d:df:b5:81:40:
- aa:1d:eb:f7:45:6e:7f:e2:b5:6e:70:42:5f:a5:bd:
- 47:dd:d8:f9:4e:33:03:81:ea:40:c4:0f:ed:53:35:
- ab:78:61:e5:aa:80:46:b6:1f:b9:a1:aa:80:c6:cd:
- 4c:3c:a6:63:fd:ed:bf:fd:f2:df:1a:b9:de:e9:40:
- 1b:cb:00:39:e9:dc:cd:78:70:3d:1b:20:32:49:6b:
- 0b:eb:c5:31:27:50:4f:5f:fd:a7:7b:77:1e:d0:a1:
- 20:01:56:5c:a6:2c:1d:4b:48:8d:8d:03:94:73:e6:
- f6:94:39:59:3c:fc:07:ae:cb:dc:02:7f:2d:04:42:
- 5c:d6:ff:86:76:a3:bc:7f:1e:0e:a0:4c:12:ce:58:
- f7:42:2d:5b:9d:6b:ef:47:e2:ce:71:89:08:15:fd:
- 2c:47:a5:a0:7e:73:ed:0c:b0:fc:b8:7c:0e:cf:fd:
- e4:38:5f:ce:8e:80:f2:99:db:fc:fc:ad:9d:b4:be:
- 28:4f:e5:5d:5c:93:36:75:4c:64:25:9f:53:64:a5:
- 37:66:49:5b:bf:82:f4:01:77:d8:ef:cc:ce:bb:13:
- 4c:01
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- X509v3 Subject Key Identifier:
- F7:95:02:B8:47:AB:AF:EF:98:4D:A8:F9:C8:24:D4:A5:4F:46:47:CB
- X509v3 Authority Key Identifier:
- 33:7A:38:92:82:9E:B6:FD:44:FB:B5:BA:A7:C7:0B:4D:59:28:60:9A
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 79:d6:b7:44:92:09:42:bc:96:d8:da:92:c1:cb:9b:19:eb:38:
- 98:66:ec:3f:b6:14:a2:31:37:9b:0d:3f:83:cb:fa:80:75:19:
- fa:1e:78:7b:05:55:43:a1:17:2d:9a:ad:f9:f2:1f:56:01:c1:
- c8:78:02:1c:60:7b:40:95:a9:b3:82:52:65:d8:74:f4:46:b4:
- 03:a0:98:db:b4:75:4d:f4:dd:73:84:33:9b:7d:91:78:7a:5b:
- 50:08:12:d5:f1:d3:c0:90:fd:2b:14:61:76:96:a3:03:f2:ac:
- 7a:b3:f6:9e:ab:a2:07:d1:ae:4d:be:e7:d1:1e:d6:a3:32:be:
- 70:70:54:fc:d1:c9:3e:bd:7c:0e:1a:03:17:12:c6:78:3b:df:
- 91:61:a9:0f:0a:65:bc:b2:c0:41:da:c3:32:8a:0e:ef:75:89:
- 1b:11:27:0a:bb:47:91:c2:e4:71:ea:91:d4:4d:66:c1:a1:3b:
- 06:8d:54:b6:da:6f:54:e6:d7:4f:f2:18:b8:d5:59:cb:47:0d:
- 9f:d8:1c:6a:20:9c:e2:93:07:a3:dd:94:13:2c:ab:1d:1a:71:
- eb:5b:62:12:20:e5:e1:cd:d1:e0:63:fd:94:34:b2:a5:b8:84:
- ee:af:2d:11:3d:f2:91:74:f2:ef:bd:55:c6:cf:72:ff:b1:74:
- e5:6e:6c:3e
------BEGIN CERTIFICATE-----
-MIIDAjCCAeqgAwIBAgICEAIwDQYJKoZIhvcNAQELBQAwFDESMBAGA1UEAwwJQyBS
-b290IENBMB4XDTIyMTAxOTE2NTg1NVoXDTMyMTAxNjE2NTg1NVowDzENMAsGA1UE
-AwwERSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKhJx0SM9JBS
-Nk9G12gKPdw6EzxhRfvPXo4GwTVddfEz1/BbDjSZGZ3ftYFAqh3r90Vuf+K1bnBC
-X6W9R93Y+U4zA4HqQMQP7VM1q3hh5aqARrYfuaGqgMbNTDymY/3tv/3y3xq53ulA
-G8sAOenczXhwPRsgMklrC+vFMSdQT1/9p3t3HtChIAFWXKYsHUtIjY0DlHPm9pQ5
-WTz8B67L3AJ/LQRCXNb/hnajvH8eDqBMEs5Y90ItW51r70fiznGJCBX9LEeloH5z
-7Qyw/Lh8Ds/95Dhfzo6A8pnb/PytnbS+KE/lXVyTNnVMZCWfU2SlN2ZJW7+C9AF3
-2O/MzrsTTAECAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
-AQYwHQYDVR0OBBYEFPeVArhHq6/vmE2o+cgk1KVPRkfLMB8GA1UdIwQYMBaAFDN6
-OJKCnrb9RPu1uqfHC01ZKGCaMA0GCSqGSIb3DQEBCwUAA4IBAQB51rdEkglCvJbY
-2pLBy5sZ6ziYZuw/thSiMTebDT+Dy/qAdRn6Hnh7BVVDoRctmq358h9WAcHIeAIc
-YHtAlamzglJl2HT0RrQDoJjbtHVN9N1zhDObfZF4eltQCBLV8dPAkP0rFGF2lqMD
-8qx6s/aeq6IH0a5NvufRHtajMr5wcFT80ck+vXwOGgMXEsZ4O9+RYakPCmW8ssBB
-2sMyig7vdYkbEScKu0eRwuRx6pHUTWbBoTsGjVS22m9U5tdP8hi41VnLRw2f2Bxq
-IJzikwej3ZQTLKsdGnHrW2ISIOXhzdHgY/2UNLKluITury0RPfKRdPLvvVXGz3L/
-sXTlbmw+
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/client_3.key b/src/pki/testdata/ssl/certificates/client_3.key
deleted file mode 100644
index 0d63299..0000000
--- a/src/pki/testdata/ssl/certificates/client_3.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCfzCuI/9Gc9CqR
-sv/uuBw1erHiCSrkvF80sO9WW9Y11byU6Iek160lKYXjfTI17mv4tMRsvwehSy+k
-ira0sXi0V1l7hUvyHFSVwH0U1e7jmS3Fzat0i+3gU3qdG5WX15dwtkp4RuRc7QAn
-selsyir6a4Kg3JivNCgH/VDlnnQwOB3QkBRsCpDNffMeHk7oj1JN/uJGZ536cpPI
-u8DrubVYe0dhHeKClG2+PYATq4BE7Ix7A3KNGhv7en9CzLOA40OD5XCDb2jWCkJL
-D0ME+1/TXDI7IuVXtHRl/ULwiWYcqZwQ1nF/qHWVCQVdQtP0RdQdJMgfm/vEiH56
-CP9SGHDnAgMBAAECggEAEcSK5q3DKdeAUDj9+hYglNWyp7ZrPYmwcFRoGEsX016T
-nF8KjgqpJuOqDnRiO9rpyHqZCJppB8crYflGfWrqR+saeQCGREJgKVKA1es/p7Dl
-hQPsV4YjifjePk/N31dKcG7kcuE3DRoRFVjT4pPMGZIQsUA1/e0nslO5Rf7LXn0B
-4IeVYiAeY46+RJ+oDA0OBCaAuPxB/VL7tLKSbGNxuGEiszHy5uSdy6mGl4rRCXoI
-y8G8oo7L3x3lwNCEyWJoKSAzrOgHK9BpJTNP1X2dI4o3tk85oOo3XJSlduWnHQyT
-R5h/AmSNhmLsxWtFszDyGNrvuh5KC584XN9JXSp4GQKBgQDMclgNL9T10okUmyus
-FdSJVk5PsJfRCUrofXiam41xjCjkHdH8cTogt0ey+Tc/cym8a7e2rk51qwnVET+n
-/OJW4YFDUFhSMAcqLOU0qcESaIcfS61+9YpgoVGPFpKUaEXzYlprTeW+nDyBOJcD
-/jeejm5W9HnOrDONI+717ffZmwKBgQDIF5bZnDR2j45l5MpaLrL7y4MDF8MefvHh
-5hw4Xzax57GpDoHATrVfHCIFsnOrtn8tBhugLTpeH3m7su3YVUXDFzl21JkbFJ6M
-8TcxoocuoxmJGQVVhABC9NXJuA79LBd7tTPPAeRxhRi1vHiNTR9pzemJjCo3JUks
-omIwBPaQpQKBgFbFRPe70E/Q3ls/jGaKEV2EotIRqi2PGxrXfeNol7yUdxpySZgx
-2jDeePDN8xPb5d/Re/RtwGESiabDnlfG7a1gIkOWixW+ypus2E7kqUwNzyOKNAWJ
-YwSmEv5+3xFbvCyTFrsqIZMnrkpN4VJRh/ukidIgCr6buXlywc3hBOt3AoGBALY4
-5WRgYVbn/eLFrZLbnJy7BiE27rdDHL2BdonQDFuQibdQQtID3CE12bYegkEK/l7e
-hSImjlVRjOdnWDv/zHyTFf4mNxj2ej4ZHw7Q2ROb7ZFxe+4ZPLO9jUUbnmrqUKiU
-qQ4Ixyaq84nujksAxW7x25EsWPXHuxAvAgSBQJsRAoGBAJ1s8TSniokwMUBydO2F
-Kupa3h85153Bu1X1nyehLQZw54jd8DkwDZnQSUx8YhcdMmiUp8He7G9egeE5w8qb
-PeDQcp6JXH3Z9UuonIwxz086RUXf1C1xu2xLoH07SWjzBZCuJcbGI4+jF6RQCvEl
-OwlLBF0aS7GzeQykN7zOf4E5
------END PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/client_3.pem b/src/pki/testdata/ssl/certificates/client_3.pem
deleted file mode 100644
index 63d9cc0..0000000
--- a/src/pki/testdata/ssl/certificates/client_3.pem
+++ /dev/null
@@ -1,77 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4099 (0x1003)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=E CA
- Validity
- Not Before: Oct 19 16:58:55 2022 GMT
- Not After : Oct 16 16:58:55 2032 GMT
- Subject: CN=Client Cert F
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:9f:cc:2b:88:ff:d1:9c:f4:2a:91:b2:ff:ee:b8:
- 1c:35:7a:b1:e2:09:2a:e4:bc:5f:34:b0:ef:56:5b:
- d6:35:d5:bc:94:e8:87:a4:d7:ad:25:29:85:e3:7d:
- 32:35:ee:6b:f8:b4:c4:6c:bf:07:a1:4b:2f:a4:8a:
- b6:b4:b1:78:b4:57:59:7b:85:4b:f2:1c:54:95:c0:
- 7d:14:d5:ee:e3:99:2d:c5:cd:ab:74:8b:ed:e0:53:
- 7a:9d:1b:95:97:d7:97:70:b6:4a:78:46:e4:5c:ed:
- 00:27:b1:e9:6c:ca:2a:fa:6b:82:a0:dc:98:af:34:
- 28:07:fd:50:e5:9e:74:30:38:1d:d0:90:14:6c:0a:
- 90:cd:7d:f3:1e:1e:4e:e8:8f:52:4d:fe:e2:46:67:
- 9d:fa:72:93:c8:bb:c0:eb:b9:b5:58:7b:47:61:1d:
- e2:82:94:6d:be:3d:80:13:ab:80:44:ec:8c:7b:03:
- 72:8d:1a:1b:fb:7a:7f:42:cc:b3:80:e3:43:83:e5:
- 70:83:6f:68:d6:0a:42:4b:0f:43:04:fb:5f:d3:5c:
- 32:3b:22:e5:57:b4:74:65:fd:42:f0:89:66:1c:a9:
- 9c:10:d6:71:7f:a8:75:95:09:05:5d:42:d3:f4:45:
- d4:1d:24:c8:1f:9b:fb:c4:88:7e:7a:08:ff:52:18:
- 70:e7
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Subject Alternative Name:
- email:santest@example.com, othername: UPN::santest@ad.corp.example.com
- X509v3 Subject Key Identifier:
- 07:70:4F:5A:12:6A:60:B9:06:FE:53:36:97:23:3B:7F:AA:29:C7:59
- X509v3 Authority Key Identifier:
- F7:95:02:B8:47:AB:AF:EF:98:4D:A8:F9:C8:24:D4:A5:4F:46:47:CB
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 90:82:56:b7:4b:e1:92:3a:b3:50:00:a9:ac:c2:92:45:b5:4a:
- c1:2a:c7:b8:03:a2:c1:72:2f:eb:7e:48:4d:52:19:66:e0:2c:
- fa:24:88:7b:b2:6b:58:3e:f7:79:14:04:b6:c6:46:9e:2c:da:
- 93:ac:9e:89:4f:da:91:a5:b9:fc:9b:23:4b:cd:63:9e:bc:7f:
- 64:cc:c3:66:09:39:2d:6e:26:84:a1:50:4e:e4:08:68:76:92:
- 89:ff:07:6a:5e:6d:44:58:8c:d8:37:60:73:ae:b3:27:b4:9f:
- e0:fe:48:4a:a7:78:c2:b0:5b:de:c6:bb:ec:b0:9e:43:00:e7:
- dc:d3:8a:0e:ea:b8:de:b8:7c:f4:3a:2b:fd:9a:a0:1e:05:ac:
- f2:ae:8d:42:15:c3:24:d2:7e:e4:bd:85:65:72:1b:2e:7f:3d:
- 4f:cd:1c:43:2f:dd:94:e5:14:29:fb:af:75:7f:5b:7b:46:4e:
- 05:df:b0:8f:be:5a:1b:a2:77:40:ba:ad:ad:87:1b:73:25:36:
- 0f:b7:5a:c5:82:d6:20:69:fe:b9:bf:4c:4e:c9:d1:85:94:c3:
- 43:e1:f3:1e:51:b8:6b:76:62:ab:fd:02:cf:c6:9e:2a:42:3c:
- 58:75:b0:60:7f:e6:6b:26:d4:70:06:55:4e:af:33:6e:99:40:
- 67:62:50:69
------BEGIN CERTIFICATE-----
-MIIDNDCCAhygAwIBAgICEAMwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwERSBD
-QTAeFw0yMjEwMTkxNjU4NTVaFw0zMjEwMTYxNjU4NTVaMBgxFjAUBgNVBAMMDUNs
-aWVudCBDZXJ0IEYwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCfzCuI
-/9Gc9CqRsv/uuBw1erHiCSrkvF80sO9WW9Y11byU6Iek160lKYXjfTI17mv4tMRs
-vwehSy+kira0sXi0V1l7hUvyHFSVwH0U1e7jmS3Fzat0i+3gU3qdG5WX15dwtkp4
-RuRc7QAnselsyir6a4Kg3JivNCgH/VDlnnQwOB3QkBRsCpDNffMeHk7oj1JN/uJG
-Z536cpPIu8DrubVYe0dhHeKClG2+PYATq4BE7Ix7A3KNGhv7en9CzLOA40OD5XCD
-b2jWCkJLD0ME+1/TXDI7IuVXtHRl/ULwiWYcqZwQ1nF/qHWVCQVdQtP0RdQdJMgf
-m/vEiH56CP9SGHDnAgMBAAGjgZAwgY0wSwYDVR0RBEQwQoETc2FudGVzdEBleGFt
-cGxlLmNvbaArBgorBgEEAYI3FAIDoB0MG3NhbnRlc3RAYWQuY29ycC5leGFtcGxl
-LmNvbTAdBgNVHQ4EFgQUB3BPWhJqYLkG/lM2lyM7f6opx1kwHwYDVR0jBBgwFoAU
-95UCuEerr++YTaj5yCTUpU9GR8swDQYJKoZIhvcNAQELBQADggEBAJCCVrdL4ZI6
-s1AAqazCkkW1SsEqx7gDosFyL+t+SE1SGWbgLPokiHuya1g+93kUBLbGRp4s2pOs
-nolP2pGlufybI0vNY568f2TMw2YJOS1uJoShUE7kCGh2kon/B2pebURYjNg3YHOu
-sye0n+D+SEqneMKwW97Gu+ywnkMA59zTig7quN64fPQ6K/2aoB4FrPKujUIVwyTS
-fuS9hWVyGy5/PU/NHEMv3ZTlFCn7r3V/W3tGTgXfsI++Whuid0C6ra2HG3MlNg+3
-WsWC1iBp/rm/TE7J0YWUw0Ph8x5RuGt2Yqv9As/GnipCPFh1sGB/5msm1HAGVU6v
-M26ZQGdiUGk=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/client_3.pk8 b/src/pki/testdata/ssl/certificates/client_3.pk8
deleted file mode 100644
index cf052ef..0000000
--- a/src/pki/testdata/ssl/certificates/client_3.pk8
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/client_3_ca.pem b/src/pki/testdata/ssl/certificates/client_3_ca.pem
deleted file mode 100644
index 9709d46..0000000
--- a/src/pki/testdata/ssl/certificates/client_3_ca.pem
+++ /dev/null
@@ -1,78 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4098 (0x1002)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=C Root CA
- Validity
- Not Before: Oct 19 16:58:55 2022 GMT
- Not After : Oct 16 16:58:55 2032 GMT
- Subject: CN=E CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:a8:49:c7:44:8c:f4:90:52:36:4f:46:d7:68:0a:
- 3d:dc:3a:13:3c:61:45:fb:cf:5e:8e:06:c1:35:5d:
- 75:f1:33:d7:f0:5b:0e:34:99:19:9d:df:b5:81:40:
- aa:1d:eb:f7:45:6e:7f:e2:b5:6e:70:42:5f:a5:bd:
- 47:dd:d8:f9:4e:33:03:81:ea:40:c4:0f:ed:53:35:
- ab:78:61:e5:aa:80:46:b6:1f:b9:a1:aa:80:c6:cd:
- 4c:3c:a6:63:fd:ed:bf:fd:f2:df:1a:b9:de:e9:40:
- 1b:cb:00:39:e9:dc:cd:78:70:3d:1b:20:32:49:6b:
- 0b:eb:c5:31:27:50:4f:5f:fd:a7:7b:77:1e:d0:a1:
- 20:01:56:5c:a6:2c:1d:4b:48:8d:8d:03:94:73:e6:
- f6:94:39:59:3c:fc:07:ae:cb:dc:02:7f:2d:04:42:
- 5c:d6:ff:86:76:a3:bc:7f:1e:0e:a0:4c:12:ce:58:
- f7:42:2d:5b:9d:6b:ef:47:e2:ce:71:89:08:15:fd:
- 2c:47:a5:a0:7e:73:ed:0c:b0:fc:b8:7c:0e:cf:fd:
- e4:38:5f:ce:8e:80:f2:99:db:fc:fc:ad:9d:b4:be:
- 28:4f:e5:5d:5c:93:36:75:4c:64:25:9f:53:64:a5:
- 37:66:49:5b:bf:82:f4:01:77:d8:ef:cc:ce:bb:13:
- 4c:01
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- X509v3 Subject Key Identifier:
- F7:95:02:B8:47:AB:AF:EF:98:4D:A8:F9:C8:24:D4:A5:4F:46:47:CB
- X509v3 Authority Key Identifier:
- 33:7A:38:92:82:9E:B6:FD:44:FB:B5:BA:A7:C7:0B:4D:59:28:60:9A
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 79:d6:b7:44:92:09:42:bc:96:d8:da:92:c1:cb:9b:19:eb:38:
- 98:66:ec:3f:b6:14:a2:31:37:9b:0d:3f:83:cb:fa:80:75:19:
- fa:1e:78:7b:05:55:43:a1:17:2d:9a:ad:f9:f2:1f:56:01:c1:
- c8:78:02:1c:60:7b:40:95:a9:b3:82:52:65:d8:74:f4:46:b4:
- 03:a0:98:db:b4:75:4d:f4:dd:73:84:33:9b:7d:91:78:7a:5b:
- 50:08:12:d5:f1:d3:c0:90:fd:2b:14:61:76:96:a3:03:f2:ac:
- 7a:b3:f6:9e:ab:a2:07:d1:ae:4d:be:e7:d1:1e:d6:a3:32:be:
- 70:70:54:fc:d1:c9:3e:bd:7c:0e:1a:03:17:12:c6:78:3b:df:
- 91:61:a9:0f:0a:65:bc:b2:c0:41:da:c3:32:8a:0e:ef:75:89:
- 1b:11:27:0a:bb:47:91:c2:e4:71:ea:91:d4:4d:66:c1:a1:3b:
- 06:8d:54:b6:da:6f:54:e6:d7:4f:f2:18:b8:d5:59:cb:47:0d:
- 9f:d8:1c:6a:20:9c:e2:93:07:a3:dd:94:13:2c:ab:1d:1a:71:
- eb:5b:62:12:20:e5:e1:cd:d1:e0:63:fd:94:34:b2:a5:b8:84:
- ee:af:2d:11:3d:f2:91:74:f2:ef:bd:55:c6:cf:72:ff:b1:74:
- e5:6e:6c:3e
------BEGIN CERTIFICATE-----
-MIIDAjCCAeqgAwIBAgICEAIwDQYJKoZIhvcNAQELBQAwFDESMBAGA1UEAwwJQyBS
-b290IENBMB4XDTIyMTAxOTE2NTg1NVoXDTMyMTAxNjE2NTg1NVowDzENMAsGA1UE
-AwwERSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKhJx0SM9JBS
-Nk9G12gKPdw6EzxhRfvPXo4GwTVddfEz1/BbDjSZGZ3ftYFAqh3r90Vuf+K1bnBC
-X6W9R93Y+U4zA4HqQMQP7VM1q3hh5aqARrYfuaGqgMbNTDymY/3tv/3y3xq53ulA
-G8sAOenczXhwPRsgMklrC+vFMSdQT1/9p3t3HtChIAFWXKYsHUtIjY0DlHPm9pQ5
-WTz8B67L3AJ/LQRCXNb/hnajvH8eDqBMEs5Y90ItW51r70fiznGJCBX9LEeloH5z
-7Qyw/Lh8Ds/95Dhfzo6A8pnb/PytnbS+KE/lXVyTNnVMZCWfU2SlN2ZJW7+C9AF3
-2O/MzrsTTAECAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
-AQYwHQYDVR0OBBYEFPeVArhHq6/vmE2o+cgk1KVPRkfLMB8GA1UdIwQYMBaAFDN6
-OJKCnrb9RPu1uqfHC01ZKGCaMA0GCSqGSIb3DQEBCwUAA4IBAQB51rdEkglCvJbY
-2pLBy5sZ6ziYZuw/thSiMTebDT+Dy/qAdRn6Hnh7BVVDoRctmq358h9WAcHIeAIc
-YHtAlamzglJl2HT0RrQDoJjbtHVN9N1zhDObfZF4eltQCBLV8dPAkP0rFGF2lqMD
-8qx6s/aeq6IH0a5NvufRHtajMr5wcFT80ck+vXwOGgMXEsZ4O9+RYakPCmW8ssBB
-2sMyig7vdYkbEScKu0eRwuRx6pHUTWbBoTsGjVS22m9U5tdP8hi41VnLRw2f2Bxq
-IJzikwej3ZQTLKsdGnHrW2ISIOXhzdHgY/2UNLKluITury0RPfKRdPLvvVXGz3L/
-sXTlbmw+
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/client_4.key b/src/pki/testdata/ssl/certificates/client_4.key
deleted file mode 100644
index 54ae5fc..0000000
--- a/src/pki/testdata/ssl/certificates/client_4.key
+++ /dev/null
@@ -1,5 +0,0 @@
------BEGIN EC PRIVATE KEY-----
-MHcCAQEEIAK4v0jF1vvMR4iTvXwB4m/KSIllNDTEufAy/oXSanFHoAoGCCqGSM49
-AwEHoUQDQgAEhWRFJ+xiDW79ytVAhbV0/BaTIytPuMebZAU78Qlb0qU7LC4uzWAe
-kl7i52305fpCCcx13l3AKDqmYZzU2NoxqA==
------END EC PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/client_4.pem b/src/pki/testdata/ssl/certificates/client_4.pem
deleted file mode 100644
index 0b14171..0000000
--- a/src/pki/testdata/ssl/certificates/client_4.pem
+++ /dev/null
@@ -1,62 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4100 (0x1004)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=E CA
- Validity
- Not Before: Oct 19 16:58:55 2022 GMT
- Not After : Oct 16 16:58:55 2032 GMT
- Subject: CN=Client Cert G
- Subject Public Key Info:
- Public Key Algorithm: id-ecPublicKey
- Public-Key: (256 bit)
- pub:
- 04:85:64:45:27:ec:62:0d:6e:fd:ca:d5:40:85:b5:
- 74:fc:16:93:23:2b:4f:b8:c7:9b:64:05:3b:f1:09:
- 5b:d2:a5:3b:2c:2e:2e:cd:60:1e:92:5e:e2:e7:6d:
- f4:e5:fa:42:09:cc:75:de:5d:c0:28:3a:a6:61:9c:
- d4:d8:da:31:a8
- ASN1 OID: prime256v1
- NIST CURVE: P-256
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Key Identifier:
- F4:DC:DA:D1:28:7E:11:52:81:D1:FF:8D:A0:F8:85:87:78:5F:6B:DC
- X509v3 Authority Key Identifier:
- F7:95:02:B8:47:AB:AF:EF:98:4D:A8:F9:C8:24:D4:A5:4F:46:47:CB
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 84:c0:ba:64:eb:32:97:8f:1c:d4:88:0a:94:0a:d3:12:e2:3f:
- b1:8d:70:85:ad:7f:28:11:00:4f:76:04:66:e0:3f:dd:56:44:
- 98:f5:f0:b6:c8:22:ff:04:77:70:f9:18:f2:9b:1e:6f:fd:2a:
- 5c:fc:40:3a:8a:b2:af:8d:df:33:6b:46:26:4d:5a:23:29:cd:
- 07:ef:06:f7:b2:13:61:f0:20:26:14:7b:79:c5:cf:76:04:01:
- d6:f8:22:b1:05:22:6d:78:1d:8d:1b:f3:52:9c:4d:2b:c9:bf:
- 3d:9c:48:88:9a:99:1f:1f:ea:27:b3:8b:81:62:f0:59:66:a8:
- 7e:3f:fb:a6:05:a4:d3:5d:e3:d4:2e:b0:ba:f2:d9:dd:80:1b:
- 08:fd:2b:e3:c5:76:9d:6e:62:d0:0d:41:dd:44:5b:b7:cc:14:
- 44:5f:4e:58:e1:28:aa:63:3d:69:05:82:55:b5:51:2c:6d:bd:
- ca:a5:ce:a6:5d:d6:02:cc:ca:77:e9:3e:a4:f8:05:61:eb:ef:
- 23:eb:ac:b9:93:1e:b5:49:e9:40:9c:b1:3c:b7:c0:ea:20:bd:
- 0f:58:64:82:ea:42:35:21:39:e8:c9:d0:66:d2:1d:e1:22:fa:
- 7e:2c:b3:48:a0:ee:3b:55:f6:78:7b:ec:3e:66:75:6c:ae:48:
- dd:3e:cd:f6
------BEGIN CERTIFICATE-----
-MIICRzCCAS+gAwIBAgICEAQwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwERSBD
-QTAeFw0yMjEwMTkxNjU4NTVaFw0zMjEwMTYxNjU4NTVaMBgxFjAUBgNVBAMMDUNs
-aWVudCBDZXJ0IEcwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASFZEUn7GINbv3K
-1UCFtXT8FpMjK0+4x5tkBTvxCVvSpTssLi7NYB6SXuLnbfTl+kIJzHXeXcAoOqZh
-nNTY2jGoo28wbTAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggr
-BgEFBQcDAjAdBgNVHQ4EFgQU9Nza0Sh+EVKB0f+NoPiFh3hfa9wwHwYDVR0jBBgw
-FoAU95UCuEerr++YTaj5yCTUpU9GR8swDQYJKoZIhvcNAQELBQADggEBAITAumTr
-MpePHNSICpQK0xLiP7GNcIWtfygRAE92BGbgP91WRJj18LbIIv8Ed3D5GPKbHm/9
-Klz8QDqKsq+N3zNrRiZNWiMpzQfvBveyE2HwICYUe3nFz3YEAdb4IrEFIm14HY0b
-81KcTSvJvz2cSIiamR8f6iezi4Fi8FlmqH4/+6YFpNNd49QusLry2d2AGwj9K+PF
-dp1uYtANQd1EW7fMFERfTljhKKpjPWkFglW1USxtvcqlzqZd1gLMynfpPqT4BWHr
-7yPrrLmTHrVJ6UCcsTy3wOogvQ9YZILqQjUhOejJ0GbSHeEi+n4ss0ig7jtV9nh7
-7D5mdWyuSN0+zfY=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/client_4.pk8 b/src/pki/testdata/ssl/certificates/client_4.pk8
deleted file mode 100644
index 5342e82..0000000
--- a/src/pki/testdata/ssl/certificates/client_4.pk8
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/client_4_ca.pem b/src/pki/testdata/ssl/certificates/client_4_ca.pem
deleted file mode 100644
index 9709d46..0000000
--- a/src/pki/testdata/ssl/certificates/client_4_ca.pem
+++ /dev/null
@@ -1,78 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4098 (0x1002)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=C Root CA
- Validity
- Not Before: Oct 19 16:58:55 2022 GMT
- Not After : Oct 16 16:58:55 2032 GMT
- Subject: CN=E CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:a8:49:c7:44:8c:f4:90:52:36:4f:46:d7:68:0a:
- 3d:dc:3a:13:3c:61:45:fb:cf:5e:8e:06:c1:35:5d:
- 75:f1:33:d7:f0:5b:0e:34:99:19:9d:df:b5:81:40:
- aa:1d:eb:f7:45:6e:7f:e2:b5:6e:70:42:5f:a5:bd:
- 47:dd:d8:f9:4e:33:03:81:ea:40:c4:0f:ed:53:35:
- ab:78:61:e5:aa:80:46:b6:1f:b9:a1:aa:80:c6:cd:
- 4c:3c:a6:63:fd:ed:bf:fd:f2:df:1a:b9:de:e9:40:
- 1b:cb:00:39:e9:dc:cd:78:70:3d:1b:20:32:49:6b:
- 0b:eb:c5:31:27:50:4f:5f:fd:a7:7b:77:1e:d0:a1:
- 20:01:56:5c:a6:2c:1d:4b:48:8d:8d:03:94:73:e6:
- f6:94:39:59:3c:fc:07:ae:cb:dc:02:7f:2d:04:42:
- 5c:d6:ff:86:76:a3:bc:7f:1e:0e:a0:4c:12:ce:58:
- f7:42:2d:5b:9d:6b:ef:47:e2:ce:71:89:08:15:fd:
- 2c:47:a5:a0:7e:73:ed:0c:b0:fc:b8:7c:0e:cf:fd:
- e4:38:5f:ce:8e:80:f2:99:db:fc:fc:ad:9d:b4:be:
- 28:4f:e5:5d:5c:93:36:75:4c:64:25:9f:53:64:a5:
- 37:66:49:5b:bf:82:f4:01:77:d8:ef:cc:ce:bb:13:
- 4c:01
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- X509v3 Subject Key Identifier:
- F7:95:02:B8:47:AB:AF:EF:98:4D:A8:F9:C8:24:D4:A5:4F:46:47:CB
- X509v3 Authority Key Identifier:
- 33:7A:38:92:82:9E:B6:FD:44:FB:B5:BA:A7:C7:0B:4D:59:28:60:9A
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 79:d6:b7:44:92:09:42:bc:96:d8:da:92:c1:cb:9b:19:eb:38:
- 98:66:ec:3f:b6:14:a2:31:37:9b:0d:3f:83:cb:fa:80:75:19:
- fa:1e:78:7b:05:55:43:a1:17:2d:9a:ad:f9:f2:1f:56:01:c1:
- c8:78:02:1c:60:7b:40:95:a9:b3:82:52:65:d8:74:f4:46:b4:
- 03:a0:98:db:b4:75:4d:f4:dd:73:84:33:9b:7d:91:78:7a:5b:
- 50:08:12:d5:f1:d3:c0:90:fd:2b:14:61:76:96:a3:03:f2:ac:
- 7a:b3:f6:9e:ab:a2:07:d1:ae:4d:be:e7:d1:1e:d6:a3:32:be:
- 70:70:54:fc:d1:c9:3e:bd:7c:0e:1a:03:17:12:c6:78:3b:df:
- 91:61:a9:0f:0a:65:bc:b2:c0:41:da:c3:32:8a:0e:ef:75:89:
- 1b:11:27:0a:bb:47:91:c2:e4:71:ea:91:d4:4d:66:c1:a1:3b:
- 06:8d:54:b6:da:6f:54:e6:d7:4f:f2:18:b8:d5:59:cb:47:0d:
- 9f:d8:1c:6a:20:9c:e2:93:07:a3:dd:94:13:2c:ab:1d:1a:71:
- eb:5b:62:12:20:e5:e1:cd:d1:e0:63:fd:94:34:b2:a5:b8:84:
- ee:af:2d:11:3d:f2:91:74:f2:ef:bd:55:c6:cf:72:ff:b1:74:
- e5:6e:6c:3e
------BEGIN CERTIFICATE-----
-MIIDAjCCAeqgAwIBAgICEAIwDQYJKoZIhvcNAQELBQAwFDESMBAGA1UEAwwJQyBS
-b290IENBMB4XDTIyMTAxOTE2NTg1NVoXDTMyMTAxNjE2NTg1NVowDzENMAsGA1UE
-AwwERSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKhJx0SM9JBS
-Nk9G12gKPdw6EzxhRfvPXo4GwTVddfEz1/BbDjSZGZ3ftYFAqh3r90Vuf+K1bnBC
-X6W9R93Y+U4zA4HqQMQP7VM1q3hh5aqARrYfuaGqgMbNTDymY/3tv/3y3xq53ulA
-G8sAOenczXhwPRsgMklrC+vFMSdQT1/9p3t3HtChIAFWXKYsHUtIjY0DlHPm9pQ5
-WTz8B67L3AJ/LQRCXNb/hnajvH8eDqBMEs5Y90ItW51r70fiznGJCBX9LEeloH5z
-7Qyw/Lh8Ds/95Dhfzo6A8pnb/PytnbS+KE/lXVyTNnVMZCWfU2SlN2ZJW7+C9AF3
-2O/MzrsTTAECAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
-AQYwHQYDVR0OBBYEFPeVArhHq6/vmE2o+cgk1KVPRkfLMB8GA1UdIwQYMBaAFDN6
-OJKCnrb9RPu1uqfHC01ZKGCaMA0GCSqGSIb3DQEBCwUAA4IBAQB51rdEkglCvJbY
-2pLBy5sZ6ziYZuw/thSiMTebDT+Dy/qAdRn6Hnh7BVVDoRctmq358h9WAcHIeAIc
-YHtAlamzglJl2HT0RrQDoJjbtHVN9N1zhDObfZF4eltQCBLV8dPAkP0rFGF2lqMD
-8qx6s/aeq6IH0a5NvufRHtajMr5wcFT80ck+vXwOGgMXEsZ4O9+RYakPCmW8ssBB
-2sMyig7vdYkbEScKu0eRwuRx6pHUTWbBoTsGjVS22m9U5tdP8hi41VnLRw2f2Bxq
-IJzikwej3ZQTLKsdGnHrW2ISIOXhzdHgY/2UNLKluITury0RPfKRdPLvvVXGz3L/
-sXTlbmw+
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/client_5.key b/src/pki/testdata/ssl/certificates/client_5.key
deleted file mode 100644
index 9ccea65..0000000
--- a/src/pki/testdata/ssl/certificates/client_5.key
+++ /dev/null
@@ -1,6 +0,0 @@
------BEGIN EC PRIVATE KEY-----
-MIGkAgEBBDBVFmKcwJaBTkzJWeFwUnFoOqLyFfsT+DKZ2XJRoD6GZC+1gGQ2xh43
-iyjP7j6robegBwYFK4EEACKhZANiAATLes9eGzHc4cqU0Q4XfaZCTEzPz/c/YAgY
-xr14uQqfnx2Jbz8MoOnC73hBk+kYphb7lnS5p4mbOhrDQLqU8qRG1ADaBwVcUlre
-QKOiBjp9CzKlRQ/e9pdVmVEx5IOQ/wY=
------END EC PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/client_5.pem b/src/pki/testdata/ssl/certificates/client_5.pem
deleted file mode 100644
index 015af89..0000000
--- a/src/pki/testdata/ssl/certificates/client_5.pem
+++ /dev/null
@@ -1,64 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4101 (0x1005)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=E CA
- Validity
- Not Before: Oct 19 16:58:55 2022 GMT
- Not After : Oct 16 16:58:55 2032 GMT
- Subject: CN=Client Cert H
- Subject Public Key Info:
- Public Key Algorithm: id-ecPublicKey
- Public-Key: (384 bit)
- pub:
- 04:cb:7a:cf:5e:1b:31:dc:e1:ca:94:d1:0e:17:7d:
- a6:42:4c:4c:cf:cf:f7:3f:60:08:18:c6:bd:78:b9:
- 0a:9f:9f:1d:89:6f:3f:0c:a0:e9:c2:ef:78:41:93:
- e9:18:a6:16:fb:96:74:b9:a7:89:9b:3a:1a:c3:40:
- ba:94:f2:a4:46:d4:00:da:07:05:5c:52:5a:de:40:
- a3:a2:06:3a:7d:0b:32:a5:45:0f:de:f6:97:55:99:
- 51:31:e4:83:90:ff:06
- ASN1 OID: secp384r1
- NIST CURVE: P-384
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Key Identifier:
- C0:0A:7F:F5:B4:49:4C:A5:97:C3:76:A2:A5:1D:F8:A5:C8:4D:65:94
- X509v3 Authority Key Identifier:
- F7:95:02:B8:47:AB:AF:EF:98:4D:A8:F9:C8:24:D4:A5:4F:46:47:CB
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 93:d5:04:f0:17:b1:15:e9:40:5a:b0:1f:e1:11:0b:6b:a7:36:
- 38:80:91:87:dd:eb:f0:dd:ed:7e:7c:77:09:12:e0:5b:09:ac:
- 6a:66:a6:ce:44:38:21:41:b1:7a:56:df:b3:9c:75:88:dc:0d:
- ad:5e:7d:b6:f4:84:4c:d0:ec:14:23:bc:09:81:6a:be:98:82:
- e3:27:f3:ce:f5:0b:28:8f:01:46:b4:d4:d1:9a:ea:78:7f:9e:
- 78:17:42:ca:59:bb:f1:43:8b:39:f0:7d:54:8d:a5:40:60:9f:
- bc:90:cc:b2:72:76:4e:5a:55:b0:95:64:8d:dd:be:b4:35:16:
- 68:af:95:3d:20:cf:07:42:dd:ec:a7:08:99:70:25:0f:4c:b8:
- 1a:ef:34:72:0a:a3:ac:79:d7:02:94:2d:9b:e2:cd:ca:24:93:
- 93:9a:92:e3:6f:51:89:35:74:7b:8b:bf:74:02:8c:66:57:eb:
- 82:10:6e:9c:25:5e:d0:5b:55:4e:48:ff:27:a8:1b:5c:97:e7:
- 99:03:d0:60:4a:e0:e6:f5:08:a4:c8:46:a6:3a:72:14:21:cb:
- c1:40:e9:99:11:ef:e6:a2:6a:4e:e4:d7:99:d8:94:3f:13:f8:
- 5e:b0:a9:29:e9:03:ea:41:38:5f:2a:9c:bd:1f:9b:f1:3d:66:
- ee:9b:5a:3e
------BEGIN CERTIFICATE-----
-MIICZDCCAUygAwIBAgICEAUwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwERSBD
-QTAeFw0yMjEwMTkxNjU4NTVaFw0zMjEwMTYxNjU4NTVaMBgxFjAUBgNVBAMMDUNs
-aWVudCBDZXJ0IEgwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATLes9eGzHc4cqU0Q4X
-faZCTEzPz/c/YAgYxr14uQqfnx2Jbz8MoOnC73hBk+kYphb7lnS5p4mbOhrDQLqU
-8qRG1ADaBwVcUlreQKOiBjp9CzKlRQ/e9pdVmVEx5IOQ/wajbzBtMAwGA1UdEwEB
-/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMB0GA1UdDgQWBBTA
-Cn/1tElMpZfDdqKlHfilyE1llDAfBgNVHSMEGDAWgBT3lQK4R6uv75hNqPnIJNSl
-T0ZHyzANBgkqhkiG9w0BAQsFAAOCAQEAk9UE8BexFelAWrAf4RELa6c2OICRh93r
-8N3tfnx3CRLgWwmsamamzkQ4IUGxelbfs5x1iNwNrV59tvSETNDsFCO8CYFqvpiC
-4yfzzvULKI8BRrTU0ZrqeH+eeBdCylm78UOLOfB9VI2lQGCfvJDMsnJ2TlpVsJVk
-jd2+tDUWaK+VPSDPB0Ld7KcImXAlD0y4Gu80cgqjrHnXApQtm+LNyiSTk5qS429R
-iTV0e4u/dAKMZlfrghBunCVe0FtVTkj/J6gbXJfnmQPQYErg5vUIpMhGpjpyFCHL
-wUDpmRHv5qJqTuTXmdiUPxP4XrCpKekD6kE4XyqcvR+b8T1m7ptaPg==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/client_5.pk8 b/src/pki/testdata/ssl/certificates/client_5.pk8
deleted file mode 100644
index 1a4f31a..0000000
--- a/src/pki/testdata/ssl/certificates/client_5.pk8
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/client_5_ca.pem b/src/pki/testdata/ssl/certificates/client_5_ca.pem
deleted file mode 100644
index 9709d46..0000000
--- a/src/pki/testdata/ssl/certificates/client_5_ca.pem
+++ /dev/null
@@ -1,78 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4098 (0x1002)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=C Root CA
- Validity
- Not Before: Oct 19 16:58:55 2022 GMT
- Not After : Oct 16 16:58:55 2032 GMT
- Subject: CN=E CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:a8:49:c7:44:8c:f4:90:52:36:4f:46:d7:68:0a:
- 3d:dc:3a:13:3c:61:45:fb:cf:5e:8e:06:c1:35:5d:
- 75:f1:33:d7:f0:5b:0e:34:99:19:9d:df:b5:81:40:
- aa:1d:eb:f7:45:6e:7f:e2:b5:6e:70:42:5f:a5:bd:
- 47:dd:d8:f9:4e:33:03:81:ea:40:c4:0f:ed:53:35:
- ab:78:61:e5:aa:80:46:b6:1f:b9:a1:aa:80:c6:cd:
- 4c:3c:a6:63:fd:ed:bf:fd:f2:df:1a:b9:de:e9:40:
- 1b:cb:00:39:e9:dc:cd:78:70:3d:1b:20:32:49:6b:
- 0b:eb:c5:31:27:50:4f:5f:fd:a7:7b:77:1e:d0:a1:
- 20:01:56:5c:a6:2c:1d:4b:48:8d:8d:03:94:73:e6:
- f6:94:39:59:3c:fc:07:ae:cb:dc:02:7f:2d:04:42:
- 5c:d6:ff:86:76:a3:bc:7f:1e:0e:a0:4c:12:ce:58:
- f7:42:2d:5b:9d:6b:ef:47:e2:ce:71:89:08:15:fd:
- 2c:47:a5:a0:7e:73:ed:0c:b0:fc:b8:7c:0e:cf:fd:
- e4:38:5f:ce:8e:80:f2:99:db:fc:fc:ad:9d:b4:be:
- 28:4f:e5:5d:5c:93:36:75:4c:64:25:9f:53:64:a5:
- 37:66:49:5b:bf:82:f4:01:77:d8:ef:cc:ce:bb:13:
- 4c:01
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- X509v3 Subject Key Identifier:
- F7:95:02:B8:47:AB:AF:EF:98:4D:A8:F9:C8:24:D4:A5:4F:46:47:CB
- X509v3 Authority Key Identifier:
- 33:7A:38:92:82:9E:B6:FD:44:FB:B5:BA:A7:C7:0B:4D:59:28:60:9A
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 79:d6:b7:44:92:09:42:bc:96:d8:da:92:c1:cb:9b:19:eb:38:
- 98:66:ec:3f:b6:14:a2:31:37:9b:0d:3f:83:cb:fa:80:75:19:
- fa:1e:78:7b:05:55:43:a1:17:2d:9a:ad:f9:f2:1f:56:01:c1:
- c8:78:02:1c:60:7b:40:95:a9:b3:82:52:65:d8:74:f4:46:b4:
- 03:a0:98:db:b4:75:4d:f4:dd:73:84:33:9b:7d:91:78:7a:5b:
- 50:08:12:d5:f1:d3:c0:90:fd:2b:14:61:76:96:a3:03:f2:ac:
- 7a:b3:f6:9e:ab:a2:07:d1:ae:4d:be:e7:d1:1e:d6:a3:32:be:
- 70:70:54:fc:d1:c9:3e:bd:7c:0e:1a:03:17:12:c6:78:3b:df:
- 91:61:a9:0f:0a:65:bc:b2:c0:41:da:c3:32:8a:0e:ef:75:89:
- 1b:11:27:0a:bb:47:91:c2:e4:71:ea:91:d4:4d:66:c1:a1:3b:
- 06:8d:54:b6:da:6f:54:e6:d7:4f:f2:18:b8:d5:59:cb:47:0d:
- 9f:d8:1c:6a:20:9c:e2:93:07:a3:dd:94:13:2c:ab:1d:1a:71:
- eb:5b:62:12:20:e5:e1:cd:d1:e0:63:fd:94:34:b2:a5:b8:84:
- ee:af:2d:11:3d:f2:91:74:f2:ef:bd:55:c6:cf:72:ff:b1:74:
- e5:6e:6c:3e
------BEGIN CERTIFICATE-----
-MIIDAjCCAeqgAwIBAgICEAIwDQYJKoZIhvcNAQELBQAwFDESMBAGA1UEAwwJQyBS
-b290IENBMB4XDTIyMTAxOTE2NTg1NVoXDTMyMTAxNjE2NTg1NVowDzENMAsGA1UE
-AwwERSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKhJx0SM9JBS
-Nk9G12gKPdw6EzxhRfvPXo4GwTVddfEz1/BbDjSZGZ3ftYFAqh3r90Vuf+K1bnBC
-X6W9R93Y+U4zA4HqQMQP7VM1q3hh5aqARrYfuaGqgMbNTDymY/3tv/3y3xq53ulA
-G8sAOenczXhwPRsgMklrC+vFMSdQT1/9p3t3HtChIAFWXKYsHUtIjY0DlHPm9pQ5
-WTz8B67L3AJ/LQRCXNb/hnajvH8eDqBMEs5Y90ItW51r70fiznGJCBX9LEeloH5z
-7Qyw/Lh8Ds/95Dhfzo6A8pnb/PytnbS+KE/lXVyTNnVMZCWfU2SlN2ZJW7+C9AF3
-2O/MzrsTTAECAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
-AQYwHQYDVR0OBBYEFPeVArhHq6/vmE2o+cgk1KVPRkfLMB8GA1UdIwQYMBaAFDN6
-OJKCnrb9RPu1uqfHC01ZKGCaMA0GCSqGSIb3DQEBCwUAA4IBAQB51rdEkglCvJbY
-2pLBy5sZ6ziYZuw/thSiMTebDT+Dy/qAdRn6Hnh7BVVDoRctmq358h9WAcHIeAIc
-YHtAlamzglJl2HT0RrQDoJjbtHVN9N1zhDObfZF4eltQCBLV8dPAkP0rFGF2lqMD
-8qx6s/aeq6IH0a5NvufRHtajMr5wcFT80ck+vXwOGgMXEsZ4O9+RYakPCmW8ssBB
-2sMyig7vdYkbEScKu0eRwuRx6pHUTWbBoTsGjVS22m9U5tdP8hi41VnLRw2f2Bxq
-IJzikwej3ZQTLKsdGnHrW2ISIOXhzdHgY/2UNLKluITury0RPfKRdPLvvVXGz3L/
-sXTlbmw+
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/client_6.key b/src/pki/testdata/ssl/certificates/client_6.key
deleted file mode 100644
index ae6c01a..0000000
--- a/src/pki/testdata/ssl/certificates/client_6.key
+++ /dev/null
@@ -1,7 +0,0 @@
------BEGIN EC PRIVATE KEY-----
-MIHcAgEBBEIBiAsgixDWk2fAV2gjcCk8H/CuY50RYV36uZfb9BXA2SjA/CHMjlHQ
-xDjvZvp9s1vO2NzkvDTDpuGsSZzt/HkVEgugBwYFK4EEACOhgYkDgYYABAE/Y66g
-7Qbz+GHRvHOzdYpFU4tOYla1MZmNTEQcpI+LyZELGc+DjFKBAmckzW9NKHiXATTd
-fZNM5bj+GtJrx2EfdQEEbwMvUDX1u3bw1/EXyQQYWvFFCObq8CK3gEFDOzffLUDt
-UFDwFKP8Sz0dh5KMCvgSh/w1X+H2xwpaBzQxydphIw==
------END EC PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/client_6.pem b/src/pki/testdata/ssl/certificates/client_6.pem
deleted file mode 100644
index 68035da..0000000
--- a/src/pki/testdata/ssl/certificates/client_6.pem
+++ /dev/null
@@ -1,67 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4102 (0x1006)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=E CA
- Validity
- Not Before: Oct 19 16:58:55 2022 GMT
- Not After : Oct 16 16:58:55 2032 GMT
- Subject: CN=Client Cert I
- Subject Public Key Info:
- Public Key Algorithm: id-ecPublicKey
- Public-Key: (521 bit)
- pub:
- 04:01:3f:63:ae:a0:ed:06:f3:f8:61:d1:bc:73:b3:
- 75:8a:45:53:8b:4e:62:56:b5:31:99:8d:4c:44:1c:
- a4:8f:8b:c9:91:0b:19:cf:83:8c:52:81:02:67:24:
- cd:6f:4d:28:78:97:01:34:dd:7d:93:4c:e5:b8:fe:
- 1a:d2:6b:c7:61:1f:75:01:04:6f:03:2f:50:35:f5:
- bb:76:f0:d7:f1:17:c9:04:18:5a:f1:45:08:e6:ea:
- f0:22:b7:80:41:43:3b:37:df:2d:40:ed:50:50:f0:
- 14:a3:fc:4b:3d:1d:87:92:8c:0a:f8:12:87:fc:35:
- 5f:e1:f6:c7:0a:5a:07:34:31:c9:da:61:23
- ASN1 OID: secp521r1
- NIST CURVE: P-521
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Key Identifier:
- C8:A5:B0:D4:13:AE:43:9C:31:DF:7E:40:BA:AF:2B:8E:EE:54:52:15
- X509v3 Authority Key Identifier:
- F7:95:02:B8:47:AB:AF:EF:98:4D:A8:F9:C8:24:D4:A5:4F:46:47:CB
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 86:01:e1:dc:4e:d1:94:e3:d3:51:73:e4:cb:79:d5:b9:d0:68:
- 34:a9:36:b1:51:02:45:a4:ce:98:44:cc:6e:90:07:7a:cd:b2:
- 25:65:fc:7b:ca:03:1d:5e:9e:08:b8:70:56:35:65:f8:38:9b:
- e1:59:58:52:47:8b:3a:83:53:c5:4e:53:24:92:e6:a2:3a:ca:
- 0c:6f:5c:1b:f2:67:51:e8:35:d2:08:85:df:7d:2a:ad:5b:a0:
- 5c:6d:8f:7c:28:e9:da:e4:a7:1a:79:be:4e:78:33:a5:e3:72:
- 06:b8:21:97:44:02:ba:46:d4:b6:15:b0:79:95:b7:cf:85:9a:
- ae:ee:6a:d2:a7:c0:2c:c9:4c:e1:fa:2c:29:e7:56:fc:8f:31:
- 1e:6d:f5:23:67:60:ed:f7:74:7d:b2:f4:fe:e6:3c:0b:e4:59:
- e7:15:1f:7b:db:38:da:a0:1c:ff:33:33:69:11:74:e6:cb:6f:
- 8d:59:d0:cd:88:7e:9e:90:a0:0a:4d:09:35:bf:22:17:c0:64:
- 42:f9:9c:20:3f:50:ce:6c:de:62:e6:fa:76:89:a9:16:6f:d5:
- 36:ee:52:90:aa:5a:51:94:a8:ce:6b:1c:d2:77:6c:c3:0e:46:
- 4b:24:85:ec:a7:9e:c8:ce:d1:3b:f2:d6:09:19:73:a2:d1:b1:
- e1:cf:17:d5
------BEGIN CERTIFICATE-----
-MIICijCCAXKgAwIBAgICEAYwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwERSBD
-QTAeFw0yMjEwMTkxNjU4NTVaFw0zMjEwMTYxNjU4NTVaMBgxFjAUBgNVBAMMDUNs
-aWVudCBDZXJ0IEkwgZswEAYHKoZIzj0CAQYFK4EEACMDgYYABAE/Y66g7Qbz+GHR
-vHOzdYpFU4tOYla1MZmNTEQcpI+LyZELGc+DjFKBAmckzW9NKHiXATTdfZNM5bj+
-GtJrx2EfdQEEbwMvUDX1u3bw1/EXyQQYWvFFCObq8CK3gEFDOzffLUDtUFDwFKP8
-Sz0dh5KMCvgSh/w1X+H2xwpaBzQxydphI6NvMG0wDAYDVR0TAQH/BAIwADAdBgNV
-HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYEFMilsNQTrkOcMd9+
-QLqvK47uVFIVMB8GA1UdIwQYMBaAFPeVArhHq6/vmE2o+cgk1KVPRkfLMA0GCSqG
-SIb3DQEBCwUAA4IBAQCGAeHcTtGU49NRc+TLedW50Gg0qTaxUQJFpM6YRMxukAd6
-zbIlZfx7ygMdXp4IuHBWNWX4OJvhWVhSR4s6g1PFTlMkkuaiOsoMb1wb8mdR6DXS
-CIXffSqtW6BcbY98KOna5Kcaeb5OeDOl43IGuCGXRAK6RtS2FbB5lbfPhZqu7mrS
-p8AsyUzh+iwp51b8jzEebfUjZ2Dt93R9svT+5jwL5FnnFR972zjaoBz/MzNpEXTm
-y2+NWdDNiH6ekKAKTQk1vyIXwGRC+ZwgP1DObN5i5vp2iakWb9U27lKQqlpRlKjO
-axzSd2zDDkZLJIXsp57IztE78tYJGXOi0bHhzxfV
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/client_6.pk8 b/src/pki/testdata/ssl/certificates/client_6.pk8
deleted file mode 100644
index 8035bf8..0000000
--- a/src/pki/testdata/ssl/certificates/client_6.pk8
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/client_6_ca.pem b/src/pki/testdata/ssl/certificates/client_6_ca.pem
deleted file mode 100644
index 9709d46..0000000
--- a/src/pki/testdata/ssl/certificates/client_6_ca.pem
+++ /dev/null
@@ -1,78 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4098 (0x1002)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=C Root CA
- Validity
- Not Before: Oct 19 16:58:55 2022 GMT
- Not After : Oct 16 16:58:55 2032 GMT
- Subject: CN=E CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:a8:49:c7:44:8c:f4:90:52:36:4f:46:d7:68:0a:
- 3d:dc:3a:13:3c:61:45:fb:cf:5e:8e:06:c1:35:5d:
- 75:f1:33:d7:f0:5b:0e:34:99:19:9d:df:b5:81:40:
- aa:1d:eb:f7:45:6e:7f:e2:b5:6e:70:42:5f:a5:bd:
- 47:dd:d8:f9:4e:33:03:81:ea:40:c4:0f:ed:53:35:
- ab:78:61:e5:aa:80:46:b6:1f:b9:a1:aa:80:c6:cd:
- 4c:3c:a6:63:fd:ed:bf:fd:f2:df:1a:b9:de:e9:40:
- 1b:cb:00:39:e9:dc:cd:78:70:3d:1b:20:32:49:6b:
- 0b:eb:c5:31:27:50:4f:5f:fd:a7:7b:77:1e:d0:a1:
- 20:01:56:5c:a6:2c:1d:4b:48:8d:8d:03:94:73:e6:
- f6:94:39:59:3c:fc:07:ae:cb:dc:02:7f:2d:04:42:
- 5c:d6:ff:86:76:a3:bc:7f:1e:0e:a0:4c:12:ce:58:
- f7:42:2d:5b:9d:6b:ef:47:e2:ce:71:89:08:15:fd:
- 2c:47:a5:a0:7e:73:ed:0c:b0:fc:b8:7c:0e:cf:fd:
- e4:38:5f:ce:8e:80:f2:99:db:fc:fc:ad:9d:b4:be:
- 28:4f:e5:5d:5c:93:36:75:4c:64:25:9f:53:64:a5:
- 37:66:49:5b:bf:82:f4:01:77:d8:ef:cc:ce:bb:13:
- 4c:01
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- X509v3 Subject Key Identifier:
- F7:95:02:B8:47:AB:AF:EF:98:4D:A8:F9:C8:24:D4:A5:4F:46:47:CB
- X509v3 Authority Key Identifier:
- 33:7A:38:92:82:9E:B6:FD:44:FB:B5:BA:A7:C7:0B:4D:59:28:60:9A
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 79:d6:b7:44:92:09:42:bc:96:d8:da:92:c1:cb:9b:19:eb:38:
- 98:66:ec:3f:b6:14:a2:31:37:9b:0d:3f:83:cb:fa:80:75:19:
- fa:1e:78:7b:05:55:43:a1:17:2d:9a:ad:f9:f2:1f:56:01:c1:
- c8:78:02:1c:60:7b:40:95:a9:b3:82:52:65:d8:74:f4:46:b4:
- 03:a0:98:db:b4:75:4d:f4:dd:73:84:33:9b:7d:91:78:7a:5b:
- 50:08:12:d5:f1:d3:c0:90:fd:2b:14:61:76:96:a3:03:f2:ac:
- 7a:b3:f6:9e:ab:a2:07:d1:ae:4d:be:e7:d1:1e:d6:a3:32:be:
- 70:70:54:fc:d1:c9:3e:bd:7c:0e:1a:03:17:12:c6:78:3b:df:
- 91:61:a9:0f:0a:65:bc:b2:c0:41:da:c3:32:8a:0e:ef:75:89:
- 1b:11:27:0a:bb:47:91:c2:e4:71:ea:91:d4:4d:66:c1:a1:3b:
- 06:8d:54:b6:da:6f:54:e6:d7:4f:f2:18:b8:d5:59:cb:47:0d:
- 9f:d8:1c:6a:20:9c:e2:93:07:a3:dd:94:13:2c:ab:1d:1a:71:
- eb:5b:62:12:20:e5:e1:cd:d1:e0:63:fd:94:34:b2:a5:b8:84:
- ee:af:2d:11:3d:f2:91:74:f2:ef:bd:55:c6:cf:72:ff:b1:74:
- e5:6e:6c:3e
------BEGIN CERTIFICATE-----
-MIIDAjCCAeqgAwIBAgICEAIwDQYJKoZIhvcNAQELBQAwFDESMBAGA1UEAwwJQyBS
-b290IENBMB4XDTIyMTAxOTE2NTg1NVoXDTMyMTAxNjE2NTg1NVowDzENMAsGA1UE
-AwwERSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKhJx0SM9JBS
-Nk9G12gKPdw6EzxhRfvPXo4GwTVddfEz1/BbDjSZGZ3ftYFAqh3r90Vuf+K1bnBC
-X6W9R93Y+U4zA4HqQMQP7VM1q3hh5aqARrYfuaGqgMbNTDymY/3tv/3y3xq53ulA
-G8sAOenczXhwPRsgMklrC+vFMSdQT1/9p3t3HtChIAFWXKYsHUtIjY0DlHPm9pQ5
-WTz8B67L3AJ/LQRCXNb/hnajvH8eDqBMEs5Y90ItW51r70fiznGJCBX9LEeloH5z
-7Qyw/Lh8Ds/95Dhfzo6A8pnb/PytnbS+KE/lXVyTNnVMZCWfU2SlN2ZJW7+C9AF3
-2O/MzrsTTAECAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
-AQYwHQYDVR0OBBYEFPeVArhHq6/vmE2o+cgk1KVPRkfLMB8GA1UdIwQYMBaAFDN6
-OJKCnrb9RPu1uqfHC01ZKGCaMA0GCSqGSIb3DQEBCwUAA4IBAQB51rdEkglCvJbY
-2pLBy5sZ6ziYZuw/thSiMTebDT+Dy/qAdRn6Hnh7BVVDoRctmq358h9WAcHIeAIc
-YHtAlamzglJl2HT0RrQDoJjbtHVN9N1zhDObfZF4eltQCBLV8dPAkP0rFGF2lqMD
-8qx6s/aeq6IH0a5NvufRHtajMr5wcFT80ck+vXwOGgMXEsZ4O9+RYakPCmW8ssBB
-2sMyig7vdYkbEScKu0eRwuRx6pHUTWbBoTsGjVS22m9U5tdP8hi41VnLRw2f2Bxq
-IJzikwej3ZQTLKsdGnHrW2ISIOXhzdHgY/2UNLKluITury0RPfKRdPLvvVXGz3L/
-sXTlbmw+
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/client_7.key b/src/pki/testdata/ssl/certificates/client_7.key
deleted file mode 100644
index a22d48d..0000000
--- a/src/pki/testdata/ssl/certificates/client_7.key
+++ /dev/null
@@ -1,16 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAMS7Gq6DrnR7aoa7
-zDPgE3BVNyjLeWYsSOKkPrSO7G8IGAQKGvOld8k5K/SWkZAg5Rj1nHFtYEXavNd2
-QCHqeUO6gVJu2JAKcjkbjx1rsXBCzv4wAJnf4eoS7b/fFIZyZEmxEHKHx6sIn4Gd
-ExEUjgzqqTJ5ogMyctqOVy5S/kAjAgMBAAECgYAzhsH1RV4S+iQrh9JzH9RXjqo0
-0B5KyXyJh/U4e1qnthn8LN1kRUl7dbLyi+EyO7tlbyb7emdFxIXDdSBVAcGiqw2n
-M3la/jA290ADLxdl+sUdPymFJxM2l/ao9UL/5PknXTFAmkhqylQ5JS4csgAE0q3b
-oMmfCvOG/yTs9jBEcQJBAOKBdeuBv5S0NW1bUOFPBnwc5UtQKlXBHdd+tJtGhHI/
-mz1Ay8Onv9TRIpiLgeK7oXg3KvaopLSmI80KO1nsFPkCQQDeWRp21TQ96nDrSmrK
-zfUdpLByKuPzLWe1bVR+fgGknWu07oL+g1HniQ7z9MbloVcUNUtvgezDWbKGPfV6
-DzD7AkEAnbpzKBWJGH9JOSa+srb6GBFzJrfjUyYQptCH6hz3/CsI6mWlv1CgSA1+
-XuW/A+mO7ozUMUGMuHN9OLooTF0W2QJBANudEKmM3kPFevC7mQ1lLhSwZOLvACVh
-lIy7RviFRuQr5IVaC6KNXGmfk1hcTdPjbtnz5eVmY89zmgRD0GFV/d8CQQDAT+wP
-dsU8Qe1vAoxC6mRMfjQH0ght2efyVeBSfQE+n0a92DcbTiNPcEKRlAb1PagCC0PY
-r7YlZqtIqBttWdgv
------END PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/client_7.pem b/src/pki/testdata/ssl/certificates/client_7.pem
deleted file mode 100644
index d4ac032..0000000
--- a/src/pki/testdata/ssl/certificates/client_7.pem
+++ /dev/null
@@ -1,66 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4103 (0x1007)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=E CA
- Validity
- Not Before: Oct 19 16:58:55 2022 GMT
- Not After : Oct 16 16:58:55 2032 GMT
- Subject: CN=Client Cert J
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (1024 bit)
- Modulus:
- 00:c4:bb:1a:ae:83:ae:74:7b:6a:86:bb:cc:33:e0:
- 13:70:55:37:28:cb:79:66:2c:48:e2:a4:3e:b4:8e:
- ec:6f:08:18:04:0a:1a:f3:a5:77:c9:39:2b:f4:96:
- 91:90:20:e5:18:f5:9c:71:6d:60:45:da:bc:d7:76:
- 40:21:ea:79:43:ba:81:52:6e:d8:90:0a:72:39:1b:
- 8f:1d:6b:b1:70:42:ce:fe:30:00:99:df:e1:ea:12:
- ed:bf:df:14:86:72:64:49:b1:10:72:87:c7:ab:08:
- 9f:81:9d:13:11:14:8e:0c:ea:a9:32:79:a2:03:32:
- 72:da:8e:57:2e:52:fe:40:23
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Key Identifier:
- 45:86:46:CC:D4:64:F8:33:5A:7A:14:24:23:39:A7:65:D5:FE:D8:07
- X509v3 Authority Key Identifier:
- F7:95:02:B8:47:AB:AF:EF:98:4D:A8:F9:C8:24:D4:A5:4F:46:47:CB
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- a0:3f:52:d0:e5:5c:4e:6a:51:fa:80:16:d1:3c:e4:7e:bf:ed:
- 6c:32:d4:73:d2:89:71:ca:96:d3:3a:38:e1:ca:55:dc:23:31:
- 5c:e9:9e:b4:1c:48:4c:9c:2e:f8:05:9f:61:f5:3d:24:ef:95:
- 41:73:c2:f2:b6:51:c2:7f:6f:5c:d2:70:c2:6e:dd:0a:79:3f:
- bf:18:48:ef:2d:23:3b:68:f2:a0:23:4c:4c:fa:ff:48:ab:26:
- 11:20:9f:e2:3b:68:67:96:08:ce:56:69:ba:68:09:a0:0a:34:
- fa:a1:4f:47:a0:be:2b:94:ad:57:02:43:09:13:52:28:1f:6a:
- a2:59:58:7b:84:5e:c5:09:42:a1:7a:d4:88:88:46:54:5c:73:
- 51:3a:ac:ca:b2:30:3e:1f:9b:06:f3:28:1b:f0:71:8d:97:42:
- c9:42:1f:14:49:b5:57:f3:b2:35:64:44:9f:f7:14:2b:a6:0a:
- 4e:cc:8a:c8:5d:5f:53:36:51:d7:55:0d:0a:bd:e4:d8:0d:b2:
- 37:46:08:93:0c:cd:9d:10:32:58:37:52:10:15:f8:5a:98:ad:
- 15:c7:e0:ba:40:43:a5:8c:44:dd:72:f8:cc:8c:a3:7f:33:6a:
- d9:a5:dc:2d:0b:97:07:ad:1e:dd:0a:1c:12:6a:9d:92:13:f6:
- 09:0d:16:4e
------BEGIN CERTIFICATE-----
-MIICjjCCAXagAwIBAgICEAcwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwERSBD
-QTAeFw0yMjEwMTkxNjU4NTVaFw0zMjEwMTYxNjU4NTVaMBgxFjAUBgNVBAMMDUNs
-aWVudCBDZXJ0IEowgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMS7Gq6DrnR7
-aoa7zDPgE3BVNyjLeWYsSOKkPrSO7G8IGAQKGvOld8k5K/SWkZAg5Rj1nHFtYEXa
-vNd2QCHqeUO6gVJu2JAKcjkbjx1rsXBCzv4wAJnf4eoS7b/fFIZyZEmxEHKHx6sI
-n4GdExEUjgzqqTJ5ogMyctqOVy5S/kAjAgMBAAGjbzBtMAwGA1UdEwEB/wQCMAAw
-HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMB0GA1UdDgQWBBRFhkbM1GT4
-M1p6FCQjOadl1f7YBzAfBgNVHSMEGDAWgBT3lQK4R6uv75hNqPnIJNSlT0ZHyzAN
-BgkqhkiG9w0BAQsFAAOCAQEAoD9S0OVcTmpR+oAW0Tzkfr/tbDLUc9KJccqW0zo4
-4cpV3CMxXOmetBxITJwu+AWfYfU9JO+VQXPC8rZRwn9vXNJwwm7dCnk/vxhI7y0j
-O2jyoCNMTPr/SKsmESCf4jtoZ5YIzlZpumgJoAo0+qFPR6C+K5StVwJDCRNSKB9q
-ollYe4RexQlCoXrUiIhGVFxzUTqsyrIwPh+bBvMoG/BxjZdCyUIfFEm1V/OyNWRE
-n/cUK6YKTsyKyF1fUzZR11UNCr3k2A2yN0YIkwzNnRAyWDdSEBX4WpitFcfgukBD
-pYxE3XL4zIyjfzNq2aXcLQuXB60e3QocEmqdkhP2CQ0WTg==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/client_7.pk8 b/src/pki/testdata/ssl/certificates/client_7.pk8
deleted file mode 100644
index d13e582..0000000
--- a/src/pki/testdata/ssl/certificates/client_7.pk8
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/client_7_ca.pem b/src/pki/testdata/ssl/certificates/client_7_ca.pem
deleted file mode 100644
index 9709d46..0000000
--- a/src/pki/testdata/ssl/certificates/client_7_ca.pem
+++ /dev/null
@@ -1,78 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4098 (0x1002)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=C Root CA
- Validity
- Not Before: Oct 19 16:58:55 2022 GMT
- Not After : Oct 16 16:58:55 2032 GMT
- Subject: CN=E CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:a8:49:c7:44:8c:f4:90:52:36:4f:46:d7:68:0a:
- 3d:dc:3a:13:3c:61:45:fb:cf:5e:8e:06:c1:35:5d:
- 75:f1:33:d7:f0:5b:0e:34:99:19:9d:df:b5:81:40:
- aa:1d:eb:f7:45:6e:7f:e2:b5:6e:70:42:5f:a5:bd:
- 47:dd:d8:f9:4e:33:03:81:ea:40:c4:0f:ed:53:35:
- ab:78:61:e5:aa:80:46:b6:1f:b9:a1:aa:80:c6:cd:
- 4c:3c:a6:63:fd:ed:bf:fd:f2:df:1a:b9:de:e9:40:
- 1b:cb:00:39:e9:dc:cd:78:70:3d:1b:20:32:49:6b:
- 0b:eb:c5:31:27:50:4f:5f:fd:a7:7b:77:1e:d0:a1:
- 20:01:56:5c:a6:2c:1d:4b:48:8d:8d:03:94:73:e6:
- f6:94:39:59:3c:fc:07:ae:cb:dc:02:7f:2d:04:42:
- 5c:d6:ff:86:76:a3:bc:7f:1e:0e:a0:4c:12:ce:58:
- f7:42:2d:5b:9d:6b:ef:47:e2:ce:71:89:08:15:fd:
- 2c:47:a5:a0:7e:73:ed:0c:b0:fc:b8:7c:0e:cf:fd:
- e4:38:5f:ce:8e:80:f2:99:db:fc:fc:ad:9d:b4:be:
- 28:4f:e5:5d:5c:93:36:75:4c:64:25:9f:53:64:a5:
- 37:66:49:5b:bf:82:f4:01:77:d8:ef:cc:ce:bb:13:
- 4c:01
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- X509v3 Subject Key Identifier:
- F7:95:02:B8:47:AB:AF:EF:98:4D:A8:F9:C8:24:D4:A5:4F:46:47:CB
- X509v3 Authority Key Identifier:
- 33:7A:38:92:82:9E:B6:FD:44:FB:B5:BA:A7:C7:0B:4D:59:28:60:9A
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 79:d6:b7:44:92:09:42:bc:96:d8:da:92:c1:cb:9b:19:eb:38:
- 98:66:ec:3f:b6:14:a2:31:37:9b:0d:3f:83:cb:fa:80:75:19:
- fa:1e:78:7b:05:55:43:a1:17:2d:9a:ad:f9:f2:1f:56:01:c1:
- c8:78:02:1c:60:7b:40:95:a9:b3:82:52:65:d8:74:f4:46:b4:
- 03:a0:98:db:b4:75:4d:f4:dd:73:84:33:9b:7d:91:78:7a:5b:
- 50:08:12:d5:f1:d3:c0:90:fd:2b:14:61:76:96:a3:03:f2:ac:
- 7a:b3:f6:9e:ab:a2:07:d1:ae:4d:be:e7:d1:1e:d6:a3:32:be:
- 70:70:54:fc:d1:c9:3e:bd:7c:0e:1a:03:17:12:c6:78:3b:df:
- 91:61:a9:0f:0a:65:bc:b2:c0:41:da:c3:32:8a:0e:ef:75:89:
- 1b:11:27:0a:bb:47:91:c2:e4:71:ea:91:d4:4d:66:c1:a1:3b:
- 06:8d:54:b6:da:6f:54:e6:d7:4f:f2:18:b8:d5:59:cb:47:0d:
- 9f:d8:1c:6a:20:9c:e2:93:07:a3:dd:94:13:2c:ab:1d:1a:71:
- eb:5b:62:12:20:e5:e1:cd:d1:e0:63:fd:94:34:b2:a5:b8:84:
- ee:af:2d:11:3d:f2:91:74:f2:ef:bd:55:c6:cf:72:ff:b1:74:
- e5:6e:6c:3e
------BEGIN CERTIFICATE-----
-MIIDAjCCAeqgAwIBAgICEAIwDQYJKoZIhvcNAQELBQAwFDESMBAGA1UEAwwJQyBS
-b290IENBMB4XDTIyMTAxOTE2NTg1NVoXDTMyMTAxNjE2NTg1NVowDzENMAsGA1UE
-AwwERSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKhJx0SM9JBS
-Nk9G12gKPdw6EzxhRfvPXo4GwTVddfEz1/BbDjSZGZ3ftYFAqh3r90Vuf+K1bnBC
-X6W9R93Y+U4zA4HqQMQP7VM1q3hh5aqARrYfuaGqgMbNTDymY/3tv/3y3xq53ulA
-G8sAOenczXhwPRsgMklrC+vFMSdQT1/9p3t3HtChIAFWXKYsHUtIjY0DlHPm9pQ5
-WTz8B67L3AJ/LQRCXNb/hnajvH8eDqBMEs5Y90ItW51r70fiznGJCBX9LEeloH5z
-7Qyw/Lh8Ds/95Dhfzo6A8pnb/PytnbS+KE/lXVyTNnVMZCWfU2SlN2ZJW7+C9AF3
-2O/MzrsTTAECAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
-AQYwHQYDVR0OBBYEFPeVArhHq6/vmE2o+cgk1KVPRkfLMB8GA1UdIwQYMBaAFDN6
-OJKCnrb9RPu1uqfHC01ZKGCaMA0GCSqGSIb3DQEBCwUAA4IBAQB51rdEkglCvJbY
-2pLBy5sZ6ziYZuw/thSiMTebDT+Dy/qAdRn6Hnh7BVVDoRctmq358h9WAcHIeAIc
-YHtAlamzglJl2HT0RrQDoJjbtHVN9N1zhDObfZF4eltQCBLV8dPAkP0rFGF2lqMD
-8qx6s/aeq6IH0a5NvufRHtajMr5wcFT80ck+vXwOGgMXEsZ4O9+RYakPCmW8ssBB
-2sMyig7vdYkbEScKu0eRwuRx6pHUTWbBoTsGjVS22m9U5tdP8hi41VnLRw2f2Bxq
-IJzikwej3ZQTLKsdGnHrW2ISIOXhzdHgY/2UNLKluITury0RPfKRdPLvvVXGz3L/
-sXTlbmw+
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/client_root_ca.pem b/src/pki/testdata/ssl/certificates/client_root_ca.pem
deleted file mode 100644
index 97ddcb1..0000000
--- a/src/pki/testdata/ssl/certificates/client_root_ca.pem
+++ /dev/null
@@ -1,18 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIC+DCCAeCgAwIBAgIUP1wLVZUv7x3bRdFOcu0C/oeN2WwwDQYJKoZIhvcNAQEL
-BQAwFDESMBAGA1UEAwwJQyBSb290IENBMB4XDTIyMTAxOTE2NTg1NVoXDTMyMTAx
-NjE2NTg1NVowFDESMBAGA1UEAwwJQyBSb290IENBMIIBIjANBgkqhkiG9w0BAQEF
-AAOCAQ8AMIIBCgKCAQEAjec2+ZmcF1eiwxrtvoNJpiFY4ywRYD3RfHOcxEM+soBv
-/6yP4hRK43YeQOPSOSHf8RSeD+kTy40wPFx4Z80XyIwIpv8xtlsPNNV0SKZfn7g+
-gt6HsfEqGq0iJPDoTQB7YY7ygvM5sOLbK4XvqQJsE7uWfxFC+3esFlxhGGd69HaK
-ebUF0gEtom/0KoDNy0Md5Rdr4i2j4v032lkF+sLpWiz1BfIt10ewzknfI/Hpy39q
-jdeq4LFou+UDKN7cK3zSEc7pJ2hbn5vMFpdzoUcmOi59V30Q9SvmDiOiAYdRecLM
-F5IirvMzrYA740xxEFxYr9fLiMK2g5QjrbICYczsqQIDAQABo0IwQDAPBgNVHRMB
-Af8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUM3o4koKetv1E+7W6
-p8cLTVkoYJowDQYJKoZIhvcNAQELBQADggEBABm+LYzj/+CGE6RHYWJxoGov5Qpn
-tztPE7g66UU8TDgmC0TysRPk8WpFMTpXLdway7gdNFfhrUv179JJrP6vm7SyxAW1
-KXyfUIRJiBuKbPq4rSgs7O/QvChV33s6wWt6k8zPkgi3P2XhWLwMcYYh/gwAixrO
-PXzonHNrAxb62kWgPucNblQIqy+HpelSHShssWtXlXWp1kmelR44eLsaIeXybIgA
-9eRCtOolBlp6oLhiTFnbDUqyHCdSleNwlBGSQCTEO95zqPzfc9CzQX1h/SL6aWJG
-pP6mw+rKwh8WG9fK2MnBQYzNCj/7WU+XGLdhwc63xrUiBzKB57S8PyvWPKM=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/common_name_only.pem b/src/pki/testdata/ssl/certificates/common_name_only.pem
deleted file mode 100644
index 01d3258..0000000
--- a/src/pki/testdata/ssl/certificates/common_name_only.pem
+++ /dev/null
@@ -1,111 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDJABG+o501DlYn
-pIeZGdbtxuX0hUvuhTCO/+u+ZajABJAsejJ8tm5qRURXOguSG2u3nKqR9cA3r/47
-aQHvkkYfLpF4lnL5X7lRmkOq8vWObvwaUuvwcsA3qwxWSd5u4sVOl/eSj0yzJDq0
-Lb6QVPWlbWgrZyEdDuAxg7glVTWeJagK5IMI8b2yiis7oxLXFudztUg2E3UVkIMz
-Gw55unskWdOnViQ0N3kFyXfbFcnojWNm2iJfQtHxjfHN+ydGaH/z4SpYh/0SHqnC
-rj46J2fojyH/LFgn2MnskeK3kOLShpEcAbnRibrbrNMcDUi5vANq3s2+bhoinS0U
-fs2v53/nAgMBAAECggEAFTIjrOXWCyVC4pVQE04NQy/JShrQYgu7jijgtEhGHlGc
-3oPYVRxr0lsRlN0zISoxFsC3oAK5TWYKujsdkCTtrhYcEwpSf4efpEJPRnSufmGn
-xiLebJG9QWGRQHwzr5/MTLhrzBG+ddmpMxzrzo6XBOXfqUwLyuOpsq8AOTeeGtoP
-kTWtvOS2ODx6ID27GNcSNGO3haeLKCZaXnlE9RKRLFnBD4IEMycivA63uEpMBe13
-PHjqc6cm5tL76TKmfZ5MCC9XRtK6NbqQpJwjet/oqr0TjM6Shz0HCSUufOqNsBjy
-cnpCwb/GOvtDoV3ygUNvmUc3xZDf6e2eUc0eu1aYqQKBgQD+aXgQwUYklYreU5uK
-dfOWvmR05E2ekJdsxyzxsuwpR0MaPPXiJlPYnChlvdSc+0SUDVmrv0xLrh0D0J54
-khDI3dOxTncNGEEzj0+/f9fHxpSH8CxHxsvfbzRNyLS/8QgN/24PfXTVw8o3xftn
-1IsLg0mWk9m70BTKqDEZyKTZ7QKBgQDKQUCgj8/uuF1DeJL8HaP2O9HPdAjaymia
-X39NeYQdYKqCGf28b6GyACcZMGemo8+s3Y1k3EheHEEnnvUMok+ULKJ6LnqLRyTU
-IjoBQ8LOq8lAKTjDcvVYy6pF6wGG1YsDJsY4M1ED9Wrc87Ns1WnVZEY9P9FlhBNl
-OQVD3sP2owKBgQDTr+hycI8vs6qX8ZNzc0+a95LY3HplXMRSg6w29HyioCQKefzS
-DrgnfU/z0C9P65cVZcJeMM+IDTkhSn4Bru/+Yu1ZFAPlRnBCOZXOrs5Z8Tb3oXUG
-yDgtEve/XShgqWrdUtM+WlJT6BSjsb3NmEGV88jQXPeH2czjD23DmXrpxQKBgG2x
-ZjOuy79VDoABbPZ/vOVXHDu/Wu4OyRywnoKOXTDxtIhLQGpqwO+hVZM7xXuDbKb8
-oisJrdYczNmIRK9NeIuMibJqctwHAdprlboJ3iXo1YWO1dJrDtXR38973aAbQQG8
-jdT9P/s9p2+eXLmyJWwurkmZyx+bukkz278rmmyxAoGARoR/vqPlOj3TAcFsks1c
-HeI3bqblWu/dpeZ7MhYM90Xf3e0RxigcPNkVm9H1wEragh/WVRQpunysxaTVcnAL
-xKf++lCNDCPFOXAhOxTGBGpS/IbrnLfAhDCdqBX2xkyJWNGu00JGe6gfJyIQiX1Z
-+919aWiM78TlJC8psjZviRs=
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:83
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Dec 20 00:00:00 2017 GMT
- Not After : Dec 20 00:00:00 2020 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:c9:00:11:be:a3:9d:35:0e:56:27:a4:87:99:19:
- d6:ed:c6:e5:f4:85:4b:ee:85:30:8e:ff:eb:be:65:
- a8:c0:04:90:2c:7a:32:7c:b6:6e:6a:45:44:57:3a:
- 0b:92:1b:6b:b7:9c:aa:91:f5:c0:37:af:fe:3b:69:
- 01:ef:92:46:1f:2e:91:78:96:72:f9:5f:b9:51:9a:
- 43:aa:f2:f5:8e:6e:fc:1a:52:eb:f0:72:c0:37:ab:
- 0c:56:49:de:6e:e2:c5:4e:97:f7:92:8f:4c:b3:24:
- 3a:b4:2d:be:90:54:f5:a5:6d:68:2b:67:21:1d:0e:
- e0:31:83:b8:25:55:35:9e:25:a8:0a:e4:83:08:f1:
- bd:b2:8a:2b:3b:a3:12:d7:16:e7:73:b5:48:36:13:
- 75:15:90:83:33:1b:0e:79:ba:7b:24:59:d3:a7:56:
- 24:34:37:79:05:c9:77:db:15:c9:e8:8d:63:66:da:
- 22:5f:42:d1:f1:8d:f1:cd:fb:27:46:68:7f:f3:e1:
- 2a:58:87:fd:12:1e:a9:c2:ae:3e:3a:27:67:e8:8f:
- 21:ff:2c:58:27:d8:c9:ec:91:e2:b7:90:e2:d2:86:
- 91:1c:01:b9:d1:89:ba:db:ac:d3:1c:0d:48:b9:bc:
- 03:6a:de:cd:be:6e:1a:22:9d:2d:14:7e:cd:af:e7:
- 7f:e7
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- ED:8D:2E:41:6F:59:A4:A8:A8:08:80:22:DA:52:E2:83:F8:05:A4:BE
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 86:c1:24:8e:a7:4d:26:27:8a:f6:12:62:6d:7f:de:aa:69:07:
- 97:e4:3a:78:a6:37:73:fc:63:cb:68:1d:ab:90:32:7c:b2:bd:
- b5:7c:c6:ba:a9:bf:55:22:4e:a2:ca:1e:25:a4:4b:3e:78:f7:
- 5b:46:b7:04:83:99:57:82:82:fc:2f:c5:96:96:a3:da:8d:db:
- df:26:e9:62:1a:24:22:9b:95:4c:cc:79:54:c9:bb:e3:1c:bc:
- 87:bb:26:74:8f:89:c2:64:57:12:ca:7e:e9:e7:cb:aa:38:9f:
- b0:96:4c:63:64:41:cc:03:e8:5e:13:2e:9c:79:73:bc:e7:b1:
- 5b:54:80:51:48:eb:71:68:c7:21:fd:f9:2c:ee:a0:3f:52:06:
- ae:96:1e:62:13:46:37:0e:a4:58:b2:45:1e:7d:ea:7f:7d:70:
- 47:92:7c:7b:7c:90:a8:87:7c:1a:12:51:75:75:59:92:1c:4d:
- a2:7f:7e:ad:fa:89:de:8f:ae:2f:d6:ca:c5:3b:55:a0:fb:f5:
- e0:3e:0b:60:c5:2d:d1:7e:e9:c1:cb:3c:24:77:56:8f:af:4e:
- cb:99:39:b7:53:99:07:8c:71:59:20:9c:bd:db:38:bb:cc:b8:
- 5c:9a:51:66:18:46:39:96:c4:1a:ce:89:39:d3:6e:5f:79:17:
- 84:92:74:16
------BEGIN CERTIFICATE-----
-MIIDvTCCAqWgAwIBAgIRALBrk5LjXI1+7Z3IllnFwoMwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0xNzEyMjAwMDAwMDBaFw0yMDEyMjAwMDAwMDBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDJABG+o501DlYnpIeZGdbtxuX0hUvuhTCO
-/+u+ZajABJAsejJ8tm5qRURXOguSG2u3nKqR9cA3r/47aQHvkkYfLpF4lnL5X7lR
-mkOq8vWObvwaUuvwcsA3qwxWSd5u4sVOl/eSj0yzJDq0Lb6QVPWlbWgrZyEdDuAx
-g7glVTWeJagK5IMI8b2yiis7oxLXFudztUg2E3UVkIMzGw55unskWdOnViQ0N3kF
-yXfbFcnojWNm2iJfQtHxjfHN+ydGaH/z4SpYh/0SHqnCrj46J2fojyH/LFgn2Mns
-keK3kOLShpEcAbnRibrbrNMcDUi5vANq3s2+bhoinS0Ufs2v53/nAgMBAAGjbzBt
-MAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFO2NLkFvWaSoqAiAItpS4oP4BaS+MB8G
-A1UdIwQYMBaAFJsmC4qYqbsduR8c4xpAM+2OF4irMB0GA1UdJQQWMBQGCCsGAQUF
-BwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAQEAhsEkjqdNJieK9hJibX/e
-qmkHl+Q6eKY3c/xjy2gdq5AyfLK9tXzGuqm/VSJOosoeJaRLPnj3W0a3BIOZV4KC
-/C/Flpaj2o3b3ybpYhokIpuVTMx5VMm74xy8h7smdI+JwmRXEsp+6efLqjifsJZM
-Y2RBzAPoXhMunHlzvOexW1SAUUjrcWjHIf35LO6gP1IGrpYeYhNGNw6kWLJFHn3q
-f31wR5J8e3yQqId8GhJRdXVZkhxNon9+rfqJ3o+uL9bKxTtVoPv14D4LYMUt0X7p
-wcs8JHdWj69Oy5k5t1OZB4xxWSCcvds4u8y4XJpRZhhGOZbEGs6JOdNuX3kXhJJ0
-Fg==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/crit-codeSigning-chain.pem b/src/pki/testdata/ssl/certificates/crit-codeSigning-chain.pem
deleted file mode 100644
index 55d1e8c..0000000
--- a/src/pki/testdata/ssl/certificates/crit-codeSigning-chain.pem
+++ /dev/null
@@ -1,110 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDo54gDQT1qecev
-bDsUAnrPdTnIFp0Da4tLIr+UCTyfMoF5ZEVfH7PDaS5pydczRr3O5SR7+VUNOaQc
-nU3E2IWgb0tD/AeI6x6Q/rjFMM7DsNvHjvzuX9xjhwGeM5KVNb9jv59g7TmwYvoF
-y6QUwEpV+gySaAfGQi0GsviEIyZR3kWqzalHk8EetSsEql7BEVjeAEoz5raMLukF
-qfJ9lOVkvzPMUXQVEROlCzWePHe7lXkep9LUNIdguu92Qt2458BUgNR703RsJxy3
-HU0dz1pe83Pu4MrQk65Di851HAOYykkZ0NugmWFZn4zHit3KDJZJZ4cBiaq8ftgh
-xPvpH2m1AgMBAAECggEAATjJG+r0Wmlf1MOlZbIhLEQil0XvZ3jXxGuj0s2khllu
-SZtReuyxsJzI/fiLD/h0nK/6gyKZmjOBU3lByP6KQYkrUQcaGfC90x3nSCp3zksV
-a3bu6g+Hri7BA+tBukH4CmnOW9Dt2qmcG/CFNC+958iPr6FmKLv8hkC937Uf9cL6
-nD29wvDuzRibDRV/yDk/dhbc2QTpDp8kkjDBI/Hpibj6GeQra5YDDafqs78w0jQh
-jOl6+E4sn79+X4ZccOCXfgcXsa8gZcskIXdVGhtWnYGWdxcyXDhJrZzKr2tEhzAw
-QFhpHjlGL9l6P/lDyn0qMxp9IEFLcWJk2YTrcaV4wQKBgQD4VLNJj+l2x4O7qGpb
-X5GRYLBCqI76iXLxUaEQJxZpd5qngWKaSJyS9IO82k7fcCgsbhQQnXC59UIlUQ6A
-YLPO4Nj/D6V8ewttCIbiRtddTZBj9wIHJFhOfcRoDBSTskhaJ4kVB1Nh+YchQf+8
-P6/wwkTcn9FRohdeHikYDnpqIQKBgQDwGN6pGMbrnIKv/+HHC55QPshUYjKIjU98
-Bd7TU3Kj8tSpxiKKXY9RtkAfzoSrgPzu5SJ3bSgXBXz+xOtN9b9z5beQHJyufHaO
-NaVQ4ZStMjo3afXMNj7UUd9ZbFuH2K+K1FjXy99Ab5wN/u5snRiErh2KS/w3mxze
-6kOComAVFQKBgQC7vP0WHhB4VfmHg5l0ntmkOJ7IpjoBuqwFOJs1ZPeSoHNxM2Xi
-EgcdKnH18m0yis40WLwem4g/beWl5JO8Bl+phV9H5QJNC5Dly059/uSOizcf+/uy
-fo2sOXSk3I0p49zDG6SNG060gTrhr82w+cz/jT8WNFTBDHPyGYcjwr5VQQKBgEHU
-f9BbU8csHYUGIrCBlgGohSLl3bclD6MQtPy6R5d+MCLwiW3oozAjSUevRx8C+dbC
-ioW2LyTIw3HTKjUw6TJszLy9q5QH2jW5rb8UasBmIiIpclRwlx9950BMfngryE3H
-VSit5GN1dpM7z8GF/T/7wWu208unQu43yxTZUoDVAoGBANzJZijbb2JYdvDSi5aX
-Akv5droXiJ9DG7wew7xGJcGRdmpRw+mas2j5hdIXwfKeN7yr8KFaYxv/DDqlTsv+
-sZPysvWc4TZ8NrNOL9VyAD/3QCjo9uBdd2rSssYMKHI8RXD+Jiold59AW3oMDwVk
-OW8+EuyR+eoq9HueaKbjlJ5O
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 2 (0x2)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=2048 RSA Test Root CA
- Validity
- Not Before: Feb 17 17:08:51 2023 GMT
- Not After : Feb 14 17:08:51 2033 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:e8:e7:88:03:41:3d:6a:79:c7:af:6c:3b:14:02:
- 7a:cf:75:39:c8:16:9d:03:6b:8b:4b:22:bf:94:09:
- 3c:9f:32:81:79:64:45:5f:1f:b3:c3:69:2e:69:c9:
- d7:33:46:bd:ce:e5:24:7b:f9:55:0d:39:a4:1c:9d:
- 4d:c4:d8:85:a0:6f:4b:43:fc:07:88:eb:1e:90:fe:
- b8:c5:30:ce:c3:b0:db:c7:8e:fc:ee:5f:dc:63:87:
- 01:9e:33:92:95:35:bf:63:bf:9f:60:ed:39:b0:62:
- fa:05:cb:a4:14:c0:4a:55:fa:0c:92:68:07:c6:42:
- 2d:06:b2:f8:84:23:26:51:de:45:aa:cd:a9:47:93:
- c1:1e:b5:2b:04:aa:5e:c1:11:58:de:00:4a:33:e6:
- b6:8c:2e:e9:05:a9:f2:7d:94:e5:64:bf:33:cc:51:
- 74:15:11:13:a5:0b:35:9e:3c:77:bb:95:79:1e:a7:
- d2:d4:34:87:60:ba:ef:76:42:dd:b8:e7:c0:54:80:
- d4:7b:d3:74:6c:27:1c:b7:1d:4d:1d:cf:5a:5e:f3:
- 73:ee:e0:ca:d0:93:ae:43:8b:ce:75:1c:03:98:ca:
- 49:19:d0:db:a0:99:61:59:9f:8c:c7:8a:dd:ca:0c:
- 96:49:67:87:01:89:aa:bc:7e:d8:21:c4:fb:e9:1f:
- 69:b5
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- CB:86:F3:FC:03:8D:82:4B:C6:63:57:8A:E6:9F:86:55:10:D9:00:B7
- X509v3 Extended Key Usage: critical
- Code Signing
- X509v3 Authority Key Identifier:
- D5:28:55:87:C7:A3:BF:D7:C4:CE:BE:3D:01:D2:BE:8B:7C:E4:E2:E2
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 64:ff:92:1d:66:c5:2b:6c:b8:d6:82:39:80:8e:ef:55:cd:bb:
- 6f:1c:16:20:a5:6b:90:fa:f3:20:c7:37:0d:7d:4f:da:f5:1f:
- 9c:dc:28:3e:39:56:a7:17:eb:3b:09:53:d7:1e:1b:a1:eb:24:
- f7:7f:04:38:77:e1:e4:39:60:bf:24:13:37:05:8b:9f:36:94:
- 91:e4:fc:43:97:d6:0e:11:cb:ee:a9:f9:c1:05:6e:2f:ea:76:
- af:f5:69:ae:06:97:5a:2d:97:0b:cd:3a:1d:01:30:26:ac:da:
- f6:03:e4:df:32:08:64:81:ea:36:85:0c:03:41:6a:ef:10:6b:
- 2a:a4:cb:f6:59:9b:bf:fa:1b:5a:9e:05:33:b0:54:30:d1:79:
- dd:77:6b:e0:c8:be:52:37:58:7e:b0:53:23:fe:62:ce:5c:bb:
- b5:06:85:18:e0:08:08:cd:48:bc:1d:d7:cb:92:55:33:57:fe:
- 42:4a:81:0d:d3:ee:02:0a:e1:4b:d2:f1:de:81:5e:bb:fa:8b:
- 9f:3f:ec:0a:1a:30:0b:de:15:d3:75:5e:11:f8:a9:7e:4f:7d:
- 40:03:06:e4:2f:3b:e5:5e:ff:42:f5:e6:99:02:f3:26:c0:f7:
- e2:b2:62:53:d3:e2:5b:2a:17:e3:78:5c:84:cc:14:bf:fa:0d:
- ac:d7:d0:49
------BEGIN CERTIFICATE-----
-MIIDdDCCAlygAwIBAgIBAjANBgkqhkiG9w0BAQsFADAgMR4wHAYDVQQDDBUyMDQ4
-IFJTQSBUZXN0IFJvb3QgQ0EwHhcNMjMwMjE3MTcwODUxWhcNMzMwMjE0MTcwODUx
-WjBgMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN
-TW91bnRhaW4gVmlldzEQMA4GA1UECgwHVGVzdCBDQTESMBAGA1UEAwwJMTI3LjAu
-MC4xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6OeIA0E9annHr2w7
-FAJ6z3U5yBadA2uLSyK/lAk8nzKBeWRFXx+zw2kuacnXM0a9zuUke/lVDTmkHJ1N
-xNiFoG9LQ/wHiOsekP64xTDOw7Dbx4787l/cY4cBnjOSlTW/Y7+fYO05sGL6Bcuk
-FMBKVfoMkmgHxkItBrL4hCMmUd5Fqs2pR5PBHrUrBKpewRFY3gBKM+a2jC7pBany
-fZTlZL8zzFF0FRETpQs1njx3u5V5HqfS1DSHYLrvdkLduOfAVIDUe9N0bCcctx1N
-Hc9aXvNz7uDK0JOuQ4vOdRwDmMpJGdDboJlhWZ+Mx4rdygyWSWeHAYmqvH7YIcT7
-6R9ptQIDAQABo3kwdzAPBgNVHREECDAGhwR/AAABMAwGA1UdEwEB/wQCMAAwHQYD
-VR0OBBYEFMuG8/wDjYJLxmNXiuafhlUQ2QC3MBYGA1UdJQEB/wQMMAoGCCsGAQUF
-BwMDMB8GA1UdIwQYMBaAFNUoVYfHo7/XxM6+PQHSvot85OLiMA0GCSqGSIb3DQEB
-CwUAA4IBAQBk/5IdZsUrbLjWgjmAju9VzbtvHBYgpWuQ+vMgxzcNfU/a9R+c3Cg+
-OVanF+s7CVPXHhuh6yT3fwQ4d+HkOWC/JBM3BYufNpSR5PxDl9YOEcvuqfnBBW4v
-6nav9WmuBpdaLZcLzTodATAmrNr2A+TfMghkgeo2hQwDQWrvEGsqpMv2WZu/+hta
-ngUzsFQw0Xndd2vgyL5SN1h+sFMj/mLOXLu1BoUY4AgIzUi8HdfLklUzV/5CSoEN
-0+4CCuFL0vHegV67+oufP+wKGjAL3hXTdV4R+Kl+T31AAwbkLzvlXv9C9eaZAvMm
-wPfismJT0+JbKhfjeFyEzBS/+g2s19BJ
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/crlset_blocked_interception_by_intermediate.raw b/src/pki/testdata/ssl/certificates/crlset_blocked_interception_by_intermediate.raw
deleted file mode 100644
index 5bac40a..0000000
--- a/src/pki/testdata/ssl/certificates/crlset_blocked_interception_by_intermediate.raw
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/crlset_blocked_interception_by_root.raw b/src/pki/testdata/ssl/certificates/crlset_blocked_interception_by_root.raw
deleted file mode 100644
index 457c750..0000000
--- a/src/pki/testdata/ssl/certificates/crlset_blocked_interception_by_root.raw
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/crlset_by_intermediate_serial.raw b/src/pki/testdata/ssl/certificates/crlset_by_intermediate_serial.raw
deleted file mode 100644
index 852f28f..0000000
--- a/src/pki/testdata/ssl/certificates/crlset_by_intermediate_serial.raw
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/crlset_by_leaf_spki.raw b/src/pki/testdata/ssl/certificates/crlset_by_leaf_spki.raw
deleted file mode 100644
index 2d072ff..0000000
--- a/src/pki/testdata/ssl/certificates/crlset_by_leaf_spki.raw
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/crlset_by_leaf_subject_no_spki.raw b/src/pki/testdata/ssl/certificates/crlset_by_leaf_subject_no_spki.raw
deleted file mode 100644
index 7fcdc37..0000000
--- a/src/pki/testdata/ssl/certificates/crlset_by_leaf_subject_no_spki.raw
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/crlset_by_root_serial.raw b/src/pki/testdata/ssl/certificates/crlset_by_root_serial.raw
deleted file mode 100644
index c530e91..0000000
--- a/src/pki/testdata/ssl/certificates/crlset_by_root_serial.raw
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/crlset_by_root_spki.raw b/src/pki/testdata/ssl/certificates/crlset_by_root_spki.raw
deleted file mode 100644
index 2cf8934..0000000
--- a/src/pki/testdata/ssl/certificates/crlset_by_root_spki.raw
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/crlset_by_root_subject.raw b/src/pki/testdata/ssl/certificates/crlset_by_root_subject.raw
deleted file mode 100644
index dff3162..0000000
--- a/src/pki/testdata/ssl/certificates/crlset_by_root_subject.raw
+++ /dev/null
@@ -1 +0,0 @@
-{"Version": 0, "ContentType": "CRLSet", "Sequence": 1, "NumParents": 0, "BlockedSPKIs": [], "LimitedSubjects": {"APZW1IJHguCRuMrfLCm88fpiNaGl562lAbs3i6JTQA0=": ["VypP3VWL7OaqTJ7mIBehWYlv8khPuFHpWiearZI2YjI="]}, "KnownInterceptionSPKIs": [], "BlockedInterceptionSPKIs": []} \ No newline at end of file
diff --git a/src/pki/testdata/ssl/certificates/crlset_by_root_subject_no_spki.raw b/src/pki/testdata/ssl/certificates/crlset_by_root_subject_no_spki.raw
deleted file mode 100644
index 85d6399..0000000
--- a/src/pki/testdata/ssl/certificates/crlset_by_root_subject_no_spki.raw
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/crlset_known_interception_by_root.raw b/src/pki/testdata/ssl/certificates/crlset_known_interception_by_root.raw
deleted file mode 100644
index f2a12d0..0000000
--- a/src/pki/testdata/ssl/certificates/crlset_known_interception_by_root.raw
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/cronet-quic-chain.pem b/src/pki/testdata/ssl/certificates/cronet-quic-chain.pem
deleted file mode 100644
index d40da79..0000000
--- a/src/pki/testdata/ssl/certificates/cronet-quic-chain.pem
+++ /dev/null
@@ -1,159 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 1 (0x1)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Test Intermediate CA
- Validity
- Not Before: Jun 1 11:27:00 2023 GMT
- Not After : May 29 11:27:00 2033 GMT
- Subject: CN=localhost
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:f2:5e:81:dd:8a:91:07:17:5e:dc:89:e0:56:36:
- 2d:5f:80:01:13:a6:64:48:04:79:3c:5e:08:23:75:
- bd:12:f9:d4:00:fb:47:7b:25:11:21:12:0b:05:25:
- 6e:9e:04:b9:70:dc:5d:be:c3:59:a9:55:ff:3c:d4:
- 95:b0:77:39:d0:31:0b:b4:c9:a4:c9:53:30:21:e8:
- 58:f0:70:1c:fd:26:07:24:0d:ae:c9:0e:73:99:3e:
- e8:cb:cb:54:90:ae:49:90:90:89:c1:d3:82:23:d7:
- b5:dd:2b:0a:77:d0:10:c7:6f:71:b9:1c:d4:0b:39:
- f7:8d:ca:46:94:d4:cb:93:35:28:9d:36:90:cf:a8:
- ac:e5:70:e8:66:16:7b:5a:8b:9f:c4:e8:d0:e2:de:
- 87:7b:6f:fa:0d:81:90:e2:13:34:a5:bb:58:72:1d:
- f1:51:1c:9d:4c:55:50:e5:98:21:bf:a9:b3:8b:fc:
- e8:74:30:32:f8:81:6c:b0:b0:f4:0b:16:94:d8:af:
- 18:aa:03:09:a4:77:2f:ed:d9:d9:dd:b3:84:1f:a6:
- 59:f7:ba:a7:16:b2:38:e2:f4:c7:bc:16:e6:98:46:
- 82:d1:ce:f6:45:b9:0c:b9:f1:98:9d:92:36:33:cc:
- 3f:08:80:02:25:9a:a7:8b:ca:2e:ab:8e:7f:44:5e:
- be:9b
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- DNS:localhost
- X509v3 Subject Key Identifier:
- F8:F0:38:9F:09:35:40:22:F7:E3:30:D8:FC:E5:A8:5C:1F:8C:D1:8C
- X509v3 Authority Key Identifier:
- 19:A2:E3:C8:BC:6D:CA:84:54:09:B3:67:4D:3E:60:CF:C4:78:38:95
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 43:58:ea:e3:50:da:d4:50:9a:3e:d7:0a:82:c2:1c:ca:f8:05:
- 4d:4a:96:bf:6e:ab:0a:0a:ae:d3:4e:c4:ce:73:73:ec:c5:45:
- d2:9b:9f:4c:cd:32:f9:27:a7:6f:59:bf:66:e9:78:b5:6b:10:
- 6a:e8:44:51:dc:f7:31:68:36:a8:d3:59:bc:90:94:48:d5:f5:
- 30:67:7e:bf:22:58:ca:0c:0a:79:6d:94:d6:9f:70:68:e4:24:
- 68:49:16:ea:d7:f9:1b:35:dc:93:49:56:d1:c1:1d:31:a5:c4:
- 34:c7:88:e8:20:0f:de:ea:b5:0a:6d:da:10:df:5a:db:ca:e5:
- 7d:1c:99:eb:f5:26:bf:cd:dd:67:31:8b:15:63:ea:90:68:fa:
- 83:81:48:e2:b9:94:02:c2:61:74:71:06:fe:e8:97:e0:f0:d2:
- da:79:06:14:a2:44:94:93:32:f6:00:7d:28:ef:21:89:2e:2b:
- 69:45:cb:ae:a6:64:46:ae:db:36:d2:a3:fe:ed:8c:65:c0:c9:
- 51:42:73:df:21:2e:2d:51:35:c3:e8:54:76:5b:4e:0f:39:9d:
- 9f:f4:6e:9f:af:8c:9e:de:60:b2:e7:5d:5c:61:12:f3:4b:4b:
- 2e:08:ec:cc:20:90:00:36:f3:c4:14:b3:43:a2:f9:19:33:e5:
- c3:01:56:9b
------BEGIN CERTIFICATE-----
-MIIDNTCCAh2gAwIBAgIBATANBgkqhkiG9w0BAQsFADAfMR0wGwYDVQQDDBRUZXN0
-IEludGVybWVkaWF0ZSBDQTAeFw0yMzA2MDExMTI3MDBaFw0zMzA1MjkxMTI3MDBa
-MBQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
-AQoCggEBAPJegd2KkQcXXtyJ4FY2LV+AAROmZEgEeTxeCCN1vRL51AD7R3slESES
-CwUlbp4EuXDcXb7DWalV/zzUlbB3OdAxC7TJpMlTMCHoWPBwHP0mByQNrskOc5k+
-6MvLVJCuSZCQicHTgiPXtd0rCnfQEMdvcbkc1As5943KRpTUy5M1KJ02kM+orOVw
-6GYWe1qLn8To0OLeh3tv+g2BkOITNKW7WHId8VEcnUxVUOWYIb+ps4v86HQwMviB
-bLCw9AsWlNivGKoDCaR3L+3Z2d2zhB+mWfe6pxayOOL0x7wW5phGgtHO9kW5DLnx
-mJ2SNjPMPwiAAiWap4vKLquOf0RevpsCAwEAAaOBhjCBgzAMBgNVHRMBAf8EAjAA
-MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAUBgNVHREEDTALgglsb2Nh
-bGhvc3QwHQYDVR0OBBYEFPjwOJ8JNUAi9+Mw2PzlqFwfjNGMMB8GA1UdIwQYMBaA
-FBmi48i8bcqEVAmzZ00+YM/EeDiVMA0GCSqGSIb3DQEBCwUAA4IBAQBDWOrjUNrU
-UJo+1wqCwhzK+AVNSpa/bqsKCq7TTsTOc3PsxUXSm59MzTL5J6dvWb9m6Xi1axBq
-6ERR3PcxaDao01m8kJRI1fUwZ36/IljKDAp5bZTWn3Bo5CRoSRbq1/kbNdyTSVbR
-wR0xpcQ0x4joIA/e6rUKbdoQ31rbyuV9HJnr9Sa/zd1nMYsVY+qQaPqDgUjiuZQC
-wmF0cQb+6Jfg8NLaeQYUokSUkzL2AH0o7yGJLitpRcuupmRGrts20qP+7YxlwMlR
-QnPfIS4tUTXD6FR2W04POZ2f9G6fr4ye3mCy511cYRLzS0suCOzMIJAANvPEFLND
-ovkZM+XDAVab
------END CERTIFICATE-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 1 (0x1)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Test Root CA
- Validity
- Not Before: Jun 1 11:27:00 2023 GMT
- Not After : May 29 11:27:00 2033 GMT
- Subject: CN=Test Intermediate CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:b7:e9:bb:fb:dd:c9:fc:be:5c:a7:8a:ed:d0:c6:
- f8:89:33:d8:a7:81:db:85:43:dd:ba:46:7e:2a:44:
- 76:58:81:f9:1d:e7:02:1c:11:8e:13:2c:51:c9:36:
- 4b:a9:8f:d2:a7:d0:2d:0a:6e:16:33:08:a5:37:6e:
- 75:56:12:70:6d:51:0e:83:a6:4c:91:b9:74:50:73:
- c6:3a:bf:82:0d:8a:f2:df:9c:dd:a4:ea:42:3e:eb:
- 04:4a:22:44:d0:1b:2a:0d:d6:18:f6:b1:95:73:8f:
- f8:e5:c4:56:ff:5c:32:6a:5a:ec:42:93:79:18:a9:
- 09:87:ff:40:d3:90:58:5b:9c:fa:5b:d5:46:b3:17:
- 7c:e2:6f:9c:26:d1:18:18:0d:5a:3e:7f:7f:70:ca:
- ee:f5:e3:b7:8c:9c:b7:9d:72:ad:cb:1b:42:3f:21:
- 98:29:0f:9e:83:db:e0:54:4c:24:54:fc:84:b8:53:
- 92:ed:26:d6:4a:f6:10:c5:7e:1c:5c:dc:3b:b2:eb:
- 90:4c:a6:93:91:75:9c:b3:91:95:d2:6d:7c:97:3f:
- 69:fc:16:86:9e:c9:30:f2:85:64:a1:88:7b:c0:d3:
- 28:67:c1:e6:51:84:00:5b:ed:12:e5:5a:8f:4a:14:
- 22:39:0f:1b:76:5f:3f:87:91:55:d9:39:91:50:41:
- 98:2d
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- X509v3 Subject Key Identifier:
- 19:A2:E3:C8:BC:6D:CA:84:54:09:B3:67:4D:3E:60:CF:C4:78:38:95
- X509v3 Authority Key Identifier:
- 55:D5:CD:87:69:64:E7:5F:FA:84:C9:B3:D1:9F:8E:A4:87:BC:F9:FD
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 95:78:6d:c2:94:1d:1d:55:7f:91:01:57:a8:d6:9c:28:c2:13:
- 26:b7:25:67:f3:ea:28:be:99:e8:fb:9b:12:f1:90:86:a8:c9:
- b3:db:14:10:d8:cf:67:75:cc:f9:5e:e8:a0:f8:0e:dc:fe:de:
- 78:13:63:b3:66:a5:a6:0e:2b:9b:8c:54:13:f0:14:de:26:55:
- 38:73:cf:6a:37:10:dd:3c:07:5a:c3:6f:cd:c4:96:ee:bf:8c:
- 35:bf:c6:9c:97:21:98:e0:5e:94:61:0d:3d:5c:f0:83:ce:29:
- c0:2b:bf:b9:87:b8:c2:d1:b1:60:72:9a:ff:e6:8b:6b:89:e7:
- db:2d:56:d8:a6:08:9c:6c:48:23:a4:da:d5:d7:17:b0:ef:4e:
- ea:c2:df:ce:aa:dc:d7:12:4b:93:88:e5:d3:81:b7:8c:98:03:
- 51:2c:11:6b:23:07:5c:60:07:df:93:30:53:d6:6d:a8:cc:dd:
- ad:00:4b:e8:80:1b:71:1f:6c:51:32:01:f9:f5:f2:91:8e:b3:
- d4:13:26:b0:e3:6c:fa:64:b0:94:af:e7:12:b5:b9:7a:4c:20:
- 67:6e:bb:e7:c5:73:97:39:fe:1e:c9:0e:17:33:45:5b:90:f0:
- da:6d:a8:49:cf:29:de:0a:cb:ac:0c:d0:59:0a:a5:d1:c8:0e:
- 19:96:2d:63
------BEGIN CERTIFICATE-----
-MIIDFDCCAfygAwIBAgIBATANBgkqhkiG9w0BAQsFADAXMRUwEwYDVQQDDAxUZXN0
-IFJvb3QgQ0EwHhcNMjMwNjAxMTEyNzAwWhcNMzMwNTI5MTEyNzAwWjAfMR0wGwYD
-VQQDDBRUZXN0IEludGVybWVkaWF0ZSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
-ADCCAQoCggEBALfpu/vdyfy+XKeK7dDG+Ikz2KeB24VD3bpGfipEdliB+R3nAhwR
-jhMsUck2S6mP0qfQLQpuFjMIpTdudVYScG1RDoOmTJG5dFBzxjq/gg2K8t+c3aTq
-Qj7rBEoiRNAbKg3WGPaxlXOP+OXEVv9cMmpa7EKTeRipCYf/QNOQWFuc+lvVRrMX
-fOJvnCbRGBgNWj5/f3DK7vXjt4yct51yrcsbQj8hmCkPnoPb4FRMJFT8hLhTku0m
-1kr2EMV+HFzcO7LrkEymk5F1nLORldJtfJc/afwWhp7JMPKFZKGIe8DTKGfB5lGE
-AFvtEuVaj0oUIjkPG3ZfP4eRVdk5kVBBmC0CAwEAAaNjMGEwDwYDVR0TAQH/BAUw
-AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBmi48i8bcqEVAmzZ00+YM/E
-eDiVMB8GA1UdIwQYMBaAFFXVzYdpZOdf+oTJs9GfjqSHvPn9MA0GCSqGSIb3DQEB
-CwUAA4IBAQCVeG3ClB0dVX+RAVeo1pwowhMmtyVn8+oovpno+5sS8ZCGqMmz2xQQ
-2M9ndcz5Xuig+A7c/t54E2OzZqWmDiubjFQT8BTeJlU4c89qNxDdPAdaw2/NxJbu
-v4w1v8aclyGY4F6UYQ09XPCDzinAK7+5h7jC0bFgcpr/5otriefbLVbYpgicbEgj
-pNrV1xew707qwt/OqtzXEkuTiOXTgbeMmANRLBFrIwdcYAffkzBT1m2ozN2tAEvo
-gBtxH2xRMgH59fKRjrPUEyaw42z6ZLCUr+cStbl6TCBnbrvnxXOXOf4eyQ4XM0Vb
-kPDabahJzyneCsusDNBZCqXRyA4Zli1j
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/cronet-quic-leaf-cert.key b/src/pki/testdata/ssl/certificates/cronet-quic-leaf-cert.key
deleted file mode 100644
index 78e562b..0000000
--- a/src/pki/testdata/ssl/certificates/cronet-quic-leaf-cert.key
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/cronet-quic-leaf-cert.key.pkcs8.pem b/src/pki/testdata/ssl/certificates/cronet-quic-leaf-cert.key.pkcs8.pem
deleted file mode 100644
index a0c66c8..0000000
--- a/src/pki/testdata/ssl/certificates/cronet-quic-leaf-cert.key.pkcs8.pem
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDyXoHdipEHF17c
-ieBWNi1fgAETpmRIBHk8Xggjdb0S+dQA+0d7JREhEgsFJW6eBLlw3F2+w1mpVf88
-1JWwdznQMQu0yaTJUzAh6FjwcBz9JgckDa7JDnOZPujLy1SQrkmQkInB04Ij17Xd
-Kwp30BDHb3G5HNQLOfeNykaU1MuTNSidNpDPqKzlcOhmFntai5/E6NDi3od7b/oN
-gZDiEzSlu1hyHfFRHJ1MVVDlmCG/qbOL/Oh0MDL4gWywsPQLFpTYrxiqAwmkdy/t
-2dnds4Qfpln3uqcWsjji9Me8FuaYRoLRzvZFuQy58ZidkjYzzD8IgAIlmqeLyi6r
-jn9EXr6bAgMBAAECggEAYptnu6I+KgPsoM5pmrm1ERcrmPqH7zL+vjxFlGO5FqjV
-A8c4CFaG1w0XtbLKg/jJF61YaJ3i8z2dN/sHocGIIHdr21R0ukIhoZH96Wi7qpTX
-r+fvNjauemk5XnytvaVjIbFkkprCZmHDSKXTvvZEdVeWjak4bg7Z9HKY78F5x7w8
-x4aChtcWo6bsB8N2oQxsGYHew9v7KKNUiuqXMnvBSSnH/GOCwsYzlLfFCjhOdOrT
-7/J3VhtcP/7zMCARUosteOyjK8Mr8mt9KNNRjs1b0A1JU6yPdqsmkjEaYeeW/7K8
-SkxEzXwBJ9iBKPpVsAix25JCBxBpfDg7GYu0XGpcyQKBgQD5GMU8E6T5HOtB053C
-FR9ooMPLtKzCCW52nGZnXn4KfMTppGyl6uKmxj5adUVIOkzWwadGBSUDmj3BEW6F
-Tch/TbaPS2Mcsn7Vs9v9ZgzB4zJ2R0x0LJkkSncGy36uAQkdn/w7DyNru9Y7AelI
-fS2VM4SQDgNE2YVmOhbz9vcfeQKBgQD5FgHymkUogvr9P90JluNNPSfnG4NWa+Fn
-zq/oH+2X6VNcX1n69olmP4v4IirCKMMGWKS+xBplBVFExiMJj8RNhrAMDTzDUsip
-rrtsJHo/KsL63xuEcLlcDb0Z7YvolOs9CtZQ/RNUmQeD5wE/dDR8RaGbWtGxWjli
-I/MBkDFlswKBgQDaWQsy4SlgMChMGFoV8XwJs7pNSr+QisHoeKoO/DZRrRLSlw2h
-1qX8eJPZqSgk6u3F5hRhfUr3wHFXVpdhhFA2vwFC1Fs5oYEqhDFXCugt4KCwK0lq
-IFnRBPEW5LPThRbfgAiSIG/1FL7yFHfP0eJuAa22tIHLDT0w4cSS762pSQKBgQDC
-vWgManyDbdQZR2Li6msPqi6WSzZlzLZP2JJC4yN4z1zzLUFGKpXFsQ0XlG7lmcTQ
-I2G6G8ufC4c8Q8SE5zfMfO8KnRbShtiHgSrbI7HHzQDf7qqu4wqoY71ilgv6bON1
-uBFTBGmmjHYJtAOPvqSCPFZbBahIBogyqHSG1lsobQKBgQDTHrF6X0VDkR8V6rZg
-fhxFcOf9zkZEKOFP2aWQ0s3s5N/QEeaIiWLCJu8yLxCe15WzaHSl0iR/piwplRhC
-nqPufl86Yn6ztL1nI7Y9O/sCc0HBzAAntLW/L+ZCeqm28BWHCuMGySc/fUVUV04w
-lUGD7/W2H+/yr/TZOqXZY1ZVHw==
------END PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/cronet-quic-root.pem b/src/pki/testdata/ssl/certificates/cronet-quic-root.pem
deleted file mode 100644
index 1d22b86..0000000
--- a/src/pki/testdata/ssl/certificates/cronet-quic-root.pem
+++ /dev/null
@@ -1,19 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIC/jCCAeagAwIBAgIUXOi6XoxnMUjJg4jeOwRhsdqEqEQwDQYJKoZIhvcNAQEL
-BQAwFzEVMBMGA1UEAwwMVGVzdCBSb290IENBMB4XDTIzMDYwMTExMjcwMFoXDTMz
-MDUyOTExMjcwMFowFzEVMBMGA1UEAwwMVGVzdCBSb290IENBMIIBIjANBgkqhkiG
-9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl9xCMPMIvfmJWz25AG/VtgWbqNs67HXQbXWf
-pDF2wjQpHVOYbfl7Zgly5O+5es1aUbJaGyZ9G6xuYSXKFnnYLoP7M86O05fQQBAj
-K+IE5nO6136ksCAfxCFTFfn4vhPvK8Vba5rqox4WeIXYKvHYSoiHz0ELrnFOHcyN
-Innyze7bLtkMCA1ShHpmvDCR+U3Uj6JwOfoirn29jjU/48/ORha7dcJYtYXk2eGo
-RJfrtIx20tXAaKaGnXOCGYbEVXTeQkQPqKFVzqP7+KYS/Y8eNFV35ugpLNES+44T
-bQ2QruTZdrNRjJkEoyiB/E53a0OUltB/R7Z0L0xstnKfsAf3OwIDAQABo0IwQDAP
-BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUVdXNh2lk
-51/6hMmz0Z+OpIe8+f0wDQYJKoZIhvcNAQELBQADggEBADNg7G8n6DUrQ5doXzm9
-kOp5siX6iPs0zFReXKhIT1Gef63l3tb7AdPedF03aj9XkUt0shhNOGG5SK2k5KBQ
-MJc9muYRCAyo2xMr3rFUQdI5B51SCy5HeAMralgTHXN0Hv+TH04YfRrACVmr+5ke
-pH3bF1gYaT+Zy5/pHJnV5lcwS6/H44g9XXWIopjWCwbfzKxIuWofqL4fiToPSIYu
-MCUI4bKZipcJT5O6rdz/S9lbgYVjOJ4HAoT2icNQqNMMfULKevmF8SdJzfNd35yn
-tAKTROhIE2aQRVCclrjo/T3eyjWGGoJlGmxKbeCf/rXzcn1BRtk/UzLnbUFFlg5l
-axw=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/cross-signed-leaf.pem b/src/pki/testdata/ssl/certificates/cross-signed-leaf.pem
deleted file mode 100644
index 0e5bda1..0000000
--- a/src/pki/testdata/ssl/certificates/cross-signed-leaf.pem
+++ /dev/null
@@ -1,82 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 1 (0x1)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Test Dup-Hash Root CA
- Validity
- Not Before: Mar 31 04:22:42 2015 GMT
- Not After : Mar 28 04:22:42 2025 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:b2:98:4c:42:b8:4a:63:4e:e0:2d:ec:eb:57:b1:
- 88:9f:c4:13:f0:7f:41:0f:c8:39:b3:1e:63:6b:67:
- 4c:e7:07:8e:f5:a4:62:b0:4b:dd:75:5d:50:16:54:
- fe:e5:ae:b1:76:aa:ba:c4:f3:55:79:b3:b4:fc:59:
- 23:b3:09:2e:e8:ac:eb:cd:16:6f:c9:5b:88:c4:d0:
- 94:29:05:0f:1b:68:cf:cd:80:b9:45:c7:37:4b:84:
- ff:e5:a8:49:8d:5d:2f:59:ae:f6:ee:bb:5a:94:7b:
- 3b:25:62:c4:3f:ab:8b:9e:58:af:31:ca:9e:26:9a:
- 03:20:87:7b:c2:42:19:65:86:d8:7a:b3:dd:91:57:
- f5:d2:4e:d4:20:2b:1d:ce:cb:25:e5:45:6e:e1:35:
- 12:7b:bb:d7:23:c2:e9:a6:cf:f6:32:73:cf:e0:5b:
- 75:73:6f:74:b5:7e:87:ce:98:ab:e8:b9:05:f6:f1:
- 6c:94:26:62:f3:8c:cf:e1:ba:17:fc:a9:e4:fb:2f:
- 1f:8f:ce:91:be:72:ba:e3:d0:a6:44:2e:89:7e:92:
- 15:eb:c2:2d:a2:13:0a:83:6b:6c:09:3a:9c:9c:68:
- 63:6b:16:7f:a3:d0:07:f9:8b:c3:bf:43:37:8d:70:
- bc:a9:cf:a4:0d:c4:72:a1:c6:6b:b9:a9:bd:a9:8f:
- 43:67
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 78:F8:09:99:91:78:5B:B0:8B:60:B2:C7:41:B1:0C:26:29:0F:ED:91
- X509v3 Authority Key Identifier:
- keyid:C2:03:2C:7F:26:8E:42:C0:C9:99:2A:10:75:E6:13:94:12:60:48:E1
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- 9c:6a:25:23:9f:10:dd:14:9c:37:d4:71:dd:86:d0:0b:5b:d7:
- d0:2c:fc:a6:ec:c1:7a:aa:86:a4:87:ac:a3:5a:a7:a6:9c:8a:
- 57:3d:2a:60:ca:2e:47:47:ce:12:30:1e:59:d5:e7:be:9f:be:
- 89:44:8c:2e:ad:2a:62:da:07:13:84:d7:4f:a5:f8:fe:07:51:
- 3a:32:6b:28:98:cf:1c:90:6d:26:64:d7:98:e5:c8:0b:03:91:
- 3b:48:60:93:5f:67:b0:7a:08:93:b7:37:f9:56:e4:06:4d:fd:
- ff:38:d2:72:d4:15:d4:6d:4f:6a:46:18:d9:24:ae:92:c8:65:
- ef:49:f8:f7:4e:3b:2f:fa:f8:9a:a9:af:29:41:fb:cf:b6:36:
- 41:5f:51:bb:40:e6:43:05:fd:ca:5f:b3:91:50:60:48:13:c5:
- bf:f8:30:c5:1d:97:a6:d6:6b:77:0d:ff:9d:01:b1:8a:5e:b4:
- 26:fd:42:f8:63:c1:cf:44:d0:09:d1:e4:ff:9a:75:7b:5a:32:
- 7e:f9:64:12:f0:10:83:62:81:af:4c:ee:0c:25:c0:a8:b4:26:
- a2:35:15:04:98:52:49:3e:ea:01:90:66:90:04:55:5e:5d:7d:
- f8:4e:40:78:3c:b3:a0:d8:dc:5d:ff:0b:ed:d6:4e:2e:94:f7:
- ac:84:b3:d0
------BEGIN CERTIFICATE-----
-MIIDfDCCAmSgAwIBAgIBATANBgkqhkiG9w0BAQsFADAgMR4wHAYDVQQDDBVUZXN0
-IER1cC1IYXNoIFJvb3QgQ0EwHhcNMTUwMzMxMDQyMjQyWhcNMjUwMzI4MDQyMjQy
-WjBgMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN
-TW91bnRhaW4gVmlldzEQMA4GA1UECgwHVGVzdCBDQTESMBAGA1UEAwwJMTI3LjAu
-MC4xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsphMQrhKY07gLezr
-V7GIn8QT8H9BD8g5sx5ja2dM5weO9aRisEvddV1QFlT+5a6xdqq6xPNVebO0/Fkj
-swku6KzrzRZvyVuIxNCUKQUPG2jPzYC5Rcc3S4T/5ahJjV0vWa727rtalHs7JWLE
-P6uLnlivMcqeJpoDIId7wkIZZYbYerPdkVf10k7UICsdzssl5UVu4TUSe7vXI8Lp
-ps/2MnPP4Ft1c290tX6Hzpir6LkF9vFslCZi84zP4boX/Knk+y8fj86RvnK649Cm
-RC6JfpIV68ItohMKg2tsCTqcnGhjaxZ/o9AH+YvDv0M3jXC8qc+kDcRyocZruam9
-qY9DZwIDAQABo4GAMH4wDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUePgJmZF4W7CL
-YLLHQbEMJikP7ZEwHwYDVR0jBBgwFoAUwgMsfyaOQsDJmSoQdeYTlBJgSOEwHQYD
-VR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA8GA1UdEQQIMAaHBH8AAAEwDQYJ
-KoZIhvcNAQELBQADggEBAJxqJSOfEN0UnDfUcd2G0Atb19As/KbswXqqhqSHrKNa
-p6acilc9KmDKLkdHzhIwHlnV576fvolEjC6tKmLaBxOE10+l+P4HUToyayiYzxyQ
-bSZk15jlyAsDkTtIYJNfZ7B6CJO3N/lW5AZN/f840nLUFdRtT2pGGNkkrpLIZe9J
-+PdOOy/6+JqprylB+8+2NkFfUbtA5kMF/cpfs5FQYEgTxb/4MMUdl6bWa3cN/50B
-sYpetCb9Qvhjwc9E0AnR5P+adXtaMn75ZBLwEINiga9M7gwlwKi0JqI1FQSYUkk+
-6gGQZpAEVV5dffhOQHg8s6DY3F3/C+3WTi6U96yEs9A=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/cross-signed-root-md5.pem b/src/pki/testdata/ssl/certificates/cross-signed-root-md5.pem
deleted file mode 100644
index 1b94975..0000000
--- a/src/pki/testdata/ssl/certificates/cross-signed-root-md5.pem
+++ /dev/null
@@ -1,75 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 10718220368358975735 (0x94bec4a33064a8f7)
- Signature Algorithm: md5WithRSAEncryption
- Issuer: CN=Test Dup-Hash Root CA
- Validity
- Not Before: Mar 31 04:22:42 2015 GMT
- Not After : Mar 28 04:22:42 2025 GMT
- Subject: CN=Test Dup-Hash Root CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:bf:c1:3a:b7:c8:7a:cc:0c:62:28:82:1d:5b:8d:
- ca:14:09:aa:d2:80:fe:07:19:88:ff:1c:42:5f:39:
- 5c:97:5d:34:7a:07:44:4d:78:6c:bf:7f:c3:b2:99:
- 85:cd:21:94:a8:bf:f9:4e:51:5e:37:bf:19:31:30:
- d4:c7:a3:f4:30:b1:48:c2:c3:b1:1b:ef:cd:0d:1b:
- 7c:6d:3b:0c:18:2b:fe:c7:73:89:d2:15:64:c1:92:
- 2c:23:33:cf:d4:25:71:f4:80:c7:23:4b:6e:68:80:
- f6:11:c8:19:11:ff:97:6d:f0:d0:37:a2:eb:ff:88:
- 93:60:59:aa:ea:b8:d1:b7:16:50:c1:0e:9a:aa:a1:
- 1d:89:6e:88:0a:4b:fd:3d:69:4b:28:52:d4:4f:d0:
- d3:47:a6:ca:7e:96:95:15:ca:8f:e1:39:0c:66:d8:
- 87:8f:67:93:61:56:6c:28:ee:09:1f:64:8c:a3:e1:
- 00:ae:d3:97:4a:5c:dd:ba:b0:70:05:5e:81:25:c6:
- 79:05:56:87:d6:bf:cc:07:94:99:97:c7:b1:4b:5e:
- d4:1c:52:07:dc:55:e5:ad:1c:34:31:41:b0:00:c1:
- 65:22:73:79:35:0f:5d:9c:5b:9f:c9:b4:43:f0:ec:
- 77:c3:8f:93:3d:d3:e2:90:07:5b:e2:51:d4:81:4f:
- 45:85
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- C2:03:2C:7F:26:8E:42:C0:C9:99:2A:10:75:E6:13:94:12:60:48:E1
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: md5WithRSAEncryption
- 3a:35:20:4c:8b:71:aa:d8:c4:d8:90:55:df:e1:f2:b7:e2:08:
- 47:30:65:f4:e9:49:e9:54:20:8d:a9:97:52:70:5e:b5:6f:3e:
- 31:12:0c:bc:ea:42:db:38:70:e6:05:03:78:6e:2d:21:a8:04:
- ec:70:6b:c7:aa:ea:e6:ab:26:5b:5a:b2:a5:4a:44:48:fa:20:
- 42:99:bb:e3:96:60:a9:1a:09:51:54:72:5c:27:05:59:1a:09:
- f8:94:77:3c:ee:ab:08:68:e2:6d:ec:fb:74:5e:ec:f0:bf:76:
- cd:6e:4a:9c:a1:7b:91:fc:8d:e9:1e:09:7e:60:8e:91:69:84:
- 97:52:63:a0:0b:d6:ba:ec:48:c4:b3:c2:e2:fe:2d:0e:ef:48:
- f3:f9:c3:c2:bd:40:e2:95:82:20:c9:63:81:35:b7:1e:18:08:
- c0:38:bd:6c:df:e0:67:64:a4:c6:b2:93:1d:c5:c8:19:59:ab:
- e0:fb:67:bc:dd:bd:4d:18:5f:04:de:a9:a5:c6:7e:fc:41:f6:
- 53:07:91:1b:01:3c:cb:41:91:88:af:3f:86:b0:17:ab:40:b3:
- 85:4a:88:12:3a:dc:1f:ac:c5:4c:0a:46:22:cb:98:8b:a7:85:
- a7:c7:a4:44:69:82:60:93:dc:22:d5:55:5f:16:8f:ef:4f:ac:
- f8:e6:84:4f
------BEGIN CERTIFICATE-----
-MIIDBTCCAe2gAwIBAgIJAJS+xKMwZKj3MA0GCSqGSIb3DQEBBAUAMCAxHjAcBgNV
-BAMMFVRlc3QgRHVwLUhhc2ggUm9vdCBDQTAeFw0xNTAzMzEwNDIyNDJaFw0yNTAz
-MjgwNDIyNDJaMCAxHjAcBgNVBAMMFVRlc3QgRHVwLUhhc2ggUm9vdCBDQTCCASIw
-DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL/BOrfIeswMYiiCHVuNyhQJqtKA
-/gcZiP8cQl85XJddNHoHRE14bL9/w7KZhc0hlKi/+U5RXje/GTEw1Mej9DCxSMLD
-sRvvzQ0bfG07DBgr/sdzidIVZMGSLCMzz9QlcfSAxyNLbmiA9hHIGRH/l23w0Dei
-6/+Ik2BZquq40bcWUMEOmqqhHYluiApL/T1pSyhS1E/Q00emyn6WlRXKj+E5DGbY
-h49nk2FWbCjuCR9kjKPhAK7Tl0pc3bqwcAVegSXGeQVWh9a/zAeUmZfHsUte1BxS
-B9xV5a0cNDFBsADBZSJzeTUPXZxbn8m0Q/Dsd8OPkz3T4pAHW+JR1IFPRYUCAwEA
-AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUwgMsfyaOQsDJmSoQdeYT
-lBJgSOEwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBAUAA4IBAQA6NSBMi3Gq
-2MTYkFXf4fK34ghHMGX06UnpVCCNqZdScF61bz4xEgy86kLbOHDmBQN4bi0hqATs
-cGvHqurmqyZbWrKlSkRI+iBCmbvjlmCpGglRVHJcJwVZGgn4lHc87qsIaOJt7Pt0
-Xuzwv3bNbkqcoXuR/I3pHgl+YI6RaYSXUmOgC9a67EjEs8Li/i0O70jz+cPCvUDi
-lYIgyWOBNbceGAjAOL1s3+BnZKTGspMdxcgZWavg+2e83b1NGF8E3qmlxn78QfZT
-B5EbATzLQZGIrz+GsBerQLOFSogSOtwfrMVMCkYiy5iLp4Wnx6REaYJgk9wi1VVf
-Fo/vT6z45oRP
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/cross-signed-root-sha256.pem b/src/pki/testdata/ssl/certificates/cross-signed-root-sha256.pem
deleted file mode 100644
index 2ea6280..0000000
--- a/src/pki/testdata/ssl/certificates/cross-signed-root-sha256.pem
+++ /dev/null
@@ -1,75 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 14676396172197038779 (0xcbad088f4ab50abb)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Test Dup-Hash Root CA
- Validity
- Not Before: Mar 31 04:22:42 2015 GMT
- Not After : Mar 28 04:22:42 2025 GMT
- Subject: CN=Test Dup-Hash Root CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:bf:c1:3a:b7:c8:7a:cc:0c:62:28:82:1d:5b:8d:
- ca:14:09:aa:d2:80:fe:07:19:88:ff:1c:42:5f:39:
- 5c:97:5d:34:7a:07:44:4d:78:6c:bf:7f:c3:b2:99:
- 85:cd:21:94:a8:bf:f9:4e:51:5e:37:bf:19:31:30:
- d4:c7:a3:f4:30:b1:48:c2:c3:b1:1b:ef:cd:0d:1b:
- 7c:6d:3b:0c:18:2b:fe:c7:73:89:d2:15:64:c1:92:
- 2c:23:33:cf:d4:25:71:f4:80:c7:23:4b:6e:68:80:
- f6:11:c8:19:11:ff:97:6d:f0:d0:37:a2:eb:ff:88:
- 93:60:59:aa:ea:b8:d1:b7:16:50:c1:0e:9a:aa:a1:
- 1d:89:6e:88:0a:4b:fd:3d:69:4b:28:52:d4:4f:d0:
- d3:47:a6:ca:7e:96:95:15:ca:8f:e1:39:0c:66:d8:
- 87:8f:67:93:61:56:6c:28:ee:09:1f:64:8c:a3:e1:
- 00:ae:d3:97:4a:5c:dd:ba:b0:70:05:5e:81:25:c6:
- 79:05:56:87:d6:bf:cc:07:94:99:97:c7:b1:4b:5e:
- d4:1c:52:07:dc:55:e5:ad:1c:34:31:41:b0:00:c1:
- 65:22:73:79:35:0f:5d:9c:5b:9f:c9:b4:43:f0:ec:
- 77:c3:8f:93:3d:d3:e2:90:07:5b:e2:51:d4:81:4f:
- 45:85
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- C2:03:2C:7F:26:8E:42:C0:C9:99:2A:10:75:E6:13:94:12:60:48:E1
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha256WithRSAEncryption
- b9:b4:6f:2a:c5:07:99:6c:be:11:32:7c:17:eb:d7:00:54:25:
- 6a:24:65:0a:11:09:ff:d5:25:46:0b:07:f4:8c:f5:63:77:4b:
- 5e:12:50:d4:1a:c1:57:44:d4:2b:de:a3:ce:75:29:1b:76:1a:
- ed:5f:86:af:6c:be:aa:a0:66:e2:01:43:c6:0b:f4:2b:65:bc:
- c5:79:83:71:05:d0:d7:57:2a:7f:32:30:4b:9c:18:81:a6:9e:
- a2:02:b9:71:62:fe:f8:f0:86:59:0f:59:42:e7:87:94:29:39:
- 7f:1d:bd:b1:b5:76:4e:41:47:9e:20:39:3d:60:c1:2b:7f:ec:
- d6:47:e7:45:df:08:16:fa:f9:ff:90:c9:b1:94:e6:e8:60:b4:
- 90:09:e0:a8:0f:96:c6:dc:9e:da:82:2d:d2:19:da:db:14:ec:
- f3:39:20:da:f8:b4:31:45:36:77:c6:07:e9:d6:a1:0c:36:f7:
- c5:66:95:7d:17:10:d2:b4:10:ac:f2:84:f2:81:f9:60:04:cc:
- 9e:08:bd:9c:bd:0b:b5:78:8e:f3:5f:fd:7b:8e:e8:82:08:4f:
- 64:69:c9:0f:a0:06:50:b8:92:a9:f2:ca:17:2d:19:fe:9a:fd:
- c9:2a:c3:93:58:96:c6:9a:4a:a9:17:c9:ff:c0:3b:02:69:30:
- e4:3a:6d:71
------BEGIN CERTIFICATE-----
-MIIDBTCCAe2gAwIBAgIJAMutCI9KtQq7MA0GCSqGSIb3DQEBCwUAMCAxHjAcBgNV
-BAMMFVRlc3QgRHVwLUhhc2ggUm9vdCBDQTAeFw0xNTAzMzEwNDIyNDJaFw0yNTAz
-MjgwNDIyNDJaMCAxHjAcBgNVBAMMFVRlc3QgRHVwLUhhc2ggUm9vdCBDQTCCASIw
-DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL/BOrfIeswMYiiCHVuNyhQJqtKA
-/gcZiP8cQl85XJddNHoHRE14bL9/w7KZhc0hlKi/+U5RXje/GTEw1Mej9DCxSMLD
-sRvvzQ0bfG07DBgr/sdzidIVZMGSLCMzz9QlcfSAxyNLbmiA9hHIGRH/l23w0Dei
-6/+Ik2BZquq40bcWUMEOmqqhHYluiApL/T1pSyhS1E/Q00emyn6WlRXKj+E5DGbY
-h49nk2FWbCjuCR9kjKPhAK7Tl0pc3bqwcAVegSXGeQVWh9a/zAeUmZfHsUte1BxS
-B9xV5a0cNDFBsADBZSJzeTUPXZxbn8m0Q/Dsd8OPkz3T4pAHW+JR1IFPRYUCAwEA
-AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUwgMsfyaOQsDJmSoQdeYT
-lBJgSOEwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQC5tG8qxQeZ
-bL4RMnwX69cAVCVqJGUKEQn/1SVGCwf0jPVjd0teElDUGsFXRNQr3qPOdSkbdhrt
-X4avbL6qoGbiAUPGC/QrZbzFeYNxBdDXVyp/MjBLnBiBpp6iArlxYv748IZZD1lC
-54eUKTl/Hb2xtXZOQUeeIDk9YMErf+zWR+dF3wgW+vn/kMmxlOboYLSQCeCoD5bG
-3J7agi3SGdrbFOzzOSDa+LQxRTZ3xgfp1qEMNvfFZpV9FxDStBCs8oTygflgBMye
-CL2cvQu1eI7zX/17juiCCE9kackPoAZQuJKp8soXLRn+mv3JKsOTWJbGmkqpF8n/
-wDsCaTDkOm1x
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/ct-test-embedded-cert.pem b/src/pki/testdata/ssl/certificates/ct-test-embedded-cert.pem
deleted file mode 100644
index ff4875d..0000000
--- a/src/pki/testdata/ssl/certificates/ct-test-embedded-cert.pem
+++ /dev/null
@@ -1,126 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 7 (0x7)
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=GB, O=Certificate Transparency CA, ST=Wales, L=Erw Wen
- Validity
- Not Before: Jun 1 00:00:00 2012 GMT
- Not After : Jun 1 00:00:00 2022 GMT
- Subject: C=GB, O=Certificate Transparency, ST=Wales, L=Erw Wen
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (1024 bit)
- Modulus:
- 00:be:ef:98:e7:c2:68:77:ae:38:5f:75:32:5a:0c:
- 1d:32:9b:ed:f1:8f:aa:f4:d7:96:bf:04:7e:b7:e1:
- ce:15:c9:5b:a2:f8:0e:e4:58:bd:7d:b8:6f:8a:4b:
- 25:21:91:a7:9b:d7:00:c3:8e:9c:03:89:b4:5c:d4:
- dc:9a:12:0a:b2:1e:0c:b4:1c:d0:e7:28:05:a4:10:
- cd:9c:5b:db:5d:49:27:72:6d:af:17:10:f6:01:87:
- 37:7e:a2:5b:1a:1e:39:ee:d0:b8:81:19:dc:15:4d:
- c6:8f:7d:a8:e3:0c:af:15:8a:33:e6:c9:50:9f:4a:
- 05:b0:14:09:ff:5d:d8:7e:b5
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Subject Key Identifier:
- 20:31:54:1A:F2:5C:05:FF:D8:65:8B:68:43:79:4F:5E:90:36:F7:B4
- X509v3 Authority Key Identifier:
- keyid:5F:9D:88:0D:C8:73:E6:54:D4:F8:0D:D8:E6:B0:C1:24:B4:47:C3:55
- DirName:/C=GB/O=Certificate Transparency CA/ST=Wales/L=Erw Wen
- serial:00
-
- X509v3 Basic Constraints:
- CA:FALSE
- 1.3.6.1.4.1.11129.2.4.2:
- .z.x.v........RG.ah2].\yY..........?t.d...=.'.......G0E. H/gQ.5..T6...d.=..AB...E0(....>..!.....:.r.....jh.S.}.A.}....Q.....
- Signature Algorithm: sha1WithRSAEncryption
- 8a:0c:4b:ef:09:9d:47:92:79:af:a0:a2:8e:68:9f:91:e1:c4:
- 42:1b:e2:d2:69:a2:ea:6c:a4:e8:21:5d:de:dd:ca:15:04:a1:
- 1e:7c:87:c4:b7:7e:80:f0:e9:79:03:52:68:f2:7c:a2:0e:16:
- 68:04:ae:55:6f:31:69:81:f9:6a:39:4a:b7:ab:fd:3e:25:5a:
- c0:04:45:13:fe:76:57:0c:67:95:ab:e4:70:31:33:d3:03:f8:
- 9f:3a:fa:6b:bc:fc:51:73:19:df:d9:5b:93:42:41:21:1f:63:
- 40:35:c3:d0:78:30:7a:68:c6:07:5a:2e:20:c8:9f:36:b8:91:
- 0c:a0
------BEGIN CERTIFICATE-----
-MIIDWTCCAsKgAwIBAgIBBzANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJHQjEk
-MCIGA1UEChMbQ2VydGlmaWNhdGUgVHJhbnNwYXJlbmN5IENBMQ4wDAYDVQQIEwVX
-YWxlczEQMA4GA1UEBxMHRXJ3IFdlbjAeFw0xMjA2MDEwMDAwMDBaFw0yMjA2MDEw
-MDAwMDBaMFIxCzAJBgNVBAYTAkdCMSEwHwYDVQQKExhDZXJ0aWZpY2F0ZSBUcmFu
-c3BhcmVuY3kxDjAMBgNVBAgTBVdhbGVzMRAwDgYDVQQHEwdFcncgV2VuMIGfMA0G
-CSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+75jnwmh3rjhfdTJaDB0ym+3xj6r015a/
-BH634c4VyVui+A7kWL19uG+KSyUhkaeb1wDDjpwDibRc1NyaEgqyHgy0HNDnKAWk
-EM2cW9tdSSdyba8XEPYBhzd+olsaHjnu0LiBGdwVTcaPfajjDK8VijPmyVCfSgWw
-FAn/Xdh+tQIDAQABo4IBOjCCATYwHQYDVR0OBBYEFCAxVBryXAX/2GWLaEN5T16Q
-Nve0MH0GA1UdIwR2MHSAFF+diA3Ic+ZU1PgN2OawwSS0R8NVoVmkVzBVMQswCQYD
-VQQGEwJHQjEkMCIGA1UEChMbQ2VydGlmaWNhdGUgVHJhbnNwYXJlbmN5IENBMQ4w
-DAYDVQQIEwVXYWxlczEQMA4GA1UEBxMHRXJ3IFdlboIBADAJBgNVHRMEAjAAMIGK
-BgorBgEEAdZ5AgQCBHwEegB4AHYA3xwuwRUAlFJHqWFoMl3cXHlZ6PfG04j8AC4L
-vT9012QAAAE92yffkwAABAMARzBFAiBIL2dRrzXbplQ2vh/WZA89v5pBQpSVkkUw
-KI+j5eI+BgIhAOTtwNs6xXKx4vXoq2poBlOYfc9BAn3+/6EFUZ2J7b8IMA0GCSqG
-SIb3DQEBBQUAA4GBAIoMS+8JnUeSea+goo5on5HhxEIb4tJpoupspOghXd7dyhUE
-oR58h8S3foDw6XkDUmjyfKIOFmgErlVvMWmB+Wo5Srer/T4lWsAERRP+dlcMZ5Wr
-5HAxM9MD+J86+mu8/FFzGd/ZW5NCQSEfY0A1w9B4MHpoxgdaLiDInza4kQyg
------END CERTIFICATE-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 0 (0x0)
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=GB, O=Certificate Transparency CA, ST=Wales, L=Erw Wen
- Validity
- Not Before: Jun 1 00:00:00 2012 GMT
- Not After : Jun 1 00:00:00 2022 GMT
- Subject: C=GB, O=Certificate Transparency CA, ST=Wales, L=Erw Wen
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (1024 bit)
- Modulus:
- 00:d5:8a:68:53:62:10:a2:71:19:93:6e:77:83:21:
- 18:1c:2a:40:13:c6:d0:7b:8c:76:eb:91:57:d3:d0:
- fb:4b:3b:51:6e:ce:cb:d1:c9:8d:91:c5:2f:74:3f:
- ab:63:5d:55:09:9c:d1:3a:ba:f3:1a:e5:41:44:24:
- 51:a7:4c:78:16:f2:24:3c:f8:48:cf:28:31:cc:e6:
- 7b:a0:4a:5a:23:81:9f:3c:ba:37:e6:24:d9:c3:bd:
- b2:99:b8:39:dd:fe:26:31:d2:cb:3a:84:fc:7b:b2:
- b5:c5:2f:cf:c1:4f:ff:40:6f:5c:d4:46:69:cb:b2:
- f7:cf:df:86:fb:6a:b9:d1:b1
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Subject Key Identifier:
- 5F:9D:88:0D:C8:73:E6:54:D4:F8:0D:D8:E6:B0:C1:24:B4:47:C3:55
- X509v3 Authority Key Identifier:
- keyid:5F:9D:88:0D:C8:73:E6:54:D4:F8:0D:D8:E6:B0:C1:24:B4:47:C3:55
- DirName:/C=GB/O=Certificate Transparency CA/ST=Wales/L=Erw Wen
- serial:00
-
- X509v3 Basic Constraints:
- CA:TRUE
- Signature Algorithm: sha1WithRSAEncryption
- 06:08:cc:4a:6d:64:f2:20:5e:14:6c:04:b2:76:f9:2b:0e:fa:
- 94:a5:da:f2:3a:fc:38:06:60:6d:39:90:d0:a1:ea:23:3d:40:
- 29:57:69:46:3b:04:66:61:e7:fa:1d:17:99:15:20:9a:ea:2e:
- 0a:77:51:76:41:12:27:d7:c0:03:07:c7:47:0e:61:58:4f:d7:
- 33:42:24:72:7f:51:d6:90:bc:47:a9:df:35:4d:b0:f6:eb:25:
- 95:5d:e1:89:3c:4d:d5:20:2b:24:a2:f3:e4:40:d2:74:b5:4e:
- 1b:d3:76:26:9c:a9:62:89:b7:6e:ca:a4:10:90:e1:4f:3b:0a:
- 94:2e
------BEGIN CERTIFICATE-----
-MIIC0DCCAjmgAwIBAgIBADANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJHQjEk
-MCIGA1UEChMbQ2VydGlmaWNhdGUgVHJhbnNwYXJlbmN5IENBMQ4wDAYDVQQIEwVX
-YWxlczEQMA4GA1UEBxMHRXJ3IFdlbjAeFw0xMjA2MDEwMDAwMDBaFw0yMjA2MDEw
-MDAwMDBaMFUxCzAJBgNVBAYTAkdCMSQwIgYDVQQKExtDZXJ0aWZpY2F0ZSBUcmFu
-c3BhcmVuY3kgQ0ExDjAMBgNVBAgTBVdhbGVzMRAwDgYDVQQHEwdFcncgV2VuMIGf
-MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDVimhTYhCicRmTbneDIRgcKkATxtB7
-jHbrkVfT0PtLO1FuzsvRyY2RxS90P6tjXVUJnNE6uvMa5UFEJFGnTHgW8iQ8+EjP
-KDHM5nugSlojgZ88ujfmJNnDvbKZuDnd/iYx0ss6hPx7srXFL8/BT/9Ab1zURmnL
-svfP34b7arnRsQIDAQABo4GvMIGsMB0GA1UdDgQWBBRfnYgNyHPmVNT4DdjmsMEk
-tEfDVTB9BgNVHSMEdjB0gBRfnYgNyHPmVNT4DdjmsMEktEfDVaFZpFcwVTELMAkG
-A1UEBhMCR0IxJDAiBgNVBAoTG0NlcnRpZmljYXRlIFRyYW5zcGFyZW5jeSBDQTEO
-MAwGA1UECBMFV2FsZXMxEDAOBgNVBAcTB0VydyBXZW6CAQAwDAYDVR0TBAUwAwEB
-/zANBgkqhkiG9w0BAQUFAAOBgQAGCMxKbWTyIF4UbASydvkrDvqUpdryOvw4BmBt
-OZDQoeojPUApV2lGOwRmYef6HReZFSCa6i4Kd1F2QRIn18ADB8dHDmFYT9czQiRy
-f1HWkLxHqd81TbD26yWVXeGJPE3VICskovPkQNJ0tU4b03YmnKliibduyqQQkOFP
-OwqULg==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/ct-test-embedded-with-intermediate-chain.pem b/src/pki/testdata/ssl/certificates/ct-test-embedded-with-intermediate-chain.pem
deleted file mode 100644
index 2224461..0000000
--- a/src/pki/testdata/ssl/certificates/ct-test-embedded-with-intermediate-chain.pem
+++ /dev/null
@@ -1,188 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 2 (0x2)
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=GB, O=Certificate Transparency Intermediate CA, ST=Wales, L=Erw Wen
- Validity
- Not Before: Jun 1 00:00:00 2012 GMT
- Not After : Jun 1 00:00:00 2022 GMT
- Subject: C=GB, O=Certificate Transparency, ST=Wales, L=Erw Wen
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (1024 bit)
- Modulus:
- 00:bb:27:2b:26:e5:de:b5:45:9d:4a:cc:a0:27:e8:
- f1:2a:4d:83:9a:c3:73:0a:6a:10:9f:f7:e2:54:98:
- dd:bd:3f:18:95:d0:8b:a4:1f:8d:e3:49:67:a3:a0:
- 86:ce:13:a9:0d:d5:ad:bb:54:18:4b:dc:08:e1:ac:
- 78:26:ad:b8:dc:9c:71:7b:fd:7d:a5:b4:1b:4d:b1:
- 73:6e:00:f1:da:c3:ce:c9:81:9c:cb:1a:28:ba:12:
- 0b:02:0a:82:0e:94:0d:d6:1f:95:b5:43:2a:4b:c0:
- 5d:08:18:f1:8c:e2:15:4e:b3:8d:2f:a7:d2:2d:72:
- b9:76:e5:60:db:0c:7f:c7:7f
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Subject Key Identifier:
- B1:B1:48:E6:58:E7:03:F5:F7:F3:10:5F:20:B3:C3:84:D7:EF:F1:BF
- X509v3 Authority Key Identifier:
- keyid:96:55:08:05:02:78:47:9E:87:73:76:41:31:BC:14:3A:47:E2:29:AB
- DirName:/C=GB/O=Certificate Transparency CA/ST=Wales/L=Erw Wen
- serial:09
-
- X509v3 Basic Constraints:
- CA:FALSE
- 1.3.6.1.4.1.11129.2.4.2:
- .z.x.v........RG.ah2].\yY..........?t.d...=.'.......G0E.!...E..9-...W.....E.L..8V.......u.. ^&...."...)....4...O.......f...?
- Signature Algorithm: sha1WithRSAEncryption
- 0f:95:a5:b4:e1:28:a9:14:b1:e8:8b:e8:b3:29:64:22:1b:58:
- f4:55:84:33:d0:20:a8:e2:46:cc:a6:5a:40:bc:bf:5f:2d:48:
- 93:3e:bc:99:be:69:27:ca:75:64:72:fb:0b:dc:7f:50:5f:41:
- f4:62:f2:bc:19:d0:b2:99:c9:90:91:8d:f8:82:0f:3d:31:db:
- 37:97:9e:8b:ad:56:3b:17:f0:0a:e6:7b:0f:87:31:c1:06:c9:
- 43:a7:3b:f5:36:af:16:8a:fe:21:ef:4a:df:ca:e1:9a:3c:c0:
- 74:89:99:92:bf:50:6b:c5:ce:1d:ec:aa:f0:7f:fe:eb:c8:05:
- c0:39
------BEGIN CERTIFICATE-----
-MIIDZjCCAs+gAwIBAgIBAjANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQGEwJHQjEx
-MC8GA1UEChMoQ2VydGlmaWNhdGUgVHJhbnNwYXJlbmN5IEludGVybWVkaWF0ZSBD
-QTEOMAwGA1UECBMFV2FsZXMxEDAOBgNVBAcTB0VydyBXZW4wHhcNMTIwNjAxMDAw
-MDAwWhcNMjIwNjAxMDAwMDAwWjBSMQswCQYDVQQGEwJHQjEhMB8GA1UEChMYQ2Vy
-dGlmaWNhdGUgVHJhbnNwYXJlbmN5MQ4wDAYDVQQIEwVXYWxlczEQMA4GA1UEBxMH
-RXJ3IFdlbjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuycrJuXetUWdSsyg
-J+jxKk2DmsNzCmoQn/fiVJjdvT8YldCLpB+N40lno6CGzhOpDdWtu1QYS9wI4ax4
-Jq243Jxxe/19pbQbTbFzbgDx2sPOyYGcyxoouhILAgqCDpQN1h+VtUMqS8BdCBjx
-jOIVTrONL6fSLXK5duVg2wx/x38CAwEAAaOCATowggE2MB0GA1UdDgQWBBSxsUjm
-WOcD9ffzEF8gs8OE1+/xvzB9BgNVHSMEdjB0gBSWVQgFAnhHnodzdkExvBQ6R+Ip
-q6FZpFcwVTELMAkGA1UEBhMCR0IxJDAiBgNVBAoTG0NlcnRpZmljYXRlIFRyYW5z
-cGFyZW5jeSBDQTEOMAwGA1UECBMFV2FsZXMxEDAOBgNVBAcTB0VydyBXZW6CAQkw
-CQYDVR0TBAIwADCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN8cLsEVAJRSR6lhaDJd
-3Fx5Wej3xtOI/AAuC70/dNdkAAABPdsn4qQAAAQDAEcwRQIhAKbTRRfzOS2exdJX
-rfHFl9xFvUzTtzhWxhap+5nlrnWoAiBeJsjRx+Ii/ozaKbrrBKg07pfTT9gXGPGq
-4M1m9LipPzANBgkqhkiG9w0BAQUFAAOBgQAPlaW04SipFLHoi+izKWQiG1j0VYQz
-0CCo4kbMplpAvL9fLUiTPryZvmknynVkcvsL3H9QX0H0YvK8GdCymcmQkY34gg89
-Mds3l56LrVY7F/AK5nsPhzHBBslDpzv1Nq8Wiv4h70rfyuGaPMB0iZmSv1Brxc4d
-7Krwf/7ryAXAOQ==
------END CERTIFICATE-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 9 (0x9)
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=GB, O=Certificate Transparency CA, ST=Wales, L=Erw Wen
- Validity
- Not Before: Jun 1 00:00:00 2012 GMT
- Not After : Jun 1 00:00:00 2022 GMT
- Subject: C=GB, O=Certificate Transparency Intermediate CA, ST=Wales, L=Erw Wen
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (1024 bit)
- Modulus:
- 00:d7:6a:67:8d:11:6f:52:2e:55:ff:82:1c:90:64:
- 25:08:b7:07:4b:14:d7:71:15:90:64:f7:92:7e:fd:
- ed:b8:71:35:a1:36:5e:e7:de:18:cb:d5:ce:86:5f:
- 86:0c:78:f4:33:b4:d0:d3:d3:40:77:02:e7:a3:ef:
- 54:2b:1d:fe:9b:ba:a7:cd:f9:4d:c5:97:5f:c7:29:
- f8:6f:10:5f:38:1b:24:35:35:cf:9c:80:0f:5c:a7:
- 80:c1:d3:c8:44:00:ee:65:d1:6e:e9:cf:52:db:8a:
- df:fe:50:f5:c4:93:35:0b:21:90:bf:50:d5:bc:36:
- f3:ca:c5:a8:da:ae:92:cd:8b
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Subject Key Identifier:
- 96:55:08:05:02:78:47:9E:87:73:76:41:31:BC:14:3A:47:E2:29:AB
- X509v3 Authority Key Identifier:
- keyid:5F:9D:88:0D:C8:73:E6:54:D4:F8:0D:D8:E6:B0:C1:24:B4:47:C3:55
- DirName:/C=GB/O=Certificate Transparency CA/ST=Wales/L=Erw Wen
- serial:00
-
- X509v3 Basic Constraints:
- CA:TRUE
- Signature Algorithm: sha1WithRSAEncryption
- 22:06:da:b1:c6:6b:71:dc:e0:95:c3:f6:aa:2e:f7:2c:f7:76:
- 1b:e7:ab:d7:fc:39:c3:1a:4c:fe:1b:d9:6d:67:34:ca:82:f2:
- 2d:de:5a:0c:8b:bb:dd:82:5d:7b:6f:3e:76:12:ad:8d:b3:00:
- a7:e2:11:69:88:60:23:26:22:84:c3:aa:5d:21:91:ef:da:10:
- bf:92:35:d3:7b:3a:2a:34:0d:59:41:9b:94:a4:85:66:f3:fa:
- c3:cd:8b:53:d5:a4:e9:82:70:ea:d2:97:b0:72:10:f9:ce:4a:
- 21:38:b1:88:11:14:3b:93:fa:4e:7a:87:dd:37:e1:38:5f:2c:
- 29:08
------BEGIN CERTIFICATE-----
-MIIC3TCCAkagAwIBAgIBCTANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJHQjEk
-MCIGA1UEChMbQ2VydGlmaWNhdGUgVHJhbnNwYXJlbmN5IENBMQ4wDAYDVQQIEwVX
-YWxlczEQMA4GA1UEBxMHRXJ3IFdlbjAeFw0xMjA2MDEwMDAwMDBaFw0yMjA2MDEw
-MDAwMDBaMGIxCzAJBgNVBAYTAkdCMTEwLwYDVQQKEyhDZXJ0aWZpY2F0ZSBUcmFu
-c3BhcmVuY3kgSW50ZXJtZWRpYXRlIENBMQ4wDAYDVQQIEwVXYWxlczEQMA4GA1UE
-BxMHRXJ3IFdlbjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA12pnjRFvUi5V
-/4IckGQlCLcHSxTXcRWQZPeSfv3tuHE1oTZe594Yy9XOhl+GDHj0M7TQ09NAdwLn
-o+9UKx3+m7qnzflNxZdfxyn4bxBfOBskNTXPnIAPXKeAwdPIRADuZdFu6c9S24rf
-/lD1xJM1CyGQv1DVvDbzysWo2q6SzYsCAwEAAaOBrzCBrDAdBgNVHQ4EFgQUllUI
-BQJ4R56Hc3ZBMbwUOkfiKaswfQYDVR0jBHYwdIAUX52IDchz5lTU+A3Y5rDBJLRH
-w1WhWaRXMFUxCzAJBgNVBAYTAkdCMSQwIgYDVQQKExtDZXJ0aWZpY2F0ZSBUcmFu
-c3BhcmVuY3kgQ0ExDjAMBgNVBAgTBVdhbGVzMRAwDgYDVQQHEwdFcncgV2VuggEA
-MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAIgbascZrcdzglcP2qi73
-LPd2G+er1/w5wxpM/hvZbWc0yoLyLd5aDIu73YJde28+dhKtjbMAp+IRaYhgIyYi
-hMOqXSGR79oQv5I103s6KjQNWUGblKSFZvP6w82LU9Wk6YJw6tKXsHIQ+c5KITix
-iBEUO5P6TnqH3TfhOF8sKQg=
------END CERTIFICATE-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 0 (0x0)
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=GB, O=Certificate Transparency CA, ST=Wales, L=Erw Wen
- Validity
- Not Before: Jun 1 00:00:00 2012 GMT
- Not After : Jun 1 00:00:00 2022 GMT
- Subject: C=GB, O=Certificate Transparency CA, ST=Wales, L=Erw Wen
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (1024 bit)
- Modulus:
- 00:d5:8a:68:53:62:10:a2:71:19:93:6e:77:83:21:
- 18:1c:2a:40:13:c6:d0:7b:8c:76:eb:91:57:d3:d0:
- fb:4b:3b:51:6e:ce:cb:d1:c9:8d:91:c5:2f:74:3f:
- ab:63:5d:55:09:9c:d1:3a:ba:f3:1a:e5:41:44:24:
- 51:a7:4c:78:16:f2:24:3c:f8:48:cf:28:31:cc:e6:
- 7b:a0:4a:5a:23:81:9f:3c:ba:37:e6:24:d9:c3:bd:
- b2:99:b8:39:dd:fe:26:31:d2:cb:3a:84:fc:7b:b2:
- b5:c5:2f:cf:c1:4f:ff:40:6f:5c:d4:46:69:cb:b2:
- f7:cf:df:86:fb:6a:b9:d1:b1
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Subject Key Identifier:
- 5F:9D:88:0D:C8:73:E6:54:D4:F8:0D:D8:E6:B0:C1:24:B4:47:C3:55
- X509v3 Authority Key Identifier:
- keyid:5F:9D:88:0D:C8:73:E6:54:D4:F8:0D:D8:E6:B0:C1:24:B4:47:C3:55
- DirName:/C=GB/O=Certificate Transparency CA/ST=Wales/L=Erw Wen
- serial:00
-
- X509v3 Basic Constraints:
- CA:TRUE
- Signature Algorithm: sha1WithRSAEncryption
- 06:08:cc:4a:6d:64:f2:20:5e:14:6c:04:b2:76:f9:2b:0e:fa:
- 94:a5:da:f2:3a:fc:38:06:60:6d:39:90:d0:a1:ea:23:3d:40:
- 29:57:69:46:3b:04:66:61:e7:fa:1d:17:99:15:20:9a:ea:2e:
- 0a:77:51:76:41:12:27:d7:c0:03:07:c7:47:0e:61:58:4f:d7:
- 33:42:24:72:7f:51:d6:90:bc:47:a9:df:35:4d:b0:f6:eb:25:
- 95:5d:e1:89:3c:4d:d5:20:2b:24:a2:f3:e4:40:d2:74:b5:4e:
- 1b:d3:76:26:9c:a9:62:89:b7:6e:ca:a4:10:90:e1:4f:3b:0a:
- 94:2e
------BEGIN CERTIFICATE-----
-MIIC0DCCAjmgAwIBAgIBADANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJHQjEk
-MCIGA1UEChMbQ2VydGlmaWNhdGUgVHJhbnNwYXJlbmN5IENBMQ4wDAYDVQQIEwVX
-YWxlczEQMA4GA1UEBxMHRXJ3IFdlbjAeFw0xMjA2MDEwMDAwMDBaFw0yMjA2MDEw
-MDAwMDBaMFUxCzAJBgNVBAYTAkdCMSQwIgYDVQQKExtDZXJ0aWZpY2F0ZSBUcmFu
-c3BhcmVuY3kgQ0ExDjAMBgNVBAgTBVdhbGVzMRAwDgYDVQQHEwdFcncgV2VuMIGf
-MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDVimhTYhCicRmTbneDIRgcKkATxtB7
-jHbrkVfT0PtLO1FuzsvRyY2RxS90P6tjXVUJnNE6uvMa5UFEJFGnTHgW8iQ8+EjP
-KDHM5nugSlojgZ88ujfmJNnDvbKZuDnd/iYx0ss6hPx7srXFL8/BT/9Ab1zURmnL
-svfP34b7arnRsQIDAQABo4GvMIGsMB0GA1UdDgQWBBRfnYgNyHPmVNT4DdjmsMEk
-tEfDVTB9BgNVHSMEdjB0gBRfnYgNyHPmVNT4DdjmsMEktEfDVaFZpFcwVTELMAkG
-A1UEBhMCR0IxJDAiBgNVBAoTG0NlcnRpZmljYXRlIFRyYW5zcGFyZW5jeSBDQTEO
-MAwGA1UECBMFV2FsZXMxEDAOBgNVBAcTB0VydyBXZW6CAQAwDAYDVR0TBAUwAwEB
-/zANBgkqhkiG9w0BAQUFAAOBgQAGCMxKbWTyIF4UbASydvkrDvqUpdryOvw4BmBt
-OZDQoeojPUApV2lGOwRmYef6HReZFSCa6i4Kd1F2QRIn18ADB8dHDmFYT9czQiRy
-f1HWkLxHqd81TbD26yWVXeGJPE3VICskovPkQNJ0tU4b03YmnKliibduyqQQkOFP
-OwqULg==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/ct-test-embedded-with-intermediate-preca-chain.pem b/src/pki/testdata/ssl/certificates/ct-test-embedded-with-intermediate-preca-chain.pem
deleted file mode 100644
index 597cebc..0000000
--- a/src/pki/testdata/ssl/certificates/ct-test-embedded-with-intermediate-preca-chain.pem
+++ /dev/null
@@ -1,188 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 3 (0x3)
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=GB, O=Certificate Transparency Intermediate CA, ST=Wales, L=Erw Wen
- Validity
- Not Before: Jun 1 00:00:00 2012 GMT
- Not After : Jun 1 00:00:00 2022 GMT
- Subject: C=GB, O=Certificate Transparency, ST=Wales, L=Erw Wen
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (1024 bit)
- Modulus:
- 00:d4:49:70:56:cd:fc:65:e1:34:2c:c3:df:6e:65:
- 4b:8a:f0:10:47:02:ac:d2:27:5c:7d:3f:b1:fc:43:
- 8a:89:b2:12:11:0d:64:19:bc:c1:3a:e4:7d:64:bb:
- a2:41:e6:70:6b:9e:d6:27:f8:b3:4a:0d:7d:ff:1c:
- 44:b9:62:87:c5:4b:ea:9d:10:dc:01:7b:ce:b6:4f:
- 7b:6a:ff:3c:35:a4:74:af:ec:40:38:ab:36:40:b0:
- cd:1f:b0:58:2e:c0:3b:17:9a:27:76:c8:c4:35:d1:
- 4a:b4:88:2d:59:d7:b7:24:fa:37:7c:a6:db:08:39:
- 21:73:f9:c6:05:6b:3a:ba:df
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Subject Key Identifier:
- 32:DA:55:18:D8:7F:1D:26:EA:27:67:97:3C:0B:EF:28:6E:78:6A:4A
- X509v3 Authority Key Identifier:
- keyid:96:55:08:05:02:78:47:9E:87:73:76:41:31:BC:14:3A:47:E2:29:AB
- DirName:/C=GB/O=Certificate Transparency CA/ST=Wales/L=Erw Wen
- serial:09
-
- X509v3 Basic Constraints:
- CA:FALSE
- 1.3.6.1.4.1.11129.2.4.2:
- .z.x.v........RG.ah2].\yY..........?t.d...=.'.......G0E.!.......!...<..p.3..7K ...e.^..C.0. .v.GQ8..v.810M..C....n..O..|....
- Signature Algorithm: sha1WithRSAEncryption
- 88:ee:4e:9e:5e:ed:6b:11:2c:c7:64:b1:51:ed:92:94:00:e9:
- 40:67:89:c1:5f:bb:cf:cd:ab:2f:10:b4:00:23:41:39:e6:ce:
- 65:c1:e5:1b:47:bf:7c:89:50:f8:0b:cc:d5:71:68:56:79:54:
- ed:35:b0:ce:93:46:06:5a:5e:ae:5b:f9:5d:41:da:8e:27:ce:
- e9:ee:ac:68:8f:4b:d3:43:f9:c2:88:83:27:ab:d8:b9:f6:8d:
- cb:1e:30:50:04:1d:31:bd:a8:e2:dd:6d:39:b3:66:4d:e5:ce:
- 08:70:f5:fc:7e:6a:00:d6:ed:00:52:84:58:d9:53:d2:37:58:
- 6d:73
------BEGIN CERTIFICATE-----
-MIIDZjCCAs+gAwIBAgIBAzANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQGEwJHQjEx
-MC8GA1UEChMoQ2VydGlmaWNhdGUgVHJhbnNwYXJlbmN5IEludGVybWVkaWF0ZSBD
-QTEOMAwGA1UECBMFV2FsZXMxEDAOBgNVBAcTB0VydyBXZW4wHhcNMTIwNjAxMDAw
-MDAwWhcNMjIwNjAxMDAwMDAwWjBSMQswCQYDVQQGEwJHQjEhMB8GA1UEChMYQ2Vy
-dGlmaWNhdGUgVHJhbnNwYXJlbmN5MQ4wDAYDVQQIEwVXYWxlczEQMA4GA1UEBxMH
-RXJ3IFdlbjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1ElwVs38ZeE0LMPf
-bmVLivAQRwKs0idcfT+x/EOKibISEQ1kGbzBOuR9ZLuiQeZwa57WJ/izSg19/xxE
-uWKHxUvqnRDcAXvOtk97av88NaR0r+xAOKs2QLDNH7BYLsA7F5ondsjENdFKtIgt
-Wde3JPo3fKbbCDkhc/nGBWs6ut8CAwEAAaOCATowggE2MB0GA1UdDgQWBBQy2lUY
-2H8dJuonZ5c8C+8obnhqSjB9BgNVHSMEdjB0gBSWVQgFAnhHnodzdkExvBQ6R+Ip
-q6FZpFcwVTELMAkGA1UEBhMCR0IxJDAiBgNVBAoTG0NlcnRpZmljYXRlIFRyYW5z
-cGFyZW5jeSBDQTEOMAwGA1UECBMFV2FsZXMxEDAOBgNVBAcTB0VydyBXZW6CAQkw
-CQYDVR0TBAIwADCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN8cLsEVAJRSR6lhaDJd
-3Fx5Wej3xtOI/AAuC70/dNdkAAABPdsn474AAAQDAEcwRQIhANn2Ggf+4CHjFZ88
-ovVw2DP/ATdLIJbLpWWMXhb7Q+swAiALdv5HUTjYz3aDODEwTavwQ+sSE8luE/9P
-o39808jcHzANBgkqhkiG9w0BAQUFAAOBgQCI7k6eXu1rESzHZLFR7ZKUAOlAZ4nB
-X7vPzasvELQAI0E55s5lweUbR798iVD4C8zVcWhWeVTtNbDOk0YGWl6uW/ldQdqO
-J87p7qxoj0vTQ/nCiIMnq9i59o3LHjBQBB0xvaji3W05s2ZN5c4IcPX8fmoA1u0A
-UoRY2VPSN1htcw==
------END CERTIFICATE-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 9 (0x9)
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=GB, O=Certificate Transparency CA, ST=Wales, L=Erw Wen
- Validity
- Not Before: Jun 1 00:00:00 2012 GMT
- Not After : Jun 1 00:00:00 2022 GMT
- Subject: C=GB, O=Certificate Transparency Intermediate CA, ST=Wales, L=Erw Wen
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (1024 bit)
- Modulus:
- 00:d7:6a:67:8d:11:6f:52:2e:55:ff:82:1c:90:64:
- 25:08:b7:07:4b:14:d7:71:15:90:64:f7:92:7e:fd:
- ed:b8:71:35:a1:36:5e:e7:de:18:cb:d5:ce:86:5f:
- 86:0c:78:f4:33:b4:d0:d3:d3:40:77:02:e7:a3:ef:
- 54:2b:1d:fe:9b:ba:a7:cd:f9:4d:c5:97:5f:c7:29:
- f8:6f:10:5f:38:1b:24:35:35:cf:9c:80:0f:5c:a7:
- 80:c1:d3:c8:44:00:ee:65:d1:6e:e9:cf:52:db:8a:
- df:fe:50:f5:c4:93:35:0b:21:90:bf:50:d5:bc:36:
- f3:ca:c5:a8:da:ae:92:cd:8b
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Subject Key Identifier:
- 96:55:08:05:02:78:47:9E:87:73:76:41:31:BC:14:3A:47:E2:29:AB
- X509v3 Authority Key Identifier:
- keyid:5F:9D:88:0D:C8:73:E6:54:D4:F8:0D:D8:E6:B0:C1:24:B4:47:C3:55
- DirName:/C=GB/O=Certificate Transparency CA/ST=Wales/L=Erw Wen
- serial:00
-
- X509v3 Basic Constraints:
- CA:TRUE
- Signature Algorithm: sha1WithRSAEncryption
- 22:06:da:b1:c6:6b:71:dc:e0:95:c3:f6:aa:2e:f7:2c:f7:76:
- 1b:e7:ab:d7:fc:39:c3:1a:4c:fe:1b:d9:6d:67:34:ca:82:f2:
- 2d:de:5a:0c:8b:bb:dd:82:5d:7b:6f:3e:76:12:ad:8d:b3:00:
- a7:e2:11:69:88:60:23:26:22:84:c3:aa:5d:21:91:ef:da:10:
- bf:92:35:d3:7b:3a:2a:34:0d:59:41:9b:94:a4:85:66:f3:fa:
- c3:cd:8b:53:d5:a4:e9:82:70:ea:d2:97:b0:72:10:f9:ce:4a:
- 21:38:b1:88:11:14:3b:93:fa:4e:7a:87:dd:37:e1:38:5f:2c:
- 29:08
------BEGIN CERTIFICATE-----
-MIIC3TCCAkagAwIBAgIBCTANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJHQjEk
-MCIGA1UEChMbQ2VydGlmaWNhdGUgVHJhbnNwYXJlbmN5IENBMQ4wDAYDVQQIEwVX
-YWxlczEQMA4GA1UEBxMHRXJ3IFdlbjAeFw0xMjA2MDEwMDAwMDBaFw0yMjA2MDEw
-MDAwMDBaMGIxCzAJBgNVBAYTAkdCMTEwLwYDVQQKEyhDZXJ0aWZpY2F0ZSBUcmFu
-c3BhcmVuY3kgSW50ZXJtZWRpYXRlIENBMQ4wDAYDVQQIEwVXYWxlczEQMA4GA1UE
-BxMHRXJ3IFdlbjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA12pnjRFvUi5V
-/4IckGQlCLcHSxTXcRWQZPeSfv3tuHE1oTZe594Yy9XOhl+GDHj0M7TQ09NAdwLn
-o+9UKx3+m7qnzflNxZdfxyn4bxBfOBskNTXPnIAPXKeAwdPIRADuZdFu6c9S24rf
-/lD1xJM1CyGQv1DVvDbzysWo2q6SzYsCAwEAAaOBrzCBrDAdBgNVHQ4EFgQUllUI
-BQJ4R56Hc3ZBMbwUOkfiKaswfQYDVR0jBHYwdIAUX52IDchz5lTU+A3Y5rDBJLRH
-w1WhWaRXMFUxCzAJBgNVBAYTAkdCMSQwIgYDVQQKExtDZXJ0aWZpY2F0ZSBUcmFu
-c3BhcmVuY3kgQ0ExDjAMBgNVBAgTBVdhbGVzMRAwDgYDVQQHEwdFcncgV2VuggEA
-MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAIgbascZrcdzglcP2qi73
-LPd2G+er1/w5wxpM/hvZbWc0yoLyLd5aDIu73YJde28+dhKtjbMAp+IRaYhgIyYi
-hMOqXSGR79oQv5I103s6KjQNWUGblKSFZvP6w82LU9Wk6YJw6tKXsHIQ+c5KITix
-iBEUO5P6TnqH3TfhOF8sKQg=
------END CERTIFICATE-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 0 (0x0)
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=GB, O=Certificate Transparency CA, ST=Wales, L=Erw Wen
- Validity
- Not Before: Jun 1 00:00:00 2012 GMT
- Not After : Jun 1 00:00:00 2022 GMT
- Subject: C=GB, O=Certificate Transparency CA, ST=Wales, L=Erw Wen
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (1024 bit)
- Modulus:
- 00:d5:8a:68:53:62:10:a2:71:19:93:6e:77:83:21:
- 18:1c:2a:40:13:c6:d0:7b:8c:76:eb:91:57:d3:d0:
- fb:4b:3b:51:6e:ce:cb:d1:c9:8d:91:c5:2f:74:3f:
- ab:63:5d:55:09:9c:d1:3a:ba:f3:1a:e5:41:44:24:
- 51:a7:4c:78:16:f2:24:3c:f8:48:cf:28:31:cc:e6:
- 7b:a0:4a:5a:23:81:9f:3c:ba:37:e6:24:d9:c3:bd:
- b2:99:b8:39:dd:fe:26:31:d2:cb:3a:84:fc:7b:b2:
- b5:c5:2f:cf:c1:4f:ff:40:6f:5c:d4:46:69:cb:b2:
- f7:cf:df:86:fb:6a:b9:d1:b1
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Subject Key Identifier:
- 5F:9D:88:0D:C8:73:E6:54:D4:F8:0D:D8:E6:B0:C1:24:B4:47:C3:55
- X509v3 Authority Key Identifier:
- keyid:5F:9D:88:0D:C8:73:E6:54:D4:F8:0D:D8:E6:B0:C1:24:B4:47:C3:55
- DirName:/C=GB/O=Certificate Transparency CA/ST=Wales/L=Erw Wen
- serial:00
-
- X509v3 Basic Constraints:
- CA:TRUE
- Signature Algorithm: sha1WithRSAEncryption
- 06:08:cc:4a:6d:64:f2:20:5e:14:6c:04:b2:76:f9:2b:0e:fa:
- 94:a5:da:f2:3a:fc:38:06:60:6d:39:90:d0:a1:ea:23:3d:40:
- 29:57:69:46:3b:04:66:61:e7:fa:1d:17:99:15:20:9a:ea:2e:
- 0a:77:51:76:41:12:27:d7:c0:03:07:c7:47:0e:61:58:4f:d7:
- 33:42:24:72:7f:51:d6:90:bc:47:a9:df:35:4d:b0:f6:eb:25:
- 95:5d:e1:89:3c:4d:d5:20:2b:24:a2:f3:e4:40:d2:74:b5:4e:
- 1b:d3:76:26:9c:a9:62:89:b7:6e:ca:a4:10:90:e1:4f:3b:0a:
- 94:2e
------BEGIN CERTIFICATE-----
-MIIC0DCCAjmgAwIBAgIBADANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJHQjEk
-MCIGA1UEChMbQ2VydGlmaWNhdGUgVHJhbnNwYXJlbmN5IENBMQ4wDAYDVQQIEwVX
-YWxlczEQMA4GA1UEBxMHRXJ3IFdlbjAeFw0xMjA2MDEwMDAwMDBaFw0yMjA2MDEw
-MDAwMDBaMFUxCzAJBgNVBAYTAkdCMSQwIgYDVQQKExtDZXJ0aWZpY2F0ZSBUcmFu
-c3BhcmVuY3kgQ0ExDjAMBgNVBAgTBVdhbGVzMRAwDgYDVQQHEwdFcncgV2VuMIGf
-MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDVimhTYhCicRmTbneDIRgcKkATxtB7
-jHbrkVfT0PtLO1FuzsvRyY2RxS90P6tjXVUJnNE6uvMa5UFEJFGnTHgW8iQ8+EjP
-KDHM5nugSlojgZ88ujfmJNnDvbKZuDnd/iYx0ss6hPx7srXFL8/BT/9Ab1zURmnL
-svfP34b7arnRsQIDAQABo4GvMIGsMB0GA1UdDgQWBBRfnYgNyHPmVNT4DdjmsMEk
-tEfDVTB9BgNVHSMEdjB0gBRfnYgNyHPmVNT4DdjmsMEktEfDVaFZpFcwVTELMAkG
-A1UEBhMCR0IxJDAiBgNVBAoTG0NlcnRpZmljYXRlIFRyYW5zcGFyZW5jeSBDQTEO
-MAwGA1UECBMFV2FsZXMxEDAOBgNVBAcTB0VydyBXZW6CAQAwDAYDVR0TBAUwAwEB
-/zANBgkqhkiG9w0BAQUFAAOBgQAGCMxKbWTyIF4UbASydvkrDvqUpdryOvw4BmBt
-OZDQoeojPUApV2lGOwRmYef6HReZFSCa6i4Kd1F2QRIn18ADB8dHDmFYT9czQiRy
-f1HWkLxHqd81TbD26yWVXeGJPE3VICskovPkQNJ0tU4b03YmnKliibduyqQQkOFP
-OwqULg==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/ct-test-embedded-with-preca-chain.pem b/src/pki/testdata/ssl/certificates/ct-test-embedded-with-preca-chain.pem
deleted file mode 100644
index 7c9a8cf..0000000
--- a/src/pki/testdata/ssl/certificates/ct-test-embedded-with-preca-chain.pem
+++ /dev/null
@@ -1,126 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 8 (0x8)
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=GB, O=Certificate Transparency CA, ST=Wales, L=Erw Wen
- Validity
- Not Before: Jun 1 00:00:00 2012 GMT
- Not After : Jun 1 00:00:00 2022 GMT
- Subject: C=GB, O=Certificate Transparency, ST=Wales, L=Erw Wen
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (1024 bit)
- Modulus:
- 00:af:ae:ea:ca:c5:1a:b7:ce:bd:f9:ea:ca:e7:dd:
- 17:52:95:e1:93:95:5a:17:98:9a:ef:8d:97:ab:7c:
- df:f7:76:10:93:c0:b8:23:d2:a4:e3:a5:1a:17:b8:
- 6f:28:16:2b:66:a2:53:89:35:eb:ec:dc:10:36:23:
- 3d:a2:dd:65:31:b0:c6:3b:cc:68:76:1e:bd:c8:54:
- 03:7b:77:39:92:46:b8:70:a7:b7:2b:14:c9:b1:66:
- 7d:e0:9a:96:40:ed:9f:3f:3c:72:5d:95:0b:4d:26:
- 55:98:69:fe:7f:1e:91:9a:66:eb:76:d3:5c:01:17:
- c6:bc:d0:d8:cf:d2:10:28:b1
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Subject Key Identifier:
- 61:2C:64:EF:AC:79:B7:28:39:7C:9D:93:E6:DF:86:46:5F:A7:6A:88
- X509v3 Authority Key Identifier:
- keyid:5F:9D:88:0D:C8:73:E6:54:D4:F8:0D:D8:E6:B0:C1:24:B4:47:C3:55
- DirName:/C=GB/O=Certificate Transparency CA/ST=Wales/L=Erw Wen
- serial:00
-
- X509v3 Basic Constraints:
- CA:FALSE
- 1.3.6.1.4.1.11129.2.4.2:
- .z.x.v........RG.ah2].\yY..........?t.d...=.'.[.....G0E. z....t..r{.O....y......C.*)|.:5\.!...... dL..Ri..c..5l.P"O.......#.
- Signature Algorithm: sha1WithRSAEncryption
- a3:a8:6c:41:ad:00:88:a2:5a:ed:c4:e7:b5:29:a2:dd:bf:9e:
- 18:7f:fb:36:21:57:e9:30:2d:96:1b:73:b4:3c:ba:0a:e1:e2:
- 30:d9:e4:50:49:b7:e8:c9:24:79:2e:bb:e7:d1:75:ba:a8:7b:
- 17:0d:fa:d8:ee:78:89:84:59:9d:05:25:79:94:08:4e:2e:0e:
- 79:6f:ca:58:36:88:1c:3e:05:35:53:e0:6a:b2:30:f9:19:08:
- 9b:91:4e:4a:8e:2d:a4:5f:8a:87:f2:c8:1a:25:a6:1f:04:fe:
- 1c:ac:e6:01:55:65:38:27:d4:1f:ad:9f:06:58:f2:87:d0:58:
- 19:2c
------BEGIN CERTIFICATE-----
-MIIDWTCCAsKgAwIBAgIBCDANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJHQjEk
-MCIGA1UEChMbQ2VydGlmaWNhdGUgVHJhbnNwYXJlbmN5IENBMQ4wDAYDVQQIEwVX
-YWxlczEQMA4GA1UEBxMHRXJ3IFdlbjAeFw0xMjA2MDEwMDAwMDBaFw0yMjA2MDEw
-MDAwMDBaMFIxCzAJBgNVBAYTAkdCMSEwHwYDVQQKExhDZXJ0aWZpY2F0ZSBUcmFu
-c3BhcmVuY3kxDjAMBgNVBAgTBVdhbGVzMRAwDgYDVQQHEwdFcncgV2VuMIGfMA0G
-CSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvrurKxRq3zr356srn3RdSleGTlVoXmJrv
-jZerfN/3dhCTwLgj0qTjpRoXuG8oFitmolOJNevs3BA2Iz2i3WUxsMY7zGh2Hr3I
-VAN7dzmSRrhwp7crFMmxZn3gmpZA7Z8/PHJdlQtNJlWYaf5/HpGaZut201wBF8a8
-0NjP0hAosQIDAQABo4IBOjCCATYwHQYDVR0OBBYEFGEsZO+sebcoOXydk+bfhkZf
-p2qIMH0GA1UdIwR2MHSAFF+diA3Ic+ZU1PgN2OawwSS0R8NVoVmkVzBVMQswCQYD
-VQQGEwJHQjEkMCIGA1UEChMbQ2VydGlmaWNhdGUgVHJhbnNwYXJlbmN5IENBMQ4w
-DAYDVQQIEwVXYWxlczEQMA4GA1UEBxMHRXJ3IFdlboIBADAJBgNVHRMEAjAAMIGK
-BgorBgEEAdZ5AgQCBHwEegB4AHYA3xwuwRUAlFJHqWFoMl3cXHlZ6PfG04j8AC4L
-vT9012QAAAE92yfgWwAABAMARzBFAiB6p5YExHSA83J7CE+Qs5ifeQkYheAEhEMa
-Kil8vzo1XAIhALSf2BILDWRM1+dSabTaYxepNWy5UCJPwRzClrLjmyOGMA0GCSqG
-SIb3DQEBBQUAA4GBAKOobEGtAIiiWu3E57Upot2/nhh/+zYhV+kwLZYbc7Q8ugrh
-4jDZ5FBJt+jJJHkuu+fRdbqoexcN+tjueImEWZ0FJXmUCE4uDnlvylg2iBw+BTVT
-4GqyMPkZCJuRTkqOLaRfiofyyBolph8E/hys5gFVZTgn1B+tnwZY8ofQWBks
------END CERTIFICATE-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 0 (0x0)
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=GB, O=Certificate Transparency CA, ST=Wales, L=Erw Wen
- Validity
- Not Before: Jun 1 00:00:00 2012 GMT
- Not After : Jun 1 00:00:00 2022 GMT
- Subject: C=GB, O=Certificate Transparency CA, ST=Wales, L=Erw Wen
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (1024 bit)
- Modulus:
- 00:d5:8a:68:53:62:10:a2:71:19:93:6e:77:83:21:
- 18:1c:2a:40:13:c6:d0:7b:8c:76:eb:91:57:d3:d0:
- fb:4b:3b:51:6e:ce:cb:d1:c9:8d:91:c5:2f:74:3f:
- ab:63:5d:55:09:9c:d1:3a:ba:f3:1a:e5:41:44:24:
- 51:a7:4c:78:16:f2:24:3c:f8:48:cf:28:31:cc:e6:
- 7b:a0:4a:5a:23:81:9f:3c:ba:37:e6:24:d9:c3:bd:
- b2:99:b8:39:dd:fe:26:31:d2:cb:3a:84:fc:7b:b2:
- b5:c5:2f:cf:c1:4f:ff:40:6f:5c:d4:46:69:cb:b2:
- f7:cf:df:86:fb:6a:b9:d1:b1
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Subject Key Identifier:
- 5F:9D:88:0D:C8:73:E6:54:D4:F8:0D:D8:E6:B0:C1:24:B4:47:C3:55
- X509v3 Authority Key Identifier:
- keyid:5F:9D:88:0D:C8:73:E6:54:D4:F8:0D:D8:E6:B0:C1:24:B4:47:C3:55
- DirName:/C=GB/O=Certificate Transparency CA/ST=Wales/L=Erw Wen
- serial:00
-
- X509v3 Basic Constraints:
- CA:TRUE
- Signature Algorithm: sha1WithRSAEncryption
- 06:08:cc:4a:6d:64:f2:20:5e:14:6c:04:b2:76:f9:2b:0e:fa:
- 94:a5:da:f2:3a:fc:38:06:60:6d:39:90:d0:a1:ea:23:3d:40:
- 29:57:69:46:3b:04:66:61:e7:fa:1d:17:99:15:20:9a:ea:2e:
- 0a:77:51:76:41:12:27:d7:c0:03:07:c7:47:0e:61:58:4f:d7:
- 33:42:24:72:7f:51:d6:90:bc:47:a9:df:35:4d:b0:f6:eb:25:
- 95:5d:e1:89:3c:4d:d5:20:2b:24:a2:f3:e4:40:d2:74:b5:4e:
- 1b:d3:76:26:9c:a9:62:89:b7:6e:ca:a4:10:90:e1:4f:3b:0a:
- 94:2e
------BEGIN CERTIFICATE-----
-MIIC0DCCAjmgAwIBAgIBADANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJHQjEk
-MCIGA1UEChMbQ2VydGlmaWNhdGUgVHJhbnNwYXJlbmN5IENBMQ4wDAYDVQQIEwVX
-YWxlczEQMA4GA1UEBxMHRXJ3IFdlbjAeFw0xMjA2MDEwMDAwMDBaFw0yMjA2MDEw
-MDAwMDBaMFUxCzAJBgNVBAYTAkdCMSQwIgYDVQQKExtDZXJ0aWZpY2F0ZSBUcmFu
-c3BhcmVuY3kgQ0ExDjAMBgNVBAgTBVdhbGVzMRAwDgYDVQQHEwdFcncgV2VuMIGf
-MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDVimhTYhCicRmTbneDIRgcKkATxtB7
-jHbrkVfT0PtLO1FuzsvRyY2RxS90P6tjXVUJnNE6uvMa5UFEJFGnTHgW8iQ8+EjP
-KDHM5nugSlojgZ88ujfmJNnDvbKZuDnd/iYx0ss6hPx7srXFL8/BT/9Ab1zURmnL
-svfP34b7arnRsQIDAQABo4GvMIGsMB0GA1UdDgQWBBRfnYgNyHPmVNT4DdjmsMEk
-tEfDVTB9BgNVHSMEdjB0gBRfnYgNyHPmVNT4DdjmsMEktEfDVaFZpFcwVTELMAkG
-A1UEBhMCR0IxJDAiBgNVBAoTG0NlcnRpZmljYXRlIFRyYW5zcGFyZW5jeSBDQTEO
-MAwGA1UECBMFV2FsZXMxEDAOBgNVBAcTB0VydyBXZW6CAQAwDAYDVR0TBAUwAwEB
-/zANBgkqhkiG9w0BAQUFAAOBgQAGCMxKbWTyIF4UbASydvkrDvqUpdryOvw4BmBt
-OZDQoeojPUApV2lGOwRmYef6HReZFSCa6i4Kd1F2QRIn18ADB8dHDmFYT9czQiRy
-f1HWkLxHqd81TbD26yWVXeGJPE3VICskovPkQNJ0tU4b03YmnKliibduyqQQkOFP
-OwqULg==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/ct-test-embedded-with-uids.pem b/src/pki/testdata/ssl/certificates/ct-test-embedded-with-uids.pem
deleted file mode 100644
index fa666e3..0000000
--- a/src/pki/testdata/ssl/certificates/ct-test-embedded-with-uids.pem
+++ /dev/null
@@ -1,81 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 7 (0x7)
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: C = GB, O = Certificate Transparency CA, ST = Wales, L = Erw Wen
- Validity
- Not Before: Jun 1 00:00:00 2012 GMT
- Not After : Jun 1 00:00:00 2022 GMT
- Subject: C = GB, O = Certificate Transparency, ST = Wales, L = Erw Wen
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (1024 bit)
- Modulus:
- 00:be:ef:98:e7:c2:68:77:ae:38:5f:75:32:5a:0c:
- 1d:32:9b:ed:f1:8f:aa:f4:d7:96:bf:04:7e:b7:e1:
- ce:15:c9:5b:a2:f8:0e:e4:58:bd:7d:b8:6f:8a:4b:
- 25:21:91:a7:9b:d7:00:c3:8e:9c:03:89:b4:5c:d4:
- dc:9a:12:0a:b2:1e:0c:b4:1c:d0:e7:28:05:a4:10:
- cd:9c:5b:db:5d:49:27:72:6d:af:17:10:f6:01:87:
- 37:7e:a2:5b:1a:1e:39:ee:d0:b8:81:19:dc:15:4d:
- c6:8f:7d:a8:e3:0c:af:15:8a:33:e6:c9:50:9f:4a:
- 05:b0:14:09:ff:5d:d8:7e:b5
- Exponent: 65537 (0x10001)
- Issuer Unique ID:
- 12:34:56
- Subject Unique ID:
- 12:34:56
- X509v3 extensions:
- X509v3 Subject Key Identifier:
- 20:31:54:1A:F2:5C:05:FF:D8:65:8B:68:43:79:4F:5E:90:36:F7:B4
- X509v3 Authority Key Identifier:
- keyid:5F:9D:88:0D:C8:73:E6:54:D4:F8:0D:D8:E6:B0:C1:24:B4:47:C3:55
- DirName:/C=GB/O=Certificate Transparency CA/ST=Wales/L=Erw Wen
- serial:00
-
- X509v3 Basic Constraints:
- CA:FALSE
- CT Precertificate SCTs:
- Signed Certificate Timestamp:
- Version : v1 (0x0)
- Log ID : DF:1C:2E:C1:15:00:94:52:47:A9:61:68:32:5D:DC:5C:
- 79:59:E8:F7:C6:D3:88:FC:00:2E:0B:BD:3F:74:D7:64
- Timestamp : Apr 5 17:04:16.275 2013 GMT
- Extensions: none
- Signature : ecdsa-with-SHA256
- 30:45:02:20:48:2F:67:51:AF:35:DB:A6:54:36:BE:1F:
- D6:64:0F:3D:BF:9A:41:42:94:95:92:45:30:28:8F:A3:
- E5:E2:3E:06:02:21:00:E4:ED:C0:DB:3A:C5:72:B1:E2:
- F5:E8:AB:6A:68:06:53:98:7D:CF:41:02:7D:FE:FF:A1:
- 05:51:9D:89:ED:BF:08
- Signature Algorithm: sha1WithRSAEncryption
- 8a:0c:4b:ef:09:9d:47:92:79:af:a0:a2:8e:68:9f:91:e1:c4:
- 42:1b:e2:d2:69:a2:ea:6c:a4:e8:21:5d:de:dd:ca:15:04:a1:
- 1e:7c:87:c4:b7:7e:80:f0:e9:79:03:52:68:f2:7c:a2:0e:16:
- 68:04:ae:55:6f:31:69:81:f9:6a:39:4a:b7:ab:fd:3e:25:5a:
- c0:04:45:13:fe:76:57:0c:67:95:ab:e4:70:31:33:d3:03:f8:
- 9f:3a:fa:6b:bc:fc:51:73:19:df:d9:5b:93:42:41:21:1f:63:
- 40:35:c3:d0:78:30:7a:68:c6:07:5a:2e:20:c8:9f:36:b8:91:
- 0c:a0
------BEGIN CERTIFICATE-----
-MIIDZTCCAs6gAwIBAgIBBzANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJHQjEk
-MCIGA1UEChMbQ2VydGlmaWNhdGUgVHJhbnNwYXJlbmN5IENBMQ4wDAYDVQQIEwVX
-YWxlczEQMA4GA1UEBxMHRXJ3IFdlbjAeFw0xMjA2MDEwMDAwMDBaFw0yMjA2MDEw
-MDAwMDBaMFIxCzAJBgNVBAYTAkdCMSEwHwYDVQQKExhDZXJ0aWZpY2F0ZSBUcmFu
-c3BhcmVuY3kxDjAMBgNVBAgTBVdhbGVzMRAwDgYDVQQHEwdFcncgV2VuMIGfMA0G
-CSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+75jnwmh3rjhfdTJaDB0ym+3xj6r015a/
-BH634c4VyVui+A7kWL19uG+KSyUhkaeb1wDDjpwDibRc1NyaEgqyHgy0HNDnKAWk
-EM2cW9tdSSdyba8XEPYBhzd+olsaHjnu0LiBGdwVTcaPfajjDK8VijPmyVCfSgWw
-FAn/Xdh+tQIDAQABgQQAEjRWggQAEjRWo4IBOjCCATYwHQYDVR0OBBYEFCAxVBry
-XAX/2GWLaEN5T16QNve0MH0GA1UdIwR2MHSAFF+diA3Ic+ZU1PgN2OawwSS0R8NV
-oVmkVzBVMQswCQYDVQQGEwJHQjEkMCIGA1UEChMbQ2VydGlmaWNhdGUgVHJhbnNw
-YXJlbmN5IENBMQ4wDAYDVQQIEwVXYWxlczEQMA4GA1UEBxMHRXJ3IFdlboIBADAJ
-BgNVHRMEAjAAMIGKBgorBgEEAdZ5AgQCBHwEegB4AHYA3xwuwRUAlFJHqWFoMl3c
-XHlZ6PfG04j8AC4LvT9012QAAAE92yffkwAABAMARzBFAiBIL2dRrzXbplQ2vh/W
-ZA89v5pBQpSVkkUwKI+j5eI+BgIhAOTtwNs6xXKx4vXoq2poBlOYfc9BAn3+/6EF
-UZ2J7b8IMA0GCSqGSIb3DQEBBQUAA4GBAIoMS+8JnUeSea+goo5on5HhxEIb4tJp
-oupspOghXd7dyhUEoR58h8S3foDw6XkDUmjyfKIOFmgErlVvMWmB+Wo5Srer/T4l
-WsAERRP+dlcMZ5Wr5HAxM9MD+J86+mu8/FFzGd/ZW5NCQSEfY0A1w9B4MHpoxgda
-LiDInza4kQyg
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/dec_2017.pem b/src/pki/testdata/ssl/certificates/dec_2017.pem
deleted file mode 100644
index b033f8d..0000000
--- a/src/pki/testdata/ssl/certificates/dec_2017.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:84
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Dec 20 00:00:00 2017 GMT
- Not After : Dec 20 00:00:00 2020 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:bb:d6:9f:20:ad:98:2d:32:9a:c8:58:d2:8f:c0:
- e0:b0:1b:ff:5f:f9:20:93:f3:83:39:a6:5f:bd:cc:
- 3f:84:de:cc:66:92:aa:ae:c3:6d:9e:c5:88:54:ca:
- a5:3f:7f:4c:42:bc:42:fe:93:f5:d2:96:e3:d7:fa:
- 5d:d5:bd:eb:4f:ec:a5:c2:86:95:86:de:08:c2:a9:
- df:f8:ca:89:df:be:43:33:e6:4f:94:9e:a1:f2:57:
- 85:f2:e5:58:bc:40:24:8e:86:4b:4a:c9:37:65:ee:
- b9:7b:2d:a0:7a:89:03:62:de:b6:93:52:63:3a:16:
- b2:81:17:3e:40:a9:1d:88:86:25:33:75:fa:75:c3:
- 1b:d0:19:34:7f:20:ac:a3:cb:3b:30:14:d3:2a:f9:
- 78:fa:33:f2:1d:4f:57:7b:c7:d6:67:f1:38:ff:97:
- a1:7d:6a:42:25:15:b2:5b:d0:46:6f:6d:b7:86:e0:
- 2f:70:dc:0c:f9:bd:75:08:2f:a3:28:3f:ee:4e:3b:
- c8:00:92:96:e2:92:5b:91:56:ba:5a:11:be:f9:4f:
- 30:64:e2:ab:52:26:b1:68:1e:34:d9:bb:6b:18:50:
- 8a:b8:d4:1f:ee:2d:9f:55:ec:b0:88:93:db:3b:5a:
- f6:f9:38:17:fe:59:dc:66:87:ef:2d:97:8d:db:7a:
- 0f:bb
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 4F:93:BD:50:76:80:83:8F:B4:15:05:76:1D:40:1D:55:A4:4C:2C:53
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 4a:73:ad:73:ac:c9:a6:45:53:69:ea:d9:6b:30:9c:36:9a:6d:
- ad:b4:ab:44:fe:8a:43:ad:df:df:95:28:8e:f3:73:f3:0c:4a:
- 8c:d7:a0:48:3e:ed:d5:eb:79:74:60:cf:4b:2d:57:e8:f5:f3:
- f0:8c:e1:45:8b:05:cf:2d:18:97:4d:ea:22:3c:a1:4b:01:89:
- a3:d9:4f:c5:6d:86:0a:83:d3:4e:c2:d4:b7:0e:47:98:fa:81:
- 13:fe:a9:5f:a5:79:73:34:4f:28:29:c6:a9:81:25:6d:db:18:
- d8:f6:44:39:11:83:a9:d3:11:b5:b3:8d:85:b7:0b:a5:88:9a:
- 3f:21:41:df:93:b8:73:b2:49:f1:c3:bd:94:57:df:bc:08:3d:
- a2:e9:20:ed:13:ee:1f:62:f7:84:e5:0e:7f:79:2f:a0:d6:72:
- 79:83:1c:5f:d4:6a:5d:c8:eb:a2:7b:b1:c2:6d:e2:cc:b2:fd:
- 90:d0:5c:c1:e8:74:dc:20:e6:55:f7:6c:72:dc:05:a0:83:17:
- 96:f9:85:c2:71:55:4c:4c:71:91:7d:a8:90:dd:88:eb:78:03:
- 39:4e:24:e4:d4:66:ba:e4:50:5c:4d:f3:0b:aa:3a:1b:b3:e8:
- 53:be:b5:10:76:ae:a2:e4:a0:d5:30:62:5b:9d:2c:1e:1e:2d:
- 7c:2b:1d:d6
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwoQwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0xNzEyMjAwMDAwMDBaFw0yMDEyMjAwMDAwMDBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC71p8grZgtMprIWNKPwOCwG/9f+SCT84M5
-pl+9zD+E3sxmkqquw22exYhUyqU/f0xCvEL+k/XSluPX+l3VvetP7KXChpWG3gjC
-qd/4yonfvkMz5k+UnqHyV4Xy5Vi8QCSOhktKyTdl7rl7LaB6iQNi3raTUmM6FrKB
-Fz5AqR2IhiUzdfp1wxvQGTR/IKyjyzswFNMq+Xj6M/IdT1d7x9Zn8Tj/l6F9akIl
-FbJb0EZvbbeG4C9w3Az5vXUIL6MoP+5OO8gAkpbikluRVrpaEb75TzBk4qtSJrFo
-HjTZu2sYUIq41B/uLZ9V7LCIk9s7Wvb5OBf+Wdxmh+8tl43beg+7AgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBRPk71QdoCDj7QVBXYdQB1VpEwsUzAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEASnOtc6zJpkVTaerZazCcNpptrbSrRP6KQ63f35UojvNz8wxKjNegSD7t1et5
-dGDPSy1X6PXz8IzhRYsFzy0Yl03qIjyhSwGJo9lPxW2GCoPTTsLUtw5HmPqBE/6p
-X6V5czRPKCnGqYElbdsY2PZEORGDqdMRtbONhbcLpYiaPyFB35O4c7JJ8cO9lFff
-vAg9oukg7RPuH2L3hOUOf3kvoNZyeYMcX9RqXcjronuxwm3izLL9kNBcweh03CDm
-VfdsctwFoIMXlvmFwnFVTExxkX2okN2I63gDOU4k5NRmuuRQXE3zC6o6G7PoU761
-EHauouSg1TBiW50sHh4tfCsd1g==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/diginotar_cyber_ca.pem b/src/pki/testdata/ssl/certificates/diginotar_cyber_ca.pem
deleted file mode 100644
index 0abbd7c..0000000
--- a/src/pki/testdata/ssl/certificates/diginotar_cyber_ca.pem
+++ /dev/null
@@ -1,32 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIFWjCCBMOgAwIBAgIEBycQDTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJV
-UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
-cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds
-b2JhbCBSb290MB4XDTA2MTAwNDEwNTQxMVoXDTExMTAwNDEwNTMxMVowYDELMAkG
-A1UEBhMCTkwxEjAQBgNVBAoTCURpZ2lOb3RhcjEbMBkGA1UEAxMSRGlnaU5vdGFy
-IEN5YmVyIENBMSAwHgYJKoZIhvcNAQkBFhFpbmZvQGRpZ2lub3Rhci5ubDCCAiIw
-DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANLOFQotqF6EZ639vu9Gx8i5z3P8
-9DS5+SxD52ATPXrjss87Z2yQrcC5P4RS8DVC3HTcKDu9UrSnrHJFF8bwieu0qiXy
-XUte0dmHutZ9fPXOMp8QM8WxSrtekTHC0OlBwpFkfglBO9uLCDdqqspS3rU5HsCI
-A6U/i5kTYUO1m4Kz7iBvz6FEouova0CfjytXraFTwoUiaZ2gP1HfC0GRDaXhqKpc
-SQhdvd5wQbEPyWNr0380dAIvNFp4dRxoeoFnivPaQPBgY/SSINcDpj2jHmfEhBtB
-pcmM5r3qSLYFFgizNxJa92E89zhvLpfgb1Y4VNMota0Ubi5LZLUnZbd1JQm2Bz2V
-VgIKgmCyc0XgMyZRdJq51FAc9k1bW1JSE1qmf6cO4ehBVGeYjIfVydNsy9NUkgYJ
-NEH3gW8/nsl8dVWw58Gzd+jDxAA1lUBwEEoF3iW7n1mlZLxHYL9g43aLE1Xd4XR6
-uc8kpmp/3mQiRFhogmoQ+T3lPhu5vfwi9GAEibtVbShV+t6OjRshFNc3izR7Tfay
-shDPM7F9HGKZSMsrbHaWVb8ZDR0fu2WqG46ZtcYokOWCLXhQIJr9eS8kf/CJKWn0
-fc1zvrPtTsHR7VJej/e4142HrbLZG1ES/1az4a80fVykeIgQnp0DxqWqoiRR90kU
-xbHuWUOV36toKDA/AgMBAAGjggGGMIIBgjASBgNVHRMBAf8ECDAGAQH/AgEBMFMG
-A1UdIARMMEowSAYJKwYBBAGxPgEAMDswOQYIKwYBBQUHAgEWLWh0dHA6Ly93d3cu
-cHVibGljLXRydXN0LmNvbS9DUFMvT21uaVJvb3QuaHRtbDAOBgNVHQ8BAf8EBAMC
-AQYwgaAGA1UdIwSBmDCBlYAUpgwdn2H/Bxe1vzhG20Mw1Y6wUgaheaR3MHUxCzAJ
-BgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdU
-RSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVy
-VHJ1c3QgR2xvYmFsIFJvb3SCAgGlMEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly93
-d3cucHVibGljLXRydXN0LmNvbS9jZ2ktYmluL0NSTC8yMDE4L2NkcC5jcmwwHQYD
-VR0OBBYEFKv5aN/PSjfXe0WMX3LeQETDZbvCMA0GCSqGSIb3DQEBBQUAA4GBAI9o
-a6VbB7pEZg4cqFwwezPkCiYE/O+eGjjWLqEf0JlHwnVkJP2eOyh2uSYoYZEMbSz4
-BJ98UAHV42mv7xXSRZskCSpmBU8lgcpdvqrBWSeuM46C9990sFWzjvjnN8huqlZE
-9r1TgSOWPbT6MopTZkQloiXGpjwljPDgKAYityZB
------END CERTIFICATE-----
-
diff --git a/src/pki/testdata/ssl/certificates/diginotar_pkioverheid.pem b/src/pki/testdata/ssl/certificates/diginotar_pkioverheid.pem
deleted file mode 100644
index b41fa3e..0000000
--- a/src/pki/testdata/ssl/certificates/diginotar_pkioverheid.pem
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIEiDCCA3CgAwIBAgIEATFpsDANBgkqhkiG9w0BAQUFADBZMQswCQYDVQQGEwJO
-TDEeMBwGA1UEChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSowKAYDVQQDEyFTdGFh
-dCBkZXIgTmVkZXJsYW5kZW4gT3ZlcmhlaWQgQ0EwHhcNMDcwNzA1MDg0MjA3WhcN
-MTUwNzI3MDgzOTQ2WjBfMQswCQYDVQQGEwJOTDEXMBUGA1UEChMORGlnaU5vdGFy
-IEIuVi4xNzA1BgNVBAMTLkRpZ2lOb3RhciBQS0lvdmVyaGVpZCBDQSBPdmVyaGVp
-ZCBlbiBCZWRyaWp2ZW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDc
-vdKnTmoKuzuiheF/AK2+tDBomAfNoHrElM9x+Yo35FPrV3bMi+Zs/u6HVcg+uwQ5
-AKeAeKxbT370vbhUuHE7BzFJOZNUfCA7eSuPu2GQfbGs5h+QLp1FAalkLU3DL7nn
-UNVOKlyrdnY3Rtd57EKZ96LspIlw3Dgrh6aqJOadkiQbvvb91C8ZF3rmMgeUVAVT
-Q+lsvK9Hy7zL/b07RBKB8WtLu+20z6slTxjSzAL8o0+1QjPLWc0J3NNQ/aB2jKx+
-ZopC9q0ckvO2+xRG603XLzDgbe5bNr5EdLcgBVeFTegAGaL2DOauocBC36esgl3H
-aLcY5olLmmv6znn58yynAgMBAAGjggFQMIIBTDBIBgNVHSAEQTA/MD0GBFUdIAAw
-NTAzBggrBgEFBQcCARYnaHR0cDovL3d3dy5kaWdpbm90YXIubmwvY3BzL3BraW92
-ZXJoZWlkMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMIGABgNVHSME
-eTB3gBQLhtYPd6NosftkCcOIblwEHFfpPaFZpFcwVTELMAkGA1UEBhMCTkwxHjAc
-BgNVBAoTFVN0YWF0IGRlciBOZWRlcmxhbmRlbjEmMCQGA1UEAxMdU3RhYXQgZGVy
-IE5lZGVybGFuZGVuIFJvb3QgQ0GCBACYmnkwPQYDVR0fBDYwNDAyoDCgLoYsaHR0
-cDovL2NybC5wa2lvdmVyaGVpZC5ubC9Eb21PdkxhdGVzdENSTC5jcmwwHQYDVR0O
-BBYEFEwIyY128ZjHPt881y91DbF2eZfMMA0GCSqGSIb3DQEBBQUAA4IBAQAMlIca
-v03jheLu19hjeQ5Q38aEW9K72fUxCho1l3TfFPoqDz7toOMI9tVOW6+mriXiRWsi
-D7dUKH6S3o0UbNEc5W50BJy37zRERd/Jgx0ZH8Apad+J1T/CsFNt5U4X5HNhIxMm
-cUP9TFnLw98iqiEr2b+VERqKpOKrp11Lbyn1UtHk0hWxi/7wA8+nfemZhzizDXMU
-5HIs4c71rQZIZPrTKbmi2Lv01QulQERDjqC/zlqlUkxk0xcxYczopIro5Ij76eUv
-BjMzm5RmZrGrUDqhCYF0U1onuabSJc/Tw6f/ltAv6uAejVLpGBwgCkegllYOQJBR
-RKwa/fHuhR/3Qlpl
------END CERTIFICATE-----
-
diff --git a/src/pki/testdata/ssl/certificates/diginotar_pkioverheid_g2.pem b/src/pki/testdata/ssl/certificates/diginotar_pkioverheid_g2.pem
deleted file mode 100644
index 12570d2..0000000
--- a/src/pki/testdata/ssl/certificates/diginotar_pkioverheid_g2.pem
+++ /dev/null
@@ -1,38 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGnDCCBISgAwIBAgIEATE0vzANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQGEwJO
-TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMTIwMAYDVQQDDClTdGFh
-dCBkZXIgTmVkZXJsYW5kZW4gT3JnYW5pc2F0aWUgQ0EgLSBHMjAeFw0xMDA1MTIw
-ODUxMzhaFw0yMDAzMjMwOTUwMDRaMFoxCzAJBgNVBAYTAk5MMRcwFQYDVQQKDA5E
-aWdpTm90YXIgQi5WLjEyMDAGA1UEAwwpRGlnaU5vdGFyIFBLSW92ZXJoZWlkIENB
-IE9yZ2FuaXNhdGllIC0gRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
-AQCxExkPJ+Zs1FWGS9DsiYpFkXisR71HK+T8RetPtCZzWzfTw3/2497Xo/gtaMUI
-PkuU1uSHJTZrhLUYdPMoWHMvm2rPvAQe9t7dr/xLqvXbZmIlASWC3vKXWhBu3V2p
-IrEEqSNzOvhxrR3PhETrR9Gvbch8KKvH8jd6dF9fxQIUiqNa4xtsAeNdjtlo1vQJ
-GzLckbUs9SDrjANtJkm4k8SFXdjSm69WaswFM8ygQp40VUSca6DUEtArVM23iQ3l
-9uvo+4UBM096a/GdcjOWDveyhKWlJ8Qn8VFzKXe6Z27+TNy04qGhgS85SY1DOBPO
-0KVcwoc6AGdlQiPxNlkKHaNRyLyjlCox3+M88p0aPASw77EKMBNzttfzo0wBdRSF
-eMDXijlYhVD6LubFvs+LP6+PNtQlCS3SD6xyk/K/i9RQs/kVUJuZ9RTZ+4uRozIm
-JqD43ztggYaDeVsr6xM9KTrBbd29no6H1kquNJcF7hSm9tw4fkrpJFQHPZdoN0Zr
-DceoIa8TVOQJavFNRgrJXfubT73e+7dUy7g4nKc5+2otwHuNq6WnV+xKkoozxeEg
-XHPYkJIrgNUPhhhpfDlPhIa890xb89W0yqDC8DciynlSH1PmqvOQsDvd8ij9rOvF
-BiSgydQvD1j9tZ7sD8+yWdCiBHo4aq5y+73wJWKUCacFCwIDAQABo4IBYTCCAV0w
-SAYDVR0gBEEwPzA9BgRVHSAAMDUwMwYIKwYBBQUHAgEWJ2h0dHA6Ly93d3cuZGln
-aW5vdGFyLm5sL2Nwcy9wa2lvdmVyaGVpZDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud
-DwEB/wQEAwIBBjCBhQYDVR0jBH4wfIAUORCLSZJc22ESIM1JnRqO2pxnQLmhXqRc
-MFoxCzAJBgNVBAYTAk5MMR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4x
-KzApBgNVBAMMIlN0YWF0IGRlciBOZWRlcmxhbmRlbiBSb290IENBIC0gRzKCBACY
-lvQwSQYDVR0fBEIwQDA+oDygOoY4aHR0cDovL2NybC5wa2lvdmVyaGVpZC5ubC9E
-b21PcmdhbmlzYXRpZUxhdGVzdENSTC1HMi5jcmwwHQYDVR0OBBYEFLxdlDvZq3sD
-JXNhwtst7vyrj2WhMA0GCSqGSIb3DQEBCwUAA4ICAQCP/C1Mt9kt1R+978v0t2gX
-dZ1O1ffdnPEqJu2forYcA9VTs+wIzzTi48P0tRYvyMO+19NzqwA2+RpKftZj6V5G
-uqW2jhW3oyrYQx3vXcgfgYWzi/f/PPTZ9EYIP5y8HaDZqEzNJVJOCrEg9x/pQ9lU
-RoETmsBedGwqmDLq/He7DaWiMZgifnx859qkrey3LhoZcfhIUNpDjyyE3cFAJ+O1
-8BVOltT4XOOGKUYr1zsH6zh/yIZXl9PvKjPEF1DVZGlrK2tFXl0vF8paTs/D1zk8
-9TufRrmb5w5Jl53W1eMbD+qPAU6aE5RZCgIHSEsaYKt/T+0L2FUNaG9VnGllFULs
-wNzdbKzDFs4LHVabpMTE0i7gD+JEJytQaaTcYuiKISlCbMwAOpZ2m+9AwKRed4Qy
-bCYqOWauXeO5ubIsaB8empADOfCqs6TMSYsYNOk3yXspx4R8b0QVL+xhWQTJRcui
-1lKifH8pktZKxYtCqNT+6tjHhyMY5J16fXNAUpigrm7jBT8FD+Clxm1N7YM3iJzH
-89xCmmq21yFJNnfy7xhPxXDZnunetyuL9Lx+KN8NQMmFXK6dxTH/0FwOtah+8Okv
-uq+IruW10Vilr5xxpykBkINpN4IFuvwJwQhujHg7wzMCgD9EhQgd31VWCK0shS1d
-sQPhrqp0xaTzTro3mHuCuQ==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/diginotar_public_ca_2025.pem b/src/pki/testdata/ssl/certificates/diginotar_public_ca_2025.pem
deleted file mode 100644
index c81461a..0000000
--- a/src/pki/testdata/ssl/certificates/diginotar_public_ca_2025.pem
+++ /dev/null
@@ -1,35 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGAzCCA+ugAwIBAgIQHn16Uz1FMEGWQA9xSB9FBDANBgkqhkiG9w0BAQUFADBf
-MQswCQYDVQQGEwJOTDESMBAGA1UEChMJRGlnaU5vdGFyMRowGAYDVQQDExFEaWdp
-Tm90YXIgUm9vdCBDQTEgMB4GCSqGSIb3DQEJARYRaW5mb0BkaWdpbm90YXIubmww
-HhcNMDYwMjA2MTYwNzAyWhcNMjUwMzI4MTYwNzAyWjBmMQswCQYDVQQGEwJOTDES
-MBAGA1UEChMJRGlnaU5vdGFyMSEwHwYDVQQDExhEaWdpTm90YXIgUHVibGljIENB
-IDIwMjUxIDAeBgkqhkiG9w0BCQEWEWluZm9AZGlnaW5vdGFyLm5sMIIBIjANBgkq
-hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs/2eu/I5fMG8lbvPph3e8zfJpZQtg/72
-Yx29+ivtKehiF6A3n785XyoY6IT3vlCrhy1CbMOY3M0x1n4YQlv17B0XZ/DqHyBA
-SQvnDNbkM9j4NoSy/sRtGsP6PetIFFjrhE9whZuvuSUC1PY4PruEEJp8zOCx4+wU
-Zt9xvjy4Xra+bSia5rwccQ/R5FYTGKrYCthOy9C9ud5Fhd++rlVhgdA/78w+Cs2s
-xS4i0MAxG75P3/e/bATJKepbydHdDjkyz9o3RW/wdPUXhzEw4EwUjYg6XJrDzMad
-6aL9M/eaxDjgz6o48EaWRDrGptaE2uJRuErVz7oOO0p/wYKq/BU+/wIDAQABo4IB
-sjCCAa4wOgYIKwYBBQUHAQEELjAsMCoGCCsGAQUFBzABhh5odHRwOi8vdmFsaWRh
-dGlvbi5kaWdpbm90YXIubmwwHwYDVR0jBBgwFoAUiGi/4I41xDs4a2L3KDuEgcgM
-100wEgYDVR0TAQH/BAgwBgEB/wIBADCBxgYDVR0gBIG+MIG7MIG4Bg5ghBABh2kB
-AQEBBQIGBDCBpTAnBggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdpbm90YXIubmwv
-Y3BzMHoGCCsGAQUFBwICMG4abENvbmRpdGlvbnMsIGFzIG1lbnRpb25lZCBvbiBv
-dXIgd2Vic2l0ZSAod3d3LmRpZ2lub3Rhci5ubCksIGFyZSBhcHBsaWNhYmxlIHRv
-IGFsbCBvdXIgcHJvZHVjdHMgYW5kIHNlcnZpY2VzLjBDBgNVHR8EPDA6MDigNqA0
-hjJodHRwOi8vc2VydmljZS5kaWdpbm90YXIubmwvY3JsL3Jvb3QvbGF0ZXN0Q1JM
-LmNybDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFN8zwK+S/jf8ttgWFtDZsZHV
-+m6lMA0GCSqGSIb3DQEBBQUAA4ICAQCfV1rmBd9QStEyQ40lT0tqby0/3ez0STuJ
-ESBQLQD56XYdb4VFSuqA6xTtiuSVHLoiv2xyISN9FvX3A5VtifkJ00JEaLQJiSsE
-wGDkYGl1DT7SsqtAVKdMAuCM+e0j0/RV3hZ6kcrM7/wFccHwM+/TiurR9lgZDzB4
-a7++A4XrYyKx9vc9ZwBEnD1nrAe7++gg9cuZgP7e+QL0FBHMjpw+gnCDjr2dzBZC
-4r+b8SOqlbPRPexBuNghlc7PfcPIyFis2LJXDRMWiAd3TcfdALwRsuKMR/T+cwyr
-asy69OEGHplLT57otQ524BDctDXNzlH9bHEh52QzqkWvIDqs42910IUy1nYNPIUG
-yYJV/T7H8Jb6vfMZWe47iUFvtNZCi8+b542gRUwdi+ca+hGviBC9Qr4Wv1pl7CBQ
-Hy1axTkHiQawUo/hgmoetCpftugl9yJTfvsBorUV1ZMxn9B1JLSGtWnbUsFRla7G
-fNa0IsUkzmmha8XCzvNu0d1PDGtcQyUqmDOE1Hx4cIBeuF8ipuIXkrVCr9zAZ4ZC
-hgz6aA1gDTW8whSRJqYEYEQ0pcMEFLyXE+Nz3O8NinO2AuxqKhjMk13203xA7lPY
-MnBQ0v7S3qqbp/pvPMiUhOz/VaYted6QmOY5EATBnFiLCuw87JXoAyp382eJ3WX1
-hOiR4IX9Tg==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/diginotar_root_ca.pem b/src/pki/testdata/ssl/certificates/diginotar_root_ca.pem
deleted file mode 100644
index b972b4b..0000000
--- a/src/pki/testdata/ssl/certificates/diginotar_root_ca.pem
+++ /dev/null
@@ -1,32 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIFijCCA3KgAwIBAgIQDHbanJEMTiye/hXQWJM8TDANBgkqhkiG9w0BAQUFADBf
-MQswCQYDVQQGEwJOTDESMBAGA1UEChMJRGlnaU5vdGFyMRowGAYDVQQDExFEaWdp
-Tm90YXIgUm9vdCBDQTEgMB4GCSqGSIb3DQEJARYRaW5mb0BkaWdpbm90YXIubmww
-HhcNMDcwNTE2MTcxOTM2WhcNMjUwMzMxMTgxOTIxWjBfMQswCQYDVQQGEwJOTDES
-MBAGA1UEChMJRGlnaU5vdGFyMRowGAYDVQQDExFEaWdpTm90YXIgUm9vdCBDQTEg
-MB4GCSqGSIb3DQEJARYRaW5mb0BkaWdpbm90YXIubmwwggIiMA0GCSqGSIb3DQEB
-AQUAA4ICDwAwggIKAoICAQCssFjBAL3YIQgLK5r+blYwBZ8bd5AQQVzDDYcRd46B
-8cp86Yxq7Th0Nbva3/m7wAk3tJZzgX0zGpg595NvlX89ubF1h7pRSOiLcD6VBMXY
-tsMW2YiwsYcdcNqGtA8Ui3rPENF0NqISe3eGSnnme98CEWilToauNFibJBN4ViIl
-HgGLS1Fx+4LMWZZpiFpoU8W5DQI3y0u8ZkqQfioLBQftFl9VkHXYRskbg+IIvvEj
-zJkd1ioPgyAVWCeCLvriIsJJsbkBgWqdbZ1Ad2h2TiEqbYRAhU52mXyC8/O3AlnU
-JgEbjt+tUwbRrhjd4rI6y9eIOI6sWym5GdOY+RgDz0iChmYLG2kPyes4iHomGgVM
-ktck1JbyrFIto0fVUvY//s6EBnCmqj6i8rZWNBhXouSBbefK8GrTx5FrAoNBfBXv
-a5pkXuPQPOWx63tdhvvL5ndJzaNl3Pe5nLjkC1+Tz8wwGjIczhxjlaX56uF0i57p
-K6kwe6AYHw4YC+VbqdPRbB4HZ4+RS6mKvNJmqpMBiLKR+jFc1abBUggJzQpjotMi
-puih2TkGl/VujQKQjBR7P4DNG5y6xFhyI6+2Vp/GekIzKQc/gsnmHwUNzUwoNovT
-yD4cxojvXu6JZOkd69qJfjKmadHdzIif0dDJZiHcBmfFlHqabWJMfczgZICynkeO
-owIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV
-HQ4EFgQUiGi/4I41xDs4a2L3KDuEgcgM100wDQYJKoZIhvcNAQEFBQADggIBADsC
-jcs8MOhuoK3yc7NfniUTBAXT9uOLuwt5zlPe5JbF0a9zvNXD0EBVfEB/zRtfCdXy
-fJ9oHbtdzno5wozWmHvFg1Wo1X1AyuAe94leY12hE8JdiraKfADzI8PthV9xdvBo
-Y6pFITlIYXg23PFDk9Qlx/KAZeFTAnVR/Ho67zerhChXDNjU1JlWbOOi/lmEtDHo
-M/hklJRRl6s5xUvt2t2AC298KQ3EjopyDedTFLJgQT2EkTFoPSdE2+Xe9PpjRchM
-Ppj1P0G6Tss3DbpmmPHdy59c91Q2gmssvBNhl0L4eLvMyKKfyvBovWsdst+Nbwed
-2o5nx0ceyrm/KkKRt2NTZvFCo+H0Wk1Ya7XkpDOtXHAd3ODy63MUkZoDweoAZbwH
-/M8SESIsrqC9OuCiKthZ6SnTGDWkrBFfGbW1G/8iSlzGeuQX7yCpp/Q/rYqnmgQl
-nQ7KN+ZQ/YxCKQSa7LnPS3K94gg2ryMvYuXKAdNw23yCIywWMQzGNgeQerEfZ1jE
-O1hZibCMjFCz2IbLaKPECudpSyDOwR5WS5WpI2jYMNjD67BVUc3l/Su49bsRn1NU
-9jQZjHkJNsphFyUXC4KYcwx3dMPVDceoEkzHp1RxRy4sGn3J4ys7SN4nhKdjNrN9
-j6BkOSQNPXuHr2ZcdBtLc7LljPCGmbjlxd+Ewbfr
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/diginotar_services_1024_ca.pem b/src/pki/testdata/ssl/certificates/diginotar_services_1024_ca.pem
deleted file mode 100644
index d32de7a..0000000
--- a/src/pki/testdata/ssl/certificates/diginotar_services_1024_ca.pem
+++ /dev/null
@@ -1,23 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDzTCCAzagAwIBAgIERpwssDANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC
-VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u
-ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc
-KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u
-ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNzA3
-MjYxNTU5MDBaFw0xMzA4MjYxNjI5MDBaMGgxCzAJBgNVBAYTAk5MMRIwEAYDVQQK
-EwlEaWdpTm90YXIxIzAhBgNVBAMTGkRpZ2lOb3RhciBTZXJ2aWNlcyAxMDI0IENB
-MSAwHgYJKoZIhvcNAQkBFhFpbmZvQGRpZ2lub3Rhci5ubDCBnzANBgkqhkiG9w0B
-AQEFAAOBjQAwgYkCgYEA2ptNXTz50eKLxsYIIMXZHkjsZlhneWIrQWP0iY1o2q+4
-lDaLGSSkoJPSmQ+yrS01Tc0vauH5mxkrvAQafi09UmTN8T5nD4ku6PJPrqYIoYX+
-oakJ5sarPkP8r3oDkdqmOaZh7phPGKjTs69mgumfvN1y+QYEvRLZGCTnq5NTi1kC
-AwEAAaOCASYwggEiMBIGA1UdEwEB/wQIMAYBAf8CAQAwJwYDVR0lBCAwHgYIKwYB
-BQUHAwEGCCsGAQUFBwMCBggrBgEFBQcDBDARBgNVHSAECjAIMAYGBFUdIAAwMwYI
-KwYBBQUHAQEEJzAlMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5lbnRydXN0Lm5l
-dDAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vY3JsLmVudHJ1c3QubmV0L3NlcnZl
-cjEuY3JsMB0GA1UdDgQWBBT+3JRJDG/vXH/G8RKZTxZJrfuCZTALBgNVHQ8EBAMC
-AQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0BowGQYJKoZIhvZ9B0EA
-BAwwChsEVjcuMQMCAIEwDQYJKoZIhvcNAQEFBQADgYEAY3RqN6k/lpxmyFisCcnv
-9WWUf6MCxDgxvV0jh+zUVrLJsm7kBQb87PX6iHBZ1O7m3bV6oKNgLwIMq94SXa/w
-NUuqikeRGvWFLELHHe+VQ7NeuJWTpdrFKKqtci0xrZlrbP+MISevrZqRK8fdWMNu
-B8WfedLHjFW/TMcnXlEWKz4=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/duplicate_cn_1.p12 b/src/pki/testdata/ssl/certificates/duplicate_cn_1.p12
deleted file mode 100644
index 7d603dc..0000000
--- a/src/pki/testdata/ssl/certificates/duplicate_cn_1.p12
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/duplicate_cn_1.pem b/src/pki/testdata/ssl/certificates/duplicate_cn_1.pem
deleted file mode 100644
index f68db18..0000000
--- a/src/pki/testdata/ssl/certificates/duplicate_cn_1.pem
+++ /dev/null
@@ -1,78 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 1 (0x1)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=B Root CA
- Validity
- Not Before: Aug 14 02:46:40 2014 GMT
- Not After : Aug 11 02:46:40 2024 GMT
- Subject: O=Foo, CN=Duplicate
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:ae:fc:af:a7:fa:a6:12:6f:5d:06:26:96:7c:33:
- d1:9f:53:a3:6e:e3:ea:e4:ba:d4:28:3c:f5:c3:60:
- 31:80:39:9b:df:ca:4f:08:0b:16:ee:fc:63:06:ae:
- ad:dd:77:3a:3e:63:28:be:c3:96:f7:9a:64:6f:b9:
- 6e:42:67:5b:12:3d:a3:97:d9:6f:5f:f4:06:a0:58:
- 52:57:34:d3:4e:48:91:a6:89:87:1e:0f:d1:f7:ea:
- 0e:40:67:bb:ac:c2:5f:bf:df:74:7a:55:42:e7:d5:
- 3a:0d:83:15:48:f5:a7:dc:2f:e2:ad:14:32:a4:b0:
- b0:c2:4f:1b:12:d4:d6:48:74:15:53:37:02:1b:5d:
- b6:9b:00:2c:2c:5e:0a:38:5c:5b:54:71:05:8e:5c:
- 76:7e:08:96:2f:44:5b:bd:4b:2e:c1:ce:b3:75:ce:
- 87:d8:2c:bb:fa:7d:01:3b:7d:39:e5:c4:7b:98:1a:
- a8:39:40:6a:f4:e8:5e:b0:f0:6b:3b:0e:5c:35:31:
- ae:47:d7:f0:5d:a7:92:6d:92:19:03:4c:97:56:fc:
- ce:7a:96:d6:14:e3:d2:23:53:76:99:2c:4a:5c:af:
- 8b:7d:e0:3e:69:0f:5f:29:84:6d:91:89:10:66:83:
- 03:4b:c2:86:20:95:68:b7:96:98:90:bd:56:ff:c9:
- 84:9b
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- D0:52:53:5F:31:41:A7:B9:87:82:9A:D8:41:83:68:CA:C6:09:DA:0E
- X509v3 Authority Key Identifier:
- keyid:BC:94:98:39:BF:60:C1:09:AB:08:89:D8:FA:2D:82:FF:15:2D:71:EC
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- Signature Algorithm: sha256WithRSAEncryption
- 48:bc:05:2b:d3:f8:4c:bf:c3:d8:13:73:df:3d:d6:89:61:f5:
- 40:61:e8:2a:cf:8d:f4:0e:6f:62:56:b3:66:70:05:11:2b:d9:
- 22:b7:6e:5c:d5:a3:00:14:ba:ac:f1:bd:3b:34:58:bc:b5:36:
- 8f:46:c6:73:38:3d:b5:52:62:7f:9d:cb:c4:9e:9f:ce:27:50:
- 7a:e4:d0:7d:7c:d6:73:ec:da:3a:08:1f:65:85:6c:19:2b:b2:
- 8a:09:3a:ba:78:09:73:c0:4f:00:a9:59:a3:11:91:42:9b:a7:
- 21:52:2d:69:c3:bd:63:84:52:4d:06:9c:d9:6f:3a:e6:4d:e2:
- aa:6f:e0:de:14:4b:62:33:bf:23:01:4f:68:09:5b:b4:4d:f5:
- 5c:f6:c2:2a:40:db:cb:6f:d7:7d:41:5c:a3:49:8f:ff:bc:02:
- c6:34:b2:73:ec:e5:7b:90:dd:ee:2e:82:1d:ea:d8:9c:e9:72:
- cb:1c:9b:fe:1c:b7:61:dd:eb:49:dd:56:f4:f8:b8:b9:13:05:
- 9e:ca:91:cb:e6:58:14:b5:69:e8:a7:66:e9:b9:7c:c1:a4:bf:
- c9:4f:09:b1:be:5b:ab:53:6e:99:2a:9d:61:dc:a8:4c:ae:c1:
- 40:68:8d:9c:c5:86:e3:bd:5d:78:0f:c0:31:1e:c5:08:b5:85:
- 2d:c3:ea:8f
------BEGIN CERTIFICATE-----
-MIIDIDCCAgigAwIBAgIBATANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAlCIFJv
-b3QgQ0EwHhcNMTQwODE0MDI0NjQwWhcNMjQwODExMDI0NjQwWjAiMQwwCgYDVQQK
-DANGb28xEjAQBgNVBAMMCUR1cGxpY2F0ZTCCASIwDQYJKoZIhvcNAQEBBQADggEP
-ADCCAQoCggEBAK78r6f6phJvXQYmlnwz0Z9To27j6uS61Cg89cNgMYA5m9/KTwgL
-Fu78Ywaurd13Oj5jKL7DlveaZG+5bkJnWxI9o5fZb1/0BqBYUlc0005IkaaJhx4P
-0ffqDkBnu6zCX7/fdHpVQufVOg2DFUj1p9wv4q0UMqSwsMJPGxLU1kh0FVM3Ahtd
-tpsALCxeCjhcW1RxBY5cdn4Ili9EW71LLsHOs3XOh9gsu/p9ATt9OeXEe5gaqDlA
-avToXrDwazsOXDUxrkfX8F2nkm2SGQNMl1b8znqW1hTj0iNTdpksSlyvi33gPmkP
-XymEbZGJEGaDA0vChiCVaLeWmJC9Vv/JhJsCAwEAAaNvMG0wDAYDVR0TAQH/BAIw
-ADAdBgNVHQ4EFgQU0FJTXzFBp7mHgprYQYNoysYJ2g4wHwYDVR0jBBgwFoAUvJSY
-Ob9gwQmrCInY+i2C/xUtcewwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
-MA0GCSqGSIb3DQEBCwUAA4IBAQBIvAUr0/hMv8PYE3PfPdaJYfVAYegqz430Dm9i
-VrNmcAURK9kit25c1aMAFLqs8b07NFi8tTaPRsZzOD21UmJ/ncvEnp/OJ1B65NB9
-fNZz7No6CB9lhWwZK7KKCTq6eAlzwE8AqVmjEZFCm6chUi1pw71jhFJNBpzZbzrm
-TeKqb+DeFEtiM78jAU9oCVu0TfVc9sIqQNvLb9d9QVyjSY//vALGNLJz7OV7kN3u
-LoId6tic6XLLHJv+HLdh3etJ3Vb0+Li5EwWeypHL5lgUtWnop2bpuXzBpL/JTwmx
-vlurU26ZKp1h3KhMrsFAaI2cxYbjvV14D8AxHsUItYUtw+qP
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/duplicate_cn_2.p12 b/src/pki/testdata/ssl/certificates/duplicate_cn_2.p12
deleted file mode 100644
index 1966cfa..0000000
--- a/src/pki/testdata/ssl/certificates/duplicate_cn_2.p12
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/duplicate_cn_2.pem b/src/pki/testdata/ssl/certificates/duplicate_cn_2.pem
deleted file mode 100644
index aad7daf..0000000
--- a/src/pki/testdata/ssl/certificates/duplicate_cn_2.pem
+++ /dev/null
@@ -1,78 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 2 (0x2)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=B Root CA
- Validity
- Not Before: Aug 14 02:46:40 2014 GMT
- Not After : Aug 11 02:46:40 2024 GMT
- Subject: O=Bar, CN=Duplicate
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:ae:fc:af:a7:fa:a6:12:6f:5d:06:26:96:7c:33:
- d1:9f:53:a3:6e:e3:ea:e4:ba:d4:28:3c:f5:c3:60:
- 31:80:39:9b:df:ca:4f:08:0b:16:ee:fc:63:06:ae:
- ad:dd:77:3a:3e:63:28:be:c3:96:f7:9a:64:6f:b9:
- 6e:42:67:5b:12:3d:a3:97:d9:6f:5f:f4:06:a0:58:
- 52:57:34:d3:4e:48:91:a6:89:87:1e:0f:d1:f7:ea:
- 0e:40:67:bb:ac:c2:5f:bf:df:74:7a:55:42:e7:d5:
- 3a:0d:83:15:48:f5:a7:dc:2f:e2:ad:14:32:a4:b0:
- b0:c2:4f:1b:12:d4:d6:48:74:15:53:37:02:1b:5d:
- b6:9b:00:2c:2c:5e:0a:38:5c:5b:54:71:05:8e:5c:
- 76:7e:08:96:2f:44:5b:bd:4b:2e:c1:ce:b3:75:ce:
- 87:d8:2c:bb:fa:7d:01:3b:7d:39:e5:c4:7b:98:1a:
- a8:39:40:6a:f4:e8:5e:b0:f0:6b:3b:0e:5c:35:31:
- ae:47:d7:f0:5d:a7:92:6d:92:19:03:4c:97:56:fc:
- ce:7a:96:d6:14:e3:d2:23:53:76:99:2c:4a:5c:af:
- 8b:7d:e0:3e:69:0f:5f:29:84:6d:91:89:10:66:83:
- 03:4b:c2:86:20:95:68:b7:96:98:90:bd:56:ff:c9:
- 84:9b
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- D0:52:53:5F:31:41:A7:B9:87:82:9A:D8:41:83:68:CA:C6:09:DA:0E
- X509v3 Authority Key Identifier:
- keyid:BC:94:98:39:BF:60:C1:09:AB:08:89:D8:FA:2D:82:FF:15:2D:71:EC
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- Signature Algorithm: sha256WithRSAEncryption
- 39:4e:04:66:dd:24:5b:71:c4:aa:9b:e2:97:f1:02:63:43:aa:
- 3c:b5:a0:cb:9a:da:40:f5:b7:30:6d:04:14:c4:7a:e6:9f:8a:
- 89:23:3a:71:60:7e:8a:d8:07:aa:2c:fb:b3:27:1a:e6:cd:78:
- 1f:03:7b:6d:be:d1:67:4e:39:77:43:a6:e4:b1:ab:89:31:14:
- b5:b7:b0:88:fd:1f:e2:a8:9e:1f:b6:bf:f2:6e:a1:6b:13:3d:
- 57:98:1e:7c:a9:39:c7:27:99:97:3f:d4:e1:11:43:26:aa:05:
- 71:c2:9f:3f:92:b9:17:d5:3a:e1:ab:ca:59:06:fb:fd:18:b1:
- a8:b9:76:69:da:40:d7:f9:e9:86:d7:9c:94:bc:5d:5c:4f:9a:
- c6:80:15:05:da:d9:c8:9a:ad:7a:81:3f:a8:1f:63:db:14:04:
- 9e:2b:10:4e:14:99:02:6f:72:73:f4:b4:8c:18:3d:52:9f:35:
- 6d:48:c7:8d:55:8f:9b:68:c8:7e:a4:56:0b:e6:6a:19:b0:ab:
- ab:76:19:d4:02:01:eb:dd:9b:e1:78:b0:1f:11:83:38:b0:bf:
- 25:5a:0b:d7:c8:6f:f0:6f:1e:91:9a:62:8a:22:79:7d:1f:6e:
- b6:e3:1a:5c:f9:aa:8e:f0:a4:d2:55:fc:ea:e5:48:3c:1e:6a:
- e5:a4:4e:01
------BEGIN CERTIFICATE-----
-MIIDIDCCAgigAwIBAgIBAjANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAlCIFJv
-b3QgQ0EwHhcNMTQwODE0MDI0NjQwWhcNMjQwODExMDI0NjQwWjAiMQwwCgYDVQQK
-DANCYXIxEjAQBgNVBAMMCUR1cGxpY2F0ZTCCASIwDQYJKoZIhvcNAQEBBQADggEP
-ADCCAQoCggEBAK78r6f6phJvXQYmlnwz0Z9To27j6uS61Cg89cNgMYA5m9/KTwgL
-Fu78Ywaurd13Oj5jKL7DlveaZG+5bkJnWxI9o5fZb1/0BqBYUlc0005IkaaJhx4P
-0ffqDkBnu6zCX7/fdHpVQufVOg2DFUj1p9wv4q0UMqSwsMJPGxLU1kh0FVM3Ahtd
-tpsALCxeCjhcW1RxBY5cdn4Ili9EW71LLsHOs3XOh9gsu/p9ATt9OeXEe5gaqDlA
-avToXrDwazsOXDUxrkfX8F2nkm2SGQNMl1b8znqW1hTj0iNTdpksSlyvi33gPmkP
-XymEbZGJEGaDA0vChiCVaLeWmJC9Vv/JhJsCAwEAAaNvMG0wDAYDVR0TAQH/BAIw
-ADAdBgNVHQ4EFgQU0FJTXzFBp7mHgprYQYNoysYJ2g4wHwYDVR0jBBgwFoAUvJSY
-Ob9gwQmrCInY+i2C/xUtcewwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
-MA0GCSqGSIb3DQEBCwUAA4IBAQA5TgRm3SRbccSqm+KX8QJjQ6o8taDLmtpA9bcw
-bQQUxHrmn4qJIzpxYH6K2AeqLPuzJxrmzXgfA3ttvtFnTjl3Q6bksauJMRS1t7CI
-/R/iqJ4ftr/ybqFrEz1XmB58qTnHJ5mXP9ThEUMmqgVxwp8/krkX1Trhq8pZBvv9
-GLGouXZp2kDX+emG15yUvF1cT5rGgBUF2tnImq16gT+oH2PbFASeKxBOFJkCb3Jz
-9LSMGD1SnzVtSMeNVY+baMh+pFYL5moZsKurdhnUAgHr3ZvheLAfEYM4sL8lWgvX
-yG/wbx6RmmKKInl9H2624xpc+aqO8KTSVfzq5Ug8HmrlpE4B
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/ec-prime256v1-1.key b/src/pki/testdata/ssl/certificates/ec-prime256v1-1.key
deleted file mode 100644
index 43ba034..0000000
--- a/src/pki/testdata/ssl/certificates/ec-prime256v1-1.key
+++ /dev/null
@@ -1,5 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg8YeFfq6kLtUZziTV
-eBxKf4sdzWhBIrmoa7R6IQ/L0g2hRANCAATwrGqIPnPdqDreHFlZqECUQ0AjHbyi
-NWFYmGc3FkPsCS1MWu2WhMYdw7UuLDdMKge7Q6IWMsHum/4G04hRdTYL
------END PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/ec-prime256v1-2.key b/src/pki/testdata/ssl/certificates/ec-prime256v1-2.key
deleted file mode 100644
index bfdcc94..0000000
--- a/src/pki/testdata/ssl/certificates/ec-prime256v1-2.key
+++ /dev/null
@@ -1,5 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgSCf4GodSLqPExkQ0
-Ik8+89ysmrauzOM+YOw7a6XXxpOhRANCAASTFjEdz9MMLzVvqiKJ6hiEmG7+tfn1
-6r5Odwu8dkIr69J5RljzPLAbHXN4kXF/ohZbBvKnX+1cEUDO+kBtAHMB
------END PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/ec-prime256v1-3.key b/src/pki/testdata/ssl/certificates/ec-prime256v1-3.key
deleted file mode 100644
index de0b671..0000000
--- a/src/pki/testdata/ssl/certificates/ec-prime256v1-3.key
+++ /dev/null
@@ -1,5 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgSFwCrUE0q+J8WdaB
-wuQtvtQuvSVy4xrVUVKbg/b8qmShRANCAAQ0MQNe+C3m+ZxRjUC2VHut66EhAqDQ
-EXOCJ3se7ctMpdmVa2ml/4cjz3lnrfbSYe/mM5v3hDN8u8dYmk7zDoL3
------END PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/eku-test-root.pem b/src/pki/testdata/ssl/certificates/eku-test-root.pem
deleted file mode 100644
index c233e40..0000000
--- a/src/pki/testdata/ssl/certificates/eku-test-root.pem
+++ /dev/null
@@ -1,77 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 55:72:d4:d8:57:fc:9c:cf:51:b8:6c:e7:a7:d1:a6:f3:b3:f1:25:fa
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN = 2048 RSA Test Root CA
- Validity
- Not Before: Feb 17 17:08:50 2023 GMT
- Not After : Feb 14 17:08:50 2033 GMT
- Subject: CN = 2048 RSA Test Root CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:d0:bc:d5:52:0a:01:4c:04:65:37:00:73:17:af:
- 1a:53:d5:0a:b1:9c:c0:5b:20:ff:c0:b4:bd:f2:d4:
- b2:1d:2c:a5:c3:d7:eb:68:b7:f7:ab:2d:b3:6c:00:
- c2:7a:b0:f7:5e:b1:8b:29:92:79:08:37:f6:ec:46:
- 2d:66:29:7c:66:8c:d4:54:f0:35:4d:ad:1e:e6:ef:
- 4f:43:9d:96:2f:78:49:66:eb:ea:4f:b9:e9:eb:27:
- 33:6e:03:1f:3b:c1:e4:6d:bb:a9:68:62:1c:fd:78:
- 0d:57:f2:58:89:16:4f:8d:1d:2d:94:2a:ea:b8:1a:
- 1b:57:b8:ad:8f:67:44:23:04:7f:c9:1a:1c:4a:f3:
- 19:15:1a:39:a6:fc:c9:17:ae:5e:40:97:e2:b3:ec:
- 02:4c:1b:65:0e:99:6a:d4:fe:c7:04:56:14:0c:8e:
- 0f:ee:e8:fb:4e:63:c4:cf:4a:36:ac:f5:a6:f7:1d:
- 26:07:e9:33:a9:f3:31:ee:1d:27:fc:15:10:a5:83:
- 7e:59:26:6e:24:32:87:af:19:31:6c:99:24:05:d9:
- 55:71:03:b8:b3:b6:75:f8:ee:04:ff:04:7f:b0:b6:
- 57:ad:24:e3:a6:f9:46:2c:f7:b5:53:31:d6:49:c6:
- c3:1e:7f:a4:f0:6d:47:32:c9:8a:ff:f3:b6:7b:fd:
- d3:7f
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- D5:28:55:87:C7:A3:BF:D7:C4:CE:BE:3D:01:D2:BE:8B:7C:E4:E2:E2
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 17:28:d3:4e:0f:70:db:86:b8:08:e2:0d:92:d1:4c:f6:32:70:
- 52:6b:3f:1f:96:a0:bd:a4:d4:f8:ed:b5:a4:9e:0a:ef:45:09:
- e4:1f:8a:af:50:2d:03:4e:1c:ed:46:71:3d:91:d6:a9:0f:8f:
- bb:4f:38:a4:3c:18:2f:ff:1f:07:9e:17:06:a6:9a:f9:4d:01:
- f6:79:c9:aa:fe:01:90:79:dd:d3:eb:6d:ea:0b:b9:6c:df:9c:
- 1f:4f:31:25:70:71:58:9c:62:6a:5a:85:7d:8f:20:ae:97:d4:
- e0:69:8a:79:4d:48:34:fe:c0:99:98:c3:33:ce:f3:07:80:c2:
- 4b:95:a3:2e:ba:cb:ee:d7:4d:a3:e1:88:9e:71:8b:64:47:83:
- 02:02:72:b0:46:ca:4f:e3:b1:f4:2c:f1:65:58:09:7a:81:18:
- b7:35:55:50:6a:37:0a:0f:87:d3:d2:b2:2f:6f:93:e1:7d:e2:
- ca:50:1f:a9:a4:6d:bc:40:1a:6e:d4:55:5e:99:e0:9c:77:7c:
- b0:06:d3:7b:0b:cb:a2:9a:3a:9a:06:b6:59:3d:50:d5:d0:7b:
- e0:51:c4:88:38:24:ba:80:3c:f0:42:07:24:c3:5c:e2:b5:6e:
- bf:8b:37:b1:df:e9:7e:6e:33:d6:b2:af:d5:51:62:eb:b0:5a:
- 52:54:52:a3
------BEGIN CERTIFICATE-----
-MIIDEDCCAfigAwIBAgIUVXLU2Ff8nM9RuGznp9Gm87PxJfowDQYJKoZIhvcNAQEL
-BQAwIDEeMBwGA1UEAwwVMjA0OCBSU0EgVGVzdCBSb290IENBMB4XDTIzMDIxNzE3
-MDg1MFoXDTMzMDIxNDE3MDg1MFowIDEeMBwGA1UEAwwVMjA0OCBSU0EgVGVzdCBS
-b290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0LzVUgoBTARl
-NwBzF68aU9UKsZzAWyD/wLS98tSyHSylw9fraLf3qy2zbADCerD3XrGLKZJ5CDf2
-7EYtZil8ZozUVPA1Ta0e5u9PQ52WL3hJZuvqT7np6yczbgMfO8HkbbupaGIc/XgN
-V/JYiRZPjR0tlCrquBobV7itj2dEIwR/yRocSvMZFRo5pvzJF65eQJfis+wCTBtl
-Dplq1P7HBFYUDI4P7uj7TmPEz0o2rPWm9x0mB+kzqfMx7h0n/BUQpYN+WSZuJDKH
-rxkxbJkkBdlVcQO4s7Z1+O4E/wR/sLZXrSTjpvlGLPe1UzHWScbDHn+k8G1HMsmK
-//O2e/3TfwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTVKFWH
-x6O/18TOvj0B0r6LfOTi4jAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQAD
-ggEBABco004PcNuGuAjiDZLRTPYycFJrPx+WoL2k1PjttaSeCu9FCeQfiq9QLQNO
-HO1GcT2R1qkPj7tPOKQ8GC//HweeFwammvlNAfZ5yar+AZB53dPrbeoLuWzfnB9P
-MSVwcVicYmpahX2PIK6X1OBpinlNSDT+wJmYwzPO8weAwkuVoy66y+7XTaPhiJ5x
-i2RHgwICcrBGyk/jsfQs8WVYCXqBGLc1VVBqNwoPh9PSsi9vk+F94spQH6mkbbxA
-Gm7UVV6Z4Jx3fLAG03sLy6KaOpoGtlk9UNXQe+BRxIg4JLqAPPBCByTDXOK1br+L
-N7Hf6X5uM9ayr9VRYuuwWlJUUqM=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/ev_test.pem b/src/pki/testdata/ssl/certificates/ev_test.pem
deleted file mode 100644
index 36fc814..0000000
--- a/src/pki/testdata/ssl/certificates/ev_test.pem
+++ /dev/null
@@ -1,70 +0,0 @@
-Certificate:
- Data:
- Version: 1 (0x0)
- Serial Number:
- 05:1a:d9:14:e2:4e:b8:9f:be:d0:25:9e:80:e4:f8:22:bc:71:9d:be
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C = US, ST = California, L = Mountain View, O = Test Org
- Validity
- Not Before: Oct 3 17:20:32 2022 GMT
- Not After : Oct 2 17:20:32 2024 GMT
- Subject: C = US, ST = California, L = Mountain View, O = Test Org
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:9f:e4:ed:a7:ff:2d:7e:3b:26:5a:d2:5f:5e:81:
- 5d:b7:b0:c7:b6:7c:dc:0b:5c:b2:f5:0f:f6:ee:7b:
- 34:cc:4b:91:c4:bf:36:ea:0c:4c:c2:b6:d8:8f:5d:
- 35:cc:1e:63:43:a8:3f:e6:36:47:1a:fa:c7:30:89:
- 8d:5f:cd:74:66:69:1c:50:69:6d:b6:ac:25:95:ef:
- 49:fb:1b:7f:13:45:1b:8a:2d:88:06:4c:b4:36:20:
- a2:6e:44:e5:f9:fe:e4:84:de:93:64:7f:22:22:46:
- 3e:5c:f6:c3:6b:a2:66:05:27:a6:29:91:3d:70:8b:
- b9:f3:07:85:01:e7:79:25:aa:8f:88:b4:8f:6a:17:
- a7:5f:23:5a:50:5e:f0:ce:52:f5:1c:a5:b0:d2:76:
- 8a:f7:75:7f:0e:57:e9:c3:74:2c:f1:ad:25:9a:4c:
- 4b:ad:f9:91:a7:e2:18:db:19:79:7c:6f:1d:8f:c0:
- ad:f7:39:ae:6b:1c:75:9e:30:70:04:81:f9:33:25:
- 38:aa:df:0d:ad:73:2e:b1:5c:03:99:a0:7f:01:db:
- 62:c9:77:ed:da:9b:e6:92:0c:a8:f9:51:f0:66:0b:
- 8c:0f:00:a5:fa:5d:9b:14:e0:5f:57:0a:75:a5:cc:
- a2:ba:f9:06:9b:bd:6b:d9:d7:c1:e0:02:b4:d0:c2:
- b9:1f
- Exponent: 65537 (0x10001)
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 42:f5:17:0a:da:d7:5c:2c:1f:af:04:99:e9:d9:d6:4c:0c:d6:
- cb:ac:6d:0d:4c:0f:b0:3a:18:36:ab:68:d2:5f:8e:d9:e0:13:
- a2:64:bf:72:33:7f:86:c2:26:d8:40:5c:af:38:0b:5b:22:30:
- dc:88:4f:5f:73:b0:0b:60:b9:30:be:8d:b9:54:9e:f9:2d:c8:
- fb:d1:07:49:56:16:7a:8f:f2:7e:c4:c0:9b:be:f4:2d:a7:4c:
- de:eb:cc:d5:fe:6f:ab:cf:65:15:f6:ab:1f:ed:1f:5d:09:4a:
- 65:aa:3e:5c:55:af:21:d9:ea:2c:4e:d4:f9:37:70:84:12:f5:
- 99:fb:89:d0:eb:9d:d2:62:b6:03:43:0f:e7:72:22:16:58:58:
- a3:7c:b8:ee:f1:fd:76:73:5d:31:08:82:68:78:9b:9c:88:3e:
- 53:b8:76:0e:a4:9e:36:95:7f:f5:18:d5:32:fb:08:54:1c:89:
- 8e:73:80:13:99:39:32:79:ba:c1:00:aa:d3:ab:05:a6:d1:27:
- fb:22:95:68:2f:c1:7a:5a:92:73:6a:de:0e:b4:c5:c8:9f:e6:
- 4e:8b:68:d2:23:5d:3c:16:54:02:dd:90:12:4e:fb:2c:a5:3b:
- 42:46:bb:67:e6:bb:1b:f6:94:75:30:91:28:cd:a1:db:6e:1d:
- be:db:be:f8
------BEGIN CERTIFICATE-----
-MIIDITCCAgkCFAUa2RTiTrifvtAlnoDk+CK8cZ2+MA0GCSqGSIb3DQEBCwUAME0x
-CzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3Vu
-dGFpbiBWaWV3MREwDwYDVQQKDAhUZXN0IE9yZzAeFw0yMjEwMDMxNzIwMzJaFw0y
-NDEwMDIxNzIwMzJaME0xCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlh
-MRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MREwDwYDVQQKDAhUZXN0IE9yZzCCASIw
-DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ/k7af/LX47JlrSX16BXbewx7Z8
-3AtcsvUP9u57NMxLkcS/NuoMTMK22I9dNcweY0OoP+Y2Rxr6xzCJjV/NdGZpHFBp
-bbasJZXvSfsbfxNFG4otiAZMtDYgom5E5fn+5ITek2R/IiJGPlz2w2uiZgUnpimR
-PXCLufMHhQHneSWqj4i0j2oXp18jWlBe8M5S9RylsNJ2ivd1fw5X6cN0LPGtJZpM
-S635kafiGNsZeXxvHY/Arfc5rmscdZ4wcASB+TMlOKrfDa1zLrFcA5mgfwHbYsl3
-7dqb5pIMqPlR8GYLjA8ApfpdmxTgX1cKdaXMorr5Bpu9a9nXweACtNDCuR8CAwEA
-ATANBgkqhkiG9w0BAQsFAAOCAQEAQvUXCtrXXCwfrwSZ6dnWTAzWy6xtDUwPsDoY
-Nqto0l+O2eATomS/cjN/hsIm2EBcrzgLWyIw3IhPX3OwC2C5ML6NuVSe+S3I+9EH
-SVYWeo/yfsTAm770LadM3uvM1f5vq89lFfarH+0fXQlKZao+XFWvIdnqLE7U+Tdw
-hBL1mfuJ0Oud0mK2A0MP53IiFlhYo3y47vH9dnNdMQiCaHibnIg+U7h2DqSeNpV/
-9RjVMvsIVByJjnOAE5k5Mnm6wQCq06sFptEn+yKVaC/BelqSc2reDrTFyJ/mToto
-0iNdPBZUAt2QEk77LKU7Qka7Z+a7G/aUdTCRKM2h224dvtu++A==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/ev_test_state_only.pem b/src/pki/testdata/ssl/certificates/ev_test_state_only.pem
deleted file mode 100644
index 48f154b..0000000
--- a/src/pki/testdata/ssl/certificates/ev_test_state_only.pem
+++ /dev/null
@@ -1,69 +0,0 @@
-Certificate:
- Data:
- Version: 1 (0x0)
- Serial Number:
- 08:e7:72:d8:3b:cb:68:18:0b:32:f6:09:9f:39:d9:79:bd:af:c7:e0
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C = US, ST = California, O = Test Org
- Validity
- Not Before: Oct 3 17:20:32 2022 GMT
- Not After : Oct 2 17:20:32 2024 GMT
- Subject: C = US, ST = California, O = Test Org
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:a4:1f:f6:07:e1:9b:b1:eb:c6:5a:45:70:e2:80:
- c0:71:48:d3:2e:d8:1e:38:a0:4a:5e:d0:28:d0:81:
- e8:3d:ec:bf:c9:94:c2:e8:1d:7c:c2:fd:30:e6:d3:
- 72:f3:e5:83:95:df:ba:94:82:db:7b:c7:af:2e:c4:
- 6e:96:fa:8b:75:7c:78:33:3b:69:8f:89:aa:68:14:
- e5:d8:a8:22:51:85:90:65:9b:98:27:8d:f0:a7:ad:
- 3f:b0:46:47:67:8c:a0:6f:65:de:c4:5c:f0:e3:4c:
- ed:d4:63:21:dc:d4:77:f6:98:40:95:f3:38:c7:12:
- fe:5a:b0:0e:78:3d:c4:ea:c6:b8:56:51:55:9f:64:
- 08:22:63:a1:52:01:7c:a5:95:b4:17:61:27:a0:e0:
- aa:28:df:21:22:c5:22:66:e9:a8:0e:7a:81:d1:c0:
- b8:8d:95:17:9a:71:2c:67:2d:ef:51:cf:31:3b:19:
- e2:b0:5f:3f:05:41:ac:7c:ee:4b:64:db:0e:56:97:
- 93:f5:ce:9a:62:28:ef:e9:a2:15:91:10:0a:a6:67:
- 08:ad:e3:e2:b4:9e:50:d7:c2:52:76:0d:ca:a4:36:
- 8b:0b:41:f9:0d:c6:13:cb:6b:97:52:f3:02:19:aa:
- 4f:96:83:9f:c6:ff:60:ef:ca:4e:59:ba:cd:c1:56:
- 1e:55
- Exponent: 65537 (0x10001)
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 7a:50:d2:45:b9:8c:3c:1d:90:a4:fb:cf:15:fd:88:76:39:ed:
- 9d:70:d5:81:58:1f:eb:ad:2f:dd:5d:cd:3b:be:bb:90:0f:5b:
- c9:89:8d:d4:43:60:a9:2e:c1:38:f0:11:44:ab:c6:89:21:d3:
- 46:75:1a:d9:bd:95:15:09:a0:82:b3:e2:86:e9:30:c1:41:4f:
- 56:6c:3f:2d:b7:f8:15:7c:2e:67:b1:91:41:2b:63:77:2c:8e:
- ee:66:00:c6:1f:5f:d2:38:49:2a:f3:38:6c:42:c6:26:b7:36:
- a8:63:ac:89:ef:46:0a:c3:79:fd:b9:94:d9:37:7a:c2:2d:33:
- 61:2b:6d:58:33:cb:bd:98:3c:70:37:e5:12:b9:b5:7a:8f:85:
- 73:f5:fc:6a:7e:06:8c:91:2d:97:db:84:f6:ba:9f:39:5f:84:
- f8:37:73:0f:29:35:bb:0c:bd:49:6e:b3:67:4c:f2:e2:c7:7b:
- 27:45:78:19:fa:2b:ba:f8:fc:ce:31:9e:b5:91:61:27:b7:01:
- 5f:ac:7a:41:c0:5b:da:f3:cc:72:21:3a:11:dd:08:8b:c3:d2:
- d3:1e:6d:0e:e0:e9:3d:8b:aa:67:a2:6f:c6:02:ac:e8:b2:7e:
- 69:60:e2:7e:40:56:32:d6:76:42:ed:e5:56:db:07:e6:4f:39:
- 74:3f:de:8b
------BEGIN CERTIFICATE-----
-MIIC8TCCAdkCFAjnctg7y2gYCzL2CZ852Xm9r8fgMA0GCSqGSIb3DQEBCwUAMDUx
-CzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMREwDwYDVQQKDAhUZXN0
-IE9yZzAeFw0yMjEwMDMxNzIwMzJaFw0yNDEwMDIxNzIwMzJaMDUxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMREwDwYDVQQKDAhUZXN0IE9yZzCCASIw
-DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKQf9gfhm7HrxlpFcOKAwHFI0y7Y
-HjigSl7QKNCB6D3sv8mUwugdfML9MObTcvPlg5XfupSC23vHry7Ebpb6i3V8eDM7
-aY+JqmgU5dioIlGFkGWbmCeN8KetP7BGR2eMoG9l3sRc8ONM7dRjIdzUd/aYQJXz
-OMcS/lqwDng9xOrGuFZRVZ9kCCJjoVIBfKWVtBdhJ6DgqijfISLFImbpqA56gdHA
-uI2VF5pxLGct71HPMTsZ4rBfPwVBrHzuS2TbDlaXk/XOmmIo7+miFZEQCqZnCK3j
-4rSeUNfCUnYNyqQ2iwtB+Q3GE8trl1LzAhmqT5aDn8b/YO/KTlm6zcFWHlUCAwEA
-ATANBgkqhkiG9w0BAQsFAAOCAQEAelDSRbmMPB2QpPvPFf2IdjntnXDVgVgf660v
-3V3NO767kA9byYmN1ENgqS7BOPARRKvGiSHTRnUa2b2VFQmggrPihukwwUFPVmw/
-Lbf4FXwuZ7GRQStjdyyO7mYAxh9f0jhJKvM4bELGJrc2qGOsie9GCsN5/bmU2Td6
-wi0zYSttWDPLvZg8cDflErm1eo+Fc/X8an4GjJEtl9uE9rqfOV+E+DdzDyk1uwy9
-SW6zZ0zy4sd7J0V4Gforuvj8zjGetZFhJ7cBX6x6QcBb2vPMciE6Ed0Ii8PS0x5t
-DuDpPYuqZ6JvxgKs6LJ+aWDifkBWMtZ2Qu3lVtsH5k85dD/eiw==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/expired_cert.pem b/src/pki/testdata/ssl/certificates/expired_cert.pem
deleted file mode 100644
index 0918e46..0000000
--- a/src/pki/testdata/ssl/certificates/expired_cert.pem
+++ /dev/null
@@ -1,113 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDDRq7weUiGT7XM
-lZAosAKK0m8PeYfDwrrz6wqTSmXpJS8BzINzyIBa6zoIETKvhcG84QeDdAoCAft9
-nV6uPLxzzmuRhWwiAarYIuSg7qiiNgD66IjA05sWPMHBuWSD7Eb2UyxLCME9kxH+
-LFcxDGBOrTf8NSKpr7hMaZkhpY8MyKqWKbaF1oXUH7CqQ+95HDgc2a05d9+xV2cy
-EVTTG8VAvf8j0nVSxCcSrOfqH9+v488diuGdJqxt7yH3jvX9BfqzKlUEv7J2GIiB
-F3zztOZUj8RLzbLy18eKMeCfjxjzxnxYmfT6chQadzaAUwxHlPSKskKIuFj8T/Fl
-G4EBfabrAgMBAAECggEAOq5M97qajrH5Ycc4EOIDgZAHC9FreOpVn+LrxKNAyLUB
-0TqR7gM8fxXc1HvGjXRWadn9lgUS1NOfrXnS7+0UfIB1Vr+PZRC3NEgYCDxvtH8i
-AERMhBWSrzYGy55YlEQ2duM7ljjFSSme6JCOixC7CCmJf2LATdmeOmgpOjE0MZS9
-Cz6W1AEw949YIsNCyBuG54Pf50RR/uwk8a9bctOlL7fmMoHETslgmwVYHGoY2TQH
-WsLHcjEpVPmyigbkGQs6xteCeKLo+SN+3cdlzZVkhrRm85zXoY9Fk08Ll21cRHOF
-waGoGg9GYQDrE1aWXKZqMoAL26TvsFa4KRUcm7/ZEQKBgQDsBRjBzhprehSVaFeM
-8JXL0DKAk8bLm+kFo2CoLmNphUNk43q7MnfM1Dp3HM4UEq2AIA8oKtrI1aqc7ChT
-JDMKA57nNQ1SSlFhnR0maFRD32h8BlFW6qNpl1S0vh/clDT3keTXVXpiNtV4z0uL
-r5kKE/j4ya91nJRoFuZZaQz0hQKBgQDTzpuTN+dMcI2r1GcTA6wonRshypRi8d1K
-DsBPcGX/SuT8iyorGvJh1IG9FSYM+0liN99fA3xu3PC8NyL2WkaN+KWKJaCf0BqN
-fLYZb9s2b4ae3qrTzGyIjS26DmX1ZuBkp2nvCLqlfBDaukn03ZiRQOe9zeUmYS7h
-x0nnp+CArwKBgAzQQgXTkK+hExkBby9hqGBGT1eXrkVDk6UQt6Cp1A/Ygk4p43Hi
-TYq7QulQkQeZ8/1uwCPoH7SjlP2r/Ix2/KZgh/H5eV2sVzq7cuew5lJBAMUq+qOD
-XZfP9XNSlxw8l5uROiFOrLREUdabOni88cwQRYYMPRBfjdcQ1zSndWKZAoGBAIBy
-i2Z8QIjauQ+7f8bIM19t50ZW1CYtB0YiK/4A69omUTfWLXx2mwc5GHTSnoDA43/s
-4kl8k7mnw1ZhGZLMrHzsjXd52i8QxQmI1+YVL5uThtBRuMc48ZjeBR0QHkT0XqCr
-5lJPuOEinBYJY1BcEmoEMoWol47u4L+LXAZgiIWBAoGAEm+mJyT22ajB4JK+Zizm
-qyY2YF9+XU4aRN+zuAYX6yVulK6wLF4g3YWEEP2YdFICMZa7AbuQK9t6RXMXH9/C
-n64w/TBNvihKkAb9NqFFjqAE1DqTPeeusoaJ7kHfdF12F7bUNFbvixk+x8bt9CQC
-9p8zmBjX4cGflRSpat09lr4=
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:65
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Jan 1 00:00:00 2006 GMT
- Not After : Jan 1 00:00:00 2007 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:c3:46:ae:f0:79:48:86:4f:b5:cc:95:90:28:b0:
- 02:8a:d2:6f:0f:79:87:c3:c2:ba:f3:eb:0a:93:4a:
- 65:e9:25:2f:01:cc:83:73:c8:80:5a:eb:3a:08:11:
- 32:af:85:c1:bc:e1:07:83:74:0a:02:01:fb:7d:9d:
- 5e:ae:3c:bc:73:ce:6b:91:85:6c:22:01:aa:d8:22:
- e4:a0:ee:a8:a2:36:00:fa:e8:88:c0:d3:9b:16:3c:
- c1:c1:b9:64:83:ec:46:f6:53:2c:4b:08:c1:3d:93:
- 11:fe:2c:57:31:0c:60:4e:ad:37:fc:35:22:a9:af:
- b8:4c:69:99:21:a5:8f:0c:c8:aa:96:29:b6:85:d6:
- 85:d4:1f:b0:aa:43:ef:79:1c:38:1c:d9:ad:39:77:
- df:b1:57:67:32:11:54:d3:1b:c5:40:bd:ff:23:d2:
- 75:52:c4:27:12:ac:e7:ea:1f:df:af:e3:cf:1d:8a:
- e1:9d:26:ac:6d:ef:21:f7:8e:f5:fd:05:fa:b3:2a:
- 55:04:bf:b2:76:18:88:81:17:7c:f3:b4:e6:54:8f:
- c4:4b:cd:b2:f2:d7:c7:8a:31:e0:9f:8f:18:f3:c6:
- 7c:58:99:f4:fa:72:14:1a:77:36:80:53:0c:47:94:
- f4:8a:b2:42:88:b8:58:fc:4f:f1:65:1b:81:01:7d:
- a6:eb
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- F3:9E:DE:55:DE:AD:DA:14:A3:B8:AA:E5:3A:D3:84:E6:88:B1:7E:C6
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 36:3c:43:bc:10:33:eb:68:3a:c5:9c:24:4c:b4:ce:59:6f:88:
- 13:02:e4:a4:31:e4:f2:8d:cb:b3:f1:bb:56:a3:c5:bb:f9:e9:
- 28:3b:88:97:c4:4a:fa:79:df:23:60:8b:7f:32:14:21:43:de:
- 60:87:21:e9:de:9a:b6:42:8c:e5:fc:c5:bd:f2:08:f8:3a:82:
- 00:b7:ed:14:3a:76:c1:4b:ca:6d:17:32:27:e3:4e:32:d7:08:
- 17:03:79:77:3f:81:a1:39:c9:d3:4e:32:83:65:18:ca:f7:fb:
- 1a:6c:54:27:2c:e2:1e:82:dd:c1:ef:a9:cf:01:d7:4e:e2:ca:
- e1:2e:3f:64:7d:ce:4a:45:22:60:c3:cf:bd:96:91:54:99:9b:
- 99:12:d7:1c:7d:3e:54:8a:00:f7:00:c4:e9:6b:61:2b:87:f0:
- 6a:51:c0:62:ce:24:58:6a:af:bb:76:34:cd:6a:25:84:94:2b:
- c2:66:9f:e2:50:f6:d0:6a:1b:6a:be:de:ed:db:ce:69:1b:17:
- 87:91:36:46:8d:cf:6a:82:38:06:b2:99:c4:da:10:17:77:90:
- 15:e1:c0:78:76:72:fd:12:65:06:1e:b6:26:eb:bb:99:a4:42:
- b3:ef:14:73:2d:5d:03:ee:f7:b4:17:9d:c6:18:dd:71:d3:81:
- 88:11:ba:7e
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwmUwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0wNjAxMDEwMDAwMDBaFw0wNzAxMDEwMDAwMDBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDDRq7weUiGT7XMlZAosAKK0m8PeYfDwrrz
-6wqTSmXpJS8BzINzyIBa6zoIETKvhcG84QeDdAoCAft9nV6uPLxzzmuRhWwiAarY
-IuSg7qiiNgD66IjA05sWPMHBuWSD7Eb2UyxLCME9kxH+LFcxDGBOrTf8NSKpr7hM
-aZkhpY8MyKqWKbaF1oXUH7CqQ+95HDgc2a05d9+xV2cyEVTTG8VAvf8j0nVSxCcS
-rOfqH9+v488diuGdJqxt7yH3jvX9BfqzKlUEv7J2GIiBF3zztOZUj8RLzbLy18eK
-MeCfjxjzxnxYmfT6chQadzaAUwxHlPSKskKIuFj8T/FlG4EBfabrAgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTznt5V3q3aFKO4quU604TmiLF+xjAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEANjxDvBAz62g6xZwkTLTOWW+IEwLkpDHk8o3Ls/G7VqPFu/npKDuIl8RK+nnf
-I2CLfzIUIUPeYIch6d6atkKM5fzFvfII+DqCALftFDp2wUvKbRcyJ+NOMtcIFwN5
-dz+BoTnJ004yg2UYyvf7GmxUJyziHoLdwe+pzwHXTuLK4S4/ZH3OSkUiYMPPvZaR
-VJmbmRLXHH0+VIoA9wDE6WthK4fwalHAYs4kWGqvu3Y0zWolhJQrwmaf4lD20Gob
-ar7e7dvOaRsXh5E2Ro3PaoI4BrKZxNoQF3eQFeHAeHZy/RJlBh62Juu7maRCs+8U
-cy1dA+73tBedxhjdcdOBiBG6fg==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/foaf.me.chromium-test-cert.der b/src/pki/testdata/ssl/certificates/foaf.me.chromium-test-cert.der
deleted file mode 100644
index da0afc6..0000000
--- a/src/pki/testdata/ssl/certificates/foaf.me.chromium-test-cert.der
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/google.binary.p7b b/src/pki/testdata/ssl/certificates/google.binary.p7b
deleted file mode 100644
index 052e388..0000000
--- a/src/pki/testdata/ssl/certificates/google.binary.p7b
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/google.chain.pem b/src/pki/testdata/ssl/certificates/google.chain.pem
deleted file mode 100644
index e78af71..0000000
--- a/src/pki/testdata/ssl/certificates/google.chain.pem
+++ /dev/null
@@ -1,38 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBM
-MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg
-THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wOTEyMTgwMDAwMDBaFw0x
-MTEyMTgyMzU5NTlaMGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh
-MRYwFAYDVQQHFA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKFApHb29nbGUgSW5jMRcw
-FQYDVQQDFA53d3cuZ29vZ2xlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
-gYEA6PmGD5D6htffvXImttdEAoN4c9kCKO+IRTn7EOh8rqk41XXGOOsKFQebg+jN
-gtXj9xVoRaELGYW84u+E593y17iYwqG7tcFR39SDAqc9BkJb4SLD3muFXxzW2k6L
-05vuuWciKh0R73mkszeK9P4Y/bz5RiNQl/Os/CRGK1w7t0UCAwEAAaOB5zCB5DAM
-BgNVHRMBAf8EAjAAMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwudGhhd3Rl
-LmNvbS9UaGF3dGVTR0NDQS5jcmwwKAYDVR0lBCEwHwYIKwYBBQUHAwEGCCsGAQUF
-BwMCBglghkgBhvhCBAEwcgYIKwYBBQUHAQEEZjBkMCIGCCsGAQUFBzABhhZodHRw
-Oi8vb2NzcC50aGF3dGUuY29tMD4GCCsGAQUFBzAChjJodHRwOi8vd3d3LnRoYXd0
-ZS5jb20vcmVwb3NpdG9yeS9UaGF3dGVfU0dDX0NBLmNydDANBgkqhkiG9w0BAQUF
-AAOBgQCfQ89bxFApsb/isJr/aiEdLRLDLE5a+RLizrmCUi3nHX4adpaQedEkUjh5
-u2ONgJd8IyAPkU0Wueru9G2Jysa9zCRo1kNbzipYvzwY4OA8Ys+WAi0oR1A04Se6
-z5nRUP8pJcA2NhUzUnC+MY+f6H/nEQyNv4SgQhqAibAxWEEHXw==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDIzCCAoygAwIBAgIEMAAAAjANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJV
-UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsTLkNsYXNzIDMgUHVi
-bGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNTEzMDAw
-MDAwWhcNMTQwNTEyMjM1OTU5WjBMMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhh
-d3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBD
-QTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1NNn0I0Vf67NMf59HZGhPwtx
-PKzMyGT7Y/wySweUvW+Aui/hBJPAM/wJMyPpC3QrccQDxtLN4i/1CWPN/0ilAL/g
-5/OIty0y3pg25gqtAHvEZEo7hHUD8nCSfQ5i9SGraTaEMXWQ+L/HbIgbBpV8yeWo
-3nWhLHpo39XKHIdYYBkCAwEAAaOB/jCB+zASBgNVHRMBAf8ECDAGAQH/AgEAMAsG
-A1UdDwQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwKAYDVR0RBCEwH6QdMBsxGTAX
-BgNVBAMTEFByaXZhdGVMYWJlbDMtMTUwMQYDVR0fBCowKDAmoCSgIoYgaHR0cDov
-L2NybC52ZXJpc2lnbi5jb20vcGNhMy5jcmwwMgYIKwYBBQUHAQEEJjAkMCIGCCsG
-AQUFBzABhhZodHRwOi8vb2NzcC50aGF3dGUuY29tMDQGA1UdJQQtMCsGCCsGAQUF
-BwMBBggrBgEFBQcDAgYJYIZIAYb4QgQBBgpghkgBhvhFAQgBMA0GCSqGSIb3DQEB
-BQUAA4GBAFWsY+reod3SkF+fC852vhNRj5PZBSvIG3dLrWlQoe7e3P3bB+noOZTc
-q3J5Lwa/q4FwxKjt6lM07e8eU9kGx1Yr0Vz00YqOtCuxN5BICEIlxT6Ky3/rbwTR
-bcV0oveifHtgPHfNDs5IAn8BL7abN+AqKjbc1YXWrOU/VG+WHgWv
------END CERTIFICATE----- \ No newline at end of file
diff --git a/src/pki/testdata/ssl/certificates/google.pem_cert.p7b b/src/pki/testdata/ssl/certificates/google.pem_cert.p7b
deleted file mode 100644
index ba80fb0..0000000
--- a/src/pki/testdata/ssl/certificates/google.pem_cert.p7b
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGeQYJKoZIhvcNAQcCoIIGajCCBmYCAQExADALBgkqhkiG9w0BBwGgggZMMIID
-ITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBMMQsw
-CQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkgTHRk
-LjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wOTEyMTgwMDAwMDBaFw0xMTEy
-MTgyMzU5NTlaMGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYw
-FAYDVQQHFA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKFApHb29nbGUgSW5jMRcwFQYD
-VQQDFA53d3cuZ29vZ2xlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
-6PmGD5D6htffvXImttdEAoN4c9kCKO+IRTn7EOh8rqk41XXGOOsKFQebg+jNgtXj
-9xVoRaELGYW84u+E593y17iYwqG7tcFR39SDAqc9BkJb4SLD3muFXxzW2k6L05vu
-uWciKh0R73mkszeK9P4Y/bz5RiNQl/Os/CRGK1w7t0UCAwEAAaOB5zCB5DAMBgNV
-HRMBAf8EAjAAMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwudGhhd3RlLmNv
-bS9UaGF3dGVTR0NDQS5jcmwwKAYDVR0lBCEwHwYIKwYBBQUHAwEGCCsGAQUFBwMC
-BglghkgBhvhCBAEwcgYIKwYBBQUHAQEEZjBkMCIGCCsGAQUFBzABhhZodHRwOi8v
-b2NzcC50aGF3dGUuY29tMD4GCCsGAQUFBzAChjJodHRwOi8vd3d3LnRoYXd0ZS5j
-b20vcmVwb3NpdG9yeS9UaGF3dGVfU0dDX0NBLmNydDANBgkqhkiG9w0BAQUFAAOB
-gQCfQ89bxFApsb/isJr/aiEdLRLDLE5a+RLizrmCUi3nHX4adpaQedEkUjh5u2ON
-gJd8IyAPkU0Wueru9G2Jysa9zCRo1kNbzipYvzwY4OA8Ys+WAi0oR1A04Se6z5nR
-UP8pJcA2NhUzUnC+MY+f6H/nEQyNv4SgQhqAibAxWEEHXzCCAyMwggKMoAMCAQIC
-BDAAAAIwDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZl
-cmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENl
-cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDUxMzAwMDAwMFoXDTE0MDUxMjIz
-NTk1OVowTDELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5n
-IChQdHkpIEx0ZC4xFjAUBgNVBAMTDVRoYXd0ZSBTR0MgQ0EwgZ8wDQYJKoZIhvcN
-AQEBBQADgY0AMIGJAoGBANTTZ9CNFX+uzTH+fR2RoT8LcTyszMhk+2P8MksHlL1v
-gLov4QSTwDP8CTMj6Qt0K3HEA8bSzeIv9Qljzf9IpQC/4OfziLctMt6YNuYKrQB7
-xGRKO4R1A/Jwkn0OYvUhq2k2hDF1kPi/x2yIGwaVfMnlqN51oSx6aN/VyhyHWGAZ
-AgMBAAGjgf4wgfswEgYDVR0TAQH/BAgwBgEB/wIBADALBgNVHQ8EBAMCAQYwEQYJ
-YIZIAYb4QgEBBAQDAgEGMCgGA1UdEQQhMB+kHTAbMRkwFwYDVQQDExBQcml2YXRl
-TGFiZWwzLTE1MDEGA1UdHwQqMCgwJqAkoCKGIGh0dHA6Ly9jcmwudmVyaXNpZ24u
-Y29tL3BjYTMuY3JsMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAYYWaHR0cDov
-L29jc3AudGhhd3RlLmNvbTA0BgNVHSUELTArBggrBgEFBQcDAQYIKwYBBQUHAwIG
-CWCGSAGG+EIEAQYKYIZIAYb4RQEIATANBgkqhkiG9w0BAQUFAAOBgQBVrGPq3qHd
-0pBfnwvOdr4TUY+T2QUryBt3S61pUKHu3tz92wfp6DmU3KtyeS8Gv6uBcMSo7epT
-NO3vHlPZBsdWK9Fc9NGKjrQrsTeQSAhCJcU+ist/628E0W3FdKL3onx7YDx3zQ7O
-SAJ/AS+2mzfgKio23NWF1qzlP1Rvlh4Fr6EAMQA=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/google.pem_pkcs7.p7b b/src/pki/testdata/ssl/certificates/google.pem_pkcs7.p7b
deleted file mode 100644
index 49e2eec..0000000
--- a/src/pki/testdata/ssl/certificates/google.pem_pkcs7.p7b
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN PKCS7-----
-MIIGeQYJKoZIhvcNAQcCoIIGajCCBmYCAQExADALBgkqhkiG9w0BBwGgggZMMIID
-ITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBMMQsw
-CQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkgTHRk
-LjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wOTEyMTgwMDAwMDBaFw0xMTEy
-MTgyMzU5NTlaMGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYw
-FAYDVQQHFA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKFApHb29nbGUgSW5jMRcwFQYD
-VQQDFA53d3cuZ29vZ2xlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
-6PmGD5D6htffvXImttdEAoN4c9kCKO+IRTn7EOh8rqk41XXGOOsKFQebg+jNgtXj
-9xVoRaELGYW84u+E593y17iYwqG7tcFR39SDAqc9BkJb4SLD3muFXxzW2k6L05vu
-uWciKh0R73mkszeK9P4Y/bz5RiNQl/Os/CRGK1w7t0UCAwEAAaOB5zCB5DAMBgNV
-HRMBAf8EAjAAMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwudGhhd3RlLmNv
-bS9UaGF3dGVTR0NDQS5jcmwwKAYDVR0lBCEwHwYIKwYBBQUHAwEGCCsGAQUFBwMC
-BglghkgBhvhCBAEwcgYIKwYBBQUHAQEEZjBkMCIGCCsGAQUFBzABhhZodHRwOi8v
-b2NzcC50aGF3dGUuY29tMD4GCCsGAQUFBzAChjJodHRwOi8vd3d3LnRoYXd0ZS5j
-b20vcmVwb3NpdG9yeS9UaGF3dGVfU0dDX0NBLmNydDANBgkqhkiG9w0BAQUFAAOB
-gQCfQ89bxFApsb/isJr/aiEdLRLDLE5a+RLizrmCUi3nHX4adpaQedEkUjh5u2ON
-gJd8IyAPkU0Wueru9G2Jysa9zCRo1kNbzipYvzwY4OA8Ys+WAi0oR1A04Se6z5nR
-UP8pJcA2NhUzUnC+MY+f6H/nEQyNv4SgQhqAibAxWEEHXzCCAyMwggKMoAMCAQIC
-BDAAAAIwDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZl
-cmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENl
-cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDUxMzAwMDAwMFoXDTE0MDUxMjIz
-NTk1OVowTDELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5n
-IChQdHkpIEx0ZC4xFjAUBgNVBAMTDVRoYXd0ZSBTR0MgQ0EwgZ8wDQYJKoZIhvcN
-AQEBBQADgY0AMIGJAoGBANTTZ9CNFX+uzTH+fR2RoT8LcTyszMhk+2P8MksHlL1v
-gLov4QSTwDP8CTMj6Qt0K3HEA8bSzeIv9Qljzf9IpQC/4OfziLctMt6YNuYKrQB7
-xGRKO4R1A/Jwkn0OYvUhq2k2hDF1kPi/x2yIGwaVfMnlqN51oSx6aN/VyhyHWGAZ
-AgMBAAGjgf4wgfswEgYDVR0TAQH/BAgwBgEB/wIBADALBgNVHQ8EBAMCAQYwEQYJ
-YIZIAYb4QgEBBAQDAgEGMCgGA1UdEQQhMB+kHTAbMRkwFwYDVQQDExBQcml2YXRl
-TGFiZWwzLTE1MDEGA1UdHwQqMCgwJqAkoCKGIGh0dHA6Ly9jcmwudmVyaXNpZ24u
-Y29tL3BjYTMuY3JsMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAYYWaHR0cDov
-L29jc3AudGhhd3RlLmNvbTA0BgNVHSUELTArBggrBgEFBQcDAQYIKwYBBQUHAwIG
-CWCGSAGG+EIEAQYKYIZIAYb4RQEIATANBgkqhkiG9w0BAQUFAAOBgQBVrGPq3qHd
-0pBfnwvOdr4TUY+T2QUryBt3S61pUKHu3tz92wfp6DmU3KtyeS8Gv6uBcMSo7epT
-NO3vHlPZBsdWK9Fc9NGKjrQrsTeQSAhCJcU+ist/628E0W3FdKL3onx7YDx3zQ7O
-SAJ/AS+2mzfgKio23NWF1qzlP1Rvlh4Fr6EAMQA=
------END PKCS7-----
diff --git a/src/pki/testdata/ssl/certificates/google.single.der b/src/pki/testdata/ssl/certificates/google.single.der
deleted file mode 100644
index f73df17..0000000
--- a/src/pki/testdata/ssl/certificates/google.single.der
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/google.single.pem b/src/pki/testdata/ssl/certificates/google.single.pem
deleted file mode 100644
index a03adc4..0000000
--- a/src/pki/testdata/ssl/certificates/google.single.pem
+++ /dev/null
@@ -1,19 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBM
-MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg
-THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wOTEyMTgwMDAwMDBaFw0x
-MTEyMTgyMzU5NTlaMGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh
-MRYwFAYDVQQHFA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKFApHb29nbGUgSW5jMRcw
-FQYDVQQDFA53d3cuZ29vZ2xlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
-gYEA6PmGD5D6htffvXImttdEAoN4c9kCKO+IRTn7EOh8rqk41XXGOOsKFQebg+jN
-gtXj9xVoRaELGYW84u+E593y17iYwqG7tcFR39SDAqc9BkJb4SLD3muFXxzW2k6L
-05vuuWciKh0R73mkszeK9P4Y/bz5RiNQl/Os/CRGK1w7t0UCAwEAAaOB5zCB5DAM
-BgNVHRMBAf8EAjAAMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwudGhhd3Rl
-LmNvbS9UaGF3dGVTR0NDQS5jcmwwKAYDVR0lBCEwHwYIKwYBBQUHAwEGCCsGAQUF
-BwMCBglghkgBhvhCBAEwcgYIKwYBBQUHAQEEZjBkMCIGCCsGAQUFBzABhhZodHRw
-Oi8vb2NzcC50aGF3dGUuY29tMD4GCCsGAQUFBzAChjJodHRwOi8vd3d3LnRoYXd0
-ZS5jb20vcmVwb3NpdG9yeS9UaGF3dGVfU0dDX0NBLmNydDANBgkqhkiG9w0BAQUF
-AAOBgQCfQ89bxFApsb/isJr/aiEdLRLDLE5a+RLizrmCUi3nHX4adpaQedEkUjh5
-u2ONgJd8IyAPkU0Wueru9G2Jysa9zCRo1kNbzipYvzwY4OA8Ys+WAi0oR1A04Se6
-z5nRUP8pJcA2NhUzUnC+MY+f6H/nEQyNv4SgQhqAibAxWEEHXw==
------END CERTIFICATE----- \ No newline at end of file
diff --git a/src/pki/testdata/ssl/certificates/google_diginotar.pem b/src/pki/testdata/ssl/certificates/google_diginotar.pem
deleted file mode 100644
index 12bbcae..0000000
--- a/src/pki/testdata/ssl/certificates/google_diginotar.pem
+++ /dev/null
@@ -1,30 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIFKDCCBBCgAwIBAgIQBeLmpM0J6lTWZbB1/iKiVjANBgkqhkiG9w0BAQUFADBm
-MQswCQYDVQQGEwJOTDESMBAGA1UEChMJRGlnaU5vdGFyMSEwHwYDVQQDExhEaWdp
-Tm90YXIgUHVibGljIENBIDIwMjUxIDAeBgkqhkiG9w0BCQEWEWluZm9AZGlnaW5v
-dGFyLm5sMB4XDTExMDcxMDE5MDYzMFoXDTEzMDcwOTE5MDYzMFowajELMAkGA1UE
-BhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxFjAUBgNVBAcTDU1vdW50YWluIFZp
-ZXcxFzAVBgNVBAUTDlBLMDAwMjI5MjAwMDAyMRUwEwYDVQQDEwwqLmdvb2dsZS5j
-b20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDNbeKubCV0aCxhOiOS
-CSQ/w9HXTYuD5BLKuiqXNw3setdTymeJz2L8aWOHo3nicFNDVwWTgwWomGNr2J6Q
-7g1iINNSW0rR4E1l2szRkcnAY6c6i/Eke93nF4i2hDsnIBveolF5yjpuRm73uQQD
-ulHjA3BFRF/PTi0fw2/Yt+8ieoMuNcMWN6Eou5Gqt5YZkWv176ofeCbsBmMrP87x
-OhhtTDckCapk4VQZG2XrfzZcV6tdzCp5TI8uHdu17cdzXm1imZ8tyvzFeiCEOQN8
-vPNzB/fIr3CJQ5q4uM5aKT3DD5PeVzf4rfJKQNgCTWiIBc9XcWEUuszwAsnmg7e2
-EJRdAgMBAAGjggHMMIIByDA6BggrBgEFBQcBAQQuMCwwKgYIKwYBBQUHMAGGHmh0
-dHA6Ly92YWxpZGF0aW9uLmRpZ2lub3Rhci5ubDAfBgNVHSMEGDAWgBTfM8Cvkv43
-/LbYFhbQ2bGR1fpupTAJBgNVHRMEAjAAMIHGBgNVHSAEgb4wgbswgbgGDmCEEAGH
-aQEBAQIEAQICMIGlMCcGCCsGAQUFBwIBFhtodHRwOi8vd3d3LmRpZ2lub3Rhci5u
-bC9jcHMwegYIKwYBBQUHAgIwbhpsQ29uZGl0aW9ucywgYXMgbWVudGlvbmVkIG9u
-IG91ciB3ZWJzaXRlICh3d3cuZGlnaW5vdGFyLm5sKSwgYXJlIGFwcGxpY2FibGUg
-dG8gYWxsIG91ciBwcm9kdWN0cyBhbmQgc2VydmljZXMuMEkGA1UdHwRCMEAwPqA8
-oDqGOGh0dHA6Ly9zZXJ2aWNlLmRpZ2lub3Rhci5ubC9jcmwvcHVibGljMjAyNS9s
-YXRlc3RDUkwuY3JsMA4GA1UdDwEB/wQEAwIEsDAbBgNVHREEFDASgRBhZG1pbkBn
-b29nbGUuY29tMB0GA1UdDgQWBBQHSn0WJzIo0eMBMQUNsMqN6eF/7TANBgkqhkiG
-9w0BAQUFAAOCAQEAAs5dL7N9wzRJkI4Aq4lC5t8j5ZadqnqUcgYLADzSv4ExytNH
-UY2nH6iVTihC0UPSsILWraoeApdT7Rphz/8DLQEBRGdeKWAptNM3EbiXtQaZT2uB
-pidL8UoafX0kch3f71Y1scpBEjvu5ZZLnjg0A8AL0tnsereOVdDpU98bKqdbbrnM
-FRmBlSf7xdaNca6JJHeEpga4E9Ty683CmccrSGXdU2tTCuHEJww+iOAUtPIZcsum
-U7/eYeY1pMyGLyIjbNgRY7nDzRwvM/BsbL9eh4/mSQj/4nncqJd22sVQpCggQiVK
-baB2sVGcVNBkK55bT8gPqnx8JypubyUvayzZGg==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/intermediate_ca_cert.pem b/src/pki/testdata/ssl/certificates/intermediate_ca_cert.pem
deleted file mode 100644
index 911d564..0000000
--- a/src/pki/testdata/ssl/certificates/intermediate_ca_cert.pem
+++ /dev/null
@@ -1,110 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCd6b3kPUov+8L5
-5iIqQhVGHIyPR0zpxVeVH2ZwkyLwlMO7tVvvpG/Ix4mVdboMNr9Oa6k1RwhDnilq
-4sP7A7cftuFRa+17Gcf5zjvcZelmx4OUxNFO7u1kS4HxGupaZBgbak6T0BNskGDK
-0k63JBb4sghYnY2nM0UVNIGtLS2cYO/5K5j+edONLEjbEpH0Lvq/9SbBggWA3Uyo
-cL+nvBA0dznbRwQP7USyZUYiIIhZKA/HDKK0kaWiqsoFn4qbbqPL1KToJHWdIIEi
-W193PsnxHq7rijOMJ1sevm0hG0JyleOeEwN1p1jUvmgS/mOOSxF6NOeja91zrj4Z
-muyRi3OvAgMBAAECggEBAJwu2gyK/fw1YqNtlS78izP7+p2fZJf2AejQ1K3VKQKP
-8IOQHW0I0zLe/9oeRTPdVhtG6mVyat8N6GL6A+IZy54HcBTqzUgquJn++z/CYDWy
-cRbMD0SllY/UCqIf/9gFFb7PxwX1D7EZn1Ia7ZW/kSTKWOzkb30GfXY6p2NTwr/d
-psacQ5v6+o8z3RD2N44gPvrGA2d1P83YT0oIYwKAHtpu6c46CBQmf54lhjs1LdxE
-UgF8w+Y8T8DZQ5WekchIWBcGZLiqBkm49+uBoGtlfrcszZkC3pnX++HoZAYE9ms4
-OCdWhEBHUyhd/os7GjaX+CGUM4nNx0LmoqeJBhBt0qkCgYEAzcsWqVYruimpnES+
-lzFIiFZXI6rYd7hkJ+semFst4UFQM51TE0gXkrzZdIu/rgmRlb05to739V1i2z0B
-TxGka+WzL6j4ZtJjy2WBl35GceoeL5Iwbjs8OiJFr8TAkq9v3TT2iymuUDGSHCCz
-1T9GfS4/zoLNGiqKOxp7O6ZwaC0CgYEAxHBFRtQ1eeKYL5FZwWv2JklivutDWURK
-0dzbzsvKaUf40ZdZe+A6cFomckm7xubHwMckY+8Y011pgF581JWWIaRs8u8jJuWA
-ajjfmFSC0L5uuk6qYHa9eWQu8LvUGmKX9SMs7Mt2h7BS+l+ZDbgr6LngoK1CWGEK
-DLo0/fp7OMsCgYAi++RVUx3J3u1DcHhJ8YnYC31yxcdYytLT6mdgFRf+lADTVWpa
-+8VuH4aEBoHGT0AdiXZ3L2S9pGt6w6smSuR9pyXH81yO9jMaz52xKDlHgjoxchOj
-mZRKeasJD1SBWyuUGj3TOHm2jka9W13W4ZPVEfis3ZWKXjLzizPp1wiC3QKBgEMX
-ESIKsiTptg5w9xWveMdEwxvvn/Xp9B/O7aeoRH5GnX1/0okTYQIkWAMqmZ5qDYkS
-uqQC8himS7UTEFFOsZLV5HvoHrpXIc+lkwAkxPTkRU8ONPRzOW0vQTTpAZztVXbc
-x6gsKVRYbU6jvdNItn5qlYRrCEDFC7ijFBw2I0WXAoGARVYDlmIrSvnwqZ07YzPa
-QeLueBBfnHqN+7XAGTctn0MOhE96OgURw0lWVnyoGtTmUAHtdho5EeDDUxQm/n1x
-whGM72yqlFlslpnodQUqAYz1Eqe+RgP9V8KXdUVz652jqZwhuqLBjtAc9e9knwR8
-MTmwsskxSp9DWTu+tCjNrwM=
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:64
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Oct 3 17:20:08 2022 GMT
- Not After : Sep 30 17:20:08 2032 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Intermediate CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:9d:e9:bd:e4:3d:4a:2f:fb:c2:f9:e6:22:2a:42:
- 15:46:1c:8c:8f:47:4c:e9:c5:57:95:1f:66:70:93:
- 22:f0:94:c3:bb:b5:5b:ef:a4:6f:c8:c7:89:95:75:
- ba:0c:36:bf:4e:6b:a9:35:47:08:43:9e:29:6a:e2:
- c3:fb:03:b7:1f:b6:e1:51:6b:ed:7b:19:c7:f9:ce:
- 3b:dc:65:e9:66:c7:83:94:c4:d1:4e:ee:ed:64:4b:
- 81:f1:1a:ea:5a:64:18:1b:6a:4e:93:d0:13:6c:90:
- 60:ca:d2:4e:b7:24:16:f8:b2:08:58:9d:8d:a7:33:
- 45:15:34:81:ad:2d:2d:9c:60:ef:f9:2b:98:fe:79:
- d3:8d:2c:48:db:12:91:f4:2e:fa:bf:f5:26:c1:82:
- 05:80:dd:4c:a8:70:bf:a7:bc:10:34:77:39:db:47:
- 04:0f:ed:44:b2:65:46:22:20:88:59:28:0f:c7:0c:
- a2:b4:91:a5:a2:aa:ca:05:9f:8a:9b:6e:a3:cb:d4:
- a4:e8:24:75:9d:20:81:22:5b:5f:77:3e:c9:f1:1e:
- ae:eb:8a:33:8c:27:5b:1e:be:6d:21:1b:42:72:95:
- e3:9e:13:03:75:a7:58:d4:be:68:12:fe:63:8e:4b:
- 11:7a:34:e7:a3:6b:dd:73:ae:3e:19:9a:ec:91:8b:
- 73:af
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- 17:5C:45:F3:D0:AC:1C:10:4C:8B:43:44:20:C4:DD:93:C5:C5:19:3B
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 25:54:8b:68:3b:3c:92:ed:1b:c7:a1:62:b3:7c:ff:7e:8c:57:
- 7c:67:5c:ea:74:9f:e8:f1:b5:c8:e4:88:0e:c9:a3:f3:28:c4:
- 05:af:8f:ad:51:32:66:ae:5d:7a:b1:77:7e:99:06:c8:30:26:
- 5a:9f:1e:34:ea:aa:3e:0a:73:a2:40:e3:8f:1a:01:96:a2:6d:
- 2f:6c:d9:36:65:98:c8:86:41:0e:ee:0d:aa:da:62:54:62:23:
- c6:23:b0:f1:ca:35:7b:e5:4b:d1:ab:80:80:d6:00:2b:19:85:
- 9d:e0:3c:3f:13:1e:90:d2:df:c3:31:90:0f:a8:40:08:33:4e:
- f7:a4:d0:ed:3e:a4:41:cf:e8:37:49:d1:58:e8:07:3d:4b:a1:
- c9:fe:12:07:9a:de:e0:c8:f3:68:d6:31:5d:03:77:2f:fa:b0:
- e6:2c:f3:80:59:d0:9b:1b:59:22:cd:7e:58:c6:cf:82:92:c3:
- 76:95:78:b2:75:c8:fa:59:9f:0e:c0:e3:6d:70:f9:82:ba:db:
- 89:89:81:b7:b9:e1:41:63:51:56:8a:5a:d2:52:c2:19:2f:d9:
- c0:9d:19:82:59:79:f9:56:1c:25:81:4d:0a:cd:77:1b:de:85:
- 6e:51:04:08:0b:0c:33:65:52:f6:90:a8:82:25:77:a0:fa:5e:
- 9c:2a:91:66
------BEGIN CERTIFICATE-----
-MIIDvDCCAqSgAwIBAgIRALBrk5LjXI1+7Z3IllnFwmQwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0yMjEwMDMxNzIwMDhaFw0zMjA5MzAxNzIwMDhaMGsxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMR0wGwYDVQQDDBRUZXN0IEludGVybWVkaWF0ZSBD
-QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ3pveQ9Si/7wvnmIipC
-FUYcjI9HTOnFV5UfZnCTIvCUw7u1W++kb8jHiZV1ugw2v05rqTVHCEOeKWriw/sD
-tx+24VFr7XsZx/nOO9xl6WbHg5TE0U7u7WRLgfEa6lpkGBtqTpPQE2yQYMrSTrck
-FviyCFidjaczRRU0ga0tLZxg7/krmP55040sSNsSkfQu+r/1JsGCBYDdTKhwv6e8
-EDR3OdtHBA/tRLJlRiIgiFkoD8cMorSRpaKqygWfiptuo8vUpOgkdZ0ggSJbX3c+
-yfEeruuKM4wnWx6+bSEbQnKV454TA3WnWNS+aBL+Y45LEXo056Nr3XOuPhma7JGL
-c68CAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUF1xF89CsHBBM
-i0NEIMTdk8XFGTswDgYDVR0PAQH/BAQDAgEGMB8GA1UdIwQYMBaAFJsmC4qYqbsd
-uR8c4xpAM+2OF4irMA0GCSqGSIb3DQEBCwUAA4IBAQAlVItoOzyS7RvHoWKzfP9+
-jFd8Z1zqdJ/o8bXI5IgOyaPzKMQFr4+tUTJmrl16sXd+mQbIMCZanx406qo+CnOi
-QOOPGgGWom0vbNk2ZZjIhkEO7g2q2mJUYiPGI7DxyjV75UvRq4CA1gArGYWd4Dw/
-Ex6Q0t/DMZAPqEAIM073pNDtPqRBz+g3SdFY6Ac9S6HJ/hIHmt7gyPNo1jFdA3cv
-+rDmLPOAWdCbG1kizX5Yxs+CksN2lXiydcj6WZ8OwONtcPmCutuJiYG3ueFBY1FW
-ilrSUsIZL9nAnRmCWXn5VhwlgU0KzXcb3oVuUQQICwwzZVL2kKiCJXeg+l6cKpFm
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/invalid_key_usage_cert.der b/src/pki/testdata/ssl/certificates/invalid_key_usage_cert.der
deleted file mode 100644
index 3a1be64..0000000
--- a/src/pki/testdata/ssl/certificates/invalid_key_usage_cert.der
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/key_usage_p256.key b/src/pki/testdata/ssl/certificates/key_usage_p256.key
deleted file mode 100644
index 0143378..0000000
--- a/src/pki/testdata/ssl/certificates/key_usage_p256.key
+++ /dev/null
@@ -1,5 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgeor3507Mmwvc9idK
-suXWTudE0GDlVmEc64H7acez5xShRANCAATzrZ6+AHOlorp9D4i4ZEuFW2IcT16D
-RCr5q46eSP89CxqRkr4fDMaHCr0GRwtjBrcnuljjBWRtHTAo7u7yqXuT
------END PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/key_usage_p256_both.pem b/src/pki/testdata/ssl/certificates/key_usage_p256_both.pem
deleted file mode 100644
index a7e82e8..0000000
--- a/src/pki/testdata/ssl/certificates/key_usage_p256_both.pem
+++ /dev/null
@@ -1,45 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgeor3507Mmwvc9idK
-suXWTudE0GDlVmEc64H7acez5xShRANCAATzrZ6+AHOlorp9D4i4ZEuFW2IcT16D
-RCr5q46eSP89CxqRkr4fDMaHCr0GRwtjBrcnuljjBWRtHTAo7u7yqXuT
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 75:3d:62:cc:15:9d:78:a8:e2:fa:a7:5f:a2:62:83:12:c6:b5:50:bb
- Signature Algorithm: ecdsa-with-SHA256
- Issuer: CN = P-256 keyAgreement and digitalSignature
- Validity
- Not Before: Jul 1 17:45:04 2020 GMT
- Not After : Jun 29 17:45:04 2030 GMT
- Subject: CN = P-256 keyAgreement and digitalSignature
- Subject Public Key Info:
- Public Key Algorithm: id-ecPublicKey
- Public-Key: (256 bit)
- pub:
- 04:f3:ad:9e:be:00:73:a5:a2:ba:7d:0f:88:b8:64:
- 4b:85:5b:62:1c:4f:5e:83:44:2a:f9:ab:8e:9e:48:
- ff:3d:0b:1a:91:92:be:1f:0c:c6:87:0a:bd:06:47:
- 0b:63:06:b7:27:ba:58:e3:05:64:6d:1d:30:28:ee:
- ee:f2:a9:7b:93
- ASN1 OID: prime256v1
- NIST CURVE: P-256
- X509v3 extensions:
- X509v3 Key Usage: critical
- Digital Signature, Key Agreement
- Signature Algorithm: ecdsa-with-SHA256
- 30:45:02:20:3c:d9:e5:7a:d5:65:3b:93:62:80:1c:c4:26:d2:
- 31:6b:fc:39:c9:bf:66:60:dd:06:89:e3:71:d4:2f:e2:d2:7d:
- 02:21:00:c2:5b:1f:c6:73:8d:6e:ce:6e:e7:fa:db:88:55:be:
- 08:8d:6f:8d:80:16:59:d7:73:26:0e:70:02:50:e6:41:35
------BEGIN CERTIFICATE-----
-MIIBeDCCAR6gAwIBAgIUdT1izBWdeKji+qdfomKDEsa1ULswCgYIKoZIzj0EAwIw
-MjEwMC4GA1UEAwwnUC0yNTYga2V5QWdyZWVtZW50IGFuZCBkaWdpdGFsU2lnbmF0
-dXJlMB4XDTIwMDcwMTE3NDUwNFoXDTMwMDYyOTE3NDUwNFowMjEwMC4GA1UEAwwn
-UC0yNTYga2V5QWdyZWVtZW50IGFuZCBkaWdpdGFsU2lnbmF0dXJlMFkwEwYHKoZI
-zj0CAQYIKoZIzj0DAQcDQgAE862evgBzpaK6fQ+IuGRLhVtiHE9eg0Qq+auOnkj/
-PQsakZK+HwzGhwq9BkcLYwa3J7pY4wVkbR0wKO7u8ql7k6MSMBAwDgYDVR0PAQH/
-BAQDAgOIMAoGCCqGSM49BAMCA0gAMEUCIDzZ5XrVZTuTYoAcxCbSMWv8Ocm/ZmDd
-BonjcdQv4tJ9AiEAwlsfxnONbs5u5/rbiFW+CI1vjYAWWddzJg5wAlDmQTU=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/key_usage_p256_digitalsignature.pem b/src/pki/testdata/ssl/certificates/key_usage_p256_digitalsignature.pem
deleted file mode 100644
index fb82da5..0000000
--- a/src/pki/testdata/ssl/certificates/key_usage_p256_digitalsignature.pem
+++ /dev/null
@@ -1,45 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgeor3507Mmwvc9idK
-suXWTudE0GDlVmEc64H7acez5xShRANCAATzrZ6+AHOlorp9D4i4ZEuFW2IcT16D
-RCr5q46eSP89CxqRkr4fDMaHCr0GRwtjBrcnuljjBWRtHTAo7u7yqXuT
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 41:34:6d:4f:6a:37:a4:52:ee:07:2a:9e:a0:e2:db:63:55:b1:d8:32
- Signature Algorithm: ecdsa-with-SHA256
- Issuer: CN = P-256 digitalSignature
- Validity
- Not Before: Jul 1 17:45:04 2020 GMT
- Not After : Jun 29 17:45:04 2030 GMT
- Subject: CN = P-256 digitalSignature
- Subject Public Key Info:
- Public Key Algorithm: id-ecPublicKey
- Public-Key: (256 bit)
- pub:
- 04:f3:ad:9e:be:00:73:a5:a2:ba:7d:0f:88:b8:64:
- 4b:85:5b:62:1c:4f:5e:83:44:2a:f9:ab:8e:9e:48:
- ff:3d:0b:1a:91:92:be:1f:0c:c6:87:0a:bd:06:47:
- 0b:63:06:b7:27:ba:58:e3:05:64:6d:1d:30:28:ee:
- ee:f2:a9:7b:93
- ASN1 OID: prime256v1
- NIST CURVE: P-256
- X509v3 extensions:
- X509v3 Key Usage: critical
- Digital Signature
- Signature Algorithm: ecdsa-with-SHA256
- 30:45:02:21:00:80:73:dd:d0:09:2c:51:44:37:bc:83:d4:b2:
- 33:87:c5:70:ad:50:35:7c:bb:ba:f2:15:cc:31:83:d7:a2:c2:
- 41:02:20:28:6b:40:d1:b5:20:68:e9:a0:b0:a9:32:37:4f:e9:
- c8:f5:ac:ba:ec:22:94:ce:1c:37:26:1d:e2:43:b0:66:03
------BEGIN CERTIFICATE-----
-MIIBVTCB/KADAgECAhRBNG1PajekUu4HKp6g4ttjVbHYMjAKBggqhkjOPQQDAjAh
-MR8wHQYDVQQDDBZQLTI1NiBkaWdpdGFsU2lnbmF0dXJlMB4XDTIwMDcwMTE3NDUw
-NFoXDTMwMDYyOTE3NDUwNFowITEfMB0GA1UEAwwWUC0yNTYgZGlnaXRhbFNpZ25h
-dHVyZTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPOtnr4Ac6Wiun0PiLhkS4Vb
-YhxPXoNEKvmrjp5I/z0LGpGSvh8MxocKvQZHC2MGtye6WOMFZG0dMCju7vKpe5Oj
-EjAQMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiEAgHPd0AksUUQ3
-vIPUsjOHxXCtUDV8u7ryFcwxg9eiwkECIChrQNG1IGjpoLCpMjdP6cj1rLrsIpTO
-HDcmHeJDsGYD
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/key_usage_p256_keyagreement.pem b/src/pki/testdata/ssl/certificates/key_usage_p256_keyagreement.pem
deleted file mode 100644
index 1a17ea0..0000000
--- a/src/pki/testdata/ssl/certificates/key_usage_p256_keyagreement.pem
+++ /dev/null
@@ -1,45 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgeor3507Mmwvc9idK
-suXWTudE0GDlVmEc64H7acez5xShRANCAATzrZ6+AHOlorp9D4i4ZEuFW2IcT16D
-RCr5q46eSP89CxqRkr4fDMaHCr0GRwtjBrcnuljjBWRtHTAo7u7yqXuT
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 29:16:18:ee:33:5e:08:0e:f8:68:83:0e:5f:3f:de:0a:f5:0e:46:b3
- Signature Algorithm: ecdsa-with-SHA256
- Issuer: CN = P-256 keyAgreement
- Validity
- Not Before: Jul 1 17:45:04 2020 GMT
- Not After : Jun 29 17:45:04 2030 GMT
- Subject: CN = P-256 keyAgreement
- Subject Public Key Info:
- Public Key Algorithm: id-ecPublicKey
- Public-Key: (256 bit)
- pub:
- 04:f3:ad:9e:be:00:73:a5:a2:ba:7d:0f:88:b8:64:
- 4b:85:5b:62:1c:4f:5e:83:44:2a:f9:ab:8e:9e:48:
- ff:3d:0b:1a:91:92:be:1f:0c:c6:87:0a:bd:06:47:
- 0b:63:06:b7:27:ba:58:e3:05:64:6d:1d:30:28:ee:
- ee:f2:a9:7b:93
- ASN1 OID: prime256v1
- NIST CURVE: P-256
- X509v3 extensions:
- X509v3 Key Usage: critical
- Key Agreement
- Signature Algorithm: ecdsa-with-SHA256
- 30:45:02:21:00:ca:5e:82:62:84:49:72:35:04:6e:56:0c:3b:
- 70:f6:ae:03:d9:74:e9:e5:a8:86:bd:7e:c9:4b:d5:59:2a:2b:
- 52:02:20:40:27:b3:d5:08:39:05:f4:35:9c:5d:58:02:dd:70:
- 11:97:a8:15:5e:21:09:3a:f4:d5:5b:f6:69:ad:7a:4f:61
------BEGIN CERTIFICATE-----
-MIIBTTCB9KADAgECAhQpFhjuM14IDvhogw5fP94K9Q5GszAKBggqhkjOPQQDAjAd
-MRswGQYDVQQDDBJQLTI1NiBrZXlBZ3JlZW1lbnQwHhcNMjAwNzAxMTc0NTA0WhcN
-MzAwNjI5MTc0NTA0WjAdMRswGQYDVQQDDBJQLTI1NiBrZXlBZ3JlZW1lbnQwWTAT
-BgcqhkjOPQIBBggqhkjOPQMBBwNCAATzrZ6+AHOlorp9D4i4ZEuFW2IcT16DRCr5
-q46eSP89CxqRkr4fDMaHCr0GRwtjBrcnuljjBWRtHTAo7u7yqXuToxIwEDAOBgNV
-HQ8BAf8EBAMCAwgwCgYIKoZIzj0EAwIDSAAwRQIhAMpegmKESXI1BG5WDDtw9q4D
-2XTp5aiGvX7JS9VZKitSAiBAJ7PVCDkF9DWcXVgC3XARl6gVXiEJOvTVW/ZprXpP
-YQ==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/key_usage_p256_no_extension.pem b/src/pki/testdata/ssl/certificates/key_usage_p256_no_extension.pem
deleted file mode 100644
index cb8abd5..0000000
--- a/src/pki/testdata/ssl/certificates/key_usage_p256_no_extension.pem
+++ /dev/null
@@ -1,41 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgeor3507Mmwvc9idK
-suXWTudE0GDlVmEc64H7acez5xShRANCAATzrZ6+AHOlorp9D4i4ZEuFW2IcT16D
-RCr5q46eSP89CxqRkr4fDMaHCr0GRwtjBrcnuljjBWRtHTAo7u7yqXuT
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 07:77:fa:ef:2d:fb:92:c6:49:d9:9a:42:5a:06:67:bf:e1:24:41:9d
- Signature Algorithm: ecdsa-with-SHA256
- Issuer: CN = P-256 no keyUsage extension
- Validity
- Not Before: Jul 1 17:45:04 2020 GMT
- Not After : Jun 29 17:45:04 2030 GMT
- Subject: CN = P-256 no keyUsage extension
- Subject Public Key Info:
- Public Key Algorithm: id-ecPublicKey
- Public-Key: (256 bit)
- pub:
- 04:f3:ad:9e:be:00:73:a5:a2:ba:7d:0f:88:b8:64:
- 4b:85:5b:62:1c:4f:5e:83:44:2a:f9:ab:8e:9e:48:
- ff:3d:0b:1a:91:92:be:1f:0c:c6:87:0a:bd:06:47:
- 0b:63:06:b7:27:ba:58:e3:05:64:6d:1d:30:28:ee:
- ee:f2:a9:7b:93
- ASN1 OID: prime256v1
- NIST CURVE: P-256
- Signature Algorithm: ecdsa-with-SHA256
- 30:45:02:20:47:ab:e1:e2:b3:e7:96:d1:c5:c7:b6:b2:ac:fd:
- 89:37:3c:7f:43:d2:ac:e5:b6:f7:90:ef:1f:a4:e8:10:62:73:
- 02:21:00:d5:47:83:f1:88:be:e9:5c:e4:3f:7e:c9:3a:a5:70:
- 6a:20:d5:a1:1f:e4:c5:20:ea:31:d1:11:aa:0a:0e:97:87
------BEGIN CERTIFICATE-----
-MIIBSzCB8qADAgECAhQHd/rvLfuSxknZmkJaBme/4SRBnTAKBggqhkjOPQQDAjAm
-MSQwIgYDVQQDDBtQLTI1NiBubyBrZXlVc2FnZSBleHRlbnNpb24wHhcNMjAwNzAx
-MTc0NTA0WhcNMzAwNjI5MTc0NTA0WjAmMSQwIgYDVQQDDBtQLTI1NiBubyBrZXlV
-c2FnZSBleHRlbnNpb24wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATzrZ6+AHOl
-orp9D4i4ZEuFW2IcT16DRCr5q46eSP89CxqRkr4fDMaHCr0GRwtjBrcnuljjBWRt
-HTAo7u7yqXuTMAoGCCqGSM49BAMCA0gAMEUCIEer4eKz55bRxce2sqz9iTc8f0PS
-rOW295DvH6ToEGJzAiEA1UeD8Yi+6VzkP37JOqVwaiDVoR/kxSDqMdERqgoOl4c=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/key_usage_rsa.key b/src/pki/testdata/ssl/certificates/key_usage_rsa.key
deleted file mode 100644
index 6015a2c..0000000
--- a/src/pki/testdata/ssl/certificates/key_usage_rsa.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC1DXXelAoZJiao
-NVAj+VG+uFlhp5GJt4hwYTR1oxqXEgricS6ElM7W/VHEJuJv+2KFtRfYSi1xLVri
-uRHZNALmLW40UDi1qKJdLMFiTqMg/BEXVM5L1bgAw4kfNm7EwZ64DCdYSPnPq+PN
-tBAxnmvzp/7feKc33nq9pv9CUVVeVvIovd9un4e2jdqZh+p750Ly1Ujx+7bOGTox
-Xzl5+IsJDIVF5vPGoSSazxrnpgIwFGwH2W69ySsMBM4KAFW6GFQiFFxOPI9a1gxj
-sKHFfy2U/dHRymYqbm4w+afgo/lZjJv9l3eQALL+r4wQlr1kLq0FWpcUEpZDW40F
-65UdYPbhAgMBAAECggEBAK90nvCXeH3MuhOyrrpeCDkSgBQiBul2QjPeD6+c48zZ
-QFEXrCPx7czs6wtzP2eUL3Mx/yytHgKbGIO1JDXgsJqOFkl+IKbzCH3RPItfd7kk
-bg+1MMLPF6Ut2Tm1T30/wefMZ2ioN+doRbh4MmVTiHw1Jss8Kpj68unN53tGRLvJ
-VvamRDOrtfhuM2fiKap3FH0bBGQzLJ6ZX6Xpscf3flxQhjCm5XeViBWJUo1tgVGN
-Sq8GgAy/ohVQqmUbvX3Zg/yTtVfoDU44OJ2RLhDoB+5VsMtzu0i4k4zoeR0YgT53
-C4VdSmxDSPlpc0xLTmxugGZBxYSAbnyA1cdeufI5F80CgYEA4KppyNukJKu1ZS2c
-Fqx08cR+PQqTzMOdZE1ZYRNtULI0Y6ajceW/l78OYOzxFQEho4Y00UQZTKUxp5/O
-RxalI7b1zPlW3jXJ+2j8JWH4AnPs4aDEDcJVeuCRwlEZ9C3q3cVcjv2Ty6sNe3pe
-OhupkBwAe6WwT9soDOKTSMvB5hsCgYEAzk3ceZAPXGYnjkFF58rhdFdGV0NKKePD
-kAQDjpsoISCbN0RM4vNA4UNWszRd+Js/2ePVIB/k6SPRXZbcOhu2etzk1tTbeynF
-7EzG5FnMGYykQVz2X1JYA+UT5AnujANJUMH1jjDyHdMFS8/1oYT0OwnnbYZ8/sev
-eYK3MJyAVrMCgYEAgM2SqmIqQA/lhmVYuLMUtMtnaI2Y4OtBYBDsbjhaEsqoOH1/
-9Tu31ULm9nDBYr5sT7kQrO0y5/tJdYWsGJuF/+zUDTjiMbF65FVzQedh7d4Sb+Tg
-odbJdRIs3s/qZlCw94ZAI4aD5l9h8mncfcoAM6uqJzl91Lqbwo9fy3tt5gMCgYBG
-kqYQQ7KthhiT9kpGn8V+OfjLEy7Eo7CbjHP3DaatpmzSfB/dJx+Tr6hyB0D6MYmn
-LOQUaDSzeFg/rsLJcf97iiMSRqCKQmD9k8oaBYnnV5A89+Mj+pQ3SN8EDE25QcqL
-wL4SlTXN9AkExTAev8+YfqvXcMFDmuWxKIEoNPFGNwKBgDEWCNvj86HZnQH+7ANc
-84HzHNzBz3XEtn09FeLA69r+C9vLqodxgTvPNdif42Igw4mK640jUP5JruJZ0kq0
-jYsF2yzgpVFfYbo7hU4ZGCZM24WhHhaXLE6Oi/ExCAqstLwCpaVTS1FoljtcNV7P
-mZfK4GN9JSGsRqiWK21Ly2bC
------END PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/key_usage_rsa_both.pem b/src/pki/testdata/ssl/certificates/key_usage_rsa_both.pem
deleted file mode 100644
index 9d8d155..0000000
--- a/src/pki/testdata/ssl/certificates/key_usage_rsa_both.pem
+++ /dev/null
@@ -1,100 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC1DXXelAoZJiao
-NVAj+VG+uFlhp5GJt4hwYTR1oxqXEgricS6ElM7W/VHEJuJv+2KFtRfYSi1xLVri
-uRHZNALmLW40UDi1qKJdLMFiTqMg/BEXVM5L1bgAw4kfNm7EwZ64DCdYSPnPq+PN
-tBAxnmvzp/7feKc33nq9pv9CUVVeVvIovd9un4e2jdqZh+p750Ly1Ujx+7bOGTox
-Xzl5+IsJDIVF5vPGoSSazxrnpgIwFGwH2W69ySsMBM4KAFW6GFQiFFxOPI9a1gxj
-sKHFfy2U/dHRymYqbm4w+afgo/lZjJv9l3eQALL+r4wQlr1kLq0FWpcUEpZDW40F
-65UdYPbhAgMBAAECggEBAK90nvCXeH3MuhOyrrpeCDkSgBQiBul2QjPeD6+c48zZ
-QFEXrCPx7czs6wtzP2eUL3Mx/yytHgKbGIO1JDXgsJqOFkl+IKbzCH3RPItfd7kk
-bg+1MMLPF6Ut2Tm1T30/wefMZ2ioN+doRbh4MmVTiHw1Jss8Kpj68unN53tGRLvJ
-VvamRDOrtfhuM2fiKap3FH0bBGQzLJ6ZX6Xpscf3flxQhjCm5XeViBWJUo1tgVGN
-Sq8GgAy/ohVQqmUbvX3Zg/yTtVfoDU44OJ2RLhDoB+5VsMtzu0i4k4zoeR0YgT53
-C4VdSmxDSPlpc0xLTmxugGZBxYSAbnyA1cdeufI5F80CgYEA4KppyNukJKu1ZS2c
-Fqx08cR+PQqTzMOdZE1ZYRNtULI0Y6ajceW/l78OYOzxFQEho4Y00UQZTKUxp5/O
-RxalI7b1zPlW3jXJ+2j8JWH4AnPs4aDEDcJVeuCRwlEZ9C3q3cVcjv2Ty6sNe3pe
-OhupkBwAe6WwT9soDOKTSMvB5hsCgYEAzk3ceZAPXGYnjkFF58rhdFdGV0NKKePD
-kAQDjpsoISCbN0RM4vNA4UNWszRd+Js/2ePVIB/k6SPRXZbcOhu2etzk1tTbeynF
-7EzG5FnMGYykQVz2X1JYA+UT5AnujANJUMH1jjDyHdMFS8/1oYT0OwnnbYZ8/sev
-eYK3MJyAVrMCgYEAgM2SqmIqQA/lhmVYuLMUtMtnaI2Y4OtBYBDsbjhaEsqoOH1/
-9Tu31ULm9nDBYr5sT7kQrO0y5/tJdYWsGJuF/+zUDTjiMbF65FVzQedh7d4Sb+Tg
-odbJdRIs3s/qZlCw94ZAI4aD5l9h8mncfcoAM6uqJzl91Lqbwo9fy3tt5gMCgYBG
-kqYQQ7KthhiT9kpGn8V+OfjLEy7Eo7CbjHP3DaatpmzSfB/dJx+Tr6hyB0D6MYmn
-LOQUaDSzeFg/rsLJcf97iiMSRqCKQmD9k8oaBYnnV5A89+Mj+pQ3SN8EDE25QcqL
-wL4SlTXN9AkExTAev8+YfqvXcMFDmuWxKIEoNPFGNwKBgDEWCNvj86HZnQH+7ANc
-84HzHNzBz3XEtn09FeLA69r+C9vLqodxgTvPNdif42Igw4mK640jUP5JruJZ0kq0
-jYsF2yzgpVFfYbo7hU4ZGCZM24WhHhaXLE6Oi/ExCAqstLwCpaVTS1FoljtcNV7P
-mZfK4GN9JSGsRqiWK21Ly2bC
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 49:e7:3e:c9:55:56:16:c5:a1:7f:f2:31:ce:1b:e9:ab:8c:5c:e7:92
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN = RSA-2048 keyEncipherment and digitalSignature
- Validity
- Not Before: Jul 1 17:45:04 2020 GMT
- Not After : Jun 29 17:45:04 2030 GMT
- Subject: CN = RSA-2048 keyEncipherment and digitalSignature
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (2048 bit)
- Modulus:
- 00:b5:0d:75:de:94:0a:19:26:26:a8:35:50:23:f9:
- 51:be:b8:59:61:a7:91:89:b7:88:70:61:34:75:a3:
- 1a:97:12:0a:e2:71:2e:84:94:ce:d6:fd:51:c4:26:
- e2:6f:fb:62:85:b5:17:d8:4a:2d:71:2d:5a:e2:b9:
- 11:d9:34:02:e6:2d:6e:34:50:38:b5:a8:a2:5d:2c:
- c1:62:4e:a3:20:fc:11:17:54:ce:4b:d5:b8:00:c3:
- 89:1f:36:6e:c4:c1:9e:b8:0c:27:58:48:f9:cf:ab:
- e3:cd:b4:10:31:9e:6b:f3:a7:fe:df:78:a7:37:de:
- 7a:bd:a6:ff:42:51:55:5e:56:f2:28:bd:df:6e:9f:
- 87:b6:8d:da:99:87:ea:7b:e7:42:f2:d5:48:f1:fb:
- b6:ce:19:3a:31:5f:39:79:f8:8b:09:0c:85:45:e6:
- f3:c6:a1:24:9a:cf:1a:e7:a6:02:30:14:6c:07:d9:
- 6e:bd:c9:2b:0c:04:ce:0a:00:55:ba:18:54:22:14:
- 5c:4e:3c:8f:5a:d6:0c:63:b0:a1:c5:7f:2d:94:fd:
- d1:d1:ca:66:2a:6e:6e:30:f9:a7:e0:a3:f9:59:8c:
- 9b:fd:97:77:90:00:b2:fe:af:8c:10:96:bd:64:2e:
- ad:05:5a:97:14:12:96:43:5b:8d:05:eb:95:1d:60:
- f6:e1
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Key Usage: critical
- Digital Signature, Key Encipherment
- Signature Algorithm: sha256WithRSAEncryption
- 0f:5a:73:cc:20:c1:a3:e6:49:a4:08:4b:73:ec:c2:fd:43:9d:
- a0:b2:7e:17:35:1a:7e:34:2d:68:99:2e:4a:5b:82:0a:20:9e:
- 57:3a:b2:38:bd:57:08:c6:5c:7c:43:3e:5a:57:f0:bf:88:e4:
- 55:fd:be:ae:3e:03:0d:17:cf:d0:e0:c6:0b:8c:de:ed:a6:06:
- c1:6f:90:63:a2:de:e8:53:71:da:67:5a:f2:2a:8c:6f:c5:d9:
- fc:f5:c6:ac:ee:07:b1:cd:b2:5f:42:b0:b2:b2:b0:e6:6d:a0:
- c8:88:1a:f2:37:5d:cb:5f:b3:9d:66:98:32:1d:49:c4:b1:63:
- 5f:44:83:25:b1:32:e5:8a:0e:ca:24:72:eb:c1:17:85:0b:79:
- ce:3e:9f:78:41:c9:c6:45:cc:2f:3e:b2:1f:af:33:27:8c:75:
- e9:8d:3f:6a:eb:54:34:68:0f:ff:9e:4e:21:88:76:f6:41:de:
- c6:69:09:5a:38:05:a7:e3:6b:db:e3:4c:16:64:c9:1c:70:ad:
- 00:1e:01:90:be:9b:f4:ed:42:b7:e8:b2:ff:2d:d5:ca:ba:7b:
- bd:6e:57:51:a2:18:3c:79:43:42:a0:32:5c:df:74:db:41:a5:
- 7c:99:0e:2b:24:6e:f3:e2:5e:b5:43:78:d7:43:c6:29:0d:77:
- 4c:b4:b0:48
------BEGIN CERTIFICATE-----
-MIIDEDCCAfigAwIBAgIUSec+yVVWFsWhf/Ixzhvpq4xc55IwDQYJKoZIhvcNAQEL
-BQAwODE2MDQGA1UEAwwtUlNBLTIwNDgga2V5RW5jaXBoZXJtZW50IGFuZCBkaWdp
-dGFsU2lnbmF0dXJlMB4XDTIwMDcwMTE3NDUwNFoXDTMwMDYyOTE3NDUwNFowODE2
-MDQGA1UEAwwtUlNBLTIwNDgga2V5RW5jaXBoZXJtZW50IGFuZCBkaWdpdGFsU2ln
-bmF0dXJlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtQ113pQKGSYm
-qDVQI/lRvrhZYaeRibeIcGE0daMalxIK4nEuhJTO1v1RxCbib/tihbUX2EotcS1a
-4rkR2TQC5i1uNFA4taiiXSzBYk6jIPwRF1TOS9W4AMOJHzZuxMGeuAwnWEj5z6vj
-zbQQMZ5r86f+33inN956vab/QlFVXlbyKL3fbp+Hto3amYfqe+dC8tVI8fu2zhk6
-MV85efiLCQyFRebzxqEkms8a56YCMBRsB9luvckrDATOCgBVuhhUIhRcTjyPWtYM
-Y7ChxX8tlP3R0cpmKm5uMPmn4KP5WYyb/Zd3kACy/q+MEJa9ZC6tBVqXFBKWQ1uN
-BeuVHWD24QIDAQABoxIwEDAOBgNVHQ8BAf8EBAMCBaAwDQYJKoZIhvcNAQELBQAD
-ggEBAA9ac8wgwaPmSaQIS3Pswv1DnaCyfhc1Gn40LWiZLkpbggognlc6sji9VwjG
-XHxDPlpX8L+I5FX9vq4+Aw0Xz9DgxguM3u2mBsFvkGOi3uhTcdpnWvIqjG/F2fz1
-xqzuB7HNsl9CsLKysOZtoMiIGvI3Xctfs51mmDIdScSxY19EgyWxMuWKDsokcuvB
-F4ULec4+n3hBycZFzC8+sh+vMyeMdemNP2rrVDRoD/+eTiGIdvZB3sZpCVo4Bafj
-a9vjTBZkyRxwrQAeAZC+m/TtQrfosv8t1cq6e71uV1GiGDx5Q0KgMlzfdNtBpXyZ
-DiskbvPiXrVDeNdDxikNd0y0sEg=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/key_usage_rsa_digitalsignature.pem b/src/pki/testdata/ssl/certificates/key_usage_rsa_digitalsignature.pem
deleted file mode 100644
index 1a65ac8..0000000
--- a/src/pki/testdata/ssl/certificates/key_usage_rsa_digitalsignature.pem
+++ /dev/null
@@ -1,99 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC1DXXelAoZJiao
-NVAj+VG+uFlhp5GJt4hwYTR1oxqXEgricS6ElM7W/VHEJuJv+2KFtRfYSi1xLVri
-uRHZNALmLW40UDi1qKJdLMFiTqMg/BEXVM5L1bgAw4kfNm7EwZ64DCdYSPnPq+PN
-tBAxnmvzp/7feKc33nq9pv9CUVVeVvIovd9un4e2jdqZh+p750Ly1Ujx+7bOGTox
-Xzl5+IsJDIVF5vPGoSSazxrnpgIwFGwH2W69ySsMBM4KAFW6GFQiFFxOPI9a1gxj
-sKHFfy2U/dHRymYqbm4w+afgo/lZjJv9l3eQALL+r4wQlr1kLq0FWpcUEpZDW40F
-65UdYPbhAgMBAAECggEBAK90nvCXeH3MuhOyrrpeCDkSgBQiBul2QjPeD6+c48zZ
-QFEXrCPx7czs6wtzP2eUL3Mx/yytHgKbGIO1JDXgsJqOFkl+IKbzCH3RPItfd7kk
-bg+1MMLPF6Ut2Tm1T30/wefMZ2ioN+doRbh4MmVTiHw1Jss8Kpj68unN53tGRLvJ
-VvamRDOrtfhuM2fiKap3FH0bBGQzLJ6ZX6Xpscf3flxQhjCm5XeViBWJUo1tgVGN
-Sq8GgAy/ohVQqmUbvX3Zg/yTtVfoDU44OJ2RLhDoB+5VsMtzu0i4k4zoeR0YgT53
-C4VdSmxDSPlpc0xLTmxugGZBxYSAbnyA1cdeufI5F80CgYEA4KppyNukJKu1ZS2c
-Fqx08cR+PQqTzMOdZE1ZYRNtULI0Y6ajceW/l78OYOzxFQEho4Y00UQZTKUxp5/O
-RxalI7b1zPlW3jXJ+2j8JWH4AnPs4aDEDcJVeuCRwlEZ9C3q3cVcjv2Ty6sNe3pe
-OhupkBwAe6WwT9soDOKTSMvB5hsCgYEAzk3ceZAPXGYnjkFF58rhdFdGV0NKKePD
-kAQDjpsoISCbN0RM4vNA4UNWszRd+Js/2ePVIB/k6SPRXZbcOhu2etzk1tTbeynF
-7EzG5FnMGYykQVz2X1JYA+UT5AnujANJUMH1jjDyHdMFS8/1oYT0OwnnbYZ8/sev
-eYK3MJyAVrMCgYEAgM2SqmIqQA/lhmVYuLMUtMtnaI2Y4OtBYBDsbjhaEsqoOH1/
-9Tu31ULm9nDBYr5sT7kQrO0y5/tJdYWsGJuF/+zUDTjiMbF65FVzQedh7d4Sb+Tg
-odbJdRIs3s/qZlCw94ZAI4aD5l9h8mncfcoAM6uqJzl91Lqbwo9fy3tt5gMCgYBG
-kqYQQ7KthhiT9kpGn8V+OfjLEy7Eo7CbjHP3DaatpmzSfB/dJx+Tr6hyB0D6MYmn
-LOQUaDSzeFg/rsLJcf97iiMSRqCKQmD9k8oaBYnnV5A89+Mj+pQ3SN8EDE25QcqL
-wL4SlTXN9AkExTAev8+YfqvXcMFDmuWxKIEoNPFGNwKBgDEWCNvj86HZnQH+7ANc
-84HzHNzBz3XEtn09FeLA69r+C9vLqodxgTvPNdif42Igw4mK640jUP5JruJZ0kq0
-jYsF2yzgpVFfYbo7hU4ZGCZM24WhHhaXLE6Oi/ExCAqstLwCpaVTS1FoljtcNV7P
-mZfK4GN9JSGsRqiWK21Ly2bC
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 34:89:46:9e:a3:b8:36:7b:92:51:76:f8:42:69:93:a7:cf:ce:50:e2
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN = RSA-2048 digitalSignature
- Validity
- Not Before: Jul 1 17:45:04 2020 GMT
- Not After : Jun 29 17:45:04 2030 GMT
- Subject: CN = RSA-2048 digitalSignature
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (2048 bit)
- Modulus:
- 00:b5:0d:75:de:94:0a:19:26:26:a8:35:50:23:f9:
- 51:be:b8:59:61:a7:91:89:b7:88:70:61:34:75:a3:
- 1a:97:12:0a:e2:71:2e:84:94:ce:d6:fd:51:c4:26:
- e2:6f:fb:62:85:b5:17:d8:4a:2d:71:2d:5a:e2:b9:
- 11:d9:34:02:e6:2d:6e:34:50:38:b5:a8:a2:5d:2c:
- c1:62:4e:a3:20:fc:11:17:54:ce:4b:d5:b8:00:c3:
- 89:1f:36:6e:c4:c1:9e:b8:0c:27:58:48:f9:cf:ab:
- e3:cd:b4:10:31:9e:6b:f3:a7:fe:df:78:a7:37:de:
- 7a:bd:a6:ff:42:51:55:5e:56:f2:28:bd:df:6e:9f:
- 87:b6:8d:da:99:87:ea:7b:e7:42:f2:d5:48:f1:fb:
- b6:ce:19:3a:31:5f:39:79:f8:8b:09:0c:85:45:e6:
- f3:c6:a1:24:9a:cf:1a:e7:a6:02:30:14:6c:07:d9:
- 6e:bd:c9:2b:0c:04:ce:0a:00:55:ba:18:54:22:14:
- 5c:4e:3c:8f:5a:d6:0c:63:b0:a1:c5:7f:2d:94:fd:
- d1:d1:ca:66:2a:6e:6e:30:f9:a7:e0:a3:f9:59:8c:
- 9b:fd:97:77:90:00:b2:fe:af:8c:10:96:bd:64:2e:
- ad:05:5a:97:14:12:96:43:5b:8d:05:eb:95:1d:60:
- f6:e1
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Key Usage: critical
- Digital Signature
- Signature Algorithm: sha256WithRSAEncryption
- 8a:23:82:ea:a0:d9:96:ad:0b:3b:1f:b5:02:a9:bf:65:85:28:
- fb:c5:a9:ca:bc:90:9e:65:48:80:ae:d0:92:a5:4b:d4:ac:0d:
- 5c:72:4c:9b:e3:8e:29:e9:8d:04:81:ff:bb:86:92:3f:1e:63:
- 77:51:ea:84:48:e6:50:37:b2:22:2f:36:19:40:f9:de:b0:3d:
- bf:78:09:66:7a:33:66:f6:b9:87:60:e8:e9:76:a2:d3:70:91:
- 1c:4a:3a:7a:21:71:5b:31:f1:7a:81:5d:fa:ce:ca:82:6d:f3:
- 34:9e:ff:ba:2d:3d:84:a6:7b:6b:35:09:73:37:ee:09:f9:5d:
- 67:41:2a:a7:97:20:00:06:9c:da:d4:fc:03:e2:1f:3d:84:0d:
- a0:24:f0:00:87:79:7f:d6:6d:be:40:b1:d9:ab:a2:74:eb:f7:
- 4a:d1:f6:d9:30:10:71:0e:56:34:f4:3c:8a:73:69:c1:2b:ce:
- 6a:5f:a0:43:5d:89:35:fa:4a:8c:8b:8f:4a:df:e6:17:92:20:
- b5:1a:13:da:11:d1:3b:10:f8:2f:7e:84:b7:13:e5:67:38:44:
- 6b:04:ab:e6:bc:3c:48:46:f2:43:fb:79:2d:0c:3d:7d:35:12:
- df:90:54:7b:93:ed:fa:c4:62:f3:5b:54:a8:88:0c:da:0f:e5:
- 51:dc:84:fa
------BEGIN CERTIFICATE-----
-MIIC6DCCAdCgAwIBAgIUNIlGnqO4NnuSUXb4QmmTp8/OUOIwDQYJKoZIhvcNAQEL
-BQAwJDEiMCAGA1UEAwwZUlNBLTIwNDggZGlnaXRhbFNpZ25hdHVyZTAeFw0yMDA3
-MDExNzQ1MDRaFw0zMDA2MjkxNzQ1MDRaMCQxIjAgBgNVBAMMGVJTQS0yMDQ4IGRp
-Z2l0YWxTaWduYXR1cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1
-DXXelAoZJiaoNVAj+VG+uFlhp5GJt4hwYTR1oxqXEgricS6ElM7W/VHEJuJv+2KF
-tRfYSi1xLVriuRHZNALmLW40UDi1qKJdLMFiTqMg/BEXVM5L1bgAw4kfNm7EwZ64
-DCdYSPnPq+PNtBAxnmvzp/7feKc33nq9pv9CUVVeVvIovd9un4e2jdqZh+p750Ly
-1Ujx+7bOGToxXzl5+IsJDIVF5vPGoSSazxrnpgIwFGwH2W69ySsMBM4KAFW6GFQi
-FFxOPI9a1gxjsKHFfy2U/dHRymYqbm4w+afgo/lZjJv9l3eQALL+r4wQlr1kLq0F
-WpcUEpZDW40F65UdYPbhAgMBAAGjEjAQMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG
-9w0BAQsFAAOCAQEAiiOC6qDZlq0LOx+1Aqm/ZYUo+8WpyryQnmVIgK7QkqVL1KwN
-XHJMm+OOKemNBIH/u4aSPx5jd1HqhEjmUDeyIi82GUD53rA9v3gJZnozZva5h2Do
-6Xai03CRHEo6eiFxWzHxeoFd+s7Kgm3zNJ7/ui09hKZ7azUJczfuCfldZ0Eqp5cg
-AAac2tT8A+IfPYQNoCTwAId5f9ZtvkCx2auidOv3StH22TAQcQ5WNPQ8inNpwSvO
-al+gQ12JNfpKjIuPSt/mF5IgtRoT2hHROxD4L36EtxPlZzhEawSr5rw8SEbyQ/t5
-LQw9fTUS35BUe5Pt+sRi81tUqIgM2g/lUdyE+g==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/key_usage_rsa_keyencipherment.pem b/src/pki/testdata/ssl/certificates/key_usage_rsa_keyencipherment.pem
deleted file mode 100644
index 362b6b6..0000000
--- a/src/pki/testdata/ssl/certificates/key_usage_rsa_keyencipherment.pem
+++ /dev/null
@@ -1,99 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC1DXXelAoZJiao
-NVAj+VG+uFlhp5GJt4hwYTR1oxqXEgricS6ElM7W/VHEJuJv+2KFtRfYSi1xLVri
-uRHZNALmLW40UDi1qKJdLMFiTqMg/BEXVM5L1bgAw4kfNm7EwZ64DCdYSPnPq+PN
-tBAxnmvzp/7feKc33nq9pv9CUVVeVvIovd9un4e2jdqZh+p750Ly1Ujx+7bOGTox
-Xzl5+IsJDIVF5vPGoSSazxrnpgIwFGwH2W69ySsMBM4KAFW6GFQiFFxOPI9a1gxj
-sKHFfy2U/dHRymYqbm4w+afgo/lZjJv9l3eQALL+r4wQlr1kLq0FWpcUEpZDW40F
-65UdYPbhAgMBAAECggEBAK90nvCXeH3MuhOyrrpeCDkSgBQiBul2QjPeD6+c48zZ
-QFEXrCPx7czs6wtzP2eUL3Mx/yytHgKbGIO1JDXgsJqOFkl+IKbzCH3RPItfd7kk
-bg+1MMLPF6Ut2Tm1T30/wefMZ2ioN+doRbh4MmVTiHw1Jss8Kpj68unN53tGRLvJ
-VvamRDOrtfhuM2fiKap3FH0bBGQzLJ6ZX6Xpscf3flxQhjCm5XeViBWJUo1tgVGN
-Sq8GgAy/ohVQqmUbvX3Zg/yTtVfoDU44OJ2RLhDoB+5VsMtzu0i4k4zoeR0YgT53
-C4VdSmxDSPlpc0xLTmxugGZBxYSAbnyA1cdeufI5F80CgYEA4KppyNukJKu1ZS2c
-Fqx08cR+PQqTzMOdZE1ZYRNtULI0Y6ajceW/l78OYOzxFQEho4Y00UQZTKUxp5/O
-RxalI7b1zPlW3jXJ+2j8JWH4AnPs4aDEDcJVeuCRwlEZ9C3q3cVcjv2Ty6sNe3pe
-OhupkBwAe6WwT9soDOKTSMvB5hsCgYEAzk3ceZAPXGYnjkFF58rhdFdGV0NKKePD
-kAQDjpsoISCbN0RM4vNA4UNWszRd+Js/2ePVIB/k6SPRXZbcOhu2etzk1tTbeynF
-7EzG5FnMGYykQVz2X1JYA+UT5AnujANJUMH1jjDyHdMFS8/1oYT0OwnnbYZ8/sev
-eYK3MJyAVrMCgYEAgM2SqmIqQA/lhmVYuLMUtMtnaI2Y4OtBYBDsbjhaEsqoOH1/
-9Tu31ULm9nDBYr5sT7kQrO0y5/tJdYWsGJuF/+zUDTjiMbF65FVzQedh7d4Sb+Tg
-odbJdRIs3s/qZlCw94ZAI4aD5l9h8mncfcoAM6uqJzl91Lqbwo9fy3tt5gMCgYBG
-kqYQQ7KthhiT9kpGn8V+OfjLEy7Eo7CbjHP3DaatpmzSfB/dJx+Tr6hyB0D6MYmn
-LOQUaDSzeFg/rsLJcf97iiMSRqCKQmD9k8oaBYnnV5A89+Mj+pQ3SN8EDE25QcqL
-wL4SlTXN9AkExTAev8+YfqvXcMFDmuWxKIEoNPFGNwKBgDEWCNvj86HZnQH+7ANc
-84HzHNzBz3XEtn09FeLA69r+C9vLqodxgTvPNdif42Igw4mK640jUP5JruJZ0kq0
-jYsF2yzgpVFfYbo7hU4ZGCZM24WhHhaXLE6Oi/ExCAqstLwCpaVTS1FoljtcNV7P
-mZfK4GN9JSGsRqiWK21Ly2bC
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 01:1f:2f:6e:e9:f3:7b:74:ba:87:90:bf:40:e4:a1:f0:fd:cd:35:7f
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN = RSA-2048 keyEncipherment
- Validity
- Not Before: Jul 1 17:45:04 2020 GMT
- Not After : Jun 29 17:45:04 2030 GMT
- Subject: CN = RSA-2048 keyEncipherment
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (2048 bit)
- Modulus:
- 00:b5:0d:75:de:94:0a:19:26:26:a8:35:50:23:f9:
- 51:be:b8:59:61:a7:91:89:b7:88:70:61:34:75:a3:
- 1a:97:12:0a:e2:71:2e:84:94:ce:d6:fd:51:c4:26:
- e2:6f:fb:62:85:b5:17:d8:4a:2d:71:2d:5a:e2:b9:
- 11:d9:34:02:e6:2d:6e:34:50:38:b5:a8:a2:5d:2c:
- c1:62:4e:a3:20:fc:11:17:54:ce:4b:d5:b8:00:c3:
- 89:1f:36:6e:c4:c1:9e:b8:0c:27:58:48:f9:cf:ab:
- e3:cd:b4:10:31:9e:6b:f3:a7:fe:df:78:a7:37:de:
- 7a:bd:a6:ff:42:51:55:5e:56:f2:28:bd:df:6e:9f:
- 87:b6:8d:da:99:87:ea:7b:e7:42:f2:d5:48:f1:fb:
- b6:ce:19:3a:31:5f:39:79:f8:8b:09:0c:85:45:e6:
- f3:c6:a1:24:9a:cf:1a:e7:a6:02:30:14:6c:07:d9:
- 6e:bd:c9:2b:0c:04:ce:0a:00:55:ba:18:54:22:14:
- 5c:4e:3c:8f:5a:d6:0c:63:b0:a1:c5:7f:2d:94:fd:
- d1:d1:ca:66:2a:6e:6e:30:f9:a7:e0:a3:f9:59:8c:
- 9b:fd:97:77:90:00:b2:fe:af:8c:10:96:bd:64:2e:
- ad:05:5a:97:14:12:96:43:5b:8d:05:eb:95:1d:60:
- f6:e1
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Key Usage: critical
- Key Encipherment
- Signature Algorithm: sha256WithRSAEncryption
- 3c:1b:15:b3:72:84:5a:81:97:bf:64:f9:e6:73:e7:e3:50:6b:
- df:f9:e3:c7:27:10:ce:8c:b1:c1:d4:67:75:68:c1:c1:7d:6c:
- 24:e4:c4:1e:ca:a9:64:58:46:b8:5d:0f:ea:f0:ab:ed:97:f1:
- 1e:f0:b7:48:60:71:1c:01:42:70:31:8e:19:af:51:f4:47:f3:
- 26:00:b3:1c:25:5c:fa:22:83:51:8f:5c:f3:c1:e6:43:2d:d2:
- b0:40:c6:c6:dd:87:58:2d:8e:71:da:a0:3c:32:3b:f5:b3:8b:
- 88:94:50:cc:1e:51:a1:f8:cc:d9:aa:90:77:d7:95:59:29:dd:
- ff:e9:fa:0e:94:8f:f7:77:c9:6c:29:b6:a2:e9:3f:59:99:12:
- c1:78:06:d1:84:72:8e:14:c3:ca:51:4e:d7:47:8f:e1:c0:4c:
- ea:94:70:1e:48:a7:0e:b2:0c:12:c9:08:c7:78:0f:aa:be:26:
- 8b:fc:e8:58:cd:1e:89:01:a2:15:c8:0a:52:e0:6c:8f:90:c3:
- 2b:d5:30:b6:37:c9:98:4f:34:e3:1e:21:e8:d5:0f:70:6b:7c:
- 1f:d4:6e:99:4f:e3:50:78:61:ec:40:52:2f:d6:01:03:53:f1:
- cd:97:94:1a:44:2b:71:ab:eb:07:45:16:50:dd:4c:96:1d:c8:
- d5:7a:e9:3f
------BEGIN CERTIFICATE-----
-MIIC5jCCAc6gAwIBAgIUAR8vbunze3S6h5C/QOSh8P3NNX8wDQYJKoZIhvcNAQEL
-BQAwIzEhMB8GA1UEAwwYUlNBLTIwNDgga2V5RW5jaXBoZXJtZW50MB4XDTIwMDcw
-MTE3NDUwNFoXDTMwMDYyOTE3NDUwNFowIzEhMB8GA1UEAwwYUlNBLTIwNDgga2V5
-RW5jaXBoZXJtZW50MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtQ11
-3pQKGSYmqDVQI/lRvrhZYaeRibeIcGE0daMalxIK4nEuhJTO1v1RxCbib/tihbUX
-2EotcS1a4rkR2TQC5i1uNFA4taiiXSzBYk6jIPwRF1TOS9W4AMOJHzZuxMGeuAwn
-WEj5z6vjzbQQMZ5r86f+33inN956vab/QlFVXlbyKL3fbp+Hto3amYfqe+dC8tVI
-8fu2zhk6MV85efiLCQyFRebzxqEkms8a56YCMBRsB9luvckrDATOCgBVuhhUIhRc
-TjyPWtYMY7ChxX8tlP3R0cpmKm5uMPmn4KP5WYyb/Zd3kACy/q+MEJa9ZC6tBVqX
-FBKWQ1uNBeuVHWD24QIDAQABoxIwEDAOBgNVHQ8BAf8EBAMCBSAwDQYJKoZIhvcN
-AQELBQADggEBADwbFbNyhFqBl79k+eZz5+NQa9/548cnEM6MscHUZ3VowcF9bCTk
-xB7KqWRYRrhdD+rwq+2X8R7wt0hgcRwBQnAxjhmvUfRH8yYAsxwlXPoig1GPXPPB
-5kMt0rBAxsbdh1gtjnHaoDwyO/Wzi4iUUMweUaH4zNmqkHfXlVkp3f/p+g6Uj/d3
-yWwptqLpP1mZEsF4BtGEco4Uw8pRTtdHj+HATOqUcB5Ipw6yDBLJCMd4D6q+Jov8
-6FjNHokBohXIClLgbI+QwyvVMLY3yZhPNOMeIejVD3BrfB/UbplP41B4YexAUi/W
-AQNT8c2XlBpEK3Gr6wdFFlDdTJYdyNV66T8=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/key_usage_rsa_no_extension.pem b/src/pki/testdata/ssl/certificates/key_usage_rsa_no_extension.pem
deleted file mode 100644
index a48854b..0000000
--- a/src/pki/testdata/ssl/certificates/key_usage_rsa_no_extension.pem
+++ /dev/null
@@ -1,96 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC1DXXelAoZJiao
-NVAj+VG+uFlhp5GJt4hwYTR1oxqXEgricS6ElM7W/VHEJuJv+2KFtRfYSi1xLVri
-uRHZNALmLW40UDi1qKJdLMFiTqMg/BEXVM5L1bgAw4kfNm7EwZ64DCdYSPnPq+PN
-tBAxnmvzp/7feKc33nq9pv9CUVVeVvIovd9un4e2jdqZh+p750Ly1Ujx+7bOGTox
-Xzl5+IsJDIVF5vPGoSSazxrnpgIwFGwH2W69ySsMBM4KAFW6GFQiFFxOPI9a1gxj
-sKHFfy2U/dHRymYqbm4w+afgo/lZjJv9l3eQALL+r4wQlr1kLq0FWpcUEpZDW40F
-65UdYPbhAgMBAAECggEBAK90nvCXeH3MuhOyrrpeCDkSgBQiBul2QjPeD6+c48zZ
-QFEXrCPx7czs6wtzP2eUL3Mx/yytHgKbGIO1JDXgsJqOFkl+IKbzCH3RPItfd7kk
-bg+1MMLPF6Ut2Tm1T30/wefMZ2ioN+doRbh4MmVTiHw1Jss8Kpj68unN53tGRLvJ
-VvamRDOrtfhuM2fiKap3FH0bBGQzLJ6ZX6Xpscf3flxQhjCm5XeViBWJUo1tgVGN
-Sq8GgAy/ohVQqmUbvX3Zg/yTtVfoDU44OJ2RLhDoB+5VsMtzu0i4k4zoeR0YgT53
-C4VdSmxDSPlpc0xLTmxugGZBxYSAbnyA1cdeufI5F80CgYEA4KppyNukJKu1ZS2c
-Fqx08cR+PQqTzMOdZE1ZYRNtULI0Y6ajceW/l78OYOzxFQEho4Y00UQZTKUxp5/O
-RxalI7b1zPlW3jXJ+2j8JWH4AnPs4aDEDcJVeuCRwlEZ9C3q3cVcjv2Ty6sNe3pe
-OhupkBwAe6WwT9soDOKTSMvB5hsCgYEAzk3ceZAPXGYnjkFF58rhdFdGV0NKKePD
-kAQDjpsoISCbN0RM4vNA4UNWszRd+Js/2ePVIB/k6SPRXZbcOhu2etzk1tTbeynF
-7EzG5FnMGYykQVz2X1JYA+UT5AnujANJUMH1jjDyHdMFS8/1oYT0OwnnbYZ8/sev
-eYK3MJyAVrMCgYEAgM2SqmIqQA/lhmVYuLMUtMtnaI2Y4OtBYBDsbjhaEsqoOH1/
-9Tu31ULm9nDBYr5sT7kQrO0y5/tJdYWsGJuF/+zUDTjiMbF65FVzQedh7d4Sb+Tg
-odbJdRIs3s/qZlCw94ZAI4aD5l9h8mncfcoAM6uqJzl91Lqbwo9fy3tt5gMCgYBG
-kqYQQ7KthhiT9kpGn8V+OfjLEy7Eo7CbjHP3DaatpmzSfB/dJx+Tr6hyB0D6MYmn
-LOQUaDSzeFg/rsLJcf97iiMSRqCKQmD9k8oaBYnnV5A89+Mj+pQ3SN8EDE25QcqL
-wL4SlTXN9AkExTAev8+YfqvXcMFDmuWxKIEoNPFGNwKBgDEWCNvj86HZnQH+7ANc
-84HzHNzBz3XEtn09FeLA69r+C9vLqodxgTvPNdif42Igw4mK640jUP5JruJZ0kq0
-jYsF2yzgpVFfYbo7hU4ZGCZM24WhHhaXLE6Oi/ExCAqstLwCpaVTS1FoljtcNV7P
-mZfK4GN9JSGsRqiWK21Ly2bC
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 77:a5:a7:19:39:55:bf:33:16:38:f4:8a:36:a0:0b:09:ae:52:51:2c
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN = RSA-2048 no keyUsage extension
- Validity
- Not Before: Jul 1 17:45:04 2020 GMT
- Not After : Jun 29 17:45:04 2030 GMT
- Subject: CN = RSA-2048 no keyUsage extension
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (2048 bit)
- Modulus:
- 00:b5:0d:75:de:94:0a:19:26:26:a8:35:50:23:f9:
- 51:be:b8:59:61:a7:91:89:b7:88:70:61:34:75:a3:
- 1a:97:12:0a:e2:71:2e:84:94:ce:d6:fd:51:c4:26:
- e2:6f:fb:62:85:b5:17:d8:4a:2d:71:2d:5a:e2:b9:
- 11:d9:34:02:e6:2d:6e:34:50:38:b5:a8:a2:5d:2c:
- c1:62:4e:a3:20:fc:11:17:54:ce:4b:d5:b8:00:c3:
- 89:1f:36:6e:c4:c1:9e:b8:0c:27:58:48:f9:cf:ab:
- e3:cd:b4:10:31:9e:6b:f3:a7:fe:df:78:a7:37:de:
- 7a:bd:a6:ff:42:51:55:5e:56:f2:28:bd:df:6e:9f:
- 87:b6:8d:da:99:87:ea:7b:e7:42:f2:d5:48:f1:fb:
- b6:ce:19:3a:31:5f:39:79:f8:8b:09:0c:85:45:e6:
- f3:c6:a1:24:9a:cf:1a:e7:a6:02:30:14:6c:07:d9:
- 6e:bd:c9:2b:0c:04:ce:0a:00:55:ba:18:54:22:14:
- 5c:4e:3c:8f:5a:d6:0c:63:b0:a1:c5:7f:2d:94:fd:
- d1:d1:ca:66:2a:6e:6e:30:f9:a7:e0:a3:f9:59:8c:
- 9b:fd:97:77:90:00:b2:fe:af:8c:10:96:bd:64:2e:
- ad:05:5a:97:14:12:96:43:5b:8d:05:eb:95:1d:60:
- f6:e1
- Exponent: 65537 (0x10001)
- Signature Algorithm: sha256WithRSAEncryption
- 0f:6e:2d:5a:08:c5:3e:62:2a:77:1c:ab:d2:65:50:20:66:16:
- 9e:43:2e:74:8d:38:5b:54:8a:56:85:37:9b:3c:1f:f2:f2:84:
- 83:63:ac:00:da:cb:0f:4a:81:d4:d4:af:13:88:4c:c2:24:9c:
- c1:cb:db:21:c7:b7:85:78:ff:12:ff:f4:63:99:40:9b:58:a0:
- 23:25:5f:5f:dc:c7:64:46:47:4d:d8:ef:cc:96:38:e7:83:2a:
- 1e:7b:fd:d1:39:3d:ff:a7:90:d7:66:53:6d:3a:ad:0f:0f:a2:
- 8e:c5:71:95:33:18:89:79:1c:d4:bc:8e:0d:b7:ca:ab:25:03:
- 45:c6:2d:6c:dc:52:7a:06:b5:b9:8a:18:3c:8c:50:9a:e6:d8:
- 17:de:69:af:0d:d3:50:03:ee:99:53:be:aa:a3:08:7d:a0:30:
- 0f:22:74:c8:8c:f3:c1:3c:c8:4a:84:ae:c0:aa:01:7f:6e:63:
- a5:29:a6:03:a8:fb:25:77:d3:0f:e1:df:89:c1:9f:b3:1c:30:
- 36:73:74:66:cf:1f:2d:91:c2:42:99:51:66:3f:c4:36:c4:71:
- f0:01:33:aa:ba:18:9d:f8:24:ca:dd:53:a1:99:98:e8:95:a5:
- 59:29:7d:cf:dc:93:9c:59:f9:85:f7:f3:98:cb:11:f0:b7:53:
- df:3c:cb:07
------BEGIN CERTIFICATE-----
-MIIC3jCCAcagAwIBAgIUd6WnGTlVvzMWOPSKNqALCa5SUSwwDQYJKoZIhvcNAQEL
-BQAwKTEnMCUGA1UEAwweUlNBLTIwNDggbm8ga2V5VXNhZ2UgZXh0ZW5zaW9uMB4X
-DTIwMDcwMTE3NDUwNFoXDTMwMDYyOTE3NDUwNFowKTEnMCUGA1UEAwweUlNBLTIw
-NDggbm8ga2V5VXNhZ2UgZXh0ZW5zaW9uMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
-MIIBCgKCAQEAtQ113pQKGSYmqDVQI/lRvrhZYaeRibeIcGE0daMalxIK4nEuhJTO
-1v1RxCbib/tihbUX2EotcS1a4rkR2TQC5i1uNFA4taiiXSzBYk6jIPwRF1TOS9W4
-AMOJHzZuxMGeuAwnWEj5z6vjzbQQMZ5r86f+33inN956vab/QlFVXlbyKL3fbp+H
-to3amYfqe+dC8tVI8fu2zhk6MV85efiLCQyFRebzxqEkms8a56YCMBRsB9luvckr
-DATOCgBVuhhUIhRcTjyPWtYMY7ChxX8tlP3R0cpmKm5uMPmn4KP5WYyb/Zd3kACy
-/q+MEJa9ZC6tBVqXFBKWQ1uNBeuVHWD24QIDAQABMA0GCSqGSIb3DQEBCwUAA4IB
-AQAPbi1aCMU+Yip3HKvSZVAgZhaeQy50jThbVIpWhTebPB/y8oSDY6wA2ssPSoHU
-1K8TiEzCJJzBy9shx7eFeP8S//RjmUCbWKAjJV9f3MdkRkdN2O/Mljjngyoee/3R
-OT3/p5DXZlNtOq0PD6KOxXGVMxiJeRzUvI4Nt8qrJQNFxi1s3FJ6BrW5ihg8jFCa
-5tgX3mmvDdNQA+6ZU76qowh9oDAPInTIjPPBPMhKhK7AqgF/bmOlKaYDqPsld9MP
-4d+JwZ+zHDA2c3Rmzx8tkcJCmVFmP8Q2xHHwATOquhid+CTK3VOhmZjolaVZKX3P
-3JOcWfmF9/OYyxHwt1PfPMsH
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/large_key.pem b/src/pki/testdata/ssl/certificates/large_key.pem
deleted file mode 100644
index a5d367c..0000000
--- a/src/pki/testdata/ssl/certificates/large_key.pem
+++ /dev/null
@@ -1,196 +0,0 @@
-Certificate:
- Data:
- Version: 1 (0x0)
- Serial Number:
- 72:5e:0f:a7:45:eb:e6:7a:d2:0a:7d:88:4a:cb:be:44:34:11:3a:d2
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C = US, ST = California, L = Mountain View, O = Test CA, CN = 127.0.0.1
- Validity
- Not Before: Oct 3 17:20:25 2022 GMT
- Not After : Sep 30 17:20:25 2032 GMT
- Subject: C = US, ST = California, L = Mountain View, O = Test CA, CN = 127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (8200 bit)
- Modulus:
- 00:a8:42:16:8f:ad:e3:47:23:3c:83:29:5c:42:44:
- 06:fc:2a:99:48:d5:58:0f:98:49:cf:8b:2b:9f:04:
- 24:77:2d:7c:a9:f8:47:4a:6c:74:ce:42:5c:c5:4a:
- 31:13:2a:a9:83:53:28:83:a7:dc:4b:f0:7b:36:31:
- 5b:20:48:9d:33:d6:dd:af:99:da:56:d1:fe:b7:d9:
- 84:0f:40:87:a2:c4:57:bb:24:26:43:83:df:ed:47:
- f6:78:e8:c9:6a:cd:e6:de:d4:e2:2d:b0:89:d4:ad:
- 31:13:65:e2:c1:1e:e5:f2:2e:89:66:e6:37:25:24:
- e2:51:27:31:72:1e:5d:b8:98:7a:a3:ab:94:f7:36:
- fa:76:f1:fc:24:5e:04:9d:3b:6b:43:cc:71:75:20:
- f6:09:4e:54:2b:33:2e:c2:ce:a2:64:af:cb:c0:e6:
- 05:4d:76:1a:31:7a:f1:4d:d4:c4:b0:ea:ca:c5:a4:
- 3c:ff:10:4e:79:eb:bd:b2:ec:57:6d:83:57:84:30:
- 10:87:4f:ea:29:a7:73:73:61:d9:f2:54:14:37:00:
- da:f6:4a:5e:06:d2:d6:6d:a5:61:9d:59:45:82:6e:
- 0a:da:bf:91:c9:c1:af:4b:75:2a:bf:3d:af:7d:51:
- 4d:d0:f5:2d:e7:b0:57:d1:37:0d:40:94:5a:76:7a:
- a9:5d:84:83:9d:34:9f:54:86:f5:4c:f3:b7:ec:69:
- 07:d0:27:80:7a:2e:c7:af:64:37:96:6d:40:31:53:
- 48:cd:9e:5f:cc:8e:39:42:32:29:0b:72:22:58:25:
- 56:a9:e9:81:1c:ee:18:77:d3:d9:bc:4f:c6:4b:a9:
- 9a:9f:20:40:07:17:71:34:a1:f1:8c:ff:ad:bd:8d:
- 60:fc:00:7e:b4:53:b4:ac:58:5f:99:9b:e1:46:05:
- 7a:28:b0:09:f2:58:26:88:2c:67:91:19:d5:7e:9e:
- c8:f0:a8:75:d5:e8:ff:23:9d:cd:0f:23:99:8f:1c:
- 35:5e:dc:56:09:1f:71:a0:e0:32:77:e9:3b:db:99:
- 3e:e2:05:97:38:7d:21:ad:9b:5c:40:0a:b1:36:12:
- d9:cc:bc:a8:03:76:ad:26:04:97:3b:7c:27:09:c4:
- 86:93:28:c0:a8:15:ca:4b:54:10:2b:50:4d:58:5f:
- e1:4b:4a:04:66:4a:11:f3:ad:09:4a:07:df:7d:36:
- ff:0e:5d:1c:b9:6b:8d:ea:1f:b9:83:32:33:ee:1e:
- 5c:e7:5b:1c:7e:ae:b6:cf:08:83:4b:fe:5f:1f:70:
- ba:56:24:b8:76:12:c5:2e:f5:d6:ef:9b:83:77:17:
- 4c:90:63:bc:94:55:83:56:d3:94:14:5f:78:2a:37:
- cf:e1:8d:c1:f2:e8:fd:70:e1:75:da:8f:f9:2a:ee:
- 6a:5f:ef:b2:2e:6f:d7:fc:a0:8e:da:59:86:74:2e:
- 21:31:bd:dd:f2:90:c1:82:6b:1e:1c:5f:b0:13:94:
- da:4f:de:2e:30:75:a1:37:89:6b:52:8d:05:a1:24:
- 65:5d:29:74:56:2e:95:98:ce:5a:cd:d8:ea:67:2f:
- e3:b6:fd:0e:28:5d:65:3a:ff:f7:c6:ea:67:e4:8d:
- 5a:84:d1:01:ad:58:19:8d:63:5f:c9:03:5a:b8:c3:
- 36:73:ab:d7:54:fc:9f:82:7c:aa:ad:0f:78:b6:1a:
- f2:87:6a:f8:ec:9e:84:bf:52:37:ef:d2:9f:d1:79:
- 7f:dd:73:ad:06:28:6b:88:81:52:a6:e4:91:3e:36:
- 39:77:be:75:32:3d:c9:c1:0d:05:b2:b2:59:73:f9:
- 92:87:2f:29:98:57:cc:7d:bb:eb:ad:f3:50:b1:d6:
- 82:73:54:cd:5d:a1:fa:45:73:7d:1e:59:ff:3e:a2:
- de:93:f9:98:db:d4:d0:68:12:1b:27:11:85:01:8e:
- 85:bb:ef:a9:33:9d:d1:6b:4f:08:38:b3:db:39:0e:
- 10:c1:83:d9:1b:ca:43:57:81:81:fc:c0:cb:73:5b:
- 12:73:f7:a8:57:cb:bf:bf:f0:39:7c:21:a2:a3:47:
- ca:42:9e:a3:27:56:3f:7d:01:18:da:35:31:d3:9b:
- ca:b6:79:24:1e:6e:67:47:7c:f1:06:78:f3:ff:f6:
- f9:a2:18:9f:f1:ec:ac:f9:20:b7:10:f3:62:72:f7:
- 5b:db:f4:b0:89:6b:33:e6:dd:5f:a3:1e:59:ed:fb:
- f9:e2:d0:4d:8f:4c:9c:99:f0:4d:d6:3c:4a:9f:a0:
- 06:c7:31:51:b8:60:58:38:1f:a6:74:f7:b4:59:f2:
- 89:74:42:55:d8:d9:01:f1:22:b9:e9:11:45:93:c3:
- 5d:22:cc:a0:a0:26:a8:38:d7:fd:8d:af:4c:1d:b2:
- 46:6d:b7:ae:c9:b4:be:77:22:28:bc:4c:e0:76:de:
- fe:69:9c:51:28:06:53:67:33:f0:52:64:ee:4a:b7:
- 37:25:ce:f5:35:86:06:58:42:80:5e:65:87:78:db:
- ec:fb:41:40:2c:d1:c0:1f:87:5e:83:59:5d:91:fe:
- 40:e9:1e:e5:fc:23:62:fa:cc:5c:1b:f6:85:30:e8:
- c6:28:0e:b8:4d:2c:c4:84:55:f8:fb:40:4d:89:46:
- 2c:95:b6:84:c7:61:b7:a7:3b:ea:01:dd:33:cd:bc:
- 9f:2c:3e:13:3d:b6:12:05:b2:de:bb:aa:d2:91:c4:
- ad:c4:69:9c:0e:34:e1:77:6a:46:d5:d1:43:3d:aa:
- 24:07:d8:5c:57:e7
- Exponent: 65537 (0x10001)
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- a3:87:11:43:6d:15:9d:52:66:13:06:87:28:ca:53:75:8e:53:
- 2d:1d:1f:d7:95:a7:46:30:fe:e8:33:b4:72:4a:60:19:90:6b:
- 26:77:f5:11:9e:fb:1a:53:24:96:fd:93:de:ef:ec:68:5a:7a:
- 10:36:8d:5c:2d:35:5a:ea:69:30:bc:4d:3d:b2:9d:ec:c8:9c:
- a0:c2:b5:60:b9:bc:12:aa:90:89:48:13:3e:b6:f9:7d:58:a4:
- 38:bf:21:ab:7c:ad:97:4f:27:8c:40:c9:4a:86:31:28:6c:d2:
- f7:da:79:ee:d9:7e:34:df:54:ad:71:44:a8:35:39:94:b8:69:
- 1f:d3:30:ec:e6:96:21:76:ce:bb:1d:4c:d8:d1:f7:c8:94:89:
- 8a:cf:86:de:9e:4a:ea:22:37:91:73:ee:67:63:35:f6:23:5b:
- 3f:22:e7:43:06:9b:ce:b0:42:76:b0:fb:a4:30:ed:67:42:b3:
- 66:dd:37:4d:cd:9b:5b:22:f6:39:cd:f2:f3:c6:d9:a0:60:00:
- b8:66:2f:bf:d6:b9:7d:d2:1e:45:06:48:cc:d4:24:7b:2d:87:
- 79:1a:a4:53:ba:6b:e2:c5:9a:d5:2a:57:58:ec:fe:a8:0c:df:
- 85:79:d7:07:f2:6e:09:f7:f5:40:92:71:b3:73:f4:ea:78:c0:
- 46:a0:e8:d2:c6:5e:d7:8a:ab:39:21:21:25:0d:fd:ea:72:cc:
- b3:75:83:3c:cc:15:e0:7b:f9:25:77:62:ee:97:bc:a4:50:3d:
- f3:29:8e:c4:8d:49:51:b2:e2:42:ac:a6:a9:7b:ba:f7:f8:8d:
- c6:b1:15:9b:7f:61:50:f9:8d:61:66:25:6b:88:e5:2e:91:b3:
- b2:2b:a7:f3:45:c5:3b:4f:65:95:f5:c2:15:a8:d2:3e:36:bb:
- d6:70:0e:db:54:c4:d9:df:1c:03:81:79:49:b6:bd:50:00:85:
- c3:12:4f:21:97:c9:77:25:93:bc:08:fb:98:54:60:b3:69:09:
- 8e:a9:e3:8f:3b:06:f7:65:06:24:43:98:12:ad:b6:32:5a:4b:
- 66:8a:47:c8:15:8c:ba:82:17:35:e0:99:cc:69:88:f5:42:59:
- e0:84:e6:ac:80:96:a8:4d:2a:e6:35:62:3e:d0:b5:34:9a:68:
- 83:29:31:47:a6:53:c0:b6:db:07:d8:b2:46:a2:bd:28:79:fa:
- a3:49:17:30:77:91:0e:9c:36:b5:44:17:6c:e9:84:9b:a8:e8:
- 19:65:94:3f:7b:dd:e1:2b:5c:2f:51:af:57:14:1f:cd:45:96:
- 0e:86:bd:07:a3:4c:d8:bc:d2:cb:68:de:6b:6d:e5:dc:15:e7:
- 47:64:11:74:27:c5:d1:41:7c:01:03:6f:bd:53:ba:57:32:ba:
- 42:85:be:a4:c6:3a:c7:37:59:ed:af:ce:ae:29:09:47:16:95:
- 12:38:ed:26:31:18:55:db:ac:ea:c9:85:10:e0:ea:d9:d7:8d:
- 31:71:bb:8c:82:4d:a9:b4:96:ba:72:42:ad:98:5d:27:7d:da:
- 9a:4d:27:69:49:26:26:55:48:fd:d5:01:39:e1:ac:31:92:b8:
- ff:86:ed:ca:ec:57:cf:10:4b:10:c6:54:4f:6d:3f:e4:68:f1:
- e7:94:d7:6f:cd:34:1c:55:bb:3a:b0:54:72:fc:39:41:6f:cf:
- 0f:e9:80:a7:1a:6d:51:74:33:99:f5:71:87:ff:5a:79:59:79:
- 72:fc:96:07:9c:f2:91:2e:95:8d:88:01:2c:b0:91:06:92:70:
- 05:e8:56:dd:eb:7c:80:9d:e5:ac:40:56:2b:bf:ca:88:20:76:
- 41:78:0c:27:1d:43:0f:c1:b5:53:6b:22:92:d6:73:5d:35:11:
- 1a:d3:fe:19:dc:2c:c3:ba:ae:7e:23:ae:d7:e5:43:35:fd:1b:
- cc:02:52:aa:da:33:97:5b:e0:26:33:d9:4b:39:5d:7e:2b:c6:
- 5d:6d:af:64:90:bf:02:54:e0:bc:ff:41:c0:65:d7:7b:33:fc:
- b5:71:8c:db:59:08:73:68:78:50:1f:85:a0:b2:01:91:6b:00:
- e3:c1:f7:8c:df:3e:93:a6:fe:c9:4f:f5:70:22:f8:c9:03:30:
- e1:b8:bd:42:d7:a5:bc:ca:af:09:80:ba:9a:c8:1a:9c:95:b1:
- 68:60:5c:46:76:9b:4f:c2:51:81:15:b4:a4:dd:d5:c0:4c:66:
- 40:94:d3:cd:77:10:64:a5:41:99:72:69:41:a7:e7:cd:ec:4d:
- c9:38:24:4f:da:88:48:8c:57:b7:2c:65:e3:52:91:da:6c:34:
- 00:8e:99:91:de:e2:67:03:9a:cb:55:08:f4:2d:58:81:08:e2:
- e8:02:9c:75:da:93:29:0b:db:82:ca:b3:20:90:06:59:e9:23:
- fb:28:aa:ef:c0:66:4d:9e:ba:c6:76:30:b5:e1:7c:aa:79:12:
- c4:45:a4:c7:d0:5a:5f:9f:3b:13:13:90:73:bf:10:95:d8:6f:
- fd:7f:74:f8:c9:90:e1:20:90:96:1d:b7:be:a4:70:c3:20:8e:
- cd:78:1d:e4:58:b8:20:4f:bc:19:7b:71:91:09:95:2a:4c:66:
- ee:5d:b4:ae:39:66:ac:e8:ba:12:76:43:9d:a5:92:c4:f9:70:
- 20:2f:91:d7:11:d6:e3:50:e6:66:6a:20:5b:b6:7e:48:22:00:
- 52:74:0c:44:2a:e8:57:85:89:63:3b:2f:b8:29:68:e6:0f
------BEGIN CERTIFICATE-----
-MIIJSTCCBTACFHJeD6dF6+Z60gp9iErLvkQ0ETrSMA0GCSqGSIb3DQEBCwUAMGAx
-CzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3Vu
-dGFpbiBWaWV3MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEw
-HhcNMjIxMDAzMTcyMDI1WhcNMzIwOTMwMTcyMDI1WjBgMQswCQYDVQQGEwJVUzET
-MBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzEQMA4G
-A1UECgwHVGVzdCBDQTESMBAGA1UEAwwJMTI3LjAuMC4xMIIEIzANBgkqhkiG9w0B
-AQEFAAOCBBAAMIIECwKCBAIAqEIWj63jRyM8gylcQkQG/CqZSNVYD5hJz4srnwQk
-dy18qfhHSmx0zkJcxUoxEyqpg1Mog6fcS/B7NjFbIEidM9bdr5naVtH+t9mED0CH
-osRXuyQmQ4Pf7Uf2eOjJas3m3tTiLbCJ1K0xE2XiwR7l8i6JZuY3JSTiUScxch5d
-uJh6o6uU9zb6dvH8JF4EnTtrQ8xxdSD2CU5UKzMuws6iZK/LwOYFTXYaMXrxTdTE
-sOrKxaQ8/xBOeeu9suxXbYNXhDAQh0/qKadzc2HZ8lQUNwDa9kpeBtLWbaVhnVlF
-gm4K2r+RycGvS3Uqvz2vfVFN0PUt57BX0TcNQJRadnqpXYSDnTSfVIb1TPO37GkH
-0CeAei7Hr2Q3lm1AMVNIzZ5fzI45QjIpC3IiWCVWqemBHO4Yd9PZvE/GS6manyBA
-BxdxNKHxjP+tvY1g/AB+tFO0rFhfmZvhRgV6KLAJ8lgmiCxnkRnVfp7I8Kh11ej/
-I53NDyOZjxw1XtxWCR9xoOAyd+k725k+4gWXOH0hrZtcQAqxNhLZzLyoA3atJgSX
-O3wnCcSGkyjAqBXKS1QQK1BNWF/hS0oEZkoR860JSgfffTb/Dl0cuWuN6h+5gzIz
-7h5c51scfq62zwiDS/5fH3C6ViS4dhLFLvXW75uDdxdMkGO8lFWDVtOUFF94KjfP
-4Y3B8uj9cOF12o/5Ku5qX++yLm/X/KCO2lmGdC4hMb3d8pDBgmseHF+wE5TaT94u
-MHWhN4lrUo0FoSRlXSl0Vi6VmM5azdjqZy/jtv0OKF1lOv/3xupn5I1ahNEBrVgZ
-jWNfyQNauMM2c6vXVPyfgnyqrQ94thryh2r47J6Ev1I379Kf0Xl/3XOtBihriIFS
-puSRPjY5d751Mj3JwQ0FsrJZc/mShy8pmFfMfbvrrfNQsdaCc1TNXaH6RXN9Hln/
-PqLek/mY29TQaBIbJxGFAY6Fu++pM53Ra08IOLPbOQ4QwYPZG8pDV4GB/MDLc1sS
-c/eoV8u/v/A5fCGio0fKQp6jJ1Y/fQEY2jUx05vKtnkkHm5nR3zxBnjz//b5ohif
-8eys+SC3EPNicvdb2/SwiWsz5t1fox5Z7fv54tBNj0ycmfBN1jxKn6AGxzFRuGBY
-OB+mdPe0WfKJdEJV2NkB8SK56RFFk8NdIsygoCaoONf9ja9MHbJGbbeuybS+dyIo
-vEzgdt7+aZxRKAZTZzPwUmTuSrc3Jc71NYYGWEKAXmWHeNvs+0FALNHAH4deg1ld
-kf5A6R7l/CNi+sxcG/aFMOjGKA64TSzEhFX4+0BNiUYslbaEx2G3pzvqAd0zzbyf
-LD4TPbYSBbLeu6rSkcStxGmcDjThd2pG1dFDPaokB9hcV+cCAwEAATANBgkqhkiG
-9w0BAQsFAAOCBAIAo4cRQ20VnVJmEwaHKMpTdY5TLR0f15WnRjD+6DO0ckpgGZBr
-Jnf1EZ77GlMklv2T3u/saFp6EDaNXC01WuppMLxNPbKd7MicoMK1YLm8EqqQiUgT
-Prb5fVikOL8hq3ytl08njEDJSoYxKGzS99p57tl+NN9UrXFEqDU5lLhpH9Mw7OaW
-IXbOux1M2NH3yJSJis+G3p5K6iI3kXPuZ2M19iNbPyLnQwabzrBCdrD7pDDtZ0Kz
-Zt03Tc2bWyL2Oc3y88bZoGAAuGYvv9a5fdIeRQZIzNQkey2HeRqkU7pr4sWa1SpX
-WOz+qAzfhXnXB/JuCff1QJJxs3P06njARqDo0sZe14qrOSEhJQ396nLMs3WDPMwV
-4Hv5JXdi7pe8pFA98ymOxI1JUbLiQqymqXu69/iNxrEVm39hUPmNYWYla4jlLpGz
-siun80XFO09llfXCFajSPja71nAO21TE2d8cA4F5Sba9UACFwxJPIZfJdyWTvAj7
-mFRgs2kJjqnjjzsG92UGJEOYEq22MlpLZopHyBWMuoIXNeCZzGmI9UJZ4ITmrICW
-qE0q5jViPtC1NJpogykxR6ZTwLbbB9iyRqK9KHn6o0kXMHeRDpw2tUQXbOmEm6jo
-GWWUP3vd4StcL1GvVxQfzUWWDoa9B6NM2LzSy2jea23l3BXnR2QRdCfF0UF8AQNv
-vVO6VzK6QoW+pMY6xzdZ7a/OrikJRxaVEjjtJjEYVdus6smFEODq2deNMXG7jIJN
-qbSWunJCrZhdJ33amk0naUkmJlVI/dUBOeGsMZK4/4btyuxXzxBLEMZUT20/5Gjx
-55TXb800HFW7OrBUcvw5QW/PD+mApxptUXQzmfVxh/9aeVl5cvyWB5zykS6VjYgB
-LLCRBpJwBehW3et8gJ3lrEBWK7/KiCB2QXgMJx1DD8G1U2siktZzXTURGtP+Gdws
-w7qufiOu1+VDNf0bzAJSqtozl1vgJjPZSzldfivGXW2vZJC/AlTgvP9BwGXXezP8
-tXGM21kIc2h4UB+FoLIBkWsA48H3jN8+k6b+yU/1cCL4yQMw4bi9QtelvMqvCYC6
-msganJWxaGBcRnabT8JRgRW0pN3VwExmQJTTzXcQZKVBmXJpQafnzexNyTgkT9qI
-SIxXtyxl41KR2mw0AI6Zkd7iZwOay1UI9C1YgQji6AKcddqTKQvbgsqzIJAGWekj
-+yiq78BmTZ66xnYwteF8qnkSxEWkx9BaX587ExOQc78Qldhv/X90+MmQ4SCQlh23
-vqRwwyCOzXgd5Fi4IE+8GXtxkQmVKkxm7l20rjlmrOi6EnZDnaWSxPlwIC+R1xHW
-41DmZmogW7Z+SCIAUnQMRCroV4WJYzsvuClo5g8=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/leaf_from_known_root.pem b/src/pki/testdata/ssl/certificates/leaf_from_known_root.pem
deleted file mode 100644
index a3d6120..0000000
--- a/src/pki/testdata/ssl/certificates/leaf_from_known_root.pem
+++ /dev/null
@@ -1,666 +0,0 @@
-===========================================
-Certificate0: 43a7c7f7b28f92beac4b5e7e002c69801fd82c8656d9cb2993dba2bab0c4ec1e
-===========================================
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 5475531677529648189 (0x4bfcff0cd38dac3d)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", OU = http://certs.godaddy.com/repository/, CN = Go Daddy Secure Certificate Authority - G2
- Validity
- Not Before: Jul 25 02:05:05 2023 GMT
- Not After : Aug 24 00:14:22 2024 GMT
- Subject: CN = tntpowerwashservices.com
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:af:a6:20:2e:e2:8f:f6:61:ba:78:bd:8c:c9:b4:
- 84:6a:38:53:33:4a:28:e1:f6:9a:f8:be:45:14:18:
- ef:0c:57:6c:ae:89:7b:8d:06:89:58:b4:76:21:2c:
- 43:1f:b9:5d:e0:8d:4b:83:ad:3d:04:fb:e1:bf:76:
- f2:e9:1a:80:42:f7:24:65:6d:c9:90:fc:fd:8e:82:
- 0a:0e:5e:22:78:09:68:59:2a:4b:58:10:99:2d:f8:
- 57:56:d9:92:a6:58:7e:89:c2:12:ea:c6:e2:43:86:
- 07:6f:84:e2:c2:cd:1e:9d:4f:ee:62:58:35:a2:13:
- d5:bc:20:cf:69:65:c4:74:2a:4d:b1:c2:7b:03:85:
- b2:fc:dd:c7:36:30:c2:d6:59:02:e8:7c:41:26:ce:
- 6b:f0:7a:55:1f:90:42:07:53:2e:a1:47:2e:53:42:
- a6:48:1c:d0:d2:bb:9c:76:bf:89:4b:39:9d:69:f5:
- 80:a4:38:b3:bd:e7:cd:41:0c:69:d7:3d:c1:78:27:
- 88:05:ee:c7:f3:87:9d:01:e1:fd:70:e4:be:4d:97:
- d3:2b:61:f3:0a:d3:2f:63:a9:ce:61:22:08:2e:a3:
- d6:ba:de:fe:6b:df:69:ed:2f:50:dd:b8:72:c4:d6:
- 6b:00:5e:a4:8b:9b:58:c0:43:32:ab:cc:44:55:d7:
- 70:2f
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Key Usage: critical
- Digital Signature, Key Encipherment
- X509v3 CRL Distribution Points:
- Full Name:
- URI:http://crl.godaddy.com/gdig2s1-7257.crl
- X509v3 Certificate Policies:
- Policy: 2.16.840.1.114413.1.7.23.1
- CPS: http://certificates.godaddy.com/repository/
- Policy: 2.23.140.1.2.1
- Authority Information Access:
- OCSP - URI:http://ocsp.godaddy.com/
- CA Issuers - URI:http://certificates.godaddy.com/repository/gdig2.crt
- X509v3 Authority Key Identifier:
- 40:C2:BD:27:8E:CC:34:83:30:A2:33:D7:FB:6C:B3:F0:B4:2C:80:CE
- X509v3 Subject Alternative Name:
- DNS:tntpowerwashservices.com, DNS:www.tntpowerwashservices.com
- X509v3 Subject Key Identifier:
- 15:BE:40:63:3C:B1:6A:3C:27:52:B1:1E:43:06:A1:1C:0B:09:C7:C8
- CT Precertificate SCTs:
- Signed Certificate Timestamp:
- Version : v1 (0x0)
- Log ID : EE:CD:D0:64:D5:DB:1A:CE:C5:5C:B7:9D:B4:CD:13:A2:
- 32:87:46:7C:BC:EC:DE:C3:51:48:59:46:71:1F:B5:9B
- Timestamp : Jul 25 02:05:06.473 2023 GMT
- Extensions: none
- Signature : ecdsa-with-SHA256
- 30:45:02:21:00:B6:D5:26:94:10:7C:69:75:D5:83:A6:
- 4A:7F:4D:87:A3:86:3D:C6:AD:47:17:B7:04:9F:83:0B:
- 51:7E:41:C5:06:02:20:1E:2C:1C:2F:03:D1:1B:AB:E2:
- F5:A0:65:BC:EC:BE:15:D2:05:ED:CC:AC:1A:44:70:DC:
- 19:B6:87:58:4E:DF:EA
- Signed Certificate Timestamp:
- Version : v1 (0x0)
- Log ID : 48:B0:E3:6B:DA:A6:47:34:0F:E5:6A:02:FA:9D:30:EB:
- 1C:52:01:CB:56:DD:2C:81:D9:BB:BF:AB:39:D8:84:73
- Timestamp : Jul 25 02:05:06.771 2023 GMT
- Extensions: none
- Signature : ecdsa-with-SHA256
- 30:45:02:20:6F:76:37:49:56:F0:9D:7F:F7:94:58:C9:
- 9E:D3:D6:36:7D:BD:56:F4:92:41:0B:3E:97:0B:95:84:
- 53:C6:68:24:02:21:00:87:45:7A:45:89:8E:C0:D9:44:
- 82:56:24:C1:0D:A3:C4:FC:F8:C8:8E:1D:71:CC:0C:B5:
- 6E:03:40:8D:3C:34:3A
- Signed Certificate Timestamp:
- Version : v1 (0x0)
- Log ID : DA:B6:BF:6B:3F:B5:B6:22:9F:9B:C2:BB:5C:6B:E8:70:
- 91:71:6C:BB:51:84:85:34:BD:A4:3D:30:48:D7:FB:AB
- Timestamp : Jul 25 02:05:06.882 2023 GMT
- Extensions: none
- Signature : ecdsa-with-SHA256
- 30:46:02:21:00:A1:1F:15:0A:5A:5A:E7:ED:6D:61:5F:
- 9C:13:0B:66:70:62:95:31:C8:ED:D0:8A:B9:58:B1:90:
- 97:63:21:C8:2B:02:21:00:F9:67:A5:79:88:32:96:48:
- CB:6C:B9:27:76:0D:B6:7C:3A:AE:CB:65:40:87:E3:A5:
- A9:FA:03:CA:61:F3:C7:9D
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 26:c1:ee:ce:fb:7c:3d:bd:15:19:f7:6e:bc:f2:b0:d3:8b:a0:
- d0:26:84:83:2c:06:65:50:68:0e:9a:1e:96:9e:2b:64:ae:7a:
- 0a:05:e9:78:0a:cc:d5:0d:44:7a:d5:ae:4b:25:0c:a1:5d:a0:
- b4:3a:1b:60:6c:6a:e2:30:7e:30:23:2e:eb:74:85:80:84:0f:
- e6:cb:89:ee:b8:a9:9d:79:8a:da:dc:13:e1:6d:77:4f:81:7e:
- 55:b4:0f:4f:41:6d:02:89:bf:73:95:7c:7f:b2:d8:9b:50:4a:
- f8:60:36:11:e2:13:32:1f:e5:0f:3a:7d:0e:42:1e:b0:90:eb:
- dd:41:57:0c:52:72:28:31:87:13:cb:39:9a:2f:23:66:9f:ca:
- a9:4a:d3:26:30:71:ad:72:e2:83:b7:00:29:92:2c:b9:9f:c9:
- a2:85:b2:90:29:c0:10:41:e4:6f:6e:d7:3c:ad:96:06:81:75:
- 09:ff:7e:47:ff:3d:93:18:f5:e8:62:44:f9:8a:6c:37:db:5a:
- a6:66:78:ae:3a:84:9b:7c:d0:f0:c9:9d:99:ce:8d:4a:9f:ab:
- d6:e1:bd:7c:bc:9c:9d:f2:00:c9:17:aa:7d:97:9f:3f:27:9c:
- 6c:91:16:a6:8e:39:c8:86:db:0c:14:ea:20:3d:f7:aa:7d:a3:
- e2:67:9d:9a
-
-SEQUENCE {
- SEQUENCE {
- [0] {
- INTEGER { 2 }
- }
- INTEGER { `4bfcff0cd38dac3d` }
- SEQUENCE {
- # sha256WithRSAEncryption
- OBJECT_IDENTIFIER { 1.2.840.113549.1.1.11 }
- NULL {}
- }
- SEQUENCE {
- SET {
- SEQUENCE {
- # countryName
- OBJECT_IDENTIFIER { 2.5.4.6 }
- PrintableString { "US" }
- }
- }
- SET {
- SEQUENCE {
- # stateOrProvinceName
- OBJECT_IDENTIFIER { 2.5.4.8 }
- PrintableString { "Arizona" }
- }
- }
- SET {
- SEQUENCE {
- # localityName
- OBJECT_IDENTIFIER { 2.5.4.7 }
- PrintableString { "Scottsdale" }
- }
- }
- SET {
- SEQUENCE {
- # organizationName
- OBJECT_IDENTIFIER { 2.5.4.10 }
- PrintableString { "GoDaddy.com, Inc." }
- }
- }
- SET {
- SEQUENCE {
- # organizationUnitName
- OBJECT_IDENTIFIER { 2.5.4.11 }
- PrintableString { "http://certs.godaddy.com/repository/" }
- }
- }
- SET {
- SEQUENCE {
- # commonName
- OBJECT_IDENTIFIER { 2.5.4.3 }
- PrintableString { "Go Daddy Secure Certificate Authority - G2" }
- }
- }
- }
- SEQUENCE {
- UTCTime { "230725020505Z" }
- UTCTime { "240824001422Z" }
- }
- SEQUENCE {
- SET {
- SEQUENCE {
- # commonName
- OBJECT_IDENTIFIER { 2.5.4.3 }
- PrintableString { "tntpowerwashservices.com" }
- }
- }
- }
- SEQUENCE {
- SEQUENCE {
- # rsaEncryption
- OBJECT_IDENTIFIER { 1.2.840.113549.1.1.1 }
- NULL {}
- }
- BIT_STRING {
- `00`
- SEQUENCE {
- INTEGER { `00afa6202ee28ff661ba78bd8cc9b4846a3853334a28e1f69af8be451418ef0c576cae897b8d068958b476212c431fb95de08d4b83ad3d04fbe1bf76f2e91a8042f724656dc990fcfd8e820a0e5e22780968592a4b5810992df85756d992a6587e89c212eac6e24386076f84e2c2cd1e9d4fee625835a213d5bc20cf6965c4742a4db1c27b0385b2fcddc73630c2d65902e87c4126ce6bf07a551f904207532ea1472e5342a6481cd0d2bb9c76bf894b399d69f580a438b3bde7cd410c69d73dc178278805eec7f3879d01e1fd70e4be4d97d32b61f30ad32f63a9ce6122082ea3d6badefe6bdf69ed2f50ddb872c4d66b005ea48b9b58c04332abcc4455d7702f` }
- INTEGER { 65537 }
- }
- }
- }
- [3] {
- SEQUENCE {
- SEQUENCE {
- # basicConstraints
- OBJECT_IDENTIFIER { 2.5.29.19 }
- BOOLEAN { TRUE }
- OCTET_STRING {
- SEQUENCE {}
- }
- }
- SEQUENCE {
- # extKeyUsage
- OBJECT_IDENTIFIER { 2.5.29.37 }
- OCTET_STRING {
- SEQUENCE {
- # serverAuth
- OBJECT_IDENTIFIER { 1.3.6.1.5.5.7.3.1 }
- # clientAuth
- OBJECT_IDENTIFIER { 1.3.6.1.5.5.7.3.2 }
- }
- }
- }
- SEQUENCE {
- # keyUsage
- OBJECT_IDENTIFIER { 2.5.29.15 }
- BOOLEAN { TRUE }
- OCTET_STRING {
- BIT_STRING { b`101` }
- }
- }
- SEQUENCE {
- # cRLDistributionPoints
- OBJECT_IDENTIFIER { 2.5.29.31 }
- OCTET_STRING {
- SEQUENCE {
- SEQUENCE {
- [0] {
- [0] {
- [6 PRIMITIVE] { "http://crl.godaddy.com/gdig2s1-7257.crl" }
- }
- }
- }
- }
- }
- }
- SEQUENCE {
- # certificatePolicies
- OBJECT_IDENTIFIER { 2.5.29.32 }
- OCTET_STRING {
- SEQUENCE {
- SEQUENCE {
- OBJECT_IDENTIFIER { 2.16.840.1.114413.1.7.23.1 }
- SEQUENCE {
- SEQUENCE {
- OBJECT_IDENTIFIER { 1.3.6.1.5.5.7.2.1 }
- IA5String { "http://certificates.godaddy.com/repository/" }
- }
- }
- }
- SEQUENCE {
- # domain-validated
- OBJECT_IDENTIFIER { 2.23.140.1.2.1 }
- }
- }
- }
- }
- SEQUENCE {
- # authorityInfoAccess
- OBJECT_IDENTIFIER { 1.3.6.1.5.5.7.1.1 }
- OCTET_STRING {
- SEQUENCE {
- SEQUENCE {
- # ocsp
- OBJECT_IDENTIFIER { 1.3.6.1.5.5.7.48.1 }
- [6 PRIMITIVE] { "http://ocsp.godaddy.com/" }
- }
- SEQUENCE {
- # caIssuers
- OBJECT_IDENTIFIER { 1.3.6.1.5.5.7.48.2 }
- [6 PRIMITIVE] { "http://certificates.godaddy.com/repository/gdig2.crt" }
- }
- }
- }
- }
- SEQUENCE {
- # authorityKeyIdentifier
- OBJECT_IDENTIFIER { 2.5.29.35 }
- OCTET_STRING {
- SEQUENCE {
- [0 PRIMITIVE] { `40c2bd278ecc348330a233d7fb6cb3f0b42c80ce` }
- }
- }
- }
- SEQUENCE {
- # subjectAltName
- OBJECT_IDENTIFIER { 2.5.29.17 }
- OCTET_STRING {
- SEQUENCE {
- [2 PRIMITIVE] { "tntpowerwashservices.com" }
- [2 PRIMITIVE] { "www.tntpowerwashservices.com" }
- }
- }
- }
- SEQUENCE {
- # subjectKeyIdentifier
- OBJECT_IDENTIFIER { 2.5.29.14 }
- OCTET_STRING {
- OCTET_STRING { `15be40633cb16a3c2752b11e4306a11c0b09c7c8` }
- }
- }
- SEQUENCE {
- # embeddedSCTList
- OBJECT_IDENTIFIER { 1.3.6.1.4.1.11129.2.4.2 }
- OCTET_STRING {
- OCTET_STRING { `0169007600eecdd064d5db1acec55cb79db4cd13a23287467cbcecdec351485946711fb59b000001898acafe290000040300473045022100b6d52694107c6975d583a64a7f4d87a3863dc6ad4717b7049f830b517e41c50602201e2c1c2f03d11babe2f5a065bcecbe15d205edccac1a4470dc19b687584edfea00760048b0e36bdaa647340fe56a02fa9d30eb1c5201cb56dd2c81d9bbbfab39d88473000001898acaff53000004030047304502206f76374956f09d7ff79458c99ed3d6367dbd56f492410b3e970b958453c6682402210087457a45898ec0d944825624c10da3c4fcf8c88e1d71cc0cb56e03408d3c343a007700dab6bf6b3fb5b6229f9bc2bb5c6be87091716cbb51848534bda43d3048d7fbab000001898acaffc20000040300483046022100a11f150a5a5ae7ed6d615f9c130b6670629531c8edd08ab958b190976321c82b022100f967a57988329648cb6cb927760db67c3aaecb654087e3a5a9fa03ca61f3c79d` }
- }
- }
- }
- }
- }
- SEQUENCE {
- # sha256WithRSAEncryption
- OBJECT_IDENTIFIER { 1.2.840.113549.1.1.11 }
- NULL {}
- }
- BIT_STRING { `00` `26c1eecefb7c3dbd1519f76ebcf2b0d38ba0d02684832c066550680e9a1e969e2b64ae7a0a05e9780accd50d447ad5ae4b250ca15da0b43a1b606c6ae2307e30232eeb748580840fe6cb89eeb8a99d798adadc13e16d774f817e55b40f4f416d0289bf73957c7fb2d89b504af8603611e213321fe50f3a7d0e421eb090ebdd41570c527228318713cb399a2f23669fcaa94ad3263071ad72e283b70029922cb99fc9a285b29029c01041e46f6ed73cad9606817509ff7e47ff3d9318f5e86244f98a6c37db5aa66678ae3a849b7cd0f0c99d99ce8d4a9fabd6e1bd7cbc9c9df200c917aa7d979f3f279c6c9116a68e39c886db0c14ea203df7aa7da3e2679d9a` }
-}
-
------BEGIN CERTIFICATE-----
-MIIGtDCCBZygAwIBAgIIS/z/DNONrD0wDQYJKoZIhvcNAQELBQAwgbQxCzAJBgNV
-BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRow
-GAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjEtMCsGA1UECxMkaHR0cDovL2NlcnRz
-LmdvZGFkZHkuY29tL3JlcG9zaXRvcnkvMTMwMQYDVQQDEypHbyBEYWRkeSBTZWN1
-cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIwHhcNMjMwNzI1MDIwNTA1WhcN
-MjQwODI0MDAxNDIyWjAjMSEwHwYDVQQDExh0bnRwb3dlcndhc2hzZXJ2aWNlcy5j
-b20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvpiAu4o/2Ybp4vYzJ
-tIRqOFMzSijh9pr4vkUUGO8MV2yuiXuNBolYtHYhLEMfuV3gjUuDrT0E++G/dvLp
-GoBC9yRlbcmQ/P2OggoOXiJ4CWhZKktYEJkt+FdW2ZKmWH6JwhLqxuJDhgdvhOLC
-zR6dT+5iWDWiE9W8IM9pZcR0Kk2xwnsDhbL83cc2MMLWWQLofEEmzmvwelUfkEIH
-Uy6hRy5TQqZIHNDSu5x2v4lLOZ1p9YCkOLO9581BDGnXPcF4J4gF7sfzh50B4f1w
-5L5Nl9MrYfMK0y9jqc5hIgguo9a63v5r32ntL1DduHLE1msAXqSLm1jAQzKrzERV
-13AvAgMBAAGjggNYMIIDVDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUF
-BwMBBggrBgEFBQcDAjAOBgNVHQ8BAf8EBAMCBaAwOAYDVR0fBDEwLzAtoCugKYYn
-aHR0cDovL2NybC5nb2RhZGR5LmNvbS9nZGlnMnMxLTcyNTcuY3JsMF0GA1UdIARW
-MFQwSAYLYIZIAYb9bQEHFwEwOTA3BggrBgEFBQcCARYraHR0cDovL2NlcnRpZmlj
-YXRlcy5nb2RhZGR5LmNvbS9yZXBvc2l0b3J5LzAIBgZngQwBAgEwdgYIKwYBBQUH
-AQEEajBoMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5nb2RhZGR5LmNvbS8wQAYI
-KwYBBQUHMAKGNGh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5jb20vcmVwb3Np
-dG9yeS9nZGlnMi5jcnQwHwYDVR0jBBgwFoAUQMK9J47MNIMwojPX+2yz8LQsgM4w
-QQYDVR0RBDowOIIYdG50cG93ZXJ3YXNoc2VydmljZXMuY29tghx3d3cudG50cG93
-ZXJ3YXNoc2VydmljZXMuY29tMB0GA1UdDgQWBBQVvkBjPLFqPCdSsR5DBqEcCwnH
-yDCCAX8GCisGAQQB1nkCBAIEggFvBIIBawFpAHYA7s3QZNXbGs7FXLedtM0TojKH
-Rny87N7DUUhZRnEftZsAAAGJisr+KQAABAMARzBFAiEAttUmlBB8aXXVg6ZKf02H
-o4Y9xq1HF7cEn4MLUX5BxQYCIB4sHC8D0Rur4vWgZbzsvhXSBe3MrBpEcNwZtodY
-Tt/qAHYASLDja9qmRzQP5WoC+p0w6xxSActW3SyB2bu/qznYhHMAAAGJisr/UwAA
-BAMARzBFAiBvdjdJVvCdf/eUWMme09Y2fb1W9JJBCz6XC5WEU8ZoJAIhAIdFekWJ
-jsDZRIJWJMENo8T8+MiOHXHMDLVuA0CNPDQ6AHcA2ra/az+1tiKfm8K7XGvocJFx
-bLtRhIU0vaQ9MEjX+6sAAAGJisr/wgAABAMASDBGAiEAoR8VClpa5+1tYV+cEwtm
-cGKVMcjt0Iq5WLGQl2MhyCsCIQD5Z6V5iDKWSMtsuSd2DbZ8Oq7LZUCH46Wp+gPK
-YfPHnTANBgkqhkiG9w0BAQsFAAOCAQEAJsHuzvt8Pb0VGfduvPKw04ug0CaEgywG
-ZVBoDpoelp4rZK56CgXpeArM1Q1EetWuSyUMoV2gtDobYGxq4jB+MCMu63SFgIQP
-5suJ7ripnXmK2twT4W13T4F+VbQPT0FtAom/c5V8f7LYm1BK+GA2EeITMh/lDzp9
-DkIesJDr3UFXDFJyKDGHE8s5mi8jZp/KqUrTJjBxrXLig7cAKZIsuZ/JooWykCnA
-EEHkb27XPK2WBoF1Cf9+R/89kxj16GJE+YpsN9tapmZ4rjqEm3zQ8Mmdmc6NSp+r
-1uG9fLycnfIAyReqfZefPyecbJEWpo45yIbbDBTqID33qn2j4medmg==
------END CERTIFICATE-----
-
-===========================================
-Certificate1: 973a41276ffd01e027a2aad49e34c37846d3e976ff6a620b6712e33832041aa6
-===========================================
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 7 (0x7)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", CN = Go Daddy Root Certificate Authority - G2
- Validity
- Not Before: May 3 07:00:00 2011 GMT
- Not After : May 3 07:00:00 2031 GMT
- Subject: C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", OU = http://certs.godaddy.com/repository/, CN = Go Daddy Secure Certificate Authority - G2
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:b9:e0:cb:10:d4:af:76:bd:d4:93:62:eb:30:64:
- b8:81:08:6c:c3:04:d9:62:17:8e:2f:ff:3e:65:cf:
- 8f:ce:62:e6:3c:52:1c:da:16:45:4b:55:ab:78:6b:
- 63:83:62:90:ce:0f:69:6c:99:c8:1a:14:8b:4c:cc:
- 45:33:ea:88:dc:9e:a3:af:2b:fe:80:61:9d:79:57:
- c4:cf:2e:f4:3f:30:3c:5d:47:fc:9a:16:bc:c3:37:
- 96:41:51:8e:11:4b:54:f8:28:be:d0:8c:be:f0:30:
- 38:1e:f3:b0:26:f8:66:47:63:6d:de:71:26:47:8f:
- 38:47:53:d1:46:1d:b4:e3:dc:00:ea:45:ac:bd:bc:
- 71:d9:aa:6f:00:db:db:cd:30:3a:79:4f:5f:4c:47:
- f8:1d:ef:5b:c2:c4:9d:60:3b:b1:b2:43:91:d8:a4:
- 33:4e:ea:b3:d6:27:4f:ad:25:8a:a5:c6:f4:d5:d0:
- a6:ae:74:05:64:57:88:b5:44:55:d4:2d:2a:3a:3e:
- f8:b8:bd:e9:32:0a:02:94:64:c4:16:3a:50:f1:4a:
- ae:e7:79:33:af:0c:20:07:7f:e8:df:04:39:c2:69:
- 02:6c:63:52:fa:77:c1:1b:c8:74:87:c8:b9:93:18:
- 50:54:35:4b:69:4e:bc:3b:d3:49:2e:1f:dc:c1:d2:
- 52:fb
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- X509v3 Subject Key Identifier:
- 40:C2:BD:27:8E:CC:34:83:30:A2:33:D7:FB:6C:B3:F0:B4:2C:80:CE
- X509v3 Authority Key Identifier:
- 3A:9A:85:07:10:67:28:B6:EF:F6:BD:05:41:6E:20:C1:94:DA:0F:DE
- Authority Information Access:
- OCSP - URI:http://ocsp.godaddy.com/
- X509v3 CRL Distribution Points:
- Full Name:
- URI:http://crl.godaddy.com/gdroot-g2.crl
- X509v3 Certificate Policies:
- Policy: X509v3 Any Policy
- CPS: https://certs.godaddy.com/repository/
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 08:7e:6c:93:10:c8:38:b8:96:a9:90:4b:ff:a1:5f:4f:04:ef:
- 6c:3e:9c:88:06:c9:50:8f:a6:73:f7:57:31:1b:be:bc:e4:2f:
- db:f8:ba:d3:5b:e0:b4:e7:e6:79:62:0e:0c:a2:d7:6a:63:73:
- 31:b5:f5:a8:48:a4:3b:08:2d:a2:5d:90:d7:b4:7c:25:4f:11:
- 56:30:c4:b6:44:9d:7b:2c:9d:e5:5e:e6:ef:0c:61:aa:bf:e4:
- 2a:1b:ee:84:9e:b8:83:7d:c1:43:ce:44:a7:13:70:0d:91:1f:
- f4:c8:13:ad:83:60:d9:d8:72:a8:73:24:1e:b5:ac:22:0e:ca:
- 17:89:62:58:44:1b:ab:89:25:01:00:0f:cd:c4:1b:62:db:51:
- b4:d3:0f:51:2a:9b:f4:bc:73:fc:76:ce:36:a4:cd:d9:d8:2c:
- ea:ae:9b:f5:2a:b2:90:d1:4d:75:18:8a:3f:8a:41:90:23:7d:
- 5b:4b:fe:a4:03:58:9b:46:b2:c3:60:60:83:f8:7d:50:41:ce:
- c2:a1:90:c3:bb:ef:02:2f:d2:15:54:ee:44:15:d9:0a:ae:a7:
- 8a:33:ed:b1:2d:76:36:26:dc:04:eb:9f:f7:61:1f:15:dc:87:
- 6f:ee:46:96:28:ad:a1:26:7d:0a:09:a7:2e:04:a3:8d:bc:f8:
- bc:04:30:01
-
-SEQUENCE {
- SEQUENCE {
- [0] {
- INTEGER { 2 }
- }
- INTEGER { 7 }
- SEQUENCE {
- # sha256WithRSAEncryption
- OBJECT_IDENTIFIER { 1.2.840.113549.1.1.11 }
- NULL {}
- }
- SEQUENCE {
- SET {
- SEQUENCE {
- # countryName
- OBJECT_IDENTIFIER { 2.5.4.6 }
- PrintableString { "US" }
- }
- }
- SET {
- SEQUENCE {
- # stateOrProvinceName
- OBJECT_IDENTIFIER { 2.5.4.8 }
- PrintableString { "Arizona" }
- }
- }
- SET {
- SEQUENCE {
- # localityName
- OBJECT_IDENTIFIER { 2.5.4.7 }
- PrintableString { "Scottsdale" }
- }
- }
- SET {
- SEQUENCE {
- # organizationName
- OBJECT_IDENTIFIER { 2.5.4.10 }
- PrintableString { "GoDaddy.com, Inc." }
- }
- }
- SET {
- SEQUENCE {
- # commonName
- OBJECT_IDENTIFIER { 2.5.4.3 }
- PrintableString { "Go Daddy Root Certificate Authority - G2" }
- }
- }
- }
- SEQUENCE {
- UTCTime { "110503070000Z" }
- UTCTime { "310503070000Z" }
- }
- SEQUENCE {
- SET {
- SEQUENCE {
- # countryName
- OBJECT_IDENTIFIER { 2.5.4.6 }
- PrintableString { "US" }
- }
- }
- SET {
- SEQUENCE {
- # stateOrProvinceName
- OBJECT_IDENTIFIER { 2.5.4.8 }
- PrintableString { "Arizona" }
- }
- }
- SET {
- SEQUENCE {
- # localityName
- OBJECT_IDENTIFIER { 2.5.4.7 }
- PrintableString { "Scottsdale" }
- }
- }
- SET {
- SEQUENCE {
- # organizationName
- OBJECT_IDENTIFIER { 2.5.4.10 }
- PrintableString { "GoDaddy.com, Inc." }
- }
- }
- SET {
- SEQUENCE {
- # organizationUnitName
- OBJECT_IDENTIFIER { 2.5.4.11 }
- PrintableString { "http://certs.godaddy.com/repository/" }
- }
- }
- SET {
- SEQUENCE {
- # commonName
- OBJECT_IDENTIFIER { 2.5.4.3 }
- PrintableString { "Go Daddy Secure Certificate Authority - G2" }
- }
- }
- }
- SEQUENCE {
- SEQUENCE {
- # rsaEncryption
- OBJECT_IDENTIFIER { 1.2.840.113549.1.1.1 }
- NULL {}
- }
- BIT_STRING {
- `00`
- SEQUENCE {
- INTEGER { `00b9e0cb10d4af76bdd49362eb3064b881086cc304d962178e2fff3e65cf8fce62e63c521cda16454b55ab786b63836290ce0f696c99c81a148b4ccc4533ea88dc9ea3af2bfe80619d7957c4cf2ef43f303c5d47fc9a16bcc3379641518e114b54f828bed08cbef030381ef3b026f86647636dde7126478f384753d1461db4e3dc00ea45acbdbc71d9aa6f00dbdbcd303a794f5f4c47f81def5bc2c49d603bb1b24391d8a4334eeab3d6274fad258aa5c6f4d5d0a6ae7405645788b54455d42d2a3a3ef8b8bde9320a029464c4163a50f14aaee77933af0c20077fe8df0439c269026c6352fa77c11bc87487c8b993185054354b694ebc3bd3492e1fdcc1d252fb` }
- INTEGER { 65537 }
- }
- }
- }
- [3] {
- SEQUENCE {
- SEQUENCE {
- # basicConstraints
- OBJECT_IDENTIFIER { 2.5.29.19 }
- BOOLEAN { TRUE }
- OCTET_STRING {
- SEQUENCE {
- BOOLEAN { TRUE }
- }
- }
- }
- SEQUENCE {
- # keyUsage
- OBJECT_IDENTIFIER { 2.5.29.15 }
- BOOLEAN { TRUE }
- OCTET_STRING {
- BIT_STRING { b`0000011` }
- }
- }
- SEQUENCE {
- # subjectKeyIdentifier
- OBJECT_IDENTIFIER { 2.5.29.14 }
- OCTET_STRING {
- OCTET_STRING { `40c2bd278ecc348330a233d7fb6cb3f0b42c80ce` }
- }
- }
- SEQUENCE {
- # authorityKeyIdentifier
- OBJECT_IDENTIFIER { 2.5.29.35 }
- OCTET_STRING {
- SEQUENCE {
- [0 PRIMITIVE] { `3a9a8507106728b6eff6bd05416e20c194da0fde` }
- }
- }
- }
- SEQUENCE {
- # authorityInfoAccess
- OBJECT_IDENTIFIER { 1.3.6.1.5.5.7.1.1 }
- OCTET_STRING {
- SEQUENCE {
- SEQUENCE {
- # ocsp
- OBJECT_IDENTIFIER { 1.3.6.1.5.5.7.48.1 }
- [6 PRIMITIVE] { "http://ocsp.godaddy.com/" }
- }
- }
- }
- }
- SEQUENCE {
- # cRLDistributionPoints
- OBJECT_IDENTIFIER { 2.5.29.31 }
- OCTET_STRING {
- SEQUENCE {
- SEQUENCE {
- [0] {
- [0] {
- [6 PRIMITIVE] { "http://crl.godaddy.com/gdroot-g2.crl" }
- }
- }
- }
- }
- }
- }
- SEQUENCE {
- # certificatePolicies
- OBJECT_IDENTIFIER { 2.5.29.32 }
- OCTET_STRING {
- SEQUENCE {
- SEQUENCE {
- # anyPolicy
- OBJECT_IDENTIFIER { 2.5.29.32.0 }
- SEQUENCE {
- SEQUENCE {
- OBJECT_IDENTIFIER { 1.3.6.1.5.5.7.2.1 }
- IA5String { "https://certs.godaddy.com/repository/" }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- SEQUENCE {
- # sha256WithRSAEncryption
- OBJECT_IDENTIFIER { 1.2.840.113549.1.1.11 }
- NULL {}
- }
- BIT_STRING { `00` `087e6c9310c838b896a9904bffa15f4f04ef6c3e9c8806c9508fa673f757311bbebce42fdbf8bad35be0b4e7e679620e0ca2d76a637331b5f5a848a43b082da25d90d7b47c254f115630c4b6449d7b2c9de55ee6ef0c61aabfe42a1bee849eb8837dc143ce44a713700d911ff4c813ad8360d9d872a873241eb5ac220eca17896258441bab892501000fcdc41b62db51b4d30f512a9bf4bc73fc76ce36a4cdd9d82ceaae9bf52ab290d14d75188a3f8a4190237d5b4bfea403589b46b2c3606083f87d5041cec2a190c3bbef022fd21554ee4415d90aaea78a33edb12d763626dc04eb9ff7611f15dc876fee469628ada1267d0a09a72e04a38dbcf8bc043001` }
-}
-
------BEGIN CERTIFICATE-----
-MIIE0DCCA7igAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx
-EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT
-EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp
-ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTExMDUwMzA3MDAwMFoXDTMxMDUwMzA3
-MDAwMFowgbQxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH
-EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjEtMCsGA1UE
-CxMkaHR0cDovL2NlcnRzLmdvZGFkZHkuY29tL3JlcG9zaXRvcnkvMTMwMQYDVQQD
-EypHbyBEYWRkeSBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIwggEi
-MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC54MsQ1K92vdSTYuswZLiBCGzD
-BNliF44v/z5lz4/OYuY8UhzaFkVLVat4a2ODYpDOD2lsmcgaFItMzEUz6ojcnqOv
-K/6AYZ15V8TPLvQ/MDxdR/yaFrzDN5ZBUY4RS1T4KL7QjL7wMDge87Am+GZHY23e
-cSZHjzhHU9FGHbTj3ADqRay9vHHZqm8A29vNMDp5T19MR/gd71vCxJ1gO7GyQ5HY
-pDNO6rPWJ0+tJYqlxvTV0KaudAVkV4i1RFXULSo6Pvi4vekyCgKUZMQWOlDxSq7n
-eTOvDCAHf+jfBDnCaQJsY1L6d8EbyHSHyLmTGFBUNUtpTrw700kuH9zB0lL7AgMB
-AAGjggEaMIIBFjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV
-HQ4EFgQUQMK9J47MNIMwojPX+2yz8LQsgM4wHwYDVR0jBBgwFoAUOpqFBxBnKLbv
-9r0FQW4gwZTaD94wNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8v
-b2NzcC5nb2RhZGR5LmNvbS8wNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL2NybC5n
-b2RhZGR5LmNvbS9nZHJvb3QtZzIuY3JsMEYGA1UdIAQ/MD0wOwYEVR0gADAzMDEG
-CCsGAQUFBwIBFiVodHRwczovL2NlcnRzLmdvZGFkZHkuY29tL3JlcG9zaXRvcnkv
-MA0GCSqGSIb3DQEBCwUAA4IBAQAIfmyTEMg4uJapkEv/oV9PBO9sPpyIBslQj6Zz
-91cxG7685C/b+LrTW+C05+Z5Yg4MotdqY3MxtfWoSKQ7CC2iXZDXtHwlTxFWMMS2
-RJ17LJ3lXubvDGGqv+QqG+6EnriDfcFDzkSnE3ANkR/0yBOtg2DZ2HKocyQetawi
-DsoXiWJYRBuriSUBAA/NxBti21G00w9RKpv0vHP8ds42pM3Z2Czqrpv1KrKQ0U11
-GIo/ikGQI31bS/6kA1ibRrLDYGCD+H1QQc7CoZDDu+8CL9IVVO5EFdkKrqeKM+2x
-LXY2JtwE65/3YR8V3Idv7kaWKK2hJn0KCacuBKONvPi8BDAB
------END CERTIFICATE-----
-
diff --git a/src/pki/testdata/ssl/certificates/lets-encrypt-dst-x3-root.pem b/src/pki/testdata/ssl/certificates/lets-encrypt-dst-x3-root.pem
deleted file mode 100644
index f07dc1d..0000000
--- a/src/pki/testdata/ssl/certificates/lets-encrypt-dst-x3-root.pem
+++ /dev/null
@@ -1,464 +0,0 @@
-===========================================
-Certificate0: 6091eceb0c7649bd2e446f4984f739c8c7284d1c55388b2313e3a8a27d4cef96
-===========================================
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 04:7b:f4:fd:2c:fb:01:92:d5:30:c1:0f:c9:19:83:2a:49:ef
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C = US, O = Let's Encrypt, CN = R3
- Validity
- Not Before: Jan 1 19:45:05 2022 GMT
- Not After : Apr 1 19:45:04 2022 GMT
- Subject: CN = t.wayfair.com
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (2048 bit)
- Modulus:
- 00:e6:ad:89:9c:97:2e:b0:72:e8:dc:a5:4c:9c:2c:
- 29:4f:4a:4f:f1:ce:b7:06:b2:a5:21:e3:6d:47:03:
- c9:53:18:81:a9:0c:db:54:46:7a:1e:41:c9:89:12:
- 72:dd:c2:b2:49:02:30:23:9d:b6:c9:d3:e0:22:45:
- 31:d7:1d:48:38:30:31:b4:a6:12:72:6a:66:8c:51:
- ba:48:b8:aa:cf:e9:4d:4c:ee:97:63:36:19:1a:79:
- 3c:1e:be:6a:d4:a7:b4:15:5b:05:8e:e1:04:b3:7e:
- 25:08:48:0b:bc:8f:f4:07:4a:98:e0:df:2e:a7:fc:
- 74:06:43:77:3f:38:ba:bf:e3:18:65:87:68:62:5a:
- 25:80:e4:5a:c8:b2:8a:cb:a2:05:67:f3:5f:0e:6e:
- dc:4f:69:1f:69:98:cf:12:a4:db:f9:fe:9e:b6:7a:
- 2b:d2:82:35:c9:eb:5b:12:94:aa:ff:89:b5:44:5f:
- d7:7b:cd:a8:0e:da:92:ce:46:2f:eb:d5:be:28:4b:
- b3:ee:a0:2f:5e:87:b2:a7:1e:9c:32:b6:57:cf:1c:
- c3:02:09:a2:b1:a0:0a:c1:7c:1c:11:09:93:d5:70:
- 32:11:98:9c:08:03:00:cc:00:d9:2c:af:48:ac:78:
- 39:87:4e:91:07:1a:8f:fa:75:34:2a:a4:16:0e:93:
- 1d:6b
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Key Usage: critical
- Digital Signature, Key Encipherment
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- E7:58:20:5D:82:32:8D:06:2C:35:1C:97:EC:1D:F9:74:84:A9:46:D1
- X509v3 Authority Key Identifier:
- keyid:14:2E:B3:17:B7:58:56:CB:AE:50:09:40:E6:1F:AF:9D:8B:14:C2:C6
-
- Authority Information Access:
- OCSP - URI:http://r3.o.lencr.org
- CA Issuers - URI:http://r3.i.lencr.org/
-
- X509v3 Subject Alternative Name:
- DNS:magellan.wayfair.com, DNS:t.wayfair.com
- X509v3 Certificate Policies:
- Policy: 2.23.140.1.2.1
- Policy: 1.3.6.1.4.1.44947.1.1.1
- CPS: http://cps.letsencrypt.org
-
- CT Precertificate SCTs:
- Signed Certificate Timestamp:
- Version : v1 (0x0)
- Log ID : 41:C8:CA:B1:DF:22:46:4A:10:C6:A1:3A:09:42:87:5E:
- 4E:31:8B:1B:03:EB:EB:4B:C7:68:F0:90:62:96:06:F6
- Timestamp : Jan 1 20:45:05.213 2022 GMT
- Extensions: none
- Signature : ecdsa-with-SHA256
- 30:45:02:20:05:FB:47:45:BD:63:AD:FD:E7:AF:9E:7E:
- D6:51:5A:1E:AB:62:FE:2A:27:4B:A0:ED:8A:4A:8F:B3:
- C8:36:8C:BD:02:21:00:8B:07:10:4C:BF:07:1C:ED:54:
- DF:28:2C:E3:B2:32:6B:43:48:E4:04:80:28:17:91:50:
- 8D:28:FC:58:08:BF:7C
- Signed Certificate Timestamp:
- Version : v1 (0x0)
- Log ID : 46:A5:55:EB:75:FA:91:20:30:B5:A2:89:69:F4:F3:7D:
- 11:2C:41:74:BE:FD:49:B8:85:AB:F2:FC:70:FE:6D:47
- Timestamp : Jan 1 20:45:05.235 2022 GMT
- Extensions: none
- Signature : ecdsa-with-SHA256
- 30:44:02:20:73:8C:D6:ED:CC:59:2D:3D:5E:1A:37:E9:
- 42:A2:74:6D:95:1B:20:0E:19:91:40:0E:AD:A3:80:66:
- 48:FB:17:32:02:20:02:3A:61:DA:61:EF:CB:37:BB:97:
- 5E:AC:79:08:2B:5E:71:EA:9B:7B:FC:B4:F5:50:04:2E:
- E0:40:42:44:2C:79
- Signature Algorithm: sha256WithRSAEncryption
- 9d:eb:00:3c:46:54:f1:6d:64:29:7e:64:b8:73:6e:b2:69:c8:
- f9:bd:11:b1:46:a5:f6:4c:cd:77:ef:a3:51:24:65:bc:80:13:
- 84:7c:07:6b:38:eb:37:7a:f3:77:79:ad:25:7a:7d:4b:43:f8:
- 0d:e6:ad:4d:05:51:b6:b5:ba:6d:48:85:28:48:0b:13:eb:29:
- 16:7d:e9:ad:dc:25:82:73:d5:68:7a:e5:de:2c:f2:c4:08:4f:
- 84:e9:ba:db:e2:6d:31:7c:76:e0:95:85:0f:d9:cc:a8:f1:4a:
- 79:58:18:23:dc:b0:21:ee:eb:36:13:d2:82:9a:34:8f:16:b2:
- e1:c0:39:3a:85:2c:05:22:89:2c:ad:22:9a:dc:9a:98:77:44:
- 11:30:6d:2c:5d:7f:8e:9d:d7:86:6e:a6:bc:12:ce:74:22:83:
- 51:20:62:ba:69:e6:12:46:7d:75:b9:7b:8d:a2:78:66:94:a4:
- dd:9e:b6:d4:9a:bf:d2:47:44:7f:0f:a3:cd:ce:4c:e8:80:b2:
- 53:b8:ed:f7:96:16:0c:2d:04:16:63:e2:9d:07:c0:ea:6a:c8:
- 31:78:cb:e2:81:cd:0a:12:e1:ff:a1:c4:05:00:32:4c:0f:68:
- 04:11:7a:37:06:98:a8:34:26:b6:c3:b5:e8:14:93:8b:25:d5:
- 27:2b:2a:a4
-
------BEGIN CERTIFICATE-----
-MIIFNTCCBB2gAwIBAgISBHv0/Sz7AZLVMMEPyRmDKknvMA0GCSqGSIb3DQEBCwUA
-MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
-EwJSMzAeFw0yMjAxMDExOTQ1MDVaFw0yMjA0MDExOTQ1MDRaMBgxFjAUBgNVBAMT
-DXQud2F5ZmFpci5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDm
-rYmcly6wcujcpUycLClPSk/xzrcGsqUh421HA8lTGIGpDNtURnoeQcmJEnLdwrJJ
-AjAjnbbJ0+AiRTHXHUg4MDG0phJyamaMUbpIuKrP6U1M7pdjNhkaeTwevmrUp7QV
-WwWO4QSzfiUISAu8j/QHSpjg3y6n/HQGQ3c/OLq/4xhlh2hiWiWA5FrIsorLogVn
-818ObtxPaR9pmM8SpNv5/p62eivSgjXJ61sSlKr/ibVEX9d7zagO2pLORi/r1b4o
-S7PuoC9eh7KnHpwytlfPHMMCCaKxoArBfBwRCZPVcDIRmJwIAwDMANksr0iseDmH
-TpEHGo/6dTQqpBYOkx1rAgMBAAGjggJdMIICWTAOBgNVHQ8BAf8EBAMCBaAwHQYD
-VR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0O
-BBYEFOdYIF2CMo0GLDUcl+wd+XSEqUbRMB8GA1UdIwQYMBaAFBQusxe3WFbLrlAJ
-QOYfr52LFMLGMFUGCCsGAQUFBwEBBEkwRzAhBggrBgEFBQcwAYYVaHR0cDovL3Iz
-Lm8ubGVuY3Iub3JnMCIGCCsGAQUFBzAChhZodHRwOi8vcjMuaS5sZW5jci5vcmcv
-MC4GA1UdEQQnMCWCFG1hZ2VsbGFuLndheWZhaXIuY29tgg10LndheWZhaXIuY29t
-MEwGA1UdIARFMEMwCAYGZ4EMAQIBMDcGCysGAQQBgt8TAQEBMCgwJgYIKwYBBQUH
-AgEWGmh0dHA6Ly9jcHMubGV0c2VuY3J5cHQub3JnMIIBAwYKKwYBBAHWeQIEAgSB
-9ASB8QDvAHYAQcjKsd8iRkoQxqE6CUKHXk4xixsD6+tLx2jwkGKWBvYAAAF+F2OF
-PQAABAMARzBFAiAF+0dFvWOt/eevnn7WUVoeq2L+KidLoO2KSo+zyDaMvQIhAIsH
-EEy/BxztVN8oLOOyMmtDSOQEgCgXkVCNKPxYCL98AHUARqVV63X6kSAwtaKJafTz
-fREsQXS+/Um4havy/HD+bUcAAAF+F2OFUwAABAMARjBEAiBzjNbtzFktPV4aN+lC
-onRtlRsgDhmRQA6to4BmSPsXMgIgAjph2mHvyze7l16seQgrXnHqm3v8tPVQBC7g
-QEJELHkwDQYJKoZIhvcNAQELBQADggEBAJ3rADxGVPFtZCl+ZLhzbrJpyPm9EbFG
-pfZMzXfvo1EkZbyAE4R8B2s46zd683d5rSV6fUtD+A3mrU0FUba1um1IhShICxPr
-KRZ96a3cJYJz1Wh65d4s8sQIT4TputvibTF8duCVhQ/ZzKjxSnlYGCPcsCHu6zYT
-0oKaNI8WsuHAOTqFLAUiiSytIprcmph3RBEwbSxdf46d14ZuprwSznQig1EgYrpp
-5hJGfXW5e42ieGaUpN2ettSav9JHRH8Po83OTOiAslO47feWFgwtBBZj4p0HwOpq
-yDF4y+KBzQoS4f+hxAUAMkwPaAQRejcGmKg0JrbDtegUk4sl1ScrKqQ=
------END CERTIFICATE-----
-
-===========================================
-Certificate1: 67add1166b020ae61b8f5fc96813c04c2aa589960796865572a3c7e737613dfd
-===========================================
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 91:2b:08:4a:cf:0c:18:a7:53:f6:d6:2e:25:a7:5f:5a
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C = US, O = Internet Security Research Group, CN = ISRG Root X1
- Validity
- Not Before: Sep 4 00:00:00 2020 GMT
- Not After : Sep 15 16:00:00 2025 GMT
- Subject: C = US, O = Let's Encrypt, CN = R3
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (2048 bit)
- Modulus:
- 00:bb:02:15:28:cc:f6:a0:94:d3:0f:12:ec:8d:55:
- 92:c3:f8:82:f1:99:a6:7a:42:88:a7:5d:26:aa:b5:
- 2b:b9:c5:4c:b1:af:8e:6b:f9:75:c8:a3:d7:0f:47:
- 94:14:55:35:57:8c:9e:a8:a2:39:19:f5:82:3c:42:
- a9:4e:6e:f5:3b:c3:2e:db:8d:c0:b0:5c:f3:59:38:
- e7:ed:cf:69:f0:5a:0b:1b:be:c0:94:24:25:87:fa:
- 37:71:b3:13:e7:1c:ac:e1:9b:ef:db:e4:3b:45:52:
- 45:96:a9:c1:53:ce:34:c8:52:ee:b5:ae:ed:8f:de:
- 60:70:e2:a5:54:ab:b6:6d:0e:97:a5:40:34:6b:2b:
- d3:bc:66:eb:66:34:7c:fa:6b:8b:8f:57:29:99:f8:
- 30:17:5d:ba:72:6f:fb:81:c5:ad:d2:86:58:3d:17:
- c7:e7:09:bb:f1:2b:f7:86:dc:c1:da:71:5d:d4:46:
- e3:cc:ad:25:c1:88:bc:60:67:75:66:b3:f1:18:f7:
- a2:5c:e6:53:ff:3a:88:b6:47:a5:ff:13:18:ea:98:
- 09:77:3f:9d:53:f9:cf:01:e5:f5:a6:70:17:14:af:
- 63:a4:ff:99:b3:93:9d:dc:53:a7:06:fe:48:85:1d:
- a1:69:ae:25:75:bb:13:cc:52:03:f5:ed:51:a1:8b:
- db:15
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Key Usage: critical
- Digital Signature, Certificate Sign, CRL Sign
- X509v3 Extended Key Usage:
- TLS Web Client Authentication, TLS Web Server Authentication
- X509v3 Basic Constraints: critical
- CA:TRUE, pathlen:0
- X509v3 Subject Key Identifier:
- 14:2E:B3:17:B7:58:56:CB:AE:50:09:40:E6:1F:AF:9D:8B:14:C2:C6
- X509v3 Authority Key Identifier:
- keyid:79:B4:59:E6:7B:B6:E5:E4:01:73:80:08:88:C8:1A:58:F6:E9:9B:6E
-
- Authority Information Access:
- CA Issuers - URI:http://x1.i.lencr.org/
-
- X509v3 CRL Distribution Points:
-
- Full Name:
- URI:http://x1.c.lencr.org/
-
- X509v3 Certificate Policies:
- Policy: 2.23.140.1.2.1
- Policy: 1.3.6.1.4.1.44947.1.1.1
-
- Signature Algorithm: sha256WithRSAEncryption
- 85:ca:4e:47:3e:a3:f7:85:44:85:bc:d5:67:78:b2:98:63:ad:
- 75:4d:1e:96:3d:33:65:72:54:2d:81:a0:ea:c3:ed:f8:20:bf:
- 5f:cc:b7:70:00:b7:6e:3b:f6:5e:94:de:e4:20:9f:a6:ef:8b:
- b2:03:e7:a2:b5:16:3c:91:ce:b4:ed:39:02:e7:7c:25:8a:47:
- e6:65:6e:3f:46:f4:d9:f0:ce:94:2b:ee:54:ce:12:bc:8c:27:
- 4b:b8:c1:98:2f:a2:af:cd:71:91:4a:08:b7:c8:b8:23:7b:04:
- 2d:08:f9:08:57:3e:83:d9:04:33:0a:47:21:78:09:82:27:c3:
- 2a:c8:9b:b9:ce:5c:f2:64:c8:c0:be:79:c0:4f:8e:6d:44:0c:
- 5e:92:bb:2e:f7:8b:10:e1:e8:1d:44:29:db:59:20:ed:63:b9:
- 21:f8:12:26:94:93:57:a0:1d:65:04:c1:0a:22:ae:10:0d:43:
- 97:a1:18:1f:7e:e0:e0:86:37:b5:5a:b1:bd:30:bf:87:6e:2b:
- 2a:ff:21:4e:1b:05:c3:f5:18:97:f0:5e:ac:c3:a5:b8:6a:f0:
- 2e:bc:3b:33:b9:ee:4b:de:cc:fc:e4:af:84:0b:86:3f:c0:55:
- 43:36:f6:68:e1:36:17:6a:8e:99:d1:ff:a5:40:a7:34:b7:c0:
- d0:63:39:35:39:75:6e:f2:ba:76:c8:93:02:e9:a9:4b:6c:17:
- ce:0c:02:d9:bd:81:fb:9f:b7:68:d4:06:65:b3:82:3d:77:53:
- f8:8e:79:03:ad:0a:31:07:75:2a:43:d8:55:97:72:c4:29:0e:
- f7:c4:5d:4e:c8:ae:46:84:30:d7:f2:85:5f:18:a1:79:bb:e7:
- 5e:70:8b:07:e1:86:93:c3:b9:8f:dc:61:71:25:2a:af:df:ed:
- 25:50:52:68:8b:92:dc:e5:d6:b5:e3:da:7d:d0:87:6c:84:21:
- 31:ae:82:f5:fb:b9:ab:c8:89:17:3d:e1:4c:e5:38:0e:f6:bd:
- 2b:bd:96:81:14:eb:d5:db:3d:20:a7:7e:59:d3:e2:f8:58:f9:
- 5b:b8:48:cd:fe:5c:4f:16:29:fe:1e:55:23:af:c8:11:b0:8d:
- ea:7c:93:90:17:2f:fd:ac:a2:09:47:46:3f:f0:e9:b0:b7:ff:
- 28:4d:68:32:d6:67:5e:1e:69:a3:93:b8:f5:9d:8b:2f:0b:d2:
- 52:43:a6:6f:32:57:65:4d:32:81:df:38:53:85:5d:7e:5d:66:
- 29:ea:b8:dd:e4:95:b5:cd:b5:56:12:42:cd:c4:4e:c6:25:38:
- 44:50:6d:ec:ce:00:55:18:fe:e9:49:64:d4:4e:ca:97:9c:b4:
- 5b:c0:73:a8:ab:b8:47:c2
-
------BEGIN CERTIFICATE-----
-MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw
-TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
-cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw
-WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
-RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
-AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP
-R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx
-sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm
-NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg
-Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG
-/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC
-AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB
-Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA
-FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw
-AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw
-Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB
-gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W
-PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl
-ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz
-CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm
-lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4
-avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2
-yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O
-yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids
-hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+
-HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv
-MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX
-nLRbwHOoq7hHwg==
------END CERTIFICATE-----
-
-===========================================
-Certificate2: 6d99fb265eb1c5b3744765fcbc648f3cd8e1bffafdc4c2f99b9d47cf7ff1c24f
-===========================================
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 40:01:77:21:37:d4:e9:42:b8:ee:76:aa:3c:64:0a:b7
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: O = Digital Signature Trust Co., CN = DST Root CA X3
- Validity
- Not Before: Jan 20 19:14:03 2021 GMT
- Not After : Sep 30 18:14:03 2024 GMT
- Subject: C = US, O = Internet Security Research Group, CN = ISRG Root X1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (4096 bit)
- Modulus:
- 00:ad:e8:24:73:f4:14:37:f3:9b:9e:2b:57:28:1c:
- 87:be:dc:b7:df:38:90:8c:6e:3c:e6:57:a0:78:f7:
- 75:c2:a2:fe:f5:6a:6e:f6:00:4f:28:db:de:68:86:
- 6c:44:93:b6:b1:63:fd:14:12:6b:bf:1f:d2:ea:31:
- 9b:21:7e:d1:33:3c:ba:48:f5:dd:79:df:b3:b8:ff:
- 12:f1:21:9a:4b:c1:8a:86:71:69:4a:66:66:6c:8f:
- 7e:3c:70:bf:ad:29:22:06:f3:e4:c0:e6:80:ae:e2:
- 4b:8f:b7:99:7e:94:03:9f:d3:47:97:7c:99:48:23:
- 53:e8:38:ae:4f:0a:6f:83:2e:d1:49:57:8c:80:74:
- b6:da:2f:d0:38:8d:7b:03:70:21:1b:75:f2:30:3c:
- fa:8f:ae:dd:da:63:ab:eb:16:4f:c2:8e:11:4b:7e:
- cf:0b:e8:ff:b5:77:2e:f4:b2:7b:4a:e0:4c:12:25:
- 0c:70:8d:03:29:a0:e1:53:24:ec:13:d9:ee:19:bf:
- 10:b3:4a:8c:3f:89:a3:61:51:de:ac:87:07:94:f4:
- 63:71:ec:2e:e2:6f:5b:98:81:e1:89:5c:34:79:6c:
- 76:ef:3b:90:62:79:e6:db:a4:9a:2f:26:c5:d0:10:
- e1:0e:de:d9:10:8e:16:fb:b7:f7:a8:f7:c7:e5:02:
- 07:98:8f:36:08:95:e7:e2:37:96:0d:36:75:9e:fb:
- 0e:72:b1:1d:9b:bc:03:f9:49:05:d8:81:dd:05:b4:
- 2a:d6:41:e9:ac:01:76:95:0a:0f:d8:df:d5:bd:12:
- 1f:35:2f:28:17:6c:d2:98:c1:a8:09:64:77:6e:47:
- 37:ba:ce:ac:59:5e:68:9d:7f:72:d6:89:c5:06:41:
- 29:3e:59:3e:dd:26:f5:24:c9:11:a7:5a:a3:4c:40:
- 1f:46:a1:99:b5:a7:3a:51:6e:86:3b:9e:7d:72:a7:
- 12:05:78:59:ed:3e:51:78:15:0b:03:8f:8d:d0:2f:
- 05:b2:3e:7b:4a:1c:4b:73:05:12:fc:c6:ea:e0:50:
- 13:7c:43:93:74:b3:ca:74:e7:8e:1f:01:08:d0:30:
- d4:5b:71:36:b4:07:ba:c1:30:30:5c:48:b7:82:3b:
- 98:a6:7d:60:8a:a2:a3:29:82:cc:ba:bd:83:04:1b:
- a2:83:03:41:a1:d6:05:f1:1b:c2:b6:f0:a8:7c:86:
- 3b:46:a8:48:2a:88:dc:76:9a:76:bf:1f:6a:a5:3d:
- 19:8f:eb:38:f3:64:de:c8:2b:0d:0a:28:ff:f7:db:
- e2:15:42:d4:22:d0:27:5d:e1:79:fe:18:e7:70:88:
- ad:4e:e6:d9:8b:3a:c6:dd:27:51:6e:ff:bc:64:f5:
- 33:43:4f
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Authority Information Access:
- CA Issuers - URI:http://apps.identrust.com/roots/dstrootcax3.p7c
-
- X509v3 Authority Key Identifier:
- keyid:C4:A7:B1:A4:7B:2C:71:FA:DB:E1:4B:90:75:FF:C4:15:60:85:89:10
-
- X509v3 Certificate Policies:
- Policy: 2.23.140.1.2.1
- Policy: 1.3.6.1.4.1.44947.1.1.1
- CPS: http://cps.root-x1.letsencrypt.org
-
- X509v3 CRL Distribution Points:
-
- Full Name:
- URI:http://crl.identrust.com/DSTROOTCAX3CRL.crl
-
- X509v3 Subject Key Identifier:
- 79:B4:59:E6:7B:B6:E5:E4:01:73:80:08:88:C8:1A:58:F6:E9:9B:6E
- Signature Algorithm: sha256WithRSAEncryption
- 0a:73:00:6c:96:6e:ff:0e:52:d0:ae:dd:8c:e7:5a:06:ad:2f:
- a8:e3:8f:bf:c9:0a:03:15:50:c2:e5:6c:42:bb:6f:9b:f4:b4:
- 4f:c2:44:88:08:75:cc:eb:07:9b:14:62:6e:78:de:ec:27:ba:
- 39:5c:f5:a2:a1:6e:56:94:70:10:53:b1:bb:e4:af:d0:a2:c3:
- 2b:01:d4:96:f4:c5:20:35:33:f9:d8:61:36:e0:71:8d:b4:b8:
- b5:aa:82:45:95:c0:f2:a9:23:28:e7:d6:a1:cb:67:08:da:a0:
- 43:2c:aa:1b:93:1f:c9:de:f5:ab:69:5d:13:f5:5b:86:58:22:
- ca:4d:55:e4:70:67:6d:c2:57:c5:46:39:41:cf:8a:58:83:58:
- 6d:99:fe:57:e8:36:0e:f0:0e:23:aa:fd:88:97:d0:e3:5c:0e:
- 94:49:b5:b5:17:35:d2:2e:bf:4e:85:ef:18:e0:85:92:eb:06:
- 3b:6c:29:23:09:60:dc:45:02:4c:12:18:3b:e9:fb:0e:de:dc:
- 44:f8:58:98:ae:ea:bd:45:45:a1:88:5d:66:ca:fe:10:e9:6f:
- 82:c8:11:42:0d:fb:e9:ec:e3:86:00:de:9d:10:e3:38:fa:a4:
- 7d:b1:d8:e8:49:82:84:06:9b:2b:e8:6b:4f:01:0c:38:77:2e:
- f9:dd:e7:39
-
------BEGIN CERTIFICATE-----
-MIIFYDCCBEigAwIBAgIQQAF3ITfU6UK47naqPGQKtzANBgkqhkiG9w0BAQsFADA/
-MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
-DkRTVCBSb290IENBIFgzMB4XDTIxMDEyMDE5MTQwM1oXDTI0MDkzMDE4MTQwM1ow
-TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
-cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwggIiMA0GCSqGSIb3DQEB
-AQUAA4ICDwAwggIKAoICAQCt6CRz9BQ385ueK1coHIe+3LffOJCMbjzmV6B493XC
-ov71am72AE8o295ohmxEk7axY/0UEmu/H9LqMZshftEzPLpI9d1537O4/xLxIZpL
-wYqGcWlKZmZsj348cL+tKSIG8+TA5oCu4kuPt5l+lAOf00eXfJlII1PoOK5PCm+D
-LtFJV4yAdLbaL9A4jXsDcCEbdfIwPPqPrt3aY6vrFk/CjhFLfs8L6P+1dy70sntK
-4EwSJQxwjQMpoOFTJOwT2e4ZvxCzSow/iaNhUd6shweU9GNx7C7ib1uYgeGJXDR5
-bHbvO5BieebbpJovJsXQEOEO3tkQjhb7t/eo98flAgeYjzYIlefiN5YNNnWe+w5y
-sR2bvAP5SQXYgd0FtCrWQemsAXaVCg/Y39W9Eh81LygXbNKYwagJZHduRze6zqxZ
-Xmidf3LWicUGQSk+WT7dJvUkyRGnWqNMQB9GoZm1pzpRboY7nn1ypxIFeFntPlF4
-FQsDj43QLwWyPntKHEtzBRL8xurgUBN8Q5N0s8p0544fAQjQMNRbcTa0B7rBMDBc
-SLeCO5imfWCKoqMpgsy6vYMEG6KDA0Gh1gXxG8K28Kh8hjtGqEgqiNx2mna/H2ql
-PRmP6zjzZN7IKw0KKP/32+IVQtQi0Cdd4Xn+GOdwiK1O5tmLOsbdJ1Fu/7xk9TND
-TwIDAQABo4IBRjCCAUIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw
-SwYIKwYBBQUHAQEEPzA9MDsGCCsGAQUFBzAChi9odHRwOi8vYXBwcy5pZGVudHJ1
-c3QuY29tL3Jvb3RzL2RzdHJvb3RjYXgzLnA3YzAfBgNVHSMEGDAWgBTEp7Gkeyxx
-+tvhS5B1/8QVYIWJEDBUBgNVHSAETTBLMAgGBmeBDAECATA/BgsrBgEEAYLfEwEB
-ATAwMC4GCCsGAQUFBwIBFiJodHRwOi8vY3BzLnJvb3QteDEubGV0c2VuY3J5cHQu
-b3JnMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly9jcmwuaWRlbnRydXN0LmNvbS9E
-U1RST09UQ0FYM0NSTC5jcmwwHQYDVR0OBBYEFHm0WeZ7tuXkAXOACIjIGlj26Ztu
-MA0GCSqGSIb3DQEBCwUAA4IBAQAKcwBslm7/DlLQrt2M51oGrS+o44+/yQoDFVDC
-5WxCu2+b9LRPwkSICHXM6webFGJueN7sJ7o5XPWioW5WlHAQU7G75K/QosMrAdSW
-9MUgNTP52GE24HGNtLi1qoJFlcDyqSMo59ahy2cI2qBDLKobkx/J3vWraV0T9VuG
-WCLKTVXkcGdtwlfFRjlBz4pYg1htmf5X6DYO8A4jqv2Il9DjXA6USbW1FzXSLr9O
-he8Y4IWS6wY7bCkjCWDcRQJMEhg76fsO3txE+FiYruq9RUWhiF1myv4Q6W+CyBFC
-Dfvp7OOGAN6dEOM4+qR9sdjoSYKEBpsr6GtPAQw4dy753ec5
------END CERTIFICATE-----
-
-===========================================
-Certificate3: 0687260331a72403d909f105e69bcf0d32e1bd2493ffc6d9206d11bcd6770739
-===========================================
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 44:af:b0:80:d6:a3:27:ba:89:30:39:86:2e:f8:40:6b
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: O = Digital Signature Trust Co., CN = DST Root CA X3
- Validity
- Not Before: Sep 30 21:12:19 2000 GMT
- Not After : Sep 30 14:01:15 2021 GMT
- Subject: O = Digital Signature Trust Co., CN = DST Root CA X3
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (2048 bit)
- Modulus:
- 00:df:af:e9:97:50:08:83:57:b4:cc:62:65:f6:90:
- 82:ec:c7:d3:2c:6b:30:ca:5b:ec:d9:c3:7d:c7:40:
- c1:18:14:8b:e0:e8:33:76:49:2a:e3:3f:21:49:93:
- ac:4e:0e:af:3e:48:cb:65:ee:fc:d3:21:0f:65:d2:
- 2a:d9:32:8f:8c:e5:f7:77:b0:12:7b:b5:95:c0:89:
- a3:a9:ba:ed:73:2e:7a:0c:06:32:83:a2:7e:8a:14:
- 30:cd:11:a0:e1:2a:38:b9:79:0a:31:fd:50:bd:80:
- 65:df:b7:51:63:83:c8:e2:88:61:ea:4b:61:81:ec:
- 52:6b:b9:a2:e2:4b:1a:28:9f:48:a3:9e:0c:da:09:
- 8e:3e:17:2e:1e:dd:20:df:5b:c6:2a:8a:ab:2e:bd:
- 70:ad:c5:0b:1a:25:90:74:72:c5:7b:6a:ab:34:d6:
- 30:89:ff:e5:68:13:7b:54:0b:c8:d6:ae:ec:5a:9c:
- 92:1e:3d:64:b3:8c:c6:df:bf:c9:41:70:ec:16:72:
- d5:26:ec:38:55:39:43:d0:fc:fd:18:5c:40:f1:97:
- eb:d5:9a:9b:8d:1d:ba:da:25:b9:c6:d8:df:c1:15:
- 02:3a:ab:da:6e:f1:3e:2e:f5:5c:08:9c:3c:d6:83:
- 69:e4:10:9b:19:2a:b6:29:57:e3:e5:3d:9b:9f:f0:
- 02:5d
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- X509v3 Subject Key Identifier:
- C4:A7:B1:A4:7B:2C:71:FA:DB:E1:4B:90:75:FF:C4:15:60:85:89:10
- Signature Algorithm: sha1WithRSAEncryption
- a3:1a:2c:9b:17:00:5c:a9:1e:ee:28:66:37:3a:bf:83:c7:3f:
- 4b:c3:09:a0:95:20:5d:e3:d9:59:44:d2:3e:0d:3e:bd:8a:4b:
- a0:74:1f:ce:10:82:9c:74:1a:1d:7e:98:1a:dd:cb:13:4b:b3:
- 20:44:e4:91:e9:cc:fc:7d:a5:db:6a:e5:fe:e6:fd:e0:4e:dd:
- b7:00:3a:b5:70:49:af:f2:e5:eb:02:f1:d1:02:8b:19:cb:94:
- 3a:5e:48:c4:18:1e:58:19:5f:1e:02:5a:f0:0c:f1:b1:ad:a9:
- dc:59:86:8b:6e:e9:91:f5:86:ca:fa:b9:66:33:aa:59:5b:ce:
- e2:a7:16:73:47:cb:2b:cc:99:b0:37:48:cf:e3:56:4b:f5:cf:
- 0f:0c:72:32:87:c6:f0:44:bb:53:72:6d:43:f5:26:48:9a:52:
- 67:b7:58:ab:fe:67:76:71:78:db:0d:a2:56:14:13:39:24:31:
- 85:a2:a8:02:5a:30:47:e1:dd:50:07:bc:02:09:90:00:eb:64:
- 63:60:9b:16:bc:88:c9:12:e6:d2:7d:91:8b:f9:3d:32:8d:65:
- b4:e9:7c:b1:57:76:ea:c5:b6:28:39:bf:15:65:1c:c8:f6:77:
- 96:6a:0a:8d:77:0b:d8:91:0b:04:8e:07:db:29:b6:0a:ee:9d:
- 82:35:35:10
-
------BEGIN CERTIFICATE-----
-MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
-MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
-DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
-PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
-Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
-AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
-rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
-OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b
-xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
-7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
-aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
-HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
-SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69
-ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
-AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
-R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
-JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
-Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
------END CERTIFICATE-----
-
diff --git a/src/pki/testdata/ssl/certificates/lets-encrypt-isrg-x1-root.pem b/src/pki/testdata/ssl/certificates/lets-encrypt-isrg-x1-root.pem
deleted file mode 100644
index 7a254db..0000000
--- a/src/pki/testdata/ssl/certificates/lets-encrypt-isrg-x1-root.pem
+++ /dev/null
@@ -1,380 +0,0 @@
-===========================================
-Certificate0: 6091eceb0c7649bd2e446f4984f739c8c7284d1c55388b2313e3a8a27d4cef96
-===========================================
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 04:7b:f4:fd:2c:fb:01:92:d5:30:c1:0f:c9:19:83:2a:49:ef
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C = US, O = Let's Encrypt, CN = R3
- Validity
- Not Before: Jan 1 19:45:05 2022 GMT
- Not After : Apr 1 19:45:04 2022 GMT
- Subject: CN = t.wayfair.com
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (2048 bit)
- Modulus:
- 00:e6:ad:89:9c:97:2e:b0:72:e8:dc:a5:4c:9c:2c:
- 29:4f:4a:4f:f1:ce:b7:06:b2:a5:21:e3:6d:47:03:
- c9:53:18:81:a9:0c:db:54:46:7a:1e:41:c9:89:12:
- 72:dd:c2:b2:49:02:30:23:9d:b6:c9:d3:e0:22:45:
- 31:d7:1d:48:38:30:31:b4:a6:12:72:6a:66:8c:51:
- ba:48:b8:aa:cf:e9:4d:4c:ee:97:63:36:19:1a:79:
- 3c:1e:be:6a:d4:a7:b4:15:5b:05:8e:e1:04:b3:7e:
- 25:08:48:0b:bc:8f:f4:07:4a:98:e0:df:2e:a7:fc:
- 74:06:43:77:3f:38:ba:bf:e3:18:65:87:68:62:5a:
- 25:80:e4:5a:c8:b2:8a:cb:a2:05:67:f3:5f:0e:6e:
- dc:4f:69:1f:69:98:cf:12:a4:db:f9:fe:9e:b6:7a:
- 2b:d2:82:35:c9:eb:5b:12:94:aa:ff:89:b5:44:5f:
- d7:7b:cd:a8:0e:da:92:ce:46:2f:eb:d5:be:28:4b:
- b3:ee:a0:2f:5e:87:b2:a7:1e:9c:32:b6:57:cf:1c:
- c3:02:09:a2:b1:a0:0a:c1:7c:1c:11:09:93:d5:70:
- 32:11:98:9c:08:03:00:cc:00:d9:2c:af:48:ac:78:
- 39:87:4e:91:07:1a:8f:fa:75:34:2a:a4:16:0e:93:
- 1d:6b
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Key Usage: critical
- Digital Signature, Key Encipherment
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- E7:58:20:5D:82:32:8D:06:2C:35:1C:97:EC:1D:F9:74:84:A9:46:D1
- X509v3 Authority Key Identifier:
- keyid:14:2E:B3:17:B7:58:56:CB:AE:50:09:40:E6:1F:AF:9D:8B:14:C2:C6
-
- Authority Information Access:
- OCSP - URI:http://r3.o.lencr.org
- CA Issuers - URI:http://r3.i.lencr.org/
-
- X509v3 Subject Alternative Name:
- DNS:magellan.wayfair.com, DNS:t.wayfair.com
- X509v3 Certificate Policies:
- Policy: 2.23.140.1.2.1
- Policy: 1.3.6.1.4.1.44947.1.1.1
- CPS: http://cps.letsencrypt.org
-
- CT Precertificate SCTs:
- Signed Certificate Timestamp:
- Version : v1 (0x0)
- Log ID : 41:C8:CA:B1:DF:22:46:4A:10:C6:A1:3A:09:42:87:5E:
- 4E:31:8B:1B:03:EB:EB:4B:C7:68:F0:90:62:96:06:F6
- Timestamp : Jan 1 20:45:05.213 2022 GMT
- Extensions: none
- Signature : ecdsa-with-SHA256
- 30:45:02:20:05:FB:47:45:BD:63:AD:FD:E7:AF:9E:7E:
- D6:51:5A:1E:AB:62:FE:2A:27:4B:A0:ED:8A:4A:8F:B3:
- C8:36:8C:BD:02:21:00:8B:07:10:4C:BF:07:1C:ED:54:
- DF:28:2C:E3:B2:32:6B:43:48:E4:04:80:28:17:91:50:
- 8D:28:FC:58:08:BF:7C
- Signed Certificate Timestamp:
- Version : v1 (0x0)
- Log ID : 46:A5:55:EB:75:FA:91:20:30:B5:A2:89:69:F4:F3:7D:
- 11:2C:41:74:BE:FD:49:B8:85:AB:F2:FC:70:FE:6D:47
- Timestamp : Jan 1 20:45:05.235 2022 GMT
- Extensions: none
- Signature : ecdsa-with-SHA256
- 30:44:02:20:73:8C:D6:ED:CC:59:2D:3D:5E:1A:37:E9:
- 42:A2:74:6D:95:1B:20:0E:19:91:40:0E:AD:A3:80:66:
- 48:FB:17:32:02:20:02:3A:61:DA:61:EF:CB:37:BB:97:
- 5E:AC:79:08:2B:5E:71:EA:9B:7B:FC:B4:F5:50:04:2E:
- E0:40:42:44:2C:79
- Signature Algorithm: sha256WithRSAEncryption
- 9d:eb:00:3c:46:54:f1:6d:64:29:7e:64:b8:73:6e:b2:69:c8:
- f9:bd:11:b1:46:a5:f6:4c:cd:77:ef:a3:51:24:65:bc:80:13:
- 84:7c:07:6b:38:eb:37:7a:f3:77:79:ad:25:7a:7d:4b:43:f8:
- 0d:e6:ad:4d:05:51:b6:b5:ba:6d:48:85:28:48:0b:13:eb:29:
- 16:7d:e9:ad:dc:25:82:73:d5:68:7a:e5:de:2c:f2:c4:08:4f:
- 84:e9:ba:db:e2:6d:31:7c:76:e0:95:85:0f:d9:cc:a8:f1:4a:
- 79:58:18:23:dc:b0:21:ee:eb:36:13:d2:82:9a:34:8f:16:b2:
- e1:c0:39:3a:85:2c:05:22:89:2c:ad:22:9a:dc:9a:98:77:44:
- 11:30:6d:2c:5d:7f:8e:9d:d7:86:6e:a6:bc:12:ce:74:22:83:
- 51:20:62:ba:69:e6:12:46:7d:75:b9:7b:8d:a2:78:66:94:a4:
- dd:9e:b6:d4:9a:bf:d2:47:44:7f:0f:a3:cd:ce:4c:e8:80:b2:
- 53:b8:ed:f7:96:16:0c:2d:04:16:63:e2:9d:07:c0:ea:6a:c8:
- 31:78:cb:e2:81:cd:0a:12:e1:ff:a1:c4:05:00:32:4c:0f:68:
- 04:11:7a:37:06:98:a8:34:26:b6:c3:b5:e8:14:93:8b:25:d5:
- 27:2b:2a:a4
-
------BEGIN CERTIFICATE-----
-MIIFNTCCBB2gAwIBAgISBHv0/Sz7AZLVMMEPyRmDKknvMA0GCSqGSIb3DQEBCwUA
-MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
-EwJSMzAeFw0yMjAxMDExOTQ1MDVaFw0yMjA0MDExOTQ1MDRaMBgxFjAUBgNVBAMT
-DXQud2F5ZmFpci5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDm
-rYmcly6wcujcpUycLClPSk/xzrcGsqUh421HA8lTGIGpDNtURnoeQcmJEnLdwrJJ
-AjAjnbbJ0+AiRTHXHUg4MDG0phJyamaMUbpIuKrP6U1M7pdjNhkaeTwevmrUp7QV
-WwWO4QSzfiUISAu8j/QHSpjg3y6n/HQGQ3c/OLq/4xhlh2hiWiWA5FrIsorLogVn
-818ObtxPaR9pmM8SpNv5/p62eivSgjXJ61sSlKr/ibVEX9d7zagO2pLORi/r1b4o
-S7PuoC9eh7KnHpwytlfPHMMCCaKxoArBfBwRCZPVcDIRmJwIAwDMANksr0iseDmH
-TpEHGo/6dTQqpBYOkx1rAgMBAAGjggJdMIICWTAOBgNVHQ8BAf8EBAMCBaAwHQYD
-VR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0O
-BBYEFOdYIF2CMo0GLDUcl+wd+XSEqUbRMB8GA1UdIwQYMBaAFBQusxe3WFbLrlAJ
-QOYfr52LFMLGMFUGCCsGAQUFBwEBBEkwRzAhBggrBgEFBQcwAYYVaHR0cDovL3Iz
-Lm8ubGVuY3Iub3JnMCIGCCsGAQUFBzAChhZodHRwOi8vcjMuaS5sZW5jci5vcmcv
-MC4GA1UdEQQnMCWCFG1hZ2VsbGFuLndheWZhaXIuY29tgg10LndheWZhaXIuY29t
-MEwGA1UdIARFMEMwCAYGZ4EMAQIBMDcGCysGAQQBgt8TAQEBMCgwJgYIKwYBBQUH
-AgEWGmh0dHA6Ly9jcHMubGV0c2VuY3J5cHQub3JnMIIBAwYKKwYBBAHWeQIEAgSB
-9ASB8QDvAHYAQcjKsd8iRkoQxqE6CUKHXk4xixsD6+tLx2jwkGKWBvYAAAF+F2OF
-PQAABAMARzBFAiAF+0dFvWOt/eevnn7WUVoeq2L+KidLoO2KSo+zyDaMvQIhAIsH
-EEy/BxztVN8oLOOyMmtDSOQEgCgXkVCNKPxYCL98AHUARqVV63X6kSAwtaKJafTz
-fREsQXS+/Um4havy/HD+bUcAAAF+F2OFUwAABAMARjBEAiBzjNbtzFktPV4aN+lC
-onRtlRsgDhmRQA6to4BmSPsXMgIgAjph2mHvyze7l16seQgrXnHqm3v8tPVQBC7g
-QEJELHkwDQYJKoZIhvcNAQELBQADggEBAJ3rADxGVPFtZCl+ZLhzbrJpyPm9EbFG
-pfZMzXfvo1EkZbyAE4R8B2s46zd683d5rSV6fUtD+A3mrU0FUba1um1IhShICxPr
-KRZ96a3cJYJz1Wh65d4s8sQIT4TputvibTF8duCVhQ/ZzKjxSnlYGCPcsCHu6zYT
-0oKaNI8WsuHAOTqFLAUiiSytIprcmph3RBEwbSxdf46d14ZuprwSznQig1EgYrpp
-5hJGfXW5e42ieGaUpN2ettSav9JHRH8Po83OTOiAslO47feWFgwtBBZj4p0HwOpq
-yDF4y+KBzQoS4f+hxAUAMkwPaAQRejcGmKg0JrbDtegUk4sl1ScrKqQ=
------END CERTIFICATE-----
-
-===========================================
-Certificate1: 67add1166b020ae61b8f5fc96813c04c2aa589960796865572a3c7e737613dfd
-===========================================
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 91:2b:08:4a:cf:0c:18:a7:53:f6:d6:2e:25:a7:5f:5a
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C = US, O = Internet Security Research Group, CN = ISRG Root X1
- Validity
- Not Before: Sep 4 00:00:00 2020 GMT
- Not After : Sep 15 16:00:00 2025 GMT
- Subject: C = US, O = Let's Encrypt, CN = R3
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (2048 bit)
- Modulus:
- 00:bb:02:15:28:cc:f6:a0:94:d3:0f:12:ec:8d:55:
- 92:c3:f8:82:f1:99:a6:7a:42:88:a7:5d:26:aa:b5:
- 2b:b9:c5:4c:b1:af:8e:6b:f9:75:c8:a3:d7:0f:47:
- 94:14:55:35:57:8c:9e:a8:a2:39:19:f5:82:3c:42:
- a9:4e:6e:f5:3b:c3:2e:db:8d:c0:b0:5c:f3:59:38:
- e7:ed:cf:69:f0:5a:0b:1b:be:c0:94:24:25:87:fa:
- 37:71:b3:13:e7:1c:ac:e1:9b:ef:db:e4:3b:45:52:
- 45:96:a9:c1:53:ce:34:c8:52:ee:b5:ae:ed:8f:de:
- 60:70:e2:a5:54:ab:b6:6d:0e:97:a5:40:34:6b:2b:
- d3:bc:66:eb:66:34:7c:fa:6b:8b:8f:57:29:99:f8:
- 30:17:5d:ba:72:6f:fb:81:c5:ad:d2:86:58:3d:17:
- c7:e7:09:bb:f1:2b:f7:86:dc:c1:da:71:5d:d4:46:
- e3:cc:ad:25:c1:88:bc:60:67:75:66:b3:f1:18:f7:
- a2:5c:e6:53:ff:3a:88:b6:47:a5:ff:13:18:ea:98:
- 09:77:3f:9d:53:f9:cf:01:e5:f5:a6:70:17:14:af:
- 63:a4:ff:99:b3:93:9d:dc:53:a7:06:fe:48:85:1d:
- a1:69:ae:25:75:bb:13:cc:52:03:f5:ed:51:a1:8b:
- db:15
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Key Usage: critical
- Digital Signature, Certificate Sign, CRL Sign
- X509v3 Extended Key Usage:
- TLS Web Client Authentication, TLS Web Server Authentication
- X509v3 Basic Constraints: critical
- CA:TRUE, pathlen:0
- X509v3 Subject Key Identifier:
- 14:2E:B3:17:B7:58:56:CB:AE:50:09:40:E6:1F:AF:9D:8B:14:C2:C6
- X509v3 Authority Key Identifier:
- keyid:79:B4:59:E6:7B:B6:E5:E4:01:73:80:08:88:C8:1A:58:F6:E9:9B:6E
-
- Authority Information Access:
- CA Issuers - URI:http://x1.i.lencr.org/
-
- X509v3 CRL Distribution Points:
-
- Full Name:
- URI:http://x1.c.lencr.org/
-
- X509v3 Certificate Policies:
- Policy: 2.23.140.1.2.1
- Policy: 1.3.6.1.4.1.44947.1.1.1
-
- Signature Algorithm: sha256WithRSAEncryption
- 85:ca:4e:47:3e:a3:f7:85:44:85:bc:d5:67:78:b2:98:63:ad:
- 75:4d:1e:96:3d:33:65:72:54:2d:81:a0:ea:c3:ed:f8:20:bf:
- 5f:cc:b7:70:00:b7:6e:3b:f6:5e:94:de:e4:20:9f:a6:ef:8b:
- b2:03:e7:a2:b5:16:3c:91:ce:b4:ed:39:02:e7:7c:25:8a:47:
- e6:65:6e:3f:46:f4:d9:f0:ce:94:2b:ee:54:ce:12:bc:8c:27:
- 4b:b8:c1:98:2f:a2:af:cd:71:91:4a:08:b7:c8:b8:23:7b:04:
- 2d:08:f9:08:57:3e:83:d9:04:33:0a:47:21:78:09:82:27:c3:
- 2a:c8:9b:b9:ce:5c:f2:64:c8:c0:be:79:c0:4f:8e:6d:44:0c:
- 5e:92:bb:2e:f7:8b:10:e1:e8:1d:44:29:db:59:20:ed:63:b9:
- 21:f8:12:26:94:93:57:a0:1d:65:04:c1:0a:22:ae:10:0d:43:
- 97:a1:18:1f:7e:e0:e0:86:37:b5:5a:b1:bd:30:bf:87:6e:2b:
- 2a:ff:21:4e:1b:05:c3:f5:18:97:f0:5e:ac:c3:a5:b8:6a:f0:
- 2e:bc:3b:33:b9:ee:4b:de:cc:fc:e4:af:84:0b:86:3f:c0:55:
- 43:36:f6:68:e1:36:17:6a:8e:99:d1:ff:a5:40:a7:34:b7:c0:
- d0:63:39:35:39:75:6e:f2:ba:76:c8:93:02:e9:a9:4b:6c:17:
- ce:0c:02:d9:bd:81:fb:9f:b7:68:d4:06:65:b3:82:3d:77:53:
- f8:8e:79:03:ad:0a:31:07:75:2a:43:d8:55:97:72:c4:29:0e:
- f7:c4:5d:4e:c8:ae:46:84:30:d7:f2:85:5f:18:a1:79:bb:e7:
- 5e:70:8b:07:e1:86:93:c3:b9:8f:dc:61:71:25:2a:af:df:ed:
- 25:50:52:68:8b:92:dc:e5:d6:b5:e3:da:7d:d0:87:6c:84:21:
- 31:ae:82:f5:fb:b9:ab:c8:89:17:3d:e1:4c:e5:38:0e:f6:bd:
- 2b:bd:96:81:14:eb:d5:db:3d:20:a7:7e:59:d3:e2:f8:58:f9:
- 5b:b8:48:cd:fe:5c:4f:16:29:fe:1e:55:23:af:c8:11:b0:8d:
- ea:7c:93:90:17:2f:fd:ac:a2:09:47:46:3f:f0:e9:b0:b7:ff:
- 28:4d:68:32:d6:67:5e:1e:69:a3:93:b8:f5:9d:8b:2f:0b:d2:
- 52:43:a6:6f:32:57:65:4d:32:81:df:38:53:85:5d:7e:5d:66:
- 29:ea:b8:dd:e4:95:b5:cd:b5:56:12:42:cd:c4:4e:c6:25:38:
- 44:50:6d:ec:ce:00:55:18:fe:e9:49:64:d4:4e:ca:97:9c:b4:
- 5b:c0:73:a8:ab:b8:47:c2
-
------BEGIN CERTIFICATE-----
-MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw
-TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
-cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw
-WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
-RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
-AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP
-R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx
-sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm
-NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg
-Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG
-/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC
-AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB
-Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA
-FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw
-AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw
-Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB
-gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W
-PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl
-ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz
-CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm
-lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4
-avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2
-yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O
-yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids
-hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+
-HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv
-MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX
-nLRbwHOoq7hHwg==
------END CERTIFICATE-----
-
-===========================================
-Certificate2: 96bcec06264976f37460779acf28c5a7cfe8a3c0aae11a8ffcee05c0bddf08c6
-===========================================
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 82:10:cf:b0:d2:40:e3:59:44:63:e0:bb:63:82:8b:00
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C = US, O = Internet Security Research Group, CN = ISRG Root X1
- Validity
- Not Before: Jun 4 11:04:38 2015 GMT
- Not After : Jun 4 11:04:38 2035 GMT
- Subject: C = US, O = Internet Security Research Group, CN = ISRG Root X1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (4096 bit)
- Modulus:
- 00:ad:e8:24:73:f4:14:37:f3:9b:9e:2b:57:28:1c:
- 87:be:dc:b7:df:38:90:8c:6e:3c:e6:57:a0:78:f7:
- 75:c2:a2:fe:f5:6a:6e:f6:00:4f:28:db:de:68:86:
- 6c:44:93:b6:b1:63:fd:14:12:6b:bf:1f:d2:ea:31:
- 9b:21:7e:d1:33:3c:ba:48:f5:dd:79:df:b3:b8:ff:
- 12:f1:21:9a:4b:c1:8a:86:71:69:4a:66:66:6c:8f:
- 7e:3c:70:bf:ad:29:22:06:f3:e4:c0:e6:80:ae:e2:
- 4b:8f:b7:99:7e:94:03:9f:d3:47:97:7c:99:48:23:
- 53:e8:38:ae:4f:0a:6f:83:2e:d1:49:57:8c:80:74:
- b6:da:2f:d0:38:8d:7b:03:70:21:1b:75:f2:30:3c:
- fa:8f:ae:dd:da:63:ab:eb:16:4f:c2:8e:11:4b:7e:
- cf:0b:e8:ff:b5:77:2e:f4:b2:7b:4a:e0:4c:12:25:
- 0c:70:8d:03:29:a0:e1:53:24:ec:13:d9:ee:19:bf:
- 10:b3:4a:8c:3f:89:a3:61:51:de:ac:87:07:94:f4:
- 63:71:ec:2e:e2:6f:5b:98:81:e1:89:5c:34:79:6c:
- 76:ef:3b:90:62:79:e6:db:a4:9a:2f:26:c5:d0:10:
- e1:0e:de:d9:10:8e:16:fb:b7:f7:a8:f7:c7:e5:02:
- 07:98:8f:36:08:95:e7:e2:37:96:0d:36:75:9e:fb:
- 0e:72:b1:1d:9b:bc:03:f9:49:05:d8:81:dd:05:b4:
- 2a:d6:41:e9:ac:01:76:95:0a:0f:d8:df:d5:bd:12:
- 1f:35:2f:28:17:6c:d2:98:c1:a8:09:64:77:6e:47:
- 37:ba:ce:ac:59:5e:68:9d:7f:72:d6:89:c5:06:41:
- 29:3e:59:3e:dd:26:f5:24:c9:11:a7:5a:a3:4c:40:
- 1f:46:a1:99:b5:a7:3a:51:6e:86:3b:9e:7d:72:a7:
- 12:05:78:59:ed:3e:51:78:15:0b:03:8f:8d:d0:2f:
- 05:b2:3e:7b:4a:1c:4b:73:05:12:fc:c6:ea:e0:50:
- 13:7c:43:93:74:b3:ca:74:e7:8e:1f:01:08:d0:30:
- d4:5b:71:36:b4:07:ba:c1:30:30:5c:48:b7:82:3b:
- 98:a6:7d:60:8a:a2:a3:29:82:cc:ba:bd:83:04:1b:
- a2:83:03:41:a1:d6:05:f1:1b:c2:b6:f0:a8:7c:86:
- 3b:46:a8:48:2a:88:dc:76:9a:76:bf:1f:6a:a5:3d:
- 19:8f:eb:38:f3:64:de:c8:2b:0d:0a:28:ff:f7:db:
- e2:15:42:d4:22:d0:27:5d:e1:79:fe:18:e7:70:88:
- ad:4e:e6:d9:8b:3a:c6:dd:27:51:6e:ff:bc:64:f5:
- 33:43:4f
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- 79:B4:59:E6:7B:B6:E5:E4:01:73:80:08:88:C8:1A:58:F6:E9:9B:6E
- Signature Algorithm: sha256WithRSAEncryption
- 55:1f:58:a9:bc:b2:a8:50:d0:0c:b1:d8:1a:69:20:27:29:08:
- ac:61:75:5c:8a:6e:f8:82:e5:69:2f:d5:f6:56:4b:b9:b8:73:
- 10:59:d3:21:97:7e:e7:4c:71:fb:b2:d2:60:ad:39:a8:0b:ea:
- 17:21:56:85:f1:50:0e:59:eb:ce:e0:59:e9:ba:c9:15:ef:86:
- 9d:8f:84:80:f6:e4:e9:91:90:dc:17:9b:62:1b:45:f0:66:95:
- d2:7c:6f:c2:ea:3b:ef:1f:cf:cb:d6:ae:27:f1:a9:b0:c8:ae:
- fd:7d:7e:9a:fa:22:04:eb:ff:d9:7f:ea:91:2b:22:b1:17:0e:
- 8f:f2:8a:34:5b:58:d8:fc:01:c9:54:b9:b8:26:cc:8a:88:33:
- 89:4c:2d:84:3c:82:df:ee:96:57:05:ba:2c:bb:f7:c4:b7:c7:
- 4e:3b:82:be:31:c8:22:73:73:92:d1:c2:80:a4:39:39:10:33:
- 23:82:4c:3c:9f:86:b2:55:98:1d:be:29:86:8c:22:9b:9e:e2:
- 6b:3b:57:3a:82:70:4d:dc:09:c7:89:cb:0a:07:4d:6c:e8:5d:
- 8e:c9:ef:ce:ab:c7:bb:b5:2b:4e:45:d6:4a:d0:26:cc:e5:72:
- ca:08:6a:a5:95:e3:15:a1:f7:a4:ed:c9:2c:5f:a5:fb:ff:ac:
- 28:02:2e:be:d7:7b:bb:e3:71:7b:90:16:d3:07:5e:46:53:7c:
- 37:07:42:8c:d3:c4:96:9c:d5:99:b5:2a:e0:95:1a:80:48:ae:
- 4c:39:07:ce:cc:47:a4:52:95:2b:ba:b8:fb:ad:d2:33:53:7d:
- e5:1d:4d:6d:d5:a1:b1:c7:42:6f:e6:40:27:35:5c:a3:28:b7:
- 07:8d:e7:8d:33:90:e7:23:9f:fb:50:9c:79:6c:46:d5:b4:15:
- b3:96:6e:7e:9b:0c:96:3a:b8:52:2d:3f:d6:5b:e1:fb:08:c2:
- 84:fe:24:a8:a3:89:da:ac:6a:e1:18:2a:b1:a8:43:61:5b:d3:
- 1f:dc:3b:8d:76:f2:2d:e8:8d:75:df:17:33:6c:3d:53:fb:7b:
- cb:41:5f:ff:dc:a2:d0:61:38:e1:96:b8:ac:5d:8b:37:d7:75:
- d5:33:c0:99:11:ae:9d:41:c1:72:75:84:be:02:41:42:5f:67:
- 24:48:94:d1:9b:27:be:07:3f:b9:b8:4f:81:74:51:e1:7a:b7:
- ed:9d:23:e2:be:e0:d5:28:04:13:3c:31:03:9e:dd:7a:6c:8f:
- c6:07:18:c6:7f:de:47:8e:3f:28:9e:04:06:cf:a5:54:34:77:
- bd:ec:89:9b:e9:17:43:df:5b:db:5f:fe:8e:1e:57:a2:cd:40:
- 9d:7e:62:22:da:de:18:27
-
------BEGIN CERTIFICATE-----
-MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
-TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
-cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
-WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
-ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
-MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
-h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
-0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
-A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
-T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
-B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
-B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
-KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
-OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
-jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
-qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
-rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
-HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
-hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
-ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
-3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
-NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
-ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
-TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
-jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
-oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
-4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
-mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
-emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
------END CERTIFICATE-----
-
diff --git a/src/pki/testdata/ssl/certificates/localhost_cert.pem b/src/pki/testdata/ssl/certificates/localhost_cert.pem
deleted file mode 100644
index f8d3703..0000000
--- a/src/pki/testdata/ssl/certificates/localhost_cert.pem
+++ /dev/null
@@ -1,113 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDdMNTtFer7VSdt
-l6zPVbTtl9+an2G7yIJJM/SxOmDfoxkgYKnuOfR8D45dcjVTDzyRQTxUQfIXfRWx
-ZqzSjVA1ax2Jc7+nAQV58q7aIpXG1dUkxS23uYKXenkZLRdr7s97F1+xiTJxYuqB
-KIIqI5q6H9TWHkgbsVbywc5hIlThH1DDPs7eopMnKfq3tK3QGemaviIhcVPFouh5
-OW97udBXzeRB9niLLyHbH9tlxdUmBm+eNZu+kZtFVGz+a9bleRFPnReevSomqLfD
-DYbuuCSOyXKiGOjtaiJ+MZRkHZF+arHoGq4u4bElyQf7waJyfoxnJn8qE3Ek9jo7
-Ddy/g+CPAgMBAAECggEBANbEnVp/F6RmMFx3E3JV09GGz7SA4RLGQ8r0Sbjz6C/9
-W15WvWj0mPEE4cTWKfS2LKcVYpClX31zFOclvNTMJX9YvFtEKmjr0vdvrltbjXZ9
-FfIYCqYD2Etgvci2QbGpNYhdT6tAfdweoXg7bvefjpL+aVhmGrnY3YXkrJEgFq5m
-PWoPflqmrBA7ktNI2crLa/ty/bIIH6srIJVpRRle1NdUMIv9W1vFsK0HLV+BuOoQ
-TqkjMybqWapAhCfTj85fjeoMggRbJyq9+uDpZBYqIcb/qFkSnWyqEq3y+xvpQqN7
-oGPaeh4+Zyb6aHcQnVHBrhr5lbo6mgGYDw/yO/KDaIECgYEA9KX/xZb6z8on36kp
-f9Kv8U/eq4rcyywxJtl+HPVLcSz/fIb5pAhtGbfG9VTjc/mVlrh/lB5w7qb/Lq+f
-8oGUTv5eUzUXRI+d5AZwf2aTLeHWMSn02ouK1u8bJ8C2qv8FYu7Kb5lIDTJM7SEE
-7hbdPF7FPlZAh59oLdUUXW8Aj+ECgYEA53QyIwbM4nMQVbeC4T+ahkLIYfZP+Yct
-PMxW49VjDuZIQzeGMbxCMebsG2BHJ3n7vh9WUDEotb2ApFaBc7ChiJCOvH3vdJWM
-ljBxVebaZsKSdv8ZzbYbpJR2tO2ZzifMN67JrM3Ge7k5sgJLhxsMfn7uXIO3aPQj
-lsgdWc0NPm8CgYEArVCcLgKTlHkGXnCcsa00b6PBf41UdarM91TE/wbXd0oFhNaq
-LAa8I6gKDusgZ5y82JXD687U+nzb8tsAWPBrfLq/X/sQjMWheVUGhXrJcYu4DgRH
-LjwFE9c4SaVAw0r/KeM5Dm5smMy1qpflwjX4bThGS68W7/2B9FYrozVsFIECgYAk
-vHqguJmYb67uC/yIB/Jc0QjBE7lJ37y8Y6p+6wWX/dEGai+wgTL4fLCI/9ULXP8q
-BAtNGyBdCED81IYjeKuK43bkUBDLrljsFbBHdCbCHKvmm0LbNcZZbv8QZI3+/K4b
-QHDeLqMMTC/uIxMd1Js9EKSApp9b1zQ24HhYIoWxnQKBgQDxsyI6BCxtLO8wzAjW
-xWie6xH3o8MXi544URFhFs3Y/xCj4slha1yYb/CBzLN/IxKtBA2Kbox4/rWHaWLT
-QUmcL8vcTRTx7yvrXuMXGunoF8q7adcfPDrAqaJ4OdkMy5W5VBhHqMjj+4cIy9Yq
-LkC9LPJjUl2Ai8j8tLTVGB01HQ==
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:6a
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Oct 3 17:20:08 2022 GMT
- Not After : Oct 2 17:20:08 2024 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=localhost
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:dd:30:d4:ed:15:ea:fb:55:27:6d:97:ac:cf:55:
- b4:ed:97:df:9a:9f:61:bb:c8:82:49:33:f4:b1:3a:
- 60:df:a3:19:20:60:a9:ee:39:f4:7c:0f:8e:5d:72:
- 35:53:0f:3c:91:41:3c:54:41:f2:17:7d:15:b1:66:
- ac:d2:8d:50:35:6b:1d:89:73:bf:a7:01:05:79:f2:
- ae:da:22:95:c6:d5:d5:24:c5:2d:b7:b9:82:97:7a:
- 79:19:2d:17:6b:ee:cf:7b:17:5f:b1:89:32:71:62:
- ea:81:28:82:2a:23:9a:ba:1f:d4:d6:1e:48:1b:b1:
- 56:f2:c1:ce:61:22:54:e1:1f:50:c3:3e:ce:de:a2:
- 93:27:29:fa:b7:b4:ad:d0:19:e9:9a:be:22:21:71:
- 53:c5:a2:e8:79:39:6f:7b:b9:d0:57:cd:e4:41:f6:
- 78:8b:2f:21:db:1f:db:65:c5:d5:26:06:6f:9e:35:
- 9b:be:91:9b:45:54:6c:fe:6b:d6:e5:79:11:4f:9d:
- 17:9e:bd:2a:26:a8:b7:c3:0d:86:ee:b8:24:8e:c9:
- 72:a2:18:e8:ed:6a:22:7e:31:94:64:1d:91:7e:6a:
- b1:e8:1a:ae:2e:e1:b1:25:c9:07:fb:c1:a2:72:7e:
- 8c:67:26:7f:2a:13:71:24:f6:3a:3b:0d:dc:bf:83:
- e0:8f
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 82:64:D7:FB:A9:83:29:D9:3D:A4:7B:9E:A5:2F:1C:FB:C4:34:4D:CB
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- DNS:localhost
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 7c:c0:17:74:a4:4c:c8:0e:40:ca:d8:ae:3f:f3:f5:fb:e7:cb:
- 40:59:46:48:5f:13:a3:c7:3a:13:d9:28:77:11:14:1b:66:c0:
- 76:78:86:84:bb:ad:48:ad:ec:2f:fe:42:0e:37:0b:c9:90:16:
- cd:23:72:e7:65:14:62:bb:04:06:a2:da:68:25:a4:47:a9:1c:
- c3:a5:c2:2f:a5:7e:6a:8c:74:fd:34:5e:e2:ea:a3:89:48:12:
- c0:09:96:1b:aa:0e:c1:d3:1c:a2:34:8b:74:52:00:be:e4:ee:
- 8b:d4:2d:c0:80:fe:c4:fd:57:d7:19:a8:97:6d:2b:c0:a7:51:
- 42:4f:9a:ee:81:4c:49:76:db:2b:20:fd:f0:11:96:6a:d7:f7:
- 1c:42:b8:17:a8:d4:e1:73:1e:1c:65:e5:32:5f:86:36:dd:51:
- 6e:92:53:1a:62:4a:bc:4d:92:bb:71:63:c7:00:1d:e2:72:98:
- 2d:9c:52:6d:72:16:46:8b:c6:1f:86:80:23:44:e7:cc:45:08:
- ee:f5:d5:a2:f7:a4:91:9e:2e:3f:07:2c:87:80:db:db:8e:43:
- 00:24:d9:ad:23:ef:a1:23:33:e2:21:82:5f:db:3c:2c:64:02:
- b6:2b:af:ad:6f:bc:2b:0d:4f:19:3c:5a:2a:96:dc:41:44:57:
- dc:d0:5b:2c
------BEGIN CERTIFICATE-----
-MIID1TCCAr2gAwIBAgIRALBrk5LjXI1+7Z3IllnFwmowDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0yMjEwMDMxNzIwMDhaFw0yNDEwMDIxNzIwMDhaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAlsb2NhbGhvc3QwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDdMNTtFer7VSdtl6zPVbTtl9+an2G7yIJJ
-M/SxOmDfoxkgYKnuOfR8D45dcjVTDzyRQTxUQfIXfRWxZqzSjVA1ax2Jc7+nAQV5
-8q7aIpXG1dUkxS23uYKXenkZLRdr7s97F1+xiTJxYuqBKIIqI5q6H9TWHkgbsVby
-wc5hIlThH1DDPs7eopMnKfq3tK3QGemaviIhcVPFouh5OW97udBXzeRB9niLLyHb
-H9tlxdUmBm+eNZu+kZtFVGz+a9bleRFPnReevSomqLfDDYbuuCSOyXKiGOjtaiJ+
-MZRkHZF+arHoGq4u4bElyQf7waJyfoxnJn8qE3Ek9jo7Ddy/g+CPAgMBAAGjgYYw
-gYMwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUgmTX+6mDKdk9pHuepS8c+8Q0Tcsw
-HwYDVR0jBBgwFoAUmyYLipipux25HxzjGkAz7Y4XiKswHQYDVR0lBBYwFAYIKwYB
-BQUHAwEGCCsGAQUFBwMCMBQGA1UdEQQNMAuCCWxvY2FsaG9zdDANBgkqhkiG9w0B
-AQsFAAOCAQEAfMAXdKRMyA5AytiuP/P1++fLQFlGSF8To8c6E9kodxEUG2bAdniG
-hLutSK3sL/5CDjcLyZAWzSNy52UUYrsEBqLaaCWkR6kcw6XCL6V+aox0/TRe4uqj
-iUgSwAmWG6oOwdMcojSLdFIAvuTui9QtwID+xP1X1xmol20rwKdRQk+a7oFMSXbb
-KyD98BGWatf3HEK4F6jU4XMeHGXlMl+GNt1RbpJTGmJKvE2Su3FjxwAd4nKYLZxS
-bXIWRovGH4aAI0TnzEUI7vXVovekkZ4uPwcsh4Db245DACTZrSPvoSMz4iGCX9s8
-LGQCtiuvrW+8Kw1PGTxaKpbcQURX3NBbLA==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/may_2018.pem b/src/pki/testdata/ssl/certificates/may_2018.pem
deleted file mode 100644
index 037e004..0000000
--- a/src/pki/testdata/ssl/certificates/may_2018.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:85
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: May 1 00:00:00 2018 GMT
- Not After : Aug 3 00:00:00 2020 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:ea:e1:1f:7d:6f:ea:1e:9b:48:0b:ef:50:23:47:
- bf:7d:b7:1e:bf:0f:21:96:f7:71:50:9c:8c:85:3e:
- d8:c1:04:1e:77:bf:22:a1:86:98:c1:77:ce:b0:26:
- 43:64:a5:0c:38:b5:a7:47:12:b1:15:d1:9e:c1:99:
- 5c:bf:49:af:74:89:6f:6d:72:73:db:75:78:d6:59:
- 26:de:56:f5:e7:bc:99:4f:3e:9e:56:57:37:fc:c8:
- 47:19:ab:82:19:64:a8:20:50:2d:a9:1c:d3:0b:e1:
- 0a:b9:ac:71:92:26:3a:cd:cc:e9:24:28:9c:0f:5a:
- 3b:55:1f:4d:56:2d:70:c0:7c:f5:d2:22:42:a5:d5:
- 2b:1c:69:a7:58:a2:13:ea:31:ef:0a:c7:83:22:19:
- 63:bb:8a:69:0b:14:47:02:48:b1:e5:bf:86:53:57:
- b8:66:8a:e5:96:99:4e:c5:aa:0b:a3:13:f5:a0:d5:
- 46:92:d4:30:ea:04:59:d2:0d:88:05:83:d4:7f:ea:
- 2a:6c:05:3d:c7:1f:ec:d4:e8:8e:cc:6c:65:e0:53:
- a3:ce:60:85:ac:02:a8:e5:0d:93:22:33:f7:dc:fa:
- d9:56:a5:cc:3b:6d:58:ad:6d:7b:82:ff:e9:78:2b:
- 59:37:ff:01:a2:e0:3b:0f:71:86:b6:fa:0d:b4:0b:
- 21:2f
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 44:18:DF:A8:01:30:8C:D7:AE:44:06:6E:FA:98:D9:7D:43:35:92:07
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 35:bd:31:e9:2f:8f:24:03:63:ac:0f:eb:42:8c:79:3e:9a:2b:
- a0:67:c3:a2:87:11:74:61:8a:f5:d4:5f:43:b4:9d:47:ff:86:
- f8:52:66:b0:1f:f5:55:d2:e6:ba:11:cc:ca:2d:57:9a:90:e1:
- 60:b4:3d:38:78:cf:9d:31:e2:8f:b0:b5:96:cc:2e:a4:bd:68:
- 5a:dc:48:41:f8:d7:71:9f:bc:52:84:15:d9:5c:46:70:20:d0:
- 57:d9:67:47:dd:b4:17:12:7f:0b:20:94:4b:6d:3d:66:fc:02:
- 6b:43:a4:b5:db:a7:88:6e:91:c3:66:c1:1a:e5:ec:bb:c2:13:
- 29:f1:3f:81:11:99:1a:58:88:de:b5:fc:d6:0e:c0:a6:31:df:
- ba:e0:c0:3a:a3:1b:60:7a:c6:9c:e0:46:e4:98:a5:08:48:a8:
- c6:83:c6:8a:3b:b9:8b:e1:2e:21:91:58:ad:8c:fc:e3:99:bb:
- 68:70:15:19:13:38:89:0b:c9:b3:03:52:65:52:68:37:64:c5:
- fd:50:99:90:74:d4:b3:29:8a:49:a6:65:e1:fb:df:14:5b:6f:
- eb:ac:59:f8:91:68:07:c1:ea:e3:63:31:ec:66:d5:57:bd:82:
- 34:b3:8a:75:80:f8:75:28:9e:92:33:84:d8:d8:7b:f1:85:14:
- be:60:e6:33
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwoUwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0xODA1MDEwMDAwMDBaFw0yMDA4MDMwMDAwMDBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDq4R99b+oem0gL71AjR799tx6/DyGW93FQ
-nIyFPtjBBB53vyKhhpjBd86wJkNkpQw4tadHErEV0Z7BmVy/Sa90iW9tcnPbdXjW
-WSbeVvXnvJlPPp5WVzf8yEcZq4IZZKggUC2pHNML4Qq5rHGSJjrNzOkkKJwPWjtV
-H01WLXDAfPXSIkKl1SscaadYohPqMe8Kx4MiGWO7imkLFEcCSLHlv4ZTV7hmiuWW
-mU7FqgujE/Wg1UaS1DDqBFnSDYgFg9R/6ipsBT3HH+zU6I7MbGXgU6POYIWsAqjl
-DZMiM/fc+tlWpcw7bVitbXuC/+l4K1k3/wGi4DsPcYa2+g20CyEvAgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBREGN+oATCM165EBm76mNl9QzWSBzAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEANb0x6S+PJANjrA/rQox5PporoGfDoocRdGGK9dRfQ7SdR/+G+FJmsB/1VdLm
-uhHMyi1XmpDhYLQ9OHjPnTHij7C1lswupL1oWtxIQfjXcZ+8UoQV2VxGcCDQV9ln
-R920FxJ/CyCUS209ZvwCa0OktduniG6Rw2bBGuXsu8ITKfE/gRGZGliI3rX81g7A
-pjHfuuDAOqMbYHrGnOBG5JilCEioxoPGiju5i+EuIZFYrYz845m7aHAVGRM4iQvJ
-swNSZVJoN2TF/VCZkHTUsymKSaZl4fvfFFtv66xZ+JFoB8Hq42Mx7GbVV72CNLOK
-dYD4dSiekjOE2Nh78YUUvmDmMw==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/mit.davidben.der b/src/pki/testdata/ssl/certificates/mit.davidben.der
deleted file mode 100644
index 4e26aa8..0000000
--- a/src/pki/testdata/ssl/certificates/mit.davidben.der
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/multi-root-chain1.pem b/src/pki/testdata/ssl/certificates/multi-root-chain1.pem
deleted file mode 100644
index fb53c33..0000000
--- a/src/pki/testdata/ssl/certificates/multi-root-chain1.pem
+++ /dev/null
@@ -1,305 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4096 (0x1000)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=B CA - Multi-root
- Validity
- Not Before: Feb 28 23:46:47 2017 GMT
- Not After : Feb 26 23:46:47 2027 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:a4:18:86:3f:09:63:9c:d4:c0:06:45:a5:91:7f:
- e7:a7:b8:3d:c7:ff:0d:e8:39:f5:43:27:a7:44:2a:
- 3b:53:03:e3:cd:13:23:46:5f:e0:27:f0:a3:7a:25:
- 82:b0:52:bb:03:4f:99:e3:2c:1b:6f:54:05:0f:7f:
- 4f:74:f9:ad:b2:88:85:43:63:06:ac:91:f1:19:b7:
- da:7a:42:68:6a:68:a5:e0:02:44:23:eb:d1:05:0d:
- 3d:58:31:ee:ba:20:9e:16:11:f5:ae:b5:c3:21:cc:
- 84:e7:1a:d2:c2:8c:7e:44:93:36:bd:6c:0c:07:35:
- f2:4e:57:3f:b3:cf:21:5a:ff:16:02:e9:61:f4:cc:
- 4a:5a:24:da:55:fc:c6:da:44:d6:b7:2a:4e:31:bf:
- a0:80:24:55:ed:5c:bc:6b:84:12:a4:03:cc:b2:c2:
- db:ef:1e:08:bd:a3:bf:ef:fc:3d:53:38:b9:00:8a:
- d6:40:1a:cc:f2:6a:ab:e7:4b:67:1c:ae:ff:6d:43:
- 12:08:c6:97:4b:73:df:85:cf:2a:a5:6e:ce:22:02:
- cb:63:6c:3f:00:aa:3b:b0:87:9b:d5:13:09:32:4c:
- bd:71:79:ff:04:b1:9a:8d:2d:a0:0a:65:d5:1e:53:
- c4:eb:0e:14:c0:b9:f3:8f:6f:64:b4:1d:11:a7:40:
- e7:61
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 28:6F:58:36:8F:1B:C5:99:18:5B:DC:A5:86:AF:89:F2:B4:3E:AF:51
- X509v3 Authority Key Identifier:
- keyid:D0:8D:1F:B2:BC:29:96:73:EF:0C:7A:C2:A4:06:96:CF:D5:8C:31:DB
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- 07:8f:f9:c6:33:3c:bc:74:20:21:92:46:7a:c5:df:76:18:47:
- 63:0c:5e:e8:f3:97:ec:37:83:0b:4d:a4:1c:6b:0b:a2:28:db:
- 5c:17:d9:91:77:00:4a:db:46:f9:68:ec:2a:f8:b5:82:0c:00:
- d1:88:0c:7c:b4:2d:e9:48:f5:a2:9d:a9:d5:bb:db:9d:56:96:
- c5:6c:46:da:23:a3:66:80:a5:9b:93:d0:df:9c:00:75:ac:48:
- ea:48:b4:22:ee:ff:db:eb:bb:8f:f0:de:16:a1:99:98:85:4c:
- b3:66:dd:22:96:96:97:48:ae:8a:2d:e9:a5:1c:5c:d9:dd:31:
- 3f:58:7c:bb:2b:db:86:6a:53:e5:af:6d:85:3a:ca:92:5d:56:
- e2:02:90:d7:eb:98:0f:d8:ba:2a:d1:26:bb:82:5b:80:d5:2d:
- 52:d7:40:4d:0d:0d:1e:fe:c2:89:be:e2:80:4d:cd:91:dc:f3:
- fa:19:25:3e:ba:a8:cf:48:d3:b6:35:a5:96:6e:a5:12:d1:65:
- 65:a9:92:6b:d0:fc:05:25:7c:fb:76:48:38:15:7e:4f:95:03:
- b0:c3:55:89:bc:59:be:de:3c:fb:4b:5a:f1:3b:00:c1:03:59:
- 6c:b3:8b:21:7e:84:75:30:19:8c:19:f6:99:40:ec:87:43:3b:
- 89:d0:f5:6d
------BEGIN CERTIFICATE-----
-MIIDeTCCAmGgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwHDEaMBgGA1UEAwwRQiBD
-QSAtIE11bHRpLXJvb3QwHhcNMTcwMjI4MjM0NjQ3WhcNMjcwMjI2MjM0NjQ3WjBg
-MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91
-bnRhaW4gVmlldzEQMA4GA1UECgwHVGVzdCBDQTESMBAGA1UEAwwJMTI3LjAuMC4x
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApBiGPwljnNTABkWlkX/n
-p7g9x/8N6Dn1QyenRCo7UwPjzRMjRl/gJ/CjeiWCsFK7A0+Z4ywbb1QFD39PdPmt
-soiFQ2MGrJHxGbfaekJoamil4AJEI+vRBQ09WDHuuiCeFhH1rrXDIcyE5xrSwox+
-RJM2vWwMBzXyTlc/s88hWv8WAulh9MxKWiTaVfzG2kTWtypOMb+ggCRV7Vy8a4QS
-pAPMssLb7x4IvaO/7/w9Uzi5AIrWQBrM8mqr50tnHK7/bUMSCMaXS3Pfhc8qpW7O
-IgLLY2w/AKo7sIeb1RMJMky9cXn/BLGajS2gCmXVHlPE6w4UwLnzj29ktB0Rp0Dn
-YQIDAQABo4GAMH4wDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUKG9YNo8bxZkYW9yl
-hq+J8rQ+r1EwHwYDVR0jBBgwFoAU0I0fsrwplnPvDHrCpAaWz9WMMdswHQYDVR0l
-BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA8GA1UdEQQIMAaHBH8AAAEwDQYJKoZI
-hvcNAQELBQADggEBAAeP+cYzPLx0ICGSRnrF33YYR2MMXujzl+w3gwtNpBxrC6Io
-21wX2ZF3AErbRvlo7Cr4tYIMANGIDHy0LelI9aKdqdW7251WlsVsRtojo2aApZuT
-0N+cAHWsSOpItCLu/9vru4/w3hahmZiFTLNm3SKWlpdIroot6aUcXNndMT9YfLsr
-24ZqU+WvbYU6ypJdVuICkNfrmA/YuirRJruCW4DVLVLXQE0NDR7+wom+4oBNzZHc
-8/oZJT66qM9I07Y1pZZupRLRZWWpkmvQ/AUlfPt2SDgVfk+VA7DDVYm8Wb7ePPtL
-WvE7AMEDWWyziyF+hHUwGYwZ9plA7IdDO4nQ9W0=
------END CERTIFICATE-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4096 (0x1000)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=C CA - Multi-root
- Validity
- Not Before: Jan 4 00:00:00 2016 GMT
- Not After : Jan 2 00:00:00 2026 GMT
- Subject: CN=B CA - Multi-root
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:ca:6c:54:ab:3c:54:33:6c:d7:04:c4:4b:c4:39:
- 32:db:7a:49:e4:e1:e7:60:c7:35:33:08:59:ba:62:
- bf:49:d6:05:1f:07:b8:b6:bd:38:2f:6b:a7:e5:8d:
- de:79:27:d8:36:58:92:69:cc:db:8e:6a:89:b4:79:
- ab:cf:98:53:08:12:17:9e:51:15:bc:e7:8f:e5:93:
- d9:1a:2e:68:a9:93:3c:d3:7a:75:a4:5c:c2:fc:16:
- 9b:ba:df:49:5d:73:65:ec:b0:cc:1e:ba:cc:98:39:
- d1:4e:b2:d6:5f:e8:7f:24:1a:fa:56:b0:0d:33:46:
- 22:56:4f:5c:f3:16:ad:55:8a:62:3c:bc:50:c2:3a:
- 58:3e:70:4d:5a:df:99:ec:c7:a6:2c:8f:2a:a5:2e:
- 11:b8:58:c5:d5:e8:43:2f:40:a5:20:80:32:2a:76:
- 5e:06:07:48:6d:44:60:ba:21:72:61:e2:1a:ec:64:
- 5d:72:72:f1:21:9d:04:2f:61:35:0b:2f:f0:c0:fe:
- 52:b8:c4:41:9c:b6:13:58:21:81:e3:28:27:4d:6c:
- 24:a3:20:fb:0f:9c:d4:4f:34:3a:d0:d1:08:84:c4:
- 40:71:44:4f:e8:be:c5:1f:5d:1c:34:64:0b:6c:1c:
- 24:fa:a9:83:49:c6:f5:4d:7f:63:c0:1a:a9:77:8a:
- c0:43
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- D0:8D:1F:B2:BC:29:96:73:EF:0C:7A:C2:A4:06:96:CF:D5:8C:31:DB
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha256WithRSAEncryption
- 1e:16:7c:d7:d1:ee:63:a9:a2:b1:87:2c:8b:1e:d3:cf:51:14:
- ed:12:0b:ec:67:2b:7f:3b:0e:8e:3c:50:bb:d1:dc:3b:40:1a:
- ec:44:30:c4:f6:65:c2:c3:5d:d8:cb:c2:6c:13:2e:5a:2d:76:
- c6:6b:5d:65:a5:7e:c2:bf:cb:fc:b1:50:b0:43:47:fc:a3:7b:
- 07:d1:77:50:4f:d2:53:98:8f:a2:00:97:13:d9:b7:83:2e:d9:
- c4:2a:e6:b1:fc:2d:6c:ce:d1:61:73:aa:40:e0:ce:87:74:43:
- a2:f7:b5:d9:5f:46:79:97:28:c4:de:15:60:3b:3e:3f:3d:1d:
- 14:f4:87:ef:b9:08:09:2a:fb:d0:d5:1b:4f:77:f9:0d:c9:4b:
- 23:32:1c:06:04:a6:83:aa:00:9c:70:c2:2b:01:42:1e:f6:d6:
- d3:5c:f9:a8:b7:84:9e:44:12:9a:9f:a8:2a:89:56:69:a6:2f:
- e9:ee:67:e9:7e:32:b5:ef:6b:4e:f0:12:23:fa:85:3e:03:59:
- 94:db:88:99:04:55:c4:d1:df:df:c6:e2:fd:61:c5:f6:af:dc:
- 4c:e4:52:8f:f2:c8:07:39:dd:99:33:49:85:1e:df:e1:1f:08:
- 6b:e0:d2:1b:93:db:32:05:4b:39:ee:b3:f1:b6:af:18:07:a7:
- 24:9c:1e:75
------BEGIN CERTIFICATE-----
-MIIC9jCCAd6gAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwHDEaMBgGA1UEAwwRQyBD
-QSAtIE11bHRpLXJvb3QwHhcNMTYwMTA0MDAwMDAwWhcNMjYwMTAyMDAwMDAwWjAc
-MRowGAYDVQQDDBFCIENBIC0gTXVsdGktcm9vdDCCASIwDQYJKoZIhvcNAQEBBQAD
-ggEPADCCAQoCggEBAMpsVKs8VDNs1wTES8Q5Mtt6SeTh52DHNTMIWbpiv0nWBR8H
-uLa9OC9rp+WN3nkn2DZYkmnM245qibR5q8+YUwgSF55RFbznj+WT2RouaKmTPNN6
-daRcwvwWm7rfSV1zZeywzB66zJg50U6y1l/ofyQa+lawDTNGIlZPXPMWrVWKYjy8
-UMI6WD5wTVrfmezHpiyPKqUuEbhYxdXoQy9ApSCAMip2XgYHSG1EYLohcmHiGuxk
-XXJy8SGdBC9hNQsv8MD+UrjEQZy2E1ghgeMoJ01sJKMg+w+c1E80OtDRCITEQHFE
-T+i+xR9dHDRkC2wcJPqpg0nG9U1/Y8AaqXeKwEMCAwEAAaNCMEAwDwYDVR0TAQH/
-BAUwAwEB/zAdBgNVHQ4EFgQU0I0fsrwplnPvDHrCpAaWz9WMMdswDgYDVR0PAQH/
-BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQAeFnzX0e5jqaKxhyyLHtPPURTtEgvs
-Zyt/Ow6OPFC70dw7QBrsRDDE9mXCw13Yy8JsEy5aLXbGa11lpX7Cv8v8sVCwQ0f8
-o3sH0XdQT9JTmI+iAJcT2beDLtnEKuax/C1sztFhc6pA4M6HdEOi97XZX0Z5lyjE
-3hVgOz4/PR0U9IfvuQgJKvvQ1RtPd/kNyUsjMhwGBKaDqgCccMIrAUIe9tbTXPmo
-t4SeRBKan6gqiVZppi/p7mfpfjK172tO8BIj+oU+A1mU24iZBFXE0d/fxuL9YcX2
-r9xM5FKP8sgHOd2ZM0mFHt/hHwhr4NIbk9syBUs57rPxtq8YB6cknB51
------END CERTIFICATE-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4097 (0x1001)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=D Root CA - Multi-root
- Validity
- Not Before: Jan 3 00:00:00 2016 GMT
- Not After : Jan 2 00:00:00 2026 GMT
- Subject: CN=C CA - Multi-root
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:b2:c4:16:dc:07:88:ec:7e:a6:b3:25:c8:7b:9c:
- e0:07:1e:40:a9:40:c0:4d:c8:73:27:ea:88:d8:58:
- 1a:1a:12:e3:9a:62:41:4c:a1:e9:b1:ce:c6:b2:f6:
- 3a:f6:89:3f:40:e6:0f:fb:15:4b:cb:d2:8d:8e:b6:
- 44:aa:63:fa:3b:c5:cc:af:86:05:70:aa:ec:f4:b3:
- 79:04:e6:3e:25:ec:ec:29:d6:c9:8b:7b:13:05:a7:
- ff:51:5b:ab:4c:bc:d0:e4:bd:61:1a:d2:27:f1:2e:
- 5f:f4:51:81:c4:23:ba:20:c3:14:08:b4:be:78:49:
- b5:13:1f:69:fd:f6:a7:59:91:84:a9:99:10:c8:9c:
- 63:9e:99:c2:f2:3d:61:9d:6a:6e:d4:26:9b:88:aa:
- da:66:b3:0d:c6:99:03:16:13:3a:a4:9a:ff:08:3e:
- 59:df:a7:44:b7:17:99:3f:63:7f:3a:05:7e:ce:64:
- 78:34:e6:00:77:69:e6:03:24:a7:12:f3:e8:a8:50:
- 2b:55:16:fa:6e:65:c6:28:58:82:a4:20:7e:68:22:
- e9:81:9e:a2:e8:0f:d6:87:c2:73:dd:c2:0c:cc:a3:
- 47:54:11:f5:3d:dc:51:52:57:b2:ce:77:8b:7a:ac:
- a7:f0:2a:26:36:e6:26:b9:6a:83:da:b2:6f:c0:f6:
- 1e:f3
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- E3:D1:05:98:4C:68:53:C2:DC:00:EE:AC:E5:A8:B8:FC:B9:72:D9:67
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha256WithRSAEncryption
- 7e:5b:a7:f2:c7:15:33:73:ce:e4:1e:77:ba:35:8b:44:01:57:
- b1:db:55:d3:54:95:c6:44:27:89:3f:e5:46:98:de:4a:7e:d9:
- e7:6c:e8:0d:d5:e2:98:31:07:21:9c:bd:01:47:be:0c:e1:b3:
- 22:1e:ea:da:d4:fc:b5:37:5d:94:de:06:9b:69:a5:77:22:d0:
- 96:80:35:9f:02:a0:cd:41:35:b3:21:94:ca:9b:03:4f:68:18:
- 5e:6d:0d:95:95:17:ab:bd:00:9b:d0:78:f7:38:5e:37:df:33:
- 15:2f:3e:64:27:c8:67:5e:c4:14:92:08:90:55:34:8d:73:d9:
- 66:0c:30:dd:42:ab:71:73:b4:26:28:b1:13:90:7b:0a:10:f2:
- 7c:75:07:36:1f:a5:b6:a5:97:ac:20:c7:83:0c:15:cf:5c:34:
- df:3f:8d:81:3e:c0:43:2a:ca:6f:c4:86:cc:2f:93:e1:5d:18:
- 68:a4:bd:cc:5b:39:fa:40:fa:d4:a7:8b:7a:5d:b7:59:77:48:
- 9b:ab:e0:71:b2:04:1f:79:ea:d1:cd:d3:24:52:5b:4b:21:2f:
- 84:2e:b4:d6:87:1d:4f:fe:e7:6c:94:ff:d0:02:50:6b:bc:2a:
- 1e:21:a5:ac:3e:73:b5:2f:ba:11:c5:6f:8f:f7:8e:eb:08:11:
- 00:cb:e3:2d
------BEGIN CERTIFICATE-----
-MIIC+zCCAeOgAwIBAgICEAEwDQYJKoZIhvcNAQELBQAwITEfMB0GA1UEAwwWRCBS
-b290IENBIC0gTXVsdGktcm9vdDAeFw0xNjAxMDMwMDAwMDBaFw0yNjAxMDIwMDAw
-MDBaMBwxGjAYBgNVBAMMEUMgQ0EgLSBNdWx0aS1yb290MIIBIjANBgkqhkiG9w0B
-AQEFAAOCAQ8AMIIBCgKCAQEAssQW3AeI7H6msyXIe5zgBx5AqUDATchzJ+qI2Fga
-GhLjmmJBTKHpsc7GsvY69ok/QOYP+xVLy9KNjrZEqmP6O8XMr4YFcKrs9LN5BOY+
-JezsKdbJi3sTBaf/UVurTLzQ5L1hGtIn8S5f9FGBxCO6IMMUCLS+eEm1Ex9p/fan
-WZGEqZkQyJxjnpnC8j1hnWpu1CabiKraZrMNxpkDFhM6pJr/CD5Z36dEtxeZP2N/
-OgV+zmR4NOYAd2nmAySnEvPoqFArVRb6bmXGKFiCpCB+aCLpgZ6i6A/Wh8Jz3cIM
-zKNHVBH1PdxRUleyzneLeqyn8ComNuYmuWqD2rJvwPYe8wIDAQABo0IwQDAPBgNV
-HRMBAf8EBTADAQH/MB0GA1UdDgQWBBTj0QWYTGhTwtwA7qzlqLj8uXLZZzAOBgNV
-HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAH5bp/LHFTNzzuQed7o1i0QB
-V7HbVdNUlcZEJ4k/5UaY3kp+2eds6A3V4pgxByGcvQFHvgzhsyIe6trU/LU3XZTe
-BptppXci0JaANZ8CoM1BNbMhlMqbA09oGF5tDZWVF6u9AJvQePc4XjffMxUvPmQn
-yGdexBSSCJBVNI1z2WYMMN1Cq3FztCYosROQewoQ8nx1BzYfpball6wgx4MMFc9c
-NN8/jYE+wEMqym/Ehswvk+FdGGikvcxbOfpA+tSni3pdt1l3SJur4HGyBB956tHN
-0yRSW0shL4QutNaHHU/+52yU/9ACUGu8Kh4hpaw+c7UvuhHFb4/3jusIEQDL4y0=
------END CERTIFICATE-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4096 (0x1000)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=D Root CA - Multi-root
- Validity
- Not Before: Jan 2 00:00:00 2016 GMT
- Not After : Jan 2 00:00:00 2026 GMT
- Subject: CN=D Root CA - Multi-root
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:b4:b2:8e:83:7f:3b:8b:0f:9f:71:37:18:78:d0:
- f5:bc:07:ac:d8:eb:bf:f6:7c:c0:65:dc:00:bf:83:
- f7:e4:5e:97:9f:db:24:e4:c1:f9:31:70:b2:51:44:
- 2c:27:05:6a:1f:1e:35:9c:ea:c4:eb:f8:0a:c4:4b:
- 14:30:89:e8:75:93:fb:96:32:bc:0e:64:ca:11:74:
- 4a:ac:26:a0:9c:09:cd:6e:43:cf:6c:56:03:44:ab:
- 53:81:66:8d:5a:ad:75:1b:31:23:9f:fd:5e:8c:10:
- cd:e9:e9:05:80:41:5e:b8:f1:96:3d:5b:17:b2:e1:
- a8:47:44:eb:82:30:5e:7a:fe:8f:11:bb:b8:31:8e:
- 98:4c:a9:f3:2c:91:59:78:f4:63:1c:47:ad:6a:96:
- 5e:87:39:f3:17:9b:d6:9c:e9:e1:3c:0e:ef:8a:d8:
- 7e:c3:2d:33:d9:eb:26:29:1d:8a:66:ef:b9:8d:c3:
- b1:51:3a:75:56:1b:b8:a9:08:e7:10:db:37:70:c4:
- 6c:32:c0:e1:2b:f4:84:12:a5:cf:49:83:e1:5a:40:
- ab:db:f9:23:c5:7d:c0:03:ac:0e:3e:be:7c:42:92:
- fb:b7:71:91:37:04:92:4e:d5:92:31:cf:1b:cd:e4:
- 27:e5:85:98:ac:20:95:5d:6d:4e:90:fa:c7:6c:2b:
- fd:41
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- 69:E7:FF:33:A6:6B:A0:AD:5A:F1:D3:15:4F:9E:F7:C5:16:2E:C4:B6
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha256WithRSAEncryption
- 55:ec:3a:cd:87:dc:96:54:23:68:65:f7:a6:91:3c:37:f0:44:
- 94:2e:2f:3a:af:2c:0d:f4:09:f6:52:69:4f:ad:ac:83:6c:76:
- 76:72:2b:c0:48:ea:c9:76:c0:f5:7a:1e:73:ba:3c:f3:41:93:
- b4:4b:a5:6a:a3:87:f5:c7:6f:e9:55:ce:e0:8b:8c:83:e6:f0:
- e0:1c:e8:6a:8f:3b:67:b6:cd:35:6d:0b:1c:16:bf:38:fd:9d:
- d8:95:a9:3c:b9:4c:05:19:71:f4:a0:2c:1f:83:18:5a:f3:5a:
- ea:80:49:70:cc:49:84:63:7c:a9:4d:cb:1f:df:96:f2:c4:2c:
- 2c:e8:b0:75:69:8c:a9:71:7e:27:6a:fe:22:c6:77:e0:77:f4:
- 98:05:29:45:18:75:a3:f0:43:40:b2:8d:52:cb:2e:46:fb:37:
- bb:c6:68:20:c2:2e:01:82:51:f0:00:3a:89:40:9b:ab:9c:c3:
- 5c:f2:a3:3b:f7:00:98:4d:bd:a7:74:37:f6:74:c7:6e:42:4b:
- aa:8c:cc:c7:85:b2:4b:78:cb:8c:03:7c:e5:85:75:32:a9:89:
- 49:da:ed:3d:9e:5b:a2:c9:b2:2a:08:06:6d:cf:df:83:d4:a9:
- 3d:e9:44:de:70:9c:43:e3:35:24:dd:85:ed:7c:37:4e:02:44:
- d2:5d:7a:ad
------BEGIN CERTIFICATE-----
-MIIDADCCAeigAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwITEfMB0GA1UEAwwWRCBS
-b290IENBIC0gTXVsdGktcm9vdDAeFw0xNjAxMDIwMDAwMDBaFw0yNjAxMDIwMDAw
-MDBaMCExHzAdBgNVBAMMFkQgUm9vdCBDQSAtIE11bHRpLXJvb3QwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC0so6DfzuLD59xNxh40PW8B6zY67/2fMBl
-3AC/g/fkXpef2yTkwfkxcLJRRCwnBWofHjWc6sTr+ArESxQwieh1k/uWMrwOZMoR
-dEqsJqCcCc1uQ89sVgNEq1OBZo1arXUbMSOf/V6MEM3p6QWAQV648ZY9Wxey4ahH
-ROuCMF56/o8Ru7gxjphMqfMskVl49GMcR61qll6HOfMXm9ac6eE8Du+K2H7DLTPZ
-6yYpHYpm77mNw7FROnVWG7ipCOcQ2zdwxGwywOEr9IQSpc9Jg+FaQKvb+SPFfcAD
-rA4+vnxCkvu3cZE3BJJO1ZIxzxvN5CflhZisIJVdbU6Q+sdsK/1BAgMBAAGjQjBA
-MA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFGnn/zOma6CtWvHTFU+e98UWLsS2
-MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAVew6zYfcllQjaGX3
-ppE8N/BElC4vOq8sDfQJ9lJpT62sg2x2dnIrwEjqyXbA9Xoec7o880GTtEulaqOH
-9cdv6VXO4IuMg+bw4Bzoao87Z7bNNW0LHBa/OP2d2JWpPLlMBRlx9KAsH4MYWvNa
-6oBJcMxJhGN8qU3LH9+W8sQsLOiwdWmMqXF+J2r+IsZ34Hf0mAUpRRh1o/BDQLKN
-UssuRvs3u8ZoIMIuAYJR8AA6iUCbq5zDXPKjO/cAmE29p3Q39nTHbkJLqozMx4Wy
-S3jLjAN85YV1MqmJSdrtPZ5bosmyKggGbc/fg9SpPelE3nCcQ+M1JN2F7Xw3TgJE
-0l16rQ==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/multi-root-chain2.pem b/src/pki/testdata/ssl/certificates/multi-root-chain2.pem
deleted file mode 100644
index ea5a7f0..0000000
--- a/src/pki/testdata/ssl/certificates/multi-root-chain2.pem
+++ /dev/null
@@ -1,305 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4096 (0x1000)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=B CA - Multi-root
- Validity
- Not Before: Feb 28 23:46:47 2017 GMT
- Not After : Feb 26 23:46:47 2027 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:a4:18:86:3f:09:63:9c:d4:c0:06:45:a5:91:7f:
- e7:a7:b8:3d:c7:ff:0d:e8:39:f5:43:27:a7:44:2a:
- 3b:53:03:e3:cd:13:23:46:5f:e0:27:f0:a3:7a:25:
- 82:b0:52:bb:03:4f:99:e3:2c:1b:6f:54:05:0f:7f:
- 4f:74:f9:ad:b2:88:85:43:63:06:ac:91:f1:19:b7:
- da:7a:42:68:6a:68:a5:e0:02:44:23:eb:d1:05:0d:
- 3d:58:31:ee:ba:20:9e:16:11:f5:ae:b5:c3:21:cc:
- 84:e7:1a:d2:c2:8c:7e:44:93:36:bd:6c:0c:07:35:
- f2:4e:57:3f:b3:cf:21:5a:ff:16:02:e9:61:f4:cc:
- 4a:5a:24:da:55:fc:c6:da:44:d6:b7:2a:4e:31:bf:
- a0:80:24:55:ed:5c:bc:6b:84:12:a4:03:cc:b2:c2:
- db:ef:1e:08:bd:a3:bf:ef:fc:3d:53:38:b9:00:8a:
- d6:40:1a:cc:f2:6a:ab:e7:4b:67:1c:ae:ff:6d:43:
- 12:08:c6:97:4b:73:df:85:cf:2a:a5:6e:ce:22:02:
- cb:63:6c:3f:00:aa:3b:b0:87:9b:d5:13:09:32:4c:
- bd:71:79:ff:04:b1:9a:8d:2d:a0:0a:65:d5:1e:53:
- c4:eb:0e:14:c0:b9:f3:8f:6f:64:b4:1d:11:a7:40:
- e7:61
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 28:6F:58:36:8F:1B:C5:99:18:5B:DC:A5:86:AF:89:F2:B4:3E:AF:51
- X509v3 Authority Key Identifier:
- keyid:D0:8D:1F:B2:BC:29:96:73:EF:0C:7A:C2:A4:06:96:CF:D5:8C:31:DB
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- 07:8f:f9:c6:33:3c:bc:74:20:21:92:46:7a:c5:df:76:18:47:
- 63:0c:5e:e8:f3:97:ec:37:83:0b:4d:a4:1c:6b:0b:a2:28:db:
- 5c:17:d9:91:77:00:4a:db:46:f9:68:ec:2a:f8:b5:82:0c:00:
- d1:88:0c:7c:b4:2d:e9:48:f5:a2:9d:a9:d5:bb:db:9d:56:96:
- c5:6c:46:da:23:a3:66:80:a5:9b:93:d0:df:9c:00:75:ac:48:
- ea:48:b4:22:ee:ff:db:eb:bb:8f:f0:de:16:a1:99:98:85:4c:
- b3:66:dd:22:96:96:97:48:ae:8a:2d:e9:a5:1c:5c:d9:dd:31:
- 3f:58:7c:bb:2b:db:86:6a:53:e5:af:6d:85:3a:ca:92:5d:56:
- e2:02:90:d7:eb:98:0f:d8:ba:2a:d1:26:bb:82:5b:80:d5:2d:
- 52:d7:40:4d:0d:0d:1e:fe:c2:89:be:e2:80:4d:cd:91:dc:f3:
- fa:19:25:3e:ba:a8:cf:48:d3:b6:35:a5:96:6e:a5:12:d1:65:
- 65:a9:92:6b:d0:fc:05:25:7c:fb:76:48:38:15:7e:4f:95:03:
- b0:c3:55:89:bc:59:be:de:3c:fb:4b:5a:f1:3b:00:c1:03:59:
- 6c:b3:8b:21:7e:84:75:30:19:8c:19:f6:99:40:ec:87:43:3b:
- 89:d0:f5:6d
------BEGIN CERTIFICATE-----
-MIIDeTCCAmGgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwHDEaMBgGA1UEAwwRQiBD
-QSAtIE11bHRpLXJvb3QwHhcNMTcwMjI4MjM0NjQ3WhcNMjcwMjI2MjM0NjQ3WjBg
-MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91
-bnRhaW4gVmlldzEQMA4GA1UECgwHVGVzdCBDQTESMBAGA1UEAwwJMTI3LjAuMC4x
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApBiGPwljnNTABkWlkX/n
-p7g9x/8N6Dn1QyenRCo7UwPjzRMjRl/gJ/CjeiWCsFK7A0+Z4ywbb1QFD39PdPmt
-soiFQ2MGrJHxGbfaekJoamil4AJEI+vRBQ09WDHuuiCeFhH1rrXDIcyE5xrSwox+
-RJM2vWwMBzXyTlc/s88hWv8WAulh9MxKWiTaVfzG2kTWtypOMb+ggCRV7Vy8a4QS
-pAPMssLb7x4IvaO/7/w9Uzi5AIrWQBrM8mqr50tnHK7/bUMSCMaXS3Pfhc8qpW7O
-IgLLY2w/AKo7sIeb1RMJMky9cXn/BLGajS2gCmXVHlPE6w4UwLnzj29ktB0Rp0Dn
-YQIDAQABo4GAMH4wDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUKG9YNo8bxZkYW9yl
-hq+J8rQ+r1EwHwYDVR0jBBgwFoAU0I0fsrwplnPvDHrCpAaWz9WMMdswHQYDVR0l
-BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA8GA1UdEQQIMAaHBH8AAAEwDQYJKoZI
-hvcNAQELBQADggEBAAeP+cYzPLx0ICGSRnrF33YYR2MMXujzl+w3gwtNpBxrC6Io
-21wX2ZF3AErbRvlo7Cr4tYIMANGIDHy0LelI9aKdqdW7251WlsVsRtojo2aApZuT
-0N+cAHWsSOpItCLu/9vru4/w3hahmZiFTLNm3SKWlpdIroot6aUcXNndMT9YfLsr
-24ZqU+WvbYU6ypJdVuICkNfrmA/YuirRJruCW4DVLVLXQE0NDR7+wom+4oBNzZHc
-8/oZJT66qM9I07Y1pZZupRLRZWWpkmvQ/AUlfPt2SDgVfk+VA7DDVYm8Wb7ePPtL
-WvE7AMEDWWyziyF+hHUwGYwZ9plA7IdDO4nQ9W0=
------END CERTIFICATE-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4096 (0x1000)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=C CA - Multi-root
- Validity
- Not Before: Jan 4 00:00:00 2016 GMT
- Not After : Jan 2 00:00:00 2026 GMT
- Subject: CN=B CA - Multi-root
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:ca:6c:54:ab:3c:54:33:6c:d7:04:c4:4b:c4:39:
- 32:db:7a:49:e4:e1:e7:60:c7:35:33:08:59:ba:62:
- bf:49:d6:05:1f:07:b8:b6:bd:38:2f:6b:a7:e5:8d:
- de:79:27:d8:36:58:92:69:cc:db:8e:6a:89:b4:79:
- ab:cf:98:53:08:12:17:9e:51:15:bc:e7:8f:e5:93:
- d9:1a:2e:68:a9:93:3c:d3:7a:75:a4:5c:c2:fc:16:
- 9b:ba:df:49:5d:73:65:ec:b0:cc:1e:ba:cc:98:39:
- d1:4e:b2:d6:5f:e8:7f:24:1a:fa:56:b0:0d:33:46:
- 22:56:4f:5c:f3:16:ad:55:8a:62:3c:bc:50:c2:3a:
- 58:3e:70:4d:5a:df:99:ec:c7:a6:2c:8f:2a:a5:2e:
- 11:b8:58:c5:d5:e8:43:2f:40:a5:20:80:32:2a:76:
- 5e:06:07:48:6d:44:60:ba:21:72:61:e2:1a:ec:64:
- 5d:72:72:f1:21:9d:04:2f:61:35:0b:2f:f0:c0:fe:
- 52:b8:c4:41:9c:b6:13:58:21:81:e3:28:27:4d:6c:
- 24:a3:20:fb:0f:9c:d4:4f:34:3a:d0:d1:08:84:c4:
- 40:71:44:4f:e8:be:c5:1f:5d:1c:34:64:0b:6c:1c:
- 24:fa:a9:83:49:c6:f5:4d:7f:63:c0:1a:a9:77:8a:
- c0:43
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- D0:8D:1F:B2:BC:29:96:73:EF:0C:7A:C2:A4:06:96:CF:D5:8C:31:DB
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha256WithRSAEncryption
- 1e:16:7c:d7:d1:ee:63:a9:a2:b1:87:2c:8b:1e:d3:cf:51:14:
- ed:12:0b:ec:67:2b:7f:3b:0e:8e:3c:50:bb:d1:dc:3b:40:1a:
- ec:44:30:c4:f6:65:c2:c3:5d:d8:cb:c2:6c:13:2e:5a:2d:76:
- c6:6b:5d:65:a5:7e:c2:bf:cb:fc:b1:50:b0:43:47:fc:a3:7b:
- 07:d1:77:50:4f:d2:53:98:8f:a2:00:97:13:d9:b7:83:2e:d9:
- c4:2a:e6:b1:fc:2d:6c:ce:d1:61:73:aa:40:e0:ce:87:74:43:
- a2:f7:b5:d9:5f:46:79:97:28:c4:de:15:60:3b:3e:3f:3d:1d:
- 14:f4:87:ef:b9:08:09:2a:fb:d0:d5:1b:4f:77:f9:0d:c9:4b:
- 23:32:1c:06:04:a6:83:aa:00:9c:70:c2:2b:01:42:1e:f6:d6:
- d3:5c:f9:a8:b7:84:9e:44:12:9a:9f:a8:2a:89:56:69:a6:2f:
- e9:ee:67:e9:7e:32:b5:ef:6b:4e:f0:12:23:fa:85:3e:03:59:
- 94:db:88:99:04:55:c4:d1:df:df:c6:e2:fd:61:c5:f6:af:dc:
- 4c:e4:52:8f:f2:c8:07:39:dd:99:33:49:85:1e:df:e1:1f:08:
- 6b:e0:d2:1b:93:db:32:05:4b:39:ee:b3:f1:b6:af:18:07:a7:
- 24:9c:1e:75
------BEGIN CERTIFICATE-----
-MIIC9jCCAd6gAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwHDEaMBgGA1UEAwwRQyBD
-QSAtIE11bHRpLXJvb3QwHhcNMTYwMTA0MDAwMDAwWhcNMjYwMTAyMDAwMDAwWjAc
-MRowGAYDVQQDDBFCIENBIC0gTXVsdGktcm9vdDCCASIwDQYJKoZIhvcNAQEBBQAD
-ggEPADCCAQoCggEBAMpsVKs8VDNs1wTES8Q5Mtt6SeTh52DHNTMIWbpiv0nWBR8H
-uLa9OC9rp+WN3nkn2DZYkmnM245qibR5q8+YUwgSF55RFbznj+WT2RouaKmTPNN6
-daRcwvwWm7rfSV1zZeywzB66zJg50U6y1l/ofyQa+lawDTNGIlZPXPMWrVWKYjy8
-UMI6WD5wTVrfmezHpiyPKqUuEbhYxdXoQy9ApSCAMip2XgYHSG1EYLohcmHiGuxk
-XXJy8SGdBC9hNQsv8MD+UrjEQZy2E1ghgeMoJ01sJKMg+w+c1E80OtDRCITEQHFE
-T+i+xR9dHDRkC2wcJPqpg0nG9U1/Y8AaqXeKwEMCAwEAAaNCMEAwDwYDVR0TAQH/
-BAUwAwEB/zAdBgNVHQ4EFgQU0I0fsrwplnPvDHrCpAaWz9WMMdswDgYDVR0PAQH/
-BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQAeFnzX0e5jqaKxhyyLHtPPURTtEgvs
-Zyt/Ow6OPFC70dw7QBrsRDDE9mXCw13Yy8JsEy5aLXbGa11lpX7Cv8v8sVCwQ0f8
-o3sH0XdQT9JTmI+iAJcT2beDLtnEKuax/C1sztFhc6pA4M6HdEOi97XZX0Z5lyjE
-3hVgOz4/PR0U9IfvuQgJKvvQ1RtPd/kNyUsjMhwGBKaDqgCccMIrAUIe9tbTXPmo
-t4SeRBKan6gqiVZppi/p7mfpfjK172tO8BIj+oU+A1mU24iZBFXE0d/fxuL9YcX2
-r9xM5FKP8sgHOd2ZM0mFHt/hHwhr4NIbk9syBUs57rPxtq8YB6cknB51
------END CERTIFICATE-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4097 (0x1001)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=E Root CA - Multi-root
- Validity
- Not Before: Jan 5 00:00:00 2016 GMT
- Not After : Jan 2 00:00:00 2026 GMT
- Subject: CN=C CA - Multi-root
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:b2:c4:16:dc:07:88:ec:7e:a6:b3:25:c8:7b:9c:
- e0:07:1e:40:a9:40:c0:4d:c8:73:27:ea:88:d8:58:
- 1a:1a:12:e3:9a:62:41:4c:a1:e9:b1:ce:c6:b2:f6:
- 3a:f6:89:3f:40:e6:0f:fb:15:4b:cb:d2:8d:8e:b6:
- 44:aa:63:fa:3b:c5:cc:af:86:05:70:aa:ec:f4:b3:
- 79:04:e6:3e:25:ec:ec:29:d6:c9:8b:7b:13:05:a7:
- ff:51:5b:ab:4c:bc:d0:e4:bd:61:1a:d2:27:f1:2e:
- 5f:f4:51:81:c4:23:ba:20:c3:14:08:b4:be:78:49:
- b5:13:1f:69:fd:f6:a7:59:91:84:a9:99:10:c8:9c:
- 63:9e:99:c2:f2:3d:61:9d:6a:6e:d4:26:9b:88:aa:
- da:66:b3:0d:c6:99:03:16:13:3a:a4:9a:ff:08:3e:
- 59:df:a7:44:b7:17:99:3f:63:7f:3a:05:7e:ce:64:
- 78:34:e6:00:77:69:e6:03:24:a7:12:f3:e8:a8:50:
- 2b:55:16:fa:6e:65:c6:28:58:82:a4:20:7e:68:22:
- e9:81:9e:a2:e8:0f:d6:87:c2:73:dd:c2:0c:cc:a3:
- 47:54:11:f5:3d:dc:51:52:57:b2:ce:77:8b:7a:ac:
- a7:f0:2a:26:36:e6:26:b9:6a:83:da:b2:6f:c0:f6:
- 1e:f3
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- E3:D1:05:98:4C:68:53:C2:DC:00:EE:AC:E5:A8:B8:FC:B9:72:D9:67
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha256WithRSAEncryption
- 0d:37:a8:9e:12:c9:fb:45:a2:b9:82:07:4a:2a:34:d2:3b:1d:
- 84:70:b1:4a:85:37:7e:64:31:45:c3:02:9d:32:4e:92:a4:97:
- 72:ed:1d:f2:c3:26:c8:3f:90:e4:24:f4:6e:4b:33:71:98:bc:
- 68:25:26:cc:de:c1:46:a6:a8:83:60:fc:6e:c0:72:98:8f:ce:
- 38:6e:69:9d:ab:d1:5a:f0:a6:c8:07:a1:09:b3:8c:03:09:7b:
- 44:62:73:15:85:71:5f:2c:0a:33:78:f2:a3:10:85:1e:6b:46:
- d1:a5:f1:9c:13:ba:f7:95:41:a0:fb:de:c9:09:e1:72:a4:92:
- ff:33:e4:81:25:10:af:90:17:79:df:54:ea:b9:87:0e:f8:6d:
- 09:55:10:46:4c:87:36:37:2f:c0:86:03:ee:7a:b4:d3:27:22:
- 22:d5:9c:2e:e6:38:f0:f4:84:5c:ca:b7:9b:4d:6a:1c:57:7e:
- 24:07:35:13:a0:f9:d6:a3:aa:29:cb:e0:8a:b0:86:1c:41:24:
- b1:ed:04:30:71:2b:99:d7:0a:a4:51:53:b1:76:2e:be:63:5b:
- 7c:8e:d5:8f:fa:f3:99:58:7d:ce:30:07:5d:1e:ed:e6:bc:0a:
- d1:a7:cc:17:94:e7:d1:67:07:7c:37:6d:3f:c2:8b:04:9e:77:
- fb:5b:9c:2d
------BEGIN CERTIFICATE-----
-MIIC+zCCAeOgAwIBAgICEAEwDQYJKoZIhvcNAQELBQAwITEfMB0GA1UEAwwWRSBS
-b290IENBIC0gTXVsdGktcm9vdDAeFw0xNjAxMDUwMDAwMDBaFw0yNjAxMDIwMDAw
-MDBaMBwxGjAYBgNVBAMMEUMgQ0EgLSBNdWx0aS1yb290MIIBIjANBgkqhkiG9w0B
-AQEFAAOCAQ8AMIIBCgKCAQEAssQW3AeI7H6msyXIe5zgBx5AqUDATchzJ+qI2Fga
-GhLjmmJBTKHpsc7GsvY69ok/QOYP+xVLy9KNjrZEqmP6O8XMr4YFcKrs9LN5BOY+
-JezsKdbJi3sTBaf/UVurTLzQ5L1hGtIn8S5f9FGBxCO6IMMUCLS+eEm1Ex9p/fan
-WZGEqZkQyJxjnpnC8j1hnWpu1CabiKraZrMNxpkDFhM6pJr/CD5Z36dEtxeZP2N/
-OgV+zmR4NOYAd2nmAySnEvPoqFArVRb6bmXGKFiCpCB+aCLpgZ6i6A/Wh8Jz3cIM
-zKNHVBH1PdxRUleyzneLeqyn8ComNuYmuWqD2rJvwPYe8wIDAQABo0IwQDAPBgNV
-HRMBAf8EBTADAQH/MB0GA1UdDgQWBBTj0QWYTGhTwtwA7qzlqLj8uXLZZzAOBgNV
-HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAA03qJ4SyftFormCB0oqNNI7
-HYRwsUqFN35kMUXDAp0yTpKkl3LtHfLDJsg/kOQk9G5LM3GYvGglJszewUamqINg
-/G7AcpiPzjhuaZ2r0VrwpsgHoQmzjAMJe0RicxWFcV8sCjN48qMQhR5rRtGl8ZwT
-uveVQaD73skJ4XKkkv8z5IElEK+QF3nfVOq5hw74bQlVEEZMhzY3L8CGA+56tNMn
-IiLVnC7mOPD0hFzKt5tNahxXfiQHNROg+dajqinL4IqwhhxBJLHtBDBxK5nXCqRR
-U7F2Lr5jW3yO1Y/685lYfc4wB10e7ea8CtGnzBeU59FnB3w3bT/CiwSed/tbnC0=
------END CERTIFICATE-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4096 (0x1000)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=E Root CA - Multi-root
- Validity
- Not Before: Jan 2 00:00:00 2016 GMT
- Not After : Jan 2 00:00:00 2026 GMT
- Subject: CN=E Root CA - Multi-root
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:c0:14:71:12:fe:4f:36:78:5f:3a:b4:1e:d5:bb:
- 22:92:3e:57:bf:4d:e0:cf:1e:a1:fb:19:6d:88:3a:
- 59:93:79:57:42:bc:ab:7c:a0:0d:73:35:db:db:ba:
- 80:ef:a9:80:5b:b0:90:f5:2f:ea:17:7d:2b:92:a4:
- 5e:88:0a:16:f3:dc:f5:25:3d:7a:8d:8e:9b:e9:22:
- 74:dc:49:6e:87:ff:67:ae:3a:b8:09:63:63:e7:c2:
- bd:77:d7:1b:cb:93:c6:4a:1d:7b:51:25:05:31:cb:
- 32:66:43:ea:2d:54:59:59:cd:de:d2:84:6f:d8:5a:
- c1:5b:6c:2d:67:d5:57:23:25:a0:04:dc:45:64:02:
- f0:de:1a:4a:62:c9:76:b5:f6:36:46:74:af:1f:18:
- 6c:f7:38:cf:34:e3:e1:3f:ad:51:41:cf:92:ed:d5:
- 27:f7:4a:e3:3c:d5:42:26:51:e3:b2:69:20:b1:1f:
- 0a:f6:fd:19:3c:8e:98:94:64:eb:fe:e6:67:a0:12:
- f6:78:98:0f:44:b8:24:60:7c:de:e2:67:b9:0d:6e:
- 8c:06:80:43:8e:41:76:1d:09:40:0e:3b:e7:8d:0a:
- d9:66:d7:34:6c:ce:7e:f9:25:6a:15:cf:9a:3e:ec:
- 30:e0:a3:b1:d2:a3:b1:31:f1:62:50:5c:b4:fe:dd:
- 54:61
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- 15:FA:C3:A2:2A:E0:2C:25:C5:BE:D7:BE:91:51:DD:45:F0:F1:5D:64
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha256WithRSAEncryption
- bb:14:68:d2:09:0e:65:58:4d:d7:35:a0:a3:9b:e6:b4:2a:b4:
- 80:32:3e:61:6d:87:19:a6:a8:d2:01:78:cd:07:0b:09:a9:de:
- 5f:aa:86:43:dd:6f:d6:e0:3b:ab:60:71:d2:f0:aa:8f:14:93:
- 42:37:12:55:02:e1:a7:ed:8e:db:c0:83:10:19:f0:f5:1e:35:
- 77:84:9a:c1:79:9c:60:39:6f:50:00:66:73:6e:f0:b8:f7:75:
- 67:3e:fa:3e:0c:d0:d6:54:4a:ae:da:38:06:92:57:39:cc:d9:
- b1:fa:60:5e:99:07:e6:97:3b:69:4d:e3:02:50:8d:60:76:8e:
- 7e:e3:60:d4:65:41:9b:6c:b8:cc:b2:c4:7a:61:32:cb:67:49:
- b4:76:25:0c:7e:20:85:24:74:0a:90:0a:ce:73:f9:8e:ba:ce:
- de:6e:0a:cf:6d:1c:50:67:fa:a2:4e:32:d0:ad:91:35:5e:aa:
- b3:75:7e:23:14:29:a8:66:2a:82:ed:6c:ed:a9:9d:f6:77:20:
- 3a:e1:0b:ab:1e:ee:1d:8a:20:ff:7f:4f:36:5a:0a:30:5a:c6:
- 9c:aa:53:eb:3f:04:28:8a:6d:70:97:2a:99:d6:0c:db:a5:22:
- 0b:e5:6b:24:cf:6e:2a:c7:4a:6b:cd:82:8e:13:84:18:b6:47:
- 1b:9d:8b:83
------BEGIN CERTIFICATE-----
-MIIDADCCAeigAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwITEfMB0GA1UEAwwWRSBS
-b290IENBIC0gTXVsdGktcm9vdDAeFw0xNjAxMDIwMDAwMDBaFw0yNjAxMDIwMDAw
-MDBaMCExHzAdBgNVBAMMFkUgUm9vdCBDQSAtIE11bHRpLXJvb3QwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDAFHES/k82eF86tB7VuyKSPle/TeDPHqH7
-GW2IOlmTeVdCvKt8oA1zNdvbuoDvqYBbsJD1L+oXfSuSpF6IChbz3PUlPXqNjpvp
-InTcSW6H/2euOrgJY2Pnwr131xvLk8ZKHXtRJQUxyzJmQ+otVFlZzd7ShG/YWsFb
-bC1n1VcjJaAE3EVkAvDeGkpiyXa19jZGdK8fGGz3OM804+E/rVFBz5Lt1Sf3SuM8
-1UImUeOyaSCxHwr2/Rk8jpiUZOv+5megEvZ4mA9EuCRgfN7iZ7kNbowGgEOOQXYd
-CUAOO+eNCtlm1zRszn75JWoVz5o+7DDgo7HSo7Ex8WJQXLT+3VRhAgMBAAGjQjBA
-MA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFBX6w6Iq4Cwlxb7XvpFR3UXw8V1k
-MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAuxRo0gkOZVhN1zWg
-o5vmtCq0gDI+YW2HGaao0gF4zQcLCaneX6qGQ91v1uA7q2Bx0vCqjxSTQjcSVQLh
-p+2O28CDEBnw9R41d4SawXmcYDlvUABmc27wuPd1Zz76PgzQ1lRKrto4BpJXOczZ
-sfpgXpkH5pc7aU3jAlCNYHaOfuNg1GVBm2y4zLLEemEyy2dJtHYlDH4ghSR0CpAK
-znP5jrrO3m4Kz20cUGf6ok4y0K2RNV6qs3V+IxQpqGYqgu1s7amd9ncgOuELqx7u
-HYog/39PNloKMFrGnKpT6z8EKIptcJcqmdYM26UiC+VrJM9uKsdKa82CjhOEGLZH
-G52Lgw==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/multi-root-crlset-C.raw b/src/pki/testdata/ssl/certificates/multi-root-crlset-C.raw
deleted file mode 100644
index c8ff83b..0000000
--- a/src/pki/testdata/ssl/certificates/multi-root-crlset-C.raw
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/multi-root-crlset-CD-and-FE.raw b/src/pki/testdata/ssl/certificates/multi-root-crlset-CD-and-FE.raw
deleted file mode 100644
index 4b04356..0000000
--- a/src/pki/testdata/ssl/certificates/multi-root-crlset-CD-and-FE.raw
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/multi-root-crlset-D-and-E.raw b/src/pki/testdata/ssl/certificates/multi-root-crlset-D-and-E.raw
deleted file mode 100644
index eacdb4a..0000000
--- a/src/pki/testdata/ssl/certificates/multi-root-crlset-D-and-E.raw
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/multi-root-crlset-E.raw b/src/pki/testdata/ssl/certificates/multi-root-crlset-E.raw
deleted file mode 100644
index 02051b8..0000000
--- a/src/pki/testdata/ssl/certificates/multi-root-crlset-E.raw
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/multi-root-crlset-unrelated.raw b/src/pki/testdata/ssl/certificates/multi-root-crlset-unrelated.raw
deleted file mode 100644
index 83fd62c..0000000
--- a/src/pki/testdata/ssl/certificates/multi-root-crlset-unrelated.raw
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/multi-root.keychain b/src/pki/testdata/ssl/certificates/multi-root.keychain
deleted file mode 100644
index 40cbb7c..0000000
--- a/src/pki/testdata/ssl/certificates/multi-root.keychain
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/multivalue_rdn.pem b/src/pki/testdata/ssl/certificates/multivalue_rdn.pem
deleted file mode 100644
index 6ffe161..0000000
--- a/src/pki/testdata/ssl/certificates/multivalue_rdn.pem
+++ /dev/null
@@ -1,59 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- ef:6c:2f:57:d9:fd:5a:0f
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=US, O=Chromium, DC=Chromium, CN=Multivalue RDN Test, OU=Chromium net_unittests
- Validity
- Not Before: Dec 2 03:47:39 2011 GMT
- Not After : Jan 1 03:47:39 2012 GMT
- Subject: C=US, O=Chromium, DC=Chromium, CN=Multivalue RDN Test, OU=Chromium net_unittests
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public Key: (1024 bit)
- Modulus (1024 bit):
- 00:9d:23:10:ed:87:82:b0:eb:a4:fb:49:f5:db:c1:
- 7b:4d:f0:ed:1b:f5:f8:f2:c1:b5:d2:84:de:eb:94:
- 82:f0:de:8b:04:b7:e8:ed:86:22:41:99:56:54:71:
- 33:8e:c1:69:6a:2b:f4:77:1e:24:70:81:5b:56:08:
- 57:02:4c:bf:af:9a:a0:33:55:e2:00:6b:b3:cc:5c:
- 3b:47:6e:dc:05:30:bd:0c:f9:51:c0:70:2b:3f:70:
- a2:10:a3:b7:8b:3f:22:fa:ab:bd:c7:48:a5:ff:d3:
- 7b:d0:b7:12:48:0b:bf:90:62:f1:8a:40:db:1d:1a:
- 0c:f5:dd:92:2a:1c:b6:2c:6b
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Subject Key Identifier:
- 8D:5E:71:FA:2A:73:BA:9F:8E:63:32:1C:5D:AB:87:D0:AB:47:AB:B7
- X509v3 Authority Key Identifier:
- keyid:8D:5E:71:FA:2A:73:BA:9F:8E:63:32:1C:5D:AB:87:D0:AB:47:AB:B7
-
- X509v3 Basic Constraints:
- CA:TRUE
- Signature Algorithm: sha1WithRSAEncryption
- 18:ac:0d:d3:50:38:ee:7c:55:1c:e9:30:c0:57:5b:4f:cb:7d:
- 14:59:18:de:92:20:e6:67:a8:a8:ed:da:01:33:5a:48:4c:e4:
- 66:85:25:8d:6b:56:81:67:f3:af:e9:f8:12:5c:19:07:17:98:
- bf:d7:0f:ba:b5:64:6b:ec:17:ca:0c:d6:ce:c3:b3:09:43:0a:
- 04:8f:da:4b:c8:a3:45:ea:ef:ca:f8:7a:2e:91:a8:8c:f1:a7:
- d4:7b:6d:9d:73:4b:9a:1c:be:04:b1:02:b3:b7:2a:e9:fd:19:
- 86:f2:26:ac:45:a1:0f:9b:99:1a:53:b1:69:99:3e:6c:51:23:
- 40:70
------BEGIN CERTIFICATE-----
-MIICsDCCAhmgAwIBAgIJAO9sL1fZ/VoPMA0GCSqGSIb3DQEBBQUAMHExbzAJBgNV
-BAYTAlVTMA8GA1UECgwIQ2hyb21pdW0wFgYKCZImiZPyLGQBGRYIQ2hyb21pdW0w
-GgYDVQQDDBNNdWx0aXZhbHVlIFJETiBUZXN0MB0GA1UECwwWQ2hyb21pdW0gbmV0
-X3VuaXR0ZXN0czAeFw0xMTEyMDIwMzQ3MzlaFw0xMjAxMDEwMzQ3MzlaMHExbzAJ
-BgNVBAYTAlVTMA8GA1UECgwIQ2hyb21pdW0wFgYKCZImiZPyLGQBGRYIQ2hyb21p
-dW0wGgYDVQQDDBNNdWx0aXZhbHVlIFJETiBUZXN0MB0GA1UECwwWQ2hyb21pdW0g
-bmV0X3VuaXR0ZXN0czCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAnSMQ7YeC
-sOuk+0n128F7TfDtG/X48sG10oTe65SC8N6LBLfo7YYiQZlWVHEzjsFpaiv0dx4k
-cIFbVghXAky/r5qgM1XiAGuzzFw7R27cBTC9DPlRwHArP3CiEKO3iz8i+qu9x0il
-/9N70LcSSAu/kGLxikDbHRoM9d2SKhy2LGsCAwEAAaNQME4wHQYDVR0OBBYEFI1e
-cfoqc7qfjmMyHF2rh9CrR6u3MB8GA1UdIwQYMBaAFI1ecfoqc7qfjmMyHF2rh9Cr
-R6u3MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAGKwN01A47nxVHOkw
-wFdbT8t9FFkY3pIg5meoqO3aATNaSEzkZoUljWtWgWfzr+n4ElwZBxeYv9cPurVk
-a+wXygzWzsOzCUMKBI/aS8ijRervyvh6LpGojPGn1HttnXNLmhy+BLECs7cq6f0Z
-hvImrEWhD5uZGlOxaZk+bFEjQHA=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/name_constrained_key.pem b/src/pki/testdata/ssl/certificates/name_constrained_key.pem
deleted file mode 100644
index f7a9d37..0000000
--- a/src/pki/testdata/ssl/certificates/name_constrained_key.pem
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCwOdQrS3Jk6jJb
-Na2O4BadbxtUobCnikBNFFHn+Lof7YXQmy0DMiHL0iOhzt9ZcuRTLFzoYUvJk3Tm
-S8h7Vdj4sIvF1k8E0MCWwY2rsFbgZilV276UQr+hzMncbzU5cfgMcOlHfpycBg8U
-i4ygVUgttEWzilGA6NH9Vi7e4cb9DJyAI4AZXJI+B7d2n9HYxAuF1V417dpADz5g
-CznwFQI+i9uzITlAwWaIsZJ6GvvpSfnOFFFppbRLCLr8MTRLYv8efWYh9HcG0LFe
-vxuhtzYIIi40tzXTEYYnFhrx+HpuAR/pza/ewtvX2sVkXhr4n1B2m4+XfWHoVE4Y
-D725dY55AgMBAAECggEAVcLu5FsFQuNOumC3JC8eEmP98wP1SrPXcyuOaMv9GIip
-dMnv7/w3wk90E8zvmUJ2p5uRY23mSiU+4MzEtnEi9HRGsXMIZZmKAFQVtBZPUUmm
-mCgm6VRKml1lZ6efSWOTicpxXN/bK3svX5pCR8z5IXT37tZDr+6eMyH8EW/jPUZU
-wA/LVpmfRkcLg8VF6J70yj60peU3234b5Z9QLkR80g9U9Sj1QQhuDRAO97zireru
-QwFixeazgXzWPTk3iol6GiDbus9T0WGeUAWYZ8XyJ1voNHRNg9dfvpLAc0UBQ5Ho
-7Au6fYWQ8cEmYFIC5X46k/fZhZNgludUlQLfMsI1AQKBgQDin873bebHXpoFGXR3
-Sn8obsieSWwHCDU2gp+K8JwPtip1PrVfA1KW/wBo938zqpBZDAOOFGGl4x08wLmm
-WnlrPOsrcehDbiGTPheBPvOS11/v6IxoOVLLUnDaQIX9j8eOGG/WM0pan8wNG9Vz
-WHQduZcBQlKoyXjjJ84avorh8QKBgQDHEaAJab8sK//lCYrCpTfbS2tYCfc9b7Nx
-m/6GCJnxqVYfal9ocGd7U7RO7okDQAMyvwSpI9ejTDF8tO4BNHCgvi6rKK3Fj/CJ
-bgw8rCP1BOKLvDK/7A7/v1KqvYHtODnCH0iTVK/R/Oq2Jws0m88uSkANm1w2t+SG
-JVk/ymBtCQKBgC0L/RTbyKrKmCz5UVhA+6Oq2b/08j83l3Q9ZL82cp8A49GoZF79
-hxYym/9Bawx3E/hPVgmQ7ZQO4AnqeTyi8U2qr0hUfQmiQ5REHGH5hGsk2pISlI5H
-DrkRqxMHDltHkDAjlV9rlJUM/H+Cj9w8seASuvxqFYotehUVHXfddjfRAoGAYUXj
-hbX+jH8Tk7+N5n8FREseMO7tuT+T17f6L1SUpNmyE7fO1yHV7xV/zfIRUV0+MtXU
-WTICdPEOXXmrszsErgdAlrJR92/WgdEcealECL5SVSWpRs76pU2//16K1nfbAVh4
-BkYjg+CqcEez2gkou93cXsnDzZkeOc6WRe2GIMECgYEApyMBng9jXOD1Qw2CpWeC
-kO/GL98UXAvQAnQB1YepWDmbW2OxpXZ5TI5wQkJxE7z7EJkIm6Vq0fcHtDNwGWBq
-2zLyUW+QdR53eGEkhHNzq0hFWVMCaDbO6UNa1OFZqN/WSBFB3z4F0XAZ1ZX+PaFm
-NqcJRJ7sL5XqgAdRqcTTFcA=
------END PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/ndn.ca.crt b/src/pki/testdata/ssl/certificates/ndn.ca.crt
deleted file mode 100644
index 6da9fb2..0000000
--- a/src/pki/testdata/ssl/certificates/ndn.ca.crt
+++ /dev/null
@@ -1,35 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGBjCCA+4CCQDbt8YGR683ojANBgkqhkiG9w0BAQUFADCBxDELMAkGA1UEBhMC
-VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFDASBgNVBAcTC0xvcyBBbmdlbGVzMR8w
-HQYDVQQKExZOZXcgRHJlYW0gTmV0d29yaywgTExDMREwDwYDVQQLEwhTZWN1cml0
-eTEwMC4GA1UEAxMnTmV3IERyZWFtIE5ldHdvcmsgQ2VydGlmaWNhdGUgQXV0aG9y
-aXR5MSQwIgYJKoZIhvcNAQkBFhVzdXBwb3J0QGRyZWFtaG9zdC5jb20wHhcNMDYw
-ODIyMjExMjU4WhcNMTYwODE5MjExMjU4WjCBxDELMAkGA1UEBhMCVVMxEzARBgNV
-BAgTCkNhbGlmb3JuaWExFDASBgNVBAcTC0xvcyBBbmdlbGVzMR8wHQYDVQQKExZO
-ZXcgRHJlYW0gTmV0d29yaywgTExDMREwDwYDVQQLEwhTZWN1cml0eTEwMC4GA1UE
-AxMnTmV3IERyZWFtIE5ldHdvcmsgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MSQwIgYJ
-KoZIhvcNAQkBFhVzdXBwb3J0QGRyZWFtaG9zdC5jb20wggIiMA0GCSqGSIb3DQEB
-AQUAA4ICDwAwggIKAoICAQDHykL2vz70nbj827iARXxgBK41yXUy7oBcoG5TA+MD
-GjXVqV+szQWgQz6C6uPPp+O4cUVxnAIfXvCo7VjsYYsDcmCWAlV27ZRN3Ek7HvIv
-4rHaht0y/E/DgKOZiiy7kJMvqDZSuD9NxSlIOTDBS6aDyORNZKubWdg0l+Axk3Yn
-YhmVhPtqupO8HzQjR0s2wgwKdz3m96RqjJDBng0wLEv/iCGN0ogBBV1TePuKcodF
-TQivkjvVcITRVWIBKNfg0uDeM+cHIYGp44WM3gBX0W3AaG9JH/1tYWmgVrk/cmwK
-oMq3PKVr/Usp7nR3PTyn1rpcJjPZDSNOleO+KilI4vbwFgnydbm97eTf/BFy548j
-SPi9HINufNDSajXCRvyQ04CQVpAzH2mPVcykoL6++M2u2nNO5tLWa2ix96RNPrV/
-K00KbmIODPoqRVmoL7UvD4w2AM26l7Ol20cLqU8G4bZGe1DoKpF1CxwQlBzY6iJN
-PiEY+eAII54w7cnHdAp2mOKvJBVUzCROc7g4W0n3/JCHEaXDnfXlqevCckAaDbes
-AM7w9epOd7rUWpbSxOuKsgIyXvhM9VwxI7L5TdgULqKXq57jMAK8irsOalEt+5pJ
-8RGFDOgJsbR+eJ3En//11OJzgz1bdW0lSUD72hoNdLyJtP7dn8+FrIfGBw9mwWMG
-MwIDAQABMA0GCSqGSIb3DQEBBQUAA4ICAQAVUa0xn7/bDpyxdqJrr3np5HKDKaL6
-CL4KNgBS1hKHLIqxwKGTO+nCm1sVgK9fIh7hF5sG7f5hc5ZPp9usOeqwewB5drYZ
-jPyk2e5WX0fjdB2pFPxhPS8vzNJRBtpPnUoiOuwXI4K12V7xj3SC/S4tqNfBM/p9
-sk15XfWiS8rMqDGg6oMFeM4BZ7YaZOXY/upqofg+MEbVdLBngwUPI/a1rR8OYUBr
-NhsSZpXwg22IwDE45M7wxgRvj0hojRAAxVS75ogitx040tf2Lp8DJgtSGvOHtuW9
-87MXd8Ev8xf/7d9EXw4ghwKvyWglrw0Bpoh9OP9DOwoRFIzdBz5aUmAx6PNIvZ0Y
-xQ+QRUxj+Kx2Xl6hpsk8URsfxKDHR2sZwcSqjD+JJGJee26An7btAst1/grAYw5X
-tEfcXyXiDBHXPY6t0NZOzfQUggwIU0fiWhvT43Skob6pCc0dUBeEhFK0dpyDE3AM
-4LwF/ECGfPn/UzzB/Lax4WaY2yGccBrikRfIkZARrJbvBCAxchH+HCeBV0B0BlOi
-2R0RxwH0gKBEHxhMaq5J/rTaE7V5wd8OsxzcxUgW+te6hc0bbuhPiYhtvQ0N7+oF
-z89JuuwocsTbNekeBwHB5wpsCPA29mYId8uvVl7LThvut9+szsWetmVua7P9t10h
-GX3cdJCMZUwypA==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/nist.der b/src/pki/testdata/ssl/certificates/nist.der
deleted file mode 100644
index 8add89d..0000000
--- a/src/pki/testdata/ssl/certificates/nist.der
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/no_subject_common_name_cert.pem b/src/pki/testdata/ssl/certificates/no_subject_common_name_cert.pem
deleted file mode 100644
index f9d582e..0000000
--- a/src/pki/testdata/ssl/certificates/no_subject_common_name_cert.pem
+++ /dev/null
@@ -1,109 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- f0:1e:87:f4:fe:b6:f0:10:dc:7e:65:da:f4:fb:8f:e3
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=GB, ST=Greater Manchester, L=Salford, O=COMODO CA Limited, CN=COMODO Client Authentication and Secure Email CA
- Validity
- Not Before: Apr 25 00:00:00 2012 GMT
- Not After : Apr 25 23:59:59 2013 GMT
- Subject: emailAddress=wtc@google.com
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:f6:50:cf:80:32:ee:05:1b:6a:07:c5:5f:71:bc:
- 67:81:40:63:46:35:a4:23:6c:77:32:57:ec:c8:b0:
- 0b:16:0e:5f:b7:42:6e:de:6f:de:84:9f:cf:81:73:
- ee:30:a9:ac:47:8c:47:27:78:89:eb:d1:14:e9:a9:
- fd:08:74:01:2c:dc:ea:4f:0a:30:82:cd:b5:02:65:
- 54:42:9c:af:14:18:a7:56:c7:c4:00:7d:c0:f6:4d:
- 97:58:80:57:f5:fc:2c:36:78:69:d6:e3:7f:05:05:
- ff:08:26:1e:f5:d5:60:3f:15:5d:06:16:28:11:a5:
- 5d:b5:d0:59:d1:27:ab:38:8e:6b:68:b6:3d:c3:cb:
- f5:0d:42:35:a1:6e:f5:3f:73:12:33:9f:47:a5:43:
- 2f:f3:dc:00:61:18:3f:4a:74:e4:d2:e8:37:e7:19:
- 18:84:34:49:78:d2:b5:4d:90:65:4e:6f:a0:13:5b:
- 2f:47:3e:0c:04:2f:fe:bd:9c:c1:d1:d1:f2:36:fe:
- df:07:e6:ec:b8:48:c7:1f:24:f6:af:9a:35:2a:a8:
- 12:db:a9:a2:50:cc:0c:28:a4:fc:66:f2:28:a8:c2:
- d1:fb:ea:1e:58:c3:14:70:e0:18:a4:2a:04:54:8c:
- d3:f3:09:2e:b7:76:a3:eb:07:7a:f4:e8:3a:e3:2e:
- 6b:b7
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Authority Key Identifier:
- keyid:7A:13:4E:00:74:5B:C6:78:63:64:27:C1:2F:E2:A0:5B:BC:79:C5:7B
-
- X509v3 Subject Key Identifier:
- D7:D3:09:C6:62:34:E3:2A:2D:5D:F3:E9:B4:B0:DA:73:55:E9:75:28
- X509v3 Key Usage: critical
- Digital Signature, Key Encipherment
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Extended Key Usage:
- E-mail Protection, 1.3.6.1.4.1.6449.1.3.5.2
- Netscape Cert Type:
- S/MIME
- X509v3 Certificate Policies:
- Policy: 1.3.6.1.4.1.6449.1.2.1.1.1
- CPS: https://secure.comodo.net/CPS
-
- X509v3 CRL Distribution Points:
-
- Full Name:
- URI:http://crl.comodoca.com/COMODOClientAuthenticationandSecureEmailCA.crl
-
- Authority Information Access:
- CA Issuers - URI:http://crt.comodoca.com/COMODOClientAuthenticationandSecureEmailCA.crt
- OCSP - URI:http://ocsp.comodoca.com
-
- X509v3 Subject Alternative Name:
- email:wtc@google.com
- Signature Algorithm: sha1WithRSAEncryption
- 62:4c:6b:d9:de:0e:56:66:74:ac:b2:08:ef:d4:9f:f7:02:d7:
- f0:80:7a:ad:91:19:d4:4e:1e:76:1d:34:fb:f9:c5:c3:5b:55:
- 83:af:5f:da:12:43:bf:e2:d2:4a:3b:aa:91:d6:0e:07:4b:ab:
- 57:c9:b8:d7:6b:cc:f9:33:85:d4:ea:40:06:09:30:15:8f:e9:
- 1a:0f:9d:b7:a4:4b:b5:a1:f5:3a:90:71:93:ae:ab:e1:84:1c:
- d8:d5:1c:2c:87:df:3a:5e:e8:5a:75:21:d8:45:41:5e:db:ba:
- 9c:f3:50:c9:08:1f:e5:d5:e7:55:0a:25:cd:86:88:41:83:2f:
- b3:ee:39:02:a6:34:52:fe:64:0a:72:6e:65:41:eb:f9:10:34:
- 65:40:3d:93:3e:68:6a:ea:68:c5:cb:09:09:78:be:a7:1e:fa:
- 6f:21:d8:0e:e3:8d:74:08:57:ef:17:f1:6d:50:66:a2:73:78:
- 10:81:65:bf:96:e4:82:8d:46:7b:e8:a1:fa:6f:33:90:d8:4f:
- ec:1f:fe:6f:4b:bf:b1:67:2d:cc:e3:90:ef:87:d3:af:ef:d7:
- 3b:d7:14:56:b7:7a:1a:96:e4:8c:de:2b:a3:95:9d:a9:e5:31:
- 7b:c9:2c:ec:1f:82:06:7c:80:fa:14:da:71:3b:d1:47:84:8f:
- 01:e6:5a:8a
------BEGIN CERTIFICATE-----
-MIIFHjCCBAagAwIBAgIRAPAeh/T+tvAQ3H5l2vT7j+MwDQYJKoZIhvcNAQEFBQAw
-gZMxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO
-BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMTkwNwYD
-VQQDEzBDT01PRE8gQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1h
-aWwgQ0EwHhcNMTIwNDI1MDAwMDAwWhcNMTMwNDI1MjM1OTU5WjAfMR0wGwYJKoZI
-hvcNAQkBFg53dGNAZ29vZ2xlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
-AQoCggEBAPZQz4Ay7gUbagfFX3G8Z4FAY0Y1pCNsdzJX7MiwCxYOX7dCbt5v3oSf
-z4Fz7jCprEeMRyd4ievRFOmp/Qh0ASzc6k8KMILNtQJlVEKcrxQYp1bHxAB9wPZN
-l1iAV/X8LDZ4adbjfwUF/wgmHvXVYD8VXQYWKBGlXbXQWdEnqziOa2i2PcPL9Q1C
-NaFu9T9zEjOfR6VDL/PcAGEYP0p05NLoN+cZGIQ0SXjStU2QZU5voBNbL0c+DAQv
-/r2cwdHR8jb+3wfm7LhIxx8k9q+aNSqoEtupolDMDCik/GbyKKjC0fvqHljDFHDg
-GKQqBFSM0/MJLrd2o+sHevToOuMua7cCAwEAAaOCAd4wggHaMB8GA1UdIwQYMBaA
-FHoTTgB0W8Z4Y2QnwS/ioFu8ecV7MB0GA1UdDgQWBBTX0wnGYjTjKi1d8+m0sNpz
-Vel1KDAOBgNVHQ8BAf8EBAMCBaAwDAYDVR0TAQH/BAIwADAgBgNVHSUEGTAXBggr
-BgEFBQcDBAYLKwYBBAGyMQEDBQIwEQYJYIZIAYb4QgEBBAQDAgUgMEYGA1UdIAQ/
-MD0wOwYMKwYBBAGyMQECAQEBMCswKQYIKwYBBQUHAgEWHWh0dHBzOi8vc2VjdXJl
-LmNvbW9kby5uZXQvQ1BTMFcGA1UdHwRQME4wTKBKoEiGRmh0dHA6Ly9jcmwuY29t
-b2RvY2EuY29tL0NPTU9ET0NsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1h
-aWxDQS5jcmwwgYgGCCsGAQUFBwEBBHwwejBSBggrBgEFBQcwAoZGaHR0cDovL2Ny
-dC5jb21vZG9jYS5jb20vQ09NT0RPQ2xpZW50QXV0aGVudGljYXRpb25hbmRTZWN1
-cmVFbWFpbENBLmNydDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2Eu
-Y29tMBkGA1UdEQQSMBCBDnd0Y0Bnb29nbGUuY29tMA0GCSqGSIb3DQEBBQUAA4IB
-AQBiTGvZ3g5WZnSssgjv1J/3AtfwgHqtkRnUTh52HTT7+cXDW1WDr1/aEkO/4tJK
-O6qR1g4HS6tXybjXa8z5M4XU6kAGCTAVj+kaD523pEu1ofU6kHGTrqvhhBzY1Rws
-h986XuhadSHYRUFe27qc81DJCB/l1edVCiXNhohBgy+z7jkCpjRS/mQKcm5lQev5
-EDRlQD2TPmhq6mjFywkJeL6nHvpvIdgO4410CFfvF/FtUGaic3gQgWW/luSCjUZ7
-6KH6bzOQ2E/sH/5vS7+xZy3M45Dvh9Ov79c71xRWt3oaluSM3iujlZ2p5TF7ySzs
-H4IGfID6FNpxO9FHhI8B5lqK
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/non-crit-codeSigning-chain.pem b/src/pki/testdata/ssl/certificates/non-crit-codeSigning-chain.pem
deleted file mode 100644
index 6c539a6..0000000
--- a/src/pki/testdata/ssl/certificates/non-crit-codeSigning-chain.pem
+++ /dev/null
@@ -1,110 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCgluiYfh9lhgwx
-d5rJhUpPoY+WJ67pPa1tdCTkeD3jowQ/MhNatUxMy/7O76pvBegUtrq29MPLcmvA
-LeJYDcIJmh48pY/KrEUADZcDmrogQXQViCuaH/7ceKRxZu0FO7qBreyxgcu9nHkD
-SP1X7ZefhEhOOKDsRXiQWpXTyDC/PeL/BMXkdoPGROEAx2RSyXETTCtby7HGsZ+w
-nwXvdHUObpGmLErqiARhG39w7ZF40yV1hqy0DGw6CIV1q+JqLFMhZus+xSWkmFB4
-V06haO2D0Xgl7t2prN9c7OQHJ+fQP/D+cL2kzbdJO7MGq5biEoXMCsnpm0hCAu+v
-Hl/kE5xJAgMBAAECggEAHjVtITx+evpdolORwE1s1nB5ooEqB9G0pVWXGAxfdgol
-Ix8wIVzf8sVgFDzk5ngpuXXLR13hVAzc5JytCqvh360IeZeaZkGERFeKHCE32Jf/
-dop0S0ywBHjEVFnMhfK/qaPWVejo8uzznbDWCXuWDWmUsXQ5H2ENJjiIHTv4IY09
-0DXiySiaeI1iiyToiv6Dt9dVpPuleJbY0LlRfZ1WrkcEB9r1kQqzJOdqM5iuDYWa
-dCO9u8fbWPGRacL3ystrZqB0Od3s9G6h09D5Iv8QXpYHWp4E/Oea3kYKyFUDgPpH
-1wH6fE9fER6RKOKyG1HBZL12HlNZnPv1v033Rs6WRQKBgQC3LnaYo1TkHX0j4t1X
-iQisRWtE8espt1ZsxIErqiz+fJlHhQCJq2Lqz/uLHmqaM6M2ffVuXoFM8vZzlyXw
-v23EPc8HGEhvw6iTm3uCdTQ2nXZbb4Gbw5lYOF6PDJfAhnn3XwaUUVCL67PAZvwq
-j4hWKzmrfrrv8KRgvso9NB6fHQKBgQDgbVxLGofqhoE/tuoCfZMCC0vI3PZ5503B
-XvTXg/J9lKsycwx74qKWBDchqG+MF1GQOwufDvx44QAcW/gNsdd6SJ/yLlf69m6V
-HSGh3S3pUfFwT4wzY/rKbh0g8DSXm6J7BrMwID+RAwMjKzst1tqjCBH6HnNEHIfP
-HRrJAwgOHQKBgQCcFUkUckeJP987TrlPNwJe15+5VXENUJyhfSabMBu6lCx/FkMJ
-CzHz5lftiHNJBSrS6azQ6FHAYV3BzE6VvmcnSYs3/mbqZIslitxIotlkl/Mbof2L
-3bSxyQY5WX+MmokeUKfohQje0G2PSbEgCsEeuyIekJN0k1Vc4fStBdX5uQKBgAuG
-0mSxGiX7fovtMxupo3FJbz0DzEz6ik3SOLUQ+9VjW1+d9RgvzbXyxXofEouZbwD/
-Z1tmA6WZuM28E4NwjOak8EIaCz7ChW93LZEIsSD4qnPgQg0pp2naOfjFHY5j2faD
-o5RnM5yZEQIvaDy0ekpBUdsM0VLAPGFw1z1XwIQpAoGBALaN5OhHVZfy+RqTy+k/
-Sa+eO/vghkdapdZwfnFYhJzD+sZKRBUiNwzZrAcNfijN/sTIcnMWbMcD6TSdh1qZ
-RLd2m/U0T9avw0/aog+IXldkm7VjKf7+V+RIzoGOxmtCI1zVP9uldDYJDKAMabiu
-kdec1ozHgh6Pg2G2d5nkPgI9
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 1 (0x1)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=2048 RSA Test Root CA
- Validity
- Not Before: Feb 17 17:08:50 2023 GMT
- Not After : Feb 14 17:08:50 2033 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:a0:96:e8:98:7e:1f:65:86:0c:31:77:9a:c9:85:
- 4a:4f:a1:8f:96:27:ae:e9:3d:ad:6d:74:24:e4:78:
- 3d:e3:a3:04:3f:32:13:5a:b5:4c:4c:cb:fe:ce:ef:
- aa:6f:05:e8:14:b6:ba:b6:f4:c3:cb:72:6b:c0:2d:
- e2:58:0d:c2:09:9a:1e:3c:a5:8f:ca:ac:45:00:0d:
- 97:03:9a:ba:20:41:74:15:88:2b:9a:1f:fe:dc:78:
- a4:71:66:ed:05:3b:ba:81:ad:ec:b1:81:cb:bd:9c:
- 79:03:48:fd:57:ed:97:9f:84:48:4e:38:a0:ec:45:
- 78:90:5a:95:d3:c8:30:bf:3d:e2:ff:04:c5:e4:76:
- 83:c6:44:e1:00:c7:64:52:c9:71:13:4c:2b:5b:cb:
- b1:c6:b1:9f:b0:9f:05:ef:74:75:0e:6e:91:a6:2c:
- 4a:ea:88:04:61:1b:7f:70:ed:91:78:d3:25:75:86:
- ac:b4:0c:6c:3a:08:85:75:ab:e2:6a:2c:53:21:66:
- eb:3e:c5:25:a4:98:50:78:57:4e:a1:68:ed:83:d1:
- 78:25:ee:dd:a9:ac:df:5c:ec:e4:07:27:e7:d0:3f:
- f0:fe:70:bd:a4:cd:b7:49:3b:b3:06:ab:96:e2:12:
- 85:cc:0a:c9:e9:9b:48:42:02:ef:af:1e:5f:e4:13:
- 9c:49
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 01:1C:A6:B0:CB:64:17:AB:8E:90:63:E0:B6:16:19:C6:06:C1:C2:C7
- X509v3 Extended Key Usage:
- Code Signing
- X509v3 Authority Key Identifier:
- D5:28:55:87:C7:A3:BF:D7:C4:CE:BE:3D:01:D2:BE:8B:7C:E4:E2:E2
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- bc:03:2d:ad:04:e4:0e:64:20:1e:bd:fb:04:6a:63:d5:8c:51:
- a0:d6:2d:4d:7d:97:f5:0f:42:56:09:58:d6:f4:df:46:01:01:
- f3:62:78:a7:57:76:28:5a:85:fd:b1:34:37:06:7f:1f:7e:d1:
- d9:1a:54:78:a2:4a:ec:90:69:bf:08:3e:c7:df:63:1c:89:d3:
- ca:30:61:e3:f6:0a:92:66:68:8f:6b:6a:0b:01:4c:ca:90:e5:
- 13:b4:89:92:2e:56:bd:84:6f:9c:ff:19:5b:75:27:7f:9e:cc:
- 62:1c:06:e6:94:30:fe:d3:59:1b:2c:10:79:7c:0e:1a:29:be:
- c9:14:02:56:f9:eb:cd:a6:33:10:75:fa:d7:61:23:d0:16:cf:
- c9:e9:58:7b:51:8c:1f:84:3f:32:ca:89:91:90:da:5f:7d:35:
- 0c:f5:1c:c3:b6:03:ad:f9:5f:49:79:54:55:86:98:fa:69:b5:
- fb:47:5b:b1:99:c8:f0:5f:b8:af:a6:b4:63:1b:53:e6:47:78:
- e3:40:df:63:21:f2:51:88:c4:24:b5:51:33:bc:b1:f5:7e:42:
- 89:b3:ff:3a:d7:e4:02:e2:23:c4:82:98:74:d2:2c:ee:8e:71:
- 58:80:b7:0f:24:dc:11:83:02:13:91:7d:0f:8f:b4:81:20:c5:
- ee:55:8c:7b
------BEGIN CERTIFICATE-----
-MIIDcTCCAlmgAwIBAgIBATANBgkqhkiG9w0BAQsFADAgMR4wHAYDVQQDDBUyMDQ4
-IFJTQSBUZXN0IFJvb3QgQ0EwHhcNMjMwMjE3MTcwODUwWhcNMzMwMjE0MTcwODUw
-WjBgMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN
-TW91bnRhaW4gVmlldzEQMA4GA1UECgwHVGVzdCBDQTESMBAGA1UEAwwJMTI3LjAu
-MC4xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoJbomH4fZYYMMXea
-yYVKT6GPlieu6T2tbXQk5Hg946MEPzITWrVMTMv+zu+qbwXoFLa6tvTDy3JrwC3i
-WA3CCZoePKWPyqxFAA2XA5q6IEF0FYgrmh/+3HikcWbtBTu6ga3ssYHLvZx5A0j9
-V+2Xn4RITjig7EV4kFqV08gwvz3i/wTF5HaDxkThAMdkUslxE0wrW8uxxrGfsJ8F
-73R1Dm6RpixK6ogEYRt/cO2ReNMldYastAxsOgiFdaviaixTIWbrPsUlpJhQeFdO
-oWjtg9F4Je7dqazfXOzkByfn0D/w/nC9pM23STuzBquW4hKFzArJ6ZtIQgLvrx5f
-5BOcSQIDAQABo3YwdDAPBgNVHREECDAGhwR/AAABMAwGA1UdEwEB/wQCMAAwHQYD
-VR0OBBYEFAEcprDLZBerjpBj4LYWGcYGwcLHMBMGA1UdJQQMMAoGCCsGAQUFBwMD
-MB8GA1UdIwQYMBaAFNUoVYfHo7/XxM6+PQHSvot85OLiMA0GCSqGSIb3DQEBCwUA
-A4IBAQC8Ay2tBOQOZCAevfsEamPVjFGg1i1NfZf1D0JWCVjW9N9GAQHzYninV3Yo
-WoX9sTQ3Bn8fftHZGlR4okrskGm/CD7H32McidPKMGHj9gqSZmiPa2oLAUzKkOUT
-tImSLla9hG+c/xlbdSd/nsxiHAbmlDD+01kbLBB5fA4aKb7JFAJW+evNpjMQdfrX
-YSPQFs/J6Vh7UYwfhD8yyomRkNpffTUM9RzDtgOt+V9JeVRVhpj6abX7R1uxmcjw
-X7ivprRjG1PmR3jjQN9jIfJRiMQktVEzvLH1fkKJs/861+QC4iPEgph00izujnFY
-gLcPJNwRgwITkX0Pj7SBIMXuVYx7
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/ok_cert.pem b/src/pki/testdata/ssl/certificates/ok_cert.pem
deleted file mode 100644
index 15a299a..0000000
--- a/src/pki/testdata/ssl/certificates/ok_cert.pem
+++ /dev/null
@@ -1,113 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDgU/TzmMEUMwLI
-pG3+qir3lD2mbwDfO95Mn6PqB9Ss5VsN0azg7fnFmB01LeWzSZcUhUQP3EzSZwiI
-AaXYp+uT0Wqh91HnhH5SKn28bw7Y27amPt7c9aRolkQRhQLtRxLfuGBxlXtih2h6
-RFYJ1bTI8fbJRpKLaOiD1dWGcSPDgB6/bAHH0qS8QG3g48AuMHi9rd0lZtP1BwdW
-187icsUlfQzhp28AqNqrS1RDCWSktlI4L7fMAd0cAycDR7/f5jew7RjcUQvUdSLf
-UHs86zc5HJtvCHunBayMQ/fx2lEGs4JFPsiBc56wpc92lq+BLKwBKkpYSx2+/x+F
-wife8XgLAgMBAAECggEAO0gUmHdKtvLQDoPdiYogtrKXJC97dILWuTsKzyLoohQu
-XtWFMR/SfNQ5C7+oTxvocATTurlGF+ggigidckbV64dQ/aJlI6CQ3VfbSHu02bwe
-ZYqBzLShkP382QBkiJ3asAKCgiG1rJEKHB2I+ypdjyjaRdB/k5XStFxDBDdL8zKe
-kL1hytf1ALxYBQJ3TXcoIqlpzz6v+JnZTAuu4vrySfffyFTrytIwf/KGlBACBqXe
-oV+DK586PiyC0m1Hhy1rLTi2/IT4t4j3KO+c/OnpWkMEg1G/Ojy1zPMsMHr1VO9t
-UWxhEIYOLQVUOT+2ltO4bRJcgEPHSxlIY23qalJgqQKBgQD9oZwHPhLZg439Zr9O
-Zgl5fFkPe4SxqLY+ggE5O81+3RgL8GyAuy9oDtUGcw8L9tpKcBflqH4jEvUvT1/m
-8BGKIQteqcKbY0C+KfPvq77R4k2KqmxpKF5f4BS/9O7cgzJZwhSFKDLtcKtDIPUK
-3eoERuPB4/cmhQyb+/TKofZpfwKBgQDibEm1+nYj3tIXDxK3hZHjPz0s9vYV84py
-zg3HjuEmdacnhNPQQQpNG83RMjEnnBvHWH2vxRWyD+57r/FWeA60aUJo5WIP0rj8
-z6GqFT9IWaBrJtBU1YoxuyTH64yih6ljvm2skIEGlQYS+GBL9K/Tx4mh4lAKVzD5
-GXVqtyM/dQKBgFD0Ik8VewK+QLXe87TcUK3cCLkuXZ4vEWxGJonUErUpcKFu7dLw
-7CK0iT3zv5u8ANS9joMZEpmzVVryZNPbUF3cSjq+yIS8W0/XKCsZkGCBcOqPlubB
-oc3MQhM65HqxzYJkthQCTq8GxUM547zCNA2FavDaCGrdELdA5lM++t2VAoGAMLem
-AH68bqlhwM5gc5ZMtn2D1ynn9v8oudz2AAsRDKph5dHhlTx5T+/8j9dh1ijznSfA
-G1KngWGGKZzIq5c3ar//Jvy75bWsUdEG8saRkCqgpo16Y9ZyXpLqrg1TfCD+ZFSz
-2l5ZNKZZ4TkJ1y31qvaS+X7tQ9xQ0DgXGHgBIIUCgYABBBddUXpOyG54HvFHIgxS
-esBBkpM0uy3vOkyfMown2GCjKZaXS5kEmRwU9WQQKLPf2ieALgYEf87YGWmPNZNF
-tG5DoNhTMsrYORB11tuuBR1e6lrG/aoOkP/4udWC8d4Yp9wnkEu0l6X/kMfq2lb1
-67bBVmHqKJ0t8rytHzkP0Q==
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:66
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Oct 3 17:20:08 2022 GMT
- Not After : Oct 2 17:20:08 2024 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:e0:53:f4:f3:98:c1:14:33:02:c8:a4:6d:fe:aa:
- 2a:f7:94:3d:a6:6f:00:df:3b:de:4c:9f:a3:ea:07:
- d4:ac:e5:5b:0d:d1:ac:e0:ed:f9:c5:98:1d:35:2d:
- e5:b3:49:97:14:85:44:0f:dc:4c:d2:67:08:88:01:
- a5:d8:a7:eb:93:d1:6a:a1:f7:51:e7:84:7e:52:2a:
- 7d:bc:6f:0e:d8:db:b6:a6:3e:de:dc:f5:a4:68:96:
- 44:11:85:02:ed:47:12:df:b8:60:71:95:7b:62:87:
- 68:7a:44:56:09:d5:b4:c8:f1:f6:c9:46:92:8b:68:
- e8:83:d5:d5:86:71:23:c3:80:1e:bf:6c:01:c7:d2:
- a4:bc:40:6d:e0:e3:c0:2e:30:78:bd:ad:dd:25:66:
- d3:f5:07:07:56:d7:ce:e2:72:c5:25:7d:0c:e1:a7:
- 6f:00:a8:da:ab:4b:54:43:09:64:a4:b6:52:38:2f:
- b7:cc:01:dd:1c:03:27:03:47:bf:df:e6:37:b0:ed:
- 18:dc:51:0b:d4:75:22:df:50:7b:3c:eb:37:39:1c:
- 9b:6f:08:7b:a7:05:ac:8c:43:f7:f1:da:51:06:b3:
- 82:45:3e:c8:81:73:9e:b0:a5:cf:76:96:af:81:2c:
- ac:01:2a:4a:58:4b:1d:be:ff:1f:85:c2:27:de:f1:
- 78:0b
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- E2:E0:A4:73:95:9B:E9:6E:FD:CE:29:C4:6F:07:81:0B:96:BD:47:BA
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 77:ef:82:85:f1:18:e6:5a:a4:fc:19:da:1a:f4:44:fc:83:03:
- 99:0f:76:fa:40:9d:cf:91:9d:08:df:19:20:54:4e:a9:33:a5:
- 49:5e:7f:3a:8f:6d:4a:73:bd:0f:98:83:b4:61:43:63:7c:87:
- 2b:3a:59:f8:2e:22:3b:7b:39:00:83:0d:90:87:ea:06:78:59:
- 73:37:d5:02:fe:94:af:f7:31:13:c6:44:21:72:dd:e8:69:34:
- ab:83:ee:ac:58:ee:22:fa:aa:64:bc:65:31:e9:d1:4a:ec:e5:
- 7d:6e:b9:1f:0f:5a:50:14:cc:d2:c5:32:fd:ba:74:dc:2d:a6:
- 1a:ac:e7:2e:ce:68:22:c0:16:81:29:3f:4e:a2:84:8f:64:3b:
- d6:e9:29:00:4a:62:e1:3c:cf:14:20:cd:c5:d5:06:9a:77:3e:
- 27:ba:f3:b5:4c:c0:8c:e5:79:2d:df:8d:89:55:fa:e5:c3:ee:
- a4:3c:61:1a:b4:68:17:4e:15:d6:be:6f:b6:d0:42:2c:18:69:
- 17:2f:34:2d:0e:87:43:1c:51:e1:ca:b0:c4:ce:3b:c1:a8:89:
- 56:97:fe:30:40:5f:0c:f4:2f:e3:ab:e1:4b:b9:55:71:44:82:
- c2:d7:ec:58:63:20:55:c2:e5:fa:eb:8f:29:44:8d:65:fa:29:
- 48:75:57:66
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwmYwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0yMjEwMDMxNzIwMDhaFw0yNDEwMDIxNzIwMDhaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDgU/TzmMEUMwLIpG3+qir3lD2mbwDfO95M
-n6PqB9Ss5VsN0azg7fnFmB01LeWzSZcUhUQP3EzSZwiIAaXYp+uT0Wqh91HnhH5S
-Kn28bw7Y27amPt7c9aRolkQRhQLtRxLfuGBxlXtih2h6RFYJ1bTI8fbJRpKLaOiD
-1dWGcSPDgB6/bAHH0qS8QG3g48AuMHi9rd0lZtP1BwdW187icsUlfQzhp28AqNqr
-S1RDCWSktlI4L7fMAd0cAycDR7/f5jew7RjcUQvUdSLfUHs86zc5HJtvCHunBayM
-Q/fx2lEGs4JFPsiBc56wpc92lq+BLKwBKkpYSx2+/x+Fwife8XgLAgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTi4KRzlZvpbv3OKcRvB4ELlr1HujAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEAd++ChfEY5lqk/BnaGvRE/IMDmQ92+kCdz5GdCN8ZIFROqTOlSV5/Oo9tSnO9
-D5iDtGFDY3yHKzpZ+C4iO3s5AIMNkIfqBnhZczfVAv6Ur/cxE8ZEIXLd6Gk0q4Pu
-rFjuIvqqZLxlMenRSuzlfW65Hw9aUBTM0sUy/bp03C2mGqznLs5oIsAWgSk/TqKE
-j2Q71ukpAEpi4TzPFCDNxdUGmnc+J7rztUzAjOV5Ld+NiVX65cPupDxhGrRoF04V
-1r5vttBCLBhpFy80LQ6HQxxR4cqwxM47waiJVpf+MEBfDPQv46vhS7lVcUSCwtfs
-WGMgVcLl+uuPKUSNZfopSHVXZg==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/ok_cert_by_intermediate.pem b/src/pki/testdata/ssl/certificates/ok_cert_by_intermediate.pem
deleted file mode 100644
index 25be4eb..0000000
--- a/src/pki/testdata/ssl/certificates/ok_cert_by_intermediate.pem
+++ /dev/null
@@ -1,195 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDgU/TzmMEUMwLI
-pG3+qir3lD2mbwDfO95Mn6PqB9Ss5VsN0azg7fnFmB01LeWzSZcUhUQP3EzSZwiI
-AaXYp+uT0Wqh91HnhH5SKn28bw7Y27amPt7c9aRolkQRhQLtRxLfuGBxlXtih2h6
-RFYJ1bTI8fbJRpKLaOiD1dWGcSPDgB6/bAHH0qS8QG3g48AuMHi9rd0lZtP1BwdW
-187icsUlfQzhp28AqNqrS1RDCWSktlI4L7fMAd0cAycDR7/f5jew7RjcUQvUdSLf
-UHs86zc5HJtvCHunBayMQ/fx2lEGs4JFPsiBc56wpc92lq+BLKwBKkpYSx2+/x+F
-wife8XgLAgMBAAECggEAO0gUmHdKtvLQDoPdiYogtrKXJC97dILWuTsKzyLoohQu
-XtWFMR/SfNQ5C7+oTxvocATTurlGF+ggigidckbV64dQ/aJlI6CQ3VfbSHu02bwe
-ZYqBzLShkP382QBkiJ3asAKCgiG1rJEKHB2I+ypdjyjaRdB/k5XStFxDBDdL8zKe
-kL1hytf1ALxYBQJ3TXcoIqlpzz6v+JnZTAuu4vrySfffyFTrytIwf/KGlBACBqXe
-oV+DK586PiyC0m1Hhy1rLTi2/IT4t4j3KO+c/OnpWkMEg1G/Ojy1zPMsMHr1VO9t
-UWxhEIYOLQVUOT+2ltO4bRJcgEPHSxlIY23qalJgqQKBgQD9oZwHPhLZg439Zr9O
-Zgl5fFkPe4SxqLY+ggE5O81+3RgL8GyAuy9oDtUGcw8L9tpKcBflqH4jEvUvT1/m
-8BGKIQteqcKbY0C+KfPvq77R4k2KqmxpKF5f4BS/9O7cgzJZwhSFKDLtcKtDIPUK
-3eoERuPB4/cmhQyb+/TKofZpfwKBgQDibEm1+nYj3tIXDxK3hZHjPz0s9vYV84py
-zg3HjuEmdacnhNPQQQpNG83RMjEnnBvHWH2vxRWyD+57r/FWeA60aUJo5WIP0rj8
-z6GqFT9IWaBrJtBU1YoxuyTH64yih6ljvm2skIEGlQYS+GBL9K/Tx4mh4lAKVzD5
-GXVqtyM/dQKBgFD0Ik8VewK+QLXe87TcUK3cCLkuXZ4vEWxGJonUErUpcKFu7dLw
-7CK0iT3zv5u8ANS9joMZEpmzVVryZNPbUF3cSjq+yIS8W0/XKCsZkGCBcOqPlubB
-oc3MQhM65HqxzYJkthQCTq8GxUM547zCNA2FavDaCGrdELdA5lM++t2VAoGAMLem
-AH68bqlhwM5gc5ZMtn2D1ynn9v8oudz2AAsRDKph5dHhlTx5T+/8j9dh1ijznSfA
-G1KngWGGKZzIq5c3ar//Jvy75bWsUdEG8saRkCqgpo16Y9ZyXpLqrg1TfCD+ZFSz
-2l5ZNKZZ4TkJ1y31qvaS+X7tQ9xQ0DgXGHgBIIUCgYABBBddUXpOyG54HvFHIgxS
-esBBkpM0uy3vOkyfMown2GCjKZaXS5kEmRwU9WQQKLPf2ieALgYEf87YGWmPNZNF
-tG5DoNhTMsrYORB11tuuBR1e6lrG/aoOkP/4udWC8d4Yp9wnkEu0l6X/kMfq2lb1
-67bBVmHqKJ0t8rytHzkP0Q==
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 9c:ac:13:39:97:f9:d0:e4:e8:7f:a3:f1:71:92:32:fa
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Intermediate CA
- Validity
- Not Before: Oct 3 17:20:08 2022 GMT
- Not After : Oct 2 17:20:08 2024 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:e0:53:f4:f3:98:c1:14:33:02:c8:a4:6d:fe:aa:
- 2a:f7:94:3d:a6:6f:00:df:3b:de:4c:9f:a3:ea:07:
- d4:ac:e5:5b:0d:d1:ac:e0:ed:f9:c5:98:1d:35:2d:
- e5:b3:49:97:14:85:44:0f:dc:4c:d2:67:08:88:01:
- a5:d8:a7:eb:93:d1:6a:a1:f7:51:e7:84:7e:52:2a:
- 7d:bc:6f:0e:d8:db:b6:a6:3e:de:dc:f5:a4:68:96:
- 44:11:85:02:ed:47:12:df:b8:60:71:95:7b:62:87:
- 68:7a:44:56:09:d5:b4:c8:f1:f6:c9:46:92:8b:68:
- e8:83:d5:d5:86:71:23:c3:80:1e:bf:6c:01:c7:d2:
- a4:bc:40:6d:e0:e3:c0:2e:30:78:bd:ad:dd:25:66:
- d3:f5:07:07:56:d7:ce:e2:72:c5:25:7d:0c:e1:a7:
- 6f:00:a8:da:ab:4b:54:43:09:64:a4:b6:52:38:2f:
- b7:cc:01:dd:1c:03:27:03:47:bf:df:e6:37:b0:ed:
- 18:dc:51:0b:d4:75:22:df:50:7b:3c:eb:37:39:1c:
- 9b:6f:08:7b:a7:05:ac:8c:43:f7:f1:da:51:06:b3:
- 82:45:3e:c8:81:73:9e:b0:a5:cf:76:96:af:81:2c:
- ac:01:2a:4a:58:4b:1d:be:ff:1f:85:c2:27:de:f1:
- 78:0b
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- E2:E0:A4:73:95:9B:E9:6E:FD:CE:29:C4:6F:07:81:0B:96:BD:47:BA
- X509v3 Authority Key Identifier:
- 17:5C:45:F3:D0:AC:1C:10:4C:8B:43:44:20:C4:DD:93:C5:C5:19:3B
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 93:a1:82:4b:78:ce:18:3a:0a:ae:c8:3b:04:4a:1e:2a:e0:e8:
- c3:dd:15:cb:ed:4f:23:09:b8:d4:49:4f:3b:2c:98:bf:bd:7a:
- 4e:de:6b:48:93:0c:17:50:d5:df:b0:8a:95:3a:f4:d2:3c:c4:
- 71:cd:fc:d3:72:b1:99:dd:5c:82:74:df:42:d9:51:85:26:92:
- 2b:c8:0d:1b:aa:e5:98:9f:9d:25:cd:82:f1:a5:42:20:9c:7f:
- e9:b3:b8:1e:75:70:2a:07:ee:33:db:6d:b6:6a:cb:e0:80:e9:
- fe:12:15:0f:4e:e6:78:99:a3:22:68:1a:bc:ce:77:45:f0:9f:
- ce:23:25:bd:32:b6:8d:f4:1a:3a:8e:e9:a7:bd:da:e7:d5:ba:
- 84:38:4f:db:bb:29:7f:ec:4f:56:1a:c4:43:1a:0e:a5:c9:db:
- b1:69:9d:00:82:b6:b2:4b:67:e7:58:45:37:dc:30:81:93:5a:
- 56:de:5e:0f:9c:d6:1a:73:9c:9e:f4:f1:8e:20:11:fc:f3:3f:
- 77:7f:9a:f1:93:42:31:2b:5a:e2:70:f2:7a:f0:07:7e:28:c3:
- 21:6a:c5:b3:fe:08:76:4b:a3:58:70:f6:44:22:a5:e1:b9:17:
- ce:a4:90:35:5c:c7:9a:e0:12:b7:5f:24:d5:60:0c:bd:9d:b6:
- 1b:78:17:16
------BEGIN CERTIFICATE-----
-MIID1zCCAr+gAwIBAgIRAJysEzmX+dDk6H+j8XGSMvowDQYJKoZIhvcNAQELBQAw
-azELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExHTAbBgNVBAMMFFRlc3QgSW50
-ZXJtZWRpYXRlIENBMB4XDTIyMTAwMzE3MjAwOFoXDTI0MTAwMjE3MjAwOFowYDEL
-MAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1vdW50
-YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExEjAQBgNVBAMMCTEyNy4wLjAuMTCC
-ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOBT9POYwRQzAsikbf6qKveU
-PaZvAN873kyfo+oH1KzlWw3RrODt+cWYHTUt5bNJlxSFRA/cTNJnCIgBpdin65PR
-aqH3UeeEflIqfbxvDtjbtqY+3tz1pGiWRBGFAu1HEt+4YHGVe2KHaHpEVgnVtMjx
-9slGkoto6IPV1YZxI8OAHr9sAcfSpLxAbeDjwC4weL2t3SVm0/UHB1bXzuJyxSV9
-DOGnbwCo2qtLVEMJZKS2Ujgvt8wB3RwDJwNHv9/mN7DtGNxRC9R1It9QezzrNzkc
-m28Ie6cFrIxD9/HaUQazgkU+yIFznrClz3aWr4EsrAEqSlhLHb7/H4XCJ97xeAsC
-AwEAAaOBgDB+MAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFOLgpHOVm+lu/c4pxG8H
-gQuWvUe6MB8GA1UdIwQYMBaAFBdcRfPQrBwQTItDRCDE3ZPFxRk7MB0GA1UdJQQW
-MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAPBgNVHREECDAGhwR/AAABMA0GCSqGSIb3
-DQEBCwUAA4IBAQCToYJLeM4YOgquyDsESh4q4OjD3RXL7U8jCbjUSU87LJi/vXpO
-3mtIkwwXUNXfsIqVOvTSPMRxzfzTcrGZ3VyCdN9C2VGFJpIryA0bquWYn50lzYLx
-pUIgnH/ps7gedXAqB+4z2222asvggOn+EhUPTuZ4maMiaBq8zndF8J/OIyW9MraN
-9Bo6jumnvdrn1bqEOE/buyl/7E9WGsRDGg6lyduxaZ0AgrayS2fnWEU33DCBk1pW
-3l4PnNYac5ye9PGOIBH88z93f5rxk0IxK1ricPJ68Ad+KMMhasWz/gh2S6NYcPZE
-IqXhuRfOpJA1XMea4BK3XyTVYAy9nbYbeBcW
------END CERTIFICATE-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:64
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Oct 3 17:20:08 2022 GMT
- Not After : Sep 30 17:20:08 2032 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Intermediate CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:9d:e9:bd:e4:3d:4a:2f:fb:c2:f9:e6:22:2a:42:
- 15:46:1c:8c:8f:47:4c:e9:c5:57:95:1f:66:70:93:
- 22:f0:94:c3:bb:b5:5b:ef:a4:6f:c8:c7:89:95:75:
- ba:0c:36:bf:4e:6b:a9:35:47:08:43:9e:29:6a:e2:
- c3:fb:03:b7:1f:b6:e1:51:6b:ed:7b:19:c7:f9:ce:
- 3b:dc:65:e9:66:c7:83:94:c4:d1:4e:ee:ed:64:4b:
- 81:f1:1a:ea:5a:64:18:1b:6a:4e:93:d0:13:6c:90:
- 60:ca:d2:4e:b7:24:16:f8:b2:08:58:9d:8d:a7:33:
- 45:15:34:81:ad:2d:2d:9c:60:ef:f9:2b:98:fe:79:
- d3:8d:2c:48:db:12:91:f4:2e:fa:bf:f5:26:c1:82:
- 05:80:dd:4c:a8:70:bf:a7:bc:10:34:77:39:db:47:
- 04:0f:ed:44:b2:65:46:22:20:88:59:28:0f:c7:0c:
- a2:b4:91:a5:a2:aa:ca:05:9f:8a:9b:6e:a3:cb:d4:
- a4:e8:24:75:9d:20:81:22:5b:5f:77:3e:c9:f1:1e:
- ae:eb:8a:33:8c:27:5b:1e:be:6d:21:1b:42:72:95:
- e3:9e:13:03:75:a7:58:d4:be:68:12:fe:63:8e:4b:
- 11:7a:34:e7:a3:6b:dd:73:ae:3e:19:9a:ec:91:8b:
- 73:af
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- 17:5C:45:F3:D0:AC:1C:10:4C:8B:43:44:20:C4:DD:93:C5:C5:19:3B
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 25:54:8b:68:3b:3c:92:ed:1b:c7:a1:62:b3:7c:ff:7e:8c:57:
- 7c:67:5c:ea:74:9f:e8:f1:b5:c8:e4:88:0e:c9:a3:f3:28:c4:
- 05:af:8f:ad:51:32:66:ae:5d:7a:b1:77:7e:99:06:c8:30:26:
- 5a:9f:1e:34:ea:aa:3e:0a:73:a2:40:e3:8f:1a:01:96:a2:6d:
- 2f:6c:d9:36:65:98:c8:86:41:0e:ee:0d:aa:da:62:54:62:23:
- c6:23:b0:f1:ca:35:7b:e5:4b:d1:ab:80:80:d6:00:2b:19:85:
- 9d:e0:3c:3f:13:1e:90:d2:df:c3:31:90:0f:a8:40:08:33:4e:
- f7:a4:d0:ed:3e:a4:41:cf:e8:37:49:d1:58:e8:07:3d:4b:a1:
- c9:fe:12:07:9a:de:e0:c8:f3:68:d6:31:5d:03:77:2f:fa:b0:
- e6:2c:f3:80:59:d0:9b:1b:59:22:cd:7e:58:c6:cf:82:92:c3:
- 76:95:78:b2:75:c8:fa:59:9f:0e:c0:e3:6d:70:f9:82:ba:db:
- 89:89:81:b7:b9:e1:41:63:51:56:8a:5a:d2:52:c2:19:2f:d9:
- c0:9d:19:82:59:79:f9:56:1c:25:81:4d:0a:cd:77:1b:de:85:
- 6e:51:04:08:0b:0c:33:65:52:f6:90:a8:82:25:77:a0:fa:5e:
- 9c:2a:91:66
------BEGIN CERTIFICATE-----
-MIIDvDCCAqSgAwIBAgIRALBrk5LjXI1+7Z3IllnFwmQwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0yMjEwMDMxNzIwMDhaFw0zMjA5MzAxNzIwMDhaMGsxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMR0wGwYDVQQDDBRUZXN0IEludGVybWVkaWF0ZSBD
-QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ3pveQ9Si/7wvnmIipC
-FUYcjI9HTOnFV5UfZnCTIvCUw7u1W++kb8jHiZV1ugw2v05rqTVHCEOeKWriw/sD
-tx+24VFr7XsZx/nOO9xl6WbHg5TE0U7u7WRLgfEa6lpkGBtqTpPQE2yQYMrSTrck
-FviyCFidjaczRRU0ga0tLZxg7/krmP55040sSNsSkfQu+r/1JsGCBYDdTKhwv6e8
-EDR3OdtHBA/tRLJlRiIgiFkoD8cMorSRpaKqygWfiptuo8vUpOgkdZ0ggSJbX3c+
-yfEeruuKM4wnWx6+bSEbQnKV454TA3WnWNS+aBL+Y45LEXo056Nr3XOuPhma7JGL
-c68CAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUF1xF89CsHBBM
-i0NEIMTdk8XFGTswDgYDVR0PAQH/BAQDAgEGMB8GA1UdIwQYMBaAFJsmC4qYqbsd
-uR8c4xpAM+2OF4irMA0GCSqGSIb3DQEBCwUAA4IBAQAlVItoOzyS7RvHoWKzfP9+
-jFd8Z1zqdJ/o8bXI5IgOyaPzKMQFr4+tUTJmrl16sXd+mQbIMCZanx406qo+CnOi
-QOOPGgGWom0vbNk2ZZjIhkEO7g2q2mJUYiPGI7DxyjV75UvRq4CA1gArGYWd4Dw/
-Ex6Q0t/DMZAPqEAIM073pNDtPqRBz+g3SdFY6Ac9S6HJ/hIHmt7gyPNo1jFdA3cv
-+rDmLPOAWdCbG1kizX5Yxs+CksN2lXiydcj6WZ8OwONtcPmCutuJiYG3ueFBY1FW
-ilrSUsIZL9nAnRmCWXn5VhwlgU0KzXcb3oVuUQQICwwzZVL2kKiCJXeg+l6cKpFm
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/policies_sanity_check.pem b/src/pki/testdata/ssl/certificates/policies_sanity_check.pem
deleted file mode 100644
index 0366c54..0000000
--- a/src/pki/testdata/ssl/certificates/policies_sanity_check.pem
+++ /dev/null
@@ -1,93 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 3f:da:e4:08:b7:6c:7c:c7:71:61:c1:d6:0f:c0:95:bc:69:fb:bb:12
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C = US, ST = California, L = Mountain View, O = Test CA, CN = 127.0.0.1
- Validity
- Not Before: Oct 3 17:20:09 2022 GMT
- Not After : Sep 30 17:20:09 2032 GMT
- Subject: C = US, ST = California, L = Mountain View, O = Test CA, CN = 127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:a4:cd:2c:e1:f6:f0:26:79:e1:27:a7:a6:45:21:
- e1:8f:2a:40:82:18:cf:e0:2b:63:fa:7a:d9:eb:34:
- 7a:1a:0c:eb:63:b9:73:5d:64:e0:3e:95:c7:6a:08:
- ee:c5:85:d1:07:f2:9f:36:0e:79:13:bb:fd:26:80:
- b7:1e:fc:63:2b:d8:a0:04:be:38:ac:e9:74:76:32:
- 13:4d:0d:5b:b1:ba:4a:46:f1:3e:ae:1d:42:36:93:
- 7f:1b:72:da:be:3b:c8:c6:d9:ac:57:2a:bb:69:60:
- d7:45:3d:4d:5b:ee:ef:ce:c8:4a:1c:21:24:69:15:
- c5:28:02:ec:48:1d:39:25:3b:09:d7:cb:9f:4c:c2:
- 7a:c0:db:0b:c8:a3:86:ae:54:8c:1d:8b:a3:34:f8:
- 4d:49:8b:9c:2b:98:00:9a:08:7b:b8:4c:6a:60:75:
- cd:38:ac:f0:d2:b8:67:1b:88:cf:4c:2f:be:1c:e7:
- 30:55:2e:db:ab:ec:01:f8:12:af:87:ee:16:f9:47:
- 02:68:c6:2a:cb:a3:89:1d:39:bf:dc:9b:92:5f:60:
- 6f:5b:8a:60:f7:2f:4c:0c:23:9b:f5:3c:f9:0f:3c:
- 3c:46:88:35:12:5d:1f:34:52:e6:8b:f1:fc:6d:57:
- ac:86:1f:f4:d2:21:eb:68:c3:0f:b4:62:9e:0f:4b:
- ad:f7
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Certificate Policies:
- Policy: 1.2.3.4.5
- Policy: 1.3.5.8.12
- CPS: http://cps.example.com/foo
- User Notice:
- Organization: Organization Name
- Numbers: 1, 2, 3, 4
- Explicit Text: Explicit Text Here
- User Notice:
- Explicit Text: Explicit Text Two
- User Notice:
- Organization: Organization Name Two
- Number: 42
- X509v3 Subject Key Identifier:
- 84:A7:AA:E2:63:F0:DF:98:C6:90:F3:67:27:49:0D:A8:F5:E2:EE:DF
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 91:ba:b8:c9:e1:a5:45:bf:dc:3e:30:39:e2:68:25:34:8b:d8:
- 90:5a:30:11:7d:68:ce:8c:97:23:fb:fc:91:a5:37:a9:c1:24:
- f2:7d:92:da:69:7b:f6:3c:2f:60:ed:b8:9b:cf:93:66:54:62:
- 03:ee:3d:8c:6a:b4:4a:70:9a:ef:b1:9c:a2:a9:bb:79:9a:84:
- 72:da:b3:44:64:8e:97:76:c6:1e:85:fa:10:3f:76:fd:14:17:
- 11:7b:83:cf:82:68:5b:86:81:d8:a6:5d:26:b2:e2:cb:68:fe:
- 96:27:bc:a6:99:71:30:35:df:de:67:ea:14:81:44:42:de:d8:
- 55:17:ae:2e:c5:1a:a5:44:3c:f9:cd:02:55:93:c8:b4:88:80:
- 05:f9:15:93:8e:f3:2a:0d:3d:32:f0:a1:60:d6:f3:02:df:cd:
- fc:cb:d7:29:34:16:cc:c8:ac:48:2b:a4:03:c0:bb:df:a8:df:
- b8:54:0f:8e:e9:7f:fa:91:fb:33:14:0f:d6:08:ae:b2:81:fe:
- f3:63:1f:8b:0b:81:b9:44:70:c0:cd:34:58:a2:4b:d8:0f:8b:
- 6f:15:5a:d2:10:34:c8:1d:18:f8:ba:d9:ea:b9:ce:8d:d4:a9:
- e4:52:b5:cf:8a:3d:5a:eb:68:f3:db:c2:83:c2:98:d9:bc:d0:
- 80:cf:1e:b8
------BEGIN CERTIFICATE-----
-MIIETTCCAzWgAwIBAgIUP9rkCLdsfMdxYcHWD8CVvGn7uxIwDQYJKoZIhvcNAQEL
-BQAwYDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM
-DU1vdW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExEjAQBgNVBAMMCTEyNy4w
-LjAuMTAeFw0yMjEwMDMxNzIwMDlaFw0zMjA5MzAxNzIwMDlaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCkzSzh9vAmeeEnp6ZFIeGPKkCCGM/gK2P6
-etnrNHoaDOtjuXNdZOA+lcdqCO7FhdEH8p82DnkTu/0mgLce/GMr2KAEvjis6XR2
-MhNNDVuxukpG8T6uHUI2k38bctq+O8jG2axXKrtpYNdFPU1b7u/OyEocISRpFcUo
-AuxIHTklOwnXy59MwnrA2wvIo4auVIwdi6M0+E1Ji5wrmACaCHu4TGpgdc04rPDS
-uGcbiM9ML74c5zBVLtur7AH4Eq+H7hb5RwJoxirLo4kdOb/cm5JfYG9bimD3L0wM
-I5v1PPkPPDxGiDUSXR80UuaL8fxtV6yGH/TSIetoww+0Yp4PS633AgMBAAGjgf4w
-gfswgdkGA1UdIASB0TCBzjAGBgQqAwQFMIHDBgQrBQgMMIG6MCYGCCsGAQUFBwIB
-FhpodHRwOi8vY3BzLmV4YW1wbGUuY29tL2ZvbzBDBggrBgEFBQcCAjA3MCEaEU9y
-Z2FuaXphdGlvbiBOYW1lMAwCAQECAQICAQMCAQQaEkV4cGxpY2l0IFRleHQgSGVy
-ZTAfBggrBgEFBQcCAjATGhFFeHBsaWNpdCBUZXh0IFR3bzAqBggrBgEFBQcCAjAe
-MBwaFU9yZ2FuaXphdGlvbiBOYW1lIFR3bzADAgEqMB0GA1UdDgQWBBSEp6riY/Df
-mMaQ82cnSQ2o9eLu3zANBgkqhkiG9w0BAQsFAAOCAQEAkbq4yeGlRb/cPjA54mgl
-NIvYkFowEX1ozoyXI/v8kaU3qcEk8n2S2ml79jwvYO24m8+TZlRiA+49jGq0SnCa
-77Gcoqm7eZqEctqzRGSOl3bGHoX6ED92/RQXEXuDz4JoW4aB2KZdJrLiy2j+lie8
-pplxMDXf3mfqFIFEQt7YVReuLsUapUQ8+c0CVZPItIiABfkVk47zKg09MvChYNbz
-At/N/MvXKTQWzMisSCukA8C736jfuFQPjul/+pH7MxQP1giusoH+82MfiwuBuURw
-wM00WKJL2A+LbxVa0hA0yB0Y+LrZ6rnOjdSp5FK1z4o9Wuto89vCg8KY2bzQgM8e
-uA==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/post_june_2016.pem b/src/pki/testdata/ssl/certificates/post_june_2016.pem
deleted file mode 100644
index 0a74d9f..0000000
--- a/src/pki/testdata/ssl/certificates/post_june_2016.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:81
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Jun 1 00:00:00 2016 GMT
- Not After : Jul 3 00:00:00 2017 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:ac:bd:50:56:9a:11:59:5d:a3:61:c3:5b:0f:7b:
- b7:73:68:87:c8:7a:2a:f6:97:e1:09:1f:35:bb:b4:
- 30:ad:75:ab:6d:ae:ad:5e:81:b8:36:19:68:3b:63:
- 1e:b8:08:67:b8:bf:fe:49:8c:5e:a6:20:f7:86:d1:
- d4:42:db:4a:93:61:28:76:ed:86:2b:51:79:a8:bc:
- 0e:68:8c:d2:2b:9b:5b:ef:a0:20:85:4c:94:36:6f:
- 58:41:a5:5c:f3:2e:8d:8f:72:0b:f9:73:14:26:bf:
- b7:cd:62:fd:3b:7d:cf:2a:7a:64:47:69:85:c1:97:
- 08:b6:84:47:92:fc:32:8f:2c:c6:ad:5b:66:d5:d9:
- 1d:a2:5b:46:08:15:4d:fb:22:e4:97:a2:f9:1a:f1:
- 98:c2:56:05:f3:90:22:9d:3a:9e:bd:b0:62:b0:92:
- 48:a5:fe:51:50:00:d2:c0:79:c9:b0:d7:8a:99:16:
- 7c:e1:cb:03:75:7f:6f:ff:33:1d:55:37:fb:0b:13:
- 0f:f1:9e:0b:42:06:9d:4e:45:49:5a:17:98:3b:e1:
- a0:46:5a:55:8c:d6:f3:fa:4f:f0:e3:d1:52:2f:46:
- e2:5e:b1:cc:c7:0e:05:dc:7d:73:66:f7:92:9c:62:
- 02:87:fe:ca:bf:43:4a:be:a0:0f:41:4d:2d:47:ea:
- 9a:09
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 77:54:D3:17:CC:0A:33:63:BC:8C:17:18:29:3D:27:8F:27:44:AC:23
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 51:f6:3a:89:7e:50:32:e0:d6:d3:9a:0a:6a:5d:65:22:97:e6:
- fd:c6:cd:39:08:e8:ea:6d:68:f5:04:31:ba:70:26:15:9b:25:
- 4c:24:55:33:6e:69:95:2a:22:07:2c:8a:b7:b5:43:f9:73:c5:
- 8f:70:79:de:a9:f6:36:bb:f8:ba:c3:7c:d1:bf:d9:29:da:be:
- 16:46:d6:5d:45:f1:b1:54:db:58:08:72:25:3e:be:15:1f:8b:
- c7:91:a4:f2:9b:49:11:8b:1f:d0:99:fd:47:60:1b:ec:0e:2a:
- 6b:e0:2b:2f:8d:a8:cd:2e:b1:af:72:fa:7d:15:8c:95:79:be:
- c2:3e:83:60:84:f2:0e:3f:41:b5:3f:81:a5:04:ec:93:36:40:
- 48:54:fd:8e:d8:ba:7d:6c:bc:e0:25:25:b8:74:d6:3f:e6:03:
- 70:17:dc:ba:b6:48:fb:f0:e3:25:91:94:66:99:d9:4d:ad:c4:
- 0e:bc:0b:03:63:f5:44:0b:cb:47:a4:ad:c3:c7:5e:30:d5:f4:
- fc:f8:32:39:88:d5:79:65:49:3f:45:2f:1c:9c:b7:4d:08:12:
- f3:c8:d8:87:fa:44:78:a1:41:ab:54:98:ad:43:48:8e:b3:0a:
- 01:23:21:e3:84:0a:f8:5a:a8:ab:13:fb:f0:c9:54:74:ad:72:
- 61:52:e9:d9
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwoEwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0xNjA2MDEwMDAwMDBaFw0xNzA3MDMwMDAwMDBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsvVBWmhFZXaNhw1sPe7dzaIfIeir2l+EJ
-HzW7tDCtdattrq1egbg2GWg7Yx64CGe4v/5JjF6mIPeG0dRC20qTYSh27YYrUXmo
-vA5ojNIrm1vvoCCFTJQ2b1hBpVzzLo2Pcgv5cxQmv7fNYv07fc8qemRHaYXBlwi2
-hEeS/DKPLMatW2bV2R2iW0YIFU37IuSXovka8ZjCVgXzkCKdOp69sGKwkkil/lFQ
-ANLAecmw14qZFnzhywN1f2//Mx1VN/sLEw/xngtCBp1ORUlaF5g74aBGWlWM1vP6
-T/Dj0VIvRuJesczHDgXcfXNm95KcYgKH/sq/Q0q+oA9BTS1H6poJAgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBR3VNMXzAozY7yMFxgpPSePJ0SsIzAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEAUfY6iX5QMuDW05oKal1lIpfm/cbNOQjo6m1o9QQxunAmFZslTCRVM25plSoi
-ByyKt7VD+XPFj3B53qn2Nrv4usN80b/ZKdq+FkbWXUXxsVTbWAhyJT6+FR+Lx5Gk
-8ptJEYsf0Jn9R2Ab7A4qa+ArL42ozS6xr3L6fRWMlXm+wj6DYITyDj9BtT+BpQTs
-kzZASFT9jti6fWy84CUluHTWP+YDcBfcurZI+/DjJZGUZpnZTa3EDrwLA2P1RAvL
-R6Stw8deMNX0/PgyOYjVeWVJP0UvHJy3TQgS88jYh/pEeKFBq1SYrUNIjrMKASMh
-44QK+FqoqxP78MlUdK1yYVLp2Q==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/pre_br_validity_bad_121.pem b/src/pki/testdata/ssl/certificates/pre_br_validity_bad_121.pem
deleted file mode 100644
index c0ac134..0000000
--- a/src/pki/testdata/ssl/certificates/pre_br_validity_bad_121.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:78
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Jan 1 00:00:00 2008 GMT
- Not After : May 1 00:00:00 2018 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:ba:d0:97:d7:72:13:ea:8f:1a:c0:2b:11:e7:a9:
- d1:dd:7c:88:d2:a6:68:c0:51:1d:ff:b3:0b:88:de:
- f3:95:12:5a:74:7e:21:25:aa:04:cf:e2:9f:8f:9c:
- 0a:38:e5:df:77:7a:47:73:46:2b:c7:bf:b9:5a:6b:
- 5a:0d:75:d4:32:59:6d:45:ba:02:10:34:ec:6b:6a:
- 86:26:67:78:19:e7:a5:87:a4:88:4c:a9:a4:ec:94:
- 19:d0:ee:b6:49:37:df:eb:63:e8:4d:f2:09:41:56:
- be:7c:57:17:66:06:76:e9:35:1b:c2:9e:0e:b7:72:
- 35:e7:82:6f:85:20:4a:75:6f:ff:84:09:fa:73:47:
- e7:40:8c:3f:05:f6:73:8c:f7:56:fb:1e:53:a7:ba:
- 6c:3f:12:e0:34:21:8e:e0:b4:19:36:6e:73:86:22:
- 5e:b2:89:17:50:c3:a6:03:d1:e0:8e:d3:bf:4e:e9:
- 11:08:21:61:f0:f1:42:ef:56:f1:ad:e4:d7:b3:4d:
- 6a:8a:b2:0c:ea:99:ab:a2:e5:64:f5:d0:ef:7b:1d:
- 98:f8:8d:20:29:46:91:0b:bc:a8:1b:b7:50:a3:2e:
- 0f:c9:0a:a1:61:cb:7f:77:9d:a0:96:ee:b1:b1:ca:
- 2d:cc:f3:f6:16:21:16:2a:ee:e8:10:7a:e9:e2:7d:
- 4d:21
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 41:16:79:6C:BA:A5:55:A1:5B:53:B3:80:E8:62:C8:1B:CF:E9:A5:6C
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 7e:9b:7f:2c:42:3f:7e:34:6b:dc:31:35:cd:e6:b4:b0:ac:99:
- 80:fb:90:37:73:b8:fb:50:8d:e5:d5:6f:e4:80:22:3e:89:d3:
- fd:78:9e:8c:9e:6e:6d:32:3c:b7:97:ef:32:dd:86:a1:ed:44:
- 91:fc:60:55:bd:46:c4:67:f4:00:ce:a7:e5:65:fb:58:b0:75:
- 8e:81:51:b3:46:a5:b0:5f:fe:aa:69:17:5b:ce:da:7b:90:7b:
- 07:4d:f6:eb:0b:3f:b6:bd:81:d5:e5:55:43:1e:de:82:30:5d:
- ff:1c:49:df:4b:7f:e5:5c:5a:e7:d1:6a:6f:8f:ab:53:fc:18:
- 38:8f:8e:07:ae:24:24:7f:10:73:2b:63:3e:9e:f7:dd:90:de:
- 84:df:70:e2:bb:73:f5:77:04:aa:ab:b5:bb:e6:fa:5c:4a:2b:
- 67:4a:61:2c:bb:58:9d:d3:42:6b:0d:90:b1:14:6a:ee:13:c2:
- 9f:21:45:ba:c7:7c:7b:a0:20:0b:13:b5:81:36:ff:8f:32:2e:
- f0:2b:4e:e7:6d:cd:28:9a:49:40:69:52:c5:5f:89:eb:04:10:
- 07:3a:17:1e:f6:95:35:13:67:94:fe:65:17:4f:6e:bc:23:96:
- d8:11:21:ce:70:af:97:ef:f5:c8:fa:e3:e3:01:72:1a:f7:4e:
- 73:8d:10:a6
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwngwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0wODAxMDEwMDAwMDBaFw0xODA1MDEwMDAwMDBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC60JfXchPqjxrAKxHnqdHdfIjSpmjAUR3/
-swuI3vOVElp0fiElqgTP4p+PnAo45d93ekdzRivHv7laa1oNddQyWW1FugIQNOxr
-aoYmZ3gZ56WHpIhMqaTslBnQ7rZJN9/rY+hN8glBVr58VxdmBnbpNRvCng63cjXn
-gm+FIEp1b/+ECfpzR+dAjD8F9nOM91b7HlOnumw/EuA0IY7gtBk2bnOGIl6yiRdQ
-w6YD0eCO079O6REIIWHw8ULvVvGt5NezTWqKsgzqmaui5WT10O97HZj4jSApRpEL
-vKgbt1CjLg/JCqFhy393naCW7rGxyi3M8/YWIRYq7ugQeunifU0hAgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBRBFnlsuqVVoVtTs4DoYsgbz+mlbDAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEAfpt/LEI/fjRr3DE1zea0sKyZgPuQN3O4+1CN5dVv5IAiPonT/XiejJ5ubTI8
-t5fvMt2Goe1EkfxgVb1GxGf0AM6n5WX7WLB1joFRs0alsF/+qmkXW87ae5B7B032
-6ws/tr2B1eVVQx7egjBd/xxJ30t/5Vxa59Fqb4+rU/wYOI+OB64kJH8QcytjPp73
-3ZDehN9w4rtz9XcEqqu1u+b6XEorZ0phLLtYndNCaw2QsRRq7hPCnyFFusd8e6Ag
-CxO1gTb/jzIu8CtO523NKJpJQGlSxV+J6wQQBzoXHvaVNRNnlP5lF09uvCOW2BEh
-znCvl+/1yPrj4wFyGvdOc40Qpg==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/pre_br_validity_bad_2020.pem b/src/pki/testdata/ssl/certificates/pre_br_validity_bad_2020.pem
deleted file mode 100644
index 54ee311..0000000
--- a/src/pki/testdata/ssl/certificates/pre_br_validity_bad_2020.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:79
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: May 1 00:00:00 2012 GMT
- Not After : Jul 3 00:00:00 2019 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:e8:01:53:38:ac:8f:22:51:a3:e6:99:dc:5c:61:
- 81:49:da:e3:d6:19:94:5e:20:32:1e:d9:0d:8a:ad:
- d7:f6:76:fc:91:1a:1a:a0:82:77:6b:9c:22:7d:80:
- 9a:bc:09:06:c6:16:4c:96:47:35:de:4a:63:0a:b2:
- f4:b2:9d:c8:8e:9c:ba:de:0b:05:cb:16:53:c6:eb:
- b1:97:d2:fd:ce:a9:9b:87:c6:f3:65:83:6f:02:d0:
- a2:f6:70:93:0e:e4:b4:5a:ea:83:93:5d:db:16:da:
- 54:e2:78:40:43:e6:c2:74:33:2a:f2:0f:18:a5:1f:
- 78:95:36:b4:ab:b0:58:dc:e8:e8:2a:74:ae:45:d3:
- 55:48:d2:64:39:d0:7d:f9:8f:96:d9:d1:77:a8:bb:
- 54:1d:d0:01:12:f3:68:48:83:65:6a:22:86:4a:3c:
- f2:28:a6:d4:a6:6c:27:1b:44:4e:67:60:36:64:10:
- 54:e2:ad:f4:fb:b7:9a:a5:93:13:2d:9e:44:22:7b:
- 84:f6:61:6a:6e:22:ff:cd:06:84:c8:e4:e2:14:fe:
- d3:33:1a:f6:94:a3:6d:9d:af:e7:7e:da:02:31:1c:
- c6:54:60:72:46:b7:5b:56:e5:31:f5:d8:57:33:d7:
- 2e:2e:00:ae:2a:c9:be:f0:51:c4:8b:eb:59:43:12:
- 90:fb
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 55:1A:0A:BD:6F:54:C0:58:F3:8A:C4:A3:2E:4D:39:9B:BB:E4:48:AD
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 8e:83:f2:8f:31:70:5a:ce:64:82:b3:9e:89:e8:0f:5a:d1:bc:
- 55:c1:0d:40:7b:1b:21:94:ba:5a:e3:fc:16:28:b8:92:2b:aa:
- 85:2b:66:8a:43:2e:05:f1:38:b2:20:f5:8e:e5:7a:ef:62:29:
- 70:c5:03:c9:48:3f:1c:59:83:7d:8b:64:e6:db:0e:4c:c2:18:
- a0:85:a7:3c:18:db:ac:92:46:96:c0:f2:83:3e:e7:53:ce:5a:
- 13:90:4b:22:86:42:6b:a1:c4:1d:e6:b8:50:aa:51:c1:74:07:
- 16:d8:fe:e2:3a:9a:79:52:4a:a7:40:bb:14:d4:56:ff:01:d5:
- 0e:5c:c5:ec:1b:fa:4e:32:4a:1a:12:6d:d6:3f:0b:1c:e7:86:
- 73:e2:24:97:90:ad:50:4e:c8:af:f6:b5:75:ce:91:91:e5:bd:
- 92:c3:d4:d9:be:c0:82:8c:de:3c:98:eb:12:5b:a6:7b:d5:94:
- 7d:69:2c:c2:fa:52:62:65:a7:67:76:4f:c7:73:6f:5d:47:b9:
- 8d:39:1d:2f:80:bf:ee:5c:48:83:42:a9:09:5b:7d:a1:0a:4f:
- c2:b6:4c:0d:ba:4a:01:25:95:f8:98:4b:93:be:dc:63:bf:aa:
- f9:8f:77:11:ea:56:ea:12:d4:6d:57:7e:b1:e8:3b:6a:3f:69:
- ee:ec:ea:66
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwnkwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0xMjA1MDEwMDAwMDBaFw0xOTA3MDMwMDAwMDBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDoAVM4rI8iUaPmmdxcYYFJ2uPWGZReIDIe
-2Q2Krdf2dvyRGhqggndrnCJ9gJq8CQbGFkyWRzXeSmMKsvSynciOnLreCwXLFlPG
-67GX0v3OqZuHxvNlg28C0KL2cJMO5LRa6oOTXdsW2lTieEBD5sJ0MyryDxilH3iV
-NrSrsFjc6OgqdK5F01VI0mQ50H35j5bZ0Xeou1Qd0AES82hIg2VqIoZKPPIoptSm
-bCcbRE5nYDZkEFTirfT7t5qlkxMtnkQie4T2YWpuIv/NBoTI5OIU/tMzGvaUo22d
-r+d+2gIxHMZUYHJGt1tW5TH12Fcz1y4uAK4qyb7wUcSL61lDEpD7AgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBRVGgq9b1TAWPOKxKMuTTmbu+RIrTAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEAjoPyjzFwWs5kgrOeiegPWtG8VcENQHsbIZS6WuP8Fii4kiuqhStmikMuBfE4
-siD1juV672IpcMUDyUg/HFmDfYtk5tsOTMIYoIWnPBjbrJJGlsDygz7nU85aE5BL
-IoZCa6HEHea4UKpRwXQHFtj+4jqaeVJKp0C7FNRW/wHVDlzF7Bv6TjJKGhJt1j8L
-HOeGc+Ikl5CtUE7Ir/a1dc6RkeW9ksPU2b7AgozePJjrElume9WUfWkswvpSYmWn
-Z3ZPx3NvXUe5jTkdL4C/7lxIg0KpCVt9oQpPwrZMDbpKASWV+JhLk77cY7+q+Y93
-EepW6hLUbVd+seg7aj9p7uzqZg==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/pre_br_validity_ok.pem b/src/pki/testdata/ssl/certificates/pre_br_validity_ok.pem
deleted file mode 100644
index 94a5268..0000000
--- a/src/pki/testdata/ssl/certificates/pre_br_validity_ok.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:77
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Jan 1 00:00:00 2008 GMT
- Not After : Jan 1 00:00:00 2015 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:ba:59:8b:7c:51:b9:fa:d1:33:7f:52:6a:0e:e4:
- f8:aa:d2:bc:ca:87:8e:ad:c5:23:5e:4f:64:c0:44:
- 5a:68:c9:e3:b9:10:a0:ce:95:c5:96:14:3f:92:7b:
- 19:d1:f4:a0:b5:1e:20:ad:10:6b:35:9d:87:06:a2:
- d5:52:26:d8:12:9d:e4:9b:11:25:7c:7d:b8:16:b4:
- 97:35:c8:31:e2:bc:6b:79:5b:d8:58:12:5a:ba:0a:
- ab:98:d7:6e:96:56:cd:54:53:ea:49:12:be:7e:ef:
- b5:a6:9e:f2:5a:7a:27:2e:71:40:38:94:dd:7a:e3:
- a4:0e:ba:54:6d:6a:fd:00:c2:dd:15:81:74:83:56:
- 5e:27:7e:3f:2e:47:0e:3b:ec:85:4b:f9:7a:f8:7b:
- 1a:96:4c:d8:c9:ee:bb:20:8a:25:83:38:26:f1:d0:
- 0c:f0:22:46:4b:9b:87:91:22:eb:a2:e3:84:57:e0:
- a3:cc:90:de:3a:43:41:40:a0:8e:bd:c8:2d:24:ea:
- 2a:92:11:bf:b7:7c:77:e9:9a:d3:22:da:83:d1:6b:
- a6:29:f4:3b:cd:d9:6b:25:d7:2f:d4:67:60:65:da:
- d5:ba:9e:36:1d:33:b2:e6:e2:b8:84:ea:99:1d:5d:
- 69:43:99:af:35:63:4c:99:bc:d4:39:80:b4:88:f3:
- 59:07
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 7C:9E:00:01:F2:2E:C7:FF:98:BA:C8:E9:DA:7D:77:F8:9D:91:B1:E9
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- c6:7c:e6:21:ca:91:23:8e:0c:28:5c:52:c8:99:9e:4a:0c:f0:
- f9:53:ad:ce:30:0c:d3:46:f3:0a:03:11:3c:e8:80:38:4c:40:
- ca:a3:de:21:9c:0f:c9:5d:35:ce:ca:b4:88:15:56:f3:3f:6b:
- 7c:ac:2f:0b:54:69:2f:43:50:56:b9:6c:72:5e:d5:03:77:fe:
- 18:25:bd:9b:5c:6f:70:20:52:aa:66:49:00:12:4c:89:54:eb:
- da:c4:7e:55:1d:d7:46:db:d3:98:29:eb:56:f0:0b:e8:f8:03:
- 4a:3f:21:25:e6:b9:e4:52:78:20:57:7c:33:2f:e2:24:e7:ae:
- 1a:e9:45:ae:3f:17:d7:0b:38:2f:0e:c3:bf:b6:39:37:e8:f9:
- ca:fe:d2:12:d4:d2:88:f8:d9:9e:3b:9b:fa:2e:18:3b:8b:ac:
- ef:2e:2a:35:d5:5e:b8:f9:4f:ec:6f:0c:af:d6:f3:8e:ef:78:
- b7:d1:29:0f:7f:f8:08:85:a6:56:83:84:a3:df:c4:41:95:84:
- 3a:0d:10:31:36:d3:01:f9:ee:42:87:61:85:06:7f:e2:b6:2c:
- d1:7b:ba:24:b9:34:a4:b1:ec:2a:6f:06:b3:b0:db:2b:c1:aa:
- 82:a7:ae:9b:09:bb:36:22:76:76:55:0f:e5:2b:25:d8:34:1c:
- b3:0a:f0:ec
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwncwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0wODAxMDEwMDAwMDBaFw0xNTAxMDEwMDAwMDBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6WYt8Ubn60TN/UmoO5Piq0rzKh46txSNe
-T2TARFpoyeO5EKDOlcWWFD+SexnR9KC1HiCtEGs1nYcGotVSJtgSneSbESV8fbgW
-tJc1yDHivGt5W9hYElq6CquY126WVs1UU+pJEr5+77WmnvJaeicucUA4lN1646QO
-ulRtav0Awt0VgXSDVl4nfj8uRw477IVL+Xr4exqWTNjJ7rsgiiWDOCbx0AzwIkZL
-m4eRIuui44RX4KPMkN46Q0FAoI69yC0k6iqSEb+3fHfpmtMi2oPRa6Yp9DvN2Wsl
-1y/UZ2Bl2tW6njYdM7Lm4riE6pkdXWlDma81Y0yZvNQ5gLSI81kHAgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBR8ngAB8i7H/5i6yOnafXf4nZGx6TAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEAxnzmIcqRI44MKFxSyJmeSgzw+VOtzjAM00bzCgMRPOiAOExAyqPeIZwPyV01
-zsq0iBVW8z9rfKwvC1RpL0NQVrlscl7VA3f+GCW9m1xvcCBSqmZJABJMiVTr2sR+
-VR3XRtvTmCnrVvAL6PgDSj8hJea55FJ4IFd8My/iJOeuGulFrj8X1ws4Lw7Dv7Y5
-N+j5yv7SEtTSiPjZnjub+i4YO4us7y4qNdVeuPlP7G8Mr9bzju94t9EpD3/4CIWm
-VoOEo9/EQZWEOg0QMTbTAfnuQodhhQZ/4rYs0Xu6JLk0pLHsKm8Gs7DbK8Gqgqeu
-mwm7NiJ2dlUP5Ssl2DQcswrw7A==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/pre_june_2016.pem b/src/pki/testdata/ssl/certificates/pre_june_2016.pem
deleted file mode 100644
index 3d16179..0000000
--- a/src/pki/testdata/ssl/certificates/pre_june_2016.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:7d
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: May 1 00:00:00 2016 GMT
- Not After : Jul 3 00:00:00 2017 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:8d:70:9b:0b:12:3d:e5:81:70:33:5f:fd:28:2d:
- 06:31:54:c4:f3:b4:27:c0:34:e6:d1:04:c3:e3:62:
- fc:1e:b1:54:81:07:f7:dd:a6:5d:31:74:6d:2d:a9:
- f1:1b:e2:23:49:65:fe:1f:76:ab:5c:19:c2:ec:ae:
- f0:98:5d:f6:38:06:79:70:e5:d2:d5:e3:b3:a4:35:
- d5:cf:1b:fe:40:14:34:ec:4e:f3:3a:9f:95:de:d9:
- a2:fe:b5:ae:55:66:96:6f:a2:e8:5b:8e:77:d6:e4:
- 6f:58:46:dd:f7:4e:c9:94:fc:2c:68:e9:93:b3:e3:
- 29:dc:b3:93:43:51:57:55:4d:83:97:46:76:6c:e5:
- 6c:a8:04:cf:ab:7f:a4:dc:95:6b:53:7a:c4:03:bb:
- 31:5a:1a:cc:21:94:c9:24:c4:de:7c:f5:97:9b:97:
- 37:50:33:6c:26:30:f6:90:cb:46:e4:b2:c6:9b:d2:
- 9c:19:2e:ce:25:78:df:ad:84:6c:d4:04:cf:7f:20:
- 47:ad:d8:c1:b2:2b:4a:29:71:f0:f6:fa:fb:31:ca:
- ca:f4:4c:a8:81:dd:8c:d4:e6:a0:ac:2a:22:9a:01:
- 32:34:27:e3:8c:61:b1:1c:a9:d3:39:48:4c:13:42:
- 44:2e:63:a2:f3:cf:54:e5:6b:af:ba:6e:06:49:a1:
- 94:0f
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 35:B7:03:06:47:D2:88:52:F9:CD:7F:E1:27:C4:4D:B9:22:04:19:75
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 3e:e6:74:d5:4a:48:14:04:4e:4a:c4:a2:40:28:27:87:55:72:
- e5:e8:76:a7:2a:fa:7e:fe:e0:fc:20:60:97:7a:b5:80:4f:97:
- 6e:bf:a8:21:05:61:6c:7b:ec:6c:b7:09:75:d4:45:ad:00:ae:
- c8:ab:a9:8a:cd:53:c1:af:5b:61:1f:0d:7f:98:24:1f:28:cf:
- 8f:78:ad:f0:41:02:9e:05:98:d8:2d:dc:c3:43:06:98:10:45:
- 69:b9:fd:7e:f4:7a:19:62:26:b6:b3:be:8f:ef:33:1e:93:cc:
- e7:3d:85:2c:05:5b:d6:69:e5:44:25:c4:cb:ed:40:14:e1:52:
- c1:c9:b5:a9:3c:50:76:76:ca:82:b3:97:53:bc:87:3b:3c:1a:
- 07:78:d0:e5:1d:57:1e:4d:a5:77:a9:97:f7:9b:ce:e1:ae:b7:
- 38:3e:13:4c:3b:58:34:cf:7e:86:c1:37:a8:59:4f:09:64:7f:
- d7:bc:d7:a9:a4:0f:1c:16:19:11:ec:ca:7b:f1:bc:4d:a6:aa:
- 1f:f4:1b:a1:40:3d:bc:d4:35:f1:5b:ce:cd:66:aa:92:57:b4:
- b1:61:da:3c:2e:9e:5c:68:fc:47:a6:4e:39:63:85:ba:d7:8e:
- 1f:89:ca:7c:6b:a2:92:36:1b:c9:0b:86:aa:2d:1f:b4:79:cf:
- af:0d:b4:48
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwn0wDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0xNjA1MDEwMDAwMDBaFw0xNzA3MDMwMDAwMDBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCNcJsLEj3lgXAzX/0oLQYxVMTztCfANObR
-BMPjYvwesVSBB/fdpl0xdG0tqfEb4iNJZf4fdqtcGcLsrvCYXfY4Bnlw5dLV47Ok
-NdXPG/5AFDTsTvM6n5Xe2aL+ta5VZpZvouhbjnfW5G9YRt33TsmU/Cxo6ZOz4ync
-s5NDUVdVTYOXRnZs5WyoBM+rf6TclWtTesQDuzFaGswhlMkkxN589ZeblzdQM2wm
-MPaQy0bkssab0pwZLs4leN+thGzUBM9/IEet2MGyK0opcfD2+vsxysr0TKiB3YzU
-5qCsKiKaATI0J+OMYbEcqdM5SEwTQkQuY6Lzz1Tla6+6bgZJoZQPAgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQ1twMGR9KIUvnNf+EnxE25IgQZdTAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEAPuZ01UpIFAROSsSiQCgnh1Vy5eh2pyr6fv7g/CBgl3q1gE+Xbr+oIQVhbHvs
-bLcJddRFrQCuyKupis1Twa9bYR8Nf5gkHyjPj3it8EECngWY2C3cw0MGmBBFabn9
-fvR6GWImtrO+j+8zHpPM5z2FLAVb1mnlRCXEy+1AFOFSwcm1qTxQdnbKgrOXU7yH
-OzwaB3jQ5R1XHk2ld6mX95vO4a63OD4TTDtYNM9+hsE3qFlPCWR/17zXqaQPHBYZ
-EezKe/G8TaaqH/QboUA9vNQ18VvOzWaqkle0sWHaPC6eXGj8R6ZOOWOFuteOH4nK
-fGuikjYbyQuGqi0ftHnPrw20SA==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/prime256v1-ecdsa-ee-by-1024-rsa-intermediate.pem b/src/pki/testdata/ssl/certificates/prime256v1-ecdsa-ee-by-1024-rsa-intermediate.pem
deleted file mode 100644
index 728be76..0000000
--- a/src/pki/testdata/ssl/certificates/prime256v1-ecdsa-ee-by-1024-rsa-intermediate.pem
+++ /dev/null
@@ -1,55 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4 (0x4)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=1024 rsa Test intermediate CA
- Validity
- Not Before: Apr 22 20:28:41 2016 GMT
- Not After : Apr 20 20:28:41 2026 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: id-ecPublicKey
- Public-Key: (256 bit)
- pub:
- 04:ff:00:45:d3:4d:47:ed:e4:11:26:af:71:52:b5:
- e5:75:df:a6:54:84:39:14:97:6f:76:af:ef:3f:c3:
- 77:a5:1f:69:30:b8:7b:ce:ef:fc:89:5e:f4:3f:80:
- 77:66:35:24:67:16:bc:0f:94:51:99:e4:47:74:d3:
- 53:5c:df:64:c7
- ASN1 OID: prime256v1
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 2F:C0:D5:37:41:1C:7D:F1:C6:A4:61:44:77:D1:8F:63:EA:00:E2:12
- X509v3 Authority Key Identifier:
- keyid:AB:91:E6:2B:C9:C1:2E:7B:A0:65:F1:D4:8A:CE:03:4D:F4:7A:18:13
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- 10:cc:07:af:a0:dc:50:d7:9e:27:01:1c:39:69:1b:9b:a6:8e:
- c6:18:75:4a:30:49:a8:7f:a7:4e:72:6a:e2:ef:72:b1:b2:40:
- 32:11:9d:f0:71:df:64:7e:3d:8c:63:4a:a2:01:f8:4e:e4:15:
- db:e3:5a:03:cf:d2:10:cf:19:36:e0:cd:2c:c3:56:45:78:86:
- 5f:4e:54:36:fe:94:00:59:d8:8b:6b:6d:02:8f:f4:4b:d4:98:
- 8a:6f:20:4c:5f:b5:72:0c:5f:f4:f8:c4:19:a7:1c:36:de:3b:
- be:de:ef:2e:4f:96:7a:6a:f4:47:23:7f:cc:c6:8f:27:fe:81:
- a6:85
------BEGIN CERTIFICATE-----
-MIICODCCAaGgAwIBAgIBBDANBgkqhkiG9w0BAQsFADAoMSYwJAYDVQQDDB0xMDI0
-IHJzYSBUZXN0IGludGVybWVkaWF0ZSBDQTAeFw0xNjA0MjIyMDI4NDFaFw0yNjA0
-MjAyMDI4NDFaMGAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYw
-FAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQD
-DAkxMjcuMC4wLjEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAT/AEXTTUft5BEm
-r3FSteV136ZUhDkUl292r+8/w3elH2kwuHvO7/yJXvQ/gHdmNSRnFrwPlFGZ5Ed0
-01Nc32THo4GAMH4wDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUL8DVN0EcffHGpGFE
-d9GPY+oA4hIwHwYDVR0jBBgwFoAUq5HmK8nBLnugZfHUis4DTfR6GBMwHQYDVR0l
-BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA8GA1UdEQQIMAaHBH8AAAEwDQYJKoZI
-hvcNAQELBQADgYEAEMwHr6DcUNeeJwEcOWkbm6aOxhh1SjBJqH+nTnJq4u9ysbJA
-MhGd8HHfZH49jGNKogH4TuQV2+NaA8/SEM8ZNuDNLMNWRXiGX05UNv6UAFnYi2tt
-Ao/0S9SYim8gTF+1cgxf9PjEGaccNt47vt7vLk+Wemr0RyN/zMaPJ/6BpoU=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/prime256v1-ecdsa-ee-by-2048-rsa-intermediate.pem b/src/pki/testdata/ssl/certificates/prime256v1-ecdsa-ee-by-2048-rsa-intermediate.pem
deleted file mode 100644
index 49bbf60..0000000
--- a/src/pki/testdata/ssl/certificates/prime256v1-ecdsa-ee-by-2048-rsa-intermediate.pem
+++ /dev/null
@@ -1,65 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4 (0x4)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=2048 rsa Test intermediate CA
- Validity
- Not Before: Apr 22 20:28:41 2016 GMT
- Not After : Apr 20 20:28:41 2026 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: id-ecPublicKey
- Public-Key: (256 bit)
- pub:
- 04:36:60:16:6f:f7:3e:5f:1f:63:7e:43:cb:a5:a9:
- 77:57:77:86:b7:94:b0:83:03:b4:7f:47:25:88:cf:
- c3:12:53:85:40:65:49:6e:27:e7:93:0e:f9:88:df:
- 8c:ac:1c:07:ef:21:c6:5f:8a:83:ad:de:a3:5a:eb:
- 84:fc:8f:fa:56
- ASN1 OID: prime256v1
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 18:19:4D:A1:C8:87:B6:49:A4:29:F5:DA:95:72:F3:64:41:24:96:C4
- X509v3 Authority Key Identifier:
- keyid:5C:C2:71:76:C1:26:B1:0C:31:73:C8:92:D3:1E:01:12:4B:CC:5A:14
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- 5d:97:40:70:07:0c:8a:2a:f8:5c:10:88:28:7d:a7:1a:db:19:
- 2a:d1:dc:04:09:9e:ca:57:30:80:79:4f:81:d7:05:82:39:97:
- 69:b8:19:7a:55:26:6f:43:d9:74:42:87:b5:1b:7b:d8:48:b1:
- dd:68:36:a5:2c:04:29:5d:9b:9d:3d:53:98:b1:e9:f4:4d:89:
- 8c:24:1a:24:e6:ca:c3:e3:67:a5:8d:19:b6:9b:52:4a:04:79:
- db:ad:47:8c:f9:4f:61:6c:7f:ce:0e:50:1c:a9:d6:b2:a2:77:
- b0:80:e1:f3:d0:a8:8e:e9:20:fa:c5:f5:70:29:3f:a4:0e:f3:
- 07:29:94:93:d7:34:17:a3:17:39:50:e7:d9:7d:6c:f3:2c:a8:
- 0f:87:19:cb:08:13:d8:e1:40:8c:91:95:4d:44:4b:e2:6b:97:
- 74:65:62:fd:53:3b:73:ec:2a:86:f1:05:9e:17:14:60:22:d7:
- 64:3f:f1:ff:1f:8b:7d:8e:b1:37:07:5b:a2:03:e1:18:61:89:
- 3f:38:d2:07:4e:ae:d4:75:22:df:52:58:18:e1:e9:10:a1:8c:
- 76:e3:63:43:96:df:59:74:09:57:54:a7:72:0c:48:d7:52:65:
- ee:eb:bd:62:80:f7:90:12:91:ec:6b:2c:ea:1e:5c:20:77:96:
- f8:2b:25:a5
------BEGIN CERTIFICATE-----
-MIICuTCCAaGgAwIBAgIBBDANBgkqhkiG9w0BAQsFADAoMSYwJAYDVQQDDB0yMDQ4
-IHJzYSBUZXN0IGludGVybWVkaWF0ZSBDQTAeFw0xNjA0MjIyMDI4NDFaFw0yNjA0
-MjAyMDI4NDFaMGAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYw
-FAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQD
-DAkxMjcuMC4wLjEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ2YBZv9z5fH2N+
-Q8ulqXdXd4a3lLCDA7R/RyWIz8MSU4VAZUluJ+eTDvmI34ysHAfvIcZfioOt3qNa
-64T8j/pWo4GAMH4wDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUGBlNociHtkmkKfXa
-lXLzZEEklsQwHwYDVR0jBBgwFoAUXMJxdsEmsQwxc8iS0x4BEkvMWhQwHQYDVR0l
-BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA8GA1UdEQQIMAaHBH8AAAEwDQYJKoZI
-hvcNAQELBQADggEBAF2XQHAHDIoq+FwQiCh9pxrbGSrR3AQJnspXMIB5T4HXBYI5
-l2m4GXpVJm9D2XRCh7Ube9hIsd1oNqUsBCldm509U5ix6fRNiYwkGiTmysPjZ6WN
-GbabUkoEedutR4z5T2Fsf84OUByp1rKid7CA4fPQqI7pIPrF9XApP6QO8wcplJPX
-NBejFzlQ59l9bPMsqA+HGcsIE9jhQIyRlU1ES+Jrl3RlYv1TO3PsKobxBZ4XFGAi
-12Q/8f8fi32OsTcHW6ID4RhhiT840gdOrtR1It9SWBjh6RChjHbjY0OW31l0CVdU
-p3IMSNdSZe7rvWKA95ASkexrLOoeXCB3lvgrJaU=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/prime256v1-ecdsa-ee-by-768-rsa-intermediate.pem b/src/pki/testdata/ssl/certificates/prime256v1-ecdsa-ee-by-768-rsa-intermediate.pem
deleted file mode 100644
index 65b81e5..0000000
--- a/src/pki/testdata/ssl/certificates/prime256v1-ecdsa-ee-by-768-rsa-intermediate.pem
+++ /dev/null
@@ -1,53 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4 (0x4)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=768 rsa Test intermediate CA
- Validity
- Not Before: Apr 22 20:28:41 2016 GMT
- Not After : Apr 20 20:28:41 2026 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: id-ecPublicKey
- Public-Key: (256 bit)
- pub:
- 04:b8:18:a6:f0:2e:2c:00:5c:33:a0:02:29:f4:8e:
- 97:f8:c7:72:82:79:11:09:11:d5:30:95:7e:29:24:
- 68:4b:71:90:3d:74:6b:cb:77:cb:ba:fd:5f:86:91:
- 10:cf:29:28:8f:f1:1c:f6:ac:18:c4:86:ef:15:bb:
- fb:dd:6d:c7:d7
- ASN1 OID: prime256v1
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 16:7F:A6:9F:9D:78:A2:C0:63:49:1C:FF:FF:30:57:23:90:C1:99:10
- X509v3 Authority Key Identifier:
- keyid:9E:E3:A7:83:B0:59:6F:91:9F:C7:D5:34:61:4A:1A:B3:66:C7:44:A0
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- bc:f2:7a:f2:cb:90:e4:e5:dc:ed:bb:69:e5:24:cd:a9:46:a4:
- f9:ee:19:d1:73:08:6c:be:cb:90:7f:d1:1e:b8:09:07:83:4a:
- 42:b7:12:11:ea:3e:ab:8b:e4:f7:cd:d9:94:db:c5:01:1b:d4:
- f5:f9:be:22:b0:39:72:b6:89:6d:99:cc:43:fd:09:bb:00:a5:
- 51:b0:ee:97:94:e9:d2:86:96:e4:52:f7:76:77:d2:40:37:96:
- 38:cd:f3:59:38:54
------BEGIN CERTIFICATE-----
-MIICFjCCAaCgAwIBAgIBBDANBgkqhkiG9w0BAQsFADAnMSUwIwYDVQQDDBw3Njgg
-cnNhIFRlc3QgaW50ZXJtZWRpYXRlIENBMB4XDTE2MDQyMjIwMjg0MVoXDTI2MDQy
-MDIwMjg0MVowYDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAU
-BgNVBAcMDU1vdW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExEjAQBgNVBAMM
-CTEyNy4wLjAuMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLgYpvAuLABcM6AC
-KfSOl/jHcoJ5EQkR1TCVfikkaEtxkD10a8t3y7r9X4aREM8pKI/xHPasGMSG7xW7
-+91tx9ejgYAwfjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQWf6afnXiiwGNJHP//
-MFcjkMGZEDAfBgNVHSMEGDAWgBSe46eDsFlvkZ/H1TRhShqzZsdEoDAdBgNVHSUE
-FjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG
-9w0BAQsFAANhALzyevLLkOTl3O27aeUkzalGpPnuGdFzCGy+y5B/0R64CQeDSkK3
-EhHqPquL5PfN2ZTbxQEb1PX5viKwOXK2iW2ZzEP9CbsApVGw7peU6dKGluRS93Z3
-0kA3ljjN81k4VA==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/prime256v1-ecdsa-ee-by-prime256v1-ecdsa-intermediate.pem b/src/pki/testdata/ssl/certificates/prime256v1-ecdsa-ee-by-prime256v1-ecdsa-intermediate.pem
deleted file mode 100644
index 763bec7..0000000
--- a/src/pki/testdata/ssl/certificates/prime256v1-ecdsa-ee-by-prime256v1-ecdsa-intermediate.pem
+++ /dev/null
@@ -1,50 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4 (0x4)
- Signature Algorithm: ecdsa-with-SHA256
- Issuer: CN=prime256v1 ecdsa Test intermediate CA
- Validity
- Not Before: Apr 22 20:28:41 2016 GMT
- Not After : Apr 20 20:28:41 2026 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: id-ecPublicKey
- Public-Key: (256 bit)
- pub:
- 04:f5:4f:70:de:c3:d2:11:bb:c8:08:6e:4c:63:d8:
- 13:80:10:b0:b8:e9:df:9c:fa:d0:f4:e3:61:5e:1e:
- 1f:fe:65:8e:4b:a9:3f:d4:47:9f:71:e9:89:82:82:
- d8:10:63:fa:af:37:5b:3b:d1:da:56:05:da:a2:20:
- e1:20:37:c3:c0
- ASN1 OID: prime256v1
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 7E:DD:18:69:14:9C:D6:E5:9C:DD:47:DB:87:60:79:AD:01:07:9A:66
- X509v3 Authority Key Identifier:
- keyid:0D:6B:B6:D7:DD:7F:CD:4E:AD:06:6B:22:E1:11:08:58:10:AB:16:2A
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: ecdsa-with-SHA256
- 30:45:02:20:25:fd:ba:76:81:1b:d3:25:17:82:31:ad:73:72:
- 50:94:ac:e3:69:a6:b1:58:fe:b7:5e:48:ed:23:0d:a2:05:40:
- 02:21:00:d5:0e:02:63:c9:1c:7a:5a:10:13:1e:b8:05:87:71:
- 9c:b5:e2:66:cb:27:c8:17:b3:b1:68:29:c4:5e:b9:ac:5f
------BEGIN CERTIFICATE-----
-MIICADCCAaagAwIBAgIBBDAKBggqhkjOPQQDAjAwMS4wLAYDVQQDDCVwcmltZTI1
-NnYxIGVjZHNhIFRlc3QgaW50ZXJtZWRpYXRlIENBMB4XDTE2MDQyMjIwMjg0MVoX
-DTI2MDQyMDIwMjg0MVowYDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3Ju
-aWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExEjAQ
-BgNVBAMMCTEyNy4wLjAuMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPVPcN7D
-0hG7yAhuTGPYE4AQsLjp35z60PTjYV4eH/5ljkupP9RHn3HpiYKC2BBj+q83WzvR
-2lYF2qIg4SA3w8CjgYAwfjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBR+3RhpFJzW
-5ZzdR9uHYHmtAQeaZjAfBgNVHSMEGDAWgBQNa7bX3X/NTq0GayLhEQhYEKsWKjAd
-BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATAK
-BggqhkjOPQQDAgNIADBFAiAl/bp2gRvTJReCMa1zclCUrONpprFY/rdeSO0jDaIF
-QAIhANUOAmPJHHpaEBMeuAWHcZy14mbLJ8gXs7FoKcReuaxf
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/prime256v1-ecdsa-intermediate.pem b/src/pki/testdata/ssl/certificates/prime256v1-ecdsa-intermediate.pem
deleted file mode 100644
index 79470be..0000000
--- a/src/pki/testdata/ssl/certificates/prime256v1-ecdsa-intermediate.pem
+++ /dev/null
@@ -1,58 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4 (0x4)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=2048 RSA Test Root CA
- Validity
- Not Before: Apr 22 20:28:41 2016 GMT
- Not After : Apr 20 20:28:41 2026 GMT
- Subject: CN=prime256v1 ecdsa Test intermediate CA
- Subject Public Key Info:
- Public Key Algorithm: id-ecPublicKey
- Public-Key: (256 bit)
- pub:
- 04:d5:c1:4a:32:95:95:c5:88:fa:01:fa:c5:9e:dc:
- e2:99:62:eb:13:e5:35:42:b3:7a:fc:46:c0:fa:29:
- 12:c8:2d:ea:30:0f:d2:9a:47:97:2c:7e:89:e6:ef:
- 49:55:06:c9:37:c7:99:56:16:b2:2b:c9:7c:69:8e:
- 10:7a:dd:1f:42
- ASN1 OID: prime256v1
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- 0D:6B:B6:D7:DD:7F:CD:4E:AD:06:6B:22:E1:11:08:58:10:AB:16:2A
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha256WithRSAEncryption
- 58:01:f0:a4:cb:85:85:72:db:7c:15:af:95:9d:b0:8e:a9:1a:
- 43:ef:d3:a8:15:1b:37:2c:c3:5b:9a:b3:c2:24:88:1b:58:7e:
- 9c:9b:3e:8f:02:06:47:35:85:b7:65:8d:25:72:2d:d3:e9:5f:
- 3a:f9:62:b1:af:43:bc:3d:d8:f9:ef:9d:c4:c7:65:96:db:67:
- 20:ef:b7:3d:40:a0:d3:a4:ad:3e:f9:d1:2e:d7:fd:9d:25:72:
- 82:f5:7f:ce:75:f7:86:77:c7:52:6d:c9:10:13:46:04:88:09:
- cf:1a:f0:f2:e1:9c:2f:d7:c8:17:32:57:8a:5b:78:36:1c:76:
- 31:24:be:3d:29:5b:3e:92:ca:d5:e0:2c:3e:1c:72:a9:b6:f3:
- a9:28:72:8c:e4:cf:ea:fe:ca:af:21:8a:dc:6f:f9:84:7c:16:
- 34:5b:d8:21:b5:ec:b5:84:dc:b7:ef:41:e8:5b:74:0b:19:c9:
- d5:e1:ef:f2:05:33:de:92:24:27:9b:70:ad:e2:9d:8e:42:ca:
- 98:30:5f:f4:32:81:aa:11:bb:10:dc:e6:86:f5:6f:75:70:22:
- 62:29:47:84:36:17:e6:ee:ae:e9:7e:86:ae:dc:bf:81:52:7a:
- 30:7e:f9:35:31:11:cb:ec:1c:8e:ed:32:9e:96:32:9f:05:6f:
- 9c:cb:c9:db
------BEGIN CERTIFICATE-----
-MIICQjCCASqgAwIBAgIBBDANBgkqhkiG9w0BAQsFADAgMR4wHAYDVQQDDBUyMDQ4
-IFJTQSBUZXN0IFJvb3QgQ0EwHhcNMTYwNDIyMjAyODQxWhcNMjYwNDIwMjAyODQx
-WjAwMS4wLAYDVQQDDCVwcmltZTI1NnYxIGVjZHNhIFRlc3QgaW50ZXJtZWRpYXRl
-IENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1cFKMpWVxYj6AfrFntzimWLr
-E+U1QrN6/EbA+ikSyC3qMA/SmkeXLH6J5u9JVQbJN8eZVhayK8l8aY4Qet0fQqNC
-MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUDWu2191/zU6tBmsi4REIWBCr
-FiowDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQBYAfCky4WFctt8
-Fa+VnbCOqRpD79OoFRs3LMNbmrPCJIgbWH6cmz6PAgZHNYW3ZY0lci3T6V86+WKx
-r0O8Pdj5753Ex2WW22cg77c9QKDTpK0++dEu1/2dJXKC9X/OdfeGd8dSbckQE0YE
-iAnPGvDy4Zwv18gXMleKW3g2HHYxJL49KVs+ksrV4Cw+HHKptvOpKHKM5M/q/sqv
-IYrcb/mEfBY0W9ghtey1hNy370HoW3QLGcnV4e/yBTPekiQnm3Ct4p2OQsqYMF/0
-MoGqEbsQ3OaG9W91cCJiKUeENhfm7q7pfoau3L+BUnowfvk1MRHL7ByO7TKeljKf
-BW+cy8nb
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/punycodetest.pem b/src/pki/testdata/ssl/certificates/punycodetest.pem
deleted file mode 100644
index 59d3172..0000000
--- a/src/pki/testdata/ssl/certificates/punycodetest.pem
+++ /dev/null
@@ -1,78 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 44:ff:47:5b:37:71:65:69:6a:02:40:fd:0c:fb:7b:a0:70:f4:8d:5d
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN = xn--wgv71a119e.com
- Validity
- Not Before: Oct 3 17:20:10 2022 GMT
- Not After : Sep 30 17:20:10 2032 GMT
- Subject: CN = xn--wgv71a119e.com
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:b1:2e:20:9b:56:83:a2:e8:0e:6a:06:53:ea:8b:
- a3:2e:a1:ca:a7:ad:f5:6f:66:3d:13:77:52:66:9d:
- ec:63:1d:66:7e:58:90:56:7e:7d:32:a0:ec:43:14:
- 29:90:9b:00:53:37:a9:bf:bc:bf:86:f0:89:5b:4f:
- 64:98:4b:71:d8:b3:2d:75:10:28:67:b1:e4:80:f0:
- 4e:3c:28:79:56:83:ab:a9:65:e7:fa:b8:d6:f6:b9:
- 21:61:a2:a1:eb:a4:80:43:4e:ab:93:d1:95:00:03:
- 91:c1:36:b0:66:47:f9:60:0a:70:37:08:cb:a4:cc:
- 6e:85:1c:4e:c1:98:88:a8:18:5d:75:4e:7b:63:1d:
- 4b:e9:1c:5f:f4:e0:72:be:c6:b0:cd:02:e8:25:4a:
- 98:be:bf:9a:0d:93:74:4a:0b:bd:45:71:87:92:4a:
- 39:d3:a3:96:d8:7f:2e:d4:e9:5a:3b:54:de:0f:87:
- dc:d1:c6:cb:f7:73:d7:0f:3d:d1:ce:7c:5a:fc:64:
- 91:15:ff:37:1b:25:05:83:0c:d3:d2:07:0a:7c:43:
- 54:47:99:d2:fd:79:1e:35:a4:16:a4:b8:f1:f6:8b:
- 37:b4:26:9d:07:63:33:d0:c9:18:50:d1:3a:ad:2c:
- 62:90:d1:b8:36:58:51:77:6b:8a:ff:f1:bd:4e:fc:
- 74:83
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Alternative Name:
- DNS:xn--wgv71a119e.com, DNS:*.xn--wgv71a119e.com, DNS:blahblahblahblah.com
- X509v3 Subject Key Identifier:
- C6:0C:83:61:1D:BC:65:F4:0D:48:28:F5:00:9F:B3:84:0D:A4:B6:86
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 93:15:4f:06:9c:44:ae:f9:ce:f4:02:aa:81:94:7e:4e:38:4c:
- 5d:cb:98:c2:e6:92:9f:bd:74:2a:43:af:d7:b6:68:cb:ff:49:
- d5:ec:6f:4c:3b:1a:92:1f:8d:42:d0:98:2e:20:33:be:bb:06:
- 9a:62:fa:6f:d5:de:a4:f6:d7:ad:64:c0:ef:c2:e6:7b:f9:59:
- c3:97:be:95:ee:c8:ab:84:f0:a4:f5:99:aa:63:4b:bd:a6:0b:
- 13:87:c8:17:5e:99:51:93:ec:88:38:4b:c3:91:92:af:5d:5d:
- 05:5b:70:0c:de:fd:1a:89:ed:53:14:b3:05:04:bf:2c:5a:12:
- c6:20:7e:c0:31:42:b2:98:84:3f:71:89:85:ba:8c:8f:8e:40:
- c7:00:e6:b4:63:90:1e:0a:a1:e8:72:96:8a:ca:6b:a0:92:ec:
- a6:b9:4f:ca:24:27:74:84:f6:f4:ac:e6:f1:12:6e:36:3c:1a:
- a0:79:aa:ab:48:b3:db:a4:56:86:d8:30:14:e9:bc:2c:99:37:
- a4:60:ea:2f:6d:5b:66:13:a3:20:f4:84:07:de:24:20:61:5c:
- 51:b8:bf:28:89:a8:0d:c7:10:34:52:8e:53:49:af:92:b0:e0:
- bf:31:9a:40:7d:dd:af:03:72:12:84:82:27:75:cf:0d:d7:bf:
- 84:b9:b2:7c
------BEGIN CERTIFICATE-----
-MIIDRTCCAi2gAwIBAgIURP9HWzdxZWlqAkD9DPt7oHD0jV0wDQYJKoZIhvcNAQEL
-BQAwHTEbMBkGA1UEAwwSeG4tLXdndjcxYTExOWUuY29tMB4XDTIyMTAwMzE3MjAx
-MFoXDTMyMDkzMDE3MjAxMFowHTEbMBkGA1UEAwwSeG4tLXdndjcxYTExOWUuY29t
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsS4gm1aDougOagZT6ouj
-LqHKp631b2Y9E3dSZp3sYx1mfliQVn59MqDsQxQpkJsAUzepv7y/hvCJW09kmEtx
-2LMtdRAoZ7HkgPBOPCh5VoOrqWXn+rjW9rkhYaKh66SAQ06rk9GVAAORwTawZkf5
-YApwNwjLpMxuhRxOwZiIqBhddU57Yx1L6Rxf9OByvsawzQLoJUqYvr+aDZN0Sgu9
-RXGHkko506OW2H8u1OlaO1TeD4fc0cbL93PXDz3Rznxa/GSRFf83GyUFgwzT0gcK
-fENUR5nS/XkeNaQWpLjx9os3tCadB2Mz0MkYUNE6rSxikNG4NlhRd2uK//G9Tvx0
-gwIDAQABo30wezAPBgNVHRMBAf8EBTADAQH/MEkGA1UdEQRCMECCEnhuLS13Z3Y3
-MWExMTllLmNvbYIUKi54bi0td2d2NzFhMTE5ZS5jb22CFGJsYWhibGFoYmxhaGJs
-YWguY29tMB0GA1UdDgQWBBTGDINhHbxl9A1IKPUAn7OEDaS2hjANBgkqhkiG9w0B
-AQsFAAOCAQEAkxVPBpxErvnO9AKqgZR+TjhMXcuYwuaSn710KkOv17Zoy/9J1exv
-TDsakh+NQtCYLiAzvrsGmmL6b9XepPbXrWTA78Lme/lZw5e+le7Iq4TwpPWZqmNL
-vaYLE4fIF16ZUZPsiDhLw5GSr11dBVtwDN79GontUxSzBQS/LFoSxiB+wDFCspiE
-P3GJhbqMj45AxwDmtGOQHgqh6HKWisproJLsprlPyiQndIT29Kzm8RJuNjwaoHmq
-q0iz26RWhtgwFOm8LJk3pGDqL21bZhOjIPSEB94kIGFcUbi/KImoDccQNFKOU0mv
-krDgvzGaQH3drwNyEoSCJ3XPDde/hLmyfA==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/quic-chain.pem b/src/pki/testdata/ssl/certificates/quic-chain.pem
deleted file mode 100644
index ab0893b..0000000
--- a/src/pki/testdata/ssl/certificates/quic-chain.pem
+++ /dev/null
@@ -1,147 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 1 (0x1)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Test Intermediate CA
- Validity
- Not Before: Dec 18 23:44:03 2017 GMT
- Not After : Dec 16 23:44:03 2027 GMT
- Subject: CN=test.example.com
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:b2:56:6f:7e:d4:b4:b6:4e:e3:15:8e:8a:e9:46:
- 06:15:63:4c:6d:3a:32:67:c7:14:a4:17:fc:b7:04:
- 98:fb:b5:11:ae:93:1c:20:73:15:cd:b3:bc:ee:61:
- 82:8e:cb:b8:78:ca:6d:e6:57:73:f3:45:6e:1e:c3:
- 27:5d:af:5e:52:6d:12:47:44:72:3d:7d:8a:c1:47:
- 50:19:4a:21:a4:08:b4:cc:2e:9c:a2:2a:ce:1b:87:
- 82:ae:3a:23:b0:dd:d2:3e:64:fe:ce:a6:35:34:93:
- 07:f8:88:6e:c8:be:b2:0b:5f:9c:96:0e:79:1c:a3:
- 2b:c9:23:5a:8a:1f:1e:17:e2:a9:d4:3c:49:22:29:
- 43:fa:63:55:3c:72:62:4a:d1:72:5a:ae:75:a8:14:
- 67:eb:58:88:ce:11:0c:bf:09:67:f2:bb:c8:80:3e:
- 4a:f0:35:ad:d2:dc:43:a3:2f:da:c6:3b:1c:6e:76:
- 70:31:73:cc:33:5b:4f:36:dc:f3:8f:9f:a6:07:6d:
- 61:e0:66:6f:2c:76:bd:85:a3:8b:d0:8a:ce:c4:bc:
- 97:e0:ed:e1:29:df:a1:62:b9:ad:d8:0f:1a:f8:ae:
- 44:fe:a6:28:95:c4:cc:df:b5:f7:6d:46:ae:ef:9b:
- af:73:50:1d:9f:f0:c7:a0:ef:37:4b:13:73:96:24:
- 95:0f
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- DNS:test.example.com
- Signature Algorithm: sha256WithRSAEncryption
- bd:55:54:e5:ac:2b:e6:6f:c9:45:b7:77:97:af:37:e6:6b:60:
- cb:51:0f:b0:2c:40:71:39:73:7a:0b:6f:37:a5:cc:40:4f:d1:
- 43:3d:8e:1d:37:ba:ff:2d:7b:80:21:fd:ec:e4:7c:20:6a:ce:
- 6e:28:9b:c1:4e:9e:1e:17:1f:cb:04:61:c1:d0:72:0c:31:f6:
- ee:2b:a9:9c:29:6b:45:bd:97:57:a6:25:f3:f0:6b:08:3f:4e:
- 00:33:cf:47:3b:50:4a:15:a7:a0:c8:e0:8b:86:7b:48:3e:39:
- 15:00:0a:aa:79:3c:8d:fd:d7:4a:68:2f:05:2b:60:2a:d1:7e:
- 1c:bc:06:e9:b7:51:35:71:d7:6b:f4:b8:f3:17:d7:f1:d4:8d:
- f8:0e:4a:11:34:4d:d9:19:70:33:0a:66:e6:4c:11:93:90:5c:
- 5d:a1:f3:8a:1c:ce:0c:12:5e:a9:6b:e1:1f:eb:b3:65:b8:bc:
- 1a:48:af:cc:af:fc:db:3e:0b:32:47:8d:fc:ed:b3:50:9a:65:
- b8:19:eb:db:18:21:5f:e4:1d:c5:87:57:9b:5a:8a:59:16:84:
- 8d:27:3e:f9:7a:c0:fa:e7:84:90:da:1a:03:98:b5:c6:a9:52:
- ed:df:0e:7a:02:c7:e6:82:d2:06:cb:97:75:90:89:d6:d1:cf:
- 43:74:09:f7
------BEGIN CERTIFICATE-----
-MIIDATCCAemgAwIBAgIBATANBgkqhkiG9w0BAQsFADAfMR0wGwYDVQQDDBRUZXN0
-IEludGVybWVkaWF0ZSBDQTAeFw0xNzEyMTgyMzQ0MDNaFw0yNzEyMTYyMzQ0MDNa
-MBsxGTAXBgNVBAMMEHRlc3QuZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUA
-A4IBDwAwggEKAoIBAQCyVm9+1LS2TuMVjorpRgYVY0xtOjJnxxSkF/y3BJj7tRGu
-kxwgcxXNs7zuYYKOy7h4ym3mV3PzRW4ewyddr15SbRJHRHI9fYrBR1AZSiGkCLTM
-LpyiKs4bh4KuOiOw3dI+ZP7OpjU0kwf4iG7IvrILX5yWDnkcoyvJI1qKHx4X4qnU
-PEkiKUP6Y1U8cmJK0XJarnWoFGfrWIjOEQy/CWfyu8iAPkrwNa3S3EOjL9rGOxxu
-dnAxc8wzW0823POPn6YHbWHgZm8sdr2Fo4vQis7EvJfg7eEp36Fiua3YDxr4rkT+
-piiVxMzftfdtRq7vm69zUB2f8Meg7zdLE3OWJJUPAgMBAAGjTDBKMAwGA1UdEwEB
-/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBsGA1UdEQQUMBKC
-EHRlc3QuZXhhbXBsZS5jb20wDQYJKoZIhvcNAQELBQADggEBAL1VVOWsK+ZvyUW3
-d5evN+ZrYMtRD7AsQHE5c3oLbzelzEBP0UM9jh03uv8te4Ah/ezkfCBqzm4om8FO
-nh4XH8sEYcHQcgwx9u4rqZwpa0W9l1emJfPwawg/TgAzz0c7UEoVp6DI4IuGe0g+
-ORUACqp5PI3910poLwUrYCrRfhy8Bum3UTVx12v0uPMX1/HUjfgOShE0TdkZcDMK
-ZuZMEZOQXF2h84oczgwSXqlr4R/rs2W4vBpIr8yv/Ns+CzJHjfzts1CaZbgZ69sY
-IV/kHcWHV5tailkWhI0nPvl6wPrnhJDaGgOYtcapUu3fDnoCx+aC0gbLl3WQidbR
-z0N0Cfc=
------END CERTIFICATE-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 1 (0x1)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=Test Root CA
- Validity
- Not Before: Dec 18 23:44:03 2017 GMT
- Not After : Dec 16 23:44:03 2027 GMT
- Subject: CN=Test Intermediate CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:e4:cd:89:4c:65:4f:4d:68:bd:2a:7a:4f:0b:10:
- 3f:02:d6:2a:5b:5b:76:c8:97:59:67:19:6e:95:45:
- c3:38:a4:c7:29:f5:f7:95:52:97:a3:01:19:b2:b3:
- ec:09:97:08:4f:f1:db:43:67:50:59:ac:ca:9a:05:
- 56:fc:73:42:f3:90:e1:e5:3e:03:75:35:33:d2:df:
- aa:3d:f8:ca:16:5e:7e:ef:01:9c:2a:30:eb:c7:cc:
- 06:04:90:14:c0:54:f5:96:22:26:30:39:73:c5:c0:
- 9d:0d:b0:9f:b0:e5:cf:f6:b1:0c:10:ab:f0:c9:54:
- a6:30:d5:b4:fd:a7:23:7f:1e:57:7b:72:d7:af:0d:
- a2:3e:4d:b2:c5:51:70:2a:06:2f:66:21:ca:7f:7d:
- 6b:60:24:5e:ed:5f:74:ee:4b:b1:f1:ec:54:a0:fb:
- 89:05:69:94:78:9b:a4:85:8c:ea:e6:b5:d6:fd:c5:
- 6d:98:28:e4:1d:81:1b:26:3b:21:c2:e4:df:bd:a1:
- 0d:51:35:40:43:a0:a4:00:66:fa:97:46:d6:9d:95:
- ca:da:62:f8:c7:60:6c:e4:89:c2:d0:74:30:fe:2a:
- db:54:95:5b:68:5f:ca:bd:e9:af:27:13:fc:c4:6f:
- e6:5d:05:92:cc:bc:e4:76:8a:2e:34:0b:5e:39:11:
- 75:57
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha256WithRSAEncryption
- 60:4e:38:f3:7b:00:46:75:8f:d0:4e:08:76:2d:ed:9f:bf:cc:
- 50:1b:bf:e4:6d:76:50:fe:fa:7d:46:90:1c:75:f1:3f:47:19:
- eb:02:38:cb:3e:56:0f:8f:09:ae:a8:42:d0:e6:5a:31:54:24:
- b2:fe:4b:a2:e4:44:14:64:44:d8:50:12:62:4a:06:60:29:22:
- 95:bb:c8:7e:dd:d4:7d:a6:dd:3c:0d:fb:71:67:6f:9b:49:05:
- 09:7c:5c:63:2b:df:71:aa:ae:92:28:98:73:c2:60:b6:54:10:
- f6:f5:54:d6:93:0a:22:56:0a:fd:45:8a:a4:d7:a7:21:df:f5:
- 53:07:1c:3b:63:c1:7c:4e:f0:3d:5c:c4:c9:cc:55:ae:ec:fb:
- 2e:4f:b0:f9:5b:1d:c3:46:ba:38:f6:ff:8d:b3:3b:d0:7d:15:
- 3f:fd:6a:bd:a1:59:18:ff:57:fc:d6:c0:3d:7e:75:61:ff:13:
- 09:81:5f:38:82:22:78:78:97:5e:e6:7c:fb:16:a8:92:40:97:
- eb:7c:a5:37:da:ca:5f:28:69:e4:63:b7:07:61:ad:e8:5a:e8:
- 06:55:c0:34:7c:30:66:1e:9a:7e:ed:cb:c8:14:c1:e3:b3:ac:
- 8d:89:9c:6b:b1:ea:eb:71:94:c0:1d:63:b7:d9:82:74:13:0c:
- ee:8a:ca:dc
------BEGIN CERTIFICATE-----
-MIIC1DCCAbygAwIBAgIBATANBgkqhkiG9w0BAQsFADAXMRUwEwYDVQQDDAxUZXN0
-IFJvb3QgQ0EwHhcNMTcxMjE4MjM0NDAzWhcNMjcxMjE2MjM0NDAzWjAfMR0wGwYD
-VQQDDBRUZXN0IEludGVybWVkaWF0ZSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
-ADCCAQoCggEBAOTNiUxlT01ovSp6TwsQPwLWKltbdsiXWWcZbpVFwzikxyn195VS
-l6MBGbKz7AmXCE/x20NnUFmsypoFVvxzQvOQ4eU+A3U1M9Lfqj34yhZefu8BnCow
-68fMBgSQFMBU9ZYiJjA5c8XAnQ2wn7Dlz/axDBCr8MlUpjDVtP2nI38eV3ty168N
-oj5NssVRcCoGL2Yhyn99a2AkXu1fdO5LsfHsVKD7iQVplHibpIWM6ua11v3FbZgo
-5B2BGyY7IcLk372hDVE1QEOgpABm+pdG1p2Vytpi+MdgbOSJwtB0MP4q21SVW2hf
-yr3prycT/MRv5l0Fksy85HaKLjQLXjkRdVcCAwEAAaMjMCEwDwYDVR0TAQH/BAUw
-AwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAGBOOPN7AEZ1
-j9BOCHYt7Z+/zFAbv+RtdlD++n1GkBx18T9HGesCOMs+Vg+PCa6oQtDmWjFUJLL+
-S6LkRBRkRNhQEmJKBmApIpW7yH7d1H2m3TwN+3Fnb5tJBQl8XGMr33GqrpIomHPC
-YLZUEPb1VNaTCiJWCv1FiqTXpyHf9VMHHDtjwXxO8D1cxMnMVa7s+y5PsPlbHcNG
-ujj2/42zO9B9FT/9ar2hWRj/V/zWwD1+dWH/EwmBXziCInh4l17mfPsWqJJAl+t8
-pTfayl8oaeRjtwdhreha6AZVwDR8MGYemn7ty8gUweOzrI2JnGux6utxlMAdY7fZ
-gnQTDO6Kytw=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/quic-ecdsa-leaf.key b/src/pki/testdata/ssl/certificates/quic-ecdsa-leaf.key
deleted file mode 100644
index b3e47c7..0000000
--- a/src/pki/testdata/ssl/certificates/quic-ecdsa-leaf.key
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/quic-leaf-cert.key b/src/pki/testdata/ssl/certificates/quic-leaf-cert.key
deleted file mode 100644
index e509d72..0000000
--- a/src/pki/testdata/ssl/certificates/quic-leaf-cert.key
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/quic-leaf-cert.key.pkcs8.pem b/src/pki/testdata/ssl/certificates/quic-leaf-cert.key.pkcs8.pem
deleted file mode 100644
index 00983fc..0000000
--- a/src/pki/testdata/ssl/certificates/quic-leaf-cert.key.pkcs8.pem
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCyVm9+1LS2TuMV
-jorpRgYVY0xtOjJnxxSkF/y3BJj7tRGukxwgcxXNs7zuYYKOy7h4ym3mV3PzRW4e
-wyddr15SbRJHRHI9fYrBR1AZSiGkCLTMLpyiKs4bh4KuOiOw3dI+ZP7OpjU0kwf4
-iG7IvrILX5yWDnkcoyvJI1qKHx4X4qnUPEkiKUP6Y1U8cmJK0XJarnWoFGfrWIjO
-EQy/CWfyu8iAPkrwNa3S3EOjL9rGOxxudnAxc8wzW0823POPn6YHbWHgZm8sdr2F
-o4vQis7EvJfg7eEp36Fiua3YDxr4rkT+piiVxMzftfdtRq7vm69zUB2f8Meg7zdL
-E3OWJJUPAgMBAAECggEAWhFzcB/nQOfoonuCRrxZ2DV1ZPjueiE+mH2Q4bINvZo+
-WufrXawiB+jN86sFsC7NdRvvk1T5t5SKQDkZyaQHRCPYBmxYMhwUlvb4Sj15bgoD
-ndewvepWe+rdoja0zd/KDj8dvaqN1oankOr+4J4G992LDPI0UrVKKOSVFosOvMqh
-zAJy19KGzfSzBU40xnWk4MEq7ZPksdeMFN5Dv+C4lFCmd/ddTFQ7EcqeSRqv2JCC
-fAH9wF6GFUXfYqU7h3CTt686kxhbgle4U5rzr126ByZjysAKv5OnNOEDlNi8D5og
-SX/vjuek8eL3Ypmho1Wch+f3w315gs8KWQjx0lcv+QKBgQDlvCRPat/qu0v/hsE7
-iopkV5I3AghzfNXzaHFrwgkXFXu+pArTk3r22aY3strAXfiYp7Blz10+LUrZyvB6
-0wa//Mk3nZ67BcViy1HykJJd6hHXYXxqih8Ig0JQJrD12iEwo3RUZ/G+L4EVOcG/
-kS/C8sUbp3j6mqxJe18xgvCF0wKBgQDGugDL8xfzuqTT3XPhCTmUL1nAO3Xv0vRb
-Vuzx0bFeGvAPHWFAb2FtEkXc4pDCPb+73q9ByBwukVB0nPpiaPzlJHGMocBANxh6
-tvO/XMcfmQmhQ+2yXgXEb7/RamULdjn7dlE+0l8kvCI37LYB/lPq2cdA1vnugxkB
-55fls4GCVQKBgQC35snyQQ2KK/CEVmzsqtRpyqgjHJ+DQ1VJijvxFNyN/AaY71wz
-TgXLASPLxoLSJudP3Dya40oy8bLPcWLcD32BxmuU97oO4GnH0haBZDWmtC8gCMu9
-xV9eQyScYLybsceL1ezTfHnJ0uE0Co4MOb7QAeLDZmazxYlRMU9cpQLBPQKBgQCT
-yYwCIHy1kx41OUGOH3AklbonTZD9k2KJ8vEvPQSsuVfBxdWnN626kZZHGG8TJRzL
-uGWZhBoBP6wXrQ4/1VgNiLaxITF6D/8yc5B9xZ+IDiWtOnkw5t9fIMQEFx2iEoA4
-U9tD3utGxGqmMHGCtgLuaprVy4n/KJuWYQcDmiU8KQKBgQClNWD+p5caD82Z4QB5
-Y/lTbjmmF4nLHlwfLpWI+nJ76kvFMnLYgJY8oZgBwBZsEkQG8so/nejBFsYvIDeR
-5W7cQVJ+ED8GCF9O4H77U0R8rpuL4z61ni4rXHc9+rABaHBHJ1aF8h3SlceHVdow
-FBU427jUeVKBN9UnFo4wrogjMA==
------END PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/quic-leaf-cert.key.sct b/src/pki/testdata/ssl/certificates/quic-leaf-cert.key.sct
deleted file mode 100644
index 0d19282..0000000
--- a/src/pki/testdata/ssl/certificates/quic-leaf-cert.key.sct
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/quic-root.pem b/src/pki/testdata/ssl/certificates/quic-root.pem
deleted file mode 100644
index f25cd2e..0000000
--- a/src/pki/testdata/ssl/certificates/quic-root.pem
+++ /dev/null
@@ -1,18 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIC1DCCAbygAwIBAgIJANU1FI5oBbmLMA0GCSqGSIb3DQEBCwUAMBcxFTATBgNV
-BAMMDFRlc3QgUm9vdCBDQTAeFw0xNzEyMTgyMzQ0MDNaFw0yNzEyMTYyMzQ0MDNa
-MBcxFTATBgNVBAMMDFRlc3QgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
-ADCCAQoCggEBALqSSRbDX0cmxTOeBh4qqMtw8BA7J8l6CYZqeUgigR67xAvJGEqx
-WhYDBjodWIYucrwqkRuju1ufRXVNAD8rqs47db5NPDHH+FqN33RkSa9XIdOGdnHX
-NfCQ13Vpq9tnvZ3zCzvSWXDVYz6GcCBJ51tjWNZtX8O8N179HcVef3LhBGweAJJv
-+FkOLiClZ1y2A5hfdmuYmIYy2Iwc7we/R6jm+Ns0pVA8NrLicEHzrxJLMlMD5+zd
-WjkY6Bv9OdPipmEr1/EP3957bZ7uIUZWEq79SnQ90sKkMVS+q7Ckz7PdMBJI+fZc
-HsjucLXL0tysbcF+CtYqHsbrazye0yERUFECAwEAAaMjMCEwDwYDVR0TAQH/BAUw
-AwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAJZRG2cJGaGF
-Tl8H6+SltT9dlZ//Z7ZNsWEfv8xehGrRHsV2kxXvuVf1K4EpP3FAEvDJgOvP1MkA
-rmcpI9SsY4cr0Zy/s+Ez8SwespXkSKvtCXCmq9/kpadFPDWwR1NAXVzSEuhXJxDR
-bA+boLCu6rMFbkoRi/aFYzro+9m8RsXlyYGVGspov411lu56huoJ3ooGTIfQM8or
-N6ZNWkb+RTUUj29o3qr3kiQv73mB6h47/3IkYC5mITl+vK3OtwIRwjLzXZuS40/W
-RlI+SRYG4/yTzgV1DB4JlVJl4qMsF3z1zY1P7WeCU4YqZoIam/Ig/ZzxfOFTczk8
-vw1/E4YbkfE=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/quic-short-lived.pem b/src/pki/testdata/ssl/certificates/quic-short-lived.pem
deleted file mode 100644
index ef24357..0000000
--- a/src/pki/testdata/ssl/certificates/quic-short-lived.pem
+++ /dev/null
@@ -1,42 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 14:95:0e:b4:a9:33:04:9b:ed:a5:47:b9:c8:0f:12:14:57:d1:66:ff
- Signature Algorithm: ecdsa-with-SHA256
- Issuer: CN = Short-lived Certificate
- Validity
- Not Before: Jun 5 19:49:12 2020 GMT
- Not After : Jun 19 19:49:12 2020 GMT
- Subject: CN = Short-lived Certificate
- Subject Public Key Info:
- Public Key Algorithm: id-ecPublicKey
- Public-Key: (256 bit)
- pub:
- 04:42:8a:75:3b:89:02:17:c3:97:d9:35:3c:ac:9a:
- 46:a4:46:fa:17:cc:5d:0a:4c:6a:a3:88:7c:ff:44:
- c5:96:af:6d:3b:17:76:d1:59:54:23:cc:16:05:96:
- 29:9e:2c:f4:a7:9b:c4:42:3b:21:4e:ac:bd:8f:57:
- 92:2b:fe:8f:85
- ASN1 OID: prime256v1
- NIST CURVE: P-256
- X509v3 extensions:
- X509v3 Basic Constraints:
- CA:FALSE
- X509v3 Subject Alternative Name:
- DNS:example.org
- Signature Algorithm: ecdsa-with-SHA256
- 30:45:02:20:73:ca:c3:64:38:04:ad:5e:f7:87:a6:1f:ac:62:
- 03:7b:3a:11:5b:51:2a:11:b2:25:e3:24:1e:62:ec:72:39:be:
- 02:21:00:f7:df:1b:83:07:a2:fd:d1:1f:c9:92:57:1f:ee:2c:
- f2:27:b5:99:91:8f:8b:9d:02:a3:f7:5d:17:9e:d6:19:a6
------BEGIN CERTIFICATE-----
-MIIBazCCARGgAwIBAgIUFJUOtKkzBJvtpUe5yA8SFFfRZv8wCgYIKoZIzj0EAwIw
-IjEgMB4GA1UEAwwXU2hvcnQtbGl2ZWQgQ2VydGlmaWNhdGUwHhcNMjAwNjA1MTk0
-OTEyWhcNMjAwNjE5MTk0OTEyWjAiMSAwHgYDVQQDDBdTaG9ydC1saXZlZCBDZXJ0
-aWZpY2F0ZTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEKKdTuJAhfDl9k1PKya
-RqRG+hfMXQpMaqOIfP9ExZavbTsXdtFZVCPMFgWWKZ4s9KebxEI7IU6svY9Xkiv+
-j4WjJTAjMAkGA1UdEwQCMAAwFgYDVR0RBA8wDYILZXhhbXBsZS5vcmcwCgYIKoZI
-zj0EAwIDSAAwRQIgc8rDZDgErV73h6YfrGIDezoRW1EqEbIl4yQeYuxyOb4CIQD3
-3xuDB6L90R/Jklcf7izyJ7WZkY+LnQKj910XntYZpg==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/redundant-server-chain.pem b/src/pki/testdata/ssl/certificates/redundant-server-chain.pem
deleted file mode 100644
index 755b84d..0000000
--- a/src/pki/testdata/ssl/certificates/redundant-server-chain.pem
+++ /dev/null
@@ -1,333 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDsdrSxnyz5qQNr
-JRBll0qjD5zDYW41+A+X2rDMDONOaLlO9OODtjvoCRBg5KUJ2y9a/Vsui77szkLD
-7h4lJPTlxGyFNxgtfyzSuXEb5ZBP0kYD+RXfafIeTmQECIFwsmnc3ytonl+Hzr+g
-6G2w12qNWOL3DqrxgOc/9UeZKuTf4ERM7x1cfBmA3keW0M8PqJ9rVSG7zzLreago
-Q81pmlWVttFrZWt2PAq6DH7BEdN+cbIEa6bSFOmBW24r+TJxxDc9X95xXNdC/LYn
-fb9tN+1gPDd1bcjeEdPIg0EMqb0BtfcaUjZojownuIt04fcaet4OaVoo/HNhy9XM
-GqqoHQeHAgMBAAECggEAIBGZP92Og+1gAU/tgVmbTbH4WKcGA1u5AacvAv1cdm3N
-c9/SWzKDvVw9VGat20BWk8h4bT+WjRcMBvZsMC1q6R5SeV6XcNQmiA2OQXJIuAqU
-ZEWLqdj8dQ+8kK92nooTwVii0nVoD0sCwhfDiJAuayz62vaqSEZrFkl1hFhE4feN
-jpNOjzU54nbtmAnT1umyO13pJxTcRjetTJioIsl/uvTGuIhBsY6gqYchtPtZ0c35
-0/YNOMtAWKERDgpyFwBNmUA9YunmS603ThA5SB7rbaMbANyxXoGRcRjNavI67ues
-fgvRY/GghnY2sKroyc9CIsnghrGAITW6miQw3uWRQQKBgQD4mTh7g0DP3bfHUIqm
-af7UmPV7gPrJItlvgrYRYy4zjnxvNk/kcfgrJATMAnqGX5KrbXFX6AdfanRRnJcP
-gCojd1C3v3cotUVky9r91v/1Hn1fe2hDzy/qrbwh2WBATPKCJjL0PuXNhGsfqoKG
-SMhvqy95sfFnqvy4f4pUPh6pIwKBgQDzgP7WUAVWUcmjjxq6QM8WfDD5RMuPfAL4
-skkpm3WB/H+xUeqax+KSKNDDrWTfhWpTucZt0v84aG6NQz4vzkc5DrRnWltkqFgR
-NLU1esrgn1bnh/iNQt+bmw8OgH0puJsI82wBa7QjGYu3ocW043Avp1DS2ocMGMzu
-S+hFvBG4TQKBgFDI8drpVzl1cpBZswTLMx2BK1zcGCMeqQwcrO/PjCcC6Zr2SlYR
-VzUluk1VjN1312DP6uJHK4YtQOl4enp2CruFvXxIwv8+kPNlb5/Hq1vLcbCCmOpY
-PNkFZjqVujqLBs+WfD505ha4LluW/F2I72GifoYMdkdbAE8wWxJvMWWDAoGADRQg
-m+IwZzJ9YguNo/NXLB3/g2PuiwZeIn1w8IspBJJLSXrc3vNdd/w5OklV4auIynZv
-8fYjPyRcy7mQ3YB20tm3VtXDkuR31nS+RuERhH8Ka+UhtHSjDfiGFoFQN61ypkhs
-xKbERh5ZIsPNmqmcnPKfpLOYDU5Hs4TgNN6lFQECgYA/0Y25oCHqLH9MfPGs2gMJ
-BTeMxzAIsA2lwhr2/WOANHA9cWnHtI3d1eNequZpNgxtKbw2mxbM+IfnO50czV7g
-5PJPvU79T6d64u1AOtoKbCxgm9wTL8UmEPvEInnT8SfnECPxW9Pwey2rC39527jl
-i5FkIsSiwU8YIZk73YCqDg==
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4096 (0x1000)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=B CA
- Validity
- Not Before: Oct 18 22:24:10 2019 GMT
- Not After : Oct 15 22:24:10 2029 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (2048 bit)
- Modulus:
- 00:ec:76:b4:b1:9f:2c:f9:a9:03:6b:25:10:65:97:
- 4a:a3:0f:9c:c3:61:6e:35:f8:0f:97:da:b0:cc:0c:
- e3:4e:68:b9:4e:f4:e3:83:b6:3b:e8:09:10:60:e4:
- a5:09:db:2f:5a:fd:5b:2e:8b:be:ec:ce:42:c3:ee:
- 1e:25:24:f4:e5:c4:6c:85:37:18:2d:7f:2c:d2:b9:
- 71:1b:e5:90:4f:d2:46:03:f9:15:df:69:f2:1e:4e:
- 64:04:08:81:70:b2:69:dc:df:2b:68:9e:5f:87:ce:
- bf:a0:e8:6d:b0:d7:6a:8d:58:e2:f7:0e:aa:f1:80:
- e7:3f:f5:47:99:2a:e4:df:e0:44:4c:ef:1d:5c:7c:
- 19:80:de:47:96:d0:cf:0f:a8:9f:6b:55:21:bb:cf:
- 32:eb:79:a8:28:43:cd:69:9a:55:95:b6:d1:6b:65:
- 6b:76:3c:0a:ba:0c:7e:c1:11:d3:7e:71:b2:04:6b:
- a6:d2:14:e9:81:5b:6e:2b:f9:32:71:c4:37:3d:5f:
- de:71:5c:d7:42:fc:b6:27:7d:bf:6d:37:ed:60:3c:
- 37:75:6d:c8:de:11:d3:c8:83:41:0c:a9:bd:01:b5:
- f7:1a:52:36:68:8e:8c:27:b8:8b:74:e1:f7:1a:7a:
- de:0e:69:5a:28:fc:73:61:cb:d5:cc:1a:aa:a8:1d:
- 07:87
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- E7:8D:C4:21:0B:CE:12:A1:F7:05:E6:52:AF:3B:A6:10:BA:71:68:3D
- X509v3 Authority Key Identifier:
- keyid:77:3C:D2:AA:A1:C9:7D:FE:B6:90:3F:CB:1B:F6:38:37:0C:28:1A:F7
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- 17:ff:16:47:18:ed:d0:b5:54:fb:b6:02:c7:e4:c1:9a:4d:99:
- 54:cb:ca:df:75:25:d4:e5:b5:20:74:3d:ac:f9:e2:a1:87:a5:
- d1:a2:da:48:c0:71:12:9f:84:9e:10:70:9c:bd:4c:74:85:90:
- b8:15:9c:b2:fb:f2:4c:03:7c:7a:a6:6e:c4:91:19:93:79:a4:
- 47:96:fa:30:15:a3:02:20:d0:07:23:70:16:db:73:aa:6e:61:
- b9:b1:0f:a9:e5:f8:d4:4f:34:19:a1:2e:fa:d6:f0:97:76:8c:
- ff:08:54:8e:dc:a3:49:c9:a3:d8:e0:c3:71:e9:8f:98:3d:dd:
- 25:73:c4:da:c3:fa:43:19:48:39:5c:43:8c:30:7a:cf:de:5a:
- c9:ee:8e:2e:88:b0:e7:84:74:5f:d4:91:a6:65:8d:bc:fd:10:
- 51:3c:53:32:fe:dd:03:84:9b:b0:64:58:9d:99:b4:bc:5f:ce:
- 30:af:67:58:f5:6c:02:67:20:f9:aa:dc:d6:96:fc:00:e8:6d:
- 72:48:12:a9:f9:dc:4b:00:26:fb:ab:1f:00:ac:e2:11:f9:36:
- 2c:bd:a9:1c:86:b5:77:c6:97:6d:29:ec:3f:d3:94:95:46:54:
- a4:2d:66:7e:9d:d7:1b:ea:21:f7:39:a3:b4:fb:e9:b6:38:4d:
- eb:49:1d:83
------BEGIN CERTIFICATE-----
-MIIDbDCCAlSgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwEQiBD
-QTAeFw0xOTEwMTgyMjI0MTBaFw0yOTEwMTUyMjI0MTBaMGAxCzAJBgNVBAYTAlVT
-MRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAw
-DgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqGSIb3
-DQEBAQUAA4IBDwAwggEKAoIBAQDsdrSxnyz5qQNrJRBll0qjD5zDYW41+A+X2rDM
-DONOaLlO9OODtjvoCRBg5KUJ2y9a/Vsui77szkLD7h4lJPTlxGyFNxgtfyzSuXEb
-5ZBP0kYD+RXfafIeTmQECIFwsmnc3ytonl+Hzr+g6G2w12qNWOL3DqrxgOc/9UeZ
-KuTf4ERM7x1cfBmA3keW0M8PqJ9rVSG7zzLreagoQ81pmlWVttFrZWt2PAq6DH7B
-EdN+cbIEa6bSFOmBW24r+TJxxDc9X95xXNdC/LYnfb9tN+1gPDd1bcjeEdPIg0EM
-qb0BtfcaUjZojownuIt04fcaet4OaVoo/HNhy9XMGqqoHQeHAgMBAAGjgYAwfjAM
-BgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTnjcQhC84SofcF5lKvO6YQunFoPTAfBgNV
-HSMEGDAWgBR3PNKqocl9/raQP8sb9jg3DCga9zAdBgNVHSUEFjAUBggrBgEFBQcD
-AQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOCAQEA
-F/8WRxjt0LVU+7YCx+TBmk2ZVMvK33Ul1OW1IHQ9rPnioYel0aLaSMBxEp+EnhBw
-nL1MdIWQuBWcsvvyTAN8eqZuxJEZk3mkR5b6MBWjAiDQByNwFttzqm5hubEPqeX4
-1E80GaEu+tbwl3aM/whUjtyjScmj2ODDcemPmD3dJXPE2sP6QxlIOVxDjDB6z95a
-ye6OLoiw54R0X9SRpmWNvP0QUTxTMv7dA4SbsGRYnZm0vF/OMK9nWPVsAmcg+arc
-1pb8AOhtckgSqfncSwAm+6sfAKziEfk2LL2pHIa1d8aXbSnsP9OUlUZUpC1mfp3X
-G+oh9zmjtPvptjhN60kdgw==
------END CERTIFICATE-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4097 (0x1001)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=C CA
- Validity
- Not Before: Oct 18 22:24:10 2019 GMT
- Not After : Oct 15 22:24:10 2029 GMT
- Subject: CN=B CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (2048 bit)
- Modulus:
- 00:96:bf:0b:a1:79:f7:12:d1:8c:ec:e3:63:4a:c7:
- 30:53:10:0d:60:41:84:27:99:f0:9f:a4:9e:ec:19:
- 24:28:80:0b:8e:55:0c:13:ab:16:72:2b:43:aa:ac:
- fa:0f:b2:47:ae:a3:a2:8d:66:85:2b:2f:b1:c6:f2:
- bd:b6:5e:3b:d1:2b:0d:c2:bc:96:4f:d9:5f:2c:74:
- 7b:7f:2a:2c:52:84:f6:71:a7:87:df:d3:4e:be:e7:
- 53:70:cd:f0:47:5b:e4:5b:5b:64:49:37:5b:93:99:
- 09:78:22:f2:04:9e:af:aa:91:f6:22:a5:59:5d:9e:
- c7:cd:c5:11:1a:9e:99:3b:19:ad:51:59:f5:0e:ec:
- 30:f2:7e:64:33:91:cd:f0:26:12:fe:cb:f2:6e:67:
- a2:ec:94:6e:b2:97:3e:51:c0:ca:0a:e4:8a:f3:c6:
- fa:cd:55:95:11:57:5e:bd:9b:b9:70:d4:04:af:f2:
- c8:5e:1e:fb:b3:d7:03:0a:0e:be:cf:fa:c7:97:63:
- 7a:e0:b4:22:07:a7:18:b6:a7:1a:d5:23:26:c1:c4:
- 39:83:3c:45:53:9d:fd:a4:17:62:8d:bd:f2:4b:40:
- d3:85:1d:06:3a:24:4f:8f:65:77:cd:c9:e8:64:a4:
- 55:16:20:8f:17:5c:f1:6b:75:db:8e:ac:eb:2c:97:
- 28:09
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- 77:3C:D2:AA:A1:C9:7D:FE:B6:90:3F:CB:1B:F6:38:37:0C:28:1A:F7
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha256WithRSAEncryption
- 8c:35:9a:a4:61:08:6e:60:d9:9e:af:ab:22:89:ca:ca:39:03:
- 9c:5d:4e:5f:dc:e5:dc:33:ce:19:af:19:fd:db:c9:a7:ca:d8:
- 65:73:42:73:35:70:57:99:f0:e0:b5:c8:79:31:72:f4:85:d8:
- 3d:20:04:cb:28:dc:22:bf:ce:43:7f:72:39:7e:b4:aa:c2:a4:
- e4:25:dd:af:0e:8c:a9:fc:23:a8:4e:3d:52:fe:d4:27:dd:08:
- de:4c:b6:6c:9c:9c:11:87:11:6e:cb:f0:43:38:4b:62:71:e7:
- 09:d0:01:3f:5c:51:03:41:06:03:76:27:17:15:19:26:a4:6d:
- 17:63:3e:00:d3:d4:02:17:33:17:87:57:9d:33:b5:7e:76:98:
- 3c:a5:68:da:e6:08:76:c5:3b:ea:6a:58:4c:16:da:92:d4:b3:
- a6:d0:2e:4d:07:7d:ed:57:fa:e1:2a:09:bc:1e:4c:94:3e:f2:
- 11:41:4c:03:a8:08:a4:4c:7a:f1:42:f2:8f:ae:d5:15:5a:c5:
- 22:d3:b0:d8:d5:1d:10:6a:ee:ed:a1:4d:b4:2c:33:e2:0b:c3:
- 92:91:c7:c9:f4:f4:2c:53:8a:f6:1a:80:ff:dc:b3:91:2d:51:
- 0d:cf:e8:d3:89:3f:b1:90:76:44:8f:b1:f9:c1:60:4d:03:28:
- 74:72:ba:26
------BEGIN CERTIFICATE-----
-MIIC3DCCAcSgAwIBAgICEAEwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwEQyBD
-QTAeFw0xOTEwMTgyMjI0MTBaFw0yOTEwMTUyMjI0MTBaMA8xDTALBgNVBAMMBEIg
-Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWvwuhefcS0Yzs42NK
-xzBTEA1gQYQnmfCfpJ7sGSQogAuOVQwTqxZyK0OqrPoPskeuo6KNZoUrL7HG8r22
-XjvRKw3CvJZP2V8sdHt/KixShPZxp4ff006+51NwzfBHW+RbW2RJN1uTmQl4IvIE
-nq+qkfYipVldnsfNxREanpk7Ga1RWfUO7DDyfmQzkc3wJhL+y/JuZ6LslG6ylz5R
-wMoK5IrzxvrNVZURV169m7lw1ASv8sheHvuz1wMKDr7P+seXY3rgtCIHpxi2pxrV
-IybBxDmDPEVTnf2kF2KNvfJLQNOFHQY6JE+PZXfNyehkpFUWII8XXPFrdduOrOss
-lygJAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHc80qqhyX3+
-tpA/yxv2ODcMKBr3MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEA
-jDWapGEIbmDZnq+rIonKyjkDnF1OX9zl3DPOGa8Z/dvJp8rYZXNCczVwV5nw4LXI
-eTFy9IXYPSAEyyjcIr/OQ39yOX60qsKk5CXdrw6MqfwjqE49Uv7UJ90I3ky2bJyc
-EYcRbsvwQzhLYnHnCdABP1xRA0EGA3YnFxUZJqRtF2M+ANPUAhczF4dXnTO1fnaY
-PKVo2uYIdsU76mpYTBbaktSzptAuTQd97Vf64SoJvB5MlD7yEUFMA6gIpEx68ULy
-j67VFVrFItOw2NUdEGru7aFNtCwz4gvDkpHHyfT0LFOK9hqA/9yzkS1RDc/o04k/
-sZB2RI+x+cFgTQModHK6Jg==
------END CERTIFICATE-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4099 (0x1003)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=D Root CA
- Validity
- Not Before: Oct 18 22:24:10 2019 GMT
- Not After : Oct 15 22:24:10 2029 GMT
- Subject: CN=C CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (2048 bit)
- Modulus:
- 00:97:21:4e:ff:ff:22:dd:de:6d:cc:05:75:3b:37:
- 80:28:9f:61:8b:a2:ac:9b:3b:b1:e6:3a:a4:35:ce:
- 7b:95:ce:d2:2f:95:f1:c2:51:c2:9d:21:71:dd:06:
- 3a:eb:67:68:59:2d:f6:19:b1:7d:98:06:c2:c4:19:
- 34:2a:00:0a:f1:0a:0b:76:39:ba:0f:e9:69:bc:14:
- c9:fa:38:b4:f6:38:55:45:3d:21:c7:b8:20:e3:47:
- ac:5b:9e:ec:7f:a9:8b:72:00:79:5c:25:13:01:86:
- a9:6a:d9:12:b1:d2:3a:a1:cc:e5:e0:63:b2:0d:ea:
- aa:a7:42:f9:de:cf:de:e0:15:9b:6e:cd:86:81:d8:
- 5f:3f:a1:7b:bc:97:31:40:0e:17:a3:aa:c4:48:5a:
- 5c:c8:e5:89:92:68:85:08:6c:cb:31:35:9c:fb:1e:
- d3:66:35:ee:d9:d7:ea:b8:5c:3e:d0:60:94:4c:3d:
- 2b:21:6b:72:b8:3a:16:e4:f1:ea:97:74:0c:cf:27:
- a5:03:c1:b7:c3:d9:4d:5a:3d:c5:8e:3f:ca:99:b4:
- b6:59:c6:9f:22:38:0d:4d:c7:f7:11:f8:d0:71:99:
- 5d:4b:e2:30:62:00:fb:01:c9:ca:3e:ed:6a:d8:6d:
- 2d:0f:1a:77:33:02:b4:41:b3:ba:f6:1c:38:be:54:
- c9:73
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- 63:B1:47:26:FC:DB:79:3F:76:96:69:4D:EA:7E:D0:B7:6A:D2:3F:A8
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha256WithRSAEncryption
- b2:52:23:e9:38:02:24:58:bf:cb:b4:62:f3:97:74:9a:24:4a:
- aa:c6:bd:59:5b:d7:33:a4:7e:8f:10:3a:09:44:a3:a1:90:f2:
- 32:c2:e9:a7:e5:16:ca:c9:6c:a1:4e:94:8a:e6:f0:dd:f2:59:
- 2c:7c:62:84:c8:28:e2:5f:f1:6f:c7:04:21:49:3f:24:8f:fb:
- 4c:38:1c:3a:5d:18:e9:f2:5d:28:5c:a8:ce:01:12:aa:17:f2:
- c0:bb:87:43:70:d7:8a:59:e7:80:38:ef:df:72:b3:1c:70:88:
- a8:65:66:40:b3:25:1d:57:f4:a8:c1:34:e6:30:1e:2d:b5:b7:
- fb:1f:99:4b:e1:fa:03:af:79:4e:5f:3c:39:02:14:e6:8b:06:
- 1b:5b:34:c7:c1:c0:30:48:2e:1c:16:ab:6b:4f:25:37:1e:a7:
- f1:fd:09:29:23:ae:89:21:31:fd:64:7c:67:37:ca:bc:26:47:
- fd:aa:d5:45:84:e1:27:47:fb:cb:05:10:cc:5b:55:f2:fb:c1:
- 08:55:89:43:0c:36:5e:4f:16:3b:35:3c:1c:61:59:90:ae:8a:
- a3:53:4d:23:da:22:80:36:5c:e9:ff:49:9e:94:eb:4f:6c:15:
- d0:4c:6c:8b:21:eb:18:24:44:d8:72:4e:de:5f:47:d2:6c:55:
- dd:4f:c6:81
------BEGIN CERTIFICATE-----
-MIIC4TCCAcmgAwIBAgICEAMwDQYJKoZIhvcNAQELBQAwFDESMBAGA1UEAwwJRCBS
-b290IENBMB4XDTE5MTAxODIyMjQxMFoXDTI5MTAxNTIyMjQxMFowDzENMAsGA1UE
-AwwEQyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJchTv//It3e
-bcwFdTs3gCifYYuirJs7seY6pDXOe5XO0i+V8cJRwp0hcd0GOutnaFkt9hmxfZgG
-wsQZNCoACvEKC3Y5ug/pabwUyfo4tPY4VUU9Ice4IONHrFue7H+pi3IAeVwlEwGG
-qWrZErHSOqHM5eBjsg3qqqdC+d7P3uAVm27NhoHYXz+he7yXMUAOF6OqxEhaXMjl
-iZJohQhsyzE1nPse02Y17tnX6rhcPtBglEw9KyFrcrg6FuTx6pd0DM8npQPBt8PZ
-TVo9xY4/ypm0tlnGnyI4DU3H9xH40HGZXUviMGIA+wHJyj7tathtLQ8adzMCtEGz
-uvYcOL5UyXMCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUY7FH
-JvzbeT92lmlN6n7Qt2rSP6gwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUA
-A4IBAQCyUiPpOAIkWL/LtGLzl3SaJEqqxr1ZW9czpH6PEDoJRKOhkPIywumn5RbK
-yWyhTpSK5vDd8lksfGKEyCjiX/FvxwQhST8kj/tMOBw6XRjp8l0oXKjOARKqF/LA
-u4dDcNeKWeeAOO/fcrMccIioZWZAsyUdV/SowTTmMB4ttbf7H5lL4foDr3lOXzw5
-AhTmiwYbWzTHwcAwSC4cFqtrTyU3Hqfx/QkpI66JITH9ZHxnN8q8Jkf9qtVFhOEn
-R/vLBRDMW1Xy+8EIVYlDDDZeTxY7NTwcYVmQroqjU00j2iKANlzp/0melOtPbBXQ
-TGyLIesYJETYck7eX0fSbFXdT8aB
------END CERTIFICATE-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 37:4c:99:18:7e:b3:0c:6e:53:25:45:1c:0c:89:17:9a:88:0c:86:44
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN = D Root CA
- Validity
- Not Before: Oct 18 22:24:10 2019 GMT
- Not After : Oct 15 22:24:10 2029 GMT
- Subject: CN = D Root CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (2048 bit)
- Modulus:
- 00:dc:15:a5:eb:d7:9f:c0:de:cc:53:f2:2e:f2:d6:
- e4:22:66:16:f9:39:25:0c:f9:c4:51:19:1c:7f:ca:
- 16:64:fb:c1:8f:18:b4:77:cc:c1:6f:99:ce:54:59:
- 2a:e8:5f:14:fc:2f:58:51:ed:01:bb:31:93:13:9a:
- f5:49:07:f7:e8:ae:fa:34:78:1b:d2:1e:3a:c8:4a:
- a4:30:c5:5c:22:09:ad:3d:b8:cc:0c:56:24:ba:fd:
- ab:b8:2d:dd:92:e3:f4:88:a3:64:f0:e6:b6:f9:f2:
- ac:86:3c:77:e0:19:26:4b:0e:dc:f1:97:05:9e:13:
- de:0c:1d:72:47:ec:ed:1c:09:18:f8:f3:7d:55:ba:
- 59:06:9f:3a:5f:08:ee:cd:35:b2:3c:29:e1:fb:4a:
- a3:4d:1c:fa:59:62:da:ac:13:bc:ad:d2:da:9c:e8:
- ee:10:e8:36:e2:97:04:e3:04:ca:af:d6:97:7e:e9:
- 44:86:8d:46:9f:7d:58:2f:be:0a:1d:34:7c:e3:f0:
- 0b:9a:50:78:ff:d2:ee:6d:4c:2a:b0:e6:a5:80:45:
- 4c:9c:dd:a6:df:93:6d:ae:e7:98:c2:4b:c4:c5:d6:
- 55:9a:d4:df:ba:00:a5:0f:1d:23:b4:63:75:cc:c7:
- ff:08:8e:1c:77:bb:6b:cb:cc:b4:e0:81:ff:56:fa:
- 45:b3
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- EE:13:A0:76:5C:58:BE:8C:5A:67:31:CA:23:35:67:55:0D:51:0E:12
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha256WithRSAEncryption
- 3d:ad:ea:a5:49:bb:c6:f0:0a:5c:2a:2a:8c:be:7f:24:9d:55:
- 83:85:78:cb:c5:02:5a:eb:cd:f5:36:aa:df:32:8b:3f:19:f6:
- c0:9e:66:20:12:81:e9:e1:39:48:31:e8:92:c8:b1:af:fa:1f:
- b7:07:8b:54:2e:d2:55:79:c8:c8:44:75:b0:fe:d7:d2:8d:93:
- 58:82:eb:ff:49:69:93:63:de:df:19:ba:e0:a3:79:41:48:2c:
- 18:f4:33:a5:de:d9:00:da:e7:05:7e:88:74:8c:df:01:ec:17:
- f8:37:81:eb:00:4e:03:9b:0a:09:15:4d:b1:f5:72:fe:8a:1f:
- c0:f9:c6:26:3b:13:52:c3:59:c7:bf:cc:1e:79:a6:93:62:65:
- 56:25:e2:58:8b:df:db:2a:4f:a7:6a:33:f7:f9:d1:99:42:be:
- ee:dc:e4:a1:34:23:9b:40:77:d5:e4:45:b3:b1:93:9a:d0:48:
- 0a:34:31:c8:f1:60:1c:fe:10:76:74:7e:f5:96:47:19:ef:3a:
- 84:b2:0e:f3:74:23:91:9b:3f:51:7c:e4:3a:b5:40:50:ba:c6:
- 58:f9:ea:c8:b6:5c:1d:76:ac:ac:23:d0:f1:13:86:fb:4d:19:
- 1d:99:32:21:f7:56:8a:7f:c3:90:ca:51:3a:73:a1:27:64:6b:
- 1d:9b:53:1d
------BEGIN CERTIFICATE-----
-MIIC+DCCAeCgAwIBAgIUN0yZGH6zDG5TJUUcDIkXmogMhkQwDQYJKoZIhvcNAQEL
-BQAwFDESMBAGA1UEAwwJRCBSb290IENBMB4XDTE5MTAxODIyMjQxMFoXDTI5MTAx
-NTIyMjQxMFowFDESMBAGA1UEAwwJRCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEF
-AAOCAQ8AMIIBCgKCAQEA3BWl69efwN7MU/Iu8tbkImYW+TklDPnEURkcf8oWZPvB
-jxi0d8zBb5nOVFkq6F8U/C9YUe0BuzGTE5r1SQf36K76NHgb0h46yEqkMMVcIgmt
-PbjMDFYkuv2ruC3dkuP0iKNk8Oa2+fKshjx34BkmSw7c8ZcFnhPeDB1yR+ztHAkY
-+PN9VbpZBp86XwjuzTWyPCnh+0qjTRz6WWLarBO8rdLanOjuEOg24pcE4wTKr9aX
-fulEho1Gn31YL74KHTR84/ALmlB4/9LubUwqsOalgEVMnN2m35NtrueYwkvExdZV
-mtTfugClDx0jtGN1zMf/CI4cd7try8y04IH/VvpFswIDAQABo0IwQDAPBgNVHRMB
-Af8EBTADAQH/MB0GA1UdDgQWBBTuE6B2XFi+jFpnMcojNWdVDVEOEjAOBgNVHQ8B
-Af8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAD2t6qVJu8bwClwqKoy+fySdVYOF
-eMvFAlrrzfU2qt8yiz8Z9sCeZiASgenhOUgx6JLIsa/6H7cHi1Qu0lV5yMhEdbD+
-19KNk1iC6/9JaZNj3t8ZuuCjeUFILBj0M6Xe2QDa5wV+iHSM3wHsF/g3gesATgOb
-CgkVTbH1cv6KH8D5xiY7E1LDWce/zB55ppNiZVYl4liL39sqT6dqM/f50ZlCvu7c
-5KE0I5tAd9XkRbOxk5rQSAo0McjxYBz+EHZ0fvWWRxnvOoSyDvN0I5GbP1F85Dq1
-QFC6xlj56si2XB12rKwj0PEThvtNGR2ZMiH3Vop/w5DKUTpzoSdkax2bUx0=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/redundant-validated-chain-root.pem b/src/pki/testdata/ssl/certificates/redundant-validated-chain-root.pem
deleted file mode 100644
index 6fadba0..0000000
--- a/src/pki/testdata/ssl/certificates/redundant-validated-chain-root.pem
+++ /dev/null
@@ -1,75 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 7d:19:e5:55:d1:85:7c:54:62:f6:56:00:7a:cf:78:a9:38:29:81:ff
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN = C CA
- Validity
- Not Before: Oct 18 22:24:10 2019 GMT
- Not After : Oct 15 22:24:10 2029 GMT
- Subject: CN = C CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (2048 bit)
- Modulus:
- 00:97:21:4e:ff:ff:22:dd:de:6d:cc:05:75:3b:37:
- 80:28:9f:61:8b:a2:ac:9b:3b:b1:e6:3a:a4:35:ce:
- 7b:95:ce:d2:2f:95:f1:c2:51:c2:9d:21:71:dd:06:
- 3a:eb:67:68:59:2d:f6:19:b1:7d:98:06:c2:c4:19:
- 34:2a:00:0a:f1:0a:0b:76:39:ba:0f:e9:69:bc:14:
- c9:fa:38:b4:f6:38:55:45:3d:21:c7:b8:20:e3:47:
- ac:5b:9e:ec:7f:a9:8b:72:00:79:5c:25:13:01:86:
- a9:6a:d9:12:b1:d2:3a:a1:cc:e5:e0:63:b2:0d:ea:
- aa:a7:42:f9:de:cf:de:e0:15:9b:6e:cd:86:81:d8:
- 5f:3f:a1:7b:bc:97:31:40:0e:17:a3:aa:c4:48:5a:
- 5c:c8:e5:89:92:68:85:08:6c:cb:31:35:9c:fb:1e:
- d3:66:35:ee:d9:d7:ea:b8:5c:3e:d0:60:94:4c:3d:
- 2b:21:6b:72:b8:3a:16:e4:f1:ea:97:74:0c:cf:27:
- a5:03:c1:b7:c3:d9:4d:5a:3d:c5:8e:3f:ca:99:b4:
- b6:59:c6:9f:22:38:0d:4d:c7:f7:11:f8:d0:71:99:
- 5d:4b:e2:30:62:00:fb:01:c9:ca:3e:ed:6a:d8:6d:
- 2d:0f:1a:77:33:02:b4:41:b3:ba:f6:1c:38:be:54:
- c9:73
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- 63:B1:47:26:FC:DB:79:3F:76:96:69:4D:EA:7E:D0:B7:6A:D2:3F:A8
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha256WithRSAEncryption
- 8e:4d:6c:49:c9:9c:f9:cb:a0:81:9b:65:31:c7:bc:8c:c0:75:
- 4d:60:16:ef:bb:b6:b4:2a:5d:68:34:d7:e0:53:1f:3e:84:b6:
- aa:7d:fd:a1:c9:29:88:83:2e:ab:f3:87:43:a8:d8:5c:a8:1b:
- e0:58:50:84:03:05:15:03:01:07:30:d0:4a:f9:95:f1:86:be:
- 45:5b:31:f0:88:12:22:d7:7a:fb:0b:9f:95:41:ba:df:40:e3:
- b2:71:e7:4e:09:91:1c:5f:51:b3:ce:a5:00:0b:82:d1:04:f2:
- 1c:5a:14:4b:1b:3f:2d:41:11:7c:33:37:89:56:b4:b7:fa:d8:
- b9:20:8d:bd:a6:68:60:2a:3c:aa:61:38:74:d4:0a:16:41:70:
- d8:75:c4:6d:04:a8:b6:a5:0f:e7:02:52:0b:7d:44:d6:1b:2f:
- ca:06:aa:61:3d:8d:82:3f:34:c5:bb:08:69:6f:6c:b7:53:e5:
- 52:3d:dd:7b:1c:1f:d3:7d:38:43:ca:c7:75:9a:a8:a1:93:27:
- 13:b0:57:1a:ff:22:90:1f:b2:69:da:7a:a4:2f:16:51:fa:81:
- 6c:ed:c0:19:42:58:b5:21:67:c1:54:93:db:55:86:c7:97:09:
- 76:18:32:55:2a:b4:b1:ac:12:bc:3f:00:3d:b5:1c:ef:55:c4:
- f0:6c:a1:17
------BEGIN CERTIFICATE-----
-MIIC7jCCAdagAwIBAgIUfRnlVdGFfFRi9lYAes94qTgpgf8wDQYJKoZIhvcNAQEL
-BQAwDzENMAsGA1UEAwwEQyBDQTAeFw0xOTEwMTgyMjI0MTBaFw0yOTEwMTUyMjI0
-MTBaMA8xDTALBgNVBAMMBEMgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
-AoIBAQCXIU7//yLd3m3MBXU7N4Aon2GLoqybO7HmOqQ1znuVztIvlfHCUcKdIXHd
-BjrrZ2hZLfYZsX2YBsLEGTQqAArxCgt2OboP6Wm8FMn6OLT2OFVFPSHHuCDjR6xb
-nux/qYtyAHlcJRMBhqlq2RKx0jqhzOXgY7IN6qqnQvnez97gFZtuzYaB2F8/oXu8
-lzFADhejqsRIWlzI5YmSaIUIbMsxNZz7HtNmNe7Z1+q4XD7QYJRMPSsha3K4Ohbk
-8eqXdAzPJ6UDwbfD2U1aPcWOP8qZtLZZxp8iOA1Nx/cR+NBxmV1L4jBiAPsByco+
-7WrYbS0PGnczArRBs7r2HDi+VMlzAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8w
-HQYDVR0OBBYEFGOxRyb823k/dpZpTep+0Ldq0j+oMA4GA1UdDwEB/wQEAwIBBjAN
-BgkqhkiG9w0BAQsFAAOCAQEAjk1sScmc+cuggZtlMce8jMB1TWAW77u2tCpdaDTX
-4FMfPoS2qn39ockpiIMuq/OHQ6jYXKgb4FhQhAMFFQMBBzDQSvmV8Ya+RVsx8IgS
-Itd6+wuflUG630DjsnHnTgmRHF9Rs86lAAuC0QTyHFoUSxs/LUERfDM3iVa0t/rY
-uSCNvaZoYCo8qmE4dNQKFkFw2HXEbQSotqUP5wJSC31E1hsvygaqYT2Ngj80xbsI
-aW9st1PlUj3dexwf0304Q8rHdZqooZMnE7BXGv8ikB+yadp6pC8WUfqBbO3AGUJY
-tSFnwVST21WGx5cJdhgyVSq0sawSvD8APbUc71XE8GyhFw==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/redundant-validated-chain.pem b/src/pki/testdata/ssl/certificates/redundant-validated-chain.pem
deleted file mode 100644
index 8239cdc..0000000
--- a/src/pki/testdata/ssl/certificates/redundant-validated-chain.pem
+++ /dev/null
@@ -1,259 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDsdrSxnyz5qQNr
-JRBll0qjD5zDYW41+A+X2rDMDONOaLlO9OODtjvoCRBg5KUJ2y9a/Vsui77szkLD
-7h4lJPTlxGyFNxgtfyzSuXEb5ZBP0kYD+RXfafIeTmQECIFwsmnc3ytonl+Hzr+g
-6G2w12qNWOL3DqrxgOc/9UeZKuTf4ERM7x1cfBmA3keW0M8PqJ9rVSG7zzLreago
-Q81pmlWVttFrZWt2PAq6DH7BEdN+cbIEa6bSFOmBW24r+TJxxDc9X95xXNdC/LYn
-fb9tN+1gPDd1bcjeEdPIg0EMqb0BtfcaUjZojownuIt04fcaet4OaVoo/HNhy9XM
-GqqoHQeHAgMBAAECggEAIBGZP92Og+1gAU/tgVmbTbH4WKcGA1u5AacvAv1cdm3N
-c9/SWzKDvVw9VGat20BWk8h4bT+WjRcMBvZsMC1q6R5SeV6XcNQmiA2OQXJIuAqU
-ZEWLqdj8dQ+8kK92nooTwVii0nVoD0sCwhfDiJAuayz62vaqSEZrFkl1hFhE4feN
-jpNOjzU54nbtmAnT1umyO13pJxTcRjetTJioIsl/uvTGuIhBsY6gqYchtPtZ0c35
-0/YNOMtAWKERDgpyFwBNmUA9YunmS603ThA5SB7rbaMbANyxXoGRcRjNavI67ues
-fgvRY/GghnY2sKroyc9CIsnghrGAITW6miQw3uWRQQKBgQD4mTh7g0DP3bfHUIqm
-af7UmPV7gPrJItlvgrYRYy4zjnxvNk/kcfgrJATMAnqGX5KrbXFX6AdfanRRnJcP
-gCojd1C3v3cotUVky9r91v/1Hn1fe2hDzy/qrbwh2WBATPKCJjL0PuXNhGsfqoKG
-SMhvqy95sfFnqvy4f4pUPh6pIwKBgQDzgP7WUAVWUcmjjxq6QM8WfDD5RMuPfAL4
-skkpm3WB/H+xUeqax+KSKNDDrWTfhWpTucZt0v84aG6NQz4vzkc5DrRnWltkqFgR
-NLU1esrgn1bnh/iNQt+bmw8OgH0puJsI82wBa7QjGYu3ocW043Avp1DS2ocMGMzu
-S+hFvBG4TQKBgFDI8drpVzl1cpBZswTLMx2BK1zcGCMeqQwcrO/PjCcC6Zr2SlYR
-VzUluk1VjN1312DP6uJHK4YtQOl4enp2CruFvXxIwv8+kPNlb5/Hq1vLcbCCmOpY
-PNkFZjqVujqLBs+WfD505ha4LluW/F2I72GifoYMdkdbAE8wWxJvMWWDAoGADRQg
-m+IwZzJ9YguNo/NXLB3/g2PuiwZeIn1w8IspBJJLSXrc3vNdd/w5OklV4auIynZv
-8fYjPyRcy7mQ3YB20tm3VtXDkuR31nS+RuERhH8Ka+UhtHSjDfiGFoFQN61ypkhs
-xKbERh5ZIsPNmqmcnPKfpLOYDU5Hs4TgNN6lFQECgYA/0Y25oCHqLH9MfPGs2gMJ
-BTeMxzAIsA2lwhr2/WOANHA9cWnHtI3d1eNequZpNgxtKbw2mxbM+IfnO50czV7g
-5PJPvU79T6d64u1AOtoKbCxgm9wTL8UmEPvEInnT8SfnECPxW9Pwey2rC39527jl
-i5FkIsSiwU8YIZk73YCqDg==
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4096 (0x1000)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=B CA
- Validity
- Not Before: Oct 18 22:24:10 2019 GMT
- Not After : Oct 15 22:24:10 2029 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (2048 bit)
- Modulus:
- 00:ec:76:b4:b1:9f:2c:f9:a9:03:6b:25:10:65:97:
- 4a:a3:0f:9c:c3:61:6e:35:f8:0f:97:da:b0:cc:0c:
- e3:4e:68:b9:4e:f4:e3:83:b6:3b:e8:09:10:60:e4:
- a5:09:db:2f:5a:fd:5b:2e:8b:be:ec:ce:42:c3:ee:
- 1e:25:24:f4:e5:c4:6c:85:37:18:2d:7f:2c:d2:b9:
- 71:1b:e5:90:4f:d2:46:03:f9:15:df:69:f2:1e:4e:
- 64:04:08:81:70:b2:69:dc:df:2b:68:9e:5f:87:ce:
- bf:a0:e8:6d:b0:d7:6a:8d:58:e2:f7:0e:aa:f1:80:
- e7:3f:f5:47:99:2a:e4:df:e0:44:4c:ef:1d:5c:7c:
- 19:80:de:47:96:d0:cf:0f:a8:9f:6b:55:21:bb:cf:
- 32:eb:79:a8:28:43:cd:69:9a:55:95:b6:d1:6b:65:
- 6b:76:3c:0a:ba:0c:7e:c1:11:d3:7e:71:b2:04:6b:
- a6:d2:14:e9:81:5b:6e:2b:f9:32:71:c4:37:3d:5f:
- de:71:5c:d7:42:fc:b6:27:7d:bf:6d:37:ed:60:3c:
- 37:75:6d:c8:de:11:d3:c8:83:41:0c:a9:bd:01:b5:
- f7:1a:52:36:68:8e:8c:27:b8:8b:74:e1:f7:1a:7a:
- de:0e:69:5a:28:fc:73:61:cb:d5:cc:1a:aa:a8:1d:
- 07:87
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- E7:8D:C4:21:0B:CE:12:A1:F7:05:E6:52:AF:3B:A6:10:BA:71:68:3D
- X509v3 Authority Key Identifier:
- keyid:77:3C:D2:AA:A1:C9:7D:FE:B6:90:3F:CB:1B:F6:38:37:0C:28:1A:F7
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- 17:ff:16:47:18:ed:d0:b5:54:fb:b6:02:c7:e4:c1:9a:4d:99:
- 54:cb:ca:df:75:25:d4:e5:b5:20:74:3d:ac:f9:e2:a1:87:a5:
- d1:a2:da:48:c0:71:12:9f:84:9e:10:70:9c:bd:4c:74:85:90:
- b8:15:9c:b2:fb:f2:4c:03:7c:7a:a6:6e:c4:91:19:93:79:a4:
- 47:96:fa:30:15:a3:02:20:d0:07:23:70:16:db:73:aa:6e:61:
- b9:b1:0f:a9:e5:f8:d4:4f:34:19:a1:2e:fa:d6:f0:97:76:8c:
- ff:08:54:8e:dc:a3:49:c9:a3:d8:e0:c3:71:e9:8f:98:3d:dd:
- 25:73:c4:da:c3:fa:43:19:48:39:5c:43:8c:30:7a:cf:de:5a:
- c9:ee:8e:2e:88:b0:e7:84:74:5f:d4:91:a6:65:8d:bc:fd:10:
- 51:3c:53:32:fe:dd:03:84:9b:b0:64:58:9d:99:b4:bc:5f:ce:
- 30:af:67:58:f5:6c:02:67:20:f9:aa:dc:d6:96:fc:00:e8:6d:
- 72:48:12:a9:f9:dc:4b:00:26:fb:ab:1f:00:ac:e2:11:f9:36:
- 2c:bd:a9:1c:86:b5:77:c6:97:6d:29:ec:3f:d3:94:95:46:54:
- a4:2d:66:7e:9d:d7:1b:ea:21:f7:39:a3:b4:fb:e9:b6:38:4d:
- eb:49:1d:83
------BEGIN CERTIFICATE-----
-MIIDbDCCAlSgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwEQiBD
-QTAeFw0xOTEwMTgyMjI0MTBaFw0yOTEwMTUyMjI0MTBaMGAxCzAJBgNVBAYTAlVT
-MRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAw
-DgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqGSIb3
-DQEBAQUAA4IBDwAwggEKAoIBAQDsdrSxnyz5qQNrJRBll0qjD5zDYW41+A+X2rDM
-DONOaLlO9OODtjvoCRBg5KUJ2y9a/Vsui77szkLD7h4lJPTlxGyFNxgtfyzSuXEb
-5ZBP0kYD+RXfafIeTmQECIFwsmnc3ytonl+Hzr+g6G2w12qNWOL3DqrxgOc/9UeZ
-KuTf4ERM7x1cfBmA3keW0M8PqJ9rVSG7zzLreagoQ81pmlWVttFrZWt2PAq6DH7B
-EdN+cbIEa6bSFOmBW24r+TJxxDc9X95xXNdC/LYnfb9tN+1gPDd1bcjeEdPIg0EM
-qb0BtfcaUjZojownuIt04fcaet4OaVoo/HNhy9XMGqqoHQeHAgMBAAGjgYAwfjAM
-BgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTnjcQhC84SofcF5lKvO6YQunFoPTAfBgNV
-HSMEGDAWgBR3PNKqocl9/raQP8sb9jg3DCga9zAdBgNVHSUEFjAUBggrBgEFBQcD
-AQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOCAQEA
-F/8WRxjt0LVU+7YCx+TBmk2ZVMvK33Ul1OW1IHQ9rPnioYel0aLaSMBxEp+EnhBw
-nL1MdIWQuBWcsvvyTAN8eqZuxJEZk3mkR5b6MBWjAiDQByNwFttzqm5hubEPqeX4
-1E80GaEu+tbwl3aM/whUjtyjScmj2ODDcemPmD3dJXPE2sP6QxlIOVxDjDB6z95a
-ye6OLoiw54R0X9SRpmWNvP0QUTxTMv7dA4SbsGRYnZm0vF/OMK9nWPVsAmcg+arc
-1pb8AOhtckgSqfncSwAm+6sfAKziEfk2LL2pHIa1d8aXbSnsP9OUlUZUpC1mfp3X
-G+oh9zmjtPvptjhN60kdgw==
------END CERTIFICATE-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4097 (0x1001)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN=C CA
- Validity
- Not Before: Oct 18 22:24:10 2019 GMT
- Not After : Oct 15 22:24:10 2029 GMT
- Subject: CN=B CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (2048 bit)
- Modulus:
- 00:96:bf:0b:a1:79:f7:12:d1:8c:ec:e3:63:4a:c7:
- 30:53:10:0d:60:41:84:27:99:f0:9f:a4:9e:ec:19:
- 24:28:80:0b:8e:55:0c:13:ab:16:72:2b:43:aa:ac:
- fa:0f:b2:47:ae:a3:a2:8d:66:85:2b:2f:b1:c6:f2:
- bd:b6:5e:3b:d1:2b:0d:c2:bc:96:4f:d9:5f:2c:74:
- 7b:7f:2a:2c:52:84:f6:71:a7:87:df:d3:4e:be:e7:
- 53:70:cd:f0:47:5b:e4:5b:5b:64:49:37:5b:93:99:
- 09:78:22:f2:04:9e:af:aa:91:f6:22:a5:59:5d:9e:
- c7:cd:c5:11:1a:9e:99:3b:19:ad:51:59:f5:0e:ec:
- 30:f2:7e:64:33:91:cd:f0:26:12:fe:cb:f2:6e:67:
- a2:ec:94:6e:b2:97:3e:51:c0:ca:0a:e4:8a:f3:c6:
- fa:cd:55:95:11:57:5e:bd:9b:b9:70:d4:04:af:f2:
- c8:5e:1e:fb:b3:d7:03:0a:0e:be:cf:fa:c7:97:63:
- 7a:e0:b4:22:07:a7:18:b6:a7:1a:d5:23:26:c1:c4:
- 39:83:3c:45:53:9d:fd:a4:17:62:8d:bd:f2:4b:40:
- d3:85:1d:06:3a:24:4f:8f:65:77:cd:c9:e8:64:a4:
- 55:16:20:8f:17:5c:f1:6b:75:db:8e:ac:eb:2c:97:
- 28:09
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- 77:3C:D2:AA:A1:C9:7D:FE:B6:90:3F:CB:1B:F6:38:37:0C:28:1A:F7
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha256WithRSAEncryption
- 8c:35:9a:a4:61:08:6e:60:d9:9e:af:ab:22:89:ca:ca:39:03:
- 9c:5d:4e:5f:dc:e5:dc:33:ce:19:af:19:fd:db:c9:a7:ca:d8:
- 65:73:42:73:35:70:57:99:f0:e0:b5:c8:79:31:72:f4:85:d8:
- 3d:20:04:cb:28:dc:22:bf:ce:43:7f:72:39:7e:b4:aa:c2:a4:
- e4:25:dd:af:0e:8c:a9:fc:23:a8:4e:3d:52:fe:d4:27:dd:08:
- de:4c:b6:6c:9c:9c:11:87:11:6e:cb:f0:43:38:4b:62:71:e7:
- 09:d0:01:3f:5c:51:03:41:06:03:76:27:17:15:19:26:a4:6d:
- 17:63:3e:00:d3:d4:02:17:33:17:87:57:9d:33:b5:7e:76:98:
- 3c:a5:68:da:e6:08:76:c5:3b:ea:6a:58:4c:16:da:92:d4:b3:
- a6:d0:2e:4d:07:7d:ed:57:fa:e1:2a:09:bc:1e:4c:94:3e:f2:
- 11:41:4c:03:a8:08:a4:4c:7a:f1:42:f2:8f:ae:d5:15:5a:c5:
- 22:d3:b0:d8:d5:1d:10:6a:ee:ed:a1:4d:b4:2c:33:e2:0b:c3:
- 92:91:c7:c9:f4:f4:2c:53:8a:f6:1a:80:ff:dc:b3:91:2d:51:
- 0d:cf:e8:d3:89:3f:b1:90:76:44:8f:b1:f9:c1:60:4d:03:28:
- 74:72:ba:26
------BEGIN CERTIFICATE-----
-MIIC3DCCAcSgAwIBAgICEAEwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwEQyBD
-QTAeFw0xOTEwMTgyMjI0MTBaFw0yOTEwMTUyMjI0MTBaMA8xDTALBgNVBAMMBEIg
-Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWvwuhefcS0Yzs42NK
-xzBTEA1gQYQnmfCfpJ7sGSQogAuOVQwTqxZyK0OqrPoPskeuo6KNZoUrL7HG8r22
-XjvRKw3CvJZP2V8sdHt/KixShPZxp4ff006+51NwzfBHW+RbW2RJN1uTmQl4IvIE
-nq+qkfYipVldnsfNxREanpk7Ga1RWfUO7DDyfmQzkc3wJhL+y/JuZ6LslG6ylz5R
-wMoK5IrzxvrNVZURV169m7lw1ASv8sheHvuz1wMKDr7P+seXY3rgtCIHpxi2pxrV
-IybBxDmDPEVTnf2kF2KNvfJLQNOFHQY6JE+PZXfNyehkpFUWII8XXPFrdduOrOss
-lygJAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHc80qqhyX3+
-tpA/yxv2ODcMKBr3MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEA
-jDWapGEIbmDZnq+rIonKyjkDnF1OX9zl3DPOGa8Z/dvJp8rYZXNCczVwV5nw4LXI
-eTFy9IXYPSAEyyjcIr/OQ39yOX60qsKk5CXdrw6MqfwjqE49Uv7UJ90I3ky2bJyc
-EYcRbsvwQzhLYnHnCdABP1xRA0EGA3YnFxUZJqRtF2M+ANPUAhczF4dXnTO1fnaY
-PKVo2uYIdsU76mpYTBbaktSzptAuTQd97Vf64SoJvB5MlD7yEUFMA6gIpEx68ULy
-j67VFVrFItOw2NUdEGru7aFNtCwz4gvDkpHHyfT0LFOK9hqA/9yzkS1RDc/o04k/
-sZB2RI+x+cFgTQModHK6Jg==
------END CERTIFICATE-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 7d:19:e5:55:d1:85:7c:54:62:f6:56:00:7a:cf:78:a9:38:29:81:ff
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: CN = C CA
- Validity
- Not Before: Oct 18 22:24:10 2019 GMT
- Not After : Oct 15 22:24:10 2029 GMT
- Subject: CN = C CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (2048 bit)
- Modulus:
- 00:97:21:4e:ff:ff:22:dd:de:6d:cc:05:75:3b:37:
- 80:28:9f:61:8b:a2:ac:9b:3b:b1:e6:3a:a4:35:ce:
- 7b:95:ce:d2:2f:95:f1:c2:51:c2:9d:21:71:dd:06:
- 3a:eb:67:68:59:2d:f6:19:b1:7d:98:06:c2:c4:19:
- 34:2a:00:0a:f1:0a:0b:76:39:ba:0f:e9:69:bc:14:
- c9:fa:38:b4:f6:38:55:45:3d:21:c7:b8:20:e3:47:
- ac:5b:9e:ec:7f:a9:8b:72:00:79:5c:25:13:01:86:
- a9:6a:d9:12:b1:d2:3a:a1:cc:e5:e0:63:b2:0d:ea:
- aa:a7:42:f9:de:cf:de:e0:15:9b:6e:cd:86:81:d8:
- 5f:3f:a1:7b:bc:97:31:40:0e:17:a3:aa:c4:48:5a:
- 5c:c8:e5:89:92:68:85:08:6c:cb:31:35:9c:fb:1e:
- d3:66:35:ee:d9:d7:ea:b8:5c:3e:d0:60:94:4c:3d:
- 2b:21:6b:72:b8:3a:16:e4:f1:ea:97:74:0c:cf:27:
- a5:03:c1:b7:c3:d9:4d:5a:3d:c5:8e:3f:ca:99:b4:
- b6:59:c6:9f:22:38:0d:4d:c7:f7:11:f8:d0:71:99:
- 5d:4b:e2:30:62:00:fb:01:c9:ca:3e:ed:6a:d8:6d:
- 2d:0f:1a:77:33:02:b4:41:b3:ba:f6:1c:38:be:54:
- c9:73
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- 63:B1:47:26:FC:DB:79:3F:76:96:69:4D:EA:7E:D0:B7:6A:D2:3F:A8
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha256WithRSAEncryption
- 8e:4d:6c:49:c9:9c:f9:cb:a0:81:9b:65:31:c7:bc:8c:c0:75:
- 4d:60:16:ef:bb:b6:b4:2a:5d:68:34:d7:e0:53:1f:3e:84:b6:
- aa:7d:fd:a1:c9:29:88:83:2e:ab:f3:87:43:a8:d8:5c:a8:1b:
- e0:58:50:84:03:05:15:03:01:07:30:d0:4a:f9:95:f1:86:be:
- 45:5b:31:f0:88:12:22:d7:7a:fb:0b:9f:95:41:ba:df:40:e3:
- b2:71:e7:4e:09:91:1c:5f:51:b3:ce:a5:00:0b:82:d1:04:f2:
- 1c:5a:14:4b:1b:3f:2d:41:11:7c:33:37:89:56:b4:b7:fa:d8:
- b9:20:8d:bd:a6:68:60:2a:3c:aa:61:38:74:d4:0a:16:41:70:
- d8:75:c4:6d:04:a8:b6:a5:0f:e7:02:52:0b:7d:44:d6:1b:2f:
- ca:06:aa:61:3d:8d:82:3f:34:c5:bb:08:69:6f:6c:b7:53:e5:
- 52:3d:dd:7b:1c:1f:d3:7d:38:43:ca:c7:75:9a:a8:a1:93:27:
- 13:b0:57:1a:ff:22:90:1f:b2:69:da:7a:a4:2f:16:51:fa:81:
- 6c:ed:c0:19:42:58:b5:21:67:c1:54:93:db:55:86:c7:97:09:
- 76:18:32:55:2a:b4:b1:ac:12:bc:3f:00:3d:b5:1c:ef:55:c4:
- f0:6c:a1:17
------BEGIN CERTIFICATE-----
-MIIC7jCCAdagAwIBAgIUfRnlVdGFfFRi9lYAes94qTgpgf8wDQYJKoZIhvcNAQEL
-BQAwDzENMAsGA1UEAwwEQyBDQTAeFw0xOTEwMTgyMjI0MTBaFw0yOTEwMTUyMjI0
-MTBaMA8xDTALBgNVBAMMBEMgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
-AoIBAQCXIU7//yLd3m3MBXU7N4Aon2GLoqybO7HmOqQ1znuVztIvlfHCUcKdIXHd
-BjrrZ2hZLfYZsX2YBsLEGTQqAArxCgt2OboP6Wm8FMn6OLT2OFVFPSHHuCDjR6xb
-nux/qYtyAHlcJRMBhqlq2RKx0jqhzOXgY7IN6qqnQvnez97gFZtuzYaB2F8/oXu8
-lzFADhejqsRIWlzI5YmSaIUIbMsxNZz7HtNmNe7Z1+q4XD7QYJRMPSsha3K4Ohbk
-8eqXdAzPJ6UDwbfD2U1aPcWOP8qZtLZZxp8iOA1Nx/cR+NBxmV1L4jBiAPsByco+
-7WrYbS0PGnczArRBs7r2HDi+VMlzAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8w
-HQYDVR0OBBYEFGOxRyb823k/dpZpTep+0Ldq0j+oMA4GA1UdDwEB/wQEAwIBBjAN
-BgkqhkiG9w0BAQsFAAOCAQEAjk1sScmc+cuggZtlMce8jMB1TWAW77u2tCpdaDTX
-4FMfPoS2qn39ockpiIMuq/OHQ6jYXKgb4FhQhAMFFQMBBzDQSvmV8Ya+RVsx8IgS
-Itd6+wuflUG630DjsnHnTgmRHF9Rs86lAAuC0QTyHFoUSxs/LUERfDM3iVa0t/rY
-uSCNvaZoYCo8qmE4dNQKFkFw2HXEbQSotqUP5wJSC31E1hsvygaqYT2Ngj80xbsI
-aW9st1PlUj3dexwf0304Q8rHdZqooZMnE7BXGv8ikB+yadp6pC8WUfqBbO3AGUJY
-tSFnwVST21WGx5cJdhgyVSq0sawSvD8APbUc71XE8GyhFw==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/root_ca_cert.pem b/src/pki/testdata/ssl/certificates/root_ca_cert.pem
deleted file mode 100644
index de3ce07..0000000
--- a/src/pki/testdata/ssl/certificates/root_ca_cert.pem
+++ /dev/null
@@ -1,108 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDGgR+Sc7ZYhdmN
-rLcg/ce/QLLq+uULUgGPmsHreoDB84mkPtUbYcy1z4CxGtu7JeAYv5JpJlDN5z//
-DTy0HxQSq2c33gcDbBJ0gjasw9TTZJ+R7Vv2qXqknJjoZWyU4ctVc674HVCweOV0
-/7E3LMsZPaSM53ZOhlw/37PtRSNPVJszxoleEx3dfVmlBzQohicf+p5TTyq2Qq03
-EmL1cja2AhJARP7HnpWJQ1FetG7HZ4BYQ77MByi9Wf8cTI2QQvTP/VQAT0hyK+Fn
-PIQXaJW/ygd734adVuMy43CHt/g69+NuZRR8u3a3F/FCjG8qNGQQNRSMhfZXv/Nc
-VZ2tAxDzAgMBAAECggEAFRDg897ZzB0wUEuzB4pHJ3HLSwqjQgdK6R2IVOAkR/D7
-e3W7kfNYETdbNfBev0auuJGkDQqm6qMO9JdICOl/bNfJ1XD3l5JhhwHGoaEKtgBo
-usjQyKWFwXBo/ci9tDMeLAxh1izuQjwiRb9Y5D0ZtK0JCHcL5Bt4MMMhyh1bOPDW
-xHm4VS7xa6sY9CRAjaDDHMv121xTkt4/fobClhky4TqklxnsGY0TzzRi1QSEYlVZ
-pgu/lv9Wp5nsAxwdXuRvY2U360yDHE5sW14r/VEZ6YB3ZTtMNFBVuydr+EAjUxf9
-BFconwqwPcnp3rONY79JuUUGo49k3KAs+2tOqV/0+QKBgQDo3R95iOHhVJ/AkprA
-ohmhVLsgfySVMGYYrik6ROxQ90NyqI8StD6Abwggk207znC+a3v2Kj8xA/8rRfiF
-7jXK+oPW6/2H+ASs9k1l3FqHQ7Wzt/bwZEQBUso+7zYpIchuMcPI7kmNJmG0zl6t
-033onQWflytl/1u6eilpMyQZjQKBgQDaOhJT24zK7CeYlaxvVVjgbn0xzu7PajBE
-tNmomkyDtaJAROkT9UvvZpBc8uhUeS0WPNLEE73SSt9jNBLcpBVAOCviuWM4emQi
-cx+B7PtQF1vP7hCnnFNCCW2geUDI5/YkzJRzVqtb++Ql+nBf3CdkWcwKrAfqC7gM
-byx1rMD0fwKBgQCNvFm2Ddz+3BVIj3NmIMRc8Efd5cWMkSLzjr5FW0JDnd0N4w8C
-oXcRkYNu4I0yQ9tX6/BNyzUfToF4A2TbkDxpycWJgaaVph6icGB3yYHIpyvnsee6
-Ni02aP/1AoEC1C8880lp+bAHG/+In7v9LaeLeFe95bNip+VbQZQHFju42QKBgQCq
-OIHzR14bKvn320gVz8zzwzuEjpVY1MuxzB+7lB/63MMivp3QI5aHtskEt7Thr2Or
-5OXCbGO0lRKKnyPXV2X8IdSZlWH/u/g/puz8u42Me6vyFRCIrTeEWzZX5jzSeZ1W
-Nv3UudYQefsMZL0jCObxL9oouOezeFCn4lAbuhUIoQKBgAHbFk6ubgUTr+XAMqUy
-Jkwyr7dhZ+gpZODQGxx8KBw4ky6eERf3DelbVOmrojg36XzU1UpufChQ0iZ8j4k3
-tVfGZH7DV96J6ulZIVevCwMh2nHngpVyG6g3v9xozRbW0QWtwwoPsQK8k7ogr++8
-H4w57rdYCq9osKtxR3XaqTgM
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 0b:cc:00:80:c9:a0:0b:a1:c7:09:7c:9f:71:0d:90:92:cf:ee:c7:f4
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C = US, ST = California, L = Mountain View, O = Test CA, CN = Test Root CA
- Validity
- Not Before: Oct 3 17:20:08 2022 GMT
- Not After : Sep 30 17:20:08 2032 GMT
- Subject: C = US, ST = California, L = Mountain View, O = Test CA, CN = Test Root CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:c6:81:1f:92:73:b6:58:85:d9:8d:ac:b7:20:fd:
- c7:bf:40:b2:ea:fa:e5:0b:52:01:8f:9a:c1:eb:7a:
- 80:c1:f3:89:a4:3e:d5:1b:61:cc:b5:cf:80:b1:1a:
- db:bb:25:e0:18:bf:92:69:26:50:cd:e7:3f:ff:0d:
- 3c:b4:1f:14:12:ab:67:37:de:07:03:6c:12:74:82:
- 36:ac:c3:d4:d3:64:9f:91:ed:5b:f6:a9:7a:a4:9c:
- 98:e8:65:6c:94:e1:cb:55:73:ae:f8:1d:50:b0:78:
- e5:74:ff:b1:37:2c:cb:19:3d:a4:8c:e7:76:4e:86:
- 5c:3f:df:b3:ed:45:23:4f:54:9b:33:c6:89:5e:13:
- 1d:dd:7d:59:a5:07:34:28:86:27:1f:fa:9e:53:4f:
- 2a:b6:42:ad:37:12:62:f5:72:36:b6:02:12:40:44:
- fe:c7:9e:95:89:43:51:5e:b4:6e:c7:67:80:58:43:
- be:cc:07:28:bd:59:ff:1c:4c:8d:90:42:f4:cf:fd:
- 54:00:4f:48:72:2b:e1:67:3c:84:17:68:95:bf:ca:
- 07:7b:df:86:9d:56:e3:32:e3:70:87:b7:f8:3a:f7:
- e3:6e:65:14:7c:bb:76:b7:17:f1:42:8c:6f:2a:34:
- 64:10:35:14:8c:85:f6:57:bf:f3:5c:55:9d:ad:03:
- 10:f3
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 39:9a:f6:0e:eb:08:4d:a0:f0:59:b9:91:fe:b5:d8:2e:4d:6b:
- 69:69:c5:d2:86:fc:a3:c2:a2:6c:ca:8d:98:1b:d2:fc:64:9b:
- 96:b4:47:f9:f4:ed:6f:52:3c:b5:13:f6:1e:71:51:3b:da:54:
- 93:c4:1d:94:17:23:76:9a:98:f5:9b:b8:b1:c5:ab:cd:ab:bd:
- 1a:c9:00:13:e0:e3:c7:5a:a7:21:71:eb:08:2b:ec:85:5c:08:
- 80:33:25:0f:1f:52:41:c4:9b:22:58:01:24:55:ef:9a:a6:ce:
- e4:85:a3:19:33:4d:7e:3f:04:32:15:d5:fc:63:5f:8b:dc:99:
- 2b:10:63:56:ac:60:6e:f9:db:9f:63:7b:a8:df:ab:72:28:8a:
- a9:e2:8e:9d:e6:6c:7e:5b:16:ba:94:b2:23:f2:d7:31:5b:de:
- 58:a0:8b:be:f4:6a:d2:d3:b4:e6:40:06:78:7a:2d:20:4c:cd:
- 9d:20:dd:3b:fc:b9:f3:94:13:b0:6b:18:d7:6b:e8:bf:14:cc:
- 87:30:8b:64:3f:ad:59:93:e5:f6:7c:d1:2b:f0:8e:4a:9c:c3:
- 34:18:4d:62:33:bd:a6:3a:b6:3f:1f:49:5b:63:b4:01:a8:5c:
- f0:98:93:35:53:2e:b2:f2:19:7f:87:0d:db:b1:80:61:38:c8:
- 47:01:85:b0
------BEGIN CERTIFICATE-----
-MIIDljCCAn6gAwIBAgIUC8wAgMmgC6HHCXyfcQ2Qks/ux/QwDQYJKoZIhvcNAQEL
-BQAwYzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM
-DU1vdW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3Qg
-Um9vdCBDQTAeFw0yMjEwMDMxNzIwMDhaFw0zMjA5MzAxNzIwMDhaMGMxCzAJBgNV
-BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBW
-aWV3MRAwDgYDVQQKDAdUZXN0IENBMRUwEwYDVQQDDAxUZXN0IFJvb3QgQ0EwggEi
-MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGgR+Sc7ZYhdmNrLcg/ce/QLLq
-+uULUgGPmsHreoDB84mkPtUbYcy1z4CxGtu7JeAYv5JpJlDN5z//DTy0HxQSq2c3
-3gcDbBJ0gjasw9TTZJ+R7Vv2qXqknJjoZWyU4ctVc674HVCweOV0/7E3LMsZPaSM
-53ZOhlw/37PtRSNPVJszxoleEx3dfVmlBzQohicf+p5TTyq2Qq03EmL1cja2AhJA
-RP7HnpWJQ1FetG7HZ4BYQ77MByi9Wf8cTI2QQvTP/VQAT0hyK+FnPIQXaJW/ygd7
-34adVuMy43CHt/g69+NuZRR8u3a3F/FCjG8qNGQQNRSMhfZXv/NcVZ2tAxDzAgMB
-AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJsmC4qYqbsduR8c4xpA
-M+2OF4irMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAOZr2DusI
-TaDwWbmR/rXYLk1raWnF0ob8o8KibMqNmBvS/GSblrRH+fTtb1I8tRP2HnFRO9pU
-k8QdlBcjdpqY9Zu4scWrzau9GskAE+Djx1qnIXHrCCvshVwIgDMlDx9SQcSbIlgB
-JFXvmqbO5IWjGTNNfj8EMhXV/GNfi9yZKxBjVqxgbvnbn2N7qN+rciiKqeKOneZs
-flsWupSyI/LXMVveWKCLvvRq0tO05kAGeHotIEzNnSDdO/y585QTsGsY12vovxTM
-hzCLZD+tWZPl9nzRK/COSpzDNBhNYjO9pjq2Px9JW2O0Aahc8JiTNVMusvIZf4cN
-27GAYTjIRwGFsA==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/rsa-1024-1.key b/src/pki/testdata/ssl/certificates/rsa-1024-1.key
deleted file mode 100644
index 5355480..0000000
--- a/src/pki/testdata/ssl/certificates/rsa-1024-1.key
+++ /dev/null
@@ -1,16 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIICeQIBADANBgkqhkiG9w0BAQEFAASCAmMwggJfAgEAAoGBAL7mb78RnGZpGth3
-z5ilQTmz77Cc6YOqZPulE83+Vnjy39YzK0csTluvbWqVMUHtYGsRF8h+gYvywt8l
-zITocpE0UyeXlzsoOI8h7SgUCrYPAl9l6VydsUQ3F14uJ4LWaQcz/R601LhYrvQc
-XgpDr4U1rp108EAFG01BVFFiInCVAgMBAAECgYEAtGnxuCC7r+mrTmNE1d1wHEma
-wE47Po0d7NlhMzAopxvaQYSQZS5RS8MqZC1lpQnjMqyvznMImauvUddWR1GrWz6T
-jU7YJiq/NJZ26qzACKCJWj9UG37fzC3L7JDMz4Yz3K/iISH7iDLIrh4JWw8A6xQL
-+cq8/u4ZhjtODbxYHu0CQQDuPMkrqPolGpy6mo18jP8QuNooZmpZ5z5C72GtqqRz
-AMcfIOtluBBcFef7iZoKa+YcEldjpdiCK0I3qy86G9JLAkEAzSIg3A8qta3o/U2d
-TwUq5BMGUotHmG/A1MwEK5GnRHj3L0nu/HpE3tjrKrkMC4i+zVTYBop90XFBPdy6
-d+v8nwJBAM6Qdf0dLoctY+eISlVMC3x8SuvsoRoCnsF6vb7OznfInN4otPIlfknZ
-1KMM1DtlAsgkPxFvoyJ6T5flHbXMmbECQQCaKR/QwYUzbDNAyeeCzztgk/uYZRu1
-L6cXRQuNQrUV/GKno0R7cdf4McTqIo8uy+G4ph6DK+lKUXbaatun7C25AkEAsr/A
-yOyChfU16iQMa45LhT9FoplbNbDvczJ3EUUsf8i1I/8FG/GM4AaUMUshdwCf7hdh
-ZBHFE6S2PIUV9iZVbA==
------END PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/rsa-1024-2.key b/src/pki/testdata/ssl/certificates/rsa-1024-2.key
deleted file mode 100644
index 14feba2..0000000
--- a/src/pki/testdata/ssl/certificates/rsa-1024-2.key
+++ /dev/null
@@ -1,16 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAM3oM+IGvDDamzE+
-5cZRkeoH8PBYH5HSChJOcRepGpPMxsOjR3aomPCi0eI3cR4IOqaakpxDJswp+ioA
-H4hEMDMoVZijvpXEto0QAy/2O7K7QzhQ1ylFNM8k6WD4xfM8W6PlrlxFHjH47QDq
-k/njjASgxTfj6zHCwauQG4FYTmZNAgMBAAECgYBuds82yDQ35V9yuPKeRW6JZj89
-QZmWKl+a2JhVgDQw7KAJntQc9XAvULpWqTW3TeThMnXK/T+YMkDyPWStPx+3q9PR
-AQS65Bz8BltepO5sdy2QWGnOss97fLG5DJgTHrAZYDKLxJah9hDOf5Tjq4d9GYka
-D6cOgWErS3wv+ERZhQJBAOuVmTnEywk0TIGjIOWud+Yv2TUIc3IqBZnyF1RN8y1y
-NFVGwpCb8aKLRawfDta/kNkQVOkYZCtZRdYb1NHqBJMCQQDfwDel33a3OnVdQNoB
-GbfEJYqmgY7JCzFfH9EVzqB45x6yYvwAHStp1r5dYmwMUSIVs5B8SFA4bUN6cAMr
-BJWfAkEA4xGOXuAP0w9Vrp5NVxSS/IuiEDvVCnT2cSum0NtRSLyLNKa/YiLtBH64
-6O4Gn3aFZrMXJJUd96pUZcrtlma5gQJAaUR0qdxNbPza1Km7JwNjequy5I1VkO5s
-JvXAF8Njqh4KSiDZsHAIyb2XSDYS4WSWZaFaW65l13ZIZeUnCGkavwJAMn0mC5e4
-idlSe3QqaOa3haxAXquQkImH6pSI4jRPzTJxPd8BlShlZeVC4IyCwfz/o6Azce+W
-w+5b/8VIMO2s9g==
------END PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/rsa-1024-3.key b/src/pki/testdata/ssl/certificates/rsa-1024-3.key
deleted file mode 100644
index 4a8af8f..0000000
--- a/src/pki/testdata/ssl/certificates/rsa-1024-3.key
+++ /dev/null
@@ -1,16 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAMqUxHtJfHQ6709j
-T1yMqY/JH/dg0Kl3DaddDScaVRiv2X+0mhxkFu4/rWEYslj1aSS8CgcdVxSdHsI0
-dXEsumoRFJl/EmfBAwQkukgpkjuE5uUORuxt2vzT1zGPutX0UlMiLINdZ1AB45D6
-c78SBTiIoXai7FZ+SayOf/3MQsYpAgMBAAECgYB7nbITpTD7X+cd43TO/cqOQeVu
-t7Y8YriDMyXOgaQBr3SiF9uejXjsoxCyWjaiUAZ78v6PftjfbE0Tpp0vlWKeNo0q
-iJ0rjbxf04bIpU7+Q+/I4hkXngu7WvmXS8ZjmamEvT1a9XN8bZ1QD+lglYAkZKj5
-iwlVpZfYokj+4sMIgQJBAOnkLBrmlaXhh3KbzLcKPMtmOlm8y2PuSziJN7JTdkb7
-gwaQAa1+5ToOEjAS64qP+BRp9uLTnPuVnbyd27nDElkCQQDduu9KbS2o9IazrVeR
-FMqAitIWb9v/k98IfOc7/LKeyA7oVCzqAsq0nlYM4unGYSiIdlJLLnQCtbVABB4D
-6rhRAkEApM49cbsWqWsQCObVSgixq9Tdusu4OTL4196AW2xKBFxHCAHC3OB0XwL5
-N9ytEda+RIwiBdR8Yh4bpoNJB0z4CQJBAI9yo+LztUmMQSU3LOK4n7X/maFYZuz3
-HqDgJb0iY/Djnvlhk9klSz0E/sjBeNqV+uImImFvQTCLnCI5R63jCbECQQDpeDiP
-DcKOL773vayJixOvvSqruHGvM87KMkpW2zsLbxrlN2gKyf3iMkQX1Kat945qPD98
-kpnDpyVRVRxIc6Sg
------END PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/rsa-2048-1.key b/src/pki/testdata/ssl/certificates/rsa-2048-1.key
deleted file mode 100644
index 384bf68..0000000
--- a/src/pki/testdata/ssl/certificates/rsa-2048-1.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCvBAyWDWogcaoH
-kjhp9fmm7OognM/SNfIuEKMiqmFLz4GsiNa1I4By8kPqcI8u0KRBvX0F/DDfBvDy
-8nm7gbfMliILkPTKlDqAKY51kV1qBkSQhhiQ7Tl3KXjB4tbdjJemv9TrXfwfr+k4
-9dP8oYLmVmyYRWMGybW7tA6MJewLYeAIBZpbcz0okrKD7izMEi7eCWvQ9O6PdVMG
-atBfUbGrZ0oX0XzsJQgI6iJNq88WQCbfybQLDvXleneem8NHVYO8fCmgVzgsiVw5
-fgaeYWBfCVOGUHsoVwxTDThAfoIGHX1ldQ+3YP+pyph43h5e9jWHHwAjg45SFqkI
-XRTu4I/HAgMBAAECggEASmt63J10qLocdl63TVtSXqg0QEzd1AGrauoZLGbtu3pP
-pimDvv+LIZWhyoE1aU8/4VJtZMuhjlyZvXzcxZ45pS2b6XYomTGhlJjXImf/JFPo
-+NmEfa/Z9TE1z6AhBJFBdR7yL2lGCcVX8ygZDb4x9rb+M1uh6aOA+wFsBC0l64pt
-YNGaOtgR1DCqn6mtxFcUOMt6gWEbgu2gwieo4qSGPmGOwNxhEbMWPL+0CPemW+li
-K+fB2RrYpGdSD8kyWHWqZTUT7SegcT2mO3F+eNwwy69srb/R/MAUfbYXbQhTrPuI
-vavor2vT7++Ha2Z7FV+715Jsn2f8OkW0UyFzb7PQsQKBgQDUG5H0XR34wqAfNgaZ
-lzJqDeh6Tg0v991t4imNd/yFBJEa4PyonM9m9ka9o13ySPyIuUyqvUDm0/geVH1g
-dn7o3rTVCKbfeCeDWaU00elMjtCezeDUlnsTgcHpLEpb/5uxJhAL2/KcMlOvHzGv
-ima5zj2tB0dvUfkCtzLthb/etwKBgQDTO4hNrTcNQBTg/XUG2TSERo6WslVOZjJ5
-70AlE9PYgqmoNUONg8XxGwj8n7lx+AY2BB0kfM9ANVc+BNjI2fqFLba2DYDGMpsq
-XrxR2SiRe8UCjftFgHSElIx/mGplgAbElGrSd+pkONwnxtE3E0JD/+y+/dKQeg9z
-iVraymnHcQKBgQC8/9gdU3/qcpo1VXGqGGTuxXfay4PKs2WWjUkTatATQw99UO8x
-25CfoWFFh7Wlt812kw6ysTKMvGJBvG1/r/bDz/Z4QV5Yj/s9enrQRx9IfZV9e9wT
-8ga3Sg8ck7+qnGgCAPWZa6KR9fJFgFlInt2MQS8J6AuKMRPejJmPtndSnwKBgFPP
-dCZ1yrkMKvyWNB+ygL7XC+5I9cX0kKSGxCmx80UdmtktwQ7eMOSYOHmbmkXZBgXa
-ngGDL+wm/eWSoL0Yl+jNmYgkVWrOW3h1PD0xb4JB3IpF8WPDMvgDxLc/rz90i7rl
-tHirsalwUhHKNeqnToySd8nUBf7jH0xVPGJBG7VRAoGBAIty6nRYERJkdWgzrrU+
-TmSxTAFi4hqc/RXMa7kda40SBp3339+/KxaNCQ5YUJjDI/cggEc/Tnm2MjkheH5W
-nBC1iP1A1g9wlk6Ak/RQIq8FRiQFdVwGU2Xa+dRQAyEj8Xq2KudmKkj1M630/kSg
-3qCwc3kKPf2N5fjAtHUwLLHP
------END PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/rsa-2048-2.key b/src/pki/testdata/ssl/certificates/rsa-2048-2.key
deleted file mode 100644
index 3336ce7..0000000
--- a/src/pki/testdata/ssl/certificates/rsa-2048-2.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCncOKXlHiC4cH7
-YiXsOMc3Vh3OBN26dK/c9tiVG7zQU9EbXbUWz9NNI8+wUDwyBtrR54zH+5R9+cj/
-9QOPd2Vsv3wfaSIaR3qfsag/TK2rooYAis11F17lUHx02KZlZodagEuLCMgdlyIL
-F0RTW4+Nt9ZklEFMXHYxZW2odDiimaUl0tJ3//jGNEBQwHSS7BbA88vKBknjRP4d
-0lFZGJPM7VyEkYElp4qcTBvn4VY89lbgUdVcZjaMOtoUnK6DUZN7GAsWr222y7kc
-BEH5fFOWB2PrgKY//tb41fujm16u2r4jjHngZ8FSs5md3A7z1CP4ChpNF33k9z6s
-AzWb+GNhAgMBAAECggEAFFJdDeyVG71un6Xv2FWjyBGJmIF6r7CNz5GeA6rUJaym
-il27JsOeb5RTFqEGTUQLtsIVkgf0o713KamA/x6MjsBGvkEyRGI8fblAJD6YLWaS
-QOqXuQhXGhnEoSHSQChLcS50/LDaKM048oOmZT+NkrOnL5nWuv/V0HTw9Cr23LT6
-wMuefBrN9cr8ZMmlOMNvJaoTKbCxr6bg4bKjfGr40QX05GnLXaOhg74wWPWMCFZQ
-CfyFhCJvBcXk9Xifb2pMTk9GezfSd28JKy3XKjd2bUTD8KGStgnKvIB7FXVqaQb/
-QOTE0USkYn3l6g53fXWdgk9i87ZRHmMarTv4K8wvaQKBgQDbe6v0CS6ui5A4bliC
-z8EoZVmxxT+vgOf56ZOE65lGcPHOtTMDDL2u8MxqyjnWc7dXrw8FvfpurIe/TEU9
-Y5kCj9NUA08940RKX/5u5RDaW9X2cGVlv7yJSDbA1JxpUjSzc98VFWQJrFkhHBfI
-3eLdVLp+dHBBpGCgZuVQD2ymGwKBgQDDTJwspscuh9q9SWWgcyJv5ke+4MwosgkP
-g8IC2dFFHr3j3GoFnVrrVP6w8zzezNb2ba+9xGaohNgHjmwC203ZcdDCUxem3t/L
-GUM4+dCUC87nB/bGd772pu1jbZZ9bRUBvgf4x1zhlShQNnD+UL2/p/stzWl6SE47
-Yva2416kMwKBgCBZ7lKeN99KewuWWD2P2ezWY44sgOKhoY/YugHRqFoVs87ALrC4
-ZA0xOTBUdooBrHikORajlhJSJAAygdI2qAsUoBW2FywMH7jGxX4bDYziFHuqvYdt
-56BkoI1zyUpM76+z2KIG8SPr34dd2LOm4RW2s3aIOzOxwvxhrlNKsr0ZAoGBALTH
-4LUweKYo2aFoJKueiB0fBAC75CAzlVGIPHoZGK8r4sjfCkFCRJwcpFo1/n2bDc01
-AX3fJMwPlE2CV5dZW7nRslV/RyCPpIdDTkeab6nrOE4BwDw9MkbthEcKdUiLRevD
-9WsjWGX0hUmi63tuUAbuPwNJ5r5r2gb897WZyMyjAoGAYcNgSL1udQE7pEqrAl0t
-ffTbbTJQ487sZm3qhFNXtuitC3h6eXpJecsWRoB/Jnhi4cpSjWgYJzjV4rkZSF79
-es031jtdnPf6G94ZzjTKnkr4z34reDQusukuuD1SSsbURBGVacgZxkq0UaRAROfT
-BTPraf9GfA9BnUEIFdjeKwI=
------END PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/rsa-2048-3.key b/src/pki/testdata/ssl/certificates/rsa-2048-3.key
deleted file mode 100644
index 9a6f499..0000000
--- a/src/pki/testdata/ssl/certificates/rsa-2048-3.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDW8jowfwvUgEye
-CyzXw4rrlw1+liz+s9nWucRN5t8dia9L9dQhT0aBg7mUKOQ7L1wcRwzPMVoyFF3G
-KsJw829iMm65P4fy+L9/C1XFfJ9x4rMeya9bHZuKxr29Ieia9KFAaWtASSngF6Uc
-zwvGJ4AZQzUIiE6Ku/ZpGBjki9k36LsufQIeOaEaoHlSPS1K6pMh9Br40xQ+FkB4
-OwFt7zNQygiSJt6NHvET4ib2i+0lZXRa32yl/dEJyf3aWT3iMxm4wLslLOI7Bud+
-y04bVYi6hw+JFUFmFCLkrMW/iZ69S3lUPoUO9xz8fuCR64KjwjSR4FFawZ7ZQUKf
-OUOu3dcXAgMBAAECggEAMss1AwbSxdm3wVVEuIwmBPxCHRrh8SKRJNPrVrlrGjDS
-MvIZufFg6PQ245MyM+ZCLxB/L2srNFBpxI2QO17bgGoIjlA8ESfFIQGNuEh16VS4
-HVtty+tYOVgzuEEOFagffvgqdxuTALi1tPQchSwKcm3WV3jWjqRSW41tPHzrzPEM
-gNw6mlLIUxgaxJ31SytDPfLcCxhjyY1cLOseAtD37x8HZVw52cojmjn0Uy2+TeLu
-6e34KqWzTcO8U7w4mBu6KyQYS5Q2GxR4eMfrja2nmQEJjjtL/MjPCr1RavzRmeO8
-j2w0GbTZaM2otzI21VbNpM+OmX3OkGmKiPNIm0HVKQKBgQDufzscdRfcJSng9Wb/
-kB1mr+AYZubzhHIVgN50UWnzqiLsVBWRGT6+y49z7dN3+4aGHXKjmV0Ceimi/6uC
-nNsZ1kfJrHWXmTbTslQlBxOwyMuBsolWBSZdaqoX3dhDNu7EbUPgWqWjrv412EhH
-UIH/mpmu8TgyA/SPT7BiHjuDcwKBgQDmuIkAYWseZ5iEWXPX2rH1XTtvKAHuzjf7
-yPk5QX+ZeTZiPZPzvn4I6x4kMjnpn5wrVkm5QMQVK2NKpaQwMtdkQcevVybXVJ/u
-0SMRHgXiesF6pG4YgREEJjbHdwmRgAaLffOPVSOvEGPc8ha1tEE7ZwgpKfjnCStC
-2VkmWpcczQKBgQDsn3MIUuxvULfyJ8ge+t8QyKIv07iEFv4Rc6BCC5xxUnX/v5T+
-NuvX5KLZRDaxLe5UFddtlXWARbAVtlB18CY5xi3HW8H3vN12v9FYQ2M33KB8d6Rm
-oglkWbWUpFgyp8fRPw8/AvCgK7ivt3xOtQOlk7+yoEU+6kmz/j5jutcVHQKBgQDP
-+ocdPbP3C4GzxIMlkHGc8fcyo0jiwSg8IxVuJHnmmhqJAmNNdGlelrtr+46y53s6
-oaUBhr17K8psrtZL0HjTWmyrxY8wyosFF6dZtcuuNeQVLwZDtozlRaFZuxd3/oVn
-1xjoGuJ42/h5Yg1QrHWlG6KCoOBLO7uwnga8CStw/QKBgQDSzUAJaak3XFAfdou3
-GxWLQJcOXB/WxrZA7gq6K2aWvkY80AOPMGLhVFXA8k1fLI7jn2f9x7Ff6PNrzclf
-mvvN6g6YH0vH9k+W6aHBnen8oGjW3XU4MHn7dPxfxPJ/MDT3toVAvD+6QnKFdd7o
-xCDad5+lKr6f0yyPije/ZDkSSA==
------END PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/rsa-768-1.key b/src/pki/testdata/ssl/certificates/rsa-768-1.key
deleted file mode 100644
index 2ccd987..0000000
--- a/src/pki/testdata/ssl/certificates/rsa-768-1.key
+++ /dev/null
@@ -1,13 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIB5gIBADANBgkqhkiG9w0BAQEFAASCAdAwggHMAgEAAmEAn8Be4Q88Bif6duPK
-vG+iyt96BFtCTUgjuNEwhcWoeSO6BeZPeu1VRqOHI7/GE4jHO6iVRCnhw9DJg5eb
-+p6zX1IWytyhke/psWBl3RNGXOvLucVWUJctS5pgKN1FNsILAgMBAAECYQCDjRaU
-nsb/CszmOo8ovYWBKqaAD+Z5XX6NIzah8jLaDuGRGic5Q1eF5APVHIcwbuDU2Fyv
-NIJqf768Gx/lUzmAlcGjF9hIRh5vrE4zfeCa2wSUjWNZPmqdTzjkM3r0NYECMQDM
-1ORCXgP/DYHQbCTRFvNA/jYaIXRjUs+HXefXe27jJD32W3Mf+lyIcBV/mR7lRkUC
-MQDHqJMkx3TiRsP2cYmG8citPrEjEA0TwPg181Kvi3N6aE5QzNHHLvl2nVJi7VPl
-VA8CMQCayYKY2J0if52K2D5WN4appbFSu9dNO4YSYJdT0jYwtfGRGvh7wOFuRW0p
-mJetYRUCMQCN9fiZoBAli3duVRAaGPQ86mR8r778mqphgd763kZ/dIaqwNcvruDF
-S9r2aBTM7FUCMD46f/dAx2EfxsAfn3lYQWVpuxFQpK+tIqYzjeKsu/zRaqEkcog5
-BOq06OV3qPYsVA==
------END PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/rsa-768-2.key b/src/pki/testdata/ssl/certificates/rsa-768-2.key
deleted file mode 100644
index 6c834c4..0000000
--- a/src/pki/testdata/ssl/certificates/rsa-768-2.key
+++ /dev/null
@@ -1,13 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIB5wIBADANBgkqhkiG9w0BAQEFAASCAdEwggHNAgEAAmEA4SDrD2C751/n+lHQ
-UBn5YynSU9hrO9ttTcnvMgqiL0gv2lAsx0N9QM0dg8rHsQodUYZotUQ0qbzCxzEw
-pRVTHcEYHSnjaO7OfsqpGke+66jK0VhsQBkGbU2RznY3at3fAgMBAAECYQCRzs4v
-QYmxy03ltENk/c2lyhptL4gUVoOulBEVqgls8iX8EV1PGYjwBWkOSLGZGmC3u4KI
-le1z9L9iZxO5GGO0SJ/bLW/pGofgHCikBjLmhhyLuV0oFsY6te/q21fWu2ECMQD0
-nbX+qhNgXYsZ96cb71ZfD80yGtu7dCVEYL/iC30P3BEztLabEIdVwmoUyBFfCDkC
-MQDrmwnyqGx431YH3uyBrlwbJhRvAFfwACMy+6sY54BZdaPni9hHcQoKrAiQOe92
-ptcCMQDcS5AUefybQ4M7bpIbkU7aq7NjVVbgGbhaPTtximElwE3pn+z390m6TS0V
-7Bvg1tkCMQCDkPdUJ1MziFvtV0IxBKHwkyoz9jglEJ6XWMxpwtT8n+HgakpjUq9t
-2DWL/J5JXs8CMQDsP+WjN9GzsQtuUMXEUxc1wgMVRFwvQ55hmXfeWaT2bgX+jpAn
-+SreMT1bErrH2M8=
------END PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/rsa-768-3.key b/src/pki/testdata/ssl/certificates/rsa-768-3.key
deleted file mode 100644
index fcf0680..0000000
--- a/src/pki/testdata/ssl/certificates/rsa-768-3.key
+++ /dev/null
@@ -1,13 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIB5AIBADANBgkqhkiG9w0BAQEFAASCAc4wggHKAgEAAmEAtngFrnpogJ4DAPMt
-Jvxxl3vSNFdnNMlpRGlHpPqhtOHTzYzXvRvSmSGzpYhvzVCFujjTvtszd86yehxr
-+081ZtQbhHGhPKnudoPfqfYGUB6djJX4+I1pm2cWTOIXiGL7AgMBAAECYE7lbId5
-tA/Qwrm5a8+Mnc0DI+uv0xc280Y6Q1kpaZwdfQhGms3Q5umBcfzkFntvEfgMJstC
-KDWgH5Vo6v7oR/Hk8D0NzOyFNfEU10g72EG47PF2qFMlCZ3dTV5U3lPtOQIxAOfC
-NB/LuHFiMA5LeFlfbV0Fyj4Kr+lqtGdwClmX3+KgfTUj9RcEMs+34z+UpYXt3wIx
-AMmN/LkrZpwktp/iZuaKDvkA5foN660LguOt87/NdIN4l2hn8auEhwmh0Vno5gu2
-ZQIwf6kWFT2eh7ZSSk2AKZrLHyaFVM+GPsksPp4U1W03QhqtXYxFATyq0Ii2gNtc
-of15AjEAvCh2HnM61lebuYTE5UFLGv/QsfBe7GvLpDsXSx5FQBrK1ef7f1A4NDDB
-XLsETzjVAjAegTa8Fk65Qc3YODZhIcDRbJ195DLUaw7ETgpT0utLPH7Kkn1GNyZf
-wzlUtrz3r58=
------END PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/rsa-8200-1.key b/src/pki/testdata/ssl/certificates/rsa-8200-1.key
deleted file mode 100644
index 74cf0d9..0000000
--- a/src/pki/testdata/ssl/certificates/rsa-8200-1.key
+++ /dev/null
@@ -1,100 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIISRQIBADANBgkqhkiG9w0BAQEFAASCEi8wghIrAgEAAoIEAgCryOGbBSSQ/E53
-duYJ8JpWms7zJk8+FpvZGW8CwGH2Qjs9UQmqMhGKTNySND6Gfk+tAGxd8zWGayyJ
-rVhi5Sigr3+lPieGLt3TLke8LKysm0sSJU+xUUdZUTRjE3eff9Qb2NmgJ0uQIYic
-jSUDznRiOpblzEhX4Rw1Kiw+fkqqsnXRg1+gonL9EmWl28zoeQFvcGRyknZCDpyR
-K4Z667TuPoLk6F8S1IxyIEQPZciFbUnUTABbZTHQWZ33y7HmB3vc/P98PFilXsXH
-41h4AdxzN/5pTI7flRP/bu+4NiVHE/rM1h+ag29R1McxzxoOi9ToYgVRenjSSkgs
-/kjOELvBtIyivHNCwJjRrSXZi9fpZjgGTCqOg2mebU3qWDe0zL97jt9wGG612oFu
-pqCBFnBSn6L/dc03K9Ckx9xuRYv3upc4xOMQnOXKLb9/k/TPpTmSQEk1qhEGOoKw
-NC769IiTo69IxhJbB67gBVQzgJ5CVHfEzFid2SM1g59N3gNezjPb3y44ESlPJSfm
-I/S9Yg/divrE7F4BvFGDP5TIaN3sYZf0IEN6140bz3gNhCP5vD64xFt+Mn3sUfWo
-pAmUpKWY7u7YCn2B3XWg65jHelgzC+itLKHRMt0nSlKCLmIKS/UC/PnmRdNIekBh
-46tS29d3vC9cbeTpeZwneOEP789KO0yqeckGmZyktw6VvF7bFKDyrFQONeYz85No
-+dw3L54jnv4BV0bTwuv3CoU6MQI+DSfqaGxv5kmVxMDlLGpGJsezarUyrTseJBSE
-DxungNAGktEawqkyk7ZRWdAUSZlgX/qanVenJ3pwrWWagqkyW5BKmzh+EhnGXnoM
-t23+a2FjyoQRKYFhKL8pJ1QLBYJMNvqK+j2tUWHzgwwYV5YlOdDYz+U3+mQH7xOC
-d0Egg61ci0RmRBRTwLqHWvKhMpOD6JEFhuCEALSe6b73faNkaTvUFV6y7SDkkAea
-fLpBFosHCtGoC5ZwklD9rCKKxcdjJJESMi5RutOMYzA4Y9dayUBN7k1LVx0dw8ei
-ZbWBvETGT3qIbMI9hjvRnJ3x35KyoKbvFXDtbKCQ58HbfO5kk4BAEoFhete+UsFO
-KgMQoKue4Ps9sPNWVWwg7ZxrTKsHMje3dpklMNHdqtgHt69eio88z7zX4ZQPUEN6
-PVUPosX0qWtW/sHVet0iDt0BANKD9T8/iwrns9HbPd2d/LwAOyU0kywdNkplCFOP
-vNHaeSjbrIQq5/SEszLSmbh1kaNOimVBFwjie5Ju5q+4n2FahMtKkEqBajj1f4eT
-dR8hs4evuZaKkzs6jGvQyuI28lBfkz3M9cfumHAShfXoihZcwrb53CBmjN+UBe8l
-LaV0kGIknQIDAQABAoIEAR7kr337fMn+NfZSEaiz9m2gxZsAxrt5wWlXo5kxE+z/
-mDu8uSo8et8OV5SLhLsXOCj6rIJw3K1h1M6luAGBCL9tEF2dQeplv0rdRdVXi243
-N1b6Eszmuxga/Hrc42Rxzql7ZBfjOTmgbjsJPyDiHhgURVLqXBBB0ZrWDMLoX3E3
-Suz03Vu8G0Xb6x/a2YztRg7OfaIFKPNUQV/yHes5PH6kC1IzX/W499EGcHb8bQVh
-1Cczy9Sj7EN1+my32zRtIB9r+F5VU/PZiWQbRKvAWe72oPA67m7TFpeXUdElG6se
-srnnwCM/g+OJipEwl5UKHK32AtLWXagj57r/uAQnCj0ZxTj2/xuAG3uJ0ga/mYLF
-+UlYpUaf53ywV5TPbKU9NSp5VUGJg099Dk3h9XeBm42gW+XpP5CudoVL1B6Yr0VL
-7yosblFshf7IH2pIJ3y4UBQ3L3NRNGKUXzBlEhXbqDw08a76wA5S4WY0TyI7/Toc
-irV/smggxq43D40nYh/IoZbnGh7HJ1Cuc/B1guwUGJpVBigoAff58AbUhmNMSKzc
-GEG1E62h2iSoOQTlQLsG2ZjM509YsUCwtKcxaO+sdIN+ZMHBkTSrqR3ZgM5O+FGl
-0KBkKG3A4fjQ6umygbssUdHJwP9ii067fZydHxB1rNhBpZrPwJ0kW6rVmFQPYo4M
-+1ENsX0AIz8hLx+10G602hcWu8MVgqO+E1Yoo5n6eNxCbKootZwSRQSwcUXgE9m0
-Q1NHKHsK+pvjR/QyvoEr7SRmcox4PHcYID7EMfPMu2UtsIdRKi4NkIvmzE9a52s1
-MPoanT+t9a4Zte4nQ+htFFFQFt10ue8Vqm16wPJ97gnpEM8keQhVYrttIKDVr2vs
-QEcHJ/PgDeIihy44AbPTQKUYzZ4YEMAkDgoVsBq3Ktk8DTjxOZrZw7xq9xJPS9N3
-5oLaTcUX2670SZUpRAg4/wArQncuE2pfsYP+beaGnUATiYRd8GoDSYtPOSa7BcyN
-Eexo8tB5Kzmvgcypk5N5jefLaVdUdczroIlSDlUcdAQb35Yvnd7F3HLWXJtUIPbh
-LZTJwJWooQVJLDt2lzrg/HQnD+UaYNI1Z8/oMaZ+zUBvQ8gBzArO3SRGfRI7lzvk
-wcJM4LqBO0pIO67NzhVCyhJn7Ua3P++W9d7LULb5fqy/O64W2J2o2Xd9hZEdA47A
-6JidJ2yNsv0p3AUgtVebEhBRQs6bPX4/siYif3xgT1ZZb8fTtQBYWsW8LS4Itdf9
-WaJuUlfI7xdHpQnMVd5qiEjrDk02/x4JI4DmveO/pLyQAJ3qQpvGxXUZ70ecfSAk
-ASn2OADu76TclVlQ4hvZ5913jxx8PWHFykK3w7N82xGZAoICAQ4FzISY+EaKydn8
-jOfOirjfct+0x0PYeDZ3XFEq1CcW7nHARMxlGBe9IwEgoAn/RtLmHtSrscPLpN+8
-mXS8ucPZwxIrbg2tCTZ2FktxAHldz3Fr7aGGeT4F7jE3e0gwYgU1h+CIMyDZZY/H
-j/hANx1a+mAkDr7jafEuOe6nOfnWSuCaTPbyYcyGQ4pIe2Z5A0A6MFATT2Z2YOC6
-tW98BNtw9ucOFNo9ZNakB8ZZ4WOG4vpFSSoSO3xJ2STn5HwuO+j2UF0ptmt5H6Pc
-LzYnbbengq5H0dsnyw/sKbTO4jzXfORjxPhwpvrwNlNvs9hmLB6IKzfiN1PXKITS
-updr+Ts72zD1I95dF3F0TsefncBSY9qq8D0Nq08zF4yYanxPLOmqjc1iCoSWyx95
-RjNTiAoTWqmXvbtd4Z6OBU3M2m5QQYLu1mGcfKveRvW6KdueBhZwXEcY7Vb+pU3q
-1J+Omh4wCQiyuuwsGu6QXmfkcVBOhLDoKxzAQJlch1l3zJdAQoul3iCYnptz6weR
-47Ceg4cdP50KLvgboq4N1VJgI7ivMB9gfP+J/J7JogjUigoQNOLqb/X7Zwmv5ZIX
-ZaKIB39HtKFvo1b/zpZagnx4y1K39pUFY8Nm3v0xZNU+keT3FCjOk44L+sXhdu5F
-tbA81qb+7kBhZn9LMfz9sDTIUXq3OwKCAgEMQCGtq+7q0Scml0Ds5ORrymYX/zhh
-xrkc/jbEHefvq50cCE7Sxmvm+NdFDz3JEpenWR4zPR0+39j8lNCWUK6azUhvqSK/
-HYLLI2EDeUyeCQyULoNT4qva6wnJNuufjaNsOOmwwuBAIgurFKYaTEMD+m+1hYG9
-Pe4drKMm3e3Xdg9IlJdKmY7MY+chxeCuiPfGO/MAm0Rz8pcKo1/cd308HuDL+CnE
-LAFDYc7fa7oaj8i698m6QGeadltIPoggOTntoto659SK8ZLWOHsD3E2YC4Iq6dtQ
-U8p8qWqn2kdWbLPnRhy5BXFcxeVFAbJOvgFMlSw1cCpoOySczBDlSpRjZV3ZP0R3
-gCG6Hjh5N8S+N7aLtQQvurMa/9qz6e1p54LCkXqevDp52wwM2DnjC05J+FaevvWW
-FjIaE8SU+Que77xakQYu7Vk1T2MoTimDAjduqtSTIvDb4uX1WNjgkX66AWUCzbEt
-Gp67cMYh0DjwaLgos6t9XdRp5964m4YPewhAcpVppFV45MOKcBWD99d3nYgOGYs1
-D8+4wXHpEJoU7r0pdz0buljZ1+bPmOiViShWmQgxIrKOCpOMuLKQJl2zJyVam8MN
-dy8xYm3RZF3hCNyROeHp8lEt5dSOpw82LchW2f5ErVYatYzJu/opdu9ToczNuvdU
-/U0liMxSEBr3RgcCggIBBHQzEarEsSNEGcjtuHMR/MZ8ZjG1WQdYp3QiDmXcHM5b
-ziWTtJgnnuKkS6dhLcu3YyVUhZhDTj1QkQAGfd2z41E3dH325sEfO/0l97Bcxi/V
-w+DUCYn82IZpsZg9wCAeAimOjvKzyqtCZvir8d3zo49SF1dcl6UD8WcNX5AeCgzW
-m6Bm8cjq51t9+F4tU878CVpyHf0EKzdObhLfrhlmMY0f3yPJ28fET6iqD4Zc4I/n
-aDa5lnNUEZYjMmW1XPwSa1xRCkZFer1uH03AcSL05nB+QXzuWv24scYBOTy8/zYy
-pRhLZ93gK7RAjR/dr85EFS6LC6T+jdK5O/by7UWOVBIe/N3gFrDa0V5v51f7cyq4
-LKw+wiWlU/KWeEGxEOrVCSLzB1ksnhCHU+fhNExD2W9sTJG14d1f3EyfwqZeestj
-A4N49GgP8UcYotQOl4MJy/bEWJDCUe9v8d+0yTkyGoSHWgvq8zjPFRcl5TnaA/fs
-jYQwrWEjI5MQKoqyoRf4CwMUGqZfOmEHNdBQ0biHblML8YVahdPBSCd8qj1/GxoJ
-3u12xnO9mXHR1ZwsfCXJpolwJmFDyP/lmxFzZrxuJS9RYDVlXCzEIV1+NKrpacyk
-tZCQr2/tQ958eH73OBKChLOYinWjoVaLwALEQsYQJ9qxMiG9vJDVv9WUMi+uMZwh
-AoICAQeazA1OfPrBqWcYX9Ju6KlNNIFTCsIPpZws5vxpgDBUvSvIsH3BdPwlnySc
-qIMoioH1HX07Q+ti9AUfsDiPj0RDiOLgANTY0feeV7vbUceM4IUgNqAdRweX/jQt
-ZqleOIOW9OKopqLJP6sNH2uVycgvb6ckYHyEdEtxfrpC7EFjZWtt6lkB6BZTMgjS
-GH7gQceKMXg/6od7oW2WK4zllBV9KZkUzYCcvJACqHQjIJ0agsYlydFX57iIHnRD
-dSdjvuUYwhXtEhDKk5dt6ldkK7rl8gEHuQAtc7ZdSPs30i8BPdCkwnHMwimQI5np
-yrF827uZop7tqTWY+Upol1hvKpxlMZQJ5Uu1e7pYxj/hcb2PQj+JuDaU1Fg/WZlz
-7tBeSdrUimT9feNlKh7TH2QlAY2Dnuneqv9neeScPt0nmKIqOieSfV8mMcmZJXnA
-w54zAwws+db4ysIFITFj3QXS6/M1qGnMHF9edgjvod8drir3JtMFbcBePd0cdjLt
-QJRdkKrJNp0kyXZJtGU83O5WLShw3yO5kaP307/iPf8rMisqZLzX61RKIpvgncRj
-LIafZS4Uw3QVEPiB8kRZ52b6mhH7jAGqTbQPN3mVm4xvnKN0Z8+zOd2Lcf9m+8Mu
-S5AbbZEUs/YYECp2ZxZYHZwd28Vz3HodxSm6MGjLeeK7YrH7gwKCAgBm0zD2DvKK
-EfDQOk2DpnScdNkuYlRD7WADQfgKg6GheSWIvAi9Dh/Ks3ZIcVAcpQgWQoMlhTie
-ZudfSjWxfFwlTAYKfF1kUnlrOACz04ZqsFMzx7Ks1HkvG1KEBTenAetcDPcL1b79
-U01tql7T6NIkxwtOR/nr1CvxgJa2wuuLYiUIAyIQYY0c18FkyFii1nJuneGb/Zvf
-ctf+S5O+GuSOc+LjDSGIa8RZf5ScxRmKGj6OSrYRGrM7ZoS/psvGQSOJeITN5SNJ
-umAA89mfpz8V87HHn520Vo7G9vmm5pQr27Nu1RBQJBXgrhC5fWXBXk/zmnyqskDM
-Bcb1h3nppB6dr5263iy+HHMxS/L0m6kCUfxfj6A4d1/fTGbv1tRCtlR9Rq4EJxWr
-8n49pbluSvL5XZoJJH2PGjjxNurSpnXVRFFOjpvl73wE/X/bH/Gs8AMtIrpnBRmM
-viaX/AOym3DFU2RTgNIt8zmNtqq/NhAuQmYEhodODXtnzzquh4Z4EZmhfzq/do5e
-nGTfN4hN7a9ODtP9Gt+w2CBCnE+7OnWo6Asj+wK0H59c2wfSD68d5n+V7U+BHHkN
-E8uwIjFNZ+n3LRdH/iY7w4ujgIdZRcQuOMf00a3950mcJM0hz278FuDIipbMFCxG
-qrLjqBtCTH9vu/Df2F0JNICD6Ro21WM/YQ==
------END PRIVATE KEY-----
diff --git a/src/pki/testdata/ssl/certificates/salesforce_com_test.pem b/src/pki/testdata/ssl/certificates/salesforce_com_test.pem
deleted file mode 100644
index 1522d0b..0000000
--- a/src/pki/testdata/ssl/certificates/salesforce_com_test.pem
+++ /dev/null
@@ -1,81 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 30:88:41:0a:28:b4:3e:3d:9a:f3:b3:90:a0:24:bc:d6
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: O=VeriSign Trust Network, OU=VeriSign, Inc., OU=VeriSign International Server CA - Class 3, OU=www.verisign.com/CPS Incorp.by Ref. LIABILITY LTD.(c)97 VeriSign
- Validity
- Not Before: Sep 18 00:00:00 2010 GMT
- Not After : Sep 18 23:59:59 2012 GMT
- Subject: C=US, ST=California, L=San Francisco, O=Salesforce.com, Inc., OU=Applications, CN=prerelna1.pre.salesforce.com
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public Key: (1024 bit)
- Modulus (1024 bit):
- 00:b8:0d:04:b7:23:60:d2:ff:12:bb:29:43:81:30:
- 0f:dd:8b:cd:cc:2c:8d:d0:14:de:5c:7b:a3:33:ea:
- f2:7e:88:6e:04:42:17:70:67:91:a8:20:87:81:a8:
- be:c4:57:d5:f5:3c:cf:34:96:cb:fb:7c:c3:db:ba:
- 36:c2:08:9f:c1:1d:91:fa:b7:21:03:50:32:bb:30:
- be:ff:f8:bf:8d:c0:7d:16:e4:d2:81:ef:e2:1a:89:
- 13:7c:40:6d:dd:1f:32:9d:3f:ca:a2:ab:e6:ae:9f:
- 96:91:66:32:e9:e5:ca:e3:9d:fc:62:31:aa:de:a6:
- 50:21:ba:e2:8e:77:00:41:17
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints:
- CA:FALSE
- X509v3 Key Usage:
- Digital Signature, Key Encipherment
- X509v3 CRL Distribution Points:
- URI:http://SVRIntl-crl.verisign.com/SVRIntl.crl
-
- X509v3 Certificate Policies:
- Policy: 2.16.840.1.113733.1.7.23.3
- CPS: https://www.verisign.com/rpa
-
- X509v3 Extended Key Usage:
- Netscape Server Gated Crypto, TLS Web Server Authentication, TLS Web Client Authentication
- Authority Information Access:
- OCSP - URI:http://ocsp.verisign.com
- CA Issuers - URI:http://SVRIntl-aia.verisign.com/SVRIntl-aia.cer
-
- 1.3.6.1.5.5.7.1.12:
- 0`.^.\0Z0X0V..image/gif0!0.0...+......Kk.(.....R8.).K..!..0&.$http://logo.verisign.com/vslogo1.gif
- Signature Algorithm: sha1WithRSAEncryption
- b8:e3:37:ba:5a:37:37:bf:e5:bc:88:fe:1e:fa:b4:4f:7d:52:
- ca:26:b6:83:a1:de:28:6b:01:a8:cd:5d:f2:9a:2c:f0:6e:89:
- 69:ab:94:b5:14:f2:c3:ca:d8:5d:2f:6d:13:9a:83:f1:ed:4e:
- 85:87:93:69:19:53:3a:a4:f1:98:96:b7:28:13:32:7e:d2:e4:
- 7a:7a:f2:8d:80:7d:af:89:64:43:7b:f6:05:3d:16:7c:f1:2a:
- 6f:bb:9b:3a:57:a5:f1:f7:77:a0:07:68:92:39:bd:45:c7:c8:
- 75:ed:ac:c6:ac:45:02:18:0b:41:ba:01:68:3e:c2:3b:f6:8b:
- 4e:50
------BEGIN CERTIFICATE-----
-MIIEhzCCA/CgAwIBAgIQMIhBCii0Pj2a87OQoCS81jANBgkqhkiG9w0BAQUFADCB
-ujEfMB0GA1UEChMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazEXMBUGA1UECxMOVmVy
-aVNpZ24sIEluYy4xMzAxBgNVBAsTKlZlcmlTaWduIEludGVybmF0aW9uYWwgU2Vy
-dmVyIENBIC0gQ2xhc3MgMzFJMEcGA1UECxNAd3d3LnZlcmlzaWduLmNvbS9DUFMg
-SW5jb3JwLmJ5IFJlZi4gTElBQklMSVRZIExURC4oYyk5NyBWZXJpU2lnbjAeFw0x
-MDA5MTgwMDAwMDBaFw0xMjA5MTgyMzU5NTlaMIGXMQswCQYDVQQGEwJVUzETMBEG
-A1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxQNU2FuIEZyYW5jaXNjbzEdMBsGA1UE
-ChQUU2FsZXNmb3JjZS5jb20sIEluYy4xFTATBgNVBAsUDEFwcGxpY2F0aW9uczEl
-MCMGA1UEAxQccHJlcmVsbmExLnByZS5zYWxlc2ZvcmNlLmNvbTCBnzANBgkqhkiG
-9w0BAQEFAAOBjQAwgYkCgYEAuA0EtyNg0v8SuylDgTAP3YvNzCyN0BTeXHujM+ry
-fohuBEIXcGeRqCCHgai+xFfV9TzPNJbL+3zD27o2wgifwR2R+rchA1AyuzC+//i/
-jcB9FuTSge/iGokTfEBt3R8ynT/Koqvmrp+WkWYy6eXK4538YjGq3qZQIbrijncA
-QRcCAwEAAaOCAa0wggGpMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgWgMDwGA1UdHwQ1
-MDMwMaAvoC2GK2h0dHA6Ly9TVlJJbnRsLWNybC52ZXJpc2lnbi5jb20vU1ZSSW50
-bC5jcmwwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcXAzAqMCgGCCsGAQUFBwIBFhxo
-dHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMCgGA1UdJQQhMB8GCWCGSAGG+EIE
-AQYIKwYBBQUHAwEGCCsGAQUFBwMCMHEGCCsGAQUFBwEBBGUwYzAkBggrBgEFBQcw
-AYYYaHR0cDovL29jc3AudmVyaXNpZ24uY29tMDsGCCsGAQUFBzAChi9odHRwOi8v
-U1ZSSW50bC1haWEudmVyaXNpZ24uY29tL1NWUkludGwtYWlhLmNlcjBuBggrBgEF
-BQcBDARiMGChXqBcMFowWDBWFglpbWFnZS9naWYwITAfMAcGBSsOAwIaBBRLa7ko
-lgYMu9BSOJsprEsHiyEFGDAmFiRodHRwOi8vbG9nby52ZXJpc2lnbi5jb20vdnNs
-b2dvMS5naWYwDQYJKoZIhvcNAQEFBQADgYEAuOM3ulo3N7/lvIj+Hvq0T31Syia2
-g6HeKGsBqM1d8pos8G6JaauUtRTyw8rYXS9tE5qD8e1OhYeTaRlTOqTxmJa3KBMy
-ftLkenryjYB9r4lkQ3v2BT0WfPEqb7ubOlel8fd3oAdokjm9RcfIde2sxqxFAhgL
-QboBaD7CO/aLTlA=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/self-signed-invalid-name.pem b/src/pki/testdata/ssl/certificates/self-signed-invalid-name.pem
deleted file mode 100644
index cbec017..0000000
--- a/src/pki/testdata/ssl/certificates/self-signed-invalid-name.pem
+++ /dev/null
@@ -1,69 +0,0 @@
-Certificate:
- Data:
- Version: 1 (0x0)
- Serial Number: 18181326976980170770 (0xfc510c8e88213812)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=Michigan, L=Ann Arbor, O=Test Self-Signed, CN=SS A
- Validity
- Not Before: May 27 18:37:25 2016 GMT
- Not After : May 25 18:37:25 2026 GMT
- Subject: C=US, ST=Michigan, L=Ann Arbor, O=Test Self-Signed, CN=SS B
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:b0:5a:83:9c:fe:1b:46:24:0b:d9:b0:0a:f2:f1:
- 47:bf:05:f1:68:49:6b:d2:50:f7:29:f5:f1:59:a8:
- 28:04:e2:7e:c9:d5:e0:86:b5:8f:2f:f9:45:a5:88:
- 02:04:cb:9a:c3:19:56:68:c8:eb:fe:c3:46:1a:44:
- be:e2:c5:e5:34:5a:18:66:1b:8e:d7:d9:19:f2:22:
- 43:6d:4c:28:56:25:48:42:b5:76:e5:d9:c0:86:40:
- f7:e7:87:0c:2d:07:e6:bd:84:9e:60:36:97:a8:d3:
- de:8a:37:a6:70:68:de:f1:d3:0a:db:fe:11:e8:f9:
- 0b:bc:56:47:d3:d4:5a:e5:ce:af:e6:d8:30:de:11:
- a3:7a:4d:c7:b5:0a:9c:9a:f6:4d:df:a1:46:6c:91:
- 03:e3:c6:be:61:38:b5:cb:1a:b5:82:6d:4d:d2:c6:
- 8b:32:25:b3:6d:01:d7:e7:da:2e:fe:a0:95:cf:9c:
- a1:e0:89:9e:2b:2b:f3:3a:98:7b:2e:b1:77:b3:88:
- 12:71:63:53:bf:b1:df:1e:de:da:13:e8:bd:d4:30:
- ec:c2:c4:e7:f9:0a:31:b2:b4:5e:36:9a:90:74:ef:
- 6a:45:e5:77:f3:97:8b:68:81:43:05:bc:e5:07:a6:
- 2f:9b:b1:c0:59:43:ac:28:bb:36:6c:98:02:72:c4:
- 77:3b
- Exponent: 65537 (0x10001)
- Signature Algorithm: sha256WithRSAEncryption
- 9d:33:a4:6d:41:ba:9c:83:24:92:be:82:61:d0:fd:d8:f6:3d:
- 68:38:49:80:15:09:56:27:8b:ad:ef:7b:b4:43:1f:bf:9a:cd:
- 72:da:6c:99:5c:c9:65:88:fd:8e:fa:65:df:27:80:22:ae:85:
- 15:b8:ec:b4:e1:92:57:f0:19:7c:8a:79:d4:54:87:97:a8:4f:
- 64:18:7c:89:0d:85:3b:6b:db:21:90:00:0c:17:32:19:11:a5:
- 79:1f:ec:43:3e:3e:ce:96:53:d1:c1:eb:96:c6:05:3d:52:19:
- 6c:a1:9f:a7:96:6e:a1:6f:d5:f9:37:04:89:99:a5:55:59:83:
- 1a:6a:e7:08:5e:20:41:13:9c:86:0f:b6:ae:5c:9f:e9:5b:41:
- ad:9e:af:96:1b:5c:37:d0:88:45:a0:35:d0:10:e7:9e:f6:38:
- cc:c2:4f:65:70:e7:cb:73:ae:6b:e6:60:73:be:31:ef:d6:24:
- 3f:12:e5:24:8f:2b:db:e2:b1:de:3d:b4:c5:8b:1b:88:2c:ac:
- a3:e2:f3:34:15:df:ca:e5:25:8a:0c:96:a9:16:28:0a:a7:48:
- 4a:95:00:3a:45:d1:0c:ad:58:10:71:0d:2a:77:99:78:4d:a0:
- fb:ba:36:8b:62:54:53:7d:81:21:11:46:fc:46:a4:99:42:32:
- c8:1f:ed:6f
------BEGIN CERTIFICATE-----
-MIIDODCCAiACCQD8UQyOiCE4EjANBgkqhkiG9w0BAQsFADBeMQswCQYDVQQGEwJV
-UzERMA8GA1UECAwITWljaGlnYW4xEjAQBgNVBAcMCUFubiBBcmJvcjEZMBcGA1UE
-CgwQVGVzdCBTZWxmLVNpZ25lZDENMAsGA1UEAwwEU1MgQTAeFw0xNjA1MjcxODM3
-MjVaFw0yNjA1MjUxODM3MjVaMF4xCzAJBgNVBAYTAlVTMREwDwYDVQQIDAhNaWNo
-aWdhbjESMBAGA1UEBwwJQW5uIEFyYm9yMRkwFwYDVQQKDBBUZXN0IFNlbGYtU2ln
-bmVkMQ0wCwYDVQQDDARTUyBCMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
-AQEAsFqDnP4bRiQL2bAK8vFHvwXxaElr0lD3KfXxWagoBOJ+ydXghrWPL/lFpYgC
-BMuawxlWaMjr/sNGGkS+4sXlNFoYZhuO19kZ8iJDbUwoViVIQrV25dnAhkD354cM
-LQfmvYSeYDaXqNPeijemcGje8dMK2/4R6PkLvFZH09Ra5c6v5tgw3hGjek3HtQqc
-mvZN36FGbJED48a+YTi1yxq1gm1N0saLMiWzbQHX59ou/qCVz5yh4ImeKyvzOph7
-LrF3s4gScWNTv7HfHt7aE+i91DDswsTn+QoxsrReNpqQdO9qReV385eLaIFDBbzl
-B6Yvm7HAWUOsKLs2bJgCcsR3OwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQCdM6Rt
-QbqcgySSvoJh0P3Y9j1oOEmAFQlWJ4ut73u0Qx+/ms1y2myZXMlliP2O+mXfJ4Ai
-roUVuOy04ZJX8Bl8innUVIeXqE9kGHyJDYU7a9shkAAMFzIZEaV5H+xDPj7OllPR
-weuWxgU9UhlsoZ+nlm6hb9X5NwSJmaVVWYMaaucIXiBBE5yGD7auXJ/pW0Gtnq+W
-G1w30IhFoDXQEOee9jjMwk9lcOfLc65r5mBzvjHv1iQ/EuUkjyvb4rHePbTFixuI
-LKyj4vM0Fd/K5SWKDJapFigKp0hKlQA6RdEMrVgQcQ0qd5l4TaD7ujaLYlRTfYEh
-EUb8RqSZQjLIH+1v
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/self-signed-invalid-sig.pem b/src/pki/testdata/ssl/certificates/self-signed-invalid-sig.pem
deleted file mode 100644
index fd9b5a9..0000000
--- a/src/pki/testdata/ssl/certificates/self-signed-invalid-sig.pem
+++ /dev/null
@@ -1,69 +0,0 @@
-Certificate:
- Data:
- Version: 1 (0x0)
- Serial Number: 14998008630224366850 (0xd023a162e6c42d02)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=Michigan, L=Ann Arbor, O=Test Self-Signed, CN=SS A
- Validity
- Not Before: May 27 18:37:25 2016 GMT
- Not After : May 25 18:37:25 2026 GMT
- Subject: C=US, ST=Michigan, L=Ann Arbor, O=Test Self-Signed, CN=SS A
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:b0:5a:83:9c:fe:1b:46:24:0b:d9:b0:0a:f2:f1:
- 47:bf:05:f1:68:49:6b:d2:50:f7:29:f5:f1:59:a8:
- 28:04:e2:7e:c9:d5:e0:86:b5:8f:2f:f9:45:a5:88:
- 02:04:cb:9a:c3:19:56:68:c8:eb:fe:c3:46:1a:44:
- be:e2:c5:e5:34:5a:18:66:1b:8e:d7:d9:19:f2:22:
- 43:6d:4c:28:56:25:48:42:b5:76:e5:d9:c0:86:40:
- f7:e7:87:0c:2d:07:e6:bd:84:9e:60:36:97:a8:d3:
- de:8a:37:a6:70:68:de:f1:d3:0a:db:fe:11:e8:f9:
- 0b:bc:56:47:d3:d4:5a:e5:ce:af:e6:d8:30:de:11:
- a3:7a:4d:c7:b5:0a:9c:9a:f6:4d:df:a1:46:6c:91:
- 03:e3:c6:be:61:38:b5:cb:1a:b5:82:6d:4d:d2:c6:
- 8b:32:25:b3:6d:01:d7:e7:da:2e:fe:a0:95:cf:9c:
- a1:e0:89:9e:2b:2b:f3:3a:98:7b:2e:b1:77:b3:88:
- 12:71:63:53:bf:b1:df:1e:de:da:13:e8:bd:d4:30:
- ec:c2:c4:e7:f9:0a:31:b2:b4:5e:36:9a:90:74:ef:
- 6a:45:e5:77:f3:97:8b:68:81:43:05:bc:e5:07:a6:
- 2f:9b:b1:c0:59:43:ac:28:bb:36:6c:98:02:72:c4:
- 77:3b
- Exponent: 65537 (0x10001)
- Signature Algorithm: sha256WithRSAEncryption
- aa:73:51:c6:c4:9b:8e:2d:a1:04:08:19:f9:c5:58:62:58:55:
- c8:71:9c:4b:af:01:cd:c6:34:6d:02:36:d8:34:0d:7b:6b:e6:
- 41:f6:eb:6c:be:a5:42:85:a9:fd:38:ee:a3:21:ba:b0:97:e6:
- f1:8e:2f:8e:68:ac:87:94:bb:90:8c:e5:b7:02:04:a2:75:35:
- df:1b:ea:51:ec:df:85:fb:9f:46:a2:03:5b:f0:02:92:72:f0:
- a6:d3:c7:d5:84:78:3a:c2:77:82:eb:ed:e0:59:37:c7:f6:6e:
- 2c:34:3a:4e:3c:7a:f2:71:92:51:81:1b:77:0b:27:67:cd:33:
- a6:59:a8:c8:c3:38:cd:ad:e3:48:bb:fd:e4:92:4a:e5:73:93:
- 15:1a:c9:fd:94:eb:11:6b:cd:45:dd:04:92:da:bb:e8:53:1d:
- 65:76:13:ea:a9:3a:e2:7b:f7:a6:66:f7:02:fb:d4:7a:ac:2f:
- 72:32:66:0e:b5:97:a0:10:d2:0e:31:fc:e5:3a:74:79:bc:cc:
- 97:85:31:85:f3:89:8f:f5:7a:66:53:eb:77:98:51:c3:3f:ed:
- 29:b7:e6:bc:30:83:b2:aa:b0:82:98:50:32:a1:4c:da:1e:6f:
- a8:c8:49:51:f5:6b:c4:15:18:e6:32:33:d6:31:f6:0d:62:f6:
- d2:db:de:ad
------BEGIN CERTIFICATE-----
-MIIDODCCAiACCQDQI6Fi5sQtAjANBgkqhkiG9w0BAQsFADBeMQswCQYDVQQGEwJV
-UzERMA8GA1UECAwITWljaGlnYW4xEjAQBgNVBAcMCUFubiBBcmJvcjEZMBcGA1UE
-CgwQVGVzdCBTZWxmLVNpZ25lZDENMAsGA1UEAwwEU1MgQTAeFw0xNjA1MjcxODM3
-MjVaFw0yNjA1MjUxODM3MjVaMF4xCzAJBgNVBAYTAlVTMREwDwYDVQQIDAhNaWNo
-aWdhbjESMBAGA1UEBwwJQW5uIEFyYm9yMRkwFwYDVQQKDBBUZXN0IFNlbGYtU2ln
-bmVkMQ0wCwYDVQQDDARTUyBBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
-AQEAsFqDnP4bRiQL2bAK8vFHvwXxaElr0lD3KfXxWagoBOJ+ydXghrWPL/lFpYgC
-BMuawxlWaMjr/sNGGkS+4sXlNFoYZhuO19kZ8iJDbUwoViVIQrV25dnAhkD354cM
-LQfmvYSeYDaXqNPeijemcGje8dMK2/4R6PkLvFZH09Ra5c6v5tgw3hGjek3HtQqc
-mvZN36FGbJED48a+YTi1yxq1gm1N0saLMiWzbQHX59ou/qCVz5yh4ImeKyvzOph7
-LrF3s4gScWNTv7HfHt7aE+i91DDswsTn+QoxsrReNpqQdO9qReV385eLaIFDBbzl
-B6Yvm7HAWUOsKLs2bJgCcsR3OwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQCqc1HG
-xJuOLaEECBn5xVhiWFXIcZxLrwHNxjRtAjbYNA17a+ZB9utsvqVChan9OO6jIbqw
-l+bxji+OaKyHlLuQjOW3AgSidTXfG+pR7N+F+59GogNb8AKScvCm08fVhHg6wneC
-6+3gWTfH9m4sNDpOPHrycZJRgRt3CydnzTOmWajIwzjNreNIu/3kkkrlc5MVGsn9
-lOsRa81F3QSS2rvoUx1ldhPqqTrie/emZvcC+9R6rC9yMmYOtZegENIOMfzlOnR5
-vMyXhTGF84mP9XpmU+t3mFHDP+0pt+a8MIOyqrCCmFAyoUzaHm+oyElR9WvEFRjm
-MjPWMfYNYvbS296t
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/sha1_2016.pem b/src/pki/testdata/ssl/certificates/sha1_2016.pem
deleted file mode 100644
index 081eba9..0000000
--- a/src/pki/testdata/ssl/certificates/sha1_2016.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:6e
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Oct 30 00:00:00 2008 GMT
- Not After : Dec 30 00:00:00 2016 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:c5:5d:b5:e9:b8:f3:a2:a8:01:b7:3b:c0:e3:89:
- 89:cc:60:04:36:1a:ea:d1:52:9a:4b:6b:6f:5c:80:
- 09:e9:b9:89:49:53:4f:7c:c9:d3:04:2e:7c:91:4f:
- b7:31:de:38:fc:18:37:53:9e:7f:4e:6a:03:68:df:
- 53:1b:95:06:10:88:5c:12:61:a1:73:4e:c9:a4:e0:
- 54:66:15:6f:f1:13:a8:ab:82:1d:f5:30:a4:f5:4c:
- 3d:52:49:4a:8e:d4:65:16:f1:7e:c5:9a:2f:08:de:
- 95:b5:02:54:24:ce:36:70:6c:48:07:a8:3b:ad:2e:
- a0:41:d2:c6:84:06:62:c7:ec:e0:d0:9c:bf:a1:13:
- 7c:51:df:ab:7c:da:1d:02:f7:70:9e:e6:7b:8a:af:
- 75:f4:99:27:17:32:9f:b2:95:dc:3c:f8:80:4f:a3:
- 1e:82:0b:48:79:6a:ba:11:e0:65:2e:07:fe:74:db:
- 28:c0:99:f6:72:be:03:2a:5e:22:4d:25:43:6d:39:
- 97:76:ae:d4:58:8d:0a:23:4c:5a:89:48:55:7d:2b:
- 8e:7d:cc:95:5a:47:30:34:b3:4c:98:00:4f:30:28:
- d9:c5:2d:2b:0f:79:b5:1a:19:73:58:fe:74:d2:50:
- d8:5e:a0:40:0e:44:c3:ec:6d:5f:6e:ac:86:ab:43:
- af:a7
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 89:46:0C:BD:AB:A9:64:95:21:BF:40:3B:0A:35:60:B7:EA:20:4F:F9
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha1WithRSAEncryption
- Signature Value:
- 17:78:1c:ee:69:6f:a9:3a:14:f6:48:e8:2f:c9:23:3c:f1:83:
- c0:99:20:b6:21:cc:10:e1:22:06:cd:de:cc:e3:3c:fc:60:23:
- 47:fa:df:03:7f:6a:1e:3b:6a:8c:fd:66:64:9d:3f:57:89:62:
- 41:23:a7:30:c7:f2:58:40:aa:b9:dc:69:74:3e:b4:cd:fc:54:
- 1e:2a:b5:6a:02:62:11:b6:d7:f9:6a:0f:31:37:45:9d:24:34:
- a6:40:d5:82:1f:0c:a3:ec:53:32:b6:57:64:9d:49:60:bc:3c:
- 4d:57:b1:f5:a0:3e:c0:50:c5:12:56:70:66:4b:bb:f6:19:3b:
- a3:23:58:c3:c5:8e:51:5a:71:f6:a8:c6:e9:82:c8:d7:77:13:
- 6d:27:d0:28:67:de:64:c9:df:db:2a:f1:0f:0d:e4:ba:5b:bc:
- 46:5e:bb:a9:7a:50:b3:54:83:e4:fa:b2:3e:18:03:06:d1:d5:
- 5c:50:45:25:47:9b:33:7e:3c:f3:c4:f4:c6:79:ad:e8:63:28:
- f1:2c:05:08:de:83:db:3e:41:df:5d:eb:6e:53:12:51:f8:fb:
- c4:e4:c5:dd:b1:72:e2:ae:f7:25:6c:e1:f4:aa:50:b8:b5:7c:
- cf:78:f3:9b:dc:e3:7d:86:f3:54:79:2e:7e:b9:e4:3b:ce:e3:
- 37:4b:9f:72
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwm4wDQYJKoZIhvcNAQEFBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0wODEwMzAwMDAwMDBaFw0xNjEyMzAwMDAwMDBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDFXbXpuPOiqAG3O8DjiYnMYAQ2GurRUppL
-a29cgAnpuYlJU098ydMELnyRT7cx3jj8GDdTnn9OagNo31MblQYQiFwSYaFzTsmk
-4FRmFW/xE6irgh31MKT1TD1SSUqO1GUW8X7Fmi8I3pW1AlQkzjZwbEgHqDutLqBB
-0saEBmLH7ODQnL+hE3xR36t82h0C93Ce5nuKr3X0mScXMp+yldw8+IBPox6CC0h5
-aroR4GUuB/502yjAmfZyvgMqXiJNJUNtOZd2rtRYjQojTFqJSFV9K459zJVaRzA0
-s0yYAE8wKNnFLSsPebUaGXNY/nTSUNheoEAORMPsbV9urIarQ6+nAgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBSJRgy9q6lklSG/QDsKNWC36iBP+TAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQUFAAOC
-AQEAF3gc7mlvqToU9kjoL8kjPPGDwJkgtiHMEOEiBs3ezOM8/GAjR/rfA39qHjtq
-jP1mZJ0/V4liQSOnMMfyWECqudxpdD60zfxUHiq1agJiEbbX+WoPMTdFnSQ0pkDV
-gh8Mo+xTMrZXZJ1JYLw8TVex9aA+wFDFElZwZku79hk7oyNYw8WOUVpx9qjG6YLI
-13cTbSfQKGfeZMnf2yrxDw3kulu8Rl67qXpQs1SD5PqyPhgDBtHVXFBFJUebM348
-88T0xnmt6GMo8SwFCN6D2z5B313rblMSUfj7xOTF3bFy4q73JWzh9KpQuLV8z3jz
-m9zjfYbzVHkufrnkO87jN0ufcg==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/sha1_leaf.pem b/src/pki/testdata/ssl/certificates/sha1_leaf.pem
deleted file mode 100644
index 159eacd..0000000
--- a/src/pki/testdata/ssl/certificates/sha1_leaf.pem
+++ /dev/null
@@ -1,113 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC9o+TdWyQ2AkBd
-6MXG42PIyEXvsufPWoZG2ZReNf3amGoh0CmUXffA7jFiJUDqBy/K/Cyuf7IBGgfG
-SA9KM2kTUbvMMR0uXqrx0hlPDaZRg0DFwBBFl7WrRUjE6ivlI8XadwBKTc8EIZOr
-xtm22PA2z1HCbE7pLvuA0s4kJ1kbhYkUQneEhqiahC2tsuOMj90lI0T6ChgjCb1r
-8Odgr0MOH3hkhyo+NlRSKpI0ZKlwuAA4UdBxyII5YmCcd3U9dHYviEezZ4AQwWEd
-CjUaNkrfNewDatDf97LTrPo9VY6BTq3g77LLlpW93roTiVhEQb8YjrKS4jjmIQEN
-tzTnh7GxAgMBAAECggEBAJQqbTIVd6FK+QdmSsAuAVRqRVoWKc90Jt1MOgOxo3kb
-BDEO9q2ZDW2LrMHF4YX3v3uUs0RTOLxrng9pVajfqgUSIuxSoz4LcPwm7uc4/u1I
-416dxRjag3IhW82eOFV7MaaSu4NSb6AGq93WK1wU+vmX2YVSIgVGU/I+whi1NYWt
-4Cq72f0E30F72G1+OrBZpdJpojSVOfRZY+VK8CIphNLtXlCzNv2omfTfvmyfEi02
-vsxFylck6ULmQNFbuIaVrAJx5giAW8VFnvs/6NatyO+xOdelrgYJ/q+UQwvtstD2
-qVoxV2a3mDQ0djoK6GZmFFwGy2BDlnFrEpugXjqgEdECgYEA+5SQuBLX1Xd4W7H6
-WLxljobf7ACLd9vpgPmhtEpWTHFRdvdYrhc8Gs/FIEIGNoIFimZJZ0+DzOfULep8
-2WYMheIahYOK+4nZfHyZbf2pdiXaNukX0C/wwTsACuTBOWC4GH0v1LYkYykDlCyf
-MrFKuS9WjGFPB893s5M7lClpn3sCgYEAwPjDyGYmRif4ZGe4GfL1+vbmHJu0bd+3
-n4FfwEpvaBn2xrNjcT+tc9uANN6knAccT9krWtmthJ+SYQ21hlTinbpzYC6/4Olf
-BcKA4EbQTr9EV3IeqI5PRkMMJ4VKzfbskLSrcO6YGZq7dVfhULRFGms7wHx+ijJP
-xP7gsNOQdcMCgYEA9McvK7pBwBP2yhjYAQCFO3ClbEV3bY5NmkzIddeiMcxLvBmb
-cf9vXpLrNKCo1N4bL/an0tn93h9uRaKSCSAObTF6Jo+/aVBNiJ7e1bLp7+eScrzG
-i6wpbojOWMsL6ZzeYg1jvW3e55AfSEtGNhdkIdwaNIn1UB8fU1ycqmLEvwMCgYBj
-ZwF7Flt64hYKqn7kJwpcp5grfm1397jf2kXXiMBQkKdU/Y0pBhM0TgqBsXp7wRHt
-c8Hof57pZUWC5wvt0YYWl7fdANfoZG6FSgcXAINHPTFYFjoCu6PMXrdBGGFLLXn4
-pIh3mQASmGkd7hHrf6DlFf3mjnqkd3wtztkxXRnZ/wKBgQCBEMMJa19ONAdVWtP9
-G2QeqthDPoMJDbvUAbjPoxUwBhN8vIObeamWsaKU9zbuDPpNaKw5pq6PdEFPOttu
-i4du0hSRW/tH8XBa8lKdbGak8/KMLesfd3BKKLhwLe8Zr7l7n0br920MTWKbKuqM
-ZAEGf9m7isatL4lNdngVXV2aUA==
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:82
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Oct 3 17:20:30 2022 GMT
- Not After : Oct 2 17:20:30 2024 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:bd:a3:e4:dd:5b:24:36:02:40:5d:e8:c5:c6:e3:
- 63:c8:c8:45:ef:b2:e7:cf:5a:86:46:d9:94:5e:35:
- fd:da:98:6a:21:d0:29:94:5d:f7:c0:ee:31:62:25:
- 40:ea:07:2f:ca:fc:2c:ae:7f:b2:01:1a:07:c6:48:
- 0f:4a:33:69:13:51:bb:cc:31:1d:2e:5e:aa:f1:d2:
- 19:4f:0d:a6:51:83:40:c5:c0:10:45:97:b5:ab:45:
- 48:c4:ea:2b:e5:23:c5:da:77:00:4a:4d:cf:04:21:
- 93:ab:c6:d9:b6:d8:f0:36:cf:51:c2:6c:4e:e9:2e:
- fb:80:d2:ce:24:27:59:1b:85:89:14:42:77:84:86:
- a8:9a:84:2d:ad:b2:e3:8c:8f:dd:25:23:44:fa:0a:
- 18:23:09:bd:6b:f0:e7:60:af:43:0e:1f:78:64:87:
- 2a:3e:36:54:52:2a:92:34:64:a9:70:b8:00:38:51:
- d0:71:c8:82:39:62:60:9c:77:75:3d:74:76:2f:88:
- 47:b3:67:80:10:c1:61:1d:0a:35:1a:36:4a:df:35:
- ec:03:6a:d0:df:f7:b2:d3:ac:fa:3d:55:8e:81:4e:
- ad:e0:ef:b2:cb:96:95:bd:de:ba:13:89:58:44:41:
- bf:18:8e:b2:92:e2:38:e6:21:01:0d:b7:34:e7:87:
- b1:b1
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 1F:90:87:C1:2E:EE:B4:70:94:B3:39:33:71:D2:37:34:19:46:7C:40
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha1WithRSAEncryption
- Signature Value:
- 08:e7:3e:ac:bf:41:a5:98:43:ca:44:41:ad:8f:8c:1b:fe:b7:
- 77:1e:cb:d4:fb:5b:a2:d9:ce:88:07:9e:ef:7b:91:3b:67:a2:
- e4:3b:a4:11:b3:8a:54:40:42:ef:38:97:2b:ac:a8:8d:d4:0a:
- 7c:e6:d4:a5:3b:d6:48:8d:af:29:e1:fb:e7:72:1b:7b:35:a6:
- c3:1d:a5:89:9c:2d:e2:31:31:83:4c:eb:ed:8a:c5:42:71:6c:
- 8e:50:4b:76:98:11:4d:48:3d:ad:14:d1:44:05:3d:70:91:83:
- 13:d5:9d:85:fa:de:ea:a0:99:e8:3e:f0:fa:aa:59:93:ef:78:
- 6e:c8:e8:ee:94:3c:8b:35:35:7a:2a:75:3a:53:55:2c:de:68:
- 73:9a:7f:f3:b8:da:e4:4a:13:18:f6:46:53:7f:ad:65:29:13:
- bb:23:84:56:08:77:f6:b7:84:fe:ca:2c:24:0d:4a:68:81:bf:
- d2:44:bf:f6:1d:74:5d:dc:77:b1:1c:23:25:62:f0:b9:7a:62:
- a7:15:4b:18:c4:19:9f:3c:4d:ef:33:49:17:a6:09:66:80:de:
- 7b:50:f5:33:0a:7f:28:23:99:a3:ca:82:a1:a7:ba:f2:44:a9:
- 17:a3:9c:75:86:f2:cd:3b:8c:af:61:28:cd:57:f0:ab:83:c8:
- 12:87:59:f3
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwoIwDQYJKoZIhvcNAQEFBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0yMjEwMDMxNzIwMzBaFw0yNDEwMDIxNzIwMzBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9o+TdWyQ2AkBd6MXG42PIyEXvsufPWoZG
-2ZReNf3amGoh0CmUXffA7jFiJUDqBy/K/Cyuf7IBGgfGSA9KM2kTUbvMMR0uXqrx
-0hlPDaZRg0DFwBBFl7WrRUjE6ivlI8XadwBKTc8EIZOrxtm22PA2z1HCbE7pLvuA
-0s4kJ1kbhYkUQneEhqiahC2tsuOMj90lI0T6ChgjCb1r8Odgr0MOH3hkhyo+NlRS
-KpI0ZKlwuAA4UdBxyII5YmCcd3U9dHYviEezZ4AQwWEdCjUaNkrfNewDatDf97LT
-rPo9VY6BTq3g77LLlpW93roTiVhEQb8YjrKS4jjmIQENtzTnh7GxAgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQfkIfBLu60cJSzOTNx0jc0GUZ8QDAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQUFAAOC
-AQEACOc+rL9BpZhDykRBrY+MG/63dx7L1PtbotnOiAee73uRO2ei5DukEbOKVEBC
-7ziXK6yojdQKfObUpTvWSI2vKeH753IbezWmwx2liZwt4jExg0zr7YrFQnFsjlBL
-dpgRTUg9rRTRRAU9cJGDE9Wdhfre6qCZ6D7w+qpZk+94bsjo7pQ8izU1eip1OlNV
-LN5oc5p/87ja5EoTGPZGU3+tZSkTuyOEVgh39reE/sosJA1KaIG/0kS/9h10Xdx3
-sRwjJWLwuXpipxVLGMQZnzxN7zNJF6YJZoDee1D1Mwp/KCOZo8qCoae68kSpF6Oc
-dYbyzTuMr2EozVfwq4PIEodZ8w==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/spdy_pooling.pem b/src/pki/testdata/ssl/certificates/spdy_pooling.pem
deleted file mode 100644
index b5eb200..0000000
--- a/src/pki/testdata/ssl/certificates/spdy_pooling.pem
+++ /dev/null
@@ -1,79 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 0a:30:58:00:41:4d:22:20:68:ab:c8:5e:5f:9d:57:82:9c:c3:a2:1e
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C = US, ST = California, L = Mountain View, O = Test CA, CN = 127.0.0.1
- Validity
- Not Before: Oct 3 17:20:09 2022 GMT
- Not After : Sep 30 17:20:09 2032 GMT
- Subject: C = US, ST = California, L = Mountain View, O = Test CA, CN = 127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:ec:e4:cc:ed:ab:60:cd:e3:0f:5c:3c:29:73:cf:
- 6e:a4:52:c4:dc:49:d6:2f:d5:cd:26:56:3d:3d:aa:
- c6:69:d7:ad:7a:47:ea:84:73:aa:85:b8:95:13:85:
- ea:9b:01:5c:ef:53:62:4f:92:61:9a:bd:64:7d:fa:
- ce:ea:08:06:b5:c0:48:9f:db:a6:90:c1:26:26:bc:
- c2:44:47:18:37:16:d8:63:5a:e9:bf:23:f9:46:d6:
- 65:0c:53:3b:b3:0e:d1:de:f7:d6:81:fe:0e:75:c4:
- 5d:38:45:28:17:98:c8:99:bf:9a:60:ec:b0:36:38:
- 9b:9e:36:57:e9:8a:51:d3:ee:1b:23:9b:18:db:31:
- dc:3f:1c:02:b6:c5:73:2f:f5:90:71:7f:a1:ab:f3:
- 24:d6:d5:b4:5c:4f:37:eb:ca:44:55:9a:86:65:24:
- 78:56:04:b9:3a:63:f9:f7:26:2f:8d:bc:98:9c:19:
- 68:4d:f8:30:df:6c:30:32:31:75:3b:54:e7:7c:d3:
- b0:05:c5:98:66:1c:f9:73:c4:b0:c2:83:67:c3:30:
- 79:6f:60:1f:0b:0c:67:6b:22:2c:cb:16:3d:73:1b:
- 8c:a0:a3:30:f1:db:9a:fc:0e:45:bb:7e:b4:03:a2:
- 33:d2:d3:cb:98:95:ec:66:f6:2e:51:e9:85:14:8d:
- 13:89
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Subject Alternative Name:
- DNS:www.example.org, DNS:mail.example.org, DNS:mail.example.com, DNS:example.test
- X509v3 Subject Key Identifier:
- 21:E7:36:0A:62:36:97:A3:5E:52:97:4A:73:AE:2B:1C:3E:25:C7:6C
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 4b:83:37:e0:92:ee:31:5c:ed:d7:4f:c8:10:7c:82:49:82:72:
- fd:d5:b0:b1:be:fb:a5:62:f8:9b:17:68:82:b9:f1:2a:d5:80:
- 3a:e5:73:2c:f9:bc:86:c0:8c:3a:69:36:63:60:c5:fb:d3:b9:
- 3b:87:8b:05:14:58:88:f5:87:50:e8:7c:c2:21:a7:66:ed:b4:
- 7f:12:86:71:6b:93:cb:a8:68:4b:5b:a6:a9:1b:8a:f0:f2:41:
- b5:eb:eb:62:a3:f8:b6:e4:97:f2:4b:5b:47:45:3f:a5:50:74:
- a9:07:1d:2a:d7:7b:d5:57:91:6d:c2:ed:fa:2e:42:6d:19:2b:
- eb:4b:d6:3c:2b:c9:ac:1d:5e:11:1e:b8:cb:d7:fa:b3:4f:39:
- b6:1b:9f:b0:e0:27:96:a3:cc:7b:03:f0:0e:dc:34:3f:b6:fb:
- 66:7b:d1:1b:a7:49:ec:f3:d5:fd:60:7c:54:ed:c1:ac:3c:a0:
- 54:6f:62:d4:5b:99:39:09:e5:c2:9b:21:5e:8d:76:59:0f:b5:
- 6d:8d:cb:b6:bb:21:ea:cb:33:9a:2c:14:ca:51:8b:26:3a:ce:
- 9f:2d:5f:d2:ad:9d:8d:c7:2b:30:7e:40:40:43:94:83:c4:09:
- 25:79:c0:fb:43:05:02:a8:93:b3:60:3f:fa:63:21:27:a3:eb:
- 8b:0f:06:33
------BEGIN CERTIFICATE-----
-MIIDvTCCAqWgAwIBAgIUCjBYAEFNIiBoq8heX51XgpzDoh4wDQYJKoZIhvcNAQEL
-BQAwYDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM
-DU1vdW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExEjAQBgNVBAMMCTEyNy4w
-LjAuMTAeFw0yMjEwMDMxNzIwMDlaFw0zMjA5MzAxNzIwMDlaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDs5Mztq2DN4w9cPClzz26kUsTcSdYv1c0m
-Vj09qsZp1616R+qEc6qFuJUTheqbAVzvU2JPkmGavWR9+s7qCAa1wEif26aQwSYm
-vMJERxg3FthjWum/I/lG1mUMUzuzDtHe99aB/g51xF04RSgXmMiZv5pg7LA2OJue
-NlfpilHT7hsjmxjbMdw/HAK2xXMv9ZBxf6Gr8yTW1bRcTzfrykRVmoZlJHhWBLk6
-Y/n3Ji+NvJicGWhN+DDfbDAyMXU7VOd807AFxZhmHPlzxLDCg2fDMHlvYB8LDGdr
-IizLFj1zG4ygozDx25r8DkW7frQDojPS08uYlexm9i5R6YUUjROJAgMBAAGjbzBt
-MEwGA1UdEQRFMEOCD3d3dy5leGFtcGxlLm9yZ4IQbWFpbC5leGFtcGxlLm9yZ4IQ
-bWFpbC5leGFtcGxlLmNvbYIMZXhhbXBsZS50ZXN0MB0GA1UdDgQWBBQh5zYKYjaX
-o15Sl0pzriscPiXHbDANBgkqhkiG9w0BAQsFAAOCAQEAS4M34JLuMVzt10/IEHyC
-SYJy/dWwsb77pWL4mxdogrnxKtWAOuVzLPm8hsCMOmk2Y2DF+9O5O4eLBRRYiPWH
-UOh8wiGnZu20fxKGcWuTy6hoS1umqRuK8PJBtevrYqP4tuSX8ktbR0U/pVB0qQcd
-Ktd71VeRbcLt+i5CbRkr60vWPCvJrB1eER64y9f6s085thufsOAnlqPMewPwDtw0
-P7b7ZnvRG6dJ7PPV/WB8VO3BrDygVG9i1FuZOQnlwpshXo12WQ+1bY3Ltrsh6ssz
-miwUylGLJjrOny1f0q2djccrMH5AQEOUg8QJJXnA+0MFAqiTs2A/+mMhJ6Priw8G
-Mw==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/start_after_expiry.pem b/src/pki/testdata/ssl/certificates/start_after_expiry.pem
deleted file mode 100644
index bd6eacc..0000000
--- a/src/pki/testdata/ssl/certificates/start_after_expiry.pem
+++ /dev/null
@@ -1,85 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:76
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Sep 1 00:00:00 2018 GMT
- Not After : Apr 2 00:00:00 2015 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:e7:1f:c0:bc:e7:c2:07:2d:13:9c:c8:c9:8a:89:
- a7:fd:63:87:c5:2a:b0:f5:e4:e0:08:af:e2:c3:f1:
- 8c:02:f1:20:7a:9d:09:c0:c7:24:ef:61:04:e3:c9:
- da:36:60:d5:8e:84:c9:4f:cc:ba:88:eb:00:a7:92:
- 46:47:69:e2:89:50:90:63:55:49:9e:4c:fb:3a:c6:
- 92:90:4d:69:b5:d8:85:3b:d6:dd:c5:62:e8:da:51:
- 62:4e:0f:61:82:e1:72:6b:37:ac:34:f4:92:fb:17:
- d9:d4:52:ec:c5:e5:96:f7:e3:8f:f1:c7:a0:f4:de:
- bf:5d:d7:74:72:6f:41:60:9f:51:ed:93:08:48:7c:
- c8:44:1d:6b:30:d4:1f:67:88:1b:1e:8e:bf:83:18:
- d2:cd:46:78:62:e4:1c:ac:be:48:0b:56:db:7c:b9:
- b9:4f:97:3a:51:c1:14:37:c9:87:56:c2:19:5e:93:
- d6:fc:75:99:88:fd:9b:f5:bc:ab:0c:2f:77:86:bf:
- 4d:2c:05:84:2e:82:61:f7:7d:0a:c3:fd:80:46:bd:
- 1b:46:b8:15:6a:91:2f:de:5f:bd:c2:cb:76:77:59:
- 03:90:c9:6d:e3:19:df:d2:f0:cc:6c:ef:ff:92:e9:
- 27:39:5a:0f:e2:a6:49:5f:f9:0f:e4:10:d0:76:9b:
- 5c:ff
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- F1:42:EA:7F:63:33:BE:07:0C:EE:F1:61:42:F0:3F:7D:1E:D5:26:52
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- ac:f3:da:f2:75:15:ff:95:c9:14:47:22:c3:b6:fc:b2:93:3b:
- 33:7a:c0:81:71:f3:95:33:90:55:08:89:c1:1b:b7:06:f5:9c:
- 43:59:90:2a:b0:9c:4b:91:f1:40:c0:c5:71:80:64:1e:f1:b3:
- 1c:45:b9:d3:05:f8:1a:2d:76:a5:47:5c:f9:bc:66:66:0c:11:
- 04:af:f2:3b:ef:ff:50:46:1e:70:45:d3:14:b0:a4:4a:d3:8c:
- 99:e4:e3:a1:c8:7d:83:18:29:b8:3d:ca:ad:5c:b0:cf:ea:47:
- 73:eb:85:c2:85:99:b7:68:c5:c5:bd:f2:c6:75:b7:65:e7:74:
- da:39:fa:b7:dc:9f:a9:f6:fd:e7:d4:70:91:b3:42:8a:71:38:
- 2e:e3:c3:2a:35:6f:08:56:21:35:81:89:46:ca:e1:05:a7:f6:
- 60:f5:b0:b3:44:3a:23:43:f3:e8:99:a3:7b:f8:42:2e:60:e5:
- a6:ab:3f:06:20:70:2f:69:d7:bb:95:87:01:5d:16:31:c0:b7:
- 97:09:0c:02:c4:20:b1:ab:15:ef:be:05:98:eb:41:a6:eb:eb:
- e1:90:43:e6:b1:5f:d6:61:a4:18:bd:8a:6e:00:47:a7:58:a0:
- 67:df:ea:09:a7:81:c3:5a:58:a9:ee:ac:f6:8b:2a:38:57:25:
- b7:a6:38:36
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIRALBrk5LjXI1+7Z3IllnFwnYwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0xODA5MDEwMDAwMDBaFw0xNTA0MDIwMDAwMDBaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDnH8C858IHLROcyMmKiaf9Y4fFKrD15OAI
-r+LD8YwC8SB6nQnAxyTvYQTjydo2YNWOhMlPzLqI6wCnkkZHaeKJUJBjVUmeTPs6
-xpKQTWm12IU71t3FYujaUWJOD2GC4XJrN6w09JL7F9nUUuzF5Zb344/xx6D03r9d
-13Ryb0Fgn1HtkwhIfMhEHWsw1B9niBsejr+DGNLNRnhi5BysvkgLVtt8ublPlzpR
-wRQ3yYdWwhlek9b8dZmI/Zv1vKsML3eGv00sBYQugmH3fQrD/YBGvRtGuBVqkS/e
-X73Cy3Z3WQOQyW3jGd/S8Mxs7/+S6Sc5Wg/ipklf+Q/kENB2m1z/AgMBAAGjgYAw
-fjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTxQup/YzO+Bwzu8WFC8D99HtUmUjAf
-BgNVHSMEGDAWgBSbJguKmKm7HbkfHOMaQDPtjheIqzAdBgNVHSUEFjAUBggrBgEF
-BQcDAQYIKwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOC
-AQEArPPa8nUV/5XJFEciw7b8spM7M3rAgXHzlTOQVQiJwRu3BvWcQ1mQKrCcS5Hx
-QMDFcYBkHvGzHEW50wX4Gi12pUdc+bxmZgwRBK/yO+//UEYecEXTFLCkStOMmeTj
-och9gxgpuD3KrVywz+pHc+uFwoWZt2jFxb3yxnW3Zed02jn6t9yfqfb959RwkbNC
-inE4LuPDKjVvCFYhNYGJRsrhBaf2YPWws0Q6I0Pz6Jmje/hCLmDlpqs/BiBwL2nX
-u5WHAV0WMcC3lwkMAsQgsasV774FmOtBpuvr4ZBD5rFf1mGkGL2KbgBHp1igZ9/q
-CaeBw1pYqe6s9osqOFclt6Y4Ng==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/subjectAltName_sanity_check.pem b/src/pki/testdata/ssl/certificates/subjectAltName_sanity_check.pem
deleted file mode 100644
index 429273a..0000000
--- a/src/pki/testdata/ssl/certificates/subjectAltName_sanity_check.pem
+++ /dev/null
@@ -1,82 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 1a:3e:ff:08:8f:68:f4:e8:be:f8:a2:78:86:91:fa:b1:0b:a3:8c:1f
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C = US, ST = California, L = Mountain View, O = Test CA, CN = 127.0.0.1
- Validity
- Not Before: Oct 3 17:20:09 2022 GMT
- Not After : Sep 30 17:20:09 2032 GMT
- Subject: C = US, ST = California, L = Mountain View, O = Test CA, CN = 127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:e4:41:20:46:ee:74:19:2c:9b:0c:2e:e8:63:1b:
- 40:7a:76:f9:3b:33:9f:bb:61:3b:dc:a1:71:fb:3d:
- e4:df:7b:2f:0f:17:91:88:3f:9d:33:93:bc:12:29:
- ab:7e:6f:4b:04:68:3c:33:b4:79:02:d8:3d:df:fb:
- 9a:ee:29:de:24:7f:6d:49:00:76:5d:12:fe:d4:1b:
- f8:3d:e5:08:e3:ea:22:ef:85:7e:5d:55:e1:e3:7b:
- a1:84:c8:87:06:7b:08:97:ff:b9:cb:94:b9:c4:34:
- fb:77:29:df:23:e3:19:96:8f:5f:5d:cd:95:5e:f0:
- a5:ff:cf:91:b6:4d:a6:8a:f3:7d:7f:f8:22:8c:c9:
- 27:0b:a5:37:37:a2:99:e4:79:ee:6d:73:1d:c9:a8:
- 78:ba:f8:2a:aa:a0:3e:8b:8d:59:87:39:05:f1:eb:
- 48:49:47:28:12:30:28:50:80:2a:67:3b:af:68:88:
- bd:c0:f1:38:da:4f:d3:7b:15:86:6f:c8:b7:61:5f:
- c5:af:ca:34:a2:72:b0:59:03:2c:8d:4d:f2:e7:ad:
- d0:d7:1a:cc:8f:2d:5c:d1:41:ea:21:1a:e9:90:2e:
- 63:99:90:28:1e:86:73:95:7d:7b:d7:eb:e7:af:2a:
- 16:60:38:d7:b0:34:71:65:a6:d3:bd:53:91:99:20:
- e0:39
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.2, IP Address:FE80:0:0:0:0:0:0:1, DNS:test.example, email:test@test.example, othername: 1.2.3.4::ignore me, DirName:/CN=127.0.0.3
- X509v3 Subject Key Identifier:
- 67:95:3C:20:E0:D7:34:9E:D5:30:BE:B9:73:91:6F:0D:9B:96:3F:05
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 77:e7:81:56:2c:c2:10:36:0f:45:13:2c:9e:6d:9b:ef:ab:6d:
- 50:e9:5f:3e:5f:93:9e:9a:81:24:76:5f:13:d3:b5:87:d5:c5:
- d6:e4:55:3b:c1:18:35:a1:27:aa:91:fc:90:dd:8a:c8:2e:1f:
- 1e:17:4b:20:92:6e:fb:13:40:54:02:ea:cb:be:27:cf:c5:c0:
- a7:29:47:74:07:ff:10:a6:98:00:cd:38:19:b4:14:43:3f:ec:
- a1:8b:ff:47:6b:2c:ae:4b:08:d5:a0:9b:95:e3:76:56:1e:05:
- 6f:26:3e:00:92:4b:4b:b8:e0:db:71:7a:61:93:72:ed:a2:f6:
- 91:13:59:cf:62:d5:03:a2:09:96:ba:27:3c:82:38:dc:2d:8c:
- 83:f9:ff:df:19:6b:a5:1a:b2:98:74:48:9f:e2:46:c7:70:3f:
- c9:f0:ef:3b:35:3b:03:bb:f0:a6:84:6c:c1:8b:67:fc:de:c7:
- ce:1d:2c:15:5f:46:4e:0f:b3:78:51:a1:7c:48:08:2b:c1:63:
- e8:95:ba:41:23:96:ef:f2:9c:53:be:ed:97:19:bd:f0:2f:bc:
- d1:16:e8:be:c4:6e:08:8f:a1:3d:95:48:c8:ea:68:4c:82:4b:
- 4c:21:da:07:60:d6:b7:6d:09:35:7d:53:83:cf:e6:49:28:00:
- 16:12:ed:17
------BEGIN CERTIFICATE-----
-MIID8jCCAtqgAwIBAgIUGj7/CI9o9Oi++KJ4hpH6sQujjB8wDQYJKoZIhvcNAQEL
-BQAwYDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM
-DU1vdW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExEjAQBgNVBAMMCTEyNy4w
-LjAuMTAeFw0yMjEwMDMxNzIwMDlaFw0zMjA5MzAxNzIwMDlaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkQSBG7nQZLJsMLuhjG0B6dvk7M5+7YTvc
-oXH7PeTfey8PF5GIP50zk7wSKat+b0sEaDwztHkC2D3f+5ruKd4kf21JAHZdEv7U
-G/g95Qjj6iLvhX5dVeHje6GEyIcGewiX/7nLlLnENPt3Kd8j4xmWj19dzZVe8KX/
-z5G2TaaK831/+CKMyScLpTc3opnkee5tcx3JqHi6+CqqoD6LjVmHOQXx60hJRygS
-MChQgCpnO69oiL3A8TjaT9N7FYZvyLdhX8WvyjSicrBZAyyNTfLnrdDXGsyPLVzR
-QeohGumQLmOZkCgehnOVfXvX6+evKhZgONewNHFlptO9U5GZIOA5AgMBAAGjgaMw
-gaAwDwYDVR0TAQH/BAUwAwEB/zBuBgNVHREEZzBlhwR/AAAChxD+gAAAAAAAAAAA
-AAAAAAABggx0ZXN0LmV4YW1wbGWBEXRlc3RAdGVzdC5leGFtcGxloBIGAyoDBKAL
-DAlpZ25vcmUgbWWkFjAUMRIwEAYDVQQDDAkxMjcuMC4wLjMwHQYDVR0OBBYEFGeV
-PCDg1zSe1TC+uXORbw2blj8FMA0GCSqGSIb3DQEBCwUAA4IBAQB354FWLMIQNg9F
-EyyebZvvq21Q6V8+X5OemoEkdl8T07WH1cXW5FU7wRg1oSeqkfyQ3YrILh8eF0sg
-km77E0BUAurLvifPxcCnKUd0B/8QppgAzTgZtBRDP+yhi/9HayyuSwjVoJuV43ZW
-HgVvJj4AkktLuODbcXphk3LtovaRE1nPYtUDogmWuic8gjjcLYyD+f/fGWulGrKY
-dEif4kbHcD/J8O87NTsDu/CmhGzBi2f83sfOHSwVX0ZOD7N4UaF8SAgrwWPolbpB
-I5bv8pxTvu2XGb3wL7zRFui+xG4Ij6E9lUjI6mhMgktMIdoHYNa3bQk1fVODz+ZJ
-KAAWEu0X
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/subjectAltName_www_example_com.pem b/src/pki/testdata/ssl/certificates/subjectAltName_www_example_com.pem
deleted file mode 100644
index 7ece351..0000000
--- a/src/pki/testdata/ssl/certificates/subjectAltName_www_example_com.pem
+++ /dev/null
@@ -1,80 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 3c:cb:fb:30:6a:43:63:80:cb:8a:91:20:df:86:df:d9:df:c5:35:d0
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C = US, ST = California, L = Mountain View, O = Test CA, CN = 127.0.0.1
- Validity
- Not Before: Oct 3 17:20:09 2022 GMT
- Not After : Sep 30 17:20:09 2032 GMT
- Subject: C = US, ST = California, L = Mountain View, O = Test CA, CN = 127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:c3:d7:35:26:24:ab:bd:83:85:71:3e:dc:9e:41:
- a6:d4:bf:b9:20:c6:ca:37:f5:0e:dc:4a:23:f3:74:
- 24:c9:7a:e2:68:0c:13:2d:11:95:cd:f9:77:61:39:
- db:42:c8:2c:b0:b3:eb:64:09:5c:a4:66:58:08:99:
- 85:3c:45:a7:75:f3:08:87:90:78:bc:09:e9:29:62:
- 54:da:15:57:4f:50:f1:6e:14:9e:f3:58:1e:d1:be:
- 4e:a2:6f:0a:fa:1c:f5:7b:5f:05:28:74:69:6e:2a:
- 10:fb:9b:aa:e2:30:fa:62:9a:ec:e1:28:ce:d8:38:
- 79:99:f6:86:09:44:e4:4f:f4:39:26:04:b5:3d:4a:
- e4:d0:58:71:e7:24:c7:94:7d:84:68:d8:48:b3:6f:
- e6:99:41:e4:d7:b3:9a:d2:41:f6:14:5f:46:33:58:
- cb:d4:ce:2c:46:17:2a:9e:17:9c:e4:c1:bd:57:33:
- 5a:7c:b5:31:09:59:8c:a2:de:5b:ee:9d:1b:6a:b8:
- ab:c0:b4:90:65:f9:2d:de:9e:d5:34:37:16:2f:84:
- c7:23:1e:46:0b:66:d4:7a:73:80:bc:6c:f8:20:7b:
- c3:6e:25:fb:27:4b:1f:82:3f:68:c6:fd:9f:a7:88:
- be:3e:4a:e6:53:02:04:b6:dd:5c:3c:75:b2:5b:de:
- 7f:f3
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Alternative Name:
- DNS:www.example.com
- X509v3 Subject Key Identifier:
- BF:A7:72:AF:07:02:68:D6:D1:00:15:E6:D3:03:9A:0E:91:38:27:2F
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 24:e4:5a:62:e3:13:50:78:d2:ff:c2:27:51:47:99:62:ac:93:
- 43:b1:51:6f:e5:b6:49:86:50:88:9c:88:8e:a5:00:a9:48:39:
- b7:c5:99:41:96:83:66:1a:40:6e:06:90:48:33:9a:74:fe:d4:
- be:29:7e:d9:4d:e3:58:0e:17:47:1b:35:14:12:a9:09:ca:07:
- 38:74:fd:59:e4:7a:b7:d8:70:91:6b:02:c9:01:97:77:59:ac:
- 27:b5:7c:38:6c:59:83:2e:15:eb:25:27:b7:63:28:39:c8:9a:
- 14:5a:4a:c9:35:b4:dd:1c:d8:a1:2d:89:12:94:ad:c2:11:70:
- 2e:cb:3f:3d:c0:ad:66:f1:da:8f:d8:db:98:02:6f:e0:46:c6:
- c1:cb:f3:86:ed:6f:7a:b6:6d:86:7e:12:8b:74:a5:06:87:3d:
- d8:c4:08:9d:1b:e9:55:5c:49:80:33:b5:36:ec:3e:87:7b:4e:
- 63:45:a0:28:c7:c8:ce:41:22:2b:d3:f9:3a:a5:20:ff:24:d6:
- 19:41:a6:ee:20:40:12:ad:c9:e0:be:56:0a:b7:8f:60:db:47:
- 80:50:46:f6:cf:d9:39:73:1a:25:e1:4a:62:2f:f5:5b:89:75:
- 85:f6:ea:8a:18:59:8a:9d:1b:cf:5c:d4:9c:f2:9c:cd:1b:d0:
- e9:d8:62:5f
------BEGIN CERTIFICATE-----
-MIIDnDCCAoSgAwIBAgIUPMv7MGpDY4DLipEg34bf2d/FNdAwDQYJKoZIhvcNAQEL
-BQAwYDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM
-DU1vdW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExEjAQBgNVBAMMCTEyNy4w
-LjAuMTAeFw0yMjEwMDMxNzIwMDlaFw0zMjA5MzAxNzIwMDlaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDD1zUmJKu9g4VxPtyeQabUv7kgxso39Q7c
-SiPzdCTJeuJoDBMtEZXN+XdhOdtCyCyws+tkCVykZlgImYU8Rad18wiHkHi8Cekp
-YlTaFVdPUPFuFJ7zWB7Rvk6ibwr6HPV7XwUodGluKhD7m6riMPpimuzhKM7YOHmZ
-9oYJRORP9DkmBLU9SuTQWHHnJMeUfYRo2Eizb+aZQeTXs5rSQfYUX0YzWMvUzixG
-FyqeF5zkwb1XM1p8tTEJWYyi3lvunRtquKvAtJBl+S3entU0NxYvhMcjHkYLZtR6
-c4C8bPgge8NuJfsnSx+CP2jG/Z+niL4+SuZTAgS23Vw8dbJb3n/zAgMBAAGjTjBM
-MA8GA1UdEwEB/wQFMAMBAf8wGgYDVR0RBBMwEYIPd3d3LmV4YW1wbGUuY29tMB0G
-A1UdDgQWBBS/p3KvBwJo1tEAFebTA5oOkTgnLzANBgkqhkiG9w0BAQsFAAOCAQEA
-JORaYuMTUHjS/8InUUeZYqyTQ7FRb+W2SYZQiJyIjqUAqUg5t8WZQZaDZhpAbgaQ
-SDOadP7Uvil+2U3jWA4XRxs1FBKpCcoHOHT9WeR6t9hwkWsCyQGXd1msJ7V8OGxZ
-gy4V6yUnt2MoOciaFFpKyTW03RzYoS2JEpStwhFwLss/PcCtZvHaj9jbmAJv4EbG
-wcvzhu1verZthn4Si3SlBoc92MQInRvpVVxJgDO1Nuw+h3tOY0WgKMfIzkEiK9P5
-OqUg/yTWGUGm7iBAEq3J4L5WCrePYNtHgFBG9s/ZOXMaJeFKYi/1W4l1hfbqihhZ
-ip0bz1zUnPKczRvQ6dhiXw==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/test_names.pem b/src/pki/testdata/ssl/certificates/test_names.pem
deleted file mode 100644
index eb8f77c..0000000
--- a/src/pki/testdata/ssl/certificates/test_names.pem
+++ /dev/null
@@ -1,114 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC/YhJcAr1m0ACU
-h3Byf5G1zDF+1LurMi7E8SLbzYbBxv5nlPVQC2dEtmqcY2C8xgHaQ52lxWVH8sBJ
-YzBpglpaBzt9YlbSvE7qXXWmErE/2Nb0EcRE9c5aJMd69b35l7TeebpO/Txba271
-ufRzbmi9EdsjL07f+ZGbzD2h/thmATcRIHvcDaNlmk8gpiRJlZn1KNdNYS5Ma5s8
-W9ddGkLFqRt9PbbWkBK7EdYV2g+1Cvdi2GjCtEX194n3Adx+UePAoXAdjGkAIRZS
-supd8RcJkpyt+M3WCPhgHAZitf1ati/ngcTIH/xhe53LR4w7zUB6WqSTN4/3sYoU
-9aikl9yZAgMBAAECggEADm3JbpByUScLdCdF7gv6I1eyv5owT/bnmceIVkQHjeJ/
-2bVcTV2euop6PTIs3+6Zwyfn4dChEyyVHLNSuhGu2CzFam2YmCjEVl0Xep7cKDEj
-+6C/SGez2A3/0CBo40FxzHgm+L+U5luSMQqFCJLhaKfI+r0dWDuLo9BhMS5yiDYb
-3Wgt6HfTdATZ0xiGGacN9iK1VZk/a0BBjtjonJWOcoTRqakFNpU0rd322Y30t87d
-rZVwB/fk5a5OEOqDtYknlrD/cK3j9qLtxfidNgK7FzwdTgGTl5S7rGRpiBKAi/9c
-7LqdmKNnYJFpOoAHSbrwx1r2Ep4Si1JtswMXKGVzpQKBgQDdw7BLE2AeF2jx1UUM
-vh7ljqG8LOa1hS6Bwa0LF84PoHmWL7sOYiyRazO6u9TsbJeQ6WKbVE2oktK1RsfD
-/qq60fNzXbRFJeY55BP5pXP8M9dXl4f6ucQbcEOWEStICP7KbTjPlp6Jq2LKVSb4
-hZbiDhpsjFT7eh9H/Xzw16P3RwKBgQDc7bBD0SMIcrQ/gXPJJSDSSSr2A5bdDytx
-Fj+I/nZ56mrwXz8M/UCsn11eyH3ypPSk/MvHCZRsSsg0hymJFQg/em+0BeBK/ptq
-jk8xc9d1ZyfJaFxUAktuDdb98hqBK8uOF9C9EYm8sw0TTDLTWUA9Cn8LO1zLcSNU
-M+1I5ic9HwKBgArwmWTKuuYhH4M2kyZyxpFqfN4MlQEFZeruw/uVHAw3TWg0SJUI
-EMzHrhCbLYDQRpXWfY/OE9qqC4z3xekMSh3XN5xMVhVHLllSwA2DtPoPEKN4jTO4
-ME1uN1dS14DBONiBlNjgxEdkVgZHNxnxdSUHrxQFxDd3qc1iWuSCrssHAoGBALM9
-G45JtHR8KwSC0B9WwgQZXINvcgwy7Hm5JR7N4+0RZGVTwOGW7cufF694VcZwUhMx
-DVqTyRj6qucC6Y3PxHtLqCiTw97UJd8TSejDJQCZCkx7ILz/h5boH46zxxEZKPJF
-HBLokajIU0levrV9aYKca2n/ZU+goJsF7fMA1sDdAoGAMwYcQQ9XJLIVR3c1+cPm
-ZXwod+8SRf8cr9G9YxVg74+DzPoC4D6nLLoMztsIEbqs32BROhFAIPkxUx8t3B+w
-BAD+gaC3vgesecqPKWY8a7OhyNYKxSAaMp9EH1ywNX456OabzXIrXi8h0UVeEjmL
-lrUqZQ2VvXn8/MApYF+5AJg=
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:6c
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Oct 3 17:20:08 2022 GMT
- Not After : Oct 2 17:20:08 2024 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:bf:62:12:5c:02:bd:66:d0:00:94:87:70:72:7f:
- 91:b5:cc:31:7e:d4:bb:ab:32:2e:c4:f1:22:db:cd:
- 86:c1:c6:fe:67:94:f5:50:0b:67:44:b6:6a:9c:63:
- 60:bc:c6:01:da:43:9d:a5:c5:65:47:f2:c0:49:63:
- 30:69:82:5a:5a:07:3b:7d:62:56:d2:bc:4e:ea:5d:
- 75:a6:12:b1:3f:d8:d6:f4:11:c4:44:f5:ce:5a:24:
- c7:7a:f5:bd:f9:97:b4:de:79:ba:4e:fd:3c:5b:6b:
- 6e:f5:b9:f4:73:6e:68:bd:11:db:23:2f:4e:df:f9:
- 91:9b:cc:3d:a1:fe:d8:66:01:37:11:20:7b:dc:0d:
- a3:65:9a:4f:20:a6:24:49:95:99:f5:28:d7:4d:61:
- 2e:4c:6b:9b:3c:5b:d7:5d:1a:42:c5:a9:1b:7d:3d:
- b6:d6:90:12:bb:11:d6:15:da:0f:b5:0a:f7:62:d8:
- 68:c2:b4:45:f5:f7:89:f7:01:dc:7e:51:e3:c0:a1:
- 70:1d:8c:69:00:21:16:52:b2:ea:5d:f1:17:09:92:
- 9c:ad:f8:cd:d6:08:f8:60:1c:06:62:b5:fd:5a:b6:
- 2f:e7:81:c4:c8:1f:fc:61:7b:9d:cb:47:8c:3b:cd:
- 40:7a:5a:a4:93:37:8f:f7:b1:8a:14:f5:a8:a4:97:
- dc:99
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 45:0D:FA:A4:6B:B9:A7:1C:93:E8:AE:AF:C4:13:39:12:D4:2F:E0:5D
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- DNS:a.test, DNS:*.a.test, DNS:b.test, DNS:*.b.test, DNS:c.test, DNS:*.c.test, DNS:d.test, DNS:*.d.test
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 1c:4e:4c:06:fc:2a:0a:89:2e:de:21:c3:46:99:51:84:89:c0:
- 4e:66:10:73:a2:b0:cb:6b:12:e4:eb:bb:a4:56:17:2f:73:7c:
- ea:ae:7a:a7:0a:0b:6c:4a:24:2b:f2:82:51:2d:f8:b6:d7:3c:
- 03:69:43:cd:cc:1b:85:4b:d9:c4:aa:5e:f7:c6:24:56:1a:61:
- 0e:83:89:8f:08:08:93:a9:53:d1:f9:85:e5:d1:2d:05:40:4a:
- 90:e1:36:90:3a:4b:4e:5d:ea:dd:e5:b7:ac:07:f1:62:34:6a:
- 69:0f:f0:68:cc:6a:cf:47:bd:a7:55:fd:7e:8f:bc:d5:5a:a0:
- 1e:b5:0a:e6:4b:53:8a:6f:e9:48:1b:0d:5c:ae:0a:57:07:64:
- a6:9e:ea:68:49:76:a3:a0:20:cf:f2:cb:b6:19:2b:2f:69:3f:
- 41:50:71:27:db:32:9c:d8:4c:db:bc:c4:c2:c9:12:a4:4a:80:
- 65:71:cc:18:06:eb:3c:64:63:31:b5:d2:dc:34:d6:49:70:b0:
- bb:98:7a:e3:e2:d4:00:4e:2a:41:7c:d4:70:93:6e:9a:12:26:
- c8:4f:3a:e6:4a:b2:04:23:0e:c5:f6:10:d7:9b:ec:86:44:4f:
- c0:9d:8d:d1:95:e6:4a:da:5e:81:d2:45:2f:b3:ae:97:fa:0a:
- fd:16:c2:2f
------BEGIN CERTIFICATE-----
-MIIEEjCCAvqgAwIBAgIRALBrk5LjXI1+7Z3IllnFwmwwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0yMjEwMDMxNzIwMDhaFw0yNDEwMDIxNzIwMDhaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/YhJcAr1m0ACUh3Byf5G1zDF+1LurMi7E
-8SLbzYbBxv5nlPVQC2dEtmqcY2C8xgHaQ52lxWVH8sBJYzBpglpaBzt9YlbSvE7q
-XXWmErE/2Nb0EcRE9c5aJMd69b35l7TeebpO/Txba271ufRzbmi9EdsjL07f+ZGb
-zD2h/thmATcRIHvcDaNlmk8gpiRJlZn1KNdNYS5Ma5s8W9ddGkLFqRt9PbbWkBK7
-EdYV2g+1Cvdi2GjCtEX194n3Adx+UePAoXAdjGkAIRZSsupd8RcJkpyt+M3WCPhg
-HAZitf1ati/ngcTIH/xhe53LR4w7zUB6WqSTN4/3sYoU9aikl9yZAgMBAAGjgcMw
-gcAwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQURQ36pGu5pxyT6K6vxBM5EtQv4F0w
-HwYDVR0jBBgwFoAUmyYLipipux25HxzjGkAz7Y4XiKswHQYDVR0lBBYwFAYIKwYB
-BQUHAwEGCCsGAQUFBwMCMFEGA1UdEQRKMEiCBmEudGVzdIIIKi5hLnRlc3SCBmIu
-dGVzdIIIKi5iLnRlc3SCBmMudGVzdIIIKi5jLnRlc3SCBmQudGVzdIIIKi5kLnRl
-c3QwDQYJKoZIhvcNAQELBQADggEBABxOTAb8KgqJLt4hw0aZUYSJwE5mEHOisMtr
-EuTru6RWFy9zfOqueqcKC2xKJCvyglEt+LbXPANpQ83MG4VL2cSqXvfGJFYaYQ6D
-iY8ICJOpU9H5heXRLQVASpDhNpA6S05d6t3lt6wH8WI0amkP8GjMas9HvadV/X6P
-vNVaoB61CuZLU4pv6UgbDVyuClcHZKae6mhJdqOgIM/yy7YZKy9pP0FQcSfbMpzY
-TNu8xMLJEqRKgGVxzBgG6zxkYzG10tw01klwsLuYeuPi1ABOKkF81HCTbpoSJshP
-OuZKsgQjDsX2ENeb7IZET8CdjdGV5kraXoHSRS+zrpf6Cv0Wwi8=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/treadclimber.pem b/src/pki/testdata/ssl/certificates/treadclimber.pem
deleted file mode 100644
index bfbf859..0000000
--- a/src/pki/testdata/ssl/certificates/treadclimber.pem
+++ /dev/null
@@ -1,227 +0,0 @@
-===========================================
-Certificate0: 2f3d743c3627324a11549a9e5cfd1845e6dfdd63771509f0903456411c60bda8
-===========================================
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 8c:7f:32:24:e1:a7:ab:96:00:00:00:00:50:ed:50:f3
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C = US, O = "Entrust, Inc.", OU = See www.entrust.net/legal-terms, OU = "(c) 2012 Entrust, Inc. - for authorized use only", CN = Entrust Certification Authority - L1K
- Validity
- Not Before: Feb 7 17:50:22 2019 GMT
- Not After : Feb 7 18:20:21 2020 GMT
- Subject: C = US, ST = Washington, L = Vancouver, O = "Nautilus, Inc.", CN = Treadclimber.com
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (2048 bit)
- Modulus:
- 00:c5:4a:d9:1b:cb:70:54:d7:7d:57:83:53:8e:22:
- ad:aa:d2:41:4a:b7:39:4e:7f:99:66:a9:7e:4f:2b:
- a7:ed:17:4c:da:3b:8d:07:bd:f1:90:0b:8d:05:4d:
- e0:dc:3c:19:ef:2e:fe:a3:38:30:c4:9e:8d:56:34:
- 91:fe:25:65:8d:ad:46:a2:f1:fb:d0:5f:63:73:8d:
- 29:f8:09:f6:9c:4d:10:5e:63:5e:bf:66:24:0c:70:
- 3b:88:8f:f4:c6:ee:8f:31:68:05:0e:89:7a:7a:96:
- 3a:2b:50:71:97:d3:a0:f1:95:49:11:e2:f9:c8:78:
- 54:63:e8:6a:db:96:87:2d:de:18:ea:f2:43:4c:8d:
- 3f:a5:76:27:fa:d9:e3:25:ba:96:60:9c:9a:9a:a9:
- d3:37:3c:9c:49:28:f4:54:ce:c0:2a:e1:ce:9f:de:
- f8:b5:3f:d9:1c:aa:9c:3c:9c:d0:f7:67:84:3a:3a:
- bf:19:bf:e2:44:b3:13:3a:d5:94:f3:db:eb:67:7e:
- da:50:9a:4a:40:e9:46:f6:5f:65:b5:21:ae:e2:4e:
- 4d:02:fe:33:7f:b3:aa:0c:9c:cf:97:44:fe:28:15:
- 64:26:ca:fb:07:8c:4f:40:b9:df:f5:fb:7b:e4:81:
- 0e:85:16:4b:7e:80:74:df:62:3a:dd:1e:30:e8:11:
- 3a:bf
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Key Usage: critical
- Digital Signature, Key Encipherment
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 CRL Distribution Points:
-
- Full Name:
- URI:http://crl.entrust.net/level1k.crl
-
- X509v3 Certificate Policies:
- Policy: 2.16.840.1.114028.10.1.5
- CPS: http://www.entrust.net/rpa
- Policy: 2.23.140.1.2.2
-
- Authority Information Access:
- OCSP - URI:http://ocsp.entrust.net
- CA Issuers - URI:http://aia.entrust.net/l1k-chain256.cer
-
- X509v3 Subject Alternative Name:
- DNS:Treadclimber.com, DNS:www.Treadclimber.com, DNS:bowflexcatalog.com, DNS:www.bowflexcatalog.com, DNS:bowflexhomegyms.com, DNS:www.bowflexhomegyms.com, DNS:bowflexmaxtrainer.com, DNS:www.bowflexmaxtrainer.com, DNS:bowflexselecttech.com, DNS:www.bowflexselecttech.com, DNS:bowflexhvt.com, DNS:www.bowflexhvt.com, DNS:meethvt.com, DNS:www.meethvt.com, DNS:universalhomefitness.com, DNS:www.universalhomefitness.com, DNS:bowflexmaxtrainer.ca, DNS:www.bowflexmaxtrainer.ca, DNS:treadclimber.ca, DNS:www.treadclimber.ca
- X509v3 Authority Key Identifier:
- keyid:82:A2:70:74:DD:BC:53:3F:CF:7B:D4:F7:CD:7F:A7:60:C6:0A:4C:BF
-
- X509v3 Subject Key Identifier:
- DB:F8:04:79:71:73:4C:9D:47:E0:52:C2:8A:24:7E:C4:A6:14:D2:90
- X509v3 Basic Constraints:
- CA:FALSE
- Signature Algorithm: sha256WithRSAEncryption
- 29:86:2a:a0:6f:bf:b7:3b:7e:9e:c3:e1:bb:28:9f:45:9f:0d:
- 97:fc:24:a0:9c:28:6e:7c:50:3d:c2:ee:24:50:d1:c3:55:79:
- 7b:10:94:50:4c:47:91:f5:f7:b3:d9:05:62:73:26:6f:8d:8e:
- 18:b5:44:ae:55:32:0d:9d:12:36:a5:3b:df:d0:c1:07:7b:f4:
- a5:8b:7a:64:b6:8b:d1:de:4f:fb:6e:64:a1:e8:95:f4:69:d7:
- d3:f3:5c:75:ff:24:da:4e:e5:94:4d:e2:06:dc:87:de:2f:48:
- fe:69:8e:77:ac:7f:3c:6b:cc:57:08:a7:9a:c7:9d:b3:37:9b:
- 0a:a6:54:0c:a4:08:e8:95:63:73:95:c5:d5:5a:7e:41:57:d2:
- a7:ca:45:ba:2c:4d:46:00:2d:3d:95:02:e2:34:08:91:43:7b:
- c5:aa:e1:af:cd:f1:f4:f4:b6:e2:43:f6:8d:ff:2d:7a:26:13:
- f8:99:be:77:92:90:b9:86:5f:93:2c:c6:61:37:56:0f:2a:1b:
- ed:ad:68:fc:16:aa:ef:b6:3e:3e:3c:97:b6:8e:e2:72:ef:cc:
- 47:9a:4c:e6:55:ea:b7:81:60:bf:d7:c4:23:a8:06:6e:02:0f:
- 85:2b:70:8c:0a:3d:fc:5c:be:21:46:e8:33:0f:dd:18:d3:ad:
- 8b:d0:b6:6a
-
------BEGIN CERTIFICATE-----
-MIIG4zCCBcugAwIBAgIRAIx/MiThp6uWAAAAAFDtUPMwDQYJKoZIhvcNAQELBQAw
-gboxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQL
-Ex9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykg
-MjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxLjAs
-BgNVBAMTJUVudHJ1c3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBMMUswHhcN
-MTkwMjA3MTc1MDIyWhcNMjAwMjA3MTgyMDIxWjBqMQswCQYDVQQGEwJVUzETMBEG
-A1UECBMKV2FzaGluZ3RvbjESMBAGA1UEBxMJVmFuY291dmVyMRcwFQYDVQQKEw5O
-YXV0aWx1cywgSW5jLjEZMBcGA1UEAxMQVHJlYWRjbGltYmVyLmNvbTCCASIwDQYJ
-KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVK2RvLcFTXfVeDU44irarSQUq3OU5/
-mWapfk8rp+0XTNo7jQe98ZALjQVN4Nw8Ge8u/qM4MMSejVY0kf4lZY2tRqLx+9Bf
-Y3ONKfgJ9pxNEF5jXr9mJAxwO4iP9MbujzFoBQ6JenqWOitQcZfToPGVSRHi+ch4
-VGPoatuWhy3eGOryQ0yNP6V2J/rZ4yW6lmCcmpqp0zc8nEko9FTOwCrhzp/e+LU/
-2RyqnDyc0PdnhDo6vxm/4kSzEzrVlPPb62d+2lCaSkDpRvZfZbUhruJOTQL+M3+z
-qgycz5dE/igVZCbK+weMT0C53/X7e+SBDoUWS36AdN9iOt0eMOgROr8CAwEAAaOC
-AzEwggMtMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYB
-BQUHAwIwMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2NybC5lbnRydXN0Lm5ldC9s
-ZXZlbDFrLmNybDBLBgNVHSAERDBCMDYGCmCGSAGG+mwKAQUwKDAmBggrBgEFBQcC
-ARYaaHR0cDovL3d3dy5lbnRydXN0Lm5ldC9ycGEwCAYGZ4EMAQICMGgGCCsGAQUF
-BwEBBFwwWjAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZW50cnVzdC5uZXQwMwYI
-KwYBBQUHMAKGJ2h0dHA6Ly9haWEuZW50cnVzdC5uZXQvbDFrLWNoYWluMjU2LmNl
-cjCCAcMGA1UdEQSCAbowggG2ghBUcmVhZGNsaW1iZXIuY29tghR3d3cuVHJlYWRj
-bGltYmVyLmNvbYISYm93ZmxleGNhdGFsb2cuY29tghZ3d3cuYm93ZmxleGNhdGFs
-b2cuY29tghNib3dmbGV4aG9tZWd5bXMuY29tghd3d3cuYm93ZmxleGhvbWVneW1z
-LmNvbYIVYm93ZmxleG1heHRyYWluZXIuY29tghl3d3cuYm93ZmxleG1heHRyYWlu
-ZXIuY29tghVib3dmbGV4c2VsZWN0dGVjaC5jb22CGXd3dy5ib3dmbGV4c2VsZWN0
-dGVjaC5jb22CDmJvd2ZsZXhodnQuY29tghJ3d3cuYm93ZmxleGh2dC5jb22CC21l
-ZXRodnQuY29tgg93d3cubWVldGh2dC5jb22CGHVuaXZlcnNhbGhvbWVmaXRuZXNz
-LmNvbYIcd3d3LnVuaXZlcnNhbGhvbWVmaXRuZXNzLmNvbYIUYm93ZmxleG1heHRy
-YWluZXIuY2GCGHd3dy5ib3dmbGV4bWF4dHJhaW5lci5jYYIPdHJlYWRjbGltYmVy
-LmNhghN3d3cudHJlYWRjbGltYmVyLmNhMB8GA1UdIwQYMBaAFIKicHTdvFM/z3vU
-981/p2DGCky/MB0GA1UdDgQWBBTb+AR5cXNMnUfgUsKKJH7EphTSkDAJBgNVHRME
-AjAAMA0GCSqGSIb3DQEBCwUAA4IBAQAphiqgb7+3O36ew+G7KJ9Fnw2X/CSgnChu
-fFA9wu4kUNHDVXl7EJRQTEeR9fez2QVicyZvjY4YtUSuVTINnRI2pTvf0MEHe/Sl
-i3pktovR3k/7bmSh6JX0adfT81x1/yTaTuWUTeIG3IfeL0j+aY53rH88a8xXCKea
-x52zN5sKplQMpAjolWNzlcXVWn5BV9KnykW6LE1GAC09lQLiNAiRQ3vFquGvzfH0
-9LbiQ/aN/y16JhP4mb53kpC5hl+TLMZhN1YPKhvtrWj8Fqrvtj4+PJe2juJy78xH
-mkzmVeq3gWC/18QjqAZuAg+FK3CMCj38XL4hRugzD90Y062L0LZq
------END CERTIFICATE-----
-
-===========================================
-Certificate1: d6c3fc493bacd1df8a1ba30f4ae26254b2a4528e4876081eacc6a16a090aa36a
-===========================================
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 1372455166 (0x51ce00fe)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: O = Entrust.net, OU = www.entrust.net/CPS_2048 incorp. by ref. (limits liab.), OU = (c) 1999 Entrust.net Limited, CN = Entrust.net Certification Authority (2048)
- Validity
- Not Before: Oct 10 15:23:17 2014 GMT
- Not After : Oct 11 06:22:47 2024 GMT
- Subject: C = US, O = "Entrust, Inc.", OU = See www.entrust.net/legal-terms, OU = "(c) 2012 Entrust, Inc. - for authorized use only", CN = Entrust Certification Authority - L1K
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public-Key: (2048 bit)
- Modulus:
- 00:da:3f:96:d0:4d:b9:2f:44:e7:db:39:5e:9b:50:
- ee:5c:a5:61:da:41:67:53:09:aa:00:9a:8e:57:7f:
- 29:6b:db:c7:e1:21:24:aa:3a:d0:8d:47:23:d2:ed:
- 72:16:f0:91:21:d2:5d:b7:b8:4b:a8:83:8f:b7:91:
- 32:68:cf:ce:25:93:2c:b2:7d:97:c8:fe:c1:b4:17:
- ba:09:9e:03:90:93:7b:7c:49:83:22:68:8a:9b:de:
- 47:c3:31:98:7a:2e:7d:40:0b:d2:ef:3e:d3:b2:8c:
- aa:8f:48:a9:ff:00:e8:29:58:06:f7:b6:93:5a:94:
- 73:26:26:ad:58:0e:e5:42:b8:d5:ea:73:79:64:68:
- 53:25:b8:84:cf:94:7a:ae:06:45:0c:a3:6b:4d:d0:
- c6:be:ea:18:a4:36:f0:92:b2:ba:1c:88:8f:3a:52:
- 7f:f7:5e:6d:83:1c:9d:f0:1f:e5:c3:d6:dd:a5:78:
- 92:3d:b0:6d:2c:ea:c9:cf:94:41:19:71:44:68:ba:
- 47:3c:04:e9:5d:ba:3e:f0:35:f7:15:b6:9e:f2:2e:
- 15:1e:3f:47:c8:c8:38:a7:73:45:5d:4d:b0:3b:b1:
- 8e:17:29:37:ea:dd:05:01:22:bb:94:36:2a:8d:5b:
- 35:fe:53:19:2f:08:46:c1:2a:b3:1a:62:1d:4e:2b:
- d9:1b
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- X509v3 Basic Constraints: critical
- CA:TRUE, pathlen:0
- Authority Information Access:
- OCSP - URI:http://ocsp.entrust.net
-
- X509v3 CRL Distribution Points:
-
- Full Name:
- URI:http://crl.entrust.net/2048ca.crl
-
- X509v3 Certificate Policies:
- Policy: X509v3 Any Policy
- CPS: http://www.entrust.net/rpa
-
- X509v3 Subject Key Identifier:
- 82:A2:70:74:DD:BC:53:3F:CF:7B:D4:F7:CD:7F:A7:60:C6:0A:4C:BF
- X509v3 Authority Key Identifier:
- keyid:55:E4:81:D1:11:80:BE:D8:89:B9:08:A3:31:F9:A1:24:09:16:B9:70
-
- Signature Algorithm: sha256WithRSAEncryption
- 58:42:71:c1:3e:29:16:6e:75:58:77:b5:65:4d:9e:29:f5:ae:
- 0b:1c:18:f9:a3:08:43:75:ef:7d:6d:f1:92:ea:fe:ce:68:5c:
- e2:1f:be:a5:af:1a:4c:aa:83:3b:5f:a2:47:46:f7:7c:9e:c1:
- 83:c4:7a:24:b0:e9:cc:e9:a2:9a:07:09:e8:1e:1d:77:56:49:
- fc:53:73:a8:47:cc:c9:2d:5a:60:34:a7:1a:0b:e5:2b:b8:df:
- ef:82:4a:dd:70:5e:10:18:08:3b:5d:dc:8a:84:3d:68:d8:00:
- b4:c4:9e:43:78:4b:5e:f0:62:6a:8c:90:66:53:8a:ac:c5:7d:
- 58:ff:4e:a9:ad:d7:a4:ca:12:47:29:e5:f3:22:21:40:32:60:
- da:3a:fe:92:54:1e:43:a1:0d:a9:52:37:60:bf:87:c4:a1:c7:
- 78:d5:87:1e:e5:77:e3:5f:5b:dc:71:6d:ba:44:87:31:05:80:
- 58:0b:c5:de:74:28:81:83:08:84:d0:c8:46:5a:fe:8a:c6:bd:
- a9:0e:3b:64:78:6d:26:dc:3c:4c:f7:81:5c:3c:11:7f:25:3a:
- 93:62:a5:a3:91:05:25:23:73:b4:cd:ce:cc:39:a4:03:78:30:
- 66:46:5e:a9:75:b0:b4:67:03:a9:b1:9f:57:f0:d3:76:cf:e1:
- 93:e8:80:a2
-
------BEGIN CERTIFICATE-----
-MIIE/jCCA+agAwIBAgIEUc4A/jANBgkqhkiG9w0BAQsFADCBtDEUMBIGA1UEChML
-RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp
-bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5
-IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp
-ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw0xNDEwMTAxNTIzMTdaFw0yNDEw
-MTEwNjIyNDdaMIG6MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwgSW5j
-LjEoMCYGA1UECxMfU2VlIHd3dy5lbnRydXN0Lm5ldC9sZWdhbC10ZXJtczE5MDcG
-A1UECxMwKGMpIDIwMTIgRW50cnVzdCwgSW5jLiAtIGZvciBhdXRob3JpemVkIHVz
-ZSBvbmx5MS4wLAYDVQQDEyVFbnRydXN0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5
-IC0gTDFLMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2j+W0E25L0Tn
-2zlem1DuXKVh2kFnUwmqAJqOV38pa9vH4SEkqjrQjUcj0u1yFvCRIdJdt7hLqIOP
-t5EyaM/OJZMssn2XyP7BtBe6CZ4DkJN7fEmDImiKm95HwzGYei59QAvS7z7Tsoyq
-j0ip/wDoKVgG97aTWpRzJiatWA7lQrjV6nN5ZGhTJbiEz5R6rgZFDKNrTdDGvuoY
-pDbwkrK6HIiPOlJ/915tgxyd8B/lw9bdpXiSPbBtLOrJz5RBGXFEaLpHPATpXbo+
-8DX3Fbae8i4VHj9HyMg4p3NFXU2wO7GOFyk36t0FASK7lDYqjVs1/lMZLwhGwSqz
-GmIdTivZGwIDAQABo4IBDjCCAQowDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQI
-MAYBAf8CAQAwMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzABhhdodHRwOi8vb2Nz
-cC5lbnRydXN0Lm5ldDAyBgNVHR8EKzApMCegJaAjhiFodHRwOi8vY3JsLmVudHJ1
-c3QubmV0LzIwNDhjYS5jcmwwOwYDVR0gBDQwMjAwBgRVHSAAMCgwJgYIKwYBBQUH
-AgEWGmh0dHA6Ly93d3cuZW50cnVzdC5uZXQvcnBhMB0GA1UdDgQWBBSConB03bxT
-P8971PfNf6dgxgpMvzAfBgNVHSMEGDAWgBRV5IHREYC+2Im5CKMx+aEkCRa5cDAN
-BgkqhkiG9w0BAQsFAAOCAQEAWEJxwT4pFm51WHe1ZU2eKfWuCxwY+aMIQ3XvfW3x
-kur+zmhc4h++pa8aTKqDO1+iR0b3fJ7Bg8R6JLDpzOmimgcJ6B4dd1ZJ/FNzqEfM
-yS1aYDSnGgvlK7jf74JK3XBeEBgIO13cioQ9aNgAtMSeQ3hLXvBiaoyQZlOKrMV9
-WP9Oqa3XpMoSRynl8yIhQDJg2jr+klQeQ6ENqVI3YL+HxKHHeNWHHuV3419b3HFt
-ukSHMQWAWAvF3nQogYMIhNDIRlr+isa9qQ47ZHhtJtw8TPeBXDwRfyU6k2Klo5EF
-JSNztM3OzDmkA3gwZkZeqXWwtGcDqbGfV/DTds/hk+iAog==
------END CERTIFICATE-----
-
diff --git a/src/pki/testdata/ssl/certificates/treadclimber.sctlist b/src/pki/testdata/ssl/certificates/treadclimber.sctlist
deleted file mode 100644
index 268a0ac..0000000
--- a/src/pki/testdata/ssl/certificates/treadclimber.sctlist
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/unescaped.pem b/src/pki/testdata/ssl/certificates/unescaped.pem
deleted file mode 100644
index 33dbb40..0000000
--- a/src/pki/testdata/ssl/certificates/unescaped.pem
+++ /dev/null
@@ -1,62 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- ed:cd:27:0f:4c:ca:cc:fc
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: CN=127.0.0.1, L=Mountain View, ST=California/streetAddress=1600 Amphitheatre Parkway, C=US, O=Chromium = "net_unittests", OU=net_unittests, OU=Chromium
- Validity
- Not Before: Dec 2 03:56:43 2011 GMT
- Not After : Jan 1 03:56:43 2012 GMT
- Subject: CN=127.0.0.1, L=Mountain View, ST=California/streetAddress=1600 Amphitheatre Parkway, C=US, O=Chromium = "net_unittests", OU=net_unittests, OU=Chromium
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public Key: (1024 bit)
- Modulus (1024 bit):
- 00:ac:25:6c:de:22:4f:be:77:07:3a:6c:f9:5f:e6:
- 0a:ce:69:f7:ca:c5:b8:08:2b:b8:b0:04:12:55:fe:
- 65:4c:c2:aa:b9:3d:b2:87:f5:59:c3:72:ac:a9:d4:
- 1e:0b:ec:7f:2e:df:4c:ad:e7:cc:52:93:b4:ed:0a:
- 99:40:7e:6a:35:c3:b0:8b:93:c7:e5:97:54:b9:7f:
- 68:26:04:17:a6:b4:50:9e:d6:d7:6b:19:a1:ce:0b:
- 5e:73:80:a6:b9:ef:5d:34:8e:6f:f7:8c:de:cf:78:
- cd:16:93:30:23:c3:5c:8c:9f:78:ce:18:c6:0f:e1:
- 32:76:8a:c4:c4:54:30:56:39
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Subject Key Identifier:
- 38:85:CF:3E:10:D5:47:FC:08:81:FA:85:7F:84:7A:2F:3D:69:2B:A6
- X509v3 Authority Key Identifier:
- keyid:38:85:CF:3E:10:D5:47:FC:08:81:FA:85:7F:84:7A:2F:3D:69:2B:A6
-
- X509v3 Basic Constraints:
- CA:TRUE
- Signature Algorithm: sha1WithRSAEncryption
- 32:0a:90:29:b1:9f:c0:c7:55:da:37:8f:5b:b8:09:a0:97:65:
- 15:3a:79:d1:3e:24:f4:44:ad:3f:eb:84:b4:ae:e3:7a:ba:43:
- 8c:d4:df:ef:ca:46:c5:99:c4:99:b5:ae:7e:2c:a9:85:05:d0:
- 8f:07:d2:ee:9e:72:b0:e0:87:51:5c:e8:f4:5a:a1:44:25:a5:
- 47:6a:67:b3:79:2e:66:7d:93:7d:f7:cf:31:13:c1:fc:af:62:
- c6:ec:22:14:50:7f:d2:38:ff:5d:11:d5:58:c8:5e:43:08:bb:
- ca:9c:45:78:f4:28:08:cc:98:75:1d:4c:d2:43:a5:34:f0:86:
- 56:37
------BEGIN CERTIFICATE-----
-MIIDVDCCAr2gAwIBAgIJAO3NJw9Mysz8MA0GCSqGSIb3DQEBBQUAMIHCMRIwEAYD
-VQQDDAkxMjcuMC4wLjExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxEzARBgNVBAgM
-CkNhbGlmb3JuaWExIjAgBgNVBAkMGTE2MDAgQW1waGl0aGVhdHJlIFBhcmt3YXkx
-CzAJBgNVBAYTAlVTMSMwIQYDVQQKDBpDaHJvbWl1bSA9ICJuZXRfdW5pdHRlc3Rz
-IjEWMBQGA1UECwwNbmV0X3VuaXR0ZXN0czERMA8GA1UECwwIQ2hyb21pdW0wHhcN
-MTExMjAyMDM1NjQzWhcNMTIwMTAxMDM1NjQzWjCBwjESMBAGA1UEAwwJMTI3LjAu
-MC4xMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQIDApDYWxpZm9ybmlh
-MSIwIAYDVQQJDBkxNjAwIEFtcGhpdGhlYXRyZSBQYXJrd2F5MQswCQYDVQQGEwJV
-UzEjMCEGA1UECgwaQ2hyb21pdW0gPSAibmV0X3VuaXR0ZXN0cyIxFjAUBgNVBAsM
-DW5ldF91bml0dGVzdHMxETAPBgNVBAsMCENocm9taXVtMIGfMA0GCSqGSIb3DQEB
-AQUAA4GNADCBiQKBgQCsJWzeIk++dwc6bPlf5grOaffKxbgIK7iwBBJV/mVMwqq5
-PbKH9VnDcqyp1B4L7H8u30yt58xSk7TtCplAfmo1w7CLk8fll1S5f2gmBBemtFCe
-1tdrGaHOC15zgKa57100jm/3jN7PeM0WkzAjw1yMn3jOGMYP4TJ2isTEVDBWOQID
-AQABo1AwTjAdBgNVHQ4EFgQUOIXPPhDVR/wIgfqFf4R6Lz1pK6YwHwYDVR0jBBgw
-FoAUOIXPPhDVR/wIgfqFf4R6Lz1pK6YwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0B
-AQUFAAOBgQAyCpApsZ/Ax1XaN49buAmgl2UVOnnRPiT0RK0/64S0ruN6ukOM1N/v
-ykbFmcSZta5+LKmFBdCPB9LunnKw4IdRXOj0WqFEJaVHamezeS5mfZN9988xE8H8
-r2LG7CIUUH/SOP9dEdVYyF5DCLvKnEV49CgIzJh1HUzSQ6U08IZWNw==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/unittest.key.bin b/src/pki/testdata/ssl/certificates/unittest.key.bin
deleted file mode 100644
index 2ec712b..0000000
--- a/src/pki/testdata/ssl/certificates/unittest.key.bin
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/unittest.selfsigned.der b/src/pki/testdata/ssl/certificates/unittest.selfsigned.der
deleted file mode 100644
index 48c8d74..0000000
--- a/src/pki/testdata/ssl/certificates/unittest.selfsigned.der
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/verisign_intermediate_ca_2011.pem b/src/pki/testdata/ssl/certificates/verisign_intermediate_ca_2011.pem
deleted file mode 100644
index 27dc85b..0000000
--- a/src/pki/testdata/ssl/certificates/verisign_intermediate_ca_2011.pem
+++ /dev/null
@@ -1,71 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 25:4b:8a:85:38:42:cc:e3:58:f8:c5:dd:ae:22:6e:a4
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority
- Validity
- Not Before: Apr 17 00:00:00 1997 GMT
- Not After : Oct 24 23:59:59 2011 GMT
- Subject: O=VeriSign Trust Network, OU=VeriSign, Inc., OU=VeriSign International Server CA - Class 3, OU=www.verisign.com/CPS Incorp.by Ref. LIABILITY LTD.(c)97 VeriSign
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public Key: (1024 bit)
- Modulus (1024 bit):
- 00:d8:82:80:e8:d6:19:02:7d:1f:85:18:39:25:a2:
- 65:2b:e1:bf:d4:05:d3:bc:e6:36:3b:aa:f0:4c:6c:
- 5b:b6:e7:aa:3c:73:45:55:b2:f1:bd:ea:97:42:ed:
- 9a:34:0a:15:d4:a9:5c:f5:40:25:dd:d9:07:c1:32:
- b2:75:6c:c4:ca:bb:a3:fe:56:27:71:43:aa:63:f5:
- 30:3e:93:28:e5:fa:f1:09:3b:f3:b7:4d:4e:39:f7:
- 5c:49:5a:b8:c1:1d:d3:b2:8a:fe:70:30:95:42:cb:
- fe:2b:51:8b:5a:3c:3a:f9:22:4f:90:b2:02:a7:53:
- 9c:4f:34:e7:ab:04:b2:7b:6f
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints:
- CA:TRUE, pathlen:0
- X509v3 Certificate Policies:
- Policy: 2.16.840.1.113733.1.7.1.1
- CPS: https://www.verisign.com/CPS
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication, Netscape Server Gated Crypto, 2.16.840.1.113733.1.8.1
- X509v3 Key Usage:
- Certificate Sign, CRL Sign
- Netscape Cert Type:
- SSL CA, S/MIME CA
- X509v3 CRL Distribution Points:
- URI:http://crl.verisign.com/pca3.crl
-
- Signature Algorithm: sha1WithRSAEncryption
- 08:01:ec:e4:68:94:03:42:f1:73:f1:23:a2:3a:de:e9:f1:da:
- c6:54:c4:23:3e:86:ea:cf:6a:3a:33:ab:ea:9c:04:14:07:36:
- 06:0b:f9:88:6f:d5:13:ee:29:2b:c3:e4:72:8d:44:ed:d1:ac:
- 20:09:2d:e1:f6:e1:19:05:38:b0:3d:0f:9f:7f:f8:9e:02:dc:
- 86:02:86:61:4e:26:5f:5e:9f:92:1e:0c:24:a4:f5:d0:70:13:
- cf:26:c3:43:3d:49:1d:9e:82:2e:52:5f:bc:3e:c6:66:29:01:
- 8e:4e:92:2c:bc:46:75:03:82:ac:73:e9:d9:7e:0b:67:ef:54:
- 52:1a
------BEGIN CERTIFICATE-----
-MIIDgzCCAuygAwIBAgIQJUuKhThCzONY+MXdriJupDANBgkqhkiG9w0BAQUFADBf
-MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT
-LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw
-HhcNOTcwNDE3MDAwMDAwWhcNMTExMDI0MjM1OTU5WjCBujEfMB0GA1UEChMWVmVy
-aVNpZ24gVHJ1c3QgTmV0d29yazEXMBUGA1UECxMOVmVyaVNpZ24sIEluYy4xMzAx
-BgNVBAsTKlZlcmlTaWduIEludGVybmF0aW9uYWwgU2VydmVyIENBIC0gQ2xhc3Mg
-MzFJMEcGA1UECxNAd3d3LnZlcmlzaWduLmNvbS9DUFMgSW5jb3JwLmJ5IFJlZi4g
-TElBQklMSVRZIExURC4oYyk5NyBWZXJpU2lnbjCBnzANBgkqhkiG9w0BAQEFAAOB
-jQAwgYkCgYEA2IKA6NYZAn0fhRg5JaJlK+G/1AXTvOY2O6rwTGxbtueqPHNFVbLx
-veqXQu2aNAoV1Klc9UAl3dkHwTKydWzEyruj/lYncUOqY/UwPpMo5frxCTvzt01O
-OfdcSVq4wR3Tsor+cDCVQsv+K1GLWjw6+SJPkLICp1OcTzTnqwSye28CAwEAAaOB
-4zCB4DAPBgNVHRMECDAGAQH/AgEAMEQGA1UdIAQ9MDswOQYLYIZIAYb4RQEHAQEw
-KjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL0NQUzA0BgNV
-HSUELTArBggrBgEFBQcDAQYIKwYBBQUHAwIGCWCGSAGG+EIEAQYKYIZIAYb4RQEI
-ATALBgNVHQ8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgEGMDEGA1UdHwQqMCgwJqAk
-oCKGIGh0dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA0GCSqGSIb3DQEB
-BQUAA4GBAAgB7ORolANC8XPxI6I63unx2sZUxCM+hurPajozq+qcBBQHNgYL+Yhv
-1RPuKSvD5HKNRO3RrCAJLeH24RkFOLA9D59/+J4C3IYChmFOJl9en5IeDCSk9dBw
-E88mw0M9SR2egi5SX7w+xmYpAY5Okiy8RnUDgqxz6dl+C2fvVFIa
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/verisign_intermediate_ca_2016.pem b/src/pki/testdata/ssl/certificates/verisign_intermediate_ca_2016.pem
deleted file mode 100644
index 195133e..0000000
--- a/src/pki/testdata/ssl/certificates/verisign_intermediate_ca_2016.pem
+++ /dev/null
@@ -1,71 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 46:fc:eb:ba:b4:d0:2f:0f:92:60:98:23:3f:93:07:8f
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority
- Validity
- Not Before: Apr 17 00:00:00 1997 GMT
- Not After : Oct 24 23:59:59 2016 GMT
- Subject: O=VeriSign Trust Network, OU=VeriSign, Inc., OU=VeriSign International Server CA - Class 3, OU=www.verisign.com/CPS Incorp.by Ref. LIABILITY LTD.(c)97 VeriSign
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public Key: (1024 bit)
- Modulus (1024 bit):
- 00:d8:82:80:e8:d6:19:02:7d:1f:85:18:39:25:a2:
- 65:2b:e1:bf:d4:05:d3:bc:e6:36:3b:aa:f0:4c:6c:
- 5b:b6:e7:aa:3c:73:45:55:b2:f1:bd:ea:97:42:ed:
- 9a:34:0a:15:d4:a9:5c:f5:40:25:dd:d9:07:c1:32:
- b2:75:6c:c4:ca:bb:a3:fe:56:27:71:43:aa:63:f5:
- 30:3e:93:28:e5:fa:f1:09:3b:f3:b7:4d:4e:39:f7:
- 5c:49:5a:b8:c1:1d:d3:b2:8a:fe:70:30:95:42:cb:
- fe:2b:51:8b:5a:3c:3a:f9:22:4f:90:b2:02:a7:53:
- 9c:4f:34:e7:ab:04:b2:7b:6f
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints:
- CA:TRUE, pathlen:0
- X509v3 Certificate Policies:
- Policy: 2.16.840.1.113733.1.7.1.1
- CPS: https://www.verisign.com/CPS
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication, Netscape Server Gated Crypto, 2.16.840.1.113733.1.8.1
- X509v3 Key Usage:
- Certificate Sign, CRL Sign
- Netscape Cert Type:
- SSL CA, S/MIME CA
- X509v3 CRL Distribution Points:
- URI:http://crl.verisign.com/pca3.crl
-
- Signature Algorithm: sha1WithRSAEncryption
- 40:8e:49:97:96:8a:73:dd:8e:4d:ef:3e:61:b7:ca:a0:62:ad:
- f4:0e:0a:bb:75:3d:e2:6e:d8:2c:c7:bf:f4:b9:8c:36:9b:ca:
- a2:d0:9c:72:46:39:f6:a6:82:03:65:11:c4:bc:bf:2d:a6:f5:
- d9:3b:0a:b5:98:fa:b3:78:b9:1e:f2:2b:4c:62:d5:fd:b2:7a:
- 1d:df:33:fd:73:f9:a5:d8:2d:8c:2a:ea:d1:fc:b0:28:b6:e9:
- 49:48:13:4b:83:8a:1b:48:7b:24:f7:38:de:6f:41:54:b8:ab:
- 57:6b:06:df:c7:a2:d4:a9:f6:f1:36:62:80:88:f2:8b:75:d6:
- 80:71
------BEGIN CERTIFICATE-----
-MIIDgzCCAuygAwIBAgIQRvzrurTQLw+SYJgjP5MHjzANBgkqhkiG9w0BAQUFADBf
-MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT
-LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw
-HhcNOTcwNDE3MDAwMDAwWhcNMTYxMDI0MjM1OTU5WjCBujEfMB0GA1UEChMWVmVy
-aVNpZ24gVHJ1c3QgTmV0d29yazEXMBUGA1UECxMOVmVyaVNpZ24sIEluYy4xMzAx
-BgNVBAsTKlZlcmlTaWduIEludGVybmF0aW9uYWwgU2VydmVyIENBIC0gQ2xhc3Mg
-MzFJMEcGA1UECxNAd3d3LnZlcmlzaWduLmNvbS9DUFMgSW5jb3JwLmJ5IFJlZi4g
-TElBQklMSVRZIExURC4oYyk5NyBWZXJpU2lnbjCBnzANBgkqhkiG9w0BAQEFAAOB
-jQAwgYkCgYEA2IKA6NYZAn0fhRg5JaJlK+G/1AXTvOY2O6rwTGxbtueqPHNFVbLx
-veqXQu2aNAoV1Klc9UAl3dkHwTKydWzEyruj/lYncUOqY/UwPpMo5frxCTvzt01O
-OfdcSVq4wR3Tsor+cDCVQsv+K1GLWjw6+SJPkLICp1OcTzTnqwSye28CAwEAAaOB
-4zCB4DAPBgNVHRMECDAGAQH/AgEAMEQGA1UdIAQ9MDswOQYLYIZIAYb4RQEHAQEw
-KjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL0NQUzA0BgNV
-HSUELTArBggrBgEFBQcDAQYIKwYBBQUHAwIGCWCGSAGG+EIEAQYKYIZIAYb4RQEI
-ATALBgNVHQ8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgEGMDEGA1UdHwQqMCgwJqAk
-oCKGIGh0dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA0GCSqGSIb3DQEB
-BQUAA4GBAECOSZeWinPdjk3vPmG3yqBirfQOCrt1PeJu2CzHv/S5jDabyqLQnHJG
-OfamggNlEcS8vy2m9dk7CrWY+rN4uR7yK0xi1f2yeh3fM/1z+aXYLYwq6tH8sCi2
-6UlIE0uDihtIeyT3ON5vQVS4q1drBt/HotSp9vE2YoCI8ot11oBx
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/weak_digest_md2_ee.pem b/src/pki/testdata/ssl/certificates/weak_digest_md2_ee.pem
deleted file mode 100644
index 6475ccc..0000000
--- a/src/pki/testdata/ssl/certificates/weak_digest_md2_ee.pem
+++ /dev/null
@@ -1,61 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4 (0x4)
- Signature Algorithm: md2WithRSAEncryption
- Issuer: CN=Test Deprecated Digest Intermediate CA
- Validity
- Not Before: Oct 26 03:46:49 2011 GMT
- Not After : Oct 23 03:46:49 2021 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public Key: (1024 bit)
- Modulus (1024 bit):
- 00:c7:48:eb:5c:00:17:94:01:09:d3:bd:47:41:38:
- 74:b8:4f:cb:ea:f1:15:eb:cb:e7:b5:6c:bd:fe:d9:
- 97:6d:1e:1b:ee:75:9e:c1:6f:4a:5c:8c:d7:19:cf:
- 51:89:48:e8:7d:79:41:ab:e3:a7:77:d1:de:f2:13:
- be:36:e7:44:c2:10:dd:56:83:03:f1:cd:e1:13:8d:
- fe:45:d6:1a:98:d8:8d:08:b9:32:10:36:0d:ec:ee:
- 2d:66:22:eb:6a:0d:0e:f4:15:91:dd:9d:3e:92:db:
- 9e:26:c8:af:4b:b7:fb:93:f8:68:07:c3:53:02:57:
- dc:d0:de:df:29:72:45:6f:e3
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 35:5C:C8:0F:21:D0:A2:F5:69:44:5C:9E:B0:DC:0F:75:74:24:7A:FD
- X509v3 Authority Key Identifier:
- keyid:A8:1D:06:8D:AD:3F:25:51:00:F0:3B:E9:35:C6:65:74:12:51:20:19
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: md2WithRSAEncryption
- 87:d2:29:b3:6b:ba:36:99:ac:56:47:d8:7d:63:9e:74:a2:b5:
- 42:5e:2b:96:08:f8:ab:e2:ce:ea:99:21:47:25:2c:55:f2:db:
- 9d:d7:ed:d9:68:ba:09:90:b1:43:64:be:af:ef:9a:b4:10:86:
- 99:85:7f:68:fe:aa:fd:d4:6a:f1:68:e9:8f:61:d8:46:21:e4:
- 17:4c:89:db:82:37:36:8d:7f:93:4a:63:b1:da:ba:6b:19:ad:
- 34:8b:f8:11:c3:25:14:2a:4e:7b:75:6b:03:79:c1:e5:1a:5b:
- ff:b4:91:47:4f:48:91:68:33:c7:3e:a5:95:45:81:2b:0d:35:
- 42:c4
------BEGIN CERTIFICATE-----
-MIICiDCCAfGgAwIBAgIBBDANBgkqhkiG9w0BAQIFADAxMS8wLQYDVQQDDCZUZXN0
-IERlcHJlY2F0ZWQgRGlnZXN0IEludGVybWVkaWF0ZSBDQTAeFw0xMTEwMjYwMzQ2
-NDlaFw0yMTEwMjMwMzQ2NDlaMGAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxp
-Zm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdUZXN0IENB
-MRIwEAYDVQQDDAkxMjcuMC4wLjEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
-AMdI61wAF5QBCdO9R0E4dLhPy+rxFevL57Vsvf7Zl20eG+51nsFvSlyM1xnPUYlI
-6H15Qavjp3fR3vITvjbnRMIQ3VaDA/HN4RON/kXWGpjYjQi5MhA2DezuLWYi62oN
-DvQVkd2dPpLbnibIr0u3+5P4aAfDUwJX3NDe3ylyRW/jAgMBAAGjgYAwfjAMBgNV
-HRMBAf8EAjAAMB0GA1UdDgQWBBQ1XMgPIdCi9WlEXJ6w3A91dCR6/TAfBgNVHSME
-GDAWgBSoHQaNrT8lUQDwO+k1xmV0ElEgGTAdBgNVHSUEFjAUBggrBgEFBQcDAQYI
-KwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQIFAAOBgQCH0imz
-a7o2maxWR9h9Y550orVCXiuWCPir4s7qmSFHJSxV8tud1+3ZaLoJkLFDZL6v75q0
-EIaZhX9o/qr91GrxaOmPYdhGIeQXTInbgjc2jX+TSmOx2rprGa00i/gRwyUUKk57
-dWsDecHlGlv/tJFHT0iRaDPHPqWVRYErDTVCxA==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/weak_digest_md2_intermediate.pem b/src/pki/testdata/ssl/certificates/weak_digest_md2_intermediate.pem
deleted file mode 100644
index 2f2765d..0000000
--- a/src/pki/testdata/ssl/certificates/weak_digest_md2_intermediate.pem
+++ /dev/null
@@ -1,57 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 4 (0x4)
- Signature Algorithm: md2WithRSAEncryption
- Issuer: CN=Test Deprecated Digest Root CA
- Validity
- Not Before: Oct 26 03:46:49 2011 GMT
- Not After : Oct 23 03:46:49 2021 GMT
- Subject: CN=Test Deprecated Digest Intermediate CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public Key: (1024 bit)
- Modulus (1024 bit):
- 00:ac:9b:c0:4b:fc:59:45:7a:d6:3f:a3:89:23:30:
- 5b:70:ad:ab:78:62:4b:53:85:9f:f9:7d:7f:c1:26:
- 08:23:80:61:0c:ba:6d:36:06:14:df:29:d4:9c:63:
- 94:04:ee:14:b6:b9:81:06:2f:33:d8:35:9a:1a:89:
- 17:ad:21:61:fa:24:75:b9:0c:ef:c1:15:6a:02:bd:
- b2:a5:29:df:d8:5f:80:7c:4e:c9:c1:b4:bb:fd:78:
- 44:63:34:b5:a5:51:aa:e9:23:77:44:53:f9:fa:58:
- f6:46:6e:9d:d2:cd:00:a3:28:fe:51:e4:30:7e:49:
- 62:d4:53:b0:d8:9c:34:47:07
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- A8:1D:06:8D:AD:3F:25:51:00:F0:3B:E9:35:C6:65:74:12:51:20:19
- X509v3 Authority Key Identifier:
- keyid:79:82:C5:B4:EB:60:12:4B:B5:87:79:1B:E2:3A:9C:17:76:81:CB:43
-
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: md2WithRSAEncryption
- 95:17:b3:5f:81:5b:9e:d6:e9:de:67:0e:a7:01:2f:b7:f8:db:
- 13:25:6b:a3:15:2d:53:08:c6:20:65:9d:8f:e9:9e:e4:bc:87:
- 78:59:f6:1f:f4:0e:85:c7:a8:c6:c8:6d:65:7e:b9:f4:73:9b:
- 9f:70:2b:b2:0d:03:06:c5:52:5f:59:87:b5:2b:d0:5c:0d:ee:
- 8f:40:cd:eb:95:f2:0e:f4:51:a8:e8:76:17:82:71:1a:d1:ea:
- 99:54:e4:b7:75:27:54:76:36:6f:c0:4d:5d:fa:bb:98:08:1e:
- d4:95:d1:9a:c7:35:83:d5:a1:79:2a:1f:78:b4:2b:de:17:93:
- 0c:1b
------BEGIN CERTIFICATE-----
-MIICMzCCAZygAwIBAgIBBDANBgkqhkiG9w0BAQIFADApMScwJQYDVQQDDB5UZXN0
-IERlcHJlY2F0ZWQgRGlnZXN0IFJvb3QgQ0EwHhcNMTExMDI2MDM0NjQ5WhcNMjEx
-MDIzMDM0NjQ5WjAxMS8wLQYDVQQDDCZUZXN0IERlcHJlY2F0ZWQgRGlnZXN0IElu
-dGVybWVkaWF0ZSBDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArJvAS/xZ
-RXrWP6OJIzBbcK2reGJLU4Wf+X1/wSYII4BhDLptNgYU3ynUnGOUBO4UtrmBBi8z
-2DWaGokXrSFh+iR1uQzvwRVqAr2ypSnf2F+AfE7JwbS7/XhEYzS1pVGq6SN3RFP5
-+lj2Rm6d0s0Aoyj+UeQwfkli1FOw2Jw0RwcCAwEAAaNjMGEwDwYDVR0TAQH/BAUw
-AwEB/zAdBgNVHQ4EFgQUqB0Gja0/JVEA8DvpNcZldBJRIBkwHwYDVR0jBBgwFoAU
-eYLFtOtgEku1h3kb4jqcF3aBy0MwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
-AgUAA4GBAJUXs1+BW57W6d5nDqcBL7f42xMla6MVLVMIxiBlnY/pnuS8h3hZ9h/0
-DoXHqMbIbWV+ufRzm59wK7INAwbFUl9Zh7Ur0FwN7o9AzeuV8g70UajodheCcRrR
-6plU5Ld1J1R2Nm/ATV36u5gIHtSV0ZrHNYPVoXkqH3i0K94Xkwwb
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/weak_digest_md2_root.pem b/src/pki/testdata/ssl/certificates/weak_digest_md2_root.pem
deleted file mode 100644
index 140174d..0000000
--- a/src/pki/testdata/ssl/certificates/weak_digest_md2_root.pem
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN CERTIFICATE-----
-MIICEjCCAXugAwIBAgIJAMq0TW/f2gFbMA0GCSqGSIb3DQEBAgUAMCkxJzAlBgNV
-BAMMHlRlc3QgRGVwcmVjYXRlZCBEaWdlc3QgUm9vdCBDQTAeFw0xMTEwMjYwMzQ2
-NDlaFw0yMTEwMjMwMzQ2NDlaMCkxJzAlBgNVBAMMHlRlc3QgRGVwcmVjYXRlZCBE
-aWdlc3QgUm9vdCBDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwFtzW+hj
-BwMylx+rrgeKjltrzYabuJDdTDTYr1lViwO39m6CtHYdcFvZ1nU9oDjW4Lb1NQYv
-HoR8+SD0X1R2Y0yF6AyS9NX5E9TQ8TJUSQEehfznbBovMkRaQQMRD6ksRIQr+s00
-P6n0lAYJyN32lmTCbJ+k1aGHPFtKhTNQF/cCAwEAAaNCMEAwDwYDVR0TAQH/BAUw
-AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHmCxbTrYBJLtYd5G+I6nBd2
-gctDMA0GCSqGSIb3DQEBAgUAA4GBABnPJVnXJXtImcjcBj31JelbPkLgt8HHjxa+
-LOMNZKIc9d6KWdjMoTNz7Y9dAKiLAJmPp9QAKU4cu0voWRK27O8CjR9Ng7SpfuZ7
-bQ4P22TlcVViAq56+bz/DFRabwBAZtndoawyn04r4Lo/3n/nEONeVTIqsixjN5Au
-0snKiMJj
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/weak_digest_md4_ee.pem b/src/pki/testdata/ssl/certificates/weak_digest_md4_ee.pem
deleted file mode 100644
index 6ea4b25..0000000
--- a/src/pki/testdata/ssl/certificates/weak_digest_md4_ee.pem
+++ /dev/null
@@ -1,61 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 3 (0x3)
- Signature Algorithm: md4WithRSAEncryption
- Issuer: CN=Test Deprecated Digest Intermediate CA
- Validity
- Not Before: Oct 26 03:46:49 2011 GMT
- Not After : Oct 23 03:46:49 2021 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public Key: (1024 bit)
- Modulus (1024 bit):
- 00:c7:48:eb:5c:00:17:94:01:09:d3:bd:47:41:38:
- 74:b8:4f:cb:ea:f1:15:eb:cb:e7:b5:6c:bd:fe:d9:
- 97:6d:1e:1b:ee:75:9e:c1:6f:4a:5c:8c:d7:19:cf:
- 51:89:48:e8:7d:79:41:ab:e3:a7:77:d1:de:f2:13:
- be:36:e7:44:c2:10:dd:56:83:03:f1:cd:e1:13:8d:
- fe:45:d6:1a:98:d8:8d:08:b9:32:10:36:0d:ec:ee:
- 2d:66:22:eb:6a:0d:0e:f4:15:91:dd:9d:3e:92:db:
- 9e:26:c8:af:4b:b7:fb:93:f8:68:07:c3:53:02:57:
- dc:d0:de:df:29:72:45:6f:e3
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 35:5C:C8:0F:21:D0:A2:F5:69:44:5C:9E:B0:DC:0F:75:74:24:7A:FD
- X509v3 Authority Key Identifier:
- keyid:A8:1D:06:8D:AD:3F:25:51:00:F0:3B:E9:35:C6:65:74:12:51:20:19
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: md4WithRSAEncryption
- a5:f6:ae:83:a1:44:5a:dd:c4:91:a2:d6:88:d8:c6:d1:e5:6d:
- c8:71:7a:43:3e:e2:ce:42:a4:7d:94:16:5d:0a:df:33:e3:ea:
- c9:22:e3:52:9d:f7:72:3e:24:d5:78:38:67:9f:2d:46:cb:73:
- c5:1f:eb:4b:02:5c:25:41:e0:c5:07:03:4c:4c:55:87:db:32:
- d0:2e:3e:aa:d4:a6:69:75:12:75:2e:b6:98:24:0e:18:c4:1c:
- 60:aa:c5:19:c1:1c:ad:ba:f4:c8:c0:55:2b:61:7d:a4:f4:c6:
- 73:0d:61:7e:04:42:e2:69:8d:9c:9d:83:22:e4:cc:cc:3f:b5:
- 2a:6d
------BEGIN CERTIFICATE-----
-MIICiDCCAfGgAwIBAgIBAzANBgkqhkiG9w0BAQMFADAxMS8wLQYDVQQDDCZUZXN0
-IERlcHJlY2F0ZWQgRGlnZXN0IEludGVybWVkaWF0ZSBDQTAeFw0xMTEwMjYwMzQ2
-NDlaFw0yMTEwMjMwMzQ2NDlaMGAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxp
-Zm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdUZXN0IENB
-MRIwEAYDVQQDDAkxMjcuMC4wLjEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
-AMdI61wAF5QBCdO9R0E4dLhPy+rxFevL57Vsvf7Zl20eG+51nsFvSlyM1xnPUYlI
-6H15Qavjp3fR3vITvjbnRMIQ3VaDA/HN4RON/kXWGpjYjQi5MhA2DezuLWYi62oN
-DvQVkd2dPpLbnibIr0u3+5P4aAfDUwJX3NDe3ylyRW/jAgMBAAGjgYAwfjAMBgNV
-HRMBAf8EAjAAMB0GA1UdDgQWBBQ1XMgPIdCi9WlEXJ6w3A91dCR6/TAfBgNVHSME
-GDAWgBSoHQaNrT8lUQDwO+k1xmV0ElEgGTAdBgNVHSUEFjAUBggrBgEFBQcDAQYI
-KwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQMFAAOBgQCl9q6D
-oURa3cSRotaI2MbR5W3IcXpDPuLOQqR9lBZdCt8z4+rJIuNSnfdyPiTVeDhnny1G
-y3PFH+tLAlwlQeDFBwNMTFWH2zLQLj6q1KZpdRJ1LraYJA4YxBxgqsUZwRytuvTI
-wFUrYX2k9MZzDWF+BELiaY2cnYMi5MzMP7UqbQ==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/weak_digest_md4_intermediate.pem b/src/pki/testdata/ssl/certificates/weak_digest_md4_intermediate.pem
deleted file mode 100644
index 2ba01dd..0000000
--- a/src/pki/testdata/ssl/certificates/weak_digest_md4_intermediate.pem
+++ /dev/null
@@ -1,57 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 3 (0x3)
- Signature Algorithm: md4WithRSAEncryption
- Issuer: CN=Test Deprecated Digest Root CA
- Validity
- Not Before: Oct 26 03:46:49 2011 GMT
- Not After : Oct 23 03:46:49 2021 GMT
- Subject: CN=Test Deprecated Digest Intermediate CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public Key: (1024 bit)
- Modulus (1024 bit):
- 00:ac:9b:c0:4b:fc:59:45:7a:d6:3f:a3:89:23:30:
- 5b:70:ad:ab:78:62:4b:53:85:9f:f9:7d:7f:c1:26:
- 08:23:80:61:0c:ba:6d:36:06:14:df:29:d4:9c:63:
- 94:04:ee:14:b6:b9:81:06:2f:33:d8:35:9a:1a:89:
- 17:ad:21:61:fa:24:75:b9:0c:ef:c1:15:6a:02:bd:
- b2:a5:29:df:d8:5f:80:7c:4e:c9:c1:b4:bb:fd:78:
- 44:63:34:b5:a5:51:aa:e9:23:77:44:53:f9:fa:58:
- f6:46:6e:9d:d2:cd:00:a3:28:fe:51:e4:30:7e:49:
- 62:d4:53:b0:d8:9c:34:47:07
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- A8:1D:06:8D:AD:3F:25:51:00:F0:3B:E9:35:C6:65:74:12:51:20:19
- X509v3 Authority Key Identifier:
- keyid:79:82:C5:B4:EB:60:12:4B:B5:87:79:1B:E2:3A:9C:17:76:81:CB:43
-
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: md4WithRSAEncryption
- 7e:ca:14:3d:14:04:f4:a4:1a:cf:b5:c6:c7:c2:d3:e7:68:08:
- 55:1f:fa:93:28:fa:34:aa:97:29:f7:31:6f:30:a4:25:bd:c5:
- fe:28:3d:a9:92:b0:4f:ca:24:3f:7b:1a:16:2e:0d:08:73:8e:
- ca:9f:50:da:e9:64:4f:bd:31:c4:72:89:98:8d:55:55:57:96:
- 6a:e0:5e:00:12:07:8b:3a:30:06:9a:47:a5:94:39:74:a0:f7:
- e1:00:48:2a:90:08:84:80:e3:6b:83:91:c6:74:d8:d9:c2:72:
- c7:b9:6e:33:7f:38:46:c1:26:14:5c:1b:85:a3:aa:bb:72:a0:
- 84:b2
------BEGIN CERTIFICATE-----
-MIICMzCCAZygAwIBAgIBAzANBgkqhkiG9w0BAQMFADApMScwJQYDVQQDDB5UZXN0
-IERlcHJlY2F0ZWQgRGlnZXN0IFJvb3QgQ0EwHhcNMTExMDI2MDM0NjQ5WhcNMjEx
-MDIzMDM0NjQ5WjAxMS8wLQYDVQQDDCZUZXN0IERlcHJlY2F0ZWQgRGlnZXN0IElu
-dGVybWVkaWF0ZSBDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArJvAS/xZ
-RXrWP6OJIzBbcK2reGJLU4Wf+X1/wSYII4BhDLptNgYU3ynUnGOUBO4UtrmBBi8z
-2DWaGokXrSFh+iR1uQzvwRVqAr2ypSnf2F+AfE7JwbS7/XhEYzS1pVGq6SN3RFP5
-+lj2Rm6d0s0Aoyj+UeQwfkli1FOw2Jw0RwcCAwEAAaNjMGEwDwYDVR0TAQH/BAUw
-AwEB/zAdBgNVHQ4EFgQUqB0Gja0/JVEA8DvpNcZldBJRIBkwHwYDVR0jBBgwFoAU
-eYLFtOtgEku1h3kb4jqcF3aBy0MwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
-AwUAA4GBAH7KFD0UBPSkGs+1xsfC0+doCFUf+pMo+jSqlyn3MW8wpCW9xf4oPamS
-sE/KJD97GhYuDQhzjsqfUNrpZE+9McRyiZiNVVVXlmrgXgASB4s6MAaaR6WUOXSg
-9+EASCqQCISA42uDkcZ02NnCcse5bjN/OEbBJhRcG4WjqrtyoISy
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/weak_digest_md4_root.pem b/src/pki/testdata/ssl/certificates/weak_digest_md4_root.pem
deleted file mode 100644
index 4d5fc29..0000000
--- a/src/pki/testdata/ssl/certificates/weak_digest_md4_root.pem
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN CERTIFICATE-----
-MIICEjCCAXugAwIBAgIJAPqB3U0Vl/N1MA0GCSqGSIb3DQEBAwUAMCkxJzAlBgNV
-BAMMHlRlc3QgRGVwcmVjYXRlZCBEaWdlc3QgUm9vdCBDQTAeFw0xMTEwMjYwMzQ2
-NDlaFw0yMTEwMjMwMzQ2NDlaMCkxJzAlBgNVBAMMHlRlc3QgRGVwcmVjYXRlZCBE
-aWdlc3QgUm9vdCBDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwFtzW+hj
-BwMylx+rrgeKjltrzYabuJDdTDTYr1lViwO39m6CtHYdcFvZ1nU9oDjW4Lb1NQYv
-HoR8+SD0X1R2Y0yF6AyS9NX5E9TQ8TJUSQEehfznbBovMkRaQQMRD6ksRIQr+s00
-P6n0lAYJyN32lmTCbJ+k1aGHPFtKhTNQF/cCAwEAAaNCMEAwDwYDVR0TAQH/BAUw
-AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHmCxbTrYBJLtYd5G+I6nBd2
-gctDMA0GCSqGSIb3DQEBAwUAA4GBAEvEn5YHixuMeYW3TpCVpyvNocToAlHiy5xt
-iXVN9V31w8X7I7vcUAgqWQYtB0qngQ28akmiY+yyfYkWB3H8B0DCr0STFCbMq0c6
-Ydt5pV3lBQpHUKZFvv5moVVWPXr0f0smZI26KGalHgxdrFJnnP4bp6VhYt8G3KFA
-h+nxg1RW
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/weak_digest_md5_ee.pem b/src/pki/testdata/ssl/certificates/weak_digest_md5_ee.pem
deleted file mode 100644
index c5a1eb4..0000000
--- a/src/pki/testdata/ssl/certificates/weak_digest_md5_ee.pem
+++ /dev/null
@@ -1,61 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 2 (0x2)
- Signature Algorithm: md5WithRSAEncryption
- Issuer: CN=Test Deprecated Digest Intermediate CA
- Validity
- Not Before: Oct 26 03:46:48 2011 GMT
- Not After : Oct 23 03:46:48 2021 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public Key: (1024 bit)
- Modulus (1024 bit):
- 00:c7:48:eb:5c:00:17:94:01:09:d3:bd:47:41:38:
- 74:b8:4f:cb:ea:f1:15:eb:cb:e7:b5:6c:bd:fe:d9:
- 97:6d:1e:1b:ee:75:9e:c1:6f:4a:5c:8c:d7:19:cf:
- 51:89:48:e8:7d:79:41:ab:e3:a7:77:d1:de:f2:13:
- be:36:e7:44:c2:10:dd:56:83:03:f1:cd:e1:13:8d:
- fe:45:d6:1a:98:d8:8d:08:b9:32:10:36:0d:ec:ee:
- 2d:66:22:eb:6a:0d:0e:f4:15:91:dd:9d:3e:92:db:
- 9e:26:c8:af:4b:b7:fb:93:f8:68:07:c3:53:02:57:
- dc:d0:de:df:29:72:45:6f:e3
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 35:5C:C8:0F:21:D0:A2:F5:69:44:5C:9E:B0:DC:0F:75:74:24:7A:FD
- X509v3 Authority Key Identifier:
- keyid:A8:1D:06:8D:AD:3F:25:51:00:F0:3B:E9:35:C6:65:74:12:51:20:19
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: md5WithRSAEncryption
- 5c:36:ba:dd:8c:ae:4c:2d:00:32:d9:ed:4d:1d:4b:07:52:28:
- 9c:16:18:3f:38:02:9d:d7:8e:16:e6:4b:2d:8c:84:cc:b1:90:
- 6c:b4:42:55:56:7c:e6:ec:15:2b:90:0b:7e:89:08:15:5a:11:
- 0e:5d:1b:a3:cc:81:79:1e:ea:96:82:75:d8:14:96:0f:17:a5:
- cd:50:fd:50:f0:5b:7f:03:54:b3:e3:b5:66:03:c8:00:1d:61:
- 36:f3:78:2d:07:82:61:0a:fd:d9:7c:8a:fe:cb:e1:09:df:fb:
- b6:2f:09:7b:0b:62:d8:27:18:4e:6e:fe:92:1b:1a:2b:7d:56:
- e0:87
------BEGIN CERTIFICATE-----
-MIICiDCCAfGgAwIBAgIBAjANBgkqhkiG9w0BAQQFADAxMS8wLQYDVQQDDCZUZXN0
-IERlcHJlY2F0ZWQgRGlnZXN0IEludGVybWVkaWF0ZSBDQTAeFw0xMTEwMjYwMzQ2
-NDhaFw0yMTEwMjMwMzQ2NDhaMGAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxp
-Zm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdUZXN0IENB
-MRIwEAYDVQQDDAkxMjcuMC4wLjEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
-AMdI61wAF5QBCdO9R0E4dLhPy+rxFevL57Vsvf7Zl20eG+51nsFvSlyM1xnPUYlI
-6H15Qavjp3fR3vITvjbnRMIQ3VaDA/HN4RON/kXWGpjYjQi5MhA2DezuLWYi62oN
-DvQVkd2dPpLbnibIr0u3+5P4aAfDUwJX3NDe3ylyRW/jAgMBAAGjgYAwfjAMBgNV
-HRMBAf8EAjAAMB0GA1UdDgQWBBQ1XMgPIdCi9WlEXJ6w3A91dCR6/TAfBgNVHSME
-GDAWgBSoHQaNrT8lUQDwO+k1xmV0ElEgGTAdBgNVHSUEFjAUBggrBgEFBQcDAQYI
-KwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQQFAAOBgQBcNrrd
-jK5MLQAy2e1NHUsHUiicFhg/OAKd144W5kstjITMsZBstEJVVnzm7BUrkAt+iQgV
-WhEOXRujzIF5HuqWgnXYFJYPF6XNUP1Q8Ft/A1Sz47VmA8gAHWE283gtB4JhCv3Z
-fIr+y+EJ3/u2Lwl7C2LYJxhObv6SGxorfVbghw==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/weak_digest_md5_intermediate.pem b/src/pki/testdata/ssl/certificates/weak_digest_md5_intermediate.pem
deleted file mode 100644
index 6192ffe..0000000
--- a/src/pki/testdata/ssl/certificates/weak_digest_md5_intermediate.pem
+++ /dev/null
@@ -1,57 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 2 (0x2)
- Signature Algorithm: md5WithRSAEncryption
- Issuer: CN=Test Deprecated Digest Root CA
- Validity
- Not Before: Oct 26 03:46:48 2011 GMT
- Not After : Oct 23 03:46:48 2021 GMT
- Subject: CN=Test Deprecated Digest Intermediate CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public Key: (1024 bit)
- Modulus (1024 bit):
- 00:ac:9b:c0:4b:fc:59:45:7a:d6:3f:a3:89:23:30:
- 5b:70:ad:ab:78:62:4b:53:85:9f:f9:7d:7f:c1:26:
- 08:23:80:61:0c:ba:6d:36:06:14:df:29:d4:9c:63:
- 94:04:ee:14:b6:b9:81:06:2f:33:d8:35:9a:1a:89:
- 17:ad:21:61:fa:24:75:b9:0c:ef:c1:15:6a:02:bd:
- b2:a5:29:df:d8:5f:80:7c:4e:c9:c1:b4:bb:fd:78:
- 44:63:34:b5:a5:51:aa:e9:23:77:44:53:f9:fa:58:
- f6:46:6e:9d:d2:cd:00:a3:28:fe:51:e4:30:7e:49:
- 62:d4:53:b0:d8:9c:34:47:07
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- A8:1D:06:8D:AD:3F:25:51:00:F0:3B:E9:35:C6:65:74:12:51:20:19
- X509v3 Authority Key Identifier:
- keyid:79:82:C5:B4:EB:60:12:4B:B5:87:79:1B:E2:3A:9C:17:76:81:CB:43
-
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: md5WithRSAEncryption
- a3:9d:4e:8b:42:7b:c2:3a:71:5c:7a:a9:ec:9b:da:04:a4:7d:
- f2:53:ba:b5:97:97:21:ae:94:03:23:7e:75:0e:c7:cc:1f:57:
- f2:76:ec:aa:bf:4f:2f:d1:2d:d2:3d:10:55:ce:a0:1c:93:b6:
- 8a:b6:65:9b:67:7a:a6:2f:04:62:e9:31:69:f4:26:08:a3:41:
- d0:11:3a:21:31:b6:32:5e:a0:4c:32:2d:ca:f8:a0:76:be:f2:
- a1:bf:15:98:73:26:41:2d:d5:8e:63:e7:5e:ef:61:08:f0:9d:
- fb:af:55:1e:37:9c:2a:13:f7:7e:ab:5c:f4:d5:f8:7c:a7:fb:
- c0:42
------BEGIN CERTIFICATE-----
-MIICMzCCAZygAwIBAgIBAjANBgkqhkiG9w0BAQQFADApMScwJQYDVQQDDB5UZXN0
-IERlcHJlY2F0ZWQgRGlnZXN0IFJvb3QgQ0EwHhcNMTExMDI2MDM0NjQ4WhcNMjEx
-MDIzMDM0NjQ4WjAxMS8wLQYDVQQDDCZUZXN0IERlcHJlY2F0ZWQgRGlnZXN0IElu
-dGVybWVkaWF0ZSBDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArJvAS/xZ
-RXrWP6OJIzBbcK2reGJLU4Wf+X1/wSYII4BhDLptNgYU3ynUnGOUBO4UtrmBBi8z
-2DWaGokXrSFh+iR1uQzvwRVqAr2ypSnf2F+AfE7JwbS7/XhEYzS1pVGq6SN3RFP5
-+lj2Rm6d0s0Aoyj+UeQwfkli1FOw2Jw0RwcCAwEAAaNjMGEwDwYDVR0TAQH/BAUw
-AwEB/zAdBgNVHQ4EFgQUqB0Gja0/JVEA8DvpNcZldBJRIBkwHwYDVR0jBBgwFoAU
-eYLFtOtgEku1h3kb4jqcF3aBy0MwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
-BAUAA4GBAKOdTotCe8I6cVx6qeyb2gSkffJTurWXlyGulAMjfnUOx8wfV/J27Kq/
-Ty/RLdI9EFXOoByTtoq2ZZtneqYvBGLpMWn0JgijQdAROiExtjJeoEwyLcr4oHa+
-8qG/FZhzJkEt1Y5j517vYQjwnfuvVR43nCoT936rXPTV+Hyn+8BC
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/weak_digest_md5_root.pem b/src/pki/testdata/ssl/certificates/weak_digest_md5_root.pem
deleted file mode 100644
index cea1d70..0000000
--- a/src/pki/testdata/ssl/certificates/weak_digest_md5_root.pem
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN CERTIFICATE-----
-MIICEjCCAXugAwIBAgIJANhsW8HvYIVtMA0GCSqGSIb3DQEBBAUAMCkxJzAlBgNV
-BAMMHlRlc3QgRGVwcmVjYXRlZCBEaWdlc3QgUm9vdCBDQTAeFw0xMTEwMjYwMzQ2
-NDhaFw0yMTEwMjMwMzQ2NDhaMCkxJzAlBgNVBAMMHlRlc3QgRGVwcmVjYXRlZCBE
-aWdlc3QgUm9vdCBDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwFtzW+hj
-BwMylx+rrgeKjltrzYabuJDdTDTYr1lViwO39m6CtHYdcFvZ1nU9oDjW4Lb1NQYv
-HoR8+SD0X1R2Y0yF6AyS9NX5E9TQ8TJUSQEehfznbBovMkRaQQMRD6ksRIQr+s00
-P6n0lAYJyN32lmTCbJ+k1aGHPFtKhTNQF/cCAwEAAaNCMEAwDwYDVR0TAQH/BAUw
-AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHmCxbTrYBJLtYd5G+I6nBd2
-gctDMA0GCSqGSIb3DQEBBAUAA4GBAC1qyqlaaPzmY78GXsw1MY2VbSNmGyRxWw3W
-dJVSkdKv8jeeZnVT6JaiHzmM0zQ9E8x0szILJlJ3r9CNKiuXgpCvbaWqiWwytFny
-8Mea/xS8FwIfPoxiOt/MdjvnfUWi1ukZaOy88rg5V7/mVdObTzu4VouD4qxhpdTa
-QRn7eFqR
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/weak_digest_sha1_ee.pem b/src/pki/testdata/ssl/certificates/weak_digest_sha1_ee.pem
deleted file mode 100644
index 5368e62..0000000
--- a/src/pki/testdata/ssl/certificates/weak_digest_sha1_ee.pem
+++ /dev/null
@@ -1,61 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 1 (0x1)
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: CN=Test Deprecated Digest Intermediate CA
- Validity
- Not Before: Oct 26 03:46:48 2011 GMT
- Not After : Oct 23 03:46:48 2021 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public Key: (1024 bit)
- Modulus (1024 bit):
- 00:c7:48:eb:5c:00:17:94:01:09:d3:bd:47:41:38:
- 74:b8:4f:cb:ea:f1:15:eb:cb:e7:b5:6c:bd:fe:d9:
- 97:6d:1e:1b:ee:75:9e:c1:6f:4a:5c:8c:d7:19:cf:
- 51:89:48:e8:7d:79:41:ab:e3:a7:77:d1:de:f2:13:
- be:36:e7:44:c2:10:dd:56:83:03:f1:cd:e1:13:8d:
- fe:45:d6:1a:98:d8:8d:08:b9:32:10:36:0d:ec:ee:
- 2d:66:22:eb:6a:0d:0e:f4:15:91:dd:9d:3e:92:db:
- 9e:26:c8:af:4b:b7:fb:93:f8:68:07:c3:53:02:57:
- dc:d0:de:df:29:72:45:6f:e3
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- 35:5C:C8:0F:21:D0:A2:F5:69:44:5C:9E:B0:DC:0F:75:74:24:7A:FD
- X509v3 Authority Key Identifier:
- keyid:A8:1D:06:8D:AD:3F:25:51:00:F0:3B:E9:35:C6:65:74:12:51:20:19
-
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha1WithRSAEncryption
- ab:a4:58:6a:d8:f4:87:00:11:45:23:ea:75:a9:0d:cd:87:73:
- 0e:73:f2:97:d3:74:b0:cd:90:c9:45:83:03:c3:82:ee:2f:79:
- 51:31:12:1c:39:a0:e2:45:f2:c2:4e:70:8c:e4:f3:af:15:4c:
- be:5d:e7:c3:96:79:c8:a4:98:6d:37:8d:3f:9f:9e:89:32:ca:
- a6:a7:e2:c8:f3:84:64:08:34:57:bd:10:22:96:78:39:b4:33:
- dc:f2:db:83:ec:0c:20:58:ce:ba:98:44:dc:ca:a2:10:6c:5a:
- d5:57:85:b9:3c:f0:48:99:98:e1:80:88:08:4c:cc:83:0d:40:
- ff:8d
------BEGIN CERTIFICATE-----
-MIICiDCCAfGgAwIBAgIBATANBgkqhkiG9w0BAQUFADAxMS8wLQYDVQQDDCZUZXN0
-IERlcHJlY2F0ZWQgRGlnZXN0IEludGVybWVkaWF0ZSBDQTAeFw0xMTEwMjYwMzQ2
-NDhaFw0yMTEwMjMwMzQ2NDhaMGAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxp
-Zm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdUZXN0IENB
-MRIwEAYDVQQDDAkxMjcuMC4wLjEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
-AMdI61wAF5QBCdO9R0E4dLhPy+rxFevL57Vsvf7Zl20eG+51nsFvSlyM1xnPUYlI
-6H15Qavjp3fR3vITvjbnRMIQ3VaDA/HN4RON/kXWGpjYjQi5MhA2DezuLWYi62oN
-DvQVkd2dPpLbnibIr0u3+5P4aAfDUwJX3NDe3ylyRW/jAgMBAAGjgYAwfjAMBgNV
-HRMBAf8EAjAAMB0GA1UdDgQWBBQ1XMgPIdCi9WlEXJ6w3A91dCR6/TAfBgNVHSME
-GDAWgBSoHQaNrT8lUQDwO+k1xmV0ElEgGTAdBgNVHSUEFjAUBggrBgEFBQcDAQYI
-KwYBBQUHAwIwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQUFAAOBgQCrpFhq
-2PSHABFFI+p1qQ3Nh3MOc/KX03SwzZDJRYMDw4LuL3lRMRIcOaDiRfLCTnCM5POv
-FUy+XefDlnnIpJhtN40/n56JMsqmp+LI84RkCDRXvRAilng5tDPc8tuD7AwgWM66
-mETcyqIQbFrVV4W5PPBImZjhgIgITMyDDUD/jQ==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/weak_digest_sha1_intermediate.pem b/src/pki/testdata/ssl/certificates/weak_digest_sha1_intermediate.pem
deleted file mode 100644
index 478d116..0000000
--- a/src/pki/testdata/ssl/certificates/weak_digest_sha1_intermediate.pem
+++ /dev/null
@@ -1,57 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 1 (0x1)
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: CN=Test Deprecated Digest Root CA
- Validity
- Not Before: Oct 26 03:46:48 2011 GMT
- Not After : Oct 23 03:46:48 2021 GMT
- Subject: CN=Test Deprecated Digest Intermediate CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public Key: (1024 bit)
- Modulus (1024 bit):
- 00:ac:9b:c0:4b:fc:59:45:7a:d6:3f:a3:89:23:30:
- 5b:70:ad:ab:78:62:4b:53:85:9f:f9:7d:7f:c1:26:
- 08:23:80:61:0c:ba:6d:36:06:14:df:29:d4:9c:63:
- 94:04:ee:14:b6:b9:81:06:2f:33:d8:35:9a:1a:89:
- 17:ad:21:61:fa:24:75:b9:0c:ef:c1:15:6a:02:bd:
- b2:a5:29:df:d8:5f:80:7c:4e:c9:c1:b4:bb:fd:78:
- 44:63:34:b5:a5:51:aa:e9:23:77:44:53:f9:fa:58:
- f6:46:6e:9d:d2:cd:00:a3:28:fe:51:e4:30:7e:49:
- 62:d4:53:b0:d8:9c:34:47:07
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- A8:1D:06:8D:AD:3F:25:51:00:F0:3B:E9:35:C6:65:74:12:51:20:19
- X509v3 Authority Key Identifier:
- keyid:79:82:C5:B4:EB:60:12:4B:B5:87:79:1B:E2:3A:9C:17:76:81:CB:43
-
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha1WithRSAEncryption
- 4e:30:a8:25:da:ac:90:a9:5e:6c:23:7f:76:1e:2d:64:79:78:
- 61:84:dc:06:12:43:72:a6:18:f1:f2:23:fa:e9:1f:de:3a:52:
- 1c:ce:cd:f7:7e:3c:92:ce:7f:f3:1f:f5:bc:18:17:95:cb:57:
- 34:f1:88:b1:c8:1f:51:e1:d3:3d:dd:17:c6:d4:af:f1:42:ec:
- 85:d7:bf:16:22:e0:88:82:92:cc:94:89:e5:eb:9d:cc:fe:31:
- 50:6f:ea:d8:70:f9:ef:6b:ca:3e:af:bd:61:42:33:ce:23:bf:
- 50:5f:55:14:64:2b:f7:fd:a6:29:41:a8:65:c3:fa:c4:f0:c7:
- 71:a5
------BEGIN CERTIFICATE-----
-MIICMzCCAZygAwIBAgIBATANBgkqhkiG9w0BAQUFADApMScwJQYDVQQDDB5UZXN0
-IERlcHJlY2F0ZWQgRGlnZXN0IFJvb3QgQ0EwHhcNMTExMDI2MDM0NjQ4WhcNMjEx
-MDIzMDM0NjQ4WjAxMS8wLQYDVQQDDCZUZXN0IERlcHJlY2F0ZWQgRGlnZXN0IElu
-dGVybWVkaWF0ZSBDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArJvAS/xZ
-RXrWP6OJIzBbcK2reGJLU4Wf+X1/wSYII4BhDLptNgYU3ynUnGOUBO4UtrmBBi8z
-2DWaGokXrSFh+iR1uQzvwRVqAr2ypSnf2F+AfE7JwbS7/XhEYzS1pVGq6SN3RFP5
-+lj2Rm6d0s0Aoyj+UeQwfkli1FOw2Jw0RwcCAwEAAaNjMGEwDwYDVR0TAQH/BAUw
-AwEB/zAdBgNVHQ4EFgQUqB0Gja0/JVEA8DvpNcZldBJRIBkwHwYDVR0jBBgwFoAU
-eYLFtOtgEku1h3kb4jqcF3aBy0MwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
-BQUAA4GBAE4wqCXarJCpXmwjf3YeLWR5eGGE3AYSQ3KmGPHyI/rpH946UhzOzfd+
-PJLOf/Mf9bwYF5XLVzTxiLHIH1Hh0z3dF8bUr/FC7IXXvxYi4IiCksyUieXrncz+
-MVBv6thw+e9ryj6vvWFCM84jv1BfVRRkK/f9pilBqGXD+sTwx3Gl
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/weak_digest_sha1_root.pem b/src/pki/testdata/ssl/certificates/weak_digest_sha1_root.pem
deleted file mode 100644
index a10f009..0000000
--- a/src/pki/testdata/ssl/certificates/weak_digest_sha1_root.pem
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN CERTIFICATE-----
-MIICEjCCAXugAwIBAgIJAOojr7l1i8pcMA0GCSqGSIb3DQEBBQUAMCkxJzAlBgNV
-BAMMHlRlc3QgRGVwcmVjYXRlZCBEaWdlc3QgUm9vdCBDQTAeFw0xMTEwMjYwMzQ2
-NDhaFw0yMTEwMjMwMzQ2NDhaMCkxJzAlBgNVBAMMHlRlc3QgRGVwcmVjYXRlZCBE
-aWdlc3QgUm9vdCBDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwFtzW+hj
-BwMylx+rrgeKjltrzYabuJDdTDTYr1lViwO39m6CtHYdcFvZ1nU9oDjW4Lb1NQYv
-HoR8+SD0X1R2Y0yF6AyS9NX5E9TQ8TJUSQEehfznbBovMkRaQQMRD6ksRIQr+s00
-P6n0lAYJyN32lmTCbJ+k1aGHPFtKhTNQF/cCAwEAAaNCMEAwDwYDVR0TAQH/BAUw
-AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHmCxbTrYBJLtYd5G+I6nBd2
-gctDMA0GCSqGSIb3DQEBBQUAA4GBAFfvM72mFeBd4HfP/U0HTmeQsPTorL01BRGe
-kIbHSBfliYF5fTXbHHjXqvnmNvCwfjO1+HyCxg3opwmDS5DiwkT2XtqYeF80h8/X
-J+hsdo+wJJiD0G8V3wOkBjlS5N3WaH3vhPikLkvmr2UzeeO3ORaaDUlRpzzOS2Pn
-28TAE0Wq
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/websocket_cacert.pem b/src/pki/testdata/ssl/certificates/websocket_cacert.pem
deleted file mode 100644
index 50c5baa..0000000
--- a/src/pki/testdata/ssl/certificates/websocket_cacert.pem
+++ /dev/null
@@ -1,61 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 94:72:cf:87:d6:a3:b4:82
- Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=JP, ST=Tokyo, O=pywebsocket, CN=pywebsocket
- Validity
- Not Before: Oct 16 04:53:09 2012 GMT
- Not After : Apr 29 04:53:09 2033 GMT
- Subject: C=JP, ST=Tokyo, O=pywebsocket, CN=pywebsocket
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public Key: (1024 bit)
- Modulus (1024 bit):
- 00:d8:f9:57:61:4a:d3:22:96:91:79:c5:1b:fa:43:
- e1:f6:ac:ef:16:ca:5e:a3:b2:9e:11:3c:c7:bc:f7:
- e3:86:2f:ef:1b:52:a0:86:79:b0:0e:89:b3:8b:f1:
- 54:98:7c:b8:18:44:d5:0b:26:da:b7:31:de:9e:f1:
- ba:01:99:f8:b1:e9:5c:aa:d9:ea:7f:46:6f:2d:03:
- 8d:64:bb:e4:bc:c2:61:9b:47:bc:56:d1:aa:d1:b4:
- e8:7c:7b:ad:83:c8:48:ef:56:c5:cf:01:22:56:75:
- 48:07:a3:15:82:32:59:08:44:d1:eb:04:ea:02:34:
- 22:7b:2b:41:6f:14:03:4e:07
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Subject Key Identifier:
- 33:BB:11:3D:8D:AF:1C:27:2B:F6:67:36:A7:53:4E:49:94:22:17:EB
- X509v3 Authority Key Identifier:
- keyid:33:BB:11:3D:8D:AF:1C:27:2B:F6:67:36:A7:53:4E:49:94:22:17:EB
- DirName:/C=JP/ST=Tokyo/O=pywebsocket/CN=pywebsocket
- serial:94:72:CF:87:D6:A3:B4:82
-
- X509v3 Basic Constraints:
- CA:TRUE
- Signature Algorithm: sha1WithRSAEncryption
- 4f:be:f4:12:fe:89:ff:bb:3b:1b:f3:78:6a:8b:ae:9c:da:31:
- f0:76:b9:22:19:8d:4c:89:be:59:97:ff:0f:9f:0d:74:88:e2:
- ca:4d:b2:d7:8e:9f:1d:3e:86:9d:40:84:fe:1a:57:53:ba:4b:
- 35:91:f4:49:ba:16:3f:a1:bf:b1:a3:d8:55:f6:4d:5c:a7:2a:
- 2d:e0:e1:ca:2b:44:67:c4:33:4f:31:0b:8d:3e:83:99:79:d1:
- e3:50:4d:30:ab:29:d7:46:83:07:b5:9a:84:e5:3d:cb:92:05:
- 49:93:2d:4e:92:a6:4b:a3:af:24:03:42:82:c6:26:76:f7:91:
- c9:02
------BEGIN CERTIFICATE-----
-MIICvDCCAiWgAwIBAgIJAJRyz4fWo7SCMA0GCSqGSIb3DQEBBQUAMEkxCzAJBgNV
-BAYTAkpQMQ4wDAYDVQQIEwVUb2t5bzEUMBIGA1UEChMLcHl3ZWJzb2NrZXQxFDAS
-BgNVBAMTC3B5d2Vic29ja2V0MB4XDTEyMTAxNjA0NTMwOVoXDTMzMDQyOTA0NTMw
-OVowSTELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBVRva3lvMRQwEgYDVQQKEwtweXdl
-YnNvY2tldDEUMBIGA1UEAxMLcHl3ZWJzb2NrZXQwgZ8wDQYJKoZIhvcNAQEBBQAD
-gY0AMIGJAoGBANj5V2FK0yKWkXnFG/pD4fas7xbKXqOynhE8x7z344Yv7xtSoIZ5
-sA6Js4vxVJh8uBhE1Qsm2rcx3p7xugGZ+LHpXKrZ6n9Gby0DjWS75LzCYZtHvFbR
-qtG06Hx7rYPISO9Wxc8BIlZ1SAejFYIyWQhE0esE6gI0InsrQW8UA04HAgMBAAGj
-gaswgagwHQYDVR0OBBYEFDO7ET2NrxwnK/ZnNqdTTkmUIhfrMHkGA1UdIwRyMHCA
-FDO7ET2NrxwnK/ZnNqdTTkmUIhfroU2kSzBJMQswCQYDVQQGEwJKUDEOMAwGA1UE
-CBMFVG9reW8xFDASBgNVBAoTC3B5d2Vic29ja2V0MRQwEgYDVQQDEwtweXdlYnNv
-Y2tldIIJAJRyz4fWo7SCMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEA
-T770Ev6J/7s7G/N4aouunNox8Ha5IhmNTIm+WZf/D58NdIjiyk2y146fHT6GnUCE
-/hpXU7pLNZH0SboWP6G/saPYVfZNXKcqLeDhyitEZ8QzTzELjT6DmXnR41BNMKsp
-10aDB7WahOU9y5IFSZMtTpKmS6OvJANCgsYmdveRyQI=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/websocket_client_cert.p12 b/src/pki/testdata/ssl/certificates/websocket_client_cert.p12
deleted file mode 100644
index 1ec70b2..0000000
--- a/src/pki/testdata/ssl/certificates/websocket_client_cert.p12
+++ /dev/null
Binary files differ
diff --git a/src/pki/testdata/ssl/certificates/wildcard.pem b/src/pki/testdata/ssl/certificates/wildcard.pem
deleted file mode 100644
index 2c3692e..0000000
--- a/src/pki/testdata/ssl/certificates/wildcard.pem
+++ /dev/null
@@ -1,113 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCtHZTAxIAlCLF+
-VUYlvmW9wv+VjrU1xuPIRo/NIzyEzuyB7yFVlI+/oaEnZNlW5f2g+nPEsFKCdre9
-A7K87eht+B8RYDowTdQqfgODOEIOWZ8MTL1WqenW+DKl6xNnVQKog6TdC9+hD/AY
-YTin94DuHr2VC2zvEzrjspq7kf+FlTjU+MT86toS/t+cLhBpwBPbLmH18LEs5999
-aEdUtFZwcJMTQT1i9PqYpNwiDKT9fIhMDIoa9CumyY+gT7tQ+tGlojNQICswU99U
-LiS2KIg1JxFQ/KJoproTnFuxgwQAg7iGmJx/OtcXdus7HdO6mIEF/Q4l75KHaDWp
-bRTl92G9AgMBAAECggEAepmBeIdxLUkb0pl3pVFS4nIP6Y34fY5OUM7QFnqG6JNW
-4apF1ELzDsbbx3dfiHA3D+NvS3OH64dCFqVg1vYx7neTIQ4iB4WG5VT7DdowxdLo
-laBfUtnglnKOA/0Yb8y/pjIc9sLq7DjKU6m+ow3gjELPBpfh3OqkgQ9DD+WUrbfW
-0zTRKPuKnz5xfs2Lv6kUz7AriePGt2pf860WMGqzRwGZ+968seXiKZLPWToDu7l5
-42YN8JAtDIwwe+87fp9Hxzv+sqembnl7Je8yklk6aCcNxg2zNfcWWCDvzV4YQ3FK
-ocONxFXFipKk3dHx9G04AEC6uYqhMSyQlev9Rt/zoQKBgQDc2jbPmru5PmqGHtLa
-Ih8KAvGcywSQsLqP2KbmDBR9Ajs9+yHa9IqNZPfE98fNtiiDSjEyOI0fZq3YHaLg
-BZzFsrn4UuTJJYPX3rJBc1TmsS8aZ8RkqiVhWBdKasAPBDUUWEaWxbqAXhKjgrNw
-K7xNmFASk7f1UjLvVE0LXd55dQKBgQDIqoMC6iXMQP7i/TW8P9jrvy3/dnVFdhN9
-d7sFasApdwGsJVb5XWWIqA62lcdi+0sNnMgw4SZbPJlWLgcDiahJJe8hhQbHgLYK
-j90VIYYl1FXUvZ2RjpgiwTR2I+iPPAyNRiFxVLiYEn8sGckDDEDG+eiDg9jOZ0aB
-0Q3cprJ2KQKBgQCgzen2wy1INeAOA8d2uD1tZrNRfKi4SVWtgwwSmF0aoFNOT9pY
-uJFhXlDhg6Bhce6RmaW0cWSfpn2RzBJZlvyNHhM2cfTPWJdkyGt2KGl7ByvKyB9B
-RHmvJRrgPlXVGTUkuRm8kf+3k8dycqoAVHfo76vtuszIvK8Ff5YRXqmsOQKBgGe8
-fm4LTe8BysLd0+G1wBZfhxAB1S5LlFfQhcaPIThOZXbw9r2DIvI6ryCE3ca10l7/
-Jh7exk10TnDW6plRmMX37l+Nvat1Rqa/KLO72PXFh3mrbMHKzatp5g0NEzS4/mQq
-VS+ZdLRpG4VY7ym8M+CpYSJcDsDlcvW5dUkUhD3BAoGAWskpxGJtWs5MaxrCA7Cs
-XFMA4kFzdavnEQXtdm3VkdlrpJW04Yt6YLSVzeLsfZdK8x7RAiIrsTwSRHnYjCBJ
-PTUU5ibJPFj7pKEJkXnAYJy41fzbLHUuL+X8liKms1pXJmcbUVPZq+eem/J3omls
-CgleVqA09PTkNcz+Xy6KQpY=
------END PRIVATE KEY-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:67
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Oct 3 17:20:08 2022 GMT
- Not After : Sep 30 17:20:08 2032 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:ad:1d:94:c0:c4:80:25:08:b1:7e:55:46:25:be:
- 65:bd:c2:ff:95:8e:b5:35:c6:e3:c8:46:8f:cd:23:
- 3c:84:ce:ec:81:ef:21:55:94:8f:bf:a1:a1:27:64:
- d9:56:e5:fd:a0:fa:73:c4:b0:52:82:76:b7:bd:03:
- b2:bc:ed:e8:6d:f8:1f:11:60:3a:30:4d:d4:2a:7e:
- 03:83:38:42:0e:59:9f:0c:4c:bd:56:a9:e9:d6:f8:
- 32:a5:eb:13:67:55:02:a8:83:a4:dd:0b:df:a1:0f:
- f0:18:61:38:a7:f7:80:ee:1e:bd:95:0b:6c:ef:13:
- 3a:e3:b2:9a:bb:91:ff:85:95:38:d4:f8:c4:fc:ea:
- da:12:fe:df:9c:2e:10:69:c0:13:db:2e:61:f5:f0:
- b1:2c:e7:df:7d:68:47:54:b4:56:70:70:93:13:41:
- 3d:62:f4:fa:98:a4:dc:22:0c:a4:fd:7c:88:4c:0c:
- 8a:1a:f4:2b:a6:c9:8f:a0:4f:bb:50:fa:d1:a5:a2:
- 33:50:20:2b:30:53:df:54:2e:24:b6:28:88:35:27:
- 11:50:fc:a2:68:a6:ba:13:9c:5b:b1:83:04:00:83:
- b8:86:98:9c:7f:3a:d7:17:76:eb:3b:1d:d3:ba:98:
- 81:05:fd:0e:25:ef:92:87:68:35:a9:6d:14:e5:f7:
- 61:bd
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- E7:1B:C5:0D:E7:ED:C7:2B:2E:95:91:40:77:5A:57:DE:1C:F4:D7:FE
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- DNS:*.example.org
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 3b:28:28:79:3c:bf:0e:3f:54:71:1e:0b:cb:1d:96:15:b4:9e:
- 34:1a:ea:ce:ad:4a:63:41:6f:bc:c3:0b:c6:89:db:23:72:88:
- 85:cf:cf:43:c3:ba:49:aa:dd:a9:4b:ed:da:ce:17:e0:c9:ee:
- c2:f2:38:2e:0a:e5:b6:85:58:2a:89:25:36:da:ba:17:e7:1e:
- eb:63:ee:be:83:ce:ce:05:f7:2a:96:18:a6:fd:20:50:5b:9a:
- 8d:1c:6e:11:f2:8e:11:c3:ae:86:5f:4d:d0:68:45:be:99:a9:
- 3b:87:eb:a8:e6:99:62:f9:ea:8f:03:12:91:47:df:58:46:11:
- 66:c1:57:9c:a5:a5:d2:75:ce:c8:8c:63:79:19:17:30:03:2e:
- 58:3a:cf:82:63:e9:7f:9a:c2:8d:e2:4a:dc:7f:5d:3b:40:10:
- 38:a4:45:46:3f:95:5c:48:97:7e:4e:85:82:48:e9:aa:89:c0:
- 77:d8:f3:16:b3:7a:4d:bb:82:84:e8:54:59:dc:5b:97:3f:83:
- b3:bd:f1:84:31:ae:02:17:92:84:e9:db:06:c0:97:0c:02:2b:
- 4b:d7:99:7f:d7:9e:9a:3d:99:06:5e:3d:74:f6:b4:1f:22:f0:
- 27:cb:4c:1f:ae:c4:24:c8:1a:9a:8d:21:7b:db:32:88:5d:a6:
- 72:b4:5e:70
------BEGIN CERTIFICATE-----
-MIID2TCCAsGgAwIBAgIRALBrk5LjXI1+7Z3IllnFwmcwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0yMjEwMDMxNzIwMDhaFw0zMjA5MzAxNzIwMDhaMGAxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtHZTAxIAlCLF+VUYlvmW9wv+VjrU1xuPI
-Ro/NIzyEzuyB7yFVlI+/oaEnZNlW5f2g+nPEsFKCdre9A7K87eht+B8RYDowTdQq
-fgODOEIOWZ8MTL1WqenW+DKl6xNnVQKog6TdC9+hD/AYYTin94DuHr2VC2zvEzrj
-spq7kf+FlTjU+MT86toS/t+cLhBpwBPbLmH18LEs5999aEdUtFZwcJMTQT1i9PqY
-pNwiDKT9fIhMDIoa9CumyY+gT7tQ+tGlojNQICswU99ULiS2KIg1JxFQ/KJoproT
-nFuxgwQAg7iGmJx/OtcXdus7HdO6mIEF/Q4l75KHaDWpbRTl92G9AgMBAAGjgYow
-gYcwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU5xvFDeftxysulZFAd1pX3hz01/4w
-HwYDVR0jBBgwFoAUmyYLipipux25HxzjGkAz7Y4XiKswHQYDVR0lBBYwFAYIKwYB
-BQUHAwEGCCsGAQUFBwMCMBgGA1UdEQQRMA+CDSouZXhhbXBsZS5vcmcwDQYJKoZI
-hvcNAQELBQADggEBADsoKHk8vw4/VHEeC8sdlhW0njQa6s6tSmNBb7zDC8aJ2yNy
-iIXPz0PDukmq3alL7drOF+DJ7sLyOC4K5baFWCqJJTbauhfnHutj7r6Dzs4F9yqW
-GKb9IFBbmo0cbhHyjhHDroZfTdBoRb6ZqTuH66jmmWL56o8DEpFH31hGEWbBV5yl
-pdJ1zsiMY3kZFzADLlg6z4Jj6X+awo3iStx/XTtAEDikRUY/lVxIl35OhYJI6aqJ
-wHfY8xazek27goToVFncW5c/g7O98YQxrgIXkoTp2wbAlwwCK0vXmX/Xnpo9mQZe
-PXT2tB8i8CfLTB+uxCTIGpqNIXvbMohdpnK0XnA=
------END CERTIFICATE-----
diff --git a/src/pki/testdata/ssl/certificates/x509_verify_results.chain.pem b/src/pki/testdata/ssl/certificates/x509_verify_results.chain.pem
deleted file mode 100644
index 30c06ee..0000000
--- a/src/pki/testdata/ssl/certificates/x509_verify_results.chain.pem
+++ /dev/null
@@ -1,247 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 9c:ac:13:39:97:f9:d0:e4:e8:7f:a3:f1:71:92:32:fa
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Intermediate CA
- Validity
- Not Before: Oct 3 17:20:08 2022 GMT
- Not After : Oct 2 17:20:08 2024 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:e0:53:f4:f3:98:c1:14:33:02:c8:a4:6d:fe:aa:
- 2a:f7:94:3d:a6:6f:00:df:3b:de:4c:9f:a3:ea:07:
- d4:ac:e5:5b:0d:d1:ac:e0:ed:f9:c5:98:1d:35:2d:
- e5:b3:49:97:14:85:44:0f:dc:4c:d2:67:08:88:01:
- a5:d8:a7:eb:93:d1:6a:a1:f7:51:e7:84:7e:52:2a:
- 7d:bc:6f:0e:d8:db:b6:a6:3e:de:dc:f5:a4:68:96:
- 44:11:85:02:ed:47:12:df:b8:60:71:95:7b:62:87:
- 68:7a:44:56:09:d5:b4:c8:f1:f6:c9:46:92:8b:68:
- e8:83:d5:d5:86:71:23:c3:80:1e:bf:6c:01:c7:d2:
- a4:bc:40:6d:e0:e3:c0:2e:30:78:bd:ad:dd:25:66:
- d3:f5:07:07:56:d7:ce:e2:72:c5:25:7d:0c:e1:a7:
- 6f:00:a8:da:ab:4b:54:43:09:64:a4:b6:52:38:2f:
- b7:cc:01:dd:1c:03:27:03:47:bf:df:e6:37:b0:ed:
- 18:dc:51:0b:d4:75:22:df:50:7b:3c:eb:37:39:1c:
- 9b:6f:08:7b:a7:05:ac:8c:43:f7:f1:da:51:06:b3:
- 82:45:3e:c8:81:73:9e:b0:a5:cf:76:96:af:81:2c:
- ac:01:2a:4a:58:4b:1d:be:ff:1f:85:c2:27:de:f1:
- 78:0b
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:FALSE
- X509v3 Subject Key Identifier:
- E2:E0:A4:73:95:9B:E9:6E:FD:CE:29:C4:6F:07:81:0B:96:BD:47:BA
- X509v3 Authority Key Identifier:
- 17:5C:45:F3:D0:AC:1C:10:4C:8B:43:44:20:C4:DD:93:C5:C5:19:3B
- X509v3 Extended Key Usage:
- TLS Web Server Authentication, TLS Web Client Authentication
- X509v3 Subject Alternative Name:
- IP Address:127.0.0.1
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 93:a1:82:4b:78:ce:18:3a:0a:ae:c8:3b:04:4a:1e:2a:e0:e8:
- c3:dd:15:cb:ed:4f:23:09:b8:d4:49:4f:3b:2c:98:bf:bd:7a:
- 4e:de:6b:48:93:0c:17:50:d5:df:b0:8a:95:3a:f4:d2:3c:c4:
- 71:cd:fc:d3:72:b1:99:dd:5c:82:74:df:42:d9:51:85:26:92:
- 2b:c8:0d:1b:aa:e5:98:9f:9d:25:cd:82:f1:a5:42:20:9c:7f:
- e9:b3:b8:1e:75:70:2a:07:ee:33:db:6d:b6:6a:cb:e0:80:e9:
- fe:12:15:0f:4e:e6:78:99:a3:22:68:1a:bc:ce:77:45:f0:9f:
- ce:23:25:bd:32:b6:8d:f4:1a:3a:8e:e9:a7:bd:da:e7:d5:ba:
- 84:38:4f:db:bb:29:7f:ec:4f:56:1a:c4:43:1a:0e:a5:c9:db:
- b1:69:9d:00:82:b6:b2:4b:67:e7:58:45:37:dc:30:81:93:5a:
- 56:de:5e:0f:9c:d6:1a:73:9c:9e:f4:f1:8e:20:11:fc:f3:3f:
- 77:7f:9a:f1:93:42:31:2b:5a:e2:70:f2:7a:f0:07:7e:28:c3:
- 21:6a:c5:b3:fe:08:76:4b:a3:58:70:f6:44:22:a5:e1:b9:17:
- ce:a4:90:35:5c:c7:9a:e0:12:b7:5f:24:d5:60:0c:bd:9d:b6:
- 1b:78:17:16
------BEGIN CERTIFICATE-----
-MIID1zCCAr+gAwIBAgIRAJysEzmX+dDk6H+j8XGSMvowDQYJKoZIhvcNAQELBQAw
-azELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExHTAbBgNVBAMMFFRlc3QgSW50
-ZXJtZWRpYXRlIENBMB4XDTIyMTAwMzE3MjAwOFoXDTI0MTAwMjE3MjAwOFowYDEL
-MAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1vdW50
-YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExEjAQBgNVBAMMCTEyNy4wLjAuMTCC
-ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOBT9POYwRQzAsikbf6qKveU
-PaZvAN873kyfo+oH1KzlWw3RrODt+cWYHTUt5bNJlxSFRA/cTNJnCIgBpdin65PR
-aqH3UeeEflIqfbxvDtjbtqY+3tz1pGiWRBGFAu1HEt+4YHGVe2KHaHpEVgnVtMjx
-9slGkoto6IPV1YZxI8OAHr9sAcfSpLxAbeDjwC4weL2t3SVm0/UHB1bXzuJyxSV9
-DOGnbwCo2qtLVEMJZKS2Ujgvt8wB3RwDJwNHv9/mN7DtGNxRC9R1It9QezzrNzkc
-m28Ie6cFrIxD9/HaUQazgkU+yIFznrClz3aWr4EsrAEqSlhLHb7/H4XCJ97xeAsC
-AwEAAaOBgDB+MAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFOLgpHOVm+lu/c4pxG8H
-gQuWvUe6MB8GA1UdIwQYMBaAFBdcRfPQrBwQTItDRCDE3ZPFxRk7MB0GA1UdJQQW
-MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAPBgNVHREECDAGhwR/AAABMA0GCSqGSIb3
-DQEBCwUAA4IBAQCToYJLeM4YOgquyDsESh4q4OjD3RXL7U8jCbjUSU87LJi/vXpO
-3mtIkwwXUNXfsIqVOvTSPMRxzfzTcrGZ3VyCdN9C2VGFJpIryA0bquWYn50lzYLx
-pUIgnH/ps7gedXAqB+4z2222asvggOn+EhUPTuZ4maMiaBq8zndF8J/OIyW9MraN
-9Bo6jumnvdrn1bqEOE/buyl/7E9WGsRDGg6lyduxaZ0AgrayS2fnWEU33DCBk1pW
-3l4PnNYac5ye9PGOIBH88z93f5rxk0IxK1ricPJ68Ad+KMMhasWz/gh2S6NYcPZE
-IqXhuRfOpJA1XMea4BK3XyTVYAy9nbYbeBcW
------END CERTIFICATE-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- b0:6b:93:92:e3:5c:8d:7e:ed:9d:c8:96:59:c5:c2:64
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
- Validity
- Not Before: Oct 3 17:20:08 2022 GMT
- Not After : Sep 30 17:20:08 2032 GMT
- Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Intermediate CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:9d:e9:bd:e4:3d:4a:2f:fb:c2:f9:e6:22:2a:42:
- 15:46:1c:8c:8f:47:4c:e9:c5:57:95:1f:66:70:93:
- 22:f0:94:c3:bb:b5:5b:ef:a4:6f:c8:c7:89:95:75:
- ba:0c:36:bf:4e:6b:a9:35:47:08:43:9e:29:6a:e2:
- c3:fb:03:b7:1f:b6:e1:51:6b:ed:7b:19:c7:f9:ce:
- 3b:dc:65:e9:66:c7:83:94:c4:d1:4e:ee:ed:64:4b:
- 81:f1:1a:ea:5a:64:18:1b:6a:4e:93:d0:13:6c:90:
- 60:ca:d2:4e:b7:24:16:f8:b2:08:58:9d:8d:a7:33:
- 45:15:34:81:ad:2d:2d:9c:60:ef:f9:2b:98:fe:79:
- d3:8d:2c:48:db:12:91:f4:2e:fa:bf:f5:26:c1:82:
- 05:80:dd:4c:a8:70:bf:a7:bc:10:34:77:39:db:47:
- 04:0f:ed:44:b2:65:46:22:20:88:59:28:0f:c7:0c:
- a2:b4:91:a5:a2:aa:ca:05:9f:8a:9b:6e:a3:cb:d4:
- a4:e8:24:75:9d:20:81:22:5b:5f:77:3e:c9:f1:1e:
- ae:eb:8a:33:8c:27:5b:1e:be:6d:21:1b:42:72:95:
- e3:9e:13:03:75:a7:58:d4:be:68:12:fe:63:8e:4b:
- 11:7a:34:e7:a3:6b:dd:73:ae:3e:19:9a:ec:91:8b:
- 73:af
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- 17:5C:45:F3:D0:AC:1C:10:4C:8B:43:44:20:C4:DD:93:C5:C5:19:3B
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- X509v3 Authority Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 25:54:8b:68:3b:3c:92:ed:1b:c7:a1:62:b3:7c:ff:7e:8c:57:
- 7c:67:5c:ea:74:9f:e8:f1:b5:c8:e4:88:0e:c9:a3:f3:28:c4:
- 05:af:8f:ad:51:32:66:ae:5d:7a:b1:77:7e:99:06:c8:30:26:
- 5a:9f:1e:34:ea:aa:3e:0a:73:a2:40:e3:8f:1a:01:96:a2:6d:
- 2f:6c:d9:36:65:98:c8:86:41:0e:ee:0d:aa:da:62:54:62:23:
- c6:23:b0:f1:ca:35:7b:e5:4b:d1:ab:80:80:d6:00:2b:19:85:
- 9d:e0:3c:3f:13:1e:90:d2:df:c3:31:90:0f:a8:40:08:33:4e:
- f7:a4:d0:ed:3e:a4:41:cf:e8:37:49:d1:58:e8:07:3d:4b:a1:
- c9:fe:12:07:9a:de:e0:c8:f3:68:d6:31:5d:03:77:2f:fa:b0:
- e6:2c:f3:80:59:d0:9b:1b:59:22:cd:7e:58:c6:cf:82:92:c3:
- 76:95:78:b2:75:c8:fa:59:9f:0e:c0:e3:6d:70:f9:82:ba:db:
- 89:89:81:b7:b9:e1:41:63:51:56:8a:5a:d2:52:c2:19:2f:d9:
- c0:9d:19:82:59:79:f9:56:1c:25:81:4d:0a:cd:77:1b:de:85:
- 6e:51:04:08:0b:0c:33:65:52:f6:90:a8:82:25:77:a0:fa:5e:
- 9c:2a:91:66
------BEGIN CERTIFICATE-----
-MIIDvDCCAqSgAwIBAgIRALBrk5LjXI1+7Z3IllnFwmQwDQYJKoZIhvcNAQELBQAw
-YzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
-dW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3QgUm9v
-dCBDQTAeFw0yMjEwMDMxNzIwMDhaFw0zMjA5MzAxNzIwMDhaMGsxCzAJBgNVBAYT
-AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3
-MRAwDgYDVQQKDAdUZXN0IENBMR0wGwYDVQQDDBRUZXN0IEludGVybWVkaWF0ZSBD
-QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ3pveQ9Si/7wvnmIipC
-FUYcjI9HTOnFV5UfZnCTIvCUw7u1W++kb8jHiZV1ugw2v05rqTVHCEOeKWriw/sD
-tx+24VFr7XsZx/nOO9xl6WbHg5TE0U7u7WRLgfEa6lpkGBtqTpPQE2yQYMrSTrck
-FviyCFidjaczRRU0ga0tLZxg7/krmP55040sSNsSkfQu+r/1JsGCBYDdTKhwv6e8
-EDR3OdtHBA/tRLJlRiIgiFkoD8cMorSRpaKqygWfiptuo8vUpOgkdZ0ggSJbX3c+
-yfEeruuKM4wnWx6+bSEbQnKV454TA3WnWNS+aBL+Y45LEXo056Nr3XOuPhma7JGL
-c68CAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUF1xF89CsHBBM
-i0NEIMTdk8XFGTswDgYDVR0PAQH/BAQDAgEGMB8GA1UdIwQYMBaAFJsmC4qYqbsd
-uR8c4xpAM+2OF4irMA0GCSqGSIb3DQEBCwUAA4IBAQAlVItoOzyS7RvHoWKzfP9+
-jFd8Z1zqdJ/o8bXI5IgOyaPzKMQFr4+tUTJmrl16sXd+mQbIMCZanx406qo+CnOi
-QOOPGgGWom0vbNk2ZZjIhkEO7g2q2mJUYiPGI7DxyjV75UvRq4CA1gArGYWd4Dw/
-Ex6Q0t/DMZAPqEAIM073pNDtPqRBz+g3SdFY6Ac9S6HJ/hIHmt7gyPNo1jFdA3cv
-+rDmLPOAWdCbG1kizX5Yxs+CksN2lXiydcj6WZ8OwONtcPmCutuJiYG3ueFBY1FW
-ilrSUsIZL9nAnRmCWXn5VhwlgU0KzXcb3oVuUQQICwwzZVL2kKiCJXeg+l6cKpFm
------END CERTIFICATE-----
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 0b:cc:00:80:c9:a0:0b:a1:c7:09:7c:9f:71:0d:90:92:cf:ee:c7:f4
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C = US, ST = California, L = Mountain View, O = Test CA, CN = Test Root CA
- Validity
- Not Before: Oct 3 17:20:08 2022 GMT
- Not After : Sep 30 17:20:08 2032 GMT
- Subject: C = US, ST = California, L = Mountain View, O = Test CA, CN = Test Root CA
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:c6:81:1f:92:73:b6:58:85:d9:8d:ac:b7:20:fd:
- c7:bf:40:b2:ea:fa:e5:0b:52:01:8f:9a:c1:eb:7a:
- 80:c1:f3:89:a4:3e:d5:1b:61:cc:b5:cf:80:b1:1a:
- db:bb:25:e0:18:bf:92:69:26:50:cd:e7:3f:ff:0d:
- 3c:b4:1f:14:12:ab:67:37:de:07:03:6c:12:74:82:
- 36:ac:c3:d4:d3:64:9f:91:ed:5b:f6:a9:7a:a4:9c:
- 98:e8:65:6c:94:e1:cb:55:73:ae:f8:1d:50:b0:78:
- e5:74:ff:b1:37:2c:cb:19:3d:a4:8c:e7:76:4e:86:
- 5c:3f:df:b3:ed:45:23:4f:54:9b:33:c6:89:5e:13:
- 1d:dd:7d:59:a5:07:34:28:86:27:1f:fa:9e:53:4f:
- 2a:b6:42:ad:37:12:62:f5:72:36:b6:02:12:40:44:
- fe:c7:9e:95:89:43:51:5e:b4:6e:c7:67:80:58:43:
- be:cc:07:28:bd:59:ff:1c:4c:8d:90:42:f4:cf:fd:
- 54:00:4f:48:72:2b:e1:67:3c:84:17:68:95:bf:ca:
- 07:7b:df:86:9d:56:e3:32:e3:70:87:b7:f8:3a:f7:
- e3:6e:65:14:7c:bb:76:b7:17:f1:42:8c:6f:2a:34:
- 64:10:35:14:8c:85:f6:57:bf:f3:5c:55:9d:ad:03:
- 10:f3
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints: critical
- CA:TRUE
- X509v3 Subject Key Identifier:
- 9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
- X509v3 Key Usage: critical
- Certificate Sign, CRL Sign
- Signature Algorithm: sha256WithRSAEncryption
- Signature Value:
- 39:9a:f6:0e:eb:08:4d:a0:f0:59:b9:91:fe:b5:d8:2e:4d:6b:
- 69:69:c5:d2:86:fc:a3:c2:a2:6c:ca:8d:98:1b:d2:fc:64:9b:
- 96:b4:47:f9:f4:ed:6f:52:3c:b5:13:f6:1e:71:51:3b:da:54:
- 93:c4:1d:94:17:23:76:9a:98:f5:9b:b8:b1:c5:ab:cd:ab:bd:
- 1a:c9:00:13:e0:e3:c7:5a:a7:21:71:eb:08:2b:ec:85:5c:08:
- 80:33:25:0f:1f:52:41:c4:9b:22:58:01:24:55:ef:9a:a6:ce:
- e4:85:a3:19:33:4d:7e:3f:04:32:15:d5:fc:63:5f:8b:dc:99:
- 2b:10:63:56:ac:60:6e:f9:db:9f:63:7b:a8:df:ab:72:28:8a:
- a9:e2:8e:9d:e6:6c:7e:5b:16:ba:94:b2:23:f2:d7:31:5b:de:
- 58:a0:8b:be:f4:6a:d2:d3:b4:e6:40:06:78:7a:2d:20:4c:cd:
- 9d:20:dd:3b:fc:b9:f3:94:13:b0:6b:18:d7:6b:e8:bf:14:cc:
- 87:30:8b:64:3f:ad:59:93:e5:f6:7c:d1:2b:f0:8e:4a:9c:c3:
- 34:18:4d:62:33:bd:a6:3a:b6:3f:1f:49:5b:63:b4:01:a8:5c:
- f0:98:93:35:53:2e:b2:f2:19:7f:87:0d:db:b1:80:61:38:c8:
- 47:01:85:b0
------BEGIN CERTIFICATE-----
-MIIDljCCAn6gAwIBAgIUC8wAgMmgC6HHCXyfcQ2Qks/ux/QwDQYJKoZIhvcNAQEL
-BQAwYzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM
-DU1vdW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3QgQ0ExFTATBgNVBAMMDFRlc3Qg
-Um9vdCBDQTAeFw0yMjEwMDMxNzIwMDhaFw0zMjA5MzAxNzIwMDhaMGMxCzAJBgNV
-BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBW
-aWV3MRAwDgYDVQQKDAdUZXN0IENBMRUwEwYDVQQDDAxUZXN0IFJvb3QgQ0EwggEi
-MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGgR+Sc7ZYhdmNrLcg/ce/QLLq
-+uULUgGPmsHreoDB84mkPtUbYcy1z4CxGtu7JeAYv5JpJlDN5z//DTy0HxQSq2c3
-3gcDbBJ0gjasw9TTZJ+R7Vv2qXqknJjoZWyU4ctVc674HVCweOV0/7E3LMsZPaSM
-53ZOhlw/37PtRSNPVJszxoleEx3dfVmlBzQohicf+p5TTyq2Qq03EmL1cja2AhJA
-RP7HnpWJQ1FetG7HZ4BYQ77MByi9Wf8cTI2QQvTP/VQAT0hyK+FnPIQXaJW/ygd7
-34adVuMy43CHt/g69+NuZRR8u3a3F/FCjG8qNGQQNRSMhfZXv/NcVZ2tAxDzAgMB
-AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJsmC4qYqbsduR8c4xpA
-M+2OF4irMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAOZr2DusI
-TaDwWbmR/rXYLk1raWnF0ob8o8KibMqNmBvS/GSblrRH+fTtb1I8tRP2HnFRO9pU
-k8QdlBcjdpqY9Zu4scWrzau9GskAE+Djx1qnIXHrCCvshVwIgDMlDx9SQcSbIlgB
-JFXvmqbO5IWjGTNNfj8EMhXV/GNfi9yZKxBjVqxgbvnbn2N7qN+rciiKqeKOneZs
-flsWupSyI/LXMVveWKCLvvRq0tO05kAGeHotIEzNnSDdO/y585QTsGsY12vovxTM
-hzCLZD+tWZPl9nzRK/COSpzDNBhNYjO9pjq2Px9JW2O0Aahc8JiTNVMusvIZf4cN
-27GAYTjIRwGFsA==
------END CERTIFICATE-----
diff --git a/src/pki/testdata/test_certificate_data.h b/src/pki/testdata/test_certificate_data.h
deleted file mode 100644
index 7e35b37..0000000
--- a/src/pki/testdata/test_certificate_data.h
+++ /dev/null
@@ -1,619 +0,0 @@
-// Copyright 2012 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef NET_TEST_TEST_CERTIFICATE_DATA_H_
-#define NET_TEST_TEST_CERTIFICATE_DATA_H_
-
-#include <stdint.h>
-
-namespace {
-
-// This is the SHA1 hash of the SubjectPublicKeyInfo of nist.der.
-static const char kNistSPKIHash[] =
- "\x15\x60\xde\x65\x4e\x03\x9f\xd0\x08\x82"
- "\xa9\x6a\xc4\x65\x8e\x6f\x92\x06\x84\x35";
-
-// Certificates for test data. They're obtained with:
-//
-// $ openssl s_client -connect [host]:443 -showcerts > /tmp/host.pem < /dev/null
-// $ openssl x509 -inform PEM -outform DER < /tmp/host.pem > /tmp/host.der
-// $ xxd -i /tmp/host.der
-//
-// TODO(wtc): move these certificates to data files in the
-// src/net/data/ssl/certificates directory.
-
-// Google's 2009 cert. Lacks a SubjectAltName, but contains www.google.com in
-// the Subject CN field.
-
-[[maybe_unused]] unsigned char google_der[] = {
- 0x30, 0x82, 0x03, 0x21, 0x30, 0x82, 0x02, 0x8a, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x01, 0x2a, 0x39, 0x76, 0x0d, 0x3f, 0x4f, 0xc9, 0x0b,
- 0xe7, 0xbd, 0x2b, 0xcf, 0x95, 0x2e, 0x7a, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x4c,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x5a,
- 0x41, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c,
- 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x43, 0x6f, 0x6e, 0x73, 0x75,
- 0x6c, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x28, 0x50, 0x74, 0x79, 0x29, 0x20,
- 0x4c, 0x74, 0x64, 0x2e, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x0d, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, 0x47,
- 0x43, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x39, 0x30, 0x33,
- 0x32, 0x37, 0x32, 0x32, 0x32, 0x30, 0x30, 0x37, 0x5a, 0x17, 0x0d, 0x31,
- 0x30, 0x30, 0x33, 0x32, 0x37, 0x32, 0x32, 0x32, 0x30, 0x30, 0x37, 0x5a,
- 0x30, 0x68, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
- 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08,
- 0x13, 0x0a, 0x43, 0x61, 0x6c, 0x69, 0x66, 0x6f, 0x72, 0x6e, 0x69, 0x61,
- 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0d, 0x4d,
- 0x6f, 0x75, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x69, 0x65, 0x77,
- 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x47,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x17, 0x30,
- 0x15, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0e, 0x77, 0x77, 0x77, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x81,
- 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02,
- 0x81, 0x81, 0x00, 0xd6, 0xb9, 0xe1, 0xad, 0xb8, 0x61, 0x0b, 0x1f, 0x4e,
- 0xb6, 0x3c, 0x09, 0x3d, 0xab, 0xe8, 0xe3, 0x2b, 0xb6, 0xe8, 0xa4, 0x3a,
- 0x78, 0x2f, 0xd3, 0x51, 0x20, 0x22, 0x45, 0x95, 0xd8, 0x00, 0x91, 0x33,
- 0x9a, 0xa7, 0xa2, 0x48, 0xea, 0x30, 0x57, 0x26, 0x97, 0x66, 0xc7, 0x5a,
- 0xef, 0xf1, 0x9b, 0x0c, 0x3f, 0xe1, 0xb9, 0x7f, 0x7b, 0xc3, 0xc7, 0xcc,
- 0xaf, 0x9c, 0xd0, 0x1f, 0x3c, 0x81, 0x15, 0x10, 0x58, 0xfc, 0x06, 0xb3,
- 0xbf, 0xbc, 0x9c, 0x02, 0xb9, 0x51, 0xdc, 0xfb, 0xa6, 0xb9, 0x17, 0x42,
- 0xe6, 0x46, 0xe7, 0x22, 0xcf, 0x6c, 0x27, 0x10, 0xfe, 0x54, 0xe6, 0x92,
- 0x6c, 0x0c, 0x60, 0x76, 0x9a, 0xce, 0xf8, 0x7f, 0xac, 0xb8, 0x5a, 0x08,
- 0x4a, 0xdc, 0xb1, 0x64, 0xbd, 0xa0, 0x74, 0x41, 0xb2, 0xac, 0x8f, 0x86,
- 0x9d, 0x1a, 0xde, 0x58, 0x09, 0xfd, 0x6c, 0x0a, 0x25, 0xe0, 0x79, 0x02,
- 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xe7, 0x30, 0x81, 0xe4, 0x30, 0x28,
- 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x03, 0x02, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86,
- 0xf8, 0x42, 0x04, 0x01, 0x30, 0x36, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04,
- 0x2f, 0x30, 0x2d, 0x30, 0x2b, 0xa0, 0x29, 0xa0, 0x27, 0x86, 0x25, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x74, 0x68,
- 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x61,
- 0x77, 0x74, 0x65, 0x53, 0x47, 0x43, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c,
- 0x30, 0x72, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01,
- 0x04, 0x66, 0x30, 0x64, 0x30, 0x22, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x30, 0x01, 0x86, 0x16, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65,
- 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x3e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x30, 0x02, 0x86, 0x32, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f,
- 0x72, 0x79, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x5f, 0x53, 0x47,
- 0x43, 0x5f, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x74, 0x30, 0x0c, 0x06, 0x03,
- 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
- 0x00, 0x03, 0x81, 0x81, 0x00, 0x39, 0xb6, 0xfb, 0x11, 0xbc, 0x33, 0x2c,
- 0xc3, 0x90, 0x48, 0xe3, 0x6e, 0xc3, 0x9b, 0x38, 0xb1, 0x42, 0xd1, 0x00,
- 0x09, 0x58, 0x63, 0xa0, 0xe1, 0x98, 0x1c, 0x85, 0xf2, 0xef, 0x10, 0x1d,
- 0x60, 0x4e, 0x51, 0x09, 0x62, 0xf5, 0x05, 0xbd, 0x9d, 0x4f, 0x87, 0x6c,
- 0x98, 0x72, 0x07, 0x80, 0xc3, 0x59, 0x48, 0x14, 0xe2, 0xd6, 0xef, 0xd0,
- 0x8f, 0x33, 0x6a, 0x68, 0x31, 0xfa, 0xb7, 0xbb, 0x85, 0xcc, 0xf7, 0xc7,
- 0x47, 0x7b, 0x67, 0x93, 0x3c, 0xc3, 0x16, 0x51, 0x9b, 0x6f, 0x87, 0x20,
- 0xfd, 0x67, 0x4c, 0x2b, 0xea, 0x6a, 0x49, 0xdb, 0x11, 0xd1, 0xbd, 0xd7,
- 0x95, 0x22, 0x43, 0x7a, 0x06, 0x7b, 0x4e, 0xf6, 0x37, 0x8e, 0xa2, 0xb9,
- 0xcf, 0x1f, 0xa5, 0xd2, 0xbd, 0x3b, 0x04, 0x97, 0x39, 0xb3, 0x0f, 0xfa,
- 0x38, 0xb5, 0xaf, 0x55, 0x20, 0x88, 0x60, 0x93, 0xf2, 0xde, 0xdb, 0xff,
- 0xdf};
-
-// webkit.org's 2008 cert. Contains a SubjectAltName field with *.webkit.org and
-// webkit.org. The Subject CN field contains *.webkit.org.
-
-[[maybe_unused]] unsigned char webkit_der[] = {
- 0x30, 0x82, 0x05, 0x0d, 0x30, 0x82, 0x03, 0xf5, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x43, 0xdd, 0x63, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, 0xca,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07,
- 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06,
- 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73,
- 0x64, 0x61, 0x6c, 0x65, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x11, 0x47, 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x33, 0x30, 0x31,
- 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2a, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72,
- 0x79, 0x31, 0x30, 0x30, 0x2e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x27,
- 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, 0x53, 0x65, 0x63,
- 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x74, 0x79, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x05,
- 0x13, 0x08, 0x30, 0x37, 0x39, 0x36, 0x39, 0x32, 0x38, 0x37, 0x30, 0x1e,
- 0x17, 0x0d, 0x30, 0x38, 0x30, 0x33, 0x31, 0x38, 0x32, 0x33, 0x33, 0x35,
- 0x31, 0x39, 0x5a, 0x17, 0x0d, 0x31, 0x31, 0x30, 0x33, 0x31, 0x38, 0x32,
- 0x33, 0x33, 0x35, 0x31, 0x39, 0x5a, 0x30, 0x79, 0x31, 0x0b, 0x30, 0x09,
- 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30,
- 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x43, 0x61, 0x6c, 0x69,
- 0x66, 0x6f, 0x72, 0x6e, 0x69, 0x61, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03,
- 0x55, 0x04, 0x07, 0x13, 0x09, 0x43, 0x75, 0x70, 0x65, 0x72, 0x74, 0x69,
- 0x6e, 0x6f, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31,
- 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0c, 0x4d, 0x61,
- 0x63, 0x20, 0x4f, 0x53, 0x20, 0x46, 0x6f, 0x72, 0x67, 0x65, 0x31, 0x15,
- 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0c, 0x2a, 0x2e, 0x77,
- 0x65, 0x62, 0x6b, 0x69, 0x74, 0x2e, 0x6f, 0x72, 0x67, 0x30, 0x81, 0x9f,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81,
- 0x81, 0x00, 0xa7, 0x62, 0x79, 0x41, 0xda, 0x28, 0xf2, 0xc0, 0x4f, 0xe0,
- 0x25, 0xaa, 0xa1, 0x2e, 0x3b, 0x30, 0x94, 0xb5, 0xc9, 0x26, 0x3a, 0x1b,
- 0xe2, 0xd0, 0xcc, 0xa2, 0x95, 0xe2, 0x91, 0xc0, 0xf0, 0x40, 0x9e, 0x27,
- 0x6e, 0xbd, 0x6e, 0xde, 0x7c, 0xb6, 0x30, 0x5c, 0xb8, 0x9b, 0x01, 0x2f,
- 0x92, 0x04, 0xa1, 0xef, 0x4a, 0xb1, 0x6c, 0xb1, 0x7e, 0x8e, 0xcd, 0xa6,
- 0xf4, 0x40, 0x73, 0x1f, 0x2c, 0x96, 0xad, 0xff, 0x2a, 0x6d, 0x0e, 0xba,
- 0x52, 0x84, 0x83, 0xb0, 0x39, 0xee, 0xc9, 0x39, 0xdc, 0x1e, 0x34, 0xd0,
- 0xd8, 0x5d, 0x7a, 0x09, 0xac, 0xa9, 0xee, 0xca, 0x65, 0xf6, 0x85, 0x3a,
- 0x6b, 0xee, 0xe4, 0x5c, 0x5e, 0xf8, 0xda, 0xd1, 0xce, 0x88, 0x47, 0xcd,
- 0x06, 0x21, 0xe0, 0xb9, 0x4b, 0xe4, 0x07, 0xcb, 0x57, 0xdc, 0xca, 0x99,
- 0x54, 0xf7, 0x0e, 0xd5, 0x17, 0x95, 0x05, 0x2e, 0xe9, 0xb1, 0x02, 0x03,
- 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0xce, 0x30, 0x82, 0x01, 0xca, 0x30,
- 0x09, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x02, 0x30, 0x00, 0x30, 0x0b,
- 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x05, 0xa0, 0x30,
- 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06,
- 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30, 0x57, 0x06, 0x03, 0x55, 0x1d,
- 0x1f, 0x04, 0x50, 0x30, 0x4e, 0x30, 0x4c, 0xa0, 0x4a, 0xa0, 0x48, 0x86,
- 0x46, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x2e, 0x67, 0x6f, 0x64,
- 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70,
- 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x67, 0x6f, 0x64, 0x61,
- 0x64, 0x64, 0x79, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x69,
- 0x73, 0x73, 0x75, 0x69, 0x6e, 0x67, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30,
- 0x52, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x4b, 0x30, 0x49, 0x30, 0x47,
- 0x06, 0x0b, 0x60, 0x86, 0x48, 0x01, 0x86, 0xfd, 0x6d, 0x01, 0x07, 0x17,
- 0x02, 0x30, 0x38, 0x30, 0x36, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x02, 0x01, 0x16, 0x2a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73,
- 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x30,
- 0x7f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04,
- 0x73, 0x30, 0x71, 0x30, 0x23, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x30, 0x01, 0x86, 0x17, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79,
- 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x30, 0x02, 0x86, 0x3e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f,
- 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79,
- 0x2f, 0x67, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x65, 0x64,
- 0x69, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x72, 0x74, 0x30, 0x1d, 0x06, 0x03,
- 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x48, 0xdf, 0x60, 0x32, 0xcc,
- 0x89, 0x01, 0xb6, 0xdc, 0x2f, 0xe3, 0x73, 0xb5, 0x9c, 0x16, 0x58, 0x32,
- 0x68, 0xa9, 0xc3, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18,
- 0x30, 0x16, 0x80, 0x14, 0xfd, 0xac, 0x61, 0x32, 0x93, 0x6c, 0x45, 0xd6,
- 0xe2, 0xee, 0x85, 0x5f, 0x9a, 0xba, 0xe7, 0x76, 0x99, 0x68, 0xcc, 0xe7,
- 0x30, 0x23, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x1c, 0x30, 0x1a, 0x82,
- 0x0c, 0x2a, 0x2e, 0x77, 0x65, 0x62, 0x6b, 0x69, 0x74, 0x2e, 0x6f, 0x72,
- 0x67, 0x82, 0x0a, 0x77, 0x65, 0x62, 0x6b, 0x69, 0x74, 0x2e, 0x6f, 0x72,
- 0x67, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x1e, 0x6a, 0xe7,
- 0xe0, 0x4f, 0xe7, 0x4d, 0xd0, 0x69, 0x7c, 0xf8, 0x8f, 0x99, 0xb4, 0x18,
- 0x95, 0x36, 0x24, 0x0f, 0x0e, 0xa3, 0xea, 0x34, 0x37, 0xf4, 0x7d, 0xd5,
- 0x92, 0x35, 0x53, 0x72, 0x76, 0x3f, 0x69, 0xf0, 0x82, 0x56, 0xe3, 0x94,
- 0x7a, 0x1d, 0x1a, 0x81, 0xaf, 0x9f, 0xc7, 0x43, 0x01, 0x64, 0xd3, 0x7c,
- 0x0d, 0xc8, 0x11, 0x4e, 0x4a, 0xe6, 0x1a, 0xc3, 0x01, 0x74, 0xe8, 0x35,
- 0x87, 0x5c, 0x61, 0xaa, 0x8a, 0x46, 0x06, 0xbe, 0x98, 0x95, 0x24, 0x9e,
- 0x01, 0xe3, 0xe6, 0xa0, 0x98, 0xee, 0x36, 0x44, 0x56, 0x8d, 0x23, 0x9c,
- 0x65, 0xea, 0x55, 0x6a, 0xdf, 0x66, 0xee, 0x45, 0xe8, 0xa0, 0xe9, 0x7d,
- 0x9a, 0xba, 0x94, 0xc5, 0xc8, 0xc4, 0x4b, 0x98, 0xff, 0x9a, 0x01, 0x31,
- 0x6d, 0xf9, 0x2b, 0x58, 0xe7, 0xe7, 0x2a, 0xc5, 0x4d, 0xbb, 0xbb, 0xcd,
- 0x0d, 0x70, 0xe1, 0xad, 0x03, 0xf5, 0xfe, 0xf4, 0x84, 0x71, 0x08, 0xd2,
- 0xbc, 0x04, 0x7b, 0x26, 0x1c, 0xa8, 0x0f, 0x9c, 0xd8, 0x12, 0x6a, 0x6f,
- 0x2b, 0x67, 0xa1, 0x03, 0x80, 0x9a, 0x11, 0x0b, 0xe9, 0xe0, 0xb5, 0xb3,
- 0xb8, 0x19, 0x4e, 0x0c, 0xa4, 0xd9, 0x2b, 0x3b, 0xc2, 0xca, 0x20, 0xd3,
- 0x0c, 0xa4, 0xff, 0x93, 0x13, 0x1f, 0xfc, 0xba, 0x94, 0x93, 0x8c, 0x64,
- 0x15, 0x2e, 0x28, 0xa9, 0x55, 0x8c, 0x2c, 0x48, 0xd3, 0xd3, 0xc1, 0x50,
- 0x69, 0x19, 0xe8, 0x34, 0xd3, 0xf1, 0x04, 0x9f, 0x0a, 0x7a, 0x21, 0x87,
- 0xbf, 0xb9, 0x59, 0x37, 0x2e, 0xf4, 0x71, 0xa5, 0x3e, 0xbe, 0xcd, 0x70,
- 0x83, 0x18, 0xf8, 0x8a, 0x72, 0x85, 0x45, 0x1f, 0x08, 0x01, 0x6f, 0x37,
- 0xf5, 0x2b, 0x7b, 0xea, 0xb9, 0x8b, 0xa3, 0xcc, 0xfd, 0x35, 0x52, 0xdd,
- 0x66, 0xde, 0x4f, 0x30, 0xc5, 0x73, 0x81, 0xb6, 0xe8, 0x3c, 0xd8, 0x48,
- 0x8a};
-
-// thawte.com 2008 Extended Validation cert. Lacks a SubjectAltName, but
-// contains www.thawte.com in the Subject CN field.
-
-[[maybe_unused]] unsigned char thawte_der[] = {
- 0x30, 0x82, 0x04, 0xa5, 0x30, 0x82, 0x03, 0x8d, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x17, 0x76, 0x05, 0x88, 0x95, 0x58, 0xee, 0xbb, 0x00,
- 0xda, 0x10, 0xe5, 0xf0, 0xf3, 0x9c, 0xf0, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81,
- 0x8b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63,
- 0x2e, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x30,
- 0x54, 0x65, 0x72, 0x6d, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x75, 0x73, 0x65,
- 0x20, 0x61, 0x74, 0x20, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f,
- 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x20, 0x28, 0x63, 0x29, 0x30, 0x36,
- 0x31, 0x2a, 0x30, 0x28, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x21, 0x74,
- 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64,
- 0x65, 0x64, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d,
- 0x30, 0x38, 0x31, 0x31, 0x31, 0x39, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
- 0x5a, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x31, 0x31, 0x37, 0x32, 0x33, 0x35,
- 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xc7, 0x31, 0x13, 0x30, 0x11, 0x06,
- 0x0b, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x3c, 0x02, 0x01, 0x03,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x19, 0x30, 0x17, 0x06, 0x0b, 0x2b, 0x06,
- 0x01, 0x04, 0x01, 0x82, 0x37, 0x3c, 0x02, 0x01, 0x02, 0x14, 0x08, 0x44,
- 0x65, 0x6c, 0x61, 0x77, 0x61, 0x72, 0x65, 0x31, 0x1b, 0x30, 0x19, 0x06,
- 0x03, 0x55, 0x04, 0x0f, 0x13, 0x12, 0x56, 0x31, 0x2e, 0x30, 0x2c, 0x20,
- 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x20, 0x35, 0x2e, 0x28, 0x62, 0x29,
- 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x14, 0x0a, 0x54,
- 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x10, 0x30,
- 0x0e, 0x06, 0x03, 0x55, 0x04, 0x05, 0x13, 0x07, 0x33, 0x38, 0x39, 0x38,
- 0x32, 0x36, 0x31, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04,
- 0x08, 0x13, 0x0a, 0x43, 0x61, 0x6c, 0x69, 0x66, 0x6f, 0x72, 0x6e, 0x69,
- 0x61, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x07, 0x14, 0x0d,
- 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x69, 0x65,
- 0x77, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x03, 0x14, 0x0e,
- 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63,
- 0x6f, 0x6d, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48,
- 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00,
- 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xe7, 0x89, 0x68, 0xb5, 0x6e,
- 0x1d, 0x38, 0x19, 0xf6, 0x2d, 0x61, 0xc2, 0x00, 0xba, 0x6e, 0xab, 0x66,
- 0x92, 0xd6, 0x85, 0x87, 0x2d, 0xd5, 0xa8, 0x58, 0xa9, 0x7a, 0x75, 0x27,
- 0x9d, 0xed, 0x9e, 0xfe, 0x06, 0x71, 0x70, 0x2d, 0x21, 0x70, 0x4c, 0x3e,
- 0x9c, 0xb6, 0xd5, 0x5d, 0x44, 0x92, 0xb4, 0xe0, 0xee, 0x7c, 0x0a, 0x50,
- 0x4c, 0x0d, 0x67, 0x98, 0xaa, 0x01, 0x0e, 0x37, 0xa3, 0x2a, 0xef, 0xe6,
- 0xe0, 0x11, 0x7b, 0xee, 0xb0, 0xa2, 0xb4, 0x32, 0x64, 0xa7, 0x0d, 0xda,
- 0x6c, 0x15, 0xf8, 0xc5, 0xa5, 0x5a, 0x2c, 0xfc, 0xc9, 0xa6, 0x3c, 0x88,
- 0x88, 0xbf, 0xdf, 0xa7, 0x38, 0xf0, 0x78, 0xed, 0x81, 0x93, 0x29, 0x0c,
- 0xae, 0xc7, 0xab, 0x51, 0x21, 0x5e, 0xca, 0x95, 0xe5, 0x48, 0x52, 0x41,
- 0xb6, 0x18, 0x60, 0x04, 0x19, 0x6f, 0x3d, 0x80, 0x14, 0xd3, 0xaf, 0x23,
- 0x03, 0x10, 0x95, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x49,
- 0x30, 0x82, 0x01, 0x45, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01,
- 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x39, 0x06, 0x03, 0x55, 0x1d,
- 0x1f, 0x04, 0x32, 0x30, 0x30, 0x30, 0x2e, 0xa0, 0x2c, 0xa0, 0x2a, 0x86,
- 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e,
- 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54,
- 0x68, 0x61, 0x77, 0x74, 0x65, 0x45, 0x56, 0x43, 0x41, 0x32, 0x30, 0x30,
- 0x36, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x42, 0x06, 0x03, 0x55, 0x1d, 0x20,
- 0x04, 0x3b, 0x30, 0x39, 0x30, 0x37, 0x06, 0x0b, 0x60, 0x86, 0x48, 0x01,
- 0x86, 0xf8, 0x45, 0x01, 0x07, 0x30, 0x01, 0x30, 0x28, 0x30, 0x26, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68,
- 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74,
- 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70,
- 0x73, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30, 0x1f, 0x06, 0x03,
- 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xcd, 0x32, 0xe2,
- 0xf2, 0x5d, 0x25, 0x47, 0x02, 0xaa, 0x8f, 0x79, 0x4b, 0x32, 0xee, 0x03,
- 0x99, 0xfd, 0x30, 0x49, 0xd1, 0x30, 0x76, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x6a, 0x30, 0x68, 0x30, 0x22, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x16, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x74,
- 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x42, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x36, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68,
- 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70,
- 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x54, 0x68, 0x61, 0x77,
- 0x74, 0x65, 0x5f, 0x45, 0x56, 0x5f, 0x43, 0x41, 0x5f, 0x32, 0x30, 0x30,
- 0x36, 0x2e, 0x63, 0x72, 0x74, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48,
- 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01,
- 0x00, 0xb2, 0xa0, 0x96, 0xdd, 0xec, 0x04, 0x38, 0x6b, 0xc3, 0x7a, 0xad,
- 0x23, 0x44, 0x91, 0xe5, 0x62, 0x8c, 0xb1, 0xf6, 0x9c, 0x03, 0x21, 0x1f,
- 0xef, 0x03, 0xd9, 0xca, 0x63, 0xb2, 0xf8, 0xdb, 0x5a, 0x93, 0xc2, 0xcc,
- 0xf1, 0x7c, 0x6f, 0xeb, 0x0f, 0x51, 0x7b, 0x4b, 0xe7, 0xb5, 0xfc, 0xbc,
- 0x9b, 0x87, 0x48, 0xcc, 0x5b, 0xf9, 0xc8, 0x66, 0xa4, 0x40, 0xac, 0xe9,
- 0x42, 0x5d, 0xed, 0xf3, 0x53, 0x13, 0xe7, 0xbd, 0x6e, 0x7f, 0x50, 0x53,
- 0x64, 0xb3, 0x95, 0xf1, 0x42, 0x4f, 0x36, 0x54, 0xb4, 0x1e, 0x7f, 0x18,
- 0x37, 0x39, 0x3b, 0x06, 0x5b, 0xe5, 0x13, 0xd9, 0x57, 0xbc, 0xd5, 0x68,
- 0xe3, 0x71, 0x5f, 0x5f, 0x2b, 0xf5, 0xa6, 0xc2, 0x8f, 0x67, 0x81, 0x3a,
- 0x44, 0x63, 0x8c, 0x36, 0xfa, 0xa8, 0xed, 0xfd, 0xd7, 0x5e, 0xa2, 0x9f,
- 0xb0, 0x9d, 0x47, 0x86, 0xfb, 0x71, 0x60, 0x8e, 0xc8, 0xd3, 0x45, 0x19,
- 0xb7, 0xda, 0xcd, 0x9e, 0xea, 0x70, 0x10, 0x87, 0x37, 0x10, 0xdd, 0x2c,
- 0x11, 0xdf, 0xee, 0x02, 0x21, 0xa6, 0x75, 0xe6, 0xd6, 0x9f, 0x54, 0x72,
- 0x61, 0xe6, 0x5c, 0x1e, 0x6e, 0x16, 0xf6, 0x8e, 0xb8, 0xfc, 0x47, 0x80,
- 0x05, 0x4b, 0xf7, 0x2d, 0x02, 0xee, 0x50, 0x26, 0xd1, 0x48, 0x01, 0x60,
- 0xdc, 0x3c, 0xa7, 0xdb, 0xeb, 0xca, 0x8b, 0xa6, 0xff, 0x9e, 0x47, 0x5d,
- 0x87, 0x40, 0xf8, 0xd2, 0x82, 0xd7, 0x13, 0x64, 0x0e, 0xd4, 0xb3, 0x29,
- 0x22, 0xa7, 0xe0, 0xc8, 0xcd, 0x8c, 0x4d, 0xf5, 0x11, 0x21, 0x26, 0x02,
- 0x43, 0x33, 0x8e, 0xa9, 0x3f, 0x91, 0xd4, 0x05, 0x97, 0xc9, 0xd3, 0x42,
- 0x6b, 0x05, 0x99, 0xf6, 0x16, 0x71, 0x67, 0x65, 0xc7, 0x96, 0xdf, 0x2a,
- 0xd7, 0x54, 0x63, 0x25, 0xc0, 0x28, 0xf7, 0x1c, 0xee, 0xcd, 0x8b, 0xe4,
- 0x9d, 0x32, 0xa3, 0x81, 0x55};
-
-// DER-encoded X.509 DistinguishedNames.
-//
-// To output the subject or issuer of a certificate:
-//
-// openssl asn1parse -i -inform DER -in <cert>
-//
-// The output will contain
-// SEQUENCE [This is the issuer name]
-// ...
-// SEQUENCE [This is the validity period]
-// UTCTIME (or GENERALTIME)
-// UTCTIME
-// SEQUENCE [This is the subject]
-// ...
-//
-// The OFFSET is the first column before the column, e.g. for '21:d=2', the
-// offset is 21 for the SEQUENCE you're interested in.
-// The LENGTH is 'hl + l'.
-//
-// To generate the table, then use the following for a DER-encoded
-// certificate:
-//
-// xxd -i -s $OFFSET -l $LENGTH <cert>
-//
-// For PEM certificates, convert them to DER before, as in:
-//
-// openssl x509 -inform PEM -outform DER -in <cert> |
-// xxd -i -s $OFFSET -l $LENGTH
-//
-
-// 0:d=0 hl=2 l= 95 cons: SEQUENCE
-// 2:d=1 hl=2 l= 11 cons: SET
-// 4:d=2 hl=2 l= 9 cons: SEQUENCE
-// 6:d=3 hl=2 l= 3 prim: OBJECT :countryName
-// 11:d=3 hl=2 l= 2 prim: PRINTABLESTRING :US
-// 15:d=1 hl=2 l= 23 cons: SET
-// 17:d=2 hl=2 l= 21 cons: SEQUENCE
-// 19:d=3 hl=2 l= 3 prim: OBJECT :organizationName
-// 24:d=3 hl=2 l= 14 prim: PRINTABLESTRING :VeriSign, Inc.
-// 40:d=1 hl=2 l= 55 cons: SET
-// 42:d=2 hl=2 l= 53 cons: SEQUENCE
-// 44:d=3 hl=2 l= 3 prim: OBJECT :organizationalUnitName
-// 49:d=3 hl=2 l= 46 prim: PRINTABLESTRING :
-// Class 1 Public Primary Certification Authority
-[[maybe_unused]] const uint8_t VerisignDN[] = {
- 0x30, 0x5f, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55,
- 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67,
- 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x37, 0x30, 0x35,
- 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2e, 0x43, 0x6c, 0x61, 0x73,
- 0x73, 0x20, 0x31, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20,
- 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20,
- 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79};
-
-// 0:d=0 hl=2 l= 125 cons: SEQUENCE
-// 2:d=1 hl=2 l= 11 cons: SET
-// 4:d=2 hl=2 l= 9 cons: SEQUENCE
-// 6:d=3 hl=2 l= 3 prim: OBJECT :countryName
-// 11:d=3 hl=2 l= 2 prim: PRINTABLESTRING :IL
-// 15:d=1 hl=2 l= 22 cons: SET
-// 17:d=2 hl=2 l= 20 cons: SEQUENCE
-// 19:d=3 hl=2 l= 3 prim: OBJECT :organizationName
-// 24:d=3 hl=2 l= 13 prim: PRINTABLESTRING :StartCom Ltd.
-// 39:d=1 hl=2 l= 43 cons: SET
-// 41:d=2 hl=2 l= 41 cons: SEQUENCE
-// 43:d=3 hl=2 l= 3 prim: OBJECT :organizationalUnitName
-// 48:d=3 hl=2 l= 34 prim: PRINTABLESTRING :
-// Secure Digital Certificate Signing
-// 84:d=1 hl=2 l= 41 cons: SET
-// 86:d=2 hl=2 l= 39 cons: SEQUENCE
-// 88:d=3 hl=2 l= 3 prim: OBJECT :commonName
-// 93:d=3 hl=2 l= 32 prim: PRINTABLESTRING :
-// StartCom Certification Authority
-[[maybe_unused]] const uint8_t StartComDN[] = {
- 0x30, 0x7d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
- 0x02, 0x49, 0x4c, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a,
- 0x13, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x4c,
- 0x74, 0x64, 0x2e, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x0b,
- 0x13, 0x22, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x44, 0x69, 0x67,
- 0x69, 0x74, 0x61, 0x6c, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67,
- 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x20, 0x53,
- 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79};
-
-// 0:d=0 hl=3 l= 174 cons: SEQUENCE
-// 3:d=1 hl=2 l= 11 cons: SET
-// 5:d=2 hl=2 l= 9 cons: SEQUENCE
-// 7:d=3 hl=2 l= 3 prim: OBJECT :countryName
-// 12:d=3 hl=2 l= 2 prim: PRINTABLESTRING :US
-// 16:d=1 hl=2 l= 11 cons: SET
-// 18:d=2 hl=2 l= 9 cons: SEQUENCE
-// 20:d=3 hl=2 l= 3 prim: OBJECT :stateOrProvinceName
-// 25:d=3 hl=2 l= 2 prim: PRINTABLESTRING :UT
-// 29:d=1 hl=2 l= 23 cons: SET
-// 31:d=2 hl=2 l= 21 cons: SEQUENCE
-// 33:d=3 hl=2 l= 3 prim: OBJECT :localityName
-// 38:d=3 hl=2 l= 14 prim: PRINTABLESTRING :Salt Lake City
-// 54:d=1 hl=2 l= 30 cons: SET
-// 56:d=2 hl=2 l= 28 cons: SEQUENCE
-// 58:d=3 hl=2 l= 3 prim: OBJECT :organizationName
-// 63:d=3 hl=2 l= 21 prim: PRINTABLESTRING :The USERTRUST Network
-// 86:d=1 hl=2 l= 33 cons: SET
-// 88:d=2 hl=2 l= 31 cons: SEQUENCE
-// 90:d=3 hl=2 l= 3 prim: OBJECT :organizationalUnitName
-// 95:d=3 hl=2 l= 24 prim: PRINTABLESTRING :http://www.usertrust.com
-//121:d=1 hl=2 l= 54 cons: SET
-//123:d=2 hl=2 l= 52 cons: SEQUENCE
-//125:d=3 hl=2 l= 3 prim: OBJECT :commonName
-//130:d=3 hl=2 l= 45 prim: PRINTABLESTRING :
-// UTN-USERFirst-Client Authentication and Email
-[[maybe_unused]] const uint8_t UserTrustDN[] = {
- 0x30, 0x81, 0xae, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
- 0x08, 0x13, 0x02, 0x55, 0x54, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55,
- 0x04, 0x07, 0x13, 0x0e, 0x53, 0x61, 0x6c, 0x74, 0x20, 0x4c, 0x61, 0x6b,
- 0x65, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03,
- 0x55, 0x04, 0x0a, 0x13, 0x15, 0x54, 0x68, 0x65, 0x20, 0x55, 0x53, 0x45,
- 0x52, 0x54, 0x52, 0x55, 0x53, 0x54, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f,
- 0x72, 0x6b, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13,
- 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e,
- 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f,
- 0x6d, 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2d,
- 0x55, 0x54, 0x4e, 0x2d, 0x55, 0x53, 0x45, 0x52, 0x46, 0x69, 0x72, 0x73,
- 0x74, 0x2d, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x41, 0x75, 0x74,
- 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20,
- 0x61, 0x6e, 0x64, 0x20, 0x45, 0x6d, 0x61, 0x69, 0x6c};
-
-// 0:d=0 hl=3 l= 190 cons: SEQUENCE
-// 3:d=1 hl=2 l= 63 cons: SET
-// 5:d=2 hl=2 l= 61 cons: SEQUENCE
-// 7:d=3 hl=2 l= 3 prim: OBJECT :commonName
-// 12:d=3 hl=2 l= 54 prim: UTF8STRING :
-// TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı
-// 68:d=1 hl=2 l= 11 cons: SET
-// 70:d=2 hl=2 l= 9 cons: SEQUENCE
-// 72:d=3 hl=2 l= 3 prim: OBJECT :countryName
-// 77:d=3 hl=2 l= 2 prim: PRINTABLESTRING :TR
-// 81:d=1 hl=2 l= 15 cons: SET
-// 83:d=2 hl=2 l= 13 cons: SEQUENCE
-// 85:d=3 hl=2 l= 3 prim: OBJECT :localityName
-// 90:d=3 hl=2 l= 6 prim: UTF8STRING :Ankara
-// 98:d=1 hl=2 l= 93 cons: SET
-//100:d=2 hl=2 l= 91 cons: SEQUENCE
-//102:d=3 hl=2 l= 3 prim: OBJECT :organizationName
-//107:d=3 hl=2 l= 84 prim: UTF8STRING :
-// TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş.
-// (c) Kasım 2005
-[[maybe_unused]] const uint8_t TurkTrustDN[] = {
- 0x30, 0x81, 0xbe, 0x31, 0x3f, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x0c, 0x36, 0x54, 0xc3, 0x9c, 0x52, 0x4b, 0x54, 0x52, 0x55, 0x53, 0x54,
- 0x20, 0x45, 0x6c, 0x65, 0x6b, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x6b, 0x20,
- 0x53, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x6b, 0x61, 0x20, 0x48, 0x69,
- 0x7a, 0x6d, 0x65, 0x74, 0x20, 0x53, 0x61, 0xc4, 0x9f, 0x6c, 0x61, 0x79,
- 0xc4, 0xb1, 0x63, 0xc4, 0xb1, 0x73, 0xc4, 0xb1, 0x31, 0x0b, 0x30, 0x09,
- 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x54, 0x52, 0x31, 0x0f, 0x30,
- 0x0d, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x06, 0x41, 0x6e, 0x6b, 0x61,
- 0x72, 0x61, 0x31, 0x5d, 0x30, 0x5b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c,
- 0x54, 0x54, 0xc3, 0x9c, 0x52, 0x4b, 0x54, 0x52, 0x55, 0x53, 0x54, 0x20,
- 0x42, 0x69, 0x6c, 0x67, 0x69, 0x20, 0xc4, 0xb0, 0x6c, 0x65, 0x74, 0x69,
- 0xc5, 0x9f, 0x69, 0x6d, 0x20, 0x76, 0x65, 0x20, 0x42, 0x69, 0x6c, 0x69,
- 0xc5, 0x9f, 0x69, 0x6d, 0x20, 0x47, 0xc3, 0xbc, 0x76, 0x65, 0x6e, 0x6c,
- 0x69, 0xc4, 0x9f, 0x69, 0x20, 0x48, 0x69, 0x7a, 0x6d, 0x65, 0x74, 0x6c,
- 0x65, 0x72, 0x69, 0x20, 0x41, 0x2e, 0xc5, 0x9e, 0x2e, 0x20, 0x28, 0x63,
- 0x29, 0x20, 0x4b, 0x61, 0x73, 0xc4, 0xb1, 0x6d, 0x20, 0x32, 0x30, 0x30,
- 0x35, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x35, 0x31, 0x31, 0x30, 0x37, 0x31,
- 0x30, 0x30, 0x37, 0x35, 0x37};
-
-// 33:d=2 hl=3 l= 207 cons: SEQUENCE
-// 36:d=3 hl=2 l= 11 cons: SET
-// 38:d=4 hl=2 l= 9 cons: SEQUENCE
-// 40:d=5 hl=2 l= 3 prim: OBJECT :countryName
-// 45:d=5 hl=2 l= 2 prim: PRINTABLESTRING :AT
-// 49:d=3 hl=3 l= 139 cons: SET
-// 52:d=4 hl=3 l= 136 cons: SEQUENCE
-// 55:d=5 hl=2 l= 3 prim: OBJECT :organizationName
-// 60:d=5 hl=3 l= 128 prim: BMPSTRING :
-// A-Trust Ges. für Sicherheitssysteme im elektr. Datenverkehr GmbH
-//191:d=3 hl=2 l= 24 cons: SET
-//193:d=4 hl=2 l= 22 cons: SEQUENCE
-//195:d=5 hl=2 l= 3 prim: OBJECT :organizationalUnitName
-//200:d=5 hl=2 l= 15 prim: PRINTABLESTRING :A-Trust-Qual-01
-//217:d=3 hl=2 l= 24 cons: SET
-//219:d=4 hl=2 l= 22 cons: SEQUENCE
-//221:d=5 hl=2 l= 3 prim: OBJECT :commonName
-//226:d=5 hl=2 l= 15 prim: PRINTABLESTRING :A-Trust-Qual-01
-[[maybe_unused]] const uint8_t ATrustQual01DN[] = {
- 0x30, 0x81, 0xcf, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x41, 0x54, 0x31, 0x81, 0x8b, 0x30, 0x81, 0x88, 0x06, 0x03,
- 0x55, 0x04, 0x0a, 0x1e, 0x81, 0x80, 0x00, 0x41, 0x00, 0x2d, 0x00, 0x54,
- 0x00, 0x72, 0x00, 0x75, 0x00, 0x73, 0x00, 0x74, 0x00, 0x20, 0x00, 0x47,
- 0x00, 0x65, 0x00, 0x73, 0x00, 0x2e, 0x00, 0x20, 0x00, 0x66, 0x00, 0xfc,
- 0x00, 0x72, 0x00, 0x20, 0x00, 0x53, 0x00, 0x69, 0x00, 0x63, 0x00, 0x68,
- 0x00, 0x65, 0x00, 0x72, 0x00, 0x68, 0x00, 0x65, 0x00, 0x69, 0x00, 0x74,
- 0x00, 0x73, 0x00, 0x73, 0x00, 0x79, 0x00, 0x73, 0x00, 0x74, 0x00, 0x65,
- 0x00, 0x6d, 0x00, 0x65, 0x00, 0x20, 0x00, 0x69, 0x00, 0x6d, 0x00, 0x20,
- 0x00, 0x65, 0x00, 0x6c, 0x00, 0x65, 0x00, 0x6b, 0x00, 0x74, 0x00, 0x72,
- 0x00, 0x2e, 0x00, 0x20, 0x00, 0x44, 0x00, 0x61, 0x00, 0x74, 0x00, 0x65,
- 0x00, 0x6e, 0x00, 0x76, 0x00, 0x65, 0x00, 0x72, 0x00, 0x6b, 0x00, 0x65,
- 0x00, 0x68, 0x00, 0x72, 0x00, 0x20, 0x00, 0x47, 0x00, 0x6d, 0x00, 0x62,
- 0x00, 0x48, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13,
- 0x0f, 0x41, 0x2d, 0x54, 0x72, 0x75, 0x73, 0x74, 0x2d, 0x51, 0x75, 0x61,
- 0x6c, 0x2d, 0x30, 0x31, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x0f, 0x41, 0x2d, 0x54, 0x72, 0x75, 0x73, 0x74, 0x2d, 0x51,
- 0x75, 0x61, 0x6c, 0x2d, 0x30, 0x31, 0x30, 0x1e, 0x17};
-
-// 34:d=2 hl=3 l= 180 cons: SEQUENCE
-// 37:d=3 hl=2 l= 20 cons: SET
-// 39:d=4 hl=2 l= 18 cons: SEQUENCE
-// 41:d=5 hl=2 l= 3 prim: OBJECT :organizationName
-// 46:d=5 hl=2 l= 11 prim: PRINTABLESTRING :Entrust.net
-// 59:d=3 hl=2 l= 64 cons: SET
-// 61:d=4 hl=2 l= 62 cons: SEQUENCE
-// 63:d=5 hl=2 l= 3 prim: OBJECT :organizationalUnitName
-// 68:d=5 hl=2 l= 55 prim: T61STRING :
-// www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)
-//125:d=3 hl=2 l= 37 cons: SET
-//127:d=4 hl=2 l= 35 cons: SEQUENCE
-//129:d=5 hl=2 l= 3 prim: OBJECT :organizationalUnitName
-//134:d=5 hl=2 l= 28 prim: PRINTABLESTRING :
-// (c) 1999 Entrust.net Limited
-//164:d=3 hl=2 l= 51 cons: SET
-//166:d=4 hl=2 l= 49 cons: SEQUENCE
-//168:d=5 hl=2 l= 3 prim: OBJECT :commonName
-//173:d=5 hl=2 l= 42 prim: PRINTABLESTRING :
-// Entrust.net Certification Authority (2048)
-[[maybe_unused]] const uint8_t EntrustDN[] = {
- 0x30, 0x81, 0xb4, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0a,
- 0x13, 0x0b, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65,
- 0x74, 0x31, 0x40, 0x30, 0x3e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x14, 0x37,
- 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e,
- 0x6e, 0x65, 0x74, 0x2f, 0x43, 0x50, 0x53, 0x5f, 0x32, 0x30, 0x34, 0x38,
- 0x20, 0x69, 0x6e, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x20, 0x62, 0x79, 0x20,
- 0x72, 0x65, 0x66, 0x2e, 0x20, 0x28, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73,
- 0x20, 0x6c, 0x69, 0x61, 0x62, 0x2e, 0x29, 0x31, 0x25, 0x30, 0x23, 0x06,
- 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1c, 0x28, 0x63, 0x29, 0x20, 0x31, 0x39,
- 0x39, 0x39, 0x20, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e,
- 0x65, 0x74, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, 0x33,
- 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2a, 0x45, 0x6e, 0x74,
- 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x20, 0x43, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41,
- 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x28, 0x32, 0x30,
- 0x34, 0x38, 0x29};
-
-// 46:d=2 hl=2 l= 76 cons: SEQUENCE
-// 48:d=3 hl=2 l= 11 cons: SET
-// 50:d=4 hl=2 l= 9 cons: SEQUENCE
-// 52:d=5 hl=2 l= 3 prim: OBJECT :countryName
-// 57:d=5 hl=2 l= 2 prim: PRINTABLESTRING :ZA
-// 61:d=3 hl=2 l= 37 cons: SET
-// 63:d=4 hl=2 l= 35 cons: SEQUENCE
-// 65:d=5 hl=2 l= 3 prim: OBJECT :organizationName
-// 70:d=5 hl=2 l= 28 prim: PRINTABLESTRING :
-// Thawte Consulting (Pty) Ltd.
-// 100:d=3 hl=2 l= 22 cons: SET
-// 102:d=4 hl=2 l= 20 cons: SEQUENCE
-// 104:d=5 hl=2 l= 3 prim: OBJECT :commonName
-// 109:d=5 hl=2 l= 13 prim: PRINTABLESTRING :Thawte SGC CA
-[[maybe_unused]] const uint8_t ThawteDN[] = {
- 0x30, 0x4C, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
- 0x02, 0x5A, 0x41, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0A,
- 0x13, 0x1C, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x43, 0x6F, 0x6E,
- 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x28, 0x50, 0x74, 0x79,
- 0x29, 0x20, 0x4C, 0x74, 0x64, 0x2E, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03,
- 0x55, 0x04, 0x03, 0x13, 0x0D, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20,
- 0x53, 0x47, 0x43, 0x20, 0x43, 0x41};
-
-// 47:d=2 hl=2 l= 108 cons: SEQUENCE
-// 49:d=3 hl=2 l= 11 cons: SET
-// 51:d=4 hl=2 l= 9 cons: SEQUENCE
-// 53:d=5 hl=2 l= 3 prim: OBJECT :countryName
-// 58:d=5 hl=2 l= 2 prim: PRINTABLESTRING :US
-// 62:d=3 hl=2 l= 22 cons: SET
-// 64:d=4 hl=2 l= 20 cons: SEQUENCE
-// 66:d=5 hl=2 l= 3 prim: OBJECT :stateOrProvinceName
-// 71:d=5 hl=2 l= 13 prim: PRINTABLESTRING :Massachusetts
-// 86:d=3 hl=2 l= 46 cons: SET
-// 88:d=4 hl=2 l= 44 cons: SEQUENCE
-// 90:d=5 hl=2 l= 3 prim: OBJECT :organizationName
-// 95:d=5 hl=2 l= 37 prim: PRINTABLESTRING :
-// Massachusetts Institute of Technology
-// 134:d=3 hl=2 l= 21 cons: SET
-// 136:d=4 hl=2 l= 19 cons: SEQUENCE
-// 138:d=5 hl=2 l= 3 prim: OBJECT :organizationalUnitName
-// 143:d=5 hl=2 l= 12 prim: PRINTABLESTRING :Client CA v1
-[[maybe_unused]] const uint8_t MITDN[] = {
- 0x30, 0x6C, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55,
- 0x04, 0x08, 0x13, 0x0D, 0x4D, 0x61, 0x73, 0x73, 0x61, 0x63, 0x68,
- 0x75, 0x73, 0x65, 0x74, 0x74, 0x73, 0x31, 0x2E, 0x30, 0x2C, 0x06,
- 0x03, 0x55, 0x04, 0x0A, 0x13, 0x25, 0x4D, 0x61, 0x73, 0x73, 0x61,
- 0x63, 0x68, 0x75, 0x73, 0x65, 0x74, 0x74, 0x73, 0x20, 0x49, 0x6E,
- 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, 0x20, 0x6F, 0x66, 0x20,
- 0x54, 0x65, 0x63, 0x68, 0x6E, 0x6F, 0x6C, 0x6F, 0x67, 0x79, 0x31,
- 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x0C, 0x43,
- 0x6C, 0x69, 0x65, 0x6E, 0x74, 0x20, 0x43, 0x41, 0x20, 0x76, 0x31};
-
-} // namespace
-
-#endif // NET_TEST_TEST_CERTIFICATE_DATA_H_
diff --git a/src/pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-serverAuth-strict.test b/src/pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-serverAuth-strict.test
index b6a8a00..c6a7146 100644
--- a/src/pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-serverAuth-strict.test
+++ b/src/pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-serverAuth-strict.test
@@ -4,6 +4,5 @@ utc_time: DEFAULT
key_purpose: SERVER_AUTH_STRICT
expected_errors:
----- Certificate i=1 (CN=Intermediate) -----
-WARNING: The extended key usage does not include server auth but instead includes Netscape Server Gated Crypto
ERROR: The extended key usage does not include server auth
diff --git a/src/pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-serverAuth.test b/src/pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-serverAuth.test
index 682897d..4afad8b 100644
--- a/src/pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-serverAuth.test
+++ b/src/pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-serverAuth.test
@@ -4,5 +4,5 @@ utc_time: DEFAULT
key_purpose: SERVER_AUTH
expected_errors:
----- Certificate i=1 (CN=Intermediate) -----
-WARNING: The extended key usage does not include server auth but instead includes Netscape Server Gated Crypto
+ERROR: The extended key usage does not include server auth
diff --git a/src/pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-serverAuth-strict.test b/src/pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-serverAuth-strict.test
index acd23e6..75ec64f 100644
--- a/src/pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-serverAuth-strict.test
+++ b/src/pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-serverAuth-strict.test
@@ -4,6 +4,5 @@ utc_time: DEFAULT
key_purpose: SERVER_AUTH_STRICT
expected_errors:
----- Certificate i=1 (CN=Intermediate) -----
-WARNING: The extended key usage does not include server auth but instead includes Netscape Server Gated Crypto
ERROR: The extended key usage does not include server auth
diff --git a/src/pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-serverAuth.test b/src/pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-serverAuth.test
index 1d3623a..f64c12b 100644
--- a/src/pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-serverAuth.test
+++ b/src/pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-serverAuth.test
@@ -4,6 +4,5 @@ utc_time: DEFAULT
key_purpose: SERVER_AUTH
expected_errors:
----- Certificate i=1 (CN=Intermediate) -----
-WARNING: The extended key usage does not include server auth but instead includes Netscape Server Gated Crypto
ERROR: The extended key usage does not include server auth
diff --git a/src/pki/testdata/verify_certificate_chain_unittest/rebase-errors.py b/src/pki/testdata/verify_certificate_chain_unittest/rebase-errors.py
index 3096c8c..7a5e868 100755
--- a/src/pki/testdata/verify_certificate_chain_unittest/rebase-errors.py
+++ b/src/pki/testdata/verify_certificate_chain_unittest/rebase-errors.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# Copyright 2016 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
@@ -11,8 +11,8 @@ error format.
To use this run the affected tests, and then pass the input to this script
(either via stdin, or as the first argument). For instance:
- $ ./out/Release/net_unittests --gtest_filter="*VerifyCertificateChain*" | \
- net/data/verify_certificate_chain_unittest/rebase-errors.py
+ $ ./build/pki_test --gtest_filter="*VerifyCertificateChain*" | \
+ pki/testdata/verify_certificate_chain_unittest/rebase-errors.py
The script works by scanning the stdout looking for gtest failures having a
particular format. The C++ test side should have been instrumented to dump out
@@ -39,7 +39,7 @@ EXPECTED:
ACTUAL:
((?:.|\n)*?)
-===> Use net/data/verify_certificate_chain_unittest/rebase-errors.py to rebaseline.
+===> Use pki/testdata/verify_certificate_chain_unittest/rebase-errors.py to rebaseline.
""", re.MULTILINE)
@@ -57,15 +57,17 @@ def write_string_to_file(data, path):
def get_src_root():
- """Returns the path to the enclosing //src directory. This assumes the
+ """Returns the path to BoringSSL source tree. This assumes the
current script is inside the source tree."""
cur_dir = os.path.dirname(os.path.realpath(__file__))
while True:
- parent_dir, dirname = os.path.split(cur_dir)
- # Check if it looks like the src/ root.
- if dirname == "src" and os.path.isdir(os.path.join(cur_dir, "net")):
+ # Check if it looks like the BoringSSL root.
+ if os.path.isdir(os.path.join(cur_dir, "crypto")) and \
+ os.path.isdir(os.path.join(cur_dir, "pki")) and \
+ os.path.isdir(os.path.join(cur_dir, "ssl")):
return cur_dir
+ parent_dir, _ = os.path.split(cur_dir)
if not parent_dir or parent_dir == cur_dir:
break
cur_dir = parent_dir
@@ -109,7 +111,7 @@ def main():
test_stdout = sys.stdin.read()
for m in failed_test_regex.finditer(test_stdout):
- src_relative_errors_path = m.group(1)
+ src_relative_errors_path = "pki/" + m.group(1)
errors_path = get_abs_path(src_relative_errors_path)
actual_errors = m.group(2)
diff --git a/src/pki/testdata/verify_unittest/google-leaf.der b/src/pki/testdata/verify_unittest/google-leaf.der
new file mode 100644
index 0000000..01eea35
--- /dev/null
+++ b/src/pki/testdata/verify_unittest/google-leaf.der
Binary files differ
diff --git a/src/pki/testdata/verify_unittest/self-issued.pem b/src/pki/testdata/verify_unittest/self-issued.pem
new file mode 100644
index 0000000..e219b6d
--- /dev/null
+++ b/src/pki/testdata/verify_unittest/self-issued.pem
@@ -0,0 +1,22 @@
+-----BEGIN CERTIFICATE-----
+MIIDrTCCApWgAwIBAgIUcu/NYcYTwG79IqzpuKoOf0Jyu1UwDQYJKoZIhvcNAQEL
+BQAwZjELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
+GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEfMB0GA1UEAwwWSXNTZWxmSXNzdWVk
+IHRlc3QgY2VydDAeFw0yMjA0MDcyMzIyMzRaFw0yMzA0MDcyMzIyMzRaMGYxCzAJ
+BgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5l
+dCBXaWRnaXRzIFB0eSBMdGQxHzAdBgNVBAMMFklzU2VsZklzc3VlZCB0ZXN0IGNl
+cnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCv6ueRHng0bJsKdDSg
+YP1wfpao+dGZ6iY0wfDaLGY2SUgHn7HCvGeS1btZ7lCdCBdRTd6OjrMJkaoPXOCG
+rqUVv9/WBPyYgpA+Zlm3F8Uf8vuYUZ96ZOdvHBeAO8Ac9wFoZhC3VNwVF0mynlVb
+AhMu1T33Pi387jaE2OMMAle2w4zApcEMbMvlgEk1UdlpL0PBT4nT6XIoCbO04tEG
+KLMnGutdHUmVW3L+77hjy/H4LhfsZb7PD3xqFkWpspP3OgfWJU0NUiAX/RIbgKTe
+pYNVUElAGgchziGQyDJ8Si7rXslCIx6m/qMD9+JX4hZa+ANPf9psEAVjt8TKhozi
+TCBHAgMBAAGjUzBRMB0GA1UdDgQWBBQludvSp1hD9JPiK6JyzuROz9S95zAfBgNV
+HSMEGDAWgBQludvSp1hD9JPiK6JyzuROz9S95zAPBgNVHRMBAf8EBTADAQH/MA0G
+CSqGSIb3DQEBCwUAA4IBAQA3a4h15aX4xbinxNUNDNRoqrHL5J/nwFgZxTKvzvC+
+I+evxJr3b2vWip70nepiDYW9XyzDD3rr18P/XlacxaBWy2L6iwAc0SDHHUwPJtid
+7av3VjC3Qz8kk3gIuLb9SMJ9eQweKzox7UF6ZJhoEhSMDkyvbHmkMYmQGjIwuVvG
+GZm0Df1XYiBQyqj6jqsTkZeqlWyFkpuFMOOSvFwWV5rOt0WrIYB/iIbHqXtePGU1
+aE2CZqTTTCldn4gvMjtAAJ5D/JXY788a0apaEG5FjU1XzVHzWbKm0bz7y1cEPBhQ
+iEgWK2iloE3NzPABUZIcqdQF5NUiP45i396ccRGuNxY5
+-----END CERTIFICATE-----
diff --git a/src/pki/trust_store.cc b/src/pki/trust_store.cc
index 07ec965..fc373f7 100644
--- a/src/pki/trust_store.cc
+++ b/src/pki/trust_store.cc
@@ -126,7 +126,7 @@ std::string CertificateTrust::ToDebugString() const {
// static
std::optional<CertificateTrust> CertificateTrust::FromDebugString(
- const std::string& trust_string) {
+ const std::string &trust_string) {
std::vector<std::string_view> split =
string_util::SplitString(trust_string, '+');
@@ -169,9 +169,9 @@ std::optional<CertificateTrust> CertificateTrust::FromDebugString(
TrustStore::TrustStore() = default;
-void TrustStore::AsyncGetIssuersOf(const ParsedCertificate* cert,
- std::unique_ptr<Request>* out_req) {
+void TrustStore::AsyncGetIssuersOf(const ParsedCertificate *cert,
+ std::unique_ptr<Request> *out_req) {
out_req->reset();
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/trust_store.h b/src/pki/trust_store.h
index bd8ccea..5493f6b 100644
--- a/src/pki/trust_store.h
+++ b/src/pki/trust_store.h
@@ -5,11 +5,12 @@
#ifndef BSSL_PKI_TRUST_STORE_H_
#define BSSL_PKI_TRUST_STORE_H_
-#include "fillins/openssl_util.h"
+#include <optional>
+
+#include <openssl/base.h>
#include "cert_issuer_source.h"
#include "parsed_certificate.h"
-#include <optional>
namespace bssl {
@@ -100,7 +101,7 @@ struct OPENSSL_EXPORT CertificateTrust {
std::string ToDebugString() const;
static std::optional<CertificateTrust> FromDebugString(
- const std::string& trust_string);
+ const std::string &trust_string);
// The overall type of trust.
CertificateTrustType type = CertificateTrustType::UNSPECIFIED;
@@ -127,17 +128,17 @@ class OPENSSL_EXPORT TrustStore : public CertIssuerSource {
public:
TrustStore();
- TrustStore(const TrustStore&) = delete;
- TrustStore& operator=(const TrustStore&) = delete;
+ TrustStore(const TrustStore &) = delete;
+ TrustStore &operator=(const TrustStore &) = delete;
// Returns the trusted of |cert|, which must be non-null.
- virtual CertificateTrust GetTrust(const ParsedCertificate* cert) = 0;
+ virtual CertificateTrust GetTrust(const ParsedCertificate *cert) = 0;
// Disable async issuers for TrustStore, as it isn't needed.
- void AsyncGetIssuersOf(const ParsedCertificate* cert,
- std::unique_ptr<Request>* out_req) final;
+ void AsyncGetIssuersOf(const ParsedCertificate *cert,
+ std::unique_ptr<Request> *out_req) final;
};
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_TRUST_STORE_H_
diff --git a/src/pki/trust_store_collection.cc b/src/pki/trust_store_collection.cc
index 27dd060..4c607b5 100644
--- a/src/pki/trust_store_collection.cc
+++ b/src/pki/trust_store_collection.cc
@@ -11,23 +11,23 @@ namespace bssl {
TrustStoreCollection::TrustStoreCollection() = default;
TrustStoreCollection::~TrustStoreCollection() = default;
-void TrustStoreCollection::AddTrustStore(TrustStore* store) {
+void TrustStoreCollection::AddTrustStore(TrustStore *store) {
BSSL_CHECK(store);
stores_.push_back(store);
}
-void TrustStoreCollection::SyncGetIssuersOf(const ParsedCertificate* cert,
- ParsedCertificateList* issuers) {
- for (auto* store : stores_) {
+void TrustStoreCollection::SyncGetIssuersOf(const ParsedCertificate *cert,
+ ParsedCertificateList *issuers) {
+ for (auto *store : stores_) {
store->SyncGetIssuersOf(cert, issuers);
}
}
-CertificateTrust TrustStoreCollection::GetTrust(const ParsedCertificate* cert) {
+CertificateTrust TrustStoreCollection::GetTrust(const ParsedCertificate *cert) {
// The current aggregate result.
CertificateTrust result = CertificateTrust::ForUnspecified();
- for (auto* store : stores_) {
+ for (auto *store : stores_) {
CertificateTrust cur_trust = store->GetTrust(cert);
// * If any stores distrust the certificate, consider it untrusted.
@@ -35,12 +35,13 @@ CertificateTrust TrustStoreCollection::GetTrust(const ParsedCertificate* cert) {
// last one
if (!cur_trust.HasUnspecifiedTrust()) {
result = cur_trust;
- if (result.IsDistrusted())
+ if (result.IsDistrusted()) {
break;
+ }
}
}
return result;
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/trust_store_collection.h b/src/pki/trust_store_collection.h
index 239d5e0..494909e 100644
--- a/src/pki/trust_store_collection.h
+++ b/src/pki/trust_store_collection.h
@@ -5,7 +5,7 @@
#ifndef BSSL_PKI_TRUST_STORE_COLLECTION_H_
#define BSSL_PKI_TRUST_STORE_COLLECTION_H_
-#include "fillins/openssl_util.h"
+#include <openssl/base.h>
#include "trust_store.h"
@@ -20,24 +20,24 @@ class OPENSSL_EXPORT TrustStoreCollection : public TrustStore {
public:
TrustStoreCollection();
- TrustStoreCollection(const TrustStoreCollection&) = delete;
- TrustStoreCollection& operator=(const TrustStoreCollection&) = delete;
+ TrustStoreCollection(const TrustStoreCollection &) = delete;
+ TrustStoreCollection &operator=(const TrustStoreCollection &) = delete;
~TrustStoreCollection() override;
// Includes results from |store| in the combined output. |store| must
// outlive the TrustStoreCollection.
- void AddTrustStore(TrustStore* store);
+ void AddTrustStore(TrustStore *store);
// TrustStore implementation:
- void SyncGetIssuersOf(const ParsedCertificate* cert,
- ParsedCertificateList* issuers) override;
- CertificateTrust GetTrust(const ParsedCertificate* cert) override;
+ void SyncGetIssuersOf(const ParsedCertificate *cert,
+ ParsedCertificateList *issuers) override;
+ CertificateTrust GetTrust(const ParsedCertificate *cert) override;
private:
- std::vector<TrustStore*> stores_;
+ std::vector<TrustStore *> stores_;
};
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_TRUST_STORE_COLLECTION_H_
diff --git a/src/pki/trust_store_collection_unittest.cc b/src/pki/trust_store_collection_unittest.cc
index 80923ac..94989ba 100644
--- a/src/pki/trust_store_collection_unittest.cc
+++ b/src/pki/trust_store_collection_unittest.cc
@@ -4,9 +4,9 @@
#include "trust_store_collection.h"
+#include <gtest/gtest.h>
#include "test_helpers.h"
#include "trust_store_in_memory.h"
-#include <gtest/gtest.h>
namespace bssl {
@@ -185,4 +185,4 @@ TEST_F(TrustStoreCollectionTest, DistrustTakesPriority) {
} // namespace
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/trust_store_in_memory.cc b/src/pki/trust_store_in_memory.cc
index 07cb17a..1c77b63 100644
--- a/src/pki/trust_store_in_memory.cc
+++ b/src/pki/trust_store_in_memory.cc
@@ -9,13 +9,9 @@ namespace bssl {
TrustStoreInMemory::TrustStoreInMemory() = default;
TrustStoreInMemory::~TrustStoreInMemory() = default;
-bool TrustStoreInMemory::IsEmpty() const {
- return entries_.empty();
-}
+bool TrustStoreInMemory::IsEmpty() const { return entries_.empty(); }
-void TrustStoreInMemory::Clear() {
- entries_.clear();
-}
+void TrustStoreInMemory::Clear() { entries_.clear(); }
void TrustStoreInMemory::AddTrustAnchor(
std::shared_ptr<const ParsedCertificate> cert) {
@@ -40,46 +36,58 @@ void TrustStoreInMemory::AddDistrustedCertificateForTest(
AddCertificate(std::move(cert), CertificateTrust::ForDistrusted());
}
+void TrustStoreInMemory::AddDistrustedCertificateBySPKI(std::string spki) {
+ distrusted_spkis_.insert(std::move(spki));
+}
+
void TrustStoreInMemory::AddCertificateWithUnspecifiedTrust(
std::shared_ptr<const ParsedCertificate> cert) {
AddCertificate(std::move(cert), CertificateTrust::ForUnspecified());
}
-void TrustStoreInMemory::SyncGetIssuersOf(const ParsedCertificate* cert,
- ParsedCertificateList* issuers) {
- auto range = entries_.equal_range(cert->normalized_issuer().AsStringView());
- for (auto it = range.first; it != range.second; ++it)
+void TrustStoreInMemory::SyncGetIssuersOf(const ParsedCertificate *cert,
+ ParsedCertificateList *issuers) {
+ auto range =
+ entries_.equal_range(BytesAsStringView(cert->normalized_issuer()));
+ for (auto it = range.first; it != range.second; ++it) {
issuers->push_back(it->second.cert);
+ }
}
-CertificateTrust TrustStoreInMemory::GetTrust(const ParsedCertificate* cert) {
- const Entry* entry = GetEntry(cert);
+CertificateTrust TrustStoreInMemory::GetTrust(const ParsedCertificate *cert) {
+ // Check SPKI distrust first.
+ if (distrusted_spkis_.find(BytesAsStringView(cert->tbs().spki_tlv)) !=
+ distrusted_spkis_.end()) {
+ return CertificateTrust::ForDistrusted();
+ }
+
+ const Entry *entry = GetEntry(cert);
return entry ? entry->trust : CertificateTrust::ForUnspecified();
}
-bool TrustStoreInMemory::Contains(const ParsedCertificate* cert) const {
+bool TrustStoreInMemory::Contains(const ParsedCertificate *cert) const {
return GetEntry(cert) != nullptr;
}
TrustStoreInMemory::Entry::Entry() = default;
-TrustStoreInMemory::Entry::Entry(const Entry& other) = default;
+TrustStoreInMemory::Entry::Entry(const Entry &other) = default;
TrustStoreInMemory::Entry::~Entry() = default;
void TrustStoreInMemory::AddCertificate(
std::shared_ptr<const ParsedCertificate> cert,
- const CertificateTrust& trust) {
+ const CertificateTrust &trust) {
Entry entry;
entry.cert = std::move(cert);
entry.trust = trust;
// TODO(mattm): should this check for duplicate certificates?
- entries_.insert(
- std::make_pair(entry.cert->normalized_subject().AsStringView(), entry));
+ entries_.emplace(BytesAsStringView(entry.cert->normalized_subject()), entry);
}
-const TrustStoreInMemory::Entry* TrustStoreInMemory::GetEntry(
- const ParsedCertificate* cert) const {
- auto range = entries_.equal_range(cert->normalized_subject().AsStringView());
+const TrustStoreInMemory::Entry *TrustStoreInMemory::GetEntry(
+ const ParsedCertificate *cert) const {
+ auto range =
+ entries_.equal_range(BytesAsStringView(cert->normalized_subject()));
for (auto it = range.first; it != range.second; ++it) {
if (cert == it->second.cert.get() ||
cert->der_cert() == it->second.cert->der_cert()) {
@@ -90,4 +98,4 @@ const TrustStoreInMemory::Entry* TrustStoreInMemory::GetEntry(
return nullptr;
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/trust_store_in_memory.h b/src/pki/trust_store_in_memory.h
index e770510..4da26cd 100644
--- a/src/pki/trust_store_in_memory.h
+++ b/src/pki/trust_store_in_memory.h
@@ -5,9 +5,10 @@
#ifndef BSSL_PKI_TRUST_STORE_IN_MEMORY_H_
#define BSSL_PKI_TRUST_STORE_IN_MEMORY_H_
-#include "fillins/openssl_util.h"
+#include <set>
#include <unordered_map>
+#include <openssl/base.h>
#include "trust_store.h"
@@ -19,8 +20,8 @@ class OPENSSL_EXPORT TrustStoreInMemory : public TrustStore {
public:
TrustStoreInMemory();
- TrustStoreInMemory(const TrustStoreInMemory&) = delete;
- TrustStoreInMemory& operator=(const TrustStoreInMemory&) = delete;
+ TrustStoreInMemory(const TrustStoreInMemory &) = delete;
+ TrustStoreInMemory &operator=(const TrustStoreInMemory &) = delete;
~TrustStoreInMemory() override;
@@ -33,7 +34,7 @@ class OPENSSL_EXPORT TrustStoreInMemory : public TrustStore {
// Adds a certificate with the specified trust settings. Both trusted and
// distrusted certificates require a full DER match.
void AddCertificate(std::shared_ptr<const ParsedCertificate> cert,
- const CertificateTrust& trust);
+ const CertificateTrust &trust);
// Adds a certificate as a trust anchor (only the SPKI and subject will be
// used during verification).
@@ -55,23 +56,29 @@ class OPENSSL_EXPORT TrustStoreInMemory : public TrustStore {
void AddDistrustedCertificateForTest(
std::shared_ptr<const ParsedCertificate> cert);
+ // Distrusts the provided SPKI. This will override any other trust (e.g. if a
+ // certificate is passed into AddTrustAnchor() and the certificate's SPKI is
+ // passed into AddDistrustedCertificateBySPKI(), GetTrust() will return
+ // CertificateTrust::ForDistrusted()).
+ void AddDistrustedCertificateBySPKI(std::string spki);
+
// Adds a certificate to the store, that is neither trusted nor untrusted.
void AddCertificateWithUnspecifiedTrust(
std::shared_ptr<const ParsedCertificate> cert);
// TrustStore implementation:
- void SyncGetIssuersOf(const ParsedCertificate* cert,
- ParsedCertificateList* issuers) override;
- CertificateTrust GetTrust(const ParsedCertificate* cert) override;
+ void SyncGetIssuersOf(const ParsedCertificate *cert,
+ ParsedCertificateList *issuers) override;
+ CertificateTrust GetTrust(const ParsedCertificate *cert) override;
// Returns true if the trust store contains the given ParsedCertificate
// (matches by DER).
- bool Contains(const ParsedCertificate* cert) const;
+ bool Contains(const ParsedCertificate *cert) const;
private:
struct Entry {
Entry();
- Entry(const Entry& other);
+ Entry(const Entry &other);
~Entry();
std::shared_ptr<const ParsedCertificate> cert;
@@ -81,11 +88,14 @@ class OPENSSL_EXPORT TrustStoreInMemory : public TrustStore {
// Multimap from normalized subject -> Entry.
std::unordered_multimap<std::string_view, Entry> entries_;
+ // Set of distrusted SPKIs.
+ std::set<std::string, std::less<>> distrusted_spkis_;
+
// Returns the `Entry` matching `cert`, or `nullptr` if not in the trust
// store.
- const Entry* GetEntry(const ParsedCertificate* cert) const;
+ const Entry *GetEntry(const ParsedCertificate *cert) const;
};
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_TRUST_STORE_IN_MEMORY_H_
diff --git a/src/pki/trust_store_in_memory_unittest.cc b/src/pki/trust_store_in_memory_unittest.cc
new file mode 100644
index 0000000..4292675
--- /dev/null
+++ b/src/pki/trust_store_in_memory_unittest.cc
@@ -0,0 +1,112 @@
+/* Copyright (c) 2023, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+#include "trust_store_in_memory.h"
+
+#include <gtest/gtest.h>
+#include "test_helpers.h"
+
+namespace bssl {
+namespace {
+
+class TrustStoreInMemoryTest : public testing::Test {
+ public:
+ void SetUp() override {
+ ParsedCertificateList chain;
+ ASSERT_TRUE(ReadCertChainFromFile(
+ "testdata/verify_certificate_chain_unittest/key-rollover/oldchain.pem",
+ &chain));
+
+ ASSERT_EQ(3U, chain.size());
+ target_ = chain[0];
+ oldintermediate_ = chain[1];
+ oldroot_ = chain[2];
+ ASSERT_TRUE(target_);
+ ASSERT_TRUE(oldintermediate_);
+ ASSERT_TRUE(oldroot_);
+
+ ASSERT_TRUE(
+ ReadCertChainFromFile("testdata/verify_certificate_chain_unittest/"
+ "key-rollover/longrolloverchain.pem",
+ &chain));
+
+ ASSERT_EQ(5U, chain.size());
+ newintermediate_ = chain[1];
+ newroot_ = chain[2];
+ newrootrollover_ = chain[3];
+ ASSERT_TRUE(newintermediate_);
+ ASSERT_TRUE(newroot_);
+ ASSERT_TRUE(newrootrollover_);
+ }
+
+ protected:
+ std::shared_ptr<const ParsedCertificate> oldroot_;
+ std::shared_ptr<const ParsedCertificate> newroot_;
+ std::shared_ptr<const ParsedCertificate> newrootrollover_;
+
+ std::shared_ptr<const ParsedCertificate> target_;
+ std::shared_ptr<const ParsedCertificate> oldintermediate_;
+ std::shared_ptr<const ParsedCertificate> newintermediate_;
+};
+
+TEST_F(TrustStoreInMemoryTest, OneRootTrusted) {
+ TrustStoreInMemory in_memory;
+ in_memory.AddTrustAnchor(newroot_);
+
+ // newroot_ is trusted.
+ CertificateTrust trust = in_memory.GetTrust(newroot_.get());
+ EXPECT_EQ(CertificateTrust::ForTrustAnchor().ToDebugString(),
+ trust.ToDebugString());
+
+ // oldroot_ is not.
+ trust = in_memory.GetTrust(oldroot_.get());
+ EXPECT_EQ(CertificateTrust::ForUnspecified().ToDebugString(),
+ trust.ToDebugString());
+}
+
+TEST_F(TrustStoreInMemoryTest, DistrustBySPKI) {
+ TrustStoreInMemory in_memory;
+ in_memory.AddDistrustedCertificateBySPKI(
+ std::string(BytesAsStringView(newroot_->tbs().spki_tlv)));
+
+ // newroot_ is distrusted.
+ CertificateTrust trust = in_memory.GetTrust(newroot_.get());
+ EXPECT_EQ(CertificateTrust::ForDistrusted().ToDebugString(),
+ trust.ToDebugString());
+
+ // oldroot_ is unspecified.
+ trust = in_memory.GetTrust(oldroot_.get());
+ EXPECT_EQ(CertificateTrust::ForUnspecified().ToDebugString(),
+ trust.ToDebugString());
+
+ // newrootrollover_ is also distrusted because it has the same key.
+ trust = in_memory.GetTrust(newrootrollover_.get());
+ EXPECT_EQ(CertificateTrust::ForDistrusted().ToDebugString(),
+ trust.ToDebugString());
+}
+
+TEST_F(TrustStoreInMemoryTest, DistrustBySPKIOverridesTrust) {
+ TrustStoreInMemory in_memory;
+ in_memory.AddTrustAnchor(newroot_);
+ in_memory.AddDistrustedCertificateBySPKI(
+ std::string(BytesAsStringView(newroot_->tbs().spki_tlv)));
+
+ // newroot_ is distrusted.
+ CertificateTrust trust = in_memory.GetTrust(newroot_.get());
+ EXPECT_EQ(CertificateTrust::ForDistrusted().ToDebugString(),
+ trust.ToDebugString());
+}
+
+} // namespace
+} // namespace bssl
diff --git a/src/pki/verify_certificate_chain.cc b/src/pki/verify_certificate_chain.cc
index c7eb4ce..c42f757 100644
--- a/src/pki/verify_certificate_chain.cc
+++ b/src/pki/verify_certificate_chain.cc
@@ -7,37 +7,42 @@
#include <algorithm>
#include <cassert>
+#include <openssl/base.h>
#include "cert_error_params.h"
#include "cert_errors.h"
#include "common_cert_errors.h"
#include "extended_key_usage.h"
+#include "input.h"
#include "name_constraints.h"
#include "parse_certificate.h"
#include "signature_algorithm.h"
#include "trust_store.h"
#include "verify_signed_data.h"
-#include "input.h"
-#include <openssl/base.h>
namespace bssl {
namespace {
-bool IsHandledCriticalExtension(const ParsedExtension& extension,
- const ParsedCertificate& cert) {
- if (extension.oid == der::Input(kBasicConstraintsOid))
+bool IsHandledCriticalExtension(const ParsedExtension &extension,
+ const ParsedCertificate &cert) {
+ if (extension.oid == der::Input(kBasicConstraintsOid)) {
return true;
+ }
// Key Usage is NOT processed for end-entity certificates (this is the
// responsibility of callers), however it is considered "handled" here in
// order to allow being marked as critical.
- if (extension.oid == der::Input(kKeyUsageOid))
+ if (extension.oid == der::Input(kKeyUsageOid)) {
return true;
- if (extension.oid == der::Input(kExtKeyUsageOid))
+ }
+ if (extension.oid == der::Input(kExtKeyUsageOid)) {
return true;
- if (extension.oid == der::Input(kNameConstraintsOid))
+ }
+ if (extension.oid == der::Input(kNameConstraintsOid)) {
return true;
- if (extension.oid == der::Input(kSubjectAltNameOid))
+ }
+ if (extension.oid == der::Input(kSubjectAltNameOid)) {
return true;
+ }
if (extension.oid == der::Input(kCertificatePoliciesOid)) {
// Policy qualifiers are skipped during processing, so if the
// extension is marked critical need to ensure there weren't any
@@ -56,12 +61,15 @@ bool IsHandledCriticalExtension(const ParsedExtension& extension,
// TODO(eroman): Give a better error message.
}
- if (extension.oid == der::Input(kPolicyMappingsOid))
+ if (extension.oid == der::Input(kPolicyMappingsOid)) {
return true;
- if (extension.oid == der::Input(kPolicyConstraintsOid))
+ }
+ if (extension.oid == der::Input(kPolicyConstraintsOid)) {
return true;
- if (extension.oid == der::Input(kInhibitAnyPolicyOid))
+ }
+ if (extension.oid == der::Input(kInhibitAnyPolicyOid)) {
return true;
+ }
if (extension.oid == der::Input(kMSApplicationPoliciesOid)) {
// Per https://crbug.com/1439638 and
// https://learn.microsoft.com/en-us/windows/win32/seccertenroll/supported-extensions#msapplicationpolicies
@@ -75,10 +83,14 @@ bool IsHandledCriticalExtension(const ParsedExtension& extension,
// Adds errors to |errors| if the certificate contains unconsumed _critical_
// extensions.
-void VerifyNoUnconsumedCriticalExtensions(const ParsedCertificate& cert,
- CertErrors* errors) {
- for (const auto& it : cert.extensions()) {
- const ParsedExtension& extension = it.second;
+void VerifyNoUnconsumedCriticalExtensions(const ParsedCertificate &cert,
+ CertErrors *errors,
+ bool allow_precertificate) {
+ for (const auto &it : cert.extensions()) {
+ const ParsedExtension &extension = it.second;
+ if (allow_precertificate && extension.oid == der::Input(kCtPoisonOid)) {
+ continue;
+ }
if (extension.critical && !IsHandledCriticalExtension(extension, cert)) {
errors->AddError(cert_errors::kUnconsumedCriticalExtension,
CreateCertErrorParams2Der("oid", extension.oid, "value",
@@ -98,7 +110,7 @@ void VerifyNoUnconsumedCriticalExtensions(const ParsedCertificate& cert,
// support key rollover or changes in certificate policies. These
// self-issued certificates are not counted when evaluating path length
// or name constraints.
-[[nodiscard]] bool IsSelfIssued(const ParsedCertificate& cert) {
+[[nodiscard]] bool IsSelfIssued(const ParsedCertificate &cert) {
return cert.normalized_subject() == cert.normalized_issuer();
}
@@ -109,14 +121,15 @@ void VerifyNoUnconsumedCriticalExtensions(const ParsedCertificate& cert,
//
// The validity period for a certificate is the period of time from
// notBefore through notAfter, inclusive.
-void VerifyTimeValidity(const ParsedCertificate& cert,
- const der::GeneralizedTime& time,
- CertErrors* errors) {
- if (time < cert.tbs().validity_not_before)
+void VerifyTimeValidity(const ParsedCertificate &cert,
+ const der::GeneralizedTime &time, CertErrors *errors) {
+ if (time < cert.tbs().validity_not_before) {
errors->AddError(cert_errors::kValidityFailedNotBefore);
+ }
- if (cert.tbs().validity_not_after < time)
+ if (cert.tbs().validity_not_after < time) {
errors->AddError(cert_errors::kValidityFailedNotAfter);
+ }
}
// Adds errors to |errors| if |cert| has internally inconsistent signature
@@ -139,15 +152,16 @@ void VerifyTimeValidity(const ParsedCertificate& cert,
// In practice however there are certificates which use different encodings for
// specifying RSA with SHA1 (different OIDs). This is special-cased for
// compatibility sake.
-bool VerifySignatureAlgorithmsMatch(const ParsedCertificate& cert,
- CertErrors* errors) {
- const der::Input& alg1_tlv = cert.signature_algorithm_tlv();
- const der::Input& alg2_tlv = cert.tbs().signature_algorithm_tlv;
+bool VerifySignatureAlgorithmsMatch(const ParsedCertificate &cert,
+ CertErrors *errors) {
+ der::Input alg1_tlv = cert.signature_algorithm_tlv();
+ der::Input alg2_tlv = cert.tbs().signature_algorithm_tlv;
// Ensure that the two DER-encoded signature algorithms are byte-for-byte
// equal.
- if (alg1_tlv == alg2_tlv)
+ if (alg1_tlv == alg2_tlv) {
return true;
+ }
// But make a compatibility concession if alternate encodings are used
// TODO(eroman): Turn this warning into an error.
@@ -179,11 +193,9 @@ bool VerifySignatureAlgorithmsMatch(const ParsedCertificate& cert,
}
// Verify that |cert| can be used for |required_key_purpose|.
-void VerifyExtendedKeyUsage(const ParsedCertificate& cert,
- KeyPurpose required_key_purpose,
- CertErrors* errors,
- bool is_target_cert,
- bool is_target_cert_issuer) {
+void VerifyExtendedKeyUsage(const ParsedCertificate &cert,
+ KeyPurpose required_key_purpose, CertErrors *errors,
+ bool is_target_cert, bool is_target_cert_issuer) {
// We treat a required KeyPurpose of ANY_EKU to mean "Do not check EKU"
if (required_key_purpose == KeyPurpose::ANY_EKU) {
return;
@@ -194,9 +206,8 @@ void VerifyExtendedKeyUsage(const ParsedCertificate& cert,
bool has_code_signing_eku = false;
bool has_time_stamping_eku = false;
bool has_ocsp_signing_eku = false;
- bool has_nsgc = false;
if (cert.has_extended_key_usage()) {
- for (const auto& key_purpose_oid : cert.extended_key_usage()) {
+ for (const auto &key_purpose_oid : cert.extended_key_usage()) {
if (key_purpose_oid == der::Input(kAnyEKU)) {
has_any_eku = true;
}
@@ -215,9 +226,6 @@ void VerifyExtendedKeyUsage(const ParsedCertificate& cert,
if (key_purpose_oid == der::Input(kOCSPSigning)) {
has_ocsp_signing_eku = true;
}
- if (key_purpose_oid == der::Input(kNetscapeServerGatedCrypto)) {
- has_nsgc = true;
- }
}
}
@@ -296,7 +304,6 @@ void VerifyExtendedKeyUsage(const ParsedCertificate& cert,
return;
case KeyPurpose::SERVER_AUTH:
case KeyPurpose::SERVER_AUTH_STRICT: {
- bool nsgc_hack = false;
if (has_any_eku && !has_server_auth_eku) {
if (is_target_cert || is_target_cert_issuer) {
errors->AddWarning(cert_errors::kEkuLacksServerAuthButHasAnyEKU);
@@ -310,29 +317,10 @@ void VerifyExtendedKeyUsage(const ParsedCertificate& cert,
// TODO(bbe): remove this once BR requirements catch up with CA's.
has_server_auth_eku = true;
}
- if (has_nsgc && !has_server_auth_eku) {
- errors->AddWarning(cert_errors::kEkuLacksServerAuthButHasGatedCrypto);
-
- // Allow NSGC for legacy RSA SHA1 intermediates, for compatibility
- // with platform verifiers.
- //
- // In practice the chain will be rejected with or without this
- // compatibility hack. The difference is whether the final error will
- // be ERR_CERT_WEAK_SIGNATURE_ALGORITHM (with compatibility hack) vs
- // ERR_CERT_INVALID (without hack).
- //
- // TODO(https://crbug.com/843735): Remove this once error-for-error
- // equivalence between builtin verifier and platform verifier is less
- // important.
- if ((cert.has_basic_constraints() && cert.basic_constraints().is_ca) &&
- cert.signature_algorithm() == SignatureAlgorithm::kRsaPkcs1Sha1) {
- nsgc_hack = true;
- }
- }
if (required_key_purpose == KeyPurpose::SERVER_AUTH) {
// Legacy compatible.
if (cert.has_extended_key_usage() && !has_server_auth_eku &&
- !has_any_eku && !nsgc_hack) {
+ !has_any_eku) {
errors->AddError(cert_errors::kEkuLacksServerAuth);
}
} else {
@@ -392,8 +380,8 @@ class ValidPolicyGraph {
public:
ValidPolicyGraph() = default;
- ValidPolicyGraph(const ValidPolicyGraph&) = delete;
- ValidPolicyGraph& operator=(const ValidPolicyGraph&) = delete;
+ ValidPolicyGraph(const ValidPolicyGraph &) = delete;
+ ValidPolicyGraph &operator=(const ValidPolicyGraph &) = delete;
// A Node is an entry in the policy graph. It contains information about some
// policy asserted by a certificate in the chain. The policy OID itself is
@@ -471,7 +459,7 @@ class ValidPolicyGraph {
LevelDetails StartLevel() {
// Finish building expected_policy_map for the previous level.
if (!levels_.empty()) {
- for (const auto& [policy, node] : levels_.back()) {
+ for (const auto &[policy, node] : levels_.back()) {
if (!node.mapped) {
current_level_.expected_policy_map[policy].push_back(policy);
}
@@ -491,7 +479,7 @@ class ValidPolicyGraph {
//
// This method may only be called once, after the policy graph is constructed.
std::set<der::Input> GetUserConstrainedPolicySet(
- const std::set<der::Input>& user_initial_policy_set) {
+ const std::set<der::Input> &user_initial_policy_set) {
if (levels_.empty()) {
return {};
}
@@ -508,7 +496,7 @@ class ValidPolicyGraph {
// The root's policy domain is determined by nodes with anyPolicy as a
// parent. However, we must limit to those which are reachable from the
// end-entity certificate because we defer some pruning steps.
- for (auto& [policy, node] : levels_.back()) {
+ for (auto &[policy, node] : levels_.back()) {
// GCC before 8.1 tracks individual unused bindings and does not support
// marking them [[maybe_unused]].
(void)policy;
@@ -516,7 +504,7 @@ class ValidPolicyGraph {
}
std::set<der::Input> policy_set;
for (size_t i = levels_.size() - 1; i < levels_.size(); i--) {
- for (auto& [policy, node] : levels_[i]) {
+ for (auto &[policy, node] : levels_[i]) {
if (!node.reachable) {
continue;
}
@@ -609,8 +597,7 @@ class ValidPolicyGraph {
private:
Level::iterator AddNodeReturningIterator(
- der::Input policy,
- std::vector<der::Input> parent_policies) {
+ der::Input policy, std::vector<der::Input> parent_policies) {
assert(policy != der::Input(kAnyPolicyOid));
auto [iter, inserted] = levels_.back().insert(
std::pair{policy, Node{std::move(parent_policies)}});
@@ -632,86 +619,83 @@ class ValidPolicyGraph {
class PathVerifier {
public:
// Same parameters and meaning as VerifyCertificateChain().
- void Run(const ParsedCertificateList& certs,
- const CertificateTrust& last_cert_trust,
- VerifyCertificateChainDelegate* delegate,
- const der::GeneralizedTime& time,
- KeyPurpose required_key_purpose,
+ void Run(const ParsedCertificateList &certs,
+ const CertificateTrust &last_cert_trust,
+ VerifyCertificateChainDelegate *delegate,
+ const der::GeneralizedTime &time, KeyPurpose required_key_purpose,
InitialExplicitPolicy initial_explicit_policy,
- const std::set<der::Input>& user_initial_policy_set,
+ const std::set<der::Input> &user_initial_policy_set,
InitialPolicyMappingInhibit initial_policy_mapping_inhibit,
InitialAnyPolicyInhibit initial_any_policy_inhibit,
- std::set<der::Input>* user_constrained_policy_set,
- CertPathErrors* errors);
+ std::set<der::Input> *user_constrained_policy_set,
+ CertPathErrors *errors);
private:
// Verifies and updates the valid policies. This corresponds with RFC 5280
// section 6.1.3 steps d-f.
- void VerifyPolicies(const ParsedCertificate& cert,
- bool is_target_cert,
- CertErrors* errors);
+ void VerifyPolicies(const ParsedCertificate &cert, bool is_target_cert,
+ CertErrors *errors);
// Applies the policy mappings. This corresponds with RFC 5280 section 6.1.4
// steps a-b.
- void VerifyPolicyMappings(const ParsedCertificate& cert, CertErrors* errors);
+ void VerifyPolicyMappings(const ParsedCertificate &cert, CertErrors *errors);
// Applies policyConstraints and inhibitAnyPolicy. This corresponds with RFC
// 5280 section 6.1.4 steps i-j.
- void ApplyPolicyConstraints(const ParsedCertificate& cert);
+ void ApplyPolicyConstraints(const ParsedCertificate &cert);
// This function corresponds to RFC 5280 section 6.1.3's "Basic Certificate
// Processing" procedure.
- void BasicCertificateProcessing(const ParsedCertificate& cert,
+ void BasicCertificateProcessing(const ParsedCertificate &cert,
bool is_target_cert,
bool is_target_cert_issuer,
- const der::GeneralizedTime& time,
+ const der::GeneralizedTime &time,
KeyPurpose required_key_purpose,
- CertErrors* errors,
- bool* shortcircuit_chain_validation);
+ CertErrors *errors,
+ bool *shortcircuit_chain_validation);
// This function corresponds to RFC 5280 section 6.1.4's "Preparation for
// Certificate i+1" procedure. |cert| is expected to be an intermediate.
- void PrepareForNextCertificate(const ParsedCertificate& cert,
- CertErrors* errors);
+ void PrepareForNextCertificate(const ParsedCertificate &cert,
+ CertErrors *errors);
// This function corresponds with RFC 5280 section 6.1.5's "Wrap-Up
// Procedure". It does processing for the final certificate (the target cert).
- void WrapUp(const ParsedCertificate& cert,
- KeyPurpose required_key_purpose,
- const std::set<der::Input>& user_initial_policy_set,
- CertErrors* errors);
+ void WrapUp(const ParsedCertificate &cert, KeyPurpose required_key_purpose,
+ const std::set<der::Input> &user_initial_policy_set,
+ bool allow_precertificate, CertErrors *errors);
// Enforces trust anchor constraints compatibile with RFC 5937.
//
// Note that the anchor constraints are encoded via the attached certificate
// itself.
- void ApplyTrustAnchorConstraints(const ParsedCertificate& cert,
+ void ApplyTrustAnchorConstraints(const ParsedCertificate &cert,
KeyPurpose required_key_purpose,
- CertErrors* errors);
+ CertErrors *errors);
// Initializes the path validation algorithm given anchor constraints. This
// follows the description in RFC 5937
- void ProcessRootCertificate(const ParsedCertificate& cert,
- const CertificateTrust& trust,
- const der::GeneralizedTime& time,
+ void ProcessRootCertificate(const ParsedCertificate &cert,
+ const CertificateTrust &trust,
+ const der::GeneralizedTime &time,
KeyPurpose required_key_purpose,
- CertErrors* errors,
- bool* shortcircuit_chain_validation);
+ CertErrors *errors,
+ bool *shortcircuit_chain_validation);
// Processes verification when the input is a single certificate. This is not
// defined by any standard. We attempt to match the de-facto behaviour of
// Operating System verifiers.
- void ProcessSingleCertChain(const ParsedCertificate& cert,
- const CertificateTrust& trust,
- const der::GeneralizedTime& time,
+ void ProcessSingleCertChain(const ParsedCertificate &cert,
+ const CertificateTrust &trust,
+ const der::GeneralizedTime &time,
KeyPurpose required_key_purpose,
- CertErrors* errors);
+ CertErrors *errors);
// Parses |spki| to an EVP_PKEY and checks whether the public key is accepted
// by |delegate_|. On failure parsing returns nullptr. If either parsing the
// key or key policy failed, adds a high-severity error to |errors|.
- bssl::UniquePtr<EVP_PKEY> ParseAndCheckPublicKey(const der::Input& spki,
- CertErrors* errors);
+ bssl::UniquePtr<EVP_PKEY> ParseAndCheckPublicKey(der::Input spki,
+ CertErrors *errors);
ValidPolicyGraph valid_policy_graph_;
@@ -720,7 +704,7 @@ class PathVerifier {
// Will contain a NameConstraints for each previous cert in the chain which
// had nameConstraints. This corresponds to the permitted_subtrees and
// excluded_subtrees state variables from RFC 5280.
- std::vector<const NameConstraints*> name_constraints_list_;
+ std::vector<const NameConstraints *> name_constraints_list_;
// |explicit_policy_| corresponds with the same named variable from RFC 5280
// section 6.1.2:
@@ -799,12 +783,11 @@ class PathVerifier {
// certificate.
size_t max_path_length_;
- VerifyCertificateChainDelegate* delegate_;
+ VerifyCertificateChainDelegate *delegate_;
};
-void PathVerifier::VerifyPolicies(const ParsedCertificate& cert,
- bool is_target_cert,
- CertErrors* errors) {
+void PathVerifier::VerifyPolicies(const ParsedCertificate &cert,
+ bool is_target_cert, CertErrors *errors) {
// From RFC 5280 section 6.1.3:
//
// (d) If the certificate policies extension is present in the
@@ -820,7 +803,7 @@ void PathVerifier::VerifyPolicies(const ParsedCertificate& cert,
// for policy P and P-Q denote the qualifier set for policy
// P. Perform the following steps in order:
bool cert_has_any_policy = false;
- for (const der::Input& p_oid : cert.policy_oids()) {
+ for (der::Input p_oid : cert.policy_oids()) {
if (p_oid == der::Input(kAnyPolicyOid)) {
cert_has_any_policy = true;
continue;
@@ -862,7 +845,7 @@ void PathVerifier::VerifyPolicies(const ParsedCertificate& cert,
// this node.
if (cert_has_any_policy && ((inhibit_any_policy_ > 0) ||
(!is_target_cert && IsSelfIssued(cert)))) {
- for (auto& [p_oid, parent_policies] :
+ for (auto &[p_oid, parent_policies] :
previous_level.expected_policy_map) {
valid_policy_graph_.AddNode(p_oid, std::move(parent_policies));
}
@@ -882,26 +865,29 @@ void PathVerifier::VerifyPolicies(const ParsedCertificate& cert,
// (e) If the certificate policies extension is not present, set the
// valid_policy_tree to NULL.
- if (!cert.has_policy_oids())
+ if (!cert.has_policy_oids()) {
valid_policy_graph_.SetNull();
+ }
// (f) Verify that either explicit_policy is greater than 0 or the
// valid_policy_tree is not equal to NULL;
- if (!((explicit_policy_ > 0) || !valid_policy_graph_.IsNull()))
+ if (!((explicit_policy_ > 0) || !valid_policy_graph_.IsNull())) {
errors->AddError(cert_errors::kNoValidPolicy);
+ }
}
-void PathVerifier::VerifyPolicyMappings(const ParsedCertificate& cert,
- CertErrors* errors) {
- if (!cert.has_policy_mappings())
+void PathVerifier::VerifyPolicyMappings(const ParsedCertificate &cert,
+ CertErrors *errors) {
+ if (!cert.has_policy_mappings()) {
return;
+ }
// From RFC 5280 section 6.1.4:
//
// (a) If a policy mappings extension is present, verify that the
// special value anyPolicy does not appear as an
// issuerDomainPolicy or a subjectDomainPolicy.
- for (const ParsedPolicyMapping& mapping : cert.policy_mappings()) {
+ for (const ParsedPolicyMapping &mapping : cert.policy_mappings()) {
if (mapping.issuer_domain_policy == der::Input(kAnyPolicyOid) ||
mapping.subject_domain_policy == der::Input(kAnyPolicyOid)) {
// Because this implementation continues processing certificates after
@@ -939,7 +925,7 @@ void PathVerifier::VerifyPolicyMappings(const ParsedCertificate& cert,
// equivalent to ID-P by the policy mappings extension.
//
if (policy_mapping_ > 0) {
- for (const ParsedPolicyMapping& mapping : cert.policy_mappings()) {
+ for (const ParsedPolicyMapping &mapping : cert.policy_mappings()) {
valid_policy_graph_.AddPolicyMapping(mapping.issuer_domain_policy,
mapping.subject_domain_policy);
}
@@ -962,13 +948,13 @@ void PathVerifier::VerifyPolicyMappings(const ParsedCertificate& cert,
//
// Step (ii) is deferred to part of GetUserConstrainedPolicySet().
if (policy_mapping_ == 0) {
- for (const ParsedPolicyMapping& mapping : cert.policy_mappings()) {
+ for (const ParsedPolicyMapping &mapping : cert.policy_mappings()) {
valid_policy_graph_.DeleteNode(mapping.issuer_domain_policy);
}
}
}
-void PathVerifier::ApplyPolicyConstraints(const ParsedCertificate& cert) {
+void PathVerifier::ApplyPolicyConstraints(const ParsedCertificate &cert) {
// RFC 5280 section 6.1.4 step i-j:
// (i) If a policy constraints extension is included in the
// certificate, modify the explicit_policy and policy_mapping
@@ -1005,13 +991,10 @@ void PathVerifier::ApplyPolicyConstraints(const ParsedCertificate& cert) {
}
void PathVerifier::BasicCertificateProcessing(
- const ParsedCertificate& cert,
- bool is_target_cert,
- bool is_target_cert_issuer,
- const der::GeneralizedTime& time,
- KeyPurpose required_key_purpose,
- CertErrors* errors,
- bool* shortcircuit_chain_validation) {
+ const ParsedCertificate &cert, bool is_target_cert,
+ bool is_target_cert_issuer, const der::GeneralizedTime &time,
+ KeyPurpose required_key_purpose, CertErrors *errors,
+ bool *shortcircuit_chain_validation) {
*shortcircuit_chain_validation = false;
// Check that the signature algorithms in Certificate vs TBSCertificate
// match. This isn't part of RFC 5280 section 6.1.3, but is mandated by
@@ -1041,8 +1024,9 @@ void PathVerifier::BasicCertificateProcessing(
errors->AddError(cert_errors::kVerifySignedDataFailed);
}
}
- if (*shortcircuit_chain_validation)
+ if (*shortcircuit_chain_validation) {
return;
+ }
// Check the time range for the certificate's validity, ensuring it is valid
// at |time|.
@@ -1055,15 +1039,16 @@ void PathVerifier::BasicCertificateProcessing(
// Verify the certificate's issuer name matches the issuing certificate's
// subject name. (RFC 5280 section 6.1.3 step a.4)
- if (cert.normalized_issuer() != working_normalized_issuer_name_)
+ if (cert.normalized_issuer() != working_normalized_issuer_name_) {
errors->AddError(cert_errors::kSubjectDoesNotMatchIssuer);
+ }
// Name constraints (RFC 5280 section 6.1.3 step b & c)
// If certificate i is self-issued and it is not the final certificate in the
// path, skip this step for certificate i.
if (!name_constraints_list_.empty() &&
(!IsSelfIssued(cert) || is_target_cert)) {
- for (const NameConstraints* nc : name_constraints_list_) {
+ for (const NameConstraints *nc : name_constraints_list_) {
nc->IsPermittedCert(cert.normalized_subject(), cert.subject_alt_names(),
errors);
}
@@ -1080,8 +1065,8 @@ void PathVerifier::BasicCertificateProcessing(
is_target_cert_issuer);
}
-void PathVerifier::PrepareForNextCertificate(const ParsedCertificate& cert,
- CertErrors* errors) {
+void PathVerifier::PrepareForNextCertificate(const ParsedCertificate &cert,
+ CertErrors *errors) {
// RFC 5280 section 6.1.4 step a-b
VerifyPolicyMappings(cert, errors);
@@ -1100,24 +1085,28 @@ void PathVerifier::PrepareForNextCertificate(const ParsedCertificate& cert,
// of |working_spki|.
// From RFC 5280 section 6.1.4 step g:
- if (cert.has_name_constraints())
+ if (cert.has_name_constraints()) {
name_constraints_list_.push_back(&cert.name_constraints());
+ }
// (h) If certificate i is not self-issued:
if (!IsSelfIssued(cert)) {
// (1) If explicit_policy is not 0, decrement explicit_policy by
// 1.
- if (explicit_policy_ > 0)
+ if (explicit_policy_ > 0) {
explicit_policy_ -= 1;
+ }
// (2) If policy_mapping is not 0, decrement policy_mapping by 1.
- if (policy_mapping_ > 0)
+ if (policy_mapping_ > 0) {
policy_mapping_ -= 1;
+ }
// (3) If inhibit_anyPolicy is not 0, decrement inhibit_anyPolicy
// by 1.
- if (inhibit_any_policy_ > 0)
+ if (inhibit_any_policy_ > 0) {
inhibit_any_policy_ -= 1;
+ }
}
// RFC 5280 section 6.1.4 step i-j:
@@ -1180,14 +1169,15 @@ void PathVerifier::PrepareForNextCertificate(const ParsedCertificate& cert,
// the certificate. Process any other recognized non-critical
// extension present in the certificate that is relevant to path
// processing.
- VerifyNoUnconsumedCriticalExtensions(cert, errors);
+ VerifyNoUnconsumedCriticalExtensions(cert, errors,
+ delegate_->AcceptPreCertificates());
}
// Checks if the target certificate has the CA bit set. If it does, add
// the appropriate error or warning to |errors|.
-void VerifyTargetCertIsNotCA(const ParsedCertificate& cert,
+void VerifyTargetCertIsNotCA(const ParsedCertificate &cert,
KeyPurpose required_key_purpose,
- CertErrors* errors) {
+ CertErrors *errors) {
if (cert.has_basic_constraints() && cert.basic_constraints().is_ca) {
// In spite of RFC 5280 4.2.1.9 which says the CA properties MAY exist in
// an end entity certificate, the CABF Baseline Requirements version
@@ -1208,14 +1198,16 @@ void VerifyTargetCertIsNotCA(const ParsedCertificate& cert,
}
}
-void PathVerifier::WrapUp(const ParsedCertificate& cert,
+void PathVerifier::WrapUp(const ParsedCertificate &cert,
KeyPurpose required_key_purpose,
- const std::set<der::Input>& user_initial_policy_set,
- CertErrors* errors) {
+ const std::set<der::Input> &user_initial_policy_set,
+ bool allow_precertificate,
+ CertErrors * errors) {
// From RFC 5280 section 6.1.5:
// (a) If explicit_policy is not 0, decrement explicit_policy by 1.
- if (explicit_policy_ > 0)
+ if (explicit_policy_ > 0) {
explicit_policy_ -= 1;
+ }
// (b) If a policy constraints extension is included in the
// certificate and requireExplicitPolicy is present and has a
@@ -1238,7 +1230,7 @@ void PathVerifier::WrapUp(const ParsedCertificate& cert,
//
// Note that this is duplicated by PrepareForNextCertificate() so as to
// directly match the procedures in RFC 5280's section 6.1.
- VerifyNoUnconsumedCriticalExtensions(cert, errors);
+ VerifyNoUnconsumedCriticalExtensions(cert, errors, allow_precertificate);
// This calculates the intersection from RFC 5280 section 6.1.5 step g, as
// well as applying the deferred recursive node that were skipped earlier in
@@ -1266,9 +1258,9 @@ void PathVerifier::WrapUp(const ParsedCertificate& cert,
ParseAndCheckPublicKey(cert.tbs().spki_tlv, errors);
}
-void PathVerifier::ApplyTrustAnchorConstraints(const ParsedCertificate& cert,
+void PathVerifier::ApplyTrustAnchorConstraints(const ParsedCertificate &cert,
KeyPurpose required_key_purpose,
- CertErrors* errors) {
+ CertErrors *errors) {
// If certificatePolicies is present, process the policies. This matches the
// handling for intermediates from RFC 5280 section 6.1.3.d (except that for
// intermediates it is non-optional). It intentionally deviates from RFC 5937
@@ -1310,8 +1302,9 @@ void PathVerifier::ApplyTrustAnchorConstraints(const ParsedCertificate& cert,
// The following enforcements follow from RFC 5937 (primarily section 3.2):
// Initialize name constraints initial-permitted/excluded-subtrees.
- if (cert.has_name_constraints())
+ if (cert.has_name_constraints()) {
name_constraints_list_.push_back(&cert.name_constraints());
+ }
if (cert.has_basic_constraints()) {
// Enforce CA=true if basicConstraints is present. This matches behavior of
@@ -1338,15 +1331,16 @@ void PathVerifier::ApplyTrustAnchorConstraints(const ParsedCertificate& cert,
// Extensions may be marked critical or not critical. When trust anchor
// constraints are enforced, clients MUST reject certification paths
// containing a trust anchor with unrecognized critical extensions.
- VerifyNoUnconsumedCriticalExtensions(cert, errors);
+ VerifyNoUnconsumedCriticalExtensions(cert, errors,
+ /*allow_precertificate=*/false);
}
-void PathVerifier::ProcessRootCertificate(const ParsedCertificate& cert,
- const CertificateTrust& trust,
- const der::GeneralizedTime& time,
+void PathVerifier::ProcessRootCertificate(const ParsedCertificate &cert,
+ const CertificateTrust &trust,
+ const der::GeneralizedTime &time,
KeyPurpose required_key_purpose,
- CertErrors* errors,
- bool* shortcircuit_chain_validation) {
+ CertErrors *errors,
+ bool *shortcircuit_chain_validation) {
*shortcircuit_chain_validation = false;
switch (trust.type) {
case CertificateTrustType::UNSPECIFIED:
@@ -1364,8 +1358,9 @@ void PathVerifier::ProcessRootCertificate(const ParsedCertificate& cert,
case CertificateTrustType::TRUSTED_ANCHOR_OR_LEAF:
break;
}
- if (*shortcircuit_chain_validation)
+ if (*shortcircuit_chain_validation) {
return;
+ }
if (trust.enforce_anchor_expiry) {
VerifyTimeValidity(cert, time, errors);
@@ -1390,11 +1385,11 @@ void PathVerifier::ProcessRootCertificate(const ParsedCertificate& cert,
working_normalized_issuer_name_ = cert.normalized_subject();
}
-void PathVerifier::ProcessSingleCertChain(const ParsedCertificate& cert,
- const CertificateTrust& trust,
- const der::GeneralizedTime& time,
+void PathVerifier::ProcessSingleCertChain(const ParsedCertificate &cert,
+ const CertificateTrust &trust,
+ const der::GeneralizedTime &time,
KeyPurpose required_key_purpose,
- CertErrors* errors) {
+ CertErrors *errors) {
switch (trust.type) {
case CertificateTrustType::UNSPECIFIED:
case CertificateTrustType::TRUSTED_ANCHOR:
@@ -1439,12 +1434,12 @@ void PathVerifier::ProcessSingleCertChain(const ParsedCertificate& cert,
// Checking for unknown critical extensions matches Windows, but is stricter
// than the Mac verifier.
- VerifyNoUnconsumedCriticalExtensions(cert, errors);
+ VerifyNoUnconsumedCriticalExtensions(cert, errors,
+ /*allow_precertificate=*/false);
}
bssl::UniquePtr<EVP_PKEY> PathVerifier::ParseAndCheckPublicKey(
- const der::Input& spki,
- CertErrors* errors) {
+ der::Input spki, CertErrors *errors) {
// Parse the public key.
bssl::UniquePtr<EVP_PKEY> pkey;
if (!ParsePublicKey(spki, &pkey)) {
@@ -1453,24 +1448,22 @@ bssl::UniquePtr<EVP_PKEY> PathVerifier::ParseAndCheckPublicKey(
}
// Check if the key is acceptable by the delegate.
- if (!delegate_->IsPublicKeyAcceptable(pkey.get(), errors))
+ if (!delegate_->IsPublicKeyAcceptable(pkey.get(), errors)) {
errors->AddError(cert_errors::kUnacceptablePublicKey);
+ }
return pkey;
}
void PathVerifier::Run(
- const ParsedCertificateList& certs,
- const CertificateTrust& last_cert_trust,
- VerifyCertificateChainDelegate* delegate,
- const der::GeneralizedTime& time,
+ const ParsedCertificateList &certs, const CertificateTrust &last_cert_trust,
+ VerifyCertificateChainDelegate *delegate, const der::GeneralizedTime &time,
KeyPurpose required_key_purpose,
InitialExplicitPolicy initial_explicit_policy,
- const std::set<der::Input>& user_initial_policy_set,
+ const std::set<der::Input> &user_initial_policy_set,
InitialPolicyMappingInhibit initial_policy_mapping_inhibit,
InitialAnyPolicyInhibit initial_any_policy_inhibit,
- std::set<der::Input>* user_constrained_policy_set,
- CertPathErrors* errors) {
+ std::set<der::Input> *user_constrained_policy_set, CertPathErrors *errors) {
// This implementation is structured to mimic the description of certificate
// path verification given by RFC 5280 section 6.1.
BSSL_CHECK(delegate);
@@ -1544,11 +1537,11 @@ void PathVerifier::Run(
const bool is_target_cert_issuer = index_into_certs == 1;
const bool is_root_cert = i == 0;
- const ParsedCertificate& cert = *certs[index_into_certs];
+ const ParsedCertificate &cert = *certs[index_into_certs];
// Output errors for the current certificate into an error bucket that is
// associated with that certificate.
- CertErrors* cert_errors = errors->GetErrorsForCert(index_into_certs);
+ CertErrors *cert_errors = errors->GetErrorsForCert(index_into_certs);
if (is_root_cert) {
bool shortcircuit_chain_validation = false;
@@ -1587,7 +1580,8 @@ void PathVerifier::Run(
if (!is_target_cert) {
PrepareForNextCertificate(cert, cert_errors);
} else {
- WrapUp(cert, required_key_purpose, user_initial_policy_set, cert_errors);
+ WrapUp(cert, required_key_purpose, user_initial_policy_set,
+ delegate->AcceptPreCertificates(), cert_errors);
}
}
@@ -1606,17 +1600,14 @@ void PathVerifier::Run(
VerifyCertificateChainDelegate::~VerifyCertificateChainDelegate() = default;
void VerifyCertificateChain(
- const ParsedCertificateList& certs,
- const CertificateTrust& last_cert_trust,
- VerifyCertificateChainDelegate* delegate,
- const der::GeneralizedTime& time,
+ const ParsedCertificateList &certs, const CertificateTrust &last_cert_trust,
+ VerifyCertificateChainDelegate *delegate, const der::GeneralizedTime &time,
KeyPurpose required_key_purpose,
InitialExplicitPolicy initial_explicit_policy,
- const std::set<der::Input>& user_initial_policy_set,
+ const std::set<der::Input> &user_initial_policy_set,
InitialPolicyMappingInhibit initial_policy_mapping_inhibit,
InitialAnyPolicyInhibit initial_any_policy_inhibit,
- std::set<der::Input>* user_constrained_policy_set,
- CertPathErrors* errors) {
+ std::set<der::Input> *user_constrained_policy_set, CertPathErrors *errors) {
PathVerifier verifier;
verifier.Run(certs, last_cert_trust, delegate, time, required_key_purpose,
initial_explicit_policy, user_initial_policy_set,
@@ -1624,9 +1615,9 @@ void VerifyCertificateChain(
user_constrained_policy_set, errors);
}
-bool VerifyCertificateIsSelfSigned(const ParsedCertificate& cert,
- SignatureVerifyCache* cache,
- CertErrors* errors) {
+bool VerifyCertificateIsSelfSigned(const ParsedCertificate &cert,
+ SignatureVerifyCache *cache,
+ CertErrors *errors) {
if (cert.normalized_subject() != cert.normalized_issuer()) {
if (errors) {
errors->AddError(cert_errors::kSubjectDoesNotMatchIssuer);
@@ -1656,4 +1647,4 @@ bool VerifyCertificateIsSelfSigned(const ParsedCertificate& cert,
return true;
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/verify_certificate_chain.h b/src/pki/verify_certificate_chain.h
index e6f44d9..6c4cccf 100644
--- a/src/pki/verify_certificate_chain.h
+++ b/src/pki/verify_certificate_chain.h
@@ -5,15 +5,15 @@
#ifndef BSSL_PKI_VERIFY_CERTIFICATE_CHAIN_H_
#define BSSL_PKI_VERIFY_CERTIFICATE_CHAIN_H_
-#include "fillins/openssl_util.h"
#include <set>
+#include <openssl/base.h>
+#include <openssl/evp.h>
+#include <openssl/pki/signature_verify_cache.h>
#include "cert_errors.h"
-#include "parsed_certificate.h"
-#include "signature_verify_cache.h"
#include "input.h"
-#include <openssl/evp.h>
+#include "parsed_certificate.h"
namespace bssl {
@@ -58,8 +58,7 @@ class OPENSSL_EXPORT VerifyCertificateChainDelegate {
// can optionally add high-severity errors to |errors| with details on why it
// was rejected.
virtual bool IsSignatureAlgorithmAcceptable(
- SignatureAlgorithm signature_algorithm,
- CertErrors* errors) = 0;
+ SignatureAlgorithm signature_algorithm, CertErrors *errors) = 0;
// Implementations should return true if |public_key| is acceptable. This is
// called for each certificate in the chain, including the target certificate.
@@ -67,13 +66,20 @@ class OPENSSL_EXPORT VerifyCertificateChainDelegate {
// errors to |errors| with details on why it was rejected.
//
// |public_key| can be assumed to be non-null.
- virtual bool IsPublicKeyAcceptable(EVP_PKEY* public_key,
- CertErrors* errors) = 0;
+ virtual bool IsPublicKeyAcceptable(EVP_PKEY *public_key,
+ CertErrors *errors) = 0;
// This is called during verification to obtain a pointer to a signature
// verification cache if one exists. nullptr may be returned indicating there
// is no verification cache.
- virtual SignatureVerifyCache* GetVerifyCache() = 0;
+ virtual SignatureVerifyCache *GetVerifyCache() = 0;
+
+ // This is called to determine if PreCertificates should be accepted, for the
+ // purpose of validating issued PreCertificates in a path. Most callers should
+ // return false here. This should never return true for TLS certificate
+ // validation. If this function returns true the CT precertificate poison
+ // extension will not prevent the certificate from being validated.
+ virtual bool AcceptPreCertificates() = 0;
virtual ~VerifyCertificateChainDelegate();
};
@@ -241,26 +247,23 @@ class OPENSSL_EXPORT VerifyCertificateChainDelegate {
// The presence of any other unrecognized extension marked as critical fails
// validation.
OPENSSL_EXPORT void VerifyCertificateChain(
- const ParsedCertificateList& certs,
- const CertificateTrust& last_cert_trust,
- VerifyCertificateChainDelegate* delegate,
- const der::GeneralizedTime& time,
+ const ParsedCertificateList &certs, const CertificateTrust &last_cert_trust,
+ VerifyCertificateChainDelegate *delegate, const der::GeneralizedTime &time,
KeyPurpose required_key_purpose,
InitialExplicitPolicy initial_explicit_policy,
- const std::set<der::Input>& user_initial_policy_set,
+ const std::set<der::Input> &user_initial_policy_set,
InitialPolicyMappingInhibit initial_policy_mapping_inhibit,
InitialAnyPolicyInhibit initial_any_policy_inhibit,
- std::set<der::Input>* user_constrained_policy_set,
- CertPathErrors* errors);
+ std::set<der::Input> *user_constrained_policy_set, CertPathErrors *errors);
// Returns true if `cert` is self-signed. Returns false `cert` is not
// self-signed or there was an error. If `errors` is non-null, it will contain
// additional information about the problem. If `cache` is non-null, it will be
// used to cache the signature verification step.
-OPENSSL_EXPORT bool VerifyCertificateIsSelfSigned(const ParsedCertificate& cert,
- SignatureVerifyCache* cache,
- CertErrors* errors);
+OPENSSL_EXPORT bool VerifyCertificateIsSelfSigned(const ParsedCertificate &cert,
+ SignatureVerifyCache *cache,
+ CertErrors *errors);
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_VERIFY_CERTIFICATE_CHAIN_H_
diff --git a/src/pki/verify_certificate_chain_pkits_unittest.cc b/src/pki/verify_certificate_chain_pkits_unittest.cc
index f36efa6..98d1504 100644
--- a/src/pki/verify_certificate_chain_pkits_unittest.cc
+++ b/src/pki/verify_certificate_chain_pkits_unittest.cc
@@ -4,11 +4,11 @@
#include "verify_certificate_chain.h"
+#include <openssl/pool.h>
+#include "input.h"
#include "parsed_certificate.h"
#include "simple_path_builder_delegate.h"
#include "trust_store.h"
-#include "input.h"
-#include <openssl/pool.h>
// These require CRL support, which is not implemented at the
// VerifyCertificateChain level.
@@ -27,7 +27,7 @@ class VerifyCertificateChainPkitsTestDelegate {
public:
static void RunTest(std::vector<std::string> cert_ders,
std::vector<std::string> crl_ders,
- const PkitsTestInfo& info) {
+ const PkitsTestInfo &info) {
ASSERT_FALSE(cert_ders.empty());
// PKITS lists chains from trust anchor to target, whereas
@@ -37,8 +37,9 @@ class VerifyCertificateChainPkitsTestDelegate {
CertErrors parsing_errors;
for (auto i = cert_ders.rbegin(); i != cert_ders.rend(); ++i) {
ASSERT_TRUE(ParsedCertificate::CreateAndAddToVector(
- bssl::UniquePtr<CRYPTO_BUFFER>(CRYPTO_BUFFER_new(
- reinterpret_cast<const uint8_t*>(i->data()), i->size(), nullptr)),
+ bssl::UniquePtr<CRYPTO_BUFFER>(
+ CRYPTO_BUFFER_new(reinterpret_cast<const uint8_t *>(i->data()),
+ i->size(), nullptr)),
{}, &input_chain, &parsing_errors))
<< parsing_errors.ToDebugString();
}
@@ -95,8 +96,7 @@ INSTANTIATE_TYPED_TEST_SUITE_P(VerifyCertificateChain,
INSTANTIATE_TYPED_TEST_SUITE_P(VerifyCertificateChain,
PkitsTest06VerifyingBasicConstraints,
VerifyCertificateChainPkitsTestDelegate);
-INSTANTIATE_TYPED_TEST_SUITE_P(VerifyCertificateChain,
- PkitsTest07KeyUsage,
+INSTANTIATE_TYPED_TEST_SUITE_P(VerifyCertificateChain, PkitsTest07KeyUsage,
VerifyCertificateChainPkitsTestDelegate);
INSTANTIATE_TYPED_TEST_SUITE_P(VerifyCertificateChain,
PkitsTest08CertificatePolicies,
@@ -126,4 +126,4 @@ INSTANTIATE_TYPED_TEST_SUITE_P(VerifyCertificateChain,
// PkitsTest05VerifyingPathswithSelfIssuedCertificates,
// PkitsTest14DistributionPoints, PkitsTest15DeltaCRLs
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/verify_certificate_chain_typed_unittest.h b/src/pki/verify_certificate_chain_typed_unittest.h
index e253847..e22788c 100644
--- a/src/pki/verify_certificate_chain_typed_unittest.h
+++ b/src/pki/verify_certificate_chain_typed_unittest.h
@@ -5,20 +5,20 @@
#ifndef BSSL_PKI_VERIFY_CERTIFICATE_CHAIN_TYPED_UNITTEST_H_
#define BSSL_PKI_VERIFY_CERTIFICATE_CHAIN_TYPED_UNITTEST_H_
+#include <gtest/gtest.h>
+#include "input.h"
#include "parsed_certificate.h"
#include "simple_path_builder_delegate.h"
#include "test_helpers.h"
#include "trust_store.h"
#include "verify_certificate_chain.h"
-#include "input.h"
-#include <gtest/gtest.h>
namespace bssl {
template <typename TestDelegate>
class VerifyCertificateChainTest : public ::testing::Test {
public:
- void RunTest(const char* file_name) {
+ void RunTest(const char *file_name) {
VerifyCertChainTest test;
std::string path =
@@ -318,29 +318,17 @@ TYPED_TEST_P(VerifyCertificateChainSingleRootTest, TargetSelfSigned) {
// TODO(eroman): Add test that invalid validity dates where the day or month
// ordinal not in range, like "March 39, 2016" are rejected.
-REGISTER_TYPED_TEST_SUITE_P(VerifyCertificateChainSingleRootTest,
- Simple,
- BasicConstraintsCa,
- BasicConstraintsPathlen,
- UnknownExtension,
- MSApplicationPolicies,
- WeakSignature,
- WrongSignature,
- LastCertificateNotTrusted,
- WeakPublicKey,
- TargetSignedUsingEcdsa,
- Expired,
- TargetNotEndEntity,
- KeyUsage,
- ExtendedKeyUsage,
+REGISTER_TYPED_TEST_SUITE_P(VerifyCertificateChainSingleRootTest, Simple,
+ BasicConstraintsCa, BasicConstraintsPathlen,
+ UnknownExtension, MSApplicationPolicies,
+ WeakSignature, WrongSignature,
+ LastCertificateNotTrusted, WeakPublicKey,
+ TargetSignedUsingEcdsa, Expired, TargetNotEndEntity,
+ KeyUsage, ExtendedKeyUsage,
IssuerAndSubjectNotByteForByteEqual,
- TrustAnchorNotSelfSigned,
- KeyRollover,
- Policies,
- ManyNames,
- TargetOnly,
- TargetSelfSigned);
-
-} // namespace net
+ TrustAnchorNotSelfSigned, KeyRollover, Policies,
+ ManyNames, TargetOnly, TargetSelfSigned);
+
+} // namespace bssl
#endif // BSSL_PKI_VERIFY_CERTIFICATE_CHAIN_TYPED_UNITTEST_H_
diff --git a/src/pki/verify_certificate_chain_unittest.cc b/src/pki/verify_certificate_chain_unittest.cc
index bebd4dd..5ea3e08 100644
--- a/src/pki/verify_certificate_chain_unittest.cc
+++ b/src/pki/verify_certificate_chain_unittest.cc
@@ -18,8 +18,8 @@ namespace {
class VerifyCertificateChainTestDelegate {
public:
- static void Verify(const VerifyCertChainTest& test,
- const std::string& test_file_path) {
+ static void Verify(const VerifyCertChainTest &test,
+ const std::string &test_file_path) {
SimplePathBuilderDelegate delegate(1024, test.digest_policy);
CertPathErrors errors;
@@ -125,4 +125,4 @@ TEST(VerifyCertificateIsSelfSigned, SelfSigned) {
EXPECT_EQ(cache.CacheStores(), 1U);
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/verify_name_match.cc b/src/pki/verify_name_match.cc
index 5d01ddf..09f6102 100644
--- a/src/pki/verify_name_match.cc
+++ b/src/pki/verify_name_match.cc
@@ -4,14 +4,14 @@
#include "verify_name_match.h"
+#include <openssl/base.h>
+#include <openssl/bytestring.h>
+
#include "cert_error_params.h"
#include "cert_errors.h"
-#include "parse_name.h"
#include "input.h"
+#include "parse_name.h"
#include "parser.h"
-#include "tag.h"
-#include <openssl/base.h>
-#include <openssl/bytestring.h>
namespace bssl {
@@ -55,8 +55,7 @@ enum CharsetEnforcement {
//
// NOTE: |output| will be modified regardless of the return.
[[nodiscard]] bool NormalizeDirectoryString(
- CharsetEnforcement charset_enforcement,
- std::string* output) {
+ CharsetEnforcement charset_enforcement, std::string *output) {
// Normalized version will always be equal or shorter than input.
// Normalize in place and then truncate the output if necessary.
std::string::const_iterator read_iter = output->begin();
@@ -73,8 +72,9 @@ enum CharsetEnforcement {
// multiple whitespace chars to a single space, otherwise ignore trailing
// whitespace.
std::string::const_iterator next_iter = read_iter + 1;
- if (next_iter != output->end() && *next_iter != ' ')
+ if (next_iter != output->end() && *next_iter != ' ') {
*(write_iter++) = ' ';
+ }
} else if (c >= 'A' && c <= 'Z') {
// Fold case.
*(write_iter++) = c + ('a' - 'A');
@@ -86,12 +86,14 @@ enum CharsetEnforcement {
// See NormalizePrintableStringValue comment for the acceptable list
// of characters.
if (!((c >= 'a' && c <= 'z') || (c >= '\'' && c <= ':') || c == '=' ||
- c == '?'))
+ c == '?')) {
return false;
+ }
break;
case ENFORCE_ASCII:
- if (c > 0x7F)
+ if (c > 0x7F) {
return false;
+ }
break;
case NO_ENFORCEMENT:
break;
@@ -99,8 +101,9 @@ enum CharsetEnforcement {
*(write_iter++) = c;
}
}
- if (write_iter != output->end())
+ if (write_iter != output->end()) {
output->erase(write_iter, output->end());
+ }
return true;
}
@@ -113,8 +116,7 @@ enum CharsetEnforcement {
// is invalid, returns false.
// NOTE: |output| will be modified regardless of the return.
[[nodiscard]] bool NormalizeValue(X509NameAttribute attribute,
- std::string* output,
- CertErrors* errors) {
+ std::string *output, CertErrors *errors) {
BSSL_CHECK(errors);
if (!attribute.ValueAsStringUnsafe(output)) {
@@ -125,15 +127,15 @@ enum CharsetEnforcement {
bool success = false;
switch (attribute.value_tag) {
- case der::kPrintableString:
+ case CBS_ASN1_PRINTABLESTRING:
success = NormalizeDirectoryString(ENFORCE_PRINTABLE_STRING, output);
break;
- case der::kBmpString:
- case der::kUniversalString:
- case der::kUtf8String:
+ case CBS_ASN1_BMPSTRING:
+ case CBS_ASN1_UNIVERSALSTRING:
+ case CBS_ASN1_UTF8STRING:
success = NormalizeDirectoryString(NO_ENFORCEMENT, output);
break;
- case der::kIA5String:
+ case CBS_ASN1_IA5STRING:
success = NormalizeDirectoryString(ENFORCE_ASCII, output);
break;
default:
@@ -151,15 +153,15 @@ enum CharsetEnforcement {
}
// Returns true if |tag| is a string type that NormalizeValue can handle.
-bool IsNormalizableDirectoryString(der::Tag tag) {
+bool IsNormalizableDirectoryString(CBS_ASN1_TAG tag) {
switch (tag) {
- case der::kPrintableString:
- case der::kUtf8String:
+ case CBS_ASN1_PRINTABLESTRING:
+ case CBS_ASN1_UTF8STRING:
// RFC 5280 only requires handling IA5String for comparing domainComponent
// values, but handling it here avoids the need to special case anything.
- case der::kIA5String:
- case der::kUniversalString:
- case der::kBmpString:
+ case CBS_ASN1_IA5STRING:
+ case CBS_ASN1_UNIVERSALSTRING:
+ case CBS_ASN1_BMPSTRING:
return true;
// TeletexString isn't normalized. Section 8 of RFC 5280 briefly
// describes the historical confusion between treating TeletexString
@@ -179,13 +181,15 @@ bool VerifyValueMatch(X509NameAttribute a, X509NameAttribute b) {
// TODO(eroman): Plumb this down.
CertErrors unused_errors;
if (!NormalizeValue(a, &a_normalized, &unused_errors) ||
- !NormalizeValue(b, &b_normalized, &unused_errors))
+ !NormalizeValue(b, &b_normalized, &unused_errors)) {
return false;
+ }
return a_normalized == b_normalized;
}
// Attributes encoded with different types may be assumed to be unequal.
- if (a.value_tag != b.value_tag)
+ if (a.value_tag != b.value_tag) {
return false;
+ }
// All other types use binary comparison.
return a.value == b.value;
}
@@ -193,33 +197,36 @@ bool VerifyValueMatch(X509NameAttribute a, X509NameAttribute b) {
// Verifies that |a_parser| and |b_parser| are the same length and that every
// AttributeTypeAndValue in |a_parser| has a matching AttributeTypeAndValue in
// |b_parser|.
-bool VerifyRdnMatch(der::Parser* a_parser, der::Parser* b_parser) {
+bool VerifyRdnMatch(der::Parser *a_parser, der::Parser *b_parser) {
RelativeDistinguishedName a_type_and_values, b_type_and_values;
if (!ReadRdn(a_parser, &a_type_and_values) ||
- !ReadRdn(b_parser, &b_type_and_values))
+ !ReadRdn(b_parser, &b_type_and_values)) {
return false;
+ }
// RFC 5280 section 7.1:
// Two relative distinguished names RDN1 and RDN2 match if they have the same
// number of naming attributes and for each naming attribute in RDN1 there is
// a matching naming attribute in RDN2.
- if (a_type_and_values.size() != b_type_and_values.size())
+ if (a_type_and_values.size() != b_type_and_values.size()) {
return false;
+ }
// The ordering of elements may differ due to denormalized values sorting
// differently in the DER encoding. Since the number of elements should be
// small, a naive linear search for each element should be fine. (Hostile
// certificates already have ways to provoke pathological behavior.)
- for (const auto& a : a_type_and_values) {
+ for (const auto &a : a_type_and_values) {
auto b_iter = b_type_and_values.begin();
for (; b_iter != b_type_and_values.end(); ++b_iter) {
- const auto& b = *b_iter;
+ const auto &b = *b_iter;
if (a.type == b.type && VerifyValueMatch(a, b)) {
break;
}
}
- if (b_iter == b_type_and_values.end())
+ if (b_iter == b_type_and_values.end()) {
return false;
+ }
// Remove the matched element from b_type_and_values to ensure duplicate
// elements in a_type_and_values can't match the same element in
// b_type_and_values multiple times.
@@ -251,8 +258,7 @@ enum NameMatchType {
//
// RelativeDistinguishedName ::=
// SET SIZE (1..MAX) OF AttributeTypeAndValue
-bool VerifyNameMatchInternal(const der::Input& a,
- const der::Input& b,
+bool VerifyNameMatchInternal(der::Input a, der::Input b,
NameMatchType match_type) {
// Empty Names are allowed. RFC 5280 section 4.1.2.4 requires "The issuer
// field MUST contain a non-empty distinguished name (DN)", while section
@@ -268,30 +274,33 @@ bool VerifyNameMatchInternal(const der::Input& a,
der::Parser a_rdn_sequence_counter(a);
der::Parser b_rdn_sequence_counter(b);
while (a_rdn_sequence_counter.HasMore() && b_rdn_sequence_counter.HasMore()) {
- if (!a_rdn_sequence_counter.SkipTag(der::kSet) ||
- !b_rdn_sequence_counter.SkipTag(der::kSet)) {
+ if (!a_rdn_sequence_counter.SkipTag(CBS_ASN1_SET) ||
+ !b_rdn_sequence_counter.SkipTag(CBS_ASN1_SET)) {
return false;
}
}
// If doing exact match and either of the sequences has more elements than the
// other, not a match. If doing a subtree match, the first Name may have more
// RDNs than the second.
- if (b_rdn_sequence_counter.HasMore())
+ if (b_rdn_sequence_counter.HasMore()) {
return false;
- if (match_type == EXACT_MATCH && a_rdn_sequence_counter.HasMore())
+ }
+ if (match_type == EXACT_MATCH && a_rdn_sequence_counter.HasMore()) {
return false;
+ }
// Verify that RDNs in |a| and |b| match.
der::Parser a_rdn_sequence(a);
der::Parser b_rdn_sequence(b);
while (a_rdn_sequence.HasMore() && b_rdn_sequence.HasMore()) {
der::Parser a_rdn, b_rdn;
- if (!a_rdn_sequence.ReadConstructed(der::kSet, &a_rdn) ||
- !b_rdn_sequence.ReadConstructed(der::kSet, &b_rdn)) {
+ if (!a_rdn_sequence.ReadConstructed(CBS_ASN1_SET, &a_rdn) ||
+ !b_rdn_sequence.ReadConstructed(CBS_ASN1_SET, &b_rdn)) {
return false;
}
- if (!VerifyRdnMatch(&a_rdn, &b_rdn))
+ if (!VerifyRdnMatch(&a_rdn, &b_rdn)) {
return false;
+ }
}
return true;
@@ -299,9 +308,8 @@ bool VerifyNameMatchInternal(const der::Input& a,
} // namespace
-bool NormalizeName(const der::Input& name_rdn_sequence,
- std::string* normalized_rdn_sequence,
- CertErrors* errors) {
+bool NormalizeName(der::Input name_rdn_sequence,
+ std::string *normalized_rdn_sequence, CertErrors *errors) {
BSSL_CHECK(errors);
// RFC 5280 section 4.1.2.4
@@ -309,23 +317,27 @@ bool NormalizeName(const der::Input& name_rdn_sequence,
der::Parser rdn_sequence_parser(name_rdn_sequence);
bssl::ScopedCBB cbb;
- if (!CBB_init(cbb.get(), 0))
+ if (!CBB_init(cbb.get(), 0)) {
return false;
+ }
while (rdn_sequence_parser.HasMore()) {
// RelativeDistinguishedName ::= SET SIZE (1..MAX) OF AttributeTypeAndValue
der::Parser rdn_parser;
- if (!rdn_sequence_parser.ReadConstructed(der::kSet, &rdn_parser))
+ if (!rdn_sequence_parser.ReadConstructed(CBS_ASN1_SET, &rdn_parser)) {
return false;
+ }
RelativeDistinguishedName type_and_values;
- if (!ReadRdn(&rdn_parser, &type_and_values))
+ if (!ReadRdn(&rdn_parser, &type_and_values)) {
return false;
+ }
CBB rdn_cbb;
- if (!CBB_add_asn1(cbb.get(), &rdn_cbb, CBS_ASN1_SET))
+ if (!CBB_add_asn1(cbb.get(), &rdn_cbb, CBS_ASN1_SET)) {
return false;
+ }
- for (const auto& type_and_value : type_and_values) {
+ for (const auto &type_and_value : type_and_values) {
// AttributeTypeAndValue ::= SEQUENCE {
// type AttributeType,
// value AttributeValue }
@@ -338,38 +350,43 @@ bool NormalizeName(const der::Input& name_rdn_sequence,
// AttributeType ::= OBJECT IDENTIFIER
if (!CBB_add_asn1(&attribute_type_and_value_cbb, &type_cbb,
CBS_ASN1_OBJECT) ||
- !CBB_add_bytes(&type_cbb, type_and_value.type.UnsafeData(),
- type_and_value.type.Length())) {
+ !CBB_add_bytes(&type_cbb, type_and_value.type.data(),
+ type_and_value.type.size())) {
return false;
}
// AttributeValue ::= ANY -- DEFINED BY AttributeType
if (IsNormalizableDirectoryString(type_and_value.value_tag)) {
std::string normalized_value;
- if (!NormalizeValue(type_and_value, &normalized_value, errors))
+ if (!NormalizeValue(type_and_value, &normalized_value, errors)) {
return false;
+ }
if (!CBB_add_asn1(&attribute_type_and_value_cbb, &value_cbb,
CBS_ASN1_UTF8STRING) ||
!CBB_add_bytes(
&value_cbb,
- reinterpret_cast<const uint8_t*>(normalized_value.data()),
- normalized_value.size()))
+ reinterpret_cast<const uint8_t *>(normalized_value.data()),
+ normalized_value.size())) {
return false;
+ }
} else {
if (!CBB_add_asn1(&attribute_type_and_value_cbb, &value_cbb,
type_and_value.value_tag) ||
- !CBB_add_bytes(&value_cbb, type_and_value.value.UnsafeData(),
- type_and_value.value.Length()))
+ !CBB_add_bytes(&value_cbb, type_and_value.value.data(),
+ type_and_value.value.size())) {
return false;
+ }
}
- if (!CBB_flush(&rdn_cbb))
+ if (!CBB_flush(&rdn_cbb)) {
return false;
+ }
}
// Ensure the encoded AttributeTypeAndValue values in the SET OF are sorted.
- if (!CBB_flush_asn1_set_of(&rdn_cbb) || !CBB_flush(cbb.get()))
+ if (!CBB_flush_asn1_set_of(&rdn_cbb) || !CBB_flush(cbb.get())) {
return false;
+ }
}
normalized_rdn_sequence->assign(CBB_data(cbb.get()),
@@ -377,33 +394,34 @@ bool NormalizeName(const der::Input& name_rdn_sequence,
return true;
}
-bool VerifyNameMatch(const der::Input& a_rdn_sequence,
- const der::Input& b_rdn_sequence) {
+bool VerifyNameMatch(der::Input a_rdn_sequence, der::Input b_rdn_sequence) {
return VerifyNameMatchInternal(a_rdn_sequence, b_rdn_sequence, EXACT_MATCH);
}
-bool VerifyNameInSubtree(const der::Input& name_rdn_sequence,
- const der::Input& parent_rdn_sequence) {
+bool VerifyNameInSubtree(der::Input name_rdn_sequence,
+ der::Input parent_rdn_sequence) {
return VerifyNameMatchInternal(name_rdn_sequence, parent_rdn_sequence,
SUBTREE_MATCH);
}
bool FindEmailAddressesInName(
- const der::Input& name_rdn_sequence,
- std::vector<std::string>* contained_email_addresses) {
+ der::Input name_rdn_sequence,
+ std::vector<std::string> *contained_email_addresses) {
contained_email_addresses->clear();
der::Parser rdn_sequence_parser(name_rdn_sequence);
while (rdn_sequence_parser.HasMore()) {
der::Parser rdn_parser;
- if (!rdn_sequence_parser.ReadConstructed(der::kSet, &rdn_parser))
+ if (!rdn_sequence_parser.ReadConstructed(CBS_ASN1_SET, &rdn_parser)) {
return false;
+ }
RelativeDistinguishedName type_and_values;
- if (!ReadRdn(&rdn_parser, &type_and_values))
+ if (!ReadRdn(&rdn_parser, &type_and_values)) {
return false;
+ }
- for (const auto& type_and_value : type_and_values) {
+ for (const auto &type_and_value : type_and_values) {
if (type_and_value.type == der::Input(kTypeEmailAddressOid)) {
std::string email_address;
if (!type_and_value.ValueAsString(&email_address)) {
@@ -417,4 +435,4 @@ bool FindEmailAddressesInName(
return true;
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/verify_name_match.h b/src/pki/verify_name_match.h
index a328245..79c9ce8 100644
--- a/src/pki/verify_name_match.h
+++ b/src/pki/verify_name_match.h
@@ -5,11 +5,10 @@
#ifndef BSSL_PKI_VERIFY_NAME_MATCH_H_
#define BSSL_PKI_VERIFY_NAME_MATCH_H_
-#include "fillins/openssl_util.h"
#include <string>
#include <vector>
-
+#include <openssl/base.h>
namespace bssl {
@@ -25,24 +24,24 @@ class Input;
// outer Sequence tag). Returns false if there was an error parsing or
// normalizing the input, and adds error information to |errors|. |errors| must
// be non-null.
-OPENSSL_EXPORT bool NormalizeName(const der::Input& name_rdn_sequence,
- std::string* normalized_rdn_sequence,
- CertErrors* errors);
+OPENSSL_EXPORT bool NormalizeName(der::Input name_rdn_sequence,
+ std::string *normalized_rdn_sequence,
+ CertErrors *errors);
// Compares DER-encoded X.501 Name values according to RFC 5280 rules.
// |a_rdn_sequence| and |b_rdn_sequence| should be the DER-encoded RDNSequence
// values (not including the Sequence tag).
// Returns true if |a_rdn_sequence| and |b_rdn_sequence| match.
-OPENSSL_EXPORT bool VerifyNameMatch(const der::Input& a_rdn_sequence,
- const der::Input& b_rdn_sequence);
+OPENSSL_EXPORT bool VerifyNameMatch(der::Input a_rdn_sequence,
+ der::Input b_rdn_sequence);
// Compares |name_rdn_sequence| and |parent_rdn_sequence| and return true if
// |name_rdn_sequence| is within the subtree defined by |parent_rdn_sequence| as
// defined by RFC 5280 section 7.1. |name_rdn_sequence| and
// |parent_rdn_sequence| should be the DER-encoded sequence values (not
// including the Sequence tag).
-OPENSSL_EXPORT bool VerifyNameInSubtree(const der::Input& name_rdn_sequence,
- const der::Input& parent_rdn_sequence);
+OPENSSL_EXPORT bool VerifyNameInSubtree(der::Input name_rdn_sequence,
+ der::Input parent_rdn_sequence);
// Helper functions:
@@ -54,9 +53,9 @@ OPENSSL_EXPORT bool VerifyNameInSubtree(const der::Input& name_rdn_sequence,
// tag, but otherwise have not been validated.
// Returns false if there was a parsing error.
[[nodiscard]] bool FindEmailAddressesInName(
- const der::Input& name_rdn_sequence,
- std::vector<std::string>* contained_email_addresses);
+ der::Input name_rdn_sequence,
+ std::vector<std::string> *contained_email_addresses);
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_VERIFY_NAME_MATCH_H_
diff --git a/src/pki/verify_name_match_unittest.cc b/src/pki/verify_name_match_unittest.cc
index 4e57250..53cd012 100644
--- a/src/pki/verify_name_match_unittest.cc
+++ b/src/pki/verify_name_match_unittest.cc
@@ -4,9 +4,9 @@
#include "verify_name_match.h"
+#include <gtest/gtest.h>
#include "string_util.h"
#include "test_helpers.h"
-#include <gtest/gtest.h>
namespace bssl {
namespace {
@@ -17,10 +17,10 @@ namespace {
// |value_type| indicates what ASN.1 type is used to encode the data.
// |suffix| indicates any additional modifications, such as caseswapping,
// whitespace adding, etc.
-::testing::AssertionResult LoadTestData(const std::string& prefix,
- const std::string& value_type,
- const std::string& suffix,
- std::string* result) {
+::testing::AssertionResult LoadTestData(const std::string &prefix,
+ const std::string &value_type,
+ const std::string &suffix,
+ std::string *result) {
std::string path = "testdata/verify_name_match_unittest/names/" + prefix +
"-" + value_type + "-" + suffix + ".pem";
@@ -31,9 +31,10 @@ namespace {
return ReadTestDataFromPemFile(path, mappings);
}
-bool TypesAreComparable(const std::string& type_1, const std::string& type_2) {
- if (type_1 == type_2)
+bool TypesAreComparable(const std::string &type_1, const std::string &type_2) {
+ if (type_1 == type_2) {
return true;
+ }
if ((type_1 == "PRINTABLESTRING" || type_1 == "UTF8" ||
type_1 == "BMPSTRING" || type_1 == "UNIVERSALSTRING") &&
(type_2 == "PRINTABLESTRING" || type_2 == "UTF8" ||
@@ -44,23 +45,23 @@ bool TypesAreComparable(const std::string& type_1, const std::string& type_2) {
}
// All string types.
-static const char* kValueTypes[] = {"PRINTABLESTRING", "T61STRING", "UTF8",
+static const char *kValueTypes[] = {"PRINTABLESTRING", "T61STRING", "UTF8",
"BMPSTRING", "UNIVERSALSTRING"};
// String types that can encode the Unicode Basic Multilingual Plane.
-static const char* kUnicodeBMPValueTypes[] = {"UTF8", "BMPSTRING",
+static const char *kUnicodeBMPValueTypes[] = {"UTF8", "BMPSTRING",
"UNIVERSALSTRING"};
// String types that can encode the Unicode Supplementary Planes.
-static const char* kUnicodeSupplementaryValueTypes[] = {"UTF8",
+static const char *kUnicodeSupplementaryValueTypes[] = {"UTF8",
"UNIVERSALSTRING"};
-static const char* kMangleTypes[] = {"unmangled", "case_swap",
+static const char *kMangleTypes[] = {"unmangled", "case_swap",
"extra_whitespace"};
} // namespace
class VerifyNameMatchSimpleTest
: public ::testing::TestWithParam<
- ::testing::tuple<const char*, const char*>> {
+ ::testing::tuple<const char *, const char *>> {
public:
std::string value_type() const { return ::testing::get<0>(GetParam()); }
std::string suffix() const { return ::testing::get<1>(GetParam()); }
@@ -136,13 +137,12 @@ TEST_P(VerifyNameMatchSimpleTest, ExtraRdnDoesNotMatch) {
// Runs VerifyNameMatchSimpleTest for all combinations of value_type and and
// suffix.
-INSTANTIATE_TEST_SUITE_P(InstantiationName,
- VerifyNameMatchSimpleTest,
+INSTANTIATE_TEST_SUITE_P(InstantiationName, VerifyNameMatchSimpleTest,
::testing::Combine(::testing::ValuesIn(kValueTypes),
::testing::ValuesIn(kMangleTypes)));
class VerifyNameMatchNormalizationTest
- : public ::testing::TestWithParam<::testing::tuple<bool, const char*>> {
+ : public ::testing::TestWithParam<::testing::tuple<bool, const char *>> {
public:
bool expected_result() const { return ::testing::get<0>(GetParam()); }
std::string value_type() const { return ::testing::get<1>(GetParam()); }
@@ -182,20 +182,19 @@ TEST_P(VerifyNameMatchNormalizationTest, CollapseWhitespace) {
// Runs VerifyNameMatchNormalizationTest for each (expected_result, value_type)
// tuple.
INSTANTIATE_TEST_SUITE_P(
- InstantiationName,
- VerifyNameMatchNormalizationTest,
+ InstantiationName, VerifyNameMatchNormalizationTest,
::testing::Values(
::testing::make_tuple(true,
- static_cast<const char*>("PRINTABLESTRING")),
- ::testing::make_tuple(false, static_cast<const char*>("T61STRING")),
- ::testing::make_tuple(true, static_cast<const char*>("UTF8")),
- ::testing::make_tuple(true, static_cast<const char*>("BMPSTRING")),
+ static_cast<const char *>("PRINTABLESTRING")),
+ ::testing::make_tuple(false, static_cast<const char *>("T61STRING")),
+ ::testing::make_tuple(true, static_cast<const char *>("UTF8")),
+ ::testing::make_tuple(true, static_cast<const char *>("BMPSTRING")),
::testing::make_tuple(true,
- static_cast<const char*>("UNIVERSALSTRING"))));
+ static_cast<const char *>("UNIVERSALSTRING"))));
class VerifyNameMatchDifferingTypesTest
: public ::testing::TestWithParam<
- ::testing::tuple<const char*, const char*>> {
+ ::testing::tuple<const char *, const char *>> {
public:
std::string value_type_1() const { return ::testing::get<0>(GetParam()); }
std::string value_type_2() const { return ::testing::get<1>(GetParam()); }
@@ -269,15 +268,13 @@ TEST_P(VerifyNameMatchDifferingTypesTest, NormalizableTypesInSubtrees) {
// Runs VerifyNameMatchDifferingTypesTest for all combinations of value types in
// value_type1 and value_type_2.
-INSTANTIATE_TEST_SUITE_P(InstantiationName,
- VerifyNameMatchDifferingTypesTest,
+INSTANTIATE_TEST_SUITE_P(InstantiationName, VerifyNameMatchDifferingTypesTest,
::testing::Combine(::testing::ValuesIn(kValueTypes),
::testing::ValuesIn(kValueTypes)));
class VerifyNameMatchUnicodeConversionTest
- : public ::testing::TestWithParam<
- ::testing::tuple<const char*,
- ::testing::tuple<const char*, const char*>>> {
+ : public ::testing::TestWithParam<::testing::tuple<
+ const char *, ::testing::tuple<const char *, const char *>>> {
public:
std::string prefix() const { return ::testing::get<0>(GetParam()); }
std::string value_type_1() const {
@@ -301,8 +298,7 @@ TEST_P(VerifyNameMatchUnicodeConversionTest, UnicodeConversionsAreEqual) {
// combinations of Basic Multilingual Plane-capable value types in value_type1
// and value_type_2.
INSTANTIATE_TEST_SUITE_P(
- BMPConversion,
- VerifyNameMatchUnicodeConversionTest,
+ BMPConversion, VerifyNameMatchUnicodeConversionTest,
::testing::Combine(
::testing::Values("unicode_bmp"),
::testing::Combine(::testing::ValuesIn(kUnicodeBMPValueTypes),
@@ -312,8 +308,7 @@ INSTANTIATE_TEST_SUITE_P(
// for all combinations of Unicode Supplementary Plane-capable value types in
// value_type1 and value_type_2.
INSTANTIATE_TEST_SUITE_P(
- SMPConversion,
- VerifyNameMatchUnicodeConversionTest,
+ SMPConversion, VerifyNameMatchUnicodeConversionTest,
::testing::Combine(
::testing::Values("unicode_supplementary"),
::testing::Combine(
@@ -610,4 +605,4 @@ TEST(NameNormalizationTest, NormalizeCustom) {
EXPECT_EQ(SequenceValueFromString(raw_der), der::Input(normalized_der));
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/verify_signed_data.cc b/src/pki/verify_signed_data.cc
index a7a2cf6..4502e2d 100644
--- a/src/pki/verify_signed_data.cc
+++ b/src/pki/verify_signed_data.cc
@@ -4,27 +4,27 @@
#include "verify_signed_data.h"
-#include "fillins/openssl_util.h"
-#include "cert_errors.h"
-#include "signature_algorithm.h"
-#include "signature_verify_cache.h"
-#include "input.h"
-#include "parse_values.h"
-#include "parser.h"
#include <openssl/bytestring.h>
#include <openssl/digest.h>
+#include <openssl/err.h>
#include <openssl/evp.h>
+#include <openssl/pki/signature_verify_cache.h>
#include <openssl/rsa.h>
#include <openssl/sha.h>
+#include "cert_errors.h"
+#include "input.h"
+#include "parse_values.h"
+#include "parser.h"
+#include "signature_algorithm.h"
+
namespace bssl {
namespace {
-bool SHA256UpdateWithLengthPrefixedData(SHA256_CTX* s_ctx,
- const uint8_t* data,
+bool SHA256UpdateWithLengthPrefixedData(SHA256_CTX *s_ctx, const uint8_t *data,
uint64_t length) {
- return (SHA256_Update(s_ctx, reinterpret_cast<uint8_t*>(&length),
+ return (SHA256_Update(s_ctx, reinterpret_cast<uint8_t *>(&length),
sizeof(length)) &&
SHA256_Update(s_ctx, data, length));
}
@@ -34,9 +34,9 @@ bool SHA256UpdateWithLengthPrefixedData(SHA256_CTX* s_ctx,
constexpr uint32_t VerifyCacheKeyVersion = 1;
std::string SignatureVerifyCacheKey(std::string_view algorithm_name,
- const der::Input& signed_data,
- const der::Input& signature_value_bytes,
- EVP_PKEY* public_key) {
+ der::Input signed_data,
+ der::Input signature_value_bytes,
+ EVP_PKEY *public_key) {
SHA256_CTX s_ctx;
bssl::ScopedCBB public_key_cbb;
uint8_t digest[SHA256_DIGEST_LENGTH];
@@ -44,24 +44,32 @@ std::string SignatureVerifyCacheKey(std::string_view algorithm_name,
if (CBB_init(public_key_cbb.get(), 128) &&
EVP_marshal_public_key(public_key_cbb.get(), public_key) &&
SHA256_Init(&s_ctx) &&
- SHA256_Update(&s_ctx, reinterpret_cast<uint8_t*>(&version),
+ SHA256_Update(&s_ctx, reinterpret_cast<uint8_t *>(&version),
sizeof(version)) &&
SHA256UpdateWithLengthPrefixedData(
- &s_ctx, reinterpret_cast<const uint8_t*>(algorithm_name.data()),
+ &s_ctx, reinterpret_cast<const uint8_t *>(algorithm_name.data()),
algorithm_name.length()) &&
SHA256UpdateWithLengthPrefixedData(&s_ctx, CBB_data(public_key_cbb.get()),
CBB_len(public_key_cbb.get())) &&
- SHA256UpdateWithLengthPrefixedData(&s_ctx,
- signature_value_bytes.UnsafeData(),
- signature_value_bytes.Length()) &&
- SHA256UpdateWithLengthPrefixedData(&s_ctx, signed_data.UnsafeData(),
- signed_data.Length()) &&
+ SHA256UpdateWithLengthPrefixedData(&s_ctx, signature_value_bytes.data(),
+ signature_value_bytes.size()) &&
+ SHA256UpdateWithLengthPrefixedData(&s_ctx, signed_data.data(),
+ signed_data.size()) &&
SHA256_Final(digest, &s_ctx)) {
- return std::string(reinterpret_cast<char*>(digest), sizeof(digest));
+ return std::string(reinterpret_cast<char *>(digest), sizeof(digest));
}
return std::string();
}
+// Place an instance of this class on the call stack to automatically clear
+// the OpenSSL error stack on function exit.
+// TODO(crbug.com/boringssl/38): Remove this when the library is more robust to
+// leaving things in the error queue.
+class OpenSSLErrStackTracer {
+ public:
+ ~OpenSSLErrStackTracer() { ERR_clear_error(); };
+};
+
} // namespace
// Parses an RSA public key or EC public key from SPKI to an EVP_PKEY. Returns
@@ -129,13 +137,13 @@ std::string SignatureVerifyCacheKey(std::string_view algorithm_name,
// { ID secp521r1 } | { ID sect571k1 } | { ID sect571r1 },
// ... -- Extensible
// }
-bool ParsePublicKey(const der::Input& public_key_spki,
- bssl::UniquePtr<EVP_PKEY>* public_key) {
+bool ParsePublicKey(der::Input public_key_spki,
+ bssl::UniquePtr<EVP_PKEY> *public_key) {
// Parse the SPKI to an EVP_PKEY.
- fillins::OpenSSLErrStackTracer err_tracer;
+ OpenSSLErrStackTracer err_tracer;
CBS cbs;
- CBS_init(&cbs, public_key_spki.UnsafeData(), public_key_spki.Length());
+ CBS_init(&cbs, public_key_spki.data(), public_key_spki.size());
public_key->reset(EVP_parse_public_key(&cbs));
if (!*public_key || CBS_len(&cbs) != 0) {
public_key->reset();
@@ -144,13 +152,11 @@ bool ParsePublicKey(const der::Input& public_key_spki,
return true;
}
-bool VerifySignedData(SignatureAlgorithm algorithm,
- const der::Input& signed_data,
- const der::BitString& signature_value,
- EVP_PKEY* public_key,
- SignatureVerifyCache* cache) {
+bool VerifySignedData(SignatureAlgorithm algorithm, der::Input signed_data,
+ const der::BitString &signature_value,
+ EVP_PKEY *public_key, SignatureVerifyCache *cache) {
int expected_pkey_id = 1;
- const EVP_MD* digest = nullptr;
+ const EVP_MD *digest = nullptr;
bool is_rsa_pss = false;
std::string_view cache_algorithm_name;
switch (algorithm) {
@@ -216,14 +222,16 @@ bool VerifySignedData(SignatureAlgorithm algorithm,
break;
}
- if (expected_pkey_id != EVP_PKEY_id(public_key))
+ if (expected_pkey_id != EVP_PKEY_id(public_key)) {
return false;
+ }
// For the supported algorithms the signature value must be a whole
// number of bytes.
- if (signature_value.unused_bits() != 0)
+ if (signature_value.unused_bits() != 0) {
return false;
- const der::Input& signature_value_bytes = signature_value.bytes();
+ }
+ der::Input signature_value_bytes = signature_value.bytes();
std::string cache_key;
if (cache) {
@@ -241,13 +249,14 @@ bool VerifySignedData(SignatureAlgorithm algorithm,
}
}
- fillins::OpenSSLErrStackTracer err_tracer;
+ OpenSSLErrStackTracer err_tracer;
bssl::ScopedEVP_MD_CTX ctx;
- EVP_PKEY_CTX* pctx = nullptr; // Owned by |ctx|.
+ EVP_PKEY_CTX *pctx = nullptr; // Owned by |ctx|.
- if (!EVP_DigestVerifyInit(ctx.get(), &pctx, digest, nullptr, public_key))
+ if (!EVP_DigestVerifyInit(ctx.get(), &pctx, digest, nullptr, public_key)) {
return false;
+ }
if (is_rsa_pss) {
// All supported RSASSA-PSS algorithms match signing and MGF-1 digest. They
@@ -259,14 +268,9 @@ bool VerifySignedData(SignatureAlgorithm algorithm,
}
}
- if (!EVP_DigestVerifyUpdate(ctx.get(), signed_data.UnsafeData(),
- signed_data.Length())) {
- return false;
- }
-
- bool ret =
- 1 == EVP_DigestVerifyFinal(ctx.get(), signature_value_bytes.UnsafeData(),
- signature_value_bytes.Length());
+ bool ret = 1 == EVP_DigestVerify(ctx.get(), signature_value_bytes.data(),
+ signature_value_bytes.size(),
+ signed_data.data(), signed_data.size());
if (!cache_key.empty()) {
cache->Store(cache_key, ret ? SignatureVerifyCache::Value::kValid
: SignatureVerifyCache::Value::kInvalid);
@@ -275,16 +279,15 @@ bool VerifySignedData(SignatureAlgorithm algorithm,
return ret;
}
-bool VerifySignedData(SignatureAlgorithm algorithm,
- const der::Input& signed_data,
- const der::BitString& signature_value,
- const der::Input& public_key_spki,
- SignatureVerifyCache* cache) {
+bool VerifySignedData(SignatureAlgorithm algorithm, der::Input signed_data,
+ const der::BitString &signature_value,
+ der::Input public_key_spki, SignatureVerifyCache *cache) {
bssl::UniquePtr<EVP_PKEY> public_key;
- if (!ParsePublicKey(public_key_spki, &public_key))
+ if (!ParsePublicKey(public_key_spki, &public_key)) {
return false;
+ }
return VerifySignedData(algorithm, signed_data, signature_value,
public_key.get(), cache);
}
-} // namespace net
+} // namespace bssl
diff --git a/src/pki/verify_signed_data.h b/src/pki/verify_signed_data.h
index 27b5af5..5ecfcea 100644
--- a/src/pki/verify_signed_data.h
+++ b/src/pki/verify_signed_data.h
@@ -5,12 +5,11 @@
#ifndef BSSL_PKI_VERIFY_SIGNED_DATA_H_
#define BSSL_PKI_VERIFY_SIGNED_DATA_H_
-#include "fillins/openssl_util.h"
-#include "fillins/openssl_util.h"
+#include <openssl/base.h>
+#include <openssl/evp.h>
+#include <openssl/pki/signature_verify_cache.h>
#include "signature_algorithm.h"
-#include "signature_verify_cache.h"
-#include <openssl/evp.h>
namespace bssl {
@@ -29,25 +28,20 @@ class Input;
//
// Returns true if verification was successful.
[[nodiscard]] OPENSSL_EXPORT bool VerifySignedData(
- SignatureAlgorithm algorithm,
- const der::Input& signed_data,
- const der::BitString& signature_value,
- EVP_PKEY* public_key,
- SignatureVerifyCache* cache);
+ SignatureAlgorithm algorithm, der::Input signed_data,
+ const der::BitString &signature_value, EVP_PKEY *public_key,
+ SignatureVerifyCache *cache);
// Same as above overload, only the public key is inputted as an SPKI and will
// be parsed internally.
[[nodiscard]] OPENSSL_EXPORT bool VerifySignedData(
- SignatureAlgorithm algorithm,
- const der::Input& signed_data,
- const der::BitString& signature_value,
- const der::Input& public_key_spki,
- SignatureVerifyCache* cache);
+ SignatureAlgorithm algorithm, der::Input signed_data,
+ const der::BitString &signature_value, der::Input public_key_spki,
+ SignatureVerifyCache *cache);
[[nodiscard]] OPENSSL_EXPORT bool ParsePublicKey(
- const der::Input& public_key_spki,
- bssl::UniquePtr<EVP_PKEY>* public_key);
+ der::Input public_key_spki, bssl::UniquePtr<EVP_PKEY> *public_key);
-} // namespace net
+} // namespace bssl
#endif // BSSL_PKI_VERIFY_SIGNED_DATA_H_
diff --git a/src/pki/verify_signed_data_unittest.cc b/src/pki/verify_signed_data_unittest.cc
index 6ab0878..1d94bb6 100644
--- a/src/pki/verify_signed_data_unittest.cc
+++ b/src/pki/verify_signed_data_unittest.cc
@@ -7,15 +7,15 @@
#include <memory>
#include <set>
+#include <gtest/gtest.h>
+#include <optional>
#include "cert_errors.h"
-#include "mock_signature_verify_cache.h"
-#include "signature_algorithm.h"
-#include "test_helpers.h"
#include "input.h"
+#include "mock_signature_verify_cache.h"
#include "parse_values.h"
#include "parser.h"
-#include <gtest/gtest.h>
-#include <optional>
+#include "signature_algorithm.h"
+#include "test_helpers.h"
namespace bssl {
@@ -34,9 +34,8 @@ enum VerifyResult {
//
// If expected_result was FAILURE then the test will only succeed if
// VerifySignedData() returns false.
-void RunTestCase(VerifyResult expected_result,
- const char* file_name,
- SignatureVerifyCache* cache) {
+void RunTestCase(VerifyResult expected_result, const char *file_name,
+ SignatureVerifyCache *cache) {
std::string path =
std::string("testdata/verify_signed_data_unittest/") + file_name;
@@ -73,7 +72,7 @@ void RunTestCase(VerifyResult expected_result,
EXPECT_EQ(expected_result_bool, result);
}
-void RunTestCase(VerifyResult expected_result, const char* file_name) {
+void RunTestCase(VerifyResult expected_result, const char *file_name) {
RunTestCase(expected_result, file_name, /*cache=*/nullptr);
}
@@ -239,4 +238,4 @@ TEST(VerifySignedDataTestWithCache, TestVerifyCache) {
} // namespace
-} // namespace net
+} // namespace bssl